summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS42
-rw-r--r--classes/base.bbclass90
-rw-r--r--classes/bootimg.bbclass14
-rw-r--r--classes/debian.bbclass8
-rw-r--r--classes/efl_base.bbclass2
-rw-r--r--classes/image.bbclass14
-rw-r--r--classes/java.bbclass60
-rw-r--r--classes/kernel-arch.bbclass2
-rw-r--r--classes/kernel.bbclass27
-rw-r--r--classes/native.bbclass6
-rw-r--r--classes/nylon-mirrors.bbclass8
-rw-r--r--classes/oplinux-mirrors.bbclass16
-rw-r--r--classes/package.bbclass144
-rw-r--r--classes/package_deb.bbclass34
-rw-r--r--classes/package_ipk.bbclass29
-rw-r--r--classes/package_rpm.bbclass5
-rw-r--r--classes/package_tar.bbclass10
-rw-r--r--classes/packaged-staging.bbclass389
-rw-r--r--classes/packaged-staging2.bbclass229
-rw-r--r--classes/patch.bbclass2
-rw-r--r--classes/qpf.bbclass32
-rw-r--r--classes/rm_work.bbclass20
-rw-r--r--classes/sanity.bbclass66
-rw-r--r--classes/sdl.bbclass2
-rw-r--r--classes/seppuku.bbclass2
-rw-r--r--classes/tinderclient.bbclass2
-rw-r--r--conf/bitbake.conf46
-rw-r--r--conf/checksums.ini128
-rw-r--r--conf/distro/amsdelta-oe.conf1
-rw-r--r--conf/distro/angstrom-2008.1-legacy.conf (renamed from conf/distro/angstrom-2007.1-legacy.conf)0
-rw-r--r--conf/distro/angstrom-2008.1.conf13
-rw-r--r--conf/distro/chinook-compat.conf199
-rw-r--r--conf/distro/colinuxoe.conf2
-rw-r--r--conf/distro/foonas.conf1
-rw-r--r--conf/distro/generic-uclibc.conf7
-rw-r--r--conf/distro/generic.conf44
-rw-r--r--conf/distro/include/angstrom-2007-for-openmoko-versions.inc2131
-rw-r--r--conf/distro/include/angstrom-2007-for-openmoko.inc2
-rw-r--r--conf/distro/include/angstrom-2007-preferred-versions.inc2131
-rw-r--r--conf/distro/include/angstrom-2008-preferred-versions.inc8
-rw-r--r--conf/distro/include/angstrom-glibc.inc1
-rw-r--r--conf/distro/include/angstrom-uclibc.inc5
-rw-r--r--conf/distro/include/angstrom.inc5
-rw-r--r--conf/distro/include/insane-srcrevs.inc3
-rw-r--r--conf/distro/include/preferred-gpe-versions-2.8.inc2
-rw-r--r--conf/distro/include/preferred-om-2008-versions.inc12
-rw-r--r--conf/distro/include/preferred-opie-versions-1.2.4-pre.inc2
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.0.inc6
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.1.inc6
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.2.inc5
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.3.inc5
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.4.inc292
-rw-r--r--conf/distro/include/preferred-xorg-versions.inc4
-rw-r--r--conf/distro/include/sane-srcdates.inc7
-rw-r--r--conf/distro/include/sane-srcrevs.inc34
-rw-r--r--conf/distro/include/slugos.inc5
-rw-r--r--conf/distro/jlime-shrek.conf1
-rw-r--r--conf/distro/maemo-1.0.conf38
-rw-r--r--conf/distro/mamona.conf1
-rw-r--r--conf/distro/mokoslug.conf1
-rw-r--r--conf/distro/nylon.conf2
-rw-r--r--conf/distro/openmoko.conf5
-rw-r--r--conf/distro/openwrt-sdk.conf4
-rw-r--r--conf/distro/sharprom-compatible.conf4
-rw-r--r--conf/distro/slugos.conf2
-rw-r--r--conf/local.conf.sample17
-rw-r--r--conf/machine/at32stk1000.conf6
-rw-r--r--conf/machine/at91sam9260ek.conf1
-rw-r--r--conf/machine/at91sam9261ek.conf1
-rw-r--r--conf/machine/at91sam9263ek.conf2
-rw-r--r--conf/machine/atngw100.conf9
-rw-r--r--conf/machine/bd-neon.conf1
-rw-r--r--conf/machine/collie.conf2
-rw-r--r--conf/machine/davinci-sffsdr.conf2
-rw-r--r--conf/machine/fic-gta01.conf1
-rw-r--r--conf/machine/fic-gta02.conf1
-rw-r--r--conf/machine/gesbc-9302.conf3
-rw-r--r--conf/machine/gumstix-custom-connex.conf75
-rw-r--r--conf/machine/gumstix-custom-verdex.conf78
-rw-r--r--conf/machine/h3600.conf2
-rw-r--r--conf/machine/h3900.conf2
-rw-r--r--conf/machine/h5000.conf9
-rw-r--r--conf/machine/htcwallaby.conf2
-rw-r--r--conf/machine/include/gumstix.inc60
-rw-r--r--conf/machine/include/ixp4xx.inc2
-rw-r--r--conf/machine/include/motorola-ezx-base.inc1
-rw-r--r--conf/machine/include/tune-strongarm.inc6
-rw-r--r--conf/machine/include/tune-strongarm1100.inc5
-rw-r--r--conf/machine/include/zaurus-2.6.inc4
-rw-r--r--conf/machine/jornada56x.conf2
-rw-r--r--conf/machine/jornada7xx.conf2
-rw-r--r--conf/machine/mpc8313e-rdb.conf10
-rw-r--r--conf/machine/mpc8323e-rdb.conf4
-rw-r--r--conf/machine/netvista.conf10
-rw-r--r--conf/machine/nokia770.conf2
-rw-r--r--conf/machine/omap1510inn.conf1
-rw-r--r--conf/machine/omap1610h2.conf1
-rw-r--r--conf/machine/omap1710h3.conf1
-rw-r--r--conf/machine/omap2420h4.conf1
-rw-r--r--conf/machine/omap2430sdp.conf1
-rw-r--r--conf/machine/omap5912osk.conf1
-rw-r--r--conf/machine/poodle.conf1
-rw-r--r--conf/machine/qemux86.conf1
-rw-r--r--conf/machine/shark.conf3
-rw-r--r--conf/machine/simpad.conf2
-rw-r--r--conf/machine/tosa.conf1
-rw-r--r--conf/machine/triton.conf1
-rw-r--r--conf/machine/xxs1500.conf1
-rw-r--r--conf/sanity.conf12
-rw-r--r--contrib/angstrom/rss.php87
-rw-r--r--contrib/angstrom/rss2.php63
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog2
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.4/ubuntu.patch22
-rw-r--r--contrib/image-convert/.mtn2git_empty (renamed from packages/acpid/acpid-1.0.3/.mtn2git_empty)0
-rw-r--r--contrib/image-convert/README5
-rwxr-xr-xcontrib/image-convert/cpio2tar9
-rwxr-xr-xcontrib/image-convert/tar2ext225
-rwxr-xr-xcontrib/image-convert/tar2ext2.mount25
-rwxr-xr-xcontrib/image-convert/tar2jffs8
-rwxr-xr-xcontrib/oe-stylize.py1
-rw-r--r--packages/acpid/acpid-1.0.3/gcc40.patch13
-rw-r--r--packages/acpid/acpid-1.0.4/gcc40.patch13
-rw-r--r--packages/acpid/acpid/.mtn2git_empty (renamed from packages/acpid/acpid-1.0.4/.mtn2git_empty)0
-rw-r--r--packages/acpid/acpid/gcc40.patch15
-rw-r--r--packages/alsa/alsa-state/akita/asound.state66
-rw-r--r--packages/alsa/alsa-state/spitz/asound.state82
-rw-r--r--packages/altboot/altboot.inc4
-rw-r--r--packages/altboot/altboot_1.0.8+1.0.9_pre1.bb4
-rw-r--r--packages/altboot/altboot_1.0.8.bb2
-rw-r--r--packages/altboot/altboot_1.1.1+wip-SVNR77.bb76
-rw-r--r--packages/altboot/altboot_1.1.1+wip-SVNR80.bb76
-rw-r--r--packages/altboot/altboot_svn.bb2
-rw-r--r--packages/amule/.mtn2git_empty (renamed from packages/base-files/base-files/ghi270/.mtn2git_empty)0
-rw-r--r--packages/amule/amule_2.1.3.bb25
-rw-r--r--packages/amule/files/.mtn2git_empty (renamed from packages/bluez/files/ghi270/.mtn2git_empty)0
-rw-r--r--packages/amule/files/parser.patch20
-rw-r--r--packages/angstrom/angstrom-feed-configs.bb7
-rw-r--r--packages/angstrom/angstrom-task-sectest.bb4
-rw-r--r--packages/anki/.mtn2git_empty (renamed from packages/bluez/files/r1000/.mtn2git_empty)0
-rw-r--r--packages/anki/anki.inc15
-rw-r--r--packages/anki/anki_0.4.3.bb9
-rw-r--r--packages/anki/files/.mtn2git_empty (renamed from packages/busybox/busybox-1.00/.mtn2git_empty)0
-rw-r--r--packages/anki/files/no-need-for-pyqt-at-buildtime.patch28
-rw-r--r--packages/anki/libanki_0.4.3.bb5
-rw-r--r--packages/apache/apache_2.0.54.bb2
-rw-r--r--packages/apex/apex-nslu2-1.5.13/defconfig3
-rw-r--r--packages/apex/apex-nslu2-16mb-1.5.13/defconfig3
-rw-r--r--packages/apex/apex-nslu2-16mb_1.5.13.bb2
-rw-r--r--packages/apex/apex-nslu2_1.5.13.bb2
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-alaw_1.4.8.bb (renamed from packages/asterisk/asterisk-core-sounds-en-alaw_1.4.7.bb)0
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-g729_1.4.8.bb (renamed from packages/asterisk/asterisk-core-sounds-en-g729_1.4.7.bb)0
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-gsm_1.4.8.bb (renamed from packages/asterisk/asterisk-core-sounds-en-gsm_1.4.7.bb)0
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.8.bb (renamed from packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.7.bb)0
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.7.bb31
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-g729_1.4.7.bb31
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.7.bb31
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.7.bb31
-rw-r--r--packages/asterisk/asterisk_1.4.10.bb20
-rw-r--r--packages/asterisk/asterisk_1.4.11.bb20
-rw-r--r--packages/asterisk/asterisk_1.4.17.bb20
-rw-r--r--packages/at76c503a/at76c503a-modules_0.17.bb19
-rw-r--r--packages/atmelwlandriver/atmelwlandriver_3.4.1.0.bb2
-rw-r--r--packages/avahi/avahi-ui_0.6.21.bb2
-rw-r--r--packages/avahi/avahi_0.6.21.bb1
-rw-r--r--packages/avahi/files/avr32-ipv6-fix.patch42
-rw-r--r--packages/avetanabt/avetanabt_20060413.bb1
-rw-r--r--packages/avetanabt/avetanabt_cvs.bb1
-rw-r--r--packages/base-files/base-files_3.0.14.bb2
-rw-r--r--packages/beep/beep_1.2.2.bb2
-rw-r--r--packages/binutils/binutils-2.17/500-avr32-atmel.1.3.0.patch111130
-rw-r--r--packages/binutils/binutils-2.17/501-avr32-fix-pool-alignment.patch26
-rw-r--r--packages/binutils/binutils-2.17/503-avr32-fix-got-offset-init.patch12
-rw-r--r--packages/binutils/binutils_2.17.bb7
-rw-r--r--packages/blackbox/.mtn2git_empty (renamed from packages/busybox/busybox-1.00/nylon/.mtn2git_empty)0
-rw-r--r--packages/blackbox/blackbox_0.70.1.bb14
-rw-r--r--packages/blackbox/files/.mtn2git_empty (renamed from packages/busybox/busybox-1.00/openmn/.mtn2git_empty)0
-rw-r--r--packages/blackbox/files/remove-host-includes.patch19
-rw-r--r--packages/bluez/bluez-cups-backend_3.18.bb1
-rw-r--r--packages/bluez/bluez-cups-backend_3.19.bb1
-rw-r--r--packages/bluez/bluez-cups-backend_3.20.bb1
-rw-r--r--packages/bluez/bluez-cups-backend_3.22.bb1
-rw-r--r--packages/bluez/bluez-cups-backend_3.23.bb3
-rw-r--r--packages/bluez/bluez-cups-backend_3.24.bb1
-rw-r--r--packages/bluez/bluez-dtl1-workaround/.mtn2git_empty (renamed from packages/busybox/busybox-1.00/slugos/.mtn2git_empty)0
-rw-r--r--packages/bluez/bluez-dtl1-workaround/02dtl1_cs.sh (renamed from packages/bluez/files/02dtl1_cs.sh)0
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.19.bb1
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.20.bb1
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.22.bb1
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.23.bb3
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.24.bb1
-rw-r--r--packages/bluez/bluez-utils-3.23/.mtn2git_empty (renamed from packages/busybox/busybox-1.00/sparc/.mtn2git_empty)0
-rw-r--r--packages/bluez/bluez-utils-3.23/hciattach-ti-bts.patch (renamed from packages/bluez/bluez-utils/hciattach-ti-bts.patch)0
-rw-r--r--packages/bluez/bluez-utils-3.24/.mtn2git_empty (renamed from packages/busybox/busybox-1.00/wrt54/.mtn2git_empty)0
-rw-r--r--packages/bluez/bluez-utils-3.24/hciattach-ti-bts.patch477
-rw-r--r--packages/bluez/bluez-utils-3.x/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/.mtn2git_empty)0
-rw-r--r--packages/bluez/bluez-utils-3.x/hciattach-ti-bts.patch (renamed from packages/bluez/files/hciattach-ti-bts.patch)0
-rw-r--r--packages/bluez/bluez-utils-3.x/hcid.conf (renamed from packages/bluez/files/hcid.conf)0
-rw-r--r--packages/bluez/bluez-utils-alsa_3.18.bb1
-rw-r--r--packages/bluez/bluez-utils-alsa_3.19.bb1
-rw-r--r--packages/bluez/bluez-utils-alsa_3.20.bb1
-rw-r--r--packages/bluez/bluez-utils-alsa_3.22.bb1
-rw-r--r--packages/bluez/bluez-utils-alsa_3.23.bb2
-rw-r--r--packages/bluez/bluez-utils-alsa_3.24.bb1
-rw-r--r--packages/bluez/bluez-utils3.inc3
-rw-r--r--packages/bluez/bluez-utils_3.23.bb2
-rw-r--r--packages/bonnie/bonnie++.inc29
-rw-r--r--packages/bonnie/bonnie++_1.03a.bb30
-rw-r--r--packages/bonnie/bonnie++_1.03c.bb1
-rw-r--r--packages/boost-asio/boost-asio_0.3.7.bb2
-rw-r--r--packages/bootsplash/bootsplash-native_3.0.7.bb2
-rw-r--r--packages/bt950-cs/bt950-cs_0.1.bb2
-rw-r--r--packages/busybox/busybox-1.00/add-getkey-applet.patch157
-rw-r--r--packages/busybox/busybox-1.00/below.patch49
-rw-r--r--packages/busybox/busybox-1.00/celf-ash-builtins.patch431
-rw-r--r--packages/busybox/busybox-1.00/console.patch13
-rw-r--r--packages/busybox/busybox-1.00/defconfig476
-rw-r--r--packages/busybox/busybox-1.00/df.patch28
-rw-r--r--packages/busybox/busybox-1.00/dhcp-hostname.patch25
-rw-r--r--packages/busybox/busybox-1.00/dhcpretrytime.patch81
-rw-r--r--packages/busybox/busybox-1.00/fbset.patch24
-rw-r--r--packages/busybox/busybox-1.00/gzip-spurious-const.patch11
-rw-r--r--packages/busybox/busybox-1.00/hdparm_M.patch47
-rw-r--r--packages/busybox/busybox-1.00/ifupdown-spurious-environ.patch12
-rw-r--r--packages/busybox/busybox-1.00/iproute-flush-cache.patch23
-rw-r--r--packages/busybox/busybox-1.00/linux-types.patch10
-rw-r--r--packages/busybox/busybox-1.00/mount-all-type.patch84
-rw-r--r--packages/busybox/busybox-1.00/nylon/defconfig458
-rw-r--r--packages/busybox/busybox-1.00/openmn/defconfig475
-rw-r--r--packages/busybox/busybox-1.00/readlink.patch85
-rw-r--r--packages/busybox/busybox-1.00/rmmod.patch44
-rw-r--r--packages/busybox/busybox-1.00/slugos/defconfig461
-rw-r--r--packages/busybox/busybox-1.00/slugos/udhcpscript.patch133
-rw-r--r--packages/busybox/busybox-1.00/sparc/defconfig467
-rw-r--r--packages/busybox/busybox-1.00/start-stop-daemon-oknodo-support.patch73
-rw-r--r--packages/busybox/busybox-1.00/uclibc_posix.patch20
-rw-r--r--packages/busybox/busybox-1.00/udhcppidfile-breakage.patch57
-rw-r--r--packages/busybox/busybox-1.00/udhcppidfile.patch276
-rw-r--r--packages/busybox/busybox-1.00/unzip-endian-fixes.patch54
-rw-r--r--packages/busybox/busybox-1.00/unzip-enhancement-and-fixes.patch878
-rw-r--r--packages/busybox/busybox-1.00/wrt54/defconfig476
-rw-r--r--packages/busybox/busybox-1.00/xargs-double-size.patch13
-rw-r--r--packages/busybox/busybox-1.01/add-getkey-applet.patch157
-rw-r--r--packages/busybox/busybox-1.01/angstrom/defconfig475
-rw-r--r--packages/busybox/busybox-1.01/below.patch49
-rw-r--r--packages/busybox/busybox-1.01/defconfig476
-rw-r--r--packages/busybox/busybox-1.01/dhcp-hostname.patch30
-rw-r--r--packages/busybox/busybox-1.01/dhcpretrytime.patch81
-rw-r--r--packages/busybox/busybox-1.01/familiar/defconfig470
-rw-r--r--packages/busybox/busybox-1.01/fbset.patch24
-rw-r--r--packages/busybox/busybox-1.01/hdparm_M.patch47
-rw-r--r--packages/busybox/busybox-1.01/ifupdown-spurious-environ.patch12
-rw-r--r--packages/busybox/busybox-1.01/iproute-flush-cache.patch23
-rw-r--r--packages/busybox/busybox-1.01/mount-all-type.patch84
-rw-r--r--packages/busybox/busybox-1.01/nylon/defconfig458
-rw-r--r--packages/busybox/busybox-1.01/openmn/defconfig475
-rw-r--r--packages/busybox/busybox-1.01/readlink.patch85
-rw-r--r--packages/busybox/busybox-1.01/rmmod.patch44
-rw-r--r--packages/busybox/busybox-1.01/slugos/defconfig444
-rw-r--r--packages/busybox/busybox-1.01/slugos/sysctl.conf32
-rw-r--r--packages/busybox/busybox-1.01/slugos/udhcpscript.patch162
-rw-r--r--packages/busybox/busybox-1.01/sparc/defconfig467
-rw-r--r--packages/busybox/busybox-1.01/thumb-bsdlabel.patch11
-rw-r--r--packages/busybox/busybox-1.01/uclibc_posix.patch21
-rw-r--r--packages/busybox/busybox-1.01/udhcppidfile-breakage.patch57
-rw-r--r--packages/busybox/busybox-1.01/udhcppidfile.patch276
-rw-r--r--packages/busybox/busybox-1.01/udhcpscript.patch17
-rw-r--r--packages/busybox/busybox-1.01/wrt54/defconfig476
-rw-r--r--packages/busybox/busybox-1.01/xargs-double-size.patch13
-rw-r--r--packages/busybox/busybox-1.2.0/add-getkey-applet.patch167
-rw-r--r--packages/busybox/busybox-1.2.0/angstrom/defconfig647
-rw-r--r--packages/busybox/busybox-1.2.0/below.patch46
-rw-r--r--packages/busybox/busybox-1.2.0/defconfig647
-rw-r--r--packages/busybox/busybox-1.2.0/dhcp-hostname.patch30
-rw-r--r--packages/busybox/busybox-1.2.0/dhcpretrytime.patch85
-rw-r--r--packages/busybox/busybox-1.2.0/fbset.patch24
-rw-r--r--packages/busybox/busybox-1.2.0/hdparm_M.patch47
-rw-r--r--packages/busybox/busybox-1.2.0/ifupdown-spurious-environ.patch12
-rw-r--r--packages/busybox/busybox-1.2.0/iproute-flush-cache.patch23
-rw-r--r--packages/busybox/busybox-1.2.0/mnci/defconfig643
-rw-r--r--packages/busybox/busybox-1.2.0/mount-all-type.patch84
-rw-r--r--packages/busybox/busybox-1.2.0/nylon/defconfig568
-rw-r--r--packages/busybox/busybox-1.2.0/openslug/udhcpscript.patch133
-rw-r--r--packages/busybox/busybox-1.2.0/readlink.patch85
-rw-r--r--packages/busybox/busybox-1.2.0/rmmod.patch40
-rw-r--r--packages/busybox/busybox-1.2.0/udhcppidfile-breakage.patch57
-rw-r--r--packages/busybox/busybox-1.2.0/udhcppidfile.patch274
-rw-r--r--packages/busybox/busybox-1.2.0/udhcpscript.patch17
-rw-r--r--packages/busybox/busybox-1.2.0/xargs-double-size.patch13
-rw-r--r--packages/busybox/busybox-1.2.1/angstrom/defconfig4
-rw-r--r--packages/busybox/busybox-1.2.1/avr32/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/angstrom/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.2.1/avr32/defconfig643
-rw-r--r--packages/busybox/busybox-1.2.1/defconfig4
-rw-r--r--packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch53
-rw-r--r--packages/busybox/busybox-1.2.1/nylon/defconfig2
-rw-r--r--packages/busybox/busybox-1.2.1/slugos/defconfig4
-rw-r--r--packages/busybox/busybox-1.5.0/angstrom/defconfig647
-rwxr-xr-xpackages/busybox/busybox-1.5.0/busybox-mdev.sh69
-rw-r--r--packages/busybox/busybox-1.5.0/defconfig647
-rw-r--r--packages/busybox/busybox-1.5.0/df_rootfs.patch44
-rw-r--r--packages/busybox/busybox-1.5.0/dhcp-hostname.patch20
-rw-r--r--packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch11
-rw-r--r--packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch16
-rw-r--r--packages/busybox/busybox-1.5.0/mnci/defconfig643
-rw-r--r--packages/busybox/busybox-1.5.0/nylon/defconfig568
-rw-r--r--packages/busybox/busybox-1.5.0/slugos/defconfig686
-rw-r--r--packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch133
-rw-r--r--packages/busybox/busybox-1.5.0/udhcpscript.patch17
-rw-r--r--packages/busybox/busybox-1.5.0/xargs-double-size.patch13
-rw-r--r--packages/busybox/busybox-1.6.0/angstrom/defconfig647
-rwxr-xr-xpackages/busybox/busybox-1.6.0/busybox-mdev.sh69
-rw-r--r--packages/busybox/busybox-1.6.0/defconfig647
-rw-r--r--packages/busybox/busybox-1.6.0/df_rootfs.patch44
-rw-r--r--packages/busybox/busybox-1.6.0/dhcp-hostname.patch20
-rw-r--r--packages/busybox/busybox-1.6.0/dhcp-increase-retries.patch11
-rw-r--r--packages/busybox/busybox-1.6.0/ifupdown-spurious-environ.patch16
-rw-r--r--packages/busybox/busybox-1.6.0/udhcpscript.patch17
-rw-r--r--packages/busybox/busybox-1.6.0/xargs-double-size.patch13
-rw-r--r--packages/busybox/busybox-1.7.2/angstrom/defconfig753
-rw-r--r--packages/busybox/busybox-1.7.2/defconfig753
-rw-r--r--packages/busybox/busybox-1.9.1/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/familiar/.mtn2git_empty)0
-rw-r--r--packages/busybox/busybox-1.9.1/adduser-longops.patch55
-rw-r--r--packages/busybox/busybox-1.9.1/defconfig777
-rw-r--r--packages/busybox/busybox-1.9.1/sort-z-nul.patch50
-rw-r--r--packages/busybox/busybox-1.9.1/udhcpscript.patch (renamed from packages/busybox/busybox-1.00/udhcpscript.patch)0
-rw-r--r--packages/busybox/busybox-static-1.2.1/defconfig4
-rw-r--r--packages/busybox/busybox-static_1.2.1.bb2
-rw-r--r--packages/busybox/busybox_1.00.bb112
-rw-r--r--packages/busybox/busybox_1.01.bb111
-rw-r--r--packages/busybox/busybox_1.2.0.bb101
-rw-r--r--packages/busybox/busybox_1.2.1.bb3
-rw-r--r--packages/busybox/busybox_1.2.2.bb2
-rw-r--r--packages/busybox/busybox_1.3.1.bb2
-rw-r--r--packages/busybox/busybox_1.5.0.bb104
-rw-r--r--packages/busybox/busybox_1.6.0.bb104
-rw-r--r--packages/busybox/busybox_1.7.2.bb20
-rw-r--r--packages/busybox/busybox_1.9.1.bb113
-rw-r--r--packages/busybox/files/install-should-unlink-dest-if-it-exists.patch53
-rw-r--r--packages/busybox/files/run_parts.c (renamed from packages/busybox/busybox-1.7.2/run_parts.c)0
-rw-r--r--packages/busybox/files/syslog2
-rw-r--r--packages/busybox/slingbox-1.00/defconfig334
-rw-r--r--packages/busybox/slingbox-1.00/lazy_umount.patch42
-rw-r--r--packages/busybox/slingbox-1.00/slingbox.patch38
-rw-r--r--packages/busybox/slingbox-1.1.3/Makefile_args.patch11
-rw-r--r--packages/busybox/slingbox-1.1.3/defconfig594
-rw-r--r--packages/busybox/slingbox-1.1.3/lazy_umount.patch28
-rw-r--r--packages/busybox/slingbox-1.1.3/slingbox.patch38
-rw-r--r--packages/busybox/slingbox-1.1.3/slingbox_name.patch10
-rw-r--r--packages/busybox/slingbox-1.2.2/defconfig643
-rw-r--r--packages/busybox/slingbox-1.2.2/df_rootfs.patch34
-rw-r--r--packages/busybox/slingbox-1.2.2/halt.patch40
-rw-r--r--packages/busybox/slingbox-1.2.2/lazy_umount.patch27
-rw-r--r--packages/busybox/slingbox-1.2.2/slingbox.patch49
-rw-r--r--packages/busybox/slingbox-1.2.2/slingbox_name.patch10
-rw-r--r--packages/busybox/slingbox-1.2.2/wget-long-options.patch20
-rw-r--r--packages/busybox/slingbox_1.00.bb40
-rw-r--r--packages/busybox/slingbox_1.1.3.bb44
-rw-r--r--packages/busybox/slingbox_1.2.2.bb52
-rw-r--r--packages/busybox/slingbox_1.3.1.bb1
-rw-r--r--packages/bvi/bvi-1.3.1/no-strip.patch13
-rw-r--r--packages/bvi/bvi_1.3.1.bb4
-rw-r--r--packages/cacao/cacao-cldc.inc2
-rw-r--r--packages/cacao/cacao.inc8
-rw-r--r--packages/cacao/cacao_0.98+hg20071001.bb2
-rw-r--r--packages/cairo/cairo-1.4.14/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/nylon/.mtn2git_empty)0
-rw-r--r--packages/cairo/cairo-1.4.14/0001-Fix-for-a-memory-leak-in-pixman.patch32
-rw-r--r--packages/cairo/cairo_1.4.14.bb9
-rw-r--r--packages/chumby/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/openmn/.mtn2git_empty)0
-rw-r--r--packages/chumby/chumby-firmware_1.2.bb34
-rw-r--r--packages/classpath/classpath-minimal_0.96.1.bb2
-rw-r--r--packages/classpath/classpath.inc2
-rw-r--r--packages/classpath/classpath_0.96.1.bb5
-rw-r--r--packages/cmake/cmake-native_2.4.8.bb (renamed from packages/cmake/cmake-native_2.4.7.bb)0
-rw-r--r--packages/cmake/cmake_2.4.8.bb (renamed from packages/cmake/cmake_2.4.7.bb)0
-rw-r--r--packages/conserver/conserver.inc2
-rw-r--r--packages/cups/cups.inc8
-rw-r--r--packages/cups/cups_1.2.10.bb2
-rw-r--r--packages/cups/cups_1.2.12.bb2
-rw-r--r--packages/db/db3_3.2.9.bb2
-rw-r--r--packages/db/db_4.3.29.bb4
-rw-r--r--packages/dbench/dbench_3.04.bb2
-rw-r--r--packages/dbus-java/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/slugos/.mtn2git_empty)0
-rw-r--r--packages/dbus-java/dbus-java_2.3.bb97
-rw-r--r--packages/dbus/dbus-1.0.1/dbus-1.init96
-rw-r--r--packages/dbus/dbus-1.0.1/dbus-exploit-fix.patch21
-rw-r--r--packages/dbus/dbus-1.0.2/tmpdir.patch (renamed from packages/dbus/dbus-1.1.1/tmpdir.patch)0
-rw-r--r--packages/dbus/dbus-1.1.1/cross.patch10
-rw-r--r--packages/dbus/dbus-1.1.1/fix-install-daemon.patch13
-rw-r--r--packages/dbus/dbus-1.1.4/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/sparc/.mtn2git_empty)0
-rw-r--r--packages/dbus/dbus-1.1.4/cross.patch (renamed from packages/dbus/dbus-1.0.1/cross.patch)0
-rw-r--r--packages/dbus/dbus-1.1.4/dbus-1.init (renamed from packages/dbus/dbus-1.1.1/dbus-1.init)0
-rw-r--r--packages/dbus/dbus-1.1.4/fix-install-daemon.patch (renamed from packages/dbus/dbus-1.0.1/fix-install-daemon.patch)0
-rw-r--r--packages/dbus/dbus-1.1.4/tmpdir.patch (renamed from packages/dbus/dbus/tmpdir.patch)0
-rw-r--r--packages/dbus/dbus-glib-native/run-with-tmp-session-bus.patch32
-rw-r--r--packages/dbus/dbus-native_1.0.1.bb31
-rw-r--r--packages/dbus/dbus-native_1.0.2.bb28
-rw-r--r--packages/dbus/dbus-native_1.1.1.bb31
-rw-r--r--packages/dbus/dbus-native_1.1.4.bb25
-rw-r--r--packages/dbus/dbus-python_0.71.bb10
-rw-r--r--packages/dbus/dbus.inc67
-rw-r--r--packages/dbus/dbus/0.23.1.diff308
-rw-r--r--packages/dbus/dbus/config.diff17
-rw-r--r--packages/dbus/dbus/cross.patch15
-rw-r--r--packages/dbus/dbus/dbus-1.init86
-rw-r--r--packages/dbus/dbus/dbus-monitor.patch150
-rw-r--r--packages/dbus/dbus/dbus-quiesce-startup-errors.patch23
-rw-r--r--packages/dbus/dbus/dbussend.patch399
-rw-r--r--packages/dbus/dbus/gettext.patch164
-rw-r--r--packages/dbus/dbus/no-bindings.patch12
-rw-r--r--packages/dbus/dbus/no-examples.patch8
-rw-r--r--packages/dbus/dbus/no-introspect.patch19
-rw-r--r--packages/dbus/dbus/no-static.patch22
-rw-r--r--packages/dbus/dbus/spawn-priority.diff17
-rw-r--r--packages/dbus/dbus/tools.diff12
-rw-r--r--packages/dbus/dbus_1.0.1.bb5
-rw-r--r--packages/dbus/dbus_1.0.2.bb10
-rw-r--r--packages/dbus/dbus_1.1.1.bb63
-rw-r--r--packages/dbus/dbus_1.1.4.bb3
-rw-r--r--packages/dcop/dcopidl-native_3.5.4.bb4
-rw-r--r--packages/dcop/dcopidl2cpp-native_3.5.4.bb4
-rw-r--r--packages/devio/devio.inc1
-rw-r--r--packages/dhcp/dhcp_3.0.1.bb2
-rw-r--r--packages/djvulibre/djvulibre_3.5.19.bb27
-rw-r--r--packages/djvulibre/djvulibre_3.5.20.bb23
-rw-r--r--packages/e17/e-wm_0.16.999.041.bb50
-rw-r--r--packages/e17/e-wm_cvs.bb8
-rw-r--r--packages/e17/enna_cvs.bb3
-rw-r--r--packages/e17/expedite/hack-disable-opengl.patch87
-rw-r--r--packages/e17/expedite_cvs.bb5
-rw-r--r--packages/e17/rage_0.2.0.005.bb10
-rw-r--r--packages/e17/rage_cvs.bb13
-rw-r--r--packages/eb/eb_4.3.2.bb18
-rw-r--r--packages/eb/eb_4.3.bb14
-rw-r--r--packages/efl1/ecore-native_cvs.bb3
-rw-r--r--packages/efl1/ecore.inc8
-rw-r--r--packages/efl1/ecore/configure.patch23
-rw-r--r--packages/efl1/ecore/ecore_kernel_input_header.patch23
-rw-r--r--packages/efl1/ecore/fix-tslib-configure.patch19
-rw-r--r--packages/efl1/ecore/remove-bad-code.patch36
-rw-r--r--packages/efl1/ecore_cvs.bb4
-rw-r--r--packages/efl1/edb_cvs.bb7
-rw-r--r--packages/efl1/edje_cvs.bb7
-rw-r--r--packages/efl1/eet_cvs.bb9
-rw-r--r--packages/efl1/efreet_cvs.bb5
-rw-r--r--packages/efl1/embryo_cvs.bb10
-rw-r--r--packages/efl1/emotion_cvs.bb6
-rw-r--r--packages/efl1/epdf_cvs.bb8
-rw-r--r--packages/efl1/epsilon_cvs.bb4
-rw-r--r--packages/efl1/esmart_cvs.bb4
-rw-r--r--packages/efl1/etk_cvs.bb4
-rw-r--r--packages/efl1/evas.inc10
-rw-r--r--packages/efl1/evas_cvs.bb2
-rw-r--r--packages/efl1/ewl_cvs.bb10
-rw-r--r--packages/efl1/imlib2_1.4.0.002.bb26
-rw-r--r--packages/efl1/imlib2_1.4.1.000.bb26
-rw-r--r--packages/elfkickers/elfkickers_2.0a.bb2
-rw-r--r--packages/elvis/elvis-tiny_2.2.0.bb1
-rw-r--r--packages/elvis/elvis_2.2.0.bb2
-rw-r--r--packages/ez-ipupdate/ez-ipupdate_3.0.10.bb2
-rw-r--r--packages/faac/faac_1.24.bb2
-rw-r--r--packages/fakeroot/fakeroot-native-1.8.3/configure-libtool.patch18
-rw-r--r--packages/fakeroot/fakeroot-native_1.8.3.bb20
-rw-r--r--packages/fakeroot/fakeroot-native_1.9.1.bb21
-rw-r--r--packages/fakeroot/fakeroot_1.8.3.bb17
-rw-r--r--packages/fakeroot/fakeroot_1.9.1.bb18
-rw-r--r--packages/fakeroot/files/configure-libtool.patch (renamed from packages/fakeroot/fakeroot-1.8.3/configure-libtool.patch)0
-rw-r--r--packages/fastjar/fastjar-native_0.95.bb7
-rw-r--r--packages/fbset/fbset-init.bb19
-rw-r--r--packages/fbset/fbset-init/.mtn2git_empty (renamed from packages/busybox/busybox-1.01/wrt54/.mtn2git_empty)0
-rw-r--r--packages/fbset/fbset-init/default-fbset3
-rwxr-xr-xpackages/fbset/fbset-init/fbset.sh4
-rw-r--r--packages/fbset/fbset-modes.bb2
-rw-r--r--packages/fbset/fbset-modes/qemuarm/.mtn2git_empty (renamed from packages/busybox/busybox-1.2.0/.mtn2git_empty)0
-rw-r--r--packages/fbset/fbset-modes/qemuarm/fb.modes17
-rw-r--r--packages/fbvncserver/fbvncserver_0.9.4.bb55
-rw-r--r--packages/ffmpeg/ffmpeg-0.4.9-pre1/common.patch13
-rw-r--r--packages/ffmpeg/ffmpeg-0.4.9-pre1/gcc4.patch146
-rw-r--r--packages/ffmpeg/ffmpeg-0.4.9-pre1/soname.patch36
-rw-r--r--packages/ffmpeg/ffmpeg.inc35
-rw-r--r--packages/ffmpeg/ffmpeg/common.patch13
-rw-r--r--packages/ffmpeg/ffmpeg/configure.patch87
-rw-r--r--packages/ffmpeg/ffmpeg/soname.patch65
-rw-r--r--packages/ffmpeg/ffmpeg_0.4.9-pre1.bb123
-rw-r--r--packages/ffmpeg/ffmpeg_svn.bb186
-rw-r--r--packages/findutils/findutils_4.2.29.bb2
-rw-r--r--packages/fltk/efltk_2.0.7.bb67
-rw-r--r--packages/font-update-common/.mtn2git_empty (renamed from packages/busybox/busybox-1.2.0/angstrom/.mtn2git_empty)0
-rw-r--r--packages/font-update-common/files/.mtn2git_empty (renamed from packages/busybox/busybox-1.2.0/mnci/.mtn2git_empty)0
-rw-r--r--packages/font-update-common/files/update-fonts4
-rw-r--r--packages/font-update-common/font-update-common_0.1.bb13
-rw-r--r--packages/fontconfig/files/01fc-cache4
-rw-r--r--packages/fontconfig/fontconfig.inc9
-rw-r--r--packages/foonas-init/foonas-init_0.10.bb1
-rw-r--r--packages/free42/free42-vga_1.4.36.bb44
-rw-r--r--packages/free42/free42-vga_1.4.41.bb44
-rw-r--r--packages/freesmartphone/gsm0710muxd_svn.bb26
-rwxr-xr-xpackages/ftpd-topfield/ftpd-topfield_0.7.4.bb1
-rw-r--r--packages/fuse/fuse-2.7.2/.mtn2git_empty (renamed from packages/busybox/busybox-1.2.0/nylon/.mtn2git_empty)0
-rw-r--r--packages/fuse/fuse-2.7.2/not-run-updaterc.d-on-host.patch15
-rw-r--r--packages/fuse/fuse-module-2.5.3/.mtn2git_empty (renamed from packages/busybox/busybox-1.2.0/openslug/.mtn2git_empty)0
-rw-r--r--packages/fuse/fuse-module-2.5.3/preserve_CC_with_2_4_kernel.patch11
-rw-r--r--packages/fuse/fuse-module_2.5.3.bb31
-rw-r--r--packages/fuse/fuse-module_2.7.2.bb29
-rw-r--r--packages/fuse/fuse_2.7.2.bb27
-rw-r--r--packages/gaim/pidgin.inc85
-rw-r--r--packages/gammu/gammu_1.17.0.bb2
-rw-r--r--packages/gcc/gcc-4.1.0/arm-nolibfloat.patch24
-rw-r--r--packages/gcc/gcc-4.1.0/arm-softfloat.patch16
-rw-r--r--packages/gcc/gcc-4.1.0/ldflags.patch22
-rw-r--r--packages/gcc/gcc-4.1.0/pr34130.patch16
-rw-r--r--packages/gcc/gcc-4.1.0/zecke-no-host-includes.patch31
-rw-r--r--packages/gcc/gcc-4.1.0/zecke-xgcc-cpp.patch12
-rw-r--r--packages/gcc/gcc-4.1.1/zecke-xgcc-cpp.patch4
-rw-r--r--packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch4
-rw-r--r--packages/gcc/gcc-4.2.1/zecke-no-host-includes.patch13
-rw-r--r--packages/gcc/gcc-4.2.1/zecke-xgcc-cpp.patch4
-rw-r--r--packages/gcc/gcc-4.2.2/arm-softfloat.patch2
-rw-r--r--packages/gcc/gcc-4.2.2/arm-thumb.patch2
-rw-r--r--packages/gcc/gcc-4.2.2/zecke-xgcc-cpp.patch4
-rw-r--r--packages/gcc/gcc-cross-kernel-3.3.4_3.3.4.bb2
-rw-r--r--packages/gcc/gcc-cross_4.1.2.bb2
-rw-r--r--packages/gcc/gcc-native_3.4.4.bb1
-rw-r--r--packages/gcc/gcc-package-cross.inc10
-rw-r--r--packages/gcc/gcc-package.inc148
-rw-r--r--packages/gcc/gcc_4.0.0.bb2
-rw-r--r--packages/gcc/gcc_4.0.2.bb2
-rw-r--r--packages/gcc/gcc_4.1.0.bb3
-rw-r--r--packages/gcc/gcc_4.1.1.bb2
-rw-r--r--packages/gcc/gcc_4.1.2.bb21
-rw-r--r--packages/gcc/gcc_4.2.1.bb46
-rw-r--r--packages/gcc/gcc_4.2.2.bb25
-rw-r--r--packages/gimp/babl_svn.bb2
-rw-r--r--packages/glib-2.0/glib-2.0-2.14.4/.mtn2git_empty (renamed from packages/busybox/busybox-1.5.0/.mtn2git_empty)0
-rw-r--r--packages/glib-2.0/glib-2.0-2.14.4/configure-libtool.patch29
-rw-r--r--packages/glib-2.0/glib-2.0-2.14.4/gcc-4.2-inline-fix.patch17
-rw-r--r--packages/glib-2.0/glib-2.0_2.14.4.bb6
-rw-r--r--packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch44
-rw-r--r--[-rwxr-xr-x]packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch0
-rw-r--r--packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch20
-rw-r--r--packages/glibc/glibc-2.4/zecke-sane-readelf.patch5
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch5
-rw-r--r--packages/glibc/glibc_2.5.bb83
-rw-r--r--packages/glibc/glibc_2.6.1.bb74
-rw-r--r--packages/gnome/gconf-dbus/gconf-dbus-update.patch31
-rw-r--r--packages/gnome/gconf-dbus/xml-backend-locks-compile-fix.patch16
-rw-r--r--packages/gnome/gconf-dbus/xml-backend-oldxml-Makefile.patch11
-rw-r--r--packages/gnome/gconf-dbus_cvs.bb37
-rw-r--r--packages/gnome/gconf-dbus_svn.bb33
-rw-r--r--packages/gnome/gnome-desktop.inc16
-rw-r--r--packages/gnome/gnome-desktop_2.10.2.bb18
-rw-r--r--packages/gnome/gnome-desktop_2.16.1.bb22
-rw-r--r--packages/gnome/gnome-desktop_2.18.3.bb21
-rw-r--r--packages/gnome/gnome-desktop_2.7.90.bb13
-rw-r--r--packages/gnome/gnome-doc-utils.inc16
-rw-r--r--packages/gnome/gnome-doc-utils_0.10.3.bb15
-rw-r--r--packages/gnome/gnome-doc-utils_0.12.0.bb15
-rw-r--r--packages/gnome/gnome-doc-utils_0.7.1.bb15
-rw-r--r--packages/gnome/kanjipad_svn.bb19
-rw-r--r--packages/gnu-config/gnu-config_20050701.bb1
-rw-r--r--packages/gnuplot/files/subdirs.patch13
-rw-r--r--packages/gnuplot/files/term.patch14
-rw-r--r--packages/gnuplot/gnuplot-4.0.0/.mtn2git_empty (renamed from packages/busybox/busybox-1.5.0/angstrom/.mtn2git_empty)0
-rw-r--r--packages/gnuplot/gnuplot-4.0.0/debian-separate-x11-package.patch (renamed from packages/gnuplot/files/debian-separate-x11-package.patch)0
-rw-r--r--packages/gnuplot/gnuplot-4.0.0/matrix.patch (renamed from packages/gnuplot/files/matrix.patch)0
-rw-r--r--packages/gnuplot/gnuplot-4.0.0/subdirs.patch16
-rw-r--r--packages/gnuplot/gnuplot-4.0.0/term.patch20
-rw-r--r--packages/gnuplot/gnuplot-4.2.0/subdirs.patch11
-rw-r--r--packages/gnuplot/gnuplot-4.2.0/term.patch20
-rw-r--r--packages/gnuplot/gnuplot_4.2.0.bb10
-rw-r--r--packages/gnuplot/gnuplot_4.2.2.bb10
-rw-r--r--packages/gnuplot/gnuplot_cvs.bb17
-rw-r--r--packages/gpe-conf/gpe-conf_svn.bb2
-rw-r--r--packages/gpe-filemanager/gpe-filemanager_0.31.bb13
-rw-r--r--packages/gpe-login/files/chvt-keylaunch.patch13
-rw-r--r--packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch2
-rw-r--r--packages/gpe-login/files/lock-on-supend.patch3
-rw-r--r--packages/gpe-login/files/size-autolock-properly.patch2
-rw-r--r--packages/gpe-login/gpe-login-0.86/.mtn2git_empty (renamed from packages/busybox/busybox-1.5.0/mnci/.mtn2git_empty)0
-rw-r--r--packages/gpe-login/gpe-login-0.86/chvt-keylaunch.patch11
-rw-r--r--packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch12
-rw-r--r--packages/gpe-login/gpe-login_0.91.bb26
-rw-r--r--packages/gpe-mini-browser/gpe-mini-browser2_svn.bb21
-rw-r--r--packages/gpephone/calendar2/.mtn2git_empty (renamed from packages/busybox/busybox-1.5.0/nylon/.mtn2git_empty)0
-rw-r--r--packages/gpephone/calendar2/disable-broken-tests.patch9
-rw-r--r--packages/gpephone/calendar2_svn.bb5
-rw-r--r--packages/gpephone/libgpephone_svn.bb4
-rw-r--r--packages/gpephone/libtapi_svn.bb17
-rw-r--r--packages/gpephone/libvoc_svn.bb17
-rw-r--r--packages/gpgme/gpgme.inc27
-rw-r--r--packages/gpgme/gpgme_1.0.0.bb23
-rw-r--r--packages/gpgme/gpgme_1.0.3.bb23
-rw-r--r--packages/gpgme/gpgme_1.1.4.bb23
-rw-r--r--packages/gpsd/gpsd.inc18
-rw-r--r--packages/gpsd/gpsd_2.28.bb3
-rw-r--r--packages/gpsd/gpsd_2.34.bb2
-rw-r--r--packages/gpsd/gpsd_2.36.bb2
-rw-r--r--packages/gpsdrive/gpsdrive_2.10pre3.bb2
-rw-r--r--packages/gsm/files/default7
-rw-r--r--packages/gsm/libgsmd-lips_svn.bb14
-rw-r--r--packages/gstreamer/gst-meta-base_0.10.bb2
-rw-r--r--packages/gstreamer/gst-plugin-pulse/.mtn2git_empty (renamed from packages/busybox/busybox-1.5.0/slugos/.mtn2git_empty)0
-rw-r--r--packages/gstreamer/gst-plugin-pulse/dont-overload-pulseaudio.patch13
-rw-r--r--packages/gstreamer/gst-plugin-pulse_0.9.4.bb2
-rw-r--r--packages/gstreamer/gst-plugin-pulse_0.9.7.bb29
-rw-r--r--packages/gstreamer/gst-plugins-base_0.10.17.bb12
-rw-r--r--packages/gstreamer/gstreamer_0.10.17.bb3
-rw-r--r--packages/gtk+/gtk+-2.12.3/.mtn2git_empty (renamed from packages/busybox/busybox-1.6.0/.mtn2git_empty)0
-rw-r--r--packages/gtk+/gtk+-2.12.3/cellrenderer-cairo.patch32
-rw-r--r--packages/gtk+/gtk+-2.12.3/combo-arrow-size.patch67
-rw-r--r--packages/gtk+/gtk+-2.12.3/disable-print.patch26
-rw-r--r--packages/gtk+/gtk+-2.12.3/entry-cairo.patch103
-rw-r--r--packages/gtk+/gtk+-2.12.3/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.12.3/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.12.3/menu-deactivate.patch51
-rw-r--r--packages/gtk+/gtk+-2.12.3/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.12.3/pangoxft2.10.6.diff2456
-rw-r--r--packages/gtk+/gtk+-2.12.3/range-no-redraw.patch127
-rw-r--r--packages/gtk+/gtk+-2.12.3/run-iconcache.patch19
-rw-r--r--packages/gtk+/gtk+-2.12.3/scrolled-placement.patch22
-rw-r--r--packages/gtk+/gtk+-2.12.3/toggle-font.diff100
-rw-r--r--packages/gtk+/gtk+-2.12.3/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+.inc2
-rw-r--r--packages/gtk+/gtk+_2.12.3.bb48
-rw-r--r--packages/gtk-engines/gtk-sato-engine_0.1.bb2
-rw-r--r--packages/gtk-engines/gtk-sato-engine_svn.bb2
-rw-r--r--packages/gtk-sharp/gtk-sharp_2.10.2.bb6
-rw-r--r--packages/gtk-webcore/osb-nrcore.inc5
-rw-r--r--packages/gtkhtml2/gtkhtml2_svn.bb12
-rw-r--r--packages/gtkmm/gtkmm.inc6
-rw-r--r--packages/gtkmm/gtkmm_2.10.11.bb (renamed from packages/gtkmm/gtkmm_2.10.10.bb)0
-rw-r--r--packages/hostap/hostap-modules.inc2
-rw-r--r--packages/htop/.mtn2git_empty (renamed from packages/busybox/busybox-1.6.0/angstrom/.mtn2git_empty)0
-rw-r--r--packages/htop/files/.mtn2git_empty (renamed from packages/busybox/busybox-1.7.2/angstrom/.mtn2git_empty)0
-rw-r--r--packages/htop/files/remove-proc-test.patch13
-rw-r--r--packages/htop/htop_0.7.bb12
-rw-r--r--packages/icewm/icewm_1.2.20.bb3
-rw-r--r--packages/icewm/icewm_1.2.30.bb3
-rw-r--r--packages/ifplugd/files/nobash.patch8
-rw-r--r--packages/ifplugd/ifplugd_0.20.bb13
-rw-r--r--packages/ifplugd/ifplugd_0.25.bb14
-rw-r--r--packages/images/initramfs-bootmenu-image.bb5
-rw-r--r--packages/images/initramfs-image.bb4
-rw-r--r--packages/images/initramfs-kexec-image.bb9
-rw-r--r--packages/images/initramfs-minimal-image.bb2
-rw-r--r--packages/images/openmoko-python-devel-image.bb3
-rw-r--r--packages/images/x11-gpe-java-image.bb28
-rw-r--r--packages/inetutils/inetutils_1.5.bb17
-rw-r--r--packages/initrdscripts/devimage/devimage.sh5
-rw-r--r--packages/initrdscripts/devimage_0.1.bb8
-rw-r--r--packages/initrdscripts/files/10-initfs.sh1
-rw-r--r--packages/initrdscripts/files/30-bootmenu.sh17
-rw-r--r--packages/initrdscripts/files/85-blockboot.sh6
-rw-r--r--packages/initrdscripts/files/87-kexecboot.sh19
-rw-r--r--packages/initrdscripts/files/90-check-modules.sh24
-rw-r--r--packages/initrdscripts/files/init.sh12
-rw-r--r--packages/initrdscripts/initramfs-kexec_1.0.bb25
-rw-r--r--packages/initrdscripts/initramfs-module-block_1.0.bb2
-rw-r--r--packages/initrdscripts/initramfs-module-bootmenu_1.0.bb2
-rw-r--r--packages/initrdscripts/initramfs-module-check-modules_1.0.bb12
-rw-r--r--packages/initrdscripts/initramfs-module-initfs_1.0.bb2
-rw-r--r--packages/initrdscripts/initramfs-module-kexecboot_1.0.bb12
-rw-r--r--packages/initrdscripts/initramfs-uniboot_1.0.bb3
-rw-r--r--packages/initscripts/initscripts-1.0/banner2
-rw-r--r--packages/initscripts/initscripts-openprotium_1.0.bb2
-rw-r--r--packages/initscripts/initscripts-slugos_1.0.bb2
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/inputpipe/inputpipe_svn.bb2
-rw-r--r--packages/ipaq-boot-params/files/h5000/params2
-rw-r--r--packages/ipaq-boot-params/files/params2
-rw-r--r--packages/ipaq-boot-params/ipaq-boot-params.bb3
-rw-r--r--packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb2
-rw-r--r--packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch9
-rw-r--r--packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch105
-rw-r--r--packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb2
-rw-r--r--packages/ipkg/files/enable_debversion.patch111
-rw-r--r--packages/ipkg/files/update_version_comparision.patch84
-rw-r--r--packages/ipkg/ipkg-native_0.99.163.bb4
-rw-r--r--packages/ipkg/ipkg.inc2
-rw-r--r--packages/ipkg/ipkg_0.99.163.bb2
-rw-r--r--packages/ixp4xx/ixp4xx-csr_2.0.bb1
-rw-r--r--packages/ixp4xx/ixp4xx-csr_2.1.1.bb1
-rw-r--r--packages/ixp4xx/ixp4xx-csr_2.1.bb1
-rw-r--r--packages/jamvm/files/debian-jni.patch19
-rw-r--r--packages/jamvm/jamvm.inc2
-rw-r--r--packages/jamvm/jamvm_1.5.0.bb9
-rw-r--r--packages/joe/joe_3.1.bb4
-rw-r--r--packages/juce/juce_1.29.bb2
-rw-r--r--packages/kanjipad/kanjipad_svn.bb12
-rw-r--r--packages/kdepimpi/files/gcc4.patch3
-rw-r--r--packages/kdepimpi/files/gcc42.patch6
-rw-r--r--packages/kdepimpi/files/qt-mt.patch6
-rw-r--r--packages/kdepimpi/kdepimpi-base.inc2
-rw-r--r--packages/kdepimpi/kdepimpi-qte.inc163
-rw-r--r--packages/kdepimpi/kdepimpi-x11.inc70
-rw-r--r--packages/kdepimpi/kdepimpi-x11/.mtn2git_empty (renamed from packages/busybox/slingbox-1.00/.mtn2git_empty)0
-rw-r--r--packages/kdepimpi/kdepimpi-x11/kabc.patch24
-rw-r--r--packages/kdepimpi/kdepimpi-x11/kammu.patch18
-rw-r--r--packages/kdepimpi/kdepimpi-x11/korganizer.patch24
-rw-r--r--packages/kdepimpi/kdepimpi-x11/libkcal.patch16
-rw-r--r--packages/kdepimpi/kdepimpi-x11/nomail.patch18
-rw-r--r--packages/kdepimpi/kdepimpi-x11_2.2.3.bb10
-rw-r--r--packages/kdepimpi/kphonepi_1.0.0.bb (renamed from packages/kphonepi/kphonepi_1.0.0.bb)0
-rw-r--r--packages/kdepimpi/ktimetrackerpi_0.9.7.bb (renamed from packages/ktimetrackerpi/ktimetrackerpi_0.9.7.bb)0
-rw-r--r--packages/kdepimpi/pwmpi.inc1
-rw-r--r--packages/kexec/files/.mtn2git_empty (renamed from packages/busybox/slingbox-1.1.3/.mtn2git_empty)0
-rw-r--r--packages/kexec/files/kexec-arm-atags.patch (renamed from packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch)0
-rw-r--r--packages/kexec/files/kexec-klibc.patch140
-rw-r--r--packages/kexec/files/kexec-static.patch12
-rw-r--r--packages/kexec/files/kexec-tools-arm.patch (renamed from packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch)0
-rw-r--r--packages/kexec/kexec-tools-static_1.101.bb23
-rw-r--r--packages/kexec/kexec-tools.inc13
-rw-r--r--packages/kexec/kexec-tools_1.101.bb15
-rw-r--r--packages/keylaunch/files/unbreak-keyevents.patch2
-rw-r--r--packages/keyring/keyring_0.6.8.bb2
-rw-r--r--packages/kismet/kismet-newcore_svn.bb30
-rw-r--r--packages/kismet/kismet.inc33
-rw-r--r--packages/kismet/kismet_2007-01-R1b.bb35
-rw-r--r--packages/kismet/kismet_2007-10-R1.bb35
-rw-r--r--packages/kismet/kismet_svn.bb37
-rw-r--r--packages/klibc/files/fstype-sane-and-vfat-jffs2.patch68
-rw-r--r--packages/klibc/files/fstype-sane-and-vfat.patch60
-rw-r--r--packages/klibc/files/install.patch42
-rw-r--r--packages/klibc/files/klibc-config-eabi.patch9
-rw-r--r--packages/klibc/files/klibc_kexecsyscall.patch11
-rw-r--r--packages/klibc/files/staging.patch144
-rw-r--r--packages/klibc/klibc-common.inc29
-rw-r--r--packages/klibc/klibc-utils-fstype_1.1.1.bb4
-rw-r--r--packages/klibc/klibc-utils-static_1.5.bb94
-rw-r--r--packages/klibc/klibc.inc203
-rw-r--r--packages/klibc/klibc_0.190.bb1
-rw-r--r--packages/klibc/klibc_1.1.1.bb3
-rw-r--r--packages/klibc/klibc_1.5.bb2
-rw-r--r--packages/kobodeluxe/.mtn2git_empty (renamed from packages/busybox/slingbox-1.2.2/.mtn2git_empty)0
-rw-r--r--packages/kobodeluxe/files/.mtn2git_empty (renamed from packages/compositeext/.mtn2git_empty)0
-rw-r--r--packages/kobodeluxe/files/debian-kobo.patch72
-rw-r--r--packages/kobodeluxe/files/default-config70
-rw-r--r--packages/kobodeluxe/files/fighter-48.xpm442
-rw-r--r--packages/kobodeluxe/files/kobodeluxe-dimension-autoswap.patch236
-rw-r--r--packages/kobodeluxe/files/kobodeluxe-menu-pointer.patch266
-rw-r--r--packages/kobodeluxe/files/kobodeluxe-putenv.patch69
-rw-r--r--packages/kobodeluxe/files/kobodeluxe-sysconf-support.patch84
-rw-r--r--packages/kobodeluxe/kobodeluxe_0.5.1.bb55
-rw-r--r--packages/kxml2/files/.mtn2git_empty (renamed from packages/damageext/.mtn2git_empty)0
-rw-r--r--packages/kxml2/files/makefile.patch421
-rw-r--r--packages/kxml2/kxml2_2.3.0.bb45
-rw-r--r--packages/lemon/lemon-native_3.3.5.bb9
-rw-r--r--packages/lemon/lemon-native_3.5.4.bb11
-rw-r--r--packages/lemon/lemon.inc1
-rw-r--r--packages/lemon/lemon_3.3.5.bb10
-rw-r--r--packages/lemon/lemon_3.5.4.bb11
-rw-r--r--packages/liba52/liba52_0.7.4.bb4
-rw-r--r--packages/libao/libao-alsa_0.8.6.bb2
-rw-r--r--packages/libao/libao-plugin-alsa_0.8.6.bb2
-rw-r--r--packages/libao/libao_0.8.8.bb39
-rw-r--r--packages/libc-client/.mtn2git_empty (renamed from packages/damageext/damageext-1.0/.mtn2git_empty)0
-rw-r--r--packages/libc-client/libc-client_2007.bb25
-rw-r--r--packages/libdbi/libdbi-drivers_0.7.1.bb2
-rw-r--r--packages/libeventdb/libeventdb.inc13
-rw-r--r--packages/libeventdb/libeventdb_0.17.bb19
-rw-r--r--packages/libeventdb/libeventdb_0.18.bb15
-rw-r--r--packages/libeventdb/libeventdb_0.19.bb15
-rw-r--r--packages/libeventdb/libeventdb_0.21.bb15
-rw-r--r--packages/libeventdb/libeventdb_0.30.bb18
-rw-r--r--packages/libeventdb/libeventdb_0.90.bb15
-rw-r--r--packages/libeventdb/libeventdb_svn.bb17
-rw-r--r--packages/libexosip2/.mtn2git_empty (renamed from packages/damageext/files/.mtn2git_empty)0
-rw-r--r--packages/libexosip2/files/.mtn2git_empty (renamed from packages/dbus/dbus-1.0.1/.mtn2git_empty)0
-rw-r--r--packages/libexosip2/files/simplify-flags.patch27
-rw-r--r--packages/libexosip2/libexosip2_2.2.3.bb19
-rw-r--r--packages/libffi/libffi_2.0+gcc3.4.1.bb2
-rw-r--r--packages/libgcrypt/libgcrypt_1.4.0.bb22
-rw-r--r--packages/libglade/files/.mtn2git_empty (renamed from packages/dbus/dbus-1.1.1/.mtn2git_empty)0
-rw-r--r--packages/libglade/files/glade-cruft.patch (renamed from packages/libglade/libglade-2.4.0/glade-cruft.patch)0
-rw-r--r--packages/libglade/files/gtk-2.0.m4 (renamed from packages/libglade/libglade-2.0.1/gtk-2.0.m4)0
-rw-r--r--packages/libglade/files/no-deprecation.patch (renamed from packages/libglade/libglade-2.5.1/no-deprecation.patch)0
-rw-r--r--packages/libglade/files/no-xml2.patch (renamed from packages/libglade/libglade-2.4.2/no-xml2.patch)0
-rw-r--r--packages/libglade/libglade-2.0.1/glade-cruft.patch97
-rw-r--r--packages/libglade/libglade-2.4.0/no-xml2.patch502
-rw-r--r--packages/libglade/libglade-2.4.2/glade-cruft.patch100
-rw-r--r--packages/libglade/libglade-2.5.1/glade-cruft.patch100
-rw-r--r--packages/libglade/libglade-2.5.1/no-xml2.patch499
-rw-r--r--packages/libglade/libglade-2.6.2/glade-cruft.patch100
-rw-r--r--packages/libglade/libglade-2.6.2/no-xml2.patch499
-rw-r--r--packages/libglade/libglade.inc25
-rw-r--r--packages/libglade/libglade_2.0.1.bb22
-rw-r--r--packages/libglade/libglade_2.4.0.bb27
-rw-r--r--packages/libglade/libglade_2.4.2.bb27
-rw-r--r--packages/libglade/libglade_2.5.1.bb27
-rw-r--r--packages/libglade/libglade_2.6.2.bb27
-rw-r--r--packages/libgsm/libgsm_1.0.10.bb18
-rw-r--r--packages/libjson/.mtn2git_empty (renamed from packages/dbus/dbus-glib-native/.mtn2git_empty)0
-rw-r--r--packages/libjson/libjson_0.6.bb15
-rw-r--r--packages/libmad/files/.mtn2git_empty (renamed from packages/dbus/dbus/.mtn2git_empty)0
-rw-r--r--packages/libmad/files/libmad-0.15.1b-avr32-optimization.patch2922
-rw-r--r--packages/libmad/libmad_0.15.1b.bb4
-rw-r--r--packages/libmatthew/.mtn2git_empty (renamed from packages/e17/expedite/.mtn2git_empty)0
-rw-r--r--packages/libmatthew/libmatthew_0.5.bb53
-rw-r--r--packages/libmimedir/libmimedir_0.3.1.bb7
-rw-r--r--packages/libmrss/files/better-parse-url-r0.patch7
-rw-r--r--packages/libnet/libnet_1.1.2.1.bb2
-rw-r--r--packages/libogg/libtheora_0.9+1.0alpha7.bb2
-rw-r--r--packages/libpcap/libpcap-0.9.8/.mtn2git_empty (renamed from packages/efl1/etk-native/.mtn2git_empty)0
-rw-r--r--packages/libpcap/libpcap-0.9.8/shared.patch (renamed from packages/libpcap/libpcap-0.9.6/shared.patch)0
-rw-r--r--packages/libpcap/libpcap.inc33
-rw-r--r--packages/libpcap/libpcap_0.9.3.bb33
-rw-r--r--packages/libpcap/libpcap_0.9.5.bb33
-rw-r--r--packages/libpcap/libpcap_0.9.6.bb36
-rw-r--r--packages/libpcap/libpcap_0.9.8.bb3
-rw-r--r--packages/libpng/libpng-native_1.2.19.bb14
-rw-r--r--packages/libpng/libpng_1.2.12.bb2
-rw-r--r--packages/libpng/libpng_1.2.19.bb50
-rw-r--r--packages/libpng/libpng_1.2.20.bb2
-rw-r--r--packages/libpng/libpng_1.2.8.bb2
-rw-r--r--packages/libqanava/libqanava_0.0.7.bb2
-rw-r--r--packages/librcf/librcf_0.4.bb2
-rw-r--r--packages/libsdl/files/explicit-extern-C.patch (renamed from packages/libsdl/libsdl-qpe-1.2.9/explicit-extern-C.patch)0
-rw-r--r--packages/libsdl/files/fixlibs-1.2.9.patch (renamed from packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch)0
-rw-r--r--packages/libsdl/files/kill-stdc++-1.2.9.patch (renamed from packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch)0
-rw-r--r--packages/libsdl/files/pagesize.patch15
-rw-r--r--packages/libsdl/files/pygame-1.2.9.patch (renamed from packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch)0
-rw-r--r--packages/libsdl/libsdl-directfb_1.2.9.bb68
-rw-r--r--packages/libsdl/libsdl-qpe_1.2.9.bb64
-rw-r--r--packages/libsdl/libsdl-x11_1.2.7.bb57
-rw-r--r--packages/libsdl/libsdl-x11_1.2.9.bb49
-rw-r--r--packages/libsdl/libsdl.inc50
-rw-r--r--packages/libshout/.mtn2git_empty (renamed from packages/fakeroot/fakeroot-1.8.3/.mtn2git_empty)0
-rw-r--r--packages/libshout/files/.mtn2git_empty (renamed from packages/fakeroot/fakeroot-native-1.8.3/.mtn2git_empty)0
-rw-r--r--packages/libshout/files/no-host-includes.ac13
-rw-r--r--packages/libshout/libshout.inc20
-rw-r--r--packages/libshout/libshout_2.2.2.bb1
-rw-r--r--packages/libtiff/tiff_3.7.2.bb4
-rw-r--r--packages/libtool/libtool_1.5.10.bb2
-rw-r--r--packages/libtool/libtool_1.5.22.bb2
-rw-r--r--packages/libtool/libtool_1.5.24.bb2
-rw-r--r--packages/libtool/libtool_1.5.6.bb2
-rw-r--r--packages/libtorrent/.mtn2git_empty (renamed from packages/fbvncserver/.mtn2git_empty)0
-rw-r--r--packages/libtorrent/files/.mtn2git_empty (renamed from packages/fbvncserver/files/.mtn2git_empty)0
-rw-r--r--packages/libtorrent/files/autoconf-cross-fix.patch14
-rw-r--r--packages/libtorrent/libtorrent_0.12.0.bb16
-rw-r--r--packages/libtorrent/rtorrent_0.8.0.bb11
-rw-r--r--packages/libvncserver/libvncserver_0.8.2.bb32
-rw-r--r--packages/libxine/libxine-fb_1.0.bb6
-rw-r--r--packages/libxine/libxine-x11_1.0.bb10
-rw-r--r--packages/libxine/libxine_1.1.0.bb6
-rw-r--r--packages/libxml/libxml++_2.14.0.bb2
-rw-r--r--packages/libxml/libxml2.inc29
-rw-r--r--packages/libxml/libxml2_2.6.27.bb3
-rw-r--r--packages/libxml/libxml2_2.6.29.bb34
-rw-r--r--packages/libxosd/libxosd_svn.bb2
-rw-r--r--packages/libzvbi/libzvbi_0.2.22.bb3
-rw-r--r--packages/libzvbi/libzvbi_0.2.25.bb5
-rw-r--r--packages/lightmediascanner/.mtn2git_empty (renamed from packages/ffmpeg/ffmpeg/.mtn2git_empty)0
-rw-r--r--packages/lightmediascanner/lightmediascanner_svn.bb19
-rw-r--r--packages/lighttpd/lighttpd/src-server.c.patch3
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/.mtn2git_empty (renamed from packages/fixesext/.mtn2git_empty)0
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch2739
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/arch-config.patch62
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpu.patch117
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpufreq.patch403
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/board-init.patch81
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/bugfix-i2c-include.patch12
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/bugfix-mmc-clock.patch14
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/bugfix-pxa-cpufreq.patch64
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/bugfix-serial-interrupt.patch25
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/bugfix-serial-register-status.patch69
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/compact-flash.patch287
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/compile-fix-pxa_cpufreq.patch13
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/cpufreq-better-freqs.patch53
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/cpufreq-fixup.patch26
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/cpufreq-ondemand-by-default.patch42
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/disable-uncompress-message.patch32
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/ethernet-config.patch26
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/flash.patch171
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-asoc.patch224
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/.mtn2git_empty (renamed from packages/gaim/.mtn2git_empty)0
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig1619
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig-nofb1619
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/.mtn2git_empty (renamed from packages/gaim/files/.mtn2git_empty)0
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig1791
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig-nofb1791
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-fb-logo.patch10455
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-mmc.patch33
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-usb-host.patch366
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/header.patch170
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/mach-types-fix.patch13
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/misalignment-handling.patch38
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/mmc-card-detect.patch80
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/modular-init-bluetooth.patch108
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/modular-init-smc91x.patch203
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/modular-init-usb-gadget.patch106
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/pcm-gcc-411-bugfix.patch60
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/proc-gpio.patch348
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/pxa-regs-additions.patch28
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/pxa-regs-fixup.patch12
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/pxa2xx_udc.patch65
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/pxafb-18bpp-mode.patch433
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/pxafb-definition.patch180
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/serial-divisor.patch31
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/serial-ether-addr.patch62
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/smc-ether-addr.patch62
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/smc911x-fixup.patch392
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/tsc2003-config.diff31
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/tsc2003.c699
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/uImage-in-own-partition.patch56
-rw-r--r--packages/linux/gumstix-kernel-2.6.21/ucb1400-ac97-audio.patch309
-rw-r--r--packages/linux/gumstix-kernel_2.6.21.bb54
-rw-r--r--packages/linux/gumstix-linux.inc74
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.18/defconfig1840
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.19/defconfig1950
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.20/defconfig2031
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.21/defconfig2088
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.22/defconfig1984
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.23/defconfig1940
-rw-r--r--packages/linux/linux-2.6.18/.mtn2git_empty (renamed from packages/gaim/pidgin/.mtn2git_empty)0
-rwxr-xr-xpackages/linux/linux-2.6.18/0001-AVR32-Fix-compile-error-with-gcc-4.1.patch71
-rw-r--r--packages/linux/linux-2.6.18/add-all-parameters-to-smc-driver.patch73
-rw-r--r--packages/linux/linux-2.6.18/add-default-atngw-defconfig.patch975
-rw-r--r--packages/linux/linux-2.6.18/add-flush_buffer-operation-to-uart_ops.patch71
-rw-r--r--packages/linux/linux-2.6.18/add-hmatrix-support.patch414
-rw-r--r--packages/linux/linux-2.6.18/add-ide-header.patch41
-rw-r--r--packages/linux/linux-2.6.18/add-intc_pending_irq-to-intc.patch10
-rw-r--r--packages/linux/linux-2.6.18/add-mach-specific-kconfig.patch30
-rw-r--r--packages/linux/linux-2.6.18/at32-dac-oss-driver-clk-fix.patch175
-rw-r--r--packages/linux/linux-2.6.18/at32-dac-oss-driver.patch819
-rw-r--r--packages/linux/linux-2.6.18/at32ap7000-dmac-driver.patch855
-rw-r--r--packages/linux/linux-2.6.18/at32ap7000-platform_device-definitions.patch445
-rw-r--r--packages/linux/linux-2.6.18/at32stk1000/.mtn2git_empty (renamed from packages/glibc/eglibc-svn/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.18/at32stk1000/defconfig990
-rw-r--r--packages/linux/linux-2.6.18/at73c213-alsa-driver.patch1485
-rw-r--r--packages/linux/linux-2.6.18/atmel-ac97c-alsa-driver.patch1383
-rw-r--r--packages/linux/linux-2.6.18/atmel-husb2-udc-driver.patch2488
-rw-r--r--packages/linux/linux-2.6.18/atmel-lcdc-framebuffer-driver.patch1192
-rw-r--r--packages/linux/linux-2.6.18/atmel-macb-ethernet-driver.patch1614
-rw-r--r--packages/linux/linux-2.6.18/atmel-mci-debugfs.patch278
-rw-r--r--packages/linux/linux-2.6.18/atmel-mci-init-nr_blocks-in-dma-request.patch47
-rw-r--r--packages/linux/linux-2.6.18/atmel-mmc-host-driver.patch986
-rw-r--r--packages/linux/linux-2.6.18/atmel-spi-master-driver.patch990
-rw-r--r--packages/linux/linux-2.6.18/atmel-twi-driver.patch521
-rw-r--r--packages/linux/linux-2.6.18/atmel-usart3-driver.patch1443
-rw-r--r--packages/linux/linux-2.6.18/atmel-version.patch17
-rw-r--r--packages/linux/linux-2.6.18/atmel_spi-handle-rx-overrun.patch200
-rw-r--r--packages/linux/linux-2.6.18/atmel_spi-send-zeroes-when-tx_buf-is-not-set.patch48
-rw-r--r--packages/linux/linux-2.6.18/atngw100/.mtn2git_empty (renamed from packages/gnuplot/gnuplot-4.2.0/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.18/atngw100/defconfig970
-rw-r--r--packages/linux/linux-2.6.18/atstk1000-add-platform-data-for-mmc.patch25
-rw-r--r--packages/linux/linux-2.6.18/atstk1000-board-fix-fbmem-setup.patch14
-rw-r--r--packages/linux/linux-2.6.18/atstk1000-instantiate-devices.patch103
-rw-r--r--packages/linux/linux-2.6.18/avr32-arch-neutral-gpio-api.patch598
-rw-r--r--packages/linux/linux-2.6.18/avr32-arch.patch19628
-rw-r--r--packages/linux/linux-2.6.18/avr32-checkstack.patch35
-rw-r--r--packages/linux/linux-2.6.18/avr32-dma-controller-framework.patch241
-rw-r--r--packages/linux/linux-2.6.18/avr32-dont-include-asm-delay-h.patch47
-rw-r--r--packages/linux/linux-2.6.18/avr32-drop-GFP_COMP-for-DMA-memory-allocations.patch27
-rw-r--r--packages/linux/linux-2.6.18/avr32-fix-oprofile-interrupts.patch109
-rw-r--r--packages/linux/linux-2.6.18/avr32-gpio-dev.patch548
-rw-r--r--packages/linux/linux-2.6.18/avr32-increment-pointer-when-parsing-for-fbmem_start.patch16
-rw-r--r--packages/linux/linux-2.6.18/avr32-little-endian-read-write-bwl.patch128
-rw-r--r--packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch94
-rw-r--r--packages/linux/linux-2.6.18/avr32-network-gateway-support.patch233
-rw-r--r--packages/linux/linux-2.6.18/avr32-oprofile.patch610
-rw-r--r--packages/linux/linux-2.6.18/avr32-sound.patch51
-rw-r--r--packages/linux/linux-2.6.18/avr32-time-add-shared-interrupts.patch30
-rw-r--r--packages/linux/linux-2.6.18/avr32-unistd-h-move-ifdef-kernel.patch39
-rw-r--r--packages/linux/linux-2.6.18/avr32_defconfig1036
-rw-r--r--packages/linux/linux-2.6.18/dmac-add-explicit-blockcount-to-dma_request_sg.patch66
-rw-r--r--packages/linux/linux-2.6.18/dmac-stopping-idle-channel-is-not-fatal.patch93
-rw-r--r--packages/linux/linux-2.6.18/dont-include-map-h-from-physmap-h.patch33
-rw-r--r--packages/linux/linux-2.6.18/fix-alpha-color-bitfield.patch21
-rw-r--r--packages/linux/linux-2.6.18/fix-gpio-prototypes.patch75
-rw-r--r--packages/linux/linux-2.6.18/fix-lcd-display-off-by-two-problem.patch17
-rw-r--r--packages/linux/linux-2.6.18/fix-usart3-rx-BUG.patch25
-rw-r--r--packages/linux/linux-2.6.18/gpio-define-pio-none.patch11
-rw-r--r--packages/linux/linux-2.6.18/gpio-dev-blocking-read.patch187
-rw-r--r--packages/linux/linux-2.6.18/gpio-dev-robustness.patch204
-rw-r--r--packages/linux/linux-2.6.18/husb2_udc-test-mode.patch267
-rw-r--r--packages/linux/linux-2.6.18/jffs2_can_mark_obsolete-should-return-0-for-dataflash.patch37
-rw-r--r--packages/linux/linux-2.6.18/kbuild-add-unifdef.patch1020
-rw-r--r--packages/linux/linux-2.6.18/kbuild-replace-use-of-strlcpy-with-a-dedicated-implmentation-in-unifdef.patch30
-rw-r--r--packages/linux/linux-2.6.18/kbuild-use-in-kernel-unifdef.patch56
-rw-r--r--packages/linux/linux-2.6.18/lcdc-do-not-clear-mem-if-fbmem_start-is-set.patch16
-rw-r--r--packages/linux/linux-2.6.18/lcdc-fix-possible-null-pointer-and-match-guard-time-to-uboot.patch38
-rw-r--r--packages/linux/linux-2.6.18/lcdc-wait-for-vsync.patch152
-rw-r--r--packages/linux/linux-2.6.18/ltv350qv-add-initial_power_state-param.patch25
-rw-r--r--packages/linux/linux-2.6.18/ltv350qv-lcd-driver.patch355
-rw-r--r--packages/linux/linux-2.6.18/mmc-add-bit-manipulating-macros.patch321
-rw-r--r--packages/linux/linux-2.6.18/mmc-add-detect-card-and-wp-support.patch159
-rw-r--r--packages/linux/linux-2.6.18/mmc-add-platform-data.patch185
-rw-r--r--packages/linux/linux-2.6.18/mmc-core-dma-fix.patch33
-rw-r--r--packages/linux/linux-2.6.18/mtd-fix-atmel-pri-for-cmdset-0001-and-cmdset-0002.patch99
-rw-r--r--packages/linux/linux-2.6.18/mtd-unlock-nor-flash-automatically-where-necessary.patch75
-rw-r--r--packages/linux/linux-2.6.18/ngw-fix-usart-initialization.patch32
-rw-r--r--packages/linux/linux-2.6.18/ngw100-change-spi-clock-on-dataflash.patch13
-rw-r--r--packages/linux/linux-2.6.18/pio-deglitch.patch40
-rw-r--r--packages/linux/linux-2.6.18/pio-interrupt-controller.patch108
-rw-r--r--packages/linux/linux-2.6.18/rename-ttyUS-to-ttyS-or-ttyAT.patch74
-rw-r--r--packages/linux/linux-2.6.18/renumber-usart-devices.patch228
-rw-r--r--packages/linux/linux-2.6.18/spi-fix-spi-busnum-to-master-buffer-and-bus_num-0.patch50
-rw-r--r--packages/linux/linux-2.6.18/spi-reduce-dlybs-and-dlybct.patch19
-rw-r--r--packages/linux/linux-2.6.18/spi-set-kset-of-master-class-dev-explicitly.patch34
-rw-r--r--packages/linux/linux-2.6.18/update-atstk1002_defconfig.patch563
-rw-r--r--packages/linux/linux-2.6.18/usart-make-rx-timeout-baudrate-independent.patch83
-rw-r--r--packages/linux/linux-2.6.18/usb-ethernet-align-all-descriptors-on-a-word-boundary.patch171
-rw-r--r--packages/linux/linux-2.6.18/usb-ethernet-define-cdc-capability-for-husb2.patch27
-rw-r--r--packages/linux/linux-2.6.18/usb-file-storage-align-all-descriptors-on-a-word-boundary.patch107
-rw-r--r--packages/linux/linux-2.6.18/usb-serial-align-all-descriptors-on-a-word-boundary.patch140
-rw-r--r--packages/linux/linux-2.6.18/usb-zero-align-all-descriptors-on-a-word-boundary.patch107
-rw-r--r--packages/linux/linux-2.6.22/bd-neon/defconfig451
-rw-r--r--packages/linux/linux-2.6.23/at32stk1000/.mtn2git_empty (renamed from packages/gpe-login/gpe-login-0.90/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.23/at32stk1000/defconfig1078
-rw-r--r--packages/linux/linux-2.6.23/atngw100/.mtn2git_empty (renamed from packages/gtk+/gtk+-2.2.4/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.23/atngw100/defconfig1130
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig209
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch10
-rw-r--r--packages/linux/linux-2.6.23/netvista/.mtn2git_empty (renamed from packages/gtk+/gtk+-2.4.13/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.23/netvista/defconfig1614
-rw-r--r--packages/linux/linux-2.6.24/.mtn2git_empty (renamed from packages/kexec/kexec-tools-1.101/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.24/gesbc-9302/.mtn2git_empty (renamed from packages/kphonepi/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.24/gesbc-9302/0001-gesbc-nand.patch306
-rw-r--r--packages/linux/linux-2.6.24/gesbc-9302/0002-gesbc-eth-platform.patch54
-rw-r--r--packages/linux/linux-2.6.24/gesbc-9302/0003-gesbc9302-defconfig.patch1184
-rw-r--r--packages/linux/linux-2.6.24/gesbc-9302/0005-ep93xx-reboot.patch1256
-rw-r--r--packages/linux/linux-2.6.24/gesbc-9302/defconfig1165
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/.mtn2git_empty (renamed from packages/ktimetrackerpi/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig1896
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch202
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-rtc.patch24
-rw-r--r--packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch1807
-rw-r--r--packages/linux/linux-2.6.24/powerpc-clockres.patch47
-rw-r--r--packages/linux/linux-davinci/davinci-nand.patch905
-rw-r--r--packages/linux/linux-davinci/davinci-sffsdr/defconfig85
-rw-r--r--packages/linux/linux-davinci_2.6.x+git-davinci.bb1
-rw-r--r--packages/linux/linux-ezx-2.6.24/.mtn2git_empty (renamed from packages/libglade/libglade-2.0.1/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-ezx-2.6.24/a1200/.mtn2git_empty (renamed from packages/libglade/libglade-2.4.0/.mtn2git_empty)0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.24/a1200/defconfig1208
-rw-r--r--packages/linux/linux-ezx-2.6.24/a780/.mtn2git_empty (renamed from packages/libglade/libglade-2.4.2/.mtn2git_empty)0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.24/a780/defconfig1502
-rw-r--r--packages/linux/linux-ezx-2.6.24/e680/.mtn2git_empty (renamed from packages/libglade/libglade-2.5.1/.mtn2git_empty)0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.24/e680/defconfig1584
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/.mtn2git_empty (renamed from packages/libglade/libglade-2.6.2/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/Makefile.OpenEZX77
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a1200-eoc.patch20
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a1200-flip.patch47
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a1200-kbd.patch98
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a1200-mci.patch124
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a1200-pcap.patch66
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a1200-ts.patch39
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-emu.patch38
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-flip.patch46
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-kbd.patch90
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-leds.patch187
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-mci.patch125
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-pcap.patch90
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-ts.patch39
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/a780-vibrator.patch102
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/asoc-fix-loopback.patch14
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/asoc-pxa-ssp.patch755
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/binutils-buildid-arm.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/binutils-buildid-arm.patch)0
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/defconfig-a12001205
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/defconfig-a7801502
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/defconfig-e21188
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/defconfig-e61200
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/defconfig-e6801211
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/dmesg-a780.log299
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e6-eoc.patch20
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e6-mci.patch124
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e6-pcap.patch66
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e6-ts.patch39
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e680-emu.patch38
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e680-kbd.patch93
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e680-leds.patch300
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e680-locksw.patch45
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e680-mci.patch126
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e680-pcap.patch90
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/e680-ts.patch39
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-asoc.patch1302
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-backlight.patch203
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-bp.patch351
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-core.patch1042
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-emu.patch269
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-enable-stuart.patch99
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-eoc.patch295
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch309
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-pcap.patch852
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-pm.patch108
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/ezx-serial-bug-workaround.patch45
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-fix-init-errorpath.patch20
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-fix-makefile.patch14
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-fix-tty-driver.patch125
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-fix.patch164
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-ifdef-ezx-features.patch99
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-linux-2.6.21-fix.patch297
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-remove-flipbuffers.patch269
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-remove-get_halted_bit.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux-remove-usbh_finished_resume.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux_cli.patch5396
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/mux_debug.patch551
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pcap-ts.patch363
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxa-kbd.patch547
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-fix-a1200.patch45
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-support.3.patch3114
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxa27x_overlay-r8.patch2439
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxav4l1-8.patch.eml1204
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxav4l2-8.patch.eml1330
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxav4l3-8.patch.eml282
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxav4l4-8.patch.eml781
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxav4l5-8.patch.eml882
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxav4l6-8.patch.eml100
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/pxav4l7-8.patch.eml113
-rw-r--r--packages/linux/linux-ezx-2.6.24/patches/series105
-rw-r--r--packages/linux/linux-ezx-2.6.24/rokre2/.mtn2git_empty (renamed from packages/libmutil/.mtn2git_empty)0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.24/rokre2/defconfig1189
-rw-r--r--packages/linux/linux-ezx-2.6.24/rokre6/.mtn2git_empty (renamed from packages/libopieobex/files/.mtn2git_empty)0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.24/rokre6/defconfig1203
-rw-r--r--packages/linux/linux-ezx-2.6.24/update_patches.sh16
-rw-r--r--packages/linux/linux-ezx_2.6.24.bb111
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig48
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig45
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig64
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig48
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig48
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig48
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig48
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig202
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig48
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig64
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/linux-2.6.git-9d20fdd58e74d4d26dc5216efaaa0f800c23dd3a.patch144
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig47
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig59
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig45
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig46
-rw-r--r--packages/linux/linux-handhelds-2.6.inc16
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb4
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.23.148
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.241941
-rw-r--r--packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.241942
-rw-r--r--packages/linux/linux-ixp4xx_2.6.24.bb45
-rw-r--r--packages/linux/linux-nokia800-2.6.21-osso71/.mtn2git_empty (renamed from packages/libpcap/libpcap-0.9.6/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-nokia800-2.6.21-osso71/nokia800/.mtn2git_empty (renamed from packages/libvncserver/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-nokia800-2.6.21-osso71/nokia800/defconfig1585
-rw-r--r--packages/linux/linux-nokia800_2.6.21-osso71.bb16
-rw-r--r--packages/linux/linux-openmoko-devel/defconfig-2.6.23.11806
-rw-r--r--packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc61814
-rw-r--r--packages/linux/linux-openmoko-devel/fix-EVIOCGRAB-semantics-2.6.22.5.patch91
-rw-r--r--packages/linux/linux-openmoko-devel/fix-gta01-flowcontrol2-2.6.23.patch193
-rw-r--r--packages/linux/linux-openmoko-devel/hack-gta02-cpu.patch21
-rw-r--r--packages/linux/linux-openmoko-devel/logo_linux_clut224.ppm31723
-rw-r--r--packages/linux/linux-openmoko-devel/printascii-2.6.23.patch21
-rw-r--r--packages/linux/linux-openmoko-devel/printascii.patch12
-rw-r--r--packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch4395
-rw-r--r--packages/linux/linux-openmoko-devel/squashfs.patch4386
-rw-r--r--packages/linux/linux-openmoko_2.6.24.bb61
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-akita1740
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-bootcdx861994
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-c7x01746
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-collie1436
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-htcuniversal1307
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-hx20001733
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-poodle1756
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemuarm1582
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemux861993
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-spitz1740
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-zylonite1740
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-qemux86109
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-spitz3
-rw-r--r--packages/linux/linux-rp-2.6.23/mtd-module.patch13
-rw-r--r--packages/linux/linux-rp-2.6.23/sharpsl-rc-r1.patch519
-rw-r--r--packages/linux/linux-rp-2.6.23/wm8750-treble.patch11
-rw-r--r--packages/linux/linux-rp-2.6.24/.mtn2git_empty (renamed from packages/libxml/files/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-rp-2.6.24/binutils-buildid-arm.patch16
-rw-r--r--packages/linux/linux-rp-2.6.24/connectplus-prevent-oops-HACK.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/connectplus-prevent-oops-HACK.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/connectplus-remove-ide-HACK.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/connectplus-remove-ide-HACK.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-akita1740
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-bootcdx861994
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-c7x01746
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-collie1370
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-htcuniversal1307
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-hx20001733
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-poodle1752
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-qemuarm1582
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-qemux862039
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-spitz1741
-rw-r--r--packages/linux/linux-rp-2.6.24/defconfig-zylonite1740
-rw-r--r--packages/linux/linux-rp-2.6.24/hostap-monitor-mode.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/hostap-monitor-mode.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/htcuni-acx.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni-acx.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/htcuni.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/mtd-module.patch13
-rw-r--r--packages/linux/linux-rp-2.6.24/poodle_ts.patch22
-rw-r--r--packages/linux/linux-rp-2.6.24/pxa-serial-hack.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa-serial-hack.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/pxa27x-resume.patch41
-rw-r--r--packages/linux/linux-rp-2.6.24/pxa_fb_overlay.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa_fb_overlay.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/pxafb.patch13
-rw-r--r--packages/linux/linux-rp-2.6.24/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch519
-rw-r--r--packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch497
-rw-r--r--packages/linux/linux-rp-2.6.24/squashfs3.3.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/squashfs3.3.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/versatile-armv6.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/versatile-armv6.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.24/wm8750-treble.patch11
-rw-r--r--packages/linux/linux-rp-2.6.24/zylonite-boot.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/zylonite-boot.patch)0
-rw-r--r--packages/linux/linux-rp.inc8
-rw-r--r--packages/linux/linux-rp_2.6.23+2.6.24-rc8.bb146
-rw-r--r--packages/linux/linux-rp_2.6.23.bb14
-rw-r--r--packages/linux/linux-rp_2.6.24.bb163
-rw-r--r--packages/linux/linux-rt-2.6.24/.mtn2git_empty (renamed from packages/linux/ixp4xx-kernel/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-rt-2.6.24/mpc8313e-rdb/.mtn2git_empty (renamed from packages/linux/ixp4xx-kernel/2.6.18/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-rt-2.6.24/mpc8313e-rdb/defconfig1734
-rw-r--r--packages/linux/linux-rt-2.6.24/powerpc-clockres.patch47
-rw-r--r--packages/linux/linux-rt_2.6.24.bb38
-rw-r--r--packages/linux/linux.inc18
-rw-r--r--packages/linux/linux/atngw100/.mtn2git_empty (renamed from packages/linux/ixp4xx-kernel/2.6.19/.mtn2git_empty)0
-rw-r--r--packages/linux/linux/atngw100/defconfig849
-rw-r--r--packages/linux/linux_2.6.18.bb108
-rw-r--r--packages/linux/linux_2.6.22.bb2
-rw-r--r--packages/linux/linux_2.6.23.bb12
-rw-r--r--packages/linux/linux_2.6.24.bb49
-rw-r--r--packages/lm_sensors/lmsensors-apps_2.10.1.bb10
-rw-r--r--packages/logic-analyzer/.mtn2git_empty (renamed from packages/linux/ixp4xx-kernel/2.6.20/.mtn2git_empty)0
-rw-r--r--packages/logic-analyzer/files/.mtn2git_empty (renamed from packages/linux/ixp4xx-kernel/2.6.21/.mtn2git_empty)0
-rw-r--r--packages/logic-analyzer/files/client-makefile.patch426
-rw-r--r--packages/logic-analyzer/files/cp-run-fix.patch26
-rw-r--r--packages/logic-analyzer/files/scrolling-capture-dialog.patch21
-rw-r--r--packages/logic-analyzer/logic-analyzer_0.8.bb44
-rw-r--r--packages/lua/lua.inc4
-rw-r--r--packages/madwifi/files/30-define-ioreadwrite32be-for-little-endian-too.patch13
-rw-r--r--packages/madwifi/madwifi-modules_0.9.3.bb2
-rw-r--r--packages/madwifi/madwifi-modules_cvs-bsd.bb2
-rw-r--r--packages/madwifi/madwifi-modules_cvs.bb2
-rw-r--r--packages/madwifi/madwifi-ng_r.inc2
-rw-r--r--packages/madwifi/madwifi-ng_r2702-20070903.bb2
-rw-r--r--packages/madwifi/madwifi-ng_r2826-20071105.bb1
-rw-r--r--packages/madwifi/madwifi-ng_r3314-20080131.bb17
-rw-r--r--packages/maemo4/hildon-1/buttonbox.patch11
-rw-r--r--packages/maemo4/hildon-1_svn.bb20
-rw-r--r--packages/maemo4/hildon-base-lib_0.11.1.bb13
-rw-r--r--packages/maemo4/hildon-lgpl_0.12.1.bb10
-rw-r--r--packages/maemo4/hildon-libs_0.15.1.bb26
-rw-r--r--packages/maemo4/hildon-thumbnail.inc19
-rw-r--r--packages/maemo4/hildon-thumbnail_0.11.bb25
-rw-r--r--packages/maemo4/hildon-thumbnail_0.14.bb10
-rw-r--r--packages/maemo4/libconic/dbus-api-update.patch19
-rw-r--r--packages/maemo4/libconic_0.13.bb10
-rw-r--r--packages/maemo4/libgpsbt_0.1.bb4
-rw-r--r--packages/maemo4/libgpsmgr_0.1.bb4
-rw-r--r--packages/maemo4/libhildon.inc13
-rw-r--r--packages/maemo4/libhildon/.mtn2git_empty (renamed from packages/linux/ixp4xx-kernel/2.6.22/.mtn2git_empty)0
-rw-r--r--packages/maemo4/libhildon/libhildon-buildfix.patch16
-rw-r--r--packages/maemo4/libhildon_1.99.0.bb11
-rw-r--r--packages/maemo4/libhildonfm.inc22
-rw-r--r--packages/maemo4/libhildonfm/hildonfm-ifdef-maemogtk.diff132
-rw-r--r--packages/maemo4/libhildonfm/libhildonfm-gtkmaemo-ifdef.patch133
-rw-r--r--packages/maemo4/libhildonfm_1.9.41.bb30
-rw-r--r--packages/maemo4/libhildonfm_1.9.46.bb9
-rw-r--r--packages/maemo4/libhildonhelp.inc17
-rw-r--r--packages/maemo4/libhildonhelp_1.9.1.bb23
-rw-r--r--packages/maemo4/libhildonhelp_1.9.6.bb6
-rw-r--r--packages/maemo4/libhildonmime.inc17
-rw-r--r--packages/maemo4/libhildonmime_1.10.0.bb9
-rw-r--r--packages/maemo4/libhildonmime_1.9.5.bb19
-rw-r--r--packages/maemo4/libosso-gsf_1.11.10.4.bb7
-rw-r--r--packages/maemo4/libosso.inc19
-rw-r--r--packages/maemo4/libosso/.mtn2git_empty (renamed from packages/linux/ixp4xx-kernel/2.6.23/.mtn2git_empty)0
-rw-r--r--packages/maemo4/libosso/libosso-buildfix.patch64
-rw-r--r--packages/maemo4/libosso_1.20.bb22
-rw-r--r--packages/maemo4/libosso_2.13.bb16
-rw-r--r--packages/maemo4/mce-dev.inc22
-rw-r--r--packages/maemo4/mce-dev_1.5.6.bb26
-rw-r--r--packages/maemo4/mce-dev_1.6.3.bb7
-rw-r--r--packages/maemo4/osso-gnome-vfs2/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6-2.6.21/ghi270/.mtn2git_empty)0
-rw-r--r--packages/maemo4/osso-gnome-vfs2/gnome-vfs-no-kerberos.patch51
-rw-r--r--packages/maemo4/osso-gnome-vfs2_2.16.3.bb48
-rw-r--r--packages/maemo4/osso-gwconnect.inc17
-rw-r--r--packages/maemo4/osso-gwconnect_1.0.12.bb8
-rw-r--r--packages/maemo4/osso-gwconnect_1.0.8.bb22
-rw-r--r--packages/maemo4/osso-ic-oss_1.0.4.bb6
-rw-r--r--packages/maemo4/osso-thumbnail_0.7.bb22
-rw-r--r--packages/maemo4/outo_0.1.1.bb14
-rw-r--r--packages/man-pages/man-pages_2.41.bb1
-rw-r--r--packages/matchbox-common/matchbox_0.9.1.bb1
-rw-r--r--packages/matchbox-themes-extra/matchbox-themes-extra_0.3.bb2
-rw-r--r--packages/meta/package-index.bb1
-rw-r--r--packages/meta/slugos-packages.bb15
-rw-r--r--packages/midpath/midpath-alsa_0.1.bb1
-rw-r--r--packages/midpath/midpath-cldc-native_0.1.bb2
-rw-r--r--packages/midpath/midpath-cldc-sdl_0.1.bb1
-rw-r--r--packages/midpath/midpath-cldc-x11_0.1.bb1
-rw-r--r--packages/midpath/midpath-cldc_0.1.bb1
-rw-r--r--packages/midpath/midpath-gtk_0.1.bb1
-rw-r--r--packages/midpath/midpath-pulseaudio_0.1.bb1
-rw-r--r--packages/midpath/midpath-qt3x11_0.1.bb1
-rw-r--r--packages/midpath/midpath-qte_0.1.bb1
-rw-r--r--packages/midpath/midpath-test_0.1.bb1
-rw-r--r--packages/midpath/midpath_0.1.bb1
-rw-r--r--packages/mime-support/mime-support_3.28.bb2
-rw-r--r--packages/misc-binary-only/prism-firmware.bb1
-rw-r--r--packages/moc/moc_2.4.0.bb12
-rw-r--r--packages/moc/moc_2.4.3.bb14
-rw-r--r--packages/modphp/modphp5.inc2
-rw-r--r--packages/modutils/modutils_2.4.27.bb2
-rw-r--r--packages/mono-xsp/mono-xsp_1.2.5.bb14
-rw-r--r--packages/mono/mono_1.2.5.1-files.inc244
-rw-r--r--packages/monotone/monotone-6_0.26.bb2
-rw-r--r--packages/monotone/monotone-6_0.27.bb2
-rw-r--r--packages/monotone/monotone-6_0.31.bb2
-rw-r--r--packages/monotone/monotone-6_0.33.bb2
-rw-r--r--packages/monotone/monotone-6_0.34.bb2
-rw-r--r--packages/monotone/monotone-6_0.37.bb2
-rw-r--r--packages/monotone/monotone.inc2
-rw-r--r--packages/motion/motion_3.2.6.bb12
-rw-r--r--packages/motion/motion_3.2.9.bb19
-rw-r--r--packages/mozilla/firefox.inc9
-rw-r--r--packages/mozilla/firefox_1.0.7.bb9
-rw-r--r--packages/mozilla/firefox_2.0.0.3.bb26
-rw-r--r--packages/mplayer/files/mplayer-1.0rc1-atmel.2.patch6444
-rw-r--r--packages/mplayer/mplayer_0.0+1.0rc1.bb8
-rw-r--r--packages/mtpaint/mtpaint_3.02.bb3
-rw-r--r--packages/musicbrainz/libmusicbrainz_2.1.4.bb13
-rw-r--r--packages/mysql/mysql_4.1.18.bb11
-rw-r--r--packages/navit/files/navit.desktop4
-rw-r--r--packages/navit/navit.inc11
-rw-r--r--packages/navit/navit_0.0.3.bb5
-rw-r--r--packages/navit/navit_0.0.4.bb5
-rw-r--r--packages/navit/navit_cvs.bb6
-rw-r--r--packages/nbd/nbd_2.8.7.bb4
-rw-r--r--packages/netbase/netbase/slugos/if-pre-up.d/test-nfsroot10
-rw-r--r--packages/netbase/netbase_4.21.bb2
-rw-r--r--packages/netsurf/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc8/.mtn2git_empty)0
-rw-r--r--packages/netsurf/files/.mtn2git_empty (renamed from packages/llvm/files/.mtn2git_empty)0
-rw-r--r--packages/netsurf/files/netsurf.desktop10
-rw-r--r--packages/netsurf/netsurf_svn.bb43
-rw-r--r--packages/nonworking/efl/edb-utils_1.0.5.007.bb2
-rw-r--r--packages/nonworking/efl/edje-utils_0.5.0.038.bb2
-rw-r--r--packages/nonworking/efl/embryo-utils_0.9.1.038.bb2
-rw-r--r--packages/nonworking/libmikey/libmikey0_0.3.2.bb1
-rw-r--r--packages/nonworking/libmnetutil/libmnetutil0_0.2.2.bb1
-rw-r--r--packages/nonworking/libmsip/libmsip0_0.2.2.bb1
-rw-r--r--packages/notification-daemon/notification-daemon_0.3.6.bb1
-rw-r--r--packages/notification-daemon/notification-daemon_0.3.7.bb1
-rw-r--r--packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb1
-rw-r--r--packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb1
-rw-r--r--packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb1
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb1
-rw-r--r--packages/obsolete/classpath/classpath-minimal_0.95.bb2
-rw-r--r--packages/obsolete/compositeext/.mtn2git_empty (renamed from packages/maemo4/hildon-1/.mtn2git_empty)0
-rw-r--r--packages/obsolete/compositeext/compositeext_2.0.bb (renamed from packages/compositeext/compositeext_2.0.bb)0
-rw-r--r--packages/obsolete/compositeext/compositeext_cvs.bb (renamed from packages/compositeext/compositeext_cvs.bb)0
-rw-r--r--packages/obsolete/damageext/.mtn2git_empty (renamed from packages/maemo4/libconic/.mtn2git_empty)0
-rw-r--r--packages/obsolete/damageext/damageext-1.0/.mtn2git_empty (renamed from packages/nonworking/redboot-utils/.mtn2git_empty)0
-rw-r--r--packages/obsolete/damageext/damageext-1.0/autofoo.patch (renamed from packages/damageext/damageext-1.0/autofoo.patch)0
-rw-r--r--packages/obsolete/damageext/damageext_1.0.bb (renamed from packages/damageext/damageext_1.0.bb)0
-rw-r--r--packages/obsolete/damageext/damageext_cvs.bb (renamed from packages/damageext/damageext_cvs.bb)0
-rw-r--r--packages/obsolete/damageext/files/.mtn2git_empty (renamed from packages/openmoko-panel-plugins/files/.mtn2git_empty)0
-rw-r--r--packages/obsolete/damageext/files/autofoo.patch (renamed from packages/damageext/files/autofoo.patch)0
-rw-r--r--packages/obsolete/fixesext/.mtn2git_empty (renamed from packages/opie-bluetoothapplet/files/.mtn2git_empty)0
-rw-r--r--packages/obsolete/fixesext/fixesext_2.0.1.bb (renamed from packages/fixesext/fixesext_2.0.1.bb)0
-rw-r--r--packages/obsolete/fixesext/fixesext_cvs.bb (renamed from packages/fixesext/fixesext_cvs.bb)0
-rw-r--r--packages/obsolete/gaim/.mtn2git_empty (renamed from packages/opie-irc/files/.mtn2git_empty)0
-rw-r--r--packages/obsolete/gaim/files/.mtn2git_empty (renamed from packages/panoramixext/.mtn2git_empty)0
-rw-r--r--packages/obsolete/gaim/files/01-optional-icons-in-dialogs.patch (renamed from packages/gaim/files/01-optional-icons-in-dialogs.patch)0
-rw-r--r--packages/obsolete/gaim/files/02-request-field-dialogs.patch (renamed from packages/gaim/files/02-request-field-dialogs.patch)0
-rw-r--r--packages/obsolete/gaim/files/03-blist-dialogs.patch (renamed from packages/gaim/files/03-blist-dialogs.patch)0
-rw-r--r--packages/obsolete/gaim/files/04-saved-status-dialogs.patch (renamed from packages/gaim/files/04-saved-status-dialogs.patch)0
-rw-r--r--packages/obsolete/gaim/files/05-statusbox-icon-size.patch (renamed from packages/gaim/files/05-statusbox-icon-size.patch)0
-rw-r--r--packages/obsolete/gaim/files/06-account-dialogs.patch (renamed from packages/gaim/files/06-account-dialogs.patch)0
-rw-r--r--packages/obsolete/gaim/files/07-roomlist-dialog.patch (renamed from packages/gaim/files/07-roomlist-dialog.patch)0
-rw-r--r--packages/obsolete/gaim/files/08-prefs-dialog.patch (renamed from packages/gaim/files/08-prefs-dialog.patch)0
-rw-r--r--packages/obsolete/gaim/files/09-filetransfer-dialog.patch (renamed from packages/gaim/files/09-filetransfer-dialog.patch)0
-rw-r--r--packages/obsolete/gaim/files/10-pda-default-settings.patch (renamed from packages/gaim/files/10-pda-default-settings.patch)0
-rw-r--r--packages/obsolete/gaim/files/define-pda-mode.patch (renamed from packages/gaim/files/define-pda-mode.patch)0
-rw-r--r--packages/obsolete/gaim/files/desktop-name-2.0.0.patch (renamed from packages/gaim/files/desktop-name-2.0.0.patch)0
-rw-r--r--packages/obsolete/gaim/files/desktop-name.patch (renamed from packages/gaim/files/desktop-name.patch)0
-rw-r--r--packages/obsolete/gaim/files/desktop-name_1.4.0.patch (renamed from packages/gaim/files/desktop-name_1.4.0.patch)0
-rw-r--r--packages/obsolete/gaim/files/desktop-name_1.5.0.patch (renamed from packages/gaim/files/desktop-name_1.5.0.patch)0
-rw-r--r--packages/obsolete/gaim/files/docklet-icon-size.patch (renamed from packages/gaim/files/docklet-icon-size.patch)0
-rw-r--r--packages/obsolete/gaim/files/gaim-OE-branding.patch (renamed from packages/gaim/files/gaim-OE-branding.patch)0
-rw-r--r--packages/obsolete/gaim/files/gevolution-eds-dbus.patch (renamed from packages/gaim/files/gevolution-eds-dbus.patch)0
-rw-r--r--packages/obsolete/gaim/files/gtk-deprecated-2.0.0.patch (renamed from packages/gaim/files/gtk-deprecated-2.0.0.patch)0
-rw-r--r--packages/obsolete/gaim/files/no-superimposed-version-on-logo.patch (renamed from packages/gaim/files/no-superimposed-version-on-logo.patch)0
-rw-r--r--packages/obsolete/gaim/files/series (renamed from packages/gaim/files/series)0
-rw-r--r--packages/obsolete/gaim/gaim.inc (renamed from packages/gaim/gaim.inc)0
-rw-r--r--packages/obsolete/gaim/gaim_1.0.3.bb (renamed from packages/gaim/gaim_1.0.3.bb)0
-rw-r--r--packages/obsolete/gaim/gaim_1.1.0.bb (renamed from packages/gaim/gaim_1.1.0.bb)0
-rw-r--r--packages/obsolete/gaim/gaim_1.1.1.bb (renamed from packages/gaim/gaim_1.1.1.bb)0
-rw-r--r--packages/obsolete/gaim/gaim_1.1.2.bb (renamed from packages/gaim/gaim_1.1.2.bb)0
-rw-r--r--packages/obsolete/gaim/gaim_1.4.0.bb (renamed from packages/gaim/gaim_1.4.0.bb)0
-rw-r--r--packages/obsolete/gaim/gaim_1.5.0.bb (renamed from packages/gaim/gaim_1.5.0.bb)0
-rw-r--r--packages/obsolete/gaim/gaim_2.0.0-cvs-mco1.bb (renamed from packages/gaim/gaim_2.0.0-cvs-mco1.bb)0
-rw-r--r--packages/obsolete/panoramixext/.mtn2git_empty (renamed from packages/python/python-dbus/.mtn2git_empty)0
-rw-r--r--packages/obsolete/panoramixext/panoramixext_1.1.bb (renamed from packages/panoramixext/panoramixext_1.1.bb)0
-rw-r--r--packages/obsolete/panoramixext/panoramixext_cvs.bb (renamed from packages/panoramixext/panoramixext_cvs.bb)0
-rw-r--r--packages/obsolete/resourceext/.mtn2git_empty (renamed from packages/python/python-formencode/.mtn2git_empty)0
-rw-r--r--packages/obsolete/resourceext/resourceext_1.0.bb (renamed from packages/resourceext/resourceext_1.0.bb)0
-rw-r--r--packages/obsolete/resourceext/resourceext_cvs.bb (renamed from packages/resourceext/resourceext_cvs.bb)0
-rw-r--r--packages/obsolete/tasks/task-bootstrap-unionroot.bb1
-rw-r--r--packages/obsolete/tasks/task-bootstrap.bb1
-rw-r--r--packages/obsolete/xxf86dgaext/.mtn2git_empty (renamed from packages/qemu/files/.mtn2git_empty)0
-rw-r--r--packages/obsolete/xxf86dgaext/xxf86dgaext_cvs.bb (renamed from packages/xxf86dgaext/xxf86dgaext_cvs.bb)0
-rw-r--r--packages/obsolete/xxf86vmext/.mtn2git_empty (renamed from packages/qemu/qemu-0.9.0+cvs20070701/.mtn2git_empty)0
-rw-r--r--packages/obsolete/xxf86vmext/xxf86vmext_cvs.bb (renamed from packages/xxf86vmext/xxf86vmext_cvs.bb)0
-rw-r--r--packages/openchrome/openchrome_svn.bb4
-rw-r--r--packages/openmoko-base/openmoko-libs_svn.bb8
-rw-r--r--packages/openmoko2/libjana_svn.bb4
-rw-r--r--packages/openmoko2/moko-gtk-engine_svn.bb2
-rw-r--r--packages/openmoko2/openmoko-sound-system2/session2
-rw-r--r--packages/openmoko2/openmoko-sound-system2_0.1.0.bb2
-rw-r--r--packages/openprotium-init/openprotium-init_0.10.bb1
-rw-r--r--packages/openssl/openssl-0.9.7g/avr32.patch10
-rw-r--r--packages/openssl/openssl_0.9.7g.bb5
-rw-r--r--packages/openttd/files/.mtn2git_empty (renamed from packages/qemu/qemu-0.9.0+cvs20071121/.mtn2git_empty)0
-rw-r--r--packages/openttd/files/openttd_0.6.0-buildfix.patch25
-rw-r--r--packages/openttd/openttd.inc46
-rw-r--r--packages/openttd/openttd_0.4.0.1.bb14
-rw-r--r--packages/openttd/openttd_0.6.0-beta4.bb8
-rw-r--r--packages/opie-i18n/opie-i18n.inc2
-rw-r--r--packages/opie-irc/files/utf8-topic.patch18
-rw-r--r--packages/opie-irc/files/utf8.patch23
-rw-r--r--packages/opie-irc/opie-irc_1.2.3.bb6
-rw-r--r--packages/opie-irc/opie-irc_cvs.bb6
-rw-r--r--packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb1
-rw-r--r--packages/opie-taskbar/opie-taskbar-images.inc7
-rw-r--r--packages/opie-ttf-support/files/02qtttffont-update6
-rw-r--r--packages/opie-ttf-support/opie-ttf-support_1.1.bb23
-rw-r--r--packages/opkg/.mtn2git_empty (renamed from packages/qte-fonts-common/.mtn2git_empty)0
-rw-r--r--packages/opkg/opkg-ipkg-compat.bb19
-rw-r--r--packages/opkg/opkg-native_svn.bb8
-rw-r--r--packages/opkg/opkg_svn.bb26
-rw-r--r--packages/orinoco/orinoco-modules.inc2
-rw-r--r--packages/php/php-native_4.4.4.bb3
-rw-r--r--packages/php/php-native_5.2.0.bb2
-rw-r--r--packages/php/php.inc12
-rw-r--r--packages/php/php_4.4.4.bb7
-rw-r--r--packages/php/php_5.1.4.bb19
-rw-r--r--packages/php/php_5.2.0.bb35
-rw-r--r--packages/pidgin/.mtn2git_empty (renamed from packages/qte-fonts-common/qte-fonts-common/.mtn2git_empty)0
-rw-r--r--packages/pidgin/pidgin.inc85
-rw-r--r--packages/pidgin/pidgin/.mtn2git_empty (renamed from packages/randrext/.mtn2git_empty)0
-rw-r--r--packages/pidgin/pidgin/gconf-no-errors.patch (renamed from packages/gaim/pidgin/gconf-no-errors.patch)0
-rw-r--r--packages/pidgin/pidgin/pidgin.desktop-set-icon.patch (renamed from packages/gaim/pidgin/pidgin.desktop-set-icon.patch)0
-rw-r--r--packages/pidgin/pidgin/purple-OE-branding.patch (renamed from packages/gaim/files/purple-OE-branding.patch)0
-rw-r--r--packages/pidgin/pidgin/sanitize-configure.ac.patch (renamed from packages/gaim/pidgin/sanitize-configure.ac.patch)0
-rw-r--r--packages/pidgin/pidgin_2.0.2.bb (renamed from packages/gaim/pidgin_2.0.2.bb)0
-rw-r--r--packages/pidgin/pidgin_2.1.1.bb (renamed from packages/gaim/pidgin_2.1.1.bb)0
-rw-r--r--packages/pidgin/pidgin_2.2.1.bb (renamed from packages/gaim/pidgin_2.2.1.bb)0
-rw-r--r--packages/pine/pine_4.64.bb2
-rw-r--r--packages/poppler/poppler_0.5.4.bb2
-rw-r--r--packages/poppler/poppler_0.6.4.bb (renamed from packages/poppler/poppler_0.6.2.bb)0
-rw-r--r--packages/poppler/poppler_0.6.bb6
-rw-r--r--packages/portaudio/portaudio_0.0.19.bb2
-rw-r--r--packages/postgresql/postgresql.inc71
-rw-r--r--packages/postgresql/postgresql_8.1.4.bb21
-rw-r--r--packages/postgresql/postgresql_8.1.8.bb21
-rw-r--r--packages/postgresql/postgresql_8.2.4.bb23
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.2.bb2
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb8
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.3.bb4
-rw-r--r--packages/psmisc/psmisc.inc2
-rw-r--r--packages/psmisc/psmisc_20.2.bb2
-rw-r--r--packages/psplash/files/logo-math.patch2
-rw-r--r--packages/psplash/psplash_svn.bb4
-rw-r--r--packages/pulseaudio/files/disable-using-glibc-tls.patch18
-rw-r--r--packages/pulseaudio/pulse.inc7
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.6.bb2
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.8.bb17
-rw-r--r--packages/pulseaudio/pulseaudio_0.9.9.bb16
-rw-r--r--packages/python/python-2.5.1/sitecustomize.py6
-rw-r--r--packages/python/python-dbus/allow-older-autotools.patch27
-rw-r--r--packages/python/python-dbus/python-path.patch21
-rw-r--r--packages/python/python-dbus_0.81.1.bb18
-rw-r--r--packages/python/python-dbus_0.82.4.bb20
-rw-r--r--packages/python/python-ecore_cvs.bb5
-rw-r--r--packages/python/python-edbus_cvs.bb5
-rw-r--r--packages/python/python-edje_cvs.bb3
-rw-r--r--packages/python/python-efl-examples.bb10
-rw-r--r--packages/python/python-efl.bb7
-rw-r--r--packages/python/python-efl.inc1
-rw-r--r--packages/python/python-emotion_cvs.bb3
-rw-r--r--packages/python/python-epsilon_cvs.bb3
-rw-r--r--packages/python/python-evas_cvs.bb3
-rw-r--r--packages/python/python-gst/python-path.patch35
-rw-r--r--packages/python/python-gst_0.10.10.bb26
-rw-r--r--packages/python/python-gst_0.10.8.bb26
-rw-r--r--packages/python/python-lightmediascanner_svn.bb12
-rw-r--r--packages/python/python-pyqt_4.3.3.bb1
-rw-r--r--packages/python/python-sqlalchemy_0.4.2p3.bb12
-rw-r--r--packages/python/python_2.5.1.bb2
-rw-r--r--packages/qclockchange/files/.mtn2git_empty (renamed from packages/recordext/.mtn2git_empty)0
-rw-r--r--packages/qclockchange/files/qclockchange.desktop6
-rw-r--r--packages/qclockchange/files/qclockchange.pngbin0 -> 5472 bytes
-rw-r--r--packages/qclockchange/qclockchange_0.1a.bb22
-rw-r--r--packages/qclockchange/qclockchange_0.1b.bb24
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/.mtn2git_empty (renamed from packages/renderext/.mtn2git_empty)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/02_snapshot_use_tmpdir.patch (renamed from packages/qemu/files/02_snapshot_use_tmpdir.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/03_machines_list_no_error.patch (renamed from packages/qemu/files/03_machines_list_no_error.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/04_do_not_print_rtc_freq_if_ok.patch (renamed from packages/qemu/files/04_do_not_print_rtc_freq_if_ok.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/05_non-fatal_if_linux_hd_missing.patch (renamed from packages/qemu/files/05_non-fatal_if_linux_hd_missing.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/06_exit_segfault.patch (renamed from packages/qemu/files/06_exit_segfault.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/10_signal_jobs.patch (renamed from packages/qemu/files/10_signal_jobs.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/11_signal_sigaction.patch (renamed from packages/qemu/files/11_signal_sigaction.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/12_signal_powerpc_support.patch (renamed from packages/qemu/files/12_signal_powerpc_support.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/22_net_tuntap_stall.patch (renamed from packages/qemu/files/22_net_tuntap_stall.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/30_syscall_ipc.patch (renamed from packages/qemu/files/30_syscall_ipc.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/31_syscalls.patch (renamed from packages/qemu/files/31_syscalls.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/32_syscall_sysctl.patch (renamed from packages/qemu/files/32_syscall_sysctl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/33_syscall_ppc_clone.patch (renamed from packages/qemu/files/33_syscall_ppc_clone.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/39_syscall_fadvise64.patch (renamed from packages/qemu/files/39_syscall_fadvise64.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/41_arm_fpa_sigfpe.patch (renamed from packages/qemu/files/41_arm_fpa_sigfpe.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/52_ne2000_return.patch (renamed from packages/qemu/files/52_ne2000_return.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/61_safe_64bit_int.patch (renamed from packages/qemu/files/61_safe_64bit_int.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/63_sparc_build.patch (renamed from packages/qemu/files/63_sparc_build.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/64_ppc_asm_constraints.patch (renamed from packages/qemu/files/64_ppc_asm_constraints.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/65_kfreebsd.patch (renamed from packages/qemu/files/65_kfreebsd.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/66_tls_ld.patch (renamed from packages/qemu/files/66_tls_ld.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/91-oh-sdl-cursor.patch (renamed from packages/qemu/files/91-oh-sdl-cursor.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/93-oh-pl110-rgb.patch (renamed from packages/qemu/files/93-oh-pl110-rgb.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/arm_nptl.patch (renamed from packages/qemu/files/arm_nptl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/compiler.patch (renamed from packages/qemu/files/compiler.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/configure.patch (renamed from packages/qemu/files/configure.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/fix_segfault.patch (renamed from packages/qemu/files/fix_segfault.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/makefile.patch (renamed from packages/qemu/files/makefile.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/no-strip.patch (renamed from packages/qemu/files/no-strip.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/pl110_rgb-r0.patch (renamed from packages/qemu/files/pl110_rgb-r0.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl-update.patch (renamed from packages/qemu/files/qemu-0.9.0-nptl-update.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl.patch (renamed from packages/qemu/files/qemu-0.9.0-nptl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-amd64-32b-mapping-0.9.0.patch (renamed from packages/qemu/files/qemu-amd64-32b-mapping-0.9.0.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-pci-irq-sharing.patch (renamed from packages/qemu/files/qemu-pci-irq-sharing.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-sdl-cursor.patch (renamed from packages/qemu/files/qemu-sdl-cursor.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-0.8.2.patch (renamed from packages/qemu/files/qemu-usb-wacom-0.8.2.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-buttons.patch (renamed from packages/qemu/files/qemu-usb-wacom-buttons.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-pressure.patch (renamed from packages/qemu/files/qemu-usb-wacom-pressure.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/workaround_bad_futex_headers.patch (renamed from packages/qemu/files/workaround_bad_futex_headers.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/arm_nptl-0.9.0.patch853
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch12
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch217
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch881
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch21
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch12
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch27
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch22
-rw-r--r--packages/qemu/qemu-0.9.1/.mtn2git_empty (renamed from packages/resourceext/.mtn2git_empty)0
-rw-r--r--packages/qemu/qemu-0.9.1/02_snapshot_use_tmpdir.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/02_snapshot_use_tmpdir.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/04_do_not_print_rtc_freq_if_ok.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/04_do_not_print_rtc_freq_if_ok.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/05_non-fatal_if_linux_hd_missing.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/05_non-fatal_if_linux_hd_missing.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/06_exit_segfault.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/06_exit_segfault.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/10_signal_jobs.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/10_signal_jobs.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/11_signal_sigaction.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/11_signal_sigaction.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/22_net_tuntap_stall.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/22_net_tuntap_stall.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/31_syscalls.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/31_syscalls.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/32_syscall_sysctl.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/32_syscall_sysctl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/33_syscall_ppc_clone.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/33_syscall_ppc_clone.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/39_syscall_fadvise64.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/39_syscall_fadvise64.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/41_arm_fpa_sigfpe.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/41_arm_fpa_sigfpe.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/52_ne2000_return.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/52_ne2000_return.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch27
-rw-r--r--packages/qemu/qemu-0.9.1/63_sparc_build.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/63_sparc_build.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/64_ppc_asm_constraints.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/64_ppc_asm_constraints.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/65_kfreebsd.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/65_kfreebsd.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/66_tls_ld.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/66_tls_ld.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/91-oh-sdl-cursor.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/91-oh-sdl-cursor.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch28
-rw-r--r--packages/qemu/qemu-0.9.1/disable-error-in-configure.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/disable-error-in-configure.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/fix_segfault.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/fix_segfault.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/no-strip.patch22
-rw-r--r--packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl-update.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl-update.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/qemu-amd64-32b-mapping-0.9.0.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/qemu-amd64-32b-mapping-0.9.0.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/series25
-rw-r--r--packages/qemu/qemu-0.9.1/workaround_bad_futex_headers.patch (renamed from packages/qemu/qemu-0.9.0+cvs20071121/workaround_bad_futex_headers.patch)0
-rw-r--r--packages/qemu/qemu-0.9.1/writev_fix.patch17
-rw-r--r--packages/qemu/qemu-native.inc8
-rw-r--r--packages/qemu/qemu-native_0.9.0+cvs.bb3
-rw-r--r--packages/qemu/qemu-native_0.9.1.bb2
-rw-r--r--packages/qemu/qemu-native_20070613.bb5
-rw-r--r--packages/qemu/qemu-native_20071121.bb8
-rw-r--r--packages/qemu/qemu-native_cvs.bb1
-rw-r--r--packages/qemu/qemu_0.9.0+cvs.bb22
-rw-r--r--packages/qemu/qemu_0.9.1.bb49
-rw-r--r--packages/qemu/qemu_20070613.bb10
-rw-r--r--packages/qemu/qemu_20071121.bb60
-rw-r--r--packages/qemu/qemu_cvs.bb67
-rw-r--r--packages/qpf-fonts/qpf-arabic_1.0.bb17
-rw-r--r--packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb29
-rw-r--r--packages/qpf-fonts/qpf-bitstream-vera_1.10.bb25
-rw-r--r--packages/qpf-fonts/qpf-font-common_1.0.bb8
-rw-r--r--packages/qpf-fonts/qpf-freemono_1.0.bb17
-rw-r--r--packages/qpf-fonts/qpf-freeserif_1.0.bb18
-rw-r--r--packages/qpf-fonts/qpf-helvetica_1.0.bb17
-rw-r--r--packages/qpf-fonts/qpf-hunkysans_0.3.0.bb18
-rw-r--r--packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb18
-rw-r--r--packages/qpf-fonts/qpf-qte_2.3.10.bb12
-rw-r--r--packages/qpf-fonts/qpf-qte_3.3.5.bb57
-rw-r--r--packages/qpf-fonts/qpf-terminus.bb10
-rw-r--r--packages/qpf-fonts/qpf-unifont_1.0.bb16
-rw-r--r--packages/qpf-fonts/qpf-unismall_1.0.0.bb23
-rw-r--r--packages/qpf-fonts/qpf-utopia_1.0.bb18
-rw-r--r--packages/qpf-fonts/qpf.inc32
-rw-r--r--packages/qpf-fonts/terminus.bb18
-rwxr-xr-xpackages/qte-fonts-common/qte-fonts-common/update-qtfontdir74
-rw-r--r--packages/qte-fonts-common/qte-fonts-common_3.3.5.bb228
-rw-r--r--packages/qte/qte-common_2.3.10.inc2
-rw-r--r--packages/randrext/randrext_1.0.bb15
-rw-r--r--packages/randrext/randrext_cvs.bb17
-rw-r--r--packages/rdesktop/rdesktop_1.3.1.bb4
-rw-r--r--packages/rdesktop/rdesktop_1.4.1.bb2
-rw-r--r--packages/rdesktop/rdesktop_1.5.0.bb2
-rw-r--r--packages/re2c/.mtn2git_empty (renamed from packages/s3c2410-utils/.mtn2git_empty)0
-rw-r--r--packages/re2c/re2c-native_0.13.1.bb5
-rw-r--r--packages/re2c/re2c.inc12
-rw-r--r--packages/re2c/re2c_0.13.1.bb3
-rw-r--r--packages/recordext/recordext_cvs.bb17
-rw-r--r--packages/renderext/renderext_0.8.bb15
-rw-r--r--packages/renderext/renderext_cvs.bb18
-rw-r--r--packages/rxtx/.mtn2git_empty (renamed from packages/tslib/tslib-1.0/bd-neon/.mtn2git_empty)0
-rw-r--r--packages/rxtx/files/.mtn2git_empty (renamed from packages/tslib/tslib-1.0/fic-gta01/.mtn2git_empty)0
-rw-r--r--packages/rxtx/files/rxtx-fixes-from-debian.patch235
-rw-r--r--packages/rxtx/rxtx_2.1-7r2.bb43
-rw-r--r--packages/s3c24xx-utils/.mtn2git_empty (renamed from packages/udev/udev-115/.mtn2git_empty)0
-rw-r--r--packages/s3c24xx-utils/s3c2410-boot-usb-native_svn.bb (renamed from packages/s3c2410-utils/s3c2410-boot-usb-native_svn.bb)0
-rw-r--r--packages/s3c24xx-utils/s3c24xx-gpio_svn.bb17
-rw-r--r--packages/s3c24xx-utils/sjf2410-linux-native_svn.bb (renamed from packages/s3c2410-utils/sjf2410-linux-native_svn.bb)0
-rw-r--r--packages/sablevm/sablevm_1.1.9.bb2
-rw-r--r--packages/sablevm/sablevm_1.11.3.bb2
-rw-r--r--packages/sablevm/sablevm_1.12.bb2
-rw-r--r--packages/schedstat-utils/schedstat-utils.bb2
-rw-r--r--packages/sgmlspl/sgmlspl-native_1.03ii.bb2
-rw-r--r--packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb2
-rw-r--r--packages/slugos-init/files/boot/kexec4
-rw-r--r--packages/slugos-init/files/boot/network24
-rw-r--r--packages/slugos-init/files/boot/nfs5
-rw-r--r--packages/slugos-init/files/leds62
-rw-r--r--packages/slugos-init/files/modulefunctions5
-rw-r--r--packages/slugos-init/slugos-init_0.10.bb1
-rw-r--r--packages/slugos-init/slugos-init_4.8.bb3
-rw-r--r--packages/speex/speex_1.0.4.bb1
-rw-r--r--packages/speex/speex_1.1.12+1.2beta1.bb5
-rw-r--r--packages/speex/speex_1.1.12.bb5
-rw-r--r--packages/speex/speex_1.1.7.bb5
-rw-r--r--packages/sphyrna/sphyrna_svn.bb2
-rw-r--r--packages/sqlite/sqlite3-3.2.2/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3-3.2.5/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3-3.2.7/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3-3.3.12/cross-compile.patch92
-rw-r--r--packages/sqlite/sqlite3-3.3.12/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3-3.3.13/cross-compile.patch92
-rw-r--r--packages/sqlite/sqlite3-3.3.13/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3-3.3.17/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3-3.4.1/libtool.patch25
-rw-r--r--packages/sqlite/sqlite3_3.5.6.bb (renamed from packages/sqlite/sqlite3_3.5.2.bb)0
-rw-r--r--packages/subversion/subversion_1.3.1.bb2
-rw-r--r--packages/subversion/subversion_1.4.0.bb2
-rw-r--r--packages/subversion/subversion_1.4.3.bb2
-rw-r--r--packages/subversion/subversion_1.4.5.bb2
-rw-r--r--packages/swt/files/swt-hildon.patch159
-rw-r--r--packages/swt/swt-gtk.inc3
-rw-r--r--packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb4
-rw-r--r--packages/swt/swt3.4-gtk-hildon_3.3+3.4M5.bb7
-rw-r--r--packages/swt/swt3.4-gtk_3.3+3.4M5.bb12
-rw-r--r--packages/sylpheed/claws-mail_3.3.0.bb (renamed from packages/sylpheed/claws-mail_3.0.2.bb)0
-rw-r--r--packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.17.1.bb (renamed from packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.15.2.bb)0
-rw-r--r--packages/sylpheed/claws-plugin-mailmbox_1.14.bb2
-rw-r--r--packages/sylpheed/claws-plugin-rssyl_0.15.bb20
-rw-r--r--packages/sylpheed/claws-plugin-rssyl_0.18.bb (renamed from packages/sylpheed/claws-plugin-rssyl_0.10.bb)0
-rw-r--r--packages/sysfsutils/sysfsutils_2.0.0.bb4
-rw-r--r--packages/taglib/files/.mtn2git_empty (renamed from packages/wxbase/.mtn2git_empty)0
-rw-r--r--packages/taglib/files/taglib_1.4-8.diff.gzbin0 -> 74973 bytes
-rw-r--r--packages/taglib/taglib_1.4.bb43
-rw-r--r--packages/taglib/taglibc_1.4.bb33
-rw-r--r--packages/tasks/task-base.bb7
-rw-r--r--packages/tasks/task-devimage.bb4
-rw-r--r--packages/tasks/task-java-gtk.bb13
-rw-r--r--packages/tasks/task-java.bb12
-rw-r--r--packages/tasks/task-openmoko-python-devel.bb5
-rw-r--r--packages/tasks/task-opie-all.bb3
-rw-r--r--packages/tasks/task-python-efl-examples.bb14
-rw-r--r--packages/tasks/task-python-efl.bb7
-rw-r--r--packages/tasks/task-python-everything.bb4
-rw-r--r--packages/tasks/task-qpe.bb2
-rw-r--r--packages/tasks/task-slugos.bb12
-rw-r--r--packages/tcltk/tcl_8.4.11.bb3
-rw-r--r--packages/tcp-wrappers/tcp-wrappers_7.6.bb2
-rw-r--r--packages/telepathy/telepathy-mission-control_4.21.bb6
-rw-r--r--packages/telepathy/telepathy-mission-control_4.22.bb6
-rw-r--r--packages/telepathy/telepathy-mission-control_4.45.bb6
-rw-r--r--packages/termcap/termcap_11.0.1.bb2
-rw-r--r--packages/tetex/tetex-texmf_3.0.bb2
-rw-r--r--packages/tmake/tmake_1.11.bb2
-rw-r--r--packages/tn5250/tn5250_0.16.5.bb2
-rw-r--r--packages/tslib/tslib-1.0/ts.conf25
-rw-r--r--packages/tslib/tslib/bd-neon/.mtn2git_empty (renamed from packages/x11vnc/.mtn2git_empty)0
-rw-r--r--packages/tslib/tslib/bd-neon/ts.conf (renamed from packages/tslib/tslib-1.0/bd-neon/ts.conf)0
-rw-r--r--packages/tslib/tslib/bd-neon/tslib.sh (renamed from packages/tslib/tslib-1.0/bd-neon/tslib.sh)0
-rw-r--r--packages/tslib/tslib/fic-gta01/.mtn2git_empty (renamed from packages/xorg-lib/diet-x11/.mtn2git_empty)0
-rw-r--r--packages/tslib/tslib/fic-gta01/ts.conf (renamed from packages/tslib/tslib-1.0/fic-gta01/ts.conf)0
-rw-r--r--packages/tslib/tslib/ts.conf2
-rw-r--r--packages/tslib/tslib/tslib-input_raw-grab_events.patch (renamed from packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch)0
-rw-r--r--packages/ttf-fonts/ttf-bitstream-vera_1.10.bb14
-rw-r--r--packages/ttf-fonts/ttf-dejavu_2.18.bb28
-rw-r--r--packages/ttf-fonts/ttf-dejavu_2.23.bb28
-rw-r--r--packages/ttf-fonts/ttf-gentium_1.02.bb10
-rw-r--r--packages/ttf-fonts/ttf-hunkyfonts_0.3.0.bb12
-rw-r--r--packages/ttf-fonts/ttf-liberation_0.2.bb11
-rw-r--r--packages/ttf-fonts/ttf-sazanami_20040629.bb5
-rw-r--r--packages/ttf-fonts/ttf.inc20
-rw-r--r--packages/twisted/twisted_2.5.0.bb2
-rw-r--r--packages/tzdata/tzdata_2007k.bb2
-rw-r--r--packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch49
-rw-r--r--packages/u-boot/u-boot-1.3.1/.mtn2git_empty (renamed from packages/xorg-lib/files/.mtn2git_empty)0
-rw-r--r--packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-autoboot.patch12
-rw-r--r--packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-nand.patch895
-rw-r--r--packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb4
-rw-r--r--packages/u-boot/u-boot-openmoko_svn.bb5
-rw-r--r--packages/u-boot/u-boot_1.1.2.bb12
-rw-r--r--packages/u-boot/u-boot_1.3.1.bb9
-rw-r--r--packages/uclibc/elf2flt_svn.bb6
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/avr32-arch-2.patch2135
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/avr32-linkrelax-option.patch40
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/avr32-string-ops.patch1139
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/fix-__libc_fcntl64-varargs-prototype.patch24
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/fix-broken-__libc_open-declaration.patch30
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/fix-getrusage-argument-type.patch19
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/ldd-avr32-support.patch25
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-_dl_memcpy.patch24
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-syscalls.patch107
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-2.patch526
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-needs-CONSTANT_STRING_GOT_FIXUP.patch23
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-startup-hack.patch40
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/ldso-define-MAP_FAILED.patch23
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/let-optimized-stringops-override-default-ones.patch28
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/libpthread-avr32.patch105
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/no-create_module-on-avr32.patch27
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/remove-bogus-version-hack-and-just-use-asm-generic-if-it-exists.patch48
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/sync-fcntl-h-with-linux-kernel.patch54
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20060621.patch4322
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20061019.patch4080
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/uClibc.config31
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-kernheaders.spec41
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-no-msoft-float.patch14
-rw-r--r--packages/uclibc/uclibc-0.9.28/avr32/uclibc-makefile.patch16
-rw-r--r--packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine68
-rw-r--r--packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-002-atmel.1.patch3546
-rw-r--r--packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-avr32-fix-sa_onstack.patch31
-rw-r--r--packages/uclibc/uclibc.inc15
-rw-r--r--packages/uclibc/uclibc_0.9.28.bb30
-rw-r--r--packages/uclibc/uclibc_0.9.29.bb4
-rw-r--r--packages/udev/files/network.sh3
-rw-r--r--packages/udev/files/slugos/mount.sh77
-rw-r--r--packages/udev/udev-115/noasmlinkage.patch36
-rw-r--r--packages/udev/udev-118/.mtn2git_empty (renamed from packages/xorg-lib/libice/.mtn2git_empty)0
-rw-r--r--packages/udev/udev-118/flags.patch (renamed from packages/udev/udev-115/flags.patch)0
-rw-r--r--packages/udev/udev-118/init (renamed from packages/udev/udev-115/init)0
-rw-r--r--packages/udev/udev-118/local.rules (renamed from packages/udev/udev-115/local.rules)0
-rw-r--r--packages/udev/udev-118/permissions.rules (renamed from packages/udev/udev-115/permissions.rules)0
-rw-r--r--packages/udev/udev-118/udev.rules (renamed from packages/udev/udev-115/udev.rules)0
-rw-r--r--packages/udev/udev-118/udevtrigger_add_devname_filtering.patch (renamed from packages/udev/udev-115/udevtrigger_add_devname_filtering.patch)0
-rw-r--r--packages/udev/udev-118/vol_id_ld.patch (renamed from packages/udev/udev-115/vol_id_ld.patch)0
-rw-r--r--packages/udev/udev_100.bb3
-rw-r--r--packages/udev/udev_115.bb68
-rw-r--r--packages/udev/udev_118.bb72
-rw-r--r--packages/udhcp/udhcp_0.9.8.bb2
-rw-r--r--packages/unionfs/unionfs-modules_1.0.11.bb2
-rw-r--r--packages/unionfs/unionfs.inc3
-rw-r--r--packages/upnp/libupnp_1.4.2.bb12
-rw-r--r--packages/upslug/upslug2.inc1
-rw-r--r--packages/ushare/ushare_1.1a.bb20
-rw-r--r--packages/usrp/usrp_0.12.bb2
-rw-r--r--packages/util-linux/files/fdiskbsdlabel-avr32.patch11
-rw-r--r--packages/util-linux/util-linux_2.12r.bb3
-rw-r--r--packages/vim/gvim_7.0.bb2
-rw-r--r--packages/vnc/fbvncserver-kmodule_0.9.4.bb (renamed from packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb)0
-rw-r--r--packages/vnc/fbvncserver2_cvs.bb21
-rw-r--r--packages/vnc/fbvncserver_0.9.4.bb51
-rw-r--r--packages/vnc/files/.mtn2git_empty (renamed from packages/xorg-lib/libsm/.mtn2git_empty)0
-rw-r--r--packages/vnc/files/buildfix.patch (renamed from packages/fbvncserver/files/buildfix.patch)0
-rw-r--r--packages/vnc/files/init (renamed from packages/fbvncserver/files/init)0
-rw-r--r--packages/vnc/files/ipaq.patch (renamed from packages/fbvncserver/files/ipaq.patch)0
-rw-r--r--packages/vnc/files/kernelinclude.patch (renamed from packages/fbvncserver/files/kernelinclude.patch)0
-rw-r--r--packages/vnc/files/libvncs0.6.patch (renamed from packages/fbvncserver/files/libvncs0.6.patch)0
-rw-r--r--packages/vnc/files/paths.patch (renamed from packages/fbvncserver/files/paths.patch)0
-rw-r--r--packages/vnc/libvncserver/.mtn2git_empty (renamed from packages/xorg-lib/libxau/.mtn2git_empty)0
-rw-r--r--packages/vnc/libvncserver/configure_ac.patch15
-rw-r--r--packages/vnc/libvncserver_0.9.1.bb25
-rw-r--r--packages/vnc/libvncserver_0.9.bb32
-rw-r--r--packages/vnc/x11vnc_0.9.3.bb (renamed from packages/x11vnc/x11vnc_0.9.3.bb)0
-rw-r--r--packages/vorbis-tools/vorbis-tools-1.1.1/.mtn2git_empty (renamed from packages/xorg-lib/libxaw/.mtn2git_empty)0
-rw-r--r--packages/vorbis-tools/vorbis-tools-1.1.1/remove-deprecated-curl-option.patch12
-rw-r--r--packages/vorbis-tools/vorbis-tools_1.1.1.bb21
-rw-r--r--packages/webkit/webkit-gtk_svn.bb2
-rw-r--r--packages/webkit/webkit-qt.inc2
-rw-r--r--packages/wifistix/wifistix-modules_5.0.16.p0.bb1
-rw-r--r--packages/wireshark/tshark_0.99.4.bb21
-rw-r--r--packages/wlan-ng/wlan-ng-modules.inc2
-rw-r--r--packages/wlan-ng/wlan-ng-modules_0.2.1-pre26.bb2
-rw-r--r--packages/wrt/wrt-utils.bb2
-rw-r--r--packages/wxwidgets/wxbase_2.6.2.bb (renamed from packages/wxbase/wxbase_2.6.2.bb)0
-rw-r--r--packages/wxwidgets/wxbase_2.7+cvs.bb (renamed from packages/wxbase/wxbase_2.7+cvs.bb)0
-rw-r--r--packages/xapian/.mtn2git_empty (renamed from packages/xorg-lib/libxcalibrate/.mtn2git_empty)0
-rw-r--r--packages/xapian/xapian-core_1.0.5.bb16
-rw-r--r--packages/xapian/xapian-quickstartindex_1.0.bb18
-rw-r--r--packages/xcb/libxcb_0.9.bb2
-rw-r--r--packages/xmlpull/.mtn2git_empty (renamed from packages/xorg-lib/libxcomposite-1.0.1/.mtn2git_empty)0
-rw-r--r--packages/xmlpull/files/.mtn2git_empty (renamed from packages/xorg-lib/libxcursor-1.1.2/.mtn2git_empty)0
-rw-r--r--packages/xmlpull/files/makefile.patch411
-rw-r--r--packages/xmlpull/xmlpull_1.1.3.4c.bb35
-rw-r--r--packages/xmms-embedded/xmms-embedded_20040327.bb2
-rw-r--r--packages/xmms/xmms-mad_0.10.bb2
-rw-r--r--packages/xmms/xmms-tremor_1.0.bb2
-rw-r--r--packages/xorg-app/bdftopcf-native_1.0.0.bb8
-rw-r--r--packages/xorg-app/beforelight_1.0.3.bb5
-rw-r--r--packages/xorg-app/bitmap_1.0.2.bb5
-rw-r--r--packages/xorg-app/bitmap_1.0.3.bb3
-rw-r--r--packages/xorg-app/fslsfonts_1.0.1.bb5
-rw-r--r--packages/xorg-app/fstobdf_1.0.2.bb5
-rw-r--r--packages/xorg-app/lbxproxy_1.0.1.bb7
-rw-r--r--packages/xorg-app/listres_1.0.1.bb5
-rw-r--r--packages/xorg-app/luit_1.0.3.bb4
-rw-r--r--packages/xorg-app/mkbold-mkitalic-native/.mtn2git_empty (renamed from packages/xorg-lib/libxcursor/.mtn2git_empty)0
-rw-r--r--packages/xorg-app/mkbold-mkitalic-native/makebifonts5
-rw-r--r--packages/xorg-app/mkbold-mkitalic-native_0.11.bb21
-rw-r--r--packages/xorg-app/mkcfm_1.0.1.bb5
-rw-r--r--packages/xorg-app/oclock_1.0.1.bb5
-rw-r--r--packages/xorg-app/proxymngr_1.0.1.bb5
-rw-r--r--packages/xorg-app/rgb_1.0.1.bb8
-rw-r--r--packages/xorg-app/rstart_1.0.2.bb5
-rw-r--r--packages/xorg-app/scripts_1.0.1.bb6
-rw-r--r--packages/xorg-app/showfont_1.0.1.bb5
-rw-r--r--packages/xorg-app/smproxy_1.0.2.bb5
-rw-r--r--packages/xorg-app/viewres_1.0.1.bb5
-rw-r--r--packages/xorg-app/xbiff_1.0.1.bb5
-rw-r--r--packages/xorg-app/xcalc_1.0.1.bb5
-rw-r--r--packages/xorg-app/xcalc_1.0.2.bb4
-rw-r--r--packages/xorg-app/xclipboard_1.0.1.bb5
-rw-r--r--packages/xorg-app/xclock_1.0.2.bb5
-rw-r--r--packages/xorg-app/xclock_1.0.3.bb4
-rw-r--r--packages/xorg-app/xcmsdb_1.0.1.bb5
-rw-r--r--packages/xorg-app/xconsole_1.0.2.bb5
-rw-r--r--packages/xorg-app/xconsole_1.0.3.bb4
-rw-r--r--packages/xorg-app/xcursorgen_1.0.1.bb5
-rw-r--r--packages/xorg-app/xcursorgen_1.0.2.bb4
-rw-r--r--packages/xorg-app/xditview_1.0.1.bb5
-rw-r--r--packages/xorg-app/xdriinfo_1.0.1.bb5
-rw-r--r--packages/xorg-app/xdriinfo_1.0.2.bb4
-rw-r--r--packages/xorg-app/xedit_1.0.2.bb5
-rw-r--r--packages/xorg-app/xeyes_1.0.1.bb4
-rw-r--r--packages/xorg-app/xfd_1.0.1.bb5
-rw-r--r--packages/xorg-app/xfindproxy_1.0.1.bb5
-rw-r--r--packages/xorg-app/xfs_1.0.5.bb5
-rw-r--r--packages/xorg-app/xfsinfo_1.0.1.bb5
-rw-r--r--packages/xorg-app/xfwp_1.0.1.bb5
-rw-r--r--packages/xorg-app/xgamma_1.0.1.bb5
-rw-r--r--packages/xorg-app/xgamma_1.0.2.bb5
-rw-r--r--packages/xorg-app/xgc_1.0.1.bb5
-rw-r--r--packages/xorg-app/xinit_1.0.7.bb6
-rw-r--r--packages/xorg-app/xkbevd_1.0.2.bb5
-rw-r--r--packages/xorg-app/xkbprint_1.0.1.bb5
-rw-r--r--packages/xorg-app/xkill_1.0.1.bb5
-rw-r--r--packages/xorg-app/xload_1.0.1.bb5
-rw-r--r--packages/xorg-app/xload_1.0.2.bb5
-rw-r--r--packages/xorg-app/xlogo_1.0.1.bb5
-rw-r--r--packages/xorg-app/xlsatoms_1.0.1.bb5
-rw-r--r--packages/xorg-app/xlsclients_1.0.1.bb5
-rw-r--r--packages/xorg-app/xlsfonts_1.0.2.bb4
-rw-r--r--packages/xorg-app/xmag_1.0.1.bb5
-rw-r--r--packages/xorg-app/xmag_1.0.2.bb5
-rw-r--r--packages/xorg-app/xman_1.0.2.bb7
-rw-r--r--packages/xorg-app/xman_1.0.3.bb8
-rw-r--r--packages/xorg-app/xmessage_1.0.1.bb7
-rw-r--r--packages/xorg-app/xmessage_1.0.2.bb5
-rw-r--r--packages/xorg-app/xmh_1.0.1.bb5
-rw-r--r--packages/xorg-app/xmore_1.0.1.bb5
-rw-r--r--packages/xorg-app/xphelloworld_1.0.1.bb5
-rw-r--r--packages/xorg-app/xplsprinters_1.0.1.bb5
-rw-r--r--packages/xorg-app/xpr_1.0.1.bb5
-rw-r--r--packages/xorg-app/xpr_1.0.2.bb5
-rw-r--r--packages/xorg-app/xprehashprinterlist_1.0.1.bb5
-rw-r--r--packages/xorg-app/xrefresh_1.0.2.bb5
-rw-r--r--packages/xorg-app/xrx_1.0.1.bb5
-rw-r--r--packages/xorg-app/xsetmode_1.0.0.bb5
-rw-r--r--packages/xorg-app/xsetpointer_1.0.0.bb5
-rw-r--r--packages/xorg-app/xsetpointer_1.0.1.bb5
-rw-r--r--packages/xorg-app/xsm_1.0.1.bb7
-rw-r--r--packages/xorg-app/xstdcmap_1.0.1.bb5
-rw-r--r--packages/xorg-app/xtrap_1.0.2.bb5
-rw-r--r--packages/xorg-app/xvidtune_1.0.1.bb5
-rw-r--r--packages/xorg-app/xwd_1.0.1.bb5
-rw-r--r--packages/xorg-app/xwininfo_1.0.2.bb5
-rw-r--r--packages/xorg-app/xwininfo_1.0.3.bb5
-rw-r--r--packages/xorg-app/xwud_1.0.1.bb5
-rw-r--r--packages/xorg-data/xcursor-themes_1.0.1.bb5
-rw-r--r--packages/xorg-data/xkbdata_1.0.1.bb7
-rw-r--r--packages/xorg-doc/xorg-doc-common.inc5
-rw-r--r--packages/xorg-doc/xorg-docs_1.0.1.bb11
-rw-r--r--packages/xorg-doc/xorg-docs_1.2.bb11
-rw-r--r--packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb4
-rw-r--r--packages/xorg-doc/xorg-sgml-doctools_1.2.bb4
-rw-r--r--packages/xorg-driver/xf86-input-acecad_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-acecad_1.2.1.bb5
-rw-r--r--packages/xorg-driver/xf86-input-acecad_1.2.2.bb5
-rw-r--r--packages/xorg-driver/xf86-input-aiptek_1.0.1.bb2
-rw-r--r--packages/xorg-driver/xf86-input-calcomp_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-calcomp_1.1.1.bb4
-rw-r--r--packages/xorg-driver/xf86-input-citron_2.2.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-citron_2.2.1.bb5
-rw-r--r--packages/xorg-driver/xf86-input-digitaledge_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-dmc_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-dmc_1.1.1.bb5
-rw-r--r--packages/xorg-driver/xf86-input-dynapro_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-dynapro_1.1.1.bb5
-rw-r--r--packages/xorg-driver/xf86-input-elo2300_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-elo2300_1.1.1.bb5
-rw-r--r--packages/xorg-driver/xf86-input-elographics_1.1.0.bb4
-rw-r--r--packages/xorg-driver/xf86-input-elographics_X11R7.0-1.0.0.5.bb2
-rw-r--r--packages/xorg-driver/xf86-input-evdev_1.2.0.bb4
-rw-r--r--packages/xorg-driver/xf86-input-fpit_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-hyperpen_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-jamstudio_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-joystick_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-joystick_1.3.1.bb4
-rw-r--r--packages/xorg-driver/xf86-input-magellan_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-magellan_1.1.1.bb4
-rw-r--r--packages/xorg-driver/xf86-input-magictouch_1.0.0.5.bb3
-rw-r--r--packages/xorg-driver/xf86-input-microtouch_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-microtouch_1.1.1.bb4
-rw-r--r--packages/xorg-driver/xf86-input-mouse_1.2.3.bb4
-rw-r--r--packages/xorg-driver/xf86-input-mutouch_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-palmax_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-penmount_1.2.1.bb4
-rw-r--r--packages/xorg-driver/xf86-input-spaceorb_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-spaceorb_1.1.1.bb4
-rw-r--r--packages/xorg-driver/xf86-input-summa_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-tek4957_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-ur98_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-input-vmmouse_12.4.0.bb7
-rw-r--r--packages/xorg-driver/xf86-input-vmmouse_12.4.3.bb4
-rw-r--r--packages/xorg-driver/xf86-input-void_1.1.0.bb3
-rw-r--r--packages/xorg-driver/xf86-input-void_1.1.1.bb4
-rw-r--r--packages/xorg-driver/xf86-video-apm_1.1.1.bb7
-rw-r--r--packages/xorg-driver/xf86-video-ark_0.6.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-ast_0.81.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-ati_6.7.197.bb5
-rw-r--r--packages/xorg-driver/xf86-video-chips_1.1.1.bb2
-rw-r--r--packages/xorg-driver/xf86-video-cirrus_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-cyrix_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-dummy_0.2.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-glint_1.1.1.bb5
-rw-r--r--packages/xorg-driver/xf86-video-i128_1.1.0.5.bb5
-rw-r--r--packages/xorg-driver/xf86-video-i128_1.2.1.bb4
-rw-r--r--packages/xorg-driver/xf86-video-i740_1.1.0.bb5
-rw-r--r--packages/xorg-driver/xf86-video-i810_1.7.4.bb5
-rw-r--r--packages/xorg-driver/xf86-video-imstt_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-mga_1.4.1.bb2
-rw-r--r--packages/xorg-driver/xf86-video-mga_1.9.99.bb4
-rw-r--r--packages/xorg-driver/xf86-video-neomagic_1.1.1.bb8
-rw-r--r--packages/xorg-driver/xf86-video-nsc_2.8.3.bb9
-rw-r--r--packages/xorg-driver/xf86-video-nv_2.1.7.bb4
-rw-r--r--packages/xorg-driver/xf86-video-s3virge_1.9.1.bb2
-rw-r--r--packages/xorg-driver/xf86-video-sis_0.9.4.bb5
-rw-r--r--packages/xorg-driver/xf86-video-sisusb_0.8.1.bb6
-rw-r--r--packages/xorg-driver/xf86-video-sunbw2_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-suncg14_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-suncg3_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-suncg6_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-sunffb_1.1.0.bb4
-rw-r--r--packages/xorg-driver/xf86-video-sunleo_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-suntcx_1.1.0.bb2
-rw-r--r--packages/xorg-driver/xf86-video-tga_1.1.0.bb8
-rw-r--r--packages/xorg-driver/xf86-video-trident_1.2.4.bb5
-rw-r--r--packages/xorg-driver/xf86-video-v4l_0.1.1.bb5
-rw-r--r--packages/xorg-driver/xf86-video-vga_4.1.0.bb2
-rw-r--r--packages/xorg-driver/xorg-driver-common.inc3
-rw-r--r--packages/xorg-font/font-adobe-100dpi_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-adobe-75dpi_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-adobe-utopia-100dpi_1.0.1.bb5
-rw-r--r--packages/xorg-font/font-adobe-utopia-75dpi_1.0.1.bb6
-rw-r--r--packages/xorg-font/font-adobe-utopia-type1_1.0.1.bb6
-rw-r--r--packages/xorg-font/font-alias_1.0.1.bb8
-rw-r--r--packages/xorg-font/font-arabic-misc_1.0.0.bb7
-rw-r--r--packages/xorg-font/font-bh-100dpi_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-bh-75dpi_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-bh-lucidatypewriter-75dpi_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-bh-ttf_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-bh-type1_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-bitstream-100dpi_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-bitstream-75dpi_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-bitstream-speedo_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-bitstream-type1_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-cronyx-cyrillic_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-cursor-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-daewoo-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-dec-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-ibm-type1_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-isas-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-jis-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-micro-misc_1.0.0.bb4
-rw-r--r--packages/xorg-font/font-misc-cyrillic_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-misc-ethiopic_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-misc-meltho_1.0.0.bb5
-rw-r--r--packages/xorg-font/font-mutt-misc_1.0.0.bb7
-rw-r--r--packages/xorg-font/font-schumacher-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-screen-cyrillic_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-sony-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-sun-misc_1.0.0.bb2
-rw-r--r--packages/xorg-font/font-util-native_1.0.1.bb8
-rw-r--r--packages/xorg-font/font-util_1.0.1.bb9
-rw-r--r--packages/xorg-font/font-winitzki-cyrillic_1.0.0.bb3
-rw-r--r--packages/xorg-font/font-xfree86-type1_1.0.0.bb3
-rw-r--r--packages/xorg-font/xfonts-xorg_6.8.bb2
-rw-r--r--packages/xorg-font/xorg-font-common.inc3
-rw-r--r--packages/xorg-lib/diet-x11/autofoo.patch22
-rw-r--r--packages/xorg-lib/diet-x11/makekeys.diff12
-rw-r--r--packages/xorg-lib/diet-x11_1.1.1.bb2
-rw-r--r--packages/xorg-lib/diet-x11_1.1.2.bb2
-rw-r--r--packages/xorg-lib/diet-x11_1.1.3.bb2
-rw-r--r--packages/xorg-lib/files/errordb-keysymdb-path-fix.patch22
-rw-r--r--packages/xorg-lib/files/fix-utf8-wrong-define.patch16
-rw-r--r--packages/xorg-lib/libice/autofoo.patch21
-rw-r--r--packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch54
-rw-r--r--packages/xorg-lib/libsm/autofoo.patch21
-rw-r--r--packages/xorg-lib/libx11/X18NCMSstubs.diff (renamed from packages/xorg-lib/diet-x11/X18NCMSstubs.diff)0
-rw-r--r--packages/xorg-lib/libx11/autofoo.patch22
-rw-r--r--packages/xorg-lib/libx11/fix-disable-xlocale.diff (renamed from packages/xorg-lib/diet-x11/fix-disable-xlocale.diff)0
-rw-r--r--packages/xorg-lib/libx11/fix-utf8-wrong-define.patch (renamed from packages/xorg-lib/diet-x11/fix-utf8-wrong-define.patch)0
-rw-r--r--packages/xorg-lib/libx11/ruutf8.patch (renamed from packages/xorg-lib/files/ruutf8.patch)0
-rw-r--r--packages/xorg-lib/libx11/xchar2b.patch (renamed from packages/xorg-lib/diet-x11/xchar2b.patch)0
-rw-r--r--packages/xorg-lib/libx11/xim.patch (renamed from packages/xorg-lib/diet-x11/xim.patch)0
-rw-r--r--packages/xorg-lib/libx11_1.1.1.bb13
-rw-r--r--packages/xorg-lib/libxau/autofoo.patch21
-rw-r--r--packages/xorg-lib/libxaw/auxdir.patch10
-rw-r--r--packages/xorg-lib/libxcalibrate/coords.patch50
-rw-r--r--packages/xorg-lib/libxcalibrate_git.bb6
-rw-r--r--packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch17
-rw-r--r--packages/xorg-lib/libxcursor-1.1.2/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxcursor/autofoo.patch22
-rw-r--r--packages/xorg-lib/libxdamage-1.0.1/autofoo.patch17
-rw-r--r--packages/xorg-lib/libxdamage/m4.patch65
-rw-r--r--packages/xorg-lib/libxdmcp/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxdmcp/autofoo.patch22
-rw-r--r--packages/xorg-lib/libxext/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxext/autofoo.patch18
-rw-r--r--packages/xorg-lib/libxfixes/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxfixes/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxfont/autofoo.patch18
-rw-r--r--packages/xorg-lib/libxfont/scalable.patch27
-rw-r--r--packages/xorg-lib/libxft/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxft/autofoo.patch21
-rw-r--r--packages/xorg-lib/libxi/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxi/autofoo.patch12
-rw-r--r--packages/xorg-lib/libxmu_1.0.4.bb15
-rw-r--r--packages/xorg-lib/libxpm/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxpm/autofoo.patch18
-rw-r--r--packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxrandr-1.0.2/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxrandr/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxrandr/autofoo.patch30
-rw-r--r--packages/xorg-lib/libxrender/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxrender/autofoo.patch20
-rw-r--r--packages/xorg-lib/libxt/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/libxt/autofoo.patch20
-rw-r--r--packages/xorg-proto/calibrateproto/.mtn2git_empty0
-rw-r--r--packages/xorg-proto/calibrateproto/coords.patch56
-rw-r--r--packages/xorg-proto/calibrateproto_git.bb6
-rw-r--r--packages/xorg-proto/glproto_1.4.9.bb3
-rw-r--r--packages/xorg-proto/xproto-native_7.0.11.bb5
-rw-r--r--packages/xorg-proto/xproto_7.0.11.bb3
-rw-r--r--packages/xorg-xserver/files/.mtn2git_empty (renamed from packages/xorg-lib/libxdamage-1.0.1/.mtn2git_empty)0
-rw-r--r--packages/xorg-xserver/files/fix-picturestr-include-order.patch15
-rw-r--r--packages/xorg-xserver/files/xorg-avr32-support.diff19
-rw-r--r--packages/xorg-xserver/xorg-xserver-common.inc2
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/linux-keyboard-mediumraw.patch83
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/keyboard-resume-workaround.patch16
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/linux-keyboard-mediumraw.patch44
-rw-r--r--packages/xorg-xserver/xserver-kdrive-imageon_1.2.0.bb5
-rw-r--r--packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb2
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.4.bb7
-rw-r--r--packages/xserver-common/files/ghi270/.mtn2git_empty0
-rw-r--r--packages/xserver-common/files/ti-osk.patch12
-rw-r--r--packages/xserver-common/xserver-common_1.18.bb2
-rw-r--r--packages/xserver-common/xserver-common_1.21.bb16
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty0
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty0
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty0
-rw-r--r--packages/xxf86dgaext/.mtn2git_empty0
-rw-r--r--packages/xxf86vmext/.mtn2git_empty0
-rw-r--r--packages/zaurusd/files/01-check-toggle-landscape9
-rw-r--r--packages/zaurusd/files/01-check-toggle-portait9
-rw-r--r--packages/zaurusd/files/alsa-cxx00-default.state.patch276
-rw-r--r--packages/zaurusd/files/zaurus-hinge.in7
-rw-r--r--packages/zaurusd/files/zaurusd-mixer-callback.patch11
-rw-r--r--packages/zaurusd/zaurusd_svn.bb10
-rw-r--r--packages/zbedic/libbedic_1.1.bb (renamed from packages/zbedic/libbedic_1.0.bb)0
-rw-r--r--packages/zbedic/zbedic_1.2.bb (renamed from packages/zbedic/zbedic_1.0.bb)0
-rw-r--r--packages/zten/files/zten.patch2
-rw-r--r--packages/zten/zten_1.6.2.bb1
-rw-r--r--packages/zziplib/files/.mtn2git_empty (renamed from packages/xorg-lib/libxdamage/.mtn2git_empty)0
-rw-r--r--packages/zziplib/files/zip_c.patch15
-rw-r--r--packages/zziplib/files/zziplib-0.10-disable-test.patch13
-rw-r--r--packages/zziplib/files/zziplib-autoconf.patch509
-rw-r--r--packages/zziplib/zziplib-native_0.12.83.bb9
-rw-r--r--packages/zziplib/zziplib-native_0.13.49.bb9
-rw-r--r--packages/zziplib/zziplib.inc20
-rw-r--r--packages/zziplib/zziplib_0.10.82.bb22
-rw-r--r--packages/zziplib/zziplib_0.12.83.bb4
-rw-r--r--packages/zziplib/zziplib_0.13.49.bb12
-rw-r--r--site/avr32-common22
2114 files changed, 316703 insertions, 114050 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 9e5f8f4387..e5a9cf1a98 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1,4 +1,4 @@
-OpenEmbedded Maintainers List
+OpenEmbedded Maintainers List
Please put you full name and email-address here for the areas of OE you want to support.
@@ -86,6 +86,18 @@ Recipes: quagga, iputils, ndic6, hping2, lilo-sh, conserver, ipsec-tools,
Recipes: lilo-sh, clamav, havp, p3scan, clamsmtp, librsync, rdiff-backup,
Recipes: net-snmp, ebtables, ethtool, arpwatch, lib*-perl
+Person: Jan Luebbe
+Mail: jluebbe@lasnet.de
+Website: http://sicherheitsschwankung.de
+Machines: chumby
+Recipes: chumby-*, initramfs-chumby
+
+Person: Jeremy Lainé
+Mail: jeremy.laine@bolloretelecom.eu
+Website: http://www.jerryweb.org/
+Machines: mpc8313e-rdb
+Recipes: libexosip2, python-cheetah, python-django, python-pyopenssl
+
Person: Joaquim Duran
Mail: joaquinduran@adtelecom.es
Recipes: gtk+, gtkmm
@@ -157,6 +169,12 @@ Machines: fic-gta01, fic-gta02, nokia810, x86, qemuarm, qemux86
Interests: Core OE infrastructure, everything Python, EFL, E17, Qt4
Recipes: *python*, efl/*, e17*
+Person: Patrick Gfeller
+Mail: gfellerpatrik@gmx.net
+Website: www.codeomega.info
+Interests: text-to-speech, vnc
+Recipes: libvncserver, fbvncserver2
+
Person: Paul Sokolovsky
Mail: pmiscml@gmail.com
Machines: h3900, h4000, hx4700
@@ -183,7 +201,7 @@ Mail: rpurdie@rpsys.net
Distros: poky, openzaurus, Ångström
Machines: poodle, c7x0, spitz, nokia770, qemuarm, qemux86, hx2xxx
Interests: Kernels, Bitbake, Core OE infrastructure, Zaurus 2.6
-Recipes: linux-rp, udev, zaurusd, task-base
+Recipes: linux-rp, udev, zaurusd, task-base, qemu
Person: Rick Farina
Mail: sidhayn@gmail.com
@@ -202,7 +220,7 @@ Distros: Sonkei
Machines: collie, spitz
Recipes: anthy, nunome, uim*, granule, qpobox*, qte-font-unifont*
Recipes: qpf-unismall, qpobox, poboxserver, imkit*, scim, zten
-Recipes: eb, eblook, tomoe
+Recipes: eb*, tomoe, offline-wikipedia
Person: Shane Volpe
Mail: shanevolpe@gmail.com
@@ -217,6 +235,10 @@ Machines: Dht-walnut, Efika, Magicbox,Sequoia,Xilinx-ML403,RB5XX
Interest: Cross-machine development
Recipes: icecc.bbclass, ppc toolchain, asterisk,perl,php
+Person: Takashi Nemoto
+Mail: tnemoto@sourceforge.jp
+Recipes: mkbold-mkitalic
+
Person: Tim Sander
Mail: oe@iss.tu-darmstadt.de
Receipes: fxload
@@ -242,3 +264,17 @@ Interests: Kernels, PXA, GTK+, gsmd
Distros: Ångström
Machines: hx4700, magician
Recipes: avahi, libgsmd
+
+Person: Robert Schuster 'thebohemian'
+Mail: robert.schuster@tarent.de, thebohemian@gmx.net
+Website: http://fsfe.org/en/fellows/robertschuster/weblog
+Interests: free software, java, games, packages/maemo4/*
+Distros: chinook-compat
+Recipes: jikes-native, jikes-initial, ecj-initial, ecj-bootstrap-native
+Recipes: classpath*, cacao*, jamvm*
+Recipes: swt-gtk, rxtx, dbus-java, libmatthew, kxml2, xmlpull
+Recipes: midpath*, logic-analyze
+Recipes: kobodeluxe
+Recipes: hildon-thumbnail, libhildon*, libosso*, mce-dev, libconic
+Recipes: libgpsbt, libgpsmgr, osso-gnome-vfs2, osso-gwconnect, osso-ic-oss
+
diff --git a/classes/base.bbclass b/classes/base.bbclass
index d48d2a5726..089cd5acd3 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -85,7 +85,7 @@ def base_chk_file(parser, pn, pv, src_uri, localpath, data):
def base_dep_prepend(d):
- import bb;
+ import bb
#
# Ideally this will check a flag so we will operate properly in
# the case where host == build == target, for now we don't work in
@@ -128,6 +128,14 @@ def base_less_or_equal(variable, checkvalue, truevalue, falsevalue, d):
else:
return falsevalue
+def base_version_less_or_equal(variable, checkvalue, truevalue, falsevalue, d):
+ import bb
+ result = bb.vercmp(bb.data.getVar(variable,d,True), checkvalue)
+ if result <= 0:
+ return truevalue
+ else:
+ return falsevalue
+
def base_contains(variable, checkvalues, truevalue, falsevalue, d):
import bb
matches = 0
@@ -404,7 +412,6 @@ python do_listtasks() {
addtask clean
do_clean[dirs] = "${TOPDIR}"
do_clean[nostamp] = "1"
-do_clean[bbdepcmd] = ""
python base_do_clean() {
"""clear the build and temp directories"""
dir = bb.data.expand("${WORKDIR}", d)
@@ -417,27 +424,33 @@ python base_do_clean() {
os.system('rm -f '+ dir)
}
+#Uncomment this for bitbake 1.8.12
+#addtask rebuild after do_${BB_DEFAULT_TASK}
addtask rebuild
do_rebuild[dirs] = "${TOPDIR}"
do_rebuild[nostamp] = "1"
-do_rebuild[bbdepcmd] = ""
python base_do_rebuild() {
"""rebuild a package"""
- bb.build.exec_task('do_clean', d)
- bb.build.exec_task('do_' + bb.data.getVar('BB_DEFAULT_TASK', d, 1), d)
+ from bb import __version__
+ try:
+ from distutils.version import LooseVersion
+ except ImportError:
+ def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1
+ if (LooseVersion(__version__) < LooseVersion('1.8.11')):
+ bb.build.exec_func('do_clean', d)
+ bb.build.exec_task('do_' + bb.data.getVar('BB_DEFAULT_TASK', d, 1), d)
}
addtask mrproper
do_mrproper[dirs] = "${TOPDIR}"
do_mrproper[nostamp] = "1"
-do_mrproper[bbdepcmd] = ""
python base_do_mrproper() {
"""clear downloaded sources, build and temp directories"""
dir = bb.data.expand("${DL_DIR}", d)
if dir == '/': bb.build.FuncFailed("wrong DATADIR")
bb.debug(2, "removing " + dir)
os.system('rm -rf ' + dir)
- bb.build.exec_task('do_clean', d)
+ bb.build.exec_func('do_clean', d)
}
addtask fetch
@@ -658,6 +671,17 @@ python base_eventhandler() {
if pesteruser:
bb.fatal('The following variable(s) were not set: %s\nPlease set them directly, or choose a MACHINE or DISTRO that sets them.' % ', '.join(pesteruser))
+ #
+ # Handle removing stamps for 'rebuild' task
+ #
+ if name.startswith("StampUpdate"):
+ for (fn, task) in e.targets:
+ #print "%s %s" % (task, fn)
+ if task == "do_rebuild":
+ dir = "%s.*" % e.stampPrefix[fn]
+ bb.note("Removing stamps: " + dir)
+ os.system('rm -f '+ dir)
+
if not data in e.__dict__:
return NotHandled
@@ -672,7 +696,6 @@ python base_eventhandler() {
addtask configure after do_unpack do_patch
do_configure[dirs] = "${S} ${B}"
-do_configure[bbdepcmd] = "do_populate_staging"
do_configure[deptask] = "do_populate_staging"
base_do_configure() {
:
@@ -680,7 +703,6 @@ base_do_configure() {
addtask compile after do_configure
do_compile[dirs] = "${S} ${B}"
-do_compile[bbdepcmd] = "do_populate_staging"
base_do_compile() {
if [ -e Makefile -o -e makefile ]; then
oe_runmake || die "make failed"
@@ -774,8 +796,10 @@ def get_subpkgedata_fn(pkg, d):
import bb, os
archs = bb.data.expand("${PACKAGE_ARCHS}", d).split(" ")
archs.reverse()
+ pkgdata = bb.data.expand('${STAGING_DIR}/pkgdata/', d)
+ targetdir = bb.data.expand('${TARGET_VENDOR}-${TARGET_OS}/runtime/', d)
for arch in archs:
- fn = bb.data.expand('${STAGING_DIR}/pkgdata/' + arch + '${TARGET_VENDOR}-${TARGET_OS}/runtime/%s' % pkg, d)
+ fn = pkgdata + arch + targetdir + pkg
if os.path.exists(fn):
return fn
return bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d)
@@ -811,6 +835,20 @@ python read_subpackage_metadata () {
bb.data.setVar(key, sdata[key], d)
}
+# Make sure MACHINE isn't exported
+# (breaks binutils at least)
+MACHINE[unexport] = "1"
+
+# Make sure TARGET_ARCH isn't exported
+# (breaks Makefiles using implicit rules, e.g. quilt, as GNU make has this
+# in them, undocumented)
+TARGET_ARCH[unexport] = "1"
+
+# Make sure DISTRO isn't exported
+# (breaks sysvinit at least)
+DISTRO[unexport] = "1"
+
+
def base_after_parse(d):
import bb, os, exceptions
@@ -830,8 +868,6 @@ def base_after_parse(d):
if this_machine and not re.match(need_machine, this_machine):
raise bb.parse.SkipPackage("incompatible with machine %s" % this_machine)
-
-
pn = bb.data.getVar('PN', d, 1)
# OBSOLETE in bitbake 1.7.4
@@ -843,22 +879,6 @@ def base_after_parse(d):
if use_nls != None:
bb.data.setVar('USE_NLS', use_nls, d)
- # Make sure MACHINE isn't exported
- # (breaks binutils at least)
- bb.data.delVarFlag('MACHINE', 'export', d)
- bb.data.setVarFlag('MACHINE', 'unexport', 1, d)
-
- # Make sure TARGET_ARCH isn't exported
- # (breaks Makefiles using implicit rules, e.g. quilt, as GNU make has this
- # in them, undocumented)
- bb.data.delVarFlag('TARGET_ARCH', 'export', d)
- bb.data.setVarFlag('TARGET_ARCH', 'unexport', 1, d)
-
- # Make sure DISTRO isn't exported
- # (breaks sysvinit at least)
- bb.data.delVarFlag('DISTRO', 'export', d)
- bb.data.setVarFlag('DISTRO', 'unexport', 1, d)
-
# Git packages should DEPEND on git-native
srcuri = bb.data.getVar('SRC_URI', d, 1)
if "git://" in srcuri:
@@ -888,7 +908,7 @@ def base_after_parse(d):
if len(paths) == 0:
return
- for s in bb.data.getVar('SRC_URI', d, 1).split():
+ for s in srcuri.split():
if not s.startswith("file://"):
continue
local = bb.data.expand(bb.fetch.localpath(s, d), d)
@@ -899,7 +919,19 @@ def base_after_parse(d):
return
python () {
+ import bb
+ from bb import __version__
base_after_parse(d)
+
+ # Remove this for bitbake 1.8.12
+ try:
+ from distutils.version import LooseVersion
+ except ImportError:
+ def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1
+ if (LooseVersion(__version__) >= LooseVersion('1.8.11')):
+ deps = bb.data.getVarFlag('do_rebuild', 'deps', d) or []
+ deps.append('do_' + bb.data.getVar('BB_DEFAULT_TASK', d, 1))
+ bb.data.setVarFlag('do_rebuild', 'deps', deps, d)
}
def check_app_exists(app, d):
diff --git a/classes/bootimg.bbclass b/classes/bootimg.bbclass
index 0c96001096..d58cf1f424 100644
--- a/classes/bootimg.bbclass
+++ b/classes/bootimg.bbclass
@@ -13,9 +13,9 @@
# ${SYSLINUX_OPTS} - additional options to add to the syslinux file ';' delimited
do_bootimg[depends] += "dosfstools-native:do_populate_staging \
- syslinux-native:do_populate_staging \
- mtools-native:do_populate_staging \
- cdrtools-native:do_populate_staging"
+ syslinux-native:do_populate_staging \
+ mtools-native:do_populate_staging \
+ cdrtools-native:do_populate_staging"
PACKAGES = " "
@@ -31,6 +31,8 @@ SYSLINUXCFG = "${HDDDIR}/syslinux.cfg"
SYSLINUXMENU = "${HDDDIR}/menu"
inherit syslinux
+
+IMAGE_POSTPROCESS_COMMAND ?= ""
build_boot_bin() {
install -d ${HDDDIR}
@@ -49,13 +51,15 @@ build_boot_bin() {
BLOCKS=`du -bks ${HDDDIR} | cut -f 1`
SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}`
+ install -d ${DEPLOY_DIR_IMAGE}
+
mkdosfs -F 12 -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \
-C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE
syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
- #Create an ISO if we have an INITRD
+ # Create an ISO if we have an INITRD
if [ -n "${INITRD}" ] && [ -s "${INITRD}" ] && [ "${NOISO}" != "1" ] ; then
install -d ${ISODIR}
@@ -78,6 +82,8 @@ build_boot_bin() {
cp ${STAGING_DATADIR_NATIVE}/syslinux/isolinux.bin \
${ISODIR}
+ ${IMAGE_POSTPROCESS_COMMAND}
+
mkisofs -V ${BOOTIMG_VOLUME_ID} \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
-b isolinux/isolinux.bin -c isolinux/boot.cat -r \
diff --git a/classes/debian.bbclass b/classes/debian.bbclass
index dd0789adae..0afe9fcc39 100644
--- a/classes/debian.bbclass
+++ b/classes/debian.bbclass
@@ -3,6 +3,9 @@
# before building the current package to make the packages runtime
# depends are correct
#
+# Custom library package names can be defined setting
+# DEBIANNAME_ + pkgname to the desired name.
+#
# Better expressed as ensure all RDEPENDS package before we package
# This means we can't have circular RDEPENDS/RRECOMMENDS
do_package_write_ipk[rdeptask] = "do_package"
@@ -88,7 +91,10 @@ python debian_package_name_hook () {
for pkg in packages.split():
if (bb.data.getVar('PKG_' + pkg, d) or bb.data.getVar('DEBIAN_NOAUTONAME_' + pkg, d)):
continue
- if pkg == orig_pkg:
+ debian_pn = bb.data.getVar('DEBIANNAME_' + pkg, d)
+ if debian_pn:
+ newpkg = debian_pn
+ elif pkg == orig_pkg:
newpkg = pkgname
else:
newpkg = pkg.replace(orig_pkg, devname, 1)
diff --git a/classes/efl_base.bbclass b/classes/efl_base.bbclass
index 3865441779..023b2edf74 100644
--- a/classes/efl_base.bbclass
+++ b/classes/efl_base.bbclass
@@ -3,7 +3,7 @@ inherit autotools pkgconfig
SECTION = "e/libs"
HOMEPAGE = "http://www.enlightenment.org"
SRCNAME = "${@bb.data.getVar('PN', d, 1).replace('-native', '')}"
-SRC_URI = "http://download.enlightenment.org/snapshots/2007-07-10/${SRCNAME}-${PV}.tar.gz"
+SRC_URI = "http://download.enlightenment.org/snapshots/2008-01-25/${SRCNAME}-${PV}.tar.gz"
S = "${WORKDIR}/${SRCNAME}-${PV}"
do_stage() {
diff --git a/classes/image.bbclass b/classes/image.bbclass
index ca9c9458e1..67a3a4fa10 100644
--- a/classes/image.bbclass
+++ b/classes/image.bbclass
@@ -35,9 +35,9 @@ python () {
}
#
-# Get a list of files containing device tables to create.
+# Get a list of files containing tables of devices to be created.
# * IMAGE_DEVICE_TABLE is the old name to an absolute path to a device table file
-# * IMAGE_DEVICE_TABLES is a new name for a file, or list of files, seached
+# * IMAGE_DEVICE_TABLES is a new name for a file, or list of files, searched
# for in the BBPATH
# If neither are specified then the default name of files/device_table-minimal.txt
# is searched for in the BBPATH (same as the old version.)
@@ -90,6 +90,7 @@ fakeroot do_rootfs () {
${IMAGE_PREPROCESS_COMMAND}
export TOPDIR=${TOPDIR}
+ export DISTRO=${USERDISTRO}
export MACHINE=${MACHINE}
for type in ${IMAGE_FSTYPES}; do
@@ -109,6 +110,14 @@ fakeroot do_rootfs () {
${MACHINE_POSTPROCESS_COMMAND}
}
+do_deploy_to[nostamp] = "1"
+do_deploy_to () {
+ # A standalone task to deploy built image to the location specified
+ # by DEPLOY_TO variable (likely passed via environment).
+ # Assumes ${IMAGE_FSTYPES} is a single value!
+ cp "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.${IMAGE_FSTYPES}" ${DEPLOY_TO}
+}
+
insert_feed_uris () {
echo "Building feeds for [${DISTRO}].."
@@ -201,3 +210,4 @@ rootfs_update_timestamp () {
EXPORT_FUNCTIONS zap_root_password create_etc_timestamp remove_init_link do_rootfs make_zimage_symlink_relative set_image_autologin rootfs_update_timestamp
addtask rootfs before do_build after do_install
+addtask deploy_to after do_rootfs
diff --git a/classes/java.bbclass b/classes/java.bbclass
index 7fa6dc1786..41d52fe425 100644
--- a/classes/java.bbclass
+++ b/classes/java.bbclass
@@ -60,3 +60,63 @@ oe_jarinstall() {
shift
done
}
+
+# Creates a simple wrapper script for your Java program.
+# The script is written to ${PN} by default.
+#
+# Parameters are as follows:
+# [options] <output file> <main class> [jar files ...]
+#
+# Options are
+# -o <name> where name is the output file name
+#
+# It can only take jar files from ${datadir_java}!
+oe_java_simple_wrapper() {
+ delimiter=
+ mainclass=
+ classpath=
+ output=${PN}
+
+ while [ "$#" -gt 0 ]; do
+ case "$1" in
+ -o)
+ shift
+ output=$1
+ ;;
+ -*)
+ oefatal "oe_java_simple_wrapper: unknown option: $1"
+ ;;
+ *)
+ if [ $mainclass ]
+ then
+ classpath=$classpath$delimiter${datadir_java}/$1
+ delimiter=":"
+ else
+ mainclass=$1
+ fi
+ ;;
+ esac
+ shift
+ done
+
+ oenote "Creating simple Java wrapper script"
+ oenote "Output File: $output"
+ oenote "Main Class: $mainclass"
+ oenote "Classpath: $classpath"
+
+ echo "#!/bin/sh" > $output
+ echo "# This file is autogenerated by the oe_java_simple_wrapper function of OpenEmbedded" >> $output
+ echo >> $output
+ echo "# You can provide additional VM arguments by setting the VMARGS environment variable." >> $output
+ echo "CLASSPATH_ARG=\"-cp $classpath\"" >> $output
+ echo >> $output
+ echo "MAIN_CLASS=$mainclass" >> $output
+ echo >> $output
+ echo "# Allows overriding the VM by setting the JAVA environment variable." >> $output
+ echo "if [ x\${JAVA} = x ]" >> $output
+ echo "then" >> $output
+ echo " JAVA=java" >> $output
+ echo "fi" >> $output
+ echo >> $output
+ echo "exec \${JAVA} \${VMARGS} \${CLASSPATH_ARG} \${MAIN_CLASS} \${@}" >> $output
+}
diff --git a/classes/kernel-arch.bbclass b/classes/kernel-arch.bbclass
index 9208c3507a..5e5d9a94a8 100644
--- a/classes/kernel-arch.bbclass
+++ b/classes/kernel-arch.bbclass
@@ -5,7 +5,7 @@
#
valid_archs = "alpha cris ia64 \
- x86_64,i386 \
+ x86_64 i386 x86 \
m68knommu m68k ppc powerpc ppc64 \
sparc sparc64 \
arm arm26 \
diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass
index 8724ad2cf1..459c553ffe 100644
--- a/classes/kernel.bbclass
+++ b/classes/kernel.bbclass
@@ -11,6 +11,10 @@ PACKAGES_DYNAMIC += "kernel-image-*"
export OS = "${TARGET_OS}"
export CROSS_COMPILE = "${TARGET_PREFIX}"
KERNEL_IMAGETYPE ?= "zImage"
+# Base filename under which users see built kernel (i.e. deploy name)
+KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}"
+# Symlink basename pointing to the most recently built kernel for a machine
+KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}"
KERNEL_PRIORITY = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[-1]}"
@@ -30,6 +34,7 @@ HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}"
KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX} ${HOST_CC_KERNEL_ARCH}"
KERNEL_LD = "${LD}${KERNEL_LDSUFFIX} ${HOST_LD_KERNEL_ARCH}"
+# Where built kernel lies in the kernel tree
KERNEL_OUTPUT = "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
KERNEL_IMAGEDEST = "boot"
@@ -60,6 +65,22 @@ kernel_do_compile() {
fi
}
+INITRAMFS_SYMLINK_NAME ?= "initramfs-${MACHINE}"
+INITRAMFS_IMAGE_TARGET ?= "initramfs-image"
+
+do_builtin_initramfs() {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
+ cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_SYMLINK_NAME}" usr/initramfs_data.cpio.gz
+ oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}"
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-initramfs.bin
+ # Make sure to kill injected initramfs, in case someone will do "-c compile -f"
+ rm usr/initramfs_data.cpio.gz
+}
+addtask builtin_initramfs after do_compile
+do_builtin_initramfs[nostamp] = "1"
+do_builtin_initramfs[depends] = "${INITRAMFS_IMAGE_TARGET}:do_rootfs"
+
kernel_do_stage() {
ASMDIR=`readlink include/asm`
@@ -107,6 +128,10 @@ kernel_do_stage() {
if [ -e arch/${ARCH}/Makefile ]; then
install -d ${STAGING_KERNEL_DIR}/arch/${ARCH}
install -m 0644 arch/${ARCH}/Makefile* ${STAGING_KERNEL_DIR}/arch/${ARCH}
+ # Otherwise check arch/x86/Makefile for i386 and x86_64 on kernels >= 2.6.24
+ elif [ -e arch/x86/Makefile ]; then
+ install -d ${STAGING_KERNEL_DIR}/arch/x86
+ install -m 0644 arch/x86/Makefile* ${STAGING_KERNEL_DIR}/arch/x86
fi
cp -fR include/config* ${STAGING_KERNEL_DIR}/include/
install -m 0644 ${KERNEL_OUTPUT} ${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE}
@@ -180,6 +205,8 @@ FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
FILES_kernel-dev = "/boot/System.map* /boot/config*"
FILES_kernel-vmlinux = "/boot/vmlinux*"
RDEPENDS_kernel = "kernel-base"
+RRECOMMENDS_kernel-module-hostap-cs += '${@base_version_less_or_equal("KERNEL_VERSION", "2.6.17", "", "apm-wifi-suspendfix", d)}'
+RRECOMMENDS_kernel-module-orinoco-cs += '${@base_version_less_or_equal("KERNEL_VERSION", "2.6.17", "", "apm-wifi-suspendfix", d)}'
# Allow machines to override this dependency if kernel image files are
# not wanted in images as standard
RDEPENDS_kernel-base ?= "kernel-image"
diff --git a/classes/native.bbclass b/classes/native.bbclass
index d51c675909..934303cc0c 100644
--- a/classes/native.bbclass
+++ b/classes/native.bbclass
@@ -49,9 +49,9 @@ export STRIP = "${HOST_PREFIX}strip"
# Path prefixes
-base_prefix = "${exec_prefix}"
-prefix = "${STAGING_DIR}"
-exec_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}"
+base_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}"
+prefix = "${base_prefix}"
+exec_prefix = "${base_prefix}"
# Base paths
base_bindir = "${base_prefix}/bin"
diff --git a/classes/nylon-mirrors.bbclass b/classes/nylon-mirrors.bbclass
index 25a8b87d9b..02fddc01ba 100644
--- a/classes/nylon-mirrors.bbclass
+++ b/classes/nylon-mirrors.bbclass
@@ -1,6 +1,6 @@
MIRRORS_append () {
-ftp://.*/.*/ http://meshcube.org/nylon/stable/sources/
-https?://.*/.*/ http://meshcube.org/nylon/stable/sources/
-ftp://.*/.*/ http://meshcube.org/nylon/unstable/sources/
-https?://.*/.*/ http://meshcube.org/nylon/unstable/sources/
+ftp://.*/.* http://meshcube.org/nylon/stable/sources/
+https?://.*/.* http://meshcube.org/nylon/stable/sources/
+ftp://.*/.* http://meshcube.org/nylon/unstable/sources/
+https?://.*/.* http://meshcube.org/nylon/unstable/sources/
} \ No newline at end of file
diff --git a/classes/oplinux-mirrors.bbclass b/classes/oplinux-mirrors.bbclass
index c76e822ce3..59c199485c 100644
--- a/classes/oplinux-mirrors.bbclass
+++ b/classes/oplinux-mirrors.bbclass
@@ -2,13 +2,13 @@
# Released under the MIT license (see packages/COPYING)
MIRRORS_append () {
-ftp://.*/.*/ http://digital-opsis.com/oplinux/stable/sources/
-https?://.*/.*/ http://digital-opsis.com/oplinux/stable/sources/
-ftp://.*/.*/ http://digital-opsis.com/oplinux/unstable/sources/
-https?://.*/.*/ http://digital-opsis.com/oplinux/unstable/sources/
+ftp://.*/.* http://digital-opsis.com/oplinux/stable/sources/
+https?://.*/.* http://digital-opsis.com/oplinux/stable/sources/
+ftp://.*/.* http://digital-opsis.com/oplinux/unstable/sources/
+https?://.*/.* http://digital-opsis.com/oplinux/unstable/sources/
-ftp://.*/.*/ http://digital-opsis.com/oplinux-uclibc/stable/sources/
-https?://.*/.*/ http://digital-opsis.com/oplinux-uclibc/stable/sources/
-ftp://.*/.*/ http://digital-opsis.com/oplinux-uclibc/unstable/sources/
-https?://.*/.*/ http://digital-opsis.com/oplinux-uclibc/unstable/sources/
+ftp://.*/.* http://digital-opsis.com/oplinux-uclibc/stable/sources/
+https?://.*/.* http://digital-opsis.com/oplinux-uclibc/stable/sources/
+ftp://.*/.* http://digital-opsis.com/oplinux-uclibc/unstable/sources/
+https?://.*/.* http://digital-opsis.com/oplinux-uclibc/unstable/sources/
}
diff --git a/classes/package.bbclass b/classes/package.bbclass
index ec8c3d97e2..cb4417fc7f 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -291,76 +291,6 @@ python package_do_split_locales() {
#bb.data.setVar('RDEPENDS_%s' % mainpkg, ' '.join(rdep), d)
}
-def copyfile(src,dest,newmtime=None,sstat=None):
- """
- Copies a file from src to dest, preserving all permissions and
- attributes; mtime will be preserved even when moving across
- filesystems. Returns true on success and false on failure.
- """
- import os, stat, shutil, commands
-
- #print "copyfile("+src+","+dest+","+str(newmtime)+","+str(sstat)+")"
- try:
- if not sstat:
- sstat=os.lstat(src)
- except Exception, e:
- print "copyfile: Stating source file failed...", e
- return False
-
- destexists=1
- try:
- dstat=os.lstat(dest)
- except:
- dstat=os.lstat(os.path.dirname(dest))
- destexists=0
-
- if destexists:
- if stat.S_ISLNK(dstat[stat.ST_MODE]):
- try:
- os.unlink(dest)
- destexists=0
- except Exception, e:
- pass
-
- if stat.S_ISLNK(sstat[stat.ST_MODE]):
- try:
- target=os.readlink(src)
- if destexists and not stat.S_ISDIR(dstat[stat.ST_MODE]):
- os.unlink(dest)
- os.symlink(target,dest)
- #os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID])
- return os.lstat(dest)
- except Exception, e:
- print "copyfile: failed to properly create symlink:", dest, "->", target, e
- return False
-
- if stat.S_ISREG(sstat[stat.ST_MODE]):
- try: # For safety copy then move it over.
- shutil.copyfile(src,dest+"#new")
- os.rename(dest+"#new",dest)
- except Exception, e:
- print 'copyfile: copy', src, '->', dest, 'failed.', e
- return False
- else:
- #we don't yet handle special, so we need to fall back to /bin/mv
- a=commands.getstatusoutput("/bin/cp -f "+"'"+src+"' '"+dest+"'")
- if a[0]!=0:
- print "copyfile: Failed to copy special file:" + src + "' to '" + dest + "'", a
- return False # failure
- try:
- os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID])
- os.chmod(dest, stat.S_IMODE(sstat[stat.ST_MODE])) # Sticky is reset on chown
- except Exception, e:
- print "copyfile: Failed to chown/chmod/unlink", dest, e
- return False
-
- if newmtime:
- os.utime(dest,(newmtime,newmtime))
- else:
- os.utime(dest, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME]))
- newmtime=sstat[stat.ST_MTIME]
- return newmtime
-
python populate_packages () {
import glob, stat, errno, re
@@ -462,7 +392,7 @@ python populate_packages () {
fpath = os.path.join(root,file)
dpath = os.path.dirname(fpath)
bb.mkdirhier(dpath)
- ret = copyfile(file, fpath)
+ ret = bb.copyfile(file, fpath)
if ret is False or ret == 0:
raise bb.build.FuncFailed("File population failed")
del localdata
@@ -578,16 +508,19 @@ python emit_pkgdata() {
os.chdir(root)
g = glob('*')
if g or allow_empty == "1":
- file(bb.data.expand('${PKGDATA_DIR}/runtime/%s.packaged' % pkg, d), 'w').close()
+ packagedfile = bb.data.expand('${PKGDATA_DIR}/runtime/%s.packaged' % pkg, d)
+ file(packagedfile, 'w').close()
}
emit_pkgdata[dirs] = "${PKGDATA_DIR}/runtime"
ldconfig_postinst_fragment() {
if [ x"$D" = "x" ]; then
- ldconfig
+ [ -x /sbin/ldconfig ] && /sbin/ldconfig
fi
}
+SHLIBSDIR = "${STAGING_DIR}/${HOST_SYS}/shlibs"
+
python package_do_shlibs() {
import os, re, os.path
@@ -606,25 +539,14 @@ python package_do_shlibs() {
bb.error("WORKDIR not defined")
return
- staging = bb.data.getVar('STAGING_DIR', d, 1)
- if not staging:
- bb.error("STAGING_DIR not defined")
- return
-
ver = bb.data.getVar('PV', d, 1)
if not ver:
bb.error("PV not defined")
return
- target_sys = bb.data.getVar('TARGET_SYS', d, 1)
- if not target_sys:
- bb.error("TARGET_SYS not defined")
- return
-
pkgdest = bb.data.getVar('PKGDEST', d, 1)
- shlibs_dir = os.path.join(staging, target_sys, "shlibs")
- old_shlibs_dir = os.path.join(staging, "shlibs")
+ shlibs_dir = bb.data.getVar('SHLIBSDIR', d, 1)
bb.mkdirhier(shlibs_dir)
needed = {}
@@ -681,7 +603,7 @@ python package_do_shlibs() {
shlib_provider = {}
list_re = re.compile('^(.*)\.list$')
- for dir in [old_shlibs_dir, shlibs_dir]:
+ for dir in [shlibs_dir]:
if not os.path.exists(dir):
continue
for file in os.listdir(dir):
@@ -751,20 +673,9 @@ python package_do_pkgconfig () {
bb.error("WORKDIR not defined")
return
- staging = bb.data.getVar('STAGING_DIR', d, 1)
- if not staging:
- bb.error("STAGING_DIR not defined")
- return
-
- target_sys = bb.data.getVar('TARGET_SYS', d, 1)
- if not target_sys:
- bb.error("TARGET_SYS not defined")
- return
-
pkgdest = bb.data.getVar('PKGDEST', d, 1)
- shlibs_dir = os.path.join(staging, target_sys, "shlibs")
- old_shlibs_dir = os.path.join(staging, "shlibs")
+ shlibs_dir = bb.data.getVar('SHLIBSDIR', d, 1)
bb.mkdirhier(shlibs_dir)
pc_re = re.compile('(.*)\.pc$')
@@ -814,7 +725,7 @@ python package_do_pkgconfig () {
f.write('%s\n' % p)
f.close()
- for dir in [old_shlibs_dir, shlibs_dir]:
+ for dir in [shlibs_dir]:
if not os.path.exists(dir):
continue
for file in os.listdir(dir):
@@ -882,14 +793,39 @@ python package_depchains() {
postfixes = (bb.data.getVar('DEPCHAIN_POST', d, 1) or '').split()
prefixes = (bb.data.getVar('DEPCHAIN_PRE', d, 1) or '').split()
+ def pkg_adddeprrecs(pkg, base, suffix, getname, depends, d):
+
+ #bb.note('depends for %s is %s' % (base, depends))
+ rreclist = explode_deps(bb.data.getVar('RRECOMMENDS_' + pkg, d, 1) or bb.data.getVar('RRECOMMENDS', d, 1) or "")
+
+ for depend in depends:
+ if depend.find('-native') != -1 or depend.find('-cross') != -1 or depend.startswith('virtual/'):
+ #bb.note("Skipping %s" % depend)
+ continue
+ if depend.endswith('-dev'):
+ depend = depend.replace('-dev', '')
+ if depend.endswith('-dbg'):
+ depend = depend.replace('-dbg', '')
+ pkgname = getname(depend, suffix)
+ #bb.note("Adding %s for %s" % (pkgname, depend))
+ if not pkgname in rreclist:
+ rreclist.append(pkgname)
+
+ #bb.note('setting: RRECOMMENDS_%s=%s' % (pkg, ' '.join(rreclist)))
+ bb.data.setVar('RRECOMMENDS_%s' % pkg, ' '.join(rreclist), d)
+
def pkg_addrrecs(pkg, base, suffix, getname, rdepends, d):
- #bb.note('rdepends for %s is %s' % (base, rdepends))
+ #bb.note('rdepends for %s is %s' % (base, rdepends))
rreclist = explode_deps(bb.data.getVar('RRECOMMENDS_' + pkg, d, 1) or bb.data.getVar('RRECOMMENDS', d, 1) or "")
for depend in rdepends:
+ if depend.endswith('-dev'):
+ depend = depend.replace('-dev', '')
+ if depend.endswith('-dbg'):
+ depend = depend.replace('-dbg', '')
pkgname = getname(depend, suffix)
- if not pkgname in rreclist and packaged(pkgname, d):
+ if not pkgname in rreclist:
rreclist.append(pkgname)
#bb.note('setting: RRECOMMENDS_%s=%s' % (pkg, ' '.join(rreclist)))
@@ -900,6 +836,10 @@ python package_depchains() {
if dep not in list:
list.append(dep)
+ depends = []
+ for dep in explode_deps(bb.data.getVar('DEPENDS', d, 1) or ""):
+ add_dep(depends, dep)
+
rdepends = []
for dep in explode_deps(bb.data.getVar('RDEPENDS', d, 1) or ""):
add_dep(rdepends, dep)
@@ -932,6 +872,8 @@ python package_depchains() {
for suffix in pkgs:
for pkg in pkgs[suffix]:
(base, func) = pkgs[suffix][pkg]
+ if suffix == "-dev":
+ pkg_adddeprrecs(pkg, base, suffix, func, depends, d)
if len(pkgs[suffix]) == 1:
pkg_addrrecs(pkg, base, suffix, func, rdepends, d)
else:
diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass
index b85ffe254f..1a3622c3bb 100644
--- a/classes/package_deb.bbclass
+++ b/classes/package_deb.bbclass
@@ -54,7 +54,7 @@ python do_package_deb_install () {
# env of the fork+execve'd processs
# Set up environment
- apt_config = os.getenv('APT_CONFIG')
+ apt_config_backup = os.getenv('APT_CONFIG')
os.putenv('APT_CONFIG', os.path.join(stagingdir, 'etc', 'apt', 'apt.conf'))
path = os.getenv('PATH')
os.putenv('PATH', '%s:%s' % (stagingbindir, os.getenv('PATH')))
@@ -64,12 +64,12 @@ python do_package_deb_install () {
commands.getstatusoutput('apt-get install -y %s' % pkgfn)
# revert environment
- os.putenv('APT_CONFIG', apt_config)
+ os.putenv('APT_CONFIG', apt_config_backup)
os.putenv('PATH', path)
}
python do_package_deb () {
- import sys, re, fcntl, copy
+ import sys, re, copy
workdir = bb.data.getVar('WORKDIR', d, 1)
if not workdir:
@@ -102,20 +102,12 @@ python do_package_deb () {
bb.debug(1, "No packages; nothing to do")
return
- def lockfile(name):
- lf = open(name, "a+")
- fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
- return lf
-
- def unlockfile(lf):
- fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
- lf.close
-
for pkg in packages.split():
localdata = bb.data.createCopy(d)
- root = "%s/install/%s" % (workdir, pkg)
+ pkgdest = bb.data.getVar('PKGDEST', d, 1)
+ root = "%s/%s" % (pkgdest, pkg)
- lf = lockfile(root + ".lock")
+ lf = bb.utils.lockfile(root + ".lock")
bb.data.setVar('ROOT', '', localdata)
bb.data.setVar('ROOT_%s' % pkg, root, localdata)
@@ -147,7 +139,7 @@ python do_package_deb () {
if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1":
from bb import note
note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1)))
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
continue
controldir = os.path.join(root, 'DEBIAN')
@@ -158,6 +150,7 @@ python do_package_deb () {
# import codecs
# ctrlfile = codecs.open("someFile", "w", "utf-8")
except OSError:
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("unable to open control file for writing.")
fields = []
@@ -196,6 +189,7 @@ python do_package_deb () {
ctrlfile.write(unicode(c % tuple(pullData(fs, localdata))))
except KeyError:
(type, value, traceback) = sys.exc_info()
+ bb.utils.unlockfile(lf)
ctrlfile.close()
raise bb.build.FuncFailed("Missing field for deb generation: %s" % value)
# more fields
@@ -231,6 +225,7 @@ python do_package_deb () {
try:
scriptfile = file(os.path.join(controldir, script), 'w')
except OSError:
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
scriptfile.write("#!/bin/sh\n")
scriptfile.write(scriptvar)
@@ -242,6 +237,7 @@ python do_package_deb () {
try:
conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
except OSError:
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("unable to open conffiles for writing.")
for f in conffiles_str.split():
conffiles.write('%s\n' % f)
@@ -250,6 +246,7 @@ python do_package_deb () {
os.chdir(basedir)
ret = os.system("PATH=\"%s\" fakeroot dpkg-deb -b %s %s" % (bb.data.getVar("PATH", localdata, 1), root, pkgoutdir))
if ret != 0:
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("dpkg-deb execution failed")
for script in ["preinst", "postinst", "prerm", "postrm", "control" ]:
@@ -263,13 +260,16 @@ python do_package_deb () {
except OSError:
pass
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
}
python () {
import bb
if bb.data.getVar('PACKAGES', d, True) != '':
- bb.data.setVarFlag('do_package_write_deb', 'depends', 'dpkg-native:do_populate_staging fakeroot-native:do_populate_staging', d)
+ deps = (bb.data.getVarFlag('do_package_write_deb', 'depends', d) or "").split()
+ deps.append('dpkg-native:do_populate_staging')
+ deps.append('fakeroot-native:do_populate_staging')
+ bb.data.setVarFlag('do_package_write_deb', 'depends', " ".join(deps), d)
}
python do_package_write_deb () {
diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass
index 087bbcbfb4..de7f0fe0c4 100644
--- a/classes/package_ipk.bbclass
+++ b/classes/package_ipk.bbclass
@@ -114,7 +114,7 @@ package_generate_ipkg_conf () {
}
python do_package_ipk () {
- import sys, re, copy, fcntl
+ import sys, re, copy
workdir = bb.data.getVar('WORKDIR', d, 1)
if not workdir:
@@ -147,22 +147,12 @@ python do_package_ipk () {
bb.debug(1, "No packages; nothing to do")
return
- def lockfile(name):
- lf = open(name, "a+")
- fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
- return lf
-
- def unlockfile(lf):
- fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
- lf.close
-
-
for pkg in packages.split():
localdata = bb.data.createCopy(d)
pkgdest = bb.data.getVar('PKGDEST', d, 1)
root = "%s/%s" % (pkgdest, pkg)
- lf = lockfile(root + ".lock")
+ lf = bb.utils.lockfile(root + ".lock")
bb.data.setVar('ROOT', '', localdata)
bb.data.setVar('ROOT_%s' % pkg, root, localdata)
@@ -193,7 +183,7 @@ python do_package_ipk () {
if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1":
from bb import note
note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1)))
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
continue
controldir = os.path.join(root, 'CONTROL')
@@ -201,7 +191,7 @@ python do_package_ipk () {
try:
ctrlfile = file(os.path.join(controldir, 'control'), 'w')
except OSError:
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("unable to open control file for writing.")
fields = []
@@ -235,7 +225,7 @@ python do_package_ipk () {
except KeyError:
(type, value, traceback) = sys.exc_info()
ctrlfile.close()
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("Missing field for ipk generation: %s" % value)
# more fields
@@ -272,7 +262,7 @@ python do_package_ipk () {
try:
scriptfile = file(os.path.join(controldir, script), 'w')
except OSError:
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
scriptfile.write(scriptvar)
scriptfile.close()
@@ -283,7 +273,7 @@ python do_package_ipk () {
try:
conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
except OSError:
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("unable to open conffiles for writing.")
for f in conffiles_str.split():
conffiles.write('%s\n' % f)
@@ -293,7 +283,7 @@ python do_package_ipk () {
ret = os.system("PATH=\"%s\" %s %s %s" % (bb.data.getVar("PATH", localdata, 1),
bb.data.getVar("IPKGBUILDCMD",d,1), pkg, pkgoutdir))
if ret != 0:
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("ipkg-build execution failed")
for script in ["preinst", "postinst", "prerm", "postrm", "control" ]:
@@ -306,7 +296,7 @@ python do_package_ipk () {
os.rmdir(controldir)
except OSError:
pass
- unlockfile(lf)
+ bb.utils.unlockfile(lf)
}
python () {
@@ -323,5 +313,4 @@ python do_package_write_ipk () {
bb.build.exec_func("do_package_ipk", d)
}
do_package_write_ipk[dirs] = "${D}"
-do_package_write_ipk[depends] = "ipkg-utils-native:do_populate_staging"
addtask package_write_ipk before do_package_write after do_package
diff --git a/classes/package_rpm.bbclass b/classes/package_rpm.bbclass
index 7fc5e8ea96..6713f8fcad 100644
--- a/classes/package_rpm.bbclass
+++ b/classes/package_rpm.bbclass
@@ -134,7 +134,10 @@ python do_package_rpm () {
python () {
import bb
if bb.data.getVar('PACKAGES', d, True) != '':
- bb.data.setVarFlag('do_package_write_rpm', 'depends', 'rpm-native:do_populate_staging', d)
+ deps = (bb.data.getVarFlag('do_package_write_rpm', 'depends', d) or "").split()
+ deps.append('rpm-native:do_populate_staging')
+ deps.append('fakeroot-native:do_populate_staging')
+ bb.data.setVarFlag('do_package_write_rpm', 'depends', " ".join(deps), d)
}
diff --git a/classes/package_tar.bbclass b/classes/package_tar.bbclass
index cb4c42b261..876cec6cfe 100644
--- a/classes/package_tar.bbclass
+++ b/classes/package_tar.bbclass
@@ -83,15 +83,12 @@ python do_package_tar () {
bb.mkdirhier(pkgoutdir)
bb.build.exec_func('package_tar_fn', localdata)
tarfn = bb.data.getVar('PKGFN', localdata, 1)
-# if os.path.exists(tarfn):
-# del localdata
-# continue
os.chdir(root)
from glob import glob
if not glob('*'):
bb.note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1)))
continue
- ret = os.system("tar -czvf %s %s" % (tarfn, '.'))
+ ret = os.system("tar -czf %s %s" % (tarfn, '.'))
if ret != 0:
bb.error("Creation of tar %s failed." % tarfn)
}
@@ -99,7 +96,10 @@ python do_package_tar () {
python () {
import bb
if bb.data.getVar('PACKAGES', d, True) != '':
- bb.data.setVarFlag('do_package_write_tar', 'depends', 'tar-native:do_populate_staging', d)
+ deps = (bb.data.getVarFlag('do_package_write_tar', 'depends', d) or "").split()
+ deps.append('tar-native:do_populate_staging')
+ deps.append('fakeroot-native:do_populate_staging')
+ bb.data.setVarFlag('do_package_write_tar', 'depends', " ".join(deps), d)
}
diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass
index 4b4ebb58bf..29ce72d65c 100644
--- a/classes/packaged-staging.bbclass
+++ b/classes/packaged-staging.bbclass
@@ -1,228 +1,229 @@
#
-# Populated ${STAGING} using packages
+# Populate builds using prebuilt packages where possible to speed up builds
+# and allow staging to be reconstructed.
#
# To use it add that line to conf/local.conf:
#
-# INHERIT += "packaged-staging"
-#
-# You also need ipkg-cl and ipkg-make-index installed on your host
-# put ipkg-build from org.openembedded.packaged-staging/contrib/ in your $PATH
-
-# BUGS:
-# * does not distinguish between -native, -cross and other packages
-
-# TODO:
-# * also build a feed for native and cross packages
-# * make package detection a bit smarter (search for compatible archs)
-# * make do_clean clean staging as well
-
-# Summary:
-# This class will have two modes of operation:
-# PSTAGE_MODE = 'repopulate': repopulated staging from scratch for each packages
-# PSTAGE_MODE = 'append': append each package to staging (current behaviour)
-
-inherit package
+# INHERIT = "packaged-staging"
+
+python () {
+ import bb
+ if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('image', d) and not bb.data.inherits_class('cross', d) and not bb.data.inherits_class('sdk', d):
+ deps = bb.data.getVarFlag('do_populate_staging', 'depends', d) or ""
+ deps += " stagemanager-native:do_populate_staging"
+ bb.data.setVarFlag('do_populate_staging', 'depends', deps, d)
+
+ deps = bb.data.getVarFlag('do_prepackaged_stage', 'depends', d) or ""
+ deps += " ipkg-native:do_populate_staging ipkg-utils-native:do_populate_staging"
+ bb.data.setVarFlag('do_prepackaged_stage', 'depends', deps, d)
+ else:
+ bb.data.setVar("PSTAGING_DISABLED", "1", d)
+}
-DEPENDS = "stagemanager-native"
+export PSTAGING_DISABLED = "0"
DEPLOY_DIR_PSTAGE = "${DEPLOY_DIR}/pstage"
PSTAGE_BUILD_CMD = "${IPKGBUILDCMD}"
-PSTAGE_INSTALL_CMD = "ipkg-cl install -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg.conf -o "
-PSTAGE_UPDATE_CMD = "ipkg-cl update -f ${DEPLOY_DIR_PSTAGE}/ipkg.conf -o "
-PSTAGE_LIST_CMD = "ipkg-cl list_installed -f ${DEPLOY_DIR_PSTAGE}/ipkg.conf -o "
-PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${PACKAGE_ARCH}.ipk"
-PCROSS_PKGNAME = "cross-${PN}_${PV}-${PR}_${BUILD_ARCH}.ipk"
-
-SPAWNFILE = "${STAGING_DIR}/pkgmaps/${P}-${PR}.spawn"
-SPAWNIPK = "${spawn}"
-
-PSTAGE_TMPDIR_STAGE = "${TMPDIR}/tmp-staging"
-PSTAGE_TMPDIR_CROSS = "${TMPDIR}/tmp-cross"
-
-STAGING_BASEDIR = "${STAGING_LIBDIR}/.."
-
-PACKAGEFUNCS += "do_write_ipk_list"
-
-python do_write_ipk_list () {
- import os, sys
- ipkdir = bb.data.getVar('DEPLOY_DIR_IPK', d, 1)
- stagingdir = bb.data.getVar('STAGING_DIR', d, 1)
- tmpdir = bb.data.getVar('TMPDIR', d, 1)
- p = bb.data.getVar('P', d, 1)
- pr = bb.data.getVar('PR', d, 1)
-
- packages = bb.data.getVar('PACKAGES', d, 1)
- if not packages:
- bb.debug(1, "PACKAGES not defined, nothing to package")
- return
-
- if packages == []:
- bb.debug(1, "No packages; nothing to do")
- return
-
- # Generate ipk.conf if it or the stamp doesnt exist
- listfile = os.path.join(stagingdir,"pkgmaps","%s-%s.spawn" % ( p , pr ))
- os.system('mkdir -p ' + stagingdir + '/pkgmaps')
- if not os.access(listfile, os.R_OK):
- os.system('rm -f ' + listfile)
- f = open(listfile,"w")
- for spawn in packages.split():
- #check if the packagename has changed due to debian shlib renaming
- localdata = bb.data.createCopy(d)
- pkgname = bb.data.getVar('PKG_%s' % spawn, localdata, 1)
- if not pkgname:
- pkgname = spawn
- f.write("%s\n" % pkgname)
- f.close()
-}
+PSTAGE_INSTALL_CMD = "ipkg-cl install -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_UPDATE_CMD = "ipkg-cl update -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_REMOVE_CMD = "ipkg-cl remove -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_LIST_CMD = "ipkg-cl list_installed -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
+PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${MULTIMACH_ARCH}.ipk"
+PSTAGE_TMPDIR_STAGE = "${WORKDIR}/staging-pkg"
do_clean_append() {
- """clear the build and temp directories"""
+ """
+ Clear the build and temp directories
+ """
+ bb.note("Uninstalling package from staging...")
+ path = bb.data.getVar("PATH", d, 1)
+ removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1)
+ removepkg = bb.data.expand("staging-${PN}", d)
+ ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg))
+ if ret != 0:
+ bb.note("Failure removing staging package")
+
stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d)
- if stagepkg == '//': raise bb.build.FuncFailed("wrong DATADIR")
- bb.note("removing " + stagepkg)
- os.system('rm -rf ' + stagepkg)
+ bb.note("Removing staging package %s" % stagepkg)
+ #os.system('rm -rf ' + stagepkg)
}
-
-do_stage_prepend() {
-
- stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/staging-stamp-cache -u
-
- stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/cross-stamp-cache -u
-
- if [ ! -e ${STAGING_BASEDIR} ]; then
- mkdir -p ${STAGING_BASEDIR}
- fi
-
- if [ ! -e ${DEPLOY_DIR_PSTAGE} ]; then
- mkdir -p ${DEPLOY_DIR_PSTAGE}
- fi
-
- if [ -e ${STAGING_BASEDIR}/usr ]; then
- oenote "${STAGING_BASEDIR}/usr already present, leaving it alone"
- else
- oenote "${STAGING_BASEDIR}/usr not present, symlinking it"
- ln -s ${STAGING_BASEDIR}/ ${STAGING_BASEDIR}/usr
- fi
-
+staging_helper () {
#assemble appropriate ipkg.conf
- if [ -e ${DEPLOY_DIR_PSTAGE}/ipkg.conf ]; then
- rm ${DEPLOY_DIR_PSTAGE}/ipkg.conf
+ conffile=${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf
+ mkdir -p ${DEPLOY_DIR_PSTAGE}/pstaging_lists
+ if [ ! -e $conffile ]; then
+ ipkgarchs="${BUILD_ARCH} all any noarch ${TARGET_ARCH} ${PACKAGE_ARCHS} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
+ priority=1
+ for arch in $ipkgarchs; do
+ echo "arch $arch $priority" >> $conffile
+ priority=$(expr $priority + 5)
+ done
+ echo "src oe-staging file:${DEPLOY_DIR_PSTAGE}" >> $conffile
+
+ OLD_PWD=`pwd`
+ cd ${DEPLOY_DIR_PSTAGE}
+ ipkg-make-index -p Packages .
+ cd ${OLD_PWD}
+
+ ${PSTAGE_UPDATE_CMD}
fi
+}
- ipkgarchs="${BUILD_ARCH} all any noarch ${TARGET_ARCH} ${PACKAGE_ARCHS} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
- priority=1
- for arch in $ipkgarchs; do
- echo "arch $arch $priority" >> ${DEPLOY_DIR_PSTAGE}/ipkg.conf
- priority=$(expr $priority + 5)
- done
- echo "src oe file:${DEPLOY_DIR_IPK}" >> ${DEPLOY_DIR_PSTAGE}/ipkg.conf
- export OLD_PWD=`pwd`
- cd ${DEPLOY_DIR_IPK} && rm *${BUILD_ARCH}.ipk -f ; ipkg-make-index -p Packages . ; cd ${OLD_PWD}
- ${PSTAGE_UPDATE_CMD} ${STAGING_BASEDIR}
-
- #check for generated packages
- if [ -e ${SPAWNFILE} ]; then
- oenote "List of spawned packages found: ${P}.spawn"
- for spawn in `cat ${SPAWNFILE} | grep -v locale | grep -v dbg | grep -v gconv | grep -v charmap` ; do \
- if [ -e ${DEPLOY_DIR_IPK}/${spawn}_* ]; then
- ${PSTAGE_INSTALL_CMD} ${STAGING_BASEDIR} ${spawn}
- # clean up .la files to avoid having references to the builddirs in the binaries
- for lafile in ${STAGING_LIBDIR}/*.la ; do \
- sed -i s:installed=yes:installed=no:g ${lafile} || true
- done
-
- #fix up linker script to poin to staging
- if [ -e ${STAGING_LIBDIR}/libc.so ]; then
- sed -i s:\ /lib:\ ${STAGING_LIBDIR}:g ${STAGING_LIBDIR}/libc.so
- sed -i s:\ /usr/lib:\ ${STAGING_LIBDIR}:g ${STAGING_LIBDIR}/libc.so
- fi
- else
- oenote "${spawn} not found, probably empty package"
- fi
- done
- exit 0
- else
- oenote "Spawn file not found!"
- fi
+python do_prepackaged_stage () {
+ import os
+
+ if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1":
+ bb.build.make_stamp("do_prepackaged_stage", d)
+ return
+
+ bb.note("Uninstalling any existing package from staging...")
+ path = bb.data.getVar("PATH", d, 1)
+ removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1)
+ removepkg = bb.data.expand("staging-${PN}", d)
+ lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
+ ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg))
+ bb.utils.unlockfile(lf)
+ if ret != 0:
+ bb.note("Failure attempting to remove staging package")
+
+ stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d)
+
+ if os.path.exists(stagepkg):
+ bb.note("Following speedup\n")
+ path = bb.data.getVar("PATH", d, 1)
+ installcmd = bb.data.getVar("PSTAGE_INSTALL_CMD", d, 1)
+
+ bb.build.exec_func("staging_helper", d)
+
+ bb.debug(1, "Staging stuff already packaged, using that instead")
+ lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
+ ret = os.system("PATH=\"%s\" %s %s" % (path, installcmd, stagepkg))
+ bb.utils.unlockfile(lf)
+ if ret != 0:
+ bb.note("Failure installing prestage package")
+
+ bb.build.make_stamp("do_prepackaged_stage", d)
+ bb.build.make_stamp("do_fetch", d)
+ bb.build.make_stamp("do_unpack", d)
+ bb.build.make_stamp("do_munge", d)
+ bb.build.make_stamp("do_patch", d)
+ bb.build.make_stamp("do_configure", d)
+ bb.build.make_stamp("do_qa_configure", d)
+ bb.build.make_stamp("do_rig_locales", d)
+ bb.build.make_stamp("do_compile", d)
+ bb.build.make_stamp("do_install", d)
+ bb.build.make_stamp("do_deploy", d)
+ bb.build.make_stamp("do_package", d)
+ bb.build.make_stamp("do_populate_staging", d)
+ bb.build.make_stamp("do_package_write_deb", d)
+ bb.build.make_stamp("do_package_write_ipk", d)
+ bb.build.make_stamp("do_package_write", d)
+ bb.build.make_stamp("do_package_stage", d)
+ bb.build.make_stamp("do_qa_staging", d)
+
+ else:
+ bb.build.make_stamp("do_prepackaged_stage", d)
+}
+do_prepackaged_stage[cleandirs] = "${PSTAGE_TMPDIR_STAGE}"
+do_prepackaged_stage[selfstamp] = "1"
+addtask prepackaged_stage before do_fetch
- if [ -e ${DEPLOY_DIR_PSTAGE}/${PCROSS_PKGNAME} ]; then
- oenote "Cross stuff already packaged, using that instead"
- ${PSTAGE_INSTALL_CMD} ${CROSS_DIR} ${DEPLOY_DIR_PSTAGE}/${PCROSS_PKGNAME}
- fi
+populate_staging_preamble () {
+ if [ "$PSTAGING_DISABLED" != "1" ]; then
+ #mkdir -p ${DEPLOY_DIR_PSTAGE}
- if [ -e ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME} ]; then
- oenote "Staging stuff already packaged, using that instead"
- ${PSTAGE_INSTALL_CMD} ${STAGING_DIR} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}
- exit 0
+ stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u
+ stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u
fi
-
-
- mkdir -p ${STAGING_BINDIR}
- mkdir -p ${STAGING_LIBDIR}
- mkdir -p ${STAGING_INCDIR}
- mkdir -p ${STAGING_DATADIR}/aclocal
}
-do_stage_append() {
+populate_staging_postamble () {
+ if [ "$PSTAGING_DISABLED" != "1" ]; then
+ # list the packages currently installed in staging
+ ${PSTAGE_LIST_CMD} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-list
- mkdir -p ${DEPLOY_DIR_PSTAGE}
+ set +e
+ stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u -d ${PSTAGE_TMPDIR_STAGE}/staging
+ stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u -d ${PSTAGE_TMPDIR_STAGE}/cross
+ set -e
+ fi
+}
- # list the packages currently installed in staging
- ${PSTAGE_LIST_CMD} ${STAGING_DIR} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-staging_list
- ${PSTAGE_LIST_CMD} ${CROSS_DIR} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-cross_list
+do_populate_staging[lockfiles] = "${STAGING_DIR}/staging.lock"
+do_populate_staging[dirs] =+ "${DEPLOY_DIR_PSTAGE}"
+python do_populate_staging_prepend() {
+ bb.build.exec_func("populate_staging_preamble", d)
+}
- set +e
- rm -rf ${PSTAGE_TMPDIR_STAGE}
- stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/staging-stamp-cache -u -d ${PSTAGE_TMPDIR_STAGE}
- rc=$?
- set -e
+python do_populate_staging_append() {
+ bb.build.exec_func("populate_staging_postamble", d)
+}
- if [ $rc == 5 ]; then
- #make a package for staging
- mkdir -p ${PSTAGE_TMPDIR_STAGE}/CONTROL
+staging_packager () {
- echo "Package: staging-${PN}" > ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Architecture: ${PACKAGE_ARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ mkdir -p ${PSTAGE_TMPDIR_STAGE}/CONTROL
- ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE}
+ echo "Package: staging-${PN}" > ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Architecture: ${MULTIMACH_ARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
+ echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- ${PSTAGE_INSTALL_CMD} ${STAGING_DIR} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}
- fi
+ ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE}
+ ${PSTAGE_INSTALL_CMD} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}
+}
- set +e
- rm -rf ${PSTAGE_TMPDIR_CROSS}
- stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/cross-stamp-cache -u -d ${PSTAGE_TMPDIR_CROSS}
- rc=$?
- set -e
-
- if [ $rc == 5 ]; then
-
- #make a package for cross
- mkdir -p ${PSTAGE_TMPDIR_CROSS}/CONTROL
-
- echo "Package: cross-${PN}" > ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
- echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
- echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
- echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
- echo "Priority: Optional" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
- echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
- echo "Architecture: ${BUILD_ARCH}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
- echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control
-
- ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_CROSS} ${DEPLOY_DIR_PSTAGE}
-
- ${PSTAGE_INSTALL_CMD} ${CROSS_DIR} ${DEPLOY_DIR_PSTAGE}/${PCROSS_PKGNAME}
- fi
+python do_package_stage () {
+ if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1":
+ return
+
+ bb.build.exec_func("read_subpackage_metadata", d)
+ packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
+ if len(packages) > 0:
+ stagepath = bb.data.getVar("PSTAGE_TMPDIR_STAGE", d, 1)
+ if bb.data.inherits_class('package_ipk', d):
+ ipkpath = os.path.join(stagepath, "deploy", "ipk")
+ bb.mkdirhier(ipkpath)
+ if bb.data.inherits_class('package_deb', d):
+ debpath = os.path.join(stagepath, "deploy", "deb")
+ bb.mkdirhier(debpath)
+
+ for pkg in packages:
+ pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1)
+ if not pkgname:
+ pkgname = pkg
+ arch = bb.data.getVar('PACKAGE_ARCH_%s' % pkg, d, 1)
+ if not arch:
+ arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
+ if not packaged(pkg, d):
+ continue
+ if bb.data.inherits_class('package_ipk', d):
+ srcname = bb.data.expand(pkgname + "_${PV}-${PR}_" + arch + ".ipk", d)
+ srcfile = bb.data.expand("${DEPLOY_DIR_IPK}/" + arch + "/" + srcname, d)
+ if not os.path.exists(srcfile):
+ bb.fatal("Package %s does not exist yet it should" % srcfile)
+ bb.copyfile(srcfile, ipkpath + "/" + srcname)
+ if bb.data.inherits_class('package_deb', d):
+ if arch == 'all':
+ srcname = bb.data.expand(pkgname + "_${PV}-${PR}_all.deb", d)
+ else:
+ srcname = bb.data.expand(pkgname + "_${PV}-${PR}_${DPKG_ARCH}.deb", d)
+ srcfile = bb.data.expand("${DEPLOY_DIR_DEB}/" + arch + "/" + srcname, d)
+ if not os.path.exists(srcfile):
+ bb.fatal("Package %s does not exist yet it should" % srcfile)
+ bb.copyfile(srcfile, debpath + "/" + srcname)
+ bb.build.exec_func("staging_helper", d)
+ lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
+ bb.build.exec_func("staging_packager", d)
+ bb.utils.unlockfile(lf)
}
+addtask package_stage after do_package_write_ipk do_package_write_deb do_package_write do_populate_staging before do_build
+
diff --git a/classes/packaged-staging2.bbclass b/classes/packaged-staging2.bbclass
deleted file mode 100644
index 29ce72d65c..0000000000
--- a/classes/packaged-staging2.bbclass
+++ /dev/null
@@ -1,229 +0,0 @@
-#
-# Populate builds using prebuilt packages where possible to speed up builds
-# and allow staging to be reconstructed.
-#
-# To use it add that line to conf/local.conf:
-#
-# INHERIT = "packaged-staging"
-
-python () {
- import bb
- if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('image', d) and not bb.data.inherits_class('cross', d) and not bb.data.inherits_class('sdk', d):
- deps = bb.data.getVarFlag('do_populate_staging', 'depends', d) or ""
- deps += " stagemanager-native:do_populate_staging"
- bb.data.setVarFlag('do_populate_staging', 'depends', deps, d)
-
- deps = bb.data.getVarFlag('do_prepackaged_stage', 'depends', d) or ""
- deps += " ipkg-native:do_populate_staging ipkg-utils-native:do_populate_staging"
- bb.data.setVarFlag('do_prepackaged_stage', 'depends', deps, d)
- else:
- bb.data.setVar("PSTAGING_DISABLED", "1", d)
-}
-
-export PSTAGING_DISABLED = "0"
-
-DEPLOY_DIR_PSTAGE = "${DEPLOY_DIR}/pstage"
-
-PSTAGE_BUILD_CMD = "${IPKGBUILDCMD}"
-PSTAGE_INSTALL_CMD = "ipkg-cl install -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
-PSTAGE_UPDATE_CMD = "ipkg-cl update -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
-PSTAGE_REMOVE_CMD = "ipkg-cl remove -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
-PSTAGE_LIST_CMD = "ipkg-cl list_installed -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}"
-PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${MULTIMACH_ARCH}.ipk"
-
-PSTAGE_TMPDIR_STAGE = "${WORKDIR}/staging-pkg"
-
-do_clean_append() {
- """
- Clear the build and temp directories
- """
- bb.note("Uninstalling package from staging...")
- path = bb.data.getVar("PATH", d, 1)
- removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1)
- removepkg = bb.data.expand("staging-${PN}", d)
- ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg))
- if ret != 0:
- bb.note("Failure removing staging package")
-
- stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d)
- bb.note("Removing staging package %s" % stagepkg)
- #os.system('rm -rf ' + stagepkg)
-}
-
-staging_helper () {
- #assemble appropriate ipkg.conf
- conffile=${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf
- mkdir -p ${DEPLOY_DIR_PSTAGE}/pstaging_lists
- if [ ! -e $conffile ]; then
- ipkgarchs="${BUILD_ARCH} all any noarch ${TARGET_ARCH} ${PACKAGE_ARCHS} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
- priority=1
- for arch in $ipkgarchs; do
- echo "arch $arch $priority" >> $conffile
- priority=$(expr $priority + 5)
- done
- echo "src oe-staging file:${DEPLOY_DIR_PSTAGE}" >> $conffile
-
- OLD_PWD=`pwd`
- cd ${DEPLOY_DIR_PSTAGE}
- ipkg-make-index -p Packages .
- cd ${OLD_PWD}
-
- ${PSTAGE_UPDATE_CMD}
- fi
-}
-
-python do_prepackaged_stage () {
- import os
-
- if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1":
- bb.build.make_stamp("do_prepackaged_stage", d)
- return
-
- bb.note("Uninstalling any existing package from staging...")
- path = bb.data.getVar("PATH", d, 1)
- removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1)
- removepkg = bb.data.expand("staging-${PN}", d)
- lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
- ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg))
- bb.utils.unlockfile(lf)
- if ret != 0:
- bb.note("Failure attempting to remove staging package")
-
- stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d)
-
- if os.path.exists(stagepkg):
- bb.note("Following speedup\n")
- path = bb.data.getVar("PATH", d, 1)
- installcmd = bb.data.getVar("PSTAGE_INSTALL_CMD", d, 1)
-
- bb.build.exec_func("staging_helper", d)
-
- bb.debug(1, "Staging stuff already packaged, using that instead")
- lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
- ret = os.system("PATH=\"%s\" %s %s" % (path, installcmd, stagepkg))
- bb.utils.unlockfile(lf)
- if ret != 0:
- bb.note("Failure installing prestage package")
-
- bb.build.make_stamp("do_prepackaged_stage", d)
- bb.build.make_stamp("do_fetch", d)
- bb.build.make_stamp("do_unpack", d)
- bb.build.make_stamp("do_munge", d)
- bb.build.make_stamp("do_patch", d)
- bb.build.make_stamp("do_configure", d)
- bb.build.make_stamp("do_qa_configure", d)
- bb.build.make_stamp("do_rig_locales", d)
- bb.build.make_stamp("do_compile", d)
- bb.build.make_stamp("do_install", d)
- bb.build.make_stamp("do_deploy", d)
- bb.build.make_stamp("do_package", d)
- bb.build.make_stamp("do_populate_staging", d)
- bb.build.make_stamp("do_package_write_deb", d)
- bb.build.make_stamp("do_package_write_ipk", d)
- bb.build.make_stamp("do_package_write", d)
- bb.build.make_stamp("do_package_stage", d)
- bb.build.make_stamp("do_qa_staging", d)
-
- else:
- bb.build.make_stamp("do_prepackaged_stage", d)
-}
-do_prepackaged_stage[cleandirs] = "${PSTAGE_TMPDIR_STAGE}"
-do_prepackaged_stage[selfstamp] = "1"
-addtask prepackaged_stage before do_fetch
-
-populate_staging_preamble () {
- if [ "$PSTAGING_DISABLED" != "1" ]; then
- #mkdir -p ${DEPLOY_DIR_PSTAGE}
-
- stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u
- stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u
- fi
-}
-
-populate_staging_postamble () {
- if [ "$PSTAGING_DISABLED" != "1" ]; then
- # list the packages currently installed in staging
- ${PSTAGE_LIST_CMD} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-list
-
- set +e
- stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u -d ${PSTAGE_TMPDIR_STAGE}/staging
- stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u -d ${PSTAGE_TMPDIR_STAGE}/cross
- set -e
- fi
-}
-
-do_populate_staging[lockfiles] = "${STAGING_DIR}/staging.lock"
-do_populate_staging[dirs] =+ "${DEPLOY_DIR_PSTAGE}"
-python do_populate_staging_prepend() {
- bb.build.exec_func("populate_staging_preamble", d)
-}
-
-python do_populate_staging_append() {
- bb.build.exec_func("populate_staging_postamble", d)
-}
-
-
-staging_packager () {
-
- mkdir -p ${PSTAGE_TMPDIR_STAGE}/CONTROL
-
- echo "Package: staging-${PN}" > ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Architecture: ${MULTIMACH_ARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
- echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control
-
- ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE}
- ${PSTAGE_INSTALL_CMD} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}
-}
-
-python do_package_stage () {
- if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1":
- return
-
- bb.build.exec_func("read_subpackage_metadata", d)
- packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
- if len(packages) > 0:
- stagepath = bb.data.getVar("PSTAGE_TMPDIR_STAGE", d, 1)
- if bb.data.inherits_class('package_ipk', d):
- ipkpath = os.path.join(stagepath, "deploy", "ipk")
- bb.mkdirhier(ipkpath)
- if bb.data.inherits_class('package_deb', d):
- debpath = os.path.join(stagepath, "deploy", "deb")
- bb.mkdirhier(debpath)
-
- for pkg in packages:
- pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1)
- if not pkgname:
- pkgname = pkg
- arch = bb.data.getVar('PACKAGE_ARCH_%s' % pkg, d, 1)
- if not arch:
- arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
- if not packaged(pkg, d):
- continue
- if bb.data.inherits_class('package_ipk', d):
- srcname = bb.data.expand(pkgname + "_${PV}-${PR}_" + arch + ".ipk", d)
- srcfile = bb.data.expand("${DEPLOY_DIR_IPK}/" + arch + "/" + srcname, d)
- if not os.path.exists(srcfile):
- bb.fatal("Package %s does not exist yet it should" % srcfile)
- bb.copyfile(srcfile, ipkpath + "/" + srcname)
- if bb.data.inherits_class('package_deb', d):
- if arch == 'all':
- srcname = bb.data.expand(pkgname + "_${PV}-${PR}_all.deb", d)
- else:
- srcname = bb.data.expand(pkgname + "_${PV}-${PR}_${DPKG_ARCH}.deb", d)
- srcfile = bb.data.expand("${DEPLOY_DIR_DEB}/" + arch + "/" + srcname, d)
- if not os.path.exists(srcfile):
- bb.fatal("Package %s does not exist yet it should" % srcfile)
- bb.copyfile(srcfile, debpath + "/" + srcname)
- bb.build.exec_func("staging_helper", d)
- lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d))
- bb.build.exec_func("staging_packager", d)
- bb.utils.unlockfile(lf)
-}
-
-addtask package_stage after do_package_write_ipk do_package_write_deb do_package_write do_populate_staging before do_build
-
diff --git a/classes/patch.bbclass b/classes/patch.bbclass
index 0cc202820f..6f83d9c88b 100644
--- a/classes/patch.bbclass
+++ b/classes/patch.bbclass
@@ -526,7 +526,7 @@ python patch_do_patch() {
bb.note("Patch '%s' applies to earlier revisions" % pname)
continue
- bb.note("Applying patch '%s'" % pname)
+ bb.note("Applying patch '%s' (%s)" % (pname, unpacked))
try:
patchset.Import({"file":unpacked, "remote":url, "strippath": pnum}, True)
except:
diff --git a/classes/qpf.bbclass b/classes/qpf.bbclass
deleted file mode 100644
index 67761bd4be..0000000000
--- a/classes/qpf.bbclass
+++ /dev/null
@@ -1,32 +0,0 @@
-PACKAGE_ARCH = "all"
-
-do_configure() {
- :
-}
-
-do_compile() {
- :
-}
-
-pkg_postinst_fonts() {
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-
-pkg_postrm_fonts() {
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-python populate_packages_prepend() {
- postinst = bb.data.getVar('pkg_postinst_fonts', d, 1)
- postrm = bb.data.getVar('pkg_postrm_fonts', d, 1)
- fontdir = bb.data.getVar('palmtopdir', d, 1) + '/lib/fonts'
- pkgregex = "^([a-z-]*_[0-9]*).*.qpf$"
- pkgpattern = bb.data.getVar('QPF_PKGPATTERN', d, 1) or 'qpf-%s'
- pkgdescription = bb.data.getVar('QPF_DESCRIPTION', d, 1) or 'QPF font %s'
-
- do_split_packages(d, root=fontdir, file_regex=pkgregex, output_pattern=pkgpattern,
- description=pkgdescription, postinst=postinst, postrm=postrm, recursive=True, hook=None,
- extra_depends='qpf-font-common')
-}
diff --git a/classes/rm_work.bbclass b/classes/rm_work.bbclass
index 4efd39c557..97de5e2774 100644
--- a/classes/rm_work.bbclass
+++ b/classes/rm_work.bbclass
@@ -25,3 +25,23 @@ do_rm_work_all () {
}
do_rm_work_all[recrdeptask] = "do_rm_work"
addtask rm_work_all after do_rm_work
+
+
+addhandler rmwork_stampfixing_eventhandler
+python rmwork_stampfixing_eventhandler() {
+ from bb.event import getName
+ import os
+
+ if getName(e) == "StampUpdate":
+ for (fn, task) in e.targets:
+ if task == 'rm_work_all':
+ continue
+ stamp = "%s.do_rm_work" % e.stampPrefix[fn]
+ if os.path.exists(stamp):
+ dir = "%s.*" % e.stampPrefix[fn]
+ bb.note("Removing stamps: " + dir)
+ os.system('rm -f '+ dir)
+
+ return NotHandled
+}
+
diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass
index 9994febf0d..44c74a0354 100644
--- a/classes/sanity.bbclass
+++ b/classes/sanity.bbclass
@@ -31,7 +31,7 @@ def check_sanity(e):
from distutils.version import LooseVersion
except ImportError:
def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1
- import os
+ import os, commands
# Check the bitbake version meets minimum requirements
minversion = data.getVar('BB_MIN_VERSION', e.data , True)
@@ -64,8 +64,8 @@ def check_sanity(e):
# Check that the MACHINE is valid, if it is set
if data.getVar('MACHINE', e.data, True):
- if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data):
- messages = messages + 'Please set a valid MACHINE in your local.conf\n'
+ if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data):
+ messages = messages + 'Please set a valid MACHINE in your local.conf\n'
# Check that the DISTRO is valid
# need to take into account DISTRO renaming DISTRO
@@ -85,6 +85,19 @@ def check_sanity(e):
required_utilities = "patch help2man diffstat texi2html makeinfo cvs svn bzip2 tar gzip gawk md5sum"
+ if data.getVar('TARGET_ARCH', e.data, True) == "arm":
+ # qemu-native needs gcc 3.x
+ if "qemu-native" not in assume_provided and "gcc3-native" in assume_provided:
+ gcc_version = commands.getoutput("${BUILD_PREFIX}gcc --version | head -n 1 | cut -f 3 -d ' '")
+
+ if not check_gcc3(e.data) and gcc_version[0] != '3':
+ messages = messages + "gcc3-native was in ASSUME_PROVIDED but the gcc-3.x binary can't be found in PATH"
+ missing = missing + "gcc-3.x (needed for qemu-native),"
+
+ if "qemu-native" in assume_provided:
+ if not check_app_exists("qemu-arm", e.data):
+ messages = messages + "qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH"
+
for util in required_utilities.split():
if not check_app_exists( util, e.data ):
missing = missing + "%s," % util
@@ -100,7 +113,40 @@ def check_sanity(e):
oes_bb_conf = data.getVar( 'OES_BITBAKE_CONF', e.data, True )
if not oes_bb_conf:
- messages = messages + 'You do not include OpenEmbeddeds version of conf/bitbake.conf\n'
+ messages = messages + 'You do not include OpenEmbeddeds version of conf/bitbake.conf. This means your environment is misconfigured, in particular check BBPATH.\n'
+
+ #
+ # Check that TMPDIR hasn't changed location since the last time we were run
+ #
+ tmpdir = data.getVar('TMPDIR', e.data, True)
+ checkfile = os.path.join(tmpdir, "saved_tmpdir")
+ if os.path.exists(checkfile):
+ f = file(checkfile, "r")
+ if (f.read().strip() != tmpdir):
+ messages = messages + "Error, TMPDIR has changed location. You need to either move it back to %s or rebuild\n" % tmpdir
+ else:
+ f = file(checkfile, "w")
+ f.write(tmpdir)
+ f.close()
+
+ #
+ # Check the 'ABI' of TMPDIR
+ #
+ current_abi = data.getVar('SANITY_ABI', e.data, True)
+ abifile = data.getVar('SANITY_ABIFILE', e.data, True)
+ if os.path.exists(abifile):
+ f = file(abifile, "r")
+ abi = f.read().strip()
+ if not abi.isdigit():
+ f = file(abifile, "w")
+ f.write(current_abi)
+ elif (abi != current_abi):
+ # Code to convert from one ABI to another could go here if possible.
+ messages = messages + "Error, TMPDIR has changed ABI (%s to %s) and you need to either rebuild, revert or adjust it at your own risk.\n" % (abi, current_abi)
+ else:
+ f = file(abifile, "w")
+ f.write(current_abi)
+ f.close()
if messages != "":
raise_sanity_error(messages)
@@ -110,17 +156,7 @@ python check_sanity_eventhandler() {
from bb import note, error, data, __version__
from bb.event import getName
- try:
- from distutils.version import LooseVersion
- except ImportError:
- def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1
-
- if (LooseVersion(bb.__version__) > LooseVersion("1.8.6")):
- if getName(e) == "ConfigParsed":
- check_sanity(e)
- return NotHandled
-
- if getName(e) == "BuildStarted":
+ if getName(e) == "ConfigParsed":
check_sanity(e)
return NotHandled
diff --git a/classes/sdl.bbclass b/classes/sdl.bbclass
index 23cbf10919..dc4cd8ffa2 100644
--- a/classes/sdl.bbclass
+++ b/classes/sdl.bbclass
@@ -8,6 +8,8 @@ APPDESKTOP ?= "${WORKDIR}/${PN}.desktop"
APPNAME ?= "${PN}"
APPIMAGE ?= "${WORKDIR}/${PN}.png"
+export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
+
sdl_do_sdl_install() {
install -d ${D}${datadir}/applications
install -d ${D}${datadir}/pixmaps
diff --git a/classes/seppuku.bbclass b/classes/seppuku.bbclass
index 834bee34b4..2e097a812e 100644
--- a/classes/seppuku.bbclass
+++ b/classes/seppuku.bbclass
@@ -303,7 +303,7 @@ python seppuku_eventhandler() {
if name == "PkgFailed":
if not bb.data.getVar('SEPPUKU_AUTOBUILD', data, True) == "0":
- build.exec_task('do_clean', data)
+ build.exec_func('do_clean', data)
elif name == "TaskFailed":
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
diff --git a/classes/tinderclient.bbclass b/classes/tinderclient.bbclass
index bc004efb26..0b7fc1d843 100644
--- a/classes/tinderclient.bbclass
+++ b/classes/tinderclient.bbclass
@@ -328,7 +328,7 @@ def tinder_do_tinder_report(event):
log += "<--- TINDERBOX Package %s done (SUCCESS)\n" % data.getVar('PF', event.data, True)
elif name == "PkgFailed":
if not data.getVar('TINDER_AUTOBUILD', event.data, True) == "0":
- build.exec_task('do_clean', event.data)
+ build.exec_func('do_clean', event.data)
log += "<--- TINDERBOX Package %s failed (FAILURE)\n" % data.getVar('PF', event.data, True)
status = 200
# remember the failure for the -k case
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index ac2d281123..858e411d8c 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -176,14 +176,14 @@ FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal"
SECTION_${PN}-dev = "devel"
ALLOW_EMPTY_${PN}-dev = "1"
-RDEPENDS_${PN}-dev = "${@['', '${PN} (= ${DEBPV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}"
+RDEPENDS_${PN}-dev = "${PN} (= ${DEBPV})"
FILES_${PN}-dbg = "${bindir}/.debug ${sbindir}/.debug ${libexecdir}/.debug ${libdir}/.debug \
${base_bindir}/.debug ${base_sbindir}/.debug ${base_libdir}/.debug ${libdir}/${PN}/.debug \
${libdir}/matchbox-panel/.debug"
SECTION_${PN}-dbg = "devel"
ALLOW_EMPTY_${PN}-dbg = "1"
-RRECOMMENDS_${PN}-dbg = "${@['', '${PN} (= ${DEBPV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}"
+RRECOMMENDS_${PN}-dbg = "${PN} (= ${DEBPV})"
FILES_${PN}-locale = "${datadir}/locale"
@@ -216,18 +216,19 @@ B = "${S}"
STAGING_DIR = "${TMPDIR}/staging"
STAGING_DIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}"
-STAGING_BINDIR_NATIVE = "${STAGING_DIR_NATIVE}/bin"
-STAGING_BINDIR_CROSS = "${STAGING_DIR_NATIVE}/bin/${HOST_SYS}"
-STAGING_LIBDIR_NATIVE = "${STAGING_DIR_NATIVE}/lib"
-STAGING_INCDIR_NATIVE = "${STAGING_DIR_NATIVE}/include"
-STAGING_ETCDIR_NATIVE = "${STAGING_DIR_NATIVE}/etc"
-STAGING_DATADIR_NATIVE = "${STAGING_DIR_NATIVE}/share"
+STAGING_BINDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_bindir}"
+STAGING_BINDIR_CROSS = "${STAGING_DIR_NATIVE}${layout_bindir}/${HOST_SYS}"
+STAGING_LIBDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_libdir}"
+STAGING_INCDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_includedir}"
+STAGING_ETCDIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_sysconfdir}"
+STAGING_DATADIR_NATIVE = "${STAGING_DIR_NATIVE}${layout_datadir}"
STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}"
-STAGING_BINDIR = "${STAGING_DIR_HOST}/bin"
-STAGING_LIBDIR = "${STAGING_DIR_HOST}/lib"
-STAGING_INCDIR = "${STAGING_DIR_HOST}/include"
-STAGING_DATADIR = "${STAGING_DIR_HOST}/share"
+STAGING_BINDIR = "${STAGING_DIR_HOST}${layout_bindir}"
+STAGING_LIBDIR = "${STAGING_DIR_HOST}${layout_libdir}"
+STAGING_INCDIR = "${STAGING_DIR_HOST}${layout_includedir}"
+STAGING_DATADIR = "${STAGING_DIR_HOST}${layout_datadir}"
+STAGING_EXECPREFIXDIR = "${STAGING_DIR_HOST}${layout_exec_prefix}"
STAGING_LOADER_DIR = "${STAGING_DIR_HOST}/loader"
STAGING_FIRMWARE_DIR = "${STAGING_DIR_HOST}/firmware"
STAGING_PYDIR = "${STAGING_DIR}/lib/python2.4"
@@ -310,7 +311,7 @@ export PATH_prepend = "${STAGING_BINDIR_CROSS}:${STAGING_DIR_NATIVE}${layout_sbi
# Build utility info.
##################################################################
-CCACHE = "${@bb.which(bb.data.getVar('PATH', d), 'ccache') and 'ccache '}"
+CCACHE = "${@bb.which(bb.data.getVar('PATH', d, 1), 'ccache') and 'ccache '}"
TOOLCHAIN_OPTIONS = ""
export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
@@ -351,10 +352,12 @@ PATCHRESOLVE = 'noop'
##################################################################
export BUILD_CPPFLAGS = "-isystem${STAGING_INCDIR_NATIVE}"
+BUILDSDK_CPPFLAGS = "-isystem${STAGING_INCDIR}"
export CPPFLAGS = "${TARGET_CPPFLAGS}"
-export TARGET_CPPFLAGS = "-isystem${STAGING_DIR_TARGET}/include"
+export TARGET_CPPFLAGS = "-isystem${STAGING_DIR_TARGET}${layout_includedir}"
export BUILD_CFLAGS = "${BUILD_CPPFLAGS} ${BUILD_OPTIMIZATION}"
+BUILDSDK_CFLAGS = "${BUILDSDK_CPPFLAGS} ${BUILD_OPTIMIZATION}"
export CFLAGS = "${TARGET_CFLAGS}"
export TARGET_CFLAGS = "${TARGET_CPPFLAGS} ${SELECTED_OPTIMIZATION}"
@@ -365,9 +368,14 @@ export TARGET_CXXFLAGS = "${TARGET_CFLAGS} -fpermissive"
export BUILD_LDFLAGS = "-L${STAGING_LIBDIR_NATIVE} \
-Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} \
-Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-O1"
+
+BUILDSDK_LDFLAGS = "-L${STAGING_LIBDIR} \
+ -Wl,-rpath-link,${STAGING_LIBDIR} \
+ -Wl,-rpath,${libdir} -Wl,-O1"
+
export LDFLAGS = "${TARGET_LDFLAGS}"
-export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}/lib \
- -Wl,-rpath-link,${STAGING_DIR_TARGET}/lib \
+export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}${layout_libdir} \
+ -Wl,-rpath-link,${STAGING_DIR_TARGET}${layout_libdir} \
-Wl,-O1"
# Which flags to leave by strip-flags() in bin/build/oebuild.sh ?
@@ -529,6 +537,10 @@ OVERRIDES = "local:${MACHINE}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUIL
include conf/site.conf
include conf/auto.conf
include conf/local.conf
+# USERDISTRO should always contain original DISTRO value as set by user
+# If a distro config overrides DISTRO for whatever reason (e.g. to get
+# overrides like it wants), USERDISTRO must be reassigned with := first
+USERDISTRO = "${DISTRO}"
include conf/build/${BUILD_SYS}.conf
include conf/target/${TARGET_SYS}.conf
include conf/machine/${MACHINE}.conf
@@ -541,7 +553,7 @@ require conf/sanity.conf
##################################################################
DL_DIR ?= "${TMPDIR}/downloads"
-IMAGE_FSTYPES ?= "jffs2"
+IMAGE_FSTYPES ?= "tar.gz"
PCMCIA_MANAGER ?= "pcmcia-cs"
DEFAULT_TASK_PROVIDER ?= "task-base"
MACHINE_TASK_PROVIDER ?= "${DEFAULT_TASK_PROVIDER}"
diff --git a/conf/checksums.ini b/conf/checksums.ini
index 8ff6bd69fc..b2878021a9 100644
--- a/conf/checksums.ini
+++ b/conf/checksums.ini
@@ -222,6 +222,10 @@ sha256=137f50a30461d51eb9af5aac737bc788d536354cf47b26129b97bde6e41fb85f
md5=61beda590bfc5b4a12e979d5f2d70d7a
sha256=dcacf4c18af89b57e66dc7ba39e24c3b74ff6f83b8745bcc1390170a4190eebd
+[http://downloads.sourceforge.net/mesa3d/MesaLib-7.0.2.tar.bz2]
+md5=93e6ed7924ff069a4f883b4fce5349dc
+sha256=9d4707b556960f6aef14480f91fcd4f868720f64321947ab1b2fd20e85ce7f9e
+
[http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Module-Build-0.2805.tar.gz]
md5=598bb59b86c2c4842eeffb03392fab5b
sha256=8fd609d1e6b460b5c95ad5612cb823aa863d51360ed55caea987909a9bab50f5
@@ -1294,6 +1298,26 @@ sha256=984b7974670d4f0291094ea2a36ee21fe46591f36cb51f95292dbe143c1eeab4
md5=158ccadd830fe6cb3d21a109f398e037
sha256=08ef1e87c7198fb6d7c0a5f830fc2d99e5fd077dbb7d4ca1b66117ae924f6df3
+[http://www.busybox.net/downloads/busybox-1.7.2.tar.gz]
+md5=34c76dc55004d8d5dcea884e0e99bc21
+sha256=e0eb7d59ba996a58608999998ad630c67b93c05af4eafea29770c4839c0e5461
+
+[http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-ash.patch]
+md5=4149857c0b2c7f3d52a1f2cec5d7778d
+sha256=73706e7d77144a6270da02ede61cde3c2e3b0e716d879737ac9d478b29233ba9
+
+[http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-iptun.patch]
+md5=6c5f498e0677fd91b5b0e85ec5ac3b23
+sha256=b80a8c173c7a7a40a504585c6af5c74396c8fdbbb1cec179de9edcc030aa6a9a
+
+[http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-logger.patch]
+md5=43c292e93bf92623aaa29dd0e243e9a9
+sha256=5117584a563c512b68cd9678d3cf54e6186f5a062836398791385f8ed73cca86
+
+[http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-tail.patch]
+md5=c211189556c59a2665af45bffe5a5878
+sha256=f44c3c2d7d9b3fc8a5f9fb6ac587ae4170d2515d72f9e76deb8c071ce9847abe
+
[http://downloads.sourceforge.net/bvi/bvi-1.3.1.src.tar.gz]
md5=b9d77c57bda2e019207a1874d9bb4dea
sha256=c94dbfa293cbc61b8571d025e90fd1f06a34f8d4e5b11a59856bfc1f13014de3
@@ -1342,6 +1366,10 @@ sha256=594e78a66044898c321e378d47faf43b665b23ba638834d2787e344ba13e5132
md5=b254633046eafe603776d0bee791b751
sha256=7cf292ae376e7120ec548ad6a807a2f0f4f0539a304229a3bd98921453becd47
+[http://cairographics.org/releases/cairo-1.4.8.tar.gz]
+md5=5b9db574c9fbb94ce52047600190a1ba
+sha256=a3e9b0f07910ee325406118cf3e136fc78a5155c47fdb19e66e895a3c587bc51
+
[http://gpephone.linuxtogo.org/download/gpephone/calendar-1.0/calendar-1.0.tar.gz]
md5=eb7be3b85955a1bbe7a0154cbf2f70f9
sha256=7e6425b688a2d4bbeef0904cac52737b232d03fdc4d35866fd03359f2d5f1794
@@ -1530,9 +1558,9 @@ sha256=80fd209d065887729fdeb81f5a91638626e7ed31dabab40c446bd12042df9057
md5=c0b57a115e24005f9828ca7b53908779
sha256=f0127ba9cd9936b08f982999f6fd9004c8c4b97401e68bda4d91eec29300d8bd
-[http://www.cmake.org/files/v2.4/cmake-2.4.7.tar.gz]
-md5=4476c423b8f74266136964e42ea88028
-sha256=2fd5feb294b933ae3a0071b8c7a396797cf79dfe6b0ffeff8788e07ff4107d56
+[http://www.cmake.org/files/v2.4/cmake-2.4.8.tar.gz]
+md5=f5dd061c31765a49dc17ae8bdc986779
+sha256=f20607d4f33376ea648307681630574662d0c3f59d88a7a02ad547b6320631f1
[ftp://ftp.logilab.fr/pub/common/common-0.4.4.tar.gz]
md5=4cd3ce38efbd27c6cf4223f0ced2a5b5
@@ -2418,6 +2446,14 @@ sha256=52b31fa70151b97ef871d44ad9214e90279f7cbd95144c6b40da49079ed0f1ce
md5=3654bbbf01deeb0d804df194e1b1a2b3
sha256=52b31fa70151b97ef871d44ad9214e90279f7cbd95144c6b40da49079ed0f1ce
+[ftp://ftp.debian.org/debian/pool/main/f/fakeroot/fakeroot_1.8.3.tar.gz]
+md5=f123ffb457eb3577fcbb5e2c2432a922
+sha256=fd2ae24fc5bc14bfe63e0be551134a0f7906659f45803a427a2377b67d193867
+
+[ftp://ftp.debian.org/debian/pool/main/f/fakeroot/fakeroot_1.9.1.tar.gz]
+md5=163a846e51b39fd626b43548c2cdda7c
+sha256=6a3a993ab90540719e47b4968f60f8023a3cbb93f2a1ce611cd7a2d52ac1c38e
+
[ftp://oss.sgi.com/projects/fam/download/stable/fam-2.6.10.tar.gz]
md5=1c5a2ea659680bdd1e238d7828a857a7
sha256=885ced3480aef3cee519a459a572e31cd2fd5e24bcd35b1d0c8833361699026e
@@ -3090,6 +3126,10 @@ sha256=cfc0efbcc6fcde0d416a32dfb246c9df022515a312683fac412578c4fd09a9bc
md5=ac6d19831220c4aeef4475492725486f
sha256=98bdb26cd2644f2290e34453d9115b88bcff940bd1feb88db5a0fc557ec0ea5e
+[ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.2.2/gcc-4.2.2.tar.bz2]
+md5=7ae33781417a35a2eb03ee098a9f4490
+sha256=673b85d780a082c014ded4ac11f8269a3fe893b4dbb584d65b8602d50b3872b1
+
[http://xorg.freedesktop.org/releases/individual/util/gccmakedep-1.0.2.tar.gz]
md5=fc49f45251c1336fe1dad5dba1c83fcd
sha256=fdd3963294e80b27416f902a5c029c033d321f03310d3cafa3afb62b50ddce92
@@ -3258,6 +3298,10 @@ sha256=142d5d4795bef093eb9cfd50e384ae87ba9b9934d22b667174535d377ad47f1b
md5=b3f6a2a318610af6398b3445f1a2d6c6
sha256=10113e7b91f858557c7edb4b611cc009855c5ff8663af54977a65acb69445058
+[http://ftp.gnome.org/pub/GNOME/sources/glib/2.14/glib-2.14.0.tar.bz2]
+md5=6fabf21f68631043bc6924e01398e3af
+sha256=92e0aed2b5816bfcdfcd943215a7b59e9000f89ae7824218b7959c90161560a8
+
[http://ftp.gnome.org/pub/GNOME/sources/glib/2.14/glib-2.14.1.tar.bz2]
md5=196d7944a8ddc1f7c3d1e9c7146dd560
sha256=6f36ca624a12dce03cdea59c9eb900eda49ea2f463b329737eb9f2a8f3ac144d
@@ -3266,6 +3310,10 @@ sha256=6f36ca624a12dce03cdea59c9eb900eda49ea2f463b329737eb9f2a8f3ac144d
md5=fca5d26c8efea4e6e547c81c801bf67c
sha256=bd6767cc7c8d9551df0fb3e6d40706746723f6daa0ecd4a78facffc40f9d8a97
+[http://ftp.gnome.org/pub/GNOME/sources/glib/2.14/glib-2.14.4.tar.bz2]
+md5=7ee7874108cbe9ea7fff1f4ab3389ce8
+sha256=10e6ebecc2cbd07f193a5d26b88c3bf2107e32b2a4d024f10f77f59a98d579ff
+
[http://ftp.gnome.org/pub/gnome/sources/glib/2.2/glib-2.2.3.tar.bz2]
md5=aa214a10d873b68ddd67cd9de2ccae55
sha256=af1456e075954c122bda008736437b048d5336d0b426847c627e607eb35e59e5
@@ -3306,10 +3354,18 @@ sha256=0ae1b1dc1ee870d307ae6ad4546778377b04055520d3771dab1290e60ab13286
md5=1fb29764a6a650a4d5b409dda227ac9f
sha256=9b2e12bb1eafb55ab2e5a868532b8e6ec39216c66c25b8998d7474bc4d4eb529
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.6.1.tar.bz2]
+md5=11cf6d3fc86dbe0890b8d00372eb6286
+sha256=3ded3a3c3ba2cf02d72479a5cc0829c7c261a9d0934e49a79233de9fa276ec22
+
[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-2.5.tar.bz2]
md5=8787868ba8962d9b125997ec2f25ac01
sha256=de77e49e0beee6061d4c6e480f322566ba25d4e5e018c456a18ea4a8da5c0ede
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-2.6.1.tar.bz2]
+md5=503f1315afd808728ebaa75b3d87a7d9
+sha256=67c98ca1299f5f25eaece256d033e0e63bcf6876b920ca62a1fe61ac62c5c451
+
[ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.5.tar.gz]
md5=c766a79a51668d7fa33f175a249655b4
sha256=c027824ee6593a838e0883bdd4bf8bd455b3dcf4ff0aa77fe82452819d882f47
@@ -3326,6 +3382,10 @@ sha256=2d7af8211cda81abde3e0bb8ccedbd18924a27b244ff35d4eacafcf899038c56
md5=183f6d46e8fa5e4b2aff240ab1586c2e
sha256=80c38a005325e7539012bd665fb8e06af9ee9bfc74efb236ebff121265bfd463
+[ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-2.6.1.tar.bz2]
+md5=53d88ca624642dd267752ccce77b19d0
+sha256=d094028bc6d6691f56b4efeff7cd7e1c7ca10733e0cb5efc36e8fb08d8324bf1
+
[ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.8/glibmm-2.8.4.tar.bz2]
md5=952cdde2d6aef201c528d431036d71e1
sha256=7ff592b6687caefa367b33d8cb8f66f3c0273fa86d4b688c0758d0d9fee7a2cb
@@ -4422,6 +4482,10 @@ sha256=d02344239d048390ba02fcfd7de4f9efc0dfb51e7b06dfa46a6314d666ea4de2
md5=20d763198efb38263b22dee347f69da6
sha256=3aab107fb97a280b77fa30d07540e325d1511907bbce1e7efa5b4db2dffa28a3
+[http://download.gnome.org/sources/gtk+/2.12/gtk+-2.12.0.tar.bz2]
+md5=e9c280afec29b11772af5a7c807abf41
+sha256=faa1dc73f8077f72849ade14963202d8af22b51469c1e8e88e20c69d330fd2fd
+
[http://handhelds.org/packages/gtk-2.0/gtk+-2.2.4.diff.bz2]
md5=c6697665e06cad01e87c2cf8d0913725
sha256=2a768a45adea587c4a7d6e3c3567ad7961bf7509e118ae62ce32f5369b1aeeb0
@@ -4974,6 +5038,10 @@ sha256=913ff534aa777e3c36f3e9fe3e8638c3ccfe398daeb7532fa917e7bcd6fed07d
md5=e2c4cf4c2ad59d1e27f09381f6b4a3c3
sha256=62ba68a056daa89f5b21a02b27f6a4c858933e1c5547c9d16985d9ed182014e6
+[http://xorg.freedesktop.org/releases/individual/proto/inputproto-1.4.2.1.tar.bz2]
+md5=aa948a7469168ddd9c33f11c5dff55ac
+sha256=9b6db77037de7c52b9a17862b99bc435bd5c20e5d3faf5aec943b206cdaff3ed
+
[http://xorg.freedesktop.org/releases/individual/proto/inputproto-1.4.tar.gz]
md5=3faf4bc1e2bb9353590d7b1fe50ec306
sha256=5360e221354bbdfd67bf9834c2c1d7a0d83f22c17e057f92194411911fbb81f5
@@ -5374,6 +5442,10 @@ sha256=15bedd7f892fbb130e2b9c17d4f927c4904362a7be5b73d07d56d8aa7025f6f1
md5=071f96648ac25c8e87a3de11a7de2d8a
sha256=ffd46270dae30cad147d73559142a701a8ff8d0658f4abfb2341edefabb8161d
+[http://xorg.freedesktop.org/releases/individual/lib/libICE-1.0.4.tar.bz2]
+md5=4ab4e67e0b8845aa201e984153087f4a
+sha256=13055e2f4c645cbd135ce97a7974a5866f9ba3ed8988e686b552f55c30514f04
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libICE-X11R7.0-1.0.0.tar.bz2]
md5=c778084b135311726da8dc74a16b3555
sha256=e37cffdb45bbb193e5cb75e74e7e0410554f4b3c3a1fe436debea907778e6aac
@@ -5426,6 +5498,10 @@ sha256=5359db57793430429786b648ac570d4ab205797306e049bf1e8675250af21541
md5=710bf38a9477a5a1b235bc94f1d0593c
sha256=b77e4fd2bbd4092e7e78d0964760ad8ab160caccd4bc6d7d0c87a23febaea85e
+[http://xorg.freedesktop.org/releases/individual/lib/libX11-1.1.3.tar.bz2]
+md5=4d43d3e472c552d2f191ecdd4e75112c
+sha256=4a2f566e2ea5dd955c875cb8fa9c18dd725324fc5cf4e23c803442e31ab8917a
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libX11-X11R7.0-1.0.0.tar.bz2]
md5=dcf59f148c978816ebbe3fbc5c9ef0e1
sha256=89a3c2d8324ff9d0d91682503407310f7df30a74915cd253be3a75247b044248
@@ -5498,6 +5574,10 @@ sha256=142cd1c1958e2cb92ff2975a092a2c519dd5f4c433c9d1d8b6cc9ca967aad283
md5=ec2acd10a7736a85dd1e1ed9ea5bec96
sha256=8f039f81af52c88d583fba48b878abd074542221cb0030638ad52336b4ae1377
+[http://xorg.freedesktop.org/releases/individual/lib/libXcursor-1.1.9.tar.bz2]
+md5=99b7554037a92b260891091e81815a0a
+sha256=1dffb3542271c8ce964066d561474caec5b639d6588b257b21cfb8225a15d2b4
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXcursor-X11R7.0-1.1.5.2.tar.bz2]
md5=048e15b725d8e081ac520e021af9a62c
sha256=52bbd6e05de84e94ec11f2734029183411c91e2297779098fb17e162aca5e191
@@ -5622,6 +5702,10 @@ sha256=7e6339539d3d0a4fc95cc23ca2b13ae67dd783e011b3cc5ca76040e376bff57f
md5=9c4dd85f3e2a75bfb60bd288502bc288
sha256=4deda13613f03e4524d3cf0ac14b9e20be5044d415cb8478713ecbe47f4de862
+[http://xorg.freedesktop.org/releases/individual/lib/libXi-1.1.3.tar.bz2]
+md5=7c510abb0cad8dc20493fb27ff7859d8
+sha256=c77a5bbe97d0d0a6493adefcf1bd57aca91bc33279633b3f6cf1d2bb8812153f
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXi-X11R7.0-1.0.0.tar.bz2]
md5=99503799b4d52ec0cac8e203341bb7b3
sha256=64e8ece13fc778b9dd86ef93c4b782de9a1176a005ed7d895552a73acb103d9b
@@ -5694,6 +5778,10 @@ sha256=ba5adedc37da835a5c9e5a5d457dce13feead64fc364bc4719c41720ca0a3c50
md5=5860360f5b038cc728f388f875ce525d
sha256=2d2df642eb8e0527936cdf4ed1c096f69df53e9b95e2532c8ed0cabd06a45407
+[http://xorg.freedesktop.org/releases/individual/lib/libXrandr-1.2.2.tar.bz2]
+md5=1b244b5d19f0ccab01d7083436cd3558
+sha256=206f8dc850f12b1213fb73dbef09fafa1bb8fb8c3ddfe4d39721c1e2dec12a98
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXrandr-X11R7.0-1.1.0.2.tar.bz2]
md5=e10aed44c2e1e5d9e6848a62ff2c90c7
sha256=6b6a3fcf44621bf163ba2db6dbcc518bff4e8cf74695d1b86595387a3ff3c6fb
@@ -5706,6 +5794,10 @@ sha256=5cfaac877aca06e3be09380037a68c6d2c4a57641fa6994bc14f07c0105cca25
md5=2f1b2c6e8dcbcb6d760e59f445abd92c
sha256=0f749183ab1a0ece14d33c3299b3f70893122349c0bfa9d7bd0e66ce19d1802a
+[http://xorg.freedesktop.org/releases/individual/lib/libXrender-0.9.4.tar.bz2]
+md5=dc266e850c51368f964e0d67bf5fb5e6
+sha256=5682d343dd4e7ef291a6577e956c331946ce5801d8fa076284a01b41de3017ec
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXrender-X11R7.0-0.9.0.2.tar.bz2]
md5=3f0fa590dd84df07568631c91fbe68ab
sha256=f240490ce348cedcf09c2c5d170c7d79002790d72ea5dc3d7d702005684ff713
@@ -6562,6 +6654,10 @@ sha256=920fa2a0924d66884825d36a2e843de069cfdf1af01945d05da25999bbd6396c
md5=461d7097bf47864b872085a94ff94e10
sha256=01453d561255b5fcb361997904752860e4f8c6b9742f290578a44615fcc94356
+[http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz]
+md5=eaf7dc6ebbff30975de7527a80831585
+sha256=bae29e79fbc50bbedf1235852094b71c8c910a1ef0cd42fe4163b7b545630b65
+
[http://liboil.freedesktop.org/download/liboil-0.3.10.tar.gz]
md5=770f656bca8166dab33b322d5886a4bf
sha256=4587753a023550a066abe59a7e467c1af35b9f5e81bfb40a12463ad2df8f088c
@@ -6746,6 +6842,10 @@ sha256=835265bb0d39689e8a8580b5ffb53222b3f5f483d58aa533a5c7ebfc3d273d50
md5=ddc52cc8196f9f0bf48a5c7569b6bb38
sha256=83e82b9afe296584a6c9f1f8b3e3a70d324209021e0049f68d28bd1de8c18136
+[http://downloads.us.xiph.org/releases/libshout/libshout-2.2.2.tar.gz]
+md5=4f75fc9901c724b712c371c9a1e782d3
+sha256=912a1fdb12d31af757e7881db49321e5b5240bd8bd4199e9fb0ce16d66568160
+
[http://www.geocities.com/SiliconValley/Lakes/5147/sidplay/packages/libsidplay-1.36.59.tgz]
md5=37c51ba4bd57164b1b0bb7b43b9adece
sha256=3da9b38d4eb5bf9e936b9604ba92da0594ef38047d50cf806a8e11c400008024
@@ -6834,6 +6934,10 @@ sha256=2be78a947bdbfd24aa4f35ae97d2b7bafa60162c5e824cf3dd085b40eddee8ff
md5=2cbbbeaf97c154a7fb9b088b95deb70e
sha256=53e8740a3a36ece8078b371b95c79646dc69f0ad3ee2665e5fb659412c0baf35
+[http://downloads.xiph.org/releases/theora/libtheora-1.0alpha7.tar.gz]
+md5=55ee3c6db3e0927e7918309891a8f52b
+sha256=f5c7730ded0273a8615b12b46a32b800bbcb9e861e3a18aa92b1c062981a2fef
+
[http://downloads.sourceforge.net/tilp/libticables-3.9.2.tar.gz]
md5=354675bfbd881082a9447efde9935226
sha256=1c091859f09d5a38c76f0d64a93db46aa2b5d637c8a7370d348f21e7be324c37
@@ -6902,6 +7006,10 @@ sha256=748a9a5a1b2e6bf1db4cc767742acf58d836e551e56a493bd34ad759d3bb4f53
md5=4d6726fd02ce02f6e24824e594b0949a
sha256=20b3cbdb4b05322d470404a7d2e8cdae1e0ce5372113218ae3cada3b29da70f7
+[http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz]
+md5=478646358c49f34aedcce58948793619
+sha256=6eb7040048e35448fe224fa3fd993eb4e49a905c57893886082f1674d43b0e73
+
[http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.10/libwnck-2.10.2.tar.bz2]
md5=d8276da50ce560c5e66ed94e4238d9ef
sha256=d03295e5cb22ed7d086ce1ce754c498ed6bc2388c45e4547417d922580d3cd7c
@@ -8794,7 +8902,7 @@ sha256=6eb45f17b50d864157dac2028ee5d45f4f54548825f5a732e1a430d5aa2dd889
md5=195b684e025ff5c15617d6f757cf631f
sha256=e14546d11e899e7e9f06ca58979fee14b273d53c637eb268d7c6fe3bf78d564d
-[http://de3.php.net/distributions/php-4.4.4.tar.bz2]
+[http://museum.php.net/php4/php-4.4.4.tar.bz2]
md5=bc6fa8908e2ac36e93bab9f7d42cda3a
sha256=9f0742fce014a255f8453c1264afee5de289a9e9dcd57c448c77b46978f6a76b
@@ -9546,6 +9654,10 @@ sha256=06b32d6f8fe7065b4c2c8142a244374e1be963757125bac20ba016b92231b5bf
md5=5f8dd5a041ca7c700b16620228f922aa
sha256=de7290f334baf631a14d031df304ee94cfb550aa69e7512aa589d21c2381c7d8
+[http://download.savannah.gnu.org/releases/quilt/quilt-0.46.tar.gz]
+md5=4508546d1ed0257ef7c128b6121b7208
+sha256=47bf030565bb462840db694acc183273455714028c74974c5b3a3bd4ad29ad89
+
[http://downloads.sourceforge.net/qwt/qwt-4.2.0rc1.tgz]
md5=142b10ab27e837c3c4603cf9a7e9343b
sha256=3b6db68d53441119dced27e5bad26ec087294cb9d878d37bcea61e1f1e4849a1
@@ -9646,6 +9758,10 @@ sha256=779317ca2e99f02b394af0c6f77f16def56de3b71a5d9f9ac6e5e9cfb65192e1
md5=28fbe8a59ebd31f098b90ec64f3d133a
sha256=7754dfbbb1e3818f28720fa9647b8a593e9d54626a7896771c2bfac7f75e2726
+[http://xorg.freedesktop.org/releases/individual/proto/renderproto-0.9.3.tar.bz2]
+md5=598bc9a493deee2e48e4434e94467189
+sha256=c98a08b877e98a8fa7daa04be472de7e0cb38a99593faca8b987effcea2dd45b
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/renderproto-X11R7.0-0.9.2.tar.bz2]
md5=a7f3be0960c92ecb6a06a1022fe957df
sha256=a875741d110a73952119460fac31e1bb7d0b0aff16f59c2a0a04bcd434c74f41
@@ -12742,6 +12858,10 @@ sha256=652f579171e6e8f73c13ab6b060d2447ae35ebfbd39a6002b7c05a1dfc0f7eb8
md5=bb196907ea1e182dcb396eb22f7d2c1a
sha256=e1a3c4986f16a5fbca611d0547cc7499a1fa47ca2096593644037e2609363085
+[http://xorg.freedesktop.org/releases/individual/lib/xtrans-1.0.4.tar.bz2]
+md5=8b36cdf08df12be96615e3d550236626
+sha256=765219fa822edeffb0650e93458e4ebf63c23176e58fce06806fb251fbfe7d8c
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/xtrans-X11R7.0-1.0.0.tar.bz2]
md5=153642136a003871a9093c8103d6ac5a
sha256=c9a049b4367318b53cbad02bc7e3c4450778e3237400a515b2a6272405b8b912
diff --git a/conf/distro/amsdelta-oe.conf b/conf/distro/amsdelta-oe.conf
index 25b07e0038..7935672795 100644
--- a/conf/distro/amsdelta-oe.conf
+++ b/conf/distro/amsdelta-oe.conf
@@ -1,4 +1,3 @@
-DISTRO = "amsdelta-oe"
DISTRO_NAME = "AmsDelta Linux"
DISTRO_VERSION = "unstable-${DATE}"
diff --git a/conf/distro/angstrom-2007.1-legacy.conf b/conf/distro/angstrom-2008.1-legacy.conf
index 358ed06cf2..358ed06cf2 100644
--- a/conf/distro/angstrom-2007.1-legacy.conf
+++ b/conf/distro/angstrom-2008.1-legacy.conf
diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf
index ec8a5b9b30..b24a57f537 100644
--- a/conf/distro/angstrom-2008.1.conf
+++ b/conf/distro/angstrom-2008.1.conf
@@ -22,6 +22,7 @@ DISTRO_REVISION = "1"
require conf/distro/include/sane-srcdates.inc
require conf/distro/include/sane-srcrevs.inc
+require conf/distro/include/angstrom-2008-preferred-versions.inc
#Images built can have to modes:
# 'debug': empty rootpassword, strace included
@@ -71,15 +72,9 @@ PREFERRED_VERSION_uclibc-initial ?= "0.9.29"
#Prefer a newer GTK+ and friends
-PREFERRED_VERSION_gtk+ = "2.12.0"
-PREFERRED_VERSION_glib-2.0 = "2.14.0"
-PREFERRED_VERSION_pango = "1.18.1"
-
-# prefer newest for speed and fun
-PREFERRED_VERSION_udev = "115"
-
-# Our patched-to-hell busybox 1.2.1 is getting old and unmaintanable
-PREFERRED_VERSION_busybox = "1.7.2"
+PREFERRED_VERSION_gtk+ ?= "2.12.3"
+PREFERRED_VERSION_glib-2.0 ?= "2.14.4"
+PREFERRED_VERSION_pango ?= "1.18.1"
PREFERRED_PROVIDER_avahi = "avahi"
diff --git a/conf/distro/chinook-compat.conf b/conf/distro/chinook-compat.conf
new file mode 100644
index 0000000000..c439ad67f6
--- /dev/null
+++ b/conf/distro/chinook-compat.conf
@@ -0,0 +1,199 @@
+#@--------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: Chinook-compatible
+#@DESCRIPTION: Distribution which allows building packages compatible to OS 2008
+#@--------------------------------------------------------------------
+
+# Note: This is not a complete distribution. Just some definitions to make
+# it possible to build packages that are compatible to Nokia's OS2008.
+# You should *not* replace core libraries of the operating system (glibc,
+# glib, gtk+, ..) with those you build in OE.
+#
+# Furthermore it may be possible that OpenEmbedded lacks specific versions
+# of some packages. If you encounter such a problem please provide a recipe
+# or file a bug!
+
+DISTRO_NAME = "Chinook-compat"
+DISTRO_VERSION = "test-${DATE}"
+DISTRO_TYPE = "debug"
+#DISTRO_TYPE = "release"
+
+require conf/distro/include/angstrom-glibc.inc
+FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -O1"
+
+INHERIT += "package_deb debian"
+TARGET_OS = "linux-gnueabi"
+
+TARGET_FPU_nokia770 = "soft"
+TARGET_FPU_nokia800 = "hard"
+
+DPKG_ARCH_nokia770 = "armel"
+DPKG_ARCH_nokia800 = "armel"
+
+FEED_ARCH_nokia770 = "armv5te"
+
+# Actually n800 is armv6 but we are using armv5te because qemu does not emulate
+# armv6 yet.
+FEED_ARCH_nokia800 = "armv5te"
+#FEED_ARCH_nokia800 = "armv6"
+
+#Make sure we use 2.6 on machines with a 2.4/2.6 selector
+KERNEL = "kernel26"
+MACHINE_KERNEL_VERSION = "2.6"
+
+PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
+PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
+PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
+
+PREFERRED_PROVIDER_virtual/libc = "glibc"
+
+# NPTL stuff
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/arm-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
+
+PREFERRED_PROVIDER_virtual/arm-linux-gnueabi-binutils = "binutils-cross"
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-header"
+
+PREFERRED_VERSION_automake-native = "1.9.6"
+
+PREFERRED_VERSION_binutils = "2.17.50.0.12"
+PREFERRED_VERSION_binutils-cross = "2.18"
+
+PREFERRED_VERSION_gcc = "3.4.4+csl-arm-2005q3"
+PREFERRED_VERSION_gcc-cross = "3.4.4+csl-arm-2005q3"
+PREFERRED_VERSION_gcc-cross-initial = "3.4.4+csl-arm-2005q3"
+
+# Use recent enough version of the headers to let HAL build successfully.
+PREFERRED_VERSION_linux-libc-headers = "2.6.20"
+
+PREFERRED_VERSION_glibc = "2.5"
+PREFERRED_VERSION_glibc-intermediate = "2.5"
+PREFERRED_VERSION_glibc-initial = "2.5"
+
+PREFERRED_VERSION_libtool = "1.5.6"
+
+require conf/distro/include/sane-srcrevs.inc
+
+PREFERRED_VERSION_fontconfig = "2.4.1"
+PREFERRED_VERSION_freetype = "2.2.1"
+PREFERRED_VERSION_freetype-native = "2.2.1"
+PREFERRED_VERSION_cairo = "1.4.10"
+PREFERRED_VERSION_glib-2.0 = "2.12.12"
+PREFERRED_VERSION_pango = "1.16.4"
+PREFERRED_VERSION_atk = "1.18.0"
+PREFERRED_VERSION_gtk+ = "2.10.14"
+
+PREFERRED_VERSION_gnome-vfs = "2.16.3"
+
+# 3.9.1 would be correct
+PREFERRED_VERSION_gtkhtml-3.8 = "3.8.2"
+PREFERRED_VERSION_libxml2 = "2.6.27"
+# 2.16 would be correct
+PREFERRED_VERSION_gconf = "2.6.1"
+
+# gstreamer
+# 0.10.13 would be correct (+ maemo patches)
+PREFERRED_VERSION_gstreamer = "0.10.14"
+PREFERRED_VERSION_gst-plugins-good = "0.10.6"
+# 0.10.13 would be correct (+ maemo patches)
+PREFERRED_VERSION_gst-plugins-base = "0.10.14"
+# 0.11.3 would be correct ( + maemo patches)
+PREFERRED_VERSION_gst-ffmpeg = "0.10.2"
+
+PREFERRED_VERSION_bluez-libs = "3.20"
+
+PREFERRED_PROVIDER_virtual/db = "db"
+PREFERRED_PROVIDER_virtual/db-native = "db-native"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+
+# This is a hack to avoid building mesa which crashes the compiler
+PREFERRED_PROVIDER_virtual/libsdl = "libsdl-directfb"
+PREFERRED_VERSION_libsdl-directfb = "1.2.9"
+PREFERRED_VERSION_libsdl-image = "1.2.3"
+
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+
+PREFERRED_VERSION_xserver-kdrive = "1.3.0.0"
+PREFERRED_VERSION_libxrandr = "1.2.1"
+PREFERRED_VERSION_xrandr = "1.2.0"
+PREFERRED_VERSION_randrproto = "1.2.1"
+
+PREFERRED_VERSION_libgnomeui = "2.18.1"
+
+PREFERRED_PROVIDER_gtk+ = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-ani = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-bmpg = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-gif = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-ico = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-jpeg = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-pcx = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-png = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-pnm = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-ras = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-tga = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-wbmp = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-xbm = "gtk+"
+PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm = "gtk+"
+
+PREFERRED_PROVIDER_gconf = "gconf"
+
+PREFERRED_VERSION_pixman = "0.9.6"
+
+PREFERRED_PROVIDER_virtual/libqte2 = "qte-mt"
+PREFERRED_PROVIDER_avahi = "avahi"
+
+PREFERRED_VERSION_libsoup = "2.2.7"
+PREFERRED_VERSION_libglade = "2.4.2"
+PREFERRED_VERSION_gnutls = "1.4.5"
+PREFERRED_VERSION_libgpg-error = "1.0"
+PREFERRED_VERSION_libgcrypt = "1.2.3"
+
+PREFERRED_VERSION_gpe-scap = "1.3"
+
+# various Maemo4 specific libraries
+PREFERRED_VERSION_mce-dev = "1.6.3"
+PREFERRED_VERSION_libosso = "2.13"
+PREFERRED_VERSION_libhildon = "1.99.0"
+PREFERRED_VERSION_libhildonmime = "1.10.0"
+PREFERRED_VERSION_libhildonfm = "1.9.46"
+PREFERRED_VERSION_hildon-thumbnail = "0.14"
+PREFERRED_VERSION_osso-gwconnect = "1.0.12"
+PREFERRED_VERSION_osso-gnome-vfs2 = "2.16.3"
+
+# Java stuff
+
+PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native"
+
+PREFERRED_PROVIDER_swt3.4-gtk = "swt3.4-gtk-hildon"
+PREFERRED_VERSION_swt3.4-gtk-hildon = "3.3+3.4M5"
+
+# Does not compile with the CodeSourcery compiler .. :(
+PREFERRED_VERSION_kaffe = "1.1.8+cvs20080120"
+PREFERRED_VERSION_kaffeh-native = "1.1.8+cvs20080120"
+
+# WARNING: If you change these values after the respective package has
+# been built the change will have no effect. Edit the package's file in
+# ${STAGING}/pkgdata/runtime then.
+PKG_ncurses = "libncurses5"
+PKG_ncurses-tools = "ncurses-bin"
+PKG_ncurses-terminfo = "ncurses-base"
+
+PKG_gtk+ = "libgtk2.0-0"
+PKG_pango = "libpango1.0-0"
+PKG_atk = "libatk1.0-0"
+PKG_glib-2.0 = "libglib2.0-0"
+PKG_gconf = "libgconf2-6"
+DEBIANNAME_dbus_pn-dbus = "dbus"
+PKG_hildon-1 = "libhildon1"
+
+PKG_zlib = "zlib1g"
+PKG_libglade = "libglade2-0"
+PKG_libsoup = "libsoup2.2-8"
+
+PKG_libsdl-image = "libsdl-image1.2"
+PKG_libsdl-directfb = "libsdl1.2"
+
+PKG_bluez-libs = "libbluetooth2"
+
+PKG_osso-ic-oss = "osso-ic"
+PKG_libconic = "libconic0"
diff --git a/conf/distro/colinuxoe.conf b/conf/distro/colinuxoe.conf
index 7454c0167f..25ea04a1f5 100644
--- a/conf/distro/colinuxoe.conf
+++ b/conf/distro/colinuxoe.conf
@@ -2,6 +2,8 @@
#@NAME: coLinuxoe
#@DESCRIPTION: Generic OE built distro for the coLinux MACHINE
+TARGET_OS = "linux"
+
INHERIT += "package_ipk debian"
# MACHINE decides that linux-colinux is the correct kernel.
diff --git a/conf/distro/foonas.conf b/conf/distro/foonas.conf
index fe079db92d..8e26a282ab 100644
--- a/conf/distro/foonas.conf
+++ b/conf/distro/foonas.conf
@@ -10,7 +10,6 @@ FOONAS_MODE ?= "glibc"
ANGSTROM_MODE = ${FOONAS_MODE}
require conf/distro/angstrom-2008.1.conf
-DISTRO = "foonas"
DISTRO_NAME = "foonas"
DISTRO_VERSION = "1.0-dev"
DISTRO_REVISION = "1"
diff --git a/conf/distro/generic-uclibc.conf b/conf/distro/generic-uclibc.conf
index 26e78f89c1..805cfe7955 100644
--- a/conf/distro/generic-uclibc.conf
+++ b/conf/distro/generic-uclibc.conf
@@ -27,3 +27,10 @@ PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
PREFERRED_PROVIDER_virtual/libiconv = "libiconv"
PREFERRED_PROVIDER_virtual/libintl = "libintl"
+
+USE_NLS ?= "no"
+USE_NLS_glib-2.0 = "yes"
+
+PREFERRED_VERSION_uclibc = "0.9.29"
+PREFERRED_VERSION_uclibc-initial = "0.9.29"
+
diff --git a/conf/distro/generic.conf b/conf/distro/generic.conf
index 0286666495..d67be1d738 100644
--- a/conf/distro/generic.conf
+++ b/conf/distro/generic.conf
@@ -36,28 +36,34 @@ MACHINE_KERNEL_VERSION = "2.6"
#
# Binutils & Compiler
#
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+PREFERRED_PROVIDER_virtual/arm-linux-binutils = "binutils-cross"
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
PREFERRED_VERSION_gcc ?= "4.1.1"
PREFERRED_VERSION_gcc-cross ?= "4.1.1"
PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1"
-PREFERRED_VERSION_binutils ?= "2.17.50.0.5"
-PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
+PREFERRED_VERSION_binutils ?= "2.18"
+PREFERRED_VERSION_binutils-cross ?= "2.18"
#
# Target OS & FPU system
-#
+#
TARGET_OS = "linux"
TARGET_FPU_arm = "soft"
TARGET_FPU_armeb = "soft"
+#
+# C library
+#
PREFERRED_PROVIDER_virtual/libiconv = "glibc"
PREFERRED_PROVIDER_virtual/libintl = "glibc"
PREFERRED_PROVIDER_virtual/libc = "glibc"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
-PREFERRED_VERSION_linux-libc-headers ?= "2.6.18"
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.23"
PREFERRED_VERSION_glibc ?= "2.5"
PREFERRED_VERSION_glibc-intermediate ?= "2.5"
@@ -65,28 +71,12 @@ PREFERRED_VERSION_glibc-intermediate ?= "2.5"
# Bootstrap & Init
#
PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
-require conf/distro/include/sane-srcdates.inc
-
-#
-# Framebuffer & X
-#
-PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
-PREFERRED_PROVIDER_tslib ?= "tslib"
-require conf/distro/include/preferred-xorg-versions-X11R7.2.inc
#
-# GPE
+# Preferred versions
#
-require conf/distro/include/preferred-gpe-versions-2.8.inc
-#
-# Opie
-#
-QTE_VERSION = "2.3.10"
-PALMTOP_USE_MULTITHREADED_QTE = "yes"
-require conf/distro/include/preferred-opie-versions.inc
+require conf/distro/include/sane-srcdates.inc
+require conf/distro/include/sane-srcrevs.inc
-#
-# Enlightenment
-#
-require conf/distro/include/preferred-e-versions.inc
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
diff --git a/conf/distro/include/angstrom-2007-for-openmoko-versions.inc b/conf/distro/include/angstrom-2007-for-openmoko-versions.inc
new file mode 100644
index 0000000000..6cabe8164c
--- /dev/null
+++ b/conf/distro/include/angstrom-2007-for-openmoko-versions.inc
@@ -0,0 +1,2131 @@
+# This is a lock-down file for stability purposes
+# If you change anything, send a mail to angstrom-distro-devel@linuxtogo.org
+# stating the change and the reason.
+
+# bitbake -s | awk '{print "PREFERRED_VERSION_" $1 "=" $2}' | sed -e s:\+:\=:g | awk -F "=" '{print $1 " ?= \" "$2}' | awk -F "-r" '{print $1"\""}' | sed -e s,0:,,g -e s,1:,,g | sed s:\"\ :\":g> /tmp/angstrom-2007-preferred-versions.inc
+
+PREFERRED_VERSION_0xffff ?= "0.2"
+PREFERRED_VERSION_0xffff-native ?= "0.2"
+PREFERRED_VERSION_aalib ?= "1.4rc5"
+PREFERRED_VERSION_abiword ?= "2.5.2"
+PREFERRED_VERSION_abiword-embedded ?= "2.5.2"
+PREFERRED_VERSION_abiword-plugins ?= "2.5.2"
+PREFERRED_VERSION_abuse ?= "0.7.0"
+PREFERRED_VERSION_acpid ?= "1.0.4"
+PREFERRED_VERSION_acx-firmware ?= "1.0"
+PREFERRED_VERSION_addressbook ?= "0.1"
+PREFERRED_VERSION_adns ?= "1.0"
+PREFERRED_VERSION_agg ?= "2.5"
+PREFERRED_VERSION_aircrack ?= "2.41"
+PREFERRED_VERSION_aircrack-ng ?= "0.9.1"
+PREFERRED_VERSION_albumshaper ?= "2.1"
+PREFERRED_VERSION_aliens ?= "1.0.0"
+PREFERRED_VERSION_aliens-qt ?= "1.0.0"
+PREFERRED_VERSION_alsa-lib ?= "1.0.15"
+PREFERRED_VERSION_alsa-oss ?= "1.0.15"
+PREFERRED_VERSION_alsa-plugins ?= "1.0.14"
+PREFERRED_VERSION_alsa-state ?= "0.1.0"
+PREFERRED_VERSION_alsa-utils ?= "1.0.15"
+PREFERRED_VERSION_anthy ?= "7811"
+PREFERRED_VERSION_anthy-native ?= "7811"
+PREFERRED_VERSION_antlr ?= "2.7.5"
+PREFERRED_VERSION_antlr-native ?= "2.7.5"
+PREFERRED_VERSION_apache2 ?= "2.2.3"
+PREFERRED_VERSION_apache2-native ?= "2.2.3"
+PREFERRED_VERSION_apex-env ?= "1.5.8"
+PREFERRED_VERSION_apex-nslu2 ?= "1.5.8"
+PREFERRED_VERSION_apex-nslu2-16mb ?= "1.5.8"
+PREFERRED_VERSION_apmd ?= "3.2.2"
+PREFERRED_VERSION_applewmproto ?= "1.0.3"
+PREFERRED_VERSION_appres ?= "1.0.1"
+PREFERRED_VERSION_appweb ?= "2.0.4"
+PREFERRED_VERSION_apr ?= "1.2.7"
+PREFERRED_VERSION_apr-util ?= "1.2.7"
+PREFERRED_VERSION_apt ?= "0.7.3"
+PREFERRED_VERSION_apt-native ?= "0.7.3"
+PREFERRED_VERSION_argtable ?= "2.7"
+PREFERRED_VERSION_ark3116 ?= "0.4.1"
+PREFERRED_VERSION_arpwatch ?= "2.1a15"
+PREFERRED_VERSION_aspell ?= "0.60.5"
+PREFERRED_VERSION_aspell-native ?= "0.60.5"
+PREFERRED_VERSION_asterisk ?= "1.4.10"
+PREFERRED_VERSION_asterisk-sounds ?= "1.2.1"
+PREFERRED_VERSION_at ?= "3.1.8"
+PREFERRED_VERSION_atd ?= "0.70"
+PREFERRED_VERSION_atftp ?= "0.7"
+PREFERRED_VERSION_atk ?= "1.20.0"
+PREFERRED_VERSION_atmelwlandriver ?= "3.4.1.0"
+PREFERRED_VERSION_atomic ?= "1.0.1"
+PREFERRED_VERSION_audiofile ?= "0.2.6"
+PREFERRED_VERSION_audioplayer ?= "1.0"
+PREFERRED_VERSION_aumix ?= "2.8"
+PREFERRED_VERSION_autoconf ?= "2.61"
+PREFERRED_VERSION_autoconf-native ?= "2.61"
+PREFERRED_VERSION_autofs ?= "4.1.4"
+PREFERRED_VERSION_automake ?= "1.9.6"
+PREFERRED_VERSION_automake-native ?= "1.9.6"
+PREFERRED_VERSION_avahi ?= "0.6.21"
+PREFERRED_VERSION_avahi-python ?= "0.6.21"
+PREFERRED_VERSION_avahi-ui ?= "0.6.21"
+PREFERRED_VERSION_avetanabt ?= "20060413"
+PREFERRED_VERSION_bacula-client ?= "1.38.11"
+PREFERRED_VERSION_balsa ?= "2.0.17"
+PREFERRED_VERSION_base-files ?= "3.0.14"
+PREFERRED_VERSION_base-passwd ?= "3.5.9"
+PREFERRED_VERSION_bash ?= "3.2"
+PREFERRED_VERSION_bash-completion ?= "20040711"
+PREFERRED_VERSION_bazaar ?= "1.2"
+PREFERRED_VERSION_bb ?= "1.2"
+PREFERRED_VERSION_bc ?= "1.06"
+PREFERRED_VERSION_bdftopcf ?= "1.0.1"
+PREFERRED_VERSION_beecrypt ?= "3.1.0"
+PREFERRED_VERSION_beecrypt-native ?= "3.1.0"
+PREFERRED_VERSION_beep ?= "1.2.2"
+PREFERRED_VERSION_beepmp ?= "0.9.7"
+PREFERRED_VERSION_beforelight ?= "1.0.2"
+PREFERRED_VERSION_benchfft ?= "3.1"
+PREFERRED_VERSION_bigreqsproto ?= "1.0.2"
+PREFERRED_VERSION_bigreqsproto-native ?= "1.0.2"
+PREFERRED_VERSION_billiardz ?= "0.1.4"
+PREFERRED_VERSION_bind ?= "9.3.4-P1"
+PREFERRED_VERSION_bing ?= "1.1.3"
+PREFERRED_VERSION_binutils ?= "2.18"
+PREFERRED_VERSION_binutils-cross ?= "2.18"
+PREFERRED_VERSION_binutils-cross-sdk ?= "2.18"
+PREFERRED_VERSION_bison ?= "2.0"
+PREFERRED_VERSION_bison-native ?= "2.0"
+PREFERRED_VERSION_bitbake ?= "1.8.6"
+PREFERRED_VERSION_bitchx ?= "1.1"
+PREFERRED_VERSION_bluesnarfer ?= "0.1"
+PREFERRED_VERSION_bluez-cups-backend ?= "3.23"
+PREFERRED_VERSION_bluez-dtl1-workaround ?= "1.0"
+PREFERRED_VERSION_bluez-gnome ?= "0.14"
+PREFERRED_VERSION_bluez-gstreamer-plugin ?= "3.23"
+PREFERRED_VERSION_bluez-hcidump ?= "1.38"
+PREFERRED_VERSION_bluez-libs ?= "3.23"
+PREFERRED_VERSION_bluez-utils ?= "3.23"
+PREFERRED_VERSION_bluez-utils-alsa ?= "3.23"
+PREFERRED_VERSION_bmon ?= "2.1.0"
+PREFERRED_VERSION_boa ?= "0.94.13"
+PREFERRED_VERSION_bochs ?= "2.1"
+PREFERRED_VERSION_bogofilter ?= "0.96.0"
+PREFERRED_VERSION_boost ?= "1.33.1"
+PREFERRED_VERSION_boost-asio ?= "0.3.7"
+PREFERRED_VERSION_boost-jam-native ?= "3.1.11"
+PREFERRED_VERSION_bootchart ?= "0.9"
+PREFERRED_VERSION_bootmenu ?= "0.7"
+PREFERRED_VERSION_bootsplash ?= "3.0.7"
+PREFERRED_VERSION_bootsplash-native ?= "3.0.7"
+PREFERRED_VERSION_brickout ?= "2002.06.09"
+PREFERRED_VERSION_brutefir ?= "1.0i"
+PREFERRED_VERSION_bt950-cs ?= "0.1"
+PREFERRED_VERSION_btscanner ?= "2.0"
+PREFERRED_VERSION_btsco ?= "0.42"
+PREFERRED_VERSION_btsco-module ?= "0.42"
+PREFERRED_VERSION_btxml ?= "1.0"
+PREFERRED_VERSION_busybox ?= "1.2.1"
+PREFERRED_VERSION_busybox-static ?= "1.2.1"
+PREFERRED_VERSION_bvi ?= "1.3.1"
+PREFERRED_VERSION_bwmon ?= "1.3"
+PREFERRED_VERSION_bzflag ?= "1.10.6.20040515"
+PREFERRED_VERSION_bzflag-server ?= "1.10.6.20040515"
+PREFERRED_VERSION_bzip2 ?= "1.0.2"
+PREFERRED_VERSION_c-ares ?= "1.3.0"
+PREFERRED_VERSION_cacao-cldc ?= "0.98"
+PREFERRED_VERSION_cacaoh-cldc-native ?= "0.98"
+PREFERRED_VERSION_cairo ?= "1.4.10"
+PREFERRED_VERSION_cairo-directfb ?= "1.4.8"
+PREFERRED_VERSION_cairomm ?= "1.2.4"
+PREFERRED_VERSION_calendar ?= "1.0"
+PREFERRED_VERSION_came ?= "1.7"
+PREFERRED_VERSION_camera-assistant ?= "0.2.0"
+PREFERRED_VERSION_camsource ?= "0.7.0"
+PREFERRED_VERSION_cbrpager ?= "0.9.14"
+PREFERRED_VERSION_ccache ?= "2.4"
+PREFERRED_VERSION_cccc ?= "3.pre84"
+PREFERRED_VERSION_ccdv ?= "1.0"
+PREFERRED_VERSION_ccdv-native ?= "1.0"
+PREFERRED_VERSION_ccxstream ?= "1.0.15"
+PREFERRED_VERSION_cdparanoia ?= "9.8alpha"
+PREFERRED_VERSION_cdrtools-native ?= "2.01"
+PREFERRED_VERSION_cdstatus ?= "0.96.05"
+PREFERRED_VERSION_cdtool ?= "2.1.8"
+PREFERRED_VERSION_cdump-native ?= "1.0"
+PREFERRED_VERSION_centericq ?= "4.11.0"
+PREFERRED_VERSION_cetools ?= "0.3"
+PREFERRED_VERSION_cetools-native ?= "0.3"
+PREFERRED_VERSION_cflow ?= "2.0"
+PREFERRED_VERSION_cfu1-modules ?= "2.6"
+PREFERRED_VERSION_check ?= "0.9.2"
+PREFERRED_VERSION_checkers ?= "1.0.5ern"
+PREFERRED_VERSION_cherokee ?= "0.5.5"
+PREFERRED_VERSION_cherokee-nossl ?= "0.5.3"
+PREFERRED_VERSION_chillispot ?= "1.0RC3"
+PREFERRED_VERSION_chkhinge ?= "20040706"
+PREFERRED_VERSION_chmlib ?= "0.38"
+PREFERRED_VERSION_chrpath ?= "0.13"
+PREFERRED_VERSION_chrpath-native ?= "0.13"
+PREFERRED_VERSION_ckermit ?= "211"
+PREFERRED_VERSION_clamav ?= "0.91.1"
+PREFERRED_VERSION_clamsmtp ?= "1.8"
+PREFERRED_VERSION_classpath ?= "0.20"
+PREFERRED_VERSION_classpath-gtk ?= "0.93"
+PREFERRED_VERSION_classpath-minimal ?= "0.95"
+PREFERRED_VERSION_classpath-minimal-native ?= "0.95"
+PREFERRED_VERSION_clearsilver ?= "0.10.3"
+PREFERRED_VERSION_clish ?= "0.7.1"
+PREFERRED_VERSION_cmake-native ?= "2.4.7"
+PREFERRED_VERSION_cms92init ?= "0.1"
+PREFERRED_VERSION_compositeproto ?= "0.4"
+PREFERRED_VERSION_comprec ?= "0.02"
+PREFERRED_VERSION_confuse ?= "2.5"
+PREFERRED_VERSION_confuse-native ?= "2.5"
+PREFERRED_VERSION_connect ?= "0.1"
+PREFERRED_VERSION_conserver ?= "8.1.14"
+PREFERRED_VERSION_console-tools ?= "0.3.2"
+PREFERRED_VERSION_contacts ?= "0.7"
+PREFERRED_VERSION_coreutils ?= "5.3.0"
+PREFERRED_VERSION_coreutils-native ?= "5.3.0"
+PREFERRED_VERSION_corkscrew ?= "2.0"
+PREFERRED_VERSION_corsair ?= "0.2.6"
+PREFERRED_VERSION_cpio ?= "2.5"
+PREFERRED_VERSION_cppunit ?= "1.10.2"
+PREFERRED_VERSION_cpuburn ?= "1.4"
+PREFERRED_VERSION_cpufreqd ?= "1.1.2"
+PREFERRED_VERSION_cpusage ?= "0.2"
+PREFERRED_VERSION_cpuspeed ?= "1.1"
+PREFERRED_VERSION_cramfs ?= "1.1"
+PREFERRED_VERSION_cramfs-native ?= "1.1"
+PREFERRED_VERSION_crimsonfields ?= "0.4.8"
+PREFERRED_VERSION_crimsonfields-native ?= "0.4.8"
+PREFERRED_VERSION_cron ?= "3.0pl1"
+PREFERRED_VERSION_cross-linkage ?= "1.0"
+PREFERRED_VERSION_crossword ?= "0.0.3"
+PREFERRED_VERSION_cscope ?= "15.5"
+PREFERRED_VERSION_ctags-native ?= "5.5.4"
+PREFERRED_VERSION_ctorrent ?= "1.3.4"
+PREFERRED_VERSION_ctrlproxy ?= "2.6.2"
+PREFERRED_VERSION_cumulus ?= "1.2.1"
+PREFERRED_VERSION_cups ?= "1.2.12"
+PREFERRED_VERSION_curl ?= "7.16.4"
+PREFERRED_VERSION_curl-native ?= "7.16.4"
+PREFERRED_VERSION_custominput ?= "1.1.0"
+PREFERRED_VERSION_cvs ?= "1.12.9"
+PREFERRED_VERSION_cxcrypt ?= "1.0"
+PREFERRED_VERSION_cyrus-imapd ?= "2.2.12"
+PREFERRED_VERSION_cyrus-sasl ?= "2.1.19"
+PREFERRED_VERSION_damageext ?= "1.0"
+PREFERRED_VERSION_damageproto ?= "1.1.0"
+PREFERRED_VERSION_dash ?= "0.5.2"
+PREFERRED_VERSION_dasher-gpe ?= "0.0cvs20040828"
+PREFERRED_VERSION_dates ?= "0.4.4"
+PREFERRED_VERSION_davfs2 ?= "0.2.8"
+PREFERRED_VERSION_db ?= "4.3.29"
+PREFERRED_VERSION_db-native ?= "4.3.29"
+PREFERRED_VERSION_db3 ?= "3.2.9"
+PREFERRED_VERSION_db3-native ?= "3.2.9"
+PREFERRED_VERSION_dbench ?= "3.04"
+PREFERRED_VERSION_dbh ?= "1.0-18"
+PREFERRED_VERSION_dbus ?= "1.0.2"
+PREFERRED_VERSION_dbus-glib ?= "0.74"
+PREFERRED_VERSION_dbus-glib-native ?= "0.74"
+PREFERRED_VERSION_dbus-native ?= "1.0.1"
+PREFERRED_VERSION_dbus-python ?= "0.71"
+PREFERRED_VERSION_dcetest ?= "1.2"
+PREFERRED_VERSION_dcopidl-native ?= "3.5.4"
+PREFERRED_VERSION_dcopidl2cpp-native ?= "3.5.4"
+PREFERRED_VERSION_dcron ?= "2.3.3"
+PREFERRED_VERSION_ddclient ?= "3.6.3"
+PREFERRED_VERSION_debianutils ?= "2.19"
+PREFERRED_VERSION_dejagnu ?= "1.4.4"
+PREFERRED_VERSION_dejagnu-native ?= "1.4.4"
+PREFERRED_VERSION_detect-stylus ?= "0.13"
+PREFERRED_VERSION_device-mapper ?= "1.01.05"
+PREFERRED_VERSION_devimage ?= "0.1"
+PREFERRED_VERSION_devimage-image ?= "1.0"
+PREFERRED_VERSION_devio ?= "1.2"
+PREFERRED_VERSION_devio-native ?= "1.2"
+PREFERRED_VERSION_devlabel ?= "0.48.01"
+PREFERRED_VERSION_devmem2 ?= "1.0"
+PREFERRED_VERSION_devshell ?= "1.0"
+PREFERRED_VERSION_dgen-sdl ?= "1.23"
+PREFERRED_VERSION_dhcdbd ?= "2.0"
+PREFERRED_VERSION_dhclient ?= "2.0pl5"
+PREFERRED_VERSION_dhcp ?= "3.0.2"
+PREFERRED_VERSION_dhcp-forwarder ?= "0.7"
+PREFERRED_VERSION_dhcpcd ?= "1.3.22-pl4"
+PREFERRED_VERSION_didiwiki ?= "0.5"
+PREFERRED_VERSION_diet-x11 ?= "1.1.3"
+PREFERRED_VERSION_diethotplug ?= "0.4"
+PREFERRED_VERSION_diffstat ?= "1.39"
+PREFERRED_VERSION_diffutils ?= "2.8.1"
+PREFERRED_VERSION_dillo ?= "0.8.6"
+PREFERRED_VERSION_dillo2 ?= "0.6.6"
+PREFERRED_VERSION_dircproxy ?= "1.1.0"
+PREFERRED_VERSION_directfb ?= "1.1.0"
+PREFERRED_VERSION_directfb-examples ?= "1.0.0"
+PREFERRED_VERSION_display-brightness ?= "1.0.0"
+PREFERRED_VERSION_distcc ?= "2.18.3"
+PREFERRED_VERSION_djvulibre ?= "3.5.19"
+PREFERRED_VERSION_dmxproto ?= "2.2.2"
+PREFERRED_VERSION_dnsmasq ?= "2.38"
+PREFERRED_VERSION_docbook-utils ?= "0.6.13"
+PREFERRED_VERSION_docbook-utils-native ?= "0.6.13"
+PREFERRED_VERSION_dosbox ?= "0.70"
+PREFERRED_VERSION_dosfstools ?= "2.11"
+PREFERRED_VERSION_dosfstools-native ?= "2.10"
+PREFERRED_VERSION_dpkg ?= "1.13.25"
+PREFERRED_VERSION_dpkg-native ?= "1.13.25"
+PREFERRED_VERSION_driftnet ?= "0.1.6"
+PREFERRED_VERSION_driftnet-nogui ?= "0.1.6"
+PREFERRED_VERSION_dropbear ?= "0.49"
+PREFERRED_VERSION_dsniff ?= "2.3"
+PREFERRED_VERSION_duma ?= "2.5.7"
+PREFERRED_VERSION_dvb-image ?= "1.0"
+PREFERRED_VERSION_dvbtraffic ?= "0.0cvs20060814"
+PREFERRED_VERSION_dviviewer ?= "1.0.2"
+PREFERRED_VERSION_e-uae ?= "0.8.28"
+PREFERRED_VERSION_e-wm ?= "0.16.999.041"
+PREFERRED_VERSION_e2fsprogs ?= "1.38"
+PREFERRED_VERSION_e2fsprogs-libs ?= "1.39"
+PREFERRED_VERSION_e2fsprogs-libs-native ?= "1.35"
+PREFERRED_VERSION_e2fsprogs-native ?= "1.38"
+PREFERRED_VERSION_e2tools ?= "0.0.16"
+PREFERRED_VERSION_e2tools-native ?= "0.0.16"
+PREFERRED_VERSION_eb ?= "4.3"
+PREFERRED_VERSION_ebtables ?= "2.0.6"
+PREFERRED_VERSION_eciadsl ?= "0.11"
+PREFERRED_VERSION_ecj-native ?= "3.3"
+PREFERRED_VERSION_editres ?= "1.0.2"
+PREFERRED_VERSION_eds-feed ?= "0.3.2"
+PREFERRED_VERSION_eel ?= "2.12.2"
+PREFERRED_VERSION_ekg ?= "1.6"
+PREFERRED_VERSION_elfkickers ?= "2.0a"
+PREFERRED_VERSION_elfkickers-native ?= "2.0a"
+PREFERRED_VERSION_elftoaout ?= "2.3"
+PREFERRED_VERSION_elftoaout-native ?= "2.3"
+PREFERRED_VERSION_elfutils ?= "0.127"
+PREFERRED_VERSION_elvis ?= "2.2.0"
+PREFERRED_VERSION_elvis-tiny ?= "2.2.0"
+PREFERRED_VERSION_emacs ?= "20060801"
+PREFERRED_VERSION_emacs-x11 ?= "20060801"
+PREFERRED_VERSION_emelfm2 ?= "0.0.8"
+PREFERRED_VERSION_empathy ?= "0.5"
+PREFERRED_VERSION_emul ?= "1.0.5"
+PREFERRED_VERSION_enca ?= "1.9"
+PREFERRED_VERSION_enchant ?= "1.3.0"
+PREFERRED_VERSION_encodings ?= "1.0.2"
+PREFERRED_VERSION_enscript ?= "1.6.4"
+PREFERRED_VERSION_entrance ?= "0.9.0.010"
+PREFERRED_VERSION_epiphany ?= "2.19.6"
+PREFERRED_VERSION_erlang ?= "R11B.1"
+PREFERRED_VERSION_erlang-native ?= "R11B.1"
+PREFERRED_VERSION_esmtp ?= "0.5.1"
+PREFERRED_VERSION_esound ?= "0.2.36"
+PREFERRED_VERSION_espgs ?= "8.15.3"
+PREFERRED_VERSION_etherpuppet ?= "0.2"
+PREFERRED_VERSION_ethload ?= "1.2"
+PREFERRED_VERSION_ettercap ?= "0.6.b"
+PREFERRED_VERSION_eventlog ?= "0.2.5"
+PREFERRED_VERSION_evieext ?= "1.0.2"
+PREFERRED_VERSION_evince ?= "2.20.0"
+PREFERRED_VERSION_exiv2 ?= "0.15"
+PREFERRED_VERSION_exmap-console ?= "0.4.1"
+PREFERRED_VERSION_exml ?= "cvs"
+PREFERRED_VERSION_exo ?= "0.3.2"
+PREFERRED_VERSION_expat ?= "2.0.0"
+PREFERRED_VERSION_expat-native ?= "1.95.7"
+PREFERRED_VERSION_expect ?= "5.44.1"
+PREFERRED_VERSION_ez-ipupdate ?= "3.0.10"
+PREFERRED_VERSION_ezx-boot-usb-native ?= "0.1.0"
+PREFERRED_VERSION_ezx-gpiotool ?= "1877"
+PREFERRED_VERSION_faac ?= "1.24"
+PREFERRED_VERSION_faad2 ?= "2.0"
+PREFERRED_VERSION_fakechroot ?= "2.5"
+PREFERRED_VERSION_fakechroot-native ?= "2.5"
+PREFERRED_VERSION_fakeconnect ?= "1.2.1"
+PREFERRED_VERSION_fakeroot ?= "1.7.1"
+PREFERRED_VERSION_fakeroot-native ?= "1.7.1"
+PREFERRED_VERSION_fam ?= "2.7.0"
+PREFERRED_VERSION_farsight ?= "0.1.5"
+PREFERRED_VERSION_fastcgi ?= "2.4.0"
+PREFERRED_VERSION_fastjar-native ?= "0.95"
+PREFERRED_VERSION_fbgetty ?= "0.1.698"
+PREFERRED_VERSION_fbgrab ?= "1.0"
+PREFERRED_VERSION_fbpanel ?= "4.3"
+PREFERRED_VERSION_fbreader ?= "0.8.2a"
+PREFERRED_VERSION_fbset ?= "2.1"
+PREFERRED_VERSION_fbui-utils ?= "0.9.14c"
+PREFERRED_VERSION_fbvncserver ?= "0.9.4"
+PREFERRED_VERSION_fbvncserver-kmodule ?= "0.9.4"
+PREFERRED_VERSION_fceu ?= "0.98.13-pre"
+PREFERRED_VERSION_fconfig ?= "20060419"
+PREFERRED_VERSION_fcron ?= "3.0.2"
+PREFERRED_VERSION_feh ?= "1.2.7"
+PREFERRED_VERSION_fetchmail ?= "6.2.5"
+PREFERRED_VERSION_ffmpeg ?= "0.4.9-pre1"
+PREFERRED_VERSION_fftw ?= "3.1.2"
+PREFERRED_VERSION_fftwf ?= "3.1.2"
+PREFERRED_VERSION_fftwl ?= "3.1.2"
+PREFERRED_VERSION_fget ?= "1.3.3"
+PREFERRED_VERSION_figment ?= "0.3.5"
+PREFERRED_VERSION_file ?= "4.21"
+PREFERRED_VERSION_file-native ?= "4.21"
+PREFERRED_VERSION_findutils ?= "4.2.29"
+PREFERRED_VERSION_findutils-native ?= "4.2.29"
+PREFERRED_VERSION_firefox ?= "1.0.7"
+PREFERRED_VERSION_fis ?= "1.0"
+PREFERRED_VERSION_fish ?= "1.1.0"
+PREFERRED_VERSION_fixesproto ?= "4.0"
+PREFERRED_VERSION_flac ?= "1.1.2"
+PREFERRED_VERSION_flex ?= "2.5.31"
+PREFERRED_VERSION_flex-native ?= "2.5.31"
+PREFERRED_VERSION_flexis-zaurus ?= "1.0.0"
+PREFERRED_VERSION_flnx ?= "0.18"
+PREFERRED_VERSION_fltk ?= "1.1.7"
+PREFERRED_VERSION_flumotion ?= "0.4.1"
+PREFERRED_VERSION_fontcacheproto ?= "0.1.2"
+PREFERRED_VERSION_fontcacheproto-native ?= "0.1.2"
+PREFERRED_VERSION_fontconfig ?= "2.4.1"
+PREFERRED_VERSION_fontconfig-native ?= "2.3.91"
+PREFERRED_VERSION_fontsproto ?= "2.0.2"
+PREFERRED_VERSION_fontsproto-native ?= "2.0.2"
+PREFERRED_VERSION_fonttosfnt ?= "1.0.3"
+PREFERRED_VERSION_foonas-init ?= "0.10"
+PREFERRED_VERSION_foonas-packages ?= "1.0"
+PREFERRED_VERSION_fortune-mod ?= "1.99.1"
+PREFERRED_VERSION_fpdf ?= "1.53"
+PREFERRED_VERSION_free42-vga ?= "1.4.36"
+PREFERRED_VERSION_freeciv ?= "2.0.8"
+PREFERRED_VERSION_freedoom ?= "0.3"
+PREFERRED_VERSION_freedroid ?= "1.0.2"
+PREFERRED_VERSION_freenote ?= "1.12.0"
+PREFERRED_VERSION_freeze ?= "1.0"
+PREFERRED_VERSION_frodo ?= "4.2"
+PREFERRED_VERSION_froot ?= "0.7.1"
+PREFERRED_VERSION_frotz ?= "2.43"
+PREFERRED_VERSION_frozen-bubble ?= "1.0.0"
+PREFERRED_VERSION_fsi-client ?= "20040803"
+PREFERRED_VERSION_ftdi-eeprom ?= "0.2"
+PREFERRED_VERSION_ftdi-eeprom-native ?= "0.2"
+PREFERRED_VERSION_ftpd-topfield ?= "0.7.4"
+PREFERRED_VERSION_fuse ?= "2.6.5"
+PREFERRED_VERSION_fuse-module ?= "2.6.5"
+PREFERRED_VERSION_fush ?= "0.9.0"
+PREFERRED_VERSION_fxload ?= "0.0.20020411"
+PREFERRED_VERSION_g15daemon ?= "1.2.6a"
+PREFERRED_VERSION_gail ?= "1.20.0"
+PREFERRED_VERSION_gaim ?= "1.5.0"
+PREFERRED_VERSION_gal-2.0 ?= "1.99.11"
+PREFERRED_VERSION_gal-2.1 ?= "2.1.10"
+PREFERRED_VERSION_galago-daemon ?= "0.3.4"
+PREFERRED_VERSION_galculator ?= "1.2.3"
+PREFERRED_VERSION_gallery ?= "1.5.5"
+PREFERRED_VERSION_gamin ?= "0.1.8"
+PREFERRED_VERSION_gammu ?= "1.17.0"
+PREFERRED_VERSION_gawk ?= "3.1.4"
+PREFERRED_VERSION_gawk-native ?= "3.1.4"
+PREFERRED_VERSION_gcalctool ?= "5.7.32"
+PREFERRED_VERSION_gccmakedep ?= "1.0.2"
+PREFERRED_VERSION_gconf ?= "2.6.1"
+PREFERRED_VERSION_gconf-native ?= "2.6.1"
+PREFERRED_VERSION_gd ?= "2.0.33"
+PREFERRED_VERSION_gdado ?= "2.2"
+PREFERRED_VERSION_gdal ?= "1.3.2"
+PREFERRED_VERSION_gdb ?= "6.6"
+PREFERRED_VERSION_gdb-cross ?= "6.6"
+PREFERRED_VERSION_gdb-cross-sdk ?= "6.6"
+PREFERRED_VERSION_gdbm ?= "1.8.3"
+PREFERRED_VERSION_gdbm-native ?= "1.8.3"
+PREFERRED_VERSION_gdk-pixbuf-csource-native ?= "2.10.14"
+PREFERRED_VERSION_gdm ?= "2.14.9"
+PREFERRED_VERSION_geda ?= "20050820"
+PREFERRED_VERSION_geda-gattrib ?= "20050820"
+PREFERRED_VERSION_geda-gschem ?= "20050820"
+PREFERRED_VERSION_geda-gsymcheck ?= "20050820"
+PREFERRED_VERSION_geda-symbols ?= "20050820"
+PREFERRED_VERSION_geda-utils ?= "20050820"
+PREFERRED_VERSION_gemdropx ?= "0.9"
+PREFERRED_VERSION_genboot-native ?= "1.0"
+PREFERRED_VERSION_genext2fs ?= "1.3"
+PREFERRED_VERSION_genext2fs-native ?= "1.3"
+PREFERRED_VERSION_genlist ?= "1.0"
+PREFERRED_VERSION_geode-accessbus5536 ?= "2.6.11"
+PREFERRED_VERSION_geode-aeslx ?= "2.6.11"
+PREFERRED_VERSION_geode-alsa5536 ?= "2.6.11"
+PREFERRED_VERSION_gettext ?= "0.14.1"
+PREFERRED_VERSION_gettext-native ?= "0.14.1"
+PREFERRED_VERSION_gftp ?= "2.0.18"
+PREFERRED_VERSION_ghettotooth ?= "1.0"
+PREFERRED_VERSION_giac ?= "0.5.0"
+PREFERRED_VERSION_giblib ?= "1.2.4"
+PREFERRED_VERSION_gif2png ?= "2.5.1"
+PREFERRED_VERSION_gift ?= "0.11.5"
+PREFERRED_VERSION_giftcurs ?= "0.6.2"
+PREFERRED_VERSION_gimp ?= "2.3.19"
+PREFERRED_VERSION_ginspector ?= "20050529"
+PREFERRED_VERSION_git ?= "1.5.2.3"
+PREFERRED_VERSION_git-native ?= "1.5.2.3"
+PREFERRED_VERSION_gizmod ?= "2.3"
+PREFERRED_VERSION_gkrellm ?= "2.2.10"
+PREFERRED_VERSION_glib-1.2 ?= "1.2.10"
+PREFERRED_VERSION_glib-1.2-native ?= "1.2.10"
+PREFERRED_VERSION_glib-2.0 ?= "2.14.1"
+PREFERRED_VERSION_glib-2.0-native ?= "2.12.4"
+PREFERRED_VERSION_glibc ?= "2.6.1"
+PREFERRED_VERSION_glibc-initial ?= "2.6.1"
+PREFERRED_VERSION_glibmm ?= "2.12.10"
+PREFERRED_VERSION_glider ?= "1.0.0"
+PREFERRED_VERSION_gloox ?= "0.8.9"
+PREFERRED_VERSION_glproto ?= "1.4.8"
+PREFERRED_VERSION_glrr ?= "20050529"
+PREFERRED_VERSION_glrr-widgets ?= "20050529"
+PREFERRED_VERSION_glurp ?= "0.11.3"
+PREFERRED_VERSION_gmailfs ?= "0.7.3"
+PREFERRED_VERSION_gmp ?= "4.2.1"
+PREFERRED_VERSION_gmp-native ?= "4.2.1"
+PREFERRED_VERSION_gmpc ?= "0.13.0"
+PREFERRED_VERSION_gnash ?= "0.8.0"
+PREFERRED_VERSION_gnocky ?= "0.0.3"
+PREFERRED_VERSION_gnokii ?= "0.6.14"
+PREFERRED_VERSION_gnome-common ?= "2.20.0"
+PREFERRED_VERSION_gnome-cups-manager ?= "0.31"
+PREFERRED_VERSION_gnome-desktop ?= "2.18.3"
+PREFERRED_VERSION_gnome-doc-utils ?= "0.12.0"
+PREFERRED_VERSION_gnome-games ?= "2.6.1"
+PREFERRED_VERSION_gnome-icon-theme ?= "1.3.3"
+PREFERRED_VERSION_gnome-keyring ?= "2.20.0"
+PREFERRED_VERSION_gnome-menus ?= "2.16.1"
+PREFERRED_VERSION_gnome-mime-data ?= "2.18.0"
+PREFERRED_VERSION_gnome-panel ?= "2.18.1"
+PREFERRED_VERSION_gnome-power ?= "0.0.5"
+PREFERRED_VERSION_gnome-power-manager ?= "2.18.3"
+PREFERRED_VERSION_gnome-themes ?= "2.6.2"
+PREFERRED_VERSION_gnome-vfs ?= "2.20.0"
+PREFERRED_VERSION_gnome-vfs-extras ?= "0.99.13"
+PREFERRED_VERSION_gnome-vfs-obexftp ?= "0.4"
+PREFERRED_VERSION_gnomebaker ?= "0.6.0"
+PREFERRED_VERSION_gnomesword ?= "2.1.2"
+PREFERRED_VERSION_gnuchess ?= "5.05"
+PREFERRED_VERSION_gnumeric ?= "1.6.3"
+PREFERRED_VERSION_gnupg ?= "1.4.2.2"
+PREFERRED_VERSION_gnuplot ?= "4.2.2"
+PREFERRED_VERSION_gnuradio ?= "3.0.4"
+PREFERRED_VERSION_gnutls ?= "1.6.3"
+PREFERRED_VERSION_gob2 ?= "2.0.14"
+PREFERRED_VERSION_gobby ?= "0.4.1"
+PREFERRED_VERSION_goffice ?= "0.2.1"
+PREFERRED_VERSION_gparted ?= "0.3.3"
+PREFERRED_VERSION_gpdf ?= "2.10.0"
+PREFERRED_VERSION_gpe-aerial ?= "0.3.0"
+PREFERRED_VERSION_gpe-announce ?= "0.13"
+PREFERRED_VERSION_gpe-applauncher ?= "0.11"
+PREFERRED_VERSION_gpe-appmgr ?= "2.8"
+PREFERRED_VERSION_gpe-autostarter ?= "0.12"
+PREFERRED_VERSION_gpe-beam ?= "0.2.9"
+PREFERRED_VERSION_gpe-bluetooth ?= "0.55"
+PREFERRED_VERSION_gpe-bootsplash ?= "1.15"
+PREFERRED_VERSION_gpe-bootsplash-theme-e ?= "1.0"
+PREFERRED_VERSION_gpe-bootsplash-theme-gpephone ?= "1.0"
+PREFERRED_VERSION_gpe-buttonbox ?= "0.5"
+PREFERRED_VERSION_gpe-calculator ?= "0.2"
+PREFERRED_VERSION_gpe-calendar ?= "0.91"
+PREFERRED_VERSION_gpe-clock ?= "0.25"
+PREFERRED_VERSION_gpe-conf ?= "0.2.6"
+PREFERRED_VERSION_gpe-confd ?= "0.16"
+PREFERRED_VERSION_gpe-contacts ?= "0.47"
+PREFERRED_VERSION_gpe-contacts-hildon ?= "0.42"
+PREFERRED_VERSION_gpe-dm ?= "0.51"
+PREFERRED_VERSION_gpe-edit ?= "0.40"
+PREFERRED_VERSION_gpe-expenses ?= "0.0.6"
+PREFERRED_VERSION_gpe-filemanager ?= "0.30"
+PREFERRED_VERSION_gpe-fsi ?= "0.1"
+PREFERRED_VERSION_gpe-gallery ?= "0.97"
+PREFERRED_VERSION_gpe-go ?= "0.05"
+PREFERRED_VERSION_gpe-helpviewer ?= "1.0"
+PREFERRED_VERSION_gpe-icons ?= "0.25"
+PREFERRED_VERSION_gpe-irc ?= "0.08"
+PREFERRED_VERSION_gpe-keylock ?= "0.12"
+PREFERRED_VERSION_gpe-life ?= "0.2"
+PREFERRED_VERSION_gpe-lights ?= "0.13"
+PREFERRED_VERSION_gpe-login ?= "0.91"
+PREFERRED_VERSION_gpe-mini-browser ?= "0.21"
+PREFERRED_VERSION_gpe-mini-browser-hildon ?= "0.17"
+PREFERRED_VERSION_gpe-mininet ?= "0.7"
+PREFERRED_VERSION_gpe-mixer ?= "0.42"
+PREFERRED_VERSION_gpe-nmf ?= "0.22"
+PREFERRED_VERSION_gpe-othello ?= "0.2-1"
+PREFERRED_VERSION_gpe-ownerinfo ?= "0.28"
+PREFERRED_VERSION_gpe-package ?= "0.4"
+PREFERRED_VERSION_gpe-phonepanel ?= "0.9"
+PREFERRED_VERSION_gpe-plucker ?= "0.4"
+PREFERRED_VERSION_gpe-question ?= "0.04"
+PREFERRED_VERSION_gpe-scap ?= "1.3"
+PREFERRED_VERSION_gpe-session-scripts ?= "0.67"
+PREFERRED_VERSION_gpe-session-scripts-phone ?= "0.67"
+PREFERRED_VERSION_gpe-shield ?= "0.9"
+PREFERRED_VERSION_gpe-sketchbook ?= "0.2.9"
+PREFERRED_VERSION_gpe-snes ?= "0.2"
+PREFERRED_VERSION_gpe-soundbite ?= "1.0.6"
+PREFERRED_VERSION_gpe-soundserver ?= "0.4-1"
+PREFERRED_VERSION_gpe-su ?= "0.19"
+PREFERRED_VERSION_gpe-synctool ?= "0.2"
+PREFERRED_VERSION_gpe-taskmanager ?= "0.20"
+PREFERRED_VERSION_gpe-terminal ?= "1.1"
+PREFERRED_VERSION_gpe-tetris ?= "0.6-4"
+PREFERRED_VERSION_gpe-theme-clearlooks ?= "0.3"
+PREFERRED_VERSION_gpe-theme-e17 ?= "0.1"
+PREFERRED_VERSION_gpe-theme-foxbox ?= "0.1"
+PREFERRED_VERSION_gpe-theme-industrial ?= "0.2"
+PREFERRED_VERSION_gpe-today ?= "0.11"
+PREFERRED_VERSION_gpe-todo ?= "0.56"
+PREFERRED_VERSION_gpe-todo-hildon ?= "0.55"
+PREFERRED_VERSION_gpe-watch ?= "0.10"
+PREFERRED_VERSION_gpe-what ?= "0.43"
+PREFERRED_VERSION_gpe-windowlist ?= "0.1"
+PREFERRED_VERSION_gperf ?= "3.0.3"
+PREFERRED_VERSION_gperf-native ?= "3.0.3"
+PREFERRED_VERSION_gperiodic ?= "1.3.3"
+PREFERRED_VERSION_gpesyncd ?= "2.0"
+PREFERRED_VERSION_gpgme ?= "1.1.4"
+PREFERRED_VERSION_gphoto2 ?= "2.4.0"
+PREFERRED_VERSION_gpicview ?= "0.1.5"
+PREFERRED_VERSION_gpm ?= "1.20.1"
+PREFERRED_VERSION_gpp ?= "2.21"
+PREFERRED_VERSION_gpsbabel ?= "1.3.3"
+PREFERRED_VERSION_gpsd ?= "2.34"
+PREFERRED_VERSION_gpsdrive ?= "2.10pre2"
+PREFERRED_VERSION_gpstk ?= "1.2"
+PREFERRED_VERSION_gqview ?= "2.1.1"
+PREFERRED_VERSION_granule ?= "1.2.4"
+PREFERRED_VERSION_grass ?= "6.2.1"
+PREFERRED_VERSION_grep ?= "2.5.1"
+PREFERRED_VERSION_grep-native ?= "2.5.1"
+PREFERRED_VERSION_grip ?= "3.2.0"
+PREFERRED_VERSION_groff ?= "1.19.2"
+PREFERRED_VERSION_gs ?= "8.16"
+PREFERRED_VERSION_gsl ?= "1.4"
+PREFERRED_VERSION_gsmmux ?= "alpha-2"
+PREFERRED_VERSION_gsoap ?= "2.7.7"
+PREFERRED_VERSION_gsoap-native ?= "2.7.7"
+PREFERRED_VERSION_gsoko ?= "0.4.2-gpe6"
+PREFERRED_VERSION_gspcav1 ?= "20070110"
+PREFERRED_VERSION_gst-ffmpeg ?= "0.10.2"
+PREFERRED_VERSION_gst-meta-base ?= "0.10"
+PREFERRED_VERSION_gst-plugin-pulse ?= "0.9.4"
+PREFERRED_VERSION_gst-plugins-bad ?= "0.10.5"
+PREFERRED_VERSION_gst-plugins-base ?= "0.10.14"
+PREFERRED_VERSION_gst-plugins-farsight ?= "0.10.1"
+PREFERRED_VERSION_gst-plugins-good ?= "0.10.6"
+PREFERRED_VERSION_gst-plugins-ugly ?= "0.10.6"
+PREFERRED_VERSION_gstreamer ?= "0.10.14"
+PREFERRED_VERSION_gthumb ?= "2.6.9"
+PREFERRED_VERSION_gtk+ ?= "2.10.14"
+PREFERRED_VERSION_gtk-clearlooks-engine ?= "0.6.2"
+PREFERRED_VERSION_gtk-doc ?= "1.0"
+PREFERRED_VERSION_gtk-doc-native ?= "1.0"
+PREFERRED_VERSION_gtk-engines ?= "2.7.4"
+PREFERRED_VERSION_gtk-industrial-engine ?= "0.2.46.0"
+PREFERRED_VERSION_gtk-sato-engine ?= "0.1"
+PREFERRED_VERSION_gtk-sharp ?= "2.10.2"
+PREFERRED_VERSION_gtk-smooth-engine ?= "0.5.8"
+PREFERRED_VERSION_gtk-xfce-engine ?= "2.4.1"
+PREFERRED_VERSION_gtk2-ssh-askpass ?= "0.3"
+PREFERRED_VERSION_gtk2-theme-angelistic ?= "0.3"
+PREFERRED_VERSION_gtkhtml-2.0 ?= "2.6.3"
+PREFERRED_VERSION_gtkhtml-3.0 ?= "3.0.10"
+PREFERRED_VERSION_gtkhtml-3.1 ?= "3.1.16"
+PREFERRED_VERSION_gtkhtml-3.6 ?= "3.6.2"
+PREFERRED_VERSION_gtkhtml-3.8 ?= "3.8.2"
+PREFERRED_VERSION_gtkimageview ?= "1.3.0"
+PREFERRED_VERSION_gtkmathview ?= "0.7.6"
+PREFERRED_VERSION_gtkmm ?= "2.10.10"
+PREFERRED_VERSION_gtksourceview ?= "1.7.2"
+PREFERRED_VERSION_gtkterm2 ?= "0.2.3"
+PREFERRED_VERSION_gtracer ?= "0.0.10"
+PREFERRED_VERSION_guichan ?= "0.7.1"
+PREFERRED_VERSION_guile ?= "1.6.4"
+PREFERRED_VERSION_guile-native ?= "1.8.2"
+PREFERRED_VERSION_gutenprint ?= "5.1.3"
+PREFERRED_VERSION_gutenprint-native ?= "5.1.3"
+PREFERRED_VERSION_gvim ?= "7.0"
+PREFERRED_VERSION_gweled ?= "0.5"
+PREFERRED_VERSION_gxine ?= "0.4.1enhanced"
+PREFERRED_VERSION_gzip ?= "1.3.5"
+PREFERRED_VERSION_hal ?= "0.5.9"
+PREFERRED_VERSION_hal-info ?= "20070918+git"
+PREFERRED_VERSION_haserl ?= "0.8.0"
+PREFERRED_VERSION_havp ?= "0.86"
+PREFERRED_VERSION_hdparm ?= "6.9"
+PREFERRED_VERSION_helloworld ?= "1.0.0"
+PREFERRED_VERSION_hexatrolic ?= "1.0beta3"
+PREFERRED_VERSION_hfsplusutils ?= "1.0.4-4"
+PREFERRED_VERSION_hfsutils ?= "3.2.6"
+PREFERRED_VERSION_hibernate-script ?= "1.12"
+PREFERRED_VERSION_hicolor-icon-theme ?= "0.10"
+PREFERRED_VERSION_hiker ?= "0.9.1"
+PREFERRED_VERSION_hildon-base-lib ?= "0.11.1"
+PREFERRED_VERSION_hildon-control-panel ?= "0.9.1-1.2"
+PREFERRED_VERSION_hildon-fm ?= "0.9.1-2"
+PREFERRED_VERSION_hildon-home ?= "0.8.20-2"
+PREFERRED_VERSION_hildon-initscripts ?= "0.8.14-1"
+PREFERRED_VERSION_hildon-lgpl ?= "0.12.1"
+PREFERRED_VERSION_hildon-libs ?= "0.15.1"
+PREFERRED_VERSION_hildon-navigator ?= "0.9.6-2"
+PREFERRED_VERSION_hildon-status-bar ?= "0.8.11-1"
+PREFERRED_VERSION_hildon-thumbnail ?= "0.11"
+PREFERRED_VERSION_hostap-conf ?= "1.0"
+PREFERRED_VERSION_hostap-daemon ?= "0.4.4"
+PREFERRED_VERSION_hostap-utils ?= "0.4.7"
+PREFERRED_VERSION_hotplug-dbus ?= "0.9"
+PREFERRED_VERSION_hotplug-ng ?= "002"
+PREFERRED_VERSION_hotplug-qcop ?= "cvs"
+PREFERRED_VERSION_howl ?= "1.0.0"
+PREFERRED_VERSION_hsetroot ?= "1.0.2"
+PREFERRED_VERSION_htb-init ?= "0.8.5"
+PREFERRED_VERSION_httppc ?= "0.8.5"
+PREFERRED_VERSION_htun ?= "0.9.5"
+PREFERRED_VERSION_hvsc ?= "45"
+PREFERRED_VERSION_hwdata ?= "0.191"
+PREFERRED_VERSION_hydra ?= "4.5"
+PREFERRED_VERSION_iaimaster ?= "0.5"
+PREFERRED_VERSION_iana-etc ?= "2.20"
+PREFERRED_VERSION_ica-bin ?= "8.0"
+PREFERRED_VERSION_iceauth ?= "1.0.2"
+PREFERRED_VERSION_icebloxx ?= "1.0.0"
+PREFERRED_VERSION_icecc-create-env ?= "0.1"
+PREFERRED_VERSION_icewm ?= "1.2.30"
+PREFERRED_VERSION_icmpquery ?= "1.03"
+PREFERRED_VERSION_ico ?= "1.0.2"
+PREFERRED_VERSION_icu ?= "3.6"
+PREFERRED_VERSION_icu-native ?= "3.6"
+PREFERRED_VERSION_id3lib ?= "3.8.3"
+PREFERRED_VERSION_ifplugd ?= "0.25"
+PREFERRED_VERSION_ifupdown ?= "0.6.8"
+PREFERRED_VERSION_iksemel ?= "1.2"
+PREFERRED_VERSION_imagemagick ?= "6.3.5-10"
+PREFERRED_VERSION_imake ?= "1.0.2"
+PREFERRED_VERSION_imlib ?= "1.9.15"
+PREFERRED_VERSION_imlib2 ?= "1.4.0.002"
+PREFERRED_VERSION_imposter ?= "0.3"
+PREFERRED_VERSION_inetutils ?= "1.4.2"
+PREFERRED_VERSION_initscripts ?= "1.0"
+PREFERRED_VERSION_initscripts-openprotium ?= "1.0"
+PREFERRED_VERSION_initscripts-slugos ?= "1.0"
+PREFERRED_VERSION_inkscape ?= "0.43"
+PREFERRED_VERSION_inkwp ?= "0.1.1"
+PREFERRED_VERSION_inotify-tools ?= "2.1"
+PREFERRED_VERSION_inputproto ?= "1.4.2.1"
+PREFERRED_VERSION_install-native ?= "0.1"
+PREFERRED_VERSION_insttrain ?= "1.0.5"
+PREFERRED_VERSION_interbench ?= "0.30"
+PREFERRED_VERSION_intercom ?= "0.15"
+PREFERRED_VERSION_intltool ?= "0.35.2"
+PREFERRED_VERSION_intltool-native ?= "0.35.0"
+PREFERRED_VERSION_iozone3 ?= "263"
+PREFERRED_VERSION_ipaq-sleep ?= "0.9"
+PREFERRED_VERSION_ipatience ?= "0.1"
+PREFERRED_VERSION_iperf ?= "2.0.2"
+PREFERRED_VERSION_ipkg ?= "0.99.163"
+PREFERRED_VERSION_ipkg-collateral ?= "1.0"
+PREFERRED_VERSION_ipkg-native ?= "0.99.163"
+PREFERRED_VERSION_iproute2 ?= "2.6.22"
+PREFERRED_VERSION_ipsec-tools ?= "0.6.7"
+PREFERRED_VERSION_iptables ?= "1.3.8"
+PREFERRED_VERSION_iptstate ?= "2.2.1"
+PREFERRED_VERSION_iputils ?= "20020927"
+PREFERRED_VERSION_iqnotes ?= "2.0.99-2.1.0rc1"
+PREFERRED_VERSION_ircp ?= "0.3"
+PREFERRED_VERSION_irda-utils ?= "0.9.16"
+PREFERRED_VERSION_irdadump ?= "0.9.16"
+PREFERRED_VERSION_irk-belkin ?= "0.11"
+PREFERRED_VERSION_irk-targus ?= "0.11.0"
+PREFERRED_VERSION_irssi ?= "0.8.10"
+PREFERRED_VERSION_iso-codes ?= "1.4"
+PREFERRED_VERSION_ixp4xx-npe-native ?= "2.4"
+PREFERRED_VERSION_jack ?= "0.103.0"
+PREFERRED_VERSION_jamvm ?= "1.4.5"
+PREFERRED_VERSION_jards ?= "1.0"
+PREFERRED_VERSION_jhead ?= "2.6.0"
+PREFERRED_VERSION_jikes ?= "1.22"
+PREFERRED_VERSION_jikes-native ?= "1.21"
+PREFERRED_VERSION_joe ?= "3.1"
+PREFERRED_VERSION_js ?= "1.5"
+PREFERRED_VERSION_juce ?= "1.29"
+PREFERRED_VERSION_justreader ?= "2.0k"
+PREFERRED_VERSION_kaffe-gtk ?= "1.1.5"
+PREFERRED_VERSION_kaffeh-native ?= "1.1.5"
+PREFERRED_VERSION_kakasi ?= "2.3.4"
+PREFERRED_VERSION_kakasi-native ?= "2.3.4"
+PREFERRED_VERSION_kanatest ?= "0.3.6"
+PREFERRED_VERSION_kazehakase ?= "0.4.7"
+PREFERRED_VERSION_kbd ?= "1.12"
+PREFERRED_VERSION_kbproto ?= "1.0.3"
+PREFERRED_VERSION_kdepimpi ?= "2.2.7"
+PREFERRED_VERSION_kernbench ?= "0.41"
+PREFERRED_VERSION_kernel-module-wlags49-h1-cs ?= "718"
+PREFERRED_VERSION_kernel-module-wlags49-h2-cs ?= "718"
+PREFERRED_VERSION_kexec-tools ?= "1.101"
+PREFERRED_VERSION_keylaunch ?= "2.0.10"
+PREFERRED_VERSION_keymap-locales ?= "1.0"
+PREFERRED_VERSION_keymaps ?= "1.0"
+PREFERRED_VERSION_keyring ?= "0.6.8"
+PREFERRED_VERSION_kf ?= "0.5.4.1"
+PREFERRED_VERSION_kismet ?= "2007-10-R1"
+PREFERRED_VERSION_klibc ?= "1.1.1"
+PREFERRED_VERSION_klimt ?= "0.6.1"
+PREFERRED_VERSION_knights ?= "1.14"
+PREFERRED_VERSION_konqueror-embedded ?= "20070212"
+PREFERRED_VERSION_kpengine ?= "0.1"
+PREFERRED_VERSION_kphonepi ?= "1.0.0"
+PREFERRED_VERSION_kstars-embedded ?= "0.8.5"
+PREFERRED_VERSION_ksymoops ?= "2.4.9"
+PREFERRED_VERSION_ktimetrackerpi ?= "0.9.7"
+PREFERRED_VERSION_kxml2 ?= "2.3.0"
+PREFERRED_VERSION_labyrinth ?= "0.7"
+PREFERRED_VERSION_lame ?= "3.96.1"
+PREFERRED_VERSION_lbreakout2 ?= "2.6beta"
+PREFERRED_VERSION_lcdproc ?= "0.5.1"
+PREFERRED_VERSION_lcms ?= "1.15"
+PREFERRED_VERSION_leafpad ?= "0.8.9"
+PREFERRED_VERSION_led ?= "0.0cvs20060814"
+PREFERRED_VERSION_lemon ?= "3.3.5"
+PREFERRED_VERSION_lemon-native ?= "3.3.5"
+PREFERRED_VERSION_less ?= "406"
+PREFERRED_VERSION_lessertunjo ?= "0.0.10"
+PREFERRED_VERSION_lftp ?= "3.5.1"
+PREFERRED_VERSION_liba52 ?= "0.7.4"
+PREFERRED_VERSION_libaal ?= "1.0.4"
+PREFERRED_VERSION_libabenabler ?= "0.1"
+PREFERRED_VERSION_libabenabler2 ?= "1.0"
+PREFERRED_VERSION_libaio ?= "0.3.106"
+PREFERRED_VERSION_libaio-oracle ?= "0.3.0"
+PREFERRED_VERSION_libalgorithm-diff-perl ?= "1.1902"
+PREFERRED_VERSION_libalgorithm-diff-perl-native ?= "1.1902"
+PREFERRED_VERSION_libao ?= "0.8.6"
+PREFERRED_VERSION_libao-alsa ?= "0.8.6"
+PREFERRED_VERSION_libao-plugin-alsa ?= "0.8.6"
+PREFERRED_VERSION_libapplewm ?= "1.0.0"
+PREFERRED_VERSION_libarchive-tar-perl ?= "1.30"
+PREFERRED_VERSION_libarchive-tar-perl-native ?= "1.30"
+PREFERRED_VERSION_libarena ?= "0.2"
+PREFERRED_VERSION_libart-lgpl ?= "2.3.19"
+PREFERRED_VERSION_libassa ?= "3.4.2"
+PREFERRED_VERSION_libassuan ?= "0.6.9"
+PREFERRED_VERSION_libatomics-ops ?= "1.2"
+PREFERRED_VERSION_libbedic ?= "1.0"
+PREFERRED_VERSION_libbonobo ?= "2.14.0"
+PREFERRED_VERSION_libbonoboui ?= "2.18.0"
+PREFERRED_VERSION_libcache-cache-perl ?= "1.05"
+PREFERRED_VERSION_libcache-cache-perl-native ?= "1.05"
+PREFERRED_VERSION_libcalenabler ?= "1.0"
+PREFERRED_VERSION_libcap ?= "1.10"
+PREFERRED_VERSION_libccaudio2 ?= "0.9.0"
+PREFERRED_VERSION_libcdaudio ?= "0.99.12p2"
+PREFERRED_VERSION_libcgicc ?= "3.2.3"
+PREFERRED_VERSION_libchenabler ?= "0.1"
+PREFERRED_VERSION_libclass-container-perl ?= "0.12"
+PREFERRED_VERSION_libclass-container-perl-native ?= "0.12"
+PREFERRED_VERSION_libclass-data-inheritable-perl ?= "0.06"
+PREFERRED_VERSION_libclass-data-inheritable-perl-native ?= "0.06"
+PREFERRED_VERSION_libcompress-zlib-perl ?= "1.42"
+PREFERRED_VERSION_libcompress-zlib-perl-native ?= "1.42"
+PREFERRED_VERSION_libcontactsdb ?= "0.5"
+PREFERRED_VERSION_libcroco ?= "0.6.1"
+PREFERRED_VERSION_libcwd ?= "0.99.47"
+PREFERRED_VERSION_libdaemon ?= "0.12"
+PREFERRED_VERSION_libdata-optlist-perl ?= "0.101"
+PREFERRED_VERSION_libdata-optlist-perl-native ?= "0.101"
+PREFERRED_VERSION_libdbi ?= "0.7.2"
+PREFERRED_VERSION_libdbi-drivers ?= "0.7.1"
+PREFERRED_VERSION_libddmpeg ?= "1.5"
+PREFERRED_VERSION_libdes ?= "4.01"
+PREFERRED_VERSION_libdevel-stacktrace-perl ?= "1.13"
+PREFERRED_VERSION_libdevel-stacktrace-perl-native ?= "1.13"
+PREFERRED_VERSION_libdictionary ?= "1.0"
+PREFERRED_VERSION_libdigest-sha1-perl ?= "2.11"
+PREFERRED_VERSION_libdigest-sha1-perl-native ?= "2.11"
+PREFERRED_VERSION_libdisplaymigration ?= "0.99"
+PREFERRED_VERSION_libdmx ?= "1.0.2"
+PREFERRED_VERSION_libdotdesktop ?= "0.11"
+PREFERRED_VERSION_libdrm ?= "2.3.0"
+PREFERRED_VERSION_libdvb ?= "0.5.5.1"
+PREFERRED_VERSION_libdvdnav ?= "0.1.10"
+PREFERRED_VERSION_libdvdread ?= "0.9.6"
+PREFERRED_VERSION_libedit ?= "20050118"
+PREFERRED_VERSION_libeina ?= "0.96.7"
+PREFERRED_VERSION_libelf ?= "0.8.6"
+PREFERRED_VERSION_liberror-perl ?= "0.17004"
+PREFERRED_VERSION_liberror-perl-native ?= "0.17004"
+PREFERRED_VERSION_libesmtp ?= "1.0.4"
+PREFERRED_VERSION_libetpan ?= "0.52"
+PREFERRED_VERSION_libevent ?= "1.1a"
+PREFERRED_VERSION_libeventdb ?= "0.90"
+PREFERRED_VERSION_libevnet ?= "0.3.1"
+PREFERRED_VERSION_libexception-class-perl ?= "1.23"
+PREFERRED_VERSION_libexception-class-perl-native ?= "1.23"
+PREFERRED_VERSION_libexif ?= "0.6.13"
+PREFERRED_VERSION_libextutils-cbuilder-perl ?= "0.18"
+PREFERRED_VERSION_libextutils-cbuilder-perl-native ?= "0.18"
+PREFERRED_VERSION_libextutils-depends-perl ?= "0.205"
+PREFERRED_VERSION_libextutils-depends-perl-native ?= "0.205"
+PREFERRED_VERSION_libextutils-parsexs-perl ?= "2.16"
+PREFERRED_VERSION_libextutils-parsexs-perl-native ?= "2.16"
+PREFERRED_VERSION_libextutils-pkgconfig-perl ?= "1.07"
+PREFERRED_VERSION_libextutils-pkgconfig-perl-native ?= "1.07"
+PREFERRED_VERSION_libflv ?= "0.2"
+PREFERRED_VERSION_libfontenc ?= "1.0.4"
+PREFERRED_VERSION_libfontenc-native ?= "1.0.4"
+PREFERRED_VERSION_libfribidi ?= "0.10.4"
+PREFERRED_VERSION_libfs ?= "1.0.0"
+PREFERRED_VERSION_libftdi ?= "0.9"
+PREFERRED_VERSION_libftdi-native ?= "0.9"
+PREFERRED_VERSION_libg15 ?= "1.2.1"
+PREFERRED_VERSION_libg15render ?= "1.2"
+PREFERRED_VERSION_libgalago ?= "0.3.3"
+PREFERRED_VERSION_libgc ?= "6.7"
+PREFERRED_VERSION_libgcrypt ?= "1.2.3"
+PREFERRED_VERSION_libgeda ?= "20050820"
+PREFERRED_VERSION_libgemwidget ?= "1.0"
+PREFERRED_VERSION_libglade ?= "2.6.2"
+PREFERRED_VERSION_libglademm ?= "2.4.1"
+PREFERRED_VERSION_libgmime ?= "2.1.7"
+PREFERRED_VERSION_libgnome ?= "2.18.0"
+PREFERRED_VERSION_libgnomecanvas ?= "2.20.0"
+PREFERRED_VERSION_libgnomecups ?= "0.2.2"
+PREFERRED_VERSION_libgnomeprint ?= "2.8.2"
+PREFERRED_VERSION_libgnomeprintui ?= "2.8.2"
+PREFERRED_VERSION_libgnomeui ?= "2.18.1"
+PREFERRED_VERSION_libgpelaunch ?= "0.14"
+PREFERRED_VERSION_libgpephone ?= "0.4"
+PREFERRED_VERSION_libgpepimc ?= "0.9"
+PREFERRED_VERSION_libgpepimc-hildon ?= "0.5"
+PREFERRED_VERSION_libgpevtype ?= "0.50"
+PREFERRED_VERSION_libgpewidget ?= "0.115"
+PREFERRED_VERSION_libgpewidget-hildon ?= "0.102"
+PREFERRED_VERSION_libgpg-error ?= "1.4"
+PREFERRED_VERSION_libgphoto2 ?= "2.4.0"
+PREFERRED_VERSION_libgpsbt ?= "0.1"
+PREFERRED_VERSION_libgpsmgr ?= "0.1"
+PREFERRED_VERSION_libgsf ?= "1.14.2"
+PREFERRED_VERSION_libgsm ?= "1.0.10"
+PREFERRED_VERSION_libgtkinput ?= "0.3"
+PREFERRED_VERSION_libgtkstylus ?= "0.3"
+PREFERRED_VERSION_libhal-nm ?= "0.0.2"
+PREFERRED_VERSION_libhandoff ?= "0.1"
+PREFERRED_VERSION_libhangul ?= "0.0.4"
+PREFERRED_VERSION_libhildonfm ?= "1.9.41"
+PREFERRED_VERSION_libhildonhelp ?= "1.9.1"
+PREFERRED_VERSION_libhildonmime ?= "1.9.5"
+PREFERRED_VERSION_libhtml-mason-perl ?= "1.35"
+PREFERRED_VERSION_libiac ?= "1.0"
+PREFERRED_VERSION_libice ?= "1.0.4"
+PREFERRED_VERSION_libiconv ?= "1.11"
+PREFERRED_VERSION_libid3 ?= "1.1"
+PREFERRED_VERSION_libidl ?= "0.8.6"
+PREFERRED_VERSION_libidl-native ?= "0.8.6"
+PREFERRED_VERSION_libidn ?= "0.5.19"
+PREFERRED_VERSION_libim ?= "0.2"
+PREFERRED_VERSION_libintl-perl ?= "1.16"
+PREFERRED_VERSION_libintl-perl-native ?= "1.16"
+PREFERRED_VERSION_libio-zlib-perl ?= "1.04"
+PREFERRED_VERSION_libio-zlib-perl-native ?= "1.04"
+PREFERRED_VERSION_libjingle-tapioca ?= "0.3.10"
+PREFERRED_VERSION_liblbxutil ?= "1.0.1"
+PREFERRED_VERSION_liblipsevent ?= "0.1"
+PREFERRED_VERSION_liblocale-gettext-perl ?= "1.05"
+PREFERRED_VERSION_liblocale-gettext-perl-native ?= "1.05"
+PREFERRED_VERSION_liblockfile ?= "1.06"
+PREFERRED_VERSION_liblog-dispatch-perl ?= "2.13"
+PREFERRED_VERSION_liblog-dispatch-perl-native ?= "2.13"
+PREFERRED_VERSION_liblog-log4perl-perl ?= "1.06"
+PREFERRED_VERSION_liblog-log4perl-perl-native ?= "1.06"
+PREFERRED_VERSION_libmad ?= "0.15.1b"
+PREFERRED_VERSION_libmail-sendmail-perl ?= "0.79"
+PREFERRED_VERSION_libmailwrapper ?= "1.2.3"
+PREFERRED_VERSION_libmatchbox ?= "1.9"
+PREFERRED_VERSION_libmath-bigint-gmp-perl ?= "1.18"
+PREFERRED_VERSION_libmikmod ?= "3.2.0-beta2"
+PREFERRED_VERSION_libmimedir ?= "0.4.2"
+PREFERRED_VERSION_libmng ?= "1.0.8"
+PREFERRED_VERSION_libmodplug ?= "0.7"
+PREFERRED_VERSION_libmodule-build-perl ?= "0.2805"
+PREFERRED_VERSION_libmodule-build-perl-native ?= "0.2805"
+PREFERRED_VERSION_libmrss ?= "0.17.2"
+PREFERRED_VERSION_libmsgenabler ?= "1.0"
+PREFERRED_VERSION_libmusicbrainz ?= "2.1.4"
+PREFERRED_VERSION_libnet ?= "1.1.2.1"
+PREFERRED_VERSION_libnet-ip-perl ?= "1.25"
+PREFERRED_VERSION_libnet-ip-perl-native ?= "1.25"
+PREFERRED_VERSION_libnetfilter-queue ?= "0.0.13"
+PREFERRED_VERSION_libnetserver-generic-perl ?= "1.03"
+PREFERRED_VERSION_libnfnetlink ?= "0.0.30"
+PREFERRED_VERSION_libnids ?= "1.18"
+PREFERRED_VERSION_libnotify ?= "0.4.4"
+PREFERRED_VERSION_libnss-mdns ?= "0.9"
+PREFERRED_VERSION_libnxml ?= "0.16"
+PREFERRED_VERSION_libogg ?= "1.1"
+PREFERRED_VERSION_liboil ?= "0.3.11"
+PREFERRED_VERSION_libol ?= "0.3.18"
+PREFERRED_VERSION_liboldx ?= "1.0.1"
+PREFERRED_VERSION_liboop ?= "1.0"
+PREFERRED_VERSION_libopenraw ?= "0.0.2"
+PREFERRED_VERSION_libopensync ?= "0.22"
+PREFERRED_VERSION_libopensync-plugin-evo2-sync ?= "0.22"
+PREFERRED_VERSION_libopensync-plugin-file ?= "0.18"
+PREFERRED_VERSION_libopensync-plugin-file-sync ?= "0.22"
+PREFERRED_VERSION_libopensync-plugin-gpe ?= "0.18"
+PREFERRED_VERSION_libopensync-plugin-irmc ?= "0.18"
+PREFERRED_VERSION_libopensync-plugin-irmc-sync ?= "0.22"
+PREFERRED_VERSION_libosso ?= "1.20"
+PREFERRED_VERSION_libosso-gsf ?= "1.11.10.4"
+PREFERRED_VERSION_libosso-help ?= "2.1.2"
+PREFERRED_VERSION_libpam ?= "0.79"
+PREFERRED_VERSION_libparams-util-perl ?= "0.20"
+PREFERRED_VERSION_libparams-util-perl-native ?= "0.20"
+PREFERRED_VERSION_libparams-validate-perl ?= "0.86"
+PREFERRED_VERSION_libparams-validate-perl-native ?= "0.86"
+PREFERRED_VERSION_libpcap ?= "0.9.6"
+PREFERRED_VERSION_libpcl ?= "1.4"
+PREFERRED_VERSION_libpcre ?= "4.4"
+PREFERRED_VERSION_libpcre-native ?= "4.4"
+PREFERRED_VERSION_libperl6-junction-perl ?= "1.10"
+PREFERRED_VERSION_libpixman ?= "0.9.6"
+PREFERRED_VERSION_libpng ?= "1.2.20"
+PREFERRED_VERSION_libpng-native ?= "1.2.20"
+PREFERRED_VERSION_libpthread-stubs ?= "0.1"
+PREFERRED_VERSION_libqanava ?= "0.0.7"
+PREFERRED_VERSION_libqtaux2 ?= "1.2.3"
+PREFERRED_VERSION_librcf ?= "0.4"
+PREFERRED_VERSION_librecord ?= "0.1"
+PREFERRED_VERSION_librecord2 ?= "0.1"
+PREFERRED_VERSION_librewrite ?= "0.1"
+PREFERRED_VERSION_librsvg ?= "2.16.1"
+PREFERRED_VERSION_librsync ?= "0.9.7"
+PREFERRED_VERSION_librtaudio ?= "3.0.1"
+PREFERRED_VERSION_libsamplerate0 ?= "0.1.2"
+PREFERRED_VERSION_libschedule ?= "0.17"
+PREFERRED_VERSION_libsdl-directfb ?= "1.2.9"
+PREFERRED_VERSION_libsdl-gfx ?= "2.0.11"
+PREFERRED_VERSION_libsdl-image ?= "1.2.3"
+PREFERRED_VERSION_libsdl-mixer ?= "1.2.6"
+PREFERRED_VERSION_libsdl-native ?= "1.2.11"
+PREFERRED_VERSION_libsdl-net ?= "1.2.7"
+PREFERRED_VERSION_libsdl-ttf ?= "2.0.3"
+PREFERRED_VERSION_libsdl-ttf-native ?= "2.0.3"
+PREFERRED_VERSION_libsdl-x11 ?= "1.2.9"
+PREFERRED_VERSION_libsettings ?= "0.3"
+PREFERRED_VERSION_libsexy ?= "0.1.11"
+PREFERRED_VERSION_libsidplay ?= "1.36.59"
+PREFERRED_VERSION_libsigcx0 ?= "0.6.4"
+PREFERRED_VERSION_libsm ?= "1.0.3"
+PREFERRED_VERSION_libsndfile1 ?= "1.0.17"
+PREFERRED_VERSION_libsoundgen ?= "0.6"
+PREFERRED_VERSION_libsoup ?= "2.2.100"
+PREFERRED_VERSION_libspf2 ?= "1.0.4"
+PREFERRED_VERSION_libspiff ?= "0.7.2"
+PREFERRED_VERSION_libssh ?= "0.11"
+PREFERRED_VERSION_libsub-exporter-perl ?= "0.970"
+PREFERRED_VERSION_libsub-exporter-perl-native ?= "0.970"
+PREFERRED_VERSION_libsub-install-perl ?= "0.922"
+PREFERRED_VERSION_libsub-install-perl-native ?= "0.922"
+PREFERRED_VERSION_libsub-uplevel-perl ?= "0.13"
+PREFERRED_VERSION_libsub-uplevel-perl-native ?= "0.13"
+PREFERRED_VERSION_libsvg ?= "0.1.4"
+PREFERRED_VERSION_libtelepathy ?= "0.0.53"
+PREFERRED_VERSION_libtest-builder-tester-perl ?= "1.01"
+PREFERRED_VERSION_libtest-differences-perl ?= "0.47"
+PREFERRED_VERSION_libtest-exception-perl ?= "0.22"
+PREFERRED_VERSION_libtest-mockmodule-perl ?= "0.05"
+PREFERRED_VERSION_libtest-output-perl ?= "0.10"
+PREFERRED_VERSION_libtext-diff-perl ?= "0.35"
+PREFERRED_VERSION_libtext-diff-perl-native ?= "0.35"
+PREFERRED_VERSION_libticables ?= "3.9.2"
+PREFERRED_VERSION_libticalcs ?= "4.5.9"
+PREFERRED_VERSION_libtifiles ?= "0.6.5"
+PREFERRED_VERSION_libtinymail ?= "0.0.3"
+PREFERRED_VERSION_libtododb ?= "0.11"
+PREFERRED_VERSION_libtomcrypt ?= "0.97b"
+PREFERRED_VERSION_libtomoe-gtk ?= "0.1.0"
+PREFERRED_VERSION_libtool ?= "1.5.10"
+PREFERRED_VERSION_libtool-cross ?= "1.5.10"
+PREFERRED_VERSION_libtool-native ?= "1.5.10"
+PREFERRED_VERSION_libungif ?= "4.1.3"
+PREFERRED_VERSION_libupnp ?= "1.3.1"
+PREFERRED_VERSION_liburi-perl ?= "1.35"
+PREFERRED_VERSION_liburi-perl-native ?= "1.35"
+PREFERRED_VERSION_liburiparser ?= "0.5.1"
+PREFERRED_VERSION_libusb ?= "0.1.12"
+PREFERRED_VERSION_libusb-native ?= "0.1.12"
+PREFERRED_VERSION_libversion-perl ?= "0.6701"
+PREFERRED_VERSION_libversion-perl-native ?= "0.6701"
+PREFERRED_VERSION_libvisual ?= "0.1.3"
+PREFERRED_VERSION_libvisual-plugins ?= "0.1.3"
+PREFERRED_VERSION_libvncserver ?= "0.8.2"
+PREFERRED_VERSION_libvocenabler ?= "0.1"
+PREFERRED_VERSION_libvorbis ?= "1.0.1"
+PREFERRED_VERSION_libw100 ?= "0.0.2"
+PREFERRED_VERSION_libwindowswm ?= "1.0.0"
+PREFERRED_VERSION_libwnck ?= "2.13.5"
+PREFERRED_VERSION_libwpd ?= "0.8.6"
+PREFERRED_VERSION_libx11 ?= "1.1.3"
+PREFERRED_VERSION_libx11-native = "1.0.3"
+PREFERRED_VERSION_libxau ?= "1.0.3"
+PREFERRED_VERSION_libxau-native ?= "1.0.3"
+PREFERRED_VERSION_libxaw ?= "1.0.4"
+PREFERRED_VERSION_libxcb ?= "1.0"
+PREFERRED_VERSION_libxcomposite ?= "0.4.0"
+PREFERRED_VERSION_libxcursor ?= "1.1.9"
+PREFERRED_VERSION_libxdamage ?= "1.1.1"
+PREFERRED_VERSION_libxdmcp ?= "1.0.2"
+PREFERRED_VERSION_libxdmcp-native ?= "1.0.2"
+PREFERRED_VERSION_libxevie ?= "1.0.2"
+PREFERRED_VERSION_libxext ?= "1.0.3"
+PREFERRED_VERSION_libxfce4mcs ?= "4.4.1"
+PREFERRED_VERSION_libxfce4util ?= "4.4.1"
+PREFERRED_VERSION_libxfcegui4 ?= "4.4.1"
+PREFERRED_VERSION_libxfixes ?= "4.0.3"
+PREFERRED_VERSION_libxfont ?= "1.3.1"
+PREFERRED_VERSION_libxfont-native ?= "1.3.0"
+PREFERRED_VERSION_libxfontcache ?= "1.0.4"
+PREFERRED_VERSION_libxft ?= "2.1.12"
+PREFERRED_VERSION_libxi ?= "1.1.3"
+PREFERRED_VERSION_libxine ?= "1.1.0"
+PREFERRED_VERSION_libxine-fb ?= "1.0"
+PREFERRED_VERSION_libxine-x11 ?= "1.0"
+PREFERRED_VERSION_libxinerama ?= "1.0.2"
+PREFERRED_VERSION_libxkbfile ?= "1.0.4"
+PREFERRED_VERSION_libxkbui ?= "1.0.2"
+PREFERRED_VERSION_libxml-parser-perl ?= "2.34"
+PREFERRED_VERSION_libxml-parser-perl-native ?= "2.34"
+PREFERRED_VERSION_libxml2 ?= "2.6.29"
+PREFERRED_VERSION_libxml2-native ?= "2.6.29"
+PREFERRED_VERSION_libxmu ?= "1.0.3"
+PREFERRED_VERSION_libxp ?= "1.0.0"
+PREFERRED_VERSION_libxpm ?= "3.5.7"
+PREFERRED_VERSION_libxprintapputil ?= "1.0.1"
+PREFERRED_VERSION_libxprintutil ?= "1.0.1"
+PREFERRED_VERSION_libxrandr ?= "1.2.2"
+PREFERRED_VERSION_libxrender ?= "0.9.4"
+PREFERRED_VERSION_libxres ?= "1.0.3"
+PREFERRED_VERSION_libxscrnsaver ?= "1.1.2"
+PREFERRED_VERSION_libxsettings ?= "0.11"
+PREFERRED_VERSION_libxsettings-client ?= "0.17"
+PREFERRED_VERSION_libxslt ?= "1.1.21"
+PREFERRED_VERSION_libxslt-native ?= "1.1.21"
+PREFERRED_VERSION_libxt ?= "1.0.5"
+PREFERRED_VERSION_libxtrap ?= "1.0.0"
+PREFERRED_VERSION_libxtst ?= "1.0.3"
+PREFERRED_VERSION_libxv ?= "1.0.3"
+PREFERRED_VERSION_libxvmc ?= "1.0.4"
+PREFERRED_VERSION_libxxf86dga ?= "1.0.2"
+PREFERRED_VERSION_libxxf86misc ?= "1.0.1"
+PREFERRED_VERSION_libxxf86vm ?= "1.0.1"
+PREFERRED_VERSION_libyaml-perl ?= "0.62"
+PREFERRED_VERSION_libyaml-perl-native ?= "0.62"
+PREFERRED_VERSION_lighttpd ?= "1.4.18"
+PREFERRED_VERSION_lineak ?= "0.8.3"
+PREFERRED_VERSION_linphone ?= "1.6.0"
+PREFERRED_VERSION_linphone-hh ?= "0.12.2.hh1"
+PREFERRED_VERSION_linux-hotplug ?= "20040920"
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.22"
+PREFERRED_VERSION_lisa ?= "0.2.2"
+PREFERRED_VERSION_live555 ?= "20051005"
+PREFERRED_VERSION_llvm ?= "2.0"
+PREFERRED_VERSION_llvm-native ?= "2.1"
+PREFERRED_VERSION_lmbench ?= "2.0.4"
+PREFERRED_VERSION_lmsensors-apps ?= "2.10.1"
+PREFERRED_VERSION_lndir ?= "1.0.1"
+PREFERRED_VERSION_loader ?= "0.04"
+PREFERRED_VERSION_login-manager ?= "1.0"
+PREFERRED_VERSION_logrotate ?= "3.7.1"
+PREFERRED_VERSION_logrotate-script ?= "cvs"
+PREFERRED_VERSION_loudmouth ?= "1.2.2"
+PREFERRED_VERSION_lrzsz ?= "0.12.20"
+PREFERRED_VERSION_lsh ?= "1.5.5"
+PREFERRED_VERSION_lsof ?= "4.78"
+PREFERRED_VERSION_ltp ?= "20070228"
+PREFERRED_VERSION_ltrace ?= "0.4"
+PREFERRED_VERSION_lttng-control ?= "0.12"
+PREFERRED_VERSION_lttng-viewer ?= "0.8.41-20060512"
+PREFERRED_VERSION_lua ?= "5.0.2"
+PREFERRED_VERSION_lua-gtk2 ?= "0.3"
+PREFERRED_VERSION_lua-native ?= "5.0.2"
+PREFERRED_VERSION_luit ?= "1.0.2"
+PREFERRED_VERSION_lvm2 ?= "2.01.15"
+PREFERRED_VERSION_lxt ?= "1.0"
+PREFERRED_VERSION_lyx ?= "1.4.4"
+PREFERRED_VERSION_lzma ?= "4.17"
+PREFERRED_VERSION_lzma-native ?= "4.17"
+PREFERRED_VERSION_lzo ?= "1.08"
+PREFERRED_VERSION_lzo-native ?= "1.08"
+PREFERRED_VERSION_m4 ?= "1.4.8"
+PREFERRED_VERSION_m4-native ?= "1.4.8"
+PREFERRED_VERSION_macchanger ?= "1.5.0"
+PREFERRED_VERSION_madfu ?= "1.2"
+PREFERRED_VERSION_madplay ?= "0.15.2b"
+PREFERRED_VERSION_mahjongg ?= "1.0.0"
+PREFERRED_VERSION_mailutils ?= "0.3.1"
+PREFERRED_VERSION_mailx ?= "8.1.2-0.20050715cvs"
+PREFERRED_VERSION_make ?= "3.81"
+PREFERRED_VERSION_make-native ?= "3.81"
+PREFERRED_VERSION_makedepend ?= "1.0.1"
+PREFERRED_VERSION_makedepend-native ?= "1.0.1"
+PREFERRED_VERSION_makedev ?= "2.3.1"
+PREFERRED_VERSION_makedevs ?= "1.0.0"
+PREFERRED_VERSION_makedevs-native ?= "1.0.0"
+PREFERRED_VERSION_makeself-native ?= "cvs"
+PREFERRED_VERSION_maki ?= "1.0.4ern"
+PREFERRED_VERSION_man ?= "1.5p"
+PREFERRED_VERSION_man-pages ?= "2.41"
+PREFERRED_VERSION_manufacturers ?= "20031209"
+PREFERRED_VERSION_mapnik ?= "0.4.0"
+PREFERRED_VERSION_maradns ?= "1.0.39"
+PREFERRED_VERSION_masqmail ?= "0.2.21"
+PREFERRED_VERSION_matchbox ?= "0.9.1"
+PREFERRED_VERSION_matchbox-applet-cards ?= "1.0.2"
+PREFERRED_VERSION_matchbox-applet-inputmanager ?= "0.6"
+PREFERRED_VERSION_matchbox-applet-startup-monitor ?= "0.1"
+PREFERRED_VERSION_matchbox-applet-volume ?= "0.1"
+PREFERRED_VERSION_matchbox-common ?= "0.9.1"
+PREFERRED_VERSION_matchbox-desktop ?= "0.9.1"
+PREFERRED_VERSION_matchbox-panel ?= "0.9.3"
+PREFERRED_VERSION_matchbox-panel-hacks ?= "0.3-1"
+PREFERRED_VERSION_matchbox-panel-manager ?= "0.1"
+PREFERRED_VERSION_matchbox-theme-sato ?= "0.1"
+PREFERRED_VERSION_matchbox-themes-extra ?= "0.3"
+PREFERRED_VERSION_matchbox-themes-gtk ?= "1.0"
+PREFERRED_VERSION_matchbox-wm ?= "1.2"
+PREFERRED_VERSION_mathomatic ?= "unstable"
+PREFERRED_VERSION_matrixssl ?= "1.1.1"
+PREFERRED_VERSION_mb-applet-tasks ?= "1.0.0"
+PREFERRED_VERSION_mb-desktop-xine ?= "0.4"
+PREFERRED_VERSION_mbmerlin ?= "0.8.1-2"
+PREFERRED_VERSION_mc ?= "4.6.1"
+PREFERRED_VERSION_mce-dev ?= "1.5.6"
+PREFERRED_VERSION_mdadm ?= "2.5.5"
+PREFERRED_VERSION_mdev ?= "1.2.1"
+PREFERRED_VERSION_mdk2 ?= "v33"
+PREFERRED_VERSION_memedit ?= "0.7"
+PREFERRED_VERSION_memtester ?= "4.0.6"
+PREFERRED_VERSION_mesa ?= "6.5.2"
+PREFERRED_VERSION_mesa-dri ?= "6.5.2"
+PREFERRED_VERSION_meta-e-x11 ?= "1.0"
+PREFERRED_VERSION_meta-e-x11-core ?= "1.0"
+PREFERRED_VERSION_meta-gpe ?= "1.0"
+PREFERRED_VERSION_meta-gpe-extras ?= "1.0"
+PREFERRED_VERSION_meta-gpephone ?= "1.0"
+PREFERRED_VERSION_meta-maemo ?= "1.0"
+PREFERRED_VERSION_meta-sdk ?= "1.0"
+PREFERRED_VERSION_meta-sdk-gpe ?= "1.0"
+PREFERRED_VERSION_meta-sdk-sbox ?= "1.0"
+PREFERRED_VERSION_meta-sdk-sbox-gpe ?= "1.0"
+PREFERRED_VERSION_meta-sdl ?= "1.0"
+PREFERRED_VERSION_meta-sectest-gpe ?= "1.0"
+PREFERRED_VERSION_meta-toolchain ?= "1.0"
+PREFERRED_VERSION_metakit ?= "2.4.9.3"
+PREFERRED_VERSION_metalog ?= "0.7"
+PREFERRED_VERSION_mgetty ?= "1.1.30"
+PREFERRED_VERSION_miau ?= "0.5.3"
+PREFERRED_VERSION_micro-emacs ?= "20060909"
+PREFERRED_VERSION_microcom ?= "1.02"
+PREFERRED_VERSION_microwindows ?= "0.90"
+PREFERRED_VERSION_midori ?= "0.0.13"
+PREFERRED_VERSION_midpath ?= "0.1"
+PREFERRED_VERSION_midpath-alsa ?= "0.1"
+PREFERRED_VERSION_midpath-cldc ?= "0.1"
+PREFERRED_VERSION_midpath-cldc-native ?= "0.1"
+PREFERRED_VERSION_midpath-cldc-sdl ?= "0.1"
+PREFERRED_VERSION_midpath-cldc-x11 ?= "0.1"
+PREFERRED_VERSION_midpath-gtk ?= "0.1"
+PREFERRED_VERSION_midpath-qt3x11 ?= "0.1"
+PREFERRED_VERSION_midpath-qte ?= "0.1"
+PREFERRED_VERSION_midpath-test ?= "0.1"
+PREFERRED_VERSION_mikmod ?= "3.2.2-beta1"
+PREFERRED_VERSION_mileage ?= "4.2.0-cvs-20060814"
+PREFERRED_VERSION_militaryalphabet ?= "0.2.1"
+PREFERRED_VERSION_mime-support ?= "3.28"
+PREFERRED_VERSION_miniclipboard ?= "0.3"
+PREFERRED_VERSION_minicom ?= "2.1"
+PREFERRED_VERSION_minifo-modules ?= "0.6.1-pre1"
+PREFERRED_VERSION_miniinit ?= "1.0"
+PREFERRED_VERSION_minimix ?= "0.9"
+PREFERRED_VERSION_minipredict ?= "1.0"
+PREFERRED_VERSION_mipv6 ?= "1.1-v2.4.26"
+PREFERRED_VERSION_misdn ?= "cvs"
+PREFERRED_VERSION_mkbot ?= "0.3"
+PREFERRED_VERSION_mkfontdir ?= "1.0.3"
+PREFERRED_VERSION_mkfontdir-native ?= "1.0.3"
+PREFERRED_VERSION_mobilemesh ?= "1.2"
+PREFERRED_VERSION_moc ?= "2.4.0"
+PREFERRED_VERSION_modphp ?= "5.1.6"
+PREFERRED_VERSION_modplugplay ?= "1.0"
+PREFERRED_VERSION_module-init-tools ?= "3.2.2"
+PREFERRED_VERSION_module-init-tools-cross ?= "3.2.2"
+PREFERRED_VERSION_modutils ?= "2.4.27"
+PREFERRED_VERSION_modutils-collateral ?= "1.0"
+PREFERRED_VERSION_modutils-cross ?= "2.4.27"
+PREFERRED_VERSION_modutils-initscripts ?= "1.0"
+PREFERRED_VERSION_moin ?= "1.5.8"
+PREFERRED_VERSION_mono ?= "1.2.5.1"
+PREFERRED_VERSION_mono-mcs-intermediate ?= "1.2.5.1"
+PREFERRED_VERSION_mono-native ?= "1.2.5.1"
+PREFERRED_VERSION_monotone-4 ?= "0.19"
+PREFERRED_VERSION_monotone-5 ?= "0.25.2"
+PREFERRED_VERSION_monotone-6 ?= "0.34"
+PREFERRED_VERSION_motion ?= "3.2.6"
+PREFERRED_VERSION_mousepad ?= "0.2.12"
+PREFERRED_VERSION_mp3blaster ?= "3.2.3"
+PREFERRED_VERSION_mpc ?= "0.12.1"
+PREFERRED_VERSION_mpeg2dec ?= "0.4.0b"
+PREFERRED_VERSION_mpfr ?= "2.3.0"
+PREFERRED_VERSION_mpfr-native ?= "2.3.0"
+PREFERRED_VERSION_mpg123 ?= "0.66"
+PREFERRED_VERSION_mpg321 ?= "0.2.10"
+PREFERRED_VERSION_mplayer-common ?= "0.0.1"
+PREFERRED_VERSION_mrxvt ?= "0.5.2"
+PREFERRED_VERSION_msmtp ?= "1.4.10"
+PREFERRED_VERSION_msn-cap ?= "1.0"
+PREFERRED_VERSION_msynctool ?= "0.22"
+PREFERRED_VERSION_mt-daapd ?= "0.2.3"
+PREFERRED_VERSION_mtools ?= "3.9.9"
+PREFERRED_VERSION_mtools-native ?= "3.9.9"
+PREFERRED_VERSION_mtpaint ?= "3.02"
+PREFERRED_VERSION_mtr ?= "0.65"
+PREFERRED_VERSION_multisync ?= "0.90.18"
+PREFERRED_VERSION_murasaki ?= "0.8.8"
+PREFERRED_VERSION_mutt ?= "1.5.15"
+PREFERRED_VERSION_mysql ?= "4.1.18"
+PREFERRED_VERSION_mysql-native ?= "4.1.18"
+PREFERRED_VERSION_mythfront-config ?= "1.10"
+PREFERRED_VERSION_mythfront-session ?= "1.5"
+PREFERRED_VERSION_nabi ?= "0.17"
+PREFERRED_VERSION_nail ?= "11.21"
+PREFERRED_VERSION_nano ?= "2.0.6"
+PREFERRED_VERSION_nasm-native ?= "0.98.38"
+PREFERRED_VERSION_nautilus ?= "2.12.2"
+PREFERRED_VERSION_nautilus-cd-burner ?= "2.8.5"
+PREFERRED_VERSION_navit ?= "0.0.3"
+PREFERRED_VERSION_nbd ?= "2.8.7"
+PREFERRED_VERSION_ncftp ?= "3.2.0"
+PREFERRED_VERSION_ncmpc ?= "0.11.1"
+PREFERRED_VERSION_ncurses ?= "5.4"
+PREFERRED_VERSION_ncurses-native ?= "5.4"
+PREFERRED_VERSION_ndisc6 ?= "0.6.7"
+PREFERRED_VERSION_neon ?= "0.25.5"
+PREFERRED_VERSION_net-snmp ?= "5.4.1"
+PREFERRED_VERSION_net-tools ?= "1.60"
+PREFERRED_VERSION_net6 ?= "1.3.1"
+PREFERRED_VERSION_netatalk ?= "2.0.3"
+PREFERRED_VERSION_netbase ?= "4.21"
+PREFERRED_VERSION_netcat ?= "0.7.1"
+PREFERRED_VERSION_netpbm ?= "10.28"
+PREFERRED_VERSION_netperf ?= "2.4.2"
+PREFERRED_VERSION_network-manager-applet ?= "0.6.5"
+PREFERRED_VERSION_network-suspend-scripts ?= "1.1"
+PREFERRED_VERSION_nfs-utils ?= "1.0.6"
+PREFERRED_VERSION_ngrep ?= "1.42"
+PREFERRED_VERSION_nis-all ?= "1.0"
+PREFERRED_VERSION_nkf ?= "2.07"
+PREFERRED_VERSION_nkf-native ?= "2.07"
+PREFERRED_VERSION_nmap ?= "4.20"
+PREFERRED_VERSION_nmixer ?= "2.0"
+PREFERRED_VERSION_nmm ?= "0.0.2"
+PREFERRED_VERSION_nogravity ?= "2.0"
+PREFERRED_VERSION_notecase ?= "1.2.6"
+PREFERRED_VERSION_notez ?= "1.1.0"
+PREFERRED_VERSION_notification-daemon ?= "0.3.7"
+PREFERRED_VERSION_nsd ?= "2.0.0"
+PREFERRED_VERSION_ntfs-3g ?= "1.0"
+PREFERRED_VERSION_ntop ?= "3.0"
+PREFERRED_VERSION_ntp ?= "4.2.2p3"
+PREFERRED_VERSION_ntp-ssl ?= "4.1.2"
+PREFERRED_VERSION_ntpclient ?= "2003_194"
+PREFERRED_VERSION_nunome ?= "1.0.2"
+PREFERRED_VERSION_nylon-feed ?= "1.0"
+PREFERRED_VERSION_obby ?= "0.4.1"
+PREFERRED_VERSION_obexftp ?= "0.20"
+PREFERRED_VERSION_obexpush ?= "1.0.0"
+PREFERRED_VERSION_obexpush-native ?= "1.0.0"
+PREFERRED_VERSION_octave ?= "2.1.73"
+PREFERRED_VERSION_offlineimap ?= "4.0.14"
+PREFERRED_VERSION_olsr ?= "0.3-1"
+PREFERRED_VERSION_olsrd ?= "0.5.3"
+PREFERRED_VERSION_omext ?= "0.2"
+PREFERRED_VERSION_omniorb ?= "4.0.7"
+PREFERRED_VERSION_omniorb-native ?= "4.0.7"
+PREFERRED_VERSION_openal ?= "0.0.8"
+PREFERRED_VERSION_openh323 ?= "1.13.5.4"
+PREFERRED_VERSION_openjade ?= "1.3.2"
+PREFERRED_VERSION_openjade-native ?= "1.3.2"
+PREFERRED_VERSION_openldap ?= "2.3.11"
+PREFERRED_VERSION_openntpd ?= "3.9p1"
+PREFERRED_VERSION_openobex ?= "1.3"
+PREFERRED_VERSION_openpbx.org ?= "1.2_rc3"
+PREFERRED_VERSION_openpbx.org-perl ?= "1.0"
+PREFERRED_VERSION_openprotium-init ?= "0.10"
+PREFERRED_VERSION_openprotium-packages ?= "1.0"
+PREFERRED_VERSION_opensp ?= "1.5"
+PREFERRED_VERSION_opensp-native ?= "1.5"
+PREFERRED_VERSION_openssh ?= "4.6p1"
+PREFERRED_VERSION_openssl ?= "0.9.7g"
+PREFERRED_VERSION_openssl-native ?= "0.9.7g"
+PREFERRED_VERSION_openswan ?= "2.4.7"
+PREFERRED_VERSION_openttd ?= "0.4.0.1"
+PREFERRED_VERSION_openvpn ?= "2.0.9"
+PREFERRED_VERSION_oplinux-packages ?= "1.0"
+PREFERRED_VERSION_oprofile ?= "0.9.3"
+PREFERRED_VERSION_orage ?= "4.4.1"
+PREFERRED_VERSION_orbit2 ?= "2.14.0"
+PREFERRED_VERSION_orbit2-native ?= "2.14.0"
+PREFERRED_VERSION_orinoco-conf ?= "1.0"
+PREFERRED_VERSION_orinoco-modules ?= "0.15rc2"
+PREFERRED_VERSION_orpheus ?= "1.5"
+PREFERRED_VERSION_ortp ?= "0.7.1"
+PREFERRED_VERSION_osso-af-settings ?= "0.8.5"
+PREFERRED_VERSION_osso-af-startup ?= "0.28-1"
+PREFERRED_VERSION_osso-af-utils ?= "0.4"
+PREFERRED_VERSION_osso-app-killer ?= "0.4-3"
+PREFERRED_VERSION_osso-application-installer ?= "1.0.03-1"
+PREFERRED_VERSION_osso-bttools ?= "0.25.1"
+PREFERRED_VERSION_osso-core-config ?= "200515.1"
+PREFERRED_VERSION_osso-dsp-headers ?= "0.1"
+PREFERRED_VERSION_osso-esd ?= "0.5"
+PREFERRED_VERSION_osso-gwconnect ?= "1.0.8"
+PREFERRED_VERSION_osso-gwobex ?= "0.26.1"
+PREFERRED_VERSION_osso-ic-oss ?= "1.0.4"
+PREFERRED_VERSION_osso-screenshot-tool ?= "1.20-1"
+PREFERRED_VERSION_osso-sounds ?= "0.3-1"
+PREFERRED_VERSION_osso-thumbnail ?= "0.7"
+PREFERRED_VERSION_otpkeygen ?= "1.3.0"
+PREFERRED_VERSION_outo ?= "0.1.1"
+PREFERRED_VERSION_p3scan ?= "2.9.05d"
+PREFERRED_VERSION_p4 ?= "05.2"
+PREFERRED_VERSION_package-index ?= "1.0"
+PREFERRED_VERSION_pad-native ?= "1.0"
+PREFERRED_VERSION_pairs ?= "1.1.1"
+PREFERRED_VERSION_pango ?= "1.18.1"
+PREFERRED_VERSION_panoramixext ?= "1.1"
+PREFERRED_VERSION_parted ?= "1.8.7"
+PREFERRED_VERSION_patch ?= "2.5.9"
+PREFERRED_VERSION_patcher ?= "20040913"
+PREFERRED_VERSION_patcher-native ?= "20040913"
+PREFERRED_VERSION_patchutils ?= "0.2.31"
+PREFERRED_VERSION_pax-utils ?= "0.1.13"
+PREFERRED_VERSION_pax-utils-native ?= "0.1.13"
+PREFERRED_VERSION_pbltool-native ?= "0.2"
+PREFERRED_VERSION_pciutils ?= "2.2.4"
+PREFERRED_VERSION_pcmanfm ?= "0.3.2-beta"
+PREFERRED_VERSION_pcmcia-cs ?= "3.2.8"
+PREFERRED_VERSION_pcmciautils ?= "014"
+PREFERRED_VERSION_pdamaze ?= "1.0.0"
+PREFERRED_VERSION_pdm ?= "1.0"
+PREFERRED_VERSION_perl ?= "5.8.8"
+PREFERRED_VERSION_perl-native ?= "5.8.8"
+PREFERRED_VERSION_petitepainture ?= "1.5"
+PREFERRED_VERSION_phalanx ?= "22"
+PREFERRED_VERSION_phoneserver ?= "1.0"
+PREFERRED_VERSION_php ?= "5.2.0"
+PREFERRED_VERSION_php-native ?= "5.2.0"
+PREFERRED_VERSION_picocom ?= "1.4"
+PREFERRED_VERSION_pidgin ?= "2.2.1"
+PREFERRED_VERSION_pine ?= "4.64"
+PREFERRED_VERSION_pipeman ?= "1.0.0"
+PREFERRED_VERSION_pipepanic ?= "0.1.1"
+PREFERRED_VERSION_pivotinit ?= "1.0.0"
+PREFERRED_VERSION_pixman ?= "0.9.6"
+PREFERRED_VERSION_pixops-test ?= "1.0"
+PREFERRED_VERSION_pkgconfig ?= "0.22"
+PREFERRED_VERSION_pkgconfig-native ?= "0.22"
+PREFERRED_VERSION_plinciv ?= "0.16"
+PREFERRED_VERSION_plone ?= "2.1.2"
+PREFERRED_VERSION_plot ?= "0.28"
+PREFERRED_VERSION_pme ?= "1.0.3"
+PREFERRED_VERSION_pmount ?= "0.9.4"
+PREFERRED_VERSION_pmtools ?= "20050926"
+PREFERRED_VERSION_poboxserver ?= "1.2.5"
+PREFERRED_VERSION_pocketcellar ?= "1.1"
+PREFERRED_VERSION_pocketsphinx ?= "0.2.1"
+PREFERRED_VERSION_poppler ?= "0.6"
+PREFERRED_VERSION_poppler-data ?= "0.1"
+PREFERRED_VERSION_popt ?= "1.7"
+PREFERRED_VERSION_popt-native ?= "1.7"
+PREFERRED_VERSION_poptop ?= "1.3.4"
+PREFERRED_VERSION_poqetpresenter ?= "0.0.6"
+PREFERRED_VERSION_portabase ?= "1.9"
+PREFERRED_VERSION_portmap ?= "6.0"
+PREFERRED_VERSION_postfix ?= "2.0.20"
+PREFERRED_VERSION_postfix-native ?= "2.0.20"
+PREFERRED_VERSION_postgresql ?= "8.1.8"
+PREFERRED_VERSION_povray ?= "3.6.1"
+PREFERRED_VERSION_powermanga ?= "0.79"
+PREFERRED_VERSION_powernowd ?= "0.96"
+PREFERRED_VERSION_powertop ?= "1.8"
+PREFERRED_VERSION_ppp ?= "2.4.3"
+PREFERRED_VERSION_ppp-dsl ?= "0.1-monolithic"
+PREFERRED_VERSION_pptp-linux ?= "1.7.1"
+PREFERRED_VERSION_prboom ?= "2.2.6"
+PREFERRED_VERSION_prboom-devconfig ?= "1.0"
+PREFERRED_VERSION_prelink ?= "20060712"
+PREFERRED_VERSION_printproto ?= "1.0.3"
+PREFERRED_VERSION_prism-firmware ?= "1.0"
+PREFERRED_VERSION_prism2-firmware-update ?= "1.7.4"
+PREFERRED_VERSION_prism54-firmware ?= "1.0.4.3"
+PREFERRED_VERSION_prism54-module ?= "1.2"
+PREFERRED_VERSION_prismstumbler ?= "0.7.3"
+PREFERRED_VERSION_privoxy ?= "3.0.3"
+PREFERRED_VERSION_procps ?= "3.2.7"
+PREFERRED_VERSION_proj-4 ?= "4.9"
+PREFERRED_VERSION_proj-4-native ?= "4.9"
+PREFERRED_VERSION_psmisc ?= "22.2"
+PREFERRED_VERSION_psplash-zap ?= "1.0"
+PREFERRED_VERSION_pth ?= "2.0.2"
+PREFERRED_VERSION_pulseaudio ?= "0.9.6"
+PREFERRED_VERSION_puppy ?= "1.11"
+PREFERRED_VERSION_puzz-le ?= "2.0.0"
+PREFERRED_VERSION_puzzles ?= "r7436"
+PREFERRED_VERSION_pvrusb2-mci ?= "20060903"
+PREFERRED_VERSION_pwdutils ?= "2.6"
+PREFERRED_VERSION_pwlib ?= "1.5.2"
+PREFERRED_VERSION_pwmpi ?= "2.2.7"
+PREFERRED_VERSION_pxaregs ?= "1.14"
+PREFERRED_VERSION_python ?= "2.5.1"
+PREFERRED_VERSION_python-ao ?= "0.82"
+PREFERRED_VERSION_python-constraint ?= "1.1"
+PREFERRED_VERSION_python-dbus ?= "0.81.1"
+PREFERRED_VERSION_python-fam ?= "1.1.1"
+PREFERRED_VERSION_python-fnorb ?= "1.3"
+PREFERRED_VERSION_python-fpconst ?= "0.6.0"
+PREFERRED_VERSION_python-gammu ?= "0.24"
+PREFERRED_VERSION_python-gmpy ?= "1.0.1"
+PREFERRED_VERSION_python-gnosis ?= "1.2.2"
+PREFERRED_VERSION_python-gst ?= "0.10.8"
+PREFERRED_VERSION_python-hmm ?= "0.4"
+PREFERRED_VERSION_python-imaging ?= "1.1.6"
+PREFERRED_VERSION_python-imdbpy ?= "3.1"
+PREFERRED_VERSION_python-inotify ?= "0.1.0"
+PREFERRED_VERSION_python-irclib ?= "0.4.6"
+PREFERRED_VERSION_python-itools ?= "0.16.5"
+PREFERRED_VERSION_python-libgmail ?= "0.1.6"
+PREFERRED_VERSION_python-logilab-common ?= "0.9.3"
+PREFERRED_VERSION_python-lxml ?= "1.3.3"
+PREFERRED_VERSION_python-mad ?= "0.6"
+PREFERRED_VERSION_python-mysqldb ?= "1.2.1"
+PREFERRED_VERSION_python-native ?= "2.5.1"
+PREFERRED_VERSION_python-numarray ?= "1.1.1"
+PREFERRED_VERSION_python-numeric ?= "23.7"
+PREFERRED_VERSION_python-ogg ?= "1.3"
+PREFERRED_VERSION_python-pexpect ?= "2.1"
+PREFERRED_VERSION_python-pybluez ?= "0.13"
+PREFERRED_VERSION_python-pycairo ?= "1.4.0"
+PREFERRED_VERSION_python-pychecker ?= "0.8.17"
+PREFERRED_VERSION_python-pycodes ?= "1.2"
+PREFERRED_VERSION_python-pycrypto ?= "2.0.1"
+PREFERRED_VERSION_python-pycurl ?= "7.16.4"
+PREFERRED_VERSION_python-pyephem ?= "3.7.2a"
+PREFERRED_VERSION_python-pyfits ?= "1.1"
+PREFERRED_VERSION_python-pyflakes ?= "0.2.1"
+PREFERRED_VERSION_python-pygame ?= "1.7.1"
+PREFERRED_VERSION_python-pygnome ?= "2.16.2"
+PREFERRED_VERSION_python-pygobject ?= "2.12.3"
+PREFERRED_VERSION_python-pygobject-native ?= "2.12.3"
+PREFERRED_VERSION_python-pygoogle ?= "0.6"
+PREFERRED_VERSION_python-pygtk ?= "2.10.4"
+PREFERRED_VERSION_python-pygtk-1.2 ?= "0.6.12"
+PREFERRED_VERSION_python-pyid3lib ?= "0.5.1"
+PREFERRED_VERSION_python-pyiw ?= "0.3.3"
+PREFERRED_VERSION_python-pylinda ?= "0.6"
+PREFERRED_VERSION_python-pylint ?= "0.13.2"
+PREFERRED_VERSION_python-pymetar ?= "0.11"
+PREFERRED_VERSION_python-pymp3 ?= "0.3.4"
+PREFERRED_VERSION_python-pyrad ?= "0.8"
+PREFERRED_VERSION_python-pyraf ?= "1.4"
+PREFERRED_VERSION_python-pyreverse ?= "0.5.2"
+PREFERRED_VERSION_python-pyrex ?= "0.9.5.1a"
+PREFERRED_VERSION_python-pyrex-native ?= "0.9.5.1a"
+PREFERRED_VERSION_python-pyro ?= "3.7"
+PREFERRED_VERSION_python-pyserial ?= "2.2"
+PREFERRED_VERSION_python-pytester ?= "0.6.0"
+PREFERRED_VERSION_python-pythondaap ?= "0.4"
+PREFERRED_VERSION_python-pyvisa ?= "1.1"
+PREFERRED_VERSION_python-pyweather ?= "0.7.0"
+PREFERRED_VERSION_python-pywpa ?= "0.3.4"
+PREFERRED_VERSION_python-pyxml ?= "0.8.4"
+PREFERRED_VERSION_python-pyxmlrpc ?= "0.8.8.3"
+PREFERRED_VERSION_python-pyzeroconf ?= "0.12"
+PREFERRED_VERSION_python-scapy ?= "1.1.1"
+PREFERRED_VERSION_python-scons ?= "0.97"
+PREFERRED_VERSION_python-scons-native ?= "0.97"
+PREFERRED_VERSION_python-setuptools ?= "0.6c6"
+PREFERRED_VERSION_python-sgmlop ?= "1.1"
+PREFERRED_VERSION_python-simplejson ?= "1.7.1"
+PREFERRED_VERSION_python-snmplib ?= "0.1.1"
+PREFERRED_VERSION_python-soappy ?= "0.11.6"
+PREFERRED_VERSION_python-spydi ?= "0.9.7"
+PREFERRED_VERSION_python-spyro ?= "0.9.22"
+PREFERRED_VERSION_python-sqlobject ?= "0.9.1"
+PREFERRED_VERSION_python-sword ?= "1.5.9"
+PREFERRED_VERSION_python-urwid ?= "0.9.8.1"
+PREFERRED_VERSION_python-vmaps ?= "1.1"
+PREFERRED_VERSION_python-vorbis ?= "1.3"
+PREFERRED_VERSION_python-webpy ?= "0.21"
+PREFERRED_VERSION_python24 ?= "2.4.4"
+PREFERRED_VERSION_python24-native ?= "2.4.0"
+PREFERRED_VERSION_python24-pyqt2 ?= "3.13"
+PREFERRED_VERSION_python24-pyqwt2 ?= "3.10"
+PREFERRED_VERSION_python24-sip ?= "4.1.1"
+PREFERRED_VERSION_qc-usb-messenger ?= "1.1"
+PREFERRED_VERSION_qclockchange ?= "0.1a"
+PREFERRED_VERSION_qcoptest ?= "0.1.1"
+PREFERRED_VERSION_qfish2 ?= "1.1.0"
+PREFERRED_VERSION_qgis ?= "0.8.1"
+PREFERRED_VERSION_qiv ?= "1.9"
+PREFERRED_VERSION_qjackctl ?= "0.3.1a"
+PREFERRED_VERSION_qmake-native ?= "1.07a"
+PREFERRED_VERSION_qmake2-native ?= "2.10a"
+PREFERRED_VERSION_qmatrix ?= "1.1.0"
+PREFERRED_VERSION_qof ?= "0.7.2"
+PREFERRED_VERSION_qolyester ?= "20050728"
+PREFERRED_VERSION_qpdf2 ?= "2.2.1"
+PREFERRED_VERSION_qpe-gaim ?= "20041030"
+PREFERRED_VERSION_qpe-inputhelper-applet ?= "1.0.0"
+PREFERRED_VERSION_qpe-libgaim ?= "1.5.0"
+PREFERRED_VERSION_qpealarmclock ?= "1.0.9"
+PREFERRED_VERSION_qpealarmclockapplet ?= "1.0.9"
+PREFERRED_VERSION_qpegps ?= "0.9.3.1"
+PREFERRED_VERSION_qpenmapfe ?= "1.0.0"
+PREFERRED_VERSION_qpf-arabic ?= "1.0"
+PREFERRED_VERSION_qpf-bitstream-vera ?= "1.10"
+PREFERRED_VERSION_qpf-bitstream-vera-sans-mono ?= "1.10"
+PREFERRED_VERSION_qpf-font-common ?= "1.0"
+PREFERRED_VERSION_qpf-freemono ?= "1.0"
+PREFERRED_VERSION_qpf-freeserif ?= "1.0"
+PREFERRED_VERSION_qpf-helvetica ?= "1.0"
+PREFERRED_VERSION_qpf-hunkysans ?= "0.3.0"
+PREFERRED_VERSION_qpf-hunkyserif ?= "0.3.0"
+PREFERRED_VERSION_qpf-qte ?= "2.3.10"
+PREFERRED_VERSION_qpf-unifont ?= "1.0"
+PREFERRED_VERSION_qpf-unismall ?= "1.0.0"
+PREFERRED_VERSION_qpf-utopia ?= "1.0"
+PREFERRED_VERSION_qplot ?= "2.0.1-cvs-20020420"
+PREFERRED_VERSION_qpobox ?= "0.5.4"
+PREFERRED_VERSION_qpphoto ?= "1.0.2"
+PREFERRED_VERSION_qscintilla ?= "1.65-gpl-1.6"
+PREFERRED_VERSION_qsvn ?= "0.3.0"
+PREFERRED_VERSION_qt-x11-free ?= "3.3.7"
+PREFERRED_VERSION_qt-x11-free-native ?= "3.3.5"
+PREFERRED_VERSION_qt4-x11-free ?= "4.3.3"
+PREFERRED_VERSION_qtplot ?= "0.2"
+PREFERRED_VERSION_quagga ?= "0.99.8"
+PREFERRED_VERSION_quake1 ?= "0.0.1"
+PREFERRED_VERSION_quetoo ?= "0.6.1"
+PREFERRED_VERSION_quilt ?= "0.45"
+PREFERRED_VERSION_quilt-native ?= "0.45"
+PREFERRED_VERSION_qwt ?= "4.2.0rc1"
+PREFERRED_VERSION_qxmp ?= "1.0"
+PREFERRED_VERSION_r-native ?= "2.0.0"
+PREFERRED_VERSION_radlib ?= "2.6.2"
+PREFERRED_VERSION_radlib-mysql ?= "2.6.2"
+PREFERRED_VERSION_radvd ?= "1.0"
+PREFERRED_VERSION_rage ?= "0.2.0.003"
+PREFERRED_VERSION_randrext ?= "1.0"
+PREFERRED_VERSION_randrproto ?= "1.2.1"
+PREFERRED_VERSION_rdesktop ?= "1.5.0"
+PREFERRED_VERSION_rdiff-backup ?= "1.1.5"
+PREFERRED_VERSION_readline ?= "4.3"
+PREFERRED_VERSION_readline-native ?= "4.3"
+PREFERRED_VERSION_reaim ?= "7.0.1.13"
+PREFERRED_VERSION_recode ?= "3.6"
+PREFERRED_VERSION_recode-native ?= "3.6"
+PREFERRED_VERSION_recordproto ?= "1.13.2"
+PREFERRED_VERSION_redfang ?= "2.5"
+PREFERRED_VERSION_refdbg ?= "1.2"
+PREFERRED_VERSION_regex-markup ?= "0.10.0"
+PREFERRED_VERSION_reiser4progs ?= "1.0.4"
+PREFERRED_VERSION_reiserfsprogs ?= "3.6.19"
+PREFERRED_VERSION_renderproto ?= "0.9.3"
+PREFERRED_VERSION_resistorui ?= "0.9"
+PREFERRED_VERSION_resolvconf ?= "1.28"
+PREFERRED_VERSION_resourceext ?= "1.0"
+PREFERRED_VERSION_resourceproto ?= "1.0.2"
+PREFERRED_VERSION_rfakeap ?= "0.2"
+PREFERRED_VERSION_rglueap ?= "0.1"
+PREFERRED_VERSION_rhythmbox ?= "0.8.7"
+PREFERRED_VERSION_rlpr ?= "2.05"
+PREFERRED_VERSION_roadmap-gtk2 ?= "1.1.0"
+PREFERRED_VERSION_rott ?= "1.0"
+PREFERRED_VERSION_rox-filer ?= "2.5"
+PREFERRED_VERSION_rp-pppoe ?= "3.8"
+PREFERRED_VERSION_rpm ?= "4.4"
+PREFERRED_VERSION_rrdtool ?= "1.0.49"
+PREFERRED_VERSION_rsync ?= "2.6.9"
+PREFERRED_VERSION_rt2570 ?= "1.1.0-b2"
+PREFERRED_VERSION_rt2570-k2wrlz ?= "1.6.1"
+PREFERRED_VERSION_rt73-k2wrlz ?= "2.0.1"
+PREFERRED_VERSION_rtaudio-tests ?= "3.0.1"
+PREFERRED_VERSION_ruby ?= "1.8.5"
+PREFERRED_VERSION_ruby-native ?= "1.8.5"
+PREFERRED_VERSION_rxvt ?= "2.8.0"
+PREFERRED_VERSION_rxvt-unicode ?= "7.9"
+PREFERRED_VERSION_sablevm ?= "1.12"
+PREFERRED_VERSION_sablevm-classpath ?= "1.12"
+PREFERRED_VERSION_salsa-lib ?= "0.0.1"
+PREFERRED_VERSION_samba ?= "3.0.23c"
+PREFERRED_VERSION_samba-essential ?= "3.0.20"
+PREFERRED_VERSION_sane-backends ?= "1.0.17"
+PREFERRED_VERSION_sane-frontends ?= "1.0.13"
+PREFERRED_VERSION_sato-icon-theme ?= "0.1"
+PREFERRED_VERSION_sbagen ?= "1.4.1"
+PREFERRED_VERSION_sbrsh ?= "7.1"
+PREFERRED_VERSION_scap ?= "0.1"
+PREFERRED_VERSION_sccd ?= "1.0"
+PREFERRED_VERSION_scew ?= "0.3.1"
+PREFERRED_VERSION_schedstat-utils ?= "1.0"
+PREFERRED_VERSION_schroedinger ?= "0.2.0.0"
+PREFERRED_VERSION_screen ?= "4.0.2"
+PREFERRED_VERSION_scrnsaverproto ?= "1.1.0"
+PREFERRED_VERSION_scsi-idle ?= "2.4.23"
+PREFERRED_VERSION_sctzap ?= "0.0cvs20060814"
+PREFERRED_VERSION_scummvm ?= "0.10.0"
+PREFERRED_VERSION_scummvm-qpe ?= "0.6.1b"
+PREFERRED_VERSION_scw ?= "0.4.3"
+PREFERRED_VERSION_sdcc ?= "2.5.0"
+PREFERRED_VERSION_sdcc-native ?= "2.5.0"
+PREFERRED_VERSION_sdk-default-icons ?= "0.2-1"
+PREFERRED_VERSION_sdk-default-theme ?= "0.1-1"
+PREFERRED_VERSION_sdk-default-theme-config ?= "1.0-1"
+PREFERRED_VERSION_sdl-perl ?= "1.20.3"
+PREFERRED_VERSION_sed ?= "4.1.2"
+PREFERRED_VERSION_sed-native ?= "4.1.2"
+PREFERRED_VERSION_ser ?= "0.9.0"
+PREFERRED_VERSION_serload-native ?= "1.0"
+PREFERRED_VERSION_sessreg ?= "1.0.3"
+PREFERRED_VERSION_setmixer ?= "27DEC94"
+PREFERRED_VERSION_setserial ?= "2.17"
+PREFERRED_VERSION_setxkbmap ?= "1.0.4"
+PREFERRED_VERSION_sgml-common ?= "0.6.3"
+PREFERRED_VERSION_sgml-common-native ?= "0.6.3"
+PREFERRED_VERSION_shared-mime-info ?= "0.22"
+PREFERRED_VERSION_sharp-compat-libs ?= "0.5"
+PREFERRED_VERSION_sharprom-toolchain-native ?= "1.0"
+PREFERRED_VERSION_shasum-native ?= "1.0"
+PREFERRED_VERSION_shfs-modules ?= "0.35"
+PREFERRED_VERSION_shfs-utils ?= "0.35"
+PREFERRED_VERSION_shisensho ?= "1.0.0"
+PREFERRED_VERSION_shopper ?= "1.2.1"
+PREFERRED_VERSION_shorewall ?= "2.0.9-monolithic"
+PREFERRED_VERSION_sidplay-base ?= "1.0.9"
+PREFERRED_VERSION_sidplayer ?= "1.5.0"
+PREFERRED_VERSION_silo ?= "1.4.8"
+PREFERRED_VERSION_simh ?= "3.7-1"
+PREFERRED_VERSION_simpad-utilities ?= "1.0"
+PREFERRED_VERSION_sip3-native ?= "4.0.1"
+PREFERRED_VERSION_sipsak ?= "0.9.6"
+PREFERRED_VERSION_skippy-xd ?= "0.5.0"
+PREFERRED_VERSION_sl ?= "3.03"
+PREFERRED_VERSION_slang ?= "1.4.9"
+PREFERRED_VERSION_slcalc ?= "1.2.1"
+PREFERRED_VERSION_sliderulez ?= "0.92"
+PREFERRED_VERSION_slotsig ?= "0.6"
+PREFERRED_VERSION_slrn ?= "0.9.8.0"
+PREFERRED_VERSION_slsnif ?= "0.4.4"
+PREFERRED_VERSION_slugimage-native ?= "1.0"
+PREFERRED_VERSION_slugos-init ?= "0.10"
+PREFERRED_VERSION_slugos-native ?= "1.0"
+PREFERRED_VERSION_slugos-native-packages ?= "1.0"
+PREFERRED_VERSION_slugtool ?= "1.0"
+PREFERRED_VERSION_slugtool-native ?= "1.0"
+PREFERRED_VERSION_slutils ?= "0.1.0"
+PREFERRED_VERSION_smartmontools ?= "5.37"
+PREFERRED_VERSION_sms ?= "1.1"
+PREFERRED_VERSION_sn9c102 ?= "1.32"
+PREFERRED_VERSION_snes232 ?= "cvs"
+PREFERRED_VERSION_snes9x ?= "1.43-WIP1"
+PREFERRED_VERSION_snes9x-sdl ?= "1.39"
+PREFERRED_VERSION_snes9x-sdl-qpe ?= "1.39"
+PREFERRED_VERSION_socat ?= "1.3.2.1"
+PREFERRED_VERSION_sofia-sip ?= "1.11.7"
+PREFERRED_VERSION_softfan ?= "0.10"
+PREFERRED_VERSION_sokoban ?= "1.3.8ern"
+PREFERRED_VERSION_soundserver ?= "1.0"
+PREFERRED_VERSION_soundtracker ?= "0.6.8"
+PREFERRED_VERSION_soundtracker-gtk2 ?= "0.6.7"
+PREFERRED_VERSION_sox ?= "13.0.0"
+PREFERRED_VERSION_sox-native ?= "13.0.0"
+PREFERRED_VERSION_spandsp ?= "0.0.3"
+PREFERRED_VERSION_spca5xx ?= "20060501"
+PREFERRED_VERSION_spectrum-fw ?= "1.0"
+PREFERRED_VERSION_speex ?= "1.1.12"
+PREFERRED_VERSION_sphinxbase ?= "0.1"
+PREFERRED_VERSION_squashfs-lzma-tools ?= "3.1r2"
+PREFERRED_VERSION_squashfs-lzma-tools-native ?= "3.1r2"
+PREFERRED_VERSION_squashfs-tools ?= "3.1r2"
+PREFERRED_VERSION_squashfs-tools-native ?= "3.1r2"
+PREFERRED_VERSION_squeak-nox ?= "3.4-2"
+PREFERRED_VERSION_squid ?= "2.6.STABLE14"
+PREFERRED_VERSION_sshfs-fuse ?= "1.8"
+PREFERRED_VERSION_ssmtp ?= "2.61"
+PREFERRED_VERSION_stagemanager-native ?= "0.0.1"
+PREFERRED_VERSION_starling ?= "0.2"
+PREFERRED_VERSION_startup-monitor ?= "0.18-2"
+PREFERRED_VERSION_startup-notification ?= "0.8"
+PREFERRED_VERSION_stat ?= "3.3"
+PREFERRED_VERSION_stat-native ?= "3.3"
+PREFERRED_VERSION_strace ?= "4.5.14"
+PREFERRED_VERSION_streamripper ?= "1.61.10"
+PREFERRED_VERSION_stress ?= "0.18.8"
+PREFERRED_VERSION_stunnel ?= "4.09"
+PREFERRED_VERSION_subapplet ?= "1.0.8"
+PREFERRED_VERSION_subversion ?= "1.4.3"
+PREFERRED_VERSION_sudo ?= "1.6.8p12"
+PREFERRED_VERSION_supertux ?= "0.1.2"
+PREFERRED_VERSION_supybot ?= "0.77.0"
+PREFERRED_VERSION_suspend-desktop ?= "1.0"
+PREFERRED_VERSION_swfdec ?= "0.5.1"
+PREFERRED_VERSION_swig ?= "1.3.31"
+PREFERRED_VERSION_swig-native ?= "1.3.31"
+PREFERRED_VERSION_sword ?= "1.5.9"
+PREFERRED_VERSION_sylpheed ?= "2.2.9"
+PREFERRED_VERSION_synaesthesia ?= "2.4"
+PREFERRED_VERSION_syncml-client ?= "0.1"
+PREFERRED_VERSION_synergy ?= "1.3.1"
+PREFERRED_VERSION_sysfsutils ?= "2.0.0"
+PREFERRED_VERSION_sysklogd ?= "1.4.1"
+PREFERRED_VERSION_syslinux-native ?= "3.36"
+PREFERRED_VERSION_syslog-ng ?= "1.6.11"
+PREFERRED_VERSION_sysvinit ?= "2.86"
+PREFERRED_VERSION_t1lib ?= "5.0.2"
+PREFERRED_VERSION_taglib ?= "1.4"
+PREFERRED_VERSION_taglibc ?= "1.4"
+PREFERRED_VERSION_tango-icon-theme ?= "0.7.2"
+PREFERRED_VERSION_tango-icon-theme-extras ?= "0.1.0"
+PREFERRED_VERSION_tapioca ?= "0.3.9"
+PREFERRED_VERSION_tapioca-xmpp ?= "0.3.9"
+PREFERRED_VERSION_tapiocaui ?= "0.3.9.1"
+PREFERRED_VERSION_tar ?= "1.18"
+PREFERRED_VERSION_tasklistapplet ?= "1.0.5"
+PREFERRED_VERSION_tasks ?= "0.10"
+PREFERRED_VERSION_tcl ?= "8.4.11"
+PREFERRED_VERSION_tcp-wrappers ?= "7.6"
+PREFERRED_VERSION_tcpdump ?= "3.9.7"
+PREFERRED_VERSION_tcpick ?= "0.1.22"
+PREFERRED_VERSION_tcptraceroute ?= "1.5beta6"
+PREFERRED_VERSION_tcptrack ?= "1.1.2"
+PREFERRED_VERSION_tda1004x-firmware ?= "1.0"
+PREFERRED_VERSION_telepathy-gabble ?= "0.5.10"
+PREFERRED_VERSION_telepathy-glib ?= "0.5.10"
+PREFERRED_VERSION_telepathy-mission-control ?= "4.22"
+PREFERRED_VERSION_teleport ?= "0.34"
+PREFERRED_VERSION_temtor ?= "0.0.1"
+PREFERRED_VERSION_termcap ?= "11.0.1"
+PREFERRED_VERSION_terminus ?= "1.0"
+PREFERRED_VERSION_tesseract ?= "1.0"
+PREFERRED_VERSION_tetex ?= "3.0"
+PREFERRED_VERSION_tetex-native ?= "3.0"
+PREFERRED_VERSION_tetex-texmf ?= "3.0"
+PREFERRED_VERSION_texinfo ?= "4.8a"
+PREFERRED_VERSION_texlive ?= "2007"
+PREFERRED_VERSION_texmaker ?= "1.3"
+PREFERRED_VERSION_thcrut ?= "1.2.5"
+PREFERRED_VERSION_thttpd ?= "2.25b"
+PREFERRED_VERSION_thumbpad ?= "0.8"
+PREFERRED_VERSION_thunar ?= "0.8.0"
+PREFERRED_VERSION_thunderbird ?= "1.0.7"
+PREFERRED_VERSION_tickypip ?= "0.1.2"
+PREFERRED_VERSION_tickypip-levels ?= "1.1"
+PREFERRED_VERSION_tiff ?= "3.7.2"
+PREFERRED_VERSION_tightvnc ?= "1.3dev7"
+PREFERRED_VERSION_tiinit ?= "3.2.26"
+PREFERRED_VERSION_time ?= "1.7"
+PREFERRED_VERSION_timesleuth ?= "1.05ern"
+PREFERRED_VERSION_timezones ?= "1.2.0"
+PREFERRED_VERSION_tin ?= "1.9.1"
+PREFERRED_VERSION_tinc ?= "1.0.2"
+PREFERRED_VERSION_tinylogin ?= "1.4"
+PREFERRED_VERSION_tinyscheme ?= "1.35"
+PREFERRED_VERSION_tk ?= "8.4.11"
+PREFERRED_VERSION_tmake ?= "1.11"
+PREFERRED_VERSION_tmdns ?= "20030116"
+PREFERRED_VERSION_tn5250 ?= "0.16.5"
+PREFERRED_VERSION_tomoe ?= "0.2.1"
+PREFERRED_VERSION_tor ?= "0.1.1.26"
+PREFERRED_VERSION_totem ?= "1.0.4"
+PREFERRED_VERSION_tracker ?= "0.5.4"
+PREFERRED_VERSION_transconnect ?= "1.3-beta"
+PREFERRED_VERSION_trapproto ?= "3.4.3"
+PREFERRED_VERSION_tree ?= "1.5.1"
+PREFERRED_VERSION_treecc ?= "0.3.6"
+PREFERRED_VERSION_treecc-native ?= "0.3.6"
+PREFERRED_VERSION_tremor ?= "20041119"
+PREFERRED_VERSION_tron ?= "1.0.0"
+PREFERRED_VERSION_tscalib ?= "0.0.1-3"
+PREFERRED_VERSION_tsclient ?= "0.140"
+PREFERRED_VERSION_tslib ?= "1.0"
+PREFERRED_VERSION_ttf-bitstream-vera ?= "1.10"
+PREFERRED_VERSION_ttf-dejavu ?= "2.18"
+PREFERRED_VERSION_ttf-gentium ?= "1.02"
+PREFERRED_VERSION_ttf-hunkyfonts ?= "0.3.0"
+PREFERRED_VERSION_ttf-liberation ?= "0.2"
+PREFERRED_VERSION_ttf-sazanami ?= "20040629"
+PREFERRED_VERSION_ttyconv ?= "0.2.3"
+PREFERRED_VERSION_ttyrec ?= "1.0.8"
+PREFERRED_VERSION_tuxnes ?= "0.75"
+PREFERRED_VERSION_twin ?= "0.4.6"
+PREFERRED_VERSION_twisted ?= "2.5.0"
+PREFERRED_VERSION_twm ?= "1.0.3"
+PREFERRED_VERSION_twutils ?= "0.2"
+PREFERRED_VERSION_txdrug ?= "0.1"
+PREFERRED_VERSION_tximage ?= "0.2"
+PREFERRED_VERSION_tzcode-native ?= "2007e"
+PREFERRED_VERSION_tzdata ?= "2007e"
+PREFERRED_VERSION_u-boot ?= "1.2.0"
+PREFERRED_VERSION_u-boot-omap2430sdp ?= "1.1.4"
+PREFERRED_VERSION_u2nl ?= "1.3"
+PREFERRED_VERSION_uae4all ?= "0.7.1"
+PREFERRED_VERSION_ubahnnav ?= "0.4.1"
+PREFERRED_VERSION_u-boot-utils ?= "1.2.0"
+PREFERRED_VERSION_udev ?= "092"
+PREFERRED_VERSION_udev-hostap-cs-vcc-workaround ?= "1.0"
+PREFERRED_VERSION_udhcp ?= "0.9.8"
+PREFERRED_VERSION_ufraw ?= "0.12"
+PREFERRED_VERSION_uicmoc-native ?= "2.3.10"
+PREFERRED_VERSION_uicmoc3-native ?= "3.3.5"
+PREFERRED_VERSION_uicmoc4-native ?= "4.3.3"
+PREFERRED_VERSION_uim ?= "1.3.1"
+PREFERRED_VERSION_uim-native ?= "1.3.1"
+PREFERRED_VERSION_uim-tomoe-gtk ?= "0.2.0"
+PREFERRED_VERSION_ulxmlrpcpp ?= "1.5.2"
+PREFERRED_VERSION_uml-utilities ?= "20040406"
+PREFERRED_VERSION_unfreeze ?= "1.0"
+PREFERRED_VERSION_unionfs-modules ?= "1.0.13"
+PREFERRED_VERSION_unionfs-utils ?= "1.0.13"
+PREFERRED_VERSION_unionroot ?= "0.1.1"
+PREFERRED_VERSION_units ?= "1.80"
+PREFERRED_VERSION_unixbench ?= "4.1.0"
+PREFERRED_VERSION_unrar ?= "3.4.3"
+PREFERRED_VERSION_unrar-native ?= "3.4.3"
+PREFERRED_VERSION_unzip ?= "552"
+PREFERRED_VERSION_unzip-native ?= "552"
+PREFERRED_VERSION_update-alternatives-cworth ?= "0.99.154"
+PREFERRED_VERSION_update-alternatives-cworth-native ?= "0.99.154"
+PREFERRED_VERSION_update-alternatives-dpkg ?= "1.13.22"
+PREFERRED_VERSION_update-alternatives-dpkg-native ?= "1.13.22"
+PREFERRED_VERSION_update-modules ?= "1.0"
+PREFERRED_VERSION_upstart ?= "0.3.8"
+PREFERRED_VERSION_uqm ?= "0.5.0"
+PREFERRED_VERSION_usb-gadget-mode ?= "0.0.2"
+PREFERRED_VERSION_usbutils ?= "0.70"
+PREFERRED_VERSION_usbview ?= "1.0"
+PREFERRED_VERSION_ushare ?= "0.9.7"
+PREFERRED_VERSION_usound ?= "0.2.0"
+PREFERRED_VERSION_usrp ?= "0.12"
+PREFERRED_VERSION_util-linux ?= "2.12r"
+PREFERRED_VERSION_util-linux-native ?= "2.12r"
+PREFERRED_VERSION_util-macros ?= "1.1.5"
+PREFERRED_VERSION_util-macros-native ?= "1.1.5"
+PREFERRED_VERSION_uucp ?= "1.07"
+PREFERRED_VERSION_v4l2apps ?= "20020317"
+PREFERRED_VERSION_vde ?= "2.0.2"
+PREFERRED_VERSION_vectoroids ?= "1.1.0"
+PREFERRED_VERSION_videoplayer ?= "0.1"
+PREFERRED_VERSION_videoproto ?= "2.2.2"
+PREFERRED_VERSION_vim ?= "7.0"
+PREFERRED_VERSION_vim-tiny ?= "7.0"
+PREFERRED_VERSION_vino ?= "2.16.0"
+PREFERRED_VERSION_visiscript ?= "0.4.3"
+PREFERRED_VERSION_visual-boot ?= "0.0.1"
+PREFERRED_VERSION_vlan ?= "1.9"
+PREFERRED_VERSION_vlc-gpe ?= "0.8.4"
+PREFERRED_VERSION_vmedit ?= "0.02"
+PREFERRED_VERSION_vnc ?= "3.3.7"
+PREFERRED_VERSION_vochistory ?= "0.1"
+PREFERRED_VERSION_voicecall ?= "0.1"
+PREFERRED_VERSION_void11 ?= "0.2.0"
+PREFERRED_VERSION_vorbis-tools ?= "1.0.1"
+PREFERRED_VERSION_vpnc ?= "0.3.3"
+PREFERRED_VERSION_vsftpd ?= "2.0.5"
+PREFERRED_VERSION_vte ?= "0.16.8"
+PREFERRED_VERSION_vtun ?= "2.6"
+PREFERRED_VERSION_w3cam ?= "0.7.2"
+PREFERRED_VERSION_wakelan ?= "1.1"
+PREFERRED_VERSION_watchdog ?= "5.3.1"
+PREFERRED_VERSION_wbxml2 ?= "0.9.0"
+PREFERRED_VERSION_webcam-server ?= "0.50"
+PREFERRED_VERSION_wget ?= "1.9.1"
+PREFERRED_VERSION_whois ?= "4.5.25"
+PREFERRED_VERSION_wifistix-modules ?= "5.0.16.p0"
+PREFERRED_VERSION_wiggle ?= "0.6"
+PREFERRED_VERSION_wiggle-native ?= "0.6"
+PREFERRED_VERSION_win4 ?= "1.0.1"
+PREFERRED_VERSION_windowswmproto ?= "1.0.3"
+PREFERRED_VERSION_wireshark ?= "0.99.4"
+PREFERRED_VERSION_wlan-ng-modules ?= "0.2.7"
+PREFERRED_VERSION_wlan-ng-utils ?= "0.2.7"
+PREFERRED_VERSION_wmctrl ?= "1.07"
+PREFERRED_VERSION_wpa-gui ?= "0.4.8"
+PREFERRED_VERSION_wpa-supplicant ?= "0.5.5"
+PREFERRED_VERSION_wpa-supplicant-nossl ?= "0.2.6"
+PREFERRED_VERSION_wpa-supplicant-ssl ?= "0.2.6"
+PREFERRED_VERSION_wrt-imagetools-native ?= "1.0"
+PREFERRED_VERSION_wrt-init ?= "1.0"
+PREFERRED_VERSION_wrt-utils ?= "1.0"
+PREFERRED_VERSION_wv ?= "1.2.0"
+PREFERRED_VERSION_wview-sim ?= "3.1.3"
+PREFERRED_VERSION_wview-sim-mysql ?= "3.1.3"
+PREFERRED_VERSION_wview-vpro ?= "3.1.3"
+PREFERRED_VERSION_wview-vpro-mysql ?= "3.1.3"
+PREFERRED_VERSION_wview-wxt510 ?= "3.1.3"
+PREFERRED_VERSION_wview-wxt510-mysql ?= "3.1.3"
+PREFERRED_VERSION_wxwidgets ?= "2.6.3"
+PREFERRED_VERSION_x11perf ?= "1.4.1"
+PREFERRED_VERSION_x11vnc ?= "0.9.3"
+PREFERRED_VERSION_xaos ?= "3.2.3"
+PREFERRED_VERSION_xauth ?= "1.0.2"
+PREFERRED_VERSION_xawtv ?= "3.93"
+PREFERRED_VERSION_xbacklight ?= "1.1"
+PREFERRED_VERSION_xbase-clients ?= "1.0"
+PREFERRED_VERSION_xbitmaps ?= "1.0.1"
+PREFERRED_VERSION_xcb-demo ?= "0.1"
+PREFERRED_VERSION_xcb-proto ?= "1.0"
+PREFERRED_VERSION_xcb-util ?= "0.2"
+PREFERRED_VERSION_xchat ?= "2.8.4"
+PREFERRED_VERSION_xcmiscproto ?= "1.1.2"
+PREFERRED_VERSION_xcmiscproto-native ?= "1.1.2"
+PREFERRED_VERSION_xcursor-transparent-theme ?= "0.1.1"
+PREFERRED_VERSION_xdbedizzy ?= "1.0.2"
+PREFERRED_VERSION_xdemineur ?= "2.1.1"
+PREFERRED_VERSION_xdm ?= "1.1.6"
+PREFERRED_VERSION_xdpyinfo ?= "1.0.2"
+PREFERRED_VERSION_xerces-c ?= "2.7.0"
+PREFERRED_VERSION_xev ?= "1.0.2"
+PREFERRED_VERSION_xextproto ?= "7.0.2"
+PREFERRED_VERSION_xextproto-native ?= "7.0.2"
+PREFERRED_VERSION_xf86-input-evdev ?= "1.1.5"
+PREFERRED_VERSION_xf86-input-keyboard ?= "1.2.2"
+PREFERRED_VERSION_xf86-input-mouse ?= "1.2.2"
+PREFERRED_VERSION_xf86-input-penmount ?= "1.2.0"
+PREFERRED_VERSION_xf86-video-ati ?= "6.6.193"
+PREFERRED_VERSION_xf86-video-fbdev ?= "0.3.1"
+PREFERRED_VERSION_xf86-video-i128 ?= "1.1.0.6"
+PREFERRED_VERSION_xf86-video-i810 ?= "1.6.5"
+PREFERRED_VERSION_xf86-video-newport ?= "0.2.1"
+PREFERRED_VERSION_xf86-video-nsc ?= "2.8.2"
+PREFERRED_VERSION_xf86-video-nv ?= "2.1.3"
+PREFERRED_VERSION_xf86-video-s3 ?= "0.5.0"
+PREFERRED_VERSION_xf86-video-savage ?= "2.1.3"
+PREFERRED_VERSION_xf86-video-siliconmotion ?= "1.5.1"
+PREFERRED_VERSION_xf86-video-sis ?= "0.9.3"
+PREFERRED_VERSION_xf86-video-tdfx ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-trident ?= "1.2.3"
+PREFERRED_VERSION_xf86-video-tseng ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-vesa ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-via ?= "0.2.2"
+PREFERRED_VERSION_xf86-video-vmware ?= "10.14.1"
+PREFERRED_VERSION_xf86-video-voodoo ?= "1.1.1"
+PREFERRED_VERSION_xf86bigfontproto ?= "1.1.2"
+PREFERRED_VERSION_xf86bigfontproto-native ?= "1.1.2"
+PREFERRED_VERSION_xf86dga ?= "1.0.2"
+PREFERRED_VERSION_xf86dgaproto ?= "2.0.3"
+PREFERRED_VERSION_xf86driproto ?= "2.0.3"
+PREFERRED_VERSION_xf86miscproto ?= "0.9.2"
+PREFERRED_VERSION_xf86rushproto ?= "1.1.2"
+PREFERRED_VERSION_xf86vidmodeproto ?= "2.2.2"
+PREFERRED_VERSION_xfcalendar ?= "4.2.3"
+PREFERRED_VERSION_xfce-mcs-manager ?= "4.4.1"
+PREFERRED_VERSION_xfce-mcs-plugins ?= "4.4.1"
+PREFERRED_VERSION_xfce-terminal ?= "0.2.6"
+PREFERRED_VERSION_xfce4-appfinder ?= "4.4.1"
+PREFERRED_VERSION_xfce4-dev-tools ?= "4.4.0"
+PREFERRED_VERSION_xfce4-icon-theme ?= "4.4.1"
+PREFERRED_VERSION_xfce4-mixer ?= "4.4.1"
+PREFERRED_VERSION_xfce4-panel ?= "4.4.1"
+PREFERRED_VERSION_xfce4-session ?= "4.4.1"
+PREFERRED_VERSION_xfdesktop ?= "4.4.1"
+PREFERRED_VERSION_xffm ?= "4.3.99.2"
+PREFERRED_VERSION_xfonts-xorg ?= "6.8"
+PREFERRED_VERSION_xfprint ?= "4.4.1"
+PREFERRED_VERSION_xfs ?= "1.0.4"
+PREFERRED_VERSION_xfsprogs ?= "2.8.16"
+PREFERRED_VERSION_xfwm4 ?= "4.4.1"
+PREFERRED_VERSION_xfwm4-themes ?= "4.4.1"
+PREFERRED_VERSION_xhost ?= "1.0.2"
+PREFERRED_VERSION_xineramaproto ?= "1.1.2"
+PREFERRED_VERSION_xinetd ?= "2.3.13"
+PREFERRED_VERSION_xinit ?= "1.0.5"
+PREFERRED_VERSION_xkbd ?= "0.8.15"
+PREFERRED_VERSION_xmame ?= "0.100"
+PREFERRED_VERSION_xmame-tiny ?= "0.100"
+PREFERRED_VERSION_xmms ?= "1.2.10"
+PREFERRED_VERSION_xmms-embedded ?= "20040327"
+PREFERRED_VERSION_xmms-mad ?= "0.10"
+PREFERRED_VERSION_xmms-tremor ?= "1.0"
+PREFERRED_VERSION_xmodmap ?= "1.0.3"
+PREFERRED_VERSION_xmonobut ?= "0.4.1"
+PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
+PREFERRED_VERSION_xorg-headers-native ?= "1.0"
+PREFERRED_VERSION_xorg-sgml-doctools ?= "1.2"
+PREFERRED_VERSION_xoscope ?= "1.12"
+PREFERRED_VERSION_xournal ?= "0.4.0.1"
+PREFERRED_VERSION_xpext ?= "1.0-5"
+PREFERRED_VERSION_xprint ?= "0.9.001"
+PREFERRED_VERSION_xprop ?= "1.0.2"
+PREFERRED_VERSION_xproto ?= "7.0.10"
+PREFERRED_VERSION_xproto-native ?= "7.0.10"
+PREFERRED_VERSION_xproxymanagementprotocol ?= "1.0.2"
+PREFERRED_VERSION_xqt ?= "0.0.9"
+PREFERRED_VERSION_xqt2 ?= "20060509"
+PREFERRED_VERSION_xrandr ?= "1.2.2"
+PREFERRED_VERSION_xrdb ?= "1.0.4"
+PREFERRED_VERSION_xscreensaver ?= "4.22"
+PREFERRED_VERSION_xscrnsaverh ?= "1.0"
+PREFERRED_VERSION_xserver-common ?= "1.18"
+PREFERRED_VERSION_xserver-kdrive ?= "1.3.0.0"
+PREFERRED_VERSION_xserver-kdrive-common ?= "0.1"
+PREFERRED_VERSION_xserver-nodm-init ?= "1.0"
+PREFERRED_VERSION_xserver-xorg ?= "1.3.0.0"
+PREFERRED_VERSION_xset ?= "1.0.3"
+PREFERRED_VERSION_xsetroot ?= "1.0.2"
+PREFERRED_VERSION_xsp ?= "1.0.0-8"
+PREFERRED_VERSION_xst ?= "0.15"
+PREFERRED_VERSION_xstroke ?= "0.6"
+PREFERRED_VERSION_xterm ?= "207"
+PREFERRED_VERSION_xtrans ?= "1.0.4"
+PREFERRED_VERSION_xtrans-native ?= "1.0.3"
+PREFERRED_VERSION_xtscal ?= "0.6.3"
+PREFERRED_VERSION_xvinfo ?= "1.0.2"
+PREFERRED_VERSION_yeaphone ?= "0.1"
+PREFERRED_VERSION_yp-tools ?= "2.9"
+PREFERRED_VERSION_ypbind-mt ?= "1.19"
+PREFERRED_VERSION_ypserv ?= "2.17"
+PREFERRED_VERSION_zauralign ?= "1.0.2"
+PREFERRED_VERSION_zaurus-tarball-native ?= "1.0"
+PREFERRED_VERSION_zbedic ?= "1.0"
+PREFERRED_VERSION_zbench ?= "2.0"
+PREFERRED_VERSION_zcip ?= "4"
+PREFERRED_VERSION_zd1211 ?= "r85"
+PREFERRED_VERSION_zd1211-firmware ?= "1.3"
+PREFERRED_VERSION_zddice ?= "1.0.0"
+PREFERRED_VERSION_zeroconf ?= "0.9"
+PREFERRED_VERSION_zgscore ?= "1.0.2"
+PREFERRED_VERSION_zile ?= "2.2.15"
+PREFERRED_VERSION_zip ?= "2.32"
+PREFERRED_VERSION_zip-native ?= "2.32"
+PREFERRED_VERSION_zipsc ?= "0.4.3"
+PREFERRED_VERSION_ziq ?= "1.1ern"
+PREFERRED_VERSION_zlapspeed ?= "1.0.0"
+PREFERRED_VERSION_zlib ?= "1.2.3"
+PREFERRED_VERSION_zlib-native ?= "1.2.3"
+PREFERRED_VERSION_zmerlin ?= "0.9.1"
+PREFERRED_VERSION_zope ?= "3.3.1"
+PREFERRED_VERSION_zrally ?= "0.90"
+PREFERRED_VERSION_zrev7 ?= "1.0.1"
+PREFERRED_VERSION_zroadmap ?= "1.1.0"
+PREFERRED_VERSION_zsafe ?= "2.1.3"
+PREFERRED_VERSION_zsh ?= "4.1.1"
+PREFERRED_VERSION_zshopi ?= "0.2"
+PREFERRED_VERSION_zsubhunt ?= "1.0.0ern"
+PREFERRED_VERSION_ztappy ?= "0.9.3ern"
+PREFERRED_VERSION_zten ?= "1.6.2"
+PREFERRED_VERSION_zuc ?= "1.1.2ern"
+PREFERRED_VERSION_zudoku ?= "1.1"
+PREFERRED_VERSION_zziplib ?= "0.10.82"
diff --git a/conf/distro/include/angstrom-2007-for-openmoko.inc b/conf/distro/include/angstrom-2007-for-openmoko.inc
index 380c882c2c..08cf27ba57 100644
--- a/conf/distro/include/angstrom-2007-for-openmoko.inc
+++ b/conf/distro/include/angstrom-2007-for-openmoko.inc
@@ -146,7 +146,7 @@ PREFERRED_VERSION_glibc-initial ?= "2.5"
#Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom
require conf/distro/include/preferred-xorg-versions.inc
-require conf/distro/include/angstrom-2007-preferred-versions.inc
+require conf/distro/include/angstrom-2007-for-openmoko-versions.inc
require conf/distro/include/preferred-gpe-versions-2.8.inc
require conf/distro/include/preferred-e-versions.inc
diff --git a/conf/distro/include/angstrom-2007-preferred-versions.inc b/conf/distro/include/angstrom-2007-preferred-versions.inc
deleted file mode 100644
index 156b5b21a3..0000000000
--- a/conf/distro/include/angstrom-2007-preferred-versions.inc
+++ /dev/null
@@ -1,2131 +0,0 @@
-# This is a lock-down file for stability purposes
-# If you change anything, send a mail to angstrom-distro-devel@linuxtogo.org
-# stating the change and the reason.
-
-# bitbake -s | awk '{print "PREFERRED_VERSION_" $1 "=" $2}' | sed -e s:\+:\=:g | awk -F "=" '{print $1 " ?= \" "$2}' | awk -F "-r" '{print $1"\""}' | sed -e s,0:,,g -e s,1:,,g | sed s:\"\ :\":g> /tmp/angstrom-2007-preferred-versions.inc
-
-PREFERRED_VERSION_0xffff ?= "0.2"
-PREFERRED_VERSION_0xffff-native ?= "0.2"
-PREFERRED_VERSION_aalib ?= "1.4rc5"
-PREFERRED_VERSION_abiword ?= "2.5.2"
-PREFERRED_VERSION_abiword-embedded ?= "2.5.2"
-PREFERRED_VERSION_abiword-plugins ?= "2.5.2"
-PREFERRED_VERSION_abuse ?= "0.7.0"
-PREFERRED_VERSION_acpid ?= "1.0.4"
-PREFERRED_VERSION_acx-firmware ?= "1.0"
-PREFERRED_VERSION_addressbook ?= "0.1"
-PREFERRED_VERSION_adns ?= "1.0"
-PREFERRED_VERSION_agg ?= "2.5"
-PREFERRED_VERSION_aircrack ?= "2.41"
-PREFERRED_VERSION_aircrack-ng ?= "0.9.1"
-PREFERRED_VERSION_albumshaper ?= "2.1"
-PREFERRED_VERSION_aliens ?= "1.0.0"
-PREFERRED_VERSION_aliens-qt ?= "1.0.0"
-PREFERRED_VERSION_alsa-lib ?= "1.0.15"
-PREFERRED_VERSION_alsa-oss ?= "1.0.15"
-PREFERRED_VERSION_alsa-plugins ?= "1.0.14"
-PREFERRED_VERSION_alsa-state ?= "0.1.0"
-PREFERRED_VERSION_alsa-utils ?= "1.0.15"
-PREFERRED_VERSION_anthy ?= "7811"
-PREFERRED_VERSION_anthy-native ?= "7811"
-PREFERRED_VERSION_antlr ?= "2.7.5"
-PREFERRED_VERSION_antlr-native ?= "2.7.5"
-PREFERRED_VERSION_apache2 ?= "2.2.3"
-PREFERRED_VERSION_apache2-native ?= "2.2.3"
-PREFERRED_VERSION_apex-env ?= "1.5.8"
-PREFERRED_VERSION_apex-nslu2 ?= "1.5.8"
-PREFERRED_VERSION_apex-nslu2-16mb ?= "1.5.8"
-PREFERRED_VERSION_apmd ?= "3.2.2"
-PREFERRED_VERSION_applewmproto ?= "1.0.3"
-PREFERRED_VERSION_appres ?= "1.0.1"
-PREFERRED_VERSION_appweb ?= "2.0.4"
-PREFERRED_VERSION_apr ?= "1.2.7"
-PREFERRED_VERSION_apr-util ?= "1.2.7"
-PREFERRED_VERSION_apt ?= "0.7.3"
-PREFERRED_VERSION_apt-native ?= "0.7.3"
-PREFERRED_VERSION_argtable ?= "2.7"
-PREFERRED_VERSION_ark3116 ?= "0.4.1"
-PREFERRED_VERSION_arpwatch ?= "2.1a15"
-PREFERRED_VERSION_aspell ?= "0.60.5"
-PREFERRED_VERSION_aspell-native ?= "0.60.5"
-PREFERRED_VERSION_asterisk ?= "1.4.10"
-PREFERRED_VERSION_asterisk-sounds ?= "1.2.1"
-PREFERRED_VERSION_at ?= "3.1.8"
-PREFERRED_VERSION_atd ?= "0.70"
-PREFERRED_VERSION_atftp ?= "0.7"
-PREFERRED_VERSION_atk ?= "1.20.0"
-PREFERRED_VERSION_atmelwlandriver ?= "3.4.1.0"
-PREFERRED_VERSION_atomic ?= "1.0.1"
-PREFERRED_VERSION_audiofile ?= "0.2.6"
-PREFERRED_VERSION_audioplayer ?= "1.0"
-PREFERRED_VERSION_aumix ?= "2.8"
-PREFERRED_VERSION_autoconf ?= "2.61"
-PREFERRED_VERSION_autoconf-native ?= "2.61"
-PREFERRED_VERSION_autofs ?= "4.1.4"
-PREFERRED_VERSION_automake ?= "1.9.6"
-PREFERRED_VERSION_automake-native ?= "1.9.6"
-PREFERRED_VERSION_avahi ?= "0.6.21"
-PREFERRED_VERSION_avahi-python ?= "0.6.21"
-PREFERRED_VERSION_avahi-ui ?= "0.6.21"
-PREFERRED_VERSION_avetanabt ?= "20060413"
-PREFERRED_VERSION_bacula-client ?= "1.38.11"
-PREFERRED_VERSION_balsa ?= "2.0.17"
-PREFERRED_VERSION_base-files ?= "3.0.14"
-PREFERRED_VERSION_base-passwd ?= "3.5.9"
-PREFERRED_VERSION_bash ?= "3.2"
-PREFERRED_VERSION_bash-completion ?= "20040711"
-PREFERRED_VERSION_bazaar ?= "1.2"
-PREFERRED_VERSION_bb ?= "1.2"
-PREFERRED_VERSION_bc ?= "1.06"
-PREFERRED_VERSION_bdftopcf ?= "1.0.1"
-PREFERRED_VERSION_beecrypt ?= "3.1.0"
-PREFERRED_VERSION_beecrypt-native ?= "3.1.0"
-PREFERRED_VERSION_beep ?= "1.2.2"
-PREFERRED_VERSION_beepmp ?= "0.9.7"
-PREFERRED_VERSION_beforelight ?= "1.0.2"
-PREFERRED_VERSION_benchfft ?= "3.1"
-PREFERRED_VERSION_bigreqsproto ?= "1.0.2"
-PREFERRED_VERSION_bigreqsproto-native ?= "1.0.2"
-PREFERRED_VERSION_billiardz ?= "0.1.4"
-PREFERRED_VERSION_bind ?= "9.3.4-P1"
-PREFERRED_VERSION_bing ?= "1.1.3"
-PREFERRED_VERSION_binutils ?= "2.18"
-PREFERRED_VERSION_binutils-cross ?= "2.18"
-PREFERRED_VERSION_binutils-cross-sdk ?= "2.18"
-PREFERRED_VERSION_bison ?= "2.0"
-PREFERRED_VERSION_bison-native ?= "2.0"
-PREFERRED_VERSION_bitbake ?= "1.8.6"
-PREFERRED_VERSION_bitchx ?= "1.1"
-PREFERRED_VERSION_bluesnarfer ?= "0.1"
-PREFERRED_VERSION_bluez-cups-backend ?= "3.23"
-PREFERRED_VERSION_bluez-dtl1-workaround ?= "1.0"
-PREFERRED_VERSION_bluez-gnome ?= "0.14"
-PREFERRED_VERSION_bluez-gstreamer-plugin ?= "3.23"
-PREFERRED_VERSION_bluez-hcidump ?= "1.38"
-PREFERRED_VERSION_bluez-libs ?= "3.23"
-PREFERRED_VERSION_bluez-utils ?= "3.23"
-PREFERRED_VERSION_bluez-utils-alsa ?= "3.23"
-PREFERRED_VERSION_bmon ?= "2.1.0"
-PREFERRED_VERSION_boa ?= "0.94.13"
-PREFERRED_VERSION_bochs ?= "2.1"
-PREFERRED_VERSION_bogofilter ?= "0.96.0"
-PREFERRED_VERSION_boost ?= "1.33.1"
-PREFERRED_VERSION_boost-asio ?= "0.3.7"
-PREFERRED_VERSION_boost-jam-native ?= "3.1.11"
-PREFERRED_VERSION_bootchart ?= "0.9"
-PREFERRED_VERSION_bootmenu ?= "0.7"
-PREFERRED_VERSION_bootsplash ?= "3.0.7"
-PREFERRED_VERSION_bootsplash-native ?= "3.0.7"
-PREFERRED_VERSION_brickout ?= "2002.06.09"
-PREFERRED_VERSION_brutefir ?= "1.0i"
-PREFERRED_VERSION_bt950-cs ?= "0.1"
-PREFERRED_VERSION_btscanner ?= "2.0"
-PREFERRED_VERSION_btsco ?= "0.42"
-PREFERRED_VERSION_btsco-module ?= "0.42"
-PREFERRED_VERSION_btxml ?= "1.0"
-PREFERRED_VERSION_busybox ?= "1.2.1"
-PREFERRED_VERSION_busybox-static ?= "1.2.1"
-PREFERRED_VERSION_bvi ?= "1.3.1"
-PREFERRED_VERSION_bwmon ?= "1.3"
-PREFERRED_VERSION_bzflag ?= "1.10.6.20040515"
-PREFERRED_VERSION_bzflag-server ?= "1.10.6.20040515"
-PREFERRED_VERSION_bzip2 ?= "1.0.2"
-PREFERRED_VERSION_c-ares ?= "1.3.0"
-PREFERRED_VERSION_cacao-cldc ?= "0.98"
-PREFERRED_VERSION_cacaoh-cldc-native ?= "0.98"
-PREFERRED_VERSION_cairo ?= "1.4.10"
-PREFERRED_VERSION_cairo-directfb ?= "1.4.8"
-PREFERRED_VERSION_cairomm ?= "1.2.4"
-PREFERRED_VERSION_calendar ?= "1.0"
-PREFERRED_VERSION_came ?= "1.7"
-PREFERRED_VERSION_camera-assistant ?= "0.2.0"
-PREFERRED_VERSION_camsource ?= "0.7.0"
-PREFERRED_VERSION_cbrpager ?= "0.9.14"
-PREFERRED_VERSION_ccache ?= "2.4"
-PREFERRED_VERSION_cccc ?= "3.pre84"
-PREFERRED_VERSION_ccdv ?= "1.0"
-PREFERRED_VERSION_ccdv-native ?= "1.0"
-PREFERRED_VERSION_ccxstream ?= "1.0.15"
-PREFERRED_VERSION_cdparanoia ?= "9.8alpha"
-PREFERRED_VERSION_cdrtools-native ?= "2.01"
-PREFERRED_VERSION_cdstatus ?= "0.96.05"
-PREFERRED_VERSION_cdtool ?= "2.1.8"
-PREFERRED_VERSION_cdump-native ?= "1.0"
-PREFERRED_VERSION_centericq ?= "4.11.0"
-PREFERRED_VERSION_cetools ?= "0.3"
-PREFERRED_VERSION_cetools-native ?= "0.3"
-PREFERRED_VERSION_cflow ?= "2.0"
-PREFERRED_VERSION_cfu1-modules ?= "2.6"
-PREFERRED_VERSION_check ?= "0.9.2"
-PREFERRED_VERSION_checkers ?= "1.0.5ern"
-PREFERRED_VERSION_cherokee ?= "0.5.5"
-PREFERRED_VERSION_cherokee-nossl ?= "0.5.3"
-PREFERRED_VERSION_chillispot ?= "1.0RC3"
-PREFERRED_VERSION_chkhinge ?= "20040706"
-PREFERRED_VERSION_chmlib ?= "0.38"
-PREFERRED_VERSION_chrpath ?= "0.13"
-PREFERRED_VERSION_chrpath-native ?= "0.13"
-PREFERRED_VERSION_ckermit ?= "211"
-PREFERRED_VERSION_clamav ?= "0.91.1"
-PREFERRED_VERSION_clamsmtp ?= "1.8"
-PREFERRED_VERSION_classpath ?= "0.20"
-PREFERRED_VERSION_classpath-gtk ?= "0.93"
-PREFERRED_VERSION_classpath-minimal ?= "0.95"
-PREFERRED_VERSION_classpath-minimal-native ?= "0.95"
-PREFERRED_VERSION_clearsilver ?= "0.10.3"
-PREFERRED_VERSION_clish ?= "0.7.1"
-PREFERRED_VERSION_cmake-native ?= "2.4.7"
-PREFERRED_VERSION_cms92init ?= "0.1"
-PREFERRED_VERSION_compositeproto ?= "0.4"
-PREFERRED_VERSION_comprec ?= "0.02"
-PREFERRED_VERSION_confuse ?= "2.5"
-PREFERRED_VERSION_confuse-native ?= "2.5"
-PREFERRED_VERSION_connect ?= "0.1"
-PREFERRED_VERSION_conserver ?= "8.1.14"
-PREFERRED_VERSION_console-tools ?= "0.3.2"
-PREFERRED_VERSION_contacts ?= "0.7"
-PREFERRED_VERSION_coreutils ?= "5.3.0"
-PREFERRED_VERSION_coreutils-native ?= "5.3.0"
-PREFERRED_VERSION_corkscrew ?= "2.0"
-PREFERRED_VERSION_corsair ?= "0.2.6"
-PREFERRED_VERSION_cpio ?= "2.5"
-PREFERRED_VERSION_cppunit ?= "1.10.2"
-PREFERRED_VERSION_cpuburn ?= "1.4"
-PREFERRED_VERSION_cpufreqd ?= "1.1.2"
-PREFERRED_VERSION_cpusage ?= "0.2"
-PREFERRED_VERSION_cpuspeed ?= "1.1"
-PREFERRED_VERSION_cramfs ?= "1.1"
-PREFERRED_VERSION_cramfs-native ?= "1.1"
-PREFERRED_VERSION_crimsonfields ?= "0.4.8"
-PREFERRED_VERSION_crimsonfields-native ?= "0.4.8"
-PREFERRED_VERSION_cron ?= "3.0pl1"
-PREFERRED_VERSION_cross-linkage ?= "1.0"
-PREFERRED_VERSION_crossword ?= "0.0.3"
-PREFERRED_VERSION_cscope ?= "15.5"
-PREFERRED_VERSION_ctags-native ?= "5.5.4"
-PREFERRED_VERSION_ctorrent ?= "1.3.4"
-PREFERRED_VERSION_ctrlproxy ?= "2.6.2"
-PREFERRED_VERSION_cumulus ?= "1.2.1"
-PREFERRED_VERSION_cups ?= "1.2.12"
-PREFERRED_VERSION_curl ?= "7.16.4"
-PREFERRED_VERSION_curl-native ?= "7.16.4"
-PREFERRED_VERSION_custominput ?= "1.1.0"
-PREFERRED_VERSION_cvs ?= "1.12.9"
-PREFERRED_VERSION_cxcrypt ?= "1.0"
-PREFERRED_VERSION_cyrus-imapd ?= "2.2.12"
-PREFERRED_VERSION_cyrus-sasl ?= "2.1.19"
-PREFERRED_VERSION_damageext ?= "1.0"
-PREFERRED_VERSION_damageproto ?= "1.1.0"
-PREFERRED_VERSION_dash ?= "0.5.2"
-PREFERRED_VERSION_dasher-gpe ?= "0.0cvs20040828"
-PREFERRED_VERSION_dates ?= "0.4.4"
-PREFERRED_VERSION_davfs2 ?= "0.2.8"
-PREFERRED_VERSION_db ?= "4.3.29"
-PREFERRED_VERSION_db-native ?= "4.3.29"
-PREFERRED_VERSION_db3 ?= "3.2.9"
-PREFERRED_VERSION_db3-native ?= "3.2.9"
-PREFERRED_VERSION_dbench ?= "3.04"
-PREFERRED_VERSION_dbh ?= "1.0-18"
-PREFERRED_VERSION_dbus ?= "1.0.2"
-PREFERRED_VERSION_dbus-glib ?= "0.74"
-PREFERRED_VERSION_dbus-glib-native ?= "0.74"
-PREFERRED_VERSION_dbus-native ?= "1.0.1"
-PREFERRED_VERSION_dbus-python ?= "0.71"
-PREFERRED_VERSION_dcetest ?= "1.2"
-PREFERRED_VERSION_dcopidl-native ?= "3.5.4"
-PREFERRED_VERSION_dcopidl2cpp-native ?= "3.5.4"
-PREFERRED_VERSION_dcron ?= "2.3.3"
-PREFERRED_VERSION_ddclient ?= "3.6.3"
-PREFERRED_VERSION_debianutils ?= "2.19"
-PREFERRED_VERSION_dejagnu ?= "1.4.4"
-PREFERRED_VERSION_dejagnu-native ?= "1.4.4"
-PREFERRED_VERSION_detect-stylus ?= "0.13"
-PREFERRED_VERSION_device-mapper ?= "1.01.05"
-PREFERRED_VERSION_devimage ?= "0.1"
-PREFERRED_VERSION_devimage-image ?= "1.0"
-PREFERRED_VERSION_devio ?= "1.2"
-PREFERRED_VERSION_devio-native ?= "1.2"
-PREFERRED_VERSION_devlabel ?= "0.48.01"
-PREFERRED_VERSION_devmem2 ?= "1.0"
-PREFERRED_VERSION_devshell ?= "1.0"
-PREFERRED_VERSION_dgen-sdl ?= "1.23"
-PREFERRED_VERSION_dhcdbd ?= "2.0"
-PREFERRED_VERSION_dhclient ?= "2.0pl5"
-PREFERRED_VERSION_dhcp ?= "3.0.2"
-PREFERRED_VERSION_dhcp-forwarder ?= "0.7"
-PREFERRED_VERSION_dhcpcd ?= "1.3.22-pl4"
-PREFERRED_VERSION_didiwiki ?= "0.5"
-PREFERRED_VERSION_diet-x11 ?= "1.1.3"
-PREFERRED_VERSION_diethotplug ?= "0.4"
-PREFERRED_VERSION_diffstat ?= "1.39"
-PREFERRED_VERSION_diffutils ?= "2.8.1"
-PREFERRED_VERSION_dillo ?= "0.8.6"
-PREFERRED_VERSION_dillo2 ?= "0.6.6"
-PREFERRED_VERSION_dircproxy ?= "1.1.0"
-PREFERRED_VERSION_directfb ?= "1.1.0"
-PREFERRED_VERSION_directfb-examples ?= "1.0.0"
-PREFERRED_VERSION_display-brightness ?= "1.0.0"
-PREFERRED_VERSION_distcc ?= "2.18.3"
-PREFERRED_VERSION_djvulibre ?= "3.5.19"
-PREFERRED_VERSION_dmxproto ?= "2.2.2"
-PREFERRED_VERSION_dnsmasq ?= "2.38"
-PREFERRED_VERSION_docbook-utils ?= "0.6.13"
-PREFERRED_VERSION_docbook-utils-native ?= "0.6.13"
-PREFERRED_VERSION_dosbox ?= "0.70"
-PREFERRED_VERSION_dosfstools ?= "2.11"
-PREFERRED_VERSION_dosfstools-native ?= "2.10"
-PREFERRED_VERSION_dpkg ?= "1.13.25"
-PREFERRED_VERSION_dpkg-native ?= "1.13.25"
-PREFERRED_VERSION_driftnet ?= "0.1.6"
-PREFERRED_VERSION_driftnet-nogui ?= "0.1.6"
-PREFERRED_VERSION_dropbear ?= "0.49"
-PREFERRED_VERSION_dsniff ?= "2.3"
-PREFERRED_VERSION_duma ?= "2.5.7"
-PREFERRED_VERSION_dvb-image ?= "1.0"
-PREFERRED_VERSION_dvbtraffic ?= "0.0cvs20060814"
-PREFERRED_VERSION_dviviewer ?= "1.0.2"
-PREFERRED_VERSION_e-uae ?= "0.8.28"
-PREFERRED_VERSION_e-wm ?= "0.16.999.041"
-PREFERRED_VERSION_e2fsprogs ?= "1.38"
-PREFERRED_VERSION_e2fsprogs-libs ?= "1.39"
-PREFERRED_VERSION_e2fsprogs-libs-native ?= "1.35"
-PREFERRED_VERSION_e2fsprogs-native ?= "1.38"
-PREFERRED_VERSION_e2tools ?= "0.0.16"
-PREFERRED_VERSION_e2tools-native ?= "0.0.16"
-PREFERRED_VERSION_eb ?= "4.3"
-PREFERRED_VERSION_ebtables ?= "2.0.6"
-PREFERRED_VERSION_eciadsl ?= "0.11"
-PREFERRED_VERSION_ecj-native ?= "3.3"
-PREFERRED_VERSION_editres ?= "1.0.2"
-PREFERRED_VERSION_eds-feed ?= "0.3.2"
-PREFERRED_VERSION_eel ?= "2.12.2"
-PREFERRED_VERSION_ekg ?= "1.6"
-PREFERRED_VERSION_elfkickers ?= "2.0a"
-PREFERRED_VERSION_elfkickers-native ?= "2.0a"
-PREFERRED_VERSION_elftoaout ?= "2.3"
-PREFERRED_VERSION_elftoaout-native ?= "2.3"
-PREFERRED_VERSION_elfutils ?= "0.127"
-PREFERRED_VERSION_elvis ?= "2.2.0"
-PREFERRED_VERSION_elvis-tiny ?= "2.2.0"
-PREFERRED_VERSION_emacs ?= "20060801"
-PREFERRED_VERSION_emacs-x11 ?= "20060801"
-PREFERRED_VERSION_emelfm2 ?= "0.0.8"
-PREFERRED_VERSION_empathy ?= "0.5"
-PREFERRED_VERSION_emul ?= "1.0.5"
-PREFERRED_VERSION_enca ?= "1.9"
-PREFERRED_VERSION_enchant ?= "1.3.0"
-PREFERRED_VERSION_encodings ?= "1.0.2"
-PREFERRED_VERSION_enscript ?= "1.6.4"
-PREFERRED_VERSION_entrance ?= "0.9.0.010"
-PREFERRED_VERSION_epiphany ?= "2.19.6"
-PREFERRED_VERSION_erlang ?= "R11B.1"
-PREFERRED_VERSION_erlang-native ?= "R11B.1"
-PREFERRED_VERSION_esmtp ?= "0.5.1"
-PREFERRED_VERSION_esound ?= "0.2.36"
-PREFERRED_VERSION_espgs ?= "8.15.3"
-PREFERRED_VERSION_etherpuppet ?= "0.2"
-PREFERRED_VERSION_ethload ?= "1.2"
-PREFERRED_VERSION_ettercap ?= "0.6.b"
-PREFERRED_VERSION_eventlog ?= "0.2.5"
-PREFERRED_VERSION_evieext ?= "1.0.2"
-PREFERRED_VERSION_evince ?= "2.20.0"
-PREFERRED_VERSION_exiv2 ?= "0.15"
-PREFERRED_VERSION_exmap-console ?= "0.4.1"
-PREFERRED_VERSION_exml ?= "cvs"
-PREFERRED_VERSION_exo ?= "0.3.2"
-PREFERRED_VERSION_expat ?= "2.0.0"
-PREFERRED_VERSION_expat-native ?= "1.95.7"
-PREFERRED_VERSION_expect ?= "5.44.1"
-PREFERRED_VERSION_ez-ipupdate ?= "3.0.10"
-PREFERRED_VERSION_ezx-boot-usb-native ?= "0.1.0"
-PREFERRED_VERSION_ezx-gpiotool ?= "1877"
-PREFERRED_VERSION_faac ?= "1.24"
-PREFERRED_VERSION_faad2 ?= "2.0"
-PREFERRED_VERSION_fakechroot ?= "2.5"
-PREFERRED_VERSION_fakechroot-native ?= "2.5"
-PREFERRED_VERSION_fakeconnect ?= "1.2.1"
-PREFERRED_VERSION_fakeroot ?= "1.7.1"
-PREFERRED_VERSION_fakeroot-native ?= "1.7.1"
-PREFERRED_VERSION_fam ?= "2.7.0"
-PREFERRED_VERSION_farsight ?= "0.1.5"
-PREFERRED_VERSION_fastcgi ?= "2.4.0"
-PREFERRED_VERSION_fastjar-native ?= "0.95"
-PREFERRED_VERSION_fbgetty ?= "0.1.698"
-PREFERRED_VERSION_fbgrab ?= "1.0"
-PREFERRED_VERSION_fbpanel ?= "4.3"
-PREFERRED_VERSION_fbreader ?= "0.8.2a"
-PREFERRED_VERSION_fbset ?= "2.1"
-PREFERRED_VERSION_fbui-utils ?= "0.9.14c"
-PREFERRED_VERSION_fbvncserver ?= "0.9.4"
-PREFERRED_VERSION_fbvncserver-kmodule ?= "0.9.4"
-PREFERRED_VERSION_fceu ?= "0.98.13-pre"
-PREFERRED_VERSION_fconfig ?= "20060419"
-PREFERRED_VERSION_fcron ?= "3.0.2"
-PREFERRED_VERSION_feh ?= "1.2.7"
-PREFERRED_VERSION_fetchmail ?= "6.2.5"
-PREFERRED_VERSION_ffmpeg ?= "0.4.9-pre1"
-PREFERRED_VERSION_fftw ?= "3.1.2"
-PREFERRED_VERSION_fftwf ?= "3.1.2"
-PREFERRED_VERSION_fftwl ?= "3.1.2"
-PREFERRED_VERSION_fget ?= "1.3.3"
-PREFERRED_VERSION_figment ?= "0.3.5"
-PREFERRED_VERSION_file ?= "4.21"
-PREFERRED_VERSION_file-native ?= "4.21"
-PREFERRED_VERSION_findutils ?= "4.2.29"
-PREFERRED_VERSION_findutils-native ?= "4.2.29"
-PREFERRED_VERSION_firefox ?= "1.0.7"
-PREFERRED_VERSION_fis ?= "1.0"
-PREFERRED_VERSION_fish ?= "1.1.0"
-PREFERRED_VERSION_fixesproto ?= "4.0"
-PREFERRED_VERSION_flac ?= "1.1.2"
-PREFERRED_VERSION_flex ?= "2.5.31"
-PREFERRED_VERSION_flex-native ?= "2.5.31"
-PREFERRED_VERSION_flexis-zaurus ?= "1.0.0"
-PREFERRED_VERSION_flnx ?= "0.18"
-PREFERRED_VERSION_fltk ?= "1.1.7"
-PREFERRED_VERSION_flumotion ?= "0.4.1"
-PREFERRED_VERSION_fontcacheproto ?= "0.1.2"
-PREFERRED_VERSION_fontcacheproto-native ?= "0.1.2"
-PREFERRED_VERSION_fontconfig ?= "2.4.1"
-PREFERRED_VERSION_fontconfig-native ?= "2.3.91"
-PREFERRED_VERSION_fontsproto ?= "2.0.2"
-PREFERRED_VERSION_fontsproto-native ?= "2.0.2"
-PREFERRED_VERSION_fonttosfnt ?= "1.0.3"
-PREFERRED_VERSION_foonas-init ?= "0.10"
-PREFERRED_VERSION_foonas-packages ?= "1.0"
-PREFERRED_VERSION_fortune-mod ?= "1.99.1"
-PREFERRED_VERSION_fpdf ?= "1.53"
-PREFERRED_VERSION_free42-vga ?= "1.4.36"
-PREFERRED_VERSION_freeciv ?= "2.0.8"
-PREFERRED_VERSION_freedoom ?= "0.3"
-PREFERRED_VERSION_freedroid ?= "1.0.2"
-PREFERRED_VERSION_freenote ?= "1.12.0"
-PREFERRED_VERSION_freeze ?= "1.0"
-PREFERRED_VERSION_frodo ?= "4.2"
-PREFERRED_VERSION_froot ?= "0.7.1"
-PREFERRED_VERSION_frotz ?= "2.43"
-PREFERRED_VERSION_frozen-bubble ?= "1.0.0"
-PREFERRED_VERSION_fsi-client ?= "20040803"
-PREFERRED_VERSION_ftdi-eeprom ?= "0.2"
-PREFERRED_VERSION_ftdi-eeprom-native ?= "0.2"
-PREFERRED_VERSION_ftpd-topfield ?= "0.7.4"
-PREFERRED_VERSION_fuse ?= "2.6.5"
-PREFERRED_VERSION_fuse-module ?= "2.6.5"
-PREFERRED_VERSION_fush ?= "0.9.0"
-PREFERRED_VERSION_fxload ?= "0.0.20020411"
-PREFERRED_VERSION_g15daemon ?= "1.2.6a"
-PREFERRED_VERSION_gail ?= "1.20.0"
-PREFERRED_VERSION_gaim ?= "1.5.0"
-PREFERRED_VERSION_gal-2.0 ?= "1.99.11"
-PREFERRED_VERSION_gal-2.1 ?= "2.1.10"
-PREFERRED_VERSION_galago-daemon ?= "0.3.4"
-PREFERRED_VERSION_galculator ?= "1.2.3"
-PREFERRED_VERSION_gallery ?= "1.5.5"
-PREFERRED_VERSION_gamin ?= "0.1.8"
-PREFERRED_VERSION_gammu ?= "1.17.0"
-PREFERRED_VERSION_gawk ?= "3.1.4"
-PREFERRED_VERSION_gawk-native ?= "3.1.4"
-PREFERRED_VERSION_gcalctool ?= "5.7.32"
-PREFERRED_VERSION_gccmakedep ?= "1.0.2"
-PREFERRED_VERSION_gconf ?= "2.6.1"
-PREFERRED_VERSION_gconf-native ?= "2.6.1"
-PREFERRED_VERSION_gd ?= "2.0.33"
-PREFERRED_VERSION_gdado ?= "2.2"
-PREFERRED_VERSION_gdal ?= "1.3.2"
-PREFERRED_VERSION_gdb ?= "6.6"
-PREFERRED_VERSION_gdb-cross ?= "6.6"
-PREFERRED_VERSION_gdb-cross-sdk ?= "6.6"
-PREFERRED_VERSION_gdbm ?= "1.8.3"
-PREFERRED_VERSION_gdbm-native ?= "1.8.3"
-PREFERRED_VERSION_gdk-pixbuf-csource-native ?= "2.10.14"
-PREFERRED_VERSION_gdm ?= "2.14.9"
-PREFERRED_VERSION_geda ?= "20050820"
-PREFERRED_VERSION_geda-gattrib ?= "20050820"
-PREFERRED_VERSION_geda-gschem ?= "20050820"
-PREFERRED_VERSION_geda-gsymcheck ?= "20050820"
-PREFERRED_VERSION_geda-symbols ?= "20050820"
-PREFERRED_VERSION_geda-utils ?= "20050820"
-PREFERRED_VERSION_gemdropx ?= "0.9"
-PREFERRED_VERSION_genboot-native ?= "1.0"
-PREFERRED_VERSION_genext2fs ?= "1.3"
-PREFERRED_VERSION_genext2fs-native ?= "1.3"
-PREFERRED_VERSION_genlist ?= "1.0"
-PREFERRED_VERSION_geode-accessbus5536 ?= "2.6.11"
-PREFERRED_VERSION_geode-aeslx ?= "2.6.11"
-PREFERRED_VERSION_geode-alsa5536 ?= "2.6.11"
-PREFERRED_VERSION_gettext ?= "0.14.1"
-PREFERRED_VERSION_gettext-native ?= "0.14.1"
-PREFERRED_VERSION_gftp ?= "2.0.18"
-PREFERRED_VERSION_ghettotooth ?= "1.0"
-PREFERRED_VERSION_giac ?= "0.5.0"
-PREFERRED_VERSION_giblib ?= "1.2.4"
-PREFERRED_VERSION_gif2png ?= "2.5.1"
-PREFERRED_VERSION_gift ?= "0.11.5"
-PREFERRED_VERSION_giftcurs ?= "0.6.2"
-PREFERRED_VERSION_gimp ?= "2.3.19"
-PREFERRED_VERSION_ginspector ?= "20050529"
-PREFERRED_VERSION_git ?= "1.5.2.3"
-PREFERRED_VERSION_git-native ?= "1.5.2.3"
-PREFERRED_VERSION_gizmod ?= "2.3"
-PREFERRED_VERSION_gkrellm ?= "2.2.10"
-PREFERRED_VERSION_glib-1.2 ?= "1.2.10"
-PREFERRED_VERSION_glib-1.2-native ?= "1.2.10"
-PREFERRED_VERSION_glib-2.0 ?= "2.14.1"
-PREFERRED_VERSION_glib-2.0-native ?= "2.12.4"
-PREFERRED_VERSION_glibc ?= "2.6.1"
-PREFERRED_VERSION_glibc-initial ?= "2.6.1"
-PREFERRED_VERSION_glibmm ?= "2.12.10"
-PREFERRED_VERSION_glider ?= "1.0.0"
-PREFERRED_VERSION_gloox ?= "0.8.9"
-PREFERRED_VERSION_glproto ?= "1.4.8"
-PREFERRED_VERSION_glrr ?= "20050529"
-PREFERRED_VERSION_glrr-widgets ?= "20050529"
-PREFERRED_VERSION_glurp ?= "0.11.3"
-PREFERRED_VERSION_gmailfs ?= "0.7.3"
-PREFERRED_VERSION_gmp ?= "4.2.1"
-PREFERRED_VERSION_gmp-native ?= "4.2.1"
-PREFERRED_VERSION_gmpc ?= "0.13.0"
-PREFERRED_VERSION_gnash ?= "0.8.0"
-PREFERRED_VERSION_gnocky ?= "0.0.3"
-PREFERRED_VERSION_gnokii ?= "0.6.14"
-PREFERRED_VERSION_gnome-common ?= "2.20.0"
-PREFERRED_VERSION_gnome-cups-manager ?= "0.31"
-PREFERRED_VERSION_gnome-desktop ?= "2.18.3"
-PREFERRED_VERSION_gnome-doc-utils ?= "0.12.0"
-PREFERRED_VERSION_gnome-games ?= "2.6.1"
-PREFERRED_VERSION_gnome-icon-theme ?= "1.3.3"
-PREFERRED_VERSION_gnome-keyring ?= "2.20.0"
-PREFERRED_VERSION_gnome-menus ?= "2.16.1"
-PREFERRED_VERSION_gnome-mime-data ?= "2.18.0"
-PREFERRED_VERSION_gnome-panel ?= "2.18.1"
-PREFERRED_VERSION_gnome-power ?= "0.0.5"
-PREFERRED_VERSION_gnome-power-manager ?= "2.18.3"
-PREFERRED_VERSION_gnome-themes ?= "2.6.2"
-PREFERRED_VERSION_gnome-vfs ?= "2.20.0"
-PREFERRED_VERSION_gnome-vfs-extras ?= "0.99.13"
-PREFERRED_VERSION_gnome-vfs-obexftp ?= "0.4"
-PREFERRED_VERSION_gnomebaker ?= "0.6.0"
-PREFERRED_VERSION_gnomesword ?= "2.1.2"
-PREFERRED_VERSION_gnuchess ?= "5.05"
-PREFERRED_VERSION_gnumeric ?= "1.6.3"
-PREFERRED_VERSION_gnupg ?= "1.4.2.2"
-PREFERRED_VERSION_gnuplot ?= "4.2.0"
-PREFERRED_VERSION_gnuradio ?= "3.0.4"
-PREFERRED_VERSION_gnutls ?= "1.6.3"
-PREFERRED_VERSION_gob2 ?= "2.0.14"
-PREFERRED_VERSION_gobby ?= "0.4.1"
-PREFERRED_VERSION_goffice ?= "0.2.1"
-PREFERRED_VERSION_gparted ?= "0.3.3"
-PREFERRED_VERSION_gpdf ?= "2.10.0"
-PREFERRED_VERSION_gpe-aerial ?= "0.3.0"
-PREFERRED_VERSION_gpe-announce ?= "0.13"
-PREFERRED_VERSION_gpe-applauncher ?= "0.11"
-PREFERRED_VERSION_gpe-appmgr ?= "2.8"
-PREFERRED_VERSION_gpe-autostarter ?= "0.12"
-PREFERRED_VERSION_gpe-beam ?= "0.2.9"
-PREFERRED_VERSION_gpe-bluetooth ?= "0.55"
-PREFERRED_VERSION_gpe-bootsplash ?= "1.15"
-PREFERRED_VERSION_gpe-bootsplash-theme-e ?= "1.0"
-PREFERRED_VERSION_gpe-bootsplash-theme-gpephone ?= "1.0"
-PREFERRED_VERSION_gpe-buttonbox ?= "0.5"
-PREFERRED_VERSION_gpe-calculator ?= "0.2"
-PREFERRED_VERSION_gpe-calendar ?= "0.91"
-PREFERRED_VERSION_gpe-clock ?= "0.25"
-PREFERRED_VERSION_gpe-conf ?= "0.2.6"
-PREFERRED_VERSION_gpe-confd ?= "0.16"
-PREFERRED_VERSION_gpe-contacts ?= "0.47"
-PREFERRED_VERSION_gpe-contacts-hildon ?= "0.42"
-PREFERRED_VERSION_gpe-dm ?= "0.51"
-PREFERRED_VERSION_gpe-edit ?= "0.40"
-PREFERRED_VERSION_gpe-expenses ?= "0.0.6"
-PREFERRED_VERSION_gpe-filemanager ?= "0.30"
-PREFERRED_VERSION_gpe-fsi ?= "0.1"
-PREFERRED_VERSION_gpe-gallery ?= "0.97"
-PREFERRED_VERSION_gpe-go ?= "0.05"
-PREFERRED_VERSION_gpe-helpviewer ?= "1.0"
-PREFERRED_VERSION_gpe-icons ?= "0.25"
-PREFERRED_VERSION_gpe-irc ?= "0.08"
-PREFERRED_VERSION_gpe-keylock ?= "0.12"
-PREFERRED_VERSION_gpe-life ?= "0.2"
-PREFERRED_VERSION_gpe-lights ?= "0.13"
-PREFERRED_VERSION_gpe-login ?= "0.90"
-PREFERRED_VERSION_gpe-mini-browser ?= "0.21"
-PREFERRED_VERSION_gpe-mini-browser-hildon ?= "0.17"
-PREFERRED_VERSION_gpe-mininet ?= "0.7"
-PREFERRED_VERSION_gpe-mixer ?= "0.42"
-PREFERRED_VERSION_gpe-nmf ?= "0.22"
-PREFERRED_VERSION_gpe-othello ?= "0.2-1"
-PREFERRED_VERSION_gpe-ownerinfo ?= "0.28"
-PREFERRED_VERSION_gpe-package ?= "0.4"
-PREFERRED_VERSION_gpe-phonepanel ?= "0.9"
-PREFERRED_VERSION_gpe-plucker ?= "0.4"
-PREFERRED_VERSION_gpe-question ?= "0.04"
-PREFERRED_VERSION_gpe-scap ?= "1.3"
-PREFERRED_VERSION_gpe-session-scripts ?= "0.67"
-PREFERRED_VERSION_gpe-session-scripts-phone ?= "0.67"
-PREFERRED_VERSION_gpe-shield ?= "0.9"
-PREFERRED_VERSION_gpe-sketchbook ?= "0.2.9"
-PREFERRED_VERSION_gpe-snes ?= "0.2"
-PREFERRED_VERSION_gpe-soundbite ?= "1.0.6"
-PREFERRED_VERSION_gpe-soundserver ?= "0.4-1"
-PREFERRED_VERSION_gpe-su ?= "0.19"
-PREFERRED_VERSION_gpe-synctool ?= "0.2"
-PREFERRED_VERSION_gpe-taskmanager ?= "0.20"
-PREFERRED_VERSION_gpe-terminal ?= "1.1"
-PREFERRED_VERSION_gpe-tetris ?= "0.6-4"
-PREFERRED_VERSION_gpe-theme-clearlooks ?= "0.3"
-PREFERRED_VERSION_gpe-theme-e17 ?= "0.1"
-PREFERRED_VERSION_gpe-theme-foxbox ?= "0.1"
-PREFERRED_VERSION_gpe-theme-industrial ?= "0.2"
-PREFERRED_VERSION_gpe-today ?= "0.11"
-PREFERRED_VERSION_gpe-todo ?= "0.56"
-PREFERRED_VERSION_gpe-todo-hildon ?= "0.55"
-PREFERRED_VERSION_gpe-watch ?= "0.10"
-PREFERRED_VERSION_gpe-what ?= "0.43"
-PREFERRED_VERSION_gpe-windowlist ?= "0.1"
-PREFERRED_VERSION_gperf ?= "3.0.3"
-PREFERRED_VERSION_gperf-native ?= "3.0.3"
-PREFERRED_VERSION_gperiodic ?= "1.3.3"
-PREFERRED_VERSION_gpesyncd ?= "2.0"
-PREFERRED_VERSION_gpgme ?= "1.1.4"
-PREFERRED_VERSION_gphoto2 ?= "2.4.0"
-PREFERRED_VERSION_gpicview ?= "0.1.5"
-PREFERRED_VERSION_gpm ?= "1.20.1"
-PREFERRED_VERSION_gpp ?= "2.21"
-PREFERRED_VERSION_gpsbabel ?= "1.3.3"
-PREFERRED_VERSION_gpsd ?= "2.34"
-PREFERRED_VERSION_gpsdrive ?= "2.10pre2"
-PREFERRED_VERSION_gpstk ?= "1.2"
-PREFERRED_VERSION_gqview ?= "2.1.1"
-PREFERRED_VERSION_granule ?= "1.2.4"
-PREFERRED_VERSION_grass ?= "6.2.1"
-PREFERRED_VERSION_grep ?= "2.5.1"
-PREFERRED_VERSION_grep-native ?= "2.5.1"
-PREFERRED_VERSION_grip ?= "3.2.0"
-PREFERRED_VERSION_groff ?= "1.19.2"
-PREFERRED_VERSION_gs ?= "8.16"
-PREFERRED_VERSION_gsl ?= "1.4"
-PREFERRED_VERSION_gsmmux ?= "alpha-2"
-PREFERRED_VERSION_gsoap ?= "2.7.7"
-PREFERRED_VERSION_gsoap-native ?= "2.7.7"
-PREFERRED_VERSION_gsoko ?= "0.4.2-gpe6"
-PREFERRED_VERSION_gspcav1 ?= "20070110"
-PREFERRED_VERSION_gst-ffmpeg ?= "0.10.2"
-PREFERRED_VERSION_gst-meta-base ?= "0.10"
-PREFERRED_VERSION_gst-plugin-pulse ?= "0.9.4"
-PREFERRED_VERSION_gst-plugins-bad ?= "0.10.5"
-PREFERRED_VERSION_gst-plugins-base ?= "0.10.14"
-PREFERRED_VERSION_gst-plugins-farsight ?= "0.10.1"
-PREFERRED_VERSION_gst-plugins-good ?= "0.10.6"
-PREFERRED_VERSION_gst-plugins-ugly ?= "0.10.6"
-PREFERRED_VERSION_gstreamer ?= "0.10.14"
-PREFERRED_VERSION_gthumb ?= "2.6.9"
-PREFERRED_VERSION_gtk+ ?= "2.10.14"
-PREFERRED_VERSION_gtk-clearlooks-engine ?= "0.6.2"
-PREFERRED_VERSION_gtk-doc ?= "1.0"
-PREFERRED_VERSION_gtk-doc-native ?= "1.0"
-PREFERRED_VERSION_gtk-engines ?= "2.7.4"
-PREFERRED_VERSION_gtk-industrial-engine ?= "0.2.46.0"
-PREFERRED_VERSION_gtk-sato-engine ?= "0.1"
-PREFERRED_VERSION_gtk-sharp ?= "2.10.2"
-PREFERRED_VERSION_gtk-smooth-engine ?= "0.5.8"
-PREFERRED_VERSION_gtk-xfce-engine ?= "2.4.1"
-PREFERRED_VERSION_gtk2-ssh-askpass ?= "0.3"
-PREFERRED_VERSION_gtk2-theme-angelistic ?= "0.3"
-PREFERRED_VERSION_gtkhtml-2.0 ?= "2.6.3"
-PREFERRED_VERSION_gtkhtml-3.0 ?= "3.0.10"
-PREFERRED_VERSION_gtkhtml-3.1 ?= "3.1.16"
-PREFERRED_VERSION_gtkhtml-3.6 ?= "3.6.2"
-PREFERRED_VERSION_gtkhtml-3.8 ?= "3.8.2"
-PREFERRED_VERSION_gtkimageview ?= "1.3.0"
-PREFERRED_VERSION_gtkmathview ?= "0.7.6"
-PREFERRED_VERSION_gtkmm ?= "2.10.10"
-PREFERRED_VERSION_gtksourceview ?= "1.7.2"
-PREFERRED_VERSION_gtkterm2 ?= "0.2.3"
-PREFERRED_VERSION_gtracer ?= "0.0.10"
-PREFERRED_VERSION_guichan ?= "0.7.1"
-PREFERRED_VERSION_guile ?= "1.6.4"
-PREFERRED_VERSION_guile-native ?= "1.8.2"
-PREFERRED_VERSION_gutenprint ?= "5.1.3"
-PREFERRED_VERSION_gutenprint-native ?= "5.1.3"
-PREFERRED_VERSION_gvim ?= "7.0"
-PREFERRED_VERSION_gweled ?= "0.5"
-PREFERRED_VERSION_gxine ?= "0.4.1enhanced"
-PREFERRED_VERSION_gzip ?= "1.3.5"
-PREFERRED_VERSION_hal ?= "0.5.9"
-PREFERRED_VERSION_hal-info ?= "20070918+git"
-PREFERRED_VERSION_haserl ?= "0.8.0"
-PREFERRED_VERSION_havp ?= "0.86"
-PREFERRED_VERSION_hdparm ?= "6.9"
-PREFERRED_VERSION_helloworld ?= "1.0.0"
-PREFERRED_VERSION_hexatrolic ?= "1.0beta3"
-PREFERRED_VERSION_hfsplusutils ?= "1.0.4-4"
-PREFERRED_VERSION_hfsutils ?= "3.2.6"
-PREFERRED_VERSION_hibernate-script ?= "1.12"
-PREFERRED_VERSION_hicolor-icon-theme ?= "0.10"
-PREFERRED_VERSION_hiker ?= "0.9.1"
-PREFERRED_VERSION_hildon-base-lib ?= "0.11.1"
-PREFERRED_VERSION_hildon-control-panel ?= "0.9.1-1.2"
-PREFERRED_VERSION_hildon-fm ?= "0.9.1-2"
-PREFERRED_VERSION_hildon-home ?= "0.8.20-2"
-PREFERRED_VERSION_hildon-initscripts ?= "0.8.14-1"
-PREFERRED_VERSION_hildon-lgpl ?= "0.12.1"
-PREFERRED_VERSION_hildon-libs ?= "0.15.1"
-PREFERRED_VERSION_hildon-navigator ?= "0.9.6-2"
-PREFERRED_VERSION_hildon-status-bar ?= "0.8.11-1"
-PREFERRED_VERSION_hildon-thumbnail ?= "0.11"
-PREFERRED_VERSION_hostap-conf ?= "1.0"
-PREFERRED_VERSION_hostap-daemon ?= "0.4.4"
-PREFERRED_VERSION_hostap-utils ?= "0.4.7"
-PREFERRED_VERSION_hotplug-dbus ?= "0.9"
-PREFERRED_VERSION_hotplug-ng ?= "002"
-PREFERRED_VERSION_hotplug-qcop ?= "cvs"
-PREFERRED_VERSION_howl ?= "1.0.0"
-PREFERRED_VERSION_hsetroot ?= "1.0.2"
-PREFERRED_VERSION_htb-init ?= "0.8.5"
-PREFERRED_VERSION_httppc ?= "0.8.5"
-PREFERRED_VERSION_htun ?= "0.9.5"
-PREFERRED_VERSION_hvsc ?= "45"
-PREFERRED_VERSION_hwdata ?= "0.191"
-PREFERRED_VERSION_hydra ?= "4.5"
-PREFERRED_VERSION_iaimaster ?= "0.5"
-PREFERRED_VERSION_iana-etc ?= "2.20"
-PREFERRED_VERSION_ica-bin ?= "8.0"
-PREFERRED_VERSION_iceauth ?= "1.0.2"
-PREFERRED_VERSION_icebloxx ?= "1.0.0"
-PREFERRED_VERSION_icecc-create-env ?= "0.1"
-PREFERRED_VERSION_icewm ?= "1.2.30"
-PREFERRED_VERSION_icmpquery ?= "1.03"
-PREFERRED_VERSION_ico ?= "1.0.2"
-PREFERRED_VERSION_icu ?= "3.6"
-PREFERRED_VERSION_icu-native ?= "3.6"
-PREFERRED_VERSION_id3lib ?= "3.8.3"
-PREFERRED_VERSION_ifplugd ?= "0.25"
-PREFERRED_VERSION_ifupdown ?= "0.6.8"
-PREFERRED_VERSION_iksemel ?= "1.2"
-PREFERRED_VERSION_imagemagick ?= "6.3.5-10"
-PREFERRED_VERSION_imake ?= "1.0.2"
-PREFERRED_VERSION_imlib ?= "1.9.15"
-PREFERRED_VERSION_imlib2 ?= "1.4.0.002"
-PREFERRED_VERSION_imposter ?= "0.3"
-PREFERRED_VERSION_inetutils ?= "1.4.2"
-PREFERRED_VERSION_initscripts ?= "1.0"
-PREFERRED_VERSION_initscripts-openprotium ?= "1.0"
-PREFERRED_VERSION_initscripts-slugos ?= "1.0"
-PREFERRED_VERSION_inkscape ?= "0.43"
-PREFERRED_VERSION_inkwp ?= "0.1.1"
-PREFERRED_VERSION_inotify-tools ?= "2.1"
-PREFERRED_VERSION_inputproto ?= "1.4.2.1"
-PREFERRED_VERSION_install-native ?= "0.1"
-PREFERRED_VERSION_insttrain ?= "1.0.5"
-PREFERRED_VERSION_interbench ?= "0.30"
-PREFERRED_VERSION_intercom ?= "0.15"
-PREFERRED_VERSION_intltool ?= "0.35.2"
-PREFERRED_VERSION_intltool-native ?= "0.35.0"
-PREFERRED_VERSION_iozone3 ?= "263"
-PREFERRED_VERSION_ipaq-sleep ?= "0.9"
-PREFERRED_VERSION_ipatience ?= "0.1"
-PREFERRED_VERSION_iperf ?= "2.0.2"
-PREFERRED_VERSION_ipkg ?= "0.99.163"
-PREFERRED_VERSION_ipkg-collateral ?= "1.0"
-PREFERRED_VERSION_ipkg-native ?= "0.99.163"
-PREFERRED_VERSION_iproute2 ?= "2.6.22"
-PREFERRED_VERSION_ipsec-tools ?= "0.6.7"
-PREFERRED_VERSION_iptables ?= "1.3.8"
-PREFERRED_VERSION_iptstate ?= "2.2.1"
-PREFERRED_VERSION_iputils ?= "20020927"
-PREFERRED_VERSION_iqnotes ?= "2.0.99-2.1.0rc1"
-PREFERRED_VERSION_ircp ?= "0.3"
-PREFERRED_VERSION_irda-utils ?= "0.9.16"
-PREFERRED_VERSION_irdadump ?= "0.9.16"
-PREFERRED_VERSION_irk-belkin ?= "0.11"
-PREFERRED_VERSION_irk-targus ?= "0.11.0"
-PREFERRED_VERSION_irssi ?= "0.8.10"
-PREFERRED_VERSION_iso-codes ?= "1.4"
-PREFERRED_VERSION_ixp4xx-npe-native ?= "2.4"
-PREFERRED_VERSION_jack ?= "0.103.0"
-PREFERRED_VERSION_jamvm ?= "1.4.5"
-PREFERRED_VERSION_jards ?= "1.0"
-PREFERRED_VERSION_jhead ?= "2.6.0"
-PREFERRED_VERSION_jikes ?= "1.22"
-PREFERRED_VERSION_jikes-native ?= "1.21"
-PREFERRED_VERSION_joe ?= "3.1"
-PREFERRED_VERSION_js ?= "1.5"
-PREFERRED_VERSION_juce ?= "1.29"
-PREFERRED_VERSION_justreader ?= "2.0k"
-PREFERRED_VERSION_kaffe-gtk ?= "1.1.5"
-PREFERRED_VERSION_kaffeh-native ?= "1.1.5"
-PREFERRED_VERSION_kakasi ?= "2.3.4"
-PREFERRED_VERSION_kakasi-native ?= "2.3.4"
-PREFERRED_VERSION_kanatest ?= "0.3.6"
-PREFERRED_VERSION_kazehakase ?= "0.4.7"
-PREFERRED_VERSION_kbd ?= "1.12"
-PREFERRED_VERSION_kbproto ?= "1.0.3"
-PREFERRED_VERSION_kdepimpi ?= "2.2.7"
-PREFERRED_VERSION_kernbench ?= "0.41"
-PREFERRED_VERSION_kernel-module-wlags49-h1-cs ?= "718"
-PREFERRED_VERSION_kernel-module-wlags49-h2-cs ?= "718"
-PREFERRED_VERSION_kexec-tools ?= "1.101"
-PREFERRED_VERSION_keylaunch ?= "2.0.10"
-PREFERRED_VERSION_keymap-locales ?= "1.0"
-PREFERRED_VERSION_keymaps ?= "1.0"
-PREFERRED_VERSION_keyring ?= "0.6.8"
-PREFERRED_VERSION_kf ?= "0.5.4.1"
-PREFERRED_VERSION_kismet ?= "2007-10-R1"
-PREFERRED_VERSION_klibc ?= "1.1.1"
-PREFERRED_VERSION_klimt ?= "0.6.1"
-PREFERRED_VERSION_knights ?= "1.14"
-PREFERRED_VERSION_konqueror-embedded ?= "20070212"
-PREFERRED_VERSION_kpengine ?= "0.1"
-PREFERRED_VERSION_kphonepi ?= "1.0.0"
-PREFERRED_VERSION_kstars-embedded ?= "0.8.5"
-PREFERRED_VERSION_ksymoops ?= "2.4.9"
-PREFERRED_VERSION_ktimetrackerpi ?= "0.9.7"
-PREFERRED_VERSION_kxml2 ?= "2.3.0"
-PREFERRED_VERSION_labyrinth ?= "0.7"
-PREFERRED_VERSION_lame ?= "3.96.1"
-PREFERRED_VERSION_lbreakout2 ?= "2.6beta"
-PREFERRED_VERSION_lcdproc ?= "0.5.1"
-PREFERRED_VERSION_lcms ?= "1.15"
-PREFERRED_VERSION_leafpad ?= "0.8.9"
-PREFERRED_VERSION_led ?= "0.0cvs20060814"
-PREFERRED_VERSION_lemon ?= "3.3.5"
-PREFERRED_VERSION_lemon-native ?= "3.3.5"
-PREFERRED_VERSION_less ?= "406"
-PREFERRED_VERSION_lessertunjo ?= "0.0.10"
-PREFERRED_VERSION_lftp ?= "3.5.1"
-PREFERRED_VERSION_liba52 ?= "0.7.4"
-PREFERRED_VERSION_libaal ?= "1.0.4"
-PREFERRED_VERSION_libabenabler ?= "0.1"
-PREFERRED_VERSION_libabenabler2 ?= "1.0"
-PREFERRED_VERSION_libaio ?= "0.3.106"
-PREFERRED_VERSION_libaio-oracle ?= "0.3.0"
-PREFERRED_VERSION_libalgorithm-diff-perl ?= "1.1902"
-PREFERRED_VERSION_libalgorithm-diff-perl-native ?= "1.1902"
-PREFERRED_VERSION_libao ?= "0.8.6"
-PREFERRED_VERSION_libao-alsa ?= "0.8.6"
-PREFERRED_VERSION_libao-plugin-alsa ?= "0.8.6"
-PREFERRED_VERSION_libapplewm ?= "1.0.0"
-PREFERRED_VERSION_libarchive-tar-perl ?= "1.30"
-PREFERRED_VERSION_libarchive-tar-perl-native ?= "1.30"
-PREFERRED_VERSION_libarena ?= "0.2"
-PREFERRED_VERSION_libart-lgpl ?= "2.3.19"
-PREFERRED_VERSION_libassa ?= "3.4.2"
-PREFERRED_VERSION_libassuan ?= "0.6.9"
-PREFERRED_VERSION_libatomics-ops ?= "1.2"
-PREFERRED_VERSION_libbedic ?= "1.0"
-PREFERRED_VERSION_libbonobo ?= "2.14.0"
-PREFERRED_VERSION_libbonoboui ?= "2.18.0"
-PREFERRED_VERSION_libcache-cache-perl ?= "1.05"
-PREFERRED_VERSION_libcache-cache-perl-native ?= "1.05"
-PREFERRED_VERSION_libcalenabler ?= "1.0"
-PREFERRED_VERSION_libcap ?= "1.10"
-PREFERRED_VERSION_libccaudio2 ?= "0.9.0"
-PREFERRED_VERSION_libcdaudio ?= "0.99.12p2"
-PREFERRED_VERSION_libcgicc ?= "3.2.3"
-PREFERRED_VERSION_libchenabler ?= "0.1"
-PREFERRED_VERSION_libclass-container-perl ?= "0.12"
-PREFERRED_VERSION_libclass-container-perl-native ?= "0.12"
-PREFERRED_VERSION_libclass-data-inheritable-perl ?= "0.06"
-PREFERRED_VERSION_libclass-data-inheritable-perl-native ?= "0.06"
-PREFERRED_VERSION_libcompress-zlib-perl ?= "1.42"
-PREFERRED_VERSION_libcompress-zlib-perl-native ?= "1.42"
-PREFERRED_VERSION_libcontactsdb ?= "0.5"
-PREFERRED_VERSION_libcroco ?= "0.6.1"
-PREFERRED_VERSION_libcwd ?= "0.99.47"
-PREFERRED_VERSION_libdaemon ?= "0.12"
-PREFERRED_VERSION_libdata-optlist-perl ?= "0.101"
-PREFERRED_VERSION_libdata-optlist-perl-native ?= "0.101"
-PREFERRED_VERSION_libdbi ?= "0.7.2"
-PREFERRED_VERSION_libdbi-drivers ?= "0.7.1"
-PREFERRED_VERSION_libddmpeg ?= "1.5"
-PREFERRED_VERSION_libdes ?= "4.01"
-PREFERRED_VERSION_libdevel-stacktrace-perl ?= "1.13"
-PREFERRED_VERSION_libdevel-stacktrace-perl-native ?= "1.13"
-PREFERRED_VERSION_libdictionary ?= "1.0"
-PREFERRED_VERSION_libdigest-sha1-perl ?= "2.11"
-PREFERRED_VERSION_libdigest-sha1-perl-native ?= "2.11"
-PREFERRED_VERSION_libdisplaymigration ?= "0.99"
-PREFERRED_VERSION_libdmx ?= "1.0.2"
-PREFERRED_VERSION_libdotdesktop ?= "0.11"
-PREFERRED_VERSION_libdrm ?= "2.3.0"
-PREFERRED_VERSION_libdvb ?= "0.5.5.1"
-PREFERRED_VERSION_libdvdnav ?= "0.1.10"
-PREFERRED_VERSION_libdvdread ?= "0.9.6"
-PREFERRED_VERSION_libedit ?= "20050118"
-PREFERRED_VERSION_libeina ?= "0.96.7"
-PREFERRED_VERSION_libelf ?= "0.8.6"
-PREFERRED_VERSION_liberror-perl ?= "0.17004"
-PREFERRED_VERSION_liberror-perl-native ?= "0.17004"
-PREFERRED_VERSION_libesmtp ?= "1.0.4"
-PREFERRED_VERSION_libetpan ?= "0.52"
-PREFERRED_VERSION_libevent ?= "1.1a"
-PREFERRED_VERSION_libeventdb ?= "0.90"
-PREFERRED_VERSION_libevnet ?= "0.3.1"
-PREFERRED_VERSION_libexception-class-perl ?= "1.23"
-PREFERRED_VERSION_libexception-class-perl-native ?= "1.23"
-PREFERRED_VERSION_libexif ?= "0.6.13"
-PREFERRED_VERSION_libextutils-cbuilder-perl ?= "0.18"
-PREFERRED_VERSION_libextutils-cbuilder-perl-native ?= "0.18"
-PREFERRED_VERSION_libextutils-depends-perl ?= "0.205"
-PREFERRED_VERSION_libextutils-depends-perl-native ?= "0.205"
-PREFERRED_VERSION_libextutils-parsexs-perl ?= "2.16"
-PREFERRED_VERSION_libextutils-parsexs-perl-native ?= "2.16"
-PREFERRED_VERSION_libextutils-pkgconfig-perl ?= "1.07"
-PREFERRED_VERSION_libextutils-pkgconfig-perl-native ?= "1.07"
-PREFERRED_VERSION_libflv ?= "0.2"
-PREFERRED_VERSION_libfontenc ?= "1.0.4"
-PREFERRED_VERSION_libfontenc-native ?= "1.0.4"
-PREFERRED_VERSION_libfribidi ?= "0.10.4"
-PREFERRED_VERSION_libfs ?= "1.0.0"
-PREFERRED_VERSION_libftdi ?= "0.9"
-PREFERRED_VERSION_libftdi-native ?= "0.9"
-PREFERRED_VERSION_libg15 ?= "1.2.1"
-PREFERRED_VERSION_libg15render ?= "1.2"
-PREFERRED_VERSION_libgalago ?= "0.3.3"
-PREFERRED_VERSION_libgc ?= "6.7"
-PREFERRED_VERSION_libgcrypt ?= "1.2.3"
-PREFERRED_VERSION_libgeda ?= "20050820"
-PREFERRED_VERSION_libgemwidget ?= "0.1"
-PREFERRED_VERSION_libglade ?= "2.6.2"
-PREFERRED_VERSION_libglademm ?= "2.4.1"
-PREFERRED_VERSION_libgmime ?= "2.1.7"
-PREFERRED_VERSION_libgnome ?= "2.18.0"
-PREFERRED_VERSION_libgnomecanvas ?= "2.20.0"
-PREFERRED_VERSION_libgnomecups ?= "0.2.2"
-PREFERRED_VERSION_libgnomeprint ?= "2.8.2"
-PREFERRED_VERSION_libgnomeprintui ?= "2.8.2"
-PREFERRED_VERSION_libgnomeui ?= "2.18.1"
-PREFERRED_VERSION_libgpelaunch ?= "0.14"
-PREFERRED_VERSION_libgpephone ?= "0.4"
-PREFERRED_VERSION_libgpepimc ?= "0.9"
-PREFERRED_VERSION_libgpepimc-hildon ?= "0.5"
-PREFERRED_VERSION_libgpevtype ?= "0.50"
-PREFERRED_VERSION_libgpewidget ?= "0.115"
-PREFERRED_VERSION_libgpewidget-hildon ?= "0.102"
-PREFERRED_VERSION_libgpg-error ?= "1.4"
-PREFERRED_VERSION_libgphoto2 ?= "2.4.0"
-PREFERRED_VERSION_libgpsbt ?= "0.1"
-PREFERRED_VERSION_libgpsmgr ?= "0.1"
-PREFERRED_VERSION_libgsf ?= "1.14.2"
-PREFERRED_VERSION_libgsm ?= "1.0.10"
-PREFERRED_VERSION_libgtkinput ?= "0.3"
-PREFERRED_VERSION_libgtkstylus ?= "0.3"
-PREFERRED_VERSION_libhal-nm ?= "0.0.2"
-PREFERRED_VERSION_libhandoff ?= "0.1"
-PREFERRED_VERSION_libhangul ?= "0.0.4"
-PREFERRED_VERSION_libhildonfm ?= "1.9.41"
-PREFERRED_VERSION_libhildonhelp ?= "1.9.1"
-PREFERRED_VERSION_libhildonmime ?= "1.9.5"
-PREFERRED_VERSION_libhtml-mason-perl ?= "1.35"
-PREFERRED_VERSION_libiac ?= "0.1"
-PREFERRED_VERSION_libice ?= "1.0.4"
-PREFERRED_VERSION_libiconv ?= "1.11"
-PREFERRED_VERSION_libid3 ?= "1.1"
-PREFERRED_VERSION_libidl ?= "0.8.6"
-PREFERRED_VERSION_libidl-native ?= "0.8.6"
-PREFERRED_VERSION_libidn ?= "0.5.19"
-PREFERRED_VERSION_libim ?= "0.2"
-PREFERRED_VERSION_libintl-perl ?= "1.16"
-PREFERRED_VERSION_libintl-perl-native ?= "1.16"
-PREFERRED_VERSION_libio-zlib-perl ?= "1.04"
-PREFERRED_VERSION_libio-zlib-perl-native ?= "1.04"
-PREFERRED_VERSION_libjingle-tapioca ?= "0.3.10"
-PREFERRED_VERSION_liblbxutil ?= "1.0.1"
-PREFERRED_VERSION_liblipsevent ?= "0.1"
-PREFERRED_VERSION_liblocale-gettext-perl ?= "1.05"
-PREFERRED_VERSION_liblocale-gettext-perl-native ?= "1.05"
-PREFERRED_VERSION_liblockfile ?= "1.06"
-PREFERRED_VERSION_liblog-dispatch-perl ?= "2.13"
-PREFERRED_VERSION_liblog-dispatch-perl-native ?= "2.13"
-PREFERRED_VERSION_liblog-log4perl-perl ?= "1.06"
-PREFERRED_VERSION_liblog-log4perl-perl-native ?= "1.06"
-PREFERRED_VERSION_libmad ?= "0.15.1b"
-PREFERRED_VERSION_libmail-sendmail-perl ?= "0.79"
-PREFERRED_VERSION_libmailwrapper ?= "1.2.3"
-PREFERRED_VERSION_libmatchbox ?= "1.9"
-PREFERRED_VERSION_libmath-bigint-gmp-perl ?= "1.18"
-PREFERRED_VERSION_libmikmod ?= "3.2.0-beta2"
-PREFERRED_VERSION_libmimedir ?= "0.3.1"
-PREFERRED_VERSION_libmng ?= "1.0.8"
-PREFERRED_VERSION_libmodplug ?= "0.7"
-PREFERRED_VERSION_libmodule-build-perl ?= "0.2805"
-PREFERRED_VERSION_libmodule-build-perl-native ?= "0.2805"
-PREFERRED_VERSION_libmrss ?= "0.17.2"
-PREFERRED_VERSION_libmsgenabler ?= "1.0"
-PREFERRED_VERSION_libmusicbrainz ?= "2.1.4"
-PREFERRED_VERSION_libnet ?= "1.1.2.1"
-PREFERRED_VERSION_libnet-ip-perl ?= "1.25"
-PREFERRED_VERSION_libnet-ip-perl-native ?= "1.25"
-PREFERRED_VERSION_libnetfilter-queue ?= "0.0.13"
-PREFERRED_VERSION_libnetserver-generic-perl ?= "1.03"
-PREFERRED_VERSION_libnfnetlink ?= "0.0.30"
-PREFERRED_VERSION_libnids ?= "1.18"
-PREFERRED_VERSION_libnotify ?= "0.4.4"
-PREFERRED_VERSION_libnss-mdns ?= "0.9"
-PREFERRED_VERSION_libnxml ?= "0.16"
-PREFERRED_VERSION_libogg ?= "1.1"
-PREFERRED_VERSION_liboil ?= "0.3.11"
-PREFERRED_VERSION_libol ?= "0.3.18"
-PREFERRED_VERSION_liboldx ?= "1.0.1"
-PREFERRED_VERSION_liboop ?= "1.0"
-PREFERRED_VERSION_libopenraw ?= "0.0.2"
-PREFERRED_VERSION_libopensync ?= "0.22"
-PREFERRED_VERSION_libopensync-plugin-evo2-sync ?= "0.22"
-PREFERRED_VERSION_libopensync-plugin-file ?= "0.18"
-PREFERRED_VERSION_libopensync-plugin-file-sync ?= "0.22"
-PREFERRED_VERSION_libopensync-plugin-gpe ?= "0.18"
-PREFERRED_VERSION_libopensync-plugin-irmc ?= "0.18"
-PREFERRED_VERSION_libopensync-plugin-irmc-sync ?= "0.22"
-PREFERRED_VERSION_libosso ?= "1.20"
-PREFERRED_VERSION_libosso-gsf ?= "1.11.10.4"
-PREFERRED_VERSION_libosso-help ?= "2.1.2"
-PREFERRED_VERSION_libpam ?= "0.79"
-PREFERRED_VERSION_libparams-util-perl ?= "0.20"
-PREFERRED_VERSION_libparams-util-perl-native ?= "0.20"
-PREFERRED_VERSION_libparams-validate-perl ?= "0.86"
-PREFERRED_VERSION_libparams-validate-perl-native ?= "0.86"
-PREFERRED_VERSION_libpcap ?= "0.9.6"
-PREFERRED_VERSION_libpcl ?= "1.4"
-PREFERRED_VERSION_libpcre ?= "4.4"
-PREFERRED_VERSION_libpcre-native ?= "4.4"
-PREFERRED_VERSION_libperl6-junction-perl ?= "1.10"
-PREFERRED_VERSION_libpixman ?= "0.9.6"
-PREFERRED_VERSION_libpng ?= "1.2.20"
-PREFERRED_VERSION_libpng-native ?= "1.2.20"
-PREFERRED_VERSION_libpthread-stubs ?= "0.1"
-PREFERRED_VERSION_libqanava ?= "0.0.7"
-PREFERRED_VERSION_libqtaux2 ?= "1.2.3"
-PREFERRED_VERSION_librcf ?= "0.4"
-PREFERRED_VERSION_librecord ?= "0.1"
-PREFERRED_VERSION_librecord2 ?= "0.1"
-PREFERRED_VERSION_librewrite ?= "0.1"
-PREFERRED_VERSION_librsvg ?= "2.16.1"
-PREFERRED_VERSION_librsync ?= "0.9.7"
-PREFERRED_VERSION_librtaudio ?= "3.0.1"
-PREFERRED_VERSION_libsamplerate0 ?= "0.1.2"
-PREFERRED_VERSION_libschedule ?= "0.17"
-PREFERRED_VERSION_libsdl-directfb ?= "1.2.9"
-PREFERRED_VERSION_libsdl-gfx ?= "2.0.11"
-PREFERRED_VERSION_libsdl-image ?= "1.2.3"
-PREFERRED_VERSION_libsdl-mixer ?= "1.2.6"
-PREFERRED_VERSION_libsdl-native ?= "1.2.11"
-PREFERRED_VERSION_libsdl-net ?= "1.2.7"
-PREFERRED_VERSION_libsdl-ttf ?= "2.0.3"
-PREFERRED_VERSION_libsdl-ttf-native ?= "2.0.3"
-PREFERRED_VERSION_libsdl-x11 ?= "1.2.9"
-PREFERRED_VERSION_libsettings ?= "0.3"
-PREFERRED_VERSION_libsexy ?= "0.1.11"
-PREFERRED_VERSION_libsidplay ?= "1.36.59"
-PREFERRED_VERSION_libsigcx0 ?= "0.6.4"
-PREFERRED_VERSION_libsm ?= "1.0.3"
-PREFERRED_VERSION_libsndfile1 ?= "1.0.17"
-PREFERRED_VERSION_libsoundgen ?= "0.6"
-PREFERRED_VERSION_libsoup ?= "2.2.100"
-PREFERRED_VERSION_libspf2 ?= "1.0.4"
-PREFERRED_VERSION_libspiff ?= "0.7.2"
-PREFERRED_VERSION_libssh ?= "0.11"
-PREFERRED_VERSION_libsub-exporter-perl ?= "0.970"
-PREFERRED_VERSION_libsub-exporter-perl-native ?= "0.970"
-PREFERRED_VERSION_libsub-install-perl ?= "0.922"
-PREFERRED_VERSION_libsub-install-perl-native ?= "0.922"
-PREFERRED_VERSION_libsub-uplevel-perl ?= "0.13"
-PREFERRED_VERSION_libsub-uplevel-perl-native ?= "0.13"
-PREFERRED_VERSION_libsvg ?= "0.1.4"
-PREFERRED_VERSION_libtelepathy ?= "0.0.53"
-PREFERRED_VERSION_libtest-builder-tester-perl ?= "1.01"
-PREFERRED_VERSION_libtest-differences-perl ?= "0.47"
-PREFERRED_VERSION_libtest-exception-perl ?= "0.22"
-PREFERRED_VERSION_libtest-mockmodule-perl ?= "0.05"
-PREFERRED_VERSION_libtest-output-perl ?= "0.10"
-PREFERRED_VERSION_libtext-diff-perl ?= "0.35"
-PREFERRED_VERSION_libtext-diff-perl-native ?= "0.35"
-PREFERRED_VERSION_libticables ?= "3.9.2"
-PREFERRED_VERSION_libticalcs ?= "4.5.9"
-PREFERRED_VERSION_libtifiles ?= "0.6.5"
-PREFERRED_VERSION_libtinymail ?= "0.0.3"
-PREFERRED_VERSION_libtododb ?= "0.11"
-PREFERRED_VERSION_libtomcrypt ?= "0.97b"
-PREFERRED_VERSION_libtomoe-gtk ?= "0.1.0"
-PREFERRED_VERSION_libtool ?= "1.5.10"
-PREFERRED_VERSION_libtool-cross ?= "1.5.10"
-PREFERRED_VERSION_libtool-native ?= "1.5.10"
-PREFERRED_VERSION_libungif ?= "4.1.3"
-PREFERRED_VERSION_libupnp ?= "1.3.1"
-PREFERRED_VERSION_liburi-perl ?= "1.35"
-PREFERRED_VERSION_liburi-perl-native ?= "1.35"
-PREFERRED_VERSION_liburiparser ?= "0.5.1"
-PREFERRED_VERSION_libusb ?= "0.1.12"
-PREFERRED_VERSION_libusb-native ?= "0.1.12"
-PREFERRED_VERSION_libversion-perl ?= "0.6701"
-PREFERRED_VERSION_libversion-perl-native ?= "0.6701"
-PREFERRED_VERSION_libvisual ?= "0.1.3"
-PREFERRED_VERSION_libvisual-plugins ?= "0.1.3"
-PREFERRED_VERSION_libvncserver ?= "0.8.2"
-PREFERRED_VERSION_libvocenabler ?= "0.1"
-PREFERRED_VERSION_libvorbis ?= "1.0.1"
-PREFERRED_VERSION_libw100 ?= "0.0.2"
-PREFERRED_VERSION_libwindowswm ?= "1.0.0"
-PREFERRED_VERSION_libwnck ?= "2.13.5"
-PREFERRED_VERSION_libwpd ?= "0.8.6"
-PREFERRED_VERSION_libx11 ?= "1.1.3"
-PREFERRED_VERSION_libx11-native = "1.0.3"
-PREFERRED_VERSION_libxau ?= "1.0.3"
-PREFERRED_VERSION_libxau-native ?= "1.0.3"
-PREFERRED_VERSION_libxaw ?= "1.0.4"
-PREFERRED_VERSION_libxcb ?= "1.0"
-PREFERRED_VERSION_libxcomposite ?= "0.4.0"
-PREFERRED_VERSION_libxcursor ?= "1.1.9"
-PREFERRED_VERSION_libxdamage ?= "1.1.1"
-PREFERRED_VERSION_libxdmcp ?= "1.0.2"
-PREFERRED_VERSION_libxdmcp-native ?= "1.0.2"
-PREFERRED_VERSION_libxevie ?= "1.0.2"
-PREFERRED_VERSION_libxext ?= "1.0.3"
-PREFERRED_VERSION_libxfce4mcs ?= "4.4.1"
-PREFERRED_VERSION_libxfce4util ?= "4.4.1"
-PREFERRED_VERSION_libxfcegui4 ?= "4.4.1"
-PREFERRED_VERSION_libxfixes ?= "4.0.3"
-PREFERRED_VERSION_libxfont ?= "1.3.1"
-PREFERRED_VERSION_libxfont-native ?= "1.3.0"
-PREFERRED_VERSION_libxfontcache ?= "1.0.4"
-PREFERRED_VERSION_libxft ?= "2.1.12"
-PREFERRED_VERSION_libxi ?= "1.1.3"
-PREFERRED_VERSION_libxine ?= "1.1.0"
-PREFERRED_VERSION_libxine-fb ?= "1.0"
-PREFERRED_VERSION_libxine-x11 ?= "1.0"
-PREFERRED_VERSION_libxinerama ?= "1.0.2"
-PREFERRED_VERSION_libxkbfile ?= "1.0.4"
-PREFERRED_VERSION_libxkbui ?= "1.0.2"
-PREFERRED_VERSION_libxml-parser-perl ?= "2.34"
-PREFERRED_VERSION_libxml-parser-perl-native ?= "2.34"
-PREFERRED_VERSION_libxml2 ?= "2.6.29"
-PREFERRED_VERSION_libxml2-native ?= "2.6.29"
-PREFERRED_VERSION_libxmu ?= "1.0.3"
-PREFERRED_VERSION_libxp ?= "1.0.0"
-PREFERRED_VERSION_libxpm ?= "3.5.7"
-PREFERRED_VERSION_libxprintapputil ?= "1.0.1"
-PREFERRED_VERSION_libxprintutil ?= "1.0.1"
-PREFERRED_VERSION_libxrandr ?= "1.2.2"
-PREFERRED_VERSION_libxrender ?= "0.9.4"
-PREFERRED_VERSION_libxres ?= "1.0.3"
-PREFERRED_VERSION_libxscrnsaver ?= "1.1.2"
-PREFERRED_VERSION_libxsettings ?= "0.11"
-PREFERRED_VERSION_libxsettings-client ?= "0.17"
-PREFERRED_VERSION_libxslt ?= "1.1.21"
-PREFERRED_VERSION_libxslt-native ?= "1.1.21"
-PREFERRED_VERSION_libxt ?= "1.0.5"
-PREFERRED_VERSION_libxtrap ?= "1.0.0"
-PREFERRED_VERSION_libxtst ?= "1.0.3"
-PREFERRED_VERSION_libxv ?= "1.0.3"
-PREFERRED_VERSION_libxvmc ?= "1.0.4"
-PREFERRED_VERSION_libxxf86dga ?= "1.0.2"
-PREFERRED_VERSION_libxxf86misc ?= "1.0.1"
-PREFERRED_VERSION_libxxf86vm ?= "1.0.1"
-PREFERRED_VERSION_libyaml-perl ?= "0.62"
-PREFERRED_VERSION_libyaml-perl-native ?= "0.62"
-PREFERRED_VERSION_lighttpd ?= "1.4.18"
-PREFERRED_VERSION_lineak ?= "0.8.3"
-PREFERRED_VERSION_linphone ?= "1.6.0"
-PREFERRED_VERSION_linphone-hh ?= "0.12.2.hh1"
-PREFERRED_VERSION_linux-hotplug ?= "20040920"
-PREFERRED_VERSION_linux-libc-headers ?= "2.6.22"
-PREFERRED_VERSION_lisa ?= "0.2.2"
-PREFERRED_VERSION_live555 ?= "20051005"
-PREFERRED_VERSION_llvm ?= "2.0"
-PREFERRED_VERSION_llvm-native ?= "2.1"
-PREFERRED_VERSION_lmbench ?= "2.0.4"
-PREFERRED_VERSION_lmsensors-apps ?= "2.10.1"
-PREFERRED_VERSION_lndir ?= "1.0.1"
-PREFERRED_VERSION_loader ?= "0.04"
-PREFERRED_VERSION_login-manager ?= "1.0"
-PREFERRED_VERSION_logrotate ?= "3.7.1"
-PREFERRED_VERSION_logrotate-script ?= "cvs"
-PREFERRED_VERSION_loudmouth ?= "1.2.2"
-PREFERRED_VERSION_lrzsz ?= "0.12.20"
-PREFERRED_VERSION_lsh ?= "1.5.5"
-PREFERRED_VERSION_lsof ?= "4.78"
-PREFERRED_VERSION_ltp ?= "20070228"
-PREFERRED_VERSION_ltrace ?= "0.4"
-PREFERRED_VERSION_lttng-control ?= "0.12"
-PREFERRED_VERSION_lttng-viewer ?= "0.8.41-20060512"
-PREFERRED_VERSION_lua ?= "5.0.2"
-PREFERRED_VERSION_lua-gtk2 ?= "0.3"
-PREFERRED_VERSION_lua-native ?= "5.0.2"
-PREFERRED_VERSION_luit ?= "1.0.2"
-PREFERRED_VERSION_lvm2 ?= "2.01.15"
-PREFERRED_VERSION_lxt ?= "1.0"
-PREFERRED_VERSION_lyx ?= "1.4.4"
-PREFERRED_VERSION_lzma ?= "4.17"
-PREFERRED_VERSION_lzma-native ?= "4.17"
-PREFERRED_VERSION_lzo ?= "1.08"
-PREFERRED_VERSION_lzo-native ?= "1.08"
-PREFERRED_VERSION_m4 ?= "1.4.8"
-PREFERRED_VERSION_m4-native ?= "1.4.8"
-PREFERRED_VERSION_macchanger ?= "1.5.0"
-PREFERRED_VERSION_madfu ?= "1.2"
-PREFERRED_VERSION_madplay ?= "0.15.2b"
-PREFERRED_VERSION_mahjongg ?= "1.0.0"
-PREFERRED_VERSION_mailutils ?= "0.3.1"
-PREFERRED_VERSION_mailx ?= "8.1.2-0.20050715cvs"
-PREFERRED_VERSION_make ?= "3.81"
-PREFERRED_VERSION_make-native ?= "3.81"
-PREFERRED_VERSION_makedepend ?= "1.0.1"
-PREFERRED_VERSION_makedepend-native ?= "1.0.1"
-PREFERRED_VERSION_makedev ?= "2.3.1"
-PREFERRED_VERSION_makedevs ?= "1.0.0"
-PREFERRED_VERSION_makedevs-native ?= "1.0.0"
-PREFERRED_VERSION_makeself-native ?= "cvs"
-PREFERRED_VERSION_maki ?= "1.0.4ern"
-PREFERRED_VERSION_man ?= "1.5p"
-PREFERRED_VERSION_man-pages ?= "2.41"
-PREFERRED_VERSION_manufacturers ?= "20031209"
-PREFERRED_VERSION_mapnik ?= "0.4.0"
-PREFERRED_VERSION_maradns ?= "1.0.39"
-PREFERRED_VERSION_masqmail ?= "0.2.21"
-PREFERRED_VERSION_matchbox ?= "0.9.1"
-PREFERRED_VERSION_matchbox-applet-cards ?= "1.0.2"
-PREFERRED_VERSION_matchbox-applet-inputmanager ?= "0.6"
-PREFERRED_VERSION_matchbox-applet-startup-monitor ?= "0.1"
-PREFERRED_VERSION_matchbox-applet-volume ?= "0.1"
-PREFERRED_VERSION_matchbox-common ?= "0.9.1"
-PREFERRED_VERSION_matchbox-desktop ?= "0.9.1"
-PREFERRED_VERSION_matchbox-panel ?= "0.9.3"
-PREFERRED_VERSION_matchbox-panel-hacks ?= "0.3-1"
-PREFERRED_VERSION_matchbox-panel-manager ?= "0.1"
-PREFERRED_VERSION_matchbox-theme-sato ?= "0.1"
-PREFERRED_VERSION_matchbox-themes-extra ?= "0.3"
-PREFERRED_VERSION_matchbox-themes-gtk ?= "1.0"
-PREFERRED_VERSION_matchbox-wm ?= "1.2"
-PREFERRED_VERSION_mathomatic ?= "unstable"
-PREFERRED_VERSION_matrixssl ?= "1.1.1"
-PREFERRED_VERSION_mb-applet-tasks ?= "1.0.0"
-PREFERRED_VERSION_mb-desktop-xine ?= "0.4"
-PREFERRED_VERSION_mbmerlin ?= "0.8.1-2"
-PREFERRED_VERSION_mc ?= "4.6.1"
-PREFERRED_VERSION_mce-dev ?= "1.5.6"
-PREFERRED_VERSION_mdadm ?= "2.5.5"
-PREFERRED_VERSION_mdev ?= "1.2.1"
-PREFERRED_VERSION_mdk2 ?= "v33"
-PREFERRED_VERSION_memedit ?= "0.7"
-PREFERRED_VERSION_memtester ?= "4.0.6"
-PREFERRED_VERSION_mesa ?= "6.5.2"
-PREFERRED_VERSION_mesa-dri ?= "6.5.2"
-PREFERRED_VERSION_meta-e-x11 ?= "1.0"
-PREFERRED_VERSION_meta-e-x11-core ?= "1.0"
-PREFERRED_VERSION_meta-gpe ?= "1.0"
-PREFERRED_VERSION_meta-gpe-extras ?= "1.0"
-PREFERRED_VERSION_meta-gpephone ?= "1.0"
-PREFERRED_VERSION_meta-maemo ?= "1.0"
-PREFERRED_VERSION_meta-sdk ?= "1.0"
-PREFERRED_VERSION_meta-sdk-gpe ?= "1.0"
-PREFERRED_VERSION_meta-sdk-sbox ?= "1.0"
-PREFERRED_VERSION_meta-sdk-sbox-gpe ?= "1.0"
-PREFERRED_VERSION_meta-sdl ?= "1.0"
-PREFERRED_VERSION_meta-sectest-gpe ?= "1.0"
-PREFERRED_VERSION_meta-toolchain ?= "1.0"
-PREFERRED_VERSION_metakit ?= "2.4.9.3"
-PREFERRED_VERSION_metalog ?= "0.7"
-PREFERRED_VERSION_mgetty ?= "1.1.30"
-PREFERRED_VERSION_miau ?= "0.5.3"
-PREFERRED_VERSION_micro-emacs ?= "20060909"
-PREFERRED_VERSION_microcom ?= "1.02"
-PREFERRED_VERSION_microwindows ?= "0.90"
-PREFERRED_VERSION_midori ?= "0.0.13"
-PREFERRED_VERSION_midpath ?= "0.1"
-PREFERRED_VERSION_midpath-alsa ?= "0.1"
-PREFERRED_VERSION_midpath-cldc ?= "0.1"
-PREFERRED_VERSION_midpath-cldc-native ?= "0.1"
-PREFERRED_VERSION_midpath-cldc-sdl ?= "0.1"
-PREFERRED_VERSION_midpath-cldc-x11 ?= "0.1"
-PREFERRED_VERSION_midpath-gtk ?= "0.1"
-PREFERRED_VERSION_midpath-qt3x11 ?= "0.1"
-PREFERRED_VERSION_midpath-qte ?= "0.1"
-PREFERRED_VERSION_midpath-test ?= "0.1"
-PREFERRED_VERSION_mikmod ?= "3.2.2-beta1"
-PREFERRED_VERSION_mileage ?= "4.2.0-cvs-20060814"
-PREFERRED_VERSION_militaryalphabet ?= "0.2.1"
-PREFERRED_VERSION_mime-support ?= "3.28"
-PREFERRED_VERSION_miniclipboard ?= "0.3"
-PREFERRED_VERSION_minicom ?= "2.1"
-PREFERRED_VERSION_minifo-modules ?= "0.6.1-pre1"
-PREFERRED_VERSION_miniinit ?= "1.0"
-PREFERRED_VERSION_minimix ?= "0.9"
-PREFERRED_VERSION_minipredict ?= "1.0"
-PREFERRED_VERSION_mipv6 ?= "1.1-v2.4.26"
-PREFERRED_VERSION_misdn ?= "cvs"
-PREFERRED_VERSION_mkbot ?= "0.3"
-PREFERRED_VERSION_mkfontdir ?= "1.0.3"
-PREFERRED_VERSION_mkfontdir-native ?= "1.0.3"
-PREFERRED_VERSION_mobilemesh ?= "1.2"
-PREFERRED_VERSION_moc ?= "2.4.0"
-PREFERRED_VERSION_modphp ?= "5.1.6"
-PREFERRED_VERSION_modplugplay ?= "1.0"
-PREFERRED_VERSION_module-init-tools ?= "3.2.2"
-PREFERRED_VERSION_module-init-tools-cross ?= "3.2.2"
-PREFERRED_VERSION_modutils ?= "2.4.27"
-PREFERRED_VERSION_modutils-collateral ?= "1.0"
-PREFERRED_VERSION_modutils-cross ?= "2.4.27"
-PREFERRED_VERSION_modutils-initscripts ?= "1.0"
-PREFERRED_VERSION_moin ?= "1.5.8"
-PREFERRED_VERSION_mono ?= "1.2.5.1"
-PREFERRED_VERSION_mono-mcs-intermediate ?= "1.2.5.1"
-PREFERRED_VERSION_mono-native ?= "1.2.5.1"
-PREFERRED_VERSION_monotone-4 ?= "0.19"
-PREFERRED_VERSION_monotone-5 ?= "0.25.2"
-PREFERRED_VERSION_monotone-6 ?= "0.34"
-PREFERRED_VERSION_motion ?= "3.2.6"
-PREFERRED_VERSION_mousepad ?= "0.2.12"
-PREFERRED_VERSION_mp3blaster ?= "3.2.3"
-PREFERRED_VERSION_mpc ?= "0.12.1"
-PREFERRED_VERSION_mpeg2dec ?= "0.4.0b"
-PREFERRED_VERSION_mpfr ?= "2.3.0"
-PREFERRED_VERSION_mpfr-native ?= "2.3.0"
-PREFERRED_VERSION_mpg123 ?= "0.66"
-PREFERRED_VERSION_mpg321 ?= "0.2.10"
-PREFERRED_VERSION_mplayer-common ?= "0.0.1"
-PREFERRED_VERSION_mrxvt ?= "0.5.2"
-PREFERRED_VERSION_msmtp ?= "1.4.10"
-PREFERRED_VERSION_msn-cap ?= "1.0"
-PREFERRED_VERSION_msynctool ?= "0.22"
-PREFERRED_VERSION_mt-daapd ?= "0.2.3"
-PREFERRED_VERSION_mtools ?= "3.9.9"
-PREFERRED_VERSION_mtools-native ?= "3.9.9"
-PREFERRED_VERSION_mtpaint ?= "3.02"
-PREFERRED_VERSION_mtr ?= "0.65"
-PREFERRED_VERSION_multisync ?= "0.90.18"
-PREFERRED_VERSION_murasaki ?= "0.8.8"
-PREFERRED_VERSION_mutt ?= "1.5.15"
-PREFERRED_VERSION_mysql ?= "4.1.18"
-PREFERRED_VERSION_mysql-native ?= "4.1.18"
-PREFERRED_VERSION_mythfront-config ?= "1.10"
-PREFERRED_VERSION_mythfront-session ?= "1.5"
-PREFERRED_VERSION_nabi ?= "0.17"
-PREFERRED_VERSION_nail ?= "11.21"
-PREFERRED_VERSION_nano ?= "2.0.6"
-PREFERRED_VERSION_nasm-native ?= "0.98.38"
-PREFERRED_VERSION_nautilus ?= "2.12.2"
-PREFERRED_VERSION_nautilus-cd-burner ?= "2.8.5"
-PREFERRED_VERSION_navit ?= "0.0.3"
-PREFERRED_VERSION_nbd ?= "2.8.7"
-PREFERRED_VERSION_ncftp ?= "3.2.0"
-PREFERRED_VERSION_ncmpc ?= "0.11.1"
-PREFERRED_VERSION_ncurses ?= "5.4"
-PREFERRED_VERSION_ncurses-native ?= "5.4"
-PREFERRED_VERSION_ndisc6 ?= "0.6.7"
-PREFERRED_VERSION_neon ?= "0.25.5"
-PREFERRED_VERSION_net-snmp ?= "5.4.1"
-PREFERRED_VERSION_net-tools ?= "1.60"
-PREFERRED_VERSION_net6 ?= "1.3.1"
-PREFERRED_VERSION_netatalk ?= "2.0.3"
-PREFERRED_VERSION_netbase ?= "4.21"
-PREFERRED_VERSION_netcat ?= "0.7.1"
-PREFERRED_VERSION_netpbm ?= "10.28"
-PREFERRED_VERSION_netperf ?= "2.4.2"
-PREFERRED_VERSION_network-manager-applet ?= "0.6.5"
-PREFERRED_VERSION_network-suspend-scripts ?= "1.1"
-PREFERRED_VERSION_nfs-utils ?= "1.0.6"
-PREFERRED_VERSION_ngrep ?= "1.42"
-PREFERRED_VERSION_nis-all ?= "1.0"
-PREFERRED_VERSION_nkf ?= "2.07"
-PREFERRED_VERSION_nkf-native ?= "2.07"
-PREFERRED_VERSION_nmap ?= "4.20"
-PREFERRED_VERSION_nmixer ?= "2.0"
-PREFERRED_VERSION_nmm ?= "0.0.2"
-PREFERRED_VERSION_nogravity ?= "2.0"
-PREFERRED_VERSION_notecase ?= "1.2.6"
-PREFERRED_VERSION_notez ?= "1.1.0"
-PREFERRED_VERSION_notification-daemon ?= "0.3.7"
-PREFERRED_VERSION_nsd ?= "2.0.0"
-PREFERRED_VERSION_ntfs-3g ?= "1.0"
-PREFERRED_VERSION_ntop ?= "3.0"
-PREFERRED_VERSION_ntp ?= "4.2.2p3"
-PREFERRED_VERSION_ntp-ssl ?= "4.1.2"
-PREFERRED_VERSION_ntpclient ?= "2003_194"
-PREFERRED_VERSION_nunome ?= "1.0.2"
-PREFERRED_VERSION_nylon-feed ?= "1.0"
-PREFERRED_VERSION_obby ?= "0.4.1"
-PREFERRED_VERSION_obexftp ?= "0.20"
-PREFERRED_VERSION_obexpush ?= "1.0.0"
-PREFERRED_VERSION_obexpush-native ?= "1.0.0"
-PREFERRED_VERSION_octave ?= "2.1.73"
-PREFERRED_VERSION_offlineimap ?= "4.0.14"
-PREFERRED_VERSION_olsr ?= "0.3-1"
-PREFERRED_VERSION_olsrd ?= "0.5.3"
-PREFERRED_VERSION_omext ?= "0.2"
-PREFERRED_VERSION_omniorb ?= "4.0.7"
-PREFERRED_VERSION_omniorb-native ?= "4.0.7"
-PREFERRED_VERSION_openal ?= "0.0.8"
-PREFERRED_VERSION_openh323 ?= "1.13.5.4"
-PREFERRED_VERSION_openjade ?= "1.3.2"
-PREFERRED_VERSION_openjade-native ?= "1.3.2"
-PREFERRED_VERSION_openldap ?= "2.3.11"
-PREFERRED_VERSION_openntpd ?= "3.9p1"
-PREFERRED_VERSION_openobex ?= "1.3"
-PREFERRED_VERSION_openpbx.org ?= "1.2_rc3"
-PREFERRED_VERSION_openpbx.org-perl ?= "1.0"
-PREFERRED_VERSION_openprotium-init ?= "0.10"
-PREFERRED_VERSION_openprotium-packages ?= "1.0"
-PREFERRED_VERSION_opensp ?= "1.5"
-PREFERRED_VERSION_opensp-native ?= "1.5"
-PREFERRED_VERSION_openssh ?= "4.6p1"
-PREFERRED_VERSION_openssl ?= "0.9.7g"
-PREFERRED_VERSION_openssl-native ?= "0.9.7g"
-PREFERRED_VERSION_openswan ?= "2.4.7"
-PREFERRED_VERSION_openttd ?= "0.4.0.1"
-PREFERRED_VERSION_openvpn ?= "2.0.9"
-PREFERRED_VERSION_oplinux-packages ?= "1.0"
-PREFERRED_VERSION_oprofile ?= "0.9.3"
-PREFERRED_VERSION_orage ?= "4.4.1"
-PREFERRED_VERSION_orbit2 ?= "2.14.0"
-PREFERRED_VERSION_orbit2-native ?= "2.14.0"
-PREFERRED_VERSION_orinoco-conf ?= "1.0"
-PREFERRED_VERSION_orinoco-modules ?= "0.15rc2"
-PREFERRED_VERSION_orpheus ?= "1.5"
-PREFERRED_VERSION_ortp ?= "0.7.1"
-PREFERRED_VERSION_osso-af-settings ?= "0.8.5"
-PREFERRED_VERSION_osso-af-startup ?= "0.28-1"
-PREFERRED_VERSION_osso-af-utils ?= "0.4"
-PREFERRED_VERSION_osso-app-killer ?= "0.4-3"
-PREFERRED_VERSION_osso-application-installer ?= "1.0.03-1"
-PREFERRED_VERSION_osso-bttools ?= "0.25.1"
-PREFERRED_VERSION_osso-core-config ?= "200515.1"
-PREFERRED_VERSION_osso-dsp-headers ?= "0.1"
-PREFERRED_VERSION_osso-esd ?= "0.5"
-PREFERRED_VERSION_osso-gwconnect ?= "1.0.8"
-PREFERRED_VERSION_osso-gwobex ?= "0.26.1"
-PREFERRED_VERSION_osso-ic-oss ?= "1.0.4"
-PREFERRED_VERSION_osso-screenshot-tool ?= "1.20-1"
-PREFERRED_VERSION_osso-sounds ?= "0.3-1"
-PREFERRED_VERSION_osso-thumbnail ?= "0.7"
-PREFERRED_VERSION_otpkeygen ?= "1.3.0"
-PREFERRED_VERSION_outo ?= "0.1.1"
-PREFERRED_VERSION_p3scan ?= "2.9.05d"
-PREFERRED_VERSION_p4 ?= "05.2"
-PREFERRED_VERSION_package-index ?= "1.0"
-PREFERRED_VERSION_pad-native ?= "1.0"
-PREFERRED_VERSION_pairs ?= "1.1.1"
-PREFERRED_VERSION_pango ?= "1.18.1"
-PREFERRED_VERSION_panoramixext ?= "1.1"
-PREFERRED_VERSION_parted ?= "1.8.7"
-PREFERRED_VERSION_patch ?= "2.5.9"
-PREFERRED_VERSION_patcher ?= "20040913"
-PREFERRED_VERSION_patcher-native ?= "20040913"
-PREFERRED_VERSION_patchutils ?= "0.2.31"
-PREFERRED_VERSION_pax-utils ?= "0.1.13"
-PREFERRED_VERSION_pax-utils-native ?= "0.1.13"
-PREFERRED_VERSION_pbltool-native ?= "0.2"
-PREFERRED_VERSION_pciutils ?= "2.2.4"
-PREFERRED_VERSION_pcmanfm ?= "0.3.2-beta"
-PREFERRED_VERSION_pcmcia-cs ?= "3.2.8"
-PREFERRED_VERSION_pcmciautils ?= "014"
-PREFERRED_VERSION_pdamaze ?= "1.0.0"
-PREFERRED_VERSION_pdm ?= "1.0"
-PREFERRED_VERSION_perl ?= "5.8.8"
-PREFERRED_VERSION_perl-native ?= "5.8.8"
-PREFERRED_VERSION_petitepainture ?= "1.5"
-PREFERRED_VERSION_phalanx ?= "22"
-PREFERRED_VERSION_phoneserver ?= "1.0"
-PREFERRED_VERSION_php ?= "5.2.0"
-PREFERRED_VERSION_php-native ?= "5.2.0"
-PREFERRED_VERSION_picocom ?= "1.4"
-PREFERRED_VERSION_pidgin ?= "2.2.1"
-PREFERRED_VERSION_pine ?= "4.64"
-PREFERRED_VERSION_pipeman ?= "1.0.0"
-PREFERRED_VERSION_pipepanic ?= "0.1.1"
-PREFERRED_VERSION_pivotinit ?= "1.0.0"
-PREFERRED_VERSION_pixman ?= "0.9.6"
-PREFERRED_VERSION_pixops-test ?= "1.0"
-PREFERRED_VERSION_pkgconfig ?= "0.22"
-PREFERRED_VERSION_pkgconfig-native ?= "0.22"
-PREFERRED_VERSION_plinciv ?= "0.16"
-PREFERRED_VERSION_plone ?= "2.1.2"
-PREFERRED_VERSION_plot ?= "0.28"
-PREFERRED_VERSION_pme ?= "1.0.3"
-PREFERRED_VERSION_pmount ?= "0.9.4"
-PREFERRED_VERSION_pmtools ?= "20050926"
-PREFERRED_VERSION_poboxserver ?= "1.2.5"
-PREFERRED_VERSION_pocketcellar ?= "1.1"
-PREFERRED_VERSION_pocketsphinx ?= "0.2.1"
-PREFERRED_VERSION_poppler ?= "0.6"
-PREFERRED_VERSION_poppler-data ?= "0.1"
-PREFERRED_VERSION_popt ?= "1.7"
-PREFERRED_VERSION_popt-native ?= "1.7"
-PREFERRED_VERSION_poptop ?= "1.3.4"
-PREFERRED_VERSION_poqetpresenter ?= "0.0.6"
-PREFERRED_VERSION_portabase ?= "1.9"
-PREFERRED_VERSION_portmap ?= "6.0"
-PREFERRED_VERSION_postfix ?= "2.0.20"
-PREFERRED_VERSION_postfix-native ?= "2.0.20"
-PREFERRED_VERSION_postgresql ?= "8.1.8"
-PREFERRED_VERSION_povray ?= "3.6.1"
-PREFERRED_VERSION_powermanga ?= "0.79"
-PREFERRED_VERSION_powernowd ?= "0.96"
-PREFERRED_VERSION_powertop ?= "1.8"
-PREFERRED_VERSION_ppp ?= "2.4.3"
-PREFERRED_VERSION_ppp-dsl ?= "0.1-monolithic"
-PREFERRED_VERSION_pptp-linux ?= "1.7.1"
-PREFERRED_VERSION_prboom ?= "2.2.6"
-PREFERRED_VERSION_prboom-devconfig ?= "1.0"
-PREFERRED_VERSION_prelink ?= "20060712"
-PREFERRED_VERSION_printproto ?= "1.0.3"
-PREFERRED_VERSION_prism-firmware ?= "1.0"
-PREFERRED_VERSION_prism2-firmware-update ?= "1.7.4"
-PREFERRED_VERSION_prism54-firmware ?= "1.0.4.3"
-PREFERRED_VERSION_prism54-module ?= "1.2"
-PREFERRED_VERSION_prismstumbler ?= "0.7.3"
-PREFERRED_VERSION_privoxy ?= "3.0.3"
-PREFERRED_VERSION_procps ?= "3.2.7"
-PREFERRED_VERSION_proj-4 ?= "4.9"
-PREFERRED_VERSION_proj-4-native ?= "4.9"
-PREFERRED_VERSION_psmisc ?= "22.2"
-PREFERRED_VERSION_psplash-zap ?= "1.0"
-PREFERRED_VERSION_pth ?= "2.0.2"
-PREFERRED_VERSION_pulseaudio ?= "0.9.6"
-PREFERRED_VERSION_puppy ?= "1.11"
-PREFERRED_VERSION_puzz-le ?= "2.0.0"
-PREFERRED_VERSION_puzzles ?= "r7436"
-PREFERRED_VERSION_pvrusb2-mci ?= "20060903"
-PREFERRED_VERSION_pwdutils ?= "2.6"
-PREFERRED_VERSION_pwlib ?= "1.5.2"
-PREFERRED_VERSION_pwmpi ?= "2.2.7"
-PREFERRED_VERSION_pxaregs ?= "1.14"
-PREFERRED_VERSION_python ?= "2.5.1"
-PREFERRED_VERSION_python-ao ?= "0.82"
-PREFERRED_VERSION_python-constraint ?= "1.1"
-PREFERRED_VERSION_python-dbus ?= "0.81.1"
-PREFERRED_VERSION_python-fam ?= "1.1.1"
-PREFERRED_VERSION_python-fnorb ?= "1.3"
-PREFERRED_VERSION_python-fpconst ?= "0.6.0"
-PREFERRED_VERSION_python-gammu ?= "0.24"
-PREFERRED_VERSION_python-gmpy ?= "1.0.1"
-PREFERRED_VERSION_python-gnosis ?= "1.2.2"
-PREFERRED_VERSION_python-gst ?= "0.10.8"
-PREFERRED_VERSION_python-hmm ?= "0.4"
-PREFERRED_VERSION_python-imaging ?= "1.1.6"
-PREFERRED_VERSION_python-imdbpy ?= "3.1"
-PREFERRED_VERSION_python-inotify ?= "0.1.0"
-PREFERRED_VERSION_python-irclib ?= "0.4.6"
-PREFERRED_VERSION_python-itools ?= "0.16.5"
-PREFERRED_VERSION_python-libgmail ?= "0.1.6"
-PREFERRED_VERSION_python-logilab-common ?= "0.9.3"
-PREFERRED_VERSION_python-lxml ?= "1.3.3"
-PREFERRED_VERSION_python-mad ?= "0.6"
-PREFERRED_VERSION_python-mysqldb ?= "1.2.1"
-PREFERRED_VERSION_python-native ?= "2.5.1"
-PREFERRED_VERSION_python-numarray ?= "1.1.1"
-PREFERRED_VERSION_python-numeric ?= "23.7"
-PREFERRED_VERSION_python-ogg ?= "1.3"
-PREFERRED_VERSION_python-pexpect ?= "2.1"
-PREFERRED_VERSION_python-pybluez ?= "0.13"
-PREFERRED_VERSION_python-pycairo ?= "1.4.0"
-PREFERRED_VERSION_python-pychecker ?= "0.8.17"
-PREFERRED_VERSION_python-pycodes ?= "1.2"
-PREFERRED_VERSION_python-pycrypto ?= "2.0.1"
-PREFERRED_VERSION_python-pycurl ?= "7.16.4"
-PREFERRED_VERSION_python-pyephem ?= "3.7.2a"
-PREFERRED_VERSION_python-pyfits ?= "1.1"
-PREFERRED_VERSION_python-pyflakes ?= "0.2.1"
-PREFERRED_VERSION_python-pygame ?= "1.7.1"
-PREFERRED_VERSION_python-pygnome ?= "2.16.2"
-PREFERRED_VERSION_python-pygobject ?= "2.12.3"
-PREFERRED_VERSION_python-pygobject-native ?= "2.12.3"
-PREFERRED_VERSION_python-pygoogle ?= "0.6"
-PREFERRED_VERSION_python-pygtk ?= "2.10.4"
-PREFERRED_VERSION_python-pygtk-1.2 ?= "0.6.12"
-PREFERRED_VERSION_python-pyid3lib ?= "0.5.1"
-PREFERRED_VERSION_python-pyiw ?= "0.3.3"
-PREFERRED_VERSION_python-pylinda ?= "0.6"
-PREFERRED_VERSION_python-pylint ?= "0.13.2"
-PREFERRED_VERSION_python-pymetar ?= "0.11"
-PREFERRED_VERSION_python-pymp3 ?= "0.3.4"
-PREFERRED_VERSION_python-pyrad ?= "0.8"
-PREFERRED_VERSION_python-pyraf ?= "1.4"
-PREFERRED_VERSION_python-pyreverse ?= "0.5.2"
-PREFERRED_VERSION_python-pyrex ?= "0.9.5.1a"
-PREFERRED_VERSION_python-pyrex-native ?= "0.9.5.1a"
-PREFERRED_VERSION_python-pyro ?= "3.7"
-PREFERRED_VERSION_python-pyserial ?= "2.2"
-PREFERRED_VERSION_python-pytester ?= "0.6.0"
-PREFERRED_VERSION_python-pythondaap ?= "0.4"
-PREFERRED_VERSION_python-pyvisa ?= "1.1"
-PREFERRED_VERSION_python-pyweather ?= "0.7.0"
-PREFERRED_VERSION_python-pywpa ?= "0.3.4"
-PREFERRED_VERSION_python-pyxml ?= "0.8.4"
-PREFERRED_VERSION_python-pyxmlrpc ?= "0.8.8.3"
-PREFERRED_VERSION_python-pyzeroconf ?= "0.12"
-PREFERRED_VERSION_python-scapy ?= "1.1.1"
-PREFERRED_VERSION_python-scons ?= "0.97"
-PREFERRED_VERSION_python-scons-native ?= "0.97"
-PREFERRED_VERSION_python-setuptools ?= "0.6c6"
-PREFERRED_VERSION_python-sgmlop ?= "1.1"
-PREFERRED_VERSION_python-simplejson ?= "1.7.1"
-PREFERRED_VERSION_python-snmplib ?= "0.1.1"
-PREFERRED_VERSION_python-soappy ?= "0.11.6"
-PREFERRED_VERSION_python-spydi ?= "0.9.7"
-PREFERRED_VERSION_python-spyro ?= "0.9.22"
-PREFERRED_VERSION_python-sqlobject ?= "0.9.1"
-PREFERRED_VERSION_python-sword ?= "1.5.9"
-PREFERRED_VERSION_python-urwid ?= "0.9.8.1"
-PREFERRED_VERSION_python-vmaps ?= "1.1"
-PREFERRED_VERSION_python-vorbis ?= "1.3"
-PREFERRED_VERSION_python-webpy ?= "0.21"
-PREFERRED_VERSION_python24 ?= "2.4.4"
-PREFERRED_VERSION_python24-native ?= "2.4.0"
-PREFERRED_VERSION_python24-pyqt2 ?= "3.13"
-PREFERRED_VERSION_python24-pyqwt2 ?= "3.10"
-PREFERRED_VERSION_python24-sip ?= "4.1.1"
-PREFERRED_VERSION_qc-usb-messenger ?= "1.1"
-PREFERRED_VERSION_qclockchange ?= "0.1a"
-PREFERRED_VERSION_qcoptest ?= "0.1.1"
-PREFERRED_VERSION_qfish2 ?= "1.1.0"
-PREFERRED_VERSION_qgis ?= "0.8.1"
-PREFERRED_VERSION_qiv ?= "1.9"
-PREFERRED_VERSION_qjackctl ?= "0.3.1a"
-PREFERRED_VERSION_qmake-native ?= "1.07a"
-PREFERRED_VERSION_qmake2-native ?= "2.10a"
-PREFERRED_VERSION_qmatrix ?= "1.1.0"
-PREFERRED_VERSION_qof ?= "0.7.2"
-PREFERRED_VERSION_qolyester ?= "20050728"
-PREFERRED_VERSION_qpdf2 ?= "2.2.1"
-PREFERRED_VERSION_qpe-gaim ?= "20041030"
-PREFERRED_VERSION_qpe-inputhelper-applet ?= "1.0.0"
-PREFERRED_VERSION_qpe-libgaim ?= "1.5.0"
-PREFERRED_VERSION_qpealarmclock ?= "1.0.9"
-PREFERRED_VERSION_qpealarmclockapplet ?= "1.0.9"
-PREFERRED_VERSION_qpegps ?= "0.9.3.1"
-PREFERRED_VERSION_qpenmapfe ?= "1.0.0"
-PREFERRED_VERSION_qpf-arabic ?= "1.0"
-PREFERRED_VERSION_qpf-bitstream-vera ?= "1.10"
-PREFERRED_VERSION_qpf-bitstream-vera-sans-mono ?= "1.10"
-PREFERRED_VERSION_qpf-font-common ?= "1.0"
-PREFERRED_VERSION_qpf-freemono ?= "1.0"
-PREFERRED_VERSION_qpf-freeserif ?= "1.0"
-PREFERRED_VERSION_qpf-helvetica ?= "1.0"
-PREFERRED_VERSION_qpf-hunkysans ?= "0.3.0"
-PREFERRED_VERSION_qpf-hunkyserif ?= "0.3.0"
-PREFERRED_VERSION_qpf-qte ?= "2.3.10"
-PREFERRED_VERSION_qpf-unifont ?= "1.0"
-PREFERRED_VERSION_qpf-unismall ?= "1.0.0"
-PREFERRED_VERSION_qpf-utopia ?= "1.0"
-PREFERRED_VERSION_qplot ?= "2.0.1-cvs-20020420"
-PREFERRED_VERSION_qpobox ?= "0.5.4"
-PREFERRED_VERSION_qpphoto ?= "1.0.2"
-PREFERRED_VERSION_qscintilla ?= "1.65-gpl-1.6"
-PREFERRED_VERSION_qsvn ?= "0.3.0"
-PREFERRED_VERSION_qt-x11-free ?= "3.3.7"
-PREFERRED_VERSION_qt-x11-free-native ?= "3.3.5"
-PREFERRED_VERSION_qt4-x11-free ?= "4.3.3"
-PREFERRED_VERSION_qtplot ?= "0.2"
-PREFERRED_VERSION_quagga ?= "0.99.8"
-PREFERRED_VERSION_quake1 ?= "0.0.1"
-PREFERRED_VERSION_quetoo ?= "0.6.1"
-PREFERRED_VERSION_quilt ?= "0.45"
-PREFERRED_VERSION_quilt-native ?= "0.45"
-PREFERRED_VERSION_qwt ?= "4.2.0rc1"
-PREFERRED_VERSION_qxmp ?= "1.0"
-PREFERRED_VERSION_r-native ?= "2.0.0"
-PREFERRED_VERSION_radlib ?= "2.6.2"
-PREFERRED_VERSION_radlib-mysql ?= "2.6.2"
-PREFERRED_VERSION_radvd ?= "1.0"
-PREFERRED_VERSION_rage ?= "0.2.0.003"
-PREFERRED_VERSION_randrext ?= "1.0"
-PREFERRED_VERSION_randrproto ?= "1.2.1"
-PREFERRED_VERSION_rdesktop ?= "1.5.0"
-PREFERRED_VERSION_rdiff-backup ?= "1.1.5"
-PREFERRED_VERSION_readline ?= "4.3"
-PREFERRED_VERSION_readline-native ?= "4.3"
-PREFERRED_VERSION_reaim ?= "7.0.1.13"
-PREFERRED_VERSION_recode ?= "3.6"
-PREFERRED_VERSION_recode-native ?= "3.6"
-PREFERRED_VERSION_recordproto ?= "1.13.2"
-PREFERRED_VERSION_redfang ?= "2.5"
-PREFERRED_VERSION_refdbg ?= "1.2"
-PREFERRED_VERSION_regex-markup ?= "0.10.0"
-PREFERRED_VERSION_reiser4progs ?= "1.0.4"
-PREFERRED_VERSION_reiserfsprogs ?= "3.6.19"
-PREFERRED_VERSION_renderproto ?= "0.9.3"
-PREFERRED_VERSION_resistorui ?= "0.9"
-PREFERRED_VERSION_resolvconf ?= "1.28"
-PREFERRED_VERSION_resourceext ?= "1.0"
-PREFERRED_VERSION_resourceproto ?= "1.0.2"
-PREFERRED_VERSION_rfakeap ?= "0.2"
-PREFERRED_VERSION_rglueap ?= "0.1"
-PREFERRED_VERSION_rhythmbox ?= "0.8.7"
-PREFERRED_VERSION_rlpr ?= "2.05"
-PREFERRED_VERSION_roadmap-gtk2 ?= "1.1.0"
-PREFERRED_VERSION_rott ?= "1.0"
-PREFERRED_VERSION_rox-filer ?= "2.5"
-PREFERRED_VERSION_rp-pppoe ?= "3.8"
-PREFERRED_VERSION_rpm ?= "4.4"
-PREFERRED_VERSION_rrdtool ?= "1.0.49"
-PREFERRED_VERSION_rsync ?= "2.6.9"
-PREFERRED_VERSION_rt2570 ?= "1.1.0-b2"
-PREFERRED_VERSION_rt2570-k2wrlz ?= "1.6.1"
-PREFERRED_VERSION_rt73-k2wrlz ?= "2.0.1"
-PREFERRED_VERSION_rtaudio-tests ?= "3.0.1"
-PREFERRED_VERSION_ruby ?= "1.8.5"
-PREFERRED_VERSION_ruby-native ?= "1.8.5"
-PREFERRED_VERSION_rxvt ?= "2.8.0"
-PREFERRED_VERSION_rxvt-unicode ?= "7.9"
-PREFERRED_VERSION_sablevm ?= "1.12"
-PREFERRED_VERSION_sablevm-classpath ?= "1.12"
-PREFERRED_VERSION_salsa-lib ?= "0.0.1"
-PREFERRED_VERSION_samba ?= "3.0.23c"
-PREFERRED_VERSION_samba-essential ?= "3.0.20"
-PREFERRED_VERSION_sane-backends ?= "1.0.17"
-PREFERRED_VERSION_sane-frontends ?= "1.0.13"
-PREFERRED_VERSION_sato-icon-theme ?= "0.1"
-PREFERRED_VERSION_sbagen ?= "1.4.1"
-PREFERRED_VERSION_sbrsh ?= "7.1"
-PREFERRED_VERSION_scap ?= "0.1"
-PREFERRED_VERSION_sccd ?= "1.0"
-PREFERRED_VERSION_scew ?= "0.3.1"
-PREFERRED_VERSION_schedstat-utils ?= "1.0"
-PREFERRED_VERSION_schroedinger ?= "0.2.0.0"
-PREFERRED_VERSION_screen ?= "4.0.2"
-PREFERRED_VERSION_scrnsaverproto ?= "1.1.0"
-PREFERRED_VERSION_scsi-idle ?= "2.4.23"
-PREFERRED_VERSION_sctzap ?= "0.0cvs20060814"
-PREFERRED_VERSION_scummvm ?= "0.10.0"
-PREFERRED_VERSION_scummvm-qpe ?= "0.6.1b"
-PREFERRED_VERSION_scw ?= "0.4.3"
-PREFERRED_VERSION_sdcc ?= "2.5.0"
-PREFERRED_VERSION_sdcc-native ?= "2.5.0"
-PREFERRED_VERSION_sdk-default-icons ?= "0.2-1"
-PREFERRED_VERSION_sdk-default-theme ?= "0.1-1"
-PREFERRED_VERSION_sdk-default-theme-config ?= "1.0-1"
-PREFERRED_VERSION_sdl-perl ?= "1.20.3"
-PREFERRED_VERSION_sed ?= "4.1.2"
-PREFERRED_VERSION_sed-native ?= "4.1.2"
-PREFERRED_VERSION_ser ?= "0.9.0"
-PREFERRED_VERSION_serload-native ?= "1.0"
-PREFERRED_VERSION_sessreg ?= "1.0.3"
-PREFERRED_VERSION_setmixer ?= "27DEC94"
-PREFERRED_VERSION_setserial ?= "2.17"
-PREFERRED_VERSION_setxkbmap ?= "1.0.4"
-PREFERRED_VERSION_sgml-common ?= "0.6.3"
-PREFERRED_VERSION_sgml-common-native ?= "0.6.3"
-PREFERRED_VERSION_shared-mime-info ?= "0.22"
-PREFERRED_VERSION_sharp-compat-libs ?= "0.5"
-PREFERRED_VERSION_sharprom-toolchain-native ?= "1.0"
-PREFERRED_VERSION_shasum-native ?= "1.0"
-PREFERRED_VERSION_shfs-modules ?= "0.35"
-PREFERRED_VERSION_shfs-utils ?= "0.35"
-PREFERRED_VERSION_shisensho ?= "1.0.0"
-PREFERRED_VERSION_shopper ?= "1.2.1"
-PREFERRED_VERSION_shorewall ?= "2.0.9-monolithic"
-PREFERRED_VERSION_sidplay-base ?= "1.0.9"
-PREFERRED_VERSION_sidplayer ?= "1.5.0"
-PREFERRED_VERSION_silo ?= "1.4.8"
-PREFERRED_VERSION_simh ?= "3.7-1"
-PREFERRED_VERSION_simpad-utilities ?= "1.0"
-PREFERRED_VERSION_sip3-native ?= "4.0.1"
-PREFERRED_VERSION_sipsak ?= "0.9.6"
-PREFERRED_VERSION_skippy-xd ?= "0.5.0"
-PREFERRED_VERSION_sl ?= "3.03"
-PREFERRED_VERSION_slang ?= "1.4.9"
-PREFERRED_VERSION_slcalc ?= "1.2.1"
-PREFERRED_VERSION_sliderulez ?= "0.92"
-PREFERRED_VERSION_slotsig ?= "0.6"
-PREFERRED_VERSION_slrn ?= "0.9.8.0"
-PREFERRED_VERSION_slsnif ?= "0.4.4"
-PREFERRED_VERSION_slugimage-native ?= "1.0"
-PREFERRED_VERSION_slugos-init ?= "0.10"
-PREFERRED_VERSION_slugos-native ?= "1.0"
-PREFERRED_VERSION_slugos-native-packages ?= "1.0"
-PREFERRED_VERSION_slugtool ?= "1.0"
-PREFERRED_VERSION_slugtool-native ?= "1.0"
-PREFERRED_VERSION_slutils ?= "0.1.0"
-PREFERRED_VERSION_smartmontools ?= "5.37"
-PREFERRED_VERSION_sms ?= "1.1"
-PREFERRED_VERSION_sn9c102 ?= "1.32"
-PREFERRED_VERSION_snes232 ?= "cvs"
-PREFERRED_VERSION_snes9x ?= "1.43-WIP1"
-PREFERRED_VERSION_snes9x-sdl ?= "1.39"
-PREFERRED_VERSION_snes9x-sdl-qpe ?= "1.39"
-PREFERRED_VERSION_socat ?= "1.3.2.1"
-PREFERRED_VERSION_sofia-sip ?= "1.11.7"
-PREFERRED_VERSION_softfan ?= "0.10"
-PREFERRED_VERSION_sokoban ?= "1.3.8ern"
-PREFERRED_VERSION_soundserver ?= "1.0"
-PREFERRED_VERSION_soundtracker ?= "0.6.8"
-PREFERRED_VERSION_soundtracker-gtk2 ?= "0.6.7"
-PREFERRED_VERSION_sox ?= "13.0.0"
-PREFERRED_VERSION_sox-native ?= "13.0.0"
-PREFERRED_VERSION_spandsp ?= "0.0.3"
-PREFERRED_VERSION_spca5xx ?= "20060501"
-PREFERRED_VERSION_spectrum-fw ?= "1.0"
-PREFERRED_VERSION_speex ?= "1.1.12"
-PREFERRED_VERSION_sphinxbase ?= "0.1"
-PREFERRED_VERSION_squashfs-lzma-tools ?= "3.1r2"
-PREFERRED_VERSION_squashfs-lzma-tools-native ?= "3.1r2"
-PREFERRED_VERSION_squashfs-tools ?= "3.1r2"
-PREFERRED_VERSION_squashfs-tools-native ?= "3.1r2"
-PREFERRED_VERSION_squeak-nox ?= "3.4-2"
-PREFERRED_VERSION_squid ?= "2.6.STABLE14"
-PREFERRED_VERSION_sshfs-fuse ?= "1.8"
-PREFERRED_VERSION_ssmtp ?= "2.61"
-PREFERRED_VERSION_stagemanager-native ?= "0.0.1"
-PREFERRED_VERSION_starling ?= "0.2"
-PREFERRED_VERSION_startup-monitor ?= "0.18-2"
-PREFERRED_VERSION_startup-notification ?= "0.8"
-PREFERRED_VERSION_stat ?= "3.3"
-PREFERRED_VERSION_stat-native ?= "3.3"
-PREFERRED_VERSION_strace ?= "4.5.14"
-PREFERRED_VERSION_streamripper ?= "1.61.10"
-PREFERRED_VERSION_stress ?= "0.18.8"
-PREFERRED_VERSION_stunnel ?= "4.09"
-PREFERRED_VERSION_subapplet ?= "1.0.8"
-PREFERRED_VERSION_subversion ?= "1.4.3"
-PREFERRED_VERSION_sudo ?= "1.6.8p12"
-PREFERRED_VERSION_supertux ?= "0.1.2"
-PREFERRED_VERSION_supybot ?= "0.77.0"
-PREFERRED_VERSION_suspend-desktop ?= "1.0"
-PREFERRED_VERSION_swfdec ?= "0.5.1"
-PREFERRED_VERSION_swig ?= "1.3.31"
-PREFERRED_VERSION_swig-native ?= "1.3.31"
-PREFERRED_VERSION_sword ?= "1.5.9"
-PREFERRED_VERSION_sylpheed ?= "2.2.9"
-PREFERRED_VERSION_synaesthesia ?= "2.4"
-PREFERRED_VERSION_syncml-client ?= "0.1"
-PREFERRED_VERSION_synergy ?= "1.3.1"
-PREFERRED_VERSION_sysfsutils ?= "2.0.0"
-PREFERRED_VERSION_sysklogd ?= "1.4.1"
-PREFERRED_VERSION_syslinux-native ?= "3.36"
-PREFERRED_VERSION_syslog-ng ?= "1.6.11"
-PREFERRED_VERSION_sysvinit ?= "2.86"
-PREFERRED_VERSION_t1lib ?= "5.0.2"
-PREFERRED_VERSION_taglib ?= "1.4"
-PREFERRED_VERSION_taglibc ?= "1.4"
-PREFERRED_VERSION_tango-icon-theme ?= "0.7.2"
-PREFERRED_VERSION_tango-icon-theme-extras ?= "0.1.0"
-PREFERRED_VERSION_tapioca ?= "0.3.9"
-PREFERRED_VERSION_tapioca-xmpp ?= "0.3.9"
-PREFERRED_VERSION_tapiocaui ?= "0.3.9.1"
-PREFERRED_VERSION_tar ?= "1.18"
-PREFERRED_VERSION_tasklistapplet ?= "1.0.5"
-PREFERRED_VERSION_tasks ?= "0.10"
-PREFERRED_VERSION_tcl ?= "8.4.11"
-PREFERRED_VERSION_tcp-wrappers ?= "7.6"
-PREFERRED_VERSION_tcpdump ?= "3.9.7"
-PREFERRED_VERSION_tcpick ?= "0.1.22"
-PREFERRED_VERSION_tcptraceroute ?= "1.5beta6"
-PREFERRED_VERSION_tcptrack ?= "1.1.2"
-PREFERRED_VERSION_tda1004x-firmware ?= "1.0"
-PREFERRED_VERSION_telepathy-gabble ?= "0.5.10"
-PREFERRED_VERSION_telepathy-glib ?= "0.5.10"
-PREFERRED_VERSION_telepathy-mission-control ?= "4.22"
-PREFERRED_VERSION_teleport ?= "0.34"
-PREFERRED_VERSION_temtor ?= "0.0.1"
-PREFERRED_VERSION_termcap ?= "11.0.1"
-PREFERRED_VERSION_terminus ?= "1.0"
-PREFERRED_VERSION_tesseract ?= "1.0"
-PREFERRED_VERSION_tetex ?= "3.0"
-PREFERRED_VERSION_tetex-native ?= "3.0"
-PREFERRED_VERSION_tetex-texmf ?= "3.0"
-PREFERRED_VERSION_texinfo ?= "4.8a"
-PREFERRED_VERSION_texlive ?= "2007"
-PREFERRED_VERSION_texmaker ?= "1.3"
-PREFERRED_VERSION_thcrut ?= "1.2.5"
-PREFERRED_VERSION_thttpd ?= "2.25b"
-PREFERRED_VERSION_thumbpad ?= "0.8"
-PREFERRED_VERSION_thunar ?= "0.8.0"
-PREFERRED_VERSION_thunderbird ?= "1.0.7"
-PREFERRED_VERSION_tickypip ?= "0.1.2"
-PREFERRED_VERSION_tickypip-levels ?= "1.1"
-PREFERRED_VERSION_tiff ?= "3.7.2"
-PREFERRED_VERSION_tightvnc ?= "1.3dev7"
-PREFERRED_VERSION_tiinit ?= "3.2.26"
-PREFERRED_VERSION_time ?= "1.7"
-PREFERRED_VERSION_timesleuth ?= "1.05ern"
-PREFERRED_VERSION_timezones ?= "1.2.0"
-PREFERRED_VERSION_tin ?= "1.9.1"
-PREFERRED_VERSION_tinc ?= "1.0.2"
-PREFERRED_VERSION_tinylogin ?= "1.4"
-PREFERRED_VERSION_tinyscheme ?= "1.35"
-PREFERRED_VERSION_tk ?= "8.4.11"
-PREFERRED_VERSION_tmake ?= "1.11"
-PREFERRED_VERSION_tmdns ?= "20030116"
-PREFERRED_VERSION_tn5250 ?= "0.16.5"
-PREFERRED_VERSION_tomoe ?= "0.2.1"
-PREFERRED_VERSION_tor ?= "0.1.1.26"
-PREFERRED_VERSION_totem ?= "1.0.4"
-PREFERRED_VERSION_tracker ?= "0.5.4"
-PREFERRED_VERSION_transconnect ?= "1.3-beta"
-PREFERRED_VERSION_trapproto ?= "3.4.3"
-PREFERRED_VERSION_tree ?= "1.5.1"
-PREFERRED_VERSION_treecc ?= "0.3.6"
-PREFERRED_VERSION_treecc-native ?= "0.3.6"
-PREFERRED_VERSION_tremor ?= "20041119"
-PREFERRED_VERSION_tron ?= "1.0.0"
-PREFERRED_VERSION_tscalib ?= "0.0.1-3"
-PREFERRED_VERSION_tsclient ?= "0.140"
-PREFERRED_VERSION_tslib ?= "1.0"
-PREFERRED_VERSION_ttf-bitstream-vera ?= "1.10"
-PREFERRED_VERSION_ttf-dejavu ?= "2.18"
-PREFERRED_VERSION_ttf-gentium ?= "1.02"
-PREFERRED_VERSION_ttf-hunkyfonts ?= "0.3.0"
-PREFERRED_VERSION_ttf-liberation ?= "0.2"
-PREFERRED_VERSION_ttf-sazanami ?= "20040629"
-PREFERRED_VERSION_ttyconv ?= "0.2.3"
-PREFERRED_VERSION_ttyrec ?= "1.0.8"
-PREFERRED_VERSION_tuxnes ?= "0.75"
-PREFERRED_VERSION_twin ?= "0.4.6"
-PREFERRED_VERSION_twisted ?= "2.5.0"
-PREFERRED_VERSION_twm ?= "1.0.3"
-PREFERRED_VERSION_twutils ?= "0.2"
-PREFERRED_VERSION_txdrug ?= "0.1"
-PREFERRED_VERSION_tximage ?= "0.2"
-PREFERRED_VERSION_tzcode-native ?= "2007e"
-PREFERRED_VERSION_tzdata ?= "2007e"
-PREFERRED_VERSION_u-boot ?= "1.2.0"
-PREFERRED_VERSION_u-boot-omap2430sdp ?= "1.1.4"
-PREFERRED_VERSION_u2nl ?= "1.3"
-PREFERRED_VERSION_uae4all ?= "0.7.1"
-PREFERRED_VERSION_ubahnnav ?= "0.4.1"
-PREFERRED_VERSION_u-boot-utils ?= "1.2.0"
-PREFERRED_VERSION_udev ?= "092"
-PREFERRED_VERSION_udev-hostap-cs-vcc-workaround ?= "1.0"
-PREFERRED_VERSION_udhcp ?= "0.9.8"
-PREFERRED_VERSION_ufraw ?= "0.12"
-PREFERRED_VERSION_uicmoc-native ?= "2.3.10"
-PREFERRED_VERSION_uicmoc3-native ?= "3.3.5"
-PREFERRED_VERSION_uicmoc4-native ?= "4.3.3"
-PREFERRED_VERSION_uim ?= "1.3.1"
-PREFERRED_VERSION_uim-native ?= "1.3.1"
-PREFERRED_VERSION_uim-tomoe-gtk ?= "0.2.0"
-PREFERRED_VERSION_ulxmlrpcpp ?= "1.5.2"
-PREFERRED_VERSION_uml-utilities ?= "20040406"
-PREFERRED_VERSION_unfreeze ?= "1.0"
-PREFERRED_VERSION_unionfs-modules ?= "1.0.13"
-PREFERRED_VERSION_unionfs-utils ?= "1.0.13"
-PREFERRED_VERSION_unionroot ?= "0.1.1"
-PREFERRED_VERSION_units ?= "1.80"
-PREFERRED_VERSION_unixbench ?= "4.1.0"
-PREFERRED_VERSION_unrar ?= "3.4.3"
-PREFERRED_VERSION_unrar-native ?= "3.4.3"
-PREFERRED_VERSION_unzip ?= "552"
-PREFERRED_VERSION_unzip-native ?= "552"
-PREFERRED_VERSION_update-alternatives-cworth ?= "0.99.154"
-PREFERRED_VERSION_update-alternatives-cworth-native ?= "0.99.154"
-PREFERRED_VERSION_update-alternatives-dpkg ?= "1.13.22"
-PREFERRED_VERSION_update-alternatives-dpkg-native ?= "1.13.22"
-PREFERRED_VERSION_update-modules ?= "1.0"
-PREFERRED_VERSION_upstart ?= "0.3.8"
-PREFERRED_VERSION_uqm ?= "0.5.0"
-PREFERRED_VERSION_usb-gadget-mode ?= "0.0.2"
-PREFERRED_VERSION_usbutils ?= "0.70"
-PREFERRED_VERSION_usbview ?= "1.0"
-PREFERRED_VERSION_ushare ?= "0.9.7"
-PREFERRED_VERSION_usound ?= "0.2.0"
-PREFERRED_VERSION_usrp ?= "0.12"
-PREFERRED_VERSION_util-linux ?= "2.12r"
-PREFERRED_VERSION_util-linux-native ?= "2.12r"
-PREFERRED_VERSION_util-macros ?= "1.1.5"
-PREFERRED_VERSION_util-macros-native ?= "1.1.5"
-PREFERRED_VERSION_uucp ?= "1.07"
-PREFERRED_VERSION_v4l2apps ?= "20020317"
-PREFERRED_VERSION_vde ?= "2.0.2"
-PREFERRED_VERSION_vectoroids ?= "1.1.0"
-PREFERRED_VERSION_videoplayer ?= "0.1"
-PREFERRED_VERSION_videoproto ?= "2.2.2"
-PREFERRED_VERSION_vim ?= "7.0"
-PREFERRED_VERSION_vim-tiny ?= "7.0"
-PREFERRED_VERSION_vino ?= "2.16.0"
-PREFERRED_VERSION_visiscript ?= "0.4.3"
-PREFERRED_VERSION_visual-boot ?= "0.0.1"
-PREFERRED_VERSION_vlan ?= "1.9"
-PREFERRED_VERSION_vlc-gpe ?= "0.8.4"
-PREFERRED_VERSION_vmedit ?= "0.02"
-PREFERRED_VERSION_vnc ?= "3.3.7"
-PREFERRED_VERSION_vochistory ?= "0.1"
-PREFERRED_VERSION_voicecall ?= "0.1"
-PREFERRED_VERSION_void11 ?= "0.2.0"
-PREFERRED_VERSION_vorbis-tools ?= "1.0.1"
-PREFERRED_VERSION_vpnc ?= "0.3.3"
-PREFERRED_VERSION_vsftpd ?= "2.0.5"
-PREFERRED_VERSION_vte ?= "0.16.8"
-PREFERRED_VERSION_vtun ?= "2.6"
-PREFERRED_VERSION_w3cam ?= "0.7.2"
-PREFERRED_VERSION_wakelan ?= "1.1"
-PREFERRED_VERSION_watchdog ?= "5.3.1"
-PREFERRED_VERSION_wbxml2 ?= "0.9.0"
-PREFERRED_VERSION_webcam-server ?= "0.50"
-PREFERRED_VERSION_wget ?= "1.9.1"
-PREFERRED_VERSION_whois ?= "4.5.25"
-PREFERRED_VERSION_wifistix-modules ?= "5.0.16.p0"
-PREFERRED_VERSION_wiggle ?= "0.6"
-PREFERRED_VERSION_wiggle-native ?= "0.6"
-PREFERRED_VERSION_win4 ?= "1.0.1"
-PREFERRED_VERSION_windowswmproto ?= "1.0.3"
-PREFERRED_VERSION_wireshark ?= "0.99.4"
-PREFERRED_VERSION_wlan-ng-modules ?= "0.2.7"
-PREFERRED_VERSION_wlan-ng-utils ?= "0.2.7"
-PREFERRED_VERSION_wmctrl ?= "1.07"
-PREFERRED_VERSION_wpa-gui ?= "0.4.8"
-PREFERRED_VERSION_wpa-supplicant ?= "0.5.5"
-PREFERRED_VERSION_wpa-supplicant-nossl ?= "0.2.6"
-PREFERRED_VERSION_wpa-supplicant-ssl ?= "0.2.6"
-PREFERRED_VERSION_wrt-imagetools-native ?= "1.0"
-PREFERRED_VERSION_wrt-init ?= "1.0"
-PREFERRED_VERSION_wrt-utils ?= "1.0"
-PREFERRED_VERSION_wv ?= "1.2.0"
-PREFERRED_VERSION_wview-sim ?= "3.1.3"
-PREFERRED_VERSION_wview-sim-mysql ?= "3.1.3"
-PREFERRED_VERSION_wview-vpro ?= "3.1.3"
-PREFERRED_VERSION_wview-vpro-mysql ?= "3.1.3"
-PREFERRED_VERSION_wview-wxt510 ?= "3.1.3"
-PREFERRED_VERSION_wview-wxt510-mysql ?= "3.1.3"
-PREFERRED_VERSION_wxwidgets ?= "2.6.3"
-PREFERRED_VERSION_x11perf ?= "1.4.1"
-PREFERRED_VERSION_x11vnc ?= "0.9.3"
-PREFERRED_VERSION_xaos ?= "3.2.3"
-PREFERRED_VERSION_xauth ?= "1.0.2"
-PREFERRED_VERSION_xawtv ?= "3.93"
-PREFERRED_VERSION_xbacklight ?= "1.1"
-PREFERRED_VERSION_xbase-clients ?= "1.0"
-PREFERRED_VERSION_xbitmaps ?= "1.0.1"
-PREFERRED_VERSION_xcb-demo ?= "0.1"
-PREFERRED_VERSION_xcb-proto ?= "1.0"
-PREFERRED_VERSION_xcb-util ?= "0.2"
-PREFERRED_VERSION_xchat ?= "2.8.4"
-PREFERRED_VERSION_xcmiscproto ?= "1.1.2"
-PREFERRED_VERSION_xcmiscproto-native ?= "1.1.2"
-PREFERRED_VERSION_xcursor-transparent-theme ?= "0.1.1"
-PREFERRED_VERSION_xdbedizzy ?= "1.0.2"
-PREFERRED_VERSION_xdemineur ?= "2.1.1"
-PREFERRED_VERSION_xdm ?= "1.1.6"
-PREFERRED_VERSION_xdpyinfo ?= "1.0.2"
-PREFERRED_VERSION_xerces-c ?= "2.7.0"
-PREFERRED_VERSION_xev ?= "1.0.2"
-PREFERRED_VERSION_xextproto ?= "7.0.2"
-PREFERRED_VERSION_xextproto-native ?= "7.0.2"
-PREFERRED_VERSION_xf86-input-evdev ?= "1.1.5"
-PREFERRED_VERSION_xf86-input-keyboard ?= "1.2.2"
-PREFERRED_VERSION_xf86-input-mouse ?= "1.2.2"
-PREFERRED_VERSION_xf86-input-penmount ?= "1.2.0"
-PREFERRED_VERSION_xf86-video-ati ?= "6.6.193"
-PREFERRED_VERSION_xf86-video-fbdev ?= "0.3.1"
-PREFERRED_VERSION_xf86-video-i128 ?= "1.1.0.6"
-PREFERRED_VERSION_xf86-video-i810 ?= "1.6.5"
-PREFERRED_VERSION_xf86-video-newport ?= "0.2.1"
-PREFERRED_VERSION_xf86-video-nsc ?= "2.8.2"
-PREFERRED_VERSION_xf86-video-nv ?= "2.1.3"
-PREFERRED_VERSION_xf86-video-s3 ?= "0.5.0"
-PREFERRED_VERSION_xf86-video-savage ?= "2.1.3"
-PREFERRED_VERSION_xf86-video-siliconmotion ?= "1.5.1"
-PREFERRED_VERSION_xf86-video-sis ?= "0.9.3"
-PREFERRED_VERSION_xf86-video-tdfx ?= "1.3.0"
-PREFERRED_VERSION_xf86-video-trident ?= "1.2.3"
-PREFERRED_VERSION_xf86-video-tseng ?= "1.1.1"
-PREFERRED_VERSION_xf86-video-vesa ?= "1.3.0"
-PREFERRED_VERSION_xf86-video-via ?= "0.2.2"
-PREFERRED_VERSION_xf86-video-vmware ?= "10.14.1"
-PREFERRED_VERSION_xf86-video-voodoo ?= "1.1.1"
-PREFERRED_VERSION_xf86bigfontproto ?= "1.1.2"
-PREFERRED_VERSION_xf86bigfontproto-native ?= "1.1.2"
-PREFERRED_VERSION_xf86dga ?= "1.0.2"
-PREFERRED_VERSION_xf86dgaproto ?= "2.0.3"
-PREFERRED_VERSION_xf86driproto ?= "2.0.3"
-PREFERRED_VERSION_xf86miscproto ?= "0.9.2"
-PREFERRED_VERSION_xf86rushproto ?= "1.1.2"
-PREFERRED_VERSION_xf86vidmodeproto ?= "2.2.2"
-PREFERRED_VERSION_xfcalendar ?= "4.2.3"
-PREFERRED_VERSION_xfce-mcs-manager ?= "4.4.1"
-PREFERRED_VERSION_xfce-mcs-plugins ?= "4.4.1"
-PREFERRED_VERSION_xfce-terminal ?= "0.2.6"
-PREFERRED_VERSION_xfce4-appfinder ?= "4.4.1"
-PREFERRED_VERSION_xfce4-dev-tools ?= "4.4.0"
-PREFERRED_VERSION_xfce4-icon-theme ?= "4.4.1"
-PREFERRED_VERSION_xfce4-mixer ?= "4.4.1"
-PREFERRED_VERSION_xfce4-panel ?= "4.4.1"
-PREFERRED_VERSION_xfce4-session ?= "4.4.1"
-PREFERRED_VERSION_xfdesktop ?= "4.4.1"
-PREFERRED_VERSION_xffm ?= "4.3.99.2"
-PREFERRED_VERSION_xfonts-xorg ?= "6.8"
-PREFERRED_VERSION_xfprint ?= "4.4.1"
-PREFERRED_VERSION_xfs ?= "1.0.4"
-PREFERRED_VERSION_xfsprogs ?= "2.8.16"
-PREFERRED_VERSION_xfwm4 ?= "4.4.1"
-PREFERRED_VERSION_xfwm4-themes ?= "4.4.1"
-PREFERRED_VERSION_xhost ?= "1.0.2"
-PREFERRED_VERSION_xineramaproto ?= "1.1.2"
-PREFERRED_VERSION_xinetd ?= "2.3.13"
-PREFERRED_VERSION_xinit ?= "1.0.5"
-PREFERRED_VERSION_xkbd ?= "0.8.15"
-PREFERRED_VERSION_xmame ?= "0.100"
-PREFERRED_VERSION_xmame-tiny ?= "0.100"
-PREFERRED_VERSION_xmms ?= "1.2.10"
-PREFERRED_VERSION_xmms-embedded ?= "20040327"
-PREFERRED_VERSION_xmms-mad ?= "0.10"
-PREFERRED_VERSION_xmms-tremor ?= "1.0"
-PREFERRED_VERSION_xmodmap ?= "1.0.3"
-PREFERRED_VERSION_xmonobut ?= "0.4.1"
-PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
-PREFERRED_VERSION_xorg-headers-native ?= "1.0"
-PREFERRED_VERSION_xorg-sgml-doctools ?= "1.2"
-PREFERRED_VERSION_xoscope ?= "1.12"
-PREFERRED_VERSION_xournal ?= "0.4.0.1"
-PREFERRED_VERSION_xpext ?= "1.0-5"
-PREFERRED_VERSION_xprint ?= "0.9.001"
-PREFERRED_VERSION_xprop ?= "1.0.2"
-PREFERRED_VERSION_xproto ?= "7.0.10"
-PREFERRED_VERSION_xproto-native ?= "7.0.10"
-PREFERRED_VERSION_xproxymanagementprotocol ?= "1.0.2"
-PREFERRED_VERSION_xqt ?= "0.0.9"
-PREFERRED_VERSION_xqt2 ?= "20060509"
-PREFERRED_VERSION_xrandr ?= "1.2.2"
-PREFERRED_VERSION_xrdb ?= "1.0.4"
-PREFERRED_VERSION_xscreensaver ?= "4.22"
-PREFERRED_VERSION_xscrnsaverh ?= "1.0"
-PREFERRED_VERSION_xserver-common ?= "1.18"
-PREFERRED_VERSION_xserver-kdrive ?= "1.3.0.0"
-PREFERRED_VERSION_xserver-kdrive-common ?= "0.1"
-PREFERRED_VERSION_xserver-nodm-init ?= "1.0"
-PREFERRED_VERSION_xserver-xorg ?= "1.3.0.0"
-PREFERRED_VERSION_xset ?= "1.0.3"
-PREFERRED_VERSION_xsetroot ?= "1.0.2"
-PREFERRED_VERSION_xsp ?= "1.0.0-8"
-PREFERRED_VERSION_xst ?= "0.15"
-PREFERRED_VERSION_xstroke ?= "0.6"
-PREFERRED_VERSION_xterm ?= "207"
-PREFERRED_VERSION_xtrans ?= "1.0.4"
-PREFERRED_VERSION_xtrans-native ?= "1.0.3"
-PREFERRED_VERSION_xtscal ?= "0.6.3"
-PREFERRED_VERSION_xvinfo ?= "1.0.2"
-PREFERRED_VERSION_yeaphone ?= "0.1"
-PREFERRED_VERSION_yp-tools ?= "2.9"
-PREFERRED_VERSION_ypbind-mt ?= "1.19"
-PREFERRED_VERSION_ypserv ?= "2.17"
-PREFERRED_VERSION_zauralign ?= "1.0.2"
-PREFERRED_VERSION_zaurus-tarball-native ?= "1.0"
-PREFERRED_VERSION_zbedic ?= "1.0"
-PREFERRED_VERSION_zbench ?= "2.0"
-PREFERRED_VERSION_zcip ?= "4"
-PREFERRED_VERSION_zd1211 ?= "r85"
-PREFERRED_VERSION_zd1211-firmware ?= "1.3"
-PREFERRED_VERSION_zddice ?= "1.0.0"
-PREFERRED_VERSION_zeroconf ?= "0.9"
-PREFERRED_VERSION_zgscore ?= "1.0.2"
-PREFERRED_VERSION_zile ?= "2.2.15"
-PREFERRED_VERSION_zip ?= "2.32"
-PREFERRED_VERSION_zip-native ?= "2.32"
-PREFERRED_VERSION_zipsc ?= "0.4.3"
-PREFERRED_VERSION_ziq ?= "1.1ern"
-PREFERRED_VERSION_zlapspeed ?= "1.0.0"
-PREFERRED_VERSION_zlib ?= "1.2.3"
-PREFERRED_VERSION_zlib-native ?= "1.2.3"
-PREFERRED_VERSION_zmerlin ?= "0.9.1"
-PREFERRED_VERSION_zope ?= "3.3.1"
-PREFERRED_VERSION_zrally ?= "0.90"
-PREFERRED_VERSION_zrev7 ?= "1.0.1"
-PREFERRED_VERSION_zroadmap ?= "1.1.0"
-PREFERRED_VERSION_zsafe ?= "2.1.3"
-PREFERRED_VERSION_zsh ?= "4.1.1"
-PREFERRED_VERSION_zshopi ?= "0.2"
-PREFERRED_VERSION_zsubhunt ?= "1.0.0ern"
-PREFERRED_VERSION_ztappy ?= "0.9.3ern"
-PREFERRED_VERSION_zten ?= "1.6.2"
-PREFERRED_VERSION_zuc ?= "1.1.2ern"
-PREFERRED_VERSION_zudoku ?= "1.1"
-PREFERRED_VERSION_zziplib ?= "0.10.82"
diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc
new file mode 100644
index 0000000000..b8685a578e
--- /dev/null
+++ b/conf/distro/include/angstrom-2008-preferred-versions.inc
@@ -0,0 +1,8 @@
+PREFERRED_VERSION_dbus = "1.1.4"
+PREFERRED_VERSION_busybox = "1.9.1"
+PREFERRED_VERSION_gst-pulse = "0.9.7"
+PREFERRED_VERSION_libtool = "1.5.10"
+PREFERRED_VERSION_pulseaudio = "0.9.9"
+PREFERRED_VERSION_udev = "118"
+PREFERRED_VERSION_vte = "0.16.10"
+
diff --git a/conf/distro/include/angstrom-glibc.inc b/conf/distro/include/angstrom-glibc.inc
index 1502833389..d14c6f1b19 100644
--- a/conf/distro/include/angstrom-glibc.inc
+++ b/conf/distro/include/angstrom-glibc.inc
@@ -3,6 +3,7 @@ PREFERRED_PROVIDER_virtual/libiconv ?= "glibc"
PREFERRED_PROVIDER_virtual/libintl ?= "glibc"
PREFERRED_PROVIDER_virtual/libc ?= "glibc"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial ?= "glibc-initial"
+PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers"
TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}"
diff --git a/conf/distro/include/angstrom-uclibc.inc b/conf/distro/include/angstrom-uclibc.inc
index 59d40957d5..7e8e60d7dd 100644
--- a/conf/distro/include/angstrom-uclibc.inc
+++ b/conf/distro/include/angstrom-uclibc.inc
@@ -14,5 +14,10 @@ TARGET_OS = "${@['${TARGET_OS_UC}', 'uclinux-uclibc'][bb.data.getVar('TARGET_ARC
#Please see http://free-electrons.com/doc/embedded_linux_optimizations/img47.html for some more info
FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os"
BUILD_OPTIMIZATION = "-Os"
+
+#Gcc will die with 'internal consistency error when using the above optimizations
+FULL_OPTIMIZATION_avr32 = ""
+BUILD_OPTIMIZATION_avr32 = ""
+
CXXFLAGS += "-fvisibility-inlines-hidden"
diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc
index aff3ba90d1..d55b5bf3db 100644
--- a/conf/distro/include/angstrom.inc
+++ b/conf/distro/include/angstrom.inc
@@ -2,6 +2,8 @@
#@NAME: Angstrom
#@DESCRIPTION: Release independent distribution configuration for Angstrom
+# Preserve original DISTRO value
+USERDISTRO := "${DISTRO}"
DISTRO = "angstrom"
DISTRO_NAME = "Angstrom"
@@ -10,6 +12,7 @@ TARGET_VENDOR = "-angstrom"
# Can be "glibc", "eglibc" or "uclibc"
ANGSTROM_MODE ?= "glibc"
+CACHE = "${TMPDIR}/cache/${ANGSTROM_MODE}/${MACHINE}"
DEPLOY_DIR = "${TMPDIR}/deploy/${ANGSTROM_MODE}"
require conf/distro/include/angstrom-${ANGSTROM_MODE}.inc
@@ -50,6 +53,8 @@ TARGET_FPU_arm ?= "soft"
TARGET_FPU_armeb ?= "soft"
TARGET_FPU_ixp4xx ?= "soft"
+TARGET_FPU_dht-walnut ?= "soft"
+
#Set the right arch for the feeds
#Alphabetically sorted
diff --git a/conf/distro/include/insane-srcrevs.inc b/conf/distro/include/insane-srcrevs.inc
index e039a144d3..f9941c8a9a 100644
--- a/conf/distro/include/insane-srcrevs.inc
+++ b/conf/distro/include/insane-srcrevs.inc
@@ -9,6 +9,7 @@ SRCREV_pn-ezxd ?= "${AUTOREV}"
SRCREV_pn-fbgrab-viewer-native ?= "${AUTOREV}"
SRCREV_pn-fstests ?= "${AUTOREV}"
SRCREV_pn-gnuradio ?= "${AUTOREV}"
+SRCREV_pn-gtkhtml2 ?= "${AUTOREV}"
SRCREV_pn-hildon-1 ?= "${AUTOREV}"
SRCREV_pn-kismet ?= "${AUTOREV}"
SRCREV_pn-kismet-newcore ?= "${AUTOREV}"
@@ -81,6 +82,8 @@ SRCREV_pn-openmoko-today2-folders ?= "${AUTOREV}"
SRCREV_pn-openmoko-worldclock2 ?= "${AUTOREV}"
SRCREV_pn-openocd ?= "${AUTOREV}"
SRCREV_pn-openocd-native ?= "${AUTOREV}"
+SRCREV_pn-opkg ?= "${AUTOREV}"
+SRCREV_pn-opkg-native ?= "${AUTOREV}"
SRCREV_pn-psplash ?= "${AUTOREV}"
SRCREV_pn-settings-daemon ?= "${AUTOREV}"
SRCREV_pn-sjf2410-linux-native ?= "${AUTOREV}"
diff --git a/conf/distro/include/preferred-gpe-versions-2.8.inc b/conf/distro/include/preferred-gpe-versions-2.8.inc
index fb9e2815ba..55e51409be 100644
--- a/conf/distro/include/preferred-gpe-versions-2.8.inc
+++ b/conf/distro/include/preferred-gpe-versions-2.8.inc
@@ -32,7 +32,7 @@ PREFERRED_VERSION_libxsettings-client ?= "0.17"
PREFERRED_VERSION_gpe-icons ?= "0.25"
-PREFERRED_VERSION_gpe-login ?= "0.90"
+PREFERRED_VERSION_gpe-login ?= "0.91"
PREFERRED_VERSION_gpe-session-scripts ?= "0.67"
PREFERRED_VERSION_gpe-su ?= "0.19"
PREFERRED_VERSION_keylaunch ?= "2.0.10"
diff --git a/conf/distro/include/preferred-om-2008-versions.inc b/conf/distro/include/preferred-om-2008-versions.inc
index d7209be624..b801536586 100644
--- a/conf/distro/include/preferred-om-2008-versions.inc
+++ b/conf/distro/include/preferred-om-2008-versions.inc
@@ -1,7 +1,13 @@
-PREFERRED_VERSION_vte = "0.16.10"
-PREFERRED_VERSION_dbus = "1.1.1"
-PREFERRED_VERSION_gpsdrive = "2.10pre4"
PREFERRED_VERSION_asterisk = "1.4.17"
+PREFERRED_VERSION_busybox = "1.9.1"
+PREFERRED_VERSION_dbus = "1.1.4"
PREFERRED_VERSION_gnash = "0.8.1"
+PREFERRED_VERSION_gpsdrive = "2.10pre4"
+PREFERRED_VERSION_gst-pulse = "0.9.7"
+PREFERRED_VERSION_libtool = "1.5.24"
PREFERRED_VERSION_mono = "1.2.6"
PREFERRED_VERSION_mono-mcs-intermediate = "1.2.6"
+PREFERRED_VERSION_mono-native = "1.2.6"
+PREFERRED_VERSION_pulseaudio = "0.9.9"
+PREFERRED_VERSION_udev = "118"
+PREFERRED_VERSION_vte = "0.16.10"
diff --git a/conf/distro/include/preferred-opie-versions-1.2.4-pre.inc b/conf/distro/include/preferred-opie-versions-1.2.4-pre.inc
index 324f4dd80c..0a95b1ff67 100644
--- a/conf/distro/include/preferred-opie-versions-1.2.4-pre.inc
+++ b/conf/distro/include/preferred-opie-versions-1.2.4-pre.inc
@@ -3,7 +3,7 @@
QTE_VERSION ?= "2.3.10"
PALMTOP_USE_MULTITHREADED_QT ?= "yes"
-OPIE_SRCDATE ?= "20070727"
+OPIE_SRCDATE ?= "20080127"
OPIE_VERSION ?= "1.2.3+cvs${OPIE_SRCDATE}"
OPIE_CVS_PV ?= "1.2.3+cvs${OPIE_SRCDATE}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.0.inc b/conf/distro/include/preferred-xorg-versions-X11R7.0.inc
index 6db9d92f71..5a391aa45a 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.0.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.0.inc
@@ -339,3 +339,9 @@ PREFERRED_VERSION_util-macros-native = "X11R7.0-1.0.1"
PREFERRED_VERSION_util-macros = "X11R7.0-1.0.1"
PREFERRED_VERSION_xorg-cf-files = "X11R7.0-1.0.1"
PREFERRED_VERSION_xserver-xorg = "X11R7.0-1.0.1"
+
+# Unreleased Packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.1.inc b/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
index 782549589d..c387161577 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.1.inc
@@ -183,3 +183,9 @@ PREFERRED_VERSION_util-macros ?= "X11R7.1-1.0.2"
PREFERRED_VERSION_xorg-cf-files ?= "X11R7.1-1.0.2"
PREFERRED_VERSION_xserver-kdrive ?= "X11R7.1-1.1.0"
PREFERRED_VERSION_xserver-xorg ?= "X11R7.1-1.1.0"
+
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.2.inc b/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
index 59a481a104..dc34a99340 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.2.inc
@@ -269,3 +269,8 @@ PREFERRED_VERSION_xorg-cf-files ?= "X11R7.1-1.0.2"
PREFERRED_VERSION_xserver-kdrive ?= "1.2.0"
PREFERRED_VERSION_xserver-xorg ?= "1.2.0"
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.3.inc b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
index d7e19284bc..648472e9b6 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
@@ -280,3 +280,8 @@ PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
PREFERRED_VERSION_xserver-kdrive ?= "1.4"
PREFERRED_VERSION_xserver-xorg ?= "1.4"
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.4.inc b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc
new file mode 100644
index 0000000000..4af2405aa7
--- /dev/null
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.4.inc
@@ -0,0 +1,292 @@
+# see http://www.x.org/wiki/Releases/7.4
+# WORK IN PROGRESS, 7.4 will be released on 2008-03-01
+
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+
+PREFERRED_PROVIDER_libxext ?= "libxext"
+PREFERRED_PROVIDER_xext ?= "libxext"
+PREFERRED_PROVIDER_libxi ?= "libxi"
+PREFERRED_PROVIDER_libxft ?= "libxft"
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
+PREFERRED_PROVIDER_libxpm ?= "libxpm"
+PREFERRED_PROVIDER_xpm ?= "libxpm"
+PREFERRED_PROVIDER_libxt ?= "libxt"
+PREFERRED_PROVIDER_libxaw ?= "libxaw"
+PREFERRED_PROVIDER_libice ?= "libice"
+PREFERRED_PROVIDER_libxrender ?= "libxrender"
+PREFERRED_PROVIDER_libxcursor ?= "libxcursor"
+PREFERRED_PROVIDER_xextensions ?= "xextensions"
+PREFERRED_PROVIDER_xproto ?= "xproto"
+PREFERRED_PROVIDER_x11 ?= "libx11"
+PREFERRED_PROVIDER_libxv ?= "libxv"
+PREFERRED_PROVIDER_xft ?= "libxft"
+PREFERRED_PROVIDER_libxrandr ?= "libxrandr"
+PREFERRED_PROVIDER_libxdamage ?= "libxdamage"
+PREFERRED_PROVIDER_libxcomposite ?= "libxcomposite"
+PREFERRED_PROVIDER_libxfixes ?= "libxfixes"
+PREFERRED_PROVIDER_libxinerama ?= "libxinerama"
+PREFERRED_PROVIDER_libxxf86vm ?= "libxxf86vm"
+PREFERRED_PROVIDER_libxmu ?= "libxmu"
+PREFERRED_PROVIDER_libsm ?= "libsm"
+PREFERRED_PROVIDER_xrandr ?= "xrandr"
+PREFERRED_PROVIDER_xserver ?= "xserver-xorg"
+PREFERRED_PROVIDER_virtual/xorg ?= "xserver-xorg"
+
+PREFERRED_VERSION_task-xorg ?= "X11R7.4"
+
+# app
+PREFERRED_VERSION_appres ?= "1.0.1"
+PREFERRED_VERSION_bdftopcf ?= "1.0.1"
+PREFERRED_VERSION_beforelight ?= "1.0.3"
+PREFERRED_VERSION_bitmap ?= "1.0.3"
+PREFERRED_VERSION_editres ?= "1.0.3"
+PREFERRED_VERSION_fontosfnt ?= "1.0.3"
+PREFERRED_VERSION_fslsfonts ?= "1.0.1"
+PREFERRED_VERSION_fstobdf ?= "1.0.2"
+PREFERRED_VERSION_iceauth ?= "1.0.2"
+PREFERRED_VERSION_ico ?= "1.0.2"
+PREFERRED_VERSION_lbxproxy ?= "1.0.1"
+PREFERRED_VERSION_listres ?= "1.0.1"
+PREFERRED_VERSION_luit ?= "1.0.3"
+PREFERRED_VERSION_mkfontdir-native ?= "1.0.3"
+PREFERRED_VERSION_mkfontdir ?= "1.0.3"
+PREFERRED_VERSION_mkfontscale ?= "1.0.3"
+PREFERRED_VERSION_oclock ?= "1.0.1"
+PREFERRED_VERSION_proxymngr ?= "1.0.1"
+PREFERRED_VERSION_rgb ?= "1.0.1"
+PREFERRED_VERSION_rstart ?= "1.0.2"
+PREFERRED_VERSION_scripts ?= "1.0.1"
+PREFERRED_VERSION_sessreg ?= "1.0.3"
+PREFERRED_VERSION_setxkbmap ?= "1.0.4"
+PREFERRED_VERSION_smproxy ?= "1.0.2"
+PREFERRED_VERSION_twm ?= "1.0.3"
+PREFERRED_VERSION_viewres ?= "1.0.1"
+PREFERRED_VERSION_x11perf ?= "1.4.1"
+PREFERRED_VERSION_xauth ?= "1.0.2"
+PREFERRED_VERSION_xbacklight ?= "1.1"
+PREFERRED_VERSION_xbiff ?= "1.0.1"
+PREFERRED_VERSION_xcalc ?= "1.0.2"
+PREFERRED_VERSION_xclipboard ?= "1.0.1"
+PREFERRED_VERSION_xclock ?= "1.0.3"
+PREFERRED_VERSION_xcmsdb ?= "1.0.1"
+PREFERRED_VERSION_xconsole ?= "1.0.3"
+PREFERRED_VERSION_xcursorgen ?= "1.0.2"
+PREFERRED_VERSION_xdbedizzy ?= "1.0.2"
+PREFERRED_VERSION_xditview ?= "1.0.1"
+PREFERRED_VERSION_xdm ?= "1.1.6"
+PREFERRED_VERSION_xdpyinfo ?= "1.0.2"
+PREFERRED_VERSION_xdriinfo ?= "1.0.2"
+PREFERRED_VERSION_xedit ?= "1.0.2"
+PREFERRED_VERSION_xev ?= "1.0.2"
+PREFERRED_VERSION_xeyes ?= "1.0.1"
+PREFERRED_VERSION_xxf86dga ?= "1.0.2"
+PREFERRED_VERSION_xfd ?= "1.0.1"
+PREFERRED_VERSION_xfindproxy ?= "1.0.1"
+PREFERRED_VERSION_xfontsel ?= "1.0.2"
+PREFERRED_VERSION_xfs ?= "1.0.5"
+PREFERRED_VERSION_xfsinfo ?= "1.0.1"
+PREFERRED_VERSION_xfwp ?= "1.0.1"
+PREFERRED_VERSION_xgamma ?= "1.0.2"
+PREFERRED_VERSION_xgc ?= "1.0.1"
+PREFERRED_VERSION_xhost ?= "1.0.2"
+PREFERRED_VERSION_xinit ?= "1.0.7"
+PREFERRED_VERSION_xinput ?= "1.3.0"
+PREFERRED_VERSION_xkbcomp ?= "1.0.3"
+PREFERRED_VERSION_xkbevd ?= "1.0.2"
+PREFERRED_VERSION_xkbprint ?= "1.0.1"
+PREFERRED_VERSION_xkbutils ?= "1.0.1"
+PREFERRED_VERSION_xkill ?= "1.0.1"
+PREFERRED_VERSION_xload ?= "1.0.2"
+PREFERRED_VERSION_xlogo ?= "1.0.1"
+PREFERRED_VERSION_xlsatoms ?= "1.0.1"
+PREFERRED_VERSION_xlsclients ?= "1.0.1"
+PREFERRED_VERSION_xlsfonts ?= "1.0.2"
+PREFERRED_VERSION_xmag ?= "1.0.2"
+PREFERRED_VERSION_xman ?= "1.0.3"
+PREFERRED_VERSION_xmessage ?= "1.0.2"
+PREFERRED_VERSION_xmh ?= "1.0.1"
+PREFERRED_VERSION_xmodmap ?= "1.0.3"
+PREFERRED_VERSION_xmore ?= "1.0.1"
+PREFERRED_VERSION_xphelloworld ?= "1.0.1"
+PREFERRED_VERSION_xplsprinters ?= "1.0.1"
+PREFERRED_VERSION_xpr ?= "1.0.2"
+PREFERRED_VERSION_xprehashprinterlist ?= "1.0.1"
+PREFERRED_VERSION_xprop ?= "1.0.3"
+PREFERRED_VERSION_xrandr ?= "1.2.2"
+PREFERRED_VERSION_xrdb ?= "1.0.4"
+PREFERRED_VERSION_xrefresh ?= "1.0.2"
+PREFERRED_VERSION_xrx ?= "1.0.1"
+PREFERRED_VERSION_xset ?= "1.0.3"
+PREFERRED_VERSION_xsetmode ?= "1.0.0"
+PREFERRED_VERSION_xsetpointer ?= "1.0.1"
+PREFERRED_VERSION_xsetroot ?= "1.0.2"
+PREFERRED_VERSION_xsm ?= "1.0.1"
+PREFERRED_VERSION_xstdcmap ?= "1.0.1"
+PREFERRED_VERSION_xtrap ?= "1.0.2"
+PREFERRED_VERSION_xvidtune ?= "1.0.1"
+PREFERRED_VERSION_xvinfo ?= "1.0.2"
+PREFERRED_VERSION_xwd ?= "1.0.1"
+PREFERRED_VERSION_xwininfo ?= "1.0.3"
+PREFERRED_VERSION_xwud ?= "1.0.1"
+
+# data
+PREFERRED_VERSION_xbitmaps ?= "1.0.1"
+PREFERRED_VERSION_xcursor-themes ?= "1.0.1"
+
+# doc
+PREFERRED_VERSION_xorg-docs ?= "1.4"
+PREFERRED_VERSION_xorg-sgml-doctools ?= "1.2"
+
+# driver
+PREFERRED_VERSION_xf86-input-acecad ?= "1.2.1"
+PREFERRED_VERSION_xf86-input-aiptek ?= "1.0.1"
+PREFERRED_VERSION_xf86-input-calcomp ?= "1.1.1"
+PREFERRED_VERSION_xf86-input-citron ?= "2.2.1"
+PREFERRED_VERSION_xf86-input-digitaledge ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-dmc ?= "1.1.1"
+PREFERRED_VERSION_xf86-input-dynapro ?= "1.1.1"
+PREFERRED_VERSION_xf86-input-elo2300 ?= "1.1.1"
+PREFERRED_VERSION_xf86-input-elographics ?= "1.0.0.5"
+PREFERRED_VERSION_xf86-input-evdev ?= "1.2.0"
+PREFERRED_VERSION_xf86-input-fpit ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-hyperpen ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-jamstudio ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-joystick ?= "1.3.1"
+PREFERRED_VERSION_xf86-input-keyboard ?= "1.2.2"
+PREFERRED_VERSION_xf86-input-magellan ?= "1.1.1"
+PREFERRED_VERSION_xf86-input-magictouch ?= "1.0.0.5"
+PREFERRED_VERSION_xf86-input-microtouch ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-mouse ?= "1.2.3"
+PREFERRED_VERSION_xf86-input-mutouch ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-palmax ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-penmount ?= "1.2.1"
+PREFERRED_VERSION_xf86-input-spaceorb ?= "1.1.1"
+PREFERRED_VERSION_xf86-input-summa ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-tek4957 ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-ur98 ?= "1.1.0"
+PREFERRED_VERSION_xf86-input-vmmouse ?= "12.4.3"
+PREFERRED_VERSION_xf86-input-void ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-apm ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-ark ?= "0.6.0"
+PREFERRED_VERSION_xf86-video-ast ?= "0.81.0"
+PREFERRED_VERSION_xf86-video-ati ?= "6.6.193"
+PREFERRED_VERSION_xf86-video-chips ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-cirrus ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-cyrix ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-dummy ?= "0.2.0"
+PREFERRED_VERSION_xf86-video-fbdev ?= "0.3.1"
+PREFERRED_VERSION_xf86-video-glide ?= "1.0.0"
+PREFERRED_VERSION_xf86-video-glint ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-i128 ?= "1.1.0.6"
+PREFERRED_VERSION_xf86-video-i740 ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-i810 ?= "1.6.5"
+PREFERRED_VERSION_xf86-video-imstt ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-intel ?= "2.2.0"
+PREFERRED_VERSION_xf86-video-mga ?= "1.4.8"
+PREFERRED_VERSION_xf86-video-neomagic ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-newport ?= "0.2.1"
+PREFERRED_VERSION_xf86-video-nsc ?= "2.8.3"
+PREFERRED_VERSION_xf86-video-nv ?= "2.1.7"
+PREFERRED_VERSION_xf86-video-radeonhd ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-rendition ?= "4.1.3"
+PREFERRED_VERSION_xf86-video-s3 ?= "0.5.0"
+PREFERRED_VERSION_xf86-video-s3virge ?= "1.9.1"
+PREFERRED_VERSION_xf86-video-savage ?= "2.1.3"
+PREFERRED_VERSION_xf86-video-siliconmotion ?= "1.4.2"
+PREFERRED_VERSION_xf86-video-sis ?= "0.9.4"
+PREFERRED_VERSION_xf86-video-sisusb ?= "0.8.1"
+PREFERRED_VERSION_xf86-video-sunbw2 ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-suncg14 ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-suncg3 ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-suncg6 ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-sunffb ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-sunleo ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-suntcx ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-tdfx ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-tga ?= "1.1.0"
+PREFERRED_VERSION_xf86-video-trident ?= "1.2.3"
+PREFERRED_VERSION_xf86-video-tseng ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-v4l ?= "0.1.1"
+PREFERRED_VERSION_xf86-video-vermilion ?= "1.0.0"
+PREFERRED_VERSION_xf86-video-vesa ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-vga ?= "4.1.0"
+PREFERRED_VERSION_xf86-video-via ?= "0.2.2"
+PREFERRED_VERSION_xf86-video-vmware ?= "10.15.2"
+PREFERRED_VERSION_xf86-video-voodoo ?= "1.1.1"
+
+# font
+PREFERRED_VERSION_encodings ?= "1.0.2"
+PREFERRED_VERSION_font-screen-cyrillic ?= "1.0.1"
+PREFERRED_VERSION_font-util-native ?= "1.0.1"
+PREFERRED_VERSION_font-util ?= "1.0.1"
+
+# lib
+PREFERRED_VERSION_diet-x11 ?= "1.1.3"
+PREFERRED_VERSION_libdmx ?= "1.0.2"
+PREFERRED_VERSION_libfontenc ?= "1.0.4"
+PREFERRED_VERSION_libice ?= "1.0.4"
+PREFERRED_VERSION_liblbxutil ?= "1.0.1"
+PREFERRED_VERSION_libsm ?= "1.0.3"
+PREFERRED_VERSION_libx11 ?= "1.1.3"
+PREFERRED_VERSION_libx11-native ?= "1.1.1"
+PREFERRED_VERSION_libxau ?= "1.0.3"
+PREFERRED_VERSION_libxaw ?= "1.0.4"
+PREFERRED_VERSION_libxcomposite ?= "0.4.0"
+PREFERRED_VERSION_libxcursor ?= "1.1.9"
+PREFERRED_VERSION_libxdamage ?= "1.0.4"
+PREFERRED_VERSION_libxdmcp-native ?= "1.0.2"
+PREFERRED_VERSION_libxdmcp ?= "1.0.2"
+PREFERRED_VERSION_libxevie ?= "1.0.2"
+PREFERRED_VERSION_libxext ?= "1.0.3"
+PREFERRED_VERSION_libxfixes ?= "4.0.3"
+PREFERRED_VERSION_libxfont ?= "1.3.1"
+PREFERRED_VERSION_libxfontcache ?= "1.0.4"
+PREFERRED_VERSION_libxi ?= "1.1.3"
+PREFERRED_VERSION_libxinerama ?= "1.0.2"
+PREFERRED_VERSION_libxkbfile ?= "1.0.4"
+PREFERRED_VERSION_libxkbui ?= "1.0.2"
+PREFERRED_VERSION_libxmu ?= "1.0.4"
+PREFERRED_VERSION_libxpm ?= "3.5.7"
+PREFERRED_VERSION_libxrandr ?= "1.2.2"
+PREFERRED_VERSION_libxrender ?= "0.9.4"
+PREFERRED_VERSION_libxres ?= "1.0.3"
+PREFERRED_VERSION_libxscrnsaver ?= "1.1.2"
+PREFERRED_VERSION_libxt ?= "1.0.5"
+PREFERRED_VERSION_libxtst ?= "1.0.3"
+PREFERRED_VERSION_libxvmc ?= "1.0.4"
+PREFERRED_VERSION_libxxf86dga ?= "1.0.2"
+PREFERRED_VERSION_libxxf86misc ?= "1.0.1"
+PREFERRED_VERSION_libxxf86vm ?= "1.0.1"
+PREFERRED_VERSION_xtrans ?= "1.0.4"
+
+# proto
+PREFERRED_VERSION_compositeproto ?= "0.4"
+PREFERRED_VERSION_damageproto ?= "1.1.0"
+PREFERRED_VERSION_fixesproto ?= "4.0"
+PREFERRED_VERSION_glproto ?= "1.4.9"
+PREFERRED_VERSION_inputproto ?= "1.4.2.1"
+PREFERRED_VERSION_kbproto ?= "1.0.3"
+PREFERRED_VERSION_randrproto ?= "1.2.1"
+PREFERRED_VERSION_renderproto ?= "0.9.3"
+PREFERRED_VERSION_scrnsaverproto ?= "1.1.0"
+PREFERRED_VERSION_xf86dgaproto ?= "2.0.3"
+PREFERRED_VERSION_xproto-native ?= "7.0.11"
+PREFERRED_VERSION_xproto ?= "7.0.11"
+
+# util
+PREFERRED_VERSION_gccmakedep ?= "1.0.2"
+PREFERRED_VERSION_imake ?= "1.0.2"
+PREFERRED_VERSION_makedepend ?= "1.0.1"
+PREFERRED_VERSION_util-macros-native ?= "1.1.5"
+PREFERRED_VERSION_util-macros ?= "1.1.5"
+PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
+
+# xserver
+PREFERRED_VERSION_xserver-kdrive ?= "1.4"
+PREFERRED_VERSION_xserver-xorg ?= "1.4"
+
+# Unreleased packages
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/preferred-xorg-versions.inc b/conf/distro/include/preferred-xorg-versions.inc
index f34b29f147..05136138fc 100644
--- a/conf/distro/include/preferred-xorg-versions.inc
+++ b/conf/distro/include/preferred-xorg-versions.inc
@@ -109,3 +109,7 @@ PREFERRED_VERSION_xtrans ?= "1.0.3"
PREFERRED_VERSION_xtrans-native ?= "1.0.3"
PREFERRED_VERSION_xinit ?= "1.0.4"
PREFERRED_VERSION_xev ?= "1.0.2"
+SRCREV_pn-libxcalibrate ?= "7b8e29186097170e930de634a4a68072558aa056"
+PV_pn-libxcalibrate ?= "0.0-oe1-${SRCREV}"
+SRCREV_pn-calibrateproto ?= "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
+PV_pn-calibrateproto ?= "0.0-oe1-${SRCREV}"
diff --git a/conf/distro/include/sane-srcdates.inc b/conf/distro/include/sane-srcdates.inc
index cff6d7316b..5a1e8f2758 100644
--- a/conf/distro/include/sane-srcdates.inc
+++ b/conf/distro/include/sane-srcdates.inc
@@ -46,14 +46,13 @@ SRCDATE_rosetta ?= "20060804"
SRCDATE_gpesyncd ?= "20070701"
# GNOME
-SRCDATE_gconf-dbus ?= "20070512"
SRCDATE_gnome-vfs ?= "20060119"
SRCDATE_gtkhtml2 ?= "20060323"
# Enlightenment Foundation Libraries
# Caution: This is not alphabetically, but (roughly) dependency-sorted.
# Please leave it like that.
-EFL_SRCDATE = "20080117"
+EFL_SRCDATE = "20080216"
SRCDATE_edb-native ?= "${EFL_SRCDATE}"
SRCDATE_edb ?= "${EFL_SRCDATE}"
SRCDATE_eet-native ?= "${EFL_SRCDATE}"
@@ -107,9 +106,9 @@ SRCDATE_entice ?= "${EFL_SRCDATE}"
SRCDATE_entrance ?= "${EFL_SRCDATE}"
SRCDATE_e-utils ?= "${EFL_SRCDATE}"
SRCDATE_e-wm ?= "${EFL_SRCDATE}"
-SRCDATE_enna = "${EFL_SRCDATE}"
-#SRCDATE_enna ?= "${EFL_SRCDATE}"
+SRCDATE_enna ?= "${EFL_SRCDATE}"
SRCDATE_exquisite ?= "${EFL_SRCDATE}"
+SRCDATE_rage ?= "${EFL_SRCDATE}"
# Misc packages, sorted by alphabet
SRCDATE_avetanabt ?= "20060814"
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index 46c90976c8..0cf1788c8c 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -7,6 +7,10 @@
# this is alphabetical!
+# yes, really!
+
+# you know what that means? like... a, b, c, d, e, f, g...
+
SRCREV_pn-aircrack-ng ?= "802"
SRCREV_pn-bfin-uclibc ?= "1857"
SRCREV_pn-contact ?= "1410"
@@ -23,10 +27,12 @@ SRCREV_pn-elf2flt ?= "1786"
SRCREV_pn-epiphany ?= "7650"
SRCREV_pn-fbgrab-viewer-native ?= "1943"
SRCREV_pn-fstests ?= "204"
-SRCREV_pn-gconf-dbus ?= "638"
+SRCREV_pn-gconf-dbus ?= "641"
SRCREV_pn-gnuradio ?= "6377"
SRCREV_pn-gpe-contacts ?= "9312"
-SRCREV_pn-gsm0710muxd ?= "42"
+SRCREV_pn-gpio ?= "4112"
+SRCREV_pn-gsm0710muxd ?= "77"
+SRCREV_pn-gtkhtml2 ?= "1158"
SRCREV_pn-gypsy ?= "56"
SRCREV_pn-hildon-1 ?= "14429"
SRCREV_pn-kismet ?= "2285"
@@ -40,12 +46,14 @@ SRCREV_pn-libmokogsmd2 ?= "3663"
SRCREV_pn-libmokojournal2 ?= "3217"
SRCREV_pn-libmokopanelui2 ?= "3349"
SRCREV_pn-libmokoui2 ?= "3688"
+SRCREV_pn-libw100 ?= "47"
SRCREV_pn-libowl ?= "277"
SRCREV_pn-libxosd ?= "627"
+SRCREV_pn-lightmediascanner ?= "68"
SRCREV_pn-linux-bfin ?= "3758"
SRCREV_pn-linux-hackndev-2.6 ?= "1308"
-SRCREV_pn-linux-ixp4xx ?= "983"
-SRCREV_pn-linux-openmoko ?= "4082"
+SRCREV_pn-linux-ixp4xx ?= "1039"
+SRCREV_pn-linux-openmoko ?= "4102"
SRCREV_pn-llvm-gcc4 ?= "374"
SRCREV_pn-llvm-gcc4-cross ?= "374"
SRCREV_pn-maemo-mapper ?= "118"
@@ -55,8 +63,11 @@ SRCREV_pn-matchbox-keyboard-inputmethod ?= "1739"
SRCREV_pn-matchbox-panel-2 ?= "1626"
SRCREV_pn-moko-gtk-engine ?= "3405"
SRCREV_pn-mpd-alsa ?= "6952"
+SRCREV_pn-mplayer ?= "24587"
SRCREV_pn-multitap-pad ?= "337"
SRCREV_pn-neod ?= "3421"
+SRCREV_pn-networkmanager ?= "2887"
+SRCREV_pn-networkmanager-applet ?= "200"
SRCREV_pn-oh-puzzles ?= "22"
SRCREV_pn-osb-browser ?= "125"
SRCREV_pn-osb-jscore ?= "117"
@@ -120,23 +131,24 @@ SRCREV_pn-openmoko-toolchain-scripts ?= "3767"
SRCREV_pn-openmoko-worldclock2 ?= "3365"
SRCREV_pn-openocd ?= "206"
SRCREV_pn-openocd-native ?= "206"
+SRCREV_pn-opkg ?= "4022"
+SRCREV_pn-opkg-native ?= "4019"
SRCREV_pn-oprofileui ?= "160"
SRCREV_pn-psplash ?= "249"
SRCREV_pn-python-formencode = "3148"
-SRCREV_pn-python-fso-pyproto = "49"
+SRCREV_pn-python-fso-pyproto = "70"
SRCREV_pn-python-gsmd = "127"
+SRCREV_pn-python-lightmediascanner = "68"
SRCREV_pn-settings-daemon ?= "1755"
SRCREV_pn-sjf2410-linux-native ?= "933"
SRCREV_pn-sphyrna ?= "45"
SRCREV_pn-tmut ?= "60"
+SRCREV_pn-u-boot-openmoko ?= "4100"
+SRCREV_pn-usbpath ?= "3108"
+SRCREV_pn-usbpath-native ?= "3108"
SRCREV_pn-webkit-gtk ?= "28656"
SRCREV_pn-webkit-qt ?= "28656"
SRCREV_pn-webkit-qtopia ?= "28656"
SRCREV_pn-wesnoth ?= "22021"
SRCREV_pn-xoo ?= "1623"
-SRCREV_pn-mplayer ?= "24587"
-SRCREV_pn-networkmanager ?= "2887"
-SRCREV_pn-networkmanager-applet ?= "200"
-SRCREV_pn-libw100 ?= "47"
-SRCREV_pn-usbpath ?= "3108"
-SRCREV_pn-usbpath-native ?= "3108"
+
diff --git a/conf/distro/include/slugos.inc b/conf/distro/include/slugos.inc
index ea4980b55a..c13c9b6c75 100644
--- a/conf/distro/include/slugos.inc
+++ b/conf/distro/include/slugos.inc
@@ -119,11 +119,6 @@ PREFERRED_VERSION_glibc ?= "2.5"
PREFERRED_VERSION_glibc-intermediate ?= "2.5"
PREFERRED_VERSION_glibc-initial ?= "2.5"
-# Select the correct versions of the kernel and modules (these are the
-# defaults, override in the conf/distro top-level distro file).
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-ixp4xx"
-PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.21.6"
-
# Select the smallest provider of x11 libraries
PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
SRCDATE_diet-x11 ?= "20060106"
diff --git a/conf/distro/jlime-shrek.conf b/conf/distro/jlime-shrek.conf
index 19379862ae..3a7c7ee549 100644
--- a/conf/distro/jlime-shrek.conf
+++ b/conf/distro/jlime-shrek.conf
@@ -3,7 +3,6 @@
#@DESCRIPTION: Distribution file for JLime (Linux for HP jornada 5xx,6xx,7xx,8xx series)
#@MAINTAINER: Kristoffer Ericson <Kristoffer@jlime.com>
-DISTRO = "Jornada Linux Mobility Edition"
DISTRO_NAME = "JLime"
DISTRO_VERSION = "Shrek"
DISTRO_TYPE = "release"
diff --git a/conf/distro/maemo-1.0.conf b/conf/distro/maemo-1.0.conf
deleted file mode 100644
index b8592fdf68..0000000000
--- a/conf/distro/maemo-1.0.conf
+++ /dev/null
@@ -1,38 +0,0 @@
-require conf/distro/include/familiar.inc
-
-DISTRO = "maemo"
-DISTRO_NAME = "Maemo Linux"
-DISTRO_VERSION = "v1.0b-${DATE}"
-
-DISTRO_TYPE = "debug"
-#DISTRO_TYPE = "release"
-
-FEED_URIS += " \
- "
-#SRCDATE = 20050331
-
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc:gcc-cross"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}g++:gcc-cross"
-
-#PREFERRED_VERSION_binutils-cross = "2.15.91.0.2"
-#PREFERRED_VERSION_gcc-cross = "3.4.4"
-#PREFERRED_VERSION_gcc-cross-initial = "3.4.4
-#PREFERRED_VERSION_libtool-native = "1.5.6"
-#PREFERRED_VERSION_libtool-cross= "1.5.6"
-
-#
-# GPE
-#
-
-PREFERRED_PROVIDERS += "virtual/xserver:xserver-kdrive"
-PREFERRED_PROVIDERS += "virtual/gconf:gconf-dbus"
-PREFERRED_PROVIDER_virtual/libx11 = "diet-x11"
-
-require conf/distro/include/preferred-gpe-versions.inc
-
-#
-# Maemo
-#
-
-require conf/distro/include/maemo-preferred.inc
diff --git a/conf/distro/mamona.conf b/conf/distro/mamona.conf
index 26bf8b94f1..bf055874e8 100644
--- a/conf/distro/mamona.conf
+++ b/conf/distro/mamona.conf
@@ -3,7 +3,6 @@
#@NAME: Mamona
#@--------------------------------------------------------------------
-DISTRO = "mamona"
DISTRO_NAME = Mamona""
DISTRO_VERSION = "test-${DATE}"
DISTRO_TYPE = "debug"
diff --git a/conf/distro/mokoslug.conf b/conf/distro/mokoslug.conf
index d68a03fa2b..f8ea1ee5af 100644
--- a/conf/distro/mokoslug.conf
+++ b/conf/distro/mokoslug.conf
@@ -8,7 +8,6 @@
# MokoSlug is based on Angstrom, and would hopefully just be done by features one day ...
require conf/distro/angstrom-2008.1.conf
-DISTRO = "mokoslug"
DISTRO_NAME = "MokoSlug"
DISTRO_VERSION = "1.0-alpha"
DISTRO_REVISION = "1"
diff --git a/conf/distro/nylon.conf b/conf/distro/nylon.conf
index 334c8bba9b..0623ce6dd0 100644
--- a/conf/distro/nylon.conf
+++ b/conf/distro/nylon.conf
@@ -11,6 +11,8 @@
#
# Bruno Randolf <bruno.randolf@4g-systems.biz>
+TARGET_OS = "linux"
+
INHERIT += "package_ipk debian nylon-mirrors"
INHERIT += "linux-kernel-base"
diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf
index d7b3cf753a..470dbf0de2 100644
--- a/conf/distro/openmoko.conf
+++ b/conf/distro/openmoko.conf
@@ -10,17 +10,16 @@ require conf/distro/include/angstrom-2007-for-openmoko.inc
#
# Header
#
-DISTRO = "openmoko"
DISTRO_NAME = "OpenMoko"
DISTRO_VERSION = "P1-Snapshot-${DATE}"
#DISTRO_TYPE = "release"
DISTRO_TYPE = "debug"
-OVERRIDES = "local:${MACHINE}:${DISTRO}:angstrom:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"
+OVERRIDES = "local:${MACHINE}:openmoko:angstrom:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"
CVS_TARBALL_STASH = "http://downloads.openmoko.org/sources/"
-PREMIRRORS = "(ftp|https?)$://.*/.*/ http://downloads.openmoko.org/sources/"
+PREMIRRORS = "(ftp|https?)$://.*/.* http://downloads.openmoko.org/sources/"
FEED_URIS = "\
snapshot-all##http://buildhost.openmoko.org/snapshots/2007.08/ipk/all \
diff --git a/conf/distro/openwrt-sdk.conf b/conf/distro/openwrt-sdk.conf
index 92e5ac5b39..0646b17f90 100644
--- a/conf/distro/openwrt-sdk.conf
+++ b/conf/distro/openwrt-sdk.conf
@@ -20,10 +20,14 @@ require conf/distro/generic-uclibc.conf
DISTRO_NAME = "OpenWRT"
DISTRO_REVISION = "2"
+# Build ipk's wrapped with tar.gz instead of ar, like OpenWRT has them
IPKGBUILDCMD = "ipkg-build -c -o 0 -g 0"
# This is what lives in SDK
ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}gcc virtual/libc"
+# Rename packages to names used in OpenWRT
+PKG_ncurses = "libncurses"
+
# Make sure that we have correct package dependencies for SDK-provided libs.
ASSUME_SHLIBS += "libc.so.0:uclibc libm.so.0:uclibc libgcc_s.so.1:libgcc"
diff --git a/conf/distro/sharprom-compatible.conf b/conf/distro/sharprom-compatible.conf
index 92fd42f4f8..0e130a2fd7 100644
--- a/conf/distro/sharprom-compatible.conf
+++ b/conf/distro/sharprom-compatible.conf
@@ -37,7 +37,8 @@ PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "sharprom-toolchain-native"
PREFERRED_PROVIDER_virtual/arm-linux-binutils = "sharprom-toolchain-native"
PREFERRED_PROVIDER_virtual/libc = "sharprom-toolchain-native"
PREFERRED_PROVIDER_virtual/arm-linux-gcc = "sharprom-toolchain-native"
-PREFERRED_PROVIDER_virtual/linux-libc-headers = "sharprom-toolchain-native"
+PREFERRED_PROVIDER_virtual/linux-libc-headers = "linux-libc-headers"
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
PREFERRED_PROVIDER_virtual/arm-linux-gcc-initial = "sharprom-toolchain-native"
PREFERRED_VERSION_glibc = "2.2.5"
@@ -52,6 +53,7 @@ PREFERRED_PROVIDERS += " virtual/libqpe:libqpe-opie"
QTE_VERSION = "2.3.10"
OPIE_VERSION = "1.2.2"
PALMTOP_USE_MULTITHREADED_QT = "no"
+export palmtopdir = "/opt/QtPalmtop"
require conf/distro/include/preferred-opie-versions.inc
#
diff --git a/conf/distro/slugos.conf b/conf/distro/slugos.conf
index 29c96ce384..012081f143 100644
--- a/conf/distro/slugos.conf
+++ b/conf/distro/slugos.conf
@@ -8,7 +8,7 @@
DISTRO_NAME = "SlugOS"
# DISTRO_VERSION = "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
# DISTRO_FEED = "unstable"
-DISTRO_TYPE = "beta"
+DISTRO_TYPE = "alpha"
TARGET_ARCH ?= "armeb"
ARM_INSTRUCTION_SET = "arm"
TARGET_OS = "linux"
diff --git a/conf/local.conf.sample b/conf/local.conf.sample
index 0fa2b7d122..213ed12fae 100644
--- a/conf/local.conf.sample
+++ b/conf/local.conf.sample
@@ -33,12 +33,19 @@ BBMASK = ""
# Uncomment this if you want to use a prebuilt toolchain. You will need to
# provide packages for toolchain and additional libraries yourself. You also
# have to set PATH in your environment to make sure BitBake finds additional binaries.
-# Note: You will definitely need to say:
-# ASSUME_PROVIDED += "virtual/arm-linux-gcc-2.95"
-# to build any of two Linux 2.4 Embedix kernels,
+# ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}gcc virtual/libc"
+
+# Uncomment this if you're building for an arch that uses emulated locale
+# generation under qemu (mainly arm glibc) and have an external gcc 3.x compiler
+# that OE recognises. This will mean the gcc-native build is skipped, speeding
+# builds up.
+# ASSUME_PROVIDED += "gcc3-native"
+
+# Uncomment this if you are building Linux 2.4 Embedix kernels.
# i.e. openzaurus-sa-2.4.18 and openzaurus-pxa-2.4.18 - and don't forget
# to rename the binaries as instructed in the Wiki.
-# ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}gcc virtual/libc"
+# Most users do not need this anymore thankfully!
+# ASSUME_PROVIDED += "virtual/arm-linux-gcc-2.95"
# Select between multiple alternative providers, if more than one is eligible.
PREFERRED_PROVIDERS = "virtual/qte:qte virtual/libqpe:libqpe-opie"
@@ -77,7 +84,7 @@ PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
# openzaurus-unstable is a so called "versioned" distro, i.e. they
# explicitely select specific versions of various packages.
# Stay away from unversioned distros unless you really know what you are doing
-# DISTRO = "angstrom-2007.1"
+# DISTRO = "angstrom-2008.1"
# So far, angstrom.conf sets ENABLE_BINARY_LOCALE_GENERATION
# to generate binary locale packages at build time using qemu-native and
diff --git a/conf/machine/at32stk1000.conf b/conf/machine/at32stk1000.conf
index 2231f80ed2..add4c7e2d9 100644
--- a/conf/machine/at32stk1000.conf
+++ b/conf/machine/at32stk1000.conf
@@ -11,13 +11,17 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
#don't try to access tty1
USE_VT = "0"
-MACHINE_FEATURES = "kernel26 alsa ext2 usbhost usbgadget screen"
+MACHINE_FEATURES = "kernel26 alsa ext2 usbgadget touchscreen screen"
# used by sysvinit_2
SERIAL_CONSOLE = "115200"
# used by some images
+IMAGE_FSTYPES ?= "jffs2"
ROOT_FLASH_SIZE = "8"
EXTRA_IMAGECMD_jffs2 = " --big-endian --pagesize=4096 --eraseblock=65536"
KERNEL_IMAGETYPE = "uImage"
+PREFERRED_VERSION_u-boot = "1.1.4"
+
+
diff --git a/conf/machine/at91sam9260ek.conf b/conf/machine/at91sam9260ek.conf
index 07616915aa..ba0c9f9a70 100644
--- a/conf/machine/at91sam9260ek.conf
+++ b/conf/machine/at91sam9260ek.conf
@@ -17,6 +17,7 @@ MACHINE_FEATURES = "kernel26 alsa ext2 usbhost usbgadget"
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/at91sam9261ek.conf b/conf/machine/at91sam9261ek.conf
index b6ccd7ef0d..3b9d5188f6 100644
--- a/conf/machine/at91sam9261ek.conf
+++ b/conf/machine/at91sam9261ek.conf
@@ -17,6 +17,7 @@ MACHINE_FEATURES = "kernel26 alsa ext2 usbhost usbgadget screen touchscreen"
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/at91sam9263ek.conf b/conf/machine/at91sam9263ek.conf
index bf45d25c43..95c7626a63 100644
--- a/conf/machine/at91sam9263ek.conf
+++ b/conf/machine/at91sam9263ek.conf
@@ -15,7 +15,7 @@ MACHINE_FEATURES = "kernel26 alsa ext2 usbhost usbgadget screen"
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttyS0"
-
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/atngw100.conf b/conf/machine/atngw100.conf
index 4df1030570..559bd40c75 100644
--- a/conf/machine/atngw100.conf
+++ b/conf/machine/atngw100.conf
@@ -9,7 +9,8 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
#don't try to access tty1
USE_VT = "0"
-MACHINE_FEATURES = "kernel26 ext2 usbhost usbgadget"
+MACHINE_FEATURES = "kernel26 ext2 usbgadget"
+PREFERRED_PROVIDER_virtual/kernel = "linux"
# used by sysvinit_2
SERIAL_CONSOLE = "115200"
@@ -18,4 +19,10 @@ SERIAL_CONSOLE = "115200"
ROOT_FLASH_SIZE = "8"
EXTRA_IMAGECMD_jffs2 = " --big-endian --pagesize=4096 --eraseblock=65536"
+PREFERRED_VERSION_u-boot = "1.1.4"
KERNEL_IMAGETYPE = "uImage"
+
+UBOOT_ENTRYPOINT = "0x90000000"
+UBOOT_LOADADRESS = "0x10000000"
+
+
diff --git a/conf/machine/bd-neon.conf b/conf/machine/bd-neon.conf
index 532193a567..f875d437c7 100644
--- a/conf/machine/bd-neon.conf
+++ b/conf/machine/bd-neon.conf
@@ -41,6 +41,7 @@ MACHINE_EXTRA_RRECOMMENDS = " kernel-modules kernel-module-nls-cp437 \
kernel-module-af-key \
kernel-module-i2c-pxa"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"
EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x40000 --pad=32243712; sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
diff --git a/conf/machine/collie.conf b/conf/machine/collie.conf
index 04e0e83051..5170f8993e 100644
--- a/conf/machine/collie.conf
+++ b/conf/machine/collie.conf
@@ -3,10 +3,10 @@
#@DESCRIPTION: Machine configuration for the SA1100 based Sharp Zaurus SL-5000 and SL-5500 devices
TARGET_ARCH = "arm"
-TARGET_CC_ARCH = "-march=armv4 -mtune=strongarm1110"
MACHINE_KERNEL_VERSION ?= "2.6"
require conf/machine/include/zaurus-${MACHINE_KERNEL_VERSION}.inc
+require conf/machine/include/tune-strongarm.inc
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
diff --git a/conf/machine/davinci-sffsdr.conf b/conf/machine/davinci-sffsdr.conf
index ecff6fae13..faf86c5ed0 100644
--- a/conf/machine/davinci-sffsdr.conf
+++ b/conf/machine/davinci-sffsdr.conf
@@ -19,7 +19,7 @@ EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
#ROOT_FLASH_SIZE = "29"
-MACHINE_FEATURES = "kernel26 pcmcia usbhost alsa"
+MACHINE_FEATURES = "kernel26 serial"
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/fic-gta01.conf b/conf/machine/fic-gta01.conf
index ad0c64bef2..bfaf5ed793 100644
--- a/conf/machine/fic-gta01.conf
+++ b/conf/machine/fic-gta01.conf
@@ -36,6 +36,7 @@ MACHINE_EXTRA_RRECOMMENDS = "\
ROOT_FLASH_SIZE = "60"
# extra jffs2 tweaks
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x4000 --pad -n"
# build / upload tools
diff --git a/conf/machine/fic-gta02.conf b/conf/machine/fic-gta02.conf
index bd9621413a..2c2034b1b6 100644
--- a/conf/machine/fic-gta02.conf
+++ b/conf/machine/fic-gta02.conf
@@ -26,7 +26,6 @@ MACHINE_EXTRA_RRECOMMENDS = "\
kernel-module-gta01kbd \
kernel-module-s3cmci \
kernel-module-snd-soc-neo1973-gta02-wm8753 \
- kernel-module-snd-soc-smdk2440 \
"
SERIAL_CONSOLE = "115200 ttySAC2"
diff --git a/conf/machine/gesbc-9302.conf b/conf/machine/gesbc-9302.conf
index ce45606dbd..ac4c1ef4b6 100644
--- a/conf/machine/gesbc-9302.conf
+++ b/conf/machine/gesbc-9302.conf
@@ -6,7 +6,7 @@ TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4t"
PREFERRED_PROVIDER_virtual/kernel = "linux"
-PREFERRED_VERSION_linux ?= "2.6.23+2.6.24-rc5"
+PREFERRED_VERSION_linux ?= "2.6.24"
#don't try to access tty1
USE_VT = "0"
@@ -19,6 +19,7 @@ SERIAL_CONSOLE = "57600 ttyAM0"
# used by some images
ROOT_FLASH_SIZE = "8"
#extra jffs2 tweaks
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--eraseblock=0x40000 --pad=0x500000 "
#tune for ep93xx cpus
diff --git a/conf/machine/gumstix-custom-connex.conf b/conf/machine/gumstix-custom-connex.conf
new file mode 100644
index 0000000000..1b854582f8
--- /dev/null
+++ b/conf/machine/gumstix-custom-connex.conf
@@ -0,0 +1,75 @@
+#
+# Use this file as a starting point for your custom gumstix configuration
+# Edit it to reflect your hardware setup and then save it a parallel location in user.collection
+
+MACHINE_FEATURES += "connex"
+require conf/machine/include/gumstix.inc
+require conf/machine/include/tune-xscale.inc
+
+#
+# Your flash size = Total flash (in MB) - 1 (for linux kernel partition)
+#ROOT_FLASH_SIZE = "3"
+ROOT_FLASH_SIZE = "15"
+
+#
+# Enable use of virtual terminal for LCD on tty1 if USE_VT = "1"
+USE_VT = "0"
+#USE_VT = "1"
+#SYSVINIT_ENABLED_GETTYS = "1"
+
+#
+# Uncomment features that your board set supports
+
+#MACHINE_FEATURES += "usbhost"
+MACHINE_FEATURES += "usbgadget"
+
+MACHINE_FEATURES += "i2c"
+#MACHINE_FEATURES += "spi"
+
+MACHINE_FEATURES += "serial"
+MACHINE_FEATURES += "bluetooth"
+MACHINE_FEATURES += "sound"
+
+# if you enable robostix you will need to disable both "lcd" and "touchscreen" features
+#MACHINE_FEATURES += "robostix"
+
+#MACHINE_FEATURES += "lcd"
+#MACHINE_FEATURES += "touchscreen"
+#MACHINE_FEATURES += "keyboard"
+
+MACHINE_FEATURES += "pcmcia"
+#MACHINE_FEATURES += "mmc"
+
+MACHINE_FEATURES += "wifi"
+MACHINE_FEATURES += "ethernet"
+
+MACHINE_FEATURES += "fat"
+#MACHINE_FEATURES += "ext2"
+
+#
+# note: selection of MACHINE_FEATURES above will automatically include necessary kernel modules
+# for those features via task-base-gumstix. Include below any extra kernel modules that you want installed
+
+#MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-xxxxxxx"
+
+#
+# Uncomment or add kernel modules that should be autoloaded
+
+module_autoload_proc_gpio = 'proc_gpio'
+
+module_autoload_pcmcia = ${@base_contains('MACHINE_FEATURES', 'pcmcia', 'pcmcia', '',d)}
+module_autoload_pxa2xx_cs = ${@base_contains('MACHINE_FEATURES', 'pcmcia', 'pxa2xx_cs', '',d)}
+
+module_autoload_pxamci = ${@base_contains('MACHINE_FEATURES', 'mmc', 'pxamci', '',d)}
+module_autoload_mmc_block = ${@base_contains('MACHINE_FEATURES', 'mmc', 'mmc_block', '',d)}
+
+module_autoload_ethernet = ${@base_contains('MACHINE_FEATURES', 'ethernet', 'ethernet', '',d)}
+
+module_autoload_gumstix_gadget = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'gumstix_gadget', '',d)}
+#module_autoload_g_file_storage = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'g_file_storage', '',d)}
+module_autoload_g_ether = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'g_ether', '',d)}
+#module_autoload_g_serial = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'g_serial', '',d)}
+
+module_autoload_ucb1400-ts = ${@base_contains('MACHINE_FEATURES', 'touchscreen','ucb1400-ts', '',d)}
+module_autoload_evdev = ${@base_contains('MACHINE_FEATURES', 'touchscreen','evdev', '',d)}
+
diff --git a/conf/machine/gumstix-custom-verdex.conf b/conf/machine/gumstix-custom-verdex.conf
new file mode 100644
index 0000000000..f2488d66e1
--- /dev/null
+++ b/conf/machine/gumstix-custom-verdex.conf
@@ -0,0 +1,78 @@
+#
+# Use this file as a starting point for your custom gumstix configuration
+# Edit it to reflect your hardware setup and then save it a parallel location in user.collection
+
+MACHINE_FEATURES += "verdex"
+MACHINE_FEATURES += "iwmmxt"
+require conf/machine/include/gumstix.inc
+require conf/machine/include/tune-xscale.inc
+
+#
+# Your flash size = Total flash (in MB) - 1 (for linux kernel partition)
+ROOT_FLASH_SIZE = "15"
+#ROOT_FLASH_SIZE = "31"
+
+#
+# Enable use of virtual terminal for LCD on tty1 if USE_VT = "1"
+#USE_VT = "0"
+USE_VT = "1"
+SYSVINIT_ENABLED_GETTYS = "1"
+
+#
+# Uncomment features that your board set supports
+
+MACHINE_FEATURES += "usbhost"
+#MACHINE_FEATURES += "usbgadget"
+
+MACHINE_FEATURES += "i2c"
+#MACHINE_FEATURES += "spi"
+
+MACHINE_FEATURES += "serial"
+MACHINE_FEATURES += "bluetooth"
+MACHINE_FEATURES += "sound"
+
+# if you enable robostix you will need to disable both "lcd" and "touchscreen" features
+#MACHINE_FEATURES += "robostix"
+
+MACHINE_FEATURES += "lcd"
+MACHINE_FEATURES += "touchscreen"
+MACHINE_FEATURES += "keyboard"
+
+MACHINE_FEATURES += "pcmcia"
+MACHINE_FEATURES += "mmc"
+
+MACHINE_FEATURES += "wifi"
+MACHINE_FEATURES += "ethernet"
+
+MACHINE_FEATURES += "ext2"
+MACHINE_FEATURES += "fat"
+
+#
+# note: selection of MACHINE_FEATURES above will automatically include necessary kernel modules
+# for those features via task-base-gumstix. Include below any extra kernel modules that you want installed
+
+#MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-xxxxxxx"
+
+#
+# Uncomment or add kernel modules that should be autoloaded
+
+module_autoload_proc_gpio = 'proc_gpio'
+
+module_autoload_pcmcia = ${@base_contains('MACHINE_FEATURES', 'pcmcia', 'pcmcia', '',d)}
+module_autoload_pxa2xx_cs = ${@base_contains('MACHINE_FEATURES', 'pcmcia', 'pxa2xx_cs', '',d)}
+
+module_autoload_pxamci = ${@base_contains('MACHINE_FEATURES', 'mmc', 'pxamci', '',d)}
+module_autoload_mmc_block = ${@base_contains('MACHINE_FEATURES', 'mmc', 'mmc_block', '',d)}
+
+module_autoload_ethernet = ${@base_contains('MACHINE_FEATURES', 'ethernet', 'ethernet', '',d)}
+
+module_autoload_ohci-hcd = ${@base_contains('MACHINE_FEATURES', 'usbhost', 'ohci-hcd', '',d)}
+
+module_autoload_gumstix_gadget = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'gumstix_gadget', '',d)}
+#module_autoload_g_file_storage = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'g_file_storage', '',d)}
+module_autoload_g_ether = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'g_ether', '',d)}
+#module_autoload_g_serial = ${@base_contains('MACHINE_FEATURES', 'usbgadget', 'g_serial', '',d)}
+
+module_autoload_tsc2003 = ${@base_contains('MACHINE_FEATURES', 'touchscreen','tsc2003', '',d)}
+module_autoload_evdev = ${@base_contains('MACHINE_FEATURES', 'touchscreen','evdev', '',d)}
+
diff --git a/conf/machine/h3600.conf b/conf/machine/h3600.conf
index 6f0e37b803..c037226154 100644
--- a/conf/machine/h3600.conf
+++ b/conf/machine/h3600.conf
@@ -8,7 +8,7 @@
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 "
-require conf/machine/include/tune-strongarm1100.inc
+require conf/machine/include/tune-strongarm.inc
# h3700, h3800 have 32, but let that be the bonus
ROOT_FLASH_SIZE = "16"
diff --git a/conf/machine/h3900.conf b/conf/machine/h3900.conf
index 5db7abd3d4..8b9b7ee365 100644
--- a/conf/machine/h3900.conf
+++ b/conf/machine/h3900.conf
@@ -24,6 +24,8 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+MACHINE_EXTRA_RDEPENDS = "kernel ipaq-boot-params"
+
#
# Modules autoload and other boot properties
#
diff --git a/conf/machine/h5000.conf b/conf/machine/h5000.conf
index c4c1237bae..a55b75cd89 100644
--- a/conf/machine/h5000.conf
+++ b/conf/machine/h5000.conf
@@ -24,10 +24,15 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
EXTRA_IMAGECMD_jffs2 = "-e 0x40000 -p ; echo '${IMAGE_NAME} ${IMAGE_NAME}.rootfs.jffs2 - root' >> ${DEPLOY_DIR_IMAGE}/reflash.ctl"
+# Ship complete set of modules ('kernel-modules') for easier debug purposes
MACHINE_EXTRA_RDEPENDS = "kernel ipaq-boot-params"
-MACHINE_EXTRA_RRECOMMENDS = " kernel-module-h5400-lcd \
+MACHINE_EXTRA_RRECOMMENDS = " kernel-modules \
+ kernel-module-h5400-lcd \
kernel-module-h5400-battery \
- kernel-module-snd-soc-h5000"
+ kernel-module-h5400-bt \
+ kernel-module-snd-soc-h5000 \
+ kernel-module-i2c-pxa \
+ at76c503a-modules"
#
# Modules autoload and other boot properties
diff --git a/conf/machine/htcwallaby.conf b/conf/machine/htcwallaby.conf
index 515700d9e6..34255a1536 100644
--- a/conf/machine/htcwallaby.conf
+++ b/conf/machine/htcwallaby.conf
@@ -8,7 +8,7 @@
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 "
-require conf/machine/include/tune-strongarm1100.inc
+require conf/machine/include/tune-strongarm.inc
ROOT_FLASH_SIZE = "16"
VOLATILE_STORAGE_SIZE = "32"
diff --git a/conf/machine/include/gumstix.inc b/conf/machine/include/gumstix.inc
index fc5fd4e136..1bc0b2e000 100644
--- a/conf/machine/include/gumstix.inc
+++ b/conf/machine/include/gumstix.inc
@@ -2,47 +2,43 @@
#@Name: Gumstix pxa2xx boards
#@DESCRIPTION: Gumstix pxa2xx boards
+# Don't edit this file unless you *really* know what you are doing!
+
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te "
-PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_PROVIDER_virtual/kernel = "gumstix-kernel"
KERNEL_IMAGETYPE = "uImage"
-
-module_autoload_pxamci = "pxamci"
-module_autoload_mmc_block = "mmc_block"
-module_autoload_gumstix_gadget = "gumstix_gadget"
-module_autoload_g_ether = "g_ether"
-module_autoload_smc91x = "smc91x"
-module_autoload_smc911x = "smc911x"
+RDEPENDS_kernel-base = ""
+KERNEL_IMAGE_MAXSIZE = "1048577"
UBOOT_ENTRYPOINT = "a0008000"
-#Assume people have some gumstix extension boards
-MACHINE_FEATURES = "kernel26 alsa ext2 bluetooth"
-
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 --squash"
+MACHINE_FEATURES += "kernel26 "
+COMBINED_FEATURES ?= ""
-# Install all kernel modules
-#MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS = "kernel-modules"
+IMAGE_FSTYPES = "jffs2"
+EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 --squash-uids"
-# Install only selected kernel modules, comment out line above also
-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS = "kernel-module-unix \
- kernel-module-rtc-core \
- kernel-module-rtc-dev \
- kernel-module-rtc-proc \
- kernel-module-rtc-sa1100 \
- kernel-module-rtc-sysfs \
- kernel-module-smc91x \
- kernel-module-gumstix-smc91x \
- kernel-module-smc911x \
- kernel-module-gumstix-smc911x \
- "
-
-# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttyS0 vt100"
-#don't try to access tty1
-USE_VT = "0"
-
-require conf/machine/include/tune-xscale.inc
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS = " \
+ "
+
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= " \
+ "
+#
+# The following *should* be in a distro.conf file
+# We include them here to avoid creating a new distro
+
+PREFERRED_VERSION_gumstix-kernel = "2.6.21"
+PREFERRED_VERSION_udev = "115"
+PREFERRED_VERSION_gnuplot = "4.0.0"
+PREFERRED_VERSION_dropbear = "0.47"
+PREFERRED_VERSION_wpa-supplicant = "0.5.8"
+PREFERRED_VERSION_bluez-utils = "3.24"
+PREFERRED_VERSION_bluez-utils-alsa = "3.24"
+PREFERRED_VERSION_bluez-libs = "3.24"
+PREFERRED_VERSION_bluez-gstreamer-plugin = "3.24"
+PREFERRED_VERSION_bluez-hcidump = "1.40"
diff --git a/conf/machine/include/ixp4xx.inc b/conf/machine/include/ixp4xx.inc
index 924fb54f1e..da1e8b7557 100644
--- a/conf/machine/include/ixp4xx.inc
+++ b/conf/machine/include/ixp4xx.inc
@@ -7,7 +7,7 @@ MACHINE_FEATURES ?= "kernel26 usbhost ext2 vfat redboot apex"
# Select an appropriate default kernel
PREFERRED_PROVIDER_virtual/kernel ?= "linux-ixp4xx"
-PREFERRED_VERSION_linux-ixp4xx ?= "2.6.23.14+svnr${SRCREV}"
+PREFERRED_VERSION_linux-ixp4xx ?= "2.6.24+svnr${SRCREV}"
# Add packages required for basic networking support
MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= "ixp4xx-npe"
diff --git a/conf/machine/include/motorola-ezx-base.inc b/conf/machine/include/motorola-ezx-base.inc
index da88b1494f..a9945acd34 100644
--- a/conf/machine/include/motorola-ezx-base.inc
+++ b/conf/machine/include/motorola-ezx-base.inc
@@ -22,6 +22,7 @@ MACHINE_DISPLAY_PPI = "180"
ROOT_FLASH_SIZE = "24"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad=14680064 --little-endian --eraseblock=0x20000 -n"
EXTRA_IMAGEDEPENDS += "ezx-boot-usb-native"
diff --git a/conf/machine/include/tune-strongarm.inc b/conf/machine/include/tune-strongarm.inc
new file mode 100644
index 0000000000..448b28c91f
--- /dev/null
+++ b/conf/machine/include/tune-strongarm.inc
@@ -0,0 +1,6 @@
+# This machine lists common configuration options for Strongarm devices
+# gcc does not differentiate between the different Strongarm versions, so neither do we
+# http://lists.linuxtogo.org/pipermail/openembedded-devel/2008-January/004031.html
+
+TARGET_CC_ARCH = "-march=armv4 -mtune=strongarm"
+
diff --git a/conf/machine/include/tune-strongarm1100.inc b/conf/machine/include/tune-strongarm1100.inc
deleted file mode 100644
index f136710409..0000000000
--- a/conf/machine/include/tune-strongarm1100.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# This machine lists common configuration options for Strongarm 1100 devices
-# NOTE: The Zaurus Collie also has a Strongarm processor, but uses the 1110 type
-
-TARGET_CC_ARCH = "-march=armv4 -mtune=strongarm1100"
-
diff --git a/conf/machine/include/zaurus-2.6.inc b/conf/machine/include/zaurus-2.6.inc
index 2037931803..9a4d373de0 100644
--- a/conf/machine/include/zaurus-2.6.inc
+++ b/conf/machine/include/zaurus-2.6.inc
@@ -31,7 +31,9 @@ MACHINE_EXTRA_RDEPENDS = "zaurusd"
MACHINE_EXTRA_RRECOMMENDS_c7x0 = "kernel-module-snd-soc-corgi kernel-module-pxa2xx-cs kernel-module-pcmcia"
MACHINE_EXTRA_RRECOMMENDS_akita = "kernel-module-snd-soc-spitz kernel-module-pxa2xx-cs kernel-module-pcmcia"
MACHINE_EXTRA_RRECOMMENDS_spitz = "kernel-module-snd-soc-spitz"
-MACHINE_EXTRA_RRECOMMENDS_poodle = "kernel-module-snd-soc-poodle"
+MACHINE_EXTRA_RRECOMMENDS_poodle = "kernel-module-snd-soc-poodle kernel-module-pxa2xx-cs kernel-module-pcmcia"
+MACHINE_EXTRA_RRECOMMENDS_collie = "kernel-module-locomo-spi kernel-module-sa1100-cs kernel-module-mmc-block \
+ kernel-module-collie-ts kernel-module-leds-locomo kernel-module-locomokbd"
GUI_MACHINE_CLASS = "bigscreen"
GUI_MACHINE_CLASS_collie = "smallscreen"
diff --git a/conf/machine/jornada56x.conf b/conf/machine/jornada56x.conf
index a42dd8c127..72fff1ed5e 100644
--- a/conf/machine/jornada56x.conf
+++ b/conf/machine/jornada56x.conf
@@ -12,4 +12,4 @@ EXTRA_IMAGECMD_jornada56x_jffs2 = "-e 0x40000 -p"
SERIAL_CONSOLE = "115200 ttySA0"
-require conf/machine/include/tune-strongarm1100.inc
+require conf/machine/include/tune-strongarm.inc
diff --git a/conf/machine/jornada7xx.conf b/conf/machine/jornada7xx.conf
index ee9117e406..8741eb4ff6 100644
--- a/conf/machine/jornada7xx.conf
+++ b/conf/machine/jornada7xx.conf
@@ -4,7 +4,7 @@
TARGET_ARCH = "arm"
-require conf/machine/include/tune-strongarm1100.inc
+require conf/machine/include/tune-strongarm.inc
PREFERRED_PROVIDER_virtual/kernel = "linux-jlime-jornada7xx"
PCMCIA_MANAGER = "pcmciautils"
diff --git a/conf/machine/mpc8313e-rdb.conf b/conf/machine/mpc8313e-rdb.conf
index 81c3e29e91..31f13b00b6 100644
--- a/conf/machine/mpc8313e-rdb.conf
+++ b/conf/machine/mpc8313e-rdb.conf
@@ -5,13 +5,17 @@
TARGET_ARCH = "powerpc"
PACKAGE_EXTRA_ARCHS = "all ${MACHINE} ppc ppce300c3"
-PREFERRED_PROVIDER_virtual/kernel = "linux"
-PREFERRED_VERSION_u-boot = "git"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux"
+PREFERRED_VERSION_u-boot ?= "git"
MACHINE_FEATURES = "kernel26 usbhost ext2"
-PREFERRED_VERSION_u-boot = "1.3.0"
+KERNEL_IMAGETYPE = "uImage"
+
+PREFERRED_VERSION_u-boot = "1.3.1"
UBOOT_MACHINE = "MPC8313ERDB_33_config"
+UBOOT_ENTRYPOINT = "0"
+UBOOT_LOADADDRESS = "0"
#rootfs on NAND flash
EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x4000 --no-cleanmarkers"
diff --git a/conf/machine/mpc8323e-rdb.conf b/conf/machine/mpc8323e-rdb.conf
index ee2c6144a9..db1a7ccf16 100644
--- a/conf/machine/mpc8323e-rdb.conf
+++ b/conf/machine/mpc8323e-rdb.conf
@@ -6,10 +6,12 @@ TARGET_ARCH = "powerpc"
TARGET_FPU ?= "soft"
PACKAGE_EXTRA_ARCHS = "all ${MACHINE} ppc ppce300c2"
-PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux"
MACHINE_FEATURES = "kernel26 usbhost pci ext2 uboot"
+KERNEL_IMAGETYPE = "uImage"
+
PREFERRED_VERSION_u-boot = "1.1.6"
UBOOT_MACHINE = "MPC8323ERDB_config"
diff --git a/conf/machine/netvista.conf b/conf/machine/netvista.conf
index 3ee97a447e..f95e403367 100644
--- a/conf/machine/netvista.conf
+++ b/conf/machine/netvista.conf
@@ -1,12 +1,12 @@
#@TYPE: Machine
-#@NAME: X86
-#@DESCRIPTION: Machine configuration for a Linux running on x86 compatible machines
+#@NAME: Netvista J320 Internet Applicance
+#@DESCRIPTION: Machine configuration for a Linux IBM 8365 / J320 PC-based internet terminals
-# i386 doesn't work with NTPL, see http://ecos.sourceware.org/ml/libc-ports/2006-03/msg00030.html
TARGET_ARCH = "i486"
-# TARGET_VENDOR = "-oe"
PACKAGE_EXTRA_ARCHS = "netvista"
-PREFERRED_PROVIDER_virtual/kernel = "linux-x86"
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_VERSION_linux = "2.6.23"
+
XSERVER = "xserver-kdrive-vesa"
KERNEL_IMAGETYPE = "bzImage"
diff --git a/conf/machine/nokia770.conf b/conf/machine/nokia770.conf
index 4e36c6d38a..15126d56a9 100644
--- a/conf/machine/nokia770.conf
+++ b/conf/machine/nokia770.conf
@@ -4,7 +4,7 @@
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te"
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-omap"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-xomap"
PREFERRED_PROVIDER_virtual/bootloader = ""
PREFERRED_PROVIDER_tslib = "tslib-maemo"
diff --git a/conf/machine/omap1510inn.conf b/conf/machine/omap1510inn.conf
index 3dc19a4a31..ffec67b699 100644
--- a/conf/machine/omap1510inn.conf
+++ b/conf/machine/omap1510inn.conf
@@ -12,6 +12,7 @@ PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
BOOTSTRAP_EXTRA_RDEPENDS += "modutils-collateral"
SERIAL_CONSOLE ?= "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/omap1610h2.conf b/conf/machine/omap1610h2.conf
index 3dc19a4a31..ffec67b699 100644
--- a/conf/machine/omap1610h2.conf
+++ b/conf/machine/omap1610h2.conf
@@ -12,6 +12,7 @@ PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
BOOTSTRAP_EXTRA_RDEPENDS += "modutils-collateral"
SERIAL_CONSOLE ?= "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/omap1710h3.conf b/conf/machine/omap1710h3.conf
index 9a97150981..98e3a7d3e5 100644
--- a/conf/machine/omap1710h3.conf
+++ b/conf/machine/omap1710h3.conf
@@ -12,6 +12,7 @@ PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
BOOTSTRAP_EXTRA_RDEPENDS += "modutils-collateral"
SERIAL_CONSOLE ?= "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/omap2420h4.conf b/conf/machine/omap2420h4.conf
index 82be4e3f79..343b0091b5 100644
--- a/conf/machine/omap2420h4.conf
+++ b/conf/machine/omap2420h4.conf
@@ -9,6 +9,7 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-omap2"
PREFERRED_VERSION_u-boot = "1.1.4"
SERIAL_CONSOLE ?= "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
MACHINE_FEATURES = "kernel26"
diff --git a/conf/machine/omap2430sdp.conf b/conf/machine/omap2430sdp.conf
index 39e6896b3b..0e6b646897 100644
--- a/conf/machine/omap2430sdp.conf
+++ b/conf/machine/omap2430sdp.conf
@@ -9,6 +9,7 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-omap2"
PREFERRED_VERSION_u-boot = "1.1.4"
SERIAL_CONSOLE ?= "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
MACHINE_FEATURES = "kernel26"
diff --git a/conf/machine/omap5912osk.conf b/conf/machine/omap5912osk.conf
index abd50b116a..7a7b5c1a60 100644
--- a/conf/machine/omap5912osk.conf
+++ b/conf/machine/omap5912osk.conf
@@ -11,6 +11,7 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-omap1"
# PREFERRED_VERSION_u-boot = "1.1.6"
SERIAL_CONSOLE ?= "115200 ttyS0"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
ROOT_FLASH_SIZE = "29"
diff --git a/conf/machine/poodle.conf b/conf/machine/poodle.conf
index 0fbd9d1578..4e8f011a1e 100644
--- a/conf/machine/poodle.conf
+++ b/conf/machine/poodle.conf
@@ -3,6 +3,7 @@
#@DESCRIPTION: Machine configuration for the PXA250 based Sharp Zaurus SL-B500 and SHarp Zaurus SL-5600 devices
require conf/machine/include/zaurus-2.6.inc
+require conf/machine/include/tune-xscale.inc
IMAGE_FSTYPES ?= "jffs2"
diff --git a/conf/machine/qemux86.conf b/conf/machine/qemux86.conf
index fe811ba54e..7fbdbfb1a7 100644
--- a/conf/machine/qemux86.conf
+++ b/conf/machine/qemux86.conf
@@ -3,6 +3,7 @@
#@DESCRIPTION: Machine configuration for running an x86 system under qemu emulation
TARGET_ARCH = "i586"
+TARGET_CC_ARCH = "-march=i586"
PACKAGE_EXTRA_ARCHS = "x86"
require conf/machine/include/qemu.inc
diff --git a/conf/machine/shark.conf b/conf/machine/shark.conf
index 87c260856d..3b9165d2b8 100644
--- a/conf/machine/shark.conf
+++ b/conf/machine/shark.conf
@@ -8,6 +8,7 @@ TARGET_ARCH = "arm"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
PREFERRED_PROVIDER_virtual/kernel = "linux-z"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"
EXTRA_IMAGEDEPENDS = ""
SERIAL_CONSOLE = "ttySA0 115200 vt100"
@@ -15,7 +16,7 @@ SERIAL_CONSOLE = "ttySA0 115200 vt100"
ROOT_FLASH_SIZE = "16"
USE_VT = "0"
-require conf/machine/include/tune-strongarm1100.inc
+require conf/machine/include/tune-strongarm.inc
MACHINE_FEATURES = "kernel26 apm alsa pcmcia keyboard ext2"
MACHINE_EXTRA_RDEPENDS_append = " mpg321 mpd madplay "
diff --git a/conf/machine/simpad.conf b/conf/machine/simpad.conf
index e187ee1e75..6334d34171 100644
--- a/conf/machine/simpad.conf
+++ b/conf/machine/simpad.conf
@@ -9,7 +9,7 @@ TARGET_ARCH = "arm"
MACHINE_FEATURES = "apm pcmcia irda screen touchscreen vfat"
include conf/machine/include/simpad-${MACHINE_KERNEL_VERSION}.inc
-require conf/machine/include/tune-strongarm1100.inc
+require conf/machine/include/tune-strongarm.inc
ROOT_FLASH_SIZE = "16"
diff --git a/conf/machine/tosa.conf b/conf/machine/tosa.conf
index d8ea4b8890..914300e31c 100644
--- a/conf/machine/tosa.conf
+++ b/conf/machine/tosa.conf
@@ -3,6 +3,7 @@
#@DESCRIPTION: Machine configuration for the PXA255 based Sharp Zaurus SL-6000 device
require conf/machine/include/zaurus-2.6.inc
+require conf/machine/include/tune-xscale.inc
IMAGE_FSTYPES ?= "jffs2"
diff --git a/conf/machine/triton.conf b/conf/machine/triton.conf
index 2dbe3ea863..0275f6b2f5 100644
--- a/conf/machine/triton.conf
+++ b/conf/machine/triton.conf
@@ -8,6 +8,7 @@ PREFERRED_PROVIDER_virtual/kernel = "triton-kernel"
BOOTSTRAP_EXTRA_RDEPENDS = "virtual/kernel"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad=0x1dc0000 --little-endian --eraseblock=0x40000 -n"
EXTRA_IMAGEDEPENDS = ""
SERIAL_CONSOLE = "38400 ttyS0"
diff --git a/conf/machine/xxs1500.conf b/conf/machine/xxs1500.conf
index 9cc47cdef7..4d5909126a 100644
--- a/conf/machine/xxs1500.conf
+++ b/conf/machine/xxs1500.conf
@@ -8,6 +8,7 @@ TARGET_ARCH = "mipsel"
PREFERRED_PROVIDER_virtual/kernel = "linux-xxs1500"
+IMAGE_FSTYPES ?= "jffs2"
EXTRA_IMAGECMD_jffs2 = "--pad=0xa00000 --little-endian --eraseblock=0x20000 -n"
# does not gain any speed and just creates problems:
diff --git a/conf/sanity.conf b/conf/sanity.conf
index fe1e2282e4..4af4454e2e 100644
--- a/conf/sanity.conf
+++ b/conf/sanity.conf
@@ -3,6 +3,16 @@
# See sanity.bbclass
#
# Expert users can confirm their sanity with "touch conf/sanity.conf"
-BB_MIN_VERSION = "1.8.8"
+BB_MIN_VERSION = "1.8.10"
+
+#
+# SANITY_ABI allows us to notify users when the format of TMPDIR changes in
+# an incompatible way. Such changes should usually be detailed in the commit
+# that breaks the format and have been previously discussed on the mailing list
+# with general agreement from the core team.
+#
+SANITY_ABI = "0"
+SANITY_ABIFILE = "${TMPDIR}/abi_version"
+
INHERIT += "sanity"
diff --git a/contrib/angstrom/rss.php b/contrib/angstrom/rss.php
index cf5a9e0218..2e1f49c4cc 100644
--- a/contrib/angstrom/rss.php
+++ b/contrib/angstrom/rss.php
@@ -1,48 +1,63 @@
-<?php echo ('<?xml version="1.0" encoding="utf-8"?>'); ?>
-<rss version="2.0" xml:base="http://www.angstrom-distribution.org/unstable/autobuild/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <title>Ångström autobuilder updates</title>
- <link>http://www.angstrom-distribution.org/unstable/autobuild/</link>
- <description></description>
- <language>en</language>
<?php
-$base_path = "/home/angstrom/website/unstable/autobuild";
+/*
+ * This generator expect only log from autobuilder in simple format:
+ * TIME_OF_BUILD BUILD_TARGET BUILD_MODE MACHINE
+ *
+ * where TIME_OF_BUILD is epoch
+ *
+ * All what it does is parsing log and output it in reverse order (new builds
+ * first) in RSS 2.0 format.
+ *
+ * (C) 2007 Marcin Juszkiewicz
+ *
+ * License: MIT
+ *
+ */
-if ($handle = opendir("$base_path"))
-{
- while (false !== ($file = readdir($handle)))
- {
- if(!(is_dir($file) && $file != "." && $file != ".."))
- {
- continue;
- }
+$build_link_base = 'http://www.angstrom-distribution.org/unstable/autobuild/';
+
+$builder_log_date = file('autobuilder.log');
+
+if(empty($builder_log_date))
+ die("No logs\n");
+
+$builder_log_date = array_reverse($builder_log_date);
+
+$rss_xml = new xmlWriter();
- $second_handle = opendir("$base_path/$file/");
+if(!$rss_xml)
+ die("Unable to create XML Writer\n");
- while (false !== ($file2 = readdir($second_handle)))
- {
- if(is_file("/$base_path/$file/$file2"))
- {
- $fmtime = filemtime("$file/$file2");
+$rss_xml->openMemory();
- echo "<item>\n"
- echo "<title>$file/$file2 uploaded</title>\n";
- echo " <link>http://www.angstrom-distribution.org/unstable/autobuild/$file/$file2</link>\n";
+$rss_xml->startDocument('1.0','utf-8');
+$rss_xml->startElement('rss');
+$rss_xml->writeAttribute('version', '2.0');
- $rsstime = strftime("%a, %d %b %Y %T +0100", $fmtime);
+$rss_xml->startElement('channel');
- echo "<pubDate>$rsstime</pubDate>\n";
- echo "<dc:creator>Angstrom autobuilder</dc:creator>";
- echo "</item>\n";
- }
- }
+$rss_xml->writeElement('title', 'Ångström autobuilder updates');
+$rss_xml->writeElement('link', $build_link_base);
+$rss_xml->writeElement('description', 'Ångström autobuilder updates list');
- closedir($second_handle);
- }
+foreach($builder_log_date as $build)
+{
+ $build = str_replace("\n", "", $build);
+ $data = explode(' ', $build);
+
+ $rss_xml->startElement('item');
+ $rss_xml->writeElement('title', "{$data[1]} ({$data[2]}) built for {$data[3]} (" . date('c', $data[0]) . ")");
+ $rss_xml->writeElement('link', "{$build_link_base}{$data[3]}/");
+ $rss_xml->writeElement('pubDate', date('r', $data[0]));
- closedir($handle);
+ $rss_xml->endElement();
}
+
+$rss_xml->endElement();
+$rss_xml->endElement();
+
+echo $rss_xml->outputMemory(true);
+
+echo "\n";
?>
- </channel>
-</rss>
diff --git a/contrib/angstrom/rss2.php b/contrib/angstrom/rss2.php
deleted file mode 100644
index 995c344e14..0000000000
--- a/contrib/angstrom/rss2.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This generator expect only log from autobuilder in simple format:
- * TIME_OF_BUILD BUILD_TARGET BUILD_MODE MACHINE
- *
- * where TIME_OF_BUILD is epoch
- *
- * All what it does is parsing log and output it in reverse order (new builds
- * first) in RSS 2.0 format.
- *
- * (C) 2007 Marcin Juszkiewicz
- *
- * License: MIT
- *
- */
-
-$build_link_base = 'http://www.angstrom-distribution.org/unstable/autobuild/';
-
-$builder_log_date = file('autobuilder.log');
-
-if(empty($builder_log_date))
- die("No logs\n");
-
-$builder_log_date = array_reverse($builder_log_date);
-
-$rss_xml = new xmlWriter();
-
-if(!$rss_xml)
- die("Unable to create XML Writer\n");
-
-$rss_xml->openMemory();
-
-$rss_xml->startDocument('1.0','utf-8');
-$rss_xml->startElement('rss');
-$rss_xml->writeAttribute('version', '2.0');
-
-$rss_xml->startElement('channel');
-
-$rss_xml->writeElement('title', 'Ångström autobuilder updates');
-$rss_xml->writeElement('link', $build_link_base);
-$rss_xml->writeElement('description', 'Ångström autobuilder updates list');
-
-foreach($builder_log_date as $build)
-{
- $build = str_replace("\n", "", $build);
- $data = explode(' ', $build);
-
- $rss_xml->startElement('item');
- $rss_xml->writeElement('title', "{$data[1]} ({$data[2]}) built for {$data[3]}");
- $rss_xml->writeElement('link', "{$build_link_base}{$data[3]}/");
- $rss_xml->writeElement('pubDate', date('r', $data[0]));
-
- $rss_xml->endElement();
-}
-
-$rss_xml->endElement();
-$rss_xml->endElement();
-
-echo $rss_xml->outputMemory(true);
-
-echo "\n";
-?>
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog b/contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog
index 74193e30fd..8485f3e720 100644
--- a/contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog
+++ b/contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog
@@ -3,7 +3,7 @@ openembedded-essential (1.4) unstable; urgency=low
* remove gfortran from dependency after a5c7b007eaa675cc904f5285291d2f8a597efc84 caused controversy.
Ultimately it was decided that OE should not depend on gfortran and that another solution ought
to be found. The gfortran check in sanity.bbclass was dropped in 63c7ad87655c2781ad8b9c81af430596f48a24a6
-* add bc and python-pysqlite2
+ * add bc and python-pysqlite2 for rpm
-- Rolf Leggewie <oe-devel@rolf.leggewie.biz> Mon, 19 Jan 2008 14:25:00 +0100
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.4/ubuntu.patch b/contrib/distro-packages/debian/openembedded-essential-1.4/ubuntu.patch
new file mode 100644
index 0000000000..80863d59fe
--- /dev/null
+++ b/contrib/distro-packages/debian/openembedded-essential-1.4/ubuntu.patch
@@ -0,0 +1,22 @@
+#
+# old_revision [63896b37ec0e055133c2e295f7c89e4677091511]
+#
+# patch "contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog"
+# from [b1e7c5d0ed3dddbab736f23b57df2386b6937e4d]
+# to [bb02f8caa6f5eaa903b4d65150392583072c7bea]
+#
+============================================================
+--- contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog
+b1e7c5d0ed3dddbab736f23b57df2386b6937e4d
++++ contrib/distro-packages/debian/openembedded-essential-1.4/debian/changelog
+bb02f8caa6f5eaa903b4d65150392583072c7bea
+@@ -1,3 +1,9 @@
++openembedded-essential (1.4ubuntu1) gutsy; urgency=low
++
++ * prepare ubuntu package
++
++ -- Rolf Leggewie <oe-devel@rolf.leggewie.biz> Thu, 24 Jan 2008 13:49:26 +0100
++
+ openembedded-essential (1.4) unstable; urgency=low
+
+ * remove gfortran from dependency after a5c7b007eaa675cc904f5285291d2f8a597efc84 caused controversy.
diff --git a/packages/acpid/acpid-1.0.3/.mtn2git_empty b/contrib/image-convert/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/acpid/acpid-1.0.3/.mtn2git_empty
+++ b/contrib/image-convert/.mtn2git_empty
diff --git a/contrib/image-convert/README b/contrib/image-convert/README
new file mode 100644
index 0000000000..9daca60703
--- /dev/null
+++ b/contrib/image-convert/README
@@ -0,0 +1,5 @@
+This directory contains scripts to convert (root) filesystem images from one
+format to another. While OpenEmbedded has extensive support for generating
+images in various formats, sometimes it may be useful/needed to convert
+already existing image.
+
diff --git a/contrib/image-convert/cpio2tar b/contrib/image-convert/cpio2tar
new file mode 100755
index 0000000000..7f2c92fe26
--- /dev/null
+++ b/contrib/image-convert/cpio2tar
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+STAGING= #~/linux-ppc/build-oe-angstrom/tmp/staging/i686-linux/bin/
+
+${STAGING}fakeroot bash -c " \
+rm -rf scratch; mkdir scratch; \
+cd scratch; gzip -d -c ../$1 | cpio -i --make-directories; \
+cd ..; \
+tar -cj -C scratch -f $(basename $1 .cpio.gz).tar.bz2 ."
diff --git a/contrib/image-convert/tar2ext2 b/contrib/image-convert/tar2ext2
new file mode 100755
index 0000000000..d5756a4733
--- /dev/null
+++ b/contrib/image-convert/tar2ext2
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+if [ $# -ne 2 ]; then
+ echo "Usage: $0 <tarball> <ext2 size>"
+ exit
+fi
+
+ext=`echo $1 | sed -r -e 's/.+\.([^.]+\.[^.]+)/\1/'`
+base=$(basename $1 .$ext)
+dir=$(dirname $1)
+
+if [ "$ext" == "tar.bz2" ]; then
+ uncompress=j
+else
+ uncompress=z
+fi
+
+rm -rf mnt
+mkdir -p mnt
+
+fakeroot bash -c "\
+tar -x$uncompress -f $1 -C mnt; \
+genext2fs -d mnt -b $(($2 * 1024)) $dir/$base.img; \
+rm -rf mnt; \
+"
diff --git a/contrib/image-convert/tar2ext2.mount b/contrib/image-convert/tar2ext2.mount
new file mode 100755
index 0000000000..7e23098c4d
--- /dev/null
+++ b/contrib/image-convert/tar2ext2.mount
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+if [ $# -ne 2 ]; then
+ echo "Usage: $0 <tarball> <ext2 size>"
+ exit
+fi
+
+ext=`echo $1 | sed -r -e 's/.+\.([^.]+\.[^.]+)/\1/'`
+base=$(basename $1 .$ext)
+if [ "$ext" == "tar.bz2" ]; then
+ uncompress=j
+else
+ uncompress=z
+fi
+
+dd if=/dev/zero of=$base.img bs=1M count=$2
+mkfs.ext2 -F -m1 $base.img
+
+mkdir -p mnt
+mount -o loop $base.img mnt
+
+tar -x$uncompress -f $1 -C mnt
+
+umount mnt
+rm -rf mnt
diff --git a/contrib/image-convert/tar2jffs b/contrib/image-convert/tar2jffs
new file mode 100755
index 0000000000..7bf158e4a5
--- /dev/null
+++ b/contrib/image-convert/tar2jffs
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+STAGING= #~/linux-ppc/build-oe-angstrom/tmp/staging/i686-linux/bin/
+
+${STAGING}fakeroot bash -c " \
+rm -rf scratch; mkdir scratch; \
+tar -xj -f $1 -C scratch; \
+${STAGING}mkfs.jffs2 -x lzo --root=scratch --faketime --output=$(dirname $1)/$(basename $1 .tar.bz2).jffs2"
diff --git a/contrib/oe-stylize.py b/contrib/oe-stylize.py
index a92b58dc73..5658c1662d 100755
--- a/contrib/oe-stylize.py
+++ b/contrib/oe-stylize.py
@@ -42,6 +42,7 @@ OE_vars = [
'RPROVIDES',
'RCONFLICTS',
'SRCDATE',
+ 'PE',
'PV',
'PR',
'SRC_URI',
diff --git a/packages/acpid/acpid-1.0.3/gcc40.patch b/packages/acpid/acpid-1.0.3/gcc40.patch
deleted file mode 100644
index dbe090ba41..0000000000
--- a/packages/acpid/acpid-1.0.3/gcc40.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: acpid-1.0.3/ud_socket.c
-===================================================================
---- acpid-1.0.3.orig/ud_socket.c 2003-11-17 14:24:58.000000000 -0700
-+++ acpid-1.0.3/ud_socket.c 2005-06-27 14:44:17.785576106 -0700
-@@ -58,7 +58,7 @@
- while (1) {
- int newsock = 0;
- struct sockaddr_un cliaddr;
-- int len = sizeof(struct sockaddr_un);
-+ socklen_t len = sizeof(struct sockaddr_un);
-
- newsock = accept(listenfd, (struct sockaddr *)&cliaddr, &len);
- if (newsock < 0) {
diff --git a/packages/acpid/acpid-1.0.4/gcc40.patch b/packages/acpid/acpid-1.0.4/gcc40.patch
deleted file mode 100644
index dbe090ba41..0000000000
--- a/packages/acpid/acpid-1.0.4/gcc40.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: acpid-1.0.3/ud_socket.c
-===================================================================
---- acpid-1.0.3.orig/ud_socket.c 2003-11-17 14:24:58.000000000 -0700
-+++ acpid-1.0.3/ud_socket.c 2005-06-27 14:44:17.785576106 -0700
-@@ -58,7 +58,7 @@
- while (1) {
- int newsock = 0;
- struct sockaddr_un cliaddr;
-- int len = sizeof(struct sockaddr_un);
-+ socklen_t len = sizeof(struct sockaddr_un);
-
- newsock = accept(listenfd, (struct sockaddr *)&cliaddr, &len);
- if (newsock < 0) {
diff --git a/packages/acpid/acpid-1.0.4/.mtn2git_empty b/packages/acpid/acpid/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/acpid/acpid-1.0.4/.mtn2git_empty
+++ b/packages/acpid/acpid/.mtn2git_empty
diff --git a/packages/acpid/acpid/gcc40.patch b/packages/acpid/acpid/gcc40.patch
new file mode 100644
index 0000000000..5320cee0bb
--- /dev/null
+++ b/packages/acpid/acpid/gcc40.patch
@@ -0,0 +1,15 @@
+upstream: https://sourceforge.net/tracker/index.php?func=detail&aid=1895615&group_id=33140&atid=407341
+
+Index: acpid-1.0.3/ud_socket.c
+===================================================================
+--- acpid-1.0.3.orig/ud_socket.c 2003-11-17 14:24:58.000000000 -0700
++++ acpid-1.0.3/ud_socket.c 2005-06-27 14:44:17.785576106 -0700
+@@ -58,7 +58,7 @@
+ while (1) {
+ int newsock = 0;
+ struct sockaddr_un cliaddr;
+- int len = sizeof(struct sockaddr_un);
++ socklen_t len = sizeof(struct sockaddr_un);
+
+ newsock = accept(listenfd, (struct sockaddr *)&cliaddr, &len);
+ if (newsock < 0) {
diff --git a/packages/alsa/alsa-state/akita/asound.state b/packages/alsa/alsa-state/akita/asound.state
index ee5ef519c3..d1bacfb708 100644
--- a/packages/alsa/alsa-state/akita/asound.state
+++ b/packages/alsa/alsa-state/akita/asound.state
@@ -6,8 +6,8 @@ state.Spitz {
comment.range '0 - 63'
iface MIXER
name 'Capture Volume'
- value.0 23
- value.1 23
+ value.0 48
+ value.1 48
}
control.2 {
comment.access 'read write'
@@ -15,8 +15,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Capture ZC Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.3 {
comment.access 'read write'
@@ -24,8 +24,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Capture Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.4 {
comment.access 'read write'
@@ -33,8 +33,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Headphone Playback ZC Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.5 {
comment.access 'read write'
@@ -42,8 +42,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Speaker Playback ZC Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.6 {
comment.access 'read write'
@@ -92,8 +92,8 @@ state.Spitz {
comment.range '0 - 255'
iface MIXER
name 'PCM Volume'
- value.0 255
- value.1 255
+ value.0 220
+ value.1 220
}
control.11 {
comment.access 'read write'
@@ -122,7 +122,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'Bass Volume'
- value 11
+ value 0
}
control.14 {
comment.access 'read write'
@@ -131,7 +131,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'Treble Volume'
- value 11
+ value 0
}
control.15 {
comment.access 'read write'
@@ -158,7 +158,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name '3D Volume'
- value 9
+ value 0
}
control.18 {
comment.access 'read write'
@@ -226,7 +226,7 @@ state.Spitz {
comment.count 1
iface MIXER
name 'ALC Capture ZC Switch'
- value false
+ value true
}
control.25 {
comment.access 'read write'
@@ -235,7 +235,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'ALC Capture Hold Time'
- value 0
+ value 9
}
control.26 {
comment.access 'read write'
@@ -244,7 +244,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'ALC Capture Decay Time'
- value 3
+ value 9
}
control.27 {
comment.access 'read write'
@@ -253,7 +253,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'ALC Capture Attack Time'
- value 2
+ value 3
}
control.28 {
comment.access 'read write'
@@ -298,7 +298,7 @@ state.Spitz {
comment.range '0 - 255'
iface MIXER
name 'Right ADC Capture Volume'
- value 0
+ value 195
}
control.33 {
comment.access 'read write'
@@ -306,7 +306,7 @@ state.Spitz {
comment.count 1
iface MIXER
name 'ZC Timeout Switch'
- value false
+ value true
}
control.34 {
comment.access 'read write'
@@ -331,8 +331,8 @@ state.Spitz {
comment.range '0 - 3'
iface MIXER
name 'Mic Boost'
- value.0 0
- value.1 0
+ value.0 3
+ value.1 3
}
control.37 {
comment.access 'read write'
@@ -379,8 +379,8 @@ state.Spitz {
comment.range '0 - 127'
iface MIXER
name 'Headphone Playback Volume'
- value.0 121
- value.1 121
+ value.0 105
+ value.1 105
}
control.42 {
comment.access 'read write'
@@ -389,8 +389,8 @@ state.Spitz {
comment.range '0 - 127'
iface MIXER
name 'Speaker Playback Volume'
- value.0 121
- value.1 121
+ value.0 127
+ value.1 127
}
control.43 {
comment.access 'read write'
@@ -411,7 +411,7 @@ state.Spitz {
comment.item.3 'Digital Mono'
iface MIXER
name 'Right ADC Mux'
- value 'Mono (Left)'
+ value 'Digital Mono'
}
control.45 {
comment.access 'read write'
@@ -423,7 +423,7 @@ state.Spitz {
comment.item.3 'Digital Mono'
iface MIXER
name 'Left ADC Mux'
- value 'Mono (Left)'
+ value 'Digital Mono'
}
control.46 {
comment.access 'read write'
@@ -458,7 +458,7 @@ state.Spitz {
comment.item.4 Differential
iface MIXER
name 'Right Line Mux'
- value 'Line 2'
+ value Differential
}
control.49 {
comment.access 'read write'
@@ -471,7 +471,7 @@ state.Spitz {
comment.item.4 Differential
iface MIXER
name 'Left Line Mux'
- value 'Line 1'
+ value Differential
}
control.50 {
comment.access 'read write'
@@ -483,7 +483,7 @@ state.Spitz {
comment.item.3 Differential
iface MIXER
name 'Right PGA Mux'
- value 'Line 2'
+ value Differential
}
control.51 {
comment.access 'read write'
@@ -495,7 +495,7 @@ state.Spitz {
comment.item.3 Differential
iface MIXER
name 'Left PGA Mux'
- value 'Line 1'
+ value Differential
}
control.52 {
comment.access 'read write'
diff --git a/packages/alsa/alsa-state/spitz/asound.state b/packages/alsa/alsa-state/spitz/asound.state
index 81b6ed9814..d1bacfb708 100644
--- a/packages/alsa/alsa-state/spitz/asound.state
+++ b/packages/alsa/alsa-state/spitz/asound.state
@@ -6,8 +6,8 @@ state.Spitz {
comment.range '0 - 63'
iface MIXER
name 'Capture Volume'
- value.0 23
- value.1 23
+ value.0 48
+ value.1 48
}
control.2 {
comment.access 'read write'
@@ -15,8 +15,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Capture ZC Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.3 {
comment.access 'read write'
@@ -24,8 +24,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Capture Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.4 {
comment.access 'read write'
@@ -33,8 +33,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Headphone Playback ZC Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.5 {
comment.access 'read write'
@@ -42,8 +42,8 @@ state.Spitz {
comment.count 2
iface MIXER
name 'Speaker Playback ZC Switch'
- value.0 false
- value.1 false
+ value.0 true
+ value.1 true
}
control.6 {
comment.access 'read write'
@@ -92,8 +92,8 @@ state.Spitz {
comment.range '0 - 255'
iface MIXER
name 'PCM Volume'
- value.0 255
- value.1 255
+ value.0 220
+ value.1 220
}
control.11 {
comment.access 'read write'
@@ -131,7 +131,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'Treble Volume'
- value 15
+ value 0
}
control.15 {
comment.access 'read write'
@@ -188,7 +188,7 @@ state.Spitz {
comment.item.1 Playback
iface MIXER
name '3D Mode'
- value Capture
+ value Playback
}
control.21 {
comment.access 'read write'
@@ -218,7 +218,7 @@ state.Spitz {
comment.item.3 Stereo
iface MIXER
name 'ALC Capture Function'
- value Off
+ value Left
}
control.24 {
comment.access 'read write'
@@ -226,7 +226,7 @@ state.Spitz {
comment.count 1
iface MIXER
name 'ALC Capture ZC Switch'
- value false
+ value true
}
control.25 {
comment.access 'read write'
@@ -235,7 +235,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'ALC Capture Hold Time'
- value 0
+ value 9
}
control.26 {
comment.access 'read write'
@@ -244,7 +244,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'ALC Capture Decay Time'
- value 3
+ value 9
}
control.27 {
comment.access 'read write'
@@ -253,7 +253,7 @@ state.Spitz {
comment.range '0 - 15'
iface MIXER
name 'ALC Capture Attack Time'
- value 2
+ value 3
}
control.28 {
comment.access 'read write'
@@ -306,7 +306,7 @@ state.Spitz {
comment.count 1
iface MIXER
name 'ZC Timeout Switch'
- value false
+ value true
}
control.34 {
comment.access 'read write'
@@ -322,7 +322,7 @@ state.Spitz {
comment.count 1
iface MIXER
name 'Right Speaker Playback Invert Switch'
- value false
+ value true
}
control.36 {
comment.access 'read write'
@@ -331,8 +331,8 @@ state.Spitz {
comment.range '0 - 3'
iface MIXER
name 'Mic Boost'
- value.0 0
- value.1 0
+ value.0 3
+ value.1 3
}
control.37 {
comment.access 'read write'
@@ -341,8 +341,8 @@ state.Spitz {
comment.range '0 - 7'
iface MIXER
name 'Bypass Left Playback Volume'
- value.0 2
- value.1 2
+ value.0 0
+ value.1 0
}
control.38 {
comment.access 'read write'
@@ -351,8 +351,8 @@ state.Spitz {
comment.range '0 - 7'
iface MIXER
name 'Bypass Right Playback Volume'
- value.0 2
- value.1 2
+ value.0 0
+ value.1 0
}
control.39 {
comment.access 'read write'
@@ -361,8 +361,8 @@ state.Spitz {
comment.range '0 - 7'
iface MIXER
name 'Bypass Mono Playback Volume'
- value.0 2
- value.1 2
+ value.0 0
+ value.1 0
}
control.40 {
comment.access 'read write'
@@ -379,8 +379,8 @@ state.Spitz {
comment.range '0 - 127'
iface MIXER
name 'Headphone Playback Volume'
- value.0 121
- value.1 121
+ value.0 105
+ value.1 105
}
control.42 {
comment.access 'read write'
@@ -389,8 +389,8 @@ state.Spitz {
comment.range '0 - 127'
iface MIXER
name 'Speaker Playback Volume'
- value.0 121
- value.1 121
+ value.0 127
+ value.1 127
}
control.43 {
comment.access 'read write'
@@ -399,7 +399,7 @@ state.Spitz {
comment.range '0 - 127'
iface MIXER
name 'Mono Playback Volume'
- value 121
+ value 0
}
control.44 {
comment.access 'read write'
@@ -411,7 +411,7 @@ state.Spitz {
comment.item.3 'Digital Mono'
iface MIXER
name 'Right ADC Mux'
- value Stereo
+ value 'Digital Mono'
}
control.45 {
comment.access 'read write'
@@ -423,7 +423,7 @@ state.Spitz {
comment.item.3 'Digital Mono'
iface MIXER
name 'Left ADC Mux'
- value Stereo
+ value 'Digital Mono'
}
control.46 {
comment.access 'read write'
@@ -458,7 +458,7 @@ state.Spitz {
comment.item.4 Differential
iface MIXER
name 'Right Line Mux'
- value 'Line 1'
+ value Differential
}
control.49 {
comment.access 'read write'
@@ -471,7 +471,7 @@ state.Spitz {
comment.item.4 Differential
iface MIXER
name 'Left Line Mux'
- value 'Line 1'
+ value Differential
}
control.50 {
comment.access 'read write'
@@ -483,7 +483,7 @@ state.Spitz {
comment.item.3 Differential
iface MIXER
name 'Right PGA Mux'
- value 'Line 1'
+ value Differential
}
control.51 {
comment.access 'read write'
@@ -495,7 +495,7 @@ state.Spitz {
comment.item.3 Differential
iface MIXER
name 'Left PGA Mux'
- value 'Line 1'
+ value Differential
}
control.52 {
comment.access 'read write'
@@ -535,7 +535,7 @@ state.Spitz {
comment.count 1
iface MIXER
name 'Right Mixer Left Playback Switc'
- value true
+ value false
}
control.57 {
comment.access 'read write'
diff --git a/packages/altboot/altboot.inc b/packages/altboot/altboot.inc
index 9e0b3e3df9..772a6b8eb4 100644
--- a/packages/altboot/altboot.inc
+++ b/packages/altboot/altboot.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
LICENSE = "GPL"
RDEPENDS_${PN} = "${PN}-conf"
RDEPENDS_${PN}-conf = "${PN}"
-RRECOMMENDS_${PN} = "e2fsprogs-e2fsck dosfstools kexec-tools"
+RRECOMMENDS_${PN} = "e2fsprogs-e2fsck e2fsprogs-mke2fs dosfstools kexec-tools kernel-module-loop"
RRECOMMENDS_${PN}_spitz += " kernel-module-jffs2"
S = "${WORKDIR}/trunk/"
@@ -11,7 +11,7 @@ S = "${WORKDIR}/trunk/"
PACKAGE_ARCH_${PN} = "${MACHINE}"
PACKAGE_ARCH_${PN}-doc = "all"
PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
+PACKAGES = "${PN}-dbg ${PN}-conf ${PN}-doc ${PN}"
FILES_${PN}-conf = "/etc/altboot*cfg"
diff --git a/packages/altboot/altboot_1.0.8+1.0.9_pre1.bb b/packages/altboot/altboot_1.0.8+1.0.9_pre1.bb
index 4611d345e2..3890e68893 100644
--- a/packages/altboot/altboot_1.0.8+1.0.9_pre1.bb
+++ b/packages/altboot/altboot_1.0.8+1.0.9_pre1.bb
@@ -9,7 +9,7 @@ DEFAULT_PREFERENCE = "-1"
#RDEPENDS_${PN}_append_poodle = " kexec-tools"
#RDEPENDS_${PN}-conf = "${PN}"
-PR = "r0"
+PR = "r2"
SVN_REV="65"
#TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
@@ -71,6 +71,6 @@ do_rm_work() {
PACKAGE_ARCH_${PN} = "all"
PACKAGE_ARCH_${PN}-doc = "all"
PACKAGE_ARCH_${PN}-conf = "${MACHINE}"
-PACKAGES = "${PN}-conf ${PN}-doc ${PN}"
+PACKAGES = "${PN}-dbg ${PN}-conf ${PN}-doc ${PN}"
FILES_${PN}-conf = "/etc/altboot*.cfg"
diff --git a/packages/altboot/altboot_1.0.8.bb b/packages/altboot/altboot_1.0.8.bb
index 96758871f9..3e18111a5b 100644
--- a/packages/altboot/altboot_1.0.8.bb
+++ b/packages/altboot/altboot_1.0.8.bb
@@ -1,6 +1,6 @@
require altboot.inc
-PR = "r2"
+PR = "r4"
TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
SRC_URI = "svn://hentges.net/public/altboot/tags/;module=${TAG};proto=svn"
diff --git a/packages/altboot/altboot_1.1.1+wip-SVNR77.bb b/packages/altboot/altboot_1.1.1+wip-SVNR77.bb
deleted file mode 100644
index 425efec8fd..0000000000
--- a/packages/altboot/altboot_1.1.1+wip-SVNR77.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-require altboot.inc
-
-PR = "r0"
-
-SVN_REV = "77"
-SRC_URI = "svn://hentges.net/public/altboot;module=trunk;rev=${SVN_REV} \
- "
-
-do_install() {
- install -d ${D}/sbin
- install -d ${D}/etc/altboot-menu
- install -d ${D}/etc/altboot.rc
- install -d ${D}/usr/share/doc/altboot
- install -d ${D}/usr/share/sounds
-
- if test -d ${S}/${MACHINE_DIR}
- then
- install -m 0644 ${S}/${MACHINE_DIR}/altboot*.cfg ${D}/etc/
- else
- install -m 0644 ${S}/altboot*.cfg ${D}/etc/
- fi
-
- install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
- install -m 0644 ${S}/altboot.func ${D}/etc
- install -m 0644 ${S}/altboot.sbin ${D}/etc
- install -m 0644 ${S}/altbootctl.conf ${D}/etc
- install -m 0755 ${S}/init.altboot ${D}/sbin
- install -m 0755 ${S}/altbootctl ${D}/sbin
-
- ln -s /sbin/init.altboot ${D}/sbin/altboot
-
- if test -d ${S}/${MACHINE_DIR}/altboot-menu
- then
- install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/*-* ${D}/etc/altboot-menu
-
- if test -d ${S}/${MACHINE_DIR}/altboot-menu/Advanced
- then
- install -d ${D}/etc/altboot-menu/Advanced
- install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
- fi
- else
- install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
-
- if test -d ${S}/altboot-menu/Advanced
- then
- install -d ${D}/etc/altboot-menu/Advanced
- install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
- fi
- fi
-
- if test -d ${S}/${MACHINE_DIR}/altboot.rc
- then
- install -m 0755 ${S}/${MACHINE_DIR}/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${S}/${MACHINE_DIR}/altboot.rc/*.txt ${D}/etc/altboot.rc
- else
- install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
- fi
-}
-
-do_configure() {
- cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
- mv ${S}/init.altboot_ ${S}/init.altboot
-}
-
-pkg_postinst_${PN}() {
- test -L /linuxrc && update-alternatives --install /linuxrc linuxrc /sbin/init.altboot 55
-
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
-}
-
-pkg_postrm_${PN}() {
- test -L /linuxrc && update_alternatives --remove linuxrc /sbin/init.altboot
-
- update-alternatives --remove init /sbin/init.altboot
-}
diff --git a/packages/altboot/altboot_1.1.1+wip-SVNR80.bb b/packages/altboot/altboot_1.1.1+wip-SVNR80.bb
new file mode 100644
index 0000000000..b333264d34
--- /dev/null
+++ b/packages/altboot/altboot_1.1.1+wip-SVNR80.bb
@@ -0,0 +1,76 @@
+require altboot.inc
+
+PR = "r0"
+
+SVN_REV = "80"
+SRC_URI = "svn://hentges.net/public/altboot;module=trunk;rev=${SVN_REV} \
+ "
+
+do_install() {
+ install -d ${D}/sbin
+ install -d ${D}/etc/altboot-menu
+ install -d ${D}/etc/altboot.rc
+ install -d ${D}/usr/share/doc/altboot
+ install -d ${D}/usr/share/sounds
+
+ if test -d ${S}/${MACHINE_DIR}
+ then
+ install -m 0644 ${S}/${MACHINE_DIR}/altboot*.cfg ${D}/etc/
+ else
+ install -m 0644 ${S}/altboot*.cfg ${D}/etc/
+ fi
+
+ install -m 0644 ${S}/beep.raw ${D}/usr/share/sounds
+ install -m 0644 ${S}/altboot.func ${D}/etc
+ install -m 0644 ${S}/altboot.sbin ${D}/etc
+ install -m 0644 ${S}/altbootctl.conf ${D}/etc
+ install -m 0755 ${S}/init.altboot ${D}/sbin
+ install -m 0755 ${S}/altbootctl ${D}/sbin
+
+ ln -s /sbin/init.altboot ${D}/sbin/altboot
+
+ if test -d ${S}/${MACHINE_DIR}/altboot-menu
+ then
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ if test -d ${S}/${MACHINE_DIR}/altboot-menu/Advanced
+ then
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ fi
+ else
+ install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
+
+ if test -d ${S}/altboot-menu/Advanced
+ then
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ fi
+ fi
+
+ if test -d ${S}/${MACHINE_DIR}/altboot.rc
+ then
+ install -m 0755 ${S}/${MACHINE_DIR}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/${MACHINE_DIR}/altboot.rc/*.txt ${D}/etc/altboot.rc
+ else
+ install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
+ fi
+}
+
+do_configure() {
+ cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${S}/init.altboot_
+ mv ${S}/init.altboot_ ${S}/init.altboot
+}
+
+pkg_postinst_${PN}() {
+ test -L /linuxrc && update-alternatives --install /linuxrc linuxrc /sbin/init.altboot 55
+
+ update-alternatives --install /sbin/init init /sbin/init.altboot 55
+}
+
+pkg_postrm_${PN}() {
+ test -L /linuxrc && update_alternatives --remove linuxrc /sbin/init.altboot
+
+ update-alternatives --remove init /sbin/init.altboot
+}
diff --git a/packages/altboot/altboot_svn.bb b/packages/altboot/altboot_svn.bb
index 0d3c869482..85a7fe612f 100644
--- a/packages/altboot/altboot_svn.bb
+++ b/packages/altboot/altboot_svn.bb
@@ -1,7 +1,7 @@
require altboot.inc
PV = "1.1.1+wip-${SRCDATE}"
-PR = "r2"
+PR = "r4"
SRC_URI = "svn://hentges.net/public/altboot;module=trunk;proto=svn"
diff --git a/packages/base-files/base-files/ghi270/.mtn2git_empty b/packages/amule/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/base-files/base-files/ghi270/.mtn2git_empty
+++ b/packages/amule/.mtn2git_empty
diff --git a/packages/amule/amule_2.1.3.bb b/packages/amule/amule_2.1.3.bb
new file mode 100644
index 0000000000..b160203ffd
--- /dev/null
+++ b/packages/amule/amule_2.1.3.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "aMule is an eMule-like client for the eD2k \
+and Kademlia networks, supporting multiple platforms."
+HOMEPAGE = "http://www.amule.org"
+LICENSE = "GPL"
+SECTION = "web"
+PRIORITY = "optional"
+DEPENDS = "wxbase"
+
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/amule/aMule-${PV}.tar.bz2 \
+ file://parser.patch;patch=1"
+
+S = "${WORKDIR}/aMule-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-amulecmd \
+ --enable-webserver \
+ --disable-monolithic \
+ --enable-amule-daemon \
+ --disable-nls"
+# --enable-optimize"
+
+FILES_${PN} += " \
+ ${libdir}/xchat"
diff --git a/packages/bluez/files/ghi270/.mtn2git_empty b/packages/amule/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/bluez/files/ghi270/.mtn2git_empty
+++ b/packages/amule/files/.mtn2git_empty
diff --git a/packages/amule/files/parser.patch b/packages/amule/files/parser.patch
new file mode 100644
index 0000000000..ee77c42380
--- /dev/null
+++ b/packages/amule/files/parser.patch
@@ -0,0 +1,20 @@
+diff -ur aMule-2.1.0_orig/src/Parser.cpp aMule-2.1.0/src/Parser.cpp
+--- aMule-2.1.0_orig/src/Parser.cpp 2005-12-20 05:13:25.000000000 +0100
++++ aMule-2.1.0/src/Parser.cpp 2006-01-29 15:16:45.000000000 +0100
+@@ -203,14 +203,14 @@
+ # define YYMALLOC malloc
+ # if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++/*void *malloc (YYSIZE_T);*/ /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifndef YYFREE
+ # define YYFREE free
+ # if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+-void free (void *); /* INFRINGES ON USER NAME SPACE */
++/*void free (void *);*/ /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifdef __cplusplus
diff --git a/packages/angstrom/angstrom-feed-configs.bb b/packages/angstrom/angstrom-feed-configs.bb
index 1415080fbd..d0465b4d53 100644
--- a/packages/angstrom/angstrom-feed-configs.bb
+++ b/packages/angstrom/angstrom-feed-configs.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Configuration files for online package repositories aka feeds"
#PV = "${DISTRO_VERSION}"
-PR = "r3"
+PR = "r4"
PACKAGE_ARCH = "${MACHINE_ARCH}"
FEED_BASEPATH ?= "unstable/feed/"
@@ -27,6 +27,11 @@ do_compile() {
do_install () {
install -d ${D}${sysconfdir}/ipkg
install -m 0644 ${S}/${sysconfdir}/ipkg/* ${D}${sysconfdir}/ipkg/
+ # opkg compat symlinks
+ install -d ${D}${sysconfdir}/opkg
+ for feed in ${D}${sysconfdir}/ipkg/* ; do
+ ln -sf ${sysconfdir}/ipkg/$(basename $feed) ${D}${sysconfdir}/opkg/$(basename $feed)
+ done
}
CONFFILES_${PN} += "${sysconfdir}/ipkg/base-feed.conf \
diff --git a/packages/angstrom/angstrom-task-sectest.bb b/packages/angstrom/angstrom-task-sectest.bb
index c3ebcab31d..bf8019da0d 100644
--- a/packages/angstrom/angstrom-task-sectest.bb
+++ b/packages/angstrom/angstrom-task-sectest.bb
@@ -1,11 +1,11 @@
DESCRIPTION = "Task packages for the Angstrom distribution"
-PR = "r32"
+PR = "r33"
inherit task
RDEPENDS_${PN} = "\
nmap \
- ettercap \
+ ettercap-ng \
stunnel \
curl \
# dsniff \
diff --git a/packages/bluez/files/r1000/.mtn2git_empty b/packages/anki/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/bluez/files/r1000/.mtn2git_empty
+++ b/packages/anki/.mtn2git_empty
diff --git a/packages/anki/anki.inc b/packages/anki/anki.inc
new file mode 100644
index 0000000000..e9a71c286b
--- /dev/null
+++ b/packages/anki/anki.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Anki is a program designed to help you remember facts \
+(such as words and phrases in a foreign language) \
+as easily, quickly and efficiently as possible"
+HOMEPAGE = "http://ichi2.net/anki/"
+AUTHOR = "Damien Elmes"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+RDEPENDS = "python-pyqt"
+RRECOMMENDS = "kakasi virtual/japanese-font"
+
+SRC_URI = "http://ichi2.net/anki/download/anki-${PV}.tgz"
+
+inherit setuptools
+
+PACKAGE_ARCH = "all"
diff --git a/packages/anki/anki_0.4.3.bb b/packages/anki/anki_0.4.3.bb
new file mode 100644
index 0000000000..f3a62f3323
--- /dev/null
+++ b/packages/anki/anki_0.4.3.bb
@@ -0,0 +1,9 @@
+require anki.inc
+
+RDEPENDS += "libanki"
+PR = "r1"
+
+export PV := "${PV}"
+
+SRC_URI += "file://no-need-for-pyqt-at-buildtime.patch;patch=1"
+S = "${WORKDIR}/anki-${PV}"
diff --git a/packages/busybox/busybox-1.00/.mtn2git_empty b/packages/anki/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.00/.mtn2git_empty
+++ b/packages/anki/files/.mtn2git_empty
diff --git a/packages/anki/files/no-need-for-pyqt-at-buildtime.patch b/packages/anki/files/no-need-for-pyqt-at-buildtime.patch
new file mode 100644
index 0000000000..56cfec4999
--- /dev/null
+++ b/packages/anki/files/no-need-for-pyqt-at-buildtime.patch
@@ -0,0 +1,28 @@
+#
+# (C) Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+#
+Index: anki-0.4.3/setup.py
+===================================================================
+--- anki-0.4.3.orig/setup.py 2008-02-12 19:17:56.000000000 +0000
++++ anki-0.4.3/setup.py 2008-02-12 19:19:29.000000000 +0000
+@@ -3,10 +3,8 @@
+ from setuptools import setup, find_packages
+ import sys, os
+
+-import ankiqt
+-
+ setup(name='ankiqt',
+- version=ankiqt.appVersion,
++ version=os.environ["PV"],
+ description='An intelligent spaced-repetition memory training program',
+ long_description="",
+ # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers
+@@ -24,7 +22,7 @@
+ license='GPLv2',
+ packages=find_packages(),
+ include_package_data=True,
+- install_requires = 'anki >= ' + ankiqt.appVersion,
++ install_requires = 'anki >= ' + os.environ["PV"],
+ zip_safe=False,
+ package_data={'ankiqt':
+ ['locale/*/*/*']},
diff --git a/packages/anki/libanki_0.4.3.bb b/packages/anki/libanki_0.4.3.bb
new file mode 100644
index 0000000000..ac33833790
--- /dev/null
+++ b/packages/anki/libanki_0.4.3.bb
@@ -0,0 +1,5 @@
+require anki.inc
+
+PR = "r0"
+
+S = "${WORKDIR}/anki-${PV}/libanki"
diff --git a/packages/apache/apache_2.0.54.bb b/packages/apache/apache_2.0.54.bb
index 2522658d32..c1f1303d56 100644
--- a/packages/apache/apache_2.0.54.bb
+++ b/packages/apache/apache_2.0.54.bb
@@ -26,7 +26,7 @@ CONFFILES_${PN} = "${sysconfdir}/apache/httpd.conf \
${datadir}/apache/htdocs/apache_pb.gif \
"
-PACKAGES = "libaprutil libapr apache-dev apache-doc apache"
+PACKAGES = "${PN}-dbg libaprutil libapr apache-dev apache-doc apache"
FILES_libapr = "${libdir}/libapr*.so.0* ${libdir}/apr.exp"
FILES_libaprutil = "${libdir}/libaprutil*.so.0* ${libdir}/aprutil.exp"
diff --git a/packages/apex/apex-nslu2-1.5.13/defconfig b/packages/apex/apex-nslu2-1.5.13/defconfig
index 91517025bf..264f8539fc 100644
--- a/packages/apex/apex-nslu2-1.5.13/defconfig
+++ b/packages/apex/apex-nslu2-1.5.13/defconfig
@@ -136,7 +136,8 @@ CONFIG_AUTOBOOT=y
CONFIG_AUTOBOOT_DELAY=10
CONFIG_ENV_STARTUP_KERNEL_COPY=y
# CONFIG_ENV_REGION_KERNEL_SWAP is not set
-# CONFIG_ENV_STARTUP_PREFIX_P is not set
+CONFIG_ENV_STARTUP_PREFIX_P=y
+CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+256m"
#
# Regions
diff --git a/packages/apex/apex-nslu2-16mb-1.5.13/defconfig b/packages/apex/apex-nslu2-16mb-1.5.13/defconfig
index 420e0a61fd..11658813d5 100644
--- a/packages/apex/apex-nslu2-16mb-1.5.13/defconfig
+++ b/packages/apex/apex-nslu2-16mb-1.5.13/defconfig
@@ -136,7 +136,8 @@ CONFIG_AUTOBOOT=y
CONFIG_AUTOBOOT_DELAY=10
CONFIG_ENV_STARTUP_KERNEL_COPY=y
# CONFIG_ENV_REGION_KERNEL_SWAP is not set
-# CONFIG_ENV_STARTUP_PREFIX_P is not set
+CONFIG_ENV_STARTUP_PREFIX_P=y
+CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+256m"
#
# Regions
diff --git a/packages/apex/apex-nslu2-16mb_1.5.13.bb b/packages/apex/apex-nslu2-16mb_1.5.13.bb
index 5fc835fc00..2937876c03 100644
--- a/packages/apex/apex-nslu2-16mb_1.5.13.bb
+++ b/packages/apex/apex-nslu2-16mb_1.5.13.bb
@@ -3,7 +3,7 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
file://defconfig"
diff --git a/packages/apex/apex-nslu2_1.5.13.bb b/packages/apex/apex-nslu2_1.5.13.bb
index ac3858f3a5..7fc7ea65b6 100644
--- a/packages/apex/apex-nslu2_1.5.13.bb
+++ b/packages/apex/apex-nslu2_1.5.13.bb
@@ -3,7 +3,7 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
file://defconfig"
diff --git a/packages/asterisk/asterisk-core-sounds-en-alaw_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-alaw_1.4.8.bb
index f1b3d12cd7..f1b3d12cd7 100644
--- a/packages/asterisk/asterisk-core-sounds-en-alaw_1.4.7.bb
+++ b/packages/asterisk/asterisk-core-sounds-en-alaw_1.4.8.bb
diff --git a/packages/asterisk/asterisk-core-sounds-en-g729_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-g729_1.4.8.bb
index 205c8ff067..205c8ff067 100644
--- a/packages/asterisk/asterisk-core-sounds-en-g729_1.4.7.bb
+++ b/packages/asterisk/asterisk-core-sounds-en-g729_1.4.8.bb
diff --git a/packages/asterisk/asterisk-core-sounds-en-gsm_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-gsm_1.4.8.bb
index 2a46c74f84..2a46c74f84 100644
--- a/packages/asterisk/asterisk-core-sounds-en-gsm_1.4.7.bb
+++ b/packages/asterisk/asterisk-core-sounds-en-gsm_1.4.8.bb
diff --git a/packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.8.bb
index c29ae60f99..c29ae60f99 100644
--- a/packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.7.bb
+++ b/packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.8.bb
diff --git a/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb
deleted file mode 100644
index f18d46258f..0000000000
--- a/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION="The Asterisk open source software PBX"
-HOMEPAGE="http://www.asterisk.org"
-SECTION = "voip"
-LICENSE="GPL"
-#DEPENDS="asterisk"
-#PR = "r1"
-
-SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-alaw-${PV}.tar.gz"
-
-do_install() {
- install -d ${D}${localstatedir}/lib/asterisk/sounds
- # HACK: moving the files in chunkes (too many of them)
- rm ${WORKDIR}/conf-thereare.alaw
- rm ${WORKDIR}/invalid.alaw
- mv ${WORKDIR}/[a-d]*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/[e-l]*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
- #install -m 644 ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
- #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
- mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
- #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
- mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
- #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
- mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
-}
-
-pkg_postinst_prepend() {
- chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
-}
-
-
diff --git a/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.7.bb b/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.7.bb
new file mode 100644
index 0000000000..2bea38c99b
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.7.bb
@@ -0,0 +1,31 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-alaw-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunkes (too many of them)
+ mv ${WORKDIR}/[a-d]*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb
deleted file mode 100644
index 48fabbbdc4..0000000000
--- a/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION="The Asterisk open source software PBX"
-HOMEPAGE="http://www.asterisk.org"
-SECTION = "voip"
-LICENSE="GPL"
-#DEPENDS="asterisk"
-#PR = "r1"
-
-SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-g729-${PV}.tar.gz"
-
-do_install() {
- install -d ${D}${localstatedir}/lib/asterisk/sounds
- # HACK: moving the files in chunks (too many files)
- rm ${WORKDIR}/conf-thereare.g729
- rm ${WORKDIR}/invalid.g729
- mv ${WORKDIR}/[a-d]*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/[e-l]*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
- #install -m 644 ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
- #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
- mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
- #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
- mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
- #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
- mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
-}
-
-pkg_postinst_prepend() {
- chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
-}
-
-
diff --git a/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.7.bb b/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.7.bb
new file mode 100644
index 0000000000..0656ff1a95
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.7.bb
@@ -0,0 +1,31 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-g729-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunks (too many files)
+ mv ${WORKDIR}/[a-d]*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb
deleted file mode 100644
index da463391b1..0000000000
--- a/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION="The Asterisk open source software PBX"
-HOMEPAGE="http://www.asterisk.org"
-SECTION = "voip"
-LICENSE="GPL"
-#DEPENDS="asterisk"
-#PR = "r1"
-
-SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-gsm-${PV}.tar.gz"
-
-do_install() {
- install -d ${D}${localstatedir}/lib/asterisk/sounds
- # HACK: moving the files in chunks (too many files)
- rm ${WORKDIR}/conf-thereare.gsm
- rm ${WORKDIR}/invalid.gsm
- mv ${WORKDIR}/[a-d]*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/[e-l]*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
- #install -m 644 ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
- #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
- mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
- #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
- mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
- #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
- mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
-}
-
-pkg_postinst_prepend() {
- chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
-}
-
-
diff --git a/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.7.bb b/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.7.bb
new file mode 100644
index 0000000000..2d74d27996
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.7.bb
@@ -0,0 +1,31 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-gsm-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunks (too many files)
+ mv ${WORKDIR}/[a-d]*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb
deleted file mode 100644
index 6a6f3f5fba..0000000000
--- a/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION="The Asterisk open source software PBX"
-HOMEPAGE="http://www.asterisk.org"
-SECTION = "voip"
-LICENSE="GPL"
-#DEPENDS="asterisk"
-#PR = "r1"
-
-SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-ulaw-${PV}.tar.gz"
-
-do_install() {
- install -d ${D}${localstatedir}/lib/asterisk/sounds
- # HACK: moving the files in chunkes (too many of them)
- rm ${WORKDIR}/conf-thereare.ulaw
- rm ${WORKDIR}/invalid.ulaw
- mv ${WORKDIR}/[a-d]*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/[e-l]*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
- mv ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
- #install -m 644 ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
- #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
- mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
- #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
- mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
-
- #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
- #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
- mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
-}
-
-pkg_postinst_prepend() {
- chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
-}
-
-
diff --git a/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.7.bb b/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.7.bb
new file mode 100644
index 0000000000..6d35c65177
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.7.bb
@@ -0,0 +1,31 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-ulaw-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunkes (too many of them)
+ mv ${WORKDIR}/[a-d]*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk_1.4.10.bb b/packages/asterisk/asterisk_1.4.10.bb
index 4110f01930..416495a0b8 100644
--- a/packages/asterisk/asterisk_1.4.10.bb
+++ b/packages/asterisk/asterisk_1.4.10.bb
@@ -30,17 +30,17 @@ INITSCRIPT_PARAMS = "defaults 60"
inherit autotools update-rc.d
-EXTRA_OECONF = "--with-ssl=${STAGING_DIR}/${TARGET_SYS}\
- --with-z=${STAGING_DIR}/${TARGET_SYS}\
- --with-curl=${STAGING_DIR}/${TARGET_SYS}\
- --with-termcap=${STAGING_DIR}/${TARGET_SYS}\
- --with-ogg=${STAGING_DIR}/${TARGET_SYS}\
- --with-vorbis=${STAGING_DIR}/${TARGET_SYS}\
- --with-sqlite=${STAGING_DIR}/${TARGET_SYS}\
- --with-popt=${STAGING_DIR}/${TARGET_SYS}\
- --with-gnutls=${STAGING_DIR}/${TARGET_SYS}\
+EXTRA_OECONF = "--with-ssl=${STAGING_EXECPREFIXDIR} \
+ --with-z=${STAGING_EXECPREFIXDIR} \
+ --with-curl=${STAGING_EXECPREFIXDIR} \
+ --with-termcap=${STAGING_EXECPREFIXDIR} \
+ --with-ogg=${STAGING_EXECPREFIXDIR} \
+ --with-vorbis=${STAGING_EXECPREFIXDIR} \
+ --with-sqlite=${STAGING_EXECPREFIXDIR} \
+ --with-popt=${STAGING_EXECPREFIXDIR} \
+ --with-gnutls=${STAGING_EXECPREFIXDIR} \
--without-curses\
- --with-ncurses=${STAGING_DIR}/${TARGET_SYS}\
+ --with-ncurses=${STAGING_EXECPREFIXDIR} \
--without-imap\
--without-netsnmp\
--without-odbc\
diff --git a/packages/asterisk/asterisk_1.4.11.bb b/packages/asterisk/asterisk_1.4.11.bb
index 0d4f30aef9..2f116864e4 100644
--- a/packages/asterisk/asterisk_1.4.11.bb
+++ b/packages/asterisk/asterisk_1.4.11.bb
@@ -32,17 +32,17 @@ INITSCRIPT_PARAMS = "defaults 60"
inherit autotools update-rc.d
-EXTRA_OECONF = "--with-ssl=${STAGING_DIR}/${TARGET_SYS}\
- --with-z=${STAGING_DIR}/${TARGET_SYS}\
- --with-curl=${STAGING_DIR}/${TARGET_SYS}\
- --with-termcap=${STAGING_DIR}/${TARGET_SYS}\
- --with-ogg=${STAGING_DIR}/${TARGET_SYS}\
- --with-vorbis=${STAGING_DIR}/${TARGET_SYS}\
- --with-sqlite=${STAGING_DIR}/${TARGET_SYS}\
- --with-popt=${STAGING_DIR}/${TARGET_SYS}\
- --with-gnutls=${STAGING_DIR}/${TARGET_SYS}\
+EXTRA_OECONF = "--with-ssl=${STAGING_EXECPREFIXDIR}\
+ --with-z=${STAGING_EXECPREFIXDIR}\
+ --with-curl=${STAGING_EXECPREFIXDIR}\
+ --with-termcap=${STAGING_EXECPREFIXDIR}\
+ --with-ogg=${STAGING_EXECPREFIXDIR}\
+ --with-vorbis=${STAGING_EXECPREFIXDIR}\
+ --with-sqlite=${STAGING_EXECPREFIXDIR}\
+ --with-popt=${STAGING_EXECPREFIXDIR}\
+ --with-gnutls=${STAGING_EXECPREFIXDIR}\
--without-curses\
- --with-ncurses=${STAGING_DIR}/${TARGET_SYS}\
+ --with-ncurses=${STAGING_EXECPREFIXDIR}\
--without-imap\
--without-netsnmp\
--without-odbc\
diff --git a/packages/asterisk/asterisk_1.4.17.bb b/packages/asterisk/asterisk_1.4.17.bb
index 0ea808af7f..46bc90b25f 100644
--- a/packages/asterisk/asterisk_1.4.17.bb
+++ b/packages/asterisk/asterisk_1.4.17.bb
@@ -31,17 +31,17 @@ INITSCRIPT_PARAMS = "defaults 60"
inherit autotools update-rc.d
-EXTRA_OECONF = "--with-ssl=${STAGING_DIR}/${TARGET_SYS}\
- --with-z=${STAGING_DIR}/${TARGET_SYS}\
- --with-curl=${STAGING_DIR}/${TARGET_SYS}\
- --with-termcap=${STAGING_DIR}/${TARGET_SYS}\
- --with-ogg=${STAGING_DIR}/${TARGET_SYS}\
- --with-vorbis=${STAGING_DIR}/${TARGET_SYS}\
- --with-sqlite=${STAGING_DIR}/${TARGET_SYS}\
- --with-popt=${STAGING_DIR}/${TARGET_SYS}\
- --with-gnutls=${STAGING_DIR}/${TARGET_SYS}\
+EXTRA_OECONF = "--with-ssl=${STAGING_EXECPREFIXDIR} \
+ --with-z=${STAGING_EXECPREFIXDIR} \
+ --with-curl=${STAGING_EXECPREFIXDIR} \
+ --with-termcap=${STAGING_EXECPREFIXDIR} \
+ --with-ogg=${STAGING_EXECPREFIXDIR} \
+ --with-vorbis=${STAGING_EXECPREFIXDIR} \
+ --with-sqlite=${STAGING_EXECPREFIXDIR} \
+ --with-popt=${STAGING_EXECPREFIXDIR} \
+ --with-gnutls=${STAGING_EXECPREFIXDIR} \
--without-curses\
- --with-ncurses=${STAGING_DIR}/${TARGET_SYS}\
+ --with-ncurses=${STAGING_EXECPREFIXDIR} \
--without-imap\
--without-netsnmp\
--without-odbc\
diff --git a/packages/at76c503a/at76c503a-modules_0.17.bb b/packages/at76c503a/at76c503a-modules_0.17.bb
new file mode 100644
index 0000000000..affffa39ef
--- /dev/null
+++ b/packages/at76c503a/at76c503a-modules_0.17.bb
@@ -0,0 +1,19 @@
+SECTION = "base"
+LICENSE = "GPL"
+
+SRCDATE = "20080116"
+
+SRC_URI = "http://download.berlios.de/at76c503a/at76_usb-0.17.tar.gz"
+S = "${WORKDIR}/at76_usb-${PV}/"
+
+inherit module
+
+MODULES = "at76c503 at76_usbdfu at76c503-i3861 at76c503-rfmd at76c503-rfmd-acc \
+ at76c505-rfmd at76c503-i3863 at76c505-rfmd2958"
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/
+ for i in *${KERNEL_OBJECT_SUFFIX}; do
+ install -m 0644 $i ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/
+ done
+}
diff --git a/packages/atmelwlandriver/atmelwlandriver_3.4.1.0.bb b/packages/atmelwlandriver/atmelwlandriver_3.4.1.0.bb
index 705ab532fc..136f6ca42a 100644
--- a/packages/atmelwlandriver/atmelwlandriver_3.4.1.0.bb
+++ b/packages/atmelwlandriver/atmelwlandriver_3.4.1.0.bb
@@ -12,7 +12,7 @@ PR = "r2"
inherit module
SECTION = "base"
-PACKAGES = "atmelwlandriver-pcmcia atmelwlandriver-usb"
+PACKAGES = "${PN}-dbg atmelwlandriver-pcmcia atmelwlandriver-usb"
FILES_atmelwlandriver-pcmcia = "${base_libdir}/modules/${KERNEL_VERSION}/drivers/net/wireless/atmel/pcmf502rd.o ${sysconfdir}/pcmcia/pcmf502rd.conf"
FILES_atmelwlandriver-usb = "${base_libdir}/modules/${KERNEL_VERSION}/drivers/net/wireless/atmel/usbvnetr.o"
diff --git a/packages/avahi/avahi-ui_0.6.21.bb b/packages/avahi/avahi-ui_0.6.21.bb
index 1159b8ead4..add8de4db4 100644
--- a/packages/avahi/avahi-ui_0.6.21.bb
+++ b/packages/avahi/avahi-ui_0.6.21.bb
@@ -17,4 +17,4 @@ do_stage() {
PACKAGES = "${PN} ${PN}-dbg"
FILES_${PN} = "${libdir}/libavahi-ui*.so.*"
-FILES_${PN}-dbg = "${libdir}/.debug/libavah-ui*"
+FILES_${PN}-dbg += "${libdir}/.debug/libavah-ui*"
diff --git a/packages/avahi/avahi_0.6.21.bb b/packages/avahi/avahi_0.6.21.bb
index fa3fef039e..2c30fbc2c8 100644
--- a/packages/avahi/avahi_0.6.21.bb
+++ b/packages/avahi/avahi_0.6.21.bb
@@ -2,3 +2,4 @@ require avahi.inc
PR = "r1"
SRC_URI += "file://dbus-pre-1.1.1-support.patch;patch=1"
+SRC_URI += "file://avr32-ipv6-fix.patch;patch=1"
diff --git a/packages/avahi/files/avr32-ipv6-fix.patch b/packages/avahi/files/avr32-ipv6-fix.patch
new file mode 100644
index 0000000000..f0710a1002
--- /dev/null
+++ b/packages/avahi/files/avr32-ipv6-fix.patch
@@ -0,0 +1,42 @@
+--- /tmp/socket.c 2007-09-14 14:03:01.395330465 +0200
++++ avahi-0.6.21/avahi-core/socket.c 2007-09-14 14:08:42.081140297 +0200
+@@ -66,6 +66,39 @@
+ #endif
+ #endif
+
++#define IPV6_ADDRFORM 1
++#define IPV6_2292PKTINFO 2
++#define IPV6_2292HOPOPTS 3
++#define IPV6_2292DSTOPTS 4
++#define IPV6_2292RTHDR 5
++#define IPV6_2292PKTOPTIONS 6
++#define IPV6_CHECKSUM 7
++#define IPV6_2292HOPLIMIT 8
++#define IPV6_NEXTHOP 9
++#define IPV6_AUTHHDR 10 /* obsolete */
++#define IPV6_FLOWINFO 11
++
++#define IPV6_UNICAST_HOPS 16
++#define IPV6_MULTICAST_IF 17
++#define IPV6_MULTICAST_HOPS 18
++#define IPV6_MULTICAST_LOOP 19
++#define IPV6_ADD_MEMBERSHIP 20
++#define IPV6_DROP_MEMBERSHIP 21
++#define IPV6_ROUTER_ALERT 22
++#define IPV6_MTU_DISCOVER 23
++#define IPV6_MTU 24
++#define IPV6_RECVERR 25
++#define IPV6_V6ONLY 26
++#define IPV6_JOIN_ANYCAST 27
++#define IPV6_LEAVE_ANYCAST 28
++
++/* IPV6_MTU_DISCOVER values */
++#define IPV6_PMTUDISC_DONT 0
++#define IPV6_PMTUDISC_WANT 1
++#define IPV6_PMTUDISC_DO 2
++#define IPV6_PMTUDISC_PROBE 3
++
++
+ static void mdns_mcast_group_ipv4(struct sockaddr_in *ret_sa) {
+ assert(ret_sa);
+
diff --git a/packages/avetanabt/avetanabt_20060413.bb b/packages/avetanabt/avetanabt_20060413.bb
index 5b408e6a71..cee5fc0849 100644
--- a/packages/avetanabt/avetanabt_20060413.bb
+++ b/packages/avetanabt/avetanabt_20060413.bb
@@ -10,7 +10,6 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/avetanabt/avetanaBluetooth-${PV}.tgz"
S = "${WORKDIR}/avetanabt"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/libavetanaBT.so ${datadir}/avetanabt/avetanaBT.jar"
do_compile() {
diff --git a/packages/avetanabt/avetanabt_cvs.bb b/packages/avetanabt/avetanabt_cvs.bb
index 08fe2e9b82..44c91666be 100644
--- a/packages/avetanabt/avetanabt_cvs.bb
+++ b/packages/avetanabt/avetanabt_cvs.bb
@@ -13,7 +13,6 @@ SRC_URI = "cvs://anonymous@avetanabt.cvs.sourceforge.net/cvsroot/avetanabt;modul
S = "${WORKDIR}/avetanabt"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/libavetanaBT.so ${datadir}/avetanabt/avetanaBT.jar"
do_compile() {
diff --git a/packages/base-files/base-files_3.0.14.bb b/packages/base-files/base-files_3.0.14.bb
index 21a83e98e5..8bfbb6702e 100644
--- a/packages/base-files/base-files_3.0.14.bb
+++ b/packages/base-files/base-files_3.0.14.bb
@@ -142,7 +142,7 @@ do_install_append_netbook-pro () {
mkdir -p ${D}/initrd
}
-PACKAGES = "${PN}-doc ${PN}"
+PACKAGES = "${PN}-dbg ${PN}-doc ${PN}"
FILES_${PN} = "/*"
FILES_${PN}-doc = "${docdir} ${datadir}/common-licenses"
diff --git a/packages/beep/beep_1.2.2.bb b/packages/beep/beep_1.2.2.bb
index 87c9ee16d6..759f74f8a0 100644
--- a/packages/beep/beep_1.2.2.bb
+++ b/packages/beep/beep_1.2.2.bb
@@ -10,7 +10,7 @@ SRC_URI = "http://johnath.com/beep/beep-${PV}.tar.gz"
SRC_URI += "file://linux-input.patch;patch=1"
S = "${WORKDIR}/beep-${PV}"
-PACKAGES = "${PN} ${PN}-doc"
+PACKAGES += "${PN} ${PN}-doc"
inherit autotools
diff --git a/packages/binutils/binutils-2.17/500-avr32-atmel.1.3.0.patch b/packages/binutils/binutils-2.17/500-avr32-atmel.1.3.0.patch
new file mode 100644
index 0000000000..28a7f00804
--- /dev/null
+++ b/packages/binutils/binutils-2.17/500-avr32-atmel.1.3.0.patch
@@ -0,0 +1,111130 @@
+diff -Nrup binutils-2.17/bfd/aclocal.m4 binutils-2.17.atmel.1.3.0/bfd/aclocal.m4
+--- binutils-2.17/bfd/aclocal.m4 2005-09-30 20:38:50.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/aclocal.m4 2007-03-26 10:30:51.000000000 +0200
+@@ -1,4 +1,4 @@
+-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
++# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ # 2005 Free Software Foundation, Inc.
+@@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+- [AM_AUTOMAKE_VERSION([1.9.5])])
++ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+ # AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+diff -Nrup binutils-2.17/bfd/archures.c binutils-2.17.atmel.1.3.0/bfd/archures.c
+--- binutils-2.17/bfd/archures.c 2006-03-06 14:42:03.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/archures.c 2007-03-26 10:20:30.000000000 +0200
+@@ -334,6 +334,9 @@ DESCRIPTION
+ .#define bfd_mach_avr3 3
+ .#define bfd_mach_avr4 4
+ .#define bfd_mach_avr5 5
++. bfd_arch_avr32, {* Atmel AVR32 *}
++.#define bfd_mach_avr32_ap 7000
++.#define bfd_mach_avr32_uc 3000
+ . bfd_arch_bfin, {* ADI Blackfin *}
+ .#define bfd_mach_bfin 1
+ . bfd_arch_cr16c, {* National Semiconductor CompactRISC. *}
+@@ -423,6 +426,7 @@ extern const bfd_arch_info_type bfd_alph
+ extern const bfd_arch_info_type bfd_arc_arch;
+ extern const bfd_arch_info_type bfd_arm_arch;
+ extern const bfd_arch_info_type bfd_avr_arch;
++extern const bfd_arch_info_type bfd_avr32_arch;
+ extern const bfd_arch_info_type bfd_bfin_arch;
+ extern const bfd_arch_info_type bfd_cr16c_arch;
+ extern const bfd_arch_info_type bfd_cris_arch;
+@@ -490,6 +494,7 @@ static const bfd_arch_info_type * const
+ &bfd_arc_arch,
+ &bfd_arm_arch,
+ &bfd_avr_arch,
++ &bfd_avr32_arch,
+ &bfd_bfin_arch,
+ &bfd_cr16c_arch,
+ &bfd_cris_arch,
+diff -Nrup binutils-2.17/bfd/bfd-in2.h binutils-2.17.atmel.1.3.0/bfd/bfd-in2.h
+--- binutils-2.17/bfd/bfd-in2.h 2006-03-26 01:38:42.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/bfd-in2.h 2007-03-26 10:33:41.000000000 +0200
+@@ -1931,6 +1931,9 @@ enum bfd_architecture
+ #define bfd_mach_avr3 3
+ #define bfd_mach_avr4 4
+ #define bfd_mach_avr5 5
++ bfd_arch_avr32, /* Atmel AVR32 */
++#define bfd_mach_avr32_ap 7000
++#define bfd_mach_avr32_uc 3000
+ bfd_arch_bfin, /* ADI Blackfin */
+ #define bfd_mach_bfin 1
+ bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
+@@ -3577,6 +3580,87 @@ instructions */
+ instructions */
+ BFD_RELOC_AVR_6_ADIW,
+
++/* Difference between two labels: L2 - L1. The value of L1 is encoded
++as sym + addend, while the initial difference after assembly is
++inserted into the object file by the assembler. */
++ BFD_RELOC_AVR32_DIFF32,
++ BFD_RELOC_AVR32_DIFF16,
++ BFD_RELOC_AVR32_DIFF8,
++
++/* Reference to a symbol through the Global Offset Table. The linker
++will allocate an entry for symbol in the GOT and insert the offset
++of this entry as the relocation value. */
++ BFD_RELOC_AVR32_GOT32,
++ BFD_RELOC_AVR32_GOT16,
++ BFD_RELOC_AVR32_GOT8,
++
++/* Normal (non-pc-relative) code relocations. Alignment and signedness
++is indicated by the suffixes. S means signed, U means unsigned. W
++means word-aligned, H means halfword-aligned, neither means
++byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
++ BFD_RELOC_AVR32_21S,
++ BFD_RELOC_AVR32_16U,
++ BFD_RELOC_AVR32_16S,
++ BFD_RELOC_AVR32_SUB5,
++ BFD_RELOC_AVR32_8S_EXT,
++ BFD_RELOC_AVR32_8S,
++
++/* PC-relative relocations are signed if neither 'U' nor 'S' is
++specified. However, we explicitly tack on a 'B' to indicate no
++alignment, to avoid confusion with data relocs. All of these resolve
++to sym + addend - offset, except the one with 'N' (negated) suffix.
++This particular one resolves to offset - sym - addend. */
++ BFD_RELOC_AVR32_22H_PCREL,
++ BFD_RELOC_AVR32_18W_PCREL,
++ BFD_RELOC_AVR32_16B_PCREL,
++ BFD_RELOC_AVR32_16N_PCREL,
++ BFD_RELOC_AVR32_14UW_PCREL,
++ BFD_RELOC_AVR32_11H_PCREL,
++ BFD_RELOC_AVR32_10UW_PCREL,
++ BFD_RELOC_AVR32_9H_PCREL,
++ BFD_RELOC_AVR32_9UW_PCREL,
++
++/* Subtract the link-time address of the GOT from (symbol + addend)
++and insert the result. */
++ BFD_RELOC_AVR32_GOTPC,
++
++/* Reference to a symbol through the GOT. The linker will allocate an
++entry for symbol in the GOT and insert the offset of this entry as
++the relocation value. addend must be zero. As usual, 'S' means
++signed, 'W' means word-aligned, etc. */
++ BFD_RELOC_AVR32_GOTCALL,
++ BFD_RELOC_AVR32_LDA_GOT,
++ BFD_RELOC_AVR32_GOT21S,
++ BFD_RELOC_AVR32_GOT18SW,
++ BFD_RELOC_AVR32_GOT16S,
++
++/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
++a whole lot of sense. */
++ BFD_RELOC_AVR32_32_CPENT,
++
++/* Constant pool references. Some of these relocations are signed,
++others are unsigned. It doesn't really matter, since the constant
++pool always comes after the code that references it. */
++ BFD_RELOC_AVR32_CPCALL,
++ BFD_RELOC_AVR32_16_CP,
++ BFD_RELOC_AVR32_9W_CP,
++
++/* sym must be the absolute symbol. The addend specifies the alignment
++order, e.g. if addend is 2, the linker must add padding so that the
++next address is aligned to a 4-byte boundary. */
++ BFD_RELOC_AVR32_ALIGN,
++
++/* Code relocations that will never make it to the output file. */
++ BFD_RELOC_AVR32_14UW,
++ BFD_RELOC_AVR32_10UW,
++ BFD_RELOC_AVR32_10SW,
++ BFD_RELOC_AVR32_STHH_W,
++ BFD_RELOC_AVR32_7UW,
++ BFD_RELOC_AVR32_6S,
++ BFD_RELOC_AVR32_6UW,
++ BFD_RELOC_AVR32_4UH,
++ BFD_RELOC_AVR32_3U,
++
+ /* Direct 12 bit. */
+ BFD_RELOC_390_12,
+
+diff -Nrup binutils-2.17/bfd/config.bfd binutils-2.17.atmel.1.3.0/bfd/config.bfd
+--- binutils-2.17/bfd/config.bfd 2006-04-05 14:41:57.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/config.bfd 2007-03-26 10:20:30.000000000 +0200
+@@ -317,6 +317,10 @@ case "${targ}" in
+ targ_underscore=yes
+ ;;
+
++ avr32-*-*)
++ targ_defvec=bfd_elf32_avr32_vec
++ ;;
++
+ c30-*-*aout* | tic30-*-*aout*)
+ targ_defvec=tic30_aout_vec
+ ;;
+diff -Nrup binutils-2.17/bfd/config.in binutils-2.17.atmel.1.3.0/bfd/config.in
+--- binutils-2.17/bfd/config.in 2005-11-03 17:06:10.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/config.in 2007-03-26 10:30:55.000000000 +0200
+@@ -313,18 +313,18 @@
+ /* Define to the version of this package. */
+ #undef PACKAGE_VERSION
+
+-/* The size of a `long', as computed by sizeof. */
++/* The size of `long', as computed by sizeof. */
+ #undef SIZEOF_LONG
+
+-/* The size of a `long long', as computed by sizeof. */
++/* The size of `long long', as computed by sizeof. */
+ #undef SIZEOF_LONG_LONG
+
+-/* The size of a `off_t', as computed by sizeof. */
++/* The size of `off_t', as computed by sizeof. */
+ #undef SIZEOF_OFF_T
+
+ /* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+- automatically deduced at run-time.
++ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+@@ -368,8 +368,8 @@
+ #undef inline
+ #endif
+
+-/* Define to `long' if <sys/types.h> does not define. */
++/* Define to `long int' if <sys/types.h> does not define. */
+ #undef off_t
+
+-/* Define to `unsigned' if <sys/types.h> does not define. */
++/* Define to `unsigned int' if <sys/types.h> does not define. */
+ #undef size_t
+diff -Nrup binutils-2.17/bfd/configure binutils-2.17.atmel.1.3.0/bfd/configure
+--- binutils-2.17/bfd/configure 2006-06-23 20:17:03.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/configure 2007-03-26 10:30:54.000000000 +0200
+@@ -1,25 +1,54 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.59.
++# Generated by GNU Autoconf 2.61.
+ #
+-# Copyright (C) 2003 Free Software Foundation, Inc.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -29,8 +58,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -44,18 +108,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -63,157 +128,388 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
++# CDPATH.
++$as_unset CDPATH
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
++if test "x$CONFIG_SHELL" = x; then
++ if (eval ":") 2>/dev/null; then
++ as_have_required=yes
++else
++ as_have_required=no
++fi
++
++ if test $as_have_required = yes && (eval ":
++(as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
+ fi
+
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0) || { (exit 1); exit 1; }
++
++(
++ as_lineno_1=\$LINENO
++ as_lineno_2=\$LINENO
++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
++") 2> /dev/null; then
++ :
++else
++ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
++ case $as_dir in
+ /*)
+- if ("$as_dir/$as_base" -c '
++ for as_base in sh bash ksh sh5; do
++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
++ done;;
++ esac
++done
++IFS=$as_save_IFS
++
++
++ for as_shell in $as_candidate_shells $SHELL; do
++ # Try only shells that exist, to save several forks.
++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
++ { ("$as_shell") 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++_ASEOF
++}; then
++ CONFIG_SHELL=$as_shell
++ as_have_required=yes
++ if { "$as_shell" 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++(as_func_return () {
++ (exit $1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = "$1" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test $exitcode = 0) || { (exit 1); exit 1; }
++
++(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
++
++_ASEOF
++}; then
++ break
++fi
++
++fi
++
++ done
++
++ if test "x$CONFIG_SHELL" != x; then
++ for as_var in BASH_ENV ENV
++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ done
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
++fi
++
++
++ if test $as_have_required = no; then
++ echo This script requires a shell more modern than all the
++ echo shells that I found on your system. Please install a
++ echo modern shell, or manually run the script under such a
++ echo shell if you do have one.
++ { (exit 1); exit 1; }
++fi
++
++
++fi
++
++fi
++
++
++
++(eval "as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0") || {
++ echo No shell found that supports shell functions.
++ echo Please tell autoconf@gnu.org about your system,
++ echo including any error possibly output before this
++ echo message
++}
++
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
++ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -222,7 +518,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+
++exec 7<&0 </dev/null 6>&1
+
+ # Name of the host.
+ # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+ # so uname gets run too.
+ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+-exec 6>&1
+-
+ #
+ # Initializations.
+ #
+ ac_default_prefix=/usr/local
++ac_clean_files=
+ ac_config_libobj_dir=.
++LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete. It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+ # Identity of this package.
+ PACKAGE_NAME=
+ PACKAGE_TARNAME=
+@@ -275,42 +580,199 @@ ac_unique_file="libbfd.c"
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#if HAVE_SYS_TYPES_H
++#ifdef HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#if HAVE_SYS_STAT_H
++#ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#if STDC_HEADERS
++#ifdef STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# if HAVE_STDLIB_H
++# ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#if HAVE_STRINGS_H
++#ifdef HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#if HAVE_INTTYPES_H
++#ifdef HAVE_INTTYPES_H
+ # include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-# include <stdint.h>
+-# endif
+ #endif
+-#if HAVE_UNISTD_H
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL WARN_CFLAGS NO_WERROR MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INSTALL_LIBBFD_TRUE INSTALL_LIBBFD_FALSE host_noncanonical target_noncanonical bfdlibdir bfdincludedir CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l HDEFINES BFD_HOST_64BIT_LONG BFD_HOST_LONG_LONG BFD_HOST_64_BIT_DEFINED BFD_HOST_64_BIT BFD_HOST_U_64_BIT CC_FOR_BUILD EXEEXT_FOR_BUILD COREFILE COREFLAG WIN32LDFLAGS WIN32LIBADD TDEFINES wordsize bfd_libs all_backends bfd_backends bfd_machines bfd_default_target_size bfd_file_ptr bfd_ufile_ptr tdefaults datarootdir docdir htmldir LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL
++PATH_SEPARATOR
++PACKAGE_NAME
++PACKAGE_TARNAME
++PACKAGE_VERSION
++PACKAGE_STRING
++PACKAGE_BUGREPORT
++exec_prefix
++prefix
++program_transform_name
++bindir
++sbindir
++libexecdir
++datarootdir
++datadir
++sysconfdir
++sharedstatedir
++localstatedir
++includedir
++oldincludedir
++docdir
++infodir
++htmldir
++dvidir
++pdfdir
++psdir
++libdir
++localedir
++mandir
++DEFS
++ECHO_C
++ECHO_N
++ECHO_T
++LIBS
++build_alias
++host_alias
++target_alias
++build
++build_cpu
++build_vendor
++build_os
++host
++host_cpu
++host_vendor
++host_os
++target
++target_cpu
++target_vendor
++target_os
++CC
++CFLAGS
++LDFLAGS
++CPPFLAGS
++ac_ct_CC
++EXEEXT
++OBJEXT
++INSTALL_PROGRAM
++INSTALL_SCRIPT
++INSTALL_DATA
++CYGPATH_W
++PACKAGE
++VERSION
++ACLOCAL
++AUTOCONF
++AUTOMAKE
++AUTOHEADER
++MAKEINFO
++install_sh
++STRIP
++INSTALL_STRIP_PROGRAM
++mkdir_p
++AWK
++SET_MAKE
++am__leading_dot
++AMTAR
++am__tar
++am__untar
++DEPDIR
++am__include
++am__quote
++AMDEP_TRUE
++AMDEP_FALSE
++AMDEPBACKSLASH
++CCDEPMODE
++am__fastdepCC_TRUE
++am__fastdepCC_FALSE
++AR
++RANLIB
++LN_S
++LIBTOOL
++WARN_CFLAGS
++NO_WERROR
++MAINTAINER_MODE_TRUE
++MAINTAINER_MODE_FALSE
++MAINT
++INSTALL_LIBBFD_TRUE
++INSTALL_LIBBFD_FALSE
++host_noncanonical
++target_noncanonical
++bfdlibdir
++bfdincludedir
++CPP
++GREP
++EGREP
++ALLOCA
++USE_NLS
++MSGFMT
++GMSGFMT
++XGETTEXT
++USE_INCLUDED_LIBINTL
++CATALOGS
++CATOBJEXT
++DATADIRNAME
++GMOFILES
++INSTOBJEXT
++INTLDEPS
++INTLLIBS
++INTLOBJS
++POFILES
++POSUB
++INCLUDE_LOCALE_H
++GT_NO
++GT_YES
++MKINSTALLDIRS
++l
++HDEFINES
++BFD_HOST_64BIT_LONG
++BFD_HOST_LONG_LONG
++BFD_HOST_64_BIT_DEFINED
++BFD_HOST_64_BIT
++BFD_HOST_U_64_BIT
++CC_FOR_BUILD
++EXEEXT_FOR_BUILD
++COREFILE
++COREFLAG
++WIN32LDFLAGS
++WIN32LIBADD
++TDEFINES
++wordsize
++bfd_libs
++all_backends
++bfd_backends
++bfd_machines
++bfd_default_target_size
++bfd_file_ptr
++bfd_ufile_ptr
++tdefaults
++LIBOBJS
++LTLIBOBJS'
+ ac_subst_files=''
++ ac_precious_vars='build_alias
++host_alias
++target_alias
++CC
++CFLAGS
++LDFLAGS
++LIBS
++CPPFLAGS
++CPP'
++
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -337,34 +799,48 @@ x_libraries=NONE
+ # and all the variables that are supposed to be based on exec_prefix
+ # by default will actually change.
+ # Use braces instead of parens because sh, perl, etc. also accept them.
++# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datadir='${prefix}/share'
++datarootdir='${prefix}/share'
++datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+-libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-infodir='${prefix}/info'
+-mandir='${prefix}/man'
++docdir='${datarootdir}/doc/${PACKAGE}'
++infodir='${datarootdir}/info'
++htmldir='${docdir}'
++dvidir='${docdir}'
++pdfdir='${docdir}'
++psdir='${docdir}'
++libdir='${exec_prefix}/lib'
++localedir='${datarootdir}/locale'
++mandir='${datarootdir}/man'
+
+ ac_prev=
++ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval "$ac_prev=\$ac_option"
++ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++ case $ac_option in
++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
++ *) ac_optarg=yes ;;
++ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_option in
++ case $ac_dashdash$ac_option in
++ --)
++ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -386,33 +862,45 @@ do
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+- | --da=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
++ | --dataroo | --dataro | --datar)
++ ac_prev=datarootdir ;;
++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
++ datarootdir=$ac_optarg ;;
++
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- eval "enable_$ac_feature=no" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=no ;;
++
++ -docdir | --docdir | --docdi | --doc | --do)
++ ac_prev=docdir ;;
++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
++ docdir=$ac_optarg ;;
++
++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
++ ac_prev=dvidir ;;
++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
++ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "enable_$ac_feature='$ac_optarg'" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -439,6 +927,12 @@ do
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
++ ac_prev=htmldir ;;
++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
++ | --ht=*)
++ htmldir=$ac_optarg ;;
++
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -463,13 +957,16 @@ do
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
++ -localedir | --localedir | --localedi | --localed | --locale)
++ ac_prev=localedir ;;
++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
++ localedir=$ac_optarg ;;
++
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst \
+- | --locals | --local | --loca | --loc | --lo)
++ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -534,6 +1031,16 @@ do
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
++ ac_prev=pdfdir ;;
++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
++ pdfdir=$ac_optarg ;;
++
++ -psdir | --psdir | --psdi | --psd | --ps)
++ ac_prev=psdir ;;
++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
++ psdir=$ac_optarg ;;
++
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -586,24 +1093,20 @@ do
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package| sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "with_$ac_package='$ac_optarg'" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package | sed 's/-/_/g'`
+- eval "with_$ac_package=no" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -634,8 +1137,7 @@ Try \`$0 --help' for more information."
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+- eval "$ac_envvar='$ac_optarg'"
++ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+@@ -655,27 +1157,19 @@ if test -n "$ac_prev"; then
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
+-do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
+- esac
+-done
+-
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+- localstatedir libdir includedir oldincludedir infodir mandir
++# Be sure to have absolute directory names.
++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
++ datadir sysconfdir sharedstatedir localstatedir includedir \
++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
++ libdir localedir mandir
+ do
+- eval ac_val=$`echo $ac_var`
++ eval ac_val=\$$ac_var
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
++ [\\/$]* | ?:[\\/]* ) continue;;
++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -702,74 +1196,76 @@ test -n "$host_alias" && ac_tool_prefix=
+ test "$silent" = yes && exec 6>/dev/null
+
+
++ac_pwd=`pwd` && test -n "$ac_pwd" &&
++ac_ls_di=`ls -di .` &&
++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
++ { echo "$as_me: error: Working directory cannot be determined" >&2
++ { (exit 1); exit 1; }; }
++test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
++ { echo "$as_me: error: pwd does not report name of working directory" >&2
++ { (exit 1); exit 1; }; }
++
++
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+- # Try the directory containing this script, then its parent.
+- ac_confdir=`(dirname "$0") 2>/dev/null ||
++ # Try the directory containing this script, then the parent directory.
++ ac_confdir=`$as_dirname -- "$0" ||
+ $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$0" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r $srcdir/$ac_unique_file; then
++ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r $srcdir/$ac_unique_file; then
+- if test "$ac_srcdir_defaulted" = yes; then
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+- { (exit 1); exit 1; }; }
+- else
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+- { (exit 1); exit 1; }; }
+- fi
+-fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+- { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
++if test ! -r "$srcdir/$ac_unique_file"; then
++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++ { (exit 1); exit 1; }; }
++fi
++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
++ac_abs_confdir=`(
++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
++ { (exit 1); exit 1; }; }
++ pwd)`
++# When building in place, set srcdir=.
++if test "$ac_abs_confdir" = "$ac_pwd"; then
++ srcdir=.
++fi
++# Remove unnecessary trailing slashes from srcdir.
++# Double slashes in file names in object file debugging info
++# mess up M-x gdb in Emacs.
++case $srcdir in
++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
++esac
++for ac_var in $ac_precious_vars; do
++ eval ac_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_env_${ac_var}_value=\$${ac_var}
++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_cv_env_${ac_var}_value=\$${ac_var}
++done
+
+ #
+ # Report the --help message.
+@@ -798,9 +1294,6 @@ Configuration:
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-_ACEOF
+-
+- cat <<_ACEOF
+ Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+@@ -818,15 +1311,22 @@ Fine tuning of the installation director
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+- --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+- --infodir=DIR info documentation [PREFIX/info]
+- --mandir=DIR man documentation [PREFIX/man]
++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
++ --infodir=DIR info documentation [DATAROOTDIR/info]
++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
++ --mandir=DIR man documentation [DATAROOTDIR/man]
++ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
++ --htmldir=DIR html documentation [DOCDIR]
++ --dvidir=DIR dvi documentation [DOCDIR]
++ --pdfdir=DIR pdf documentation [DOCDIR]
++ --psdir=DIR ps documentation [DOCDIR]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -880,126 +1380,95 @@ Some influential environment variables:
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+- headers in a nonstandard directory <include dir>
++ LIBS libraries to pass to the linker, e.g. -l<library>
++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
++ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ _ACEOF
++ac_status=$?
+ fi
+
+ if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+- ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+- test -d $ac_dir || continue
++ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+-
+- cd $ac_dir
+- # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f $ac_srcdir/configure.gnu; then
+- echo
+- $SHELL $ac_srcdir/configure.gnu --help=recursive
+- elif test -f $ac_srcdir/configure; then
+- echo
+- $SHELL $ac_srcdir/configure --help=recursive
+- elif test -f $ac_srcdir/configure.ac ||
+- test -f $ac_srcdir/configure.in; then
+- echo
+- $ac_configure --help
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
++
++ cd "$ac_dir" || { ac_status=$?; continue; }
++ # Check for guested configure.
++ if test -f "$ac_srcdir/configure.gnu"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
++ elif test -f "$ac_srcdir/configure"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+- fi
+- cd $ac_popdir
++ fi || ac_status=$?
++ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+ fi
+
+-test -n "$ac_init_help" && exit 0
++test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+ cat <<\_ACEOF
++configure
++generated by GNU Autoconf 2.61
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+- exit 0
++ exit
+ fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
++cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
++exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1018,7 +1487,7 @@ uname -v = `(uname -v) 2>/dev/null || ec
+ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+ /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+ /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+ /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+ /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+ /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+@@ -1032,6 +1501,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
++IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1053,7 +1523,6 @@ _ACEOF
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
+-ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1064,7 +1533,7 @@ do
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+@@ -1086,9 +1555,7 @@ do
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
++ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+@@ -1099,8 +1566,8 @@ $as_unset ac_configure_args1 || test "${
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log. We remove comments because anyway the quotes in there
+ # would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
++# WARNING: Use '\'' to represent an apostrophe within the trap.
++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+ trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+@@ -1113,20 +1580,34 @@ trap 'exit_status=$?
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
+ (set) 2>&1 |
+- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ sed -n \
+- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+- ;;
++ "s/'\''/'\''\\\\'\'''\''/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
++ ;; #(
+ *)
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-}
++ esac |
++ sort
++)
+ echo
+
+ cat <<\_ASBOX
+@@ -1137,22 +1618,28 @@ _ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
++## ------------------- ##
++## File substitutions. ##
++## ------------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+@@ -1164,26 +1651,24 @@ _ASBOX
+ ## ----------- ##
+ _ASBOX
+ echo
+- sed "/^$/d" confdefs.h | sort
++ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+- rm -f core *.core &&
+- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core core.conftest.* &&
++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+- ' 0
++' 0
+ for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+ done
+ ac_signal=0
+
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
++rm -f -r conftest* confdefs.h
+
+ # Predefined preprocessor variables.
+
+@@ -1214,14 +1699,17 @@ _ACEOF
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -z "$CONFIG_SITE"; then
+- if test "x$prefix" != xNONE; then
+- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+- else
+- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+- fi
++if test -n "$CONFIG_SITE"; then
++ set x "$CONFIG_SITE"
++elif test "x$prefix" != xNONE; then
++ set x "$prefix/share/config.site" "$prefix/etc/config.site"
++else
++ set x "$ac_default_prefix/share/config.site" \
++ "$ac_default_prefix/etc/config.site"
+ fi
+-for ac_site_file in $CONFIG_SITE; do
++shift
++for ac_site_file
++do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+ echo "$as_me: loading site script $ac_site_file" >&6;}
+@@ -1237,8 +1725,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -1250,12 +1738,11 @@ fi
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
++for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+- eval ac_new_val="\$ac_env_${ac_var}_value"
++ eval ac_old_val=\$ac_cv_env_${ac_var}_value
++ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+@@ -1280,8 +1767,7 @@ echo "$as_me: current value: $ac_new_v
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1298,12 +1784,6 @@ echo "$as_me: error: run \`make distclea
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+
+
+
+@@ -1320,109 +1800,164 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ ac_aux_dir=
+-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+- if test -f $ac_dir/install-sh; then
++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
++ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f $ac_dir/install.sh; then
++ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f $ac_dir/shtool; then
++ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+ done
+ if test -z "$ac_aux_dir"; then
+- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++
++# These three variables are undocumented and unsupported,
++# and are intended to be withdrawn in a future Autoconf release.
++# They can cause serious problems if a builder's source tree is in a directory
++# whose full name contains unusual characters.
++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
++
+
+ # Make sure we can run config.sub.
+-$ac_config_sub sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+-echo "$as_me:$LINENO: checking build system type" >&5
+-echo $ECHO_N "checking build system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking build system type" >&5
++echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+ if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_build_alias=$build_alias
+-test -z "$ac_cv_build_alias" &&
+- ac_cv_build_alias=`$ac_config_guess`
+-test -z "$ac_cv_build_alias" &&
++ ac_build_alias=$build_alias
++test "x$ac_build_alias" = x &&
++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
++test "x$ac_build_alias" = x &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+ echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6; }
++case $ac_cv_build in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
++echo "$as_me: error: invalid value of canonical build" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ build=$ac_cv_build
+-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_build
++shift
++build_cpu=$1
++build_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++build_os=$*
++IFS=$ac_save_IFS
++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking host system type" >&5
++echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+ if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_host_alias=$host_alias
+-test -z "$ac_cv_host_alias" &&
+- ac_cv_host_alias=$ac_cv_build_alias
+-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
++ if test "x$host_alias" = x; then
++ ac_cv_host=$ac_cv_build
++else
++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6; }
++case $ac_cv_host in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
++echo "$as_me: error: invalid value of canonical host" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ host=$ac_cv_host
+-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_host
++shift
++host_cpu=$1
++host_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++host_os=$*
++IFS=$ac_save_IFS
++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking target system type" >&5
++echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
+ if test "${ac_cv_target+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_target_alias=$target_alias
+-test "x$ac_cv_target_alias" = "x" &&
+- ac_cv_target_alias=$ac_cv_host_alias
+-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
++ if test "x$target_alias" = x; then
++ ac_cv_target=$ac_cv_host
++else
++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
++echo "${ECHO_T}$ac_cv_target" >&6; }
++case $ac_cv_target in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
++echo "$as_me: error: invalid value of canonical target" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ target=$ac_cv_target
+-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_target
++shift
++target_cpu=$1
++target_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++target_os=$*
++IFS=$ac_save_IFS
++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+ # The aliases save the names the user supplied, while $host etc.
+@@ -1439,8 +1974,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1453,32 +1988,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1491,36 +2028,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1533,74 +2085,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1614,7 +2126,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -1625,6 +2137,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -1642,22 +2155,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1670,36 +2184,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1712,29 +2228,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -1747,21 +2279,35 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+@@ -1786,47 +2332,77 @@ ac_clean_files="$ac_clean_files a.out a.
+ # Try to create an executable without -o first, disregard a.out.
+ # It will help us diagnose broken compilers, and finding out an intuition
+ # of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+- (eval $ac_link_default) 2>&5
++#
++# List of possible output files, starting from the most likely.
++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
++# only as a last resort. b.out is created by i960 compilers.
++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
++#
++# The IRIX 6 linker writes into existing files which may not be
++# executable, retaining their permissions. Remove them first so a
++# subsequent execution test works.
++ac_rmfiles=
++for ac_file in $ac_files
++do
++ case $ac_file in
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
++ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
++ esac
++done
++rm -f $ac_rmfiles
++
++if { (ac_try="$ac_link_default"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- # Find the output, starting from the most likely. This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
++# in a Makefile. We should not override ac_cv_exeext if it was cached,
++# so that the user can short-circuit this test for compilers unknown to
++# Autoconf.
++for ac_file in $ac_files ''
+ do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+- ;;
+- conftest.$ac_ext )
+- # This is the source file.
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- # FIXME: I believe we export ac_cv_exeext for Libtool,
+- # but it would be cool to find out if it's true. Does anybody
+- # maintain Libtool? --akim.
+- export ac_cv_exeext
++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
++ then :; else
++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ fi
++ # We set ac_cv_exeext here because the later test for it is not
++ # safe: cross compilers may not add the suffix if given an `-o'
++ # argument, so we may need to know it at that point already.
++ # Even if this section looks crufty: it has the advantage of
++ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+ done
++test "$ac_cv_exeext" = no && ac_cv_exeext=
++
+ else
++ ac_file=''
++fi
++
++{ echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6; }
++if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -1838,19 +2414,21 @@ See \`config.log' for more details." >&2
+ fi
+
+ ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+ # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+ # If not cross compiling, check that we can run a simple program.
+ if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -1869,22 +2447,27 @@ See \`config.log' for more details." >&2
+ fi
+ fi
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
++echo "${ECHO_T}$cross_compiling" >&6; }
++
++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -1895,9 +2478,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
+ for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -1911,14 +2493,14 @@ See \`config.log' for more details." >&2
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
++echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+ rm -f conftest.$ac_ext
+ EXEEXT=$ac_cv_exeext
+ ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+ if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1938,14 +2520,20 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
++ for ac_file in conftest.o conftest.obj conftest.*; do
++ test -f "$ac_file" || continue;
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -1963,12 +2551,12 @@ fi
+
+ rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
++echo "${ECHO_T}$ac_cv_objext" >&6; }
+ OBJEXT=$ac_cv_objext
+ ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1991,50 +2579,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -2050,38 +2637,118 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -2097,12 +2764,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -2136,12 +2803,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -2156,335 +2828,144 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
++if test "${ac_cv_search_strerror+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_func_search_save_LIBS=$LIBS
+ cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char strerror ();
+ int
+ main ()
+ {
+-exit (42);
++return strerror ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++for ac_lib in '' cposix; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_strerror=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_strerror+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-echo "$as_me:$LINENO: checking for library containing strerror" >&5
+-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
++done
+ if test "${ac_cv_search_strerror+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_strerror=no
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="none required"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_strerror" = no; then
+- for ac_lib in cposix; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="-l$ac_lib"
+-break
++ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++ ac_cv_search_strerror=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+-echo "${ECHO_T}$ac_cv_search_strerror" >&6
+-if test "$ac_cv_search_strerror" != no; then
+- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
++echo "${ECHO_T}$ac_cv_search_strerror" >&6; }
++ac_res=$ac_cv_search_strerror
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+@@ -2503,8 +2984,8 @@ am__api_version="1.9"
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -2526,7 +3007,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -2545,21 +3026,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -2569,8 +3051,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -2612,20 +3094,20 @@ echo "$as_me: error: newly created file
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ test "$program_prefix" != NONE &&
+- program_transform_name="s,^,$program_prefix,;$program_transform_name"
++ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
++ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm conftest.sed
++rm -f conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -2677,8 +3159,8 @@ for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2691,54 +3173,57 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6
++ { echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$AWK" && break
+ done
+
+-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
++SHELL = /bin/sh
+ all:
+- @echo 'ac_maketemp="$(MAKE)"'
++ @echo '@@@%%%=$(MAKE)=@@@%%%'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+-if test -n "$ac_maketemp"; then
+- eval ac_cv_prog_make_${ac_make}_set=yes
+-else
+- eval ac_cv_prog_make_${ac_make}_set=no
+-fi
++case `${MAKE-make} -f conftest.make 2>/dev/null` in
++ *@@@%%%=?*=@@@%%%*)
++ eval ac_cv_prog_make_${ac_make}_set=yes;;
++ *)
++ eval ac_cv_prog_make_${ac_make}_set=no;;
++esac
+ rm -f conftest.make
+ fi
+-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -2753,7 +3238,7 @@ rmdir .tst 2>/dev/null
+
+ DEPDIR="${am__leading_dot}deps"
+
+- ac_config_commands="$ac_config_commands depfiles"
++ac_config_commands="$ac_config_commands depfiles"
+
+
+ am_make=${MAKE-make}
+@@ -2763,8 +3248,8 @@ am__doit:
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -2791,15 +3276,15 @@ if test "$am__include" = "#"; then
+ fi
+
+
+-echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6
++{ echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6; }
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval="$enable_dependency_tracking"
++ enableval=$enable_dependency_tracking;
++fi
+
+-fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -2836,7 +3321,7 @@ fi
+
+ # Define the identity of the package.
+ PACKAGE=bfd
+- VERSION=2.17
++ VERSION=2.17.atmel.0.0.99
+
+
+ cat >>confdefs.h <<_ACEOF
+@@ -2874,8 +3359,8 @@ if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2888,32 +3373,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2926,27 +3413,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -2967,8 +3468,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am
+
+ depcc="$CC" am_compiler_list=
+
+-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3057,8 +3558,8 @@ else
+ fi
+
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -3079,8 +3580,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3093,32 +3594,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ AR=$ac_cv_prog_AR
+ if test -n "$AR"; then
+- echo "$as_me:$LINENO: result: $AR" >&5
+-echo "${ECHO_T}$AR" >&6
++ { echo "$as_me:$LINENO: result: $AR" >&5
++echo "${ECHO_T}$AR" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+ set dummy ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3131,26 +3634,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_AR=$ac_cv_prog_ac_ct_AR
+ if test -n "$ac_ct_AR"; then
+- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+-echo "${ECHO_T}$ac_ct_AR" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
++echo "${ECHO_T}$ac_ct_AR" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- AR=$ac_ct_AR
++ if test "x$ac_ct_AR" = x; then
++ AR=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ AR=$ac_ct_AR
++ fi
+ else
+ AR="$ac_cv_prog_AR"
+ fi
+@@ -3158,8 +3676,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3172,32 +3690,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3210,36 +3730,49 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+
+
+-# Check whether --enable-shared or --disable-shared was given.
++# Check whether --enable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval="$enable_shared"
+- p=${PACKAGE-default}
++ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -3257,12 +3790,12 @@ no) enable_shared=no ;;
+ esac
+ else
+ enable_shared=no
+-fi;
++fi
++
+
+-# Check whether --enable-static or --disable-static was given.
++# Check whether --enable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval="$enable_static"
+- p=${PACKAGE-default}
++ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -3280,11 +3813,11 @@ no) enable_static=no ;;
+ esac
+ else
+ enable_static=yes
+-fi;
+-# Check whether --enable-fast-install or --disable-fast-install was given.
++fi
++
++# Check whether --enable-fast-install was given.
+ if test "${enable_fast_install+set}" = set; then
+- enableval="$enable_fast_install"
+- p=${PACKAGE-default}
++ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+@@ -3302,20 +3835,21 @@ no) enable_fast_install=no ;;
+ esac
+ else
+ enable_fast_install=yes
+-fi;
++fi
++
+
+-# Check whether --with-gnu-ld or --without-gnu-ld was given.
++# Check whether --with-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval="$with_gnu_ld"
+- test "$withval" = no || with_gnu_ld=yes
++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi;
++fi
++
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -3344,11 +3878,11 @@ echo $ECHO_N "checking for ld used by GC
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+ else
+- echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -3377,17 +3911,17 @@ fi
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6
++ { echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3398,25 +3932,25 @@ else
+ lt_cv_prog_gnu_ld=no
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_ld_reload_flag='-r'
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
+ reload_flag=$lt_cv_ld_reload_flag
+ test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
+ if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3451,22 +3985,22 @@ fi
+ fi
+
+ NM="$lt_cv_path_NM"
+-echo "$as_me:$LINENO: result: $NM" >&5
+-echo "${ECHO_T}$NM" >&6
++{ echo "$as_me:$LINENO: result: $NM" >&5
++echo "${ECHO_T}$NM" >&6; }
+
+-echo "$as_me:$LINENO: checking whether ln -s works" >&5
+-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+ LN_S=$as_ln_s
+ if test "$LN_S" = "ln -s"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+-echo "${ECHO_T}no, using $LN_S" >&6
++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6; }
+ fi
+
+-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
+-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; }
+ if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3628,8 +4162,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ esac
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+
+@@ -3639,8 +4173,8 @@ deplibs_check_method=$lt_cv_deplibs_chec
+ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+ # find the maximum length of command line arguments
+-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+ if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3691,11 +4225,11 @@ else
+ fi
+
+ if test -n "$lt_cv_sys_max_cmd_len" ; then
+- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+ else
+- echo "$as_me:$LINENO: result: none" >&5
+-echo "${ECHO_T}none" >&6
++ { echo "$as_me:$LINENO: result: none" >&5
++echo "${ECHO_T}none" >&6; }
+ fi
+
+
+@@ -3703,8 +4237,8 @@ fi
+ case $deplibs_check_method in
+ file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3758,17 +4292,17 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+- echo "$as_me:$LINENO: checking for file" >&5
+-echo $ECHO_N "checking for file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for file" >&5
++echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3822,11 +4356,11 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ else
+@@ -3841,8 +4375,8 @@ esac
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3855,32 +4389,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3893,27 +4429,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -3921,8 +4471,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3935,32 +4485,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3973,27 +4525,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -4008,22 +4574,22 @@ test "$GCC" = yes && libtool_flags="$lib
+ test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+
+
+-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
++# Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval="$enable_libtool_lock"
++ enableval=$enable_libtool_lock;
++fi
+
+-fi;
+ test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+
+-# Check whether --with-pic or --without-pic was given.
++# Check whether --with-pic was given.
+ if test "${with_pic+set}" = set; then
+- withval="$with_pic"
+- pic_mode="$withval"
++ withval=$with_pic; pic_mode="$withval"
+ else
+ pic_mode=default
+-fi;
++fi
++
+ test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
+ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
+
+@@ -4032,7 +4598,7 @@ test x"$pic_mode" = xno && libtool_flags
+ case $host in
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 4035 "configure"' > conftest.$ac_ext
++ echo '#line 4601 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -4137,13 +4703,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+ if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+
+-
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -4166,35 +4731,32 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ lt_cv_cc_needs_belf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-lt_cv_cc_needs_belf=no
++ lt_cv_cc_needs_belf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -4203,8 +4765,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+@@ -4234,39 +4796,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -4292,8 +4873,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -4319,10 +4900,9 @@ exec 5>>./config.log
+
+
+
+-# Check whether --enable-64-bit-bfd or --disable-64-bit-bfd was given.
++# Check whether --enable-64-bit-bfd was given.
+ if test "${enable_64_bit_bfd+set}" = set; then
+- enableval="$enable_64_bit_bfd"
+- case "${enableval}" in
++ enableval=$enable_64_bit_bfd; case "${enableval}" in
+ yes) want64=true ;;
+ no) want64=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for 64-bit-bfd option" >&5
+@@ -4331,10 +4911,10 @@ echo "$as_me: error: bad value ${enablev
+ esac
+ else
+ want64=false
+-fi; # Check whether --enable-targets or --disable-targets was given.
++fi
++# Check whether --enable-targets was given.
+ if test "${enable_targets+set}" = set; then
+- enableval="$enable_targets"
+- case "${enableval}" in
++ enableval=$enable_targets; case "${enableval}" in
+ yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5
+ echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;}
+ { (exit 1); exit 1; }; }
+@@ -4342,21 +4922,21 @@ echo "$as_me: error: enable-targets opti
+ no) enable_targets= ;;
+ *) enable_targets=$enableval ;;
+ esac
+-fi; # Check whether --enable-commonbfdlib or --disable-commonbfdlib was given.
++fi
++# Check whether --enable-commonbfdlib was given.
+ if test "${enable_commonbfdlib+set}" = set; then
+- enableval="$enable_commonbfdlib"
+- case "${enableval}" in
++ enableval=$enable_commonbfdlib; case "${enableval}" in
+ yes) commonbfdlib=true ;;
+ no) commonbfdlib=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for BFD commonbfdlib option" >&5
+ echo "$as_me: error: bad value ${enableval} for BFD commonbfdlib option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+-fi;
+-# Check whether --with-mmap or --without-mmap was given.
++fi
++
++# Check whether --with-mmap was given.
+ if test "${with_mmap+set}" = set; then
+- withval="$with_mmap"
+- case "${withval}" in
++ withval=$with_mmap; case "${withval}" in
+ yes) want_mmap=true ;;
+ no) want_mmap=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${withval} for BFD with-mmap option" >&5
+@@ -4365,11 +4945,11 @@ echo "$as_me: error: bad value ${withval
+ esac
+ else
+ want_mmap=false
+-fi;
+-# Check whether --enable-secureplt or --disable-secureplt was given.
++fi
++
++# Check whether --enable-secureplt was given.
+ if test "${enable_secureplt+set}" = set; then
+- enableval="$enable_secureplt"
+- case "${enableval}" in
++ enableval=$enable_secureplt; case "${enableval}" in
+ yes) use_secureplt=true ;;
+ no) use_secureplt=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for secureplt option" >&5
+@@ -4378,7 +4958,8 @@ echo "$as_me: error: bad value ${enablev
+ esac
+ else
+ use_secureplt=false
+-fi; if test $use_secureplt = true; then
++fi
++if test $use_secureplt = true; then
+
+ cat >>confdefs.h <<\_ACEOF
+ #define USE_SECUREPLT 1
+@@ -4389,17 +4970,17 @@ fi
+
+ GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+
+-# Check whether --enable-werror or --disable-werror was given.
++# Check whether --enable-werror was given.
+ if test "${enable_werror+set}" = set; then
+- enableval="$enable_werror"
+- case "${enableval}" in
++ enableval=$enable_werror; case "${enableval}" in
+ yes | y) ERROR_ON_WARNING="yes" ;;
+ no | n) ERROR_ON_WARNING="no" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5
+ echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+-fi;
++fi
++
+
+ # Enable -Werror by default when using gcc
+ if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
+@@ -4416,10 +4997,9 @@ if test "${GCC}" = yes ; then
+ WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+ fi
+
+-# Check whether --enable-build-warnings or --disable-build-warnings was given.
++# Check whether --enable-build-warnings was given.
+ if test "${enable_build_warnings+set}" = set; then
+- enableval="$enable_build_warnings"
+- case "${enableval}" in
++ enableval=$enable_build_warnings; case "${enableval}" in
+ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+ no) if test "${GCC}" = yes ; then
+ WARN_CFLAGS="-w"
+@@ -4430,7 +5010,8 @@ if test "${enable_build_warnings+set}" =
+ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
+ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+ esac
+-fi;
++fi
++
+
+ if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then
+ echo "Setting warning flags = $WARN_CFLAGS" 6>&1
+@@ -4440,7 +5021,7 @@ fi
+
+
+
+- ac_config_headers="$ac_config_headers config.h:config.in"
++ac_config_headers="$ac_config_headers config.h:config.in"
+
+
+ if test -z "$target" ; then
+@@ -4449,17 +5030,17 @@ echo "$as_me: error: Unrecognized target
+ { (exit 1); exit 1; }; }
+ fi
+
+-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
++ # Check whether --enable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then
+- enableval="$enable_maintainer_mode"
+- USE_MAINTAINER_MODE=$enableval
++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+ else
+ USE_MAINTAINER_MODE=no
+-fi;
+- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
+
+
+ if test $USE_MAINTAINER_MODE = yes; then
+@@ -4488,21 +5069,21 @@ esac
+ *) target_noncanonical=${target_alias} ;;
+ esac
+
+-echo "$as_me:$LINENO: checking whether to install libbfd" >&5
+-echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6
+- # Check whether --enable-install-libbfd or --disable-install-libbfd was given.
++{ echo "$as_me:$LINENO: checking whether to install libbfd" >&5
++echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6; }
++ # Check whether --enable-install-libbfd was given.
+ if test "${enable_install_libbfd+set}" = set; then
+- enableval="$enable_install_libbfd"
+- install_libbfd_p=$enableval
++ enableval=$enable_install_libbfd; install_libbfd_p=$enableval
+ else
+ if test "${host}" = "${target}" || test "$enable_shared" = "yes"; then
+ install_libbfd_p=yes
+ else
+ install_libbfd_p=no
+ fi
+-fi;
+- echo "$as_me:$LINENO: result: $install_libbfd_p" >&5
+-echo "${ECHO_T}$install_libbfd_p" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $install_libbfd_p" >&5
++echo "${ECHO_T}$install_libbfd_p" >&6; }
+
+
+ if test $install_libbfd_p = yes; then
+@@ -4545,8 +5126,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4559,32 +5140,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4597,36 +5180,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4639,74 +5237,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4720,7 +5278,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -4731,6 +5289,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -4748,22 +5307,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4776,36 +5336,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4818,29 +5380,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -4853,27 +5431,41 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4896,50 +5488,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -4955,46 +5546,126 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+-if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
+-elif test $ac_cv_prog_cc_g = yes; then
+- if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
+- else
+- CFLAGS="-g"
+- fi
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
++if test "$ac_test_CFLAGS" = set; then
++ CFLAGS=$ac_save_CFLAGS
++elif test $ac_cv_prog_cc_g = yes; then
++ if test "$GCC" = yes; then
++ CFLAGS="-g -O2"
++ else
++ CFLAGS="-g"
++ fi
+ else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+@@ -5002,12 +5673,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5041,12 +5712,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -5061,205 +5737,57 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -5277,8 +5805,8 @@ ALL_LINGUAS="fr tr ja es sv da zh_CN ro
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5291,32 +5819,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5329,27 +5859,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -5359,8 +5903,8 @@ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -5394,24 +5938,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5420,9 +5962,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5432,24 +5975,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5460,6 +6001,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5477,8 +6019,8 @@ fi
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
++{ echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6; }
+ ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+@@ -5501,24 +6043,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5527,9 +6067,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5539,24 +6080,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5567,6 +6106,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5589,87 +6129,230 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Extract the first word of "grep ggrep" to use in msg output
++if test -z "$GREP"; then
++set dummy grep ggrep; ac_prog_name=$2
++if test "${ac_cv_path_GREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+- then ac_cv_prog_egrep='grep -E'
+- else ac_cv_prog_egrep='egrep'
++ ac_path_GREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
++ # Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
+ fi
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
+
+
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+-if test "${ac_cv_header_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
++ $ac_path_GREP_found && break 3
++ done
++done
+
+-int
+-main ()
+-{
++done
++IFS=$as_save_IFS
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_header_stdc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_header_stdc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+-if test $ac_cv_header_stdc = yes; then
+- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <string.h>
++GREP="$ac_cv_path_GREP"
++if test -z "$GREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
+
+-_ACEOF
++else
++ ac_cv_path_GREP=$GREP
++fi
++
++
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
++echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
++
++
++{ echo "$as_me:$LINENO: checking for egrep" >&5
++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ # Extract the first word of "egrep" to use in msg output
++if test -z "$EGREP"; then
++set dummy egrep; ac_prog_name=$2
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_EGREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
++ # Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_EGREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++EGREP="$ac_cv_path_EGREP"
++if test -z "$EGREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++
++ fi
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
++
++
++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++if test "${ac_cv_header_stdc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_header_stdc=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_header_stdc=no
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <string.h>
++
++_ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+@@ -5713,6 +6396,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
++#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -5732,18 +6416,27 @@ main ()
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
++ return 2;
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -5756,12 +6449,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
++echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+ if test $ac_cv_header_stdc = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5770,8 +6465,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
+ if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5789,10 +6484,10 @@ main ()
+ #ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+- const charset x;
++ const charset cs;
+ /* SunOS 4.1.1 cc rejects this. */
+- char const *const *ccp;
+- char **p;
++ char const *const *pcpcc;
++ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+@@ -5801,16 +6496,17 @@ main ()
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+- ccp = &g + (g ? g-g : 0);
++ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+- ++ccp;
+- p = (char**) ccp;
+- ccp = (char const *const *) p;
++ ++pcpcc;
++ ppc = (char**) pcpcc;
++ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
++ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+@@ -5829,7 +6525,9 @@ main ()
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
++ if (!foo) return 0;
+ }
++ return !cs[0] && !zero.x;
+ #endif
+
+ ;
+@@ -5837,38 +6535,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_c_const=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_c_const=no
++ ac_cv_c_const=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+-echo "${ECHO_T}$ac_cv_c_const" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
++echo "${ECHO_T}$ac_cv_c_const" >&6; }
+ if test $ac_cv_c_const = no; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5877,8 +6571,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5898,39 +6592,37 @@ $ac_kw foo_t foo () {return 0; }
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_c_inline=$ac_kw; break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_c_inline=$ac_kw
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ test "$ac_cv_c_inline" != no && break
+ done
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6; }
+
+
+ case $ac_cv_c_inline in
+@@ -5962,9 +6654,9 @@ for ac_header in sys/types.h sys/stat.h
+ inttypes.h stdint.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -5978,38 +6670,35 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -6020,8 +6709,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking for off_t" >&5
+-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for off_t" >&5
++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6032,62 +6721,59 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef off_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((off_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (off_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_off_t=no
++ ac_cv_type_off_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+-echo "${ECHO_T}$ac_cv_type_off_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
++echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
+ if test $ac_cv_type_off_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define off_t long
++#define off_t long int
+ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for size_t" >&5
+-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for size_t" >&5
++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6098,64 +6784,61 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef size_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((size_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (size_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_size_t=no
++ ac_cv_type_size_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+-echo "${ECHO_T}$ac_cv_type_size_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
++echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+ if test $ac_cv_type_size_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define size_t unsigned
++#define size_t unsigned int
+ _ACEOF
+
+ fi
+
+ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+ # for constant arguments. Useless!
+-echo "$as_me:$LINENO: checking for working alloca.h" >&5
+-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+ if test "${ac_cv_working_alloca_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6170,44 +6853,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (2 * sizeof (int));
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_working_alloca_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_working_alloca_h=no
++ ac_cv_working_alloca_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+ if test $ac_cv_working_alloca_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6216,8 +6897,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for alloca" >&5
+-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for alloca" >&5
++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_func_alloca_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6234,7 +6915,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ # include <malloc.h>
+ # define alloca _alloca
+ # else
+-# if HAVE_ALLOCA_H
++# ifdef HAVE_ALLOCA_H
+ # include <alloca.h>
+ # else
+ # ifdef _AIX
+@@ -6252,44 +6933,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (1);
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_alloca_works=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_alloca_works=no
++ ac_cv_func_alloca_works=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+ if test $ac_cv_func_alloca_works = yes; then
+
+@@ -6303,15 +6982,15 @@ else
+ # contain a buggy version. If you still want to use their alloca,
+ # use ar to extract alloca.o from them instead of compiling alloca.c.
+
+-ALLOCA=alloca.$ac_objext
++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+ cat >>confdefs.h <<\_ACEOF
+ #define C_ALLOCA 1
+ _ACEOF
+
+
+-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+ if test "${ac_cv_os_cray+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6321,7 +7000,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#if defined(CRAY) && ! defined(CRAY2)
++#if defined CRAY && ! defined CRAY2
+ webecray
+ #else
+ wenotbecray
+@@ -6337,14 +7016,14 @@ fi
+ rm -f conftest*
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+-echo "${ECHO_T}$ac_cv_os_cray" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
++echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+ if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6370,68 +7049,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6444,8 +7115,8 @@ fi
+ done
+ fi
+
+-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_c_stack_direction+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6458,6 +7129,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
++$ac_includes_default
+ int
+ find_stack_direction ()
+ {
+@@ -6475,17 +7147,26 @@ find_stack_direction ()
+ int
+ main ()
+ {
+- exit (find_stack_direction () < 0);
++ return find_stack_direction () < 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6498,11 +7179,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_c_stack_direction=-1
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+ cat >>confdefs.h <<_ACEOF
+ #define STACK_DIRECTION $ac_cv_c_stack_direction
+@@ -6516,18 +7199,19 @@ fi
+ for ac_header in stdlib.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6538,41 +7222,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6581,24 +7261,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -6606,9 +7284,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -6632,25 +7311,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -6666,9 +7339,9 @@ done
+ for ac_func in getpagesize
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6694,68 +7367,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6764,8 +7429,8 @@ _ACEOF
+ fi
+ done
+
+-echo "$as_me:$LINENO: checking for working mmap" >&5
+-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working mmap" >&5
++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; }
+ if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6807,21 +7472,21 @@ $ac_includes_default
+ #include <fcntl.h>
+ #include <sys/mman.h>
+
+-#if !STDC_HEADERS && !HAVE_STDLIB_H
++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+ char *malloc ();
+ #endif
+
+ /* This mess was copied from the GNU getpagesize.h. */
+-#if !HAVE_GETPAGESIZE
++#ifndef HAVE_GETPAGESIZE
+ /* Assume that all systems that can run configure have sys/param.h. */
+-# if !HAVE_SYS_PARAM_H
++# ifndef HAVE_SYS_PARAM_H
+ # define HAVE_SYS_PARAM_H 1
+ # endif
+
+ # ifdef _SC_PAGESIZE
+ # define getpagesize() sysconf(_SC_PAGESIZE)
+ # else /* no _SC_PAGESIZE */
+-# if HAVE_SYS_PARAM_H
++# ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ # ifdef EXEC_PAGESIZE
+ # define getpagesize() EXEC_PAGESIZE
+@@ -6860,15 +7525,15 @@ main ()
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ if (write (fd, data, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ close (fd);
+
+ /* Next, try to mmap the file at a fixed address which already has
+@@ -6876,17 +7541,17 @@ main ()
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ data2 = (char *) malloc (2 * pagesize);
+ if (!data2)
+- exit (1);
+- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
++ return 1;
++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1);
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+- exit (1);
++ return 1;
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+@@ -6895,24 +7560,33 @@ main ()
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+- exit (1);
++ return 1;
+ if (read (fd, data3, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+- exit (1);
++ return 1;
+ close (fd);
+- exit (0);
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6925,11 +7599,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_func_mmap_fixed_mapped=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; }
+ if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6953,18 +7629,19 @@ for ac_header in argz.h limits.h locale.
+ unistd.h values.h sys/param.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6975,41 +7652,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7018,24 +7691,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -7043,9 +7714,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -7069,25 +7741,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -7113,9 +7779,9 @@ for ac_func in getcwd munmap putenv sete
+ __argz_count __argz_stringify __argz_next
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7141,68 +7807,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7217,9 +7875,9 @@ done
+ for ac_func in stpcpy
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7245,68 +7903,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7325,8 +7975,8 @@ _ACEOF
+ fi
+
+ if test $ac_cv_header_locale_h = yes; then
+- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; }
+ if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7346,39 +7996,36 @@ return LC_MESSAGES
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ am_cv_val_LC_MESSAGES=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-am_cv_val_LC_MESSAGES=no
++ am_cv_val_LC_MESSAGES=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; }
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -7387,34 +8034,34 @@ _ACEOF
+
+ fi
+ fi
+- echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
+- # Check whether --enable-nls or --disable-nls was given.
++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5
++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; }
++ # Check whether --enable-nls was given.
+ if test "${enable_nls+set}" = set; then
+- enableval="$enable_nls"
+- USE_NLS=$enableval
++ enableval=$enable_nls; USE_NLS=$enableval
+ else
+ USE_NLS=yes
+-fi;
+- echo "$as_me:$LINENO: result: $USE_NLS" >&5
+-echo "${ECHO_T}$USE_NLS" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6; }
+
+
+ USE_INCLUDED_LIBINTL=no
+
+ if test "$USE_NLS" = "yes"; then
+- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
+-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; }
+
+-# Check whether --with-included-gettext or --without-included-gettext was given.
++# Check whether --with-included-gettext was given.
+ if test "${with_included_gettext+set}" = set; then
+- withval="$with_included_gettext"
+- nls_cv_force_use_gnu_gettext=$withval
++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval
+ else
+ nls_cv_force_use_gnu_gettext=no
+-fi;
+- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
+-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; }
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+@@ -7423,17 +8070,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get
+ CATOBJEXT=
+
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking libintl.h usability" >&5
+-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5
++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7444,41 +8091,37 @@ $ac_includes_default
+ #include <libintl.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking libintl.h presence" >&5
+-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5
++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7487,24 +8130,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <libintl.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -7512,9 +8153,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -7538,30 +8180,23 @@ echo "$as_me: WARNING: libintl.h: se
+ echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_libintl_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+
+ fi
+ if test $ac_cv_header_libintl_h = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libc" >&5
+-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5
++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7581,43 +8216,40 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libc=no
++ gt_cv_func_gettext_libc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; }
+
+ if test "$gt_cv_func_gettext_libc" != "yes"; then
+- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; }
+ if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7630,59 +8262,56 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char bindtextdomain ();
+ int
+ main ()
+ {
+-bindtextdomain ();
++return bindtextdomain ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_intl_bindtextdomain=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_intl_bindtextdomain=no
++ ac_cv_lib_intl_bindtextdomain=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; }
+ if test $ac_cv_lib_intl_bindtextdomain = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libintl" >&5
+-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5
++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libintl+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7702,39 +8331,36 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libintl=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libintl=no
++ gt_cv_func_gettext_libintl=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; }
+ fi
+
+ fi
+@@ -7748,8 +8374,8 @@ _ACEOF
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7775,20 +8401,20 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ if test "$MSGFMT" != "no"; then
+
+ for ac_func in dcgettext
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7814,68 +8440,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7886,8 +8504,8 @@ done
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7902,32 +8520,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7953,11 +8572,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7977,37 +8596,34 @@ extern int _nl_msg_cat_cntr;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-CATOBJEXT=.mo
++ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ INSTOBJEXT=.mo
+ fi
+@@ -8029,8 +8645,8 @@ fi
+ INTLOBJS="\$(GETTOBJS)"
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8056,17 +8672,17 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8081,32 +8697,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8132,11 +8749,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+
+@@ -8155,8 +8772,8 @@ fi
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
+-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6
++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ fi
+@@ -8205,8 +8822,8 @@ _ACEOF
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; }
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+@@ -8214,8 +8831,8 @@ echo $ECHO_N "checking for catalogs to b
+ esac
+ done
+ LINGUAS=$NEW_LINGUAS
+- echo "$as_me:$LINENO: result: $LINGUAS" >&5
+-echo "${ECHO_T}$LINGUAS" >&6
++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5
++echo "${ECHO_T}$LINGUAS" >&6; }
+ fi
+
+ if test -n "$LINGUAS"; then
+@@ -8234,17 +8851,17 @@ echo "${ECHO_T}$LINGUAS" >&6
+ if test -f $srcdir/po2tbl.sed.in; then
+ if test "$CATOBJEXT" = ".cat"; then
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking linux/version.h usability" >&5
+-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5
++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8255,41 +8872,37 @@ $ac_includes_default
+ #include <linux/version.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking linux/version.h presence" >&5
+-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5
++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8298,24 +8911,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <linux/version.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -8323,9 +8934,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -8349,25 +8961,18 @@ echo "$as_me: WARNING: linux/version.h:
+ echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_linux_version_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+
+ fi
+ if test $ac_cv_header_linux_version_h = yes; then
+@@ -8434,8 +9039,8 @@ fi
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -8457,7 +9062,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -8476,21 +9081,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -8507,8 +9113,8 @@ BFD_HOST_64_BIT_DEFINED=0
+ BFD_HOST_64_BIT=
+ BFD_HOST_U_64_BIT=
+
+-echo "$as_me:$LINENO: checking for long long" >&5
+-echo $ECHO_N "checking for long long... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for long long" >&5
++echo $ECHO_N "checking for long long... $ECHO_C" >&6; }
+ if test "${bfd_cv_has_long_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8528,43 +9134,39 @@ unsigned long long ll = 1844674407370955
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_has_long_long=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_has_long_long=no
++ bfd_cv_has_long_long=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $bfd_cv_has_long_long" >&5
+-echo "${ECHO_T}$bfd_cv_has_long_long" >&6
++{ echo "$as_me:$LINENO: result: $bfd_cv_has_long_long" >&5
++echo "${ECHO_T}$bfd_cv_has_long_long" >&6; }
+ if test $bfd_cv_has_long_long = yes; then
+ BFD_HOST_LONG_LONG=1
+- echo "$as_me:$LINENO: checking for long long" >&5
+-echo $ECHO_N "checking for long long... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for long long" >&5
++echo $ECHO_N "checking for long long... $ECHO_C" >&6; }
+ if test "${ac_cv_type_long_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8575,61 +9177,57 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef long long ac__type_new_;
+ int
+ main ()
+ {
+-if ((long long *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (long long))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_long_long=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_long_long=no
++ ac_cv_type_long_long=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
+-echo "${ECHO_T}$ac_cv_type_long_long" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
++echo "${ECHO_T}$ac_cv_type_long_long" >&6; }
+
+-echo "$as_me:$LINENO: checking size of long long" >&5
+-echo $ECHO_N "checking size of long long... $ECHO_C" >&6
++# The cast to long int works around a bug in the HP C Compiler
++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
++# This bug is HP SR number 8606223364.
++{ echo "$as_me:$LINENO: checking size of long long" >&5
++echo $ECHO_N "checking size of long long... $ECHO_C" >&6; }
+ if test "${ac_cv_sizeof_long_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test "$ac_cv_type_long_long" = yes; then
+- # The cast to unsigned long works around a bug in the HP C Compiler
+- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+- # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8639,10 +9237,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+ test_array [0] = 0
+
+ ;
+@@ -8650,27 +9249,22 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8680,10 +9274,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -8691,56 +9286,53 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo=`expr $ac_mid + 1`
+- if test $ac_lo -le $ac_mid; then
+- ac_lo= ac_hi=
+- break
+- fi
+- ac_mid=`expr 2 '*' $ac_mid + 1`
++ ac_lo=`expr $ac_mid + 1`
++ if test $ac_lo -le $ac_mid; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid + 1`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+ test_array [0] = 0
+
+ ;
+@@ -8748,27 +9340,22 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8778,10 +9365,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -8789,50 +9377,48 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_hi=`expr '(' $ac_mid ')' - 1`
+- if test $ac_mid -le $ac_hi; then
+- ac_lo= ac_hi=
+- break
+- fi
+- ac_mid=`expr 2 '*' $ac_mid`
++ ac_hi=`expr '(' $ac_mid ')' - 1`
++ if test $ac_mid -le $ac_hi; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo= ac_hi=
++ ac_lo= ac_hi=
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ # Binary search between lo and hi bounds.
+ while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+@@ -8843,10 +9429,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -8854,52 +9441,45 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo=`expr '(' $ac_mid ')' + 1`
++ ac_lo=`expr '(' $ac_mid ')' + 1`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ case $ac_lo in
+ ?*) ac_cv_sizeof_long_long=$ac_lo;;
+-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
++'') if test "$ac_cv_type_long_long" = yes; then
++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+ See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (long long), 77
++echo "$as_me: error: cannot compute sizeof (long long)
+ See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; } ;;
++ { (exit 77); exit 77; }; }
++ else
++ ac_cv_sizeof_long_long=0
++ fi ;;
+ esac
+ else
+- if test "$cross_compiling" = yes; then
+- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8907,8 +9487,9 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
+-long longval () { return (long) (sizeof (long long)); }
+-unsigned long ulongval () { return (long) (sizeof (long long)); }
++ typedef long long ac__type_sizeof_;
++static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
++static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+ #include <stdio.h>
+ #include <stdlib.h>
+ int
+@@ -8917,35 +9498,44 @@ main ()
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+- exit (1);
+- if (((long) (sizeof (long long))) < 0)
++ return 1;
++ if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+ {
+- long i = longval ();
+- if (i != ((long) (sizeof (long long))))
+- exit (1);
++ long int i = longval ();
++ if (i != ((long int) (sizeof (ac__type_sizeof_))))
++ return 1;
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+- unsigned long i = ulongval ();
+- if (i != ((long) (sizeof (long long))))
+- exit (1);
++ unsigned long int i = ulongval ();
++ if (i != ((long int) (sizeof (ac__type_sizeof_))))
++ return 1;
+ fprintf (f, "%lu\n", i);
+ }
+- exit (ferror (f) || fclose (f) != 0);
++ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -8956,22 +9546,25 @@ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ( exit $ac_status )
+-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
++if test "$ac_cv_type_long_long" = yes; then
++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+ See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (long long), 77
++echo "$as_me: error: cannot compute sizeof (long long)
+ See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++ { (exit 77); exit 77; }; }
++ else
++ ac_cv_sizeof_long_long=0
++ fi
+ fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f conftest.val
+-else
+- ac_cv_sizeof_long_long=0
+-fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
+-echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
++echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; }
++
++
++
+ cat >>confdefs.h <<_ACEOF
+ #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+ _ACEOF
+@@ -8979,8 +9572,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for long" >&5
+-echo $ECHO_N "checking for long... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for long" >&5
++echo $ECHO_N "checking for long... $ECHO_C" >&6; }
+ if test "${ac_cv_type_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8991,61 +9584,57 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef long ac__type_new_;
+ int
+ main ()
+ {
+-if ((long *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (long))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_long=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_long=no
++ ac_cv_type_long=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+-echo "${ECHO_T}$ac_cv_type_long" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
++echo "${ECHO_T}$ac_cv_type_long" >&6; }
+
+-echo "$as_me:$LINENO: checking size of long" >&5
+-echo $ECHO_N "checking size of long... $ECHO_C" >&6
++# The cast to long int works around a bug in the HP C Compiler
++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
++# This bug is HP SR number 8606223364.
++{ echo "$as_me:$LINENO: checking size of long" >&5
++echo $ECHO_N "checking size of long... $ECHO_C" >&6; }
+ if test "${ac_cv_sizeof_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test "$ac_cv_type_long" = yes; then
+- # The cast to unsigned long works around a bug in the HP C Compiler
+- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+- # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -9055,10 +9644,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+ test_array [0] = 0
+
+ ;
+@@ -9066,27 +9656,22 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -9096,10 +9681,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -9107,56 +9693,53 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo=`expr $ac_mid + 1`
+- if test $ac_lo -le $ac_mid; then
+- ac_lo= ac_hi=
+- break
+- fi
+- ac_mid=`expr 2 '*' $ac_mid + 1`
++ ac_lo=`expr $ac_mid + 1`
++ if test $ac_lo -le $ac_mid; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid + 1`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+ test_array [0] = 0
+
+ ;
+@@ -9164,27 +9747,22 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -9194,10 +9772,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -9205,50 +9784,48 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_hi=`expr '(' $ac_mid ')' - 1`
+- if test $ac_mid -le $ac_hi; then
+- ac_lo= ac_hi=
+- break
+- fi
+- ac_mid=`expr 2 '*' $ac_mid`
++ ac_hi=`expr '(' $ac_mid ')' - 1`
++ if test $ac_mid -le $ac_hi; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo= ac_hi=
++ ac_lo= ac_hi=
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ # Binary search between lo and hi bounds.
+ while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+@@ -9259,10 +9836,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef long ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -9270,52 +9848,45 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo=`expr '(' $ac_mid ')' + 1`
++ ac_lo=`expr '(' $ac_mid ')' + 1`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ case $ac_lo in
+ ?*) ac_cv_sizeof_long=$ac_lo;;
+-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
++'') if test "$ac_cv_type_long" = yes; then
++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+ See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (long), 77
++echo "$as_me: error: cannot compute sizeof (long)
+ See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; } ;;
++ { (exit 77); exit 77; }; }
++ else
++ ac_cv_sizeof_long=0
++ fi ;;
+ esac
+ else
+- if test "$cross_compiling" = yes; then
+- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -9323,8 +9894,9 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
+-long longval () { return (long) (sizeof (long)); }
+-unsigned long ulongval () { return (long) (sizeof (long)); }
++ typedef long ac__type_sizeof_;
++static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
++static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+ #include <stdio.h>
+ #include <stdlib.h>
+ int
+@@ -9333,35 +9905,44 @@ main ()
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+- exit (1);
+- if (((long) (sizeof (long))) < 0)
++ return 1;
++ if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+ {
+- long i = longval ();
+- if (i != ((long) (sizeof (long))))
+- exit (1);
++ long int i = longval ();
++ if (i != ((long int) (sizeof (ac__type_sizeof_))))
++ return 1;
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+- unsigned long i = ulongval ();
+- if (i != ((long) (sizeof (long))))
+- exit (1);
++ unsigned long int i = ulongval ();
++ if (i != ((long int) (sizeof (ac__type_sizeof_))))
++ return 1;
+ fprintf (f, "%lu\n", i);
+ }
+- exit (ferror (f) || fclose (f) != 0);
++ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -9372,22 +9953,25 @@ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ( exit $ac_status )
+-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
++if test "$ac_cv_type_long" = yes; then
++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+ See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (long), 77
++echo "$as_me: error: cannot compute sizeof (long)
+ See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++ { (exit 77); exit 77; }; }
++ else
++ ac_cv_sizeof_long=0
++ fi
+ fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f conftest.val
+-else
+- ac_cv_sizeof_long=0
+-fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+-echo "${ECHO_T}$ac_cv_sizeof_long" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
++echo "${ECHO_T}$ac_cv_sizeof_long" >&6; }
++
++
++
+ cat >>confdefs.h <<_ACEOF
+ #define SIZEOF_LONG $ac_cv_sizeof_long
+ _ACEOF
+@@ -9428,8 +10012,8 @@ fi
+ if test "x$cross_compiling" = "xno"; then
+ EXEEXT_FOR_BUILD='$(EXEEXT)'
+ else
+- echo "$as_me:$LINENO: checking for build system executable suffix" >&5
+-echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for build system executable suffix" >&5
++echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6; }
+ if test "${bfd_cv_build_exeext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9446,8 +10030,8 @@ else
+ rm -f conftest*
+ test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no
+ fi
+-echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5
+-echo "${ECHO_T}$bfd_cv_build_exeext" >&6
++{ echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5
++echo "${ECHO_T}$bfd_cv_build_exeext" >&6; }
+ EXEEXT_FOR_BUILD=""
+ test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
+ fi
+@@ -9462,18 +10046,19 @@ fi
+ for ac_header in stddef.h string.h strings.h stdlib.h time.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -9484,41 +10069,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -9527,24 +10108,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -9552,9 +10131,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -9578,25 +10158,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -9614,18 +10188,19 @@ done
+ for ac_header in fcntl.h sys/file.h sys/time.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -9636,41 +10211,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -9679,24 +10250,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -9704,9 +10273,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -9730,25 +10300,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -9760,8 +10324,8 @@ fi
+
+ done
+
+-echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
+-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
+ if test "${ac_cv_header_time+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9785,38 +10349,34 @@ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_header_time=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_header_time=no
++ ac_cv_header_time=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
+-echo "${ECHO_T}$ac_cv_header_time" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
++echo "${ECHO_T}$ac_cv_header_time" >&6; }
+ if test $ac_cv_header_time = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -9833,9 +10393,9 @@ fi
+ ac_header_dirent=no
+ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
++echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -9857,38 +10417,35 @@ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+@@ -9900,13 +10457,12 @@ fi
+ done
+ # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+ if test $ac_header_dirent = dirent.h; then
+- echo "$as_me:$LINENO: checking for library containing opendir" >&5
+-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5
++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+ if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_opendir=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -9914,126 +10470,83 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char opendir ();
+ int
+ main ()
+ {
+-opendir ();
++return opendir ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' dir; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="none required"
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_opendir=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_opendir" = no; then
+- for ac_lib in dir; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char opendir ();
+-int
+-main ()
+-{
+-opendir ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="-l$ac_lib"
+-break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++fi
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_opendir+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++done
++if test "${ac_cv_search_opendir+set}" = set; then
++ :
++else
++ ac_cv_search_opendir=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+-echo "${ECHO_T}$ac_cv_search_opendir" >&6
+-if test "$ac_cv_search_opendir" != no; then
+- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
++echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
++ac_res=$ac_cv_search_opendir
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+ else
+- echo "$as_me:$LINENO: checking for library containing opendir" >&5
+-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5
++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+ if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_opendir=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -10041,122 +10554,80 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char opendir ();
+ int
+ main ()
+ {
+-opendir ();
++return opendir ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' x; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="none required"
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_opendir=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_opendir" = no; then
+- for ac_lib in x; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char opendir ();
+-int
+-main ()
+-{
+-opendir ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="-l$ac_lib"
+-break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++fi
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_opendir+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++done
++if test "${ac_cv_search_opendir+set}" = set; then
++ :
++else
++ ac_cv_search_opendir=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+-echo "${ECHO_T}$ac_cv_search_opendir" >&6
+-if test "$ac_cv_search_opendir" != no; then
+- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
++echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
++ac_res=$ac_cv_search_opendir
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+ fi
+
+-echo "$as_me:$LINENO: checking whether string.h and strings.h may both be included" >&5
+-echo $ECHO_N "checking whether string.h and strings.h may both be included... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether string.h and strings.h may both be included" >&5
++echo $ECHO_N "checking whether string.h and strings.h may both be included... $ECHO_C" >&6; }
+ if test "${gcc_cv_header_string+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10177,38 +10648,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ gcc_cv_header_string=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gcc_cv_header_string=no
++ gcc_cv_header_string=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gcc_cv_header_string" >&5
+-echo "${ECHO_T}$gcc_cv_header_string" >&6
++{ echo "$as_me:$LINENO: result: $gcc_cv_header_string" >&5
++echo "${ECHO_T}$gcc_cv_header_string" >&6; }
+ if test $gcc_cv_header_string = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -10227,9 +10694,9 @@ fi
+ for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -10255,68 +10722,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -10329,9 +10788,9 @@ done
+ for ac_func in strtoull
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -10357,68 +10816,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -10428,8 +10879,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking whether basename is declared" >&5
+-echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether basename is declared" >&5
++echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_basename+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10444,7 +10895,7 @@ int
+ main ()
+ {
+ #ifndef basename
+- char *p = (char *) basename;
++ (void) basename;
+ #endif
+
+ ;
+@@ -10452,38 +10903,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_basename=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_basename=no
++ ac_cv_have_decl_basename=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_basename" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5
++echo "${ECHO_T}$ac_cv_have_decl_basename" >&6; }
+ if test $ac_cv_have_decl_basename = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10500,8 +10947,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether ftello is declared" >&5
+-echo $ECHO_N "checking whether ftello is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ftello is declared" >&5
++echo $ECHO_N "checking whether ftello is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_ftello+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10516,7 +10963,7 @@ int
+ main ()
+ {
+ #ifndef ftello
+- char *p = (char *) ftello;
++ (void) ftello;
+ #endif
+
+ ;
+@@ -10524,38 +10971,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_ftello=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_ftello=no
++ ac_cv_have_decl_ftello=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_ftello" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello" >&5
++echo "${ECHO_T}$ac_cv_have_decl_ftello" >&6; }
+ if test $ac_cv_have_decl_ftello = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10572,8 +11015,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether ftello64 is declared" >&5
+-echo $ECHO_N "checking whether ftello64 is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ftello64 is declared" >&5
++echo $ECHO_N "checking whether ftello64 is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_ftello64+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10588,7 +11031,7 @@ int
+ main ()
+ {
+ #ifndef ftello64
+- char *p = (char *) ftello64;
++ (void) ftello64;
+ #endif
+
+ ;
+@@ -10596,38 +11039,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_ftello64=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_ftello64=no
++ ac_cv_have_decl_ftello64=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello64" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_ftello64" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello64" >&5
++echo "${ECHO_T}$ac_cv_have_decl_ftello64" >&6; }
+ if test $ac_cv_have_decl_ftello64 = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10644,8 +11083,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether fseeko is declared" >&5
+-echo $ECHO_N "checking whether fseeko is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether fseeko is declared" >&5
++echo $ECHO_N "checking whether fseeko is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_fseeko+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10660,7 +11099,7 @@ int
+ main ()
+ {
+ #ifndef fseeko
+- char *p = (char *) fseeko;
++ (void) fseeko;
+ #endif
+
+ ;
+@@ -10668,38 +11107,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fseeko=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_fseeko=no
++ ac_cv_have_decl_fseeko=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_fseeko" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko" >&5
++echo "${ECHO_T}$ac_cv_have_decl_fseeko" >&6; }
+ if test $ac_cv_have_decl_fseeko = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10716,8 +11151,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether fseeko64 is declared" >&5
+-echo $ECHO_N "checking whether fseeko64 is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether fseeko64 is declared" >&5
++echo $ECHO_N "checking whether fseeko64 is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_fseeko64+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10732,7 +11167,7 @@ int
+ main ()
+ {
+ #ifndef fseeko64
+- char *p = (char *) fseeko64;
++ (void) fseeko64;
+ #endif
+
+ ;
+@@ -10740,38 +11175,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fseeko64=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_fseeko64=no
++ ac_cv_have_decl_fseeko64=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko64" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_fseeko64" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko64" >&5
++echo "${ECHO_T}$ac_cv_have_decl_fseeko64" >&6; }
+ if test $ac_cv_have_decl_fseeko64 = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10799,8 +11230,8 @@ _ACEOF
+ ;;
+ esac
+
+-echo "$as_me:$LINENO: checking whether ffs is declared" >&5
+-echo $ECHO_N "checking whether ffs is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ffs is declared" >&5
++echo $ECHO_N "checking whether ffs is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_ffs+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10815,7 +11246,7 @@ int
+ main ()
+ {
+ #ifndef ffs
+- char *p = (char *) ffs;
++ (void) ffs;
+ #endif
+
+ ;
+@@ -10823,38 +11254,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_ffs=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_ffs=no
++ ac_cv_have_decl_ffs=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_ffs" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_ffs" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ffs" >&5
++echo "${ECHO_T}$ac_cv_have_decl_ffs" >&6; }
+ if test $ac_cv_have_decl_ffs = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10871,8 +11298,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether free is declared" >&5
+-echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether free is declared" >&5
++echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_free+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10887,7 +11314,7 @@ int
+ main ()
+ {
+ #ifndef free
+- char *p = (char *) free;
++ (void) free;
+ #endif
+
+ ;
+@@ -10895,38 +11322,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_free=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_free=no
++ ac_cv_have_decl_free=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_free" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5
++echo "${ECHO_T}$ac_cv_have_decl_free" >&6; }
+ if test $ac_cv_have_decl_free = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10943,8 +11366,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether getenv is declared" >&5
+-echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether getenv is declared" >&5
++echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_getenv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10959,7 +11382,7 @@ int
+ main ()
+ {
+ #ifndef getenv
+- char *p = (char *) getenv;
++ (void) getenv;
+ #endif
+
+ ;
+@@ -10967,38 +11390,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getenv=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_getenv=no
++ ac_cv_have_decl_getenv=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
++echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6; }
+ if test $ac_cv_have_decl_getenv = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -11015,8 +11434,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether malloc is declared" >&5
+-echo $ECHO_N "checking whether malloc is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether malloc is declared" >&5
++echo $ECHO_N "checking whether malloc is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_malloc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11031,7 +11450,7 @@ int
+ main ()
+ {
+ #ifndef malloc
+- char *p = (char *) malloc;
++ (void) malloc;
+ #endif
+
+ ;
+@@ -11039,38 +11458,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_malloc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_malloc=no
++ ac_cv_have_decl_malloc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_malloc" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_malloc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_malloc" >&5
++echo "${ECHO_T}$ac_cv_have_decl_malloc" >&6; }
+ if test $ac_cv_have_decl_malloc = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -11087,8 +11502,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether realloc is declared" >&5
+-echo $ECHO_N "checking whether realloc is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether realloc is declared" >&5
++echo $ECHO_N "checking whether realloc is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_realloc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11103,7 +11518,7 @@ int
+ main ()
+ {
+ #ifndef realloc
+- char *p = (char *) realloc;
++ (void) realloc;
+ #endif
+
+ ;
+@@ -11111,38 +11526,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_realloc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_realloc=no
++ ac_cv_have_decl_realloc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_realloc" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_realloc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_realloc" >&5
++echo "${ECHO_T}$ac_cv_have_decl_realloc" >&6; }
+ if test $ac_cv_have_decl_realloc = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -11159,8 +11570,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5
+-echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5
++echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_stpcpy+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11175,7 +11586,7 @@ int
+ main ()
+ {
+ #ifndef stpcpy
+- char *p = (char *) stpcpy;
++ (void) stpcpy;
+ #endif
+
+ ;
+@@ -11183,38 +11594,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_stpcpy=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_stpcpy=no
++ ac_cv_have_decl_stpcpy=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5
++echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6; }
+ if test $ac_cv_have_decl_stpcpy = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -11231,8 +11638,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether strstr is declared" >&5
+-echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether strstr is declared" >&5
++echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_strstr+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11247,7 +11654,7 @@ int
+ main ()
+ {
+ #ifndef strstr
+- char *p = (char *) strstr;
++ (void) strstr;
+ #endif
+
+ ;
+@@ -11255,38 +11662,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strstr=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_strstr=no
++ ac_cv_have_decl_strstr=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5
++echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6; }
+ if test $ac_cv_have_decl_strstr = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -11303,8 +11706,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether snprintf is declared" >&5
+-echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether snprintf is declared" >&5
++echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_snprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11319,7 +11722,7 @@ int
+ main ()
+ {
+ #ifndef snprintf
+- char *p = (char *) snprintf;
++ (void) snprintf;
+ #endif
+
+ ;
+@@ -11327,38 +11730,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_snprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_snprintf=no
++ ac_cv_have_decl_snprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6; }
+ if test $ac_cv_have_decl_snprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -11375,8 +11774,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5
+-echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5
++echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_vsnprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11391,7 +11790,7 @@ int
+ main ()
+ {
+ #ifndef vsnprintf
+- char *p = (char *) vsnprintf;
++ (void) vsnprintf;
+ #endif
+
+ ;
+@@ -11399,38 +11798,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_vsnprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_vsnprintf=no
++ ac_cv_have_decl_vsnprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6; }
+ if test $ac_cv_have_decl_vsnprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -11609,8 +12004,8 @@ if test "${target}" = "${host}"; then
+ COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE"
+ # Not all versions of AIX with -DAIX_CORE_DUMPX_CORE
+ # have c_impl as a member of struct core_dumpx
+- echo "$as_me:$LINENO: checking for c_impl in struct core_dumpx" >&5
+-echo $ECHO_N "checking for c_impl in struct core_dumpx... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for c_impl in struct core_dumpx" >&5
++echo $ECHO_N "checking for c_impl in struct core_dumpx... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -11627,42 +12022,38 @@ struct core_dumpx c; c.c_impl = 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_ST_C_IMPL 1
+ _ACEOF
+
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+ rs6000-*-aix4*) COREFILE=rs6000-core.lo ;;
+ rs6000-*-*) COREFILE=rs6000-core.lo ;;
+@@ -11726,18 +12117,19 @@ rm -f conftest.err conftest.$ac_objext c
+ for ac_header in sys/procfs.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -11748,41 +12140,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -11791,24 +12179,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -11816,9 +12202,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -11842,25 +12229,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -11873,8 +12254,8 @@ fi
+ done
+
+ if test "$ac_cv_header_sys_procfs_h" = yes; then
+- echo "$as_me:$LINENO: checking for prstatus_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for prstatus_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for prstatus_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for prstatus_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_prstatus_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11896,36 +12277,32 @@ prstatus_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_prstatus_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_prstatus_t=no
++ bfd_cv_have_sys_procfs_type_prstatus_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_prstatus_t = yes; then
+@@ -11935,11 +12312,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for prstatus32_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for prstatus32_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for prstatus32_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for prstatus32_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_prstatus32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -11961,36 +12338,32 @@ prstatus32_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_prstatus32_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_prstatus32_t=no
++ bfd_cv_have_sys_procfs_type_prstatus32_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_prstatus32_t = yes; then
+@@ -12000,11 +12373,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus32_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus32_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus32_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus32_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for prstatus_t.pr_who in sys/procfs.h" >&5
+-echo $ECHO_N "checking for prstatus_t.pr_who in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for prstatus_t.pr_who in sys/procfs.h" >&5
++echo $ECHO_N "checking for prstatus_t.pr_who in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12026,36 +12399,32 @@ prstatus_t avar; void* aref = (void*) &a
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=no
++ bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who = yes; then
+@@ -12065,11 +12434,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&6; }
+
+- echo "$as_me:$LINENO: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
+-echo $ECHO_N "checking for prstatus32_t.pr_who in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
++echo $ECHO_N "checking for prstatus32_t.pr_who in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12091,36 +12460,32 @@ prstatus32_t avar; void* aref = (void*)
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=no
++ bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who = yes; then
+@@ -12130,11 +12495,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&6; }
+
+- echo "$as_me:$LINENO: checking for pstatus_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for pstatus_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for pstatus_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for pstatus_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_pstatus_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12156,36 +12521,32 @@ pstatus_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_pstatus_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_pstatus_t=no
++ bfd_cv_have_sys_procfs_type_pstatus_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_pstatus_t = yes; then
+@@ -12195,11 +12556,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for pxstatus_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for pxstatus_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for pxstatus_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for pxstatus_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_pxstatus_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12221,36 +12582,32 @@ pxstatus_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_pxstatus_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_pxstatus_t=no
++ bfd_cv_have_sys_procfs_type_pxstatus_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_pxstatus_t = yes; then
+@@ -12260,11 +12617,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pxstatus_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pxstatus_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pxstatus_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pxstatus_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for pstatus32_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for pstatus32_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for pstatus32_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for pstatus32_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_pstatus32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12286,36 +12643,32 @@ pstatus32_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_pstatus32_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_pstatus32_t=no
++ bfd_cv_have_sys_procfs_type_pstatus32_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_pstatus32_t = yes; then
+@@ -12325,11 +12678,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus32_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus32_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus32_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus32_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for prpsinfo_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for prpsinfo_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for prpsinfo_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for prpsinfo_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_prpsinfo_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12351,36 +12704,32 @@ prpsinfo_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_prpsinfo_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_prpsinfo_t=no
++ bfd_cv_have_sys_procfs_type_prpsinfo_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_prpsinfo_t = yes; then
+@@ -12390,11 +12739,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for prpsinfo32_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for prpsinfo32_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for prpsinfo32_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for prpsinfo32_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_prpsinfo32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12416,36 +12765,32 @@ prpsinfo32_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_prpsinfo32_t=no
++ bfd_cv_have_sys_procfs_type_prpsinfo32_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_prpsinfo32_t = yes; then
+@@ -12455,11 +12800,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for psinfo_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for psinfo_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for psinfo_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for psinfo_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_psinfo_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12481,36 +12826,32 @@ psinfo_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_psinfo_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_psinfo_t=no
++ bfd_cv_have_sys_procfs_type_psinfo_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_psinfo_t = yes; then
+@@ -12520,11 +12861,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for psinfo32_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for psinfo32_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for psinfo32_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for psinfo32_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_psinfo32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12546,36 +12887,32 @@ psinfo32_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_psinfo32_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_psinfo32_t=no
++ bfd_cv_have_sys_procfs_type_psinfo32_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_psinfo32_t = yes; then
+@@ -12585,11 +12922,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo32_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo32_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo32_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo32_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for lwpstatus_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for lwpstatus_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for lwpstatus_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for lwpstatus_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_lwpstatus_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12611,36 +12948,32 @@ lwpstatus_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_lwpstatus_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_lwpstatus_t=no
++ bfd_cv_have_sys_procfs_type_lwpstatus_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_lwpstatus_t = yes; then
+@@ -12650,11 +12983,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpstatus_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpstatus_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpstatus_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpstatus_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for lwpxstatus_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for lwpxstatus_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for lwpxstatus_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for lwpxstatus_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_lwpxstatus_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12676,36 +13009,32 @@ lwpxstatus_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_lwpxstatus_t=no
++ bfd_cv_have_sys_procfs_type_lwpxstatus_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_lwpxstatus_t = yes; then
+@@ -12715,11 +13044,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&6; }
+
+- echo "$as_me:$LINENO: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
+-echo $ECHO_N "checking for lwpstatus_t.pr_context in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
++echo $ECHO_N "checking for lwpstatus_t.pr_context in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12741,36 +13070,32 @@ lwpstatus_t avar; void* aref = (void*) &
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=no
++ bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context = yes; then
+@@ -12780,11 +13105,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&6; }
+
+- echo "$as_me:$LINENO: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
+-echo $ECHO_N "checking for lwpstatus_t.pr_reg in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
++echo $ECHO_N "checking for lwpstatus_t.pr_reg in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12806,36 +13131,32 @@ lwpstatus_t avar; void* aref = (void*) &
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=no
++ bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg = yes; then
+@@ -12845,11 +13166,11 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&6; }
+
+- echo "$as_me:$LINENO: checking for win32_pstatus_t in sys/procfs.h" >&5
+-echo $ECHO_N "checking for win32_pstatus_t in sys/procfs.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for win32_pstatus_t in sys/procfs.h" >&5
++echo $ECHO_N "checking for win32_pstatus_t in sys/procfs.h... $ECHO_C" >&6; }
+ if test "${bfd_cv_have_sys_procfs_type_win32_pstatus_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -12871,36 +13192,32 @@ win32_pstatus_t avar
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bfd_cv_have_sys_procfs_type_win32_pstatus_t=no
++ bfd_cv_have_sys_procfs_type_win32_pstatus_t=no
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ if test $bfd_cv_have_sys_procfs_type_win32_pstatus_t = yes; then
+@@ -12910,8 +13227,8 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&5
+-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&6
++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&5
++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&6; }
+
+ fi
+ fi
+@@ -13070,6 +13387,7 @@ do
+ bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
+ bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
+ bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
++ bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
+ bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
+ bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
+ bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
+@@ -13389,8 +13707,8 @@ echo "$as_me: WARNING: your compiler may
+ fi
+ if test -n "$GCC" ; then
+ bad_64bit_gcc=no;
+- echo "$as_me:$LINENO: checking for gcc version with buggy 64-bit support" >&5
+-echo $ECHO_N "checking for gcc version with buggy 64-bit support... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gcc version with buggy 64-bit support" >&5
++echo $ECHO_N "checking for gcc version with buggy 64-bit support... $ECHO_C" >&6; }
+ # Add more tests for gcc versions with non-working 64-bit support here.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -13403,11 +13721,11 @@ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP ": 2 : 91 : 1 :" >/dev/null 2>&1; then
+ bad_64bit_gcc=yes;
+- echo "$as_me:$LINENO: result: yes: egcs-1.1.2 on ix86 spotted" >&5
+-echo "${ECHO_T}yes: egcs-1.1.2 on ix86 spotted" >&6
++ { echo "$as_me:$LINENO: result: yes: egcs-1.1.2 on ix86 spotted" >&5
++echo "${ECHO_T}yes: egcs-1.1.2 on ix86 spotted" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ rm -f conftest*
+
+@@ -13445,9 +13763,9 @@ esac
+ for ac_func in ftello ftello64 fseeko fseeko64 fopen64
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -13473,68 +13791,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -13544,8 +13854,8 @@ fi
+ done
+
+ if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then
+- echo "$as_me:$LINENO: checking for off_t" >&5
+-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for off_t" >&5
++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -13556,61 +13866,57 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef off_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((off_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (off_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_off_t=no
++ ac_cv_type_off_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+-echo "${ECHO_T}$ac_cv_type_off_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
++echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
+
+-echo "$as_me:$LINENO: checking size of off_t" >&5
+-echo $ECHO_N "checking size of off_t... $ECHO_C" >&6
++# The cast to long int works around a bug in the HP C Compiler
++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
++# This bug is HP SR number 8606223364.
++{ echo "$as_me:$LINENO: checking size of off_t" >&5
++echo $ECHO_N "checking size of off_t... $ECHO_C" >&6; }
+ if test "${ac_cv_sizeof_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test "$ac_cv_type_off_t" = yes; then
+- # The cast to unsigned long works around a bug in the HP C Compiler
+- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+- # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -13620,10 +13926,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef off_t ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= 0)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+ test_array [0] = 0
+
+ ;
+@@ -13631,27 +13938,22 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -13661,10 +13963,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef off_t ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -13672,56 +13975,53 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo=`expr $ac_mid + 1`
+- if test $ac_lo -le $ac_mid; then
+- ac_lo= ac_hi=
+- break
+- fi
+- ac_mid=`expr 2 '*' $ac_mid + 1`
++ ac_lo=`expr $ac_mid + 1`
++ if test $ac_lo -le $ac_mid; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid + 1`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef off_t ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) < 0)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+ test_array [0] = 0
+
+ ;
+@@ -13729,27 +14029,22 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -13759,10 +14054,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef off_t ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -13770,50 +14066,48 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_hi=`expr '(' $ac_mid ')' - 1`
+- if test $ac_mid -le $ac_hi; then
+- ac_lo= ac_hi=
+- break
+- fi
+- ac_mid=`expr 2 '*' $ac_mid`
++ ac_hi=`expr '(' $ac_mid ')' - 1`
++ if test $ac_mid -le $ac_hi; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo= ac_hi=
++ ac_lo= ac_hi=
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ # Binary search between lo and hi bounds.
+ while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+@@ -13824,10 +14118,11 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++ typedef off_t ac__type_sizeof_;
+ int
+ main ()
+ {
+-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)];
++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+ test_array [0] = 0
+
+ ;
+@@ -13835,52 +14130,45 @@ test_array [0] = 0
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_lo=`expr '(' $ac_mid ')' + 1`
++ ac_lo=`expr '(' $ac_mid ')' + 1`
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ case $ac_lo in
+ ?*) ac_cv_sizeof_off_t=$ac_lo;;
+-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77
++'') if test "$ac_cv_type_off_t" = yes; then
++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
+ See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (off_t), 77
++echo "$as_me: error: cannot compute sizeof (off_t)
+ See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; } ;;
++ { (exit 77); exit 77; }; }
++ else
++ ac_cv_sizeof_off_t=0
++ fi ;;
+ esac
+ else
+- if test "$cross_compiling" = yes; then
+- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -13888,8 +14176,9 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
+-long longval () { return (long) (sizeof (off_t)); }
+-unsigned long ulongval () { return (long) (sizeof (off_t)); }
++ typedef off_t ac__type_sizeof_;
++static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
++static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+ #include <stdio.h>
+ #include <stdlib.h>
+ int
+@@ -13898,35 +14187,44 @@ main ()
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+- exit (1);
+- if (((long) (sizeof (off_t))) < 0)
++ return 1;
++ if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+ {
+- long i = longval ();
+- if (i != ((long) (sizeof (off_t))))
+- exit (1);
++ long int i = longval ();
++ if (i != ((long int) (sizeof (ac__type_sizeof_))))
++ return 1;
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+- unsigned long i = ulongval ();
+- if (i != ((long) (sizeof (off_t))))
+- exit (1);
++ unsigned long int i = ulongval ();
++ if (i != ((long int) (sizeof (ac__type_sizeof_))))
++ return 1;
+ fprintf (f, "%lu\n", i);
+ }
+- exit (ferror (f) || fclose (f) != 0);
++ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -13937,30 +14235,33 @@ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ( exit $ac_status )
+-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77
++if test "$ac_cv_type_off_t" = yes; then
++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
+ See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (off_t), 77
++echo "$as_me: error: cannot compute sizeof (off_t)
+ See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++ { (exit 77); exit 77; }; }
++ else
++ ac_cv_sizeof_off_t=0
++ fi
+ fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f conftest.val
+-else
+- ac_cv_sizeof_off_t=0
+-fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5
+-echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5
++echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6; }
++
++
++
+ cat >>confdefs.h <<_ACEOF
+ #define SIZEOF_OFF_T $ac_cv_sizeof_off_t
+ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking file_ptr type" >&5
+-echo $ECHO_N "checking file_ptr type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking file_ptr type" >&5
++echo $ECHO_N "checking file_ptr type... $ECHO_C" >&6; }
+ bfd_file_ptr="long"
+ bfd_ufile_ptr="unsigned long"
+ if test x"$ac_cv_func_ftello64" = xyes -a x"$ac_cv_func_fseeko64" = xyes \
+@@ -13968,8 +14269,8 @@ if test x"$ac_cv_func_ftello64" = xyes -
+ bfd_file_ptr=BFD_HOST_64_BIT
+ bfd_ufile_ptr=BFD_HOST_U_64_BIT
+ fi
+-echo "$as_me:$LINENO: result: $bfd_file_ptr" >&5
+-echo "${ECHO_T}$bfd_file_ptr" >&6
++{ echo "$as_me:$LINENO: result: $bfd_file_ptr" >&5
++echo "${ECHO_T}$bfd_file_ptr" >&6; }
+
+
+
+@@ -13987,18 +14288,19 @@ test -n "${havevecs}" && tdefaults="${td
+ for ac_header in stdlib.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -14009,41 +14311,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -14052,24 +14350,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -14077,9 +14373,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -14103,25 +14400,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -14137,9 +14428,9 @@ done
+ for ac_func in getpagesize
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -14165,68 +14456,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -14235,8 +14518,8 @@ _ACEOF
+ fi
+ done
+
+-echo "$as_me:$LINENO: checking for working mmap" >&5
+-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working mmap" >&5
++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; }
+ if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -14278,21 +14561,21 @@ $ac_includes_default
+ #include <fcntl.h>
+ #include <sys/mman.h>
+
+-#if !STDC_HEADERS && !HAVE_STDLIB_H
++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+ char *malloc ();
+ #endif
+
+ /* This mess was copied from the GNU getpagesize.h. */
+-#if !HAVE_GETPAGESIZE
++#ifndef HAVE_GETPAGESIZE
+ /* Assume that all systems that can run configure have sys/param.h. */
+-# if !HAVE_SYS_PARAM_H
++# ifndef HAVE_SYS_PARAM_H
+ # define HAVE_SYS_PARAM_H 1
+ # endif
+
+ # ifdef _SC_PAGESIZE
+ # define getpagesize() sysconf(_SC_PAGESIZE)
+ # else /* no _SC_PAGESIZE */
+-# if HAVE_SYS_PARAM_H
++# ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ # ifdef EXEC_PAGESIZE
+ # define getpagesize() EXEC_PAGESIZE
+@@ -14331,15 +14614,15 @@ main ()
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ if (write (fd, data, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ close (fd);
+
+ /* Next, try to mmap the file at a fixed address which already has
+@@ -14347,17 +14630,17 @@ main ()
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ data2 = (char *) malloc (2 * pagesize);
+ if (!data2)
+- exit (1);
+- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
++ return 1;
++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1);
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+- exit (1);
++ return 1;
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+@@ -14366,24 +14649,33 @@ main ()
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+- exit (1);
++ return 1;
+ if (read (fd, data3, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+- exit (1);
++ return 1;
+ close (fd);
+- exit (0);
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -14396,11 +14688,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_func_mmap_fixed_mapped=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; }
+ if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -14415,9 +14709,9 @@ rm -f conftest.mmap
+ for ac_func in madvise mprotect
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -14443,68 +14737,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -14522,9 +14808,9 @@ _ACEOF
+ esac
+
+ rm -f doc/config.status
+- ac_config_files="$ac_config_files Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in"
++ac_config_files="$ac_config_files Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in"
+
+- ac_config_commands="$ac_config_commands default"
++ac_config_commands="$ac_config_commands default"
+
+
+
+@@ -14549,39 +14835,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -14590,32 +14895,18 @@ test "x$prefix" = xNONE && prefix=$ac_de
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ ]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ ]*$//;
+-}'
+-fi
+-
+ DEFS=-DHAVE_CONFIG_H
+
+ ac_libobjs=
+ ac_ltlibobjs=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+- ac_i=`echo "$ac_i" |
+- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+- # 2. Add them.
+- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
++ ac_i=`echo "$ac_i" | sed "$ac_script"`
++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
++ # will be set to the directory where LIBOBJS objects are built.
++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+ done
+ LIBOBJS=$ac_libobjs
+
+@@ -14674,17 +14965,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -14694,8 +15013,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -14709,18 +15063,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -14728,159 +15083,120 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
+-
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+-
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
+-fi
++# CDPATH.
++$as_unset CDPATH
+
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
++ chmod +x "$as_me.lineno" ||
++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -14889,7 +15205,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -14898,31 +15235,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+ exec 6>&1
+
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
++# Save the log message, to keep $[0] and so on meaningful, and to
+ # report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling. Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
++# values after options handling.
++ac_log="
+ This file was extended by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -14930,30 +15250,20 @@ generated by GNU Autoconf 2.59. Invocat
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
++on `(hostname || uname -n) 2>/dev/null | sed 1q`
++"
++
+ _ACEOF
+
++cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
++config_files="$ac_config_files"
++config_headers="$ac_config_headers"
++config_commands="$ac_config_commands"
+
+-if test -n "$ac_config_headers"; then
+- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_links"; then
+- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_commands"; then
+- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
++_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-
+ ac_cs_usage="\
+ \`$as_me' instantiates files from templates according to the
+ current configuration.
+@@ -14961,7 +15271,7 @@ current configuration.
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number, then exit
++ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+@@ -14980,19 +15290,21 @@ Configuration commands:
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ config.status
+-configured by $0, generated by GNU Autoconf 2.59,
+- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.61,
++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 2006 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
++
++ac_pwd='$ac_pwd'
++srcdir='$srcdir'
++INSTALL='$INSTALL'
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -15003,39 +15315,24 @@ while test $# != 0
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "x$1" : 'x\([^=]*\)='`
+- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
++ ac_option=`expr "X$1" : 'X\([^=]*\)='`
++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+- -*)
++ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+- *) # This is not an option, so the user has probably given explicit
+- # arguments.
+- ac_option=$1
+- ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+- --version | --vers* | -V )
+- echo "$ac_cs_version"; exit 0 ;;
+- --he | --h)
+- # Conflict between --help and --header
+- { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; };;
+- --help | --hel | -h )
+- echo "$ac_cs_usage"; exit 0 ;;
+- --debug | --d* | -d )
++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
++ echo "$ac_cs_version"; exit ;;
++ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+@@ -15045,18 +15342,24 @@ Try \`$0 --help' for more information."
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
++ --he | --h)
++ # Conflict between --help and --header
++ { echo "$as_me: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&2
++ { (exit 1); exit 1; }; };;
++ --help | --hel | -h )
++ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
++ -*) { echo "$as_me: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+- *) ac_config_targets="$ac_config_targets $1" ;;
++ *) ac_config_targets="$ac_config_targets $1"
++ ac_need_defaults=false ;;
+
+ esac
+ shift
+@@ -15072,42 +15375,54 @@ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
++ CONFIG_SHELL=$SHELL
++ export CONFIG_SHELL
++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ fi
+
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++exec 5>>config.log
++{
++ echo
++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
++## Running $as_me. ##
++_ASBOX
++ echo "$ac_log"
++} >&5
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS section.
++# INIT-COMMANDS
+ #
+-
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+ _ACEOF
+
+-
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
++
++# Handling of arguments.
+ for ac_config_target in $ac_config_targets
+ do
+- case "$ac_config_target" in
+- # Handling of arguments.
+- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+- "bfd-in3.h" ) CONFIG_FILES="$CONFIG_FILES bfd-in3.h:bfd-in2.h" ;;
+- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
+- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ case $ac_config_target in
++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
++ "bfd-in3.h") CONFIG_FILES="$CONFIG_FILES bfd-in3.h:bfd-in2.h" ;;
++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
++
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+ echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ done
+
++
+ # If the user did not use the arguments to specify the items to instantiate,
+ # then the envvar interface is used. Set only those that are not.
+ # We use the long form for the default assignment because of an extremely
+@@ -15119,401 +15434,504 @@ if $ac_need_defaults; then
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
++# simply because there is no reason against having it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
++# Hook for its removal unless debugging.
++# Note that there is a small window in which the directory will not be cleaned:
++# after its creation but before its name has been assigned to `$tmp'.
+ $debug ||
+ {
+- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
++ tmp=
++ trap 'exit_status=$?
++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
++' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+ }
+-
+ # Create a (secure) tmp directory for tmp files.
+
+ {
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./confstat$$-$RANDOM
+- (umask 077 && mkdir $tmp)
++ tmp=./conf$$-$RANDOM
++ (umask 077 && mkdir "$tmp")
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+ #
+-# CONFIG_FILES section.
++# Set up the sed scripts for CONFIG_FILES section.
+ #
+
+ # No need to generate the scripts if there are no CONFIG_FILES.
+ # This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+- # Protect against being on the right side of a sed subst in config.status.
+- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@build@,$build,;t t
+-s,@build_cpu@,$build_cpu,;t t
+-s,@build_vendor@,$build_vendor,;t t
+-s,@build_os@,$build_os,;t t
+-s,@host@,$host,;t t
+-s,@host_cpu@,$host_cpu,;t t
+-s,@host_vendor@,$host_vendor,;t t
+-s,@host_os@,$host_os,;t t
+-s,@target@,$target,;t t
+-s,@target_cpu@,$target_cpu,;t t
+-s,@target_vendor@,$target_vendor,;t t
+-s,@target_os@,$target_os,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@CYGPATH_W@,$CYGPATH_W,;t t
+-s,@PACKAGE@,$PACKAGE,;t t
+-s,@VERSION@,$VERSION,;t t
+-s,@ACLOCAL@,$ACLOCAL,;t t
+-s,@AUTOCONF@,$AUTOCONF,;t t
+-s,@AUTOMAKE@,$AUTOMAKE,;t t
+-s,@AUTOHEADER@,$AUTOHEADER,;t t
+-s,@MAKEINFO@,$MAKEINFO,;t t
+-s,@install_sh@,$install_sh,;t t
+-s,@STRIP@,$STRIP,;t t
+-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+-s,@mkdir_p@,$mkdir_p,;t t
+-s,@AWK@,$AWK,;t t
+-s,@SET_MAKE@,$SET_MAKE,;t t
+-s,@am__leading_dot@,$am__leading_dot,;t t
+-s,@AMTAR@,$AMTAR,;t t
+-s,@am__tar@,$am__tar,;t t
+-s,@am__untar@,$am__untar,;t t
+-s,@DEPDIR@,$DEPDIR,;t t
+-s,@am__include@,$am__include,;t t
+-s,@am__quote@,$am__quote,;t t
+-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+-s,@CCDEPMODE@,$CCDEPMODE,;t t
+-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+-s,@AR@,$AR,;t t
+-s,@ac_ct_AR@,$ac_ct_AR,;t t
+-s,@RANLIB@,$RANLIB,;t t
+-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+-s,@LN_S@,$LN_S,;t t
+-s,@LIBTOOL@,$LIBTOOL,;t t
+-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t
+-s,@NO_WERROR@,$NO_WERROR,;t t
+-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+-s,@MAINT@,$MAINT,;t t
+-s,@INSTALL_LIBBFD_TRUE@,$INSTALL_LIBBFD_TRUE,;t t
+-s,@INSTALL_LIBBFD_FALSE@,$INSTALL_LIBBFD_FALSE,;t t
+-s,@host_noncanonical@,$host_noncanonical,;t t
+-s,@target_noncanonical@,$target_noncanonical,;t t
+-s,@bfdlibdir@,$bfdlibdir,;t t
+-s,@bfdincludedir@,$bfdincludedir,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@ALLOCA@,$ALLOCA,;t t
+-s,@USE_NLS@,$USE_NLS,;t t
+-s,@MSGFMT@,$MSGFMT,;t t
+-s,@GMSGFMT@,$GMSGFMT,;t t
+-s,@XGETTEXT@,$XGETTEXT,;t t
+-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t
+-s,@CATALOGS@,$CATALOGS,;t t
+-s,@CATOBJEXT@,$CATOBJEXT,;t t
+-s,@DATADIRNAME@,$DATADIRNAME,;t t
+-s,@GMOFILES@,$GMOFILES,;t t
+-s,@INSTOBJEXT@,$INSTOBJEXT,;t t
+-s,@INTLDEPS@,$INTLDEPS,;t t
+-s,@INTLLIBS@,$INTLLIBS,;t t
+-s,@INTLOBJS@,$INTLOBJS,;t t
+-s,@POFILES@,$POFILES,;t t
+-s,@POSUB@,$POSUB,;t t
+-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t
+-s,@GT_NO@,$GT_NO,;t t
+-s,@GT_YES@,$GT_YES,;t t
+-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+-s,@l@,$l,;t t
+-s,@HDEFINES@,$HDEFINES,;t t
+-s,@BFD_HOST_64BIT_LONG@,$BFD_HOST_64BIT_LONG,;t t
+-s,@BFD_HOST_LONG_LONG@,$BFD_HOST_LONG_LONG,;t t
+-s,@BFD_HOST_64_BIT_DEFINED@,$BFD_HOST_64_BIT_DEFINED,;t t
+-s,@BFD_HOST_64_BIT@,$BFD_HOST_64_BIT,;t t
+-s,@BFD_HOST_U_64_BIT@,$BFD_HOST_U_64_BIT,;t t
+-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
+-s,@EXEEXT_FOR_BUILD@,$EXEEXT_FOR_BUILD,;t t
+-s,@COREFILE@,$COREFILE,;t t
+-s,@COREFLAG@,$COREFLAG,;t t
+-s,@WIN32LDFLAGS@,$WIN32LDFLAGS,;t t
+-s,@WIN32LIBADD@,$WIN32LIBADD,;t t
+-s,@TDEFINES@,$TDEFINES,;t t
+-s,@wordsize@,$wordsize,;t t
+-s,@bfd_libs@,$bfd_libs,;t t
+-s,@all_backends@,$all_backends,;t t
+-s,@bfd_backends@,$bfd_backends,;t t
+-s,@bfd_machines@,$bfd_machines,;t t
+-s,@bfd_default_target_size@,$bfd_default_target_size,;t t
+-s,@bfd_file_ptr@,$bfd_file_ptr,;t t
+-s,@bfd_ufile_ptr@,$bfd_ufile_ptr,;t t
+-s,@tdefaults@,$tdefaults,;t t
+-s,@datarootdir@,$datarootdir,;t t
+-s,@docdir@,$docdir,;t t
+-s,@htmldir@,$htmldir,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-CEOF
+-
+-_ACEOF
+-
+- cat >>$CONFIG_STATUS <<\_ACEOF
+- # Split the substitutions into bite-sized pieces for seds with
+- # small command number limits, like on Digital OSF/1 and HP-UX.
+- ac_max_sed_lines=48
+- ac_sed_frag=1 # Number of current file.
+- ac_beg=1 # First line for current file.
+- ac_end=$ac_max_sed_lines # Line after last line for current file.
+- ac_more_lines=:
+- ac_sed_cmds=
+- while $ac_more_lines; do
+- if test $ac_beg -gt 1; then
+- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- else
+- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- fi
+- if test ! -s $tmp/subs.frag; then
+- ac_more_lines=false
+- else
+- # The purpose of the label and of the branching condition is to
+- # speed up the sed processing (if there are no `@' at all, there
+- # is no need to browse any of the substitutions).
+- # These are the two extra sed commands mentioned above.
+- (echo ':t
+- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+- else
+- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+- fi
+- ac_sed_frag=`expr $ac_sed_frag + 1`
+- ac_beg=$ac_end
+- ac_end=`expr $ac_end + $ac_max_sed_lines`
+- fi
+- done
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds=cat
++if test -n "$CONFIG_FILES"; then
++
++_ACEOF
++
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++SHELL!$SHELL$ac_delim
++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
++PACKAGE_NAME!$PACKAGE_NAME$ac_delim
++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
++PACKAGE_STRING!$PACKAGE_STRING$ac_delim
++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
++exec_prefix!$exec_prefix$ac_delim
++prefix!$prefix$ac_delim
++program_transform_name!$program_transform_name$ac_delim
++bindir!$bindir$ac_delim
++sbindir!$sbindir$ac_delim
++libexecdir!$libexecdir$ac_delim
++datarootdir!$datarootdir$ac_delim
++datadir!$datadir$ac_delim
++sysconfdir!$sysconfdir$ac_delim
++sharedstatedir!$sharedstatedir$ac_delim
++localstatedir!$localstatedir$ac_delim
++includedir!$includedir$ac_delim
++oldincludedir!$oldincludedir$ac_delim
++docdir!$docdir$ac_delim
++infodir!$infodir$ac_delim
++htmldir!$htmldir$ac_delim
++dvidir!$dvidir$ac_delim
++pdfdir!$pdfdir$ac_delim
++psdir!$psdir$ac_delim
++libdir!$libdir$ac_delim
++localedir!$localedir$ac_delim
++mandir!$mandir$ac_delim
++DEFS!$DEFS$ac_delim
++ECHO_C!$ECHO_C$ac_delim
++ECHO_N!$ECHO_N$ac_delim
++ECHO_T!$ECHO_T$ac_delim
++LIBS!$LIBS$ac_delim
++build_alias!$build_alias$ac_delim
++host_alias!$host_alias$ac_delim
++target_alias!$target_alias$ac_delim
++build!$build$ac_delim
++build_cpu!$build_cpu$ac_delim
++build_vendor!$build_vendor$ac_delim
++build_os!$build_os$ac_delim
++host!$host$ac_delim
++host_cpu!$host_cpu$ac_delim
++host_vendor!$host_vendor$ac_delim
++host_os!$host_os$ac_delim
++target!$target$ac_delim
++target_cpu!$target_cpu$ac_delim
++target_vendor!$target_vendor$ac_delim
++target_os!$target_os$ac_delim
++CC!$CC$ac_delim
++CFLAGS!$CFLAGS$ac_delim
++LDFLAGS!$LDFLAGS$ac_delim
++CPPFLAGS!$CPPFLAGS$ac_delim
++ac_ct_CC!$ac_ct_CC$ac_delim
++EXEEXT!$EXEEXT$ac_delim
++OBJEXT!$OBJEXT$ac_delim
++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
++INSTALL_DATA!$INSTALL_DATA$ac_delim
++CYGPATH_W!$CYGPATH_W$ac_delim
++PACKAGE!$PACKAGE$ac_delim
++VERSION!$VERSION$ac_delim
++ACLOCAL!$ACLOCAL$ac_delim
++AUTOCONF!$AUTOCONF$ac_delim
++AUTOMAKE!$AUTOMAKE$ac_delim
++AUTOHEADER!$AUTOHEADER$ac_delim
++MAKEINFO!$MAKEINFO$ac_delim
++install_sh!$install_sh$ac_delim
++STRIP!$STRIP$ac_delim
++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
++mkdir_p!$mkdir_p$ac_delim
++AWK!$AWK$ac_delim
++SET_MAKE!$SET_MAKE$ac_delim
++am__leading_dot!$am__leading_dot$ac_delim
++AMTAR!$AMTAR$ac_delim
++am__tar!$am__tar$ac_delim
++am__untar!$am__untar$ac_delim
++DEPDIR!$DEPDIR$ac_delim
++am__include!$am__include$ac_delim
++am__quote!$am__quote$ac_delim
++AMDEP_TRUE!$AMDEP_TRUE$ac_delim
++AMDEP_FALSE!$AMDEP_FALSE$ac_delim
++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
++CCDEPMODE!$CCDEPMODE$ac_delim
++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
++AR!$AR$ac_delim
++RANLIB!$RANLIB$ac_delim
++LN_S!$LN_S$ac_delim
++LIBTOOL!$LIBTOOL$ac_delim
++WARN_CFLAGS!$WARN_CFLAGS$ac_delim
++NO_WERROR!$NO_WERROR$ac_delim
++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
++MAINT!$MAINT$ac_delim
++INSTALL_LIBBFD_TRUE!$INSTALL_LIBBFD_TRUE$ac_delim
++INSTALL_LIBBFD_FALSE!$INSTALL_LIBBFD_FALSE$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+-fi # test -n "$CONFIG_FILES"
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
+
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++CEOF$ac_eof
++_ACEOF
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++host_noncanonical!$host_noncanonical$ac_delim
++target_noncanonical!$target_noncanonical$ac_delim
++bfdlibdir!$bfdlibdir$ac_delim
++bfdincludedir!$bfdincludedir$ac_delim
++CPP!$CPP$ac_delim
++GREP!$GREP$ac_delim
++EGREP!$EGREP$ac_delim
++ALLOCA!$ALLOCA$ac_delim
++USE_NLS!$USE_NLS$ac_delim
++MSGFMT!$MSGFMT$ac_delim
++GMSGFMT!$GMSGFMT$ac_delim
++XGETTEXT!$XGETTEXT$ac_delim
++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim
++CATALOGS!$CATALOGS$ac_delim
++CATOBJEXT!$CATOBJEXT$ac_delim
++DATADIRNAME!$DATADIRNAME$ac_delim
++GMOFILES!$GMOFILES$ac_delim
++INSTOBJEXT!$INSTOBJEXT$ac_delim
++INTLDEPS!$INTLDEPS$ac_delim
++INTLLIBS!$INTLLIBS$ac_delim
++INTLOBJS!$INTLOBJS$ac_delim
++POFILES!$POFILES$ac_delim
++POSUB!$POSUB$ac_delim
++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim
++GT_NO!$GT_NO$ac_delim
++GT_YES!$GT_YES$ac_delim
++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim
++l!$l$ac_delim
++HDEFINES!$HDEFINES$ac_delim
++BFD_HOST_64BIT_LONG!$BFD_HOST_64BIT_LONG$ac_delim
++BFD_HOST_LONG_LONG!$BFD_HOST_LONG_LONG$ac_delim
++BFD_HOST_64_BIT_DEFINED!$BFD_HOST_64_BIT_DEFINED$ac_delim
++BFD_HOST_64_BIT!$BFD_HOST_64_BIT$ac_delim
++BFD_HOST_U_64_BIT!$BFD_HOST_U_64_BIT$ac_delim
++CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim
++EXEEXT_FOR_BUILD!$EXEEXT_FOR_BUILD$ac_delim
++COREFILE!$COREFILE$ac_delim
++COREFLAG!$COREFLAG$ac_delim
++WIN32LDFLAGS!$WIN32LDFLAGS$ac_delim
++WIN32LIBADD!$WIN32LIBADD$ac_delim
++TDEFINES!$TDEFINES$ac_delim
++wordsize!$wordsize$ac_delim
++bfd_libs!$bfd_libs$ac_delim
++all_backends!$all_backends$ac_delim
++bfd_backends!$bfd_backends$ac_delim
++bfd_machines!$bfd_machines$ac_delim
++bfd_default_target_size!$bfd_default_target_size$ac_delim
++bfd_file_ptr!$bfd_file_ptr$ac_delim
++bfd_ufile_ptr!$bfd_ufile_ptr$ac_delim
++tdefaults!$tdefaults$ac_delim
++LIBOBJS!$LIBOBJS$ac_delim
++LTLIBOBJS!$LTLIBOBJS$ac_delim
+ _ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 52; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
++ fi
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
++
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++:end
++s/|#_!!_#|//g
++CEOF$ac_eof
++_ACEOF
++
++
++# VPATH may cause trouble with some makes, so we remove $(srcdir),
++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
++# trailing colons and then remove the whole line if VPATH becomes empty
++# (actually we leave an empty line to preserve line numbers).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/
++s/:*\${srcdir}:*/:/
++s/:*@srcdir@:*/:/
++s/^\([^=]*=[ ]*\):*/\1/
++s/:*$//
++s/^[^=]*=[ ]*$//
++}'
++fi
++
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+- case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++fi # test -n "$CONFIG_FILES"
++
++
++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
++do
++ case $ac_tag in
++ :[FHLC]) ac_mode=$ac_tag; continue;;
++ esac
++ case $ac_mode$ac_tag in
++ :[FHL]*:*);;
++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
++echo "$as_me: error: Invalid tag $ac_tag." >&2;}
++ { (exit 1); exit 1; }; };;
++ :[FH]-) ac_tag=-:-;;
++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
++ esac
++ ac_save_IFS=$IFS
++ IFS=:
++ set x $ac_tag
++ IFS=$ac_save_IFS
++ shift
++ ac_file=$1
++ shift
++
++ case $ac_mode in
++ :L) ac_source=$1;;
++ :[FH])
++ ac_file_inputs=
++ for ac_f
++ do
++ case $ac_f in
++ -) ac_f="$tmp/stdin";;
++ *) # Look for the file first in the build tree, then in the source tree
++ # (if the path is not absolute). The absolute path cannot be DOS-style,
++ # because $ac_f cannot contain `:'.
++ test -f "$ac_f" ||
++ case $ac_f in
++ [\\/$]*) false;;
++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
++ esac ||
++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
++echo "$as_me: error: cannot find input file: $ac_f" >&2;}
++ { (exit 1); exit 1; }; };;
++ esac
++ ac_file_inputs="$ac_file_inputs $ac_f"
++ done
++
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ configure_input="Generated from "`IFS=:
++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
++ if test x"$ac_file" != x-; then
++ configure_input="$ac_file. $configure_input"
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ fi
++
++ case $ac_tag in
++ *:-:* | *:-) cat >"$tmp/stdin";;
++ esac
++ ;;
+ esac
+
+- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++ ac_dir=`$as_dirname -- "$ac_file" ||
+ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir="$ac_dir"
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+
++ case $ac_mode in
++ :F)
++ #
++ # CONFIG_FILE
++ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
++_ACEOF
+
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- configure_input=
+- else
+- configure_input="$ac_file. "
+- fi
+- configure_input=$configure_input"Generated from `echo $ac_file_in |
+- sed 's,.*/,,'` by configure."
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
++cat >>$CONFIG_STATUS <<\_ACEOF
++# If the template does not know about datarootdir, expand it.
++# FIXME: This hack should be removed a few years after 2.60.
++ac_datarootdir_hack=; ac_datarootdir_seen=
++
++case `sed -n '/datarootdir/ {
++ p
++ q
++}
++/@datadir@/p
++/@docdir@/p
++/@infodir@/p
++/@localedir@/p
++/@mandir@/p
++' $ac_file_inputs` in
++*datarootdir*) ac_datarootdir_seen=yes;;
++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
++_ACEOF
++cat >>$CONFIG_STATUS <<_ACEOF
++ ac_datarootdir_hack='
++ s&@datadir@&$datadir&g
++ s&@docdir@&$docdir&g
++ s&@infodir@&$infodir&g
++ s&@localedir@&$localedir&g
++ s&@mandir@&$mandir&g
++ s&\\\${datarootdir}&$datarootdir&g' ;;
++esac
+ _ACEOF
++
++# Neutralize VPATH when `$srcdir' = `.'.
++# Shell code in configure.ac might set extrasub.
++# FIXME: do we really want to maintain this feature?
+ cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+@@ -15521,248 +15939,130 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+- rm -f $tmp/stdin
+- if test x"$ac_file" != x-; then
+- mv $tmp/out $ac_file
+- else
+- cat $tmp/out
+- rm -f $tmp/out
+- fi
+-
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_HEADER section.
+-#
+-
+-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+-# NAME is the cpp macro being defined and VALUE is the value it is being given.
+-#
+-# ac_d sets the value in "#define NAME VALUE" lines.
+-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+-ac_dB='[ ].*$,\1#\2'
+-ac_dC=' '
+-ac_dD=',;t'
+-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+-ac_uB='$,\1#\2define\3'
+-ac_uC=' '
+-ac_uD=',;t'
++s&@configure_input@&$configure_input&;t t
++s&@top_builddir@&$ac_top_builddir_sub&;t t
++s&@srcdir@&$ac_srcdir&;t t
++s&@abs_srcdir@&$ac_abs_srcdir&;t t
++s&@top_srcdir@&$ac_top_srcdir&;t t
++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
++s&@builddir@&$ac_builddir&;t t
++s&@abs_builddir@&$ac_abs_builddir&;t t
++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
++s&@INSTALL@&$ac_INSTALL&;t t
++$ac_datarootdir_hack
++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
++
++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&5
++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&2;}
+
+-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ rm -f "$tmp/stdin"
+ case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++ -) cat "$tmp/out"; rm -f "$tmp/out";;
++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
++ ;;
++ :H)
++ #
++ # CONFIG_HEADER
++ #
++_ACEOF
++
++# Transform confdefs.h into a sed script `conftest.defines', that
++# substitutes the proper values into config.h.in to produce config.h.
++rm -f conftest.defines conftest.tail
++# First, append a space to every undef/define line, to ease matching.
++echo 's/$/ /' >conftest.defines
++# Then, protect against being on the right side of a sed subst, or in
++# an unquoted here document, in config.status. If some macros were
++# called several times there might be several #defines for the same
++# symbol, which is useless. But do not sort them, since the last
++# AC_DEFINE must be honored.
++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
++# NAME is the cpp macro being defined, VALUE is the value it is being given.
++# PARAMS is the parameter list in the macro definition--in most cases, it's
++# just an empty string.
++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
++ac_dB='\\)[ (].*,\\1define\\2'
++ac_dC=' '
++ac_dD=' ,'
+
+- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- # Do quote $f, to prevent DOS paths from being IFS'd.
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+- # Remove the trailing spaces.
+- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+-
+-_ACEOF
+-
+-# Transform confdefs.h into two sed scripts, `conftest.defines' and
+-# `conftest.undefs', that substitutes the proper values into
+-# config.h.in to produce config.h. The first handles `#define'
+-# templates, and the second `#undef' templates.
+-# And first: Protect against being on the right side of a sed subst in
+-# config.status. Protect against being in an unquoted here document
+-# in config.status.
+-rm -f conftest.defines conftest.undefs
+-# Using a here document instead of a string reduces the quoting nightmare.
+-# Putting comments in sed scripts is not portable.
+-#
+-# `end' is used to avoid that the second main sed command (meant for
+-# 0-ary CPP macros) applies to n-ary macro definitions.
+-# See the Autoconf documentation for `clear'.
+-cat >confdef2sed.sed <<\_ACEOF
+-s/[\\&,]/\\&/g
+-s,[\\$`],\\&,g
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+-t end
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+-: end
+-_ACEOF
+-# If some macros were called several times there might be several times
+-# the same #defines, which is useless. Nevertheless, we may not want to
+-# sort them, since we want the *last* AC-DEFINE to be honored.
+-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+-rm -f confdef2sed.sed
++uniq confdefs.h |
++ sed -n '
++ t rset
++ :rset
++ s/^[ ]*#[ ]*define[ ][ ]*//
++ t ok
++ d
++ :ok
++ s/[\\&,]/\\&/g
++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
++ ' >>conftest.defines
+
+-# This sed command replaces #undef with comments. This is necessary, for
++# Remove the space that was appended to ease matching.
++# Then replace #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-cat >>conftest.undefs <<\_ACEOF
+-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++# (The regexp can be short, since the line contains either #define or #undef.)
++echo 's/ $//
++s,^[ #]*u.*,/* & */,' >>conftest.defines
++
++# Break up conftest.defines:
++ac_max_sed_lines=50
++
++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
++# et cetera.
++ac_in='$ac_file_inputs'
++ac_out='"$tmp/out1"'
++ac_nxt='"$tmp/out2"'
++
++while :
++do
++ # Write a here document:
++ cat >>$CONFIG_STATUS <<_ACEOF
++ # First, check the format of the line:
++ cat >"\$tmp/defines.sed" <<\\CEOF
++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
++b
++:def
+ _ACEOF
+-
+-# Break up conftest.defines because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+-echo ' :' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.defines >/dev/null
+-do
+- # Write a limited-size here document to $tmp/defines.sed.
+- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#define' lines.
+- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f $tmp/defines.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
++ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines
+-echo ' fi # grep' >>$CONFIG_STATUS
+-echo >>$CONFIG_STATUS
+-
+-# Break up conftest.undefs because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.undefs >/dev/null
+-do
+- # Write a limited-size here document to $tmp/undefs.sed.
+- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#undef'
+- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+- echo 'CEOF
+- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+- rm -f conftest.undefs
+- mv conftest.tail conftest.undefs
+-done
+-rm -f conftest.undefs
++rm -f conftest.defines conftest.tail
+
++echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- echo "/* Generated by configure. */" >$tmp/config.h
+- else
+- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+- fi
+- cat $tmp/in >>$tmp/config.h
+- rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ echo "/* $configure_input */" >"$tmp/config.h"
++ cat "$ac_result" >>"$tmp/config.h"
++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_file" : 'X\(//\)[^/]' \| \
+- X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+ rm -f $ac_file
+- mv $tmp/config.h $ac_file
++ mv "$tmp/config.h" $ac_file
+ fi
+ else
+- cat $tmp/config.h
+- rm -f $tmp/config.h
++ echo "/* $configure_input */"
++ cat "$ac_result"
+ fi
++ rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -15773,135 +16073,39 @@ for _am_header in $config_headers :; do
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
+ $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+- X$ac_file : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
+ echo X$ac_file |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`/stamp-h$_am_stamp_count
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_COMMANDS section.
+-#
+-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_dest" : 'X\(//\)[^/]' \| \
+- X"$ac_dest" : 'X\(//\)$' \| \
+- X"$ac_dest" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_dest" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+- ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+- .) # No --srcdir option. We are building in place.
+- ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
+- ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++ ;;
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
++echo "$as_me: executing $ac_file commands" >&6;}
++ ;;
++ esac
+
+
+- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+-echo "$as_me: executing $ac_dest commands" >&6;}
+- case $ac_dest in
+- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ case $ac_file$ac_mode in
++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -15911,18 +16115,29 @@ echo "$as_me: executing $ac_dest command
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`(dirname "$mf") 2>/dev/null ||
++ dirpart=`$as_dirname -- "$mf" ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -15944,54 +16159,80 @@ echo X"$mf" |
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`(dirname "$file") 2>/dev/null ||
++ fdir=`$as_dirname -- "$file" ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p $dirpart/$fdir
+- else
+- as_dir=$dirpart/$fdir
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir=$dirpart/$fdir
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
+- default ) sed -e '/SRC-POTFILES =/r po/SRC-POTFILES' -e '/BLD-POTFILES =/r po/BLD-POTFILES' po/Makefile.in > po/Makefile ;;
++ "default":C) sed -e '/SRC-POTFILES =/r po/SRC-POTFILES' -e '/BLD-POTFILES =/r po/BLD-POTFILES' po/Makefile.in > po/Makefile ;;
++
+ esac
+-done
+-_ACEOF
++done # for ac_tag
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+diff -Nrup binutils-2.17/bfd/configure.in binutils-2.17.atmel.1.3.0/bfd/configure.in
+--- binutils-2.17/bfd/configure.in 2006-06-23 20:17:07.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/configure.in 2007-09-28 10:30:44.000000000 +0200
+@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
+ AC_CANONICAL_TARGET
+ AC_ISC_POSIX
+
+-AM_INIT_AUTOMAKE(bfd, 2.17)
++AM_INIT_AUTOMAKE(bfd, 2.17.atmel.1.2.0)
+
+ dnl These must be called before AM_PROG_LIBTOOL, because it may want
+ dnl to call AC_CHECK_PROG.
+@@ -583,6 +583,7 @@ do
+ bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
+ bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
+ bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
++ bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
+ bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
+ bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
+ bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
+diff -Nrup binutils-2.17/bfd/cpu-avr32.c binutils-2.17.atmel.1.3.0/bfd/cpu-avr32.c
+--- binutils-2.17/bfd/cpu-avr32.c 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/cpu-avr32.c 2007-05-31 17:03:36.000000000 +0200
+@@ -0,0 +1,49 @@
++/* BFD library support routines for AVR32.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This is part of BFD, the Binary File Descriptor library.
++
++ 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. */
++
++#include "bfd.h"
++#include "sysdep.h"
++#include "libbfd.h"
++
++#define N(machine, print, default, next) \
++ { \
++ 32, /* 32 bits in a word */ \
++ 32, /* 32 bits in an address */ \
++ 8, /* 8 bits in a byte */ \
++ bfd_arch_avr32, /* architecture */ \
++ machine, /* machine */ \
++ "avr32", /* arch name */ \
++ print, /* printable name */ \
++ 1, /* section align power */ \
++ default, /* the default machine? */ \
++ bfd_default_compatible, \
++ bfd_default_scan, \
++ next, \
++ }
++
++static const bfd_arch_info_type cpu_info[] =
++{
++ N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
++ N(bfd_mach_avr32_uc, "avr32:uc", FALSE, NULL),
++};
++
++const bfd_arch_info_type bfd_avr32_arch =
++ N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
+diff -Nrup binutils-2.17/bfd/doc/bfd.info binutils-2.17.atmel.1.3.0/bfd/doc/bfd.info
+--- binutils-2.17/bfd/doc/bfd.info 2006-06-12 15:37:32.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/doc/bfd.info 2007-03-26 10:34:02.000000000 +0200
+@@ -1,5 +1,7 @@
+-This is ../.././bfd/doc/bfd.info, produced by makeinfo version 4.8 from
+-../.././bfd/doc/bfd.texinfo.
++This is
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/bfd/doc/bfd.info,
++produced by makeinfo version 4.8 from
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/bfd/doc/bfd.texinfo.
+
+ START-INFO-DIR-ENTRY
+ * Bfd: (bfd). The Binary File Descriptor library.
+@@ -10239,67 +10241,67 @@ Index
+
+ 
+ Tag Table:
+-Node: Top724
+-Node: Overview1056
+-Node: History2107
+-Node: How It Works3053
+-Node: What BFD Version 2 Can Do4595
+-Node: BFD information loss5910
+-Node: Canonical format8442
+-Node: BFD front end12814
+-Node: Memory Usage38428
+-Node: Initialization39656
+-Node: Sections40115
+-Node: Section Input40598
+-Node: Section Output41963
+-Node: typedef asection44449
+-Node: section prototypes69406
+-Node: Symbols79086
+-Node: Reading Symbols80681
+-Node: Writing Symbols81788
+-Node: Mini Symbols83497
+-Node: typedef asymbol84471
+-Node: symbol handling functions89389
+-Node: Archives94731
+-Node: Formats98457
+-Node: Relocations101405
+-Node: typedef arelent102132
+-Node: howto manager117943
+-Node: Core Files180223
+-Node: Targets182040
+-Node: bfd_target184010
+-Node: Architectures204090
+-Node: Opening and Closing225522
+-Node: Internal236524
+-Node: File Caching242857
+-Node: Linker Functions244771
+-Node: Creating a Linker Hash Table246444
+-Node: Adding Symbols to the Hash Table248182
+-Node: Differing file formats249082
+-Node: Adding symbols from an object file250830
+-Node: Adding symbols from an archive252981
+-Node: Performing the Final Link255395
+-Node: Information provided by the linker256637
+-Node: Relocating the section contents257791
+-Node: Writing the symbol table259542
+-Node: Hash Tables262535
+-Node: Creating and Freeing a Hash Table263733
+-Node: Looking Up or Entering a String264983
+-Node: Traversing a Hash Table266236
+-Node: Deriving a New Hash Table Type267025
+-Node: Define the Derived Structures268091
+-Node: Write the Derived Creation Routine269172
+-Node: Write Other Derived Routines271796
+-Node: BFD back ends273111
+-Node: What to Put Where273381
+-Node: aout273519
+-Node: coff279837
+-Node: elf304314
+-Node: mmo305177
+-Node: File layout306105
+-Node: Symbol-table311752
+-Node: mmo section mapping315521
+-Node: GNU Free Documentation License319173
+-Node: Index338898
++Node: Top858
++Node: Overview1190
++Node: History2241
++Node: How It Works3187
++Node: What BFD Version 2 Can Do4729
++Node: BFD information loss6044
++Node: Canonical format8576
++Node: BFD front end12948
++Node: Memory Usage38562
++Node: Initialization39790
++Node: Sections40249
++Node: Section Input40732
++Node: Section Output42097
++Node: typedef asection44583
++Node: section prototypes69540
++Node: Symbols79220
++Node: Reading Symbols80815
++Node: Writing Symbols81922
++Node: Mini Symbols83631
++Node: typedef asymbol84605
++Node: symbol handling functions89523
++Node: Archives94865
++Node: Formats98591
++Node: Relocations101539
++Node: typedef arelent102266
++Node: howto manager118077
++Node: Core Files180357
++Node: Targets182174
++Node: bfd_target184144
++Node: Architectures204224
++Node: Opening and Closing225656
++Node: Internal236658
++Node: File Caching242991
++Node: Linker Functions244905
++Node: Creating a Linker Hash Table246578
++Node: Adding Symbols to the Hash Table248316
++Node: Differing file formats249216
++Node: Adding symbols from an object file250964
++Node: Adding symbols from an archive253115
++Node: Performing the Final Link255529
++Node: Information provided by the linker256771
++Node: Relocating the section contents257925
++Node: Writing the symbol table259676
++Node: Hash Tables262669
++Node: Creating and Freeing a Hash Table263867
++Node: Looking Up or Entering a String265117
++Node: Traversing a Hash Table266370
++Node: Deriving a New Hash Table Type267159
++Node: Define the Derived Structures268225
++Node: Write the Derived Creation Routine269306
++Node: Write Other Derived Routines271930
++Node: BFD back ends273245
++Node: What to Put Where273515
++Node: aout273653
++Node: coff279971
++Node: elf304448
++Node: mmo305311
++Node: File layout306239
++Node: Symbol-table311886
++Node: mmo section mapping315655
++Node: GNU Free Documentation License319307
++Node: Index339032
+ 
+ End Tag Table
+diff -Nrup binutils-2.17/bfd/doc/Makefile.in binutils-2.17.atmel.1.3.0/bfd/doc/Makefile.in
+--- binutils-2.17/bfd/doc/Makefile.in 2006-04-06 23:49:26.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/doc/Makefile.in 2007-03-26 10:30:55.000000000 +0200
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+@@ -105,6 +105,7 @@ EXEEXT = @EXEEXT@
+ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+ GMOFILES = @GMOFILES@
+ GMSGFMT = @GMSGFMT@
++GREP = @GREP@
+ GT_NO = @GT_NO@
+ GT_YES = @GT_YES@
+ HDEFINES = @HDEFINES@
+@@ -154,10 +155,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
+ WIN32LDFLAGS = @WIN32LDFLAGS@
+ WIN32LIBADD = @WIN32LIBADD@
+ XGETTEXT = @XGETTEXT@
+-ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_RANLIB = @ac_ct_RANLIB@
+-ac_ct_STRIP = @ac_ct_STRIP@
+ all_backends = @all_backends@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+@@ -183,6 +181,7 @@ build_vendor = @build_vendor@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+@@ -197,12 +196,15 @@ install_sh = @install_sh@
+ l = @l@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
++psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -364,9 +366,11 @@ distclean-libtool:
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && cd $(srcdir) && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+- if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+- done; \
++ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
++ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
++ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
++ done; \
++ else :; fi && \
+ cd "$$am__cwd"; \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ $<; \
+@@ -408,6 +412,7 @@ bfd.dvi: bfd.texinfo
+ bfd.pdf: bfd.texinfo
+ bfd.html: bfd.texinfo
+ .dvi.ps:
++ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) -o $@ $<
+
+ uninstall-info-am:
+@@ -440,10 +445,13 @@ dist-info: $(INFO_DEPS)
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+- for file in $$d/$$base*; do \
+- relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+- test -f $(distdir)/$$relfile || \
+- cp -p $$file $(distdir)/$$relfile; \
++ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
++ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
++ if test -f $$file; then \
++ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
++ test -f $(distdir)/$$relfile || \
++ cp -p $$file $(distdir)/$$relfile; \
++ else :; fi; \
+ done; \
+ done
+
+diff -Nrup binutils-2.17/bfd/elf32-avr32.c binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c
+--- binutils-2.17/bfd/elf32-avr32.c 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c 2007-09-28 10:30:44.000000000 +0200
+@@ -0,0 +1,3881 @@
++/* AVR32-specific support for 32-bit ELF.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of BFD, the Binary File Descriptor library.
++
++ 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. */
++
++#include "bfd.h"
++#include "sysdep.h"
++#include "bfdlink.h"
++#include "libbfd.h"
++#include "elf-bfd.h"
++#include "elf/avr32.h"
++#include "elf32-avr32.h"
++
++#define xDEBUG
++#define xRELAX_DEBUG
++
++#ifdef DEBUG
++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
++#else
++# define pr_debug(fmt, args...) do { } while (0)
++#endif
++
++#ifdef RELAX_DEBUG
++# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
++#else
++# define RDBG(fmt, args...) do { } while (0)
++#endif
++
++/* When things go wrong, we want it to blow up, damnit! */
++#undef BFD_ASSERT
++#undef abort
++#define BFD_ASSERT(expr) \
++ do \
++ { \
++ if (!(expr)) \
++ { \
++ bfd_assert(__FILE__, __LINE__); \
++ abort(); \
++ } \
++ } \
++ while (0)
++
++/* The name of the dynamic interpreter. This is put in the .interp section. */
++#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
++
++#define AVR32_GOT_HEADER_SIZE 8
++#define AVR32_FUNCTION_STUB_SIZE 8
++
++#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
++#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
++#define ELF_R_SYM(x) ELF32_R_SYM(x)
++
++#define NOP_OPCODE 0xd703
++
++
++/* Mapping between BFD relocations and ELF relocations */
++
++static reloc_howto_type *
++bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
++static void
++avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
++
++/* Generic HOWTO */
++#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \
++ HOWTO(name, align, size, bitsize, pcrel, bitpos, \
++ complain_overflow_##complain, bfd_elf_generic_reloc, #name, \
++ FALSE, 0, mask, pcrel)
++
++static reloc_howto_type elf_avr32_howto_table[] = {
++ /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */
++ GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000),
++
++ GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff),
++ GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff),
++ GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff),
++ GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff),
++
++ /* Difference between two symbol (sym2 - sym1). The reloc encodes
++ the value of sym1. The field contains the difference before any
++ relaxing is done. */
++ GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
++
++ GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
++ GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
++
++ GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff),
++ GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0),
++ GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff),
++
++ GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
++ GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3),
++ GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff),
++ GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0),
++ GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
++
++ GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff),
++ GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff),
++
++ GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0),
++
++ GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
++
++ GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
++ GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++
++ GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000),
++};
++
++struct elf_reloc_map
++{
++ bfd_reloc_code_real_type bfd_reloc_val;
++ unsigned char elf_reloc_val;
++};
++
++static const struct elf_reloc_map avr32_reloc_map[] =
++{
++ { BFD_RELOC_NONE, R_AVR32_NONE },
++
++ { BFD_RELOC_32, R_AVR32_32 },
++ { BFD_RELOC_16, R_AVR32_16 },
++ { BFD_RELOC_8, R_AVR32_8 },
++ { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL },
++ { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL },
++ { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL },
++ { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 },
++ { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 },
++ { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 },
++ { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 },
++ { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 },
++ { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 },
++
++ { BFD_RELOC_AVR32_21S, R_AVR32_21S },
++ { BFD_RELOC_AVR32_16U, R_AVR32_16U },
++ { BFD_RELOC_AVR32_16S, R_AVR32_16S },
++ { BFD_RELOC_AVR32_SUB5, R_AVR32_16S },
++ { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT },
++ { BFD_RELOC_AVR32_8S, R_AVR32_8S },
++
++ { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL },
++ { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL },
++ { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL },
++ { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL },
++ { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL },
++ { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL },
++ { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL },
++ { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL },
++
++ { BFD_RELOC_HI16, R_AVR32_HI16 },
++ { BFD_RELOC_LO16, R_AVR32_LO16 },
++
++ { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC },
++ { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL },
++ { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT },
++ { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S },
++ { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW },
++ { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S },
++ /* GOT7UW should never be generated by the assembler */
++
++ { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT },
++ { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL },
++ { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP },
++ { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP },
++
++ { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN },
++};
++
++static reloc_howto_type *
++bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
++ bfd_reloc_code_real_type code)
++{
++ unsigned int i;
++
++ for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
++ {
++ if (avr32_reloc_map[i].bfd_reloc_val == code)
++ return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
++ }
++
++ return NULL;
++}
++
++static void
++avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
++ arelent *cache_ptr,
++ Elf_Internal_Rela *dst)
++{
++ unsigned int r_type;
++
++ r_type = ELF32_R_TYPE (dst->r_info);
++ BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
++ cache_ptr->howto = &elf_avr32_howto_table[r_type];
++}
++
++
++/* AVR32 ELF linker hash table and associated hash entries. */
++
++static struct bfd_hash_entry *
++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
++ struct bfd_hash_table *table,
++ const char *string);
++static void
++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *dir,
++ struct elf_link_hash_entry *ind);
++static struct bfd_link_hash_table *
++avr32_elf_link_hash_table_create(bfd *abfd);
++
++/*
++ Try to limit memory usage to something reasonable when sorting the
++ GOT. If we ever get more than this many references to the same
++ symbol, we may need to do something special.
++*/
++#define MAX_NR_GOT_HOLES 8192
++
++/*
++ AVR32 GOT entry. We need to keep track of refcounts and offsets
++ simultaneously, since we need the offsets during relaxation, and we
++ also want to be able to drop GOT entries during relaxation. In
++ addition to this, we want to keep the list of GOT entries sorted so
++ that we can keep the most-used entries at the lowest offsets.
++*/
++struct got_entry
++{
++ struct got_entry *next;
++ struct got_entry **pprev;
++ int refcount;
++ bfd_signed_vma offset;
++};
++
++struct elf_avr32_link_hash_entry
++{
++ struct elf_link_hash_entry root;
++
++ /* Number of runtime relocations against this symbol. */
++ unsigned int possibly_dynamic_relocs;
++
++ /* If there are anything but R_AVR32_GOT18 relocations against this
++ symbol, it means that someone may be taking the address of the
++ function, and we should therefore not create a stub. */
++ bfd_boolean no_fn_stub;
++
++ /* If there is a R_AVR32_32 relocation in a read-only section
++ against this symbol, we could be in trouble. If we're linking a
++ shared library or this symbol is defined in one, it means we must
++ emit a run-time reloc for it and that's not allowed in read-only
++ sections. */
++ asection *readonly_reloc_sec;
++ bfd_vma readonly_reloc_offset;
++
++ /* Record which frag (if any) contains the symbol. This is used
++ during relaxation in order to avoid having to update all symbols
++ whenever we move something. For local symbols, this information
++ is in the local_sym_frag member of struct elf_obj_tdata. */
++ struct fragment *sym_frag;
++};
++#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
++
++struct elf_avr32_link_hash_table
++{
++ struct elf_link_hash_table root;
++
++ /* Shortcuts to get to dynamic linker sections. */
++ asection *sgot;
++ asection *srelgot;
++ asection *sstub;
++
++ /* We use a variation of Pigeonhole Sort to sort the GOT. After the
++ initial refcounts have been determined, we initialize
++ nr_got_holes to the highest refcount ever seen and allocate an
++ array of nr_got_holes entries for got_hole. Each GOT entry is
++ then stored in this array at the index given by its refcount.
++
++ When a GOT entry has its refcount decremented during relaxation,
++ it is moved to a lower index in the got_hole array.
++ */
++ struct got_entry **got_hole;
++ int nr_got_holes;
++
++ /* Dynamic relocations to local symbols. Only used when linking a
++ shared library and -Bsymbolic is not given. */
++ unsigned int local_dynamic_relocs;
++
++ bfd_boolean relocations_analyzed;
++ bfd_boolean symbols_adjusted;
++ bfd_boolean repeat_pass;
++ bfd_boolean direct_data_refs;
++ unsigned int relax_iteration;
++ unsigned int relax_pass;
++};
++#define avr32_elf_hash_table(p) \
++ ((struct elf_avr32_link_hash_table *)((p)->hash))
++
++static struct bfd_hash_entry *
++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
++ struct bfd_hash_table *table,
++ const char *string)
++{
++ struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
++
++ /* Allocate the structure if it hasn't already been allocated by a
++ subclass */
++ if (ret == NULL)
++ ret = (struct elf_avr32_link_hash_entry *)
++ bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
++
++ if (ret == NULL)
++ return NULL;
++
++ memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
++
++ /* Give the superclass a chance */
++ ret = (struct elf_avr32_link_hash_entry *)
++ _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
++
++ return (struct bfd_hash_entry *)ret;
++}
++
++/* Copy data from an indirect symbol to its direct symbol, hiding the
++ old indirect symbol. Process additional relocation information.
++ Also called for weakdefs, in which case we just let
++ _bfd_elf_link_hash_copy_indirect copy the flags for us. */
++
++static void
++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *dir,
++ struct elf_link_hash_entry *ind)
++{
++ struct elf_avr32_link_hash_entry *edir, *eind;
++
++ _bfd_elf_link_hash_copy_indirect (info, dir, ind);
++
++ if (ind->root.type != bfd_link_hash_indirect)
++ return;
++
++ edir = (struct elf_avr32_link_hash_entry *)dir;
++ eind = (struct elf_avr32_link_hash_entry *)ind;
++
++ edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
++ edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
++}
++
++static struct bfd_link_hash_table *
++avr32_elf_link_hash_table_create(bfd *abfd)
++{
++ struct elf_avr32_link_hash_table *ret;
++
++ ret = bfd_zmalloc(sizeof(*ret));
++ if (ret == NULL)
++ return NULL;
++
++ if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
++ avr32_elf_link_hash_newfunc,
++ sizeof (struct elf_avr32_link_hash_entry)))
++ {
++ free(ret);
++ return NULL;
++ }
++
++ /* Prevent the BFD core from creating bogus got_entry pointers */
++ ret->root.init_got_refcount.glist = NULL;
++ ret->root.init_plt_refcount.glist = NULL;
++ ret->root.init_got_offset.glist = NULL;
++ ret->root.init_plt_offset.glist = NULL;
++
++ return &ret->root.root;
++}
++
++
++/* Initial analysis and creation of dynamic sections and symbols */
++
++static asection *
++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
++ unsigned int align_power);
++static struct elf_link_hash_entry *
++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
++ const char *name, asection *sec,
++ bfd_vma offset);
++static bfd_boolean
++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
++static bfd_boolean
++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
++static bfd_boolean
++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
++ const Elf_Internal_Rela *relocs);
++static bfd_boolean
++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *h);
++
++static asection *
++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
++ unsigned int align_power)
++{
++ asection *sec;
++
++ sec = bfd_make_section(dynobj, name);
++ if (!sec
++ || !bfd_set_section_flags(dynobj, sec, flags)
++ || !bfd_set_section_alignment(dynobj, sec, align_power))
++ return NULL;
++
++ return sec;
++}
++
++static struct elf_link_hash_entry *
++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
++ const char *name, asection *sec,
++ bfd_vma offset)
++{
++ struct bfd_link_hash_entry *bh = NULL;
++ struct elf_link_hash_entry *h;
++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
++
++ if (!(_bfd_generic_link_add_one_symbol
++ (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
++ bed->collect, &bh)))
++ return NULL;
++
++ h = (struct elf_link_hash_entry *)bh;
++ h->def_regular = 1;
++ h->type = STT_OBJECT;
++ h->other = STV_HIDDEN;
++
++ return h;
++}
++
++static bfd_boolean
++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ flagword flags;
++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
++
++ htab = avr32_elf_hash_table(info);
++ flags = bed->dynamic_sec_flags;
++
++ if (htab->sgot)
++ return TRUE;
++
++ htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
++ if (!htab->srelgot)
++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
++ flags | SEC_READONLY, 2);
++
++ if (!htab->sgot || !htab->srelgot)
++ return FALSE;
++
++ htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
++ htab->sgot, 0);
++ if (!htab->root.hgot)
++ return FALSE;
++
++ /* Make room for the GOT header */
++ htab->sgot->size += bed->got_header_size;
++
++ return TRUE;
++}
++
++/* (1) Create all dynamic (i.e. linker generated) sections that we may
++ need during the link */
++
++static bfd_boolean
++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ flagword flags;
++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
++
++ pr_debug("(1) create dynamic sections\n");
++
++ htab = avr32_elf_hash_table(info);
++ flags = bed->dynamic_sec_flags;
++
++ if (!avr32_elf_create_got_section (dynobj, info))
++ return FALSE;
++
++ if (!htab->sstub)
++ htab->sstub = create_dynamic_section(dynobj, ".stub",
++ flags | SEC_READONLY | SEC_CODE, 2);
++
++ if (!htab->sstub)
++ return FALSE;
++
++ return TRUE;
++}
++
++/* (2) Go through all the relocs and count any potential GOT- or
++ PLT-references to each symbol */
++
++static bfd_boolean
++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
++ const Elf_Internal_Rela *relocs)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ struct elf_avr32_link_hash_table *htab;
++ struct elf_link_hash_entry **sym_hashes;
++ const Elf_Internal_Rela *rel, *rel_end;
++ struct got_entry **local_got_ents;
++ struct got_entry *got;
++ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
++ asection *sgot;
++ bfd *dynobj;
++
++ pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
++ abfd->filename, sec->name, sec->size);
++
++ if (info->relocatable)
++ return TRUE;
++
++ dynobj = elf_hash_table(info)->dynobj;
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ sym_hashes = elf_sym_hashes(abfd);
++ htab = avr32_elf_hash_table(info);
++ local_got_ents = elf_local_got_ents(abfd);
++ sgot = htab->sgot;
++
++ rel_end = relocs + sec->reloc_count;
++ for (rel = relocs; rel < rel_end; rel++)
++ {
++ unsigned long r_symndx, r_type;
++ struct elf_avr32_link_hash_entry *h;
++
++ r_symndx = ELF32_R_SYM(rel->r_info);
++ r_type = ELF32_R_TYPE(rel->r_info);
++
++ /* Local symbols use local_got_ents, while others store the same
++ information in the hash entry */
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ pr_debug(" (2a) processing local symbol %lu\n", r_symndx);
++ h = NULL;
++ }
++ else
++ {
++ h = (struct elf_avr32_link_hash_entry *)
++ sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
++ pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string);
++ }
++
++ /* Some relocs require special sections to be created. */
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ if (rel->r_addend)
++ {
++ if (info->callbacks->reloc_dangerous
++ (info, _("Non-zero addend on GOT-relative relocation"),
++ abfd, sec, rel->r_offset) == FALSE)
++ return FALSE;
++ }
++ /* fall through */
++ case R_AVR32_GOTPC:
++ if (dynobj == NULL)
++ elf_hash_table(info)->dynobj = dynobj = abfd;
++ if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
++ return FALSE;
++ break;
++ case R_AVR32_32:
++ /* We may need to create .rela.dyn later on. */
++ if (dynobj == NULL
++ && (info->shared || h != NULL)
++ && (sec->flags & SEC_ALLOC))
++ elf_hash_table(info)->dynobj = dynobj = abfd;
++ break;
++ }
++
++ if (h != NULL && r_type != R_AVR32_GOT18SW)
++ h->no_fn_stub = TRUE;
++
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ if (h != NULL)
++ {
++ got = h->root.got.glist;
++ if (!got)
++ {
++ got = bfd_zalloc(abfd, sizeof(struct got_entry));
++ if (!got)
++ return FALSE;
++ h->root.got.glist = got;
++ }
++ }
++ else
++ {
++ if (!local_got_ents)
++ {
++ bfd_size_type size;
++ bfd_size_type i;
++ struct got_entry *tmp_entry;
++
++ size = symtab_hdr->sh_info;
++ size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
++ local_got_ents = bfd_zalloc(abfd, size);
++ if (!local_got_ents)
++ return FALSE;
++
++ elf_local_got_ents(abfd) = local_got_ents;
++
++ tmp_entry = (struct got_entry *)(local_got_ents
++ + symtab_hdr->sh_info);
++ for (i = 0; i < symtab_hdr->sh_info; i++)
++ local_got_ents[i] = &tmp_entry[i];
++ }
++
++ got = local_got_ents[r_symndx];
++ }
++
++ got->refcount++;
++ if (got->refcount > htab->nr_got_holes)
++ htab->nr_got_holes = got->refcount;
++ break;
++
++ case R_AVR32_32:
++ if ((info->shared || h != NULL)
++ && (sec->flags & SEC_ALLOC))
++ {
++ if (htab->srelgot == NULL)
++ {
++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
++ bed->dynamic_sec_flags
++ | SEC_READONLY, 2);
++ if (htab->srelgot == NULL)
++ return FALSE;
++ }
++
++ if (sec->flags & SEC_READONLY
++ && !h->readonly_reloc_sec)
++ {
++ h->readonly_reloc_sec = sec;
++ h->readonly_reloc_offset = rel->r_offset;
++ }
++
++ if (h != NULL)
++ {
++ pr_debug("Non-GOT reference to symbol %s\n",
++ h->root.root.root.string);
++ h->possibly_dynamic_relocs++;
++ }
++ else
++ {
++ pr_debug("Non-GOT reference to local symbol %lu\n",
++ r_symndx);
++ htab->local_dynamic_relocs++;
++ }
++ }
++
++ break;
++
++ /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
++ }
++ }
++
++ return TRUE;
++}
++
++/* (3) Adjust a symbol defined by a dynamic object and referenced by a
++ regular object. The current definition is in some section of the
++ dynamic object, but we're not including those sections. We have to
++ change the definition to something the rest of the link can
++ understand. */
++
++static bfd_boolean
++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *h)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct elf_avr32_link_hash_entry *havr;
++ bfd *dynobj;
++
++ pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
++
++ htab = avr32_elf_hash_table(info);
++ havr = (struct elf_avr32_link_hash_entry *)h;
++ dynobj = elf_hash_table(info)->dynobj;
++
++ /* Make sure we know what is going on here. */
++ BFD_ASSERT (dynobj != NULL
++ && (h->u.weakdef != NULL
++ || (h->def_dynamic
++ && h->ref_regular
++ && !h->def_regular)));
++
++ /* We don't want dynamic relocations in read-only sections. */
++ if (havr->readonly_reloc_sec)
++ {
++ if (info->callbacks->reloc_dangerous
++ (info, _("dynamic relocation in read-only section"),
++ havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
++ havr->readonly_reloc_offset) == FALSE)
++ return FALSE;
++ }
++
++ /* If this is a function, create a stub if possible and set the
++ symbol to the stub location. */
++ if (0 && !havr->no_fn_stub)
++ {
++ if (!h->def_regular)
++ {
++ asection *s = htab->sstub;
++
++ BFD_ASSERT(s != NULL);
++
++ h->root.u.def.section = s;
++ h->root.u.def.value = s->size;
++ h->plt.offset = s->size;
++ s->size += AVR32_FUNCTION_STUB_SIZE;
++
++ return TRUE;
++ }
++ }
++ else if (h->type == STT_FUNC)
++ {
++ /* This will set the entry for this symbol in the GOT to 0, and
++ the dynamic linker will take care of this. */
++ h->root.u.def.value = 0;
++ return TRUE;
++ }
++
++ /* If this is a weak symbol, and there is a real definition, the
++ processor independent code will have arranged for us to see the
++ real definition first, and we can just use the same value. */
++ if (h->u.weakdef != NULL)
++ {
++ BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
++ || h->u.weakdef->root.type == bfd_link_hash_defweak);
++ h->root.u.def.section = h->u.weakdef->root.u.def.section;
++ h->root.u.def.value = h->u.weakdef->root.u.def.value;
++ return TRUE;
++ }
++
++ /* This is a reference to a symbol defined by a dynamic object which
++ is not a function. */
++
++ return TRUE;
++}
++
++
++/* Garbage-collection of unused sections */
++
++static asection *
++avr32_elf_gc_mark_hook(asection *sec,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED,
++ Elf_Internal_Rela *rel,
++ struct elf_link_hash_entry *h,
++ Elf_Internal_Sym *sym)
++{
++ if (h)
++ {
++ switch (ELF32_R_TYPE(rel->r_info))
++ {
++ /* TODO: VTINHERIT/VTENTRY */
++ default:
++ switch (h->root.type)
++ {
++ case bfd_link_hash_defined:
++ case bfd_link_hash_defweak:
++ return h->root.u.def.section;
++
++ case bfd_link_hash_common:
++ return h->root.u.c.p->section;
++
++ default:
++ break;
++ }
++ }
++ }
++ else
++ return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
++
++ return NULL;
++}
++
++/* Update the GOT entry reference counts for the section being removed. */
++static bfd_boolean
++avr32_elf_gc_sweep_hook(bfd *abfd,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED,
++ asection *sec,
++ const Elf_Internal_Rela *relocs)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ struct elf_avr32_link_hash_entry **sym_hashes;
++ struct got_entry **local_got_ents;
++ const Elf_Internal_Rela *rel, *relend;
++
++ if (!(sec->flags & SEC_ALLOC))
++ return TRUE;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
++ local_got_ents = elf_local_got_ents(abfd);
++
++ relend = relocs + sec->reloc_count;
++ for (rel = relocs; rel < relend; rel++)
++ {
++ unsigned long r_symndx;
++ unsigned int r_type;
++ struct elf_avr32_link_hash_entry *h = NULL;
++
++ r_symndx = ELF32_R_SYM(rel->r_info);
++ if (r_symndx >= symtab_hdr->sh_info)
++ {
++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.root.type == bfd_link_hash_indirect
++ || h->root.root.type == bfd_link_hash_warning)
++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
++ }
++
++ r_type = ELF32_R_TYPE(rel->r_info);
++
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ if (h)
++ h->root.got.glist->refcount--;
++ else
++ local_got_ents[r_symndx]->refcount--;
++ break;
++
++ case R_AVR32_32:
++ if (info->shared || h)
++ {
++ if (h)
++ h->possibly_dynamic_relocs--;
++ else
++ avr32_elf_hash_table(info)->local_dynamic_relocs--;
++ }
++
++ default:
++ break;
++ }
++ }
++
++ return TRUE;
++}
++
++/* Sizing and refcounting of dynamic sections */
++
++static void
++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
++static void
++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
++static void
++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
++static bfd_boolean
++assign_got_offsets(struct elf_avr32_link_hash_table *htab);
++static bfd_boolean
++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
++static bfd_boolean
++avr32_elf_size_dynamic_sections (bfd *output_bfd,
++ struct bfd_link_info *info);
++
++static void
++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
++{
++ /* TODO: Support got_refcount > htab->nr_got_holes by using a
++ different sort algorithm for those. */
++ BFD_ASSERT(got->refcount <= htab->nr_got_holes);
++
++ got->pprev = &htab->got_hole[got->refcount];
++ got->next = htab->got_hole[got->refcount];
++ if (got->next)
++ got->next->pprev = &got->next;
++
++ htab->got_hole[got->refcount] = got;
++}
++
++/* Decrement the refcount of a GOT entry and update its position in
++ the pigeonhole array. */
++static void
++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
++{
++ BFD_ASSERT(got->refcount <= htab->nr_got_holes);
++ BFD_ASSERT(got->refcount > 0);
++
++ if (got->next)
++ got->next->pprev = got->pprev;
++
++ *(got->pprev) = got->next;
++ got->refcount--;
++ insert_got_entry(htab, got);
++}
++
++static void
++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
++{
++ if (got->next)
++ got->next->pprev = got->pprev;
++
++ *(got->pprev) = got->next;
++ got->refcount++;
++ insert_got_entry(htab, got);
++
++ BFD_ASSERT(got->refcount > 0);
++ BFD_ASSERT(got->refcount <= htab->nr_got_holes);
++}
++
++/* Assign offsets to all GOT entries we intend to keep. The entries
++ that are referenced most often are placed at low offsets so that we
++ can use compact instructions as much as possible.
++
++ Returns TRUE if any offsets or the total size of the GOT changed. */
++
++static bfd_boolean
++assign_got_offsets(struct elf_avr32_link_hash_table *htab)
++{
++ struct got_entry *got;
++ bfd_size_type got_size = 0;
++ bfd_boolean changed = FALSE;
++ bfd_signed_vma offset;
++ int i;
++
++ /* The GOT header provides the address of the DYNAMIC segment, so
++ we need that even if the GOT is otherwise empty. */
++ if (htab->root.dynamic_sections_created)
++ got_size = AVR32_GOT_HEADER_SIZE;
++
++ for (i = htab->nr_got_holes; i > 0; i--)
++ {
++ got = htab->got_hole[i];
++ while (got)
++ {
++ if (got->refcount > 0)
++ {
++ offset = got_size;
++ if (got->offset != offset)
++ {
++ RDBG("GOT offset changed: %ld -> %ld\n",
++ got->offset, offset);
++ changed = TRUE;
++ }
++ got->offset = offset;
++ got_size += 4;
++ }
++ got = got->next;
++ }
++ }
++
++ if (htab->sgot->size != got_size)
++ {
++ RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
++ got_size);
++ changed = TRUE;
++ }
++ htab->sgot->size = got_size;
++
++ RDBG("assign_got_offsets: total size %lu (%s)\n",
++ got_size, changed ? "changed" : "no change");
++
++ return changed;
++}
++
++static bfd_boolean
++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
++{
++ struct bfd_link_info *info = _info;
++ struct elf_avr32_link_hash_table *htab;
++ struct elf_avr32_link_hash_entry *havr;
++ struct got_entry *got;
++
++ pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string);
++
++ if (h->root.type == bfd_link_hash_indirect)
++ return TRUE;
++
++ if (h->root.type == bfd_link_hash_warning)
++ /* When warning symbols are created, they **replace** the "real"
++ entry in the hash table, thus we never get to see the real
++ symbol in a hash traversal. So look at it now. */
++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
++
++ htab = avr32_elf_hash_table(info);
++ havr = (struct elf_avr32_link_hash_entry *)h;
++
++ got = h->got.glist;
++
++ /* If got is NULL, the symbol is never referenced through the GOT */
++ if (got && got->refcount > 0)
++ {
++ insert_got_entry(htab, got);
++
++ /* Shared libraries need relocs for all GOT entries unless the
++ symbol is forced local or -Bsymbolic is used. Others need
++ relocs for everything that is not guaranteed to be defined in
++ a regular object. */
++ if ((info->shared
++ && !info->symbolic
++ && h->dynindx != -1)
++ || (htab->root.dynamic_sections_created
++ && h->def_dynamic
++ && !h->def_regular))
++ htab->srelgot->size += sizeof(Elf32_External_Rela);
++ }
++
++ if (havr->possibly_dynamic_relocs
++ && (info->shared
++ || (elf_hash_table(info)->dynamic_sections_created
++ && h->def_dynamic
++ && !h->def_regular)))
++ {
++ pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
++ havr->possibly_dynamic_relocs, h->root.root.string);
++ htab->srelgot->size += (havr->possibly_dynamic_relocs
++ * sizeof(Elf32_External_Rela));
++ }
++
++ return TRUE;
++}
++
++/* (4) Calculate the sizes of the linker-generated sections and
++ allocate memory for them. */
++
++static bfd_boolean
++avr32_elf_size_dynamic_sections (bfd *output_bfd,
++ struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ bfd *dynobj;
++ asection *s;
++ bfd *ibfd;
++ bfd_boolean relocs;
++
++ pr_debug("(4) size dynamic sections\n");
++
++ htab = avr32_elf_hash_table(info);
++ dynobj = htab->root.dynobj;
++ BFD_ASSERT(dynobj != NULL);
++
++ if (htab->root.dynamic_sections_created)
++ {
++ /* Initialize the contents of the .interp section to the name of
++ the dynamic loader */
++ if (info->executable)
++ {
++ s = bfd_get_section_by_name(dynobj, ".interp");
++ BFD_ASSERT(s != NULL);
++ s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
++ s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
++ }
++ }
++
++ if (htab->nr_got_holes > 0)
++ {
++ /* Allocate holes for the pigeonhole sort algorithm */
++ pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
++ if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
++ {
++ /* TODO: Do something clever (different sorting algorithm) */
++ _bfd_error_handler(_("Highest refcount %d too high (max %d)\n"),
++ htab->nr_got_holes, MAX_NR_GOT_HOLES);
++ bfd_set_error(bfd_error_no_memory);
++ return FALSE;
++ }
++ htab->got_hole = bfd_zalloc(output_bfd,
++ sizeof(struct got_entry *)
++ * (htab->nr_got_holes + 1));
++ if (!htab->got_hole)
++ return FALSE;
++
++ /* Set up .got offsets for local syms. */
++ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
++ {
++ struct got_entry **local_got;
++ struct got_entry **end_local_got;
++ Elf_Internal_Shdr *symtab_hdr;
++ bfd_size_type locsymcount;
++
++ pr_debug(" (4a) processing file %s...\n", ibfd->filename);
++
++ BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
++
++ local_got = elf_local_got_ents(ibfd);
++ if (!local_got)
++ continue;
++
++ symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
++ locsymcount = symtab_hdr->sh_info;
++ end_local_got = local_got + locsymcount;
++
++ for (; local_got < end_local_got; ++local_got)
++ insert_got_entry(htab, *local_got);
++ }
++ }
++
++ /* Allocate global sym .got entries and space for global sym
++ dynamic relocs */
++ elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
++
++ /* Now that we have sorted the GOT entries, we are ready to
++ assign offsets and determine the initial size of the GOT. */
++ if (htab->sgot)
++ assign_got_offsets(htab);
++
++ /* Allocate space for local sym dynamic relocs */
++ BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
++ if (htab->local_dynamic_relocs)
++ htab->srelgot->size += (htab->local_dynamic_relocs
++ * sizeof(Elf32_External_Rela));
++
++ /* We now have determined the sizes of the various dynamic
++ sections. Allocate memory for them. */
++ relocs = FALSE;
++ for (s = dynobj->sections; s; s = s->next)
++ {
++ if ((s->flags & SEC_LINKER_CREATED) == 0)
++ continue;
++
++ if (s == htab->sgot
++ || s == htab->sstub)
++ {
++ /* Strip this section if we don't need it */
++ }
++ else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
++ {
++ if (s->size != 0)
++ relocs = TRUE;
++
++ s->reloc_count = 0;
++ }
++ else
++ {
++ /* It's not one of our sections */
++ continue;
++ }
++
++ if (s->size == 0)
++ {
++ /* Strip unneeded sections */
++ pr_debug("Stripping section %s from output...\n", s->name);
++ /* deleted function in 2.17
++ _bfd_strip_section_from_output(info, s);
++ */
++ continue;
++ }
++
++ s->contents = bfd_zalloc(dynobj, s->size);
++ if (s->contents == NULL)
++ return FALSE;
++ }
++
++ if (htab->root.dynamic_sections_created)
++ {
++ /* Add some entries to the .dynamic section. We fill in the
++ values later, in sh_elf_finish_dynamic_sections, but we
++ must add the entries now so that we get the correct size for
++ the .dynamic section. The DT_DEBUG entry is filled in by the
++ dynamic linker and used by the debugger. */
++#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
++
++ if (!add_dynamic_entry(DT_PLTGOT, 0))
++ return FALSE;
++ if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
++ return FALSE;
++
++ if (info->executable)
++ {
++ if (!add_dynamic_entry(DT_DEBUG, 0))
++ return FALSE;
++ }
++ if (relocs)
++ {
++ if (!add_dynamic_entry(DT_RELA, 0)
++ || !add_dynamic_entry(DT_RELASZ, 0)
++ || !add_dynamic_entry(DT_RELAENT,
++ sizeof(Elf32_External_Rela)))
++ return FALSE;
++ }
++ }
++#undef add_dynamic_entry
++
++ return TRUE;
++}
++
++
++/* Access to internal relocations, section contents and symbols.
++ (stolen from the xtensa port) */
++
++static Elf_Internal_Rela *
++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
++static void
++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
++static void
++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
++static bfd_byte *
++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
++/*
++static void
++pin_contents (asection *sec, bfd_byte *contents);
++*/
++static void
++release_contents (asection *sec, bfd_byte *contents);
++static Elf_Internal_Sym *
++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
++/*
++static void
++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
++*/
++static void
++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
++
++/* During relaxation, we need to modify relocations, section contents,
++ and symbol definitions, and we need to keep the original values from
++ being reloaded from the input files, i.e., we need to "pin" the
++ modified values in memory. We also want to continue to observe the
++ setting of the "keep-memory" flag. The following functions wrap the
++ standard BFD functions to take care of this for us. */
++
++static Elf_Internal_Rela *
++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
++{
++ /* _bfd_elf_link_read_relocs knows about caching, so no need for us
++ to be clever here. */
++ return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
++}
++
++static void
++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
++{
++ elf_section_data (sec)->relocs = internal_relocs;
++}
++
++static void
++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
++{
++ if (internal_relocs
++ && elf_section_data (sec)->relocs != internal_relocs)
++ free (internal_relocs);
++}
++
++static bfd_byte *
++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
++{
++ bfd_byte *contents;
++ bfd_size_type sec_size;
++
++ sec_size = bfd_get_section_limit (abfd, sec);
++ contents = elf_section_data (sec)->this_hdr.contents;
++
++ if (contents == NULL && sec_size != 0)
++ {
++ if (!bfd_malloc_and_get_section (abfd, sec, &contents))
++ {
++ if (contents)
++ free (contents);
++ return NULL;
++ }
++ if (keep_memory)
++ elf_section_data (sec)->this_hdr.contents = contents;
++ }
++ return contents;
++}
++
++/*
++static void
++pin_contents (asection *sec, bfd_byte *contents)
++{
++ elf_section_data (sec)->this_hdr.contents = contents;
++}
++*/
++static void
++release_contents (asection *sec, bfd_byte *contents)
++{
++ if (contents && elf_section_data (sec)->this_hdr.contents != contents)
++ free (contents);
++}
++
++static Elf_Internal_Sym *
++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Sym *isymbuf;
++ size_t locsymcount;
++
++ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
++ locsymcount = symtab_hdr->sh_info;
++
++ isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
++ if (isymbuf == NULL && locsymcount != 0)
++ {
++ isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
++ NULL, NULL, NULL);
++ if (isymbuf && keep_memory)
++ symtab_hdr->contents = (unsigned char *) isymbuf;
++ }
++
++ return isymbuf;
++}
++
++/*
++static void
++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
++{
++ elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
++}
++
++*/
++static void
++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
++{
++ if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
++ != (unsigned char *)isymbuf))
++ free (isymbuf);
++}
++
++ /* Data structures used during relaxation. */
++
++enum relax_state_id {
++ RS_ERROR = -1,
++ RS_NONE = 0,
++ RS_ALIGN,
++ RS_CPENT,
++ RS_PIC_CALL,
++ RS_PIC_MCALL,
++ RS_PIC_RCALL2,
++ RS_PIC_RCALL1,
++ RS_PIC_LDA,
++ RS_PIC_LDW4,
++ RS_PIC_LDW3,
++ RS_PIC_SUB5,
++ RS_NOPIC_MCALL,
++ RS_NOPIC_RCALL2,
++ RS_NOPIC_RCALL1,
++ RS_NOPIC_LDW4,
++ RS_NOPIC_LDDPC,
++ RS_NOPIC_SUB5,
++ RS_NOPIC_MOV2,
++ RS_NOPIC_MOV1,
++ RS_RCALL2,
++ RS_RCALL1,
++ RS_BRC2,
++ RS_BRC1,
++ RS_BRAL,
++ RS_RJMP,
++ RS_MAX,
++};
++
++enum reference_type {
++ REF_ABSOLUTE,
++ REF_PCREL,
++ REF_CPOOL,
++ REF_GOT,
++};
++
++struct relax_state
++{
++ const char *name;
++ enum relax_state_id id;
++ enum relax_state_id direct;
++ enum relax_state_id next;
++ enum relax_state_id prev;
++
++ enum reference_type reftype;
++
++ unsigned int r_type;
++
++ bfd_vma opcode;
++ bfd_vma opcode_mask;
++
++ bfd_signed_vma range_min;
++ bfd_signed_vma range_max;
++
++ bfd_size_type size;
++};
++
++/*
++ * This is for relocs that
++ * a) has an addend or is of type R_AVR32_DIFF32, and
++ * b) references a different section than it's in, and
++ * c) references a section that is relaxable
++ *
++ * as well as relocs that references the constant pool, in which case
++ * the add_frag member points to the frag containing the constant pool
++ * entry.
++ *
++ * Such relocs must be fixed up whenever we delete any code. Sections
++ * that don't have any relocs with all of the above properties don't
++ * have any additional reloc data, but sections that do will have
++ * additional data for all its relocs.
++ */
++struct avr32_reloc_data
++{
++ struct fragment *add_frag;
++ struct fragment *sub_frag;
++};
++
++/*
++ * A 'fragment' is a relaxable entity, that is, code may be added or
++ * deleted at the end of a fragment. When this happens, all subsequent
++ * fragments in the list will have their offsets updated.
++ */
++struct fragment
++{
++ enum relax_state_id state;
++ enum relax_state_id initial_state;
++
++ Elf_Internal_Rela *rela;
++ bfd_size_type size;
++ bfd_vma offset;
++ int size_adjust;
++ int offset_adjust;
++ bfd_boolean has_grown;
++
++ /* Only used by constant pool entries. When this drops to zero, the
++ frag is discarded (i.e. size_adjust is set to -4.) */
++ int refcount;
++};
++
++struct avr32_relax_data
++{
++ unsigned int frag_count;
++ struct fragment *frag;
++ struct avr32_reloc_data *reloc_data;
++
++ /* TRUE if this section has one or more relaxable relocations */
++ bfd_boolean is_relaxable;
++ unsigned int iteration;
++};
++
++struct avr32_section_data
++{
++ struct bfd_elf_section_data elf;
++ struct avr32_relax_data relax_data;
++};
++
++ /* Relax state definitions */
++
++#define PIC_MOV2_OPCODE 0xe0600000
++#define PIC_MOV2_MASK 0xe1e00000
++#define PIC_MOV2_RANGE_MIN (-1048576 * 4)
++#define PIC_MOV2_RANGE_MAX (1048575 * 4)
++#define PIC_MCALL_OPCODE 0xf0160000
++#define PIC_MCALL_MASK 0xffff0000
++#define PIC_MCALL_RANGE_MIN (-131072)
++#define PIC_MCALL_RANGE_MAX (131068)
++#define RCALL2_OPCODE 0xe0a00000
++#define RCALL2_MASK 0xe1ef0000
++#define RCALL2_RANGE_MIN (-2097152)
++#define RCALL2_RANGE_MAX (2097150)
++#define RCALL1_OPCODE 0xc00c0000
++#define RCALL1_MASK 0xf00c0000
++#define RCALL1_RANGE_MIN (-1024)
++#define RCALL1_RANGE_MAX (1022)
++#define PIC_LDW4_OPCODE 0xecf00000
++#define PIC_LDW4_MASK 0xfff00000
++#define PIC_LDW4_RANGE_MIN (-32768)
++#define PIC_LDW4_RANGE_MAX (32767)
++#define PIC_LDW3_OPCODE 0x6c000000
++#define PIC_LDW3_MASK 0xfe000000
++#define PIC_LDW3_RANGE_MIN (0)
++#define PIC_LDW3_RANGE_MAX (124)
++#define SUB5_PC_OPCODE 0xfec00000
++#define SUB5_PC_MASK 0xfff00000
++#define SUB5_PC_RANGE_MIN (-32768)
++#define SUB5_PC_RANGE_MAX (32767)
++#define NOPIC_MCALL_OPCODE 0xf01f0000
++#define NOPIC_MCALL_MASK 0xffff0000
++#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN
++#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX
++#define NOPIC_LDW4_OPCODE 0xfef00000
++#define NOPIC_LDW4_MASK 0xfff00000
++#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN
++#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX
++#define LDDPC_OPCODE 0x48000000
++#define LDDPC_MASK 0xf8000000
++#define LDDPC_RANGE_MIN 0
++#define LDDPC_RANGE_MAX 508
++
++#define NOPIC_MOV2_OPCODE 0xe0600000
++#define NOPIC_MOV2_MASK 0xe1e00000
++#define NOPIC_MOV2_RANGE_MIN (-1048576)
++#define NOPIC_MOV2_RANGE_MAX (1048575)
++#define NOPIC_MOV1_OPCODE 0x30000000
++#define NOPIC_MOV1_MASK 0xf0000000
++#define NOPIC_MOV1_RANGE_MIN (-128)
++#define NOPIC_MOV1_RANGE_MAX (127)
++
++/* Only brc2 variants with cond[3] == 0 is considered, since the
++ others are not relaxable. bral is a special case and is handled
++ separately. */
++#define BRC2_OPCODE 0xe0800000
++#define BRC2_MASK 0xe1e80000
++#define BRC2_RANGE_MIN (-2097152)
++#define BRC2_RANGE_MAX (2097150)
++#define BRC1_OPCODE 0xc0000000
++#define BRC1_MASK 0xf0080000
++#define BRC1_RANGE_MIN (-256)
++#define BRC1_RANGE_MAX (254)
++#define BRAL_OPCODE 0xe08f0000
++#define BRAL_MASK 0xe1ef0000
++#define BRAL_RANGE_MIN BRC2_RANGE_MIN
++#define BRAL_RANGE_MAX BRC2_RANGE_MAX
++#define RJMP_OPCODE 0xc0080000
++#define RJMP_MASK 0xf00c0000
++#define RJMP_RANGE_MIN (-1024)
++#define RJMP_RANGE_MAX (1022)
++
++/* Define a relax state using the GOT */
++#define RG(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++/* Define a relax state using the Constant Pool */
++#define RC(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++
++/* Define a relax state using pc-relative direct reference */
++#define RP(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++
++/* Define a relax state using non-pc-relative direct reference */
++#define RD(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++
++/* Define a relax state that will be handled specially */
++#define RS(id, r_type, size) \
++ { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \
++ R_AVR32_##r_type, 0, 0, 0, 0, size }
++
++const struct relax_state relax_state[RS_MAX] = {
++ RS(NONE, NONE, 0),
++ RS(ALIGN, ALIGN, 0),
++ RS(CPENT, 32_CPENT, 4),
++
++ RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
++ RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
++ RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
++ RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
++
++ RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
++ RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
++ RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
++ RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
++
++ RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
++ RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
++ RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
++
++ RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
++ RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
++ RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
++ RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
++ RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
++
++ RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
++ RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
++ RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
++ RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
++ RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
++ RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
++};
++
++static bfd_boolean
++avr32_elf_new_section_hook(bfd *abfd, asection *sec)
++{
++ struct avr32_section_data *sdata;
++
++ sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
++ if (!sdata)
++ return FALSE;
++
++ sec->used_by_bfd = sdata;
++ return _bfd_elf_new_section_hook(abfd, sec);
++}
++
++static struct avr32_relax_data *
++avr32_relax_data(asection *sec)
++{
++ struct avr32_section_data *sdata;
++
++ BFD_ASSERT(sec->used_by_bfd);
++
++ sdata = (struct avr32_section_data *)elf_section_data(sec);
++ return &sdata->relax_data;
++}
++
++ /* Link-time relaxation */
++
++static bfd_boolean
++avr32_elf_relax_section(bfd *abfd, asection *sec,
++ struct bfd_link_info *info, bfd_boolean *again);
++
++enum relax_pass_id {
++ RELAX_PASS_SIZE_FRAGS,
++ RELAX_PASS_MOVE_DATA,
++};
++
++/* Stolen from the xtensa port */
++static int
++internal_reloc_compare (const void *ap, const void *bp)
++{
++ const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
++ const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
++
++ if (a->r_offset != b->r_offset)
++ return (a->r_offset - b->r_offset);
++
++ /* We don't need to sort on these criteria for correctness,
++ but enforcing a more strict ordering prevents unstable qsort
++ from behaving differently with different implementations.
++ Without the code below we get correct but different results
++ on Solaris 2.7 and 2.8. We would like to always produce the
++ same results no matter the host. */
++
++ if (a->r_info != b->r_info)
++ return (a->r_info - b->r_info);
++
++ return (a->r_addend - b->r_addend);
++}
++
++static enum relax_state_id
++get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
++ const Elf_Internal_Rela *rela)
++{
++ bfd_byte *contents;
++ bfd_vma insn;
++ enum relax_state_id rs = RS_NONE;
++
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ return RS_ERROR;
++
++ insn = bfd_get_32(abfd, contents + rela->r_offset);
++ if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
++ rs = RS_RCALL2;
++ else if ((insn & BRAL_MASK) == BRAL_OPCODE)
++ /* Optimizing bral -> rjmp gets us into all kinds of
++ trouble with jump tables. Better not do it. */
++ rs = RS_NONE;
++ else if ((insn & BRC2_MASK) == BRC2_OPCODE)
++ rs = RS_BRC2;
++
++ release_contents(sec, contents);
++
++ return rs;
++}
++
++static enum relax_state_id
++get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
++ const Elf_Internal_Rela *rela)
++{
++ switch (ELF_R_TYPE(rela->r_info))
++ {
++ case R_AVR32_GOTCALL:
++ return RS_PIC_CALL;
++ case R_AVR32_GOT18SW:
++ return RS_PIC_MCALL;
++ case R_AVR32_LDA_GOT:
++ return RS_PIC_LDA;
++ case R_AVR32_GOT16S:
++ return RS_PIC_LDW4;
++ case R_AVR32_CPCALL:
++ return RS_NOPIC_MCALL;
++ case R_AVR32_16_CP:
++ return RS_NOPIC_LDW4;
++ case R_AVR32_9W_CP:
++ return RS_NOPIC_LDDPC;
++ case R_AVR32_ALIGN:
++ return RS_ALIGN;
++ case R_AVR32_32_CPENT:
++ return RS_CPENT;
++ case R_AVR32_22H_PCREL:
++ return get_pcrel22_relax_state(abfd, sec, info, rela);
++ case R_AVR32_9H_PCREL:
++ return RS_BRC1;
++ default:
++ return RS_NONE;
++ }
++}
++
++static bfd_boolean
++reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
++{
++ switch (ELF_R_TYPE(rela->r_info))
++ {
++ case R_AVR32_CPCALL:
++ case R_AVR32_16_CP:
++ case R_AVR32_9W_CP:
++ return TRUE;
++ default:
++ return FALSE;
++ }
++}
++
++static struct fragment *
++new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
++ struct avr32_relax_data *rd, enum relax_state_id state,
++ Elf_Internal_Rela *rela)
++{
++ struct fragment *frag;
++ bfd_size_type r_size;
++ bfd_vma r_offset;
++ unsigned int i = rd->frag_count;
++
++ BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
++
++ rd->frag_count++;
++ frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
++ if (!frag)
++ return NULL;
++ rd->frag = frag;
++
++ frag += i;
++ memset(frag, 0, sizeof(struct fragment));
++
++ if (state == RS_ALIGN)
++ r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
++ & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
++ else
++ r_size = relax_state[state].size;
++
++ if (rela)
++ r_offset = rela->r_offset;
++ else
++ r_offset = sec->size;
++
++ if (i == 0)
++ {
++ frag->offset = 0;
++ frag->size = r_offset + r_size;
++ }
++ else
++ {
++ frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
++ frag->size = r_offset + r_size - frag->offset;
++ }
++
++ if (state != RS_CPENT)
++ /* Make sure we don't discard this frag */
++ frag->refcount = 1;
++
++ frag->initial_state = frag->state = state;
++ frag->rela = rela;
++
++ return frag;
++}
++
++static struct fragment *
++find_frag(asection *sec, bfd_vma offset)
++{
++ struct fragment *first, *last;
++ struct avr32_relax_data *rd = avr32_relax_data(sec);
++
++ if (rd->frag_count == 0)
++ return NULL;
++
++ first = &rd->frag[0];
++ last = &rd->frag[rd->frag_count - 1];
++
++ /* This may be a reloc referencing the end of a section. The last
++ frag will never have a reloc associated with it, so its size will
++ never change, thus the offset adjustment of the last frag will
++ always be the same as the offset adjustment of the end of the
++ section. */
++ if (offset == sec->size)
++ {
++ BFD_ASSERT(last->offset + last->size == sec->size);
++ BFD_ASSERT(!last->rela);
++ return last;
++ }
++
++ while (first <= last)
++ {
++ struct fragment *mid;
++
++ mid = (last - first) / 2 + first;
++ if ((mid->offset + mid->size) <= offset)
++ first = mid + 1;
++ else if (mid->offset > offset)
++ last = mid - 1;
++ else
++ return mid;
++ }
++
++ return NULL;
++}
++
++/* Look through all relocs in a section and determine if any relocs
++ may be affected by relaxation in other sections. If so, allocate
++ an array of additional relocation data which links the affected
++ relocations to the frag(s) where the relaxation may occur.
++
++ This function also links cpool references to cpool entries and
++ increments the refcount of the latter when this happens. */
++
++static bfd_boolean
++allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
++ struct bfd_link_info *info)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Sym *isymbuf = NULL;
++ struct avr32_relax_data *rd;
++ unsigned int i;
++ bfd_boolean ret = FALSE;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ rd = avr32_relax_data(sec);
++
++ RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
++
++ for (i = 0; i < sec->reloc_count; i++)
++ {
++ Elf_Internal_Rela *rel = &relocs[i];
++ asection *sym_sec;
++ unsigned long r_symndx;
++ bfd_vma sym_value;
++
++ if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
++ && !reloc_is_cpool_ref(rel))
++ continue;
++
++ r_symndx = ELF_R_SYM(rel->r_info);
++
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ Elf_Internal_Sym *isym;
++
++ if (!isymbuf)
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ return FALSE;
++
++ isym = &isymbuf[r_symndx];
++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
++ sym_value = isym->st_value;
++ }
++ else
++ {
++ struct elf_link_hash_entry *h;
++
++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
++
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ if (h->root.type != bfd_link_hash_defined
++ && h->root.type != bfd_link_hash_defweak)
++ continue;
++
++ sym_sec = h->root.u.def.section;
++ sym_value = h->root.u.def.value;
++ }
++
++ if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
++ {
++ bfd_size_type size;
++ struct fragment *frag;
++
++ if (!rd->reloc_data)
++ {
++ size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
++ rd->reloc_data = bfd_zalloc(abfd, size);
++ if (!rd->reloc_data)
++ goto out;
++ }
++
++ RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
++ i, rel->r_offset, sym_value, rel->r_addend);
++
++ frag = find_frag(sym_sec, sym_value + rel->r_addend);
++ BFD_ASSERT(frag);
++ rd->reloc_data[i].add_frag = frag;
++
++ RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
++ frag->rela ? frag->rela->r_offset : sym_sec->size);
++
++ if (reloc_is_cpool_ref(rel))
++ {
++ BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
++ frag->refcount++;
++ }
++
++ if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
++ {
++ bfd_byte *contents;
++ bfd_signed_vma diff;
++
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ goto out;
++
++ diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
++ frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
++ BFD_ASSERT(frag);
++ rd->reloc_data[i].sub_frag = frag;
++
++ release_contents(sec, contents);
++ }
++ }
++ }
++
++ ret = TRUE;
++
++ out:
++ release_local_syms(abfd, isymbuf);
++ return ret;
++}
++
++static bfd_boolean
++global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED)
++{
++ struct fragment *frag;
++ asection *sec;
++
++ if (havr->root.root.type != bfd_link_hash_defined
++ && havr->root.root.type != bfd_link_hash_defweak)
++ return TRUE;
++
++ sec = havr->root.root.u.def.section;
++ if (bfd_is_const_section(sec)
++ || !avr32_relax_data(sec)->is_relaxable)
++ return TRUE;
++
++ frag = find_frag(sec, havr->root.root.u.def.value);
++ if (!frag)
++ {
++ unsigned int i;
++ struct avr32_relax_data *rd = avr32_relax_data(sec);
++
++ RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
++ sec->owner->filename, havr->root.root.root.string,
++ sec->name, havr->root.root.u.def.value, sec->size);
++ for (i = 0; i < rd->frag_count; i++)
++ RDBG(" %8lu - %8lu\n", rd->frag[i].offset,
++ rd->frag[i].offset + rd->frag[i].size);
++ }
++ BFD_ASSERT(frag);
++
++ havr->sym_frag = frag;
++ return TRUE;
++}
++
++static bfd_boolean
++analyze_relocations(struct bfd_link_info *info)
++{
++ bfd *abfd;
++ asection *sec;
++
++ /* Divide all relaxable sections into fragments */
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ {
++ if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
++ {
++ if (!(*info->callbacks->warning)
++ (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
++ return FALSE;
++ continue;
++ }
++
++ for (sec = abfd->sections; sec; sec = sec->next)
++ {
++ struct avr32_relax_data *rd;
++ struct fragment *frag;
++ Elf_Internal_Rela *relocs;
++ unsigned int i;
++ bfd_boolean ret = TRUE;
++
++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
++ continue;
++
++ rd = avr32_relax_data(sec);
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ return FALSE;
++
++ qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
++ internal_reloc_compare);
++
++ for (i = 0; i < sec->reloc_count; i++)
++ {
++ enum relax_state_id state;
++
++ ret = FALSE;
++ state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
++ if (state == RS_ERROR)
++ break;
++
++ if (state)
++ {
++ frag = new_frag(abfd, sec, rd, state, &relocs[i]);
++ if (!frag)
++ break;
++
++ pin_internal_relocs(sec, relocs);
++ rd->is_relaxable = TRUE;
++ }
++
++ ret = TRUE;
++ }
++
++ release_internal_relocs(sec, relocs);
++ if (!ret)
++ return ret;
++
++ if (rd->is_relaxable)
++ {
++ frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
++ if (!frag)
++ return FALSE;
++ }
++ }
++ }
++
++ /* Link each global symbol to the fragment where it's defined. */
++ elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
++
++ /* Do the same for local symbols. */
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ {
++ Elf_Internal_Sym *isymbuf, *isym;
++ struct fragment **local_sym_frag;
++ unsigned int i, sym_count;
++
++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
++ if (sym_count == 0)
++ continue;
++
++ local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
++ if (!local_sym_frag)
++ return FALSE;
++ elf_tdata(abfd)->local_sym_frag = local_sym_frag;
++
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ return FALSE;
++
++ for (i = 0; i < sym_count; i++)
++ {
++ struct avr32_relax_data *rd;
++ struct fragment *frag;
++ asection *sec;
++
++ isym = &isymbuf[i];
++
++ sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
++ if (!sec)
++ continue;
++
++ rd = avr32_relax_data(sec);
++ if (!rd->is_relaxable)
++ continue;
++
++ frag = find_frag(sec, isym->st_value);
++ BFD_ASSERT(frag);
++
++ local_sym_frag[i] = frag;
++ }
++
++ release_local_syms(abfd, isymbuf);
++ }
++
++ /* And again for relocs with addends and constant pool references */
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ for (sec = abfd->sections; sec; sec = sec->next)
++ {
++ Elf_Internal_Rela *relocs;
++ bfd_boolean ret;
++
++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
++ continue;
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ return FALSE;
++
++ ret = allocate_reloc_data(abfd, sec, relocs, info);
++
++ release_internal_relocs(sec, relocs);
++ if (ret == FALSE)
++ return ret;
++ }
++
++ return TRUE;
++}
++
++static bfd_boolean
++rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
++ bfd_vma symval, bfd_vma addr, struct got_entry *got,
++ struct avr32_reloc_data *ind_data,
++ bfd_signed_vma offset_adjust)
++{
++ bfd_signed_vma target = 0;
++
++ switch (rs->reftype)
++ {
++ case REF_ABSOLUTE:
++ target = symval;
++ break;
++ case REF_PCREL:
++ target = symval - addr;
++ break;
++ case REF_CPOOL:
++ /* cpool frags are always in the same section and always after
++ all frags referring to it. So it's always correct to add in
++ offset_adjust here. */
++ target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
++ + offset_adjust - frag->offset - frag->offset_adjust);
++ break;
++ case REF_GOT:
++ target = got->offset;
++ break;
++ default:
++ abort();
++ }
++
++ if (target >= rs->range_min && target <= rs->range_max)
++ return TRUE;
++ else
++ return FALSE;
++}
++
++static bfd_boolean
++avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct avr32_relax_data *rd;
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Rela *relocs = NULL;
++ Elf_Internal_Sym *isymbuf = NULL;
++ struct got_entry **local_got_ents;
++ struct fragment **local_sym_frag;
++ bfd_boolean ret = FALSE;
++ bfd_signed_vma delta = 0;
++ unsigned int i;
++
++ htab = avr32_elf_hash_table(info);
++ rd = avr32_relax_data(sec);
++
++ if (sec == htab->sgot)
++ {
++ RDBG("Relaxing GOT section (vma: 0x%lx)\n",
++ sec->output_section->vma + sec->output_offset);
++ if (assign_got_offsets(htab))
++ htab->repeat_pass = TRUE;
++ return TRUE;
++ }
++
++ if (!rd->is_relaxable)
++ return TRUE;
++
++ if (!sec->rawsize)
++ sec->rawsize = sec->size;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ goto out;
++
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ goto out;
++
++ local_got_ents = elf_local_got_ents(abfd);
++ local_sym_frag = elf_tdata(abfd)->local_sym_frag;
++
++ RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n",
++ abfd->filename, sec->name,
++ sec->output_section->vma + sec->output_offset, sec->size);
++
++ for (i = 0; i < rd->frag_count; i++)
++ {
++ struct fragment *frag = &rd->frag[i];
++ struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
++ const struct relax_state *state, *next_state;
++ struct fragment *target_frag = NULL;
++ asection *sym_sec = NULL;
++ Elf_Internal_Rela *rela;
++ struct got_entry *got;
++ bfd_vma symval, r_offset, addend, addr;
++ bfd_signed_vma size_adjust = 0, distance;
++ unsigned long r_symndx;
++ bfd_boolean defined = TRUE, dynamic = FALSE;
++ unsigned char sym_type;
++
++ frag->offset_adjust += delta;
++ state = next_state = &relax_state[frag->state];
++ rela = frag->rela;
++
++ BFD_ASSERT(state->id == frag->state);
++
++ RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
++ (frag->offset_adjust < 0)?'-':'+',
++ abs(frag->offset_adjust), state->name, state->size);
++
++ if (!rela)
++ {
++ RDBG(": no reloc, ignoring\n");
++ continue;
++ }
++
++ BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
++ BFD_ASSERT(state != RS_NONE);
++
++ r_offset = rela->r_offset + frag->offset_adjust;
++ addr = sec->output_section->vma + sec->output_offset + r_offset;
++
++ switch (frag->state)
++ {
++ case RS_ALIGN:
++ size_adjust = ((addr + (1 << rela->r_addend) - 1)
++ & ~((1 << rela->r_addend) - 1));
++ size_adjust -= (sec->output_section->vma + sec->output_offset
++ + frag->offset + frag->offset_adjust
++ + frag->size + frag->size_adjust);
++
++ RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
++ frag->size + frag->size_adjust + size_adjust);
++ break;
++
++ case RS_CPENT:
++ if (frag->refcount == 0 && frag->size_adjust == 0)
++ {
++ RDBG(": discarding frag\n");
++ size_adjust = -4;
++ }
++ else if (frag->refcount > 0 && frag->size_adjust < 0)
++ {
++ RDBG(": un-discarding frag\n");
++ size_adjust = 4;
++ }
++ break;
++
++ default:
++ if (rd->reloc_data)
++ r_data = &rd->reloc_data[frag->rela - relocs];
++
++ /* If this is a cpool reference, we want the symbol that the
++ cpool entry refers to, not the symbol for the cpool entry
++ itself, as we already know what frag it's in. */
++ if (relax_state[frag->initial_state].reftype == REF_CPOOL)
++ {
++ Elf_Internal_Rela *irela = r_data->add_frag->rela;
++
++ r_symndx = ELF_R_SYM(irela->r_info);
++ addend = irela->r_addend;
++
++ /* The constant pool must be in the same section as the
++ reloc referring to it. */
++ BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
++
++ ind_data = r_data;
++ r_data = &rd->reloc_data[irela - relocs];
++ }
++ else
++ {
++ r_symndx = ELF_R_SYM(rela->r_info);
++ addend = rela->r_addend;
++ }
++
++ /* Get the value of the symbol referred to by the reloc. */
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ Elf_Internal_Sym *isym;
++
++ isym = isymbuf + r_symndx;
++ symval = 0;
++
++ RDBG(" local sym %lu: ", r_symndx);
++
++ if (isym->st_shndx == SHN_UNDEF)
++ defined = FALSE;
++ else if (isym->st_shndx == SHN_ABS)
++ sym_sec = bfd_abs_section_ptr;
++ else if (isym->st_shndx == SHN_COMMON)
++ sym_sec = bfd_com_section_ptr;
++ else
++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
++
++ symval = isym->st_value;
++ sym_type = ELF_ST_TYPE(isym->st_info);
++ target_frag = local_sym_frag[r_symndx];
++
++ if (local_got_ents)
++ got = local_got_ents[r_symndx];
++ else
++ got = NULL;
++ }
++ else
++ {
++ /* Global symbol */
++ unsigned long index;
++ struct elf_link_hash_entry *h;
++ struct elf_avr32_link_hash_entry *havr;
++
++ index = r_symndx - symtab_hdr->sh_info;
++ h = elf_sym_hashes(abfd)[index];
++ BFD_ASSERT(h != NULL);
++
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ havr = (struct elf_avr32_link_hash_entry *)h;
++ got = h->got.glist;
++
++ symval = 0;
++
++ RDBG(" %s: ", h->root.root.string);
++
++ if (h->root.type != bfd_link_hash_defined
++ && h->root.type != bfd_link_hash_defweak)
++ {
++ RDBG("(undef)");
++ defined = FALSE;
++ }
++ else if ((info->shared && !info->symbolic && h->dynindx != -1)
++ || (htab->root.dynamic_sections_created
++ && h->def_dynamic && !h->def_regular))
++ {
++ RDBG("(dynamic)");
++ dynamic = TRUE;
++ sym_sec = h->root.u.def.section;
++ }
++ else
++ {
++ sym_sec = h->root.u.def.section;
++ symval = h->root.u.def.value;
++ target_frag = havr->sym_frag;
++ }
++
++ sym_type = h->type;
++ }
++
++ /* Thanks to elf32-ppc for this one. */
++ if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
++ {
++ /* At this stage in linking, no SEC_MERGE symbol has been
++ adjusted, so all references to such symbols need to be
++ passed through _bfd_merged_section_offset. (Later, in
++ relocate_section, all SEC_MERGE symbols *except* for
++ section symbols have been adjusted.)
++
++ SEC_MERGE sections are not relaxed by us, as they
++ shouldn't contain any code. */
++
++ BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
++
++ /* gas may reduce relocations against symbols in SEC_MERGE
++ sections to a relocation against the section symbol when
++ the original addend was zero. When the reloc is against
++ a section symbol we should include the addend in the
++ offset passed to _bfd_merged_section_offset, since the
++ location of interest is the original symbol. On the
++ other hand, an access to "sym+addend" where "sym" is not
++ a section symbol should not include the addend; Such an
++ access is presumed to be an offset from "sym"; The
++ location of interest is just "sym". */
++ RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
++ (sym_type == STT_SECTION)?"section":"not section",
++ sym_sec->output_section->vma + sym_sec->output_offset,
++ symval, addend);
++
++ if (sym_type == STT_SECTION)
++ symval += addend;
++
++ symval = (_bfd_merged_section_offset
++ (abfd, &sym_sec,
++ elf_section_data(sym_sec)->sec_info, symval));
++
++ if (sym_type != STT_SECTION)
++ symval += addend;
++ }
++ else
++ symval += addend;
++
++ if (defined && !dynamic)
++ {
++ RDBG("0x%lx+0x%lx",
++ sym_sec->output_section->vma + sym_sec->output_offset,
++ symval);
++ symval += sym_sec->output_section->vma + sym_sec->output_offset;
++ }
++
++ if (r_data && r_data->add_frag)
++ /* If the add_frag pointer is set, it means that this reloc
++ has an addend that may be affected by relaxation. */
++ target_frag = r_data->add_frag;
++
++ if (target_frag)
++ {
++ symval += target_frag->offset_adjust;
++
++ /* If target_frag comes after this frag in the same
++ section, we should assume that it will be moved by
++ the same amount we are. */
++ if ((target_frag - rd->frag) < (int)rd->frag_count
++ && target_frag > frag)
++ symval += delta;
++ }
++
++ distance = symval - addr;
++
++ /* First, try to make a direct reference. If the symbol is
++ dynamic or undefined, we must take care not to change its
++ reference type, that is, we can't make it direct.
++
++ Also, it seems like some sections may actually be resized
++ after the relaxation code is done, so we can't really
++ trust that our "distance" is correct. There's really no
++ easy solution to this problem, so we'll just disallow
++ direct references to SEC_DATA sections.
++
++ Oh, and .bss isn't actually SEC_DATA, so we disallow
++ !SEC_HAS_CONTENTS as well. */
++ if (!dynamic && defined
++ && (htab->direct_data_refs
++ || (!(sym_sec->flags & SEC_DATA)
++ && (sym_sec->flags & SEC_HAS_CONTENTS)))
++ && next_state->direct)
++ {
++ next_state = &relax_state[next_state->direct];
++ RDBG(" D-> %s", next_state->name);
++ }
++
++ /* Iterate backwards until we find a state that fits. */
++ while (next_state->prev
++ && !rs_is_good_enough(next_state, frag, symval, addr,
++ got, ind_data, delta))
++ {
++ next_state = &relax_state[next_state->prev];
++ RDBG(" P-> %s", next_state->name);
++ }
++
++ /* Then try to find the best possible state. */
++ while (next_state->next)
++ {
++ const struct relax_state *candidate;
++
++ candidate = &relax_state[next_state->next];
++ if (!rs_is_good_enough(candidate, frag, symval, addr, got,
++ ind_data, delta))
++ break;
++
++ next_state = candidate;
++ RDBG(" N-> %s", next_state->name);
++ }
++
++ RDBG(" [size %ld]\n", next_state->size);
++
++ BFD_ASSERT(next_state->id);
++ BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
++
++ size_adjust = next_state->size - state->size;
++
++ /* There's a theoretical possibility that shrinking one frag
++ may cause another to grow, which may cause the first one to
++ grow as well, and we're back where we started. Avoid this
++ scenario by disallowing a frag that has grown to ever
++ shrink again. */
++ if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
++ {
++ if (frag->has_grown)
++ next_state = state;
++ else
++ unref_got_entry(htab, got);
++ }
++ else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
++ {
++ ref_got_entry(htab, got);
++ frag->has_grown = TRUE;
++ }
++ else if (state->reftype == REF_CPOOL
++ && next_state->reftype != REF_CPOOL)
++ {
++ if (frag->has_grown)
++ next_state = state;
++ else
++ ind_data->add_frag->refcount--;
++ }
++ else if (state->reftype != REF_CPOOL
++ && next_state->reftype == REF_CPOOL)
++ {
++ ind_data->add_frag->refcount++;
++ frag->has_grown = TRUE;
++ }
++ else
++ {
++ if (frag->has_grown && size_adjust < 0)
++ next_state = state;
++ else if (size_adjust > 0)
++ frag->has_grown = TRUE;
++ }
++
++ size_adjust = next_state->size - state->size;
++ frag->state = next_state->id;
++
++ break;
++ }
++
++ if (size_adjust)
++ htab->repeat_pass = TRUE;
++
++ frag->size_adjust += size_adjust;
++ sec->size += size_adjust;
++ delta += size_adjust;
++
++ BFD_ASSERT((frag->offset + frag->offset_adjust
++ + frag->size + frag->size_adjust)
++ == (frag[1].offset + frag[1].offset_adjust + delta));
++ }
++
++ ret = TRUE;
++
++ out:
++ release_local_syms(abfd, isymbuf);
++ release_internal_relocs(sec, relocs);
++ return ret;
++}
++
++static bfd_boolean
++adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED)
++{
++ struct elf_link_hash_entry *h = &havr->root;
++
++ if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
++ || h->root.type == bfd_link_hash_defweak))
++ {
++ RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
++ h->root.root.string, h->root.u.def.value,
++ h->root.u.def.value + havr->sym_frag->offset_adjust);
++ h->root.u.def.value += havr->sym_frag->offset_adjust;
++ }
++ return TRUE;
++}
++
++static bfd_boolean
++adjust_syms(struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ bfd *abfd;
++
++ htab = avr32_elf_hash_table(info);
++ elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
++
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ {
++ Elf_Internal_Sym *isymbuf;
++ struct fragment **local_sym_frag, *frag;
++ unsigned int i, sym_count;
++
++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
++ if (sym_count == 0)
++ continue;
++
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ return FALSE;
++
++ local_sym_frag = elf_tdata(abfd)->local_sym_frag;
++
++ for (i = 0; i < sym_count; i++)
++ {
++ frag = local_sym_frag[i];
++ if (frag)
++ {
++ RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
++ abfd->filename, i, isymbuf[i].st_value,
++ isymbuf[i].st_value + frag->offset_adjust);
++ isymbuf[i].st_value += frag->offset_adjust;
++ }
++ }
++
++ release_local_syms(abfd, isymbuf);
++ }
++
++ htab->symbols_adjusted = TRUE;
++ return TRUE;
++}
++
++static bfd_boolean
++adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
++{
++ struct avr32_relax_data *rd;
++ Elf_Internal_Rela *relocs;
++ Elf_Internal_Shdr *symtab_hdr;
++ unsigned int i;
++ bfd_boolean ret = FALSE;
++
++ rd = avr32_relax_data(sec);
++ if (!rd->reloc_data)
++ return TRUE;
++
++ RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
++ sec->reloc_count);
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ return FALSE;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++
++ for (i = 0; i < sec->reloc_count; i++)
++ {
++ Elf_Internal_Rela *rela = &relocs[i];
++ struct avr32_reloc_data *r_data = &rd->reloc_data[i];
++ struct fragment *sym_frag;
++ unsigned long r_symndx;
++
++ if (r_data->add_frag)
++ {
++ r_symndx = ELF_R_SYM(rela->r_info);
++
++ if (r_symndx < symtab_hdr->sh_info)
++ sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
++ else
++ {
++ struct elf_link_hash_entry *h;
++
++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
++
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ BFD_ASSERT(h->root.type == bfd_link_hash_defined
++ || h->root.type == bfd_link_hash_defweak);
++
++ sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
++ }
++
++ RDBG(" addend: 0x%08lx -> 0x%08lx\n",
++ rela->r_addend,
++ rela->r_addend + r_data->add_frag->offset_adjust
++ - (sym_frag ? sym_frag->offset_adjust : 0));
++
++ /* If this is against a section symbol, we won't find any
++ sym_frag, so we'll just adjust the addend. */
++ rela->r_addend += r_data->add_frag->offset_adjust;
++ if (sym_frag)
++ rela->r_addend -= sym_frag->offset_adjust;
++
++ if (r_data->sub_frag)
++ {
++ bfd_byte *contents;
++ bfd_signed_vma diff;
++
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ goto out;
++
++ /* I realize now that sub_frag is misnamed. It's
++ actually add_frag which is subtracted in this
++ case... */
++ diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
++ diff += (r_data->sub_frag->offset_adjust
++ - r_data->add_frag->offset_adjust);
++ bfd_put_32(abfd, diff, contents + rela->r_offset);
++
++ RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
++
++ release_contents(sec, contents);
++ }
++ }
++ else
++ BFD_ASSERT(!r_data->sub_frag);
++ }
++
++ ret = TRUE;
++
++ out:
++ release_internal_relocs(sec, relocs);
++ return ret;
++}
++
++static bfd_boolean
++avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct avr32_relax_data *rd;
++ struct fragment *frag, *fragend;
++ Elf_Internal_Rela *relocs = NULL;
++ bfd_byte *contents = NULL;
++ unsigned int i;
++ bfd_boolean ret = FALSE;
++
++ htab = avr32_elf_hash_table(info);
++ rd = avr32_relax_data(sec);
++
++ if (!htab->symbols_adjusted)
++ if (!adjust_syms(info))
++ return FALSE;
++
++ if (rd->is_relaxable)
++ {
++ /* Resize the section first, so that we can be sure that enough
++ memory is allocated in case the section has grown. */
++ if (sec->size > sec->rawsize
++ && elf_section_data(sec)->this_hdr.contents)
++ {
++ /* We must not use cached data if the section has grown. */
++ free(elf_section_data(sec)->this_hdr.contents);
++ elf_section_data(sec)->this_hdr.contents = NULL;
++ }
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ goto out;
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ goto out;
++
++ fragend = rd->frag + rd->frag_count;
++
++ RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
++ abfd->filename, sec->name, relocs, contents);
++
++ /* First, move the data into place. We must take care to move
++ frags in the right order so that we don't accidentally
++ overwrite parts of the next frag. */
++ for (frag = rd->frag; frag < fragend; frag++)
++ {
++ RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
++ frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
++ abs(frag->offset_adjust),
++ frag->size, frag->size_adjust >= 0 ? '+' : '-',
++ abs(frag->size_adjust));
++ if (frag->offset_adjust > 0)
++ {
++ struct fragment *prev = frag - 1;
++ struct fragment *last;
++
++ for (last = frag; last < fragend && last->offset_adjust > 0;
++ last++) ;
++
++ if (last == fragend)
++ last--;
++
++ for (frag = last; frag != prev; frag--)
++ {
++ if (frag->offset_adjust
++ && frag->size + frag->size_adjust > 0)
++ {
++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
++ frag->offset, frag->offset + frag->offset_adjust,
++ frag->size + frag->size_adjust);
++ memmove(contents + frag->offset + frag->offset_adjust,
++ contents + frag->offset,
++ frag->size + frag->size_adjust);
++ }
++ }
++ frag = last;
++ }
++ else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
++ {
++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
++ frag->offset, frag->offset + frag->offset_adjust,
++ frag->size + frag->size_adjust);
++ memmove(contents + frag->offset + frag->offset_adjust,
++ contents + frag->offset,
++ frag->size + frag->size_adjust);
++ }
++ }
++
++ i = 0;
++
++ for (frag = rd->frag; frag < fragend; frag++)
++ {
++ const struct relax_state *state, *istate;
++ struct avr32_reloc_data *r_data = NULL;
++
++ istate = &relax_state[frag->initial_state];
++ state = &relax_state[frag->state];
++
++ if (rd->reloc_data)
++ r_data = &rd->reloc_data[frag->rela - relocs];
++
++ BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
++ BFD_ASSERT(state->reftype != REF_CPOOL
++ || r_data->add_frag->refcount > 0);
++
++ if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
++ {
++ struct fragment *ifrag;
++
++ /* An indirect reference through the cpool has been
++ converted to a direct reference. We must update the
++ reloc to point to the symbol itself instead of the
++ constant pool entry. The reloc type will be updated
++ later. */
++ ifrag = r_data->add_frag;
++ frag->rela->r_info = ifrag->rela->r_info;
++ frag->rela->r_addend = ifrag->rela->r_addend;
++
++ /* Copy the reloc data so the addend will be adjusted
++ correctly later. */
++ *r_data = rd->reloc_data[ifrag->rela - relocs];
++ }
++
++ /* Move all relocs covered by this frag. */
++ if (frag->rela)
++ BFD_ASSERT(&relocs[i] <= frag->rela);
++ else
++ BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
++
++ if (frag == rd->frag)
++ BFD_ASSERT(i == 0);
++ else
++ BFD_ASSERT(&relocs[i] > frag[-1].rela);
++
++ /* If non-null, frag->rela is the last relocation in the
++ fragment. frag->rela can only be null in the last
++ fragment, so in that case, we'll just do the rest. */
++ for (; (i < sec->reloc_count
++ && (!frag->rela || &relocs[i] <= frag->rela)); i++)
++ {
++ RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
++ relocs[i].r_offset + frag->offset_adjust);
++ relocs[i].r_offset += frag->offset_adjust;
++ }
++
++ if (frag->refcount == 0)
++ {
++ /* If this frag is to be discarded, make sure we won't
++ relocate it later on. */
++ BFD_ASSERT(frag->state == RS_CPENT);
++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
++ R_AVR32_NONE);
++ }
++ else if (frag->state == RS_ALIGN)
++ {
++ bfd_vma addr, addr_end;
++
++ addr = frag->rela->r_offset;
++ addr_end = (frag->offset + frag->offset_adjust
++ + frag->size + frag->size_adjust);
++
++ /* If the section is executable, insert NOPs.
++ Otherwise, insert zeroes. */
++ if (sec->flags & SEC_CODE)
++ {
++ if (addr & 1)
++ {
++ bfd_put_8(abfd, 0, contents + addr);
++ addr++;
++ }
++
++ BFD_ASSERT(!((addr_end - addr) & 1));
++
++ while (addr < addr_end)
++ {
++ bfd_put_16(abfd, NOP_OPCODE, contents + addr);
++ addr += 2;
++ }
++ }
++ else
++ memset(contents + addr, 0, addr_end - addr);
++ }
++ else if (state->opcode_mask)
++ {
++ bfd_vma insn;
++
++ /* Update the opcode and the relocation type unless it's a
++ "special" relax state (i.e. RS_NONE, RS_ALIGN or
++ RS_CPENT.), in which case the opcode mask is zero. */
++ insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
++ insn &= ~state->opcode_mask;
++ insn |= state->opcode;
++ RDBG(" 0x%lx: inserting insn %08lx\n",
++ frag->rela->r_offset, insn);
++ bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
++
++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
++ state->r_type);
++ }
++
++ if ((frag + 1) == fragend)
++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
++ + frag->size_adjust) == sec->size);
++ else
++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
++ + frag->size_adjust)
++ == (frag[1].offset + frag[1].offset_adjust));
++ }
++ }
++
++ /* Adjust reloc addends and DIFF32 differences */
++ if (!adjust_relocs(abfd, sec, info))
++ return FALSE;
++
++ ret = TRUE;
++
++ out:
++ release_contents(sec, contents);
++ release_internal_relocs(sec, relocs);
++ return ret;
++}
++
++static bfd_boolean
++avr32_elf_relax_section(bfd *abfd, asection *sec,
++ struct bfd_link_info *info, bfd_boolean *again)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct avr32_relax_data *rd;
++
++ *again = FALSE;
++ if (info->relocatable)
++ return TRUE;
++
++ htab = avr32_elf_hash_table(info);
++ if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
++ && sec != htab->sgot)
++ return TRUE;
++
++ if (!htab->relocations_analyzed)
++ {
++ if (!analyze_relocations(info))
++ return FALSE;
++ htab->relocations_analyzed = TRUE;
++ }
++
++ rd = avr32_relax_data(sec);
++
++ if (rd->iteration != htab->relax_iteration)
++ {
++ if (!htab->repeat_pass)
++ htab->relax_pass++;
++ htab->relax_iteration++;
++ htab->repeat_pass = FALSE;
++ }
++
++ rd->iteration++;
++
++ switch (htab->relax_pass)
++ {
++ case RELAX_PASS_SIZE_FRAGS:
++ if (!avr32_size_frags(abfd, sec, info))
++ return FALSE;
++ *again = TRUE;
++ break;
++ case RELAX_PASS_MOVE_DATA:
++ if (!avr32_move_data(abfd, sec, info))
++ return FALSE;
++ break;
++ }
++
++ return TRUE;
++}
++
++
++/* Relocation */
++
++static bfd_reloc_status_type
++avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
++ bfd_signed_vma relocation, reloc_howto_type *howto);
++static bfd_reloc_status_type
++avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
++ asection *input_section, bfd_byte *contents,
++ Elf_Internal_Rela *rel, bfd_vma value);
++static bfd_boolean
++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
++ bfd *input_bfd, asection *input_section,
++ bfd_byte *contents, Elf_Internal_Rela *relocs,
++ Elf_Internal_Sym *local_syms,
++ asection **local_sections);
++
++
++#define symbol_address(symbol) \
++ symbol->value + symbol->section->output_section->vma \
++ + symbol->section->output_offset
++
++#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \
++ do \
++ { \
++ unsigned long x; \
++ x = bfd_get_##size (abfd, data + reloc_entry->address); \
++ x &= ~reloc_entry->howto->dst_mask; \
++ x |= field & reloc_entry->howto->dst_mask; \
++ bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \
++ } \
++ while(0)
++
++static bfd_reloc_status_type
++avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
++ Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
++ bfd_signed_vma relocation,
++ reloc_howto_type *howto)
++{
++ bfd_vma reloc_u;
++
++ /* We take "complain_overflow_dont" to mean "don't complain on
++ alignment either". This way, we don't have to special-case
++ R_AVR32_HI16 */
++ if (howto->complain_on_overflow == complain_overflow_dont)
++ return bfd_reloc_ok;
++
++ /* Check if the value is correctly aligned */
++ if (relocation & ((1 << howto->rightshift) - 1))
++ {
++ RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, relocation, howto->rightshift);
++ return bfd_reloc_overflow;
++ }
++
++ /* Now, get rid of the unnecessary bits */
++ relocation >>= howto->rightshift;
++ reloc_u = (bfd_vma)relocation;
++
++ switch (howto->complain_on_overflow)
++ {
++ case complain_overflow_unsigned:
++ case complain_overflow_bitfield:
++ if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
++ {
++ RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, reloc_u, howto->bitsize);
++ RDBG("reloc vma: 0x%lx\n",
++ sec->output_section->vma + sec->output_offset + rela->r_offset);
++
++ return bfd_reloc_overflow;
++ }
++ break;
++ case complain_overflow_signed:
++ if (relocation > (1 << (howto->bitsize - 1)) - 1)
++ {
++ RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, reloc_u, howto->bitsize);
++ RDBG("reloc vma: 0x%lx\n",
++ sec->output_section->vma + sec->output_offset + rela->r_offset);
++
++ return bfd_reloc_overflow;
++ }
++ if (relocation < -(1 << (howto->bitsize - 1)))
++ {
++ RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, -relocation, howto->bitsize);
++ RDBG("reloc vma: 0x%lx\n",
++ sec->output_section->vma + sec->output_offset + rela->r_offset);
++
++ return bfd_reloc_overflow;
++ }
++ break;
++ default:
++ abort();
++ }
++
++ return bfd_reloc_ok;
++}
++
++
++static bfd_reloc_status_type
++avr32_final_link_relocate(reloc_howto_type *howto,
++ bfd *input_bfd,
++ asection *input_section,
++ bfd_byte *contents,
++ Elf_Internal_Rela *rel,
++ bfd_vma value)
++{
++ bfd_vma field;
++ bfd_vma relocation;
++ bfd_reloc_status_type status;
++ bfd_byte *p = contents + rel->r_offset;
++ unsigned long x;
++
++ pr_debug(" (6b) final link relocate\n");
++
++ /* Sanity check the address */
++ if (rel->r_offset > input_section->size)
++ {
++ (*_bfd_error_handler)
++ ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
++ input_bfd, input_section, rel->r_offset, input_section->size);
++ return bfd_reloc_outofrange;
++ }
++
++ relocation = value + rel->r_addend;
++
++ if (howto->pc_relative)
++ {
++ bfd_vma addr;
++
++ addr = input_section->output_section->vma
++ + input_section->output_offset + rel->r_offset;
++ addr &= ~0UL << howto->rightshift;
++ relocation -= addr;
++ }
++
++ switch (ELF32_R_TYPE(rel->r_info))
++ {
++ case R_AVR32_16N_PCREL:
++ /* sub reg, pc, . - (sym + addend) */
++ relocation = -relocation;
++ break;
++ }
++
++ status = avr32_check_reloc_value(input_section, rel, relocation, howto);
++
++ relocation >>= howto->rightshift;
++ if (howto->bitsize == 21)
++ field = (relocation & 0xffff)
++ | ((relocation & 0x10000) << 4)
++ | ((relocation & 0x1e0000) << 8);
++ else if (howto->bitsize == 12)
++ field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
++ else if (howto->bitsize == 10)
++ field = ((relocation & 0xff) << 4)
++ | ((relocation & 0x300) >> 8);
++ else
++ field = relocation << howto->bitpos;
++
++ switch (howto->size)
++ {
++ case 0:
++ x = bfd_get_8 (input_bfd, p);
++ x &= ~howto->dst_mask;
++ x |= field & howto->dst_mask;
++ bfd_put_8 (input_bfd, (bfd_vma) x, p);
++ break;
++ case 1:
++ x = bfd_get_16 (input_bfd, p);
++ x &= ~howto->dst_mask;
++ x |= field & howto->dst_mask;
++ bfd_put_16 (input_bfd, (bfd_vma) x, p);
++ break;
++ case 2:
++ x = bfd_get_32 (input_bfd, p);
++ x &= ~howto->dst_mask;
++ x |= field & howto->dst_mask;
++ bfd_put_32 (input_bfd, (bfd_vma) x, p);
++ break;
++ default:
++ abort();
++ }
++
++ return status;
++}
++
++/* (6) Apply relocations to the normal (non-dynamic) sections */
++
++static bfd_boolean
++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
++ bfd *input_bfd, asection *input_section,
++ bfd_byte *contents, Elf_Internal_Rela *relocs,
++ Elf_Internal_Sym *local_syms,
++ asection **local_sections)
++{
++ struct elf_avr32_link_hash_table *htab;
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Rela *rel, *relend;
++ struct elf_link_hash_entry **sym_hashes;
++ struct got_entry **local_got_ents;
++ asection *sgot;
++ asection *srelgot;
++
++ pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
++ input_bfd->filename, input_section->name, input_section->size);
++
++ /* If we're doing a partial link, we don't have to do anything since
++ we're using RELA relocations */
++ if (info->relocatable)
++ return TRUE;
++
++ htab = avr32_elf_hash_table(info);
++ symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
++ sym_hashes = elf_sym_hashes(input_bfd);
++ local_got_ents = elf_local_got_ents(input_bfd);
++ sgot = htab->sgot;
++ srelgot = htab->srelgot;
++
++ relend = relocs + input_section->reloc_count;
++ for (rel = relocs; rel < relend; rel++)
++ {
++ unsigned long r_type, r_symndx;
++ reloc_howto_type *howto;
++ Elf_Internal_Sym *sym = NULL;
++ struct elf_link_hash_entry *h = NULL;
++ asection *sec = NULL;
++ bfd_vma value;
++ bfd_vma offset;
++ bfd_reloc_status_type status;
++
++ r_type = ELF32_R_TYPE(rel->r_info);
++ r_symndx = ELF32_R_SYM(rel->r_info);
++
++ if (r_type == R_AVR32_NONE
++ || r_type == R_AVR32_ALIGN
++ || r_type == R_AVR32_DIFF32
++ || r_type == R_AVR32_DIFF16
++ || r_type == R_AVR32_DIFF8)
++ continue;
++
++ /* Sanity check */
++ if (r_type > R_AVR32_max)
++ {
++ bfd_set_error(bfd_error_bad_value);
++ return FALSE;
++ }
++
++ howto = &elf_avr32_howto_table[r_type];
++
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ sym = local_syms + r_symndx;
++ sec = local_sections[r_symndx];
++
++ pr_debug(" (6a) processing %s against local symbol %lu\n",
++ howto->name, r_symndx);
++
++ /* The following function changes rel->r_addend behind our back. */
++ value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
++ }
++ else
++ {
++ if (sym_hashes == NULL)
++ return FALSE;
++
++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ pr_debug(" (6a) processing %s against symbol %s\n",
++ howto->name, h->root.root.string);
++
++ if (h->root.type == bfd_link_hash_defined
++ || h->root.type == bfd_link_hash_defweak)
++ {
++ bfd_boolean dyn;
++
++ dyn = htab->root.dynamic_sections_created;
++ sec = h->root.u.def.section;
++
++ if (sec->output_section)
++ value = (h->root.u.def.value
++ + sec->output_section->vma
++ + sec->output_offset);
++ else
++ value = h->root.u.def.value;
++ }
++ else if (h->root.type == bfd_link_hash_undefweak)
++ value = 0;
++ else if (info->unresolved_syms_in_objects == RM_IGNORE
++ && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
++ value = 0;
++ else
++ {
++ bfd_boolean err;
++ err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
++ || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
++ if (!info->callbacks->undefined_symbol
++ (info, h->root.root.string, input_bfd,
++ input_section, rel->r_offset, err))
++ return FALSE;
++ value = 0;
++ }
++
++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
++ }
++
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ BFD_ASSERT(sgot != NULL);
++
++ if (h != NULL)
++ {
++ BFD_ASSERT(h->got.glist->refcount > 0);
++ offset = h->got.glist->offset;
++
++ BFD_ASSERT(offset < sgot->size);
++ if (!elf_hash_table(info)->dynamic_sections_created
++ || (h->def_regular
++ && (!info->shared
++ || info->symbolic
++ || h->dynindx == -1)))
++ {
++ /* This is actually a static link, or it is a
++ -Bsymbolic link and the symbol is defined
++ locally, or the symbol was forced to be local. */
++ bfd_put_32(output_bfd, value, sgot->contents + offset);
++ }
++ }
++ else
++ {
++ BFD_ASSERT(local_got_ents &&
++ local_got_ents[r_symndx]->refcount > 0);
++ offset = local_got_ents[r_symndx]->offset;
++
++ /* Local GOT entries don't have relocs. If this is a
++ shared library, the dynamic linker will add the load
++ address to the initial value at startup. */
++ BFD_ASSERT(offset < sgot->size);
++ pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
++ offset, value);
++ bfd_put_32 (output_bfd, value, sgot->contents + offset);
++ }
++
++ value = sgot->output_offset + offset;
++ pr_debug("GOT reference: New value %lx\n", value);
++ break;
++
++ case R_AVR32_GOTPC:
++ /* This relocation type is for constant pool entries used in
++ the calculation "Rd = PC - (PC - GOT)", where the
++ constant pool supplies the constant (PC - GOT)
++ offset. The symbol value + addend indicates where the
++ value of PC is taken. */
++ value -= sgot->output_section->vma;
++ break;
++
++ case R_AVR32_32_PCREL:
++ /* We must adjust r_offset to account for discarded data in
++ the .eh_frame section. This is probably not the right
++ way to do this, since AFAICS all other architectures do
++ it some other way. I just can't figure out how... */
++ {
++ bfd_vma r_offset;
++
++ r_offset = _bfd_elf_section_offset(output_bfd, info,
++ input_section,
++ rel->r_offset);
++ if (r_offset == (bfd_vma)-1
++ || r_offset == (bfd_vma)-2)
++ continue;
++ rel->r_offset = r_offset;
++ }
++ break;
++
++ case R_AVR32_32:
++ /* We need to emit a run-time relocation in the following cases:
++ - we're creating a shared library
++ - the symbol is not defined in any regular objects
++
++ Of course, sections that aren't going to be part of the
++ run-time image will not get any relocs, and undefined
++ symbols won't have any either (only weak undefined
++ symbols should get this far). */
++ if ((info->shared
++ || (elf_hash_table(info)->dynamic_sections_created
++ && h != NULL
++ && h->def_dynamic
++ && !h->def_regular))
++ && r_symndx != 0
++ && (input_section->flags & SEC_ALLOC))
++ {
++ Elf_Internal_Rela outrel;
++ bfd_byte *loc;
++ bfd_boolean skip, relocate;
++ struct elf_avr32_link_hash_entry *avrh;
++
++ pr_debug("Going to generate dynamic reloc...\n");
++
++ skip = FALSE;
++ relocate = FALSE;
++
++ outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
++ input_section,
++ rel->r_offset);
++ if (outrel.r_offset == (bfd_vma)-1)
++ skip = TRUE;
++ else if (outrel.r_offset == (bfd_vma)-2)
++ skip = TRUE, relocate = TRUE;
++
++ outrel.r_offset += (input_section->output_section->vma
++ + input_section->output_offset);
++
++ pr_debug(" ... offset %lx, dynindx %ld\n",
++ outrel.r_offset, h ? h->dynindx : -1);
++
++ if (skip)
++ memset(&outrel, 0, sizeof(outrel));
++ else
++ {
++ avrh = (struct elf_avr32_link_hash_entry *)h;
++ /* h->dynindx may be -1 if this symbol was marked to
++ become local. */
++ if (h == NULL
++ || ((info->symbolic || h->dynindx == -1)
++ && h->def_regular))
++ {
++ relocate = TRUE;
++ outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
++ outrel.r_addend = value + rel->r_addend;
++ pr_debug(" ... R_AVR32_RELATIVE\n");
++ }
++ else
++ {
++ BFD_ASSERT(h->dynindx != -1);
++ relocate = TRUE;
++ outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
++ outrel.r_addend = rel->r_addend;
++ pr_debug(" ... R_AVR32_GLOB_DAT\n");
++ }
++ }
++
++ pr_debug("srelgot reloc_count: %d, size %lu\n",
++ srelgot->reloc_count, srelgot->size);
++
++ loc = srelgot->contents;
++ loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
++ bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
++
++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
++ <= srelgot->size);
++
++ if (!relocate)
++ continue;
++ }
++ break;
++ }
++
++ status = avr32_final_link_relocate(howto, input_bfd, input_section,
++ contents, rel, value);
++
++ switch (status)
++ {
++ case bfd_reloc_ok:
++ break;
++
++ case bfd_reloc_overflow:
++ {
++ const char *name;
++
++ if (h != NULL)
++ name = h->root.root.string;
++ else
++ {
++ name = bfd_elf_string_from_elf_section(input_bfd,
++ symtab_hdr->sh_link,
++ sym->st_name);
++ if (name == NULL)
++ return FALSE;
++ if (*name == '\0')
++ name = bfd_section_name(input_bfd, sec);
++ }
++ if (!((*info->callbacks->reloc_overflow)
++ (info, (h ? &h->root : NULL), name, howto->name,
++ rel->r_addend, input_bfd, input_section, rel->r_offset)))
++ return FALSE;
++ }
++ break;
++
++ case bfd_reloc_outofrange:
++ default:
++ abort();
++ }
++ }
++
++ return TRUE;
++}
++
++
++/* Additional processing of dynamic sections after relocation */
++
++static bfd_boolean
++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
++ struct elf_link_hash_entry *h,
++ Elf_Internal_Sym *sym);
++static bfd_boolean
++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
++
++
++/* (7) Initialize the contents of a dynamic symbol and/or emit
++ relocations for it */
++
++static bfd_boolean
++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
++ struct elf_link_hash_entry *h,
++ Elf_Internal_Sym *sym)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct got_entry *got;
++
++ pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
++
++ htab = avr32_elf_hash_table(info);
++ got = h->got.glist;
++
++ if (got && got->refcount > 0)
++ {
++ asection *sgot;
++ asection *srelgot;
++ Elf_Internal_Rela rel;
++ bfd_byte *loc;
++
++ /* This symbol has an entry in the GOT. Set it up. */
++ sgot = htab->sgot;
++ srelgot = htab->srelgot;
++ BFD_ASSERT(sgot && srelgot);
++
++ rel.r_offset = (sgot->output_section->vma
++ + sgot->output_offset
++ + got->offset);
++
++ /* If this is a static link, or it is a -Bsymbolic link and the
++ symbol is defined locally or was forced to be local because
++ of a version file, we just want to emit a RELATIVE reloc. The
++ entry in the global offset table will already have been
++ initialized in the relocate_section function. */
++ if ((info->shared
++ && !info->symbolic
++ && h->dynindx != -1)
++ || (htab->root.dynamic_sections_created
++ && h->def_dynamic
++ && !h->def_regular))
++ {
++ bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
++ rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
++ rel.r_addend = 0;
++
++ pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
++ pr_debug(" srelgot reloc_count: %d, size: %lu\n",
++ srelgot->reloc_count, srelgot->size);
++
++ loc = (srelgot->contents
++ + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
++ bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
++
++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
++ <= srelgot->size);
++ }
++ }
++
++ /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
++ if (strcmp(h->root.root.string, "_DYNAMIC") == 0
++ || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
++ sym->st_shndx = SHN_ABS;
++
++ return TRUE;
++}
++
++/* (8) Do any remaining initialization of the dynamic sections */
++
++static bfd_boolean
++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ asection *sgot, *sdyn;
++
++ pr_debug("(8) finish dynamic sections\n");
++
++ htab = avr32_elf_hash_table(info);
++ sgot = htab->sgot;
++ sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
++
++ if (htab->root.dynamic_sections_created)
++ {
++ Elf32_External_Dyn *dyncon, *dynconend;
++
++ BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
++
++ dyncon = (Elf32_External_Dyn *)sdyn->contents;
++ dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
++ for (; dyncon < dynconend; dyncon++)
++ {
++ Elf_Internal_Dyn dyn;
++ asection *s;
++
++ bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
++
++ switch (dyn.d_tag)
++ {
++ default:
++ break;
++
++ case DT_PLTGOT:
++ s = sgot->output_section;
++ BFD_ASSERT(s != NULL);
++ dyn.d_un.d_ptr = s->vma;
++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
++ break;
++
++ case DT_AVR32_GOTSZ:
++ s = sgot->output_section;
++ BFD_ASSERT(s != NULL);
++ dyn.d_un.d_val = s->size;
++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
++ break;
++ }
++ }
++
++ /* Fill in the first two entries in the global offset table */
++ bfd_put_32(output_bfd,
++ sdyn->output_section->vma + sdyn->output_offset,
++ sgot->contents);
++
++ /* The runtime linker will fill this one in with the address of
++ the run-time link map */
++ bfd_put_32(output_bfd, 0, sgot->contents + 4);
++ }
++
++ if (sgot)
++ elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
++
++ return TRUE;
++}
++
++
++/* AVR32-specific private ELF data */
++
++static bfd_boolean
++avr32_elf_set_private_flags(bfd *abfd, flagword flags);
++static bfd_boolean
++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
++static bfd_boolean
++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
++static bfd_boolean
++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
++
++static bfd_boolean
++avr32_elf_set_private_flags(bfd *abfd, flagword flags)
++{
++ elf_elfheader(abfd)->e_flags = flags;
++ elf_flags_init(abfd) = TRUE;
++
++ return TRUE;
++}
++
++/* Copy backend specific data from one object module to another. */
++
++static bfd_boolean
++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
++{
++ elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
++ return TRUE;
++}
++
++/* Merge backend specific data from an object file to the output
++ object file when linking. */
++
++static bfd_boolean
++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
++{
++ flagword out_flags, in_flags;
++
++ pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
++ ibfd->filename, obfd->filename);
++
++ in_flags = elf_elfheader(ibfd)->e_flags;
++ out_flags = elf_elfheader(obfd)->e_flags;
++
++ if (elf_flags_init(obfd))
++ {
++ /* If one of the inputs are non-PIC, the output must be
++ considered non-PIC. The same applies to linkrelax. */
++ if (!(in_flags & EF_AVR32_PIC))
++ out_flags &= ~EF_AVR32_PIC;
++ if (!(in_flags & EF_AVR32_LINKRELAX))
++ out_flags &= ~EF_AVR32_LINKRELAX;
++ }
++ else
++ {
++ elf_flags_init(obfd) = TRUE;
++ out_flags = in_flags;
++ }
++
++ elf_elfheader(obfd)->e_flags = out_flags;
++
++ return TRUE;
++}
++
++static bfd_boolean
++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
++{
++ FILE *file = (FILE *)ptr;
++ unsigned long flags;
++
++ BFD_ASSERT(abfd != NULL && ptr != NULL);
++
++ _bfd_elf_print_private_bfd_data(abfd, ptr);
++
++ flags = elf_elfheader(abfd)->e_flags;
++
++ fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
++
++ if (flags & EF_AVR32_PIC)
++ fprintf(file, " [PIC]");
++ if (flags & EF_AVR32_LINKRELAX)
++ fprintf(file, " [linker relaxable]");
++
++ flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
++
++ if (flags)
++ fprintf(file, _("<Unrecognized flag bits set>"));
++
++ fputc('\n', file);
++
++ return TRUE;
++}
++
++/* Set avr32-specific linker options. */
++void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
++ int direct_data_refs)
++{
++ struct elf_avr32_link_hash_table *htab;
++
++ htab = avr32_elf_hash_table (info);
++ htab->direct_data_refs = !!direct_data_refs;
++}
++
++
++
++/* Understanding core dumps */
++
++static bfd_boolean
++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
++static bfd_boolean
++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
++
++static bfd_boolean
++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
++{
++ /* Linux/AVR32B elf_prstatus */
++ if (note->descsz != 148)
++ return FALSE;
++
++ /* pr_cursig */
++ elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
++
++ /* pr_pid */
++ elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
++
++ /* Make a ".reg/999" section for pr_reg. The size is for 16
++ general-purpose registers, SR and r12_orig (18 * 4 = 72). */
++ return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
++ note->descpos + 72);
++}
++
++static bfd_boolean
++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
++{
++ /* Linux/AVR32B elf_prpsinfo */
++ if (note->descsz != 128)
++ return FALSE;
++
++ elf_tdata(abfd)->core_program
++ = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
++ elf_tdata(abfd)->core_command
++ = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
++
++ /* Note that for some reason, a spurious space is tacked
++ onto the end of the args in some (at least one anyway)
++ implementations, so strip it off if it exists. */
++
++ {
++ char *command = elf_tdata (abfd)->core_command;
++ int n = strlen (command);
++
++ if (0 < n && command[n - 1] == ' ')
++ command[n - 1] = '\0';
++ }
++
++ return TRUE;
++}
++
++
++#define ELF_ARCH bfd_arch_avr32
++#define ELF_MACHINE_CODE EM_AVR32
++#define ELF_MAXPAGESIZE 0x1000
++
++#define TARGET_BIG_SYM bfd_elf32_avr32_vec
++#define TARGET_BIG_NAME "elf32-avr32"
++
++#define elf_backend_grok_prstatus avr32_elf_grok_prstatus
++#define elf_backend_grok_psinfo avr32_elf_grok_psinfo
++
++/* Only RELA relocations are used */
++#define elf_backend_may_use_rel_p 0
++#define elf_backend_may_use_rela_p 1
++#define elf_backend_default_use_rela_p 1
++#define elf_backend_rela_normal 1
++#define elf_info_to_howto_rel NULL
++#define elf_info_to_howto avr32_info_to_howto
++
++#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data
++#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data
++#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags
++#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data
++#define bfd_elf32_new_section_hook avr32_elf_new_section_hook
++
++#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook
++#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook
++#define elf_backend_relocate_section avr32_elf_relocate_section
++#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
++#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
++#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
++#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
++#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
++#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
++#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
++
++#define bfd_elf32_bfd_relax_section avr32_elf_relax_section
++
++/* Find out which symbols need an entry in .got. */
++#define elf_backend_check_relocs avr32_check_relocs
++#define elf_backend_can_refcount 1
++#define elf_backend_can_gc_sections 1
++#define elf_backend_plt_readonly 1
++#define elf_backend_plt_not_loaded 1
++#define elf_backend_want_plt_sym 0
++#define elf_backend_plt_alignment 2
++#define elf_backend_want_dynbss 0
++#define elf_backend_want_got_plt 0
++#define elf_backend_want_got_sym 1
++#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE
++
++#include "elf32-target.h"
+diff -Nrup binutils-2.17/bfd/elf32-avr32.c.orig binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c.orig
+--- binutils-2.17/bfd/elf32-avr32.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c.orig 2007-05-31 17:03:36.000000000 +0200
+@@ -0,0 +1,3880 @@
++/* AVR32-specific support for 32-bit ELF.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of BFD, the Binary File Descriptor library.
++
++ 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. */
++
++#include "bfd.h"
++#include "sysdep.h"
++#include "bfdlink.h"
++#include "libbfd.h"
++#include "elf-bfd.h"
++#include "elf/avr32.h"
++
++#define xDEBUG
++#define xRELAX_DEBUG
++
++#ifdef DEBUG
++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
++#else
++# define pr_debug(fmt, args...) do { } while (0)
++#endif
++
++#ifdef RELAX_DEBUG
++# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
++#else
++# define RDBG(fmt, args...) do { } while (0)
++#endif
++
++/* When things go wrong, we want it to blow up, damnit! */
++#undef BFD_ASSERT
++#undef abort
++#define BFD_ASSERT(expr) \
++ do \
++ { \
++ if (!(expr)) \
++ { \
++ bfd_assert(__FILE__, __LINE__); \
++ abort(); \
++ } \
++ } \
++ while (0)
++
++/* The name of the dynamic interpreter. This is put in the .interp section. */
++#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
++
++#define AVR32_GOT_HEADER_SIZE 8
++#define AVR32_FUNCTION_STUB_SIZE 8
++
++#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
++#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
++#define ELF_R_SYM(x) ELF32_R_SYM(x)
++
++#define NOP_OPCODE 0xd703
++
++
++/* Mapping between BFD relocations and ELF relocations */
++
++static reloc_howto_type *
++bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
++static void
++avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
++
++/* Generic HOWTO */
++#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \
++ HOWTO(name, align, size, bitsize, pcrel, bitpos, \
++ complain_overflow_##complain, bfd_elf_generic_reloc, #name, \
++ FALSE, 0, mask, pcrel)
++
++static reloc_howto_type elf_avr32_howto_table[] = {
++ /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */
++ GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000),
++
++ GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff),
++ GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff),
++ GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff),
++ GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff),
++
++ /* Difference between two symbol (sym2 - sym1). The reloc encodes
++ the value of sym1. The field contains the difference before any
++ relaxing is done. */
++ GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
++
++ GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
++ GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
++
++ GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff),
++ GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0),
++ GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff),
++
++ GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
++ GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3),
++ GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff),
++ GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0),
++ GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
++
++ GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff),
++ GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff),
++
++ GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
++ GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0),
++
++ GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
++ GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
++
++ GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
++ GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++ GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
++
++ GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000),
++};
++
++struct elf_reloc_map
++{
++ bfd_reloc_code_real_type bfd_reloc_val;
++ unsigned char elf_reloc_val;
++};
++
++static const struct elf_reloc_map avr32_reloc_map[] =
++{
++ { BFD_RELOC_NONE, R_AVR32_NONE },
++
++ { BFD_RELOC_32, R_AVR32_32 },
++ { BFD_RELOC_16, R_AVR32_16 },
++ { BFD_RELOC_8, R_AVR32_8 },
++ { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL },
++ { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL },
++ { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL },
++ { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 },
++ { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 },
++ { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 },
++ { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 },
++ { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 },
++ { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 },
++
++ { BFD_RELOC_AVR32_21S, R_AVR32_21S },
++ { BFD_RELOC_AVR32_16U, R_AVR32_16U },
++ { BFD_RELOC_AVR32_16S, R_AVR32_16S },
++ { BFD_RELOC_AVR32_SUB5, R_AVR32_16S },
++ { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT },
++ { BFD_RELOC_AVR32_8S, R_AVR32_8S },
++
++ { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL },
++ { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL },
++ { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL },
++ { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL },
++ { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL },
++ { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL },
++ { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL },
++ { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL },
++
++ { BFD_RELOC_HI16, R_AVR32_HI16 },
++ { BFD_RELOC_LO16, R_AVR32_LO16 },
++
++ { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC },
++ { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL },
++ { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT },
++ { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S },
++ { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW },
++ { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S },
++ /* GOT7UW should never be generated by the assembler */
++
++ { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT },
++ { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL },
++ { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP },
++ { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP },
++
++ { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN },
++};
++
++static reloc_howto_type *
++bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
++ bfd_reloc_code_real_type code)
++{
++ unsigned int i;
++
++ for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
++ {
++ if (avr32_reloc_map[i].bfd_reloc_val == code)
++ return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
++ }
++
++ return NULL;
++}
++
++static void
++avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
++ arelent *cache_ptr,
++ Elf_Internal_Rela *dst)
++{
++ unsigned int r_type;
++
++ r_type = ELF32_R_TYPE (dst->r_info);
++ BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
++ cache_ptr->howto = &elf_avr32_howto_table[r_type];
++}
++
++
++/* AVR32 ELF linker hash table and associated hash entries. */
++
++static struct bfd_hash_entry *
++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
++ struct bfd_hash_table *table,
++ const char *string);
++static void
++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *dir,
++ struct elf_link_hash_entry *ind);
++static struct bfd_link_hash_table *
++avr32_elf_link_hash_table_create(bfd *abfd);
++
++/*
++ Try to limit memory usage to something reasonable when sorting the
++ GOT. If we ever get more than this many references to the same
++ symbol, we may need to do something special.
++*/
++#define MAX_NR_GOT_HOLES 8192
++
++/*
++ AVR32 GOT entry. We need to keep track of refcounts and offsets
++ simultaneously, since we need the offsets during relaxation, and we
++ also want to be able to drop GOT entries during relaxation. In
++ addition to this, we want to keep the list of GOT entries sorted so
++ that we can keep the most-used entries at the lowest offsets.
++*/
++struct got_entry
++{
++ struct got_entry *next;
++ struct got_entry **pprev;
++ int refcount;
++ bfd_signed_vma offset;
++};
++
++struct elf_avr32_link_hash_entry
++{
++ struct elf_link_hash_entry root;
++
++ /* Number of runtime relocations against this symbol. */
++ unsigned int possibly_dynamic_relocs;
++
++ /* If there are anything but R_AVR32_GOT18 relocations against this
++ symbol, it means that someone may be taking the address of the
++ function, and we should therefore not create a stub. */
++ bfd_boolean no_fn_stub;
++
++ /* If there is a R_AVR32_32 relocation in a read-only section
++ against this symbol, we could be in trouble. If we're linking a
++ shared library or this symbol is defined in one, it means we must
++ emit a run-time reloc for it and that's not allowed in read-only
++ sections. */
++ asection *readonly_reloc_sec;
++ bfd_vma readonly_reloc_offset;
++
++ /* Record which frag (if any) contains the symbol. This is used
++ during relaxation in order to avoid having to update all symbols
++ whenever we move something. For local symbols, this information
++ is in the local_sym_frag member of struct elf_obj_tdata. */
++ struct fragment *sym_frag;
++};
++#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
++
++struct elf_avr32_link_hash_table
++{
++ struct elf_link_hash_table root;
++
++ /* Shortcuts to get to dynamic linker sections. */
++ asection *sgot;
++ asection *srelgot;
++ asection *sstub;
++
++ /* We use a variation of Pigeonhole Sort to sort the GOT. After the
++ initial refcounts have been determined, we initialize
++ nr_got_holes to the highest refcount ever seen and allocate an
++ array of nr_got_holes entries for got_hole. Each GOT entry is
++ then stored in this array at the index given by its refcount.
++
++ When a GOT entry has its refcount decremented during relaxation,
++ it is moved to a lower index in the got_hole array.
++ */
++ struct got_entry **got_hole;
++ int nr_got_holes;
++
++ /* Dynamic relocations to local symbols. Only used when linking a
++ shared library and -Bsymbolic is not given. */
++ unsigned int local_dynamic_relocs;
++
++ bfd_boolean relocations_analyzed;
++ bfd_boolean symbols_adjusted;
++ bfd_boolean repeat_pass;
++ unsigned int relax_iteration;
++ unsigned int relax_pass;
++};
++#define avr32_elf_hash_table(p) \
++ ((struct elf_avr32_link_hash_table *)((p)->hash))
++
++static struct bfd_hash_entry *
++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
++ struct bfd_hash_table *table,
++ const char *string)
++{
++ struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
++
++ /* Allocate the structure if it hasn't already been allocated by a
++ subclass */
++ if (ret == NULL)
++ ret = (struct elf_avr32_link_hash_entry *)
++ bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
++
++ if (ret == NULL)
++ return NULL;
++
++ memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
++
++ /* Give the superclass a chance */
++ ret = (struct elf_avr32_link_hash_entry *)
++ _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
++
++ return (struct bfd_hash_entry *)ret;
++}
++
++/* Copy data from an indirect symbol to its direct symbol, hiding the
++ old indirect symbol. Process additional relocation information.
++ Also called for weakdefs, in which case we just let
++ _bfd_elf_link_hash_copy_indirect copy the flags for us. */
++
++static void
++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *dir,
++ struct elf_link_hash_entry *ind)
++{
++ struct elf_avr32_link_hash_entry *edir, *eind;
++
++ _bfd_elf_link_hash_copy_indirect (info, dir, ind);
++
++ if (ind->root.type != bfd_link_hash_indirect)
++ return;
++
++ edir = (struct elf_avr32_link_hash_entry *)dir;
++ eind = (struct elf_avr32_link_hash_entry *)ind;
++
++ edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
++ edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
++}
++
++static struct bfd_link_hash_table *
++avr32_elf_link_hash_table_create(bfd *abfd)
++{
++ struct elf_avr32_link_hash_table *ret;
++
++ ret = bfd_zmalloc(sizeof(*ret));
++ if (ret == NULL)
++ return NULL;
++
++ if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
++ avr32_elf_link_hash_newfunc,
++ sizeof (struct elf_avr32_link_hash_entry)))
++ {
++ free(ret);
++ return NULL;
++ }
++
++ /* Prevent the BFD core from creating bogus got_entry pointers */
++ ret->root.init_got_refcount.glist = NULL;
++ ret->root.init_plt_refcount.glist = NULL;
++
++ return &ret->root.root;
++}
++
++
++/* Initial analysis and creation of dynamic sections and symbols */
++
++static asection *
++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
++ unsigned int align_power);
++static struct elf_link_hash_entry *
++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
++ const char *name, asection *sec,
++ bfd_vma offset);
++static bfd_boolean
++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
++static bfd_boolean
++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
++static bfd_boolean
++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
++ const Elf_Internal_Rela *relocs);
++static bfd_boolean
++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *h);
++
++static asection *
++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
++ unsigned int align_power)
++{
++ asection *sec;
++
++ sec = bfd_make_section(dynobj, name);
++ if (!sec
++ || !bfd_set_section_flags(dynobj, sec, flags)
++ || !bfd_set_section_alignment(dynobj, sec, align_power))
++ return NULL;
++
++ return sec;
++}
++
++static struct elf_link_hash_entry *
++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
++ const char *name, asection *sec,
++ bfd_vma offset)
++{
++ struct bfd_link_hash_entry *bh = NULL;
++ struct elf_link_hash_entry *h;
++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
++
++ if (!(_bfd_generic_link_add_one_symbol
++ (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
++ bed->collect, &bh)))
++ return NULL;
++
++ h = (struct elf_link_hash_entry *)bh;
++ h->def_regular = 1;
++ h->type = STT_OBJECT;
++ h->other = STV_HIDDEN;
++
++ return h;
++}
++
++static bfd_boolean
++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ flagword flags;
++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
++
++ htab = avr32_elf_hash_table(info);
++ flags = bed->dynamic_sec_flags;
++
++ if (htab->sgot)
++ return TRUE;
++
++ htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
++ if (!htab->srelgot)
++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
++ flags | SEC_READONLY, 2);
++
++ if (!htab->sgot || !htab->srelgot)
++ return FALSE;
++
++ htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
++ htab->sgot, 0);
++ if (!htab->root.hgot)
++ return FALSE;
++
++ /* Make room for the GOT header */
++ htab->sgot->size += bed->got_header_size;
++
++ return TRUE;
++}
++
++/* (1) Create all dynamic (i.e. linker generated) sections that we may
++ need during the link */
++
++static bfd_boolean
++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ flagword flags;
++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
++
++ pr_debug("(1) create dynamic sections\n");
++
++ htab = avr32_elf_hash_table(info);
++ flags = bed->dynamic_sec_flags;
++
++ if (!avr32_elf_create_got_section (dynobj, info))
++ return FALSE;
++
++ if (!htab->sstub)
++ htab->sstub = create_dynamic_section(dynobj, ".stub",
++ flags | SEC_READONLY | SEC_CODE, 2);
++
++ if (!htab->sstub)
++ return FALSE;
++
++ return TRUE;
++}
++
++/* (2) Go through all the relocs and count any potential GOT- or
++ PLT-references to each symbol */
++
++static bfd_boolean
++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
++ const Elf_Internal_Rela *relocs)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ struct elf_avr32_link_hash_table *htab;
++ struct elf_link_hash_entry **sym_hashes;
++ const Elf_Internal_Rela *rel, *rel_end;
++ struct got_entry **local_got_ents;
++ struct got_entry *got;
++ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
++ asection *sgot;
++ bfd *dynobj;
++
++ pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
++ abfd->filename, sec->name, sec->size);
++
++ if (info->relocatable)
++ return TRUE;
++
++ dynobj = elf_hash_table(info)->dynobj;
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ sym_hashes = elf_sym_hashes(abfd);
++ htab = avr32_elf_hash_table(info);
++ local_got_ents = elf_local_got_ents(abfd);
++ sgot = htab->sgot;
++
++ rel_end = relocs + sec->reloc_count;
++ for (rel = relocs; rel < rel_end; rel++)
++ {
++ unsigned long r_symndx, r_type;
++ struct elf_avr32_link_hash_entry *h;
++
++ r_symndx = ELF32_R_SYM(rel->r_info);
++ r_type = ELF32_R_TYPE(rel->r_info);
++
++ /* Local symbols use local_got_ents, while others store the same
++ information in the hash entry */
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ pr_debug(" (2a) processing local symbol %lu\n", r_symndx);
++ h = NULL;
++ }
++ else
++ {
++ h = (struct elf_avr32_link_hash_entry *)
++ sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
++ pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string);
++ }
++
++ /* Some relocs require special sections to be created. */
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ if (rel->r_addend)
++ {
++ if (info->callbacks->reloc_dangerous
++ (info, _("Non-zero addend on GOT-relative relocation"),
++ abfd, sec, rel->r_offset) == FALSE)
++ return FALSE;
++ }
++ /* fall through */
++ case R_AVR32_GOTPC:
++ if (dynobj == NULL)
++ elf_hash_table(info)->dynobj = dynobj = abfd;
++ if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
++ return FALSE;
++ break;
++ case R_AVR32_32:
++ /* We may need to create .rela.dyn later on. */
++ if (dynobj == NULL
++ && (info->shared || h != NULL)
++ && (sec->flags & SEC_ALLOC))
++ elf_hash_table(info)->dynobj = dynobj = abfd;
++ break;
++ }
++
++ if (h != NULL && r_type != R_AVR32_GOT18SW)
++ h->no_fn_stub = TRUE;
++
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ if (h != NULL)
++ {
++ got = h->root.got.glist;
++ if (!got)
++ {
++ got = bfd_zalloc(abfd, sizeof(struct got_entry));
++ if (!got)
++ return FALSE;
++ h->root.got.glist = got;
++ }
++ }
++ else
++ {
++ if (!local_got_ents)
++ {
++ bfd_size_type size;
++ bfd_size_type i;
++ struct got_entry *tmp_entry;
++
++ size = symtab_hdr->sh_info;
++ size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
++ local_got_ents = bfd_zalloc(abfd, size);
++ if (!local_got_ents)
++ return FALSE;
++
++ elf_local_got_ents(abfd) = local_got_ents;
++
++ tmp_entry = (struct got_entry *)(local_got_ents
++ + symtab_hdr->sh_info);
++ for (i = 0; i < symtab_hdr->sh_info; i++)
++ local_got_ents[i] = &tmp_entry[i];
++ }
++
++ got = local_got_ents[r_symndx];
++ }
++
++ got->refcount++;
++ if (got->refcount > htab->nr_got_holes)
++ htab->nr_got_holes = got->refcount;
++ break;
++
++ case R_AVR32_32:
++ if ((info->shared || h != NULL)
++ && (sec->flags & SEC_ALLOC))
++ {
++ if (htab->srelgot == NULL)
++ {
++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
++ bed->dynamic_sec_flags
++ | SEC_READONLY, 2);
++ if (htab->srelgot == NULL)
++ return FALSE;
++ }
++
++ if (sec->flags & SEC_READONLY
++ && !h->readonly_reloc_sec)
++ {
++ h->readonly_reloc_sec = sec;
++ h->readonly_reloc_offset = rel->r_offset;
++ }
++
++ if (h != NULL)
++ {
++ pr_debug("Non-GOT reference to symbol %s\n",
++ h->root.root.root.string);
++ h->possibly_dynamic_relocs++;
++ }
++ else
++ {
++ pr_debug("Non-GOT reference to local symbol %lu\n",
++ r_symndx);
++ htab->local_dynamic_relocs++;
++ }
++ }
++
++ break;
++
++ /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
++ }
++ }
++
++ return TRUE;
++}
++
++/* (3) Adjust a symbol defined by a dynamic object and referenced by a
++ regular object. The current definition is in some section of the
++ dynamic object, but we're not including those sections. We have to
++ change the definition to something the rest of the link can
++ understand. */
++
++static bfd_boolean
++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
++ struct elf_link_hash_entry *h)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct elf_avr32_link_hash_entry *havr;
++ bfd *dynobj;
++
++ pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
++
++ htab = avr32_elf_hash_table(info);
++ havr = (struct elf_avr32_link_hash_entry *)h;
++ dynobj = elf_hash_table(info)->dynobj;
++
++ /* Make sure we know what is going on here. */
++ BFD_ASSERT (dynobj != NULL
++ && (h->u.weakdef != NULL
++ || (h->def_dynamic
++ && h->ref_regular
++ && !h->def_regular)));
++
++ /* We don't want dynamic relocations in read-only sections. */
++ if (havr->readonly_reloc_sec)
++ {
++ if (info->callbacks->reloc_dangerous
++ (info, _("dynamic relocation in read-only section"),
++ havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
++ havr->readonly_reloc_offset) == FALSE)
++ return FALSE;
++ }
++
++ /* If this is a function, create a stub if possible and set the
++ symbol to the stub location. */
++ if (0 && !havr->no_fn_stub)
++ {
++ if (!h->def_regular)
++ {
++ asection *s = htab->sstub;
++
++ BFD_ASSERT(s != NULL);
++
++ h->root.u.def.section = s;
++ h->root.u.def.value = s->size;
++ h->plt.offset = s->size;
++ s->size += AVR32_FUNCTION_STUB_SIZE;
++
++ return TRUE;
++ }
++ }
++ else if (h->type == STT_FUNC)
++ {
++ /* This will set the entry for this symbol in the GOT to 0, and
++ the dynamic linker will take care of this. */
++ h->root.u.def.value = 0;
++ return TRUE;
++ }
++
++ /* If this is a weak symbol, and there is a real definition, the
++ processor independent code will have arranged for us to see the
++ real definition first, and we can just use the same value. */
++ if (h->u.weakdef != NULL)
++ {
++ BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
++ || h->u.weakdef->root.type == bfd_link_hash_defweak);
++ h->root.u.def.section = h->u.weakdef->root.u.def.section;
++ h->root.u.def.value = h->u.weakdef->root.u.def.value;
++ return TRUE;
++ }
++
++ /* This is a reference to a symbol defined by a dynamic object which
++ is not a function. */
++
++ return TRUE;
++}
++
++
++/* Garbage-collection of unused sections */
++
++static asection *
++avr32_elf_gc_mark_hook(asection *sec,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED,
++ Elf_Internal_Rela *rel,
++ struct elf_link_hash_entry *h,
++ Elf_Internal_Sym *sym)
++{
++ if (h)
++ {
++ switch (ELF32_R_TYPE(rel->r_info))
++ {
++ /* TODO: VTINHERIT/VTENTRY */
++ default:
++ switch (h->root.type)
++ {
++ case bfd_link_hash_defined:
++ case bfd_link_hash_defweak:
++ return h->root.u.def.section;
++
++ case bfd_link_hash_common:
++ return h->root.u.c.p->section;
++
++ default:
++ break;
++ }
++ }
++ }
++ else
++ return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
++
++ return NULL;
++}
++
++/* Update the GOT entry reference counts for the section being removed. */
++static bfd_boolean
++avr32_elf_gc_sweep_hook(bfd *abfd,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED,
++ asection *sec,
++ const Elf_Internal_Rela *relocs)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ struct elf_avr32_link_hash_entry **sym_hashes;
++ struct got_entry **local_got_ents;
++ const Elf_Internal_Rela *rel, *relend;
++
++ if (!(sec->flags & SEC_ALLOC))
++ return TRUE;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
++ local_got_ents = elf_local_got_ents(abfd);
++
++ relend = relocs + sec->reloc_count;
++ for (rel = relocs; rel < relend; rel++)
++ {
++ unsigned long r_symndx;
++ unsigned int r_type;
++ struct elf_avr32_link_hash_entry *h = NULL;
++
++ r_symndx = ELF32_R_SYM(rel->r_info);
++ if (r_symndx >= symtab_hdr->sh_info)
++ {
++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.root.type == bfd_link_hash_indirect
++ || h->root.root.type == bfd_link_hash_warning)
++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
++ }
++
++ r_type = ELF32_R_TYPE(rel->r_info);
++
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ if (h)
++ h->root.got.glist->refcount--;
++ else
++ local_got_ents[r_symndx]->refcount--;
++ break;
++
++ case R_AVR32_32:
++ if (info->shared || h)
++ {
++ if (h)
++ h->possibly_dynamic_relocs--;
++ else
++ avr32_elf_hash_table(info)->local_dynamic_relocs--;
++ }
++
++ default:
++ break;
++ }
++ }
++
++ return TRUE;
++}
++
++/* Sizing and refcounting of dynamic sections */
++
++static void
++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
++static void
++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
++static void
++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
++static bfd_boolean
++assign_got_offsets(struct elf_avr32_link_hash_table *htab);
++static bfd_boolean
++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
++static bfd_boolean
++avr32_elf_size_dynamic_sections (bfd *output_bfd,
++ struct bfd_link_info *info);
++
++static void
++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
++{
++ /* TODO: Support got_refcount > htab->nr_got_holes by using a
++ different sort algorithm for those. */
++ BFD_ASSERT(got->refcount <= htab->nr_got_holes);
++
++ got->pprev = &htab->got_hole[got->refcount];
++ got->next = htab->got_hole[got->refcount];
++ if (got->next)
++ got->next->pprev = &got->next;
++
++ htab->got_hole[got->refcount] = got;
++}
++
++/* Decrement the refcount of a GOT entry and update its position in
++ the pigeonhole array. */
++static void
++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
++{
++ BFD_ASSERT(got->refcount <= htab->nr_got_holes);
++ BFD_ASSERT(got->refcount > 0);
++
++ if (got->next)
++ got->next->pprev = got->pprev;
++
++ *(got->pprev) = got->next;
++ got->refcount--;
++ insert_got_entry(htab, got);
++}
++
++static void
++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
++{
++ if (got->next)
++ got->next->pprev = got->pprev;
++
++ *(got->pprev) = got->next;
++ got->refcount++;
++ insert_got_entry(htab, got);
++
++ BFD_ASSERT(got->refcount > 0);
++ BFD_ASSERT(got->refcount <= htab->nr_got_holes);
++}
++
++/* Assign offsets to all GOT entries we intend to keep. The entries
++ that are referenced most often are placed at low offsets so that we
++ can use compact instructions as much as possible.
++
++ Returns TRUE if any offsets or the total size of the GOT changed. */
++
++static bfd_boolean
++assign_got_offsets(struct elf_avr32_link_hash_table *htab)
++{
++ struct got_entry *got;
++ bfd_size_type got_size = 0;
++ bfd_boolean changed = FALSE;
++ bfd_signed_vma offset;
++ int i;
++
++ /* The GOT header provides the address of the DYNAMIC segment, so
++ we need that even if the GOT is otherwise empty. */
++ if (htab->root.dynamic_sections_created)
++ got_size = AVR32_GOT_HEADER_SIZE;
++
++ for (i = htab->nr_got_holes; i > 0; i--)
++ {
++ got = htab->got_hole[i];
++ while (got)
++ {
++ if (got->refcount > 0)
++ {
++ offset = got_size;
++ if (got->offset != offset)
++ {
++ RDBG("GOT offset changed: %ld -> %ld\n",
++ got->offset, offset);
++ changed = TRUE;
++ }
++ got->offset = offset;
++ got_size += 4;
++ }
++ got = got->next;
++ }
++ }
++
++ if (htab->sgot->size != got_size)
++ {
++ RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
++ got_size);
++ changed = TRUE;
++ }
++ htab->sgot->size = got_size;
++
++ RDBG("assign_got_offsets: total size %lu (%s)\n",
++ got_size, changed ? "changed" : "no change");
++
++ return changed;
++}
++
++static bfd_boolean
++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
++{
++ struct bfd_link_info *info = _info;
++ struct elf_avr32_link_hash_table *htab;
++ struct elf_avr32_link_hash_entry *havr;
++ struct got_entry *got;
++
++ pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string);
++
++ if (h->root.type == bfd_link_hash_indirect)
++ return TRUE;
++
++ if (h->root.type == bfd_link_hash_warning)
++ /* When warning symbols are created, they **replace** the "real"
++ entry in the hash table, thus we never get to see the real
++ symbol in a hash traversal. So look at it now. */
++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
++
++ htab = avr32_elf_hash_table(info);
++ havr = (struct elf_avr32_link_hash_entry *)h;
++
++ got = h->got.glist;
++
++ /* If got is NULL, the symbol is never referenced through the GOT */
++ if (got && got->refcount > 0)
++ {
++ insert_got_entry(htab, got);
++
++ /* Shared libraries need relocs for all GOT entries unless the
++ symbol is forced local or -Bsymbolic is used. Others need
++ relocs for everything that is not guaranteed to be defined in
++ a regular object. */
++ if ((info->shared
++ && !info->symbolic
++ && h->dynindx != -1)
++ || (htab->root.dynamic_sections_created
++ && h->def_dynamic
++ && !h->def_regular))
++ htab->srelgot->size += sizeof(Elf32_External_Rela);
++ }
++
++ if (havr->possibly_dynamic_relocs
++ && (info->shared
++ || (elf_hash_table(info)->dynamic_sections_created
++ && h->def_dynamic
++ && !h->def_regular)))
++ {
++ pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
++ havr->possibly_dynamic_relocs, h->root.root.string);
++ htab->srelgot->size += (havr->possibly_dynamic_relocs
++ * sizeof(Elf32_External_Rela));
++ }
++
++ return TRUE;
++}
++
++/* (4) Calculate the sizes of the linker-generated sections and
++ allocate memory for them. */
++
++static bfd_boolean
++avr32_elf_size_dynamic_sections (bfd *output_bfd,
++ struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ bfd *dynobj;
++ asection *s;
++ bfd *ibfd;
++ bfd_boolean relocs;
++
++ pr_debug("(4) size dynamic sections\n");
++
++ htab = avr32_elf_hash_table(info);
++ dynobj = htab->root.dynobj;
++ BFD_ASSERT(dynobj != NULL);
++
++ if (htab->root.dynamic_sections_created)
++ {
++ /* Initialize the contents of the .interp section to the name of
++ the dynamic loader */
++ if (info->executable)
++ {
++ s = bfd_get_section_by_name(dynobj, ".interp");
++ BFD_ASSERT(s != NULL);
++ s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
++ s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
++ }
++ }
++
++ if (htab->nr_got_holes > 0)
++ {
++ /* Allocate holes for the pigeonhole sort algorithm */
++ pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
++ if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
++ {
++ /* TODO: Do something clever (different sorting algorithm) */
++ _bfd_error_handler(_("Highest refcount %d too high (max %d)\n"),
++ htab->nr_got_holes, MAX_NR_GOT_HOLES);
++ bfd_set_error(bfd_error_no_memory);
++ return FALSE;
++ }
++ htab->got_hole = bfd_zalloc(output_bfd,
++ sizeof(struct got_entry *)
++ * (htab->nr_got_holes + 1));
++ if (!htab->got_hole)
++ return FALSE;
++
++ /* Set up .got offsets for local syms. */
++ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
++ {
++ struct got_entry **local_got;
++ struct got_entry **end_local_got;
++ Elf_Internal_Shdr *symtab_hdr;
++ bfd_size_type locsymcount;
++
++ pr_debug(" (4a) processing file %s...\n", ibfd->filename);
++
++ BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
++
++ local_got = elf_local_got_ents(ibfd);
++ if (!local_got)
++ continue;
++
++ symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
++ locsymcount = symtab_hdr->sh_info;
++ end_local_got = local_got + locsymcount;
++
++ for (; local_got < end_local_got; ++local_got)
++ insert_got_entry(htab, *local_got);
++ }
++ }
++
++ /* Allocate global sym .got entries and space for global sym
++ dynamic relocs */
++ elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
++
++ /* Now that we have sorted the GOT entries, we are ready to
++ assign offsets and determine the initial size of the GOT. */
++ if (htab->sgot)
++ assign_got_offsets(htab);
++
++ /* Allocate space for local sym dynamic relocs */
++ BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
++ if (htab->local_dynamic_relocs)
++ htab->srelgot->size += (htab->local_dynamic_relocs
++ * sizeof(Elf32_External_Rela));
++
++ /* We now have determined the sizes of the various dynamic
++ sections. Allocate memory for them. */
++ relocs = FALSE;
++ for (s = dynobj->sections; s; s = s->next)
++ {
++ if ((s->flags & SEC_LINKER_CREATED) == 0)
++ continue;
++
++ if (s == htab->sgot
++ || s == htab->sstub)
++ {
++ /* Strip this section if we don't need it */
++ }
++ else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
++ {
++ if (s->size != 0)
++ relocs = TRUE;
++
++ s->reloc_count = 0;
++ }
++ else
++ {
++ /* It's not one of our sections */
++ continue;
++ }
++
++ if (s->size == 0)
++ {
++ /* Strip unneeded sections */
++ pr_debug("Stripping section %s from output...\n", s->name);
++ /* deleted function in 2.17
++ _bfd_strip_section_from_output(info, s);
++ */
++ continue;
++ }
++
++ s->contents = bfd_zalloc(dynobj, s->size);
++ if (s->contents == NULL)
++ return FALSE;
++ }
++
++ if (htab->root.dynamic_sections_created)
++ {
++ /* Add some entries to the .dynamic section. We fill in the
++ values later, in sh_elf_finish_dynamic_sections, but we
++ must add the entries now so that we get the correct size for
++ the .dynamic section. The DT_DEBUG entry is filled in by the
++ dynamic linker and used by the debugger. */
++#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
++
++ if (!add_dynamic_entry(DT_PLTGOT, 0))
++ return FALSE;
++ if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
++ return FALSE;
++
++ if (info->executable)
++ {
++ if (!add_dynamic_entry(DT_DEBUG, 0))
++ return FALSE;
++ }
++ if (relocs)
++ {
++ if (!add_dynamic_entry(DT_RELA, 0)
++ || !add_dynamic_entry(DT_RELASZ, 0)
++ || !add_dynamic_entry(DT_RELAENT,
++ sizeof(Elf32_External_Rela)))
++ return FALSE;
++ }
++ }
++#undef add_dynamic_entry
++
++ return TRUE;
++}
++
++
++/* Access to internal relocations, section contents and symbols.
++ (stolen from the xtensa port) */
++
++static Elf_Internal_Rela *
++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
++static void
++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
++static void
++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
++static bfd_byte *
++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
++/*
++static void
++pin_contents (asection *sec, bfd_byte *contents);
++*/
++static void
++release_contents (asection *sec, bfd_byte *contents);
++static Elf_Internal_Sym *
++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
++/*
++static void
++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
++*/
++static void
++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
++
++/* During relaxation, we need to modify relocations, section contents,
++ and symbol definitions, and we need to keep the original values from
++ being reloaded from the input files, i.e., we need to "pin" the
++ modified values in memory. We also want to continue to observe the
++ setting of the "keep-memory" flag. The following functions wrap the
++ standard BFD functions to take care of this for us. */
++
++static Elf_Internal_Rela *
++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
++{
++ /* _bfd_elf_link_read_relocs knows about caching, so no need for us
++ to be clever here. */
++ return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
++}
++
++static void
++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
++{
++ elf_section_data (sec)->relocs = internal_relocs;
++}
++
++static void
++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
++{
++ if (internal_relocs
++ && elf_section_data (sec)->relocs != internal_relocs)
++ free (internal_relocs);
++}
++
++static bfd_byte *
++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
++{
++ bfd_byte *contents;
++ bfd_size_type sec_size;
++
++ sec_size = bfd_get_section_limit (abfd, sec);
++ contents = elf_section_data (sec)->this_hdr.contents;
++
++ if (contents == NULL && sec_size != 0)
++ {
++ if (!bfd_malloc_and_get_section (abfd, sec, &contents))
++ {
++ if (contents)
++ free (contents);
++ return NULL;
++ }
++ if (keep_memory)
++ elf_section_data (sec)->this_hdr.contents = contents;
++ }
++ return contents;
++}
++
++/*
++static void
++pin_contents (asection *sec, bfd_byte *contents)
++{
++ elf_section_data (sec)->this_hdr.contents = contents;
++}
++*/
++static void
++release_contents (asection *sec, bfd_byte *contents)
++{
++ if (contents && elf_section_data (sec)->this_hdr.contents != contents)
++ free (contents);
++}
++
++static Elf_Internal_Sym *
++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Sym *isymbuf;
++ size_t locsymcount;
++
++ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
++ locsymcount = symtab_hdr->sh_info;
++
++ isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
++ if (isymbuf == NULL && locsymcount != 0)
++ {
++ isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
++ NULL, NULL, NULL);
++ if (isymbuf && keep_memory)
++ symtab_hdr->contents = (unsigned char *) isymbuf;
++ }
++
++ return isymbuf;
++}
++
++/*
++static void
++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
++{
++ elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
++}
++
++*/
++static void
++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
++{
++ if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
++ != (unsigned char *)isymbuf))
++ free (isymbuf);
++}
++
++ /* Data structures used during relaxation. */
++
++enum relax_state_id {
++ RS_ERROR = -1,
++ RS_NONE = 0,
++ RS_ALIGN,
++ RS_CPENT,
++ RS_PIC_CALL,
++ RS_PIC_MCALL,
++ RS_PIC_RCALL2,
++ RS_PIC_RCALL1,
++ RS_PIC_LDA,
++ RS_PIC_LDW4,
++ RS_PIC_LDW3,
++ RS_PIC_SUB5,
++ RS_NOPIC_MCALL,
++ RS_NOPIC_RCALL2,
++ RS_NOPIC_RCALL1,
++ RS_NOPIC_LDW4,
++ RS_NOPIC_LDDPC,
++ RS_NOPIC_SUB5,
++#ifdef DHRYSTONE_FIX
++ RS_NOPIC_MOV2,
++ RS_NOPIC_MOV1,
++#endif
++ RS_RCALL2,
++ RS_RCALL1,
++ RS_BRC2,
++ RS_BRC1,
++ RS_BRAL,
++ RS_RJMP,
++ RS_MAX,
++};
++
++enum reference_type {
++ REF_ABSOLUTE,
++ REF_PCREL,
++ REF_CPOOL,
++ REF_GOT,
++};
++
++struct relax_state
++{
++ const char *name;
++ enum relax_state_id id;
++ enum relax_state_id direct;
++ enum relax_state_id next;
++ enum relax_state_id prev;
++
++ enum reference_type reftype;
++
++ unsigned int r_type;
++
++ bfd_vma opcode;
++ bfd_vma opcode_mask;
++
++ bfd_signed_vma range_min;
++ bfd_signed_vma range_max;
++
++ bfd_size_type size;
++};
++
++/*
++ * This is for relocs that
++ * a) has an addend or is of type R_AVR32_DIFF32, and
++ * b) references a different section than it's in, and
++ * c) references a section that is relaxable
++ *
++ * as well as relocs that references the constant pool, in which case
++ * the add_frag member points to the frag containing the constant pool
++ * entry.
++ *
++ * Such relocs must be fixed up whenever we delete any code. Sections
++ * that don't have any relocs with all of the above properties don't
++ * have any additional reloc data, but sections that do will have
++ * additional data for all its relocs.
++ */
++struct avr32_reloc_data
++{
++ struct fragment *add_frag;
++ struct fragment *sub_frag;
++};
++
++/*
++ * A 'fragment' is a relaxable entity, that is, code may be added or
++ * deleted at the end of a fragment. When this happens, all subsequent
++ * fragments in the list will have their offsets updated.
++ */
++struct fragment
++{
++ enum relax_state_id state;
++ enum relax_state_id initial_state;
++
++ Elf_Internal_Rela *rela;
++ bfd_size_type size;
++ bfd_vma offset;
++ int size_adjust;
++ int offset_adjust;
++ bfd_boolean has_grown;
++
++ /* Only used by constant pool entries. When this drops to zero, the
++ frag is discarded (i.e. size_adjust is set to -4.) */
++ int refcount;
++};
++
++struct avr32_relax_data
++{
++ unsigned int frag_count;
++ struct fragment *frag;
++ struct avr32_reloc_data *reloc_data;
++
++ /* TRUE if this section has one or more relaxable relocations */
++ bfd_boolean is_relaxable;
++ unsigned int iteration;
++};
++
++struct avr32_section_data
++{
++ struct bfd_elf_section_data elf;
++ struct avr32_relax_data relax_data;
++};
++
++ /* Relax state definitions */
++
++#define PIC_MOV2_OPCODE 0xe0600000
++#define PIC_MOV2_MASK 0xe1e00000
++#define PIC_MOV2_RANGE_MIN (-1048576 * 4)
++#define PIC_MOV2_RANGE_MAX (1048575 * 4)
++#define PIC_MCALL_OPCODE 0xf0160000
++#define PIC_MCALL_MASK 0xffff0000
++#define PIC_MCALL_RANGE_MIN (-131072)
++#define PIC_MCALL_RANGE_MAX (131068)
++#define RCALL2_OPCODE 0xe0a00000
++#define RCALL2_MASK 0xe1ef0000
++#define RCALL2_RANGE_MIN (-2097152)
++#define RCALL2_RANGE_MAX (2097150)
++#define RCALL1_OPCODE 0xc00c0000
++#define RCALL1_MASK 0xf00c0000
++#define RCALL1_RANGE_MIN (-1024)
++#define RCALL1_RANGE_MAX (1022)
++#define PIC_LDW4_OPCODE 0xecf00000
++#define PIC_LDW4_MASK 0xfff00000
++#define PIC_LDW4_RANGE_MIN (-32768)
++#define PIC_LDW4_RANGE_MAX (32767)
++#define PIC_LDW3_OPCODE 0x6c000000
++#define PIC_LDW3_MASK 0xfe000000
++#define PIC_LDW3_RANGE_MIN (0)
++#define PIC_LDW3_RANGE_MAX (124)
++#define SUB5_PC_OPCODE 0xfec00000
++#define SUB5_PC_MASK 0xfff00000
++#define SUB5_PC_RANGE_MIN (-32768)
++#define SUB5_PC_RANGE_MAX (32767)
++#define NOPIC_MCALL_OPCODE 0xf01f0000
++#define NOPIC_MCALL_MASK 0xffff0000
++#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN
++#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX
++#define NOPIC_LDW4_OPCODE 0xfef00000
++#define NOPIC_LDW4_MASK 0xfff00000
++#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN
++#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX
++#define LDDPC_OPCODE 0x48000000
++#define LDDPC_MASK 0xf8000000
++#define LDDPC_RANGE_MIN 0
++#define LDDPC_RANGE_MAX 508
++
++#ifdef DHRYSTONE_FIX
++#define NOPIC_MOV2_OPCODE 0xe0600000
++#define NOPIC_MOV2_MASK 0xe1e00000
++#define NOPIC_MOV2_RANGE_MIN (-1048576)
++#define NOPIC_MOV2_RANGE_MAX (1048575)
++#define NOPIC_MOV1_OPCODE 0x30000000
++#define NOPIC_MOV1_MASK 0xf0000000
++#define NOPIC_MOV1_RANGE_MIN (-128)
++#define NOPIC_MOV1_RANGE_MAX (127)
++#endif
++
++/* Only brc2 variants with cond[3] == 0 is considered, since the
++ others are not relaxable. bral is a special case and is handled
++ separately. */
++#define BRC2_OPCODE 0xe0800000
++#define BRC2_MASK 0xe1e80000
++#define BRC2_RANGE_MIN (-2097152)
++#define BRC2_RANGE_MAX (2097150)
++#define BRC1_OPCODE 0xc0000000
++#define BRC1_MASK 0xf0080000
++#define BRC1_RANGE_MIN (-256)
++#define BRC1_RANGE_MAX (254)
++#define BRAL_OPCODE 0xe08f0000
++#define BRAL_MASK 0xe1ef0000
++#define BRAL_RANGE_MIN BRC2_RANGE_MIN
++#define BRAL_RANGE_MAX BRC2_RANGE_MAX
++#define RJMP_OPCODE 0xc0080000
++#define RJMP_MASK 0xf00c0000
++#define RJMP_RANGE_MIN (-1024)
++#define RJMP_RANGE_MAX (1022)
++
++/* Define a relax state using the GOT */
++#define RG(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++/* Define a relax state using the Constant Pool */
++#define RC(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++
++/* Define a relax state using pc-relative direct reference */
++#define RP(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++
++#ifdef DHRYSTONE_FIX
++/* Define a relax state using non-pc-relative direct reference */
++#define RD(id, dir, next, prev, r_type, opc, size) \
++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \
++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
++
++#endif
++
++/* Define a relax state that will be handled specially */
++#define RS(id, r_type, size) \
++ { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \
++ R_AVR32_##r_type, 0, 0, 0, 0, size }
++
++const struct relax_state relax_state[RS_MAX] = {
++ RS(NONE, NONE, 0),
++ RS(ALIGN, ALIGN, 0),
++ RS(CPENT, 32_CPENT, 4),
++
++ RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
++ RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
++ RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
++ RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
++
++ RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
++ RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
++ RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
++ RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
++
++ RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
++ RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
++ RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
++
++#ifdef DHRYSTONE_FIX
++ RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
++ RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
++ RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
++ RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
++ RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
++#else
++ RC(NOPIC_LDW4, NOPIC_SUB5, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
++ RC(NOPIC_LDDPC, NOPIC_SUB5, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
++ RP(NOPIC_SUB5, NONE, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
++#endif
++
++ RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
++ RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
++ RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
++ RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
++ RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
++ RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
++};
++
++static bfd_boolean
++avr32_elf_new_section_hook(bfd *abfd, asection *sec)
++{
++ struct avr32_section_data *sdata;
++
++ sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
++ if (!sdata)
++ return FALSE;
++
++ sec->used_by_bfd = sdata;
++ return _bfd_elf_new_section_hook(abfd, sec);
++}
++
++static struct avr32_relax_data *
++avr32_relax_data(asection *sec)
++{
++ struct avr32_section_data *sdata;
++
++ BFD_ASSERT(sec->used_by_bfd);
++
++ sdata = (struct avr32_section_data *)elf_section_data(sec);
++ return &sdata->relax_data;
++}
++
++ /* Link-time relaxation */
++
++static bfd_boolean
++avr32_elf_relax_section(bfd *abfd, asection *sec,
++ struct bfd_link_info *info, bfd_boolean *again);
++
++enum relax_pass_id {
++ RELAX_PASS_SIZE_FRAGS,
++ RELAX_PASS_MOVE_DATA,
++};
++
++/* Stolen from the xtensa port */
++static int
++internal_reloc_compare (const void *ap, const void *bp)
++{
++ const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
++ const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
++
++ if (a->r_offset != b->r_offset)
++ return (a->r_offset - b->r_offset);
++
++ /* We don't need to sort on these criteria for correctness,
++ but enforcing a more strict ordering prevents unstable qsort
++ from behaving differently with different implementations.
++ Without the code below we get correct but different results
++ on Solaris 2.7 and 2.8. We would like to always produce the
++ same results no matter the host. */
++
++ if (a->r_info != b->r_info)
++ return (a->r_info - b->r_info);
++
++ return (a->r_addend - b->r_addend);
++}
++
++static enum relax_state_id
++get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
++ const Elf_Internal_Rela *rela)
++{
++ bfd_byte *contents;
++ bfd_vma insn;
++ enum relax_state_id rs = RS_NONE;
++
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ return RS_ERROR;
++
++ insn = bfd_get_32(abfd, contents + rela->r_offset);
++ if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
++ rs = RS_RCALL2;
++ else if ((insn & BRAL_MASK) == BRAL_OPCODE)
++ /* Optimizing bral -> rjmp gets us into all kinds of
++ trouble with jump tables. Better not do it. */
++ rs = RS_NONE;
++ else if ((insn & BRC2_MASK) == BRC2_OPCODE)
++ rs = RS_BRC2;
++
++ release_contents(sec, contents);
++
++ return rs;
++}
++
++static enum relax_state_id
++get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
++ const Elf_Internal_Rela *rela)
++{
++ switch (ELF_R_TYPE(rela->r_info))
++ {
++ case R_AVR32_GOTCALL:
++ return RS_PIC_CALL;
++ case R_AVR32_GOT18SW:
++ return RS_PIC_MCALL;
++ case R_AVR32_LDA_GOT:
++ return RS_PIC_LDA;
++ case R_AVR32_GOT16S:
++ return RS_PIC_LDW4;
++ case R_AVR32_CPCALL:
++ return RS_NOPIC_MCALL;
++ case R_AVR32_16_CP:
++ return RS_NOPIC_LDW4;
++ case R_AVR32_9W_CP:
++ return RS_NOPIC_LDDPC;
++ case R_AVR32_ALIGN:
++ return RS_ALIGN;
++ case R_AVR32_32_CPENT:
++ return RS_CPENT;
++ case R_AVR32_22H_PCREL:
++ return get_pcrel22_relax_state(abfd, sec, info, rela);
++ case R_AVR32_9H_PCREL:
++ return RS_BRC1;
++ default:
++ return RS_NONE;
++ }
++}
++
++static bfd_boolean
++reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
++{
++ switch (ELF_R_TYPE(rela->r_info))
++ {
++ case R_AVR32_CPCALL:
++ case R_AVR32_16_CP:
++ case R_AVR32_9W_CP:
++ return TRUE;
++ default:
++ return FALSE;
++ }
++}
++
++static struct fragment *
++new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
++ struct avr32_relax_data *rd, enum relax_state_id state,
++ Elf_Internal_Rela *rela)
++{
++ struct fragment *frag;
++ bfd_size_type r_size;
++ bfd_vma r_offset;
++ unsigned int i = rd->frag_count;
++
++ BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
++
++ rd->frag_count++;
++ frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
++ if (!frag)
++ return NULL;
++ rd->frag = frag;
++
++ frag += i;
++ memset(frag, 0, sizeof(struct fragment));
++
++ if (state == RS_ALIGN)
++ r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
++ & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
++ else
++ r_size = relax_state[state].size;
++
++ if (rela)
++ r_offset = rela->r_offset;
++ else
++ r_offset = sec->size;
++
++ if (i == 0)
++ {
++ frag->offset = 0;
++ frag->size = r_offset + r_size;
++ }
++ else
++ {
++ frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
++ frag->size = r_offset + r_size - frag->offset;
++ }
++
++ if (state != RS_CPENT)
++ /* Make sure we don't discard this frag */
++ frag->refcount = 1;
++
++ frag->initial_state = frag->state = state;
++ frag->rela = rela;
++
++ return frag;
++}
++
++static struct fragment *
++find_frag(asection *sec, bfd_vma offset)
++{
++ struct fragment *first, *last;
++ struct avr32_relax_data *rd = avr32_relax_data(sec);
++
++ if (rd->frag_count == 0)
++ return NULL;
++
++ first = &rd->frag[0];
++ last = &rd->frag[rd->frag_count - 1];
++
++ /* This may be a reloc referencing the end of a section. The last
++ frag will never have a reloc associated with it, so its size will
++ never change, thus the offset adjustment of the last frag will
++ always be the same as the offset adjustment of the end of the
++ section. */
++ if (offset == sec->size)
++ {
++ BFD_ASSERT(last->offset + last->size == sec->size);
++ BFD_ASSERT(!last->rela);
++ return last;
++ }
++
++ while (first <= last)
++ {
++ struct fragment *mid;
++
++ mid = (last - first) / 2 + first;
++ if ((mid->offset + mid->size) <= offset)
++ first = mid + 1;
++ else if (mid->offset > offset)
++ last = mid - 1;
++ else
++ return mid;
++ }
++
++ return NULL;
++}
++
++/* Look through all relocs in a section and determine if any relocs
++ may be affected by relaxation in other sections. If so, allocate
++ an array of additional relocation data which links the affected
++ relocations to the frag(s) where the relaxation may occur.
++
++ This function also links cpool references to cpool entries and
++ increments the refcount of the latter when this happens. */
++
++static bfd_boolean
++allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
++ struct bfd_link_info *info)
++{
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Sym *isymbuf = NULL;
++ struct avr32_relax_data *rd;
++ unsigned int i;
++ bfd_boolean ret = FALSE;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ rd = avr32_relax_data(sec);
++
++ RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
++
++ for (i = 0; i < sec->reloc_count; i++)
++ {
++ Elf_Internal_Rela *rel = &relocs[i];
++ asection *sym_sec;
++ unsigned long r_symndx;
++ bfd_vma sym_value;
++
++ if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
++ && !reloc_is_cpool_ref(rel))
++ continue;
++
++ r_symndx = ELF_R_SYM(rel->r_info);
++
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ Elf_Internal_Sym *isym;
++
++ if (!isymbuf)
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ return FALSE;
++
++ isym = &isymbuf[r_symndx];
++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
++ sym_value = isym->st_value;
++ }
++ else
++ {
++ struct elf_link_hash_entry *h;
++
++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
++
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ if (h->root.type != bfd_link_hash_defined
++ && h->root.type != bfd_link_hash_defweak)
++ continue;
++
++ sym_sec = h->root.u.def.section;
++ sym_value = h->root.u.def.value;
++ }
++
++ if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
++ {
++ bfd_size_type size;
++ struct fragment *frag;
++
++ if (!rd->reloc_data)
++ {
++ size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
++ rd->reloc_data = bfd_zalloc(abfd, size);
++ if (!rd->reloc_data)
++ goto out;
++ }
++
++ RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
++ i, rel->r_offset, sym_value, rel->r_addend);
++
++ frag = find_frag(sym_sec, sym_value + rel->r_addend);
++ BFD_ASSERT(frag);
++ rd->reloc_data[i].add_frag = frag;
++
++ RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
++ frag->rela ? frag->rela->r_offset : sym_sec->size);
++
++ if (reloc_is_cpool_ref(rel))
++ {
++ BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
++ frag->refcount++;
++ }
++
++ if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
++ {
++ bfd_byte *contents;
++ bfd_signed_vma diff;
++
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ goto out;
++
++ diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
++ frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
++ BFD_ASSERT(frag);
++ rd->reloc_data[i].sub_frag = frag;
++
++ release_contents(sec, contents);
++ }
++ }
++ }
++
++ ret = TRUE;
++
++ out:
++ release_local_syms(abfd, isymbuf);
++ return ret;
++}
++
++static bfd_boolean
++global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED)
++{
++ struct fragment *frag;
++ asection *sec;
++
++ if (havr->root.root.type != bfd_link_hash_defined
++ && havr->root.root.type != bfd_link_hash_defweak)
++ return TRUE;
++
++ sec = havr->root.root.u.def.section;
++ if (bfd_is_const_section(sec)
++ || !avr32_relax_data(sec)->is_relaxable)
++ return TRUE;
++
++ frag = find_frag(sec, havr->root.root.u.def.value);
++ if (!frag)
++ {
++ unsigned int i;
++ struct avr32_relax_data *rd = avr32_relax_data(sec);
++
++ RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
++ sec->owner->filename, havr->root.root.root.string,
++ sec->name, havr->root.root.u.def.value, sec->size);
++ for (i = 0; i < rd->frag_count; i++)
++ RDBG(" %8lu - %8lu\n", rd->frag[i].offset,
++ rd->frag[i].offset + rd->frag[i].size);
++ }
++ BFD_ASSERT(frag);
++
++ havr->sym_frag = frag;
++ return TRUE;
++}
++
++static bfd_boolean
++analyze_relocations(struct bfd_link_info *info)
++{
++ bfd *abfd;
++ asection *sec;
++
++ /* Divide all relaxable sections into fragments */
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ {
++ if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
++ {
++ if (!(*info->callbacks->warning)
++ (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
++ return FALSE;
++ continue;
++ }
++
++ for (sec = abfd->sections; sec; sec = sec->next)
++ {
++ struct avr32_relax_data *rd;
++ struct fragment *frag;
++ Elf_Internal_Rela *relocs;
++ unsigned int i;
++ bfd_boolean ret = TRUE;
++
++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
++ continue;
++
++ rd = avr32_relax_data(sec);
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ return FALSE;
++
++ qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
++ internal_reloc_compare);
++
++ for (i = 0; i < sec->reloc_count; i++)
++ {
++ enum relax_state_id state;
++
++ ret = FALSE;
++ state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
++ if (state == RS_ERROR)
++ break;
++
++ if (state)
++ {
++ frag = new_frag(abfd, sec, rd, state, &relocs[i]);
++ if (!frag)
++ break;
++
++ pin_internal_relocs(sec, relocs);
++ rd->is_relaxable = TRUE;
++ }
++
++ ret = TRUE;
++ }
++
++ release_internal_relocs(sec, relocs);
++ if (!ret)
++ return ret;
++
++ if (rd->is_relaxable)
++ {
++ frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
++ if (!frag)
++ return FALSE;
++ }
++ }
++ }
++
++ /* Link each global symbol to the fragment where it's defined. */
++ elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
++
++ /* Do the same for local symbols. */
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ {
++ Elf_Internal_Sym *isymbuf, *isym;
++ struct fragment **local_sym_frag;
++ unsigned int i, sym_count;
++
++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
++ if (sym_count == 0)
++ continue;
++
++ local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
++ if (!local_sym_frag)
++ return FALSE;
++ elf_tdata(abfd)->local_sym_frag = local_sym_frag;
++
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ return FALSE;
++
++ for (i = 0; i < sym_count; i++)
++ {
++ struct avr32_relax_data *rd;
++ struct fragment *frag;
++ asection *sec;
++
++ isym = &isymbuf[i];
++
++ sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
++ if (!sec)
++ continue;
++
++ rd = avr32_relax_data(sec);
++ if (!rd->is_relaxable)
++ continue;
++
++ frag = find_frag(sec, isym->st_value);
++ BFD_ASSERT(frag);
++
++ local_sym_frag[i] = frag;
++ }
++
++ release_local_syms(abfd, isymbuf);
++ }
++
++ /* And again for relocs with addends and constant pool references */
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ for (sec = abfd->sections; sec; sec = sec->next)
++ {
++ Elf_Internal_Rela *relocs;
++ bfd_boolean ret;
++
++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
++ continue;
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ return FALSE;
++
++ ret = allocate_reloc_data(abfd, sec, relocs, info);
++
++ release_internal_relocs(sec, relocs);
++ if (ret == FALSE)
++ return ret;
++ }
++
++ return TRUE;
++}
++
++static bfd_boolean
++rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
++ bfd_vma symval, bfd_vma addr, struct got_entry *got,
++ struct avr32_reloc_data *ind_data,
++ bfd_signed_vma offset_adjust)
++{
++ bfd_signed_vma target = 0;
++
++ switch (rs->reftype)
++ {
++ case REF_ABSOLUTE:
++ target = symval;
++ break;
++ case REF_PCREL:
++ target = symval - addr;
++ break;
++ case REF_CPOOL:
++ /* cpool frags are always in the same section and always after
++ all frags referring to it. So it's always correct to add in
++ offset_adjust here. */
++ target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
++ + offset_adjust - frag->offset - frag->offset_adjust);
++ break;
++ case REF_GOT:
++ target = got->offset;
++ break;
++ default:
++ abort();
++ }
++
++ if (target >= rs->range_min && target <= rs->range_max)
++ return TRUE;
++ else
++ return FALSE;
++}
++
++static bfd_boolean
++avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct avr32_relax_data *rd;
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Rela *relocs = NULL;
++ Elf_Internal_Sym *isymbuf = NULL;
++ struct got_entry **local_got_ents;
++ struct fragment **local_sym_frag;
++ bfd_boolean ret = FALSE;
++ bfd_signed_vma delta = 0;
++ unsigned int i;
++
++ htab = avr32_elf_hash_table(info);
++ rd = avr32_relax_data(sec);
++
++ if (sec == htab->sgot)
++ {
++ RDBG("Relaxing GOT section (vma: 0x%lx)\n",
++ sec->output_section->vma + sec->output_offset);
++ if (assign_got_offsets(htab))
++ htab->repeat_pass = TRUE;
++ return TRUE;
++ }
++
++ if (!rd->is_relaxable)
++ return TRUE;
++
++ if (!sec->rawsize)
++ sec->rawsize = sec->size;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ goto out;
++
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ goto out;
++
++ local_got_ents = elf_local_got_ents(abfd);
++ local_sym_frag = elf_tdata(abfd)->local_sym_frag;
++
++ RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n",
++ abfd->filename, sec->name,
++ sec->output_section->vma + sec->output_offset, sec->size);
++
++ for (i = 0; i < rd->frag_count; i++)
++ {
++ struct fragment *frag = &rd->frag[i];
++ struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
++ const struct relax_state *state, *next_state;
++ struct fragment *target_frag = NULL;
++ asection *sym_sec = NULL;
++ Elf_Internal_Rela *rela;
++ struct got_entry *got;
++ bfd_vma symval, r_offset, addend, addr;
++ bfd_signed_vma size_adjust = 0, distance;
++ unsigned long r_symndx;
++ bfd_boolean defined = TRUE, dynamic = FALSE;
++ unsigned char sym_type;
++
++ frag->offset_adjust += delta;
++ state = next_state = &relax_state[frag->state];
++ rela = frag->rela;
++
++ BFD_ASSERT(state->id == frag->state);
++
++ RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
++ (frag->offset_adjust < 0)?'-':'+',
++ abs(frag->offset_adjust), state->name, state->size);
++
++ if (!rela)
++ {
++ RDBG(": no reloc, ignoring\n");
++ continue;
++ }
++
++ BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
++ BFD_ASSERT(state != RS_NONE);
++
++ r_offset = rela->r_offset + frag->offset_adjust;
++ addr = sec->output_section->vma + sec->output_offset + r_offset;
++
++ switch (frag->state)
++ {
++ case RS_ALIGN:
++ size_adjust = ((addr + (1 << rela->r_addend) - 1)
++ & ~((1 << rela->r_addend) - 1));
++ size_adjust -= (sec->output_section->vma + sec->output_offset
++ + frag->offset + frag->offset_adjust
++ + frag->size + frag->size_adjust);
++
++ RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
++ frag->size + frag->size_adjust + size_adjust);
++ break;
++
++ case RS_CPENT:
++ if (frag->refcount == 0 && frag->size_adjust == 0)
++ {
++ RDBG(": discarding frag\n");
++ size_adjust = -4;
++ }
++ else if (frag->refcount > 0 && frag->size_adjust < 0)
++ {
++ RDBG(": un-discarding frag\n");
++ size_adjust = 4;
++ }
++ break;
++
++ default:
++ if (rd->reloc_data)
++ r_data = &rd->reloc_data[frag->rela - relocs];
++
++ /* If this is a cpool reference, we want the symbol that the
++ cpool entry refers to, not the symbol for the cpool entry
++ itself, as we already know what frag it's in. */
++ if (relax_state[frag->initial_state].reftype == REF_CPOOL)
++ {
++ Elf_Internal_Rela *irela = r_data->add_frag->rela;
++
++ r_symndx = ELF_R_SYM(irela->r_info);
++ addend = irela->r_addend;
++
++ /* The constant pool must be in the same section as the
++ reloc referring to it. */
++ BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
++
++ ind_data = r_data;
++ r_data = &rd->reloc_data[irela - relocs];
++ }
++ else
++ {
++ r_symndx = ELF_R_SYM(rela->r_info);
++ addend = rela->r_addend;
++ }
++
++ /* Get the value of the symbol referred to by the reloc. */
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ Elf_Internal_Sym *isym;
++
++ isym = isymbuf + r_symndx;
++ symval = 0;
++
++ RDBG(" local sym %lu: ", r_symndx);
++
++ if (isym->st_shndx == SHN_UNDEF)
++ defined = FALSE;
++ else if (isym->st_shndx == SHN_ABS)
++ sym_sec = bfd_abs_section_ptr;
++ else if (isym->st_shndx == SHN_COMMON)
++ sym_sec = bfd_com_section_ptr;
++ else
++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
++
++ symval = isym->st_value;
++ sym_type = ELF_ST_TYPE(isym->st_info);
++ target_frag = local_sym_frag[r_symndx];
++
++ if (local_got_ents)
++ got = local_got_ents[r_symndx];
++ else
++ got = NULL;
++ }
++ else
++ {
++ /* Global symbol */
++ unsigned long index;
++ struct elf_link_hash_entry *h;
++ struct elf_avr32_link_hash_entry *havr;
++
++ index = r_symndx - symtab_hdr->sh_info;
++ h = elf_sym_hashes(abfd)[index];
++ BFD_ASSERT(h != NULL);
++
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ havr = (struct elf_avr32_link_hash_entry *)h;
++ got = h->got.glist;
++
++ symval = 0;
++
++ RDBG(" %s: ", h->root.root.string);
++
++ if (h->root.type != bfd_link_hash_defined
++ && h->root.type != bfd_link_hash_defweak)
++ {
++ RDBG("(undef)");
++ defined = FALSE;
++ }
++ else if ((info->shared && !info->symbolic && h->dynindx != -1)
++ || (htab->root.dynamic_sections_created
++ && h->def_dynamic && !h->def_regular))
++ {
++ RDBG("(dynamic)");
++ dynamic = TRUE;
++ sym_sec = h->root.u.def.section;
++ }
++ else
++ {
++ sym_sec = h->root.u.def.section;
++ symval = h->root.u.def.value;
++ target_frag = havr->sym_frag;
++ }
++
++ sym_type = h->type;
++ }
++
++ /* Thanks to elf32-ppc for this one. */
++ if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
++ {
++ /* At this stage in linking, no SEC_MERGE symbol has been
++ adjusted, so all references to such symbols need to be
++ passed through _bfd_merged_section_offset. (Later, in
++ relocate_section, all SEC_MERGE symbols *except* for
++ section symbols have been adjusted.)
++
++ SEC_MERGE sections are not relaxed by us, as they
++ shouldn't contain any code. */
++
++ BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
++
++ /* gas may reduce relocations against symbols in SEC_MERGE
++ sections to a relocation against the section symbol when
++ the original addend was zero. When the reloc is against
++ a section symbol we should include the addend in the
++ offset passed to _bfd_merged_section_offset, since the
++ location of interest is the original symbol. On the
++ other hand, an access to "sym+addend" where "sym" is not
++ a section symbol should not include the addend; Such an
++ access is presumed to be an offset from "sym"; The
++ location of interest is just "sym". */
++ RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
++ (sym_type == STT_SECTION)?"section":"not section",
++ sym_sec->output_section->vma + sym_sec->output_offset,
++ symval, addend);
++
++ if (sym_type == STT_SECTION)
++ symval += addend;
++
++ symval = (_bfd_merged_section_offset
++ (abfd, &sym_sec,
++ elf_section_data(sym_sec)->sec_info, symval));
++
++ if (sym_type != STT_SECTION)
++ symval += addend;
++ }
++ else
++ symval += addend;
++
++ if (defined && !dynamic)
++ {
++ RDBG("0x%lx+0x%lx",
++ sym_sec->output_section->vma + sym_sec->output_offset,
++ symval);
++ symval += sym_sec->output_section->vma + sym_sec->output_offset;
++ }
++
++ if (r_data && r_data->add_frag)
++ /* If the add_frag pointer is set, it means that this reloc
++ has an addend that may be affected by relaxation. */
++ target_frag = r_data->add_frag;
++
++ if (target_frag)
++ {
++ symval += target_frag->offset_adjust;
++
++ /* If target_frag comes after this frag in the same
++ section, we should assume that it will be moved by
++ the same amount we are. */
++ if ((target_frag - rd->frag) < (int)rd->frag_count
++ && target_frag > frag)
++ symval += delta;
++ }
++
++ distance = symval - addr;
++
++ /* First, try to make a direct reference. If the symbol is
++ dynamic or undefined, we must take care not to change its
++ reference type, that is, we can't make it direct.
++
++ Also, it seems like some sections may actually be resized
++ after the relaxation code is done, so we can't really
++ trust that our "distance" is correct. There's really no
++ easy solution to this problem, so we'll just disallow
++ direct references to SEC_DATA sections.
++
++ Oh, and .bss isn't actually SEC_DATA, so we disallow
++ !SEC_HAS_CONTENTS as well. */
++ if (!dynamic && defined
++#ifndef DHRYSTONE_FIX
++ && !(sym_sec->flags & SEC_DATA)
++#endif
++ && (sym_sec->flags & SEC_HAS_CONTENTS)
++ && next_state->direct)
++ {
++ next_state = &relax_state[next_state->direct];
++ RDBG(" D-> %s", next_state->name);
++ }
++
++ /* Iterate backwards until we find a state that fits. */
++ while (next_state->prev
++ && !rs_is_good_enough(next_state, frag, symval, addr,
++ got, ind_data, delta))
++ {
++ next_state = &relax_state[next_state->prev];
++ RDBG(" P-> %s", next_state->name);
++ }
++
++ /* Then try to find the best possible state. */
++ while (next_state->next)
++ {
++ const struct relax_state *candidate;
++
++ candidate = &relax_state[next_state->next];
++ if (!rs_is_good_enough(candidate, frag, symval, addr, got,
++ ind_data, delta))
++ break;
++
++ next_state = candidate;
++ RDBG(" N-> %s", next_state->name);
++ }
++
++ RDBG(" [size %ld]\n", next_state->size);
++
++ BFD_ASSERT(next_state->id);
++ BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
++
++ size_adjust = next_state->size - state->size;
++
++ /* There's a theoretical possibility that shrinking one frag
++ may cause another to grow, which may cause the first one to
++ grow as well, and we're back where we started. Avoid this
++ scenario by disallowing a frag that has grown to ever
++ shrink again. */
++ if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
++ {
++ if (frag->has_grown)
++ next_state = state;
++ else
++ unref_got_entry(htab, got);
++ }
++ else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
++ {
++ ref_got_entry(htab, got);
++ frag->has_grown = TRUE;
++ }
++ else if (state->reftype == REF_CPOOL
++ && next_state->reftype != REF_CPOOL)
++ {
++ if (frag->has_grown)
++ next_state = state;
++ else
++ ind_data->add_frag->refcount--;
++ }
++ else if (state->reftype != REF_CPOOL
++ && next_state->reftype == REF_CPOOL)
++ {
++ ind_data->add_frag->refcount++;
++ frag->has_grown = TRUE;
++ }
++ else
++ {
++ if (frag->has_grown && size_adjust < 0)
++ next_state = state;
++ else if (size_adjust > 0)
++ frag->has_grown = TRUE;
++ }
++
++ size_adjust = next_state->size - state->size;
++ frag->state = next_state->id;
++
++ break;
++ }
++
++ if (size_adjust)
++ htab->repeat_pass = TRUE;
++
++ frag->size_adjust += size_adjust;
++ sec->size += size_adjust;
++ delta += size_adjust;
++
++ BFD_ASSERT((frag->offset + frag->offset_adjust
++ + frag->size + frag->size_adjust)
++ == (frag[1].offset + frag[1].offset_adjust + delta));
++ }
++
++ ret = TRUE;
++
++ out:
++ release_local_syms(abfd, isymbuf);
++ release_internal_relocs(sec, relocs);
++ return ret;
++}
++
++static bfd_boolean
++adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
++ struct bfd_link_info *info ATTRIBUTE_UNUSED)
++{
++ struct elf_link_hash_entry *h = &havr->root;
++
++ if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
++ || h->root.type == bfd_link_hash_defweak))
++ {
++ RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
++ h->root.root.string, h->root.u.def.value,
++ h->root.u.def.value + havr->sym_frag->offset_adjust);
++ h->root.u.def.value += havr->sym_frag->offset_adjust;
++ }
++ return TRUE;
++}
++
++static bfd_boolean
++adjust_syms(struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ bfd *abfd;
++
++ htab = avr32_elf_hash_table(info);
++ elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
++
++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
++ {
++ Elf_Internal_Sym *isymbuf;
++ struct fragment **local_sym_frag, *frag;
++ unsigned int i, sym_count;
++
++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
++ if (sym_count == 0)
++ continue;
++
++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
++ if (!isymbuf)
++ return FALSE;
++
++ local_sym_frag = elf_tdata(abfd)->local_sym_frag;
++
++ for (i = 0; i < sym_count; i++)
++ {
++ frag = local_sym_frag[i];
++ if (frag)
++ {
++ RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
++ abfd->filename, i, isymbuf[i].st_value,
++ isymbuf[i].st_value + frag->offset_adjust);
++ isymbuf[i].st_value += frag->offset_adjust;
++ }
++ }
++
++ release_local_syms(abfd, isymbuf);
++ }
++
++ htab->symbols_adjusted = TRUE;
++ return TRUE;
++}
++
++static bfd_boolean
++adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
++{
++ struct avr32_relax_data *rd;
++ Elf_Internal_Rela *relocs;
++ Elf_Internal_Shdr *symtab_hdr;
++ unsigned int i;
++ bfd_boolean ret = FALSE;
++
++ rd = avr32_relax_data(sec);
++ if (!rd->reloc_data)
++ return TRUE;
++
++ RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
++ sec->reloc_count);
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ return FALSE;
++
++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
++
++ for (i = 0; i < sec->reloc_count; i++)
++ {
++ Elf_Internal_Rela *rela = &relocs[i];
++ struct avr32_reloc_data *r_data = &rd->reloc_data[i];
++ struct fragment *sym_frag;
++ unsigned long r_symndx;
++
++ if (r_data->add_frag)
++ {
++ r_symndx = ELF_R_SYM(rela->r_info);
++
++ if (r_symndx < symtab_hdr->sh_info)
++ sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
++ else
++ {
++ struct elf_link_hash_entry *h;
++
++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
++
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ BFD_ASSERT(h->root.type == bfd_link_hash_defined
++ || h->root.type == bfd_link_hash_defweak);
++
++ sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
++ }
++
++ RDBG(" addend: 0x%08lx -> 0x%08lx\n",
++ rela->r_addend,
++ rela->r_addend + r_data->add_frag->offset_adjust
++ - (sym_frag ? sym_frag->offset_adjust : 0));
++
++ /* If this is against a section symbol, we won't find any
++ sym_frag, so we'll just adjust the addend. */
++ rela->r_addend += r_data->add_frag->offset_adjust;
++ if (sym_frag)
++ rela->r_addend -= sym_frag->offset_adjust;
++
++ if (r_data->sub_frag)
++ {
++ bfd_byte *contents;
++ bfd_signed_vma diff;
++
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ goto out;
++
++ /* I realize now that sub_frag is misnamed. It's
++ actually add_frag which is subtracted in this
++ case... */
++ diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
++ diff += (r_data->sub_frag->offset_adjust
++ - r_data->add_frag->offset_adjust);
++ bfd_put_32(abfd, diff, contents + rela->r_offset);
++
++ RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
++
++ release_contents(sec, contents);
++ }
++ }
++ else
++ BFD_ASSERT(!r_data->sub_frag);
++ }
++
++ ret = TRUE;
++
++ out:
++ release_internal_relocs(sec, relocs);
++ return ret;
++}
++
++static bfd_boolean
++avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct avr32_relax_data *rd;
++ struct fragment *frag, *fragend;
++ Elf_Internal_Rela *relocs = NULL;
++ bfd_byte *contents = NULL;
++ unsigned int i;
++ bfd_boolean ret = FALSE;
++
++ htab = avr32_elf_hash_table(info);
++ rd = avr32_relax_data(sec);
++
++ if (!htab->symbols_adjusted)
++ if (!adjust_syms(info))
++ return FALSE;
++
++ if (rd->is_relaxable)
++ {
++ /* Resize the section first, so that we can be sure that enough
++ memory is allocated in case the section has grown. */
++ if (sec->size > sec->rawsize
++ && elf_section_data(sec)->this_hdr.contents)
++ {
++ /* We must not use cached data if the section has grown. */
++ free(elf_section_data(sec)->this_hdr.contents);
++ elf_section_data(sec)->this_hdr.contents = NULL;
++ }
++
++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
++ if (!relocs)
++ goto out;
++ contents = retrieve_contents(abfd, sec, info->keep_memory);
++ if (!contents)
++ goto out;
++
++ fragend = rd->frag + rd->frag_count;
++
++ RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
++ abfd->filename, sec->name, relocs, contents);
++
++ /* First, move the data into place. We must take care to move
++ frags in the right order so that we don't accidentally
++ overwrite parts of the next frag. */
++ for (frag = rd->frag; frag < fragend; frag++)
++ {
++ RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
++ frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
++ abs(frag->offset_adjust),
++ frag->size, frag->size_adjust >= 0 ? '+' : '-',
++ abs(frag->size_adjust));
++ if (frag->offset_adjust > 0)
++ {
++ struct fragment *prev = frag - 1;
++ struct fragment *last;
++
++ for (last = frag; last < fragend && last->offset_adjust > 0;
++ last++) ;
++
++ if (last == fragend)
++ last--;
++
++ for (frag = last; frag != prev; frag--)
++ {
++ if (frag->offset_adjust
++ && frag->size + frag->size_adjust > 0)
++ {
++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
++ frag->offset, frag->offset + frag->offset_adjust,
++ frag->size + frag->size_adjust);
++ memmove(contents + frag->offset + frag->offset_adjust,
++ contents + frag->offset,
++ frag->size + frag->size_adjust);
++ }
++ }
++ frag = last;
++ }
++ else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
++ {
++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
++ frag->offset, frag->offset + frag->offset_adjust,
++ frag->size + frag->size_adjust);
++ memmove(contents + frag->offset + frag->offset_adjust,
++ contents + frag->offset,
++ frag->size + frag->size_adjust);
++ }
++ }
++
++ i = 0;
++
++ for (frag = rd->frag; frag < fragend; frag++)
++ {
++ const struct relax_state *state, *istate;
++ struct avr32_reloc_data *r_data = NULL;
++
++ istate = &relax_state[frag->initial_state];
++ state = &relax_state[frag->state];
++
++ if (rd->reloc_data)
++ r_data = &rd->reloc_data[frag->rela - relocs];
++
++ BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
++ BFD_ASSERT(state->reftype != REF_CPOOL
++ || r_data->add_frag->refcount > 0);
++
++ if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
++ {
++ struct fragment *ifrag;
++
++ /* An indirect reference through the cpool has been
++ converted to a direct reference. We must update the
++ reloc to point to the symbol itself instead of the
++ constant pool entry. The reloc type will be updated
++ later. */
++ ifrag = r_data->add_frag;
++ frag->rela->r_info = ifrag->rela->r_info;
++ frag->rela->r_addend = ifrag->rela->r_addend;
++
++ /* Copy the reloc data so the addend will be adjusted
++ correctly later. */
++ *r_data = rd->reloc_data[ifrag->rela - relocs];
++ }
++
++ /* Move all relocs covered by this frag. */
++ if (frag->rela)
++ BFD_ASSERT(&relocs[i] <= frag->rela);
++ else
++ BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
++
++ if (frag == rd->frag)
++ BFD_ASSERT(i == 0);
++ else
++ BFD_ASSERT(&relocs[i] > frag[-1].rela);
++
++ /* If non-null, frag->rela is the last relocation in the
++ fragment. frag->rela can only be null in the last
++ fragment, so in that case, we'll just do the rest. */
++ for (; (i < sec->reloc_count
++ && (!frag->rela || &relocs[i] <= frag->rela)); i++)
++ {
++ RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
++ relocs[i].r_offset + frag->offset_adjust);
++ relocs[i].r_offset += frag->offset_adjust;
++ }
++
++ if (frag->refcount == 0)
++ {
++ /* If this frag is to be discarded, make sure we won't
++ relocate it later on. */
++ BFD_ASSERT(frag->state == RS_CPENT);
++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
++ R_AVR32_NONE);
++ }
++ else if (frag->state == RS_ALIGN)
++ {
++ bfd_vma addr, addr_end;
++
++ addr = frag->rela->r_offset;
++ addr_end = (frag->offset + frag->offset_adjust
++ + frag->size + frag->size_adjust);
++
++ /* If the section is executable, insert NOPs.
++ Otherwise, insert zeroes. */
++ if (sec->flags & SEC_CODE)
++ {
++ if (addr & 1)
++ {
++ bfd_put_8(abfd, 0, contents + addr);
++ addr++;
++ }
++
++ BFD_ASSERT(!((addr_end - addr) & 1));
++
++ while (addr < addr_end)
++ {
++ bfd_put_16(abfd, NOP_OPCODE, contents + addr);
++ addr += 2;
++ }
++ }
++ else
++ memset(contents + addr, 0, addr_end - addr);
++ }
++ else if (state->opcode_mask)
++ {
++ bfd_vma insn;
++
++ /* Update the opcode and the relocation type unless it's a
++ "special" relax state (i.e. RS_NONE, RS_ALIGN or
++ RS_CPENT.), in which case the opcode mask is zero. */
++ insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
++ insn &= ~state->opcode_mask;
++ insn |= state->opcode;
++ RDBG(" 0x%lx: inserting insn %08lx\n",
++ frag->rela->r_offset, insn);
++ bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
++
++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
++ state->r_type);
++ }
++
++ if ((frag + 1) == fragend)
++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
++ + frag->size_adjust) == sec->size);
++ else
++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
++ + frag->size_adjust)
++ == (frag[1].offset + frag[1].offset_adjust));
++ }
++ }
++
++ /* Adjust reloc addends and DIFF32 differences */
++ if (!adjust_relocs(abfd, sec, info))
++ return FALSE;
++
++ ret = TRUE;
++
++ out:
++ release_contents(sec, contents);
++ release_internal_relocs(sec, relocs);
++ return ret;
++}
++
++static bfd_boolean
++avr32_elf_relax_section(bfd *abfd, asection *sec,
++ struct bfd_link_info *info, bfd_boolean *again)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct avr32_relax_data *rd;
++
++ *again = FALSE;
++ if (info->relocatable)
++ return TRUE;
++
++ htab = avr32_elf_hash_table(info);
++ if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
++ && sec != htab->sgot)
++ return TRUE;
++
++ if (!htab->relocations_analyzed)
++ {
++ if (!analyze_relocations(info))
++ return FALSE;
++ htab->relocations_analyzed = TRUE;
++ }
++
++ rd = avr32_relax_data(sec);
++
++ if (rd->iteration != htab->relax_iteration)
++ {
++ if (!htab->repeat_pass)
++ htab->relax_pass++;
++ htab->relax_iteration++;
++ htab->repeat_pass = FALSE;
++ }
++
++ rd->iteration++;
++
++ switch (htab->relax_pass)
++ {
++ case RELAX_PASS_SIZE_FRAGS:
++ if (!avr32_size_frags(abfd, sec, info))
++ return FALSE;
++ *again = TRUE;
++ break;
++ case RELAX_PASS_MOVE_DATA:
++ if (!avr32_move_data(abfd, sec, info))
++ return FALSE;
++ break;
++ }
++
++ return TRUE;
++}
++
++
++/* Relocation */
++
++static bfd_reloc_status_type
++avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
++ bfd_signed_vma relocation, reloc_howto_type *howto);
++static bfd_reloc_status_type
++avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
++ asection *input_section, bfd_byte *contents,
++ Elf_Internal_Rela *rel, bfd_vma value);
++static bfd_boolean
++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
++ bfd *input_bfd, asection *input_section,
++ bfd_byte *contents, Elf_Internal_Rela *relocs,
++ Elf_Internal_Sym *local_syms,
++ asection **local_sections);
++
++
++#define symbol_address(symbol) \
++ symbol->value + symbol->section->output_section->vma \
++ + symbol->section->output_offset
++
++#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \
++ do \
++ { \
++ unsigned long x; \
++ x = bfd_get_##size (abfd, data + reloc_entry->address); \
++ x &= ~reloc_entry->howto->dst_mask; \
++ x |= field & reloc_entry->howto->dst_mask; \
++ bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \
++ } \
++ while(0)
++
++static bfd_reloc_status_type
++avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
++ Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
++ bfd_signed_vma relocation,
++ reloc_howto_type *howto)
++{
++ bfd_vma reloc_u;
++
++ /* We take "complain_overflow_dont" to mean "don't complain on
++ alignment either". This way, we don't have to special-case
++ R_AVR32_HI16 */
++ if (howto->complain_on_overflow == complain_overflow_dont)
++ return bfd_reloc_ok;
++
++ /* Check if the value is correctly aligned */
++ if (relocation & ((1 << howto->rightshift) - 1))
++ {
++ RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, relocation, howto->rightshift);
++ return bfd_reloc_overflow;
++ }
++
++ /* Now, get rid of the unnecessary bits */
++ relocation >>= howto->rightshift;
++ reloc_u = (bfd_vma)relocation;
++
++ switch (howto->complain_on_overflow)
++ {
++ case complain_overflow_unsigned:
++ case complain_overflow_bitfield:
++ if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
++ {
++ RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, reloc_u, howto->bitsize);
++ RDBG("reloc vma: 0x%lx\n",
++ sec->output_section->vma + sec->output_offset + rela->r_offset);
++
++ return bfd_reloc_overflow;
++ }
++ break;
++ case complain_overflow_signed:
++ if (relocation > (1 << (howto->bitsize - 1)) - 1)
++ {
++ RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, reloc_u, howto->bitsize);
++ RDBG("reloc vma: 0x%lx\n",
++ sec->output_section->vma + sec->output_offset + rela->r_offset);
++
++ return bfd_reloc_overflow;
++ }
++ if (relocation < -(1 << (howto->bitsize - 1)))
++ {
++ RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
++ sec->owner->filename, sec->name, rela->r_offset,
++ howto->name, -relocation, howto->bitsize);
++ RDBG("reloc vma: 0x%lx\n",
++ sec->output_section->vma + sec->output_offset + rela->r_offset);
++
++ return bfd_reloc_overflow;
++ }
++ break;
++ default:
++ abort();
++ }
++
++ return bfd_reloc_ok;
++}
++
++
++static bfd_reloc_status_type
++avr32_final_link_relocate(reloc_howto_type *howto,
++ bfd *input_bfd,
++ asection *input_section,
++ bfd_byte *contents,
++ Elf_Internal_Rela *rel,
++ bfd_vma value)
++{
++ bfd_vma field;
++ bfd_vma relocation;
++ bfd_reloc_status_type status;
++ bfd_byte *p = contents + rel->r_offset;
++ unsigned long x;
++
++ pr_debug(" (6b) final link relocate\n");
++
++ /* Sanity check the address */
++ if (rel->r_offset > input_section->size)
++ {
++ (*_bfd_error_handler)
++ ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
++ input_bfd, input_section, rel->r_offset, input_section->size);
++ return bfd_reloc_outofrange;
++ }
++
++ relocation = value + rel->r_addend;
++
++ if (howto->pc_relative)
++ {
++ bfd_vma addr;
++
++ addr = input_section->output_section->vma
++ + input_section->output_offset + rel->r_offset;
++ addr &= ~0UL << howto->rightshift;
++ relocation -= addr;
++ }
++
++ switch (ELF32_R_TYPE(rel->r_info))
++ {
++ case R_AVR32_16N_PCREL:
++ /* sub reg, pc, . - (sym + addend) */
++ relocation = -relocation;
++ break;
++ }
++
++ status = avr32_check_reloc_value(input_section, rel, relocation, howto);
++
++ relocation >>= howto->rightshift;
++ if (howto->bitsize == 21)
++ field = (relocation & 0xffff)
++ | ((relocation & 0x10000) << 4)
++ | ((relocation & 0x1e0000) << 8);
++ else if (howto->bitsize == 12)
++ field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
++ else if (howto->bitsize == 10)
++ field = ((relocation & 0xff) << 4)
++ | ((relocation & 0x300) >> 8);
++ else
++ field = relocation << howto->bitpos;
++
++ switch (howto->size)
++ {
++ case 0:
++ x = bfd_get_8 (input_bfd, p);
++ x &= ~howto->dst_mask;
++ x |= field & howto->dst_mask;
++ bfd_put_8 (input_bfd, (bfd_vma) x, p);
++ break;
++ case 1:
++ x = bfd_get_16 (input_bfd, p);
++ x &= ~howto->dst_mask;
++ x |= field & howto->dst_mask;
++ bfd_put_16 (input_bfd, (bfd_vma) x, p);
++ break;
++ case 2:
++ x = bfd_get_32 (input_bfd, p);
++ x &= ~howto->dst_mask;
++ x |= field & howto->dst_mask;
++ bfd_put_32 (input_bfd, (bfd_vma) x, p);
++ break;
++ default:
++ abort();
++ }
++
++ return status;
++}
++
++/* (6) Apply relocations to the normal (non-dynamic) sections */
++
++static bfd_boolean
++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
++ bfd *input_bfd, asection *input_section,
++ bfd_byte *contents, Elf_Internal_Rela *relocs,
++ Elf_Internal_Sym *local_syms,
++ asection **local_sections)
++{
++ struct elf_avr32_link_hash_table *htab;
++ Elf_Internal_Shdr *symtab_hdr;
++ Elf_Internal_Rela *rel, *relend;
++ struct elf_link_hash_entry **sym_hashes;
++ struct got_entry **local_got_ents;
++ asection *sgot;
++ asection *srelgot;
++
++ pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
++ input_bfd->filename, input_section->name, input_section->size);
++
++ /* If we're doing a partial link, we don't have to do anything since
++ we're using RELA relocations */
++ if (info->relocatable)
++ return TRUE;
++
++ htab = avr32_elf_hash_table(info);
++ symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
++ sym_hashes = elf_sym_hashes(input_bfd);
++ local_got_ents = elf_local_got_ents(input_bfd);
++ sgot = htab->sgot;
++ srelgot = htab->srelgot;
++
++ relend = relocs + input_section->reloc_count;
++ for (rel = relocs; rel < relend; rel++)
++ {
++ unsigned long r_type, r_symndx;
++ reloc_howto_type *howto;
++ Elf_Internal_Sym *sym = NULL;
++ struct elf_link_hash_entry *h = NULL;
++ asection *sec = NULL;
++ bfd_vma value;
++ bfd_vma offset;
++ bfd_reloc_status_type status;
++
++ r_type = ELF32_R_TYPE(rel->r_info);
++ r_symndx = ELF32_R_SYM(rel->r_info);
++
++ if (r_type == R_AVR32_NONE
++ || r_type == R_AVR32_ALIGN
++ || r_type == R_AVR32_DIFF32
++ || r_type == R_AVR32_DIFF16
++ || r_type == R_AVR32_DIFF8)
++ continue;
++
++ /* Sanity check */
++ if (r_type > R_AVR32_max)
++ {
++ bfd_set_error(bfd_error_bad_value);
++ return FALSE;
++ }
++
++ howto = &elf_avr32_howto_table[r_type];
++
++ if (r_symndx < symtab_hdr->sh_info)
++ {
++ sym = local_syms + r_symndx;
++ sec = local_sections[r_symndx];
++
++ pr_debug(" (6a) processing %s against local symbol %lu\n",
++ howto->name, r_symndx);
++
++ /* The following function changes rel->r_addend behind our back. */
++ value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
++ }
++ else
++ {
++ if (sym_hashes == NULL)
++ return FALSE;
++
++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
++
++ pr_debug(" (6a) processing %s against symbol %s\n",
++ howto->name, h->root.root.string);
++
++ if (h->root.type == bfd_link_hash_defined
++ || h->root.type == bfd_link_hash_defweak)
++ {
++ bfd_boolean dyn;
++
++ dyn = htab->root.dynamic_sections_created;
++ sec = h->root.u.def.section;
++
++ if (sec->output_section)
++ value = (h->root.u.def.value
++ + sec->output_section->vma
++ + sec->output_offset);
++ else
++ value = h->root.u.def.value;
++ }
++ else if (h->root.type == bfd_link_hash_undefweak)
++ value = 0;
++ else if (info->unresolved_syms_in_objects == RM_IGNORE
++ && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
++ value = 0;
++ else
++ {
++ bfd_boolean err;
++ err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
++ || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
++ if (!info->callbacks->undefined_symbol
++ (info, h->root.root.string, input_bfd,
++ input_section, rel->r_offset, err))
++ return FALSE;
++ value = 0;
++ }
++
++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
++ }
++
++ switch (r_type)
++ {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ case R_AVR32_GOT7UW:
++ case R_AVR32_LDA_GOT:
++ case R_AVR32_GOTCALL:
++ BFD_ASSERT(sgot != NULL);
++
++ if (h != NULL)
++ {
++ BFD_ASSERT(h->got.glist->refcount > 0);
++ offset = h->got.glist->offset;
++
++ BFD_ASSERT(offset < sgot->size);
++ if (!elf_hash_table(info)->dynamic_sections_created
++ || (h->def_regular
++ && (!info->shared
++ || info->symbolic
++ || h->dynindx == -1)))
++ {
++ /* This is actually a static link, or it is a
++ -Bsymbolic link and the symbol is defined
++ locally, or the symbol was forced to be local. */
++ bfd_put_32(output_bfd, value, sgot->contents + offset);
++ }
++ }
++ else
++ {
++ BFD_ASSERT(local_got_ents &&
++ local_got_ents[r_symndx]->refcount > 0);
++ offset = local_got_ents[r_symndx]->offset;
++
++ /* Local GOT entries don't have relocs. If this is a
++ shared library, the dynamic linker will add the load
++ address to the initial value at startup. */
++ BFD_ASSERT(offset < sgot->size);
++ pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
++ offset, value);
++ bfd_put_32 (output_bfd, value, sgot->contents + offset);
++ }
++
++ value = sgot->output_offset + offset;
++ pr_debug("GOT reference: New value %lx\n", value);
++ break;
++
++ case R_AVR32_GOTPC:
++ /* This relocation type is for constant pool entries used in
++ the calculation "Rd = PC - (PC - GOT)", where the
++ constant pool supplies the constant (PC - GOT)
++ offset. The symbol value + addend indicates where the
++ value of PC is taken. */
++ value -= sgot->output_section->vma;
++ break;
++
++ case R_AVR32_32_PCREL:
++ /* We must adjust r_offset to account for discarded data in
++ the .eh_frame section. This is probably not the right
++ way to do this, since AFAICS all other architectures do
++ it some other way. I just can't figure out how... */
++ {
++ bfd_vma r_offset;
++
++ r_offset = _bfd_elf_section_offset(output_bfd, info,
++ input_section,
++ rel->r_offset);
++ if (r_offset == (bfd_vma)-1
++ || r_offset == (bfd_vma)-2)
++ continue;
++ rel->r_offset = r_offset;
++ }
++ break;
++
++ case R_AVR32_32:
++ /* We need to emit a run-time relocation in the following cases:
++ - we're creating a shared library
++ - the symbol is not defined in any regular objects
++
++ Of course, sections that aren't going to be part of the
++ run-time image will not get any relocs, and undefined
++ symbols won't have any either (only weak undefined
++ symbols should get this far). */
++ if ((info->shared
++ || (elf_hash_table(info)->dynamic_sections_created
++ && h != NULL
++ && h->def_dynamic
++ && !h->def_regular))
++ && r_symndx != 0
++ && (input_section->flags & SEC_ALLOC))
++ {
++ Elf_Internal_Rela outrel;
++ bfd_byte *loc;
++ bfd_boolean skip, relocate;
++ struct elf_avr32_link_hash_entry *avrh;
++
++ pr_debug("Going to generate dynamic reloc...\n");
++
++ skip = FALSE;
++ relocate = FALSE;
++
++ outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
++ input_section,
++ rel->r_offset);
++ if (outrel.r_offset == (bfd_vma)-1)
++ skip = TRUE;
++ else if (outrel.r_offset == (bfd_vma)-2)
++ skip = TRUE, relocate = TRUE;
++
++ outrel.r_offset += (input_section->output_section->vma
++ + input_section->output_offset);
++
++ pr_debug(" ... offset %lx, dynindx %ld\n",
++ outrel.r_offset, h ? h->dynindx : -1);
++
++ if (skip)
++ memset(&outrel, 0, sizeof(outrel));
++ else
++ {
++ avrh = (struct elf_avr32_link_hash_entry *)h;
++ /* h->dynindx may be -1 if this symbol was marked to
++ become local. */
++ if (h == NULL
++ || ((info->symbolic || h->dynindx == -1)
++ && h->def_regular))
++ {
++ relocate = TRUE;
++ outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
++ outrel.r_addend = value + rel->r_addend;
++ pr_debug(" ... R_AVR32_RELATIVE\n");
++ }
++ else
++ {
++ BFD_ASSERT(h->dynindx != -1);
++ relocate = TRUE;
++ outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
++ outrel.r_addend = rel->r_addend;
++ pr_debug(" ... R_AVR32_GLOB_DAT\n");
++ }
++ }
++
++ pr_debug("srelgot reloc_count: %d, size %lu\n",
++ srelgot->reloc_count, srelgot->size);
++
++ loc = srelgot->contents;
++ loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
++ bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
++
++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
++ <= srelgot->size);
++
++ if (!relocate)
++ continue;
++ }
++ break;
++ }
++
++ status = avr32_final_link_relocate(howto, input_bfd, input_section,
++ contents, rel, value);
++
++ switch (status)
++ {
++ case bfd_reloc_ok:
++ break;
++
++ case bfd_reloc_overflow:
++ {
++ const char *name;
++
++ if (h != NULL)
++ name = h->root.root.string;
++ else
++ {
++ name = bfd_elf_string_from_elf_section(input_bfd,
++ symtab_hdr->sh_link,
++ sym->st_name);
++ if (name == NULL)
++ return FALSE;
++ if (*name == '\0')
++ name = bfd_section_name(input_bfd, sec);
++ }
++ if (!((*info->callbacks->reloc_overflow)
++ (info, (h ? &h->root : NULL), name, howto->name,
++ rel->r_addend, input_bfd, input_section, rel->r_offset)))
++ return FALSE;
++ }
++ break;
++
++ case bfd_reloc_outofrange:
++ default:
++ abort();
++ }
++ }
++
++ return TRUE;
++}
++
++
++/* Additional processing of dynamic sections after relocation */
++
++static bfd_boolean
++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
++ struct elf_link_hash_entry *h,
++ Elf_Internal_Sym *sym);
++static bfd_boolean
++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
++
++
++/* (7) Initialize the contents of a dynamic symbol and/or emit
++ relocations for it */
++
++static bfd_boolean
++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
++ struct elf_link_hash_entry *h,
++ Elf_Internal_Sym *sym)
++{
++ struct elf_avr32_link_hash_table *htab;
++ struct got_entry *got;
++
++ pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
++
++ htab = avr32_elf_hash_table(info);
++ got = h->got.glist;
++
++ if (got && got->refcount > 0)
++ {
++ asection *sgot;
++ asection *srelgot;
++ Elf_Internal_Rela rel;
++ bfd_byte *loc;
++
++ /* This symbol has an entry in the GOT. Set it up. */
++ sgot = htab->sgot;
++ srelgot = htab->srelgot;
++ BFD_ASSERT(sgot && srelgot);
++
++ rel.r_offset = (sgot->output_section->vma
++ + sgot->output_offset
++ + got->offset);
++
++ /* If this is a static link, or it is a -Bsymbolic link and the
++ symbol is defined locally or was forced to be local because
++ of a version file, we just want to emit a RELATIVE reloc. The
++ entry in the global offset table will already have been
++ initialized in the relocate_section function. */
++ if ((info->shared
++ && !info->symbolic
++ && h->dynindx != -1)
++ || (htab->root.dynamic_sections_created
++ && h->def_dynamic
++ && !h->def_regular))
++ {
++ bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
++ rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
++ rel.r_addend = 0;
++
++ pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
++ pr_debug(" srelgot reloc_count: %d, size: %lu\n",
++ srelgot->reloc_count, srelgot->size);
++
++ loc = (srelgot->contents
++ + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
++ bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
++
++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
++ <= srelgot->size);
++ }
++ }
++
++ /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
++ if (strcmp(h->root.root.string, "_DYNAMIC") == 0
++ || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
++ sym->st_shndx = SHN_ABS;
++
++ return TRUE;
++}
++
++/* (8) Do any remaining initialization of the dynamic sections */
++
++static bfd_boolean
++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
++{
++ struct elf_avr32_link_hash_table *htab;
++ asection *sgot, *sdyn;
++
++ pr_debug("(8) finish dynamic sections\n");
++
++ htab = avr32_elf_hash_table(info);
++ sgot = htab->sgot;
++ sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
++
++ if (htab->root.dynamic_sections_created)
++ {
++ Elf32_External_Dyn *dyncon, *dynconend;
++
++ BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
++
++ dyncon = (Elf32_External_Dyn *)sdyn->contents;
++ dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
++ for (; dyncon < dynconend; dyncon++)
++ {
++ Elf_Internal_Dyn dyn;
++ asection *s;
++
++ bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
++
++ switch (dyn.d_tag)
++ {
++ default:
++ break;
++
++ case DT_PLTGOT:
++ s = sgot->output_section;
++ BFD_ASSERT(s != NULL);
++ dyn.d_un.d_ptr = s->vma;
++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
++ break;
++
++ case DT_AVR32_GOTSZ:
++ s = sgot->output_section;
++ BFD_ASSERT(s != NULL);
++ dyn.d_un.d_val = s->size;
++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
++ break;
++ }
++ }
++
++ /* Fill in the first two entries in the global offset table */
++ bfd_put_32(output_bfd,
++ sdyn->output_section->vma + sdyn->output_offset,
++ sgot->contents);
++
++ /* The runtime linker will fill this one in with the address of
++ the run-time link map */
++ bfd_put_32(output_bfd, 0, sgot->contents + 4);
++ }
++
++ if (sgot)
++ elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
++
++ return TRUE;
++}
++
++
++/* AVR32-specific private ELF data */
++
++static bfd_boolean
++avr32_elf_set_private_flags(bfd *abfd, flagword flags);
++static bfd_boolean
++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
++static bfd_boolean
++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
++static bfd_boolean
++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
++
++static bfd_boolean
++avr32_elf_set_private_flags(bfd *abfd, flagword flags)
++{
++ elf_elfheader(abfd)->e_flags = flags;
++ elf_flags_init(abfd) = TRUE;
++
++ return TRUE;
++}
++
++/* Copy backend specific data from one object module to another. */
++
++static bfd_boolean
++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
++{
++ elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
++ return TRUE;
++}
++
++/* Merge backend specific data from an object file to the output
++ object file when linking. */
++
++static bfd_boolean
++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
++{
++ flagword out_flags, in_flags;
++
++ pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
++ ibfd->filename, obfd->filename);
++
++ in_flags = elf_elfheader(ibfd)->e_flags;
++ out_flags = elf_elfheader(obfd)->e_flags;
++
++ if (elf_flags_init(obfd))
++ {
++ /* If one of the inputs are non-PIC, the output must be
++ considered non-PIC. The same applies to linkrelax. */
++ if (!(in_flags & EF_AVR32_PIC))
++ out_flags &= ~EF_AVR32_PIC;
++ if (!(in_flags & EF_AVR32_LINKRELAX))
++ out_flags &= ~EF_AVR32_LINKRELAX;
++ }
++ else
++ {
++ elf_flags_init(obfd) = TRUE;
++ out_flags = in_flags;
++ }
++
++ elf_elfheader(obfd)->e_flags = out_flags;
++
++ return TRUE;
++}
++
++static bfd_boolean
++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
++{
++ FILE *file = (FILE *)ptr;
++ unsigned long flags;
++
++ BFD_ASSERT(abfd != NULL && ptr != NULL);
++
++ _bfd_elf_print_private_bfd_data(abfd, ptr);
++
++ flags = elf_elfheader(abfd)->e_flags;
++
++ fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
++
++ if (flags & EF_AVR32_PIC)
++ fprintf(file, " [PIC]");
++ if (flags & EF_AVR32_LINKRELAX)
++ fprintf(file, " [linker relaxable]");
++
++ flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
++
++ if (flags)
++ fprintf(file, _("<Unrecognized flag bits set>"));
++
++ fputc('\n', file);
++
++ return TRUE;
++}
++
++
++/* Understanding core dumps */
++
++static bfd_boolean
++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
++static bfd_boolean
++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
++
++static bfd_boolean
++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
++{
++ /* Linux/AVR32B elf_prstatus */
++ if (note->descsz != 148)
++ return FALSE;
++
++ /* pr_cursig */
++ elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
++
++ /* pr_pid */
++ elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
++
++ /* Make a ".reg/999" section for pr_reg. The size is for 16
++ general-purpose registers, SR and r12_orig (18 * 4 = 72). */
++ return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
++ note->descpos + 72);
++}
++
++static bfd_boolean
++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
++{
++ /* Linux/AVR32B elf_prpsinfo */
++ if (note->descsz != 128)
++ return FALSE;
++
++ elf_tdata(abfd)->core_program
++ = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
++ elf_tdata(abfd)->core_command
++ = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
++
++ /* Note that for some reason, a spurious space is tacked
++ onto the end of the args in some (at least one anyway)
++ implementations, so strip it off if it exists. */
++
++ {
++ char *command = elf_tdata (abfd)->core_command;
++ int n = strlen (command);
++
++ if (0 < n && command[n - 1] == ' ')
++ command[n - 1] = '\0';
++ }
++
++ return TRUE;
++}
++
++
++#define ELF_ARCH bfd_arch_avr32
++#define ELF_MACHINE_CODE EM_AVR32
++#define ELF_MAXPAGESIZE 0x1000
++
++#define TARGET_BIG_SYM bfd_elf32_avr32_vec
++#define TARGET_BIG_NAME "elf32-avr32"
++
++#define elf_backend_grok_prstatus avr32_elf_grok_prstatus
++#define elf_backend_grok_psinfo avr32_elf_grok_psinfo
++
++/* Only RELA relocations are used */
++#define elf_backend_may_use_rel_p 0
++#define elf_backend_may_use_rela_p 1
++#define elf_backend_default_use_rela_p 1
++#define elf_backend_rela_normal 1
++#define elf_info_to_howto_rel NULL
++#define elf_info_to_howto avr32_info_to_howto
++
++#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data
++#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data
++#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags
++#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data
++#define bfd_elf32_new_section_hook avr32_elf_new_section_hook
++
++#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook
++#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook
++#define elf_backend_relocate_section avr32_elf_relocate_section
++#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
++#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
++#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
++#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
++#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
++#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
++#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
++
++#define bfd_elf32_bfd_relax_section avr32_elf_relax_section
++
++/* Find out which symbols need an entry in .got. */
++#define elf_backend_check_relocs avr32_check_relocs
++#define elf_backend_can_refcount 1
++#define elf_backend_can_gc_sections 1
++#define elf_backend_plt_readonly 1
++#define elf_backend_plt_not_loaded 1
++#define elf_backend_want_plt_sym 0
++#define elf_backend_plt_alignment 2
++#define elf_backend_want_dynbss 0
++#define elf_backend_want_got_plt 0
++#define elf_backend_want_got_sym 1
++#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE
++
++#include "elf32-target.h"
+diff -Nrup binutils-2.17/bfd/elf32-avr32.h binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.h
+--- binutils-2.17/bfd/elf32-avr32.h 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.h 2007-09-28 10:30:44.000000000 +0200
+@@ -0,0 +1,23 @@
++/* AVR32-specific support for 32-bit ELF.
++ Copyright 2007 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of BFD, the Binary File Descriptor library.
++
++ 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. */
++
++void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
++ int direct_data_refs);
+diff -Nrup binutils-2.17/bfd/elf-bfd.h binutils-2.17.atmel.1.3.0/bfd/elf-bfd.h
+--- binutils-2.17/bfd/elf-bfd.h 2006-03-16 13:20:15.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/elf-bfd.h 2007-03-26 10:20:30.000000000 +0200
+@@ -1307,6 +1307,10 @@ struct elf_obj_tdata
+ find_nearest_line. */
+ struct mips_elf_find_line *find_line_info;
+
++ /* Used by AVR32 ELF relaxation code. Contains an array of pointers
++ for each local symbol to the fragment where it is defined. */
++ struct fragment **local_sym_frag;
++
+ /* A place to stash dwarf1 info for this bfd. */
+ struct dwarf1_debug *dwarf1_find_line_info;
+
+diff -Nrup binutils-2.17/bfd/libbfd.h binutils-2.17.atmel.1.3.0/bfd/libbfd.h
+--- binutils-2.17/bfd/libbfd.h 2006-03-26 01:38:42.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/libbfd.h 2007-03-26 10:33:41.000000000 +0200
+@@ -1518,6 +1518,47 @@ static const char *const bfd_reloc_code_
+ "BFD_RELOC_AVR_LDI",
+ "BFD_RELOC_AVR_6",
+ "BFD_RELOC_AVR_6_ADIW",
++ "BFD_RELOC_AVR32_DIFF32",
++ "BFD_RELOC_AVR32_DIFF16",
++ "BFD_RELOC_AVR32_DIFF8",
++ "BFD_RELOC_AVR32_GOT32",
++ "BFD_RELOC_AVR32_GOT16",
++ "BFD_RELOC_AVR32_GOT8",
++ "BFD_RELOC_AVR32_21S",
++ "BFD_RELOC_AVR32_16U",
++ "BFD_RELOC_AVR32_16S",
++ "BFD_RELOC_AVR32_SUB5",
++ "BFD_RELOC_AVR32_8S_EXT",
++ "BFD_RELOC_AVR32_8S",
++ "BFD_RELOC_AVR32_22H_PCREL",
++ "BFD_RELOC_AVR32_18W_PCREL",
++ "BFD_RELOC_AVR32_16B_PCREL",
++ "BFD_RELOC_AVR32_16N_PCREL",
++ "BFD_RELOC_AVR32_14UW_PCREL",
++ "BFD_RELOC_AVR32_11H_PCREL",
++ "BFD_RELOC_AVR32_10UW_PCREL",
++ "BFD_RELOC_AVR32_9H_PCREL",
++ "BFD_RELOC_AVR32_9UW_PCREL",
++ "BFD_RELOC_AVR32_GOTPC",
++ "BFD_RELOC_AVR32_GOTCALL",
++ "BFD_RELOC_AVR32_LDA_GOT",
++ "BFD_RELOC_AVR32_GOT21S",
++ "BFD_RELOC_AVR32_GOT18SW",
++ "BFD_RELOC_AVR32_GOT16S",
++ "BFD_RELOC_AVR32_32_CPENT",
++ "BFD_RELOC_AVR32_CPCALL",
++ "BFD_RELOC_AVR32_16_CP",
++ "BFD_RELOC_AVR32_9W_CP",
++ "BFD_RELOC_AVR32_ALIGN",
++ "BFD_RELOC_AVR32_14UW",
++ "BFD_RELOC_AVR32_10UW",
++ "BFD_RELOC_AVR32_10SW",
++ "BFD_RELOC_AVR32_STHH_W",
++ "BFD_RELOC_AVR32_7UW",
++ "BFD_RELOC_AVR32_6S",
++ "BFD_RELOC_AVR32_6UW",
++ "BFD_RELOC_AVR32_4UH",
++ "BFD_RELOC_AVR32_3U",
+ "BFD_RELOC_390_12",
+ "BFD_RELOC_390_GOT12",
+ "BFD_RELOC_390_PLT32",
+diff -Nrup binutils-2.17/bfd/Makefile.am binutils-2.17.atmel.1.3.0/bfd/Makefile.am
+--- binutils-2.17/bfd/Makefile.am 2006-06-23 20:17:17.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/Makefile.am 2007-03-26 10:20:30.000000000 +0200
+@@ -3,7 +3,7 @@
+ AUTOMAKE_OPTIONS = 1.9 cygnus
+
+ # Uncomment the following line when doing a release.
+-RELEASE=y
++# RELEASE=y
+
+ INCDIR = $(srcdir)/../include
+ CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
+@@ -62,6 +62,7 @@ ALL_MACHINES = \
+ cpu-arc.lo \
+ cpu-arm.lo \
+ cpu-avr.lo \
++ cpu-avr32.lo \
+ cpu-bfin.lo \
+ cpu-cr16c.lo \
+ cpu-cris.lo \
+@@ -234,6 +235,7 @@ BFD32_BACKENDS = \
+ elf32-arc.lo \
+ elf32-arm.lo \
+ elf32-avr.lo \
++ elf32-avr32.lo \
+ elf32-bfin.lo \
+ elf32-cr16c.lo \
+ elf32-cris.lo \
+@@ -1265,6 +1267,10 @@ elf32-bfin.lo: elf32-bfin.c $(INCDIR)/fi
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/bfin.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
++ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
++ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
++ elf32-target.h
+ elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
+ $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
+ $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
+diff -Nrup binutils-2.17/bfd/Makefile.in binutils-2.17.atmel.1.3.0/bfd/Makefile.in
+--- binutils-2.17/bfd/Makefile.in 2006-06-23 20:17:19.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/Makefile.in 2007-03-26 10:30:55.000000000 +0200
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+@@ -15,8 +15,6 @@
+ @SET_MAKE@
+
+
+-SOURCES = $(libbfd_a_SOURCES) $(libbfd_la_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -141,6 +139,7 @@ EXEEXT = @EXEEXT@
+ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+ GMOFILES = @GMOFILES@
+ GMSGFMT = @GMSGFMT@
++GREP = @GREP@
+ GT_NO = @GT_NO@
+ GT_YES = @GT_YES@
+ HDEFINES = @HDEFINES@
+@@ -190,10 +189,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
+ WIN32LDFLAGS = @WIN32LDFLAGS@
+ WIN32LIBADD = @WIN32LIBADD@
+ XGETTEXT = @XGETTEXT@
+-ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_RANLIB = @ac_ct_RANLIB@
+-ac_ct_STRIP = @ac_ct_STRIP@
+ all_backends = @all_backends@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+@@ -219,6 +215,7 @@ build_vendor = @build_vendor@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+@@ -233,12 +230,15 @@ install_sh = @install_sh@
+ l = @l@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
++psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -253,7 +253,7 @@ wordsize = @wordsize@
+ AUTOMAKE_OPTIONS = 1.9 cygnus
+
+ # Uncomment the following line when doing a release.
+-RELEASE=y
++# RELEASE=y
+ INCDIR = $(srcdir)/../include
+ CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
+ MKDEP = gcc -MM
+@@ -298,6 +298,7 @@ ALL_MACHINES = \
+ cpu-arc.lo \
+ cpu-arm.lo \
+ cpu-avr.lo \
++ cpu-avr32.lo \
+ cpu-bfin.lo \
+ cpu-cr16c.lo \
+ cpu-cris.lo \
+@@ -471,6 +472,7 @@ BFD32_BACKENDS = \
+ elf32-arc.lo \
+ elf32-arm.lo \
+ elf32-avr.lo \
++ elf32-avr32.lo \
+ elf32-bfin.lo \
+ elf32-cr16c.lo \
+ elf32-cris.lo \
+@@ -1831,6 +1833,10 @@ elf32-bfin.lo: elf32-bfin.c $(INCDIR)/fi
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/bfin.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
++ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
++ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
++ elf32-target.h
+ elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
+ $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
+ $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
+diff -Nrup binutils-2.17/bfd/reloc.c binutils-2.17.atmel.1.3.0/bfd/reloc.c
+--- binutils-2.17/bfd/reloc.c 2006-03-26 01:38:42.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/bfd/reloc.c 2007-03-26 10:20:30.000000000 +0200
+@@ -3714,6 +3714,129 @@ ENUMDOC
+ instructions
+
+ ENUM
++ BFD_RELOC_AVR32_DIFF32
++ENUMX
++ BFD_RELOC_AVR32_DIFF16
++ENUMX
++ BFD_RELOC_AVR32_DIFF8
++ENUMDOC
++ Difference between two labels: L2 - L1. The value of L1 is encoded
++ as sym + addend, while the initial difference after assembly is
++ inserted into the object file by the assembler.
++ENUM
++ BFD_RELOC_AVR32_GOT32
++ENUMX
++ BFD_RELOC_AVR32_GOT16
++ENUMX
++ BFD_RELOC_AVR32_GOT8
++ENUMDOC
++ Reference to a symbol through the Global Offset Table. The linker
++ will allocate an entry for symbol in the GOT and insert the offset
++ of this entry as the relocation value.
++ENUM
++ BFD_RELOC_AVR32_21S
++ENUMX
++ BFD_RELOC_AVR32_16U
++ENUMX
++ BFD_RELOC_AVR32_16S
++ENUMX
++ BFD_RELOC_AVR32_SUB5
++ENUMX
++ BFD_RELOC_AVR32_8S_EXT
++ENUMX
++ BFD_RELOC_AVR32_8S
++ENUMDOC
++ Normal (non-pc-relative) code relocations. Alignment and signedness
++ is indicated by the suffixes. S means signed, U means unsigned. W
++ means word-aligned, H means halfword-aligned, neither means
++ byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
++ENUM
++ BFD_RELOC_AVR32_22H_PCREL
++ENUMX
++ BFD_RELOC_AVR32_18W_PCREL
++ENUMX
++ BFD_RELOC_AVR32_16B_PCREL
++ENUMX
++ BFD_RELOC_AVR32_16N_PCREL
++ENUMX
++ BFD_RELOC_AVR32_14UW_PCREL
++ENUMX
++ BFD_RELOC_AVR32_11H_PCREL
++ENUMX
++ BFD_RELOC_AVR32_10UW_PCREL
++ENUMX
++ BFD_RELOC_AVR32_9H_PCREL
++ENUMX
++ BFD_RELOC_AVR32_9UW_PCREL
++ENUMDOC
++ PC-relative relocations are signed if neither 'U' nor 'S' is
++ specified. However, we explicitly tack on a 'B' to indicate no
++ alignment, to avoid confusion with data relocs. All of these resolve
++ to sym + addend - offset, except the one with 'N' (negated) suffix.
++ This particular one resolves to offset - sym - addend.
++ENUM
++ BFD_RELOC_AVR32_GOTPC
++ENUMDOC
++ Subtract the link-time address of the GOT from (symbol + addend)
++ and insert the result.
++ENUM
++ BFD_RELOC_AVR32_GOTCALL
++ENUMX
++ BFD_RELOC_AVR32_LDA_GOT
++ENUMX
++ BFD_RELOC_AVR32_GOT21S
++ENUMX
++ BFD_RELOC_AVR32_GOT18SW
++ENUMX
++ BFD_RELOC_AVR32_GOT16S
++ENUMDOC
++ Reference to a symbol through the GOT. The linker will allocate an
++ entry for symbol in the GOT and insert the offset of this entry as
++ the relocation value. addend must be zero. As usual, 'S' means
++ signed, 'W' means word-aligned, etc.
++ENUM
++ BFD_RELOC_AVR32_32_CPENT
++ENUMDOC
++ 32-bit constant pool entry. I don't think 8- and 16-bit entries make
++ a whole lot of sense.
++ENUM
++ BFD_RELOC_AVR32_CPCALL
++ENUMX
++ BFD_RELOC_AVR32_16_CP
++ENUMX
++ BFD_RELOC_AVR32_9W_CP
++ENUMDOC
++ Constant pool references. Some of these relocations are signed,
++ others are unsigned. It doesn't really matter, since the constant
++ pool always comes after the code that references it.
++ENUM
++ BFD_RELOC_AVR32_ALIGN
++ENUMDOC
++ sym must be the absolute symbol. The addend specifies the alignment
++ order, e.g. if addend is 2, the linker must add padding so that the
++ next address is aligned to a 4-byte boundary.
++ENUM
++ BFD_RELOC_AVR32_14UW
++ENUMX
++ BFD_RELOC_AVR32_10UW
++ENUMX
++ BFD_RELOC_AVR32_10SW
++ENUMX
++ BFD_RELOC_AVR32_STHH_W
++ENUMX
++ BFD_RELOC_AVR32_7UW
++ENUMX
++ BFD_RELOC_AVR32_6S
++ENUMX
++ BFD_RELOC_AVR32_6UW
++ENUMX
++ BFD_RELOC_AVR32_4UH
++ENUMX
++ BFD_RELOC_AVR32_3U
++ENUMDOC
++ Code relocations that will never make it to the output file.
++
++ENUM
+ BFD_RELOC_390_12
+ ENUMDOC
+ Direct 12 bit.
+diff -Nrup binutils-2.17/bfd/targets.c binutils-2.17.atmel.1.3.0/bfd/targets.c
+--- binutils-2.17/bfd/targets.c 2006-04-05 14:41:57.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/bfd/targets.c 2007-03-26 10:20:30.000000000 +0200
+@@ -553,6 +553,7 @@ extern const bfd_target b_out_vec_little
+ extern const bfd_target bfd_efi_app_ia32_vec;
+ extern const bfd_target bfd_efi_app_ia64_vec;
+ extern const bfd_target bfd_elf32_avr_vec;
++extern const bfd_target bfd_elf32_avr32_vec;
+ extern const bfd_target bfd_elf32_bfin_vec;
+ extern const bfd_target bfd_elf32_bfinfdpic_vec;
+ extern const bfd_target bfd_elf32_big_generic_vec;
+@@ -855,6 +856,7 @@ static const bfd_target * const _bfd_tar
+ &bfd_efi_app_ia64_vec,
+ #endif
+ &bfd_elf32_avr_vec,
++ &bfd_elf32_avr32_vec,
+ &bfd_elf32_bfin_vec,
+ &bfd_elf32_bfinfdpic_vec,
+
+diff -Nrup binutils-2.17/binutils/config.in binutils-2.17.atmel.1.3.0/binutils/config.in
+--- binutils-2.17/binutils/config.in 2006-02-14 09:59:10.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/binutils/config.in 2007-03-26 10:32:11.000000000 +0200
+@@ -218,7 +218,7 @@
+
+ /* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+- automatically deduced at run-time.
++ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+@@ -260,8 +260,8 @@
+ #undef inline
+ #endif
+
+-/* Define to `long' if <sys/types.h> does not define. */
++/* Define to `long int' if <sys/types.h> does not define. */
+ #undef off_t
+
+-/* Define to `unsigned' if <sys/types.h> does not define. */
++/* Define to `unsigned int' if <sys/types.h> does not define. */
+ #undef size_t
+diff -Nrup binutils-2.17/binutils/configure binutils-2.17.atmel.1.3.0/binutils/configure
+--- binutils-2.17/binutils/configure 2006-04-06 23:49:29.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/binutils/configure 2007-03-26 10:32:09.000000000 +0200
+@@ -1,25 +1,54 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.59.
++# Generated by GNU Autoconf 2.61.
+ #
+-# Copyright (C) 2003 Free Software Foundation, Inc.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -29,8 +58,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -44,18 +108,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -63,157 +128,388 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
++# CDPATH.
++$as_unset CDPATH
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
++if test "x$CONFIG_SHELL" = x; then
++ if (eval ":") 2>/dev/null; then
++ as_have_required=yes
++else
++ as_have_required=no
++fi
++
++ if test $as_have_required = yes && (eval ":
++(as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
+ fi
+
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0) || { (exit 1); exit 1; }
++
++(
++ as_lineno_1=\$LINENO
++ as_lineno_2=\$LINENO
++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
++") 2> /dev/null; then
++ :
++else
++ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
++ case $as_dir in
+ /*)
+- if ("$as_dir/$as_base" -c '
++ for as_base in sh bash ksh sh5; do
++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
++ done;;
++ esac
++done
++IFS=$as_save_IFS
++
++
++ for as_shell in $as_candidate_shells $SHELL; do
++ # Try only shells that exist, to save several forks.
++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
++ { ("$as_shell") 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++_ASEOF
++}; then
++ CONFIG_SHELL=$as_shell
++ as_have_required=yes
++ if { "$as_shell" 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++(as_func_return () {
++ (exit $1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = "$1" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test $exitcode = 0) || { (exit 1); exit 1; }
++
++(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
++
++_ASEOF
++}; then
++ break
++fi
++
++fi
++
++ done
++
++ if test "x$CONFIG_SHELL" != x; then
++ for as_var in BASH_ENV ENV
++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ done
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
++fi
++
++
++ if test $as_have_required = no; then
++ echo This script requires a shell more modern than all the
++ echo shells that I found on your system. Please install a
++ echo modern shell, or manually run the script under such a
++ echo shell if you do have one.
++ { (exit 1); exit 1; }
++fi
++
++
++fi
++
++fi
++
++
++
++(eval "as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0") || {
++ echo No shell found that supports shell functions.
++ echo Please tell autoconf@gnu.org about your system,
++ echo including any error possibly output before this
++ echo message
++}
++
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
++ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -222,7 +518,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+
++exec 7<&0 </dev/null 6>&1
+
+ # Name of the host.
+ # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+ # so uname gets run too.
+ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+-exec 6>&1
+-
+ #
+ # Initializations.
+ #
+ ac_default_prefix=/usr/local
++ac_clean_files=
+ ac_config_libobj_dir=.
++LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete. It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+ # Identity of this package.
+ PACKAGE_NAME=
+ PACKAGE_TARNAME=
+@@ -275,42 +580,193 @@ ac_unique_file="ar.c"
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#if HAVE_SYS_TYPES_H
++#ifdef HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#if HAVE_SYS_STAT_H
++#ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#if STDC_HEADERS
++#ifdef STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# if HAVE_STDLIB_H
++# ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#if HAVE_STRINGS_H
++#ifdef HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#if HAVE_INTTYPES_H
++#ifdef HAVE_INTTYPES_H
+ # include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-# include <stdint.h>
+-# endif
+ #endif
+-#if HAVE_UNISTD_H
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S RANLIB ac_ct_RANLIB LIBTOOL WARN_CFLAGS NO_WERROR YACC LEX LEXLIB LEX_OUTPUT_ROOT CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT HDEFINES AR CC_FOR_BUILD EXEEXT_FOR_BUILD DEMANGLER_NAME NLMCONV_DEFS BUILD_NLMCONV BUILD_SRCONV BUILD_DLLTOOL DLLTOOL_DEFS BUILD_WINDRES BUILD_DLLWRAP BUILD_MISC OBJDUMP_DEFS EMULATION EMULATION_VECTOR datarootdir docdir htmldir LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL
++PATH_SEPARATOR
++PACKAGE_NAME
++PACKAGE_TARNAME
++PACKAGE_VERSION
++PACKAGE_STRING
++PACKAGE_BUGREPORT
++exec_prefix
++prefix
++program_transform_name
++bindir
++sbindir
++libexecdir
++datarootdir
++datadir
++sysconfdir
++sharedstatedir
++localstatedir
++includedir
++oldincludedir
++docdir
++infodir
++htmldir
++dvidir
++pdfdir
++psdir
++libdir
++localedir
++mandir
++DEFS
++ECHO_C
++ECHO_N
++ECHO_T
++LIBS
++build_alias
++host_alias
++target_alias
++build
++build_cpu
++build_vendor
++build_os
++host
++host_cpu
++host_vendor
++host_os
++target
++target_cpu
++target_vendor
++target_os
++CC
++CFLAGS
++LDFLAGS
++CPPFLAGS
++ac_ct_CC
++EXEEXT
++OBJEXT
++INSTALL_PROGRAM
++INSTALL_SCRIPT
++INSTALL_DATA
++CYGPATH_W
++PACKAGE
++VERSION
++ACLOCAL
++AUTOCONF
++AUTOMAKE
++AUTOHEADER
++MAKEINFO
++install_sh
++STRIP
++INSTALL_STRIP_PROGRAM
++mkdir_p
++AWK
++SET_MAKE
++am__leading_dot
++AMTAR
++am__tar
++am__untar
++DEPDIR
++am__include
++am__quote
++AMDEP_TRUE
++AMDEP_FALSE
++AMDEPBACKSLASH
++CCDEPMODE
++am__fastdepCC_TRUE
++am__fastdepCC_FALSE
++LN_S
++RANLIB
++LIBTOOL
++WARN_CFLAGS
++NO_WERROR
++YACC
++YFLAGS
++LEX
++LEX_OUTPUT_ROOT
++LEXLIB
++CPP
++GREP
++EGREP
++ALLOCA
++USE_NLS
++MSGFMT
++GMSGFMT
++XGETTEXT
++USE_INCLUDED_LIBINTL
++CATALOGS
++CATOBJEXT
++DATADIRNAME
++GMOFILES
++INSTOBJEXT
++INTLDEPS
++INTLLIBS
++INTLOBJS
++POFILES
++POSUB
++INCLUDE_LOCALE_H
++GT_NO
++GT_YES
++MKINSTALLDIRS
++l
++MAINTAINER_MODE_TRUE
++MAINTAINER_MODE_FALSE
++MAINT
++HDEFINES
++AR
++CC_FOR_BUILD
++EXEEXT_FOR_BUILD
++DEMANGLER_NAME
++NLMCONV_DEFS
++BUILD_NLMCONV
++BUILD_SRCONV
++BUILD_DLLTOOL
++DLLTOOL_DEFS
++BUILD_WINDRES
++BUILD_DLLWRAP
++BUILD_MISC
++OBJDUMP_DEFS
++EMULATION
++EMULATION_VECTOR
++LIBOBJS
++LTLIBOBJS'
+ ac_subst_files=''
++ ac_precious_vars='build_alias
++host_alias
++target_alias
++CC
++CFLAGS
++LDFLAGS
++LIBS
++CPPFLAGS
++YACC
++YFLAGS
++CPP'
++
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -337,34 +793,48 @@ x_libraries=NONE
+ # and all the variables that are supposed to be based on exec_prefix
+ # by default will actually change.
+ # Use braces instead of parens because sh, perl, etc. also accept them.
++# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datadir='${prefix}/share'
++datarootdir='${prefix}/share'
++datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+-libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-infodir='${prefix}/info'
+-mandir='${prefix}/man'
++docdir='${datarootdir}/doc/${PACKAGE}'
++infodir='${datarootdir}/info'
++htmldir='${docdir}'
++dvidir='${docdir}'
++pdfdir='${docdir}'
++psdir='${docdir}'
++libdir='${exec_prefix}/lib'
++localedir='${datarootdir}/locale'
++mandir='${datarootdir}/man'
+
+ ac_prev=
++ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval "$ac_prev=\$ac_option"
++ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++ case $ac_option in
++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
++ *) ac_optarg=yes ;;
++ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_option in
++ case $ac_dashdash$ac_option in
++ --)
++ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -386,33 +856,45 @@ do
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+- | --da=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
++ | --dataroo | --dataro | --datar)
++ ac_prev=datarootdir ;;
++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
++ datarootdir=$ac_optarg ;;
++
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- eval "enable_$ac_feature=no" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=no ;;
++
++ -docdir | --docdir | --docdi | --doc | --do)
++ ac_prev=docdir ;;
++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
++ docdir=$ac_optarg ;;
++
++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
++ ac_prev=dvidir ;;
++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
++ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "enable_$ac_feature='$ac_optarg'" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -439,6 +921,12 @@ do
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
++ ac_prev=htmldir ;;
++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
++ | --ht=*)
++ htmldir=$ac_optarg ;;
++
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -463,13 +951,16 @@ do
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
++ -localedir | --localedir | --localedi | --localed | --locale)
++ ac_prev=localedir ;;
++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
++ localedir=$ac_optarg ;;
++
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst \
+- | --locals | --local | --loca | --loc | --lo)
++ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -534,6 +1025,16 @@ do
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
++ ac_prev=pdfdir ;;
++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
++ pdfdir=$ac_optarg ;;
++
++ -psdir | --psdir | --psdi | --psd | --ps)
++ ac_prev=psdir ;;
++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
++ psdir=$ac_optarg ;;
++
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -586,24 +1087,20 @@ do
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package| sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "with_$ac_package='$ac_optarg'" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package | sed 's/-/_/g'`
+- eval "with_$ac_package=no" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -634,8 +1131,7 @@ Try \`$0 --help' for more information."
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+- eval "$ac_envvar='$ac_optarg'"
++ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+@@ -655,27 +1151,19 @@ if test -n "$ac_prev"; then
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
+-do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
+- esac
+-done
+-
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+- localstatedir libdir includedir oldincludedir infodir mandir
++# Be sure to have absolute directory names.
++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
++ datadir sysconfdir sharedstatedir localstatedir includedir \
++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
++ libdir localedir mandir
+ do
+- eval ac_val=$`echo $ac_var`
++ eval ac_val=\$$ac_var
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
++ [\\/$]* | ?:[\\/]* ) continue;;
++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -702,74 +1190,76 @@ test -n "$host_alias" && ac_tool_prefix=
+ test "$silent" = yes && exec 6>/dev/null
+
+
++ac_pwd=`pwd` && test -n "$ac_pwd" &&
++ac_ls_di=`ls -di .` &&
++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
++ { echo "$as_me: error: Working directory cannot be determined" >&2
++ { (exit 1); exit 1; }; }
++test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
++ { echo "$as_me: error: pwd does not report name of working directory" >&2
++ { (exit 1); exit 1; }; }
++
++
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+- # Try the directory containing this script, then its parent.
+- ac_confdir=`(dirname "$0") 2>/dev/null ||
++ # Try the directory containing this script, then the parent directory.
++ ac_confdir=`$as_dirname -- "$0" ||
+ $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$0" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r $srcdir/$ac_unique_file; then
++ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r $srcdir/$ac_unique_file; then
+- if test "$ac_srcdir_defaulted" = yes; then
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+- { (exit 1); exit 1; }; }
+- else
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+- { (exit 1); exit 1; }; }
+- fi
+-fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+- { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
++if test ! -r "$srcdir/$ac_unique_file"; then
++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++ { (exit 1); exit 1; }; }
++fi
++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
++ac_abs_confdir=`(
++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
++ { (exit 1); exit 1; }; }
++ pwd)`
++# When building in place, set srcdir=.
++if test "$ac_abs_confdir" = "$ac_pwd"; then
++ srcdir=.
++fi
++# Remove unnecessary trailing slashes from srcdir.
++# Double slashes in file names in object file debugging info
++# mess up M-x gdb in Emacs.
++case $srcdir in
++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
++esac
++for ac_var in $ac_precious_vars; do
++ eval ac_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_env_${ac_var}_value=\$${ac_var}
++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_cv_env_${ac_var}_value=\$${ac_var}
++done
+
+ #
+ # Report the --help message.
+@@ -798,9 +1288,6 @@ Configuration:
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-_ACEOF
+-
+- cat <<_ACEOF
+ Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+@@ -818,15 +1305,22 @@ Fine tuning of the installation director
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+- --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+- --infodir=DIR info documentation [PREFIX/info]
+- --mandir=DIR man documentation [PREFIX/man]
++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
++ --infodir=DIR info documentation [DATAROOTDIR/info]
++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
++ --mandir=DIR man documentation [DATAROOTDIR/man]
++ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
++ --htmldir=DIR html documentation [DOCDIR]
++ --dvidir=DIR dvi documentation [DOCDIR]
++ --pdfdir=DIR pdf documentation [DOCDIR]
++ --psdir=DIR ps documentation [DOCDIR]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -876,126 +1370,100 @@ Some influential environment variables:
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+- headers in a nonstandard directory <include dir>
++ LIBS libraries to pass to the linker, e.g. -l<library>
++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
++ you have headers in a nonstandard directory <include dir>
++ YACC The `Yet Another C Compiler' implementation to use. Defaults to
++ the first program found out of: `bison -y', `byacc', `yacc'.
++ YFLAGS The list of arguments that will be passed by default to $YACC.
++ This script will default YFLAGS to the empty string to avoid a
++ default value of `-d' given by some make applications.
+ CPP C preprocessor
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ _ACEOF
++ac_status=$?
+ fi
+
+ if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+- ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+- test -d $ac_dir || continue
++ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+-
+- cd $ac_dir
+- # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f $ac_srcdir/configure.gnu; then
+- echo
+- $SHELL $ac_srcdir/configure.gnu --help=recursive
+- elif test -f $ac_srcdir/configure; then
+- echo
+- $SHELL $ac_srcdir/configure --help=recursive
+- elif test -f $ac_srcdir/configure.ac ||
+- test -f $ac_srcdir/configure.in; then
+- echo
+- $ac_configure --help
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
++
++ cd "$ac_dir" || { ac_status=$?; continue; }
++ # Check for guested configure.
++ if test -f "$ac_srcdir/configure.gnu"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
++ elif test -f "$ac_srcdir/configure"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+- fi
+- cd $ac_popdir
++ fi || ac_status=$?
++ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+ fi
+
+-test -n "$ac_init_help" && exit 0
++test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+ cat <<\_ACEOF
++configure
++generated by GNU Autoconf 2.61
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+- exit 0
++ exit
+ fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
++cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
++exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1014,7 +1482,7 @@ uname -v = `(uname -v) 2>/dev/null || ec
+ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+ /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+ /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+ /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+ /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+ /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+@@ -1028,6 +1496,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
++IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1049,7 +1518,6 @@ _ACEOF
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
+-ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1060,7 +1528,7 @@ do
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+@@ -1082,9 +1550,7 @@ do
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
++ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+@@ -1095,8 +1561,8 @@ $as_unset ac_configure_args1 || test "${
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log. We remove comments because anyway the quotes in there
+ # would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
++# WARNING: Use '\'' to represent an apostrophe within the trap.
++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+ trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+@@ -1109,20 +1575,34 @@ trap 'exit_status=$?
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
+ (set) 2>&1 |
+- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ sed -n \
+- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+- ;;
++ "s/'\''/'\''\\\\'\'''\''/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
++ ;; #(
+ *)
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-}
++ esac |
++ sort
++)
+ echo
+
+ cat <<\_ASBOX
+@@ -1133,22 +1613,28 @@ _ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
++## ------------------- ##
++## File substitutions. ##
++## ------------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+@@ -1160,26 +1646,24 @@ _ASBOX
+ ## ----------- ##
+ _ASBOX
+ echo
+- sed "/^$/d" confdefs.h | sort
++ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+- rm -f core *.core &&
+- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core core.conftest.* &&
++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+- ' 0
++' 0
+ for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+ done
+ ac_signal=0
+
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
++rm -f -r conftest* confdefs.h
+
+ # Predefined preprocessor variables.
+
+@@ -1210,14 +1694,17 @@ _ACEOF
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -z "$CONFIG_SITE"; then
+- if test "x$prefix" != xNONE; then
+- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+- else
+- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+- fi
++if test -n "$CONFIG_SITE"; then
++ set x "$CONFIG_SITE"
++elif test "x$prefix" != xNONE; then
++ set x "$prefix/share/config.site" "$prefix/etc/config.site"
++else
++ set x "$ac_default_prefix/share/config.site" \
++ "$ac_default_prefix/etc/config.site"
+ fi
+-for ac_site_file in $CONFIG_SITE; do
++shift
++for ac_site_file
++do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+ echo "$as_me: loading site script $ac_site_file" >&6;}
+@@ -1233,8 +1720,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -1246,12 +1733,11 @@ fi
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
++for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+- eval ac_new_val="\$ac_env_${ac_var}_value"
++ eval ac_old_val=\$ac_cv_env_${ac_var}_value
++ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+@@ -1276,8 +1762,7 @@ echo "$as_me: current value: $ac_new_v
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1294,12 +1779,6 @@ echo "$as_me: error: run \`make distclea
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+
+
+
+@@ -1316,108 +1795,163 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ ac_aux_dir=
+-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+- if test -f $ac_dir/install-sh; then
++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
++ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f $ac_dir/install.sh; then
++ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f $ac_dir/shtool; then
++ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+ done
+ if test -z "$ac_aux_dir"; then
+- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++
++# These three variables are undocumented and unsupported,
++# and are intended to be withdrawn in a future Autoconf release.
++# They can cause serious problems if a builder's source tree is in a directory
++# whose full name contains unusual characters.
++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
++
+
+ # Make sure we can run config.sub.
+-$ac_config_sub sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+-echo "$as_me:$LINENO: checking build system type" >&5
+-echo $ECHO_N "checking build system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking build system type" >&5
++echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+ if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_build_alias=$build_alias
+-test -z "$ac_cv_build_alias" &&
+- ac_cv_build_alias=`$ac_config_guess`
+-test -z "$ac_cv_build_alias" &&
++ ac_build_alias=$build_alias
++test "x$ac_build_alias" = x &&
++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
++test "x$ac_build_alias" = x &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+ echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6; }
++case $ac_cv_build in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
++echo "$as_me: error: invalid value of canonical build" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ build=$ac_cv_build
+-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_build
++shift
++build_cpu=$1
++build_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++build_os=$*
++IFS=$ac_save_IFS
++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking host system type" >&5
++echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+ if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_host_alias=$host_alias
+-test -z "$ac_cv_host_alias" &&
+- ac_cv_host_alias=$ac_cv_build_alias
+-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
++ if test "x$host_alias" = x; then
++ ac_cv_host=$ac_cv_build
++else
++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6; }
++case $ac_cv_host in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
++echo "$as_me: error: invalid value of canonical host" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ host=$ac_cv_host
+-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_host
++shift
++host_cpu=$1
++host_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++host_os=$*
++IFS=$ac_save_IFS
++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking target system type" >&5
++echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
+ if test "${ac_cv_target+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_target_alias=$target_alias
+-test "x$ac_cv_target_alias" = "x" &&
+- ac_cv_target_alias=$ac_cv_host_alias
+-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
++ if test "x$target_alias" = x; then
++ ac_cv_target=$ac_cv_host
++else
++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
++echo "${ECHO_T}$ac_cv_target" >&6; }
++case $ac_cv_target in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
++echo "$as_me: error: invalid value of canonical target" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ target=$ac_cv_target
+-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_target
++shift
++target_cpu=$1
++target_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++target_os=$*
++IFS=$ac_save_IFS
++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+ # The aliases save the names the user supplied, while $host etc.
+@@ -1434,8 +1968,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1448,32 +1982,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1486,36 +2022,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1528,74 +2079,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1609,7 +2120,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -1620,6 +2131,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -1637,22 +2149,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1665,36 +2178,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1707,29 +2222,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -1742,21 +2273,35 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+@@ -1781,47 +2326,77 @@ ac_clean_files="$ac_clean_files a.out a.
+ # Try to create an executable without -o first, disregard a.out.
+ # It will help us diagnose broken compilers, and finding out an intuition
+ # of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+- (eval $ac_link_default) 2>&5
++#
++# List of possible output files, starting from the most likely.
++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
++# only as a last resort. b.out is created by i960 compilers.
++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
++#
++# The IRIX 6 linker writes into existing files which may not be
++# executable, retaining their permissions. Remove them first so a
++# subsequent execution test works.
++ac_rmfiles=
++for ac_file in $ac_files
++do
++ case $ac_file in
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
++ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
++ esac
++done
++rm -f $ac_rmfiles
++
++if { (ac_try="$ac_link_default"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- # Find the output, starting from the most likely. This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
++# in a Makefile. We should not override ac_cv_exeext if it was cached,
++# so that the user can short-circuit this test for compilers unknown to
++# Autoconf.
++for ac_file in $ac_files ''
+ do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+- ;;
+- conftest.$ac_ext )
+- # This is the source file.
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- # FIXME: I believe we export ac_cv_exeext for Libtool,
+- # but it would be cool to find out if it's true. Does anybody
+- # maintain Libtool? --akim.
+- export ac_cv_exeext
++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
++ then :; else
++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ fi
++ # We set ac_cv_exeext here because the later test for it is not
++ # safe: cross compilers may not add the suffix if given an `-o'
++ # argument, so we may need to know it at that point already.
++ # Even if this section looks crufty: it has the advantage of
++ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+ done
++test "$ac_cv_exeext" = no && ac_cv_exeext=
++
+ else
++ ac_file=''
++fi
++
++{ echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6; }
++if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -1833,19 +2408,21 @@ See \`config.log' for more details." >&2
+ fi
+
+ ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+ # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+ # If not cross compiling, check that we can run a simple program.
+ if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -1864,22 +2441,27 @@ See \`config.log' for more details." >&2
+ fi
+ fi
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
++echo "${ECHO_T}$cross_compiling" >&6; }
++
++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -1890,9 +2472,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
+ for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -1906,14 +2487,14 @@ See \`config.log' for more details." >&2
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
++echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+ rm -f conftest.$ac_ext
+ EXEEXT=$ac_cv_exeext
+ ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+ if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1933,14 +2514,20 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
++ for ac_file in conftest.o conftest.obj conftest.*; do
++ test -f "$ac_file" || continue;
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -1958,12 +2545,12 @@ fi
+
+ rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
++echo "${ECHO_T}$ac_cv_objext" >&6; }
+ OBJEXT=$ac_cv_objext
+ ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1986,50 +2573,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -2045,38 +2631,118 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -2092,12 +2758,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -2131,12 +2797,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -2151,335 +2822,144 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
++if test "${ac_cv_search_strerror+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_func_search_save_LIBS=$LIBS
+ cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char strerror ();
+ int
+ main ()
+ {
+-exit (42);
++return strerror ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++for ac_lib in '' cposix; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_strerror=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_strerror+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-echo "$as_me:$LINENO: checking for library containing strerror" >&5
+-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
++done
+ if test "${ac_cv_search_strerror+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_strerror=no
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="none required"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_strerror" = no; then
+- for ac_lib in cposix; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="-l$ac_lib"
+-break
++ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++ ac_cv_search_strerror=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+-echo "${ECHO_T}$ac_cv_search_strerror" >&6
+-if test "$ac_cv_search_strerror" != no; then
+- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
++echo "${ECHO_T}$ac_cv_search_strerror" >&6; }
++ac_res=$ac_cv_search_strerror
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+@@ -2499,8 +2979,8 @@ am__api_version="1.9"
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -2522,7 +3002,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -2541,21 +3021,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -2565,8 +3046,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -2608,20 +3089,20 @@ echo "$as_me: error: newly created file
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ test "$program_prefix" != NONE &&
+- program_transform_name="s,^,$program_prefix,;$program_transform_name"
++ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
++ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm conftest.sed
++rm -f conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -2673,8 +3154,8 @@ for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2687,54 +3168,57 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6
++ { echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$AWK" && break
+ done
+
+-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
++SHELL = /bin/sh
+ all:
+- @echo 'ac_maketemp="$(MAKE)"'
++ @echo '@@@%%%=$(MAKE)=@@@%%%'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+-if test -n "$ac_maketemp"; then
+- eval ac_cv_prog_make_${ac_make}_set=yes
+-else
+- eval ac_cv_prog_make_${ac_make}_set=no
+-fi
++case `${MAKE-make} -f conftest.make 2>/dev/null` in
++ *@@@%%%=?*=@@@%%%*)
++ eval ac_cv_prog_make_${ac_make}_set=yes;;
++ *)
++ eval ac_cv_prog_make_${ac_make}_set=no;;
++esac
+ rm -f conftest.make
+ fi
+-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -2749,7 +3233,7 @@ rmdir .tst 2>/dev/null
+
+ DEPDIR="${am__leading_dot}deps"
+
+- ac_config_commands="$ac_config_commands depfiles"
++ac_config_commands="$ac_config_commands depfiles"
+
+
+ am_make=${MAKE-make}
+@@ -2759,8 +3243,8 @@ am__doit:
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -2787,15 +3271,15 @@ if test "$am__include" = "#"; then
+ fi
+
+
+-echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6
++{ echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6; }
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval="$enable_dependency_tracking"
++ enableval=$enable_dependency_tracking;
++fi
+
+-fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -2870,8 +3354,8 @@ if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2884,32 +3368,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2922,27 +3408,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -2963,8 +3463,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am
+
+ depcc="$CC" am_compiler_list=
+
+-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3053,8 +3553,8 @@ else
+ fi
+
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -3072,10 +3572,9 @@ fi
+
+
+
+-# Check whether --enable-shared or --disable-shared was given.
++# Check whether --enable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval="$enable_shared"
+- p=${PACKAGE-default}
++ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -3093,11 +3592,11 @@ no) enable_shared=no ;;
+ esac
+ else
+ enable_shared=yes
+-fi;
+-# Check whether --enable-static or --disable-static was given.
++fi
++
++# Check whether --enable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval="$enable_static"
+- p=${PACKAGE-default}
++ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -3115,11 +3614,11 @@ no) enable_static=no ;;
+ esac
+ else
+ enable_static=yes
+-fi;
+-# Check whether --enable-fast-install or --disable-fast-install was given.
++fi
++
++# Check whether --enable-fast-install was given.
+ if test "${enable_fast_install+set}" = set; then
+- enableval="$enable_fast_install"
+- p=${PACKAGE-default}
++ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+@@ -3137,20 +3636,21 @@ no) enable_fast_install=no ;;
+ esac
+ else
+ enable_fast_install=yes
+-fi;
++fi
++
+
+-# Check whether --with-gnu-ld or --without-gnu-ld was given.
++# Check whether --with-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval="$with_gnu_ld"
+- test "$withval" = no || with_gnu_ld=yes
++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi;
++fi
++
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -3179,11 +3679,11 @@ echo $ECHO_N "checking for ld used by GC
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+ else
+- echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -3212,17 +3712,17 @@ fi
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6
++ { echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3233,25 +3733,25 @@ else
+ lt_cv_prog_gnu_ld=no
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_ld_reload_flag='-r'
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
+ reload_flag=$lt_cv_ld_reload_flag
+ test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
+ if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3286,22 +3786,22 @@ fi
+ fi
+
+ NM="$lt_cv_path_NM"
+-echo "$as_me:$LINENO: result: $NM" >&5
+-echo "${ECHO_T}$NM" >&6
++{ echo "$as_me:$LINENO: result: $NM" >&5
++echo "${ECHO_T}$NM" >&6; }
+
+-echo "$as_me:$LINENO: checking whether ln -s works" >&5
+-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+ LN_S=$as_ln_s
+ if test "$LN_S" = "ln -s"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+-echo "${ECHO_T}no, using $LN_S" >&6
++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6; }
+ fi
+
+-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
+-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; }
+ if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3463,8 +3963,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ esac
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+
+@@ -3474,8 +3974,8 @@ deplibs_check_method=$lt_cv_deplibs_chec
+ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+ # find the maximum length of command line arguments
+-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+ if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3526,11 +4026,11 @@ else
+ fi
+
+ if test -n "$lt_cv_sys_max_cmd_len" ; then
+- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+ else
+- echo "$as_me:$LINENO: result: none" >&5
+-echo "${ECHO_T}none" >&6
++ { echo "$as_me:$LINENO: result: none" >&5
++echo "${ECHO_T}none" >&6; }
+ fi
+
+
+@@ -3538,8 +4038,8 @@ fi
+ case $deplibs_check_method in
+ file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3593,17 +4093,17 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+- echo "$as_me:$LINENO: checking for file" >&5
+-echo $ECHO_N "checking for file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for file" >&5
++echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3657,11 +4157,11 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ else
+@@ -3676,8 +4176,8 @@ esac
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3690,32 +4190,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3728,27 +4230,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -3756,8 +4272,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3770,32 +4286,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3808,27 +4326,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -3843,22 +4375,22 @@ test "$GCC" = yes && libtool_flags="$lib
+ test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+
+
+-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
++# Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval="$enable_libtool_lock"
++ enableval=$enable_libtool_lock;
++fi
+
+-fi;
+ test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+
+-# Check whether --with-pic or --without-pic was given.
++# Check whether --with-pic was given.
+ if test "${with_pic+set}" = set; then
+- withval="$with_pic"
+- pic_mode="$withval"
++ withval=$with_pic; pic_mode="$withval"
+ else
+ pic_mode=default
+-fi;
++fi
++
+ test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
+ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
+
+@@ -3867,7 +4399,7 @@ test x"$pic_mode" = xno && libtool_flags
+ case $host in
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 3870 "configure"' > conftest.$ac_ext
++ echo '#line 4402 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -3972,13 +4504,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+ if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+
+-
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -4001,35 +4532,32 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ lt_cv_cc_needs_belf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-lt_cv_cc_needs_belf=no
++ lt_cv_cc_needs_belf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -4038,8 +4566,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+@@ -4069,39 +4597,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -4127,8 +4674,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -4154,10 +4701,9 @@ exec 5>>./config.log
+
+
+
+-# Check whether --enable-targets or --disable-targets was given.
++# Check whether --enable-targets was given.
+ if test "${enable_targets+set}" = set; then
+- enableval="$enable_targets"
+- case "${enableval}" in
++ enableval=$enable_targets; case "${enableval}" in
+ yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5
+ echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;}
+ { (exit 1); exit 1; }; }
+@@ -4165,31 +4711,32 @@ echo "$as_me: error: enable-targets opti
+ no) enable_targets= ;;
+ *) enable_targets=$enableval ;;
+ esac
+-fi; # Check whether --enable-commonbfdlib or --disable-commonbfdlib was given.
++fi
++# Check whether --enable-commonbfdlib was given.
+ if test "${enable_commonbfdlib+set}" = set; then
+- enableval="$enable_commonbfdlib"
+- case "${enableval}" in
++ enableval=$enable_commonbfdlib; case "${enableval}" in
+ yes) commonbfdlib=true ;;
+ no) commonbfdlib=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for BFD commonbfdlib option" >&5
+ echo "$as_me: error: bad value ${enableval} for BFD commonbfdlib option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+-fi;
++fi
++
+
+ GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+
+-# Check whether --enable-werror or --disable-werror was given.
++# Check whether --enable-werror was given.
+ if test "${enable_werror+set}" = set; then
+- enableval="$enable_werror"
+- case "${enableval}" in
++ enableval=$enable_werror; case "${enableval}" in
+ yes | y) ERROR_ON_WARNING="yes" ;;
+ no | n) ERROR_ON_WARNING="no" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5
+ echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+-fi;
++fi
++
+
+ # Enable -Werror by default when using gcc
+ if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
+@@ -4206,10 +4753,9 @@ if test "${GCC}" = yes ; then
+ WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+ fi
+
+-# Check whether --enable-build-warnings or --disable-build-warnings was given.
++# Check whether --enable-build-warnings was given.
+ if test "${enable_build_warnings+set}" = set; then
+- enableval="$enable_build_warnings"
+- case "${enableval}" in
++ enableval=$enable_build_warnings; case "${enableval}" in
+ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+ no) if test "${GCC}" = yes ; then
+ WARN_CFLAGS="-w"
+@@ -4220,7 +4766,8 @@ if test "${enable_build_warnings+set}" =
+ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
+ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+ esac
+-fi;
++fi
++
+
+ if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then
+ echo "Setting warning flags = $WARN_CFLAGS" 6>&1
+@@ -4230,7 +4777,7 @@ fi
+
+
+
+- ac_config_headers="$ac_config_headers config.h:config.in"
++ac_config_headers="$ac_config_headers config.h:config.in"
+
+
+ if test -z "$target" ; then
+@@ -4252,8 +4799,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4266,32 +4813,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4304,36 +4853,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4346,74 +4910,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4427,7 +4951,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -4438,6 +4962,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -4455,22 +4980,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4483,36 +5009,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4525,29 +5053,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -4560,27 +5104,41 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4603,50 +5161,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -4662,311 +5219,248 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+-if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
+-elif test $ac_cv_prog_cc_g = yes; then
+- if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
+- else
+- CFLAGS="-g"
+- fi
+-else
+- if test "$GCC" = yes; then
+- CFLAGS="-O2"
+- else
+- CFLAGS=
+- fi
+-fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_prog_cc_stdc=no
+-ac_save_CC=$CC
+-cat >conftest.$ac_ext <<_ACEOF
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#include <stdarg.h>
+-#include <stdio.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+-struct buf { int x; };
+-FILE * (*rcsopen) (struct buf *, struct stat *, int);
+-static char *e (p, i)
+- char **p;
+- int i;
+-{
+- return p[i];
+-}
+-static char *f (char * (*g) (char **, int), char **p, ...)
+-{
+- char *s;
+- va_list v;
+- va_start (v,p);
+- s = g (p, va_arg (v,int));
+- va_end (v);
+- return s;
+-}
+
+-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+- function prototypes and stuff, but not '\xHH' hex character constants.
+- These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
+- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+- array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
+-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+-
+-int test (int i, double x);
+-struct s1 {int (*f) (int a);};
+-struct s2 {int (*f) (double a);};
+-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+-int argc;
+-char **argv;
+ int
+ main ()
+ {
+-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
++
+ ;
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+-do
+- CC="$ac_save_CC $ac_arg"
+- rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext
+-done
+-rm -f conftest.$ac_ext conftest.$ac_objext
+-CC=$ac_save_CC
+-
+-fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
+- *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
+-esac
+-
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
++
+ int
+ main ()
+ {
+-exit (42);
++
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
++if test "$ac_test_CFLAGS" = set; then
++ CFLAGS=$ac_save_CFLAGS
++elif test $ac_cv_prog_cc_g = yes; then
++ if test "$GCC" = yes; then
++ CFLAGS="-g -O2"
++ else
++ CFLAGS="-g"
++ fi
++else
++ if test "$GCC" = yes; then
++ CFLAGS="-O2"
++ else
++ CFLAGS=
++ fi
++fi
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_cv_prog_cc_c89=no
++ac_save_CC=$CC
++cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
++#include <stdarg.h>
++#include <stdio.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
++struct buf { int x; };
++FILE * (*rcsopen) (struct buf *, struct stat *, int);
++static char *e (p, i)
++ char **p;
++ int i;
++{
++ return p[i];
++}
++static char *f (char * (*g) (char **, int), char **p, ...)
++{
++ char *s;
++ va_list v;
++ va_start (v,p);
++ s = g (p, va_arg (v,int));
++ va_end (v);
++ return s;
++}
++
++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
++ function prototypes and stuff, but not '\xHH' hex character constants.
++ These don't provoke an error unfortunately, instead are silently treated
++ as 'x'. The following induces an error, until -std is added to get
++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
++ array size at least. It's necessary to write '\x00'==0 to get something
++ that's true only with -std. */
++int osf4_cc_array ['\x00' == 0 ? 1 : -1];
++
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
++int test (int i, double x);
++struct s1 {int (*f) (int a);};
++struct s2 {int (*f) (double a);};
++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
++int argc;
++char **argv;
+ int
+ main ()
+ {
+-exit (42);
++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++do
++ CC="$ac_save_CC $ac_arg"
++ rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
++rm -f conftest.$ac_ext
++CC=$ac_save_CC
++
+ fi
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
++ *)
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
++esac
+
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -4984,8 +5478,8 @@ for ac_prog in 'bison -y' byacc
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_YACC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4998,25 +5492,27 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_YACC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ YACC=$ac_cv_prog_YACC
+ if test -n "$YACC"; then
+- echo "$as_me:$LINENO: result: $YACC" >&5
+-echo "${ECHO_T}$YACC" >&6
++ { echo "$as_me:$LINENO: result: $YACC" >&5
++echo "${ECHO_T}$YACC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$YACC" && break
+ done
+ test -n "$YACC" || YACC="yacc"
+@@ -5025,8 +5521,8 @@ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_LEX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5039,253 +5535,182 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LEX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ LEX=$ac_cv_prog_LEX
+ if test -n "$LEX"; then
+- echo "$as_me:$LINENO: result: $LEX" >&5
+-echo "${ECHO_T}$LEX" >&6
++ { echo "$as_me:$LINENO: result: $LEX" >&5
++echo "${ECHO_T}$LEX" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$LEX" && break
+ done
+ test -n "$LEX" || LEX=":"
+
+-if test -z "$LEXLIB"
+-then
+- echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5
+-echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6
+-if test "${ac_cv_lib_fl_yywrap+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lfl $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
++if test "x$LEX" != "x:"; then
++ cat >conftest.l <<_ACEOF
++%%
++a { ECHO; }
++b { REJECT; }
++c { yymore (); }
++d { yyless (1); }
++e { yyless (input () != 0); }
++f { unput (yytext[0]); }
++. { BEGIN INITIAL; }
++%%
++#ifdef YYTEXT_POINTER
++extern char *yytext;
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char yywrap ();
+ int
+-main ()
++main (void)
+ {
+-yywrap ();
+- ;
+- return 0;
++ return ! yylex () + ! yywrap ();
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++{ (ac_try="$LEX conftest.l"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$LEX conftest.l") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_lib_fl_yywrap=yes
++ (exit $ac_status); }
++{ echo "$as_me:$LINENO: checking lex output file root" >&5
++echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; }
++if test "${ac_cv_prog_lex_root+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_fl_yywrap=no
++if test -f lex.yy.c; then
++ ac_cv_prog_lex_root=lex.yy
++elif test -f lexyy.c; then
++ ac_cv_prog_lex_root=lexyy
++else
++ { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
++echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
++ { (exit 1); exit 1; }; }
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5
+-echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6
+-if test $ac_cv_lib_fl_yywrap = yes; then
+- LEXLIB="-lfl"
+-else
+- echo "$as_me:$LINENO: checking for yywrap in -ll" >&5
+-echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6
+-if test "${ac_cv_lib_l_yywrap+set}" = set; then
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
++echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; }
++LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
++
++if test -z "${LEXLIB+set}"; then
++ { echo "$as_me:$LINENO: checking lex library" >&5
++echo $ECHO_N "checking lex library... $ECHO_C" >&6; }
++if test "${ac_cv_lib_lex+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-ll $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char yywrap ();
+-int
+-main ()
+-{
+-yywrap ();
+- ;
+- return 0;
+-}
++ ac_save_LIBS=$LIBS
++ ac_cv_lib_lex='none needed'
++ for ac_lib in '' -lfl -ll; do
++ LIBS="$ac_lib $ac_save_LIBS"
++ cat >conftest.$ac_ext <<_ACEOF
++`cat $LEX_OUTPUT_ROOT.c`
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_lib_l_yywrap=yes
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_lib_lex=$ac_lib
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_l_yywrap=no
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5
+-echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6
+-if test $ac_cv_lib_l_yywrap = yes; then
+- LEXLIB="-ll"
+-fi
+-
+-fi
+-
+-fi
+
+-if test "x$LEX" != "x:"; then
+- echo "$as_me:$LINENO: checking lex output file root" >&5
+-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6
+-if test "${ac_cv_prog_lex_root+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # The minimal lex program is just a single line: %%. But some broken lexes
+-# (Solaris, I think it was) want two %% lines, so accommodate them.
+-cat >conftest.l <<_ACEOF
+-%%
+-%%
+-_ACEOF
+-{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5
+- (eval $LEX conftest.l) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-if test -f lex.yy.c; then
+- ac_cv_prog_lex_root=lex.yy
+-elif test -f lexyy.c; then
+- ac_cv_prog_lex_root=lexyy
+-else
+- { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
+-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
+- { (exit 1); exit 1; }; }
+ fi
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext conftest.$ac_ext
++ test "$ac_cv_lib_lex" != 'none needed' && break
++ done
++ LIBS=$ac_save_LIBS
++
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5
++echo "${ECHO_T}$ac_cv_lib_lex" >&6; }
++ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
+-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6
+-rm -f conftest.l
+-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+-echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
+-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6
++
++{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
++echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ # POSIX says lex can declare yytext either as a pointer or an array; the
+-# default is implementation-dependent. Figure out which it is, since
++# default is implementation-dependent. Figure out which it is, since
+ # not all implementations provide the %pointer and %array declarations.
+ ac_cv_prog_lex_yytext_pointer=no
+-echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
+ ac_save_LIBS=$LIBS
+-LIBS="$LIBS $LEXLIB"
++LIBS="$LEXLIB $ac_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
++#define YYTEXT_POINTER 1
+ `cat $LEX_OUTPUT_ROOT.c`
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_prog_lex_yytext_pointer=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_save_LIBS
+-rm -f "${LEX_OUTPUT_ROOT}.c"
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
+-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
++echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; }
+ if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5293,6 +5718,7 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
++rm -f conftest.l $LEX_OUTPUT_ROOT.c
+
+ fi
+ if test "$LEX" = :; then
+@@ -5303,8 +5729,8 @@ ALL_LINGUAS="fr tr ja es sv da zh_CN ru
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5317,32 +5743,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5355,27 +5783,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -5385,8 +5827,8 @@ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -5420,24 +5862,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5446,9 +5886,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5458,24 +5899,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5486,6 +5925,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5503,8 +5943,8 @@ fi
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
++{ echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6; }
+ ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+@@ -5527,24 +5967,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5553,9 +5991,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5565,24 +6004,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5593,6 +6030,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5615,23 +6053,170 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Extract the first word of "grep ggrep" to use in msg output
++if test -z "$GREP"; then
++set dummy grep ggrep; ac_prog_name=$2
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_GREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
++ # Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_GREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++GREP="$ac_cv_path_GREP"
++if test -z "$GREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_GREP=$GREP
++fi
++
++
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
++echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
++
++
++{ echo "$as_me:$LINENO: checking for egrep" >&5
++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ # Extract the first word of "egrep" to use in msg output
++if test -z "$EGREP"; then
++set dummy egrep; ac_prog_name=$2
++if test "${ac_cv_path_EGREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+- then ac_cv_prog_egrep='grep -E'
+- else ac_cv_prog_egrep='egrep'
++ ac_path_EGREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
++ # Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
+ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_EGREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++EGREP="$ac_cv_path_EGREP"
++if test -z "$EGREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++
++ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
+
+
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+ if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5655,35 +6240,31 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_header_stdc=no
++ ac_cv_header_stdc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+@@ -5739,6 +6320,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
++#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -5758,18 +6340,27 @@ main ()
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
++ return 2;
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -5782,12 +6373,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
++echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+ if test $ac_cv_header_stdc = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5796,8 +6389,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
+ if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5815,10 +6408,10 @@ main ()
+ #ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+- const charset x;
++ const charset cs;
+ /* SunOS 4.1.1 cc rejects this. */
+- char const *const *ccp;
+- char **p;
++ char const *const *pcpcc;
++ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+@@ -5827,16 +6420,17 @@ main ()
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+- ccp = &g + (g ? g-g : 0);
++ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+- ++ccp;
+- p = (char**) ccp;
+- ccp = (char const *const *) p;
++ ++pcpcc;
++ ppc = (char**) pcpcc;
++ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
++ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+@@ -5855,7 +6449,9 @@ main ()
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
++ if (!foo) return 0;
+ }
++ return !cs[0] && !zero.x;
+ #endif
+
+ ;
+@@ -5863,38 +6459,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_c_const=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_c_const=no
++ ac_cv_c_const=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+-echo "${ECHO_T}$ac_cv_c_const" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
++echo "${ECHO_T}$ac_cv_c_const" >&6; }
+ if test $ac_cv_c_const = no; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5903,8 +6495,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5924,39 +6516,37 @@ $ac_kw foo_t foo () {return 0; }
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_c_inline=$ac_kw; break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_c_inline=$ac_kw
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ test "$ac_cv_c_inline" != no && break
+ done
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6; }
+
+
+ case $ac_cv_c_inline in
+@@ -5988,9 +6578,9 @@ for ac_header in sys/types.h sys/stat.h
+ inttypes.h stdint.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6004,38 +6594,35 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -6046,8 +6633,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking for off_t" >&5
+-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for off_t" >&5
++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6058,62 +6645,59 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef off_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((off_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (off_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_off_t=no
++ ac_cv_type_off_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+-echo "${ECHO_T}$ac_cv_type_off_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
++echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
+ if test $ac_cv_type_off_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define off_t long
++#define off_t long int
+ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for size_t" >&5
+-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for size_t" >&5
++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6124,64 +6708,61 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef size_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((size_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (size_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_size_t=no
++ ac_cv_type_size_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+-echo "${ECHO_T}$ac_cv_type_size_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
++echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+ if test $ac_cv_type_size_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define size_t unsigned
++#define size_t unsigned int
+ _ACEOF
+
+ fi
+
+ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+ # for constant arguments. Useless!
+-echo "$as_me:$LINENO: checking for working alloca.h" >&5
+-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+ if test "${ac_cv_working_alloca_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6196,44 +6777,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (2 * sizeof (int));
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_working_alloca_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_working_alloca_h=no
++ ac_cv_working_alloca_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+ if test $ac_cv_working_alloca_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6242,8 +6821,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for alloca" >&5
+-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for alloca" >&5
++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_func_alloca_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6260,7 +6839,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ # include <malloc.h>
+ # define alloca _alloca
+ # else
+-# if HAVE_ALLOCA_H
++# ifdef HAVE_ALLOCA_H
+ # include <alloca.h>
+ # else
+ # ifdef _AIX
+@@ -6278,44 +6857,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (1);
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_alloca_works=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_alloca_works=no
++ ac_cv_func_alloca_works=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+ if test $ac_cv_func_alloca_works = yes; then
+
+@@ -6329,15 +6906,15 @@ else
+ # contain a buggy version. If you still want to use their alloca,
+ # use ar to extract alloca.o from them instead of compiling alloca.c.
+
+-ALLOCA=alloca.$ac_objext
++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+ cat >>confdefs.h <<\_ACEOF
+ #define C_ALLOCA 1
+ _ACEOF
+
+
+-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+ if test "${ac_cv_os_cray+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6347,7 +6924,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#if defined(CRAY) && ! defined(CRAY2)
++#if defined CRAY && ! defined CRAY2
+ webecray
+ #else
+ wenotbecray
+@@ -6363,14 +6940,14 @@ fi
+ rm -f conftest*
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+-echo "${ECHO_T}$ac_cv_os_cray" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
++echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+ if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6396,68 +6973,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6470,8 +7039,8 @@ fi
+ done
+ fi
+
+-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_c_stack_direction+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6484,6 +7053,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
++$ac_includes_default
+ int
+ find_stack_direction ()
+ {
+@@ -6501,17 +7071,26 @@ find_stack_direction ()
+ int
+ main ()
+ {
+- exit (find_stack_direction () < 0);
++ return find_stack_direction () < 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6524,11 +7103,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_c_stack_direction=-1
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+ cat >>confdefs.h <<_ACEOF
+ #define STACK_DIRECTION $ac_cv_c_stack_direction
+@@ -6542,18 +7123,19 @@ fi
+ for ac_header in stdlib.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6564,41 +7146,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6607,24 +7185,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -6632,9 +7208,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -6658,25 +7235,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -6692,9 +7263,9 @@ done
+ for ac_func in getpagesize
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6720,68 +7291,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6790,8 +7353,8 @@ _ACEOF
+ fi
+ done
+
+-echo "$as_me:$LINENO: checking for working mmap" >&5
+-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working mmap" >&5
++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; }
+ if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6833,21 +7396,21 @@ $ac_includes_default
+ #include <fcntl.h>
+ #include <sys/mman.h>
+
+-#if !STDC_HEADERS && !HAVE_STDLIB_H
++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+ char *malloc ();
+ #endif
+
+ /* This mess was copied from the GNU getpagesize.h. */
+-#if !HAVE_GETPAGESIZE
++#ifndef HAVE_GETPAGESIZE
+ /* Assume that all systems that can run configure have sys/param.h. */
+-# if !HAVE_SYS_PARAM_H
++# ifndef HAVE_SYS_PARAM_H
+ # define HAVE_SYS_PARAM_H 1
+ # endif
+
+ # ifdef _SC_PAGESIZE
+ # define getpagesize() sysconf(_SC_PAGESIZE)
+ # else /* no _SC_PAGESIZE */
+-# if HAVE_SYS_PARAM_H
++# ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ # ifdef EXEC_PAGESIZE
+ # define getpagesize() EXEC_PAGESIZE
+@@ -6886,15 +7449,15 @@ main ()
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ if (write (fd, data, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ close (fd);
+
+ /* Next, try to mmap the file at a fixed address which already has
+@@ -6902,17 +7465,17 @@ main ()
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ data2 = (char *) malloc (2 * pagesize);
+ if (!data2)
+- exit (1);
+- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
++ return 1;
++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1);
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+- exit (1);
++ return 1;
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+@@ -6921,24 +7484,33 @@ main ()
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+- exit (1);
++ return 1;
+ if (read (fd, data3, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+- exit (1);
++ return 1;
+ close (fd);
+- exit (0);
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6951,11 +7523,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_func_mmap_fixed_mapped=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; }
+ if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6979,18 +7553,19 @@ for ac_header in argz.h limits.h locale.
+ unistd.h values.h sys/param.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7001,41 +7576,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7044,24 +7615,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -7069,9 +7638,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -7095,25 +7665,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -7139,9 +7703,9 @@ for ac_func in getcwd munmap putenv sete
+ __argz_count __argz_stringify __argz_next
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7167,68 +7731,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7243,9 +7799,9 @@ done
+ for ac_func in stpcpy
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7271,68 +7827,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7351,8 +7899,8 @@ _ACEOF
+ fi
+
+ if test $ac_cv_header_locale_h = yes; then
+- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; }
+ if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7372,39 +7920,36 @@ return LC_MESSAGES
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ am_cv_val_LC_MESSAGES=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-am_cv_val_LC_MESSAGES=no
++ am_cv_val_LC_MESSAGES=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; }
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -7413,34 +7958,34 @@ _ACEOF
+
+ fi
+ fi
+- echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
+- # Check whether --enable-nls or --disable-nls was given.
++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5
++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; }
++ # Check whether --enable-nls was given.
+ if test "${enable_nls+set}" = set; then
+- enableval="$enable_nls"
+- USE_NLS=$enableval
++ enableval=$enable_nls; USE_NLS=$enableval
+ else
+ USE_NLS=yes
+-fi;
+- echo "$as_me:$LINENO: result: $USE_NLS" >&5
+-echo "${ECHO_T}$USE_NLS" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6; }
+
+
+ USE_INCLUDED_LIBINTL=no
+
+ if test "$USE_NLS" = "yes"; then
+- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
+-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; }
+
+-# Check whether --with-included-gettext or --without-included-gettext was given.
++# Check whether --with-included-gettext was given.
+ if test "${with_included_gettext+set}" = set; then
+- withval="$with_included_gettext"
+- nls_cv_force_use_gnu_gettext=$withval
++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval
+ else
+ nls_cv_force_use_gnu_gettext=no
+-fi;
+- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
+-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; }
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+@@ -7449,17 +7994,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get
+ CATOBJEXT=
+
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking libintl.h usability" >&5
+-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5
++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7470,41 +8015,37 @@ $ac_includes_default
+ #include <libintl.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking libintl.h presence" >&5
+-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5
++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7513,24 +8054,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <libintl.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -7538,9 +8077,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -7564,30 +8104,23 @@ echo "$as_me: WARNING: libintl.h: se
+ echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_libintl_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+
+ fi
+ if test $ac_cv_header_libintl_h = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libc" >&5
+-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5
++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7607,43 +8140,40 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libc=no
++ gt_cv_func_gettext_libc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; }
+
+ if test "$gt_cv_func_gettext_libc" != "yes"; then
+- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; }
+ if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7656,59 +8186,56 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char bindtextdomain ();
+ int
+ main ()
+ {
+-bindtextdomain ();
++return bindtextdomain ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_intl_bindtextdomain=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_intl_bindtextdomain=no
++ ac_cv_lib_intl_bindtextdomain=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; }
+ if test $ac_cv_lib_intl_bindtextdomain = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libintl" >&5
+-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5
++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libintl+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7728,39 +8255,36 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libintl=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libintl=no
++ gt_cv_func_gettext_libintl=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; }
+ fi
+
+ fi
+@@ -7774,8 +8298,8 @@ _ACEOF
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7801,20 +8325,20 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ if test "$MSGFMT" != "no"; then
+
+ for ac_func in dcgettext
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7840,68 +8364,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7912,8 +8428,8 @@ done
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7928,32 +8444,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7979,11 +8496,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8003,37 +8520,34 @@ extern int _nl_msg_cat_cntr;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-CATOBJEXT=.mo
++ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ INSTOBJEXT=.mo
+ fi
+@@ -8055,8 +8569,8 @@ fi
+ INTLOBJS="\$(GETTOBJS)"
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8082,17 +8596,17 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8107,32 +8621,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8158,11 +8673,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+
+@@ -8181,8 +8696,8 @@ fi
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
+-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6
++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ fi
+@@ -8231,8 +8746,8 @@ _ACEOF
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; }
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+@@ -8240,8 +8755,8 @@ echo $ECHO_N "checking for catalogs to b
+ esac
+ done
+ LINGUAS=$NEW_LINGUAS
+- echo "$as_me:$LINENO: result: $LINGUAS" >&5
+-echo "${ECHO_T}$LINGUAS" >&6
++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5
++echo "${ECHO_T}$LINGUAS" >&6; }
+ fi
+
+ if test -n "$LINGUAS"; then
+@@ -8260,17 +8775,17 @@ echo "${ECHO_T}$LINGUAS" >&6
+ if test -f $srcdir/po2tbl.sed.in; then
+ if test "$CATOBJEXT" = ".cat"; then
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking linux/version.h usability" >&5
+-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5
++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8281,41 +8796,37 @@ $ac_includes_default
+ #include <linux/version.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking linux/version.h presence" >&5
+-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5
++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8324,24 +8835,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <linux/version.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -8349,9 +8858,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -8375,25 +8885,18 @@ echo "$as_me: WARNING: linux/version.h:
+ echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_linux_version_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+
+ fi
+ if test $ac_cv_header_linux_version_h = yes; then
+@@ -8443,17 +8946,17 @@ fi
+ fi
+
+
+-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
++ # Check whether --enable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then
+- enableval="$enable_maintainer_mode"
+- USE_MAINTAINER_MODE=$enableval
++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+ else
+ USE_MAINTAINER_MODE=no
+-fi;
+- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
+
+
+ if test $USE_MAINTAINER_MODE = yes; then
+@@ -8493,8 +8996,8 @@ AR=${AR-ar}
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8507,32 +9010,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8545,27 +9050,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -8583,8 +9102,8 @@ fi
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -8606,7 +9125,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -8625,21 +9144,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -8663,8 +9183,8 @@ fi
+ if test "x$cross_compiling" = "xno"; then
+ EXEEXT_FOR_BUILD='$(EXEEXT)'
+ else
+- echo "$as_me:$LINENO: checking for build system executable suffix" >&5
+-echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for build system executable suffix" >&5
++echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6; }
+ if test "${bfd_cv_build_exeext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8681,8 +9201,8 @@ else
+ rm -f conftest*
+ test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no
+ fi
+-echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5
+-echo "${ECHO_T}$bfd_cv_build_exeext" >&6
++{ echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5
++echo "${ECHO_T}$bfd_cv_build_exeext" >&6; }
+ EXEEXT_FOR_BUILD=""
+ test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
+ fi
+@@ -8704,18 +9224,19 @@ esac
+ for ac_header in string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8726,41 +9247,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8769,24 +9286,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -8794,9 +9309,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -8820,25 +9336,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -8850,8 +9360,8 @@ fi
+
+ done
+
+-echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
+-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
++echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; }
+ if test "${ac_cv_header_sys_wait_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8864,7 +9374,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <sys/types.h>
+ #include <sys/wait.h>
+ #ifndef WEXITSTATUS
+-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
++# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
+ #endif
+ #ifndef WIFEXITED
+ # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+@@ -8881,38 +9391,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_header_sys_wait_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_header_sys_wait_h=no
++ ac_cv_header_sys_wait_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
++echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; }
+ if test $ac_cv_header_sys_wait_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -8923,8 +9429,8 @@ fi
+
+ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+ # for constant arguments. Useless!
+-echo "$as_me:$LINENO: checking for working alloca.h" >&5
+-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+ if test "${ac_cv_working_alloca_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8939,44 +9445,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (2 * sizeof (int));
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_working_alloca_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_working_alloca_h=no
++ ac_cv_working_alloca_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+ if test $ac_cv_working_alloca_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -8985,8 +9489,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for alloca" >&5
+-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for alloca" >&5
++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_func_alloca_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9003,7 +9507,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ # include <malloc.h>
+ # define alloca _alloca
+ # else
+-# if HAVE_ALLOCA_H
++# ifdef HAVE_ALLOCA_H
+ # include <alloca.h>
+ # else
+ # ifdef _AIX
+@@ -9021,44 +9525,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (1);
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_alloca_works=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_alloca_works=no
++ ac_cv_func_alloca_works=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+ if test $ac_cv_func_alloca_works = yes; then
+
+@@ -9072,15 +9574,15 @@ else
+ # contain a buggy version. If you still want to use their alloca,
+ # use ar to extract alloca.o from them instead of compiling alloca.c.
+
+-ALLOCA=alloca.$ac_objext
++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+ cat >>confdefs.h <<\_ACEOF
+ #define C_ALLOCA 1
+ _ACEOF
+
+
+-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+ if test "${ac_cv_os_cray+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9090,7 +9592,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#if defined(CRAY) && ! defined(CRAY2)
++#if defined CRAY && ! defined CRAY2
+ webecray
+ #else
+ wenotbecray
+@@ -9106,14 +9608,14 @@ fi
+ rm -f conftest*
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+-echo "${ECHO_T}$ac_cv_os_cray" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
++echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+ if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -9139,68 +9641,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -9213,8 +9707,8 @@ fi
+ done
+ fi
+
+-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_c_stack_direction+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9227,6 +9721,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
++$ac_includes_default
+ int
+ find_stack_direction ()
+ {
+@@ -9244,17 +9739,26 @@ find_stack_direction ()
+ int
+ main ()
+ {
+- exit (find_stack_direction () < 0);
++ return find_stack_direction () < 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -9267,11 +9771,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_c_stack_direction=-1
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+ cat >>confdefs.h <<_ACEOF
+ #define STACK_DIRECTION $ac_cv_c_stack_direction
+@@ -9288,9 +9794,9 @@ fi
+ for ac_func in sbrk utimes setmode getc_unlocked strcoll
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -9316,68 +9822,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -9389,8 +9887,8 @@ done
+
+ # Check whether fopen64 is available and whether _LARGEFILE64_SOURCE
+ # needs to be defined for it
+-echo "$as_me:$LINENO: checking for fopen64" >&5
+-echo $ECHO_N "checking for fopen64... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for fopen64" >&5
++echo $ECHO_N "checking for fopen64... $ECHO_C" >&6; }
+ if test "${bu_cv_have_fopen64+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9410,33 +9908,29 @@ FILE *f = fopen64 ("/tmp/foo","r");
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ bu_cv_have_fopen64=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-saved_CPPFLAGS=$CPPFLAGS
++ saved_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -9454,44 +9948,42 @@ FILE *f = fopen64 ("/tmp/foo","r");
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bu_cv_have_fopen64=no
++ bu_cv_have_fopen64=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$saved_CPPFLAGS
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $bu_cv_have_fopen64" >&5
+-echo "${ECHO_T}$bu_cv_have_fopen64" >&6
++{ echo "$as_me:$LINENO: result: $bu_cv_have_fopen64" >&5
++echo "${ECHO_T}$bu_cv_have_fopen64" >&6; }
+ if test "$bu_cv_have_fopen64" != no; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -9499,8 +9991,8 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
+-echo "$as_me:$LINENO: checking for stat64" >&5
+-echo $ECHO_N "checking for stat64... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for stat64" >&5
++echo $ECHO_N "checking for stat64... $ECHO_C" >&6; }
+ if test "${bu_cv_have_stat64+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9520,33 +10012,29 @@ struct stat64 st; stat64 ("/tmp/foo", &s
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ bu_cv_have_stat64=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-saved_CPPFLAGS=$CPPFLAGS
++ saved_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -9564,191 +10052,146 @@ struct stat64 st; stat64 ("/tmp/foo", &s
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ bu_cv_have_stat64="need -D_LARGEFILE64_SOURCE"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bu_cv_have_stat64=no
++ bu_cv_have_stat64=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$saved_CPPFLAGS
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $bu_cv_have_stat64" >&5
+-echo "${ECHO_T}$bu_cv_have_stat64" >&6
++{ echo "$as_me:$LINENO: result: $bu_cv_have_stat64" >&5
++echo "${ECHO_T}$bu_cv_have_stat64" >&6; }
+ if test "$bu_cv_have_stat64" != no; then
+
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_STAT64 1
+ _ACEOF
+
+-fi
+-if test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE" \
+- || test "$bu_cv_have_stat64" = "need -D_LARGEFILE64_SOURCE"; then
+-
+-cat >>confdefs.h <<\_ACEOF
+-#define _LARGEFILE64_SOURCE 1
+-_ACEOF
+-
+- CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
+-fi
+-
+-# Some systems have frexp only in -lm, not in -lc.
+-echo "$as_me:$LINENO: checking for library containing frexp" >&5
+-echo $ECHO_N "checking for library containing frexp... $ECHO_C" >&6
+-if test "${ac_cv_search_frexp+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_frexp=no
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char frexp ();
+-int
+-main ()
+-{
+-frexp ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_frexp="none required"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++fi
++if test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE" \
++ || test "$bu_cv_have_stat64" = "need -D_LARGEFILE64_SOURCE"; then
++
++cat >>confdefs.h <<\_ACEOF
++#define _LARGEFILE64_SOURCE 1
++_ACEOF
+
++ CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_frexp" = no; then
+- for ac_lib in m; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
++
++# Some systems have frexp only in -lm, not in -lc.
++{ echo "$as_me:$LINENO: checking for library containing frexp" >&5
++echo $ECHO_N "checking for library containing frexp... $ECHO_C" >&6; }
++if test "${ac_cv_search_frexp+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_func_search_save_LIBS=$LIBS
++cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char frexp ();
+ int
+ main ()
+ {
+-frexp ();
++return frexp ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' m; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_frexp="-l$ac_lib"
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_frexp=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_frexp+set}" = set; then
++ break
++fi
++done
++if test "${ac_cv_search_frexp+set}" = set; then
++ :
++else
++ ac_cv_search_frexp=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_frexp" >&5
+-echo "${ECHO_T}$ac_cv_search_frexp" >&6
+-if test "$ac_cv_search_frexp" != no; then
+- test "$ac_cv_search_frexp" = "none required" || LIBS="$ac_cv_search_frexp $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_frexp" >&5
++echo "${ECHO_T}$ac_cv_search_frexp" >&6; }
++ac_res=$ac_cv_search_frexp
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+
+-echo "$as_me:$LINENO: checking for time_t in time.h" >&5
+-echo $ECHO_N "checking for time_t in time.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for time_t in time.h" >&5
++echo $ECHO_N "checking for time_t in time.h... $ECHO_C" >&6; }
+ if test "${bu_cv_decl_time_t_time_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9768,39 +10211,35 @@ time_t i;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bu_cv_decl_time_t_time_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bu_cv_decl_time_t_time_h=no
++ bu_cv_decl_time_t_time_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_time_h" >&5
+-echo "${ECHO_T}$bu_cv_decl_time_t_time_h" >&6
++{ echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_time_h" >&5
++echo "${ECHO_T}$bu_cv_decl_time_t_time_h" >&6; }
+ if test $bu_cv_decl_time_t_time_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -9809,8 +10248,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for time_t in sys/types.h" >&5
+-echo $ECHO_N "checking for time_t in sys/types.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for time_t in sys/types.h" >&5
++echo $ECHO_N "checking for time_t in sys/types.h... $ECHO_C" >&6; }
+ if test "${bu_cv_decl_time_t_types_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9830,39 +10269,35 @@ time_t i;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bu_cv_decl_time_t_types_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bu_cv_decl_time_t_types_h=no
++ bu_cv_decl_time_t_types_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_types_h" >&5
+-echo "${ECHO_T}$bu_cv_decl_time_t_types_h" >&6
++{ echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_types_h" >&5
++echo "${ECHO_T}$bu_cv_decl_time_t_types_h" >&6; }
+ if test $bu_cv_decl_time_t_types_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -9871,8 +10306,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5
+-echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5
++echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6; }
+ if test "${bu_cv_decl_getopt_unistd_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9892,39 +10327,35 @@ extern int getopt (int, char *const*, co
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bu_cv_decl_getopt_unistd_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bu_cv_decl_getopt_unistd_h=no
++ bu_cv_decl_getopt_unistd_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $bu_cv_decl_getopt_unistd_h" >&5
+-echo "${ECHO_T}$bu_cv_decl_getopt_unistd_h" >&6
++{ echo "$as_me:$LINENO: result: $bu_cv_decl_getopt_unistd_h" >&5
++echo "${ECHO_T}$bu_cv_decl_getopt_unistd_h" >&6; }
+ if test $bu_cv_decl_getopt_unistd_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -9935,8 +10366,8 @@ fi
+
+ # Under Next 3.2 <utime.h> apparently does not define struct utimbuf
+ # by default.
+-echo "$as_me:$LINENO: checking for utime.h" >&5
+-echo $ECHO_N "checking for utime.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for utime.h" >&5
++echo $ECHO_N "checking for utime.h... $ECHO_C" >&6; }
+ if test "${bu_cv_header_utime_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9960,39 +10391,35 @@ struct utimbuf s;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ bu_cv_header_utime_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-bu_cv_header_utime_h=no
++ bu_cv_header_utime_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $bu_cv_header_utime_h" >&5
+-echo "${ECHO_T}$bu_cv_header_utime_h" >&6
++{ echo "$as_me:$LINENO: result: $bu_cv_header_utime_h" >&5
++echo "${ECHO_T}$bu_cv_header_utime_h" >&6; }
+ if test $bu_cv_header_utime_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -10001,8 +10428,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking whether fprintf is declared" >&5
+-echo $ECHO_N "checking whether fprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether fprintf is declared" >&5
++echo $ECHO_N "checking whether fprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_fprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10017,7 +10444,7 @@ int
+ main ()
+ {
+ #ifndef fprintf
+- char *p = (char *) fprintf;
++ (void) fprintf;
+ #endif
+
+ ;
+@@ -10025,38 +10452,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_fprintf=no
++ ac_cv_have_decl_fprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_fprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_fprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_fprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_fprintf" >&6; }
+ if test $ac_cv_have_decl_fprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10071,8 +10494,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5
+-echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5
++echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_stpcpy+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10087,7 +10510,7 @@ int
+ main ()
+ {
+ #ifndef stpcpy
+- char *p = (char *) stpcpy;
++ (void) stpcpy;
+ #endif
+
+ ;
+@@ -10095,38 +10518,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_stpcpy=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_stpcpy=no
++ ac_cv_have_decl_stpcpy=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5
++echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6; }
+ if test $ac_cv_have_decl_stpcpy = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10141,8 +10560,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether strstr is declared" >&5
+-echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether strstr is declared" >&5
++echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_strstr+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10157,7 +10576,7 @@ int
+ main ()
+ {
+ #ifndef strstr
+- char *p = (char *) strstr;
++ (void) strstr;
+ #endif
+
+ ;
+@@ -10165,38 +10584,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strstr=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_strstr=no
++ ac_cv_have_decl_strstr=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5
++echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6; }
+ if test $ac_cv_have_decl_strstr = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10211,8 +10626,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether sbrk is declared" >&5
+-echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether sbrk is declared" >&5
++echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_sbrk+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10227,7 +10642,7 @@ int
+ main ()
+ {
+ #ifndef sbrk
+- char *p = (char *) sbrk;
++ (void) sbrk;
+ #endif
+
+ ;
+@@ -10235,38 +10650,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_sbrk=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_sbrk=no
++ ac_cv_have_decl_sbrk=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5
++echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6; }
+ if test $ac_cv_have_decl_sbrk = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10281,8 +10692,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether getenv is declared" >&5
+-echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether getenv is declared" >&5
++echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_getenv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10297,7 +10708,7 @@ int
+ main ()
+ {
+ #ifndef getenv
+- char *p = (char *) getenv;
++ (void) getenv;
+ #endif
+
+ ;
+@@ -10305,38 +10716,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getenv=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_getenv=no
++ ac_cv_have_decl_getenv=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
++echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6; }
+ if test $ac_cv_have_decl_getenv = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10351,8 +10758,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether environ is declared" >&5
+-echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether environ is declared" >&5
++echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_environ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10367,7 +10774,7 @@ int
+ main ()
+ {
+ #ifndef environ
+- char *p = (char *) environ;
++ (void) environ;
+ #endif
+
+ ;
+@@ -10375,38 +10782,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_environ=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_environ=no
++ ac_cv_have_decl_environ=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_environ" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5
++echo "${ECHO_T}$ac_cv_have_decl_environ" >&6; }
+ if test $ac_cv_have_decl_environ = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10421,8 +10824,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
+-echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
++echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10437,7 +10840,7 @@ int
+ main ()
+ {
+ #ifndef getc_unlocked
+- char *p = (char *) getc_unlocked;
++ (void) getc_unlocked;
+ #endif
+
+ ;
+@@ -10445,38 +10848,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getc_unlocked=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_getc_unlocked=no
++ ac_cv_have_decl_getc_unlocked=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
++echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6; }
+ if test $ac_cv_have_decl_getc_unlocked = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10491,8 +10890,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether snprintf is declared" >&5
+-echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether snprintf is declared" >&5
++echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_snprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10507,7 +10906,7 @@ int
+ main ()
+ {
+ #ifndef snprintf
+- char *p = (char *) snprintf;
++ (void) snprintf;
+ #endif
+
+ ;
+@@ -10515,38 +10914,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_snprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_snprintf=no
++ ac_cv_have_decl_snprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6; }
+ if test $ac_cv_have_decl_snprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10561,8 +10956,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5
+-echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5
++echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_vsnprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -10577,7 +10972,7 @@ int
+ main ()
+ {
+ #ifndef vsnprintf
+- char *p = (char *) vsnprintf;
++ (void) vsnprintf;
+ #endif
+
+ ;
+@@ -10585,38 +10980,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_vsnprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_vsnprintf=no
++ ac_cv_have_decl_vsnprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6; }
+ if test $ac_cv_have_decl_vsnprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -10817,8 +11208,10 @@ done
+
+
+
+- ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in"
+- ac_config_commands="$ac_config_commands default"
++ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in"
++
++ac_config_commands="$ac_config_commands default"
++
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -10837,39 +11230,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -10878,32 +11290,18 @@ test "x$prefix" = xNONE && prefix=$ac_de
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ ]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ ]*$//;
+-}'
+-fi
+-
+ DEFS=-DHAVE_CONFIG_H
+
+ ac_libobjs=
+ ac_ltlibobjs=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+- ac_i=`echo "$ac_i" |
+- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+- # 2. Add them.
+- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
++ ac_i=`echo "$ac_i" | sed "$ac_script"`
++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
++ # will be set to the directory where LIBOBJS objects are built.
++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+ done
+ LIBOBJS=$ac_libobjs
+
+@@ -10955,17 +11353,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -10975,8 +11401,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -10990,18 +11451,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -11009,159 +11471,120 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
+-
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+-
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
+-fi
++# CDPATH.
++$as_unset CDPATH
+
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
++ chmod +x "$as_me.lineno" ||
++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -11170,7 +11593,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -11179,31 +11623,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+ exec 6>&1
+
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
++# Save the log message, to keep $[0] and so on meaningful, and to
+ # report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling. Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
++# values after options handling.
++ac_log="
+ This file was extended by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -11211,30 +11638,20 @@ generated by GNU Autoconf 2.59. Invocat
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
++on `(hostname || uname -n) 2>/dev/null | sed 1q`
++"
++
+ _ACEOF
+
++cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_headers"; then
+- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_links"; then
+- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
++config_files="$ac_config_files"
++config_headers="$ac_config_headers"
++config_commands="$ac_config_commands"
+
+-if test -n "$ac_config_commands"; then
+- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
++_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-
+ ac_cs_usage="\
+ \`$as_me' instantiates files from templates according to the
+ current configuration.
+@@ -11242,7 +11659,7 @@ current configuration.
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number, then exit
++ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+@@ -11261,19 +11678,21 @@ Configuration commands:
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ config.status
+-configured by $0, generated by GNU Autoconf 2.59,
+- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.61,
++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 2006 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
++
++ac_pwd='$ac_pwd'
++srcdir='$srcdir'
++INSTALL='$INSTALL'
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -11284,39 +11703,24 @@ while test $# != 0
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "x$1" : 'x\([^=]*\)='`
+- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
++ ac_option=`expr "X$1" : 'X\([^=]*\)='`
++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+- -*)
++ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+- *) # This is not an option, so the user has probably given explicit
+- # arguments.
+- ac_option=$1
+- ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+- --version | --vers* | -V )
+- echo "$ac_cs_version"; exit 0 ;;
+- --he | --h)
+- # Conflict between --help and --header
+- { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; };;
+- --help | --hel | -h )
+- echo "$ac_cs_usage"; exit 0 ;;
+- --debug | --d* | -d )
++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
++ echo "$ac_cs_version"; exit ;;
++ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+@@ -11326,18 +11730,24 @@ Try \`$0 --help' for more information."
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
++ --he | --h)
++ # Conflict between --help and --header
++ { echo "$as_me: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&2
++ { (exit 1); exit 1; }; };;
++ --help | --hel | -h )
++ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
++ -*) { echo "$as_me: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+- *) ac_config_targets="$ac_config_targets $1" ;;
++ *) ac_config_targets="$ac_config_targets $1"
++ ac_need_defaults=false ;;
+
+ esac
+ shift
+@@ -11353,40 +11763,52 @@ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
++ CONFIG_SHELL=$SHELL
++ export CONFIG_SHELL
++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ fi
+
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++exec 5>>config.log
++{
++ echo
++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
++## Running $as_me. ##
++_ASBOX
++ echo "$ac_log"
++} >&5
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS section.
++# INIT-COMMANDS
+ #
+-
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+ _ACEOF
+
+-
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
++
++# Handling of arguments.
+ for ac_config_target in $ac_config_targets
+ do
+- case "$ac_config_target" in
+- # Handling of arguments.
+- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
+- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ case $ac_config_target in
++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
++
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+ echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ done
+
++
+ # If the user did not use the arguments to specify the items to instantiate,
+ # then the envvar interface is used. Set only those that are not.
+ # We use the long form for the default assignment because of an extremely
+@@ -11398,391 +11820,496 @@ if $ac_need_defaults; then
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
++# simply because there is no reason against having it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
++# Hook for its removal unless debugging.
++# Note that there is a small window in which the directory will not be cleaned:
++# after its creation but before its name has been assigned to `$tmp'.
+ $debug ||
+ {
+- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
++ tmp=
++ trap 'exit_status=$?
++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
++' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+ }
+-
+ # Create a (secure) tmp directory for tmp files.
+
+ {
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./confstat$$-$RANDOM
+- (umask 077 && mkdir $tmp)
++ tmp=./conf$$-$RANDOM
++ (umask 077 && mkdir "$tmp")
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+ #
+-# CONFIG_FILES section.
++# Set up the sed scripts for CONFIG_FILES section.
+ #
+
+ # No need to generate the scripts if there are no CONFIG_FILES.
+ # This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+- # Protect against being on the right side of a sed subst in config.status.
+- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@build@,$build,;t t
+-s,@build_cpu@,$build_cpu,;t t
+-s,@build_vendor@,$build_vendor,;t t
+-s,@build_os@,$build_os,;t t
+-s,@host@,$host,;t t
+-s,@host_cpu@,$host_cpu,;t t
+-s,@host_vendor@,$host_vendor,;t t
+-s,@host_os@,$host_os,;t t
+-s,@target@,$target,;t t
+-s,@target_cpu@,$target_cpu,;t t
+-s,@target_vendor@,$target_vendor,;t t
+-s,@target_os@,$target_os,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@CYGPATH_W@,$CYGPATH_W,;t t
+-s,@PACKAGE@,$PACKAGE,;t t
+-s,@VERSION@,$VERSION,;t t
+-s,@ACLOCAL@,$ACLOCAL,;t t
+-s,@AUTOCONF@,$AUTOCONF,;t t
+-s,@AUTOMAKE@,$AUTOMAKE,;t t
+-s,@AUTOHEADER@,$AUTOHEADER,;t t
+-s,@MAKEINFO@,$MAKEINFO,;t t
+-s,@install_sh@,$install_sh,;t t
+-s,@STRIP@,$STRIP,;t t
+-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+-s,@mkdir_p@,$mkdir_p,;t t
+-s,@AWK@,$AWK,;t t
+-s,@SET_MAKE@,$SET_MAKE,;t t
+-s,@am__leading_dot@,$am__leading_dot,;t t
+-s,@AMTAR@,$AMTAR,;t t
+-s,@am__tar@,$am__tar,;t t
+-s,@am__untar@,$am__untar,;t t
+-s,@DEPDIR@,$DEPDIR,;t t
+-s,@am__include@,$am__include,;t t
+-s,@am__quote@,$am__quote,;t t
+-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+-s,@CCDEPMODE@,$CCDEPMODE,;t t
+-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+-s,@LN_S@,$LN_S,;t t
+-s,@RANLIB@,$RANLIB,;t t
+-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+-s,@LIBTOOL@,$LIBTOOL,;t t
+-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t
+-s,@NO_WERROR@,$NO_WERROR,;t t
+-s,@YACC@,$YACC,;t t
+-s,@LEX@,$LEX,;t t
+-s,@LEXLIB@,$LEXLIB,;t t
+-s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@ALLOCA@,$ALLOCA,;t t
+-s,@USE_NLS@,$USE_NLS,;t t
+-s,@MSGFMT@,$MSGFMT,;t t
+-s,@GMSGFMT@,$GMSGFMT,;t t
+-s,@XGETTEXT@,$XGETTEXT,;t t
+-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t
+-s,@CATALOGS@,$CATALOGS,;t t
+-s,@CATOBJEXT@,$CATOBJEXT,;t t
+-s,@DATADIRNAME@,$DATADIRNAME,;t t
+-s,@GMOFILES@,$GMOFILES,;t t
+-s,@INSTOBJEXT@,$INSTOBJEXT,;t t
+-s,@INTLDEPS@,$INTLDEPS,;t t
+-s,@INTLLIBS@,$INTLLIBS,;t t
+-s,@INTLOBJS@,$INTLOBJS,;t t
+-s,@POFILES@,$POFILES,;t t
+-s,@POSUB@,$POSUB,;t t
+-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t
+-s,@GT_NO@,$GT_NO,;t t
+-s,@GT_YES@,$GT_YES,;t t
+-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+-s,@l@,$l,;t t
+-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+-s,@MAINT@,$MAINT,;t t
+-s,@HDEFINES@,$HDEFINES,;t t
+-s,@AR@,$AR,;t t
+-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
+-s,@EXEEXT_FOR_BUILD@,$EXEEXT_FOR_BUILD,;t t
+-s,@DEMANGLER_NAME@,$DEMANGLER_NAME,;t t
+-s,@NLMCONV_DEFS@,$NLMCONV_DEFS,;t t
+-s,@BUILD_NLMCONV@,$BUILD_NLMCONV,;t t
+-s,@BUILD_SRCONV@,$BUILD_SRCONV,;t t
+-s,@BUILD_DLLTOOL@,$BUILD_DLLTOOL,;t t
+-s,@DLLTOOL_DEFS@,$DLLTOOL_DEFS,;t t
+-s,@BUILD_WINDRES@,$BUILD_WINDRES,;t t
+-s,@BUILD_DLLWRAP@,$BUILD_DLLWRAP,;t t
+-s,@BUILD_MISC@,$BUILD_MISC,;t t
+-s,@OBJDUMP_DEFS@,$OBJDUMP_DEFS,;t t
+-s,@EMULATION@,$EMULATION,;t t
+-s,@EMULATION_VECTOR@,$EMULATION_VECTOR,;t t
+-s,@datarootdir@,$datarootdir,;t t
+-s,@docdir@,$docdir,;t t
+-s,@htmldir@,$htmldir,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-CEOF
+-
+-_ACEOF
+-
+- cat >>$CONFIG_STATUS <<\_ACEOF
+- # Split the substitutions into bite-sized pieces for seds with
+- # small command number limits, like on Digital OSF/1 and HP-UX.
+- ac_max_sed_lines=48
+- ac_sed_frag=1 # Number of current file.
+- ac_beg=1 # First line for current file.
+- ac_end=$ac_max_sed_lines # Line after last line for current file.
+- ac_more_lines=:
+- ac_sed_cmds=
+- while $ac_more_lines; do
+- if test $ac_beg -gt 1; then
+- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- else
+- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- fi
+- if test ! -s $tmp/subs.frag; then
+- ac_more_lines=false
+- else
+- # The purpose of the label and of the branching condition is to
+- # speed up the sed processing (if there are no `@' at all, there
+- # is no need to browse any of the substitutions).
+- # These are the two extra sed commands mentioned above.
+- (echo ':t
+- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+- else
+- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+- fi
+- ac_sed_frag=`expr $ac_sed_frag + 1`
+- ac_beg=$ac_end
+- ac_end=`expr $ac_end + $ac_max_sed_lines`
+- fi
+- done
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds=cat
++if test -n "$CONFIG_FILES"; then
++
++_ACEOF
++
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++SHELL!$SHELL$ac_delim
++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
++PACKAGE_NAME!$PACKAGE_NAME$ac_delim
++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
++PACKAGE_STRING!$PACKAGE_STRING$ac_delim
++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
++exec_prefix!$exec_prefix$ac_delim
++prefix!$prefix$ac_delim
++program_transform_name!$program_transform_name$ac_delim
++bindir!$bindir$ac_delim
++sbindir!$sbindir$ac_delim
++libexecdir!$libexecdir$ac_delim
++datarootdir!$datarootdir$ac_delim
++datadir!$datadir$ac_delim
++sysconfdir!$sysconfdir$ac_delim
++sharedstatedir!$sharedstatedir$ac_delim
++localstatedir!$localstatedir$ac_delim
++includedir!$includedir$ac_delim
++oldincludedir!$oldincludedir$ac_delim
++docdir!$docdir$ac_delim
++infodir!$infodir$ac_delim
++htmldir!$htmldir$ac_delim
++dvidir!$dvidir$ac_delim
++pdfdir!$pdfdir$ac_delim
++psdir!$psdir$ac_delim
++libdir!$libdir$ac_delim
++localedir!$localedir$ac_delim
++mandir!$mandir$ac_delim
++DEFS!$DEFS$ac_delim
++ECHO_C!$ECHO_C$ac_delim
++ECHO_N!$ECHO_N$ac_delim
++ECHO_T!$ECHO_T$ac_delim
++LIBS!$LIBS$ac_delim
++build_alias!$build_alias$ac_delim
++host_alias!$host_alias$ac_delim
++target_alias!$target_alias$ac_delim
++build!$build$ac_delim
++build_cpu!$build_cpu$ac_delim
++build_vendor!$build_vendor$ac_delim
++build_os!$build_os$ac_delim
++host!$host$ac_delim
++host_cpu!$host_cpu$ac_delim
++host_vendor!$host_vendor$ac_delim
++host_os!$host_os$ac_delim
++target!$target$ac_delim
++target_cpu!$target_cpu$ac_delim
++target_vendor!$target_vendor$ac_delim
++target_os!$target_os$ac_delim
++CC!$CC$ac_delim
++CFLAGS!$CFLAGS$ac_delim
++LDFLAGS!$LDFLAGS$ac_delim
++CPPFLAGS!$CPPFLAGS$ac_delim
++ac_ct_CC!$ac_ct_CC$ac_delim
++EXEEXT!$EXEEXT$ac_delim
++OBJEXT!$OBJEXT$ac_delim
++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
++INSTALL_DATA!$INSTALL_DATA$ac_delim
++CYGPATH_W!$CYGPATH_W$ac_delim
++PACKAGE!$PACKAGE$ac_delim
++VERSION!$VERSION$ac_delim
++ACLOCAL!$ACLOCAL$ac_delim
++AUTOCONF!$AUTOCONF$ac_delim
++AUTOMAKE!$AUTOMAKE$ac_delim
++AUTOHEADER!$AUTOHEADER$ac_delim
++MAKEINFO!$MAKEINFO$ac_delim
++install_sh!$install_sh$ac_delim
++STRIP!$STRIP$ac_delim
++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
++mkdir_p!$mkdir_p$ac_delim
++AWK!$AWK$ac_delim
++SET_MAKE!$SET_MAKE$ac_delim
++am__leading_dot!$am__leading_dot$ac_delim
++AMTAR!$AMTAR$ac_delim
++am__tar!$am__tar$ac_delim
++am__untar!$am__untar$ac_delim
++DEPDIR!$DEPDIR$ac_delim
++am__include!$am__include$ac_delim
++am__quote!$am__quote$ac_delim
++AMDEP_TRUE!$AMDEP_TRUE$ac_delim
++AMDEP_FALSE!$AMDEP_FALSE$ac_delim
++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
++CCDEPMODE!$CCDEPMODE$ac_delim
++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
++LN_S!$LN_S$ac_delim
++RANLIB!$RANLIB$ac_delim
++LIBTOOL!$LIBTOOL$ac_delim
++WARN_CFLAGS!$WARN_CFLAGS$ac_delim
++NO_WERROR!$NO_WERROR$ac_delim
++YACC!$YACC$ac_delim
++YFLAGS!$YFLAGS$ac_delim
++LEX!$LEX$ac_delim
++LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim
++LEXLIB!$LEXLIB$ac_delim
++CPP!$CPP$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+-fi # test -n "$CONFIG_FILES"
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
++
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++CEOF$ac_eof
++_ACEOF
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++GREP!$GREP$ac_delim
++EGREP!$EGREP$ac_delim
++ALLOCA!$ALLOCA$ac_delim
++USE_NLS!$USE_NLS$ac_delim
++MSGFMT!$MSGFMT$ac_delim
++GMSGFMT!$GMSGFMT$ac_delim
++XGETTEXT!$XGETTEXT$ac_delim
++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim
++CATALOGS!$CATALOGS$ac_delim
++CATOBJEXT!$CATOBJEXT$ac_delim
++DATADIRNAME!$DATADIRNAME$ac_delim
++GMOFILES!$GMOFILES$ac_delim
++INSTOBJEXT!$INSTOBJEXT$ac_delim
++INTLDEPS!$INTLDEPS$ac_delim
++INTLLIBS!$INTLLIBS$ac_delim
++INTLOBJS!$INTLOBJS$ac_delim
++POFILES!$POFILES$ac_delim
++POSUB!$POSUB$ac_delim
++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim
++GT_NO!$GT_NO$ac_delim
++GT_YES!$GT_YES$ac_delim
++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim
++l!$l$ac_delim
++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
++MAINT!$MAINT$ac_delim
++HDEFINES!$HDEFINES$ac_delim
++AR!$AR$ac_delim
++CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim
++EXEEXT_FOR_BUILD!$EXEEXT_FOR_BUILD$ac_delim
++DEMANGLER_NAME!$DEMANGLER_NAME$ac_delim
++NLMCONV_DEFS!$NLMCONV_DEFS$ac_delim
++BUILD_NLMCONV!$BUILD_NLMCONV$ac_delim
++BUILD_SRCONV!$BUILD_SRCONV$ac_delim
++BUILD_DLLTOOL!$BUILD_DLLTOOL$ac_delim
++DLLTOOL_DEFS!$DLLTOOL_DEFS$ac_delim
++BUILD_WINDRES!$BUILD_WINDRES$ac_delim
++BUILD_DLLWRAP!$BUILD_DLLWRAP$ac_delim
++BUILD_MISC!$BUILD_MISC$ac_delim
++OBJDUMP_DEFS!$OBJDUMP_DEFS$ac_delim
++EMULATION!$EMULATION$ac_delim
++EMULATION_VECTOR!$EMULATION_VECTOR$ac_delim
++LIBOBJS!$LIBOBJS$ac_delim
++LTLIBOBJS!$LTLIBOBJS$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 44; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
++ fi
++done
+
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
++
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++:end
++s/|#_!!_#|//g
++CEOF$ac_eof
+ _ACEOF
++
++
++# VPATH may cause trouble with some makes, so we remove $(srcdir),
++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
++# trailing colons and then remove the whole line if VPATH becomes empty
++# (actually we leave an empty line to preserve line numbers).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/
++s/:*\${srcdir}:*/:/
++s/:*@srcdir@:*/:/
++s/^\([^=]*=[ ]*\):*/\1/
++s/:*$//
++s/^[^=]*=[ ]*$//
++}'
++fi
++
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+- case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++fi # test -n "$CONFIG_FILES"
++
++
++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
++do
++ case $ac_tag in
++ :[FHLC]) ac_mode=$ac_tag; continue;;
++ esac
++ case $ac_mode$ac_tag in
++ :[FHL]*:*);;
++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
++echo "$as_me: error: Invalid tag $ac_tag." >&2;}
++ { (exit 1); exit 1; }; };;
++ :[FH]-) ac_tag=-:-;;
++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
++ esac
++ ac_save_IFS=$IFS
++ IFS=:
++ set x $ac_tag
++ IFS=$ac_save_IFS
++ shift
++ ac_file=$1
++ shift
++
++ case $ac_mode in
++ :L) ac_source=$1;;
++ :[FH])
++ ac_file_inputs=
++ for ac_f
++ do
++ case $ac_f in
++ -) ac_f="$tmp/stdin";;
++ *) # Look for the file first in the build tree, then in the source tree
++ # (if the path is not absolute). The absolute path cannot be DOS-style,
++ # because $ac_f cannot contain `:'.
++ test -f "$ac_f" ||
++ case $ac_f in
++ [\\/$]*) false;;
++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
++ esac ||
++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
++echo "$as_me: error: cannot find input file: $ac_f" >&2;}
++ { (exit 1); exit 1; }; };;
++ esac
++ ac_file_inputs="$ac_file_inputs $ac_f"
++ done
++
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ configure_input="Generated from "`IFS=:
++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
++ if test x"$ac_file" != x-; then
++ configure_input="$ac_file. $configure_input"
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ fi
++
++ case $ac_tag in
++ *:-:* | *:-) cat >"$tmp/stdin";;
++ esac
++ ;;
+ esac
+
+- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++ ac_dir=`$as_dirname -- "$ac_file" ||
+ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir="$ac_dir"
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+
++ case $ac_mode in
++ :F)
++ #
++ # CONFIG_FILE
++ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
++_ACEOF
+
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- configure_input=
+- else
+- configure_input="$ac_file. "
+- fi
+- configure_input=$configure_input"Generated from `echo $ac_file_in |
+- sed 's,.*/,,'` by configure."
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
++cat >>$CONFIG_STATUS <<\_ACEOF
++# If the template does not know about datarootdir, expand it.
++# FIXME: This hack should be removed a few years after 2.60.
++ac_datarootdir_hack=; ac_datarootdir_seen=
++
++case `sed -n '/datarootdir/ {
++ p
++ q
++}
++/@datadir@/p
++/@docdir@/p
++/@infodir@/p
++/@localedir@/p
++/@mandir@/p
++' $ac_file_inputs` in
++*datarootdir*) ac_datarootdir_seen=yes;;
++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
++_ACEOF
++cat >>$CONFIG_STATUS <<_ACEOF
++ ac_datarootdir_hack='
++ s&@datadir@&$datadir&g
++ s&@docdir@&$docdir&g
++ s&@infodir@&$infodir&g
++ s&@localedir@&$localedir&g
++ s&@mandir@&$mandir&g
++ s&\\\${datarootdir}&$datarootdir&g' ;;
++esac
+ _ACEOF
++
++# Neutralize VPATH when `$srcdir' = `.'.
++# Shell code in configure.ac might set extrasub.
++# FIXME: do we really want to maintain this feature?
+ cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+@@ -11790,248 +12317,130 @@ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+- rm -f $tmp/stdin
+- if test x"$ac_file" != x-; then
+- mv $tmp/out $ac_file
+- else
+- cat $tmp/out
+- rm -f $tmp/out
+- fi
+-
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_HEADER section.
+-#
+-
+-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+-# NAME is the cpp macro being defined and VALUE is the value it is being given.
+-#
+-# ac_d sets the value in "#define NAME VALUE" lines.
+-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+-ac_dB='[ ].*$,\1#\2'
+-ac_dC=' '
+-ac_dD=',;t'
+-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+-ac_uB='$,\1#\2define\3'
+-ac_uC=' '
+-ac_uD=',;t'
++s&@configure_input@&$configure_input&;t t
++s&@top_builddir@&$ac_top_builddir_sub&;t t
++s&@srcdir@&$ac_srcdir&;t t
++s&@abs_srcdir@&$ac_abs_srcdir&;t t
++s&@top_srcdir@&$ac_top_srcdir&;t t
++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
++s&@builddir@&$ac_builddir&;t t
++s&@abs_builddir@&$ac_abs_builddir&;t t
++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
++s&@INSTALL@&$ac_INSTALL&;t t
++$ac_datarootdir_hack
++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
++
++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&5
++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&2;}
+
+-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ rm -f "$tmp/stdin"
+ case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++ -) cat "$tmp/out"; rm -f "$tmp/out";;
++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
++ ;;
++ :H)
++ #
++ # CONFIG_HEADER
++ #
++_ACEOF
++
++# Transform confdefs.h into a sed script `conftest.defines', that
++# substitutes the proper values into config.h.in to produce config.h.
++rm -f conftest.defines conftest.tail
++# First, append a space to every undef/define line, to ease matching.
++echo 's/$/ /' >conftest.defines
++# Then, protect against being on the right side of a sed subst, or in
++# an unquoted here document, in config.status. If some macros were
++# called several times there might be several #defines for the same
++# symbol, which is useless. But do not sort them, since the last
++# AC_DEFINE must be honored.
++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
++# NAME is the cpp macro being defined, VALUE is the value it is being given.
++# PARAMS is the parameter list in the macro definition--in most cases, it's
++# just an empty string.
++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
++ac_dB='\\)[ (].*,\\1define\\2'
++ac_dC=' '
++ac_dD=' ,'
+
+- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- # Do quote $f, to prevent DOS paths from being IFS'd.
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+- # Remove the trailing spaces.
+- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+-
+-_ACEOF
+-
+-# Transform confdefs.h into two sed scripts, `conftest.defines' and
+-# `conftest.undefs', that substitutes the proper values into
+-# config.h.in to produce config.h. The first handles `#define'
+-# templates, and the second `#undef' templates.
+-# And first: Protect against being on the right side of a sed subst in
+-# config.status. Protect against being in an unquoted here document
+-# in config.status.
+-rm -f conftest.defines conftest.undefs
+-# Using a here document instead of a string reduces the quoting nightmare.
+-# Putting comments in sed scripts is not portable.
+-#
+-# `end' is used to avoid that the second main sed command (meant for
+-# 0-ary CPP macros) applies to n-ary macro definitions.
+-# See the Autoconf documentation for `clear'.
+-cat >confdef2sed.sed <<\_ACEOF
+-s/[\\&,]/\\&/g
+-s,[\\$`],\\&,g
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+-t end
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+-: end
+-_ACEOF
+-# If some macros were called several times there might be several times
+-# the same #defines, which is useless. Nevertheless, we may not want to
+-# sort them, since we want the *last* AC-DEFINE to be honored.
+-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+-rm -f confdef2sed.sed
++uniq confdefs.h |
++ sed -n '
++ t rset
++ :rset
++ s/^[ ]*#[ ]*define[ ][ ]*//
++ t ok
++ d
++ :ok
++ s/[\\&,]/\\&/g
++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
++ ' >>conftest.defines
+
+-# This sed command replaces #undef with comments. This is necessary, for
++# Remove the space that was appended to ease matching.
++# Then replace #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-cat >>conftest.undefs <<\_ACEOF
+-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++# (The regexp can be short, since the line contains either #define or #undef.)
++echo 's/ $//
++s,^[ #]*u.*,/* & */,' >>conftest.defines
++
++# Break up conftest.defines:
++ac_max_sed_lines=50
++
++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
++# et cetera.
++ac_in='$ac_file_inputs'
++ac_out='"$tmp/out1"'
++ac_nxt='"$tmp/out2"'
++
++while :
++do
++ # Write a here document:
++ cat >>$CONFIG_STATUS <<_ACEOF
++ # First, check the format of the line:
++ cat >"\$tmp/defines.sed" <<\\CEOF
++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
++b
++:def
+ _ACEOF
+-
+-# Break up conftest.defines because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+-echo ' :' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.defines >/dev/null
+-do
+- # Write a limited-size here document to $tmp/defines.sed.
+- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#define' lines.
+- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f $tmp/defines.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
++ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines
+-echo ' fi # grep' >>$CONFIG_STATUS
+-echo >>$CONFIG_STATUS
+-
+-# Break up conftest.undefs because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.undefs >/dev/null
+-do
+- # Write a limited-size here document to $tmp/undefs.sed.
+- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#undef'
+- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+- echo 'CEOF
+- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+- rm -f conftest.undefs
+- mv conftest.tail conftest.undefs
+-done
+-rm -f conftest.undefs
++rm -f conftest.defines conftest.tail
+
++echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- echo "/* Generated by configure. */" >$tmp/config.h
+- else
+- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+- fi
+- cat $tmp/in >>$tmp/config.h
+- rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ echo "/* $configure_input */" >"$tmp/config.h"
++ cat "$ac_result" >>"$tmp/config.h"
++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_file" : 'X\(//\)[^/]' \| \
+- X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+ rm -f $ac_file
+- mv $tmp/config.h $ac_file
++ mv "$tmp/config.h" $ac_file
+ fi
+ else
+- cat $tmp/config.h
+- rm -f $tmp/config.h
++ echo "/* $configure_input */"
++ cat "$ac_result"
+ fi
++ rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -12042,135 +12451,39 @@ for _am_header in $config_headers :; do
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
+ $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+- X$ac_file : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
+ echo X$ac_file |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`/stamp-h$_am_stamp_count
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_COMMANDS section.
+-#
+-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_dest" : 'X\(//\)[^/]' \| \
+- X"$ac_dest" : 'X\(//\)$' \| \
+- X"$ac_dest" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_dest" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+- ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+- .) # No --srcdir option. We are building in place.
+- ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
+- ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++ ;;
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
++echo "$as_me: executing $ac_file commands" >&6;}
++ ;;
++ esac
+
+
+- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+-echo "$as_me: executing $ac_dest commands" >&6;}
+- case $ac_dest in
+- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ case $ac_file$ac_mode in
++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -12180,18 +12493,29 @@ echo "$as_me: executing $ac_dest command
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`(dirname "$mf") 2>/dev/null ||
++ dirpart=`$as_dirname -- "$mf" ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -12213,58 +12537,84 @@ echo X"$mf" |
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`(dirname "$file") 2>/dev/null ||
++ fdir=`$as_dirname -- "$file" ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p $dirpart/$fdir
+- else
+- as_dir=$dirpart/$fdir
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir=$dirpart/$fdir
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
+- default )
++ "default":C)
+ case "x$CONFIG_FILES" in
+ *) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;;
+ esac
+ ;;
++
+ esac
+-done
+-_ACEOF
++done # for ac_tag
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+diff -Nrup binutils-2.17/binutils/doc/binutils.info binutils-2.17.atmel.1.3.0/binutils/doc/binutils.info
+--- binutils-2.17/binutils/doc/binutils.info 2006-06-23 20:19:48.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/binutils/doc/binutils.info 2007-03-26 10:34:44.000000000 +0200
+@@ -1,5 +1,7 @@
+-This is ../.././binutils/doc/binutils.info, produced by makeinfo
+-version 4.8 from ../.././binutils/doc/binutils.texi.
++This is
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/binutils/doc/binutils.info,
++produced by makeinfo version 4.8 from
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/binutils/doc/binutils.texi.
+
+ START-INFO-DIR-ENTRY
+ * Binutils: (binutils). The GNU binary utilities.
+@@ -3803,33 +3805,33 @@ Index
+
+ 
+ Tag Table:
+-Node: Top1751
+-Node: ar3304
+-Node: ar cmdline5482
+-Node: ar scripts13625
+-Node: nm19313
+-Node: objcopy27509
+-Node: objdump50561
+-Node: ranlib65474
+-Node: size66229
+-Node: strings69076
+-Node: strip71426
+-Node: c++filt76905
+-Ref: c++filt-Footnote-181833
+-Node: addr2line81939
+-Node: nlmconv85210
+-Node: windres87816
+-Node: dlltool93549
+-Node: def file format104387
+-Node: readelf106125
+-Node: Common Options110833
+-Node: Selecting The Target System111873
+-Node: Target Selection112805
+-Node: Architecture Selection114787
+-Node: Reporting Bugs115615
+-Node: Bug Criteria116394
+-Node: Bug Reporting116947
+-Node: GNU Free Documentation License124041
+-Node: Index143773
++Node: Top1885
++Node: ar3438
++Node: ar cmdline5616
++Node: ar scripts13759
++Node: nm19447
++Node: objcopy27643
++Node: objdump50695
++Node: ranlib65608
++Node: size66363
++Node: strings69210
++Node: strip71560
++Node: c++filt77039
++Ref: c++filt-Footnote-181967
++Node: addr2line82073
++Node: nlmconv85344
++Node: windres87950
++Node: dlltool93683
++Node: def file format104521
++Node: readelf106259
++Node: Common Options110967
++Node: Selecting The Target System112007
++Node: Target Selection112939
++Node: Architecture Selection114921
++Node: Reporting Bugs115749
++Node: Bug Criteria116528
++Node: Bug Reporting117081
++Node: GNU Free Documentation License124175
++Node: Index143907
+ 
+ End Tag Table
+diff -Nrup binutils-2.17/binutils/doc/Makefile.in binutils-2.17.atmel.1.3.0/binutils/doc/Makefile.in
+--- binutils-2.17/binutils/doc/Makefile.in 2006-06-03 06:45:50.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/binutils/doc/Makefile.in 2007-03-26 10:32:10.000000000 +0200
+@@ -109,6 +109,7 @@ EXEEXT = @EXEEXT@
+ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+ GMOFILES = @GMOFILES@
+ GMSGFMT = @GMSGFMT@
++GREP = @GREP@
+ GT_NO = @GT_NO@
+ GT_YES = @GT_YES@
+ HDEFINES = @HDEFINES@
+@@ -159,9 +160,8 @@ VERSION = @VERSION@
+ WARN_CFLAGS = @WARN_CFLAGS@
+ XGETTEXT = @XGETTEXT@
+ YACC = @YACC@
++YFLAGS = @YFLAGS@
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_RANLIB = @ac_ct_RANLIB@
+-ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__include = @am__include@
+@@ -178,6 +178,7 @@ build_vendor = @build_vendor@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+@@ -191,12 +192,15 @@ install_sh = @install_sh@
+ l = @l@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
++psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -368,10 +372,13 @@ dist-info: $(INFO_DEPS)
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+- for file in $$d/$$base*; do \
+- relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+- test -f $(distdir)/$$relfile || \
+- cp -p $$file $(distdir)/$$relfile; \
++ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
++ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
++ if test -f $$file; then \
++ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
++ test -f $(distdir)/$$relfile || \
++ cp -p $$file $(distdir)/$$relfile; \
++ else :; fi; \
+ done; \
+ done
+
+diff -Nrup binutils-2.17/binutils/Makefile.am binutils-2.17.atmel.1.3.0/binutils/Makefile.am
+--- binutils-2.17/binutils/Makefile.am 2006-04-06 23:49:26.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/binutils/Makefile.am 2007-03-26 10:20:22.000000000 +0200
+@@ -511,7 +511,7 @@ readelf.o: readelf.c dwarf.h ../bfd/bfd.
+ $(INCDIR)/symcat.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/alpha.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \
+- $(INCDIR)/elf/avr.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \
++ $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \
+ $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
+ $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/h8.h \
+ $(INCDIR)/elf/hppa.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/i370.h \
+diff -Nrup binutils-2.17/binutils/Makefile.in binutils-2.17.atmel.1.3.0/binutils/Makefile.in
+--- binutils-2.17/binutils/Makefile.in 2006-06-02 04:21:08.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/binutils/Makefile.in 2007-03-26 10:32:10.000000000 +0200
+@@ -266,6 +266,7 @@ EXEEXT = @EXEEXT@
+ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+ GMOFILES = @GMOFILES@
+ GMSGFMT = @GMSGFMT@
++GREP = @GREP@
+ GT_NO = @GT_NO@
+ GT_YES = @GT_YES@
+ HDEFINES = @HDEFINES@
+@@ -316,9 +317,8 @@ VERSION = @VERSION@
+ WARN_CFLAGS = @WARN_CFLAGS@
+ XGETTEXT = @XGETTEXT@
+ YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi`
++YFLAGS = -d
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_RANLIB = @ac_ct_RANLIB@
+-ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__include = @am__include@
+@@ -335,6 +335,7 @@ build_vendor = @build_vendor@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+@@ -348,12 +349,15 @@ install_sh = @install_sh@
+ l = @l@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
++psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -365,7 +369,6 @@ target_vendor = @target_vendor@
+ AUTOMAKE_OPTIONS = cygnus dejagnu
+ SUBDIRS = doc po
+ tooldir = $(exec_prefix)/$(target_alias)
+-YFLAGS = -d
+ AM_CFLAGS = $(WARN_CFLAGS)
+
+ # these two are almost the same program
+@@ -1264,7 +1267,7 @@ readelf.o: readelf.c dwarf.h ../bfd/bfd.
+ $(INCDIR)/symcat.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/alpha.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \
+- $(INCDIR)/elf/avr.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \
++ $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \
+ $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
+ $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/h8.h \
+ $(INCDIR)/elf/hppa.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/i370.h \
+diff -Nrup binutils-2.17/binutils/readelf.c binutils-2.17.atmel.1.3.0/binutils/readelf.c
+--- binutils-2.17/binutils/readelf.c 2006-03-10 18:20:28.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/binutils/readelf.c 2007-03-26 10:20:22.000000000 +0200
+@@ -71,6 +71,7 @@
+ #include "elf/arc.h"
+ #include "elf/arm.h"
+ #include "elf/avr.h"
++#include "elf/avr32.h"
+ #include "elf/bfin.h"
+ #include "elf/cris.h"
+ #include "elf/d10v.h"
+@@ -590,6 +591,7 @@ guess_is_rela (unsigned long e_machine)
+ case EM_MCORE:
+ case EM_IA_64:
+ case EM_AVR:
++ case EM_AVR32:
+ case EM_AVR_OLD:
+ case EM_CRIS:
+ case EM_860:
+@@ -959,6 +961,10 @@ dump_relocations (FILE *file,
+ rtype = elf_avr_reloc_type (type);
+ break;
+
++ case EM_AVR32:
++ rtype = elf_avr32_reloc_type (type);
++ break;
++
+ case EM_OLD_SPARCV9:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+@@ -1670,6 +1676,7 @@ get_machine_name (unsigned e_machine)
+ case EM_VAX: return "Digital VAX";
+ case EM_AVR_OLD:
+ case EM_AVR: return "Atmel AVR 8-bit microcontroller";
++ case EM_AVR32: return "Atmel AVR32";
+ case EM_CRIS: return "Axis Communications 32-bit embedded processor";
+ case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu";
+ case EM_FIREPATH: return "Element 14 64-bit DSP processor";
+diff -Nrup binutils-2.17/configure binutils-2.17.atmel.1.3.0/configure
+--- binutils-2.17/configure 2006-04-06 23:49:25.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/configure 2007-03-26 10:30:30.000000000 +0200
+@@ -899,7 +899,7 @@ host_libs="intl mmalloc libiberty opcode
+ # know that we are building the simulator.
+ # binutils, gas and ld appear in that order because it makes sense to run
+ # "make check" in that particular order.
+-host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
++host_tools="byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
+
+ # libgcj represents the runtime libraries only used by gcj.
+ libgcj="target-libffi \
+@@ -1064,6 +1064,9 @@ unsupported_languages=
+ # exist yet.
+
+ case "${host}" in
++ avr32*-*-*)
++ noconfigdirs="$noconfigdirs readline gdb"
++ ;;
+ hppa*64*-*-*)
+ noconfigdirs="$noconfigdirs byacc"
+ ;;
+@@ -1863,7 +1866,7 @@ else
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1867: checking for $ac_word" >&5
++echo "configure:1870: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1893,7 +1896,7 @@ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1897: checking for $ac_word" >&5
++echo "configure:1900: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1944,7 +1947,7 @@ fi
+ # Extract the first word of "cl", so it can be a program name with args.
+ set dummy cl; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1948: checking for $ac_word" >&5
++echo "configure:1951: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1976,7 +1979,7 @@ fi
+ fi
+
+ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+-echo "configure:1980: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
++echo "configure:1983: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ ac_ext=c
+ # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+@@ -1987,12 +1990,12 @@ cross_compiling=$ac_cv_prog_cc_cross
+
+ cat > conftest.$ac_ext << EOF
+
+-#line 1991 "configure"
++#line 1994 "configure"
+ #include "confdefs.h"
+
+ main(){return(0);}
+ EOF
+-if { (eval echo configure:1996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:1999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+@@ -2018,12 +2021,12 @@ if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+ fi
+ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+-echo "configure:2022: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
++echo "configure:2025: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+ cross_compiling=$ac_cv_prog_cc_cross
+
+ echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+-echo "configure:2027: checking whether we are using GNU C" >&5
++echo "configure:2030: checking whether we are using GNU C" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2032,7 +2035,7 @@ else
+ yes;
+ #endif
+ EOF
+-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+ else
+ ac_cv_prog_gcc=no
+@@ -2051,7 +2054,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+-echo "configure:2055: checking whether ${CC-cc} accepts -g" >&5
++echo "configure:2058: checking whether ${CC-cc} accepts -g" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2118,7 +2121,7 @@ fi
+ # Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gnatbind; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2122: checking for $ac_word" >&5
++echo "configure:2125: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2150,7 +2153,7 @@ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "gnatbind", so it can be a program name with args.
+ set dummy gnatbind; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:2154: checking for $ac_word" >&5
++echo "configure:2157: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2183,7 +2186,7 @@ fi
+ fi
+
+ echo $ac_n "checking whether compiler driver understands Ada""... $ac_c" 1>&6
+-echo "configure:2187: checking whether compiler driver understands Ada" >&5
++echo "configure:2190: checking whether compiler driver understands Ada" >&5
+ if eval "test \"`echo '$''{'acx_cv_cc_gcc_supports_ada'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2215,7 +2218,7 @@ else
+ fi
+
+ echo $ac_n "checking how to compare bootstrapped objects""... $ac_c" 1>&6
+-echo "configure:2219: checking how to compare bootstrapped objects" >&5
++echo "configure:2222: checking how to compare bootstrapped objects" >&5
+ if eval "test \"`echo '$''{'gcc_cv_prog_cmp_skip'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2313,9 +2316,9 @@ saved_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $gmpinc"
+ # Check GMP actually works
+ echo $ac_n "checking for correct version of gmp.h""... $ac_c" 1>&6
+-echo "configure:2317: checking for correct version of gmp.h" >&5
++echo "configure:2320: checking for correct version of gmp.h" >&5
+ cat > conftest.$ac_ext <<EOF
+-#line 2319 "configure"
++#line 2322 "configure"
+ #include "confdefs.h"
+ #include "gmp.h"
+ int main() {
+@@ -2326,7 +2329,7 @@ choke me
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2330: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ echo "$ac_t""yes" 1>&6
+ else
+@@ -2339,12 +2342,12 @@ rm -f conftest*
+
+ if test x"$have_gmp" = xyes; then
+ echo $ac_n "checking for MPFR""... $ac_c" 1>&6
+-echo "configure:2343: checking for MPFR" >&5
++echo "configure:2346: checking for MPFR" >&5
+
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $gmplibs"
+ cat > conftest.$ac_ext <<EOF
+-#line 2348 "configure"
++#line 2351 "configure"
+ #include "confdefs.h"
+ #include <gmp.h>
+ #include <mpfr.h>
+@@ -2352,7 +2355,7 @@ int main() {
+ mpfr_t n; mpfr_init(n);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:2359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ echo "$ac_t""yes" 1>&6
+ else
+@@ -3403,7 +3406,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3407: checking for $ac_word" >&5
++echo "configure:3410: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3443,7 +3446,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3447: checking for $ac_word" >&5
++echo "configure:3450: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3482,7 +3485,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3486: checking for $ac_word" >&5
++echo "configure:3489: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_M4'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3521,7 +3524,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3525: checking for $ac_word" >&5
++echo "configure:3528: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3561,7 +3564,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3565: checking for $ac_word" >&5
++echo "configure:3568: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3600,7 +3603,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3604: checking for $ac_word" >&5
++echo "configure:3607: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3653,7 +3656,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3657: checking for $ac_word" >&5
++echo "configure:3660: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_EXPECT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3694,7 +3697,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3698: checking for $ac_word" >&5
++echo "configure:3701: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RUNTEST'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3742,7 +3745,7 @@ test -n "$target_alias" && ncn_target_to
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3746: checking for $ac_word" >&5
++echo "configure:3749: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3773,7 +3776,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3777: checking for $ac_word" >&5
++echo "configure:3780: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3817,7 +3820,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3821: checking for $ac_word" >&5
++echo "configure:3824: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3848,7 +3851,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3852: checking for $ac_word" >&5
++echo "configure:3855: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3892,7 +3895,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3896: checking for $ac_word" >&5
++echo "configure:3899: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3923,7 +3926,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3927: checking for $ac_word" >&5
++echo "configure:3930: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3967,7 +3970,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:3971: checking for $ac_word" >&5
++echo "configure:3974: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3998,7 +4001,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4002: checking for $ac_word" >&5
++echo "configure:4005: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4042,7 +4045,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4046: checking for $ac_word" >&5
++echo "configure:4049: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LIPO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4073,7 +4076,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4077: checking for $ac_word" >&5
++echo "configure:4080: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LIPO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4117,7 +4120,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4121: checking for $ac_word" >&5
++echo "configure:4124: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4148,7 +4151,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4152: checking for $ac_word" >&5
++echo "configure:4155: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4192,7 +4195,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4196: checking for $ac_word" >&5
++echo "configure:4199: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4223,7 +4226,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4227: checking for $ac_word" >&5
++echo "configure:4230: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4262,7 +4265,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4266: checking for $ac_word" >&5
++echo "configure:4269: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4293,7 +4296,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4297: checking for $ac_word" >&5
++echo "configure:4300: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4332,7 +4335,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4336: checking for $ac_word" >&5
++echo "configure:4339: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4363,7 +4366,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4367: checking for $ac_word" >&5
++echo "configure:4370: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4407,7 +4410,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4411: checking for $ac_word" >&5
++echo "configure:4414: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4438,7 +4441,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4442: checking for $ac_word" >&5
++echo "configure:4445: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4482,7 +4485,7 @@ fi
+ # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4486: checking for $ac_word" >&5
++echo "configure:4489: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4513,7 +4516,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4517: checking for $ac_word" >&5
++echo "configure:4520: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4577,7 +4580,7 @@ fi
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in cc gcc; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4581: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4584: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_CC_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -4594,7 +4597,7 @@ if test -z "$ac_cv_prog_CC_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4598: checking for $ac_word" >&5
++echo "configure:4601: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4625,7 +4628,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4629: checking for $ac_word" >&5
++echo "configure:4632: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4668,7 +4671,7 @@ fi
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in c++ g++ cxx gxx; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4672: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4675: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_CXX_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -4685,7 +4688,7 @@ if test -z "$ac_cv_prog_CXX_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4689: checking for $ac_word" >&5
++echo "configure:4692: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4716,7 +4719,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4720: checking for $ac_word" >&5
++echo "configure:4723: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4759,7 +4762,7 @@ fi
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in gcc; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4763: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4766: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_GCC_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -4776,7 +4779,7 @@ if test -z "$ac_cv_prog_GCC_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4780: checking for $ac_word" >&5
++echo "configure:4783: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4807,7 +4810,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4811: checking for $ac_word" >&5
++echo "configure:4814: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4845,7 +4848,7 @@ fi
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in gcj; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4849: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4852: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_GCJ_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -4862,7 +4865,7 @@ if test -z "$ac_cv_prog_GCJ_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4866: checking for $ac_word" >&5
++echo "configure:4869: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4893,7 +4896,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4897: checking for $ac_word" >&5
++echo "configure:4900: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4936,7 +4939,7 @@ fi
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in gfortran; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4940: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4943: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_GFORTRAN_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -4953,7 +4956,7 @@ if test -z "$ac_cv_prog_GFORTRAN_FOR_TAR
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4957: checking for $ac_word" >&5
++echo "configure:4960: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4984,7 +4987,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4988: checking for $ac_word" >&5
++echo "configure:4991: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5091,7 +5094,7 @@ rm conftest.c
+ if test -z "$ac_cv_path_AR_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for ar in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5095: checking for ar in $with_build_time_tools" >&5
++echo "configure:5098: checking for ar in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/ar; then
+ AR_FOR_TARGET=`cd $with_build_time_tools && pwd`/ar
+ ac_cv_path_AR_FOR_TARGET=$AR_FOR_TARGET
+@@ -5109,7 +5112,7 @@ if test -z "$ac_cv_path_AR_FOR_TARGET" ;
+ # Extract the first word of "ar", so it can be a program name with args.
+ set dummy ar; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5113: checking for $ac_word" >&5
++echo "configure:5116: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_AR_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5146,7 +5149,7 @@ if test -z "$ac_cv_path_AR_FOR_TARGET" ;
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in ar; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5150: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5153: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_AR_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -5163,7 +5166,7 @@ if test -z "$ac_cv_prog_AR_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5167: checking for $ac_word" >&5
++echo "configure:5170: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5194,7 +5197,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5198: checking for $ac_word" >&5
++echo "configure:5201: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5244,7 +5247,7 @@ fi
+ if test -z "$ac_cv_path_AS_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for as in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5248: checking for as in $with_build_time_tools" >&5
++echo "configure:5251: checking for as in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/as; then
+ AS_FOR_TARGET=`cd $with_build_time_tools && pwd`/as
+ ac_cv_path_AS_FOR_TARGET=$AS_FOR_TARGET
+@@ -5262,7 +5265,7 @@ if test -z "$ac_cv_path_AS_FOR_TARGET" ;
+ # Extract the first word of "as", so it can be a program name with args.
+ set dummy as; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5266: checking for $ac_word" >&5
++echo "configure:5269: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_AS_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5299,7 +5302,7 @@ if test -z "$ac_cv_path_AS_FOR_TARGET" ;
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in as; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5303: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5306: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_AS_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -5316,7 +5319,7 @@ if test -z "$ac_cv_prog_AS_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5320: checking for $ac_word" >&5
++echo "configure:5323: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5347,7 +5350,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5351: checking for $ac_word" >&5
++echo "configure:5354: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5397,7 +5400,7 @@ fi
+ if test -z "$ac_cv_path_DLLTOOL_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for dlltool in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5401: checking for dlltool in $with_build_time_tools" >&5
++echo "configure:5404: checking for dlltool in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/dlltool; then
+ DLLTOOL_FOR_TARGET=`cd $with_build_time_tools && pwd`/dlltool
+ ac_cv_path_DLLTOOL_FOR_TARGET=$DLLTOOL_FOR_TARGET
+@@ -5415,7 +5418,7 @@ if test -z "$ac_cv_path_DLLTOOL_FOR_TARG
+ # Extract the first word of "dlltool", so it can be a program name with args.
+ set dummy dlltool; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5419: checking for $ac_word" >&5
++echo "configure:5422: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5452,7 +5455,7 @@ if test -z "$ac_cv_path_DLLTOOL_FOR_TARG
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in dlltool; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5456: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5459: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_DLLTOOL_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -5469,7 +5472,7 @@ if test -z "$ac_cv_prog_DLLTOOL_FOR_TARG
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5473: checking for $ac_word" >&5
++echo "configure:5476: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5500,7 +5503,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5504: checking for $ac_word" >&5
++echo "configure:5507: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5550,7 +5553,7 @@ fi
+ if test -z "$ac_cv_path_LD_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for ld in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5554: checking for ld in $with_build_time_tools" >&5
++echo "configure:5557: checking for ld in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/ld; then
+ LD_FOR_TARGET=`cd $with_build_time_tools && pwd`/ld
+ ac_cv_path_LD_FOR_TARGET=$LD_FOR_TARGET
+@@ -5568,7 +5571,7 @@ if test -z "$ac_cv_path_LD_FOR_TARGET" ;
+ # Extract the first word of "ld", so it can be a program name with args.
+ set dummy ld; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5572: checking for $ac_word" >&5
++echo "configure:5575: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_LD_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5605,7 +5608,7 @@ if test -z "$ac_cv_path_LD_FOR_TARGET" ;
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in ld; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5609: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5612: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_LD_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -5622,7 +5625,7 @@ if test -z "$ac_cv_prog_LD_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5626: checking for $ac_word" >&5
++echo "configure:5629: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5653,7 +5656,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5657: checking for $ac_word" >&5
++echo "configure:5660: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5703,7 +5706,7 @@ fi
+ if test -z "$ac_cv_path_LIPO_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for lipo in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5707: checking for lipo in $with_build_time_tools" >&5
++echo "configure:5710: checking for lipo in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/lipo; then
+ LIPO_FOR_TARGET=`cd $with_build_time_tools && pwd`/lipo
+ ac_cv_path_LIPO_FOR_TARGET=$LIPO_FOR_TARGET
+@@ -5721,7 +5724,7 @@ if test -z "$ac_cv_path_LIPO_FOR_TARGET"
+ # Extract the first word of "lipo", so it can be a program name with args.
+ set dummy lipo; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5725: checking for $ac_word" >&5
++echo "configure:5728: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_LIPO_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5758,7 +5761,7 @@ if test -z "$ac_cv_path_LIPO_FOR_TARGET"
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in lipo; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5762: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5765: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_LIPO_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -5775,7 +5778,7 @@ if test -z "$ac_cv_prog_LIPO_FOR_TARGET"
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5779: checking for $ac_word" >&5
++echo "configure:5782: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5806,7 +5809,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5810: checking for $ac_word" >&5
++echo "configure:5813: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5856,7 +5859,7 @@ fi
+ if test -z "$ac_cv_path_NM_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for nm in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5860: checking for nm in $with_build_time_tools" >&5
++echo "configure:5863: checking for nm in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/nm; then
+ NM_FOR_TARGET=`cd $with_build_time_tools && pwd`/nm
+ ac_cv_path_NM_FOR_TARGET=$NM_FOR_TARGET
+@@ -5874,7 +5877,7 @@ if test -z "$ac_cv_path_NM_FOR_TARGET" ;
+ # Extract the first word of "nm", so it can be a program name with args.
+ set dummy nm; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5878: checking for $ac_word" >&5
++echo "configure:5881: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_NM_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5911,7 +5914,7 @@ if test -z "$ac_cv_path_NM_FOR_TARGET" ;
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in nm; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5915: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5918: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_NM_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -5928,7 +5931,7 @@ if test -z "$ac_cv_prog_NM_FOR_TARGET";
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5932: checking for $ac_word" >&5
++echo "configure:5935: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5959,7 +5962,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5963: checking for $ac_word" >&5
++echo "configure:5966: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6009,7 +6012,7 @@ fi
+ if test -z "$ac_cv_path_OBJDUMP_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for objdump in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6013: checking for objdump in $with_build_time_tools" >&5
++echo "configure:6016: checking for objdump in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/objdump; then
+ OBJDUMP_FOR_TARGET=`cd $with_build_time_tools && pwd`/objdump
+ ac_cv_path_OBJDUMP_FOR_TARGET=$OBJDUMP_FOR_TARGET
+@@ -6027,7 +6030,7 @@ if test -z "$ac_cv_path_OBJDUMP_FOR_TARG
+ # Extract the first word of "objdump", so it can be a program name with args.
+ set dummy objdump; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6031: checking for $ac_word" >&5
++echo "configure:6034: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6064,7 +6067,7 @@ if test -z "$ac_cv_path_OBJDUMP_FOR_TARG
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in objdump; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6068: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6071: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_OBJDUMP_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -6081,7 +6084,7 @@ if test -z "$ac_cv_prog_OBJDUMP_FOR_TARG
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6085: checking for $ac_word" >&5
++echo "configure:6088: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6112,7 +6115,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6116: checking for $ac_word" >&5
++echo "configure:6119: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6162,7 +6165,7 @@ fi
+ if test -z "$ac_cv_path_RANLIB_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for ranlib in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6166: checking for ranlib in $with_build_time_tools" >&5
++echo "configure:6169: checking for ranlib in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/ranlib; then
+ RANLIB_FOR_TARGET=`cd $with_build_time_tools && pwd`/ranlib
+ ac_cv_path_RANLIB_FOR_TARGET=$RANLIB_FOR_TARGET
+@@ -6180,7 +6183,7 @@ if test -z "$ac_cv_path_RANLIB_FOR_TARGE
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6184: checking for $ac_word" >&5
++echo "configure:6187: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6217,7 +6220,7 @@ if test -z "$ac_cv_path_RANLIB_FOR_TARGE
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in ranlib; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6221: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6224: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_RANLIB_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -6234,7 +6237,7 @@ if test -z "$ac_cv_prog_RANLIB_FOR_TARGE
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6238: checking for $ac_word" >&5
++echo "configure:6241: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6265,7 +6268,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6269: checking for $ac_word" >&5
++echo "configure:6272: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6315,7 +6318,7 @@ fi
+ if test -z "$ac_cv_path_STRIP_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for strip in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6319: checking for strip in $with_build_time_tools" >&5
++echo "configure:6322: checking for strip in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/strip; then
+ STRIP_FOR_TARGET=`cd $with_build_time_tools && pwd`/strip
+ ac_cv_path_STRIP_FOR_TARGET=$STRIP_FOR_TARGET
+@@ -6333,7 +6336,7 @@ if test -z "$ac_cv_path_STRIP_FOR_TARGET
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6337: checking for $ac_word" >&5
++echo "configure:6340: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_STRIP_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6370,7 +6373,7 @@ if test -z "$ac_cv_path_STRIP_FOR_TARGET
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in strip; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6374: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6377: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_STRIP_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -6387,7 +6390,7 @@ if test -z "$ac_cv_prog_STRIP_FOR_TARGET
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6391: checking for $ac_word" >&5
++echo "configure:6394: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6418,7 +6421,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6422: checking for $ac_word" >&5
++echo "configure:6425: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6468,7 +6471,7 @@ fi
+ if test -z "$ac_cv_path_WINDRES_FOR_TARGET" ; then
+ if test -n "$with_build_time_tools"; then
+ echo $ac_n "checking for windres in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6472: checking for windres in $with_build_time_tools" >&5
++echo "configure:6475: checking for windres in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/windres; then
+ WINDRES_FOR_TARGET=`cd $with_build_time_tools && pwd`/windres
+ ac_cv_path_WINDRES_FOR_TARGET=$WINDRES_FOR_TARGET
+@@ -6486,7 +6489,7 @@ if test -z "$ac_cv_path_WINDRES_FOR_TARG
+ # Extract the first word of "windres", so it can be a program name with args.
+ set dummy windres; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6490: checking for $ac_word" >&5
++echo "configure:6493: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6523,7 +6526,7 @@ if test -z "$ac_cv_path_WINDRES_FOR_TARG
+ if test -n "$with_build_time_tools"; then
+ for ncn_progname in windres; do
+ echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6527: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6530: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ if test -x $with_build_time_tools/${ncn_progname}; then
+ ac_cv_prog_WINDRES_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+ echo "$ac_t""yes" 1>&6
+@@ -6540,7 +6543,7 @@ if test -z "$ac_cv_prog_WINDRES_FOR_TARG
+ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6544: checking for $ac_word" >&5
++echo "configure:6547: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6571,7 +6574,7 @@ fi
+ # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6575: checking for $ac_word" >&5
++echo "configure:6578: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6619,7 +6622,7 @@ fi
+ RAW_CXX_FOR_TARGET="$CXX_FOR_TARGET"
+
+ echo $ac_n "checking where to find the target ar""... $ac_c" 1>&6
+-echo "configure:6623: checking where to find the target ar" >&5
++echo "configure:6626: checking where to find the target ar" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$AR_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6652,7 +6655,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target as""... $ac_c" 1>&6
+-echo "configure:6656: checking where to find the target as" >&5
++echo "configure:6659: checking where to find the target as" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$AS_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6685,7 +6688,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target cc""... $ac_c" 1>&6
+-echo "configure:6689: checking where to find the target cc" >&5
++echo "configure:6692: checking where to find the target cc" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$CC_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6718,7 +6721,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target c++""... $ac_c" 1>&6
+-echo "configure:6722: checking where to find the target c++" >&5
++echo "configure:6725: checking where to find the target c++" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$CXX_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6754,7 +6757,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target c++ for libstdc++""... $ac_c" 1>&6
+-echo "configure:6758: checking where to find the target c++ for libstdc++" >&5
++echo "configure:6761: checking where to find the target c++ for libstdc++" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$RAW_CXX_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6790,7 +6793,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target dlltool""... $ac_c" 1>&6
+-echo "configure:6794: checking where to find the target dlltool" >&5
++echo "configure:6797: checking where to find the target dlltool" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$DLLTOOL_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6823,7 +6826,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target gcc""... $ac_c" 1>&6
+-echo "configure:6827: checking where to find the target gcc" >&5
++echo "configure:6830: checking where to find the target gcc" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$GCC_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6856,7 +6859,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target gcj""... $ac_c" 1>&6
+-echo "configure:6860: checking where to find the target gcj" >&5
++echo "configure:6863: checking where to find the target gcj" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$GCJ_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6892,7 +6895,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target gfortran""... $ac_c" 1>&6
+-echo "configure:6896: checking where to find the target gfortran" >&5
++echo "configure:6899: checking where to find the target gfortran" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$GFORTRAN_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6928,7 +6931,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target ld""... $ac_c" 1>&6
+-echo "configure:6932: checking where to find the target ld" >&5
++echo "configure:6935: checking where to find the target ld" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$LD_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6961,7 +6964,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target lipo""... $ac_c" 1>&6
+-echo "configure:6965: checking where to find the target lipo" >&5
++echo "configure:6968: checking where to find the target lipo" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$LIPO_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -6984,7 +6987,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target nm""... $ac_c" 1>&6
+-echo "configure:6988: checking where to find the target nm" >&5
++echo "configure:6991: checking where to find the target nm" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$NM_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -7017,7 +7020,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target objdump""... $ac_c" 1>&6
+-echo "configure:7021: checking where to find the target objdump" >&5
++echo "configure:7024: checking where to find the target objdump" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$OBJDUMP_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -7050,7 +7053,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target ranlib""... $ac_c" 1>&6
+-echo "configure:7054: checking where to find the target ranlib" >&5
++echo "configure:7057: checking where to find the target ranlib" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$RANLIB_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -7083,7 +7086,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target strip""... $ac_c" 1>&6
+-echo "configure:7087: checking where to find the target strip" >&5
++echo "configure:7090: checking where to find the target strip" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$STRIP_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -7116,7 +7119,7 @@ else
+ fi
+ fi
+ echo $ac_n "checking where to find the target windres""... $ac_c" 1>&6
+-echo "configure:7120: checking where to find the target windres" >&5
++echo "configure:7123: checking where to find the target windres" >&5
+ if test "x${build}" != "x${host}" ; then
+ if expr "x$WINDRES_FOR_TARGET" : "x/" > /dev/null; then
+ # We already found the complete path
+@@ -7177,7 +7180,7 @@ fi
+
+
+ echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
+-echo "configure:7181: checking whether to enable maintainer-specific portions of Makefiles" >&5
++echo "configure:7184: checking whether to enable maintainer-specific portions of Makefiles" >&5
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then
+ enableval="$enable_maintainer_mode"
+@@ -7334,34 +7337,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; ex
+ # Transform confdefs.h into DEFS.
+ # Protect against shell expansion while executing Makefile rules.
+ # Protect against Makefile macro expansion.
+-#
+-# If the first sed substitution is executed (which looks for macros that
+-# take arguments), then we branch to the quote section. Otherwise,
+-# look for a macro that doesn't take arguments.
+-cat >confdef2opt.sed <<\_ACEOF
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
+-t quote
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
+-t quote
+-d
+-: quote
+-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
+-s,\[,\\&,g
+-s,\],\\&,g
+-s,\$,$$,g
+-p
+-_ACEOF
+-# We use echo to avoid assuming a particular line-breaking character.
+-# The extra dot is to prevent the shell from consuming trailing
+-# line-breaks from the sub-command output. A line-break within
+-# single-quotes doesn't work because, if this script is created in a
+-# platform that uses two characters for line-breaks (e.g., DOS), tr
+-# would break.
+-ac_LF_and_DOT=`echo; echo .`
+-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
+-rm -f confdef2opt.sed
++cat > conftest.defs <<\EOF
++s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
++s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
++s%\[%\\&%g
++s%\]%\\&%g
++s%\$%$$%g
++EOF
++DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
++rm -f conftest.defs
+
+
+ # Without the "./", some shells look in PATH for config.status.
+diff -Nrup binutils-2.17/configure.in binutils-2.17.atmel.1.3.0/configure.in
+--- binutils-2.17/configure.in 2006-06-23 20:19:53.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/configure.in 2007-03-26 10:20:35.000000000 +0200
+@@ -269,6 +269,9 @@ unsupported_languages=
+ # exist yet.
+
+ case "${host}" in
++ avr32*-*-*)
++ noconfigdirs="$noconfigdirs readline gdb"
++ ;;
+ hppa*64*-*-*)
+ noconfigdirs="$noconfigdirs byacc"
+ ;;
+diff -Nrup binutils-2.17/gas/as.c binutils-2.17.atmel.1.3.0/gas/as.c
+--- binutils-2.17/gas/as.c 2006-02-09 01:07:41.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/as.c 2007-03-26 10:20:16.000000000 +0200
+@@ -439,10 +439,10 @@ parse_args (int * pargc, char *** pargv)
+ the end of the preceeding line so that it is simpler to
+ selectively add and remove lines from this list. */
+ {"alternate", no_argument, NULL, OPTION_ALTERNATE}
+- /* The entry for "a" is here to prevent getopt_long_only() from
+- considering that -a is an abbreviation for --alternate. This is
+- necessary because -a=<FILE> is a valid switch but getopt would
+- normally reject it since --alternate does not take an argument. */
++ /* The next two entries are here to prevent getopt_long_only() from
++ considering that -a or -al is an abbreviation for --alternate.
++ This is necessary because -a=<FILE> is a valid switch but getopt
++ would normally reject it since --alternate does not take an argument. */
+ ,{"a", optional_argument, NULL, 'a'}
+ /* Handle -al=<FILE>. */
+ ,{"al", optional_argument, NULL, OPTION_AL}
+@@ -795,8 +795,15 @@ the GNU General Public License. This pr
+ case 'a':
+ if (optarg)
+ {
+- if (optarg != old_argv[optind] && optarg[-1] == '=')
+- --optarg;
++ /* If optarg is part of the -a switch and not a separate argument
++ in its own right, then scan backwards to the just after the -a.
++ This means skipping over both '=' and 'l' which might have been
++ taken to be part of the -a switch itself. */
++ if (optarg != old_argv[optind])
++ {
++ while (optarg[-1] == '=' || optarg[-1] == 'l')
++ --optarg;
++ }
+
+ if (md_parse_option (optc, optarg) != 0)
+ break;
+@@ -1189,7 +1196,7 @@ main (int argc, char ** argv)
+ keep_it = 0;
+
+ if (!keep_it)
+- unlink_if_ordinary (out_file_name);
++ unlink (out_file_name);
+
+ input_scrub_end ();
+
+diff -Nrup binutils-2.17/gas/config/bfin-aux.h binutils-2.17.atmel.1.3.0/gas/config/bfin-aux.h
+--- binutils-2.17/gas/config/bfin-aux.h 2005-09-30 17:05:06.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/gas/config/bfin-aux.h 2007-03-26 10:20:14.000000000 +0200
+@@ -1,151 +1,151 @@
+-/* bfin-aux.h ADI Blackfin Header file for gas
+- Copyright 2005
+- Free Software Foundation, Inc.
+-
+- This file is part of GAS, the GNU Assembler.
+-
+- GAS 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, or (at your option)
+- any later version.
+-
+- GAS 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 GAS; see the file COPYING. If not, write to the Free
+- Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+- 02110-1301, USA. */
+-
+-#include "bfin-defs.h"
+-
+-#define REG_T Register *
+-
+-INSTR_T
+-bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p,
+- int h01, int h11, int h00, int h10,
+- int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
+-
+-INSTR_T
+-bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p,
+- int h01, int h11, int h00, int h10,
+- int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
+-
+-INSTR_T
+-bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x,
+- REG_T dst0, REG_T dst1, REG_T src0, REG_T src1);
+-
+-INSTR_T
+-bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1,
+- int sop, int hls);
+-
+-INSTR_T
+-bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1,
+- int sop, int hls);
+-
+-INSTR_T
+-bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword,
+- int reloc);
+-
+-INSTR_T
+-bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z,
+- Expr_Node *offset);
+-
+-INSTR_T
+-bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w);
+-
+-INSTR_T
+-bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op);
+-
+-INSTR_T
+-bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w);
+-
+-INSTR_T
+-bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx);
+-
+-INSTR_T
+-bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m);
+-
+-INSTR_T
+-bfin_gen_alu2op (REG_T dst, REG_T src, int opc);
+-
+-INSTR_T
+-bfin_gen_compi2opd (REG_T dst, int src, int op);
+-
+-INSTR_T
+-bfin_gen_compi2opp (REG_T dst, int src, int op);
+-
+-INSTR_T
+-bfin_gen_dagmodik (REG_T i, int op);
+-
+-INSTR_T
+-bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br);
+-
+-INSTR_T
+-bfin_gen_ptr2op (REG_T dst, REG_T src, int opc);
+-
+-INSTR_T
+-bfin_gen_logi2op (int dst, int src, int opc);
+-
+-INSTR_T
+-bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc);
+-
+-INSTR_T
+-bfin_gen_ccmv (REG_T src, REG_T dst, int t);
+-
+-INSTR_T
+-bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g);
+-
+-INSTR_T
+-bfin_gen_cc2stat (int cbit, int op, int d);
+-
+-INSTR_T
+-bfin_gen_regmv (REG_T src, REG_T dst);
+-
+-INSTR_T
+-bfin_gen_cc2dreg (int op, REG_T reg);
+-
+-INSTR_T
+-bfin_gen_brcc (int t, int b, Expr_Node *offset);
+-
+-INSTR_T
+-bfin_gen_ujump (Expr_Node *offset);
+-
+-INSTR_T
+-bfin_gen_cactrl (REG_T reg, int a, int op);
+-
+-INSTR_T
+-bfin_gen_progctrl (int prgfunc, int poprnd);
+-
+-INSTR_T
+-bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop,
+- Expr_Node *eoffset, REG_T reg);
+-
+-INSTR_T
+-bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg);
+-
+-INSTR_T
+-bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w);
+-
+-INSTR_T
+-bfin_gen_pushpopreg (REG_T reg, int w);
+-
+-INSTR_T
+-bfin_gen_calla (Expr_Node *addr, int s);
+-
+-INSTR_T
+-bfin_gen_linkage (int r, int framesize);
+-
+-INSTR_T
+-bfin_gen_pseudodbg (int fn, int reg, int grp);
+-
+-INSTR_T
+-bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected);
+-
+-bfd_boolean
+-bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
+-
+-INSTR_T
+-bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
++/* bfin-aux.h ADI Blackfin Header file for gas
++ Copyright 2005
++ Free Software Foundation, Inc.
++
++ This file is part of GAS, the GNU Assembler.
++
++ GAS 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, or (at your option)
++ any later version.
++
++ GAS 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 GAS; see the file COPYING. If not, write to the Free
++ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
++ 02110-1301, USA. */
++
++#include "bfin-defs.h"
++
++#define REG_T Register *
++
++INSTR_T
++bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p,
++ int h01, int h11, int h00, int h10,
++ int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
++
++INSTR_T
++bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p,
++ int h01, int h11, int h00, int h10,
++ int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
++
++INSTR_T
++bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x,
++ REG_T dst0, REG_T dst1, REG_T src0, REG_T src1);
++
++INSTR_T
++bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1,
++ int sop, int hls);
++
++INSTR_T
++bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1,
++ int sop, int hls);
++
++INSTR_T
++bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword,
++ int reloc);
++
++INSTR_T
++bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z,
++ Expr_Node *offset);
++
++INSTR_T
++bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w);
++
++INSTR_T
++bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op);
++
++INSTR_T
++bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w);
++
++INSTR_T
++bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx);
++
++INSTR_T
++bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m);
++
++INSTR_T
++bfin_gen_alu2op (REG_T dst, REG_T src, int opc);
++
++INSTR_T
++bfin_gen_compi2opd (REG_T dst, int src, int op);
++
++INSTR_T
++bfin_gen_compi2opp (REG_T dst, int src, int op);
++
++INSTR_T
++bfin_gen_dagmodik (REG_T i, int op);
++
++INSTR_T
++bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br);
++
++INSTR_T
++bfin_gen_ptr2op (REG_T dst, REG_T src, int opc);
++
++INSTR_T
++bfin_gen_logi2op (int dst, int src, int opc);
++
++INSTR_T
++bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc);
++
++INSTR_T
++bfin_gen_ccmv (REG_T src, REG_T dst, int t);
++
++INSTR_T
++bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g);
++
++INSTR_T
++bfin_gen_cc2stat (int cbit, int op, int d);
++
++INSTR_T
++bfin_gen_regmv (REG_T src, REG_T dst);
++
++INSTR_T
++bfin_gen_cc2dreg (int op, REG_T reg);
++
++INSTR_T
++bfin_gen_brcc (int t, int b, Expr_Node *offset);
++
++INSTR_T
++bfin_gen_ujump (Expr_Node *offset);
++
++INSTR_T
++bfin_gen_cactrl (REG_T reg, int a, int op);
++
++INSTR_T
++bfin_gen_progctrl (int prgfunc, int poprnd);
++
++INSTR_T
++bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop,
++ Expr_Node *eoffset, REG_T reg);
++
++INSTR_T
++bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg);
++
++INSTR_T
++bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w);
++
++INSTR_T
++bfin_gen_pushpopreg (REG_T reg, int w);
++
++INSTR_T
++bfin_gen_calla (Expr_Node *addr, int s);
++
++INSTR_T
++bfin_gen_linkage (int r, int framesize);
++
++INSTR_T
++bfin_gen_pseudodbg (int fn, int reg, int grp);
++
++INSTR_T
++bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected);
++
++bfd_boolean
++bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
++
++INSTR_T
++bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
+diff -Nrup binutils-2.17/gas/config/tc-avr32.c binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.c
+--- binutils-2.17/gas/config/tc-avr32.c 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.c 2007-09-28 10:30:46.000000000 +0200
+@@ -0,0 +1,4726 @@
++/* Assembler implementation for AVR32.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of GAS, the GNU Assembler.
++
++ GAS 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, or (at your option)
++ any later version.
++
++ GAS 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 GAS; see the file COPYING. If not, write to the Free
++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++ 02111-1307, USA. */
++
++#include <stdio.h>
++#include "as.h"
++#include "safe-ctype.h"
++#include "subsegs.h"
++#include "symcat.h"
++#include "opcodes/avr32-opc.h"
++#include "opcodes/avr32-asm.h"
++#include "elf/avr32.h"
++#include "dwarf2dbg.h"
++
++#define xDEBUG
++#define xOPC_CONSISTENCY_CHECK
++
++#ifdef DEBUG
++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
++#else
++# define pr_debug(fmt, args...)
++#endif
++
++/* 3 MSB of instruction word indicate group. Group 7 -> extended */
++#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
++
++#define streq(a, b) (strcmp(a, b) == 0)
++#define skip_whitespace(str) do { while(*(str) == ' ') ++(str); } while(0)
++
++/* Flags given on the command line */
++static int avr32_pic = FALSE;
++int linkrelax = FALSE;
++int avr32_iarcompat = FALSE;
++int allow_direct_data_refs = FALSE;
++
++/* This array holds the chars that always start a comment. */
++const char comment_chars[] = "#";
++
++/* This array holds the chars that only start a comment at the
++ beginning of a line. We must include '#' here because the compiler
++ may produce #APP and #NO_APP in its output. */
++const char line_comment_chars[] = "#";
++
++/* These may be used instead of newline (same as ';' in C). */
++const char line_separator_chars[] = ";";
++
++/* Chars that can be used to separate mantissa from exponent in
++ floating point numbers. */
++const char EXP_CHARS[] = "eE";
++
++/* Chars that mean this number is a floating point constant. */
++const char FLT_CHARS[] = "dD";
++
++/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
++symbolS *GOT_symbol;
++
++static struct hash_control *avr32_mnemonic_htab;
++
++struct avr32_ifield_data
++{
++ bfd_vma value;
++ /* FIXME: Get rid of align_order and complain. complain is never
++ used, align_order is used in one place. Try to use the relax
++ table instead. */
++ unsigned int align_order;
++};
++
++struct avr32_insn
++{
++ const struct avr32_syntax *syntax;
++ expressionS immediate;
++ int pcrel;
++ int force_extended;
++ unsigned int next_slot;
++ bfd_reloc_code_real_type r_type;
++ struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
++};
++
++static struct avr32_insn current_insn;
++
++/* The target specific pseudo-ops we support. */
++static void s_rseg (int);
++static void s_cpool(int);
++
++const pseudo_typeS md_pseudo_table[] =
++{
++ /* Make sure that .word is 32 bits */
++ { "word", cons, 4 },
++ { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
++ { "loc", dwarf2_directive_loc, 0 },
++
++ /* .lcomm requires an explicit alignment parameter */
++ { "lcomm", s_lcomm, 1 },
++
++ /* AVR32-specific pseudo-ops */
++ { "cpool", s_cpool, 0},
++
++ /* IAR compatible pseudo-ops */
++ { "program", s_ignore, 0 },
++ { "public", s_globl, 0 },
++ { "extern", s_ignore, 0 },
++ { "module", s_ignore, 0 },
++ { "rseg", s_rseg, 0 },
++ { "dc8", cons, 1 },
++ { "dc16", cons, 2 },
++ { "dc32", cons, 4 },
++
++ { NULL, NULL, 0 }
++};
++
++/* Questionable stuff starts here */
++
++enum avr32_opinfo {
++ AVR32_OPINFO_NONE = BFD_RELOC_NONE,
++ AVR32_OPINFO_GOT,
++ AVR32_OPINFO_TLSGD,
++ AVR32_OPINFO_HI,
++ AVR32_OPINFO_LO,
++};
++
++enum avr32_arch {
++ ARCH_TYPE_AP,
++ ARCH_TYPE_UC
++};
++
++struct arch_type_s
++{
++ /* Architecture name */
++ char *name;
++ /* Instruction Set Architecture Flags */
++ unsigned long isa_flags;
++};
++
++struct part_type_s
++{
++ /* Part name */
++ char *name;
++ /* Architecture type */
++ unsigned int arch;
++};
++
++static struct arch_type_s arch_types[] =
++{
++ {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
++ {"uc", AVR32_V1 | AVR32_DSP | AVR32_RMW},
++ {"all-insn", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
++ {NULL, 0}
++};
++
++static struct part_type_s part_types[] = {
++ {"ap7000", ARCH_TYPE_AP},
++ {"ap7010", ARCH_TYPE_AP},
++ {"ap7020", ARCH_TYPE_AP},
++ {"uc3a0256", ARCH_TYPE_UC},
++ {"uc3a0512", ARCH_TYPE_UC},
++ {"uc3a1128", ARCH_TYPE_UC},
++ {"uc3a1256", ARCH_TYPE_UC},
++ {"uc3a1512", ARCH_TYPE_UC},
++ {"uc3b064", ARCH_TYPE_UC},
++ {"uc3b0128", ARCH_TYPE_UC},
++ {"uc3b0256", ARCH_TYPE_UC},
++ {"uc3b164", ARCH_TYPE_UC},
++ {"uc3b1128", ARCH_TYPE_UC},
++ {"uc3b1256", ARCH_TYPE_UC},
++ {NULL, 0}
++};
++
++/* Current architecture type. */
++static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
++static struct arch_type_s *avr32_arch = &default_arch;
++
++/* Display nicely formatted list of known part- and architecture names. */
++
++static void
++show_arch_list (FILE *stream)
++{
++ int i, x;
++
++ fprintf (stream, _("Known architecture names:"));
++ x = 1000;
++
++ for (i = 0; arch_types[i].name; i++)
++ {
++ int len = strlen (arch_types[i].name);
++
++ x += len + 1;
++
++ if (x < 75)
++ fprintf (stream, " %s", arch_types[i].name);
++ else
++ {
++ fprintf (stream, "\n %s", arch_types[i].name);
++ x = len + 2;
++ }
++ }
++
++ fprintf (stream, "\n");
++}
++
++static void
++show_part_list (FILE *stream)
++{
++ int i, x;
++
++ fprintf (stream, _("Known part names:"));
++ x = 1000;
++
++ for (i = 0; part_types[i].name; i++)
++ {
++ int len = strlen(part_types[i].name);
++
++ x += len + 1;
++
++ if (x < 75)
++ fprintf (stream, " %s", part_types[i].name);
++ else
++ {
++ fprintf(stream, "\n %s", part_types[i].name);
++ x = len + 2;
++ }
++ }
++
++ fprintf (stream, "\n");
++}
++
++const char *md_shortopts = "";
++struct option md_longopts[] =
++{
++#define OPTION_ARCH (OPTION_MD_BASE)
++#define OPTION_PART (OPTION_ARCH + 1)
++#define OPTION_IAR (OPTION_PART + 1)
++#define OPTION_PIC (OPTION_IAR + 1)
++#define OPTION_NOPIC (OPTION_PIC + 1)
++#define OPTION_LINKRELAX (OPTION_NOPIC + 1)
++#define OPTION_NOLINKRELAX (OPTION_LINKRELAX + 1)
++#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
++ {"march", required_argument, NULL, OPTION_ARCH},
++ {"mpart", required_argument, NULL, OPTION_PART},
++ {"iar", no_argument, NULL, OPTION_IAR},
++ {"pic", no_argument, NULL, OPTION_PIC},
++ {"no-pic", no_argument, NULL, OPTION_NOPIC},
++ {"linkrelax", no_argument, NULL, OPTION_LINKRELAX},
++ {"no-linkrelax", no_argument, NULL, OPTION_NOLINKRELAX},
++ {"direct-data-refs", no_argument, NULL, OPTION_DIRECT_DATA_REFS},
++ /* deprecated alias for -mpart=xxx */
++ {"mcpu", required_argument, NULL, OPTION_PART},
++ {NULL, no_argument, NULL, 0}
++};
++
++size_t md_longopts_size = sizeof (md_longopts);
++
++void
++md_show_usage (FILE *stream)
++{
++ fprintf (stream, _("\
++AVR32 options:\n\
++ -march=[arch-name] Select cpu architecture. [Default `all-insn']\n\
++ -mpart=[part-name] Select specific part. [Default `none']\n\
++ --pic Produce Position-Independent Code\n\
++ --no-pic Don't produce Position-Independent Code\n\
++ --linkrelax Produce output suitable for linker relaxing\n\
++ --no-linkrelax Don't produce output suitable for linker relaxing\n\
++ --direct-data-refs Allows direct references (i.e. mov or sub) to the data section\n"));
++ show_arch_list(stream);
++}
++
++int
++md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
++{
++ switch (c)
++ {
++ case OPTION_ARCH:
++ {
++ int i;
++ char *s = alloca (strlen (arg) + 1);
++
++ {
++ char *t = s;
++ char *arg1 = arg;
++
++ do
++ *t = TOLOWER (*arg1++);
++ while (*t++);
++ }
++
++ for (i = 0; arch_types[i].name; ++i)
++ if (strcmp (arch_types[i].name, s) == 0)
++ break;
++
++ if (!arch_types[i].name)
++ {
++ show_arch_list (stderr);
++ as_fatal (_("unknown architecture: %s\n"), arg);
++ }
++
++ avr32_arch = &arch_types[i];
++ break;
++ }
++ case OPTION_PART:
++ {
++ int i;
++ char *s = alloca (strlen (arg) + 1);
++ char *t = s;
++ char *p = arg;
++
++ /* If arch type has already been set, don't bother.
++ -march= always overrides -mpart= */
++ if (avr32_arch != &default_arch)
++ break;
++
++ do
++ *t = TOLOWER (*p++);
++ while (*t++);
++
++ for (i = 0; part_types[i].name; ++i)
++ if (strcmp (part_types[i].name, s) == 0)
++ break;
++
++ if (!part_types[i].name)
++ {
++ show_part_list (stderr);
++ as_fatal (_("unknown part: %s\n"), arg);
++ }
++
++ avr32_arch = &arch_types[part_types[i].arch];
++ break;
++ }
++ case OPTION_IAR:
++ avr32_iarcompat = 1;
++ break;
++ case OPTION_PIC:
++ avr32_pic = 1;
++ break;
++ case OPTION_NOPIC:
++ avr32_pic = 0;
++ break;
++ case OPTION_LINKRELAX:
++ linkrelax = 1;
++ break;
++ case OPTION_NOLINKRELAX:
++ linkrelax = 0;
++ break;
++ case OPTION_DIRECT_DATA_REFS:
++ allow_direct_data_refs = 1;
++ break;
++ default:
++ return 0;
++ }
++ return 1;
++}
++
++/* Can't use symbol_new here, so have to create a symbol and then at
++ a later date assign it a value. Thats what these functions do.
++
++ Shamelessly stolen from ARM. */
++
++static void
++symbol_locate (symbolS * symbolP,
++ const char * name, /* It is copied, the caller can modify. */
++ segT segment, /* Segment identifier (SEG_<something>). */
++ valueT valu, /* Symbol value. */
++ fragS * frag) /* Associated fragment. */
++{
++ unsigned int name_length;
++ char * preserved_copy_of_name;
++
++ name_length = strlen (name) + 1; /* +1 for \0. */
++ obstack_grow (&notes, name, name_length);
++ preserved_copy_of_name = obstack_finish (&notes);
++#ifdef STRIP_UNDERSCORE
++ if (preserved_copy_of_name[0] == '_')
++ preserved_copy_of_name++;
++#endif
++
++#ifdef tc_canonicalize_symbol_name
++ preserved_copy_of_name =
++ tc_canonicalize_symbol_name (preserved_copy_of_name);
++#endif
++
++ S_SET_NAME (symbolP, preserved_copy_of_name);
++
++ S_SET_SEGMENT (symbolP, segment);
++ S_SET_VALUE (symbolP, valu);
++ symbol_clear_list_pointers (symbolP);
++
++ symbol_set_frag (symbolP, frag);
++
++ /* Link to end of symbol chain. */
++ {
++ extern int symbol_table_frozen;
++
++ if (symbol_table_frozen)
++ abort ();
++ }
++
++ symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
++
++ obj_symbol_new_hook (symbolP);
++
++#ifdef tc_symbol_new_hook
++ tc_symbol_new_hook (symbolP);
++#endif
++
++#ifdef DEBUG_SYMS
++ verify_symbol_chain (symbol_rootP, symbol_lastP);
++#endif /* DEBUG_SYMS */
++}
++
++struct cpool_entry
++{
++ int refcount;
++ offsetT offset;
++ expressionS exp;
++};
++
++struct cpool
++{
++ struct cpool *next;
++ int used;
++ struct cpool_entry *literals;
++ unsigned int padding;
++ unsigned int next_free_entry;
++ unsigned int id;
++ symbolS *symbol;
++ segT section;
++ subsegT sub_section;
++};
++
++struct cpool *cpool_list = NULL;
++
++static struct cpool *
++find_cpool(segT section, subsegT sub_section)
++{
++ struct cpool *pool;
++
++ for (pool = cpool_list; pool != NULL; pool = pool->next)
++ {
++ if (!pool->used
++ && pool->section == section
++ && pool->sub_section == sub_section)
++ break;
++ }
++
++ return pool;
++}
++
++static struct cpool *
++find_or_make_cpool(segT section, subsegT sub_section)
++{
++ static unsigned int next_cpool_id = 0;
++ struct cpool *pool;
++
++ pool = find_cpool(section, sub_section);
++
++ if (!pool)
++ {
++ pool = xmalloc(sizeof(*pool));
++ if (!pool)
++ return NULL;
++
++ pool->used = 0;
++ pool->literals = NULL;
++ pool->padding = 0;
++ pool->next_free_entry = 0;
++ pool->section = section;
++ pool->sub_section = sub_section;
++ pool->next = cpool_list;
++ pool->symbol = NULL;
++
++ cpool_list = pool;
++ }
++
++ /* NULL symbol means that the pool is new or has just been emptied. */
++ if (!pool->symbol)
++ {
++ pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
++ 0, &zero_address_frag);
++ pool->id = next_cpool_id++;
++ }
++
++ return pool;
++}
++
++static struct cpool *
++add_to_cpool(expressionS *exp, unsigned int *index, int ref)
++{
++ struct cpool *pool;
++ unsigned int entry;
++
++ pool = find_or_make_cpool(now_seg, now_subseg);
++
++ /* Check if this constant is already in the pool. */
++ for (entry = 0; entry < pool->next_free_entry; entry++)
++ {
++ if ((pool->literals[entry].exp.X_op == exp->X_op)
++ && (exp->X_op == O_constant)
++ && (pool->literals[entry].exp.X_add_number
++ == exp->X_add_number)
++ && (pool->literals[entry].exp.X_unsigned
++ == exp->X_unsigned))
++ break;
++
++ if ((pool->literals[entry].exp.X_op == exp->X_op)
++ && (exp->X_op == O_symbol)
++ && (pool->literals[entry].exp.X_add_number
++ == exp->X_add_number)
++ && (pool->literals[entry].exp.X_add_symbol
++ == exp->X_add_symbol)
++ && (pool->literals[entry].exp.X_op_symbol
++ == exp->X_op_symbol))
++ break;
++ }
++
++ /* Create an entry if we didn't find a match */
++ if (entry == pool->next_free_entry)
++ {
++ pool->literals = xrealloc(pool->literals,
++ sizeof(struct cpool_entry) * (entry + 1));
++ pool->literals[entry].exp = *exp;
++ pool->literals[entry].refcount = 0;
++ pool->next_free_entry++;
++ }
++
++ if (index)
++ *index = entry;
++ if (ref)
++ pool->literals[entry].refcount++;
++
++ return pool;
++}
++
++struct avr32_operand
++{
++ int id;
++ int is_signed;
++ int is_pcrel;
++ int align_order;
++ int (*match)(char *str);
++ void (*parse)(const struct avr32_operand *op, char *str, int opindex);
++};
++
++static int
++match_anything(char *str ATTRIBUTE_UNUSED)
++{
++ return 1;
++}
++
++static int
++match_intreg(char *str)
++{
++ int regid, ret = 1;
++
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ ret = 0;
++
++ pr_debug("match_intreg: `%s': %d\n", str, ret);
++
++ return ret;
++}
++
++static int
++match_intreg_predec(char *str)
++{
++ int regid;
++
++ if (str[0] != '-' || str[1] != '-')
++ return 0;
++
++ regid = avr32_parse_intreg(str + 2);
++ if (regid < 0)
++ return 0;
++
++ return 1;
++}
++
++static int
++match_intreg_postinc(char *str)
++{
++ int regid, ret = 1;
++ char *p, c;
++
++ for (p = str; *p; p++)
++ if (*p == '+')
++ break;
++
++ if (p[0] != '+' || p[1] != '+')
++ return 0;
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ ret = 0;
++
++ *p = c;
++ return ret;
++}
++
++static int
++match_intreg_lsl(char *str)
++{
++ int regid, ret = 1;
++ char *p, c;
++
++ for (p = str; *p; p++)
++ if (*p == '<')
++ break;
++
++ if (p[0] && p[1] != '<')
++ return 0;
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ ret = 0;
++
++ *p = c;
++ return ret;
++}
++
++static int
++match_intreg_lsr(char *str)
++{
++ int regid, ret = 1;
++ char *p, c;
++
++ for (p = str; *p; p++)
++ if (*p == '>')
++ break;
++
++ if (p[0] && p[1] != '>')
++ return 0;
++
++ c = *p, *p = 0;
++
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ ret = 0;
++
++ *p = c;
++ return ret;
++}
++
++static int
++match_intreg_part(char *str)
++{
++ int regid, ret = 1;
++ char *p, c;
++
++ for (p = str; *p; p++)
++ if (*p == ':')
++ break;
++
++ if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
++ return 0;
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ ret = 0;
++
++ *p = c;
++
++ return ret;
++}
++
++#define match_intreg_disp match_anything
++
++static int
++match_intreg_index(char *str)
++{
++ int regid, ret = 1;
++ char *p, *end, c;
++
++ for (p = str; *p; p++)
++ if (*p == '[')
++ break;
++
++ /* don't allow empty displacement here (it makes no sense) */
++ if (p[0] != '[')
++ return 0;
++
++ for (end = p + 1; *end; end++) ;
++ if (*(--end) != ']')
++ return 0;
++
++ c = *end, *end = 0;
++ if (!match_intreg_lsl(p + 1))
++ ret = 0;
++ *end = c;
++
++ if (ret)
++ {
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ ret = 0;
++ *p = c;
++ }
++
++ return ret;
++}
++
++static int
++match_intreg_xindex(char *str)
++{
++ int regid, ret = 1;
++ char *p, *end, c;
++
++ for (p = str; *p; p++)
++ if (*p == '[')
++ break;
++
++ /* empty displacement makes no sense here either */
++ if (p[0] != '[')
++ return 0;
++
++ for (end = p + 1; *end; end++)
++ if (*end == '<')
++ break;
++
++ if (!streq(end, "<<2]"))
++ return 0;
++
++ c = *end, *end = 0;
++ if (!match_intreg_part(p + 1))
++ ret = 0;
++ *end = c;
++
++ if (ret)
++ {
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ ret = 0;
++ *p = c;
++ }
++
++ return ret;
++}
++
++/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
++ expression. So there's no point in attempting to match this... */
++#define match_pc_disp match_anything
++
++static int
++match_sp(char *str)
++{
++ /* SP in any form will do */
++ return avr32_parse_intreg(str) == AVR32_REG_SP;
++}
++
++static int
++match_sp_disp(char *str)
++{
++ int regid, ret = 1;
++ char *p, c;
++
++ for (p = str; *p; p++)
++ if (*p == '[')
++ break;
++
++ /* allow empty displacement, meaning zero */
++ if (p[0] == '[')
++ {
++ char *end;
++ for (end = p + 1; *end; end++) ;
++ if (end[-1] != ']')
++ return 0;
++ }
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ if (regid != AVR32_REG_SP)
++ ret = 0;
++
++ *p = c;
++ return ret;
++}
++
++static int
++match_cpno(char *str)
++{
++ if (strncasecmp(str, "cp", 2) != 0)
++ return 0;
++ return 1;
++}
++
++static int
++match_cpreg(char *str)
++{
++ if (strncasecmp(str, "cr", 2) != 0)
++ return 0;
++ return 1;
++}
++
++/* We allow complex expressions, and register names may show up as
++ symbols. Just make sure immediate expressions are always matched
++ last. */
++#define match_const match_anything
++#define match_jmplabel match_anything
++#define match_number match_anything
++
++/* Mnemonics that take reglists never accept anything else */
++#define match_reglist8 match_anything
++#define match_reglist9 match_anything
++#define match_reglist16 match_anything
++#define match_reglist_ldm match_anything
++#define match_reglist_cp8 match_anything
++#define match_reglist_cpd8 match_anything
++
++/* Ditto for retval, jospinc and mcall */
++#define match_retval match_anything
++#define match_jospinc match_anything
++#define match_mcall match_anything
++
++/* COH is used to select between two different syntaxes */
++static int
++match_coh(char *str)
++{
++ return strcasecmp(str, "coh") == 0;
++}
++
++static int
++match_fpreg(char *str)
++{
++ unsigned long regid;
++ char *endptr;
++
++ if ((str[0] != 'f' && str[0] != 'F')
++ || (str[1] != 'r' && str[1] != 'R'))
++ return 0;
++
++ str += 2;
++ regid = strtoul(str, &endptr, 10);
++ if (!*str || *endptr)
++ return 0;
++
++ return 1;
++}
++
++static int
++match_picoreg(char *str)
++{
++ int regid;
++
++ regid = avr32_parse_picoreg(str);
++ if (regid < 0)
++ return 0;
++ return 1;
++}
++
++#define match_pico_reglist_w match_anything
++#define match_pico_reglist_d match_anything
++
++static int
++match_pico_in(char *str)
++{
++ unsigned long regid;
++ char *end;
++
++ if (strncasecmp(str, "in", 2) != 0)
++ return 0;
++
++ str += 2;
++ regid = strtoul(str, &end, 10);
++ if (!*str || *end)
++ return 0;
++
++ return 1;
++}
++
++static int
++match_pico_out0(char *str)
++{
++ if (strcasecmp(str, "out0") != 0)
++ return 0;
++ return 1;
++}
++
++static int
++match_pico_out1(char *str)
++{
++ if (strcasecmp(str, "out1") != 0)
++ return 0;
++ return 1;
++}
++
++static int
++match_pico_out2(char *str)
++{
++ if (strcasecmp(str, "out2") != 0)
++ return 0;
++ return 1;
++}
++
++static int
++match_pico_out3(char *str)
++{
++ if (strcasecmp(str, "out3") != 0)
++ return 0;
++ return 1;
++}
++
++static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str ATTRIBUTE_UNUSED,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ /* Do nothing (this is used for "match-only" operands like COH) */
++}
++
++static void
++parse_const(const struct avr32_operand *op, char *str,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ expressionS *exp = &current_insn.immediate;
++ expressionS *sym_exp;
++ int slot;
++ char *save;
++
++ pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
++ str, op->is_signed, op->is_pcrel, op->align_order);
++
++ save = input_line_pointer;
++ input_line_pointer = str;
++
++ expression(exp);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].align_order = op->align_order;
++ current_insn.pcrel = op->is_pcrel;
++
++ switch (exp->X_op)
++ {
++ case O_illegal:
++ as_bad(_("illegal operand"));
++ break;
++ case O_absent:
++ as_bad(_("missing operand"));
++ break;
++ case O_constant:
++ pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
++ current_insn.field_value[slot].value = exp->X_add_number;
++ break;
++ case O_uminus:
++ pr_debug(" -> uminus\n");
++ sym_exp = symbol_get_value_expression(exp->X_add_symbol);
++ switch (sym_exp->X_op) {
++ case O_subtract:
++ pr_debug(" -> subtract: switching operands\n");
++ exp->X_op_symbol = sym_exp->X_add_symbol;
++ exp->X_add_symbol = sym_exp->X_op_symbol;
++ exp->X_op = O_subtract;
++ /* TODO: Remove the old X_add_symbol */
++ break;
++ default:
++ as_bad(_("Expression too complex\n"));
++ break;
++ }
++ break;
++#if 0
++ case O_subtract:
++ /* Any expression subtracting a symbol from the current section
++ can be made PC-relative by adding the right offset. */
++ if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
++ current_insn.pcrel = TRUE;
++ pr_debug(" -> subtract: pcrel? %s\n",
++ current_insn.pcrel ? "yes" : "no");
++ /* fall through */
++#endif
++ default:
++ pr_debug(" -> (%p <%d> %p + %d)\n",
++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
++ exp->X_add_number);
++ current_insn.field_value[slot].value = 0;
++ break;
++ }
++
++ input_line_pointer = save;
++}
++
++static void
++parse_jmplabel(const struct avr32_operand *op, char *str,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ expressionS *exp = &current_insn.immediate;
++ int slot;
++ char *save;
++
++ pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
++ str, op->is_signed, op->is_pcrel, op->align_order);
++
++ save = input_line_pointer;
++ input_line_pointer = str;
++
++ expression(exp);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].align_order = op->align_order;
++ current_insn.pcrel = TRUE;
++
++ switch (exp->X_op)
++ {
++ case O_illegal:
++ as_bad(_("illegal operand"));
++ break;
++ case O_absent:
++ as_bad(_("missing operand"));
++ break;
++ case O_constant:
++ pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
++ current_insn.field_value[slot].value = exp->X_add_number;
++ current_insn.pcrel = 0;
++ break;
++ default:
++ pr_debug(" -> (%p <%d> %p + %d)\n",
++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
++ exp->X_add_number);
++ current_insn.field_value[slot].value = 0;
++ break;
++ }
++
++ input_line_pointer = save;
++}
++
++static void
++parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ int regid, slot;
++
++ pr_debug("parse_intreg: `%s'\n", str);
++
++ regid = avr32_parse_intreg(str);
++ assert(regid >= 0);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++ current_insn.field_value[slot].align_order = op->align_order;
++}
++
++static void
++parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
++{
++ parse_intreg(op, str + 2, opindex);
++}
++
++static void
++parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
++{
++ char *p, c;
++
++ pr_debug("parse_intreg_postinc: `%s'\n", str);
++
++ for (p = str; *p != '+'; p++) ;
++
++ c = *p, *p = 0;
++ parse_intreg(op, str, opindex);
++ *p = c;
++}
++
++static void
++parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ int regid, slot, shift = 0;
++ char *p, c;
++ char shiftop;
++
++ pr_debug("parse Ry<<sa: `%s'\n", str);
++
++ for (p = str; *p; p++)
++ if (*p == '<' || *p == '>')
++ break;
++
++ shiftop = *p;
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ assert(regid >= 0);
++ *p = c;
++
++ if (c)
++ {
++ if (p[0] != shiftop || p[1] != shiftop)
++ as_bad(_("expected shift operator in `%s'"), p);
++ else
++ {
++ expressionS exp;
++ char *saved;
++
++ saved = input_line_pointer;
++ input_line_pointer = p + 2;
++ expression(&exp);
++ input_line_pointer = saved;
++
++ if (exp.X_op != O_constant)
++ as_bad(_("shift amount must be a numeric constant"));
++ else
++ shift = exp.X_add_number;
++ }
++ }
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = shift;
++}
++
++/* The match() function selected the right opcode, so it doesn't
++ matter which way we shift any more. */
++#define parse_intreg_lsl parse_intreg_shift
++#define parse_intreg_lsr parse_intreg_shift
++
++static void
++parse_intreg_part(const struct avr32_operand *op, char *str,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ static const char bparts[] = { 'b', 'l', 'u', 't' };
++ static const char hparts[] = { 'b', 't' };
++ unsigned int slot, sel;
++ int regid;
++ char *p, c;
++
++ pr_debug("parse reg:part `%s'\n", str);
++
++ for (p = str; *p; p++)
++ if (*p == ':')
++ break;
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ assert(regid >= 0);
++ *p = c;
++
++ assert(c == ':');
++
++ if (op->align_order)
++ {
++ for (sel = 0; sel < sizeof(hparts); sel++)
++ if (TOLOWER(p[1]) == hparts[sel])
++ break;
++
++ if (sel >= sizeof(hparts))
++ {
++ as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
++ p[1]);
++ sel = 0;
++ }
++ }
++ else
++ {
++ for (sel = 0; sel < sizeof(bparts); sel++)
++ if (TOLOWER(p[1]) == bparts[sel])
++ break;
++
++ if (sel >= sizeof(bparts))
++ {
++ as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
++ p[1]);
++ sel = 0;
++ }
++ }
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = sel;
++}
++
++/* This is the parser for "Rp[displacement]" expressions. In addition
++ to the "official" syntax, we accept a label as a replacement for
++ the register expression. This syntax implies Rp=PC and the
++ displacement is the pc-relative distance to the label. */
++static void
++parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
++{
++ expressionS *exp = &current_insn.immediate;
++ int slot, regid;
++ char *save, *p, c;
++
++ pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
++ str, op->is_signed, op->is_pcrel, op->align_order);
++
++ for (p = str; *p; p++)
++ if (*p == '[')
++ break;
++
++ slot = current_insn.next_slot++;
++
++ /* First, check if we have a valid register either before '[' or as
++ the sole expression. If so, we use the Rp[disp] syntax. */
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ *p = c;
++
++ if (regid >= 0)
++ {
++ current_insn.field_value[slot].value = regid;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].align_order = op->align_order;
++
++ if (c == '[')
++ {
++ save = input_line_pointer;
++ input_line_pointer = p + 1;
++
++ expression(exp);
++
++ if (*input_line_pointer != ']')
++ as_bad(_("junk after displacement expression"));
++
++ input_line_pointer = save;
++
++ switch (exp->X_op)
++ {
++ case O_illegal:
++ as_bad(_("illegal displacement expression"));
++ break;
++ case O_absent:
++ as_bad(_("missing displacement expression"));
++ break;
++ case O_constant:
++ pr_debug(" -> constant: %ld\n", exp->X_add_number);
++ current_insn.field_value[slot].value = exp->X_add_number;
++ break;
++#if 0
++ case O_subtract:
++ if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
++ current_insn.pcrel = TRUE;
++ pr_debug(" -> subtract: pcrel? %s\n",
++ current_insn.pcrel ? "yes" : "no");
++ /* fall through */
++#endif
++ default:
++ pr_debug(" -> (%p <%d> %p + %d)\n",
++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
++ exp->X_add_number);
++ current_insn.field_value[slot].value = 0;
++ }
++ }
++ else
++ {
++ exp->X_op = O_constant;
++ exp->X_add_number = 0;
++ current_insn.field_value[slot].value = 0;
++ }
++ }
++ else
++ {
++ /* Didn't find a valid register. Try parsing it as a label. */
++ current_insn.field_value[slot].value = AVR32_REG_PC;
++ parse_jmplabel(op, str, opindex);
++ }
++}
++
++static void
++parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ int slot, regid;
++ char *p, *end, c;
++
++ for (p = str; *p; p++)
++ if (*p == '[')
++ break;
++
++ assert(*p);
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ assert(regid >= 0);
++ *p = c;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++
++ p++;
++ for (end = p; *end; end++)
++ if (*end == ']' || *end == '<')
++ break;
++
++ assert(*end);
++
++ c = *end, *end = 0;
++ regid = avr32_parse_intreg(p);
++ assert(regid >= 0);
++ *end = c;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = 0;
++
++ if (*end == '<')
++ {
++ expressionS exp;
++ char *save;
++
++ p = end + 2;
++ for (end = p; *end; end++)
++ if (*end == ']')
++ break;
++
++ assert(*end == ']');
++
++ c = *end, *end = 0;
++ save = input_line_pointer;
++ input_line_pointer = p;
++ expression(&exp);
++
++ if (*input_line_pointer)
++ as_bad(_("junk after shift expression"));
++
++ *end = c;
++ input_line_pointer = save;
++
++ if (exp.X_op == O_constant)
++ current_insn.field_value[slot].value = exp.X_add_number;
++ else
++ as_bad(_("shift expression too complex"));
++ }
++}
++
++static void
++parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
++{
++ int slot, regid;
++ char *p, *end, c;
++
++ for (p = str; *p; p++)
++ if (*p == '[')
++ break;
++
++ assert(*p);
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ assert(regid >= 0);
++ *p = c;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++
++ p++;
++ for (end = p; *end; end++)
++ if (*end == '<')
++ break;
++
++ assert(*end);
++
++ c = *end, *end = 0;
++ parse_intreg_part(op, p, opindex);
++ *end = c;
++}
++
++static void
++parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
++{
++ char *p, c;
++
++ for (p = str; *p; p++)
++ if (*p == '[')
++ break;
++
++ /* The lddpc instruction comes in two different syntax variants:
++ lddpc reg, expression
++ lddpc reg, pc[disp]
++ If the operand contains a '[', we use the second form. */
++ if (*p)
++ {
++ int regid;
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ *p = c;
++ if (regid == AVR32_REG_PC)
++ {
++ char *end;
++
++ for (end = ++p; *end; end++) ;
++ if (*(--end) != ']')
++ as_bad(_("unrecognized form of instruction: `%s'"), str);
++ else
++ {
++ c = *end, *end = 0;
++ parse_const(op, p, opindex);
++ *end = c;
++ current_insn.pcrel = 0;
++ }
++ }
++ else
++ as_bad(_("unrecognized form of instruction: `%s'"), str);
++ }
++ else
++ {
++ parse_jmplabel(op, str, opindex);
++ }
++}
++
++static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str ATTRIBUTE_UNUSED,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ int slot;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = AVR32_REG_SP;
++}
++
++static void
++parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
++{
++ char *p, c;
++
++ for (; *str; str++)
++ if (*str == '[')
++ break;
++
++ assert(*str);
++
++ for (p = ++str; *p; p++)
++ if (*p == ']')
++ break;
++
++ c = *p, *p = 0;
++ parse_const(op, str, opindex);
++ *p = c;
++}
++
++static void
++parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ int slot;
++
++ str += 2;
++ if (*str == '#')
++ str++;
++ if (*str < '0' || *str > '7' || str[1])
++ as_bad(_("invalid coprocessor `%s'"), str);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = *str - '0';
++}
++
++static void
++parse_cpreg(const struct avr32_operand *op, char *str,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned int crid;
++ int slot;
++ char *endptr;
++
++ str += 2;
++ crid = strtoul(str, &endptr, 10);
++ if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
++ as_bad(_("invalid coprocessor register `%s'"), str);
++
++ crid >>= op->align_order;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = crid;
++}
++
++static void
++parse_number(const struct avr32_operand *op, char *str,
++ int opindex ATTRIBUTE_UNUSED)
++{
++ expressionS exp;
++ int slot;
++ char *save;
++
++ save = input_line_pointer;
++ input_line_pointer = str;
++ expression(&exp);
++ input_line_pointer = save;
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].align_order = op->align_order;
++
++ if (exp.X_op == O_constant)
++ current_insn.field_value[slot].value = exp.X_add_number;
++ else
++ as_bad(_("invalid numeric expression `%s'"), str);
++}
++
++static void
++parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask;
++ unsigned long value = 0;
++ int slot;
++ char *tail;
++
++ regmask = avr32_parse_reglist(str, &tail);
++ if (*tail)
++ as_bad(_("invalid register list `%s'"), str);
++ else
++ {
++ if (avr32_make_regmask8(regmask, &value))
++ as_bad(_("register list `%s' doesn't fit"), str);
++ }
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = value;
++}
++
++static int
++parse_reglist_tail(char *str, unsigned long regmask)
++{
++ expressionS exp;
++ char *save, *p, c;
++ int regid;
++
++ for (p = str + 1; *p; p++)
++ if (*p == '=')
++ break;
++
++ if (!*p)
++ {
++ as_bad(_("invalid register list `%s'"), str);
++ return -2;
++ }
++
++ c = *p, *p = 0;
++ regid = avr32_parse_intreg(str);
++ *p = c;
++
++ if (regid != 12)
++ {
++ as_bad(_("invalid register list `%s'"), str);
++ return -2;
++ }
++
++ /* If we have an assignment, we must pop PC and we must _not_
++ pop LR or R12 */
++ if (!(regmask & (1 << AVR32_REG_PC)))
++ {
++ as_bad(_("return value specified for non-return instruction"));
++ return -2;
++ }
++ else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
++ {
++ as_bad(_("can't pop LR or R12 when specifying return value"));
++ return -2;
++ }
++
++ save = input_line_pointer;
++ input_line_pointer = p + 1;
++ expression(&exp);
++ input_line_pointer = save;
++
++ if (exp.X_op != O_constant
++ || exp.X_add_number < -1
++ || exp.X_add_number > 1)
++ {
++ as_bad(_("invalid return value `%s'"), str);
++ return -2;
++ }
++
++ return exp.X_add_number;
++}
++
++static void
++parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask;
++ unsigned long value = 0, kbit = 0;
++ int slot;
++ char *tail;
++
++ regmask = avr32_parse_reglist(str, &tail);
++ /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
++ if (*tail)
++ {
++ int retval;
++
++ retval = parse_reglist_tail(tail, regmask);
++
++ switch (retval)
++ {
++ case -1:
++ regmask |= 1 << AVR32_REG_LR;
++ break;
++ case 0:
++ break;
++ case 1:
++ regmask |= 1 << AVR32_REG_R12;
++ break;
++ default:
++ break;
++ }
++
++ kbit = 1;
++ }
++
++ if (avr32_make_regmask8(regmask, &value))
++ as_bad(_("register list `%s' doesn't fit"), str);
++
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = (value << 1) | kbit;
++}
++
++static void
++parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask;
++ int slot;
++ char *tail;
++
++ regmask = avr32_parse_reglist(str, &tail);
++ if (*tail)
++ as_bad(_("invalid register list `%s'"), str);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regmask;
++}
++
++static void
++parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask;
++ int slot, rp, w_bit = 0;
++ char *tail, *p, c;
++
++ for (p = str; *p && *p != ','; p++)
++ if (*p == '+')
++ break;
++
++ c = *p, *p = 0;
++ rp = avr32_parse_intreg(str);
++ *p = c;
++ if (rp < 0)
++ {
++ as_bad(_("invalid destination register in `%s'"), str);
++ return;
++ }
++
++ if (p[0] == '+' && p[1] == '+')
++ {
++ w_bit = 1;
++ p += 2;
++ }
++
++ if (*p != ',')
++ {
++ as_bad(_("expected `,' after destination register in `%s'"), str);
++ return;
++ }
++
++ str = p + 1;
++ regmask = avr32_parse_reglist(str, &tail);
++ if (*tail)
++ {
++ int retval;
++
++ if (rp != AVR32_REG_SP)
++ {
++ as_bad(_("junk at end of line: `%s'"), tail);
++ return;
++ }
++
++ rp = AVR32_REG_PC;
++
++ retval = parse_reglist_tail(tail, regmask);
++
++ switch (retval)
++ {
++ case -1:
++ regmask |= 1 << AVR32_REG_LR;
++ break;
++ case 0:
++ break;
++ case 1:
++ regmask |= 1 << AVR32_REG_R12;
++ break;
++ default:
++ return;
++ }
++ }
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = rp;
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = w_bit;
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regmask;
++}
++
++static void
++parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask;
++ int slot, h_bit = 0;
++ char *tail;
++
++ regmask = avr32_parse_cpreglist(str, &tail);
++ if (*tail)
++ as_bad(_("junk at end of line: `%s'"), tail);
++ else if (regmask & 0xffUL)
++ {
++ if (regmask & 0xff00UL)
++ as_bad(_("register list `%s' doesn't fit"), str);
++ regmask &= 0xff;
++ }
++ else if (regmask & 0xff00UL)
++ {
++ regmask >>= 8;
++ h_bit = 1;
++ }
++ else
++ as_warn(_("register list is empty"));
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regmask;
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = h_bit;
++}
++
++static void
++parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask, regmask_d = 0;
++ int slot, i;
++ char *tail;
++
++ regmask = avr32_parse_cpreglist(str, &tail);
++ if (*tail)
++ as_bad(_("junk at end of line: `%s'"), tail);
++
++ for (i = 0; i < 8; i++)
++ {
++ if (regmask & 1)
++ {
++ if (!(regmask & 2))
++ {
++ as_bad(_("register list `%s' doesn't fit"), str);
++ break;
++ }
++ regmask_d |= 1 << i;
++ }
++ else if (regmask & 2)
++ {
++ as_bad(_("register list `%s' doesn't fit"), str);
++ break;
++ }
++
++ regmask >>= 2;
++ }
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regmask_d;
++}
++
++static void
++parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ int regid, slot;
++
++ regid = avr32_parse_intreg(str);
++ if (regid < 0)
++ {
++ expressionS exp;
++ char *save;
++
++ regid = 0;
++
++ save = input_line_pointer;
++ input_line_pointer = str;
++ expression(&exp);
++ input_line_pointer = save;
++
++ if (exp.X_op != O_constant)
++ as_bad(_("invalid return value `%s'"), str);
++ else
++ switch (exp.X_add_number)
++ {
++ case -1:
++ regid = AVR32_REG_LR;
++ break;
++ case 0:
++ regid = AVR32_REG_SP;
++ break;
++ case 1:
++ regid = AVR32_REG_PC;
++ break;
++ default:
++ as_bad(_("invalid return value `%s'"), str);
++ break;
++ }
++ }
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++}
++
++#define parse_mcall parse_intreg_disp
++
++static void
++parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ expressionS exp;
++ int slot;
++ char *save;
++
++ save = input_line_pointer;
++ input_line_pointer = str;
++ expression(&exp);
++ input_line_pointer = save;
++
++ slot = current_insn.next_slot++;
++
++ if (exp.X_op == O_constant)
++ {
++ if (exp.X_add_number > 0)
++ exp.X_add_number--;
++ current_insn.field_value[slot].value = exp.X_add_number;
++ }
++ else
++ as_bad(_("invalid numeric expression `%s'"), str);
++}
++
++#define parse_coh parse_nothing
++
++static void
++parse_fpreg(const struct avr32_operand *op,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regid;
++ int slot;
++
++ regid = strtoul(str + 2, NULL, 10);
++
++ if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
++ as_bad(_("invalid floating-point register `%s'"), str);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++ current_insn.field_value[slot].align_order = op->align_order;
++}
++
++static void
++parse_picoreg(const struct avr32_operand *op,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regid;
++ int slot;
++
++ regid = avr32_parse_picoreg(str);
++ if (regid & ((1 << op->align_order) - 1))
++ as_bad(_("invalid double-word PiCo register `%s'"), str);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++ current_insn.field_value[slot].align_order = op->align_order;
++}
++
++static void
++parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask;
++ int slot, h_bit = 0;
++ char *tail;
++
++ regmask = avr32_parse_pico_reglist(str, &tail);
++ if (*tail)
++ as_bad(_("junk at end of line: `%s'"), tail);
++
++ if (regmask & 0x00ffUL)
++ {
++ if (regmask & 0xff00UL)
++ as_bad(_("register list `%s' doesn't fit"), str);
++ regmask &= 0x00ffUL;
++ }
++ else if (regmask & 0xff00UL)
++ {
++ regmask >>= 8;
++ h_bit = 1;
++ }
++ else
++ as_warn(_("register list is empty"));
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regmask;
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = h_bit;
++}
++
++static void
++parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regmask, regmask_d = 0;
++ int slot, i;
++ char *tail;
++
++ regmask = avr32_parse_pico_reglist(str, &tail);
++ if (*tail)
++ as_bad(_("junk at end of line: `%s'"), tail);
++
++ for (i = 0; i < 8; i++)
++ {
++ if (regmask & 1)
++ {
++ if (!(regmask & 2))
++ {
++ as_bad(_("register list `%s' doesn't fit"), str);
++ break;
++ }
++ regmask_d |= 1 << i;
++ }
++ else if (regmask & 2)
++ {
++ as_bad(_("register list `%s' doesn't fit"), str);
++ break;
++ }
++
++ regmask >>= 2;
++ }
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regmask_d;
++}
++
++static void
++parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
++ char *str, int opindex ATTRIBUTE_UNUSED)
++{
++ unsigned long regid;
++ int slot;
++
++ regid = strtoul(str + 2, NULL, 10);
++
++ if (regid >= 12)
++ as_bad(_("invalid PiCo IN register `%s'"), str);
++
++ slot = current_insn.next_slot++;
++ current_insn.field_value[slot].value = regid;
++ current_insn.field_value[slot].align_order = 0;
++}
++
++#define parse_pico_out0 parse_nothing
++#define parse_pico_out1 parse_nothing
++#define parse_pico_out2 parse_nothing
++#define parse_pico_out3 parse_nothing
++
++#define OP(name, sgn, pcrel, align, func) \
++ { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
++
++struct avr32_operand avr32_operand_table[] = {
++ OP(INTREG, 0, 0, 0, intreg),
++ OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
++ OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
++ OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
++ OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
++ OP(INTREG_BSEL, 0, 0, 0, intreg_part),
++ OP(INTREG_HSEL, 0, 0, 1, intreg_part),
++ OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
++ OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
++ OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
++ OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
++ OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
++ OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
++ OP(INTREG_INDEX, 0, 0, 0, intreg_index),
++ OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
++ OP(DWREG, 0, 0, 1, intreg),
++ OP(PC_UDISP_W, 0, 1, 2, pc_disp),
++ OP(SP, 0, 0, 0, sp),
++ OP(SP_UDISP_W, 0, 0, 2, sp_disp),
++ OP(CPNO, 0, 0, 0, cpno),
++ OP(CPREG, 0, 0, 0, cpreg),
++ OP(CPREG_D, 0, 0, 1, cpreg),
++ OP(UNSIGNED_CONST, 0, 0, 0, const),
++ OP(UNSIGNED_CONST_W, 0, 0, 2, const),
++ OP(SIGNED_CONST, 1, 0, 0, const),
++ OP(SIGNED_CONST_W, 1, 0, 2, const),
++ OP(JMPLABEL, 1, 1, 1, jmplabel),
++ OP(UNSIGNED_NUMBER, 0, 0, 0, number),
++ OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
++ OP(REGLIST8, 0, 0, 0, reglist8),
++ OP(REGLIST9, 0, 0, 0, reglist9),
++ OP(REGLIST16, 0, 0, 0, reglist16),
++ OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
++ OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
++ OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
++ OP(RETVAL, 0, 0, 0, retval),
++ OP(MCALL, 1, 0, 2, mcall),
++ OP(JOSPINC, 0, 0, 0, jospinc),
++ OP(COH, 0, 0, 0, coh),
++ OP(FPREG_S, 0, 0, 0, fpreg),
++ OP(FPREG_D, 0, 0, 1, fpreg),
++ OP(PICO_REG_W, 0, 0, 0, picoreg),
++ OP(PICO_REG_D, 0, 0, 1, picoreg),
++ OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
++ OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
++ OP(PICO_IN, 0, 0, 0, pico_in),
++ OP(PICO_OUT0, 0, 0, 0, pico_out0),
++ OP(PICO_OUT1, 0, 0, 0, pico_out1),
++ OP(PICO_OUT2, 0, 0, 0, pico_out2),
++ OP(PICO_OUT3, 0, 0, 0, pico_out3),
++};
++
++symbolS *
++md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
++{
++ pr_debug("md_undefined_symbol: %s\n", name);
++ return 0;
++}
++
++struct avr32_relax_type
++{
++ long lower_bound;
++ long upper_bound;
++ unsigned char align;
++ unsigned char length;
++ signed short next;
++};
++
++#define EMPTY { 0, 0, 0, 0, -1 }
++#define C(lower, upper, align, next) \
++ { (lower), (upper), (align), 2, AVR32_OPC_##next }
++#define E(lower, upper, align) \
++ { (lower), (upper), (align), 4, -1 }
++
++static const struct avr32_relax_type avr32_relax_table[] =
++ {
++ /* 0 */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY,
++ E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
++ EMPTY,
++ /* 16 */
++ EMPTY, EMPTY, EMPTY, EMPTY,
++
++ C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
++ C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
++ C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
++ C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++ /* 32 */
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
++
++ EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 48 */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY,
++
++ C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
++
++ EMPTY, EMPTY, EMPTY,
++ /* 64: csrfcz */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ E(0, 65535, 0), E(0, 65535, 0),
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ E(-32768, 32767, 0),
++ /* 80: LD_SB2 */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++
++ C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
++
++ EMPTY,
++ EMPTY, EMPTY,
++
++ C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
++
++ EMPTY, EMPTY, EMPTY,
++
++ C(0, 14, 1, LD_UH4), E(-32768, 32767, 0),
++
++ EMPTY, EMPTY, EMPTY, EMPTY,
++
++ C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
++
++ E(0, 1020, 2), /* LDC_D1 */
++ EMPTY, EMPTY,
++ E(0, 1020, 2), /* LDC_W1 */
++ EMPTY, EMPTY,
++ E(0, 16380, 2), /* LDC0_D */
++ E(0, 16380, 2), /* LDC0_W */
++ EMPTY, EMPTY, EMPTY, EMPTY,
++
++ C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
++
++ EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 128: MACHH_W */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ E(-131072, 131068, 2), /* MCALL */
++ E(0, 1020, 2), /* MFDR */
++ E(0, 1020, 2), /* MFSR */
++ EMPTY, EMPTY,
++
++ C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
++
++ EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++
++ E(-128, 127, 0), /* MOVEQ2 */
++ E(-128, 127, 0), /* MOVNE2 */
++ E(-128, 127, 0), /* MOVCC2 */
++ E(-128, 127, 0), /* 160: MOVCS2 */
++ E(-128, 127, 0), /* MOVGE2 */
++ E(-128, 127, 0), /* MOVLT2 */
++ E(-128, 127, 0), /* MOVMI2 */
++ E(-128, 127, 0), /* MOVPL2 */
++ E(-128, 127, 0), /* MOVLS2 */
++ E(-128, 127, 0), /* MOVGT2 */
++ E(-128, 127, 0), /* MOVLE2 */
++ E(-128, 127, 0), /* MOVHI2 */
++ E(-128, 127, 0), /* MOVVS2 */
++ E(-128, 127, 0), /* MOVVC2 */
++ E(-128, 127, 0), /* MOVQS2 */
++ E(-128, 127, 0), /* MOVAL2 */
++
++ E(0, 1020, 2), /* MTDR */
++ E(0, 1020, 2), /* MTSR */
++ EMPTY,
++ EMPTY,
++ E(-128, 127, 0), /* MUL3 */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 192: MVCR_W */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ E(0, 65535, 0), E(0, 65535, 0),
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 224: PASR_H */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 256: PUNPCKSB_H */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++
++ C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
++
++ EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY,
++
++ C(-1024, 1022, 1, BRAL),
++
++ EMPTY, EMPTY, EMPTY,
++ E(-128, 127, 0), /* RSUB2 */
++ /* 288: SATADD_H */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ E(0, 255, 0), /* SLEEP */
++ EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 320: ST_B2 */
++ EMPTY, EMPTY,
++ C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
++ EMPTY, EMPTY, EMPTY, EMPTY,
++ E(-32768, 32767, 0),
++ EMPTY, EMPTY, EMPTY,
++ C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
++ EMPTY, EMPTY,
++ EMPTY,
++ C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
++ E(0, 1020, 2), /* STC_D1 */
++ EMPTY, EMPTY,
++ E(0, 1020, 2), /* STC_W1 */
++ EMPTY, EMPTY,
++ E(0, 16380, 2), /* STC0_D */
++ E(0, 16380, 2), /* STC0_W */
++
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 352: STDSP */
++ EMPTY, EMPTY,
++ E(0, 1020, 2), /* STHH_W1 */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ EMPTY, EMPTY, EMPTY,
++ E(-32768, 32767, 0),
++ C(-512, 508, 2, SUB4),
++ C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
++ /* SUB{cond} */
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ /* SUBF{cond} */
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
++ EMPTY,
++
++ /* 400: SWAP_B */
++ EMPTY, EMPTY, EMPTY,
++ E(0, 255, 0), /* SYNC */
++ EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 408: TST */
++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
++ /* 416: EXTRACT_B */
++ EMPTY, EMPTY, EMPTY, EMPTY,
++ };
++
++#undef E
++#undef C
++#undef EMPTY
++
++#define AVR32_RS_NONE (-1)
++
++#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
++#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
++#define relax_more(state) (avr32_relax_table[(state)].next)
++
++#define opc_initial_substate(opc) ((opc)->id)
++
++static int need_relax(int subtype, offsetT distance)
++{
++ offsetT upper_bound, lower_bound;
++
++ upper_bound = avr32_relax_table[subtype].upper_bound;
++ lower_bound = avr32_relax_table[subtype].lower_bound;
++
++ if (distance & ((1 << avr32_rs_align(subtype)) - 1))
++ return 1;
++ if ((distance > upper_bound) || (distance < lower_bound))
++ return 1;
++
++ return 0;
++}
++
++enum {
++ LDA_SUBTYPE_MOV1,
++ LDA_SUBTYPE_MOV2,
++ LDA_SUBTYPE_SUB,
++ LDA_SUBTYPE_LDDPC,
++ LDA_SUBTYPE_LDW,
++ LDA_SUBTYPE_GOTLOAD,
++ LDA_SUBTYPE_GOTLOAD_LARGE,
++};
++
++enum {
++ CALL_SUBTYPE_RCALL1,
++ CALL_SUBTYPE_RCALL2,
++ CALL_SUBTYPE_MCALL_CP,
++ CALL_SUBTYPE_MCALL_GOT,
++ CALL_SUBTYPE_MCALL_LARGE,
++};
++
++#define LDA_INITIAL_SIZE (avr32_pic ? 4 : 2)
++#define CALL_INITIAL_SIZE 2
++
++#define need_reloc(sym, seg, pcrel) \
++ (!(S_IS_DEFINED(sym) \
++ && ((pcrel && S_GET_SEGMENT(sym) == seg) \
++ || (!pcrel && S_GET_SEGMENT(sym) == absolute_section))) \
++ || S_FORCE_RELOC(sym, 1))
++
++/* Return an initial guess of the length by which a fragment must grow to
++ hold a branch to reach its destination.
++ Also updates fr_type/fr_subtype as necessary.
++
++ Called just before doing relaxation.
++ Any symbol that is now undefined will not become defined.
++ The guess for fr_var is ACTUALLY the growth beyond fr_fix.
++ Whatever we do to grow fr_fix or fr_var contributes to our returned value.
++ Although it may not be explicit in the frag, pretend fr_var starts with a
++ 0 value. */
++
++static int
++avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
++{
++ int growth = 0;
++
++ assert(fragP);
++ assert(fragP->fr_symbol);
++
++ if (fragP->tc_frag_data.force_extended
++ || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
++ {
++ int largest_state = fragP->fr_subtype;
++ while (relax_more(largest_state) != AVR32_RS_NONE)
++ largest_state = relax_more(largest_state);
++ growth = avr32_rs_size(largest_state) - fragP->fr_var;
++ }
++ else
++ {
++ growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
++ }
++
++ pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
++ fragP->fr_file, fragP->fr_line, growth);
++
++ return growth;
++}
++
++static int
++avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
++{
++ return fragP->fr_var - LDA_INITIAL_SIZE;
++}
++
++static int
++avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
++{
++ return fragP->fr_var - CALL_INITIAL_SIZE;
++}
++
++static int
++avr32_cpool_estimate_size_before_relax(fragS *fragP,
++ segT segment ATTRIBUTE_UNUSED)
++{
++ return fragP->fr_var;
++}
++
++/* This macro may be defined to relax a frag. GAS will call this with the
++ * segment, the frag, and the change in size of all previous frags;
++ * md_relax_frag should return the change in size of the frag. */
++static long
++avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
++{
++ int state, next_state;
++ symbolS *symbolP; /* The target symbol */
++ long growth = 0;
++
++ state = next_state = fragP->fr_subtype;
++
++ symbolP = fragP->fr_symbol;
++
++ if (fragP->tc_frag_data.force_extended
++ || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
++ {
++ /* Symbol must be resolved by the linker. Emit the largest
++ possible opcode. */
++ while (relax_more(next_state) != AVR32_RS_NONE)
++ next_state = relax_more(next_state);
++ }
++ else
++ {
++ addressT address; /* The address of fragP */
++ addressT target; /* The address of the target symbol */
++ offsetT distance; /* The distance between the insn and the symbol */
++ fragS *sym_frag;
++
++ address = fragP->fr_address;
++ target = fragP->fr_offset;
++ symbolP = fragP->fr_symbol;
++ sym_frag = symbol_get_frag(symbolP);
++
++ address += fragP->fr_fix - fragP->fr_var;
++ target += S_GET_VALUE(symbolP);
++
++ if (stretch != 0
++ && sym_frag->relax_marker != fragP->relax_marker
++ && S_GET_SEGMENT(symbolP) == segment)
++ /* if it was correctly aligned before, make sure it stays aligned */
++ target += stretch & (~0UL << avr32_rs_align(state));
++
++ if (fragP->tc_frag_data.pcrel)
++ distance = target - (address & (~0UL << avr32_rs_align(state)));
++ else
++ distance = target;
++
++ pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
++ fragP->fr_file, fragP->fr_line, target, address,
++ distance, distance, avr32_rs_align(state));
++
++ if (need_relax(state, distance))
++ {
++ if (relax_more(state) != AVR32_RS_NONE)
++ next_state = relax_more(state);
++ pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
++ fragP->fr_file, fragP->fr_line, state, next_state,
++ target, address, avr32_rs_align(state));
++ }
++ }
++
++ growth = avr32_rs_size(next_state) - avr32_rs_size(state);
++ fragP->fr_subtype = next_state;
++
++ pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
++ fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
++ avr32_opc_table[next_state].value);
++
++ return growth;
++}
++
++static long
++avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
++{
++ struct cpool *pool= NULL;
++ unsigned int entry = 0;
++ addressT address, target;
++ offsetT distance;
++ symbolS *symbolP;
++ fragS *sym_frag;
++ long old_size, new_size;
++
++ symbolP = fragP->fr_symbol;
++ old_size = fragP->fr_var;
++ if (!avr32_pic)
++ {
++ pool = fragP->tc_frag_data.pool;
++ entry = fragP->tc_frag_data.pool_entry;
++ }
++
++ address = fragP->fr_address;
++ address += fragP->fr_fix - LDA_INITIAL_SIZE;
++
++ if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
++ goto relax_max;
++
++ target = fragP->fr_offset;
++ sym_frag = symbol_get_frag(symbolP);
++ target += S_GET_VALUE(symbolP);
++
++ if (sym_frag->relax_marker != fragP->relax_marker
++ && S_GET_SEGMENT(symbolP) == segment)
++ target += stretch;
++
++ distance = target - address;
++
++ pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
++ target, address, fragP->fr_var);
++
++ if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
++ && target <= 127 && (offsetT)target >= -128)
++ {
++ if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
++ || fragP->fr_subtype == LDA_SUBTYPE_LDW)
++ pool->literals[entry].refcount--;
++ new_size = 2;
++ fragP->fr_subtype = LDA_SUBTYPE_MOV1;
++ }
++ else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
++ && target <= 1048575 && (offsetT)target >= -1048576)
++ {
++ if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
++ || fragP->fr_subtype == LDA_SUBTYPE_LDW)
++ pool->literals[entry].refcount--;
++ new_size = 4;
++ fragP->fr_subtype = LDA_SUBTYPE_MOV2;
++ }
++ else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
++ /* the field will be negated, so this is really -(-32768)
++ and -(32767) */
++ && distance <= 32768 && distance >= -32767)
++ {
++ if (!avr32_pic
++ && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
++ || fragP->fr_subtype == LDA_SUBTYPE_LDW))
++ pool->literals[entry].refcount--;
++ new_size = 4;
++ fragP->fr_subtype = LDA_SUBTYPE_SUB;
++ }
++ else
++ {
++ relax_max:
++ if (avr32_pic)
++ {
++ if (linkrelax)
++ {
++ new_size = 8;
++ fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
++ }
++ else
++ {
++ new_size = 4;
++ fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
++ }
++ }
++ else
++ {
++ if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
++ && fragP->fr_subtype != LDA_SUBTYPE_LDW)
++ pool->literals[entry].refcount++;
++
++ sym_frag = symbol_get_frag(pool->symbol);
++ target = (sym_frag->fr_address + sym_frag->fr_fix
++ + pool->padding + pool->literals[entry].offset);
++
++ pr_debug("cpool sym address: 0x%lx\n",
++ sym_frag->fr_address + sym_frag->fr_fix);
++
++ know(pool->section == segment);
++
++ if (sym_frag->relax_marker != fragP->relax_marker)
++ target += stretch;
++
++ distance = target - address;
++ if (distance <= 508 && distance >= 0)
++ {
++ new_size = 2;
++ fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
++ }
++ else
++ {
++ new_size = 4;
++ fragP->fr_subtype = LDA_SUBTYPE_LDW;
++ }
++
++ pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
++ target, address, pool->literals[entry].refcount);
++ }
++ }
++
++ fragP->fr_var = new_size;
++
++ pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
++ fragP->fr_file, fragP->fr_line,
++ fragP->fr_subtype, new_size - old_size);
++
++ return new_size - old_size;
++}
++
++static long
++avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
++{
++ struct cpool *pool = NULL;
++ unsigned int entry = 0;
++ addressT address, target;
++ offsetT distance;
++ symbolS *symbolP;
++ fragS *sym_frag;
++ long old_size, new_size;
++
++ symbolP = fragP->fr_symbol;
++ old_size = fragP->fr_var;
++ if (!avr32_pic)
++ {
++ pool = fragP->tc_frag_data.pool;
++ entry = fragP->tc_frag_data.pool_entry;
++ }
++
++ address = fragP->fr_address;
++ address += fragP->fr_fix - CALL_INITIAL_SIZE;
++
++ if (need_reloc(symbolP, segment, 1))
++ {
++ pr_debug("call: must emit reloc\n");
++ goto relax_max;
++ }
++
++ target = fragP->fr_offset;
++ sym_frag = symbol_get_frag(symbolP);
++ target += S_GET_VALUE(symbolP);
++
++ if (sym_frag->relax_marker != fragP->relax_marker
++ && S_GET_SEGMENT(symbolP) == segment)
++ target += stretch;
++
++ distance = target - address;
++
++ if (distance <= 1022 && distance >= -1024)
++ {
++ pr_debug("call: distance is %d, emitting short rcall\n", distance);
++ if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
++ pool->literals[entry].refcount--;
++ new_size = 2;
++ fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
++ }
++ else if (distance <= 2097150 && distance >= -2097152)
++ {
++ pr_debug("call: distance is %d, emitting long rcall\n", distance);
++ if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
++ pool->literals[entry].refcount--;
++ new_size = 4;
++ fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
++ }
++ else
++ {
++ pr_debug("call: distance %d too far, emitting something big\n", distance);
++
++ relax_max:
++ if (avr32_pic)
++ {
++ if (linkrelax)
++ {
++ new_size = 10;
++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
++ }
++ else
++ {
++ new_size = 4;
++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
++ }
++ }
++ else
++ {
++ if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
++ pool->literals[entry].refcount++;
++
++ new_size = 4;
++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
++ }
++ }
++
++ fragP->fr_var = new_size;
++
++ pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
++ fragP->fr_file, fragP->fr_line,
++ new_size - old_size, fragP->fr_var);
++
++ return new_size - old_size;
++}
++
++static long
++avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
++ fragS *fragP,
++ long stretch ATTRIBUTE_UNUSED)
++{
++ struct cpool *pool;
++ addressT address;
++ long old_size, new_size;
++ unsigned int entry;
++
++ pool = fragP->tc_frag_data.pool;
++ address = fragP->fr_address + fragP->fr_fix;
++ old_size = fragP->fr_var;
++ new_size = 0;
++
++ for (entry = 0; entry < pool->next_free_entry; entry++)
++ {
++ if (pool->literals[entry].refcount > 0)
++ {
++ pool->literals[entry].offset = new_size;
++ new_size += 4;
++ }
++ }
++
++ fragP->fr_var = new_size;
++
++ return new_size - old_size;
++}
++
++/* *fragP has been relaxed to its final size, and now needs to have
++ the bytes inside it modified to conform to the new size.
++
++ Called after relaxation is finished.
++ fragP->fr_type == rs_machine_dependent.
++ fragP->fr_subtype is the subtype of what the address relaxed to. */
++
++static void
++avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
++ segT segment ATTRIBUTE_UNUSED,
++ fragS *fragP)
++{
++ const struct avr32_opcode *opc;
++ const struct avr32_ifield *ifield;
++ bfd_reloc_code_real_type r_type;
++ symbolS *symbolP;
++ fixS *fixP;
++ bfd_vma value;
++ int subtype;
++
++ opc = &avr32_opc_table[fragP->fr_subtype];
++ ifield = opc->fields[opc->var_field];
++ symbolP = fragP->fr_symbol;
++ subtype = fragP->fr_subtype;
++ r_type = opc->reloc_type;
++
++ /* Clear the opcode bits and the bits belonging to the relaxed
++ field. We assume all other fields stay the same. */
++ value = bfd_getb32(fragP->fr_opcode);
++ value &= ~(opc->mask | ifield->mask);
++
++ /* Insert the new opcode */
++ value |= opc->value;
++ bfd_putb32(value, fragP->fr_opcode);
++
++ fragP->fr_fix += opc->size - fragP->fr_var;
++
++ if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
++ {
++ switch (fragP->tc_frag_data.reloc_info)
++ {
++ case AVR32_OPINFO_HI:
++ r_type = BFD_RELOC_HI16;
++ break;
++ case AVR32_OPINFO_LO:
++ r_type = BFD_RELOC_LO16;
++ break;
++ case AVR32_OPINFO_GOT:
++ switch (r_type)
++ {
++ case BFD_RELOC_AVR32_18W_PCREL:
++ r_type = BFD_RELOC_AVR32_GOT18SW;
++ break;
++ case BFD_RELOC_AVR32_16S:
++ r_type = BFD_RELOC_AVR32_GOT16S;
++ break;
++ default:
++ BAD_CASE(r_type);
++ break;
++ }
++ break;
++ default:
++ BAD_CASE(fragP->tc_frag_data.reloc_info);
++ break;
++ }
++ }
++
++ pr_debug("%s:%d: convert_frag: new %s fixup\n",
++ fragP->fr_file, fragP->fr_line,
++ bfd_get_reloc_code_name(r_type));
++
++#if 1
++ fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
++ &fragP->tc_frag_data.exp,
++ fragP->tc_frag_data.pcrel, r_type);
++#else
++ fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
++ fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
++#endif
++
++ /* Revert fix_new brain damage. "dot_value" is the value of PC at
++ the point of the fixup, relative to the frag address. fix_new()
++ and friends think they are only being called during the assembly
++ pass, not during relaxation or similar, so fx_dot_value, fx_file
++ and fx_line are all initialized to the wrong value. But we don't
++ know the size of the fixup until now, so we really can't live up
++ to the assumptions these functions make about the target. What
++ do these functions think the "where" and "frag" argument mean
++ anyway? */
++ fixP->fx_dot_value = fragP->fr_fix - opc->size;
++ fixP->fx_file = fragP->fr_file;
++ fixP->fx_line = fragP->fr_line;
++
++ fixP->tc_fix_data.ifield = ifield;
++ fixP->tc_fix_data.align = avr32_rs_align(subtype);
++ fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
++ fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
++}
++
++static void
++avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
++ segT segment ATTRIBUTE_UNUSED,
++ fragS *fragP)
++{
++ const struct avr32_opcode *opc;
++ const struct avr32_ifield *ifield;
++ bfd_reloc_code_real_type r_type;
++ expressionS exp;
++ struct cpool *pool;
++ fixS *fixP;
++ bfd_vma value;
++ int regid, pcrel = 0, align = 0;
++ char *p;
++
++ r_type = BFD_RELOC_NONE;
++ regid = fragP->tc_frag_data.reloc_info;
++ p = fragP->fr_opcode;
++ exp.X_add_symbol = fragP->fr_symbol;
++ exp.X_add_number = fragP->fr_offset;
++ exp.X_op = O_symbol;
++
++ pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
++ fragP->fr_file, fragP->fr_line,
++ fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
++
++ switch (fragP->fr_subtype)
++ {
++ case LDA_SUBTYPE_MOV1:
++ opc = &avr32_opc_table[AVR32_OPC_MOV1];
++ opc->fields[0]->insert(opc->fields[0], p, regid);
++ ifield = opc->fields[1];
++ r_type = opc->reloc_type;
++ break;
++ case LDA_SUBTYPE_MOV2:
++ opc = &avr32_opc_table[AVR32_OPC_MOV2];
++ opc->fields[0]->insert(opc->fields[0], p, regid);
++ ifield = opc->fields[1];
++ r_type = opc->reloc_type;
++ break;
++ case LDA_SUBTYPE_SUB:
++ opc = &avr32_opc_table[AVR32_OPC_SUB5];
++ opc->fields[0]->insert(opc->fields[0], p, regid);
++ opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
++ ifield = opc->fields[2];
++ r_type = BFD_RELOC_AVR32_16N_PCREL;
++
++ /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
++ We'll have to fix it up later when we know whether to
++ generate a reloc for it (in which case the linker will negate
++ it, so we shouldn't). */
++ pcrel = 1;
++ break;
++ case LDA_SUBTYPE_LDDPC:
++ opc = &avr32_opc_table[AVR32_OPC_LDDPC];
++ align = 2;
++ r_type = BFD_RELOC_AVR32_9W_CP;
++ goto cpool_common;
++ case LDA_SUBTYPE_LDW:
++ opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
++ r_type = BFD_RELOC_AVR32_16_CP;
++ cpool_common:
++ opc->fields[0]->insert(opc->fields[0], p, regid);
++ ifield = opc->fields[1];
++ pool = fragP->tc_frag_data.pool;
++ exp.X_add_symbol = pool->symbol;
++ exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
++ pcrel = 1;
++ break;
++ case LDA_SUBTYPE_GOTLOAD_LARGE:
++ /* ld.w Rd, r6[Rd << 2] (last) */
++ opc = &avr32_opc_table[AVR32_OPC_LD_W5];
++ bfd_putb32(opc->value, p + 4);
++ opc->fields[0]->insert(opc->fields[0], p + 4, regid);
++ opc->fields[1]->insert(opc->fields[1], p + 4, 6);
++ opc->fields[2]->insert(opc->fields[2], p + 4, regid);
++ opc->fields[3]->insert(opc->fields[3], p + 4, 2);
++
++ /* mov Rd, (got_offset / 4) */
++ opc = &avr32_opc_table[AVR32_OPC_MOV2];
++ opc->fields[0]->insert(opc->fields[0], p, regid);
++ ifield = opc->fields[1];
++ r_type = BFD_RELOC_AVR32_LDA_GOT;
++ break;
++ case LDA_SUBTYPE_GOTLOAD:
++ opc = &avr32_opc_table[AVR32_OPC_LD_W4];
++ opc->fields[0]->insert(opc->fields[0], p, regid);
++ opc->fields[1]->insert(opc->fields[1], p, 6);
++ ifield = opc->fields[2];
++ if (r_type == BFD_RELOC_NONE)
++ r_type = BFD_RELOC_AVR32_GOT16S;
++ break;
++ default:
++ BAD_CASE(fragP->fr_subtype);
++ }
++
++ value = bfd_getb32(p);
++ value &= ~(opc->mask | ifield->mask);
++ value |= opc->value;
++ bfd_putb32(value, p);
++
++ fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
++
++ if (fragP->fr_next
++ && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
++ != fragP->fr_fix))
++ {
++ fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
++ fragP->fr_var, bfd_get_reloc_code_name(r_type));
++ abort();
++ }
++
++ fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
++ &exp, pcrel, r_type);
++
++ /* Revert fix_new brain damage. "dot_value" is the value of PC at
++ the point of the fixup, relative to the frag address. fix_new()
++ and friends think they are only being called during the assembly
++ pass, not during relaxation or similar, so fx_dot_value, fx_file
++ and fx_line are all initialized to the wrong value. But we don't
++ know the size of the fixup until now, so we really can't live up
++ to the assumptions these functions make about the target. What
++ do these functions think the "where" and "frag" argument mean
++ anyway? */
++ fixP->fx_dot_value = fragP->fr_fix - opc->size;
++ fixP->fx_file = fragP->fr_file;
++ fixP->fx_line = fragP->fr_line;
++
++ fixP->tc_fix_data.ifield = ifield;
++ fixP->tc_fix_data.align = align;
++ /* these are only used if the fixup can actually be resolved */
++ fixP->tc_fix_data.min = -32768;
++ fixP->tc_fix_data.max = 32767;
++}
++
++static void
++avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
++ segT segment ATTRIBUTE_UNUSED,
++ fragS *fragP)
++{
++ const struct avr32_opcode *opc = NULL;
++ const struct avr32_ifield *ifield;
++ bfd_reloc_code_real_type r_type;
++ symbolS *symbol;
++ offsetT offset;
++ fixS *fixP;
++ bfd_vma value;
++ int pcrel = 0, align = 0;
++ char *p;
++
++ symbol = fragP->fr_symbol;
++ offset = fragP->fr_offset;
++ r_type = BFD_RELOC_NONE;
++ p = fragP->fr_opcode;
++
++ pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
++ fragP->fr_file, fragP->fr_line,
++ fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
++
++ switch (fragP->fr_subtype)
++ {
++ case CALL_SUBTYPE_RCALL1:
++ opc = &avr32_opc_table[AVR32_OPC_RCALL1];
++ /* fall through */
++ case CALL_SUBTYPE_RCALL2:
++ if (!opc)
++ opc = &avr32_opc_table[AVR32_OPC_RCALL2];
++ ifield = opc->fields[0];
++ r_type = opc->reloc_type;
++ pcrel = 1;
++ align = 1;
++ break;
++ case CALL_SUBTYPE_MCALL_CP:
++ opc = &avr32_opc_table[AVR32_OPC_MCALL];
++ opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
++ ifield = opc->fields[1];
++ r_type = BFD_RELOC_AVR32_CPCALL;
++ symbol = fragP->tc_frag_data.pool->symbol;
++ offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
++ assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
++ pcrel = 1;
++ align = 2;
++ break;
++ case CALL_SUBTYPE_MCALL_GOT:
++ opc = &avr32_opc_table[AVR32_OPC_MCALL];
++ opc->fields[0]->insert(opc->fields[0], p, 6);
++ ifield = opc->fields[1];
++ r_type = BFD_RELOC_AVR32_GOT18SW;
++ break;
++ case CALL_SUBTYPE_MCALL_LARGE:
++ assert(fragP->fr_var == 10);
++ /* ld.w lr, r6[lr << 2] */
++ opc = &avr32_opc_table[AVR32_OPC_LD_W5];
++ bfd_putb32(opc->value, p + 4);
++ opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
++ opc->fields[1]->insert(opc->fields[1], p + 4, 6);
++ opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
++ opc->fields[3]->insert(opc->fields[3], p + 4, 2);
++
++ /* icall lr */
++ opc = &avr32_opc_table[AVR32_OPC_ICALL];
++ bfd_putb16(opc->value >> 16, p + 8);
++ opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
++
++ /* mov lr, (got_offset / 4) */
++ opc = &avr32_opc_table[AVR32_OPC_MOV2];
++ opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
++ ifield = opc->fields[1];
++ r_type = BFD_RELOC_AVR32_GOTCALL;
++ break;
++ default:
++ BAD_CASE(fragP->fr_subtype);
++ }
++
++ /* Insert the opcode and clear the variable ifield */
++ value = bfd_getb32(p);
++ value &= ~(opc->mask | ifield->mask);
++ value |= opc->value;
++ bfd_putb32(value, p);
++
++ fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
++
++ if (fragP->fr_next
++ && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
++ != fragP->fr_fix))
++ {
++ fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
++ fragP->fr_file, fragP->fr_line,
++ fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
++ fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
++ (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
++ fragP->fr_next->fr_file, fragP->fr_next->fr_line);
++ }
++
++ fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
++ symbol, offset, pcrel, r_type);
++
++ /* Revert fix_new brain damage. "dot_value" is the value of PC at
++ the point of the fixup, relative to the frag address. fix_new()
++ and friends think they are only being called during the assembly
++ pass, not during relaxation or similar, so fx_dot_value, fx_file
++ and fx_line are all initialized to the wrong value. But we don't
++ know the size of the fixup until now, so we really can't live up
++ to the assumptions these functions make about the target. What
++ do these functions think the "where" and "frag" argument mean
++ anyway? */
++ fixP->fx_dot_value = fragP->fr_fix - opc->size;
++ fixP->fx_file = fragP->fr_file;
++ fixP->fx_line = fragP->fr_line;
++
++ fixP->tc_fix_data.ifield = ifield;
++ fixP->tc_fix_data.align = align;
++ /* these are only used if the fixup can actually be resolved */
++ fixP->tc_fix_data.min = -2097152;
++ fixP->tc_fix_data.max = 2097150;
++}
++
++static void
++avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
++ segT segment ATTRIBUTE_UNUSED,
++ fragS *fragP)
++{
++ struct cpool *pool;
++ addressT address;
++ unsigned int entry;
++ char *p;
++ char sym_name[20];
++
++ /* Did we get rid of the frag altogether? */
++ if (!fragP->fr_var)
++ return;
++
++ pool = fragP->tc_frag_data.pool;
++ address = fragP->fr_address + fragP->fr_fix;
++ p = fragP->fr_literal + fragP->fr_fix;
++
++ sprintf(sym_name, "$$cp_\002%x", pool->id);
++ symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
++ symbol_table_insert(pool->symbol);
++
++ for (entry = 0; entry < pool->next_free_entry; entry++)
++ {
++ if (pool->literals[entry].refcount > 0)
++ {
++ fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
++ FALSE, BFD_RELOC_AVR32_32_CPENT);
++ fragP->fr_fix += 4;
++ }
++ }
++}
++
++static struct avr32_relaxer avr32_default_relaxer = {
++ .estimate_size = avr32_default_estimate_size_before_relax,
++ .relax_frag = avr32_default_relax_frag,
++ .convert_frag = avr32_default_convert_frag,
++};
++static struct avr32_relaxer avr32_lda_relaxer = {
++ .estimate_size = avr32_lda_estimate_size_before_relax,
++ .relax_frag = avr32_lda_relax_frag,
++ .convert_frag = avr32_lda_convert_frag,
++};
++static struct avr32_relaxer avr32_call_relaxer = {
++ .estimate_size = avr32_call_estimate_size_before_relax,
++ .relax_frag = avr32_call_relax_frag,
++ .convert_frag = avr32_call_convert_frag,
++};
++static struct avr32_relaxer avr32_cpool_relaxer = {
++ .estimate_size = avr32_cpool_estimate_size_before_relax,
++ .relax_frag = avr32_cpool_relax_frag,
++ .convert_frag = avr32_cpool_convert_frag,
++};
++
++static void s_cpool(int arg ATTRIBUTE_UNUSED)
++{
++ struct cpool *pool;
++ unsigned int max_size;
++ char *buf;
++
++ pool = find_cpool(now_seg, now_subseg);
++ if (!pool || !pool->symbol || pool->next_free_entry == 0)
++ return;
++
++ /* Make sure the constant pool is properly aligned */
++ frag_align_code(2, 0);
++
++ /* Assume none of the entries are discarded, and that we need the
++ maximum amount of alignment. But we're not going to allocate
++ anything up front. */
++ max_size = pool->next_free_entry * 4 + 2;
++ frag_grow(max_size);
++ buf = frag_more(0);
++
++ frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
++ frag_now->tc_frag_data.pool = pool;
++
++ symbol_set_frag(pool->symbol, frag_now);
++
++ /* Assume zero initial size, allowing other relaxers to be
++ optimistic about things. */
++ frag_var(rs_machine_dependent, max_size, 0,
++ 0, pool->symbol, 0, NULL);
++
++ /* Mark the pool as empty. */
++ pool->used = 1;
++}
++
++/* The location from which a PC relative jump should be calculated,
++ given a PC relative reloc. */
++
++long
++md_pcrel_from_section (fixS *fixP, segT sec)
++{
++ pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
++
++ if (fixP->fx_addsy != NULL
++ && (! S_IS_DEFINED (fixP->fx_addsy)
++ || S_GET_SEGMENT (fixP->fx_addsy) != sec
++ || S_FORCE_RELOC(fixP->fx_addsy, 1)))
++ {
++ pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
++
++ /* The symbol is undefined (or is defined but not in this section).
++ Let the linker figure it out. */
++ return 0;
++ }
++
++ pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
++ fixP->fx_frag->fr_address, fixP->fx_where,
++ fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
++ fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
++
++ return ((fixP->fx_frag->fr_address + fixP->fx_where)
++ & (~0UL << fixP->tc_fix_data.align));
++}
++
++valueT
++md_section_align (segT segment, valueT size)
++{
++ int align = bfd_get_section_alignment (stdoutput, segment);
++ return ((size + (1 << align) - 1) & (-1 << align));
++}
++
++static int syntax_matches(const struct avr32_syntax *syntax,
++ char *str)
++{
++ int i;
++
++ pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
++
++ if (syntax->nr_operands < 0)
++ {
++ struct avr32_operand *op;
++ int optype;
++
++ for (i = 0; i < (-syntax->nr_operands - 1); i++)
++ {
++ char *p;
++ char c;
++
++ optype = syntax->operand[i];
++ assert(optype < AVR32_NR_OPERANDS);
++ op = &avr32_operand_table[optype];
++
++ for (p = str; *p; p++)
++ if (*p == ',')
++ break;
++
++ if (p == str)
++ return 0;
++
++ c = *p;
++ *p = 0;
++
++ if (!op->match(str))
++ {
++ *p = c;
++ return 0;
++ }
++
++ str = p;
++ *p = c;
++ if (c)
++ str++;
++ }
++
++ optype = syntax->operand[i];
++ assert(optype < AVR32_NR_OPERANDS);
++ op = &avr32_operand_table[optype];
++
++ if (!op->match(str))
++ return 0;
++ return 1;
++ }
++
++ for (i = 0; i < syntax->nr_operands; i++)
++ {
++ struct avr32_operand *op;
++ int optype = syntax->operand[i];
++ char *p;
++ char c;
++
++ assert(optype < AVR32_NR_OPERANDS);
++ op = &avr32_operand_table[optype];
++
++ for (p = str; *p; p++)
++ if (*p == ',')
++ break;
++
++ if (p == str)
++ return 0;
++
++ c = *p;
++ *p = 0;
++
++ if (!op->match(str))
++ {
++ *p = c;
++ return 0;
++ }
++
++ str = p;
++ *p = c;
++ if (c)
++ str++;
++ }
++
++ if (*str == '\0')
++ return 1;
++
++ if ((*str == 'e' || *str == 'E') && !str[1])
++ return 1;
++
++ return 0;
++}
++
++static int parse_operands(char *str)
++{
++ int i;
++
++ if (current_insn.syntax->nr_operands < 0)
++ {
++ int optype;
++ struct avr32_operand *op;
++
++ for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
++ {
++ char *p;
++ char c;
++
++ optype = current_insn.syntax->operand[i];
++ op = &avr32_operand_table[optype];
++
++ for (p = str; *p; p++)
++ if (*p == ',')
++ break;
++
++ assert(p != str);
++
++ c = *p, *p = 0;
++ op->parse(op, str, i);
++ *p = c;
++
++ str = p;
++ if (c) str++;
++ }
++
++ /* give the rest of the line to the last operand */
++ optype = current_insn.syntax->operand[i];
++ op = &avr32_operand_table[optype];
++ op->parse(op, str, i);
++ }
++ else
++ {
++ for (i = 0; i < current_insn.syntax->nr_operands; i++)
++ {
++ int optype = current_insn.syntax->operand[i];
++ struct avr32_operand *op = &avr32_operand_table[optype];
++ char *p;
++ char c;
++
++ skip_whitespace(str);
++
++ for (p = str; *p; p++)
++ if (*p == ',')
++ break;
++
++ assert(p != str);
++
++ c = *p, *p = 0;
++ op->parse(op, str, i);
++ *p = c;
++
++ str = p;
++ if (c) str++;
++ }
++
++ if (*str == 'E' || *str == 'e')
++ current_insn.force_extended = 1;
++ }
++
++ return 0;
++}
++
++static const char *
++finish_insn(const struct avr32_opcode *opc)
++{
++ expressionS *exp = &current_insn.immediate;
++ unsigned int i;
++ int will_relax = 0;
++ char *buf;
++
++ assert(current_insn.next_slot == opc->nr_fields);
++
++ pr_debug("%s:%d: finish_insn: trying opcode %d\n",
++ frag_now->fr_file, frag_now->fr_line, opc->id);
++
++ /* Go through the relaxation stage for all instructions that can
++ possibly take a symbolic immediate. The relax code will take
++ care of range checking and alignment. */
++ if (opc->var_field != -1)
++ {
++ int substate, largest_substate;
++ symbolS *sym;
++ offsetT off;
++
++ will_relax = 1;
++ substate = largest_substate = opc_initial_substate(opc);
++
++ while (relax_more(largest_substate) != AVR32_RS_NONE)
++ largest_substate = relax_more(largest_substate);
++
++ pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
++ substate, avr32_rs_size(substate),
++ largest_substate, avr32_rs_size(largest_substate));
++
++ /* make sure we have enough room for the largest possible opcode */
++ frag_grow(avr32_rs_size(largest_substate));
++ buf = frag_more(opc->size);
++
++ dwarf2_emit_insn(opc->size);
++
++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
++ frag_now->tc_frag_data.pcrel = current_insn.pcrel;
++ frag_now->tc_frag_data.force_extended = current_insn.force_extended;
++ frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
++
++ if (exp->X_op == O_hi)
++ {
++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
++ exp->X_op = exp->X_md;
++ }
++ else if (exp->X_op == O_lo)
++ {
++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
++ exp->X_op = exp->X_md;
++ }
++ else if (exp->X_op == O_got)
++ {
++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
++ exp->X_op = O_symbol;
++ }
++
++#if 0
++ if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
++ && exp->X_op == O_subtract)
++ {
++ symbolS *tmp;
++ tmp = exp->X_add_symbol;
++ exp->X_add_symbol = exp->X_op_symbol;
++ exp->X_op_symbol = tmp;
++ }
++#endif
++
++ frag_now->tc_frag_data.exp = current_insn.immediate;
++
++ sym = exp->X_add_symbol;
++ off = exp->X_add_number;
++ if (exp->X_op != O_symbol)
++ {
++ sym = make_expr_symbol(exp);
++ off = 0;
++ }
++
++ frag_var(rs_machine_dependent,
++ avr32_rs_size(largest_substate) - opc->size,
++ opc->size,
++ substate, sym, off, buf);
++ }
++ else
++ {
++ assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
++
++ /* Make sure we always have room for another whole word, as the ifield
++ inserters can only write words. */
++ frag_grow(4);
++ buf = frag_more(opc->size);
++ dwarf2_emit_insn(opc->size);
++ }
++
++ assert(!(opc->value & ~opc->mask));
++
++ pr_debug("inserting opcode: 0x%lx\n", opc->value);
++ bfd_putb32(opc->value, buf);
++
++ for (i = 0; i < opc->nr_fields; i++)
++ {
++ const struct avr32_ifield *f = opc->fields[i];
++ const struct avr32_ifield_data *fd = &current_insn.field_value[i];
++
++ pr_debug("inserting field: 0x%lx & 0x%lx\n",
++ fd->value >> fd->align_order, f->mask);
++
++ f->insert(f, buf, fd->value >> fd->align_order);
++ }
++
++ assert(will_relax || !current_insn.immediate.X_add_symbol);
++ return NULL;
++}
++
++static const char *
++finish_alias(const struct avr32_alias *alias)
++{
++ const struct avr32_opcode *opc;
++ struct {
++ unsigned long value;
++ unsigned long align;
++ } mapped_operand[AVR32_MAX_OPERANDS];
++ unsigned int i;
++
++ opc = alias->opc;
++
++ /* Remap the operands from the alias to the real opcode */
++ for (i = 0; i < opc->nr_fields; i++)
++ {
++ if (alias->operand_map[i].is_opindex)
++ {
++ struct avr32_ifield_data *fd;
++ fd = &current_insn.field_value[alias->operand_map[i].value];
++ mapped_operand[i].value = fd->value;
++ mapped_operand[i].align = fd->align_order;
++ }
++ else
++ {
++ mapped_operand[i].value = alias->operand_map[i].value;
++ mapped_operand[i].align = 0;
++ }
++ }
++
++ for (i = 0; i < opc->nr_fields; i++)
++ {
++ current_insn.field_value[i].value = mapped_operand[i].value;
++ if (opc->id == AVR32_OPC_COP)
++ current_insn.field_value[i].align_order = 0;
++ else
++ current_insn.field_value[i].align_order
++ = mapped_operand[i].align;
++ }
++
++ current_insn.next_slot = opc->nr_fields;
++
++ return finish_insn(opc);
++}
++
++static const char *
++finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
++{
++ expressionS *exp = &current_insn.immediate;
++ relax_substateT initial_subtype;
++ symbolS *sym;
++ offsetT off;
++ int initial_size, max_size;
++ char *buf;
++
++ initial_size = LDA_INITIAL_SIZE;
++
++ if (avr32_pic)
++ {
++ initial_subtype = LDA_SUBTYPE_SUB;
++ if (linkrelax)
++ max_size = 8;
++ else
++ max_size = 4;
++ }
++ else
++ {
++ initial_subtype = LDA_SUBTYPE_MOV1;
++ max_size = 4;
++ }
++
++ frag_grow(max_size);
++ buf = frag_more(initial_size);
++ dwarf2_emit_insn(initial_size);
++
++ if (exp->X_op == O_symbol)
++ {
++ sym = exp->X_add_symbol;
++ off = exp->X_add_number;
++ }
++ else
++ {
++ sym = make_expr_symbol(exp);
++ off = 0;
++ }
++
++ frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
++ frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
++
++ if (!avr32_pic)
++ {
++ /* The relaxer will bump the refcount if necessary */
++ frag_now->tc_frag_data.pool
++ = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
++ }
++
++ frag_var(rs_machine_dependent, max_size - initial_size,
++ initial_size, initial_subtype, sym, off, buf);
++
++ return NULL;
++}
++
++static const char *
++finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
++{
++ expressionS *exp = &current_insn.immediate;
++ symbolS *sym;
++ offsetT off;
++ int initial_size, max_size;
++ char *buf;
++
++ initial_size = CALL_INITIAL_SIZE;
++
++ if (avr32_pic)
++ {
++ if (linkrelax)
++ max_size = 10;
++ else
++ max_size = 4;
++ }
++ else
++ max_size = 4;
++
++ frag_grow(max_size);
++ buf = frag_more(initial_size);
++ dwarf2_emit_insn(initial_size);
++
++ frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
++
++ if (exp->X_op == O_symbol)
++ {
++ sym = exp->X_add_symbol;
++ off = exp->X_add_number;
++ }
++ else
++ {
++ sym = make_expr_symbol(exp);
++ off = 0;
++ }
++
++ if (!avr32_pic)
++ {
++ /* The relaxer will bump the refcount if necessary */
++ frag_now->tc_frag_data.pool
++ = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
++ }
++
++ frag_var(rs_machine_dependent, max_size - initial_size,
++ initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
++
++ return NULL;
++}
++
++void
++md_begin (void)
++{
++ unsigned long flags = 0;
++ int i;
++
++ avr32_mnemonic_htab = hash_new();
++
++ if (!avr32_mnemonic_htab)
++ as_fatal(_("virtual memory exhausted"));
++
++ for (i = 0; i < AVR32_NR_MNEMONICS; i++)
++ {
++ hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
++ (void *)&avr32_mnemonic_table[i]);
++ }
++
++ if (linkrelax)
++ flags |= EF_AVR32_LINKRELAX;
++ if (avr32_pic)
++ flags |= EF_AVR32_PIC;
++
++ bfd_set_private_flags(stdoutput, flags);
++
++#ifdef OPC_CONSISTENCY_CHECK
++ if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
++ < AVR32_NR_OPERANDS)
++ as_fatal(_("operand table is incomplete"));
++
++ for (i = 0; i < AVR32_NR_OPERANDS; i++)
++ if (avr32_operand_table[i].id != i)
++ as_fatal(_("operand table inconsistency found at index %d\n"), i);
++ pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
++
++ for (i = 0; i < AVR32_NR_IFIELDS; i++)
++ if (avr32_ifield_table[i].id != i)
++ as_fatal(_("ifield table inconsistency found at index %d\n"), i);
++ pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
++
++ for (i = 0; i < AVR32_NR_OPCODES; i++)
++ {
++ if (avr32_opc_table[i].id != i)
++ as_fatal(_("opcode table inconsistency found at index %d\n"), i);
++ if ((avr32_opc_table[i].var_field == -1
++ && avr32_relax_table[i].length != 0)
++ || (avr32_opc_table[i].var_field != -1
++ && avr32_relax_table[i].length == 0))
++ as_fatal(_("relax table inconsistency found at index %d\n"), i);
++ }
++ pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
++
++ for (i = 0; i < AVR32_NR_SYNTAX; i++)
++ if (avr32_syntax_table[i].id != i)
++ as_fatal(_("syntax table inconsistency found at index %d\n"), i);
++ pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
++
++ for (i = 0; i < AVR32_NR_ALIAS; i++)
++ if (avr32_alias_table[i].id != i)
++ as_fatal(_("alias table inconsistency found at index %d\n"), i);
++ pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
++
++ for (i = 0; i < AVR32_NR_MNEMONICS; i++)
++ if (avr32_mnemonic_table[i].id != i)
++ as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
++ pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
++#endif
++}
++
++void
++md_assemble (char *str)
++{
++ struct avr32_mnemonic *mnemonic;
++ char *p, c;
++
++ memset(&current_insn, 0, sizeof(current_insn));
++ current_insn.immediate.X_op = O_constant;
++
++ skip_whitespace(str);
++ for (p = str; *p; p++)
++ if (*p == ' ')
++ break;
++ c = *p;
++ *p = 0;
++
++ mnemonic = hash_find(avr32_mnemonic_htab, str);
++ *p = c;
++ if (c) p++;
++
++ if (mnemonic)
++ {
++ const struct avr32_syntax *syntax;
++
++ for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
++ {
++ const char *errmsg = NULL;
++
++ if (syntax_matches(syntax, p))
++ {
++ if (!(syntax->isa_flags & avr32_arch->isa_flags))
++ {
++ as_bad(_("Selected architecture `%s' does not support `%s'"),
++ avr32_arch->name, str);
++ return;
++ }
++
++ current_insn.syntax = syntax;
++ parse_operands(p);
++
++ switch (syntax->type)
++ {
++ case AVR32_PARSER_NORMAL:
++ errmsg = finish_insn(syntax->u.opc);
++ break;
++ case AVR32_PARSER_ALIAS:
++ errmsg = finish_alias(syntax->u.alias);
++ break;
++ case AVR32_PARSER_LDA:
++ errmsg = finish_lda(syntax);
++ break;
++ case AVR32_PARSER_CALL:
++ errmsg = finish_call(syntax);
++ break;
++ default:
++ BAD_CASE(syntax->type);
++ break;
++ }
++
++ if (errmsg)
++ as_bad("%s in `%s'", errmsg, str);
++
++ return;
++ }
++ }
++
++ as_bad(_("unrecognized form of instruction: `%s'"), str);
++ }
++ else
++ as_bad(_("unrecognized instruction `%s'"), str);
++}
++
++void avr32_cleanup(void)
++{
++ struct cpool *pool;
++
++ /* Emit any constant pools that haven't been explicitly flushed with
++ a .cpool directive. */
++ for (pool = cpool_list; pool; pool = pool->next)
++ {
++ subseg_set(pool->section, pool->sub_section);
++ s_cpool(0);
++ }
++}
++
++/* Handle any PIC-related operands in data allocation pseudo-ops */
++void
++avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
++{
++ bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
++ int pcrel = 0;
++
++ pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
++ frag->fr_file, frag->fr_line,
++ exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
++ exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
++ exp->X_op, exp->X_add_number);
++
++ if (exp->X_op == O_subtract && exp->X_op_symbol)
++ {
++ if (exp->X_op_symbol == GOT_symbol)
++ {
++ if (size != 4)
++ goto bad_size;
++ r_type = BFD_RELOC_AVR32_GOTPC;
++ exp->X_op = O_symbol;
++ exp->X_op_symbol = NULL;
++ }
++ }
++ else if (exp->X_op == O_got)
++ {
++ switch (size)
++ {
++ case 1:
++ r_type = BFD_RELOC_AVR32_GOT8;
++ break;
++ case 2:
++ r_type = BFD_RELOC_AVR32_GOT16;
++ break;
++ case 4:
++ r_type = BFD_RELOC_AVR32_GOT32;
++ break;
++ default:
++ goto bad_size;
++ }
++
++ exp->X_op = O_symbol;
++ }
++
++ if (r_type == BFD_RELOC_UNUSED)
++ switch (size)
++ {
++ case 1:
++ r_type = BFD_RELOC_8;
++ break;
++ case 2:
++ r_type = BFD_RELOC_16;
++ break;
++ case 4:
++ r_type = BFD_RELOC_32;
++ break;
++ default:
++ goto bad_size;
++ }
++ else if (size != 4)
++ {
++ bad_size:
++ as_bad(_("unsupported BFD relocation size %u"), size);
++ r_type = BFD_RELOC_UNUSED;
++ }
++
++ fix_new_exp (frag, off, size, exp, pcrel, r_type);
++}
++
++static void
++avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
++ void *ignore ATTRIBUTE_UNUSED)
++{
++ segment_info_type *seginfo;
++ fixS *fix;
++
++ seginfo = seg_info(sec);
++ if (!seginfo)
++ return;
++
++ for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
++ {
++ if (fix->fx_done)
++ continue;
++
++ if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
++ && fix->fx_addsy && fix->fx_subsy)
++ {
++ if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
++ || linkrelax)
++ {
++ symbolS *tmp;
++#ifdef DEBUG
++ fprintf(stderr, "Swapping symbols in fixup:\n");
++ print_fixup(fix);
++#endif
++ tmp = fix->fx_addsy;
++ fix->fx_addsy = fix->fx_subsy;
++ fix->fx_subsy = tmp;
++ fix->fx_offset = -fix->fx_offset;
++ }
++ }
++ }
++}
++
++/* We need to look for SUB5 instructions with expressions that will be
++ made PC-relative and switch fx_addsy with fx_subsy. This has to be
++ done before adjustment or the wrong symbol might be adjusted.
++
++ This applies to fixups that are a result of expressions like -(sym
++ - .) and that will make it all the way to md_apply_fix3(). LDA
++ does the right thing in convert_frag, so we must not convert
++ those. */
++void
++avr32_frob_file(void)
++{
++ /* if (1 || !linkrelax)
++ return; */
++
++ bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
++}
++
++static bfd_boolean
++convert_to_diff_reloc(fixS *fixP)
++{
++ switch (fixP->fx_r_type)
++ {
++ case BFD_RELOC_32:
++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
++ break;
++ case BFD_RELOC_16:
++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
++ break;
++ case BFD_RELOC_8:
++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
++ break;
++ default:
++ return FALSE;
++ }
++
++ return TRUE;
++}
++
++/* Simplify a fixup. If possible, the fixup is reduced to a single
++ constant which is written to the output file. Otherwise, a
++ relocation is generated so that the linker can take care of the
++ rest.
++
++ ELF relocations have certain constraints: They can only take a
++ single symbol and a single addend. This means that for difference
++ expressions, we _must_ get rid of the fx_subsy symbol somehow.
++
++ The difference between two labels in the same section can be
++ calculated directly unless 'linkrelax' is set, or a relocation is
++ forced. If so, we must emit a R_AVR32_DIFFxx relocation. If there
++ are addends involved at this point, we must be especially careful
++ as the relocation must point exactly to the symbol being
++ subtracted.
++
++ When subtracting a symbol defined in the same section as the fixup,
++ we might be able to convert it to a PC-relative expression, unless
++ linkrelax is set. If this is the case, there's no way we can make
++ sure that the difference between the fixup and fx_subsy stays
++ constant. So for now, we're just going to disallow that.
++ */
++void
++avr32_process_fixup(fixS *fixP, segT this_segment)
++{
++ segT add_symbol_segment = absolute_section;
++ segT sub_symbol_segment = absolute_section;
++ symbolS *fx_addsy, *fx_subsy;
++ offsetT value = 0, fx_offset;
++ bfd_boolean apply = FALSE;
++
++ assert(this_segment != absolute_section);
++
++ if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
++ {
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("Bad relocation type %d\n"), fixP->fx_r_type);
++ return;
++ }
++
++ /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
++ fx_addsy = fixP->fx_addsy;
++ fx_subsy = fixP->fx_subsy;
++ fx_offset = fixP->fx_offset;
++
++ if (fx_addsy)
++ add_symbol_segment = S_GET_SEGMENT(fx_addsy);
++
++ if (fx_subsy)
++ {
++ resolve_symbol_value(fx_subsy);
++ sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
++
++ if (sub_symbol_segment == this_segment
++ && (!linkrelax
++ || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
++ + fixP->fx_where)))
++ {
++ fixP->fx_pcrel = TRUE;
++ fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
++ - S_GET_VALUE(fx_subsy));
++ fx_subsy = NULL;
++ }
++ else if (sub_symbol_segment == absolute_section)
++ {
++ /* The symbol is really a constant. */
++ fx_offset -= S_GET_VALUE(fx_subsy);
++ fx_subsy = NULL;
++ }
++ else if (SEG_NORMAL(add_symbol_segment)
++ && sub_symbol_segment == add_symbol_segment
++ && (!linkrelax || convert_to_diff_reloc(fixP)))
++ {
++ /* Difference between two labels in the same section. */
++ if (linkrelax)
++ {
++ /* convert_to_diff() has ensured that the reloc type is
++ either DIFF32, DIFF16 or DIFF8. */
++ value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
++ - S_GET_VALUE(fx_subsy));
++
++ /* Try to convert it to a section symbol if possible */
++ if (!S_FORCE_RELOC(fx_addsy, 1)
++ && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
++ {
++ fx_offset = S_GET_VALUE(fx_subsy);
++ fx_addsy = section_symbol(sub_symbol_segment);
++ }
++ else
++ {
++ fx_addsy = fx_subsy;
++ fx_offset = 0;
++ }
++
++ fx_subsy = NULL;
++ apply = TRUE;
++ }
++ else
++ {
++ fx_offset += S_GET_VALUE(fx_addsy);
++ fx_offset -= S_GET_VALUE(fx_subsy);
++ fx_addsy = NULL;
++ fx_subsy = NULL;
++ }
++ }
++ else
++ {
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("can't resolve `%s' {%s section} - `%s' {%s section}"),
++ fx_addsy ? S_GET_NAME (fx_addsy) : "0",
++ segment_name (add_symbol_segment),
++ S_GET_NAME (fx_subsy),
++ segment_name (sub_symbol_segment));
++ return;
++ }
++ }
++
++ if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
++ {
++ if (add_symbol_segment == this_segment
++ && fixP->fx_pcrel)
++ {
++ value += S_GET_VALUE(fx_addsy);
++ value -= md_pcrel_from_section(fixP, this_segment);
++ fx_addsy = NULL;
++ fixP->fx_pcrel = FALSE;
++ }
++ else if (add_symbol_segment == absolute_section)
++ {
++ fx_offset += S_GET_VALUE(fixP->fx_addsy);
++ fx_addsy = NULL;
++ }
++ }
++
++ if (!fx_addsy)
++ fixP->fx_done = TRUE;
++
++ if (fixP->fx_pcrel)
++ {
++ if (fx_addsy != NULL
++ && S_IS_DEFINED(fx_addsy)
++ && S_GET_SEGMENT(fx_addsy) != this_segment)
++ value += md_pcrel_from_section(fixP, this_segment);
++
++ switch (fixP->fx_r_type)
++ {
++ case BFD_RELOC_32:
++ fixP->fx_r_type = BFD_RELOC_32_PCREL;
++ break;
++ case BFD_RELOC_16:
++ fixP->fx_r_type = BFD_RELOC_16_PCREL;
++ break;
++ case BFD_RELOC_8:
++ fixP->fx_r_type = BFD_RELOC_8_PCREL;
++ break;
++ case BFD_RELOC_AVR32_SUB5:
++ fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
++ break;
++ case BFD_RELOC_AVR32_16S:
++ fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
++ break;
++ case BFD_RELOC_AVR32_14UW:
++ fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
++ break;
++ case BFD_RELOC_AVR32_10UW:
++ fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
++ break;
++ default:
++ /* Should have been taken care of already */
++ break;
++ }
++ }
++
++ if (fixP->fx_done || apply)
++ {
++ const struct avr32_ifield *ifield;
++ char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
++
++ if (fixP->fx_done)
++ value += fx_offset;
++
++ switch (fixP->fx_r_type)
++ {
++ case BFD_RELOC_32:
++ case BFD_RELOC_16:
++ case BFD_RELOC_8:
++ case BFD_RELOC_AVR32_DIFF32:
++ case BFD_RELOC_AVR32_DIFF16:
++ case BFD_RELOC_AVR32_DIFF8:
++ md_number_to_chars(buf, value, fixP->fx_size);
++ break;
++ case BFD_RELOC_HI16:
++ value >>= 16;
++ case BFD_RELOC_LO16:
++ value &= 0xffff;
++ md_number_to_chars(buf + 2, value, 2);
++ break;
++ case BFD_RELOC_AVR32_16N_PCREL:
++ value = -value;
++ /* fall through */
++ case BFD_RELOC_AVR32_22H_PCREL:
++ case BFD_RELOC_AVR32_18W_PCREL:
++ case BFD_RELOC_AVR32_16B_PCREL:
++ case BFD_RELOC_AVR32_11H_PCREL:
++ case BFD_RELOC_AVR32_9H_PCREL:
++ case BFD_RELOC_AVR32_9UW_PCREL:
++ case BFD_RELOC_AVR32_3U:
++ case BFD_RELOC_AVR32_4UH:
++ case BFD_RELOC_AVR32_6UW:
++ case BFD_RELOC_AVR32_6S:
++ case BFD_RELOC_AVR32_7UW:
++ case BFD_RELOC_AVR32_8S_EXT:
++ case BFD_RELOC_AVR32_8S:
++ case BFD_RELOC_AVR32_10UW:
++ case BFD_RELOC_AVR32_10SW:
++ case BFD_RELOC_AVR32_STHH_W:
++ case BFD_RELOC_AVR32_14UW:
++ case BFD_RELOC_AVR32_16S:
++ case BFD_RELOC_AVR32_16U:
++ case BFD_RELOC_AVR32_21S:
++ case BFD_RELOC_AVR32_SUB5:
++ case BFD_RELOC_AVR32_CPCALL:
++ case BFD_RELOC_AVR32_16_CP:
++ case BFD_RELOC_AVR32_9W_CP:
++ ifield = fixP->tc_fix_data.ifield;
++ pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
++ fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
++ fixP->tc_fix_data.align);
++ if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("operand out of range (%ld not between %ld and %ld)"),
++ value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
++ if (value & ((1 << fixP->tc_fix_data.align) - 1))
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("misaligned operand (required alignment: %d)"),
++ 1 << fixP->tc_fix_data.align);
++ ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
++ break;
++ case BFD_RELOC_AVR32_ALIGN:
++ /* Nothing to do */
++ fixP->fx_done = FALSE;
++ break;
++ default:
++ as_fatal("reloc type %s not handled\n",
++ bfd_get_reloc_code_name(fixP->fx_r_type));
++ }
++ }
++
++ fixP->fx_addsy = fx_addsy;
++ fixP->fx_subsy = fx_subsy;
++ fixP->fx_offset = fx_offset;
++
++ if (!fixP->fx_done)
++ {
++ if (!fixP->fx_addsy)
++ fixP->fx_addsy = abs_section_sym;
++
++ symbol_mark_used_in_reloc(fixP->fx_addsy);
++ if (fixP->fx_subsy)
++ abort();
++ }
++}
++
++#if 0
++void
++md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
++{
++ const struct avr32_ifield *ifield;
++ offsetT value = *valP;
++ char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
++ bfd_boolean apply;
++
++ pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
++ fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
++ fixP->fx_offset);
++
++ if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
++ {
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("Bad relocation type %d\n"), fixP->fx_r_type);
++ return;
++ }
++
++ if (!fixP->fx_addsy && !fixP->fx_subsy)
++ fixP->fx_done = 1;
++
++ if (fixP->fx_pcrel)
++ {
++ if (fixP->fx_addsy != NULL
++ && S_IS_DEFINED(fixP->fx_addsy)
++ && S_GET_SEGMENT(fixP->fx_addsy) != seg)
++ value += md_pcrel_from_section(fixP, seg);
++
++ switch (fixP->fx_r_type)
++ {
++ case BFD_RELOC_32:
++ fixP->fx_r_type = BFD_RELOC_32_PCREL;
++ break;
++ case BFD_RELOC_16:
++ case BFD_RELOC_8:
++ as_bad_where (fixP->fx_file, fixP->fx_line,
++ _("8- and 16-bit PC-relative relocations not supported"));
++ break;
++ case BFD_RELOC_AVR32_SUB5:
++ fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
++ break;
++ case BFD_RELOC_AVR32_16S:
++ fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
++ break;
++ default:
++ /* Should have been taken care of already */
++ break;
++ }
++ }
++
++ if (fixP->fx_r_type == BFD_RELOC_32
++ && fixP->fx_subsy)
++ {
++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
++
++ /* Offsets are only allowed if it's a result of adjusting a
++ local symbol into a section-relative offset.
++ tc_fix_adjustable() should prevent any adjustment if there
++ was an offset involved before. */
++ if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("cannot represent symbol difference with an offset"));
++
++ value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
++ - S_GET_VALUE(fixP->fx_subsy));
++
++ /* The difference before any relaxing takes place is written
++ out, and the DIFF32 reloc identifies the address of the first
++ symbol (i.e. the on that's subtracted.) */
++ *valP = value;
++ fixP->fx_offset -= value;
++ fixP->fx_subsy = NULL;
++
++ md_number_to_chars(buf, value, fixP->fx_size);
++ }
++
++ if (fixP->fx_done)
++ {
++ switch (fixP->fx_r_type)
++ {
++ case BFD_RELOC_8:
++ case BFD_RELOC_16:
++ case BFD_RELOC_32:
++ md_number_to_chars(buf, value, fixP->fx_size);
++ break;
++ case BFD_RELOC_HI16:
++ value >>= 16;
++ case BFD_RELOC_LO16:
++ value &= 0xffff;
++ *valP = value;
++ md_number_to_chars(buf + 2, value, 2);
++ break;
++ case BFD_RELOC_AVR32_PCREL_SUB5:
++ value = -value;
++ /* fall through */
++ case BFD_RELOC_AVR32_9_PCREL:
++ case BFD_RELOC_AVR32_11_PCREL:
++ case BFD_RELOC_AVR32_16_PCREL:
++ case BFD_RELOC_AVR32_18_PCREL:
++ case BFD_RELOC_AVR32_22_PCREL:
++ case BFD_RELOC_AVR32_3U:
++ case BFD_RELOC_AVR32_4UH:
++ case BFD_RELOC_AVR32_6UW:
++ case BFD_RELOC_AVR32_6S:
++ case BFD_RELOC_AVR32_7UW:
++ case BFD_RELOC_AVR32_8S:
++ case BFD_RELOC_AVR32_10UW:
++ case BFD_RELOC_AVR32_10SW:
++ case BFD_RELOC_AVR32_14UW:
++ case BFD_RELOC_AVR32_16S:
++ case BFD_RELOC_AVR32_16U:
++ case BFD_RELOC_AVR32_21S:
++ case BFD_RELOC_AVR32_BRC1:
++ case BFD_RELOC_AVR32_SUB5:
++ case BFD_RELOC_AVR32_CPCALL:
++ case BFD_RELOC_AVR32_16_CP:
++ case BFD_RELOC_AVR32_9_CP:
++ ifield = fixP->tc_fix_data.ifield;
++ pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
++ fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
++ fixP->tc_fix_data.align);
++ if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("operand out of range (%ld not between %ld and %ld)"),
++ value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
++ if (value & ((1 << fixP->tc_fix_data.align) - 1))
++ as_bad_where(fixP->fx_file, fixP->fx_line,
++ _("misaligned operand (required alignment: %d)"),
++ 1 << fixP->tc_fix_data.align);
++ ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
++ break;
++ case BFD_RELOC_AVR32_ALIGN:
++ /* Nothing to do */
++ fixP->fx_done = FALSE;
++ break;
++ default:
++ as_fatal("reloc type %s not handled\n",
++ bfd_get_reloc_code_name(fixP->fx_r_type));
++ }
++ }
++}
++#endif
++
++arelent *
++tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
++ fixS *fixp)
++{
++ arelent *reloc;
++ bfd_reloc_code_real_type code;
++
++ reloc = xmalloc (sizeof (arelent));
++
++ reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
++ *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
++ reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
++ reloc->addend = fixp->fx_offset;
++ code = fixp->fx_r_type;
++
++ reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
++
++ if (reloc->howto == NULL)
++ {
++ as_bad_where (fixp->fx_file, fixp->fx_line,
++ _("cannot represent relocation %s in this object file format"),
++ bfd_get_reloc_code_name (code));
++ return NULL;
++ }
++
++ return reloc;
++}
++
++bfd_boolean
++avr32_force_reloc(fixS *fixP)
++{
++ if (linkrelax && fixP->fx_addsy
++ && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
++ && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
++ {
++ pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
++ fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
++ return 1;
++ }
++
++ return generic_force_reloc(fixP);
++}
++
++bfd_boolean
++avr32_fix_adjustable(fixS *fixP)
++{
++ switch (fixP->fx_r_type)
++ {
++ /* GOT relocations can't have addends since BFD treats all
++ references to a given symbol the same. This means that we
++ must avoid section-relative references to local symbols when
++ dealing with these kinds of relocs */
++ case BFD_RELOC_AVR32_GOT32:
++ case BFD_RELOC_AVR32_GOT16:
++ case BFD_RELOC_AVR32_GOT8:
++ case BFD_RELOC_AVR32_GOT21S:
++ case BFD_RELOC_AVR32_GOT18SW:
++ case BFD_RELOC_AVR32_GOT16S:
++ case BFD_RELOC_AVR32_LDA_GOT:
++ case BFD_RELOC_AVR32_GOTCALL:
++ pr_debug("fix not adjustable\n");
++ return 0;
++
++ default:
++ break;
++ }
++
++ return 1;
++}
++
++/* When we want the linker to be able to relax the code, we need to
++ output a reloc for every .align directive requesting an alignment
++ to a four byte boundary or larger. If we don't do this, the linker
++ can't guarantee that the alignment is actually maintained in the
++ linker output.
++
++ TODO: Might as well insert proper NOPs while we're at it... */
++void
++avr32_handle_align(fragS *frag)
++{
++ if (linkrelax
++ && frag->fr_type == rs_align_code
++ && frag->fr_address + frag->fr_fix > 0
++ && frag->fr_offset > 0)
++ {
++ /* The alignment order (fr_offset) is stored in the addend. */
++ fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
++ FALSE, BFD_RELOC_AVR32_ALIGN);
++ }
++}
++
++/* Relax_align. Advance location counter to next address that has 'alignment'
++ lowest order bits all 0s, return size of adjustment made. */
++relax_addressT
++avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
++ fragS *fragP,
++ relax_addressT address)
++{
++ relax_addressT mask;
++ relax_addressT new_address;
++ int alignment;
++
++ alignment = fragP->fr_offset;
++ mask = ~((~0) << alignment);
++ new_address = (address + mask) & (~mask);
++
++ return new_address - address;
++}
++
++/* Turn a string in input_line_pointer into a floating point constant
++ of type type, and store the appropriate bytes in *litP. The number
++ of LITTLENUMS emitted is stored in *sizeP . An error message is
++ returned, or NULL on OK. */
++
++/* Equal to MAX_PRECISION in atof-ieee.c */
++#define MAX_LITTLENUMS 6
++
++char *
++md_atof (type, litP, sizeP)
++char type;
++char * litP;
++int * sizeP;
++{
++ int i;
++ int prec;
++ LITTLENUM_TYPE words [MAX_LITTLENUMS];
++ char * t;
++
++ switch (type)
++ {
++ case 'f':
++ case 'F':
++ case 's':
++ case 'S':
++ prec = 2;
++ break;
++
++ case 'd':
++ case 'D':
++ case 'r':
++ case 'R':
++ prec = 4;
++ break;
++
++ /* FIXME: Some targets allow other format chars for bigger sizes here. */
++
++ default:
++ * sizeP = 0;
++ return _("Bad call to md_atof()");
++ }
++
++ t = atof_ieee (input_line_pointer, type, words);
++ if (t)
++ input_line_pointer = t;
++ * sizeP = prec * sizeof (LITTLENUM_TYPE);
++
++ for (i = 0; i < prec; i++)
++ {
++ md_number_to_chars (litP, (valueT) words[i],
++ sizeof (LITTLENUM_TYPE));
++ litP += sizeof (LITTLENUM_TYPE);
++ }
++
++ return 0;
++}
++
++static char *avr32_end_of_match(char *cont, char *what)
++{
++ int len = strlen (what);
++
++ if (! is_part_of_name (cont[len])
++ && strncasecmp (cont, what, len) == 0)
++ return cont + len;
++
++ return NULL;
++}
++
++int
++avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
++{
++ char *next = input_line_pointer;
++ char *next_end;
++
++ pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
++
++ if (*nextchar == '(')
++ {
++ if (strcasecmp(name, "hi") == 0)
++ {
++ *next = *nextchar;
++
++ expression(exp);
++
++ if (exp->X_op == O_constant)
++ {
++ pr_debug(" -> constant hi(0x%08lx) -> 0x%04lx\n",
++ exp->X_add_number, exp->X_add_number >> 16);
++ exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
++ }
++ else
++ {
++ exp->X_md = exp->X_op;
++ exp->X_op = O_hi;
++ }
++
++ return 1;
++ }
++ else if (strcasecmp(name, "lo") == 0)
++ {
++ *next = *nextchar;
++
++ expression(exp);
++
++ if (exp->X_op == O_constant)
++ exp->X_add_number &= 0xffff;
++ else
++ {
++ exp->X_md = exp->X_op;
++ exp->X_op = O_lo;
++ }
++
++ return 1;
++ }
++ }
++ else if (*nextchar == '@')
++ {
++ exp->X_md = exp->X_op;
++
++ if ((next_end = avr32_end_of_match (next + 1, "got")))
++ exp->X_op = O_got;
++ else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
++ exp->X_op = O_tlsgd;
++ /* Add more as needed */
++ else
++ {
++ char c;
++ input_line_pointer++;
++ c = get_symbol_end();
++ as_bad (_("unknown relocation override `%s'"), next + 1);
++ *input_line_pointer = c;
++ input_line_pointer = next;
++ return 0;
++ }
++
++ exp->X_op_symbol = NULL;
++ exp->X_add_symbol = symbol_find_or_make (name);
++ exp->X_add_number = 0;
++
++ *input_line_pointer = *nextchar;
++ input_line_pointer = next_end;
++ *nextchar = *input_line_pointer;
++ *input_line_pointer = '\0';
++ return 1;
++ }
++ else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
++ {
++ if (!GOT_symbol)
++ GOT_symbol = symbol_find_or_make(name);
++
++ exp->X_add_symbol = GOT_symbol;
++ exp->X_op = O_symbol;
++ exp->X_add_number = 0;
++ return 1;
++ }
++
++ return 0;
++}
++
++static void
++s_rseg (int value ATTRIBUTE_UNUSED)
++{
++ /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
++ * Defaults:
++ * - type: undocumented ("typically CODE or DATA")
++ * - ROOT
++ * - align: 1 for code, 0 for others
++ *
++ * TODO: NOROOT is ignored. If gas supports discardable segments, it should
++ * be implemented.
++ */
++ char *name, *end;
++ int length, type, attr;
++ int align = 0;
++
++ SKIP_WHITESPACE();
++
++ end = input_line_pointer;
++ while (0 == strchr ("\n\t;:( ", *end))
++ end++;
++ if (end == input_line_pointer)
++ {
++ as_warn (_("missing name"));
++ ignore_rest_of_line();
++ return;
++ }
++
++ name = xmalloc (end - input_line_pointer + 1);
++ memcpy (name, input_line_pointer, end - input_line_pointer);
++ name[end - input_line_pointer] = '\0';
++ input_line_pointer = end;
++
++ SKIP_WHITESPACE();
++
++ type = SHT_NULL;
++ attr = 0;
++
++ if (*input_line_pointer == ':')
++ {
++ /* Skip the colon */
++ ++input_line_pointer;
++ SKIP_WHITESPACE();
++
++ /* Possible options at this point:
++ * - flag (ROOT or NOROOT)
++ * - a segment type
++ */
++ end = input_line_pointer;
++ while (0 == strchr ("\n\t;:( ", *end))
++ end++;
++ length = end - input_line_pointer;
++ if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
++ ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
++ {
++ /* Ignore ROOT/NOROOT */
++ input_line_pointer = end;
++ }
++ else
++ {
++ /* Must be a segment type */
++ switch (*input_line_pointer)
++ {
++ case 'C':
++ case 'c':
++ if ((length == 4) &&
++ (0 == strncasecmp (input_line_pointer, "CODE", 4)))
++ {
++ attr |= SHF_ALLOC | SHF_EXECINSTR;
++ type = SHT_PROGBITS;
++ align = 1;
++ break;
++ }
++ if ((length == 5) &&
++ (0 == strncasecmp (input_line_pointer, "CONST", 5)))
++ {
++ attr |= SHF_ALLOC;
++ type = SHT_PROGBITS;
++ break;
++ }
++ goto de_fault;
++
++ case 'D':
++ case 'd':
++ if ((length == 4) &&
++ (0 == strncasecmp (input_line_pointer, "DATA", 4)))
++ {
++ attr |= SHF_ALLOC | SHF_WRITE;
++ type = SHT_PROGBITS;
++ break;
++ }
++ goto de_fault;
++
++ /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
++
++ case 'U':
++ case 'u':
++ if ((length == 7) &&
++ (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
++ break;
++ goto de_fault;
++
++ /* TODO: Add XDATA and ZPAGE if necessary */
++
++ de_fault:
++ default:
++ as_warn (_("unrecognized segment type"));
++ }
++
++ input_line_pointer = end;
++ SKIP_WHITESPACE();
++
++ if (*input_line_pointer == ':')
++ {
++ /* ROOT/NOROOT */
++ ++input_line_pointer;
++ SKIP_WHITESPACE();
++
++ end = input_line_pointer;
++ while (0 == strchr ("\n\t;:( ", *end))
++ end++;
++ length = end - input_line_pointer;
++ if (! ((length == 4) &&
++ (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
++ ! ((length == 6) &&
++ (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
++ {
++ as_warn (_("unrecognized segment flag"));
++ }
++
++ input_line_pointer = end;
++ SKIP_WHITESPACE();
++ }
++ }
++ }
++
++ if (*input_line_pointer == '(')
++ {
++ align = get_absolute_expression ();
++ }
++
++ demand_empty_rest_of_line();
++
++ obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
++#ifdef AVR32_DEBUG
++ fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
++ name, type, attr );
++ fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
++#endif
++
++ if (align > 15)
++ {
++ align = 15;
++ as_warn (_("alignment too large: %u assumed"), align);
++ }
++
++ /* Hope not, that is */
++ assert (now_seg != absolute_section);
++
++ /* Only make a frag if we HAVE to... */
++ if (align != 0 && !need_pass_2)
++ {
++ if (subseg_text_p (now_seg))
++ frag_align_code (align, 0);
++ else
++ frag_align (align, 0, 0);
++ }
++
++ record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
++}
++
++/* vim: syntax=c sw=2
++ */
+diff -Nrup binutils-2.17/gas/config/tc-avr32.h binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.h
+--- binutils-2.17/gas/config/tc-avr32.h 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.h 2007-03-26 10:20:14.000000000 +0200
+@@ -0,0 +1,313 @@
++/* Assembler definitions for AVR32.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of GAS, the GNU Assembler.
++
++ GAS 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, or (at your option)
++ any later version.
++
++ GAS 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 GAS; see the file COPYING. If not, write to the Free
++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++ 02111-1307, USA. */
++
++#if 0
++#define DEBUG
++#define DEBUG1
++#define DEBUG2
++#define DEBUG3
++#define DEBUG4
++#define DEBUG5
++#endif
++
++/* Are we trying to be compatible with the IAR assembler? (--iar) */
++extern int avr32_iarcompat;
++
++/* By convention, you should define this macro in the `.h' file. For
++ example, `tc-m68k.h' defines `TC_M68K'. You might have to use this
++ if it is necessary to add CPU specific code to the object format
++ file. */
++#define TC_AVR32
++
++/* This macro is the BFD target name to use when creating the output
++ file. This will normally depend upon the `OBJ_FMT' macro. */
++#define TARGET_FORMAT "elf32-avr32"
++
++/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */
++#define TARGET_ARCH bfd_arch_avr32
++
++/* This macro is the BFD machine number to pass to
++ `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */
++#define TARGET_MACH 0
++
++/* UNDOCUMENTED: Allow //-style comments */
++#define DOUBLESLASH_LINE_COMMENTS
++
++/* You should define this macro to be non-zero if the target is big
++ endian, and zero if the target is little endian. */
++#define TARGET_BYTES_BIG_ENDIAN 1
++
++/* FIXME: It seems that GAS only expects a one-byte opcode...
++ #define NOP_OPCODE 0xd703 */
++
++/* If you define this macro, GAS will warn about the use of
++ nonstandard escape sequences in a string. */
++#undef ONLY_STANDARD_ESCAPES
++
++#define DWARF2_FORMAT() dwarf2_format_32bit
++
++/* Instructions are either 2 or 4 bytes long */
++/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
++
++/* GAS will call this function for any expression that can not be
++ recognized. When the function is called, `input_line_pointer'
++ will point to the start of the expression. */
++#define md_operand(x)
++
++#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
++extern int avr32_parse_name(const char *, struct expressionS *, char *);
++
++/* You may define this macro to generate a fixup for a data
++ allocation pseudo-op. */
++#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
++ avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
++void avr32_cons_fix_new (fragS *, int, int, expressionS *);
++
++/* `extsym - .' expressions can be emitted using PC-relative relocs */
++#define DIFF_EXPR_OK
++
++/* This is used to construct expressions out of @gotoff, etc. The
++ relocation type is stored in X_md */
++#define O_got O_md1
++#define O_hi O_md2
++#define O_lo O_md3
++#define O_tlsgd O_md4
++
++/* You may define this macro to parse an expression used in a data
++ allocation pseudo-op such as `.word'. You can use this to
++ recognize relocation directives that may appear in such directives. */
++/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
++ void avr_parse_cons_expression (expressionS *exp, int nbytes); */
++
++/* This should just call either `number_to_chars_bigendian' or
++ `number_to_chars_littleendian', whichever is appropriate. On
++ targets like the MIPS which support options to change the
++ endianness, which function to call is a runtime decision. On
++ other targets, `md_number_to_chars' can be a simple macro. */
++#define md_number_to_chars number_to_chars_bigendian
++
++/* `md_short_jump_size'
++ `md_long_jump_size'
++ `md_create_short_jump'
++ `md_create_long_jump'
++ If `WORKING_DOT_WORD' is defined, GAS will not do broken word
++ processing (*note Broken words::.). Otherwise, you should set
++ `md_short_jump_size' to the size of a short jump (a jump that is
++ just long enough to jump around a long jmp) and
++ `md_long_jump_size' to the size of a long jump (a jump that can go
++ anywhere in the function), You should define
++ `md_create_short_jump' to create a short jump around a long jump,
++ and define `md_create_long_jump' to create a long jump. */
++#define WORKING_DOT_WORD
++
++/* If you define this macro, it means that `tc_gen_reloc' may return
++ multiple relocation entries for a single fixup. In this case, the
++ return value of `tc_gen_reloc' is a pointer to a null terminated
++ array. */
++#undef RELOC_EXPANSION_POSSIBLE
++
++/* If you define this macro, GAS will not require pseudo-ops to start with a .
++ character. */
++#define NO_PSEUDO_DOT (avr32_iarcompat)
++
++/* The IAR assembler uses $ as the location counter. Unfortunately, we
++ can't make this dependent on avr32_iarcompat... */
++#define DOLLAR_DOT
++
++/* Values passed to md_apply_fix3 don't include the symbol value. */
++#define MD_APPLY_SYM_VALUE(FIX) 0
++
++/* The number of bytes to put into a word in a listing. This affects
++ the way the bytes are clumped together in the listing. For
++ example, a value of 2 might print `1234 5678' where a value of 1
++ would print `12 34 56 78'. The default value is 4. */
++#define LISTING_WORD_SIZE 4
++
++/* extern const struct relax_type md_relax_table[];
++#define TC_GENERIC_RELAX_TABLE md_relax_table */
++
++/*
++ An `.lcomm' directive with no explicit alignment parameter will use
++ this macro to set P2VAR to the alignment that a request for SIZE
++ bytes will have. The alignment is expressed as a power of two. If
++ no alignment should take place, the macro definition should do
++ nothing. Some targets define a `.bss' directive that is also
++ affected by this macro. The default definition will set P2VAR to
++ the truncated power of two of sizes up to eight bytes.
++
++ We want doublewords to be word-aligned, so we're going to modify the
++ default definition a tiny bit.
++*/
++#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
++ do \
++ { \
++ if ((SIZE) >= 4) \
++ (P2VAR) = 2; \
++ else if ((SIZE) >= 2) \
++ (P2VAR) = 1; \
++ else \
++ (P2VAR) = 0; \
++ } \
++ while (0)
++
++/* When relaxing, we need to generate relocations for alignment
++ directives. */
++#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
++extern void avr32_handle_align(fragS *);
++
++/* See internals doc for explanation. Oh wait...
++ Now, can you guess where "alignment" comes from? ;-) */
++#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
++
++/* We need to stop gas from reducing certain expressions (e.g. GOT
++ references) */
++#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
++extern bfd_boolean avr32_fix_adjustable(struct fix *);
++
++/* The linker needs to be passed a little more information when relaxing. */
++#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
++extern bfd_boolean avr32_force_reloc(struct fix *);
++
++/* I'm tired of working around all the madness in fixup_segment().
++ This hook will do basically the same things as the generic code,
++ and then it will "goto" right past it. */
++#define TC_VALIDATE_FIX(FIX, SEG, SKIP) \
++ do \
++ { \
++ avr32_process_fixup(FIX, SEG); \
++ if (!(FIX)->fx_done) \
++ ++seg_reloc_count; \
++ goto SKIP; \
++ } \
++ while (0)
++extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
++
++/* We don't want the gas core to make any assumptions about our way of
++ doing linkrelaxing. */
++#define TC_LINKRELAX_FIXUP(SEG) 0
++
++/* ... but we do want it to insert lots of padding. */
++#define LINKER_RELAXING_SHRINKS_ONLY
++
++/* Better do it ourselves, really... */
++#define TC_RELAX_ALIGN(SEG, FRAG, ADDR) avr32_relax_align(SEG, FRAG, ADDR)
++extern relax_addressT
++avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
++
++/* This is called by write_object_file() just before symbols are
++ attempted converted into section symbols. */
++#define tc_frob_file_before_adjust() avr32_frob_file()
++extern void avr32_frob_file(void);
++
++/* If you define this macro, GAS will call it at the end of each input
++ file. */
++#define md_cleanup() avr32_cleanup()
++extern void avr32_cleanup(void);
++
++/* There's an AVR32-specific hack in operand() which creates O_md
++ expressions when encountering HWRD or LWRD. We need to generate
++ proper relocs for them */
++/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
++
++/* I needed to add an extra hook in gas_cgen_finish_insn() for
++ conversion of O_md* operands because md_cgen_record_fixup_exp()
++ isn't called for relaxable insns */
++/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
++ int avr32_cgen_convert_expr(expressionS *, int); */
++
++/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
++
++/* If you define this macro, it should return the position from which
++ the PC relative adjustment for a PC relative fixup should be
++ made. On many processors, the base of a PC relative instruction is
++ the next instruction, so this macro would return the length of an
++ instruction, plus the address of the PC relative fixup. The latter
++ can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
++extern long md_pcrel_from_section (struct fix *, segT);
++#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
++
++#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
++#define LOCAL_LABELS_FB 1
++
++struct avr32_relaxer
++{
++ int (*estimate_size)(fragS *, segT);
++ long (*relax_frag)(segT, fragS *, long);
++ void (*convert_frag)(bfd *, segT, fragS *);
++};
++
++/* AVR32 has quite complex instruction coding, which means we need
++ * lots of information in order to do the right thing during relaxing
++ * (basically, we need to be able to reconstruct a whole new opcode if
++ * necessary) */
++#define TC_FRAG_TYPE struct avr32_frag_data
++
++struct cpool;
++
++struct avr32_frag_data
++{
++ /* TODO: Maybe add an expression object here so that we can use
++ fix_new_exp() in md_convert_frag? We may have to decide
++ pcrel-ness in md_estimate_size_before_relax() as well...or we
++ might do it when parsing. Doing it while parsing may fail
++ because the sub_symbol is undefined then... */
++ int pcrel;
++ int force_extended;
++ int reloc_info;
++ struct avr32_relaxer *relaxer;
++ expressionS exp;
++
++ /* Points to associated constant pool, for use by LDA and CALL in
++ non-pic mode, and when relaxing the .cpool directive */
++ struct cpool *pool;
++ unsigned int pool_entry;
++};
++
++/* We will have to initialize the fields explicitly when needed */
++#define TC_FRAG_INIT(fragP)
++
++#define md_estimate_size_before_relax(fragP, segT) \
++ ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
++#define md_relax_frag(segment, fragP, stretch) \
++ ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
++#define md_convert_frag(abfd, segment, fragP) \
++ ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
++
++#define TC_FIX_TYPE struct avr32_fix_data
++
++struct avr32_fix_data
++{
++ const struct avr32_ifield *ifield;
++ unsigned int align;
++ long min;
++ long max;
++};
++
++#define TC_INIT_FIX_DATA(fixP) \
++ do \
++ { \
++ (fixP)->tc_fix_data.ifield = NULL; \
++ (fixP)->tc_fix_data.align = 0; \
++ (fixP)->tc_fix_data.min = 0; \
++ (fixP)->tc_fix_data.max = 0; \
++ } \
++ while (0)
+diff -Nrup binutils-2.17/gas/configure.tgt binutils-2.17.atmel.1.3.0/gas/configure.tgt
+--- binutils-2.17/gas/configure.tgt 2006-04-05 14:41:57.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/gas/configure.tgt 2007-03-26 10:20:16.000000000 +0200
+@@ -33,6 +33,7 @@ case ${cpu} in
+ am33_2.0) cpu_type=mn10300 endian=little ;;
+ arm*be|arm*b) cpu_type=arm endian=big ;;
+ arm*) cpu_type=arm endian=little ;;
++ avr32*) cpu_type=avr32 endian=big ;;
+ bfin*) cpu_type=bfin endian=little ;;
+ c4x*) cpu_type=tic4x ;;
+ crisv32) cpu_type=cris arch=crisv32 ;;
+@@ -122,6 +123,9 @@ case ${generic_target} in
+ bfin-*-*) fmt=elf bfd_gas=yes ;;
+ bfin-*elf) fmt=elf ;;
+
++ avr32-*-linux*) fmt=elf em=linux bfd_gas=yes ;;
++ avr32*) fmt=elf bfd_gas=yes ;;
++
+ cris-*-linux-* | crisv32-*-linux-*)
+ fmt=multi em=linux ;;
+ cris-*-* | crisv32-*-*) fmt=multi ;;
+diff -Nrup binutils-2.17/gas/doc/all.texi binutils-2.17.atmel.1.3.0/gas/doc/all.texi
+--- binutils-2.17/gas/doc/all.texi 2006-02-17 15:36:25.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/doc/all.texi 2007-03-26 10:19:41.000000000 +0200
+@@ -29,6 +29,7 @@
+ @set ALPHA
+ @set ARC
+ @set ARM
++@set AVR32
+ @set BFIN
+ @set CRIS
+ @set D10V
+diff -Nrup binutils-2.17/gas/doc/as.info binutils-2.17.atmel.1.3.0/gas/doc/as.info
+--- binutils-2.17/gas/doc/as.info 2006-06-23 20:19:50.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/gas/doc/as.info 2007-03-26 10:35:18.000000000 +0200
+@@ -1,5 +1,7 @@
+-This is ../.././gas/doc/as.info, produced by makeinfo version 4.8 from
+-../.././gas/doc/as.texinfo.
++This is
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/gas/doc/as.info,
++produced by makeinfo version 4.8 from
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/gas/doc/as.texinfo.
+
+ START-INFO-DIR-ENTRY
+ * As: (as). The GNU assembler.
+@@ -17890,463 +17892,463 @@ Index
+
+ 
+ Tag Table:
+-Node: Top778
+-Node: Overview1695
+-Node: Manual28187
+-Node: GNU Assembler29131
+-Node: Object Formats30302
+-Node: Command Line30754
+-Node: Input Files31841
+-Node: Object33822
+-Node: Errors34718
+-Node: Invoking35913
+-Node: a37862
+-Node: alternate39634
+-Node: D39806
+-Node: f40039
+-Node: I40547
+-Node: K41091
+-Node: L41394
+-Node: listing42231
+-Node: M43823
+-Node: MD48224
+-Node: o48650
+-Node: R49105
+-Node: statistics50135
+-Node: traditional-format50542
+-Node: v51015
+-Node: W51290
+-Node: Z52197
+-Node: Syntax52719
+-Node: Preprocessing53310
+-Node: Whitespace54873
+-Node: Comments55269
+-Node: Symbol Intro57422
+-Node: Statements58112
+-Node: Constants60028
+-Node: Characters60659
+-Node: Strings61161
+-Node: Chars63327
+-Node: Numbers64081
+-Node: Integers64621
+-Node: Bignums65277
+-Node: Flonums65633
+-Node: Sections67380
+-Node: Secs Background67758
+-Node: Ld Sections72797
+-Node: As Sections75181
+-Node: Sub-Sections76091
+-Node: bss79238
+-Node: Symbols80188
+-Node: Labels80836
+-Node: Setting Symbols81567
+-Node: Symbol Names82063
+-Node: Dot86428
+-Node: Symbol Attributes86875
+-Node: Symbol Value87612
+-Node: Symbol Type88657
+-Node: a.out Symbols89045
+-Node: Symbol Desc89307
+-Node: Symbol Other89602
+-Node: COFF Symbols89771
+-Node: SOM Symbols90444
+-Node: Expressions90886
+-Node: Empty Exprs91635
+-Node: Integer Exprs91982
+-Node: Arguments92377
+-Node: Operators93483
+-Node: Prefix Ops93818
+-Node: Infix Ops94146
+-Node: Pseudo Ops96536
+-Node: Abort101731
+-Node: ABORT102136
+-Node: Align102323
+-Node: Ascii104605
+-Node: Asciz104914
+-Node: Balign105159
+-Node: Byte107022
+-Node: Comm107260
+-Node: CFI directives108634
+-Node: LNS directives110986
+-Node: Data113063
+-Node: Def113390
+-Node: Desc113622
+-Node: Dim114122
+-Node: Double114379
+-Node: Eject114717
+-Node: Else114892
+-Node: Elseif115188
+-Node: End115478
+-Node: Endef115693
+-Node: Endfunc115870
+-Node: Endif116045
+-Node: Equ116306
+-Node: Equiv116815
+-Node: Eqv117371
+-Node: Err117735
+-Node: Error118046
+-Node: Exitm118491
+-Node: Extern118660
+-Node: Fail118921
+-Node: File119366
+-Node: Fill119843
+-Node: Float120807
+-Node: Func121149
+-Node: Global121739
+-Node: Hidden122489
+-Node: hword123068
+-Node: Ident123396
+-Node: If123970
+-Node: Incbin127029
+-Node: Include127724
+-Node: Int128275
+-Node: Internal128656
+-Node: Irp129304
+-Node: Irpc130201
+-Node: Lcomm131118
+-Node: Lflags131866
+-Node: Line132060
+-Node: Linkonce132979
+-Node: Ln134208
+-Node: MRI134369
+-Node: List134707
+-Node: Long135315
+-Node: Macro135501
+-Node: Altmacro140064
+-Node: Noaltmacro141394
+-Node: Nolist141562
+-Node: Octa141992
+-Node: Org142326
+-Node: P2align143609
+-Node: Previous145537
+-Node: PopSection146231
+-Node: Print146739
+-Node: Protected146968
+-Node: Psize147615
+-Node: Purgem148299
+-Node: PushSection148520
+-Node: Quad149077
+-Node: Rept149532
+-Node: Sbttl149945
+-Node: Scl150310
+-Node: Section150651
+-Node: Set155791
+-Node: Short156428
+-Node: Single156748
+-Node: Size157093
+-Node: Sleb128157765
+-Node: Skip158087
+-Node: Space158409
+-Node: Stab159048
+-Node: String161050
+-Node: Struct161476
+-Node: SubSection162199
+-Node: Symver162760
+-Node: Tag165151
+-Node: Text165531
+-Node: Title165850
+-Node: Type166229
+-Node: Uleb128167306
+-Node: Val167630
+-Node: Version167880
+-Node: VTableEntry168155
+-Node: VTableInherit168445
+-Node: Warning168891
+-Node: Weak169125
+-Node: Weakref169794
+-Node: Word170759
+-Node: Deprecated172605
+-Node: Machine Dependencies172840
+-Node: Alpha-Dependent175604
+-Node: Alpha Notes176018
+-Node: Alpha Options176299
+-Node: Alpha Syntax178497
+-Node: Alpha-Chars178966
+-Node: Alpha-Regs179197
+-Node: Alpha-Relocs179584
+-Node: Alpha Floating Point185842
+-Node: Alpha Directives186064
+-Node: Alpha Opcodes191587
+-Node: ARC-Dependent191882
+-Node: ARC Options192265
+-Node: ARC Syntax193334
+-Node: ARC-Chars193566
+-Node: ARC-Regs193698
+-Node: ARC Floating Point193822
+-Node: ARC Directives194133
+-Node: ARC Opcodes200104
+-Node: ARM-Dependent200330
+-Node: ARM Options200757
+-Node: ARM Syntax206551
+-Node: ARM-Chars206783
+-Node: ARM-Regs207307
+-Node: ARM Floating Point207492
+-Node: ARM Directives207691
+-Node: ARM Opcodes214055
+-Node: ARM Mapping Symbols216143
+-Node: BFIN-Dependent216922
+-Node: BFIN Syntax217176
+-Node: BFIN Directives222873
+-Node: CRIS-Dependent223280
+-Node: CRIS-Opts223626
+-Ref: march-option225244
+-Node: CRIS-Expand227061
+-Node: CRIS-Symbols228244
+-Node: CRIS-Syntax229413
+-Node: CRIS-Chars229749
+-Node: CRIS-Pic230300
+-Ref: crispic230496
+-Node: CRIS-Regs234036
+-Node: CRIS-Pseudos234453
+-Ref: crisnous235229
+-Node: D10V-Dependent236511
+-Node: D10V-Opts236862
+-Node: D10V-Syntax237825
+-Node: D10V-Size238354
+-Node: D10V-Subs239327
+-Node: D10V-Chars240362
+-Node: D10V-Regs241966
+-Node: D10V-Addressing243011
+-Node: D10V-Word243697
+-Node: D10V-Float244212
+-Node: D10V-Opcodes244523
+-Node: D30V-Dependent244916
+-Node: D30V-Opts245269
+-Node: D30V-Syntax245944
+-Node: D30V-Size246476
+-Node: D30V-Subs247447
+-Node: D30V-Chars248482
+-Node: D30V-Guarded250780
+-Node: D30V-Regs251460
+-Node: D30V-Addressing252599
+-Node: D30V-Float253267
+-Node: D30V-Opcodes253578
+-Node: H8/300-Dependent253971
+-Node: H8/300 Options254381
+-Node: H8/300 Syntax254590
+-Node: H8/300-Chars254889
+-Node: H8/300-Regs255186
+-Node: H8/300-Addressing256103
+-Node: H8/300 Floating Point257142
+-Node: H8/300 Directives257467
+-Node: H8/300 Opcodes258593
+-Node: HPPA-Dependent266913
+-Node: HPPA Notes267346
+-Node: HPPA Options268102
+-Node: HPPA Syntax268295
+-Node: HPPA Floating Point269563
+-Node: HPPA Directives269767
+-Node: HPPA Opcodes278451
+-Node: ESA/390-Dependent278708
+-Node: ESA/390 Notes279168
+-Node: ESA/390 Options279959
+-Node: ESA/390 Syntax280169
+-Node: ESA/390 Floating Point282342
+-Node: ESA/390 Directives282621
+-Node: ESA/390 Opcodes285910
+-Node: i386-Dependent286172
+-Node: i386-Options287240
+-Node: i386-Syntax288430
+-Node: i386-Mnemonics290844
+-Node: i386-Regs293309
+-Node: i386-Prefixes295354
+-Node: i386-Memory298114
+-Node: i386-Jumps301051
+-Node: i386-Float302172
+-Node: i386-SIMD304001
+-Node: i386-16bit305110
+-Node: i386-Bugs307148
+-Node: i386-Arch307902
+-Node: i386-Notes310083
+-Node: i860-Dependent310941
+-Node: Notes-i860311337
+-Node: Options-i860312242
+-Node: Directives-i860313605
+-Node: Opcodes for i860314674
+-Node: i960-Dependent316841
+-Node: Options-i960317244
+-Node: Floating Point-i960321128
+-Node: Directives-i960321396
+-Node: Opcodes for i960323430
+-Node: callj-i960324047
+-Node: Compare-and-branch-i960324536
+-Node: IA-64-Dependent326440
+-Node: IA-64 Options326741
+-Node: IA-64 Syntax329901
+-Node: IA-64-Chars330264
+-Node: IA-64-Regs330494
+-Node: IA-64-Bits331420
+-Node: IA-64 Opcodes331929
+-Node: IP2K-Dependent332201
+-Node: IP2K-Opts332429
+-Node: M32C-Dependent332909
+-Node: M32C-Opts333433
+-Node: M32C-Modifiers333717
+-Node: M32R-Dependent335504
+-Node: M32R-Opts335825
+-Node: M32R-Directives339991
+-Node: M32R-Warnings343966
+-Node: M68K-Dependent346972
+-Node: M68K-Opts347439
+-Node: M68K-Syntax354818
+-Node: M68K-Moto-Syntax356657
+-Node: M68K-Float359246
+-Node: M68K-Directives359766
+-Node: M68K-opcodes361092
+-Node: M68K-Branch361318
+-Node: M68K-Chars365516
+-Node: M68HC11-Dependent365929
+-Node: M68HC11-Opts366460
+-Node: M68HC11-Syntax370276
+-Node: M68HC11-Modifiers372490
+-Node: M68HC11-Directives374318
+-Node: M68HC11-Float375694
+-Node: M68HC11-opcodes376222
+-Node: M68HC11-Branch376404
+-Node: MIPS-Dependent378851
+-Node: MIPS Opts379941
+-Node: MIPS Object387268
+-Node: MIPS Stabs388834
+-Node: MIPS symbol sizes389556
+-Node: MIPS ISA391225
+-Node: MIPS autoextend392374
+-Node: MIPS insn393104
+-Node: MIPS option stack393601
+-Node: MIPS ASE instruction generation overrides394375
+-Node: MMIX-Dependent395592
+-Node: MMIX-Opts395972
+-Node: MMIX-Expand399576
+-Node: MMIX-Syntax400891
+-Ref: mmixsite401248
+-Node: MMIX-Chars402089
+-Node: MMIX-Symbols402743
+-Node: MMIX-Regs404811
+-Node: MMIX-Pseudos405836
+-Ref: MMIX-loc405977
+-Ref: MMIX-local407057
+-Ref: MMIX-is407589
+-Ref: MMIX-greg407860
+-Ref: GREG-base408779
+-Ref: MMIX-byte410096
+-Ref: MMIX-constants410567
+-Ref: MMIX-prefix411213
+-Ref: MMIX-spec411587
+-Node: MMIX-mmixal411921
+-Node: MSP430-Dependent415418
+-Node: MSP430 Options415884
+-Node: MSP430 Syntax416170
+-Node: MSP430-Macros416486
+-Node: MSP430-Chars417217
+-Node: MSP430-Regs417530
+-Node: MSP430-Ext418090
+-Node: MSP430 Floating Point419911
+-Node: MSP430 Directives420135
+-Node: MSP430 Opcodes420926
+-Node: MSP430 Profiling Capability421321
+-Node: PDP-11-Dependent423650
+-Node: PDP-11-Options424039
+-Node: PDP-11-Pseudos429110
+-Node: PDP-11-Syntax429455
+-Node: PDP-11-Mnemonics430206
+-Node: PDP-11-Synthetic430508
+-Node: PJ-Dependent430726
+-Node: PJ Options430951
+-Node: PPC-Dependent431228
+-Node: PowerPC-Opts431515
+-Node: PowerPC-Pseudo433590
+-Node: SH-Dependent434189
+-Node: SH Options434601
+-Node: SH Syntax435529
+-Node: SH-Chars435802
+-Node: SH-Regs436096
+-Node: SH-Addressing436710
+-Node: SH Floating Point437619
+-Node: SH Directives438713
+-Node: SH Opcodes439083
+-Node: SH64-Dependent443405
+-Node: SH64 Options443768
+-Node: SH64 Syntax445485
+-Node: SH64-Chars445768
+-Node: SH64-Regs446068
+-Node: SH64-Addressing447164
+-Node: SH64 Directives448347
+-Node: SH64 Opcodes449457
+-Node: Sparc-Dependent450173
+-Node: Sparc-Opts450558
+-Node: Sparc-Aligned-Data452815
+-Node: Sparc-Float453670
+-Node: Sparc-Directives453871
+-Node: TIC54X-Dependent455831
+-Node: TIC54X-Opts456557
+-Node: TIC54X-Block457600
+-Node: TIC54X-Env457960
+-Node: TIC54X-Constants458308
+-Node: TIC54X-Subsyms458710
+-Node: TIC54X-Locals460619
+-Node: TIC54X-Builtins461363
+-Node: TIC54X-Ext463834
+-Node: TIC54X-Directives464405
+-Node: TIC54X-Macros475307
+-Node: TIC54X-MMRegs477417
+-Node: Z80-Dependent477633
+-Node: Z80 Options478021
+-Node: Z80 Syntax479444
+-Node: Z80-Chars480116
+-Node: Z80-Regs480649
+-Node: Z80-Case481001
+-Node: Z80 Floating Point481446
+-Node: Z80 Directives481640
+-Node: Z80 Opcodes483265
+-Node: Z8000-Dependent484607
+-Node: Z8000 Options485568
+-Node: Z8000 Syntax485785
+-Node: Z8000-Chars486075
+-Node: Z8000-Regs486308
+-Node: Z8000-Addressing487098
+-Node: Z8000 Directives488215
+-Node: Z8000 Opcodes489824
+-Node: Vax-Dependent499766
+-Node: VAX-Opts500283
+-Node: VAX-float504018
+-Node: VAX-directives504650
+-Node: VAX-opcodes505511
+-Node: VAX-branch505900
+-Node: VAX-operands508407
+-Node: VAX-no509170
+-Node: V850-Dependent509407
+-Node: V850 Options509805
+-Node: V850 Syntax512194
+-Node: V850-Chars512434
+-Node: V850-Regs512599
+-Node: V850 Floating Point514167
+-Node: V850 Directives514373
+-Node: V850 Opcodes515516
+-Node: Xtensa-Dependent521408
+-Node: Xtensa Options522137
+-Node: Xtensa Syntax524908
+-Node: Xtensa Opcodes526797
+-Node: Xtensa Registers528591
+-Node: Xtensa Optimizations529224
+-Node: Density Instructions529676
+-Node: Xtensa Automatic Alignment530778
+-Node: Xtensa Relaxation533524
+-Node: Xtensa Branch Relaxation534432
+-Node: Xtensa Call Relaxation535804
+-Node: Xtensa Immediate Relaxation537590
+-Node: Xtensa Directives540164
+-Node: Schedule Directive541872
+-Node: Longcalls Directive542212
+-Node: Transform Directive542756
+-Node: Literal Directive543498
+-Node: Literal Position Directive545283
+-Node: Literal Prefix Directive546982
+-Node: Absolute Literals Directive549145
+-Node: Reporting Bugs550452
+-Node: Bug Criteria551176
+-Node: Bug Reporting551941
+-Node: Acknowledgements558574
+-Ref: Acknowledgements-Footnote-1563472
+-Node: GNU Free Documentation License563498
+-Node: Index583225
++Node: Top912
++Node: Overview1829
++Node: Manual28321
++Node: GNU Assembler29265
++Node: Object Formats30436
++Node: Command Line30888
++Node: Input Files31975
++Node: Object33956
++Node: Errors34852
++Node: Invoking36047
++Node: a37996
++Node: alternate39768
++Node: D39940
++Node: f40173
++Node: I40681
++Node: K41225
++Node: L41528
++Node: listing42365
++Node: M43957
++Node: MD48358
++Node: o48784
++Node: R49239
++Node: statistics50269
++Node: traditional-format50676
++Node: v51149
++Node: W51424
++Node: Z52331
++Node: Syntax52853
++Node: Preprocessing53444
++Node: Whitespace55007
++Node: Comments55403
++Node: Symbol Intro57556
++Node: Statements58246
++Node: Constants60162
++Node: Characters60793
++Node: Strings61295
++Node: Chars63461
++Node: Numbers64215
++Node: Integers64755
++Node: Bignums65411
++Node: Flonums65767
++Node: Sections67514
++Node: Secs Background67892
++Node: Ld Sections72931
++Node: As Sections75315
++Node: Sub-Sections76225
++Node: bss79372
++Node: Symbols80322
++Node: Labels80970
++Node: Setting Symbols81701
++Node: Symbol Names82197
++Node: Dot86562
++Node: Symbol Attributes87009
++Node: Symbol Value87746
++Node: Symbol Type88791
++Node: a.out Symbols89179
++Node: Symbol Desc89441
++Node: Symbol Other89736
++Node: COFF Symbols89905
++Node: SOM Symbols90578
++Node: Expressions91020
++Node: Empty Exprs91769
++Node: Integer Exprs92116
++Node: Arguments92511
++Node: Operators93617
++Node: Prefix Ops93952
++Node: Infix Ops94280
++Node: Pseudo Ops96670
++Node: Abort101865
++Node: ABORT102270
++Node: Align102457
++Node: Ascii104739
++Node: Asciz105048
++Node: Balign105293
++Node: Byte107156
++Node: Comm107394
++Node: CFI directives108768
++Node: LNS directives111120
++Node: Data113197
++Node: Def113524
++Node: Desc113756
++Node: Dim114256
++Node: Double114513
++Node: Eject114851
++Node: Else115026
++Node: Elseif115322
++Node: End115612
++Node: Endef115827
++Node: Endfunc116004
++Node: Endif116179
++Node: Equ116440
++Node: Equiv116949
++Node: Eqv117505
++Node: Err117869
++Node: Error118180
++Node: Exitm118625
++Node: Extern118794
++Node: Fail119055
++Node: File119500
++Node: Fill119977
++Node: Float120941
++Node: Func121283
++Node: Global121873
++Node: Hidden122623
++Node: hword123202
++Node: Ident123530
++Node: If124104
++Node: Incbin127163
++Node: Include127858
++Node: Int128409
++Node: Internal128790
++Node: Irp129438
++Node: Irpc130335
++Node: Lcomm131252
++Node: Lflags132000
++Node: Line132194
++Node: Linkonce133113
++Node: Ln134342
++Node: MRI134503
++Node: List134841
++Node: Long135449
++Node: Macro135635
++Node: Altmacro140198
++Node: Noaltmacro141528
++Node: Nolist141696
++Node: Octa142126
++Node: Org142460
++Node: P2align143743
++Node: Previous145671
++Node: PopSection146365
++Node: Print146873
++Node: Protected147102
++Node: Psize147749
++Node: Purgem148433
++Node: PushSection148654
++Node: Quad149211
++Node: Rept149666
++Node: Sbttl150079
++Node: Scl150444
++Node: Section150785
++Node: Set155925
++Node: Short156562
++Node: Single156882
++Node: Size157227
++Node: Sleb128157899
++Node: Skip158221
++Node: Space158543
++Node: Stab159182
++Node: String161184
++Node: Struct161610
++Node: SubSection162333
++Node: Symver162894
++Node: Tag165285
++Node: Text165665
++Node: Title165984
++Node: Type166363
++Node: Uleb128167440
++Node: Val167764
++Node: Version168014
++Node: VTableEntry168289
++Node: VTableInherit168579
++Node: Warning169025
++Node: Weak169259
++Node: Weakref169928
++Node: Word170893
++Node: Deprecated172739
++Node: Machine Dependencies172974
++Node: Alpha-Dependent175738
++Node: Alpha Notes176152
++Node: Alpha Options176433
++Node: Alpha Syntax178631
++Node: Alpha-Chars179100
++Node: Alpha-Regs179331
++Node: Alpha-Relocs179718
++Node: Alpha Floating Point185976
++Node: Alpha Directives186198
++Node: Alpha Opcodes191721
++Node: ARC-Dependent192016
++Node: ARC Options192399
++Node: ARC Syntax193468
++Node: ARC-Chars193700
++Node: ARC-Regs193832
++Node: ARC Floating Point193956
++Node: ARC Directives194267
++Node: ARC Opcodes200238
++Node: ARM-Dependent200464
++Node: ARM Options200891
++Node: ARM Syntax206685
++Node: ARM-Chars206917
++Node: ARM-Regs207441
++Node: ARM Floating Point207626
++Node: ARM Directives207825
++Node: ARM Opcodes214189
++Node: ARM Mapping Symbols216277
++Node: BFIN-Dependent217056
++Node: BFIN Syntax217310
++Node: BFIN Directives223007
++Node: CRIS-Dependent223414
++Node: CRIS-Opts223760
++Ref: march-option225378
++Node: CRIS-Expand227195
++Node: CRIS-Symbols228378
++Node: CRIS-Syntax229547
++Node: CRIS-Chars229883
++Node: CRIS-Pic230434
++Ref: crispic230630
++Node: CRIS-Regs234170
++Node: CRIS-Pseudos234587
++Ref: crisnous235363
++Node: D10V-Dependent236645
++Node: D10V-Opts236996
++Node: D10V-Syntax237959
++Node: D10V-Size238488
++Node: D10V-Subs239461
++Node: D10V-Chars240496
++Node: D10V-Regs242100
++Node: D10V-Addressing243145
++Node: D10V-Word243831
++Node: D10V-Float244346
++Node: D10V-Opcodes244657
++Node: D30V-Dependent245050
++Node: D30V-Opts245403
++Node: D30V-Syntax246078
++Node: D30V-Size246610
++Node: D30V-Subs247581
++Node: D30V-Chars248616
++Node: D30V-Guarded250914
++Node: D30V-Regs251594
++Node: D30V-Addressing252733
++Node: D30V-Float253401
++Node: D30V-Opcodes253712
++Node: H8/300-Dependent254105
++Node: H8/300 Options254515
++Node: H8/300 Syntax254724
++Node: H8/300-Chars255023
++Node: H8/300-Regs255320
++Node: H8/300-Addressing256237
++Node: H8/300 Floating Point257276
++Node: H8/300 Directives257601
++Node: H8/300 Opcodes258727
++Node: HPPA-Dependent267047
++Node: HPPA Notes267480
++Node: HPPA Options268236
++Node: HPPA Syntax268429
++Node: HPPA Floating Point269697
++Node: HPPA Directives269901
++Node: HPPA Opcodes278585
++Node: ESA/390-Dependent278842
++Node: ESA/390 Notes279302
++Node: ESA/390 Options280093
++Node: ESA/390 Syntax280303
++Node: ESA/390 Floating Point282476
++Node: ESA/390 Directives282755
++Node: ESA/390 Opcodes286044
++Node: i386-Dependent286306
++Node: i386-Options287374
++Node: i386-Syntax288564
++Node: i386-Mnemonics290978
++Node: i386-Regs293443
++Node: i386-Prefixes295488
++Node: i386-Memory298248
++Node: i386-Jumps301185
++Node: i386-Float302306
++Node: i386-SIMD304135
++Node: i386-16bit305244
++Node: i386-Bugs307282
++Node: i386-Arch308036
++Node: i386-Notes310217
++Node: i860-Dependent311075
++Node: Notes-i860311471
++Node: Options-i860312376
++Node: Directives-i860313739
++Node: Opcodes for i860314808
++Node: i960-Dependent316975
++Node: Options-i960317378
++Node: Floating Point-i960321262
++Node: Directives-i960321530
++Node: Opcodes for i960323564
++Node: callj-i960324181
++Node: Compare-and-branch-i960324670
++Node: IA-64-Dependent326574
++Node: IA-64 Options326875
++Node: IA-64 Syntax330035
++Node: IA-64-Chars330398
++Node: IA-64-Regs330628
++Node: IA-64-Bits331554
++Node: IA-64 Opcodes332063
++Node: IP2K-Dependent332335
++Node: IP2K-Opts332563
++Node: M32C-Dependent333043
++Node: M32C-Opts333567
++Node: M32C-Modifiers333851
++Node: M32R-Dependent335638
++Node: M32R-Opts335959
++Node: M32R-Directives340125
++Node: M32R-Warnings344100
++Node: M68K-Dependent347106
++Node: M68K-Opts347573
++Node: M68K-Syntax354952
++Node: M68K-Moto-Syntax356791
++Node: M68K-Float359380
++Node: M68K-Directives359900
++Node: M68K-opcodes361226
++Node: M68K-Branch361452
++Node: M68K-Chars365650
++Node: M68HC11-Dependent366063
++Node: M68HC11-Opts366594
++Node: M68HC11-Syntax370410
++Node: M68HC11-Modifiers372624
++Node: M68HC11-Directives374452
++Node: M68HC11-Float375828
++Node: M68HC11-opcodes376356
++Node: M68HC11-Branch376538
++Node: MIPS-Dependent378985
++Node: MIPS Opts380075
++Node: MIPS Object387402
++Node: MIPS Stabs388968
++Node: MIPS symbol sizes389690
++Node: MIPS ISA391359
++Node: MIPS autoextend392508
++Node: MIPS insn393238
++Node: MIPS option stack393735
++Node: MIPS ASE instruction generation overrides394509
++Node: MMIX-Dependent395726
++Node: MMIX-Opts396106
++Node: MMIX-Expand399710
++Node: MMIX-Syntax401025
++Ref: mmixsite401382
++Node: MMIX-Chars402223
++Node: MMIX-Symbols402877
++Node: MMIX-Regs404945
++Node: MMIX-Pseudos405970
++Ref: MMIX-loc406111
++Ref: MMIX-local407191
++Ref: MMIX-is407723
++Ref: MMIX-greg407994
++Ref: GREG-base408913
++Ref: MMIX-byte410230
++Ref: MMIX-constants410701
++Ref: MMIX-prefix411347
++Ref: MMIX-spec411721
++Node: MMIX-mmixal412055
++Node: MSP430-Dependent415552
++Node: MSP430 Options416018
++Node: MSP430 Syntax416304
++Node: MSP430-Macros416620
++Node: MSP430-Chars417351
++Node: MSP430-Regs417664
++Node: MSP430-Ext418224
++Node: MSP430 Floating Point420045
++Node: MSP430 Directives420269
++Node: MSP430 Opcodes421060
++Node: MSP430 Profiling Capability421455
++Node: PDP-11-Dependent423784
++Node: PDP-11-Options424173
++Node: PDP-11-Pseudos429244
++Node: PDP-11-Syntax429589
++Node: PDP-11-Mnemonics430340
++Node: PDP-11-Synthetic430642
++Node: PJ-Dependent430860
++Node: PJ Options431085
++Node: PPC-Dependent431362
++Node: PowerPC-Opts431649
++Node: PowerPC-Pseudo433724
++Node: SH-Dependent434323
++Node: SH Options434735
++Node: SH Syntax435663
++Node: SH-Chars435936
++Node: SH-Regs436230
++Node: SH-Addressing436844
++Node: SH Floating Point437753
++Node: SH Directives438847
++Node: SH Opcodes439217
++Node: SH64-Dependent443539
++Node: SH64 Options443902
++Node: SH64 Syntax445619
++Node: SH64-Chars445902
++Node: SH64-Regs446202
++Node: SH64-Addressing447298
++Node: SH64 Directives448481
++Node: SH64 Opcodes449591
++Node: Sparc-Dependent450307
++Node: Sparc-Opts450692
++Node: Sparc-Aligned-Data452949
++Node: Sparc-Float453804
++Node: Sparc-Directives454005
++Node: TIC54X-Dependent455965
++Node: TIC54X-Opts456691
++Node: TIC54X-Block457734
++Node: TIC54X-Env458094
++Node: TIC54X-Constants458442
++Node: TIC54X-Subsyms458844
++Node: TIC54X-Locals460753
++Node: TIC54X-Builtins461497
++Node: TIC54X-Ext463968
++Node: TIC54X-Directives464539
++Node: TIC54X-Macros475441
++Node: TIC54X-MMRegs477551
++Node: Z80-Dependent477767
++Node: Z80 Options478155
++Node: Z80 Syntax479578
++Node: Z80-Chars480250
++Node: Z80-Regs480783
++Node: Z80-Case481135
++Node: Z80 Floating Point481580
++Node: Z80 Directives481774
++Node: Z80 Opcodes483399
++Node: Z8000-Dependent484741
++Node: Z8000 Options485702
++Node: Z8000 Syntax485919
++Node: Z8000-Chars486209
++Node: Z8000-Regs486442
++Node: Z8000-Addressing487232
++Node: Z8000 Directives488349
++Node: Z8000 Opcodes489958
++Node: Vax-Dependent499900
++Node: VAX-Opts500417
++Node: VAX-float504152
++Node: VAX-directives504784
++Node: VAX-opcodes505645
++Node: VAX-branch506034
++Node: VAX-operands508541
++Node: VAX-no509304
++Node: V850-Dependent509541
++Node: V850 Options509939
++Node: V850 Syntax512328
++Node: V850-Chars512568
++Node: V850-Regs512733
++Node: V850 Floating Point514301
++Node: V850 Directives514507
++Node: V850 Opcodes515650
++Node: Xtensa-Dependent521542
++Node: Xtensa Options522271
++Node: Xtensa Syntax525042
++Node: Xtensa Opcodes526931
++Node: Xtensa Registers528725
++Node: Xtensa Optimizations529358
++Node: Density Instructions529810
++Node: Xtensa Automatic Alignment530912
++Node: Xtensa Relaxation533658
++Node: Xtensa Branch Relaxation534566
++Node: Xtensa Call Relaxation535938
++Node: Xtensa Immediate Relaxation537724
++Node: Xtensa Directives540298
++Node: Schedule Directive542006
++Node: Longcalls Directive542346
++Node: Transform Directive542890
++Node: Literal Directive543632
++Node: Literal Position Directive545417
++Node: Literal Prefix Directive547116
++Node: Absolute Literals Directive549279
++Node: Reporting Bugs550586
++Node: Bug Criteria551310
++Node: Bug Reporting552075
++Node: Acknowledgements558708
++Ref: Acknowledgements-Footnote-1563606
++Node: GNU Free Documentation License563632
++Node: Index583359
+ 
+ End Tag Table
+diff -Nrup binutils-2.17/gas/doc/as.texinfo binutils-2.17.atmel.1.3.0/gas/doc/as.texinfo
+--- binutils-2.17/gas/doc/as.texinfo 2006-04-17 17:16:27.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/gas/doc/as.texinfo 2007-03-26 10:19:41.000000000 +0200
+@@ -6182,6 +6182,9 @@ subject, see the hardware manufacturer's
+ @ifset ARM
+ * ARM-Dependent:: ARM Dependent Features
+ @end ifset
++@ifset AVR32
++* AVR32-Dependent:: AVR32 Dependent Features
++@end ifset
+ @ifset BFIN
+ * BFIN-Dependent:: BFIN Dependent Features
+ @end ifset
+@@ -6298,6 +6301,10 @@ subject, see the hardware manufacturer's
+ @include c-arm.texi
+ @end ifset
+
++@ifset AVR32
++@include c-avr32.texi
++@end ifset
++
+ @ifset BFIN
+ @include c-bfin.texi
+ @end ifset
+diff -Nrup binutils-2.17/gas/doc/c-avr32.texi binutils-2.17.atmel.1.3.0/gas/doc/c-avr32.texi
+--- binutils-2.17/gas/doc/c-avr32.texi 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/doc/c-avr32.texi 2007-09-28 10:30:46.000000000 +0200
+@@ -0,0 +1,254 @@
++@c Copyright 2005, 2006
++@c Atmel Corporation
++@c This is part of the GAS manual.
++@c For copying conditions, see the file as.texinfo.
++
++@ifset GENERIC
++@page
++@node AVR32-Dependent
++@chapter AVR32 Dependent Features
++@end ifset
++
++@ifclear GENERIC
++@node Machine Dependencies
++@chapter AVR32 Dependent Features
++@end ifclear
++
++@cindex AVR32 support
++@menu
++* AVR32 Options:: Options
++* AVR32 Syntax:: Syntax
++* AVR32 Directives:: Directives
++* AVR32 Opcodes:: Opcodes
++@end menu
++
++@node AVR32 Options
++@section Options
++@cindex AVR32 options
++@cindex options for AVR32
++
++There are currently no AVR32-specific options. However, the following
++options are planned:
++
++@table @code
++
++@cindex @code{--pic} command line option, AVR32
++@cindex PIC code generation for AVR32
++@item --pic
++This option specifies that the output of the assembler should be marked
++as position-independent code (PIC). It will also ensure that
++pseudo-instructions that deal with address calculation are output as
++PIC, and that all absolute address references in the code are marked as
++such.
++
++@cindex @code{--linkrelax} command line option, AVR32
++@item --linkrelax
++This option specifies that the output of the assembler should be marked
++as linker-relaxable. It will also ensure that all PC-relative operands
++that may change during linker relaxation get appropriate relocations.
++
++@cindex @code{--direct-data-refs} command line option, AVR32
++@item --direct-data-refs
++This option allows direct references (i.e. mov or sub) to the
++data section. This is default not allowed because the actual distance may
++change after the optimization passes are complete and the address and
++size of all sections are considered known.
++
++@end table
++
++
++@node AVR32 Syntax
++@section Syntax
++@menu
++* AVR32-Chars:: Special Characters
++* AVR32-Symrefs:: Symbol references
++@end menu
++
++@node AVR32-Chars
++@subsection Special Characters
++
++@cindex line comment character, AVR32
++@cindex AVR32 line comment character
++The presence of a @samp{//} on a line indicates the start of a comment
++that extends to the end of the current line. If a @samp{#} appears as
++the first character of a line, the whole line is treated as a comment.
++
++@cindex line separator, AVR32
++@cindex statement separator, AVR32
++@cindex AVR32 line separator
++The @samp{;} character can be used instead of a newline to separate
++statements.
++
++@node AVR32-Symrefs
++@subsection Symbol references
++
++The absolute value of a symbol can be obtained by simply naming the
++symbol. However, as AVR32 symbols have 32-bit values, most symbols have
++values that are outside the range of any instructions.
++
++Instructions that take a PC-relative offset, e.g. @code{lddpc} or
++@code{rcall}, can also reference a symbol by simply naming the symbol
++(no explicit calculations necessary). In this case, the assembler or
++linker subtracts the address of the instruction from the symbol's value
++and inserts the result into the instruction. Note that even though an
++overflow is less likely to happen for a relative reference than for an
++absolute reference, the assembler or linker will generate an error if
++the referenced symbol is too far away from the current location.
++
++Relative references can be used for data as well. For example:
++
++@smallexample
++ lddpc r0, 2f
++1: add r0, pc
++ ...
++ .align 2
++2: .int @var{some_symbol} - 1b
++@end smallexample
++
++Here, r0 will end up with the run-time address of @var{some_symbol} even
++if the program was loaded at a different address than it was linked
++(position-independent code).
++
++@subsubsection Symbol modifiers
++
++@table @code
++
++@item @code{hi(@var{symbol})}
++Evaluates to the value of the symbol shifted right 16 bits. This will
++work even if @var{symbol} is defined in a different module.
++
++@item @code{lo(@var{symbol})}
++Evaluates to the low 16 bits of the symbol's value. This will work even
++if @var{symbol} is defined in a different module.
++
++@item @code{@var{symbol}@@got}
++Create a GOT entry for @var{symbol} and return the offset of that entry
++relative to the GOT base.
++
++@end table
++
++
++@node AVR32 Directives
++@section Directives
++@cindex machine directives, AVR32
++@cindex AVR32 directives
++
++@table @code
++
++@cindex @code{.cpool} directive, AVR32
++@item .cpool
++This directive causes the current contents of the constant pool to be
++dumped into the current section at the current location (aligned to a
++word boundary). @code{GAS} maintains a separate constant pool for each
++section and each sub-section. The @code{.cpool} directive will only
++affect the constant pool of the current section and sub-section. At the
++end of assembly, all remaining, non-empty constant pools will
++automatically be dumped.
++
++@end table
++
++
++@node AVR32 Opcodes
++@section Opcodes
++@cindex AVR32 opcodes
++@cindex opcodes for AVR32
++
++@code{@value{AS}} implements all the standard AVR32 opcodes. It also
++implements several pseudo-opcodes, which are recommended to use wherever
++possible because they give the tool chain better freedom to generate
++optimal code.
++
++@table @code
++
++@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
++@item LDA.W
++@smallexample
++ lda.w @var{reg}, @var{symbol}
++@end smallexample
++
++This instruction will load the address of @var{symbol} into
++@var{reg}. The instruction will evaluate to one of the following,
++depending on the relative distance to the symbol, the relative distance
++to the constant pool and whether the @code{--pic} option has been
++specified. If the @code{--pic} option has not been specified, the
++alternatives are as follows:
++@smallexample
++ /* @var{symbol} evaluates to a small enough value */
++ mov @var{reg}, @var{symbol}
++
++ /* (. - @var{symbol}) evaluates to a small enough value */
++ sub @var{reg}, pc, . - @var{symbol}
++
++ /* Constant pool is close enough */
++ lddpc @var{reg}, @var{cpent}
++ ...
++@var{cpent}:
++ .long @var{symbol}
++
++ /* Otherwise (not implemented yet, probably not necessary) */
++ mov @var{reg}, lo(@var{symbol})
++ orh @var{reg}, hi(@var{symbol})
++@end smallexample
++
++If the @code{--pic} option has been specified, the alternatives are as
++follows:
++@smallexample
++ /* (. - @var{symbol}) evaluates to a small enough value */
++ sub @var{reg}, pc, . - @var{symbol}
++
++ /* If @code{--linkrelax} not specified */
++ ld.w @var{reg}, r6[@var{symbol}@@got]
++
++ /* Otherwise */
++ mov @var{reg}, @var{symbol}@@got / 4
++ ld.w @var{reg}, r6[@var{reg} << 2]
++@end smallexample
++
++If @var{symbol} is not defined in the same file and section as the
++@code{LDA.W} instruction, the most pessimistic alternative of the
++above is selected. The linker may convert it back into the most
++optimal alternative when the final value of all symbols is known.
++
++@cindex @code{CALL symbol} pseudo op, AVR32
++@item CALL
++@smallexample
++ call @var{symbol}
++@end smallexample
++
++This instruction will insert code to call the subroutine identified by
++@var{symbol}. It will evaluate to one of the following, depending on
++the relative distance to the symbol as well as the @code{--linkrelax}
++and @code{--pic} command-line options.
++
++If @var{symbol} is defined in the same section and input file, and the
++distance is small enough, an @code{rcall} instruction is inserted:
++@smallexample
++ rcall @var{symbol}
++@end smallexample
++
++Otherwise, if the @code{--pic} option has not been specified:
++@smallexample
++ mcall @var{cpent}
++ ...
++@var{cpent}:
++ .long @var{symbol}
++@end smallexample
++
++Finally, if nothing else fits and the @code{--pic} option has been
++specified, the assembler will indirect the call through the Global
++Offset Table:
++@smallexample
++ /* If @code{--linkrelax} not specified */
++ mcall r6[@var{symbol}@@got]
++
++ /* If @code{--linkrelax} specified */
++ mov lr, @var{symbol}@@got / 4
++ ld.w lr, r6[lr << 2]
++ icall lr
++@end smallexample
++
++The linker, after determining the final value of @var{symbol}, may
++convert any of these into more optimal alternatives. This includes
++deleting any superfluous constant pool- and GOT-entries.
++
++@end table
+diff -Nrup binutils-2.17/gas/doc/Makefile.am binutils-2.17.atmel.1.3.0/gas/doc/Makefile.am
+--- binutils-2.17/gas/doc/Makefile.am 2006-06-03 06:45:50.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/gas/doc/Makefile.am 2007-03-26 10:19:41.000000000 +0200
+@@ -29,6 +29,7 @@ CPU_DOCS = \
+ c-alpha.texi \
+ c-arc.texi \
+ c-arm.texi \
++ c-avr32.texi \
+ c-bfin.texi \
+ c-d10v.texi \
+ c-cris.texi \
+diff -Nrup binutils-2.17/gas/Makefile.am binutils-2.17.atmel.1.3.0/gas/Makefile.am
+--- binutils-2.17/gas/Makefile.am 2006-04-06 23:49:30.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/gas/Makefile.am 2007-03-26 10:20:16.000000000 +0200
+@@ -45,6 +45,7 @@ CPU_TYPES = \
+ arc \
+ arm \
+ avr \
++ avr32 \
+ bfin \
+ cris \
+ crx \
+@@ -229,6 +230,7 @@ TARGET_CPU_CFILES = \
+ config/tc-arc.c \
+ config/tc-arm.c \
+ config/tc-avr.c \
++ config/tc-avr32.c \
+ config/tc-bfin.c \
+ config/tc-cris.c \
+ config/tc-crx.c \
+@@ -280,6 +282,7 @@ TARGET_CPU_HFILES = \
+ config/tc-arc.h \
+ config/tc-arm.h \
+ config/tc-avr.h \
++ config/tc-avr32.h \
+ config/tc-bfin.h \
+ config/tc-cris.h \
+ config/tc-crx.h \
+@@ -1046,6 +1049,11 @@ DEPTC_avr_elf = $(INCDIR)/symcat.h $(src
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \
+ dwarf2dbg.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/avr.h
++DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
++ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
++ $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
+ DEPTC_bfin_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
+ $(srcdir)/config/tc-bfin.h $(INCDIR)/coff/internal.h \
+ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \
+@@ -1628,6 +1636,11 @@ DEPOBJ_bfin_elf = $(INCDIR)/symcat.h $(s
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
+ dwarf2dbg.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
+ struc-symbol.h $(INCDIR)/aout/aout64.h
++DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
++ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
++ struc-symbol.h dwarf2dbg.h
+ DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
+ $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+@@ -2095,6 +2108,9 @@ DEP_bfin_elf = $(srcdir)/config/obj-elf.
+ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
+ dwarf2dbg.h
++DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
+ DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
+ DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/aliases.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.d
+--- binutils-2.17/gas/testsuite/gas/avr32/aliases.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,19 @@
++#as:
++#objdump: -dr
++#name: aliases
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <ld_nodisp>:
++ 0: 19 80 [ \t]+ld\.ub r0,r12\[0x0\]
++ 2: f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
++ 6: 98 80 [ \t]+ld\.uh r0,r12\[0x0\]
++ 8: 98 00 [ \t]+ld\.sh r0,r12\[0x0\]
++ a: 78 00 [ \t]+ld\.w r0,r12\[0x0\]
++
++0000000c <st_nodisp>:
++ c: b8 80 [ \t]+st\.b r12\[0x0\],r0
++ e: b8 00 [ \t]+st\.h r12\[0x0\],r0
++ 10: 99 00 [ \t]+st\.w r12\[0x0\],r0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/aliases.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.s
+--- binutils-2.17/gas/testsuite/gas/avr32/aliases.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,14 @@
++ .text
++ .global ld_nodisp
++ld_nodisp:
++ ld.ub r0, r12
++ ld.sb r0, r12
++ ld.uh r0, r12
++ ld.sh r0, r12
++ ld.w r0, r12
++
++ .global st_nodisp
++st_nodisp:
++ st.b r12, r0
++ st.h r12, r0
++ st.w r12, r0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/allinsn.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.d
+--- binutils-2.17/gas/testsuite/gas/avr32/allinsn.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,2900 @@
++#as:
++#objdump: -dr
++#name: allinsn
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++[0-9a-f]* <ld_d5>:
++ *[0-9a-f]*: fe 0f 02 3e ld\.d lr,pc\[pc<<0x3\]
++ *[0-9a-f]*: e0 00 02 00 ld\.d r0,r0\[r0\]
++ *[0-9a-f]*: ea 05 02 26 ld\.d r6,r5\[r5<<0x2\]
++ *[0-9a-f]*: e8 04 02 14 ld\.d r4,r4\[r4<<0x1\]
++ *[0-9a-f]*: fc 0e 02 1e ld\.d lr,lr\[lr<<0x1\]
++ *[0-9a-f]*: e6 0d 02 2a ld\.d r10,r3\[sp<<0x2\]
++ *[0-9a-f]*: f4 06 02 28 ld\.d r8,r10\[r6<<0x2\]
++ *[0-9a-f]*: ee 09 02 02 ld\.d r2,r7\[r9\]
++
++[0-9a-f]* <ld_w5>:
++ *[0-9a-f]*: fe 0f 03 0f ld\.w pc,pc\[pc\]
++ *[0-9a-f]*: f8 0c 03 3c ld\.w r12,r12\[r12<<0x3\]
++ *[0-9a-f]*: ea 05 03 25 ld\.w r5,r5\[r5<<0x2\]
++ *[0-9a-f]*: e8 04 03 14 ld\.w r4,r4\[r4<<0x1\]
++ *[0-9a-f]*: fc 0e 03 1e ld\.w lr,lr\[lr<<0x1\]
++ *[0-9a-f]*: f2 09 03 02 ld\.w r2,r9\[r9\]
++ *[0-9a-f]*: e4 06 03 0b ld\.w r11,r2\[r6\]
++ *[0-9a-f]*: e4 0d 03 30 ld\.w r0,r2\[sp<<0x3\]
++
++[0-9a-f]* <ld_sh5>:
++ *[0-9a-f]*: fe 0f 04 0f ld\.sh pc,pc\[pc\]
++ *[0-9a-f]*: f8 0c 04 3c ld\.sh r12,r12\[r12<<0x3\]
++ *[0-9a-f]*: ea 05 04 25 ld\.sh r5,r5\[r5<<0x2\]
++ *[0-9a-f]*: e8 04 04 14 ld\.sh r4,r4\[r4<<0x1\]
++ *[0-9a-f]*: fc 0e 04 1e ld\.sh lr,lr\[lr<<0x1\]
++ *[0-9a-f]*: e0 0f 04 2b ld\.sh r11,r0\[pc<<0x2\]
++ *[0-9a-f]*: fa 06 04 2a ld\.sh r10,sp\[r6<<0x2\]
++ *[0-9a-f]*: e4 02 04 0c ld\.sh r12,r2\[r2\]
++
++[0-9a-f]* <ld_uh5>:
++ *[0-9a-f]*: fe 0f 05 0f ld\.uh pc,pc\[pc\]
++ *[0-9a-f]*: f8 0c 05 3c ld\.uh r12,r12\[r12<<0x3\]
++ *[0-9a-f]*: ea 05 05 25 ld\.uh r5,r5\[r5<<0x2\]
++ *[0-9a-f]*: e8 04 05 14 ld\.uh r4,r4\[r4<<0x1\]
++ *[0-9a-f]*: fc 0e 05 1e ld\.uh lr,lr\[lr<<0x1\]
++ *[0-9a-f]*: fe 0e 05 38 ld\.uh r8,pc\[lr<<0x3\]
++ *[0-9a-f]*: e2 0f 05 16 ld\.uh r6,r1\[pc<<0x1\]
++ *[0-9a-f]*: fc 0d 05 16 ld\.uh r6,lr\[sp<<0x1\]
++
++[0-9a-f]* <ld_sb2>:
++ *[0-9a-f]*: fe 0f 06 0f ld\.sb pc,pc\[pc\]
++ *[0-9a-f]*: f8 0c 06 3c ld\.sb r12,r12\[r12<<0x3\]
++ *[0-9a-f]*: ea 05 06 25 ld\.sb r5,r5\[r5<<0x2\]
++ *[0-9a-f]*: e8 04 06 14 ld\.sb r4,r4\[r4<<0x1\]
++ *[0-9a-f]*: fc 0e 06 1e ld\.sb lr,lr\[lr<<0x1\]
++ *[0-9a-f]*: e2 0f 06 39 ld\.sb r9,r1\[pc<<0x3\]
++ *[0-9a-f]*: e6 0b 06 10 ld\.sb r0,r3\[r11<<0x1\]
++ *[0-9a-f]*: ea 05 06 1a ld\.sb r10,r5\[r5<<0x1\]
++
++[0-9a-f]* <ld_ub5>:
++ *[0-9a-f]*: fe 0f 07 0f ld\.ub pc,pc\[pc\]
++ *[0-9a-f]*: f8 0c 07 3c ld\.ub r12,r12\[r12<<0x3\]
++ *[0-9a-f]*: ea 05 07 25 ld\.ub r5,r5\[r5<<0x2\]
++ *[0-9a-f]*: e8 04 07 14 ld\.ub r4,r4\[r4<<0x1\]
++ *[0-9a-f]*: fc 0e 07 1e ld\.ub lr,lr\[lr<<0x1\]
++ *[0-9a-f]*: f8 07 07 36 ld\.ub r6,r12\[r7<<0x3\]
++ *[0-9a-f]*: ec 0c 07 02 ld\.ub r2,r6\[r12\]
++ *[0-9a-f]*: ee 0b 07 10 ld\.ub r0,r7\[r11<<0x1\]
++
++[0-9a-f]* <st_d5>:
++ *[0-9a-f]*: fe 0f 08 0e st\.d pc\[pc\],lr
++ *[0-9a-f]*: f8 0c 08 3c st\.d r12\[r12<<0x3\],r12
++ *[0-9a-f]*: ea 05 08 26 st\.d r5\[r5<<0x2\],r6
++ *[0-9a-f]*: e8 04 08 14 st\.d r4\[r4<<0x1\],r4
++ *[0-9a-f]*: fc 0e 08 1e st\.d lr\[lr<<0x1\],lr
++ *[0-9a-f]*: e2 09 08 14 st\.d r1\[r9<<0x1\],r4
++ *[0-9a-f]*: f4 02 08 14 st\.d r10\[r2<<0x1\],r4
++ *[0-9a-f]*: f8 06 08 0e st\.d r12\[r6\],lr
++
++[0-9a-f]* <st_w5>:
++ *[0-9a-f]*: fe 0f 09 0f st\.w pc\[pc\],pc
++ *[0-9a-f]*: f8 0c 09 3c st\.w r12\[r12<<0x3\],r12
++ *[0-9a-f]*: ea 05 09 25 st\.w r5\[r5<<0x2\],r5
++ *[0-9a-f]*: e8 04 09 14 st\.w r4\[r4<<0x1\],r4
++ *[0-9a-f]*: fc 0e 09 1e st\.w lr\[lr<<0x1\],lr
++ *[0-9a-f]*: e2 0a 09 03 st\.w r1\[r10\],r3
++ *[0-9a-f]*: e0 0a 09 19 st\.w r0\[r10<<0x1\],r9
++ *[0-9a-f]*: e8 05 09 3f st\.w r4\[r5<<0x3\],pc
++
++[0-9a-f]* <st_h5>:
++ *[0-9a-f]*: fe 0f 0a 0f st\.h pc\[pc\],pc
++ *[0-9a-f]*: f8 0c 0a 3c st\.h r12\[r12<<0x3\],r12
++ *[0-9a-f]*: ea 05 0a 25 st\.h r5\[r5<<0x2\],r5
++ *[0-9a-f]*: e8 04 0a 14 st\.h r4\[r4<<0x1\],r4
++ *[0-9a-f]*: fc 0e 0a 1e st\.h lr\[lr<<0x1\],lr
++ *[0-9a-f]*: e4 09 0a 0b st\.h r2\[r9\],r11
++ *[0-9a-f]*: ea 01 0a 2c st\.h r5\[r1<<0x2\],r12
++ *[0-9a-f]*: fe 08 0a 23 st\.h pc\[r8<<0x2\],r3
++
++[0-9a-f]* <st_b5>:
++ *[0-9a-f]*: fe 0f 0b 0f st\.b pc\[pc\],pc
++ *[0-9a-f]*: f8 0c 0b 3c st\.b r12\[r12<<0x3\],r12
++ *[0-9a-f]*: ea 05 0b 25 st\.b r5\[r5<<0x2\],r5
++ *[0-9a-f]*: e8 04 0b 14 st\.b r4\[r4<<0x1\],r4
++ *[0-9a-f]*: fc 0e 0b 1e st\.b lr\[lr<<0x1\],lr
++ *[0-9a-f]*: e2 08 0b 16 st\.b r1\[r8<<0x1\],r6
++ *[0-9a-f]*: fc 0e 0b 31 st\.b lr\[lr<<0x3\],r1
++ *[0-9a-f]*: ea 00 0b 2f st\.b r5\[r0<<0x2\],pc
++
++[0-9a-f]* <divs>:
++ *[0-9a-f]*: fe 0f 0c 0f divs pc,pc,pc
++ *[0-9a-f]*: f8 0c 0c 0c divs r12,r12,r12
++ *[0-9a-f]*: ea 05 0c 05 divs r5,r5,r5
++ *[0-9a-f]*: e8 04 0c 04 divs r4,r4,r4
++ *[0-9a-f]*: fc 0e 0c 0e divs lr,lr,lr
++ *[0-9a-f]*: fe 0f 0c 03 divs r3,pc,pc
++ *[0-9a-f]*: f8 02 0c 09 divs r9,r12,r2
++ *[0-9a-f]*: e8 01 0c 07 divs r7,r4,r1
++
++[0-9a-f]* <add1>:
++ *[0-9a-f]*: 1e 0f add pc,pc
++ *[0-9a-f]*: 18 0c add r12,r12
++ *[0-9a-f]*: 0a 05 add r5,r5
++ *[0-9a-f]*: 08 04 add r4,r4
++ *[0-9a-f]*: 1c 0e add lr,lr
++ *[0-9a-f]*: 12 0c add r12,r9
++ *[0-9a-f]*: 06 06 add r6,r3
++ *[0-9a-f]*: 18 0a add r10,r12
++
++[0-9a-f]* <sub1>:
++ *[0-9a-f]*: 1e 1f sub pc,pc
++ *[0-9a-f]*: 18 1c sub r12,r12
++ *[0-9a-f]*: 0a 15 sub r5,r5
++ *[0-9a-f]*: 08 14 sub r4,r4
++ *[0-9a-f]*: 1c 1e sub lr,lr
++ *[0-9a-f]*: 0c 1e sub lr,r6
++ *[0-9a-f]*: 1a 10 sub r0,sp
++ *[0-9a-f]*: 18 16 sub r6,r12
++
++[0-9a-f]* <rsub1>:
++ *[0-9a-f]*: 1e 2f rsub pc,pc
++ *[0-9a-f]*: 18 2c rsub r12,r12
++ *[0-9a-f]*: 0a 25 rsub r5,r5
++ *[0-9a-f]*: 08 24 rsub r4,r4
++ *[0-9a-f]*: 1c 2e rsub lr,lr
++ *[0-9a-f]*: 1a 2b rsub r11,sp
++ *[0-9a-f]*: 08 27 rsub r7,r4
++ *[0-9a-f]*: 02 29 rsub r9,r1
++
++[0-9a-f]* <cp1>:
++ *[0-9a-f]*: 1e 3f cp\.w pc,pc
++ *[0-9a-f]*: 18 3c cp\.w r12,r12
++ *[0-9a-f]*: 0a 35 cp\.w r5,r5
++ *[0-9a-f]*: 08 34 cp\.w r4,r4
++ *[0-9a-f]*: 1c 3e cp\.w lr,lr
++ *[0-9a-f]*: 04 36 cp\.w r6,r2
++ *[0-9a-f]*: 12 30 cp\.w r0,r9
++ *[0-9a-f]*: 1a 33 cp\.w r3,sp
++
++[0-9a-f]* <or1>:
++ *[0-9a-f]*: 1e 4f or pc,pc
++ *[0-9a-f]*: 18 4c or r12,r12
++ *[0-9a-f]*: 0a 45 or r5,r5
++ *[0-9a-f]*: 08 44 or r4,r4
++ *[0-9a-f]*: 1c 4e or lr,lr
++ *[0-9a-f]*: 12 44 or r4,r9
++ *[0-9a-f]*: 08 4b or r11,r4
++ *[0-9a-f]*: 00 44 or r4,r0
++
++[0-9a-f]* <eor1>:
++ *[0-9a-f]*: 1e 5f eor pc,pc
++ *[0-9a-f]*: 18 5c eor r12,r12
++ *[0-9a-f]*: 0a 55 eor r5,r5
++ *[0-9a-f]*: 08 54 eor r4,r4
++ *[0-9a-f]*: 1c 5e eor lr,lr
++ *[0-9a-f]*: 16 5c eor r12,r11
++ *[0-9a-f]*: 02 50 eor r0,r1
++ *[0-9a-f]*: 1e 55 eor r5,pc
++
++[0-9a-f]* <and1>:
++ *[0-9a-f]*: 1e 6f and pc,pc
++ *[0-9a-f]*: 18 6c and r12,r12
++ *[0-9a-f]*: 0a 65 and r5,r5
++ *[0-9a-f]*: 08 64 and r4,r4
++ *[0-9a-f]*: 1c 6e and lr,lr
++ *[0-9a-f]*: 02 68 and r8,r1
++ *[0-9a-f]*: 1a 60 and r0,sp
++ *[0-9a-f]*: 0a 6a and r10,r5
++
++[0-9a-f]* <tst>:
++ *[0-9a-f]*: 1e 7f tst pc,pc
++ *[0-9a-f]*: 18 7c tst r12,r12
++ *[0-9a-f]*: 0a 75 tst r5,r5
++ *[0-9a-f]*: 08 74 tst r4,r4
++ *[0-9a-f]*: 1c 7e tst lr,lr
++ *[0-9a-f]*: 18 70 tst r0,r12
++ *[0-9a-f]*: 0c 7a tst r10,r6
++ *[0-9a-f]*: 08 7d tst sp,r4
++
++[0-9a-f]* <andn>:
++ *[0-9a-f]*: 1e 8f andn pc,pc
++ *[0-9a-f]*: 18 8c andn r12,r12
++ *[0-9a-f]*: 0a 85 andn r5,r5
++ *[0-9a-f]*: 08 84 andn r4,r4
++ *[0-9a-f]*: 1c 8e andn lr,lr
++ *[0-9a-f]*: 18 89 andn r9,r12
++ *[0-9a-f]*: 1a 8b andn r11,sp
++ *[0-9a-f]*: 0a 8c andn r12,r5
++
++[0-9a-f]* <mov3>:
++ *[0-9a-f]*: 1e 9f mov pc,pc
++ *[0-9a-f]*: 18 9c mov r12,r12
++ *[0-9a-f]*: 0a 95 mov r5,r5
++ *[0-9a-f]*: 08 94 mov r4,r4
++ *[0-9a-f]*: 1c 9e mov lr,lr
++ *[0-9a-f]*: 12 95 mov r5,r9
++ *[0-9a-f]*: 16 9b mov r11,r11
++ *[0-9a-f]*: 1c 92 mov r2,lr
++
++[0-9a-f]* <st_w1>:
++ *[0-9a-f]*: 1e af st\.w pc\+\+,pc
++ *[0-9a-f]*: 18 ac st\.w r12\+\+,r12
++ *[0-9a-f]*: 0a a5 st\.w r5\+\+,r5
++ *[0-9a-f]*: 08 a4 st\.w r4\+\+,r4
++ *[0-9a-f]*: 1c ae st\.w lr\+\+,lr
++ *[0-9a-f]*: 02 ab st\.w r1\+\+,r11
++ *[0-9a-f]*: 1a a0 st\.w sp\+\+,r0
++ *[0-9a-f]*: 1a a1 st\.w sp\+\+,r1
++
++[0-9a-f]* <st_h1>:
++ *[0-9a-f]*: 1e bf st\.h pc\+\+,pc
++ *[0-9a-f]*: 18 bc st\.h r12\+\+,r12
++ *[0-9a-f]*: 0a b5 st\.h r5\+\+,r5
++ *[0-9a-f]*: 08 b4 st\.h r4\+\+,r4
++ *[0-9a-f]*: 1c be st\.h lr\+\+,lr
++ *[0-9a-f]*: 18 bd st\.h r12\+\+,sp
++ *[0-9a-f]*: 0e be st\.h r7\+\+,lr
++ *[0-9a-f]*: 0e b4 st\.h r7\+\+,r4
++
++[0-9a-f]* <st_b1>:
++ *[0-9a-f]*: 1e cf st\.b pc\+\+,pc
++ *[0-9a-f]*: 18 cc st\.b r12\+\+,r12
++ *[0-9a-f]*: 0a c5 st\.b r5\+\+,r5
++ *[0-9a-f]*: 08 c4 st\.b r4\+\+,r4
++ *[0-9a-f]*: 1c ce st\.b lr\+\+,lr
++ *[0-9a-f]*: 12 cd st\.b r9\+\+,sp
++ *[0-9a-f]*: 02 cd st\.b r1\+\+,sp
++ *[0-9a-f]*: 00 c4 st\.b r0\+\+,r4
++
++[0-9a-f]* <st_w2>:
++ *[0-9a-f]*: 1e df st\.w --pc,pc
++ *[0-9a-f]*: 18 dc st\.w --r12,r12
++ *[0-9a-f]*: 0a d5 st\.w --r5,r5
++ *[0-9a-f]*: 08 d4 st\.w --r4,r4
++ *[0-9a-f]*: 1c de st\.w --lr,lr
++ *[0-9a-f]*: 02 d7 st\.w --r1,r7
++ *[0-9a-f]*: 06 d9 st\.w --r3,r9
++ *[0-9a-f]*: 0a d5 st\.w --r5,r5
++
++[0-9a-f]* <st_h2>:
++ *[0-9a-f]*: 1e ef st\.h --pc,pc
++ *[0-9a-f]*: 18 ec st\.h --r12,r12
++ *[0-9a-f]*: 0a e5 st\.h --r5,r5
++ *[0-9a-f]*: 08 e4 st\.h --r4,r4
++ *[0-9a-f]*: 1c ee st\.h --lr,lr
++ *[0-9a-f]*: 0a e7 st\.h --r5,r7
++ *[0-9a-f]*: 10 e8 st\.h --r8,r8
++ *[0-9a-f]*: 0e e2 st\.h --r7,r2
++
++[0-9a-f]* <st_b2>:
++ *[0-9a-f]*: 1e ff st\.b --pc,pc
++ *[0-9a-f]*: 18 fc st\.b --r12,r12
++ *[0-9a-f]*: 0a f5 st\.b --r5,r5
++ *[0-9a-f]*: 08 f4 st\.b --r4,r4
++ *[0-9a-f]*: 1c fe st\.b --lr,lr
++ *[0-9a-f]*: 1a fd st\.b --sp,sp
++ *[0-9a-f]*: 1a fb st\.b --sp,r11
++ *[0-9a-f]*: 08 f5 st\.b --r4,r5
++
++[0-9a-f]* <ld_w1>:
++ *[0-9a-f]*: 1f 0f ld\.w pc,pc\+\+
++ *[0-9a-f]*: 19 0c ld\.w r12,r12\+\+
++ *[0-9a-f]*: 0b 05 ld\.w r5,r5\+\+
++ *[0-9a-f]*: 09 04 ld\.w r4,r4\+\+
++ *[0-9a-f]*: 1d 0e ld\.w lr,lr\+\+
++ *[0-9a-f]*: 0f 03 ld\.w r3,r7\+\+
++ *[0-9a-f]*: 1d 03 ld\.w r3,lr\+\+
++ *[0-9a-f]*: 0b 0c ld\.w r12,r5\+\+
++
++[0-9a-f]* <ld_sh1>:
++ *[0-9a-f]*: 1f 1f ld\.sh pc,pc\+\+
++ *[0-9a-f]*: 19 1c ld\.sh r12,r12\+\+
++ *[0-9a-f]*: 0b 15 ld\.sh r5,r5\+\+
++ *[0-9a-f]*: 09 14 ld\.sh r4,r4\+\+
++ *[0-9a-f]*: 1d 1e ld\.sh lr,lr\+\+
++ *[0-9a-f]*: 05 1b ld\.sh r11,r2\+\+
++ *[0-9a-f]*: 11 12 ld\.sh r2,r8\+\+
++ *[0-9a-f]*: 0d 17 ld\.sh r7,r6\+\+
++
++[0-9a-f]* <ld_uh1>:
++ *[0-9a-f]*: 1f 2f ld\.uh pc,pc\+\+
++ *[0-9a-f]*: 19 2c ld\.uh r12,r12\+\+
++ *[0-9a-f]*: 0b 25 ld\.uh r5,r5\+\+
++ *[0-9a-f]*: 09 24 ld\.uh r4,r4\+\+
++ *[0-9a-f]*: 1d 2e ld\.uh lr,lr\+\+
++ *[0-9a-f]*: 0f 26 ld\.uh r6,r7\+\+
++ *[0-9a-f]*: 17 2a ld\.uh r10,r11\+\+
++ *[0-9a-f]*: 09 2e ld\.uh lr,r4\+\+
++
++[0-9a-f]* <ld_ub1>:
++ *[0-9a-f]*: 1f 3f ld\.ub pc,pc\+\+
++ *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
++ *[0-9a-f]*: 0b 35 ld\.ub r5,r5\+\+
++ *[0-9a-f]*: 09 34 ld\.ub r4,r4\+\+
++ *[0-9a-f]*: 1d 3e ld\.ub lr,lr\+\+
++ *[0-9a-f]*: 1d 38 ld\.ub r8,lr\+\+
++ *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
++ *[0-9a-f]*: 15 3b ld\.ub r11,r10\+\+
++
++[0-9a-f]* <ld_w2>:
++ *[0-9a-f]*: 1f 4f ld\.w pc,--pc
++ *[0-9a-f]*: 19 4c ld\.w r12,--r12
++ *[0-9a-f]*: 0b 45 ld\.w r5,--r5
++ *[0-9a-f]*: 09 44 ld\.w r4,--r4
++ *[0-9a-f]*: 1d 4e ld\.w lr,--lr
++ *[0-9a-f]*: 1d 4a ld\.w r10,--lr
++ *[0-9a-f]*: 13 4c ld\.w r12,--r9
++ *[0-9a-f]*: 0b 46 ld\.w r6,--r5
++
++[0-9a-f]* <ld_sh2>:
++ *[0-9a-f]*: 1f 5f ld\.sh pc,--pc
++ *[0-9a-f]*: 19 5c ld\.sh r12,--r12
++ *[0-9a-f]*: 0b 55 ld\.sh r5,--r5
++ *[0-9a-f]*: 09 54 ld\.sh r4,--r4
++ *[0-9a-f]*: 1d 5e ld\.sh lr,--lr
++ *[0-9a-f]*: 15 5f ld\.sh pc,--r10
++ *[0-9a-f]*: 07 56 ld\.sh r6,--r3
++ *[0-9a-f]*: 0d 54 ld\.sh r4,--r6
++
++[0-9a-f]* <ld_uh2>:
++ *[0-9a-f]*: 1f 6f ld\.uh pc,--pc
++ *[0-9a-f]*: 19 6c ld\.uh r12,--r12
++ *[0-9a-f]*: 0b 65 ld\.uh r5,--r5
++ *[0-9a-f]*: 09 64 ld\.uh r4,--r4
++ *[0-9a-f]*: 1d 6e ld\.uh lr,--lr
++ *[0-9a-f]*: 05 63 ld\.uh r3,--r2
++ *[0-9a-f]*: 01 61 ld\.uh r1,--r0
++ *[0-9a-f]*: 13 62 ld\.uh r2,--r9
++
++[0-9a-f]* <ld_ub2>:
++ *[0-9a-f]*: 1f 7f ld\.ub pc,--pc
++ *[0-9a-f]*: 19 7c ld\.ub r12,--r12
++ *[0-9a-f]*: 0b 75 ld\.ub r5,--r5
++ *[0-9a-f]*: 09 74 ld\.ub r4,--r4
++ *[0-9a-f]*: 1d 7e ld\.ub lr,--lr
++ *[0-9a-f]*: 03 71 ld\.ub r1,--r1
++ *[0-9a-f]*: 0d 70 ld\.ub r0,--r6
++ *[0-9a-f]*: 0f 72 ld\.ub r2,--r7
++
++[0-9a-f]* <ld_ub3>:
++ *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
++ *[0-9a-f]*: 19 fc ld\.ub r12,r12\[0x7\]
++ *[0-9a-f]*: 0b c5 ld\.ub r5,r5\[0x4\]
++ *[0-9a-f]*: 09 b4 ld\.ub r4,r4\[0x3\]
++ *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
++ *[0-9a-f]*: 13 e6 ld\.ub r6,r9\[0x6\]
++ *[0-9a-f]*: 1d c2 ld\.ub r2,lr\[0x4\]
++ *[0-9a-f]*: 11 81 ld\.ub r1,r8\[0x0\]
++
++[0-9a-f]* <sub3_sp>:
++ *[0-9a-f]*: 20 0d sub sp,0
++ *[0-9a-f]*: 2f fd sub sp,-4
++ *[0-9a-f]*: 28 0d sub sp,-512
++ *[0-9a-f]*: 27 fd sub sp,508
++ *[0-9a-f]*: 20 1d sub sp,4
++ *[0-9a-f]*: 20 bd sub sp,44
++ *[0-9a-f]*: 20 2d sub sp,8
++ *[0-9a-f]*: 25 7d sub sp,348
++
++[0-9a-f]* <sub3>:
++ *[0-9a-f]*: 20 0f sub pc,0
++ *[0-9a-f]*: 2f fc sub r12,-1
++ *[0-9a-f]*: 28 05 sub r5,-128
++ *[0-9a-f]*: 27 f4 sub r4,127
++ *[0-9a-f]*: 20 1e sub lr,1
++ *[0-9a-f]*: 2d 76 sub r6,-41
++ *[0-9a-f]*: 22 54 sub r4,37
++ *[0-9a-f]*: 23 8c sub r12,56
++
++[0-9a-f]* <mov1>:
++ *[0-9a-f]*: 30 0f mov pc,0
++ *[0-9a-f]*: 3f fc mov r12,-1
++ *[0-9a-f]*: 38 05 mov r5,-128
++ *[0-9a-f]*: 37 f4 mov r4,127
++ *[0-9a-f]*: 30 1e mov lr,1
++ *[0-9a-f]*: 30 ef mov pc,14
++ *[0-9a-f]*: 39 c6 mov r6,-100
++ *[0-9a-f]*: 38 6e mov lr,-122
++
++[0-9a-f]* <lddsp>:
++ *[0-9a-f]*: 40 0f lddsp pc,sp\[0x0\]
++ *[0-9a-f]*: 47 fc lddsp r12,sp\[0x1fc\]
++ *[0-9a-f]*: 44 05 lddsp r5,sp\[0x100\]
++ *[0-9a-f]*: 43 f4 lddsp r4,sp\[0xfc\]
++ *[0-9a-f]*: 40 1e lddsp lr,sp\[0x4\]
++ *[0-9a-f]*: 44 0e lddsp lr,sp\[0x100\]
++ *[0-9a-f]*: 40 5c lddsp r12,sp\[0x14\]
++ *[0-9a-f]*: 47 69 lddsp r9,sp\[0x1d8\]
++
++[0-9a-f]* <lddpc>:
++ *[0-9a-f]*: 48 0f lddpc pc,[0-9a-f]* <.*>
++ *[0-9a-f]*: 4f f0 lddpc r0,[0-9a-f]* <.*>
++ *[0-9a-f]*: 4c 08 lddpc r8,[0-9a-f]* <.*>
++ *[0-9a-f]*: 4b f7 lddpc r7,[0-9a-f]* <.*>
++ *[0-9a-f]*: 48 1e lddpc lr,[0-9a-f]* <.*>
++ *[0-9a-f]*: 4f 6d lddpc sp,[0-9a-f]* <.*>
++ *[0-9a-f]*: 49 e6 lddpc r6,[0-9a-f]* <.*>
++ *[0-9a-f]*: 48 7b lddpc r11,[0-9a-f]* <.*>
++
++[0-9a-f]* <stdsp>:
++ *[0-9a-f]*: 50 0f stdsp sp\[0x0\],pc
++ *[0-9a-f]*: 57 fc stdsp sp\[0x1fc\],r12
++ *[0-9a-f]*: 54 05 stdsp sp\[0x100\],r5
++ *[0-9a-f]*: 53 f4 stdsp sp\[0xfc\],r4
++ *[0-9a-f]*: 50 1e stdsp sp\[0x4\],lr
++ *[0-9a-f]*: 54 cf stdsp sp\[0x130\],pc
++ *[0-9a-f]*: 54 00 stdsp sp\[0x100\],r0
++ *[0-9a-f]*: 55 45 stdsp sp\[0x150\],r5
++
++[0-9a-f]* <cp2>:
++ *[0-9a-f]*: 58 0f cp.w pc,0
++ *[0-9a-f]*: 5b fc cp.w r12,-1
++ *[0-9a-f]*: 5a 05 cp.w r5,-32
++ *[0-9a-f]*: 59 f4 cp.w r4,31
++ *[0-9a-f]*: 58 1e cp.w lr,1
++ *[0-9a-f]*: 58 38 cp.w r8,3
++ *[0-9a-f]*: 59 0e cp.w lr,16
++ *[0-9a-f]*: 5a 67 cp.w r7,-26
++
++[0-9a-f]* <acr>:
++ *[0-9a-f]*: 5c 0f acr pc
++ *[0-9a-f]*: 5c 0c acr r12
++ *[0-9a-f]*: 5c 05 acr r5
++ *[0-9a-f]*: 5c 04 acr r4
++ *[0-9a-f]*: 5c 0e acr lr
++ *[0-9a-f]*: 5c 02 acr r2
++ *[0-9a-f]*: 5c 0c acr r12
++ *[0-9a-f]*: 5c 0f acr pc
++
++[0-9a-f]* <scr>:
++ *[0-9a-f]*: 5c 1f scr pc
++ *[0-9a-f]*: 5c 1c scr r12
++ *[0-9a-f]*: 5c 15 scr r5
++ *[0-9a-f]*: 5c 14 scr r4
++ *[0-9a-f]*: 5c 1e scr lr
++ *[0-9a-f]*: 5c 1f scr pc
++ *[0-9a-f]*: 5c 16 scr r6
++ *[0-9a-f]*: 5c 11 scr r1
++
++[0-9a-f]* <cpc0>:
++ *[0-9a-f]*: 5c 2f cpc pc
++ *[0-9a-f]*: 5c 2c cpc r12
++ *[0-9a-f]*: 5c 25 cpc r5
++ *[0-9a-f]*: 5c 24 cpc r4
++ *[0-9a-f]*: 5c 2e cpc lr
++ *[0-9a-f]*: 5c 2f cpc pc
++ *[0-9a-f]*: 5c 24 cpc r4
++ *[0-9a-f]*: 5c 29 cpc r9
++
++[0-9a-f]* <neg>:
++ *[0-9a-f]*: 5c 3f neg pc
++ *[0-9a-f]*: 5c 3c neg r12
++ *[0-9a-f]*: 5c 35 neg r5
++ *[0-9a-f]*: 5c 34 neg r4
++ *[0-9a-f]*: 5c 3e neg lr
++ *[0-9a-f]*: 5c 37 neg r7
++ *[0-9a-f]*: 5c 31 neg r1
++ *[0-9a-f]*: 5c 39 neg r9
++
++[0-9a-f]* <abs>:
++ *[0-9a-f]*: 5c 4f abs pc
++ *[0-9a-f]*: 5c 4c abs r12
++ *[0-9a-f]*: 5c 45 abs r5
++ *[0-9a-f]*: 5c 44 abs r4
++ *[0-9a-f]*: 5c 4e abs lr
++ *[0-9a-f]*: 5c 46 abs r6
++ *[0-9a-f]*: 5c 46 abs r6
++ *[0-9a-f]*: 5c 44 abs r4
++
++[0-9a-f]* <castu_b>:
++ *[0-9a-f]*: 5c 5f castu\.b pc
++ *[0-9a-f]*: 5c 5c castu\.b r12
++ *[0-9a-f]*: 5c 55 castu\.b r5
++ *[0-9a-f]*: 5c 54 castu\.b r4
++ *[0-9a-f]*: 5c 5e castu\.b lr
++ *[0-9a-f]*: 5c 57 castu\.b r7
++ *[0-9a-f]*: 5c 5d castu\.b sp
++ *[0-9a-f]*: 5c 59 castu\.b r9
++
++[0-9a-f]* <casts_b>:
++ *[0-9a-f]*: 5c 6f casts\.b pc
++ *[0-9a-f]*: 5c 6c casts\.b r12
++ *[0-9a-f]*: 5c 65 casts\.b r5
++ *[0-9a-f]*: 5c 64 casts\.b r4
++ *[0-9a-f]*: 5c 6e casts\.b lr
++ *[0-9a-f]*: 5c 6b casts\.b r11
++ *[0-9a-f]*: 5c 61 casts\.b r1
++ *[0-9a-f]*: 5c 6a casts\.b r10
++
++[0-9a-f]* <castu_h>:
++ *[0-9a-f]*: 5c 7f castu\.h pc
++ *[0-9a-f]*: 5c 7c castu\.h r12
++ *[0-9a-f]*: 5c 75 castu\.h r5
++ *[0-9a-f]*: 5c 74 castu\.h r4
++ *[0-9a-f]*: 5c 7e castu\.h lr
++ *[0-9a-f]*: 5c 7a castu\.h r10
++ *[0-9a-f]*: 5c 7b castu\.h r11
++ *[0-9a-f]*: 5c 71 castu\.h r1
++
++[0-9a-f]* <casts_h>:
++ *[0-9a-f]*: 5c 8f casts\.h pc
++ *[0-9a-f]*: 5c 8c casts\.h r12
++ *[0-9a-f]*: 5c 85 casts\.h r5
++ *[0-9a-f]*: 5c 84 casts\.h r4
++ *[0-9a-f]*: 5c 8e casts\.h lr
++ *[0-9a-f]*: 5c 80 casts\.h r0
++ *[0-9a-f]*: 5c 85 casts\.h r5
++ *[0-9a-f]*: 5c 89 casts\.h r9
++
++[0-9a-f]* <brev>:
++ *[0-9a-f]*: 5c 9f brev pc
++ *[0-9a-f]*: 5c 9c brev r12
++ *[0-9a-f]*: 5c 95 brev r5
++ *[0-9a-f]*: 5c 94 brev r4
++ *[0-9a-f]*: 5c 9e brev lr
++ *[0-9a-f]*: 5c 95 brev r5
++ *[0-9a-f]*: 5c 9a brev r10
++ *[0-9a-f]*: 5c 98 brev r8
++
++[0-9a-f]* <swap_h>:
++ *[0-9a-f]*: 5c af swap\.h pc
++ *[0-9a-f]*: 5c ac swap\.h r12
++ *[0-9a-f]*: 5c a5 swap\.h r5
++ *[0-9a-f]*: 5c a4 swap\.h r4
++ *[0-9a-f]*: 5c ae swap\.h lr
++ *[0-9a-f]*: 5c a7 swap\.h r7
++ *[0-9a-f]*: 5c a0 swap\.h r0
++ *[0-9a-f]*: 5c a8 swap\.h r8
++
++[0-9a-f]* <swap_b>:
++ *[0-9a-f]*: 5c bf swap\.b pc
++ *[0-9a-f]*: 5c bc swap\.b r12
++ *[0-9a-f]*: 5c b5 swap\.b r5
++ *[0-9a-f]*: 5c b4 swap\.b r4
++ *[0-9a-f]*: 5c be swap\.b lr
++ *[0-9a-f]*: 5c ba swap\.b r10
++ *[0-9a-f]*: 5c bc swap\.b r12
++ *[0-9a-f]*: 5c b1 swap\.b r1
++
++[0-9a-f]* <swap_bh>:
++ *[0-9a-f]*: 5c cf swap\.bh pc
++ *[0-9a-f]*: 5c cc swap\.bh r12
++ *[0-9a-f]*: 5c c5 swap\.bh r5
++ *[0-9a-f]*: 5c c4 swap\.bh r4
++ *[0-9a-f]*: 5c ce swap\.bh lr
++ *[0-9a-f]*: 5c c9 swap\.bh r9
++ *[0-9a-f]*: 5c c4 swap\.bh r4
++ *[0-9a-f]*: 5c c1 swap\.bh r1
++
++[0-9a-f]* <One_s_compliment>:
++ *[0-9a-f]*: 5c df com pc
++ *[0-9a-f]*: 5c dc com r12
++ *[0-9a-f]*: 5c d5 com r5
++ *[0-9a-f]*: 5c d4 com r4
++ *[0-9a-f]*: 5c de com lr
++ *[0-9a-f]*: 5c d2 com r2
++ *[0-9a-f]*: 5c d2 com r2
++ *[0-9a-f]*: 5c d7 com r7
++
++[0-9a-f]* <tnbz>:
++ *[0-9a-f]*: 5c ef tnbz pc
++ *[0-9a-f]*: 5c ec tnbz r12
++ *[0-9a-f]*: 5c e5 tnbz r5
++ *[0-9a-f]*: 5c e4 tnbz r4
++ *[0-9a-f]*: 5c ee tnbz lr
++ *[0-9a-f]*: 5c e8 tnbz r8
++ *[0-9a-f]*: 5c ec tnbz r12
++ *[0-9a-f]*: 5c ef tnbz pc
++
++[0-9a-f]* <rol>:
++ *[0-9a-f]*: 5c ff rol pc
++ *[0-9a-f]*: 5c fc rol r12
++ *[0-9a-f]*: 5c f5 rol r5
++ *[0-9a-f]*: 5c f4 rol r4
++ *[0-9a-f]*: 5c fe rol lr
++ *[0-9a-f]*: 5c fa rol r10
++ *[0-9a-f]*: 5c f9 rol r9
++ *[0-9a-f]*: 5c f5 rol r5
++
++[0-9a-f]* <ror>:
++ *[0-9a-f]*: 5d 0f ror pc
++ *[0-9a-f]*: 5d 0c ror r12
++ *[0-9a-f]*: 5d 05 ror r5
++ *[0-9a-f]*: 5d 04 ror r4
++ *[0-9a-f]*: 5d 0e ror lr
++ *[0-9a-f]*: 5d 08 ror r8
++ *[0-9a-f]*: 5d 04 ror r4
++ *[0-9a-f]*: 5d 07 ror r7
++
++[0-9a-f]* <icall>:
++ *[0-9a-f]*: 5d 1f icall pc
++ *[0-9a-f]*: 5d 1c icall r12
++ *[0-9a-f]*: 5d 15 icall r5
++ *[0-9a-f]*: 5d 14 icall r4
++ *[0-9a-f]*: 5d 1e icall lr
++ *[0-9a-f]*: 5d 13 icall r3
++ *[0-9a-f]*: 5d 11 icall r1
++ *[0-9a-f]*: 5d 13 icall r3
++
++[0-9a-f]* <mustr>:
++ *[0-9a-f]*: 5d 2f mustr pc
++ *[0-9a-f]*: 5d 2c mustr r12
++ *[0-9a-f]*: 5d 25 mustr r5
++ *[0-9a-f]*: 5d 24 mustr r4
++ *[0-9a-f]*: 5d 2e mustr lr
++ *[0-9a-f]*: 5d 21 mustr r1
++ *[0-9a-f]*: 5d 24 mustr r4
++ *[0-9a-f]*: 5d 2c mustr r12
++
++[0-9a-f]* <musfr>:
++ *[0-9a-f]*: 5d 3f musfr pc
++ *[0-9a-f]*: 5d 3c musfr r12
++ *[0-9a-f]*: 5d 35 musfr r5
++ *[0-9a-f]*: 5d 34 musfr r4
++ *[0-9a-f]*: 5d 3e musfr lr
++ *[0-9a-f]*: 5d 3b musfr r11
++ *[0-9a-f]*: 5d 3c musfr r12
++ *[0-9a-f]*: 5d 32 musfr r2
++
++[0-9a-f]* <ret_cond>:
++ *[0-9a-f]*: 5e 0f reteq 1
++ *[0-9a-f]*: 5e fc retal r12
++ *[0-9a-f]*: 5e 85 retls r5
++ *[0-9a-f]*: 5e 74 retpl r4
++ *[0-9a-f]*: 5e 1e retne -1
++ *[0-9a-f]*: 5e 90 retgt r0
++ *[0-9a-f]*: 5e 9c retgt r12
++ *[0-9a-f]*: 5e 4a retge r10
++
++[0-9a-f]* <sr_cond>:
++ *[0-9a-f]*: 5f 0f sreq pc
++ *[0-9a-f]*: 5f fc sral r12
++ *[0-9a-f]*: 5f 85 srls r5
++ *[0-9a-f]*: 5f 74 srpl r4
++ *[0-9a-f]*: 5f 1e srne lr
++ *[0-9a-f]*: 5f 50 srlt r0
++ *[0-9a-f]*: 5f fd sral sp
++ *[0-9a-f]*: 5f 49 srge r9
++
++[0-9a-f]* <ld_w3>:
++ *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
++ *[0-9a-f]*: 79 fc ld\.w r12,r12\[0x7c\]
++ *[0-9a-f]*: 6b 05 ld\.w r5,r5\[0x40\]
++ *[0-9a-f]*: 68 f4 ld\.w r4,r4\[0x3c\]
++ *[0-9a-f]*: 7c 1e ld\.w lr,lr\[0x4\]
++ *[0-9a-f]*: 64 dd ld\.w sp,r2\[0x34\]
++ *[0-9a-f]*: 62 29 ld\.w r9,r1\[0x8\]
++ *[0-9a-f]*: 7a f5 ld\.w r5,sp\[0x3c\]
++
++[0-9a-f]* <ld_sh3>:
++ *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
++ *[0-9a-f]*: 98 7c ld\.sh r12,r12\[0xe\]
++ *[0-9a-f]*: 8a 45 ld\.sh r5,r5\[0x8\]
++ *[0-9a-f]*: 88 34 ld\.sh r4,r4\[0x6\]
++ *[0-9a-f]*: 9c 1e ld\.sh lr,lr\[0x2\]
++ *[0-9a-f]*: 84 44 ld\.sh r4,r2\[0x8\]
++ *[0-9a-f]*: 9c 5d ld\.sh sp,lr\[0xa\]
++ *[0-9a-f]*: 96 12 ld\.sh r2,r11\[0x2\]
++
++[0-9a-f]* <ld_uh3>:
++ *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
++ *[0-9a-f]*: 98 fc ld\.uh r12,r12\[0xe\]
++ *[0-9a-f]*: 8a c5 ld\.uh r5,r5\[0x8\]
++ *[0-9a-f]*: 88 b4 ld\.uh r4,r4\[0x6\]
++ *[0-9a-f]*: 9c 9e ld\.uh lr,lr\[0x2\]
++ *[0-9a-f]*: 80 da ld\.uh r10,r0\[0xa\]
++ *[0-9a-f]*: 96 c8 ld\.uh r8,r11\[0x8\]
++ *[0-9a-f]*: 84 ea ld\.uh r10,r2\[0xc\]
++
++[0-9a-f]* <st_w3>:
++ *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
++ *[0-9a-f]*: 99 fc st\.w r12\[0x3c\],r12
++ *[0-9a-f]*: 8b 85 st\.w r5\[0x20\],r5
++ *[0-9a-f]*: 89 74 st\.w r4\[0x1c\],r4
++ *[0-9a-f]*: 9d 1e st\.w lr\[0x4\],lr
++ *[0-9a-f]*: 8f bb st\.w r7\[0x2c\],r11
++ *[0-9a-f]*: 85 66 st\.w r2\[0x18\],r6
++ *[0-9a-f]*: 89 39 st\.w r4\[0xc\],r9
++
++[0-9a-f]* <st_h3>:
++ *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
++ *[0-9a-f]*: b8 7c st\.h r12\[0xe\],r12
++ *[0-9a-f]*: aa 45 st\.h r5\[0x8\],r5
++ *[0-9a-f]*: a8 34 st\.h r4\[0x6\],r4
++ *[0-9a-f]*: bc 1e st\.h lr\[0x2\],lr
++ *[0-9a-f]*: bc 5c st\.h lr\[0xa\],r12
++ *[0-9a-f]*: ac 20 st\.h r6\[0x4\],r0
++ *[0-9a-f]*: aa 6d st\.h r5\[0xc\],sp
++
++[0-9a-f]* <st_b3>:
++ *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
++ *[0-9a-f]*: b8 fc st\.b r12\[0x7\],r12
++ *[0-9a-f]*: aa c5 st\.b r5\[0x4\],r5
++ *[0-9a-f]*: a8 b4 st\.b r4\[0x3\],r4
++ *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
++ *[0-9a-f]*: b8 e9 st\.b r12\[0x6\],r9
++ *[0-9a-f]*: a4 be st\.b r2\[0x3\],lr
++ *[0-9a-f]*: a2 bb st\.b r1\[0x3\],r11
++
++[0-9a-f]* <ldd>:
++ *[0-9a-f]*: bf 00 ld\.d r0,pc
++ *[0-9a-f]*: b9 0e ld\.d lr,r12
++ *[0-9a-f]*: ab 08 ld\.d r8,r5
++ *[0-9a-f]*: a9 06 ld\.d r6,r4
++ *[0-9a-f]*: bd 02 ld\.d r2,lr
++ *[0-9a-f]*: af 0e ld\.d lr,r7
++ *[0-9a-f]*: a9 04 ld\.d r4,r4
++ *[0-9a-f]*: bf 0e ld\.d lr,pc
++
++[0-9a-f]* <ldd_postinc>:
++ *[0-9a-f]*: bf 01 ld\.d r0,pc\+\+
++ *[0-9a-f]*: b9 0f ld\.d lr,r12\+\+
++ *[0-9a-f]*: ab 09 ld\.d r8,r5\+\+
++ *[0-9a-f]*: a9 07 ld\.d r6,r4\+\+
++ *[0-9a-f]*: bd 03 ld\.d r2,lr\+\+
++ *[0-9a-f]*: ab 0f ld\.d lr,r5\+\+
++ *[0-9a-f]*: b7 0d ld\.d r12,r11\+\+
++ *[0-9a-f]*: b9 03 ld\.d r2,r12\+\+
++
++[0-9a-f]* <ldd_predec>:
++ *[0-9a-f]*: bf 10 ld\.d r0,--pc
++ *[0-9a-f]*: b9 1e ld\.d lr,--r12
++ *[0-9a-f]*: ab 18 ld\.d r8,--r5
++ *[0-9a-f]*: a9 16 ld\.d r6,--r4
++ *[0-9a-f]*: bd 12 ld\.d r2,--lr
++ *[0-9a-f]*: a1 18 ld\.d r8,--r0
++ *[0-9a-f]*: bf 1a ld\.d r10,--pc
++ *[0-9a-f]*: a9 12 ld\.d r2,--r4
++
++[0-9a-f]* <std>:
++ *[0-9a-f]*: bf 11 st\.d pc,r0
++ *[0-9a-f]*: b9 1f st\.d r12,lr
++ *[0-9a-f]*: ab 19 st\.d r5,r8
++ *[0-9a-f]*: a9 17 st\.d r4,r6
++ *[0-9a-f]*: bd 13 st\.d lr,r2
++ *[0-9a-f]*: a1 1d st\.d r0,r12
++ *[0-9a-f]*: bb 15 st\.d sp,r4
++ *[0-9a-f]*: b9 1d st\.d r12,r12
++
++[0-9a-f]* <std_postinc>:
++ *[0-9a-f]*: bf 20 st\.d pc\+\+,r0
++ *[0-9a-f]*: b9 2e st\.d r12\+\+,lr
++ *[0-9a-f]*: ab 28 st\.d r5\+\+,r8
++ *[0-9a-f]*: a9 26 st\.d r4\+\+,r6
++ *[0-9a-f]*: bd 22 st\.d lr\+\+,r2
++ *[0-9a-f]*: bb 26 st\.d sp\+\+,r6
++ *[0-9a-f]*: b5 26 st\.d r10\+\+,r6
++ *[0-9a-f]*: af 22 st\.d r7\+\+,r2
++
++[0-9a-f]* <std_predec>:
++ *[0-9a-f]*: bf 21 st\.d --pc,r0
++ *[0-9a-f]*: b9 2f st\.d --r12,lr
++ *[0-9a-f]*: ab 29 st\.d --r5,r8
++ *[0-9a-f]*: a9 27 st\.d --r4,r6
++ *[0-9a-f]*: bd 23 st\.d --lr,r2
++ *[0-9a-f]*: a7 27 st\.d --r3,r6
++ *[0-9a-f]*: bd 23 st\.d --lr,r2
++ *[0-9a-f]*: a1 25 st\.d --r0,r4
++
++[0-9a-f]* <mul>:
++ *[0-9a-f]*: bf 3f mul pc,pc
++ *[0-9a-f]*: b9 3c mul r12,r12
++ *[0-9a-f]*: ab 35 mul r5,r5
++ *[0-9a-f]*: a9 34 mul r4,r4
++ *[0-9a-f]*: bd 3e mul lr,lr
++ *[0-9a-f]*: bd 3a mul r10,lr
++ *[0-9a-f]*: b1 30 mul r0,r8
++ *[0-9a-f]*: ab 38 mul r8,r5
++
++[0-9a-f]* <asr_imm5>:
++ *[0-9a-f]*: a1 4f asr pc,0x0
++ *[0-9a-f]*: bf 5c asr r12,0x1f
++ *[0-9a-f]*: b1 45 asr r5,0x10
++ *[0-9a-f]*: af 54 asr r4,0xf
++ *[0-9a-f]*: a1 5e asr lr,0x1
++ *[0-9a-f]*: b7 56 asr r6,0x17
++ *[0-9a-f]*: b3 46 asr r6,0x12
++ *[0-9a-f]*: a9 45 asr r5,0x8
++
++[0-9a-f]* <lsl_imm5>:
++ *[0-9a-f]*: a1 6f lsl pc,0x0
++ *[0-9a-f]*: bf 7c lsl r12,0x1f
++ *[0-9a-f]*: b1 65 lsl r5,0x10
++ *[0-9a-f]*: af 74 lsl r4,0xf
++ *[0-9a-f]*: a1 7e lsl lr,0x1
++ *[0-9a-f]*: ad 7c lsl r12,0xd
++ *[0-9a-f]*: b1 66 lsl r6,0x10
++ *[0-9a-f]*: b9 71 lsl r1,0x19
++
++[0-9a-f]* <lsr_imm5>:
++ *[0-9a-f]*: a1 8f lsr pc,0x0
++ *[0-9a-f]*: bf 9c lsr r12,0x1f
++ *[0-9a-f]*: b1 85 lsr r5,0x10
++ *[0-9a-f]*: af 94 lsr r4,0xf
++ *[0-9a-f]*: a1 9e lsr lr,0x1
++ *[0-9a-f]*: a1 90 lsr r0,0x1
++ *[0-9a-f]*: ab 88 lsr r8,0xa
++ *[0-9a-f]*: bb 87 lsr r7,0x1a
++
++[0-9a-f]* <sbr>:
++ *[0-9a-f]*: a1 af sbr pc,0x0
++ *[0-9a-f]*: bf bc sbr r12,0x1f
++ *[0-9a-f]*: b1 a5 sbr r5,0x10
++ *[0-9a-f]*: af b4 sbr r4,0xf
++ *[0-9a-f]*: a1 be sbr lr,0x1
++ *[0-9a-f]*: bf b8 sbr r8,0x1f
++ *[0-9a-f]*: b7 a6 sbr r6,0x16
++ *[0-9a-f]*: b7 b1 sbr r1,0x17
++
++[0-9a-f]* <cbr>:
++ *[0-9a-f]*: a1 cf cbr pc,0x0
++ *[0-9a-f]*: bf dc cbr r12,0x1f
++ *[0-9a-f]*: b1 c5 cbr r5,0x10
++ *[0-9a-f]*: af d4 cbr r4,0xf
++ *[0-9a-f]*: a1 de cbr lr,0x1
++ *[0-9a-f]*: ab cc cbr r12,0xa
++ *[0-9a-f]*: b7 c7 cbr r7,0x16
++ *[0-9a-f]*: a9 d8 cbr r8,0x9
++
++[0-9a-f]* <brc1>:
++ *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
++ *[0-9a-f]*: cf f7 brpl [0-9a-f]* <.*>
++ *[0-9a-f]*: c8 04 brge [0-9a-f]* <.*>
++ *[0-9a-f]*: c7 f3 brcs [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
++ *[0-9a-f]*: c7 33 brcs [0-9a-f]* <.*>
++ *[0-9a-f]*: cf 70 breq [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 60 breq [0-9a-f]* <.*>
++
++[0-9a-f]* <rjmp>:
++ *[0-9a-f]*: c0 08 rjmp [0-9a-f]* <.*>
++ *[0-9a-f]*: cf fb rjmp [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 0a rjmp [0-9a-f]* <.*>
++ *[0-9a-f]*: cf f9 rjmp [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 18 rjmp [0-9a-f]* <.*>
++ *[0-9a-f]*: c1 fa rjmp [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 78 rjmp [0-9a-f]* <.*>
++ *[0-9a-f]*: cf ea rjmp [0-9a-f]* <.*>
++
++[0-9a-f]* <rcall1>:
++ *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 0e rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: cf fd rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: c6 cc rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: cf 7e rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: c1 ae rcall [0-9a-f]* <.*>
++
++[0-9a-f]* <acall>:
++ *[0-9a-f]*: d0 00 acall 0x0
++ *[0-9a-f]*: df f0 acall 0x3fc
++ *[0-9a-f]*: d8 00 acall 0x200
++ *[0-9a-f]*: d7 f0 acall 0x1fc
++ *[0-9a-f]*: d0 10 acall 0x4
++ *[0-9a-f]*: d5 90 acall 0x164
++ *[0-9a-f]*: d4 c0 acall 0x130
++ *[0-9a-f]*: d2 b0 acall 0xac
++
++[0-9a-f]* <scall>:
++ *[0-9a-f]*: d7 33 scall
++ *[0-9a-f]*: d7 33 scall
++ *[0-9a-f]*: d7 33 scall
++ *[0-9a-f]*: d7 33 scall
++ *[0-9a-f]*: d7 33 scall
++ *[0-9a-f]*: d7 33 scall
++ *[0-9a-f]*: d7 33 scall
++ *[0-9a-f]*: d7 33 scall
++
++[0-9a-f]* <popm>:
++ *[0-9a-f]*: d8 02 popm pc
++ *[0-9a-f]*: dd fa popm r0-r11,pc,r12=-1
++ *[0-9a-f]*: d4 02 popm lr
++ *[0-9a-f]*: db fa popm r0-r11,pc,r12=1
++ *[0-9a-f]*: d0 12 popm r0-r3
++ *[0-9a-f]*: d8 e2 popm r4-r10,pc
++ *[0-9a-f]*: d9 1a popm r0-r3,r11,pc,r12=0
++ *[0-9a-f]*: d7 b2 popm r0-r7,r10-r12,lr
++
++[0-9a-f]* <pushm>:
++ *[0-9a-f]*: d8 01 pushm pc
++ *[0-9a-f]*: df f1 pushm r0-r12,lr-pc
++ *[0-9a-f]*: d8 01 pushm pc
++ *[0-9a-f]*: d7 f1 pushm r0-r12,lr
++ *[0-9a-f]*: d0 11 pushm r0-r3
++ *[0-9a-f]*: dc c1 pushm r8-r10,lr-pc
++ *[0-9a-f]*: d0 91 pushm r0-r3,r10
++ *[0-9a-f]*: d2 41 pushm r8-r9,r12
++
++[0-9a-f]* <popm_n>:
++.*
++.*
++.*
++.*
++.*
++.*
++.*
++.*
++
++[0-9a-f]* <pushm_n>:
++.*
++.*
++.*
++.*
++.*
++.*
++.*
++.*
++
++[0-9a-f]* <csrfcz>:
++ *[0-9a-f]*: d0 03 csrfcz 0x0
++ *[0-9a-f]*: d1 f3 csrfcz 0x1f
++ *[0-9a-f]*: d1 03 csrfcz 0x10
++ *[0-9a-f]*: d0 f3 csrfcz 0xf
++ *[0-9a-f]*: d0 13 csrfcz 0x1
++ *[0-9a-f]*: d0 53 csrfcz 0x5
++ *[0-9a-f]*: d0 d3 csrfcz 0xd
++ *[0-9a-f]*: d1 73 csrfcz 0x17
++
++[0-9a-f]* <ssrf>:
++ *[0-9a-f]*: d2 03 ssrf 0x0
++ *[0-9a-f]*: d3 f3 ssrf 0x1f
++ *[0-9a-f]*: d3 03 ssrf 0x10
++ *[0-9a-f]*: d2 f3 ssrf 0xf
++ *[0-9a-f]*: d2 13 ssrf 0x1
++ *[0-9a-f]*: d3 d3 ssrf 0x1d
++ *[0-9a-f]*: d2 d3 ssrf 0xd
++ *[0-9a-f]*: d2 d3 ssrf 0xd
++
++[0-9a-f]* <csrf>:
++ *[0-9a-f]*: d4 03 csrf 0x0
++ *[0-9a-f]*: d5 f3 csrf 0x1f
++ *[0-9a-f]*: d5 03 csrf 0x10
++ *[0-9a-f]*: d4 f3 csrf 0xf
++ *[0-9a-f]*: d4 13 csrf 0x1
++ *[0-9a-f]*: d4 a3 csrf 0xa
++ *[0-9a-f]*: d4 f3 csrf 0xf
++ *[0-9a-f]*: d4 b3 csrf 0xb
++
++[0-9a-f]* <rete>:
++ *[0-9a-f]*: d6 03 rete
++
++[0-9a-f]* <rets>:
++ *[0-9a-f]*: d6 13 rets
++
++[0-9a-f]* <retd>:
++ *[0-9a-f]*: d6 23 retd
++
++[0-9a-f]* <retj>:
++ *[0-9a-f]*: d6 33 retj
++
++[0-9a-f]* <tlbr>:
++ *[0-9a-f]*: d6 43 tlbr
++
++[0-9a-f]* <tlbs>:
++ *[0-9a-f]*: d6 53 tlbs
++
++[0-9a-f]* <tlbw>:
++ *[0-9a-f]*: d6 63 tlbw
++
++[0-9a-f]* <breakpoint>:
++ *[0-9a-f]*: d6 73 breakpoint
++
++[0-9a-f]* <incjosp>:
++ *[0-9a-f]*: d6 83 incjosp 1
++ *[0-9a-f]*: d6 93 incjosp 2
++ *[0-9a-f]*: d6 a3 incjosp 3
++ *[0-9a-f]*: d6 b3 incjosp 4
++ *[0-9a-f]*: d6 c3 incjosp -4
++ *[0-9a-f]*: d6 d3 incjosp -3
++ *[0-9a-f]*: d6 e3 incjosp -2
++ *[0-9a-f]*: d6 f3 incjosp -1
++
++[0-9a-f]* <nop>:
++ *[0-9a-f]*: d7 03 nop
++
++[0-9a-f]* <popjc>:
++ *[0-9a-f]*: d7 13 popjc
++
++[0-9a-f]* <pushjc>:
++ *[0-9a-f]*: d7 23 pushjc
++
++[0-9a-f]* <add2>:
++ *[0-9a-f]*: fe 0f 00 0f add pc,pc,pc
++ *[0-9a-f]*: f8 0c 00 3c add r12,r12,r12<<0x3
++ *[0-9a-f]*: ea 05 00 25 add r5,r5,r5<<0x2
++ *[0-9a-f]*: e8 04 00 14 add r4,r4,r4<<0x1
++ *[0-9a-f]*: fc 0e 00 1e add lr,lr,lr<<0x1
++ *[0-9a-f]*: f8 00 00 10 add r0,r12,r0<<0x1
++ *[0-9a-f]*: f8 04 00 09 add r9,r12,r4
++ *[0-9a-f]*: f8 07 00 2c add r12,r12,r7<<0x2
++
++[0-9a-f]* <sub2>:
++ *[0-9a-f]*: fe 0f 01 0f sub pc,pc,pc
++ *[0-9a-f]*: f8 0c 01 3c sub r12,r12,r12<<0x3
++ *[0-9a-f]*: ea 05 01 25 sub r5,r5,r5<<0x2
++ *[0-9a-f]*: e8 04 01 14 sub r4,r4,r4<<0x1
++ *[0-9a-f]*: fc 0e 01 1e sub lr,lr,lr<<0x1
++ *[0-9a-f]*: e6 04 01 0d sub sp,r3,r4
++ *[0-9a-f]*: ee 03 01 03 sub r3,r7,r3
++ *[0-9a-f]*: f4 0d 01 1d sub sp,r10,sp<<0x1
++
++[0-9a-f]* <divu>:
++ *[0-9a-f]*: fe 0f 0d 0f divu pc,pc,pc
++ *[0-9a-f]*: f8 0c 0d 0c divu r12,r12,r12
++ *[0-9a-f]*: ea 05 0d 05 divu r5,r5,r5
++ *[0-9a-f]*: e8 04 0d 04 divu r4,r4,r4
++ *[0-9a-f]*: fc 0e 0d 0e divu lr,lr,lr
++ *[0-9a-f]*: e8 0f 0d 0d divu sp,r4,pc
++ *[0-9a-f]*: ea 0d 0d 05 divu r5,r5,sp
++ *[0-9a-f]*: fa 00 0d 0a divu r10,sp,r0
++
++[0-9a-f]* <addhh_w>:
++ *[0-9a-f]*: fe 0f 0e 0f addhh\.w pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 0e 3c addhh\.w r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 0e 35 addhh\.w r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 0e 04 addhh\.w r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 0e 3e addhh\.w lr,lr:t,lr:t
++ *[0-9a-f]*: e0 03 0e 00 addhh\.w r0,r0:b,r3:b
++ *[0-9a-f]*: f8 07 0e 2e addhh\.w lr,r12:t,r7:b
++ *[0-9a-f]*: f4 02 0e 23 addhh\.w r3,r10:t,r2:b
++
++[0-9a-f]* <subhh_w>:
++ *[0-9a-f]*: fe 0f 0f 0f subhh\.w pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 0f 3c subhh\.w r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 0f 35 subhh\.w r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 0f 04 subhh\.w r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 0f 3e subhh\.w lr,lr:t,lr:t
++ *[0-9a-f]*: e2 07 0f 2a subhh\.w r10,r1:t,r7:b
++ *[0-9a-f]*: f4 0e 0f 3f subhh\.w pc,r10:t,lr:t
++ *[0-9a-f]*: e0 0c 0f 23 subhh\.w r3,r0:t,r12:b
++
++[0-9a-f]* <adc>:
++ *[0-9a-f]*: fe 0f 00 4f adc pc,pc,pc
++ *[0-9a-f]*: f8 0c 00 4c adc r12,r12,r12
++ *[0-9a-f]*: ea 05 00 45 adc r5,r5,r5
++ *[0-9a-f]*: e8 04 00 44 adc r4,r4,r4
++ *[0-9a-f]*: fc 0e 00 4e adc lr,lr,lr
++ *[0-9a-f]*: e0 07 00 44 adc r4,r0,r7
++ *[0-9a-f]*: e8 03 00 4d adc sp,r4,r3
++ *[0-9a-f]*: f8 00 00 42 adc r2,r12,r0
++
++[0-9a-f]* <sbc>:
++ *[0-9a-f]*: fe 0f 01 4f sbc pc,pc,pc
++ *[0-9a-f]*: f8 0c 01 4c sbc r12,r12,r12
++ *[0-9a-f]*: ea 05 01 45 sbc r5,r5,r5
++ *[0-9a-f]*: e8 04 01 44 sbc r4,r4,r4
++ *[0-9a-f]*: fc 0e 01 4e sbc lr,lr,lr
++ *[0-9a-f]*: ee 09 01 46 sbc r6,r7,r9
++ *[0-9a-f]*: f0 05 01 40 sbc r0,r8,r5
++ *[0-9a-f]*: e0 04 01 41 sbc r1,r0,r4
++
++[0-9a-f]* <mul_2>:
++ *[0-9a-f]*: fe 0f 02 4f mul pc,pc,pc
++ *[0-9a-f]*: f8 0c 02 4c mul r12,r12,r12
++ *[0-9a-f]*: ea 05 02 45 mul r5,r5,r5
++ *[0-9a-f]*: e8 04 02 44 mul r4,r4,r4
++ *[0-9a-f]*: fc 0e 02 4e mul lr,lr,lr
++ *[0-9a-f]*: e0 00 02 4f mul pc,r0,r0
++ *[0-9a-f]*: fe 0e 02 48 mul r8,pc,lr
++ *[0-9a-f]*: f8 0f 02 44 mul r4,r12,pc
++
++[0-9a-f]* <mac>:
++ *[0-9a-f]*: fe 0f 03 4f mac pc,pc,pc
++ *[0-9a-f]*: f8 0c 03 4c mac r12,r12,r12
++ *[0-9a-f]*: ea 05 03 45 mac r5,r5,r5
++ *[0-9a-f]*: e8 04 03 44 mac r4,r4,r4
++ *[0-9a-f]*: fc 0e 03 4e mac lr,lr,lr
++ *[0-9a-f]*: e8 00 03 4a mac r10,r4,r0
++ *[0-9a-f]*: fc 00 03 47 mac r7,lr,r0
++ *[0-9a-f]*: f2 0c 03 42 mac r2,r9,r12
++
++[0-9a-f]* <mulsd>:
++ *[0-9a-f]*: fe 0f 04 4f muls\.d pc,pc,pc
++ *[0-9a-f]*: f8 0c 04 4c muls\.d r12,r12,r12
++ *[0-9a-f]*: ea 05 04 45 muls\.d r5,r5,r5
++ *[0-9a-f]*: e8 04 04 44 muls\.d r4,r4,r4
++ *[0-9a-f]*: fc 0e 04 4e muls\.d lr,lr,lr
++ *[0-9a-f]*: f0 0e 04 42 muls\.d r2,r8,lr
++ *[0-9a-f]*: e0 0b 04 44 muls\.d r4,r0,r11
++ *[0-9a-f]*: fc 06 04 45 muls\.d r5,lr,r6
++
++[0-9a-f]* <macsd>:
++ *[0-9a-f]*: fe 0f 05 40 macs\.d r0,pc,pc
++ *[0-9a-f]*: f8 0c 05 4e macs\.d lr,r12,r12
++ *[0-9a-f]*: ea 05 05 48 macs\.d r8,r5,r5
++ *[0-9a-f]*: e8 04 05 46 macs\.d r6,r4,r4
++ *[0-9a-f]*: fc 0e 05 42 macs\.d r2,lr,lr
++ *[0-9a-f]*: e2 09 05 48 macs\.d r8,r1,r9
++ *[0-9a-f]*: f0 08 05 4e macs\.d lr,r8,r8
++ *[0-9a-f]*: e6 0c 05 44 macs\.d r4,r3,r12
++
++[0-9a-f]* <mulud>:
++ *[0-9a-f]*: fe 0f 06 40 mulu\.d r0,pc,pc
++ *[0-9a-f]*: f8 0c 06 4e mulu\.d lr,r12,r12
++ *[0-9a-f]*: ea 05 06 48 mulu\.d r8,r5,r5
++ *[0-9a-f]*: e8 04 06 46 mulu\.d r6,r4,r4
++ *[0-9a-f]*: fc 0e 06 42 mulu\.d r2,lr,lr
++ *[0-9a-f]*: ea 00 06 46 mulu\.d r6,r5,r0
++ *[0-9a-f]*: ec 01 06 44 mulu\.d r4,r6,r1
++ *[0-9a-f]*: f0 02 06 48 mulu\.d r8,r8,r2
++
++[0-9a-f]* <macud>:
++ *[0-9a-f]*: fe 0f 07 40 macu\.d r0,pc,pc
++ *[0-9a-f]*: f8 0c 07 4e macu\.d lr,r12,r12
++ *[0-9a-f]*: ea 05 07 48 macu\.d r8,r5,r5
++ *[0-9a-f]*: e8 04 07 46 macu\.d r6,r4,r4
++ *[0-9a-f]*: fc 0e 07 42 macu\.d r2,lr,lr
++ *[0-9a-f]*: fa 0b 07 46 macu\.d r6,sp,r11
++ *[0-9a-f]*: e8 08 07 42 macu\.d r2,r4,r8
++ *[0-9a-f]*: f4 09 07 46 macu\.d r6,r10,r9
++
++[0-9a-f]* <asr_1>:
++ *[0-9a-f]*: fe 0f 08 4f asr pc,pc,pc
++ *[0-9a-f]*: f8 0c 08 4c asr r12,r12,r12
++ *[0-9a-f]*: ea 05 08 45 asr r5,r5,r5
++ *[0-9a-f]*: e8 04 08 44 asr r4,r4,r4
++ *[0-9a-f]*: fc 0e 08 4e asr lr,lr,lr
++ *[0-9a-f]*: ec 0f 08 4f asr pc,r6,pc
++ *[0-9a-f]*: ec 0c 08 40 asr r0,r6,r12
++ *[0-9a-f]*: fa 00 08 44 asr r4,sp,r0
++
++[0-9a-f]* <lsl_1>:
++ *[0-9a-f]*: fe 0f 09 4f lsl pc,pc,pc
++ *[0-9a-f]*: f8 0c 09 4c lsl r12,r12,r12
++ *[0-9a-f]*: ea 05 09 45 lsl r5,r5,r5
++ *[0-9a-f]*: e8 04 09 44 lsl r4,r4,r4
++ *[0-9a-f]*: fc 0e 09 4e lsl lr,lr,lr
++ *[0-9a-f]*: ea 0e 09 4e lsl lr,r5,lr
++ *[0-9a-f]*: fe 03 09 45 lsl r5,pc,r3
++ *[0-9a-f]*: fe 09 09 41 lsl r1,pc,r9
++
++[0-9a-f]* <lsr_1>:
++ *[0-9a-f]*: fe 0f 0a 4f lsr pc,pc,pc
++ *[0-9a-f]*: f8 0c 0a 4c lsr r12,r12,r12
++ *[0-9a-f]*: ea 05 0a 45 lsr r5,r5,r5
++ *[0-9a-f]*: e8 04 0a 44 lsr r4,r4,r4
++ *[0-9a-f]*: fc 0e 0a 4e lsr lr,lr,lr
++ *[0-9a-f]*: e8 01 0a 42 lsr r2,r4,r1
++ *[0-9a-f]*: e2 06 0a 45 lsr r5,r1,r6
++ *[0-9a-f]*: ec 07 0a 4d lsr sp,r6,r7
++
++[0-9a-f]* <xchg>:
++ *[0-9a-f]*: fe 0f 0b 4f xchg pc,pc,pc
++ *[0-9a-f]*: f8 0c 0b 4c xchg r12,r12,r12
++ *[0-9a-f]*: ea 05 0b 45 xchg r5,r5,r5
++ *[0-9a-f]*: e8 04 0b 44 xchg r4,r4,r4
++ *[0-9a-f]*: fc 0e 0b 4e xchg lr,lr,lr
++ *[0-9a-f]*: e8 0d 0b 4e xchg lr,r4,sp
++ *[0-9a-f]*: ea 0c 0b 41 xchg r1,r5,r12
++ *[0-9a-f]*: f8 00 0b 4e xchg lr,r12,r0
++
++[0-9a-f]* <max>:
++ *[0-9a-f]*: fe 0f 0c 4f max pc,pc,pc
++ *[0-9a-f]*: f8 0c 0c 4c max r12,r12,r12
++ *[0-9a-f]*: ea 05 0c 45 max r5,r5,r5
++ *[0-9a-f]*: e8 04 0c 44 max r4,r4,r4
++ *[0-9a-f]*: fc 0e 0c 4e max lr,lr,lr
++ *[0-9a-f]*: e4 0d 0c 4e max lr,r2,sp
++ *[0-9a-f]*: f4 09 0c 44 max r4,r10,r9
++ *[0-9a-f]*: f2 0e 0c 4e max lr,r9,lr
++
++[0-9a-f]* <min>:
++ *[0-9a-f]*: fe 0f 0d 4f min pc,pc,pc
++ *[0-9a-f]*: f8 0c 0d 4c min r12,r12,r12
++ *[0-9a-f]*: ea 05 0d 45 min r5,r5,r5
++ *[0-9a-f]*: e8 04 0d 44 min r4,r4,r4
++ *[0-9a-f]*: fc 0e 0d 4e min lr,lr,lr
++ *[0-9a-f]*: ee 08 0d 49 min r9,r7,r8
++ *[0-9a-f]*: ea 05 0d 4d min sp,r5,r5
++ *[0-9a-f]*: e2 04 0d 44 min r4,r1,r4
++
++[0-9a-f]* <addabs>:
++ *[0-9a-f]*: fe 0f 0e 4f addabs pc,pc,pc
++ *[0-9a-f]*: f8 0c 0e 4c addabs r12,r12,r12
++ *[0-9a-f]*: ea 05 0e 45 addabs r5,r5,r5
++ *[0-9a-f]*: e8 04 0e 44 addabs r4,r4,r4
++ *[0-9a-f]*: fc 0e 0e 4e addabs lr,lr,lr
++ *[0-9a-f]*: f4 00 0e 47 addabs r7,r10,r0
++ *[0-9a-f]*: f2 07 0e 49 addabs r9,r9,r7
++ *[0-9a-f]*: f0 0c 0e 42 addabs r2,r8,r12
++
++[0-9a-f]* <mulnhh_w>:
++ *[0-9a-f]*: fe 0f 01 8f mulnhh\.w pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 01 bc mulnhh\.w r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 01 b5 mulnhh\.w r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 01 84 mulnhh\.w r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 01 be mulnhh\.w lr,lr:t,lr:t
++ *[0-9a-f]*: fa 09 01 ab mulnhh\.w r11,sp:t,r9:b
++ *[0-9a-f]*: e8 0e 01 9d mulnhh\.w sp,r4:b,lr:t
++ *[0-9a-f]*: e4 0b 01 ac mulnhh\.w r12,r2:t,r11:b
++
++[0-9a-f]* <mulnwh_d>:
++ *[0-9a-f]*: fe 0f 02 80 mulnwh\.d r0,pc,pc:b
++ *[0-9a-f]*: f8 0c 02 9e mulnwh\.d lr,r12,r12:t
++ *[0-9a-f]*: ea 05 02 98 mulnwh\.d r8,r5,r5:t
++ *[0-9a-f]*: e8 04 02 86 mulnwh\.d r6,r4,r4:b
++ *[0-9a-f]*: fc 0e 02 92 mulnwh\.d r2,lr,lr:t
++ *[0-9a-f]*: e6 02 02 9e mulnwh\.d lr,r3,r2:t
++ *[0-9a-f]*: ea 09 02 84 mulnwh\.d r4,r5,r9:b
++ *[0-9a-f]*: e8 04 02 9c mulnwh\.d r12,r4,r4:t
++
++[0-9a-f]* <machh_w>:
++ *[0-9a-f]*: fe 0f 04 8f machh\.w pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 04 bc machh\.w r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 04 b5 machh\.w r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 04 84 machh\.w r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 04 be machh\.w lr,lr:t,lr:t
++ *[0-9a-f]*: ea 01 04 9e machh\.w lr,r5:b,r1:t
++ *[0-9a-f]*: ec 07 04 89 machh\.w r9,r6:b,r7:b
++ *[0-9a-f]*: fc 0c 04 a5 machh\.w r5,lr:t,r12:b
++
++[0-9a-f]* <machh_d>:
++ *[0-9a-f]*: fe 0f 05 80 machh\.d r0,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 05 be machh\.d lr,r12:t,r12:t
++ *[0-9a-f]*: ea 05 05 b8 machh\.d r8,r5:t,r5:t
++ *[0-9a-f]*: e8 04 05 86 machh\.d r6,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 05 b2 machh\.d r2,lr:t,lr:t
++ *[0-9a-f]*: e0 08 05 8a machh\.d r10,r0:b,r8:b
++ *[0-9a-f]*: e8 05 05 9e machh\.d lr,r4:b,r5:t
++ *[0-9a-f]*: e0 04 05 98 machh\.d r8,r0:b,r4:t
++
++[0-9a-f]* <macsathh_w>:
++ *[0-9a-f]*: fe 0f 06 8f macsathh\.w pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 06 bc macsathh\.w r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 06 b5 macsathh\.w r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 06 84 macsathh\.w r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 06 be macsathh\.w lr,lr:t,lr:t
++ *[0-9a-f]*: ee 0f 06 b7 macsathh\.w r7,r7:t,pc:t
++ *[0-9a-f]*: e4 04 06 a4 macsathh\.w r4,r2:t,r4:b
++ *[0-9a-f]*: f0 03 06 b4 macsathh\.w r4,r8:t,r3:t
++
++[0-9a-f]* <mulhh_w>:
++ *[0-9a-f]*: fe 0f 07 8f mulhh\.w pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 07 bc mulhh\.w r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 07 b5 mulhh\.w r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 07 84 mulhh\.w r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 07 be mulhh\.w lr,lr:t,lr:t
++ *[0-9a-f]*: e8 09 07 a7 mulhh\.w r7,r4:t,r9:b
++ *[0-9a-f]*: e6 07 07 bf mulhh\.w pc,r3:t,r7:t
++ *[0-9a-f]*: e8 09 07 9f mulhh\.w pc,r4:b,r9:t
++
++[0-9a-f]* <mulsathh_h>:
++ *[0-9a-f]*: fe 0f 08 8f mulsathh\.h pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 08 bc mulsathh\.h r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 08 b5 mulsathh\.h r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 08 84 mulsathh\.h r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 08 be mulsathh\.h lr,lr:t,lr:t
++ *[0-9a-f]*: e2 0d 08 83 mulsathh\.h r3,r1:b,sp:b
++ *[0-9a-f]*: fc 0b 08 ab mulsathh\.h r11,lr:t,r11:b
++ *[0-9a-f]*: f0 0b 08 98 mulsathh\.h r8,r8:b,r11:t
++
++[0-9a-f]* <mulsathh_w>:
++ *[0-9a-f]*: fe 0f 09 8f mulsathh\.w pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 09 bc mulsathh\.w r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 09 b5 mulsathh\.w r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 09 84 mulsathh\.w r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 09 be mulsathh\.w lr,lr:t,lr:t
++ *[0-9a-f]*: f6 06 09 ae mulsathh\.w lr,r11:t,r6:b
++ *[0-9a-f]*: ec 07 09 96 mulsathh\.w r6,r6:b,r7:t
++ *[0-9a-f]*: e4 03 09 8a mulsathh\.w r10,r2:b,r3:b
++
++[0-9a-f]* <mulsatrndhh_h>:
++ *[0-9a-f]*: fe 0f 0a 8f mulsatrndhh\.h pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 0a bc mulsatrndhh\.h r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 0a b5 mulsatrndhh\.h r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 0a 84 mulsatrndhh\.h r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 0a be mulsatrndhh\.h lr,lr:t,lr:t
++ *[0-9a-f]*: ec 09 0a 8b mulsatrndhh\.h r11,r6:b,r9:b
++ *[0-9a-f]*: e6 08 0a 9b mulsatrndhh\.h r11,r3:b,r8:t
++ *[0-9a-f]*: fa 07 0a b5 mulsatrndhh\.h r5,sp:t,r7:t
++
++[0-9a-f]* <mulsatrndwh_w>:
++ *[0-9a-f]*: fe 0f 0b 8f mulsatrndwh\.w pc,pc,pc:b
++ *[0-9a-f]*: f8 0c 0b 9c mulsatrndwh\.w r12,r12,r12:t
++ *[0-9a-f]*: ea 05 0b 95 mulsatrndwh\.w r5,r5,r5:t
++ *[0-9a-f]*: e8 04 0b 84 mulsatrndwh\.w r4,r4,r4:b
++ *[0-9a-f]*: fc 0e 0b 9e mulsatrndwh\.w lr,lr,lr:t
++ *[0-9a-f]*: f8 00 0b 85 mulsatrndwh\.w r5,r12,r0:b
++ *[0-9a-f]*: f4 0f 0b 87 mulsatrndwh\.w r7,r10,pc:b
++ *[0-9a-f]*: f0 05 0b 9a mulsatrndwh\.w r10,r8,r5:t
++
++[0-9a-f]* <macwh_d>:
++ *[0-9a-f]*: fe 0f 0c 80 macwh\.d r0,pc,pc:b
++ *[0-9a-f]*: f8 0c 0c 9e macwh\.d lr,r12,r12:t
++ *[0-9a-f]*: ea 05 0c 98 macwh\.d r8,r5,r5:t
++ *[0-9a-f]*: e8 04 0c 86 macwh\.d r6,r4,r4:b
++ *[0-9a-f]*: fc 0e 0c 92 macwh\.d r2,lr,lr:t
++ *[0-9a-f]*: f4 0c 0c 94 macwh\.d r4,r10,r12:t
++ *[0-9a-f]*: ee 0d 0c 84 macwh\.d r4,r7,sp:b
++ *[0-9a-f]*: f2 0b 0c 8e macwh\.d lr,r9,r11:b
++
++[0-9a-f]* <mulwh_d>:
++ *[0-9a-f]*: fe 0f 0d 80 mulwh\.d r0,pc,pc:b
++ *[0-9a-f]*: f8 0c 0d 9e mulwh\.d lr,r12,r12:t
++ *[0-9a-f]*: ea 05 0d 98 mulwh\.d r8,r5,r5:t
++ *[0-9a-f]*: e8 04 0d 86 mulwh\.d r6,r4,r4:b
++ *[0-9a-f]*: fc 0e 0d 92 mulwh\.d r2,lr,lr:t
++ *[0-9a-f]*: ea 01 0d 8c mulwh\.d r12,r5,r1:b
++ *[0-9a-f]*: e2 03 0d 90 mulwh\.d r0,r1,r3:t
++ *[0-9a-f]*: f2 02 0d 80 mulwh\.d r0,r9,r2:b
++
++[0-9a-f]* <mulsatwh_w>:
++ *[0-9a-f]*: fe 0f 0e 8f mulsatwh\.w pc,pc,pc:b
++ *[0-9a-f]*: f8 0c 0e 9c mulsatwh\.w r12,r12,r12:t
++ *[0-9a-f]*: ea 05 0e 95 mulsatwh\.w r5,r5,r5:t
++ *[0-9a-f]*: e8 04 0e 84 mulsatwh\.w r4,r4,r4:b
++ *[0-9a-f]*: fc 0e 0e 9e mulsatwh\.w lr,lr,lr:t
++ *[0-9a-f]*: fe 0a 0e 9b mulsatwh\.w r11,pc,r10:t
++ *[0-9a-f]*: f8 09 0e 9d mulsatwh\.w sp,r12,r9:t
++ *[0-9a-f]*: e6 02 0e 90 mulsatwh\.w r0,r3,r2:t
++
++[0-9a-f]* <ldw7>:
++ *[0-9a-f]*: fe 0f 0f 8f ld\.w pc,pc\[pc:b<<2\]
++ *[0-9a-f]*: f8 0c 0f bc ld\.w r12,r12\[r12:t<<2\]
++ *[0-9a-f]*: ea 05 0f a5 ld\.w r5,r5\[r5:u<<2\]
++ *[0-9a-f]*: e8 04 0f 94 ld\.w r4,r4\[r4:l<<2\]
++ *[0-9a-f]*: fc 0e 0f 9e ld\.w lr,lr\[lr:l<<2\]
++ *[0-9a-f]*: f4 06 0f 99 ld\.w r9,r10\[r6:l<<2\]
++ *[0-9a-f]*: f4 0a 0f 82 ld\.w r2,r10\[r10:b<<2\]
++ *[0-9a-f]*: ea 0f 0f 8b ld\.w r11,r5\[pc:b<<2\]
++
++[0-9a-f]* <satadd_w>:
++ *[0-9a-f]*: fe 0f 00 cf satadd\.w pc,pc,pc
++ *[0-9a-f]*: f8 0c 00 cc satadd\.w r12,r12,r12
++ *[0-9a-f]*: ea 05 00 c5 satadd\.w r5,r5,r5
++ *[0-9a-f]*: e8 04 00 c4 satadd\.w r4,r4,r4
++ *[0-9a-f]*: fc 0e 00 ce satadd\.w lr,lr,lr
++ *[0-9a-f]*: f0 0b 00 c4 satadd\.w r4,r8,r11
++ *[0-9a-f]*: f8 06 00 c3 satadd\.w r3,r12,r6
++ *[0-9a-f]*: fc 09 00 c3 satadd\.w r3,lr,r9
++
++[0-9a-f]* <satsub_w1>:
++ *[0-9a-f]*: fe 0f 01 cf satsub\.w pc,pc,pc
++ *[0-9a-f]*: f8 0c 01 cc satsub\.w r12,r12,r12
++ *[0-9a-f]*: ea 05 01 c5 satsub\.w r5,r5,r5
++ *[0-9a-f]*: e8 04 01 c4 satsub\.w r4,r4,r4
++ *[0-9a-f]*: fc 0e 01 ce satsub\.w lr,lr,lr
++ *[0-9a-f]*: fa 00 01 c8 satsub\.w r8,sp,r0
++ *[0-9a-f]*: f0 04 01 c9 satsub\.w r9,r8,r4
++ *[0-9a-f]*: fc 02 01 cf satsub\.w pc,lr,r2
++
++[0-9a-f]* <satadd_h>:
++ *[0-9a-f]*: fe 0f 02 cf satadd\.h pc,pc,pc
++ *[0-9a-f]*: f8 0c 02 cc satadd\.h r12,r12,r12
++ *[0-9a-f]*: ea 05 02 c5 satadd\.h r5,r5,r5
++ *[0-9a-f]*: e8 04 02 c4 satadd\.h r4,r4,r4
++ *[0-9a-f]*: fc 0e 02 ce satadd\.h lr,lr,lr
++ *[0-9a-f]*: e6 09 02 c7 satadd\.h r7,r3,r9
++ *[0-9a-f]*: e0 02 02 c1 satadd\.h r1,r0,r2
++ *[0-9a-f]*: e8 0e 02 c1 satadd\.h r1,r4,lr
++
++[0-9a-f]* <satsub_h>:
++ *[0-9a-f]*: fe 0f 03 cf satsub\.h pc,pc,pc
++ *[0-9a-f]*: f8 0c 03 cc satsub\.h r12,r12,r12
++ *[0-9a-f]*: ea 05 03 c5 satsub\.h r5,r5,r5
++ *[0-9a-f]*: e8 04 03 c4 satsub\.h r4,r4,r4
++ *[0-9a-f]*: fc 0e 03 ce satsub\.h lr,lr,lr
++ *[0-9a-f]*: fc 03 03 ce satsub\.h lr,lr,r3
++ *[0-9a-f]*: ec 05 03 cb satsub\.h r11,r6,r5
++ *[0-9a-f]*: fa 00 03 c3 satsub\.h r3,sp,r0
++
++[0-9a-f]* <mul3>:
++ *[0-9a-f]*: fe 0f 10 00 mul pc,pc,0
++ *[0-9a-f]*: f8 0c 10 ff mul r12,r12,-1
++ *[0-9a-f]*: ea 05 10 80 mul r5,r5,-128
++ *[0-9a-f]*: e8 04 10 7f mul r4,r4,127
++ *[0-9a-f]*: fc 0e 10 01 mul lr,lr,1
++ *[0-9a-f]*: e4 0c 10 f9 mul r12,r2,-7
++ *[0-9a-f]*: fe 01 10 5f mul r1,pc,95
++ *[0-9a-f]*: ec 04 10 13 mul r4,r6,19
++
++[0-9a-f]* <rsub2>:
++ *[0-9a-f]*: fe 0f 11 00 rsub pc,pc,0
++ *[0-9a-f]*: f8 0c 11 ff rsub r12,r12,-1
++ *[0-9a-f]*: ea 05 11 80 rsub r5,r5,-128
++ *[0-9a-f]*: e8 04 11 7f rsub r4,r4,127
++ *[0-9a-f]*: fc 0e 11 01 rsub lr,lr,1
++ *[0-9a-f]*: fc 09 11 60 rsub r9,lr,96
++ *[0-9a-f]*: e2 0b 11 38 rsub r11,r1,56
++ *[0-9a-f]*: ee 00 11 a9 rsub r0,r7,-87
++
++[0-9a-f]* <clz>:
++ *[0-9a-f]*: fe 0f 12 00 clz pc,pc
++ *[0-9a-f]*: f8 0c 12 00 clz r12,r12
++ *[0-9a-f]*: ea 05 12 00 clz r5,r5
++ *[0-9a-f]*: e8 04 12 00 clz r4,r4
++ *[0-9a-f]*: fc 0e 12 00 clz lr,lr
++ *[0-9a-f]*: e6 02 12 00 clz r2,r3
++ *[0-9a-f]*: f6 05 12 00 clz r5,r11
++ *[0-9a-f]*: e6 0f 12 00 clz pc,r3
++
++[0-9a-f]* <cpc1>:
++ *[0-9a-f]*: fe 0f 13 00 cpc pc,pc
++ *[0-9a-f]*: f8 0c 13 00 cpc r12,r12
++ *[0-9a-f]*: ea 05 13 00 cpc r5,r5
++ *[0-9a-f]*: e8 04 13 00 cpc r4,r4
++ *[0-9a-f]*: fc 0e 13 00 cpc lr,lr
++ *[0-9a-f]*: e8 0f 13 00 cpc pc,r4
++ *[0-9a-f]*: f2 05 13 00 cpc r5,r9
++ *[0-9a-f]*: ee 06 13 00 cpc r6,r7
++
++[0-9a-f]* <asr3>:
++ *[0-9a-f]*: fe 0f 14 00 asr pc,pc,0x0
++ *[0-9a-f]*: f8 0c 14 1f asr r12,r12,0x1f
++ *[0-9a-f]*: ea 05 14 10 asr r5,r5,0x10
++ *[0-9a-f]*: e8 04 14 0f asr r4,r4,0xf
++ *[0-9a-f]*: fc 0e 14 01 asr lr,lr,0x1
++ *[0-9a-f]*: f6 04 14 13 asr r4,r11,0x13
++ *[0-9a-f]*: fe 0d 14 1a asr sp,pc,0x1a
++ *[0-9a-f]*: fa 0b 14 08 asr r11,sp,0x8
++
++[0-9a-f]* <lsl3>:
++ *[0-9a-f]*: fe 0f 15 00 lsl pc,pc,0x0
++ *[0-9a-f]*: f8 0c 15 1f lsl r12,r12,0x1f
++ *[0-9a-f]*: ea 05 15 10 lsl r5,r5,0x10
++ *[0-9a-f]*: e8 04 15 0f lsl r4,r4,0xf
++ *[0-9a-f]*: fc 0e 15 01 lsl lr,lr,0x1
++ *[0-9a-f]*: f4 08 15 11 lsl r8,r10,0x11
++ *[0-9a-f]*: fc 02 15 03 lsl r2,lr,0x3
++ *[0-9a-f]*: f6 0e 15 0e lsl lr,r11,0xe
++
++[0-9a-f]* <lsr3>:
++ *[0-9a-f]*: fe 0f 16 00 lsr pc,pc,0x0
++ *[0-9a-f]*: f8 0c 16 1f lsr r12,r12,0x1f
++ *[0-9a-f]*: ea 05 16 10 lsr r5,r5,0x10
++ *[0-9a-f]*: e8 04 16 0f lsr r4,r4,0xf
++ *[0-9a-f]*: fc 0e 16 01 lsr lr,lr,0x1
++ *[0-9a-f]*: e6 04 16 1f lsr r4,r3,0x1f
++ *[0-9a-f]*: f2 0f 16 0e lsr pc,r9,0xe
++ *[0-9a-f]*: e0 03 16 06 lsr r3,r0,0x6
++
++[0-9a-f]* <movc1>:
++ *[0-9a-f]*: fe 0f 17 00 moveq pc,pc
++ *[0-9a-f]*: f8 0c 17 f0 moval r12,r12
++ *[0-9a-f]*: ea 05 17 80 movls r5,r5
++ *[0-9a-f]*: e8 04 17 70 movpl r4,r4
++ *[0-9a-f]*: fc 0e 17 10 movne lr,lr
++ *[0-9a-f]*: f6 0f 17 10 movne pc,r11
++ *[0-9a-f]*: e4 0a 17 60 movmi r10,r2
++ *[0-9a-f]*: f8 08 17 80 movls r8,r12
++
++[0-9a-f]* <padd_h>:
++ *[0-9a-f]*: fe 0f 20 0f padd\.h pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 0c padd\.h r12,r12,r12
++ *[0-9a-f]*: ea 05 20 05 padd\.h r5,r5,r5
++ *[0-9a-f]*: e8 04 20 04 padd\.h r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 0e padd\.h lr,lr,lr
++ *[0-9a-f]*: e4 07 20 08 padd\.h r8,r2,r7
++ *[0-9a-f]*: e0 03 20 00 padd\.h r0,r0,r3
++ *[0-9a-f]*: f6 06 20 0d padd\.h sp,r11,r6
++
++[0-9a-f]* <psub_h>:
++ *[0-9a-f]*: fe 0f 20 1f psub\.h pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 1c psub\.h r12,r12,r12
++ *[0-9a-f]*: ea 05 20 15 psub\.h r5,r5,r5
++ *[0-9a-f]*: e8 04 20 14 psub\.h r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 1e psub\.h lr,lr,lr
++ *[0-9a-f]*: ec 08 20 1e psub\.h lr,r6,r8
++ *[0-9a-f]*: e2 0d 20 10 psub\.h r0,r1,sp
++ *[0-9a-f]*: fe 0d 20 1f psub\.h pc,pc,sp
++
++[0-9a-f]* <paddx_h>:
++ *[0-9a-f]*: fe 0f 20 2f paddx\.h pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 2c paddx\.h r12,r12,r12
++ *[0-9a-f]*: ea 05 20 25 paddx\.h r5,r5,r5
++ *[0-9a-f]*: e8 04 20 24 paddx\.h r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 2e paddx\.h lr,lr,lr
++ *[0-9a-f]*: fe 01 20 2f paddx\.h pc,pc,r1
++ *[0-9a-f]*: e8 05 20 2a paddx\.h r10,r4,r5
++ *[0-9a-f]*: fe 02 20 25 paddx\.h r5,pc,r2
++
++[0-9a-f]* <psubx_h>:
++ *[0-9a-f]*: fe 0f 20 3f psubx\.h pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 3c psubx\.h r12,r12,r12
++ *[0-9a-f]*: ea 05 20 35 psubx\.h r5,r5,r5
++ *[0-9a-f]*: e8 04 20 34 psubx\.h r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 3e psubx\.h lr,lr,lr
++ *[0-9a-f]*: f8 05 20 35 psubx\.h r5,r12,r5
++ *[0-9a-f]*: f0 03 20 33 psubx\.h r3,r8,r3
++ *[0-9a-f]*: e4 03 20 35 psubx\.h r5,r2,r3
++
++[0-9a-f]* <padds_sh>:
++ *[0-9a-f]*: fe 0f 20 4f padds\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 4c padds\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 45 padds\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 44 padds\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 4e padds\.sh lr,lr,lr
++ *[0-9a-f]*: fc 02 20 49 padds\.sh r9,lr,r2
++ *[0-9a-f]*: f0 01 20 46 padds\.sh r6,r8,r1
++ *[0-9a-f]*: e8 0a 20 46 padds\.sh r6,r4,r10
++
++[0-9a-f]* <psubs_sh>:
++ *[0-9a-f]*: fe 0f 20 5f psubs\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 5c psubs\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 55 psubs\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 54 psubs\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 5e psubs\.sh lr,lr,lr
++ *[0-9a-f]*: fc 0b 20 56 psubs\.sh r6,lr,r11
++ *[0-9a-f]*: f8 04 20 52 psubs\.sh r2,r12,r4
++ *[0-9a-f]*: f2 00 20 50 psubs\.sh r0,r9,r0
++
++[0-9a-f]* <paddxs_sh>:
++ *[0-9a-f]*: fe 0f 20 6f paddxs\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 6c paddxs\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 65 paddxs\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 64 paddxs\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 6e paddxs\.sh lr,lr,lr
++ *[0-9a-f]*: e6 09 20 60 paddxs\.sh r0,r3,r9
++ *[0-9a-f]*: f4 0b 20 6f paddxs\.sh pc,r10,r11
++ *[0-9a-f]*: f4 0f 20 6f paddxs\.sh pc,r10,pc
++
++[0-9a-f]* <psubxs_sh>:
++ *[0-9a-f]*: fe 0f 20 7f psubxs\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 7c psubxs\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 75 psubxs\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 74 psubxs\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 7e psubxs\.sh lr,lr,lr
++ *[0-9a-f]*: e8 04 20 77 psubxs\.sh r7,r4,r4
++ *[0-9a-f]*: f0 03 20 77 psubxs\.sh r7,r8,r3
++ *[0-9a-f]*: ec 05 20 7f psubxs\.sh pc,r6,r5
++
++[0-9a-f]* <padds_uh>:
++ *[0-9a-f]*: fe 0f 20 8f padds\.uh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 8c padds\.uh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 85 padds\.uh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 84 padds\.uh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 8e padds\.uh lr,lr,lr
++ *[0-9a-f]*: f6 07 20 8c padds\.uh r12,r11,r7
++ *[0-9a-f]*: f0 0e 20 87 padds\.uh r7,r8,lr
++ *[0-9a-f]*: f2 07 20 86 padds\.uh r6,r9,r7
++
++[0-9a-f]* <psubs_uh>:
++ *[0-9a-f]*: fe 0f 20 9f psubs\.uh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 9c psubs\.uh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 95 psubs\.uh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 94 psubs\.uh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 9e psubs\.uh lr,lr,lr
++ *[0-9a-f]*: f4 06 20 9e psubs\.uh lr,r10,r6
++ *[0-9a-f]*: e4 0f 20 9d psubs\.uh sp,r2,pc
++ *[0-9a-f]*: f2 02 20 92 psubs\.uh r2,r9,r2
++
++[0-9a-f]* <paddxs_uh>:
++ *[0-9a-f]*: fe 0f 20 af paddxs\.uh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 ac paddxs\.uh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 a5 paddxs\.uh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 a4 paddxs\.uh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 ae paddxs\.uh lr,lr,lr
++ *[0-9a-f]*: f2 05 20 a7 paddxs\.uh r7,r9,r5
++ *[0-9a-f]*: e2 04 20 a9 paddxs\.uh r9,r1,r4
++ *[0-9a-f]*: e4 03 20 a5 paddxs\.uh r5,r2,r3
++
++[0-9a-f]* <psubxs_uh>:
++ *[0-9a-f]*: fe 0f 20 bf psubxs\.uh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 bc psubxs\.uh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 b5 psubxs\.uh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 b4 psubxs\.uh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 be psubxs\.uh lr,lr,lr
++ *[0-9a-f]*: ea 0d 20 bd psubxs\.uh sp,r5,sp
++ *[0-9a-f]*: ec 06 20 bd psubxs\.uh sp,r6,r6
++ *[0-9a-f]*: f6 08 20 b3 psubxs\.uh r3,r11,r8
++
++[0-9a-f]* <paddh_sh>:
++ *[0-9a-f]*: fe 0f 20 cf paddh\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 cc paddh\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 c5 paddh\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 c4 paddh\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 ce paddh\.sh lr,lr,lr
++ *[0-9a-f]*: fa 03 20 cc paddh\.sh r12,sp,r3
++ *[0-9a-f]*: ea 03 20 cf paddh\.sh pc,r5,r3
++ *[0-9a-f]*: f0 0d 20 c8 paddh\.sh r8,r8,sp
++
++[0-9a-f]* <psubh_sh>:
++ *[0-9a-f]*: fe 0f 20 df psubh\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 dc psubh\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 d5 psubh\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 d4 psubh\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 de psubh\.sh lr,lr,lr
++ *[0-9a-f]*: ea 08 20 d1 psubh\.sh r1,r5,r8
++ *[0-9a-f]*: e6 06 20 d7 psubh\.sh r7,r3,r6
++ *[0-9a-f]*: e6 03 20 d4 psubh\.sh r4,r3,r3
++
++[0-9a-f]* <paddxh_sh>:
++ *[0-9a-f]*: fe 0f 20 ef paddxh\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 ec paddxh\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 e5 paddxh\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 e4 paddxh\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 ee paddxh\.sh lr,lr,lr
++ *[0-9a-f]*: e0 04 20 e6 paddxh\.sh r6,r0,r4
++ *[0-9a-f]*: f0 09 20 e9 paddxh\.sh r9,r8,r9
++ *[0-9a-f]*: e0 0d 20 e3 paddxh\.sh r3,r0,sp
++
++[0-9a-f]* <psubxh_sh>:
++ *[0-9a-f]*: fe 0f 20 ff psubxh\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 20 fc psubxh\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 20 f5 psubxh\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 20 f4 psubxh\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 20 fe psubxh\.sh lr,lr,lr
++ *[0-9a-f]*: fe 0c 20 f4 psubxh\.sh r4,pc,r12
++ *[0-9a-f]*: e8 06 20 f8 psubxh\.sh r8,r4,r6
++ *[0-9a-f]*: f2 04 20 fc psubxh\.sh r12,r9,r4
++
++[0-9a-f]* <paddsub_h>:
++ *[0-9a-f]*: fe 0f 21 0f paddsub\.h pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 21 3c paddsub\.h r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 21 35 paddsub\.h r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 21 04 paddsub\.h r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 21 3e paddsub\.h lr,lr:t,lr:t
++ *[0-9a-f]*: e4 0e 21 25 paddsub\.h r5,r2:t,lr:b
++ *[0-9a-f]*: e2 08 21 07 paddsub\.h r7,r1:b,r8:b
++ *[0-9a-f]*: f4 05 21 36 paddsub\.h r6,r10:t,r5:t
++
++[0-9a-f]* <psubadd_h>:
++ *[0-9a-f]*: fe 0f 21 4f psubadd\.h pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 21 7c psubadd\.h r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 21 75 psubadd\.h r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 21 44 psubadd\.h r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 21 7e psubadd\.h lr,lr:t,lr:t
++ *[0-9a-f]*: f6 08 21 79 psubadd\.h r9,r11:t,r8:t
++ *[0-9a-f]*: ee 0e 21 7a psubadd\.h r10,r7:t,lr:t
++ *[0-9a-f]*: fe 0f 21 66 psubadd\.h r6,pc:t,pc:b
++
++[0-9a-f]* <paddsubs_sh>:
++ *[0-9a-f]*: fe 0f 21 8f paddsubs\.sh pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 21 bc paddsubs\.sh r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 21 b5 paddsubs\.sh r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 21 84 paddsubs\.sh r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 21 be paddsubs\.sh lr,lr:t,lr:t
++ *[0-9a-f]*: fc 00 21 a0 paddsubs\.sh r0,lr:t,r0:b
++ *[0-9a-f]*: e4 04 21 b9 paddsubs\.sh r9,r2:t,r4:t
++ *[0-9a-f]*: f2 0d 21 bc paddsubs\.sh r12,r9:t,sp:t
++
++[0-9a-f]* <psubadds_sh>:
++ *[0-9a-f]*: fe 0f 21 cf psubadds\.sh pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 21 fc psubadds\.sh r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 21 f5 psubadds\.sh r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 21 c4 psubadds\.sh r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 21 fe psubadds\.sh lr,lr:t,lr:t
++ *[0-9a-f]*: fc 01 21 df psubadds\.sh pc,lr:b,r1:t
++ *[0-9a-f]*: e6 0c 21 cb psubadds\.sh r11,r3:b,r12:b
++ *[0-9a-f]*: e4 08 21 fa psubadds\.sh r10,r2:t,r8:t
++
++[0-9a-f]* <paddsubs_uh>:
++ *[0-9a-f]*: fe 0f 22 0f paddsubs\.uh pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 22 3c paddsubs\.uh r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 22 35 paddsubs\.uh r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 22 04 paddsubs\.uh r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 22 3e paddsubs\.uh lr,lr:t,lr:t
++ *[0-9a-f]*: e4 03 22 09 paddsubs\.uh r9,r2:b,r3:b
++ *[0-9a-f]*: fa 07 22 1d paddsubs\.uh sp,sp:b,r7:t
++ *[0-9a-f]*: e0 0a 22 1e paddsubs\.uh lr,r0:b,r10:t
++
++[0-9a-f]* <psubadds_uh>:
++ *[0-9a-f]*: fe 0f 22 4f psubadds\.uh pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 22 7c psubadds\.uh r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 22 75 psubadds\.uh r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 22 44 psubadds\.uh r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 22 7e psubadds\.uh lr,lr:t,lr:t
++ *[0-9a-f]*: f2 0f 22 7c psubadds\.uh r12,r9:t,pc:t
++ *[0-9a-f]*: ec 08 22 48 psubadds\.uh r8,r6:b,r8:b
++ *[0-9a-f]*: f0 04 22 48 psubadds\.uh r8,r8:b,r4:b
++
++[0-9a-f]* <paddsubh_sh>:
++ *[0-9a-f]*: fe 0f 22 8f paddsubh\.sh pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 22 bc paddsubh\.sh r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 22 b5 paddsubh\.sh r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 22 84 paddsubh\.sh r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 22 be paddsubh\.sh lr,lr:t,lr:t
++ *[0-9a-f]*: f2 09 22 a8 paddsubh\.sh r8,r9:t,r9:b
++ *[0-9a-f]*: fa 01 22 b0 paddsubh\.sh r0,sp:t,r1:t
++ *[0-9a-f]*: e2 00 22 93 paddsubh\.sh r3,r1:b,r0:t
++
++[0-9a-f]* <psubaddh_sh>:
++ *[0-9a-f]*: fe 0f 22 cf psubaddh\.sh pc,pc:b,pc:b
++ *[0-9a-f]*: f8 0c 22 fc psubaddh\.sh r12,r12:t,r12:t
++ *[0-9a-f]*: ea 05 22 f5 psubaddh\.sh r5,r5:t,r5:t
++ *[0-9a-f]*: e8 04 22 c4 psubaddh\.sh r4,r4:b,r4:b
++ *[0-9a-f]*: fc 0e 22 fe psubaddh\.sh lr,lr:t,lr:t
++ *[0-9a-f]*: e6 0a 22 e7 psubaddh\.sh r7,r3:t,r10:b
++ *[0-9a-f]*: e4 01 22 f7 psubaddh\.sh r7,r2:t,r1:t
++ *[0-9a-f]*: e6 06 22 cb psubaddh\.sh r11,r3:b,r6:b
++
++[0-9a-f]* <padd_b>:
++ *[0-9a-f]*: fe 0f 23 0f padd\.b pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 0c padd\.b r12,r12,r12
++ *[0-9a-f]*: ea 05 23 05 padd\.b r5,r5,r5
++ *[0-9a-f]*: e8 04 23 04 padd\.b r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 0e padd\.b lr,lr,lr
++ *[0-9a-f]*: ec 0f 23 02 padd\.b r2,r6,pc
++ *[0-9a-f]*: f2 0c 23 08 padd\.b r8,r9,r12
++ *[0-9a-f]*: f8 03 23 05 padd\.b r5,r12,r3
++
++[0-9a-f]* <psub_b>:
++ *[0-9a-f]*: fe 0f 23 1f psub\.b pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 1c psub\.b r12,r12,r12
++ *[0-9a-f]*: ea 05 23 15 psub\.b r5,r5,r5
++ *[0-9a-f]*: e8 04 23 14 psub\.b r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 1e psub\.b lr,lr,lr
++ *[0-9a-f]*: f8 0f 23 10 psub\.b r0,r12,pc
++ *[0-9a-f]*: fa 0a 23 17 psub\.b r7,sp,r10
++ *[0-9a-f]*: fa 0c 23 15 psub\.b r5,sp,r12
++
++[0-9a-f]* <padds_sb>:
++ *[0-9a-f]*: fe 0f 23 2f padds\.sb pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 2c padds\.sb r12,r12,r12
++ *[0-9a-f]*: ea 05 23 25 padds\.sb r5,r5,r5
++ *[0-9a-f]*: e8 04 23 24 padds\.sb r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 2e padds\.sb lr,lr,lr
++ *[0-9a-f]*: f6 04 23 2d padds\.sb sp,r11,r4
++ *[0-9a-f]*: f4 0b 23 2b padds\.sb r11,r10,r11
++ *[0-9a-f]*: f8 06 23 25 padds\.sb r5,r12,r6
++
++[0-9a-f]* <psubs_sb>:
++ *[0-9a-f]*: fe 0f 23 3f psubs\.sb pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 3c psubs\.sb r12,r12,r12
++ *[0-9a-f]*: ea 05 23 35 psubs\.sb r5,r5,r5
++ *[0-9a-f]*: e8 04 23 34 psubs\.sb r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 3e psubs\.sb lr,lr,lr
++ *[0-9a-f]*: ec 08 23 37 psubs\.sb r7,r6,r8
++ *[0-9a-f]*: f4 09 23 3c psubs\.sb r12,r10,r9
++ *[0-9a-f]*: f6 00 23 3f psubs\.sb pc,r11,r0
++
++[0-9a-f]* <padds_ub>:
++ *[0-9a-f]*: fe 0f 23 4f padds\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 4c padds\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 23 45 padds\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 23 44 padds\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 4e padds\.ub lr,lr,lr
++ *[0-9a-f]*: e4 0b 23 43 padds\.ub r3,r2,r11
++ *[0-9a-f]*: f0 01 23 4a padds\.ub r10,r8,r1
++ *[0-9a-f]*: f0 0a 23 4b padds\.ub r11,r8,r10
++
++[0-9a-f]* <psubs_ub>:
++ *[0-9a-f]*: fe 0f 23 5f psubs\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 5c psubs\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 23 55 psubs\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 23 54 psubs\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 5e psubs\.ub lr,lr,lr
++ *[0-9a-f]*: e4 07 23 50 psubs\.ub r0,r2,r7
++ *[0-9a-f]*: ea 03 23 5e psubs\.ub lr,r5,r3
++ *[0-9a-f]*: ee 09 23 56 psubs\.ub r6,r7,r9
++
++[0-9a-f]* <paddh_ub>:
++ *[0-9a-f]*: fe 0f 23 6f paddh\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 6c paddh\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 23 65 paddh\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 23 64 paddh\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 6e paddh\.ub lr,lr,lr
++ *[0-9a-f]*: e2 00 23 6e paddh\.ub lr,r1,r0
++ *[0-9a-f]*: ee 07 23 62 paddh\.ub r2,r7,r7
++ *[0-9a-f]*: e2 02 23 62 paddh\.ub r2,r1,r2
++
++[0-9a-f]* <psubh_ub>:
++ *[0-9a-f]*: fe 0f 23 7f psubh\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 7c psubh\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 23 75 psubh\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 23 74 psubh\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 7e psubh\.ub lr,lr,lr
++ *[0-9a-f]*: e2 06 23 70 psubh\.ub r0,r1,r6
++ *[0-9a-f]*: fc 0a 23 74 psubh\.ub r4,lr,r10
++ *[0-9a-f]*: f0 01 23 79 psubh\.ub r9,r8,r1
++
++[0-9a-f]* <pmax_ub>:
++ *[0-9a-f]*: fe 0f 23 8f pmax\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 8c pmax\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 23 85 pmax\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 23 84 pmax\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 8e pmax\.ub lr,lr,lr
++ *[0-9a-f]*: e4 0b 23 8f pmax\.ub pc,r2,r11
++ *[0-9a-f]*: e2 01 23 8c pmax\.ub r12,r1,r1
++ *[0-9a-f]*: e4 00 23 85 pmax\.ub r5,r2,r0
++
++[0-9a-f]* <pmax_sh>:
++ *[0-9a-f]*: fe 0f 23 9f pmax\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 9c pmax\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 23 95 pmax\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 23 94 pmax\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 9e pmax\.sh lr,lr,lr
++ *[0-9a-f]*: ec 0c 23 9e pmax\.sh lr,r6,r12
++ *[0-9a-f]*: fe 05 23 92 pmax\.sh r2,pc,r5
++ *[0-9a-f]*: e4 07 23 9f pmax\.sh pc,r2,r7
++
++[0-9a-f]* <pmin_ub>:
++ *[0-9a-f]*: fe 0f 23 af pmin\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 ac pmin\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 23 a5 pmin\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 23 a4 pmin\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 ae pmin\.ub lr,lr,lr
++ *[0-9a-f]*: e2 05 23 a8 pmin\.ub r8,r1,r5
++ *[0-9a-f]*: f0 03 23 a1 pmin\.ub r1,r8,r3
++ *[0-9a-f]*: e4 07 23 a0 pmin\.ub r0,r2,r7
++
++[0-9a-f]* <pmin_sh>:
++ *[0-9a-f]*: fe 0f 23 bf pmin\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 bc pmin\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 23 b5 pmin\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 23 b4 pmin\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 be pmin\.sh lr,lr,lr
++ *[0-9a-f]*: e8 0a 23 b8 pmin\.sh r8,r4,r10
++ *[0-9a-f]*: f4 0c 23 be pmin\.sh lr,r10,r12
++ *[0-9a-f]*: ec 02 23 b2 pmin\.sh r2,r6,r2
++
++[0-9a-f]* <pavg_ub>:
++ *[0-9a-f]*: fe 0f 23 cf pavg\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 cc pavg\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 23 c5 pavg\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 23 c4 pavg\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 ce pavg\.ub lr,lr,lr
++ *[0-9a-f]*: e2 06 23 c0 pavg\.ub r0,r1,r6
++ *[0-9a-f]*: e6 06 23 c8 pavg\.ub r8,r3,r6
++ *[0-9a-f]*: f8 0a 23 cf pavg\.ub pc,r12,r10
++
++[0-9a-f]* <pavg_sh>:
++ *[0-9a-f]*: fe 0f 23 df pavg\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 23 dc pavg\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 23 d5 pavg\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 23 d4 pavg\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 23 de pavg\.sh lr,lr,lr
++ *[0-9a-f]*: fe 0d 23 d9 pavg\.sh r9,pc,sp
++ *[0-9a-f]*: fa 03 23 df pavg\.sh pc,sp,r3
++ *[0-9a-f]*: e2 09 23 d6 pavg\.sh r6,r1,r9
++
++[0-9a-f]* <pabs_sb>:
++ *[0-9a-f]*: e0 0f 23 ef pabs\.sb pc,pc
++ *[0-9a-f]*: e0 0c 23 ec pabs\.sb r12,r12
++ *[0-9a-f]*: e0 05 23 e5 pabs\.sb r5,r5
++ *[0-9a-f]*: e0 04 23 e4 pabs\.sb r4,r4
++ *[0-9a-f]*: e0 0e 23 ee pabs\.sb lr,lr
++ *[0-9a-f]*: e0 06 23 eb pabs\.sb r11,r6
++ *[0-9a-f]*: e0 09 23 ee pabs\.sb lr,r9
++ *[0-9a-f]*: e0 07 23 ed pabs\.sb sp,r7
++
++[0-9a-f]* <pabs_sh>:
++ *[0-9a-f]*: e0 0f 23 ff pabs\.sh pc,pc
++ *[0-9a-f]*: e0 0c 23 fc pabs\.sh r12,r12
++ *[0-9a-f]*: e0 05 23 f5 pabs\.sh r5,r5
++ *[0-9a-f]*: e0 04 23 f4 pabs\.sh r4,r4
++ *[0-9a-f]*: e0 0e 23 fe pabs\.sh lr,lr
++ *[0-9a-f]*: e0 03 23 ff pabs\.sh pc,r3
++ *[0-9a-f]*: e0 07 23 f5 pabs\.sh r5,r7
++ *[0-9a-f]*: e0 00 23 f4 pabs\.sh r4,r0
++
++[0-9a-f]* <psad>:
++ *[0-9a-f]*: fe 0f 24 0f psad pc,pc,pc
++ *[0-9a-f]*: f8 0c 24 0c psad r12,r12,r12
++ *[0-9a-f]*: ea 05 24 05 psad r5,r5,r5
++ *[0-9a-f]*: e8 04 24 04 psad r4,r4,r4
++ *[0-9a-f]*: fc 0e 24 0e psad lr,lr,lr
++ *[0-9a-f]*: f6 0b 24 09 psad r9,r11,r11
++ *[0-9a-f]*: e8 0d 24 0e psad lr,r4,sp
++ *[0-9a-f]*: e8 05 24 0e psad lr,r4,r5
++
++[0-9a-f]* <pasr_b>:
++ *[0-9a-f]*: fe 00 24 1f pasr\.b pc,pc,0x0
++ *[0-9a-f]*: f8 07 24 1c pasr\.b r12,r12,0x7
++ *[0-9a-f]*: ea 04 24 15 pasr\.b r5,r5,0x4
++ *[0-9a-f]*: e8 03 24 14 pasr\.b r4,r4,0x3
++ *[0-9a-f]*: fc 01 24 1e pasr\.b lr,lr,0x1
++ *[0-9a-f]*: ee 01 24 1f pasr\.b pc,r7,0x1
++ *[0-9a-f]*: fc 06 24 1d pasr\.b sp,lr,0x6
++ *[0-9a-f]*: e6 02 24 1d pasr\.b sp,r3,0x2
++
++[0-9a-f]* <plsl_b>:
++ *[0-9a-f]*: fe 00 24 2f plsl\.b pc,pc,0x0
++ *[0-9a-f]*: f8 07 24 2c plsl\.b r12,r12,0x7
++ *[0-9a-f]*: ea 04 24 25 plsl\.b r5,r5,0x4
++ *[0-9a-f]*: e8 03 24 24 plsl\.b r4,r4,0x3
++ *[0-9a-f]*: fc 01 24 2e plsl\.b lr,lr,0x1
++ *[0-9a-f]*: f6 04 24 22 plsl\.b r2,r11,0x4
++ *[0-9a-f]*: ea 07 24 28 plsl\.b r8,r5,0x7
++ *[0-9a-f]*: e0 02 24 2f plsl\.b pc,r0,0x2
++
++[0-9a-f]* <plsr_b>:
++ *[0-9a-f]*: fe 00 24 3f plsr\.b pc,pc,0x0
++ *[0-9a-f]*: f8 07 24 3c plsr\.b r12,r12,0x7
++ *[0-9a-f]*: ea 04 24 35 plsr\.b r5,r5,0x4
++ *[0-9a-f]*: e8 03 24 34 plsr\.b r4,r4,0x3
++ *[0-9a-f]*: fc 01 24 3e plsr\.b lr,lr,0x1
++ *[0-9a-f]*: e2 02 24 3c plsr\.b r12,r1,0x2
++ *[0-9a-f]*: fe 07 24 36 plsr\.b r6,pc,0x7
++ *[0-9a-f]*: f6 02 24 3c plsr\.b r12,r11,0x2
++
++[0-9a-f]* <pasr_h>:
++ *[0-9a-f]*: fe 00 24 4f pasr\.h pc,pc,0x0
++ *[0-9a-f]*: f8 0f 24 4c pasr\.h r12,r12,0xf
++ *[0-9a-f]*: ea 08 24 45 pasr\.h r5,r5,0x8
++ *[0-9a-f]*: e8 07 24 44 pasr\.h r4,r4,0x7
++ *[0-9a-f]*: fc 01 24 4e pasr\.h lr,lr,0x1
++ *[0-9a-f]*: f6 0a 24 40 pasr\.h r0,r11,0xa
++ *[0-9a-f]*: ec 08 24 44 pasr\.h r4,r6,0x8
++ *[0-9a-f]*: e4 04 24 46 pasr\.h r6,r2,0x4
++
++[0-9a-f]* <plsl_h>:
++ *[0-9a-f]*: fe 00 24 5f plsl\.h pc,pc,0x0
++ *[0-9a-f]*: f8 0f 24 5c plsl\.h r12,r12,0xf
++ *[0-9a-f]*: ea 08 24 55 plsl\.h r5,r5,0x8
++ *[0-9a-f]*: e8 07 24 54 plsl\.h r4,r4,0x7
++ *[0-9a-f]*: fc 01 24 5e plsl\.h lr,lr,0x1
++ *[0-9a-f]*: f4 09 24 55 plsl\.h r5,r10,0x9
++ *[0-9a-f]*: fc 08 24 5d plsl\.h sp,lr,0x8
++ *[0-9a-f]*: fc 07 24 50 plsl\.h r0,lr,0x7
++
++[0-9a-f]* <plsr_h>:
++ *[0-9a-f]*: fe 00 24 6f plsr\.h pc,pc,0x0
++ *[0-9a-f]*: f8 0f 24 6c plsr\.h r12,r12,0xf
++ *[0-9a-f]*: ea 08 24 65 plsr\.h r5,r5,0x8
++ *[0-9a-f]*: e8 07 24 64 plsr\.h r4,r4,0x7
++ *[0-9a-f]*: fc 01 24 6e plsr\.h lr,lr,0x1
++ *[0-9a-f]*: e0 0f 24 6b plsr\.h r11,r0,0xf
++ *[0-9a-f]*: e6 03 24 6e plsr\.h lr,r3,0x3
++ *[0-9a-f]*: fc 0a 24 68 plsr\.h r8,lr,0xa
++
++[0-9a-f]* <packw_sh>:
++ *[0-9a-f]*: fe 0f 24 7f packw\.sh pc,pc,pc
++ *[0-9a-f]*: f8 0c 24 7c packw\.sh r12,r12,r12
++ *[0-9a-f]*: ea 05 24 75 packw\.sh r5,r5,r5
++ *[0-9a-f]*: e8 04 24 74 packw\.sh r4,r4,r4
++ *[0-9a-f]*: fc 0e 24 7e packw\.sh lr,lr,lr
++ *[0-9a-f]*: f6 0a 24 7d packw\.sh sp,r11,r10
++ *[0-9a-f]*: e4 0c 24 78 packw\.sh r8,r2,r12
++ *[0-9a-f]*: e2 05 24 78 packw\.sh r8,r1,r5
++
++[0-9a-f]* <punpckub_h>:
++ *[0-9a-f]*: fe 00 24 8f punpckub\.h pc,pc:b
++ *[0-9a-f]*: f8 00 24 9c punpckub\.h r12,r12:t
++ *[0-9a-f]*: ea 00 24 95 punpckub\.h r5,r5:t
++ *[0-9a-f]*: e8 00 24 84 punpckub\.h r4,r4:b
++ *[0-9a-f]*: fc 00 24 9e punpckub\.h lr,lr:t
++ *[0-9a-f]*: e2 00 24 96 punpckub\.h r6,r1:t
++ *[0-9a-f]*: ea 00 24 8e punpckub\.h lr,r5:b
++ *[0-9a-f]*: e4 00 24 9e punpckub\.h lr,r2:t
++
++[0-9a-f]* <punpcksb_h>:
++ *[0-9a-f]*: fe 00 24 af punpcksb\.h pc,pc:b
++ *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
++ *[0-9a-f]*: ea 00 24 b5 punpcksb\.h r5,r5:t
++ *[0-9a-f]*: e8 00 24 a4 punpcksb\.h r4,r4:b
++ *[0-9a-f]*: fc 00 24 be punpcksb\.h lr,lr:t
++ *[0-9a-f]*: ee 00 24 b4 punpcksb\.h r4,r7:t
++ *[0-9a-f]*: fc 00 24 a6 punpcksb\.h r6,lr:b
++ *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
++
++[0-9a-f]* <packsh_ub>:
++ *[0-9a-f]*: fe 0f 24 cf packsh\.ub pc,pc,pc
++ *[0-9a-f]*: f8 0c 24 cc packsh\.ub r12,r12,r12
++ *[0-9a-f]*: ea 05 24 c5 packsh\.ub r5,r5,r5
++ *[0-9a-f]*: e8 04 24 c4 packsh\.ub r4,r4,r4
++ *[0-9a-f]*: fc 0e 24 ce packsh\.ub lr,lr,lr
++ *[0-9a-f]*: ec 03 24 c3 packsh\.ub r3,r6,r3
++ *[0-9a-f]*: e0 03 24 c8 packsh\.ub r8,r0,r3
++ *[0-9a-f]*: e6 0e 24 c9 packsh\.ub r9,r3,lr
++
++[0-9a-f]* <packsh_sb>:
++ *[0-9a-f]*: fe 0f 24 df packsh\.sb pc,pc,pc
++ *[0-9a-f]*: f8 0c 24 dc packsh\.sb r12,r12,r12
++ *[0-9a-f]*: ea 05 24 d5 packsh\.sb r5,r5,r5
++ *[0-9a-f]*: e8 04 24 d4 packsh\.sb r4,r4,r4
++ *[0-9a-f]*: fc 0e 24 de packsh\.sb lr,lr,lr
++ *[0-9a-f]*: f0 01 24 d6 packsh\.sb r6,r8,r1
++ *[0-9a-f]*: f2 08 24 de packsh\.sb lr,r9,r8
++ *[0-9a-f]*: ec 06 24 dd packsh\.sb sp,r6,r6
++
++[0-9a-f]* <andl>:
++ *[0-9a-f]*: e0 1f 00 00 andl pc,0x0
++ *[0-9a-f]*: e0 1c ff ff andl r12,0xffff
++ *[0-9a-f]*: e0 15 80 00 andl r5,0x8000
++ *[0-9a-f]*: e0 14 7f ff andl r4,0x7fff
++ *[0-9a-f]*: e0 1e 00 01 andl lr,0x1
++ *[0-9a-f]*: e0 1f 5a 58 andl pc,0x5a58
++ *[0-9a-f]*: e0 18 b8 9e andl r8,0xb89e
++ *[0-9a-f]*: e0 17 35 97 andl r7,0x3597
++
++[0-9a-f]* <andl_coh>:
++ *[0-9a-f]*: e2 1f 00 00 andl pc,0x0,COH
++ *[0-9a-f]*: e2 1c ff ff andl r12,0xffff,COH
++ *[0-9a-f]*: e2 15 80 00 andl r5,0x8000,COH
++ *[0-9a-f]*: e2 14 7f ff andl r4,0x7fff,COH
++ *[0-9a-f]*: e2 1e 00 01 andl lr,0x1,COH
++ *[0-9a-f]*: e2 16 58 e1 andl r6,0x58e1,COH
++ *[0-9a-f]*: e2 10 9e cd andl r0,0x9ecd,COH
++ *[0-9a-f]*: e2 14 bd c4 andl r4,0xbdc4,COH
++
++[0-9a-f]* <andh>:
++ *[0-9a-f]*: e4 1f 00 00 andh pc,0x0
++ *[0-9a-f]*: e4 1c ff ff andh r12,0xffff
++ *[0-9a-f]*: e4 15 80 00 andh r5,0x8000
++ *[0-9a-f]*: e4 14 7f ff andh r4,0x7fff
++ *[0-9a-f]*: e4 1e 00 01 andh lr,0x1
++ *[0-9a-f]*: e4 1c cc 58 andh r12,0xcc58
++ *[0-9a-f]*: e4 13 21 e3 andh r3,0x21e3
++ *[0-9a-f]*: e4 12 a7 eb andh r2,0xa7eb
++
++[0-9a-f]* <andh_coh>:
++ *[0-9a-f]*: e6 1f 00 00 andh pc,0x0,COH
++ *[0-9a-f]*: e6 1c ff ff andh r12,0xffff,COH
++ *[0-9a-f]*: e6 15 80 00 andh r5,0x8000,COH
++ *[0-9a-f]*: e6 14 7f ff andh r4,0x7fff,COH
++ *[0-9a-f]*: e6 1e 00 01 andh lr,0x1,COH
++ *[0-9a-f]*: e6 1b 86 0d andh r11,0x860d,COH
++ *[0-9a-f]*: e6 18 ce f6 andh r8,0xcef6,COH
++ *[0-9a-f]*: e6 1a 5c 83 andh r10,0x5c83,COH
++
++[0-9a-f]* <orl>:
++ *[0-9a-f]*: e8 1f 00 00 orl pc,0x0
++ *[0-9a-f]*: e8 1c ff ff orl r12,0xffff
++ *[0-9a-f]*: e8 15 80 00 orl r5,0x8000
++ *[0-9a-f]*: e8 14 7f ff orl r4,0x7fff
++ *[0-9a-f]*: e8 1e 00 01 orl lr,0x1
++ *[0-9a-f]*: e8 1d 41 7e orl sp,0x417e
++ *[0-9a-f]*: e8 10 52 bd orl r0,0x52bd
++ *[0-9a-f]*: e8 1f ac 47 orl pc,0xac47
++
++[0-9a-f]* <orh>:
++ *[0-9a-f]*: ea 1f 00 00 orh pc,0x0
++ *[0-9a-f]*: ea 1c ff ff orh r12,0xffff
++ *[0-9a-f]*: ea 15 80 00 orh r5,0x8000
++ *[0-9a-f]*: ea 14 7f ff orh r4,0x7fff
++ *[0-9a-f]*: ea 1e 00 01 orh lr,0x1
++ *[0-9a-f]*: ea 18 6e 7d orh r8,0x6e7d
++ *[0-9a-f]*: ea 1c 77 1c orh r12,0x771c
++ *[0-9a-f]*: ea 11 ea 1a orh r1,0xea1a
++
++[0-9a-f]* <eorl>:
++ *[0-9a-f]*: ec 1f 00 00 eorl pc,0x0
++ *[0-9a-f]*: ec 1c ff ff eorl r12,0xffff
++ *[0-9a-f]*: ec 15 80 00 eorl r5,0x8000
++ *[0-9a-f]*: ec 14 7f ff eorl r4,0x7fff
++ *[0-9a-f]*: ec 1e 00 01 eorl lr,0x1
++ *[0-9a-f]*: ec 14 c7 b9 eorl r4,0xc7b9
++ *[0-9a-f]*: ec 16 fb dd eorl r6,0xfbdd
++ *[0-9a-f]*: ec 11 51 b1 eorl r1,0x51b1
++
++[0-9a-f]* <eorh>:
++ *[0-9a-f]*: ee 1f 00 00 eorh pc,0x0
++ *[0-9a-f]*: ee 1c ff ff eorh r12,0xffff
++ *[0-9a-f]*: ee 15 80 00 eorh r5,0x8000
++ *[0-9a-f]*: ee 14 7f ff eorh r4,0x7fff
++ *[0-9a-f]*: ee 1e 00 01 eorh lr,0x1
++ *[0-9a-f]*: ee 10 2d d4 eorh r0,0x2dd4
++ *[0-9a-f]*: ee 1a 94 b5 eorh r10,0x94b5
++ *[0-9a-f]*: ee 19 df 2a eorh r9,0xdf2a
++
++[0-9a-f]* <mcall>:
++ *[0-9a-f]*: f0 1f 00 00 mcall [0-9a-f]* <.*>
++ *[0-9a-f]*: f0 1c ff ff mcall r12\[-4\]
++ *[0-9a-f]*: f0 15 80 00 mcall r5\[-131072\]
++ *[0-9a-f]*: f0 14 7f ff mcall r4\[131068\]
++ *[0-9a-f]*: f0 1e 00 01 mcall lr\[4\]
++ *[0-9a-f]*: f0 1d 3b bf mcall sp\[61180\]
++ *[0-9a-f]*: f0 14 dd d2 mcall r4\[-35000\]
++ *[0-9a-f]*: f0 10 09 b1 mcall r0\[9924\]
++
++[0-9a-f]* <pref>:
++ *[0-9a-f]*: f2 1f 00 00 pref pc\[0\]
++ *[0-9a-f]*: f2 1c ff ff pref r12\[-1\]
++ *[0-9a-f]*: f2 15 80 00 pref r5\[-32768\]
++ *[0-9a-f]*: f2 14 7f ff pref r4\[32767\]
++ *[0-9a-f]*: f2 1e 00 01 pref lr\[1\]
++ *[0-9a-f]*: f2 17 1e 44 pref r7\[7748\]
++ *[0-9a-f]*: f2 17 e1 ed pref r7\[-7699\]
++ *[0-9a-f]*: f2 12 9a dc pref r2\[-25892\]
++
++[0-9a-f]* <cache>:
++ *[0-9a-f]*: f4 1f 00 00 cache pc\[0\],0x0
++ *[0-9a-f]*: f4 1c ff ff cache r12\[-1\],0x1f
++ *[0-9a-f]*: f4 15 84 00 cache r5\[-1024\],0x10
++ *[0-9a-f]*: f4 14 7b ff cache r4\[1023\],0xf
++ *[0-9a-f]*: f4 1e 08 01 cache lr\[1\],0x1
++ *[0-9a-f]*: f4 13 8c 3c cache r3\[-964\],0x11
++ *[0-9a-f]*: f4 14 b6 89 cache r4\[-375\],0x16
++ *[0-9a-f]*: f4 13 8c 88 cache r3\[-888\],0x11
++
++[0-9a-f]* <sub4>:
++ *[0-9a-f]*: 20 0f sub pc,0
++ *[0-9a-f]*: 2f fc sub r12,-1
++ *[0-9a-f]*: f0 25 00 00 sub r5,-1048576
++ *[0-9a-f]*: ee 34 ff ff sub r4,1048575
++ *[0-9a-f]*: 20 1e sub lr,1
++ *[0-9a-f]*: f6 22 8d 6c sub r2,-619156
++ *[0-9a-f]*: e6 3e 0a cd sub lr,461517
++ *[0-9a-f]*: fc 38 2d 25 sub r8,-185051
++
++[0-9a-f]* <cp3>:
++ *[0-9a-f]*: 58 0f cp.w pc,0
++ *[0-9a-f]*: 5b fc cp.w r12,-1
++ *[0-9a-f]*: f0 45 00 00 cp.w r5,-1048576
++ *[0-9a-f]*: ee 54 ff ff cp.w r4,1048575
++ *[0-9a-f]*: 58 1e cp.w lr,1
++ *[0-9a-f]*: e0 51 e4 ae cp.w r1,124078
++ *[0-9a-f]*: fa 40 37 e3 cp.w r0,-378909
++ *[0-9a-f]*: fc 44 4a 14 cp.w r4,-243180
++
++[0-9a-f]* <mov2>:
++ *[0-9a-f]*: 30 0f mov pc,0
++ *[0-9a-f]*: 3f fc mov r12,-1
++ *[0-9a-f]*: f0 65 00 00 mov r5,-1048576
++ *[0-9a-f]*: ee 74 ff ff mov r4,1048575
++ *[0-9a-f]*: 30 1e mov lr,1
++ *[0-9a-f]*: fa 75 29 a3 mov r5,-317021
++ *[0-9a-f]*: f4 6d 91 94 mov sp,-749164
++ *[0-9a-f]*: ee 65 58 93 mov r5,940179
++
++[0-9a-f]* <brc2>:
++ *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
++ *[0-9a-f]*: fe 9f ff ff bral [0-9a-f]* <.*>
++ *[0-9a-f]*: f0 88 00 00 brls [0-9a-f]* <.*>
++ *[0-9a-f]*: ee 97 ff ff brpl [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
++ *[0-9a-f]*: f2 8b 4a 4d brhi [0-9a-f]* <.*>
++ *[0-9a-f]*: ea 8e 14 cc brqs [0-9a-f]* <.*>
++ *[0-9a-f]*: fa 98 98 33 brls [0-9a-f]* <.*>
++
++[0-9a-f]* <rcall2>:
++ *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: f0 a0 00 00 rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: ee b0 ff ff rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: e2 b0 ca 5a rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: e8 a0 47 52 rcall [0-9a-f]* <.*>
++ *[0-9a-f]*: fe b0 fd ef rcall [0-9a-f]* <.*>
++
++[0-9a-f]* <sub5>:
++ *[0-9a-f]*: fe cf 00 00 sub pc,pc,0
++ *[0-9a-f]*: f8 cc ff ff sub r12,r12,-1
++ *[0-9a-f]*: ea c5 80 00 sub r5,r5,-32768
++ *[0-9a-f]*: e8 c4 7f ff sub r4,r4,32767
++ *[0-9a-f]*: fc ce 00 01 sub lr,lr,1
++ *[0-9a-f]*: fe cf ce 38 sub pc,pc,-12744
++ *[0-9a-f]*: ee c7 95 1b sub r7,r7,-27365
++ *[0-9a-f]*: f2 c2 bc 32 sub r2,r9,-17358
++
++[0-9a-f]* <satsub_w2>:
++ *[0-9a-f]*: fe df 00 00 satsub\.w pc,pc,0
++ *[0-9a-f]*: f8 dc ff ff satsub\.w r12,r12,-1
++ *[0-9a-f]*: ea d5 80 00 satsub\.w r5,r5,-32768
++ *[0-9a-f]*: e8 d4 7f ff satsub\.w r4,r4,32767
++ *[0-9a-f]*: fc de 00 01 satsub\.w lr,lr,1
++ *[0-9a-f]*: fc d2 f8 29 satsub\.w r2,lr,-2007
++ *[0-9a-f]*: f8 d7 fc f0 satsub\.w r7,r12,-784
++ *[0-9a-f]*: ee d4 5a 8c satsub\.w r4,r7,23180
++
++[0-9a-f]* <ld_d4>:
++ *[0-9a-f]*: fe e0 00 00 ld\.d r0,pc\[0\]
++ *[0-9a-f]*: f8 ee ff ff ld\.d lr,r12\[-1\]
++ *[0-9a-f]*: ea e8 80 00 ld\.d r8,r5\[-32768\]
++ *[0-9a-f]*: e8 e6 7f ff ld\.d r6,r4\[32767\]
++ *[0-9a-f]*: fc e2 00 01 ld\.d r2,lr\[1\]
++ *[0-9a-f]*: f6 ee 39 c0 ld\.d lr,r11\[14784\]
++ *[0-9a-f]*: f2 e6 b6 27 ld\.d r6,r9\[-18905\]
++ *[0-9a-f]*: e6 e2 e7 2d ld\.d r2,r3\[-6355\]
++
++[0-9a-f]* <ld_w4>:
++ *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
++ *[0-9a-f]*: f8 fc ff ff ld\.w r12,r12\[-1\]
++ *[0-9a-f]*: ea f5 80 00 ld\.w r5,r5\[-32768\]
++ *[0-9a-f]*: e8 f4 7f ff ld\.w r4,r4\[32767\]
++ *[0-9a-f]*: fc fe 00 01 ld\.w lr,lr\[1\]
++ *[0-9a-f]*: f8 f0 a9 8b ld\.w r0,r12\[-22133\]
++ *[0-9a-f]*: fe fd af d7 ld\.w sp,pc\[-20521\]
++ *[0-9a-f]*: d7 03 nop
++
++[0-9a-f]* <ld_sh4>:
++ *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
++ *[0-9a-f]*: f9 0c ff ff ld\.sh r12,r12\[-1\]
++ *[0-9a-f]*: eb 05 80 00 ld\.sh r5,r5\[-32768\]
++ *[0-9a-f]*: e9 04 7f ff ld\.sh r4,r4\[32767\]
++ *[0-9a-f]*: fd 0e 00 01 ld\.sh lr,lr\[1\]
++ *[0-9a-f]*: f5 06 78 d2 ld\.sh r6,r10\[30930\]
++ *[0-9a-f]*: f5 06 55 d5 ld\.sh r6,r10\[21973\]
++ *[0-9a-f]*: d7 03 nop
++
++[0-9a-f]* <ld_uh4>:
++ *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
++ *[0-9a-f]*: f9 1c ff ff ld\.uh r12,r12\[-1\]
++ *[0-9a-f]*: eb 15 80 00 ld\.uh r5,r5\[-32768\]
++ *[0-9a-f]*: e9 14 7f ff ld\.uh r4,r4\[32767\]
++ *[0-9a-f]*: fd 1e 00 01 ld\.uh lr,lr\[1\]
++ *[0-9a-f]*: f3 11 cb d6 ld\.uh r1,r9\[-13354\]
++ *[0-9a-f]*: f7 1e 53 59 ld\.uh lr,r11\[21337\]
++ *[0-9a-f]*: d7 03 nop
++
++[0-9a-f]* <ld_sb1>:
++ *[0-9a-f]*: ff 2f 00 00 ld\.sb pc,pc\[0\]
++ *[0-9a-f]*: f9 2c ff ff ld\.sb r12,r12\[-1\]
++ *[0-9a-f]*: eb 25 80 00 ld\.sb r5,r5\[-32768\]
++ *[0-9a-f]*: e9 24 7f ff ld\.sb r4,r4\[32767\]
++ *[0-9a-f]*: fd 2e 00 01 ld\.sb lr,lr\[1\]
++ *[0-9a-f]*: fb 27 90 09 ld\.sb r7,sp\[-28663\]
++ *[0-9a-f]*: e3 22 e9 09 ld\.sb r2,r1\[-5879\]
++ *[0-9a-f]*: e7 2c 49 2e ld\.sb r12,r3\[18734\]
++
++[0-9a-f]* <ld_ub4>:
++ *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
++ *[0-9a-f]*: f9 3c ff ff ld\.ub r12,r12\[-1\]
++ *[0-9a-f]*: eb 35 80 00 ld\.ub r5,r5\[-32768\]
++ *[0-9a-f]*: e9 34 7f ff ld\.ub r4,r4\[32767\]
++ *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
++ *[0-9a-f]*: e9 3f 20 55 ld\.ub pc,r4\[8277\]
++ *[0-9a-f]*: f9 35 4a e4 ld\.ub r5,r12\[19172\]
++ *[0-9a-f]*: fd 3a 66 eb ld\.ub r10,lr\[26347\]
++
++[0-9a-f]* <st_d4>:
++ *[0-9a-f]*: fe e1 00 00 st\.d pc\[0\],r0
++ *[0-9a-f]*: f8 ef ff ff st\.d r12\[-1\],lr
++ *[0-9a-f]*: ea e9 80 00 st\.d r5\[-32768\],r8
++ *[0-9a-f]*: e8 e7 7f ff st\.d r4\[32767\],r6
++ *[0-9a-f]*: fc e3 00 01 st\.d lr\[1\],r2
++ *[0-9a-f]*: ea eb 33 90 st\.d r5\[13200\],r10
++ *[0-9a-f]*: ea eb 24 88 st\.d r5\[9352\],r10
++ *[0-9a-f]*: ea e5 7e 75 st\.d r5\[32373\],r4
++
++[0-9a-f]* <st_w4>:
++ *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
++ *[0-9a-f]*: f9 4c ff ff st\.w r12\[-1\],r12
++ *[0-9a-f]*: eb 45 80 00 st\.w r5\[-32768\],r5
++ *[0-9a-f]*: e9 44 7f ff st\.w r4\[32767\],r4
++ *[0-9a-f]*: fd 4e 00 01 st\.w lr\[1\],lr
++ *[0-9a-f]*: fb 47 17 f8 st\.w sp\[6136\],r7
++ *[0-9a-f]*: ed 4c 69 cf st\.w r6\[27087\],r12
++ *[0-9a-f]*: d7 03 nop
++
++[0-9a-f]* <st_h4>:
++ *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
++ *[0-9a-f]*: f9 5c ff ff st\.h r12\[-1\],r12
++ *[0-9a-f]*: eb 55 80 00 st\.h r5\[-32768\],r5
++ *[0-9a-f]*: e9 54 7f ff st\.h r4\[32767\],r4
++ *[0-9a-f]*: fd 5e 00 01 st\.h lr\[1\],lr
++ *[0-9a-f]*: e9 57 d9 16 st\.h r4\[-9962\],r7
++ *[0-9a-f]*: f3 53 c0 86 st\.h r9\[-16250\],r3
++ *[0-9a-f]*: d7 03 nop
++
++[0-9a-f]* <st_b4>:
++ *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
++ *[0-9a-f]*: f9 6c ff ff st\.b r12\[-1\],r12
++ *[0-9a-f]*: eb 65 80 00 st\.b r5\[-32768\],r5
++ *[0-9a-f]*: e9 64 7f ff st\.b r4\[32767\],r4
++ *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
++ *[0-9a-f]*: f9 66 75 96 st\.b r12\[30102\],r6
++ *[0-9a-f]*: eb 61 71 31 st\.b r5\[28977\],r1
++ *[0-9a-f]*: e1 61 15 5e st\.b r0\[5470\],r1
++
++[0-9a-f]* <mfsr>:
++ *[0-9a-f]*: e1 bf 00 00 mfsr pc,0x0
++ *[0-9a-f]*: e1 bc 00 ff mfsr r12,0x3fc
++ *[0-9a-f]*: e1 b5 00 80 mfsr r5,0x200
++ *[0-9a-f]*: e1 b4 00 7f mfsr r4,0x1fc
++ *[0-9a-f]*: e1 be 00 01 mfsr lr,0x4
++ *[0-9a-f]*: e1 b2 00 ae mfsr r2,0x2b8
++ *[0-9a-f]*: e1 b4 00 41 mfsr r4,0x104
++ *[0-9a-f]*: e1 ba 00 fe mfsr r10,0x3f8
++
++[0-9a-f]* <mtsr>:
++ *[0-9a-f]*: e3 bf 00 00 mtsr 0x0,pc
++ *[0-9a-f]*: e3 bc 00 ff mtsr 0x3fc,r12
++ *[0-9a-f]*: e3 b5 00 80 mtsr 0x200,r5
++ *[0-9a-f]*: e3 b4 00 7f mtsr 0x1fc,r4
++ *[0-9a-f]*: e3 be 00 01 mtsr 0x4,lr
++ *[0-9a-f]*: e3 ba 00 38 mtsr 0xe0,r10
++ *[0-9a-f]*: e3 bc 00 d1 mtsr 0x344,r12
++ *[0-9a-f]*: e3 b9 00 4c mtsr 0x130,r9
++
++[0-9a-f]* <mfdr>:
++ *[0-9a-f]*: e5 bf 00 00 mfdr pc,0x0
++ *[0-9a-f]*: e5 bc 00 ff mfdr r12,0x3fc
++ *[0-9a-f]*: e5 b5 00 80 mfdr r5,0x200
++ *[0-9a-f]*: e5 b4 00 7f mfdr r4,0x1fc
++ *[0-9a-f]*: e5 be 00 01 mfdr lr,0x4
++ *[0-9a-f]*: e5 b6 00 e9 mfdr r6,0x3a4
++ *[0-9a-f]*: e5 b5 00 09 mfdr r5,0x24
++ *[0-9a-f]*: e5 b9 00 4b mfdr r9,0x12c
++
++[0-9a-f]* <mtdr>:
++ *[0-9a-f]*: e7 bf 00 00 mtdr 0x0,pc
++ *[0-9a-f]*: e7 bc 00 ff mtdr 0x3fc,r12
++ *[0-9a-f]*: e7 b5 00 80 mtdr 0x200,r5
++ *[0-9a-f]*: e7 b4 00 7f mtdr 0x1fc,r4
++ *[0-9a-f]*: e7 be 00 01 mtdr 0x4,lr
++ *[0-9a-f]*: e7 b8 00 2d mtdr 0xb4,r8
++ *[0-9a-f]*: e7 ba 00 b4 mtdr 0x2d0,r10
++ *[0-9a-f]*: e7 be 00 66 mtdr 0x198,lr
++
++[0-9a-f]* <sleep>:
++ *[0-9a-f]*: e9 b0 00 00 sleep 0x0
++ *[0-9a-f]*: e9 b0 00 ff sleep 0xff
++ *[0-9a-f]*: e9 b0 00 80 sleep 0x80
++ *[0-9a-f]*: e9 b0 00 7f sleep 0x7f
++ *[0-9a-f]*: e9 b0 00 01 sleep 0x1
++ *[0-9a-f]*: e9 b0 00 fe sleep 0xfe
++ *[0-9a-f]*: e9 b0 00 0f sleep 0xf
++ *[0-9a-f]*: e9 b0 00 2b sleep 0x2b
++
++[0-9a-f]* <sync>:
++ *[0-9a-f]*: eb b0 00 00 sync 0x0
++ *[0-9a-f]*: eb b0 00 ff sync 0xff
++ *[0-9a-f]*: eb b0 00 80 sync 0x80
++ *[0-9a-f]*: eb b0 00 7f sync 0x7f
++ *[0-9a-f]*: eb b0 00 01 sync 0x1
++ *[0-9a-f]*: eb b0 00 a6 sync 0xa6
++ *[0-9a-f]*: eb b0 00 e6 sync 0xe6
++ *[0-9a-f]*: eb b0 00 b4 sync 0xb4
++
++[0-9a-f]* <bld>:
++ *[0-9a-f]*: ed bf 00 00 bld pc,0x0
++ *[0-9a-f]*: ed bc 00 1f bld r12,0x1f
++ *[0-9a-f]*: ed b5 00 10 bld r5,0x10
++ *[0-9a-f]*: ed b4 00 0f bld r4,0xf
++ *[0-9a-f]*: ed be 00 01 bld lr,0x1
++ *[0-9a-f]*: ed b9 00 0f bld r9,0xf
++ *[0-9a-f]*: ed b0 00 04 bld r0,0x4
++ *[0-9a-f]*: ed be 00 1a bld lr,0x1a
++
++[0-9a-f]* <bst>:
++ *[0-9a-f]*: ef bf 00 00 bst pc,0x0
++ *[0-9a-f]*: ef bc 00 1f bst r12,0x1f
++ *[0-9a-f]*: ef b5 00 10 bst r5,0x10
++ *[0-9a-f]*: ef b4 00 0f bst r4,0xf
++ *[0-9a-f]*: ef be 00 01 bst lr,0x1
++ *[0-9a-f]*: ef ba 00 1c bst r10,0x1c
++ *[0-9a-f]*: ef b0 00 03 bst r0,0x3
++ *[0-9a-f]*: ef bd 00 02 bst sp,0x2
++
++[0-9a-f]* <sats>:
++ *[0-9a-f]*: f1 bf 00 00 sats pc,0x0
++ *[0-9a-f]*: f1 bc 03 ff sats r12>>0x1f,0x1f
++ *[0-9a-f]*: f1 b5 02 10 sats r5>>0x10,0x10
++ *[0-9a-f]*: f1 b4 01 ef sats r4>>0xf,0xf
++ *[0-9a-f]*: f1 be 00 21 sats lr>>0x1,0x1
++ *[0-9a-f]*: f1 ba 02 63 sats r10>>0x3,0x13
++ *[0-9a-f]*: f1 ba 03 42 sats r10>>0x2,0x1a
++ *[0-9a-f]*: f1 b1 00 34 sats r1>>0x14,0x1
++
++[0-9a-f]* <satu>:
++ *[0-9a-f]*: f1 bf 04 00 satu pc,0x0
++ *[0-9a-f]*: f1 bc 07 ff satu r12>>0x1f,0x1f
++ *[0-9a-f]*: f1 b5 06 10 satu r5>>0x10,0x10
++ *[0-9a-f]*: f1 b4 05 ef satu r4>>0xf,0xf
++ *[0-9a-f]*: f1 be 04 21 satu lr>>0x1,0x1
++ *[0-9a-f]*: f1 bf 04 e5 satu pc>>0x5,0x7
++ *[0-9a-f]*: f1 b7 04 a5 satu r7>>0x5,0x5
++ *[0-9a-f]*: f1 b2 06 7a satu r2>>0x1a,0x13
++
++[0-9a-f]* <satrnds>:
++ *[0-9a-f]*: f3 bf 00 00 satrnds pc,0x0
++ *[0-9a-f]*: f3 bc 03 ff satrnds r12>>0x1f,0x1f
++ *[0-9a-f]*: f3 b5 02 10 satrnds r5>>0x10,0x10
++ *[0-9a-f]*: f3 b4 01 ef satrnds r4>>0xf,0xf
++ *[0-9a-f]*: f3 be 00 21 satrnds lr>>0x1,0x1
++ *[0-9a-f]*: f3 b0 02 75 satrnds r0>>0x15,0x13
++ *[0-9a-f]*: f3 bd 00 40 satrnds sp,0x2
++ *[0-9a-f]*: f3 b7 03 a6 satrnds r7>>0x6,0x1d
++
++[0-9a-f]* <satrndu>:
++ *[0-9a-f]*: f3 bf 04 00 satrndu pc,0x0
++ *[0-9a-f]*: f3 bc 07 ff satrndu r12>>0x1f,0x1f
++ *[0-9a-f]*: f3 b5 06 10 satrndu r5>>0x10,0x10
++ *[0-9a-f]*: f3 b4 05 ef satrndu r4>>0xf,0xf
++ *[0-9a-f]*: f3 be 04 21 satrndu lr>>0x1,0x1
++ *[0-9a-f]*: f3 bc 07 40 satrndu r12,0x1a
++ *[0-9a-f]*: f3 b4 04 75 satrndu r4>>0x15,0x3
++ *[0-9a-f]*: f3 ba 06 03 satrndu r10>>0x3,0x10
++
++[0-9a-f]* <subfc>:
++ *[0-9a-f]*: f5 bf 00 00 subfeq pc,0
++ *[0-9a-f]*: f5 bc 0f ff subfal r12,-1
++ *[0-9a-f]*: f5 b5 08 80 subfls r5,-128
++ *[0-9a-f]*: f5 b4 07 7f subfpl r4,127
++ *[0-9a-f]*: f5 be 01 01 subfne lr,1
++ *[0-9a-f]*: f5 ba 08 08 subfls r10,8
++ *[0-9a-f]*: f5 bb 0d 63 subfvc r11,99
++ *[0-9a-f]*: f5 b2 0c 49 subfvs r2,73
++
++[0-9a-f]* <subc>:
++ *[0-9a-f]*: f7 bf 00 00 subeq pc,0
++ *[0-9a-f]*: f7 bc 0f ff subal r12,-1
++ *[0-9a-f]*: f7 b5 08 80 subls r5,-128
++ *[0-9a-f]*: f7 b4 07 7f subpl r4,127
++ *[0-9a-f]*: f7 be 01 01 subne lr,1
++ *[0-9a-f]*: f7 bc 08 76 subls r12,118
++ *[0-9a-f]*: f7 be 0d f4 subvc lr,-12
++ *[0-9a-f]*: f7 b4 06 f3 submi r4,-13
++
++[0-9a-f]* <movc2>:
++ *[0-9a-f]*: f9 bf 00 00 moveq pc,0
++ *[0-9a-f]*: f9 bc 0f ff moval r12,-1
++ *[0-9a-f]*: f9 b5 08 80 movls r5,-128
++ *[0-9a-f]*: f9 b4 07 7f movpl r4,127
++ *[0-9a-f]*: f9 be 01 01 movne lr,1
++ *[0-9a-f]*: f9 b3 05 86 movlt r3,-122
++ *[0-9a-f]*: f9 b8 0d 02 movvc r8,2
++ *[0-9a-f]*: f9 b7 01 91 movne r7,-111
++
++[0-9a-f]* <cp_b>:
++ *[0-9a-f]*: e0 0f 18 00 cp\.b pc,r0
++ *[0-9a-f]*: fe 00 18 00 cp\.b r0,pc
++ *[0-9a-f]*: f0 07 18 00 cp\.b r7,r8
++ *[0-9a-f]*: ee 08 18 00 cp\.b r8,r7
++
++[0-9a-f]* <cp_h>:
++ *[0-9a-f]*: e0 0f 19 00 cp\.h pc,r0
++ *[0-9a-f]*: fe 00 19 00 cp\.h r0,pc
++ *[0-9a-f]*: f0 07 19 00 cp\.h r7,r8
++ *[0-9a-f]*: ee 08 19 00 cp\.h r8,r7
++
++[0-9a-f]* <ldm>:
++ *[0-9a-f]*: e1 cf 00 7e ldm pc,r1-r6
++ *[0-9a-f]*: e1 cc ff ff ldm r12,r0-pc
++ *[0-9a-f]*: e1 c5 80 00 ldm r5,pc
++ *[0-9a-f]*: e1 c4 7f ff ldm r4,r0-lr
++ *[0-9a-f]*: e1 ce 00 01 ldm lr,r0
++ *[0-9a-f]*: e1 c9 40 22 ldm r9,r1,r5,lr
++ *[0-9a-f]*: e1 cb 81 ec ldm r11,r2-r3,r5-r8,pc
++ *[0-9a-f]*: e1 c6 a2 09 ldm r6,r0,r3,r9,sp,pc
++
++[0-9a-f]* <ldm_pu>:
++ *[0-9a-f]*: e3 cf 03 c0 ldm pc\+\+,r6-r9
++ *[0-9a-f]*: e3 cc ff ff ldm r12\+\+,r0-pc
++ *[0-9a-f]*: e3 c5 80 00 ldm r5\+\+,pc
++ *[0-9a-f]*: e3 c4 7f ff ldm r4\+\+,r0-lr
++ *[0-9a-f]*: e3 ce 00 01 ldm lr\+\+,r0
++ *[0-9a-f]*: e3 cc d5 38 ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
++ *[0-9a-f]*: e3 ca c0 74 ldm r10\+\+,r2,r4-r6,lr-pc
++ *[0-9a-f]*: e3 c6 7e 1a ldm r6\+\+,r1,r3-r4,r9-lr
++
++[0-9a-f]* <ldmts>:
++ *[0-9a-f]*: e5 cf 01 80 ldmts pc,r7-r8
++ *[0-9a-f]*: e5 cc ff ff ldmts r12,r0-pc
++ *[0-9a-f]*: e5 c5 80 00 ldmts r5,pc
++ *[0-9a-f]*: e5 c4 7f ff ldmts r4,r0-lr
++ *[0-9a-f]*: e5 ce 00 01 ldmts lr,r0
++ *[0-9a-f]*: e5 c0 18 06 ldmts r0,r1-r2,r11-r12
++ *[0-9a-f]*: e5 ce 61 97 ldmts lr,r0-r2,r4,r7-r8,sp-lr
++ *[0-9a-f]*: e5 cc c2 3b ldmts r12,r0-r1,r3-r5,r9,lr-pc
++
++[0-9a-f]* <ldmts_pu>:
++ *[0-9a-f]*: e7 cf 02 00 ldmts pc\+\+,r9
++ *[0-9a-f]*: e7 cc ff ff ldmts r12\+\+,r0-pc
++ *[0-9a-f]*: e7 c5 80 00 ldmts r5\+\+,pc
++ *[0-9a-f]*: e7 c4 7f ff ldmts r4\+\+,r0-lr
++ *[0-9a-f]*: e7 ce 00 01 ldmts lr\+\+,r0
++ *[0-9a-f]*: e7 cd 0a bd ldmts sp\+\+,r0,r2-r5,r7,r9,r11
++ *[0-9a-f]*: e7 c5 0c 8e ldmts r5\+\+,r1-r3,r7,r10-r11
++ *[0-9a-f]*: e7 c8 a1 9c ldmts r8\+\+,r2-r4,r7-r8,sp,pc
++
++[0-9a-f]* <stm>:
++ *[0-9a-f]*: e9 cf 00 80 stm pc,r7
++ *[0-9a-f]*: e9 cc ff ff stm r12,r0-pc
++ *[0-9a-f]*: e9 c5 80 00 stm r5,pc
++ *[0-9a-f]*: e9 c4 7f ff stm r4,r0-lr
++ *[0-9a-f]*: e9 ce 00 01 stm lr,r0
++ *[0-9a-f]*: e9 cd 49 2c stm sp,r2-r3,r5,r8,r11,lr
++ *[0-9a-f]*: e9 c4 4c 5f stm r4,r0-r4,r6,r10-r11,lr
++ *[0-9a-f]*: e9 c9 f2 22 stm r9,r1,r5,r9,r12-pc
++
++[0-9a-f]* <stm_pu>:
++ *[0-9a-f]*: eb cf 00 70 stm --pc,r4-r6
++ *[0-9a-f]*: eb cc ff ff stm --r12,r0-pc
++ *[0-9a-f]*: eb c5 80 00 stm --r5,pc
++ *[0-9a-f]*: eb c4 7f ff stm --r4,r0-lr
++ *[0-9a-f]*: eb ce 00 01 stm --lr,r0
++ *[0-9a-f]*: eb cb fb f1 stm --r11,r0,r4-r9,r11-pc
++ *[0-9a-f]*: eb cb 56 09 stm --r11,r0,r3,r9-r10,r12,lr
++ *[0-9a-f]*: eb c6 63 04 stm --r6,r2,r8-r9,sp-lr
++
++[0-9a-f]* <stmts>:
++ *[0-9a-f]*: ed cf 01 00 stmts pc,r8
++ *[0-9a-f]*: ed cc ff ff stmts r12,r0-pc
++ *[0-9a-f]*: ed c5 80 00 stmts r5,pc
++ *[0-9a-f]*: ed c4 7f ff stmts r4,r0-lr
++ *[0-9a-f]*: ed ce 00 01 stmts lr,r0
++ *[0-9a-f]*: ed c1 c6 5b stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
++ *[0-9a-f]*: ed c3 1d c1 stmts r3,r0,r6-r8,r10-r12
++ *[0-9a-f]*: ed cb d6 d1 stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
++
++[0-9a-f]* <stmts_pu>:
++ *[0-9a-f]*: ef cf 01 c0 stmts --pc,r6-r8
++ *[0-9a-f]*: ef cc ff ff stmts --r12,r0-pc
++ *[0-9a-f]*: ef c5 80 00 stmts --r5,pc
++ *[0-9a-f]*: ef c4 7f ff stmts --r4,r0-lr
++ *[0-9a-f]*: ef ce 00 01 stmts --lr,r0
++ *[0-9a-f]*: ef c2 36 19 stmts --r2,r0,r3-r4,r9-r10,r12-sp
++ *[0-9a-f]*: ef c3 c0 03 stmts --r3,r0-r1,lr-pc
++ *[0-9a-f]*: ef c0 44 7d stmts --r0,r0,r2-r6,r10,lr
++
++[0-9a-f]* <ldins_h>:
++ *[0-9a-f]*: ff df 00 00 ldins\.h pc:b,pc\[0\]
++ *[0-9a-f]*: f9 dc 1f ff ldins\.h r12:t,r12\[-2\]
++ *[0-9a-f]*: eb d5 18 00 ldins\.h r5:t,r5\[-4096\]
++ *[0-9a-f]*: e9 d4 07 ff ldins\.h r4:b,r4\[4094\]
++ *[0-9a-f]*: fd de 10 01 ldins\.h lr:t,lr\[2\]
++ *[0-9a-f]*: fd d0 13 c5 ldins\.h r0:t,lr\[1930\]
++ *[0-9a-f]*: ef d3 0e f5 ldins\.h r3:b,r7\[-534\]
++ *[0-9a-f]*: f9 d2 0b 9a ldins\.h r2:b,r12\[-2252\]
++
++[0-9a-f]* <ldins_b>:
++ *[0-9a-f]*: ff df 40 00 ldins\.b pc:b,pc\[0\]
++ *[0-9a-f]*: f9 dc 7f ff ldins\.b r12:t,r12\[-1\]
++ *[0-9a-f]*: eb d5 68 00 ldins\.b r5:u,r5\[-2048\]
++ *[0-9a-f]*: e9 d4 57 ff ldins\.b r4:l,r4\[2047\]
++ *[0-9a-f]*: fd de 50 01 ldins\.b lr:l,lr\[1\]
++ *[0-9a-f]*: e9 d6 7d 6a ldins\.b r6:t,r4\[-662\]
++ *[0-9a-f]*: e3 d5 4f 69 ldins\.b r5:b,r1\[-151\]
++ *[0-9a-f]*: f7 da 78 7d ldins\.b r10:t,r11\[-1923\]
++
++[0-9a-f]* <ldswp_sh>:
++ *[0-9a-f]*: ff df 20 00 ldswp\.sh pc,pc\[0\]
++ *[0-9a-f]*: f9 dc 2f ff ldswp\.sh r12,r12\[-2\]
++ *[0-9a-f]*: eb d5 28 00 ldswp\.sh r5,r5\[-4096\]
++ *[0-9a-f]*: e9 d4 27 ff ldswp\.sh r4,r4\[4094\]
++ *[0-9a-f]*: fd de 20 01 ldswp\.sh lr,lr\[2\]
++ *[0-9a-f]*: f5 d9 27 84 ldswp\.sh r9,r10\[3848\]
++ *[0-9a-f]*: f9 d4 2c 04 ldswp\.sh r4,r12\[-2040\]
++ *[0-9a-f]*: e5 da 26 08 ldswp\.sh r10,r2\[3088\]
++
++[0-9a-f]* <ldswp_uh>:
++ *[0-9a-f]*: ff df 30 00 ldswp\.uh pc,pc\[0\]
++ *[0-9a-f]*: f9 dc 3f ff ldswp\.uh r12,r12\[-2\]
++ *[0-9a-f]*: eb d5 38 00 ldswp\.uh r5,r5\[-4096\]
++ *[0-9a-f]*: e9 d4 37 ff ldswp\.uh r4,r4\[4094\]
++ *[0-9a-f]*: fd de 30 01 ldswp\.uh lr,lr\[2\]
++ *[0-9a-f]*: f3 d4 37 46 ldswp\.uh r4,r9\[3724\]
++ *[0-9a-f]*: fb de 3c bc ldswp\.uh lr,sp\[-1672\]
++ *[0-9a-f]*: f9 d8 38 7d ldswp\.uh r8,r12\[-3846\]
++
++[0-9a-f]* <ldswp_w>:
++ *[0-9a-f]*: ff df 80 00 ldswp\.w pc,pc\[0\]
++ *[0-9a-f]*: f9 dc 8f ff ldswp\.w r12,r12\[-4\]
++ *[0-9a-f]*: eb d5 88 00 ldswp\.w r5,r5\[-8192\]
++ *[0-9a-f]*: e9 d4 87 ff ldswp\.w r4,r4\[8188\]
++ *[0-9a-f]*: fd de 80 01 ldswp\.w lr,lr\[4\]
++ *[0-9a-f]*: ef dd 81 d1 ldswp\.w sp,r7\[1860\]
++ *[0-9a-f]*: eb df 8c c1 ldswp\.w pc,r5\[-3324\]
++ *[0-9a-f]*: f5 dc 8c c8 ldswp\.w r12,r10\[-3296\]
++
++[0-9a-f]* <stswp_h>:
++ *[0-9a-f]*: ff df 90 00 stswp\.h pc\[0\],pc
++ *[0-9a-f]*: f9 dc 9f ff stswp\.h r12\[-2\],r12
++ *[0-9a-f]*: eb d5 98 00 stswp\.h r5\[-4096\],r5
++ *[0-9a-f]*: e9 d4 97 ff stswp\.h r4\[4094\],r4
++ *[0-9a-f]*: fd de 90 01 stswp\.h lr\[2\],lr
++ *[0-9a-f]*: ef da 90 20 stswp\.h r7\[64\],r10
++ *[0-9a-f]*: f5 d2 95 e8 stswp\.h r10\[3024\],r2
++ *[0-9a-f]*: e1 da 9b 74 stswp\.h r0\[-2328\],r10
++
++[0-9a-f]* <stswp_w>:
++ *[0-9a-f]*: ff df a0 00 stswp\.w pc\[0\],pc
++ *[0-9a-f]*: f9 dc af ff stswp\.w r12\[-4\],r12
++ *[0-9a-f]*: eb d5 a8 00 stswp\.w r5\[-8192\],r5
++ *[0-9a-f]*: e9 d4 a7 ff stswp\.w r4\[8188\],r4
++ *[0-9a-f]*: fd de a0 01 stswp\.w lr\[4\],lr
++ *[0-9a-f]*: ff d8 a1 21 stswp\.w pc\[1156\],r8
++ *[0-9a-f]*: fb da a7 ce stswp\.w sp\[7992\],r10
++ *[0-9a-f]*: f1 d5 ae db stswp\.w r8\[-1172\],r5
++
++[0-9a-f]* <and2>:
++ *[0-9a-f]*: ff ef 00 0f and pc,pc,pc
++ *[0-9a-f]*: f9 ec 01 fc and r12,r12,r12<<0x1f
++ *[0-9a-f]*: eb e5 01 05 and r5,r5,r5<<0x10
++ *[0-9a-f]*: e9 e4 00 f4 and r4,r4,r4<<0xf
++ *[0-9a-f]*: fd ee 00 1e and lr,lr,lr<<0x1
++ *[0-9a-f]*: e5 e1 00 1a and r10,r2,r1<<0x1
++ *[0-9a-f]*: f1 eb 01 bc and r12,r8,r11<<0x1b
++ *[0-9a-f]*: ef e0 00 3a and r10,r7,r0<<0x3
++
++[0-9a-f]* <and3>:
++ *[0-9a-f]*: ff ef 02 0f and pc,pc,pc
++ *[0-9a-f]*: f9 ec 03 fc and r12,r12,r12>>0x1f
++ *[0-9a-f]*: eb e5 03 05 and r5,r5,r5>>0x10
++ *[0-9a-f]*: e9 e4 02 f4 and r4,r4,r4>>0xf
++ *[0-9a-f]*: fd ee 02 1e and lr,lr,lr>>0x1
++ *[0-9a-f]*: f1 e7 03 1c and r12,r8,r7>>0x11
++ *[0-9a-f]*: e9 e9 03 4f and pc,r4,r9>>0x14
++ *[0-9a-f]*: f3 ea 02 ca and r10,r9,r10>>0xc
++
++[0-9a-f]* <or2>:
++ *[0-9a-f]*: ff ef 10 0f or pc,pc,pc
++ *[0-9a-f]*: f9 ec 11 fc or r12,r12,r12<<0x1f
++ *[0-9a-f]*: eb e5 11 05 or r5,r5,r5<<0x10
++ *[0-9a-f]*: e9 e4 10 f4 or r4,r4,r4<<0xf
++ *[0-9a-f]*: fd ee 10 1e or lr,lr,lr<<0x1
++ *[0-9a-f]*: fb eb 11 d8 or r8,sp,r11<<0x1d
++ *[0-9a-f]*: f3 e2 11 cf or pc,r9,r2<<0x1c
++ *[0-9a-f]*: e3 e2 10 35 or r5,r1,r2<<0x3
++
++[0-9a-f]* <or3>:
++ *[0-9a-f]*: ff ef 12 0f or pc,pc,pc
++ *[0-9a-f]*: f9 ec 13 fc or r12,r12,r12>>0x1f
++ *[0-9a-f]*: eb e5 13 05 or r5,r5,r5>>0x10
++ *[0-9a-f]*: e9 e4 12 f4 or r4,r4,r4>>0xf
++ *[0-9a-f]*: fd ee 12 1e or lr,lr,lr>>0x1
++ *[0-9a-f]*: fb ed 12 21 or r1,sp,sp>>0x2
++ *[0-9a-f]*: e3 e1 13 d0 or r0,r1,r1>>0x1d
++ *[0-9a-f]*: f9 e8 12 84 or r4,r12,r8>>0x8
++
++[0-9a-f]* <eor2>:
++ *[0-9a-f]*: ff ef 20 0f eor pc,pc,pc
++ *[0-9a-f]*: f9 ec 21 fc eor r12,r12,r12<<0x1f
++ *[0-9a-f]*: eb e5 21 05 eor r5,r5,r5<<0x10
++ *[0-9a-f]*: e9 e4 20 f4 eor r4,r4,r4<<0xf
++ *[0-9a-f]*: fd ee 20 1e eor lr,lr,lr<<0x1
++ *[0-9a-f]*: f3 e4 20 ba eor r10,r9,r4<<0xb
++ *[0-9a-f]*: e1 e1 21 f4 eor r4,r0,r1<<0x1f
++ *[0-9a-f]*: e5 ec 20 d6 eor r6,r2,r12<<0xd
++
++[0-9a-f]* <eor3>:
++ *[0-9a-f]*: ff ef 22 0f eor pc,pc,pc
++ *[0-9a-f]*: f9 ec 23 fc eor r12,r12,r12>>0x1f
++ *[0-9a-f]*: eb e5 23 05 eor r5,r5,r5>>0x10
++ *[0-9a-f]*: e9 e4 22 f4 eor r4,r4,r4>>0xf
++ *[0-9a-f]*: fd ee 22 1e eor lr,lr,lr>>0x1
++ *[0-9a-f]*: eb e5 23 65 eor r5,r5,r5>>0x16
++ *[0-9a-f]*: e3 ee 22 3a eor r10,r1,lr>>0x3
++ *[0-9a-f]*: fd ed 23 a7 eor r7,lr,sp>>0x1a
++
++[0-9a-f]* <sthh_w2>:
++ *[0-9a-f]*: ff ef 8f 0f sthh\.w pc\[pc\],pc:b,pc:b
++ *[0-9a-f]*: f9 ec bc 3c sthh\.w r12\[r12<<0x3\],r12:t,r12:t
++ *[0-9a-f]*: eb e5 b5 25 sthh\.w r5\[r5<<0x2\],r5:t,r5:t
++ *[0-9a-f]*: e9 e4 84 14 sthh\.w r4\[r4<<0x1\],r4:b,r4:b
++ *[0-9a-f]*: fd ee be 1e sthh\.w lr\[lr<<0x1\],lr:t,lr:t
++ *[0-9a-f]*: e3 ec b6 3d sthh\.w sp\[r6<<0x3\],r1:t,r12:t
++ *[0-9a-f]*: f3 e9 b6 06 sthh\.w r6\[r6\],r9:t,r9:t
++ *[0-9a-f]*: e1 eb 93 0a sthh\.w r10\[r3\],r0:b,r11:t
++
++[0-9a-f]* <sthh_w1>:
++ *[0-9a-f]*: ff ef c0 0f sthh\.w pc\[0x0\],pc:b,pc:b
++ *[0-9a-f]*: f9 ec ff fc sthh\.w r12\[0x3fc\],r12:t,r12:t
++ *[0-9a-f]*: eb e5 f8 05 sthh\.w r5\[0x200\],r5:t,r5:t
++ *[0-9a-f]*: e9 e4 c7 f4 sthh\.w r4\[0x1fc\],r4:b,r4:b
++ *[0-9a-f]*: fd ee f0 1e sthh\.w lr\[0x4\],lr:t,lr:t
++ *[0-9a-f]*: f3 e0 e6 54 sthh\.w r4\[0x194\],r9:t,r0:b
++ *[0-9a-f]*: e5 ea e5 78 sthh\.w r8\[0x15c\],r2:t,r10:b
++ *[0-9a-f]*: f3 e2 c2 bd sthh\.w sp\[0xac\],r9:b,r2:b
++
++[0-9a-f]* <cop>:
++ *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
++ *[0-9a-f]*: e7 af ff ff cop cp7,cr15,cr15,cr15,0x7f
++ *[0-9a-f]*: e3 a8 75 55 cop cp3,cr5,cr5,cr5,0x31
++ *[0-9a-f]*: e3 a8 44 44 cop cp2,cr4,cr4,cr4,0x30
++ *[0-9a-f]*: e5 ad a8 37 cop cp5,cr8,cr3,cr7,0x5a
++
++[0-9a-f]* <ldc_w1>:
++ *[0-9a-f]*: e9 a0 00 00 ldc\.w cp0,cr0,r0\[0x0\]
++ *[0-9a-f]*: e9 af ef ff ldc\.w cp7,cr15,pc\[0x3fc\]
++ *[0-9a-f]*: e9 a5 65 80 ldc\.w cp3,cr5,r5\[0x200\]
++ *[0-9a-f]*: e9 a4 44 7f ldc\.w cp2,cr4,r4\[0x1fc\]
++ *[0-9a-f]*: e9 ad 89 24 ldc\.w cp4,cr9,sp\[0x90\]
++
++[0-9a-f]* <ldc_w2>:
++ *[0-9a-f]*: ef a0 00 40 ldc\.w cp0,cr0,--r0
++ *[0-9a-f]*: ef af ef 40 ldc\.w cp7,cr15,--pc
++ *[0-9a-f]*: ef a5 65 40 ldc\.w cp3,cr5,--r5
++ *[0-9a-f]*: ef a4 44 40 ldc\.w cp2,cr4,--r4
++ *[0-9a-f]*: ef ad 89 40 ldc\.w cp4,cr9,--sp
++
++[0-9a-f]* <ldc_w3>:
++ *[0-9a-f]*: ef a0 10 00 ldc\.w cp0,cr0,r0\[r0\]
++ *[0-9a-f]*: ef af ff 3f ldc\.w cp7,cr15,pc\[pc<<0x3\]
++ *[0-9a-f]*: ef a5 75 24 ldc\.w cp3,cr5,r5\[r4<<0x2\]
++ *[0-9a-f]*: ef a4 54 13 ldc\.w cp2,cr4,r4\[r3<<0x1\]
++ *[0-9a-f]*: ef ad 99 0c ldc\.w cp4,cr9,sp\[r12\]
++
++[0-9a-f]* <ldc_d1>:
++ *[0-9a-f]*: e9 a0 10 00 ldc\.d cp0,cr0,r0\[0x0\]
++ *[0-9a-f]*: e9 af fe ff ldc\.d cp7,cr14,pc\[0x3fc\]
++ *[0-9a-f]*: e9 a5 76 80 ldc\.d cp3,cr6,r5\[0x200\]
++ *[0-9a-f]*: e9 a4 54 7f ldc\.d cp2,cr4,r4\[0x1fc\]
++ *[0-9a-f]*: e9 ad 98 24 ldc\.d cp4,cr8,sp\[0x90\]
++
++[0-9a-f]* <ldc_d2>:
++ *[0-9a-f]*: ef a0 00 50 ldc\.d cp0,cr0,--r0
++ *[0-9a-f]*: ef af ee 50 ldc\.d cp7,cr14,--pc
++ *[0-9a-f]*: ef a5 66 50 ldc\.d cp3,cr6,--r5
++ *[0-9a-f]*: ef a4 44 50 ldc\.d cp2,cr4,--r4
++ *[0-9a-f]*: ef ad 88 50 ldc\.d cp4,cr8,--sp
++
++[0-9a-f]* <ldc_d3>:
++ *[0-9a-f]*: ef a0 10 40 ldc\.d cp0,cr0,r0\[r0\]
++ *[0-9a-f]*: ef af fe 7f ldc\.d cp7,cr14,pc\[pc<<0x3\]
++ *[0-9a-f]*: ef a5 76 64 ldc\.d cp3,cr6,r5\[r4<<0x2\]
++ *[0-9a-f]*: ef a4 54 53 ldc\.d cp2,cr4,r4\[r3<<0x1\]
++ *[0-9a-f]*: ef ad 98 4c ldc\.d cp4,cr8,sp\[r12\]
++
++[0-9a-f]* <stc_w1>:
++ *[0-9a-f]*: eb a0 00 00 stc\.w cp0,r0\[0x0\],cr0
++ *[0-9a-f]*: eb af ef ff stc\.w cp7,pc\[0x3fc\],cr15
++ *[0-9a-f]*: eb a5 65 80 stc\.w cp3,r5\[0x200\],cr5
++ *[0-9a-f]*: eb a4 44 7f stc\.w cp2,r4\[0x1fc\],cr4
++ *[0-9a-f]*: eb ad 89 24 stc\.w cp4,sp\[0x90\],cr9
++
++[0-9a-f]* <stc_w2>:
++ *[0-9a-f]*: ef a0 00 60 stc\.w cp0,r0\+\+,cr0
++ *[0-9a-f]*: ef af ef 60 stc\.w cp7,pc\+\+,cr15
++ *[0-9a-f]*: ef a5 65 60 stc\.w cp3,r5\+\+,cr5
++ *[0-9a-f]*: ef a4 44 60 stc\.w cp2,r4\+\+,cr4
++ *[0-9a-f]*: ef ad 89 60 stc\.w cp4,sp\+\+,cr9
++
++[0-9a-f]* <stc_w3>:
++ *[0-9a-f]*: ef a0 10 80 stc\.w cp0,r0\[r0\],cr0
++ *[0-9a-f]*: ef af ff bf stc\.w cp7,pc\[pc<<0x3\],cr15
++ *[0-9a-f]*: ef a5 75 a4 stc\.w cp3,r5\[r4<<0x2\],cr5
++ *[0-9a-f]*: ef a4 54 93 stc\.w cp2,r4\[r3<<0x1\],cr4
++ *[0-9a-f]*: ef ad 99 8c stc\.w cp4,sp\[r12\],cr9
++
++[0-9a-f]* <stc_d1>:
++ *[0-9a-f]*: eb a0 10 00 stc\.d cp0,r0\[0x0\],cr0
++ *[0-9a-f]*: eb af fe ff stc\.d cp7,pc\[0x3fc\],cr14
++ *[0-9a-f]*: eb a5 76 80 stc\.d cp3,r5\[0x200\],cr6
++ *[0-9a-f]*: eb a4 54 7f stc\.d cp2,r4\[0x1fc\],cr4
++ *[0-9a-f]*: eb ad 98 24 stc\.d cp4,sp\[0x90\],cr8
++
++[0-9a-f]* <stc_d2>:
++ *[0-9a-f]*: ef a0 00 70 stc\.d cp0,r0\+\+,cr0
++ *[0-9a-f]*: ef af ee 70 stc\.d cp7,pc\+\+,cr14
++ *[0-9a-f]*: ef a5 66 70 stc\.d cp3,r5\+\+,cr6
++ *[0-9a-f]*: ef a4 44 70 stc\.d cp2,r4\+\+,cr4
++ *[0-9a-f]*: ef ad 88 70 stc\.d cp4,sp\+\+,cr8
++
++[0-9a-f]* <stc_d3>:
++ *[0-9a-f]*: ef a0 10 c0 stc\.d cp0,r0\[r0\],cr0
++ *[0-9a-f]*: ef af fe ff stc\.d cp7,pc\[pc<<0x3\],cr14
++ *[0-9a-f]*: ef a5 76 e4 stc\.d cp3,r5\[r4<<0x2\],cr6
++ *[0-9a-f]*: ef a4 54 d3 stc\.d cp2,r4\[r3<<0x1\],cr4
++ *[0-9a-f]*: ef ad 98 cc stc\.d cp4,sp\[r12\],cr8
++
++[0-9a-f]* <ldc0_w>:
++ *[0-9a-f]*: f1 a0 00 00 ldc0\.w cr0,r0\[0x0\]
++ *[0-9a-f]*: f1 af ff ff ldc0\.w cr15,pc\[0x3ffc\]
++ *[0-9a-f]*: f1 a5 85 00 ldc0\.w cr5,r5\[0x2000\]
++ *[0-9a-f]*: f1 a4 74 ff ldc0\.w cr4,r4\[0x1ffc\]
++ *[0-9a-f]*: f1 ad 09 93 ldc0\.w cr9,sp\[0x24c\]
++
++[0-9a-f]* <ldc0_d>:
++ *[0-9a-f]*: f3 a0 00 00 ldc0\.d cr0,r0\[0x0\]
++ *[0-9a-f]*: f3 af fe ff ldc0\.d cr14,pc\[0x3ffc\]
++ *[0-9a-f]*: f3 a5 86 00 ldc0\.d cr6,r5\[0x2000\]
++ *[0-9a-f]*: f3 a4 74 ff ldc0\.d cr4,r4\[0x1ffc\]
++ *[0-9a-f]*: f3 ad 08 93 ldc0\.d cr8,sp\[0x24c\]
++
++[0-9a-f]* <stc0_w>:
++ *[0-9a-f]*: f5 a0 00 00 stc0\.w r0\[0x0\],cr0
++ *[0-9a-f]*: f5 af ff ff stc0\.w pc\[0x3ffc\],cr15
++ *[0-9a-f]*: f5 a5 85 00 stc0\.w r5\[0x2000\],cr5
++ *[0-9a-f]*: f5 a4 74 ff stc0\.w r4\[0x1ffc\],cr4
++ *[0-9a-f]*: f5 ad 09 93 stc0\.w sp\[0x24c\],cr9
++
++[0-9a-f]* <stc0_d>:
++ *[0-9a-f]*: f7 a0 00 00 stc0\.d r0\[0x0\],cr0
++ *[0-9a-f]*: f7 af fe ff stc0\.d pc\[0x3ffc\],cr14
++ *[0-9a-f]*: f7 a5 86 00 stc0\.d r5\[0x2000\],cr6
++ *[0-9a-f]*: f7 a4 74 ff stc0\.d r4\[0x1ffc\],cr4
++ *[0-9a-f]*: f7 ad 08 93 stc0\.d sp\[0x24c\],cr8
++
++[0-9a-f]* <memc>:
++ *[0-9a-f]*: f6 10 00 00 memc 0,0x0
++ *[0-9a-f]*: f6 1f ff ff memc -4,0x1f
++ *[0-9a-f]*: f6 18 40 00 memc -65536,0x10
++ *[0-9a-f]*: f6 17 bf ff memc 65532,0xf
++
++[0-9a-f]* <mems>:
++ *[0-9a-f]*: f8 10 00 00 mems 0,0x0
++ *[0-9a-f]*: f8 1f ff ff mems -4,0x1f
++ *[0-9a-f]*: f8 18 40 00 mems -65536,0x10
++ *[0-9a-f]*: f8 17 bf ff mems 65532,0xf
++
++[0-9a-f]* <memt>:
++ *[0-9a-f]*: fa 10 00 00 memt 0,0x0
++ *[0-9a-f]*: fa 1f ff ff memt -4,0x1f
++ *[0-9a-f]*: fa 18 40 00 memt -65536,0x10
++ *[0-9a-f]*: fa 17 bf ff memt 65532,0xf
++
++[0-9a-f]* <stcond>:
++ *[0-9a-f]*: e1 70 00 00 stcond r0\[0\],r0
++ *[0-9a-f]*: ff 7f ff ff stcond pc\[-1\],pc
++ *[0-9a-f]*: f1 77 80 00 stcond r8\[-32768\],r7
++ *[0-9a-f]*: ef 78 7f ff stcond r7\[32767\],r8
++ *[0-9a-f]*: eb 7a 12 34 stcond r5\[4660\],r10
++
++[0-9a-f]* <ldcm_w>:
++ *[0-9a-f]*: ed af 00 ff ldcm\.w cp0,pc,cr0-cr7
++ *[0-9a-f]*: ed a0 e0 01 ldcm\.w cp7,r0,cr0
++ *[0-9a-f]*: ed a4 90 7f ldcm\.w cp4,r4\+\+,cr0-cr6
++ *[0-9a-f]*: ed a7 60 80 ldcm\.w cp3,r7,cr7
++ *[0-9a-f]*: ed ac 30 72 ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
++ *[0-9a-f]*: ed af 01 ff ldcm\.w cp0,pc,cr8-cr15
++ *[0-9a-f]*: ed a0 e1 01 ldcm\.w cp7,r0,cr8
++ *[0-9a-f]*: ed a4 91 7f ldcm\.w cp4,r4\+\+,cr8-cr14
++ *[0-9a-f]*: ed a7 61 80 ldcm\.w cp3,r7,cr15
++ *[0-9a-f]*: ed ac 31 72 ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
++
++[0-9a-f]* <ldcm_d>:
++ *[0-9a-f]*: ed af 04 ff ldcm\.d cp0,pc,cr0-cr15
++ *[0-9a-f]*: ed a0 e4 01 ldcm\.d cp7,r0,cr0-cr1
++ *[0-9a-f]*: ed a4 94 7f ldcm\.d cp4,r4\+\+,cr0-cr13
++ *[0-9a-f]*: ed a7 64 80 ldcm\.d cp3,r7,cr14-cr15
++ *[0-9a-f]*: ed ac 54 93 ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
++
++[0-9a-f]* <stcm_w>:
++ *[0-9a-f]*: ed af 02 ff stcm\.w cp0,pc,cr0-cr7
++ *[0-9a-f]*: ed a0 e2 01 stcm\.w cp7,r0,cr0
++ *[0-9a-f]*: ed a4 92 7f stcm\.w cp4,--r4,cr0-cr6
++ *[0-9a-f]*: ed a7 62 80 stcm\.w cp3,r7,cr7
++ *[0-9a-f]*: ed ac 32 72 stcm\.w cp1,--r12,cr1,cr4-cr6
++ *[0-9a-f]*: ed af 03 ff stcm\.w cp0,pc,cr8-cr15
++ *[0-9a-f]*: ed a0 e3 01 stcm\.w cp7,r0,cr8
++ *[0-9a-f]*: ed a4 93 7f stcm\.w cp4,--r4,cr8-cr14
++ *[0-9a-f]*: ed a7 63 80 stcm\.w cp3,r7,cr15
++ *[0-9a-f]*: ed ac 33 72 stcm\.w cp1,--r12,cr9,cr12-cr14
++
++[0-9a-f]* <stcm_d>:
++ *[0-9a-f]*: ed af 05 ff stcm\.d cp0,pc,cr0-cr15
++ *[0-9a-f]*: ed a0 e5 01 stcm\.d cp7,r0,cr0-cr1
++ *[0-9a-f]*: ed a4 95 7f stcm\.d cp4,--r4,cr0-cr13
++ *[0-9a-f]*: ed a7 65 80 stcm\.d cp3,r7,cr14-cr15
++ *[0-9a-f]*: ed ac 55 93 stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
++
++[0-9a-f]* <mvcr_w>:
++ *[0-9a-f]*: ef af ef 00 mvcr\.w cp7,pc,cr15
++ *[0-9a-f]*: ef a0 00 00 mvcr\.w cp0,r0,cr0
++ *[0-9a-f]*: ef af 0f 00 mvcr\.w cp0,pc,cr15
++ *[0-9a-f]*: ef a0 ef 00 mvcr\.w cp7,r0,cr15
++ *[0-9a-f]*: ef af e0 00 mvcr\.w cp7,pc,cr0
++ *[0-9a-f]*: ef a7 88 00 mvcr\.w cp4,r7,cr8
++ *[0-9a-f]*: ef a8 67 00 mvcr\.w cp3,r8,cr7
++
++[0-9a-f]* <mvcr_d>:
++ *[0-9a-f]*: ef ae ee 10 mvcr\.d cp7,lr,cr14
++ *[0-9a-f]*: ef a0 00 10 mvcr\.d cp0,r0,cr0
++ *[0-9a-f]*: ef ae 0e 10 mvcr\.d cp0,lr,cr14
++ *[0-9a-f]*: ef a0 ee 10 mvcr\.d cp7,r0,cr14
++ *[0-9a-f]*: ef ae e0 10 mvcr\.d cp7,lr,cr0
++ *[0-9a-f]*: ef a6 88 10 mvcr\.d cp4,r6,cr8
++ *[0-9a-f]*: ef a8 66 10 mvcr\.d cp3,r8,cr6
++
++[0-9a-f]* <mvrc_w>:
++ *[0-9a-f]*: ef af ef 20 mvrc\.w cp7,cr15,pc
++ *[0-9a-f]*: ef a0 00 20 mvrc\.w cp0,cr0,r0
++ *[0-9a-f]*: ef af 0f 20 mvrc\.w cp0,cr15,pc
++ *[0-9a-f]*: ef a0 ef 20 mvrc\.w cp7,cr15,r0
++ *[0-9a-f]*: ef af e0 20 mvrc\.w cp7,cr0,pc
++ *[0-9a-f]*: ef a7 88 20 mvrc\.w cp4,cr8,r7
++ *[0-9a-f]*: ef a8 67 20 mvrc\.w cp3,cr7,r8
++
++[0-9a-f]* <mvrc_d>:
++ *[0-9a-f]*: ef ae ee 30 mvrc\.d cp7,cr14,lr
++ *[0-9a-f]*: ef a0 00 30 mvrc\.d cp0,cr0,r0
++ *[0-9a-f]*: ef ae 0e 30 mvrc\.d cp0,cr14,lr
++ *[0-9a-f]*: ef a0 ee 30 mvrc\.d cp7,cr14,r0
++ *[0-9a-f]*: ef ae e0 30 mvrc\.d cp7,cr0,lr
++ *[0-9a-f]*: ef a6 88 30 mvrc\.d cp4,cr8,r6
++ *[0-9a-f]*: ef a8 66 30 mvrc\.d cp3,cr6,r8
++
++[0-9a-f]* <bfexts>:
++ *[0-9a-f]*: ff df b3 ff bfexts pc,pc,0x1f,0x1f
++ *[0-9a-f]*: e1 d0 b0 00 bfexts r0,r0,0x0,0x0
++ *[0-9a-f]*: e1 df b3 ff bfexts r0,pc,0x1f,0x1f
++ *[0-9a-f]*: ff d0 b3 ff bfexts pc,r0,0x1f,0x1f
++ *[0-9a-f]*: ff df b0 1f bfexts pc,pc,0x0,0x1f
++ *[0-9a-f]*: ff df b3 e0 bfexts pc,pc,0x1f,0x0
++ *[0-9a-f]*: ef d8 b1 f0 bfexts r7,r8,0xf,0x10
++ *[0-9a-f]*: f1 d7 b2 0f bfexts r8,r7,0x10,0xf
++
++[0-9a-f]* <bfextu>:
++ *[0-9a-f]*: ff df c3 ff bfextu pc,pc,0x1f,0x1f
++ *[0-9a-f]*: e1 d0 c0 00 bfextu r0,r0,0x0,0x0
++ *[0-9a-f]*: e1 df c3 ff bfextu r0,pc,0x1f,0x1f
++ *[0-9a-f]*: ff d0 c3 ff bfextu pc,r0,0x1f,0x1f
++ *[0-9a-f]*: ff df c0 1f bfextu pc,pc,0x0,0x1f
++ *[0-9a-f]*: ff df c3 e0 bfextu pc,pc,0x1f,0x0
++ *[0-9a-f]*: ef d8 c1 f0 bfextu r7,r8,0xf,0x10
++ *[0-9a-f]*: f1 d7 c2 0f bfextu r8,r7,0x10,0xf
++
++[0-9a-f]* <bfins>:
++ *[0-9a-f]*: ff df d3 ff bfins pc,pc,0x1f,0x1f
++ *[0-9a-f]*: e1 d0 d0 00 bfins r0,r0,0x0,0x0
++ *[0-9a-f]*: e1 df d3 ff bfins r0,pc,0x1f,0x1f
++ *[0-9a-f]*: ff d0 d3 ff bfins pc,r0,0x1f,0x1f
++ *[0-9a-f]*: ff df d0 1f bfins pc,pc,0x0,0x1f
++ *[0-9a-f]*: ff df d3 e0 bfins pc,pc,0x1f,0x0
++ *[0-9a-f]*: ef d8 d1 f0 bfins r7,r8,0xf,0x10
++ *[0-9a-f]*: f1 d7 d2 0f bfins r8,r7,0x10,0xf
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/allinsn.exp binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.exp
+--- binutils-2.17/gas/testsuite/gas/avr32/allinsn.exp 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.exp 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,5 @@
++# AVR32 assembler testsuite. -*- Tcl -*-
++
++if [istarget avr32-*-*] {
++ run_dump_test "allinsn"
++}
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/allinsn.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.s
+--- binutils-2.17/gas/testsuite/gas/avr32/allinsn.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,3242 @@
++ .data
++foodata: .word 42
++ .text
++footext:
++ .text
++ .global ld_d5
++ld_d5:
++ ld.d lr,pc[pc<<3]
++ ld.d r0,r0[r0<<0]
++ ld.d r6,r5[r5<<2]
++ ld.d r4,r4[r4<<1]
++ ld.d lr,lr[lr<<1]
++ ld.d r10,r3[sp<<2]
++ ld.d r8,r10[r6<<2]
++ ld.d r2,r7[r9<<0]
++ .text
++ .global ld_w5
++ld_w5:
++ ld.w pc,pc[pc<<0]
++ ld.w r12,r12[r12<<3]
++ ld.w r5,r5[r5<<2]
++ ld.w r4,r4[r4<<1]
++ ld.w lr,lr[lr<<1]
++ ld.w r2,r9[r9<<0]
++ ld.w r11,r2[r6<<0]
++ ld.w r0,r2[sp<<3]
++ .text
++ .global ld_sh5
++ld_sh5:
++ ld.sh pc,pc[pc<<0]
++ ld.sh r12,r12[r12<<3]
++ ld.sh r5,r5[r5<<2]
++ ld.sh r4,r4[r4<<1]
++ ld.sh lr,lr[lr<<1]
++ ld.sh r11,r0[pc<<2]
++ ld.sh r10,sp[r6<<2]
++ ld.sh r12,r2[r2<<0]
++ .text
++ .global ld_uh5
++ld_uh5:
++ ld.uh pc,pc[pc<<0]
++ ld.uh r12,r12[r12<<3]
++ ld.uh r5,r5[r5<<2]
++ ld.uh r4,r4[r4<<1]
++ ld.uh lr,lr[lr<<1]
++ ld.uh r8,pc[lr<<3]
++ ld.uh r6,r1[pc<<1]
++ ld.uh r6,lr[sp<<1]
++ .text
++ .global ld_sb2
++ld_sb2:
++ ld.sb pc,pc[pc<<0]
++ ld.sb r12,r12[r12<<3]
++ ld.sb r5,r5[r5<<2]
++ ld.sb r4,r4[r4<<1]
++ ld.sb lr,lr[lr<<1]
++ ld.sb r9,r1[pc<<3]
++ ld.sb r0,r3[r11<<1]
++ ld.sb r10,r5[r5<<1]
++ .text
++ .global ld_ub5
++ld_ub5:
++ ld.ub pc,pc[pc<<0]
++ ld.ub r12,r12[r12<<3]
++ ld.ub r5,r5[r5<<2]
++ ld.ub r4,r4[r4<<1]
++ ld.ub lr,lr[lr<<1]
++ ld.ub r6,r12[r7<<3]
++ ld.ub r2,r6[r12<<0]
++ ld.ub r0,r7[r11<<1]
++ .text
++ .global st_d5
++st_d5:
++ st.d pc[pc<<0],r14
++ st.d r12[r12<<3],r12
++ st.d r5[r5<<2],r6
++ st.d r4[r4<<1],r4
++ st.d lr[lr<<1],lr
++ st.d r1[r9<<1],r4
++ st.d r10[r2<<1],r4
++ st.d r12[r6<<0],lr
++ .text
++ .global st_w5
++st_w5:
++ st.w pc[pc<<0],pc
++ st.w r12[r12<<3],r12
++ st.w r5[r5<<2],r5
++ st.w r4[r4<<1],r4
++ st.w lr[lr<<1],lr
++ st.w r1[r10<<0],r3
++ st.w r0[r10<<1],r9
++ st.w r4[r5<<3],pc
++ .text
++ .global st_h5
++st_h5:
++ st.h pc[pc<<0],pc
++ st.h r12[r12<<3],r12
++ st.h r5[r5<<2],r5
++ st.h r4[r4<<1],r4
++ st.h lr[lr<<1],lr
++ st.h r2[r9<<0],r11
++ st.h r5[r1<<2],r12
++ st.h pc[r8<<2],r3
++ .text
++ .global st_b5
++st_b5:
++ st.b pc[pc<<0],pc
++ st.b r12[r12<<3],r12
++ st.b r5[r5<<2],r5
++ st.b r4[r4<<1],r4
++ st.b lr[lr<<1],lr
++ st.b r1[r8<<1],r6
++ st.b lr[lr<<3],r1
++ st.b r5[r0<<2],pc
++ .text
++ .global divs
++divs:
++ divs pc,pc,pc
++ divs r12,r12,r12
++ divs r5,r5,r5
++ divs r4,r4,r4
++ divs lr,lr,lr
++ divs r3,pc,pc
++ divs r9,r12,r2
++ divs r7,r4,r1
++ .text
++ .global add1
++add1:
++ add pc,pc
++ add r12,r12
++ add r5,r5
++ add r4,r4
++ add lr,lr
++ add r12,r9
++ add r6,r3
++ add r10,r12
++ .text
++ .global sub1
++sub1:
++ sub pc,pc
++ sub r12,r12
++ sub r5,r5
++ sub r4,r4
++ sub lr,lr
++ sub lr,r6
++ sub r0,sp
++ sub r6,r12
++ .text
++ .global rsub1
++rsub1:
++ rsub pc,pc
++ rsub r12,r12
++ rsub r5,r5
++ rsub r4,r4
++ rsub lr,lr
++ rsub r11,sp
++ rsub r7,r4
++ rsub r9,r1
++ .text
++ .global cp1
++cp1:
++ cp pc,pc
++ cp r12,r12
++ cp r5,r5
++ cp r4,r4
++ cp lr,lr
++ cp r6,r2
++ cp r0,r9
++ cp r3,sp
++ .text
++ .global or1
++or1:
++ or pc,pc
++ or r12,r12
++ or r5,r5
++ or r4,r4
++ or lr,lr
++ or r4,r9
++ or r11,r4
++ or r4,r0
++ .text
++ .global eor1
++eor1:
++ eor pc,pc
++ eor r12,r12
++ eor r5,r5
++ eor r4,r4
++ eor lr,lr
++ eor r12,r11
++ eor r0,r1
++ eor r5,pc
++ .text
++ .global and1
++and1:
++ and pc,pc
++ and r12,r12
++ and r5,r5
++ and r4,r4
++ and lr,lr
++ and r8,r1
++ and r0,sp
++ and r10,r5
++ .text
++ .global tst
++tst:
++ tst pc,pc
++ tst r12,r12
++ tst r5,r5
++ tst r4,r4
++ tst lr,lr
++ tst r0,r12
++ tst r10,r6
++ tst sp,r4
++ .text
++ .global andn
++andn:
++ andn pc,pc
++ andn r12,r12
++ andn r5,r5
++ andn r4,r4
++ andn lr,lr
++ andn r9,r12
++ andn r11,sp
++ andn r12,r5
++ .text
++ .global mov3
++mov3:
++ mov pc,pc
++ mov r12,r12
++ mov r5,r5
++ mov r4,r4
++ mov lr,lr
++ mov r5,r9
++ mov r11,r11
++ mov r2,lr
++ .text
++ .global st_w1
++st_w1:
++ st.w pc++,pc
++ st.w r12++,r12
++ st.w r5++,r5
++ st.w r4++,r4
++ st.w lr++,lr
++ st.w r1++,r11
++ st.w sp++,r0
++ st.w sp++,r1
++ .text
++ .global st_h1
++st_h1:
++ st.h pc++,pc
++ st.h r12++,r12
++ st.h r5++,r5
++ st.h r4++,r4
++ st.h lr++,lr
++ st.h r12++,sp
++ st.h r7++,lr
++ st.h r7++,r4
++ .text
++ .global st_b1
++st_b1:
++ st.b pc++,pc
++ st.b r12++,r12
++ st.b r5++,r5
++ st.b r4++,r4
++ st.b lr++,lr
++ st.b r9++,sp
++ st.b r1++,sp
++ st.b r0++,r4
++ .text
++ .global st_w2
++st_w2:
++ st.w --pc,pc
++ st.w --r12,r12
++ st.w --r5,r5
++ st.w --r4,r4
++ st.w --lr,lr
++ st.w --r1,r7
++ st.w --r3,r9
++ st.w --r5,r5
++ .text
++ .global st_h2
++st_h2:
++ st.h --pc,pc
++ st.h --r12,r12
++ st.h --r5,r5
++ st.h --r4,r4
++ st.h --lr,lr
++ st.h --r5,r7
++ st.h --r8,r8
++ st.h --r7,r2
++ .text
++ .global st_b2
++st_b2:
++ st.b --pc,pc
++ st.b --r12,r12
++ st.b --r5,r5
++ st.b --r4,r4
++ st.b --lr,lr
++ st.b --sp,sp
++ st.b --sp,r11
++ st.b --r4,r5
++ .text
++ .global ld_w1
++ld_w1:
++ ld.w pc,pc++
++ ld.w r12,r12++
++ ld.w r5,r5++
++ ld.w r4,r4++
++ ld.w lr,lr++
++ ld.w r3,r7++
++ ld.w r3,lr++
++ ld.w r12,r5++
++ .text
++ .global ld_sh1
++ld_sh1:
++ ld.sh pc,pc++
++ ld.sh r12,r12++
++ ld.sh r5,r5++
++ ld.sh r4,r4++
++ ld.sh lr,lr++
++ ld.sh r11,r2++
++ ld.sh r2,r8++
++ ld.sh r7,r6++
++ .text
++ .global ld_uh1
++ld_uh1:
++ ld.uh pc,pc++
++ ld.uh r12,r12++
++ ld.uh r5,r5++
++ ld.uh r4,r4++
++ ld.uh lr,lr++
++ ld.uh r6,r7++
++ ld.uh r10,r11++
++ ld.uh lr,r4++
++ .text
++ .global ld_ub1
++ld_ub1:
++ ld.ub pc,pc++
++ ld.ub r12,r12++
++ ld.ub r5,r5++
++ ld.ub r4,r4++
++ ld.ub lr,lr++
++ ld.ub r8,lr++
++ ld.ub r12,r12++
++ ld.ub r11,r10++
++ .text
++ .global ld_w2
++ld_w2:
++ ld.w pc,--pc
++ ld.w r12,--r12
++ ld.w r5,--r5
++ ld.w r4,--r4
++ ld.w lr,--lr
++ ld.w r10,--lr
++ ld.w r12,--r9
++ ld.w r6,--r5
++ .text
++ .global ld_sh2
++ld_sh2:
++ ld.sh pc,--pc
++ ld.sh r12,--r12
++ ld.sh r5,--r5
++ ld.sh r4,--r4
++ ld.sh lr,--lr
++ ld.sh pc,--r10
++ ld.sh r6,--r3
++ ld.sh r4,--r6
++ .text
++ .global ld_uh2
++ld_uh2:
++ ld.uh pc,--pc
++ ld.uh r12,--r12
++ ld.uh r5,--r5
++ ld.uh r4,--r4
++ ld.uh lr,--lr
++ ld.uh r3,--r2
++ ld.uh r1,--r0
++ ld.uh r2,--r9
++ .text
++ .global ld_ub2
++ld_ub2:
++ ld.ub pc,--pc
++ ld.ub r12,--r12
++ ld.ub r5,--r5
++ ld.ub r4,--r4
++ ld.ub lr,--lr
++ ld.ub r1,--r1
++ ld.ub r0,--r6
++ ld.ub r2,--r7
++ .text
++ .global ld_ub3
++ld_ub3:
++ ld.ub pc,pc[0]
++ ld.ub r12,r12[7]
++ ld.ub r5,r5[4]
++ ld.ub r4,r4[3]
++ ld.ub lr,lr[1]
++ ld.ub r6,r9[6]
++ ld.ub r2,lr[4]
++ ld.ub r1,r8[0]
++ .text
++ .global sub3_sp
++sub3_sp:
++ sub sp,0
++ sub sp,-4
++ sub sp,-512
++ sub sp,508
++ sub sp,4
++ sub sp,44
++ sub sp,8
++ sub sp,348
++ .text
++ .global sub3
++sub3:
++ sub pc,0
++ sub r12,-1
++ sub r5,-128
++ sub r4,127
++ sub lr,1
++ sub r6,-41
++ sub r4,37
++ sub r12,56
++ .text
++ .global mov1
++mov1:
++ mov pc,0
++ mov r12,-1
++ mov r5,-128
++ mov r4,127
++ mov lr,1
++ mov pc,14
++ mov r6,-100
++ mov lr,-122
++ .text
++ .global lddsp
++lddsp:
++ lddsp pc,sp[0]
++ lddsp r12,sp[508]
++ lddsp r5,sp[256]
++ lddsp r4,sp[252]
++ lddsp lr,sp[4]
++ lddsp lr,sp[256]
++ lddsp r12,sp[20]
++ lddsp r9,sp[472]
++ .text
++ .global lddpc
++lddpc:
++ lddpc pc,pc[0]
++ lddpc r0,pc[508]
++ lddpc r8,pc[256]
++ lddpc r7,pc[252]
++ lddpc lr,pc[4]
++ lddpc sp,pc[472]
++ lddpc r6,pc[120]
++ lddpc r11,pc[28]
++ .text
++ .global stdsp
++stdsp:
++ stdsp sp[0],pc
++ stdsp sp[508],r12
++ stdsp sp[256],r5
++ stdsp sp[252],r4
++ stdsp sp[4],lr
++ stdsp sp[304],pc
++ stdsp sp[256],r0
++ stdsp sp[336],r5
++ .text
++ .global cp2
++cp2:
++ cp pc,0
++ cp r12,-1
++ cp r5,-32
++ cp r4,31
++ cp lr,1
++ cp r8,3
++ cp lr,16
++ cp r7,-26
++ .text
++ .global acr
++acr:
++ acr pc
++ acr r12
++ acr r5
++ acr r4
++ acr lr
++ acr r2
++ acr r12
++ acr pc
++ .text
++ .global scr
++scr:
++ scr pc
++ scr r12
++ scr r5
++ scr r4
++ scr lr
++ scr pc
++ scr r6
++ scr r1
++ .text
++ .global cpc0
++cpc0:
++ cpc pc
++ cpc r12
++ cpc r5
++ cpc r4
++ cpc lr
++ cpc pc
++ cpc r4
++ cpc r9
++ .text
++ .global neg
++neg:
++ neg pc
++ neg r12
++ neg r5
++ neg r4
++ neg lr
++ neg r7
++ neg r1
++ neg r9
++ .text
++ .global abs
++abs:
++ abs pc
++ abs r12
++ abs r5
++ abs r4
++ abs lr
++ abs r6
++ abs r6
++ abs r4
++ .text
++ .global castu_b
++castu_b:
++ castu.b pc
++ castu.b r12
++ castu.b r5
++ castu.b r4
++ castu.b lr
++ castu.b r7
++ castu.b sp
++ castu.b r9
++ .text
++ .global casts_b
++casts_b:
++ casts.b pc
++ casts.b r12
++ casts.b r5
++ casts.b r4
++ casts.b lr
++ casts.b r11
++ casts.b r1
++ casts.b r10
++ .text
++ .global castu_h
++castu_h:
++ castu.h pc
++ castu.h r12
++ castu.h r5
++ castu.h r4
++ castu.h lr
++ castu.h r10
++ castu.h r11
++ castu.h r1
++ .text
++ .global casts_h
++casts_h:
++ casts.h pc
++ casts.h r12
++ casts.h r5
++ casts.h r4
++ casts.h lr
++ casts.h r0
++ casts.h r5
++ casts.h r9
++ .text
++ .global brev
++brev:
++ brev pc
++ brev r12
++ brev r5
++ brev r4
++ brev lr
++ brev r5
++ brev r10
++ brev r8
++ .text
++ .global swap_h
++swap_h:
++ swap.h pc
++ swap.h r12
++ swap.h r5
++ swap.h r4
++ swap.h lr
++ swap.h r7
++ swap.h r0
++ swap.h r8
++ .text
++ .global swap_b
++swap_b:
++ swap.b pc
++ swap.b r12
++ swap.b r5
++ swap.b r4
++ swap.b lr
++ swap.b r10
++ swap.b r12
++ swap.b r1
++ .text
++ .global swap_bh
++swap_bh:
++ swap.bh pc
++ swap.bh r12
++ swap.bh r5
++ swap.bh r4
++ swap.bh lr
++ swap.bh r9
++ swap.bh r4
++ swap.bh r1
++ .text
++ .global One_s_compliment
++One_s_compliment:
++ com pc
++ com r12
++ com r5
++ com r4
++ com lr
++ com r2
++ com r2
++ com r7
++ .text
++ .global tnbz
++tnbz:
++ tnbz pc
++ tnbz r12
++ tnbz r5
++ tnbz r4
++ tnbz lr
++ tnbz r8
++ tnbz r12
++ tnbz pc
++ .text
++ .global rol
++rol:
++ rol pc
++ rol r12
++ rol r5
++ rol r4
++ rol lr
++ rol r10
++ rol r9
++ rol r5
++ .text
++ .global ror
++ror:
++ ror pc
++ ror r12
++ ror r5
++ ror r4
++ ror lr
++ ror r8
++ ror r4
++ ror r7
++ .text
++ .global icall
++icall:
++ icall pc
++ icall r12
++ icall r5
++ icall r4
++ icall lr
++ icall r3
++ icall r1
++ icall r3
++ .text
++ .global mustr
++mustr:
++ mustr pc
++ mustr r12
++ mustr r5
++ mustr r4
++ mustr lr
++ mustr r1
++ mustr r4
++ mustr r12
++ .text
++ .global musfr
++musfr:
++ musfr pc
++ musfr r12
++ musfr r5
++ musfr r4
++ musfr lr
++ musfr r11
++ musfr r12
++ musfr r2
++ .text
++ .global ret_cond
++ret_cond:
++ reteq pc
++ retal r12
++ retls r5
++ retpl r4
++ retne lr
++ retgt r0
++ retgt r12
++ retge r10
++ .text
++ .global sr_cond
++sr_cond:
++ sreq pc
++ sral r12
++ srls r5
++ srpl r4
++ srne lr
++ srlt r0
++ sral sp
++ srge r9
++ .text
++ .global ld_w3
++ld_w3:
++ ld.w pc,pc[0]
++ ld.w r12,r12[124]
++ ld.w r5,r5[64]
++ ld.w r4,r4[60]
++ ld.w lr,lr[4]
++ ld.w sp,r2[52]
++ ld.w r9,r1[8]
++ ld.w r5,sp[60]
++ .text
++ .global ld_sh3
++ld_sh3:
++ ld.sh pc,pc[0]
++ ld.sh r12,r12[14]
++ ld.sh r5,r5[8]
++ ld.sh r4,r4[6]
++ ld.sh lr,lr[2]
++ ld.sh r4,r2[8]
++ ld.sh sp,lr[10]
++ ld.sh r2,r11[2]
++ .text
++ .global ld_uh3
++ld_uh3:
++ ld.uh pc,pc[0]
++ ld.uh r12,r12[14]
++ ld.uh r5,r5[8]
++ ld.uh r4,r4[6]
++ ld.uh lr,lr[2]
++ ld.uh r10,r0[10]
++ ld.uh r8,r11[8]
++ ld.uh r10,r2[12]
++ .text
++ .global st_w3
++st_w3:
++ st.w pc[0],pc
++ st.w r12[60],r12
++ st.w r5[32],r5
++ st.w r4[28],r4
++ st.w lr[4],lr
++ st.w r7[44],r11
++ st.w r2[24],r6
++ st.w r4[12],r9
++ .text
++ .global st_h3
++st_h3:
++ st.h pc[0],pc
++ st.h r12[14],r12
++ st.h r5[8],r5
++ st.h r4[6],r4
++ st.h lr[2],lr
++ st.h lr[10],r12
++ st.h r6[4],r0
++ st.h r5[12],sp
++ .text
++ .global st_b3
++st_b3:
++ st.b pc[0],pc
++ st.b r12[7],r12
++ st.b r5[4],r5
++ st.b r4[3],r4
++ st.b lr[1],lr
++ st.b r12[6],r9
++ st.b r2[3],lr
++ st.b r1[3],r11
++ .text
++ .global ldd
++ldd:
++ ld.d r0,pc
++ ld.d r14,r12
++ ld.d r8,r5
++ ld.d r6,r4
++ ld.d r2,lr
++ ld.d r14,r7
++ ld.d r4,r4
++ ld.d r14,pc
++ .text
++ .global ldd_postinc
++ldd_postinc:
++ ld.d r0,pc++
++ ld.d r14,r12++
++ ld.d r8,r5++
++ ld.d r6,r4++
++ ld.d r2,lr++
++ ld.d r14,r5++
++ ld.d r12,r11++
++ ld.d r2,r12++
++ .text
++ .global ldd_predec
++ldd_predec:
++ ld.d r0,--pc
++ ld.d r14,--r12
++ ld.d r8,--r5
++ ld.d r6,--r4
++ ld.d r2,--lr
++ ld.d r8,--r0
++ ld.d r10,--pc
++ ld.d r2,--r4
++ .text
++ .global std
++std:
++ st.d pc,r0
++ st.d r12,r14
++ st.d r5,r8
++ st.d r4,r6
++ st.d lr,r2
++ st.d r0,r12
++ st.d sp,r4
++ st.d r12,r12
++ .text
++ .global std_postinc
++std_postinc:
++ st.d pc++,r0
++ st.d r12++,r14
++ st.d r5++,r8
++ st.d r4++,r6
++ st.d lr++,r2
++ st.d sp++,r6
++ st.d r10++,r6
++ st.d r7++,r2
++ .text
++ .global std_predec
++std_predec:
++ st.d --pc,r0
++ st.d --r12,r14
++ st.d --r5,r8
++ st.d --r4,r6
++ st.d --lr,r2
++ st.d --r3,r6
++ st.d --lr,r2
++ st.d --r0,r4
++ .text
++ .global mul
++mul:
++ mul pc,pc
++ mul r12,r12
++ mul r5,r5
++ mul r4,r4
++ mul lr,lr
++ mul r10,lr
++ mul r0,r8
++ mul r8,r5
++ .text
++ .global asr_imm5
++asr_imm5:
++ asr pc,0
++ asr r12,31
++ asr r5,16
++ asr r4,15
++ asr lr,1
++ asr r6,23
++ asr r6,18
++ asr r5,8
++ .text
++ .global lsl_imm5
++lsl_imm5:
++ lsl pc,0
++ lsl r12,31
++ lsl r5,16
++ lsl r4,15
++ lsl lr,1
++ lsl r12,13
++ lsl r6,16
++ lsl r1,25
++ .text
++ .global lsr_imm5
++lsr_imm5:
++ lsr pc,0
++ lsr r12,31
++ lsr r5,16
++ lsr r4,15
++ lsr lr,1
++ lsr r0,1
++ lsr r8,10
++ lsr r7,26
++ .text
++ .global sbr
++sbr:
++ sbr pc,0
++ sbr r12,31
++ sbr r5,16
++ sbr r4,15
++ sbr lr,1
++ sbr r8,31
++ sbr r6,22
++ sbr r1,23
++ .text
++ .global cbr
++cbr:
++ cbr pc,0
++ cbr r12,31
++ cbr r5,16
++ cbr r4,15
++ cbr lr,1
++ cbr r12,10
++ cbr r7,22
++ cbr r8,9
++ .text
++ .global brc1
++brc1:
++ breq 0
++ brpl -2
++ brge -256
++ brcs 254
++ brne 2
++ brcs 230
++ breq -18
++ breq 12
++ .text
++ .global rjmp
++rjmp:
++ rjmp 0
++ rjmp -2
++ rjmp -1024
++ rjmp 1022
++ rjmp 2
++ rjmp -962
++ rjmp 14
++ rjmp -516
++ .text
++ .global rcall1
++rcall1:
++ rcall 0
++ rcall -2
++ rcall -1024
++ rcall 1022
++ rcall 2
++ rcall 216
++ rcall -530
++ rcall -972
++ .text
++ .global acall
++acall:
++ acall 0
++ acall 1020
++ acall 512
++ acall 508
++ acall 4
++ acall 356
++ acall 304
++ acall 172
++ .text
++ .global scall
++scall:
++ scall
++ scall
++ scall
++ scall
++ scall
++ scall
++ scall
++ scall
++ .text
++ .global popm
++popm:
++ /* popm with no argument fails currently */
++ popm pc
++ popm r0-r11,pc,r12=-1
++ popm lr
++ popm r0-r11,pc,r12=1
++ popm r0-r3
++ popm r4-r10,pc
++ popm r0-r3,r11,pc,r12=0
++ popm r0-r7,r10-r12,lr
++ .text
++ .global pushm
++pushm:
++ pushm pc
++ pushm r0-r12,lr,pc
++ pushm pc
++ pushm r0-r12,lr
++ pushm r0-r3
++ pushm r8-r10,lr,pc
++ pushm r0-r3,r10
++ pushm r8-r9,r12
++ .text
++ .global popm_n
++popm_n:
++ popm pc
++ popm r0-r11,pc,r12=-1
++ popm lr
++ popm r0-r11,pc,r12=1
++ popm r0-r3
++ popm r4-r10,pc
++ popm r0-r3,r11,pc,r12=0
++ popm r0-r7,r10-r12,lr
++ .text
++ .global pushm_n
++pushm_n:
++ pushm pc
++ pushm r0-r12,lr,pc
++ pushm pc
++ pushm r0-r12,lr
++ pushm r0-r3
++ pushm r8-r10,lr,pc
++ pushm r0-r3,r10
++ pushm r8-r9,r12
++ .text
++ .global csrfcz
++csrfcz:
++ csrfcz 0
++ csrfcz 31
++ csrfcz 16
++ csrfcz 15
++ csrfcz 1
++ csrfcz 5
++ csrfcz 13
++ csrfcz 23
++ .text
++ .global ssrf
++ssrf:
++ ssrf 0
++ ssrf 31
++ ssrf 16
++ ssrf 15
++ ssrf 1
++ ssrf 29
++ ssrf 13
++ ssrf 13
++ .text
++ .global csrf
++csrf:
++ csrf 0
++ csrf 31
++ csrf 16
++ csrf 15
++ csrf 1
++ csrf 10
++ csrf 15
++ csrf 11
++ .text
++ .global rete
++rete:
++ rete
++ .text
++ .global rets
++rets:
++ rets
++ .text
++ .global retd
++retd:
++ retd
++ .text
++ .global retj
++retj:
++ retj
++ .text
++ .global tlbr
++tlbr:
++ tlbr
++ .text
++ .global tlbs
++tlbs:
++ tlbs
++ .text
++ .global tlbw
++tlbw:
++ tlbw
++ .text
++ .global breakpoint
++breakpoint:
++ breakpoint
++ .text
++ .global incjosp
++incjosp:
++ incjosp 1
++ incjosp 2
++ incjosp 3
++ incjosp 4
++ incjosp -4
++ incjosp -3
++ incjosp -2
++ incjosp -1
++ .text
++ .global nop
++nop:
++ nop
++ .text
++ .global popjc
++popjc:
++ popjc
++ .text
++ .global pushjc
++pushjc:
++ pushjc
++ .text
++ .global add2
++add2:
++ add pc,pc,pc<<0
++ add r12,r12,r12<<3
++ add r5,r5,r5<<2
++ add r4,r4,r4<<1
++ add lr,lr,lr<<1
++ add r0,r12,r0<<1
++ add r9,r12,r4<<0
++ add r12,r12,r7<<2
++ .text
++ .global sub2
++sub2:
++ sub pc,pc,pc<<0
++ sub r12,r12,r12<<3
++ sub r5,r5,r5<<2
++ sub r4,r4,r4<<1
++ sub lr,lr,lr<<1
++ sub sp,r3,r4<<0
++ sub r3,r7,r3<<0
++ sub sp,r10,sp<<1
++ .text
++ .global divu
++divu:
++ divu pc,pc,pc
++ divu r12,r12,r12
++ divu r5,r5,r5
++ divu r4,r4,r4
++ divu lr,lr,lr
++ divu sp,r4,pc
++ divu r5,r5,sp
++ divu r10,sp,r0
++ .text
++ .global addhh_w
++addhh_w:
++ addhh.w pc,pc:b,pc:b
++ addhh.w r12,r12:t,r12:t
++ addhh.w r5,r5:t,r5:t
++ addhh.w r4,r4:b,r4:b
++ addhh.w lr,lr:t,lr:t
++ addhh.w r0,r0:b,r3:b
++ addhh.w lr,r12:t,r7:b
++ addhh.w r3,r10:t,r2:b
++ .text
++ .global subhh_w
++subhh_w:
++ subhh.w pc,pc:b,pc:b
++ subhh.w r12,r12:t,r12:t
++ subhh.w r5,r5:t,r5:t
++ subhh.w r4,r4:b,r4:b
++ subhh.w lr,lr:t,lr:t
++ subhh.w r10,r1:t,r7:b
++ subhh.w pc,r10:t,lr:t
++ subhh.w r3,r0:t,r12:b
++ .text
++ .global adc
++adc:
++ adc pc,pc,pc
++ adc r12,r12,r12
++ adc r5,r5,r5
++ adc r4,r4,r4
++ adc lr,lr,lr
++ adc r4,r0,r7
++ adc sp,r4,r3
++ adc r2,r12,r0
++ .text
++ .global sbc
++sbc:
++ sbc pc,pc,pc
++ sbc r12,r12,r12
++ sbc r5,r5,r5
++ sbc r4,r4,r4
++ sbc lr,lr,lr
++ sbc r6,r7,r9
++ sbc r0,r8,r5
++ sbc r1,r0,r4
++ .text
++ .global mul_2
++mul_2:
++ mul pc,pc,pc
++ mul r12,r12,r12
++ mul r5,r5,r5
++ mul r4,r4,r4
++ mul lr,lr,lr
++ mul pc,r0,r0
++ mul r8,pc,lr
++ mul r4,r12,pc
++ .text
++ .global mac
++mac:
++ mac pc,pc,pc
++ mac r12,r12,r12
++ mac r5,r5,r5
++ mac r4,r4,r4
++ mac lr,lr,lr
++ mac r10,r4,r0
++ mac r7,lr,r0
++ mac r2,r9,r12
++ .text
++ .global mulsd
++mulsd:
++ muls.d pc,pc,pc
++ muls.d r12,r12,r12
++ muls.d r5,r5,r5
++ muls.d r4,r4,r4
++ muls.d lr,lr,lr
++ muls.d r2,r8,lr
++ muls.d r4,r0,r11
++ muls.d r5,lr,r6
++ .text
++ .global macsd
++macsd:
++ macs.d r0,pc,pc
++ macs.d r14,r12,r12
++ macs.d r8,r5,r5
++ macs.d r6,r4,r4
++ macs.d r2,lr,lr
++ macs.d r8,r1,r9
++ macs.d r14,r8,r8
++ macs.d r4,r3,r12
++ .text
++ .global mulud
++mulud:
++ mulu.d r0,pc,pc
++ mulu.d r14,r12,r12
++ mulu.d r8,r5,r5
++ mulu.d r6,r4,r4
++ mulu.d r2,lr,lr
++ mulu.d r6,r5,r0
++ mulu.d r4,r6,r1
++ mulu.d r8,r8,r2
++ .text
++ .global macud
++macud:
++ macu.d r0,pc,pc
++ macu.d r14,r12,r12
++ macu.d r8,r5,r5
++ macu.d r6,r4,r4
++ macu.d r2,lr,lr
++ macu.d r6,sp,r11
++ macu.d r2,r4,r8
++ macu.d r6,r10,r9
++ .text
++ .global asr_1
++asr_1:
++ asr pc,pc,pc
++ asr r12,r12,r12
++ asr r5,r5,r5
++ asr r4,r4,r4
++ asr lr,lr,lr
++ asr pc,r6,pc
++ asr r0,r6,r12
++ asr r4,sp,r0
++ .text
++ .global lsl_1
++lsl_1:
++ lsl pc,pc,pc
++ lsl r12,r12,r12
++ lsl r5,r5,r5
++ lsl r4,r4,r4
++ lsl lr,lr,lr
++ lsl lr,r5,lr
++ lsl r5,pc,r3
++ lsl r1,pc,r9
++ .text
++ .global lsr_1
++lsr_1:
++ lsr pc,pc,pc
++ lsr r12,r12,r12
++ lsr r5,r5,r5
++ lsr r4,r4,r4
++ lsr lr,lr,lr
++ lsr r2,r4,r1
++ lsr r5,r1,r6
++ lsr sp,r6,r7
++ .text
++ .global xchg
++xchg:
++ xchg pc,pc,pc
++ xchg r12,r12,r12
++ xchg r5,r5,r5
++ xchg r4,r4,r4
++ xchg lr,lr,lr
++ xchg lr,r4,sp
++ xchg r1,r5,r12
++ xchg lr,r12,r0
++ .text
++ .global max
++max:
++ max pc,pc,pc
++ max r12,r12,r12
++ max r5,r5,r5
++ max r4,r4,r4
++ max lr,lr,lr
++ max lr,r2,sp
++ max r4,r10,r9
++ max lr,r9,lr
++ .text
++ .global min
++min:
++ min pc,pc,pc
++ min r12,r12,r12
++ min r5,r5,r5
++ min r4,r4,r4
++ min lr,lr,lr
++ min r9,r7,r8
++ min sp,r5,r5
++ min r4,r1,r4
++ .text
++ .global addabs
++addabs:
++ addabs pc,pc,pc
++ addabs r12,r12,r12
++ addabs r5,r5,r5
++ addabs r4,r4,r4
++ addabs lr,lr,lr
++ addabs r7,r10,r0
++ addabs r9,r9,r7
++ addabs r2,r8,r12
++ .text
++ .global mulnhh_w
++mulnhh_w:
++ mulnhh.w pc,pc:b,pc:b
++ mulnhh.w r12,r12:t,r12:t
++ mulnhh.w r5,r5:t,r5:t
++ mulnhh.w r4,r4:b,r4:b
++ mulnhh.w lr,lr:t,lr:t
++ mulnhh.w r11,sp:t,r9:b
++ mulnhh.w sp,r4:b,lr:t
++ mulnhh.w r12,r2:t,r11:b
++ .text
++ .global mulnwh_d
++mulnwh_d:
++ mulnwh.d r0,pc,pc:b
++ mulnwh.d r14,r12,r12:t
++ mulnwh.d r8,r5,r5:t
++ mulnwh.d r6,r4,r4:b
++ mulnwh.d r2,lr,lr:t
++ mulnwh.d r14,r3,r2:t
++ mulnwh.d r4,r5,r9:b
++ mulnwh.d r12,r4,r4:t
++ .text
++ .global machh_w
++machh_w:
++ machh.w pc,pc:b,pc:b
++ machh.w r12,r12:t,r12:t
++ machh.w r5,r5:t,r5:t
++ machh.w r4,r4:b,r4:b
++ machh.w lr,lr:t,lr:t
++ machh.w lr,r5:b,r1:t
++ machh.w r9,r6:b,r7:b
++ machh.w r5,lr:t,r12:b
++ .text
++ .global machh_d
++machh_d:
++ machh.d r0,pc:b,pc:b
++ machh.d r14,r12:t,r12:t
++ machh.d r8,r5:t,r5:t
++ machh.d r6,r4:b,r4:b
++ machh.d r2,lr:t,lr:t
++ machh.d r10,r0:b,r8:b
++ machh.d r14,r4:b,r5:t
++ machh.d r8,r0:b,r4:t
++ .text
++ .global macsathh_w
++macsathh_w:
++ macsathh.w pc,pc:b,pc:b
++ macsathh.w r12,r12:t,r12:t
++ macsathh.w r5,r5:t,r5:t
++ macsathh.w r4,r4:b,r4:b
++ macsathh.w lr,lr:t,lr:t
++ macsathh.w r7,r7:t,pc:t
++ macsathh.w r4,r2:t,r4:b
++ macsathh.w r4,r8:t,r3:t
++ .text
++ .global mulhh_w
++mulhh_w:
++ mulhh.w pc,pc:b,pc:b
++ mulhh.w r12,r12:t,r12:t
++ mulhh.w r5,r5:t,r5:t
++ mulhh.w r4,r4:b,r4:b
++ mulhh.w lr,lr:t,lr:t
++ mulhh.w r7,r4:t,r9:b
++ mulhh.w pc,r3:t,r7:t
++ mulhh.w pc,r4:b,r9:t
++ .text
++ .global mulsathh_h
++mulsathh_h:
++ mulsathh.h pc,pc:b,pc:b
++ mulsathh.h r12,r12:t,r12:t
++ mulsathh.h r5,r5:t,r5:t
++ mulsathh.h r4,r4:b,r4:b
++ mulsathh.h lr,lr:t,lr:t
++ mulsathh.h r3,r1:b,sp:b
++ mulsathh.h r11,lr:t,r11:b
++ mulsathh.h r8,r8:b,r11:t
++ .text
++ .global mulsathh_w
++mulsathh_w:
++ mulsathh.w pc,pc:b,pc:b
++ mulsathh.w r12,r12:t,r12:t
++ mulsathh.w r5,r5:t,r5:t
++ mulsathh.w r4,r4:b,r4:b
++ mulsathh.w lr,lr:t,lr:t
++ mulsathh.w lr,r11:t,r6:b
++ mulsathh.w r6,r6:b,r7:t
++ mulsathh.w r10,r2:b,r3:b
++ .text
++ .global mulsatrndhh_h
++mulsatrndhh_h:
++ mulsatrndhh.h pc,pc:b,pc:b
++ mulsatrndhh.h r12,r12:t,r12:t
++ mulsatrndhh.h r5,r5:t,r5:t
++ mulsatrndhh.h r4,r4:b,r4:b
++ mulsatrndhh.h lr,lr:t,lr:t
++ mulsatrndhh.h r11,r6:b,r9:b
++ mulsatrndhh.h r11,r3:b,r8:t
++ mulsatrndhh.h r5,sp:t,r7:t
++ .text
++ .global mulsatrndwh_w
++mulsatrndwh_w:
++ mulsatrndwh.w pc,pc,pc:b
++ mulsatrndwh.w r12,r12,r12:t
++ mulsatrndwh.w r5,r5,r5:t
++ mulsatrndwh.w r4,r4,r4:b
++ mulsatrndwh.w lr,lr,lr:t
++ mulsatrndwh.w r5,r12,r0:b
++ mulsatrndwh.w r7,r10,pc:b
++ mulsatrndwh.w r10,r8,r5:t
++ .text
++ .global macwh_d
++macwh_d:
++ macwh.d r0,pc,pc:b
++ macwh.d r14,r12,r12:t
++ macwh.d r8,r5,r5:t
++ macwh.d r6,r4,r4:b
++ macwh.d r2,lr,lr:t
++ macwh.d r4,r10,r12:t
++ macwh.d r4,r7,sp:b
++ macwh.d r14,r9,r11:b
++ .text
++ .global mulwh_d
++mulwh_d:
++ mulwh.d r0,pc,pc:b
++ mulwh.d r14,r12,r12:t
++ mulwh.d r8,r5,r5:t
++ mulwh.d r6,r4,r4:b
++ mulwh.d r2,lr,lr:t
++ mulwh.d r12,r5,r1:b
++ mulwh.d r0,r1,r3:t
++ mulwh.d r0,r9,r2:b
++ .text
++ .global mulsatwh_w
++mulsatwh_w:
++ mulsatwh.w pc,pc,pc:b
++ mulsatwh.w r12,r12,r12:t
++ mulsatwh.w r5,r5,r5:t
++ mulsatwh.w r4,r4,r4:b
++ mulsatwh.w lr,lr,lr:t
++ mulsatwh.w r11,pc,r10:t
++ mulsatwh.w sp,r12,r9:t
++ mulsatwh.w r0,r3,r2:t
++ .text
++ .global ldw7
++ldw7:
++ ld.w pc,pc[pc:b<<2]
++ ld.w r12,r12[r12:t<<2]
++ ld.w r5,r5[r5:u<<2]
++ ld.w r4,r4[r4:l<<2]
++ ld.w lr,lr[lr:l<<2]
++ ld.w r9,r10[r6:l<<2]
++ ld.w r2,r10[r10:b<<2]
++ ld.w r11,r5[pc:b<<2]
++ .text
++ .global satadd_w
++satadd_w:
++ satadd.w pc,pc,pc
++ satadd.w r12,r12,r12
++ satadd.w r5,r5,r5
++ satadd.w r4,r4,r4
++ satadd.w lr,lr,lr
++ satadd.w r4,r8,r11
++ satadd.w r3,r12,r6
++ satadd.w r3,lr,r9
++ .text
++ .global satsub_w1
++satsub_w1:
++ satsub.w pc,pc,pc
++ satsub.w r12,r12,r12
++ satsub.w r5,r5,r5
++ satsub.w r4,r4,r4
++ satsub.w lr,lr,lr
++ satsub.w r8,sp,r0
++ satsub.w r9,r8,r4
++ satsub.w pc,lr,r2
++ .text
++ .global satadd_h
++satadd_h:
++ satadd.h pc,pc,pc
++ satadd.h r12,r12,r12
++ satadd.h r5,r5,r5
++ satadd.h r4,r4,r4
++ satadd.h lr,lr,lr
++ satadd.h r7,r3,r9
++ satadd.h r1,r0,r2
++ satadd.h r1,r4,lr
++ .text
++ .global satsub_h
++satsub_h:
++ satsub.h pc,pc,pc
++ satsub.h r12,r12,r12
++ satsub.h r5,r5,r5
++ satsub.h r4,r4,r4
++ satsub.h lr,lr,lr
++ satsub.h lr,lr,r3
++ satsub.h r11,r6,r5
++ satsub.h r3,sp,r0
++ .text
++ .global mul3
++mul3:
++ mul pc,pc,0
++ mul r12,r12,-1
++ mul r5,r5,-128
++ mul r4,r4,127
++ mul lr,lr,1
++ mul r12,r2,-7
++ mul r1,pc,95
++ mul r4,r6,19
++ .text
++ .global rsub2
++rsub2:
++ rsub pc,pc,0
++ rsub r12,r12,-1
++ rsub r5,r5,-128
++ rsub r4,r4,127
++ rsub lr,lr,1
++ rsub r9,lr,96
++ rsub r11,r1,56
++ rsub r0,r7,-87
++ .text
++ .global clz
++clz:
++ clz pc,pc
++ clz r12,r12
++ clz r5,r5
++ clz r4,r4
++ clz lr,lr
++ clz r2,r3
++ clz r5,r11
++ clz pc,r3
++ .text
++ .global cpc1
++cpc1:
++ cpc pc,pc
++ cpc r12,r12
++ cpc r5,r5
++ cpc r4,r4
++ cpc lr,lr
++ cpc pc,r4
++ cpc r5,r9
++ cpc r6,r7
++ .text
++ .global asr3
++asr3:
++ asr pc,pc,0
++ asr r12,r12,31
++ asr r5,r5,16
++ asr r4,r4,15
++ asr lr,lr,1
++ asr r4,r11,19
++ asr sp,pc,26
++ asr r11,sp,8
++ .text
++ .global lsl3
++lsl3:
++ lsl pc,pc,0
++ lsl r12,r12,31
++ lsl r5,r5,16
++ lsl r4,r4,15
++ lsl lr,lr,1
++ lsl r8,r10,17
++ lsl r2,lr,3
++ lsl lr,r11,14
++ .text
++ .global lsr3
++lsr3:
++ lsr pc,pc,0
++ lsr r12,r12,31
++ lsr r5,r5,16
++ lsr r4,r4,15
++ lsr lr,lr,1
++ lsr r4,r3,31
++ lsr pc,r9,14
++ lsr r3,r0,6
++/* .text
++ .global extract_b
++extract_b:
++ extract.b pc,pc:b
++ extract.b r12,r12:t
++ extract.b r5,r5:u
++ extract.b r4,r4:l
++ extract.b lr,lr:l
++ extract.b r2,r5:l
++ extract.b r12,r3:l
++ extract.b sp,r3:l
++ .text
++ .global insert_b
++insert_b:
++ insert.b pc:b,pc
++ insert.b r12:t,r12
++ insert.b r5:u,r5
++ insert.b r4:l,r4
++ insert.b lr:l,lr
++ insert.b r12:u,r3
++ insert.b r10:l,lr
++ insert.b r11:l,r12
++ .text
++ .global extract_h
++extract_h:
++ extract.h pc,pc:b
++ extract.h r12,r12:t
++ extract.h r5,r5:t
++ extract.h r4,r4:b
++ extract.h lr,lr:t
++ extract.h r11,lr:b
++ extract.h r10,r0:b
++ extract.h r11,r12:b
++ .text
++ .global insert_h
++insert_h:
++ insert.h pc:b,pc
++ insert.h r12:t,r12
++ insert.h r5:t,r5
++ insert.h r4:b,r4
++ insert.h lr:t,lr
++ insert.h r12:t,r11
++ insert.h r7:b,r6
++ insert.h r1:t,r11 */
++ .text
++ .global movc1
++movc1:
++ moveq pc,pc
++ moval r12,r12
++ movls r5,r5
++ movpl r4,r4
++ movne lr,lr
++ movne pc,r11
++ movmi r10,r2
++ movls r8,r12
++ .text
++ .global padd_h
++padd_h:
++ padd.h pc,pc,pc
++ padd.h r12,r12,r12
++ padd.h r5,r5,r5
++ padd.h r4,r4,r4
++ padd.h lr,lr,lr
++ padd.h r8,r2,r7
++ padd.h r0,r0,r3
++ padd.h sp,r11,r6
++ .text
++ .global psub_h
++psub_h:
++ psub.h pc,pc,pc
++ psub.h r12,r12,r12
++ psub.h r5,r5,r5
++ psub.h r4,r4,r4
++ psub.h lr,lr,lr
++ psub.h lr,r6,r8
++ psub.h r0,r1,sp
++ psub.h pc,pc,sp
++ .text
++ .global paddx_h
++paddx_h:
++ paddx.h pc,pc,pc
++ paddx.h r12,r12,r12
++ paddx.h r5,r5,r5
++ paddx.h r4,r4,r4
++ paddx.h lr,lr,lr
++ paddx.h pc,pc,r1
++ paddx.h r10,r4,r5
++ paddx.h r5,pc,r2
++ .text
++ .global psubx_h
++psubx_h:
++ psubx.h pc,pc,pc
++ psubx.h r12,r12,r12
++ psubx.h r5,r5,r5
++ psubx.h r4,r4,r4
++ psubx.h lr,lr,lr
++ psubx.h r5,r12,r5
++ psubx.h r3,r8,r3
++ psubx.h r5,r2,r3
++ .text
++ .global padds_sh
++padds_sh:
++ padds.sh pc,pc,pc
++ padds.sh r12,r12,r12
++ padds.sh r5,r5,r5
++ padds.sh r4,r4,r4
++ padds.sh lr,lr,lr
++ padds.sh r9,lr,r2
++ padds.sh r6,r8,r1
++ padds.sh r6,r4,r10
++ .text
++ .global psubs_sh
++psubs_sh:
++ psubs.sh pc,pc,pc
++ psubs.sh r12,r12,r12
++ psubs.sh r5,r5,r5
++ psubs.sh r4,r4,r4
++ psubs.sh lr,lr,lr
++ psubs.sh r6,lr,r11
++ psubs.sh r2,r12,r4
++ psubs.sh r0,r9,r0
++ .text
++ .global paddxs_sh
++paddxs_sh:
++ paddxs.sh pc,pc,pc
++ paddxs.sh r12,r12,r12
++ paddxs.sh r5,r5,r5
++ paddxs.sh r4,r4,r4
++ paddxs.sh lr,lr,lr
++ paddxs.sh r0,r3,r9
++ paddxs.sh pc,r10,r11
++ paddxs.sh pc,r10,pc
++ .text
++ .global psubxs_sh
++psubxs_sh:
++ psubxs.sh pc,pc,pc
++ psubxs.sh r12,r12,r12
++ psubxs.sh r5,r5,r5
++ psubxs.sh r4,r4,r4
++ psubxs.sh lr,lr,lr
++ psubxs.sh r7,r4,r4
++ psubxs.sh r7,r8,r3
++ psubxs.sh pc,r6,r5
++ .text
++ .global padds_uh
++padds_uh:
++ padds.uh pc,pc,pc
++ padds.uh r12,r12,r12
++ padds.uh r5,r5,r5
++ padds.uh r4,r4,r4
++ padds.uh lr,lr,lr
++ padds.uh r12,r11,r7
++ padds.uh r7,r8,lr
++ padds.uh r6,r9,r7
++ .text
++ .global psubs_uh
++psubs_uh:
++ psubs.uh pc,pc,pc
++ psubs.uh r12,r12,r12
++ psubs.uh r5,r5,r5
++ psubs.uh r4,r4,r4
++ psubs.uh lr,lr,lr
++ psubs.uh lr,r10,r6
++ psubs.uh sp,r2,pc
++ psubs.uh r2,r9,r2
++ .text
++ .global paddxs_uh
++paddxs_uh:
++ paddxs.uh pc,pc,pc
++ paddxs.uh r12,r12,r12
++ paddxs.uh r5,r5,r5
++ paddxs.uh r4,r4,r4
++ paddxs.uh lr,lr,lr
++ paddxs.uh r7,r9,r5
++ paddxs.uh r9,r1,r4
++ paddxs.uh r5,r2,r3
++ .text
++ .global psubxs_uh
++psubxs_uh:
++ psubxs.uh pc,pc,pc
++ psubxs.uh r12,r12,r12
++ psubxs.uh r5,r5,r5
++ psubxs.uh r4,r4,r4
++ psubxs.uh lr,lr,lr
++ psubxs.uh sp,r5,sp
++ psubxs.uh sp,r6,r6
++ psubxs.uh r3,r11,r8
++ .text
++ .global paddh_sh
++paddh_sh:
++ paddh.sh pc,pc,pc
++ paddh.sh r12,r12,r12
++ paddh.sh r5,r5,r5
++ paddh.sh r4,r4,r4
++ paddh.sh lr,lr,lr
++ paddh.sh r12,sp,r3
++ paddh.sh pc,r5,r3
++ paddh.sh r8,r8,sp
++ .text
++ .global psubh_sh
++psubh_sh:
++ psubh.sh pc,pc,pc
++ psubh.sh r12,r12,r12
++ psubh.sh r5,r5,r5
++ psubh.sh r4,r4,r4
++ psubh.sh lr,lr,lr
++ psubh.sh r1,r5,r8
++ psubh.sh r7,r3,r6
++ psubh.sh r4,r3,r3
++ .text
++ .global paddxh_sh
++paddxh_sh:
++ paddxh.sh pc,pc,pc
++ paddxh.sh r12,r12,r12
++ paddxh.sh r5,r5,r5
++ paddxh.sh r4,r4,r4
++ paddxh.sh lr,lr,lr
++ paddxh.sh r6,r0,r4
++ paddxh.sh r9,r8,r9
++ paddxh.sh r3,r0,sp
++ .text
++ .global psubxh_sh
++psubxh_sh:
++ psubxh.sh pc,pc,pc
++ psubxh.sh r12,r12,r12
++ psubxh.sh r5,r5,r5
++ psubxh.sh r4,r4,r4
++ psubxh.sh lr,lr,lr
++ psubxh.sh r4,pc,r12
++ psubxh.sh r8,r4,r6
++ psubxh.sh r12,r9,r4
++ .text
++ .global paddsub_h
++paddsub_h:
++ paddsub.h pc,pc:b,pc:b
++ paddsub.h r12,r12:t,r12:t
++ paddsub.h r5,r5:t,r5:t
++ paddsub.h r4,r4:b,r4:b
++ paddsub.h lr,lr:t,lr:t
++ paddsub.h r5,r2:t,lr:b
++ paddsub.h r7,r1:b,r8:b
++ paddsub.h r6,r10:t,r5:t
++ .text
++ .global psubadd_h
++psubadd_h:
++ psubadd.h pc,pc:b,pc:b
++ psubadd.h r12,r12:t,r12:t
++ psubadd.h r5,r5:t,r5:t
++ psubadd.h r4,r4:b,r4:b
++ psubadd.h lr,lr:t,lr:t
++ psubadd.h r9,r11:t,r8:t
++ psubadd.h r10,r7:t,lr:t
++ psubadd.h r6,pc:t,pc:b
++ .text
++ .global paddsubs_sh
++paddsubs_sh:
++ paddsubs.sh pc,pc:b,pc:b
++ paddsubs.sh r12,r12:t,r12:t
++ paddsubs.sh r5,r5:t,r5:t
++ paddsubs.sh r4,r4:b,r4:b
++ paddsubs.sh lr,lr:t,lr:t
++ paddsubs.sh r0,lr:t,r0:b
++ paddsubs.sh r9,r2:t,r4:t
++ paddsubs.sh r12,r9:t,sp:t
++ .text
++ .global psubadds_sh
++psubadds_sh:
++ psubadds.sh pc,pc:b,pc:b
++ psubadds.sh r12,r12:t,r12:t
++ psubadds.sh r5,r5:t,r5:t
++ psubadds.sh r4,r4:b,r4:b
++ psubadds.sh lr,lr:t,lr:t
++ psubadds.sh pc,lr:b,r1:t
++ psubadds.sh r11,r3:b,r12:b
++ psubadds.sh r10,r2:t,r8:t
++ .text
++ .global paddsubs_uh
++paddsubs_uh:
++ paddsubs.uh pc,pc:b,pc:b
++ paddsubs.uh r12,r12:t,r12:t
++ paddsubs.uh r5,r5:t,r5:t
++ paddsubs.uh r4,r4:b,r4:b
++ paddsubs.uh lr,lr:t,lr:t
++ paddsubs.uh r9,r2:b,r3:b
++ paddsubs.uh sp,sp:b,r7:t
++ paddsubs.uh lr,r0:b,r10:t
++ .text
++ .global psubadds_uh
++psubadds_uh:
++ psubadds.uh pc,pc:b,pc:b
++ psubadds.uh r12,r12:t,r12:t
++ psubadds.uh r5,r5:t,r5:t
++ psubadds.uh r4,r4:b,r4:b
++ psubadds.uh lr,lr:t,lr:t
++ psubadds.uh r12,r9:t,pc:t
++ psubadds.uh r8,r6:b,r8:b
++ psubadds.uh r8,r8:b,r4:b
++ .text
++ .global paddsubh_sh
++paddsubh_sh:
++ paddsubh.sh pc,pc:b,pc:b
++ paddsubh.sh r12,r12:t,r12:t
++ paddsubh.sh r5,r5:t,r5:t
++ paddsubh.sh r4,r4:b,r4:b
++ paddsubh.sh lr,lr:t,lr:t
++ paddsubh.sh r8,r9:t,r9:b
++ paddsubh.sh r0,sp:t,r1:t
++ paddsubh.sh r3,r1:b,r0:t
++ .text
++ .global psubaddh_sh
++psubaddh_sh:
++ psubaddh.sh pc,pc:b,pc:b
++ psubaddh.sh r12,r12:t,r12:t
++ psubaddh.sh r5,r5:t,r5:t
++ psubaddh.sh r4,r4:b,r4:b
++ psubaddh.sh lr,lr:t,lr:t
++ psubaddh.sh r7,r3:t,r10:b
++ psubaddh.sh r7,r2:t,r1:t
++ psubaddh.sh r11,r3:b,r6:b
++ .text
++ .global padd_b
++padd_b:
++ padd.b pc,pc,pc
++ padd.b r12,r12,r12
++ padd.b r5,r5,r5
++ padd.b r4,r4,r4
++ padd.b lr,lr,lr
++ padd.b r2,r6,pc
++ padd.b r8,r9,r12
++ padd.b r5,r12,r3
++ .text
++ .global psub_b
++psub_b:
++ psub.b pc,pc,pc
++ psub.b r12,r12,r12
++ psub.b r5,r5,r5
++ psub.b r4,r4,r4
++ psub.b lr,lr,lr
++ psub.b r0,r12,pc
++ psub.b r7,sp,r10
++ psub.b r5,sp,r12
++ .text
++ .global padds_sb
++padds_sb:
++ padds.sb pc,pc,pc
++ padds.sb r12,r12,r12
++ padds.sb r5,r5,r5
++ padds.sb r4,r4,r4
++ padds.sb lr,lr,lr
++ padds.sb sp,r11,r4
++ padds.sb r11,r10,r11
++ padds.sb r5,r12,r6
++ .text
++ .global psubs_sb
++psubs_sb:
++ psubs.sb pc,pc,pc
++ psubs.sb r12,r12,r12
++ psubs.sb r5,r5,r5
++ psubs.sb r4,r4,r4
++ psubs.sb lr,lr,lr
++ psubs.sb r7,r6,r8
++ psubs.sb r12,r10,r9
++ psubs.sb pc,r11,r0
++ .text
++ .global padds_ub
++padds_ub:
++ padds.ub pc,pc,pc
++ padds.ub r12,r12,r12
++ padds.ub r5,r5,r5
++ padds.ub r4,r4,r4
++ padds.ub lr,lr,lr
++ padds.ub r3,r2,r11
++ padds.ub r10,r8,r1
++ padds.ub r11,r8,r10
++ .text
++ .global psubs_ub
++psubs_ub:
++ psubs.ub pc,pc,pc
++ psubs.ub r12,r12,r12
++ psubs.ub r5,r5,r5
++ psubs.ub r4,r4,r4
++ psubs.ub lr,lr,lr
++ psubs.ub r0,r2,r7
++ psubs.ub lr,r5,r3
++ psubs.ub r6,r7,r9
++ .text
++ .global paddh_ub
++paddh_ub:
++ paddh.ub pc,pc,pc
++ paddh.ub r12,r12,r12
++ paddh.ub r5,r5,r5
++ paddh.ub r4,r4,r4
++ paddh.ub lr,lr,lr
++ paddh.ub lr,r1,r0
++ paddh.ub r2,r7,r7
++ paddh.ub r2,r1,r2
++ .text
++ .global psubh_ub
++psubh_ub:
++ psubh.ub pc,pc,pc
++ psubh.ub r12,r12,r12
++ psubh.ub r5,r5,r5
++ psubh.ub r4,r4,r4
++ psubh.ub lr,lr,lr
++ psubh.ub r0,r1,r6
++ psubh.ub r4,lr,r10
++ psubh.ub r9,r8,r1
++ .text
++ .global pmax_ub
++pmax_ub:
++ pmax.ub pc,pc,pc
++ pmax.ub r12,r12,r12
++ pmax.ub r5,r5,r5
++ pmax.ub r4,r4,r4
++ pmax.ub lr,lr,lr
++ pmax.ub pc,r2,r11
++ pmax.ub r12,r1,r1
++ pmax.ub r5,r2,r0
++ .text
++ .global pmax_sh
++pmax_sh:
++ pmax.sh pc,pc,pc
++ pmax.sh r12,r12,r12
++ pmax.sh r5,r5,r5
++ pmax.sh r4,r4,r4
++ pmax.sh lr,lr,lr
++ pmax.sh lr,r6,r12
++ pmax.sh r2,pc,r5
++ pmax.sh pc,r2,r7
++ .text
++ .global pmin_ub
++pmin_ub:
++ pmin.ub pc,pc,pc
++ pmin.ub r12,r12,r12
++ pmin.ub r5,r5,r5
++ pmin.ub r4,r4,r4
++ pmin.ub lr,lr,lr
++ pmin.ub r8,r1,r5
++ pmin.ub r1,r8,r3
++ pmin.ub r0,r2,r7
++ .text
++ .global pmin_sh
++pmin_sh:
++ pmin.sh pc,pc,pc
++ pmin.sh r12,r12,r12
++ pmin.sh r5,r5,r5
++ pmin.sh r4,r4,r4
++ pmin.sh lr,lr,lr
++ pmin.sh r8,r4,r10
++ pmin.sh lr,r10,r12
++ pmin.sh r2,r6,r2
++ .text
++ .global pavg_ub
++pavg_ub:
++ pavg.ub pc,pc,pc
++ pavg.ub r12,r12,r12
++ pavg.ub r5,r5,r5
++ pavg.ub r4,r4,r4
++ pavg.ub lr,lr,lr
++ pavg.ub r0,r1,r6
++ pavg.ub r8,r3,r6
++ pavg.ub pc,r12,r10
++ .text
++ .global pavg_sh
++pavg_sh:
++ pavg.sh pc,pc,pc
++ pavg.sh r12,r12,r12
++ pavg.sh r5,r5,r5
++ pavg.sh r4,r4,r4
++ pavg.sh lr,lr,lr
++ pavg.sh r9,pc,sp
++ pavg.sh pc,sp,r3
++ pavg.sh r6,r1,r9
++ .text
++ .global pabs_sb
++pabs_sb:
++ pabs.sb pc,pc
++ pabs.sb r12,r12
++ pabs.sb r5,r5
++ pabs.sb r4,r4
++ pabs.sb lr,lr
++ pabs.sb r11,r6
++ pabs.sb lr,r9
++ pabs.sb sp,r7
++ .text
++ .global pabs_sh
++pabs_sh:
++ pabs.sh pc,pc
++ pabs.sh r12,r12
++ pabs.sh r5,r5
++ pabs.sh r4,r4
++ pabs.sh lr,lr
++ pabs.sh pc,r3
++ pabs.sh r5,r7
++ pabs.sh r4,r0
++ .text
++ .global psad
++psad:
++ psad pc,pc,pc
++ psad r12,r12,r12
++ psad r5,r5,r5
++ psad r4,r4,r4
++ psad lr,lr,lr
++ psad r9,r11,r11
++ psad lr,r4,sp
++ psad lr,r4,r5
++ .text
++ .global pasr_b
++pasr_b:
++ pasr.b pc,pc,0
++ pasr.b r12,r12,7
++ pasr.b r5,r5,4
++ pasr.b r4,r4,3
++ pasr.b lr,lr,1
++ pasr.b pc,r7,1
++ pasr.b sp,lr,6
++ pasr.b sp,r3,2
++ .text
++ .global plsl_b
++plsl_b:
++ plsl.b pc,pc,0
++ plsl.b r12,r12,7
++ plsl.b r5,r5,4
++ plsl.b r4,r4,3
++ plsl.b lr,lr,1
++ plsl.b r2,r11,4
++ plsl.b r8,r5,7
++ plsl.b pc,r0,2
++ .text
++ .global plsr_b
++plsr_b:
++ plsr.b pc,pc,0
++ plsr.b r12,r12,7
++ plsr.b r5,r5,4
++ plsr.b r4,r4,3
++ plsr.b lr,lr,1
++ plsr.b r12,r1,2
++ plsr.b r6,pc,7
++ plsr.b r12,r11,2
++ .text
++ .global pasr_h
++pasr_h:
++ pasr.h pc,pc,0
++ pasr.h r12,r12,15
++ pasr.h r5,r5,8
++ pasr.h r4,r4,7
++ pasr.h lr,lr,1
++ pasr.h r0,r11,10
++ pasr.h r4,r6,8
++ pasr.h r6,r2,4
++ .text
++ .global plsl_h
++plsl_h:
++ plsl.h pc,pc,0
++ plsl.h r12,r12,15
++ plsl.h r5,r5,8
++ plsl.h r4,r4,7
++ plsl.h lr,lr,1
++ plsl.h r5,r10,9
++ plsl.h sp,lr,8
++ plsl.h r0,lr,7
++ .text
++ .global plsr_h
++plsr_h:
++ plsr.h pc,pc,0
++ plsr.h r12,r12,15
++ plsr.h r5,r5,8
++ plsr.h r4,r4,7
++ plsr.h lr,lr,1
++ plsr.h r11,r0,15
++ plsr.h lr,r3,3
++ plsr.h r8,lr,10
++ .text
++ .global packw_sh
++packw_sh:
++ packw.sh pc,pc,pc
++ packw.sh r12,r12,r12
++ packw.sh r5,r5,r5
++ packw.sh r4,r4,r4
++ packw.sh lr,lr,lr
++ packw.sh sp,r11,r10
++ packw.sh r8,r2,r12
++ packw.sh r8,r1,r5
++ .text
++ .global punpckub_h
++punpckub_h:
++ punpckub.h pc,pc:b
++ punpckub.h r12,r12:t
++ punpckub.h r5,r5:t
++ punpckub.h r4,r4:b
++ punpckub.h lr,lr:t
++ punpckub.h r6,r1:t
++ punpckub.h lr,r5:b
++ punpckub.h lr,r2:t
++ .text
++ .global punpcksb_h
++punpcksb_h:
++ punpcksb.h pc,pc:b
++ punpcksb.h r12,r12:t
++ punpcksb.h r5,r5:t
++ punpcksb.h r4,r4:b
++ punpcksb.h lr,lr:t
++ punpcksb.h r4,r7:t
++ punpcksb.h r6,lr:b
++ punpcksb.h r12,r12:t
++ .text
++ .global packsh_ub
++packsh_ub:
++ packsh.ub pc,pc,pc
++ packsh.ub r12,r12,r12
++ packsh.ub r5,r5,r5
++ packsh.ub r4,r4,r4
++ packsh.ub lr,lr,lr
++ packsh.ub r3,r6,r3
++ packsh.ub r8,r0,r3
++ packsh.ub r9,r3,lr
++ .text
++ .global packsh_sb
++packsh_sb:
++ packsh.sb pc,pc,pc
++ packsh.sb r12,r12,r12
++ packsh.sb r5,r5,r5
++ packsh.sb r4,r4,r4
++ packsh.sb lr,lr,lr
++ packsh.sb r6,r8,r1
++ packsh.sb lr,r9,r8
++ packsh.sb sp,r6,r6
++ .text
++ .global andl
++andl:
++ andl pc,0
++ andl r12,65535
++ andl r5,32768
++ andl r4,32767
++ andl lr,1
++ andl pc,23128
++ andl r8,47262
++ andl r7,13719
++ .text
++ .global andl_coh
++andl_coh:
++ andl pc,0,COH
++ andl r12,65535,COH
++ andl r5,32768,COH
++ andl r4,32767,COH
++ andl lr,1,COH
++ andl r6,22753,COH
++ andl r0,40653,COH
++ andl r4,48580,COH
++ .text
++ .global andh
++andh:
++ andh pc,0
++ andh r12,65535
++ andh r5,32768
++ andh r4,32767
++ andh lr,1
++ andh r12,52312
++ andh r3,8675
++ andh r2,42987
++ .text
++ .global andh_coh
++andh_coh:
++ andh pc,0,COH
++ andh r12,65535,COH
++ andh r5,32768,COH
++ andh r4,32767,COH
++ andh lr,1,COH
++ andh r11,34317,COH
++ andh r8,52982,COH
++ andh r10,23683,COH
++ .text
++ .global orl
++orl:
++ orl pc,0
++ orl r12,65535
++ orl r5,32768
++ orl r4,32767
++ orl lr,1
++ orl sp,16766
++ orl r0,21181
++ orl pc,44103
++ .text
++ .global orh
++orh:
++ orh pc,0
++ orh r12,65535
++ orh r5,32768
++ orh r4,32767
++ orh lr,1
++ orh r8,28285
++ orh r12,30492
++ orh r1,59930
++ .text
++ .global eorl
++eorl:
++ eorl pc,0
++ eorl r12,65535
++ eorl r5,32768
++ eorl r4,32767
++ eorl lr,1
++ eorl r4,51129
++ eorl r6,64477
++ eorl r1,20913
++ .text
++ .global eorh
++eorh:
++ eorh pc,0
++ eorh r12,65535
++ eorh r5,32768
++ eorh r4,32767
++ eorh lr,1
++ eorh r0,11732
++ eorh r10,38069
++ eorh r9,57130
++ .text
++ .global mcall
++mcall:
++ mcall pc[0]
++ mcall r12[-4]
++ mcall r5[-131072]
++ mcall r4[131068]
++ mcall lr[4]
++ mcall sp[61180]
++ mcall r4[-35000]
++ mcall r0[9924]
++ .text
++ .global pref
++pref:
++ pref pc[0]
++ pref r12[-1]
++ pref r5[-32768]
++ pref r4[32767]
++ pref lr[1]
++ pref r7[7748]
++ pref r7[-7699]
++ pref r2[-25892]
++ .text
++ .global cache
++cache:
++ cache pc[0],0
++ cache r12[-1],31
++ cache r5[-1024],16
++ cache r4[1023],15
++ cache lr[1],1
++ cache r3[-964],17
++ cache r4[-375],22
++ cache r3[-888],17
++ .text
++ .global sub4
++sub4:
++ sub pc,0
++ sub r12,-1
++ sub r5,-1048576
++ sub r4,1048575
++ sub lr,1
++ sub r2,-619156
++ sub lr,461517
++ sub r8,-185051
++ .text
++ .global cp3
++cp3:
++ cp pc,0
++ cp r12,-1
++ cp r5,-1048576
++ cp r4,1048575
++ cp lr,1
++ cp r1,124078
++ cp r0,-378909
++ cp r4,-243180
++ .text
++ .global mov2
++mov2:
++ mov pc,0
++ mov r12,-1
++ mov r5,-1048576
++ mov r4,1048575
++ mov lr,1
++ mov r5,-317021
++ mov sp,-749164
++ mov r5,940179
++ .text
++ .global brc2
++brc2:
++ breq 0
++ bral -2
++ brls -2097152
++ brpl 2097150
++ brne 2
++ brhi -1796966
++ brqs 1321368
++ brls -577434
++ .text
++ .global rcall2
++rcall2:
++ rcall 0
++ rcall -2
++ rcall -2097152
++ rcall 2097150
++ rcall 2
++ rcall 496820
++ rcall 1085092
++ rcall -1058
++ .text
++ .global sub5
++sub5:
++ sub pc,pc,0
++ sub r12,r12,-1
++ sub r5,r5,-32768
++ sub r4,r4,32767
++ sub lr,lr,1
++ sub pc,pc,-12744
++ sub r7,r7,-27365
++ sub r2,r9,-17358
++ .text
++ .global satsub_w2
++satsub_w2:
++ satsub.w pc,pc,0
++ satsub.w r12,r12,-1
++ satsub.w r5,r5,-32768
++ satsub.w r4,r4,32767
++ satsub.w lr,lr,1
++ satsub.w r2,lr,-2007
++ satsub.w r7,r12,-784
++ satsub.w r4,r7,23180
++ .text
++ .global ld_d4
++ld_d4:
++ ld.d r0,pc[0]
++ ld.d r14,r12[-1]
++ ld.d r8,r5[-32768]
++ ld.d r6,r4[32767]
++ ld.d r2,lr[1]
++ ld.d r14,r11[14784]
++ ld.d r6,r9[-18905]
++ ld.d r2,r3[-6355]
++ .text
++ .global ld_w4
++ld_w4:
++ ld.w pc,pc[0]
++ ld.w r12,r12[-1]
++ ld.w r5,r5[-32768]
++ ld.w r4,r4[32767]
++ ld.w lr,lr[1]
++ ld.w r0,r12[-22133]
++ ld.w sp,pc[-20521]
++ /* ld.w r3,r5[29035] */
++ nop
++ .text
++ .global ld_sh4
++ld_sh4:
++ ld.sh pc,pc[0]
++ ld.sh r12,r12[-1]
++ ld.sh r5,r5[-32768]
++ ld.sh r4,r4[32767]
++ ld.sh lr,lr[1]
++ ld.sh r6,r10[30930]
++ ld.sh r6,r10[21973]
++ /* ld.sh r11,r10[-2058] */
++ nop
++ .text
++ .global ld_uh4
++ld_uh4:
++ ld.uh pc,pc[0]
++ ld.uh r12,r12[-1]
++ ld.uh r5,r5[-32768]
++ ld.uh r4,r4[32767]
++ ld.uh lr,lr[1]
++ ld.uh r1,r9[-13354]
++ ld.uh lr,r11[21337]
++ /* ld.uh r2,lr[-25370] */
++ nop
++ .text
++ .global ld_sb1
++ld_sb1:
++ ld.sb pc,pc[0]
++ ld.sb r12,r12[-1]
++ ld.sb r5,r5[-32768]
++ ld.sb r4,r4[32767]
++ ld.sb lr,lr[1]
++ ld.sb r7,sp[-28663]
++ ld.sb r2,r1[-5879]
++ ld.sb r12,r3[18734]
++ .text
++ .global ld_ub4
++ld_ub4:
++ ld.ub pc,pc[0]
++ ld.ub r12,r12[-1]
++ ld.ub r5,r5[-32768]
++ ld.ub r4,r4[32767]
++ ld.ub lr,lr[1]
++ ld.ub pc,r4[8277]
++ ld.ub r5,r12[19172]
++ ld.ub r10,lr[26347]
++ .text
++ .global st_d4
++st_d4:
++ st.d pc[0],r0
++ st.d r12[-1],r14
++ st.d r5[-32768],r8
++ st.d r4[32767],r6
++ st.d lr[1],r2
++ st.d r5[13200],r10
++ st.d r5[9352],r10
++ st.d r5[32373],r4
++ .text
++ .global st_w4
++st_w4:
++ st.w pc[0],pc
++ st.w r12[-1],r12
++ st.w r5[-32768],r5
++ st.w r4[32767],r4
++ st.w lr[1],lr
++ st.w sp[6136],r7
++ st.w r6[27087],r12
++ /* st.w r3[20143],r7 */
++ nop
++ .text
++ .global st_h4
++st_h4:
++ st.h pc[0],pc
++ st.h r12[-1],r12
++ st.h r5[-32768],r5
++ st.h r4[32767],r4
++ st.h lr[1],lr
++ st.h r4[-9962],r7
++ st.h r9[-16250],r3
++ /* st.h r8[-28810],r7 */
++ nop
++ .text
++ .global st_b4
++st_b4:
++ st.b pc[0],pc
++ st.b r12[-1],r12
++ st.b r5[-32768],r5
++ st.b r4[32767],r4
++ st.b lr[1],lr
++ st.b r12[30102],r6
++ st.b r5[28977],r1
++ st.b r0[5470],r1
++ .text
++ .global mfsr
++mfsr:
++ mfsr pc,0
++ mfsr r12,1020
++ mfsr r5,512
++ mfsr r4,508
++ mfsr lr,4
++ mfsr r2,696
++ mfsr r4,260
++ mfsr r10,1016
++ .text
++ .global mtsr
++mtsr:
++ mtsr 0,pc
++ mtsr 1020,r12
++ mtsr 512,r5
++ mtsr 508,r4
++ mtsr 4,lr
++ mtsr 224,r10
++ mtsr 836,r12
++ mtsr 304,r9
++ .text
++ .global mfdr
++mfdr:
++ mfdr pc,0
++ mfdr r12,1020
++ mfdr r5,512
++ mfdr r4,508
++ mfdr lr,4
++ mfdr r6,932
++ mfdr r5,36
++ mfdr r9,300
++ .text
++ .global mtdr
++mtdr:
++ mtdr 0,pc
++ mtdr 1020,r12
++ mtdr 512,r5
++ mtdr 508,r4
++ mtdr 4,lr
++ mtdr 180,r8
++ mtdr 720,r10
++ mtdr 408,lr
++ .text
++ .global sleep
++sleep:
++ sleep 0
++ sleep 255
++ sleep 128
++ sleep 127
++ sleep 1
++ sleep 254
++ sleep 15
++ sleep 43
++ .text
++ .global sync
++sync:
++ sync 0
++ sync 255
++ sync 128
++ sync 127
++ sync 1
++ sync 166
++ sync 230
++ sync 180
++ .text
++ .global bld
++bld:
++ bld pc,0
++ bld r12,31
++ bld r5,16
++ bld r4,15
++ bld lr,1
++ bld r9,15
++ bld r0,4
++ bld lr,26
++ .text
++ .global bst
++bst:
++ bst pc,0
++ bst r12,31
++ bst r5,16
++ bst r4,15
++ bst lr,1
++ bst r10,28
++ bst r0,3
++ bst sp,2
++ .text
++ .global sats
++sats:
++ sats pc>>0,0
++ sats r12>>31,31
++ sats r5>>16,16
++ sats r4>>15,15
++ sats lr>>1,1
++ sats r10>>3,19
++ sats r10>>2,26
++ sats r1>>20,1
++ .text
++ .global satu
++satu:
++ satu pc>>0,0
++ satu r12>>31,31
++ satu r5>>16,16
++ satu r4>>15,15
++ satu lr>>1,1
++ satu pc>>5,7
++ satu r7>>5,5
++ satu r2>>26,19
++ .text
++ .global satrnds
++satrnds:
++ satrnds pc>>0,0
++ satrnds r12>>31,31
++ satrnds r5>>16,16
++ satrnds r4>>15,15
++ satrnds lr>>1,1
++ satrnds r0>>21,19
++ satrnds sp>>0,2
++ satrnds r7>>6,29
++ .text
++ .global satrndu
++satrndu:
++ satrndu pc>>0,0
++ satrndu r12>>31,31
++ satrndu r5>>16,16
++ satrndu r4>>15,15
++ satrndu lr>>1,1
++ satrndu r12>>0,26
++ satrndu r4>>21,3
++ satrndu r10>>3,16
++ .text
++ .global subfc
++subfc:
++ subfeq pc,0
++ subfal r12,-1
++ subfls r5,-128
++ subfpl r4,127
++ subfne lr,1
++ subfls r10,8
++ subfvc r11,99
++ subfvs r2,73
++ .text
++ .global subc
++subc:
++ subeq pc,0
++ subal r12,-1
++ subls r5,-128
++ subpl r4,127
++ subne lr,1
++ subls r12,118
++ subvc lr,-12
++ submi r4,-13
++ .text
++ .global movc2
++movc2:
++ moveq pc,0
++ moval r12,-1
++ movls r5,-128
++ movpl r4,127
++ movne lr,1
++ movlt r3,-122
++ movvc r8,2
++ movne r7,-111
++ .text
++ .global cp_b
++cp_b:
++ cp.b pc,r0
++ cp.b r0,pc
++ cp.b r7,r8
++ cp.b r8,r7
++ .text
++ .global cp_h
++cp_h:
++ cp.h pc,r0
++ cp.h r0,pc
++ cp.h r7,r8
++ cp.h r8,r7
++ .text
++ .global ldm
++ldm:
++ ldm pc,r1-r6
++ ldm r12,r0-r15
++ ldm r5,r15
++ ldm r4,r0-r14
++ ldm lr,r0
++ ldm r9,r1,r5,r14
++ ldm r11,r2-r3,r5-r8,r15
++ ldm r6,r0,r3,r9,r13,r15
++ .text
++ .global ldm_pu
++ldm_pu:
++ ldm pc++,r6-r9
++ ldm r12++,r0-r15
++ ldm r5++,r15
++ ldm r4++,r0-r14
++ ldm lr++,r0
++ ldm r12++,r3-r5,r8,r10,r12,r14-r15
++ ldm r10++,r2,r4-r6,r14-r15
++ ldm r6++,r1,r3-r4,r9-r14
++ .text
++ .global ldmts
++ldmts:
++ ldmts pc,r7-r8
++ ldmts r12,r0-r15
++ ldmts r5,r15
++ ldmts r4,r0-r14
++ ldmts lr,r0
++ ldmts r0,r1-r2,r11-r12
++ ldmts lr,r0-r2,r4,r7-r8,r13-r14
++ ldmts r12,r0-r1,r3-r5,r9,r14-r15
++ .text
++ .global ldmts_pu
++ldmts_pu:
++ ldmts pc++,r9
++ ldmts r12++,r0-r15
++ ldmts r5++,r15
++ ldmts r4++,r0-r14
++ ldmts lr++,r0
++ ldmts sp++,r0,r2-r5,r7,r9,r11
++ ldmts r5++,r1-r3,r7,r10-r11
++ ldmts r8++,r2-r4,r7-r8,r13,r15
++ .text
++ .global stm
++stm:
++ stm pc,r7
++ stm r12,r0-r15
++ stm r5,r15
++ stm r4,r0-r14
++ stm lr,r0
++ stm sp,r2-r3,r5,r8,r11,r14
++ stm r4,r0-r4,r6,r10-r11,r14
++ stm r9,r1,r5,r9,r12-r15
++ .text
++ .global stm_pu
++stm_pu:
++ stm --pc,r4-r6
++ stm --r12,r0-r15
++ stm --r5,r15
++ stm --r4,r0-r14
++ stm --lr,r0
++ stm --r11,r0,r4-r9,r11-r15
++ stm --r11,r0,r3,r9-r10,r12,r14
++ stm --r6,r2,r8-r9,r13-r14
++ .text
++ .global stmts
++stmts:
++ stmts pc,r8
++ stmts r12,r0-r15
++ stmts r5,r15
++ stmts r4,r0-r14
++ stmts lr,r0
++ stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
++ stmts r3,r0,r6-r8,r10-r12
++ stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
++ .text
++ .global stmts_pu
++stmts_pu:
++ stmts --pc,r6-r8
++ stmts --r12,r0-r15
++ stmts --r5,r15
++ stmts --r4,r0-r14
++ stmts --lr,r0
++ stmts --r2,r0,r3-r4,r9-r10,r12-r13
++ stmts --r3,r0-r1,r14-r15
++ stmts --r0,r0,r2-r6,r10,r14
++ .text
++ .global ldins_h
++ldins_h:
++ ldins.h pc:b,pc[0]
++ ldins.h r12:t,r12[-2]
++ ldins.h r5:t,r5[-4096]
++ ldins.h r4:b,r4[4094]
++ ldins.h lr:t,lr[2]
++ ldins.h r0:t,lr[1930]
++ ldins.h r3:b,r7[-534]
++ ldins.h r2:b,r12[-2252]
++ .text
++ .global ldins_b
++ldins_b:
++ ldins.b pc:b,pc[0]
++ ldins.b r12:t,r12[-1]
++ ldins.b r5:u,r5[-2048]
++ ldins.b r4:l,r4[2047]
++ ldins.b lr:l,lr[1]
++ ldins.b r6:t,r4[-662]
++ ldins.b r5:b,r1[-151]
++ ldins.b r10:t,r11[-1923]
++ .text
++ .global ldswp_sh
++ldswp_sh:
++ ldswp.sh pc,pc[0]
++ ldswp.sh r12,r12[-2]
++ ldswp.sh r5,r5[-4096]
++ ldswp.sh r4,r4[4094]
++ ldswp.sh lr,lr[2]
++ ldswp.sh r9,r10[3848]
++ ldswp.sh r4,r12[-2040]
++ ldswp.sh r10,r2[3088]
++ .text
++ .global ldswp_uh
++ldswp_uh:
++ ldswp.uh pc,pc[0]
++ ldswp.uh r12,r12[-2]
++ ldswp.uh r5,r5[-4096]
++ ldswp.uh r4,r4[4094]
++ ldswp.uh lr,lr[2]
++ ldswp.uh r4,r9[3724]
++ ldswp.uh lr,sp[-1672]
++ ldswp.uh r8,r12[-3846]
++ .text
++ .global ldswp_w
++ldswp_w:
++ ldswp.w pc,pc[0]
++ ldswp.w r12,r12[-4]
++ ldswp.w r5,r5[-8192]
++ ldswp.w r4,r4[8188]
++ ldswp.w lr,lr[4]
++ ldswp.w sp,r7[1860]
++ ldswp.w pc,r5[-3324]
++ ldswp.w r12,r10[-3296]
++ .text
++ .global stswp_h
++stswp_h:
++ stswp.h pc[0],pc
++ stswp.h r12[-2],r12
++ stswp.h r5[-4096],r5
++ stswp.h r4[4094],r4
++ stswp.h lr[2],lr
++ stswp.h r7[64],r10
++ stswp.h r10[3024],r2
++ stswp.h r0[-2328],r10
++ .text
++ .global stswp_w
++stswp_w:
++ stswp.w pc[0],pc
++ stswp.w r12[-4],r12
++ stswp.w r5[-8192],r5
++ stswp.w r4[8188],r4
++ stswp.w lr[4],lr
++ stswp.w pc[1156],r8
++ stswp.w sp[7992],r10
++ stswp.w r8[-1172],r5
++ .text
++ .global and2
++and2:
++ and pc,pc,pc<<0
++ and r12,r12,r12<<31
++ and r5,r5,r5<<16
++ and r4,r4,r4<<15
++ and lr,lr,lr<<1
++ and r10,r2,r1<<1
++ and r12,r8,r11<<27
++ and r10,r7,r0<<3
++ .text
++ .global and3
++and3:
++ and pc,pc,pc>>0
++ and r12,r12,r12>>31
++ and r5,r5,r5>>16
++ and r4,r4,r4>>15
++ and lr,lr,lr>>1
++ and r12,r8,r7>>17
++ and pc,r4,r9>>20
++ and r10,r9,r10>>12
++ .text
++ .global or2
++or2:
++ or pc,pc,pc<<0
++ or r12,r12,r12<<31
++ or r5,r5,r5<<16
++ or r4,r4,r4<<15
++ or lr,lr,lr<<1
++ or r8,sp,r11<<29
++ or pc,r9,r2<<28
++ or r5,r1,r2<<3
++ .text
++ .global or3
++or3:
++ or pc,pc,pc>>0
++ or r12,r12,r12>>31
++ or r5,r5,r5>>16
++ or r4,r4,r4>>15
++ or lr,lr,lr>>1
++ or r1,sp,sp>>2
++ or r0,r1,r1>>29
++ or r4,r12,r8>>8
++ .text
++ .global eor2
++eor2:
++ eor pc,pc,pc<<0
++ eor r12,r12,r12<<31
++ eor r5,r5,r5<<16
++ eor r4,r4,r4<<15
++ eor lr,lr,lr<<1
++ eor r10,r9,r4<<11
++ eor r4,r0,r1<<31
++ eor r6,r2,r12<<13
++ .text
++ .global eor3
++eor3:
++ eor pc,pc,pc>>0
++ eor r12,r12,r12>>31
++ eor r5,r5,r5>>16
++ eor r4,r4,r4>>15
++ eor lr,lr,lr>>1
++ eor r5,r5,r5>>22
++ eor r10,r1,lr>>3
++ eor r7,lr,sp>>26
++ .text
++ .global sthh_w2
++sthh_w2:
++ sthh.w pc[pc<<0],pc:b,pc:b
++ sthh.w r12[r12<<3],r12:t,r12:t
++ sthh.w r5[r5<<2],r5:t,r5:t
++ sthh.w r4[r4<<1],r4:b,r4:b
++ sthh.w lr[lr<<1],lr:t,lr:t
++ sthh.w sp[r6<<3],r1:t,r12:t
++ sthh.w r6[r6<<0],r9:t,r9:t
++ sthh.w r10[r3<<0],r0:b,r11:t
++ .text
++ .global sthh_w1
++sthh_w1:
++ sthh.w pc[0],pc:b,pc:b
++ sthh.w r12[1020],r12:t,r12:t
++ sthh.w r5[512],r5:t,r5:t
++ sthh.w r4[508],r4:b,r4:b
++ sthh.w lr[4],lr:t,lr:t
++ sthh.w r4[404],r9:t,r0:b
++ sthh.w r8[348],r2:t,r10:b
++ sthh.w sp[172],r9:b,r2:b
++ .text
++ .global cop
++cop:
++ cop cp0,cr0,cr0,cr0,0
++ cop cp7,cr15,cr15,cr15,0x7f
++ cop cp3,cr5,cr5,cr5,0x31
++ cop cp2,cr4,cr4,cr4,0x30
++ cop cp5,cr8,cr3,cr7,0x5a
++ .text
++ .global ldc_w1
++ldc_w1:
++ ldc.w cp0,cr0,r0[0]
++ ldc.w cp7,cr15,pc[255<<2]
++ ldc.w cp3,cr5,r5[128<<2]
++ ldc.w cp2,cr4,r4[127<<2]
++ ldc.w cp4,cr9,r13[36<<2]
++ .text
++ .global ldc_w2
++ldc_w2:
++ ldc.w cp0,cr0,--r0
++ ldc.w cp7,cr15,--pc
++ ldc.w cp3,cr5,--r5
++ ldc.w cp2,cr4,--r4
++ ldc.w cp4,cr9,--r13
++ .text
++ .global ldc_w3
++ldc_w3:
++ ldc.w cp0,cr0,r0[r0]
++ ldc.w cp7,cr15,pc[pc<<3]
++ ldc.w cp3,cr5,r5[r4<<2]
++ ldc.w cp2,cr4,r4[r3<<1]
++ ldc.w cp4,cr9,r13[r12<<0]
++ .text
++ .global ldc_d1
++ldc_d1:
++ ldc.d cp0,cr0,r0[0]
++ ldc.d cp7,cr14,pc[255<<2]
++ ldc.d cp3,cr6,r5[128<<2]
++ ldc.d cp2,cr4,r4[127<<2]
++ ldc.d cp4,cr8,r13[36<<2]
++ .text
++ .global ldc_d2
++ldc_d2:
++ ldc.d cp0,cr0,--r0
++ ldc.d cp7,cr14,--pc
++ ldc.d cp3,cr6,--r5
++ ldc.d cp2,cr4,--r4
++ ldc.d cp4,cr8,--r13
++ .text
++ .global ldc_d3
++ldc_d3:
++ ldc.d cp0,cr0,r0[r0]
++ ldc.d cp7,cr14,pc[pc<<3]
++ ldc.d cp3,cr6,r5[r4<<2]
++ ldc.d cp2,cr4,r4[r3<<1]
++ ldc.d cp4,cr8,r13[r12<<0]
++ .text
++ .global stc_w1
++stc_w1:
++ stc.w cp0,r0[0],cr0
++ stc.w cp7,pc[255<<2],cr15
++ stc.w cp3,r5[128<<2],cr5
++ stc.w cp2,r4[127<<2],cr4
++ stc.w cp4,r13[36<<2],cr9
++ .text
++ .global stc_w2
++stc_w2:
++ stc.w cp0,r0++,cr0
++ stc.w cp7,pc++,cr15
++ stc.w cp3,r5++,cr5
++ stc.w cp2,r4++,cr4
++ stc.w cp4,r13++,cr9
++ .text
++ .global stc_w3
++stc_w3:
++ stc.w cp0,r0[r0],cr0
++ stc.w cp7,pc[pc<<3],cr15
++ stc.w cp3,r5[r4<<2],cr5
++ stc.w cp2,r4[r3<<1],cr4
++ stc.w cp4,r13[r12<<0],cr9
++ .text
++ .global stc_d1
++stc_d1:
++ stc.d cp0,r0[0],cr0
++ stc.d cp7,pc[255<<2],cr14
++ stc.d cp3,r5[128<<2],cr6
++ stc.d cp2,r4[127<<2],cr4
++ stc.d cp4,r13[36<<2],cr8
++ .text
++ .global stc_d2
++stc_d2:
++ stc.d cp0,r0++,cr0
++ stc.d cp7,pc++,cr14
++ stc.d cp3,r5++,cr6
++ stc.d cp2,r4++,cr4
++ stc.d cp4,r13++,cr8
++ .text
++ .global stc_d3
++stc_d3:
++ stc.d cp0,r0[r0],cr0
++ stc.d cp7,pc[pc<<3],cr14
++ stc.d cp3,r5[r4<<2],cr6
++ stc.d cp2,r4[r3<<1],cr4
++ stc.d cp4,r13[r12<<0],cr8
++ .text
++ .global ldc0_w
++ldc0_w:
++ ldc0.w cr0,r0[0]
++ ldc0.w cr15,pc[4095<<2]
++ ldc0.w cr5,r5[2048<<2]
++ ldc0.w cr4,r4[2047<<2]
++ ldc0.w cr9,r13[147<<2]
++ .text
++ .global ldc0_d
++ldc0_d:
++ ldc0.d cr0,r0[0]
++ ldc0.d cr14,pc[4095<<2]
++ ldc0.d cr6,r5[2048<<2]
++ ldc0.d cr4,r4[2047<<2]
++ ldc0.d cr8,r13[147<<2]
++ .text
++ .global stc0_w
++stc0_w:
++ stc0.w r0[0],cr0
++ stc0.w pc[4095<<2],cr15
++ stc0.w r5[2048<<2],cr5
++ stc0.w r4[2047<<2],cr4
++ stc0.w r13[147<<2],cr9
++ .text
++ .global stc0_d
++stc0_d:
++ stc0.d r0[0],cr0
++ stc0.d pc[4095<<2],cr14
++ stc0.d r5[2048<<2],cr6
++ stc0.d r4[2047<<2],cr4
++ stc0.d r13[147<<2],cr8
++ .text
++ .global memc
++memc:
++ memc 0, 0
++ memc -4, 31
++ memc -65536, 16
++ memc 65532, 15
++ .text
++ .global mems
++mems:
++ mems 0, 0
++ mems -4, 31
++ mems -65536, 16
++ mems 65532, 15
++ .text
++ .global memt
++memt:
++ memt 0, 0
++ memt -4, 31
++ memt -65536, 16
++ memt 65532, 15
++
++ .text
++ .global stcond
++stcond:
++ stcond r0[0], r0
++ stcond pc[-1], pc
++ stcond r8[-32768], r7
++ stcond r7[32767], r8
++ stcond r5[0x1234], r10
++
++ldcm_w:
++ ldcm.w cp0,pc,cr0-cr7
++ ldcm.w cp7,r0,cr0
++ ldcm.w cp4,r4++,cr0-cr6
++ ldcm.w cp3,r7,cr7
++ ldcm.w cp1,r12++,cr1,cr4-cr6
++ ldcm.w cp0,pc,cr8-cr15
++ ldcm.w cp7,r0,cr8
++ ldcm.w cp4,r4++,cr8-cr14
++ ldcm.w cp3,r7,cr15
++ ldcm.w cp1,r12++,cr9,cr12-cr14
++
++ldcm_d:
++ ldcm.d cp0,pc,cr0-cr15
++ ldcm.d cp7,r0,cr0,cr1
++ ldcm.d cp4,r4++,cr0-cr13
++ ldcm.d cp3,r7,cr14-cr15
++ ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
++
++stcm_w:
++ stcm.w cp0,pc,cr0-cr7
++ stcm.w cp7,r0,cr0
++ stcm.w cp4,--r4,cr0-cr6
++ stcm.w cp3,r7,cr7
++ stcm.w cp1,--r12,cr1,cr4-cr6
++ stcm.w cp0,pc,cr8-cr15
++ stcm.w cp7,r0,cr8
++ stcm.w cp4,--r4,cr8-cr14
++ stcm.w cp3,r7,cr15
++ stcm.w cp1,--r12,cr9,cr12-cr14
++
++stcm_d:
++ stcm.d cp0,pc,cr0-cr15
++ stcm.d cp7,r0,cr0,cr1
++ stcm.d cp4,--r4,cr0-cr13
++ stcm.d cp3,r7,cr14-cr15
++ stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
++
++mvcr_w:
++ mvcr.w cp7,pc,cr15
++ mvcr.w cp0,r0,cr0
++ mvcr.w cp0,pc,cr15
++ mvcr.w cp7,r0,cr15
++ mvcr.w cp7,pc,cr0
++ mvcr.w cp4,r7,cr8
++ mvcr.w cp3,r8,cr7
++
++mvcr_d:
++ mvcr.d cp7,lr,cr14
++ mvcr.d cp0,r0,cr0
++ mvcr.d cp0,lr,cr14
++ mvcr.d cp7,r0,cr14
++ mvcr.d cp7,lr,cr0
++ mvcr.d cp4,r6,cr8
++ mvcr.d cp3,r8,cr6
++
++mvrc_w:
++ mvrc.w cp7,cr15,pc
++ mvrc.w cp0,cr0,r0
++ mvrc.w cp0,cr15,pc
++ mvrc.w cp7,cr15,r0
++ mvrc.w cp7,cr0,pc
++ mvrc.w cp4,cr8,r7
++ mvrc.w cp3,cr7,r8
++
++mvrc_d:
++ mvrc.d cp7,cr14,lr
++ mvrc.d cp0,cr0,r0
++ mvrc.d cp0,cr14,lr
++ mvrc.d cp7,cr14,r0
++ mvrc.d cp7,cr0,lr
++ mvrc.d cp4,cr8,r6
++ mvrc.d cp3,cr6,r8
++
++bfexts:
++ bfexts pc,pc,31,31
++ bfexts r0,r0,0,0
++ bfexts r0,pc,31,31
++ bfexts pc,r0,31,31
++ bfexts pc,pc,0,31
++ bfexts pc,pc,31,0
++ bfexts r7,r8,15,16
++ bfexts r8,r7,16,15
++
++bfextu:
++ bfextu pc,pc,31,31
++ bfextu r0,r0,0,0
++ bfextu r0,pc,31,31
++ bfextu pc,r0,31,31
++ bfextu pc,pc,0,31
++ bfextu pc,pc,31,0
++ bfextu r7,r8,15,16
++ bfextu r8,r7,16,15
++
++bfins:
++ bfins pc,pc,31,31
++ bfins r0,r0,0,0
++ bfins r0,pc,31,31
++ bfins pc,r0,31,31
++ bfins pc,pc,0,31
++ bfins pc,pc,31,0
++ bfins r7,r8,15,16
++ bfins r8,r7,16,15
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/avr32.exp binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/avr32.exp
+--- binutils-2.17/gas/testsuite/gas/avr32/avr32.exp 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/avr32.exp 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,23 @@
++# AVR32 assembler testsuite. -*- Tcl -*-
++
++if [istarget avr32-*-*] {
++ run_dump_test "hwrd-lwrd"
++ run_dump_test "pcrel"
++ run_dump_test "aliases"
++ run_dump_test "dwarf2"
++ run_dump_test "pic_reloc"
++ run_dump_test "fpinsn"
++ run_dump_test "pico"
++ run_dump_test "lda_pic"
++ run_dump_test "lda_pic_linkrelax"
++ run_dump_test "lda_nopic"
++ run_dump_test "lda_nopic_linkrelax"
++ run_dump_test "call_pic"
++ run_dump_test "call_pic_linkrelax"
++ run_dump_test "call_nopic"
++ run_dump_test "call_nopic_linkrelax"
++ run_dump_test "jmptable"
++ run_dump_test "jmptable_linkrelax"
++ run_dump_test "symdiff"
++ run_dump_test "symdiff_linkrelax"
++}
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_nopic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic.d
+--- binutils-2.17/gas/testsuite/gas/avr32/call_nopic.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,36 @@
++#source: call.s
++#as:
++#objdump: -dr
++#name: call_nopic
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <call_test>:
++ 0: d7 03 nop
++
++00000002 <toofar_negative>:
++ \.\.\.
++ 1ffffe: 00 00 add r0,r0
++ 200000: f0 a0 00 00 rcall 0 <call_test>
++ 200004: f0 1f 00 0c mcall 200034 <toofar_negative\+0x200032>
++ 200008: f0 1f 00 0c mcall 200038 <toofar_negative\+0x200036>
++ 20000c: f0 1f 00 0c mcall 20003c <toofar_negative\+0x20003a>
++ 200010: f0 1f 00 0c mcall 200040 <toofar_negative\+0x20003e>
++ \.\.\.
++ 200030: ee b0 ff ff rcall 40002e <far_positive>
++ \.\.\.
++ 200034: R_AVR32_32_CPENT \.text\+0x2
++ 200038: R_AVR32_32_CPENT \.text\.init
++ 20003c: R_AVR32_32_CPENT undefined
++ 200040: R_AVR32_32_CPENT \.text\+0x40002c
++
++0040002c <toofar_positive>:
++ 40002c: d7 03 nop
++0040002e <far_positive>:
++ 40002e: d7 03 nop
++Disassembly of section \.text\.init:
++
++00000000 <different_section>:
++ 0: e2 c0 00 00 sub r0,r1,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_nopic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
+--- binutils-2.17/gas/testsuite/gas/avr32/call_nopic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,43 @@
++#source: call.s
++#as: --linkrelax
++#objdump: -dr
++#name: call_nopic_linkrelax
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <call_test>:
++ 0: d7 03 nop
++
++00000002 <toofar_negative>:
++ \.\.\.
++ 1ffffe: 00 00 add r0,r0
++ 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
++ 200000: R_AVR32_22H_PCREL \.text
++ 200004: f0 1f 00 00 mcall 200004 <toofar_negative\+0x200002>
++ 200004: R_AVR32_CPCALL \.text\+0x200034
++ 200008: f0 1f 00 00 mcall 200008 <toofar_negative\+0x200006>
++ 200008: R_AVR32_CPCALL \.text\+0x200038
++ 20000c: f0 1f 00 00 mcall 20000c <toofar_negative\+0x20000a>
++ 20000c: R_AVR32_CPCALL \.text\+0x20003c
++ 200010: f0 1f 00 00 mcall 200010 <toofar_negative\+0x20000e>
++ 200010: R_AVR32_CPCALL \.text\+0x200040
++ \.\.\.
++ 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
++ 200030: R_AVR32_22H_PCREL \.text\+0x40002e
++ \.\.\.
++ 200034: R_AVR32_ALIGN \*ABS\*\+0x2
++ 200034: R_AVR32_32_CPENT \.text\+0x2
++ 200038: R_AVR32_32_CPENT \.text\.init
++ 20003c: R_AVR32_32_CPENT undefined
++ 200040: R_AVR32_32_CPENT \.text\+0x40002c
++
++0040002c <toofar_positive>:
++ 40002c: d7 03 nop
++0040002e <far_positive>:
++ 40002e: d7 03 nop
++Disassembly of section \.text\.init:
++
++00000000 <different_section>:
++ 0: e2 c0 00 00 sub r0,r1,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_pic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic.d
+--- binutils-2.17/gas/testsuite/gas/avr32/call_pic.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,36 @@
++#source: call.s
++#as: --pic
++#objdump: -dr
++#name: call_pic
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <call_test>:
++ 0: d7 03 nop
++
++00000002 <toofar_negative>:
++ \.\.\.
++ 1ffffe: 00 00 add r0,r0
++ 200000: f0 a0 00 00 rcall 0 <call_test>
++ 200004: f0 16 00 00 mcall r6\[0\]
++ 200004: R_AVR32_GOT18SW toofar_negative
++ 200008: f0 16 00 00 mcall r6\[0\]
++ 200008: R_AVR32_GOT18SW different_section
++ 20000c: f0 16 00 00 mcall r6\[0\]
++ 20000c: R_AVR32_GOT18SW undefined
++ 200010: f0 16 00 00 mcall r6\[0\]
++ 200010: R_AVR32_GOT18SW toofar_positive
++ \.\.\.
++ 200030: ee b0 ff ff rcall 40002e <far_positive>
++ \.\.\.
++
++0040002c <toofar_positive>:
++ 40002c: d7 03 nop
++0040002e <far_positive>:
++ 40002e: d7 03 nop
++Disassembly of section \.text\.init:
++
++00000000 <different_section>:
++ 0: e2 c0 00 00 sub r0,r1,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_pic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic_linkrelax.d
+--- binutils-2.17/gas/testsuite/gas/avr32/call_pic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,47 @@
++#source: call.s
++#as: --pic --linkrelax
++#objdump: -dr
++#name: call_pic_linkrelax
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <call_test>:
++ 0: d7 03 nop
++
++00000002 <toofar_negative>:
++ \.\.\.
++ 1ffffe: 00 00 add r0,r0
++ 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
++ 200000: R_AVR32_22H_PCREL \.text
++ 200004: e0 6e 00 00 mov lr,0
++ 200004: R_AVR32_GOTCALL toofar_negative
++ 200008: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
++ 20000c: 5d 1e icall lr
++ 20000e: e0 6e 00 00 mov lr,0
++ 20000e: R_AVR32_GOTCALL different_section
++ 200012: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
++ 200016: 5d 1e icall lr
++ 200018: e0 6e 00 00 mov lr,0
++ 200018: R_AVR32_GOTCALL undefined
++ 20001c: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
++ 200020: 5d 1e icall lr
++ 200022: e0 6e 00 00 mov lr,0
++ 200022: R_AVR32_GOTCALL toofar_positive
++ 200026: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
++ 20002a: 5d 1e icall lr
++ 20002c: 00 00 add r0,r0
++ 20002e: 00 00 add r0,r0
++ 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
++ 200030: R_AVR32_22H_PCREL \.text\+0x40002e
++ \.\.\.
++
++0040002c <toofar_positive>:
++ 40002c: d7 03 nop
++0040002e <far_positive>:
++ 40002e: d7 03 nop
++Disassembly of section \.text\.init:
++
++00000000 <different_section>:
++ 0: e2 c0 00 00 sub r0,r1,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call.s
+--- binutils-2.17/gas/testsuite/gas/avr32/call.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,30 @@
++
++ .text
++ .global call_test
++call_test:
++far_negative:
++ nop
++toofar_negative:
++
++ .org 0x200000
++
++ call far_negative
++ call toofar_negative
++ call different_section
++ call undefined
++ call toofar_positive
++ .org 0x200030
++ call far_positive
++
++ .cpool
++
++ .org 0x40002c
++
++toofar_positive:
++ nop
++far_positive:
++ nop
++
++ .section .text.init,"ax",@progbits
++different_section:
++ sub r0, r1, 0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/dwarf2.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.d
+--- binutils-2.17/gas/testsuite/gas/avr32/dwarf2.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,42 @@
++#readelf: -wl
++#name: dwarf2
++#source: dwarf2.s
++
++Dump of debug contents of section \.debug_line:
++
++ Length: 53
++ DWARF Version: 2
++ Prologue Length: 26
++ Minimum Instruction Length: 1
++ Initial value of 'is_stmt': 1
++ Line Base: -5
++ Line Range: 14
++ Opcode Base: 10
++ \(Pointer size: 4\)
++
++ Opcodes:
++ Opcode 1 has 0 args
++ Opcode 2 has 1 args
++ Opcode 3 has 1 args
++ Opcode 4 has 1 args
++ Opcode 5 has 1 args
++ Opcode 6 has 0 args
++ Opcode 7 has 0 args
++ Opcode 8 has 0 args
++ Opcode 9 has 1 args
++
++ The Directory Table is empty\.
++
++ The File Name Table:
++ Entry Dir Time Size Name
++ 1 0 0 0 main\.c
++
++ Line Number Statements:
++ Extended opcode 2: set Address to 0x0
++ Advance Line by 87 to 88
++ Copy
++ Advance Line by 23 to 111
++ Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
++ Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
++ Advance PC by 530 to 220
++ Extended opcode 1: End of Sequence
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/dwarf2.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.s
+--- binutils-2.17/gas/testsuite/gas/avr32/dwarf2.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,67 @@
++# Source file used to test DWARF2 information for AVR32.
++
++ .file "main.c"
++
++ .section .debug_abbrev,"",@progbits
++.Ldebug_abbrev0:
++ .section .debug_info,"",@progbits
++.Ldebug_info0:
++ .section .debug_line,"",@progbits
++.Ldebug_line0:
++
++ .text
++ .align 1
++ .globl main
++ .type main, @function
++.Ltext0:
++main:
++ .file 1 "main.c"
++ .loc 1 88 0
++ pushm r0-r7,lr
++ sub sp, 4
++ .loc 1 111 0
++ lddpc r12, .LC1
++ lddpc r7, .LC1
++ icall r7
++ .loc 1 112 0
++ lddpc r6, .LC4
++
++ .align 2
++.LC4: .int 0
++
++ .fill 256, 2, 0
++
++ .align 2
++.LC1:
++ .int 0
++.LC2:
++ .int 0
++.LC3:
++ .int 0
++ .size main, . - main
++
++.Letext0:
++
++ .section .debug_info
++ .int .Ledebug_info0 - .Ldebug_info0 // size
++ .short 2 // version
++ .int .Ldebug_abbrev0 // abbrev offset
++ .byte 4 // bytes per addr
++
++ .uleb128 1 // abbrev 1
++ .int .Ldebug_line0 // DW_AT_stmt_list
++ .int .Letext0 // DW_AT_high_pc
++ .int .Ltext0 // DW_AT_low_pc
++
++.Ledebug_info0:
++
++ .section .debug_abbrev
++ .uleb128 0x01
++ .uleb128 0x11 // DW_TAG_compile_unit
++ .byte 0 // DW_CHILDREN_no
++ .uleb128 0x10, 0x6 // DW_AT_stmt_list
++ .uleb128 0x12, 0x1 // DW_AT_high_pc
++ .uleb128 0x11, 0x1 // DW_AT_low_pc
++ .uleb128 0, 0
++
++ .byte 0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/fpinsn.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.d
+--- binutils-2.17/gas/testsuite/gas/avr32/fpinsn.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,271 @@
++#as:
++#objdump: -dr
++#name: fpinsn
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++[0-9a-f]* <fadd_s>:
++ *[0-9a-f]*: e1 a2 0f ff cop cp0,cr15,cr15,cr15,0x4
++ *[0-9a-f]*: e1 a2 00 00 cop cp0,cr0,cr0,cr0,0x4
++ *[0-9a-f]*: e1 a2 00 ff cop cp0,cr0,cr15,cr15,0x4
++ *[0-9a-f]*: e1 a2 0f 0f cop cp0,cr15,cr0,cr15,0x4
++ *[0-9a-f]*: e1 a2 0f f0 cop cp0,cr15,cr15,cr0,0x4
++ *[0-9a-f]*: e1 a2 07 88 cop cp0,cr7,cr8,cr8,0x4
++ *[0-9a-f]*: e1 a2 08 78 cop cp0,cr8,cr7,cr8,0x4
++ *[0-9a-f]*: e1 a2 08 87 cop cp0,cr8,cr8,cr7,0x4
++
++[0-9a-f]* <fsub_s>:
++ *[0-9a-f]*: e1 a2 1f ff cop cp0,cr15,cr15,cr15,0x5
++ *[0-9a-f]*: e1 a2 10 00 cop cp0,cr0,cr0,cr0,0x5
++ *[0-9a-f]*: e1 a2 10 ff cop cp0,cr0,cr15,cr15,0x5
++ *[0-9a-f]*: e1 a2 1f 0f cop cp0,cr15,cr0,cr15,0x5
++ *[0-9a-f]*: e1 a2 1f f0 cop cp0,cr15,cr15,cr0,0x5
++ *[0-9a-f]*: e1 a2 17 88 cop cp0,cr7,cr8,cr8,0x5
++ *[0-9a-f]*: e1 a2 18 78 cop cp0,cr8,cr7,cr8,0x5
++ *[0-9a-f]*: e1 a2 18 87 cop cp0,cr8,cr8,cr7,0x5
++
++[0-9a-f]* <fmac_s>:
++ *[0-9a-f]*: e1 a0 0f ff cop cp0,cr15,cr15,cr15,0x0
++ *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
++ *[0-9a-f]*: e1 a0 00 ff cop cp0,cr0,cr15,cr15,0x0
++ *[0-9a-f]*: e1 a0 0f 0f cop cp0,cr15,cr0,cr15,0x0
++ *[0-9a-f]*: e1 a0 0f f0 cop cp0,cr15,cr15,cr0,0x0
++ *[0-9a-f]*: e1 a0 07 88 cop cp0,cr7,cr8,cr8,0x0
++ *[0-9a-f]*: e1 a0 08 78 cop cp0,cr8,cr7,cr8,0x0
++ *[0-9a-f]*: e1 a0 08 87 cop cp0,cr8,cr8,cr7,0x0
++
++[0-9a-f]* <fnmac_s>:
++ *[0-9a-f]*: e1 a0 1f ff cop cp0,cr15,cr15,cr15,0x1
++ *[0-9a-f]*: e1 a0 10 00 cop cp0,cr0,cr0,cr0,0x1
++ *[0-9a-f]*: e1 a0 10 ff cop cp0,cr0,cr15,cr15,0x1
++ *[0-9a-f]*: e1 a0 1f 0f cop cp0,cr15,cr0,cr15,0x1
++ *[0-9a-f]*: e1 a0 1f f0 cop cp0,cr15,cr15,cr0,0x1
++ *[0-9a-f]*: e1 a0 17 88 cop cp0,cr7,cr8,cr8,0x1
++ *[0-9a-f]*: e1 a0 18 78 cop cp0,cr8,cr7,cr8,0x1
++ *[0-9a-f]*: e1 a0 18 87 cop cp0,cr8,cr8,cr7,0x1
++
++[0-9a-f]* <fmsc_s>:
++ *[0-9a-f]*: e1 a1 0f ff cop cp0,cr15,cr15,cr15,0x2
++ *[0-9a-f]*: e1 a1 00 00 cop cp0,cr0,cr0,cr0,0x2
++ *[0-9a-f]*: e1 a1 00 ff cop cp0,cr0,cr15,cr15,0x2
++ *[0-9a-f]*: e1 a1 0f 0f cop cp0,cr15,cr0,cr15,0x2
++ *[0-9a-f]*: e1 a1 0f f0 cop cp0,cr15,cr15,cr0,0x2
++ *[0-9a-f]*: e1 a1 07 88 cop cp0,cr7,cr8,cr8,0x2
++ *[0-9a-f]*: e1 a1 08 78 cop cp0,cr8,cr7,cr8,0x2
++ *[0-9a-f]*: e1 a1 08 87 cop cp0,cr8,cr8,cr7,0x2
++
++[0-9a-f]* <fnmsc_s>:
++ *[0-9a-f]*: e1 a1 1f ff cop cp0,cr15,cr15,cr15,0x3
++ *[0-9a-f]*: e1 a1 10 00 cop cp0,cr0,cr0,cr0,0x3
++ *[0-9a-f]*: e1 a1 10 ff cop cp0,cr0,cr15,cr15,0x3
++ *[0-9a-f]*: e1 a1 1f 0f cop cp0,cr15,cr0,cr15,0x3
++ *[0-9a-f]*: e1 a1 1f f0 cop cp0,cr15,cr15,cr0,0x3
++ *[0-9a-f]*: e1 a1 17 88 cop cp0,cr7,cr8,cr8,0x3
++ *[0-9a-f]*: e1 a1 18 78 cop cp0,cr8,cr7,cr8,0x3
++ *[0-9a-f]*: e1 a1 18 87 cop cp0,cr8,cr8,cr7,0x3
++
++[0-9a-f]* <fmul_s>:
++ *[0-9a-f]*: e1 a3 0f ff cop cp0,cr15,cr15,cr15,0x6
++ *[0-9a-f]*: e1 a3 00 00 cop cp0,cr0,cr0,cr0,0x6
++ *[0-9a-f]*: e1 a3 00 ff cop cp0,cr0,cr15,cr15,0x6
++ *[0-9a-f]*: e1 a3 0f 0f cop cp0,cr15,cr0,cr15,0x6
++ *[0-9a-f]*: e1 a3 0f f0 cop cp0,cr15,cr15,cr0,0x6
++ *[0-9a-f]*: e1 a3 07 88 cop cp0,cr7,cr8,cr8,0x6
++ *[0-9a-f]*: e1 a3 08 78 cop cp0,cr8,cr7,cr8,0x6
++ *[0-9a-f]*: e1 a3 08 87 cop cp0,cr8,cr8,cr7,0x6
++
++[0-9a-f]* <fnmul_s>:
++ *[0-9a-f]*: e1 a3 1f ff cop cp0,cr15,cr15,cr15,0x7
++ *[0-9a-f]*: e1 a3 10 00 cop cp0,cr0,cr0,cr0,0x7
++ *[0-9a-f]*: e1 a3 10 ff cop cp0,cr0,cr15,cr15,0x7
++ *[0-9a-f]*: e1 a3 1f 0f cop cp0,cr15,cr0,cr15,0x7
++ *[0-9a-f]*: e1 a3 1f f0 cop cp0,cr15,cr15,cr0,0x7
++ *[0-9a-f]*: e1 a3 17 88 cop cp0,cr7,cr8,cr8,0x7
++ *[0-9a-f]*: e1 a3 18 78 cop cp0,cr8,cr7,cr8,0x7
++ *[0-9a-f]*: e1 a3 18 87 cop cp0,cr8,cr8,cr7,0x7
++
++[0-9a-f]* <fneg_s>:
++ *[0-9a-f]*: e1 a4 0f f0 cop cp0,cr15,cr15,cr0,0x8
++ *[0-9a-f]*: e1 a4 00 00 cop cp0,cr0,cr0,cr0,0x8
++ *[0-9a-f]*: e1 a4 00 f0 cop cp0,cr0,cr15,cr0,0x8
++ *[0-9a-f]*: e1 a4 0f 00 cop cp0,cr15,cr0,cr0,0x8
++ *[0-9a-f]*: e1 a4 07 80 cop cp0,cr7,cr8,cr0,0x8
++ *[0-9a-f]*: e1 a4 08 70 cop cp0,cr8,cr7,cr0,0x8
++
++[0-9a-f]* <fabs_s>:
++ *[0-9a-f]*: e1 a4 1f f0 cop cp0,cr15,cr15,cr0,0x9
++ *[0-9a-f]*: e1 a4 10 00 cop cp0,cr0,cr0,cr0,0x9
++ *[0-9a-f]*: e1 a4 10 f0 cop cp0,cr0,cr15,cr0,0x9
++ *[0-9a-f]*: e1 a4 1f 00 cop cp0,cr15,cr0,cr0,0x9
++ *[0-9a-f]*: e1 a4 17 80 cop cp0,cr7,cr8,cr0,0x9
++ *[0-9a-f]*: e1 a4 18 70 cop cp0,cr8,cr7,cr0,0x9
++
++[0-9a-f]* <fcmp_s>:
++ *[0-9a-f]*: e1 a6 10 ff cop cp0,cr0,cr15,cr15,0xd
++ *[0-9a-f]*: e1 a6 10 00 cop cp0,cr0,cr0,cr0,0xd
++ *[0-9a-f]*: e1 a6 10 0f cop cp0,cr0,cr0,cr15,0xd
++ *[0-9a-f]*: e1 a6 10 f0 cop cp0,cr0,cr15,cr0,0xd
++ *[0-9a-f]*: e1 a6 10 78 cop cp0,cr0,cr7,cr8,0xd
++ *[0-9a-f]*: e1 a6 10 87 cop cp0,cr0,cr8,cr7,0xd
++
++[0-9a-f]* <fadd_d>:
++ *[0-9a-f]*: e5 a2 0e ee cop cp0,cr14,cr14,cr14,0x44
++ *[0-9a-f]*: e5 a2 00 00 cop cp0,cr0,cr0,cr0,0x44
++ *[0-9a-f]*: e5 a2 00 ee cop cp0,cr0,cr14,cr14,0x44
++ *[0-9a-f]*: e5 a2 0e 0e cop cp0,cr14,cr0,cr14,0x44
++ *[0-9a-f]*: e5 a2 0e e0 cop cp0,cr14,cr14,cr0,0x44
++ *[0-9a-f]*: e5 a2 06 88 cop cp0,cr6,cr8,cr8,0x44
++ *[0-9a-f]*: e5 a2 08 68 cop cp0,cr8,cr6,cr8,0x44
++ *[0-9a-f]*: e5 a2 08 86 cop cp0,cr8,cr8,cr6,0x44
++
++[0-9a-f]* <fsub_d>:
++ *[0-9a-f]*: e5 a2 1e ee cop cp0,cr14,cr14,cr14,0x45
++ *[0-9a-f]*: e5 a2 10 00 cop cp0,cr0,cr0,cr0,0x45
++ *[0-9a-f]*: e5 a2 10 ee cop cp0,cr0,cr14,cr14,0x45
++ *[0-9a-f]*: e5 a2 1e 0e cop cp0,cr14,cr0,cr14,0x45
++ *[0-9a-f]*: e5 a2 1e e0 cop cp0,cr14,cr14,cr0,0x45
++ *[0-9a-f]*: e5 a2 16 88 cop cp0,cr6,cr8,cr8,0x45
++ *[0-9a-f]*: e5 a2 18 68 cop cp0,cr8,cr6,cr8,0x45
++ *[0-9a-f]*: e5 a2 18 86 cop cp0,cr8,cr8,cr6,0x45
++
++[0-9a-f]* <fmac_d>:
++ *[0-9a-f]*: e5 a0 0e ee cop cp0,cr14,cr14,cr14,0x40
++ *[0-9a-f]*: e5 a0 00 00 cop cp0,cr0,cr0,cr0,0x40
++ *[0-9a-f]*: e5 a0 00 ee cop cp0,cr0,cr14,cr14,0x40
++ *[0-9a-f]*: e5 a0 0e 0e cop cp0,cr14,cr0,cr14,0x40
++ *[0-9a-f]*: e5 a0 0e e0 cop cp0,cr14,cr14,cr0,0x40
++ *[0-9a-f]*: e5 a0 06 88 cop cp0,cr6,cr8,cr8,0x40
++ *[0-9a-f]*: e5 a0 08 68 cop cp0,cr8,cr6,cr8,0x40
++ *[0-9a-f]*: e5 a0 08 86 cop cp0,cr8,cr8,cr6,0x40
++
++[0-9a-f]* <fnmac_d>:
++ *[0-9a-f]*: e5 a0 1e ee cop cp0,cr14,cr14,cr14,0x41
++ *[0-9a-f]*: e5 a0 10 00 cop cp0,cr0,cr0,cr0,0x41
++ *[0-9a-f]*: e5 a0 10 ee cop cp0,cr0,cr14,cr14,0x41
++ *[0-9a-f]*: e5 a0 1e 0e cop cp0,cr14,cr0,cr14,0x41
++ *[0-9a-f]*: e5 a0 1e e0 cop cp0,cr14,cr14,cr0,0x41
++ *[0-9a-f]*: e5 a0 16 88 cop cp0,cr6,cr8,cr8,0x41
++ *[0-9a-f]*: e5 a0 18 68 cop cp0,cr8,cr6,cr8,0x41
++ *[0-9a-f]*: e5 a0 18 86 cop cp0,cr8,cr8,cr6,0x41
++
++[0-9a-f]* <fmsc_d>:
++ *[0-9a-f]*: e5 a1 0e ee cop cp0,cr14,cr14,cr14,0x42
++ *[0-9a-f]*: e5 a1 00 00 cop cp0,cr0,cr0,cr0,0x42
++ *[0-9a-f]*: e5 a1 00 ee cop cp0,cr0,cr14,cr14,0x42
++ *[0-9a-f]*: e5 a1 0e 0e cop cp0,cr14,cr0,cr14,0x42
++ *[0-9a-f]*: e5 a1 0e e0 cop cp0,cr14,cr14,cr0,0x42
++ *[0-9a-f]*: e5 a1 06 88 cop cp0,cr6,cr8,cr8,0x42
++ *[0-9a-f]*: e5 a1 08 68 cop cp0,cr8,cr6,cr8,0x42
++ *[0-9a-f]*: e5 a1 08 86 cop cp0,cr8,cr8,cr6,0x42
++
++[0-9a-f]* <fnmsc_d>:
++ *[0-9a-f]*: e5 a1 1e ee cop cp0,cr14,cr14,cr14,0x43
++ *[0-9a-f]*: e5 a1 10 00 cop cp0,cr0,cr0,cr0,0x43
++ *[0-9a-f]*: e5 a1 10 ee cop cp0,cr0,cr14,cr14,0x43
++ *[0-9a-f]*: e5 a1 1e 0e cop cp0,cr14,cr0,cr14,0x43
++ *[0-9a-f]*: e5 a1 1e e0 cop cp0,cr14,cr14,cr0,0x43
++ *[0-9a-f]*: e5 a1 16 88 cop cp0,cr6,cr8,cr8,0x43
++ *[0-9a-f]*: e5 a1 18 68 cop cp0,cr8,cr6,cr8,0x43
++ *[0-9a-f]*: e5 a1 18 86 cop cp0,cr8,cr8,cr6,0x43
++
++[0-9a-f]* <fmul_d>:
++ *[0-9a-f]*: e5 a3 0e ee cop cp0,cr14,cr14,cr14,0x46
++ *[0-9a-f]*: e5 a3 00 00 cop cp0,cr0,cr0,cr0,0x46
++ *[0-9a-f]*: e5 a3 00 ee cop cp0,cr0,cr14,cr14,0x46
++ *[0-9a-f]*: e5 a3 0e 0e cop cp0,cr14,cr0,cr14,0x46
++ *[0-9a-f]*: e5 a3 0e e0 cop cp0,cr14,cr14,cr0,0x46
++ *[0-9a-f]*: e5 a3 06 88 cop cp0,cr6,cr8,cr8,0x46
++ *[0-9a-f]*: e5 a3 08 68 cop cp0,cr8,cr6,cr8,0x46
++ *[0-9a-f]*: e5 a3 08 86 cop cp0,cr8,cr8,cr6,0x46
++
++[0-9a-f]* <fnmul_d>:
++ *[0-9a-f]*: e5 a3 1e ee cop cp0,cr14,cr14,cr14,0x47
++ *[0-9a-f]*: e5 a3 10 00 cop cp0,cr0,cr0,cr0,0x47
++ *[0-9a-f]*: e5 a3 10 ee cop cp0,cr0,cr14,cr14,0x47
++ *[0-9a-f]*: e5 a3 1e 0e cop cp0,cr14,cr0,cr14,0x47
++ *[0-9a-f]*: e5 a3 1e e0 cop cp0,cr14,cr14,cr0,0x47
++ *[0-9a-f]*: e5 a3 16 88 cop cp0,cr6,cr8,cr8,0x47
++ *[0-9a-f]*: e5 a3 18 68 cop cp0,cr8,cr6,cr8,0x47
++ *[0-9a-f]*: e5 a3 18 86 cop cp0,cr8,cr8,cr6,0x47
++
++[0-9a-f]* <fneg_d>:
++ *[0-9a-f]*: e5 a4 0e e0 cop cp0,cr14,cr14,cr0,0x48
++ *[0-9a-f]*: e5 a4 00 00 cop cp0,cr0,cr0,cr0,0x48
++ *[0-9a-f]*: e5 a4 00 e0 cop cp0,cr0,cr14,cr0,0x48
++ *[0-9a-f]*: e5 a4 0e 00 cop cp0,cr14,cr0,cr0,0x48
++ *[0-9a-f]*: e5 a4 06 80 cop cp0,cr6,cr8,cr0,0x48
++ *[0-9a-f]*: e5 a4 08 60 cop cp0,cr8,cr6,cr0,0x48
++
++[0-9a-f]* <fabs_d>:
++ *[0-9a-f]*: e5 a4 1e e0 cop cp0,cr14,cr14,cr0,0x49
++ *[0-9a-f]*: e5 a4 10 00 cop cp0,cr0,cr0,cr0,0x49
++ *[0-9a-f]*: e5 a4 10 e0 cop cp0,cr0,cr14,cr0,0x49
++ *[0-9a-f]*: e5 a4 1e 00 cop cp0,cr14,cr0,cr0,0x49
++ *[0-9a-f]*: e5 a4 16 80 cop cp0,cr6,cr8,cr0,0x49
++ *[0-9a-f]*: e5 a4 18 60 cop cp0,cr8,cr6,cr0,0x49
++
++[0-9a-f]* <fcmp_d>:
++ *[0-9a-f]*: e5 a6 10 ee cop cp0,cr0,cr14,cr14,0x4d
++ *[0-9a-f]*: e5 a6 10 00 cop cp0,cr0,cr0,cr0,0x4d
++ *[0-9a-f]*: e5 a6 10 0e cop cp0,cr0,cr0,cr14,0x4d
++ *[0-9a-f]*: e5 a6 10 e0 cop cp0,cr0,cr14,cr0,0x4d
++ *[0-9a-f]*: e5 a6 10 68 cop cp0,cr0,cr6,cr8,0x4d
++ *[0-9a-f]*: e5 a6 10 86 cop cp0,cr0,cr8,cr6,0x4d
++
++[0-9a-f]* <fmov_s>:
++ *[0-9a-f]*: e1 a5 0f f0 cop cp0,cr15,cr15,cr0,0xa
++ *[0-9a-f]*: e1 a5 00 00 cop cp0,cr0,cr0,cr0,0xa
++ *[0-9a-f]*: e1 a5 0f 00 cop cp0,cr15,cr0,cr0,0xa
++ *[0-9a-f]*: e1 a5 00 f0 cop cp0,cr0,cr15,cr0,0xa
++ *[0-9a-f]*: e1 a5 08 70 cop cp0,cr8,cr7,cr0,0xa
++ *[0-9a-f]*: e1 a5 07 80 cop cp0,cr7,cr8,cr0,0xa
++ *[0-9a-f]*: ef af 0f 00 mvcr.w cp0,pc,cr15
++ *[0-9a-f]*: ef a0 00 00 mvcr.w cp0,r0,cr0
++ *[0-9a-f]*: ef af 00 00 mvcr.w cp0,pc,cr0
++ *[0-9a-f]*: ef a0 0f 00 mvcr.w cp0,r0,cr15
++ *[0-9a-f]*: ef a8 07 00 mvcr.w cp0,r8,cr7
++ *[0-9a-f]*: ef a7 08 00 mvcr.w cp0,r7,cr8
++ *[0-9a-f]*: ef af 0f 20 mvrc.w cp0,cr15,pc
++ *[0-9a-f]*: ef a0 00 20 mvrc.w cp0,cr0,r0
++ *[0-9a-f]*: ef a0 0f 20 mvrc.w cp0,cr15,r0
++ *[0-9a-f]*: ef af 00 20 mvrc.w cp0,cr0,pc
++ *[0-9a-f]*: ef a7 08 20 mvrc.w cp0,cr8,r7
++ *[0-9a-f]*: ef a8 07 20 mvrc.w cp0,cr7,r8
++
++[0-9a-f]* <fmov_d>:
++ *[0-9a-f]*: e5 a5 0e e0 cop cp0,cr14,cr14,cr0,0x4a
++ *[0-9a-f]*: e5 a5 00 00 cop cp0,cr0,cr0,cr0,0x4a
++ *[0-9a-f]*: e5 a5 0e 00 cop cp0,cr14,cr0,cr0,0x4a
++ *[0-9a-f]*: e5 a5 00 e0 cop cp0,cr0,cr14,cr0,0x4a
++ *[0-9a-f]*: e5 a5 08 60 cop cp0,cr8,cr6,cr0,0x4a
++ *[0-9a-f]*: e5 a5 06 80 cop cp0,cr6,cr8,cr0,0x4a
++ *[0-9a-f]*: ef ae 0e 10 mvcr.d cp0,lr,cr14
++ *[0-9a-f]*: ef a0 00 10 mvcr.d cp0,r0,cr0
++ *[0-9a-f]*: ef ae 00 10 mvcr.d cp0,lr,cr0
++ *[0-9a-f]*: ef a0 0e 10 mvcr.d cp0,r0,cr14
++ *[0-9a-f]*: ef a8 06 10 mvcr.d cp0,r8,cr6
++ *[0-9a-f]*: ef a6 08 10 mvcr.d cp0,r6,cr8
++ *[0-9a-f]*: ef ae 0e 30 mvrc.d cp0,cr14,lr
++ *[0-9a-f]*: ef a0 00 30 mvrc.d cp0,cr0,r0
++ *[0-9a-f]*: ef a0 0e 30 mvrc.d cp0,cr14,r0
++ *[0-9a-f]*: ef ae 00 30 mvrc.d cp0,cr0,lr
++ *[0-9a-f]*: ef a6 08 30 mvrc.d cp0,cr8,r6
++ *[0-9a-f]*: ef a8 06 30 mvrc.d cp0,cr6,r8
++
++[0-9a-f]* <fcasts_d>:
++ *[0-9a-f]*: e1 a7 1f e0 cop cp0,cr15,cr14,cr0,0xf
++ *[0-9a-f]*: e1 a7 10 00 cop cp0,cr0,cr0,cr0,0xf
++ *[0-9a-f]*: e1 a7 1f 00 cop cp0,cr15,cr0,cr0,0xf
++ *[0-9a-f]*: e1 a7 10 e0 cop cp0,cr0,cr14,cr0,0xf
++ *[0-9a-f]*: e1 a7 18 60 cop cp0,cr8,cr6,cr0,0xf
++ *[0-9a-f]*: e1 a7 17 80 cop cp0,cr7,cr8,cr0,0xf
++
++[0-9a-f]* <fcastd_s>:
++ *[0-9a-f]*: e1 a8 0e f0 cop cp0,cr14,cr15,cr0,0x10
++ *[0-9a-f]*: e1 a8 00 00 cop cp0,cr0,cr0,cr0,0x10
++ *[0-9a-f]*: e1 a8 0e 00 cop cp0,cr14,cr0,cr0,0x10
++ *[0-9a-f]*: e1 a8 00 f0 cop cp0,cr0,cr15,cr0,0x10
++ *[0-9a-f]*: e1 a8 08 70 cop cp0,cr8,cr7,cr0,0x10
++ *[0-9a-f]*: e1 a8 06 80 cop cp0,cr6,cr8,cr0,0x10
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/fpinsn.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.s
+--- binutils-2.17/gas/testsuite/gas/avr32/fpinsn.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,266 @@
++
++ .text
++ .global fadd_s
++fadd_s:
++ fadd.s fr15, fr15, fr15
++ fadd.s fr0, fr0, fr0
++ fadd.s fr0, fr15, fr15
++ fadd.s fr15, fr0, fr15
++ fadd.s fr15, fr15, fr0
++ fadd.s fr7, fr8, fr8
++ fadd.s fr8, fr7, fr8
++ fadd.s fr8, fr8, fr7
++ .global fsub_s
++fsub_s:
++ fsub.s fr15, fr15, fr15
++ fsub.s fr0, fr0, fr0
++ fsub.s fr0, fr15, fr15
++ fsub.s fr15, fr0, fr15
++ fsub.s fr15, fr15, fr0
++ fsub.s fr7, fr8, fr8
++ fsub.s fr8, fr7, fr8
++ fsub.s fr8, fr8, fr7
++ .global fmac_s
++fmac_s:
++ fmac.s fr15, fr15, fr15
++ fmac.s fr0, fr0, fr0
++ fmac.s fr0, fr15, fr15
++ fmac.s fr15, fr0, fr15
++ fmac.s fr15, fr15, fr0
++ fmac.s fr7, fr8, fr8
++ fmac.s fr8, fr7, fr8
++ fmac.s fr8, fr8, fr7
++ .global fnmac_s
++fnmac_s:
++ fnmac.s fr15, fr15, fr15
++ fnmac.s fr0, fr0, fr0
++ fnmac.s fr0, fr15, fr15
++ fnmac.s fr15, fr0, fr15
++ fnmac.s fr15, fr15, fr0
++ fnmac.s fr7, fr8, fr8
++ fnmac.s fr8, fr7, fr8
++ fnmac.s fr8, fr8, fr7
++ .global fmsc_s
++fmsc_s:
++ fmsc.s fr15, fr15, fr15
++ fmsc.s fr0, fr0, fr0
++ fmsc.s fr0, fr15, fr15
++ fmsc.s fr15, fr0, fr15
++ fmsc.s fr15, fr15, fr0
++ fmsc.s fr7, fr8, fr8
++ fmsc.s fr8, fr7, fr8
++ fmsc.s fr8, fr8, fr7
++ .global fnmsc_s
++fnmsc_s:
++ fnmsc.s fr15, fr15, fr15
++ fnmsc.s fr0, fr0, fr0
++ fnmsc.s fr0, fr15, fr15
++ fnmsc.s fr15, fr0, fr15
++ fnmsc.s fr15, fr15, fr0
++ fnmsc.s fr7, fr8, fr8
++ fnmsc.s fr8, fr7, fr8
++ fnmsc.s fr8, fr8, fr7
++ .global fmul_s
++fmul_s:
++ fmul.s fr15, fr15, fr15
++ fmul.s fr0, fr0, fr0
++ fmul.s fr0, fr15, fr15
++ fmul.s fr15, fr0, fr15
++ fmul.s fr15, fr15, fr0
++ fmul.s fr7, fr8, fr8
++ fmul.s fr8, fr7, fr8
++ fmul.s fr8, fr8, fr7
++ .global fnmul_s
++fnmul_s:
++ fnmul.s fr15, fr15, fr15
++ fnmul.s fr0, fr0, fr0
++ fnmul.s fr0, fr15, fr15
++ fnmul.s fr15, fr0, fr15
++ fnmul.s fr15, fr15, fr0
++ fnmul.s fr7, fr8, fr8
++ fnmul.s fr8, fr7, fr8
++ fnmul.s fr8, fr8, fr7
++ .global fneg_s
++fneg_s:
++ fneg.s fr15, fr15
++ fneg.s fr0, fr0
++ fneg.s fr0, fr15
++ fneg.s fr15, fr0
++ fneg.s fr7, fr8
++ fneg.s fr8, fr7
++ .global fabs_s
++fabs_s:
++ fabs.s fr15, fr15
++ fabs.s fr0, fr0
++ fabs.s fr0, fr15
++ fabs.s fr15, fr0
++ fabs.s fr7, fr8
++ fabs.s fr8, fr7
++ .global fcmp_s
++fcmp_s:
++ fcmp.s fr15, fr15
++ fcmp.s fr0, fr0
++ fcmp.s fr0, fr15
++ fcmp.s fr15, fr0
++ fcmp.s fr7, fr8
++ fcmp.s fr8, fr7
++ .global fadd_d
++fadd_d:
++ fadd.d fr14, fr14, fr14
++ fadd.d fr0, fr0, fr0
++ fadd.d fr0, fr14, fr14
++ fadd.d fr14, fr0, fr14
++ fadd.d fr14, fr14, fr0
++ fadd.d fr6, fr8, fr8
++ fadd.d fr8, fr6, fr8
++ fadd.d fr8, fr8, fr6
++ .global fsub_d
++fsub_d:
++ fsub.d fr14, fr14, fr14
++ fsub.d fr0, fr0, fr0
++ fsub.d fr0, fr14, fr14
++ fsub.d fr14, fr0, fr14
++ fsub.d fr14, fr14, fr0
++ fsub.d fr6, fr8, fr8
++ fsub.d fr8, fr6, fr8
++ fsub.d fr8, fr8, fr6
++ .global fmac_d
++fmac_d:
++ fmac.d fr14, fr14, fr14
++ fmac.d fr0, fr0, fr0
++ fmac.d fr0, fr14, fr14
++ fmac.d fr14, fr0, fr14
++ fmac.d fr14, fr14, fr0
++ fmac.d fr6, fr8, fr8
++ fmac.d fr8, fr6, fr8
++ fmac.d fr8, fr8, fr6
++ .global fnmac_d
++fnmac_d:
++ fnmac.d fr14, fr14, fr14
++ fnmac.d fr0, fr0, fr0
++ fnmac.d fr0, fr14, fr14
++ fnmac.d fr14, fr0, fr14
++ fnmac.d fr14, fr14, fr0
++ fnmac.d fr6, fr8, fr8
++ fnmac.d fr8, fr6, fr8
++ fnmac.d fr8, fr8, fr6
++ .global fmsc_d
++fmsc_d:
++ fmsc.d fr14, fr14, fr14
++ fmsc.d fr0, fr0, fr0
++ fmsc.d fr0, fr14, fr14
++ fmsc.d fr14, fr0, fr14
++ fmsc.d fr14, fr14, fr0
++ fmsc.d fr6, fr8, fr8
++ fmsc.d fr8, fr6, fr8
++ fmsc.d fr8, fr8, fr6
++ .global fnmsc_d
++fnmsc_d:
++ fnmsc.d fr14, fr14, fr14
++ fnmsc.d fr0, fr0, fr0
++ fnmsc.d fr0, fr14, fr14
++ fnmsc.d fr14, fr0, fr14
++ fnmsc.d fr14, fr14, fr0
++ fnmsc.d fr6, fr8, fr8
++ fnmsc.d fr8, fr6, fr8
++ fnmsc.d fr8, fr8, fr6
++ .global fmul_d
++fmul_d:
++ fmul.d fr14, fr14, fr14
++ fmul.d fr0, fr0, fr0
++ fmul.d fr0, fr14, fr14
++ fmul.d fr14, fr0, fr14
++ fmul.d fr14, fr14, fr0
++ fmul.d fr6, fr8, fr8
++ fmul.d fr8, fr6, fr8
++ fmul.d fr8, fr8, fr6
++ .global fnmul_d
++fnmul_d:
++ fnmul.d fr14, fr14, fr14
++ fnmul.d fr0, fr0, fr0
++ fnmul.d fr0, fr14, fr14
++ fnmul.d fr14, fr0, fr14
++ fnmul.d fr14, fr14, fr0
++ fnmul.d fr6, fr8, fr8
++ fnmul.d fr8, fr6, fr8
++ fnmul.d fr8, fr8, fr6
++ .global fneg_d
++fneg_d:
++ fneg.d fr14, fr14
++ fneg.d fr0, fr0
++ fneg.d fr0, fr14
++ fneg.d fr14, fr0
++ fneg.d fr6, fr8
++ fneg.d fr8, fr6
++ .global fabs_d
++fabs_d:
++ fabs.d fr14, fr14
++ fabs.d fr0, fr0
++ fabs.d fr0, fr14
++ fabs.d fr14, fr0
++ fabs.d fr6, fr8
++ fabs.d fr8, fr6
++ .global fcmp_d
++fcmp_d:
++ fcmp.d fr14, fr14
++ fcmp.d fr0, fr0
++ fcmp.d fr0, fr14
++ fcmp.d fr14, fr0
++ fcmp.d fr6, fr8
++ fcmp.d fr8, fr6
++ .global fmov_s
++fmov_s:
++ fmov.s fr15, fr15
++ fmov.s fr0, fr0
++ fmov.s fr15, fr0
++ fmov.s fr0, fr15
++ fmov.s fr8, fr7
++ fmov.s fr7, fr8
++ fmov.s pc, fr15
++ fmov.s r0, fr0
++ fmov.s pc, fr0
++ fmov.s r0, fr15
++ fmov.s r8, fr7
++ fmov.s r7, fr8
++ fmov.s fr15, pc
++ fmov.s fr0, r0
++ fmov.s fr15, r0
++ fmov.s fr0, pc
++ fmov.s fr8, r7
++ fmov.s fr7, r8
++ .global fmov_d
++fmov_d:
++ fmov.d fr14, fr14
++ fmov.d fr0, fr0
++ fmov.d fr14, fr0
++ fmov.d fr0, fr14
++ fmov.d fr8, fr6
++ fmov.d fr6, fr8
++ fmov.d lr, fr14
++ fmov.d r0, fr0
++ fmov.d lr, fr0
++ fmov.d r0, fr14
++ fmov.d r8, fr6
++ fmov.d r6, fr8
++ fmov.d fr14, lr
++ fmov.d fr0, r0
++ fmov.d fr14, r0
++ fmov.d fr0, lr
++ fmov.d fr8, r6
++ fmov.d fr6, r8
++ .global fcasts_d
++fcasts_d:
++ fcasts.d fr15, fr14
++ fcasts.d fr0, fr0
++ fcasts.d fr15, fr0
++ fcasts.d fr0, fr14
++ fcasts.d fr8, fr6
++ fcasts.d fr7, fr8
++ .global fcastd_s
++fcastd_s:
++ fcastd.s fr14, fr15
++ fcastd.s fr0, fr0
++ fcastd.s fr14, fr0
++ fcastd.s fr0, fr15
++ fcastd.s fr8, fr7
++ fcastd.s fr6, fr8
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.d
+--- binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,47 @@
++#as:
++#objdump: -dr
++#name: hwrd-lwrd
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <test_hwrd>:
++ 0: e0 60 87 65 mov r0,34661
++ 4: e0 60 12 34 mov r0,4660
++ 8: e0 60 00 00 mov r0,0
++ 8: R_AVR32_HI16 \.text\+0x60
++ c: e0 60 00 00 mov r0,0
++ c: R_AVR32_HI16 extsym1
++ 10: ea 10 87 65 orh r0,0x8765
++ 14: ea 10 12 34 orh r0,0x1234
++ 18: ea 10 00 00 orh r0,0x0
++ 18: R_AVR32_HI16 \.text\+0x60
++ 1c: ea 10 00 00 orh r0,0x0
++ 1c: R_AVR32_HI16 extsym1
++ 20: e4 10 87 65 andh r0,0x8765
++ 24: e4 10 12 34 andh r0,0x1234
++ 28: e4 10 00 00 andh r0,0x0
++ 28: R_AVR32_HI16 \.text\+0x60
++ 2c: e4 10 00 00 andh r0,0x0
++ 2c: R_AVR32_HI16 extsym1
++
++00000030 <test_lwrd>:
++ 30: e0 60 43 21 mov r0,17185
++ 34: e0 60 56 78 mov r0,22136
++ 38: e0 60 00 00 mov r0,0
++ 38: R_AVR32_LO16 \.text\+0x60
++ 3c: e0 60 00 00 mov r0,0
++ 3c: R_AVR32_LO16 extsym1
++ 40: e8 10 43 21 orl r0,0x4321
++ 44: e8 10 56 78 orl r0,0x5678
++ 48: e8 10 00 00 orl r0,0x0
++ 48: R_AVR32_LO16 \.text\+0x60
++ 4c: e8 10 00 00 orl r0,0x0
++ 4c: R_AVR32_LO16 extsym1
++ 50: e0 10 43 21 andl r0,0x4321
++ 54: e0 10 56 78 andl r0,0x5678
++ 58: e0 10 00 00 andl r0,0x0
++ 58: R_AVR32_LO16 \.text\+0x60
++ 5c: e0 10 00 00 andl r0,0x0
++ 5c: R_AVR32_LO16 extsym1
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.s
+--- binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,39 @@
++
++ .equ sym1, 0x12345678
++
++ .text
++ .global test_hwrd
++test_hwrd:
++ mov r0, hi(0x87654321)
++ mov r0, hi(sym1)
++ mov r0, hi(sym2)
++ mov r0, hi(extsym1)
++
++ orh r0, hi(0x87654321)
++ orh r0, hi(sym1)
++ orh r0, hi(sym2)
++ orh r0, hi(extsym1)
++
++ andh r0, hi(0x87654321)
++ andh r0, hi(sym1)
++ andh r0, hi(sym2)
++ andh r0, hi(extsym1)
++
++ .global test_lwrd
++test_lwrd:
++ mov r0, lo(0x87654321)
++ mov r0, lo(sym1)
++ mov r0, lo(sym2)
++ mov r0, lo(extsym1)
++
++ orl r0, lo(0x87654321)
++ orl r0, lo(sym1)
++ orl r0, lo(sym2)
++ orl r0, lo(extsym1)
++
++ andl r0, lo(0x87654321)
++ andl r0, lo(sym1)
++ andl r0, lo(sym2)
++ andl r0, lo(extsym1)
++
++sym2:
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/jmptable.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.d
+--- binutils-2.17/gas/testsuite/gas/avr32/jmptable.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,20 @@
++#source: jmptable.s
++#as:
++#objdump: -dr
++#name: jmptable
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <jmptable_test>:
++ 0: fe c8 ff f4 sub r8,pc,-12
++ 4: f0 00 00 2f add pc,r8,r0<<0x2
++ 8: d7 03 nop
++ a: 00 00 add r0,r0
++ c: c0 38 rjmp 12 <jmptable_test\+0x12>
++ e: c0 38 rjmp 14 <jmptable_test\+0x14>
++ 10: c0 38 rjmp 16 <jmptable_test\+0x16>
++ 12: d7 03 nop
++ 14: d7 03 nop
++ 16: d7 03 nop
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/jmptable_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable_linkrelax.d
+--- binutils-2.17/gas/testsuite/gas/avr32/jmptable_linkrelax.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable_linkrelax.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,25 @@
++#source: jmptable.s
++#as: --linkrelax
++#objdump: -dr
++#name: jmptable_linkrelax
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <jmptable_test>:
++ 0: fe c8 00 00 sub r8,pc,0
++ 0: R_AVR32_16N_PCREL \.text\+0xc
++ 4: f0 00 00 2f add pc,r8,r0<<0x2
++ 8: d7 03 nop
++ a: 00 00 add r0,r0
++ a: R_AVR32_ALIGN \*ABS\*\+0x2
++ c: c0 08 rjmp c <jmptable_test\+0xc>
++ c: R_AVR32_11H_PCREL \.text\+0x12
++ e: c0 08 rjmp e <jmptable_test\+0xe>
++ e: R_AVR32_11H_PCREL \.text\+0x14
++ 10: c0 08 rjmp 10 <jmptable_test\+0x10>
++ 10: R_AVR32_11H_PCREL \.text\+0x16
++ 12: d7 03 nop
++ 14: d7 03 nop
++ 16: d7 03 nop
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/jmptable.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.s
+--- binutils-2.17/gas/testsuite/gas/avr32/jmptable.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,14 @@
++
++ .text
++ .global jmptable_test
++jmptable_test:
++ sub r8, pc, -(.L1 - .)
++ add pc, r8, r0 << 2
++ nop
++ .align 2
++.L1: rjmp 1f
++ rjmp 2f
++ rjmp 3f
++1: nop
++2: nop
++3: nop
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_nopic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic.d
+--- binutils-2.17/gas/testsuite/gas/avr32/lda_nopic.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,32 @@
++#source: lda.s
++#as:
++#objdump: -dr
++#name: lda_nopic
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <lda_test>:
++ 0: f2 c8 00 00 sub r8,r9,0
++
++00000004 <far_negative>:
++ 4: f6 ca 00 00 sub r10,r11,0
++ ...
++ 8000: fe c0 7f fc sub r0,pc,32764
++ 8004: 48 31 lddpc r1,8010 <far_negative\+0x800c>
++ 8006: 48 42 lddpc r2,8014 <far_negative\+0x8010>
++ 8008: 48 43 lddpc r3,8018 <far_negative\+0x8014>
++ 800a: 48 54 lddpc r4,801c <far_negative\+0x8018>
++ 800c: fe c5 80 04 sub r5,pc,-32764
++ ...
++ 8010: R_AVR32_32_CPENT \.text
++ 8014: R_AVR32_32_CPENT \.data
++ 8018: R_AVR32_32_CPENT undefined
++ 801c: R_AVR32_32_CPENT \.text\+0x1001c
++
++00010008 <far_positive>:
++ 10008: fa cc 00 00 sub r12,sp,0
++ ...
++0001001c <toofar_positive>:
++ 1001c: fe ce 00 00 sub lr,pc,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
+--- binutils-2.17/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,41 @@
++#source: lda.s
++#as: --linkrelax
++#objdump: -dr
++#name: lda_nopic_linkrelax
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <lda_test>:
++ 0: f2 c8 00 00 sub r8,r9,0
++
++00000004 <far_negative>:
++ 4: f6 ca 00 00 sub r10,r11,0
++ \.\.\.
++ 8000: 48 00 lddpc r0,8000 <far_negative\+0x7ffc>
++ 8000: R_AVR32_9W_CP \.text\+0x800c
++ 8002: 48 01 lddpc r1,8000 <far_negative\+0x7ffc>
++ 8002: R_AVR32_9W_CP \.text\+0x8010
++ 8004: 48 02 lddpc r2,8004 <far_negative\+0x8000>
++ 8004: R_AVR32_9W_CP \.text\+0x8014
++ 8006: 48 03 lddpc r3,8004 <far_negative\+0x8000>
++ 8006: R_AVR32_9W_CP \.text\+0x8018
++ 8008: 48 04 lddpc r4,8008 <far_negative\+0x8004>
++ 8008: R_AVR32_9W_CP \.text\+0x801c
++ 800a: 48 05 lddpc r5,8008 <far_negative\+0x8004>
++ 800a: R_AVR32_9W_CP \.text\+0x8020
++ \.\.\.
++ 800c: R_AVR32_ALIGN \*ABS\*\+0x2
++ 800c: R_AVR32_32_CPENT \.text\+0x4
++ 8010: R_AVR32_32_CPENT \.text
++ 8014: R_AVR32_32_CPENT \.data
++ 8018: R_AVR32_32_CPENT undefined
++ 801c: R_AVR32_32_CPENT \.text\+0x10020
++ 8020: R_AVR32_32_CPENT \.text\+0x1000c
++
++0001000c <far_positive>:
++ 1000c: fa cc 00 00 sub r12,sp,0
++ \.\.\.
++00010020 <toofar_positive>:
++ 10020: fe ce 00 00 sub lr,pc,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_pic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic.d
+--- binutils-2.17/gas/testsuite/gas/avr32/lda_pic.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,32 @@
++#source: lda.s
++#as: --pic
++#objdump: -dr
++#name: lda_pic
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <lda_test>:
++ 0: f2 c8 00 00 sub r8,r9,0
++
++00000004 <far_negative>:
++ 4: f6 ca 00 00 sub r10,r11,0
++ ...
++ 8000: fe c0 7f fc sub r0,pc,32764
++ 8004: ec f1 00 00 ld.w r1,r6\[0\]
++ 8004: R_AVR32_GOT16S toofar_negative
++ 8008: ec f2 00 00 ld.w r2,r6\[0\]
++ 8008: R_AVR32_GOT16S different_section
++ 800c: ec f3 00 00 ld.w r3,r6\[0\]
++ 800c: R_AVR32_GOT16S undefined
++ 8010: ec f4 00 00 ld.w r4,r6\[0\]
++ 8010: R_AVR32_GOT16S toofar_positive
++ 8014: fe c5 80 14 sub r5,pc,-32748
++ ...
++
++00010000 <far_positive>:
++ 10000: fa cc 00 00 sub r12,sp,0
++ ...
++00010014 <toofar_positive>:
++ 10014: fe ce 00 00 sub lr,pc,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_pic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
+--- binutils-2.17/gas/testsuite/gas/avr32/lda_pic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,40 @@
++#source: lda.s
++#as: --pic --linkrelax
++#objdump: -dr
++#name: lda_pic_linkrelax
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <lda_test>:
++ 0: f2 c8 00 00 sub r8,r9,0
++
++00000004 <far_negative>:
++ 4: f6 ca 00 00 sub r10,r11,0
++ ...
++ 8000: e0 60 00 00 mov r0,0
++ 8000: R_AVR32_LDA_GOT far_negative
++ 8004: ec 00 03 20 ld\.w r0,r6\[r0<<0x2\]
++ 8008: e0 61 00 00 mov r1,0
++ 8008: R_AVR32_LDA_GOT toofar_negative
++ 800c: ec 01 03 21 ld\.w r1,r6\[r1<<0x2\]
++ 8010: e0 62 00 00 mov r2,0
++ 8010: R_AVR32_LDA_GOT different_section
++ 8014: ec 02 03 22 ld\.w r2,r6\[r2<<0x2\]
++ 8018: e0 63 00 00 mov r3,0
++ 8018: R_AVR32_LDA_GOT undefined
++ 801c: ec 03 03 23 ld\.w r3,r6\[r3<<0x2\]
++ 8020: e0 64 00 00 mov r4,0
++ 8020: R_AVR32_LDA_GOT toofar_positive
++ 8024: ec 04 03 24 ld\.w r4,r6\[r4<<0x2\]
++ 8028: e0 65 00 00 mov r5,0
++ 8028: R_AVR32_LDA_GOT far_positive
++ 802c: ec 05 03 25 ld\.w r5,r6\[r5<<0x2\]
++ ...
++
++00010018 <far_positive>:
++ 10018: fa cc 00 00 sub r12,sp,0
++ ...
++0001002c <toofar_positive>:
++ 1002c: fe ce 00 00 sub lr,pc,0
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda.s
+--- binutils-2.17/gas/testsuite/gas/avr32/lda.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,30 @@
++
++ .text
++ .global lda_test
++lda_test:
++toofar_negative:
++ sub r8, r9, 0
++far_negative:
++ sub r10, r11, 0
++
++ .fill 32760, 1, 0x00
++
++ lda.w r0, far_negative
++ lda.w r1, toofar_negative
++ lda.w r2, different_section
++ lda.w r3, undefined
++ lda.w r4, toofar_positive
++ lda.w r5, far_positive
++
++ .cpool
++
++ .fill 32744, 1, 0x00
++far_positive:
++ sub r12, sp, 0
++ .fill 16, 1, 0x00
++toofar_positive:
++ sub lr, pc, 0
++
++ .data
++different_section:
++ .long 0x12345678
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pcrel.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.d
+--- binutils-2.17/gas/testsuite/gas/avr32/pcrel.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,64 @@
++#as:
++#objdump: -dr
++#name: pcrel
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <test_rjmp>:
++ 0: d7 03 nop
++ 2: c0 28 rjmp 6 <test_rjmp\+0x6>
++ 4: d7 03 nop
++ 6: e0 8f 00 00 bral 6 <test_rjmp\+0x6>
++ 6: R_AVR32_22H_PCREL extsym10
++
++0000000a <test_rcall>:
++ a: d7 03 nop
++0000000c <test_rcall2>:
++ c: c0 2c rcall 10 <test_rcall2\+0x4>
++ e: d7 03 nop
++ 10: e0 a0 00 00 rcall 10 <test_rcall2\+0x4>
++ 10: R_AVR32_22H_PCREL extsym21
++
++00000014 <test_branch>:
++ 14: c0 31 brne 1a <test_branch\+0x6>
++ 16: e0 8f 00 00 bral 16 <test_branch\+0x2>
++ 16: R_AVR32_22H_PCREL test_branch
++ 1a: e0 80 00 00 breq 1a <test_branch\+0x6>
++ 1a: R_AVR32_22H_PCREL extsym21
++
++0000001e <test_lddpc>:
++ 1e: 48 30 lddpc r0,28 <sym1>
++ 20: 48 20 lddpc r0,28 <sym1>
++ 22: fe f0 00 00 ld.w r0,pc\[0\]
++ 22: R_AVR32_16B_PCREL extsym16
++ \.\.\.
++
++00000028 <sym1>:
++ 28: d7 03 nop
++ 2a: d7 03 nop
++
++0000002c <test_local>:
++ 2c: 48 20 lddpc r0,34 <test_local\+0x8>
++ 2e: 48 30 lddpc r0,38 <test_local\+0xc>
++ 30: 48 20 lddpc r0,38 <test_local\+0xc>
++ 32: 00 00 add r0,r0
++ 34: d7 03 nop
++ 36: d7 03 nop
++ 38: d7 03 nop
++ 3a: d7 03 nop
++
++Disassembly of section \.text\.init:
++
++00000000 <test_inter_section>:
++ 0: e0 a0 .. .. rcall [0-9a-f]+ <.*>
++ 0: R_AVR32_22H_PCREL test_rcall
++ 4: d7 03 nop
++ 6: e0 a0 .. .. rcall [0-9a-f]+ <.*>
++ 6: R_AVR32_22H_PCREL test_rcall
++ a: e0 a0 .. .. rcall [0-9a-z]+ <.*>
++ a: R_AVR32_22H_PCREL \.text\+0xc
++ e: d7 03 nop
++ 10: e0 a0 .. .. rcall [0-9a-f]+ <.*>
++ 10: R_AVR32_22H_PCREL \.text\+0xc
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pcrel.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.s
+--- binutils-2.17/gas/testsuite/gas/avr32/pcrel.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,57 @@
++
++ .text
++ .global test_rjmp
++test_rjmp:
++ nop
++ rjmp 0f
++ nop
++0: rjmp extsym10
++
++ .global test_rcall
++test_rcall:
++ nop
++test_rcall2:
++ rcall 0f
++ nop
++0: rcall extsym21
++
++ .global test_branch
++test_branch:
++ brne 0f
++ /* This will generate a reloc since test_branch is global */
++ bral test_branch
++0: breq extsym21
++
++ .global test_lddpc
++test_lddpc:
++ lddpc r0,sym1
++ lddpc r0,sym1
++ lddpc r0,extsym16
++
++ .align 2
++sym1: nop
++ nop
++
++ .global test_local
++test_local:
++ lddpc r0, .LC1
++ lddpc r0, .LC2
++ lddpc r0, .LC1 + 0x4
++
++ .align 2
++.LC1:
++ nop
++ nop
++.LC2:
++ nop
++ nop
++
++ .section .text.init,"ax"
++ .global test_inter_section
++test_inter_section:
++ rcall test_rcall
++ nop
++ rcall test_rcall
++ rcall test_rcall2
++ nop
++ rcall test_rcall2
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pico.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.d
+--- binutils-2.17/gas/testsuite/gas/avr32/pico.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,149 @@
++#as:
++#objdump: -dr
++#name: pico
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++[0-9a-f]* <picosvmac>:
++ *[0-9a-f]*: e1 a6 20 00 cop cp1,cr0,cr0,cr0,0xc
++ *[0-9a-f]*: e1 a7 2b bb cop cp1,cr11,cr11,cr11,0xe
++ *[0-9a-f]*: e1 a6 3a 05 cop cp1,cr10,cr0,cr5,0xd
++ *[0-9a-f]*: e1 a7 36 90 cop cp1,cr6,cr9,cr0,0xf
++
++[0-9a-f]* <picosvmul>:
++ *[0-9a-f]*: e1 a4 20 00 cop cp1,cr0,cr0,cr0,0x8
++ *[0-9a-f]*: e1 a5 2b bb cop cp1,cr11,cr11,cr11,0xa
++ *[0-9a-f]*: e1 a4 3a 05 cop cp1,cr10,cr0,cr5,0x9
++ *[0-9a-f]*: e1 a5 36 90 cop cp1,cr6,cr9,cr0,0xb
++
++[0-9a-f]* <picovmac>:
++ *[0-9a-f]*: e1 a2 20 00 cop cp1,cr0,cr0,cr0,0x4
++ *[0-9a-f]*: e1 a3 2b bb cop cp1,cr11,cr11,cr11,0x6
++ *[0-9a-f]*: e1 a2 3a 05 cop cp1,cr10,cr0,cr5,0x5
++ *[0-9a-f]*: e1 a3 36 90 cop cp1,cr6,cr9,cr0,0x7
++
++[0-9a-f]* <picovmul>:
++ *[0-9a-f]*: e1 a0 20 00 cop cp1,cr0,cr0,cr0,0x0
++ *[0-9a-f]*: e1 a1 2b bb cop cp1,cr11,cr11,cr11,0x2
++ *[0-9a-f]*: e1 a0 3a 05 cop cp1,cr10,cr0,cr5,0x1
++ *[0-9a-f]*: e1 a1 36 90 cop cp1,cr6,cr9,cr0,0x3
++
++[0-9a-f]* <picold_d>:
++ *[0-9a-f]*: e9 af 3e ff ldc\.d cp1,cr14,pc\[0x3fc\]
++ *[0-9a-f]*: e9 a0 30 ff ldc\.d cp1,cr0,r0\[0x3fc\]
++ *[0-9a-f]*: e9 a0 30 00 ldc\.d cp1,cr0,r0\[0x0\]
++ *[0-9a-f]*: ef a8 26 50 ldc\.d cp1,cr6,--r8
++ *[0-9a-f]*: ef a7 28 50 ldc\.d cp1,cr8,--r7
++ *[0-9a-f]*: ef aa 32 65 ldc\.d cp1,cr2,r10\[r5<<0x2\]
++ *[0-9a-f]*: ef a3 3c 46 ldc\.d cp1,cr12,r3\[r6\]
++
++[0-9a-f]* <picold_w>:
++ *[0-9a-f]*: e9 af 2f ff ldc\.w cp1,cr15,pc\[0x3fc\]
++ *[0-9a-f]*: e9 a0 20 ff ldc\.w cp1,cr0,r0\[0x3fc\]
++ *[0-9a-f]*: e9 a0 20 00 ldc\.w cp1,cr0,r0\[0x0\]
++ *[0-9a-f]*: ef a8 27 40 ldc\.w cp1,cr7,--r8
++ *[0-9a-f]*: ef a7 28 40 ldc\.w cp1,cr8,--r7
++ *[0-9a-f]*: ef aa 31 25 ldc\.w cp1,cr1,r10\[r5<<0x2\]
++ *[0-9a-f]*: ef a3 3d 06 ldc\.w cp1,cr13,r3\[r6\]
++
++[0-9a-f]* <picoldm_d>:
++ *[0-9a-f]*: ed af 24 ff ldcm\.d cp1,pc,cr0-cr15
++ *[0-9a-f]*: ed a0 24 01 ldcm\.d cp1,r0,cr0-cr1
++ *[0-9a-f]*: ed a7 24 80 ldcm\.d cp1,r7,cr14-cr15
++ *[0-9a-f]*: ed a8 24 7f ldcm\.d cp1,r8,cr0-cr13
++
++[0-9a-f]* <picoldm_d_pu>:
++ *[0-9a-f]*: ed af 34 ff ldcm\.d cp1,pc\+\+,cr0-cr15
++ *[0-9a-f]*: ed a0 34 01 ldcm\.d cp1,r0\+\+,cr0-cr1
++ *[0-9a-f]*: ed a7 34 80 ldcm\.d cp1,r7\+\+,cr14-cr15
++ *[0-9a-f]*: ed a8 34 7f ldcm\.d cp1,r8\+\+,cr0-cr13
++
++[0-9a-f]* <picoldm_w>:
++ *[0-9a-f]*: ed af 20 ff ldcm\.w cp1,pc,cr0-cr7
++ *[0-9a-f]*: ed a0 20 01 ldcm\.w cp1,r0,cr0
++ *[0-9a-f]*: ed a7 20 80 ldcm\.w cp1,r7,cr7
++ *[0-9a-f]*: ed a8 20 7f ldcm\.w cp1,r8,cr0-cr6
++ *[0-9a-f]*: ed af 21 ff ldcm\.w cp1,pc,cr8-cr15
++ *[0-9a-f]*: ed a0 21 01 ldcm\.w cp1,r0,cr8
++ *[0-9a-f]*: ed a7 21 80 ldcm\.w cp1,r7,cr15
++ *[0-9a-f]*: ed a8 21 7f ldcm\.w cp1,r8,cr8-cr14
++
++[0-9a-f]* <picoldm_w_pu>:
++ *[0-9a-f]*: ed af 30 ff ldcm\.w cp1,pc\+\+,cr0-cr7
++ *[0-9a-f]*: ed a0 30 01 ldcm\.w cp1,r0\+\+,cr0
++ *[0-9a-f]*: ed a7 30 80 ldcm\.w cp1,r7\+\+,cr7
++ *[0-9a-f]*: ed a8 30 7f ldcm\.w cp1,r8\+\+,cr0-cr6
++ *[0-9a-f]*: ed af 31 ff ldcm\.w cp1,pc\+\+,cr8-cr15
++ *[0-9a-f]*: ed a0 31 01 ldcm\.w cp1,r0\+\+,cr8
++ *[0-9a-f]*: ed a7 31 80 ldcm\.w cp1,r7\+\+,cr15
++ *[0-9a-f]*: ed a8 31 7f ldcm\.w cp1,r8\+\+,cr8-cr14
++
++[0-9a-f]* <picomv_d>:
++ *[0-9a-f]*: ef ae 2e 30 mvrc\.d cp1,cr14,lr
++ *[0-9a-f]*: ef a0 20 30 mvrc\.d cp1,cr0,r0
++ *[0-9a-f]*: ef a8 26 30 mvrc\.d cp1,cr6,r8
++ *[0-9a-f]*: ef a6 28 30 mvrc\.d cp1,cr8,r6
++ *[0-9a-f]*: ef ae 2e 10 mvcr\.d cp1,lr,cr14
++ *[0-9a-f]*: ef a0 20 10 mvcr\.d cp1,r0,cr0
++ *[0-9a-f]*: ef a8 26 10 mvcr\.d cp1,r8,cr6
++ *[0-9a-f]*: ef a6 28 10 mvcr\.d cp1,r6,cr8
++
++[0-9a-f]* <picomv_w>:
++ *[0-9a-f]*: ef af 2f 20 mvrc\.w cp1,cr15,pc
++ *[0-9a-f]*: ef a0 20 20 mvrc\.w cp1,cr0,r0
++ *[0-9a-f]*: ef a8 27 20 mvrc\.w cp1,cr7,r8
++ *[0-9a-f]*: ef a7 28 20 mvrc\.w cp1,cr8,r7
++ *[0-9a-f]*: ef af 2f 00 mvcr\.w cp1,pc,cr15
++ *[0-9a-f]*: ef a0 20 00 mvcr\.w cp1,r0,cr0
++ *[0-9a-f]*: ef a8 27 00 mvcr\.w cp1,r8,cr7
++ *[0-9a-f]*: ef a7 28 00 mvcr\.w cp1,r7,cr8
++
++[0-9a-f]* <picost_d>:
++ *[0-9a-f]*: eb af 3e ff stc\.d cp1,pc\[0x3fc\],cr14
++ *[0-9a-f]*: eb a0 30 00 stc\.d cp1,r0\[0x0\],cr0
++ *[0-9a-f]*: ef a8 26 70 stc\.d cp1,r8\+\+,cr6
++ *[0-9a-f]*: ef a7 28 70 stc\.d cp1,r7\+\+,cr8
++ *[0-9a-f]*: ef aa 32 e5 stc\.d cp1,r10\[r5<<0x2\],cr2
++ *[0-9a-f]*: ef a3 3c c6 stc\.d cp1,r3\[r6\],cr12
++
++[0-9a-f]* <picost_w>:
++ *[0-9a-f]*: eb af 2f ff stc\.w cp1,pc\[0x3fc\],cr15
++ *[0-9a-f]*: eb a0 20 00 stc\.w cp1,r0\[0x0\],cr0
++ *[0-9a-f]*: ef a8 27 60 stc\.w cp1,r8\+\+,cr7
++ *[0-9a-f]*: ef a7 28 60 stc\.w cp1,r7\+\+,cr8
++ *[0-9a-f]*: ef aa 31 a5 stc\.w cp1,r10\[r5<<0x2\],cr1
++ *[0-9a-f]*: ef a3 3d 86 stc\.w cp1,r3\[r6\],cr13
++
++[0-9a-f]* <picostm_d>:
++ *[0-9a-f]*: ed af 25 ff stcm\.d cp1,pc,cr0-cr15
++ *[0-9a-f]*: ed a0 25 01 stcm\.d cp1,r0,cr0-cr1
++ *[0-9a-f]*: ed a7 25 80 stcm\.d cp1,r7,cr14-cr15
++ *[0-9a-f]*: ed a8 25 7f stcm\.d cp1,r8,cr0-cr13
++
++[0-9a-f]* <picostm_d_pu>:
++ *[0-9a-f]*: ed af 35 ff stcm\.d cp1,--pc,cr0-cr15
++ *[0-9a-f]*: ed a0 35 01 stcm\.d cp1,--r0,cr0-cr1
++ *[0-9a-f]*: ed a7 35 80 stcm\.d cp1,--r7,cr14-cr15
++ *[0-9a-f]*: ed a8 35 7f stcm\.d cp1,--r8,cr0-cr13
++
++[0-9a-f]* <picostm_w>:
++ *[0-9a-f]*: ed af 22 ff stcm\.w cp1,pc,cr0-cr7
++ *[0-9a-f]*: ed a0 22 01 stcm\.w cp1,r0,cr0
++ *[0-9a-f]*: ed a7 22 80 stcm\.w cp1,r7,cr7
++ *[0-9a-f]*: ed a8 22 7f stcm\.w cp1,r8,cr0-cr6
++ *[0-9a-f]*: ed af 23 ff stcm\.w cp1,pc,cr8-cr15
++ *[0-9a-f]*: ed a0 23 01 stcm\.w cp1,r0,cr8
++ *[0-9a-f]*: ed a7 23 80 stcm\.w cp1,r7,cr15
++ *[0-9a-f]*: ed a8 23 7f stcm\.w cp1,r8,cr8-cr14
++
++[0-9a-f]* <picostm_w_pu>:
++ *[0-9a-f]*: ed af 32 ff stcm\.w cp1,--pc,cr0-cr7
++ *[0-9a-f]*: ed a0 32 01 stcm\.w cp1,--r0,cr0
++ *[0-9a-f]*: ed a7 32 80 stcm\.w cp1,--r7,cr7
++ *[0-9a-f]*: ed a8 32 7f stcm\.w cp1,--r8,cr0-cr6
++ *[0-9a-f]*: ed af 33 ff stcm\.w cp1,--pc,cr8-cr15
++ *[0-9a-f]*: ed a0 33 01 stcm\.w cp1,--r0,cr8
++ *[0-9a-f]*: ed a7 33 80 stcm\.w cp1,--r7,cr15
++ *[0-9a-f]*: ed a8 33 7f stcm\.w cp1,--r8,cr8-cr14
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pico.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.s
+--- binutils-2.17/gas/testsuite/gas/avr32/pico.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,144 @@
++
++ .text
++ .global picosvmac
++picosvmac:
++ picosvmac out0, in0, in0, in0
++ picosvmac out2, in11, in11, in11
++ picosvmac out1, in10, in0, in5
++ picosvmac out3, in6, in9, in0
++ .global picosvmul
++picosvmul:
++ picosvmul out0, in0, in0, in0
++ picosvmul out2, in11, in11, in11
++ picosvmul out1, in10, in0, in5
++ picosvmul out3, in6, in9, in0
++ .global picovmac
++picovmac:
++ picovmac out0, in0, in0, in0
++ picovmac out2, in11, in11, in11
++ picovmac out1, in10, in0, in5
++ picovmac out3, in6, in9, in0
++ .global picovmul
++picovmul:
++ picovmul out0, in0, in0, in0
++ picovmul out2, in11, in11, in11
++ picovmul out1, in10, in0, in5
++ picovmul out3, in6, in9, in0
++ .global picold_d
++picold_d:
++ picold.d vmu2_out, pc[1020]
++ picold.d inpix2, r0[1020]
++ picold.d inpix2, r0[0]
++ picold.d coeff0_a, --r8
++ picold.d coeff1_a, --r7
++ picold.d inpix0, r10[r5 << 2]
++ picold.d vmu0_out, r3[r6 << 0]
++ .global picold_w
++picold_w:
++ picold.w config, pc[1020]
++ picold.w inpix2, r0[1020]
++ picold.w inpix2, r0[0]
++ picold.w coeff0_b, --r8
++ picold.w coeff1_a, --r7
++ picold.w inpix1, r10[r5 << 2]
++ picold.w vmu1_out, r3[r6 << 0]
++ .global picoldm_d
++picoldm_d:
++ picoldm.d pc, inpix2-config
++ picoldm.d r0, inpix2, inpix1
++ picoldm.d r7, vmu2_out, config
++ picoldm.d r8, inpix2-vmu1_out
++ .global picoldm_d_pu
++picoldm_d_pu:
++ picoldm.d pc++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
++ picoldm.d r0++, inpix2, inpix1
++ picoldm.d r7++, vmu2_out, config
++ picoldm.d r8++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
++ .global picoldm_w
++picoldm_w:
++ picoldm.w pc, inpix2-coeff0_b
++ picoldm.w r0, inpix2
++ picoldm.w r7, coeff0_b
++ picoldm.w r8, inpix2-coeff0_a
++ picoldm.w pc, coeff1_a-config
++ picoldm.w r0, coeff1_a
++ picoldm.w r7, config
++ picoldm.w r8, coeff1_a-vmu2_out
++ .global picoldm_w_pu
++picoldm_w_pu:
++ picoldm.w pc++, inpix2-coeff0_b
++ picoldm.w r0++, inpix2
++ picoldm.w r7++, coeff0_b
++ picoldm.w r8++, inpix2-coeff0_a
++ picoldm.w pc++, coeff1_a-config
++ picoldm.w r0++, coeff1_a
++ picoldm.w r7++, config
++ picoldm.w r8++, coeff1_a-vmu2_out
++ .global picomv_d
++picomv_d:
++ picomv.d vmu2_out, lr
++ picomv.d inpix2, r0
++ picomv.d coeff0_a, r8
++ picomv.d coeff1_a, r6
++ picomv.d pc, vmu2_out
++ picomv.d r0, inpix2
++ picomv.d r8, coeff0_a
++ picomv.d r6, coeff1_a
++ .global picomv_w
++picomv_w:
++ picomv.w config, pc
++ picomv.w inpix2, r0
++ picomv.w coeff0_b, r8
++ picomv.w coeff1_a, r7
++ picomv.w pc, config
++ picomv.w r0, inpix2
++ picomv.w r8, coeff0_b
++ picomv.w r7, coeff1_a
++ .global picost_d
++picost_d:
++ picost.d pc[1020], vmu2_out
++ picost.d r0[0], inpix2
++ picost.d r8++, coeff0_a
++ picost.d r7++, coeff1_a
++ picost.d r10[r5 << 2], inpix0
++ picost.d r3[r6 << 0], vmu0_out
++ .global picost_w
++picost_w:
++ picost.w pc[1020], config
++ picost.w r0[0], inpix2
++ picost.w r8++, coeff0_b
++ picost.w r7++, coeff1_a
++ picost.w r10[r5 << 2], inpix1
++ picost.w r3[r6 << 0], vmu1_out
++ .global picostm_d
++picostm_d:
++ picostm.d pc, inpix2-config
++ picostm.d r0, inpix2, inpix1
++ picostm.d r7, vmu2_out, config
++ picostm.d r8, inpix2-vmu1_out
++ .global picostm_d_pu
++picostm_d_pu:
++ picostm.d --pc, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
++ picostm.d --r0, inpix2, inpix1
++ picostm.d --r7, vmu2_out, config
++ picostm.d --r8, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
++ .global picostm_w
++picostm_w:
++ picostm.w pc, inpix2-coeff0_b
++ picostm.w r0, inpix2
++ picostm.w r7, coeff0_b
++ picostm.w r8, inpix2-coeff0_a
++ picostm.w pc, coeff1_a-config
++ picostm.w r0, coeff1_a
++ picostm.w r7, config
++ picostm.w r8, coeff1_a-vmu2_out
++ .global picostm_w_pu
++picostm_w_pu:
++ picostm.w --pc, inpix2-coeff0_b
++ picostm.w --r0, inpix2
++ picostm.w --r7, coeff0_b
++ picostm.w --r8, inpix2-coeff0_a
++ picostm.w --pc, coeff1_a-config
++ picostm.w --r0, coeff1_a
++ picostm.w --r7, config
++ picostm.w --r8, coeff1_a-vmu2_out
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.d
+--- binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,27 @@
++#as:
++#objdump: -dr
++#name: pic_reloc
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <mcall_got>:
++ 0: f0 16 00 00 mcall r6\[0\]
++ 0: R_AVR32_GOT18SW extfunc
++ 4: f0 16 00 00 mcall r6\[0\]
++ 4: R_AVR32_GOT18SW \.L1
++ 8: f0 16 00 00 mcall r6\[0\]
++ 8: R_AVR32_GOT18SW \.L2
++ c: f0 16 00 00 mcall r6\[0\]
++ c: R_AVR32_GOT18SW mcall_got
++
++00000010 <ldw_got>:
++ 10: ec f0 00 00 ld.w r0,r6\[0\]
++ 10: R_AVR32_GOT16S extvar
++ 14: ec f0 00 00 ld.w r0,r6\[0\]
++ 14: R_AVR32_GOT16S \.L3
++ 18: ec f0 00 00 ld.w r0,r6\[0\]
++ 18: R_AVR32_GOT16S \.L4
++ 1c: ec f0 00 00 ld.w r0,r6\[0\]
++ 1c: R_AVR32_GOT16S ldw_got
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.s
+--- binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,18 @@
++
++ .text
++ .global mcall_got
++mcall_got:
++.L1:
++ mcall r6[extfunc@got]
++ mcall r6[.L1@got]
++ mcall r6[.L2@got]
++ mcall r6[mcall_got@got]
++.L2:
++
++ .global ldw_got
++ldw_got:
++.L3: ld.w r0,r6[extvar@got]
++ ld.w r0,r6[.L3@got]
++ ld.w r0,r6[.L4@got]
++ ld.w r0,r6[ldw_got@got]
++.L4:
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/symdiff.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.d
+--- binutils-2.17/gas/testsuite/gas/avr32/symdiff.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,24 @@
++#source: symdiff.s
++#as:
++#objdump: -dr
++#name: symdiff
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <diff32>:
++ 0: 00 00 add r0,r0
++ 2: 00 04 add r4,r0
++
++00000004 <diff16>:
++ 4: 00 04 add r4,r0
++
++00000006 <diff8>:
++ 6: 04 00 add r0,r2
++
++00000008 <symdiff_test>:
++ 8: d7 03 nop
++ a: d7 03 nop
++ c: d7 03 nop
++ e: d7 03 nop
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/symdiff_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff_linkrelax.d
+--- binutils-2.17/gas/testsuite/gas/avr32/symdiff_linkrelax.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff_linkrelax.d 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,28 @@
++#source: symdiff.s
++#as: --linkrelax
++#objdump: -dr
++#name: symdiff_linkrelax
++
++.*: +file format .*
++
++Disassembly of section \.text:
++
++00000000 <diff32>:
++ 0: 00 00 add r0,r0
++ 0: R_AVR32_DIFF32 \.text\+0xa
++ 2: 00 04 add r4,r0
++
++00000004 <diff16>:
++ 4: 00 04 add r4,r0
++ 4: R_AVR32_DIFF16 \.text\+0xa
++
++00000006 <diff8>:
++ 6: 04 00 add r0,r2
++ 6: R_AVR32_DIFF8 \.text\+0xa
++ 7: R_AVR32_ALIGN \*ABS\*\+0x1
++
++00000008 <symdiff_test>:
++ 8: d7 03 nop
++ a: d7 03 nop
++ c: d7 03 nop
++ e: d7 03 nop
+diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/symdiff.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.s
+--- binutils-2.17/gas/testsuite/gas/avr32/symdiff.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.s 2007-03-26 10:19:48.000000000 +0200
+@@ -0,0 +1,19 @@
++
++ .text
++ .global diff32
++diff32:
++ .long .L2 - .L1
++ .global diff16
++diff16:
++ .short .L2 - .L1
++ .global diff8
++diff8:
++ .byte .L2 - .L1
++
++ .global symdiff_test
++ .align 1
++symdiff_test:
++ nop
++.L1: nop
++ nop
++.L2: nop
+diff -Nrup binutils-2.17/gas/write.c binutils-2.17.atmel.1.3.0/gas/write.c
+--- binutils-2.17/gas/write.c 2006-05-10 15:43:37.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/gas/write.c 2007-03-26 10:20:16.000000000 +0200
+@@ -126,7 +126,9 @@ static fixS *fix_new_internal (fragS *,
+ offsetT offset, int pcrel,
+ RELOC_ENUM r_type);
+ static long fixup_segment (fixS *, segT);
++#if !defined (TC_RELAX_ALIGN)
+ static relax_addressT relax_align (relax_addressT addr, int align);
++#endif
+ static fragS *chain_frchains_together_1 (segT, struct frchain *);
+ static void chain_frchains_together (bfd *, segT, PTR);
+ static void cvt_frag_to_fill (segT, fragS *);
+@@ -1684,6 +1686,10 @@ relax_frag (segT segment, fragS *fragP,
+
+ #endif /* defined (TC_GENERIC_RELAX_TABLE) */
+
++#ifdef TC_RELAX_ALIGN
++#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
++#else
++#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
+ /* Relax_align. Advance location counter to next address that has 'alignment'
+ lowest order bits all 0s, return size of adjustment made. */
+ static relax_addressT
+@@ -1703,6 +1709,7 @@ relax_align (register relax_addressT add
+ #endif
+ return (new_address - address);
+ }
++#endif
+
+ /* Now we have a segment, not a crowd of sub-segments, we can make
+ fr_address values.
+@@ -1746,7 +1753,7 @@ relax_segment (struct frag *segment_frag
+ case rs_align_code:
+ case rs_align_test:
+ {
+- addressT offset = relax_align (address, (int) fragP->fr_offset);
++ addressT offset = RELAX_ALIGN(segment, fragP, address);
+
+ if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
+ offset = 0;
+@@ -1922,10 +1929,10 @@ relax_segment (struct frag *segment_frag
+ {
+ addressT oldoff, newoff;
+
+- oldoff = relax_align (was_address + fragP->fr_fix,
+- (int) offset);
+- newoff = relax_align (address + fragP->fr_fix,
+- (int) offset);
++ oldoff = RELAX_ALIGN (segment, fragP,
++ was_address + fragP->fr_fix);
++ newoff = RELAX_ALIGN (segment, fragP,
++ address + fragP->fr_fix);
+
+ if (fragP->fr_subtype != 0)
+ {
+diff -Nrup binutils-2.17/include/dis-asm.h binutils-2.17.atmel.1.3.0/include/dis-asm.h
+--- binutils-2.17/include/dis-asm.h 2006-02-17 15:36:26.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/include/dis-asm.h 2007-03-26 10:20:18.000000000 +0200
+@@ -223,6 +223,7 @@ extern int print_insn_big_arm (bfd_vma,
+ extern int print_insn_little_arm (bfd_vma, disassemble_info *);
+ extern int print_insn_sparc (bfd_vma, disassemble_info *);
+ extern int print_insn_avr (bfd_vma, disassemble_info *);
++extern int print_insn_avr32 (bfd_vma, disassemble_info *);
+ extern int print_insn_bfin (bfd_vma, disassemble_info *);
+ extern int print_insn_d10v (bfd_vma, disassemble_info *);
+ extern int print_insn_d30v (bfd_vma, disassemble_info *);
+@@ -276,7 +277,9 @@ extern disassembler_ftype cris_get_disas
+ extern void print_mips_disassembler_options (FILE *);
+ extern void print_ppc_disassembler_options (FILE *);
+ extern void print_arm_disassembler_options (FILE *);
++extern void print_avr32_disassembler_options (FILE *);
+ extern void parse_arm_disassembler_option (char *);
++extern void parse_avr32_disassembler_option (char *);
+ extern int get_arm_regname_num_options (void);
+ extern int set_arm_regname_option (int);
+ extern int get_arm_regnames (int, const char **, const char **, const char *const **);
+diff -Nrup binutils-2.17/include/elf/avr32.h binutils-2.17.atmel.1.3.0/include/elf/avr32.h
+--- binutils-2.17/include/elf/avr32.h 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/include/elf/avr32.h 2007-03-26 10:20:17.000000000 +0200
+@@ -0,0 +1,95 @@
++/* AVR32 ELF support for BFD.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of BFD, the Binary File Descriptor library.
++
++ 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. */
++
++#include "elf/reloc-macros.h"
++
++/* CPU-specific flags for the ELF header e_flags field */
++#define EF_AVR32_LINKRELAX 0x01
++#define EF_AVR32_PIC 0x02
++
++START_RELOC_NUMBERS (elf_avr32_reloc_type)
++ RELOC_NUMBER (R_AVR32_NONE, 0)
++
++ /* Data Relocations */
++ RELOC_NUMBER (R_AVR32_32, 1)
++ RELOC_NUMBER (R_AVR32_16, 2)
++ RELOC_NUMBER (R_AVR32_8, 3)
++ RELOC_NUMBER (R_AVR32_32_PCREL, 4)
++ RELOC_NUMBER (R_AVR32_16_PCREL, 5)
++ RELOC_NUMBER (R_AVR32_8_PCREL, 6)
++ RELOC_NUMBER (R_AVR32_DIFF32, 7)
++ RELOC_NUMBER (R_AVR32_DIFF16, 8)
++ RELOC_NUMBER (R_AVR32_DIFF8, 9)
++ RELOC_NUMBER (R_AVR32_GOT32, 10)
++ RELOC_NUMBER (R_AVR32_GOT16, 11)
++ RELOC_NUMBER (R_AVR32_GOT8, 12)
++
++ /* Normal Code Relocations */
++ RELOC_NUMBER (R_AVR32_21S, 13)
++ RELOC_NUMBER (R_AVR32_16U, 14)
++ RELOC_NUMBER (R_AVR32_16S, 15)
++ RELOC_NUMBER (R_AVR32_8S, 16)
++ RELOC_NUMBER (R_AVR32_8S_EXT, 17)
++
++ /* PC-Relative Code Relocations */
++ RELOC_NUMBER (R_AVR32_22H_PCREL, 18)
++ RELOC_NUMBER (R_AVR32_18W_PCREL, 19)
++ RELOC_NUMBER (R_AVR32_16B_PCREL, 20)
++ RELOC_NUMBER (R_AVR32_16N_PCREL, 21)
++ RELOC_NUMBER (R_AVR32_14UW_PCREL, 22)
++ RELOC_NUMBER (R_AVR32_11H_PCREL, 23)
++ RELOC_NUMBER (R_AVR32_10UW_PCREL, 24)
++ RELOC_NUMBER (R_AVR32_9H_PCREL, 25)
++ RELOC_NUMBER (R_AVR32_9UW_PCREL, 26)
++
++ /* Special Code Relocations */
++ RELOC_NUMBER (R_AVR32_HI16, 27)
++ RELOC_NUMBER (R_AVR32_LO16, 28)
++
++ /* PIC Relocations */
++ RELOC_NUMBER (R_AVR32_GOTPC, 29)
++ RELOC_NUMBER (R_AVR32_GOTCALL, 30)
++ RELOC_NUMBER (R_AVR32_LDA_GOT, 31)
++ RELOC_NUMBER (R_AVR32_GOT21S, 32)
++ RELOC_NUMBER (R_AVR32_GOT18SW, 33)
++ RELOC_NUMBER (R_AVR32_GOT16S, 34)
++ RELOC_NUMBER (R_AVR32_GOT7UW, 35)
++
++ /* Constant Pool Relocations */
++ RELOC_NUMBER (R_AVR32_32_CPENT, 36)
++ RELOC_NUMBER (R_AVR32_CPCALL, 37)
++ RELOC_NUMBER (R_AVR32_16_CP, 38)
++ RELOC_NUMBER (R_AVR32_9W_CP, 39)
++
++ /* Dynamic Relocations */
++ RELOC_NUMBER (R_AVR32_RELATIVE, 40)
++ RELOC_NUMBER (R_AVR32_GLOB_DAT, 41)
++ RELOC_NUMBER (R_AVR32_JMP_SLOT, 42)
++
++ /* Linkrelax Information */
++ RELOC_NUMBER (R_AVR32_ALIGN, 43)
++END_RELOC_NUMBERS (R_AVR32_max)
++
++/* Processor specific dynamic array tags. */
++
++/* The total size in bytes of the Global Offset Table */
++#define DT_AVR32_GOTSZ 0x70000001
+diff -Nrup binutils-2.17/include/elf/common.h binutils-2.17.atmel.1.3.0/include/elf/common.h
+--- binutils-2.17/include/elf/common.h 2006-02-17 15:36:26.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/include/elf/common.h 2007-03-26 10:20:17.000000000 +0200
+@@ -256,6 +256,9 @@
+ /* V850 backend magic number. Written in the absense of an ABI. */
+ #define EM_CYGNUS_V850 0x9080
+
++/* AVR32 magic number, picked by IAR Systems. */
++#define EM_AVR32 0x18ad
++
+ /* old S/390 backend magic number. Written in the absence of an ABI. */
+ #define EM_S390_OLD 0xa390
+
+diff -Nrup binutils-2.17/ld/configdoc.texi binutils-2.17.atmel.1.3.0/ld/configdoc.texi
+--- binutils-2.17/ld/configdoc.texi 2006-05-10 15:43:46.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/configdoc.texi 2007-09-28 10:30:45.000000000 +0200
+@@ -6,6 +6,7 @@
+ @set H8300
+ @set I960
+ @set ARM
++@set AVR32
+ @set HPPA
+ @set MMIX
+ @set MSP430
+diff -Nrup binutils-2.17/ld/config.in binutils-2.17.atmel.1.3.0/ld/config.in
+--- binutils-2.17/ld/config.in 2006-04-16 20:20:30.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/config.in 2007-03-26 10:32:23.000000000 +0200
+@@ -187,7 +187,7 @@
+
+ /* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+- automatically deduced at run-time.
++ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+@@ -215,8 +215,8 @@
+ #undef inline
+ #endif
+
+-/* Define to `long' if <sys/types.h> does not define. */
++/* Define to `long int' if <sys/types.h> does not define. */
+ #undef off_t
+
+-/* Define to `unsigned' if <sys/types.h> does not define. */
++/* Define to `unsigned int' if <sys/types.h> does not define. */
+ #undef size_t
+diff -Nrup binutils-2.17/ld/configure binutils-2.17.atmel.1.3.0/ld/configure
+--- binutils-2.17/ld/configure 2006-04-11 12:36:26.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/configure 2007-03-26 10:32:22.000000000 +0200
+@@ -1,25 +1,54 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.59.
++# Generated by GNU Autoconf 2.61.
+ #
+-# Copyright (C) 2003 Free Software Foundation, Inc.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -29,8 +58,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -44,18 +108,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -63,157 +128,388 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
++# CDPATH.
++$as_unset CDPATH
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
++if test "x$CONFIG_SHELL" = x; then
++ if (eval ":") 2>/dev/null; then
++ as_have_required=yes
++else
++ as_have_required=no
++fi
++
++ if test $as_have_required = yes && (eval ":
++(as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
+ fi
+
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0) || { (exit 1); exit 1; }
++
++(
++ as_lineno_1=\$LINENO
++ as_lineno_2=\$LINENO
++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
++") 2> /dev/null; then
++ :
++else
++ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
++ case $as_dir in
+ /*)
+- if ("$as_dir/$as_base" -c '
++ for as_base in sh bash ksh sh5; do
++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
++ done;;
++ esac
++done
++IFS=$as_save_IFS
++
++
++ for as_shell in $as_candidate_shells $SHELL; do
++ # Try only shells that exist, to save several forks.
++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
++ { ("$as_shell") 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++_ASEOF
++}; then
++ CONFIG_SHELL=$as_shell
++ as_have_required=yes
++ if { "$as_shell" 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++(as_func_return () {
++ (exit $1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = "$1" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test $exitcode = 0) || { (exit 1); exit 1; }
++
++(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
++
++_ASEOF
++}; then
++ break
++fi
++
++fi
++
++ done
++
++ if test "x$CONFIG_SHELL" != x; then
++ for as_var in BASH_ENV ENV
++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ done
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
++fi
++
++
++ if test $as_have_required = no; then
++ echo This script requires a shell more modern than all the
++ echo shells that I found on your system. Please install a
++ echo modern shell, or manually run the script under such a
++ echo shell if you do have one.
++ { (exit 1); exit 1; }
++fi
++
++
++fi
++
++fi
++
++
++
++(eval "as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0") || {
++ echo No shell found that supports shell functions.
++ echo Please tell autoconf@gnu.org about your system,
++ echo including any error possibly output before this
++ echo message
++}
++
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
++ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -222,7 +518,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+
++exec 7<&0 </dev/null 6>&1
+
+ # Name of the host.
+ # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+ # so uname gets run too.
+ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+-exec 6>&1
+-
+ #
+ # Initializations.
+ #
+ ac_default_prefix=/usr/local
++ac_clean_files=
+ ac_config_libobj_dir=.
++LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete. It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+ # Identity of this package.
+ PACKAGE_NAME=
+ PACKAGE_TARNAME=
+@@ -275,42 +580,191 @@ ac_unique_file="ldmain.c"
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#if HAVE_SYS_TYPES_H
++#ifdef HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#if HAVE_SYS_STAT_H
++#ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#if STDC_HEADERS
++#ifdef STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# if HAVE_STDLIB_H
++# ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#if HAVE_STRINGS_H
++#ifdef HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#if HAVE_INTTYPES_H
++#ifdef HAVE_INTTYPES_H
+ # include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-# include <stdint.h>
+-# endif
+ #endif
+-#if HAVE_UNISTD_H
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S RANLIB ac_ct_RANLIB LIBTOOL use_sysroot TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE WARN_CFLAGS NO_WERROR CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l YACC LEX LEXLIB LEX_OUTPUT_ROOT MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT HDEFINES HOSTING_CRT0 HOSTING_LIBS NATIVE_LIB_DIRS STRINGIFY EMUL EMULATION_OFILES EMUL_EXTRA_OFILES LIB_PATH EMULATION_LIBPATH TESTBFDLIB datarootdir docdir htmldir LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL
++PATH_SEPARATOR
++PACKAGE_NAME
++PACKAGE_TARNAME
++PACKAGE_VERSION
++PACKAGE_STRING
++PACKAGE_BUGREPORT
++exec_prefix
++prefix
++program_transform_name
++bindir
++sbindir
++libexecdir
++datarootdir
++datadir
++sysconfdir
++sharedstatedir
++localstatedir
++includedir
++oldincludedir
++docdir
++infodir
++htmldir
++dvidir
++pdfdir
++psdir
++libdir
++localedir
++mandir
++DEFS
++ECHO_C
++ECHO_N
++ECHO_T
++LIBS
++build_alias
++host_alias
++target_alias
++build
++build_cpu
++build_vendor
++build_os
++host
++host_cpu
++host_vendor
++host_os
++target
++target_cpu
++target_vendor
++target_os
++CC
++CFLAGS
++LDFLAGS
++CPPFLAGS
++ac_ct_CC
++EXEEXT
++OBJEXT
++INSTALL_PROGRAM
++INSTALL_SCRIPT
++INSTALL_DATA
++CYGPATH_W
++PACKAGE
++VERSION
++ACLOCAL
++AUTOCONF
++AUTOMAKE
++AUTOHEADER
++MAKEINFO
++install_sh
++STRIP
++INSTALL_STRIP_PROGRAM
++mkdir_p
++AWK
++SET_MAKE
++am__leading_dot
++AMTAR
++am__tar
++am__untar
++DEPDIR
++am__include
++am__quote
++AMDEP_TRUE
++AMDEP_FALSE
++AMDEPBACKSLASH
++CCDEPMODE
++am__fastdepCC_TRUE
++am__fastdepCC_FALSE
++LN_S
++RANLIB
++LIBTOOL
++use_sysroot
++TARGET_SYSTEM_ROOT
++TARGET_SYSTEM_ROOT_DEFINE
++WARN_CFLAGS
++NO_WERROR
++CPP
++GREP
++EGREP
++ALLOCA
++USE_NLS
++MSGFMT
++GMSGFMT
++XGETTEXT
++USE_INCLUDED_LIBINTL
++CATALOGS
++CATOBJEXT
++DATADIRNAME
++GMOFILES
++INSTOBJEXT
++INTLDEPS
++INTLLIBS
++INTLOBJS
++POFILES
++POSUB
++INCLUDE_LOCALE_H
++GT_NO
++GT_YES
++MKINSTALLDIRS
++l
++YACC
++YFLAGS
++LEX
++LEX_OUTPUT_ROOT
++LEXLIB
++MAINTAINER_MODE_TRUE
++MAINTAINER_MODE_FALSE
++MAINT
++HDEFINES
++HOSTING_CRT0
++HOSTING_LIBS
++NATIVE_LIB_DIRS
++STRINGIFY
++EMUL
++EMULATION_OFILES
++EMUL_EXTRA_OFILES
++LIB_PATH
++EMULATION_LIBPATH
++TESTBFDLIB
++LIBOBJS
++LTLIBOBJS'
+ ac_subst_files='TDIRS'
++ ac_precious_vars='build_alias
++host_alias
++target_alias
++CC
++CFLAGS
++LDFLAGS
++LIBS
++CPPFLAGS
++CPP
++YACC
++YFLAGS'
++
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -337,34 +791,48 @@ x_libraries=NONE
+ # and all the variables that are supposed to be based on exec_prefix
+ # by default will actually change.
+ # Use braces instead of parens because sh, perl, etc. also accept them.
++# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datadir='${prefix}/share'
++datarootdir='${prefix}/share'
++datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+-libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-infodir='${prefix}/info'
+-mandir='${prefix}/man'
++docdir='${datarootdir}/doc/${PACKAGE}'
++infodir='${datarootdir}/info'
++htmldir='${docdir}'
++dvidir='${docdir}'
++pdfdir='${docdir}'
++psdir='${docdir}'
++libdir='${exec_prefix}/lib'
++localedir='${datarootdir}/locale'
++mandir='${datarootdir}/man'
+
+ ac_prev=
++ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval "$ac_prev=\$ac_option"
++ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++ case $ac_option in
++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
++ *) ac_optarg=yes ;;
++ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_option in
++ case $ac_dashdash$ac_option in
++ --)
++ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -386,33 +854,45 @@ do
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+- | --da=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
++ | --dataroo | --dataro | --datar)
++ ac_prev=datarootdir ;;
++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
++ datarootdir=$ac_optarg ;;
++
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- eval "enable_$ac_feature=no" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=no ;;
++
++ -docdir | --docdir | --docdi | --doc | --do)
++ ac_prev=docdir ;;
++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
++ docdir=$ac_optarg ;;
++
++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
++ ac_prev=dvidir ;;
++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
++ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "enable_$ac_feature='$ac_optarg'" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -439,6 +919,12 @@ do
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
++ ac_prev=htmldir ;;
++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
++ | --ht=*)
++ htmldir=$ac_optarg ;;
++
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -463,13 +949,16 @@ do
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
++ -localedir | --localedir | --localedi | --localed | --locale)
++ ac_prev=localedir ;;
++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
++ localedir=$ac_optarg ;;
++
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst \
+- | --locals | --local | --loca | --loc | --lo)
++ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -534,6 +1023,16 @@ do
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
++ ac_prev=pdfdir ;;
++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
++ pdfdir=$ac_optarg ;;
++
++ -psdir | --psdir | --psdi | --psd | --ps)
++ ac_prev=psdir ;;
++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
++ psdir=$ac_optarg ;;
++
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -586,24 +1085,20 @@ do
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package| sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "with_$ac_package='$ac_optarg'" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package | sed 's/-/_/g'`
+- eval "with_$ac_package=no" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -634,8 +1129,7 @@ Try \`$0 --help' for more information."
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+- eval "$ac_envvar='$ac_optarg'"
++ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+@@ -655,27 +1149,19 @@ if test -n "$ac_prev"; then
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
++# Be sure to have absolute directory names.
++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
++ datadir sysconfdir sharedstatedir localstatedir includedir \
++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
++ libdir localedir mandir
+ do
+- eval ac_val=$`echo $ac_var`
++ eval ac_val=\$$ac_var
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
+- esac
+-done
+-
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+- localstatedir libdir includedir oldincludedir infodir mandir
+-do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
++ [\\/$]* | ?:[\\/]* ) continue;;
++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -702,74 +1188,76 @@ test -n "$host_alias" && ac_tool_prefix=
+ test "$silent" = yes && exec 6>/dev/null
+
+
++ac_pwd=`pwd` && test -n "$ac_pwd" &&
++ac_ls_di=`ls -di .` &&
++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
++ { echo "$as_me: error: Working directory cannot be determined" >&2
++ { (exit 1); exit 1; }; }
++test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
++ { echo "$as_me: error: pwd does not report name of working directory" >&2
++ { (exit 1); exit 1; }; }
++
++
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+- # Try the directory containing this script, then its parent.
+- ac_confdir=`(dirname "$0") 2>/dev/null ||
++ # Try the directory containing this script, then the parent directory.
++ ac_confdir=`$as_dirname -- "$0" ||
+ $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$0" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r $srcdir/$ac_unique_file; then
++ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r $srcdir/$ac_unique_file; then
+- if test "$ac_srcdir_defaulted" = yes; then
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+- { (exit 1); exit 1; }; }
+- else
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+- { (exit 1); exit 1; }; }
+- fi
+-fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+- { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
++if test ! -r "$srcdir/$ac_unique_file"; then
++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++ { (exit 1); exit 1; }; }
++fi
++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
++ac_abs_confdir=`(
++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
++ { (exit 1); exit 1; }; }
++ pwd)`
++# When building in place, set srcdir=.
++if test "$ac_abs_confdir" = "$ac_pwd"; then
++ srcdir=.
++fi
++# Remove unnecessary trailing slashes from srcdir.
++# Double slashes in file names in object file debugging info
++# mess up M-x gdb in Emacs.
++case $srcdir in
++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
++esac
++for ac_var in $ac_precious_vars; do
++ eval ac_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_env_${ac_var}_value=\$${ac_var}
++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_cv_env_${ac_var}_value=\$${ac_var}
++done
+
+ #
+ # Report the --help message.
+@@ -798,9 +1286,6 @@ Configuration:
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-_ACEOF
+-
+- cat <<_ACEOF
+ Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+@@ -818,15 +1303,22 @@ Fine tuning of the installation director
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+- --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+- --infodir=DIR info documentation [PREFIX/info]
+- --mandir=DIR man documentation [PREFIX/man]
++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
++ --infodir=DIR info documentation [DATAROOTDIR/info]
++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
++ --mandir=DIR man documentation [DATAROOTDIR/man]
++ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
++ --htmldir=DIR html documentation [DOCDIR]
++ --dvidir=DIR dvi documentation [DOCDIR]
++ --pdfdir=DIR pdf documentation [DOCDIR]
++ --psdir=DIR ps documentation [DOCDIR]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -878,126 +1370,100 @@ Some influential environment variables:
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+- headers in a nonstandard directory <include dir>
++ LIBS libraries to pass to the linker, e.g. -l<library>
++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
++ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
++ YACC The `Yet Another C Compiler' implementation to use. Defaults to
++ the first program found out of: `bison -y', `byacc', `yacc'.
++ YFLAGS The list of arguments that will be passed by default to $YACC.
++ This script will default YFLAGS to the empty string to avoid a
++ default value of `-d' given by some make applications.
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ _ACEOF
++ac_status=$?
+ fi
+
+ if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+- ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+- test -d $ac_dir || continue
++ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+-
+- cd $ac_dir
+- # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f $ac_srcdir/configure.gnu; then
+- echo
+- $SHELL $ac_srcdir/configure.gnu --help=recursive
+- elif test -f $ac_srcdir/configure; then
+- echo
+- $SHELL $ac_srcdir/configure --help=recursive
+- elif test -f $ac_srcdir/configure.ac ||
+- test -f $ac_srcdir/configure.in; then
+- echo
+- $ac_configure --help
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
++
++ cd "$ac_dir" || { ac_status=$?; continue; }
++ # Check for guested configure.
++ if test -f "$ac_srcdir/configure.gnu"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
++ elif test -f "$ac_srcdir/configure"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+- fi
+- cd $ac_popdir
++ fi || ac_status=$?
++ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+ fi
+
+-test -n "$ac_init_help" && exit 0
++test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+ cat <<\_ACEOF
++configure
++generated by GNU Autoconf 2.61
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+- exit 0
++ exit
+ fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
++cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
++exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1016,7 +1482,7 @@ uname -v = `(uname -v) 2>/dev/null || ec
+ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+ /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+ /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+ /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+ /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+ /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+@@ -1030,6 +1496,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
++IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1051,7 +1518,6 @@ _ACEOF
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
+-ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1062,7 +1528,7 @@ do
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+@@ -1084,9 +1550,7 @@ do
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
++ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+@@ -1097,8 +1561,8 @@ $as_unset ac_configure_args1 || test "${
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log. We remove comments because anyway the quotes in there
+ # would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
++# WARNING: Use '\'' to represent an apostrophe within the trap.
++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+ trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+@@ -1111,20 +1575,34 @@ trap 'exit_status=$?
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
+ (set) 2>&1 |
+- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ sed -n \
+- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+- ;;
++ "s/'\''/'\''\\\\'\'''\''/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
++ ;; #(
+ *)
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-}
++ esac |
++ sort
++)
+ echo
+
+ cat <<\_ASBOX
+@@ -1135,22 +1613,28 @@ _ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
++## ------------------- ##
++## File substitutions. ##
++## ------------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+@@ -1162,26 +1646,24 @@ _ASBOX
+ ## ----------- ##
+ _ASBOX
+ echo
+- sed "/^$/d" confdefs.h | sort
++ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+- rm -f core *.core &&
+- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core core.conftest.* &&
++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+- ' 0
++' 0
+ for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+ done
+ ac_signal=0
+
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
++rm -f -r conftest* confdefs.h
+
+ # Predefined preprocessor variables.
+
+@@ -1212,14 +1694,17 @@ _ACEOF
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -z "$CONFIG_SITE"; then
+- if test "x$prefix" != xNONE; then
+- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+- else
+- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+- fi
++if test -n "$CONFIG_SITE"; then
++ set x "$CONFIG_SITE"
++elif test "x$prefix" != xNONE; then
++ set x "$prefix/share/config.site" "$prefix/etc/config.site"
++else
++ set x "$ac_default_prefix/share/config.site" \
++ "$ac_default_prefix/etc/config.site"
+ fi
+-for ac_site_file in $CONFIG_SITE; do
++shift
++for ac_site_file
++do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+ echo "$as_me: loading site script $ac_site_file" >&6;}
+@@ -1235,8 +1720,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -1248,12 +1733,11 @@ fi
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
++for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+- eval ac_new_val="\$ac_env_${ac_var}_value"
++ eval ac_old_val=\$ac_cv_env_${ac_var}_value
++ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+@@ -1278,8 +1762,7 @@ echo "$as_me: current value: $ac_new_v
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1296,12 +1779,6 @@ echo "$as_me: error: run \`make distclea
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+
+
+
+@@ -1318,108 +1795,163 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ ac_aux_dir=
+-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+- if test -f $ac_dir/install-sh; then
++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
++ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f $ac_dir/install.sh; then
++ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f $ac_dir/shtool; then
++ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+ done
+ if test -z "$ac_aux_dir"; then
+- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++
++# These three variables are undocumented and unsupported,
++# and are intended to be withdrawn in a future Autoconf release.
++# They can cause serious problems if a builder's source tree is in a directory
++# whose full name contains unusual characters.
++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
++
+
+ # Make sure we can run config.sub.
+-$ac_config_sub sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+-echo "$as_me:$LINENO: checking build system type" >&5
+-echo $ECHO_N "checking build system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking build system type" >&5
++echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+ if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_build_alias=$build_alias
+-test -z "$ac_cv_build_alias" &&
+- ac_cv_build_alias=`$ac_config_guess`
+-test -z "$ac_cv_build_alias" &&
++ ac_build_alias=$build_alias
++test "x$ac_build_alias" = x &&
++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
++test "x$ac_build_alias" = x &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+ echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6; }
++case $ac_cv_build in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
++echo "$as_me: error: invalid value of canonical build" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ build=$ac_cv_build
+-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_build
++shift
++build_cpu=$1
++build_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++build_os=$*
++IFS=$ac_save_IFS
++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking host system type" >&5
++echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+ if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_host_alias=$host_alias
+-test -z "$ac_cv_host_alias" &&
+- ac_cv_host_alias=$ac_cv_build_alias
+-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
++ if test "x$host_alias" = x; then
++ ac_cv_host=$ac_cv_build
++else
++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6; }
++case $ac_cv_host in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
++echo "$as_me: error: invalid value of canonical host" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ host=$ac_cv_host
+-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_host
++shift
++host_cpu=$1
++host_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++host_os=$*
++IFS=$ac_save_IFS
++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking target system type" >&5
++echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
+ if test "${ac_cv_target+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_target_alias=$target_alias
+-test "x$ac_cv_target_alias" = "x" &&
+- ac_cv_target_alias=$ac_cv_host_alias
+-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
++ if test "x$target_alias" = x; then
++ ac_cv_target=$ac_cv_host
++else
++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
++echo "${ECHO_T}$ac_cv_target" >&6; }
++case $ac_cv_target in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
++echo "$as_me: error: invalid value of canonical target" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ target=$ac_cv_target
+-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_target
++shift
++target_cpu=$1
++target_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++target_os=$*
++IFS=$ac_save_IFS
++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+ # The aliases save the names the user supplied, while $host etc.
+@@ -1436,8 +1968,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1450,32 +1982,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1488,36 +2022,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1530,74 +2079,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1611,7 +2120,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -1622,6 +2131,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -1639,22 +2149,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1667,36 +2178,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1709,29 +2222,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -1744,21 +2273,35 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+@@ -1783,47 +2326,77 @@ ac_clean_files="$ac_clean_files a.out a.
+ # Try to create an executable without -o first, disregard a.out.
+ # It will help us diagnose broken compilers, and finding out an intuition
+ # of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+- (eval $ac_link_default) 2>&5
++#
++# List of possible output files, starting from the most likely.
++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
++# only as a last resort. b.out is created by i960 compilers.
++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
++#
++# The IRIX 6 linker writes into existing files which may not be
++# executable, retaining their permissions. Remove them first so a
++# subsequent execution test works.
++ac_rmfiles=
++for ac_file in $ac_files
++do
++ case $ac_file in
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
++ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
++ esac
++done
++rm -f $ac_rmfiles
++
++if { (ac_try="$ac_link_default"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- # Find the output, starting from the most likely. This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
++# in a Makefile. We should not override ac_cv_exeext if it was cached,
++# so that the user can short-circuit this test for compilers unknown to
++# Autoconf.
++for ac_file in $ac_files ''
+ do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+- ;;
+- conftest.$ac_ext )
+- # This is the source file.
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- # FIXME: I believe we export ac_cv_exeext for Libtool,
+- # but it would be cool to find out if it's true. Does anybody
+- # maintain Libtool? --akim.
+- export ac_cv_exeext
++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
++ then :; else
++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ fi
++ # We set ac_cv_exeext here because the later test for it is not
++ # safe: cross compilers may not add the suffix if given an `-o'
++ # argument, so we may need to know it at that point already.
++ # Even if this section looks crufty: it has the advantage of
++ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+ done
++test "$ac_cv_exeext" = no && ac_cv_exeext=
++
+ else
++ ac_file=''
++fi
++
++{ echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6; }
++if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -1835,19 +2408,21 @@ See \`config.log' for more details." >&2
+ fi
+
+ ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+ # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+ # If not cross compiling, check that we can run a simple program.
+ if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -1866,22 +2441,27 @@ See \`config.log' for more details." >&2
+ fi
+ fi
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
++echo "${ECHO_T}$cross_compiling" >&6; }
++
++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -1892,9 +2472,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
+ for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -1908,14 +2487,14 @@ See \`config.log' for more details." >&2
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
++echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+ rm -f conftest.$ac_ext
+ EXEEXT=$ac_cv_exeext
+ ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+ if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1935,14 +2514,20 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
++ for ac_file in conftest.o conftest.obj conftest.*; do
++ test -f "$ac_file" || continue;
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -1960,12 +2545,12 @@ fi
+
+ rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
++echo "${ECHO_T}$ac_cv_objext" >&6; }
+ OBJEXT=$ac_cv_objext
+ ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1988,50 +2573,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -2047,38 +2631,118 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -2094,12 +2758,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -2133,12 +2797,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -2153,335 +2822,144 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
++if test "${ac_cv_search_strerror+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_func_search_save_LIBS=$LIBS
+ cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char strerror ();
+ int
+ main ()
+ {
+-exit (42);
++return strerror ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++for ac_lib in '' cposix; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_strerror=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_strerror+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-echo "$as_me:$LINENO: checking for library containing strerror" >&5
+-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
++done
+ if test "${ac_cv_search_strerror+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_strerror=no
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="none required"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_strerror" = no; then
+- for ac_lib in cposix; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="-l$ac_lib"
+-break
++ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++ ac_cv_search_strerror=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+-echo "${ECHO_T}$ac_cv_search_strerror" >&6
+-if test "$ac_cv_search_strerror" != no; then
+- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
++echo "${ECHO_T}$ac_cv_search_strerror" >&6; }
++ac_res=$ac_cv_search_strerror
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+@@ -2501,8 +2979,8 @@ am__api_version="1.9"
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -2524,7 +3002,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -2543,21 +3021,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -2567,8 +3046,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -2610,20 +3089,20 @@ echo "$as_me: error: newly created file
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ test "$program_prefix" != NONE &&
+- program_transform_name="s,^,$program_prefix,;$program_transform_name"
++ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
++ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm conftest.sed
++rm -f conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -2675,8 +3154,8 @@ for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2689,54 +3168,57 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6
++ { echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$AWK" && break
+ done
+
+-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
++SHELL = /bin/sh
+ all:
+- @echo 'ac_maketemp="$(MAKE)"'
++ @echo '@@@%%%=$(MAKE)=@@@%%%'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+-if test -n "$ac_maketemp"; then
+- eval ac_cv_prog_make_${ac_make}_set=yes
+-else
+- eval ac_cv_prog_make_${ac_make}_set=no
+-fi
++case `${MAKE-make} -f conftest.make 2>/dev/null` in
++ *@@@%%%=?*=@@@%%%*)
++ eval ac_cv_prog_make_${ac_make}_set=yes;;
++ *)
++ eval ac_cv_prog_make_${ac_make}_set=no;;
++esac
+ rm -f conftest.make
+ fi
+-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -2751,7 +3233,7 @@ rmdir .tst 2>/dev/null
+
+ DEPDIR="${am__leading_dot}deps"
+
+- ac_config_commands="$ac_config_commands depfiles"
++ac_config_commands="$ac_config_commands depfiles"
+
+
+ am_make=${MAKE-make}
+@@ -2761,8 +3243,8 @@ am__doit:
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -2789,15 +3271,15 @@ if test "$am__include" = "#"; then
+ fi
+
+
+-echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6
++{ echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6; }
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval="$enable_dependency_tracking"
++ enableval=$enable_dependency_tracking;
++fi
+
+-fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -2872,8 +3354,8 @@ if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2886,32 +3368,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2924,27 +3408,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -2965,8 +3463,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am
+
+ depcc="$CC" am_compiler_list=
+
+-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3055,8 +3553,8 @@ else
+ fi
+
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -3074,10 +3572,9 @@ fi
+
+
+
+-# Check whether --enable-shared or --disable-shared was given.
++# Check whether --enable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval="$enable_shared"
+- p=${PACKAGE-default}
++ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -3095,11 +3592,11 @@ no) enable_shared=no ;;
+ esac
+ else
+ enable_shared=yes
+-fi;
+-# Check whether --enable-static or --disable-static was given.
++fi
++
++# Check whether --enable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval="$enable_static"
+- p=${PACKAGE-default}
++ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -3117,11 +3614,11 @@ no) enable_static=no ;;
+ esac
+ else
+ enable_static=yes
+-fi;
+-# Check whether --enable-fast-install or --disable-fast-install was given.
++fi
++
++# Check whether --enable-fast-install was given.
+ if test "${enable_fast_install+set}" = set; then
+- enableval="$enable_fast_install"
+- p=${PACKAGE-default}
++ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+@@ -3139,20 +3636,21 @@ no) enable_fast_install=no ;;
+ esac
+ else
+ enable_fast_install=yes
+-fi;
++fi
++
+
+-# Check whether --with-gnu-ld or --without-gnu-ld was given.
++# Check whether --with-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval="$with_gnu_ld"
+- test "$withval" = no || with_gnu_ld=yes
++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi;
++fi
++
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -3181,11 +3679,11 @@ echo $ECHO_N "checking for ld used by GC
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+ else
+- echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -3214,17 +3712,17 @@ fi
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6
++ { echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3235,25 +3733,25 @@ else
+ lt_cv_prog_gnu_ld=no
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_ld_reload_flag='-r'
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
+ reload_flag=$lt_cv_ld_reload_flag
+ test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
+ if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3288,22 +3786,22 @@ fi
+ fi
+
+ NM="$lt_cv_path_NM"
+-echo "$as_me:$LINENO: result: $NM" >&5
+-echo "${ECHO_T}$NM" >&6
++{ echo "$as_me:$LINENO: result: $NM" >&5
++echo "${ECHO_T}$NM" >&6; }
+
+-echo "$as_me:$LINENO: checking whether ln -s works" >&5
+-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+ LN_S=$as_ln_s
+ if test "$LN_S" = "ln -s"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+-echo "${ECHO_T}no, using $LN_S" >&6
++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6; }
+ fi
+
+-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
+-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; }
+ if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3465,8 +3963,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ esac
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+
+@@ -3476,8 +3974,8 @@ deplibs_check_method=$lt_cv_deplibs_chec
+ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+ # find the maximum length of command line arguments
+-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+ if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3528,11 +4026,11 @@ else
+ fi
+
+ if test -n "$lt_cv_sys_max_cmd_len" ; then
+- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+ else
+- echo "$as_me:$LINENO: result: none" >&5
+-echo "${ECHO_T}none" >&6
++ { echo "$as_me:$LINENO: result: none" >&5
++echo "${ECHO_T}none" >&6; }
+ fi
+
+
+@@ -3540,8 +4038,8 @@ fi
+ case $deplibs_check_method in
+ file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3595,17 +4093,17 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+- echo "$as_me:$LINENO: checking for file" >&5
+-echo $ECHO_N "checking for file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for file" >&5
++echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3659,11 +4157,11 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ else
+@@ -3678,8 +4176,8 @@ esac
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3692,32 +4190,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3730,27 +4230,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -3758,8 +4272,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3772,32 +4286,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3810,27 +4326,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -3845,22 +4375,22 @@ test "$GCC" = yes && libtool_flags="$lib
+ test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+
+
+-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
++# Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval="$enable_libtool_lock"
++ enableval=$enable_libtool_lock;
++fi
+
+-fi;
+ test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+
+-# Check whether --with-pic or --without-pic was given.
++# Check whether --with-pic was given.
+ if test "${with_pic+set}" = set; then
+- withval="$with_pic"
+- pic_mode="$withval"
++ withval=$with_pic; pic_mode="$withval"
+ else
+ pic_mode=default
+-fi;
++fi
++
+ test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
+ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
+
+@@ -3869,7 +4399,7 @@ test x"$pic_mode" = xno && libtool_flags
+ case $host in
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 3872 "configure"' > conftest.$ac_ext
++ echo '#line 4402 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -3974,13 +4504,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+ if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+
+-
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -4003,35 +4532,32 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ lt_cv_cc_needs_belf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-lt_cv_cc_needs_belf=no
++ lt_cv_cc_needs_belf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -4040,8 +4566,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+@@ -4071,39 +4597,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -4129,8 +4674,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -4157,15 +4702,14 @@ exec 5>>./config.log
+
+
+
+-# Check whether --with-lib-path or --without-lib-path was given.
++# Check whether --with-lib-path was given.
+ if test "${with_lib_path+set}" = set; then
+- withval="$with_lib_path"
+- LIB_PATH=$withval
+-fi;
+-# Check whether --enable-targets or --disable-targets was given.
++ withval=$with_lib_path; LIB_PATH=$withval
++fi
++
++# Check whether --enable-targets was given.
+ if test "${enable_targets+set}" = set; then
+- enableval="$enable_targets"
+- case "${enableval}" in
++ enableval=$enable_targets; case "${enableval}" in
+ yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5
+ echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;}
+ { (exit 1); exit 1; }; }
+@@ -4173,10 +4717,10 @@ echo "$as_me: error: enable-targets opti
+ no) enable_targets= ;;
+ *) enable_targets=$enableval ;;
+ esac
+-fi; # Check whether --enable-64-bit-bfd or --disable-64-bit-bfd was given.
++fi
++# Check whether --enable-64-bit-bfd was given.
+ if test "${enable_64_bit_bfd+set}" = set; then
+- enableval="$enable_64_bit_bfd"
+- case "${enableval}" in
++ enableval=$enable_64_bit_bfd; case "${enableval}" in
+ yes) want64=true ;;
+ no) want64=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for 64-bit-bfd option" >&5
+@@ -4185,12 +4729,12 @@ echo "$as_me: error: bad value ${enablev
+ esac
+ else
+ want64=false
+-fi;
++fi
+
+-# Check whether --with-sysroot or --without-sysroot was given.
+-if test "${with_sysroot+set}" = set; then
+- withval="$with_sysroot"
+
++# Check whether --with-sysroot was given.
++if test "${with_sysroot+set}" = set; then
++ withval=$with_sysroot;
+ case ${with_sysroot} in
+ yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
+ *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+@@ -4222,7 +4766,8 @@ else
+ TARGET_SYSTEM_ROOT=
+ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"'
+
+-fi;
++fi
++
+
+
+
+@@ -4230,17 +4775,17 @@ fi;
+
+ GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+
+-# Check whether --enable-werror or --disable-werror was given.
++# Check whether --enable-werror was given.
+ if test "${enable_werror+set}" = set; then
+- enableval="$enable_werror"
+- case "${enableval}" in
++ enableval=$enable_werror; case "${enableval}" in
+ yes | y) ERROR_ON_WARNING="yes" ;;
+ no | n) ERROR_ON_WARNING="no" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5
+ echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+-fi;
++fi
++
+
+ # Enable -Werror by default when using gcc
+ if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
+@@ -4257,10 +4802,9 @@ if test "${GCC}" = yes ; then
+ WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+ fi
+
+-# Check whether --enable-build-warnings or --disable-build-warnings was given.
++# Check whether --enable-build-warnings was given.
+ if test "${enable_build_warnings+set}" = set; then
+- enableval="$enable_build_warnings"
+- case "${enableval}" in
++ enableval=$enable_build_warnings; case "${enableval}" in
+ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+ no) if test "${GCC}" = yes ; then
+ WARN_CFLAGS="-w"
+@@ -4271,7 +4815,8 @@ if test "${enable_build_warnings+set}" =
+ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
+ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+ esac
+-fi;
++fi
++
+
+ if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then
+ echo "Setting warning flags = $WARN_CFLAGS" 6>&1
+@@ -4281,7 +4826,7 @@ fi
+
+
+
+- ac_config_headers="$ac_config_headers config.h:config.in"
++ac_config_headers="$ac_config_headers config.h:config.in"
+
+
+ if test -z "$target" ; then
+@@ -4305,8 +4850,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4319,32 +4864,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4357,36 +4904,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4399,74 +4961,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4480,7 +5002,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -4491,6 +5013,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -4508,22 +5031,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4536,36 +5060,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4578,29 +5104,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -4613,27 +5155,41 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4656,50 +5212,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -4715,59 +5270,139 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+-if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
+-elif test $ac_cv_prog_cc_g = yes; then
+- if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
+- else
+- CFLAGS="-g"
+- fi
+-else
+- if test "$GCC" = yes; then
+- CFLAGS="-O2"
+- else
+- CFLAGS=
+- fi
+-fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_prog_cc_stdc=no
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
++if test "$ac_test_CFLAGS" = set; then
++ CFLAGS=$ac_save_CFLAGS
++elif test $ac_cv_prog_cc_g = yes; then
++ if test "$GCC" = yes; then
++ CFLAGS="-g -O2"
++ else
++ CFLAGS="-g"
++ fi
++else
++ if test "$GCC" = yes; then
++ CFLAGS="-O2"
++ else
++ CFLAGS=
++ fi
++fi
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -4801,12 +5436,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -4821,205 +5461,57 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -5039,8 +5531,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -5062,7 +5554,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -5081,21 +5573,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -5110,8 +5603,8 @@ ALL_LINGUAS="fr sv tr es da vi zh_CN"
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5124,32 +5617,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5162,27 +5657,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -5192,8 +5701,8 @@ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -5227,24 +5736,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5253,9 +5760,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5265,24 +5773,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5293,6 +5799,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5310,8 +5817,8 @@ fi
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
++{ echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6; }
+ ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+@@ -5334,24 +5841,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5360,9 +5865,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5372,24 +5878,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5400,6 +5904,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5422,79 +5927,222 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Extract the first word of "grep ggrep" to use in msg output
++if test -z "$GREP"; then
++set dummy grep ggrep; ac_prog_name=$2
++if test "${ac_cv_path_GREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+- then ac_cv_prog_egrep='grep -E'
+- else ac_cv_prog_egrep='egrep'
++ ac_path_GREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
++ # Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
+ fi
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
+
+
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+-if test "${ac_cv_header_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
++ $ac_path_GREP_found && break 3
++ done
++done
+
+-int
+-main ()
+-{
++done
++IFS=$as_save_IFS
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_header_stdc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_header_stdc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+-if test $ac_cv_header_stdc = yes; then
+- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+- cat >conftest.$ac_ext <<_ACEOF
++GREP="$ac_cv_path_GREP"
++if test -z "$GREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_GREP=$GREP
++fi
++
++
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
++echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
++
++
++{ echo "$as_me:$LINENO: checking for egrep" >&5
++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ # Extract the first word of "egrep" to use in msg output
++if test -z "$EGREP"; then
++set dummy egrep; ac_prog_name=$2
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_EGREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
++ # Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_EGREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++EGREP="$ac_cv_path_EGREP"
++if test -z "$EGREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++
++ fi
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
++
++
++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++if test "${ac_cv_header_stdc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_header_stdc=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_header_stdc=no
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -5546,6 +6194,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
++#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -5565,18 +6214,27 @@ main ()
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
++ return 2;
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -5589,12 +6247,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
++echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+ if test $ac_cv_header_stdc = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5603,8 +6263,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
+ if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5622,10 +6282,10 @@ main ()
+ #ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+- const charset x;
++ const charset cs;
+ /* SunOS 4.1.1 cc rejects this. */
+- char const *const *ccp;
+- char **p;
++ char const *const *pcpcc;
++ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+@@ -5634,16 +6294,17 @@ main ()
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+- ccp = &g + (g ? g-g : 0);
++ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+- ++ccp;
+- p = (char**) ccp;
+- ccp = (char const *const *) p;
++ ++pcpcc;
++ ppc = (char**) pcpcc;
++ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
++ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+@@ -5662,7 +6323,9 @@ main ()
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
++ if (!foo) return 0;
+ }
++ return !cs[0] && !zero.x;
+ #endif
+
+ ;
+@@ -5670,38 +6333,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_c_const=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_c_const=no
++ ac_cv_c_const=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+-echo "${ECHO_T}$ac_cv_c_const" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
++echo "${ECHO_T}$ac_cv_c_const" >&6; }
+ if test $ac_cv_c_const = no; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5710,8 +6369,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5731,39 +6390,37 @@ $ac_kw foo_t foo () {return 0; }
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_c_inline=$ac_kw; break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_c_inline=$ac_kw
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ test "$ac_cv_c_inline" != no && break
+ done
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6; }
+
+
+ case $ac_cv_c_inline in
+@@ -5795,9 +6452,9 @@ for ac_header in sys/types.h sys/stat.h
+ inttypes.h stdint.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -5811,38 +6468,35 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -5853,8 +6507,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking for off_t" >&5
+-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for off_t" >&5
++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5865,62 +6519,59 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef off_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((off_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (off_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_off_t=no
++ ac_cv_type_off_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+-echo "${ECHO_T}$ac_cv_type_off_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
++echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
+ if test $ac_cv_type_off_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define off_t long
++#define off_t long int
+ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for size_t" >&5
+-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for size_t" >&5
++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5931,64 +6582,61 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef size_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((size_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (size_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_size_t=no
++ ac_cv_type_size_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+-echo "${ECHO_T}$ac_cv_type_size_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
++echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+ if test $ac_cv_type_size_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define size_t unsigned
++#define size_t unsigned int
+ _ACEOF
+
+ fi
+
+ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+ # for constant arguments. Useless!
+-echo "$as_me:$LINENO: checking for working alloca.h" >&5
+-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+ if test "${ac_cv_working_alloca_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6003,44 +6651,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (2 * sizeof (int));
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_working_alloca_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_working_alloca_h=no
++ ac_cv_working_alloca_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+ if test $ac_cv_working_alloca_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6049,8 +6695,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for alloca" >&5
+-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for alloca" >&5
++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_func_alloca_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6067,7 +6713,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ # include <malloc.h>
+ # define alloca _alloca
+ # else
+-# if HAVE_ALLOCA_H
++# ifdef HAVE_ALLOCA_H
+ # include <alloca.h>
+ # else
+ # ifdef _AIX
+@@ -6085,44 +6731,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (1);
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_alloca_works=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_alloca_works=no
++ ac_cv_func_alloca_works=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+ if test $ac_cv_func_alloca_works = yes; then
+
+@@ -6136,15 +6780,15 @@ else
+ # contain a buggy version. If you still want to use their alloca,
+ # use ar to extract alloca.o from them instead of compiling alloca.c.
+
+-ALLOCA=alloca.$ac_objext
++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+ cat >>confdefs.h <<\_ACEOF
+ #define C_ALLOCA 1
+ _ACEOF
+
+
+-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+ if test "${ac_cv_os_cray+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6154,7 +6798,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#if defined(CRAY) && ! defined(CRAY2)
++#if defined CRAY && ! defined CRAY2
+ webecray
+ #else
+ wenotbecray
+@@ -6170,14 +6814,14 @@ fi
+ rm -f conftest*
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+-echo "${ECHO_T}$ac_cv_os_cray" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
++echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+ if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6203,68 +6847,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6277,8 +6913,8 @@ fi
+ done
+ fi
+
+-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_c_stack_direction+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6291,6 +6927,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
++$ac_includes_default
+ int
+ find_stack_direction ()
+ {
+@@ -6308,17 +6945,26 @@ find_stack_direction ()
+ int
+ main ()
+ {
+- exit (find_stack_direction () < 0);
++ return find_stack_direction () < 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6331,11 +6977,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_c_stack_direction=-1
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+ cat >>confdefs.h <<_ACEOF
+ #define STACK_DIRECTION $ac_cv_c_stack_direction
+@@ -6349,18 +6997,19 @@ fi
+ for ac_header in stdlib.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6371,41 +7020,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6414,24 +7059,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -6439,9 +7082,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -6465,25 +7109,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -6499,9 +7137,9 @@ done
+ for ac_func in getpagesize
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6527,68 +7165,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6597,8 +7227,8 @@ _ACEOF
+ fi
+ done
+
+-echo "$as_me:$LINENO: checking for working mmap" >&5
+-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working mmap" >&5
++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; }
+ if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6640,21 +7270,21 @@ $ac_includes_default
+ #include <fcntl.h>
+ #include <sys/mman.h>
+
+-#if !STDC_HEADERS && !HAVE_STDLIB_H
++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+ char *malloc ();
+ #endif
+
+ /* This mess was copied from the GNU getpagesize.h. */
+-#if !HAVE_GETPAGESIZE
++#ifndef HAVE_GETPAGESIZE
+ /* Assume that all systems that can run configure have sys/param.h. */
+-# if !HAVE_SYS_PARAM_H
++# ifndef HAVE_SYS_PARAM_H
+ # define HAVE_SYS_PARAM_H 1
+ # endif
+
+ # ifdef _SC_PAGESIZE
+ # define getpagesize() sysconf(_SC_PAGESIZE)
+ # else /* no _SC_PAGESIZE */
+-# if HAVE_SYS_PARAM_H
++# ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ # ifdef EXEC_PAGESIZE
+ # define getpagesize() EXEC_PAGESIZE
+@@ -6693,15 +7323,15 @@ main ()
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ if (write (fd, data, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ close (fd);
+
+ /* Next, try to mmap the file at a fixed address which already has
+@@ -6709,17 +7339,17 @@ main ()
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ data2 = (char *) malloc (2 * pagesize);
+ if (!data2)
+- exit (1);
+- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
++ return 1;
++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1);
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+- exit (1);
++ return 1;
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+@@ -6728,24 +7358,33 @@ main ()
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+- exit (1);
++ return 1;
+ if (read (fd, data3, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+- exit (1);
++ return 1;
+ close (fd);
+- exit (0);
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6758,11 +7397,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_func_mmap_fixed_mapped=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; }
+ if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6786,18 +7427,19 @@ for ac_header in argz.h limits.h locale.
+ unistd.h values.h sys/param.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6808,41 +7450,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6851,24 +7489,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -6876,9 +7512,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -6902,25 +7539,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -6946,9 +7577,9 @@ for ac_func in getcwd munmap putenv sete
+ __argz_count __argz_stringify __argz_next
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6974,68 +7605,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7050,9 +7673,9 @@ done
+ for ac_func in stpcpy
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7078,68 +7701,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7158,8 +7773,8 @@ _ACEOF
+ fi
+
+ if test $ac_cv_header_locale_h = yes; then
+- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; }
+ if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7179,39 +7794,36 @@ return LC_MESSAGES
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ am_cv_val_LC_MESSAGES=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-am_cv_val_LC_MESSAGES=no
++ am_cv_val_LC_MESSAGES=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; }
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -7220,34 +7832,34 @@ _ACEOF
+
+ fi
+ fi
+- echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
+- # Check whether --enable-nls or --disable-nls was given.
++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5
++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; }
++ # Check whether --enable-nls was given.
+ if test "${enable_nls+set}" = set; then
+- enableval="$enable_nls"
+- USE_NLS=$enableval
++ enableval=$enable_nls; USE_NLS=$enableval
+ else
+ USE_NLS=yes
+-fi;
+- echo "$as_me:$LINENO: result: $USE_NLS" >&5
+-echo "${ECHO_T}$USE_NLS" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6; }
+
+
+ USE_INCLUDED_LIBINTL=no
+
+ if test "$USE_NLS" = "yes"; then
+- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
+-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; }
+
+-# Check whether --with-included-gettext or --without-included-gettext was given.
++# Check whether --with-included-gettext was given.
+ if test "${with_included_gettext+set}" = set; then
+- withval="$with_included_gettext"
+- nls_cv_force_use_gnu_gettext=$withval
++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval
+ else
+ nls_cv_force_use_gnu_gettext=no
+-fi;
+- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
+-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; }
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+@@ -7256,17 +7868,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get
+ CATOBJEXT=
+
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking libintl.h usability" >&5
+-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5
++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7277,41 +7889,37 @@ $ac_includes_default
+ #include <libintl.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking libintl.h presence" >&5
+-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5
++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7320,24 +7928,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <libintl.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -7345,9 +7951,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -7371,30 +7978,23 @@ echo "$as_me: WARNING: libintl.h: se
+ echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_libintl_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+
+ fi
+ if test $ac_cv_header_libintl_h = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libc" >&5
+-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5
++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7414,43 +8014,40 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libc=no
++ gt_cv_func_gettext_libc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; }
+
+ if test "$gt_cv_func_gettext_libc" != "yes"; then
+- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; }
+ if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7463,59 +8060,56 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char bindtextdomain ();
+ int
+ main ()
+ {
+-bindtextdomain ();
++return bindtextdomain ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_intl_bindtextdomain=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_intl_bindtextdomain=no
++ ac_cv_lib_intl_bindtextdomain=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; }
+ if test $ac_cv_lib_intl_bindtextdomain = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libintl" >&5
+-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5
++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libintl+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7535,39 +8129,36 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libintl=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libintl=no
++ gt_cv_func_gettext_libintl=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; }
+ fi
+
+ fi
+@@ -7581,8 +8172,8 @@ _ACEOF
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7608,20 +8199,20 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ if test "$MSGFMT" != "no"; then
+
+ for ac_func in dcgettext
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7647,68 +8238,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7719,8 +8302,8 @@ done
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7735,32 +8318,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7786,11 +8370,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7810,37 +8394,34 @@ extern int _nl_msg_cat_cntr;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-CATOBJEXT=.mo
++ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ INSTOBJEXT=.mo
+ fi
+@@ -7862,8 +8443,8 @@ fi
+ INTLOBJS="\$(GETTOBJS)"
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7889,17 +8470,17 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7914,32 +8495,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7965,11 +8547,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+
+@@ -7988,8 +8570,8 @@ fi
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
+-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6
++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ fi
+@@ -8038,8 +8620,8 @@ _ACEOF
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; }
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+@@ -8047,8 +8629,8 @@ echo $ECHO_N "checking for catalogs to b
+ esac
+ done
+ LINGUAS=$NEW_LINGUAS
+- echo "$as_me:$LINENO: result: $LINGUAS" >&5
+-echo "${ECHO_T}$LINGUAS" >&6
++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5
++echo "${ECHO_T}$LINGUAS" >&6; }
+ fi
+
+ if test -n "$LINGUAS"; then
+@@ -8067,17 +8649,17 @@ echo "${ECHO_T}$LINGUAS" >&6
+ if test -f $srcdir/po2tbl.sed.in; then
+ if test "$CATOBJEXT" = ".cat"; then
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking linux/version.h usability" >&5
+-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5
++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8088,41 +8670,37 @@ $ac_includes_default
+ #include <linux/version.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking linux/version.h presence" >&5
+-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5
++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8131,24 +8709,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <linux/version.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -8156,9 +8732,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -8182,25 +8759,18 @@ echo "$as_me: WARNING: linux/version.h:
+ echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_linux_version_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+
+ fi
+ if test $ac_cv_header_linux_version_h = yes; then
+@@ -8256,8 +8826,8 @@ for ac_prog in 'bison -y' byacc
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_YACC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8270,25 +8840,27 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_YACC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ YACC=$ac_cv_prog_YACC
+ if test -n "$YACC"; then
+- echo "$as_me:$LINENO: result: $YACC" >&5
+-echo "${ECHO_T}$YACC" >&6
++ { echo "$as_me:$LINENO: result: $YACC" >&5
++echo "${ECHO_T}$YACC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$YACC" && break
+ done
+ test -n "$YACC" || YACC="yacc"
+@@ -8297,8 +8869,8 @@ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_LEX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8311,253 +8883,182 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LEX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ LEX=$ac_cv_prog_LEX
+ if test -n "$LEX"; then
+- echo "$as_me:$LINENO: result: $LEX" >&5
+-echo "${ECHO_T}$LEX" >&6
++ { echo "$as_me:$LINENO: result: $LEX" >&5
++echo "${ECHO_T}$LEX" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$LEX" && break
+ done
+ test -n "$LEX" || LEX=":"
+
+-if test -z "$LEXLIB"
+-then
+- echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5
+-echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6
+-if test "${ac_cv_lib_fl_yywrap+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lfl $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
++if test "x$LEX" != "x:"; then
++ cat >conftest.l <<_ACEOF
++%%
++a { ECHO; }
++b { REJECT; }
++c { yymore (); }
++d { yyless (1); }
++e { yyless (input () != 0); }
++f { unput (yytext[0]); }
++. { BEGIN INITIAL; }
++%%
++#ifdef YYTEXT_POINTER
++extern char *yytext;
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char yywrap ();
+ int
+-main ()
++main (void)
+ {
+-yywrap ();
+- ;
+- return 0;
++ return ! yylex () + ! yywrap ();
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++{ (ac_try="$LEX conftest.l"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$LEX conftest.l") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_lib_fl_yywrap=yes
++ (exit $ac_status); }
++{ echo "$as_me:$LINENO: checking lex output file root" >&5
++echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; }
++if test "${ac_cv_prog_lex_root+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_fl_yywrap=no
++if test -f lex.yy.c; then
++ ac_cv_prog_lex_root=lex.yy
++elif test -f lexyy.c; then
++ ac_cv_prog_lex_root=lexyy
++else
++ { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
++echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
++ { (exit 1); exit 1; }; }
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5
+-echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6
+-if test $ac_cv_lib_fl_yywrap = yes; then
+- LEXLIB="-lfl"
+-else
+- echo "$as_me:$LINENO: checking for yywrap in -ll" >&5
+-echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6
+-if test "${ac_cv_lib_l_yywrap+set}" = set; then
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
++echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; }
++LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
++
++if test -z "${LEXLIB+set}"; then
++ { echo "$as_me:$LINENO: checking lex library" >&5
++echo $ECHO_N "checking lex library... $ECHO_C" >&6; }
++if test "${ac_cv_lib_lex+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-ll $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char yywrap ();
+-int
+-main ()
+-{
+-yywrap ();
+- ;
+- return 0;
+-}
++ ac_save_LIBS=$LIBS
++ ac_cv_lib_lex='none needed'
++ for ac_lib in '' -lfl -ll; do
++ LIBS="$ac_lib $ac_save_LIBS"
++ cat >conftest.$ac_ext <<_ACEOF
++`cat $LEX_OUTPUT_ROOT.c`
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_lib_l_yywrap=yes
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_lib_lex=$ac_lib
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_l_yywrap=no
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5
+-echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6
+-if test $ac_cv_lib_l_yywrap = yes; then
+- LEXLIB="-ll"
+-fi
+
+ fi
+
+-fi
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext conftest.$ac_ext
++ test "$ac_cv_lib_lex" != 'none needed' && break
++ done
++ LIBS=$ac_save_LIBS
+
+-if test "x$LEX" != "x:"; then
+- echo "$as_me:$LINENO: checking lex output file root" >&5
+-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6
+-if test "${ac_cv_prog_lex_root+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # The minimal lex program is just a single line: %%. But some broken lexes
+-# (Solaris, I think it was) want two %% lines, so accommodate them.
+-cat >conftest.l <<_ACEOF
+-%%
+-%%
+-_ACEOF
+-{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5
+- (eval $LEX conftest.l) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-if test -f lex.yy.c; then
+- ac_cv_prog_lex_root=lex.yy
+-elif test -f lexyy.c; then
+- ac_cv_prog_lex_root=lexyy
+-else
+- { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
+-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
+- { (exit 1); exit 1; }; }
+ fi
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5
++echo "${ECHO_T}$ac_cv_lib_lex" >&6; }
++ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
+-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6
+-rm -f conftest.l
+-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+-echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
+-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6
++
++{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
++echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ # POSIX says lex can declare yytext either as a pointer or an array; the
+-# default is implementation-dependent. Figure out which it is, since
++# default is implementation-dependent. Figure out which it is, since
+ # not all implementations provide the %pointer and %array declarations.
+ ac_cv_prog_lex_yytext_pointer=no
+-echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
+ ac_save_LIBS=$LIBS
+-LIBS="$LIBS $LEXLIB"
++LIBS="$LEXLIB $ac_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
++#define YYTEXT_POINTER 1
+ `cat $LEX_OUTPUT_ROOT.c`
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_prog_lex_yytext_pointer=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_save_LIBS
+-rm -f "${LEX_OUTPUT_ROOT}.c"
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
+-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
++echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; }
+ if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -8565,23 +9066,24 @@ cat >>confdefs.h <<\_ACEOF
+ _ACEOF
+
+ fi
++rm -f conftest.l $LEX_OUTPUT_ROOT.c
+
+ fi
+ if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+ fi
+
+-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
++ # Check whether --enable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then
+- enableval="$enable_maintainer_mode"
+- USE_MAINTAINER_MODE=$enableval
++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+ else
+ USE_MAINTAINER_MODE=no
+-fi;
+- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
+
+
+ if test $USE_MAINTAINER_MODE = yes; then
+@@ -8611,18 +9113,19 @@ fi
+ for ac_header in string.h strings.h stdlib.h unistd.h elf-hints.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8633,41 +9136,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8676,24 +9175,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -8701,9 +9198,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -8727,25 +9225,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -8763,9 +9255,9 @@ done
+ for ac_func in sbrk realpath glob
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8791,68 +9283,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -8869,9 +9353,9 @@ done
+ ac_header_dirent=no
+ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
++echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -8893,38 +9377,35 @@ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+@@ -8936,13 +9417,12 @@ fi
+ done
+ # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+ if test $ac_header_dirent = dirent.h; then
+- echo "$as_me:$LINENO: checking for library containing opendir" >&5
+-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5
++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+ if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_opendir=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8950,126 +9430,83 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char opendir ();
+ int
+ main ()
+ {
+-opendir ();
++return opendir ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' dir; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="none required"
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_opendir=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_opendir" = no; then
+- for ac_lib in dir; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char opendir ();
+-int
+-main ()
+-{
+-opendir ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="-l$ac_lib"
+-break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_opendir+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++done
++if test "${ac_cv_search_opendir+set}" = set; then
++ :
++else
++ ac_cv_search_opendir=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+-echo "${ECHO_T}$ac_cv_search_opendir" >&6
+-if test "$ac_cv_search_opendir" != no; then
+- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
++echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
++ac_res=$ac_cv_search_opendir
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+ else
+- echo "$as_me:$LINENO: checking for library containing opendir" >&5
+-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5
++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+ if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_opendir=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -9077,123 +9514,81 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char opendir ();
+ int
+ main ()
+ {
+-opendir ();
++return opendir ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' x; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="none required"
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_opendir=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_opendir" = no; then
+- for ac_lib in x; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char opendir ();
+-int
+-main ()
+-{
+-opendir ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_opendir="-l$ac_lib"
+-break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++fi
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_opendir+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++done
++if test "${ac_cv_search_opendir+set}" = set; then
++ :
++else
++ ac_cv_search_opendir=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+-echo "${ECHO_T}$ac_cv_search_opendir" >&6
+-if test "$ac_cv_search_opendir" != no; then
+- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
++echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
++ac_res=$ac_cv_search_opendir
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+ fi
+
+
+-echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5
+-echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5
++echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6; }
+ if test "${ld_cv_decl_getopt_unistd_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9213,39 +9608,35 @@ extern int getopt (int, char *const*, co
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ld_cv_decl_getopt_unistd_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ld_cv_decl_getopt_unistd_h=no
++ ld_cv_decl_getopt_unistd_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $ld_cv_decl_getopt_unistd_h" >&5
+-echo "${ECHO_T}$ld_cv_decl_getopt_unistd_h" >&6
++{ echo "$as_me:$LINENO: result: $ld_cv_decl_getopt_unistd_h" >&5
++echo "${ECHO_T}$ld_cv_decl_getopt_unistd_h" >&6; }
+ if test $ld_cv_decl_getopt_unistd_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -9264,8 +9655,8 @@ _ACEOF
+ ;;
+ esac
+
+-echo "$as_me:$LINENO: checking whether strstr is declared" >&5
+-echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether strstr is declared" >&5
++echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_strstr+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9280,7 +9671,7 @@ int
+ main ()
+ {
+ #ifndef strstr
+- char *p = (char *) strstr;
++ (void) strstr;
+ #endif
+
+ ;
+@@ -9288,38 +9679,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strstr=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_strstr=no
++ ac_cv_have_decl_strstr=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5
++echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6; }
+ if test $ac_cv_have_decl_strstr = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -9334,8 +9721,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether free is declared" >&5
+-echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether free is declared" >&5
++echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_free+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9350,7 +9737,7 @@ int
+ main ()
+ {
+ #ifndef free
+- char *p = (char *) free;
++ (void) free;
+ #endif
+
+ ;
+@@ -9358,38 +9745,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_free=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_free=no
++ ac_cv_have_decl_free=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_free" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5
++echo "${ECHO_T}$ac_cv_have_decl_free" >&6; }
+ if test $ac_cv_have_decl_free = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -9404,8 +9787,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether sbrk is declared" >&5
+-echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether sbrk is declared" >&5
++echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_sbrk+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9420,7 +9803,7 @@ int
+ main ()
+ {
+ #ifndef sbrk
+- char *p = (char *) sbrk;
++ (void) sbrk;
+ #endif
+
+ ;
+@@ -9428,38 +9811,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_sbrk=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_sbrk=no
++ ac_cv_have_decl_sbrk=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5
++echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6; }
+ if test $ac_cv_have_decl_sbrk = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -9474,8 +9853,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether getenv is declared" >&5
+-echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether getenv is declared" >&5
++echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_getenv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9490,7 +9869,7 @@ int
+ main ()
+ {
+ #ifndef getenv
+- char *p = (char *) getenv;
++ (void) getenv;
+ #endif
+
+ ;
+@@ -9498,38 +9877,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getenv=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_getenv=no
++ ac_cv_have_decl_getenv=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
++echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6; }
+ if test $ac_cv_have_decl_getenv = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -9544,8 +9919,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether environ is declared" >&5
+-echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether environ is declared" >&5
++echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_environ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9560,7 +9935,7 @@ int
+ main ()
+ {
+ #ifndef environ
+- char *p = (char *) environ;
++ (void) environ;
+ #endif
+
+ ;
+@@ -9568,38 +9943,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_environ=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_environ=no
++ ac_cv_have_decl_environ=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_environ" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5
++echo "${ECHO_T}$ac_cv_have_decl_environ" >&6; }
+ if test $ac_cv_have_decl_environ = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -9623,8 +9994,8 @@ fi
+ # broken Microsoft MSVC compiler, which limits the length of string
+ # constants, while still supporting pre-ANSI compilers which do not
+ # support string concatenation.
+-echo "$as_me:$LINENO: checking whether ANSI C string concatenation works" >&5
+-echo $ECHO_N "checking whether ANSI C string concatenation works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ANSI C string concatenation works" >&5
++echo $ECHO_N "checking whether ANSI C string concatenation works... $ECHO_C" >&6; }
+ if test "${ld_cv_string_concatenation+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -9644,39 +10015,35 @@ char *a = "a" "a";
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ld_cv_string_concatenation=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ld_cv_string_concatenation=no
++ ld_cv_string_concatenation=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+-echo "$as_me:$LINENO: result: $ld_cv_string_concatenation" >&5
+-echo "${ECHO_T}$ld_cv_string_concatenation" >&6
++{ echo "$as_me:$LINENO: result: $ld_cv_string_concatenation" >&5
++echo "${ECHO_T}$ld_cv_string_concatenation" >&6; }
+ if test "$ld_cv_string_concatenation" = "yes"; then
+ STRINGIFY=astring.sed
+ else
+@@ -9801,8 +10168,10 @@ fi
+
+
+
+- ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in"
+- ac_config_commands="$ac_config_commands default"
++ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in"
++
++ac_config_commands="$ac_config_commands default"
++
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -9821,39 +10190,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -9862,32 +10250,18 @@ test "x$prefix" = xNONE && prefix=$ac_de
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ ]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ ]*$//;
+-}'
+-fi
+-
+ DEFS=-DHAVE_CONFIG_H
+
+ ac_libobjs=
+ ac_ltlibobjs=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+- ac_i=`echo "$ac_i" |
+- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+- # 2. Add them.
+- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
++ ac_i=`echo "$ac_i" | sed "$ac_script"`
++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
++ # will be set to the directory where LIBOBJS objects are built.
++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+ done
+ LIBOBJS=$ac_libobjs
+
+@@ -9939,17 +10313,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -9959,8 +10361,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -9974,18 +10411,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -9993,159 +10431,120 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+-
+-
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
+-fi
++# CDPATH.
++$as_unset CDPATH
+
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
++ chmod +x "$as_me.lineno" ||
++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -10154,7 +10553,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -10163,31 +10583,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+ exec 6>&1
+
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
++# Save the log message, to keep $[0] and so on meaningful, and to
+ # report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling. Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
++# values after options handling.
++ac_log="
+ This file was extended by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -10195,30 +10598,20 @@ generated by GNU Autoconf 2.59. Invocat
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
++on `(hostname || uname -n) 2>/dev/null | sed 1q`
++"
++
+ _ACEOF
+
++cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_headers"; then
+- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_links"; then
+- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
++config_files="$ac_config_files"
++config_headers="$ac_config_headers"
++config_commands="$ac_config_commands"
+
+-if test -n "$ac_config_commands"; then
+- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
++_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-
+ ac_cs_usage="\
+ \`$as_me' instantiates files from templates according to the
+ current configuration.
+@@ -10226,7 +10619,7 @@ current configuration.
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number, then exit
++ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+@@ -10245,19 +10638,21 @@ Configuration commands:
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ config.status
+-configured by $0, generated by GNU Autoconf 2.59,
+- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.61,
++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 2006 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
++
++ac_pwd='$ac_pwd'
++srcdir='$srcdir'
++INSTALL='$INSTALL'
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -10268,39 +10663,24 @@ while test $# != 0
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "x$1" : 'x\([^=]*\)='`
+- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
++ ac_option=`expr "X$1" : 'X\([^=]*\)='`
++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+- -*)
++ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+- *) # This is not an option, so the user has probably given explicit
+- # arguments.
+- ac_option=$1
+- ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+- --version | --vers* | -V )
+- echo "$ac_cs_version"; exit 0 ;;
+- --he | --h)
+- # Conflict between --help and --header
+- { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; };;
+- --help | --hel | -h )
+- echo "$ac_cs_usage"; exit 0 ;;
+- --debug | --d* | -d )
++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
++ echo "$ac_cs_version"; exit ;;
++ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+@@ -10310,18 +10690,24 @@ Try \`$0 --help' for more information."
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
++ --he | --h)
++ # Conflict between --help and --header
++ { echo "$as_me: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&2
++ { (exit 1); exit 1; }; };;
++ --help | --hel | -h )
++ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
++ -*) { echo "$as_me: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+- *) ac_config_targets="$ac_config_targets $1" ;;
++ *) ac_config_targets="$ac_config_targets $1"
++ ac_need_defaults=false ;;
+
+ esac
+ shift
+@@ -10337,39 +10723,51 @@ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
++ CONFIG_SHELL=$SHELL
++ export CONFIG_SHELL
++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ fi
+
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++exec 5>>config.log
++{
++ echo
++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
++## Running $as_me. ##
++_ASBOX
++ echo "$ac_log"
++} >&5
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS section.
++# INIT-COMMANDS
+ #
+-
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+ _ACEOF
+
+-
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
++
++# Handling of arguments.
+ for ac_config_target in $ac_config_targets
+ do
+- case "$ac_config_target" in
+- # Handling of arguments.
+- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
+- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ case $ac_config_target in
++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
++
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+ echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ done
+
++
+ # If the user did not use the arguments to specify the items to instantiate,
+ # then the envvar interface is used. Set only those that are not.
+ # We use the long form for the default assignment because of an extremely
+@@ -10381,640 +10779,634 @@ if $ac_need_defaults; then
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
++# simply because there is no reason against having it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
++# Hook for its removal unless debugging.
++# Note that there is a small window in which the directory will not be cleaned:
++# after its creation but before its name has been assigned to `$tmp'.
+ $debug ||
+ {
+- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
++ tmp=
++ trap 'exit_status=$?
++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
++' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+ }
+-
+ # Create a (secure) tmp directory for tmp files.
+
+ {
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./confstat$$-$RANDOM
+- (umask 077 && mkdir $tmp)
++ tmp=./conf$$-$RANDOM
++ (umask 077 && mkdir "$tmp")
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+ #
+-# CONFIG_FILES section.
++# Set up the sed scripts for CONFIG_FILES section.
+ #
+
+ # No need to generate the scripts if there are no CONFIG_FILES.
+ # This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+- # Protect against being on the right side of a sed subst in config.status.
+- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@build@,$build,;t t
+-s,@build_cpu@,$build_cpu,;t t
+-s,@build_vendor@,$build_vendor,;t t
+-s,@build_os@,$build_os,;t t
+-s,@host@,$host,;t t
+-s,@host_cpu@,$host_cpu,;t t
+-s,@host_vendor@,$host_vendor,;t t
+-s,@host_os@,$host_os,;t t
+-s,@target@,$target,;t t
+-s,@target_cpu@,$target_cpu,;t t
+-s,@target_vendor@,$target_vendor,;t t
+-s,@target_os@,$target_os,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@CYGPATH_W@,$CYGPATH_W,;t t
+-s,@PACKAGE@,$PACKAGE,;t t
+-s,@VERSION@,$VERSION,;t t
+-s,@ACLOCAL@,$ACLOCAL,;t t
+-s,@AUTOCONF@,$AUTOCONF,;t t
+-s,@AUTOMAKE@,$AUTOMAKE,;t t
+-s,@AUTOHEADER@,$AUTOHEADER,;t t
+-s,@MAKEINFO@,$MAKEINFO,;t t
+-s,@install_sh@,$install_sh,;t t
+-s,@STRIP@,$STRIP,;t t
+-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+-s,@mkdir_p@,$mkdir_p,;t t
+-s,@AWK@,$AWK,;t t
+-s,@SET_MAKE@,$SET_MAKE,;t t
+-s,@am__leading_dot@,$am__leading_dot,;t t
+-s,@AMTAR@,$AMTAR,;t t
+-s,@am__tar@,$am__tar,;t t
+-s,@am__untar@,$am__untar,;t t
+-s,@DEPDIR@,$DEPDIR,;t t
+-s,@am__include@,$am__include,;t t
+-s,@am__quote@,$am__quote,;t t
+-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+-s,@CCDEPMODE@,$CCDEPMODE,;t t
+-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+-s,@LN_S@,$LN_S,;t t
+-s,@RANLIB@,$RANLIB,;t t
+-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+-s,@LIBTOOL@,$LIBTOOL,;t t
+-s,@use_sysroot@,$use_sysroot,;t t
+-s,@TARGET_SYSTEM_ROOT@,$TARGET_SYSTEM_ROOT,;t t
+-s,@TARGET_SYSTEM_ROOT_DEFINE@,$TARGET_SYSTEM_ROOT_DEFINE,;t t
+-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t
+-s,@NO_WERROR@,$NO_WERROR,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@ALLOCA@,$ALLOCA,;t t
+-s,@USE_NLS@,$USE_NLS,;t t
+-s,@MSGFMT@,$MSGFMT,;t t
+-s,@GMSGFMT@,$GMSGFMT,;t t
+-s,@XGETTEXT@,$XGETTEXT,;t t
+-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t
+-s,@CATALOGS@,$CATALOGS,;t t
+-s,@CATOBJEXT@,$CATOBJEXT,;t t
+-s,@DATADIRNAME@,$DATADIRNAME,;t t
+-s,@GMOFILES@,$GMOFILES,;t t
+-s,@INSTOBJEXT@,$INSTOBJEXT,;t t
+-s,@INTLDEPS@,$INTLDEPS,;t t
+-s,@INTLLIBS@,$INTLLIBS,;t t
+-s,@INTLOBJS@,$INTLOBJS,;t t
+-s,@POFILES@,$POFILES,;t t
+-s,@POSUB@,$POSUB,;t t
+-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t
+-s,@GT_NO@,$GT_NO,;t t
+-s,@GT_YES@,$GT_YES,;t t
+-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+-s,@l@,$l,;t t
+-s,@YACC@,$YACC,;t t
+-s,@LEX@,$LEX,;t t
+-s,@LEXLIB@,$LEXLIB,;t t
+-s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t
+-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+-s,@MAINT@,$MAINT,;t t
+-s,@HDEFINES@,$HDEFINES,;t t
+-s,@HOSTING_CRT0@,$HOSTING_CRT0,;t t
+-s,@HOSTING_LIBS@,$HOSTING_LIBS,;t t
+-s,@NATIVE_LIB_DIRS@,$NATIVE_LIB_DIRS,;t t
+-s,@STRINGIFY@,$STRINGIFY,;t t
+-s,@EMUL@,$EMUL,;t t
+-s,@EMULATION_OFILES@,$EMULATION_OFILES,;t t
+-s,@EMUL_EXTRA_OFILES@,$EMUL_EXTRA_OFILES,;t t
+-s,@LIB_PATH@,$LIB_PATH,;t t
+-s,@EMULATION_LIBPATH@,$EMULATION_LIBPATH,;t t
+-s,@TESTBFDLIB@,$TESTBFDLIB,;t t
+-s,@datarootdir@,$datarootdir,;t t
+-s,@docdir@,$docdir,;t t
+-s,@htmldir@,$htmldir,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-/@TDIRS@/r $TDIRS
+-s,@TDIRS@,,;t t
+-CEOF
+-
+-_ACEOF
+-
+- cat >>$CONFIG_STATUS <<\_ACEOF
+- # Split the substitutions into bite-sized pieces for seds with
+- # small command number limits, like on Digital OSF/1 and HP-UX.
+- ac_max_sed_lines=48
+- ac_sed_frag=1 # Number of current file.
+- ac_beg=1 # First line for current file.
+- ac_end=$ac_max_sed_lines # Line after last line for current file.
+- ac_more_lines=:
+- ac_sed_cmds=
+- while $ac_more_lines; do
+- if test $ac_beg -gt 1; then
+- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- else
+- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- fi
+- if test ! -s $tmp/subs.frag; then
+- ac_more_lines=false
+- else
+- # The purpose of the label and of the branching condition is to
+- # speed up the sed processing (if there are no `@' at all, there
+- # is no need to browse any of the substitutions).
+- # These are the two extra sed commands mentioned above.
+- (echo ':t
+- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+- else
+- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+- fi
+- ac_sed_frag=`expr $ac_sed_frag + 1`
+- ac_beg=$ac_end
+- ac_end=`expr $ac_end + $ac_max_sed_lines`
+- fi
+- done
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds=cat
++if test -n "$CONFIG_FILES"; then
++
++_ACEOF
++
++# Create sed commands to just substitute file output variables.
++
++# Remaining file output variables are in a fragment that also has non-file
++# output varibles.
++
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++SHELL!$SHELL$ac_delim
++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
++PACKAGE_NAME!$PACKAGE_NAME$ac_delim
++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
++PACKAGE_STRING!$PACKAGE_STRING$ac_delim
++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
++exec_prefix!$exec_prefix$ac_delim
++prefix!$prefix$ac_delim
++program_transform_name!$program_transform_name$ac_delim
++bindir!$bindir$ac_delim
++sbindir!$sbindir$ac_delim
++libexecdir!$libexecdir$ac_delim
++datarootdir!$datarootdir$ac_delim
++datadir!$datadir$ac_delim
++sysconfdir!$sysconfdir$ac_delim
++sharedstatedir!$sharedstatedir$ac_delim
++localstatedir!$localstatedir$ac_delim
++includedir!$includedir$ac_delim
++oldincludedir!$oldincludedir$ac_delim
++docdir!$docdir$ac_delim
++infodir!$infodir$ac_delim
++htmldir!$htmldir$ac_delim
++dvidir!$dvidir$ac_delim
++pdfdir!$pdfdir$ac_delim
++psdir!$psdir$ac_delim
++libdir!$libdir$ac_delim
++localedir!$localedir$ac_delim
++mandir!$mandir$ac_delim
++DEFS!$DEFS$ac_delim
++ECHO_C!$ECHO_C$ac_delim
++ECHO_N!$ECHO_N$ac_delim
++ECHO_T!$ECHO_T$ac_delim
++LIBS!$LIBS$ac_delim
++build_alias!$build_alias$ac_delim
++host_alias!$host_alias$ac_delim
++target_alias!$target_alias$ac_delim
++build!$build$ac_delim
++build_cpu!$build_cpu$ac_delim
++build_vendor!$build_vendor$ac_delim
++build_os!$build_os$ac_delim
++host!$host$ac_delim
++host_cpu!$host_cpu$ac_delim
++host_vendor!$host_vendor$ac_delim
++host_os!$host_os$ac_delim
++target!$target$ac_delim
++target_cpu!$target_cpu$ac_delim
++target_vendor!$target_vendor$ac_delim
++target_os!$target_os$ac_delim
++CC!$CC$ac_delim
++CFLAGS!$CFLAGS$ac_delim
++LDFLAGS!$LDFLAGS$ac_delim
++CPPFLAGS!$CPPFLAGS$ac_delim
++ac_ct_CC!$ac_ct_CC$ac_delim
++EXEEXT!$EXEEXT$ac_delim
++OBJEXT!$OBJEXT$ac_delim
++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
++INSTALL_DATA!$INSTALL_DATA$ac_delim
++CYGPATH_W!$CYGPATH_W$ac_delim
++PACKAGE!$PACKAGE$ac_delim
++VERSION!$VERSION$ac_delim
++ACLOCAL!$ACLOCAL$ac_delim
++AUTOCONF!$AUTOCONF$ac_delim
++AUTOMAKE!$AUTOMAKE$ac_delim
++AUTOHEADER!$AUTOHEADER$ac_delim
++MAKEINFO!$MAKEINFO$ac_delim
++install_sh!$install_sh$ac_delim
++STRIP!$STRIP$ac_delim
++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
++mkdir_p!$mkdir_p$ac_delim
++AWK!$AWK$ac_delim
++SET_MAKE!$SET_MAKE$ac_delim
++am__leading_dot!$am__leading_dot$ac_delim
++AMTAR!$AMTAR$ac_delim
++am__tar!$am__tar$ac_delim
++am__untar!$am__untar$ac_delim
++DEPDIR!$DEPDIR$ac_delim
++am__include!$am__include$ac_delim
++am__quote!$am__quote$ac_delim
++AMDEP_TRUE!$AMDEP_TRUE$ac_delim
++AMDEP_FALSE!$AMDEP_FALSE$ac_delim
++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
++CCDEPMODE!$CCDEPMODE$ac_delim
++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
++LN_S!$LN_S$ac_delim
++RANLIB!$RANLIB$ac_delim
++LIBTOOL!$LIBTOOL$ac_delim
++use_sysroot!$use_sysroot$ac_delim
++TARGET_SYSTEM_ROOT!$TARGET_SYSTEM_ROOT$ac_delim
++TARGET_SYSTEM_ROOT_DEFINE!$TARGET_SYSTEM_ROOT_DEFINE$ac_delim
++WARN_CFLAGS!$WARN_CFLAGS$ac_delim
++NO_WERROR!$NO_WERROR$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 94; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+-fi # test -n "$CONFIG_FILES"
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
++
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
++/^[ ]*@TDIRS@[ ]*$/{
++r $TDIRS
++d
++}
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++CEOF$ac_eof
++_ACEOF
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++CPP!$CPP$ac_delim
++GREP!$GREP$ac_delim
++EGREP!$EGREP$ac_delim
++ALLOCA!$ALLOCA$ac_delim
++USE_NLS!$USE_NLS$ac_delim
++MSGFMT!$MSGFMT$ac_delim
++GMSGFMT!$GMSGFMT$ac_delim
++XGETTEXT!$XGETTEXT$ac_delim
++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim
++CATALOGS!$CATALOGS$ac_delim
++CATOBJEXT!$CATOBJEXT$ac_delim
++DATADIRNAME!$DATADIRNAME$ac_delim
++GMOFILES!$GMOFILES$ac_delim
++INSTOBJEXT!$INSTOBJEXT$ac_delim
++INTLDEPS!$INTLDEPS$ac_delim
++INTLLIBS!$INTLLIBS$ac_delim
++INTLOBJS!$INTLOBJS$ac_delim
++POFILES!$POFILES$ac_delim
++POSUB!$POSUB$ac_delim
++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim
++GT_NO!$GT_NO$ac_delim
++GT_YES!$GT_YES$ac_delim
++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim
++l!$l$ac_delim
++YACC!$YACC$ac_delim
++YFLAGS!$YFLAGS$ac_delim
++LEX!$LEX$ac_delim
++LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim
++LEXLIB!$LEXLIB$ac_delim
++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
++MAINT!$MAINT$ac_delim
++HDEFINES!$HDEFINES$ac_delim
++HOSTING_CRT0!$HOSTING_CRT0$ac_delim
++HOSTING_LIBS!$HOSTING_LIBS$ac_delim
++NATIVE_LIB_DIRS!$NATIVE_LIB_DIRS$ac_delim
++STRINGIFY!$STRINGIFY$ac_delim
++EMUL!$EMUL$ac_delim
++EMULATION_OFILES!$EMULATION_OFILES$ac_delim
++EMUL_EXTRA_OFILES!$EMUL_EXTRA_OFILES$ac_delim
++LIB_PATH!$LIB_PATH$ac_delim
++EMULATION_LIBPATH!$EMULATION_LIBPATH$ac_delim
++TESTBFDLIB!$TESTBFDLIB$ac_delim
++LIBOBJS!$LIBOBJS$ac_delim
++LTLIBOBJS!$LTLIBOBJS$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 45; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
++ fi
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
+
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++:end
++s/|#_!!_#|//g
++CEOF$ac_eof
+ _ACEOF
++
++
++# VPATH may cause trouble with some makes, so we remove $(srcdir),
++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
++# trailing colons and then remove the whole line if VPATH becomes empty
++# (actually we leave an empty line to preserve line numbers).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/
++s/:*\${srcdir}:*/:/
++s/:*@srcdir@:*/:/
++s/^\([^=]*=[ ]*\):*/\1/
++s/:*$//
++s/^[^=]*=[ ]*$//
++}'
++fi
++
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+- case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++fi # test -n "$CONFIG_FILES"
++
++
++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
++do
++ case $ac_tag in
++ :[FHLC]) ac_mode=$ac_tag; continue;;
++ esac
++ case $ac_mode$ac_tag in
++ :[FHL]*:*);;
++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
++echo "$as_me: error: Invalid tag $ac_tag." >&2;}
++ { (exit 1); exit 1; }; };;
++ :[FH]-) ac_tag=-:-;;
++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
++ esac
++ ac_save_IFS=$IFS
++ IFS=:
++ set x $ac_tag
++ IFS=$ac_save_IFS
++ shift
++ ac_file=$1
++ shift
++
++ case $ac_mode in
++ :L) ac_source=$1;;
++ :[FH])
++ ac_file_inputs=
++ for ac_f
++ do
++ case $ac_f in
++ -) ac_f="$tmp/stdin";;
++ *) # Look for the file first in the build tree, then in the source tree
++ # (if the path is not absolute). The absolute path cannot be DOS-style,
++ # because $ac_f cannot contain `:'.
++ test -f "$ac_f" ||
++ case $ac_f in
++ [\\/$]*) false;;
++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
++ esac ||
++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
++echo "$as_me: error: cannot find input file: $ac_f" >&2;}
++ { (exit 1); exit 1; }; };;
++ esac
++ ac_file_inputs="$ac_file_inputs $ac_f"
++ done
++
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ configure_input="Generated from "`IFS=:
++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
++ if test x"$ac_file" != x-; then
++ configure_input="$ac_file. $configure_input"
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ fi
++
++ case $ac_tag in
++ *:-:* | *:-) cat >"$tmp/stdin";;
++ esac
++ ;;
+ esac
+
+- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++ ac_dir=`$as_dirname -- "$ac_file" ||
+ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir="$ac_dir"
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+
++ case $ac_mode in
++ :F)
++ #
++ # CONFIG_FILE
++ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
++_ACEOF
+
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- configure_input=
+- else
+- configure_input="$ac_file. "
+- fi
+- configure_input=$configure_input"Generated from `echo $ac_file_in |
+- sed 's,.*/,,'` by configure."
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
++cat >>$CONFIG_STATUS <<\_ACEOF
++# If the template does not know about datarootdir, expand it.
++# FIXME: This hack should be removed a few years after 2.60.
++ac_datarootdir_hack=; ac_datarootdir_seen=
++
++case `sed -n '/datarootdir/ {
++ p
++ q
++}
++/@datadir@/p
++/@docdir@/p
++/@infodir@/p
++/@localedir@/p
++/@mandir@/p
++' $ac_file_inputs` in
++*datarootdir*) ac_datarootdir_seen=yes;;
++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
++ ac_datarootdir_hack='
++ s&@datadir@&$datadir&g
++ s&@docdir@&$docdir&g
++ s&@infodir@&$infodir&g
++ s&@localedir@&$localedir&g
++ s&@mandir@&$mandir&g
++ s&\\\${datarootdir}&$datarootdir&g' ;;
++esac
++_ACEOF
++
++# Neutralize VPATH when `$srcdir' = `.'.
++# Shell code in configure.ac might set extrasub.
++# FIXME: do we really want to maintain this feature?
++cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+- rm -f $tmp/stdin
+- if test x"$ac_file" != x-; then
+- mv $tmp/out $ac_file
+- else
+- cat $tmp/out
+- rm -f $tmp/out
+- fi
+-
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_HEADER section.
+-#
+-
+-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+-# NAME is the cpp macro being defined and VALUE is the value it is being given.
+-#
+-# ac_d sets the value in "#define NAME VALUE" lines.
+-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+-ac_dB='[ ].*$,\1#\2'
+-ac_dC=' '
+-ac_dD=',;t'
+-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+-ac_uB='$,\1#\2define\3'
+-ac_uC=' '
+-ac_uD=',;t'
++s&@configure_input@&$configure_input&;t t
++s&@top_builddir@&$ac_top_builddir_sub&;t t
++s&@srcdir@&$ac_srcdir&;t t
++s&@abs_srcdir@&$ac_abs_srcdir&;t t
++s&@top_srcdir@&$ac_top_srcdir&;t t
++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
++s&@builddir@&$ac_builddir&;t t
++s&@abs_builddir@&$ac_abs_builddir&;t t
++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
++s&@INSTALL@&$ac_INSTALL&;t t
++$ac_datarootdir_hack
++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
++
++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&5
++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&2;}
+
+-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ rm -f "$tmp/stdin"
+ case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++ -) cat "$tmp/out"; rm -f "$tmp/out";;
++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
++ ;;
++ :H)
++ #
++ # CONFIG_HEADER
++ #
++_ACEOF
++
++# Transform confdefs.h into a sed script `conftest.defines', that
++# substitutes the proper values into config.h.in to produce config.h.
++rm -f conftest.defines conftest.tail
++# First, append a space to every undef/define line, to ease matching.
++echo 's/$/ /' >conftest.defines
++# Then, protect against being on the right side of a sed subst, or in
++# an unquoted here document, in config.status. If some macros were
++# called several times there might be several #defines for the same
++# symbol, which is useless. But do not sort them, since the last
++# AC_DEFINE must be honored.
++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
++# NAME is the cpp macro being defined, VALUE is the value it is being given.
++# PARAMS is the parameter list in the macro definition--in most cases, it's
++# just an empty string.
++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
++ac_dB='\\)[ (].*,\\1define\\2'
++ac_dC=' '
++ac_dD=' ,'
+
+- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- # Do quote $f, to prevent DOS paths from being IFS'd.
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+- # Remove the trailing spaces.
+- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+-
+-_ACEOF
+-
+-# Transform confdefs.h into two sed scripts, `conftest.defines' and
+-# `conftest.undefs', that substitutes the proper values into
+-# config.h.in to produce config.h. The first handles `#define'
+-# templates, and the second `#undef' templates.
+-# And first: Protect against being on the right side of a sed subst in
+-# config.status. Protect against being in an unquoted here document
+-# in config.status.
+-rm -f conftest.defines conftest.undefs
+-# Using a here document instead of a string reduces the quoting nightmare.
+-# Putting comments in sed scripts is not portable.
+-#
+-# `end' is used to avoid that the second main sed command (meant for
+-# 0-ary CPP macros) applies to n-ary macro definitions.
+-# See the Autoconf documentation for `clear'.
+-cat >confdef2sed.sed <<\_ACEOF
+-s/[\\&,]/\\&/g
+-s,[\\$`],\\&,g
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+-t end
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+-: end
+-_ACEOF
+-# If some macros were called several times there might be several times
+-# the same #defines, which is useless. Nevertheless, we may not want to
+-# sort them, since we want the *last* AC-DEFINE to be honored.
+-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+-rm -f confdef2sed.sed
++uniq confdefs.h |
++ sed -n '
++ t rset
++ :rset
++ s/^[ ]*#[ ]*define[ ][ ]*//
++ t ok
++ d
++ :ok
++ s/[\\&,]/\\&/g
++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
++ ' >>conftest.defines
+
+-# This sed command replaces #undef with comments. This is necessary, for
++# Remove the space that was appended to ease matching.
++# Then replace #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-cat >>conftest.undefs <<\_ACEOF
+-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++# (The regexp can be short, since the line contains either #define or #undef.)
++echo 's/ $//
++s,^[ #]*u.*,/* & */,' >>conftest.defines
++
++# Break up conftest.defines:
++ac_max_sed_lines=50
++
++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
++# et cetera.
++ac_in='$ac_file_inputs'
++ac_out='"$tmp/out1"'
++ac_nxt='"$tmp/out2"'
++
++while :
++do
++ # Write a here document:
++ cat >>$CONFIG_STATUS <<_ACEOF
++ # First, check the format of the line:
++ cat >"\$tmp/defines.sed" <<\\CEOF
++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
++b
++:def
+ _ACEOF
+-
+-# Break up conftest.defines because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+-echo ' :' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.defines >/dev/null
+-do
+- # Write a limited-size here document to $tmp/defines.sed.
+- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#define' lines.
+- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f $tmp/defines.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
++ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines
+-echo ' fi # grep' >>$CONFIG_STATUS
+-echo >>$CONFIG_STATUS
+-
+-# Break up conftest.undefs because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.undefs >/dev/null
+-do
+- # Write a limited-size here document to $tmp/undefs.sed.
+- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#undef'
+- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+- echo 'CEOF
+- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+- rm -f conftest.undefs
+- mv conftest.tail conftest.undefs
+-done
+-rm -f conftest.undefs
++rm -f conftest.defines conftest.tail
+
++echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- echo "/* Generated by configure. */" >$tmp/config.h
+- else
+- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+- fi
+- cat $tmp/in >>$tmp/config.h
+- rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ echo "/* $configure_input */" >"$tmp/config.h"
++ cat "$ac_result" >>"$tmp/config.h"
++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_file" : 'X\(//\)[^/]' \| \
+- X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+ rm -f $ac_file
+- mv $tmp/config.h $ac_file
++ mv "$tmp/config.h" $ac_file
+ fi
+ else
+- cat $tmp/config.h
+- rm -f $tmp/config.h
++ echo "/* $configure_input */"
++ cat "$ac_result"
+ fi
++ rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -11025,135 +11417,39 @@ for _am_header in $config_headers :; do
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
+ $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+- X$ac_file : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
+ echo X$ac_file |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`/stamp-h$_am_stamp_count
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_COMMANDS section.
+-#
+-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_dest" : 'X\(//\)[^/]' \| \
+- X"$ac_dest" : 'X\(//\)$' \| \
+- X"$ac_dest" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_dest" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+- ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+- .) # No --srcdir option. We are building in place.
+- ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
+- ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++ ;;
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
++echo "$as_me: executing $ac_file commands" >&6;}
++ ;;
++ esac
+
+
+- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+-echo "$as_me: executing $ac_dest commands" >&6;}
+- case $ac_dest in
+- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ case $ac_file$ac_mode in
++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -11163,18 +11459,29 @@ echo "$as_me: executing $ac_dest command
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`(dirname "$mf") 2>/dev/null ||
++ dirpart=`$as_dirname -- "$mf" ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -11196,54 +11503,80 @@ echo X"$mf" |
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`(dirname "$file") 2>/dev/null ||
++ fdir=`$as_dirname -- "$file" ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p $dirpart/$fdir
+- else
+- as_dir=$dirpart/$fdir
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir=$dirpart/$fdir
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
+- default ) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;;
++ "default":C) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;;
++
+ esac
+-done
+-_ACEOF
++done # for ac_tag
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+diff -Nrup binutils-2.17/ld/configure.tgt binutils-2.17.atmel.1.3.0/ld/configure.tgt
+--- binutils-2.17/ld/configure.tgt 2006-04-05 14:41:57.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/configure.tgt 2007-05-31 17:03:35.000000000 +0200
+@@ -81,8 +81,10 @@ xscale-*-coff) targ_emul=armcoff ;;
+ xscale-*-elf) targ_emul=armelf
+ ;;
+ avr-*-*) targ_emul=avr2
+- targ_extra_emuls="avr1 avr3 avr4 avr5"
+- ;;
++ targ_extra_emuls="avr1 avr3 avr4 avr5" ;;
++avr32-*-none) targ_emul=avr32elf_ap7000
++ targ_extra_emuls="avr32elf_uc3a0128 avr32elf_uc3a0256 avr32elf_uc3a0512 avr32elf_uc3a1128 avr32elf_uc3a1256 avr32elf_uc3a1512 avr32elf_uc3b064 avr32elf_uc3b0128 avr32elf_uc3b0256 avr32elf_uc3b164 avr32elf_uc3b1128 avr32elf_uc3b1256" ;;
++avr32-*-linux*) targ_emul=avr32linux ;;
+ bfin-*-elf) targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;;
+ bfin-*-uclinux*) targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;;
+ cr16c-*-elf*) targ_emul=elf32cr16c
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_ap7000.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_ap7000.sh
+--- binutils-2.17/ld/emulparams/avr32elf_ap7000.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_ap7000.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,35 @@
++MACHINE=ap
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0xa0000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH
++ . = . & 0x9fffffff;"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 0x4000000
++ SRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 0x8000
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="SRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(SRAM) + LENGTH(SRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf.sh
+--- binutils-2.17/ld/emulparams/avr32elf.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,25 @@
++MACHINE=
++SCRIPT_NAME=elf
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++TEXT_START_ADDR=0xa0000000
++ARCH=avr32
++MAXPAGESIZE=0x4
++ENTRY=_start
++EMBEDDED=yes
++NOP=0xd703d703
++INITIAL_READONLY_SECTIONS=".reset : AT(0x0) { *(.reset) }
++ . = . & 0x9fffffff;"
++DATA_START_SYMBOLS="__data_init_start__ = .;
++ __data_init_end__ = .;
++ __data_start__ = .;"
++
++OTHER_BSS_SYMBOLS='__bss_start__ = .;'
++OTHER_BSS_END_SYMBOLS="_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
++ . = ALIGN(16);
++ __heap_start__ = .;
++ __heap_end__ = 0x82000000;"
++
++STACK_ADDR=0x82000000
++
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a0128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0128.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3a0128.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0128.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,40 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
++
+\ No newline at end of file
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a0256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0256.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3a0256.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0256.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0512.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0512.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x80000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a1128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1128.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3a1128.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1128.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a1256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1256.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3a1256.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1256.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a1512.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1512.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3a1512.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1512.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x80000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b0128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0128.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3b0128.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0128.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b0256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0256.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3b0256.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0256.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,40 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
++
+\ No newline at end of file
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b064.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b064.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3b064.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b064.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x10000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x4000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b1128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1128.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3b1128.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1128.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b1256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1256.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3b1256.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1256.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,39 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
+diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b164.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b164.sh
+--- binutils-2.17/ld/emulparams/avr32elf_uc3b164.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b164.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,40 @@
++MACHINE=uc
++SCRIPT_NAME=elf_xip
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++ARCH=avr32
++MAXPAGESIZE=4096
++ENTRY=_start
++EMBEDDED=yes
++NO_SMALL_DATA=yes
++NOP=0xd703d703
++
++TEXT_START_ADDR=0x80000000
++DATA_SEGMENT_ALIGN=8
++BSS_ALIGNMENT=8
++
++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
++
++MEMORY="MEMORY
++ {
++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x10000
++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x4000
++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200
++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200
++ }"
++RO_LMA_REGION="FLASH"
++RO_VMA_REGION="FLASH"
++RW_LMA_REGION="FLASH"
++RW_VMA_REGION="INTRAM"
++
++STACK_SIZE=0x1000
++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}"
++
++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
++ . = ${STACK_ADDR};
++ __heap_end__ = .;"
++
++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
++
+\ No newline at end of file
+diff -Nrup binutils-2.17/ld/emulparams/avr32linux.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32linux.sh
+--- binutils-2.17/ld/emulparams/avr32linux.sh 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32linux.sh 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,14 @@
++ARCH=avr32
++SCRIPT_NAME=elf
++TEMPLATE_NAME=elf32
++EXTRA_EM_FILE=avr32elf
++OUTPUT_FORMAT="elf32-avr32"
++GENERATE_SHLIB_SCRIPT=yes
++MAXPAGESIZE=0x1000
++TEXT_START_ADDR=0x00001000
++NOP=0xd703d703
++
++# This appears to place the GOT before the data section, which is
++# essential for uClinux. We don't use those .s* sections on AVR32
++# anyway, so it shouldn't hurt for regular Linux either...
++NO_SMALL_DATA=yes
+diff -Nrup binutils-2.17/ld/emultempl/avr32elf.em binutils-2.17.atmel.1.3.0/ld/emultempl/avr32elf.em
+--- binutils-2.17/ld/emultempl/avr32elf.em 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/emultempl/avr32elf.em 2007-09-28 10:30:44.000000000 +0200
+@@ -0,0 +1,72 @@
++# This shell script emits a C file. -*- C -*-
++# Copyright (C) 2007 Atmel Corporation
++#
++# This file is part of GLD, the Gnu Linker.
++#
++# 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 Street - Fifth Floor, Boston, MA 02110-1301, USA.
++#
++
++# This file is sourced from elf32.em, and defines extra avr32-elf
++# specific routines.
++#
++
++cat >> e${EMULATION_NAME}.c <<EOF
++
++#include "libbfd.h"
++#include "elf32-avr32.h"
++
++/* Whether to allow direct references (sub or mov) to SEC_DATA and
++ !SEC_CONTENTS sections when optimizing. Not enabled by default
++ since it might cause link errors. */
++static int direct_data_refs = 0;
++
++static void avr32_elf_after_open (void)
++{
++ bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
++ gld${EMULATION_NAME}_after_open ();
++}
++
++EOF
++
++# Define some shell vars to insert bits of code into the standard elf
++# parse_args and list_options functions.
++#
++PARSE_AND_LIST_PROLOGUE='
++#define OPTION_DIRECT_DATA 300
++#define OPTION_NO_DIRECT_DATA 301
++'
++
++PARSE_AND_LIST_LONGOPTS='
++ { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
++ { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
++'
++
++PARSE_AND_LIST_OPTIONS='
++ fprintf (file, _(" --direct-data\t\tAllow direct data references when optimizing\n"));
++ fprintf (file, _(" --no-direct-data\tDo not allow direct data references when optimizing\n"));
++'
++
++PARSE_AND_LIST_ARGS_CASES='
++ case OPTION_DIRECT_DATA:
++ direct_data_refs = 1;
++ break;
++ case OPTION_NO_DIRECT_DATA:
++ direct_data_refs = 0;
++ break;
++'
++
++# Replace some of the standard ELF functions with our own versions.
++#
++LDEMUL_AFTER_OPEN=avr32_elf_after_open
+diff -Nrup binutils-2.17/ld/ld.info binutils-2.17.atmel.1.3.0/ld/ld.info
+--- binutils-2.17/ld/ld.info 2006-06-23 20:19:51.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/ld.info 2007-09-28 10:30:45.000000000 +0200
+@@ -1,5 +1,7 @@
+-This is .././ld/ld.info, produced by makeinfo version 4.8 from
+-.././ld/ld.texinfo.
++This is
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/ld/ld.info,
++produced by makeinfo version 4.8 from
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/ld/ld.texinfo.
+
+ START-INFO-DIR-ENTRY
+ * Ld: (ld). The GNU linker.
+@@ -4192,6 +4194,8 @@ not listed.
+
+ * ARM:: `ld' and the ARM family
+
++* AVR32:: `ld' and AVR32 processors
++
+ * HPPA ELF32:: `ld' and HPPA 32-bit ELF
+
+ * MMIX:: `ld' and MMIX
+@@ -4285,7 +4289,7 @@ target subroutine is a leaf routine (tha
+ not itself call any subroutines).
+
+ 
+-File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
+++File: ld.info, Node: ARM, Next: AVR32, Prev: i960, Up: Machine Dependent
+
+ 4.3 `ld' and the ARM family
+ ===========================
+@@ -4351,9 +4355,33 @@ entry. This should lead to such calls ex
+ to specify it if you are using that target.
+
+ 
+-File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
++File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent
++
++4.4 `ld' and AVR32 processors
++=============================
++
++`--direct-data'
++
++`--no-direct-data'
++ Taking the address of a symbol can often be done by using a direct
++ `mov' or pc-relative `sub' instruction, which is faster than using
++ a PC- or GOT-relative load, especially on the uC3 processors.
++ However, this does not always work when dealing with symbols in
++ the `.data' section so this optimization is disabled by default.
++
++ Specifying `--direct-data' will enable this optimization. Note
++ that this may cause `relocation truncated to fit' errors for
++ certain large programs. If this happens, the optimization can be
++ turned off by specifying `--no-direct-data'.
++
++ All known issues with direct data optimizations are detected at
++ link time, so if the linker doesn't complain, the result should
++ run just fine.
++
++
++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent
+
+-4.4 `ld' and HPPA 32-bit ELF Support
++4.5 `ld' and HPPA 32-bit ELF Support
+ ====================================
+
+ When generating a shared library, `ld' will by default generate import
+@@ -4384,7 +4412,7 @@ large, it may not be possible for a bran
+ 
+ File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent
+
+-4.5 `ld' and MMIX
++4.6 `ld' and MMIX
+ =================
+
+ For MMIX, there is a choice of generating `ELF' object files or `mmo'
+@@ -4412,7 +4440,7 @@ section, are left out from an mmo file.
+ 
+ File: ld.info, Node: MSP430, Next: PowerPC ELF32, Prev: MMIX, Up: Machine Dependent
+
+-4.6 `ld' and MSP430
++4.7 `ld' and MSP430
+ ===================
+
+ For the MSP430 it is possible to select the MPU architecture. The flag
+@@ -4446,7 +4474,7 @@ specific:
+ 
+ File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent
+
+-4.7 `ld' and PowerPC 32-bit ELF Support
++4.8 `ld' and PowerPC 32-bit ELF Support
+ =======================================
+
+ Branches on PowerPC processors are limited to a signed 26-bit
+@@ -4577,7 +4605,7 @@ File: ld.info, Node: PowerPC64 ELF64,
+ 
+ File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent
+
+-4.9 `ld''s Support for Various TI COFF Versions
++4.10 `ld''s Support for Various TI COFF Versions
+ ===============================================
+
+ The `--format' switch allows selection of one of the various TI COFF
+@@ -4589,7 +4617,7 @@ depends on the default specified by the
+ 
+ File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent
+
+-4.10 `ld' and WIN32 (cygwin/mingw)
++4.11 `ld' and WIN32 (cygwin/mingw)
+ ==================================
+
+ This section describes some of the win32 specific `ld' issues. See
+@@ -4986,7 +5014,7 @@ _weak externals_
+ 
+ File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent
+
+-4.11 `ld' and Xtensa Processors
++4.12 `ld' and Xtensa Processors
+ ===============================
+
+ The default `ld' behavior for Xtensa processors is to interpret
+@@ -5954,6 +5982,7 @@ Index
+ * --default-symver: Options. (line 849)
+ * --defsym SYMBOL=EXP: Options. (line 739)
+ * --demangle[=STYLE]: Options. (line 752)
++* --direct-data: AVR32. (line 6)
+ * --disable-auto-image-base: Options. (line 1495)
+ * --disable-auto-import: Options. (line 1624)
+ * --disable-new-dtags: Options. (line 1295)
+@@ -6016,6 +6045,7 @@ Index
+ * --no-check-sections: Options. (line 701)
+ * --no-define-common: Options. (line 723)
+ * --no-demangle: Options. (line 752)
++* --no-direct-data: AVR32. (line 6)
+ * --no-dotsyms: PowerPC64 ELF64. (line 33)
+ * --no-gc-sections: Options. (line 784)
+ * --no-keep-memory: Options. (line 804)
+@@ -6200,6 +6230,7 @@ Index
+ * AT(LMA): Output Section LMA. (line 6)
+ * AT>LMA_REGION: Output Section LMA. (line 6)
+ * automatic data imports: WIN32. (line 170)
++* AVR32 options: AVR32. (line 6)
+ * back end: BFD. (line 6)
+ * BASE (MRI): MRI. (line 54)
+ * BE8: ARM. (line 23)
+@@ -6611,81 +6642,161 @@ Index
+
+ 
+ Tag Table:
+-Node: Top347
+-Node: Overview1109
+-Node: Invocation2223
+-Node: Options2631
+-Node: Environment77286
+-Node: Scripts79046
+-Node: Basic Script Concepts80780
+-Node: Script Format83487
+-Node: Simple Example84350
+-Node: Simple Commands87446
+-Node: Entry Point87897
+-Node: File Commands88656
+-Node: Format Commands92522
+-Node: Miscellaneous Commands94488
+-Node: Assignments96718
+-Node: Simple Assignments97209
+-Node: PROVIDE98945
+-Node: PROVIDE_HIDDEN100150
+-Node: Source Code Reference100394
+-Node: SECTIONS103974
+-Node: Output Section Description105865
+-Node: Output Section Name106918
+-Node: Output Section Address107794
+-Node: Input Section109443
+-Node: Input Section Basics110244
+-Node: Input Section Wildcards112596
+-Node: Input Section Common117329
+-Node: Input Section Keep118811
+-Node: Input Section Example119301
+-Node: Output Section Data120269
+-Node: Output Section Keywords123046
+-Node: Output Section Discarding126615
+-Node: Output Section Attributes127571
+-Node: Output Section Type128575
+-Node: Output Section LMA129729
+-Node: Forced Output Alignment132000
+-Node: Forced Input Alignment132268
+-Node: Output Section Region132653
+-Node: Output Section Phdr133083
+-Node: Output Section Fill133747
+-Node: Overlay Description134889
+-Node: MEMORY139137
+-Node: PHDRS143337
+-Node: VERSION148376
+-Node: Expressions156167
+-Node: Constants157045
+-Node: Symbols157606
+-Node: Orphan Sections158344
+-Node: Location Counter159107
+-Node: Operators163411
+-Node: Evaluation164333
+-Node: Expression Section165697
+-Node: Builtin Functions167186
+-Node: Implicit Linker Scripts174678
+-Node: Machine Dependent175453
+-Node: H8/300176314
+-Node: i960177939
+-Node: ARM179624
+-Node: HPPA ELF32182540
+-Node: MMIX184163
+-Node: MSP430185380
+-Node: PowerPC ELF32186428
+-Node: PowerPC64 ELF64188719
+-Node: TI COFF193133
+-Node: WIN32193665
+-Node: Xtensa211739
+-Node: BFD214861
+-Node: BFD outline216316
+-Node: BFD information loss217602
+-Node: Canonical format220119
+-Node: Reporting Bugs224476
+-Node: Bug Criteria225170
+-Node: Bug Reporting225869
+-Node: MRI232894
+-Node: GNU Free Documentation License237537
+-Node: Index257251
++<<<<<<< .mine
++Node: Top487
++Node: Overview1249
++Node: Invocation2363
++Node: Options2771
++Node: Environment77426
++Node: Scripts79186
++Node: Basic Script Concepts80920
++Node: Script Format83627
++Node: Simple Example84490
++Node: Simple Commands87586
++Node: Entry Point88037
++Node: File Commands88796
++Node: Format Commands92662
++Node: Miscellaneous Commands94628
++Node: Assignments96858
++Node: Simple Assignments97349
++Node: PROVIDE99085
++Node: PROVIDE_HIDDEN100290
++Node: Source Code Reference100534
++Node: SECTIONS104114
++Node: Output Section Description106005
++Node: Output Section Name107058
++Node: Output Section Address107934
++Node: Input Section109583
++Node: Input Section Basics110384
++Node: Input Section Wildcards112736
++Node: Input Section Common117469
++Node: Input Section Keep118951
++Node: Input Section Example119441
++Node: Output Section Data120409
++Node: Output Section Keywords123186
++Node: Output Section Discarding126755
++Node: Output Section Attributes127711
++Node: Output Section Type128715
++Node: Output Section LMA129869
++Node: Forced Output Alignment132140
++Node: Forced Input Alignment132408
++Node: Output Section Region132793
++Node: Output Section Phdr133223
++Node: Output Section Fill133887
++Node: Overlay Description135029
++Node: MEMORY139277
++Node: PHDRS143477
++Node: VERSION148516
++Node: Expressions156307
++Node: Constants157185
++Node: Symbols157746
++Node: Orphan Sections158484
++Node: Location Counter159247
++Node: Operators163551
++Node: Evaluation164473
++Node: Expression Section165837
++Node: Builtin Functions167326
++Node: Implicit Linker Scripts174818
++Node: Machine Dependent175593
++Node: H8/300176454
++Node: i960178079
++Node: ARM179764
++Node: HPPA ELF32182680
++Node: MMIX184303
++Node: MSP430185520
++Node: PowerPC ELF32186568
++Node: PowerPC64 ELF64188859
++Node: TI COFF193273
++Node: WIN32193805
++Node: Xtensa211879
++Node: BFD215001
++Node: BFD outline216456
++Node: BFD information loss217742
++Node: Canonical format220259
++Node: Reporting Bugs224616
++Node: Bug Criteria225310
++Node: Bug Reporting226009
++Node: MRI233034
++Node: GNU Free Documentation License237677
++Node: Index257391
++=======
++Node: Top331
++Node: Overview1093
++Node: Invocation2207
++Node: Options2615
++Node: Environment77270
++Node: Scripts79030
++Node: Basic Script Concepts80764
++Node: Script Format83471
++Node: Simple Example84334
++Node: Simple Commands87430
++Node: Entry Point87881
++Node: File Commands88640
++Node: Format Commands92506
++Node: Miscellaneous Commands94472
++Node: Assignments96702
++Node: Simple Assignments97193
++Node: PROVIDE98929
++Node: PROVIDE_HIDDEN100134
++Node: Source Code Reference100378
++Node: SECTIONS103958
++Node: Output Section Description105849
++Node: Output Section Name106902
++Node: Output Section Address107778
++Node: Input Section109427
++Node: Input Section Basics110228
++Node: Input Section Wildcards112580
++Node: Input Section Common117313
++Node: Input Section Keep118795
++Node: Input Section Example119285
++Node: Output Section Data120253
++Node: Output Section Keywords123030
++Node: Output Section Discarding126599
++Node: Output Section Attributes127555
++Node: Output Section Type128559
++Node: Output Section LMA129713
++Node: Forced Output Alignment131984
++Node: Forced Input Alignment132252
++Node: Output Section Region132637
++Node: Output Section Phdr133067
++Node: Output Section Fill133731
++Node: Overlay Description134873
++Node: MEMORY139121
++Node: PHDRS143321
++Node: VERSION148360
++Node: Expressions156151
++Node: Constants157029
++Node: Symbols157590
++Node: Orphan Sections158328
++Node: Location Counter159091
++Node: Operators163395
++Node: Evaluation164317
++Node: Expression Section165681
++Node: Builtin Functions167170
++Node: Implicit Linker Scripts174662
++Node: Machine Dependent175437
++Node: H8/300176357
++Node: i960177982
++Node: ARM179667
++Node: AVR32182578
++Node: HPPA ELF32183526
++Node: MMIX185151
++Node: MSP430186368
++Node: PowerPC ELF32187416
++Node: PowerPC64 ELF64189707
++Node: TI COFF194121
++Node: WIN32194655
++Node: Xtensa212729
++Node: BFD215851
++Node: BFD outline217306
++Node: BFD information loss218592
++Node: Canonical format221109
++Node: Reporting Bugs225466
++Node: Bug Criteria226160
++Node: Bug Reporting226859
++Node: MRI233884
++Node: GNU Free Documentation License238527
++Node: Index258241
++>>>>>>> .r31496
+ 
+ End Tag Table
+diff -Nrup binutils-2.17/ld/ld.info.mine binutils-2.17.atmel.1.3.0/ld/ld.info.mine
+--- binutils-2.17/ld/ld.info.mine 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/ld.info.mine 2007-09-28 10:30:44.000000000 +0200
+@@ -0,0 +1,6693 @@
++This is
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/ld/ld.info,
++produced by makeinfo version 4.8 from
++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/ld/ld.texinfo.
++
++START-INFO-DIR-ENTRY
++* Ld: (ld). The GNU linker.
++END-INFO-DIR-ENTRY
++
++ This file documents the GNU linker LD version 2.17.
++
++ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
++2002, 2003, 2004 Free Software Foundation, Inc.
++
++
++File: ld.info, Node: Top, Next: Overview, Up: (dir)
++
++Using ld
++********
++
++This file documents the GNU linker ld version 2.17.
++
++ This document is distributed under the terms of the GNU Free
++Documentation License. A copy of the license is included in the
++section entitled "GNU Free Documentation License".
++
++* Menu:
++
++* Overview:: Overview
++* Invocation:: Invocation
++* Scripts:: Linker Scripts
++
++* Machine Dependent:: Machine Dependent Features
++
++* BFD:: BFD
++
++* Reporting Bugs:: Reporting Bugs
++* MRI:: MRI Compatible Script Files
++* GNU Free Documentation License:: GNU Free Documentation License
++* Index:: Index
++
++
++File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top
++
++1 Overview
++**********
++
++`ld' combines a number of object and archive files, relocates their
++data and ties up symbol references. Usually the last step in compiling
++a program is to run `ld'.
++
++ `ld' accepts Linker Command Language files written in a superset of
++AT&T's Link Editor Command Language syntax, to provide explicit and
++total control over the linking process.
++
++ This version of `ld' uses the general purpose BFD libraries to
++operate on object files. This allows `ld' to read, combine, and write
++object files in many different formats--for example, COFF or `a.out'.
++Different formats may be linked together to produce any available kind
++of object file. *Note BFD::, for more information.
++
++ Aside from its flexibility, the GNU linker is more helpful than other
++linkers in providing diagnostic information. Many linkers abandon
++execution immediately upon encountering an error; whenever possible,
++`ld' continues executing, allowing you to identify other errors (or, in
++some cases, to get an output file in spite of the error).
++
++
++File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top
++
++2 Invocation
++************
++
++The GNU linker `ld' is meant to cover a broad range of situations, and
++to be as compatible as possible with other linkers. As a result, you
++have many choices to control its behavior.
++
++* Menu:
++
++* Options:: Command Line Options
++* Environment:: Environment Variables
++
++
++File: ld.info, Node: Options, Next: Environment, Up: Invocation
++
++2.1 Command Line Options
++========================
++
++ The linker supports a plethora of command-line options, but in actual
++practice few of them are used in any particular context. For instance,
++a frequent use of `ld' is to link standard Unix object files on a
++standard, supported Unix system. On such a system, to link a file
++`hello.o':
++
++ ld -o OUTPUT /lib/crt0.o hello.o -lc
++
++ This tells `ld' to produce a file called OUTPUT as the result of
++linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a',
++which will come from the standard search directories. (See the
++discussion of the `-l' option below.)
++
++ Some of the command-line options to `ld' may be specified at any
++point in the command line. However, options which refer to files, such
++as `-l' or `-T', cause the file to be read at the point at which the
++option appears in the command line, relative to the object files and
++other file options. Repeating non-file options with a different
++argument will either have no further effect, or override prior
++occurrences (those further to the left on the command line) of that
++option. Options which may be meaningfully specified more than once are
++noted in the descriptions below.
++
++ Non-option arguments are object files or archives which are to be
++linked together. They may follow, precede, or be mixed in with
++command-line options, except that an object file argument may not be
++placed between an option and its argument.
++
++ Usually the linker is invoked with at least one object file, but you
++can specify other forms of binary input files using `-l', `-R', and the
++script command language. If _no_ binary input files at all are
++specified, the linker does not produce any output, and issues the
++message `No input files'.
++
++ If the linker cannot recognize the format of an object file, it will
++assume that it is a linker script. A script specified in this way
++augments the main linker script used for the link (either the default
++linker script or the one specified by using `-T'). This feature
++permits the linker to link against a file which appears to be an object
++or an archive, but actually merely defines some symbol values, or uses
++`INPUT' or `GROUP' to load other objects. Note that specifying a
++script in this way merely augments the main linker script; use the `-T'
++option to replace the default linker script entirely. *Note Scripts::.
++
++ For options whose names are a single letter, option arguments must
++either follow the option letter without intervening whitespace, or be
++given as separate arguments immediately following the option that
++requires them.
++
++ For options whose names are multiple letters, either one dash or two
++can precede the option name; for example, `-trace-symbol' and
++`--trace-symbol' are equivalent. Note--there is one exception to this
++rule. Multiple letter options that start with a lower case 'o' can
++only be preceeded by two dashes. This is to reduce confusion with the
++`-o' option. So for example `-omagic' sets the output file name to
++`magic' whereas `--omagic' sets the NMAGIC flag on the output.
++
++ Arguments to multiple-letter options must either be separated from
++the option name by an equals sign, or be given as separate arguments
++immediately following the option that requires them. For example,
++`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique
++abbreviations of the names of multiple-letter options are accepted.
++
++ Note--if the linker is being invoked indirectly, via a compiler
++driver (e.g. `gcc') then all the linker command line options should be
++prefixed by `-Wl,' (or whatever is appropriate for the particular
++compiler driver) like this:
++
++ gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
++
++ This is important, because otherwise the compiler driver program may
++silently drop the linker options, resulting in a bad link.
++
++ Here is a table of the generic command line switches accepted by the
++GNU linker:
++
++`@FILE'
++ Read command-line options from FILE. The options read are
++ inserted in place of the original @FILE option. If FILE does not
++ exist, or cannot be read, then the option will be treated
++ literally, and not removed.
++
++ Options in FILE are separated by whitespace. A whitespace
++ character may be included in an option by surrounding the entire
++ option in either single or double quotes. Any character
++ (including a backslash) may be included by prefixing the character
++ to be included with a backslash. The FILE may itself contain
++ additional @FILE options; any such options will be processed
++ recursively.
++
++`-aKEYWORD'
++ This option is supported for HP/UX compatibility. The KEYWORD
++ argument must be one of the strings `archive', `shared', or
++ `default'. `-aarchive' is functionally equivalent to `-Bstatic',
++ and the other two keywords are functionally equivalent to
++ `-Bdynamic'. This option may be used any number of times.
++
++`-AARCHITECTURE'
++`--architecture=ARCHITECTURE'
++ In the current release of `ld', this option is useful only for the
++ Intel 960 family of architectures. In that `ld' configuration, the
++ ARCHITECTURE argument identifies the particular architecture in
++ the 960 family, enabling some safeguards and modifying the
++ archive-library search path. *Note `ld' and the Intel 960 family:
++ i960, for details.
++
++ Future releases of `ld' may support similar functionality for
++ other architecture families.
++
++`-b INPUT-FORMAT'
++`--format=INPUT-FORMAT'
++ `ld' may be configured to support more than one kind of object
++ file. If your `ld' is configured this way, you can use the `-b'
++ option to specify the binary format for input object files that
++ follow this option on the command line. Even when `ld' is
++ configured to support alternative object formats, you don't
++ usually need to specify this, as `ld' should be configured to
++ expect as a default input format the most usual format on each
++ machine. INPUT-FORMAT is a text string, the name of a particular
++ format supported by the BFD libraries. (You can list the
++ available binary formats with `objdump -i'.) *Note BFD::.
++
++ You may want to use this option if you are linking files with an
++ unusual binary format. You can also use `-b' to switch formats
++ explicitly (when linking object files of different formats), by
++ including `-b INPUT-FORMAT' before each group of object files in a
++ particular format.
++
++ The default format is taken from the environment variable
++ `GNUTARGET'. *Note Environment::. You can also define the input
++ format from a script, using the command `TARGET'; see *Note Format
++ Commands::.
++
++`-c MRI-COMMANDFILE'
++`--mri-script=MRI-COMMANDFILE'
++ For compatibility with linkers produced by MRI, `ld' accepts script
++ files written in an alternate, restricted command language,
++ described in *Note MRI Compatible Script Files: MRI. Introduce
++ MRI script files with the option `-c'; use the `-T' option to run
++ linker scripts written in the general-purpose `ld' scripting
++ language. If MRI-CMDFILE does not exist, `ld' looks for it in the
++ directories specified by any `-L' options.
++
++`-d'
++`-dc'
++`-dp'
++ These three options are equivalent; multiple forms are supported
++ for compatibility with other linkers. They assign space to common
++ symbols even if a relocatable output file is specified (with
++ `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same
++ effect. *Note Miscellaneous Commands::.
++
++`-e ENTRY'
++`--entry=ENTRY'
++ Use ENTRY as the explicit symbol for beginning execution of your
++ program, rather than the default entry point. If there is no
++ symbol named ENTRY, the linker will try to parse ENTRY as a number,
++ and use that as the entry address (the number will be interpreted
++ in base 10; you may use a leading `0x' for base 16, or a leading
++ `0' for base 8). *Note Entry Point::, for a discussion of defaults
++ and other ways of specifying the entry point.
++
++`--exclude-libs LIB,LIB,...'
++ Specifies a list of archive libraries from which symbols should
++ not be automatically exported. The library names may be delimited
++ by commas or colons. Specifying `--exclude-libs ALL' excludes
++ symbols in all archive libraries from automatic export. This
++ option is available only for the i386 PE targeted port of the
++ linker and for ELF targeted ports. For i386 PE, symbols
++ explicitly listed in a .def file are still exported, regardless of
++ this option. For ELF targeted ports, symbols affected by this
++ option will be treated as hidden.
++
++`-E'
++`--export-dynamic'
++ When creating a dynamically linked executable, add all symbols to
++ the dynamic symbol table. The dynamic symbol table is the set of
++ symbols which are visible from dynamic objects at run time.
++
++ If you do not use this option, the dynamic symbol table will
++ normally contain only those symbols which are referenced by some
++ dynamic object mentioned in the link.
++
++ If you use `dlopen' to load a dynamic object which needs to refer
++ back to the symbols defined by the program, rather than some other
++ dynamic object, then you will probably need to use this option when
++ linking the program itself.
++
++ You can also use the version script to control what symbols should
++ be added to the dynamic symbol table if the output format supports
++ it. See the description of `--version-script' in *Note VERSION::.
++
++`-EB'
++ Link big-endian objects. This affects the default output format.
++
++`-EL'
++ Link little-endian objects. This affects the default output
++ format.
++
++`-f'
++`--auxiliary NAME'
++ When creating an ELF shared object, set the internal DT_AUXILIARY
++ field to the specified name. This tells the dynamic linker that
++ the symbol table of the shared object should be used as an
++ auxiliary filter on the symbol table of the shared object NAME.
++
++ If you later link a program against this filter object, then, when
++ you run the program, the dynamic linker will see the DT_AUXILIARY
++ field. If the dynamic linker resolves any symbols from the filter
++ object, it will first check whether there is a definition in the
++ shared object NAME. If there is one, it will be used instead of
++ the definition in the filter object. The shared object NAME need
++ not exist. Thus the shared object NAME may be used to provide an
++ alternative implementation of certain functions, perhaps for
++ debugging or for machine specific performance.
++
++ This option may be specified more than once. The DT_AUXILIARY
++ entries will be created in the order in which they appear on the
++ command line.
++
++`-F NAME'
++`--filter NAME'
++ When creating an ELF shared object, set the internal DT_FILTER
++ field to the specified name. This tells the dynamic linker that
++ the symbol table of the shared object which is being created
++ should be used as a filter on the symbol table of the shared
++ object NAME.
++
++ If you later link a program against this filter object, then, when
++ you run the program, the dynamic linker will see the DT_FILTER
++ field. The dynamic linker will resolve symbols according to the
++ symbol table of the filter object as usual, but it will actually
++ link to the definitions found in the shared object NAME. Thus the
++ filter object can be used to select a subset of the symbols
++ provided by the object NAME.
++
++ Some older linkers used the `-F' option throughout a compilation
++ toolchain for specifying object-file format for both input and
++ output object files. The GNU linker uses other mechanisms for
++ this purpose: the `-b', `--format', `--oformat' options, the
++ `TARGET' command in linker scripts, and the `GNUTARGET'
++ environment variable. The GNU linker will ignore the `-F' option
++ when not creating an ELF shared object.
++
++`-fini NAME'
++ When creating an ELF executable or shared object, call NAME when
++ the executable or shared object is unloaded, by setting DT_FINI to
++ the address of the function. By default, the linker uses `_fini'
++ as the function to call.
++
++`-g'
++ Ignored. Provided for compatibility with other tools.
++
++`-GVALUE'
++`--gpsize=VALUE'
++ Set the maximum size of objects to be optimized using the GP
++ register to SIZE. This is only meaningful for object file formats
++ such as MIPS ECOFF which supports putting large and small objects
++ into different sections. This is ignored for other object file
++ formats.
++
++`-hNAME'
++`-soname=NAME'
++ When creating an ELF shared object, set the internal DT_SONAME
++ field to the specified name. When an executable is linked with a
++ shared object which has a DT_SONAME field, then when the
++ executable is run the dynamic linker will attempt to load the
++ shared object specified by the DT_SONAME field rather than the
++ using the file name given to the linker.
++
++`-i'
++ Perform an incremental link (same as option `-r').
++
++`-init NAME'
++ When creating an ELF executable or shared object, call NAME when
++ the executable or shared object is loaded, by setting DT_INIT to
++ the address of the function. By default, the linker uses `_init'
++ as the function to call.
++
++`-lARCHIVE'
++`--library=ARCHIVE'
++ Add archive file ARCHIVE to the list of files to link. This
++ option may be used any number of times. `ld' will search its
++ path-list for occurrences of `libARCHIVE.a' for every ARCHIVE
++ specified.
++
++ On systems which support shared libraries, `ld' may also search for
++ libraries with extensions other than `.a'. Specifically, on ELF
++ and SunOS systems, `ld' will search a directory for a library with
++ an extension of `.so' before searching for one with an extension of
++ `.a'. By convention, a `.so' extension indicates a shared library.
++
++ The linker will search an archive only once, at the location where
++ it is specified on the command line. If the archive defines a
++ symbol which was undefined in some object which appeared before
++ the archive on the command line, the linker will include the
++ appropriate file(s) from the archive. However, an undefined
++ symbol in an object appearing later on the command line will not
++ cause the linker to search the archive again.
++
++ See the `-(' option for a way to force the linker to search
++ archives multiple times.
++
++ You may list the same archive multiple times on the command line.
++
++ This type of archive searching is standard for Unix linkers.
++ However, if you are using `ld' on AIX, note that it is different
++ from the behaviour of the AIX linker.
++
++`-LSEARCHDIR'
++`--library-path=SEARCHDIR'
++ Add path SEARCHDIR to the list of paths that `ld' will search for
++ archive libraries and `ld' control scripts. You may use this
++ option any number of times. The directories are searched in the
++ order in which they are specified on the command line.
++ Directories specified on the command line are searched before the
++ default directories. All `-L' options apply to all `-l' options,
++ regardless of the order in which the options appear.
++
++ If SEARCHDIR begins with `=', then the `=' will be replaced by the
++ "sysroot prefix", a path specified when the linker is configured.
++
++ The default set of paths searched (without being specified with
++ `-L') depends on which emulation mode `ld' is using, and in some
++ cases also on how it was configured. *Note Environment::.
++
++ The paths can also be specified in a link script with the
++ `SEARCH_DIR' command. Directories specified this way are searched
++ at the point in which the linker script appears in the command
++ line.
++
++`-mEMULATION'
++ Emulate the EMULATION linker. You can list the available
++ emulations with the `--verbose' or `-V' options.
++
++ If the `-m' option is not used, the emulation is taken from the
++ `LDEMULATION' environment variable, if that is defined.
++
++ Otherwise, the default emulation depends upon how the linker was
++ configured.
++
++`-M'
++`--print-map'
++ Print a link map to the standard output. A link map provides
++ information about the link, including the following:
++
++ * Where object files are mapped into memory.
++
++ * How common symbols are allocated.
++
++ * All archive members included in the link, with a mention of
++ the symbol which caused the archive member to be brought in.
++
++ * The values assigned to symbols.
++
++ Note - symbols whose values are computed by an expression
++ which involves a reference to a previous value of the same
++ symbol may not have correct result displayed in the link map.
++ This is because the linker discards intermediate results and
++ only retains the final value of an expression. Under such
++ circumstances the linker will display the final value
++ enclosed by square brackets. Thus for example a linker
++ script containing:
++
++ foo = 1
++ foo = foo * 4
++ foo = foo + 8
++
++ will produce the following output in the link map if the `-M'
++ option is used:
++
++ 0x00000001 foo = 0x1
++ [0x0000000c] foo = (foo * 0x4)
++ [0x0000000c] foo = (foo + 0x8)
++
++ See *Note Expressions:: for more information about
++ expressions in linker scripts.
++
++`-n'
++`--nmagic'
++ Turn off page alignment of sections, and mark the output as
++ `NMAGIC' if possible.
++
++`-N'
++`--omagic'
++ Set the text and data sections to be readable and writable. Also,
++ do not page-align the data segment, and disable linking against
++ shared libraries. If the output format supports Unix style magic
++ numbers, mark the output as `OMAGIC'. Note: Although a writable
++ text section is allowed for PE-COFF targets, it does not conform
++ to the format specification published by Microsoft.
++
++`--no-omagic'
++ This option negates most of the effects of the `-N' option. It
++ sets the text section to be read-only, and forces the data segment
++ to be page-aligned. Note - this option does not enable linking
++ against shared libraries. Use `-Bdynamic' for this.
++
++`-o OUTPUT'
++`--output=OUTPUT'
++ Use OUTPUT as the name for the program produced by `ld'; if this
++ option is not specified, the name `a.out' is used by default. The
++ script command `OUTPUT' can also specify the output file name.
++
++`-O LEVEL'
++ If LEVEL is a numeric values greater than zero `ld' optimizes the
++ output. This might take significantly longer and therefore
++ probably should only be enabled for the final binary.
++
++`-q'
++`--emit-relocs'
++ Leave relocation sections and contents in fully linked
++ exececutables. Post link analysis and optimization tools may need
++ this information in order to perform correct modifications of
++ executables. This results in larger executables.
++
++ This option is currently only supported on ELF platforms.
++
++`--force-dynamic'
++ Force the output file to have dynamic sections. This option is
++ specific to VxWorks targets.
++
++`-r'
++`--relocatable'
++ Generate relocatable output--i.e., generate an output file that
++ can in turn serve as input to `ld'. This is often called "partial
++ linking". As a side effect, in environments that support standard
++ Unix magic numbers, this option also sets the output file's magic
++ number to `OMAGIC'. If this option is not specified, an absolute
++ file is produced. When linking C++ programs, this option _will
++ not_ resolve references to constructors; to do that, use `-Ur'.
++
++ When an input file does not have the same format as the output
++ file, partial linking is only supported if that input file does
++ not contain any relocations. Different output formats can have
++ further restrictions; for example some `a.out'-based formats do
++ not support partial linking with input files in other formats at
++ all.
++
++ This option does the same thing as `-i'.
++
++`-R FILENAME'
++`--just-symbols=FILENAME'
++ Read symbol names and their addresses from FILENAME, but do not
++ relocate it or include it in the output. This allows your output
++ file to refer symbolically to absolute locations of memory defined
++ in other programs. You may use this option more than once.
++
++ For compatibility with other ELF linkers, if the `-R' option is
++ followed by a directory name, rather than a file name, it is
++ treated as the `-rpath' option.
++
++`-s'
++`--strip-all'
++ Omit all symbol information from the output file.
++
++`-S'
++`--strip-debug'
++ Omit debugger symbol information (but not all symbols) from the
++ output file.
++
++`-t'
++`--trace'
++ Print the names of the input files as `ld' processes them.
++
++`-T SCRIPTFILE'
++`--script=SCRIPTFILE'
++ Use SCRIPTFILE as the linker script. This script replaces `ld''s
++ default linker script (rather than adding to it), so COMMANDFILE
++ must specify everything necessary to describe the output file.
++ *Note Scripts::. If SCRIPTFILE does not exist in the current
++ directory, `ld' looks for it in the directories specified by any
++ preceding `-L' options. Multiple `-T' options accumulate.
++
++`-u SYMBOL'
++`--undefined=SYMBOL'
++ Force SYMBOL to be entered in the output file as an undefined
++ symbol. Doing this may, for example, trigger linking of additional
++ modules from standard libraries. `-u' may be repeated with
++ different option arguments to enter additional undefined symbols.
++ This option is equivalent to the `EXTERN' linker script command.
++
++`-Ur'
++ For anything other than C++ programs, this option is equivalent to
++ `-r': it generates relocatable output--i.e., an output file that
++ can in turn serve as input to `ld'. When linking C++ programs,
++ `-Ur' _does_ resolve references to constructors, unlike `-r'. It
++ does not work to use `-Ur' on files that were themselves linked
++ with `-Ur'; once the constructor table has been built, it cannot
++ be added to. Use `-Ur' only for the last partial link, and `-r'
++ for the others.
++
++`--unique[=SECTION]'
++ Creates a separate output section for every input section matching
++ SECTION, or if the optional wildcard SECTION argument is missing,
++ for every orphan input section. An orphan section is one not
++ specifically mentioned in a linker script. You may use this option
++ multiple times on the command line; It prevents the normal
++ merging of input sections with the same name, overriding output
++ section assignments in a linker script.
++
++`-v'
++`--version'
++`-V'
++ Display the version number for `ld'. The `-V' option also lists
++ the supported emulations.
++
++`-x'
++`--discard-all'
++ Delete all local symbols.
++
++`-X'
++`--discard-locals'
++ Delete all temporary local symbols. For most targets, this is all
++ local symbols whose names begin with `L'.
++
++`-y SYMBOL'
++`--trace-symbol=SYMBOL'
++ Print the name of each linked file in which SYMBOL appears. This
++ option may be given any number of times. On many systems it is
++ necessary to prepend an underscore.
++
++ This option is useful when you have an undefined symbol in your
++ link but don't know where the reference is coming from.
++
++`-Y PATH'
++ Add PATH to the default library search path. This option exists
++ for Solaris compatibility.
++
++`-z KEYWORD'
++ The recognized keywords are:
++ `combreloc'
++ Combines multiple reloc sections and sorts them to make
++ dynamic symbol lookup caching possible.
++
++ `defs'
++ Disallows undefined symbols in object files. Undefined
++ symbols in shared libraries are still allowed.
++
++ `execstack'
++ Marks the object as requiring executable stack.
++
++ `initfirst'
++ This option is only meaningful when building a shared object.
++ It marks the object so that its runtime initialization will
++ occur before the runtime initialization of any other objects
++ brought into the process at the same time. Similarly the
++ runtime finalization of the object will occur after the
++ runtime finalization of any other objects.
++
++ `interpose'
++ Marks the object that its symbol table interposes before all
++ symbols but the primary executable.
++
++ `loadfltr'
++ Marks the object that its filters be processed immediately at
++ runtime.
++
++ `muldefs'
++ Allows multiple definitions.
++
++ `nocombreloc'
++ Disables multiple reloc sections combining.
++
++ `nocopyreloc'
++ Disables production of copy relocs.
++
++ `nodefaultlib'
++ Marks the object that the search for dependencies of this
++ object will ignore any default library search paths.
++
++ `nodelete'
++ Marks the object shouldn't be unloaded at runtime.
++
++ `nodlopen'
++ Marks the object not available to `dlopen'.
++
++ `nodump'
++ Marks the object can not be dumped by `dldump'.
++
++ `noexecstack'
++ Marks the object as not requiring executable stack.
++
++ `norelro'
++ Don't create an ELF `PT_GNU_RELRO' segment header in the
++ object.
++
++ `now'
++ When generating an executable or shared library, mark it to
++ tell the dynamic linker to resolve all symbols when the
++ program is started, or when the shared library is linked to
++ using dlopen, instead of deferring function call resolution
++ to the point when the function is first called.
++
++ `origin'
++ Marks the object may contain $ORIGIN.
++
++ `relro'
++ Create an ELF `PT_GNU_RELRO' segment header in the object.
++
++
++ Other keywords are ignored for Solaris compatibility.
++
++`-( ARCHIVES -)'
++`--start-group ARCHIVES --end-group'
++ The ARCHIVES should be a list of archive files. They may be
++ either explicit file names, or `-l' options.
++
++ The specified archives are searched repeatedly until no new
++ undefined references are created. Normally, an archive is
++ searched only once in the order that it is specified on the
++ command line. If a symbol in that archive is needed to resolve an
++ undefined symbol referred to by an object in an archive that
++ appears later on the command line, the linker would not be able to
++ resolve that reference. By grouping the archives, they all be
++ searched repeatedly until all possible references are resolved.
++
++ Using this option has a significant performance cost. It is best
++ to use it only when there are unavoidable circular references
++ between two or more archives.
++
++`--accept-unknown-input-arch'
++`--no-accept-unknown-input-arch'
++ Tells the linker to accept input files whose architecture cannot be
++ recognised. The assumption is that the user knows what they are
++ doing and deliberately wants to link in these unknown input files.
++ This was the default behaviour of the linker, before release
++ 2.14. The default behaviour from release 2.14 onwards is to
++ reject such input files, and so the `--accept-unknown-input-arch'
++ option has been added to restore the old behaviour.
++
++`--as-needed'
++`--no-as-needed'
++ This option affects ELF DT_NEEDED tags for dynamic libraries
++ mentioned on the command line after the `--as-needed' option.
++ Normally, the linker will add a DT_NEEDED tag for each dynamic
++ library mentioned on the command line, regardless of whether the
++ library is actually needed. `--as-needed' causes DT_NEEDED tags
++ to only be emitted for libraries that satisfy some symbol
++ reference from regular objects which is undefined at the point
++ that the library was linked. `--no-as-needed' restores the
++ default behaviour.
++
++`--add-needed'
++`--no-add-needed'
++ This option affects the treatment of dynamic libraries from ELF
++ DT_NEEDED tags in dynamic libraries mentioned on the command line
++ after the `--no-add-needed' option. Normally, the linker will add
++ a DT_NEEDED tag for each dynamic library from DT_NEEDED tags.
++ `--no-add-needed' causes DT_NEEDED tags will never be emitted for
++ those libraries from DT_NEEDED tags. `--add-needed' restores the
++ default behaviour.
++
++`-assert KEYWORD'
++ This option is ignored for SunOS compatibility.
++
++`-Bdynamic'
++`-dy'
++`-call_shared'
++ Link against dynamic libraries. This is only meaningful on
++ platforms for which shared libraries are supported. This option
++ is normally the default on such platforms. The different variants
++ of this option are for compatibility with various systems. You
++ may use this option multiple times on the command line: it affects
++ library searching for `-l' options which follow it.
++
++`-Bgroup'
++ Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic
++ section. This causes the runtime linker to handle lookups in this
++ object and its dependencies to be performed only inside the group.
++ `--unresolved-symbols=report-all' is implied. This option is only
++ meaningful on ELF platforms which support shared libraries.
++
++`-Bstatic'
++`-dn'
++`-non_shared'
++`-static'
++ Do not link against shared libraries. This is only meaningful on
++ platforms for which shared libraries are supported. The different
++ variants of this option are for compatibility with various
++ systems. You may use this option multiple times on the command
++ line: it affects library searching for `-l' options which follow
++ it. This option also implies `--unresolved-symbols=report-all'.
++ This option can be used with `-shared'. Doing so means that a
++ shared library is being created but that all of the library's
++ external references must be resolved by pulling in entries from
++ static libraries.
++
++`-Bsymbolic'
++ When creating a shared library, bind references to global symbols
++ to the definition within the shared library, if any. Normally, it
++ is possible for a program linked against a shared library to
++ override the definition within the shared library. This option is
++ only meaningful on ELF platforms which support shared libraries.
++
++`--check-sections'
++`--no-check-sections'
++ Asks the linker _not_ to check section addresses after they have
++ been assigned to see if there are any overlaps. Normally the
++ linker will perform this check, and if it finds any overlaps it
++ will produce suitable error messages. The linker does know about,
++ and does make allowances for sections in overlays. The default
++ behaviour can be restored by using the command line switch
++ `--check-sections'.
++
++`--cref'
++ Output a cross reference table. If a linker map file is being
++ generated, the cross reference table is printed to the map file.
++ Otherwise, it is printed on the standard output.
++
++ The format of the table is intentionally simple, so that it may be
++ easily processed by a script if necessary. The symbols are
++ printed out, sorted by name. For each symbol, a list of file
++ names is given. If the symbol is defined, the first file listed
++ is the location of the definition. The remaining files contain
++ references to the symbol.
++
++`--no-define-common'
++ This option inhibits the assignment of addresses to common symbols.
++ The script command `INHIBIT_COMMON_ALLOCATION' has the same effect.
++ *Note Miscellaneous Commands::.
++
++ The `--no-define-common' option allows decoupling the decision to
++ assign addresses to Common symbols from the choice of the output
++ file type; otherwise a non-Relocatable output type forces
++ assigning addresses to Common symbols. Using `--no-define-common'
++ allows Common symbols that are referenced from a shared library to
++ be assigned addresses only in the main program. This eliminates
++ the unused duplicate space in the shared library, and also
++ prevents any possible confusion over resolving to the wrong
++ duplicate when there are many dynamic modules with specialized
++ search paths for runtime symbol resolution.
++
++`--defsym SYMBOL=EXPRESSION'
++ Create a global symbol in the output file, containing the absolute
++ address given by EXPRESSION. You may use this option as many
++ times as necessary to define multiple symbols in the command line.
++ A limited form of arithmetic is supported for the EXPRESSION in
++ this context: you may give a hexadecimal constant or the name of
++ an existing symbol, or use `+' and `-' to add or subtract
++ hexadecimal constants or symbols. If you need more elaborate
++ expressions, consider using the linker command language from a
++ script (*note Assignment: Symbol Definitions: Assignments.).
++ _Note:_ there should be no white space between SYMBOL, the equals
++ sign ("<=>"), and EXPRESSION.
++
++`--demangle[=STYLE]'
++`--no-demangle'
++ These options control whether to demangle symbol names in error
++ messages and other output. When the linker is told to demangle,
++ it tries to present symbol names in a readable fashion: it strips
++ leading underscores if they are used by the object file format,
++ and converts C++ mangled symbol names into user readable names.
++ Different compilers have different mangling styles. The optional
++ demangling style argument can be used to choose an appropriate
++ demangling style for your compiler. The linker will demangle by
++ default unless the environment variable `COLLECT_NO_DEMANGLE' is
++ set. These options may be used to override the default.
++
++`--dynamic-linker FILE'
++ Set the name of the dynamic linker. This is only meaningful when
++ generating dynamically linked ELF executables. The default dynamic
++ linker is normally correct; don't use this unless you know what
++ you are doing.
++
++`--fatal-warnings'
++ Treat all warnings as errors.
++
++`--force-exe-suffix'
++ Make sure that an output file has a .exe suffix.
++
++ If a successfully built fully linked output file does not have a
++ `.exe' or `.dll' suffix, this option forces the linker to copy the
++ output file to one of the same name with a `.exe' suffix. This
++ option is useful when using unmodified Unix makefiles on a
++ Microsoft Windows host, since some versions of Windows won't run
++ an image unless it ends in a `.exe' suffix.
++
++`--no-gc-sections'
++`--gc-sections'
++ Enable garbage collection of unused input sections. It is ignored
++ on targets that do not support this option. This option is not
++ compatible with `-r'. The default behaviour (of not performing
++ this garbage collection) can be restored by specifying
++ `--no-gc-sections' on the command line.
++
++`--help'
++ Print a summary of the command-line options on the standard output
++ and exit.
++
++`--target-help'
++ Print a summary of all target specific options on the standard
++ output and exit.
++
++`-Map MAPFILE'
++ Print a link map to the file MAPFILE. See the description of the
++ `-M' option, above.
++
++`--no-keep-memory'
++ `ld' normally optimizes for speed over memory usage by caching the
++ symbol tables of input files in memory. This option tells `ld' to
++ instead optimize for memory usage, by rereading the symbol tables
++ as necessary. This may be required if `ld' runs out of memory
++ space while linking a large executable.
++
++`--no-undefined'
++`-z defs'
++ Report unresolved symbol references from regular object files.
++ This is done even if the linker is creating a non-symbolic shared
++ library. The switch `--[no-]allow-shlib-undefined' controls the
++ behaviour for reporting unresolved references found in shared
++ libraries being linked in.
++
++`--allow-multiple-definition'
++`-z muldefs'
++ Normally when a symbol is defined multiple times, the linker will
++ report a fatal error. These options allow multiple definitions and
++ the first definition will be used.
++
++`--allow-shlib-undefined'
++`--no-allow-shlib-undefined'
++ Allows (the default) or disallows undefined symbols in shared
++ libraries. This switch is similar to `--no-undefined' except that
++ it determines the behaviour when the undefined symbols are in a
++ shared library rather than a regular object file. It does not
++ affect how undefined symbols in regular object files are handled.
++
++ The reason that `--allow-shlib-undefined' is the default is that
++ the shared library being specified at link time may not be the
++ same as the one that is available at load time, so the symbols
++ might actually be resolvable at load time. Plus there are some
++ systems, (eg BeOS) where undefined symbols in shared libraries is
++ normal. (The kernel patches them at load time to select which
++ function is most appropriate for the current architecture. This
++ is used for example to dynamically select an appropriate memset
++ function). Apparently it is also normal for HPPA shared libraries
++ to have undefined symbols.
++
++`--no-undefined-version'
++ Normally when a symbol has an undefined version, the linker will
++ ignore it. This option disallows symbols with undefined version
++ and a fatal error will be issued instead.
++
++`--default-symver'
++ Create and use a default symbol version (the soname) for
++ unversioned exported symbols.
++
++`--default-imported-symver'
++ Create and use a default symbol version (the soname) for
++ unversioned imported symbols.
++
++`--no-warn-mismatch'
++ Normally `ld' will give an error if you try to link together input
++ files that are mismatched for some reason, perhaps because they
++ have been compiled for different processors or for different
++ endiannesses. This option tells `ld' that it should silently
++ permit such possible errors. This option should only be used with
++ care, in cases when you have taken some special action that
++ ensures that the linker errors are inappropriate.
++
++`--no-whole-archive'
++ Turn off the effect of the `--whole-archive' option for subsequent
++ archive files.
++
++`--noinhibit-exec'
++ Retain the executable output file whenever it is still usable.
++ Normally, the linker will not produce an output file if it
++ encounters errors during the link process; it exits without
++ writing an output file when it issues any error whatsoever.
++
++`-nostdlib'
++ Only search library directories explicitly specified on the
++ command line. Library directories specified in linker scripts
++ (including linker scripts specified on the command line) are
++ ignored.
++
++`--oformat OUTPUT-FORMAT'
++ `ld' may be configured to support more than one kind of object
++ file. If your `ld' is configured this way, you can use the
++ `--oformat' option to specify the binary format for the output
++ object file. Even when `ld' is configured to support alternative
++ object formats, you don't usually need to specify this, as `ld'
++ should be configured to produce as a default output format the most
++ usual format on each machine. OUTPUT-FORMAT is a text string, the
++ name of a particular format supported by the BFD libraries. (You
++ can list the available binary formats with `objdump -i'.) The
++ script command `OUTPUT_FORMAT' can also specify the output format,
++ but this option overrides it. *Note BFD::.
++
++`-pie'
++`--pic-executable'
++ Create a position independent executable. This is currently only
++ supported on ELF platforms. Position independent executables are
++ similar to shared libraries in that they are relocated by the
++ dynamic linker to the virtual address the OS chooses for them
++ (which can vary between invocations). Like normal dynamically
++ linked executables they can be executed and symbols defined in the
++ executable cannot be overridden by shared libraries.
++
++`-qmagic'
++ This option is ignored for Linux compatibility.
++
++`-Qy'
++ This option is ignored for SVR4 compatibility.
++
++`--relax'
++ An option with machine dependent effects. This option is only
++ supported on a few targets. *Note `ld' and the H8/300: H8/300.
++ *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa
++ Processors: Xtensa. *Note `ld' and PowerPC 32-bit ELF Support:
++ PowerPC ELF32.
++
++ On some platforms, the `--relax' option performs global
++ optimizations that become possible when the linker resolves
++ addressing in the program, such as relaxing address modes and
++ synthesizing new instructions in the output object file.
++
++ On some platforms these link time global optimizations may make
++ symbolic debugging of the resulting executable impossible. This
++ is known to be the case for the Matsushita MN10200 and MN10300
++ family of processors.
++
++ On platforms where this is not supported, `--relax' is accepted,
++ but ignored.
++
++`--retain-symbols-file FILENAME'
++ Retain _only_ the symbols listed in the file FILENAME, discarding
++ all others. FILENAME is simply a flat file, with one symbol name
++ per line. This option is especially useful in environments (such
++ as VxWorks) where a large global symbol table is accumulated
++ gradually, to conserve run-time memory.
++
++ `--retain-symbols-file' does _not_ discard undefined symbols, or
++ symbols needed for relocations.
++
++ You may only specify `--retain-symbols-file' once in the command
++ line. It overrides `-s' and `-S'.
++
++`-rpath DIR'
++ Add a directory to the runtime library search path. This is used
++ when linking an ELF executable with shared objects. All `-rpath'
++ arguments are concatenated and passed to the runtime linker, which
++ uses them to locate shared objects at runtime. The `-rpath'
++ option is also used when locating shared objects which are needed
++ by shared objects explicitly included in the link; see the
++ description of the `-rpath-link' option. If `-rpath' is not used
++ when linking an ELF executable, the contents of the environment
++ variable `LD_RUN_PATH' will be used if it is defined.
++
++ The `-rpath' option may also be used on SunOS. By default, on
++ SunOS, the linker will form a runtime search patch out of all the
++ `-L' options it is given. If a `-rpath' option is used, the
++ runtime search path will be formed exclusively using the `-rpath'
++ options, ignoring the `-L' options. This can be useful when using
++ gcc, which adds many `-L' options which may be on NFS mounted
++ filesystems.
++
++ For compatibility with other ELF linkers, if the `-R' option is
++ followed by a directory name, rather than a file name, it is
++ treated as the `-rpath' option.
++
++`-rpath-link DIR'
++ When using ELF or SunOS, one shared library may require another.
++ This happens when an `ld -shared' link includes a shared library
++ as one of the input files.
++
++ When the linker encounters such a dependency when doing a
++ non-shared, non-relocatable link, it will automatically try to
++ locate the required shared library and include it in the link, if
++ it is not included explicitly. In such a case, the `-rpath-link'
++ option specifies the first set of directories to search. The
++ `-rpath-link' option may specify a sequence of directory names
++ either by specifying a list of names separated by colons, or by
++ appearing multiple times.
++
++ This option should be used with caution as it overrides the search
++ path that may have been hard compiled into a shared library. In
++ such a case it is possible to use unintentionally a different
++ search path than the runtime linker would do.
++
++ The linker uses the following search paths to locate required
++ shared libraries.
++ 1. Any directories specified by `-rpath-link' options.
++
++ 2. Any directories specified by `-rpath' options. The difference
++ between `-rpath' and `-rpath-link' is that directories
++ specified by `-rpath' options are included in the executable
++ and used at runtime, whereas the `-rpath-link' option is only
++ effective at link time. It is for the native linker only.
++
++ 3. On an ELF system, if the `-rpath' and `rpath-link' options
++ were not used, search the contents of the environment variable
++ `LD_RUN_PATH'. It is for the native linker only.
++
++ 4. On SunOS, if the `-rpath' option was not used, search any
++ directories specified using `-L' options.
++
++ 5. For a native linker, the contents of the environment variable
++ `LD_LIBRARY_PATH'.
++
++ 6. For a native ELF linker, the directories in `DT_RUNPATH' or
++ `DT_RPATH' of a shared library are searched for shared
++ libraries needed by it. The `DT_RPATH' entries are ignored if
++ `DT_RUNPATH' entries exist.
++
++ 7. The default directories, normally `/lib' and `/usr/lib'.
++
++ 8. For a native linker on an ELF system, if the file
++ `/etc/ld.so.conf' exists, the list of directories found in
++ that file.
++
++ If the required shared library is not found, the linker will issue
++ a warning and continue with the link.
++
++`-shared'
++`-Bshareable'
++ Create a shared library. This is currently only supported on ELF,
++ XCOFF and SunOS platforms. On SunOS, the linker will
++ automatically create a shared library if the `-e' option is not
++ used and there are undefined symbols in the link.
++
++`--sort-common'
++ This option tells `ld' to sort the common symbols by size when it
++ places them in the appropriate output sections. First come all
++ the one byte symbols, then all the two byte, then all the four
++ byte, and then everything else. This is to prevent gaps between
++ symbols due to alignment constraints.
++
++`--sort-section name'
++ This option will apply `SORT_BY_NAME' to all wildcard section
++ patterns in the linker script.
++
++`--sort-section alignment'
++ This option will apply `SORT_BY_ALIGNMENT' to all wildcard section
++ patterns in the linker script.
++
++`--split-by-file [SIZE]'
++ Similar to `--split-by-reloc' but creates a new output section for
++ each input file when SIZE is reached. SIZE defaults to a size of
++ 1 if not given.
++
++`--split-by-reloc [COUNT]'
++ Tries to creates extra sections in the output file so that no
++ single output section in the file contains more than COUNT
++ relocations. This is useful when generating huge relocatable
++ files for downloading into certain real time kernels with the COFF
++ object file format; since COFF cannot represent more than 65535
++ relocations in a single section. Note that this will fail to work
++ with object file formats which do not support arbitrary sections.
++ The linker will not split up individual input sections for
++ redistribution, so if a single input section contains more than
++ COUNT relocations one output section will contain that many
++ relocations. COUNT defaults to a value of 32768.
++
++`--stats'
++ Compute and display statistics about the operation of the linker,
++ such as execution time and memory usage.
++
++`--sysroot=DIRECTORY'
++ Use DIRECTORY as the location of the sysroot, overriding the
++ configure-time default. This option is only supported by linkers
++ that were configured using `--with-sysroot'.
++
++`--traditional-format'
++ For some targets, the output of `ld' is different in some ways from
++ the output of some existing linker. This switch requests `ld' to
++ use the traditional format instead.
++
++ For example, on SunOS, `ld' combines duplicate entries in the
++ symbol string table. This can reduce the size of an output file
++ with full debugging information by over 30 percent.
++ Unfortunately, the SunOS `dbx' program can not read the resulting
++ program (`gdb' has no trouble). The `--traditional-format' switch
++ tells `ld' to not combine duplicate entries.
++
++`--section-start SECTIONNAME=ORG'
++ Locate a section in the output file at the absolute address given
++ by ORG. You may use this option as many times as necessary to
++ locate multiple sections in the command line. ORG must be a
++ single hexadecimal integer; for compatibility with other linkers,
++ you may omit the leading `0x' usually associated with hexadecimal
++ values. _Note:_ there should be no white space between
++ SECTIONNAME, the equals sign ("<=>"), and ORG.
++
++`-Tbss ORG'
++`-Tdata ORG'
++`-Ttext ORG'
++ Same as -section-start, with `.bss', `.data' or `.text' as the
++ SECTIONNAME.
++
++`--unresolved-symbols=METHOD'
++ Determine how to handle unresolved symbols. There are four
++ possible values for `method':
++
++ `ignore-all'
++ Do not report any unresolved symbols.
++
++ `report-all'
++ Report all unresolved symbols. This is the default.
++
++ `ignore-in-object-files'
++ Report unresolved symbols that are contained in shared
++ libraries, but ignore them if they come from regular object
++ files.
++
++ `ignore-in-shared-libs'
++ Report unresolved symbols that come from regular object
++ files, but ignore them if they come from shared libraries.
++ This can be useful when creating a dynamic binary and it is
++ known that all the shared libraries that it should be
++ referencing are included on the linker's command line.
++
++ The behaviour for shared libraries on their own can also be
++ controlled by the `--[no-]allow-shlib-undefined' option.
++
++ Normally the linker will generate an error message for each
++ reported unresolved symbol but the option
++ `--warn-unresolved-symbols' can change this to a warning.
++
++`--dll-verbose'
++`--verbose'
++ Display the version number for `ld' and list the linker emulations
++ supported. Display which input files can and cannot be opened.
++ Display the linker script being used by the linker.
++
++`--version-script=VERSION-SCRIPTFILE'
++ Specify the name of a version script to the linker. This is
++ typically used when creating shared libraries to specify
++ additional information about the version hierarchy for the library
++ being created. This option is only meaningful on ELF platforms
++ which support shared libraries. *Note VERSION::.
++
++`--warn-common'
++ Warn when a common symbol is combined with another common symbol
++ or with a symbol definition. Unix linkers allow this somewhat
++ sloppy practise, but linkers on some other operating systems do
++ not. This option allows you to find potential problems from
++ combining global symbols. Unfortunately, some C libraries use
++ this practise, so you may get some warnings about symbols in the
++ libraries as well as in your programs.
++
++ There are three kinds of global symbols, illustrated here by C
++ examples:
++
++ `int i = 1;'
++ A definition, which goes in the initialized data section of
++ the output file.
++
++ `extern int i;'
++ An undefined reference, which does not allocate space. There
++ must be either a definition or a common symbol for the
++ variable somewhere.
++
++ `int i;'
++ A common symbol. If there are only (one or more) common
++ symbols for a variable, it goes in the uninitialized data
++ area of the output file. The linker merges multiple common
++ symbols for the same variable into a single symbol. If they
++ are of different sizes, it picks the largest size. The
++ linker turns a common symbol into a declaration, if there is
++ a definition of the same variable.
++
++ The `--warn-common' option can produce five kinds of warnings.
++ Each warning consists of a pair of lines: the first describes the
++ symbol just encountered, and the second describes the previous
++ symbol encountered with the same name. One or both of the two
++ symbols will be a common symbol.
++
++ 1. Turning a common symbol into a reference, because there is
++ already a definition for the symbol.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overridden by definition
++ FILE(SECTION): warning: defined here
++
++ 2. Turning a common symbol into a reference, because a later
++ definition for the symbol is encountered. This is the same
++ as the previous case, except that the symbols are encountered
++ in a different order.
++ FILE(SECTION): warning: definition of `SYMBOL'
++ overriding common
++ FILE(SECTION): warning: common is here
++
++ 3. Merging a common symbol with a previous same-sized common
++ symbol.
++ FILE(SECTION): warning: multiple common
++ of `SYMBOL'
++ FILE(SECTION): warning: previous common is here
++
++ 4. Merging a common symbol with a previous larger common symbol.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overridden by larger common
++ FILE(SECTION): warning: larger common is here
++
++ 5. Merging a common symbol with a previous smaller common
++ symbol. This is the same as the previous case, except that
++ the symbols are encountered in a different order.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overriding smaller common
++ FILE(SECTION): warning: smaller common is here
++
++`--warn-constructors'
++ Warn if any global constructors are used. This is only useful for
++ a few object file formats. For formats like COFF or ELF, the
++ linker can not detect the use of global constructors.
++
++`--warn-multiple-gp'
++ Warn if multiple global pointer values are required in the output
++ file. This is only meaningful for certain processors, such as the
++ Alpha. Specifically, some processors put large-valued constants
++ in a special section. A special register (the global pointer)
++ points into the middle of this section, so that constants can be
++ loaded efficiently via a base-register relative addressing mode.
++ Since the offset in base-register relative mode is fixed and
++ relatively small (e.g., 16 bits), this limits the maximum size of
++ the constant pool. Thus, in large programs, it is often necessary
++ to use multiple global pointer values in order to be able to
++ address all possible constants. This option causes a warning to
++ be issued whenever this case occurs.
++
++`--warn-once'
++ Only warn once for each undefined symbol, rather than once per
++ module which refers to it.
++
++`--warn-section-align'
++ Warn if the address of an output section is changed because of
++ alignment. Typically, the alignment will be set by an input
++ section. The address will only be changed if it not explicitly
++ specified; that is, if the `SECTIONS' command does not specify a
++ start address for the section (*note SECTIONS::).
++
++`--warn-shared-textrel'
++ Warn if the linker adds a DT_TEXTREL to a shared object.
++
++`--warn-unresolved-symbols'
++ If the linker is going to report an unresolved symbol (see the
++ option `--unresolved-symbols') it will normally generate an error.
++ This option makes it generate a warning instead.
++
++`--error-unresolved-symbols'
++ This restores the linker's default behaviour of generating errors
++ when it is reporting unresolved symbols.
++
++`--whole-archive'
++ For each archive mentioned on the command line after the
++ `--whole-archive' option, include every object file in the archive
++ in the link, rather than searching the archive for the required
++ object files. This is normally used to turn an archive file into
++ a shared library, forcing every object to be included in the
++ resulting shared library. This option may be used more than once.
++
++ Two notes when using this option from gcc: First, gcc doesn't know
++ about this option, so you have to use `-Wl,-whole-archive'.
++ Second, don't forget to use `-Wl,-no-whole-archive' after your
++ list of archives, because gcc will add its own list of archives to
++ your link and you may not want this flag to affect those as well.
++
++`--wrap SYMBOL'
++ Use a wrapper function for SYMBOL. Any undefined reference to
++ SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined
++ reference to `__real_SYMBOL' will be resolved to SYMBOL.
++
++ This can be used to provide a wrapper for a system function. The
++ wrapper function should be called `__wrap_SYMBOL'. If it wishes
++ to call the system function, it should call `__real_SYMBOL'.
++
++ Here is a trivial example:
++
++ void *
++ __wrap_malloc (size_t c)
++ {
++ printf ("malloc called with %zu\n", c);
++ return __real_malloc (c);
++ }
++
++ If you link other code with this file using `--wrap malloc', then
++ all calls to `malloc' will call the function `__wrap_malloc'
++ instead. The call to `__real_malloc' in `__wrap_malloc' will call
++ the real `malloc' function.
++
++ You may wish to provide a `__real_malloc' function as well, so that
++ links without the `--wrap' option will succeed. If you do this,
++ you should not put the definition of `__real_malloc' in the same
++ file as `__wrap_malloc'; if you do, the assembler may resolve the
++ call before the linker has a chance to wrap it to `malloc'.
++
++`--eh-frame-hdr'
++ Request creation of `.eh_frame_hdr' section and ELF
++ `PT_GNU_EH_FRAME' segment header.
++
++`--enable-new-dtags'
++`--disable-new-dtags'
++ This linker can create the new dynamic tags in ELF. But the older
++ ELF systems may not understand them. If you specify
++ `--enable-new-dtags', the dynamic tags will be created as needed.
++ If you specify `--disable-new-dtags', no new dynamic tags will be
++ created. By default, the new dynamic tags are not created. Note
++ that those options are only available for ELF systems.
++
++`--hash-size=NUMBER'
++ Set the default size of the linker's hash tables to a prime number
++ close to NUMBER. Increasing this value can reduce the length of
++ time it takes the linker to perform its tasks, at the expense of
++ increasing the linker's memory requirements. Similarly reducing
++ this value can reduce the memory requirements at the expense of
++ speed.
++
++`--reduce-memory-overheads'
++ This option reduces memory requirements at ld runtime, at the
++ expense of linking speed. This was introduced to select the old
++ O(n^2) algorithm for link map file generation, rather than the new
++ O(n) algorithm which uses about 40% more memory for symbol storage.
++
++ Another effect of the switch is to set the default hash table size
++ to 1021, which again saves memory at the cost of lengthening the
++ linker's run time. This is not done however if the `--hash-size'
++ switch has been used.
++
++ The `--reduce-memory-overheads' switch may be also be used to
++ enable other tradeoffs in future versions of the linker.
++
++
++2.1.1 Options Specific to i386 PE Targets
++-----------------------------------------
++
++The i386 PE linker supports the `-shared' option, which causes the
++output to be a dynamically linked library (DLL) instead of a normal
++executable. You should name the output `*.dll' when you use this
++option. In addition, the linker fully supports the standard `*.def'
++files, which may be specified on the linker command line like an object
++file (in fact, it should precede archives it exports symbols from, to
++ensure that they get linked in, just like a normal object file).
++
++ In addition to the options common to all targets, the i386 PE linker
++support additional command line options that are specific to the i386
++PE target. Options that take values may be separated from their values
++by either a space or an equals sign.
++
++`--add-stdcall-alias'
++ If given, symbols with a stdcall suffix (@NN) will be exported
++ as-is and also with the suffix stripped. [This option is specific
++ to the i386 PE targeted port of the linker]
++
++`--base-file FILE'
++ Use FILE as the name of a file in which to save the base addresses
++ of all the relocations needed for generating DLLs with `dlltool'.
++ [This is an i386 PE specific option]
++
++`--dll'
++ Create a DLL instead of a regular executable. You may also use
++ `-shared' or specify a `LIBRARY' in a given `.def' file. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--enable-stdcall-fixup'
++`--disable-stdcall-fixup'
++ If the link finds a symbol that it cannot resolve, it will attempt
++ to do "fuzzy linking" by looking for another defined symbol that
++ differs only in the format of the symbol name (cdecl vs stdcall)
++ and will resolve that symbol by linking to the match. For
++ example, the undefined symbol `_foo' might be linked to the
++ function `_foo@12', or the undefined symbol `_bar@16' might be
++ linked to the function `_bar'. When the linker does this, it
++ prints a warning, since it normally should have failed to link,
++ but sometimes import libraries generated from third-party dlls may
++ need this feature to be usable. If you specify
++ `--enable-stdcall-fixup', this feature is fully enabled and
++ warnings are not printed. If you specify
++ `--disable-stdcall-fixup', this feature is disabled and such
++ mismatches are considered to be errors. [This option is specific
++ to the i386 PE targeted port of the linker]
++
++`--export-all-symbols'
++ If given, all global symbols in the objects used to build a DLL
++ will be exported by the DLL. Note that this is the default if
++ there otherwise wouldn't be any exported symbols. When symbols are
++ explicitly exported via DEF files or implicitly exported via
++ function attributes, the default is to not export anything else
++ unless this option is given. Note that the symbols `DllMain@12',
++ `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will
++ not be automatically exported. Also, symbols imported from other
++ DLLs will not be re-exported, nor will symbols specifying the
++ DLL's internal layout such as those beginning with `_head_' or
++ ending with `_iname'. In addition, no symbols from `libgcc',
++ `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols
++ whose names begin with `__rtti_' or `__builtin_' will not be
++ exported, to help with C++ DLLs. Finally, there is an extensive
++ list of cygwin-private symbols that are not exported (obviously,
++ this applies on when building DLLs for cygwin targets). These
++ cygwin-excludes are: `_cygwin_dll_entry@12',
++ `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12',
++ `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0',
++ `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and
++ `environ'. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--exclude-symbols SYMBOL,SYMBOL,...'
++ Specifies a list of symbols which should not be automatically
++ exported. The symbol names may be delimited by commas or colons.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--file-alignment'
++ Specify the file alignment. Sections in the file will always
++ begin at file offsets which are multiples of this number. This
++ defaults to 512. [This option is specific to the i386 PE targeted
++ port of the linker]
++
++`--heap RESERVE'
++`--heap RESERVE,COMMIT'
++ Specify the amount of memory to reserve (and optionally commit) to
++ be used as heap for this program. The default is 1Mb reserved, 4K
++ committed. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--image-base VALUE'
++ Use VALUE as the base address of your program or dll. This is the
++ lowest memory location that will be used when your program or dll
++ is loaded. To reduce the need to relocate and improve performance
++ of your dlls, each should have a unique base address and not
++ overlap any other dlls. The default is 0x400000 for executables,
++ and 0x10000000 for dlls. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--kill-at'
++ If given, the stdcall suffixes (@NN) will be stripped from symbols
++ before they are exported. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--large-address-aware'
++ If given, the appropriate bit in the "Charateristics" field of the
++ COFF header is set to indicate that this executable supports
++ virtual addresses greater than 2 gigabytes. This should be used
++ in conjuction with the /3GB or /USERVA=VALUE megabytes switch in
++ the "[operating systems]" section of the BOOT.INI. Otherwise,
++ this bit has no effect. [This option is specific to PE targeted
++ ports of the linker]
++
++`--major-image-version VALUE'
++ Sets the major number of the "image version". Defaults to 1.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--major-os-version VALUE'
++ Sets the major number of the "os version". Defaults to 4. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--major-subsystem-version VALUE'
++ Sets the major number of the "subsystem version". Defaults to 4.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--minor-image-version VALUE'
++ Sets the minor number of the "image version". Defaults to 0.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--minor-os-version VALUE'
++ Sets the minor number of the "os version". Defaults to 0. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--minor-subsystem-version VALUE'
++ Sets the minor number of the "subsystem version". Defaults to 0.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--output-def FILE'
++ The linker will create the file FILE which will contain a DEF file
++ corresponding to the DLL the linker is generating. This DEF file
++ (which should be called `*.def') may be used to create an import
++ library with `dlltool' or may be used as a reference to
++ automatically or implicitly exported symbols. [This option is
++ specific to the i386 PE targeted port of the linker]
++
++`--out-implib FILE'
++ The linker will create the file FILE which will contain an import
++ lib corresponding to the DLL the linker is generating. This import
++ lib (which should be called `*.dll.a' or `*.a' may be used to link
++ clients against the generated DLL; this behaviour makes it
++ possible to skip a separate `dlltool' import library creation step.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--enable-auto-image-base'
++ Automatically choose the image base for DLLs, unless one is
++ specified using the `--image-base' argument. By using a hash
++ generated from the dllname to create unique image bases for each
++ DLL, in-memory collisions and relocations which can delay program
++ execution are avoided. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--disable-auto-image-base'
++ Do not automatically generate a unique image base. If there is no
++ user-specified image base (`--image-base') then use the platform
++ default. [This option is specific to the i386 PE targeted port of
++ the linker]
++
++`--dll-search-prefix STRING'
++ When linking dynamically to a dll without an import library,
++ search for `<string><basename>.dll' in preference to
++ `lib<basename>.dll'. This behaviour allows easy distinction
++ between DLLs built for the various "subplatforms": native, cygwin,
++ uwin, pw, etc. For instance, cygwin DLLs typically use
++ `--dll-search-prefix=cyg'. [This option is specific to the i386
++ PE targeted port of the linker]
++
++`--enable-auto-import'
++ Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA
++ imports from DLLs, and create the necessary thunking symbols when
++ building the import libraries with those DATA exports. Note: Use
++ of the 'auto-import' extension will cause the text section of the
++ image file to be made writable. This does not conform to the
++ PE-COFF format specification published by Microsoft.
++
++ Using 'auto-import' generally will 'just work' - but sometimes you
++ may see this message:
++
++ "variable '<var>' can't be auto-imported. Please read the
++ documentation for ld's `--enable-auto-import' for details."
++
++ This message occurs when some (sub)expression accesses an address
++ ultimately given by the sum of two constants (Win32 import tables
++ only allow one). Instances where this may occur include accesses
++ to member fields of struct variables imported from a DLL, as well
++ as using a constant index into an array variable imported from a
++ DLL. Any multiword variable (arrays, structs, long long, etc) may
++ trigger this error condition. However, regardless of the exact
++ data type of the offending exported variable, ld will always
++ detect it, issue the warning, and exit.
++
++ There are several ways to address this difficulty, regardless of
++ the data type of the exported variable:
++
++ One way is to use -enable-runtime-pseudo-reloc switch. This leaves
++ the task of adjusting references in your client code for runtime
++ environment, so this method works only when runtime environment
++ supports this feature.
++
++ A second solution is to force one of the 'constants' to be a
++ variable - that is, unknown and un-optimizable at compile time.
++ For arrays, there are two possibilities: a) make the indexee (the
++ array's address) a variable, or b) make the 'constant' index a
++ variable. Thus:
++
++ extern type extern_array[];
++ extern_array[1] -->
++ { volatile type *t=extern_array; t[1] }
++
++ or
++
++ extern type extern_array[];
++ extern_array[1] -->
++ { volatile int t=1; extern_array[t] }
++
++ For structs (and most other multiword data types) the only option
++ is to make the struct itself (or the long long, or the ...)
++ variable:
++
++ extern struct s extern_struct;
++ extern_struct.field -->
++ { volatile struct s *t=&extern_struct; t->field }
++
++ or
++
++ extern long long extern_ll;
++ extern_ll -->
++ { volatile long long * local_ll=&extern_ll; *local_ll }
++
++ A third method of dealing with this difficulty is to abandon
++ 'auto-import' for the offending symbol and mark it with
++ `__declspec(dllimport)'. However, in practise that requires using
++ compile-time #defines to indicate whether you are building a DLL,
++ building client code that will link to the DLL, or merely
++ building/linking to a static library. In making the choice
++ between the various methods of resolving the 'direct address with
++ constant offset' problem, you should consider typical real-world
++ usage:
++
++ Original:
++ --foo.h
++ extern int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ printf("%d\n",arr[1]);
++ }
++
++ Solution 1:
++ --foo.h
++ extern int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ /* This workaround is for win32 and cygwin; do not "optimize" */
++ volatile int *parr = arr;
++ printf("%d\n",parr[1]);
++ }
++
++ Solution 2:
++ --foo.h
++ /* Note: auto-export is assumed (no __declspec(dllexport)) */
++ #if (defined(_WIN32) || defined(__CYGWIN__)) && \
++ !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
++ #define FOO_IMPORT __declspec(dllimport)
++ #else
++ #define FOO_IMPORT
++ #endif
++ extern FOO_IMPORT int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ printf("%d\n",arr[1]);
++ }
++
++ A fourth way to avoid this problem is to re-code your library to
++ use a functional interface rather than a data interface for the
++ offending variables (e.g. set_foo() and get_foo() accessor
++ functions). [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--disable-auto-import'
++ Do not attempt to do sophisticated linking of `_symbol' to
++ `__imp__symbol' for DATA imports from DLLs. [This option is
++ specific to the i386 PE targeted port of the linker]
++
++`--enable-runtime-pseudo-reloc'
++ If your code contains expressions described in -enable-auto-import
++ section, that is, DATA imports from DLL with non-zero offset, this
++ switch will create a vector of 'runtime pseudo relocations' which
++ can be used by runtime environment to adjust references to such
++ data in your client code. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--disable-runtime-pseudo-reloc'
++ Do not create pseudo relocations for non-zero offset DATA imports
++ from DLLs. This is the default. [This option is specific to the
++ i386 PE targeted port of the linker]
++
++`--enable-extra-pe-debug'
++ Show additional debug info related to auto-import symbol thunking.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--section-alignment'
++ Sets the section alignment. Sections in memory will always begin
++ at addresses which are a multiple of this number. Defaults to
++ 0x1000. [This option is specific to the i386 PE targeted port of
++ the linker]
++
++`--stack RESERVE'
++`--stack RESERVE,COMMIT'
++ Specify the amount of memory to reserve (and optionally commit) to
++ be used as stack for this program. The default is 2Mb reserved, 4K
++ committed. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--subsystem WHICH'
++`--subsystem WHICH:MAJOR'
++`--subsystem WHICH:MAJOR.MINOR'
++ Specifies the subsystem under which your program will execute. The
++ legal values for WHICH are `native', `windows', `console',
++ `posix', and `xbox'. You may optionally set the subsystem version
++ also. Numeric values are also accepted for WHICH. [This option
++ is specific to the i386 PE targeted port of the linker]
++
++
++
++File: ld.info, Node: Environment, Prev: Options, Up: Invocation
++
++2.2 Environment Variables
++=========================
++
++You can change the behaviour of `ld' with the environment variables
++`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'.
++
++ `GNUTARGET' determines the input-file object format if you don't use
++`-b' (or its synonym `--format'). Its value should be one of the BFD
++names for an input format (*note BFD::). If there is no `GNUTARGET' in
++the environment, `ld' uses the natural format of the target. If
++`GNUTARGET' is set to `default' then BFD attempts to discover the input
++format by examining binary input files; this method often succeeds, but
++there are potential ambiguities, since there is no method of ensuring
++that the magic number used to specify object-file formats is unique.
++However, the configuration procedure for BFD on each system places the
++conventional format for that system first in the search-list, so
++ambiguities are resolved in favor of convention.
++
++ `LDEMULATION' determines the default emulation if you don't use the
++`-m' option. The emulation can affect various aspects of linker
++behaviour, particularly the default linker script. You can list the
++available emulations with the `--verbose' or `-V' options. If the `-m'
++option is not used, and the `LDEMULATION' environment variable is not
++defined, the default emulation depends upon how the linker was
++configured.
++
++ Normally, the linker will default to demangling symbols. However, if
++`COLLECT_NO_DEMANGLE' is set in the environment, then it will default
++to not demangling symbols. This environment variable is used in a
++similar fashion by the `gcc' linker wrapper program. The default may
++be overridden by the `--demangle' and `--no-demangle' options.
++
++
++File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top
++
++3 Linker Scripts
++****************
++
++Every link is controlled by a "linker script". This script is written
++in the linker command language.
++
++ The main purpose of the linker script is to describe how the
++sections in the input files should be mapped into the output file, and
++to control the memory layout of the output file. Most linker scripts
++do nothing more than this. However, when necessary, the linker script
++can also direct the linker to perform many other operations, using the
++commands described below.
++
++ The linker always uses a linker script. If you do not supply one
++yourself, the linker will use a default script that is compiled into the
++linker executable. You can use the `--verbose' command line option to
++display the default linker script. Certain command line options, such
++as `-r' or `-N', will affect the default linker script.
++
++ You may supply your own linker script by using the `-T' command line
++option. When you do this, your linker script will replace the default
++linker script.
++
++ You may also use linker scripts implicitly by naming them as input
++files to the linker, as though they were files to be linked. *Note
++Implicit Linker Scripts::.
++
++* Menu:
++
++* Basic Script Concepts:: Basic Linker Script Concepts
++* Script Format:: Linker Script Format
++* Simple Example:: Simple Linker Script Example
++* Simple Commands:: Simple Linker Script Commands
++* Assignments:: Assigning Values to Symbols
++* SECTIONS:: SECTIONS Command
++* MEMORY:: MEMORY Command
++* PHDRS:: PHDRS Command
++* VERSION:: VERSION Command
++* Expressions:: Expressions in Linker Scripts
++* Implicit Linker Scripts:: Implicit Linker Scripts
++
++
++File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts
++
++3.1 Basic Linker Script Concepts
++================================
++
++We need to define some basic concepts and vocabulary in order to
++describe the linker script language.
++
++ The linker combines input files into a single output file. The
++output file and each input file are in a special data format known as an
++"object file format". Each file is called an "object file". The
++output file is often called an "executable", but for our purposes we
++will also call it an object file. Each object file has, among other
++things, a list of "sections". We sometimes refer to a section in an
++input file as an "input section"; similarly, a section in the output
++file is an "output section".
++
++ Each section in an object file has a name and a size. Most sections
++also have an associated block of data, known as the "section contents".
++A section may be marked as "loadable", which mean that the contents
++should be loaded into memory when the output file is run. A section
++with no contents may be "allocatable", which means that an area in
++memory should be set aside, but nothing in particular should be loaded
++there (in some cases this memory must be zeroed out). A section which
++is neither loadable nor allocatable typically contains some sort of
++debugging information.
++
++ Every loadable or allocatable output section has two addresses. The
++first is the "VMA", or virtual memory address. This is the address the
++section will have when the output file is run. The second is the
++"LMA", or load memory address. This is the address at which the
++section will be loaded. In most cases the two addresses will be the
++same. An example of when they might be different is when a data section
++is loaded into ROM, and then copied into RAM when the program starts up
++(this technique is often used to initialize global variables in a ROM
++based system). In this case the ROM address would be the LMA, and the
++RAM address would be the VMA.
++
++ You can see the sections in an object file by using the `objdump'
++program with the `-h' option.
++
++ Every object file also has a list of "symbols", known as the "symbol
++table". A symbol may be defined or undefined. Each symbol has a name,
++and each defined symbol has an address, among other information. If
++you compile a C or C++ program into an object file, you will get a
++defined symbol for every defined function and global or static
++variable. Every undefined function or global variable which is
++referenced in the input file will become an undefined symbol.
++
++ You can see the symbols in an object file by using the `nm' program,
++or by using the `objdump' program with the `-t' option.
++
++
++File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts
++
++3.2 Linker Script Format
++========================
++
++Linker scripts are text files.
++
++ You write a linker script as a series of commands. Each command is
++either a keyword, possibly followed by arguments, or an assignment to a
++symbol. You may separate commands using semicolons. Whitespace is
++generally ignored.
++
++ Strings such as file or format names can normally be entered
++directly. If the file name contains a character such as a comma which
++would otherwise serve to separate file names, you may put the file name
++in double quotes. There is no way to use a double quote character in a
++file name.
++
++ You may include comments in linker scripts just as in C, delimited by
++`/*' and `*/'. As in C, comments are syntactically equivalent to
++whitespace.
++
++
++File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts
++
++3.3 Simple Linker Script Example
++================================
++
++Many linker scripts are fairly simple.
++
++ The simplest possible linker script has just one command:
++`SECTIONS'. You use the `SECTIONS' command to describe the memory
++layout of the output file.
++
++ The `SECTIONS' command is a powerful command. Here we will describe
++a simple use of it. Let's assume your program consists only of code,
++initialized data, and uninitialized data. These will be in the
++`.text', `.data', and `.bss' sections, respectively. Let's assume
++further that these are the only sections which appear in your input
++files.
++
++ For this example, let's say that the code should be loaded at address
++0x10000, and that the data should start at address 0x8000000. Here is a
++linker script which will do that:
++ SECTIONS
++ {
++ . = 0x10000;
++ .text : { *(.text) }
++ . = 0x8000000;
++ .data : { *(.data) }
++ .bss : { *(.bss) }
++ }
++
++ You write the `SECTIONS' command as the keyword `SECTIONS', followed
++by a series of symbol assignments and output section descriptions
++enclosed in curly braces.
++
++ The first line inside the `SECTIONS' command of the above example
++sets the value of the special symbol `.', which is the location
++counter. If you do not specify the address of an output section in some
++other way (other ways are described later), the address is set from the
++current value of the location counter. The location counter is then
++incremented by the size of the output section. At the start of the
++`SECTIONS' command, the location counter has the value `0'.
++
++ The second line defines an output section, `.text'. The colon is
++required syntax which may be ignored for now. Within the curly braces
++after the output section name, you list the names of the input sections
++which should be placed into this output section. The `*' is a wildcard
++which matches any file name. The expression `*(.text)' means all
++`.text' input sections in all input files.
++
++ Since the location counter is `0x10000' when the output section
++`.text' is defined, the linker will set the address of the `.text'
++section in the output file to be `0x10000'.
++
++ The remaining lines define the `.data' and `.bss' sections in the
++output file. The linker will place the `.data' output section at
++address `0x8000000'. After the linker places the `.data' output
++section, the value of the location counter will be `0x8000000' plus the
++size of the `.data' output section. The effect is that the linker will
++place the `.bss' output section immediately after the `.data' output
++section in memory.
++
++ The linker will ensure that each output section has the required
++alignment, by increasing the location counter if necessary. In this
++example, the specified addresses for the `.text' and `.data' sections
++will probably satisfy any alignment constraints, but the linker may
++have to create a small gap between the `.data' and `.bss' sections.
++
++ That's it! That's a simple and complete linker script.
++
++
++File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts
++
++3.4 Simple Linker Script Commands
++=================================
++
++In this section we describe the simple linker script commands.
++
++* Menu:
++
++* Entry Point:: Setting the entry point
++* File Commands:: Commands dealing with files
++
++* Format Commands:: Commands dealing with object file formats
++
++* Miscellaneous Commands:: Other linker script commands
++
++
++File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands
++
++3.4.1 Setting the Entry Point
++-----------------------------
++
++The first instruction to execute in a program is called the "entry
++point". You can use the `ENTRY' linker script command to set the entry
++point. The argument is a symbol name:
++ ENTRY(SYMBOL)
++
++ There are several ways to set the entry point. The linker will set
++the entry point by trying each of the following methods in order, and
++stopping when one of them succeeds:
++ * the `-e' ENTRY command-line option;
++
++ * the `ENTRY(SYMBOL)' command in a linker script;
++
++ * the value of the symbol `start', if defined;
++
++ * the address of the first byte of the `.text' section, if present;
++
++ * The address `0'.
++
++
++File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands
++
++3.4.2 Commands Dealing with Files
++---------------------------------
++
++Several linker script commands deal with files.
++
++`INCLUDE FILENAME'
++ Include the linker script FILENAME at this point. The file will
++ be searched for in the current directory, and in any directory
++ specified with the `-L' option. You can nest calls to `INCLUDE'
++ up to 10 levels deep.
++
++`INPUT(FILE, FILE, ...)'
++`INPUT(FILE FILE ...)'
++ The `INPUT' command directs the linker to include the named files
++ in the link, as though they were named on the command line.
++
++ For example, if you always want to include `subr.o' any time you do
++ a link, but you can't be bothered to put it on every link command
++ line, then you can put `INPUT (subr.o)' in your linker script.
++
++ In fact, if you like, you can list all of your input files in the
++ linker script, and then invoke the linker with nothing but a `-T'
++ option.
++
++ In case a "sysroot prefix" is configured, and the filename starts
++ with the `/' character, and the script being processed was located
++ inside the "sysroot prefix", the filename will be looked for in
++ the "sysroot prefix". Otherwise, the linker will try to open the
++ file in the current directory. If it is not found, the linker
++ will search through the archive library search path. See the
++ description of `-L' in *Note Command Line Options: Options.
++
++ If you use `INPUT (-lFILE)', `ld' will transform the name to
++ `libFILE.a', as with the command line argument `-l'.
++
++ When you use the `INPUT' command in an implicit linker script, the
++ files will be included in the link at the point at which the linker
++ script file is included. This can affect archive searching.
++
++`GROUP(FILE, FILE, ...)'
++`GROUP(FILE FILE ...)'
++ The `GROUP' command is like `INPUT', except that the named files
++ should all be archives, and they are searched repeatedly until no
++ new undefined references are created. See the description of `-('
++ in *Note Command Line Options: Options.
++
++`AS_NEEDED(FILE, FILE, ...)'
++`AS_NEEDED(FILE FILE ...)'
++ This construct can appear only inside of the `INPUT' or `GROUP'
++ commands, among other filenames. The files listed will be handled
++ as if they appear directly in the `INPUT' or `GROUP' commands,
++ with the exception of ELF shared libraries, that will be added only
++ when they are actually needed. This construct essentially enables
++ `--as-needed' option for all the files listed inside of it and
++ restores previous `--as-needed' resp. `--no-as-needed' setting
++ afterwards.
++
++`OUTPUT(FILENAME)'
++ The `OUTPUT' command names the output file. Using
++ `OUTPUT(FILENAME)' in the linker script is exactly like using `-o
++ FILENAME' on the command line (*note Command Line Options:
++ Options.). If both are used, the command line option takes
++ precedence.
++
++ You can use the `OUTPUT' command to define a default name for the
++ output file other than the usual default of `a.out'.
++
++`SEARCH_DIR(PATH)'
++ The `SEARCH_DIR' command adds PATH to the list of paths where `ld'
++ looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly
++ like using `-L PATH' on the command line (*note Command Line
++ Options: Options.). If both are used, then the linker will search
++ both paths. Paths specified using the command line option are
++ searched first.
++
++`STARTUP(FILENAME)'
++ The `STARTUP' command is just like the `INPUT' command, except
++ that FILENAME will become the first input file to be linked, as
++ though it were specified first on the command line. This may be
++ useful when using a system in which the entry point is always the
++ start of the first file.
++
++
++File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands
++
++3.4.3 Commands Dealing with Object File Formats
++-----------------------------------------------
++
++A couple of linker script commands deal with object file formats.
++
++`OUTPUT_FORMAT(BFDNAME)'
++`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)'
++ The `OUTPUT_FORMAT' command names the BFD format to use for the
++ output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is
++ exactly like using `--oformat BFDNAME' on the command line (*note
++ Command Line Options: Options.). If both are used, the command
++ line option takes precedence.
++
++ You can use `OUTPUT_FORMAT' with three arguments to use different
++ formats based on the `-EB' and `-EL' command line options. This
++ permits the linker script to set the output format based on the
++ desired endianness.
++
++ If neither `-EB' nor `-EL' are used, then the output format will
++ be the first argument, DEFAULT. If `-EB' is used, the output
++ format will be the second argument, BIG. If `-EL' is used, the
++ output format will be the third argument, LITTLE.
++
++ For example, the default linker script for the MIPS ELF target
++ uses this command:
++ OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
++ This says that the default format for the output file is
++ `elf32-bigmips', but if the user uses the `-EL' command line
++ option, the output file will be created in the `elf32-littlemips'
++ format.
++
++`TARGET(BFDNAME)'
++ The `TARGET' command names the BFD format to use when reading input
++ files. It affects subsequent `INPUT' and `GROUP' commands. This
++ command is like using `-b BFDNAME' on the command line (*note
++ Command Line Options: Options.). If the `TARGET' command is used
++ but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also
++ used to set the format for the output file. *Note BFD::.
++
++
++File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands
++
++3.4.4 Other Linker Script Commands
++----------------------------------
++
++There are a few other linker scripts commands.
++
++`ASSERT(EXP, MESSAGE)'
++ Ensure that EXP is non-zero. If it is zero, then exit the linker
++ with an error code, and print MESSAGE.
++
++`EXTERN(SYMBOL SYMBOL ...)'
++ Force SYMBOL to be entered in the output file as an undefined
++ symbol. Doing this may, for example, trigger linking of additional
++ modules from standard libraries. You may list several SYMBOLs for
++ each `EXTERN', and you may use `EXTERN' multiple times. This
++ command has the same effect as the `-u' command-line option.
++
++`FORCE_COMMON_ALLOCATION'
++ This command has the same effect as the `-d' command-line option:
++ to make `ld' assign space to common symbols even if a relocatable
++ output file is specified (`-r').
++
++`INHIBIT_COMMON_ALLOCATION'
++ This command has the same effect as the `--no-define-common'
++ command-line option: to make `ld' omit the assignment of addresses
++ to common symbols even for a non-relocatable output file.
++
++`NOCROSSREFS(SECTION SECTION ...)'
++ This command may be used to tell `ld' to issue an error about any
++ references among certain output sections.
++
++ In certain types of programs, particularly on embedded systems when
++ using overlays, when one section is loaded into memory, another
++ section will not be. Any direct references between the two
++ sections would be errors. For example, it would be an error if
++ code in one section called a function defined in the other section.
++
++ The `NOCROSSREFS' command takes a list of output section names. If
++ `ld' detects any cross references between the sections, it reports
++ an error and returns a non-zero exit status. Note that the
++ `NOCROSSREFS' command uses output section names, not input section
++ names.
++
++`OUTPUT_ARCH(BFDARCH)'
++ Specify a particular output machine architecture. The argument is
++ one of the names used by the BFD library (*note BFD::). You can
++ see the architecture of an object file by using the `objdump'
++ program with the `-f' option.
++
++
++File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts
++
++3.5 Assigning Values to Symbols
++===============================
++
++You may assign a value to a symbol in a linker script. This will define
++the symbol and place it into the symbol table with a global scope.
++
++* Menu:
++
++* Simple Assignments:: Simple Assignments
++* PROVIDE:: PROVIDE
++* PROVIDE_HIDDEN:: PROVIDE_HIDDEN
++* Source Code Reference:: How to use a linker script defined symbol in source code
++
++
++File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments
++
++3.5.1 Simple Assignments
++------------------------
++
++You may assign to a symbol using any of the C assignment operators:
++
++`SYMBOL = EXPRESSION ;'
++`SYMBOL += EXPRESSION ;'
++`SYMBOL -= EXPRESSION ;'
++`SYMBOL *= EXPRESSION ;'
++`SYMBOL /= EXPRESSION ;'
++`SYMBOL <<= EXPRESSION ;'
++`SYMBOL >>= EXPRESSION ;'
++`SYMBOL &= EXPRESSION ;'
++`SYMBOL |= EXPRESSION ;'
++
++ The first case will define SYMBOL to the value of EXPRESSION. In
++the other cases, SYMBOL must already be defined, and the value will be
++adjusted accordingly.
++
++ The special symbol name `.' indicates the location counter. You may
++only use this within a `SECTIONS' command. *Note Location Counter::.
++
++ The semicolon after EXPRESSION is required.
++
++ Expressions are defined below; see *Note Expressions::.
++
++ You may write symbol assignments as commands in their own right, or
++as statements within a `SECTIONS' command, or as part of an output
++section description in a `SECTIONS' command.
++
++ The section of the symbol will be set from the section of the
++expression; for more information, see *Note Expression Section::.
++
++ Here is an example showing the three different places that symbol
++assignments may be used:
++
++ floating_point = 0;
++ SECTIONS
++ {
++ .text :
++ {
++ *(.text)
++ _etext = .;
++ }
++ _bdata = (. + 3) & ~ 3;
++ .data : { *(.data) }
++ }
++ In this example, the symbol `floating_point' will be defined as
++zero. The symbol `_etext' will be defined as the address following the
++last `.text' input section. The symbol `_bdata' will be defined as the
++address following the `.text' output section aligned upward to a 4 byte
++boundary.
++
++
++File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: Simple Assignments, Up: Assignments
++
++3.5.2 PROVIDE
++-------------
++
++In some cases, it is desirable for a linker script to define a symbol
++only if it is referenced and is not defined by any object included in
++the link. For example, traditional linkers defined the symbol `etext'.
++However, ANSI C requires that the user be able to use `etext' as a
++function name without encountering an error. The `PROVIDE' keyword may
++be used to define a symbol, such as `etext', only if it is referenced
++but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'.
++
++ Here is an example of using `PROVIDE' to define `etext':
++ SECTIONS
++ {
++ .text :
++ {
++ *(.text)
++ _etext = .;
++ PROVIDE(etext = .);
++ }
++ }
++
++ In this example, if the program defines `_etext' (with a leading
++underscore), the linker will give a multiple definition error. If, on
++the other hand, the program defines `etext' (with no leading
++underscore), the linker will silently use the definition in the program.
++If the program references `etext' but does not define it, the linker
++will use the definition in the linker script.
++
++
++File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments
++
++3.5.3 PROVIDE_HIDDEN
++--------------------
++
++Similar to `PROVIDE'. For ELF targeted ports, the symbol will be
++hidden and won't be exported.
++
++
++File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments
++
++3.5.4 Source Code Reference
++---------------------------
++
++Accessing a linker script defined variable from source code is not
++intuitive. In particular a linker script symbol is not equivalent to a
++variable declaration in a high level language, it is instead a symbol
++that does not have a value.
++
++ Before going further, it is important to note that compilers often
++transform names in the source code into different names when they are
++stored in the symbol table. For example, Fortran compilers commonly
++prepend or append an underscore, and C++ performs extensive `name
++mangling'. Therefore there might be a discrepancy between the name of
++a variable as it is used in source code and the name of the same
++variable as it is defined in a linker script. For example in C a
++linker script variable might be referred to as:
++
++ extern int foo;
++
++ But in the linker script it might be defined as:
++
++ _foo = 1000;
++
++ In the remaining examples however it is assumed that no name
++transformation has taken place.
++
++ When a symbol is declared in a high level language such as C, two
++things happen. The first is that the compiler reserves enough space in
++the program's memory to hold the _value_ of the symbol. The second is
++that the compiler creates an entry in the program's symbol table which
++holds the symbol's _address_. ie the symbol table contains the address
++of the block of memory holding the symbol's value. So for example the
++following C declaration, at file scope:
++
++ int foo = 1000;
++
++ creates a entry called `foo' in the symbol table. This entry holds
++the address of an `int' sized block of memory where the number 1000 is
++initially stored.
++
++ When a program references a symbol the compiler generates code that
++first accesses the symbol table to find the address of the symbol's
++memory block and then code to read the value from that memory block.
++So:
++
++ foo = 1;
++
++ looks up the symbol `foo' in the symbol table, gets the address
++associated with this symbol and then writes the value 1 into that
++address. Whereas:
++
++ int * a = & foo;
++
++ looks up the symbol `foo' in the symbol table, gets it address and
++then copies this address into the block of memory associated with the
++variable `a'.
++
++ Linker scripts symbol declarations, by contrast, create an entry in
++the symbol table but do not assign any memory to them. Thus they are
++an address without a value. So for example the linker script
++definition:
++
++ foo = 1000;
++
++ creates an entry in the symbol table called `foo' which holds the
++address of memory location 1000, but nothing special is stored at
++address 1000. This means that you cannot access the _value_ of a
++linker script defined symbol - it has no value - all you can do is
++access the _address_ of a linker script defined symbol.
++
++ Hence when you are using a linker script defined symbol in source
++code you should always take the address of the symbol, and never
++attempt to use its value. For example suppose you want to copy the
++contents of a section of memory called .ROM into a section called
++.FLASH and the linker script contains these declarations:
++
++ start_of_ROM = .ROM;
++ end_of_ROM = .ROM + sizeof (.ROM) - 1;
++ start_of_FLASH = .FLASH;
++
++ Then the C source code to perform the copy would be:
++
++ extern char start_of_ROM, end_of_ROM, start_of_FLASH;
++
++ memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM);
++
++ Note the use of the `&' operators. These are correct.
++
++
++File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts
++
++3.6 SECTIONS Command
++====================
++
++The `SECTIONS' command tells the linker how to map input sections into
++output sections, and how to place the output sections in memory.
++
++ The format of the `SECTIONS' command is:
++ SECTIONS
++ {
++ SECTIONS-COMMAND
++ SECTIONS-COMMAND
++ ...
++ }
++
++ Each SECTIONS-COMMAND may of be one of the following:
++
++ * an `ENTRY' command (*note Entry command: Entry Point.)
++
++ * a symbol assignment (*note Assignments::)
++
++ * an output section description
++
++ * an overlay description
++
++ The `ENTRY' command and symbol assignments are permitted inside the
++`SECTIONS' command for convenience in using the location counter in
++those commands. This can also make the linker script easier to
++understand because you can use those commands at meaningful points in
++the layout of the output file.
++
++ Output section descriptions and overlay descriptions are described
++below.
++
++ If you do not use a `SECTIONS' command in your linker script, the
++linker will place each input section into an identically named output
++section in the order that the sections are first encountered in the
++input files. If all input sections are present in the first file, for
++example, the order of sections in the output file will match the order
++in the first input file. The first section will be at address zero.
++
++* Menu:
++
++* Output Section Description:: Output section description
++* Output Section Name:: Output section name
++* Output Section Address:: Output section address
++* Input Section:: Input section description
++* Output Section Data:: Output section data
++* Output Section Keywords:: Output section keywords
++* Output Section Discarding:: Output section discarding
++* Output Section Attributes:: Output section attributes
++* Overlay Description:: Overlay description
++
++
++File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS
++
++3.6.1 Output Section Description
++--------------------------------
++
++The full description of an output section looks like this:
++ SECTION [ADDRESS] [(TYPE)] :
++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
++
++ Most output sections do not use most of the optional section
++attributes.
++
++ The whitespace around SECTION is required, so that the section name
++is unambiguous. The colon and the curly braces are also required. The
++line breaks and other white space are optional.
++
++ Each OUTPUT-SECTION-COMMAND may be one of the following:
++
++ * a symbol assignment (*note Assignments::)
++
++ * an input section description (*note Input Section::)
++
++ * data values to include directly (*note Output Section Data::)
++
++ * a special output section keyword (*note Output Section Keywords::)
++
++
++File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS
++
++3.6.2 Output Section Name
++-------------------------
++
++The name of the output section is SECTION. SECTION must meet the
++constraints of your output format. In formats which only support a
++limited number of sections, such as `a.out', the name must be one of
++the names supported by the format (`a.out', for example, allows only
++`.text', `.data' or `.bss'). If the output format supports any number
++of sections, but with numbers and not names (as is the case for Oasys),
++the name should be supplied as a quoted numeric string. A section name
++may consist of any sequence of characters, but a name which contains
++any unusual characters such as commas must be quoted.
++
++ The output section name `/DISCARD/' is special; *Note Output Section
++Discarding::.
++
++
++File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS
++
++3.6.3 Output Section Address
++----------------------------
++
++The ADDRESS is an expression for the VMA (the virtual memory address)
++of the output section. If you do not provide ADDRESS, the linker will
++set it based on REGION if present, or otherwise based on the current
++value of the location counter.
++
++ If you provide ADDRESS, the address of the output section will be
++set to precisely that. If you provide neither ADDRESS nor REGION, then
++the address of the output section will be set to the current value of
++the location counter aligned to the alignment requirements of the
++output section. The alignment requirement of the output section is the
++strictest alignment of any input section contained within the output
++section.
++
++ For example,
++ .text . : { *(.text) }
++ and
++ .text : { *(.text) }
++ are subtly different. The first will set the address of the `.text'
++output section to the current value of the location counter. The
++second will set it to the current value of the location counter aligned
++to the strictest alignment of a `.text' input section.
++
++ The ADDRESS may be an arbitrary expression; *Note Expressions::.
++For example, if you want to align the section on a 0x10 byte boundary,
++so that the lowest four bits of the section address are zero, you could
++do something like this:
++ .text ALIGN(0x10) : { *(.text) }
++ This works because `ALIGN' returns the current location counter
++aligned upward to the specified value.
++
++ Specifying ADDRESS for a section will change the value of the
++location counter.
++
++
++File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS
++
++3.6.4 Input Section Description
++-------------------------------
++
++The most common output section command is an input section description.
++
++ The input section description is the most basic linker script
++operation. You use output sections to tell the linker how to lay out
++your program in memory. You use input section descriptions to tell the
++linker how to map the input files into your memory layout.
++
++* Menu:
++
++* Input Section Basics:: Input section basics
++* Input Section Wildcards:: Input section wildcard patterns
++* Input Section Common:: Input section for common symbols
++* Input Section Keep:: Input section and garbage collection
++* Input Section Example:: Input section example
++
++
++File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section
++
++3.6.4.1 Input Section Basics
++............................
++
++An input section description consists of a file name optionally followed
++by a list of section names in parentheses.
++
++ The file name and the section name may be wildcard patterns, which we
++describe further below (*note Input Section Wildcards::).
++
++ The most common input section description is to include all input
++sections with a particular name in the output section. For example, to
++include all input `.text' sections, you would write:
++ *(.text)
++ Here the `*' is a wildcard which matches any file name. To exclude
++a list of files from matching the file name wildcard, EXCLUDE_FILE may
++be used to match all files except the ones specified in the
++EXCLUDE_FILE list. For example:
++ (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors))
++ will cause all .ctors sections from all files except `crtend.o' and
++`otherfile.o' to be included.
++
++ There are two ways to include more than one section:
++ *(.text .rdata)
++ *(.text) *(.rdata)
++ The difference between these is the order in which the `.text' and
++`.rdata' input sections will appear in the output section. In the
++first example, they will be intermingled, appearing in the same order as
++they are found in the linker input. In the second example, all `.text'
++input sections will appear first, followed by all `.rdata' input
++sections.
++
++ You can specify a file name to include sections from a particular
++file. You would do this if one or more of your files contain special
++data that needs to be at a particular location in memory. For example:
++ data.o(.data)
++
++ If you use a file name without a list of sections, then all sections
++in the input file will be included in the output section. This is not
++commonly done, but it may by useful on occasion. For example:
++ data.o
++
++ When you use a file name which does not contain any wild card
++characters, the linker will first see if you also specified the file
++name on the linker command line or in an `INPUT' command. If you did
++not, the linker will attempt to open the file as an input file, as
++though it appeared on the command line. Note that this differs from an
++`INPUT' command, because the linker will not search for the file in the
++archive search path.
++
++
++File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section
++
++3.6.4.2 Input Section Wildcard Patterns
++.......................................
++
++In an input section description, either the file name or the section
++name or both may be wildcard patterns.
++
++ The file name of `*' seen in many examples is a simple wildcard
++pattern for the file name.
++
++ The wildcard patterns are like those used by the Unix shell.
++
++`*'
++ matches any number of characters
++
++`?'
++ matches any single character
++
++`[CHARS]'
++ matches a single instance of any of the CHARS; the `-' character
++ may be used to specify a range of characters, as in `[a-z]' to
++ match any lower case letter
++
++`\'
++ quotes the following character
++
++ When a file name is matched with a wildcard, the wildcard characters
++will not match a `/' character (used to separate directory names on
++Unix). A pattern consisting of a single `*' character is an exception;
++it will always match any file name, whether it contains a `/' or not.
++In a section name, the wildcard characters will match a `/' character.
++
++ File name wildcard patterns only match files which are explicitly
++specified on the command line or in an `INPUT' command. The linker
++does not search directories to expand wildcards.
++
++ If a file name matches more than one wildcard pattern, or if a file
++name appears explicitly and is also matched by a wildcard pattern, the
++linker will use the first match in the linker script. For example, this
++sequence of input section descriptions is probably in error, because the
++`data.o' rule will not be used:
++ .data : { *(.data) }
++ .data1 : { data.o(.data) }
++
++ Normally, the linker will place files and sections matched by
++wildcards in the order in which they are seen during the link. You can
++change this by using the `SORT_BY_NAME' keyword, which appears before a
++wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When
++the `SORT_BY_NAME' keyword is used, the linker will sort the files or
++sections into ascending order by name before placing them in the output
++file.
++
++ `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The
++difference is `SORT_BY_ALIGNMENT' will sort sections into ascending
++order by alignment before placing them in the output file.
++
++ `SORT' is an alias for `SORT_BY_NAME'.
++
++ When there are nested section sorting commands in linker script,
++there can be at most 1 level of nesting for section sorting commands.
++
++ 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)).
++ It will sort the input sections by name first, then by alignment
++ if 2 sections have the same name.
++
++ 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)).
++ It will sort the input sections by alignment first, then by name
++ if 2 sections have the same alignment.
++
++ 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is
++ treated the same as `SORT_BY_NAME' (wildcard section pattern).
++
++ 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section
++ pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard
++ section pattern).
++
++ 5. All other nested section sorting commands are invalid.
++
++ When both command line section sorting option and linker script
++section sorting command are used, section sorting command always takes
++precedence over the command line option.
++
++ If the section sorting command in linker script isn't nested, the
++command line option will make the section sorting command to be treated
++as nested sorting command.
++
++ 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections
++ alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT'
++ (wildcard section pattern)).
++
++ 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with
++ `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT'
++ (`SORT_BY_NAME' (wildcard section pattern)).
++
++ If the section sorting command in linker script is nested, the
++command line option will be ignored.
++
++ If you ever get confused about where input sections are going, use
++the `-M' linker option to generate a map file. The map file shows
++precisely how input sections are mapped to output sections.
++
++ This example shows how wildcard patterns might be used to partition
++files. This linker script directs the linker to place all `.text'
++sections in `.text' and all `.bss' sections in `.bss'. The linker will
++place the `.data' section from all files beginning with an upper case
++character in `.DATA'; for all other files, the linker will place the
++`.data' section in `.data'.
++ SECTIONS {
++ .text : { *(.text) }
++ .DATA : { [A-Z]*(.data) }
++ .data : { *(.data) }
++ .bss : { *(.bss) }
++ }
++
++
++File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section
++
++3.6.4.3 Input Section for Common Symbols
++........................................
++
++A special notation is needed for common symbols, because in many object
++file formats common symbols do not have a particular input section. The
++linker treats common symbols as though they are in an input section
++named `COMMON'.
++
++ You may use file names with the `COMMON' section just as with any
++other input sections. You can use this to place common symbols from a
++particular input file in one section while common symbols from other
++input files are placed in another section.
++
++ In most cases, common symbols in input files will be placed in the
++`.bss' section in the output file. For example:
++ .bss { *(.bss) *(COMMON) }
++
++ Some object file formats have more than one type of common symbol.
++For example, the MIPS ELF object file format distinguishes standard
++common symbols and small common symbols. In this case, the linker will
++use a different special section name for other types of common symbols.
++In the case of MIPS ELF, the linker uses `COMMON' for standard common
++symbols and `.scommon' for small common symbols. This permits you to
++map the different types of common symbols into memory at different
++locations.
++
++ You will sometimes see `[COMMON]' in old linker scripts. This
++notation is now considered obsolete. It is equivalent to `*(COMMON)'.
++
++
++File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section
++
++3.6.4.4 Input Section and Garbage Collection
++............................................
++
++When link-time garbage collection is in use (`--gc-sections'), it is
++often useful to mark sections that should not be eliminated. This is
++accomplished by surrounding an input section's wildcard entry with
++`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'.
++
++
++File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section
++
++3.6.4.5 Input Section Example
++.............................
++
++The following example is a complete linker script. It tells the linker
++to read all of the sections from file `all.o' and place them at the
++start of output section `outputa' which starts at location `0x10000'.
++All of section `.input1' from file `foo.o' follows immediately, in the
++same output section. All of section `.input2' from `foo.o' goes into
++output section `outputb', followed by section `.input1' from `foo1.o'.
++All of the remaining `.input1' and `.input2' sections from any files
++are written to output section `outputc'.
++
++ SECTIONS {
++ outputa 0x10000 :
++ {
++ all.o
++ foo.o (.input1)
++ }
++ outputb :
++ {
++ foo.o (.input2)
++ foo1.o (.input1)
++ }
++ outputc :
++ {
++ *(.input1)
++ *(.input2)
++ }
++ }
++
++
++File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS
++
++3.6.5 Output Section Data
++-------------------------
++
++You can include explicit bytes of data in an output section by using
++`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section
++command. Each keyword is followed by an expression in parentheses
++providing the value to store (*note Expressions::). The value of the
++expression is stored at the current value of the location counter.
++
++ The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two,
++four, and eight bytes (respectively). After storing the bytes, the
++location counter is incremented by the number of bytes stored.
++
++ For example, this will store the byte 1 followed by the four byte
++value of the symbol `addr':
++ BYTE(1)
++ LONG(addr)
++
++ When using a 64 bit host or target, `QUAD' and `SQUAD' are the same;
++they both store an 8 byte, or 64 bit, value. When both host and target
++are 32 bits, an expression is computed as 32 bits. In this case `QUAD'
++stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32
++bit value sign extended to 64 bits.
++
++ If the object file format of the output file has an explicit
++endianness, which is the normal case, the value will be stored in that
++endianness. When the object file format does not have an explicit
++endianness, as is true of, for example, S-records, the value will be
++stored in the endianness of the first input object file.
++
++ Note--these commands only work inside a section description and not
++between them, so the following will produce an error from the linker:
++ SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } }
++ whereas this will work:
++ SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } }
++
++ You may use the `FILL' command to set the fill pattern for the
++current section. It is followed by an expression in parentheses. Any
++otherwise unspecified regions of memory within the section (for example,
++gaps left due to the required alignment of input sections) are filled
++with the value of the expression, repeated as necessary. A `FILL'
++statement covers memory locations after the point at which it occurs in
++the section definition; by including more than one `FILL' statement,
++you can have different fill patterns in different parts of an output
++section.
++
++ This example shows how to fill unspecified regions of memory with the
++value `0x90':
++ FILL(0x90909090)
++
++ The `FILL' command is similar to the `=FILLEXP' output section
++attribute, but it only affects the part of the section following the
++`FILL' command, rather than the entire section. If both are used, the
++`FILL' command takes precedence. *Note Output Section Fill::, for
++details on the fill expression.
++
++
++File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS
++
++3.6.6 Output Section Keywords
++-----------------------------
++
++There are a couple of keywords which can appear as output section
++commands.
++
++`CREATE_OBJECT_SYMBOLS'
++ The command tells the linker to create a symbol for each input
++ file. The name of each symbol will be the name of the
++ corresponding input file. The section of each symbol will be the
++ output section in which the `CREATE_OBJECT_SYMBOLS' command
++ appears.
++
++ This is conventional for the a.out object file format. It is not
++ normally used for any other object file format.
++
++`CONSTRUCTORS'
++ When linking using the a.out object file format, the linker uses an
++ unusual set construct to support C++ global constructors and
++ destructors. When linking object file formats which do not support
++ arbitrary sections, such as ECOFF and XCOFF, the linker will
++ automatically recognize C++ global constructors and destructors by
++ name. For these object file formats, the `CONSTRUCTORS' command
++ tells the linker to place constructor information in the output
++ section where the `CONSTRUCTORS' command appears. The
++ `CONSTRUCTORS' command is ignored for other object file formats.
++
++ The symbol `__CTOR_LIST__' marks the start of the global
++ constructors, and the symbol `__CTOR_END__' marks the end.
++ Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and
++ end of the global destructors. The first word in the list is the
++ number of entries, followed by the address of each constructor or
++ destructor, followed by a zero word. The compiler must arrange to
++ actually run the code. For these object file formats GNU C++
++ normally calls constructors from a subroutine `__main'; a call to
++ `__main' is automatically inserted into the startup code for
++ `main'. GNU C++ normally runs destructors either by using
++ `atexit', or directly from the function `exit'.
++
++ For object file formats such as `COFF' or `ELF' which support
++ arbitrary section names, GNU C++ will normally arrange to put the
++ addresses of global constructors and destructors into the `.ctors'
++ and `.dtors' sections. Placing the following sequence into your
++ linker script will build the sort of table which the GNU C++
++ runtime code expects to see.
++
++ __CTOR_LIST__ = .;
++ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
++ *(.ctors)
++ LONG(0)
++ __CTOR_END__ = .;
++ __DTOR_LIST__ = .;
++ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
++ *(.dtors)
++ LONG(0)
++ __DTOR_END__ = .;
++
++ If you are using the GNU C++ support for initialization priority,
++ which provides some control over the order in which global
++ constructors are run, you must sort the constructors at link time
++ to ensure that they are executed in the correct order. When using
++ the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)'
++ instead. When using the `.ctors' and `.dtors' sections, use
++ `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of
++ just `*(.ctors)' and `*(.dtors)'.
++
++ Normally the compiler and linker will handle these issues
++ automatically, and you will not need to concern yourself with
++ them. However, you may need to consider this if you are using C++
++ and writing your own linker scripts.
++
++
++
++File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS
++
++3.6.7 Output Section Discarding
++-------------------------------
++
++The linker will not create output section which do not have any
++contents. This is for convenience when referring to input sections that
++may or may not be present in any of the input files. For example:
++ .foo { *(.foo) }
++ will only create a `.foo' section in the output file if there is a
++`.foo' section in at least one input file.
++
++ If you use anything other than an input section description as an
++output section command, such as a symbol assignment, then the output
++section will always be created, even if there are no matching input
++sections.
++
++ The special output section name `/DISCARD/' may be used to discard
++input sections. Any input sections which are assigned to an output
++section named `/DISCARD/' are not included in the output file.
++
++
++File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS
++
++3.6.8 Output Section Attributes
++-------------------------------
++
++We showed above that the full description of an output section looked
++like this:
++ SECTION [ADDRESS] [(TYPE)] :
++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
++We've already described SECTION, ADDRESS, and
++OUTPUT-SECTION-COMMAND. In this section we will describe the remaining
++section attributes.
++
++* Menu:
++
++* Output Section Type:: Output section type
++* Output Section LMA:: Output section LMA
++* Forced Output Alignment:: Forced Output Alignment
++* Forced Input Alignment:: Forced Input Alignment
++* Output Section Region:: Output section region
++* Output Section Phdr:: Output section phdr
++* Output Section Fill:: Output section fill
++
++
++File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes
++
++3.6.8.1 Output Section Type
++...........................
++
++Each output section may have a type. The type is a keyword in
++parentheses. The following types are defined:
++
++`NOLOAD'
++ The section should be marked as not loadable, so that it will not
++ be loaded into memory when the program is run.
++
++`DSECT'
++`COPY'
++`INFO'
++`OVERLAY'
++ These type names are supported for backward compatibility, and are
++ rarely used. They all have the same effect: the section should be
++ marked as not allocatable, so that no memory is allocated for the
++ section when the program is run.
++
++ The linker normally sets the attributes of an output section based on
++the input sections which map into it. You can override this by using
++the section type. For example, in the script sample below, the `ROM'
++section is addressed at memory location `0' and does not need to be
++loaded when the program is run. The contents of the `ROM' section will
++appear in the linker output file as usual.
++ SECTIONS {
++ ROM 0 (NOLOAD) : { ... }
++ ...
++ }
++
++
++File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes
++
++3.6.8.2 Output Section LMA
++..........................
++
++Every section has a virtual address (VMA) and a load address (LMA); see
++*Note Basic Script Concepts::. The address expression which may appear
++in an output section description sets the VMA (*note Output Section
++Address::).
++
++ The linker will normally set the LMA equal to the VMA. You can
++change that by using the `AT' keyword. The expression LMA that follows
++the `AT' keyword specifies the load address of the section.
++
++ Alternatively, with `AT>LMA_REGION' expression, you may specify a
++memory region for the section's load address. *Note MEMORY::. Note
++that if the section has not had a VMA assigned to it then the linker
++will use the LMA_REGION as the VMA region as well. *Note Output
++Section Region::.
++
++ This feature is designed to make it easy to build a ROM image. For
++example, the following linker script creates three output sections: one
++called `.text', which starts at `0x1000', one called `.mdata', which is
++loaded at the end of the `.text' section even though its VMA is
++`0x2000', and one called `.bss' to hold uninitialized data at address
++`0x3000'. The symbol `_data' is defined with the value `0x2000', which
++shows that the location counter holds the VMA value, not the LMA value.
++
++ SECTIONS
++ {
++ .text 0x1000 : { *(.text) _etext = . ; }
++ .mdata 0x2000 :
++ AT ( ADDR (.text) + SIZEOF (.text) )
++ { _data = . ; *(.data); _edata = . ; }
++ .bss 0x3000 :
++ { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;}
++ }
++
++ The run-time initialization code for use with a program generated
++with this linker script would include something like the following, to
++copy the initialized data from the ROM image to its runtime address.
++Notice how this code takes advantage of the symbols defined by the
++linker script.
++
++ extern char _etext, _data, _edata, _bstart, _bend;
++ char *src = &_etext;
++ char *dst = &_data;
++
++ /* ROM has data at end of text; copy it. */
++ while (dst < &_edata) {
++ *dst++ = *src++;
++ }
++
++ /* Zero bss */
++ for (dst = &_bstart; dst< &_bend; dst++)
++ *dst = 0;
++
++
++File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes
++
++3.6.8.3 Forced Output Alignment
++...............................
++
++You can increase an output section's alignment by using ALIGN.
++
++
++File: ld.info, Node: Forced Input Alignment, Next: Output Section Region, Prev: Forced Output Alignment, Up: Output Section Attributes
++
++3.6.8.4 Forced Input Alignment
++..............................
++
++You can force input section alignment within an output section by using
++SUBALIGN. The value specified overrides any alignment given by input
++sections, whether larger or smaller.
++
++
++File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Forced Input Alignment, Up: Output Section Attributes
++
++3.6.8.5 Output Section Region
++.............................
++
++You can assign a section to a previously defined region of memory by
++using `>REGION'. *Note MEMORY::.
++
++ Here is a simple example:
++ MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 }
++ SECTIONS { ROM : { *(.text) } >rom }
++
++
++File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes
++
++3.6.8.6 Output Section Phdr
++...........................
++
++You can assign a section to a previously defined program segment by
++using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more
++segments, then all subsequent allocated sections will be assigned to
++those segments as well, unless they use an explicitly `:PHDR' modifier.
++You can use `:NONE' to tell the linker to not put the section in any
++segment at all.
++
++ Here is a simple example:
++ PHDRS { text PT_LOAD ; }
++ SECTIONS { .text : { *(.text) } :text }
++
++
++File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes
++
++3.6.8.7 Output Section Fill
++...........................
++
++You can set the fill pattern for an entire section by using `=FILLEXP'.
++FILLEXP is an expression (*note Expressions::). Any otherwise
++unspecified regions of memory within the output section (for example,
++gaps left due to the required alignment of input sections) will be
++filled with the value, repeated as necessary. If the fill expression
++is a simple hex number, ie. a string of hex digit starting with `0x'
++and without a trailing `k' or `M', then an arbitrarily long sequence of
++hex digits can be used to specify the fill pattern; Leading zeros
++become part of the pattern too. For all other cases, including extra
++parentheses or a unary `+', the fill pattern is the four least
++significant bytes of the value of the expression. In all cases, the
++number is big-endian.
++
++ You can also change the fill value with a `FILL' command in the
++output section commands; (*note Output Section Data::).
++
++ Here is a simple example:
++ SECTIONS { .text : { *(.text) } =0x90909090 }
++
++
++File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS
++
++3.6.9 Overlay Description
++-------------------------
++
++An overlay description provides an easy way to describe sections which
++are to be loaded as part of a single memory image but are to be run at
++the same memory address. At run time, some sort of overlay manager will
++copy the overlaid sections in and out of the runtime memory address as
++required, perhaps by simply manipulating addressing bits. This approach
++can be useful, for example, when a certain region of memory is faster
++than another.
++
++ Overlays are described using the `OVERLAY' command. The `OVERLAY'
++command is used within a `SECTIONS' command, like an output section
++description. The full syntax of the `OVERLAY' command is as follows:
++ OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )]
++ {
++ SECNAME1
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [:PHDR...] [=FILL]
++ SECNAME2
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [:PHDR...] [=FILL]
++ ...
++ } [>REGION] [:PHDR...] [=FILL]
++
++ Everything is optional except `OVERLAY' (a keyword), and each
++section must have a name (SECNAME1 and SECNAME2 above). The section
++definitions within the `OVERLAY' construct are identical to those
++within the general `SECTIONS' contruct (*note SECTIONS::), except that
++no addresses and no memory regions may be defined for sections within
++an `OVERLAY'.
++
++ The sections are all defined with the same starting address. The
++load addresses of the sections are arranged such that they are
++consecutive in memory starting at the load address used for the
++`OVERLAY' as a whole (as with normal section definitions, the load
++address is optional, and defaults to the start address; the start
++address is also optional, and defaults to the current value of the
++location counter).
++
++ If the `NOCROSSREFS' keyword is used, and there any references among
++the sections, the linker will report an error. Since the sections all
++run at the same address, it normally does not make sense for one
++section to refer directly to another. *Note NOCROSSREFS: Miscellaneous
++Commands.
++
++ For each section within the `OVERLAY', the linker automatically
++defines two symbols. The symbol `__load_start_SECNAME' is defined as
++the starting load address of the section. The symbol
++`__load_stop_SECNAME' is defined as the final load address of the
++section. Any characters within SECNAME which are not legal within C
++identifiers are removed. C (or assembler) code may use these symbols
++to move the overlaid sections around as necessary.
++
++ At the end of the overlay, the value of the location counter is set
++to the start address of the overlay plus the size of the largest
++section.
++
++ Here is an example. Remember that this would appear inside a
++`SECTIONS' construct.
++ OVERLAY 0x1000 : AT (0x4000)
++ {
++ .text0 { o1/*.o(.text) }
++ .text1 { o2/*.o(.text) }
++ }
++This will define both `.text0' and `.text1' to start at address
++0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will
++be loaded immediately after `.text0'. The following symbols will be
++defined: `__load_start_text0', `__load_stop_text0',
++`__load_start_text1', `__load_stop_text1'.
++
++ C code to copy overlay `.text1' into the overlay area might look
++like the following.
++
++ extern char __load_start_text1, __load_stop_text1;
++ memcpy ((char *) 0x1000, &__load_start_text1,
++ &__load_stop_text1 - &__load_start_text1);
++
++ Note that the `OVERLAY' command is just syntactic sugar, since
++everything it does can be done using the more basic commands. The above
++example could have been written identically as follows.
++
++ .text0 0x1000 : AT (0x4000) { o1/*.o(.text) }
++ __load_start_text0 = LOADADDR (.text0);
++ __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0);
++ .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) }
++ __load_start_text1 = LOADADDR (.text1);
++ __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1);
++ . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));
++
++
++File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts
++
++3.7 MEMORY Command
++==================
++
++The linker's default configuration permits allocation of all available
++memory. You can override this by using the `MEMORY' command.
++
++ The `MEMORY' command describes the location and size of blocks of
++memory in the target. You can use it to describe which memory regions
++may be used by the linker, and which memory regions it must avoid. You
++can then assign sections to particular memory regions. The linker will
++set section addresses based on the memory regions, and will warn about
++regions that become too full. The linker will not shuffle sections
++around to fit into the available regions.
++
++ A linker script may contain at most one use of the `MEMORY' command.
++However, you can define as many blocks of memory within it as you
++wish. The syntax is:
++ MEMORY
++ {
++ NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN
++ ...
++ }
++
++ The NAME is a name used in the linker script to refer to the region.
++The region name has no meaning outside of the linker script. Region
++names are stored in a separate name space, and will not conflict with
++symbol names, file names, or section names. Each memory region must
++have a distinct name.
++
++ The ATTR string is an optional list of attributes that specify
++whether to use a particular memory region for an input section which is
++not explicitly mapped in the linker script. As described in *Note
++SECTIONS::, if you do not specify an output section for some input
++section, the linker will create an output section with the same name as
++the input section. If you define region attributes, the linker will use
++them to select the memory region for the output section that it creates.
++
++ The ATTR string must consist only of the following characters:
++`R'
++ Read-only section
++
++`W'
++ Read/write section
++
++`X'
++ Executable section
++
++`A'
++ Allocatable section
++
++`I'
++ Initialized section
++
++`L'
++ Same as `I'
++
++`!'
++ Invert the sense of any of the preceding attributes
++
++ If a unmapped section matches any of the listed attributes other than
++`!', it will be placed in the memory region. The `!' attribute
++reverses this test, so that an unmapped section will be placed in the
++memory region only if it does not match any of the listed attributes.
++
++ The ORIGIN is an numerical expression for the start address of the
++memory region. The expression must evaluate to a constant and it
++cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to
++`org' or `o' (but not, for example, `ORG').
++
++ The LEN is an expression for the size in bytes of the memory region.
++As with the ORIGIN expression, the expression must be numerical only
++and must evaluate to a constant. The keyword `LENGTH' may be
++abbreviated to `len' or `l'.
++
++ In the following example, we specify that there are two memory
++regions available for allocation: one starting at `0' for 256 kilobytes,
++and the other starting at `0x40000000' for four megabytes. The linker
++will place into the `rom' memory region every section which is not
++explicitly mapped into a memory region, and is either read-only or
++executable. The linker will place other sections which are not
++explicitly mapped into a memory region into the `ram' memory region.
++
++ MEMORY
++ {
++ rom (rx) : ORIGIN = 0, LENGTH = 256K
++ ram (!rx) : org = 0x40000000, l = 4M
++ }
++
++ Once you define a memory region, you can direct the linker to place
++specific output sections into that memory region by using the `>REGION'
++output section attribute. For example, if you have a memory region
++named `mem', you would use `>mem' in the output section definition.
++*Note Output Section Region::. If no address was specified for the
++output section, the linker will set the address to the next available
++address within the memory region. If the combined output sections
++directed to a memory region are too large for the region, the linker
++will issue an error message.
++
++ It is possible to access the origin and length of a memory in an
++expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions:
++
++ _fstack = ORIGIN(ram) + LENGTH(ram) - 4;
++
++
++File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts
++
++3.8 PHDRS Command
++=================
++
++The ELF object file format uses "program headers", also knows as
++"segments". The program headers describe how the program should be
++loaded into memory. You can print them out by using the `objdump'
++program with the `-p' option.
++
++ When you run an ELF program on a native ELF system, the system loader
++reads the program headers in order to figure out how to load the
++program. This will only work if the program headers are set correctly.
++This manual does not describe the details of how the system loader
++interprets program headers; for more information, see the ELF ABI.
++
++ The linker will create reasonable program headers by default.
++However, in some cases, you may need to specify the program headers more
++precisely. You may use the `PHDRS' command for this purpose. When the
++linker sees the `PHDRS' command in the linker script, it will not
++create any program headers other than the ones specified.
++
++ The linker only pays attention to the `PHDRS' command when
++generating an ELF output file. In other cases, the linker will simply
++ignore `PHDRS'.
++
++ This is the syntax of the `PHDRS' command. The words `PHDRS',
++`FILEHDR', `AT', and `FLAGS' are keywords.
++
++ PHDRS
++ {
++ NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ]
++ [ FLAGS ( FLAGS ) ] ;
++ }
++
++ The NAME is used only for reference in the `SECTIONS' command of the
++linker script. It is not put into the output file. Program header
++names are stored in a separate name space, and will not conflict with
++symbol names, file names, or section names. Each program header must
++have a distinct name.
++
++ Certain program header types describe segments of memory which the
++system loader will load from the file. In the linker script, you
++specify the contents of these segments by placing allocatable output
++sections in the segments. You use the `:PHDR' output section attribute
++to place a section in a particular segment. *Note Output Section
++Phdr::.
++
++ It is normal to put certain sections in more than one segment. This
++merely implies that one segment of memory contains another. You may
++repeat `:PHDR', using it once for each segment which should contain the
++section.
++
++ If you place a section in one or more segments using `:PHDR', then
++the linker will place all subsequent allocatable sections which do not
++specify `:PHDR' in the same segments. This is for convenience, since
++generally a whole set of contiguous sections will be placed in a single
++segment. You can use `:NONE' to override the default segment and tell
++the linker to not put the section in any segment at all.
++
++ You may use the `FILEHDR' and `PHDRS' keywords appear after the
++program header type to further describe the contents of the segment.
++The `FILEHDR' keyword means that the segment should include the ELF
++file header. The `PHDRS' keyword means that the segment should include
++the ELF program headers themselves.
++
++ The TYPE may be one of the following. The numbers indicate the
++value of the keyword.
++
++`PT_NULL' (0)
++ Indicates an unused program header.
++
++`PT_LOAD' (1)
++ Indicates that this program header describes a segment to be
++ loaded from the file.
++
++`PT_DYNAMIC' (2)
++ Indicates a segment where dynamic linking information can be found.
++
++`PT_INTERP' (3)
++ Indicates a segment where the name of the program interpreter may
++ be found.
++
++`PT_NOTE' (4)
++ Indicates a segment holding note information.
++
++`PT_SHLIB' (5)
++ A reserved program header type, defined but not specified by the
++ ELF ABI.
++
++`PT_PHDR' (6)
++ Indicates a segment where the program headers may be found.
++
++EXPRESSION
++ An expression giving the numeric type of the program header. This
++ may be used for types not defined above.
++
++ You can specify that a segment should be loaded at a particular
++address in memory by using an `AT' expression. This is identical to the
++`AT' command used as an output section attribute (*note Output Section
++LMA::). The `AT' command for a program header overrides the output
++section attribute.
++
++ The linker will normally set the segment flags based on the sections
++which comprise the segment. You may use the `FLAGS' keyword to
++explicitly specify the segment flags. The value of FLAGS must be an
++integer. It is used to set the `p_flags' field of the program header.
++
++ Here is an example of `PHDRS'. This shows a typical set of program
++headers used on a native ELF system.
++
++ PHDRS
++ {
++ headers PT_PHDR PHDRS ;
++ interp PT_INTERP ;
++ text PT_LOAD FILEHDR PHDRS ;
++ data PT_LOAD ;
++ dynamic PT_DYNAMIC ;
++ }
++
++ SECTIONS
++ {
++ . = SIZEOF_HEADERS;
++ .interp : { *(.interp) } :text :interp
++ .text : { *(.text) } :text
++ .rodata : { *(.rodata) } /* defaults to :text */
++ ...
++ . = . + 0x1000; /* move to a new page in memory */
++ .data : { *(.data) } :data
++ .dynamic : { *(.dynamic) } :data :dynamic
++ ...
++ }
++
++
++File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts
++
++3.9 VERSION Command
++===================
++
++The linker supports symbol versions when using ELF. Symbol versions are
++only useful when using shared libraries. The dynamic linker can use
++symbol versions to select a specific version of a function when it runs
++a program that may have been linked against an earlier version of the
++shared library.
++
++ You can include a version script directly in the main linker script,
++or you can supply the version script as an implicit linker script. You
++can also use the `--version-script' linker option.
++
++ The syntax of the `VERSION' command is simply
++ VERSION { version-script-commands }
++
++ The format of the version script commands is identical to that used
++by Sun's linker in Solaris 2.5. The version script defines a tree of
++version nodes. You specify the node names and interdependencies in the
++version script. You can specify which symbols are bound to which
++version nodes, and you can reduce a specified set of symbols to local
++scope so that they are not globally visible outside of the shared
++library.
++
++ The easiest way to demonstrate the version script language is with a
++few examples.
++
++ VERS_1.1 {
++ global:
++ foo1;
++ local:
++ old*;
++ original*;
++ new*;
++ };
++
++ VERS_1.2 {
++ foo2;
++ } VERS_1.1;
++
++ VERS_2.0 {
++ bar1; bar2;
++ extern "C++" {
++ ns::*;
++ "int f(int, double)";
++ }
++ } VERS_1.2;
++
++ This example version script defines three version nodes. The first
++version node defined is `VERS_1.1'; it has no other dependencies. The
++script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of
++symbols to local scope so that they are not visible outside of the
++shared library; this is done using wildcard patterns, so that any
++symbol whose name begins with `old', `original', or `new' is matched.
++The wildcard patterns available are the same as those used in the shell
++when matching filenames (also known as "globbing"). However, if you
++specify the symbol name inside double quotes, then the name is treated
++as literal, rather than as a glob pattern.
++
++ Next, the version script defines node `VERS_1.2'. This node depends
++upon `VERS_1.1'. The script binds the symbol `foo2' to the version
++node `VERS_1.2'.
++
++ Finally, the version script defines node `VERS_2.0'. This node
++depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and
++`bar2' are bound to the version node `VERS_2.0'.
++
++ When the linker finds a symbol defined in a library which is not
++specifically bound to a version node, it will effectively bind it to an
++unspecified base version of the library. You can bind all otherwise
++unspecified symbols to a given version node by using `global: *;'
++somewhere in the version script.
++
++ The names of the version nodes have no specific meaning other than
++what they might suggest to the person reading them. The `2.0' version
++could just as well have appeared in between `1.1' and `1.2'. However,
++this would be a confusing way to write a version script.
++
++ Node name can be omited, provided it is the only version node in the
++version script. Such version script doesn't assign any versions to
++symbols, only selects which symbols will be globally visible out and
++which won't.
++
++ { global: foo; bar; local: *; };
++
++ When you link an application against a shared library that has
++versioned symbols, the application itself knows which version of each
++symbol it requires, and it also knows which version nodes it needs from
++each shared library it is linked against. Thus at runtime, the dynamic
++loader can make a quick check to make sure that the libraries you have
++linked against do in fact supply all of the version nodes that the
++application will need to resolve all of the dynamic symbols. In this
++way it is possible for the dynamic linker to know with certainty that
++all external symbols that it needs will be resolvable without having to
++search for each symbol reference.
++
++ The symbol versioning is in effect a much more sophisticated way of
++doing minor version checking that SunOS does. The fundamental problem
++that is being addressed here is that typically references to external
++functions are bound on an as-needed basis, and are not all bound when
++the application starts up. If a shared library is out of date, a
++required interface may be missing; when the application tries to use
++that interface, it may suddenly and unexpectedly fail. With symbol
++versioning, the user will get a warning when they start their program if
++the libraries being used with the application are too old.
++
++ There are several GNU extensions to Sun's versioning approach. The
++first of these is the ability to bind a symbol to a version node in the
++source file where the symbol is defined instead of in the versioning
++script. This was done mainly to reduce the burden on the library
++maintainer. You can do this by putting something like:
++ __asm__(".symver original_foo,foo@VERS_1.1");
++ in the C source file. This renames the function `original_foo' to
++be an alias for `foo' bound to the version node `VERS_1.1'. The
++`local:' directive can be used to prevent the symbol `original_foo'
++from being exported. A `.symver' directive takes precedence over a
++version script.
++
++ The second GNU extension is to allow multiple versions of the same
++function to appear in a given shared library. In this way you can make
++an incompatible change to an interface without increasing the major
++version number of the shared library, while still allowing applications
++linked against the old interface to continue to function.
++
++ To do this, you must use multiple `.symver' directives in the source
++file. Here is an example:
++
++ __asm__(".symver original_foo,foo@");
++ __asm__(".symver old_foo,foo@VERS_1.1");
++ __asm__(".symver old_foo1,foo@VERS_1.2");
++ __asm__(".symver new_foo,foo@@VERS_2.0");
++
++ In this example, `foo@' represents the symbol `foo' bound to the
++unspecified base version of the symbol. The source file that contains
++this example would define 4 C functions: `original_foo', `old_foo',
++`old_foo1', and `new_foo'.
++
++ When you have multiple definitions of a given symbol, there needs to
++be some way to specify a default version to which external references to
++this symbol will be bound. You can do this with the `foo@@VERS_2.0'
++type of `.symver' directive. You can only declare one version of a
++symbol as the default in this manner; otherwise you would effectively
++have multiple definitions of the same symbol.
++
++ If you wish to bind a reference to a specific version of the symbol
++within the shared library, you can use the aliases of convenience
++(i.e., `old_foo'), or you can use the `.symver' directive to
++specifically bind to an external version of the function in question.
++
++ You can also specify the language in the version script:
++
++ VERSION extern "lang" { version-script-commands }
++
++ The supported `lang's are `C', `C++', and `Java'. The linker will
++iterate over the list of symbols at the link time and demangle them
++according to `lang' before matching them to the patterns specified in
++`version-script-commands'.
++
++ Demangled names may contains spaces and other special characters. As
++described above, you can use a glob pattern to match demangled names,
++or you can use a double-quoted string to match the string exactly. In
++the latter case, be aware that minor differences (such as differing
++whitespace) between the version script and the demangler output will
++cause a mismatch. As the exact string generated by the demangler might
++change in the future, even if the mangled name does not, you should
++check that all of your version directives are behaving as you expect
++when you upgrade.
++
++
++File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts
++
++3.10 Expressions in Linker Scripts
++==================================
++
++The syntax for expressions in the linker script language is identical to
++that of C expressions. All expressions are evaluated as integers. All
++expressions are evaluated in the same size, which is 32 bits if both the
++host and target are 32 bits, and is otherwise 64 bits.
++
++ You can use and set symbol values in expressions.
++
++ The linker defines several special purpose builtin functions for use
++in expressions.
++
++* Menu:
++
++* Constants:: Constants
++* Symbols:: Symbol Names
++* Orphan Sections:: Orphan Sections
++* Location Counter:: The Location Counter
++* Operators:: Operators
++* Evaluation:: Evaluation
++* Expression Section:: The Section of an Expression
++* Builtin Functions:: Builtin Functions
++
++
++File: ld.info, Node: Constants, Next: Symbols, Up: Expressions
++
++3.10.1 Constants
++----------------
++
++All constants are integers.
++
++ As in C, the linker considers an integer beginning with `0' to be
++octal, and an integer beginning with `0x' or `0X' to be hexadecimal.
++The linker considers other integers to be decimal.
++
++ In addition, you can use the suffixes `K' and `M' to scale a
++constant by `1024' or `1024*1024' respectively. For example, the
++following all refer to the same quantity:
++ _fourk_1 = 4K;
++ _fourk_2 = 4096;
++ _fourk_3 = 0x1000;
++
++
++File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Constants, Up: Expressions
++
++3.10.2 Symbol Names
++-------------------
++
++Unless quoted, symbol names start with a letter, underscore, or period
++and may include letters, digits, underscores, periods, and hyphens.
++Unquoted symbol names must not conflict with any keywords. You can
++specify a symbol which contains odd characters or has the same name as a
++keyword by surrounding the symbol name in double quotes:
++ "SECTION" = 9;
++ "with a space" = "also with a space" + 10;
++
++ Since symbols can contain many non-alphabetic characters, it is
++safest to delimit symbols with spaces. For example, `A-B' is one
++symbol, whereas `A - B' is an expression involving subtraction.
++
++
++File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions
++
++3.10.3 Orphan Sections
++----------------------
++
++Orphan sections are sections present in the input files which are not
++explicitly placed into the output file by the linker script. The
++linker will still copy these sections into the output file, but it has
++to guess as to where they should be placed. The linker uses a simple
++heuristic to do this. It attempts to place orphan sections after
++non-orphan sections of the same attribute, such as code vs data,
++loadable vs non-loadable, etc. If there is not enough room to do this
++then it places at the end of the file.
++
++ For ELF targets, the attribute of the section includes section type
++as well as section flag.
++
++
++File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions
++
++3.10.4 The Location Counter
++---------------------------
++
++The special linker variable "dot" `.' always contains the current
++output location counter. Since the `.' always refers to a location in
++an output section, it may only appear in an expression within a
++`SECTIONS' command. The `.' symbol may appear anywhere that an
++ordinary symbol is allowed in an expression.
++
++ Assigning a value to `.' will cause the location counter to be
++moved. This may be used to create holes in the output section. The
++location counter may never be moved backwards.
++
++ SECTIONS
++ {
++ output :
++ {
++ file1(.text)
++ . = . + 1000;
++ file2(.text)
++ . += 1000;
++ file3(.text)
++ } = 0x12345678;
++ }
++ In the previous example, the `.text' section from `file1' is located
++at the beginning of the output section `output'. It is followed by a
++1000 byte gap. Then the `.text' section from `file2' appears, also
++with a 1000 byte gap following before the `.text' section from `file3'.
++The notation `= 0x12345678' specifies what data to write in the gaps
++(*note Output Section Fill::).
++
++ Note: `.' actually refers to the byte offset from the start of the
++current containing object. Normally this is the `SECTIONS' statement,
++whose start address is 0, hence `.' can be used as an absolute address.
++If `.' is used inside a section description however, it refers to the
++byte offset from the start of that section, not an absolute address.
++Thus in a script like this:
++
++ SECTIONS
++ {
++ . = 0x100
++ .text: {
++ *(.text)
++ . = 0x200
++ }
++ . = 0x500
++ .data: {
++ *(.data)
++ . += 0x600
++ }
++ }
++
++ The `.text' section will be assigned a starting address of 0x100 and
++a size of exactly 0x200 bytes, even if there is not enough data in the
++`.text' input sections to fill this area. (If there is too much data,
++an error will be produced because this would be an attempt to move `.'
++backwards). The `.data' section will start at 0x500 and it will have
++an extra 0x600 bytes worth of space after the end of the values from
++the `.data' input sections and before the end of the `.data' output
++section itself.
++
++ Setting symbols to the value of the location counter outside of an
++output section statement can result in unexpected values if the linker
++needs to place orphan sections. For example, given the following:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ start_of_data = . ;
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ If the linker needs to place some input section, e.g. `.rodata', not
++mentioned in the script, it might choose to place that section between
++`.text' and `.data'. You might think the linker should place `.rodata'
++on the blank line in the above script, but blank lines are of no
++particular significance to the linker. As well, the linker doesn't
++associate the above symbol names with their sections. Instead, it
++assumes that all assignments or other statements belong to the previous
++output section, except for the special case of an assignment to `.'.
++I.e., the linker will place the orphan `.rodata' section as if the
++script was written as follows:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ start_of_data = . ;
++ .rodata: { *(.rodata) }
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ This may or may not be the script author's intention for the value of
++`start_of_data'. One way to influence the orphan section placement is
++to assign the location counter to itself, as the linker assumes that an
++assignment to `.' is setting the start address of a following output
++section and thus should be grouped with that section. So you could
++write:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ . = . ;
++ start_of_data = . ;
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ Now, the orphan `.rodata' section will be placed between
++`end_of_text' and `start_of_data'.
++
++
++File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions
++
++3.10.5 Operators
++----------------
++
++The linker recognizes the standard C set of arithmetic operators, with
++the standard bindings and precedence levels:
++ precedence associativity Operators Notes
++ (highest)
++ 1 left ! - ~ (1)
++ 2 left * / %
++ 3 left + -
++ 4 left >> <<
++ 5 left == != > < <= >=
++ 6 left &
++ 7 left |
++ 8 left &&
++ 9 left ||
++ 10 right ? :
++ 11 right &= += -= *= /= (2)
++ (lowest)
++ Notes: (1) Prefix operators (2) *Note Assignments::.
++
++
++File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions
++
++3.10.6 Evaluation
++-----------------
++
++The linker evaluates expressions lazily. It only computes the value of
++an expression when absolutely necessary.
++
++ The linker needs some information, such as the value of the start
++address of the first section, and the origins and lengths of memory
++regions, in order to do any linking at all. These values are computed
++as soon as possible when the linker reads in the linker script.
++
++ However, other values (such as symbol values) are not known or needed
++until after storage allocation. Such values are evaluated later, when
++other information (such as the sizes of output sections) is available
++for use in the symbol assignment expression.
++
++ The sizes of sections cannot be known until after allocation, so
++assignments dependent upon these are not performed until after
++allocation.
++
++ Some expressions, such as those depending upon the location counter
++`.', must be evaluated during section allocation.
++
++ If the result of an expression is required, but the value is not
++available, then an error results. For example, a script like the
++following
++ SECTIONS
++ {
++ .text 9+this_isnt_constant :
++ { *(.text) }
++ }
++will cause the error message `non constant expression for initial
++address'.
++
++
++File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions
++
++3.10.7 The Section of an Expression
++-----------------------------------
++
++When the linker evaluates an expression, the result is either absolute
++or relative to some section. A relative expression is expressed as a
++fixed offset from the base of a section.
++
++ The position of the expression within the linker script determines
++whether it is absolute or relative. An expression which appears within
++an output section definition is relative to the base of the output
++section. An expression which appears elsewhere will be absolute.
++
++ A symbol set to a relative expression will be relocatable if you
++request relocatable output using the `-r' option. That means that a
++further link operation may change the value of the symbol. The symbol's
++section will be the section of the relative expression.
++
++ A symbol set to an absolute expression will retain the same value
++through any further link operation. The symbol will be absolute, and
++will not have any particular associated section.
++
++ You can use the builtin function `ABSOLUTE' to force an expression
++to be absolute when it would otherwise be relative. For example, to
++create an absolute symbol set to the address of the end of the output
++section `.data':
++ SECTIONS
++ {
++ .data : { *(.data) _edata = ABSOLUTE(.); }
++ }
++ If `ABSOLUTE' were not used, `_edata' would be relative to the
++`.data' section.
++
++
++File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions
++
++3.10.8 Builtin Functions
++------------------------
++
++The linker script language includes a number of builtin functions for
++use in linker script expressions.
++
++`ABSOLUTE(EXP)'
++ Return the absolute (non-relocatable, as opposed to non-negative)
++ value of the expression EXP. Primarily useful to assign an
++ absolute value to a symbol within a section definition, where
++ symbol values are normally section relative. *Note Expression
++ Section::.
++
++`ADDR(SECTION)'
++ Return the absolute address (the VMA) of the named SECTION. Your
++ script must previously have defined the location of that section.
++ In the following example, `symbol_1' and `symbol_2' are assigned
++ identical values:
++ SECTIONS { ...
++ .output1 :
++ {
++ start_of_output_1 = ABSOLUTE(.);
++ ...
++ }
++ .output :
++ {
++ symbol_1 = ADDR(.output1);
++ symbol_2 = start_of_output_1;
++ }
++ ... }
++
++`ALIGN(ALIGN)'
++`ALIGN(EXP,ALIGN)'
++ Return the location counter (`.') or arbitrary expression aligned
++ to the next ALIGN boundary. The single operand `ALIGN' doesn't
++ change the value of the location counter--it just does arithmetic
++ on it. The two operand `ALIGN' allows an arbitrary expression to
++ be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(.,
++ ALIGN)').
++
++ Here is an example which aligns the output `.data' section to the
++ next `0x2000' byte boundary after the preceding section and sets a
++ variable within the section to the next `0x8000' boundary after the
++ input sections:
++ SECTIONS { ...
++ .data ALIGN(0x2000): {
++ *(.data)
++ variable = ALIGN(0x8000);
++ }
++ ... }
++ The first use of `ALIGN' in this example specifies the
++ location of a section because it is used as the optional ADDRESS
++ attribute of a section definition (*note Output Section
++ Address::). The second use of `ALIGN' is used to defines the
++ value of a symbol.
++
++ The builtin function `NEXT' is closely related to `ALIGN'.
++
++`BLOCK(EXP)'
++ This is a synonym for `ALIGN', for compatibility with older linker
++ scripts. It is most often seen when setting the address of an
++ output section.
++
++`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)'
++ This is equivalent to either
++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1)))
++ or
++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE)))
++ depending on whether the latter uses fewer COMMONPAGESIZE sized
++ pages for the data segment (area between the result of this
++ expression and `DATA_SEGMENT_END') than the former or not. If the
++ latter form is used, it means COMMONPAGESIZE bytes of runtime
++ memory will be saved at the expense of up to COMMONPAGESIZE wasted
++ bytes in the on-disk file.
++
++ This expression can only be used directly in `SECTIONS' commands,
++ not in any output section descriptions and only once in the linker
++ script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and
++ should be the system page size the object wants to be optimized
++ for (while still working on system page sizes up to MAXPAGESIZE).
++
++ Example:
++ . = DATA_SEGMENT_ALIGN(0x10000, 0x2000);
++
++`DATA_SEGMENT_END(EXP)'
++ This defines the end of data segment for `DATA_SEGMENT_ALIGN'
++ evaluation purposes.
++
++ . = DATA_SEGMENT_END(.);
++
++`DATA_SEGMENT_RELRO_END(OFFSET, EXP)'
++ This defines the end of the `PT_GNU_RELRO' segment when `-z relro'
++ option is used. Second argument is returned. When `-z relro'
++ option is not present, `DATA_SEGMENT_RELRO_END' does nothing,
++ otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is
++ aligned to the most commonly used page boundary for particular
++ target. If present in the linker script, it must always come in
++ between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'.
++
++ . = DATA_SEGMENT_RELRO_END(24, .);
++
++`DEFINED(SYMBOL)'
++ Return 1 if SYMBOL is in the linker global symbol table and is
++ defined before the statement using DEFINED in the script, otherwise
++ return 0. You can use this function to provide default values for
++ symbols. For example, the following script fragment shows how to
++ set a global symbol `begin' to the first location in the `.text'
++ section--but if a symbol called `begin' already existed, its value
++ is preserved:
++
++ SECTIONS { ...
++ .text : {
++ begin = DEFINED(begin) ? begin : . ;
++ ...
++ }
++ ...
++ }
++
++`LENGTH(MEMORY)'
++ Return the length of the memory region named MEMORY.
++
++`LOADADDR(SECTION)'
++ Return the absolute LMA of the named SECTION. This is normally
++ the same as `ADDR', but it may be different if the `AT' attribute
++ is used in the output section definition (*note Output Section
++ LMA::).
++
++`MAX(EXP1, EXP2)'
++ Returns the maximum of EXP1 and EXP2.
++
++`MIN(EXP1, EXP2)'
++ Returns the minimum of EXP1 and EXP2.
++
++`NEXT(EXP)'
++ Return the next unallocated address that is a multiple of EXP.
++ This function is closely related to `ALIGN(EXP)'; unless you use
++ the `MEMORY' command to define discontinuous memory for the output
++ file, the two functions are equivalent.
++
++`ORIGIN(MEMORY)'
++ Return the origin of the memory region named MEMORY.
++
++`SEGMENT_START(SEGMENT, DEFAULT)'
++ Return the base address of the named SEGMENT. If an explicit
++ value has been given for this segment (with a command-line `-T'
++ option) that value will be returned; otherwise the value will be
++ DEFAULT. At present, the `-T' command-line option can only be
++ used to set the base address for the "text", "data", and "bss"
++ sections, but you use `SEGMENT_START' with any segment name.
++
++`SIZEOF(SECTION)'
++ Return the size in bytes of the named SECTION, if that section has
++ been allocated. If the section has not been allocated when this is
++ evaluated, the linker will report an error. In the following
++ example, `symbol_1' and `symbol_2' are assigned identical values:
++ SECTIONS{ ...
++ .output {
++ .start = . ;
++ ...
++ .end = . ;
++ }
++ symbol_1 = .end - .start ;
++ symbol_2 = SIZEOF(.output);
++ ... }
++
++`SIZEOF_HEADERS'
++`sizeof_headers'
++ Return the size in bytes of the output file's headers. This is
++ information which appears at the start of the output file. You
++ can use this number when setting the start address of the first
++ section, if you choose, to facilitate paging.
++
++ When producing an ELF output file, if the linker script uses the
++ `SIZEOF_HEADERS' builtin function, the linker must compute the
++ number of program headers before it has determined all the section
++ addresses and sizes. If the linker later discovers that it needs
++ additional program headers, it will report an error `not enough
++ room for program headers'. To avoid this error, you must avoid
++ using the `SIZEOF_HEADERS' function, or you must rework your linker
++ script to avoid forcing the linker to use additional program
++ headers, or you must define the program headers yourself using the
++ `PHDRS' command (*note PHDRS::).
++
++
++File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts
++
++3.11 Implicit Linker Scripts
++============================
++
++If you specify a linker input file which the linker can not recognize as
++an object file or an archive file, it will try to read the file as a
++linker script. If the file can not be parsed as a linker script, the
++linker will report an error.
++
++ An implicit linker script will not replace the default linker script.
++
++ Typically an implicit linker script would contain only symbol
++assignments, or the `INPUT', `GROUP', or `VERSION' commands.
++
++ Any input files read because of an implicit linker script will be
++read at the position in the command line where the implicit linker
++script was read. This can affect archive searching.
++
++
++File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top
++
++4 Machine Dependent Features
++****************************
++
++`ld' has additional features on some platforms; the following sections
++describe them. Machines where `ld' has no additional functionality are
++not listed.
++
++* Menu:
++
++
++* H8/300:: `ld' and the H8/300
++
++* i960:: `ld' and the Intel 960 family
++
++* ARM:: `ld' and the ARM family
++
++* HPPA ELF32:: `ld' and HPPA 32-bit ELF
++
++* MMIX:: `ld' and MMIX
++
++* MSP430:: `ld' and MSP430
++
++* PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support
++
++* PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support
++
++* TI COFF:: `ld' and TI COFF
++
++* WIN32:: `ld' and WIN32 (cygwin/mingw)
++
++* Xtensa:: `ld' and Xtensa Processors
++
++
++File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent
++
++4.1 `ld' and the H8/300
++=======================
++
++For the H8/300, `ld' can perform these global optimizations when you
++specify the `--relax' command-line option.
++
++_relaxing address modes_
++ `ld' finds all `jsr' and `jmp' instructions whose targets are
++ within eight bits, and turns them into eight-bit program-counter
++ relative `bsr' and `bra' instructions, respectively.
++
++_synthesizing instructions_
++ `ld' finds all `mov.b' instructions which use the sixteen-bit
++ absolute address form, but refer to the top page of memory, and
++ changes them to use the eight-bit address form. (That is: the
++ linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the
++ address AA is in the top page of memory).
++
++_bit manipulation instructions_
++ `ld' finds all bit manipulation instructions like `band, bclr,
++ biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst,
++ bxor' which use 32 bit and 16 bit absolute address form, but refer
++ to the top page of memory, and changes them to use the 8 bit
++ address form. (That is: the linker turns `bset #xx:3,`@'AA:32'
++ into `bset #xx:3,`@'AA:8' whenever the address AA is in the top
++ page of memory).
++
++_system control instructions_
++ `ld' finds all `ldc.w, stc.w' instrcutions which use the 32 bit
++ absolute address form, but refer to the top page of memory, and
++ changes them to use 16 bit address form. (That is: the linker
++ turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the
++ address AA is in the top page of memory).
++
++
++File: ld.info, Node: i960, Next: ARM, Prev: H8/300, Up: Machine Dependent
++
++4.2 `ld' and the Intel 960 Family
++=================================
++
++You can use the `-AARCHITECTURE' command line option to specify one of
++the two-letter names identifying members of the 960 family; the option
++specifies the desired output target, and warns of any incompatible
++instructions in the input files. It also modifies the linker's search
++strategy for archive libraries, to support the use of libraries
++specific to each particular architecture, by including in the search
++loop names suffixed with the string identifying the architecture.
++
++ For example, if your `ld' command line included `-ACA' as well as
++`-ltry', the linker would look (in its built-in search paths, and in
++any paths you specify with `-L') for a library with the names
++
++ try
++ libtry.a
++ tryca
++ libtryca.a
++
++The first two possibilities would be considered in any event; the last
++two are due to the use of `-ACA'.
++
++ You can meaningfully use `-A' more than once on a command line, since
++the 960 architecture family allows combination of target architectures;
++each use will add another pair of name variants to search for when `-l'
++specifies a library.
++
++ `ld' supports the `--relax' option for the i960 family. If you
++specify `--relax', `ld' finds all `balx' and `calx' instructions whose
++targets are within 24 bits, and turns them into 24-bit program-counter
++relative `bal' and `cal' instructions, respectively. `ld' also turns
++`cal' instructions into `bal' instructions when it determines that the
++target subroutine is a leaf routine (that is, the target subroutine does
++not itself call any subroutines).
++
++
++File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
++
++4.3 `ld' and the ARM family
++===========================
++
++For the ARM, `ld' will generate code stubs to allow functions calls
++betweem ARM and Thumb code. These stubs only work with code that has
++been compiled and assembled with the `-mthumb-interwork' command line
++option. If it is necessary to link with old ARM object files or
++libraries, which have not been compiled with the -mthumb-interwork
++option then the `--support-old-code' command line switch should be
++given to the linker. This will make it generate larger stub functions
++which will work with non-interworking aware ARM code. Note, however,
++the linker does not support generating stubs for function calls to
++non-interworking aware Thumb code.
++
++ The `--thumb-entry' switch is a duplicate of the generic `--entry'
++switch, in that it sets the program's starting address. But it also
++sets the bottom bit of the address, so that it can be branched to using
++a BX instruction, and the program will start executing in Thumb mode
++straight away.
++
++ The `--be8' switch instructs `ld' to generate BE8 format
++executables. This option is only valid when linking big-endian objects.
++The resulting image will contain big-endian data and little-endian code.
++
++ The `R_ARM_TARGET1' relocation is typically used for entries in the
++`.init_array' section. It is interpreted as either `R_ARM_REL32' or
++`R_ARM_ABS32', depending on the target. The `--target1-rel' and
++`--target1-abs' switches override the default.
++
++ The `--target2=type' switch overrides the default definition of the
++`R_ARM_TARGET2' relocation. Valid values for `type', their meanings,
++and target defaults are as follows:
++`rel'
++ `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi)
++
++`abs'
++ `R_ARM_ABS32' (arm*-*-symbianelf)
++
++`got-rel'
++ `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd)
++
++ The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification)
++enables objects compiled for the ARMv4 architecture to be
++interworking-safe when linked with other objects compiled for ARMv4t,
++but also allows pure ARMv4 binaries to be built from the same ARMv4
++objects.
++
++ In the latter case, the switch `--fix-v4bx' must be passed to the
++linker, which causes v4t `BX rM' instructions to be rewritten as `MOV
++PC,rM', since v4 processors do not have a `BX' instruction.
++
++ In the former case, the switch should not be used, and `R_ARM_V4BX'
++relocations are ignored.
++
++ The `--use-blx' switch enables the linker to use ARM/Thumb BLX
++instructions (available on ARMv5t and above) in various situations.
++Currently it is used to perform calls via the PLT from Thumb code using
++BLX rather than using BX and a mode-switching stub before each PLT
++entry. This should lead to such calls executing slightly faster.
++
++ This option is enabled implicitly for SymbianOS, so there is no need
++to specify it if you are using that target.
++
++
++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
++
++4.4 `ld' and HPPA 32-bit ELF Support
++====================================
++
++When generating a shared library, `ld' will by default generate import
++stubs suitable for use with a single sub-space application. The
++`--multi-subspace' switch causes `ld' to generate export stubs, and
++different (larger) import stubs suitable for use with multiple
++sub-spaces.
++
++ Long branch stubs and import/export stubs are placed by `ld' in stub
++sections located between groups of input sections. `--stub-group-size'
++specifies the maximum size of a group of input sections handled by one
++stub section. Since branch offsets are signed, a stub section may
++serve two groups of input sections, one group before the stub section,
++and one group after it. However, when using conditional branches that
++require stubs, it may be better (for branch prediction) that stub
++sections only serve one group of input sections. A negative value for
++`N' chooses this scheme, ensuring that branches to stubs always use a
++negative offset. Two special values of `N' are recognized, `1' and
++`-1'. These both instruct `ld' to automatically size input section
++groups for the branch types detected, with the same behaviour regarding
++stub placement as other positive or negative values of `N' respectively.
++
++ Note that `--stub-group-size' does not split input sections. A
++single input section larger than the group size specified will of course
++create a larger group (of one section). If input sections are too
++large, it may not be possible for a branch to reach its stub.
++
++
++File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent
++
++4.5 `ld' and MMIX
++=================
++
++For MMIX, there is a choice of generating `ELF' object files or `mmo'
++object files when linking. The simulator `mmix' understands the `mmo'
++format. The binutils `objcopy' utility can translate between the two
++formats.
++
++ There is one special section, the `.MMIX.reg_contents' section.
++Contents in this section is assumed to correspond to that of global
++registers, and symbols referring to it are translated to special
++symbols, equal to registers. In a final link, the start address of the
++`.MMIX.reg_contents' section corresponds to the first allocated global
++register multiplied by 8. Register `$255' is not included in this
++section; it is always set to the program entry, which is at the symbol
++`Main' for `mmo' files.
++
++ Symbols with the prefix `__.MMIX.start.', for example
++`__.MMIX.start..text' and `__.MMIX.start..data' are special; there must
++be only one each, even if they are local. The default linker script
++uses these to set the default start address of a section.
++
++ Initial and trailing multiples of zero-valued 32-bit words in a
++section, are left out from an mmo file.
++
++
++File: ld.info, Node: MSP430, Next: PowerPC ELF32, Prev: MMIX, Up: Machine Dependent
++
++4.6 `ld' and MSP430
++===================
++
++For the MSP430 it is possible to select the MPU architecture. The flag
++`-m [mpu type]' will select an appropriate linker script for selected
++MPU type. (To get a list of known MPUs just pass `-m help' option to
++the linker).
++
++ The linker will recognize some extra sections which are MSP430
++specific:
++
++``.vectors''
++ Defines a portion of ROM where interrupt vectors located.
++
++``.bootloader''
++ Defines the bootloader portion of the ROM (if applicable). Any
++ code in this section will be uploaded to the MPU.
++
++``.infomem''
++ Defines an information memory section (if applicable). Any code in
++ this section will be uploaded to the MPU.
++
++``.infomemnobits''
++ This is the same as the `.infomem' section except that any code in
++ this section will not be uploaded to the MPU.
++
++``.noinit''
++ Denotes a portion of RAM located above `.bss' section.
++
++ The last two sections are used by gcc.
++
++
++File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent
++
++4.7 `ld' and PowerPC 32-bit ELF Support
++=======================================
++
++Branches on PowerPC processors are limited to a signed 26-bit
++displacement, which may result in `ld' giving `relocation truncated to
++fit' errors with very large programs. `--relax' enables the generation
++of trampolines that can access the entire 32-bit address space. These
++trampolines are inserted at section boundaries, so may not themselves
++be reachable if an input section exceeds 33M in size.
++
++`--bss-plt'
++ Current PowerPC GCC accepts a `-msecure-plt' option that generates
++ code capable of using a newer PLT and GOT layout that has the
++ security advantage of no executable section ever needing to be
++ writable and no writable section ever being executable. PowerPC
++ `ld' will generate this layout, including stubs to access the PLT,
++ if all input files (including startup and static libraries) were
++ compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT
++ (and GOT layout) which can give slightly better performance.
++
++`--sdata-got'
++ The new secure PLT and GOT are placed differently relative to other
++ sections compared to older BSS PLT and GOT placement. The
++ location of `.plt' must change because the new secure PLT is an
++ initialized section while the old PLT is uninitialized. The
++ reason for the `.got' change is more subtle: The new placement
++ allows `.got' to be read-only in applications linked with `-z
++ relro -z now'. However, this placement means that `.sdata' cannot
++ always be used in shared libraries, because the PowerPC ABI
++ accesses `.sdata' in shared libraries from the GOT pointer.
++ `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't
++ use `.sdata' in shared libraries, so this option is really only
++ useful for other compilers that may do so.
++
++`--emit-stub-syms'
++ This option causes `ld' to label linker stubs with a local symbol
++ that encodes the stub type and destination.
++
++`--no-tls-optimize'
++ PowerPC `ld' normally performs some optimization of code sequences
++ used to access Thread-Local Storage. Use this option to disable
++ the optimization.
++
++
++File: ld.info, Node: PowerPC64 ELF64, Next: TI COFF, Prev: PowerPC ELF32, Up: Machine Dependent
++
++4.8 `ld' and PowerPC64 64-bit ELF Support
++=========================================
++
++`--stub-group-size'
++ Long branch stubs, PLT call stubs and TOC adjusting stubs are
++ placed by `ld' in stub sections located between groups of input
++ sections. `--stub-group-size' specifies the maximum size of a
++ group of input sections handled by one stub section. Since branch
++ offsets are signed, a stub section may serve two groups of input
++ sections, one group before the stub section, and one group after
++ it. However, when using conditional branches that require stubs,
++ it may be better (for branch prediction) that stub sections only
++ serve one group of input sections. A negative value for `N'
++ chooses this scheme, ensuring that branches to stubs always use a
++ negative offset. Two special values of `N' are recognized, `1'
++ and `-1'. These both instruct `ld' to automatically size input
++ section groups for the branch types detected, with the same
++ behaviour regarding stub placement as other positive or negative
++ values of `N' respectively.
++
++ Note that `--stub-group-size' does not split input sections. A
++ single input section larger than the group size specified will of
++ course create a larger group (of one section). If input sections
++ are too large, it may not be possible for a branch to reach its
++ stub.
++
++`--emit-stub-syms'
++ This option causes `ld' to label linker stubs with a local symbol
++ that encodes the stub type and destination.
++
++`--dotsyms, --no-dotsyms'
++ These two options control how `ld' interprets version patterns in
++ a version script. Older PowerPC64 compilers emitted both a
++ function descriptor symbol with the same name as the function, and
++ a code entry symbol with the name prefixed by a dot (`.'). To
++ properly version a function `foo', the version script thus needs
++ to control both `foo' and `.foo'. The option `--dotsyms', on by
++ default, automatically adds the required dot-prefixed patterns.
++ Use `--no-dotsyms' to disable this feature.
++
++`--no-tls-optimize'
++ PowerPC64 `ld' normally performs some optimization of code
++ sequences used to access Thread-Local Storage. Use this option to
++ disable the optimization.
++
++`--no-opd-optimize'
++ PowerPC64 `ld' normally removes `.opd' section entries
++ corresponding to deleted link-once functions, or functions removed
++ by the action of `--gc-sections' or linker scrip `/DISCARD/'. Use
++ this option to disable `.opd' optimization.
++
++`--non-overlapping-opd'
++ Some PowerPC64 compilers have an option to generate compressed
++ `.opd' entries spaced 16 bytes apart, overlapping the third word,
++ the static chain pointer (unused in C) with the first word of the
++ next entry. This option expands such entries to the full 24 bytes.
++
++`--no-toc-optimize'
++ PowerPC64 `ld' normally removes unused `.toc' section entries.
++ Such entries are detected by examining relocations that reference
++ the TOC in code sections. A reloc in a deleted code section marks
++ a TOC word as unneeded, while a reloc in a kept code section marks
++ a TOC word as needed. Since the TOC may reference itself, TOC
++ relocs are also examined. TOC words marked as both needed and
++ unneeded will of course be kept. TOC words without any referencing
++ reloc are assumed to be part of a multi-word entry, and are kept or
++ discarded as per the nearest marked preceding word. This works
++ reliably for compiler generated code, but may be incorrect if
++ assembly code is used to insert TOC entries. Use this option to
++ disable the optimization.
++
++`--no-multi-toc'
++ By default, PowerPC64 GCC generates code for a TOC model where TOC
++ entries are accessed with a 16-bit offset from r2. This limits the
++ total TOC size to 64K. PowerPC64 `ld' extends this limit by
++ grouping code sections such that each group uses less than 64K for
++ its TOC entries, then inserts r2 adjusting stubs between
++ inter-group calls. `ld' does not split apart input sections, so
++ cannot help if a single input file has a `.toc' section that
++ exceeds 64K, most likely from linking multiple files with `ld -r'.
++ Use this option to turn off this feature.
++
++
++File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent
++
++4.9 `ld''s Support for Various TI COFF Versions
++===============================================
++
++The `--format' switch allows selection of one of the various TI COFF
++versions. The latest of this writing is 2; versions 0 and 1 are also
++supported. The TI COFF versions also vary in header byte-order format;
++`ld' will read any version or byte order, but the output header format
++depends on the default specified by the specific target.
++
++
++File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent
++
++4.10 `ld' and WIN32 (cygwin/mingw)
++==================================
++
++This section describes some of the win32 specific `ld' issues. See
++*Note Command Line Options: Options. for detailed decription of the
++command line options mentioned here.
++
++_import libraries_
++ The standard Windows linker creates and uses so-called import
++ libraries, which contains information for linking to dll's. They
++ are regular static archives and are handled as any other static
++ archive. The cygwin and mingw ports of `ld' have specific support
++ for creating such libraries provided with the `--out-implib'
++ command line option.
++
++_exporting DLL symbols_
++ The cygwin/mingw `ld' has several ways to export symbols for dll's.
++
++ _using auto-export functionality_
++ By default `ld' exports symbols with the auto-export
++ functionality, which is controlled by the following command
++ line options:
++
++ * -export-all-symbols [This is the default]
++
++ * -exclude-symbols
++
++ * -exclude-libs
++
++ If, however, `--export-all-symbols' is not given explicitly
++ on the command line, then the default auto-export behavior
++ will be _disabled_ if either of the following are true:
++
++ * A DEF file is used.
++
++ * Any symbol in any object file was marked with the
++ __declspec(dllexport) attribute.
++
++ _using a DEF file_
++ Another way of exporting symbols is using a DEF file. A DEF
++ file is an ASCII file containing definitions of symbols which
++ should be exported when a dll is created. Usually it is
++ named `<dll name>.def' and is added as any other object file
++ to the linker's command line. The file's name must end in
++ `.def' or `.DEF'.
++
++ gcc -o <output> <objectfiles> <dll name>.def
++
++ Using a DEF file turns off the normal auto-export behavior,
++ unless the `--export-all-symbols' option is also used.
++
++ Here is an example of a DEF file for a shared library called
++ `xyz.dll':
++
++ LIBRARY "xyz.dll" BASE=0x20000000
++
++ EXPORTS
++ foo
++ bar
++ _bar = bar
++ another_foo = abc.dll.afoo
++ var1 DATA
++
++ This example defines a DLL with a non-default base address
++ and five symbols in the export table. The third exported
++ symbol `_bar' is an alias for the second. The fourth symbol,
++ `another_foo' is resolved by "forwarding" to another module
++ and treating it as an alias for `afoo' exported from the DLL
++ `abc.dll'. The final symbol `var1' is declared to be a data
++ object.
++
++ The optional `LIBRARY <name>' command indicates the _internal_
++ name of the output DLL. If `<name>' does not include a suffix,
++ the default library suffix, `.DLL' is appended.
++
++ When the .DEF file is used to build an application. rather
++ than a library, the `NAME <name>' command shoud be used
++ instead of `LIBRARY'. If `<name>' does not include a suffix,
++ the default executable suffix, `.EXE' is appended.
++
++ With either `LIBRARY <name>' or `NAME <name>' the optional
++ specification `BASE = <number>' may be used to specify a
++ non-default base address for the image.
++
++ If neither `LIBRARY <name>' nor `NAME <name>' is specified,
++ or they specify an empty string, the internal name is the
++ same as the filename specified on the command line.
++
++ The complete specification of an export symbol is:
++
++ EXPORTS
++ ( ( ( <name1> [ = <name2> ] )
++ | ( <name1> = <module-name> . <external-name>))
++ [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) *
++
++ Declares `<name1>' as an exported symbol from the DLL, or
++ declares `<name1>' as an exported alias for `<name2>'; or
++ declares `<name1>' as a "forward" alias for the symbol
++ `<external-name>' in the DLL `<module-name>'. Optionally,
++ the symbol may be exported by the specified ordinal
++ `<integer>' alias.
++
++ The optional keywords that follow the declaration indicate:
++
++ `NONAME': Do not put the symbol name in the DLL's export
++ table. It will still be exported by its ordinal alias
++ (either the value specified by the .def specification or,
++ otherwise, the value assigned by the linker). The symbol
++ name, however, does remain visible in the import library (if
++ any), unless `PRIVATE' is also specified.
++
++ `DATA': The symbol is a variable or object, rather than a
++ function. The import lib will export only an indirect
++ reference to `foo' as the symbol `_imp__foo' (ie, `foo' must
++ be resolved as `*_imp__foo').
++
++ `CONSTANT': Like `DATA', but put the undecorated `foo' as
++ well as `_imp__foo' into the import library. Both refer to the
++ read-only import address table's pointer to the variable, not
++ to the variable itself. This can be dangerous. If the user
++ code fails to add the `dllimport' attribute and also fails to
++ explicitly add the extra indirection that the use of the
++ attribute enforces, the application will behave unexpectedly.
++
++ `PRIVATE': Put the symbol in the DLL's export table, but do
++ not put it into the static import library used to resolve
++ imports at link time. The symbol can still be imported using
++ the `LoadLibrary/GetProcAddress' API at runtime or by by
++ using the GNU ld extension of linking directly to the DLL
++ without an import library.
++
++ See ld/deffilep.y in the binutils sources for the full
++ specification of other DEF file statements
++
++ While linking a shared dll, `ld' is able to create a DEF file
++ with the `--output-def <file>' command line option.
++
++ _Using decorations_
++ Another way of marking symbols for export is to modify the
++ source code itself, so that when building the DLL each symbol
++ to be exported is declared as:
++
++ __declspec(dllexport) int a_variable
++ __declspec(dllexport) void a_function(int with_args)
++
++ All such symbols will be exported from the DLL. If, however,
++ any of the object files in the DLL contain symbols decorated
++ in this way, then the normal auto-export behavior is
++ disabled, unless the `--export-all-symbols' option is also
++ used.
++
++ Note that object files that wish to access these symbols must
++ _not_ decorate them with dllexport. Instead, they should use
++ dllimport, instead:
++
++ __declspec(dllimport) int a_variable
++ __declspec(dllimport) void a_function(int with_args)
++
++ This complicates the structure of library header files,
++ because when included by the library itself the header must
++ declare the variables and functions as dllexport, but when
++ included by client code the header must declare them as
++ dllimport. There are a number of idioms that are typically
++ used to do this; often client code can omit the __declspec()
++ declaration completely. See `--enable-auto-import' and
++ `automatic data imports' for more imformation.
++
++_automatic data imports_
++ The standard Windows dll format supports data imports from dlls
++ only by adding special decorations (dllimport/dllexport), which
++ let the compiler produce specific assembler instructions to deal
++ with this issue. This increases the effort necessary to port
++ existing Un*x code to these platforms, especially for large c++
++ libraries and applications. The auto-import feature, which was
++ initially provided by Paul Sokolovsky, allows one to omit the
++ decorations to archieve a behavior that conforms to that on
++ POSIX/Un*x platforms. This feature is enabled with the
++ `--enable-auto-import' command-line option, although it is enabled
++ by default on cygwin/mingw. The `--enable-auto-import' option
++ itself now serves mainly to suppress any warnings that are
++ ordinarily emitted when linked objects trigger the feature's use.
++
++ auto-import of variables does not always work flawlessly without
++ additional assistance. Sometimes, you will see this message
++
++ "variable '<var>' can't be auto-imported. Please read the
++ documentation for ld's `--enable-auto-import' for details."
++
++ The `--enable-auto-import' documentation explains why this error
++ occurs, and several methods that can be used to overcome this
++ difficulty. One of these methods is the _runtime pseudo-relocs_
++ feature, described below.
++
++ For complex variables imported from DLLs (such as structs or
++ classes), object files typically contain a base address for the
++ variable and an offset (_addend_) within the variable-to specify a
++ particular field or public member, for instance. Unfortunately,
++ the runtime loader used in win32 environments is incapable of
++ fixing these references at runtime without the additional
++ information supplied by dllimport/dllexport decorations. The
++ standard auto-import feature described above is unable to resolve
++ these references.
++
++ The `--enable-runtime-pseudo-relocs' switch allows these
++ references to be resolved without error, while leaving the task of
++ adjusting the references themselves (with their non-zero addends)
++ to specialized code provided by the runtime environment. Recent
++ versions of the cygwin and mingw environments and compilers
++ provide this runtime support; older versions do not. However, the
++ support is only necessary on the developer's platform; the
++ compiled result will run without error on an older system.
++
++ `--enable-runtime-pseudo-relocs' is not the default; it must be
++ explicitly enabled as needed.
++
++_direct linking to a dll_
++ The cygwin/mingw ports of `ld' support the direct linking,
++ including data symbols, to a dll without the usage of any import
++ libraries. This is much faster and uses much less memory than
++ does the traditional import library method, expecially when
++ linking large libraries or applications. When `ld' creates an
++ import lib, each function or variable exported from the dll is
++ stored in its own bfd, even though a single bfd could contain many
++ exports. The overhead involved in storing, loading, and
++ processing so many bfd's is quite large, and explains the
++ tremendous time, memory, and storage needed to link against
++ particularly large or complex libraries when using import libs.
++
++ Linking directly to a dll uses no extra command-line switches
++ other than `-L' and `-l', because `ld' already searches for a
++ number of names to match each library. All that is needed from
++ the developer's perspective is an understanding of this search, in
++ order to force ld to select the dll instead of an import library.
++
++ For instance, when ld is called with the argument `-lxxx' it will
++ attempt to find, in the first directory of its search path,
++
++ libxxx.dll.a
++ xxx.dll.a
++ libxxx.a
++ cygxxx.dll (*)
++ libxxx.dll
++ xxx.dll
++
++ before moving on to the next directory in the search path.
++
++ (*) Actually, this is not `cygxxx.dll' but in fact is
++ `<prefix>xxx.dll', where `<prefix>' is set by the `ld' option
++ `--dll-search-prefix=<prefix>'. In the case of cygwin, the
++ standard gcc spec file includes `--dll-search-prefix=cyg', so in
++ effect we actually search for `cygxxx.dll'.
++
++ Other win32-based unix environments, such as mingw or pw32, may
++ use other `<prefix>'es, although at present only cygwin makes use
++ of this feature. It was originally intended to help avoid name
++ conflicts among dll's built for the various win32/un*x
++ environments, so that (for example) two versions of a zlib dll
++ could coexist on the same machine.
++
++ The generic cygwin/mingw path layout uses a `bin' directory for
++ applications and dll's and a `lib' directory for the import
++ libraries (using cygwin nomenclature):
++
++ bin/
++ cygxxx.dll
++ lib/
++ libxxx.dll.a (in case of dll's)
++ libxxx.a (in case of static archive)
++
++ Linking directly to a dll without using the import library can be
++ done two ways:
++
++ 1. Use the dll directly by adding the `bin' path to the link line
++ gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx
++
++ However, as the dll's often have version numbers appended to their
++ names (`cygncurses-5.dll') this will often fail, unless one
++ specifies `-L../bin -lncurses-5' to include the version. Import
++ libs are generally not versioned, and do not have this difficulty.
++
++ 2. Create a symbolic link from the dll to a file in the `lib'
++ directory according to the above mentioned search pattern. This
++ should be used to avoid unwanted changes in the tools needed for
++ making the app/dll.
++
++ ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a]
++
++ Then you can link without any make environment changes.
++
++ gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx
++
++ This technique also avoids the version number problems, because
++ the following is perfectly legal
++
++ bin/
++ cygxxx-5.dll
++ lib/
++ libxxx.dll.a -> ../bin/cygxxx-5.dll
++
++ Linking directly to a dll without using an import lib will work
++ even when auto-import features are exercised, and even when
++ `--enable-runtime-pseudo-relocs' is used.
++
++ Given the improvements in speed and memory usage, one might
++ justifiably wonder why import libraries are used at all. There
++ are two reasons:
++
++ 1. Until recently, the link-directly-to-dll functionality did _not_
++ work with auto-imported data.
++
++ 2. Sometimes it is necessary to include pure static objects within
++ the import library (which otherwise contains only bfd's for
++ indirection symbols that point to the exports of a dll). Again,
++ the import lib for the cygwin kernel makes use of this ability,
++ and it is not possible to do this without an import lib.
++
++ So, import libs are not going away. But the ability to replace
++ true import libs with a simple symbolic link to (or a copy of) a
++ dll, in most cases, is a useful addition to the suite of tools
++ binutils makes available to the win32 developer. Given the
++ massive improvements in memory requirements during linking, storage
++ requirements, and linking speed, we expect that many developers
++ will soon begin to use this feature whenever possible.
++
++_symbol aliasing_
++
++ _adding additional names_
++ Sometimes, it is useful to export symbols with additional
++ names. A symbol `foo' will be exported as `foo', but it can
++ also be exported as `_foo' by using special directives in the
++ DEF file when creating the dll. This will affect also the
++ optional created import library. Consider the following DEF
++ file:
++
++ LIBRARY "xyz.dll" BASE=0x61000000
++
++ EXPORTS
++ foo
++ _foo = foo
++
++ The line `_foo = foo' maps the symbol `foo' to `_foo'.
++
++ Another method for creating a symbol alias is to create it in
++ the source code using the "weak" attribute:
++
++ void foo () { /* Do something. */; }
++ void _foo () __attribute__ ((weak, alias ("foo")));
++
++ See the gcc manual for more information about attributes and
++ weak symbols.
++
++ _renaming symbols_
++ Sometimes it is useful to rename exports. For instance, the
++ cygwin kernel does this regularly. A symbol `_foo' can be
++ exported as `foo' but not as `_foo' by using special
++ directives in the DEF file. (This will also affect the import
++ library, if it is created). In the following example:
++
++ LIBRARY "xyz.dll" BASE=0x61000000
++
++ EXPORTS
++ _foo = foo
++
++ The line `_foo = foo' maps the exported symbol `foo' to
++ `_foo'.
++
++ Note: using a DEF file disables the default auto-export behavior,
++ unless the `--export-all-symbols' command line option is used.
++ If, however, you are trying to rename symbols, then you should list
++ _all_ desired exports in the DEF file, including the symbols that
++ are not being renamed, and do _not_ use the `--export-all-symbols'
++ option. If you list only the renamed symbols in the DEF file, and
++ use `--export-all-symbols' to handle the other symbols, then the
++ both the new names _and_ the original names for the renamed
++ symbols will be exported. In effect, you'd be aliasing those
++ symbols, not renaming them, which is probably not what you wanted.
++
++_weak externals_
++ The Windows object format, PE, specifies a form of weak symbols
++ called weak externals. When a weak symbol is linked and the
++ symbol is not defined, the weak symbol becomes an alias for some
++ other symbol. There are three variants of weak externals:
++ * Definition is searched for in objects and libraries,
++ historically called lazy externals.
++
++ * Definition is searched for only in other objects, not in
++ libraries. This form is not presently implemented.
++
++ * No search; the symbol is an alias. This form is not presently
++ implemented.
++ As a GNU extension, weak symbols that do not specify an alternate
++ symbol are supported. If the symbol is undefined when linking,
++ the symbol uses a default value.
++
++
++File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent
++
++4.11 `ld' and Xtensa Processors
++===============================
++
++The default `ld' behavior for Xtensa processors is to interpret
++`SECTIONS' commands so that lists of explicitly named sections in a
++specification with a wildcard file will be interleaved when necessary to
++keep literal pools within the range of PC-relative load offsets. For
++example, with the command:
++
++ SECTIONS
++ {
++ .text : {
++ *(.literal .text)
++ }
++ }
++
++`ld' may interleave some of the `.literal' and `.text' sections from
++different object files to ensure that the literal pools are within the
++range of PC-relative load offsets. A valid interleaving might place
++the `.literal' sections from an initial group of files followed by the
++`.text' sections of that group of files. Then, the `.literal' sections
++from the rest of the files and the `.text' sections from the rest of
++the files would follow.
++
++ Relaxation is enabled by default for the Xtensa version of `ld' and
++provides two important link-time optimizations. The first optimization
++is to combine identical literal values to reduce code size. A redundant
++literal will be removed and all the `L32R' instructions that use it
++will be changed to reference an identical literal, as long as the
++location of the replacement literal is within the offset range of all
++the `L32R' instructions. The second optimization is to remove
++unnecessary overhead from assembler-generated "longcall" sequences of
++`L32R'/`CALLXN' when the target functions are within range of direct
++`CALLN' instructions.
++
++ For each of these cases where an indirect call sequence can be
++optimized to a direct call, the linker will change the `CALLXN'
++instruction to a `CALLN' instruction, remove the `L32R' instruction,
++and remove the literal referenced by the `L32R' instruction if it is
++not used for anything else. Removing the `L32R' instruction always
++reduces code size but can potentially hurt performance by changing the
++alignment of subsequent branch targets. By default, the linker will
++always preserve alignments, either by switching some instructions
++between 24-bit encodings and the equivalent density instructions or by
++inserting a no-op in place of the `L32R' instruction that was removed.
++If code size is more important than performance, the `--size-opt'
++option can be used to prevent the linker from widening density
++instructions or inserting no-ops, except in a few cases where no-ops
++are required for correctness.
++
++ The following Xtensa-specific command-line options can be used to
++control the linker:
++
++`--no-relax'
++ Since the Xtensa version of `ld' enables the `--relax' option by
++ default, the `--no-relax' option is provided to disable relaxation.
++
++`--size-opt'
++ When optimizing indirect calls to direct calls, optimize for code
++ size more than performance. With this option, the linker will not
++ insert no-ops or widen density instructions to preserve branch
++ target alignment. There may still be some cases where no-ops are
++ required to preserve the correctness of the code.
++
++
++File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top
++
++5 BFD
++*****
++
++The linker accesses object and archive files using the BFD libraries.
++These libraries allow the linker to use the same routines to operate on
++object files whatever the object file format. A different object file
++format can be supported simply by creating a new BFD back end and adding
++it to the library. To conserve runtime memory, however, the linker and
++associated tools are usually configured to support only a subset of the
++object file formats available. You can use `objdump -i' (*note
++objdump: (binutils.info)objdump.) to list all the formats available for
++your configuration.
++
++ As with most implementations, BFD is a compromise between several
++conflicting requirements. The major factor influencing BFD design was
++efficiency: any time used converting between formats is time which
++would not have been spent had BFD not been involved. This is partly
++offset by abstraction payback; since BFD simplifies applications and
++back ends, more time and care may be spent optimizing algorithms for a
++greater speed.
++
++ One minor artifact of the BFD solution which you should bear in mind
++is the potential for information loss. There are two places where
++useful information can be lost using the BFD mechanism: during
++conversion and during output. *Note BFD information loss::.
++
++* Menu:
++
++* BFD outline:: How it works: an outline of BFD
++
++
++File: ld.info, Node: BFD outline, Up: BFD
++
++5.1 How It Works: An Outline of BFD
++===================================
++
++When an object file is opened, BFD subroutines automatically determine
++the format of the input object file. They then build a descriptor in
++memory with pointers to routines that will be used to access elements of
++the object file's data structures.
++
++ As different information from the object files is required, BFD
++reads from different sections of the file and processes them. For
++example, a very common operation for the linker is processing symbol
++tables. Each BFD back end provides a routine for converting between
++the object file's representation of symbols and an internal canonical
++format. When the linker asks for the symbol table of an object file, it
++calls through a memory pointer to the routine from the relevant BFD
++back end which reads and converts the table into a canonical form. The
++linker then operates upon the canonical form. When the link is finished
++and the linker writes the output file's symbol table, another BFD back
++end routine is called to take the newly created symbol table and
++convert it into the chosen output format.
++
++* Menu:
++
++* BFD information loss:: Information Loss
++* Canonical format:: The BFD canonical object-file format
++
++
++File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline
++
++5.1.1 Information Loss
++----------------------
++
++_Information can be lost during output._ The output formats supported
++by BFD do not provide identical facilities, and information which can
++be described in one form has nowhere to go in another format. One
++example of this is alignment information in `b.out'. There is nowhere
++in an `a.out' format file to store alignment information on the
++contained data, so when a file is linked from `b.out' and an `a.out'
++image is produced, alignment information will not propagate to the
++output file. (The linker will still use the alignment information
++internally, so the link is performed correctly).
++
++ Another example is COFF section names. COFF files may contain an
++unlimited number of sections, each one with a textual section name. If
++the target of the link is a format which does not have many sections
++(e.g., `a.out') or has sections without names (e.g., the Oasys format),
++the link cannot be done simply. You can circumvent this problem by
++describing the desired input-to-output section mapping with the linker
++command language.
++
++ _Information can be lost during canonicalization._ The BFD internal
++canonical form of the external formats is not exhaustive; there are
++structures in input formats for which there is no direct representation
++internally. This means that the BFD back ends cannot maintain all
++possible data richness through the transformation between external to
++internal and back to external formats.
++
++ This limitation is only a problem when an application reads one
++format and writes another. Each BFD back end is responsible for
++maintaining as much data as possible, and the internal BFD canonical
++form has structures which are opaque to the BFD core, and exported only
++to the back ends. When a file is read in one format, the canonical form
++is generated for BFD and the application. At the same time, the back
++end saves away any information which may otherwise be lost. If the data
++is then written back in the same format, the back end routine will be
++able to use the canonical form provided by the BFD core as well as the
++information it prepared earlier. Since there is a great deal of
++commonality between back ends, there is no information lost when
++linking or copying big endian COFF to little endian COFF, or `a.out' to
++`b.out'. When a mixture of formats is linked, the information is only
++lost from the files whose format differs from the destination.
++
++
++File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline
++
++5.1.2 The BFD canonical object-file format
++------------------------------------------
++
++The greatest potential for loss of information occurs when there is the
++least overlap between the information provided by the source format,
++that stored by the canonical format, and that needed by the destination
++format. A brief description of the canonical form may help you
++understand which kinds of data you can count on preserving across
++conversions.
++
++_files_
++ Information stored on a per-file basis includes target machine
++ architecture, particular implementation format type, a demand
++ pageable bit, and a write protected bit. Information like Unix
++ magic numbers is not stored here--only the magic numbers' meaning,
++ so a `ZMAGIC' file would have both the demand pageable bit and the
++ write protected text bit set. The byte order of the target is
++ stored on a per-file basis, so that big- and little-endian object
++ files may be used with one another.
++
++_sections_
++ Each section in the input file contains the name of the section,
++ the section's original address in the object file, size and
++ alignment information, various flags, and pointers into other BFD
++ data structures.
++
++_symbols_
++ Each symbol contains a pointer to the information for the object
++ file which originally defined it, its name, its value, and various
++ flag bits. When a BFD back end reads in a symbol table, it
++ relocates all symbols to make them relative to the base of the
++ section where they were defined. Doing this ensures that each
++ symbol points to its containing section. Each symbol also has a
++ varying amount of hidden private data for the BFD back end. Since
++ the symbol points to the original file, the private data format
++ for that symbol is accessible. `ld' can operate on a collection
++ of symbols of wildly different formats without problems.
++
++ Normal global and simple local symbols are maintained on output,
++ so an output file (no matter its format) will retain symbols
++ pointing to functions and to global, static, and common variables.
++ Some symbol information is not worth retaining; in `a.out', type
++ information is stored in the symbol table as long symbol names.
++ This information would be useless to most COFF debuggers; the
++ linker has command line switches to allow users to throw it away.
++
++ There is one word of type information within the symbol, so if the
++ format supports symbol type information within symbols (for
++ example, COFF, IEEE, Oasys) and the type is simple enough to fit
++ within one word (nearly everything but aggregates), the
++ information will be preserved.
++
++_relocation level_
++ Each canonical BFD relocation record contains a pointer to the
++ symbol to relocate to, the offset of the data to relocate, the
++ section the data is in, and a pointer to a relocation type
++ descriptor. Relocation is performed by passing messages through
++ the relocation type descriptor and the symbol pointer. Therefore,
++ relocations can be performed on output data using a relocation
++ method that is only available in one of the input formats. For
++ instance, Oasys provides a byte relocation format. A relocation
++ record requesting this relocation type would point indirectly to a
++ routine to perform this, so the relocation may be performed on a
++ byte being written to a 68k COFF file, even though 68k COFF has no
++ such relocation type.
++
++_line numbers_
++ Object formats can contain, for debugging purposes, some form of
++ mapping between symbols, source line numbers, and addresses in the
++ output file. These addresses have to be relocated along with the
++ symbol information. Each symbol with an associated list of line
++ number records points to the first record of the list. The head
++ of a line number list consists of a pointer to the symbol, which
++ allows finding out the address of the function whose line number
++ is being described. The rest of the list is made up of pairs:
++ offsets into the section and line numbers. Any format which can
++ simply derive this information can pass it successfully between
++ formats (COFF, IEEE and Oasys).
++
++
++File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top
++
++6 Reporting Bugs
++****************
++
++Your bug reports play an essential role in making `ld' reliable.
++
++ Reporting a bug may help you by bringing a solution to your problem,
++or it may not. But in any case the principal function of a bug report
++is to help the entire community by making the next version of `ld' work
++better. Bug reports are your contribution to the maintenance of `ld'.
++
++ In order for a bug report to serve its purpose, you must include the
++information that enables us to fix the bug.
++
++* Menu:
++
++* Bug Criteria:: Have you found a bug?
++* Bug Reporting:: How to report bugs
++
++
++File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs
++
++6.1 Have You Found a Bug?
++=========================
++
++If you are not sure whether you have found a bug, here are some
++guidelines:
++
++ * If the linker gets a fatal signal, for any input whatever, that is
++ a `ld' bug. Reliable linkers never crash.
++
++ * If `ld' produces an error message for valid input, that is a bug.
++
++ * If `ld' does not produce an error message for invalid input, that
++ may be a bug. In the general case, the linker can not verify that
++ object files are correct.
++
++ * If you are an experienced user of linkers, your suggestions for
++ improvement of `ld' are welcome in any case.
++
++
++File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs
++
++6.2 How to Report Bugs
++======================
++
++A number of companies and individuals offer support for GNU products.
++If you obtained `ld' from a support organization, we recommend you
++contact that organization first.
++
++ You can find contact information for many support companies and
++individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
++
++ Otherwise, send bug reports for `ld' to `bug-binutils@gnu.org'.
++
++ The fundamental principle of reporting bugs usefully is this:
++*report all the facts*. If you are not sure whether to state a fact or
++leave it out, state it!
++
++ Often people omit facts because they think they know what causes the
++problem and assume that some details do not matter. Thus, you might
++assume that the name of a symbol you use in an example does not matter.
++Well, probably it does not, but one cannot be sure. Perhaps the bug
++is a stray memory reference which happens to fetch from the location
++where that name is stored in memory; perhaps, if the name were
++different, the contents of that location would fool the linker into
++doing the right thing despite the bug. Play it safe and give a
++specific, complete example. That is the easiest thing for you to do,
++and the most helpful.
++
++ Keep in mind that the purpose of a bug report is to enable us to fix
++the bug if it is new to us. Therefore, always write your bug reports
++on the assumption that the bug has not been reported previously.
++
++ Sometimes people give a few sketchy facts and ask, "Does this ring a
++bell?" This cannot help us fix a bug, so it is basically useless. We
++respond by asking for enough details to enable us to investigate. You
++might as well expedite matters by sending them to begin with.
++
++ To enable us to fix the bug, you should include all these things:
++
++ * The version of `ld'. `ld' announces it if you start it with the
++ `--version' argument.
++
++ Without this, we will not know whether there is any point in
++ looking for the bug in the current version of `ld'.
++
++ * Any patches you may have applied to the `ld' source, including any
++ patches made to the `BFD' library.
++
++ * The type of machine you are using, and the operating system name
++ and version number.
++
++ * What compiler (and its version) was used to compile `ld'--e.g.
++ "`gcc-2.7'".
++
++ * The command arguments you gave the linker to link your example and
++ observe the bug. To guarantee you will not omit something
++ important, list them all. A copy of the Makefile (or the output
++ from make) is sufficient.
++
++ If we were to try to guess the arguments, we would probably guess
++ wrong and then we might not encounter the bug.
++
++ * A complete input file, or set of input files, that will reproduce
++ the bug. It is generally most helpful to send the actual object
++ files provided that they are reasonably small. Say no more than
++ 10K. For bigger files you can either make them available by FTP
++ or HTTP or else state that you are willing to send the object
++ file(s) to whomever requests them. (Note - your email will be
++ going to a mailing list, so we do not want to clog it up with
++ large attachments). But small attachments are best.
++
++ If the source files were assembled using `gas' or compiled using
++ `gcc', then it may be OK to send the source files rather than the
++ object files. In this case, be sure to say exactly what version of
++ `gas' or `gcc' was used to produce the object files. Also say how
++ `gas' or `gcc' were configured.
++
++ * A description of what behavior you observe that you believe is
++ incorrect. For example, "It gets a fatal signal."
++
++ Of course, if the bug is that `ld' gets a fatal signal, then we
++ will certainly notice it. But if the bug is incorrect output, we
++ might not notice unless it is glaringly wrong. You might as well
++ not give us a chance to make a mistake.
++
++ Even if the problem you experience is a fatal signal, you should
++ still say so explicitly. Suppose something strange is going on,
++ such as, your copy of `ld' is out of synch, or you have
++ encountered a bug in the C library on your system. (This has
++ happened!) Your copy might crash and ours would not. If you told
++ us to expect a crash, then when ours fails to crash, we would know
++ that the bug was not happening for us. If you had not told us to
++ expect a crash, then we would not be able to draw any conclusion
++ from our observations.
++
++ * If you wish to suggest changes to the `ld' source, send us context
++ diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
++ Always send diffs from the old file to the new file. If you even
++ discuss something in the `ld' source, refer to it by context, not
++ by line number.
++
++ The line numbers in our development sources will not match those
++ in your sources. Your line numbers would convey no useful
++ information to us.
++
++ Here are some things that are not necessary:
++
++ * A description of the envelope of the bug.
++
++ Often people who encounter a bug spend a lot of time investigating
++ which changes to the input file will make the bug go away and which
++ changes will not affect it.
++
++ This is often time consuming and not very useful, because the way
++ we will find the bug is by running a single example under the
++ debugger with breakpoints, not by pure deduction from a series of
++ examples. We recommend that you save your time for something else.
++
++ Of course, if you can find a simpler example to report _instead_
++ of the original one, that is a convenience for us. Errors in the
++ output will be easier to spot, running under the debugger will take
++ less time, and so on.
++
++ However, simplification is not vital; if you do not want to do
++ this, report the bug anyway and send us the entire test case you
++ used.
++
++ * A patch for the bug.
++
++ A patch for the bug does help us if it is a good one. But do not
++ omit the necessary information, such as the test case, on the
++ assumption that a patch is all we need. We might see problems
++ with your patch and decide to fix the problem another way, or we
++ might not understand it at all.
++
++ Sometimes with a program as complicated as `ld' it is very hard to
++ construct an example that will make the program follow a certain
++ path through the code. If you do not send us the example, we will
++ not be able to construct one, so we will not be able to verify
++ that the bug is fixed.
++
++ And if we cannot understand what bug you are trying to fix, or why
++ your patch should be an improvement, we will not install it. A
++ test case will help us to understand.
++
++ * A guess about what the bug is or what it depends on.
++
++ Such guesses are usually wrong. Even we cannot guess right about
++ such things without first using the debugger to find the facts.
++
++
++File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top
++
++Appendix A MRI Compatible Script Files
++**************************************
++
++To aid users making the transition to GNU `ld' from the MRI linker,
++`ld' can use MRI compatible linker scripts as an alternative to the
++more general-purpose linker scripting language described in *Note
++Scripts::. MRI compatible linker scripts have a much simpler command
++set than the scripting language otherwise used with `ld'. GNU `ld'
++supports the most commonly used MRI linker commands; these commands are
++described here.
++
++ In general, MRI scripts aren't of much use with the `a.out' object
++file format, since it only has three sections and MRI scripts lack some
++features to make use of them.
++
++ You can specify a file containing an MRI-compatible script using the
++`-c' command-line option.
++
++ Each command in an MRI-compatible script occupies its own line; each
++command line starts with the keyword that identifies the command (though
++blank lines are also allowed for punctuation). If a line of an
++MRI-compatible script begins with an unrecognized keyword, `ld' issues
++a warning message, but continues processing the script.
++
++ Lines beginning with `*' are comments.
++
++ You can write these commands using all upper-case letters, or all
++lower case; for example, `chip' is the same as `CHIP'. The following
++list shows only the upper-case form of each command.
++
++`ABSOLUTE SECNAME'
++`ABSOLUTE SECNAME, SECNAME, ... SECNAME'
++ Normally, `ld' includes in the output file all sections from all
++ the input files. However, in an MRI-compatible script, you can
++ use the `ABSOLUTE' command to restrict the sections that will be
++ present in your output program. If the `ABSOLUTE' command is used
++ at all in a script, then only the sections named explicitly in
++ `ABSOLUTE' commands will appear in the linker output. You can
++ still use other input sections (whatever you select on the command
++ line, or using `LOAD') to resolve addresses in the output file.
++
++`ALIAS OUT-SECNAME, IN-SECNAME'
++ Use this command to place the data from input section IN-SECNAME
++ in a section called OUT-SECNAME in the linker output file.
++
++ IN-SECNAME may be an integer.
++
++`ALIGN SECNAME = EXPRESSION'
++ Align the section called SECNAME to EXPRESSION. The EXPRESSION
++ should be a power of two.
++
++`BASE EXPRESSION'
++ Use the value of EXPRESSION as the lowest address (other than
++ absolute addresses) in the output file.
++
++`CHIP EXPRESSION'
++`CHIP EXPRESSION, EXPRESSION'
++ This command does nothing; it is accepted only for compatibility.
++
++`END'
++ This command does nothing whatever; it's only accepted for
++ compatibility.
++
++`FORMAT OUTPUT-FORMAT'
++ Similar to the `OUTPUT_FORMAT' command in the more general linker
++ language, but restricted to one of these output formats:
++
++ 1. S-records, if OUTPUT-FORMAT is `S'
++
++ 2. IEEE, if OUTPUT-FORMAT is `IEEE'
++
++ 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is
++ `COFF'
++
++`LIST ANYTHING...'
++ Print (to the standard output file) a link map, as produced by the
++ `ld' command-line option `-M'.
++
++ The keyword `LIST' may be followed by anything on the same line,
++ with no change in its effect.
++
++`LOAD FILENAME'
++`LOAD FILENAME, FILENAME, ... FILENAME'
++ Include one or more object file FILENAME in the link; this has the
++ same effect as specifying FILENAME directly on the `ld' command
++ line.
++
++`NAME OUTPUT-NAME'
++ OUTPUT-NAME is the name for the program produced by `ld'; the
++ MRI-compatible command `NAME' is equivalent to the command-line
++ option `-o' or the general script language command `OUTPUT'.
++
++`ORDER SECNAME, SECNAME, ... SECNAME'
++`ORDER SECNAME SECNAME SECNAME'
++ Normally, `ld' orders the sections in its output file in the order
++ in which they first appear in the input files. In an
++ MRI-compatible script, you can override this ordering with the
++ `ORDER' command. The sections you list with `ORDER' will appear
++ first in your output file, in the order specified.
++
++`PUBLIC NAME=EXPRESSION'
++`PUBLIC NAME,EXPRESSION'
++`PUBLIC NAME EXPRESSION'
++ Supply a value (EXPRESSION) for external symbol NAME used in the
++ linker input files.
++
++`SECT SECNAME, EXPRESSION'
++`SECT SECNAME=EXPRESSION'
++`SECT SECNAME EXPRESSION'
++ You can use any of these three forms of the `SECT' command to
++ specify the start address (EXPRESSION) for section SECNAME. If
++ you have more than one `SECT' statement for the same SECNAME, only
++ the _first_ sets the start address.
++
++
++File: ld.info, Node: GNU Free Documentation License, Next: Index, Prev: MRI, Up: Top
++
++Appendix B GNU Free Documentation License
++*****************************************
++
++ Version 1.1, March 2000
++
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++
++ 0. PREAMBLE
++
++ The purpose of this License is to make a manual, textbook, or other
++ written document "free" in the sense of freedom: to assure everyone
++ the effective freedom to copy and redistribute it, with or without
++ modifying it, either commercially or noncommercially. Secondarily,
++ this License preserves for the author and publisher a way to get
++ credit for their work, while not being considered responsible for
++ modifications made by others.
++
++ This License is a kind of "copyleft", which means that derivative
++ works of the document must themselves be free in the same sense.
++ It complements the GNU General Public License, which is a copyleft
++ license designed for free software.
++
++ We have designed this License in order to use it for manuals for
++ free software, because free software needs free documentation: a
++ free program should come with manuals providing the same freedoms
++ that the software does. But this License is not limited to
++ software manuals; it can be used for any textual work, regardless
++ of subject matter or whether it is published as a printed book.
++ We recommend this License principally for works whose purpose is
++ instruction or reference.
++
++
++ 1. APPLICABILITY AND DEFINITIONS
++
++ This License applies to any manual or other work that contains a
++ notice placed by the copyright holder saying it can be distributed
++ under the terms of this License. The "Document", below, refers to
++ any such manual or work. Any member of the public is a licensee,
++ and is addressed as "you."
++
++ A "Modified Version" of the Document means any work containing the
++ Document or a portion of it, either copied verbatim, or with
++ modifications and/or translated into another language.
++
++ A "Secondary Section" is a named appendix or a front-matter
++ section of the Document that deals exclusively with the
++ relationship of the publishers or authors of the Document to the
++ Document's overall subject (or to related matters) and contains
++ nothing that could fall directly within that overall subject.
++ (For example, if the Document is in part a textbook of
++ mathematics, a Secondary Section may not explain any mathematics.)
++ The relationship could be a matter of historical connection with
++ the subject or with related matters, or of legal, commercial,
++ philosophical, ethical or political position regarding them.
++
++ The "Invariant Sections" are certain Secondary Sections whose
++ titles are designated, as being those of Invariant Sections, in
++ the notice that says that the Document is released under this
++ License.
++
++ The "Cover Texts" are certain short passages of text that are
++ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
++ that says that the Document is released under this License.
++
++ A "Transparent" copy of the Document means a machine-readable copy,
++ represented in a format whose specification is available to the
++ general public, whose contents can be viewed and edited directly
++ and straightforwardly with generic text editors or (for images
++ composed of pixels) generic paint programs or (for drawings) some
++ widely available drawing editor, and that is suitable for input to
++ text formatters or for automatic translation to a variety of
++ formats suitable for input to text formatters. A copy made in an
++ otherwise Transparent file format whose markup has been designed
++ to thwart or discourage subsequent modification by readers is not
++ Transparent. A copy that is not "Transparent" is called "Opaque."
++
++ Examples of suitable formats for Transparent copies include plain
++ ASCII without markup, Texinfo input format, LaTeX input format,
++ SGML or XML using a publicly available DTD, and
++ standard-conforming simple HTML designed for human modification.
++ Opaque formats include PostScript, PDF, proprietary formats that
++ can be read and edited only by proprietary word processors, SGML
++ or XML for which the DTD and/or processing tools are not generally
++ available, and the machine-generated HTML produced by some word
++ processors for output purposes only.
++
++ The "Title Page" means, for a printed book, the title page itself,
++ plus such following pages as are needed to hold, legibly, the
++ material this License requires to appear in the title page. For
++ works in formats which do not have any title page as such, "Title
++ Page" means the text near the most prominent appearance of the
++ work's title, preceding the beginning of the body of the text.
++
++ 2. VERBATIM COPYING
++
++ You may copy and distribute the Document in any medium, either
++ commercially or noncommercially, provided that this License, the
++ copyright notices, and the license notice saying this License
++ applies to the Document are reproduced in all copies, and that you
++ add no other conditions whatsoever to those of this License. You
++ may not use technical measures to obstruct or control the reading
++ or further copying of the copies you make or distribute. However,
++ you may accept compensation in exchange for copies. If you
++ distribute a large enough number of copies you must also follow
++ the conditions in section 3.
++
++ You may also lend copies, under the same conditions stated above,
++ and you may publicly display copies.
++
++ 3. COPYING IN QUANTITY
++
++ If you publish printed copies of the Document numbering more than
++ 100, and the Document's license notice requires Cover Texts, you
++ must enclose the copies in covers that carry, clearly and legibly,
++ all these Cover Texts: Front-Cover Texts on the front cover, and
++ Back-Cover Texts on the back cover. Both covers must also clearly
++ and legibly identify you as the publisher of these copies. The
++ front cover must present the full title with all words of the
++ title equally prominent and visible. You may add other material
++ on the covers in addition. Copying with changes limited to the
++ covers, as long as they preserve the title of the Document and
++ satisfy these conditions, can be treated as verbatim copying in
++ other respects.
++
++ If the required texts for either cover are too voluminous to fit
++ legibly, you should put the first ones listed (as many as fit
++ reasonably) on the actual cover, and continue the rest onto
++ adjacent pages.
++
++ If you publish or distribute Opaque copies of the Document
++ numbering more than 100, you must either include a
++ machine-readable Transparent copy along with each Opaque copy, or
++ state in or with each Opaque copy a publicly-accessible
++ computer-network location containing a complete Transparent copy
++ of the Document, free of added material, which the general
++ network-using public has access to download anonymously at no
++ charge using public-standard network protocols. If you use the
++ latter option, you must take reasonably prudent steps, when you
++ begin distribution of Opaque copies in quantity, to ensure that
++ this Transparent copy will remain thus accessible at the stated
++ location until at least one year after the last time you
++ distribute an Opaque copy (directly or through your agents or
++ retailers) of that edition to the public.
++
++ It is requested, but not required, that you contact the authors of
++ the Document well before redistributing any large number of
++ copies, to give them a chance to provide you with an updated
++ version of the Document.
++
++ 4. MODIFICATIONS
++
++ You may copy and distribute a Modified Version of the Document
++ under the conditions of sections 2 and 3 above, provided that you
++ release the Modified Version under precisely this License, with
++ the Modified Version filling the role of the Document, thus
++ licensing distribution and modification of the Modified Version to
++ whoever possesses a copy of it. In addition, you must do these
++ things in the Modified Version:
++
++ A. Use in the Title Page (and on the covers, if any) a title
++ distinct from that of the Document, and from those of previous
++ versions (which should, if there were any, be listed in the
++ History section of the Document). You may use the same title
++ as a previous version if the original publisher of that version
++ gives permission.
++ B. List on the Title Page, as authors, one or more persons or
++ entities responsible for authorship of the modifications in the
++ Modified Version, together with at least five of the principal
++ authors of the Document (all of its principal authors, if it
++ has less than five).
++ C. State on the Title page the name of the publisher of the
++ Modified Version, as the publisher.
++ D. Preserve all the copyright notices of the Document.
++ E. Add an appropriate copyright notice for your modifications
++ adjacent to the other copyright notices.
++ F. Include, immediately after the copyright notices, a license
++ notice giving the public permission to use the Modified Version
++ under the terms of this License, in the form shown in the
++ Addendum below.
++ G. Preserve in that license notice the full lists of Invariant
++ Sections and required Cover Texts given in the Document's
++ license notice.
++ H. Include an unaltered copy of this License.
++ I. Preserve the section entitled "History", and its title, and add
++ to it an item stating at least the title, year, new authors, and
++ publisher of the Modified Version as given on the Title Page.
++ If there is no section entitled "History" in the Document,
++ create one stating the title, year, authors, and publisher of
++ the Document as given on its Title Page, then add an item
++ describing the Modified Version as stated in the previous
++ sentence.
++ J. Preserve the network location, if any, given in the Document for
++ public access to a Transparent copy of the Document, and
++ likewise the network locations given in the Document for
++ previous versions it was based on. These may be placed in the
++ "History" section. You may omit a network location for a work
++ that was published at least four years before the Document
++ itself, or if the original publisher of the version it refers
++ to gives permission.
++ K. In any section entitled "Acknowledgements" or "Dedications",
++ preserve the section's title, and preserve in the section all the
++ substance and tone of each of the contributor acknowledgements
++ and/or dedications given therein.
++ L. Preserve all the Invariant Sections of the Document,
++ unaltered in their text and in their titles. Section numbers
++ or the equivalent are not considered part of the section titles.
++ M. Delete any section entitled "Endorsements." Such a section
++ may not be included in the Modified Version.
++ N. Do not retitle any existing section as "Endorsements" or to
++ conflict in title with any Invariant Section.
++
++ If the Modified Version includes new front-matter sections or
++ appendices that qualify as Secondary Sections and contain no
++ material copied from the Document, you may at your option
++ designate some or all of these sections as invariant. To do this,
++ add their titles to the list of Invariant Sections in the Modified
++ Version's license notice. These titles must be distinct from any
++ other section titles.
++
++ You may add a section entitled "Endorsements", provided it contains
++ nothing but endorsements of your Modified Version by various
++ parties-for example, statements of peer review or that the text has
++ been approved by an organization as the authoritative definition
++ of a standard.
++
++ You may add a passage of up to five words as a Front-Cover Text,
++ and a passage of up to 25 words as a Back-Cover Text, to the end
++ of the list of Cover Texts in the Modified Version. Only one
++ passage of Front-Cover Text and one of Back-Cover Text may be
++ added by (or through arrangements made by) any one entity. If the
++ Document already includes a cover text for the same cover,
++ previously added by you or by arrangement made by the same entity
++ you are acting on behalf of, you may not add another; but you may
++ replace the old one, on explicit permission from the previous
++ publisher that added the old one.
++
++ The author(s) and publisher(s) of the Document do not by this
++ License give permission to use their names for publicity for or to
++ assert or imply endorsement of any Modified Version.
++
++ 5. COMBINING DOCUMENTS
++
++ You may combine the Document with other documents released under
++ this License, under the terms defined in section 4 above for
++ modified versions, provided that you include in the combination
++ all of the Invariant Sections of all of the original documents,
++ unmodified, and list them all as Invariant Sections of your
++ combined work in its license notice.
++
++ The combined work need only contain one copy of this License, and
++ multiple identical Invariant Sections may be replaced with a single
++ copy. If there are multiple Invariant Sections with the same name
++ but different contents, make the title of each such section unique
++ by adding at the end of it, in parentheses, the name of the
++ original author or publisher of that section if known, or else a
++ unique number. Make the same adjustment to the section titles in
++ the list of Invariant Sections in the license notice of the
++ combined work.
++
++ In the combination, you must combine any sections entitled
++ "History" in the various original documents, forming one section
++ entitled "History"; likewise combine any sections entitled
++ "Acknowledgements", and any sections entitled "Dedications." You
++ must delete all sections entitled "Endorsements."
++
++ 6. COLLECTIONS OF DOCUMENTS
++
++ You may make a collection consisting of the Document and other
++ documents released under this License, and replace the individual
++ copies of this License in the various documents with a single copy
++ that is included in the collection, provided that you follow the
++ rules of this License for verbatim copying of each of the
++ documents in all other respects.
++
++ You may extract a single document from such a collection, and
++ distribute it individually under this License, provided you insert
++ a copy of this License into the extracted document, and follow
++ this License in all other respects regarding verbatim copying of
++ that document.
++
++ 7. AGGREGATION WITH INDEPENDENT WORKS
++
++ A compilation of the Document or its derivatives with other
++ separate and independent documents or works, in or on a volume of
++ a storage or distribution medium, does not as a whole count as a
++ Modified Version of the Document, provided no compilation
++ copyright is claimed for the compilation. Such a compilation is
++ called an "aggregate", and this License does not apply to the
++ other self-contained works thus compiled with the Document, on
++ account of their being thus compiled, if they are not themselves
++ derivative works of the Document.
++
++ If the Cover Text requirement of section 3 is applicable to these
++ copies of the Document, then if the Document is less than one
++ quarter of the entire aggregate, the Document's Cover Texts may be
++ placed on covers that surround only the Document within the
++ aggregate. Otherwise they must appear on covers around the whole
++ aggregate.
++
++ 8. TRANSLATION
++
++ Translation is considered a kind of modification, so you may
++ distribute translations of the Document under the terms of section
++ 4. Replacing Invariant Sections with translations requires special
++ permission from their copyright holders, but you may include
++ translations of some or all Invariant Sections in addition to the
++ original versions of these Invariant Sections. You may include a
++ translation of this License provided that you also include the
++ original English version of this License. In case of a
++ disagreement between the translation and the original English
++ version of this License, the original English version will prevail.
++
++ 9. TERMINATION
++
++ You may not copy, modify, sublicense, or distribute the Document
++ except as expressly provided for under this License. Any other
++ attempt to copy, modify, sublicense or distribute the Document is
++ void, and will automatically terminate your rights under this
++ License. However, parties who have received copies, or rights,
++ from you under this License will not have their licenses
++ terminated so long as such parties remain in full compliance.
++
++ 10. FUTURE REVISIONS OF THIS LICENSE
++
++ The Free Software Foundation may publish new, revised versions of
++ the GNU Free Documentation License from time to time. Such new
++ versions will be similar in spirit to the present version, but may
++ differ in detail to address new problems or concerns. See
++ http://www.gnu.org/copyleft/.
++
++ Each version of the License is given a distinguishing version
++ number. If the Document specifies that a particular numbered
++ version of this License "or any later version" applies to it, you
++ have the option of following the terms and conditions either of
++ that specified version or of any later version that has been
++ published (not as a draft) by the Free Software Foundation. If
++ the Document does not specify a version number of this License,
++ you may choose any version ever published (not as a draft) by the
++ Free Software Foundation.
++
++
++ADDENDUM: How to use this License for your documents
++====================================================
++
++To use this License in a document you have written, include a copy of
++the License in the document and put the following copyright and license
++notices just after the title page:
++
++ Copyright (C) YEAR YOUR NAME.
++ Permission is granted to copy, distribute and/or modify this document
++ under the terms of the GNU Free Documentation License, Version 1.1
++ or any later version published by the Free Software Foundation;
++ with the Invariant Sections being LIST THEIR TITLES, with the
++ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
++ A copy of the license is included in the section entitled "GNU
++ Free Documentation License."
++
++ If you have no Invariant Sections, write "with no Invariant Sections"
++instead of saying which ones are invariant. If you have no Front-Cover
++Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
++LIST"; likewise for Back-Cover Texts.
++
++ If your document contains nontrivial examples of program code, we
++recommend releasing these examples in parallel under your choice of
++free software license, such as the GNU General Public License, to
++permit their use in free software.
++
++
++File: ld.info, Node: Index, Prev: GNU Free Documentation License, Up: Top
++
++Index
++*****
++
++
++* Menu:
++
++* ": Symbols. (line 6)
++* -(: Options. (line 609)
++* --accept-unknown-input-arch: Options. (line 627)
++* --add-needed: Options. (line 649)
++* --add-stdcall-alias: Options. (line 1343)
++* --allow-multiple-definition: Options. (line 819)
++* --allow-shlib-undefined: Options. (line 825)
++* --architecture=ARCH: Options. (line 104)
++* --as-needed: Options. (line 637)
++* --auxiliary: Options. (line 205)
++* --base-file: Options. (line 1348)
++* --be8: ARM. (line 23)
++* --bss-plt: PowerPC ELF32. (line 13)
++* --check-sections: Options. (line 701)
++* --cref: Options. (line 711)
++* --default-imported-symver: Options. (line 853)
++* --default-symver: Options. (line 849)
++* --defsym SYMBOL=EXP: Options. (line 739)
++* --demangle[=STYLE]: Options. (line 752)
++* --disable-auto-image-base: Options. (line 1495)
++* --disable-auto-import: Options. (line 1624)
++* --disable-new-dtags: Options. (line 1295)
++* --disable-runtime-pseudo-reloc: Options. (line 1637)
++* --disable-stdcall-fixup: Options. (line 1358)
++* --discard-all: Options. (line 513)
++* --discard-locals: Options. (line 517)
++* --dll: Options. (line 1353)
++* --dll-search-prefix: Options. (line 1501)
++* --dotsyms: PowerPC64 ELF64. (line 33)
++* --dynamic-linker FILE: Options. (line 765)
++* --eh-frame-hdr: Options. (line 1291)
++* --emit-relocs: Options. (line 415)
++* --emit-stub-syms <1>: PowerPC64 ELF64. (line 29)
++* --emit-stub-syms: PowerPC ELF32. (line 37)
++* --enable-auto-image-base: Options. (line 1487)
++* --enable-auto-import: Options. (line 1510)
++* --enable-extra-pe-debug: Options. (line 1642)
++* --enable-new-dtags: Options. (line 1295)
++* --enable-runtime-pseudo-reloc: Options. (line 1629)
++* --enable-stdcall-fixup: Options. (line 1358)
++* --entry=ENTRY: Options. (line 158)
++* --error-unresolved-symbols: Options. (line 1244)
++* --exclude-libs: Options. (line 168)
++* --exclude-symbols: Options. (line 1400)
++* --export-all-symbols: Options. (line 1376)
++* --export-dynamic: Options. (line 179)
++* --fatal-warnings: Options. (line 771)
++* --file-alignment: Options. (line 1406)
++* --filter: Options. (line 226)
++* --fix-v4bx: ARM. (line 44)
++* --force-dynamic: Options. (line 424)
++* --force-exe-suffix: Options. (line 774)
++* --format=FORMAT: Options. (line 115)
++* --format=VERSION: TI COFF. (line 6)
++* --gc-sections: Options. (line 784)
++* --gpsize: Options. (line 259)
++* --hash-size=NUMBER: Options. (line 1304)
++* --heap: Options. (line 1412)
++* --help: Options. (line 792)
++* --image-base: Options. (line 1419)
++* --just-symbols=FILE: Options. (line 447)
++* --kill-at: Options. (line 1428)
++* --large-address-aware: Options. (line 1433)
++* --library-path=DIR: Options. (line 315)
++* --library=ARCHIVE: Options. (line 285)
++* --major-image-version: Options. (line 1442)
++* --major-os-version: Options. (line 1447)
++* --major-subsystem-version: Options. (line 1451)
++* --minor-image-version: Options. (line 1456)
++* --minor-os-version: Options. (line 1461)
++* --minor-subsystem-version: Options. (line 1465)
++* --mri-script=MRI-CMDFILE: Options. (line 139)
++* --multi-subspace: HPPA ELF32. (line 6)
++* --nmagic: Options. (line 384)
++* --no-accept-unknown-input-arch: Options. (line 627)
++* --no-add-needed: Options. (line 649)
++* --no-allow-shlib-undefined: Options. (line 825)
++* --no-as-needed: Options. (line 637)
++* --no-check-sections: Options. (line 701)
++* --no-define-common: Options. (line 723)
++* --no-demangle: Options. (line 752)
++* --no-dotsyms: PowerPC64 ELF64. (line 33)
++* --no-gc-sections: Options. (line 784)
++* --no-keep-memory: Options. (line 804)
++* --no-multi-toc: PowerPC64 ELF64. (line 74)
++* --no-omagic: Options. (line 398)
++* --no-opd-optimize: PowerPC64 ELF64. (line 48)
++* --no-relax: Xtensa. (line 56)
++* --no-tls-optimize <1>: PowerPC64 ELF64. (line 43)
++* --no-tls-optimize: PowerPC ELF32. (line 41)
++* --no-toc-optimize: PowerPC64 ELF64. (line 60)
++* --no-undefined: Options. (line 811)
++* --no-undefined-version: Options. (line 844)
++* --no-warn-mismatch: Options. (line 857)
++* --no-whole-archive: Options. (line 866)
++* --noinhibit-exec: Options. (line 870)
++* --non-overlapping-opd: PowerPC64 ELF64. (line 54)
++* --oformat: Options. (line 882)
++* --omagic: Options. (line 389)
++* --out-implib: Options. (line 1478)
++* --output-def: Options. (line 1470)
++* --output=OUTPUT: Options. (line 404)
++* --pic-executable: Options. (line 895)
++* --print-map: Options. (line 347)
++* --reduce-memory-overheads: Options. (line 1312)
++* --relax: Options. (line 911)
++* --relax on i960: i960. (line 31)
++* --relax on PowerPC: PowerPC ELF32. (line 6)
++* --relax on Xtensa: Xtensa. (line 27)
++* --relocatable: Options. (line 428)
++* --script=SCRIPT: Options. (line 471)
++* --sdata-got: PowerPC ELF32. (line 23)
++* --section-alignment: Options. (line 1647)
++* --section-start SECTIONNAME=ORG: Options. (line 1081)
++* --sort-common: Options. (line 1028)
++* --sort-section alignment: Options. (line 1038)
++* --sort-section name: Options. (line 1034)
++* --split-by-file: Options. (line 1042)
++* --split-by-reloc: Options. (line 1047)
++* --stack: Options. (line 1653)
++* --stats: Options. (line 1060)
++* --strip-all: Options. (line 458)
++* --strip-debug: Options. (line 462)
++* --stub-group-size: PowerPC64 ELF64. (line 6)
++* --stub-group-size=N: HPPA ELF32. (line 12)
++* --subsystem: Options. (line 1660)
++* --support-old-code: ARM. (line 6)
++* --sysroot: Options. (line 1064)
++* --target-help: Options. (line 796)
++* --target1-abs: ARM. (line 27)
++* --target1-rel: ARM. (line 27)
++* --target2=TYPE: ARM. (line 32)
++* --thumb-entry=ENTRY: ARM. (line 17)
++* --trace: Options. (line 467)
++* --trace-symbol=SYMBOL: Options. (line 522)
++* --traditional-format: Options. (line 1069)
++* --undefined=SYMBOL: Options. (line 480)
++* --unique[=SECTION]: Options. (line 498)
++* --unresolved-symbols: Options. (line 1096)
++* --use-blx: ARM. (line 57)
++* --verbose: Options. (line 1125)
++* --version: Options. (line 507)
++* --version-script=VERSION-SCRIPTFILE: Options. (line 1131)
++* --warn-common: Options. (line 1138)
++* --warn-constructors: Options. (line 1206)
++* --warn-multiple-gp: Options. (line 1211)
++* --warn-once: Options. (line 1225)
++* --warn-section-align: Options. (line 1229)
++* --warn-shared-textrel: Options. (line 1236)
++* --warn-unresolved-symbols: Options. (line 1239)
++* --whole-archive: Options. (line 1248)
++* --wrap: Options. (line 1262)
++* -AARCH: Options. (line 103)
++* -aKEYWORD: Options. (line 96)
++* -assert KEYWORD: Options. (line 659)
++* -b FORMAT: Options. (line 115)
++* -Bdynamic: Options. (line 662)
++* -Bgroup: Options. (line 672)
++* -Bshareable: Options. (line 1020)
++* -Bstatic: Options. (line 679)
++* -Bsymbolic: Options. (line 694)
++* -c MRI-CMDFILE: Options. (line 139)
++* -call_shared: Options. (line 662)
++* -d: Options. (line 149)
++* -dc: Options. (line 149)
++* -dn: Options. (line 679)
++* -dp: Options. (line 149)
++* -dy: Options. (line 662)
++* -E: Options. (line 179)
++* -e ENTRY: Options. (line 158)
++* -EB: Options. (line 198)
++* -EL: Options. (line 201)
++* -F: Options. (line 226)
++* -f: Options. (line 205)
++* -fini: Options. (line 250)
++* -G: Options. (line 259)
++* -g: Options. (line 256)
++* -hNAME: Options. (line 267)
++* -i: Options. (line 276)
++* -IFILE: Options. (line 765)
++* -init: Options. (line 279)
++* -lARCHIVE: Options. (line 285)
++* -LDIR: Options. (line 315)
++* -M: Options. (line 347)
++* -m EMULATION: Options. (line 337)
++* -Map: Options. (line 800)
++* -N: Options. (line 389)
++* -n: Options. (line 384)
++* -non_shared: Options. (line 679)
++* -nostdlib: Options. (line 876)
++* -O LEVEL: Options. (line 410)
++* -o OUTPUT: Options. (line 404)
++* -pie: Options. (line 895)
++* -q: Options. (line 415)
++* -qmagic: Options. (line 905)
++* -Qy: Options. (line 908)
++* -r: Options. (line 428)
++* -R FILE: Options. (line 447)
++* -rpath: Options. (line 945)
++* -rpath-link: Options. (line 967)
++* -S: Options. (line 462)
++* -s: Options. (line 458)
++* -shared: Options. (line 1020)
++* -soname=NAME: Options. (line 267)
++* -static: Options. (line 679)
++* -t: Options. (line 467)
++* -T SCRIPT: Options. (line 471)
++* -Tbss ORG: Options. (line 1090)
++* -Tdata ORG: Options. (line 1090)
++* -Ttext ORG: Options. (line 1090)
++* -u SYMBOL: Options. (line 480)
++* -Ur: Options. (line 488)
++* -V: Options. (line 507)
++* -v: Options. (line 507)
++* -X: Options. (line 517)
++* -x: Options. (line 513)
++* -Y PATH: Options. (line 531)
++* -y SYMBOL: Options. (line 522)
++* -z defs: Options. (line 811)
++* -z KEYWORD: Options. (line 535)
++* -z muldefs: Options. (line 819)
++* .: Location Counter. (line 6)
++* /DISCARD/: Output Section Discarding.
++ (line 18)
++* :PHDR: Output Section Phdr.
++ (line 6)
++* =FILLEXP: Output Section Fill.
++ (line 6)
++* >REGION: Output Section Region.
++ (line 6)
++* [COMMON]: Input Section Common.
++ (line 29)
++* ABSOLUTE (MRI): MRI. (line 33)
++* absolute and relocatable symbols: Expression Section. (line 6)
++* absolute expressions: Expression Section. (line 6)
++* ABSOLUTE(EXP): Builtin Functions. (line 10)
++* ADDR(SECTION): Builtin Functions. (line 17)
++* address, section: Output Section Address.
++ (line 6)
++* ALIAS (MRI): MRI. (line 44)
++* ALIGN (MRI): MRI. (line 50)
++* align expression: Builtin Functions. (line 36)
++* align location counter: Builtin Functions. (line 36)
++* ALIGN(ALIGN): Builtin Functions. (line 36)
++* ALIGN(EXP,ALIGN): Builtin Functions. (line 36)
++* ALIGN(SECTION_ALIGN): Forced Output Alignment.
++ (line 6)
++* allocating memory: MEMORY. (line 6)
++* architecture: Miscellaneous Commands.
++ (line 46)
++* architectures: Options. (line 103)
++* archive files, from cmd line: Options. (line 285)
++* archive search path in linker script: File Commands. (line 71)
++* arithmetic: Expressions. (line 6)
++* arithmetic operators: Operators. (line 6)
++* ARM interworking support: ARM. (line 6)
++* AS_NEEDED(FILES): File Commands. (line 51)
++* ASSERT: Miscellaneous Commands.
++ (line 9)
++* assertion in linker script: Miscellaneous Commands.
++ (line 9)
++* assignment in scripts: Assignments. (line 6)
++* AT(LMA): Output Section LMA. (line 6)
++* AT>LMA_REGION: Output Section LMA. (line 6)
++* automatic data imports: WIN32. (line 170)
++* back end: BFD. (line 6)
++* BASE (MRI): MRI. (line 54)
++* BE8: ARM. (line 23)
++* BFD canonical format: Canonical format. (line 11)
++* BFD requirements: BFD. (line 16)
++* big-endian objects: Options. (line 198)
++* binary input format: Options. (line 115)
++* BLOCK(EXP): Builtin Functions. (line 62)
++* bug criteria: Bug Criteria. (line 6)
++* bug reports: Bug Reporting. (line 6)
++* bugs in ld: Reporting Bugs. (line 6)
++* BYTE(EXPRESSION): Output Section Data.
++ (line 6)
++* C++ constructors, arranging in link: Output Section Keywords.
++ (line 19)
++* CHIP (MRI): MRI. (line 58)
++* COLLECT_NO_DEMANGLE: Environment. (line 29)
++* combining symbols, warnings on: Options. (line 1138)
++* command files: Scripts. (line 6)
++* command line: Options. (line 6)
++* common allocation: Options. (line 149)
++* common allocation in linker script: Miscellaneous Commands.
++ (line 20)
++* common symbol placement: Input Section Common.
++ (line 6)
++* compatibility, MRI: Options. (line 139)
++* constants in linker scripts: Constants. (line 6)
++* CONSTRUCTORS: Output Section Keywords.
++ (line 19)
++* constructors: Options. (line 488)
++* constructors, arranging in link: Output Section Keywords.
++ (line 19)
++* crash of linker: Bug Criteria. (line 9)
++* CREATE_OBJECT_SYMBOLS: Output Section Keywords.
++ (line 9)
++* creating a DEF file: WIN32. (line 137)
++* cross reference table: Options. (line 711)
++* cross references: Miscellaneous Commands.
++ (line 30)
++* current output location: Location Counter. (line 6)
++* data: Output Section Data.
++ (line 6)
++* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions.
++ (line 67)
++* DATA_SEGMENT_END(EXP): Builtin Functions. (line 88)
++* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 94)
++* dbx: Options. (line 1074)
++* DEF files, creating: Options. (line 1470)
++* default emulation: Environment. (line 21)
++* default input format: Environment. (line 9)
++* DEFINED(SYMBOL): Builtin Functions. (line 105)
++* deleting local symbols: Options. (line 513)
++* demangling, default: Environment. (line 29)
++* demangling, from command line: Options. (line 752)
++* direct linking to a dll: WIN32. (line 218)
++* discarding sections: Output Section Discarding.
++ (line 6)
++* discontinuous memory: MEMORY. (line 6)
++* DLLs, creating: Options. (line 1376)
++* DLLs, linking to: Options. (line 1501)
++* dot: Location Counter. (line 6)
++* dot inside sections: Location Counter. (line 34)
++* dot outside sections: Location Counter. (line 64)
++* dynamic linker, from command line: Options. (line 765)
++* dynamic symbol table: Options. (line 179)
++* ELF program headers: PHDRS. (line 6)
++* emulation: Options. (line 337)
++* emulation, default: Environment. (line 21)
++* END (MRI): MRI. (line 62)
++* endianness: Options. (line 198)
++* entry point: Entry Point. (line 6)
++* entry point, from command line: Options. (line 158)
++* entry point, thumb: ARM. (line 17)
++* ENTRY(SYMBOL): Entry Point. (line 6)
++* error on valid input: Bug Criteria. (line 12)
++* example of linker script: Simple Example. (line 6)
++* exporting DLL symbols: WIN32. (line 19)
++* expression evaluation order: Evaluation. (line 6)
++* expression sections: Expression Section. (line 6)
++* expression, absolute: Builtin Functions. (line 10)
++* expressions: Expressions. (line 6)
++* EXTERN: Miscellaneous Commands.
++ (line 13)
++* fatal signal: Bug Criteria. (line 9)
++* file name wildcard patterns: Input Section Wildcards.
++ (line 6)
++* FILEHDR: PHDRS. (line 61)
++* filename symbols: Output Section Keywords.
++ (line 9)
++* fill pattern, entire section: Output Section Fill.
++ (line 6)
++* FILL(EXPRESSION): Output Section Data.
++ (line 39)
++* finalization function: Options. (line 250)
++* first input file: File Commands. (line 79)
++* first instruction: Entry Point. (line 6)
++* FIX_V4BX: ARM. (line 44)
++* FORCE_COMMON_ALLOCATION: Miscellaneous Commands.
++ (line 20)
++* forcing input section alignment: Forced Input Alignment.
++ (line 6)
++* forcing output section alignment: Forced Output Alignment.
++ (line 6)
++* forcing the creation of dynamic sections: Options. (line 424)
++* FORMAT (MRI): MRI. (line 66)
++* functions in expressions: Builtin Functions. (line 6)
++* garbage collection <1>: Input Section Keep. (line 6)
++* garbage collection: Options. (line 784)
++* generating optimized output: Options. (line 410)
++* GNU linker: Overview. (line 6)
++* GNUTARGET: Environment. (line 9)
++* GROUP(FILES): File Commands. (line 44)
++* grouping input files: File Commands. (line 44)
++* groups of archives: Options. (line 609)
++* H8/300 support: H8/300. (line 6)
++* header size: Builtin Functions. (line 170)
++* heap size: Options. (line 1412)
++* help: Options. (line 792)
++* holes: Location Counter. (line 12)
++* holes, filling: Output Section Data.
++ (line 39)
++* HPPA multiple sub-space stubs: HPPA ELF32. (line 6)
++* HPPA stub grouping: HPPA ELF32. (line 12)
++* i960 support: i960. (line 6)
++* image base: Options. (line 1419)
++* implicit linker scripts: Implicit Linker Scripts.
++ (line 6)
++* import libraries: WIN32. (line 10)
++* INCLUDE FILENAME: File Commands. (line 9)
++* including a linker script: File Commands. (line 9)
++* including an entire archive: Options. (line 1248)
++* incremental link: Options. (line 276)
++* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands.
++ (line 25)
++* initialization function: Options. (line 279)
++* initialized data in ROM: Output Section LMA. (line 21)
++* input file format in linker script: Format Commands. (line 35)
++* input filename symbols: Output Section Keywords.
++ (line 9)
++* input files in linker scripts: File Commands. (line 16)
++* input files, displaying: Options. (line 467)
++* input format: Options. (line 115)
++* input object files in linker scripts: File Commands. (line 16)
++* input section alignment: Forced Input Alignment.
++ (line 6)
++* input section basics: Input Section Basics.
++ (line 6)
++* input section wildcards: Input Section Wildcards.
++ (line 6)
++* input sections: Input Section. (line 6)
++* INPUT(FILES): File Commands. (line 16)
++* integer notation: Constants. (line 6)
++* integer suffixes: Constants. (line 12)
++* internal object-file format: Canonical format. (line 11)
++* invalid input: Bug Criteria. (line 14)
++* K and M integer suffixes: Constants. (line 12)
++* KEEP: Input Section Keep. (line 6)
++* l =: MEMORY. (line 72)
++* L, deleting symbols beginning: Options. (line 517)
++* lazy evaluation: Evaluation. (line 6)
++* ld bugs, reporting: Bug Reporting. (line 6)
++* LDEMULATION: Environment. (line 21)
++* len =: MEMORY. (line 72)
++* LENGTH =: MEMORY. (line 72)
++* LENGTH(MEMORY): Builtin Functions. (line 122)
++* library search path in linker script: File Commands. (line 71)
++* link map: Options. (line 347)
++* link-time runtime library search path: Options. (line 967)
++* linker crash: Bug Criteria. (line 9)
++* linker script concepts: Basic Script Concepts.
++ (line 6)
++* linker script example: Simple Example. (line 6)
++* linker script file commands: File Commands. (line 6)
++* linker script format: Script Format. (line 6)
++* linker script input object files: File Commands. (line 16)
++* linker script simple commands: Simple Commands. (line 6)
++* linker scripts: Scripts. (line 6)
++* LIST (MRI): MRI. (line 77)
++* little-endian objects: Options. (line 201)
++* LOAD (MRI): MRI. (line 84)
++* load address: Output Section LMA. (line 6)
++* LOADADDR(SECTION): Builtin Functions. (line 125)
++* loading, preventing: Output Section Type.
++ (line 22)
++* local symbols, deleting: Options. (line 517)
++* location counter: Location Counter. (line 6)
++* LONG(EXPRESSION): Output Section Data.
++ (line 6)
++* M and K integer suffixes: Constants. (line 12)
++* machine architecture: Miscellaneous Commands.
++ (line 46)
++* machine dependencies: Machine Dependent. (line 6)
++* mapping input sections to output sections: Input Section. (line 6)
++* MAX: Builtin Functions. (line 130)
++* MEMORY: MEMORY. (line 6)
++* memory region attributes: MEMORY. (line 32)
++* memory regions: MEMORY. (line 6)
++* memory regions and sections: Output Section Region.
++ (line 6)
++* memory usage: Options. (line 804)
++* MIN: Builtin Functions. (line 133)
++* MRI compatibility: MRI. (line 6)
++* MSP430 extra sections: MSP430. (line 11)
++* NAME (MRI): MRI. (line 90)
++* name, section: Output Section Name.
++ (line 6)
++* names: Symbols. (line 6)
++* naming the output file: Options. (line 404)
++* NEXT(EXP): Builtin Functions. (line 137)
++* NMAGIC: Options. (line 384)
++* NOCROSSREFS(SECTIONS): Miscellaneous Commands.
++ (line 30)
++* NOLOAD: Output Section Type.
++ (line 22)
++* not enough room for program headers: Builtin Functions. (line 175)
++* o =: MEMORY. (line 67)
++* objdump -i: BFD. (line 6)
++* object file management: BFD. (line 6)
++* object files: Options. (line 29)
++* object formats available: BFD. (line 6)
++* object size: Options. (line 259)
++* OMAGIC: Options. (line 389)
++* opening object files: BFD outline. (line 6)
++* operators for arithmetic: Operators. (line 6)
++* options: Options. (line 6)
++* ORDER (MRI): MRI. (line 95)
++* org =: MEMORY. (line 67)
++* ORIGIN =: MEMORY. (line 67)
++* ORIGIN(MEMORY): Builtin Functions. (line 143)
++* orphan: Orphan Sections. (line 6)
++* output file after errors: Options. (line 870)
++* output file format in linker script: Format Commands. (line 10)
++* output file name in linker scripot: File Commands. (line 61)
++* output section alignment: Forced Output Alignment.
++ (line 6)
++* output section attributes: Output Section Attributes.
++ (line 6)
++* output section data: Output Section Data.
++ (line 6)
++* OUTPUT(FILENAME): File Commands. (line 61)
++* OUTPUT_ARCH(BFDARCH): Miscellaneous Commands.
++ (line 46)
++* OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10)
++* OVERLAY: Overlay Description.
++ (line 6)
++* overlays: Overlay Description.
++ (line 6)
++* partial link: Options. (line 428)
++* PHDRS: PHDRS. (line 6)
++* position independent executables: Options. (line 897)
++* PowerPC ELF32 options: PowerPC ELF32. (line 13)
++* PowerPC GOT: PowerPC ELF32. (line 23)
++* PowerPC long branches: PowerPC ELF32. (line 6)
++* PowerPC PLT: PowerPC ELF32. (line 13)
++* PowerPC stub symbols: PowerPC ELF32. (line 37)
++* PowerPC TLS optimization: PowerPC ELF32. (line 41)
++* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33)
++* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6)
++* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74)
++* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48)
++* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54)
++* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6)
++* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29)
++* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43)
++* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60)
++* precedence in expressions: Operators. (line 6)
++* prevent unnecessary loading: Output Section Type.
++ (line 22)
++* program headers: PHDRS. (line 6)
++* program headers and sections: Output Section Phdr.
++ (line 6)
++* program headers, not enough room: Builtin Functions. (line 175)
++* program segments: PHDRS. (line 6)
++* PROVIDE: PROVIDE. (line 6)
++* PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6)
++* PUBLIC (MRI): MRI. (line 103)
++* QUAD(EXPRESSION): Output Section Data.
++ (line 6)
++* quoted symbol names: Symbols. (line 6)
++* read-only text: Options. (line 384)
++* read/write from cmd line: Options. (line 389)
++* regions of memory: MEMORY. (line 6)
++* relative expressions: Expression Section. (line 6)
++* relaxing addressing modes: Options. (line 911)
++* relaxing on H8/300: H8/300. (line 9)
++* relaxing on i960: i960. (line 31)
++* relaxing on Xtensa: Xtensa. (line 27)
++* relocatable and absolute symbols: Expression Section. (line 6)
++* relocatable output: Options. (line 428)
++* removing sections: Output Section Discarding.
++ (line 6)
++* reporting bugs in ld: Reporting Bugs. (line 6)
++* requirements for BFD: BFD. (line 16)
++* retain relocations in final executable: Options. (line 415)
++* retaining specified symbols: Options. (line 931)
++* ROM initialized data: Output Section LMA. (line 21)
++* round up expression: Builtin Functions. (line 36)
++* round up location counter: Builtin Functions. (line 36)
++* runtime library name: Options. (line 267)
++* runtime library search path: Options. (line 945)
++* runtime pseudo-relocation: WIN32. (line 196)
++* scaled integers: Constants. (line 12)
++* scommon section: Input Section Common.
++ (line 20)
++* script files: Options. (line 471)
++* scripts: Scripts. (line 6)
++* search directory, from cmd line: Options. (line 315)
++* search path in linker script: File Commands. (line 71)
++* SEARCH_DIR(PATH): File Commands. (line 71)
++* SECT (MRI): MRI. (line 109)
++* section address: Output Section Address.
++ (line 6)
++* section address in expression: Builtin Functions. (line 17)
++* section alignment, warnings on: Options. (line 1229)
++* section data: Output Section Data.
++ (line 6)
++* section fill pattern: Output Section Fill.
++ (line 6)
++* section load address: Output Section LMA. (line 6)
++* section load address in expression: Builtin Functions. (line 125)
++* section name: Output Section Name.
++ (line 6)
++* section name wildcard patterns: Input Section Wildcards.
++ (line 6)
++* section size: Builtin Functions. (line 154)
++* section, assigning to memory region: Output Section Region.
++ (line 6)
++* section, assigning to program header: Output Section Phdr.
++ (line 6)
++* SECTIONS: SECTIONS. (line 6)
++* sections, discarding: Output Section Discarding.
++ (line 6)
++* segment origins, cmd line: Options. (line 1090)
++* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 146)
++* segments, ELF: PHDRS. (line 6)
++* shared libraries: Options. (line 1022)
++* SHORT(EXPRESSION): Output Section Data.
++ (line 6)
++* SIZEOF(SECTION): Builtin Functions. (line 154)
++* SIZEOF_HEADERS: Builtin Functions. (line 170)
++* small common symbols: Input Section Common.
++ (line 20)
++* SORT: Input Section Wildcards.
++ (line 58)
++* SORT_BY_ALIGNMENT: Input Section Wildcards.
++ (line 54)
++* SORT_BY_NAME: Input Section Wildcards.
++ (line 46)
++* SQUAD(EXPRESSION): Output Section Data.
++ (line 6)
++* stack size: Options. (line 1653)
++* standard Unix system: Options. (line 7)
++* start of execution: Entry Point. (line 6)
++* STARTUP(FILENAME): File Commands. (line 79)
++* strip all symbols: Options. (line 458)
++* strip debugger symbols: Options. (line 462)
++* stripping all but some symbols: Options. (line 931)
++* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment.
++ (line 6)
++* suffixes for integers: Constants. (line 12)
++* symbol defaults: Builtin Functions. (line 105)
++* symbol definition, scripts: Assignments. (line 6)
++* symbol names: Symbols. (line 6)
++* symbol tracing: Options. (line 522)
++* symbol versions: VERSION. (line 6)
++* symbol-only input: Options. (line 447)
++* symbols, from command line: Options. (line 739)
++* symbols, relocatable and absolute: Expression Section. (line 6)
++* symbols, retaining selectively: Options. (line 931)
++* synthesizing linker: Options. (line 911)
++* synthesizing on H8/300: H8/300. (line 14)
++* TARGET(BFDNAME): Format Commands. (line 35)
++* TARGET1: ARM. (line 27)
++* TARGET2: ARM. (line 32)
++* thumb entry point: ARM. (line 17)
++* TI COFF versions: TI COFF. (line 6)
++* traditional format: Options. (line 1069)
++* unallocated address, next: Builtin Functions. (line 137)
++* undefined symbol: Options. (line 480)
++* undefined symbol in linker script: Miscellaneous Commands.
++ (line 13)
++* undefined symbols, warnings on: Options. (line 1225)
++* uninitialized data placement: Input Section Common.
++ (line 6)
++* unspecified memory: Output Section Data.
++ (line 39)
++* usage: Options. (line 792)
++* USE_BLX: ARM. (line 57)
++* using a DEF file: WIN32. (line 42)
++* using auto-export functionality: WIN32. (line 22)
++* Using decorations: WIN32. (line 141)
++* variables, defining: Assignments. (line 6)
++* verbose: Options. (line 1125)
++* version: Options. (line 507)
++* version script: VERSION. (line 6)
++* version script, symbol versions: Options. (line 1131)
++* VERSION {script text}: VERSION. (line 6)
++* versions of symbols: VERSION. (line 6)
++* warnings, on combining symbols: Options. (line 1138)
++* warnings, on section alignment: Options. (line 1229)
++* warnings, on undefined symbols: Options. (line 1225)
++* weak externals: WIN32. (line 380)
++* what is this?: Overview. (line 6)
++* wildcard file name patterns: Input Section Wildcards.
++ (line 6)
++* Xtensa options: Xtensa. (line 56)
++* Xtensa processors: Xtensa. (line 6)
++
++
++
++Tag Table:
++Node: Top487
++Node: Overview1249
++Node: Invocation2363
++Node: Options2771
++Node: Environment77426
++Node: Scripts79186
++Node: Basic Script Concepts80920
++Node: Script Format83627
++Node: Simple Example84490
++Node: Simple Commands87586
++Node: Entry Point88037
++Node: File Commands88796
++Node: Format Commands92662
++Node: Miscellaneous Commands94628
++Node: Assignments96858
++Node: Simple Assignments97349
++Node: PROVIDE99085
++Node: PROVIDE_HIDDEN100290
++Node: Source Code Reference100534
++Node: SECTIONS104114
++Node: Output Section Description106005
++Node: Output Section Name107058
++Node: Output Section Address107934
++Node: Input Section109583
++Node: Input Section Basics110384
++Node: Input Section Wildcards112736
++Node: Input Section Common117469
++Node: Input Section Keep118951
++Node: Input Section Example119441
++Node: Output Section Data120409
++Node: Output Section Keywords123186
++Node: Output Section Discarding126755
++Node: Output Section Attributes127711
++Node: Output Section Type128715
++Node: Output Section LMA129869
++Node: Forced Output Alignment132140
++Node: Forced Input Alignment132408
++Node: Output Section Region132793
++Node: Output Section Phdr133223
++Node: Output Section Fill133887
++Node: Overlay Description135029
++Node: MEMORY139277
++Node: PHDRS143477
++Node: VERSION148516
++Node: Expressions156307
++Node: Constants157185
++Node: Symbols157746
++Node: Orphan Sections158484
++Node: Location Counter159247
++Node: Operators163551
++Node: Evaluation164473
++Node: Expression Section165837
++Node: Builtin Functions167326
++Node: Implicit Linker Scripts174818
++Node: Machine Dependent175593
++Node: H8/300176454
++Node: i960178079
++Node: ARM179764
++Node: HPPA ELF32182680
++Node: MMIX184303
++Node: MSP430185520
++Node: PowerPC ELF32186568
++Node: PowerPC64 ELF64188859
++Node: TI COFF193273
++Node: WIN32193805
++Node: Xtensa211879
++Node: BFD215001
++Node: BFD outline216456
++Node: BFD information loss217742
++Node: Canonical format220259
++Node: Reporting Bugs224616
++Node: Bug Criteria225310
++Node: Bug Reporting226009
++Node: MRI233034
++Node: GNU Free Documentation License237677
++Node: Index257391
++
++End Tag Table
+diff -Nrup binutils-2.17/ld/ld.info.r27273 binutils-2.17.atmel.1.3.0/ld/ld.info.r27273
+--- binutils-2.17/ld/ld.info.r27273 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/ld.info.r27273 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,6691 @@
++This is .././ld/ld.info, produced by makeinfo version 4.8 from
++.././ld/ld.texinfo.
++
++START-INFO-DIR-ENTRY
++* Ld: (ld). The GNU linker.
++END-INFO-DIR-ENTRY
++
++ This file documents the GNU linker LD version 2.17.
++
++ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
++2002, 2003, 2004 Free Software Foundation, Inc.
++
++
++File: ld.info, Node: Top, Next: Overview, Up: (dir)
++
++Using ld
++********
++
++This file documents the GNU linker ld version 2.17.
++
++ This document is distributed under the terms of the GNU Free
++Documentation License. A copy of the license is included in the
++section entitled "GNU Free Documentation License".
++
++* Menu:
++
++* Overview:: Overview
++* Invocation:: Invocation
++* Scripts:: Linker Scripts
++
++* Machine Dependent:: Machine Dependent Features
++
++* BFD:: BFD
++
++* Reporting Bugs:: Reporting Bugs
++* MRI:: MRI Compatible Script Files
++* GNU Free Documentation License:: GNU Free Documentation License
++* Index:: Index
++
++
++File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top
++
++1 Overview
++**********
++
++`ld' combines a number of object and archive files, relocates their
++data and ties up symbol references. Usually the last step in compiling
++a program is to run `ld'.
++
++ `ld' accepts Linker Command Language files written in a superset of
++AT&T's Link Editor Command Language syntax, to provide explicit and
++total control over the linking process.
++
++ This version of `ld' uses the general purpose BFD libraries to
++operate on object files. This allows `ld' to read, combine, and write
++object files in many different formats--for example, COFF or `a.out'.
++Different formats may be linked together to produce any available kind
++of object file. *Note BFD::, for more information.
++
++ Aside from its flexibility, the GNU linker is more helpful than other
++linkers in providing diagnostic information. Many linkers abandon
++execution immediately upon encountering an error; whenever possible,
++`ld' continues executing, allowing you to identify other errors (or, in
++some cases, to get an output file in spite of the error).
++
++
++File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top
++
++2 Invocation
++************
++
++The GNU linker `ld' is meant to cover a broad range of situations, and
++to be as compatible as possible with other linkers. As a result, you
++have many choices to control its behavior.
++
++* Menu:
++
++* Options:: Command Line Options
++* Environment:: Environment Variables
++
++
++File: ld.info, Node: Options, Next: Environment, Up: Invocation
++
++2.1 Command Line Options
++========================
++
++ The linker supports a plethora of command-line options, but in actual
++practice few of them are used in any particular context. For instance,
++a frequent use of `ld' is to link standard Unix object files on a
++standard, supported Unix system. On such a system, to link a file
++`hello.o':
++
++ ld -o OUTPUT /lib/crt0.o hello.o -lc
++
++ This tells `ld' to produce a file called OUTPUT as the result of
++linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a',
++which will come from the standard search directories. (See the
++discussion of the `-l' option below.)
++
++ Some of the command-line options to `ld' may be specified at any
++point in the command line. However, options which refer to files, such
++as `-l' or `-T', cause the file to be read at the point at which the
++option appears in the command line, relative to the object files and
++other file options. Repeating non-file options with a different
++argument will either have no further effect, or override prior
++occurrences (those further to the left on the command line) of that
++option. Options which may be meaningfully specified more than once are
++noted in the descriptions below.
++
++ Non-option arguments are object files or archives which are to be
++linked together. They may follow, precede, or be mixed in with
++command-line options, except that an object file argument may not be
++placed between an option and its argument.
++
++ Usually the linker is invoked with at least one object file, but you
++can specify other forms of binary input files using `-l', `-R', and the
++script command language. If _no_ binary input files at all are
++specified, the linker does not produce any output, and issues the
++message `No input files'.
++
++ If the linker cannot recognize the format of an object file, it will
++assume that it is a linker script. A script specified in this way
++augments the main linker script used for the link (either the default
++linker script or the one specified by using `-T'). This feature
++permits the linker to link against a file which appears to be an object
++or an archive, but actually merely defines some symbol values, or uses
++`INPUT' or `GROUP' to load other objects. Note that specifying a
++script in this way merely augments the main linker script; use the `-T'
++option to replace the default linker script entirely. *Note Scripts::.
++
++ For options whose names are a single letter, option arguments must
++either follow the option letter without intervening whitespace, or be
++given as separate arguments immediately following the option that
++requires them.
++
++ For options whose names are multiple letters, either one dash or two
++can precede the option name; for example, `-trace-symbol' and
++`--trace-symbol' are equivalent. Note--there is one exception to this
++rule. Multiple letter options that start with a lower case 'o' can
++only be preceeded by two dashes. This is to reduce confusion with the
++`-o' option. So for example `-omagic' sets the output file name to
++`magic' whereas `--omagic' sets the NMAGIC flag on the output.
++
++ Arguments to multiple-letter options must either be separated from
++the option name by an equals sign, or be given as separate arguments
++immediately following the option that requires them. For example,
++`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique
++abbreviations of the names of multiple-letter options are accepted.
++
++ Note--if the linker is being invoked indirectly, via a compiler
++driver (e.g. `gcc') then all the linker command line options should be
++prefixed by `-Wl,' (or whatever is appropriate for the particular
++compiler driver) like this:
++
++ gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
++
++ This is important, because otherwise the compiler driver program may
++silently drop the linker options, resulting in a bad link.
++
++ Here is a table of the generic command line switches accepted by the
++GNU linker:
++
++`@FILE'
++ Read command-line options from FILE. The options read are
++ inserted in place of the original @FILE option. If FILE does not
++ exist, or cannot be read, then the option will be treated
++ literally, and not removed.
++
++ Options in FILE are separated by whitespace. A whitespace
++ character may be included in an option by surrounding the entire
++ option in either single or double quotes. Any character
++ (including a backslash) may be included by prefixing the character
++ to be included with a backslash. The FILE may itself contain
++ additional @FILE options; any such options will be processed
++ recursively.
++
++`-aKEYWORD'
++ This option is supported for HP/UX compatibility. The KEYWORD
++ argument must be one of the strings `archive', `shared', or
++ `default'. `-aarchive' is functionally equivalent to `-Bstatic',
++ and the other two keywords are functionally equivalent to
++ `-Bdynamic'. This option may be used any number of times.
++
++`-AARCHITECTURE'
++`--architecture=ARCHITECTURE'
++ In the current release of `ld', this option is useful only for the
++ Intel 960 family of architectures. In that `ld' configuration, the
++ ARCHITECTURE argument identifies the particular architecture in
++ the 960 family, enabling some safeguards and modifying the
++ archive-library search path. *Note `ld' and the Intel 960 family:
++ i960, for details.
++
++ Future releases of `ld' may support similar functionality for
++ other architecture families.
++
++`-b INPUT-FORMAT'
++`--format=INPUT-FORMAT'
++ `ld' may be configured to support more than one kind of object
++ file. If your `ld' is configured this way, you can use the `-b'
++ option to specify the binary format for input object files that
++ follow this option on the command line. Even when `ld' is
++ configured to support alternative object formats, you don't
++ usually need to specify this, as `ld' should be configured to
++ expect as a default input format the most usual format on each
++ machine. INPUT-FORMAT is a text string, the name of a particular
++ format supported by the BFD libraries. (You can list the
++ available binary formats with `objdump -i'.) *Note BFD::.
++
++ You may want to use this option if you are linking files with an
++ unusual binary format. You can also use `-b' to switch formats
++ explicitly (when linking object files of different formats), by
++ including `-b INPUT-FORMAT' before each group of object files in a
++ particular format.
++
++ The default format is taken from the environment variable
++ `GNUTARGET'. *Note Environment::. You can also define the input
++ format from a script, using the command `TARGET'; see *Note Format
++ Commands::.
++
++`-c MRI-COMMANDFILE'
++`--mri-script=MRI-COMMANDFILE'
++ For compatibility with linkers produced by MRI, `ld' accepts script
++ files written in an alternate, restricted command language,
++ described in *Note MRI Compatible Script Files: MRI. Introduce
++ MRI script files with the option `-c'; use the `-T' option to run
++ linker scripts written in the general-purpose `ld' scripting
++ language. If MRI-CMDFILE does not exist, `ld' looks for it in the
++ directories specified by any `-L' options.
++
++`-d'
++`-dc'
++`-dp'
++ These three options are equivalent; multiple forms are supported
++ for compatibility with other linkers. They assign space to common
++ symbols even if a relocatable output file is specified (with
++ `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same
++ effect. *Note Miscellaneous Commands::.
++
++`-e ENTRY'
++`--entry=ENTRY'
++ Use ENTRY as the explicit symbol for beginning execution of your
++ program, rather than the default entry point. If there is no
++ symbol named ENTRY, the linker will try to parse ENTRY as a number,
++ and use that as the entry address (the number will be interpreted
++ in base 10; you may use a leading `0x' for base 16, or a leading
++ `0' for base 8). *Note Entry Point::, for a discussion of defaults
++ and other ways of specifying the entry point.
++
++`--exclude-libs LIB,LIB,...'
++ Specifies a list of archive libraries from which symbols should
++ not be automatically exported. The library names may be delimited
++ by commas or colons. Specifying `--exclude-libs ALL' excludes
++ symbols in all archive libraries from automatic export. This
++ option is available only for the i386 PE targeted port of the
++ linker and for ELF targeted ports. For i386 PE, symbols
++ explicitly listed in a .def file are still exported, regardless of
++ this option. For ELF targeted ports, symbols affected by this
++ option will be treated as hidden.
++
++`-E'
++`--export-dynamic'
++ When creating a dynamically linked executable, add all symbols to
++ the dynamic symbol table. The dynamic symbol table is the set of
++ symbols which are visible from dynamic objects at run time.
++
++ If you do not use this option, the dynamic symbol table will
++ normally contain only those symbols which are referenced by some
++ dynamic object mentioned in the link.
++
++ If you use `dlopen' to load a dynamic object which needs to refer
++ back to the symbols defined by the program, rather than some other
++ dynamic object, then you will probably need to use this option when
++ linking the program itself.
++
++ You can also use the version script to control what symbols should
++ be added to the dynamic symbol table if the output format supports
++ it. See the description of `--version-script' in *Note VERSION::.
++
++`-EB'
++ Link big-endian objects. This affects the default output format.
++
++`-EL'
++ Link little-endian objects. This affects the default output
++ format.
++
++`-f'
++`--auxiliary NAME'
++ When creating an ELF shared object, set the internal DT_AUXILIARY
++ field to the specified name. This tells the dynamic linker that
++ the symbol table of the shared object should be used as an
++ auxiliary filter on the symbol table of the shared object NAME.
++
++ If you later link a program against this filter object, then, when
++ you run the program, the dynamic linker will see the DT_AUXILIARY
++ field. If the dynamic linker resolves any symbols from the filter
++ object, it will first check whether there is a definition in the
++ shared object NAME. If there is one, it will be used instead of
++ the definition in the filter object. The shared object NAME need
++ not exist. Thus the shared object NAME may be used to provide an
++ alternative implementation of certain functions, perhaps for
++ debugging or for machine specific performance.
++
++ This option may be specified more than once. The DT_AUXILIARY
++ entries will be created in the order in which they appear on the
++ command line.
++
++`-F NAME'
++`--filter NAME'
++ When creating an ELF shared object, set the internal DT_FILTER
++ field to the specified name. This tells the dynamic linker that
++ the symbol table of the shared object which is being created
++ should be used as a filter on the symbol table of the shared
++ object NAME.
++
++ If you later link a program against this filter object, then, when
++ you run the program, the dynamic linker will see the DT_FILTER
++ field. The dynamic linker will resolve symbols according to the
++ symbol table of the filter object as usual, but it will actually
++ link to the definitions found in the shared object NAME. Thus the
++ filter object can be used to select a subset of the symbols
++ provided by the object NAME.
++
++ Some older linkers used the `-F' option throughout a compilation
++ toolchain for specifying object-file format for both input and
++ output object files. The GNU linker uses other mechanisms for
++ this purpose: the `-b', `--format', `--oformat' options, the
++ `TARGET' command in linker scripts, and the `GNUTARGET'
++ environment variable. The GNU linker will ignore the `-F' option
++ when not creating an ELF shared object.
++
++`-fini NAME'
++ When creating an ELF executable or shared object, call NAME when
++ the executable or shared object is unloaded, by setting DT_FINI to
++ the address of the function. By default, the linker uses `_fini'
++ as the function to call.
++
++`-g'
++ Ignored. Provided for compatibility with other tools.
++
++`-GVALUE'
++`--gpsize=VALUE'
++ Set the maximum size of objects to be optimized using the GP
++ register to SIZE. This is only meaningful for object file formats
++ such as MIPS ECOFF which supports putting large and small objects
++ into different sections. This is ignored for other object file
++ formats.
++
++`-hNAME'
++`-soname=NAME'
++ When creating an ELF shared object, set the internal DT_SONAME
++ field to the specified name. When an executable is linked with a
++ shared object which has a DT_SONAME field, then when the
++ executable is run the dynamic linker will attempt to load the
++ shared object specified by the DT_SONAME field rather than the
++ using the file name given to the linker.
++
++`-i'
++ Perform an incremental link (same as option `-r').
++
++`-init NAME'
++ When creating an ELF executable or shared object, call NAME when
++ the executable or shared object is loaded, by setting DT_INIT to
++ the address of the function. By default, the linker uses `_init'
++ as the function to call.
++
++`-lARCHIVE'
++`--library=ARCHIVE'
++ Add archive file ARCHIVE to the list of files to link. This
++ option may be used any number of times. `ld' will search its
++ path-list for occurrences of `libARCHIVE.a' for every ARCHIVE
++ specified.
++
++ On systems which support shared libraries, `ld' may also search for
++ libraries with extensions other than `.a'. Specifically, on ELF
++ and SunOS systems, `ld' will search a directory for a library with
++ an extension of `.so' before searching for one with an extension of
++ `.a'. By convention, a `.so' extension indicates a shared library.
++
++ The linker will search an archive only once, at the location where
++ it is specified on the command line. If the archive defines a
++ symbol which was undefined in some object which appeared before
++ the archive on the command line, the linker will include the
++ appropriate file(s) from the archive. However, an undefined
++ symbol in an object appearing later on the command line will not
++ cause the linker to search the archive again.
++
++ See the `-(' option for a way to force the linker to search
++ archives multiple times.
++
++ You may list the same archive multiple times on the command line.
++
++ This type of archive searching is standard for Unix linkers.
++ However, if you are using `ld' on AIX, note that it is different
++ from the behaviour of the AIX linker.
++
++`-LSEARCHDIR'
++`--library-path=SEARCHDIR'
++ Add path SEARCHDIR to the list of paths that `ld' will search for
++ archive libraries and `ld' control scripts. You may use this
++ option any number of times. The directories are searched in the
++ order in which they are specified on the command line.
++ Directories specified on the command line are searched before the
++ default directories. All `-L' options apply to all `-l' options,
++ regardless of the order in which the options appear.
++
++ If SEARCHDIR begins with `=', then the `=' will be replaced by the
++ "sysroot prefix", a path specified when the linker is configured.
++
++ The default set of paths searched (without being specified with
++ `-L') depends on which emulation mode `ld' is using, and in some
++ cases also on how it was configured. *Note Environment::.
++
++ The paths can also be specified in a link script with the
++ `SEARCH_DIR' command. Directories specified this way are searched
++ at the point in which the linker script appears in the command
++ line.
++
++`-mEMULATION'
++ Emulate the EMULATION linker. You can list the available
++ emulations with the `--verbose' or `-V' options.
++
++ If the `-m' option is not used, the emulation is taken from the
++ `LDEMULATION' environment variable, if that is defined.
++
++ Otherwise, the default emulation depends upon how the linker was
++ configured.
++
++`-M'
++`--print-map'
++ Print a link map to the standard output. A link map provides
++ information about the link, including the following:
++
++ * Where object files are mapped into memory.
++
++ * How common symbols are allocated.
++
++ * All archive members included in the link, with a mention of
++ the symbol which caused the archive member to be brought in.
++
++ * The values assigned to symbols.
++
++ Note - symbols whose values are computed by an expression
++ which involves a reference to a previous value of the same
++ symbol may not have correct result displayed in the link map.
++ This is because the linker discards intermediate results and
++ only retains the final value of an expression. Under such
++ circumstances the linker will display the final value
++ enclosed by square brackets. Thus for example a linker
++ script containing:
++
++ foo = 1
++ foo = foo * 4
++ foo = foo + 8
++
++ will produce the following output in the link map if the `-M'
++ option is used:
++
++ 0x00000001 foo = 0x1
++ [0x0000000c] foo = (foo * 0x4)
++ [0x0000000c] foo = (foo + 0x8)
++
++ See *Note Expressions:: for more information about
++ expressions in linker scripts.
++
++`-n'
++`--nmagic'
++ Turn off page alignment of sections, and mark the output as
++ `NMAGIC' if possible.
++
++`-N'
++`--omagic'
++ Set the text and data sections to be readable and writable. Also,
++ do not page-align the data segment, and disable linking against
++ shared libraries. If the output format supports Unix style magic
++ numbers, mark the output as `OMAGIC'. Note: Although a writable
++ text section is allowed for PE-COFF targets, it does not conform
++ to the format specification published by Microsoft.
++
++`--no-omagic'
++ This option negates most of the effects of the `-N' option. It
++ sets the text section to be read-only, and forces the data segment
++ to be page-aligned. Note - this option does not enable linking
++ against shared libraries. Use `-Bdynamic' for this.
++
++`-o OUTPUT'
++`--output=OUTPUT'
++ Use OUTPUT as the name for the program produced by `ld'; if this
++ option is not specified, the name `a.out' is used by default. The
++ script command `OUTPUT' can also specify the output file name.
++
++`-O LEVEL'
++ If LEVEL is a numeric values greater than zero `ld' optimizes the
++ output. This might take significantly longer and therefore
++ probably should only be enabled for the final binary.
++
++`-q'
++`--emit-relocs'
++ Leave relocation sections and contents in fully linked
++ exececutables. Post link analysis and optimization tools may need
++ this information in order to perform correct modifications of
++ executables. This results in larger executables.
++
++ This option is currently only supported on ELF platforms.
++
++`--force-dynamic'
++ Force the output file to have dynamic sections. This option is
++ specific to VxWorks targets.
++
++`-r'
++`--relocatable'
++ Generate relocatable output--i.e., generate an output file that
++ can in turn serve as input to `ld'. This is often called "partial
++ linking". As a side effect, in environments that support standard
++ Unix magic numbers, this option also sets the output file's magic
++ number to `OMAGIC'. If this option is not specified, an absolute
++ file is produced. When linking C++ programs, this option _will
++ not_ resolve references to constructors; to do that, use `-Ur'.
++
++ When an input file does not have the same format as the output
++ file, partial linking is only supported if that input file does
++ not contain any relocations. Different output formats can have
++ further restrictions; for example some `a.out'-based formats do
++ not support partial linking with input files in other formats at
++ all.
++
++ This option does the same thing as `-i'.
++
++`-R FILENAME'
++`--just-symbols=FILENAME'
++ Read symbol names and their addresses from FILENAME, but do not
++ relocate it or include it in the output. This allows your output
++ file to refer symbolically to absolute locations of memory defined
++ in other programs. You may use this option more than once.
++
++ For compatibility with other ELF linkers, if the `-R' option is
++ followed by a directory name, rather than a file name, it is
++ treated as the `-rpath' option.
++
++`-s'
++`--strip-all'
++ Omit all symbol information from the output file.
++
++`-S'
++`--strip-debug'
++ Omit debugger symbol information (but not all symbols) from the
++ output file.
++
++`-t'
++`--trace'
++ Print the names of the input files as `ld' processes them.
++
++`-T SCRIPTFILE'
++`--script=SCRIPTFILE'
++ Use SCRIPTFILE as the linker script. This script replaces `ld''s
++ default linker script (rather than adding to it), so COMMANDFILE
++ must specify everything necessary to describe the output file.
++ *Note Scripts::. If SCRIPTFILE does not exist in the current
++ directory, `ld' looks for it in the directories specified by any
++ preceding `-L' options. Multiple `-T' options accumulate.
++
++`-u SYMBOL'
++`--undefined=SYMBOL'
++ Force SYMBOL to be entered in the output file as an undefined
++ symbol. Doing this may, for example, trigger linking of additional
++ modules from standard libraries. `-u' may be repeated with
++ different option arguments to enter additional undefined symbols.
++ This option is equivalent to the `EXTERN' linker script command.
++
++`-Ur'
++ For anything other than C++ programs, this option is equivalent to
++ `-r': it generates relocatable output--i.e., an output file that
++ can in turn serve as input to `ld'. When linking C++ programs,
++ `-Ur' _does_ resolve references to constructors, unlike `-r'. It
++ does not work to use `-Ur' on files that were themselves linked
++ with `-Ur'; once the constructor table has been built, it cannot
++ be added to. Use `-Ur' only for the last partial link, and `-r'
++ for the others.
++
++`--unique[=SECTION]'
++ Creates a separate output section for every input section matching
++ SECTION, or if the optional wildcard SECTION argument is missing,
++ for every orphan input section. An orphan section is one not
++ specifically mentioned in a linker script. You may use this option
++ multiple times on the command line; It prevents the normal
++ merging of input sections with the same name, overriding output
++ section assignments in a linker script.
++
++`-v'
++`--version'
++`-V'
++ Display the version number for `ld'. The `-V' option also lists
++ the supported emulations.
++
++`-x'
++`--discard-all'
++ Delete all local symbols.
++
++`-X'
++`--discard-locals'
++ Delete all temporary local symbols. For most targets, this is all
++ local symbols whose names begin with `L'.
++
++`-y SYMBOL'
++`--trace-symbol=SYMBOL'
++ Print the name of each linked file in which SYMBOL appears. This
++ option may be given any number of times. On many systems it is
++ necessary to prepend an underscore.
++
++ This option is useful when you have an undefined symbol in your
++ link but don't know where the reference is coming from.
++
++`-Y PATH'
++ Add PATH to the default library search path. This option exists
++ for Solaris compatibility.
++
++`-z KEYWORD'
++ The recognized keywords are:
++ `combreloc'
++ Combines multiple reloc sections and sorts them to make
++ dynamic symbol lookup caching possible.
++
++ `defs'
++ Disallows undefined symbols in object files. Undefined
++ symbols in shared libraries are still allowed.
++
++ `execstack'
++ Marks the object as requiring executable stack.
++
++ `initfirst'
++ This option is only meaningful when building a shared object.
++ It marks the object so that its runtime initialization will
++ occur before the runtime initialization of any other objects
++ brought into the process at the same time. Similarly the
++ runtime finalization of the object will occur after the
++ runtime finalization of any other objects.
++
++ `interpose'
++ Marks the object that its symbol table interposes before all
++ symbols but the primary executable.
++
++ `loadfltr'
++ Marks the object that its filters be processed immediately at
++ runtime.
++
++ `muldefs'
++ Allows multiple definitions.
++
++ `nocombreloc'
++ Disables multiple reloc sections combining.
++
++ `nocopyreloc'
++ Disables production of copy relocs.
++
++ `nodefaultlib'
++ Marks the object that the search for dependencies of this
++ object will ignore any default library search paths.
++
++ `nodelete'
++ Marks the object shouldn't be unloaded at runtime.
++
++ `nodlopen'
++ Marks the object not available to `dlopen'.
++
++ `nodump'
++ Marks the object can not be dumped by `dldump'.
++
++ `noexecstack'
++ Marks the object as not requiring executable stack.
++
++ `norelro'
++ Don't create an ELF `PT_GNU_RELRO' segment header in the
++ object.
++
++ `now'
++ When generating an executable or shared library, mark it to
++ tell the dynamic linker to resolve all symbols when the
++ program is started, or when the shared library is linked to
++ using dlopen, instead of deferring function call resolution
++ to the point when the function is first called.
++
++ `origin'
++ Marks the object may contain $ORIGIN.
++
++ `relro'
++ Create an ELF `PT_GNU_RELRO' segment header in the object.
++
++
++ Other keywords are ignored for Solaris compatibility.
++
++`-( ARCHIVES -)'
++`--start-group ARCHIVES --end-group'
++ The ARCHIVES should be a list of archive files. They may be
++ either explicit file names, or `-l' options.
++
++ The specified archives are searched repeatedly until no new
++ undefined references are created. Normally, an archive is
++ searched only once in the order that it is specified on the
++ command line. If a symbol in that archive is needed to resolve an
++ undefined symbol referred to by an object in an archive that
++ appears later on the command line, the linker would not be able to
++ resolve that reference. By grouping the archives, they all be
++ searched repeatedly until all possible references are resolved.
++
++ Using this option has a significant performance cost. It is best
++ to use it only when there are unavoidable circular references
++ between two or more archives.
++
++`--accept-unknown-input-arch'
++`--no-accept-unknown-input-arch'
++ Tells the linker to accept input files whose architecture cannot be
++ recognised. The assumption is that the user knows what they are
++ doing and deliberately wants to link in these unknown input files.
++ This was the default behaviour of the linker, before release
++ 2.14. The default behaviour from release 2.14 onwards is to
++ reject such input files, and so the `--accept-unknown-input-arch'
++ option has been added to restore the old behaviour.
++
++`--as-needed'
++`--no-as-needed'
++ This option affects ELF DT_NEEDED tags for dynamic libraries
++ mentioned on the command line after the `--as-needed' option.
++ Normally, the linker will add a DT_NEEDED tag for each dynamic
++ library mentioned on the command line, regardless of whether the
++ library is actually needed. `--as-needed' causes DT_NEEDED tags
++ to only be emitted for libraries that satisfy some symbol
++ reference from regular objects which is undefined at the point
++ that the library was linked. `--no-as-needed' restores the
++ default behaviour.
++
++`--add-needed'
++`--no-add-needed'
++ This option affects the treatment of dynamic libraries from ELF
++ DT_NEEDED tags in dynamic libraries mentioned on the command line
++ after the `--no-add-needed' option. Normally, the linker will add
++ a DT_NEEDED tag for each dynamic library from DT_NEEDED tags.
++ `--no-add-needed' causes DT_NEEDED tags will never be emitted for
++ those libraries from DT_NEEDED tags. `--add-needed' restores the
++ default behaviour.
++
++`-assert KEYWORD'
++ This option is ignored for SunOS compatibility.
++
++`-Bdynamic'
++`-dy'
++`-call_shared'
++ Link against dynamic libraries. This is only meaningful on
++ platforms for which shared libraries are supported. This option
++ is normally the default on such platforms. The different variants
++ of this option are for compatibility with various systems. You
++ may use this option multiple times on the command line: it affects
++ library searching for `-l' options which follow it.
++
++`-Bgroup'
++ Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic
++ section. This causes the runtime linker to handle lookups in this
++ object and its dependencies to be performed only inside the group.
++ `--unresolved-symbols=report-all' is implied. This option is only
++ meaningful on ELF platforms which support shared libraries.
++
++`-Bstatic'
++`-dn'
++`-non_shared'
++`-static'
++ Do not link against shared libraries. This is only meaningful on
++ platforms for which shared libraries are supported. The different
++ variants of this option are for compatibility with various
++ systems. You may use this option multiple times on the command
++ line: it affects library searching for `-l' options which follow
++ it. This option also implies `--unresolved-symbols=report-all'.
++ This option can be used with `-shared'. Doing so means that a
++ shared library is being created but that all of the library's
++ external references must be resolved by pulling in entries from
++ static libraries.
++
++`-Bsymbolic'
++ When creating a shared library, bind references to global symbols
++ to the definition within the shared library, if any. Normally, it
++ is possible for a program linked against a shared library to
++ override the definition within the shared library. This option is
++ only meaningful on ELF platforms which support shared libraries.
++
++`--check-sections'
++`--no-check-sections'
++ Asks the linker _not_ to check section addresses after they have
++ been assigned to see if there are any overlaps. Normally the
++ linker will perform this check, and if it finds any overlaps it
++ will produce suitable error messages. The linker does know about,
++ and does make allowances for sections in overlays. The default
++ behaviour can be restored by using the command line switch
++ `--check-sections'.
++
++`--cref'
++ Output a cross reference table. If a linker map file is being
++ generated, the cross reference table is printed to the map file.
++ Otherwise, it is printed on the standard output.
++
++ The format of the table is intentionally simple, so that it may be
++ easily processed by a script if necessary. The symbols are
++ printed out, sorted by name. For each symbol, a list of file
++ names is given. If the symbol is defined, the first file listed
++ is the location of the definition. The remaining files contain
++ references to the symbol.
++
++`--no-define-common'
++ This option inhibits the assignment of addresses to common symbols.
++ The script command `INHIBIT_COMMON_ALLOCATION' has the same effect.
++ *Note Miscellaneous Commands::.
++
++ The `--no-define-common' option allows decoupling the decision to
++ assign addresses to Common symbols from the choice of the output
++ file type; otherwise a non-Relocatable output type forces
++ assigning addresses to Common symbols. Using `--no-define-common'
++ allows Common symbols that are referenced from a shared library to
++ be assigned addresses only in the main program. This eliminates
++ the unused duplicate space in the shared library, and also
++ prevents any possible confusion over resolving to the wrong
++ duplicate when there are many dynamic modules with specialized
++ search paths for runtime symbol resolution.
++
++`--defsym SYMBOL=EXPRESSION'
++ Create a global symbol in the output file, containing the absolute
++ address given by EXPRESSION. You may use this option as many
++ times as necessary to define multiple symbols in the command line.
++ A limited form of arithmetic is supported for the EXPRESSION in
++ this context: you may give a hexadecimal constant or the name of
++ an existing symbol, or use `+' and `-' to add or subtract
++ hexadecimal constants or symbols. If you need more elaborate
++ expressions, consider using the linker command language from a
++ script (*note Assignment: Symbol Definitions: Assignments.).
++ _Note:_ there should be no white space between SYMBOL, the equals
++ sign ("<=>"), and EXPRESSION.
++
++`--demangle[=STYLE]'
++`--no-demangle'
++ These options control whether to demangle symbol names in error
++ messages and other output. When the linker is told to demangle,
++ it tries to present symbol names in a readable fashion: it strips
++ leading underscores if they are used by the object file format,
++ and converts C++ mangled symbol names into user readable names.
++ Different compilers have different mangling styles. The optional
++ demangling style argument can be used to choose an appropriate
++ demangling style for your compiler. The linker will demangle by
++ default unless the environment variable `COLLECT_NO_DEMANGLE' is
++ set. These options may be used to override the default.
++
++`--dynamic-linker FILE'
++ Set the name of the dynamic linker. This is only meaningful when
++ generating dynamically linked ELF executables. The default dynamic
++ linker is normally correct; don't use this unless you know what
++ you are doing.
++
++`--fatal-warnings'
++ Treat all warnings as errors.
++
++`--force-exe-suffix'
++ Make sure that an output file has a .exe suffix.
++
++ If a successfully built fully linked output file does not have a
++ `.exe' or `.dll' suffix, this option forces the linker to copy the
++ output file to one of the same name with a `.exe' suffix. This
++ option is useful when using unmodified Unix makefiles on a
++ Microsoft Windows host, since some versions of Windows won't run
++ an image unless it ends in a `.exe' suffix.
++
++`--no-gc-sections'
++`--gc-sections'
++ Enable garbage collection of unused input sections. It is ignored
++ on targets that do not support this option. This option is not
++ compatible with `-r'. The default behaviour (of not performing
++ this garbage collection) can be restored by specifying
++ `--no-gc-sections' on the command line.
++
++`--help'
++ Print a summary of the command-line options on the standard output
++ and exit.
++
++`--target-help'
++ Print a summary of all target specific options on the standard
++ output and exit.
++
++`-Map MAPFILE'
++ Print a link map to the file MAPFILE. See the description of the
++ `-M' option, above.
++
++`--no-keep-memory'
++ `ld' normally optimizes for speed over memory usage by caching the
++ symbol tables of input files in memory. This option tells `ld' to
++ instead optimize for memory usage, by rereading the symbol tables
++ as necessary. This may be required if `ld' runs out of memory
++ space while linking a large executable.
++
++`--no-undefined'
++`-z defs'
++ Report unresolved symbol references from regular object files.
++ This is done even if the linker is creating a non-symbolic shared
++ library. The switch `--[no-]allow-shlib-undefined' controls the
++ behaviour for reporting unresolved references found in shared
++ libraries being linked in.
++
++`--allow-multiple-definition'
++`-z muldefs'
++ Normally when a symbol is defined multiple times, the linker will
++ report a fatal error. These options allow multiple definitions and
++ the first definition will be used.
++
++`--allow-shlib-undefined'
++`--no-allow-shlib-undefined'
++ Allows (the default) or disallows undefined symbols in shared
++ libraries. This switch is similar to `--no-undefined' except that
++ it determines the behaviour when the undefined symbols are in a
++ shared library rather than a regular object file. It does not
++ affect how undefined symbols in regular object files are handled.
++
++ The reason that `--allow-shlib-undefined' is the default is that
++ the shared library being specified at link time may not be the
++ same as the one that is available at load time, so the symbols
++ might actually be resolvable at load time. Plus there are some
++ systems, (eg BeOS) where undefined symbols in shared libraries is
++ normal. (The kernel patches them at load time to select which
++ function is most appropriate for the current architecture. This
++ is used for example to dynamically select an appropriate memset
++ function). Apparently it is also normal for HPPA shared libraries
++ to have undefined symbols.
++
++`--no-undefined-version'
++ Normally when a symbol has an undefined version, the linker will
++ ignore it. This option disallows symbols with undefined version
++ and a fatal error will be issued instead.
++
++`--default-symver'
++ Create and use a default symbol version (the soname) for
++ unversioned exported symbols.
++
++`--default-imported-symver'
++ Create and use a default symbol version (the soname) for
++ unversioned imported symbols.
++
++`--no-warn-mismatch'
++ Normally `ld' will give an error if you try to link together input
++ files that are mismatched for some reason, perhaps because they
++ have been compiled for different processors or for different
++ endiannesses. This option tells `ld' that it should silently
++ permit such possible errors. This option should only be used with
++ care, in cases when you have taken some special action that
++ ensures that the linker errors are inappropriate.
++
++`--no-whole-archive'
++ Turn off the effect of the `--whole-archive' option for subsequent
++ archive files.
++
++`--noinhibit-exec'
++ Retain the executable output file whenever it is still usable.
++ Normally, the linker will not produce an output file if it
++ encounters errors during the link process; it exits without
++ writing an output file when it issues any error whatsoever.
++
++`-nostdlib'
++ Only search library directories explicitly specified on the
++ command line. Library directories specified in linker scripts
++ (including linker scripts specified on the command line) are
++ ignored.
++
++`--oformat OUTPUT-FORMAT'
++ `ld' may be configured to support more than one kind of object
++ file. If your `ld' is configured this way, you can use the
++ `--oformat' option to specify the binary format for the output
++ object file. Even when `ld' is configured to support alternative
++ object formats, you don't usually need to specify this, as `ld'
++ should be configured to produce as a default output format the most
++ usual format on each machine. OUTPUT-FORMAT is a text string, the
++ name of a particular format supported by the BFD libraries. (You
++ can list the available binary formats with `objdump -i'.) The
++ script command `OUTPUT_FORMAT' can also specify the output format,
++ but this option overrides it. *Note BFD::.
++
++`-pie'
++`--pic-executable'
++ Create a position independent executable. This is currently only
++ supported on ELF platforms. Position independent executables are
++ similar to shared libraries in that they are relocated by the
++ dynamic linker to the virtual address the OS chooses for them
++ (which can vary between invocations). Like normal dynamically
++ linked executables they can be executed and symbols defined in the
++ executable cannot be overridden by shared libraries.
++
++`-qmagic'
++ This option is ignored for Linux compatibility.
++
++`-Qy'
++ This option is ignored for SVR4 compatibility.
++
++`--relax'
++ An option with machine dependent effects. This option is only
++ supported on a few targets. *Note `ld' and the H8/300: H8/300.
++ *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa
++ Processors: Xtensa. *Note `ld' and PowerPC 32-bit ELF Support:
++ PowerPC ELF32.
++
++ On some platforms, the `--relax' option performs global
++ optimizations that become possible when the linker resolves
++ addressing in the program, such as relaxing address modes and
++ synthesizing new instructions in the output object file.
++
++ On some platforms these link time global optimizations may make
++ symbolic debugging of the resulting executable impossible. This
++ is known to be the case for the Matsushita MN10200 and MN10300
++ family of processors.
++
++ On platforms where this is not supported, `--relax' is accepted,
++ but ignored.
++
++`--retain-symbols-file FILENAME'
++ Retain _only_ the symbols listed in the file FILENAME, discarding
++ all others. FILENAME is simply a flat file, with one symbol name
++ per line. This option is especially useful in environments (such
++ as VxWorks) where a large global symbol table is accumulated
++ gradually, to conserve run-time memory.
++
++ `--retain-symbols-file' does _not_ discard undefined symbols, or
++ symbols needed for relocations.
++
++ You may only specify `--retain-symbols-file' once in the command
++ line. It overrides `-s' and `-S'.
++
++`-rpath DIR'
++ Add a directory to the runtime library search path. This is used
++ when linking an ELF executable with shared objects. All `-rpath'
++ arguments are concatenated and passed to the runtime linker, which
++ uses them to locate shared objects at runtime. The `-rpath'
++ option is also used when locating shared objects which are needed
++ by shared objects explicitly included in the link; see the
++ description of the `-rpath-link' option. If `-rpath' is not used
++ when linking an ELF executable, the contents of the environment
++ variable `LD_RUN_PATH' will be used if it is defined.
++
++ The `-rpath' option may also be used on SunOS. By default, on
++ SunOS, the linker will form a runtime search patch out of all the
++ `-L' options it is given. If a `-rpath' option is used, the
++ runtime search path will be formed exclusively using the `-rpath'
++ options, ignoring the `-L' options. This can be useful when using
++ gcc, which adds many `-L' options which may be on NFS mounted
++ filesystems.
++
++ For compatibility with other ELF linkers, if the `-R' option is
++ followed by a directory name, rather than a file name, it is
++ treated as the `-rpath' option.
++
++`-rpath-link DIR'
++ When using ELF or SunOS, one shared library may require another.
++ This happens when an `ld -shared' link includes a shared library
++ as one of the input files.
++
++ When the linker encounters such a dependency when doing a
++ non-shared, non-relocatable link, it will automatically try to
++ locate the required shared library and include it in the link, if
++ it is not included explicitly. In such a case, the `-rpath-link'
++ option specifies the first set of directories to search. The
++ `-rpath-link' option may specify a sequence of directory names
++ either by specifying a list of names separated by colons, or by
++ appearing multiple times.
++
++ This option should be used with caution as it overrides the search
++ path that may have been hard compiled into a shared library. In
++ such a case it is possible to use unintentionally a different
++ search path than the runtime linker would do.
++
++ The linker uses the following search paths to locate required
++ shared libraries.
++ 1. Any directories specified by `-rpath-link' options.
++
++ 2. Any directories specified by `-rpath' options. The difference
++ between `-rpath' and `-rpath-link' is that directories
++ specified by `-rpath' options are included in the executable
++ and used at runtime, whereas the `-rpath-link' option is only
++ effective at link time. It is for the native linker only.
++
++ 3. On an ELF system, if the `-rpath' and `rpath-link' options
++ were not used, search the contents of the environment variable
++ `LD_RUN_PATH'. It is for the native linker only.
++
++ 4. On SunOS, if the `-rpath' option was not used, search any
++ directories specified using `-L' options.
++
++ 5. For a native linker, the contents of the environment variable
++ `LD_LIBRARY_PATH'.
++
++ 6. For a native ELF linker, the directories in `DT_RUNPATH' or
++ `DT_RPATH' of a shared library are searched for shared
++ libraries needed by it. The `DT_RPATH' entries are ignored if
++ `DT_RUNPATH' entries exist.
++
++ 7. The default directories, normally `/lib' and `/usr/lib'.
++
++ 8. For a native linker on an ELF system, if the file
++ `/etc/ld.so.conf' exists, the list of directories found in
++ that file.
++
++ If the required shared library is not found, the linker will issue
++ a warning and continue with the link.
++
++`-shared'
++`-Bshareable'
++ Create a shared library. This is currently only supported on ELF,
++ XCOFF and SunOS platforms. On SunOS, the linker will
++ automatically create a shared library if the `-e' option is not
++ used and there are undefined symbols in the link.
++
++`--sort-common'
++ This option tells `ld' to sort the common symbols by size when it
++ places them in the appropriate output sections. First come all
++ the one byte symbols, then all the two byte, then all the four
++ byte, and then everything else. This is to prevent gaps between
++ symbols due to alignment constraints.
++
++`--sort-section name'
++ This option will apply `SORT_BY_NAME' to all wildcard section
++ patterns in the linker script.
++
++`--sort-section alignment'
++ This option will apply `SORT_BY_ALIGNMENT' to all wildcard section
++ patterns in the linker script.
++
++`--split-by-file [SIZE]'
++ Similar to `--split-by-reloc' but creates a new output section for
++ each input file when SIZE is reached. SIZE defaults to a size of
++ 1 if not given.
++
++`--split-by-reloc [COUNT]'
++ Tries to creates extra sections in the output file so that no
++ single output section in the file contains more than COUNT
++ relocations. This is useful when generating huge relocatable
++ files for downloading into certain real time kernels with the COFF
++ object file format; since COFF cannot represent more than 65535
++ relocations in a single section. Note that this will fail to work
++ with object file formats which do not support arbitrary sections.
++ The linker will not split up individual input sections for
++ redistribution, so if a single input section contains more than
++ COUNT relocations one output section will contain that many
++ relocations. COUNT defaults to a value of 32768.
++
++`--stats'
++ Compute and display statistics about the operation of the linker,
++ such as execution time and memory usage.
++
++`--sysroot=DIRECTORY'
++ Use DIRECTORY as the location of the sysroot, overriding the
++ configure-time default. This option is only supported by linkers
++ that were configured using `--with-sysroot'.
++
++`--traditional-format'
++ For some targets, the output of `ld' is different in some ways from
++ the output of some existing linker. This switch requests `ld' to
++ use the traditional format instead.
++
++ For example, on SunOS, `ld' combines duplicate entries in the
++ symbol string table. This can reduce the size of an output file
++ with full debugging information by over 30 percent.
++ Unfortunately, the SunOS `dbx' program can not read the resulting
++ program (`gdb' has no trouble). The `--traditional-format' switch
++ tells `ld' to not combine duplicate entries.
++
++`--section-start SECTIONNAME=ORG'
++ Locate a section in the output file at the absolute address given
++ by ORG. You may use this option as many times as necessary to
++ locate multiple sections in the command line. ORG must be a
++ single hexadecimal integer; for compatibility with other linkers,
++ you may omit the leading `0x' usually associated with hexadecimal
++ values. _Note:_ there should be no white space between
++ SECTIONNAME, the equals sign ("<=>"), and ORG.
++
++`-Tbss ORG'
++`-Tdata ORG'
++`-Ttext ORG'
++ Same as -section-start, with `.bss', `.data' or `.text' as the
++ SECTIONNAME.
++
++`--unresolved-symbols=METHOD'
++ Determine how to handle unresolved symbols. There are four
++ possible values for `method':
++
++ `ignore-all'
++ Do not report any unresolved symbols.
++
++ `report-all'
++ Report all unresolved symbols. This is the default.
++
++ `ignore-in-object-files'
++ Report unresolved symbols that are contained in shared
++ libraries, but ignore them if they come from regular object
++ files.
++
++ `ignore-in-shared-libs'
++ Report unresolved symbols that come from regular object
++ files, but ignore them if they come from shared libraries.
++ This can be useful when creating a dynamic binary and it is
++ known that all the shared libraries that it should be
++ referencing are included on the linker's command line.
++
++ The behaviour for shared libraries on their own can also be
++ controlled by the `--[no-]allow-shlib-undefined' option.
++
++ Normally the linker will generate an error message for each
++ reported unresolved symbol but the option
++ `--warn-unresolved-symbols' can change this to a warning.
++
++`--dll-verbose'
++`--verbose'
++ Display the version number for `ld' and list the linker emulations
++ supported. Display which input files can and cannot be opened.
++ Display the linker script being used by the linker.
++
++`--version-script=VERSION-SCRIPTFILE'
++ Specify the name of a version script to the linker. This is
++ typically used when creating shared libraries to specify
++ additional information about the version hierarchy for the library
++ being created. This option is only meaningful on ELF platforms
++ which support shared libraries. *Note VERSION::.
++
++`--warn-common'
++ Warn when a common symbol is combined with another common symbol
++ or with a symbol definition. Unix linkers allow this somewhat
++ sloppy practise, but linkers on some other operating systems do
++ not. This option allows you to find potential problems from
++ combining global symbols. Unfortunately, some C libraries use
++ this practise, so you may get some warnings about symbols in the
++ libraries as well as in your programs.
++
++ There are three kinds of global symbols, illustrated here by C
++ examples:
++
++ `int i = 1;'
++ A definition, which goes in the initialized data section of
++ the output file.
++
++ `extern int i;'
++ An undefined reference, which does not allocate space. There
++ must be either a definition or a common symbol for the
++ variable somewhere.
++
++ `int i;'
++ A common symbol. If there are only (one or more) common
++ symbols for a variable, it goes in the uninitialized data
++ area of the output file. The linker merges multiple common
++ symbols for the same variable into a single symbol. If they
++ are of different sizes, it picks the largest size. The
++ linker turns a common symbol into a declaration, if there is
++ a definition of the same variable.
++
++ The `--warn-common' option can produce five kinds of warnings.
++ Each warning consists of a pair of lines: the first describes the
++ symbol just encountered, and the second describes the previous
++ symbol encountered with the same name. One or both of the two
++ symbols will be a common symbol.
++
++ 1. Turning a common symbol into a reference, because there is
++ already a definition for the symbol.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overridden by definition
++ FILE(SECTION): warning: defined here
++
++ 2. Turning a common symbol into a reference, because a later
++ definition for the symbol is encountered. This is the same
++ as the previous case, except that the symbols are encountered
++ in a different order.
++ FILE(SECTION): warning: definition of `SYMBOL'
++ overriding common
++ FILE(SECTION): warning: common is here
++
++ 3. Merging a common symbol with a previous same-sized common
++ symbol.
++ FILE(SECTION): warning: multiple common
++ of `SYMBOL'
++ FILE(SECTION): warning: previous common is here
++
++ 4. Merging a common symbol with a previous larger common symbol.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overridden by larger common
++ FILE(SECTION): warning: larger common is here
++
++ 5. Merging a common symbol with a previous smaller common
++ symbol. This is the same as the previous case, except that
++ the symbols are encountered in a different order.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overriding smaller common
++ FILE(SECTION): warning: smaller common is here
++
++`--warn-constructors'
++ Warn if any global constructors are used. This is only useful for
++ a few object file formats. For formats like COFF or ELF, the
++ linker can not detect the use of global constructors.
++
++`--warn-multiple-gp'
++ Warn if multiple global pointer values are required in the output
++ file. This is only meaningful for certain processors, such as the
++ Alpha. Specifically, some processors put large-valued constants
++ in a special section. A special register (the global pointer)
++ points into the middle of this section, so that constants can be
++ loaded efficiently via a base-register relative addressing mode.
++ Since the offset in base-register relative mode is fixed and
++ relatively small (e.g., 16 bits), this limits the maximum size of
++ the constant pool. Thus, in large programs, it is often necessary
++ to use multiple global pointer values in order to be able to
++ address all possible constants. This option causes a warning to
++ be issued whenever this case occurs.
++
++`--warn-once'
++ Only warn once for each undefined symbol, rather than once per
++ module which refers to it.
++
++`--warn-section-align'
++ Warn if the address of an output section is changed because of
++ alignment. Typically, the alignment will be set by an input
++ section. The address will only be changed if it not explicitly
++ specified; that is, if the `SECTIONS' command does not specify a
++ start address for the section (*note SECTIONS::).
++
++`--warn-shared-textrel'
++ Warn if the linker adds a DT_TEXTREL to a shared object.
++
++`--warn-unresolved-symbols'
++ If the linker is going to report an unresolved symbol (see the
++ option `--unresolved-symbols') it will normally generate an error.
++ This option makes it generate a warning instead.
++
++`--error-unresolved-symbols'
++ This restores the linker's default behaviour of generating errors
++ when it is reporting unresolved symbols.
++
++`--whole-archive'
++ For each archive mentioned on the command line after the
++ `--whole-archive' option, include every object file in the archive
++ in the link, rather than searching the archive for the required
++ object files. This is normally used to turn an archive file into
++ a shared library, forcing every object to be included in the
++ resulting shared library. This option may be used more than once.
++
++ Two notes when using this option from gcc: First, gcc doesn't know
++ about this option, so you have to use `-Wl,-whole-archive'.
++ Second, don't forget to use `-Wl,-no-whole-archive' after your
++ list of archives, because gcc will add its own list of archives to
++ your link and you may not want this flag to affect those as well.
++
++`--wrap SYMBOL'
++ Use a wrapper function for SYMBOL. Any undefined reference to
++ SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined
++ reference to `__real_SYMBOL' will be resolved to SYMBOL.
++
++ This can be used to provide a wrapper for a system function. The
++ wrapper function should be called `__wrap_SYMBOL'. If it wishes
++ to call the system function, it should call `__real_SYMBOL'.
++
++ Here is a trivial example:
++
++ void *
++ __wrap_malloc (size_t c)
++ {
++ printf ("malloc called with %zu\n", c);
++ return __real_malloc (c);
++ }
++
++ If you link other code with this file using `--wrap malloc', then
++ all calls to `malloc' will call the function `__wrap_malloc'
++ instead. The call to `__real_malloc' in `__wrap_malloc' will call
++ the real `malloc' function.
++
++ You may wish to provide a `__real_malloc' function as well, so that
++ links without the `--wrap' option will succeed. If you do this,
++ you should not put the definition of `__real_malloc' in the same
++ file as `__wrap_malloc'; if you do, the assembler may resolve the
++ call before the linker has a chance to wrap it to `malloc'.
++
++`--eh-frame-hdr'
++ Request creation of `.eh_frame_hdr' section and ELF
++ `PT_GNU_EH_FRAME' segment header.
++
++`--enable-new-dtags'
++`--disable-new-dtags'
++ This linker can create the new dynamic tags in ELF. But the older
++ ELF systems may not understand them. If you specify
++ `--enable-new-dtags', the dynamic tags will be created as needed.
++ If you specify `--disable-new-dtags', no new dynamic tags will be
++ created. By default, the new dynamic tags are not created. Note
++ that those options are only available for ELF systems.
++
++`--hash-size=NUMBER'
++ Set the default size of the linker's hash tables to a prime number
++ close to NUMBER. Increasing this value can reduce the length of
++ time it takes the linker to perform its tasks, at the expense of
++ increasing the linker's memory requirements. Similarly reducing
++ this value can reduce the memory requirements at the expense of
++ speed.
++
++`--reduce-memory-overheads'
++ This option reduces memory requirements at ld runtime, at the
++ expense of linking speed. This was introduced to select the old
++ O(n^2) algorithm for link map file generation, rather than the new
++ O(n) algorithm which uses about 40% more memory for symbol storage.
++
++ Another effect of the switch is to set the default hash table size
++ to 1021, which again saves memory at the cost of lengthening the
++ linker's run time. This is not done however if the `--hash-size'
++ switch has been used.
++
++ The `--reduce-memory-overheads' switch may be also be used to
++ enable other tradeoffs in future versions of the linker.
++
++
++2.1.1 Options Specific to i386 PE Targets
++-----------------------------------------
++
++The i386 PE linker supports the `-shared' option, which causes the
++output to be a dynamically linked library (DLL) instead of a normal
++executable. You should name the output `*.dll' when you use this
++option. In addition, the linker fully supports the standard `*.def'
++files, which may be specified on the linker command line like an object
++file (in fact, it should precede archives it exports symbols from, to
++ensure that they get linked in, just like a normal object file).
++
++ In addition to the options common to all targets, the i386 PE linker
++support additional command line options that are specific to the i386
++PE target. Options that take values may be separated from their values
++by either a space or an equals sign.
++
++`--add-stdcall-alias'
++ If given, symbols with a stdcall suffix (@NN) will be exported
++ as-is and also with the suffix stripped. [This option is specific
++ to the i386 PE targeted port of the linker]
++
++`--base-file FILE'
++ Use FILE as the name of a file in which to save the base addresses
++ of all the relocations needed for generating DLLs with `dlltool'.
++ [This is an i386 PE specific option]
++
++`--dll'
++ Create a DLL instead of a regular executable. You may also use
++ `-shared' or specify a `LIBRARY' in a given `.def' file. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--enable-stdcall-fixup'
++`--disable-stdcall-fixup'
++ If the link finds a symbol that it cannot resolve, it will attempt
++ to do "fuzzy linking" by looking for another defined symbol that
++ differs only in the format of the symbol name (cdecl vs stdcall)
++ and will resolve that symbol by linking to the match. For
++ example, the undefined symbol `_foo' might be linked to the
++ function `_foo@12', or the undefined symbol `_bar@16' might be
++ linked to the function `_bar'. When the linker does this, it
++ prints a warning, since it normally should have failed to link,
++ but sometimes import libraries generated from third-party dlls may
++ need this feature to be usable. If you specify
++ `--enable-stdcall-fixup', this feature is fully enabled and
++ warnings are not printed. If you specify
++ `--disable-stdcall-fixup', this feature is disabled and such
++ mismatches are considered to be errors. [This option is specific
++ to the i386 PE targeted port of the linker]
++
++`--export-all-symbols'
++ If given, all global symbols in the objects used to build a DLL
++ will be exported by the DLL. Note that this is the default if
++ there otherwise wouldn't be any exported symbols. When symbols are
++ explicitly exported via DEF files or implicitly exported via
++ function attributes, the default is to not export anything else
++ unless this option is given. Note that the symbols `DllMain@12',
++ `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will
++ not be automatically exported. Also, symbols imported from other
++ DLLs will not be re-exported, nor will symbols specifying the
++ DLL's internal layout such as those beginning with `_head_' or
++ ending with `_iname'. In addition, no symbols from `libgcc',
++ `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols
++ whose names begin with `__rtti_' or `__builtin_' will not be
++ exported, to help with C++ DLLs. Finally, there is an extensive
++ list of cygwin-private symbols that are not exported (obviously,
++ this applies on when building DLLs for cygwin targets). These
++ cygwin-excludes are: `_cygwin_dll_entry@12',
++ `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12',
++ `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0',
++ `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and
++ `environ'. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--exclude-symbols SYMBOL,SYMBOL,...'
++ Specifies a list of symbols which should not be automatically
++ exported. The symbol names may be delimited by commas or colons.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--file-alignment'
++ Specify the file alignment. Sections in the file will always
++ begin at file offsets which are multiples of this number. This
++ defaults to 512. [This option is specific to the i386 PE targeted
++ port of the linker]
++
++`--heap RESERVE'
++`--heap RESERVE,COMMIT'
++ Specify the amount of memory to reserve (and optionally commit) to
++ be used as heap for this program. The default is 1Mb reserved, 4K
++ committed. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--image-base VALUE'
++ Use VALUE as the base address of your program or dll. This is the
++ lowest memory location that will be used when your program or dll
++ is loaded. To reduce the need to relocate and improve performance
++ of your dlls, each should have a unique base address and not
++ overlap any other dlls. The default is 0x400000 for executables,
++ and 0x10000000 for dlls. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--kill-at'
++ If given, the stdcall suffixes (@NN) will be stripped from symbols
++ before they are exported. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--large-address-aware'
++ If given, the appropriate bit in the "Charateristics" field of the
++ COFF header is set to indicate that this executable supports
++ virtual addresses greater than 2 gigabytes. This should be used
++ in conjuction with the /3GB or /USERVA=VALUE megabytes switch in
++ the "[operating systems]" section of the BOOT.INI. Otherwise,
++ this bit has no effect. [This option is specific to PE targeted
++ ports of the linker]
++
++`--major-image-version VALUE'
++ Sets the major number of the "image version". Defaults to 1.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--major-os-version VALUE'
++ Sets the major number of the "os version". Defaults to 4. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--major-subsystem-version VALUE'
++ Sets the major number of the "subsystem version". Defaults to 4.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--minor-image-version VALUE'
++ Sets the minor number of the "image version". Defaults to 0.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--minor-os-version VALUE'
++ Sets the minor number of the "os version". Defaults to 0. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--minor-subsystem-version VALUE'
++ Sets the minor number of the "subsystem version". Defaults to 0.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--output-def FILE'
++ The linker will create the file FILE which will contain a DEF file
++ corresponding to the DLL the linker is generating. This DEF file
++ (which should be called `*.def') may be used to create an import
++ library with `dlltool' or may be used as a reference to
++ automatically or implicitly exported symbols. [This option is
++ specific to the i386 PE targeted port of the linker]
++
++`--out-implib FILE'
++ The linker will create the file FILE which will contain an import
++ lib corresponding to the DLL the linker is generating. This import
++ lib (which should be called `*.dll.a' or `*.a' may be used to link
++ clients against the generated DLL; this behaviour makes it
++ possible to skip a separate `dlltool' import library creation step.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--enable-auto-image-base'
++ Automatically choose the image base for DLLs, unless one is
++ specified using the `--image-base' argument. By using a hash
++ generated from the dllname to create unique image bases for each
++ DLL, in-memory collisions and relocations which can delay program
++ execution are avoided. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--disable-auto-image-base'
++ Do not automatically generate a unique image base. If there is no
++ user-specified image base (`--image-base') then use the platform
++ default. [This option is specific to the i386 PE targeted port of
++ the linker]
++
++`--dll-search-prefix STRING'
++ When linking dynamically to a dll without an import library,
++ search for `<string><basename>.dll' in preference to
++ `lib<basename>.dll'. This behaviour allows easy distinction
++ between DLLs built for the various "subplatforms": native, cygwin,
++ uwin, pw, etc. For instance, cygwin DLLs typically use
++ `--dll-search-prefix=cyg'. [This option is specific to the i386
++ PE targeted port of the linker]
++
++`--enable-auto-import'
++ Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA
++ imports from DLLs, and create the necessary thunking symbols when
++ building the import libraries with those DATA exports. Note: Use
++ of the 'auto-import' extension will cause the text section of the
++ image file to be made writable. This does not conform to the
++ PE-COFF format specification published by Microsoft.
++
++ Using 'auto-import' generally will 'just work' - but sometimes you
++ may see this message:
++
++ "variable '<var>' can't be auto-imported. Please read the
++ documentation for ld's `--enable-auto-import' for details."
++
++ This message occurs when some (sub)expression accesses an address
++ ultimately given by the sum of two constants (Win32 import tables
++ only allow one). Instances where this may occur include accesses
++ to member fields of struct variables imported from a DLL, as well
++ as using a constant index into an array variable imported from a
++ DLL. Any multiword variable (arrays, structs, long long, etc) may
++ trigger this error condition. However, regardless of the exact
++ data type of the offending exported variable, ld will always
++ detect it, issue the warning, and exit.
++
++ There are several ways to address this difficulty, regardless of
++ the data type of the exported variable:
++
++ One way is to use -enable-runtime-pseudo-reloc switch. This leaves
++ the task of adjusting references in your client code for runtime
++ environment, so this method works only when runtime environment
++ supports this feature.
++
++ A second solution is to force one of the 'constants' to be a
++ variable - that is, unknown and un-optimizable at compile time.
++ For arrays, there are two possibilities: a) make the indexee (the
++ array's address) a variable, or b) make the 'constant' index a
++ variable. Thus:
++
++ extern type extern_array[];
++ extern_array[1] -->
++ { volatile type *t=extern_array; t[1] }
++
++ or
++
++ extern type extern_array[];
++ extern_array[1] -->
++ { volatile int t=1; extern_array[t] }
++
++ For structs (and most other multiword data types) the only option
++ is to make the struct itself (or the long long, or the ...)
++ variable:
++
++ extern struct s extern_struct;
++ extern_struct.field -->
++ { volatile struct s *t=&extern_struct; t->field }
++
++ or
++
++ extern long long extern_ll;
++ extern_ll -->
++ { volatile long long * local_ll=&extern_ll; *local_ll }
++
++ A third method of dealing with this difficulty is to abandon
++ 'auto-import' for the offending symbol and mark it with
++ `__declspec(dllimport)'. However, in practise that requires using
++ compile-time #defines to indicate whether you are building a DLL,
++ building client code that will link to the DLL, or merely
++ building/linking to a static library. In making the choice
++ between the various methods of resolving the 'direct address with
++ constant offset' problem, you should consider typical real-world
++ usage:
++
++ Original:
++ --foo.h
++ extern int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ printf("%d\n",arr[1]);
++ }
++
++ Solution 1:
++ --foo.h
++ extern int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ /* This workaround is for win32 and cygwin; do not "optimize" */
++ volatile int *parr = arr;
++ printf("%d\n",parr[1]);
++ }
++
++ Solution 2:
++ --foo.h
++ /* Note: auto-export is assumed (no __declspec(dllexport)) */
++ #if (defined(_WIN32) || defined(__CYGWIN__)) && \
++ !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
++ #define FOO_IMPORT __declspec(dllimport)
++ #else
++ #define FOO_IMPORT
++ #endif
++ extern FOO_IMPORT int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ printf("%d\n",arr[1]);
++ }
++
++ A fourth way to avoid this problem is to re-code your library to
++ use a functional interface rather than a data interface for the
++ offending variables (e.g. set_foo() and get_foo() accessor
++ functions). [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--disable-auto-import'
++ Do not attempt to do sophisticated linking of `_symbol' to
++ `__imp__symbol' for DATA imports from DLLs. [This option is
++ specific to the i386 PE targeted port of the linker]
++
++`--enable-runtime-pseudo-reloc'
++ If your code contains expressions described in -enable-auto-import
++ section, that is, DATA imports from DLL with non-zero offset, this
++ switch will create a vector of 'runtime pseudo relocations' which
++ can be used by runtime environment to adjust references to such
++ data in your client code. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--disable-runtime-pseudo-reloc'
++ Do not create pseudo relocations for non-zero offset DATA imports
++ from DLLs. This is the default. [This option is specific to the
++ i386 PE targeted port of the linker]
++
++`--enable-extra-pe-debug'
++ Show additional debug info related to auto-import symbol thunking.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--section-alignment'
++ Sets the section alignment. Sections in memory will always begin
++ at addresses which are a multiple of this number. Defaults to
++ 0x1000. [This option is specific to the i386 PE targeted port of
++ the linker]
++
++`--stack RESERVE'
++`--stack RESERVE,COMMIT'
++ Specify the amount of memory to reserve (and optionally commit) to
++ be used as stack for this program. The default is 2Mb reserved, 4K
++ committed. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--subsystem WHICH'
++`--subsystem WHICH:MAJOR'
++`--subsystem WHICH:MAJOR.MINOR'
++ Specifies the subsystem under which your program will execute. The
++ legal values for WHICH are `native', `windows', `console',
++ `posix', and `xbox'. You may optionally set the subsystem version
++ also. Numeric values are also accepted for WHICH. [This option
++ is specific to the i386 PE targeted port of the linker]
++
++
++
++File: ld.info, Node: Environment, Prev: Options, Up: Invocation
++
++2.2 Environment Variables
++=========================
++
++You can change the behaviour of `ld' with the environment variables
++`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'.
++
++ `GNUTARGET' determines the input-file object format if you don't use
++`-b' (or its synonym `--format'). Its value should be one of the BFD
++names for an input format (*note BFD::). If there is no `GNUTARGET' in
++the environment, `ld' uses the natural format of the target. If
++`GNUTARGET' is set to `default' then BFD attempts to discover the input
++format by examining binary input files; this method often succeeds, but
++there are potential ambiguities, since there is no method of ensuring
++that the magic number used to specify object-file formats is unique.
++However, the configuration procedure for BFD on each system places the
++conventional format for that system first in the search-list, so
++ambiguities are resolved in favor of convention.
++
++ `LDEMULATION' determines the default emulation if you don't use the
++`-m' option. The emulation can affect various aspects of linker
++behaviour, particularly the default linker script. You can list the
++available emulations with the `--verbose' or `-V' options. If the `-m'
++option is not used, and the `LDEMULATION' environment variable is not
++defined, the default emulation depends upon how the linker was
++configured.
++
++ Normally, the linker will default to demangling symbols. However, if
++`COLLECT_NO_DEMANGLE' is set in the environment, then it will default
++to not demangling symbols. This environment variable is used in a
++similar fashion by the `gcc' linker wrapper program. The default may
++be overridden by the `--demangle' and `--no-demangle' options.
++
++
++File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top
++
++3 Linker Scripts
++****************
++
++Every link is controlled by a "linker script". This script is written
++in the linker command language.
++
++ The main purpose of the linker script is to describe how the
++sections in the input files should be mapped into the output file, and
++to control the memory layout of the output file. Most linker scripts
++do nothing more than this. However, when necessary, the linker script
++can also direct the linker to perform many other operations, using the
++commands described below.
++
++ The linker always uses a linker script. If you do not supply one
++yourself, the linker will use a default script that is compiled into the
++linker executable. You can use the `--verbose' command line option to
++display the default linker script. Certain command line options, such
++as `-r' or `-N', will affect the default linker script.
++
++ You may supply your own linker script by using the `-T' command line
++option. When you do this, your linker script will replace the default
++linker script.
++
++ You may also use linker scripts implicitly by naming them as input
++files to the linker, as though they were files to be linked. *Note
++Implicit Linker Scripts::.
++
++* Menu:
++
++* Basic Script Concepts:: Basic Linker Script Concepts
++* Script Format:: Linker Script Format
++* Simple Example:: Simple Linker Script Example
++* Simple Commands:: Simple Linker Script Commands
++* Assignments:: Assigning Values to Symbols
++* SECTIONS:: SECTIONS Command
++* MEMORY:: MEMORY Command
++* PHDRS:: PHDRS Command
++* VERSION:: VERSION Command
++* Expressions:: Expressions in Linker Scripts
++* Implicit Linker Scripts:: Implicit Linker Scripts
++
++
++File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts
++
++3.1 Basic Linker Script Concepts
++================================
++
++We need to define some basic concepts and vocabulary in order to
++describe the linker script language.
++
++ The linker combines input files into a single output file. The
++output file and each input file are in a special data format known as an
++"object file format". Each file is called an "object file". The
++output file is often called an "executable", but for our purposes we
++will also call it an object file. Each object file has, among other
++things, a list of "sections". We sometimes refer to a section in an
++input file as an "input section"; similarly, a section in the output
++file is an "output section".
++
++ Each section in an object file has a name and a size. Most sections
++also have an associated block of data, known as the "section contents".
++A section may be marked as "loadable", which mean that the contents
++should be loaded into memory when the output file is run. A section
++with no contents may be "allocatable", which means that an area in
++memory should be set aside, but nothing in particular should be loaded
++there (in some cases this memory must be zeroed out). A section which
++is neither loadable nor allocatable typically contains some sort of
++debugging information.
++
++ Every loadable or allocatable output section has two addresses. The
++first is the "VMA", or virtual memory address. This is the address the
++section will have when the output file is run. The second is the
++"LMA", or load memory address. This is the address at which the
++section will be loaded. In most cases the two addresses will be the
++same. An example of when they might be different is when a data section
++is loaded into ROM, and then copied into RAM when the program starts up
++(this technique is often used to initialize global variables in a ROM
++based system). In this case the ROM address would be the LMA, and the
++RAM address would be the VMA.
++
++ You can see the sections in an object file by using the `objdump'
++program with the `-h' option.
++
++ Every object file also has a list of "symbols", known as the "symbol
++table". A symbol may be defined or undefined. Each symbol has a name,
++and each defined symbol has an address, among other information. If
++you compile a C or C++ program into an object file, you will get a
++defined symbol for every defined function and global or static
++variable. Every undefined function or global variable which is
++referenced in the input file will become an undefined symbol.
++
++ You can see the symbols in an object file by using the `nm' program,
++or by using the `objdump' program with the `-t' option.
++
++
++File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts
++
++3.2 Linker Script Format
++========================
++
++Linker scripts are text files.
++
++ You write a linker script as a series of commands. Each command is
++either a keyword, possibly followed by arguments, or an assignment to a
++symbol. You may separate commands using semicolons. Whitespace is
++generally ignored.
++
++ Strings such as file or format names can normally be entered
++directly. If the file name contains a character such as a comma which
++would otherwise serve to separate file names, you may put the file name
++in double quotes. There is no way to use a double quote character in a
++file name.
++
++ You may include comments in linker scripts just as in C, delimited by
++`/*' and `*/'. As in C, comments are syntactically equivalent to
++whitespace.
++
++
++File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts
++
++3.3 Simple Linker Script Example
++================================
++
++Many linker scripts are fairly simple.
++
++ The simplest possible linker script has just one command:
++`SECTIONS'. You use the `SECTIONS' command to describe the memory
++layout of the output file.
++
++ The `SECTIONS' command is a powerful command. Here we will describe
++a simple use of it. Let's assume your program consists only of code,
++initialized data, and uninitialized data. These will be in the
++`.text', `.data', and `.bss' sections, respectively. Let's assume
++further that these are the only sections which appear in your input
++files.
++
++ For this example, let's say that the code should be loaded at address
++0x10000, and that the data should start at address 0x8000000. Here is a
++linker script which will do that:
++ SECTIONS
++ {
++ . = 0x10000;
++ .text : { *(.text) }
++ . = 0x8000000;
++ .data : { *(.data) }
++ .bss : { *(.bss) }
++ }
++
++ You write the `SECTIONS' command as the keyword `SECTIONS', followed
++by a series of symbol assignments and output section descriptions
++enclosed in curly braces.
++
++ The first line inside the `SECTIONS' command of the above example
++sets the value of the special symbol `.', which is the location
++counter. If you do not specify the address of an output section in some
++other way (other ways are described later), the address is set from the
++current value of the location counter. The location counter is then
++incremented by the size of the output section. At the start of the
++`SECTIONS' command, the location counter has the value `0'.
++
++ The second line defines an output section, `.text'. The colon is
++required syntax which may be ignored for now. Within the curly braces
++after the output section name, you list the names of the input sections
++which should be placed into this output section. The `*' is a wildcard
++which matches any file name. The expression `*(.text)' means all
++`.text' input sections in all input files.
++
++ Since the location counter is `0x10000' when the output section
++`.text' is defined, the linker will set the address of the `.text'
++section in the output file to be `0x10000'.
++
++ The remaining lines define the `.data' and `.bss' sections in the
++output file. The linker will place the `.data' output section at
++address `0x8000000'. After the linker places the `.data' output
++section, the value of the location counter will be `0x8000000' plus the
++size of the `.data' output section. The effect is that the linker will
++place the `.bss' output section immediately after the `.data' output
++section in memory.
++
++ The linker will ensure that each output section has the required
++alignment, by increasing the location counter if necessary. In this
++example, the specified addresses for the `.text' and `.data' sections
++will probably satisfy any alignment constraints, but the linker may
++have to create a small gap between the `.data' and `.bss' sections.
++
++ That's it! That's a simple and complete linker script.
++
++
++File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts
++
++3.4 Simple Linker Script Commands
++=================================
++
++In this section we describe the simple linker script commands.
++
++* Menu:
++
++* Entry Point:: Setting the entry point
++* File Commands:: Commands dealing with files
++
++* Format Commands:: Commands dealing with object file formats
++
++* Miscellaneous Commands:: Other linker script commands
++
++
++File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands
++
++3.4.1 Setting the Entry Point
++-----------------------------
++
++The first instruction to execute in a program is called the "entry
++point". You can use the `ENTRY' linker script command to set the entry
++point. The argument is a symbol name:
++ ENTRY(SYMBOL)
++
++ There are several ways to set the entry point. The linker will set
++the entry point by trying each of the following methods in order, and
++stopping when one of them succeeds:
++ * the `-e' ENTRY command-line option;
++
++ * the `ENTRY(SYMBOL)' command in a linker script;
++
++ * the value of the symbol `start', if defined;
++
++ * the address of the first byte of the `.text' section, if present;
++
++ * The address `0'.
++
++
++File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands
++
++3.4.2 Commands Dealing with Files
++---------------------------------
++
++Several linker script commands deal with files.
++
++`INCLUDE FILENAME'
++ Include the linker script FILENAME at this point. The file will
++ be searched for in the current directory, and in any directory
++ specified with the `-L' option. You can nest calls to `INCLUDE'
++ up to 10 levels deep.
++
++`INPUT(FILE, FILE, ...)'
++`INPUT(FILE FILE ...)'
++ The `INPUT' command directs the linker to include the named files
++ in the link, as though they were named on the command line.
++
++ For example, if you always want to include `subr.o' any time you do
++ a link, but you can't be bothered to put it on every link command
++ line, then you can put `INPUT (subr.o)' in your linker script.
++
++ In fact, if you like, you can list all of your input files in the
++ linker script, and then invoke the linker with nothing but a `-T'
++ option.
++
++ In case a "sysroot prefix" is configured, and the filename starts
++ with the `/' character, and the script being processed was located
++ inside the "sysroot prefix", the filename will be looked for in
++ the "sysroot prefix". Otherwise, the linker will try to open the
++ file in the current directory. If it is not found, the linker
++ will search through the archive library search path. See the
++ description of `-L' in *Note Command Line Options: Options.
++
++ If you use `INPUT (-lFILE)', `ld' will transform the name to
++ `libFILE.a', as with the command line argument `-l'.
++
++ When you use the `INPUT' command in an implicit linker script, the
++ files will be included in the link at the point at which the linker
++ script file is included. This can affect archive searching.
++
++`GROUP(FILE, FILE, ...)'
++`GROUP(FILE FILE ...)'
++ The `GROUP' command is like `INPUT', except that the named files
++ should all be archives, and they are searched repeatedly until no
++ new undefined references are created. See the description of `-('
++ in *Note Command Line Options: Options.
++
++`AS_NEEDED(FILE, FILE, ...)'
++`AS_NEEDED(FILE FILE ...)'
++ This construct can appear only inside of the `INPUT' or `GROUP'
++ commands, among other filenames. The files listed will be handled
++ as if they appear directly in the `INPUT' or `GROUP' commands,
++ with the exception of ELF shared libraries, that will be added only
++ when they are actually needed. This construct essentially enables
++ `--as-needed' option for all the files listed inside of it and
++ restores previous `--as-needed' resp. `--no-as-needed' setting
++ afterwards.
++
++`OUTPUT(FILENAME)'
++ The `OUTPUT' command names the output file. Using
++ `OUTPUT(FILENAME)' in the linker script is exactly like using `-o
++ FILENAME' on the command line (*note Command Line Options:
++ Options.). If both are used, the command line option takes
++ precedence.
++
++ You can use the `OUTPUT' command to define a default name for the
++ output file other than the usual default of `a.out'.
++
++`SEARCH_DIR(PATH)'
++ The `SEARCH_DIR' command adds PATH to the list of paths where `ld'
++ looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly
++ like using `-L PATH' on the command line (*note Command Line
++ Options: Options.). If both are used, then the linker will search
++ both paths. Paths specified using the command line option are
++ searched first.
++
++`STARTUP(FILENAME)'
++ The `STARTUP' command is just like the `INPUT' command, except
++ that FILENAME will become the first input file to be linked, as
++ though it were specified first on the command line. This may be
++ useful when using a system in which the entry point is always the
++ start of the first file.
++
++
++File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands
++
++3.4.3 Commands Dealing with Object File Formats
++-----------------------------------------------
++
++A couple of linker script commands deal with object file formats.
++
++`OUTPUT_FORMAT(BFDNAME)'
++`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)'
++ The `OUTPUT_FORMAT' command names the BFD format to use for the
++ output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is
++ exactly like using `--oformat BFDNAME' on the command line (*note
++ Command Line Options: Options.). If both are used, the command
++ line option takes precedence.
++
++ You can use `OUTPUT_FORMAT' with three arguments to use different
++ formats based on the `-EB' and `-EL' command line options. This
++ permits the linker script to set the output format based on the
++ desired endianness.
++
++ If neither `-EB' nor `-EL' are used, then the output format will
++ be the first argument, DEFAULT. If `-EB' is used, the output
++ format will be the second argument, BIG. If `-EL' is used, the
++ output format will be the third argument, LITTLE.
++
++ For example, the default linker script for the MIPS ELF target
++ uses this command:
++ OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
++ This says that the default format for the output file is
++ `elf32-bigmips', but if the user uses the `-EL' command line
++ option, the output file will be created in the `elf32-littlemips'
++ format.
++
++`TARGET(BFDNAME)'
++ The `TARGET' command names the BFD format to use when reading input
++ files. It affects subsequent `INPUT' and `GROUP' commands. This
++ command is like using `-b BFDNAME' on the command line (*note
++ Command Line Options: Options.). If the `TARGET' command is used
++ but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also
++ used to set the format for the output file. *Note BFD::.
++
++
++File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands
++
++3.4.4 Other Linker Script Commands
++----------------------------------
++
++There are a few other linker scripts commands.
++
++`ASSERT(EXP, MESSAGE)'
++ Ensure that EXP is non-zero. If it is zero, then exit the linker
++ with an error code, and print MESSAGE.
++
++`EXTERN(SYMBOL SYMBOL ...)'
++ Force SYMBOL to be entered in the output file as an undefined
++ symbol. Doing this may, for example, trigger linking of additional
++ modules from standard libraries. You may list several SYMBOLs for
++ each `EXTERN', and you may use `EXTERN' multiple times. This
++ command has the same effect as the `-u' command-line option.
++
++`FORCE_COMMON_ALLOCATION'
++ This command has the same effect as the `-d' command-line option:
++ to make `ld' assign space to common symbols even if a relocatable
++ output file is specified (`-r').
++
++`INHIBIT_COMMON_ALLOCATION'
++ This command has the same effect as the `--no-define-common'
++ command-line option: to make `ld' omit the assignment of addresses
++ to common symbols even for a non-relocatable output file.
++
++`NOCROSSREFS(SECTION SECTION ...)'
++ This command may be used to tell `ld' to issue an error about any
++ references among certain output sections.
++
++ In certain types of programs, particularly on embedded systems when
++ using overlays, when one section is loaded into memory, another
++ section will not be. Any direct references between the two
++ sections would be errors. For example, it would be an error if
++ code in one section called a function defined in the other section.
++
++ The `NOCROSSREFS' command takes a list of output section names. If
++ `ld' detects any cross references between the sections, it reports
++ an error and returns a non-zero exit status. Note that the
++ `NOCROSSREFS' command uses output section names, not input section
++ names.
++
++`OUTPUT_ARCH(BFDARCH)'
++ Specify a particular output machine architecture. The argument is
++ one of the names used by the BFD library (*note BFD::). You can
++ see the architecture of an object file by using the `objdump'
++ program with the `-f' option.
++
++
++File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts
++
++3.5 Assigning Values to Symbols
++===============================
++
++You may assign a value to a symbol in a linker script. This will define
++the symbol and place it into the symbol table with a global scope.
++
++* Menu:
++
++* Simple Assignments:: Simple Assignments
++* PROVIDE:: PROVIDE
++* PROVIDE_HIDDEN:: PROVIDE_HIDDEN
++* Source Code Reference:: How to use a linker script defined symbol in source code
++
++
++File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments
++
++3.5.1 Simple Assignments
++------------------------
++
++You may assign to a symbol using any of the C assignment operators:
++
++`SYMBOL = EXPRESSION ;'
++`SYMBOL += EXPRESSION ;'
++`SYMBOL -= EXPRESSION ;'
++`SYMBOL *= EXPRESSION ;'
++`SYMBOL /= EXPRESSION ;'
++`SYMBOL <<= EXPRESSION ;'
++`SYMBOL >>= EXPRESSION ;'
++`SYMBOL &= EXPRESSION ;'
++`SYMBOL |= EXPRESSION ;'
++
++ The first case will define SYMBOL to the value of EXPRESSION. In
++the other cases, SYMBOL must already be defined, and the value will be
++adjusted accordingly.
++
++ The special symbol name `.' indicates the location counter. You may
++only use this within a `SECTIONS' command. *Note Location Counter::.
++
++ The semicolon after EXPRESSION is required.
++
++ Expressions are defined below; see *Note Expressions::.
++
++ You may write symbol assignments as commands in their own right, or
++as statements within a `SECTIONS' command, or as part of an output
++section description in a `SECTIONS' command.
++
++ The section of the symbol will be set from the section of the
++expression; for more information, see *Note Expression Section::.
++
++ Here is an example showing the three different places that symbol
++assignments may be used:
++
++ floating_point = 0;
++ SECTIONS
++ {
++ .text :
++ {
++ *(.text)
++ _etext = .;
++ }
++ _bdata = (. + 3) & ~ 3;
++ .data : { *(.data) }
++ }
++ In this example, the symbol `floating_point' will be defined as
++zero. The symbol `_etext' will be defined as the address following the
++last `.text' input section. The symbol `_bdata' will be defined as the
++address following the `.text' output section aligned upward to a 4 byte
++boundary.
++
++
++File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: Simple Assignments, Up: Assignments
++
++3.5.2 PROVIDE
++-------------
++
++In some cases, it is desirable for a linker script to define a symbol
++only if it is referenced and is not defined by any object included in
++the link. For example, traditional linkers defined the symbol `etext'.
++However, ANSI C requires that the user be able to use `etext' as a
++function name without encountering an error. The `PROVIDE' keyword may
++be used to define a symbol, such as `etext', only if it is referenced
++but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'.
++
++ Here is an example of using `PROVIDE' to define `etext':
++ SECTIONS
++ {
++ .text :
++ {
++ *(.text)
++ _etext = .;
++ PROVIDE(etext = .);
++ }
++ }
++
++ In this example, if the program defines `_etext' (with a leading
++underscore), the linker will give a multiple definition error. If, on
++the other hand, the program defines `etext' (with no leading
++underscore), the linker will silently use the definition in the program.
++If the program references `etext' but does not define it, the linker
++will use the definition in the linker script.
++
++
++File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments
++
++3.5.3 PROVIDE_HIDDEN
++--------------------
++
++Similar to `PROVIDE'. For ELF targeted ports, the symbol will be
++hidden and won't be exported.
++
++
++File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments
++
++3.5.4 Source Code Reference
++---------------------------
++
++Accessing a linker script defined variable from source code is not
++intuitive. In particular a linker script symbol is not equivalent to a
++variable declaration in a high level language, it is instead a symbol
++that does not have a value.
++
++ Before going further, it is important to note that compilers often
++transform names in the source code into different names when they are
++stored in the symbol table. For example, Fortran compilers commonly
++prepend or append an underscore, and C++ performs extensive `name
++mangling'. Therefore there might be a discrepancy between the name of
++a variable as it is used in source code and the name of the same
++variable as it is defined in a linker script. For example in C a
++linker script variable might be referred to as:
++
++ extern int foo;
++
++ But in the linker script it might be defined as:
++
++ _foo = 1000;
++
++ In the remaining examples however it is assumed that no name
++transformation has taken place.
++
++ When a symbol is declared in a high level language such as C, two
++things happen. The first is that the compiler reserves enough space in
++the program's memory to hold the _value_ of the symbol. The second is
++that the compiler creates an entry in the program's symbol table which
++holds the symbol's _address_. ie the symbol table contains the address
++of the block of memory holding the symbol's value. So for example the
++following C declaration, at file scope:
++
++ int foo = 1000;
++
++ creates a entry called `foo' in the symbol table. This entry holds
++the address of an `int' sized block of memory where the number 1000 is
++initially stored.
++
++ When a program references a symbol the compiler generates code that
++first accesses the symbol table to find the address of the symbol's
++memory block and then code to read the value from that memory block.
++So:
++
++ foo = 1;
++
++ looks up the symbol `foo' in the symbol table, gets the address
++associated with this symbol and then writes the value 1 into that
++address. Whereas:
++
++ int * a = & foo;
++
++ looks up the symbol `foo' in the symbol table, gets it address and
++then copies this address into the block of memory associated with the
++variable `a'.
++
++ Linker scripts symbol declarations, by contrast, create an entry in
++the symbol table but do not assign any memory to them. Thus they are
++an address without a value. So for example the linker script
++definition:
++
++ foo = 1000;
++
++ creates an entry in the symbol table called `foo' which holds the
++address of memory location 1000, but nothing special is stored at
++address 1000. This means that you cannot access the _value_ of a
++linker script defined symbol - it has no value - all you can do is
++access the _address_ of a linker script defined symbol.
++
++ Hence when you are using a linker script defined symbol in source
++code you should always take the address of the symbol, and never
++attempt to use its value. For example suppose you want to copy the
++contents of a section of memory called .ROM into a section called
++.FLASH and the linker script contains these declarations:
++
++ start_of_ROM = .ROM;
++ end_of_ROM = .ROM + sizeof (.ROM) - 1;
++ start_of_FLASH = .FLASH;
++
++ Then the C source code to perform the copy would be:
++
++ extern char start_of_ROM, end_of_ROM, start_of_FLASH;
++
++ memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM);
++
++ Note the use of the `&' operators. These are correct.
++
++
++File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts
++
++3.6 SECTIONS Command
++====================
++
++The `SECTIONS' command tells the linker how to map input sections into
++output sections, and how to place the output sections in memory.
++
++ The format of the `SECTIONS' command is:
++ SECTIONS
++ {
++ SECTIONS-COMMAND
++ SECTIONS-COMMAND
++ ...
++ }
++
++ Each SECTIONS-COMMAND may of be one of the following:
++
++ * an `ENTRY' command (*note Entry command: Entry Point.)
++
++ * a symbol assignment (*note Assignments::)
++
++ * an output section description
++
++ * an overlay description
++
++ The `ENTRY' command and symbol assignments are permitted inside the
++`SECTIONS' command for convenience in using the location counter in
++those commands. This can also make the linker script easier to
++understand because you can use those commands at meaningful points in
++the layout of the output file.
++
++ Output section descriptions and overlay descriptions are described
++below.
++
++ If you do not use a `SECTIONS' command in your linker script, the
++linker will place each input section into an identically named output
++section in the order that the sections are first encountered in the
++input files. If all input sections are present in the first file, for
++example, the order of sections in the output file will match the order
++in the first input file. The first section will be at address zero.
++
++* Menu:
++
++* Output Section Description:: Output section description
++* Output Section Name:: Output section name
++* Output Section Address:: Output section address
++* Input Section:: Input section description
++* Output Section Data:: Output section data
++* Output Section Keywords:: Output section keywords
++* Output Section Discarding:: Output section discarding
++* Output Section Attributes:: Output section attributes
++* Overlay Description:: Overlay description
++
++
++File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS
++
++3.6.1 Output Section Description
++--------------------------------
++
++The full description of an output section looks like this:
++ SECTION [ADDRESS] [(TYPE)] :
++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
++
++ Most output sections do not use most of the optional section
++attributes.
++
++ The whitespace around SECTION is required, so that the section name
++is unambiguous. The colon and the curly braces are also required. The
++line breaks and other white space are optional.
++
++ Each OUTPUT-SECTION-COMMAND may be one of the following:
++
++ * a symbol assignment (*note Assignments::)
++
++ * an input section description (*note Input Section::)
++
++ * data values to include directly (*note Output Section Data::)
++
++ * a special output section keyword (*note Output Section Keywords::)
++
++
++File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS
++
++3.6.2 Output Section Name
++-------------------------
++
++The name of the output section is SECTION. SECTION must meet the
++constraints of your output format. In formats which only support a
++limited number of sections, such as `a.out', the name must be one of
++the names supported by the format (`a.out', for example, allows only
++`.text', `.data' or `.bss'). If the output format supports any number
++of sections, but with numbers and not names (as is the case for Oasys),
++the name should be supplied as a quoted numeric string. A section name
++may consist of any sequence of characters, but a name which contains
++any unusual characters such as commas must be quoted.
++
++ The output section name `/DISCARD/' is special; *Note Output Section
++Discarding::.
++
++
++File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS
++
++3.6.3 Output Section Address
++----------------------------
++
++The ADDRESS is an expression for the VMA (the virtual memory address)
++of the output section. If you do not provide ADDRESS, the linker will
++set it based on REGION if present, or otherwise based on the current
++value of the location counter.
++
++ If you provide ADDRESS, the address of the output section will be
++set to precisely that. If you provide neither ADDRESS nor REGION, then
++the address of the output section will be set to the current value of
++the location counter aligned to the alignment requirements of the
++output section. The alignment requirement of the output section is the
++strictest alignment of any input section contained within the output
++section.
++
++ For example,
++ .text . : { *(.text) }
++ and
++ .text : { *(.text) }
++ are subtly different. The first will set the address of the `.text'
++output section to the current value of the location counter. The
++second will set it to the current value of the location counter aligned
++to the strictest alignment of a `.text' input section.
++
++ The ADDRESS may be an arbitrary expression; *Note Expressions::.
++For example, if you want to align the section on a 0x10 byte boundary,
++so that the lowest four bits of the section address are zero, you could
++do something like this:
++ .text ALIGN(0x10) : { *(.text) }
++ This works because `ALIGN' returns the current location counter
++aligned upward to the specified value.
++
++ Specifying ADDRESS for a section will change the value of the
++location counter.
++
++
++File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS
++
++3.6.4 Input Section Description
++-------------------------------
++
++The most common output section command is an input section description.
++
++ The input section description is the most basic linker script
++operation. You use output sections to tell the linker how to lay out
++your program in memory. You use input section descriptions to tell the
++linker how to map the input files into your memory layout.
++
++* Menu:
++
++* Input Section Basics:: Input section basics
++* Input Section Wildcards:: Input section wildcard patterns
++* Input Section Common:: Input section for common symbols
++* Input Section Keep:: Input section and garbage collection
++* Input Section Example:: Input section example
++
++
++File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section
++
++3.6.4.1 Input Section Basics
++............................
++
++An input section description consists of a file name optionally followed
++by a list of section names in parentheses.
++
++ The file name and the section name may be wildcard patterns, which we
++describe further below (*note Input Section Wildcards::).
++
++ The most common input section description is to include all input
++sections with a particular name in the output section. For example, to
++include all input `.text' sections, you would write:
++ *(.text)
++ Here the `*' is a wildcard which matches any file name. To exclude
++a list of files from matching the file name wildcard, EXCLUDE_FILE may
++be used to match all files except the ones specified in the
++EXCLUDE_FILE list. For example:
++ (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors))
++ will cause all .ctors sections from all files except `crtend.o' and
++`otherfile.o' to be included.
++
++ There are two ways to include more than one section:
++ *(.text .rdata)
++ *(.text) *(.rdata)
++ The difference between these is the order in which the `.text' and
++`.rdata' input sections will appear in the output section. In the
++first example, they will be intermingled, appearing in the same order as
++they are found in the linker input. In the second example, all `.text'
++input sections will appear first, followed by all `.rdata' input
++sections.
++
++ You can specify a file name to include sections from a particular
++file. You would do this if one or more of your files contain special
++data that needs to be at a particular location in memory. For example:
++ data.o(.data)
++
++ If you use a file name without a list of sections, then all sections
++in the input file will be included in the output section. This is not
++commonly done, but it may by useful on occasion. For example:
++ data.o
++
++ When you use a file name which does not contain any wild card
++characters, the linker will first see if you also specified the file
++name on the linker command line or in an `INPUT' command. If you did
++not, the linker will attempt to open the file as an input file, as
++though it appeared on the command line. Note that this differs from an
++`INPUT' command, because the linker will not search for the file in the
++archive search path.
++
++
++File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section
++
++3.6.4.2 Input Section Wildcard Patterns
++.......................................
++
++In an input section description, either the file name or the section
++name or both may be wildcard patterns.
++
++ The file name of `*' seen in many examples is a simple wildcard
++pattern for the file name.
++
++ The wildcard patterns are like those used by the Unix shell.
++
++`*'
++ matches any number of characters
++
++`?'
++ matches any single character
++
++`[CHARS]'
++ matches a single instance of any of the CHARS; the `-' character
++ may be used to specify a range of characters, as in `[a-z]' to
++ match any lower case letter
++
++`\'
++ quotes the following character
++
++ When a file name is matched with a wildcard, the wildcard characters
++will not match a `/' character (used to separate directory names on
++Unix). A pattern consisting of a single `*' character is an exception;
++it will always match any file name, whether it contains a `/' or not.
++In a section name, the wildcard characters will match a `/' character.
++
++ File name wildcard patterns only match files which are explicitly
++specified on the command line or in an `INPUT' command. The linker
++does not search directories to expand wildcards.
++
++ If a file name matches more than one wildcard pattern, or if a file
++name appears explicitly and is also matched by a wildcard pattern, the
++linker will use the first match in the linker script. For example, this
++sequence of input section descriptions is probably in error, because the
++`data.o' rule will not be used:
++ .data : { *(.data) }
++ .data1 : { data.o(.data) }
++
++ Normally, the linker will place files and sections matched by
++wildcards in the order in which they are seen during the link. You can
++change this by using the `SORT_BY_NAME' keyword, which appears before a
++wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When
++the `SORT_BY_NAME' keyword is used, the linker will sort the files or
++sections into ascending order by name before placing them in the output
++file.
++
++ `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The
++difference is `SORT_BY_ALIGNMENT' will sort sections into ascending
++order by alignment before placing them in the output file.
++
++ `SORT' is an alias for `SORT_BY_NAME'.
++
++ When there are nested section sorting commands in linker script,
++there can be at most 1 level of nesting for section sorting commands.
++
++ 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)).
++ It will sort the input sections by name first, then by alignment
++ if 2 sections have the same name.
++
++ 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)).
++ It will sort the input sections by alignment first, then by name
++ if 2 sections have the same alignment.
++
++ 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is
++ treated the same as `SORT_BY_NAME' (wildcard section pattern).
++
++ 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section
++ pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard
++ section pattern).
++
++ 5. All other nested section sorting commands are invalid.
++
++ When both command line section sorting option and linker script
++section sorting command are used, section sorting command always takes
++precedence over the command line option.
++
++ If the section sorting command in linker script isn't nested, the
++command line option will make the section sorting command to be treated
++as nested sorting command.
++
++ 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections
++ alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT'
++ (wildcard section pattern)).
++
++ 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with
++ `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT'
++ (`SORT_BY_NAME' (wildcard section pattern)).
++
++ If the section sorting command in linker script is nested, the
++command line option will be ignored.
++
++ If you ever get confused about where input sections are going, use
++the `-M' linker option to generate a map file. The map file shows
++precisely how input sections are mapped to output sections.
++
++ This example shows how wildcard patterns might be used to partition
++files. This linker script directs the linker to place all `.text'
++sections in `.text' and all `.bss' sections in `.bss'. The linker will
++place the `.data' section from all files beginning with an upper case
++character in `.DATA'; for all other files, the linker will place the
++`.data' section in `.data'.
++ SECTIONS {
++ .text : { *(.text) }
++ .DATA : { [A-Z]*(.data) }
++ .data : { *(.data) }
++ .bss : { *(.bss) }
++ }
++
++
++File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section
++
++3.6.4.3 Input Section for Common Symbols
++........................................
++
++A special notation is needed for common symbols, because in many object
++file formats common symbols do not have a particular input section. The
++linker treats common symbols as though they are in an input section
++named `COMMON'.
++
++ You may use file names with the `COMMON' section just as with any
++other input sections. You can use this to place common symbols from a
++particular input file in one section while common symbols from other
++input files are placed in another section.
++
++ In most cases, common symbols in input files will be placed in the
++`.bss' section in the output file. For example:
++ .bss { *(.bss) *(COMMON) }
++
++ Some object file formats have more than one type of common symbol.
++For example, the MIPS ELF object file format distinguishes standard
++common symbols and small common symbols. In this case, the linker will
++use a different special section name for other types of common symbols.
++In the case of MIPS ELF, the linker uses `COMMON' for standard common
++symbols and `.scommon' for small common symbols. This permits you to
++map the different types of common symbols into memory at different
++locations.
++
++ You will sometimes see `[COMMON]' in old linker scripts. This
++notation is now considered obsolete. It is equivalent to `*(COMMON)'.
++
++
++File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section
++
++3.6.4.4 Input Section and Garbage Collection
++............................................
++
++When link-time garbage collection is in use (`--gc-sections'), it is
++often useful to mark sections that should not be eliminated. This is
++accomplished by surrounding an input section's wildcard entry with
++`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'.
++
++
++File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section
++
++3.6.4.5 Input Section Example
++.............................
++
++The following example is a complete linker script. It tells the linker
++to read all of the sections from file `all.o' and place them at the
++start of output section `outputa' which starts at location `0x10000'.
++All of section `.input1' from file `foo.o' follows immediately, in the
++same output section. All of section `.input2' from `foo.o' goes into
++output section `outputb', followed by section `.input1' from `foo1.o'.
++All of the remaining `.input1' and `.input2' sections from any files
++are written to output section `outputc'.
++
++ SECTIONS {
++ outputa 0x10000 :
++ {
++ all.o
++ foo.o (.input1)
++ }
++ outputb :
++ {
++ foo.o (.input2)
++ foo1.o (.input1)
++ }
++ outputc :
++ {
++ *(.input1)
++ *(.input2)
++ }
++ }
++
++
++File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS
++
++3.6.5 Output Section Data
++-------------------------
++
++You can include explicit bytes of data in an output section by using
++`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section
++command. Each keyword is followed by an expression in parentheses
++providing the value to store (*note Expressions::). The value of the
++expression is stored at the current value of the location counter.
++
++ The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two,
++four, and eight bytes (respectively). After storing the bytes, the
++location counter is incremented by the number of bytes stored.
++
++ For example, this will store the byte 1 followed by the four byte
++value of the symbol `addr':
++ BYTE(1)
++ LONG(addr)
++
++ When using a 64 bit host or target, `QUAD' and `SQUAD' are the same;
++they both store an 8 byte, or 64 bit, value. When both host and target
++are 32 bits, an expression is computed as 32 bits. In this case `QUAD'
++stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32
++bit value sign extended to 64 bits.
++
++ If the object file format of the output file has an explicit
++endianness, which is the normal case, the value will be stored in that
++endianness. When the object file format does not have an explicit
++endianness, as is true of, for example, S-records, the value will be
++stored in the endianness of the first input object file.
++
++ Note--these commands only work inside a section description and not
++between them, so the following will produce an error from the linker:
++ SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } }
++ whereas this will work:
++ SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } }
++
++ You may use the `FILL' command to set the fill pattern for the
++current section. It is followed by an expression in parentheses. Any
++otherwise unspecified regions of memory within the section (for example,
++gaps left due to the required alignment of input sections) are filled
++with the value of the expression, repeated as necessary. A `FILL'
++statement covers memory locations after the point at which it occurs in
++the section definition; by including more than one `FILL' statement,
++you can have different fill patterns in different parts of an output
++section.
++
++ This example shows how to fill unspecified regions of memory with the
++value `0x90':
++ FILL(0x90909090)
++
++ The `FILL' command is similar to the `=FILLEXP' output section
++attribute, but it only affects the part of the section following the
++`FILL' command, rather than the entire section. If both are used, the
++`FILL' command takes precedence. *Note Output Section Fill::, for
++details on the fill expression.
++
++
++File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS
++
++3.6.6 Output Section Keywords
++-----------------------------
++
++There are a couple of keywords which can appear as output section
++commands.
++
++`CREATE_OBJECT_SYMBOLS'
++ The command tells the linker to create a symbol for each input
++ file. The name of each symbol will be the name of the
++ corresponding input file. The section of each symbol will be the
++ output section in which the `CREATE_OBJECT_SYMBOLS' command
++ appears.
++
++ This is conventional for the a.out object file format. It is not
++ normally used for any other object file format.
++
++`CONSTRUCTORS'
++ When linking using the a.out object file format, the linker uses an
++ unusual set construct to support C++ global constructors and
++ destructors. When linking object file formats which do not support
++ arbitrary sections, such as ECOFF and XCOFF, the linker will
++ automatically recognize C++ global constructors and destructors by
++ name. For these object file formats, the `CONSTRUCTORS' command
++ tells the linker to place constructor information in the output
++ section where the `CONSTRUCTORS' command appears. The
++ `CONSTRUCTORS' command is ignored for other object file formats.
++
++ The symbol `__CTOR_LIST__' marks the start of the global
++ constructors, and the symbol `__CTOR_END__' marks the end.
++ Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and
++ end of the global destructors. The first word in the list is the
++ number of entries, followed by the address of each constructor or
++ destructor, followed by a zero word. The compiler must arrange to
++ actually run the code. For these object file formats GNU C++
++ normally calls constructors from a subroutine `__main'; a call to
++ `__main' is automatically inserted into the startup code for
++ `main'. GNU C++ normally runs destructors either by using
++ `atexit', or directly from the function `exit'.
++
++ For object file formats such as `COFF' or `ELF' which support
++ arbitrary section names, GNU C++ will normally arrange to put the
++ addresses of global constructors and destructors into the `.ctors'
++ and `.dtors' sections. Placing the following sequence into your
++ linker script will build the sort of table which the GNU C++
++ runtime code expects to see.
++
++ __CTOR_LIST__ = .;
++ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
++ *(.ctors)
++ LONG(0)
++ __CTOR_END__ = .;
++ __DTOR_LIST__ = .;
++ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
++ *(.dtors)
++ LONG(0)
++ __DTOR_END__ = .;
++
++ If you are using the GNU C++ support for initialization priority,
++ which provides some control over the order in which global
++ constructors are run, you must sort the constructors at link time
++ to ensure that they are executed in the correct order. When using
++ the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)'
++ instead. When using the `.ctors' and `.dtors' sections, use
++ `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of
++ just `*(.ctors)' and `*(.dtors)'.
++
++ Normally the compiler and linker will handle these issues
++ automatically, and you will not need to concern yourself with
++ them. However, you may need to consider this if you are using C++
++ and writing your own linker scripts.
++
++
++
++File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS
++
++3.6.7 Output Section Discarding
++-------------------------------
++
++The linker will not create output section which do not have any
++contents. This is for convenience when referring to input sections that
++may or may not be present in any of the input files. For example:
++ .foo { *(.foo) }
++ will only create a `.foo' section in the output file if there is a
++`.foo' section in at least one input file.
++
++ If you use anything other than an input section description as an
++output section command, such as a symbol assignment, then the output
++section will always be created, even if there are no matching input
++sections.
++
++ The special output section name `/DISCARD/' may be used to discard
++input sections. Any input sections which are assigned to an output
++section named `/DISCARD/' are not included in the output file.
++
++
++File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS
++
++3.6.8 Output Section Attributes
++-------------------------------
++
++We showed above that the full description of an output section looked
++like this:
++ SECTION [ADDRESS] [(TYPE)] :
++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
++We've already described SECTION, ADDRESS, and
++OUTPUT-SECTION-COMMAND. In this section we will describe the remaining
++section attributes.
++
++* Menu:
++
++* Output Section Type:: Output section type
++* Output Section LMA:: Output section LMA
++* Forced Output Alignment:: Forced Output Alignment
++* Forced Input Alignment:: Forced Input Alignment
++* Output Section Region:: Output section region
++* Output Section Phdr:: Output section phdr
++* Output Section Fill:: Output section fill
++
++
++File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes
++
++3.6.8.1 Output Section Type
++...........................
++
++Each output section may have a type. The type is a keyword in
++parentheses. The following types are defined:
++
++`NOLOAD'
++ The section should be marked as not loadable, so that it will not
++ be loaded into memory when the program is run.
++
++`DSECT'
++`COPY'
++`INFO'
++`OVERLAY'
++ These type names are supported for backward compatibility, and are
++ rarely used. They all have the same effect: the section should be
++ marked as not allocatable, so that no memory is allocated for the
++ section when the program is run.
++
++ The linker normally sets the attributes of an output section based on
++the input sections which map into it. You can override this by using
++the section type. For example, in the script sample below, the `ROM'
++section is addressed at memory location `0' and does not need to be
++loaded when the program is run. The contents of the `ROM' section will
++appear in the linker output file as usual.
++ SECTIONS {
++ ROM 0 (NOLOAD) : { ... }
++ ...
++ }
++
++
++File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes
++
++3.6.8.2 Output Section LMA
++..........................
++
++Every section has a virtual address (VMA) and a load address (LMA); see
++*Note Basic Script Concepts::. The address expression which may appear
++in an output section description sets the VMA (*note Output Section
++Address::).
++
++ The linker will normally set the LMA equal to the VMA. You can
++change that by using the `AT' keyword. The expression LMA that follows
++the `AT' keyword specifies the load address of the section.
++
++ Alternatively, with `AT>LMA_REGION' expression, you may specify a
++memory region for the section's load address. *Note MEMORY::. Note
++that if the section has not had a VMA assigned to it then the linker
++will use the LMA_REGION as the VMA region as well. *Note Output
++Section Region::.
++
++ This feature is designed to make it easy to build a ROM image. For
++example, the following linker script creates three output sections: one
++called `.text', which starts at `0x1000', one called `.mdata', which is
++loaded at the end of the `.text' section even though its VMA is
++`0x2000', and one called `.bss' to hold uninitialized data at address
++`0x3000'. The symbol `_data' is defined with the value `0x2000', which
++shows that the location counter holds the VMA value, not the LMA value.
++
++ SECTIONS
++ {
++ .text 0x1000 : { *(.text) _etext = . ; }
++ .mdata 0x2000 :
++ AT ( ADDR (.text) + SIZEOF (.text) )
++ { _data = . ; *(.data); _edata = . ; }
++ .bss 0x3000 :
++ { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;}
++ }
++
++ The run-time initialization code for use with a program generated
++with this linker script would include something like the following, to
++copy the initialized data from the ROM image to its runtime address.
++Notice how this code takes advantage of the symbols defined by the
++linker script.
++
++ extern char _etext, _data, _edata, _bstart, _bend;
++ char *src = &_etext;
++ char *dst = &_data;
++
++ /* ROM has data at end of text; copy it. */
++ while (dst < &_edata) {
++ *dst++ = *src++;
++ }
++
++ /* Zero bss */
++ for (dst = &_bstart; dst< &_bend; dst++)
++ *dst = 0;
++
++
++File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes
++
++3.6.8.3 Forced Output Alignment
++...............................
++
++You can increase an output section's alignment by using ALIGN.
++
++
++File: ld.info, Node: Forced Input Alignment, Next: Output Section Region, Prev: Forced Output Alignment, Up: Output Section Attributes
++
++3.6.8.4 Forced Input Alignment
++..............................
++
++You can force input section alignment within an output section by using
++SUBALIGN. The value specified overrides any alignment given by input
++sections, whether larger or smaller.
++
++
++File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Forced Input Alignment, Up: Output Section Attributes
++
++3.6.8.5 Output Section Region
++.............................
++
++You can assign a section to a previously defined region of memory by
++using `>REGION'. *Note MEMORY::.
++
++ Here is a simple example:
++ MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 }
++ SECTIONS { ROM : { *(.text) } >rom }
++
++
++File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes
++
++3.6.8.6 Output Section Phdr
++...........................
++
++You can assign a section to a previously defined program segment by
++using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more
++segments, then all subsequent allocated sections will be assigned to
++those segments as well, unless they use an explicitly `:PHDR' modifier.
++You can use `:NONE' to tell the linker to not put the section in any
++segment at all.
++
++ Here is a simple example:
++ PHDRS { text PT_LOAD ; }
++ SECTIONS { .text : { *(.text) } :text }
++
++
++File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes
++
++3.6.8.7 Output Section Fill
++...........................
++
++You can set the fill pattern for an entire section by using `=FILLEXP'.
++FILLEXP is an expression (*note Expressions::). Any otherwise
++unspecified regions of memory within the output section (for example,
++gaps left due to the required alignment of input sections) will be
++filled with the value, repeated as necessary. If the fill expression
++is a simple hex number, ie. a string of hex digit starting with `0x'
++and without a trailing `k' or `M', then an arbitrarily long sequence of
++hex digits can be used to specify the fill pattern; Leading zeros
++become part of the pattern too. For all other cases, including extra
++parentheses or a unary `+', the fill pattern is the four least
++significant bytes of the value of the expression. In all cases, the
++number is big-endian.
++
++ You can also change the fill value with a `FILL' command in the
++output section commands; (*note Output Section Data::).
++
++ Here is a simple example:
++ SECTIONS { .text : { *(.text) } =0x90909090 }
++
++
++File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS
++
++3.6.9 Overlay Description
++-------------------------
++
++An overlay description provides an easy way to describe sections which
++are to be loaded as part of a single memory image but are to be run at
++the same memory address. At run time, some sort of overlay manager will
++copy the overlaid sections in and out of the runtime memory address as
++required, perhaps by simply manipulating addressing bits. This approach
++can be useful, for example, when a certain region of memory is faster
++than another.
++
++ Overlays are described using the `OVERLAY' command. The `OVERLAY'
++command is used within a `SECTIONS' command, like an output section
++description. The full syntax of the `OVERLAY' command is as follows:
++ OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )]
++ {
++ SECNAME1
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [:PHDR...] [=FILL]
++ SECNAME2
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [:PHDR...] [=FILL]
++ ...
++ } [>REGION] [:PHDR...] [=FILL]
++
++ Everything is optional except `OVERLAY' (a keyword), and each
++section must have a name (SECNAME1 and SECNAME2 above). The section
++definitions within the `OVERLAY' construct are identical to those
++within the general `SECTIONS' contruct (*note SECTIONS::), except that
++no addresses and no memory regions may be defined for sections within
++an `OVERLAY'.
++
++ The sections are all defined with the same starting address. The
++load addresses of the sections are arranged such that they are
++consecutive in memory starting at the load address used for the
++`OVERLAY' as a whole (as with normal section definitions, the load
++address is optional, and defaults to the start address; the start
++address is also optional, and defaults to the current value of the
++location counter).
++
++ If the `NOCROSSREFS' keyword is used, and there any references among
++the sections, the linker will report an error. Since the sections all
++run at the same address, it normally does not make sense for one
++section to refer directly to another. *Note NOCROSSREFS: Miscellaneous
++Commands.
++
++ For each section within the `OVERLAY', the linker automatically
++defines two symbols. The symbol `__load_start_SECNAME' is defined as
++the starting load address of the section. The symbol
++`__load_stop_SECNAME' is defined as the final load address of the
++section. Any characters within SECNAME which are not legal within C
++identifiers are removed. C (or assembler) code may use these symbols
++to move the overlaid sections around as necessary.
++
++ At the end of the overlay, the value of the location counter is set
++to the start address of the overlay plus the size of the largest
++section.
++
++ Here is an example. Remember that this would appear inside a
++`SECTIONS' construct.
++ OVERLAY 0x1000 : AT (0x4000)
++ {
++ .text0 { o1/*.o(.text) }
++ .text1 { o2/*.o(.text) }
++ }
++This will define both `.text0' and `.text1' to start at address
++0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will
++be loaded immediately after `.text0'. The following symbols will be
++defined: `__load_start_text0', `__load_stop_text0',
++`__load_start_text1', `__load_stop_text1'.
++
++ C code to copy overlay `.text1' into the overlay area might look
++like the following.
++
++ extern char __load_start_text1, __load_stop_text1;
++ memcpy ((char *) 0x1000, &__load_start_text1,
++ &__load_stop_text1 - &__load_start_text1);
++
++ Note that the `OVERLAY' command is just syntactic sugar, since
++everything it does can be done using the more basic commands. The above
++example could have been written identically as follows.
++
++ .text0 0x1000 : AT (0x4000) { o1/*.o(.text) }
++ __load_start_text0 = LOADADDR (.text0);
++ __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0);
++ .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) }
++ __load_start_text1 = LOADADDR (.text1);
++ __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1);
++ . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));
++
++
++File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts
++
++3.7 MEMORY Command
++==================
++
++The linker's default configuration permits allocation of all available
++memory. You can override this by using the `MEMORY' command.
++
++ The `MEMORY' command describes the location and size of blocks of
++memory in the target. You can use it to describe which memory regions
++may be used by the linker, and which memory regions it must avoid. You
++can then assign sections to particular memory regions. The linker will
++set section addresses based on the memory regions, and will warn about
++regions that become too full. The linker will not shuffle sections
++around to fit into the available regions.
++
++ A linker script may contain at most one use of the `MEMORY' command.
++However, you can define as many blocks of memory within it as you
++wish. The syntax is:
++ MEMORY
++ {
++ NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN
++ ...
++ }
++
++ The NAME is a name used in the linker script to refer to the region.
++The region name has no meaning outside of the linker script. Region
++names are stored in a separate name space, and will not conflict with
++symbol names, file names, or section names. Each memory region must
++have a distinct name.
++
++ The ATTR string is an optional list of attributes that specify
++whether to use a particular memory region for an input section which is
++not explicitly mapped in the linker script. As described in *Note
++SECTIONS::, if you do not specify an output section for some input
++section, the linker will create an output section with the same name as
++the input section. If you define region attributes, the linker will use
++them to select the memory region for the output section that it creates.
++
++ The ATTR string must consist only of the following characters:
++`R'
++ Read-only section
++
++`W'
++ Read/write section
++
++`X'
++ Executable section
++
++`A'
++ Allocatable section
++
++`I'
++ Initialized section
++
++`L'
++ Same as `I'
++
++`!'
++ Invert the sense of any of the preceding attributes
++
++ If a unmapped section matches any of the listed attributes other than
++`!', it will be placed in the memory region. The `!' attribute
++reverses this test, so that an unmapped section will be placed in the
++memory region only if it does not match any of the listed attributes.
++
++ The ORIGIN is an numerical expression for the start address of the
++memory region. The expression must evaluate to a constant and it
++cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to
++`org' or `o' (but not, for example, `ORG').
++
++ The LEN is an expression for the size in bytes of the memory region.
++As with the ORIGIN expression, the expression must be numerical only
++and must evaluate to a constant. The keyword `LENGTH' may be
++abbreviated to `len' or `l'.
++
++ In the following example, we specify that there are two memory
++regions available for allocation: one starting at `0' for 256 kilobytes,
++and the other starting at `0x40000000' for four megabytes. The linker
++will place into the `rom' memory region every section which is not
++explicitly mapped into a memory region, and is either read-only or
++executable. The linker will place other sections which are not
++explicitly mapped into a memory region into the `ram' memory region.
++
++ MEMORY
++ {
++ rom (rx) : ORIGIN = 0, LENGTH = 256K
++ ram (!rx) : org = 0x40000000, l = 4M
++ }
++
++ Once you define a memory region, you can direct the linker to place
++specific output sections into that memory region by using the `>REGION'
++output section attribute. For example, if you have a memory region
++named `mem', you would use `>mem' in the output section definition.
++*Note Output Section Region::. If no address was specified for the
++output section, the linker will set the address to the next available
++address within the memory region. If the combined output sections
++directed to a memory region are too large for the region, the linker
++will issue an error message.
++
++ It is possible to access the origin and length of a memory in an
++expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions:
++
++ _fstack = ORIGIN(ram) + LENGTH(ram) - 4;
++
++
++File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts
++
++3.8 PHDRS Command
++=================
++
++The ELF object file format uses "program headers", also knows as
++"segments". The program headers describe how the program should be
++loaded into memory. You can print them out by using the `objdump'
++program with the `-p' option.
++
++ When you run an ELF program on a native ELF system, the system loader
++reads the program headers in order to figure out how to load the
++program. This will only work if the program headers are set correctly.
++This manual does not describe the details of how the system loader
++interprets program headers; for more information, see the ELF ABI.
++
++ The linker will create reasonable program headers by default.
++However, in some cases, you may need to specify the program headers more
++precisely. You may use the `PHDRS' command for this purpose. When the
++linker sees the `PHDRS' command in the linker script, it will not
++create any program headers other than the ones specified.
++
++ The linker only pays attention to the `PHDRS' command when
++generating an ELF output file. In other cases, the linker will simply
++ignore `PHDRS'.
++
++ This is the syntax of the `PHDRS' command. The words `PHDRS',
++`FILEHDR', `AT', and `FLAGS' are keywords.
++
++ PHDRS
++ {
++ NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ]
++ [ FLAGS ( FLAGS ) ] ;
++ }
++
++ The NAME is used only for reference in the `SECTIONS' command of the
++linker script. It is not put into the output file. Program header
++names are stored in a separate name space, and will not conflict with
++symbol names, file names, or section names. Each program header must
++have a distinct name.
++
++ Certain program header types describe segments of memory which the
++system loader will load from the file. In the linker script, you
++specify the contents of these segments by placing allocatable output
++sections in the segments. You use the `:PHDR' output section attribute
++to place a section in a particular segment. *Note Output Section
++Phdr::.
++
++ It is normal to put certain sections in more than one segment. This
++merely implies that one segment of memory contains another. You may
++repeat `:PHDR', using it once for each segment which should contain the
++section.
++
++ If you place a section in one or more segments using `:PHDR', then
++the linker will place all subsequent allocatable sections which do not
++specify `:PHDR' in the same segments. This is for convenience, since
++generally a whole set of contiguous sections will be placed in a single
++segment. You can use `:NONE' to override the default segment and tell
++the linker to not put the section in any segment at all.
++
++ You may use the `FILEHDR' and `PHDRS' keywords appear after the
++program header type to further describe the contents of the segment.
++The `FILEHDR' keyword means that the segment should include the ELF
++file header. The `PHDRS' keyword means that the segment should include
++the ELF program headers themselves.
++
++ The TYPE may be one of the following. The numbers indicate the
++value of the keyword.
++
++`PT_NULL' (0)
++ Indicates an unused program header.
++
++`PT_LOAD' (1)
++ Indicates that this program header describes a segment to be
++ loaded from the file.
++
++`PT_DYNAMIC' (2)
++ Indicates a segment where dynamic linking information can be found.
++
++`PT_INTERP' (3)
++ Indicates a segment where the name of the program interpreter may
++ be found.
++
++`PT_NOTE' (4)
++ Indicates a segment holding note information.
++
++`PT_SHLIB' (5)
++ A reserved program header type, defined but not specified by the
++ ELF ABI.
++
++`PT_PHDR' (6)
++ Indicates a segment where the program headers may be found.
++
++EXPRESSION
++ An expression giving the numeric type of the program header. This
++ may be used for types not defined above.
++
++ You can specify that a segment should be loaded at a particular
++address in memory by using an `AT' expression. This is identical to the
++`AT' command used as an output section attribute (*note Output Section
++LMA::). The `AT' command for a program header overrides the output
++section attribute.
++
++ The linker will normally set the segment flags based on the sections
++which comprise the segment. You may use the `FLAGS' keyword to
++explicitly specify the segment flags. The value of FLAGS must be an
++integer. It is used to set the `p_flags' field of the program header.
++
++ Here is an example of `PHDRS'. This shows a typical set of program
++headers used on a native ELF system.
++
++ PHDRS
++ {
++ headers PT_PHDR PHDRS ;
++ interp PT_INTERP ;
++ text PT_LOAD FILEHDR PHDRS ;
++ data PT_LOAD ;
++ dynamic PT_DYNAMIC ;
++ }
++
++ SECTIONS
++ {
++ . = SIZEOF_HEADERS;
++ .interp : { *(.interp) } :text :interp
++ .text : { *(.text) } :text
++ .rodata : { *(.rodata) } /* defaults to :text */
++ ...
++ . = . + 0x1000; /* move to a new page in memory */
++ .data : { *(.data) } :data
++ .dynamic : { *(.dynamic) } :data :dynamic
++ ...
++ }
++
++
++File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts
++
++3.9 VERSION Command
++===================
++
++The linker supports symbol versions when using ELF. Symbol versions are
++only useful when using shared libraries. The dynamic linker can use
++symbol versions to select a specific version of a function when it runs
++a program that may have been linked against an earlier version of the
++shared library.
++
++ You can include a version script directly in the main linker script,
++or you can supply the version script as an implicit linker script. You
++can also use the `--version-script' linker option.
++
++ The syntax of the `VERSION' command is simply
++ VERSION { version-script-commands }
++
++ The format of the version script commands is identical to that used
++by Sun's linker in Solaris 2.5. The version script defines a tree of
++version nodes. You specify the node names and interdependencies in the
++version script. You can specify which symbols are bound to which
++version nodes, and you can reduce a specified set of symbols to local
++scope so that they are not globally visible outside of the shared
++library.
++
++ The easiest way to demonstrate the version script language is with a
++few examples.
++
++ VERS_1.1 {
++ global:
++ foo1;
++ local:
++ old*;
++ original*;
++ new*;
++ };
++
++ VERS_1.2 {
++ foo2;
++ } VERS_1.1;
++
++ VERS_2.0 {
++ bar1; bar2;
++ extern "C++" {
++ ns::*;
++ "int f(int, double)";
++ }
++ } VERS_1.2;
++
++ This example version script defines three version nodes. The first
++version node defined is `VERS_1.1'; it has no other dependencies. The
++script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of
++symbols to local scope so that they are not visible outside of the
++shared library; this is done using wildcard patterns, so that any
++symbol whose name begins with `old', `original', or `new' is matched.
++The wildcard patterns available are the same as those used in the shell
++when matching filenames (also known as "globbing"). However, if you
++specify the symbol name inside double quotes, then the name is treated
++as literal, rather than as a glob pattern.
++
++ Next, the version script defines node `VERS_1.2'. This node depends
++upon `VERS_1.1'. The script binds the symbol `foo2' to the version
++node `VERS_1.2'.
++
++ Finally, the version script defines node `VERS_2.0'. This node
++depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and
++`bar2' are bound to the version node `VERS_2.0'.
++
++ When the linker finds a symbol defined in a library which is not
++specifically bound to a version node, it will effectively bind it to an
++unspecified base version of the library. You can bind all otherwise
++unspecified symbols to a given version node by using `global: *;'
++somewhere in the version script.
++
++ The names of the version nodes have no specific meaning other than
++what they might suggest to the person reading them. The `2.0' version
++could just as well have appeared in between `1.1' and `1.2'. However,
++this would be a confusing way to write a version script.
++
++ Node name can be omited, provided it is the only version node in the
++version script. Such version script doesn't assign any versions to
++symbols, only selects which symbols will be globally visible out and
++which won't.
++
++ { global: foo; bar; local: *; };
++
++ When you link an application against a shared library that has
++versioned symbols, the application itself knows which version of each
++symbol it requires, and it also knows which version nodes it needs from
++each shared library it is linked against. Thus at runtime, the dynamic
++loader can make a quick check to make sure that the libraries you have
++linked against do in fact supply all of the version nodes that the
++application will need to resolve all of the dynamic symbols. In this
++way it is possible for the dynamic linker to know with certainty that
++all external symbols that it needs will be resolvable without having to
++search for each symbol reference.
++
++ The symbol versioning is in effect a much more sophisticated way of
++doing minor version checking that SunOS does. The fundamental problem
++that is being addressed here is that typically references to external
++functions are bound on an as-needed basis, and are not all bound when
++the application starts up. If a shared library is out of date, a
++required interface may be missing; when the application tries to use
++that interface, it may suddenly and unexpectedly fail. With symbol
++versioning, the user will get a warning when they start their program if
++the libraries being used with the application are too old.
++
++ There are several GNU extensions to Sun's versioning approach. The
++first of these is the ability to bind a symbol to a version node in the
++source file where the symbol is defined instead of in the versioning
++script. This was done mainly to reduce the burden on the library
++maintainer. You can do this by putting something like:
++ __asm__(".symver original_foo,foo@VERS_1.1");
++ in the C source file. This renames the function `original_foo' to
++be an alias for `foo' bound to the version node `VERS_1.1'. The
++`local:' directive can be used to prevent the symbol `original_foo'
++from being exported. A `.symver' directive takes precedence over a
++version script.
++
++ The second GNU extension is to allow multiple versions of the same
++function to appear in a given shared library. In this way you can make
++an incompatible change to an interface without increasing the major
++version number of the shared library, while still allowing applications
++linked against the old interface to continue to function.
++
++ To do this, you must use multiple `.symver' directives in the source
++file. Here is an example:
++
++ __asm__(".symver original_foo,foo@");
++ __asm__(".symver old_foo,foo@VERS_1.1");
++ __asm__(".symver old_foo1,foo@VERS_1.2");
++ __asm__(".symver new_foo,foo@@VERS_2.0");
++
++ In this example, `foo@' represents the symbol `foo' bound to the
++unspecified base version of the symbol. The source file that contains
++this example would define 4 C functions: `original_foo', `old_foo',
++`old_foo1', and `new_foo'.
++
++ When you have multiple definitions of a given symbol, there needs to
++be some way to specify a default version to which external references to
++this symbol will be bound. You can do this with the `foo@@VERS_2.0'
++type of `.symver' directive. You can only declare one version of a
++symbol as the default in this manner; otherwise you would effectively
++have multiple definitions of the same symbol.
++
++ If you wish to bind a reference to a specific version of the symbol
++within the shared library, you can use the aliases of convenience
++(i.e., `old_foo'), or you can use the `.symver' directive to
++specifically bind to an external version of the function in question.
++
++ You can also specify the language in the version script:
++
++ VERSION extern "lang" { version-script-commands }
++
++ The supported `lang's are `C', `C++', and `Java'. The linker will
++iterate over the list of symbols at the link time and demangle them
++according to `lang' before matching them to the patterns specified in
++`version-script-commands'.
++
++ Demangled names may contains spaces and other special characters. As
++described above, you can use a glob pattern to match demangled names,
++or you can use a double-quoted string to match the string exactly. In
++the latter case, be aware that minor differences (such as differing
++whitespace) between the version script and the demangler output will
++cause a mismatch. As the exact string generated by the demangler might
++change in the future, even if the mangled name does not, you should
++check that all of your version directives are behaving as you expect
++when you upgrade.
++
++
++File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts
++
++3.10 Expressions in Linker Scripts
++==================================
++
++The syntax for expressions in the linker script language is identical to
++that of C expressions. All expressions are evaluated as integers. All
++expressions are evaluated in the same size, which is 32 bits if both the
++host and target are 32 bits, and is otherwise 64 bits.
++
++ You can use and set symbol values in expressions.
++
++ The linker defines several special purpose builtin functions for use
++in expressions.
++
++* Menu:
++
++* Constants:: Constants
++* Symbols:: Symbol Names
++* Orphan Sections:: Orphan Sections
++* Location Counter:: The Location Counter
++* Operators:: Operators
++* Evaluation:: Evaluation
++* Expression Section:: The Section of an Expression
++* Builtin Functions:: Builtin Functions
++
++
++File: ld.info, Node: Constants, Next: Symbols, Up: Expressions
++
++3.10.1 Constants
++----------------
++
++All constants are integers.
++
++ As in C, the linker considers an integer beginning with `0' to be
++octal, and an integer beginning with `0x' or `0X' to be hexadecimal.
++The linker considers other integers to be decimal.
++
++ In addition, you can use the suffixes `K' and `M' to scale a
++constant by `1024' or `1024*1024' respectively. For example, the
++following all refer to the same quantity:
++ _fourk_1 = 4K;
++ _fourk_2 = 4096;
++ _fourk_3 = 0x1000;
++
++
++File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Constants, Up: Expressions
++
++3.10.2 Symbol Names
++-------------------
++
++Unless quoted, symbol names start with a letter, underscore, or period
++and may include letters, digits, underscores, periods, and hyphens.
++Unquoted symbol names must not conflict with any keywords. You can
++specify a symbol which contains odd characters or has the same name as a
++keyword by surrounding the symbol name in double quotes:
++ "SECTION" = 9;
++ "with a space" = "also with a space" + 10;
++
++ Since symbols can contain many non-alphabetic characters, it is
++safest to delimit symbols with spaces. For example, `A-B' is one
++symbol, whereas `A - B' is an expression involving subtraction.
++
++
++File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions
++
++3.10.3 Orphan Sections
++----------------------
++
++Orphan sections are sections present in the input files which are not
++explicitly placed into the output file by the linker script. The
++linker will still copy these sections into the output file, but it has
++to guess as to where they should be placed. The linker uses a simple
++heuristic to do this. It attempts to place orphan sections after
++non-orphan sections of the same attribute, such as code vs data,
++loadable vs non-loadable, etc. If there is not enough room to do this
++then it places at the end of the file.
++
++ For ELF targets, the attribute of the section includes section type
++as well as section flag.
++
++
++File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions
++
++3.10.4 The Location Counter
++---------------------------
++
++The special linker variable "dot" `.' always contains the current
++output location counter. Since the `.' always refers to a location in
++an output section, it may only appear in an expression within a
++`SECTIONS' command. The `.' symbol may appear anywhere that an
++ordinary symbol is allowed in an expression.
++
++ Assigning a value to `.' will cause the location counter to be
++moved. This may be used to create holes in the output section. The
++location counter may never be moved backwards.
++
++ SECTIONS
++ {
++ output :
++ {
++ file1(.text)
++ . = . + 1000;
++ file2(.text)
++ . += 1000;
++ file3(.text)
++ } = 0x12345678;
++ }
++ In the previous example, the `.text' section from `file1' is located
++at the beginning of the output section `output'. It is followed by a
++1000 byte gap. Then the `.text' section from `file2' appears, also
++with a 1000 byte gap following before the `.text' section from `file3'.
++The notation `= 0x12345678' specifies what data to write in the gaps
++(*note Output Section Fill::).
++
++ Note: `.' actually refers to the byte offset from the start of the
++current containing object. Normally this is the `SECTIONS' statement,
++whose start address is 0, hence `.' can be used as an absolute address.
++If `.' is used inside a section description however, it refers to the
++byte offset from the start of that section, not an absolute address.
++Thus in a script like this:
++
++ SECTIONS
++ {
++ . = 0x100
++ .text: {
++ *(.text)
++ . = 0x200
++ }
++ . = 0x500
++ .data: {
++ *(.data)
++ . += 0x600
++ }
++ }
++
++ The `.text' section will be assigned a starting address of 0x100 and
++a size of exactly 0x200 bytes, even if there is not enough data in the
++`.text' input sections to fill this area. (If there is too much data,
++an error will be produced because this would be an attempt to move `.'
++backwards). The `.data' section will start at 0x500 and it will have
++an extra 0x600 bytes worth of space after the end of the values from
++the `.data' input sections and before the end of the `.data' output
++section itself.
++
++ Setting symbols to the value of the location counter outside of an
++output section statement can result in unexpected values if the linker
++needs to place orphan sections. For example, given the following:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ start_of_data = . ;
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ If the linker needs to place some input section, e.g. `.rodata', not
++mentioned in the script, it might choose to place that section between
++`.text' and `.data'. You might think the linker should place `.rodata'
++on the blank line in the above script, but blank lines are of no
++particular significance to the linker. As well, the linker doesn't
++associate the above symbol names with their sections. Instead, it
++assumes that all assignments or other statements belong to the previous
++output section, except for the special case of an assignment to `.'.
++I.e., the linker will place the orphan `.rodata' section as if the
++script was written as follows:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ start_of_data = . ;
++ .rodata: { *(.rodata) }
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ This may or may not be the script author's intention for the value of
++`start_of_data'. One way to influence the orphan section placement is
++to assign the location counter to itself, as the linker assumes that an
++assignment to `.' is setting the start address of a following output
++section and thus should be grouped with that section. So you could
++write:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ . = . ;
++ start_of_data = . ;
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ Now, the orphan `.rodata' section will be placed between
++`end_of_text' and `start_of_data'.
++
++
++File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions
++
++3.10.5 Operators
++----------------
++
++The linker recognizes the standard C set of arithmetic operators, with
++the standard bindings and precedence levels:
++ precedence associativity Operators Notes
++ (highest)
++ 1 left ! - ~ (1)
++ 2 left * / %
++ 3 left + -
++ 4 left >> <<
++ 5 left == != > < <= >=
++ 6 left &
++ 7 left |
++ 8 left &&
++ 9 left ||
++ 10 right ? :
++ 11 right &= += -= *= /= (2)
++ (lowest)
++ Notes: (1) Prefix operators (2) *Note Assignments::.
++
++
++File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions
++
++3.10.6 Evaluation
++-----------------
++
++The linker evaluates expressions lazily. It only computes the value of
++an expression when absolutely necessary.
++
++ The linker needs some information, such as the value of the start
++address of the first section, and the origins and lengths of memory
++regions, in order to do any linking at all. These values are computed
++as soon as possible when the linker reads in the linker script.
++
++ However, other values (such as symbol values) are not known or needed
++until after storage allocation. Such values are evaluated later, when
++other information (such as the sizes of output sections) is available
++for use in the symbol assignment expression.
++
++ The sizes of sections cannot be known until after allocation, so
++assignments dependent upon these are not performed until after
++allocation.
++
++ Some expressions, such as those depending upon the location counter
++`.', must be evaluated during section allocation.
++
++ If the result of an expression is required, but the value is not
++available, then an error results. For example, a script like the
++following
++ SECTIONS
++ {
++ .text 9+this_isnt_constant :
++ { *(.text) }
++ }
++will cause the error message `non constant expression for initial
++address'.
++
++
++File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions
++
++3.10.7 The Section of an Expression
++-----------------------------------
++
++When the linker evaluates an expression, the result is either absolute
++or relative to some section. A relative expression is expressed as a
++fixed offset from the base of a section.
++
++ The position of the expression within the linker script determines
++whether it is absolute or relative. An expression which appears within
++an output section definition is relative to the base of the output
++section. An expression which appears elsewhere will be absolute.
++
++ A symbol set to a relative expression will be relocatable if you
++request relocatable output using the `-r' option. That means that a
++further link operation may change the value of the symbol. The symbol's
++section will be the section of the relative expression.
++
++ A symbol set to an absolute expression will retain the same value
++through any further link operation. The symbol will be absolute, and
++will not have any particular associated section.
++
++ You can use the builtin function `ABSOLUTE' to force an expression
++to be absolute when it would otherwise be relative. For example, to
++create an absolute symbol set to the address of the end of the output
++section `.data':
++ SECTIONS
++ {
++ .data : { *(.data) _edata = ABSOLUTE(.); }
++ }
++ If `ABSOLUTE' were not used, `_edata' would be relative to the
++`.data' section.
++
++
++File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions
++
++3.10.8 Builtin Functions
++------------------------
++
++The linker script language includes a number of builtin functions for
++use in linker script expressions.
++
++`ABSOLUTE(EXP)'
++ Return the absolute (non-relocatable, as opposed to non-negative)
++ value of the expression EXP. Primarily useful to assign an
++ absolute value to a symbol within a section definition, where
++ symbol values are normally section relative. *Note Expression
++ Section::.
++
++`ADDR(SECTION)'
++ Return the absolute address (the VMA) of the named SECTION. Your
++ script must previously have defined the location of that section.
++ In the following example, `symbol_1' and `symbol_2' are assigned
++ identical values:
++ SECTIONS { ...
++ .output1 :
++ {
++ start_of_output_1 = ABSOLUTE(.);
++ ...
++ }
++ .output :
++ {
++ symbol_1 = ADDR(.output1);
++ symbol_2 = start_of_output_1;
++ }
++ ... }
++
++`ALIGN(ALIGN)'
++`ALIGN(EXP,ALIGN)'
++ Return the location counter (`.') or arbitrary expression aligned
++ to the next ALIGN boundary. The single operand `ALIGN' doesn't
++ change the value of the location counter--it just does arithmetic
++ on it. The two operand `ALIGN' allows an arbitrary expression to
++ be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(.,
++ ALIGN)').
++
++ Here is an example which aligns the output `.data' section to the
++ next `0x2000' byte boundary after the preceding section and sets a
++ variable within the section to the next `0x8000' boundary after the
++ input sections:
++ SECTIONS { ...
++ .data ALIGN(0x2000): {
++ *(.data)
++ variable = ALIGN(0x8000);
++ }
++ ... }
++ The first use of `ALIGN' in this example specifies the
++ location of a section because it is used as the optional ADDRESS
++ attribute of a section definition (*note Output Section
++ Address::). The second use of `ALIGN' is used to defines the
++ value of a symbol.
++
++ The builtin function `NEXT' is closely related to `ALIGN'.
++
++`BLOCK(EXP)'
++ This is a synonym for `ALIGN', for compatibility with older linker
++ scripts. It is most often seen when setting the address of an
++ output section.
++
++`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)'
++ This is equivalent to either
++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1)))
++ or
++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE)))
++ depending on whether the latter uses fewer COMMONPAGESIZE sized
++ pages for the data segment (area between the result of this
++ expression and `DATA_SEGMENT_END') than the former or not. If the
++ latter form is used, it means COMMONPAGESIZE bytes of runtime
++ memory will be saved at the expense of up to COMMONPAGESIZE wasted
++ bytes in the on-disk file.
++
++ This expression can only be used directly in `SECTIONS' commands,
++ not in any output section descriptions and only once in the linker
++ script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and
++ should be the system page size the object wants to be optimized
++ for (while still working on system page sizes up to MAXPAGESIZE).
++
++ Example:
++ . = DATA_SEGMENT_ALIGN(0x10000, 0x2000);
++
++`DATA_SEGMENT_END(EXP)'
++ This defines the end of data segment for `DATA_SEGMENT_ALIGN'
++ evaluation purposes.
++
++ . = DATA_SEGMENT_END(.);
++
++`DATA_SEGMENT_RELRO_END(OFFSET, EXP)'
++ This defines the end of the `PT_GNU_RELRO' segment when `-z relro'
++ option is used. Second argument is returned. When `-z relro'
++ option is not present, `DATA_SEGMENT_RELRO_END' does nothing,
++ otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is
++ aligned to the most commonly used page boundary for particular
++ target. If present in the linker script, it must always come in
++ between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'.
++
++ . = DATA_SEGMENT_RELRO_END(24, .);
++
++`DEFINED(SYMBOL)'
++ Return 1 if SYMBOL is in the linker global symbol table and is
++ defined before the statement using DEFINED in the script, otherwise
++ return 0. You can use this function to provide default values for
++ symbols. For example, the following script fragment shows how to
++ set a global symbol `begin' to the first location in the `.text'
++ section--but if a symbol called `begin' already existed, its value
++ is preserved:
++
++ SECTIONS { ...
++ .text : {
++ begin = DEFINED(begin) ? begin : . ;
++ ...
++ }
++ ...
++ }
++
++`LENGTH(MEMORY)'
++ Return the length of the memory region named MEMORY.
++
++`LOADADDR(SECTION)'
++ Return the absolute LMA of the named SECTION. This is normally
++ the same as `ADDR', but it may be different if the `AT' attribute
++ is used in the output section definition (*note Output Section
++ LMA::).
++
++`MAX(EXP1, EXP2)'
++ Returns the maximum of EXP1 and EXP2.
++
++`MIN(EXP1, EXP2)'
++ Returns the minimum of EXP1 and EXP2.
++
++`NEXT(EXP)'
++ Return the next unallocated address that is a multiple of EXP.
++ This function is closely related to `ALIGN(EXP)'; unless you use
++ the `MEMORY' command to define discontinuous memory for the output
++ file, the two functions are equivalent.
++
++`ORIGIN(MEMORY)'
++ Return the origin of the memory region named MEMORY.
++
++`SEGMENT_START(SEGMENT, DEFAULT)'
++ Return the base address of the named SEGMENT. If an explicit
++ value has been given for this segment (with a command-line `-T'
++ option) that value will be returned; otherwise the value will be
++ DEFAULT. At present, the `-T' command-line option can only be
++ used to set the base address for the "text", "data", and "bss"
++ sections, but you use `SEGMENT_START' with any segment name.
++
++`SIZEOF(SECTION)'
++ Return the size in bytes of the named SECTION, if that section has
++ been allocated. If the section has not been allocated when this is
++ evaluated, the linker will report an error. In the following
++ example, `symbol_1' and `symbol_2' are assigned identical values:
++ SECTIONS{ ...
++ .output {
++ .start = . ;
++ ...
++ .end = . ;
++ }
++ symbol_1 = .end - .start ;
++ symbol_2 = SIZEOF(.output);
++ ... }
++
++`SIZEOF_HEADERS'
++`sizeof_headers'
++ Return the size in bytes of the output file's headers. This is
++ information which appears at the start of the output file. You
++ can use this number when setting the start address of the first
++ section, if you choose, to facilitate paging.
++
++ When producing an ELF output file, if the linker script uses the
++ `SIZEOF_HEADERS' builtin function, the linker must compute the
++ number of program headers before it has determined all the section
++ addresses and sizes. If the linker later discovers that it needs
++ additional program headers, it will report an error `not enough
++ room for program headers'. To avoid this error, you must avoid
++ using the `SIZEOF_HEADERS' function, or you must rework your linker
++ script to avoid forcing the linker to use additional program
++ headers, or you must define the program headers yourself using the
++ `PHDRS' command (*note PHDRS::).
++
++
++File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts
++
++3.11 Implicit Linker Scripts
++============================
++
++If you specify a linker input file which the linker can not recognize as
++an object file or an archive file, it will try to read the file as a
++linker script. If the file can not be parsed as a linker script, the
++linker will report an error.
++
++ An implicit linker script will not replace the default linker script.
++
++ Typically an implicit linker script would contain only symbol
++assignments, or the `INPUT', `GROUP', or `VERSION' commands.
++
++ Any input files read because of an implicit linker script will be
++read at the position in the command line where the implicit linker
++script was read. This can affect archive searching.
++
++
++File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top
++
++4 Machine Dependent Features
++****************************
++
++`ld' has additional features on some platforms; the following sections
++describe them. Machines where `ld' has no additional functionality are
++not listed.
++
++* Menu:
++
++
++* H8/300:: `ld' and the H8/300
++
++* i960:: `ld' and the Intel 960 family
++
++* ARM:: `ld' and the ARM family
++
++* HPPA ELF32:: `ld' and HPPA 32-bit ELF
++
++* MMIX:: `ld' and MMIX
++
++* MSP430:: `ld' and MSP430
++
++* PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support
++
++* PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support
++
++* TI COFF:: `ld' and TI COFF
++
++* WIN32:: `ld' and WIN32 (cygwin/mingw)
++
++* Xtensa:: `ld' and Xtensa Processors
++
++
++File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent
++
++4.1 `ld' and the H8/300
++=======================
++
++For the H8/300, `ld' can perform these global optimizations when you
++specify the `--relax' command-line option.
++
++_relaxing address modes_
++ `ld' finds all `jsr' and `jmp' instructions whose targets are
++ within eight bits, and turns them into eight-bit program-counter
++ relative `bsr' and `bra' instructions, respectively.
++
++_synthesizing instructions_
++ `ld' finds all `mov.b' instructions which use the sixteen-bit
++ absolute address form, but refer to the top page of memory, and
++ changes them to use the eight-bit address form. (That is: the
++ linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the
++ address AA is in the top page of memory).
++
++_bit manipulation instructions_
++ `ld' finds all bit manipulation instructions like `band, bclr,
++ biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst,
++ bxor' which use 32 bit and 16 bit absolute address form, but refer
++ to the top page of memory, and changes them to use the 8 bit
++ address form. (That is: the linker turns `bset #xx:3,`@'AA:32'
++ into `bset #xx:3,`@'AA:8' whenever the address AA is in the top
++ page of memory).
++
++_system control instructions_
++ `ld' finds all `ldc.w, stc.w' instrcutions which use the 32 bit
++ absolute address form, but refer to the top page of memory, and
++ changes them to use 16 bit address form. (That is: the linker
++ turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the
++ address AA is in the top page of memory).
++
++
++File: ld.info, Node: i960, Next: ARM, Prev: H8/300, Up: Machine Dependent
++
++4.2 `ld' and the Intel 960 Family
++=================================
++
++You can use the `-AARCHITECTURE' command line option to specify one of
++the two-letter names identifying members of the 960 family; the option
++specifies the desired output target, and warns of any incompatible
++instructions in the input files. It also modifies the linker's search
++strategy for archive libraries, to support the use of libraries
++specific to each particular architecture, by including in the search
++loop names suffixed with the string identifying the architecture.
++
++ For example, if your `ld' command line included `-ACA' as well as
++`-ltry', the linker would look (in its built-in search paths, and in
++any paths you specify with `-L') for a library with the names
++
++ try
++ libtry.a
++ tryca
++ libtryca.a
++
++The first two possibilities would be considered in any event; the last
++two are due to the use of `-ACA'.
++
++ You can meaningfully use `-A' more than once on a command line, since
++the 960 architecture family allows combination of target architectures;
++each use will add another pair of name variants to search for when `-l'
++specifies a library.
++
++ `ld' supports the `--relax' option for the i960 family. If you
++specify `--relax', `ld' finds all `balx' and `calx' instructions whose
++targets are within 24 bits, and turns them into 24-bit program-counter
++relative `bal' and `cal' instructions, respectively. `ld' also turns
++`cal' instructions into `bal' instructions when it determines that the
++target subroutine is a leaf routine (that is, the target subroutine does
++not itself call any subroutines).
++
++
++File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
++
++4.3 `ld' and the ARM family
++===========================
++
++For the ARM, `ld' will generate code stubs to allow functions calls
++betweem ARM and Thumb code. These stubs only work with code that has
++been compiled and assembled with the `-mthumb-interwork' command line
++option. If it is necessary to link with old ARM object files or
++libraries, which have not been compiled with the -mthumb-interwork
++option then the `--support-old-code' command line switch should be
++given to the linker. This will make it generate larger stub functions
++which will work with non-interworking aware ARM code. Note, however,
++the linker does not support generating stubs for function calls to
++non-interworking aware Thumb code.
++
++ The `--thumb-entry' switch is a duplicate of the generic `--entry'
++switch, in that it sets the program's starting address. But it also
++sets the bottom bit of the address, so that it can be branched to using
++a BX instruction, and the program will start executing in Thumb mode
++straight away.
++
++ The `--be8' switch instructs `ld' to generate BE8 format
++executables. This option is only valid when linking big-endian objects.
++The resulting image will contain big-endian data and little-endian code.
++
++ The `R_ARM_TARGET1' relocation is typically used for entries in the
++`.init_array' section. It is interpreted as either `R_ARM_REL32' or
++`R_ARM_ABS32', depending on the target. The `--target1-rel' and
++`--target1-abs' switches override the default.
++
++ The `--target2=type' switch overrides the default definition of the
++`R_ARM_TARGET2' relocation. Valid values for `type', their meanings,
++and target defaults are as follows:
++`rel'
++ `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi)
++
++`abs'
++ `R_ARM_ABS32' (arm*-*-symbianelf)
++
++`got-rel'
++ `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd)
++
++ The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification)
++enables objects compiled for the ARMv4 architecture to be
++interworking-safe when linked with other objects compiled for ARMv4t,
++but also allows pure ARMv4 binaries to be built from the same ARMv4
++objects.
++
++ In the latter case, the switch `--fix-v4bx' must be passed to the
++linker, which causes v4t `BX rM' instructions to be rewritten as `MOV
++PC,rM', since v4 processors do not have a `BX' instruction.
++
++ In the former case, the switch should not be used, and `R_ARM_V4BX'
++relocations are ignored.
++
++ The `--use-blx' switch enables the linker to use ARM/Thumb BLX
++instructions (available on ARMv5t and above) in various situations.
++Currently it is used to perform calls via the PLT from Thumb code using
++BLX rather than using BX and a mode-switching stub before each PLT
++entry. This should lead to such calls executing slightly faster.
++
++ This option is enabled implicitly for SymbianOS, so there is no need
++to specify it if you are using that target.
++
++
++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
++
++4.4 `ld' and HPPA 32-bit ELF Support
++====================================
++
++When generating a shared library, `ld' will by default generate import
++stubs suitable for use with a single sub-space application. The
++`--multi-subspace' switch causes `ld' to generate export stubs, and
++different (larger) import stubs suitable for use with multiple
++sub-spaces.
++
++ Long branch stubs and import/export stubs are placed by `ld' in stub
++sections located between groups of input sections. `--stub-group-size'
++specifies the maximum size of a group of input sections handled by one
++stub section. Since branch offsets are signed, a stub section may
++serve two groups of input sections, one group before the stub section,
++and one group after it. However, when using conditional branches that
++require stubs, it may be better (for branch prediction) that stub
++sections only serve one group of input sections. A negative value for
++`N' chooses this scheme, ensuring that branches to stubs always use a
++negative offset. Two special values of `N' are recognized, `1' and
++`-1'. These both instruct `ld' to automatically size input section
++groups for the branch types detected, with the same behaviour regarding
++stub placement as other positive or negative values of `N' respectively.
++
++ Note that `--stub-group-size' does not split input sections. A
++single input section larger than the group size specified will of course
++create a larger group (of one section). If input sections are too
++large, it may not be possible for a branch to reach its stub.
++
++
++File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent
++
++4.5 `ld' and MMIX
++=================
++
++For MMIX, there is a choice of generating `ELF' object files or `mmo'
++object files when linking. The simulator `mmix' understands the `mmo'
++format. The binutils `objcopy' utility can translate between the two
++formats.
++
++ There is one special section, the `.MMIX.reg_contents' section.
++Contents in this section is assumed to correspond to that of global
++registers, and symbols referring to it are translated to special
++symbols, equal to registers. In a final link, the start address of the
++`.MMIX.reg_contents' section corresponds to the first allocated global
++register multiplied by 8. Register `$255' is not included in this
++section; it is always set to the program entry, which is at the symbol
++`Main' for `mmo' files.
++
++ Symbols with the prefix `__.MMIX.start.', for example
++`__.MMIX.start..text' and `__.MMIX.start..data' are special; there must
++be only one each, even if they are local. The default linker script
++uses these to set the default start address of a section.
++
++ Initial and trailing multiples of zero-valued 32-bit words in a
++section, are left out from an mmo file.
++
++
++File: ld.info, Node: MSP430, Next: PowerPC ELF32, Prev: MMIX, Up: Machine Dependent
++
++4.6 `ld' and MSP430
++===================
++
++For the MSP430 it is possible to select the MPU architecture. The flag
++`-m [mpu type]' will select an appropriate linker script for selected
++MPU type. (To get a list of known MPUs just pass `-m help' option to
++the linker).
++
++ The linker will recognize some extra sections which are MSP430
++specific:
++
++``.vectors''
++ Defines a portion of ROM where interrupt vectors located.
++
++``.bootloader''
++ Defines the bootloader portion of the ROM (if applicable). Any
++ code in this section will be uploaded to the MPU.
++
++``.infomem''
++ Defines an information memory section (if applicable). Any code in
++ this section will be uploaded to the MPU.
++
++``.infomemnobits''
++ This is the same as the `.infomem' section except that any code in
++ this section will not be uploaded to the MPU.
++
++``.noinit''
++ Denotes a portion of RAM located above `.bss' section.
++
++ The last two sections are used by gcc.
++
++
++File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent
++
++4.7 `ld' and PowerPC 32-bit ELF Support
++=======================================
++
++Branches on PowerPC processors are limited to a signed 26-bit
++displacement, which may result in `ld' giving `relocation truncated to
++fit' errors with very large programs. `--relax' enables the generation
++of trampolines that can access the entire 32-bit address space. These
++trampolines are inserted at section boundaries, so may not themselves
++be reachable if an input section exceeds 33M in size.
++
++`--bss-plt'
++ Current PowerPC GCC accepts a `-msecure-plt' option that generates
++ code capable of using a newer PLT and GOT layout that has the
++ security advantage of no executable section ever needing to be
++ writable and no writable section ever being executable. PowerPC
++ `ld' will generate this layout, including stubs to access the PLT,
++ if all input files (including startup and static libraries) were
++ compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT
++ (and GOT layout) which can give slightly better performance.
++
++`--sdata-got'
++ The new secure PLT and GOT are placed differently relative to other
++ sections compared to older BSS PLT and GOT placement. The
++ location of `.plt' must change because the new secure PLT is an
++ initialized section while the old PLT is uninitialized. The
++ reason for the `.got' change is more subtle: The new placement
++ allows `.got' to be read-only in applications linked with `-z
++ relro -z now'. However, this placement means that `.sdata' cannot
++ always be used in shared libraries, because the PowerPC ABI
++ accesses `.sdata' in shared libraries from the GOT pointer.
++ `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't
++ use `.sdata' in shared libraries, so this option is really only
++ useful for other compilers that may do so.
++
++`--emit-stub-syms'
++ This option causes `ld' to label linker stubs with a local symbol
++ that encodes the stub type and destination.
++
++`--no-tls-optimize'
++ PowerPC `ld' normally performs some optimization of code sequences
++ used to access Thread-Local Storage. Use this option to disable
++ the optimization.
++
++
++File: ld.info, Node: PowerPC64 ELF64, Next: TI COFF, Prev: PowerPC ELF32, Up: Machine Dependent
++
++4.8 `ld' and PowerPC64 64-bit ELF Support
++=========================================
++
++`--stub-group-size'
++ Long branch stubs, PLT call stubs and TOC adjusting stubs are
++ placed by `ld' in stub sections located between groups of input
++ sections. `--stub-group-size' specifies the maximum size of a
++ group of input sections handled by one stub section. Since branch
++ offsets are signed, a stub section may serve two groups of input
++ sections, one group before the stub section, and one group after
++ it. However, when using conditional branches that require stubs,
++ it may be better (for branch prediction) that stub sections only
++ serve one group of input sections. A negative value for `N'
++ chooses this scheme, ensuring that branches to stubs always use a
++ negative offset. Two special values of `N' are recognized, `1'
++ and `-1'. These both instruct `ld' to automatically size input
++ section groups for the branch types detected, with the same
++ behaviour regarding stub placement as other positive or negative
++ values of `N' respectively.
++
++ Note that `--stub-group-size' does not split input sections. A
++ single input section larger than the group size specified will of
++ course create a larger group (of one section). If input sections
++ are too large, it may not be possible for a branch to reach its
++ stub.
++
++`--emit-stub-syms'
++ This option causes `ld' to label linker stubs with a local symbol
++ that encodes the stub type and destination.
++
++`--dotsyms, --no-dotsyms'
++ These two options control how `ld' interprets version patterns in
++ a version script. Older PowerPC64 compilers emitted both a
++ function descriptor symbol with the same name as the function, and
++ a code entry symbol with the name prefixed by a dot (`.'). To
++ properly version a function `foo', the version script thus needs
++ to control both `foo' and `.foo'. The option `--dotsyms', on by
++ default, automatically adds the required dot-prefixed patterns.
++ Use `--no-dotsyms' to disable this feature.
++
++`--no-tls-optimize'
++ PowerPC64 `ld' normally performs some optimization of code
++ sequences used to access Thread-Local Storage. Use this option to
++ disable the optimization.
++
++`--no-opd-optimize'
++ PowerPC64 `ld' normally removes `.opd' section entries
++ corresponding to deleted link-once functions, or functions removed
++ by the action of `--gc-sections' or linker scrip `/DISCARD/'. Use
++ this option to disable `.opd' optimization.
++
++`--non-overlapping-opd'
++ Some PowerPC64 compilers have an option to generate compressed
++ `.opd' entries spaced 16 bytes apart, overlapping the third word,
++ the static chain pointer (unused in C) with the first word of the
++ next entry. This option expands such entries to the full 24 bytes.
++
++`--no-toc-optimize'
++ PowerPC64 `ld' normally removes unused `.toc' section entries.
++ Such entries are detected by examining relocations that reference
++ the TOC in code sections. A reloc in a deleted code section marks
++ a TOC word as unneeded, while a reloc in a kept code section marks
++ a TOC word as needed. Since the TOC may reference itself, TOC
++ relocs are also examined. TOC words marked as both needed and
++ unneeded will of course be kept. TOC words without any referencing
++ reloc are assumed to be part of a multi-word entry, and are kept or
++ discarded as per the nearest marked preceding word. This works
++ reliably for compiler generated code, but may be incorrect if
++ assembly code is used to insert TOC entries. Use this option to
++ disable the optimization.
++
++`--no-multi-toc'
++ By default, PowerPC64 GCC generates code for a TOC model where TOC
++ entries are accessed with a 16-bit offset from r2. This limits the
++ total TOC size to 64K. PowerPC64 `ld' extends this limit by
++ grouping code sections such that each group uses less than 64K for
++ its TOC entries, then inserts r2 adjusting stubs between
++ inter-group calls. `ld' does not split apart input sections, so
++ cannot help if a single input file has a `.toc' section that
++ exceeds 64K, most likely from linking multiple files with `ld -r'.
++ Use this option to turn off this feature.
++
++
++File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent
++
++4.9 `ld''s Support for Various TI COFF Versions
++===============================================
++
++The `--format' switch allows selection of one of the various TI COFF
++versions. The latest of this writing is 2; versions 0 and 1 are also
++supported. The TI COFF versions also vary in header byte-order format;
++`ld' will read any version or byte order, but the output header format
++depends on the default specified by the specific target.
++
++
++File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent
++
++4.10 `ld' and WIN32 (cygwin/mingw)
++==================================
++
++This section describes some of the win32 specific `ld' issues. See
++*Note Command Line Options: Options. for detailed decription of the
++command line options mentioned here.
++
++_import libraries_
++ The standard Windows linker creates and uses so-called import
++ libraries, which contains information for linking to dll's. They
++ are regular static archives and are handled as any other static
++ archive. The cygwin and mingw ports of `ld' have specific support
++ for creating such libraries provided with the `--out-implib'
++ command line option.
++
++_exporting DLL symbols_
++ The cygwin/mingw `ld' has several ways to export symbols for dll's.
++
++ _using auto-export functionality_
++ By default `ld' exports symbols with the auto-export
++ functionality, which is controlled by the following command
++ line options:
++
++ * -export-all-symbols [This is the default]
++
++ * -exclude-symbols
++
++ * -exclude-libs
++
++ If, however, `--export-all-symbols' is not given explicitly
++ on the command line, then the default auto-export behavior
++ will be _disabled_ if either of the following are true:
++
++ * A DEF file is used.
++
++ * Any symbol in any object file was marked with the
++ __declspec(dllexport) attribute.
++
++ _using a DEF file_
++ Another way of exporting symbols is using a DEF file. A DEF
++ file is an ASCII file containing definitions of symbols which
++ should be exported when a dll is created. Usually it is
++ named `<dll name>.def' and is added as any other object file
++ to the linker's command line. The file's name must end in
++ `.def' or `.DEF'.
++
++ gcc -o <output> <objectfiles> <dll name>.def
++
++ Using a DEF file turns off the normal auto-export behavior,
++ unless the `--export-all-symbols' option is also used.
++
++ Here is an example of a DEF file for a shared library called
++ `xyz.dll':
++
++ LIBRARY "xyz.dll" BASE=0x20000000
++
++ EXPORTS
++ foo
++ bar
++ _bar = bar
++ another_foo = abc.dll.afoo
++ var1 DATA
++
++ This example defines a DLL with a non-default base address
++ and five symbols in the export table. The third exported
++ symbol `_bar' is an alias for the second. The fourth symbol,
++ `another_foo' is resolved by "forwarding" to another module
++ and treating it as an alias for `afoo' exported from the DLL
++ `abc.dll'. The final symbol `var1' is declared to be a data
++ object.
++
++ The optional `LIBRARY <name>' command indicates the _internal_
++ name of the output DLL. If `<name>' does not include a suffix,
++ the default library suffix, `.DLL' is appended.
++
++ When the .DEF file is used to build an application. rather
++ than a library, the `NAME <name>' command shoud be used
++ instead of `LIBRARY'. If `<name>' does not include a suffix,
++ the default executable suffix, `.EXE' is appended.
++
++ With either `LIBRARY <name>' or `NAME <name>' the optional
++ specification `BASE = <number>' may be used to specify a
++ non-default base address for the image.
++
++ If neither `LIBRARY <name>' nor `NAME <name>' is specified,
++ or they specify an empty string, the internal name is the
++ same as the filename specified on the command line.
++
++ The complete specification of an export symbol is:
++
++ EXPORTS
++ ( ( ( <name1> [ = <name2> ] )
++ | ( <name1> = <module-name> . <external-name>))
++ [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) *
++
++ Declares `<name1>' as an exported symbol from the DLL, or
++ declares `<name1>' as an exported alias for `<name2>'; or
++ declares `<name1>' as a "forward" alias for the symbol
++ `<external-name>' in the DLL `<module-name>'. Optionally,
++ the symbol may be exported by the specified ordinal
++ `<integer>' alias.
++
++ The optional keywords that follow the declaration indicate:
++
++ `NONAME': Do not put the symbol name in the DLL's export
++ table. It will still be exported by its ordinal alias
++ (either the value specified by the .def specification or,
++ otherwise, the value assigned by the linker). The symbol
++ name, however, does remain visible in the import library (if
++ any), unless `PRIVATE' is also specified.
++
++ `DATA': The symbol is a variable or object, rather than a
++ function. The import lib will export only an indirect
++ reference to `foo' as the symbol `_imp__foo' (ie, `foo' must
++ be resolved as `*_imp__foo').
++
++ `CONSTANT': Like `DATA', but put the undecorated `foo' as
++ well as `_imp__foo' into the import library. Both refer to the
++ read-only import address table's pointer to the variable, not
++ to the variable itself. This can be dangerous. If the user
++ code fails to add the `dllimport' attribute and also fails to
++ explicitly add the extra indirection that the use of the
++ attribute enforces, the application will behave unexpectedly.
++
++ `PRIVATE': Put the symbol in the DLL's export table, but do
++ not put it into the static import library used to resolve
++ imports at link time. The symbol can still be imported using
++ the `LoadLibrary/GetProcAddress' API at runtime or by by
++ using the GNU ld extension of linking directly to the DLL
++ without an import library.
++
++ See ld/deffilep.y in the binutils sources for the full
++ specification of other DEF file statements
++
++ While linking a shared dll, `ld' is able to create a DEF file
++ with the `--output-def <file>' command line option.
++
++ _Using decorations_
++ Another way of marking symbols for export is to modify the
++ source code itself, so that when building the DLL each symbol
++ to be exported is declared as:
++
++ __declspec(dllexport) int a_variable
++ __declspec(dllexport) void a_function(int with_args)
++
++ All such symbols will be exported from the DLL. If, however,
++ any of the object files in the DLL contain symbols decorated
++ in this way, then the normal auto-export behavior is
++ disabled, unless the `--export-all-symbols' option is also
++ used.
++
++ Note that object files that wish to access these symbols must
++ _not_ decorate them with dllexport. Instead, they should use
++ dllimport, instead:
++
++ __declspec(dllimport) int a_variable
++ __declspec(dllimport) void a_function(int with_args)
++
++ This complicates the structure of library header files,
++ because when included by the library itself the header must
++ declare the variables and functions as dllexport, but when
++ included by client code the header must declare them as
++ dllimport. There are a number of idioms that are typically
++ used to do this; often client code can omit the __declspec()
++ declaration completely. See `--enable-auto-import' and
++ `automatic data imports' for more imformation.
++
++_automatic data imports_
++ The standard Windows dll format supports data imports from dlls
++ only by adding special decorations (dllimport/dllexport), which
++ let the compiler produce specific assembler instructions to deal
++ with this issue. This increases the effort necessary to port
++ existing Un*x code to these platforms, especially for large c++
++ libraries and applications. The auto-import feature, which was
++ initially provided by Paul Sokolovsky, allows one to omit the
++ decorations to archieve a behavior that conforms to that on
++ POSIX/Un*x platforms. This feature is enabled with the
++ `--enable-auto-import' command-line option, although it is enabled
++ by default on cygwin/mingw. The `--enable-auto-import' option
++ itself now serves mainly to suppress any warnings that are
++ ordinarily emitted when linked objects trigger the feature's use.
++
++ auto-import of variables does not always work flawlessly without
++ additional assistance. Sometimes, you will see this message
++
++ "variable '<var>' can't be auto-imported. Please read the
++ documentation for ld's `--enable-auto-import' for details."
++
++ The `--enable-auto-import' documentation explains why this error
++ occurs, and several methods that can be used to overcome this
++ difficulty. One of these methods is the _runtime pseudo-relocs_
++ feature, described below.
++
++ For complex variables imported from DLLs (such as structs or
++ classes), object files typically contain a base address for the
++ variable and an offset (_addend_) within the variable-to specify a
++ particular field or public member, for instance. Unfortunately,
++ the runtime loader used in win32 environments is incapable of
++ fixing these references at runtime without the additional
++ information supplied by dllimport/dllexport decorations. The
++ standard auto-import feature described above is unable to resolve
++ these references.
++
++ The `--enable-runtime-pseudo-relocs' switch allows these
++ references to be resolved without error, while leaving the task of
++ adjusting the references themselves (with their non-zero addends)
++ to specialized code provided by the runtime environment. Recent
++ versions of the cygwin and mingw environments and compilers
++ provide this runtime support; older versions do not. However, the
++ support is only necessary on the developer's platform; the
++ compiled result will run without error on an older system.
++
++ `--enable-runtime-pseudo-relocs' is not the default; it must be
++ explicitly enabled as needed.
++
++_direct linking to a dll_
++ The cygwin/mingw ports of `ld' support the direct linking,
++ including data symbols, to a dll without the usage of any import
++ libraries. This is much faster and uses much less memory than
++ does the traditional import library method, expecially when
++ linking large libraries or applications. When `ld' creates an
++ import lib, each function or variable exported from the dll is
++ stored in its own bfd, even though a single bfd could contain many
++ exports. The overhead involved in storing, loading, and
++ processing so many bfd's is quite large, and explains the
++ tremendous time, memory, and storage needed to link against
++ particularly large or complex libraries when using import libs.
++
++ Linking directly to a dll uses no extra command-line switches
++ other than `-L' and `-l', because `ld' already searches for a
++ number of names to match each library. All that is needed from
++ the developer's perspective is an understanding of this search, in
++ order to force ld to select the dll instead of an import library.
++
++ For instance, when ld is called with the argument `-lxxx' it will
++ attempt to find, in the first directory of its search path,
++
++ libxxx.dll.a
++ xxx.dll.a
++ libxxx.a
++ cygxxx.dll (*)
++ libxxx.dll
++ xxx.dll
++
++ before moving on to the next directory in the search path.
++
++ (*) Actually, this is not `cygxxx.dll' but in fact is
++ `<prefix>xxx.dll', where `<prefix>' is set by the `ld' option
++ `--dll-search-prefix=<prefix>'. In the case of cygwin, the
++ standard gcc spec file includes `--dll-search-prefix=cyg', so in
++ effect we actually search for `cygxxx.dll'.
++
++ Other win32-based unix environments, such as mingw or pw32, may
++ use other `<prefix>'es, although at present only cygwin makes use
++ of this feature. It was originally intended to help avoid name
++ conflicts among dll's built for the various win32/un*x
++ environments, so that (for example) two versions of a zlib dll
++ could coexist on the same machine.
++
++ The generic cygwin/mingw path layout uses a `bin' directory for
++ applications and dll's and a `lib' directory for the import
++ libraries (using cygwin nomenclature):
++
++ bin/
++ cygxxx.dll
++ lib/
++ libxxx.dll.a (in case of dll's)
++ libxxx.a (in case of static archive)
++
++ Linking directly to a dll without using the import library can be
++ done two ways:
++
++ 1. Use the dll directly by adding the `bin' path to the link line
++ gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx
++
++ However, as the dll's often have version numbers appended to their
++ names (`cygncurses-5.dll') this will often fail, unless one
++ specifies `-L../bin -lncurses-5' to include the version. Import
++ libs are generally not versioned, and do not have this difficulty.
++
++ 2. Create a symbolic link from the dll to a file in the `lib'
++ directory according to the above mentioned search pattern. This
++ should be used to avoid unwanted changes in the tools needed for
++ making the app/dll.
++
++ ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a]
++
++ Then you can link without any make environment changes.
++
++ gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx
++
++ This technique also avoids the version number problems, because
++ the following is perfectly legal
++
++ bin/
++ cygxxx-5.dll
++ lib/
++ libxxx.dll.a -> ../bin/cygxxx-5.dll
++
++ Linking directly to a dll without using an import lib will work
++ even when auto-import features are exercised, and even when
++ `--enable-runtime-pseudo-relocs' is used.
++
++ Given the improvements in speed and memory usage, one might
++ justifiably wonder why import libraries are used at all. There
++ are two reasons:
++
++ 1. Until recently, the link-directly-to-dll functionality did _not_
++ work with auto-imported data.
++
++ 2. Sometimes it is necessary to include pure static objects within
++ the import library (which otherwise contains only bfd's for
++ indirection symbols that point to the exports of a dll). Again,
++ the import lib for the cygwin kernel makes use of this ability,
++ and it is not possible to do this without an import lib.
++
++ So, import libs are not going away. But the ability to replace
++ true import libs with a simple symbolic link to (or a copy of) a
++ dll, in most cases, is a useful addition to the suite of tools
++ binutils makes available to the win32 developer. Given the
++ massive improvements in memory requirements during linking, storage
++ requirements, and linking speed, we expect that many developers
++ will soon begin to use this feature whenever possible.
++
++_symbol aliasing_
++
++ _adding additional names_
++ Sometimes, it is useful to export symbols with additional
++ names. A symbol `foo' will be exported as `foo', but it can
++ also be exported as `_foo' by using special directives in the
++ DEF file when creating the dll. This will affect also the
++ optional created import library. Consider the following DEF
++ file:
++
++ LIBRARY "xyz.dll" BASE=0x61000000
++
++ EXPORTS
++ foo
++ _foo = foo
++
++ The line `_foo = foo' maps the symbol `foo' to `_foo'.
++
++ Another method for creating a symbol alias is to create it in
++ the source code using the "weak" attribute:
++
++ void foo () { /* Do something. */; }
++ void _foo () __attribute__ ((weak, alias ("foo")));
++
++ See the gcc manual for more information about attributes and
++ weak symbols.
++
++ _renaming symbols_
++ Sometimes it is useful to rename exports. For instance, the
++ cygwin kernel does this regularly. A symbol `_foo' can be
++ exported as `foo' but not as `_foo' by using special
++ directives in the DEF file. (This will also affect the import
++ library, if it is created). In the following example:
++
++ LIBRARY "xyz.dll" BASE=0x61000000
++
++ EXPORTS
++ _foo = foo
++
++ The line `_foo = foo' maps the exported symbol `foo' to
++ `_foo'.
++
++ Note: using a DEF file disables the default auto-export behavior,
++ unless the `--export-all-symbols' command line option is used.
++ If, however, you are trying to rename symbols, then you should list
++ _all_ desired exports in the DEF file, including the symbols that
++ are not being renamed, and do _not_ use the `--export-all-symbols'
++ option. If you list only the renamed symbols in the DEF file, and
++ use `--export-all-symbols' to handle the other symbols, then the
++ both the new names _and_ the original names for the renamed
++ symbols will be exported. In effect, you'd be aliasing those
++ symbols, not renaming them, which is probably not what you wanted.
++
++_weak externals_
++ The Windows object format, PE, specifies a form of weak symbols
++ called weak externals. When a weak symbol is linked and the
++ symbol is not defined, the weak symbol becomes an alias for some
++ other symbol. There are three variants of weak externals:
++ * Definition is searched for in objects and libraries,
++ historically called lazy externals.
++
++ * Definition is searched for only in other objects, not in
++ libraries. This form is not presently implemented.
++
++ * No search; the symbol is an alias. This form is not presently
++ implemented.
++ As a GNU extension, weak symbols that do not specify an alternate
++ symbol are supported. If the symbol is undefined when linking,
++ the symbol uses a default value.
++
++
++File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent
++
++4.11 `ld' and Xtensa Processors
++===============================
++
++The default `ld' behavior for Xtensa processors is to interpret
++`SECTIONS' commands so that lists of explicitly named sections in a
++specification with a wildcard file will be interleaved when necessary to
++keep literal pools within the range of PC-relative load offsets. For
++example, with the command:
++
++ SECTIONS
++ {
++ .text : {
++ *(.literal .text)
++ }
++ }
++
++`ld' may interleave some of the `.literal' and `.text' sections from
++different object files to ensure that the literal pools are within the
++range of PC-relative load offsets. A valid interleaving might place
++the `.literal' sections from an initial group of files followed by the
++`.text' sections of that group of files. Then, the `.literal' sections
++from the rest of the files and the `.text' sections from the rest of
++the files would follow.
++
++ Relaxation is enabled by default for the Xtensa version of `ld' and
++provides two important link-time optimizations. The first optimization
++is to combine identical literal values to reduce code size. A redundant
++literal will be removed and all the `L32R' instructions that use it
++will be changed to reference an identical literal, as long as the
++location of the replacement literal is within the offset range of all
++the `L32R' instructions. The second optimization is to remove
++unnecessary overhead from assembler-generated "longcall" sequences of
++`L32R'/`CALLXN' when the target functions are within range of direct
++`CALLN' instructions.
++
++ For each of these cases where an indirect call sequence can be
++optimized to a direct call, the linker will change the `CALLXN'
++instruction to a `CALLN' instruction, remove the `L32R' instruction,
++and remove the literal referenced by the `L32R' instruction if it is
++not used for anything else. Removing the `L32R' instruction always
++reduces code size but can potentially hurt performance by changing the
++alignment of subsequent branch targets. By default, the linker will
++always preserve alignments, either by switching some instructions
++between 24-bit encodings and the equivalent density instructions or by
++inserting a no-op in place of the `L32R' instruction that was removed.
++If code size is more important than performance, the `--size-opt'
++option can be used to prevent the linker from widening density
++instructions or inserting no-ops, except in a few cases where no-ops
++are required for correctness.
++
++ The following Xtensa-specific command-line options can be used to
++control the linker:
++
++`--no-relax'
++ Since the Xtensa version of `ld' enables the `--relax' option by
++ default, the `--no-relax' option is provided to disable relaxation.
++
++`--size-opt'
++ When optimizing indirect calls to direct calls, optimize for code
++ size more than performance. With this option, the linker will not
++ insert no-ops or widen density instructions to preserve branch
++ target alignment. There may still be some cases where no-ops are
++ required to preserve the correctness of the code.
++
++
++File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top
++
++5 BFD
++*****
++
++The linker accesses object and archive files using the BFD libraries.
++These libraries allow the linker to use the same routines to operate on
++object files whatever the object file format. A different object file
++format can be supported simply by creating a new BFD back end and adding
++it to the library. To conserve runtime memory, however, the linker and
++associated tools are usually configured to support only a subset of the
++object file formats available. You can use `objdump -i' (*note
++objdump: (binutils.info)objdump.) to list all the formats available for
++your configuration.
++
++ As with most implementations, BFD is a compromise between several
++conflicting requirements. The major factor influencing BFD design was
++efficiency: any time used converting between formats is time which
++would not have been spent had BFD not been involved. This is partly
++offset by abstraction payback; since BFD simplifies applications and
++back ends, more time and care may be spent optimizing algorithms for a
++greater speed.
++
++ One minor artifact of the BFD solution which you should bear in mind
++is the potential for information loss. There are two places where
++useful information can be lost using the BFD mechanism: during
++conversion and during output. *Note BFD information loss::.
++
++* Menu:
++
++* BFD outline:: How it works: an outline of BFD
++
++
++File: ld.info, Node: BFD outline, Up: BFD
++
++5.1 How It Works: An Outline of BFD
++===================================
++
++When an object file is opened, BFD subroutines automatically determine
++the format of the input object file. They then build a descriptor in
++memory with pointers to routines that will be used to access elements of
++the object file's data structures.
++
++ As different information from the object files is required, BFD
++reads from different sections of the file and processes them. For
++example, a very common operation for the linker is processing symbol
++tables. Each BFD back end provides a routine for converting between
++the object file's representation of symbols and an internal canonical
++format. When the linker asks for the symbol table of an object file, it
++calls through a memory pointer to the routine from the relevant BFD
++back end which reads and converts the table into a canonical form. The
++linker then operates upon the canonical form. When the link is finished
++and the linker writes the output file's symbol table, another BFD back
++end routine is called to take the newly created symbol table and
++convert it into the chosen output format.
++
++* Menu:
++
++* BFD information loss:: Information Loss
++* Canonical format:: The BFD canonical object-file format
++
++
++File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline
++
++5.1.1 Information Loss
++----------------------
++
++_Information can be lost during output._ The output formats supported
++by BFD do not provide identical facilities, and information which can
++be described in one form has nowhere to go in another format. One
++example of this is alignment information in `b.out'. There is nowhere
++in an `a.out' format file to store alignment information on the
++contained data, so when a file is linked from `b.out' and an `a.out'
++image is produced, alignment information will not propagate to the
++output file. (The linker will still use the alignment information
++internally, so the link is performed correctly).
++
++ Another example is COFF section names. COFF files may contain an
++unlimited number of sections, each one with a textual section name. If
++the target of the link is a format which does not have many sections
++(e.g., `a.out') or has sections without names (e.g., the Oasys format),
++the link cannot be done simply. You can circumvent this problem by
++describing the desired input-to-output section mapping with the linker
++command language.
++
++ _Information can be lost during canonicalization._ The BFD internal
++canonical form of the external formats is not exhaustive; there are
++structures in input formats for which there is no direct representation
++internally. This means that the BFD back ends cannot maintain all
++possible data richness through the transformation between external to
++internal and back to external formats.
++
++ This limitation is only a problem when an application reads one
++format and writes another. Each BFD back end is responsible for
++maintaining as much data as possible, and the internal BFD canonical
++form has structures which are opaque to the BFD core, and exported only
++to the back ends. When a file is read in one format, the canonical form
++is generated for BFD and the application. At the same time, the back
++end saves away any information which may otherwise be lost. If the data
++is then written back in the same format, the back end routine will be
++able to use the canonical form provided by the BFD core as well as the
++information it prepared earlier. Since there is a great deal of
++commonality between back ends, there is no information lost when
++linking or copying big endian COFF to little endian COFF, or `a.out' to
++`b.out'. When a mixture of formats is linked, the information is only
++lost from the files whose format differs from the destination.
++
++
++File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline
++
++5.1.2 The BFD canonical object-file format
++------------------------------------------
++
++The greatest potential for loss of information occurs when there is the
++least overlap between the information provided by the source format,
++that stored by the canonical format, and that needed by the destination
++format. A brief description of the canonical form may help you
++understand which kinds of data you can count on preserving across
++conversions.
++
++_files_
++ Information stored on a per-file basis includes target machine
++ architecture, particular implementation format type, a demand
++ pageable bit, and a write protected bit. Information like Unix
++ magic numbers is not stored here--only the magic numbers' meaning,
++ so a `ZMAGIC' file would have both the demand pageable bit and the
++ write protected text bit set. The byte order of the target is
++ stored on a per-file basis, so that big- and little-endian object
++ files may be used with one another.
++
++_sections_
++ Each section in the input file contains the name of the section,
++ the section's original address in the object file, size and
++ alignment information, various flags, and pointers into other BFD
++ data structures.
++
++_symbols_
++ Each symbol contains a pointer to the information for the object
++ file which originally defined it, its name, its value, and various
++ flag bits. When a BFD back end reads in a symbol table, it
++ relocates all symbols to make them relative to the base of the
++ section where they were defined. Doing this ensures that each
++ symbol points to its containing section. Each symbol also has a
++ varying amount of hidden private data for the BFD back end. Since
++ the symbol points to the original file, the private data format
++ for that symbol is accessible. `ld' can operate on a collection
++ of symbols of wildly different formats without problems.
++
++ Normal global and simple local symbols are maintained on output,
++ so an output file (no matter its format) will retain symbols
++ pointing to functions and to global, static, and common variables.
++ Some symbol information is not worth retaining; in `a.out', type
++ information is stored in the symbol table as long symbol names.
++ This information would be useless to most COFF debuggers; the
++ linker has command line switches to allow users to throw it away.
++
++ There is one word of type information within the symbol, so if the
++ format supports symbol type information within symbols (for
++ example, COFF, IEEE, Oasys) and the type is simple enough to fit
++ within one word (nearly everything but aggregates), the
++ information will be preserved.
++
++_relocation level_
++ Each canonical BFD relocation record contains a pointer to the
++ symbol to relocate to, the offset of the data to relocate, the
++ section the data is in, and a pointer to a relocation type
++ descriptor. Relocation is performed by passing messages through
++ the relocation type descriptor and the symbol pointer. Therefore,
++ relocations can be performed on output data using a relocation
++ method that is only available in one of the input formats. For
++ instance, Oasys provides a byte relocation format. A relocation
++ record requesting this relocation type would point indirectly to a
++ routine to perform this, so the relocation may be performed on a
++ byte being written to a 68k COFF file, even though 68k COFF has no
++ such relocation type.
++
++_line numbers_
++ Object formats can contain, for debugging purposes, some form of
++ mapping between symbols, source line numbers, and addresses in the
++ output file. These addresses have to be relocated along with the
++ symbol information. Each symbol with an associated list of line
++ number records points to the first record of the list. The head
++ of a line number list consists of a pointer to the symbol, which
++ allows finding out the address of the function whose line number
++ is being described. The rest of the list is made up of pairs:
++ offsets into the section and line numbers. Any format which can
++ simply derive this information can pass it successfully between
++ formats (COFF, IEEE and Oasys).
++
++
++File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top
++
++6 Reporting Bugs
++****************
++
++Your bug reports play an essential role in making `ld' reliable.
++
++ Reporting a bug may help you by bringing a solution to your problem,
++or it may not. But in any case the principal function of a bug report
++is to help the entire community by making the next version of `ld' work
++better. Bug reports are your contribution to the maintenance of `ld'.
++
++ In order for a bug report to serve its purpose, you must include the
++information that enables us to fix the bug.
++
++* Menu:
++
++* Bug Criteria:: Have you found a bug?
++* Bug Reporting:: How to report bugs
++
++
++File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs
++
++6.1 Have You Found a Bug?
++=========================
++
++If you are not sure whether you have found a bug, here are some
++guidelines:
++
++ * If the linker gets a fatal signal, for any input whatever, that is
++ a `ld' bug. Reliable linkers never crash.
++
++ * If `ld' produces an error message for valid input, that is a bug.
++
++ * If `ld' does not produce an error message for invalid input, that
++ may be a bug. In the general case, the linker can not verify that
++ object files are correct.
++
++ * If you are an experienced user of linkers, your suggestions for
++ improvement of `ld' are welcome in any case.
++
++
++File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs
++
++6.2 How to Report Bugs
++======================
++
++A number of companies and individuals offer support for GNU products.
++If you obtained `ld' from a support organization, we recommend you
++contact that organization first.
++
++ You can find contact information for many support companies and
++individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
++
++ Otherwise, send bug reports for `ld' to `bug-binutils@gnu.org'.
++
++ The fundamental principle of reporting bugs usefully is this:
++*report all the facts*. If you are not sure whether to state a fact or
++leave it out, state it!
++
++ Often people omit facts because they think they know what causes the
++problem and assume that some details do not matter. Thus, you might
++assume that the name of a symbol you use in an example does not matter.
++Well, probably it does not, but one cannot be sure. Perhaps the bug
++is a stray memory reference which happens to fetch from the location
++where that name is stored in memory; perhaps, if the name were
++different, the contents of that location would fool the linker into
++doing the right thing despite the bug. Play it safe and give a
++specific, complete example. That is the easiest thing for you to do,
++and the most helpful.
++
++ Keep in mind that the purpose of a bug report is to enable us to fix
++the bug if it is new to us. Therefore, always write your bug reports
++on the assumption that the bug has not been reported previously.
++
++ Sometimes people give a few sketchy facts and ask, "Does this ring a
++bell?" This cannot help us fix a bug, so it is basically useless. We
++respond by asking for enough details to enable us to investigate. You
++might as well expedite matters by sending them to begin with.
++
++ To enable us to fix the bug, you should include all these things:
++
++ * The version of `ld'. `ld' announces it if you start it with the
++ `--version' argument.
++
++ Without this, we will not know whether there is any point in
++ looking for the bug in the current version of `ld'.
++
++ * Any patches you may have applied to the `ld' source, including any
++ patches made to the `BFD' library.
++
++ * The type of machine you are using, and the operating system name
++ and version number.
++
++ * What compiler (and its version) was used to compile `ld'--e.g.
++ "`gcc-2.7'".
++
++ * The command arguments you gave the linker to link your example and
++ observe the bug. To guarantee you will not omit something
++ important, list them all. A copy of the Makefile (or the output
++ from make) is sufficient.
++
++ If we were to try to guess the arguments, we would probably guess
++ wrong and then we might not encounter the bug.
++
++ * A complete input file, or set of input files, that will reproduce
++ the bug. It is generally most helpful to send the actual object
++ files provided that they are reasonably small. Say no more than
++ 10K. For bigger files you can either make them available by FTP
++ or HTTP or else state that you are willing to send the object
++ file(s) to whomever requests them. (Note - your email will be
++ going to a mailing list, so we do not want to clog it up with
++ large attachments). But small attachments are best.
++
++ If the source files were assembled using `gas' or compiled using
++ `gcc', then it may be OK to send the source files rather than the
++ object files. In this case, be sure to say exactly what version of
++ `gas' or `gcc' was used to produce the object files. Also say how
++ `gas' or `gcc' were configured.
++
++ * A description of what behavior you observe that you believe is
++ incorrect. For example, "It gets a fatal signal."
++
++ Of course, if the bug is that `ld' gets a fatal signal, then we
++ will certainly notice it. But if the bug is incorrect output, we
++ might not notice unless it is glaringly wrong. You might as well
++ not give us a chance to make a mistake.
++
++ Even if the problem you experience is a fatal signal, you should
++ still say so explicitly. Suppose something strange is going on,
++ such as, your copy of `ld' is out of synch, or you have
++ encountered a bug in the C library on your system. (This has
++ happened!) Your copy might crash and ours would not. If you told
++ us to expect a crash, then when ours fails to crash, we would know
++ that the bug was not happening for us. If you had not told us to
++ expect a crash, then we would not be able to draw any conclusion
++ from our observations.
++
++ * If you wish to suggest changes to the `ld' source, send us context
++ diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
++ Always send diffs from the old file to the new file. If you even
++ discuss something in the `ld' source, refer to it by context, not
++ by line number.
++
++ The line numbers in our development sources will not match those
++ in your sources. Your line numbers would convey no useful
++ information to us.
++
++ Here are some things that are not necessary:
++
++ * A description of the envelope of the bug.
++
++ Often people who encounter a bug spend a lot of time investigating
++ which changes to the input file will make the bug go away and which
++ changes will not affect it.
++
++ This is often time consuming and not very useful, because the way
++ we will find the bug is by running a single example under the
++ debugger with breakpoints, not by pure deduction from a series of
++ examples. We recommend that you save your time for something else.
++
++ Of course, if you can find a simpler example to report _instead_
++ of the original one, that is a convenience for us. Errors in the
++ output will be easier to spot, running under the debugger will take
++ less time, and so on.
++
++ However, simplification is not vital; if you do not want to do
++ this, report the bug anyway and send us the entire test case you
++ used.
++
++ * A patch for the bug.
++
++ A patch for the bug does help us if it is a good one. But do not
++ omit the necessary information, such as the test case, on the
++ assumption that a patch is all we need. We might see problems
++ with your patch and decide to fix the problem another way, or we
++ might not understand it at all.
++
++ Sometimes with a program as complicated as `ld' it is very hard to
++ construct an example that will make the program follow a certain
++ path through the code. If you do not send us the example, we will
++ not be able to construct one, so we will not be able to verify
++ that the bug is fixed.
++
++ And if we cannot understand what bug you are trying to fix, or why
++ your patch should be an improvement, we will not install it. A
++ test case will help us to understand.
++
++ * A guess about what the bug is or what it depends on.
++
++ Such guesses are usually wrong. Even we cannot guess right about
++ such things without first using the debugger to find the facts.
++
++
++File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top
++
++Appendix A MRI Compatible Script Files
++**************************************
++
++To aid users making the transition to GNU `ld' from the MRI linker,
++`ld' can use MRI compatible linker scripts as an alternative to the
++more general-purpose linker scripting language described in *Note
++Scripts::. MRI compatible linker scripts have a much simpler command
++set than the scripting language otherwise used with `ld'. GNU `ld'
++supports the most commonly used MRI linker commands; these commands are
++described here.
++
++ In general, MRI scripts aren't of much use with the `a.out' object
++file format, since it only has three sections and MRI scripts lack some
++features to make use of them.
++
++ You can specify a file containing an MRI-compatible script using the
++`-c' command-line option.
++
++ Each command in an MRI-compatible script occupies its own line; each
++command line starts with the keyword that identifies the command (though
++blank lines are also allowed for punctuation). If a line of an
++MRI-compatible script begins with an unrecognized keyword, `ld' issues
++a warning message, but continues processing the script.
++
++ Lines beginning with `*' are comments.
++
++ You can write these commands using all upper-case letters, or all
++lower case; for example, `chip' is the same as `CHIP'. The following
++list shows only the upper-case form of each command.
++
++`ABSOLUTE SECNAME'
++`ABSOLUTE SECNAME, SECNAME, ... SECNAME'
++ Normally, `ld' includes in the output file all sections from all
++ the input files. However, in an MRI-compatible script, you can
++ use the `ABSOLUTE' command to restrict the sections that will be
++ present in your output program. If the `ABSOLUTE' command is used
++ at all in a script, then only the sections named explicitly in
++ `ABSOLUTE' commands will appear in the linker output. You can
++ still use other input sections (whatever you select on the command
++ line, or using `LOAD') to resolve addresses in the output file.
++
++`ALIAS OUT-SECNAME, IN-SECNAME'
++ Use this command to place the data from input section IN-SECNAME
++ in a section called OUT-SECNAME in the linker output file.
++
++ IN-SECNAME may be an integer.
++
++`ALIGN SECNAME = EXPRESSION'
++ Align the section called SECNAME to EXPRESSION. The EXPRESSION
++ should be a power of two.
++
++`BASE EXPRESSION'
++ Use the value of EXPRESSION as the lowest address (other than
++ absolute addresses) in the output file.
++
++`CHIP EXPRESSION'
++`CHIP EXPRESSION, EXPRESSION'
++ This command does nothing; it is accepted only for compatibility.
++
++`END'
++ This command does nothing whatever; it's only accepted for
++ compatibility.
++
++`FORMAT OUTPUT-FORMAT'
++ Similar to the `OUTPUT_FORMAT' command in the more general linker
++ language, but restricted to one of these output formats:
++
++ 1. S-records, if OUTPUT-FORMAT is `S'
++
++ 2. IEEE, if OUTPUT-FORMAT is `IEEE'
++
++ 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is
++ `COFF'
++
++`LIST ANYTHING...'
++ Print (to the standard output file) a link map, as produced by the
++ `ld' command-line option `-M'.
++
++ The keyword `LIST' may be followed by anything on the same line,
++ with no change in its effect.
++
++`LOAD FILENAME'
++`LOAD FILENAME, FILENAME, ... FILENAME'
++ Include one or more object file FILENAME in the link; this has the
++ same effect as specifying FILENAME directly on the `ld' command
++ line.
++
++`NAME OUTPUT-NAME'
++ OUTPUT-NAME is the name for the program produced by `ld'; the
++ MRI-compatible command `NAME' is equivalent to the command-line
++ option `-o' or the general script language command `OUTPUT'.
++
++`ORDER SECNAME, SECNAME, ... SECNAME'
++`ORDER SECNAME SECNAME SECNAME'
++ Normally, `ld' orders the sections in its output file in the order
++ in which they first appear in the input files. In an
++ MRI-compatible script, you can override this ordering with the
++ `ORDER' command. The sections you list with `ORDER' will appear
++ first in your output file, in the order specified.
++
++`PUBLIC NAME=EXPRESSION'
++`PUBLIC NAME,EXPRESSION'
++`PUBLIC NAME EXPRESSION'
++ Supply a value (EXPRESSION) for external symbol NAME used in the
++ linker input files.
++
++`SECT SECNAME, EXPRESSION'
++`SECT SECNAME=EXPRESSION'
++`SECT SECNAME EXPRESSION'
++ You can use any of these three forms of the `SECT' command to
++ specify the start address (EXPRESSION) for section SECNAME. If
++ you have more than one `SECT' statement for the same SECNAME, only
++ the _first_ sets the start address.
++
++
++File: ld.info, Node: GNU Free Documentation License, Next: Index, Prev: MRI, Up: Top
++
++Appendix B GNU Free Documentation License
++*****************************************
++
++ Version 1.1, March 2000
++
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++
++ 0. PREAMBLE
++
++ The purpose of this License is to make a manual, textbook, or other
++ written document "free" in the sense of freedom: to assure everyone
++ the effective freedom to copy and redistribute it, with or without
++ modifying it, either commercially or noncommercially. Secondarily,
++ this License preserves for the author and publisher a way to get
++ credit for their work, while not being considered responsible for
++ modifications made by others.
++
++ This License is a kind of "copyleft", which means that derivative
++ works of the document must themselves be free in the same sense.
++ It complements the GNU General Public License, which is a copyleft
++ license designed for free software.
++
++ We have designed this License in order to use it for manuals for
++ free software, because free software needs free documentation: a
++ free program should come with manuals providing the same freedoms
++ that the software does. But this License is not limited to
++ software manuals; it can be used for any textual work, regardless
++ of subject matter or whether it is published as a printed book.
++ We recommend this License principally for works whose purpose is
++ instruction or reference.
++
++
++ 1. APPLICABILITY AND DEFINITIONS
++
++ This License applies to any manual or other work that contains a
++ notice placed by the copyright holder saying it can be distributed
++ under the terms of this License. The "Document", below, refers to
++ any such manual or work. Any member of the public is a licensee,
++ and is addressed as "you."
++
++ A "Modified Version" of the Document means any work containing the
++ Document or a portion of it, either copied verbatim, or with
++ modifications and/or translated into another language.
++
++ A "Secondary Section" is a named appendix or a front-matter
++ section of the Document that deals exclusively with the
++ relationship of the publishers or authors of the Document to the
++ Document's overall subject (or to related matters) and contains
++ nothing that could fall directly within that overall subject.
++ (For example, if the Document is in part a textbook of
++ mathematics, a Secondary Section may not explain any mathematics.)
++ The relationship could be a matter of historical connection with
++ the subject or with related matters, or of legal, commercial,
++ philosophical, ethical or political position regarding them.
++
++ The "Invariant Sections" are certain Secondary Sections whose
++ titles are designated, as being those of Invariant Sections, in
++ the notice that says that the Document is released under this
++ License.
++
++ The "Cover Texts" are certain short passages of text that are
++ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
++ that says that the Document is released under this License.
++
++ A "Transparent" copy of the Document means a machine-readable copy,
++ represented in a format whose specification is available to the
++ general public, whose contents can be viewed and edited directly
++ and straightforwardly with generic text editors or (for images
++ composed of pixels) generic paint programs or (for drawings) some
++ widely available drawing editor, and that is suitable for input to
++ text formatters or for automatic translation to a variety of
++ formats suitable for input to text formatters. A copy made in an
++ otherwise Transparent file format whose markup has been designed
++ to thwart or discourage subsequent modification by readers is not
++ Transparent. A copy that is not "Transparent" is called "Opaque."
++
++ Examples of suitable formats for Transparent copies include plain
++ ASCII without markup, Texinfo input format, LaTeX input format,
++ SGML or XML using a publicly available DTD, and
++ standard-conforming simple HTML designed for human modification.
++ Opaque formats include PostScript, PDF, proprietary formats that
++ can be read and edited only by proprietary word processors, SGML
++ or XML for which the DTD and/or processing tools are not generally
++ available, and the machine-generated HTML produced by some word
++ processors for output purposes only.
++
++ The "Title Page" means, for a printed book, the title page itself,
++ plus such following pages as are needed to hold, legibly, the
++ material this License requires to appear in the title page. For
++ works in formats which do not have any title page as such, "Title
++ Page" means the text near the most prominent appearance of the
++ work's title, preceding the beginning of the body of the text.
++
++ 2. VERBATIM COPYING
++
++ You may copy and distribute the Document in any medium, either
++ commercially or noncommercially, provided that this License, the
++ copyright notices, and the license notice saying this License
++ applies to the Document are reproduced in all copies, and that you
++ add no other conditions whatsoever to those of this License. You
++ may not use technical measures to obstruct or control the reading
++ or further copying of the copies you make or distribute. However,
++ you may accept compensation in exchange for copies. If you
++ distribute a large enough number of copies you must also follow
++ the conditions in section 3.
++
++ You may also lend copies, under the same conditions stated above,
++ and you may publicly display copies.
++
++ 3. COPYING IN QUANTITY
++
++ If you publish printed copies of the Document numbering more than
++ 100, and the Document's license notice requires Cover Texts, you
++ must enclose the copies in covers that carry, clearly and legibly,
++ all these Cover Texts: Front-Cover Texts on the front cover, and
++ Back-Cover Texts on the back cover. Both covers must also clearly
++ and legibly identify you as the publisher of these copies. The
++ front cover must present the full title with all words of the
++ title equally prominent and visible. You may add other material
++ on the covers in addition. Copying with changes limited to the
++ covers, as long as they preserve the title of the Document and
++ satisfy these conditions, can be treated as verbatim copying in
++ other respects.
++
++ If the required texts for either cover are too voluminous to fit
++ legibly, you should put the first ones listed (as many as fit
++ reasonably) on the actual cover, and continue the rest onto
++ adjacent pages.
++
++ If you publish or distribute Opaque copies of the Document
++ numbering more than 100, you must either include a
++ machine-readable Transparent copy along with each Opaque copy, or
++ state in or with each Opaque copy a publicly-accessible
++ computer-network location containing a complete Transparent copy
++ of the Document, free of added material, which the general
++ network-using public has access to download anonymously at no
++ charge using public-standard network protocols. If you use the
++ latter option, you must take reasonably prudent steps, when you
++ begin distribution of Opaque copies in quantity, to ensure that
++ this Transparent copy will remain thus accessible at the stated
++ location until at least one year after the last time you
++ distribute an Opaque copy (directly or through your agents or
++ retailers) of that edition to the public.
++
++ It is requested, but not required, that you contact the authors of
++ the Document well before redistributing any large number of
++ copies, to give them a chance to provide you with an updated
++ version of the Document.
++
++ 4. MODIFICATIONS
++
++ You may copy and distribute a Modified Version of the Document
++ under the conditions of sections 2 and 3 above, provided that you
++ release the Modified Version under precisely this License, with
++ the Modified Version filling the role of the Document, thus
++ licensing distribution and modification of the Modified Version to
++ whoever possesses a copy of it. In addition, you must do these
++ things in the Modified Version:
++
++ A. Use in the Title Page (and on the covers, if any) a title
++ distinct from that of the Document, and from those of previous
++ versions (which should, if there were any, be listed in the
++ History section of the Document). You may use the same title
++ as a previous version if the original publisher of that version
++ gives permission.
++ B. List on the Title Page, as authors, one or more persons or
++ entities responsible for authorship of the modifications in the
++ Modified Version, together with at least five of the principal
++ authors of the Document (all of its principal authors, if it
++ has less than five).
++ C. State on the Title page the name of the publisher of the
++ Modified Version, as the publisher.
++ D. Preserve all the copyright notices of the Document.
++ E. Add an appropriate copyright notice for your modifications
++ adjacent to the other copyright notices.
++ F. Include, immediately after the copyright notices, a license
++ notice giving the public permission to use the Modified Version
++ under the terms of this License, in the form shown in the
++ Addendum below.
++ G. Preserve in that license notice the full lists of Invariant
++ Sections and required Cover Texts given in the Document's
++ license notice.
++ H. Include an unaltered copy of this License.
++ I. Preserve the section entitled "History", and its title, and add
++ to it an item stating at least the title, year, new authors, and
++ publisher of the Modified Version as given on the Title Page.
++ If there is no section entitled "History" in the Document,
++ create one stating the title, year, authors, and publisher of
++ the Document as given on its Title Page, then add an item
++ describing the Modified Version as stated in the previous
++ sentence.
++ J. Preserve the network location, if any, given in the Document for
++ public access to a Transparent copy of the Document, and
++ likewise the network locations given in the Document for
++ previous versions it was based on. These may be placed in the
++ "History" section. You may omit a network location for a work
++ that was published at least four years before the Document
++ itself, or if the original publisher of the version it refers
++ to gives permission.
++ K. In any section entitled "Acknowledgements" or "Dedications",
++ preserve the section's title, and preserve in the section all the
++ substance and tone of each of the contributor acknowledgements
++ and/or dedications given therein.
++ L. Preserve all the Invariant Sections of the Document,
++ unaltered in their text and in their titles. Section numbers
++ or the equivalent are not considered part of the section titles.
++ M. Delete any section entitled "Endorsements." Such a section
++ may not be included in the Modified Version.
++ N. Do not retitle any existing section as "Endorsements" or to
++ conflict in title with any Invariant Section.
++
++ If the Modified Version includes new front-matter sections or
++ appendices that qualify as Secondary Sections and contain no
++ material copied from the Document, you may at your option
++ designate some or all of these sections as invariant. To do this,
++ add their titles to the list of Invariant Sections in the Modified
++ Version's license notice. These titles must be distinct from any
++ other section titles.
++
++ You may add a section entitled "Endorsements", provided it contains
++ nothing but endorsements of your Modified Version by various
++ parties-for example, statements of peer review or that the text has
++ been approved by an organization as the authoritative definition
++ of a standard.
++
++ You may add a passage of up to five words as a Front-Cover Text,
++ and a passage of up to 25 words as a Back-Cover Text, to the end
++ of the list of Cover Texts in the Modified Version. Only one
++ passage of Front-Cover Text and one of Back-Cover Text may be
++ added by (or through arrangements made by) any one entity. If the
++ Document already includes a cover text for the same cover,
++ previously added by you or by arrangement made by the same entity
++ you are acting on behalf of, you may not add another; but you may
++ replace the old one, on explicit permission from the previous
++ publisher that added the old one.
++
++ The author(s) and publisher(s) of the Document do not by this
++ License give permission to use their names for publicity for or to
++ assert or imply endorsement of any Modified Version.
++
++ 5. COMBINING DOCUMENTS
++
++ You may combine the Document with other documents released under
++ this License, under the terms defined in section 4 above for
++ modified versions, provided that you include in the combination
++ all of the Invariant Sections of all of the original documents,
++ unmodified, and list them all as Invariant Sections of your
++ combined work in its license notice.
++
++ The combined work need only contain one copy of this License, and
++ multiple identical Invariant Sections may be replaced with a single
++ copy. If there are multiple Invariant Sections with the same name
++ but different contents, make the title of each such section unique
++ by adding at the end of it, in parentheses, the name of the
++ original author or publisher of that section if known, or else a
++ unique number. Make the same adjustment to the section titles in
++ the list of Invariant Sections in the license notice of the
++ combined work.
++
++ In the combination, you must combine any sections entitled
++ "History" in the various original documents, forming one section
++ entitled "History"; likewise combine any sections entitled
++ "Acknowledgements", and any sections entitled "Dedications." You
++ must delete all sections entitled "Endorsements."
++
++ 6. COLLECTIONS OF DOCUMENTS
++
++ You may make a collection consisting of the Document and other
++ documents released under this License, and replace the individual
++ copies of this License in the various documents with a single copy
++ that is included in the collection, provided that you follow the
++ rules of this License for verbatim copying of each of the
++ documents in all other respects.
++
++ You may extract a single document from such a collection, and
++ distribute it individually under this License, provided you insert
++ a copy of this License into the extracted document, and follow
++ this License in all other respects regarding verbatim copying of
++ that document.
++
++ 7. AGGREGATION WITH INDEPENDENT WORKS
++
++ A compilation of the Document or its derivatives with other
++ separate and independent documents or works, in or on a volume of
++ a storage or distribution medium, does not as a whole count as a
++ Modified Version of the Document, provided no compilation
++ copyright is claimed for the compilation. Such a compilation is
++ called an "aggregate", and this License does not apply to the
++ other self-contained works thus compiled with the Document, on
++ account of their being thus compiled, if they are not themselves
++ derivative works of the Document.
++
++ If the Cover Text requirement of section 3 is applicable to these
++ copies of the Document, then if the Document is less than one
++ quarter of the entire aggregate, the Document's Cover Texts may be
++ placed on covers that surround only the Document within the
++ aggregate. Otherwise they must appear on covers around the whole
++ aggregate.
++
++ 8. TRANSLATION
++
++ Translation is considered a kind of modification, so you may
++ distribute translations of the Document under the terms of section
++ 4. Replacing Invariant Sections with translations requires special
++ permission from their copyright holders, but you may include
++ translations of some or all Invariant Sections in addition to the
++ original versions of these Invariant Sections. You may include a
++ translation of this License provided that you also include the
++ original English version of this License. In case of a
++ disagreement between the translation and the original English
++ version of this License, the original English version will prevail.
++
++ 9. TERMINATION
++
++ You may not copy, modify, sublicense, or distribute the Document
++ except as expressly provided for under this License. Any other
++ attempt to copy, modify, sublicense or distribute the Document is
++ void, and will automatically terminate your rights under this
++ License. However, parties who have received copies, or rights,
++ from you under this License will not have their licenses
++ terminated so long as such parties remain in full compliance.
++
++ 10. FUTURE REVISIONS OF THIS LICENSE
++
++ The Free Software Foundation may publish new, revised versions of
++ the GNU Free Documentation License from time to time. Such new
++ versions will be similar in spirit to the present version, but may
++ differ in detail to address new problems or concerns. See
++ http://www.gnu.org/copyleft/.
++
++ Each version of the License is given a distinguishing version
++ number. If the Document specifies that a particular numbered
++ version of this License "or any later version" applies to it, you
++ have the option of following the terms and conditions either of
++ that specified version or of any later version that has been
++ published (not as a draft) by the Free Software Foundation. If
++ the Document does not specify a version number of this License,
++ you may choose any version ever published (not as a draft) by the
++ Free Software Foundation.
++
++
++ADDENDUM: How to use this License for your documents
++====================================================
++
++To use this License in a document you have written, include a copy of
++the License in the document and put the following copyright and license
++notices just after the title page:
++
++ Copyright (C) YEAR YOUR NAME.
++ Permission is granted to copy, distribute and/or modify this document
++ under the terms of the GNU Free Documentation License, Version 1.1
++ or any later version published by the Free Software Foundation;
++ with the Invariant Sections being LIST THEIR TITLES, with the
++ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
++ A copy of the license is included in the section entitled "GNU
++ Free Documentation License."
++
++ If you have no Invariant Sections, write "with no Invariant Sections"
++instead of saying which ones are invariant. If you have no Front-Cover
++Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
++LIST"; likewise for Back-Cover Texts.
++
++ If your document contains nontrivial examples of program code, we
++recommend releasing these examples in parallel under your choice of
++free software license, such as the GNU General Public License, to
++permit their use in free software.
++
++
++File: ld.info, Node: Index, Prev: GNU Free Documentation License, Up: Top
++
++Index
++*****
++
++
++* Menu:
++
++* ": Symbols. (line 6)
++* -(: Options. (line 609)
++* --accept-unknown-input-arch: Options. (line 627)
++* --add-needed: Options. (line 649)
++* --add-stdcall-alias: Options. (line 1343)
++* --allow-multiple-definition: Options. (line 819)
++* --allow-shlib-undefined: Options. (line 825)
++* --architecture=ARCH: Options. (line 104)
++* --as-needed: Options. (line 637)
++* --auxiliary: Options. (line 205)
++* --base-file: Options. (line 1348)
++* --be8: ARM. (line 23)
++* --bss-plt: PowerPC ELF32. (line 13)
++* --check-sections: Options. (line 701)
++* --cref: Options. (line 711)
++* --default-imported-symver: Options. (line 853)
++* --default-symver: Options. (line 849)
++* --defsym SYMBOL=EXP: Options. (line 739)
++* --demangle[=STYLE]: Options. (line 752)
++* --disable-auto-image-base: Options. (line 1495)
++* --disable-auto-import: Options. (line 1624)
++* --disable-new-dtags: Options. (line 1295)
++* --disable-runtime-pseudo-reloc: Options. (line 1637)
++* --disable-stdcall-fixup: Options. (line 1358)
++* --discard-all: Options. (line 513)
++* --discard-locals: Options. (line 517)
++* --dll: Options. (line 1353)
++* --dll-search-prefix: Options. (line 1501)
++* --dotsyms: PowerPC64 ELF64. (line 33)
++* --dynamic-linker FILE: Options. (line 765)
++* --eh-frame-hdr: Options. (line 1291)
++* --emit-relocs: Options. (line 415)
++* --emit-stub-syms <1>: PowerPC64 ELF64. (line 29)
++* --emit-stub-syms: PowerPC ELF32. (line 37)
++* --enable-auto-image-base: Options. (line 1487)
++* --enable-auto-import: Options. (line 1510)
++* --enable-extra-pe-debug: Options. (line 1642)
++* --enable-new-dtags: Options. (line 1295)
++* --enable-runtime-pseudo-reloc: Options. (line 1629)
++* --enable-stdcall-fixup: Options. (line 1358)
++* --entry=ENTRY: Options. (line 158)
++* --error-unresolved-symbols: Options. (line 1244)
++* --exclude-libs: Options. (line 168)
++* --exclude-symbols: Options. (line 1400)
++* --export-all-symbols: Options. (line 1376)
++* --export-dynamic: Options. (line 179)
++* --fatal-warnings: Options. (line 771)
++* --file-alignment: Options. (line 1406)
++* --filter: Options. (line 226)
++* --fix-v4bx: ARM. (line 44)
++* --force-dynamic: Options. (line 424)
++* --force-exe-suffix: Options. (line 774)
++* --format=FORMAT: Options. (line 115)
++* --format=VERSION: TI COFF. (line 6)
++* --gc-sections: Options. (line 784)
++* --gpsize: Options. (line 259)
++* --hash-size=NUMBER: Options. (line 1304)
++* --heap: Options. (line 1412)
++* --help: Options. (line 792)
++* --image-base: Options. (line 1419)
++* --just-symbols=FILE: Options. (line 447)
++* --kill-at: Options. (line 1428)
++* --large-address-aware: Options. (line 1433)
++* --library-path=DIR: Options. (line 315)
++* --library=ARCHIVE: Options. (line 285)
++* --major-image-version: Options. (line 1442)
++* --major-os-version: Options. (line 1447)
++* --major-subsystem-version: Options. (line 1451)
++* --minor-image-version: Options. (line 1456)
++* --minor-os-version: Options. (line 1461)
++* --minor-subsystem-version: Options. (line 1465)
++* --mri-script=MRI-CMDFILE: Options. (line 139)
++* --multi-subspace: HPPA ELF32. (line 6)
++* --nmagic: Options. (line 384)
++* --no-accept-unknown-input-arch: Options. (line 627)
++* --no-add-needed: Options. (line 649)
++* --no-allow-shlib-undefined: Options. (line 825)
++* --no-as-needed: Options. (line 637)
++* --no-check-sections: Options. (line 701)
++* --no-define-common: Options. (line 723)
++* --no-demangle: Options. (line 752)
++* --no-dotsyms: PowerPC64 ELF64. (line 33)
++* --no-gc-sections: Options. (line 784)
++* --no-keep-memory: Options. (line 804)
++* --no-multi-toc: PowerPC64 ELF64. (line 74)
++* --no-omagic: Options. (line 398)
++* --no-opd-optimize: PowerPC64 ELF64. (line 48)
++* --no-relax: Xtensa. (line 56)
++* --no-tls-optimize <1>: PowerPC64 ELF64. (line 43)
++* --no-tls-optimize: PowerPC ELF32. (line 41)
++* --no-toc-optimize: PowerPC64 ELF64. (line 60)
++* --no-undefined: Options. (line 811)
++* --no-undefined-version: Options. (line 844)
++* --no-warn-mismatch: Options. (line 857)
++* --no-whole-archive: Options. (line 866)
++* --noinhibit-exec: Options. (line 870)
++* --non-overlapping-opd: PowerPC64 ELF64. (line 54)
++* --oformat: Options. (line 882)
++* --omagic: Options. (line 389)
++* --out-implib: Options. (line 1478)
++* --output-def: Options. (line 1470)
++* --output=OUTPUT: Options. (line 404)
++* --pic-executable: Options. (line 895)
++* --print-map: Options. (line 347)
++* --reduce-memory-overheads: Options. (line 1312)
++* --relax: Options. (line 911)
++* --relax on i960: i960. (line 31)
++* --relax on PowerPC: PowerPC ELF32. (line 6)
++* --relax on Xtensa: Xtensa. (line 27)
++* --relocatable: Options. (line 428)
++* --script=SCRIPT: Options. (line 471)
++* --sdata-got: PowerPC ELF32. (line 23)
++* --section-alignment: Options. (line 1647)
++* --section-start SECTIONNAME=ORG: Options. (line 1081)
++* --sort-common: Options. (line 1028)
++* --sort-section alignment: Options. (line 1038)
++* --sort-section name: Options. (line 1034)
++* --split-by-file: Options. (line 1042)
++* --split-by-reloc: Options. (line 1047)
++* --stack: Options. (line 1653)
++* --stats: Options. (line 1060)
++* --strip-all: Options. (line 458)
++* --strip-debug: Options. (line 462)
++* --stub-group-size: PowerPC64 ELF64. (line 6)
++* --stub-group-size=N: HPPA ELF32. (line 12)
++* --subsystem: Options. (line 1660)
++* --support-old-code: ARM. (line 6)
++* --sysroot: Options. (line 1064)
++* --target-help: Options. (line 796)
++* --target1-abs: ARM. (line 27)
++* --target1-rel: ARM. (line 27)
++* --target2=TYPE: ARM. (line 32)
++* --thumb-entry=ENTRY: ARM. (line 17)
++* --trace: Options. (line 467)
++* --trace-symbol=SYMBOL: Options. (line 522)
++* --traditional-format: Options. (line 1069)
++* --undefined=SYMBOL: Options. (line 480)
++* --unique[=SECTION]: Options. (line 498)
++* --unresolved-symbols: Options. (line 1096)
++* --use-blx: ARM. (line 57)
++* --verbose: Options. (line 1125)
++* --version: Options. (line 507)
++* --version-script=VERSION-SCRIPTFILE: Options. (line 1131)
++* --warn-common: Options. (line 1138)
++* --warn-constructors: Options. (line 1206)
++* --warn-multiple-gp: Options. (line 1211)
++* --warn-once: Options. (line 1225)
++* --warn-section-align: Options. (line 1229)
++* --warn-shared-textrel: Options. (line 1236)
++* --warn-unresolved-symbols: Options. (line 1239)
++* --whole-archive: Options. (line 1248)
++* --wrap: Options. (line 1262)
++* -AARCH: Options. (line 103)
++* -aKEYWORD: Options. (line 96)
++* -assert KEYWORD: Options. (line 659)
++* -b FORMAT: Options. (line 115)
++* -Bdynamic: Options. (line 662)
++* -Bgroup: Options. (line 672)
++* -Bshareable: Options. (line 1020)
++* -Bstatic: Options. (line 679)
++* -Bsymbolic: Options. (line 694)
++* -c MRI-CMDFILE: Options. (line 139)
++* -call_shared: Options. (line 662)
++* -d: Options. (line 149)
++* -dc: Options. (line 149)
++* -dn: Options. (line 679)
++* -dp: Options. (line 149)
++* -dy: Options. (line 662)
++* -E: Options. (line 179)
++* -e ENTRY: Options. (line 158)
++* -EB: Options. (line 198)
++* -EL: Options. (line 201)
++* -F: Options. (line 226)
++* -f: Options. (line 205)
++* -fini: Options. (line 250)
++* -G: Options. (line 259)
++* -g: Options. (line 256)
++* -hNAME: Options. (line 267)
++* -i: Options. (line 276)
++* -IFILE: Options. (line 765)
++* -init: Options. (line 279)
++* -lARCHIVE: Options. (line 285)
++* -LDIR: Options. (line 315)
++* -M: Options. (line 347)
++* -m EMULATION: Options. (line 337)
++* -Map: Options. (line 800)
++* -N: Options. (line 389)
++* -n: Options. (line 384)
++* -non_shared: Options. (line 679)
++* -nostdlib: Options. (line 876)
++* -O LEVEL: Options. (line 410)
++* -o OUTPUT: Options. (line 404)
++* -pie: Options. (line 895)
++* -q: Options. (line 415)
++* -qmagic: Options. (line 905)
++* -Qy: Options. (line 908)
++* -r: Options. (line 428)
++* -R FILE: Options. (line 447)
++* -rpath: Options. (line 945)
++* -rpath-link: Options. (line 967)
++* -S: Options. (line 462)
++* -s: Options. (line 458)
++* -shared: Options. (line 1020)
++* -soname=NAME: Options. (line 267)
++* -static: Options. (line 679)
++* -t: Options. (line 467)
++* -T SCRIPT: Options. (line 471)
++* -Tbss ORG: Options. (line 1090)
++* -Tdata ORG: Options. (line 1090)
++* -Ttext ORG: Options. (line 1090)
++* -u SYMBOL: Options. (line 480)
++* -Ur: Options. (line 488)
++* -V: Options. (line 507)
++* -v: Options. (line 507)
++* -X: Options. (line 517)
++* -x: Options. (line 513)
++* -Y PATH: Options. (line 531)
++* -y SYMBOL: Options. (line 522)
++* -z defs: Options. (line 811)
++* -z KEYWORD: Options. (line 535)
++* -z muldefs: Options. (line 819)
++* .: Location Counter. (line 6)
++* /DISCARD/: Output Section Discarding.
++ (line 18)
++* :PHDR: Output Section Phdr.
++ (line 6)
++* =FILLEXP: Output Section Fill.
++ (line 6)
++* >REGION: Output Section Region.
++ (line 6)
++* [COMMON]: Input Section Common.
++ (line 29)
++* ABSOLUTE (MRI): MRI. (line 33)
++* absolute and relocatable symbols: Expression Section. (line 6)
++* absolute expressions: Expression Section. (line 6)
++* ABSOLUTE(EXP): Builtin Functions. (line 10)
++* ADDR(SECTION): Builtin Functions. (line 17)
++* address, section: Output Section Address.
++ (line 6)
++* ALIAS (MRI): MRI. (line 44)
++* ALIGN (MRI): MRI. (line 50)
++* align expression: Builtin Functions. (line 36)
++* align location counter: Builtin Functions. (line 36)
++* ALIGN(ALIGN): Builtin Functions. (line 36)
++* ALIGN(EXP,ALIGN): Builtin Functions. (line 36)
++* ALIGN(SECTION_ALIGN): Forced Output Alignment.
++ (line 6)
++* allocating memory: MEMORY. (line 6)
++* architecture: Miscellaneous Commands.
++ (line 46)
++* architectures: Options. (line 103)
++* archive files, from cmd line: Options. (line 285)
++* archive search path in linker script: File Commands. (line 71)
++* arithmetic: Expressions. (line 6)
++* arithmetic operators: Operators. (line 6)
++* ARM interworking support: ARM. (line 6)
++* AS_NEEDED(FILES): File Commands. (line 51)
++* ASSERT: Miscellaneous Commands.
++ (line 9)
++* assertion in linker script: Miscellaneous Commands.
++ (line 9)
++* assignment in scripts: Assignments. (line 6)
++* AT(LMA): Output Section LMA. (line 6)
++* AT>LMA_REGION: Output Section LMA. (line 6)
++* automatic data imports: WIN32. (line 170)
++* back end: BFD. (line 6)
++* BASE (MRI): MRI. (line 54)
++* BE8: ARM. (line 23)
++* BFD canonical format: Canonical format. (line 11)
++* BFD requirements: BFD. (line 16)
++* big-endian objects: Options. (line 198)
++* binary input format: Options. (line 115)
++* BLOCK(EXP): Builtin Functions. (line 62)
++* bug criteria: Bug Criteria. (line 6)
++* bug reports: Bug Reporting. (line 6)
++* bugs in ld: Reporting Bugs. (line 6)
++* BYTE(EXPRESSION): Output Section Data.
++ (line 6)
++* C++ constructors, arranging in link: Output Section Keywords.
++ (line 19)
++* CHIP (MRI): MRI. (line 58)
++* COLLECT_NO_DEMANGLE: Environment. (line 29)
++* combining symbols, warnings on: Options. (line 1138)
++* command files: Scripts. (line 6)
++* command line: Options. (line 6)
++* common allocation: Options. (line 149)
++* common allocation in linker script: Miscellaneous Commands.
++ (line 20)
++* common symbol placement: Input Section Common.
++ (line 6)
++* compatibility, MRI: Options. (line 139)
++* constants in linker scripts: Constants. (line 6)
++* CONSTRUCTORS: Output Section Keywords.
++ (line 19)
++* constructors: Options. (line 488)
++* constructors, arranging in link: Output Section Keywords.
++ (line 19)
++* crash of linker: Bug Criteria. (line 9)
++* CREATE_OBJECT_SYMBOLS: Output Section Keywords.
++ (line 9)
++* creating a DEF file: WIN32. (line 137)
++* cross reference table: Options. (line 711)
++* cross references: Miscellaneous Commands.
++ (line 30)
++* current output location: Location Counter. (line 6)
++* data: Output Section Data.
++ (line 6)
++* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions.
++ (line 67)
++* DATA_SEGMENT_END(EXP): Builtin Functions. (line 88)
++* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 94)
++* dbx: Options. (line 1074)
++* DEF files, creating: Options. (line 1470)
++* default emulation: Environment. (line 21)
++* default input format: Environment. (line 9)
++* DEFINED(SYMBOL): Builtin Functions. (line 105)
++* deleting local symbols: Options. (line 513)
++* demangling, default: Environment. (line 29)
++* demangling, from command line: Options. (line 752)
++* direct linking to a dll: WIN32. (line 218)
++* discarding sections: Output Section Discarding.
++ (line 6)
++* discontinuous memory: MEMORY. (line 6)
++* DLLs, creating: Options. (line 1376)
++* DLLs, linking to: Options. (line 1501)
++* dot: Location Counter. (line 6)
++* dot inside sections: Location Counter. (line 34)
++* dot outside sections: Location Counter. (line 64)
++* dynamic linker, from command line: Options. (line 765)
++* dynamic symbol table: Options. (line 179)
++* ELF program headers: PHDRS. (line 6)
++* emulation: Options. (line 337)
++* emulation, default: Environment. (line 21)
++* END (MRI): MRI. (line 62)
++* endianness: Options. (line 198)
++* entry point: Entry Point. (line 6)
++* entry point, from command line: Options. (line 158)
++* entry point, thumb: ARM. (line 17)
++* ENTRY(SYMBOL): Entry Point. (line 6)
++* error on valid input: Bug Criteria. (line 12)
++* example of linker script: Simple Example. (line 6)
++* exporting DLL symbols: WIN32. (line 19)
++* expression evaluation order: Evaluation. (line 6)
++* expression sections: Expression Section. (line 6)
++* expression, absolute: Builtin Functions. (line 10)
++* expressions: Expressions. (line 6)
++* EXTERN: Miscellaneous Commands.
++ (line 13)
++* fatal signal: Bug Criteria. (line 9)
++* file name wildcard patterns: Input Section Wildcards.
++ (line 6)
++* FILEHDR: PHDRS. (line 61)
++* filename symbols: Output Section Keywords.
++ (line 9)
++* fill pattern, entire section: Output Section Fill.
++ (line 6)
++* FILL(EXPRESSION): Output Section Data.
++ (line 39)
++* finalization function: Options. (line 250)
++* first input file: File Commands. (line 79)
++* first instruction: Entry Point. (line 6)
++* FIX_V4BX: ARM. (line 44)
++* FORCE_COMMON_ALLOCATION: Miscellaneous Commands.
++ (line 20)
++* forcing input section alignment: Forced Input Alignment.
++ (line 6)
++* forcing output section alignment: Forced Output Alignment.
++ (line 6)
++* forcing the creation of dynamic sections: Options. (line 424)
++* FORMAT (MRI): MRI. (line 66)
++* functions in expressions: Builtin Functions. (line 6)
++* garbage collection <1>: Input Section Keep. (line 6)
++* garbage collection: Options. (line 784)
++* generating optimized output: Options. (line 410)
++* GNU linker: Overview. (line 6)
++* GNUTARGET: Environment. (line 9)
++* GROUP(FILES): File Commands. (line 44)
++* grouping input files: File Commands. (line 44)
++* groups of archives: Options. (line 609)
++* H8/300 support: H8/300. (line 6)
++* header size: Builtin Functions. (line 170)
++* heap size: Options. (line 1412)
++* help: Options. (line 792)
++* holes: Location Counter. (line 12)
++* holes, filling: Output Section Data.
++ (line 39)
++* HPPA multiple sub-space stubs: HPPA ELF32. (line 6)
++* HPPA stub grouping: HPPA ELF32. (line 12)
++* i960 support: i960. (line 6)
++* image base: Options. (line 1419)
++* implicit linker scripts: Implicit Linker Scripts.
++ (line 6)
++* import libraries: WIN32. (line 10)
++* INCLUDE FILENAME: File Commands. (line 9)
++* including a linker script: File Commands. (line 9)
++* including an entire archive: Options. (line 1248)
++* incremental link: Options. (line 276)
++* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands.
++ (line 25)
++* initialization function: Options. (line 279)
++* initialized data in ROM: Output Section LMA. (line 21)
++* input file format in linker script: Format Commands. (line 35)
++* input filename symbols: Output Section Keywords.
++ (line 9)
++* input files in linker scripts: File Commands. (line 16)
++* input files, displaying: Options. (line 467)
++* input format: Options. (line 115)
++* input object files in linker scripts: File Commands. (line 16)
++* input section alignment: Forced Input Alignment.
++ (line 6)
++* input section basics: Input Section Basics.
++ (line 6)
++* input section wildcards: Input Section Wildcards.
++ (line 6)
++* input sections: Input Section. (line 6)
++* INPUT(FILES): File Commands. (line 16)
++* integer notation: Constants. (line 6)
++* integer suffixes: Constants. (line 12)
++* internal object-file format: Canonical format. (line 11)
++* invalid input: Bug Criteria. (line 14)
++* K and M integer suffixes: Constants. (line 12)
++* KEEP: Input Section Keep. (line 6)
++* l =: MEMORY. (line 72)
++* L, deleting symbols beginning: Options. (line 517)
++* lazy evaluation: Evaluation. (line 6)
++* ld bugs, reporting: Bug Reporting. (line 6)
++* LDEMULATION: Environment. (line 21)
++* len =: MEMORY. (line 72)
++* LENGTH =: MEMORY. (line 72)
++* LENGTH(MEMORY): Builtin Functions. (line 122)
++* library search path in linker script: File Commands. (line 71)
++* link map: Options. (line 347)
++* link-time runtime library search path: Options. (line 967)
++* linker crash: Bug Criteria. (line 9)
++* linker script concepts: Basic Script Concepts.
++ (line 6)
++* linker script example: Simple Example. (line 6)
++* linker script file commands: File Commands. (line 6)
++* linker script format: Script Format. (line 6)
++* linker script input object files: File Commands. (line 16)
++* linker script simple commands: Simple Commands. (line 6)
++* linker scripts: Scripts. (line 6)
++* LIST (MRI): MRI. (line 77)
++* little-endian objects: Options. (line 201)
++* LOAD (MRI): MRI. (line 84)
++* load address: Output Section LMA. (line 6)
++* LOADADDR(SECTION): Builtin Functions. (line 125)
++* loading, preventing: Output Section Type.
++ (line 22)
++* local symbols, deleting: Options. (line 517)
++* location counter: Location Counter. (line 6)
++* LONG(EXPRESSION): Output Section Data.
++ (line 6)
++* M and K integer suffixes: Constants. (line 12)
++* machine architecture: Miscellaneous Commands.
++ (line 46)
++* machine dependencies: Machine Dependent. (line 6)
++* mapping input sections to output sections: Input Section. (line 6)
++* MAX: Builtin Functions. (line 130)
++* MEMORY: MEMORY. (line 6)
++* memory region attributes: MEMORY. (line 32)
++* memory regions: MEMORY. (line 6)
++* memory regions and sections: Output Section Region.
++ (line 6)
++* memory usage: Options. (line 804)
++* MIN: Builtin Functions. (line 133)
++* MRI compatibility: MRI. (line 6)
++* MSP430 extra sections: MSP430. (line 11)
++* NAME (MRI): MRI. (line 90)
++* name, section: Output Section Name.
++ (line 6)
++* names: Symbols. (line 6)
++* naming the output file: Options. (line 404)
++* NEXT(EXP): Builtin Functions. (line 137)
++* NMAGIC: Options. (line 384)
++* NOCROSSREFS(SECTIONS): Miscellaneous Commands.
++ (line 30)
++* NOLOAD: Output Section Type.
++ (line 22)
++* not enough room for program headers: Builtin Functions. (line 175)
++* o =: MEMORY. (line 67)
++* objdump -i: BFD. (line 6)
++* object file management: BFD. (line 6)
++* object files: Options. (line 29)
++* object formats available: BFD. (line 6)
++* object size: Options. (line 259)
++* OMAGIC: Options. (line 389)
++* opening object files: BFD outline. (line 6)
++* operators for arithmetic: Operators. (line 6)
++* options: Options. (line 6)
++* ORDER (MRI): MRI. (line 95)
++* org =: MEMORY. (line 67)
++* ORIGIN =: MEMORY. (line 67)
++* ORIGIN(MEMORY): Builtin Functions. (line 143)
++* orphan: Orphan Sections. (line 6)
++* output file after errors: Options. (line 870)
++* output file format in linker script: Format Commands. (line 10)
++* output file name in linker scripot: File Commands. (line 61)
++* output section alignment: Forced Output Alignment.
++ (line 6)
++* output section attributes: Output Section Attributes.
++ (line 6)
++* output section data: Output Section Data.
++ (line 6)
++* OUTPUT(FILENAME): File Commands. (line 61)
++* OUTPUT_ARCH(BFDARCH): Miscellaneous Commands.
++ (line 46)
++* OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10)
++* OVERLAY: Overlay Description.
++ (line 6)
++* overlays: Overlay Description.
++ (line 6)
++* partial link: Options. (line 428)
++* PHDRS: PHDRS. (line 6)
++* position independent executables: Options. (line 897)
++* PowerPC ELF32 options: PowerPC ELF32. (line 13)
++* PowerPC GOT: PowerPC ELF32. (line 23)
++* PowerPC long branches: PowerPC ELF32. (line 6)
++* PowerPC PLT: PowerPC ELF32. (line 13)
++* PowerPC stub symbols: PowerPC ELF32. (line 37)
++* PowerPC TLS optimization: PowerPC ELF32. (line 41)
++* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33)
++* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6)
++* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74)
++* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48)
++* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54)
++* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6)
++* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29)
++* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43)
++* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60)
++* precedence in expressions: Operators. (line 6)
++* prevent unnecessary loading: Output Section Type.
++ (line 22)
++* program headers: PHDRS. (line 6)
++* program headers and sections: Output Section Phdr.
++ (line 6)
++* program headers, not enough room: Builtin Functions. (line 175)
++* program segments: PHDRS. (line 6)
++* PROVIDE: PROVIDE. (line 6)
++* PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6)
++* PUBLIC (MRI): MRI. (line 103)
++* QUAD(EXPRESSION): Output Section Data.
++ (line 6)
++* quoted symbol names: Symbols. (line 6)
++* read-only text: Options. (line 384)
++* read/write from cmd line: Options. (line 389)
++* regions of memory: MEMORY. (line 6)
++* relative expressions: Expression Section. (line 6)
++* relaxing addressing modes: Options. (line 911)
++* relaxing on H8/300: H8/300. (line 9)
++* relaxing on i960: i960. (line 31)
++* relaxing on Xtensa: Xtensa. (line 27)
++* relocatable and absolute symbols: Expression Section. (line 6)
++* relocatable output: Options. (line 428)
++* removing sections: Output Section Discarding.
++ (line 6)
++* reporting bugs in ld: Reporting Bugs. (line 6)
++* requirements for BFD: BFD. (line 16)
++* retain relocations in final executable: Options. (line 415)
++* retaining specified symbols: Options. (line 931)
++* ROM initialized data: Output Section LMA. (line 21)
++* round up expression: Builtin Functions. (line 36)
++* round up location counter: Builtin Functions. (line 36)
++* runtime library name: Options. (line 267)
++* runtime library search path: Options. (line 945)
++* runtime pseudo-relocation: WIN32. (line 196)
++* scaled integers: Constants. (line 12)
++* scommon section: Input Section Common.
++ (line 20)
++* script files: Options. (line 471)
++* scripts: Scripts. (line 6)
++* search directory, from cmd line: Options. (line 315)
++* search path in linker script: File Commands. (line 71)
++* SEARCH_DIR(PATH): File Commands. (line 71)
++* SECT (MRI): MRI. (line 109)
++* section address: Output Section Address.
++ (line 6)
++* section address in expression: Builtin Functions. (line 17)
++* section alignment, warnings on: Options. (line 1229)
++* section data: Output Section Data.
++ (line 6)
++* section fill pattern: Output Section Fill.
++ (line 6)
++* section load address: Output Section LMA. (line 6)
++* section load address in expression: Builtin Functions. (line 125)
++* section name: Output Section Name.
++ (line 6)
++* section name wildcard patterns: Input Section Wildcards.
++ (line 6)
++* section size: Builtin Functions. (line 154)
++* section, assigning to memory region: Output Section Region.
++ (line 6)
++* section, assigning to program header: Output Section Phdr.
++ (line 6)
++* SECTIONS: SECTIONS. (line 6)
++* sections, discarding: Output Section Discarding.
++ (line 6)
++* segment origins, cmd line: Options. (line 1090)
++* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 146)
++* segments, ELF: PHDRS. (line 6)
++* shared libraries: Options. (line 1022)
++* SHORT(EXPRESSION): Output Section Data.
++ (line 6)
++* SIZEOF(SECTION): Builtin Functions. (line 154)
++* SIZEOF_HEADERS: Builtin Functions. (line 170)
++* small common symbols: Input Section Common.
++ (line 20)
++* SORT: Input Section Wildcards.
++ (line 58)
++* SORT_BY_ALIGNMENT: Input Section Wildcards.
++ (line 54)
++* SORT_BY_NAME: Input Section Wildcards.
++ (line 46)
++* SQUAD(EXPRESSION): Output Section Data.
++ (line 6)
++* stack size: Options. (line 1653)
++* standard Unix system: Options. (line 7)
++* start of execution: Entry Point. (line 6)
++* STARTUP(FILENAME): File Commands. (line 79)
++* strip all symbols: Options. (line 458)
++* strip debugger symbols: Options. (line 462)
++* stripping all but some symbols: Options. (line 931)
++* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment.
++ (line 6)
++* suffixes for integers: Constants. (line 12)
++* symbol defaults: Builtin Functions. (line 105)
++* symbol definition, scripts: Assignments. (line 6)
++* symbol names: Symbols. (line 6)
++* symbol tracing: Options. (line 522)
++* symbol versions: VERSION. (line 6)
++* symbol-only input: Options. (line 447)
++* symbols, from command line: Options. (line 739)
++* symbols, relocatable and absolute: Expression Section. (line 6)
++* symbols, retaining selectively: Options. (line 931)
++* synthesizing linker: Options. (line 911)
++* synthesizing on H8/300: H8/300. (line 14)
++* TARGET(BFDNAME): Format Commands. (line 35)
++* TARGET1: ARM. (line 27)
++* TARGET2: ARM. (line 32)
++* thumb entry point: ARM. (line 17)
++* TI COFF versions: TI COFF. (line 6)
++* traditional format: Options. (line 1069)
++* unallocated address, next: Builtin Functions. (line 137)
++* undefined symbol: Options. (line 480)
++* undefined symbol in linker script: Miscellaneous Commands.
++ (line 13)
++* undefined symbols, warnings on: Options. (line 1225)
++* uninitialized data placement: Input Section Common.
++ (line 6)
++* unspecified memory: Output Section Data.
++ (line 39)
++* usage: Options. (line 792)
++* USE_BLX: ARM. (line 57)
++* using a DEF file: WIN32. (line 42)
++* using auto-export functionality: WIN32. (line 22)
++* Using decorations: WIN32. (line 141)
++* variables, defining: Assignments. (line 6)
++* verbose: Options. (line 1125)
++* version: Options. (line 507)
++* version script: VERSION. (line 6)
++* version script, symbol versions: Options. (line 1131)
++* VERSION {script text}: VERSION. (line 6)
++* versions of symbols: VERSION. (line 6)
++* warnings, on combining symbols: Options. (line 1138)
++* warnings, on section alignment: Options. (line 1229)
++* warnings, on undefined symbols: Options. (line 1225)
++* weak externals: WIN32. (line 380)
++* what is this?: Overview. (line 6)
++* wildcard file name patterns: Input Section Wildcards.
++ (line 6)
++* Xtensa options: Xtensa. (line 56)
++* Xtensa processors: Xtensa. (line 6)
++
++
++
++Tag Table:
++Node: Top347
++Node: Overview1109
++Node: Invocation2223
++Node: Options2631
++Node: Environment77286
++Node: Scripts79046
++Node: Basic Script Concepts80780
++Node: Script Format83487
++Node: Simple Example84350
++Node: Simple Commands87446
++Node: Entry Point87897
++Node: File Commands88656
++Node: Format Commands92522
++Node: Miscellaneous Commands94488
++Node: Assignments96718
++Node: Simple Assignments97209
++Node: PROVIDE98945
++Node: PROVIDE_HIDDEN100150
++Node: Source Code Reference100394
++Node: SECTIONS103974
++Node: Output Section Description105865
++Node: Output Section Name106918
++Node: Output Section Address107794
++Node: Input Section109443
++Node: Input Section Basics110244
++Node: Input Section Wildcards112596
++Node: Input Section Common117329
++Node: Input Section Keep118811
++Node: Input Section Example119301
++Node: Output Section Data120269
++Node: Output Section Keywords123046
++Node: Output Section Discarding126615
++Node: Output Section Attributes127571
++Node: Output Section Type128575
++Node: Output Section LMA129729
++Node: Forced Output Alignment132000
++Node: Forced Input Alignment132268
++Node: Output Section Region132653
++Node: Output Section Phdr133083
++Node: Output Section Fill133747
++Node: Overlay Description134889
++Node: MEMORY139137
++Node: PHDRS143337
++Node: VERSION148376
++Node: Expressions156167
++Node: Constants157045
++Node: Symbols157606
++Node: Orphan Sections158344
++Node: Location Counter159107
++Node: Operators163411
++Node: Evaluation164333
++Node: Expression Section165697
++Node: Builtin Functions167186
++Node: Implicit Linker Scripts174678
++Node: Machine Dependent175453
++Node: H8/300176314
++Node: i960177939
++Node: ARM179624
++Node: HPPA ELF32182540
++Node: MMIX184163
++Node: MSP430185380
++Node: PowerPC ELF32186428
++Node: PowerPC64 ELF64188719
++Node: TI COFF193133
++Node: WIN32193665
++Node: Xtensa211739
++Node: BFD214861
++Node: BFD outline216316
++Node: BFD information loss217602
++Node: Canonical format220119
++Node: Reporting Bugs224476
++Node: Bug Criteria225170
++Node: Bug Reporting225869
++Node: MRI232894
++Node: GNU Free Documentation License237537
++Node: Index257251
++
++End Tag Table
+diff -Nrup binutils-2.17/ld/ld.info.r31496 binutils-2.17.atmel.1.3.0/ld/ld.info.r31496
+--- binutils-2.17/ld/ld.info.r31496 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/ld.info.r31496 2007-09-28 10:30:45.000000000 +0200
+@@ -0,0 +1,6721 @@
++This is .././ld/ld.info, produced by makeinfo version 4.8 from
++.././ld/ld.texinfo.
++
++START-INFO-DIR-ENTRY
++* Ld: (ld). The GNU linker.
++END-INFO-DIR-ENTRY
++
++ This file documents the GNU linker LD version 2.17.
++
++ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
++2002, 2003, 2004 Free Software Foundation, Inc.
++
++
++File: ld.info, Node: Top, Next: Overview, Up: (dir)
++
++Using ld
++********
++
++This file documents the GNU linker ld version 2.17.
++
++ This document is distributed under the terms of the GNU Free
++Documentation License. A copy of the license is included in the
++section entitled "GNU Free Documentation License".
++
++* Menu:
++
++* Overview:: Overview
++* Invocation:: Invocation
++* Scripts:: Linker Scripts
++
++* Machine Dependent:: Machine Dependent Features
++
++* BFD:: BFD
++
++* Reporting Bugs:: Reporting Bugs
++* MRI:: MRI Compatible Script Files
++* GNU Free Documentation License:: GNU Free Documentation License
++* Index:: Index
++
++
++File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top
++
++1 Overview
++**********
++
++`ld' combines a number of object and archive files, relocates their
++data and ties up symbol references. Usually the last step in compiling
++a program is to run `ld'.
++
++ `ld' accepts Linker Command Language files written in a superset of
++AT&T's Link Editor Command Language syntax, to provide explicit and
++total control over the linking process.
++
++ This version of `ld' uses the general purpose BFD libraries to
++operate on object files. This allows `ld' to read, combine, and write
++object files in many different formats--for example, COFF or `a.out'.
++Different formats may be linked together to produce any available kind
++of object file. *Note BFD::, for more information.
++
++ Aside from its flexibility, the GNU linker is more helpful than other
++linkers in providing diagnostic information. Many linkers abandon
++execution immediately upon encountering an error; whenever possible,
++`ld' continues executing, allowing you to identify other errors (or, in
++some cases, to get an output file in spite of the error).
++
++
++File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top
++
++2 Invocation
++************
++
++The GNU linker `ld' is meant to cover a broad range of situations, and
++to be as compatible as possible with other linkers. As a result, you
++have many choices to control its behavior.
++
++* Menu:
++
++* Options:: Command Line Options
++* Environment:: Environment Variables
++
++
++File: ld.info, Node: Options, Next: Environment, Up: Invocation
++
++2.1 Command Line Options
++========================
++
++ The linker supports a plethora of command-line options, but in actual
++practice few of them are used in any particular context. For instance,
++a frequent use of `ld' is to link standard Unix object files on a
++standard, supported Unix system. On such a system, to link a file
++`hello.o':
++
++ ld -o OUTPUT /lib/crt0.o hello.o -lc
++
++ This tells `ld' to produce a file called OUTPUT as the result of
++linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a',
++which will come from the standard search directories. (See the
++discussion of the `-l' option below.)
++
++ Some of the command-line options to `ld' may be specified at any
++point in the command line. However, options which refer to files, such
++as `-l' or `-T', cause the file to be read at the point at which the
++option appears in the command line, relative to the object files and
++other file options. Repeating non-file options with a different
++argument will either have no further effect, or override prior
++occurrences (those further to the left on the command line) of that
++option. Options which may be meaningfully specified more than once are
++noted in the descriptions below.
++
++ Non-option arguments are object files or archives which are to be
++linked together. They may follow, precede, or be mixed in with
++command-line options, except that an object file argument may not be
++placed between an option and its argument.
++
++ Usually the linker is invoked with at least one object file, but you
++can specify other forms of binary input files using `-l', `-R', and the
++script command language. If _no_ binary input files at all are
++specified, the linker does not produce any output, and issues the
++message `No input files'.
++
++ If the linker cannot recognize the format of an object file, it will
++assume that it is a linker script. A script specified in this way
++augments the main linker script used for the link (either the default
++linker script or the one specified by using `-T'). This feature
++permits the linker to link against a file which appears to be an object
++or an archive, but actually merely defines some symbol values, or uses
++`INPUT' or `GROUP' to load other objects. Note that specifying a
++script in this way merely augments the main linker script; use the `-T'
++option to replace the default linker script entirely. *Note Scripts::.
++
++ For options whose names are a single letter, option arguments must
++either follow the option letter without intervening whitespace, or be
++given as separate arguments immediately following the option that
++requires them.
++
++ For options whose names are multiple letters, either one dash or two
++can precede the option name; for example, `-trace-symbol' and
++`--trace-symbol' are equivalent. Note--there is one exception to this
++rule. Multiple letter options that start with a lower case 'o' can
++only be preceeded by two dashes. This is to reduce confusion with the
++`-o' option. So for example `-omagic' sets the output file name to
++`magic' whereas `--omagic' sets the NMAGIC flag on the output.
++
++ Arguments to multiple-letter options must either be separated from
++the option name by an equals sign, or be given as separate arguments
++immediately following the option that requires them. For example,
++`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique
++abbreviations of the names of multiple-letter options are accepted.
++
++ Note--if the linker is being invoked indirectly, via a compiler
++driver (e.g. `gcc') then all the linker command line options should be
++prefixed by `-Wl,' (or whatever is appropriate for the particular
++compiler driver) like this:
++
++ gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
++
++ This is important, because otherwise the compiler driver program may
++silently drop the linker options, resulting in a bad link.
++
++ Here is a table of the generic command line switches accepted by the
++GNU linker:
++
++`@FILE'
++ Read command-line options from FILE. The options read are
++ inserted in place of the original @FILE option. If FILE does not
++ exist, or cannot be read, then the option will be treated
++ literally, and not removed.
++
++ Options in FILE are separated by whitespace. A whitespace
++ character may be included in an option by surrounding the entire
++ option in either single or double quotes. Any character
++ (including a backslash) may be included by prefixing the character
++ to be included with a backslash. The FILE may itself contain
++ additional @FILE options; any such options will be processed
++ recursively.
++
++`-aKEYWORD'
++ This option is supported for HP/UX compatibility. The KEYWORD
++ argument must be one of the strings `archive', `shared', or
++ `default'. `-aarchive' is functionally equivalent to `-Bstatic',
++ and the other two keywords are functionally equivalent to
++ `-Bdynamic'. This option may be used any number of times.
++
++`-AARCHITECTURE'
++`--architecture=ARCHITECTURE'
++ In the current release of `ld', this option is useful only for the
++ Intel 960 family of architectures. In that `ld' configuration, the
++ ARCHITECTURE argument identifies the particular architecture in
++ the 960 family, enabling some safeguards and modifying the
++ archive-library search path. *Note `ld' and the Intel 960 family:
++ i960, for details.
++
++ Future releases of `ld' may support similar functionality for
++ other architecture families.
++
++`-b INPUT-FORMAT'
++`--format=INPUT-FORMAT'
++ `ld' may be configured to support more than one kind of object
++ file. If your `ld' is configured this way, you can use the `-b'
++ option to specify the binary format for input object files that
++ follow this option on the command line. Even when `ld' is
++ configured to support alternative object formats, you don't
++ usually need to specify this, as `ld' should be configured to
++ expect as a default input format the most usual format on each
++ machine. INPUT-FORMAT is a text string, the name of a particular
++ format supported by the BFD libraries. (You can list the
++ available binary formats with `objdump -i'.) *Note BFD::.
++
++ You may want to use this option if you are linking files with an
++ unusual binary format. You can also use `-b' to switch formats
++ explicitly (when linking object files of different formats), by
++ including `-b INPUT-FORMAT' before each group of object files in a
++ particular format.
++
++ The default format is taken from the environment variable
++ `GNUTARGET'. *Note Environment::. You can also define the input
++ format from a script, using the command `TARGET'; see *Note Format
++ Commands::.
++
++`-c MRI-COMMANDFILE'
++`--mri-script=MRI-COMMANDFILE'
++ For compatibility with linkers produced by MRI, `ld' accepts script
++ files written in an alternate, restricted command language,
++ described in *Note MRI Compatible Script Files: MRI. Introduce
++ MRI script files with the option `-c'; use the `-T' option to run
++ linker scripts written in the general-purpose `ld' scripting
++ language. If MRI-CMDFILE does not exist, `ld' looks for it in the
++ directories specified by any `-L' options.
++
++`-d'
++`-dc'
++`-dp'
++ These three options are equivalent; multiple forms are supported
++ for compatibility with other linkers. They assign space to common
++ symbols even if a relocatable output file is specified (with
++ `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same
++ effect. *Note Miscellaneous Commands::.
++
++`-e ENTRY'
++`--entry=ENTRY'
++ Use ENTRY as the explicit symbol for beginning execution of your
++ program, rather than the default entry point. If there is no
++ symbol named ENTRY, the linker will try to parse ENTRY as a number,
++ and use that as the entry address (the number will be interpreted
++ in base 10; you may use a leading `0x' for base 16, or a leading
++ `0' for base 8). *Note Entry Point::, for a discussion of defaults
++ and other ways of specifying the entry point.
++
++`--exclude-libs LIB,LIB,...'
++ Specifies a list of archive libraries from which symbols should
++ not be automatically exported. The library names may be delimited
++ by commas or colons. Specifying `--exclude-libs ALL' excludes
++ symbols in all archive libraries from automatic export. This
++ option is available only for the i386 PE targeted port of the
++ linker and for ELF targeted ports. For i386 PE, symbols
++ explicitly listed in a .def file are still exported, regardless of
++ this option. For ELF targeted ports, symbols affected by this
++ option will be treated as hidden.
++
++`-E'
++`--export-dynamic'
++ When creating a dynamically linked executable, add all symbols to
++ the dynamic symbol table. The dynamic symbol table is the set of
++ symbols which are visible from dynamic objects at run time.
++
++ If you do not use this option, the dynamic symbol table will
++ normally contain only those symbols which are referenced by some
++ dynamic object mentioned in the link.
++
++ If you use `dlopen' to load a dynamic object which needs to refer
++ back to the symbols defined by the program, rather than some other
++ dynamic object, then you will probably need to use this option when
++ linking the program itself.
++
++ You can also use the version script to control what symbols should
++ be added to the dynamic symbol table if the output format supports
++ it. See the description of `--version-script' in *Note VERSION::.
++
++`-EB'
++ Link big-endian objects. This affects the default output format.
++
++`-EL'
++ Link little-endian objects. This affects the default output
++ format.
++
++`-f'
++`--auxiliary NAME'
++ When creating an ELF shared object, set the internal DT_AUXILIARY
++ field to the specified name. This tells the dynamic linker that
++ the symbol table of the shared object should be used as an
++ auxiliary filter on the symbol table of the shared object NAME.
++
++ If you later link a program against this filter object, then, when
++ you run the program, the dynamic linker will see the DT_AUXILIARY
++ field. If the dynamic linker resolves any symbols from the filter
++ object, it will first check whether there is a definition in the
++ shared object NAME. If there is one, it will be used instead of
++ the definition in the filter object. The shared object NAME need
++ not exist. Thus the shared object NAME may be used to provide an
++ alternative implementation of certain functions, perhaps for
++ debugging or for machine specific performance.
++
++ This option may be specified more than once. The DT_AUXILIARY
++ entries will be created in the order in which they appear on the
++ command line.
++
++`-F NAME'
++`--filter NAME'
++ When creating an ELF shared object, set the internal DT_FILTER
++ field to the specified name. This tells the dynamic linker that
++ the symbol table of the shared object which is being created
++ should be used as a filter on the symbol table of the shared
++ object NAME.
++
++ If you later link a program against this filter object, then, when
++ you run the program, the dynamic linker will see the DT_FILTER
++ field. The dynamic linker will resolve symbols according to the
++ symbol table of the filter object as usual, but it will actually
++ link to the definitions found in the shared object NAME. Thus the
++ filter object can be used to select a subset of the symbols
++ provided by the object NAME.
++
++ Some older linkers used the `-F' option throughout a compilation
++ toolchain for specifying object-file format for both input and
++ output object files. The GNU linker uses other mechanisms for
++ this purpose: the `-b', `--format', `--oformat' options, the
++ `TARGET' command in linker scripts, and the `GNUTARGET'
++ environment variable. The GNU linker will ignore the `-F' option
++ when not creating an ELF shared object.
++
++`-fini NAME'
++ When creating an ELF executable or shared object, call NAME when
++ the executable or shared object is unloaded, by setting DT_FINI to
++ the address of the function. By default, the linker uses `_fini'
++ as the function to call.
++
++`-g'
++ Ignored. Provided for compatibility with other tools.
++
++`-GVALUE'
++`--gpsize=VALUE'
++ Set the maximum size of objects to be optimized using the GP
++ register to SIZE. This is only meaningful for object file formats
++ such as MIPS ECOFF which supports putting large and small objects
++ into different sections. This is ignored for other object file
++ formats.
++
++`-hNAME'
++`-soname=NAME'
++ When creating an ELF shared object, set the internal DT_SONAME
++ field to the specified name. When an executable is linked with a
++ shared object which has a DT_SONAME field, then when the
++ executable is run the dynamic linker will attempt to load the
++ shared object specified by the DT_SONAME field rather than the
++ using the file name given to the linker.
++
++`-i'
++ Perform an incremental link (same as option `-r').
++
++`-init NAME'
++ When creating an ELF executable or shared object, call NAME when
++ the executable or shared object is loaded, by setting DT_INIT to
++ the address of the function. By default, the linker uses `_init'
++ as the function to call.
++
++`-lARCHIVE'
++`--library=ARCHIVE'
++ Add archive file ARCHIVE to the list of files to link. This
++ option may be used any number of times. `ld' will search its
++ path-list for occurrences of `libARCHIVE.a' for every ARCHIVE
++ specified.
++
++ On systems which support shared libraries, `ld' may also search for
++ libraries with extensions other than `.a'. Specifically, on ELF
++ and SunOS systems, `ld' will search a directory for a library with
++ an extension of `.so' before searching for one with an extension of
++ `.a'. By convention, a `.so' extension indicates a shared library.
++
++ The linker will search an archive only once, at the location where
++ it is specified on the command line. If the archive defines a
++ symbol which was undefined in some object which appeared before
++ the archive on the command line, the linker will include the
++ appropriate file(s) from the archive. However, an undefined
++ symbol in an object appearing later on the command line will not
++ cause the linker to search the archive again.
++
++ See the `-(' option for a way to force the linker to search
++ archives multiple times.
++
++ You may list the same archive multiple times on the command line.
++
++ This type of archive searching is standard for Unix linkers.
++ However, if you are using `ld' on AIX, note that it is different
++ from the behaviour of the AIX linker.
++
++`-LSEARCHDIR'
++`--library-path=SEARCHDIR'
++ Add path SEARCHDIR to the list of paths that `ld' will search for
++ archive libraries and `ld' control scripts. You may use this
++ option any number of times. The directories are searched in the
++ order in which they are specified on the command line.
++ Directories specified on the command line are searched before the
++ default directories. All `-L' options apply to all `-l' options,
++ regardless of the order in which the options appear.
++
++ If SEARCHDIR begins with `=', then the `=' will be replaced by the
++ "sysroot prefix", a path specified when the linker is configured.
++
++ The default set of paths searched (without being specified with
++ `-L') depends on which emulation mode `ld' is using, and in some
++ cases also on how it was configured. *Note Environment::.
++
++ The paths can also be specified in a link script with the
++ `SEARCH_DIR' command. Directories specified this way are searched
++ at the point in which the linker script appears in the command
++ line.
++
++`-mEMULATION'
++ Emulate the EMULATION linker. You can list the available
++ emulations with the `--verbose' or `-V' options.
++
++ If the `-m' option is not used, the emulation is taken from the
++ `LDEMULATION' environment variable, if that is defined.
++
++ Otherwise, the default emulation depends upon how the linker was
++ configured.
++
++`-M'
++`--print-map'
++ Print a link map to the standard output. A link map provides
++ information about the link, including the following:
++
++ * Where object files are mapped into memory.
++
++ * How common symbols are allocated.
++
++ * All archive members included in the link, with a mention of
++ the symbol which caused the archive member to be brought in.
++
++ * The values assigned to symbols.
++
++ Note - symbols whose values are computed by an expression
++ which involves a reference to a previous value of the same
++ symbol may not have correct result displayed in the link map.
++ This is because the linker discards intermediate results and
++ only retains the final value of an expression. Under such
++ circumstances the linker will display the final value
++ enclosed by square brackets. Thus for example a linker
++ script containing:
++
++ foo = 1
++ foo = foo * 4
++ foo = foo + 8
++
++ will produce the following output in the link map if the `-M'
++ option is used:
++
++ 0x00000001 foo = 0x1
++ [0x0000000c] foo = (foo * 0x4)
++ [0x0000000c] foo = (foo + 0x8)
++
++ See *Note Expressions:: for more information about
++ expressions in linker scripts.
++
++`-n'
++`--nmagic'
++ Turn off page alignment of sections, and mark the output as
++ `NMAGIC' if possible.
++
++`-N'
++`--omagic'
++ Set the text and data sections to be readable and writable. Also,
++ do not page-align the data segment, and disable linking against
++ shared libraries. If the output format supports Unix style magic
++ numbers, mark the output as `OMAGIC'. Note: Although a writable
++ text section is allowed for PE-COFF targets, it does not conform
++ to the format specification published by Microsoft.
++
++`--no-omagic'
++ This option negates most of the effects of the `-N' option. It
++ sets the text section to be read-only, and forces the data segment
++ to be page-aligned. Note - this option does not enable linking
++ against shared libraries. Use `-Bdynamic' for this.
++
++`-o OUTPUT'
++`--output=OUTPUT'
++ Use OUTPUT as the name for the program produced by `ld'; if this
++ option is not specified, the name `a.out' is used by default. The
++ script command `OUTPUT' can also specify the output file name.
++
++`-O LEVEL'
++ If LEVEL is a numeric values greater than zero `ld' optimizes the
++ output. This might take significantly longer and therefore
++ probably should only be enabled for the final binary.
++
++`-q'
++`--emit-relocs'
++ Leave relocation sections and contents in fully linked
++ exececutables. Post link analysis and optimization tools may need
++ this information in order to perform correct modifications of
++ executables. This results in larger executables.
++
++ This option is currently only supported on ELF platforms.
++
++`--force-dynamic'
++ Force the output file to have dynamic sections. This option is
++ specific to VxWorks targets.
++
++`-r'
++`--relocatable'
++ Generate relocatable output--i.e., generate an output file that
++ can in turn serve as input to `ld'. This is often called "partial
++ linking". As a side effect, in environments that support standard
++ Unix magic numbers, this option also sets the output file's magic
++ number to `OMAGIC'. If this option is not specified, an absolute
++ file is produced. When linking C++ programs, this option _will
++ not_ resolve references to constructors; to do that, use `-Ur'.
++
++ When an input file does not have the same format as the output
++ file, partial linking is only supported if that input file does
++ not contain any relocations. Different output formats can have
++ further restrictions; for example some `a.out'-based formats do
++ not support partial linking with input files in other formats at
++ all.
++
++ This option does the same thing as `-i'.
++
++`-R FILENAME'
++`--just-symbols=FILENAME'
++ Read symbol names and their addresses from FILENAME, but do not
++ relocate it or include it in the output. This allows your output
++ file to refer symbolically to absolute locations of memory defined
++ in other programs. You may use this option more than once.
++
++ For compatibility with other ELF linkers, if the `-R' option is
++ followed by a directory name, rather than a file name, it is
++ treated as the `-rpath' option.
++
++`-s'
++`--strip-all'
++ Omit all symbol information from the output file.
++
++`-S'
++`--strip-debug'
++ Omit debugger symbol information (but not all symbols) from the
++ output file.
++
++`-t'
++`--trace'
++ Print the names of the input files as `ld' processes them.
++
++`-T SCRIPTFILE'
++`--script=SCRIPTFILE'
++ Use SCRIPTFILE as the linker script. This script replaces `ld''s
++ default linker script (rather than adding to it), so COMMANDFILE
++ must specify everything necessary to describe the output file.
++ *Note Scripts::. If SCRIPTFILE does not exist in the current
++ directory, `ld' looks for it in the directories specified by any
++ preceding `-L' options. Multiple `-T' options accumulate.
++
++`-u SYMBOL'
++`--undefined=SYMBOL'
++ Force SYMBOL to be entered in the output file as an undefined
++ symbol. Doing this may, for example, trigger linking of additional
++ modules from standard libraries. `-u' may be repeated with
++ different option arguments to enter additional undefined symbols.
++ This option is equivalent to the `EXTERN' linker script command.
++
++`-Ur'
++ For anything other than C++ programs, this option is equivalent to
++ `-r': it generates relocatable output--i.e., an output file that
++ can in turn serve as input to `ld'. When linking C++ programs,
++ `-Ur' _does_ resolve references to constructors, unlike `-r'. It
++ does not work to use `-Ur' on files that were themselves linked
++ with `-Ur'; once the constructor table has been built, it cannot
++ be added to. Use `-Ur' only for the last partial link, and `-r'
++ for the others.
++
++`--unique[=SECTION]'
++ Creates a separate output section for every input section matching
++ SECTION, or if the optional wildcard SECTION argument is missing,
++ for every orphan input section. An orphan section is one not
++ specifically mentioned in a linker script. You may use this option
++ multiple times on the command line; It prevents the normal
++ merging of input sections with the same name, overriding output
++ section assignments in a linker script.
++
++`-v'
++`--version'
++`-V'
++ Display the version number for `ld'. The `-V' option also lists
++ the supported emulations.
++
++`-x'
++`--discard-all'
++ Delete all local symbols.
++
++`-X'
++`--discard-locals'
++ Delete all temporary local symbols. For most targets, this is all
++ local symbols whose names begin with `L'.
++
++`-y SYMBOL'
++`--trace-symbol=SYMBOL'
++ Print the name of each linked file in which SYMBOL appears. This
++ option may be given any number of times. On many systems it is
++ necessary to prepend an underscore.
++
++ This option is useful when you have an undefined symbol in your
++ link but don't know where the reference is coming from.
++
++`-Y PATH'
++ Add PATH to the default library search path. This option exists
++ for Solaris compatibility.
++
++`-z KEYWORD'
++ The recognized keywords are:
++ `combreloc'
++ Combines multiple reloc sections and sorts them to make
++ dynamic symbol lookup caching possible.
++
++ `defs'
++ Disallows undefined symbols in object files. Undefined
++ symbols in shared libraries are still allowed.
++
++ `execstack'
++ Marks the object as requiring executable stack.
++
++ `initfirst'
++ This option is only meaningful when building a shared object.
++ It marks the object so that its runtime initialization will
++ occur before the runtime initialization of any other objects
++ brought into the process at the same time. Similarly the
++ runtime finalization of the object will occur after the
++ runtime finalization of any other objects.
++
++ `interpose'
++ Marks the object that its symbol table interposes before all
++ symbols but the primary executable.
++
++ `loadfltr'
++ Marks the object that its filters be processed immediately at
++ runtime.
++
++ `muldefs'
++ Allows multiple definitions.
++
++ `nocombreloc'
++ Disables multiple reloc sections combining.
++
++ `nocopyreloc'
++ Disables production of copy relocs.
++
++ `nodefaultlib'
++ Marks the object that the search for dependencies of this
++ object will ignore any default library search paths.
++
++ `nodelete'
++ Marks the object shouldn't be unloaded at runtime.
++
++ `nodlopen'
++ Marks the object not available to `dlopen'.
++
++ `nodump'
++ Marks the object can not be dumped by `dldump'.
++
++ `noexecstack'
++ Marks the object as not requiring executable stack.
++
++ `norelro'
++ Don't create an ELF `PT_GNU_RELRO' segment header in the
++ object.
++
++ `now'
++ When generating an executable or shared library, mark it to
++ tell the dynamic linker to resolve all symbols when the
++ program is started, or when the shared library is linked to
++ using dlopen, instead of deferring function call resolution
++ to the point when the function is first called.
++
++ `origin'
++ Marks the object may contain $ORIGIN.
++
++ `relro'
++ Create an ELF `PT_GNU_RELRO' segment header in the object.
++
++
++ Other keywords are ignored for Solaris compatibility.
++
++`-( ARCHIVES -)'
++`--start-group ARCHIVES --end-group'
++ The ARCHIVES should be a list of archive files. They may be
++ either explicit file names, or `-l' options.
++
++ The specified archives are searched repeatedly until no new
++ undefined references are created. Normally, an archive is
++ searched only once in the order that it is specified on the
++ command line. If a symbol in that archive is needed to resolve an
++ undefined symbol referred to by an object in an archive that
++ appears later on the command line, the linker would not be able to
++ resolve that reference. By grouping the archives, they all be
++ searched repeatedly until all possible references are resolved.
++
++ Using this option has a significant performance cost. It is best
++ to use it only when there are unavoidable circular references
++ between two or more archives.
++
++`--accept-unknown-input-arch'
++`--no-accept-unknown-input-arch'
++ Tells the linker to accept input files whose architecture cannot be
++ recognised. The assumption is that the user knows what they are
++ doing and deliberately wants to link in these unknown input files.
++ This was the default behaviour of the linker, before release
++ 2.14. The default behaviour from release 2.14 onwards is to
++ reject such input files, and so the `--accept-unknown-input-arch'
++ option has been added to restore the old behaviour.
++
++`--as-needed'
++`--no-as-needed'
++ This option affects ELF DT_NEEDED tags for dynamic libraries
++ mentioned on the command line after the `--as-needed' option.
++ Normally, the linker will add a DT_NEEDED tag for each dynamic
++ library mentioned on the command line, regardless of whether the
++ library is actually needed. `--as-needed' causes DT_NEEDED tags
++ to only be emitted for libraries that satisfy some symbol
++ reference from regular objects which is undefined at the point
++ that the library was linked. `--no-as-needed' restores the
++ default behaviour.
++
++`--add-needed'
++`--no-add-needed'
++ This option affects the treatment of dynamic libraries from ELF
++ DT_NEEDED tags in dynamic libraries mentioned on the command line
++ after the `--no-add-needed' option. Normally, the linker will add
++ a DT_NEEDED tag for each dynamic library from DT_NEEDED tags.
++ `--no-add-needed' causes DT_NEEDED tags will never be emitted for
++ those libraries from DT_NEEDED tags. `--add-needed' restores the
++ default behaviour.
++
++`-assert KEYWORD'
++ This option is ignored for SunOS compatibility.
++
++`-Bdynamic'
++`-dy'
++`-call_shared'
++ Link against dynamic libraries. This is only meaningful on
++ platforms for which shared libraries are supported. This option
++ is normally the default on such platforms. The different variants
++ of this option are for compatibility with various systems. You
++ may use this option multiple times on the command line: it affects
++ library searching for `-l' options which follow it.
++
++`-Bgroup'
++ Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic
++ section. This causes the runtime linker to handle lookups in this
++ object and its dependencies to be performed only inside the group.
++ `--unresolved-symbols=report-all' is implied. This option is only
++ meaningful on ELF platforms which support shared libraries.
++
++`-Bstatic'
++`-dn'
++`-non_shared'
++`-static'
++ Do not link against shared libraries. This is only meaningful on
++ platforms for which shared libraries are supported. The different
++ variants of this option are for compatibility with various
++ systems. You may use this option multiple times on the command
++ line: it affects library searching for `-l' options which follow
++ it. This option also implies `--unresolved-symbols=report-all'.
++ This option can be used with `-shared'. Doing so means that a
++ shared library is being created but that all of the library's
++ external references must be resolved by pulling in entries from
++ static libraries.
++
++`-Bsymbolic'
++ When creating a shared library, bind references to global symbols
++ to the definition within the shared library, if any. Normally, it
++ is possible for a program linked against a shared library to
++ override the definition within the shared library. This option is
++ only meaningful on ELF platforms which support shared libraries.
++
++`--check-sections'
++`--no-check-sections'
++ Asks the linker _not_ to check section addresses after they have
++ been assigned to see if there are any overlaps. Normally the
++ linker will perform this check, and if it finds any overlaps it
++ will produce suitable error messages. The linker does know about,
++ and does make allowances for sections in overlays. The default
++ behaviour can be restored by using the command line switch
++ `--check-sections'.
++
++`--cref'
++ Output a cross reference table. If a linker map file is being
++ generated, the cross reference table is printed to the map file.
++ Otherwise, it is printed on the standard output.
++
++ The format of the table is intentionally simple, so that it may be
++ easily processed by a script if necessary. The symbols are
++ printed out, sorted by name. For each symbol, a list of file
++ names is given. If the symbol is defined, the first file listed
++ is the location of the definition. The remaining files contain
++ references to the symbol.
++
++`--no-define-common'
++ This option inhibits the assignment of addresses to common symbols.
++ The script command `INHIBIT_COMMON_ALLOCATION' has the same effect.
++ *Note Miscellaneous Commands::.
++
++ The `--no-define-common' option allows decoupling the decision to
++ assign addresses to Common symbols from the choice of the output
++ file type; otherwise a non-Relocatable output type forces
++ assigning addresses to Common symbols. Using `--no-define-common'
++ allows Common symbols that are referenced from a shared library to
++ be assigned addresses only in the main program. This eliminates
++ the unused duplicate space in the shared library, and also
++ prevents any possible confusion over resolving to the wrong
++ duplicate when there are many dynamic modules with specialized
++ search paths for runtime symbol resolution.
++
++`--defsym SYMBOL=EXPRESSION'
++ Create a global symbol in the output file, containing the absolute
++ address given by EXPRESSION. You may use this option as many
++ times as necessary to define multiple symbols in the command line.
++ A limited form of arithmetic is supported for the EXPRESSION in
++ this context: you may give a hexadecimal constant or the name of
++ an existing symbol, or use `+' and `-' to add or subtract
++ hexadecimal constants or symbols. If you need more elaborate
++ expressions, consider using the linker command language from a
++ script (*note Assignment: Symbol Definitions: Assignments.).
++ _Note:_ there should be no white space between SYMBOL, the equals
++ sign ("<=>"), and EXPRESSION.
++
++`--demangle[=STYLE]'
++`--no-demangle'
++ These options control whether to demangle symbol names in error
++ messages and other output. When the linker is told to demangle,
++ it tries to present symbol names in a readable fashion: it strips
++ leading underscores if they are used by the object file format,
++ and converts C++ mangled symbol names into user readable names.
++ Different compilers have different mangling styles. The optional
++ demangling style argument can be used to choose an appropriate
++ demangling style for your compiler. The linker will demangle by
++ default unless the environment variable `COLLECT_NO_DEMANGLE' is
++ set. These options may be used to override the default.
++
++`--dynamic-linker FILE'
++ Set the name of the dynamic linker. This is only meaningful when
++ generating dynamically linked ELF executables. The default dynamic
++ linker is normally correct; don't use this unless you know what
++ you are doing.
++
++`--fatal-warnings'
++ Treat all warnings as errors.
++
++`--force-exe-suffix'
++ Make sure that an output file has a .exe suffix.
++
++ If a successfully built fully linked output file does not have a
++ `.exe' or `.dll' suffix, this option forces the linker to copy the
++ output file to one of the same name with a `.exe' suffix. This
++ option is useful when using unmodified Unix makefiles on a
++ Microsoft Windows host, since some versions of Windows won't run
++ an image unless it ends in a `.exe' suffix.
++
++`--no-gc-sections'
++`--gc-sections'
++ Enable garbage collection of unused input sections. It is ignored
++ on targets that do not support this option. This option is not
++ compatible with `-r'. The default behaviour (of not performing
++ this garbage collection) can be restored by specifying
++ `--no-gc-sections' on the command line.
++
++`--help'
++ Print a summary of the command-line options on the standard output
++ and exit.
++
++`--target-help'
++ Print a summary of all target specific options on the standard
++ output and exit.
++
++`-Map MAPFILE'
++ Print a link map to the file MAPFILE. See the description of the
++ `-M' option, above.
++
++`--no-keep-memory'
++ `ld' normally optimizes for speed over memory usage by caching the
++ symbol tables of input files in memory. This option tells `ld' to
++ instead optimize for memory usage, by rereading the symbol tables
++ as necessary. This may be required if `ld' runs out of memory
++ space while linking a large executable.
++
++`--no-undefined'
++`-z defs'
++ Report unresolved symbol references from regular object files.
++ This is done even if the linker is creating a non-symbolic shared
++ library. The switch `--[no-]allow-shlib-undefined' controls the
++ behaviour for reporting unresolved references found in shared
++ libraries being linked in.
++
++`--allow-multiple-definition'
++`-z muldefs'
++ Normally when a symbol is defined multiple times, the linker will
++ report a fatal error. These options allow multiple definitions and
++ the first definition will be used.
++
++`--allow-shlib-undefined'
++`--no-allow-shlib-undefined'
++ Allows (the default) or disallows undefined symbols in shared
++ libraries. This switch is similar to `--no-undefined' except that
++ it determines the behaviour when the undefined symbols are in a
++ shared library rather than a regular object file. It does not
++ affect how undefined symbols in regular object files are handled.
++
++ The reason that `--allow-shlib-undefined' is the default is that
++ the shared library being specified at link time may not be the
++ same as the one that is available at load time, so the symbols
++ might actually be resolvable at load time. Plus there are some
++ systems, (eg BeOS) where undefined symbols in shared libraries is
++ normal. (The kernel patches them at load time to select which
++ function is most appropriate for the current architecture. This
++ is used for example to dynamically select an appropriate memset
++ function). Apparently it is also normal for HPPA shared libraries
++ to have undefined symbols.
++
++`--no-undefined-version'
++ Normally when a symbol has an undefined version, the linker will
++ ignore it. This option disallows symbols with undefined version
++ and a fatal error will be issued instead.
++
++`--default-symver'
++ Create and use a default symbol version (the soname) for
++ unversioned exported symbols.
++
++`--default-imported-symver'
++ Create and use a default symbol version (the soname) for
++ unversioned imported symbols.
++
++`--no-warn-mismatch'
++ Normally `ld' will give an error if you try to link together input
++ files that are mismatched for some reason, perhaps because they
++ have been compiled for different processors or for different
++ endiannesses. This option tells `ld' that it should silently
++ permit such possible errors. This option should only be used with
++ care, in cases when you have taken some special action that
++ ensures that the linker errors are inappropriate.
++
++`--no-whole-archive'
++ Turn off the effect of the `--whole-archive' option for subsequent
++ archive files.
++
++`--noinhibit-exec'
++ Retain the executable output file whenever it is still usable.
++ Normally, the linker will not produce an output file if it
++ encounters errors during the link process; it exits without
++ writing an output file when it issues any error whatsoever.
++
++`-nostdlib'
++ Only search library directories explicitly specified on the
++ command line. Library directories specified in linker scripts
++ (including linker scripts specified on the command line) are
++ ignored.
++
++`--oformat OUTPUT-FORMAT'
++ `ld' may be configured to support more than one kind of object
++ file. If your `ld' is configured this way, you can use the
++ `--oformat' option to specify the binary format for the output
++ object file. Even when `ld' is configured to support alternative
++ object formats, you don't usually need to specify this, as `ld'
++ should be configured to produce as a default output format the most
++ usual format on each machine. OUTPUT-FORMAT is a text string, the
++ name of a particular format supported by the BFD libraries. (You
++ can list the available binary formats with `objdump -i'.) The
++ script command `OUTPUT_FORMAT' can also specify the output format,
++ but this option overrides it. *Note BFD::.
++
++`-pie'
++`--pic-executable'
++ Create a position independent executable. This is currently only
++ supported on ELF platforms. Position independent executables are
++ similar to shared libraries in that they are relocated by the
++ dynamic linker to the virtual address the OS chooses for them
++ (which can vary between invocations). Like normal dynamically
++ linked executables they can be executed and symbols defined in the
++ executable cannot be overridden by shared libraries.
++
++`-qmagic'
++ This option is ignored for Linux compatibility.
++
++`-Qy'
++ This option is ignored for SVR4 compatibility.
++
++`--relax'
++ An option with machine dependent effects. This option is only
++ supported on a few targets. *Note `ld' and the H8/300: H8/300.
++ *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa
++ Processors: Xtensa. *Note `ld' and PowerPC 32-bit ELF Support:
++ PowerPC ELF32.
++
++ On some platforms, the `--relax' option performs global
++ optimizations that become possible when the linker resolves
++ addressing in the program, such as relaxing address modes and
++ synthesizing new instructions in the output object file.
++
++ On some platforms these link time global optimizations may make
++ symbolic debugging of the resulting executable impossible. This
++ is known to be the case for the Matsushita MN10200 and MN10300
++ family of processors.
++
++ On platforms where this is not supported, `--relax' is accepted,
++ but ignored.
++
++`--retain-symbols-file FILENAME'
++ Retain _only_ the symbols listed in the file FILENAME, discarding
++ all others. FILENAME is simply a flat file, with one symbol name
++ per line. This option is especially useful in environments (such
++ as VxWorks) where a large global symbol table is accumulated
++ gradually, to conserve run-time memory.
++
++ `--retain-symbols-file' does _not_ discard undefined symbols, or
++ symbols needed for relocations.
++
++ You may only specify `--retain-symbols-file' once in the command
++ line. It overrides `-s' and `-S'.
++
++`-rpath DIR'
++ Add a directory to the runtime library search path. This is used
++ when linking an ELF executable with shared objects. All `-rpath'
++ arguments are concatenated and passed to the runtime linker, which
++ uses them to locate shared objects at runtime. The `-rpath'
++ option is also used when locating shared objects which are needed
++ by shared objects explicitly included in the link; see the
++ description of the `-rpath-link' option. If `-rpath' is not used
++ when linking an ELF executable, the contents of the environment
++ variable `LD_RUN_PATH' will be used if it is defined.
++
++ The `-rpath' option may also be used on SunOS. By default, on
++ SunOS, the linker will form a runtime search patch out of all the
++ `-L' options it is given. If a `-rpath' option is used, the
++ runtime search path will be formed exclusively using the `-rpath'
++ options, ignoring the `-L' options. This can be useful when using
++ gcc, which adds many `-L' options which may be on NFS mounted
++ filesystems.
++
++ For compatibility with other ELF linkers, if the `-R' option is
++ followed by a directory name, rather than a file name, it is
++ treated as the `-rpath' option.
++
++`-rpath-link DIR'
++ When using ELF or SunOS, one shared library may require another.
++ This happens when an `ld -shared' link includes a shared library
++ as one of the input files.
++
++ When the linker encounters such a dependency when doing a
++ non-shared, non-relocatable link, it will automatically try to
++ locate the required shared library and include it in the link, if
++ it is not included explicitly. In such a case, the `-rpath-link'
++ option specifies the first set of directories to search. The
++ `-rpath-link' option may specify a sequence of directory names
++ either by specifying a list of names separated by colons, or by
++ appearing multiple times.
++
++ This option should be used with caution as it overrides the search
++ path that may have been hard compiled into a shared library. In
++ such a case it is possible to use unintentionally a different
++ search path than the runtime linker would do.
++
++ The linker uses the following search paths to locate required
++ shared libraries.
++ 1. Any directories specified by `-rpath-link' options.
++
++ 2. Any directories specified by `-rpath' options. The difference
++ between `-rpath' and `-rpath-link' is that directories
++ specified by `-rpath' options are included in the executable
++ and used at runtime, whereas the `-rpath-link' option is only
++ effective at link time. It is for the native linker only.
++
++ 3. On an ELF system, if the `-rpath' and `rpath-link' options
++ were not used, search the contents of the environment variable
++ `LD_RUN_PATH'. It is for the native linker only.
++
++ 4. On SunOS, if the `-rpath' option was not used, search any
++ directories specified using `-L' options.
++
++ 5. For a native linker, the contents of the environment variable
++ `LD_LIBRARY_PATH'.
++
++ 6. For a native ELF linker, the directories in `DT_RUNPATH' or
++ `DT_RPATH' of a shared library are searched for shared
++ libraries needed by it. The `DT_RPATH' entries are ignored if
++ `DT_RUNPATH' entries exist.
++
++ 7. The default directories, normally `/lib' and `/usr/lib'.
++
++ 8. For a native linker on an ELF system, if the file
++ `/etc/ld.so.conf' exists, the list of directories found in
++ that file.
++
++ If the required shared library is not found, the linker will issue
++ a warning and continue with the link.
++
++`-shared'
++`-Bshareable'
++ Create a shared library. This is currently only supported on ELF,
++ XCOFF and SunOS platforms. On SunOS, the linker will
++ automatically create a shared library if the `-e' option is not
++ used and there are undefined symbols in the link.
++
++`--sort-common'
++ This option tells `ld' to sort the common symbols by size when it
++ places them in the appropriate output sections. First come all
++ the one byte symbols, then all the two byte, then all the four
++ byte, and then everything else. This is to prevent gaps between
++ symbols due to alignment constraints.
++
++`--sort-section name'
++ This option will apply `SORT_BY_NAME' to all wildcard section
++ patterns in the linker script.
++
++`--sort-section alignment'
++ This option will apply `SORT_BY_ALIGNMENT' to all wildcard section
++ patterns in the linker script.
++
++`--split-by-file [SIZE]'
++ Similar to `--split-by-reloc' but creates a new output section for
++ each input file when SIZE is reached. SIZE defaults to a size of
++ 1 if not given.
++
++`--split-by-reloc [COUNT]'
++ Tries to creates extra sections in the output file so that no
++ single output section in the file contains more than COUNT
++ relocations. This is useful when generating huge relocatable
++ files for downloading into certain real time kernels with the COFF
++ object file format; since COFF cannot represent more than 65535
++ relocations in a single section. Note that this will fail to work
++ with object file formats which do not support arbitrary sections.
++ The linker will not split up individual input sections for
++ redistribution, so if a single input section contains more than
++ COUNT relocations one output section will contain that many
++ relocations. COUNT defaults to a value of 32768.
++
++`--stats'
++ Compute and display statistics about the operation of the linker,
++ such as execution time and memory usage.
++
++`--sysroot=DIRECTORY'
++ Use DIRECTORY as the location of the sysroot, overriding the
++ configure-time default. This option is only supported by linkers
++ that were configured using `--with-sysroot'.
++
++`--traditional-format'
++ For some targets, the output of `ld' is different in some ways from
++ the output of some existing linker. This switch requests `ld' to
++ use the traditional format instead.
++
++ For example, on SunOS, `ld' combines duplicate entries in the
++ symbol string table. This can reduce the size of an output file
++ with full debugging information by over 30 percent.
++ Unfortunately, the SunOS `dbx' program can not read the resulting
++ program (`gdb' has no trouble). The `--traditional-format' switch
++ tells `ld' to not combine duplicate entries.
++
++`--section-start SECTIONNAME=ORG'
++ Locate a section in the output file at the absolute address given
++ by ORG. You may use this option as many times as necessary to
++ locate multiple sections in the command line. ORG must be a
++ single hexadecimal integer; for compatibility with other linkers,
++ you may omit the leading `0x' usually associated with hexadecimal
++ values. _Note:_ there should be no white space between
++ SECTIONNAME, the equals sign ("<=>"), and ORG.
++
++`-Tbss ORG'
++`-Tdata ORG'
++`-Ttext ORG'
++ Same as -section-start, with `.bss', `.data' or `.text' as the
++ SECTIONNAME.
++
++`--unresolved-symbols=METHOD'
++ Determine how to handle unresolved symbols. There are four
++ possible values for `method':
++
++ `ignore-all'
++ Do not report any unresolved symbols.
++
++ `report-all'
++ Report all unresolved symbols. This is the default.
++
++ `ignore-in-object-files'
++ Report unresolved symbols that are contained in shared
++ libraries, but ignore them if they come from regular object
++ files.
++
++ `ignore-in-shared-libs'
++ Report unresolved symbols that come from regular object
++ files, but ignore them if they come from shared libraries.
++ This can be useful when creating a dynamic binary and it is
++ known that all the shared libraries that it should be
++ referencing are included on the linker's command line.
++
++ The behaviour for shared libraries on their own can also be
++ controlled by the `--[no-]allow-shlib-undefined' option.
++
++ Normally the linker will generate an error message for each
++ reported unresolved symbol but the option
++ `--warn-unresolved-symbols' can change this to a warning.
++
++`--dll-verbose'
++`--verbose'
++ Display the version number for `ld' and list the linker emulations
++ supported. Display which input files can and cannot be opened.
++ Display the linker script being used by the linker.
++
++`--version-script=VERSION-SCRIPTFILE'
++ Specify the name of a version script to the linker. This is
++ typically used when creating shared libraries to specify
++ additional information about the version hierarchy for the library
++ being created. This option is only meaningful on ELF platforms
++ which support shared libraries. *Note VERSION::.
++
++`--warn-common'
++ Warn when a common symbol is combined with another common symbol
++ or with a symbol definition. Unix linkers allow this somewhat
++ sloppy practise, but linkers on some other operating systems do
++ not. This option allows you to find potential problems from
++ combining global symbols. Unfortunately, some C libraries use
++ this practise, so you may get some warnings about symbols in the
++ libraries as well as in your programs.
++
++ There are three kinds of global symbols, illustrated here by C
++ examples:
++
++ `int i = 1;'
++ A definition, which goes in the initialized data section of
++ the output file.
++
++ `extern int i;'
++ An undefined reference, which does not allocate space. There
++ must be either a definition or a common symbol for the
++ variable somewhere.
++
++ `int i;'
++ A common symbol. If there are only (one or more) common
++ symbols for a variable, it goes in the uninitialized data
++ area of the output file. The linker merges multiple common
++ symbols for the same variable into a single symbol. If they
++ are of different sizes, it picks the largest size. The
++ linker turns a common symbol into a declaration, if there is
++ a definition of the same variable.
++
++ The `--warn-common' option can produce five kinds of warnings.
++ Each warning consists of a pair of lines: the first describes the
++ symbol just encountered, and the second describes the previous
++ symbol encountered with the same name. One or both of the two
++ symbols will be a common symbol.
++
++ 1. Turning a common symbol into a reference, because there is
++ already a definition for the symbol.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overridden by definition
++ FILE(SECTION): warning: defined here
++
++ 2. Turning a common symbol into a reference, because a later
++ definition for the symbol is encountered. This is the same
++ as the previous case, except that the symbols are encountered
++ in a different order.
++ FILE(SECTION): warning: definition of `SYMBOL'
++ overriding common
++ FILE(SECTION): warning: common is here
++
++ 3. Merging a common symbol with a previous same-sized common
++ symbol.
++ FILE(SECTION): warning: multiple common
++ of `SYMBOL'
++ FILE(SECTION): warning: previous common is here
++
++ 4. Merging a common symbol with a previous larger common symbol.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overridden by larger common
++ FILE(SECTION): warning: larger common is here
++
++ 5. Merging a common symbol with a previous smaller common
++ symbol. This is the same as the previous case, except that
++ the symbols are encountered in a different order.
++ FILE(SECTION): warning: common of `SYMBOL'
++ overriding smaller common
++ FILE(SECTION): warning: smaller common is here
++
++`--warn-constructors'
++ Warn if any global constructors are used. This is only useful for
++ a few object file formats. For formats like COFF or ELF, the
++ linker can not detect the use of global constructors.
++
++`--warn-multiple-gp'
++ Warn if multiple global pointer values are required in the output
++ file. This is only meaningful for certain processors, such as the
++ Alpha. Specifically, some processors put large-valued constants
++ in a special section. A special register (the global pointer)
++ points into the middle of this section, so that constants can be
++ loaded efficiently via a base-register relative addressing mode.
++ Since the offset in base-register relative mode is fixed and
++ relatively small (e.g., 16 bits), this limits the maximum size of
++ the constant pool. Thus, in large programs, it is often necessary
++ to use multiple global pointer values in order to be able to
++ address all possible constants. This option causes a warning to
++ be issued whenever this case occurs.
++
++`--warn-once'
++ Only warn once for each undefined symbol, rather than once per
++ module which refers to it.
++
++`--warn-section-align'
++ Warn if the address of an output section is changed because of
++ alignment. Typically, the alignment will be set by an input
++ section. The address will only be changed if it not explicitly
++ specified; that is, if the `SECTIONS' command does not specify a
++ start address for the section (*note SECTIONS::).
++
++`--warn-shared-textrel'
++ Warn if the linker adds a DT_TEXTREL to a shared object.
++
++`--warn-unresolved-symbols'
++ If the linker is going to report an unresolved symbol (see the
++ option `--unresolved-symbols') it will normally generate an error.
++ This option makes it generate a warning instead.
++
++`--error-unresolved-symbols'
++ This restores the linker's default behaviour of generating errors
++ when it is reporting unresolved symbols.
++
++`--whole-archive'
++ For each archive mentioned on the command line after the
++ `--whole-archive' option, include every object file in the archive
++ in the link, rather than searching the archive for the required
++ object files. This is normally used to turn an archive file into
++ a shared library, forcing every object to be included in the
++ resulting shared library. This option may be used more than once.
++
++ Two notes when using this option from gcc: First, gcc doesn't know
++ about this option, so you have to use `-Wl,-whole-archive'.
++ Second, don't forget to use `-Wl,-no-whole-archive' after your
++ list of archives, because gcc will add its own list of archives to
++ your link and you may not want this flag to affect those as well.
++
++`--wrap SYMBOL'
++ Use a wrapper function for SYMBOL. Any undefined reference to
++ SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined
++ reference to `__real_SYMBOL' will be resolved to SYMBOL.
++
++ This can be used to provide a wrapper for a system function. The
++ wrapper function should be called `__wrap_SYMBOL'. If it wishes
++ to call the system function, it should call `__real_SYMBOL'.
++
++ Here is a trivial example:
++
++ void *
++ __wrap_malloc (size_t c)
++ {
++ printf ("malloc called with %zu\n", c);
++ return __real_malloc (c);
++ }
++
++ If you link other code with this file using `--wrap malloc', then
++ all calls to `malloc' will call the function `__wrap_malloc'
++ instead. The call to `__real_malloc' in `__wrap_malloc' will call
++ the real `malloc' function.
++
++ You may wish to provide a `__real_malloc' function as well, so that
++ links without the `--wrap' option will succeed. If you do this,
++ you should not put the definition of `__real_malloc' in the same
++ file as `__wrap_malloc'; if you do, the assembler may resolve the
++ call before the linker has a chance to wrap it to `malloc'.
++
++`--eh-frame-hdr'
++ Request creation of `.eh_frame_hdr' section and ELF
++ `PT_GNU_EH_FRAME' segment header.
++
++`--enable-new-dtags'
++`--disable-new-dtags'
++ This linker can create the new dynamic tags in ELF. But the older
++ ELF systems may not understand them. If you specify
++ `--enable-new-dtags', the dynamic tags will be created as needed.
++ If you specify `--disable-new-dtags', no new dynamic tags will be
++ created. By default, the new dynamic tags are not created. Note
++ that those options are only available for ELF systems.
++
++`--hash-size=NUMBER'
++ Set the default size of the linker's hash tables to a prime number
++ close to NUMBER. Increasing this value can reduce the length of
++ time it takes the linker to perform its tasks, at the expense of
++ increasing the linker's memory requirements. Similarly reducing
++ this value can reduce the memory requirements at the expense of
++ speed.
++
++`--reduce-memory-overheads'
++ This option reduces memory requirements at ld runtime, at the
++ expense of linking speed. This was introduced to select the old
++ O(n^2) algorithm for link map file generation, rather than the new
++ O(n) algorithm which uses about 40% more memory for symbol storage.
++
++ Another effect of the switch is to set the default hash table size
++ to 1021, which again saves memory at the cost of lengthening the
++ linker's run time. This is not done however if the `--hash-size'
++ switch has been used.
++
++ The `--reduce-memory-overheads' switch may be also be used to
++ enable other tradeoffs in future versions of the linker.
++
++
++2.1.1 Options Specific to i386 PE Targets
++-----------------------------------------
++
++The i386 PE linker supports the `-shared' option, which causes the
++output to be a dynamically linked library (DLL) instead of a normal
++executable. You should name the output `*.dll' when you use this
++option. In addition, the linker fully supports the standard `*.def'
++files, which may be specified on the linker command line like an object
++file (in fact, it should precede archives it exports symbols from, to
++ensure that they get linked in, just like a normal object file).
++
++ In addition to the options common to all targets, the i386 PE linker
++support additional command line options that are specific to the i386
++PE target. Options that take values may be separated from their values
++by either a space or an equals sign.
++
++`--add-stdcall-alias'
++ If given, symbols with a stdcall suffix (@NN) will be exported
++ as-is and also with the suffix stripped. [This option is specific
++ to the i386 PE targeted port of the linker]
++
++`--base-file FILE'
++ Use FILE as the name of a file in which to save the base addresses
++ of all the relocations needed for generating DLLs with `dlltool'.
++ [This is an i386 PE specific option]
++
++`--dll'
++ Create a DLL instead of a regular executable. You may also use
++ `-shared' or specify a `LIBRARY' in a given `.def' file. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--enable-stdcall-fixup'
++`--disable-stdcall-fixup'
++ If the link finds a symbol that it cannot resolve, it will attempt
++ to do "fuzzy linking" by looking for another defined symbol that
++ differs only in the format of the symbol name (cdecl vs stdcall)
++ and will resolve that symbol by linking to the match. For
++ example, the undefined symbol `_foo' might be linked to the
++ function `_foo@12', or the undefined symbol `_bar@16' might be
++ linked to the function `_bar'. When the linker does this, it
++ prints a warning, since it normally should have failed to link,
++ but sometimes import libraries generated from third-party dlls may
++ need this feature to be usable. If you specify
++ `--enable-stdcall-fixup', this feature is fully enabled and
++ warnings are not printed. If you specify
++ `--disable-stdcall-fixup', this feature is disabled and such
++ mismatches are considered to be errors. [This option is specific
++ to the i386 PE targeted port of the linker]
++
++`--export-all-symbols'
++ If given, all global symbols in the objects used to build a DLL
++ will be exported by the DLL. Note that this is the default if
++ there otherwise wouldn't be any exported symbols. When symbols are
++ explicitly exported via DEF files or implicitly exported via
++ function attributes, the default is to not export anything else
++ unless this option is given. Note that the symbols `DllMain@12',
++ `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will
++ not be automatically exported. Also, symbols imported from other
++ DLLs will not be re-exported, nor will symbols specifying the
++ DLL's internal layout such as those beginning with `_head_' or
++ ending with `_iname'. In addition, no symbols from `libgcc',
++ `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols
++ whose names begin with `__rtti_' or `__builtin_' will not be
++ exported, to help with C++ DLLs. Finally, there is an extensive
++ list of cygwin-private symbols that are not exported (obviously,
++ this applies on when building DLLs for cygwin targets). These
++ cygwin-excludes are: `_cygwin_dll_entry@12',
++ `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12',
++ `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0',
++ `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and
++ `environ'. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--exclude-symbols SYMBOL,SYMBOL,...'
++ Specifies a list of symbols which should not be automatically
++ exported. The symbol names may be delimited by commas or colons.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--file-alignment'
++ Specify the file alignment. Sections in the file will always
++ begin at file offsets which are multiples of this number. This
++ defaults to 512. [This option is specific to the i386 PE targeted
++ port of the linker]
++
++`--heap RESERVE'
++`--heap RESERVE,COMMIT'
++ Specify the amount of memory to reserve (and optionally commit) to
++ be used as heap for this program. The default is 1Mb reserved, 4K
++ committed. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--image-base VALUE'
++ Use VALUE as the base address of your program or dll. This is the
++ lowest memory location that will be used when your program or dll
++ is loaded. To reduce the need to relocate and improve performance
++ of your dlls, each should have a unique base address and not
++ overlap any other dlls. The default is 0x400000 for executables,
++ and 0x10000000 for dlls. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--kill-at'
++ If given, the stdcall suffixes (@NN) will be stripped from symbols
++ before they are exported. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--large-address-aware'
++ If given, the appropriate bit in the "Charateristics" field of the
++ COFF header is set to indicate that this executable supports
++ virtual addresses greater than 2 gigabytes. This should be used
++ in conjuction with the /3GB or /USERVA=VALUE megabytes switch in
++ the "[operating systems]" section of the BOOT.INI. Otherwise,
++ this bit has no effect. [This option is specific to PE targeted
++ ports of the linker]
++
++`--major-image-version VALUE'
++ Sets the major number of the "image version". Defaults to 1.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--major-os-version VALUE'
++ Sets the major number of the "os version". Defaults to 4. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--major-subsystem-version VALUE'
++ Sets the major number of the "subsystem version". Defaults to 4.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--minor-image-version VALUE'
++ Sets the minor number of the "image version". Defaults to 0.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--minor-os-version VALUE'
++ Sets the minor number of the "os version". Defaults to 0. [This
++ option is specific to the i386 PE targeted port of the linker]
++
++`--minor-subsystem-version VALUE'
++ Sets the minor number of the "subsystem version". Defaults to 0.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--output-def FILE'
++ The linker will create the file FILE which will contain a DEF file
++ corresponding to the DLL the linker is generating. This DEF file
++ (which should be called `*.def') may be used to create an import
++ library with `dlltool' or may be used as a reference to
++ automatically or implicitly exported symbols. [This option is
++ specific to the i386 PE targeted port of the linker]
++
++`--out-implib FILE'
++ The linker will create the file FILE which will contain an import
++ lib corresponding to the DLL the linker is generating. This import
++ lib (which should be called `*.dll.a' or `*.a' may be used to link
++ clients against the generated DLL; this behaviour makes it
++ possible to skip a separate `dlltool' import library creation step.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--enable-auto-image-base'
++ Automatically choose the image base for DLLs, unless one is
++ specified using the `--image-base' argument. By using a hash
++ generated from the dllname to create unique image bases for each
++ DLL, in-memory collisions and relocations which can delay program
++ execution are avoided. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--disable-auto-image-base'
++ Do not automatically generate a unique image base. If there is no
++ user-specified image base (`--image-base') then use the platform
++ default. [This option is specific to the i386 PE targeted port of
++ the linker]
++
++`--dll-search-prefix STRING'
++ When linking dynamically to a dll without an import library,
++ search for `<string><basename>.dll' in preference to
++ `lib<basename>.dll'. This behaviour allows easy distinction
++ between DLLs built for the various "subplatforms": native, cygwin,
++ uwin, pw, etc. For instance, cygwin DLLs typically use
++ `--dll-search-prefix=cyg'. [This option is specific to the i386
++ PE targeted port of the linker]
++
++`--enable-auto-import'
++ Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA
++ imports from DLLs, and create the necessary thunking symbols when
++ building the import libraries with those DATA exports. Note: Use
++ of the 'auto-import' extension will cause the text section of the
++ image file to be made writable. This does not conform to the
++ PE-COFF format specification published by Microsoft.
++
++ Using 'auto-import' generally will 'just work' - but sometimes you
++ may see this message:
++
++ "variable '<var>' can't be auto-imported. Please read the
++ documentation for ld's `--enable-auto-import' for details."
++
++ This message occurs when some (sub)expression accesses an address
++ ultimately given by the sum of two constants (Win32 import tables
++ only allow one). Instances where this may occur include accesses
++ to member fields of struct variables imported from a DLL, as well
++ as using a constant index into an array variable imported from a
++ DLL. Any multiword variable (arrays, structs, long long, etc) may
++ trigger this error condition. However, regardless of the exact
++ data type of the offending exported variable, ld will always
++ detect it, issue the warning, and exit.
++
++ There are several ways to address this difficulty, regardless of
++ the data type of the exported variable:
++
++ One way is to use -enable-runtime-pseudo-reloc switch. This leaves
++ the task of adjusting references in your client code for runtime
++ environment, so this method works only when runtime environment
++ supports this feature.
++
++ A second solution is to force one of the 'constants' to be a
++ variable - that is, unknown and un-optimizable at compile time.
++ For arrays, there are two possibilities: a) make the indexee (the
++ array's address) a variable, or b) make the 'constant' index a
++ variable. Thus:
++
++ extern type extern_array[];
++ extern_array[1] -->
++ { volatile type *t=extern_array; t[1] }
++
++ or
++
++ extern type extern_array[];
++ extern_array[1] -->
++ { volatile int t=1; extern_array[t] }
++
++ For structs (and most other multiword data types) the only option
++ is to make the struct itself (or the long long, or the ...)
++ variable:
++
++ extern struct s extern_struct;
++ extern_struct.field -->
++ { volatile struct s *t=&extern_struct; t->field }
++
++ or
++
++ extern long long extern_ll;
++ extern_ll -->
++ { volatile long long * local_ll=&extern_ll; *local_ll }
++
++ A third method of dealing with this difficulty is to abandon
++ 'auto-import' for the offending symbol and mark it with
++ `__declspec(dllimport)'. However, in practise that requires using
++ compile-time #defines to indicate whether you are building a DLL,
++ building client code that will link to the DLL, or merely
++ building/linking to a static library. In making the choice
++ between the various methods of resolving the 'direct address with
++ constant offset' problem, you should consider typical real-world
++ usage:
++
++ Original:
++ --foo.h
++ extern int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ printf("%d\n",arr[1]);
++ }
++
++ Solution 1:
++ --foo.h
++ extern int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ /* This workaround is for win32 and cygwin; do not "optimize" */
++ volatile int *parr = arr;
++ printf("%d\n",parr[1]);
++ }
++
++ Solution 2:
++ --foo.h
++ /* Note: auto-export is assumed (no __declspec(dllexport)) */
++ #if (defined(_WIN32) || defined(__CYGWIN__)) && \
++ !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
++ #define FOO_IMPORT __declspec(dllimport)
++ #else
++ #define FOO_IMPORT
++ #endif
++ extern FOO_IMPORT int arr[];
++ --foo.c
++ #include "foo.h"
++ void main(int argc, char **argv){
++ printf("%d\n",arr[1]);
++ }
++
++ A fourth way to avoid this problem is to re-code your library to
++ use a functional interface rather than a data interface for the
++ offending variables (e.g. set_foo() and get_foo() accessor
++ functions). [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--disable-auto-import'
++ Do not attempt to do sophisticated linking of `_symbol' to
++ `__imp__symbol' for DATA imports from DLLs. [This option is
++ specific to the i386 PE targeted port of the linker]
++
++`--enable-runtime-pseudo-reloc'
++ If your code contains expressions described in -enable-auto-import
++ section, that is, DATA imports from DLL with non-zero offset, this
++ switch will create a vector of 'runtime pseudo relocations' which
++ can be used by runtime environment to adjust references to such
++ data in your client code. [This option is specific to the i386 PE
++ targeted port of the linker]
++
++`--disable-runtime-pseudo-reloc'
++ Do not create pseudo relocations for non-zero offset DATA imports
++ from DLLs. This is the default. [This option is specific to the
++ i386 PE targeted port of the linker]
++
++`--enable-extra-pe-debug'
++ Show additional debug info related to auto-import symbol thunking.
++ [This option is specific to the i386 PE targeted port of the
++ linker]
++
++`--section-alignment'
++ Sets the section alignment. Sections in memory will always begin
++ at addresses which are a multiple of this number. Defaults to
++ 0x1000. [This option is specific to the i386 PE targeted port of
++ the linker]
++
++`--stack RESERVE'
++`--stack RESERVE,COMMIT'
++ Specify the amount of memory to reserve (and optionally commit) to
++ be used as stack for this program. The default is 2Mb reserved, 4K
++ committed. [This option is specific to the i386 PE targeted port
++ of the linker]
++
++`--subsystem WHICH'
++`--subsystem WHICH:MAJOR'
++`--subsystem WHICH:MAJOR.MINOR'
++ Specifies the subsystem under which your program will execute. The
++ legal values for WHICH are `native', `windows', `console',
++ `posix', and `xbox'. You may optionally set the subsystem version
++ also. Numeric values are also accepted for WHICH. [This option
++ is specific to the i386 PE targeted port of the linker]
++
++
++
++File: ld.info, Node: Environment, Prev: Options, Up: Invocation
++
++2.2 Environment Variables
++=========================
++
++You can change the behaviour of `ld' with the environment variables
++`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'.
++
++ `GNUTARGET' determines the input-file object format if you don't use
++`-b' (or its synonym `--format'). Its value should be one of the BFD
++names for an input format (*note BFD::). If there is no `GNUTARGET' in
++the environment, `ld' uses the natural format of the target. If
++`GNUTARGET' is set to `default' then BFD attempts to discover the input
++format by examining binary input files; this method often succeeds, but
++there are potential ambiguities, since there is no method of ensuring
++that the magic number used to specify object-file formats is unique.
++However, the configuration procedure for BFD on each system places the
++conventional format for that system first in the search-list, so
++ambiguities are resolved in favor of convention.
++
++ `LDEMULATION' determines the default emulation if you don't use the
++`-m' option. The emulation can affect various aspects of linker
++behaviour, particularly the default linker script. You can list the
++available emulations with the `--verbose' or `-V' options. If the `-m'
++option is not used, and the `LDEMULATION' environment variable is not
++defined, the default emulation depends upon how the linker was
++configured.
++
++ Normally, the linker will default to demangling symbols. However, if
++`COLLECT_NO_DEMANGLE' is set in the environment, then it will default
++to not demangling symbols. This environment variable is used in a
++similar fashion by the `gcc' linker wrapper program. The default may
++be overridden by the `--demangle' and `--no-demangle' options.
++
++
++File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top
++
++3 Linker Scripts
++****************
++
++Every link is controlled by a "linker script". This script is written
++in the linker command language.
++
++ The main purpose of the linker script is to describe how the
++sections in the input files should be mapped into the output file, and
++to control the memory layout of the output file. Most linker scripts
++do nothing more than this. However, when necessary, the linker script
++can also direct the linker to perform many other operations, using the
++commands described below.
++
++ The linker always uses a linker script. If you do not supply one
++yourself, the linker will use a default script that is compiled into the
++linker executable. You can use the `--verbose' command line option to
++display the default linker script. Certain command line options, such
++as `-r' or `-N', will affect the default linker script.
++
++ You may supply your own linker script by using the `-T' command line
++option. When you do this, your linker script will replace the default
++linker script.
++
++ You may also use linker scripts implicitly by naming them as input
++files to the linker, as though they were files to be linked. *Note
++Implicit Linker Scripts::.
++
++* Menu:
++
++* Basic Script Concepts:: Basic Linker Script Concepts
++* Script Format:: Linker Script Format
++* Simple Example:: Simple Linker Script Example
++* Simple Commands:: Simple Linker Script Commands
++* Assignments:: Assigning Values to Symbols
++* SECTIONS:: SECTIONS Command
++* MEMORY:: MEMORY Command
++* PHDRS:: PHDRS Command
++* VERSION:: VERSION Command
++* Expressions:: Expressions in Linker Scripts
++* Implicit Linker Scripts:: Implicit Linker Scripts
++
++
++File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts
++
++3.1 Basic Linker Script Concepts
++================================
++
++We need to define some basic concepts and vocabulary in order to
++describe the linker script language.
++
++ The linker combines input files into a single output file. The
++output file and each input file are in a special data format known as an
++"object file format". Each file is called an "object file". The
++output file is often called an "executable", but for our purposes we
++will also call it an object file. Each object file has, among other
++things, a list of "sections". We sometimes refer to a section in an
++input file as an "input section"; similarly, a section in the output
++file is an "output section".
++
++ Each section in an object file has a name and a size. Most sections
++also have an associated block of data, known as the "section contents".
++A section may be marked as "loadable", which mean that the contents
++should be loaded into memory when the output file is run. A section
++with no contents may be "allocatable", which means that an area in
++memory should be set aside, but nothing in particular should be loaded
++there (in some cases this memory must be zeroed out). A section which
++is neither loadable nor allocatable typically contains some sort of
++debugging information.
++
++ Every loadable or allocatable output section has two addresses. The
++first is the "VMA", or virtual memory address. This is the address the
++section will have when the output file is run. The second is the
++"LMA", or load memory address. This is the address at which the
++section will be loaded. In most cases the two addresses will be the
++same. An example of when they might be different is when a data section
++is loaded into ROM, and then copied into RAM when the program starts up
++(this technique is often used to initialize global variables in a ROM
++based system). In this case the ROM address would be the LMA, and the
++RAM address would be the VMA.
++
++ You can see the sections in an object file by using the `objdump'
++program with the `-h' option.
++
++ Every object file also has a list of "symbols", known as the "symbol
++table". A symbol may be defined or undefined. Each symbol has a name,
++and each defined symbol has an address, among other information. If
++you compile a C or C++ program into an object file, you will get a
++defined symbol for every defined function and global or static
++variable. Every undefined function or global variable which is
++referenced in the input file will become an undefined symbol.
++
++ You can see the symbols in an object file by using the `nm' program,
++or by using the `objdump' program with the `-t' option.
++
++
++File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts
++
++3.2 Linker Script Format
++========================
++
++Linker scripts are text files.
++
++ You write a linker script as a series of commands. Each command is
++either a keyword, possibly followed by arguments, or an assignment to a
++symbol. You may separate commands using semicolons. Whitespace is
++generally ignored.
++
++ Strings such as file or format names can normally be entered
++directly. If the file name contains a character such as a comma which
++would otherwise serve to separate file names, you may put the file name
++in double quotes. There is no way to use a double quote character in a
++file name.
++
++ You may include comments in linker scripts just as in C, delimited by
++`/*' and `*/'. As in C, comments are syntactically equivalent to
++whitespace.
++
++
++File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts
++
++3.3 Simple Linker Script Example
++================================
++
++Many linker scripts are fairly simple.
++
++ The simplest possible linker script has just one command:
++`SECTIONS'. You use the `SECTIONS' command to describe the memory
++layout of the output file.
++
++ The `SECTIONS' command is a powerful command. Here we will describe
++a simple use of it. Let's assume your program consists only of code,
++initialized data, and uninitialized data. These will be in the
++`.text', `.data', and `.bss' sections, respectively. Let's assume
++further that these are the only sections which appear in your input
++files.
++
++ For this example, let's say that the code should be loaded at address
++0x10000, and that the data should start at address 0x8000000. Here is a
++linker script which will do that:
++ SECTIONS
++ {
++ . = 0x10000;
++ .text : { *(.text) }
++ . = 0x8000000;
++ .data : { *(.data) }
++ .bss : { *(.bss) }
++ }
++
++ You write the `SECTIONS' command as the keyword `SECTIONS', followed
++by a series of symbol assignments and output section descriptions
++enclosed in curly braces.
++
++ The first line inside the `SECTIONS' command of the above example
++sets the value of the special symbol `.', which is the location
++counter. If you do not specify the address of an output section in some
++other way (other ways are described later), the address is set from the
++current value of the location counter. The location counter is then
++incremented by the size of the output section. At the start of the
++`SECTIONS' command, the location counter has the value `0'.
++
++ The second line defines an output section, `.text'. The colon is
++required syntax which may be ignored for now. Within the curly braces
++after the output section name, you list the names of the input sections
++which should be placed into this output section. The `*' is a wildcard
++which matches any file name. The expression `*(.text)' means all
++`.text' input sections in all input files.
++
++ Since the location counter is `0x10000' when the output section
++`.text' is defined, the linker will set the address of the `.text'
++section in the output file to be `0x10000'.
++
++ The remaining lines define the `.data' and `.bss' sections in the
++output file. The linker will place the `.data' output section at
++address `0x8000000'. After the linker places the `.data' output
++section, the value of the location counter will be `0x8000000' plus the
++size of the `.data' output section. The effect is that the linker will
++place the `.bss' output section immediately after the `.data' output
++section in memory.
++
++ The linker will ensure that each output section has the required
++alignment, by increasing the location counter if necessary. In this
++example, the specified addresses for the `.text' and `.data' sections
++will probably satisfy any alignment constraints, but the linker may
++have to create a small gap between the `.data' and `.bss' sections.
++
++ That's it! That's a simple and complete linker script.
++
++
++File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts
++
++3.4 Simple Linker Script Commands
++=================================
++
++In this section we describe the simple linker script commands.
++
++* Menu:
++
++* Entry Point:: Setting the entry point
++* File Commands:: Commands dealing with files
++
++* Format Commands:: Commands dealing with object file formats
++
++* Miscellaneous Commands:: Other linker script commands
++
++
++File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands
++
++3.4.1 Setting the Entry Point
++-----------------------------
++
++The first instruction to execute in a program is called the "entry
++point". You can use the `ENTRY' linker script command to set the entry
++point. The argument is a symbol name:
++ ENTRY(SYMBOL)
++
++ There are several ways to set the entry point. The linker will set
++the entry point by trying each of the following methods in order, and
++stopping when one of them succeeds:
++ * the `-e' ENTRY command-line option;
++
++ * the `ENTRY(SYMBOL)' command in a linker script;
++
++ * the value of the symbol `start', if defined;
++
++ * the address of the first byte of the `.text' section, if present;
++
++ * The address `0'.
++
++
++File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands
++
++3.4.2 Commands Dealing with Files
++---------------------------------
++
++Several linker script commands deal with files.
++
++`INCLUDE FILENAME'
++ Include the linker script FILENAME at this point. The file will
++ be searched for in the current directory, and in any directory
++ specified with the `-L' option. You can nest calls to `INCLUDE'
++ up to 10 levels deep.
++
++`INPUT(FILE, FILE, ...)'
++`INPUT(FILE FILE ...)'
++ The `INPUT' command directs the linker to include the named files
++ in the link, as though they were named on the command line.
++
++ For example, if you always want to include `subr.o' any time you do
++ a link, but you can't be bothered to put it on every link command
++ line, then you can put `INPUT (subr.o)' in your linker script.
++
++ In fact, if you like, you can list all of your input files in the
++ linker script, and then invoke the linker with nothing but a `-T'
++ option.
++
++ In case a "sysroot prefix" is configured, and the filename starts
++ with the `/' character, and the script being processed was located
++ inside the "sysroot prefix", the filename will be looked for in
++ the "sysroot prefix". Otherwise, the linker will try to open the
++ file in the current directory. If it is not found, the linker
++ will search through the archive library search path. See the
++ description of `-L' in *Note Command Line Options: Options.
++
++ If you use `INPUT (-lFILE)', `ld' will transform the name to
++ `libFILE.a', as with the command line argument `-l'.
++
++ When you use the `INPUT' command in an implicit linker script, the
++ files will be included in the link at the point at which the linker
++ script file is included. This can affect archive searching.
++
++`GROUP(FILE, FILE, ...)'
++`GROUP(FILE FILE ...)'
++ The `GROUP' command is like `INPUT', except that the named files
++ should all be archives, and they are searched repeatedly until no
++ new undefined references are created. See the description of `-('
++ in *Note Command Line Options: Options.
++
++`AS_NEEDED(FILE, FILE, ...)'
++`AS_NEEDED(FILE FILE ...)'
++ This construct can appear only inside of the `INPUT' or `GROUP'
++ commands, among other filenames. The files listed will be handled
++ as if they appear directly in the `INPUT' or `GROUP' commands,
++ with the exception of ELF shared libraries, that will be added only
++ when they are actually needed. This construct essentially enables
++ `--as-needed' option for all the files listed inside of it and
++ restores previous `--as-needed' resp. `--no-as-needed' setting
++ afterwards.
++
++`OUTPUT(FILENAME)'
++ The `OUTPUT' command names the output file. Using
++ `OUTPUT(FILENAME)' in the linker script is exactly like using `-o
++ FILENAME' on the command line (*note Command Line Options:
++ Options.). If both are used, the command line option takes
++ precedence.
++
++ You can use the `OUTPUT' command to define a default name for the
++ output file other than the usual default of `a.out'.
++
++`SEARCH_DIR(PATH)'
++ The `SEARCH_DIR' command adds PATH to the list of paths where `ld'
++ looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly
++ like using `-L PATH' on the command line (*note Command Line
++ Options: Options.). If both are used, then the linker will search
++ both paths. Paths specified using the command line option are
++ searched first.
++
++`STARTUP(FILENAME)'
++ The `STARTUP' command is just like the `INPUT' command, except
++ that FILENAME will become the first input file to be linked, as
++ though it were specified first on the command line. This may be
++ useful when using a system in which the entry point is always the
++ start of the first file.
++
++
++File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands
++
++3.4.3 Commands Dealing with Object File Formats
++-----------------------------------------------
++
++A couple of linker script commands deal with object file formats.
++
++`OUTPUT_FORMAT(BFDNAME)'
++`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)'
++ The `OUTPUT_FORMAT' command names the BFD format to use for the
++ output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is
++ exactly like using `--oformat BFDNAME' on the command line (*note
++ Command Line Options: Options.). If both are used, the command
++ line option takes precedence.
++
++ You can use `OUTPUT_FORMAT' with three arguments to use different
++ formats based on the `-EB' and `-EL' command line options. This
++ permits the linker script to set the output format based on the
++ desired endianness.
++
++ If neither `-EB' nor `-EL' are used, then the output format will
++ be the first argument, DEFAULT. If `-EB' is used, the output
++ format will be the second argument, BIG. If `-EL' is used, the
++ output format will be the third argument, LITTLE.
++
++ For example, the default linker script for the MIPS ELF target
++ uses this command:
++ OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
++ This says that the default format for the output file is
++ `elf32-bigmips', but if the user uses the `-EL' command line
++ option, the output file will be created in the `elf32-littlemips'
++ format.
++
++`TARGET(BFDNAME)'
++ The `TARGET' command names the BFD format to use when reading input
++ files. It affects subsequent `INPUT' and `GROUP' commands. This
++ command is like using `-b BFDNAME' on the command line (*note
++ Command Line Options: Options.). If the `TARGET' command is used
++ but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also
++ used to set the format for the output file. *Note BFD::.
++
++
++File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands
++
++3.4.4 Other Linker Script Commands
++----------------------------------
++
++There are a few other linker scripts commands.
++
++`ASSERT(EXP, MESSAGE)'
++ Ensure that EXP is non-zero. If it is zero, then exit the linker
++ with an error code, and print MESSAGE.
++
++`EXTERN(SYMBOL SYMBOL ...)'
++ Force SYMBOL to be entered in the output file as an undefined
++ symbol. Doing this may, for example, trigger linking of additional
++ modules from standard libraries. You may list several SYMBOLs for
++ each `EXTERN', and you may use `EXTERN' multiple times. This
++ command has the same effect as the `-u' command-line option.
++
++`FORCE_COMMON_ALLOCATION'
++ This command has the same effect as the `-d' command-line option:
++ to make `ld' assign space to common symbols even if a relocatable
++ output file is specified (`-r').
++
++`INHIBIT_COMMON_ALLOCATION'
++ This command has the same effect as the `--no-define-common'
++ command-line option: to make `ld' omit the assignment of addresses
++ to common symbols even for a non-relocatable output file.
++
++`NOCROSSREFS(SECTION SECTION ...)'
++ This command may be used to tell `ld' to issue an error about any
++ references among certain output sections.
++
++ In certain types of programs, particularly on embedded systems when
++ using overlays, when one section is loaded into memory, another
++ section will not be. Any direct references between the two
++ sections would be errors. For example, it would be an error if
++ code in one section called a function defined in the other section.
++
++ The `NOCROSSREFS' command takes a list of output section names. If
++ `ld' detects any cross references between the sections, it reports
++ an error and returns a non-zero exit status. Note that the
++ `NOCROSSREFS' command uses output section names, not input section
++ names.
++
++`OUTPUT_ARCH(BFDARCH)'
++ Specify a particular output machine architecture. The argument is
++ one of the names used by the BFD library (*note BFD::). You can
++ see the architecture of an object file by using the `objdump'
++ program with the `-f' option.
++
++
++File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts
++
++3.5 Assigning Values to Symbols
++===============================
++
++You may assign a value to a symbol in a linker script. This will define
++the symbol and place it into the symbol table with a global scope.
++
++* Menu:
++
++* Simple Assignments:: Simple Assignments
++* PROVIDE:: PROVIDE
++* PROVIDE_HIDDEN:: PROVIDE_HIDDEN
++* Source Code Reference:: How to use a linker script defined symbol in source code
++
++
++File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments
++
++3.5.1 Simple Assignments
++------------------------
++
++You may assign to a symbol using any of the C assignment operators:
++
++`SYMBOL = EXPRESSION ;'
++`SYMBOL += EXPRESSION ;'
++`SYMBOL -= EXPRESSION ;'
++`SYMBOL *= EXPRESSION ;'
++`SYMBOL /= EXPRESSION ;'
++`SYMBOL <<= EXPRESSION ;'
++`SYMBOL >>= EXPRESSION ;'
++`SYMBOL &= EXPRESSION ;'
++`SYMBOL |= EXPRESSION ;'
++
++ The first case will define SYMBOL to the value of EXPRESSION. In
++the other cases, SYMBOL must already be defined, and the value will be
++adjusted accordingly.
++
++ The special symbol name `.' indicates the location counter. You may
++only use this within a `SECTIONS' command. *Note Location Counter::.
++
++ The semicolon after EXPRESSION is required.
++
++ Expressions are defined below; see *Note Expressions::.
++
++ You may write symbol assignments as commands in their own right, or
++as statements within a `SECTIONS' command, or as part of an output
++section description in a `SECTIONS' command.
++
++ The section of the symbol will be set from the section of the
++expression; for more information, see *Note Expression Section::.
++
++ Here is an example showing the three different places that symbol
++assignments may be used:
++
++ floating_point = 0;
++ SECTIONS
++ {
++ .text :
++ {
++ *(.text)
++ _etext = .;
++ }
++ _bdata = (. + 3) & ~ 3;
++ .data : { *(.data) }
++ }
++ In this example, the symbol `floating_point' will be defined as
++zero. The symbol `_etext' will be defined as the address following the
++last `.text' input section. The symbol `_bdata' will be defined as the
++address following the `.text' output section aligned upward to a 4 byte
++boundary.
++
++
++File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: Simple Assignments, Up: Assignments
++
++3.5.2 PROVIDE
++-------------
++
++In some cases, it is desirable for a linker script to define a symbol
++only if it is referenced and is not defined by any object included in
++the link. For example, traditional linkers defined the symbol `etext'.
++However, ANSI C requires that the user be able to use `etext' as a
++function name without encountering an error. The `PROVIDE' keyword may
++be used to define a symbol, such as `etext', only if it is referenced
++but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'.
++
++ Here is an example of using `PROVIDE' to define `etext':
++ SECTIONS
++ {
++ .text :
++ {
++ *(.text)
++ _etext = .;
++ PROVIDE(etext = .);
++ }
++ }
++
++ In this example, if the program defines `_etext' (with a leading
++underscore), the linker will give a multiple definition error. If, on
++the other hand, the program defines `etext' (with no leading
++underscore), the linker will silently use the definition in the program.
++If the program references `etext' but does not define it, the linker
++will use the definition in the linker script.
++
++
++File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments
++
++3.5.3 PROVIDE_HIDDEN
++--------------------
++
++Similar to `PROVIDE'. For ELF targeted ports, the symbol will be
++hidden and won't be exported.
++
++
++File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments
++
++3.5.4 Source Code Reference
++---------------------------
++
++Accessing a linker script defined variable from source code is not
++intuitive. In particular a linker script symbol is not equivalent to a
++variable declaration in a high level language, it is instead a symbol
++that does not have a value.
++
++ Before going further, it is important to note that compilers often
++transform names in the source code into different names when they are
++stored in the symbol table. For example, Fortran compilers commonly
++prepend or append an underscore, and C++ performs extensive `name
++mangling'. Therefore there might be a discrepancy between the name of
++a variable as it is used in source code and the name of the same
++variable as it is defined in a linker script. For example in C a
++linker script variable might be referred to as:
++
++ extern int foo;
++
++ But in the linker script it might be defined as:
++
++ _foo = 1000;
++
++ In the remaining examples however it is assumed that no name
++transformation has taken place.
++
++ When a symbol is declared in a high level language such as C, two
++things happen. The first is that the compiler reserves enough space in
++the program's memory to hold the _value_ of the symbol. The second is
++that the compiler creates an entry in the program's symbol table which
++holds the symbol's _address_. ie the symbol table contains the address
++of the block of memory holding the symbol's value. So for example the
++following C declaration, at file scope:
++
++ int foo = 1000;
++
++ creates a entry called `foo' in the symbol table. This entry holds
++the address of an `int' sized block of memory where the number 1000 is
++initially stored.
++
++ When a program references a symbol the compiler generates code that
++first accesses the symbol table to find the address of the symbol's
++memory block and then code to read the value from that memory block.
++So:
++
++ foo = 1;
++
++ looks up the symbol `foo' in the symbol table, gets the address
++associated with this symbol and then writes the value 1 into that
++address. Whereas:
++
++ int * a = & foo;
++
++ looks up the symbol `foo' in the symbol table, gets it address and
++then copies this address into the block of memory associated with the
++variable `a'.
++
++ Linker scripts symbol declarations, by contrast, create an entry in
++the symbol table but do not assign any memory to them. Thus they are
++an address without a value. So for example the linker script
++definition:
++
++ foo = 1000;
++
++ creates an entry in the symbol table called `foo' which holds the
++address of memory location 1000, but nothing special is stored at
++address 1000. This means that you cannot access the _value_ of a
++linker script defined symbol - it has no value - all you can do is
++access the _address_ of a linker script defined symbol.
++
++ Hence when you are using a linker script defined symbol in source
++code you should always take the address of the symbol, and never
++attempt to use its value. For example suppose you want to copy the
++contents of a section of memory called .ROM into a section called
++.FLASH and the linker script contains these declarations:
++
++ start_of_ROM = .ROM;
++ end_of_ROM = .ROM + sizeof (.ROM) - 1;
++ start_of_FLASH = .FLASH;
++
++ Then the C source code to perform the copy would be:
++
++ extern char start_of_ROM, end_of_ROM, start_of_FLASH;
++
++ memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM);
++
++ Note the use of the `&' operators. These are correct.
++
++
++File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts
++
++3.6 SECTIONS Command
++====================
++
++The `SECTIONS' command tells the linker how to map input sections into
++output sections, and how to place the output sections in memory.
++
++ The format of the `SECTIONS' command is:
++ SECTIONS
++ {
++ SECTIONS-COMMAND
++ SECTIONS-COMMAND
++ ...
++ }
++
++ Each SECTIONS-COMMAND may of be one of the following:
++
++ * an `ENTRY' command (*note Entry command: Entry Point.)
++
++ * a symbol assignment (*note Assignments::)
++
++ * an output section description
++
++ * an overlay description
++
++ The `ENTRY' command and symbol assignments are permitted inside the
++`SECTIONS' command for convenience in using the location counter in
++those commands. This can also make the linker script easier to
++understand because you can use those commands at meaningful points in
++the layout of the output file.
++
++ Output section descriptions and overlay descriptions are described
++below.
++
++ If you do not use a `SECTIONS' command in your linker script, the
++linker will place each input section into an identically named output
++section in the order that the sections are first encountered in the
++input files. If all input sections are present in the first file, for
++example, the order of sections in the output file will match the order
++in the first input file. The first section will be at address zero.
++
++* Menu:
++
++* Output Section Description:: Output section description
++* Output Section Name:: Output section name
++* Output Section Address:: Output section address
++* Input Section:: Input section description
++* Output Section Data:: Output section data
++* Output Section Keywords:: Output section keywords
++* Output Section Discarding:: Output section discarding
++* Output Section Attributes:: Output section attributes
++* Overlay Description:: Overlay description
++
++
++File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS
++
++3.6.1 Output Section Description
++--------------------------------
++
++The full description of an output section looks like this:
++ SECTION [ADDRESS] [(TYPE)] :
++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
++
++ Most output sections do not use most of the optional section
++attributes.
++
++ The whitespace around SECTION is required, so that the section name
++is unambiguous. The colon and the curly braces are also required. The
++line breaks and other white space are optional.
++
++ Each OUTPUT-SECTION-COMMAND may be one of the following:
++
++ * a symbol assignment (*note Assignments::)
++
++ * an input section description (*note Input Section::)
++
++ * data values to include directly (*note Output Section Data::)
++
++ * a special output section keyword (*note Output Section Keywords::)
++
++
++File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS
++
++3.6.2 Output Section Name
++-------------------------
++
++The name of the output section is SECTION. SECTION must meet the
++constraints of your output format. In formats which only support a
++limited number of sections, such as `a.out', the name must be one of
++the names supported by the format (`a.out', for example, allows only
++`.text', `.data' or `.bss'). If the output format supports any number
++of sections, but with numbers and not names (as is the case for Oasys),
++the name should be supplied as a quoted numeric string. A section name
++may consist of any sequence of characters, but a name which contains
++any unusual characters such as commas must be quoted.
++
++ The output section name `/DISCARD/' is special; *Note Output Section
++Discarding::.
++
++
++File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS
++
++3.6.3 Output Section Address
++----------------------------
++
++The ADDRESS is an expression for the VMA (the virtual memory address)
++of the output section. If you do not provide ADDRESS, the linker will
++set it based on REGION if present, or otherwise based on the current
++value of the location counter.
++
++ If you provide ADDRESS, the address of the output section will be
++set to precisely that. If you provide neither ADDRESS nor REGION, then
++the address of the output section will be set to the current value of
++the location counter aligned to the alignment requirements of the
++output section. The alignment requirement of the output section is the
++strictest alignment of any input section contained within the output
++section.
++
++ For example,
++ .text . : { *(.text) }
++ and
++ .text : { *(.text) }
++ are subtly different. The first will set the address of the `.text'
++output section to the current value of the location counter. The
++second will set it to the current value of the location counter aligned
++to the strictest alignment of a `.text' input section.
++
++ The ADDRESS may be an arbitrary expression; *Note Expressions::.
++For example, if you want to align the section on a 0x10 byte boundary,
++so that the lowest four bits of the section address are zero, you could
++do something like this:
++ .text ALIGN(0x10) : { *(.text) }
++ This works because `ALIGN' returns the current location counter
++aligned upward to the specified value.
++
++ Specifying ADDRESS for a section will change the value of the
++location counter.
++
++
++File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS
++
++3.6.4 Input Section Description
++-------------------------------
++
++The most common output section command is an input section description.
++
++ The input section description is the most basic linker script
++operation. You use output sections to tell the linker how to lay out
++your program in memory. You use input section descriptions to tell the
++linker how to map the input files into your memory layout.
++
++* Menu:
++
++* Input Section Basics:: Input section basics
++* Input Section Wildcards:: Input section wildcard patterns
++* Input Section Common:: Input section for common symbols
++* Input Section Keep:: Input section and garbage collection
++* Input Section Example:: Input section example
++
++
++File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section
++
++3.6.4.1 Input Section Basics
++............................
++
++An input section description consists of a file name optionally followed
++by a list of section names in parentheses.
++
++ The file name and the section name may be wildcard patterns, which we
++describe further below (*note Input Section Wildcards::).
++
++ The most common input section description is to include all input
++sections with a particular name in the output section. For example, to
++include all input `.text' sections, you would write:
++ *(.text)
++ Here the `*' is a wildcard which matches any file name. To exclude
++a list of files from matching the file name wildcard, EXCLUDE_FILE may
++be used to match all files except the ones specified in the
++EXCLUDE_FILE list. For example:
++ (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors))
++ will cause all .ctors sections from all files except `crtend.o' and
++`otherfile.o' to be included.
++
++ There are two ways to include more than one section:
++ *(.text .rdata)
++ *(.text) *(.rdata)
++ The difference between these is the order in which the `.text' and
++`.rdata' input sections will appear in the output section. In the
++first example, they will be intermingled, appearing in the same order as
++they are found in the linker input. In the second example, all `.text'
++input sections will appear first, followed by all `.rdata' input
++sections.
++
++ You can specify a file name to include sections from a particular
++file. You would do this if one or more of your files contain special
++data that needs to be at a particular location in memory. For example:
++ data.o(.data)
++
++ If you use a file name without a list of sections, then all sections
++in the input file will be included in the output section. This is not
++commonly done, but it may by useful on occasion. For example:
++ data.o
++
++ When you use a file name which does not contain any wild card
++characters, the linker will first see if you also specified the file
++name on the linker command line or in an `INPUT' command. If you did
++not, the linker will attempt to open the file as an input file, as
++though it appeared on the command line. Note that this differs from an
++`INPUT' command, because the linker will not search for the file in the
++archive search path.
++
++
++File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section
++
++3.6.4.2 Input Section Wildcard Patterns
++.......................................
++
++In an input section description, either the file name or the section
++name or both may be wildcard patterns.
++
++ The file name of `*' seen in many examples is a simple wildcard
++pattern for the file name.
++
++ The wildcard patterns are like those used by the Unix shell.
++
++`*'
++ matches any number of characters
++
++`?'
++ matches any single character
++
++`[CHARS]'
++ matches a single instance of any of the CHARS; the `-' character
++ may be used to specify a range of characters, as in `[a-z]' to
++ match any lower case letter
++
++`\'
++ quotes the following character
++
++ When a file name is matched with a wildcard, the wildcard characters
++will not match a `/' character (used to separate directory names on
++Unix). A pattern consisting of a single `*' character is an exception;
++it will always match any file name, whether it contains a `/' or not.
++In a section name, the wildcard characters will match a `/' character.
++
++ File name wildcard patterns only match files which are explicitly
++specified on the command line or in an `INPUT' command. The linker
++does not search directories to expand wildcards.
++
++ If a file name matches more than one wildcard pattern, or if a file
++name appears explicitly and is also matched by a wildcard pattern, the
++linker will use the first match in the linker script. For example, this
++sequence of input section descriptions is probably in error, because the
++`data.o' rule will not be used:
++ .data : { *(.data) }
++ .data1 : { data.o(.data) }
++
++ Normally, the linker will place files and sections matched by
++wildcards in the order in which they are seen during the link. You can
++change this by using the `SORT_BY_NAME' keyword, which appears before a
++wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When
++the `SORT_BY_NAME' keyword is used, the linker will sort the files or
++sections into ascending order by name before placing them in the output
++file.
++
++ `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The
++difference is `SORT_BY_ALIGNMENT' will sort sections into ascending
++order by alignment before placing them in the output file.
++
++ `SORT' is an alias for `SORT_BY_NAME'.
++
++ When there are nested section sorting commands in linker script,
++there can be at most 1 level of nesting for section sorting commands.
++
++ 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)).
++ It will sort the input sections by name first, then by alignment
++ if 2 sections have the same name.
++
++ 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)).
++ It will sort the input sections by alignment first, then by name
++ if 2 sections have the same alignment.
++
++ 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is
++ treated the same as `SORT_BY_NAME' (wildcard section pattern).
++
++ 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section
++ pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard
++ section pattern).
++
++ 5. All other nested section sorting commands are invalid.
++
++ When both command line section sorting option and linker script
++section sorting command are used, section sorting command always takes
++precedence over the command line option.
++
++ If the section sorting command in linker script isn't nested, the
++command line option will make the section sorting command to be treated
++as nested sorting command.
++
++ 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections
++ alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT'
++ (wildcard section pattern)).
++
++ 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with
++ `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT'
++ (`SORT_BY_NAME' (wildcard section pattern)).
++
++ If the section sorting command in linker script is nested, the
++command line option will be ignored.
++
++ If you ever get confused about where input sections are going, use
++the `-M' linker option to generate a map file. The map file shows
++precisely how input sections are mapped to output sections.
++
++ This example shows how wildcard patterns might be used to partition
++files. This linker script directs the linker to place all `.text'
++sections in `.text' and all `.bss' sections in `.bss'. The linker will
++place the `.data' section from all files beginning with an upper case
++character in `.DATA'; for all other files, the linker will place the
++`.data' section in `.data'.
++ SECTIONS {
++ .text : { *(.text) }
++ .DATA : { [A-Z]*(.data) }
++ .data : { *(.data) }
++ .bss : { *(.bss) }
++ }
++
++
++File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section
++
++3.6.4.3 Input Section for Common Symbols
++........................................
++
++A special notation is needed for common symbols, because in many object
++file formats common symbols do not have a particular input section. The
++linker treats common symbols as though they are in an input section
++named `COMMON'.
++
++ You may use file names with the `COMMON' section just as with any
++other input sections. You can use this to place common symbols from a
++particular input file in one section while common symbols from other
++input files are placed in another section.
++
++ In most cases, common symbols in input files will be placed in the
++`.bss' section in the output file. For example:
++ .bss { *(.bss) *(COMMON) }
++
++ Some object file formats have more than one type of common symbol.
++For example, the MIPS ELF object file format distinguishes standard
++common symbols and small common symbols. In this case, the linker will
++use a different special section name for other types of common symbols.
++In the case of MIPS ELF, the linker uses `COMMON' for standard common
++symbols and `.scommon' for small common symbols. This permits you to
++map the different types of common symbols into memory at different
++locations.
++
++ You will sometimes see `[COMMON]' in old linker scripts. This
++notation is now considered obsolete. It is equivalent to `*(COMMON)'.
++
++
++File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section
++
++3.6.4.4 Input Section and Garbage Collection
++............................................
++
++When link-time garbage collection is in use (`--gc-sections'), it is
++often useful to mark sections that should not be eliminated. This is
++accomplished by surrounding an input section's wildcard entry with
++`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'.
++
++
++File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section
++
++3.6.4.5 Input Section Example
++.............................
++
++The following example is a complete linker script. It tells the linker
++to read all of the sections from file `all.o' and place them at the
++start of output section `outputa' which starts at location `0x10000'.
++All of section `.input1' from file `foo.o' follows immediately, in the
++same output section. All of section `.input2' from `foo.o' goes into
++output section `outputb', followed by section `.input1' from `foo1.o'.
++All of the remaining `.input1' and `.input2' sections from any files
++are written to output section `outputc'.
++
++ SECTIONS {
++ outputa 0x10000 :
++ {
++ all.o
++ foo.o (.input1)
++ }
++ outputb :
++ {
++ foo.o (.input2)
++ foo1.o (.input1)
++ }
++ outputc :
++ {
++ *(.input1)
++ *(.input2)
++ }
++ }
++
++
++File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS
++
++3.6.5 Output Section Data
++-------------------------
++
++You can include explicit bytes of data in an output section by using
++`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section
++command. Each keyword is followed by an expression in parentheses
++providing the value to store (*note Expressions::). The value of the
++expression is stored at the current value of the location counter.
++
++ The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two,
++four, and eight bytes (respectively). After storing the bytes, the
++location counter is incremented by the number of bytes stored.
++
++ For example, this will store the byte 1 followed by the four byte
++value of the symbol `addr':
++ BYTE(1)
++ LONG(addr)
++
++ When using a 64 bit host or target, `QUAD' and `SQUAD' are the same;
++they both store an 8 byte, or 64 bit, value. When both host and target
++are 32 bits, an expression is computed as 32 bits. In this case `QUAD'
++stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32
++bit value sign extended to 64 bits.
++
++ If the object file format of the output file has an explicit
++endianness, which is the normal case, the value will be stored in that
++endianness. When the object file format does not have an explicit
++endianness, as is true of, for example, S-records, the value will be
++stored in the endianness of the first input object file.
++
++ Note--these commands only work inside a section description and not
++between them, so the following will produce an error from the linker:
++ SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } }
++ whereas this will work:
++ SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } }
++
++ You may use the `FILL' command to set the fill pattern for the
++current section. It is followed by an expression in parentheses. Any
++otherwise unspecified regions of memory within the section (for example,
++gaps left due to the required alignment of input sections) are filled
++with the value of the expression, repeated as necessary. A `FILL'
++statement covers memory locations after the point at which it occurs in
++the section definition; by including more than one `FILL' statement,
++you can have different fill patterns in different parts of an output
++section.
++
++ This example shows how to fill unspecified regions of memory with the
++value `0x90':
++ FILL(0x90909090)
++
++ The `FILL' command is similar to the `=FILLEXP' output section
++attribute, but it only affects the part of the section following the
++`FILL' command, rather than the entire section. If both are used, the
++`FILL' command takes precedence. *Note Output Section Fill::, for
++details on the fill expression.
++
++
++File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS
++
++3.6.6 Output Section Keywords
++-----------------------------
++
++There are a couple of keywords which can appear as output section
++commands.
++
++`CREATE_OBJECT_SYMBOLS'
++ The command tells the linker to create a symbol for each input
++ file. The name of each symbol will be the name of the
++ corresponding input file. The section of each symbol will be the
++ output section in which the `CREATE_OBJECT_SYMBOLS' command
++ appears.
++
++ This is conventional for the a.out object file format. It is not
++ normally used for any other object file format.
++
++`CONSTRUCTORS'
++ When linking using the a.out object file format, the linker uses an
++ unusual set construct to support C++ global constructors and
++ destructors. When linking object file formats which do not support
++ arbitrary sections, such as ECOFF and XCOFF, the linker will
++ automatically recognize C++ global constructors and destructors by
++ name. For these object file formats, the `CONSTRUCTORS' command
++ tells the linker to place constructor information in the output
++ section where the `CONSTRUCTORS' command appears. The
++ `CONSTRUCTORS' command is ignored for other object file formats.
++
++ The symbol `__CTOR_LIST__' marks the start of the global
++ constructors, and the symbol `__CTOR_END__' marks the end.
++ Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and
++ end of the global destructors. The first word in the list is the
++ number of entries, followed by the address of each constructor or
++ destructor, followed by a zero word. The compiler must arrange to
++ actually run the code. For these object file formats GNU C++
++ normally calls constructors from a subroutine `__main'; a call to
++ `__main' is automatically inserted into the startup code for
++ `main'. GNU C++ normally runs destructors either by using
++ `atexit', or directly from the function `exit'.
++
++ For object file formats such as `COFF' or `ELF' which support
++ arbitrary section names, GNU C++ will normally arrange to put the
++ addresses of global constructors and destructors into the `.ctors'
++ and `.dtors' sections. Placing the following sequence into your
++ linker script will build the sort of table which the GNU C++
++ runtime code expects to see.
++
++ __CTOR_LIST__ = .;
++ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
++ *(.ctors)
++ LONG(0)
++ __CTOR_END__ = .;
++ __DTOR_LIST__ = .;
++ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
++ *(.dtors)
++ LONG(0)
++ __DTOR_END__ = .;
++
++ If you are using the GNU C++ support for initialization priority,
++ which provides some control over the order in which global
++ constructors are run, you must sort the constructors at link time
++ to ensure that they are executed in the correct order. When using
++ the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)'
++ instead. When using the `.ctors' and `.dtors' sections, use
++ `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of
++ just `*(.ctors)' and `*(.dtors)'.
++
++ Normally the compiler and linker will handle these issues
++ automatically, and you will not need to concern yourself with
++ them. However, you may need to consider this if you are using C++
++ and writing your own linker scripts.
++
++
++
++File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS
++
++3.6.7 Output Section Discarding
++-------------------------------
++
++The linker will not create output section which do not have any
++contents. This is for convenience when referring to input sections that
++may or may not be present in any of the input files. For example:
++ .foo { *(.foo) }
++ will only create a `.foo' section in the output file if there is a
++`.foo' section in at least one input file.
++
++ If you use anything other than an input section description as an
++output section command, such as a symbol assignment, then the output
++section will always be created, even if there are no matching input
++sections.
++
++ The special output section name `/DISCARD/' may be used to discard
++input sections. Any input sections which are assigned to an output
++section named `/DISCARD/' are not included in the output file.
++
++
++File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS
++
++3.6.8 Output Section Attributes
++-------------------------------
++
++We showed above that the full description of an output section looked
++like this:
++ SECTION [ADDRESS] [(TYPE)] :
++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
++We've already described SECTION, ADDRESS, and
++OUTPUT-SECTION-COMMAND. In this section we will describe the remaining
++section attributes.
++
++* Menu:
++
++* Output Section Type:: Output section type
++* Output Section LMA:: Output section LMA
++* Forced Output Alignment:: Forced Output Alignment
++* Forced Input Alignment:: Forced Input Alignment
++* Output Section Region:: Output section region
++* Output Section Phdr:: Output section phdr
++* Output Section Fill:: Output section fill
++
++
++File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes
++
++3.6.8.1 Output Section Type
++...........................
++
++Each output section may have a type. The type is a keyword in
++parentheses. The following types are defined:
++
++`NOLOAD'
++ The section should be marked as not loadable, so that it will not
++ be loaded into memory when the program is run.
++
++`DSECT'
++`COPY'
++`INFO'
++`OVERLAY'
++ These type names are supported for backward compatibility, and are
++ rarely used. They all have the same effect: the section should be
++ marked as not allocatable, so that no memory is allocated for the
++ section when the program is run.
++
++ The linker normally sets the attributes of an output section based on
++the input sections which map into it. You can override this by using
++the section type. For example, in the script sample below, the `ROM'
++section is addressed at memory location `0' and does not need to be
++loaded when the program is run. The contents of the `ROM' section will
++appear in the linker output file as usual.
++ SECTIONS {
++ ROM 0 (NOLOAD) : { ... }
++ ...
++ }
++
++
++File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes
++
++3.6.8.2 Output Section LMA
++..........................
++
++Every section has a virtual address (VMA) and a load address (LMA); see
++*Note Basic Script Concepts::. The address expression which may appear
++in an output section description sets the VMA (*note Output Section
++Address::).
++
++ The linker will normally set the LMA equal to the VMA. You can
++change that by using the `AT' keyword. The expression LMA that follows
++the `AT' keyword specifies the load address of the section.
++
++ Alternatively, with `AT>LMA_REGION' expression, you may specify a
++memory region for the section's load address. *Note MEMORY::. Note
++that if the section has not had a VMA assigned to it then the linker
++will use the LMA_REGION as the VMA region as well. *Note Output
++Section Region::.
++
++ This feature is designed to make it easy to build a ROM image. For
++example, the following linker script creates three output sections: one
++called `.text', which starts at `0x1000', one called `.mdata', which is
++loaded at the end of the `.text' section even though its VMA is
++`0x2000', and one called `.bss' to hold uninitialized data at address
++`0x3000'. The symbol `_data' is defined with the value `0x2000', which
++shows that the location counter holds the VMA value, not the LMA value.
++
++ SECTIONS
++ {
++ .text 0x1000 : { *(.text) _etext = . ; }
++ .mdata 0x2000 :
++ AT ( ADDR (.text) + SIZEOF (.text) )
++ { _data = . ; *(.data); _edata = . ; }
++ .bss 0x3000 :
++ { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;}
++ }
++
++ The run-time initialization code for use with a program generated
++with this linker script would include something like the following, to
++copy the initialized data from the ROM image to its runtime address.
++Notice how this code takes advantage of the symbols defined by the
++linker script.
++
++ extern char _etext, _data, _edata, _bstart, _bend;
++ char *src = &_etext;
++ char *dst = &_data;
++
++ /* ROM has data at end of text; copy it. */
++ while (dst < &_edata) {
++ *dst++ = *src++;
++ }
++
++ /* Zero bss */
++ for (dst = &_bstart; dst< &_bend; dst++)
++ *dst = 0;
++
++
++File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes
++
++3.6.8.3 Forced Output Alignment
++...............................
++
++You can increase an output section's alignment by using ALIGN.
++
++
++File: ld.info, Node: Forced Input Alignment, Next: Output Section Region, Prev: Forced Output Alignment, Up: Output Section Attributes
++
++3.6.8.4 Forced Input Alignment
++..............................
++
++You can force input section alignment within an output section by using
++SUBALIGN. The value specified overrides any alignment given by input
++sections, whether larger or smaller.
++
++
++File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Forced Input Alignment, Up: Output Section Attributes
++
++3.6.8.5 Output Section Region
++.............................
++
++You can assign a section to a previously defined region of memory by
++using `>REGION'. *Note MEMORY::.
++
++ Here is a simple example:
++ MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 }
++ SECTIONS { ROM : { *(.text) } >rom }
++
++
++File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes
++
++3.6.8.6 Output Section Phdr
++...........................
++
++You can assign a section to a previously defined program segment by
++using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more
++segments, then all subsequent allocated sections will be assigned to
++those segments as well, unless they use an explicitly `:PHDR' modifier.
++You can use `:NONE' to tell the linker to not put the section in any
++segment at all.
++
++ Here is a simple example:
++ PHDRS { text PT_LOAD ; }
++ SECTIONS { .text : { *(.text) } :text }
++
++
++File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes
++
++3.6.8.7 Output Section Fill
++...........................
++
++You can set the fill pattern for an entire section by using `=FILLEXP'.
++FILLEXP is an expression (*note Expressions::). Any otherwise
++unspecified regions of memory within the output section (for example,
++gaps left due to the required alignment of input sections) will be
++filled with the value, repeated as necessary. If the fill expression
++is a simple hex number, ie. a string of hex digit starting with `0x'
++and without a trailing `k' or `M', then an arbitrarily long sequence of
++hex digits can be used to specify the fill pattern; Leading zeros
++become part of the pattern too. For all other cases, including extra
++parentheses or a unary `+', the fill pattern is the four least
++significant bytes of the value of the expression. In all cases, the
++number is big-endian.
++
++ You can also change the fill value with a `FILL' command in the
++output section commands; (*note Output Section Data::).
++
++ Here is a simple example:
++ SECTIONS { .text : { *(.text) } =0x90909090 }
++
++
++File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS
++
++3.6.9 Overlay Description
++-------------------------
++
++An overlay description provides an easy way to describe sections which
++are to be loaded as part of a single memory image but are to be run at
++the same memory address. At run time, some sort of overlay manager will
++copy the overlaid sections in and out of the runtime memory address as
++required, perhaps by simply manipulating addressing bits. This approach
++can be useful, for example, when a certain region of memory is faster
++than another.
++
++ Overlays are described using the `OVERLAY' command. The `OVERLAY'
++command is used within a `SECTIONS' command, like an output section
++description. The full syntax of the `OVERLAY' command is as follows:
++ OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )]
++ {
++ SECNAME1
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [:PHDR...] [=FILL]
++ SECNAME2
++ {
++ OUTPUT-SECTION-COMMAND
++ OUTPUT-SECTION-COMMAND
++ ...
++ } [:PHDR...] [=FILL]
++ ...
++ } [>REGION] [:PHDR...] [=FILL]
++
++ Everything is optional except `OVERLAY' (a keyword), and each
++section must have a name (SECNAME1 and SECNAME2 above). The section
++definitions within the `OVERLAY' construct are identical to those
++within the general `SECTIONS' contruct (*note SECTIONS::), except that
++no addresses and no memory regions may be defined for sections within
++an `OVERLAY'.
++
++ The sections are all defined with the same starting address. The
++load addresses of the sections are arranged such that they are
++consecutive in memory starting at the load address used for the
++`OVERLAY' as a whole (as with normal section definitions, the load
++address is optional, and defaults to the start address; the start
++address is also optional, and defaults to the current value of the
++location counter).
++
++ If the `NOCROSSREFS' keyword is used, and there any references among
++the sections, the linker will report an error. Since the sections all
++run at the same address, it normally does not make sense for one
++section to refer directly to another. *Note NOCROSSREFS: Miscellaneous
++Commands.
++
++ For each section within the `OVERLAY', the linker automatically
++defines two symbols. The symbol `__load_start_SECNAME' is defined as
++the starting load address of the section. The symbol
++`__load_stop_SECNAME' is defined as the final load address of the
++section. Any characters within SECNAME which are not legal within C
++identifiers are removed. C (or assembler) code may use these symbols
++to move the overlaid sections around as necessary.
++
++ At the end of the overlay, the value of the location counter is set
++to the start address of the overlay plus the size of the largest
++section.
++
++ Here is an example. Remember that this would appear inside a
++`SECTIONS' construct.
++ OVERLAY 0x1000 : AT (0x4000)
++ {
++ .text0 { o1/*.o(.text) }
++ .text1 { o2/*.o(.text) }
++ }
++This will define both `.text0' and `.text1' to start at address
++0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will
++be loaded immediately after `.text0'. The following symbols will be
++defined: `__load_start_text0', `__load_stop_text0',
++`__load_start_text1', `__load_stop_text1'.
++
++ C code to copy overlay `.text1' into the overlay area might look
++like the following.
++
++ extern char __load_start_text1, __load_stop_text1;
++ memcpy ((char *) 0x1000, &__load_start_text1,
++ &__load_stop_text1 - &__load_start_text1);
++
++ Note that the `OVERLAY' command is just syntactic sugar, since
++everything it does can be done using the more basic commands. The above
++example could have been written identically as follows.
++
++ .text0 0x1000 : AT (0x4000) { o1/*.o(.text) }
++ __load_start_text0 = LOADADDR (.text0);
++ __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0);
++ .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) }
++ __load_start_text1 = LOADADDR (.text1);
++ __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1);
++ . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));
++
++
++File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts
++
++3.7 MEMORY Command
++==================
++
++The linker's default configuration permits allocation of all available
++memory. You can override this by using the `MEMORY' command.
++
++ The `MEMORY' command describes the location and size of blocks of
++memory in the target. You can use it to describe which memory regions
++may be used by the linker, and which memory regions it must avoid. You
++can then assign sections to particular memory regions. The linker will
++set section addresses based on the memory regions, and will warn about
++regions that become too full. The linker will not shuffle sections
++around to fit into the available regions.
++
++ A linker script may contain at most one use of the `MEMORY' command.
++However, you can define as many blocks of memory within it as you
++wish. The syntax is:
++ MEMORY
++ {
++ NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN
++ ...
++ }
++
++ The NAME is a name used in the linker script to refer to the region.
++The region name has no meaning outside of the linker script. Region
++names are stored in a separate name space, and will not conflict with
++symbol names, file names, or section names. Each memory region must
++have a distinct name.
++
++ The ATTR string is an optional list of attributes that specify
++whether to use a particular memory region for an input section which is
++not explicitly mapped in the linker script. As described in *Note
++SECTIONS::, if you do not specify an output section for some input
++section, the linker will create an output section with the same name as
++the input section. If you define region attributes, the linker will use
++them to select the memory region for the output section that it creates.
++
++ The ATTR string must consist only of the following characters:
++`R'
++ Read-only section
++
++`W'
++ Read/write section
++
++`X'
++ Executable section
++
++`A'
++ Allocatable section
++
++`I'
++ Initialized section
++
++`L'
++ Same as `I'
++
++`!'
++ Invert the sense of any of the preceding attributes
++
++ If a unmapped section matches any of the listed attributes other than
++`!', it will be placed in the memory region. The `!' attribute
++reverses this test, so that an unmapped section will be placed in the
++memory region only if it does not match any of the listed attributes.
++
++ The ORIGIN is an numerical expression for the start address of the
++memory region. The expression must evaluate to a constant and it
++cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to
++`org' or `o' (but not, for example, `ORG').
++
++ The LEN is an expression for the size in bytes of the memory region.
++As with the ORIGIN expression, the expression must be numerical only
++and must evaluate to a constant. The keyword `LENGTH' may be
++abbreviated to `len' or `l'.
++
++ In the following example, we specify that there are two memory
++regions available for allocation: one starting at `0' for 256 kilobytes,
++and the other starting at `0x40000000' for four megabytes. The linker
++will place into the `rom' memory region every section which is not
++explicitly mapped into a memory region, and is either read-only or
++executable. The linker will place other sections which are not
++explicitly mapped into a memory region into the `ram' memory region.
++
++ MEMORY
++ {
++ rom (rx) : ORIGIN = 0, LENGTH = 256K
++ ram (!rx) : org = 0x40000000, l = 4M
++ }
++
++ Once you define a memory region, you can direct the linker to place
++specific output sections into that memory region by using the `>REGION'
++output section attribute. For example, if you have a memory region
++named `mem', you would use `>mem' in the output section definition.
++*Note Output Section Region::. If no address was specified for the
++output section, the linker will set the address to the next available
++address within the memory region. If the combined output sections
++directed to a memory region are too large for the region, the linker
++will issue an error message.
++
++ It is possible to access the origin and length of a memory in an
++expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions:
++
++ _fstack = ORIGIN(ram) + LENGTH(ram) - 4;
++
++
++File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts
++
++3.8 PHDRS Command
++=================
++
++The ELF object file format uses "program headers", also knows as
++"segments". The program headers describe how the program should be
++loaded into memory. You can print them out by using the `objdump'
++program with the `-p' option.
++
++ When you run an ELF program on a native ELF system, the system loader
++reads the program headers in order to figure out how to load the
++program. This will only work if the program headers are set correctly.
++This manual does not describe the details of how the system loader
++interprets program headers; for more information, see the ELF ABI.
++
++ The linker will create reasonable program headers by default.
++However, in some cases, you may need to specify the program headers more
++precisely. You may use the `PHDRS' command for this purpose. When the
++linker sees the `PHDRS' command in the linker script, it will not
++create any program headers other than the ones specified.
++
++ The linker only pays attention to the `PHDRS' command when
++generating an ELF output file. In other cases, the linker will simply
++ignore `PHDRS'.
++
++ This is the syntax of the `PHDRS' command. The words `PHDRS',
++`FILEHDR', `AT', and `FLAGS' are keywords.
++
++ PHDRS
++ {
++ NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ]
++ [ FLAGS ( FLAGS ) ] ;
++ }
++
++ The NAME is used only for reference in the `SECTIONS' command of the
++linker script. It is not put into the output file. Program header
++names are stored in a separate name space, and will not conflict with
++symbol names, file names, or section names. Each program header must
++have a distinct name.
++
++ Certain program header types describe segments of memory which the
++system loader will load from the file. In the linker script, you
++specify the contents of these segments by placing allocatable output
++sections in the segments. You use the `:PHDR' output section attribute
++to place a section in a particular segment. *Note Output Section
++Phdr::.
++
++ It is normal to put certain sections in more than one segment. This
++merely implies that one segment of memory contains another. You may
++repeat `:PHDR', using it once for each segment which should contain the
++section.
++
++ If you place a section in one or more segments using `:PHDR', then
++the linker will place all subsequent allocatable sections which do not
++specify `:PHDR' in the same segments. This is for convenience, since
++generally a whole set of contiguous sections will be placed in a single
++segment. You can use `:NONE' to override the default segment and tell
++the linker to not put the section in any segment at all.
++
++ You may use the `FILEHDR' and `PHDRS' keywords appear after the
++program header type to further describe the contents of the segment.
++The `FILEHDR' keyword means that the segment should include the ELF
++file header. The `PHDRS' keyword means that the segment should include
++the ELF program headers themselves.
++
++ The TYPE may be one of the following. The numbers indicate the
++value of the keyword.
++
++`PT_NULL' (0)
++ Indicates an unused program header.
++
++`PT_LOAD' (1)
++ Indicates that this program header describes a segment to be
++ loaded from the file.
++
++`PT_DYNAMIC' (2)
++ Indicates a segment where dynamic linking information can be found.
++
++`PT_INTERP' (3)
++ Indicates a segment where the name of the program interpreter may
++ be found.
++
++`PT_NOTE' (4)
++ Indicates a segment holding note information.
++
++`PT_SHLIB' (5)
++ A reserved program header type, defined but not specified by the
++ ELF ABI.
++
++`PT_PHDR' (6)
++ Indicates a segment where the program headers may be found.
++
++EXPRESSION
++ An expression giving the numeric type of the program header. This
++ may be used for types not defined above.
++
++ You can specify that a segment should be loaded at a particular
++address in memory by using an `AT' expression. This is identical to the
++`AT' command used as an output section attribute (*note Output Section
++LMA::). The `AT' command for a program header overrides the output
++section attribute.
++
++ The linker will normally set the segment flags based on the sections
++which comprise the segment. You may use the `FLAGS' keyword to
++explicitly specify the segment flags. The value of FLAGS must be an
++integer. It is used to set the `p_flags' field of the program header.
++
++ Here is an example of `PHDRS'. This shows a typical set of program
++headers used on a native ELF system.
++
++ PHDRS
++ {
++ headers PT_PHDR PHDRS ;
++ interp PT_INTERP ;
++ text PT_LOAD FILEHDR PHDRS ;
++ data PT_LOAD ;
++ dynamic PT_DYNAMIC ;
++ }
++
++ SECTIONS
++ {
++ . = SIZEOF_HEADERS;
++ .interp : { *(.interp) } :text :interp
++ .text : { *(.text) } :text
++ .rodata : { *(.rodata) } /* defaults to :text */
++ ...
++ . = . + 0x1000; /* move to a new page in memory */
++ .data : { *(.data) } :data
++ .dynamic : { *(.dynamic) } :data :dynamic
++ ...
++ }
++
++
++File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts
++
++3.9 VERSION Command
++===================
++
++The linker supports symbol versions when using ELF. Symbol versions are
++only useful when using shared libraries. The dynamic linker can use
++symbol versions to select a specific version of a function when it runs
++a program that may have been linked against an earlier version of the
++shared library.
++
++ You can include a version script directly in the main linker script,
++or you can supply the version script as an implicit linker script. You
++can also use the `--version-script' linker option.
++
++ The syntax of the `VERSION' command is simply
++ VERSION { version-script-commands }
++
++ The format of the version script commands is identical to that used
++by Sun's linker in Solaris 2.5. The version script defines a tree of
++version nodes. You specify the node names and interdependencies in the
++version script. You can specify which symbols are bound to which
++version nodes, and you can reduce a specified set of symbols to local
++scope so that they are not globally visible outside of the shared
++library.
++
++ The easiest way to demonstrate the version script language is with a
++few examples.
++
++ VERS_1.1 {
++ global:
++ foo1;
++ local:
++ old*;
++ original*;
++ new*;
++ };
++
++ VERS_1.2 {
++ foo2;
++ } VERS_1.1;
++
++ VERS_2.0 {
++ bar1; bar2;
++ extern "C++" {
++ ns::*;
++ "int f(int, double)";
++ }
++ } VERS_1.2;
++
++ This example version script defines three version nodes. The first
++version node defined is `VERS_1.1'; it has no other dependencies. The
++script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of
++symbols to local scope so that they are not visible outside of the
++shared library; this is done using wildcard patterns, so that any
++symbol whose name begins with `old', `original', or `new' is matched.
++The wildcard patterns available are the same as those used in the shell
++when matching filenames (also known as "globbing"). However, if you
++specify the symbol name inside double quotes, then the name is treated
++as literal, rather than as a glob pattern.
++
++ Next, the version script defines node `VERS_1.2'. This node depends
++upon `VERS_1.1'. The script binds the symbol `foo2' to the version
++node `VERS_1.2'.
++
++ Finally, the version script defines node `VERS_2.0'. This node
++depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and
++`bar2' are bound to the version node `VERS_2.0'.
++
++ When the linker finds a symbol defined in a library which is not
++specifically bound to a version node, it will effectively bind it to an
++unspecified base version of the library. You can bind all otherwise
++unspecified symbols to a given version node by using `global: *;'
++somewhere in the version script.
++
++ The names of the version nodes have no specific meaning other than
++what they might suggest to the person reading them. The `2.0' version
++could just as well have appeared in between `1.1' and `1.2'. However,
++this would be a confusing way to write a version script.
++
++ Node name can be omited, provided it is the only version node in the
++version script. Such version script doesn't assign any versions to
++symbols, only selects which symbols will be globally visible out and
++which won't.
++
++ { global: foo; bar; local: *; };
++
++ When you link an application against a shared library that has
++versioned symbols, the application itself knows which version of each
++symbol it requires, and it also knows which version nodes it needs from
++each shared library it is linked against. Thus at runtime, the dynamic
++loader can make a quick check to make sure that the libraries you have
++linked against do in fact supply all of the version nodes that the
++application will need to resolve all of the dynamic symbols. In this
++way it is possible for the dynamic linker to know with certainty that
++all external symbols that it needs will be resolvable without having to
++search for each symbol reference.
++
++ The symbol versioning is in effect a much more sophisticated way of
++doing minor version checking that SunOS does. The fundamental problem
++that is being addressed here is that typically references to external
++functions are bound on an as-needed basis, and are not all bound when
++the application starts up. If a shared library is out of date, a
++required interface may be missing; when the application tries to use
++that interface, it may suddenly and unexpectedly fail. With symbol
++versioning, the user will get a warning when they start their program if
++the libraries being used with the application are too old.
++
++ There are several GNU extensions to Sun's versioning approach. The
++first of these is the ability to bind a symbol to a version node in the
++source file where the symbol is defined instead of in the versioning
++script. This was done mainly to reduce the burden on the library
++maintainer. You can do this by putting something like:
++ __asm__(".symver original_foo,foo@VERS_1.1");
++ in the C source file. This renames the function `original_foo' to
++be an alias for `foo' bound to the version node `VERS_1.1'. The
++`local:' directive can be used to prevent the symbol `original_foo'
++from being exported. A `.symver' directive takes precedence over a
++version script.
++
++ The second GNU extension is to allow multiple versions of the same
++function to appear in a given shared library. In this way you can make
++an incompatible change to an interface without increasing the major
++version number of the shared library, while still allowing applications
++linked against the old interface to continue to function.
++
++ To do this, you must use multiple `.symver' directives in the source
++file. Here is an example:
++
++ __asm__(".symver original_foo,foo@");
++ __asm__(".symver old_foo,foo@VERS_1.1");
++ __asm__(".symver old_foo1,foo@VERS_1.2");
++ __asm__(".symver new_foo,foo@@VERS_2.0");
++
++ In this example, `foo@' represents the symbol `foo' bound to the
++unspecified base version of the symbol. The source file that contains
++this example would define 4 C functions: `original_foo', `old_foo',
++`old_foo1', and `new_foo'.
++
++ When you have multiple definitions of a given symbol, there needs to
++be some way to specify a default version to which external references to
++this symbol will be bound. You can do this with the `foo@@VERS_2.0'
++type of `.symver' directive. You can only declare one version of a
++symbol as the default in this manner; otherwise you would effectively
++have multiple definitions of the same symbol.
++
++ If you wish to bind a reference to a specific version of the symbol
++within the shared library, you can use the aliases of convenience
++(i.e., `old_foo'), or you can use the `.symver' directive to
++specifically bind to an external version of the function in question.
++
++ You can also specify the language in the version script:
++
++ VERSION extern "lang" { version-script-commands }
++
++ The supported `lang's are `C', `C++', and `Java'. The linker will
++iterate over the list of symbols at the link time and demangle them
++according to `lang' before matching them to the patterns specified in
++`version-script-commands'.
++
++ Demangled names may contains spaces and other special characters. As
++described above, you can use a glob pattern to match demangled names,
++or you can use a double-quoted string to match the string exactly. In
++the latter case, be aware that minor differences (such as differing
++whitespace) between the version script and the demangler output will
++cause a mismatch. As the exact string generated by the demangler might
++change in the future, even if the mangled name does not, you should
++check that all of your version directives are behaving as you expect
++when you upgrade.
++
++
++File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts
++
++3.10 Expressions in Linker Scripts
++==================================
++
++The syntax for expressions in the linker script language is identical to
++that of C expressions. All expressions are evaluated as integers. All
++expressions are evaluated in the same size, which is 32 bits if both the
++host and target are 32 bits, and is otherwise 64 bits.
++
++ You can use and set symbol values in expressions.
++
++ The linker defines several special purpose builtin functions for use
++in expressions.
++
++* Menu:
++
++* Constants:: Constants
++* Symbols:: Symbol Names
++* Orphan Sections:: Orphan Sections
++* Location Counter:: The Location Counter
++* Operators:: Operators
++* Evaluation:: Evaluation
++* Expression Section:: The Section of an Expression
++* Builtin Functions:: Builtin Functions
++
++
++File: ld.info, Node: Constants, Next: Symbols, Up: Expressions
++
++3.10.1 Constants
++----------------
++
++All constants are integers.
++
++ As in C, the linker considers an integer beginning with `0' to be
++octal, and an integer beginning with `0x' or `0X' to be hexadecimal.
++The linker considers other integers to be decimal.
++
++ In addition, you can use the suffixes `K' and `M' to scale a
++constant by `1024' or `1024*1024' respectively. For example, the
++following all refer to the same quantity:
++ _fourk_1 = 4K;
++ _fourk_2 = 4096;
++ _fourk_3 = 0x1000;
++
++
++File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Constants, Up: Expressions
++
++3.10.2 Symbol Names
++-------------------
++
++Unless quoted, symbol names start with a letter, underscore, or period
++and may include letters, digits, underscores, periods, and hyphens.
++Unquoted symbol names must not conflict with any keywords. You can
++specify a symbol which contains odd characters or has the same name as a
++keyword by surrounding the symbol name in double quotes:
++ "SECTION" = 9;
++ "with a space" = "also with a space" + 10;
++
++ Since symbols can contain many non-alphabetic characters, it is
++safest to delimit symbols with spaces. For example, `A-B' is one
++symbol, whereas `A - B' is an expression involving subtraction.
++
++
++File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions
++
++3.10.3 Orphan Sections
++----------------------
++
++Orphan sections are sections present in the input files which are not
++explicitly placed into the output file by the linker script. The
++linker will still copy these sections into the output file, but it has
++to guess as to where they should be placed. The linker uses a simple
++heuristic to do this. It attempts to place orphan sections after
++non-orphan sections of the same attribute, such as code vs data,
++loadable vs non-loadable, etc. If there is not enough room to do this
++then it places at the end of the file.
++
++ For ELF targets, the attribute of the section includes section type
++as well as section flag.
++
++
++File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions
++
++3.10.4 The Location Counter
++---------------------------
++
++The special linker variable "dot" `.' always contains the current
++output location counter. Since the `.' always refers to a location in
++an output section, it may only appear in an expression within a
++`SECTIONS' command. The `.' symbol may appear anywhere that an
++ordinary symbol is allowed in an expression.
++
++ Assigning a value to `.' will cause the location counter to be
++moved. This may be used to create holes in the output section. The
++location counter may never be moved backwards.
++
++ SECTIONS
++ {
++ output :
++ {
++ file1(.text)
++ . = . + 1000;
++ file2(.text)
++ . += 1000;
++ file3(.text)
++ } = 0x12345678;
++ }
++ In the previous example, the `.text' section from `file1' is located
++at the beginning of the output section `output'. It is followed by a
++1000 byte gap. Then the `.text' section from `file2' appears, also
++with a 1000 byte gap following before the `.text' section from `file3'.
++The notation `= 0x12345678' specifies what data to write in the gaps
++(*note Output Section Fill::).
++
++ Note: `.' actually refers to the byte offset from the start of the
++current containing object. Normally this is the `SECTIONS' statement,
++whose start address is 0, hence `.' can be used as an absolute address.
++If `.' is used inside a section description however, it refers to the
++byte offset from the start of that section, not an absolute address.
++Thus in a script like this:
++
++ SECTIONS
++ {
++ . = 0x100
++ .text: {
++ *(.text)
++ . = 0x200
++ }
++ . = 0x500
++ .data: {
++ *(.data)
++ . += 0x600
++ }
++ }
++
++ The `.text' section will be assigned a starting address of 0x100 and
++a size of exactly 0x200 bytes, even if there is not enough data in the
++`.text' input sections to fill this area. (If there is too much data,
++an error will be produced because this would be an attempt to move `.'
++backwards). The `.data' section will start at 0x500 and it will have
++an extra 0x600 bytes worth of space after the end of the values from
++the `.data' input sections and before the end of the `.data' output
++section itself.
++
++ Setting symbols to the value of the location counter outside of an
++output section statement can result in unexpected values if the linker
++needs to place orphan sections. For example, given the following:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ start_of_data = . ;
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ If the linker needs to place some input section, e.g. `.rodata', not
++mentioned in the script, it might choose to place that section between
++`.text' and `.data'. You might think the linker should place `.rodata'
++on the blank line in the above script, but blank lines are of no
++particular significance to the linker. As well, the linker doesn't
++associate the above symbol names with their sections. Instead, it
++assumes that all assignments or other statements belong to the previous
++output section, except for the special case of an assignment to `.'.
++I.e., the linker will place the orphan `.rodata' section as if the
++script was written as follows:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ start_of_data = . ;
++ .rodata: { *(.rodata) }
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ This may or may not be the script author's intention for the value of
++`start_of_data'. One way to influence the orphan section placement is
++to assign the location counter to itself, as the linker assumes that an
++assignment to `.' is setting the start address of a following output
++section and thus should be grouped with that section. So you could
++write:
++
++ SECTIONS
++ {
++ start_of_text = . ;
++ .text: { *(.text) }
++ end_of_text = . ;
++
++ . = . ;
++ start_of_data = . ;
++ .data: { *(.data) }
++ end_of_data = . ;
++ }
++
++ Now, the orphan `.rodata' section will be placed between
++`end_of_text' and `start_of_data'.
++
++
++File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions
++
++3.10.5 Operators
++----------------
++
++The linker recognizes the standard C set of arithmetic operators, with
++the standard bindings and precedence levels:
++ precedence associativity Operators Notes
++ (highest)
++ 1 left ! - ~ (1)
++ 2 left * / %
++ 3 left + -
++ 4 left >> <<
++ 5 left == != > < <= >=
++ 6 left &
++ 7 left |
++ 8 left &&
++ 9 left ||
++ 10 right ? :
++ 11 right &= += -= *= /= (2)
++ (lowest)
++ Notes: (1) Prefix operators (2) *Note Assignments::.
++
++
++File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions
++
++3.10.6 Evaluation
++-----------------
++
++The linker evaluates expressions lazily. It only computes the value of
++an expression when absolutely necessary.
++
++ The linker needs some information, such as the value of the start
++address of the first section, and the origins and lengths of memory
++regions, in order to do any linking at all. These values are computed
++as soon as possible when the linker reads in the linker script.
++
++ However, other values (such as symbol values) are not known or needed
++until after storage allocation. Such values are evaluated later, when
++other information (such as the sizes of output sections) is available
++for use in the symbol assignment expression.
++
++ The sizes of sections cannot be known until after allocation, so
++assignments dependent upon these are not performed until after
++allocation.
++
++ Some expressions, such as those depending upon the location counter
++`.', must be evaluated during section allocation.
++
++ If the result of an expression is required, but the value is not
++available, then an error results. For example, a script like the
++following
++ SECTIONS
++ {
++ .text 9+this_isnt_constant :
++ { *(.text) }
++ }
++will cause the error message `non constant expression for initial
++address'.
++
++
++File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions
++
++3.10.7 The Section of an Expression
++-----------------------------------
++
++When the linker evaluates an expression, the result is either absolute
++or relative to some section. A relative expression is expressed as a
++fixed offset from the base of a section.
++
++ The position of the expression within the linker script determines
++whether it is absolute or relative. An expression which appears within
++an output section definition is relative to the base of the output
++section. An expression which appears elsewhere will be absolute.
++
++ A symbol set to a relative expression will be relocatable if you
++request relocatable output using the `-r' option. That means that a
++further link operation may change the value of the symbol. The symbol's
++section will be the section of the relative expression.
++
++ A symbol set to an absolute expression will retain the same value
++through any further link operation. The symbol will be absolute, and
++will not have any particular associated section.
++
++ You can use the builtin function `ABSOLUTE' to force an expression
++to be absolute when it would otherwise be relative. For example, to
++create an absolute symbol set to the address of the end of the output
++section `.data':
++ SECTIONS
++ {
++ .data : { *(.data) _edata = ABSOLUTE(.); }
++ }
++ If `ABSOLUTE' were not used, `_edata' would be relative to the
++`.data' section.
++
++
++File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions
++
++3.10.8 Builtin Functions
++------------------------
++
++The linker script language includes a number of builtin functions for
++use in linker script expressions.
++
++`ABSOLUTE(EXP)'
++ Return the absolute (non-relocatable, as opposed to non-negative)
++ value of the expression EXP. Primarily useful to assign an
++ absolute value to a symbol within a section definition, where
++ symbol values are normally section relative. *Note Expression
++ Section::.
++
++`ADDR(SECTION)'
++ Return the absolute address (the VMA) of the named SECTION. Your
++ script must previously have defined the location of that section.
++ In the following example, `symbol_1' and `symbol_2' are assigned
++ identical values:
++ SECTIONS { ...
++ .output1 :
++ {
++ start_of_output_1 = ABSOLUTE(.);
++ ...
++ }
++ .output :
++ {
++ symbol_1 = ADDR(.output1);
++ symbol_2 = start_of_output_1;
++ }
++ ... }
++
++`ALIGN(ALIGN)'
++`ALIGN(EXP,ALIGN)'
++ Return the location counter (`.') or arbitrary expression aligned
++ to the next ALIGN boundary. The single operand `ALIGN' doesn't
++ change the value of the location counter--it just does arithmetic
++ on it. The two operand `ALIGN' allows an arbitrary expression to
++ be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(.,
++ ALIGN)').
++
++ Here is an example which aligns the output `.data' section to the
++ next `0x2000' byte boundary after the preceding section and sets a
++ variable within the section to the next `0x8000' boundary after the
++ input sections:
++ SECTIONS { ...
++ .data ALIGN(0x2000): {
++ *(.data)
++ variable = ALIGN(0x8000);
++ }
++ ... }
++ The first use of `ALIGN' in this example specifies the
++ location of a section because it is used as the optional ADDRESS
++ attribute of a section definition (*note Output Section
++ Address::). The second use of `ALIGN' is used to defines the
++ value of a symbol.
++
++ The builtin function `NEXT' is closely related to `ALIGN'.
++
++`BLOCK(EXP)'
++ This is a synonym for `ALIGN', for compatibility with older linker
++ scripts. It is most often seen when setting the address of an
++ output section.
++
++`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)'
++ This is equivalent to either
++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1)))
++ or
++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE)))
++ depending on whether the latter uses fewer COMMONPAGESIZE sized
++ pages for the data segment (area between the result of this
++ expression and `DATA_SEGMENT_END') than the former or not. If the
++ latter form is used, it means COMMONPAGESIZE bytes of runtime
++ memory will be saved at the expense of up to COMMONPAGESIZE wasted
++ bytes in the on-disk file.
++
++ This expression can only be used directly in `SECTIONS' commands,
++ not in any output section descriptions and only once in the linker
++ script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and
++ should be the system page size the object wants to be optimized
++ for (while still working on system page sizes up to MAXPAGESIZE).
++
++ Example:
++ . = DATA_SEGMENT_ALIGN(0x10000, 0x2000);
++
++`DATA_SEGMENT_END(EXP)'
++ This defines the end of data segment for `DATA_SEGMENT_ALIGN'
++ evaluation purposes.
++
++ . = DATA_SEGMENT_END(.);
++
++`DATA_SEGMENT_RELRO_END(OFFSET, EXP)'
++ This defines the end of the `PT_GNU_RELRO' segment when `-z relro'
++ option is used. Second argument is returned. When `-z relro'
++ option is not present, `DATA_SEGMENT_RELRO_END' does nothing,
++ otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is
++ aligned to the most commonly used page boundary for particular
++ target. If present in the linker script, it must always come in
++ between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'.
++
++ . = DATA_SEGMENT_RELRO_END(24, .);
++
++`DEFINED(SYMBOL)'
++ Return 1 if SYMBOL is in the linker global symbol table and is
++ defined before the statement using DEFINED in the script, otherwise
++ return 0. You can use this function to provide default values for
++ symbols. For example, the following script fragment shows how to
++ set a global symbol `begin' to the first location in the `.text'
++ section--but if a symbol called `begin' already existed, its value
++ is preserved:
++
++ SECTIONS { ...
++ .text : {
++ begin = DEFINED(begin) ? begin : . ;
++ ...
++ }
++ ...
++ }
++
++`LENGTH(MEMORY)'
++ Return the length of the memory region named MEMORY.
++
++`LOADADDR(SECTION)'
++ Return the absolute LMA of the named SECTION. This is normally
++ the same as `ADDR', but it may be different if the `AT' attribute
++ is used in the output section definition (*note Output Section
++ LMA::).
++
++`MAX(EXP1, EXP2)'
++ Returns the maximum of EXP1 and EXP2.
++
++`MIN(EXP1, EXP2)'
++ Returns the minimum of EXP1 and EXP2.
++
++`NEXT(EXP)'
++ Return the next unallocated address that is a multiple of EXP.
++ This function is closely related to `ALIGN(EXP)'; unless you use
++ the `MEMORY' command to define discontinuous memory for the output
++ file, the two functions are equivalent.
++
++`ORIGIN(MEMORY)'
++ Return the origin of the memory region named MEMORY.
++
++`SEGMENT_START(SEGMENT, DEFAULT)'
++ Return the base address of the named SEGMENT. If an explicit
++ value has been given for this segment (with a command-line `-T'
++ option) that value will be returned; otherwise the value will be
++ DEFAULT. At present, the `-T' command-line option can only be
++ used to set the base address for the "text", "data", and "bss"
++ sections, but you use `SEGMENT_START' with any segment name.
++
++`SIZEOF(SECTION)'
++ Return the size in bytes of the named SECTION, if that section has
++ been allocated. If the section has not been allocated when this is
++ evaluated, the linker will report an error. In the following
++ example, `symbol_1' and `symbol_2' are assigned identical values:
++ SECTIONS{ ...
++ .output {
++ .start = . ;
++ ...
++ .end = . ;
++ }
++ symbol_1 = .end - .start ;
++ symbol_2 = SIZEOF(.output);
++ ... }
++
++`SIZEOF_HEADERS'
++`sizeof_headers'
++ Return the size in bytes of the output file's headers. This is
++ information which appears at the start of the output file. You
++ can use this number when setting the start address of the first
++ section, if you choose, to facilitate paging.
++
++ When producing an ELF output file, if the linker script uses the
++ `SIZEOF_HEADERS' builtin function, the linker must compute the
++ number of program headers before it has determined all the section
++ addresses and sizes. If the linker later discovers that it needs
++ additional program headers, it will report an error `not enough
++ room for program headers'. To avoid this error, you must avoid
++ using the `SIZEOF_HEADERS' function, or you must rework your linker
++ script to avoid forcing the linker to use additional program
++ headers, or you must define the program headers yourself using the
++ `PHDRS' command (*note PHDRS::).
++
++
++File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts
++
++3.11 Implicit Linker Scripts
++============================
++
++If you specify a linker input file which the linker can not recognize as
++an object file or an archive file, it will try to read the file as a
++linker script. If the file can not be parsed as a linker script, the
++linker will report an error.
++
++ An implicit linker script will not replace the default linker script.
++
++ Typically an implicit linker script would contain only symbol
++assignments, or the `INPUT', `GROUP', or `VERSION' commands.
++
++ Any input files read because of an implicit linker script will be
++read at the position in the command line where the implicit linker
++script was read. This can affect archive searching.
++
++
++File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top
++
++4 Machine Dependent Features
++****************************
++
++`ld' has additional features on some platforms; the following sections
++describe them. Machines where `ld' has no additional functionality are
++not listed.
++
++* Menu:
++
++
++* H8/300:: `ld' and the H8/300
++
++* i960:: `ld' and the Intel 960 family
++
++* ARM:: `ld' and the ARM family
++
++* AVR32:: `ld' and AVR32 processors
++
++* HPPA ELF32:: `ld' and HPPA 32-bit ELF
++
++* MMIX:: `ld' and MMIX
++
++* MSP430:: `ld' and MSP430
++
++* PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support
++
++* PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support
++
++* TI COFF:: `ld' and TI COFF
++
++* WIN32:: `ld' and WIN32 (cygwin/mingw)
++
++* Xtensa:: `ld' and Xtensa Processors
++
++
++File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent
++
++4.1 `ld' and the H8/300
++=======================
++
++For the H8/300, `ld' can perform these global optimizations when you
++specify the `--relax' command-line option.
++
++_relaxing address modes_
++ `ld' finds all `jsr' and `jmp' instructions whose targets are
++ within eight bits, and turns them into eight-bit program-counter
++ relative `bsr' and `bra' instructions, respectively.
++
++_synthesizing instructions_
++ `ld' finds all `mov.b' instructions which use the sixteen-bit
++ absolute address form, but refer to the top page of memory, and
++ changes them to use the eight-bit address form. (That is: the
++ linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the
++ address AA is in the top page of memory).
++
++_bit manipulation instructions_
++ `ld' finds all bit manipulation instructions like `band, bclr,
++ biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst,
++ bxor' which use 32 bit and 16 bit absolute address form, but refer
++ to the top page of memory, and changes them to use the 8 bit
++ address form. (That is: the linker turns `bset #xx:3,`@'AA:32'
++ into `bset #xx:3,`@'AA:8' whenever the address AA is in the top
++ page of memory).
++
++_system control instructions_
++ `ld' finds all `ldc.w, stc.w' instrcutions which use the 32 bit
++ absolute address form, but refer to the top page of memory, and
++ changes them to use 16 bit address form. (That is: the linker
++ turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the
++ address AA is in the top page of memory).
++
++
++File: ld.info, Node: i960, Next: ARM, Prev: H8/300, Up: Machine Dependent
++
++4.2 `ld' and the Intel 960 Family
++=================================
++
++You can use the `-AARCHITECTURE' command line option to specify one of
++the two-letter names identifying members of the 960 family; the option
++specifies the desired output target, and warns of any incompatible
++instructions in the input files. It also modifies the linker's search
++strategy for archive libraries, to support the use of libraries
++specific to each particular architecture, by including in the search
++loop names suffixed with the string identifying the architecture.
++
++ For example, if your `ld' command line included `-ACA' as well as
++`-ltry', the linker would look (in its built-in search paths, and in
++any paths you specify with `-L') for a library with the names
++
++ try
++ libtry.a
++ tryca
++ libtryca.a
++
++The first two possibilities would be considered in any event; the last
++two are due to the use of `-ACA'.
++
++ You can meaningfully use `-A' more than once on a command line, since
++the 960 architecture family allows combination of target architectures;
++each use will add another pair of name variants to search for when `-l'
++specifies a library.
++
++ `ld' supports the `--relax' option for the i960 family. If you
++specify `--relax', `ld' finds all `balx' and `calx' instructions whose
++targets are within 24 bits, and turns them into 24-bit program-counter
++relative `bal' and `cal' instructions, respectively. `ld' also turns
++`cal' instructions into `bal' instructions when it determines that the
++target subroutine is a leaf routine (that is, the target subroutine does
++not itself call any subroutines).
++
++
+++File: ld.info, Node: ARM, Next: AVR32, Prev: i960, Up: Machine Dependent
++
++4.3 `ld' and the ARM family
++===========================
++
++For the ARM, `ld' will generate code stubs to allow functions calls
++betweem ARM and Thumb code. These stubs only work with code that has
++been compiled and assembled with the `-mthumb-interwork' command line
++option. If it is necessary to link with old ARM object files or
++libraries, which have not been compiled with the -mthumb-interwork
++option then the `--support-old-code' command line switch should be
++given to the linker. This will make it generate larger stub functions
++which will work with non-interworking aware ARM code. Note, however,
++the linker does not support generating stubs for function calls to
++non-interworking aware Thumb code.
++
++ The `--thumb-entry' switch is a duplicate of the generic `--entry'
++switch, in that it sets the program's starting address. But it also
++sets the bottom bit of the address, so that it can be branched to using
++a BX instruction, and the program will start executing in Thumb mode
++straight away.
++
++ The `--be8' switch instructs `ld' to generate BE8 format
++executables. This option is only valid when linking big-endian objects.
++The resulting image will contain big-endian data and little-endian code.
++
++ The `R_ARM_TARGET1' relocation is typically used for entries in the
++`.init_array' section. It is interpreted as either `R_ARM_REL32' or
++`R_ARM_ABS32', depending on the target. The `--target1-rel' and
++`--target1-abs' switches override the default.
++
++ The `--target2=type' switch overrides the default definition of the
++`R_ARM_TARGET2' relocation. Valid values for `type', their meanings,
++and target defaults are as follows:
++`rel'
++ `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi)
++
++`abs'
++ `R_ARM_ABS32' (arm*-*-symbianelf)
++
++`got-rel'
++ `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd)
++
++ The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification)
++enables objects compiled for the ARMv4 architecture to be
++interworking-safe when linked with other objects compiled for ARMv4t,
++but also allows pure ARMv4 binaries to be built from the same ARMv4
++objects.
++
++ In the latter case, the switch `--fix-v4bx' must be passed to the
++linker, which causes v4t `BX rM' instructions to be rewritten as `MOV
++PC,rM', since v4 processors do not have a `BX' instruction.
++
++ In the former case, the switch should not be used, and `R_ARM_V4BX'
++relocations are ignored.
++
++ The `--use-blx' switch enables the linker to use ARM/Thumb BLX
++instructions (available on ARMv5t and above) in various situations.
++Currently it is used to perform calls via the PLT from Thumb code using
++BLX rather than using BX and a mode-switching stub before each PLT
++entry. This should lead to such calls executing slightly faster.
++
++ This option is enabled implicitly for SymbianOS, so there is no need
++to specify it if you are using that target.
++
++
++File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent
++
++4.4 `ld' and AVR32 processors
++=============================
++
++`--direct-data'
++
++`--no-direct-data'
++ Taking the address of a symbol can often be done by using a direct
++ `mov' or pc-relative `sub' instruction, which is faster than using
++ a PC- or GOT-relative load, especially on the uC3 processors.
++ However, this does not always work when dealing with symbols in
++ the `.data' section so this optimization is disabled by default.
++
++ Specifying `--direct-data' will enable this optimization. Note
++ that this may cause `relocation truncated to fit' errors for
++ certain large programs. If this happens, the optimization can be
++ turned off by specifying `--no-direct-data'.
++
++ All known issues with direct data optimizations are detected at
++ link time, so if the linker doesn't complain, the result should
++ run just fine.
++
++
++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent
++
++4.5 `ld' and HPPA 32-bit ELF Support
++====================================
++
++When generating a shared library, `ld' will by default generate import
++stubs suitable for use with a single sub-space application. The
++`--multi-subspace' switch causes `ld' to generate export stubs, and
++different (larger) import stubs suitable for use with multiple
++sub-spaces.
++
++ Long branch stubs and import/export stubs are placed by `ld' in stub
++sections located between groups of input sections. `--stub-group-size'
++specifies the maximum size of a group of input sections handled by one
++stub section. Since branch offsets are signed, a stub section may
++serve two groups of input sections, one group before the stub section,
++and one group after it. However, when using conditional branches that
++require stubs, it may be better (for branch prediction) that stub
++sections only serve one group of input sections. A negative value for
++`N' chooses this scheme, ensuring that branches to stubs always use a
++negative offset. Two special values of `N' are recognized, `1' and
++`-1'. These both instruct `ld' to automatically size input section
++groups for the branch types detected, with the same behaviour regarding
++stub placement as other positive or negative values of `N' respectively.
++
++ Note that `--stub-group-size' does not split input sections. A
++single input section larger than the group size specified will of course
++create a larger group (of one section). If input sections are too
++large, it may not be possible for a branch to reach its stub.
++
++
++File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent
++
++4.6 `ld' and MMIX
++=================
++
++For MMIX, there is a choice of generating `ELF' object files or `mmo'
++object files when linking. The simulator `mmix' understands the `mmo'
++format. The binutils `objcopy' utility can translate between the two
++formats.
++
++ There is one special section, the `.MMIX.reg_contents' section.
++Contents in this section is assumed to correspond to that of global
++registers, and symbols referring to it are translated to special
++symbols, equal to registers. In a final link, the start address of the
++`.MMIX.reg_contents' section corresponds to the first allocated global
++register multiplied by 8. Register `$255' is not included in this
++section; it is always set to the program entry, which is at the symbol
++`Main' for `mmo' files.
++
++ Symbols with the prefix `__.MMIX.start.', for example
++`__.MMIX.start..text' and `__.MMIX.start..data' are special; there must
++be only one each, even if they are local. The default linker script
++uses these to set the default start address of a section.
++
++ Initial and trailing multiples of zero-valued 32-bit words in a
++section, are left out from an mmo file.
++
++
++File: ld.info, Node: MSP430, Next: PowerPC ELF32, Prev: MMIX, Up: Machine Dependent
++
++4.7 `ld' and MSP430
++===================
++
++For the MSP430 it is possible to select the MPU architecture. The flag
++`-m [mpu type]' will select an appropriate linker script for selected
++MPU type. (To get a list of known MPUs just pass `-m help' option to
++the linker).
++
++ The linker will recognize some extra sections which are MSP430
++specific:
++
++``.vectors''
++ Defines a portion of ROM where interrupt vectors located.
++
++``.bootloader''
++ Defines the bootloader portion of the ROM (if applicable). Any
++ code in this section will be uploaded to the MPU.
++
++``.infomem''
++ Defines an information memory section (if applicable). Any code in
++ this section will be uploaded to the MPU.
++
++``.infomemnobits''
++ This is the same as the `.infomem' section except that any code in
++ this section will not be uploaded to the MPU.
++
++``.noinit''
++ Denotes a portion of RAM located above `.bss' section.
++
++ The last two sections are used by gcc.
++
++
++File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent
++
++4.8 `ld' and PowerPC 32-bit ELF Support
++=======================================
++
++Branches on PowerPC processors are limited to a signed 26-bit
++displacement, which may result in `ld' giving `relocation truncated to
++fit' errors with very large programs. `--relax' enables the generation
++of trampolines that can access the entire 32-bit address space. These
++trampolines are inserted at section boundaries, so may not themselves
++be reachable if an input section exceeds 33M in size.
++
++`--bss-plt'
++ Current PowerPC GCC accepts a `-msecure-plt' option that generates
++ code capable of using a newer PLT and GOT layout that has the
++ security advantage of no executable section ever needing to be
++ writable and no writable section ever being executable. PowerPC
++ `ld' will generate this layout, including stubs to access the PLT,
++ if all input files (including startup and static libraries) were
++ compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT
++ (and GOT layout) which can give slightly better performance.
++
++`--sdata-got'
++ The new secure PLT and GOT are placed differently relative to other
++ sections compared to older BSS PLT and GOT placement. The
++ location of `.plt' must change because the new secure PLT is an
++ initialized section while the old PLT is uninitialized. The
++ reason for the `.got' change is more subtle: The new placement
++ allows `.got' to be read-only in applications linked with `-z
++ relro -z now'. However, this placement means that `.sdata' cannot
++ always be used in shared libraries, because the PowerPC ABI
++ accesses `.sdata' in shared libraries from the GOT pointer.
++ `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't
++ use `.sdata' in shared libraries, so this option is really only
++ useful for other compilers that may do so.
++
++`--emit-stub-syms'
++ This option causes `ld' to label linker stubs with a local symbol
++ that encodes the stub type and destination.
++
++`--no-tls-optimize'
++ PowerPC `ld' normally performs some optimization of code sequences
++ used to access Thread-Local Storage. Use this option to disable
++ the optimization.
++
++
++File: ld.info, Node: PowerPC64 ELF64, Next: TI COFF, Prev: PowerPC ELF32, Up: Machine Dependent
++
++4.8 `ld' and PowerPC64 64-bit ELF Support
++=========================================
++
++`--stub-group-size'
++ Long branch stubs, PLT call stubs and TOC adjusting stubs are
++ placed by `ld' in stub sections located between groups of input
++ sections. `--stub-group-size' specifies the maximum size of a
++ group of input sections handled by one stub section. Since branch
++ offsets are signed, a stub section may serve two groups of input
++ sections, one group before the stub section, and one group after
++ it. However, when using conditional branches that require stubs,
++ it may be better (for branch prediction) that stub sections only
++ serve one group of input sections. A negative value for `N'
++ chooses this scheme, ensuring that branches to stubs always use a
++ negative offset. Two special values of `N' are recognized, `1'
++ and `-1'. These both instruct `ld' to automatically size input
++ section groups for the branch types detected, with the same
++ behaviour regarding stub placement as other positive or negative
++ values of `N' respectively.
++
++ Note that `--stub-group-size' does not split input sections. A
++ single input section larger than the group size specified will of
++ course create a larger group (of one section). If input sections
++ are too large, it may not be possible for a branch to reach its
++ stub.
++
++`--emit-stub-syms'
++ This option causes `ld' to label linker stubs with a local symbol
++ that encodes the stub type and destination.
++
++`--dotsyms, --no-dotsyms'
++ These two options control how `ld' interprets version patterns in
++ a version script. Older PowerPC64 compilers emitted both a
++ function descriptor symbol with the same name as the function, and
++ a code entry symbol with the name prefixed by a dot (`.'). To
++ properly version a function `foo', the version script thus needs
++ to control both `foo' and `.foo'. The option `--dotsyms', on by
++ default, automatically adds the required dot-prefixed patterns.
++ Use `--no-dotsyms' to disable this feature.
++
++`--no-tls-optimize'
++ PowerPC64 `ld' normally performs some optimization of code
++ sequences used to access Thread-Local Storage. Use this option to
++ disable the optimization.
++
++`--no-opd-optimize'
++ PowerPC64 `ld' normally removes `.opd' section entries
++ corresponding to deleted link-once functions, or functions removed
++ by the action of `--gc-sections' or linker scrip `/DISCARD/'. Use
++ this option to disable `.opd' optimization.
++
++`--non-overlapping-opd'
++ Some PowerPC64 compilers have an option to generate compressed
++ `.opd' entries spaced 16 bytes apart, overlapping the third word,
++ the static chain pointer (unused in C) with the first word of the
++ next entry. This option expands such entries to the full 24 bytes.
++
++`--no-toc-optimize'
++ PowerPC64 `ld' normally removes unused `.toc' section entries.
++ Such entries are detected by examining relocations that reference
++ the TOC in code sections. A reloc in a deleted code section marks
++ a TOC word as unneeded, while a reloc in a kept code section marks
++ a TOC word as needed. Since the TOC may reference itself, TOC
++ relocs are also examined. TOC words marked as both needed and
++ unneeded will of course be kept. TOC words without any referencing
++ reloc are assumed to be part of a multi-word entry, and are kept or
++ discarded as per the nearest marked preceding word. This works
++ reliably for compiler generated code, but may be incorrect if
++ assembly code is used to insert TOC entries. Use this option to
++ disable the optimization.
++
++`--no-multi-toc'
++ By default, PowerPC64 GCC generates code for a TOC model where TOC
++ entries are accessed with a 16-bit offset from r2. This limits the
++ total TOC size to 64K. PowerPC64 `ld' extends this limit by
++ grouping code sections such that each group uses less than 64K for
++ its TOC entries, then inserts r2 adjusting stubs between
++ inter-group calls. `ld' does not split apart input sections, so
++ cannot help if a single input file has a `.toc' section that
++ exceeds 64K, most likely from linking multiple files with `ld -r'.
++ Use this option to turn off this feature.
++
++
++File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent
++
++4.10 `ld''s Support for Various TI COFF Versions
++===============================================
++
++The `--format' switch allows selection of one of the various TI COFF
++versions. The latest of this writing is 2; versions 0 and 1 are also
++supported. The TI COFF versions also vary in header byte-order format;
++`ld' will read any version or byte order, but the output header format
++depends on the default specified by the specific target.
++
++
++File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent
++
++4.11 `ld' and WIN32 (cygwin/mingw)
++==================================
++
++This section describes some of the win32 specific `ld' issues. See
++*Note Command Line Options: Options. for detailed decription of the
++command line options mentioned here.
++
++_import libraries_
++ The standard Windows linker creates and uses so-called import
++ libraries, which contains information for linking to dll's. They
++ are regular static archives and are handled as any other static
++ archive. The cygwin and mingw ports of `ld' have specific support
++ for creating such libraries provided with the `--out-implib'
++ command line option.
++
++_exporting DLL symbols_
++ The cygwin/mingw `ld' has several ways to export symbols for dll's.
++
++ _using auto-export functionality_
++ By default `ld' exports symbols with the auto-export
++ functionality, which is controlled by the following command
++ line options:
++
++ * -export-all-symbols [This is the default]
++
++ * -exclude-symbols
++
++ * -exclude-libs
++
++ If, however, `--export-all-symbols' is not given explicitly
++ on the command line, then the default auto-export behavior
++ will be _disabled_ if either of the following are true:
++
++ * A DEF file is used.
++
++ * Any symbol in any object file was marked with the
++ __declspec(dllexport) attribute.
++
++ _using a DEF file_
++ Another way of exporting symbols is using a DEF file. A DEF
++ file is an ASCII file containing definitions of symbols which
++ should be exported when a dll is created. Usually it is
++ named `<dll name>.def' and is added as any other object file
++ to the linker's command line. The file's name must end in
++ `.def' or `.DEF'.
++
++ gcc -o <output> <objectfiles> <dll name>.def
++
++ Using a DEF file turns off the normal auto-export behavior,
++ unless the `--export-all-symbols' option is also used.
++
++ Here is an example of a DEF file for a shared library called
++ `xyz.dll':
++
++ LIBRARY "xyz.dll" BASE=0x20000000
++
++ EXPORTS
++ foo
++ bar
++ _bar = bar
++ another_foo = abc.dll.afoo
++ var1 DATA
++
++ This example defines a DLL with a non-default base address
++ and five symbols in the export table. The third exported
++ symbol `_bar' is an alias for the second. The fourth symbol,
++ `another_foo' is resolved by "forwarding" to another module
++ and treating it as an alias for `afoo' exported from the DLL
++ `abc.dll'. The final symbol `var1' is declared to be a data
++ object.
++
++ The optional `LIBRARY <name>' command indicates the _internal_
++ name of the output DLL. If `<name>' does not include a suffix,
++ the default library suffix, `.DLL' is appended.
++
++ When the .DEF file is used to build an application. rather
++ than a library, the `NAME <name>' command shoud be used
++ instead of `LIBRARY'. If `<name>' does not include a suffix,
++ the default executable suffix, `.EXE' is appended.
++
++ With either `LIBRARY <name>' or `NAME <name>' the optional
++ specification `BASE = <number>' may be used to specify a
++ non-default base address for the image.
++
++ If neither `LIBRARY <name>' nor `NAME <name>' is specified,
++ or they specify an empty string, the internal name is the
++ same as the filename specified on the command line.
++
++ The complete specification of an export symbol is:
++
++ EXPORTS
++ ( ( ( <name1> [ = <name2> ] )
++ | ( <name1> = <module-name> . <external-name>))
++ [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) *
++
++ Declares `<name1>' as an exported symbol from the DLL, or
++ declares `<name1>' as an exported alias for `<name2>'; or
++ declares `<name1>' as a "forward" alias for the symbol
++ `<external-name>' in the DLL `<module-name>'. Optionally,
++ the symbol may be exported by the specified ordinal
++ `<integer>' alias.
++
++ The optional keywords that follow the declaration indicate:
++
++ `NONAME': Do not put the symbol name in the DLL's export
++ table. It will still be exported by its ordinal alias
++ (either the value specified by the .def specification or,
++ otherwise, the value assigned by the linker). The symbol
++ name, however, does remain visible in the import library (if
++ any), unless `PRIVATE' is also specified.
++
++ `DATA': The symbol is a variable or object, rather than a
++ function. The import lib will export only an indirect
++ reference to `foo' as the symbol `_imp__foo' (ie, `foo' must
++ be resolved as `*_imp__foo').
++
++ `CONSTANT': Like `DATA', but put the undecorated `foo' as
++ well as `_imp__foo' into the import library. Both refer to the
++ read-only import address table's pointer to the variable, not
++ to the variable itself. This can be dangerous. If the user
++ code fails to add the `dllimport' attribute and also fails to
++ explicitly add the extra indirection that the use of the
++ attribute enforces, the application will behave unexpectedly.
++
++ `PRIVATE': Put the symbol in the DLL's export table, but do
++ not put it into the static import library used to resolve
++ imports at link time. The symbol can still be imported using
++ the `LoadLibrary/GetProcAddress' API at runtime or by by
++ using the GNU ld extension of linking directly to the DLL
++ without an import library.
++
++ See ld/deffilep.y in the binutils sources for the full
++ specification of other DEF file statements
++
++ While linking a shared dll, `ld' is able to create a DEF file
++ with the `--output-def <file>' command line option.
++
++ _Using decorations_
++ Another way of marking symbols for export is to modify the
++ source code itself, so that when building the DLL each symbol
++ to be exported is declared as:
++
++ __declspec(dllexport) int a_variable
++ __declspec(dllexport) void a_function(int with_args)
++
++ All such symbols will be exported from the DLL. If, however,
++ any of the object files in the DLL contain symbols decorated
++ in this way, then the normal auto-export behavior is
++ disabled, unless the `--export-all-symbols' option is also
++ used.
++
++ Note that object files that wish to access these symbols must
++ _not_ decorate them with dllexport. Instead, they should use
++ dllimport, instead:
++
++ __declspec(dllimport) int a_variable
++ __declspec(dllimport) void a_function(int with_args)
++
++ This complicates the structure of library header files,
++ because when included by the library itself the header must
++ declare the variables and functions as dllexport, but when
++ included by client code the header must declare them as
++ dllimport. There are a number of idioms that are typically
++ used to do this; often client code can omit the __declspec()
++ declaration completely. See `--enable-auto-import' and
++ `automatic data imports' for more imformation.
++
++_automatic data imports_
++ The standard Windows dll format supports data imports from dlls
++ only by adding special decorations (dllimport/dllexport), which
++ let the compiler produce specific assembler instructions to deal
++ with this issue. This increases the effort necessary to port
++ existing Un*x code to these platforms, especially for large c++
++ libraries and applications. The auto-import feature, which was
++ initially provided by Paul Sokolovsky, allows one to omit the
++ decorations to archieve a behavior that conforms to that on
++ POSIX/Un*x platforms. This feature is enabled with the
++ `--enable-auto-import' command-line option, although it is enabled
++ by default on cygwin/mingw. The `--enable-auto-import' option
++ itself now serves mainly to suppress any warnings that are
++ ordinarily emitted when linked objects trigger the feature's use.
++
++ auto-import of variables does not always work flawlessly without
++ additional assistance. Sometimes, you will see this message
++
++ "variable '<var>' can't be auto-imported. Please read the
++ documentation for ld's `--enable-auto-import' for details."
++
++ The `--enable-auto-import' documentation explains why this error
++ occurs, and several methods that can be used to overcome this
++ difficulty. One of these methods is the _runtime pseudo-relocs_
++ feature, described below.
++
++ For complex variables imported from DLLs (such as structs or
++ classes), object files typically contain a base address for the
++ variable and an offset (_addend_) within the variable-to specify a
++ particular field or public member, for instance. Unfortunately,
++ the runtime loader used in win32 environments is incapable of
++ fixing these references at runtime without the additional
++ information supplied by dllimport/dllexport decorations. The
++ standard auto-import feature described above is unable to resolve
++ these references.
++
++ The `--enable-runtime-pseudo-relocs' switch allows these
++ references to be resolved without error, while leaving the task of
++ adjusting the references themselves (with their non-zero addends)
++ to specialized code provided by the runtime environment. Recent
++ versions of the cygwin and mingw environments and compilers
++ provide this runtime support; older versions do not. However, the
++ support is only necessary on the developer's platform; the
++ compiled result will run without error on an older system.
++
++ `--enable-runtime-pseudo-relocs' is not the default; it must be
++ explicitly enabled as needed.
++
++_direct linking to a dll_
++ The cygwin/mingw ports of `ld' support the direct linking,
++ including data symbols, to a dll without the usage of any import
++ libraries. This is much faster and uses much less memory than
++ does the traditional import library method, expecially when
++ linking large libraries or applications. When `ld' creates an
++ import lib, each function or variable exported from the dll is
++ stored in its own bfd, even though a single bfd could contain many
++ exports. The overhead involved in storing, loading, and
++ processing so many bfd's is quite large, and explains the
++ tremendous time, memory, and storage needed to link against
++ particularly large or complex libraries when using import libs.
++
++ Linking directly to a dll uses no extra command-line switches
++ other than `-L' and `-l', because `ld' already searches for a
++ number of names to match each library. All that is needed from
++ the developer's perspective is an understanding of this search, in
++ order to force ld to select the dll instead of an import library.
++
++ For instance, when ld is called with the argument `-lxxx' it will
++ attempt to find, in the first directory of its search path,
++
++ libxxx.dll.a
++ xxx.dll.a
++ libxxx.a
++ cygxxx.dll (*)
++ libxxx.dll
++ xxx.dll
++
++ before moving on to the next directory in the search path.
++
++ (*) Actually, this is not `cygxxx.dll' but in fact is
++ `<prefix>xxx.dll', where `<prefix>' is set by the `ld' option
++ `--dll-search-prefix=<prefix>'. In the case of cygwin, the
++ standard gcc spec file includes `--dll-search-prefix=cyg', so in
++ effect we actually search for `cygxxx.dll'.
++
++ Other win32-based unix environments, such as mingw or pw32, may
++ use other `<prefix>'es, although at present only cygwin makes use
++ of this feature. It was originally intended to help avoid name
++ conflicts among dll's built for the various win32/un*x
++ environments, so that (for example) two versions of a zlib dll
++ could coexist on the same machine.
++
++ The generic cygwin/mingw path layout uses a `bin' directory for
++ applications and dll's and a `lib' directory for the import
++ libraries (using cygwin nomenclature):
++
++ bin/
++ cygxxx.dll
++ lib/
++ libxxx.dll.a (in case of dll's)
++ libxxx.a (in case of static archive)
++
++ Linking directly to a dll without using the import library can be
++ done two ways:
++
++ 1. Use the dll directly by adding the `bin' path to the link line
++ gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx
++
++ However, as the dll's often have version numbers appended to their
++ names (`cygncurses-5.dll') this will often fail, unless one
++ specifies `-L../bin -lncurses-5' to include the version. Import
++ libs are generally not versioned, and do not have this difficulty.
++
++ 2. Create a symbolic link from the dll to a file in the `lib'
++ directory according to the above mentioned search pattern. This
++ should be used to avoid unwanted changes in the tools needed for
++ making the app/dll.
++
++ ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a]
++
++ Then you can link without any make environment changes.
++
++ gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx
++
++ This technique also avoids the version number problems, because
++ the following is perfectly legal
++
++ bin/
++ cygxxx-5.dll
++ lib/
++ libxxx.dll.a -> ../bin/cygxxx-5.dll
++
++ Linking directly to a dll without using an import lib will work
++ even when auto-import features are exercised, and even when
++ `--enable-runtime-pseudo-relocs' is used.
++
++ Given the improvements in speed and memory usage, one might
++ justifiably wonder why import libraries are used at all. There
++ are two reasons:
++
++ 1. Until recently, the link-directly-to-dll functionality did _not_
++ work with auto-imported data.
++
++ 2. Sometimes it is necessary to include pure static objects within
++ the import library (which otherwise contains only bfd's for
++ indirection symbols that point to the exports of a dll). Again,
++ the import lib for the cygwin kernel makes use of this ability,
++ and it is not possible to do this without an import lib.
++
++ So, import libs are not going away. But the ability to replace
++ true import libs with a simple symbolic link to (or a copy of) a
++ dll, in most cases, is a useful addition to the suite of tools
++ binutils makes available to the win32 developer. Given the
++ massive improvements in memory requirements during linking, storage
++ requirements, and linking speed, we expect that many developers
++ will soon begin to use this feature whenever possible.
++
++_symbol aliasing_
++
++ _adding additional names_
++ Sometimes, it is useful to export symbols with additional
++ names. A symbol `foo' will be exported as `foo', but it can
++ also be exported as `_foo' by using special directives in the
++ DEF file when creating the dll. This will affect also the
++ optional created import library. Consider the following DEF
++ file:
++
++ LIBRARY "xyz.dll" BASE=0x61000000
++
++ EXPORTS
++ foo
++ _foo = foo
++
++ The line `_foo = foo' maps the symbol `foo' to `_foo'.
++
++ Another method for creating a symbol alias is to create it in
++ the source code using the "weak" attribute:
++
++ void foo () { /* Do something. */; }
++ void _foo () __attribute__ ((weak, alias ("foo")));
++
++ See the gcc manual for more information about attributes and
++ weak symbols.
++
++ _renaming symbols_
++ Sometimes it is useful to rename exports. For instance, the
++ cygwin kernel does this regularly. A symbol `_foo' can be
++ exported as `foo' but not as `_foo' by using special
++ directives in the DEF file. (This will also affect the import
++ library, if it is created). In the following example:
++
++ LIBRARY "xyz.dll" BASE=0x61000000
++
++ EXPORTS
++ _foo = foo
++
++ The line `_foo = foo' maps the exported symbol `foo' to
++ `_foo'.
++
++ Note: using a DEF file disables the default auto-export behavior,
++ unless the `--export-all-symbols' command line option is used.
++ If, however, you are trying to rename symbols, then you should list
++ _all_ desired exports in the DEF file, including the symbols that
++ are not being renamed, and do _not_ use the `--export-all-symbols'
++ option. If you list only the renamed symbols in the DEF file, and
++ use `--export-all-symbols' to handle the other symbols, then the
++ both the new names _and_ the original names for the renamed
++ symbols will be exported. In effect, you'd be aliasing those
++ symbols, not renaming them, which is probably not what you wanted.
++
++_weak externals_
++ The Windows object format, PE, specifies a form of weak symbols
++ called weak externals. When a weak symbol is linked and the
++ symbol is not defined, the weak symbol becomes an alias for some
++ other symbol. There are three variants of weak externals:
++ * Definition is searched for in objects and libraries,
++ historically called lazy externals.
++
++ * Definition is searched for only in other objects, not in
++ libraries. This form is not presently implemented.
++
++ * No search; the symbol is an alias. This form is not presently
++ implemented.
++ As a GNU extension, weak symbols that do not specify an alternate
++ symbol are supported. If the symbol is undefined when linking,
++ the symbol uses a default value.
++
++
++File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent
++
++4.12 `ld' and Xtensa Processors
++===============================
++
++The default `ld' behavior for Xtensa processors is to interpret
++`SECTIONS' commands so that lists of explicitly named sections in a
++specification with a wildcard file will be interleaved when necessary to
++keep literal pools within the range of PC-relative load offsets. For
++example, with the command:
++
++ SECTIONS
++ {
++ .text : {
++ *(.literal .text)
++ }
++ }
++
++`ld' may interleave some of the `.literal' and `.text' sections from
++different object files to ensure that the literal pools are within the
++range of PC-relative load offsets. A valid interleaving might place
++the `.literal' sections from an initial group of files followed by the
++`.text' sections of that group of files. Then, the `.literal' sections
++from the rest of the files and the `.text' sections from the rest of
++the files would follow.
++
++ Relaxation is enabled by default for the Xtensa version of `ld' and
++provides two important link-time optimizations. The first optimization
++is to combine identical literal values to reduce code size. A redundant
++literal will be removed and all the `L32R' instructions that use it
++will be changed to reference an identical literal, as long as the
++location of the replacement literal is within the offset range of all
++the `L32R' instructions. The second optimization is to remove
++unnecessary overhead from assembler-generated "longcall" sequences of
++`L32R'/`CALLXN' when the target functions are within range of direct
++`CALLN' instructions.
++
++ For each of these cases where an indirect call sequence can be
++optimized to a direct call, the linker will change the `CALLXN'
++instruction to a `CALLN' instruction, remove the `L32R' instruction,
++and remove the literal referenced by the `L32R' instruction if it is
++not used for anything else. Removing the `L32R' instruction always
++reduces code size but can potentially hurt performance by changing the
++alignment of subsequent branch targets. By default, the linker will
++always preserve alignments, either by switching some instructions
++between 24-bit encodings and the equivalent density instructions or by
++inserting a no-op in place of the `L32R' instruction that was removed.
++If code size is more important than performance, the `--size-opt'
++option can be used to prevent the linker from widening density
++instructions or inserting no-ops, except in a few cases where no-ops
++are required for correctness.
++
++ The following Xtensa-specific command-line options can be used to
++control the linker:
++
++`--no-relax'
++ Since the Xtensa version of `ld' enables the `--relax' option by
++ default, the `--no-relax' option is provided to disable relaxation.
++
++`--size-opt'
++ When optimizing indirect calls to direct calls, optimize for code
++ size more than performance. With this option, the linker will not
++ insert no-ops or widen density instructions to preserve branch
++ target alignment. There may still be some cases where no-ops are
++ required to preserve the correctness of the code.
++
++
++File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top
++
++5 BFD
++*****
++
++The linker accesses object and archive files using the BFD libraries.
++These libraries allow the linker to use the same routines to operate on
++object files whatever the object file format. A different object file
++format can be supported simply by creating a new BFD back end and adding
++it to the library. To conserve runtime memory, however, the linker and
++associated tools are usually configured to support only a subset of the
++object file formats available. You can use `objdump -i' (*note
++objdump: (binutils.info)objdump.) to list all the formats available for
++your configuration.
++
++ As with most implementations, BFD is a compromise between several
++conflicting requirements. The major factor influencing BFD design was
++efficiency: any time used converting between formats is time which
++would not have been spent had BFD not been involved. This is partly
++offset by abstraction payback; since BFD simplifies applications and
++back ends, more time and care may be spent optimizing algorithms for a
++greater speed.
++
++ One minor artifact of the BFD solution which you should bear in mind
++is the potential for information loss. There are two places where
++useful information can be lost using the BFD mechanism: during
++conversion and during output. *Note BFD information loss::.
++
++* Menu:
++
++* BFD outline:: How it works: an outline of BFD
++
++
++File: ld.info, Node: BFD outline, Up: BFD
++
++5.1 How It Works: An Outline of BFD
++===================================
++
++When an object file is opened, BFD subroutines automatically determine
++the format of the input object file. They then build a descriptor in
++memory with pointers to routines that will be used to access elements of
++the object file's data structures.
++
++ As different information from the object files is required, BFD
++reads from different sections of the file and processes them. For
++example, a very common operation for the linker is processing symbol
++tables. Each BFD back end provides a routine for converting between
++the object file's representation of symbols and an internal canonical
++format. When the linker asks for the symbol table of an object file, it
++calls through a memory pointer to the routine from the relevant BFD
++back end which reads and converts the table into a canonical form. The
++linker then operates upon the canonical form. When the link is finished
++and the linker writes the output file's symbol table, another BFD back
++end routine is called to take the newly created symbol table and
++convert it into the chosen output format.
++
++* Menu:
++
++* BFD information loss:: Information Loss
++* Canonical format:: The BFD canonical object-file format
++
++
++File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline
++
++5.1.1 Information Loss
++----------------------
++
++_Information can be lost during output._ The output formats supported
++by BFD do not provide identical facilities, and information which can
++be described in one form has nowhere to go in another format. One
++example of this is alignment information in `b.out'. There is nowhere
++in an `a.out' format file to store alignment information on the
++contained data, so when a file is linked from `b.out' and an `a.out'
++image is produced, alignment information will not propagate to the
++output file. (The linker will still use the alignment information
++internally, so the link is performed correctly).
++
++ Another example is COFF section names. COFF files may contain an
++unlimited number of sections, each one with a textual section name. If
++the target of the link is a format which does not have many sections
++(e.g., `a.out') or has sections without names (e.g., the Oasys format),
++the link cannot be done simply. You can circumvent this problem by
++describing the desired input-to-output section mapping with the linker
++command language.
++
++ _Information can be lost during canonicalization._ The BFD internal
++canonical form of the external formats is not exhaustive; there are
++structures in input formats for which there is no direct representation
++internally. This means that the BFD back ends cannot maintain all
++possible data richness through the transformation between external to
++internal and back to external formats.
++
++ This limitation is only a problem when an application reads one
++format and writes another. Each BFD back end is responsible for
++maintaining as much data as possible, and the internal BFD canonical
++form has structures which are opaque to the BFD core, and exported only
++to the back ends. When a file is read in one format, the canonical form
++is generated for BFD and the application. At the same time, the back
++end saves away any information which may otherwise be lost. If the data
++is then written back in the same format, the back end routine will be
++able to use the canonical form provided by the BFD core as well as the
++information it prepared earlier. Since there is a great deal of
++commonality between back ends, there is no information lost when
++linking or copying big endian COFF to little endian COFF, or `a.out' to
++`b.out'. When a mixture of formats is linked, the information is only
++lost from the files whose format differs from the destination.
++
++
++File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline
++
++5.1.2 The BFD canonical object-file format
++------------------------------------------
++
++The greatest potential for loss of information occurs when there is the
++least overlap between the information provided by the source format,
++that stored by the canonical format, and that needed by the destination
++format. A brief description of the canonical form may help you
++understand which kinds of data you can count on preserving across
++conversions.
++
++_files_
++ Information stored on a per-file basis includes target machine
++ architecture, particular implementation format type, a demand
++ pageable bit, and a write protected bit. Information like Unix
++ magic numbers is not stored here--only the magic numbers' meaning,
++ so a `ZMAGIC' file would have both the demand pageable bit and the
++ write protected text bit set. The byte order of the target is
++ stored on a per-file basis, so that big- and little-endian object
++ files may be used with one another.
++
++_sections_
++ Each section in the input file contains the name of the section,
++ the section's original address in the object file, size and
++ alignment information, various flags, and pointers into other BFD
++ data structures.
++
++_symbols_
++ Each symbol contains a pointer to the information for the object
++ file which originally defined it, its name, its value, and various
++ flag bits. When a BFD back end reads in a symbol table, it
++ relocates all symbols to make them relative to the base of the
++ section where they were defined. Doing this ensures that each
++ symbol points to its containing section. Each symbol also has a
++ varying amount of hidden private data for the BFD back end. Since
++ the symbol points to the original file, the private data format
++ for that symbol is accessible. `ld' can operate on a collection
++ of symbols of wildly different formats without problems.
++
++ Normal global and simple local symbols are maintained on output,
++ so an output file (no matter its format) will retain symbols
++ pointing to functions and to global, static, and common variables.
++ Some symbol information is not worth retaining; in `a.out', type
++ information is stored in the symbol table as long symbol names.
++ This information would be useless to most COFF debuggers; the
++ linker has command line switches to allow users to throw it away.
++
++ There is one word of type information within the symbol, so if the
++ format supports symbol type information within symbols (for
++ example, COFF, IEEE, Oasys) and the type is simple enough to fit
++ within one word (nearly everything but aggregates), the
++ information will be preserved.
++
++_relocation level_
++ Each canonical BFD relocation record contains a pointer to the
++ symbol to relocate to, the offset of the data to relocate, the
++ section the data is in, and a pointer to a relocation type
++ descriptor. Relocation is performed by passing messages through
++ the relocation type descriptor and the symbol pointer. Therefore,
++ relocations can be performed on output data using a relocation
++ method that is only available in one of the input formats. For
++ instance, Oasys provides a byte relocation format. A relocation
++ record requesting this relocation type would point indirectly to a
++ routine to perform this, so the relocation may be performed on a
++ byte being written to a 68k COFF file, even though 68k COFF has no
++ such relocation type.
++
++_line numbers_
++ Object formats can contain, for debugging purposes, some form of
++ mapping between symbols, source line numbers, and addresses in the
++ output file. These addresses have to be relocated along with the
++ symbol information. Each symbol with an associated list of line
++ number records points to the first record of the list. The head
++ of a line number list consists of a pointer to the symbol, which
++ allows finding out the address of the function whose line number
++ is being described. The rest of the list is made up of pairs:
++ offsets into the section and line numbers. Any format which can
++ simply derive this information can pass it successfully between
++ formats (COFF, IEEE and Oasys).
++
++
++File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top
++
++6 Reporting Bugs
++****************
++
++Your bug reports play an essential role in making `ld' reliable.
++
++ Reporting a bug may help you by bringing a solution to your problem,
++or it may not. But in any case the principal function of a bug report
++is to help the entire community by making the next version of `ld' work
++better. Bug reports are your contribution to the maintenance of `ld'.
++
++ In order for a bug report to serve its purpose, you must include the
++information that enables us to fix the bug.
++
++* Menu:
++
++* Bug Criteria:: Have you found a bug?
++* Bug Reporting:: How to report bugs
++
++
++File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs
++
++6.1 Have You Found a Bug?
++=========================
++
++If you are not sure whether you have found a bug, here are some
++guidelines:
++
++ * If the linker gets a fatal signal, for any input whatever, that is
++ a `ld' bug. Reliable linkers never crash.
++
++ * If `ld' produces an error message for valid input, that is a bug.
++
++ * If `ld' does not produce an error message for invalid input, that
++ may be a bug. In the general case, the linker can not verify that
++ object files are correct.
++
++ * If you are an experienced user of linkers, your suggestions for
++ improvement of `ld' are welcome in any case.
++
++
++File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs
++
++6.2 How to Report Bugs
++======================
++
++A number of companies and individuals offer support for GNU products.
++If you obtained `ld' from a support organization, we recommend you
++contact that organization first.
++
++ You can find contact information for many support companies and
++individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
++
++ Otherwise, send bug reports for `ld' to `bug-binutils@gnu.org'.
++
++ The fundamental principle of reporting bugs usefully is this:
++*report all the facts*. If you are not sure whether to state a fact or
++leave it out, state it!
++
++ Often people omit facts because they think they know what causes the
++problem and assume that some details do not matter. Thus, you might
++assume that the name of a symbol you use in an example does not matter.
++Well, probably it does not, but one cannot be sure. Perhaps the bug
++is a stray memory reference which happens to fetch from the location
++where that name is stored in memory; perhaps, if the name were
++different, the contents of that location would fool the linker into
++doing the right thing despite the bug. Play it safe and give a
++specific, complete example. That is the easiest thing for you to do,
++and the most helpful.
++
++ Keep in mind that the purpose of a bug report is to enable us to fix
++the bug if it is new to us. Therefore, always write your bug reports
++on the assumption that the bug has not been reported previously.
++
++ Sometimes people give a few sketchy facts and ask, "Does this ring a
++bell?" This cannot help us fix a bug, so it is basically useless. We
++respond by asking for enough details to enable us to investigate. You
++might as well expedite matters by sending them to begin with.
++
++ To enable us to fix the bug, you should include all these things:
++
++ * The version of `ld'. `ld' announces it if you start it with the
++ `--version' argument.
++
++ Without this, we will not know whether there is any point in
++ looking for the bug in the current version of `ld'.
++
++ * Any patches you may have applied to the `ld' source, including any
++ patches made to the `BFD' library.
++
++ * The type of machine you are using, and the operating system name
++ and version number.
++
++ * What compiler (and its version) was used to compile `ld'--e.g.
++ "`gcc-2.7'".
++
++ * The command arguments you gave the linker to link your example and
++ observe the bug. To guarantee you will not omit something
++ important, list them all. A copy of the Makefile (or the output
++ from make) is sufficient.
++
++ If we were to try to guess the arguments, we would probably guess
++ wrong and then we might not encounter the bug.
++
++ * A complete input file, or set of input files, that will reproduce
++ the bug. It is generally most helpful to send the actual object
++ files provided that they are reasonably small. Say no more than
++ 10K. For bigger files you can either make them available by FTP
++ or HTTP or else state that you are willing to send the object
++ file(s) to whomever requests them. (Note - your email will be
++ going to a mailing list, so we do not want to clog it up with
++ large attachments). But small attachments are best.
++
++ If the source files were assembled using `gas' or compiled using
++ `gcc', then it may be OK to send the source files rather than the
++ object files. In this case, be sure to say exactly what version of
++ `gas' or `gcc' was used to produce the object files. Also say how
++ `gas' or `gcc' were configured.
++
++ * A description of what behavior you observe that you believe is
++ incorrect. For example, "It gets a fatal signal."
++
++ Of course, if the bug is that `ld' gets a fatal signal, then we
++ will certainly notice it. But if the bug is incorrect output, we
++ might not notice unless it is glaringly wrong. You might as well
++ not give us a chance to make a mistake.
++
++ Even if the problem you experience is a fatal signal, you should
++ still say so explicitly. Suppose something strange is going on,
++ such as, your copy of `ld' is out of synch, or you have
++ encountered a bug in the C library on your system. (This has
++ happened!) Your copy might crash and ours would not. If you told
++ us to expect a crash, then when ours fails to crash, we would know
++ that the bug was not happening for us. If you had not told us to
++ expect a crash, then we would not be able to draw any conclusion
++ from our observations.
++
++ * If you wish to suggest changes to the `ld' source, send us context
++ diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
++ Always send diffs from the old file to the new file. If you even
++ discuss something in the `ld' source, refer to it by context, not
++ by line number.
++
++ The line numbers in our development sources will not match those
++ in your sources. Your line numbers would convey no useful
++ information to us.
++
++ Here are some things that are not necessary:
++
++ * A description of the envelope of the bug.
++
++ Often people who encounter a bug spend a lot of time investigating
++ which changes to the input file will make the bug go away and which
++ changes will not affect it.
++
++ This is often time consuming and not very useful, because the way
++ we will find the bug is by running a single example under the
++ debugger with breakpoints, not by pure deduction from a series of
++ examples. We recommend that you save your time for something else.
++
++ Of course, if you can find a simpler example to report _instead_
++ of the original one, that is a convenience for us. Errors in the
++ output will be easier to spot, running under the debugger will take
++ less time, and so on.
++
++ However, simplification is not vital; if you do not want to do
++ this, report the bug anyway and send us the entire test case you
++ used.
++
++ * A patch for the bug.
++
++ A patch for the bug does help us if it is a good one. But do not
++ omit the necessary information, such as the test case, on the
++ assumption that a patch is all we need. We might see problems
++ with your patch and decide to fix the problem another way, or we
++ might not understand it at all.
++
++ Sometimes with a program as complicated as `ld' it is very hard to
++ construct an example that will make the program follow a certain
++ path through the code. If you do not send us the example, we will
++ not be able to construct one, so we will not be able to verify
++ that the bug is fixed.
++
++ And if we cannot understand what bug you are trying to fix, or why
++ your patch should be an improvement, we will not install it. A
++ test case will help us to understand.
++
++ * A guess about what the bug is or what it depends on.
++
++ Such guesses are usually wrong. Even we cannot guess right about
++ such things without first using the debugger to find the facts.
++
++
++File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top
++
++Appendix A MRI Compatible Script Files
++**************************************
++
++To aid users making the transition to GNU `ld' from the MRI linker,
++`ld' can use MRI compatible linker scripts as an alternative to the
++more general-purpose linker scripting language described in *Note
++Scripts::. MRI compatible linker scripts have a much simpler command
++set than the scripting language otherwise used with `ld'. GNU `ld'
++supports the most commonly used MRI linker commands; these commands are
++described here.
++
++ In general, MRI scripts aren't of much use with the `a.out' object
++file format, since it only has three sections and MRI scripts lack some
++features to make use of them.
++
++ You can specify a file containing an MRI-compatible script using the
++`-c' command-line option.
++
++ Each command in an MRI-compatible script occupies its own line; each
++command line starts with the keyword that identifies the command (though
++blank lines are also allowed for punctuation). If a line of an
++MRI-compatible script begins with an unrecognized keyword, `ld' issues
++a warning message, but continues processing the script.
++
++ Lines beginning with `*' are comments.
++
++ You can write these commands using all upper-case letters, or all
++lower case; for example, `chip' is the same as `CHIP'. The following
++list shows only the upper-case form of each command.
++
++`ABSOLUTE SECNAME'
++`ABSOLUTE SECNAME, SECNAME, ... SECNAME'
++ Normally, `ld' includes in the output file all sections from all
++ the input files. However, in an MRI-compatible script, you can
++ use the `ABSOLUTE' command to restrict the sections that will be
++ present in your output program. If the `ABSOLUTE' command is used
++ at all in a script, then only the sections named explicitly in
++ `ABSOLUTE' commands will appear in the linker output. You can
++ still use other input sections (whatever you select on the command
++ line, or using `LOAD') to resolve addresses in the output file.
++
++`ALIAS OUT-SECNAME, IN-SECNAME'
++ Use this command to place the data from input section IN-SECNAME
++ in a section called OUT-SECNAME in the linker output file.
++
++ IN-SECNAME may be an integer.
++
++`ALIGN SECNAME = EXPRESSION'
++ Align the section called SECNAME to EXPRESSION. The EXPRESSION
++ should be a power of two.
++
++`BASE EXPRESSION'
++ Use the value of EXPRESSION as the lowest address (other than
++ absolute addresses) in the output file.
++
++`CHIP EXPRESSION'
++`CHIP EXPRESSION, EXPRESSION'
++ This command does nothing; it is accepted only for compatibility.
++
++`END'
++ This command does nothing whatever; it's only accepted for
++ compatibility.
++
++`FORMAT OUTPUT-FORMAT'
++ Similar to the `OUTPUT_FORMAT' command in the more general linker
++ language, but restricted to one of these output formats:
++
++ 1. S-records, if OUTPUT-FORMAT is `S'
++
++ 2. IEEE, if OUTPUT-FORMAT is `IEEE'
++
++ 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is
++ `COFF'
++
++`LIST ANYTHING...'
++ Print (to the standard output file) a link map, as produced by the
++ `ld' command-line option `-M'.
++
++ The keyword `LIST' may be followed by anything on the same line,
++ with no change in its effect.
++
++`LOAD FILENAME'
++`LOAD FILENAME, FILENAME, ... FILENAME'
++ Include one or more object file FILENAME in the link; this has the
++ same effect as specifying FILENAME directly on the `ld' command
++ line.
++
++`NAME OUTPUT-NAME'
++ OUTPUT-NAME is the name for the program produced by `ld'; the
++ MRI-compatible command `NAME' is equivalent to the command-line
++ option `-o' or the general script language command `OUTPUT'.
++
++`ORDER SECNAME, SECNAME, ... SECNAME'
++`ORDER SECNAME SECNAME SECNAME'
++ Normally, `ld' orders the sections in its output file in the order
++ in which they first appear in the input files. In an
++ MRI-compatible script, you can override this ordering with the
++ `ORDER' command. The sections you list with `ORDER' will appear
++ first in your output file, in the order specified.
++
++`PUBLIC NAME=EXPRESSION'
++`PUBLIC NAME,EXPRESSION'
++`PUBLIC NAME EXPRESSION'
++ Supply a value (EXPRESSION) for external symbol NAME used in the
++ linker input files.
++
++`SECT SECNAME, EXPRESSION'
++`SECT SECNAME=EXPRESSION'
++`SECT SECNAME EXPRESSION'
++ You can use any of these three forms of the `SECT' command to
++ specify the start address (EXPRESSION) for section SECNAME. If
++ you have more than one `SECT' statement for the same SECNAME, only
++ the _first_ sets the start address.
++
++
++File: ld.info, Node: GNU Free Documentation License, Next: Index, Prev: MRI, Up: Top
++
++Appendix B GNU Free Documentation License
++*****************************************
++
++ Version 1.1, March 2000
++
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++
++ 0. PREAMBLE
++
++ The purpose of this License is to make a manual, textbook, or other
++ written document "free" in the sense of freedom: to assure everyone
++ the effective freedom to copy and redistribute it, with or without
++ modifying it, either commercially or noncommercially. Secondarily,
++ this License preserves for the author and publisher a way to get
++ credit for their work, while not being considered responsible for
++ modifications made by others.
++
++ This License is a kind of "copyleft", which means that derivative
++ works of the document must themselves be free in the same sense.
++ It complements the GNU General Public License, which is a copyleft
++ license designed for free software.
++
++ We have designed this License in order to use it for manuals for
++ free software, because free software needs free documentation: a
++ free program should come with manuals providing the same freedoms
++ that the software does. But this License is not limited to
++ software manuals; it can be used for any textual work, regardless
++ of subject matter or whether it is published as a printed book.
++ We recommend this License principally for works whose purpose is
++ instruction or reference.
++
++
++ 1. APPLICABILITY AND DEFINITIONS
++
++ This License applies to any manual or other work that contains a
++ notice placed by the copyright holder saying it can be distributed
++ under the terms of this License. The "Document", below, refers to
++ any such manual or work. Any member of the public is a licensee,
++ and is addressed as "you."
++
++ A "Modified Version" of the Document means any work containing the
++ Document or a portion of it, either copied verbatim, or with
++ modifications and/or translated into another language.
++
++ A "Secondary Section" is a named appendix or a front-matter
++ section of the Document that deals exclusively with the
++ relationship of the publishers or authors of the Document to the
++ Document's overall subject (or to related matters) and contains
++ nothing that could fall directly within that overall subject.
++ (For example, if the Document is in part a textbook of
++ mathematics, a Secondary Section may not explain any mathematics.)
++ The relationship could be a matter of historical connection with
++ the subject or with related matters, or of legal, commercial,
++ philosophical, ethical or political position regarding them.
++
++ The "Invariant Sections" are certain Secondary Sections whose
++ titles are designated, as being those of Invariant Sections, in
++ the notice that says that the Document is released under this
++ License.
++
++ The "Cover Texts" are certain short passages of text that are
++ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
++ that says that the Document is released under this License.
++
++ A "Transparent" copy of the Document means a machine-readable copy,
++ represented in a format whose specification is available to the
++ general public, whose contents can be viewed and edited directly
++ and straightforwardly with generic text editors or (for images
++ composed of pixels) generic paint programs or (for drawings) some
++ widely available drawing editor, and that is suitable for input to
++ text formatters or for automatic translation to a variety of
++ formats suitable for input to text formatters. A copy made in an
++ otherwise Transparent file format whose markup has been designed
++ to thwart or discourage subsequent modification by readers is not
++ Transparent. A copy that is not "Transparent" is called "Opaque."
++
++ Examples of suitable formats for Transparent copies include plain
++ ASCII without markup, Texinfo input format, LaTeX input format,
++ SGML or XML using a publicly available DTD, and
++ standard-conforming simple HTML designed for human modification.
++ Opaque formats include PostScript, PDF, proprietary formats that
++ can be read and edited only by proprietary word processors, SGML
++ or XML for which the DTD and/or processing tools are not generally
++ available, and the machine-generated HTML produced by some word
++ processors for output purposes only.
++
++ The "Title Page" means, for a printed book, the title page itself,
++ plus such following pages as are needed to hold, legibly, the
++ material this License requires to appear in the title page. For
++ works in formats which do not have any title page as such, "Title
++ Page" means the text near the most prominent appearance of the
++ work's title, preceding the beginning of the body of the text.
++
++ 2. VERBATIM COPYING
++
++ You may copy and distribute the Document in any medium, either
++ commercially or noncommercially, provided that this License, the
++ copyright notices, and the license notice saying this License
++ applies to the Document are reproduced in all copies, and that you
++ add no other conditions whatsoever to those of this License. You
++ may not use technical measures to obstruct or control the reading
++ or further copying of the copies you make or distribute. However,
++ you may accept compensation in exchange for copies. If you
++ distribute a large enough number of copies you must also follow
++ the conditions in section 3.
++
++ You may also lend copies, under the same conditions stated above,
++ and you may publicly display copies.
++
++ 3. COPYING IN QUANTITY
++
++ If you publish printed copies of the Document numbering more than
++ 100, and the Document's license notice requires Cover Texts, you
++ must enclose the copies in covers that carry, clearly and legibly,
++ all these Cover Texts: Front-Cover Texts on the front cover, and
++ Back-Cover Texts on the back cover. Both covers must also clearly
++ and legibly identify you as the publisher of these copies. The
++ front cover must present the full title with all words of the
++ title equally prominent and visible. You may add other material
++ on the covers in addition. Copying with changes limited to the
++ covers, as long as they preserve the title of the Document and
++ satisfy these conditions, can be treated as verbatim copying in
++ other respects.
++
++ If the required texts for either cover are too voluminous to fit
++ legibly, you should put the first ones listed (as many as fit
++ reasonably) on the actual cover, and continue the rest onto
++ adjacent pages.
++
++ If you publish or distribute Opaque copies of the Document
++ numbering more than 100, you must either include a
++ machine-readable Transparent copy along with each Opaque copy, or
++ state in or with each Opaque copy a publicly-accessible
++ computer-network location containing a complete Transparent copy
++ of the Document, free of added material, which the general
++ network-using public has access to download anonymously at no
++ charge using public-standard network protocols. If you use the
++ latter option, you must take reasonably prudent steps, when you
++ begin distribution of Opaque copies in quantity, to ensure that
++ this Transparent copy will remain thus accessible at the stated
++ location until at least one year after the last time you
++ distribute an Opaque copy (directly or through your agents or
++ retailers) of that edition to the public.
++
++ It is requested, but not required, that you contact the authors of
++ the Document well before redistributing any large number of
++ copies, to give them a chance to provide you with an updated
++ version of the Document.
++
++ 4. MODIFICATIONS
++
++ You may copy and distribute a Modified Version of the Document
++ under the conditions of sections 2 and 3 above, provided that you
++ release the Modified Version under precisely this License, with
++ the Modified Version filling the role of the Document, thus
++ licensing distribution and modification of the Modified Version to
++ whoever possesses a copy of it. In addition, you must do these
++ things in the Modified Version:
++
++ A. Use in the Title Page (and on the covers, if any) a title
++ distinct from that of the Document, and from those of previous
++ versions (which should, if there were any, be listed in the
++ History section of the Document). You may use the same title
++ as a previous version if the original publisher of that version
++ gives permission.
++ B. List on the Title Page, as authors, one or more persons or
++ entities responsible for authorship of the modifications in the
++ Modified Version, together with at least five of the principal
++ authors of the Document (all of its principal authors, if it
++ has less than five).
++ C. State on the Title page the name of the publisher of the
++ Modified Version, as the publisher.
++ D. Preserve all the copyright notices of the Document.
++ E. Add an appropriate copyright notice for your modifications
++ adjacent to the other copyright notices.
++ F. Include, immediately after the copyright notices, a license
++ notice giving the public permission to use the Modified Version
++ under the terms of this License, in the form shown in the
++ Addendum below.
++ G. Preserve in that license notice the full lists of Invariant
++ Sections and required Cover Texts given in the Document's
++ license notice.
++ H. Include an unaltered copy of this License.
++ I. Preserve the section entitled "History", and its title, and add
++ to it an item stating at least the title, year, new authors, and
++ publisher of the Modified Version as given on the Title Page.
++ If there is no section entitled "History" in the Document,
++ create one stating the title, year, authors, and publisher of
++ the Document as given on its Title Page, then add an item
++ describing the Modified Version as stated in the previous
++ sentence.
++ J. Preserve the network location, if any, given in the Document for
++ public access to a Transparent copy of the Document, and
++ likewise the network locations given in the Document for
++ previous versions it was based on. These may be placed in the
++ "History" section. You may omit a network location for a work
++ that was published at least four years before the Document
++ itself, or if the original publisher of the version it refers
++ to gives permission.
++ K. In any section entitled "Acknowledgements" or "Dedications",
++ preserve the section's title, and preserve in the section all the
++ substance and tone of each of the contributor acknowledgements
++ and/or dedications given therein.
++ L. Preserve all the Invariant Sections of the Document,
++ unaltered in their text and in their titles. Section numbers
++ or the equivalent are not considered part of the section titles.
++ M. Delete any section entitled "Endorsements." Such a section
++ may not be included in the Modified Version.
++ N. Do not retitle any existing section as "Endorsements" or to
++ conflict in title with any Invariant Section.
++
++ If the Modified Version includes new front-matter sections or
++ appendices that qualify as Secondary Sections and contain no
++ material copied from the Document, you may at your option
++ designate some or all of these sections as invariant. To do this,
++ add their titles to the list of Invariant Sections in the Modified
++ Version's license notice. These titles must be distinct from any
++ other section titles.
++
++ You may add a section entitled "Endorsements", provided it contains
++ nothing but endorsements of your Modified Version by various
++ parties-for example, statements of peer review or that the text has
++ been approved by an organization as the authoritative definition
++ of a standard.
++
++ You may add a passage of up to five words as a Front-Cover Text,
++ and a passage of up to 25 words as a Back-Cover Text, to the end
++ of the list of Cover Texts in the Modified Version. Only one
++ passage of Front-Cover Text and one of Back-Cover Text may be
++ added by (or through arrangements made by) any one entity. If the
++ Document already includes a cover text for the same cover,
++ previously added by you or by arrangement made by the same entity
++ you are acting on behalf of, you may not add another; but you may
++ replace the old one, on explicit permission from the previous
++ publisher that added the old one.
++
++ The author(s) and publisher(s) of the Document do not by this
++ License give permission to use their names for publicity for or to
++ assert or imply endorsement of any Modified Version.
++
++ 5. COMBINING DOCUMENTS
++
++ You may combine the Document with other documents released under
++ this License, under the terms defined in section 4 above for
++ modified versions, provided that you include in the combination
++ all of the Invariant Sections of all of the original documents,
++ unmodified, and list them all as Invariant Sections of your
++ combined work in its license notice.
++
++ The combined work need only contain one copy of this License, and
++ multiple identical Invariant Sections may be replaced with a single
++ copy. If there are multiple Invariant Sections with the same name
++ but different contents, make the title of each such section unique
++ by adding at the end of it, in parentheses, the name of the
++ original author or publisher of that section if known, or else a
++ unique number. Make the same adjustment to the section titles in
++ the list of Invariant Sections in the license notice of the
++ combined work.
++
++ In the combination, you must combine any sections entitled
++ "History" in the various original documents, forming one section
++ entitled "History"; likewise combine any sections entitled
++ "Acknowledgements", and any sections entitled "Dedications." You
++ must delete all sections entitled "Endorsements."
++
++ 6. COLLECTIONS OF DOCUMENTS
++
++ You may make a collection consisting of the Document and other
++ documents released under this License, and replace the individual
++ copies of this License in the various documents with a single copy
++ that is included in the collection, provided that you follow the
++ rules of this License for verbatim copying of each of the
++ documents in all other respects.
++
++ You may extract a single document from such a collection, and
++ distribute it individually under this License, provided you insert
++ a copy of this License into the extracted document, and follow
++ this License in all other respects regarding verbatim copying of
++ that document.
++
++ 7. AGGREGATION WITH INDEPENDENT WORKS
++
++ A compilation of the Document or its derivatives with other
++ separate and independent documents or works, in or on a volume of
++ a storage or distribution medium, does not as a whole count as a
++ Modified Version of the Document, provided no compilation
++ copyright is claimed for the compilation. Such a compilation is
++ called an "aggregate", and this License does not apply to the
++ other self-contained works thus compiled with the Document, on
++ account of their being thus compiled, if they are not themselves
++ derivative works of the Document.
++
++ If the Cover Text requirement of section 3 is applicable to these
++ copies of the Document, then if the Document is less than one
++ quarter of the entire aggregate, the Document's Cover Texts may be
++ placed on covers that surround only the Document within the
++ aggregate. Otherwise they must appear on covers around the whole
++ aggregate.
++
++ 8. TRANSLATION
++
++ Translation is considered a kind of modification, so you may
++ distribute translations of the Document under the terms of section
++ 4. Replacing Invariant Sections with translations requires special
++ permission from their copyright holders, but you may include
++ translations of some or all Invariant Sections in addition to the
++ original versions of these Invariant Sections. You may include a
++ translation of this License provided that you also include the
++ original English version of this License. In case of a
++ disagreement between the translation and the original English
++ version of this License, the original English version will prevail.
++
++ 9. TERMINATION
++
++ You may not copy, modify, sublicense, or distribute the Document
++ except as expressly provided for under this License. Any other
++ attempt to copy, modify, sublicense or distribute the Document is
++ void, and will automatically terminate your rights under this
++ License. However, parties who have received copies, or rights,
++ from you under this License will not have their licenses
++ terminated so long as such parties remain in full compliance.
++
++ 10. FUTURE REVISIONS OF THIS LICENSE
++
++ The Free Software Foundation may publish new, revised versions of
++ the GNU Free Documentation License from time to time. Such new
++ versions will be similar in spirit to the present version, but may
++ differ in detail to address new problems or concerns. See
++ http://www.gnu.org/copyleft/.
++
++ Each version of the License is given a distinguishing version
++ number. If the Document specifies that a particular numbered
++ version of this License "or any later version" applies to it, you
++ have the option of following the terms and conditions either of
++ that specified version or of any later version that has been
++ published (not as a draft) by the Free Software Foundation. If
++ the Document does not specify a version number of this License,
++ you may choose any version ever published (not as a draft) by the
++ Free Software Foundation.
++
++
++ADDENDUM: How to use this License for your documents
++====================================================
++
++To use this License in a document you have written, include a copy of
++the License in the document and put the following copyright and license
++notices just after the title page:
++
++ Copyright (C) YEAR YOUR NAME.
++ Permission is granted to copy, distribute and/or modify this document
++ under the terms of the GNU Free Documentation License, Version 1.1
++ or any later version published by the Free Software Foundation;
++ with the Invariant Sections being LIST THEIR TITLES, with the
++ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
++ A copy of the license is included in the section entitled "GNU
++ Free Documentation License."
++
++ If you have no Invariant Sections, write "with no Invariant Sections"
++instead of saying which ones are invariant. If you have no Front-Cover
++Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
++LIST"; likewise for Back-Cover Texts.
++
++ If your document contains nontrivial examples of program code, we
++recommend releasing these examples in parallel under your choice of
++free software license, such as the GNU General Public License, to
++permit their use in free software.
++
++
++File: ld.info, Node: Index, Prev: GNU Free Documentation License, Up: Top
++
++Index
++*****
++
++
++* Menu:
++
++* ": Symbols. (line 6)
++* -(: Options. (line 609)
++* --accept-unknown-input-arch: Options. (line 627)
++* --add-needed: Options. (line 649)
++* --add-stdcall-alias: Options. (line 1343)
++* --allow-multiple-definition: Options. (line 819)
++* --allow-shlib-undefined: Options. (line 825)
++* --architecture=ARCH: Options. (line 104)
++* --as-needed: Options. (line 637)
++* --auxiliary: Options. (line 205)
++* --base-file: Options. (line 1348)
++* --be8: ARM. (line 23)
++* --bss-plt: PowerPC ELF32. (line 13)
++* --check-sections: Options. (line 701)
++* --cref: Options. (line 711)
++* --default-imported-symver: Options. (line 853)
++* --default-symver: Options. (line 849)
++* --defsym SYMBOL=EXP: Options. (line 739)
++* --demangle[=STYLE]: Options. (line 752)
++* --direct-data: AVR32. (line 6)
++* --disable-auto-image-base: Options. (line 1495)
++* --disable-auto-import: Options. (line 1624)
++* --disable-new-dtags: Options. (line 1295)
++* --disable-runtime-pseudo-reloc: Options. (line 1637)
++* --disable-stdcall-fixup: Options. (line 1358)
++* --discard-all: Options. (line 513)
++* --discard-locals: Options. (line 517)
++* --dll: Options. (line 1353)
++* --dll-search-prefix: Options. (line 1501)
++* --dotsyms: PowerPC64 ELF64. (line 33)
++* --dynamic-linker FILE: Options. (line 765)
++* --eh-frame-hdr: Options. (line 1291)
++* --emit-relocs: Options. (line 415)
++* --emit-stub-syms <1>: PowerPC64 ELF64. (line 29)
++* --emit-stub-syms: PowerPC ELF32. (line 37)
++* --enable-auto-image-base: Options. (line 1487)
++* --enable-auto-import: Options. (line 1510)
++* --enable-extra-pe-debug: Options. (line 1642)
++* --enable-new-dtags: Options. (line 1295)
++* --enable-runtime-pseudo-reloc: Options. (line 1629)
++* --enable-stdcall-fixup: Options. (line 1358)
++* --entry=ENTRY: Options. (line 158)
++* --error-unresolved-symbols: Options. (line 1244)
++* --exclude-libs: Options. (line 168)
++* --exclude-symbols: Options. (line 1400)
++* --export-all-symbols: Options. (line 1376)
++* --export-dynamic: Options. (line 179)
++* --fatal-warnings: Options. (line 771)
++* --file-alignment: Options. (line 1406)
++* --filter: Options. (line 226)
++* --fix-v4bx: ARM. (line 44)
++* --force-dynamic: Options. (line 424)
++* --force-exe-suffix: Options. (line 774)
++* --format=FORMAT: Options. (line 115)
++* --format=VERSION: TI COFF. (line 6)
++* --gc-sections: Options. (line 784)
++* --gpsize: Options. (line 259)
++* --hash-size=NUMBER: Options. (line 1304)
++* --heap: Options. (line 1412)
++* --help: Options. (line 792)
++* --image-base: Options. (line 1419)
++* --just-symbols=FILE: Options. (line 447)
++* --kill-at: Options. (line 1428)
++* --large-address-aware: Options. (line 1433)
++* --library-path=DIR: Options. (line 315)
++* --library=ARCHIVE: Options. (line 285)
++* --major-image-version: Options. (line 1442)
++* --major-os-version: Options. (line 1447)
++* --major-subsystem-version: Options. (line 1451)
++* --minor-image-version: Options. (line 1456)
++* --minor-os-version: Options. (line 1461)
++* --minor-subsystem-version: Options. (line 1465)
++* --mri-script=MRI-CMDFILE: Options. (line 139)
++* --multi-subspace: HPPA ELF32. (line 6)
++* --nmagic: Options. (line 384)
++* --no-accept-unknown-input-arch: Options. (line 627)
++* --no-add-needed: Options. (line 649)
++* --no-allow-shlib-undefined: Options. (line 825)
++* --no-as-needed: Options. (line 637)
++* --no-check-sections: Options. (line 701)
++* --no-define-common: Options. (line 723)
++* --no-demangle: Options. (line 752)
++* --no-direct-data: AVR32. (line 6)
++* --no-dotsyms: PowerPC64 ELF64. (line 33)
++* --no-gc-sections: Options. (line 784)
++* --no-keep-memory: Options. (line 804)
++* --no-multi-toc: PowerPC64 ELF64. (line 74)
++* --no-omagic: Options. (line 398)
++* --no-opd-optimize: PowerPC64 ELF64. (line 48)
++* --no-relax: Xtensa. (line 56)
++* --no-tls-optimize <1>: PowerPC64 ELF64. (line 43)
++* --no-tls-optimize: PowerPC ELF32. (line 41)
++* --no-toc-optimize: PowerPC64 ELF64. (line 60)
++* --no-undefined: Options. (line 811)
++* --no-undefined-version: Options. (line 844)
++* --no-warn-mismatch: Options. (line 857)
++* --no-whole-archive: Options. (line 866)
++* --noinhibit-exec: Options. (line 870)
++* --non-overlapping-opd: PowerPC64 ELF64. (line 54)
++* --oformat: Options. (line 882)
++* --omagic: Options. (line 389)
++* --out-implib: Options. (line 1478)
++* --output-def: Options. (line 1470)
++* --output=OUTPUT: Options. (line 404)
++* --pic-executable: Options. (line 895)
++* --print-map: Options. (line 347)
++* --reduce-memory-overheads: Options. (line 1312)
++* --relax: Options. (line 911)
++* --relax on i960: i960. (line 31)
++* --relax on PowerPC: PowerPC ELF32. (line 6)
++* --relax on Xtensa: Xtensa. (line 27)
++* --relocatable: Options. (line 428)
++* --script=SCRIPT: Options. (line 471)
++* --sdata-got: PowerPC ELF32. (line 23)
++* --section-alignment: Options. (line 1647)
++* --section-start SECTIONNAME=ORG: Options. (line 1081)
++* --sort-common: Options. (line 1028)
++* --sort-section alignment: Options. (line 1038)
++* --sort-section name: Options. (line 1034)
++* --split-by-file: Options. (line 1042)
++* --split-by-reloc: Options. (line 1047)
++* --stack: Options. (line 1653)
++* --stats: Options. (line 1060)
++* --strip-all: Options. (line 458)
++* --strip-debug: Options. (line 462)
++* --stub-group-size: PowerPC64 ELF64. (line 6)
++* --stub-group-size=N: HPPA ELF32. (line 12)
++* --subsystem: Options. (line 1660)
++* --support-old-code: ARM. (line 6)
++* --sysroot: Options. (line 1064)
++* --target-help: Options. (line 796)
++* --target1-abs: ARM. (line 27)
++* --target1-rel: ARM. (line 27)
++* --target2=TYPE: ARM. (line 32)
++* --thumb-entry=ENTRY: ARM. (line 17)
++* --trace: Options. (line 467)
++* --trace-symbol=SYMBOL: Options. (line 522)
++* --traditional-format: Options. (line 1069)
++* --undefined=SYMBOL: Options. (line 480)
++* --unique[=SECTION]: Options. (line 498)
++* --unresolved-symbols: Options. (line 1096)
++* --use-blx: ARM. (line 57)
++* --verbose: Options. (line 1125)
++* --version: Options. (line 507)
++* --version-script=VERSION-SCRIPTFILE: Options. (line 1131)
++* --warn-common: Options. (line 1138)
++* --warn-constructors: Options. (line 1206)
++* --warn-multiple-gp: Options. (line 1211)
++* --warn-once: Options. (line 1225)
++* --warn-section-align: Options. (line 1229)
++* --warn-shared-textrel: Options. (line 1236)
++* --warn-unresolved-symbols: Options. (line 1239)
++* --whole-archive: Options. (line 1248)
++* --wrap: Options. (line 1262)
++* -AARCH: Options. (line 103)
++* -aKEYWORD: Options. (line 96)
++* -assert KEYWORD: Options. (line 659)
++* -b FORMAT: Options. (line 115)
++* -Bdynamic: Options. (line 662)
++* -Bgroup: Options. (line 672)
++* -Bshareable: Options. (line 1020)
++* -Bstatic: Options. (line 679)
++* -Bsymbolic: Options. (line 694)
++* -c MRI-CMDFILE: Options. (line 139)
++* -call_shared: Options. (line 662)
++* -d: Options. (line 149)
++* -dc: Options. (line 149)
++* -dn: Options. (line 679)
++* -dp: Options. (line 149)
++* -dy: Options. (line 662)
++* -E: Options. (line 179)
++* -e ENTRY: Options. (line 158)
++* -EB: Options. (line 198)
++* -EL: Options. (line 201)
++* -F: Options. (line 226)
++* -f: Options. (line 205)
++* -fini: Options. (line 250)
++* -G: Options. (line 259)
++* -g: Options. (line 256)
++* -hNAME: Options. (line 267)
++* -i: Options. (line 276)
++* -IFILE: Options. (line 765)
++* -init: Options. (line 279)
++* -lARCHIVE: Options. (line 285)
++* -LDIR: Options. (line 315)
++* -M: Options. (line 347)
++* -m EMULATION: Options. (line 337)
++* -Map: Options. (line 800)
++* -N: Options. (line 389)
++* -n: Options. (line 384)
++* -non_shared: Options. (line 679)
++* -nostdlib: Options. (line 876)
++* -O LEVEL: Options. (line 410)
++* -o OUTPUT: Options. (line 404)
++* -pie: Options. (line 895)
++* -q: Options. (line 415)
++* -qmagic: Options. (line 905)
++* -Qy: Options. (line 908)
++* -r: Options. (line 428)
++* -R FILE: Options. (line 447)
++* -rpath: Options. (line 945)
++* -rpath-link: Options. (line 967)
++* -S: Options. (line 462)
++* -s: Options. (line 458)
++* -shared: Options. (line 1020)
++* -soname=NAME: Options. (line 267)
++* -static: Options. (line 679)
++* -t: Options. (line 467)
++* -T SCRIPT: Options. (line 471)
++* -Tbss ORG: Options. (line 1090)
++* -Tdata ORG: Options. (line 1090)
++* -Ttext ORG: Options. (line 1090)
++* -u SYMBOL: Options. (line 480)
++* -Ur: Options. (line 488)
++* -V: Options. (line 507)
++* -v: Options. (line 507)
++* -X: Options. (line 517)
++* -x: Options. (line 513)
++* -Y PATH: Options. (line 531)
++* -y SYMBOL: Options. (line 522)
++* -z defs: Options. (line 811)
++* -z KEYWORD: Options. (line 535)
++* -z muldefs: Options. (line 819)
++* .: Location Counter. (line 6)
++* /DISCARD/: Output Section Discarding.
++ (line 18)
++* :PHDR: Output Section Phdr.
++ (line 6)
++* =FILLEXP: Output Section Fill.
++ (line 6)
++* >REGION: Output Section Region.
++ (line 6)
++* [COMMON]: Input Section Common.
++ (line 29)
++* ABSOLUTE (MRI): MRI. (line 33)
++* absolute and relocatable symbols: Expression Section. (line 6)
++* absolute expressions: Expression Section. (line 6)
++* ABSOLUTE(EXP): Builtin Functions. (line 10)
++* ADDR(SECTION): Builtin Functions. (line 17)
++* address, section: Output Section Address.
++ (line 6)
++* ALIAS (MRI): MRI. (line 44)
++* ALIGN (MRI): MRI. (line 50)
++* align expression: Builtin Functions. (line 36)
++* align location counter: Builtin Functions. (line 36)
++* ALIGN(ALIGN): Builtin Functions. (line 36)
++* ALIGN(EXP,ALIGN): Builtin Functions. (line 36)
++* ALIGN(SECTION_ALIGN): Forced Output Alignment.
++ (line 6)
++* allocating memory: MEMORY. (line 6)
++* architecture: Miscellaneous Commands.
++ (line 46)
++* architectures: Options. (line 103)
++* archive files, from cmd line: Options. (line 285)
++* archive search path in linker script: File Commands. (line 71)
++* arithmetic: Expressions. (line 6)
++* arithmetic operators: Operators. (line 6)
++* ARM interworking support: ARM. (line 6)
++* AS_NEEDED(FILES): File Commands. (line 51)
++* ASSERT: Miscellaneous Commands.
++ (line 9)
++* assertion in linker script: Miscellaneous Commands.
++ (line 9)
++* assignment in scripts: Assignments. (line 6)
++* AT(LMA): Output Section LMA. (line 6)
++* AT>LMA_REGION: Output Section LMA. (line 6)
++* automatic data imports: WIN32. (line 170)
++* AVR32 options: AVR32. (line 6)
++* back end: BFD. (line 6)
++* BASE (MRI): MRI. (line 54)
++* BE8: ARM. (line 23)
++* BFD canonical format: Canonical format. (line 11)
++* BFD requirements: BFD. (line 16)
++* big-endian objects: Options. (line 198)
++* binary input format: Options. (line 115)
++* BLOCK(EXP): Builtin Functions. (line 62)
++* bug criteria: Bug Criteria. (line 6)
++* bug reports: Bug Reporting. (line 6)
++* bugs in ld: Reporting Bugs. (line 6)
++* BYTE(EXPRESSION): Output Section Data.
++ (line 6)
++* C++ constructors, arranging in link: Output Section Keywords.
++ (line 19)
++* CHIP (MRI): MRI. (line 58)
++* COLLECT_NO_DEMANGLE: Environment. (line 29)
++* combining symbols, warnings on: Options. (line 1138)
++* command files: Scripts. (line 6)
++* command line: Options. (line 6)
++* common allocation: Options. (line 149)
++* common allocation in linker script: Miscellaneous Commands.
++ (line 20)
++* common symbol placement: Input Section Common.
++ (line 6)
++* compatibility, MRI: Options. (line 139)
++* constants in linker scripts: Constants. (line 6)
++* CONSTRUCTORS: Output Section Keywords.
++ (line 19)
++* constructors: Options. (line 488)
++* constructors, arranging in link: Output Section Keywords.
++ (line 19)
++* crash of linker: Bug Criteria. (line 9)
++* CREATE_OBJECT_SYMBOLS: Output Section Keywords.
++ (line 9)
++* creating a DEF file: WIN32. (line 137)
++* cross reference table: Options. (line 711)
++* cross references: Miscellaneous Commands.
++ (line 30)
++* current output location: Location Counter. (line 6)
++* data: Output Section Data.
++ (line 6)
++* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions.
++ (line 67)
++* DATA_SEGMENT_END(EXP): Builtin Functions. (line 88)
++* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 94)
++* dbx: Options. (line 1074)
++* DEF files, creating: Options. (line 1470)
++* default emulation: Environment. (line 21)
++* default input format: Environment. (line 9)
++* DEFINED(SYMBOL): Builtin Functions. (line 105)
++* deleting local symbols: Options. (line 513)
++* demangling, default: Environment. (line 29)
++* demangling, from command line: Options. (line 752)
++* direct linking to a dll: WIN32. (line 218)
++* discarding sections: Output Section Discarding.
++ (line 6)
++* discontinuous memory: MEMORY. (line 6)
++* DLLs, creating: Options. (line 1376)
++* DLLs, linking to: Options. (line 1501)
++* dot: Location Counter. (line 6)
++* dot inside sections: Location Counter. (line 34)
++* dot outside sections: Location Counter. (line 64)
++* dynamic linker, from command line: Options. (line 765)
++* dynamic symbol table: Options. (line 179)
++* ELF program headers: PHDRS. (line 6)
++* emulation: Options. (line 337)
++* emulation, default: Environment. (line 21)
++* END (MRI): MRI. (line 62)
++* endianness: Options. (line 198)
++* entry point: Entry Point. (line 6)
++* entry point, from command line: Options. (line 158)
++* entry point, thumb: ARM. (line 17)
++* ENTRY(SYMBOL): Entry Point. (line 6)
++* error on valid input: Bug Criteria. (line 12)
++* example of linker script: Simple Example. (line 6)
++* exporting DLL symbols: WIN32. (line 19)
++* expression evaluation order: Evaluation. (line 6)
++* expression sections: Expression Section. (line 6)
++* expression, absolute: Builtin Functions. (line 10)
++* expressions: Expressions. (line 6)
++* EXTERN: Miscellaneous Commands.
++ (line 13)
++* fatal signal: Bug Criteria. (line 9)
++* file name wildcard patterns: Input Section Wildcards.
++ (line 6)
++* FILEHDR: PHDRS. (line 61)
++* filename symbols: Output Section Keywords.
++ (line 9)
++* fill pattern, entire section: Output Section Fill.
++ (line 6)
++* FILL(EXPRESSION): Output Section Data.
++ (line 39)
++* finalization function: Options. (line 250)
++* first input file: File Commands. (line 79)
++* first instruction: Entry Point. (line 6)
++* FIX_V4BX: ARM. (line 44)
++* FORCE_COMMON_ALLOCATION: Miscellaneous Commands.
++ (line 20)
++* forcing input section alignment: Forced Input Alignment.
++ (line 6)
++* forcing output section alignment: Forced Output Alignment.
++ (line 6)
++* forcing the creation of dynamic sections: Options. (line 424)
++* FORMAT (MRI): MRI. (line 66)
++* functions in expressions: Builtin Functions. (line 6)
++* garbage collection <1>: Input Section Keep. (line 6)
++* garbage collection: Options. (line 784)
++* generating optimized output: Options. (line 410)
++* GNU linker: Overview. (line 6)
++* GNUTARGET: Environment. (line 9)
++* GROUP(FILES): File Commands. (line 44)
++* grouping input files: File Commands. (line 44)
++* groups of archives: Options. (line 609)
++* H8/300 support: H8/300. (line 6)
++* header size: Builtin Functions. (line 170)
++* heap size: Options. (line 1412)
++* help: Options. (line 792)
++* holes: Location Counter. (line 12)
++* holes, filling: Output Section Data.
++ (line 39)
++* HPPA multiple sub-space stubs: HPPA ELF32. (line 6)
++* HPPA stub grouping: HPPA ELF32. (line 12)
++* i960 support: i960. (line 6)
++* image base: Options. (line 1419)
++* implicit linker scripts: Implicit Linker Scripts.
++ (line 6)
++* import libraries: WIN32. (line 10)
++* INCLUDE FILENAME: File Commands. (line 9)
++* including a linker script: File Commands. (line 9)
++* including an entire archive: Options. (line 1248)
++* incremental link: Options. (line 276)
++* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands.
++ (line 25)
++* initialization function: Options. (line 279)
++* initialized data in ROM: Output Section LMA. (line 21)
++* input file format in linker script: Format Commands. (line 35)
++* input filename symbols: Output Section Keywords.
++ (line 9)
++* input files in linker scripts: File Commands. (line 16)
++* input files, displaying: Options. (line 467)
++* input format: Options. (line 115)
++* input object files in linker scripts: File Commands. (line 16)
++* input section alignment: Forced Input Alignment.
++ (line 6)
++* input section basics: Input Section Basics.
++ (line 6)
++* input section wildcards: Input Section Wildcards.
++ (line 6)
++* input sections: Input Section. (line 6)
++* INPUT(FILES): File Commands. (line 16)
++* integer notation: Constants. (line 6)
++* integer suffixes: Constants. (line 12)
++* internal object-file format: Canonical format. (line 11)
++* invalid input: Bug Criteria. (line 14)
++* K and M integer suffixes: Constants. (line 12)
++* KEEP: Input Section Keep. (line 6)
++* l =: MEMORY. (line 72)
++* L, deleting symbols beginning: Options. (line 517)
++* lazy evaluation: Evaluation. (line 6)
++* ld bugs, reporting: Bug Reporting. (line 6)
++* LDEMULATION: Environment. (line 21)
++* len =: MEMORY. (line 72)
++* LENGTH =: MEMORY. (line 72)
++* LENGTH(MEMORY): Builtin Functions. (line 122)
++* library search path in linker script: File Commands. (line 71)
++* link map: Options. (line 347)
++* link-time runtime library search path: Options. (line 967)
++* linker crash: Bug Criteria. (line 9)
++* linker script concepts: Basic Script Concepts.
++ (line 6)
++* linker script example: Simple Example. (line 6)
++* linker script file commands: File Commands. (line 6)
++* linker script format: Script Format. (line 6)
++* linker script input object files: File Commands. (line 16)
++* linker script simple commands: Simple Commands. (line 6)
++* linker scripts: Scripts. (line 6)
++* LIST (MRI): MRI. (line 77)
++* little-endian objects: Options. (line 201)
++* LOAD (MRI): MRI. (line 84)
++* load address: Output Section LMA. (line 6)
++* LOADADDR(SECTION): Builtin Functions. (line 125)
++* loading, preventing: Output Section Type.
++ (line 22)
++* local symbols, deleting: Options. (line 517)
++* location counter: Location Counter. (line 6)
++* LONG(EXPRESSION): Output Section Data.
++ (line 6)
++* M and K integer suffixes: Constants. (line 12)
++* machine architecture: Miscellaneous Commands.
++ (line 46)
++* machine dependencies: Machine Dependent. (line 6)
++* mapping input sections to output sections: Input Section. (line 6)
++* MAX: Builtin Functions. (line 130)
++* MEMORY: MEMORY. (line 6)
++* memory region attributes: MEMORY. (line 32)
++* memory regions: MEMORY. (line 6)
++* memory regions and sections: Output Section Region.
++ (line 6)
++* memory usage: Options. (line 804)
++* MIN: Builtin Functions. (line 133)
++* MRI compatibility: MRI. (line 6)
++* MSP430 extra sections: MSP430. (line 11)
++* NAME (MRI): MRI. (line 90)
++* name, section: Output Section Name.
++ (line 6)
++* names: Symbols. (line 6)
++* naming the output file: Options. (line 404)
++* NEXT(EXP): Builtin Functions. (line 137)
++* NMAGIC: Options. (line 384)
++* NOCROSSREFS(SECTIONS): Miscellaneous Commands.
++ (line 30)
++* NOLOAD: Output Section Type.
++ (line 22)
++* not enough room for program headers: Builtin Functions. (line 175)
++* o =: MEMORY. (line 67)
++* objdump -i: BFD. (line 6)
++* object file management: BFD. (line 6)
++* object files: Options. (line 29)
++* object formats available: BFD. (line 6)
++* object size: Options. (line 259)
++* OMAGIC: Options. (line 389)
++* opening object files: BFD outline. (line 6)
++* operators for arithmetic: Operators. (line 6)
++* options: Options. (line 6)
++* ORDER (MRI): MRI. (line 95)
++* org =: MEMORY. (line 67)
++* ORIGIN =: MEMORY. (line 67)
++* ORIGIN(MEMORY): Builtin Functions. (line 143)
++* orphan: Orphan Sections. (line 6)
++* output file after errors: Options. (line 870)
++* output file format in linker script: Format Commands. (line 10)
++* output file name in linker scripot: File Commands. (line 61)
++* output section alignment: Forced Output Alignment.
++ (line 6)
++* output section attributes: Output Section Attributes.
++ (line 6)
++* output section data: Output Section Data.
++ (line 6)
++* OUTPUT(FILENAME): File Commands. (line 61)
++* OUTPUT_ARCH(BFDARCH): Miscellaneous Commands.
++ (line 46)
++* OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10)
++* OVERLAY: Overlay Description.
++ (line 6)
++* overlays: Overlay Description.
++ (line 6)
++* partial link: Options. (line 428)
++* PHDRS: PHDRS. (line 6)
++* position independent executables: Options. (line 897)
++* PowerPC ELF32 options: PowerPC ELF32. (line 13)
++* PowerPC GOT: PowerPC ELF32. (line 23)
++* PowerPC long branches: PowerPC ELF32. (line 6)
++* PowerPC PLT: PowerPC ELF32. (line 13)
++* PowerPC stub symbols: PowerPC ELF32. (line 37)
++* PowerPC TLS optimization: PowerPC ELF32. (line 41)
++* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33)
++* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6)
++* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74)
++* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48)
++* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54)
++* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6)
++* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29)
++* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43)
++* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60)
++* precedence in expressions: Operators. (line 6)
++* prevent unnecessary loading: Output Section Type.
++ (line 22)
++* program headers: PHDRS. (line 6)
++* program headers and sections: Output Section Phdr.
++ (line 6)
++* program headers, not enough room: Builtin Functions. (line 175)
++* program segments: PHDRS. (line 6)
++* PROVIDE: PROVIDE. (line 6)
++* PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6)
++* PUBLIC (MRI): MRI. (line 103)
++* QUAD(EXPRESSION): Output Section Data.
++ (line 6)
++* quoted symbol names: Symbols. (line 6)
++* read-only text: Options. (line 384)
++* read/write from cmd line: Options. (line 389)
++* regions of memory: MEMORY. (line 6)
++* relative expressions: Expression Section. (line 6)
++* relaxing addressing modes: Options. (line 911)
++* relaxing on H8/300: H8/300. (line 9)
++* relaxing on i960: i960. (line 31)
++* relaxing on Xtensa: Xtensa. (line 27)
++* relocatable and absolute symbols: Expression Section. (line 6)
++* relocatable output: Options. (line 428)
++* removing sections: Output Section Discarding.
++ (line 6)
++* reporting bugs in ld: Reporting Bugs. (line 6)
++* requirements for BFD: BFD. (line 16)
++* retain relocations in final executable: Options. (line 415)
++* retaining specified symbols: Options. (line 931)
++* ROM initialized data: Output Section LMA. (line 21)
++* round up expression: Builtin Functions. (line 36)
++* round up location counter: Builtin Functions. (line 36)
++* runtime library name: Options. (line 267)
++* runtime library search path: Options. (line 945)
++* runtime pseudo-relocation: WIN32. (line 196)
++* scaled integers: Constants. (line 12)
++* scommon section: Input Section Common.
++ (line 20)
++* script files: Options. (line 471)
++* scripts: Scripts. (line 6)
++* search directory, from cmd line: Options. (line 315)
++* search path in linker script: File Commands. (line 71)
++* SEARCH_DIR(PATH): File Commands. (line 71)
++* SECT (MRI): MRI. (line 109)
++* section address: Output Section Address.
++ (line 6)
++* section address in expression: Builtin Functions. (line 17)
++* section alignment, warnings on: Options. (line 1229)
++* section data: Output Section Data.
++ (line 6)
++* section fill pattern: Output Section Fill.
++ (line 6)
++* section load address: Output Section LMA. (line 6)
++* section load address in expression: Builtin Functions. (line 125)
++* section name: Output Section Name.
++ (line 6)
++* section name wildcard patterns: Input Section Wildcards.
++ (line 6)
++* section size: Builtin Functions. (line 154)
++* section, assigning to memory region: Output Section Region.
++ (line 6)
++* section, assigning to program header: Output Section Phdr.
++ (line 6)
++* SECTIONS: SECTIONS. (line 6)
++* sections, discarding: Output Section Discarding.
++ (line 6)
++* segment origins, cmd line: Options. (line 1090)
++* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 146)
++* segments, ELF: PHDRS. (line 6)
++* shared libraries: Options. (line 1022)
++* SHORT(EXPRESSION): Output Section Data.
++ (line 6)
++* SIZEOF(SECTION): Builtin Functions. (line 154)
++* SIZEOF_HEADERS: Builtin Functions. (line 170)
++* small common symbols: Input Section Common.
++ (line 20)
++* SORT: Input Section Wildcards.
++ (line 58)
++* SORT_BY_ALIGNMENT: Input Section Wildcards.
++ (line 54)
++* SORT_BY_NAME: Input Section Wildcards.
++ (line 46)
++* SQUAD(EXPRESSION): Output Section Data.
++ (line 6)
++* stack size: Options. (line 1653)
++* standard Unix system: Options. (line 7)
++* start of execution: Entry Point. (line 6)
++* STARTUP(FILENAME): File Commands. (line 79)
++* strip all symbols: Options. (line 458)
++* strip debugger symbols: Options. (line 462)
++* stripping all but some symbols: Options. (line 931)
++* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment.
++ (line 6)
++* suffixes for integers: Constants. (line 12)
++* symbol defaults: Builtin Functions. (line 105)
++* symbol definition, scripts: Assignments. (line 6)
++* symbol names: Symbols. (line 6)
++* symbol tracing: Options. (line 522)
++* symbol versions: VERSION. (line 6)
++* symbol-only input: Options. (line 447)
++* symbols, from command line: Options. (line 739)
++* symbols, relocatable and absolute: Expression Section. (line 6)
++* symbols, retaining selectively: Options. (line 931)
++* synthesizing linker: Options. (line 911)
++* synthesizing on H8/300: H8/300. (line 14)
++* TARGET(BFDNAME): Format Commands. (line 35)
++* TARGET1: ARM. (line 27)
++* TARGET2: ARM. (line 32)
++* thumb entry point: ARM. (line 17)
++* TI COFF versions: TI COFF. (line 6)
++* traditional format: Options. (line 1069)
++* unallocated address, next: Builtin Functions. (line 137)
++* undefined symbol: Options. (line 480)
++* undefined symbol in linker script: Miscellaneous Commands.
++ (line 13)
++* undefined symbols, warnings on: Options. (line 1225)
++* uninitialized data placement: Input Section Common.
++ (line 6)
++* unspecified memory: Output Section Data.
++ (line 39)
++* usage: Options. (line 792)
++* USE_BLX: ARM. (line 57)
++* using a DEF file: WIN32. (line 42)
++* using auto-export functionality: WIN32. (line 22)
++* Using decorations: WIN32. (line 141)
++* variables, defining: Assignments. (line 6)
++* verbose: Options. (line 1125)
++* version: Options. (line 507)
++* version script: VERSION. (line 6)
++* version script, symbol versions: Options. (line 1131)
++* VERSION {script text}: VERSION. (line 6)
++* versions of symbols: VERSION. (line 6)
++* warnings, on combining symbols: Options. (line 1138)
++* warnings, on section alignment: Options. (line 1229)
++* warnings, on undefined symbols: Options. (line 1225)
++* weak externals: WIN32. (line 380)
++* what is this?: Overview. (line 6)
++* wildcard file name patterns: Input Section Wildcards.
++ (line 6)
++* Xtensa options: Xtensa. (line 56)
++* Xtensa processors: Xtensa. (line 6)
++
++
++
++Tag Table:
++Node: Top331
++Node: Overview1093
++Node: Invocation2207
++Node: Options2615
++Node: Environment77270
++Node: Scripts79030
++Node: Basic Script Concepts80764
++Node: Script Format83471
++Node: Simple Example84334
++Node: Simple Commands87430
++Node: Entry Point87881
++Node: File Commands88640
++Node: Format Commands92506
++Node: Miscellaneous Commands94472
++Node: Assignments96702
++Node: Simple Assignments97193
++Node: PROVIDE98929
++Node: PROVIDE_HIDDEN100134
++Node: Source Code Reference100378
++Node: SECTIONS103958
++Node: Output Section Description105849
++Node: Output Section Name106902
++Node: Output Section Address107778
++Node: Input Section109427
++Node: Input Section Basics110228
++Node: Input Section Wildcards112580
++Node: Input Section Common117313
++Node: Input Section Keep118795
++Node: Input Section Example119285
++Node: Output Section Data120253
++Node: Output Section Keywords123030
++Node: Output Section Discarding126599
++Node: Output Section Attributes127555
++Node: Output Section Type128559
++Node: Output Section LMA129713
++Node: Forced Output Alignment131984
++Node: Forced Input Alignment132252
++Node: Output Section Region132637
++Node: Output Section Phdr133067
++Node: Output Section Fill133731
++Node: Overlay Description134873
++Node: MEMORY139121
++Node: PHDRS143321
++Node: VERSION148360
++Node: Expressions156151
++Node: Constants157029
++Node: Symbols157590
++Node: Orphan Sections158328
++Node: Location Counter159091
++Node: Operators163395
++Node: Evaluation164317
++Node: Expression Section165681
++Node: Builtin Functions167170
++Node: Implicit Linker Scripts174662
++Node: Machine Dependent175437
++Node: H8/300176357
++Node: i960177982
++Node: ARM179667
++Node: AVR32182578
++Node: HPPA ELF32183526
++Node: MMIX185151
++Node: MSP430186368
++Node: PowerPC ELF32187416
++Node: PowerPC64 ELF64189707
++Node: TI COFF194121
++Node: WIN32194655
++Node: Xtensa212729
++Node: BFD215851
++Node: BFD outline217306
++Node: BFD information loss218592
++Node: Canonical format221109
++Node: Reporting Bugs225466
++Node: Bug Criteria226160
++Node: Bug Reporting226859
++Node: MRI233884
++Node: GNU Free Documentation License238527
++Node: Index258241
++
++End Tag Table
+diff -Nrup binutils-2.17/ld/ld.texinfo binutils-2.17.atmel.1.3.0/ld/ld.texinfo
+--- binutils-2.17/ld/ld.texinfo 2006-05-10 15:43:47.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/ld.texinfo 2007-09-28 10:30:45.000000000 +0200
+@@ -22,6 +22,7 @@
+ @set GENERIC
+ @set ARC
+ @set ARM
++@set AVR32
+ @set D10V
+ @set D30V
+ @set H8/300
+@@ -152,6 +153,9 @@ section entitled ``GNU Free Documentatio
+ @ifset ARM
+ * ARM:: ld and the ARM family
+ @end ifset
++@ifset AVR32
++* AVR32:: ld and AVR32 processors
++@end ifset
+ @ifset HPPA
+ * HPPA ELF32:: ld and HPPA 32-bit ELF
+ @end ifset
+@@ -5110,6 +5114,9 @@ functionality are not listed.
+ @ifset ARM
+ * ARM:: @command{ld} and the ARM family
+ @end ifset
++@ifset AVR32
++* AVR32:: @command{ld} and AVR32 processors
++@end ifset
+ @ifset HPPA
+ * HPPA ELF32:: @command{ld} and HPPA 32-bit ELF
+ @end ifset
+@@ -5402,6 +5409,41 @@ specify it if you are using that target.
+ @end ifclear
+ @end ifset
+
++@ifset AVR32
++@ifclear GENERIC
++@raisesections
++@end ifclear
++
++@node AVR32
++@section @command{ld} and AVR32 processors
++@cindex AVR32 options
++@table @option
++@kindex --direct-data
++@kindex --no-direct-data
++@item --direct-data
++@item --no-direct-data
++Taking the address of a symbol can often be done by using a direct
++@code{mov} or pc-relative @code{sub} instruction, which is faster than
++using a PC- or GOT-relative load, especially on the uC3
++processors. However, this does not always work when dealing with
++symbols in the @code{.data} section so this optimization is disabled
++by default.
++
++Specifying @option{--direct-data} will enable this optimization. Note
++that this may cause @samp{relocation truncated to fit} errors for
++certain large programs. If this happens, the optimization can be
++turned off by specifying @option{--no-direct-data}.
++
++All known issues with direct data optimizations are detected at link
++time, so if the linker doesn't complain, the result should run just
++fine.
++@end table
++
++@ifclear GENERIC
++@lowersections
++@end ifclear
++@end ifset
++
+ @ifset HPPA
+ @ifclear GENERIC
+ @raisesections
+diff -Nrup binutils-2.17/ld/Makefile.am binutils-2.17.atmel.1.3.0/ld/Makefile.am
+--- binutils-2.17/ld/Makefile.am 2006-06-03 06:45:50.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/Makefile.am 2007-09-28 10:30:45.000000000 +0200
+@@ -133,6 +133,20 @@ ALL_EMULATIONS = \
+ eavr3.o \
+ eavr4.o \
+ eavr5.o \
++ eavr32elf_ap7000.o \
++ eavr32elf_uc3a0128.o \
++ eavr32elf_uc3a0256.o \
++ eavr32elf_uc3a0512.o \
++ eavr32elf_uc3a1128.o \
++ eavr32elf_uc3a1256.o \
++ eavr32elf_uc3a1512.o \
++ eavr32elf_uc3b064.o \
++ eavr32elf_uc3b0128.o \
++ eavr32elf_uc3b0256.o \
++ eavr32elf_uc3b164.o \
++ eavr32elf_uc3b1128.o \
++ eavr32elf_uc3b1256.o \
++ eavr32linux.o \
+ ecoff_i860.o \
+ ecoff_sparc.o \
+ ecrisaout.o \
+@@ -595,6 +609,62 @@ eavr5.c: $(srcdir)/emulparams/avr5.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \
+ ${GEN_DEPENDS}
+ ${GENSCRIPTS} avr5 "$(tdir_avr2)"
++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf_ap7000.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)"
++eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf_uc3a0128.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)"
++eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf_uc3a0256.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)"
++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf_uc3a0512.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)"
++eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf_uc3a1128.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)"
++eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf_uc3a1256.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)"
++eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf_uc3a1512.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)"
++eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf_uc3b064.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)"
++eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf_uc3b0128.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)"
++eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf_uc3b0256.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)"
++eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf_uc3b164.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)"
++eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf_uc3b1128.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)"
++eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf_uc3b1256.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)"
++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
++ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
+ ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
+@@ -1800,7 +1870,9 @@ install-exec-local: ld-new$(EXEEXT)
+ || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
+ fi
+
+-install-data-local:
++# We want install to imply install-info as per GNU standards, despite the
++# cygnus option.
++install-data-local: install-info
+ $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
+ for f in ldscripts/*; do \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
+diff -Nrup binutils-2.17/ld/Makefile.in binutils-2.17.atmel.1.3.0/ld/Makefile.in
+--- binutils-2.17/ld/Makefile.in 2006-06-03 06:45:50.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/ld/Makefile.in 2007-03-26 10:32:23.000000000 +0200
+@@ -145,6 +145,7 @@ EMUL_EXTRA_OFILES = @EMUL_EXTRA_OFILES@
+ EXEEXT = @EXEEXT@
+ GMOFILES = @GMOFILES@
+ GMSGFMT = @GMSGFMT@
++GREP = @GREP@
+ GT_NO = @GT_NO@
+ GT_YES = @GT_YES@
+ HDEFINES = @HDEFINES@
+@@ -213,9 +214,8 @@ VERSION = @VERSION@
+ WARN_CFLAGS = @WARN_CFLAGS@
+ XGETTEXT = @XGETTEXT@
+ YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi`
++YFLAGS = -d
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_RANLIB = @ac_ct_RANLIB@
+-ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__include = @am__include@
+@@ -232,6 +232,7 @@ build_vendor = @build_vendor@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+@@ -245,12 +246,15 @@ install_sh = @install_sh@
+ l = @l@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
++psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -263,7 +267,6 @@ use_sysroot = @use_sysroot@
+ AUTOMAKE_OPTIONS = cygnus dejagnu
+ SUBDIRS = po
+ tooldir = $(exec_prefix)/$(target_alias)
+-YFLAGS = -d
+ AM_CFLAGS = $(WARN_CFLAGS)
+
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+@@ -357,6 +360,9 @@ ALL_EMULATIONS = \
+ eavr3.o \
+ eavr4.o \
+ eavr5.o \
++ eavr32elf_ap7000.o \
++ eavr32elf_uc3a0512.o \
++ eavr32linux.o \
+ ecoff_i860.o \
+ ecoff_sparc.o \
+ ecrisaout.o \
+@@ -878,10 +884,13 @@ dist-info: $(INFO_DEPS)
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+- for file in $$d/$$base*; do \
+- relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+- test -f $(distdir)/$$relfile || \
+- cp -p $$file $(distdir)/$$relfile; \
++ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
++ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
++ if test -f $$file; then \
++ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
++ test -f $(distdir)/$$relfile || \
++ cp -p $$file $(distdir)/$$relfile; \
++ else :; fi; \
+ done; \
+ done
+
+@@ -1406,6 +1415,15 @@ eavr5.c: $(srcdir)/emulparams/avr5.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \
+ ${GEN_DEPENDS}
+ ${GENSCRIPTS} avr5 "$(tdir_avr2)"
++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf_ap7000.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)"
++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf_uc3a0512.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)"
++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
++ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
++ ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
+ ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
+@@ -2587,7 +2605,9 @@ install-exec-local: ld-new$(EXEEXT)
+ || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
+ fi
+
+-install-data-local:
++# We want install to imply install-info as per GNU standards, despite the
++# cygnus option.
++install-data-local: install-info
+ $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
+ for f in ldscripts/*; do \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
+diff -Nrup binutils-2.17/ld/scripttempl/elf_xip.sc binutils-2.17.atmel.1.3.0/ld/scripttempl/elf_xip.sc
+--- binutils-2.17/ld/scripttempl/elf_xip.sc 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/scripttempl/elf_xip.sc 2007-03-26 10:19:40.000000000 +0200
+@@ -0,0 +1,456 @@
++#
++# Unusual variables checked by this code:
++# NOP - four byte opcode for no-op (defaults to 0)
++# NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
++# empty.
++# SMALL_DATA_CTOR - .ctors contains small data.
++# SMALL_DATA_DTOR - .dtors contains small data.
++# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
++# INITIAL_READONLY_SECTIONS - at start of text segment
++# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
++# (e.g., .PARISC.milli)
++# OTHER_TEXT_SECTIONS - these get put in .text when relocating
++# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
++# (e.g., .PARISC.global)
++# OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
++# (e.g. PPC32 .fixup, .got[12])
++# OTHER_BSS_SECTIONS - other than .bss .sbss ...
++# OTHER_SECTIONS - at the end
++# EXECUTABLE_SYMBOLS - symbols that must be defined for an
++# executable (e.g., _DYNAMIC_LINK)
++# TEXT_START_ADDR - the first byte of the text segment, after any
++# headers.
++# TEXT_BASE_ADDRESS - the first byte of the text segment.
++# TEXT_START_SYMBOLS - symbols that appear at the start of the
++# .text section.
++# DATA_START_SYMBOLS - symbols that appear at the start of the
++# .data section.
++# OTHER_GOT_SYMBOLS - symbols defined just before .got.
++# OTHER_GOT_SECTIONS - sections just after .got.
++# OTHER_SDATA_SECTIONS - sections just after .sdata.
++# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
++# .bss section besides __bss_start.
++# DATA_PLT - .plt should be in data segment, not text segment.
++# PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
++# BSS_PLT - .plt should be in bss segment
++# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
++# EMBEDDED - whether this is for an embedded system.
++# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
++# start address of shared library.
++# INPUT_FILES - INPUT command of files to always include
++# WRITABLE_RODATA - if set, the .rodata section should be writable
++# INIT_START, INIT_END - statements just before and just after
++# combination of .init sections.
++# FINI_START, FINI_END - statements just before and just after
++# combination of .fini sections.
++# STACK_ADDR - start of a .stack section.
++# OTHER_END_SYMBOLS - symbols to place right at the end of the script.
++# SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
++# so that .got can be in the RELRO area. It should be set to
++# the number of bytes in the beginning of .got.plt which can be
++# in the RELRO area as well.
++#
++# When adding sections, do note that the names of some sections are used
++# when specifying the start address of the next.
++#
++
++# Many sections come in three flavours. There is the 'real' section,
++# like ".data". Then there are the per-procedure or per-variable
++# sections, generated by -ffunction-sections and -fdata-sections in GCC,
++# and useful for --gc-sections, which for a variable "foo" might be
++# ".data.foo". Then there are the linkonce sections, for which the linker
++# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
++# The exact correspondences are:
++#
++# Section Linkonce section
++# .text .gnu.linkonce.t.foo
++# .rodata .gnu.linkonce.r.foo
++# .data .gnu.linkonce.d.foo
++# .bss .gnu.linkonce.b.foo
++# .sdata .gnu.linkonce.s.foo
++# .sbss .gnu.linkonce.sb.foo
++# .sdata2 .gnu.linkonce.s2.foo
++# .sbss2 .gnu.linkonce.sb2.foo
++# .debug_info .gnu.linkonce.wi.foo
++# .tdata .gnu.linkonce.td.foo
++# .tbss .gnu.linkonce.tb.foo
++#
++# Each of these can also have corresponding .rel.* and .rela.* sections.
++
++test -z "$ENTRY" && ENTRY=_start
++test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
++test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
++if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
++test -z "${ELFSIZE}" && ELFSIZE=32
++test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
++test "$LD_FLAG" = "N" && DATA_ADDR=.
++test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
++test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
++test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
++if test -n "$RELOCATING"; then
++ RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
++ RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
++else
++ RO_REGION=""
++ RW_REGION=""
++fi
++INTERP=".interp ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
++PLT=".plt ${RELOCATING-0} : { *(.plt) }"
++if test -z "$GOT"; then
++ if test -z "$SEPARATE_GOTPLT"; then
++ GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }"
++ else
++ GOT=".got ${RELOCATING-0} : { *(.got) }"
++ GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
++ .got.plt ${RELOCATING-0} : { *(.got.plt) }"
++ fi
++fi
++DALIGN=".dalign : { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
++BALIGN=".balign : { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
++DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
++RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
++DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
++STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
++if test -z "${NO_SMALL_DATA}"; then
++ SBSS=".sbss ${RELOCATING-0} :
++ {
++ ${RELOCATING+PROVIDE (__sbss_start = .);}
++ ${RELOCATING+PROVIDE (___sbss_start = .);}
++ ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
++ *(.dynsbss)
++ *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
++ *(.scommon)
++ ${RELOCATING+PROVIDE (__sbss_end = .);}
++ ${RELOCATING+PROVIDE (___sbss_end = .);}
++ }${RW_REGION}"
++ SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
++ SDATA="/* We want the small data sections together, so single-instruction offsets
++ can access them all, and initialized data all before uninitialized, so
++ we can shorten the on-disk segment size. */
++ .sdata ${RELOCATING-0} :
++ {
++ ${RELOCATING+${SDATA_START_SYMBOLS}}
++ ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
++ *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
++ }${RW_REGION}"
++ SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
++ REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
++ .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
++ REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
++ .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
++ REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
++ .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
++ REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
++ .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
++else
++ NO_SMALL_DATA=" "
++fi
++test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
++CTOR=".ctors ${CONSTRUCTING-0} :
++ {
++ ${CONSTRUCTING+${CTOR_START}}
++ /* gcc uses crtbegin.o to find the start of
++ the constructors, so we make sure it is
++ first. Because this is a wildcard, it
++ doesn't matter if the user does not
++ actually link against crtbegin.o; the
++ linker won't look for a file to match a
++ wildcard. The wildcard also means that it
++ doesn't matter which directory crtbegin.o
++ is in. */
++
++ KEEP (*crtbegin*.o(.ctors))
++
++ /* We don't want to include the .ctor section from
++ from the crtend.o file until after the sorted ctors.
++ The .ctor section from the crtend file contains the
++ end of ctors marker and it must be last */
++
++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
++ KEEP (*(SORT(.ctors.*)))
++ KEEP (*(.ctors))
++ ${CONSTRUCTING+${CTOR_END}}
++ }"
++DTOR=".dtors ${CONSTRUCTING-0} :
++ {
++ ${CONSTRUCTING+${DTOR_START}}
++ KEEP (*crtbegin*.o(.dtors))
++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
++ KEEP (*(SORT(.dtors.*)))
++ KEEP (*(.dtors))
++ ${CONSTRUCTING+${DTOR_END}}
++ }"
++STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
++ {
++ ${RELOCATING+_stack = .;}
++ *(.stack)
++ ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
++ ${RELOCATING+_estack = .;}
++ }${RW_REGION}"
++
++# if this is for an embedded system, don't add SIZEOF_HEADERS.
++if [ -z "$EMBEDDED" ]; then
++ test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
++else
++ test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
++fi
++
++cat <<EOF
++OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
++ "${LITTLE_OUTPUT_FORMAT}")
++OUTPUT_ARCH(${OUTPUT_ARCH})
++ENTRY(${ENTRY})
++
++${RELOCATING+${LIB_SEARCH_DIRS}}
++${RELOCATING+/* Do we need any of these for elf?
++ __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
++${RELOCATING+${EXECUTABLE_SYMBOLS}}
++${RELOCATING+${INPUT_FILES}}
++${RELOCATING- /* For some reason, the Solaris linker makes bad executables
++ if gld -r is used and the intermediate file has sections starting
++ at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
++ bug. But for now assigning the zero vmas works. */}
++
++${RELOCATING+${MEMORY}}
++
++SECTIONS
++{
++ /* Read-only sections, merged into text segment: */
++ ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
++ ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
++ ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
++ ${CREATE_SHLIB-${INTERP}}
++ ${INITIAL_READONLY_SECTIONS}
++ ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
++ .hash ${RELOCATING-0} : { *(.hash) }${RO_REGION}
++ .dynsym ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
++ .dynstr ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
++ .gnu.version ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
++ .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
++ .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
++
++EOF
++if [ "x$COMBRELOC" = x ]; then
++ COMBRELOCCAT=cat
++else
++ COMBRELOCCAT="cat > $COMBRELOC"
++fi
++eval $COMBRELOCCAT <<EOF
++ .rel.init ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
++ .rela.init ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
++ .rel.text ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
++ .rela.text ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
++ .rel.fini ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
++ .rela.fini ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
++ .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
++ .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
++ ${OTHER_READONLY_RELOC_SECTIONS}
++ .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
++ .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
++ .rel.data ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
++ .rela.data ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
++ .rel.tdata ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
++ .rela.tdata ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
++ .rel.tbss ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
++ .rela.tbss ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
++ .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
++ .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
++ .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
++ .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
++ .rel.got ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
++ .rela.got ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
++ ${OTHER_GOT_RELOC_SECTIONS}
++ ${REL_SDATA}
++ ${REL_SBSS}
++ ${REL_SDATA2}
++ ${REL_SBSS2}
++ .rel.bss ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
++ .rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
++EOF
++if [ -n "$COMBRELOC" ]; then
++cat <<EOF
++ .rel.dyn ${RELOCATING-0} :
++ {
++EOF
++sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
++cat <<EOF
++ }${RO_REGION}
++ .rela.dyn ${RELOCATING-0} :
++ {
++EOF
++sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
++cat <<EOF
++ }${RO_REGION}
++EOF
++fi
++cat <<EOF
++ .rel.plt ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
++ .rela.plt ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
++ ${OTHER_PLT_RELOC_SECTIONS}
++
++ .init ${RELOCATING-0} :
++ {
++ ${RELOCATING+${INIT_START}}
++ KEEP (*(.init))
++ ${RELOCATING+${INIT_END}}
++ }${RO_REGION} =${NOP-0}
++
++ ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
++ .text ${RELOCATING-0} :
++ {
++ ${RELOCATING+${TEXT_START_SYMBOLS}}
++ *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
++ KEEP (*(.text.*personality*))
++ /* .gnu.warning sections are handled specially by elf32.em. */
++ *(.gnu.warning)
++ ${RELOCATING+${OTHER_TEXT_SECTIONS}}
++ }${RO_REGION} =${NOP-0}
++ .fini ${RELOCATING-0} :
++ {
++ ${RELOCATING+${FINI_START}}
++ KEEP (*(.fini))
++ ${RELOCATING+${FINI_END}}
++ }${RO_REGION} =${NOP-0}
++ ${RELOCATING+PROVIDE (__etext = .);}
++ ${RELOCATING+PROVIDE (_etext = .);}
++ ${RELOCATING+PROVIDE (etext = .);}
++ ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
++ .rodata1 ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
++ ${CREATE_SHLIB-${SDATA2}}
++ ${CREATE_SHLIB-${SBSS2}}
++ ${OTHER_READONLY_SECTIONS}
++ .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
++ .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
++ .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
++
++ ${RELOCATING+${DALIGN}}
++ ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
++ . = ORIGIN(${RW_VMA_REGION});
++ /* Exception handling */
++ .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
++ .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
++
++ /* Thread Local Storage sections */
++ .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
++ .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
++
++ /* Ensure the __preinit_array_start label is properly aligned. We
++ could instead move the label definition inside the section, but
++ the linker would then create the section even if it turns out to
++ be empty, which isn't pretty. */
++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
++ .preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
++
++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
++ .init_array ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
++
++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
++ .fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
++
++ ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
++ ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
++ .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
++
++ ${RELOCATING+${DATARELRO}}
++ ${OTHER_RELRO_SECTIONS}
++ ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
++ ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
++ ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
++ ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
++ ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
++ ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
++
++ ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
++
++ .data ${RELOCATING-0} :
++ {
++ ${RELOCATING+${DATA_START_SYMBOLS}}
++ *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
++ KEEP (*(.gnu.linkonce.d.*personality*))
++ ${CONSTRUCTING+SORT(CONSTRUCTORS)}
++ }${RW_REGION}
++ .data1 ${RELOCATING-0} : { *(.data1) }${RW_REGION}
++ ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
++ ${OTHER_READWRITE_SECTIONS}
++ ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
++ ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
++ ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
++ ${RELOCATING+${OTHER_GOT_SYMBOLS}}
++ ${NO_SMALL_DATA-${GOT}${RW_REGION}}
++ ${OTHER_GOT_SECTIONS}
++ ${SDATA}
++ ${OTHER_SDATA_SECTIONS}
++ ${RELOCATING+${BALIGN}}
++ ${RELOCATING+_edata = .;}
++ ${RELOCATING+PROVIDE (edata = .);}
++ ${RELOCATING+__bss_start = .;}
++ ${RELOCATING+${OTHER_BSS_SYMBOLS}}
++ ${SBSS}
++ ${BSS_PLT+${PLT}${RW_REGION}}
++ .bss ${RELOCATING-0} :
++ {
++ *(.dynbss)
++ *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
++ *(COMMON)
++ /* Align here to ensure that the .bss section occupies space up to
++ _end. Align after .bss to ensure correct alignment even if the
++ .bss section disappears because there are no input sections. */
++ ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
++ }${RW_REGION}
++ ${OTHER_BSS_SECTIONS}
++ ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
++ ${RELOCATING+_end = .;}
++ ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
++ ${RELOCATING+PROVIDE (end = .);}
++ ${RELOCATING+${DATA_SEGMENT_END}}
++
++ /* Stabs debugging sections. */
++ .stab 0 : { *(.stab) }
++ .stabstr 0 : { *(.stabstr) }
++ .stab.excl 0 : { *(.stab.excl) }
++ .stab.exclstr 0 : { *(.stab.exclstr) }
++ .stab.index 0 : { *(.stab.index) }
++ .stab.indexstr 0 : { *(.stab.indexstr) }
++
++ .comment 0 : { *(.comment) }
++
++ /* DWARF debug sections.
++ Symbols in the DWARF debugging sections are relative to the beginning
++ of the section so we begin them at 0. */
++
++ /* DWARF 1 */
++ .debug 0 : { *(.debug) }
++ .line 0 : { *(.line) }
++
++ /* GNU DWARF 1 extensions */
++ .debug_srcinfo 0 : { *(.debug_srcinfo) }
++ .debug_sfnames 0 : { *(.debug_sfnames) }
++
++ /* DWARF 1.1 and DWARF 2 */
++ .debug_aranges 0 : { *(.debug_aranges) }
++ .debug_pubnames 0 : { *(.debug_pubnames) }
++
++ /* DWARF 2 */
++ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
++ .debug_abbrev 0 : { *(.debug_abbrev) }
++ .debug_line 0 : { *(.debug_line) }
++ .debug_frame 0 : { *(.debug_frame) }
++ .debug_str 0 : { *(.debug_str) }
++ .debug_loc 0 : { *(.debug_loc) }
++ .debug_macinfo 0 : { *(.debug_macinfo) }
++
++ /* SGI/MIPS DWARF 2 extensions */
++ .debug_weaknames 0 : { *(.debug_weaknames) }
++ .debug_funcnames 0 : { *(.debug_funcnames) }
++ .debug_typenames 0 : { *(.debug_typenames) }
++ .debug_varnames 0 : { *(.debug_varnames) }
++
++ ${STACK_ADDR+${STACK}}
++ ${OTHER_SECTIONS}
++ ${RELOCATING+${OTHER_END_SYMBOLS}}
++ ${RELOCATING+${STACKNOTE}}
++}
++EOF
+diff -Nrup binutils-2.17/ld/testsuite/ld-auto-import/client.c binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/client.c
+--- binutils-2.17/ld/testsuite/ld-auto-import/client.c 2002-12-18 17:05:10.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/client.c 2007-03-26 10:19:37.000000000 +0200
+@@ -1,55 +1,55 @@
+-#include <stdio.h>
+-
+-extern int var;
+-extern void (*func_ptr)(void);
+-extern void print_var (void);
+-extern void print_foo (void);
+-extern int foo;
+-extern int var2[2];
+-
+-typedef struct
+-{
+- int * var;
+- void (* func_ptr)(void);
+-}
+-TEST;
+-
+-TEST xyz = { &var, print_var };
+-
+-int
+-main (void)
+-{
+- print_var ();
+-
+- printf ("We see var = %d\n", var);
+- printf ("Setting var = 456\n");
+-
+- var = 456;
+-
+- print_var ();
+- printf ("We see var = %d\n\n", var);
+-
+- var = 90;
+- print_var ();
+- printf ("We see var = %d\n\n", var);
+-
+- print_foo ();
+- printf ("We see foo = %d\n", foo);
+- printf ("Setting foo = 19\n");
+- foo = 19;
+- print_foo ();
+- printf ("We see foo = %d\n\n", foo);
+- fflush (stdout);
+-
+- printf ("Calling dllimported function pointer\n");
+- func_ptr ();
+-
+- printf ("Calling functions using global structure\n");
+- xyz.func_ptr ();
+- * xyz.var = 40;
+- xyz.func_ptr ();
+-
+- printf ("We see var2[0] = %d\n\n", var2[0]);
+-
+- return 0;
+-}
++#include <stdio.h>
++
++extern int var;
++extern void (*func_ptr)(void);
++extern void print_var (void);
++extern void print_foo (void);
++extern int foo;
++extern int var2[2];
++
++typedef struct
++{
++ int * var;
++ void (* func_ptr)(void);
++}
++TEST;
++
++TEST xyz = { &var, print_var };
++
++int
++main (void)
++{
++ print_var ();
++
++ printf ("We see var = %d\n", var);
++ printf ("Setting var = 456\n");
++
++ var = 456;
++
++ print_var ();
++ printf ("We see var = %d\n\n", var);
++
++ var = 90;
++ print_var ();
++ printf ("We see var = %d\n\n", var);
++
++ print_foo ();
++ printf ("We see foo = %d\n", foo);
++ printf ("Setting foo = 19\n");
++ foo = 19;
++ print_foo ();
++ printf ("We see foo = %d\n\n", foo);
++ fflush (stdout);
++
++ printf ("Calling dllimported function pointer\n");
++ func_ptr ();
++
++ printf ("Calling functions using global structure\n");
++ xyz.func_ptr ();
++ * xyz.var = 40;
++ xyz.func_ptr ();
++
++ printf ("We see var2[0] = %d\n\n", var2[0]);
++
++ return 0;
++}
+diff -Nrup binutils-2.17/ld/testsuite/ld-auto-import/dll.c binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/dll.c
+--- binutils-2.17/ld/testsuite/ld-auto-import/dll.c 2002-12-18 17:05:10.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/dll.c 2007-03-26 10:19:37.000000000 +0200
+@@ -1,20 +1,20 @@
+-int var = 123;
+-int foo = 121;
+-
+-int var2[2]= { 123, 456 };
+-
+-#include <stdio.h>
+-
+-void
+-print_var (void)
+-{
+- printf ("DLL sees var = %d\n", var);
+-}
+-
+-void
+-print_foo (void)
+-{
+- printf ("DLL sees foo = %d\n", foo);
+-}
+-
+-void (* func_ptr)(void) = print_foo;
++int var = 123;
++int foo = 121;
++
++int var2[2]= { 123, 456 };
++
++#include <stdio.h>
++
++void
++print_var (void)
++{
++ printf ("DLL sees var = %d\n", var);
++}
++
++void
++print_foo (void)
++{
++ printf ("DLL sees foo = %d\n", foo);
++}
++
++void (* func_ptr)(void) = print_foo;
+diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/avr32.exp binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/avr32.exp
+--- binutils-2.17/ld/testsuite/ld-avr32/avr32.exp 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/avr32.exp 2007-03-26 10:19:30.000000000 +0200
+@@ -0,0 +1,25 @@
++# Expect script for AVR32 ELF linker tests.
++# Copyright 2004-2006 Atmel Corporation.
++#
++# This file 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.
++#
++# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
++#
++
++if ![istarget avr32-*-*] {
++ return
++}
++
++run_dump_test "pcrel"
+diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/pcrel.d binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.d
+--- binutils-2.17/ld/testsuite/ld-avr32/pcrel.d 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.d 2007-03-26 10:19:30.000000000 +0200
+@@ -0,0 +1,74 @@
++#name: AVR32 ELF PC-relative external relocs
++#source: symbols.s
++#source: ../../../gas/testsuite/gas/avr32/pcrel.s
++#ld: -T $srcdir/$subdir/pcrel.ld
++#objdump: -d
++
++.*: file format elf.*avr32.*
++
++Disassembly of section .text:
++
++a0000000 <_start>:
++a0000000: d7 03 nop
++a0000002: d7 03 nop
++
++a0000004 <test_rjmp>:
++a0000004: d7 03 nop
++a0000006: c0 28 rjmp a000000a <test_rjmp\+0x6>
++a0000008: d7 03 nop
++a000000a: e0 8f 01 fb bral a0000400 <extsym10>
++
++a000000e <test_rcall>:
++a000000e: d7 03 nop
++a0000010 <test_rcall2>:
++a0000010: c0 2c rcall a0000014 <test_rcall2\+0x4>
++a0000012: d7 03 nop
++a0000014: ee b0 ff f6 rcall a0200000 <extsym21>
++
++a0000018 <test_branch>:
++a0000018: c0 31 brne a000001e <test_branch\+0x6>
++a000001a: fe 9f ff ff bral a0000018 <test_branch>
++a000001e: ee 90 ff f1 breq a0200000 <extsym21>
++
++a0000022 <test_lddpc>:
++a0000022: 48 30 lddpc r0,a000002c <sym1>
++a0000024: 48 20 lddpc r0,a000002c <sym1>
++a0000026: fe f0 7f da ld.w r0,pc\[32730\]
++ ...
++
++a000002c <sym1>:
++a000002c: d7 03 nop
++a000002e: d7 03 nop
++
++a0000030 <test_local>:
++a0000030: 48 20 lddpc r0,a0000038 <test_local\+0x8>
++a0000032: 48 30 lddpc r0,a000003c <test_local\+0xc>
++a0000034: 48 20 lddpc r0,a000003c <test_local\+0xc>
++a0000036: 00 00 add r0,r0
++a0000038: d7 03 nop
++a000003a: d7 03 nop
++a000003c: d7 03 nop
++a000003e: d7 03 nop
++
++Disassembly of section \.text\.init:
++a0000040 <test_inter_section>:
++a0000040: fe b0 ff e7 rcall a000000e <test_rcall>
++a0000044: d7 03 nop
++a0000046: fe b0 ff e4 rcall a000000e <test_rcall>
++a000004a: fe b0 ff e3 rcall a0000010 <test_rcall2>
++a000004e: d7 03 nop
++a0000050: fe b0 ff e0 rcall a0000010 <test_rcall2>
++
++Disassembly of section \.text\.pcrel10:
++
++a0000400 <extsym10>:
++a0000400: d7 03 nop
++
++Disassembly of section \.text\.pcrel16:
++
++a0008000 <extsym16>:
++a0008000: d7 03 nop
++
++Disassembly of section \.text\.pcrel21:
++a0200000 <extsym21>:
++a0200000: d7 03 nop
+diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/pcrel.ld binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.ld
+--- binutils-2.17/ld/testsuite/ld-avr32/pcrel.ld 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.ld 2007-03-26 10:19:30.000000000 +0200
+@@ -0,0 +1,23 @@
++ENTRY(_start)
++SECTIONS
++{
++ .text 0xa0000000:
++ {
++ *(.text)
++ }
++
++ .text.pcrel10 0xa0000400:
++ {
++ *(.text.pcrel10)
++ }
++
++ .text.pcrel16 0xa0008000:
++ {
++ *(.text.pcrel16)
++ }
++
++ .text.pcrel21 0xa0200000:
++ {
++ *(.text.pcrel21)
++ }
++}
+diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/symbols.s binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/symbols.s
+--- binutils-2.17/ld/testsuite/ld-avr32/symbols.s 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/symbols.s 2007-03-26 10:19:30.000000000 +0200
+@@ -0,0 +1,20 @@
++ .text
++ .global _start
++_start:
++ nop
++ nop
++
++ .section .text.pcrel10,"ax"
++ .global extsym10
++extsym10:
++ nop
++
++ .section .text.pcrel16,"ax"
++ .global extsym16
++extsym16:
++ nop
++
++ .section .text.pcrel21,"ax"
++ .global extsym21
++extsym21:
++ nop
+diff -Nrup binutils-2.17/opcodes/aclocal.m4 binutils-2.17.atmel.1.3.0/opcodes/aclocal.m4
+--- binutils-2.17/opcodes/aclocal.m4 2005-09-30 20:05:59.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/opcodes/aclocal.m4 2007-03-26 10:31:34.000000000 +0200
+@@ -1,4 +1,4 @@
+-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
++# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ # 2005 Free Software Foundation, Inc.
+@@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+- [AM_AUTOMAKE_VERSION([1.9.5])])
++ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+ # AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+diff -Nrup binutils-2.17/opcodes/avr32-asm.c binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.c
+--- binutils-2.17/opcodes/avr32-asm.c 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.c 2007-03-26 10:20:34.000000000 +0200
+@@ -0,0 +1,264 @@
++/* Assembler interface for AVR32.
++ Copyright 2005, 2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of libopcodes.
++
++ 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. */
++
++#include <string.h>
++
++#include "avr32-opc.h"
++#include "avr32-asm.h"
++
++/* Structure for a register hash table entry. */
++struct reg_entry
++{
++ const char *name;
++ int number;
++};
++
++/* Integer Registers. */
++static const struct reg_entry reg_table[] =
++ {
++ /* Primary names (used by the disassembler) */
++ { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
++ { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
++ { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
++ { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
++ /* Alternatives to sp, lr and pc. */
++ { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
++ };
++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
++
++/* Coprocessor Registers. */
++static const struct reg_entry cr_table[] =
++ {
++ { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
++ { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
++ { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
++ { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
++ };
++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
++
++/* Floating-point Registers. */
++static const struct reg_entry fr_table[] =
++ {
++ { "fr0", 0 }, { "fr1", 1 }, { "fr2", 2 }, { "fr3", 3 },
++ { "fr4", 4 }, { "fr5", 5 }, { "fr6", 6 }, { "fr7", 7 },
++ { "fr8", 8 }, { "fr9", 9 }, { "fr10", 10 }, { "fr11", 11 },
++ { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
++ };
++#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
++
++/* PiCo Registers. */
++static const struct reg_entry pico_table[] =
++ {
++ { "inpix2", 0 }, { "inpix1", 1 }, { "inpix0", 2 },
++ { "outpix2", 3 }, { "outpix1", 4 }, { "outpix0", 5 },
++ { "coeff0_a", 6 }, { "coeff0_b", 7 }, { "coeff1_a", 8 },
++ { "coeff1_b", 9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
++ { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
++ { "config", 15 },
++ };
++#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
++
++int
++avr32_parse_intreg(const char *str)
++{
++ unsigned int i;
++
++ for (i = 0; i < AVR32_NR_INTREGS; i++)
++ {
++ if (strcasecmp(reg_table[i].name, str) == 0)
++ return reg_table[i].number;
++ }
++
++ return -1;
++}
++
++int
++avr32_parse_cpreg(const char *str)
++{
++ unsigned int i;
++
++ for (i = 0; i < AVR32_NR_CPREGS; i++)
++ {
++ if (strcasecmp(cr_table[i].name, str) == 0)
++ return cr_table[i].number;
++ }
++
++ return -1;
++}
++
++int avr32_parse_fpreg(const char *str)
++{
++ unsigned int i;
++
++ for (i = 0; i < AVR32_NR_FPREGS; i++)
++ {
++ if (strcasecmp(fr_table[i].name, str) == 0)
++ return fr_table[i].number;
++ }
++
++ return -1;
++}
++
++int avr32_parse_picoreg(const char *str)
++{
++ unsigned int i;
++
++ for (i = 0; i < AVR32_NR_PICOREGS; i++)
++ {
++ if (strcasecmp(pico_table[i].name, str) == 0)
++ return pico_table[i].number;
++ }
++
++ return -1;
++}
++
++static unsigned long
++parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
++{
++ int reg_from, reg_to;
++ unsigned long result = 0;
++ char *p1, *p2, c;
++
++ while (*str)
++ {
++ for (p1 = str; *p1; p1++)
++ if (*p1 == ',' || *p1 == '-')
++ break;
++
++ c = *p1, *p1 = 0;
++ reg_from = parse_reg(str);
++ *p1 = c;
++
++ if (reg_from < 0)
++ break;
++
++ if (*p1 == '-')
++ {
++ for (p2 = ++p1; *p2; p2++)
++ if (*p2 == ',')
++ break;
++
++ c = *p2, *p2 = 0;
++ /* printf("going to parse reg_to from `%s'\n", p1); */
++ reg_to = parse_reg(p1);
++ *p2 = c;
++
++ if (reg_to < 0)
++ break;
++
++ while (reg_from <= reg_to)
++ result |= (1 << reg_from++);
++ p1 = p2;
++ }
++ else
++ result |= (1 << reg_from);
++
++ str = p1;
++ if (*str) ++str;
++ }
++
++ if (endptr)
++ *endptr = str;
++
++ return result;
++}
++
++unsigned long
++avr32_parse_reglist(char *str, char **endptr)
++{
++ return parse_reglist(str, endptr, avr32_parse_intreg);
++}
++
++unsigned long
++avr32_parse_cpreglist(char *str, char **endptr)
++{
++ return parse_reglist(str, endptr, avr32_parse_cpreg);
++}
++
++unsigned long
++avr32_parse_pico_reglist(char *str, char **endptr)
++{
++ return parse_reglist(str, endptr, avr32_parse_picoreg);
++}
++
++int
++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
++{
++ unsigned long result = 0;
++
++ /* printf("convert regmask16 0x%04lx\n", regmask16); */
++
++ if (regmask16 & 0xf)
++ {
++ if ((regmask16 & 0xf) == 0xf)
++ result |= 1 << 0;
++ else
++ return -1;
++ }
++ if (regmask16 & 0xf0)
++ {
++ if ((regmask16 & 0xf0) == 0xf0)
++ result |= 1 << 1;
++ else
++ return -1;
++ }
++ if (regmask16 & 0x300)
++ {
++ if ((regmask16 & 0x300) == 0x300)
++ result |= 1 << 2;
++ else
++ return -1;
++ }
++ if (regmask16 & (1 << 13))
++ return -1;
++
++ if (regmask16 & (1 << 10))
++ result |= 1 << 3;
++ if (regmask16 & (1 << 11))
++ result |= 1 << 4;
++ if (regmask16 & (1 << 12))
++ result |= 1 << 5;
++ if (regmask16 & (1 << 14))
++ result |= 1 << 6;
++ if (regmask16 & (1 << 15))
++ result |= 1 << 7;
++
++ *regmask8 = result;
++
++ return 0;
++}
++
++#if 0
++struct reg_map
++{
++ const struct reg_entry *names;
++ int nr_regs;
++ struct hash_control *htab;
++ const char *errmsg;
++};
++
++struct reg_map all_reg_maps[] =
++ {
++ { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
++ { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") },
++ };
++#endif
+diff -Nrup binutils-2.17/opcodes/avr32-asm.h binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.h
+--- binutils-2.17/opcodes/avr32-asm.h 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.h 2007-03-26 10:20:34.000000000 +0200
+@@ -0,0 +1,42 @@
++/* Assembler interface for AVR32.
++ Copyright 2005, 2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of libopcodes.
++
++ 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. */
++#ifndef __OPCODES_AVR32_ASM_H
++#define __OPCODES_AVR32_ASM_H
++
++extern int
++avr32_parse_intreg(const char *str);
++extern int
++avr32_parse_cpreg(const char *str);
++extern int
++avr32_parse_fpreg(const char *str);
++extern int
++avr32_parse_picoreg(const char *str);
++extern unsigned long
++avr32_parse_reglist(char *str, char **endptr);
++extern unsigned long
++avr32_parse_cpreglist(char *str, char **endptr);
++extern unsigned long
++avr32_parse_pico_reglist(char *str, char **endptr);
++extern int
++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
++
++#endif /* __OPCODES_AVR32_ASM_H */
+diff -Nrup binutils-2.17/opcodes/avr32-dis.c binutils-2.17.atmel.1.3.0/opcodes/avr32-dis.c
+--- binutils-2.17/opcodes/avr32-dis.c 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-dis.c 2007-09-28 10:30:46.000000000 +0200
+@@ -0,0 +1,891 @@
++/* Print AVR32 instructions for GDB and objdump.
++ Copyright 2005, 2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of libopcodes.
++
++ 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. */
++
++#include "sysdep.h"
++#include "dis-asm.h"
++#include "avr32-opc.h"
++#include "opintl.h"
++#include "safe-ctype.h"
++
++/* TODO: Share this with -asm */
++
++/* Structure for a register hash table entry. */
++struct reg_entry
++{
++ const char *name;
++ int number;
++};
++
++#ifndef strneq
++#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
++#endif
++
++
++static const struct reg_entry reg_table[] =
++ {
++ /* Primary names (used by the disassembler) */
++ { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
++ { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
++ { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
++ { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
++ /* Alternatives to sp, lr and pc. */
++ { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
++ };
++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
++
++/* Coprocessor Registers. */
++static const struct reg_entry cr_table[] =
++ {
++ { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
++ { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
++ { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
++ { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
++ };
++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
++
++static const char bparts[4] = { 'b', 'l', 'u', 't' };
++static bfd_vma current_pc;
++
++struct avr32_field_value
++{
++ const struct avr32_ifield *ifield;
++ unsigned long value;
++};
++
++struct avr32_operand
++{
++ int id;
++ int is_pcrel;
++ int align_order;
++ int (*print)(struct avr32_operand *op, struct disassemble_info *info,
++ struct avr32_field_value *ifields);
++};
++
++static signed long
++get_signed_value(const struct avr32_field_value *fv)
++{
++ signed long value = fv->value;
++
++ if (fv->value & (1 << (fv->ifield->bitsize - 1)))
++ value |= (~0UL << fv->ifield->bitsize);
++
++ return value;
++}
++
++static void
++print_reglist_range(unsigned int first, unsigned int last,
++ const struct reg_entry *reg_names,
++ int need_comma,
++ struct disassemble_info *info)
++{
++ if (need_comma)
++ info->fprintf_func(info->stream, ",");
++
++ if (first == last)
++ info->fprintf_func(info->stream, "%s",
++ reg_names[first].name);
++ else
++ info->fprintf_func(info->stream, "%s-%s",
++ reg_names[first].name, reg_names[last].name);
++}
++
++static int
++print_intreg(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regid = ifields[0].value << op->align_order;
++
++ info->fprintf_func(info->stream, "%s",
++ reg_table[regid].name);
++ return 1;
++}
++
++static int
++print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "--%s",
++ reg_table[ifields[0].value].name);
++ return 1;
++}
++
++static int
++print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "%s++",
++ reg_table[ifields[0].value].name);
++ return 1;
++}
++
++static int
++print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ const char *rp = reg_table[ifields[0].value].name;
++ unsigned long sa = ifields[1].value;
++
++ if (sa)
++ info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
++ else
++ info->fprintf_func(info->stream, "%s", rp);
++
++ return 2;
++}
++
++static int
++print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ const char *rp = reg_table[ifields[0].value].name;
++ unsigned long sa = ifields[1].value;
++
++ if (sa)
++ info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
++ else
++ info->fprintf_func(info->stream, "%s", rp);
++
++ return 2;
++}
++
++static int
++print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "%s:%c",
++ reg_table[ifields[0].value].name,
++ bparts[ifields[1].value]);
++ return 2;
++}
++
++static int
++print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "%s:%c",
++ reg_table[ifields[0].value].name,
++ ifields[1].value ? 't' : 'b');
++ return 2;
++}
++
++static int
++print_intreg_sdisp(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ signed long disp;
++
++ disp = get_signed_value(&ifields[1]) << op->align_order;
++
++ info->fprintf_func(info->stream, "%s[%ld]",
++ reg_table[ifields[0].value].name, disp);
++ return 2;
++}
++
++static int
++print_intreg_udisp(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "%s[0x%lx]",
++ reg_table[ifields[0].value].name,
++ ifields[1].value << op->align_order);
++ return 2;
++}
++
++static int
++print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ const char *rb, *ri;
++ unsigned long sa = ifields[2].value;
++
++ rb = reg_table[ifields[0].value].name;
++ ri = reg_table[ifields[1].value].name;
++
++ if (sa)
++ info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
++ else
++ info->fprintf_func(info->stream, "%s[%s]", rb, ri);
++
++ return 3;
++}
++
++static int
++print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "%s[%s:%c<<2]",
++ reg_table[ifields[0].value].name,
++ reg_table[ifields[1].value].name,
++ bparts[ifields[2].value]);
++ return 3;
++}
++
++static int
++print_jmplabel(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ bfd_vma address, offset;
++
++ offset = get_signed_value(ifields) << op->align_order;
++ address = (current_pc & (~0UL << op->align_order)) + offset;
++
++ info->print_address_func(address, info);
++
++ return 1;
++}
++
++static int
++print_pc_disp(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ bfd_vma address, offset;
++
++ offset = ifields[0].value << op->align_order;
++ address = (current_pc & (~0UL << op->align_order)) + offset;
++
++ info->print_address_func(address, info);
++
++ return 1;
++}
++
++static int
++print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
++{
++ info->fprintf_func(info->stream, "sp");
++ return 1;
++}
++
++static int
++print_sp_disp(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "sp[0x%lx]",
++ ifields[0].value << op->align_order);
++ return 1;
++}
++
++static int
++print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
++ return 1;
++}
++
++static int
++print_cpreg(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "cr%lu",
++ ifields[0].value << op->align_order);
++ return 1;
++}
++
++static int
++print_uconst(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "0x%lx",
++ ifields[0].value << op->align_order);
++ return 1;
++}
++
++static int
++print_sconst(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ info->fprintf_func(info->stream, "%ld",
++ get_signed_value(ifields) << op->align_order);
++ return 1;
++}
++
++static int
++print_reglist8_head(unsigned long regmask, int *commap,
++ struct disassemble_info *info)
++{
++ int first = -1, last, i = 0;
++ int need_comma = 0;
++
++ while (i < 12)
++ {
++ if (first == -1 && (regmask & 1))
++ {
++ first = i;
++ }
++ else if (first != -1 && !(regmask & 1))
++ {
++ last = i - 1;
++
++ print_reglist_range(first, last, reg_table, need_comma, info);
++ need_comma = 1;
++ first = -1;
++ }
++
++ if (i < 8)
++ i += 4;
++ else if (i < 10)
++ i += 2;
++ else
++ i++;
++ regmask >>= 1;
++ }
++
++ *commap = need_comma;
++ return first;
++}
++
++static void
++print_reglist8_tail(unsigned long regmask, int first, int need_comma,
++ struct disassemble_info *info)
++{
++ int last = 11;
++
++ if (regmask & 0x20)
++ {
++ if (first == -1)
++ first = 12;
++ last = 12;
++ }
++
++ if (first != -1)
++ {
++ print_reglist_range(first, last, reg_table, need_comma, info);
++ need_comma = 1;
++ first = -1;
++ }
++
++ if (regmask & 0x40)
++ {
++ if (first == -1)
++ first = 14;
++ last = 14;
++ }
++
++ if (regmask & 0x80)
++ {
++ if (first == -1)
++ first = 15;
++ last = 15;
++ }
++
++ if (first != -1)
++ print_reglist_range(first, last, reg_table, need_comma, info);
++}
++
++static int
++print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regmask = ifields[0].value;
++ int first, need_comma;
++
++ first = print_reglist8_head(regmask, &need_comma, info);
++ print_reglist8_tail(regmask, first, need_comma, info);
++
++ return 1;
++}
++
++static int
++print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regmask = ifields[0].value >> 1;
++ int first, last, need_comma;
++
++ first = print_reglist8_head(regmask, &need_comma, info);
++
++ if ((ifields[0].value & 0x101) == 0x101)
++ {
++ if (first != -1)
++ {
++ last = 11;
++
++ print_reglist_range(first, last, reg_table, need_comma, info);
++ need_comma = 1;
++ first = -1;
++ }
++
++ print_reglist_range(15, 15, reg_table, need_comma, info);
++
++ regmask >>= 5;
++
++ if ((regmask & 3) == 0)
++ info->fprintf_func(info->stream, ",r12=0");
++ else if ((regmask & 3) == 1)
++ info->fprintf_func(info->stream, ",r12=1");
++ else
++ info->fprintf_func(info->stream, ",r12=-1");
++ }
++ else
++ print_reglist8_tail(regmask, first, need_comma, info);
++
++ return 1;
++}
++
++static int
++print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regmask = ifields[0].value;
++ unsigned int i = 0, first, last;
++ int need_comma = 0;
++
++ while (i < 16)
++ {
++ if (regmask & 1)
++ {
++ first = i;
++ while (i < 16)
++ {
++ i++;
++ regmask >>= 1;
++ if (!(regmask & 1))
++ break;
++ }
++ last = i - 1;
++ print_reglist_range(first, last, reg_table, need_comma, info);
++ need_comma = 1;
++ }
++ else
++ {
++ i++;
++ regmask >>= 1;
++ }
++ }
++
++ return 1;
++}
++
++static int
++print_reglist_ldm(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ int rp, w_bit;
++ int i, first, last;
++ unsigned long regmask;
++
++ rp = ifields[0].value;
++ w_bit = ifields[1].value;
++ regmask = ifields[2].value;
++
++ if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
++ {
++ if (w_bit)
++ info->fprintf_func(info->stream, "sp++");
++ else
++ info->fprintf_func(info->stream, "sp");
++
++ for (i = 0; i < 12; )
++ {
++ if (regmask & (1 << i))
++ {
++ first = i;
++ while (i < 12)
++ {
++ i++;
++ if (!(regmask & (1 << i)))
++ break;
++ }
++ last = i - 1;
++ print_reglist_range(first, last, reg_table, 1, info);
++ }
++ else
++ i++;
++ }
++
++ info->fprintf_func(info->stream, ",pc");
++ if (regmask & (1 << AVR32_REG_LR))
++ info->fprintf_func(info->stream, ",r12=-1");
++ else if (regmask & (1 << AVR32_REG_R12))
++ info->fprintf_func(info->stream, ",r12=1");
++ else
++ info->fprintf_func(info->stream, ",r12=0");
++ }
++ else
++ {
++ if (w_bit)
++ info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
++ else
++ info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
++
++ print_reglist16(op, info, ifields + 2);
++ }
++
++ return 3;
++}
++
++static int
++print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regmask = ifields[0].value;
++ unsigned int i = 0, first, last, offset = 0;
++ int need_comma = 0;
++
++ if (ifields[1].value)
++ offset = 8;
++
++ while (i < 8)
++ {
++ if (regmask & 1)
++ {
++ first = i;
++ while (i < 8)
++ {
++ i++;
++ regmask >>= 1;
++ if (!(regmask & 1))
++ break;
++ }
++ last = i - 1;
++ print_reglist_range(offset + first, offset + last,
++ cr_table, need_comma, info);
++ need_comma = 1;
++ }
++ else
++ {
++ i++;
++ regmask >>= 1;
++ }
++ }
++
++ return 2;
++}
++
++static int
++print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regmask = ifields[0].value;
++ unsigned int i = 0, first, last;
++ int need_comma = 0;
++
++ while (i < 8)
++ {
++ if (regmask & 1)
++ {
++ first = 2 * i;
++ while (i < 8)
++ {
++ i++;
++ regmask >>= 1;
++ if (!(regmask & 1))
++ break;
++ }
++ last = 2 * (i - 1) + 1;
++ print_reglist_range(first, last, cr_table, need_comma, info);
++ need_comma = 1;
++ }
++ else
++ {
++ i++;
++ regmask >>= 1;
++ }
++ }
++
++ return 1;
++}
++
++static int
++print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regid = ifields[0].value;
++ const char *retval;
++
++ if (regid < AVR32_REG_SP)
++ retval = reg_table[regid].name;
++ else if (regid == AVR32_REG_SP)
++ retval = "0";
++ else if (regid == AVR32_REG_LR)
++ retval = "-1";
++ else
++ retval = "1";
++
++ info->fprintf_func(info->stream, "%s", retval);
++
++ return 1;
++}
++
++static int
++print_mcall(struct avr32_operand *op,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ unsigned long regid = ifields[0].value;
++
++ if (regid == AVR32_REG_PC)
++ print_jmplabel(op, info, ifields + 1);
++ else
++ print_intreg_sdisp(op, info, ifields);
++
++ return 2;
++}
++
++static int
++print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields)
++{
++ signed long value = ifields[0].value;
++
++ if (value >= 4)
++ value -= 8;
++ else
++ value += 1;
++
++ info->fprintf_func(info->stream, "%ld", value);
++
++ return 1;
++}
++
++static int
++print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
++ struct disassemble_info *info,
++ struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
++{
++ info->fprintf_func(info->stream, "COH");
++ return 0;
++}
++
++#define OP(name, sgn, pcrel, align, func) \
++ { AVR32_OPERAND_##name, pcrel, align, print_##func }
++
++struct avr32_operand operand[AVR32_NR_OPERANDS] =
++ {
++ OP(INTREG, 0, 0, 0, intreg),
++ OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
++ OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
++ OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
++ OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
++ OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
++ OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
++ OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
++ OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
++ OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
++ OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
++ OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
++ OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
++ OP(INTREG_INDEX, 0, 0, 0, intreg_index),
++ OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
++ OP(DWREG, 0, 0, 1, intreg),
++ OP(PC_UDISP_W, 0, 1, 2, pc_disp),
++ OP(SP, 0, 0, 0, sp),
++ OP(SP_UDISP_W, 0, 0, 2, sp_disp),
++ OP(CPNO, 0, 0, 0, cpno),
++ OP(CPREG, 0, 0, 0, cpreg),
++ OP(CPREG_D, 0, 0, 1, cpreg),
++ OP(UNSIGNED_CONST, 0, 0, 0, uconst),
++ OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
++ OP(SIGNED_CONST, 1, 0, 0, sconst),
++ OP(SIGNED_CONST_W, 1, 0, 2, sconst),
++ OP(JMPLABEL, 1, 1, 1, jmplabel),
++ OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
++ OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
++ OP(REGLIST8, 0, 0, 0, reglist8),
++ OP(REGLIST9, 0, 0, 0, reglist9),
++ OP(REGLIST16, 0, 0, 0, reglist16),
++ OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
++ OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
++ OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
++ OP(RETVAL, 0, 0, 0, retval),
++ OP(MCALL, 1, 0, 2, mcall),
++ OP(JOSPINC, 0, 0, 0, jospinc),
++ OP(COH, 0, 0, 0, coh),
++ };
++
++static void
++print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
++ bfd_vma pc, struct disassemble_info *info)
++{
++ const struct avr32_syntax *syntax = opc->syntax;
++ struct avr32_field_value fields[AVR32_MAX_FIELDS];
++ unsigned int i, next_field = 0, nr_operands;
++
++ for (i = 0; i < opc->nr_fields; i++)
++ {
++ opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
++ fields[i].ifield = opc->fields[i];
++ }
++
++ current_pc = pc;
++ info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
++
++ if (syntax->nr_operands < 0)
++ nr_operands = (unsigned int) -syntax->nr_operands;
++ else
++ nr_operands = (unsigned int) syntax->nr_operands;
++
++ for (i = 0; i < nr_operands; i++)
++ {
++ struct avr32_operand *op = &operand[syntax->operand[i]];
++
++ if (i)
++ info->fprintf_func(info->stream, ",");
++ else
++ info->fprintf_func(info->stream, "\t");
++ next_field += op->print(op, info, &fields[next_field]);
++ }
++}
++
++static const struct avr32_opcode *
++find_opcode(bfd_vma insn_word)
++{
++ int i;
++
++ for (i = 0; i < AVR32_NR_OPCODES; i++)
++ {
++ const struct avr32_opcode *opc = &avr32_opc_table[i];
++
++ if ((insn_word & opc->mask) == opc->value)
++ return opc;
++ }
++
++ return NULL;
++}
++
++static int
++read_insn_word(bfd_vma pc, bfd_vma *valuep,
++ struct disassemble_info *info)
++{
++ bfd_byte b[4];
++ int status;
++
++ status = info->read_memory_func(pc, b, 4, info);
++ if (status)
++ {
++ status = info->read_memory_func(pc, b, 2, info);
++ if (status)
++ {
++ info->memory_error_func(status, pc, info);
++ return -1;
++ }
++ b[3] = b[2] = 0;
++ }
++
++ *valuep = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
++ return 0;
++}
++
++/* Parse an individual disassembler option. */
++
++void
++parse_avr32_disassembler_option (option)
++ char * option;
++{
++ if (option == NULL)
++ return;
++
++ /* XXX - should break 'option' at following delimiter. */
++ fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
++
++ return;
++}
++
++/* Parse the string of disassembler options, spliting it at whitespaces
++ or commas. (Whitespace separators supported for backwards compatibility). */
++
++static void
++parse_disassembler_options (char *options)
++{
++ if (options == NULL)
++ return;
++
++ while (*options)
++ {
++ parse_avr32_disassembler_option (options);
++
++ /* Skip forward to next seperator. */
++ while ((*options) && (! ISSPACE (*options)) && (*options != ','))
++ ++ options;
++ /* Skip forward past seperators. */
++ while (ISSPACE (*options) || (*options == ','))
++ ++ options;
++ }
++}
++
++int
++print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
++{
++ bfd_vma insn_word;
++ const struct avr32_opcode *opc;
++
++ if (info->disassembler_options)
++ {
++ parse_disassembler_options (info->disassembler_options);
++
++ /* To avoid repeated parsing of these options, we remove them here. */
++ info->disassembler_options = NULL;
++ }
++
++ info->bytes_per_chunk = 1;
++ info->display_endian = BFD_ENDIAN_BIG;
++
++ if (read_insn_word(pc, &insn_word, info))
++ return -1;
++
++ opc = find_opcode(insn_word);
++ if (opc)
++ {
++ print_opcode(insn_word, opc, pc, info);
++ return opc->size;
++ }
++ else
++ {
++ info->fprintf_func(info->stream, _("*unknown*"));
++ return 2;
++ }
++
++}
++
++void
++print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
++{
++
++}
+diff -Nrup binutils-2.17/opcodes/avr32-opc.c binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.c
+--- binutils-2.17/opcodes/avr32-opc.c 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.c 2007-03-26 10:20:34.000000000 +0200
+@@ -0,0 +1,6140 @@
++/* Opcode tables for AVR32.
++ Copyright 2005, 2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of libopcodes.
++
++ 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. */
++
++#include <stdlib.h>
++#include <assert.h>
++
++#include "avr32-opc.h"
++
++#define PICO_CPNO 1
++
++void
++avr32_insert_simple(const struct avr32_ifield *field,
++ void *buf, unsigned long value)
++{
++ bfd_vma word;
++
++ word = bfd_getb32(buf);
++ word &= ~field->mask;
++ word |= (value << field->shift) & field->mask;
++ bfd_putb32(word, buf);
++}
++
++void
++avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
++ void *buf, unsigned long value)
++{
++ char *opcode = buf;
++
++ opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
++ opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
++}
++
++void
++avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
++ void *buf, unsigned long value)
++{
++ char *opcode = buf;
++
++ opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
++ opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
++ | ((value & 0x300) >> 8));
++}
++
++void
++avr32_insert_k21(const struct avr32_ifield *field,
++ void *buf, unsigned long value)
++{
++ bfd_vma word;
++ bfd_vma k21;
++
++ word = bfd_getb32(buf);
++ word &= ~field->mask;
++ k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
++ | ((value & 0x1e0000) << 8));
++ assert(!(k21 & ~field->mask));
++ word |= k21;
++ bfd_putb32(word, buf);
++}
++
++void
++avr32_insert_cpop(const struct avr32_ifield *field,
++ void *buf, unsigned long value)
++{
++ bfd_vma word;
++
++ word = bfd_getb32(buf);
++ word &= ~field->mask;
++ word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
++ | ((value & 0x01) << 12));
++ bfd_putb32(word, buf);
++}
++
++void
++avr32_insert_k12cp(const struct avr32_ifield *field,
++ void *buf, unsigned long value)
++{
++ bfd_vma word;
++
++ word = bfd_getb32(buf);
++ word &= ~field->mask;
++ word |= ((value & 0xf00) << 4) | (value & 0xff);
++ bfd_putb32(word, buf);
++}
++
++void avr32_extract_simple(const struct avr32_ifield *field,
++ void *buf, unsigned long *value)
++{
++ /* XXX: The disassembler has done any necessary byteswapping already */
++ bfd_vma word = *(bfd_vma *)buf;
++
++ *value = (word & field->mask) >> field->shift;
++}
++
++void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
++ void *buf, unsigned long *value)
++{
++ bfd_vma word = *(bfd_vma *)buf;
++
++ *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
++}
++
++void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
++ void *buf, unsigned long *value)
++{
++ bfd_vma word = *(bfd_vma *)buf;
++
++ *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
++}
++
++void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
++ void *buf, unsigned long *value)
++{
++ bfd_vma word = *(bfd_vma *)buf;
++
++ *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
++ | ((word >> 8) & 0x1e0000));
++}
++
++void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
++ void *buf, unsigned long *value)
++{
++ bfd_vma word = *(bfd_vma *)buf;
++
++ *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
++ | ((word >> 20) & 0x60));
++}
++
++void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
++ void *buf, unsigned long *value)
++{
++ bfd_vma word = *(bfd_vma *)buf;
++
++ *value = ((word >> 4) & 0xf00) | (word & 0xff);
++}
++
++#define IFLD(id, bitsz, shift, mask, func) \
++ { AVR32_IFIELD_##id, bitsz, shift, mask, \
++ avr32_insert_##func, avr32_extract_##func }
++
++const struct avr32_ifield avr32_ifield_table[] =
++ {
++ IFLD(RX, 4, 25, 0x1e000000, simple),
++ IFLD(RY, 4, 16, 0x000f0000, simple),
++ IFLD(COND4C, 4, 20, 0x00f00000, simple),
++ IFLD(K8C, 8, 20, 0x0ff00000, simple),
++ IFLD(K7C, 7, 20, 0x07f00000, simple),
++ IFLD(K5C, 5, 20, 0x01f00000, simple),
++ IFLD(K3, 3, 20, 0x00700000, simple),
++ IFLD(RY_DW, 3, 17, 0x000e0000, simple),
++ IFLD(COND4E, 4, 8, 0x00000f00, simple),
++ IFLD(K8E, 8, 0, 0x000000ff, simple),
++ IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
++ IFLD(COND3, 3, 16, 0x00070000, simple),
++ IFLD(K10, 10, 16, 0x0ff30000, k10),
++ IFLD(POPM, 9, 19, 0x0ff80000, simple),
++ IFLD(K2, 2, 4, 0x00000030, simple),
++ IFLD(RD_E, 4, 0, 0x0000000f, simple),
++ IFLD(RD_DW, 3, 1, 0x0000000e, simple),
++ IFLD(X, 1, 5, 0x00000020, simple),
++ IFLD(Y, 1, 4, 0x00000010, simple),
++ IFLD(X2, 1, 13, 0x00002000, simple),
++ IFLD(Y2, 1, 12, 0x00001000, simple),
++ IFLD(K5E, 5, 0, 0x0000001f, simple),
++ IFLD(PART2, 2, 0, 0x00000003, simple),
++ IFLD(PART1, 1, 0, 0x00000001, simple),
++ IFLD(K16, 16, 0, 0x0000ffff, simple),
++ IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
++ IFLD(K11, 11, 0, 0x000007ff, simple),
++ IFLD(K21, 21, 0, 0x1e10ffff, k21),
++ IFLD(CPOP, 7, 12, 0x060f1000, cpop),
++ IFLD(CPNO, 3, 13, 0x0000e000, simple),
++ IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
++ IFLD(CRX, 4, 4, 0x000000f0, simple),
++ IFLD(CRY, 4, 0, 0x0000000f, simple),
++ IFLD(K7E, 7, 0, 0x0000007f, simple),
++ IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
++ IFLD(PART1_K12, 1, 12, 0x00001000, simple),
++ IFLD(PART2_K12, 2, 12, 0x00003000, simple),
++ IFLD(K12, 12, 0, 0x00000fff, simple),
++ IFLD(S5, 5, 5, 0x000003e0, simple),
++ IFLD(K5E2, 5, 4, 0x000001f0, simple),
++ IFLD(K4, 4, 20, 0x00f00000, simple),
++ IFLD(COND4E2, 4, 4, 0x000000f0, simple),
++ IFLD(K8E2, 8, 4, 0x00000ff0, simple),
++ IFLD(K6, 6, 20, 0x03f00000, simple),
++ IFLD(MEM15, 15, 0, 0x00007fff, simple),
++ IFLD(MEMB5, 5, 15, 0x000f8000, simple),
++ IFLD(W, 1, 25, 0x02000000, simple),
++ /* Coprocessor Multiple High/Low */
++ IFLD(CM_HL, 1, 8, 0x00000100, simple),
++ IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
++ };
++#undef IFLD
++
++
++struct avr32_opcode avr32_opc_table[] =
++ {
++ {
++ AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ABS],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_ACALL],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ACR],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_ADC],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ADD1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_ADD2],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_AND1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
++ &avr32_syntax_table[AVR32_SYNTAX_AND2],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
++ },
++ },
++ {
++ AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
++ &avr32_syntax_table[AVR32_SYNTAX_AND3],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
++ },
++ },
++ {
++ AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ANDH],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ANDL],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ANDN],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_ASR1],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_ASR3],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ {
++ AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ASR2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
++ },
++ },
++ {
++ AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_BLD],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ {
++ AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRLS],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRGT],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRLE],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRHI],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRVS],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRVC],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRQS],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BRAL],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_BREV],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_BST],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ {
++ AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CACHE],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K11],
++ &avr32_ifield_table[AVR32_IFIELD_CACHEOP],
++ },
++ },
++ {
++ AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CBR],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
++ },
++ },
++ {
++ AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_CLZ],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_COM],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_COP],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ &avr32_ifield_table[AVR32_IFIELD_CRX],
++ &avr32_ifield_table[AVR32_IFIELD_CRY],
++ &avr32_ifield_table[AVR32_IFIELD_CPOP],
++ },
++ },
++ {
++ AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_CP_B],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_CP_H],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
++ &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
++ BFD_RELOC_AVR32_6S, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K6],
++ },
++ },
++ {
++ AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
++ BFD_RELOC_AVR32_21S, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_CPC1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_CPC2],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_CSRF],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K5C],
++ },
++ },
++ {
++ AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K5C],
++ },
++ },
++ {
++ AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_DIVS],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_DIVU],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_EOR1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
++ &avr32_syntax_table[AVR32_SYNTAX_EOR2],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
++ }
++ },
++ {
++ AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
++ &avr32_syntax_table[AVR32_SYNTAX_EOR3],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
++ }
++ },
++ {
++ AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_EORL],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_EORH],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_FRS],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ICALL],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K3],
++ },
++ },
++ {
++ AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
++ BFD_RELOC_AVR32_16S, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
++ BFD_RELOC_AVR32_16S, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
++ BFD_RELOC_AVR32_3U, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K3],
++ },
++ },
++ {
++ AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
++ BFD_RELOC_AVR32_16S, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
++ BFD_RELOC_AVR32_4UH, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K3],
++ },
++ },
++ {
++ AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
++ BFD_RELOC_AVR32_16S, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
++ BFD_RELOC_AVR32_4UH, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K3],
++ },
++ },
++ {
++ AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
++ BFD_RELOC_AVR32_16S, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
++ BFD_RELOC_AVR32_7UW, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K5C],
++ },
++ },
++ {
++ AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
++ BFD_RELOC_AVR32_16S, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
++ BFD_RELOC_AVR32_10UW, 4, 3,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
++ BFD_RELOC_AVR32_10UW, 4, 3,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
++ BFD_RELOC_AVR32_14UW, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
++ },
++ },
++ {
++ AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
++ BFD_RELOC_AVR32_14UW, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
++ },
++ },
++ {
++ AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
++ },
++ },
++ {
++ AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
++ },
++ },
++ {
++ AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
++ BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K7C],
++ },
++ },
++ {
++ AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
++ BFD_RELOC_AVR32_16B_PCREL, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K7C],
++ },
++ },
++ {
++ AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_PART2_K12],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K12],
++ },
++ },
++ {
++ AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_PART1_K12],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K12],
++ },
++ },
++ {
++ AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDM],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_W],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K12],
++ },
++ },
++ {
++ AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K12],
++ },
++ },
++ {
++ AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K12],
++ },
++ },
++ {
++ AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_LSL1],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_LSL3],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ {
++ AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LSL2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
++ },
++ },
++ {
++ AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_LSR1],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_LSR3],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ {
++ AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_LSR2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
++ },
++ },
++ {
++ AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_MAC],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
++ &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
++ &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
++ &avr32_syntax_table[AVR32_SYNTAX_MACUD],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
++ &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_MAX],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MCALL],
++ BFD_RELOC_AVR32_18W_PCREL, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MFDR],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MFSR],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_MIN],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MOV3],
++ BFD_RELOC_NONE, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
++ &avr32_syntax_table[AVR32_SYNTAX_MOV1],
++ BFD_RELOC_AVR32_8S, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MOV2],
++ BFD_RELOC_AVR32_21S, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MTDR],
++ BFD_RELOC_AVR32_8S_EXT, 2, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MTSR],
++ BFD_RELOC_AVR32_8S_EXT, 2, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MUL1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_MUL2],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_MUL3],
++ BFD_RELOC_AVR32_8S_EXT, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
++ &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULSD],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
++ &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
++ &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
++ &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ },
++ },
++ {
++ AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
++ &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ },
++ },
++ {
++ AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
++ &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ },
++ },
++ {
++ AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
++ &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_NEG],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_NOP],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_OR1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
++ &avr32_syntax_table[AVR32_SYNTAX_OR2],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
++ },
++ },
++ {
++ AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
++ &avr32_syntax_table[AVR32_SYNTAX_OR3],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
++ },
++ },
++ {
++ AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ORH],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ORL],
++ BFD_RELOC_AVR32_16U, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_COND3],
++ },
++ },
++ {
++ AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_COND3],
++ },
++ },
++ {
++ AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_COND3],
++ },
++ },
++ {
++ AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_POPJC],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
++ &avr32_syntax_table[AVR32_SYNTAX_POPM],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_POPM],
++ },
++ },
++ {
++ AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_PREF],
++ BFD_RELOC_AVR32_16S, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSAD],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
++ &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
++ &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
++ BFD_RELOC_AVR32_11H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K10],
++ },
++ },
++ {
++ AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
++ &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETNE],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETHS],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETLO],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETGE],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETLT],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETMI],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETPL],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETLS],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETGT],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETLE],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETHI],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETVS],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETVC],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETQS],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETAL],
++ BFD_RELOC_NONE, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETD],
++ BFD_RELOC_NONE, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETE],
++ BFD_RELOC_NONE, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETJ],
++ BFD_RELOC_NONE, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_RETS],
++ BFD_RELOC_NONE, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
++ &avr32_syntax_table[AVR32_SYNTAX_RJMP],
++ BFD_RELOC_AVR32_11H_PCREL, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K10],
++ },
++ },
++ {
++ AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ROL],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ROR],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
++ BFD_RELOC_AVR32_8S_EXT, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
++ &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ &avr32_ifield_table[AVR32_IFIELD_S5],
++ },
++ },
++ {
++ AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
++ &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ &avr32_ifield_table[AVR32_IFIELD_S5],
++ },
++ },
++ {
++ AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
++ &avr32_syntax_table[AVR32_SYNTAX_SATS],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ &avr32_ifield_table[AVR32_IFIELD_S5],
++ },
++ },
++ {
++ AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
++ &avr32_syntax_table[AVR32_SYNTAX_SATU],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ &avr32_ifield_table[AVR32_IFIELD_S5],
++ },
++ },
++ {
++ AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_SBC],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SBR],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
++ },
++ },
++ {
++ AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_SCALL],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SCR],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
++ BFD_RELOC_AVR32_8S_EXT, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SREQ],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRNE],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRHS],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRLO],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRGE],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRLT],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRMI],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRPL],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRLS],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRGT],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRLE],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRHI],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRVS],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRVC],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRQS],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SRAL],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_SSRF],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K5C],
++ },
++ },
++ {
++ AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ },
++ },
++ {
++ AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
++ BFD_RELOC_AVR32_3U, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K3],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
++ BFD_RELOC_AVR32_16S, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ },
++ },
++ {
++ AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ },
++ },
++ {
++ AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ },
++ },
++ {
++ AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ &avr32_ifield_table[AVR32_IFIELD_RD_DW],
++ },
++ },
++ {
++ AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
++ BFD_RELOC_AVR32_16S, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
++ },
++ },
++ {
++ AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ },
++ },
++ {
++ AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
++ BFD_RELOC_AVR32_4UH, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K3],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
++ BFD_RELOC_AVR32_16S, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ },
++ },
++ {
++ AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
++ BFD_RELOC_AVR32_6UW, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K4],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
++ BFD_RELOC_AVR32_16S, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
++ &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
++ BFD_RELOC_AVR32_10UW, 4, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ },
++ },
++ {
++ AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
++ &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ },
++ },
++ {
++ AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
++ &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ },
++ },
++ {
++ AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
++ &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
++ BFD_RELOC_AVR32_10UW, 4, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ },
++ },
++ {
++ AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
++ &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ },
++ },
++ {
++ AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
++ &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ },
++ },
++ {
++ AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
++ &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
++ BFD_RELOC_AVR32_14UW, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
++ },
++ },
++ {
++ AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
++ BFD_RELOC_AVR32_14UW, 3, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ },
++ },
++ {
++ AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
++ &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
++ &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
++ &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
++ },
++ },
++ {
++ AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
++ &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
++ },
++ },
++ {
++ AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_STCOND],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
++ &avr32_syntax_table[AVR32_SYNTAX_STDSP],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K7C],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
++ &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
++ BFD_RELOC_UNUSED, 7, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X2],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y2],
++ },
++ },
++ {
++ AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
++ &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
++ BFD_RELOC_AVR32_STHH_W, 6, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_K8E2],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X2],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y2],
++ },
++ },
++ {
++ AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_STM],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_STMTS],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
++ &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K12],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
++ &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K12],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SUB1],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_SUB2],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K2],
++ },
++ },
++ {
++ AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SUB5],
++ BFD_RELOC_AVR32_SUB5, 3, 2,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_K16],
++ },
++ },
++ {
++ AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
++ &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
++ BFD_RELOC_AVR32_10SW, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
++ &avr32_syntax_table[AVR32_SYNTAX_SUB3],
++ BFD_RELOC_AVR32_8S, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8C],
++ },
++ },
++ {
++ AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SUB4],
++ BFD_RELOC_AVR32_21S, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K21],
++ },
++ },
++ {
++ AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ },
++ },
++ {
++ AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
++ &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
++ BFD_RELOC_UNUSED, 5, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_X],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_Y],
++ },
++ },
++ {
++ AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
++ &avr32_syntax_table[AVR32_SYNTAX_SYNC],
++ BFD_RELOC_AVR32_8S_EXT, 1, 0,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_K8E],
++ }
++ },
++ {
++ AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_TLBR],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_TLBS],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
++ &avr32_syntax_table[AVR32_SYNTAX_TLBW],
++ BFD_RELOC_UNUSED, 0, -1, { NULL },
++ },
++ {
++ AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
++ BFD_RELOC_UNUSED, 1, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ }
++ },
++ {
++ AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
++ &avr32_syntax_table[AVR32_SYNTAX_TST],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ },
++ },
++ {
++ AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
++ &avr32_syntax_table[AVR32_SYNTAX_XCHG],
++ BFD_RELOC_UNUSED, 3, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ },
++ },
++ {
++ AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MEMC],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_MEM15],
++ &avr32_ifield_table[AVR32_IFIELD_MEMB5],
++ },
++ },
++ {
++ AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MEMS],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_MEM15],
++ &avr32_ifield_table[AVR32_IFIELD_MEMB5],
++ },
++ },
++ {
++ AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
++ &avr32_syntax_table[AVR32_SYNTAX_MEMT],
++ BFD_RELOC_UNUSED, 2, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_MEM15],
++ &avr32_ifield_table[AVR32_IFIELD_MEMB5],
++ },
++ },
++ {
++ AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
++ &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_S5],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ {
++ AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
++ &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_S5],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ {
++ AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
++ &avr32_syntax_table[AVR32_SYNTAX_BFINS],
++ BFD_RELOC_UNUSED, 4, -1,
++ {
++ &avr32_ifield_table[AVR32_IFIELD_RX],
++ &avr32_ifield_table[AVR32_IFIELD_RY],
++ &avr32_ifield_table[AVR32_IFIELD_S5],
++ &avr32_ifield_table[AVR32_IFIELD_K5E],
++ },
++ },
++ };
++
++#define FPALIAS_DXY(name, opcode) \
++ { \
++ AVR32_ALIAS_##name##_S, \
++ &avr32_opc_table[AVR32_OPC_COP], \
++ { \
++ { 0, 0 }, \
++ { 1, 0 }, { 1, 1 }, { 1, 2 }, \
++ { 0, opcode }, \
++ }, \
++ }, { \
++ AVR32_ALIAS_##name##_D, \
++ &avr32_opc_table[AVR32_OPC_COP], \
++ { \
++ { 0, 0 }, \
++ { 1, 0 }, { 1, 1 }, { 1, 2 }, \
++ { 0, (opcode) | 0x40 }, \
++ }, \
++ }
++#define FPALIAS_DX(name, opcode) \
++ { \
++ AVR32_ALIAS_##name##_S, \
++ &avr32_opc_table[AVR32_OPC_COP], \
++ { \
++ { 0, 0 }, \
++ { 1, 0 }, { 1, 1 }, { 0, 0 }, \
++ { 0, opcode }, \
++ }, \
++ }, { \
++ AVR32_ALIAS_##name##_D, \
++ &avr32_opc_table[AVR32_OPC_COP], \
++ { \
++ { 0, 0 }, \
++ { 1, 0 }, { 1, 1 }, { 0, 0 }, \
++ { 0, (opcode) | 0x40 }, \
++ }, \
++ }
++#define FPALIAS_XY(name, opcode) \
++ { \
++ AVR32_ALIAS_##name##_S, \
++ &avr32_opc_table[AVR32_OPC_COP], \
++ { \
++ { 0, 0 }, \
++ { 0, 0 }, { 1, 0 }, { 1, 1 }, \
++ { 0, opcode }, \
++ }, \
++ }, { \
++ AVR32_ALIAS_##name##_D, \
++ &avr32_opc_table[AVR32_OPC_COP], \
++ { \
++ { 0, 0 }, \
++ { 0, 0 }, { 1, 0 }, { 1, 1 }, \
++ { 0, (opcode) | 0x40 }, \
++ }, \
++ }
++
++const struct avr32_alias avr32_alias_table[] =
++ {
++ FPALIAS_DXY(FMAC, 0x00),
++ FPALIAS_DXY(FNMAC, 0x01),
++ FPALIAS_DXY(FMSC, 0x02),
++ FPALIAS_DXY(FNMSC, 0x03),
++ FPALIAS_DXY(FADD, 0x04),
++ FPALIAS_DXY(FSUB, 0x05),
++ FPALIAS_DXY(FMUL, 0x06),
++ FPALIAS_DXY(FNMUL, 0x07),
++ FPALIAS_DX(FNEG, 0x08),
++ FPALIAS_DX(FABS, 0x09),
++ FPALIAS_XY(FCMP, 0x0d),
++ FPALIAS_DX(FMOV1, 0x0a),
++ {
++ AVR32_ALIAS_FMOV2_S,
++ &avr32_opc_table[AVR32_OPC_MVCR_W],
++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
++ },
++ {
++ AVR32_ALIAS_FMOV2_D,
++ &avr32_opc_table[AVR32_OPC_MVCR_D],
++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
++ },
++ {
++ AVR32_ALIAS_FMOV3_S,
++ &avr32_opc_table[AVR32_OPC_MVRC_W],
++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
++ },
++ {
++ AVR32_ALIAS_FMOV3_D,
++ &avr32_opc_table[AVR32_OPC_MVRC_D],
++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
++ },
++ {
++ AVR32_ALIAS_FCASTS_D,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, 0 },
++ { 1, 0 }, { 1, 1 }, { 0, 0 },
++ { 0, 0x0f },
++ },
++ },
++ {
++ AVR32_ALIAS_FCASTD_S,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, 0 },
++ { 1, 0 }, { 1, 1 }, { 0, 0 },
++ { 0, 0x10 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMAC0,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x0c },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMAC1,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x0d },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMAC2,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x0e },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMAC3,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x0f },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMUL0,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x08 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMUL1,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x09 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMUL2,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x0a },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSVMUL3,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x0b },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMAC0,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x04 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMAC1,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x05 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMAC2,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x06 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMAC3,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x07 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMUL0,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x00 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMUL1,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x01 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMUL2,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x02 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOVMUL3,
++ &avr32_opc_table[AVR32_OPC_COP],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ { 0, 0x03 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLD_D1,
++ &avr32_opc_table[AVR32_OPC_LDC_D1],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLD_D2,
++ &avr32_opc_table[AVR32_OPC_LDC_D2],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLD_D3,
++ &avr32_opc_table[AVR32_OPC_LDC_D3],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLD_W1,
++ &avr32_opc_table[AVR32_OPC_LDC_W1],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLD_W2,
++ &avr32_opc_table[AVR32_OPC_LDC_W2],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLD_W3,
++ &avr32_opc_table[AVR32_OPC_LDC_W3],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLDM_D,
++ &avr32_opc_table[AVR32_OPC_LDCM_D],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLDM_D_PU,
++ &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLDM_W,
++ &avr32_opc_table[AVR32_OPC_LDCM_W],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOLDM_W_PU,
++ &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOMV_D1,
++ &avr32_opc_table[AVR32_OPC_MVCR_D],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOMV_D2,
++ &avr32_opc_table[AVR32_OPC_MVRC_D],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOMV_W1,
++ &avr32_opc_table[AVR32_OPC_MVCR_W],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOMV_W2,
++ &avr32_opc_table[AVR32_OPC_MVRC_W],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOST_D1,
++ &avr32_opc_table[AVR32_OPC_STC_D1],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOST_D2,
++ &avr32_opc_table[AVR32_OPC_STC_D2],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOST_D3,
++ &avr32_opc_table[AVR32_OPC_STC_D3],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOST_W1,
++ &avr32_opc_table[AVR32_OPC_STC_W1],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOST_W2,
++ &avr32_opc_table[AVR32_OPC_STC_W2],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOST_W3,
++ &avr32_opc_table[AVR32_OPC_STC_W3],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSTM_D,
++ &avr32_opc_table[AVR32_OPC_STCM_D],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSTM_D_PU,
++ &avr32_opc_table[AVR32_OPC_STCM_D_PU],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSTM_W,
++ &avr32_opc_table[AVR32_OPC_STCM_W],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ },
++ },
++ {
++ AVR32_ALIAS_PICOSTM_W_PU,
++ &avr32_opc_table[AVR32_OPC_STCM_W_PU],
++ {
++ { 0, PICO_CPNO },
++ { 1, 0 }, { 1, 1 }, { 1, 2 },
++ },
++ },
++ };
++
++
++#define SYNTAX_NORMAL0(id, mne, opc, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, 0, { } \
++ }
++#define SYNTAX_NORMAL1(id, mne, opc, op0, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, 1, \
++ { \
++ AVR32_OPERAND_##op0, \
++ } \
++ }
++#define SYNTAX_NORMALM1(id, mne, opc, op0, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, -1, \
++ { \
++ AVR32_OPERAND_##op0, \
++ } \
++ }
++#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, 2, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ } \
++ }
++#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, -2, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ } \
++ }
++#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, 3, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ AVR32_OPERAND_##op2, \
++ } \
++ }
++#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, -3, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ AVR32_OPERAND_##op2, \
++ } \
++ }
++#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, 4, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
++ } \
++ }
++#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ NULL, 5, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
++ AVR32_OPERAND_##op4, \
++ } \
++ }
++
++#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1, \
++ { \
++ AVR32_OPERAND_##op0, \
++ } \
++ }
++#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1, \
++ { \
++ AVR32_OPERAND_##op0, \
++ } \
++ }
++#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ } \
++ }
++#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ } \
++ }
++#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ AVR32_OPERAND_##op2, \
++ } \
++ }
++#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch) \
++ { \
++ AVR32_SYNTAX_##id, arch, \
++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
++ AVR32_PARSER_NORMAL, \
++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3, \
++ { \
++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
++ AVR32_OPERAND_##op2, \
++ } \
++ }
++
++#define SYNTAX_FP(name, nr_ops) \
++ { \
++ AVR32_SYNTAX_##name##_S, \
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
++ { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] }, \
++ NULL, nr_ops, \
++ { \
++ AVR32_OPERAND_FPREG_S, \
++ AVR32_OPERAND_FPREG_S, \
++ AVR32_OPERAND_FPREG_S, \
++ }, \
++ }, \
++ { \
++ AVR32_SYNTAX_##name##_D, \
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
++ { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] }, \
++ NULL, nr_ops, \
++ { \
++ AVR32_OPERAND_FPREG_D, \
++ AVR32_OPERAND_FPREG_D, \
++ AVR32_OPERAND_FPREG_D, \
++ }, \
++ }
++
++const struct avr32_syntax avr32_syntax_table[] =
++ {
++ SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
++ SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
++ SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
++ SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
++ SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
++ SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
++ SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
++ SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
++ SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
++ SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
++ SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
++ SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
++ SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
++ SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
++ SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
++ SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
++ SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
++ SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
++ SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
++ SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
++ SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
++ SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
++ SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
++ SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
++ SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
++ SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
++ SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
++ SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
++ SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
++ SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
++ SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
++ SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
++ SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
++ SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
++ SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
++ SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
++ SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
++ SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
++ SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
++ SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
++ SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOV2, MOV, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
++ SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
++ SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
++ SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
++ SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
++ SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
++ SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
++ SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
++ SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
++ SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
++ SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
++ SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
++ SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
++ SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
++ SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
++ SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
++ SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
++ SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
++ SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
++ SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
++ SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
++ SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
++ SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
++ SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
++ SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
++ SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
++ SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
++ SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG, AVR32_DSP),
++ SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
++ SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
++ SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
++ SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
++ SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
++ SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
++ SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
++ SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
++ SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
++ SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
++ SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
++ SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
++ SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
++ SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
++ SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
++ SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
++ SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
++ SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
++ SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
++ SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
++ SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
++ SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
++ SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
++ SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
++ SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
++ SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
++ SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
++ SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBEQ, SUBEQ, SUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBNE, SUBNE, SUBNE, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBCC, SUBCC, SUBCC, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBCS, SUBCS, SUBCS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBGE, SUBGE, SUBGE, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBLT, SUBLT, SUBLT, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBMI, SUBMI, SUBMI, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBPL, SUBPL, SUBPL, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBLS, SUBLS, SUBLS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBGT, SUBGT, SUBGT, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBLE, SUBLE, SUBLE, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBHI, SUBHI, SUBHI, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBVS, SUBVS, SUBVS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBVC, SUBVC, SUBVC, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBQS, SUBQS, SUBQS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBAL, SUBAL, SUBAL, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBHS, SUBHS, SUBCC, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBLO, SUBLO, SUBCS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
++ SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
++ SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
++ SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
++ SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
++ SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
++ SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
++ SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
++ SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
++ SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
++ SYNTAX_FP(FADD, 3),
++ SYNTAX_FP(FSUB, 3),
++ SYNTAX_FP(FMAC, 3),
++ SYNTAX_FP(FNMAC, 3),
++ SYNTAX_FP(FMSC, 3),
++ SYNTAX_FP(FNMSC, 3),
++ SYNTAX_FP(FMUL, 3),
++ SYNTAX_FP(FNMUL, 3),
++ SYNTAX_FP(FNEG, 2),
++ SYNTAX_FP(FABS, 2),
++ SYNTAX_FP(FCMP, 2),
++ {
++ AVR32_SYNTAX_FMOV1_S,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
++ &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
++ 2,
++ {
++ AVR32_OPERAND_FPREG_S,
++ AVR32_OPERAND_FPREG_S,
++ },
++ },
++ {
++ AVR32_SYNTAX_FMOV1_D,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
++ &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
++ 2,
++ {
++ AVR32_OPERAND_FPREG_D,
++ AVR32_OPERAND_FPREG_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_FMOV2_S,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
++ &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
++ 2,
++ {
++ AVR32_OPERAND_INTREG,
++ AVR32_OPERAND_FPREG_S,
++ },
++ },
++ {
++ AVR32_SYNTAX_FMOV2_D,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
++ &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
++ 2,
++ {
++ AVR32_OPERAND_DWREG,
++ AVR32_OPERAND_FPREG_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_FMOV3_S,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
++ 2,
++ {
++ AVR32_OPERAND_FPREG_S,
++ AVR32_OPERAND_INTREG,
++ },
++ },
++ {
++ AVR32_SYNTAX_FMOV3_D,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
++ 2,
++ {
++ AVR32_OPERAND_FPREG_D,
++ AVR32_OPERAND_DWREG,
++ },
++ },
++ {
++ AVR32_SYNTAX_FCASTS_D,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
++ 2,
++ {
++ AVR32_OPERAND_FPREG_S,
++ AVR32_OPERAND_FPREG_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_FCASTD_S,
++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
++ 2,
++ {
++ AVR32_OPERAND_FPREG_D,
++ AVR32_OPERAND_FPREG_S,
++ },
++ },
++ {
++ AVR32_SYNTAX_LDA_W,
++ AVR32_V1, NULL, AVR32_PARSER_LDA,
++ { NULL }, NULL,
++ 2,
++ {
++ AVR32_OPERAND_INTREG,
++ AVR32_OPERAND_SIGNED_CONST,
++ },
++ },
++ {
++ AVR32_SYNTAX_CALL,
++ AVR32_V1, NULL, AVR32_PARSER_CALL,
++ { NULL }, NULL,
++ 1,
++ {
++ AVR32_OPERAND_JMPLABEL,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMAC0,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
++ {
++ AVR32_OPERAND_PICO_OUT0,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMAC1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
++ {
++ AVR32_OPERAND_PICO_OUT1,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMAC2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
++ {
++ AVR32_OPERAND_PICO_OUT2,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMAC3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
++ NULL, 4,
++ {
++ AVR32_OPERAND_PICO_OUT3,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMUL0,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
++ {
++ AVR32_OPERAND_PICO_OUT0,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMUL1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
++ {
++ AVR32_OPERAND_PICO_OUT1,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMUL2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
++ {
++ AVR32_OPERAND_PICO_OUT2,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSVMUL3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
++ NULL, 4,
++ {
++ AVR32_OPERAND_PICO_OUT3,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMAC0,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
++ {
++ AVR32_OPERAND_PICO_OUT0,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMAC1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
++ {
++ AVR32_OPERAND_PICO_OUT1,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMAC2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
++ {
++ AVR32_OPERAND_PICO_OUT2,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMAC3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
++ NULL, 4,
++ {
++ AVR32_OPERAND_PICO_OUT3,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMUL0,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
++ {
++ AVR32_OPERAND_PICO_OUT0,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMUL1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
++ {
++ AVR32_OPERAND_PICO_OUT1,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMUL2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
++ {
++ AVR32_OPERAND_PICO_OUT2,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOVMUL3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
++ NULL, 4,
++ {
++ AVR32_OPERAND_PICO_OUT3,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_IN,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLD_D2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
++ {
++ AVR32_OPERAND_PICO_REG_D,
++ AVR32_OPERAND_INTREG_PREDEC,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLD_D3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
++ {
++ AVR32_OPERAND_PICO_REG_D,
++ AVR32_OPERAND_INTREG_INDEX,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLD_D1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
++ NULL, 2,
++ {
++ AVR32_OPERAND_PICO_REG_D,
++ AVR32_OPERAND_INTREG_UDISP_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLD_W2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
++ {
++ AVR32_OPERAND_PICO_REG_W,
++ AVR32_OPERAND_INTREG_PREDEC,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLD_W3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
++ {
++ AVR32_OPERAND_PICO_REG_W,
++ AVR32_OPERAND_INTREG_INDEX,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLD_W1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
++ NULL, 2,
++ {
++ AVR32_OPERAND_PICO_REG_W,
++ AVR32_OPERAND_INTREG_UDISP_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLDM_D,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
++ {
++ AVR32_OPERAND_INTREG,
++ AVR32_OPERAND_PICO_REGLIST_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLDM_D_PU,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
++ NULL, -2,
++ {
++ AVR32_OPERAND_INTREG_POSTINC,
++ AVR32_OPERAND_PICO_REGLIST_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLDM_W,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
++ {
++ AVR32_OPERAND_INTREG,
++ AVR32_OPERAND_PICO_REGLIST_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOLDM_W_PU,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
++ NULL, -2,
++ {
++ AVR32_OPERAND_INTREG_POSTINC,
++ AVR32_OPERAND_PICO_REGLIST_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOMV_D1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
++ {
++ AVR32_OPERAND_DWREG,
++ AVR32_OPERAND_PICO_REG_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOMV_D2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
++ NULL, 2,
++ {
++ AVR32_OPERAND_PICO_REG_D,
++ AVR32_OPERAND_DWREG,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOMV_W1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
++ {
++ AVR32_OPERAND_INTREG,
++ AVR32_OPERAND_PICO_REG_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOMV_W2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
++ NULL, 2,
++ {
++ AVR32_OPERAND_PICO_REG_W,
++ AVR32_OPERAND_INTREG,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOST_D2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
++ {
++ AVR32_OPERAND_INTREG_POSTINC,
++ AVR32_OPERAND_PICO_REG_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOST_D3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
++ {
++ AVR32_OPERAND_INTREG_INDEX,
++ AVR32_OPERAND_PICO_REG_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOST_D1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
++ NULL, 2,
++ {
++ AVR32_OPERAND_INTREG_UDISP_W,
++ AVR32_OPERAND_PICO_REG_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOST_W2,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
++ {
++ AVR32_OPERAND_INTREG_POSTINC,
++ AVR32_OPERAND_PICO_REG_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOST_W3,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
++ {
++ AVR32_OPERAND_INTREG_INDEX,
++ AVR32_OPERAND_PICO_REG_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOST_W1,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
++ NULL, 2,
++ {
++ AVR32_OPERAND_INTREG_UDISP_W,
++ AVR32_OPERAND_PICO_REG_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSTM_D,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
++ {
++ AVR32_OPERAND_INTREG,
++ AVR32_OPERAND_PICO_REGLIST_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSTM_D_PU,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
++ NULL, -2,
++ {
++ AVR32_OPERAND_INTREG_PREDEC,
++ AVR32_OPERAND_PICO_REGLIST_D,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSTM_W,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
++ &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
++ {
++ AVR32_OPERAND_INTREG,
++ AVR32_OPERAND_PICO_REGLIST_W,
++ },
++ },
++ {
++ AVR32_SYNTAX_PICOSTM_W_PU,
++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
++ NULL, -2,
++ {
++ AVR32_OPERAND_INTREG_PREDEC,
++ AVR32_OPERAND_PICO_REGLIST_W,
++ },
++ },
++ };
++
++#define NORMAL_MNEMONIC(name, syntax, str) \
++ { \
++ AVR32_MNEMONIC_##name, str, \
++ &avr32_syntax_table[AVR32_SYNTAX_##syntax], \
++ }
++#define FP_MNEMONIC(name, syntax, str) \
++ NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"), \
++ NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
++
++const struct avr32_mnemonic avr32_mnemonic_table[] =
++ {
++ NORMAL_MNEMONIC(ABS, ABS, "abs"),
++ NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
++ NORMAL_MNEMONIC(ACR, ACR, "acr"),
++ NORMAL_MNEMONIC(ADC, ADC, "adc"),
++ NORMAL_MNEMONIC(ADD, ADD1, "add"),
++ NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
++ NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
++ NORMAL_MNEMONIC(AND, AND1, "and"),
++ NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
++ NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
++ NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
++ NORMAL_MNEMONIC(ASR, ASR1, "asr"),
++ NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
++ NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
++ NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
++ NORMAL_MNEMONIC(BLD, BLD, "bld"),
++ NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
++ NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
++ NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
++ NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
++ NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
++ NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
++ NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
++ NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
++ NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
++ NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
++ NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
++ NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
++ NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
++ NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
++ NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
++ NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
++ NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
++ NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
++ NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
++ NORMAL_MNEMONIC(BREV, BREV, "brev"),
++ NORMAL_MNEMONIC(BST, BST, "bst"),
++ NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
++ NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
++ NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
++ NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
++ NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
++ NORMAL_MNEMONIC(CBR, CBR, "cbr"),
++ NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
++ NORMAL_MNEMONIC(COM, COM, "com"),
++ NORMAL_MNEMONIC(COP, COP, "cop"),
++ NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
++ NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
++ NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
++ NORMAL_MNEMONIC(CP, CP_W1, "cp"),
++ NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
++ NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
++ NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
++ NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
++ NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
++ NORMAL_MNEMONIC(EOR, EOR1, "eor"),
++ NORMAL_MNEMONIC(EORL, EORL, "eorl"),
++ NORMAL_MNEMONIC(EORH, EORH, "eorh"),
++ NORMAL_MNEMONIC(FRS, FRS, "frs"),
++ NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
++ NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
++ NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
++ NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
++ NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
++ NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
++ NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
++ NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
++ NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
++ NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
++ NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
++ NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
++ NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
++ NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
++ NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
++ NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
++ NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
++ NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
++ NORMAL_MNEMONIC(LDM, LDM, "ldm"),
++ NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
++ NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
++ NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
++ NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
++ NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
++ NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
++ NORMAL_MNEMONIC(MAC, MAC, "mac"),
++ NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
++ NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
++ NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
++ NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
++ NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
++ NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
++ NORMAL_MNEMONIC(MAX, MAX, "max"),
++ NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
++ NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
++ NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
++ NORMAL_MNEMONIC(MIN, MIN, "min"),
++ NORMAL_MNEMONIC(MOV, MOV3, "mov"),
++ NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
++ NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
++ NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
++ NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
++ NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
++ NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
++ NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
++ NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
++ NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
++ NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
++ NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
++ NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
++ NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
++ NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
++ NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
++ NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
++ NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
++ NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
++ NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
++ NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
++ NORMAL_MNEMONIC(MUL, MUL1, "mul"),
++ NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
++ NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
++ NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
++ NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
++ NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
++ NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
++ NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
++ NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
++ NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
++ NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
++ NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
++ NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
++ NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
++ NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
++ NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
++ NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
++ NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
++ NORMAL_MNEMONIC(NEG, NEG, "neg"),
++ NORMAL_MNEMONIC(NOP, NOP, "nop"),
++ NORMAL_MNEMONIC(OR, OR1, "or"),
++ NORMAL_MNEMONIC(ORH, ORH, "orh"),
++ NORMAL_MNEMONIC(ORL, ORL, "orl"),
++ NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
++ NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
++ NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
++ NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
++ NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
++ NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
++ NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
++ NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
++ NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
++ NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
++ NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
++ NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
++ NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
++ NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
++ NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
++ NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
++ NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
++ NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
++ NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
++ NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
++ NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
++ NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
++ NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
++ NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
++ NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
++ NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
++ NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
++ NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
++ NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
++ NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
++ NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
++ NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
++ NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
++ NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
++ NORMAL_MNEMONIC(POPM, POPM, "popm"),
++ NORMAL_MNEMONIC(PREF, PREF, "pref"),
++ NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
++ NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
++ NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
++ NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
++ NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
++ NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
++ NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
++ NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
++ NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
++ NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
++ NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
++ NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
++ NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
++ NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
++ NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
++ NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
++ NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
++ NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
++ NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
++ NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
++ NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
++ NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
++ NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
++ NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
++ NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
++ NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
++ NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
++ NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
++ NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
++ NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
++ NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
++ NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
++ NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
++ NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
++ NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
++ NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
++ NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
++ NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
++ NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
++ NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
++ NORMAL_MNEMONIC(RET, RETAL, "ret"),
++ NORMAL_MNEMONIC(RETD, RETD, "retd"),
++ NORMAL_MNEMONIC(RETE, RETE, "rete"),
++ NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
++ NORMAL_MNEMONIC(RETS, RETS, "rets"),
++ NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
++ NORMAL_MNEMONIC(ROL, ROL, "rol"),
++ NORMAL_MNEMONIC(ROR, ROR, "ror"),
++ NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
++ NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
++ NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
++ NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
++ NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
++ NORMAL_MNEMONIC(SATS, SATS, "sats"),
++ NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
++ NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
++ NORMAL_MNEMONIC(SATU, SATU, "satu"),
++ NORMAL_MNEMONIC(SBC, SBC, "sbc"),
++ NORMAL_MNEMONIC(SBR, SBR, "sbr"),
++ NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
++ NORMAL_MNEMONIC(SCR, SCR, "scr"),
++ NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
++ NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
++ NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
++ NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
++ NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
++ NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
++ NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
++ NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
++ NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
++ NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
++ NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
++ NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
++ NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
++ NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
++ NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
++ NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
++ NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
++ NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
++ NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
++ NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
++ NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
++ NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
++ NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
++ NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
++ NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
++ NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
++ NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
++ NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
++ NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
++ NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
++ NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
++ NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
++ NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
++ NORMAL_MNEMONIC(STM, STM, "stm"),
++ NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
++ NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
++ NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
++ NORMAL_MNEMONIC(SUB, SUB1, "sub"),
++ NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
++ NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
++ NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
++ NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
++ NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
++ NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
++ NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
++ NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
++ NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
++ NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
++ NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
++ NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
++ NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
++ NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
++ NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
++ NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
++ NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
++ NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
++ NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
++ NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
++ NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
++ NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
++ NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
++ NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
++ NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
++ NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
++ NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
++ NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
++ NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
++ NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
++ NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
++ NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
++ NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
++ NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
++ NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
++ NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
++ NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
++ NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
++ NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
++ NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
++ NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
++ NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
++ NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
++ NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
++ NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
++ NORMAL_MNEMONIC(TST, TST, "tst"),
++ NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
++ NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
++ NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
++ NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
++ FP_MNEMONIC(FADD, FADD, "fadd"),
++ FP_MNEMONIC(FSUB, FSUB, "fsub"),
++ FP_MNEMONIC(FMAC, FMAC, "fmac"),
++ FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
++ FP_MNEMONIC(FMSC, FMSC, "fmsc"),
++ FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
++ FP_MNEMONIC(FMUL, FMUL, "fmul"),
++ FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
++ FP_MNEMONIC(FNEG, FNEG, "fneg"),
++ FP_MNEMONIC(FABS, FABS, "fabs"),
++ FP_MNEMONIC(FCMP, FCMP, "fcmp"),
++ FP_MNEMONIC(FMOV, FMOV1, "fmov"),
++ NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
++ NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
++ NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
++ NORMAL_MNEMONIC(CALL, CALL, "call"),
++ NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
++ NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
++ NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
++ NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
++ NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
++ NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
++ NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
++ NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
++ NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
++ NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
++ NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
++ NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
++ NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
++ NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
++ };
++#undef NORMAL_MNEMONIC
++#undef ALIAS_MNEMONIC
++#undef FP_MNEMONIC
+diff -Nrup binutils-2.17/opcodes/avr32-opc.h binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.h
+--- binutils-2.17/opcodes/avr32-opc.h 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.h 2007-03-26 10:20:34.000000000 +0200
+@@ -0,0 +1,1655 @@
++/* Opcode tables for AVR32.
++ Copyright 2005, 2006 Atmel Corporation.
++
++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
++
++ This file is part of libopcodes.
++
++ 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. */
++
++#include "bfd.h"
++
++#define AVR32_MAX_OPERANDS 8
++#define AVR32_MAX_FIELDS 8
++
++#define AVR32_V1 (1 << 1)
++#define AVR32_SIMD (1 << 2)
++#define AVR32_DSP (1 << 3)
++#define AVR32_RMW (1 << 4)
++#define AVR32_FP (1 << 16)
++#define AVR32_PICO (1 << 17)
++
++/* Registers we commonly refer to */
++#define AVR32_REG_R12 12
++#define AVR32_REG_SP 13
++#define AVR32_REG_LR 14
++#define AVR32_REG_PC 15
++
++struct avr32_ifield
++{
++ int id;
++ unsigned short bitsize;
++ unsigned short shift;
++ unsigned long mask;
++
++ /* If the value doesn't fit, it will be truncated with no warning */
++ void (*insert)(const struct avr32_ifield *, void *, unsigned long);
++ void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
++};
++
++struct avr32_opcode
++{
++ int id;
++ int size;
++ unsigned long value;
++ unsigned long mask;
++ const struct avr32_syntax *syntax;
++ bfd_reloc_code_real_type reloc_type;
++ unsigned int nr_fields;
++ /* if relaxable, which field is variable, otherwise -1 */
++ int var_field;
++ const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
++};
++
++struct avr32_alias
++{
++ int id;
++ const struct avr32_opcode *opc;
++ struct {
++ int is_opindex;
++ unsigned long value;
++ } operand_map[AVR32_MAX_OPERANDS];
++};
++
++struct avr32_syntax
++{
++ int id;
++ unsigned long isa_flags;
++ const struct avr32_mnemonic *mnemonic;
++ int type;
++ union {
++ const struct avr32_opcode *opc;
++ const struct avr32_alias *alias;
++ } u;
++ const struct avr32_syntax *next;
++ /* negative means "vararg" */
++ int nr_operands;
++ int operand[AVR32_MAX_OPERANDS];
++};
++
++#if 0
++#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
++#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
++#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
++#endif
++
++struct avr32_mnemonic
++{
++ int id;
++ const char *name;
++ const struct avr32_syntax *syntax;
++};
++
++extern const struct avr32_ifield avr32_ifield_table[];
++extern struct avr32_opcode avr32_opc_table[];
++extern const struct avr32_syntax avr32_syntax_table[];
++extern const struct avr32_alias avr32_alias_table[];
++extern const struct avr32_mnemonic avr32_mnemonic_table[];
++
++extern void avr32_insert_simple(const struct avr32_ifield *field,
++ void *buf, unsigned long value);
++extern void avr32_insert_bit5c(const struct avr32_ifield *field,
++ void *buf, unsigned long value);
++extern void avr32_insert_k10(const struct avr32_ifield *field,
++ void *buf, unsigned long value);
++extern void avr32_insert_k21(const struct avr32_ifield *field,
++ void *buf, unsigned long value);
++extern void avr32_insert_cpop(const struct avr32_ifield *field,
++ void *buf, unsigned long value);
++extern void avr32_insert_k12cp(const struct avr32_ifield *field,
++ void *buf, unsigned long value);
++
++extern void avr32_extract_simple(const struct avr32_ifield *field,
++ void *buf, unsigned long *value);
++extern void avr32_extract_bit5c(const struct avr32_ifield *field,
++ void *buf, unsigned long *value);
++extern void avr32_extract_k10(const struct avr32_ifield *field,
++ void *buf, unsigned long *value);
++extern void avr32_extract_k21(const struct avr32_ifield *field,
++ void *buf, unsigned long *value);
++extern void avr32_extract_cpop(const struct avr32_ifield *field,
++ void *buf, unsigned long *value);
++extern void avr32_extract_k12cp(const struct avr32_ifield *field,
++ void *buf, unsigned long *value);
++
++enum avr32_operand_type
++{
++ AVR32_OPERAND_INTREG, /* just a register */
++ AVR32_OPERAND_INTREG_PREDEC, /* register with pre-decrement */
++ AVR32_OPERAND_INTREG_POSTINC, /* register with post-increment */
++ AVR32_OPERAND_INTREG_LSL, /* register with left shift */
++ AVR32_OPERAND_INTREG_LSR, /* register with right shift */
++ AVR32_OPERAND_INTREG_BSEL, /* register with byte selector */
++ AVR32_OPERAND_INTREG_HSEL, /* register with halfword selector */
++ AVR32_OPERAND_INTREG_SDISP, /* Rp[signed disp] */
++ AVR32_OPERAND_INTREG_SDISP_H, /* Rp[signed hword-aligned disp] */
++ AVR32_OPERAND_INTREG_SDISP_W, /* Rp[signed word-aligned disp] */
++ AVR32_OPERAND_INTREG_UDISP, /* Rp[unsigned disp] */
++ AVR32_OPERAND_INTREG_UDISP_H, /* Rp[unsigned hword-aligned disp] */
++ AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
++ AVR32_OPERAND_INTREG_INDEX, /* Rp[Ri << sa] */
++ AVR32_OPERAND_INTREG_XINDEX, /* Rp[Ri:bytesel << 2] */
++ AVR32_OPERAND_DWREG, /* Even-numbered register */
++ AVR32_OPERAND_PC_UDISP_W, /* PC[unsigned word-aligned disp] or label */
++ AVR32_OPERAND_SP, /* Just SP */
++ AVR32_OPERAND_SP_UDISP_W, /* SP[unsigned word-aligned disp] */
++ AVR32_OPERAND_CPNO,
++ AVR32_OPERAND_CPREG,
++ AVR32_OPERAND_CPREG_D,
++ AVR32_OPERAND_UNSIGNED_CONST,
++ AVR32_OPERAND_UNSIGNED_CONST_W,
++ AVR32_OPERAND_SIGNED_CONST,
++ AVR32_OPERAND_SIGNED_CONST_W,
++ AVR32_OPERAND_JMPLABEL,
++ AVR32_OPERAND_UNSIGNED_NUMBER,
++ AVR32_OPERAND_UNSIGNED_NUMBER_W,
++ AVR32_OPERAND_REGLIST8,
++ AVR32_OPERAND_REGLIST9,
++ AVR32_OPERAND_REGLIST16,
++ AVR32_OPERAND_REGLIST_LDM,
++ AVR32_OPERAND_REGLIST_CP8,
++ AVR32_OPERAND_REGLIST_CPD8,
++ AVR32_OPERAND_RETVAL,
++ AVR32_OPERAND_MCALL,
++ AVR32_OPERAND_JOSPINC,
++ AVR32_OPERAND_COH,
++ AVR32_OPERAND_FPREG_S,
++ AVR32_OPERAND_FPREG_D,
++ AVR32_OPERAND_PICO_REG_W,
++ AVR32_OPERAND_PICO_REG_D,
++ AVR32_OPERAND_PICO_REGLIST_W,
++ AVR32_OPERAND_PICO_REGLIST_D,
++ AVR32_OPERAND_PICO_IN,
++ AVR32_OPERAND_PICO_OUT0,
++ AVR32_OPERAND_PICO_OUT1,
++ AVR32_OPERAND_PICO_OUT2,
++ AVR32_OPERAND_PICO_OUT3,
++ AVR32_OPERAND__END_
++};
++#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
++#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
++
++enum avr32_ifield_type
++{
++ AVR32_IFIELD_RX,
++ AVR32_IFIELD_RY,
++ AVR32_IFIELD_COND4C,
++ AVR32_IFIELD_K8C,
++ AVR32_IFIELD_K7C,
++ AVR32_IFIELD_K5C,
++ AVR32_IFIELD_K3,
++ AVR32_IFIELD_RY_DW,
++ AVR32_IFIELD_COND4E,
++ AVR32_IFIELD_K8E,
++ AVR32_IFIELD_BIT5C,
++ AVR32_IFIELD_COND3,
++ AVR32_IFIELD_K10,
++ AVR32_IFIELD_POPM,
++ AVR32_IFIELD_K2,
++ AVR32_IFIELD_RD_E,
++ AVR32_IFIELD_RD_DW,
++ AVR32_IFIELD_X,
++ AVR32_IFIELD_Y,
++ AVR32_IFIELD_X2,
++ AVR32_IFIELD_Y2,
++ AVR32_IFIELD_K5E,
++ AVR32_IFIELD_PART2,
++ AVR32_IFIELD_PART1,
++ AVR32_IFIELD_K16,
++ AVR32_IFIELD_CACHEOP,
++ AVR32_IFIELD_K11,
++ AVR32_IFIELD_K21,
++ AVR32_IFIELD_CPOP,
++ AVR32_IFIELD_CPNO,
++ AVR32_IFIELD_CRD_RI,
++ AVR32_IFIELD_CRX,
++ AVR32_IFIELD_CRY,
++ AVR32_IFIELD_K7E,
++ AVR32_IFIELD_CRD_DW,
++ AVR32_IFIELD_PART1_K12,
++ AVR32_IFIELD_PART2_K12,
++ AVR32_IFIELD_K12,
++ AVR32_IFIELD_S5,
++ AVR32_IFIELD_K5E2,
++ AVR32_IFIELD_K4,
++ AVR32_IFIELD_COND4E2,
++ AVR32_IFIELD_K8E2,
++ AVR32_IFIELD_K6,
++ AVR32_IFIELD_MEM15,
++ AVR32_IFIELD_MEMB5,
++ AVR32_IFIELD_W,
++ AVR32_IFIELD_CM_HL,
++ AVR32_IFIELD_K12CP,
++ AVR32_IFIELD__END_,
++};
++#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
++
++enum avr32_opc_type
++{
++ AVR32_OPC_ABS,
++ AVR32_OPC_ACALL,
++ AVR32_OPC_ACR,
++ AVR32_OPC_ADC,
++ AVR32_OPC_ADD1,
++ AVR32_OPC_ADD2,
++ AVR32_OPC_ADDABS,
++ AVR32_OPC_ADDHH_W,
++ AVR32_OPC_AND1,
++ AVR32_OPC_AND2,
++ AVR32_OPC_AND3,
++ AVR32_OPC_ANDH,
++ AVR32_OPC_ANDH_COH,
++ AVR32_OPC_ANDL,
++ AVR32_OPC_ANDL_COH,
++ AVR32_OPC_ANDN,
++ AVR32_OPC_ASR1,
++ AVR32_OPC_ASR3,
++ AVR32_OPC_ASR2,
++ AVR32_OPC_BLD,
++ AVR32_OPC_BREQ1,
++ AVR32_OPC_BRNE1,
++ AVR32_OPC_BRCC1,
++ AVR32_OPC_BRCS1,
++ AVR32_OPC_BRGE1,
++ AVR32_OPC_BRLT1,
++ AVR32_OPC_BRMI1,
++ AVR32_OPC_BRPL1,
++ AVR32_OPC_BREQ2,
++ AVR32_OPC_BRNE2,
++ AVR32_OPC_BRCC2,
++ AVR32_OPC_BRCS2,
++ AVR32_OPC_BRGE2,
++ AVR32_OPC_BRLT2,
++ AVR32_OPC_BRMI2,
++ AVR32_OPC_BRPL2,
++ AVR32_OPC_BRLS,
++ AVR32_OPC_BRGT,
++ AVR32_OPC_BRLE,
++ AVR32_OPC_BRHI,
++ AVR32_OPC_BRVS,
++ AVR32_OPC_BRVC,
++ AVR32_OPC_BRQS,
++ AVR32_OPC_BRAL,
++ AVR32_OPC_BREAKPOINT,
++ AVR32_OPC_BREV,
++ AVR32_OPC_BST,
++ AVR32_OPC_CACHE,
++ AVR32_OPC_CASTS_B,
++ AVR32_OPC_CASTS_H,
++ AVR32_OPC_CASTU_B,
++ AVR32_OPC_CASTU_H,
++ AVR32_OPC_CBR,
++ AVR32_OPC_CLZ,
++ AVR32_OPC_COM,
++ AVR32_OPC_COP,
++ AVR32_OPC_CP_B,
++ AVR32_OPC_CP_H,
++ AVR32_OPC_CP_W1,
++ AVR32_OPC_CP_W2,
++ AVR32_OPC_CP_W3,
++ AVR32_OPC_CPC1,
++ AVR32_OPC_CPC2,
++ AVR32_OPC_CSRF,
++ AVR32_OPC_CSRFCZ,
++ AVR32_OPC_DIVS,
++ AVR32_OPC_DIVU,
++ AVR32_OPC_EOR1,
++ AVR32_OPC_EOR2,
++ AVR32_OPC_EOR3,
++ AVR32_OPC_EORL,
++ AVR32_OPC_EORH,
++ AVR32_OPC_FRS,
++ AVR32_OPC_ICALL,
++ AVR32_OPC_INCJOSP,
++ AVR32_OPC_LD_D1,
++ AVR32_OPC_LD_D2,
++ AVR32_OPC_LD_D3,
++ AVR32_OPC_LD_D5,
++ AVR32_OPC_LD_D4,
++ AVR32_OPC_LD_SB2,
++ AVR32_OPC_LD_SB1,
++ AVR32_OPC_LD_UB1,
++ AVR32_OPC_LD_UB2,
++ AVR32_OPC_LD_UB5,
++ AVR32_OPC_LD_UB3,
++ AVR32_OPC_LD_UB4,
++ AVR32_OPC_LD_SH1,
++ AVR32_OPC_LD_SH2,
++ AVR32_OPC_LD_SH5,
++ AVR32_OPC_LD_SH3,
++ AVR32_OPC_LD_SH4,
++ AVR32_OPC_LD_UH1,
++ AVR32_OPC_LD_UH2,
++ AVR32_OPC_LD_UH5,
++ AVR32_OPC_LD_UH3,
++ AVR32_OPC_LD_UH4,
++ AVR32_OPC_LD_W1,
++ AVR32_OPC_LD_W2,
++ AVR32_OPC_LD_W5,
++ AVR32_OPC_LD_W6,
++ AVR32_OPC_LD_W3,
++ AVR32_OPC_LD_W4,
++ AVR32_OPC_LDC_D1,
++ AVR32_OPC_LDC_D2,
++ AVR32_OPC_LDC_D3,
++ AVR32_OPC_LDC_W1,
++ AVR32_OPC_LDC_W2,
++ AVR32_OPC_LDC_W3,
++ AVR32_OPC_LDC0_D,
++ AVR32_OPC_LDC0_W,
++ AVR32_OPC_LDCM_D,
++ AVR32_OPC_LDCM_D_PU,
++ AVR32_OPC_LDCM_W,
++ AVR32_OPC_LDCM_W_PU,
++ AVR32_OPC_LDDPC,
++ AVR32_OPC_LDDPC_EXT,
++ AVR32_OPC_LDDSP,
++ AVR32_OPC_LDINS_B,
++ AVR32_OPC_LDINS_H,
++ AVR32_OPC_LDM,
++ AVR32_OPC_LDMTS,
++ AVR32_OPC_LDMTS_PU,
++ AVR32_OPC_LDSWP_SH,
++ AVR32_OPC_LDSWP_UH,
++ AVR32_OPC_LDSWP_W,
++ AVR32_OPC_LSL1,
++ AVR32_OPC_LSL3,
++ AVR32_OPC_LSL2,
++ AVR32_OPC_LSR1,
++ AVR32_OPC_LSR3,
++ AVR32_OPC_LSR2,
++ AVR32_OPC_MAC,
++ AVR32_OPC_MACHH_D,
++ AVR32_OPC_MACHH_W,
++ AVR32_OPC_MACS_D,
++ AVR32_OPC_MACSATHH_W,
++ AVR32_OPC_MACUD,
++ AVR32_OPC_MACWH_D,
++ AVR32_OPC_MAX,
++ AVR32_OPC_MCALL,
++ AVR32_OPC_MFDR,
++ AVR32_OPC_MFSR,
++ AVR32_OPC_MIN,
++ AVR32_OPC_MOV3,
++ AVR32_OPC_MOV1,
++ AVR32_OPC_MOV2,
++ AVR32_OPC_MOVEQ1,
++ AVR32_OPC_MOVNE1,
++ AVR32_OPC_MOVCC1,
++ AVR32_OPC_MOVCS1,
++ AVR32_OPC_MOVGE1,
++ AVR32_OPC_MOVLT1,
++ AVR32_OPC_MOVMI1,
++ AVR32_OPC_MOVPL1,
++ AVR32_OPC_MOVLS1,
++ AVR32_OPC_MOVGT1,
++ AVR32_OPC_MOVLE1,
++ AVR32_OPC_MOVHI1,
++ AVR32_OPC_MOVVS1,
++ AVR32_OPC_MOVVC1,
++ AVR32_OPC_MOVQS1,
++ AVR32_OPC_MOVAL1,
++ AVR32_OPC_MOVEQ2,
++ AVR32_OPC_MOVNE2,
++ AVR32_OPC_MOVCC2,
++ AVR32_OPC_MOVCS2,
++ AVR32_OPC_MOVGE2,
++ AVR32_OPC_MOVLT2,
++ AVR32_OPC_MOVMI2,
++ AVR32_OPC_MOVPL2,
++ AVR32_OPC_MOVLS2,
++ AVR32_OPC_MOVGT2,
++ AVR32_OPC_MOVLE2,
++ AVR32_OPC_MOVHI2,
++ AVR32_OPC_MOVVS2,
++ AVR32_OPC_MOVVC2,
++ AVR32_OPC_MOVQS2,
++ AVR32_OPC_MOVAL2,
++ AVR32_OPC_MTDR,
++ AVR32_OPC_MTSR,
++ AVR32_OPC_MUL1,
++ AVR32_OPC_MUL2,
++ AVR32_OPC_MUL3,
++ AVR32_OPC_MULHH_W,
++ AVR32_OPC_MULNHH_W,
++ AVR32_OPC_MULNWH_D,
++ AVR32_OPC_MULSD,
++ AVR32_OPC_MULSATHH_H,
++ AVR32_OPC_MULSATHH_W,
++ AVR32_OPC_MULSATRNDHH_H,
++ AVR32_OPC_MULSATRNDWH_W,
++ AVR32_OPC_MULSATWH_W,
++ AVR32_OPC_MULU_D,
++ AVR32_OPC_MULWH_D,
++ AVR32_OPC_MUSFR,
++ AVR32_OPC_MUSTR,
++ AVR32_OPC_MVCR_D,
++ AVR32_OPC_MVCR_W,
++ AVR32_OPC_MVRC_D,
++ AVR32_OPC_MVRC_W,
++ AVR32_OPC_NEG,
++ AVR32_OPC_NOP,
++ AVR32_OPC_OR1,
++ AVR32_OPC_OR2,
++ AVR32_OPC_OR3,
++ AVR32_OPC_ORH,
++ AVR32_OPC_ORL,
++ AVR32_OPC_PABS_SB,
++ AVR32_OPC_PABS_SH,
++ AVR32_OPC_PACKSH_SB,
++ AVR32_OPC_PACKSH_UB,
++ AVR32_OPC_PACKW_SH,
++ AVR32_OPC_PADD_B,
++ AVR32_OPC_PADD_H,
++ AVR32_OPC_PADDH_SH,
++ AVR32_OPC_PADDH_UB,
++ AVR32_OPC_PADDS_SB,
++ AVR32_OPC_PADDS_SH,
++ AVR32_OPC_PADDS_UB,
++ AVR32_OPC_PADDS_UH,
++ AVR32_OPC_PADDSUB_H,
++ AVR32_OPC_PADDSUBH_SH,
++ AVR32_OPC_PADDSUBS_SH,
++ AVR32_OPC_PADDSUBS_UH,
++ AVR32_OPC_PADDX_H,
++ AVR32_OPC_PADDXH_SH,
++ AVR32_OPC_PADDXS_SH,
++ AVR32_OPC_PADDXS_UH,
++ AVR32_OPC_PASR_B,
++ AVR32_OPC_PASR_H,
++ AVR32_OPC_PAVG_SH,
++ AVR32_OPC_PAVG_UB,
++ AVR32_OPC_PLSL_B,
++ AVR32_OPC_PLSL_H,
++ AVR32_OPC_PLSR_B,
++ AVR32_OPC_PLSR_H,
++ AVR32_OPC_PMAX_SH,
++ AVR32_OPC_PMAX_UB,
++ AVR32_OPC_PMIN_SH,
++ AVR32_OPC_PMIN_UB,
++ AVR32_OPC_POPJC,
++ AVR32_OPC_POPM,
++ AVR32_OPC_POPM_E,
++ AVR32_OPC_PREF,
++ AVR32_OPC_PSAD,
++ AVR32_OPC_PSUB_B,
++ AVR32_OPC_PSUB_H,
++ AVR32_OPC_PSUBADD_H,
++ AVR32_OPC_PSUBADDH_SH,
++ AVR32_OPC_PSUBADDS_SH,
++ AVR32_OPC_PSUBADDS_UH,
++ AVR32_OPC_PSUBH_SH,
++ AVR32_OPC_PSUBH_UB,
++ AVR32_OPC_PSUBS_SB,
++ AVR32_OPC_PSUBS_SH,
++ AVR32_OPC_PSUBS_UB,
++ AVR32_OPC_PSUBS_UH,
++ AVR32_OPC_PSUBX_H,
++ AVR32_OPC_PSUBXH_SH,
++ AVR32_OPC_PSUBXS_SH,
++ AVR32_OPC_PSUBXS_UH,
++ AVR32_OPC_PUNPCKSB_H,
++ AVR32_OPC_PUNPCKUB_H,
++ AVR32_OPC_PUSHJC,
++ AVR32_OPC_PUSHM,
++ AVR32_OPC_PUSHM_E,
++ AVR32_OPC_RCALL1,
++ AVR32_OPC_RCALL2,
++ AVR32_OPC_RETEQ,
++ AVR32_OPC_RETNE,
++ AVR32_OPC_RETCC,
++ AVR32_OPC_RETCS,
++ AVR32_OPC_RETGE,
++ AVR32_OPC_RETLT,
++ AVR32_OPC_RETMI,
++ AVR32_OPC_RETPL,
++ AVR32_OPC_RETLS,
++ AVR32_OPC_RETGT,
++ AVR32_OPC_RETLE,
++ AVR32_OPC_RETHI,
++ AVR32_OPC_RETVS,
++ AVR32_OPC_RETVC,
++ AVR32_OPC_RETQS,
++ AVR32_OPC_RETAL,
++ AVR32_OPC_RETD,
++ AVR32_OPC_RETE,
++ AVR32_OPC_RETJ,
++ AVR32_OPC_RETS,
++ AVR32_OPC_RJMP,
++ AVR32_OPC_ROL,
++ AVR32_OPC_ROR,
++ AVR32_OPC_RSUB1,
++ AVR32_OPC_RSUB2,
++ AVR32_OPC_SATADD_H,
++ AVR32_OPC_SATADD_W,
++ AVR32_OPC_SATRNDS,
++ AVR32_OPC_SATRNDU,
++ AVR32_OPC_SATS,
++ AVR32_OPC_SATSUB_H,
++ AVR32_OPC_SATSUB_W1,
++ AVR32_OPC_SATSUB_W2,
++ AVR32_OPC_SATU,
++ AVR32_OPC_SBC,
++ AVR32_OPC_SBR,
++ AVR32_OPC_SCALL,
++ AVR32_OPC_SCR,
++ AVR32_OPC_SLEEP,
++ AVR32_OPC_SREQ,
++ AVR32_OPC_SRNE,
++ AVR32_OPC_SRCC,
++ AVR32_OPC_SRCS,
++ AVR32_OPC_SRGE,
++ AVR32_OPC_SRLT,
++ AVR32_OPC_SRMI,
++ AVR32_OPC_SRPL,
++ AVR32_OPC_SRLS,
++ AVR32_OPC_SRGT,
++ AVR32_OPC_SRLE,
++ AVR32_OPC_SRHI,
++ AVR32_OPC_SRVS,
++ AVR32_OPC_SRVC,
++ AVR32_OPC_SRQS,
++ AVR32_OPC_SRAL,
++ AVR32_OPC_SSRF,
++ AVR32_OPC_ST_B1,
++ AVR32_OPC_ST_B2,
++ AVR32_OPC_ST_B5,
++ AVR32_OPC_ST_B3,
++ AVR32_OPC_ST_B4,
++ AVR32_OPC_ST_D1,
++ AVR32_OPC_ST_D2,
++ AVR32_OPC_ST_D3,
++ AVR32_OPC_ST_D5,
++ AVR32_OPC_ST_D4,
++ AVR32_OPC_ST_H1,
++ AVR32_OPC_ST_H2,
++ AVR32_OPC_ST_H5,
++ AVR32_OPC_ST_H3,
++ AVR32_OPC_ST_H4,
++ AVR32_OPC_ST_W1,
++ AVR32_OPC_ST_W2,
++ AVR32_OPC_ST_W5,
++ AVR32_OPC_ST_W3,
++ AVR32_OPC_ST_W4,
++ AVR32_OPC_STC_D1,
++ AVR32_OPC_STC_D2,
++ AVR32_OPC_STC_D3,
++ AVR32_OPC_STC_W1,
++ AVR32_OPC_STC_W2,
++ AVR32_OPC_STC_W3,
++ AVR32_OPC_STC0_D,
++ AVR32_OPC_STC0_W,
++ AVR32_OPC_STCM_D,
++ AVR32_OPC_STCM_D_PU,
++ AVR32_OPC_STCM_W,
++ AVR32_OPC_STCM_W_PU,
++ AVR32_OPC_STCOND,
++ AVR32_OPC_STDSP,
++ AVR32_OPC_STHH_W2,
++ AVR32_OPC_STHH_W1,
++ AVR32_OPC_STM,
++ AVR32_OPC_STM_PU,
++ AVR32_OPC_STMTS,
++ AVR32_OPC_STMTS_PU,
++ AVR32_OPC_STSWP_H,
++ AVR32_OPC_STSWP_W,
++ AVR32_OPC_SUB1,
++ AVR32_OPC_SUB2,
++ AVR32_OPC_SUB5,
++ AVR32_OPC_SUB3_SP,
++ AVR32_OPC_SUB3,
++ AVR32_OPC_SUB4,
++ AVR32_OPC_SUBEQ,
++ AVR32_OPC_SUBNE,
++ AVR32_OPC_SUBCC,
++ AVR32_OPC_SUBCS,
++ AVR32_OPC_SUBGE,
++ AVR32_OPC_SUBLT,
++ AVR32_OPC_SUBMI,
++ AVR32_OPC_SUBPL,
++ AVR32_OPC_SUBLS,
++ AVR32_OPC_SUBGT,
++ AVR32_OPC_SUBLE,
++ AVR32_OPC_SUBHI,
++ AVR32_OPC_SUBVS,
++ AVR32_OPC_SUBVC,
++ AVR32_OPC_SUBQS,
++ AVR32_OPC_SUBAL,
++ AVR32_OPC_SUBFEQ,
++ AVR32_OPC_SUBFNE,
++ AVR32_OPC_SUBFCC,
++ AVR32_OPC_SUBFCS,
++ AVR32_OPC_SUBFGE,
++ AVR32_OPC_SUBFLT,
++ AVR32_OPC_SUBFMI,
++ AVR32_OPC_SUBFPL,
++ AVR32_OPC_SUBFLS,
++ AVR32_OPC_SUBFGT,
++ AVR32_OPC_SUBFLE,
++ AVR32_OPC_SUBFHI,
++ AVR32_OPC_SUBFVS,
++ AVR32_OPC_SUBFVC,
++ AVR32_OPC_SUBFQS,
++ AVR32_OPC_SUBFAL,
++ AVR32_OPC_SUBHH_W,
++ AVR32_OPC_SWAP_B,
++ AVR32_OPC_SWAP_BH,
++ AVR32_OPC_SWAP_H,
++ AVR32_OPC_SYNC,
++ AVR32_OPC_TLBR,
++ AVR32_OPC_TLBS,
++ AVR32_OPC_TLBW,
++ AVR32_OPC_TNBZ,
++ AVR32_OPC_TST,
++ AVR32_OPC_XCHG,
++ AVR32_OPC_MEMC,
++ AVR32_OPC_MEMS,
++ AVR32_OPC_MEMT,
++ AVR32_OPC_BFEXTS,
++ AVR32_OPC_BFEXTU,
++ AVR32_OPC_BFINS,
++ AVR32_OPC__END_
++};
++#define AVR32_NR_OPCODES AVR32_OPC__END_
++
++enum avr32_syntax_type
++{
++ AVR32_SYNTAX_ABS,
++ AVR32_SYNTAX_ACALL,
++ AVR32_SYNTAX_ACR,
++ AVR32_SYNTAX_ADC,
++ AVR32_SYNTAX_ADD1,
++ AVR32_SYNTAX_ADD2,
++ AVR32_SYNTAX_ADDABS,
++ AVR32_SYNTAX_ADDHH_W,
++ AVR32_SYNTAX_AND1,
++ AVR32_SYNTAX_AND2,
++ AVR32_SYNTAX_AND3,
++ AVR32_SYNTAX_ANDH,
++ AVR32_SYNTAX_ANDH_COH,
++ AVR32_SYNTAX_ANDL,
++ AVR32_SYNTAX_ANDL_COH,
++ AVR32_SYNTAX_ANDN,
++ AVR32_SYNTAX_ASR1,
++ AVR32_SYNTAX_ASR3,
++ AVR32_SYNTAX_ASR2,
++ AVR32_SYNTAX_BFEXTS,
++ AVR32_SYNTAX_BFEXTU,
++ AVR32_SYNTAX_BFINS,
++ AVR32_SYNTAX_BLD,
++ AVR32_SYNTAX_BREQ1,
++ AVR32_SYNTAX_BRNE1,
++ AVR32_SYNTAX_BRCC1,
++ AVR32_SYNTAX_BRCS1,
++ AVR32_SYNTAX_BRGE1,
++ AVR32_SYNTAX_BRLT1,
++ AVR32_SYNTAX_BRMI1,
++ AVR32_SYNTAX_BRPL1,
++ AVR32_SYNTAX_BRHS1,
++ AVR32_SYNTAX_BRLO1,
++ AVR32_SYNTAX_BREQ2,
++ AVR32_SYNTAX_BRNE2,
++ AVR32_SYNTAX_BRCC2,
++ AVR32_SYNTAX_BRCS2,
++ AVR32_SYNTAX_BRGE2,
++ AVR32_SYNTAX_BRLT2,
++ AVR32_SYNTAX_BRMI2,
++ AVR32_SYNTAX_BRPL2,
++ AVR32_SYNTAX_BRLS,
++ AVR32_SYNTAX_BRGT,
++ AVR32_SYNTAX_BRLE,
++ AVR32_SYNTAX_BRHI,
++ AVR32_SYNTAX_BRVS,
++ AVR32_SYNTAX_BRVC,
++ AVR32_SYNTAX_BRQS,
++ AVR32_SYNTAX_BRAL,
++ AVR32_SYNTAX_BRHS2,
++ AVR32_SYNTAX_BRLO2,
++ AVR32_SYNTAX_BREAKPOINT,
++ AVR32_SYNTAX_BREV,
++ AVR32_SYNTAX_BST,
++ AVR32_SYNTAX_CACHE,
++ AVR32_SYNTAX_CASTS_B,
++ AVR32_SYNTAX_CASTS_H,
++ AVR32_SYNTAX_CASTU_B,
++ AVR32_SYNTAX_CASTU_H,
++ AVR32_SYNTAX_CBR,
++ AVR32_SYNTAX_CLZ,
++ AVR32_SYNTAX_COM,
++ AVR32_SYNTAX_COP,
++ AVR32_SYNTAX_CP_B,
++ AVR32_SYNTAX_CP_H,
++ AVR32_SYNTAX_CP_W1,
++ AVR32_SYNTAX_CP_W2,
++ AVR32_SYNTAX_CP_W3,
++ AVR32_SYNTAX_CPC1,
++ AVR32_SYNTAX_CPC2,
++ AVR32_SYNTAX_CSRF,
++ AVR32_SYNTAX_CSRFCZ,
++ AVR32_SYNTAX_DIVS,
++ AVR32_SYNTAX_DIVU,
++ AVR32_SYNTAX_EOR1,
++ AVR32_SYNTAX_EOR2,
++ AVR32_SYNTAX_EOR3,
++ AVR32_SYNTAX_EORL,
++ AVR32_SYNTAX_EORH,
++ AVR32_SYNTAX_FRS,
++ AVR32_SYNTAX_ICALL,
++ AVR32_SYNTAX_INCJOSP,
++ AVR32_SYNTAX_LD_D1,
++ AVR32_SYNTAX_LD_D2,
++ AVR32_SYNTAX_LD_D3,
++ AVR32_SYNTAX_LD_D5,
++ AVR32_SYNTAX_LD_D4,
++ AVR32_SYNTAX_LD_SB2,
++ AVR32_SYNTAX_LD_SB1,
++ AVR32_SYNTAX_LD_UB1,
++ AVR32_SYNTAX_LD_UB2,
++ AVR32_SYNTAX_LD_UB5,
++ AVR32_SYNTAX_LD_UB3,
++ AVR32_SYNTAX_LD_UB4,
++ AVR32_SYNTAX_LD_SH1,
++ AVR32_SYNTAX_LD_SH2,
++ AVR32_SYNTAX_LD_SH5,
++ AVR32_SYNTAX_LD_SH3,
++ AVR32_SYNTAX_LD_SH4,
++ AVR32_SYNTAX_LD_UH1,
++ AVR32_SYNTAX_LD_UH2,
++ AVR32_SYNTAX_LD_UH5,
++ AVR32_SYNTAX_LD_UH3,
++ AVR32_SYNTAX_LD_UH4,
++ AVR32_SYNTAX_LD_W1,
++ AVR32_SYNTAX_LD_W2,
++ AVR32_SYNTAX_LD_W5,
++ AVR32_SYNTAX_LD_W6,
++ AVR32_SYNTAX_LD_W3,
++ AVR32_SYNTAX_LD_W4,
++ AVR32_SYNTAX_LDC_D1,
++ AVR32_SYNTAX_LDC_D2,
++ AVR32_SYNTAX_LDC_D3,
++ AVR32_SYNTAX_LDC_W1,
++ AVR32_SYNTAX_LDC_W2,
++ AVR32_SYNTAX_LDC_W3,
++ AVR32_SYNTAX_LDC0_D,
++ AVR32_SYNTAX_LDC0_W,
++ AVR32_SYNTAX_LDCM_D,
++ AVR32_SYNTAX_LDCM_D_PU,
++ AVR32_SYNTAX_LDCM_W,
++ AVR32_SYNTAX_LDCM_W_PU,
++ AVR32_SYNTAX_LDDPC,
++ AVR32_SYNTAX_LDDPC_EXT,
++ AVR32_SYNTAX_LDDSP,
++ AVR32_SYNTAX_LDINS_B,
++ AVR32_SYNTAX_LDINS_H,
++ AVR32_SYNTAX_LDM,
++ AVR32_SYNTAX_LDMTS,
++ AVR32_SYNTAX_LDMTS_PU,
++ AVR32_SYNTAX_LDSWP_SH,
++ AVR32_SYNTAX_LDSWP_UH,
++ AVR32_SYNTAX_LDSWP_W,
++ AVR32_SYNTAX_LSL1,
++ AVR32_SYNTAX_LSL3,
++ AVR32_SYNTAX_LSL2,
++ AVR32_SYNTAX_LSR1,
++ AVR32_SYNTAX_LSR3,
++ AVR32_SYNTAX_LSR2,
++ AVR32_SYNTAX_MAC,
++ AVR32_SYNTAX_MACHH_D,
++ AVR32_SYNTAX_MACHH_W,
++ AVR32_SYNTAX_MACS_D,
++ AVR32_SYNTAX_MACSATHH_W,
++ AVR32_SYNTAX_MACUD,
++ AVR32_SYNTAX_MACWH_D,
++ AVR32_SYNTAX_MAX,
++ AVR32_SYNTAX_MCALL,
++ AVR32_SYNTAX_MFDR,
++ AVR32_SYNTAX_MFSR,
++ AVR32_SYNTAX_MIN,
++ AVR32_SYNTAX_MOV3,
++ AVR32_SYNTAX_MOV1,
++ AVR32_SYNTAX_MOV2,
++ AVR32_SYNTAX_MOVEQ1,
++ AVR32_SYNTAX_MOVNE1,
++ AVR32_SYNTAX_MOVCC1,
++ AVR32_SYNTAX_MOVCS1,
++ AVR32_SYNTAX_MOVGE1,
++ AVR32_SYNTAX_MOVLT1,
++ AVR32_SYNTAX_MOVMI1,
++ AVR32_SYNTAX_MOVPL1,
++ AVR32_SYNTAX_MOVLS1,
++ AVR32_SYNTAX_MOVGT1,
++ AVR32_SYNTAX_MOVLE1,
++ AVR32_SYNTAX_MOVHI1,
++ AVR32_SYNTAX_MOVVS1,
++ AVR32_SYNTAX_MOVVC1,
++ AVR32_SYNTAX_MOVQS1,
++ AVR32_SYNTAX_MOVAL1,
++ AVR32_SYNTAX_MOVHS1,
++ AVR32_SYNTAX_MOVLO1,
++ AVR32_SYNTAX_MOVEQ2,
++ AVR32_SYNTAX_MOVNE2,
++ AVR32_SYNTAX_MOVCC2,
++ AVR32_SYNTAX_MOVCS2,
++ AVR32_SYNTAX_MOVGE2,
++ AVR32_SYNTAX_MOVLT2,
++ AVR32_SYNTAX_MOVMI2,
++ AVR32_SYNTAX_MOVPL2,
++ AVR32_SYNTAX_MOVLS2,
++ AVR32_SYNTAX_MOVGT2,
++ AVR32_SYNTAX_MOVLE2,
++ AVR32_SYNTAX_MOVHI2,
++ AVR32_SYNTAX_MOVVS2,
++ AVR32_SYNTAX_MOVVC2,
++ AVR32_SYNTAX_MOVQS2,
++ AVR32_SYNTAX_MOVAL2,
++ AVR32_SYNTAX_MOVHS2,
++ AVR32_SYNTAX_MOVLO2,
++ AVR32_SYNTAX_MTDR,
++ AVR32_SYNTAX_MTSR,
++ AVR32_SYNTAX_MUL1,
++ AVR32_SYNTAX_MUL2,
++ AVR32_SYNTAX_MUL3,
++ AVR32_SYNTAX_MULHH_W,
++ AVR32_SYNTAX_MULNHH_W,
++ AVR32_SYNTAX_MULNWH_D,
++ AVR32_SYNTAX_MULSD,
++ AVR32_SYNTAX_MULSATHH_H,
++ AVR32_SYNTAX_MULSATHH_W,
++ AVR32_SYNTAX_MULSATRNDHH_H,
++ AVR32_SYNTAX_MULSATRNDWH_W,
++ AVR32_SYNTAX_MULSATWH_W,
++ AVR32_SYNTAX_MULU_D,
++ AVR32_SYNTAX_MULWH_D,
++ AVR32_SYNTAX_MUSFR,
++ AVR32_SYNTAX_MUSTR,
++ AVR32_SYNTAX_MVCR_D,
++ AVR32_SYNTAX_MVCR_W,
++ AVR32_SYNTAX_MVRC_D,
++ AVR32_SYNTAX_MVRC_W,
++ AVR32_SYNTAX_NEG,
++ AVR32_SYNTAX_NOP,
++ AVR32_SYNTAX_OR1,
++ AVR32_SYNTAX_OR2,
++ AVR32_SYNTAX_OR3,
++ AVR32_SYNTAX_ORH,
++ AVR32_SYNTAX_ORL,
++ AVR32_SYNTAX_PABS_SB,
++ AVR32_SYNTAX_PABS_SH,
++ AVR32_SYNTAX_PACKSH_SB,
++ AVR32_SYNTAX_PACKSH_UB,
++ AVR32_SYNTAX_PACKW_SH,
++ AVR32_SYNTAX_PADD_B,
++ AVR32_SYNTAX_PADD_H,
++ AVR32_SYNTAX_PADDH_SH,
++ AVR32_SYNTAX_PADDH_UB,
++ AVR32_SYNTAX_PADDS_SB,
++ AVR32_SYNTAX_PADDS_SH,
++ AVR32_SYNTAX_PADDS_UB,
++ AVR32_SYNTAX_PADDS_UH,
++ AVR32_SYNTAX_PADDSUB_H,
++ AVR32_SYNTAX_PADDSUBH_SH,
++ AVR32_SYNTAX_PADDSUBS_SH,
++ AVR32_SYNTAX_PADDSUBS_UH,
++ AVR32_SYNTAX_PADDX_H,
++ AVR32_SYNTAX_PADDXH_SH,
++ AVR32_SYNTAX_PADDXS_SH,
++ AVR32_SYNTAX_PADDXS_UH,
++ AVR32_SYNTAX_PASR_B,
++ AVR32_SYNTAX_PASR_H,
++ AVR32_SYNTAX_PAVG_SH,
++ AVR32_SYNTAX_PAVG_UB,
++ AVR32_SYNTAX_PLSL_B,
++ AVR32_SYNTAX_PLSL_H,
++ AVR32_SYNTAX_PLSR_B,
++ AVR32_SYNTAX_PLSR_H,
++ AVR32_SYNTAX_PMAX_SH,
++ AVR32_SYNTAX_PMAX_UB,
++ AVR32_SYNTAX_PMIN_SH,
++ AVR32_SYNTAX_PMIN_UB,
++ AVR32_SYNTAX_POPJC,
++ AVR32_SYNTAX_POPM,
++ AVR32_SYNTAX_POPM_E,
++ AVR32_SYNTAX_PREF,
++ AVR32_SYNTAX_PSAD,
++ AVR32_SYNTAX_PSUB_B,
++ AVR32_SYNTAX_PSUB_H,
++ AVR32_SYNTAX_PSUBADD_H,
++ AVR32_SYNTAX_PSUBADDH_SH,
++ AVR32_SYNTAX_PSUBADDS_SH,
++ AVR32_SYNTAX_PSUBADDS_UH,
++ AVR32_SYNTAX_PSUBH_SH,
++ AVR32_SYNTAX_PSUBH_UB,
++ AVR32_SYNTAX_PSUBS_SB,
++ AVR32_SYNTAX_PSUBS_SH,
++ AVR32_SYNTAX_PSUBS_UB,
++ AVR32_SYNTAX_PSUBS_UH,
++ AVR32_SYNTAX_PSUBX_H,
++ AVR32_SYNTAX_PSUBXH_SH,
++ AVR32_SYNTAX_PSUBXS_SH,
++ AVR32_SYNTAX_PSUBXS_UH,
++ AVR32_SYNTAX_PUNPCKSB_H,
++ AVR32_SYNTAX_PUNPCKUB_H,
++ AVR32_SYNTAX_PUSHJC,
++ AVR32_SYNTAX_PUSHM,
++ AVR32_SYNTAX_PUSHM_E,
++ AVR32_SYNTAX_RCALL1,
++ AVR32_SYNTAX_RCALL2,
++ AVR32_SYNTAX_RETEQ,
++ AVR32_SYNTAX_RETNE,
++ AVR32_SYNTAX_RETCC,
++ AVR32_SYNTAX_RETCS,
++ AVR32_SYNTAX_RETGE,
++ AVR32_SYNTAX_RETLT,
++ AVR32_SYNTAX_RETMI,
++ AVR32_SYNTAX_RETPL,
++ AVR32_SYNTAX_RETLS,
++ AVR32_SYNTAX_RETGT,
++ AVR32_SYNTAX_RETLE,
++ AVR32_SYNTAX_RETHI,
++ AVR32_SYNTAX_RETVS,
++ AVR32_SYNTAX_RETVC,
++ AVR32_SYNTAX_RETQS,
++ AVR32_SYNTAX_RETAL,
++ AVR32_SYNTAX_RETHS,
++ AVR32_SYNTAX_RETLO,
++ AVR32_SYNTAX_RETD,
++ AVR32_SYNTAX_RETE,
++ AVR32_SYNTAX_RETJ,
++ AVR32_SYNTAX_RETS,
++ AVR32_SYNTAX_RJMP,
++ AVR32_SYNTAX_ROL,
++ AVR32_SYNTAX_ROR,
++ AVR32_SYNTAX_RSUB1,
++ AVR32_SYNTAX_RSUB2,
++ AVR32_SYNTAX_SATADD_H,
++ AVR32_SYNTAX_SATADD_W,
++ AVR32_SYNTAX_SATRNDS,
++ AVR32_SYNTAX_SATRNDU,
++ AVR32_SYNTAX_SATS,
++ AVR32_SYNTAX_SATSUB_H,
++ AVR32_SYNTAX_SATSUB_W1,
++ AVR32_SYNTAX_SATSUB_W2,
++ AVR32_SYNTAX_SATU,
++ AVR32_SYNTAX_SBC,
++ AVR32_SYNTAX_SBR,
++ AVR32_SYNTAX_SCALL,
++ AVR32_SYNTAX_SCR,
++ AVR32_SYNTAX_SLEEP,
++ AVR32_SYNTAX_SREQ,
++ AVR32_SYNTAX_SRNE,
++ AVR32_SYNTAX_SRCC,
++ AVR32_SYNTAX_SRCS,
++ AVR32_SYNTAX_SRGE,
++ AVR32_SYNTAX_SRLT,
++ AVR32_SYNTAX_SRMI,
++ AVR32_SYNTAX_SRPL,
++ AVR32_SYNTAX_SRLS,
++ AVR32_SYNTAX_SRGT,
++ AVR32_SYNTAX_SRLE,
++ AVR32_SYNTAX_SRHI,
++ AVR32_SYNTAX_SRVS,
++ AVR32_SYNTAX_SRVC,
++ AVR32_SYNTAX_SRQS,
++ AVR32_SYNTAX_SRAL,
++ AVR32_SYNTAX_SRHS,
++ AVR32_SYNTAX_SRLO,
++ AVR32_SYNTAX_SSRF,
++ AVR32_SYNTAX_ST_B1,
++ AVR32_SYNTAX_ST_B2,
++ AVR32_SYNTAX_ST_B5,
++ AVR32_SYNTAX_ST_B3,
++ AVR32_SYNTAX_ST_B4,
++ AVR32_SYNTAX_ST_D1,
++ AVR32_SYNTAX_ST_D2,
++ AVR32_SYNTAX_ST_D3,
++ AVR32_SYNTAX_ST_D5,
++ AVR32_SYNTAX_ST_D4,
++ AVR32_SYNTAX_ST_H1,
++ AVR32_SYNTAX_ST_H2,
++ AVR32_SYNTAX_ST_H5,
++ AVR32_SYNTAX_ST_H3,
++ AVR32_SYNTAX_ST_H4,
++ AVR32_SYNTAX_ST_W1,
++ AVR32_SYNTAX_ST_W2,
++ AVR32_SYNTAX_ST_W5,
++ AVR32_SYNTAX_ST_W3,
++ AVR32_SYNTAX_ST_W4,
++ AVR32_SYNTAX_STC_D1,
++ AVR32_SYNTAX_STC_D2,
++ AVR32_SYNTAX_STC_D3,
++ AVR32_SYNTAX_STC_W1,
++ AVR32_SYNTAX_STC_W2,
++ AVR32_SYNTAX_STC_W3,
++ AVR32_SYNTAX_STC0_D,
++ AVR32_SYNTAX_STC0_W,
++ AVR32_SYNTAX_STCM_D,
++ AVR32_SYNTAX_STCM_D_PU,
++ AVR32_SYNTAX_STCM_W,
++ AVR32_SYNTAX_STCM_W_PU,
++ AVR32_SYNTAX_STCOND,
++ AVR32_SYNTAX_STDSP,
++ AVR32_SYNTAX_STHH_W2,
++ AVR32_SYNTAX_STHH_W1,
++ AVR32_SYNTAX_STM,
++ AVR32_SYNTAX_STM_PU,
++ AVR32_SYNTAX_STMTS,
++ AVR32_SYNTAX_STMTS_PU,
++ AVR32_SYNTAX_STSWP_H,
++ AVR32_SYNTAX_STSWP_W,
++ AVR32_SYNTAX_SUB1,
++ AVR32_SYNTAX_SUB2,
++ AVR32_SYNTAX_SUB5,
++ AVR32_SYNTAX_SUB3_SP,
++ AVR32_SYNTAX_SUB3,
++ AVR32_SYNTAX_SUB4,
++ AVR32_SYNTAX_SUBEQ,
++ AVR32_SYNTAX_SUBNE,
++ AVR32_SYNTAX_SUBCC,
++ AVR32_SYNTAX_SUBCS,
++ AVR32_SYNTAX_SUBGE,
++ AVR32_SYNTAX_SUBLT,
++ AVR32_SYNTAX_SUBMI,
++ AVR32_SYNTAX_SUBPL,
++ AVR32_SYNTAX_SUBLS,
++ AVR32_SYNTAX_SUBGT,
++ AVR32_SYNTAX_SUBLE,
++ AVR32_SYNTAX_SUBHI,
++ AVR32_SYNTAX_SUBVS,
++ AVR32_SYNTAX_SUBVC,
++ AVR32_SYNTAX_SUBQS,
++ AVR32_SYNTAX_SUBAL,
++ AVR32_SYNTAX_SUBHS,
++ AVR32_SYNTAX_SUBLO,
++ AVR32_SYNTAX_SUBFEQ,
++ AVR32_SYNTAX_SUBFNE,
++ AVR32_SYNTAX_SUBFCC,
++ AVR32_SYNTAX_SUBFCS,
++ AVR32_SYNTAX_SUBFGE,
++ AVR32_SYNTAX_SUBFLT,
++ AVR32_SYNTAX_SUBFMI,
++ AVR32_SYNTAX_SUBFPL,
++ AVR32_SYNTAX_SUBFLS,
++ AVR32_SYNTAX_SUBFGT,
++ AVR32_SYNTAX_SUBFLE,
++ AVR32_SYNTAX_SUBFHI,
++ AVR32_SYNTAX_SUBFVS,
++ AVR32_SYNTAX_SUBFVC,
++ AVR32_SYNTAX_SUBFQS,
++ AVR32_SYNTAX_SUBFAL,
++ AVR32_SYNTAX_SUBFHS,
++ AVR32_SYNTAX_SUBFLO,
++ AVR32_SYNTAX_SUBHH_W,
++ AVR32_SYNTAX_SWAP_B,
++ AVR32_SYNTAX_SWAP_BH,
++ AVR32_SYNTAX_SWAP_H,
++ AVR32_SYNTAX_SYNC,
++ AVR32_SYNTAX_TLBR,
++ AVR32_SYNTAX_TLBS,
++ AVR32_SYNTAX_TLBW,
++ AVR32_SYNTAX_TNBZ,
++ AVR32_SYNTAX_TST,
++ AVR32_SYNTAX_XCHG,
++ AVR32_SYNTAX_MEMC,
++ AVR32_SYNTAX_MEMS,
++ AVR32_SYNTAX_MEMT,
++ AVR32_SYNTAX_FADD_S,
++ AVR32_SYNTAX_FADD_D,
++ AVR32_SYNTAX_FSUB_S,
++ AVR32_SYNTAX_FSUB_D,
++ AVR32_SYNTAX_FMAC_S,
++ AVR32_SYNTAX_FMAC_D,
++ AVR32_SYNTAX_FNMAC_S,
++ AVR32_SYNTAX_FNMAC_D,
++ AVR32_SYNTAX_FMSC_S,
++ AVR32_SYNTAX_FMSC_D,
++ AVR32_SYNTAX_FNMSC_S,
++ AVR32_SYNTAX_FNMSC_D,
++ AVR32_SYNTAX_FMUL_S,
++ AVR32_SYNTAX_FMUL_D,
++ AVR32_SYNTAX_FNMUL_S,
++ AVR32_SYNTAX_FNMUL_D,
++ AVR32_SYNTAX_FNEG_S,
++ AVR32_SYNTAX_FNEG_D,
++ AVR32_SYNTAX_FABS_S,
++ AVR32_SYNTAX_FABS_D,
++ AVR32_SYNTAX_FCMP_S,
++ AVR32_SYNTAX_FCMP_D,
++ AVR32_SYNTAX_FMOV1_S,
++ AVR32_SYNTAX_FMOV1_D,
++ AVR32_SYNTAX_FMOV2_S,
++ AVR32_SYNTAX_FMOV2_D,
++ AVR32_SYNTAX_FMOV3_S,
++ AVR32_SYNTAX_FMOV3_D,
++ AVR32_SYNTAX_FCASTS_D,
++ AVR32_SYNTAX_FCASTD_S,
++ AVR32_SYNTAX_LDA_W,
++ AVR32_SYNTAX_CALL,
++ AVR32_SYNTAX_PICOSVMAC0,
++ AVR32_SYNTAX_PICOSVMAC1,
++ AVR32_SYNTAX_PICOSVMAC2,
++ AVR32_SYNTAX_PICOSVMAC3,
++ AVR32_SYNTAX_PICOSVMUL0,
++ AVR32_SYNTAX_PICOSVMUL1,
++ AVR32_SYNTAX_PICOSVMUL2,
++ AVR32_SYNTAX_PICOSVMUL3,
++ AVR32_SYNTAX_PICOVMAC0,
++ AVR32_SYNTAX_PICOVMAC1,
++ AVR32_SYNTAX_PICOVMAC2,
++ AVR32_SYNTAX_PICOVMAC3,
++ AVR32_SYNTAX_PICOVMUL0,
++ AVR32_SYNTAX_PICOVMUL1,
++ AVR32_SYNTAX_PICOVMUL2,
++ AVR32_SYNTAX_PICOVMUL3,
++ AVR32_SYNTAX_PICOLD_D2,
++ AVR32_SYNTAX_PICOLD_D3,
++ AVR32_SYNTAX_PICOLD_D1,
++ AVR32_SYNTAX_PICOLD_W2,
++ AVR32_SYNTAX_PICOLD_W3,
++ AVR32_SYNTAX_PICOLD_W1,
++ AVR32_SYNTAX_PICOLDM_D,
++ AVR32_SYNTAX_PICOLDM_D_PU,
++ AVR32_SYNTAX_PICOLDM_W,
++ AVR32_SYNTAX_PICOLDM_W_PU,
++ AVR32_SYNTAX_PICOMV_D1,
++ AVR32_SYNTAX_PICOMV_D2,
++ AVR32_SYNTAX_PICOMV_W1,
++ AVR32_SYNTAX_PICOMV_W2,
++ AVR32_SYNTAX_PICOST_D2,
++ AVR32_SYNTAX_PICOST_D3,
++ AVR32_SYNTAX_PICOST_D1,
++ AVR32_SYNTAX_PICOST_W2,
++ AVR32_SYNTAX_PICOST_W3,
++ AVR32_SYNTAX_PICOST_W1,
++ AVR32_SYNTAX_PICOSTM_D,
++ AVR32_SYNTAX_PICOSTM_D_PU,
++ AVR32_SYNTAX_PICOSTM_W,
++ AVR32_SYNTAX_PICOSTM_W_PU,
++ AVR32_SYNTAX__END_
++};
++#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
++
++enum avr32_alias_type
++ {
++ AVR32_ALIAS_FMAC_S,
++ AVR32_ALIAS_FMAC_D,
++ AVR32_ALIAS_FNMAC_S,
++ AVR32_ALIAS_FNMAC_D,
++ AVR32_ALIAS_FMSC_S,
++ AVR32_ALIAS_FMSC_D,
++ AVR32_ALIAS_FNMSC_S,
++ AVR32_ALIAS_FNMSC_D,
++ AVR32_ALIAS_FADD_S,
++ AVR32_ALIAS_FADD_D,
++ AVR32_ALIAS_FSUB_S,
++ AVR32_ALIAS_FSUB_D,
++ AVR32_ALIAS_FMUL_S,
++ AVR32_ALIAS_FMUL_D,
++ AVR32_ALIAS_FNMUL_S,
++ AVR32_ALIAS_FNMUL_D,
++ AVR32_ALIAS_FNEG_S,
++ AVR32_ALIAS_FNEG_D,
++ AVR32_ALIAS_FABS_S,
++ AVR32_ALIAS_FABS_D,
++ AVR32_ALIAS_FCMP_S,
++ AVR32_ALIAS_FCMP_D,
++ AVR32_ALIAS_FMOV1_S,
++ AVR32_ALIAS_FMOV1_D,
++ AVR32_ALIAS_FMOV2_S,
++ AVR32_ALIAS_FMOV2_D,
++ AVR32_ALIAS_FMOV3_S,
++ AVR32_ALIAS_FMOV3_D,
++ AVR32_ALIAS_FCASTS_D,
++ AVR32_ALIAS_FCASTD_S,
++ AVR32_ALIAS_PICOSVMAC0,
++ AVR32_ALIAS_PICOSVMAC1,
++ AVR32_ALIAS_PICOSVMAC2,
++ AVR32_ALIAS_PICOSVMAC3,
++ AVR32_ALIAS_PICOSVMUL0,
++ AVR32_ALIAS_PICOSVMUL1,
++ AVR32_ALIAS_PICOSVMUL2,
++ AVR32_ALIAS_PICOSVMUL3,
++ AVR32_ALIAS_PICOVMAC0,
++ AVR32_ALIAS_PICOVMAC1,
++ AVR32_ALIAS_PICOVMAC2,
++ AVR32_ALIAS_PICOVMAC3,
++ AVR32_ALIAS_PICOVMUL0,
++ AVR32_ALIAS_PICOVMUL1,
++ AVR32_ALIAS_PICOVMUL2,
++ AVR32_ALIAS_PICOVMUL3,
++ AVR32_ALIAS_PICOLD_D1,
++ AVR32_ALIAS_PICOLD_D2,
++ AVR32_ALIAS_PICOLD_D3,
++ AVR32_ALIAS_PICOLD_W1,
++ AVR32_ALIAS_PICOLD_W2,
++ AVR32_ALIAS_PICOLD_W3,
++ AVR32_ALIAS_PICOLDM_D,
++ AVR32_ALIAS_PICOLDM_D_PU,
++ AVR32_ALIAS_PICOLDM_W,
++ AVR32_ALIAS_PICOLDM_W_PU,
++ AVR32_ALIAS_PICOMV_D1,
++ AVR32_ALIAS_PICOMV_D2,
++ AVR32_ALIAS_PICOMV_W1,
++ AVR32_ALIAS_PICOMV_W2,
++ AVR32_ALIAS_PICOST_D1,
++ AVR32_ALIAS_PICOST_D2,
++ AVR32_ALIAS_PICOST_D3,
++ AVR32_ALIAS_PICOST_W1,
++ AVR32_ALIAS_PICOST_W2,
++ AVR32_ALIAS_PICOST_W3,
++ AVR32_ALIAS_PICOSTM_D,
++ AVR32_ALIAS_PICOSTM_D_PU,
++ AVR32_ALIAS_PICOSTM_W,
++ AVR32_ALIAS_PICOSTM_W_PU,
++ AVR32_ALIAS__END_
++ };
++#define AVR32_NR_ALIAS AVR32_ALIAS__END_
++
++enum avr32_mnemonic_type
++{
++ AVR32_MNEMONIC_ABS,
++ AVR32_MNEMONIC_ACALL,
++ AVR32_MNEMONIC_ACR,
++ AVR32_MNEMONIC_ADC,
++ AVR32_MNEMONIC_ADD,
++ AVR32_MNEMONIC_ADDABS,
++ AVR32_MNEMONIC_ADDHH_W,
++ AVR32_MNEMONIC_AND,
++ AVR32_MNEMONIC_ANDH,
++ AVR32_MNEMONIC_ANDL,
++ AVR32_MNEMONIC_ANDN,
++ AVR32_MNEMONIC_ASR,
++ AVR32_MNEMONIC_BFEXTS,
++ AVR32_MNEMONIC_BFEXTU,
++ AVR32_MNEMONIC_BFINS,
++ AVR32_MNEMONIC_BLD,
++ AVR32_MNEMONIC_BREQ,
++ AVR32_MNEMONIC_BRNE,
++ AVR32_MNEMONIC_BRCC,
++ AVR32_MNEMONIC_BRCS,
++ AVR32_MNEMONIC_BRGE,
++ AVR32_MNEMONIC_BRLT,
++ AVR32_MNEMONIC_BRMI,
++ AVR32_MNEMONIC_BRPL,
++ AVR32_MNEMONIC_BRHS,
++ AVR32_MNEMONIC_BRLO,
++ AVR32_MNEMONIC_BRLS,
++ AVR32_MNEMONIC_BRGT,
++ AVR32_MNEMONIC_BRLE,
++ AVR32_MNEMONIC_BRHI,
++ AVR32_MNEMONIC_BRVS,
++ AVR32_MNEMONIC_BRVC,
++ AVR32_MNEMONIC_BRQS,
++ AVR32_MNEMONIC_BRAL,
++ AVR32_MNEMONIC_BREAKPOINT,
++ AVR32_MNEMONIC_BREV,
++ AVR32_MNEMONIC_BST,
++ AVR32_MNEMONIC_CACHE,
++ AVR32_MNEMONIC_CASTS_B,
++ AVR32_MNEMONIC_CASTS_H,
++ AVR32_MNEMONIC_CASTU_B,
++ AVR32_MNEMONIC_CASTU_H,
++ AVR32_MNEMONIC_CBR,
++ AVR32_MNEMONIC_CLZ,
++ AVR32_MNEMONIC_COM,
++ AVR32_MNEMONIC_COP,
++ AVR32_MNEMONIC_CP_B,
++ AVR32_MNEMONIC_CP_H,
++ AVR32_MNEMONIC_CP_W,
++ AVR32_MNEMONIC_CP,
++ AVR32_MNEMONIC_CPC,
++ AVR32_MNEMONIC_CSRF,
++ AVR32_MNEMONIC_CSRFCZ,
++ AVR32_MNEMONIC_DIVS,
++ AVR32_MNEMONIC_DIVU,
++ AVR32_MNEMONIC_EOR,
++ AVR32_MNEMONIC_EORL,
++ AVR32_MNEMONIC_EORH,
++ AVR32_MNEMONIC_FRS,
++ AVR32_MNEMONIC_ICALL,
++ AVR32_MNEMONIC_INCJOSP,
++ AVR32_MNEMONIC_LD_D,
++ AVR32_MNEMONIC_LD_SB,
++ AVR32_MNEMONIC_LD_UB,
++ AVR32_MNEMONIC_LD_SH,
++ AVR32_MNEMONIC_LD_UH,
++ AVR32_MNEMONIC_LD_W,
++ AVR32_MNEMONIC_LDC_D,
++ AVR32_MNEMONIC_LDC_W,
++ AVR32_MNEMONIC_LDC0_D,
++ AVR32_MNEMONIC_LDC0_W,
++ AVR32_MNEMONIC_LDCM_D,
++ AVR32_MNEMONIC_LDCM_W,
++ AVR32_MNEMONIC_LDDPC,
++ AVR32_MNEMONIC_LDDSP,
++ AVR32_MNEMONIC_LDINS_B,
++ AVR32_MNEMONIC_LDINS_H,
++ AVR32_MNEMONIC_LDM,
++ AVR32_MNEMONIC_LDMTS,
++ AVR32_MNEMONIC_LDSWP_SH,
++ AVR32_MNEMONIC_LDSWP_UH,
++ AVR32_MNEMONIC_LDSWP_W,
++ AVR32_MNEMONIC_LSL,
++ AVR32_MNEMONIC_LSR,
++ AVR32_MNEMONIC_MAC,
++ AVR32_MNEMONIC_MACHH_D,
++ AVR32_MNEMONIC_MACHH_W,
++ AVR32_MNEMONIC_MACS_D,
++ AVR32_MNEMONIC_MACSATHH_W,
++ AVR32_MNEMONIC_MACU_D,
++ AVR32_MNEMONIC_MACWH_D,
++ AVR32_MNEMONIC_MAX,
++ AVR32_MNEMONIC_MCALL,
++ AVR32_MNEMONIC_MFDR,
++ AVR32_MNEMONIC_MFSR,
++ AVR32_MNEMONIC_MIN,
++ AVR32_MNEMONIC_MOV,
++ AVR32_MNEMONIC_MOVEQ,
++ AVR32_MNEMONIC_MOVNE,
++ AVR32_MNEMONIC_MOVCC,
++ AVR32_MNEMONIC_MOVCS,
++ AVR32_MNEMONIC_MOVGE,
++ AVR32_MNEMONIC_MOVLT,
++ AVR32_MNEMONIC_MOVMI,
++ AVR32_MNEMONIC_MOVPL,
++ AVR32_MNEMONIC_MOVLS,
++ AVR32_MNEMONIC_MOVGT,
++ AVR32_MNEMONIC_MOVLE,
++ AVR32_MNEMONIC_MOVHI,
++ AVR32_MNEMONIC_MOVVS,
++ AVR32_MNEMONIC_MOVVC,
++ AVR32_MNEMONIC_MOVQS,
++ AVR32_MNEMONIC_MOVAL,
++ AVR32_MNEMONIC_MOVHS,
++ AVR32_MNEMONIC_MOVLO,
++ AVR32_MNEMONIC_MTDR,
++ AVR32_MNEMONIC_MTSR,
++ AVR32_MNEMONIC_MUL,
++ AVR32_MNEMONIC_MULHH_W,
++ AVR32_MNEMONIC_MULNHH_W,
++ AVR32_MNEMONIC_MULNWH_D,
++ AVR32_MNEMONIC_MULS_D,
++ AVR32_MNEMONIC_MULSATHH_H,
++ AVR32_MNEMONIC_MULSATHH_W,
++ AVR32_MNEMONIC_MULSATRNDHH_H,
++ AVR32_MNEMONIC_MULSATRNDWH_W,
++ AVR32_MNEMONIC_MULSATWH_W,
++ AVR32_MNEMONIC_MULU_D,
++ AVR32_MNEMONIC_MULWH_D,
++ AVR32_MNEMONIC_MUSFR,
++ AVR32_MNEMONIC_MUSTR,
++ AVR32_MNEMONIC_MVCR_D,
++ AVR32_MNEMONIC_MVCR_W,
++ AVR32_MNEMONIC_MVRC_D,
++ AVR32_MNEMONIC_MVRC_W,
++ AVR32_MNEMONIC_NEG,
++ AVR32_MNEMONIC_NOP,
++ AVR32_MNEMONIC_OR,
++ AVR32_MNEMONIC_ORH,
++ AVR32_MNEMONIC_ORL,
++ AVR32_MNEMONIC_PABS_SB,
++ AVR32_MNEMONIC_PABS_SH,
++ AVR32_MNEMONIC_PACKSH_SB,
++ AVR32_MNEMONIC_PACKSH_UB,
++ AVR32_MNEMONIC_PACKW_SH,
++ AVR32_MNEMONIC_PADD_B,
++ AVR32_MNEMONIC_PADD_H,
++ AVR32_MNEMONIC_PADDH_SH,
++ AVR32_MNEMONIC_PADDH_UB,
++ AVR32_MNEMONIC_PADDS_SB,
++ AVR32_MNEMONIC_PADDS_SH,
++ AVR32_MNEMONIC_PADDS_UB,
++ AVR32_MNEMONIC_PADDS_UH,
++ AVR32_MNEMONIC_PADDSUB_H,
++ AVR32_MNEMONIC_PADDSUBH_SH,
++ AVR32_MNEMONIC_PADDSUBS_SH,
++ AVR32_MNEMONIC_PADDSUBS_UH,
++ AVR32_MNEMONIC_PADDX_H,
++ AVR32_MNEMONIC_PADDXH_SH,
++ AVR32_MNEMONIC_PADDXS_SH,
++ AVR32_MNEMONIC_PADDXS_UH,
++ AVR32_MNEMONIC_PASR_B,
++ AVR32_MNEMONIC_PASR_H,
++ AVR32_MNEMONIC_PAVG_SH,
++ AVR32_MNEMONIC_PAVG_UB,
++ AVR32_MNEMONIC_PLSL_B,
++ AVR32_MNEMONIC_PLSL_H,
++ AVR32_MNEMONIC_PLSR_B,
++ AVR32_MNEMONIC_PLSR_H,
++ AVR32_MNEMONIC_PMAX_SH,
++ AVR32_MNEMONIC_PMAX_UB,
++ AVR32_MNEMONIC_PMIN_SH,
++ AVR32_MNEMONIC_PMIN_UB,
++ AVR32_MNEMONIC_POPJC,
++ AVR32_MNEMONIC_POPM,
++ AVR32_MNEMONIC_PREF,
++ AVR32_MNEMONIC_PSAD,
++ AVR32_MNEMONIC_PSUB_B,
++ AVR32_MNEMONIC_PSUB_H,
++ AVR32_MNEMONIC_PSUBADD_H,
++ AVR32_MNEMONIC_PSUBADDH_SH,
++ AVR32_MNEMONIC_PSUBADDS_SH,
++ AVR32_MNEMONIC_PSUBADDS_UH,
++ AVR32_MNEMONIC_PSUBH_SH,
++ AVR32_MNEMONIC_PSUBH_UB,
++ AVR32_MNEMONIC_PSUBS_SB,
++ AVR32_MNEMONIC_PSUBS_SH,
++ AVR32_MNEMONIC_PSUBS_UB,
++ AVR32_MNEMONIC_PSUBS_UH,
++ AVR32_MNEMONIC_PSUBX_H,
++ AVR32_MNEMONIC_PSUBXH_SH,
++ AVR32_MNEMONIC_PSUBXS_SH,
++ AVR32_MNEMONIC_PSUBXS_UH,
++ AVR32_MNEMONIC_PUNPCKSB_H,
++ AVR32_MNEMONIC_PUNPCKUB_H,
++ AVR32_MNEMONIC_PUSHJC,
++ AVR32_MNEMONIC_PUSHM,
++ AVR32_MNEMONIC_RCALL,
++ AVR32_MNEMONIC_RETEQ,
++ AVR32_MNEMONIC_RETNE,
++ AVR32_MNEMONIC_RETCC,
++ AVR32_MNEMONIC_RETCS,
++ AVR32_MNEMONIC_RETGE,
++ AVR32_MNEMONIC_RETLT,
++ AVR32_MNEMONIC_RETMI,
++ AVR32_MNEMONIC_RETPL,
++ AVR32_MNEMONIC_RETLS,
++ AVR32_MNEMONIC_RETGT,
++ AVR32_MNEMONIC_RETLE,
++ AVR32_MNEMONIC_RETHI,
++ AVR32_MNEMONIC_RETVS,
++ AVR32_MNEMONIC_RETVC,
++ AVR32_MNEMONIC_RETQS,
++ AVR32_MNEMONIC_RETAL,
++ AVR32_MNEMONIC_RETHS,
++ AVR32_MNEMONIC_RETLO,
++ AVR32_MNEMONIC_RET,
++ AVR32_MNEMONIC_RETD,
++ AVR32_MNEMONIC_RETE,
++ AVR32_MNEMONIC_RETJ,
++ AVR32_MNEMONIC_RETS,
++ AVR32_MNEMONIC_RJMP,
++ AVR32_MNEMONIC_ROL,
++ AVR32_MNEMONIC_ROR,
++ AVR32_MNEMONIC_RSUB,
++ AVR32_MNEMONIC_SATADD_H,
++ AVR32_MNEMONIC_SATADD_W,
++ AVR32_MNEMONIC_SATRNDS,
++ AVR32_MNEMONIC_SATRNDU,
++ AVR32_MNEMONIC_SATS,
++ AVR32_MNEMONIC_SATSUB_H,
++ AVR32_MNEMONIC_SATSUB_W,
++ AVR32_MNEMONIC_SATU,
++ AVR32_MNEMONIC_SBC,
++ AVR32_MNEMONIC_SBR,
++ AVR32_MNEMONIC_SCALL,
++ AVR32_MNEMONIC_SCR,
++ AVR32_MNEMONIC_SLEEP,
++ AVR32_MNEMONIC_SREQ,
++ AVR32_MNEMONIC_SRNE,
++ AVR32_MNEMONIC_SRCC,
++ AVR32_MNEMONIC_SRCS,
++ AVR32_MNEMONIC_SRGE,
++ AVR32_MNEMONIC_SRLT,
++ AVR32_MNEMONIC_SRMI,
++ AVR32_MNEMONIC_SRPL,
++ AVR32_MNEMONIC_SRLS,
++ AVR32_MNEMONIC_SRGT,
++ AVR32_MNEMONIC_SRLE,
++ AVR32_MNEMONIC_SRHI,
++ AVR32_MNEMONIC_SRVS,
++ AVR32_MNEMONIC_SRVC,
++ AVR32_MNEMONIC_SRQS,
++ AVR32_MNEMONIC_SRAL,
++ AVR32_MNEMONIC_SRHS,
++ AVR32_MNEMONIC_SRLO,
++ AVR32_MNEMONIC_SSRF,
++ AVR32_MNEMONIC_ST_B,
++ AVR32_MNEMONIC_ST_D,
++ AVR32_MNEMONIC_ST_H,
++ AVR32_MNEMONIC_ST_W,
++ AVR32_MNEMONIC_STC_D,
++ AVR32_MNEMONIC_STC_W,
++ AVR32_MNEMONIC_STC0_D,
++ AVR32_MNEMONIC_STC0_W,
++ AVR32_MNEMONIC_STCM_D,
++ AVR32_MNEMONIC_STCM_W,
++ AVR32_MNEMONIC_STCOND,
++ AVR32_MNEMONIC_STDSP,
++ AVR32_MNEMONIC_STHH_W,
++ AVR32_MNEMONIC_STM,
++ AVR32_MNEMONIC_STMTS,
++ AVR32_MNEMONIC_STSWP_H,
++ AVR32_MNEMONIC_STSWP_W,
++ AVR32_MNEMONIC_SUB,
++ AVR32_MNEMONIC_SUBEQ,
++ AVR32_MNEMONIC_SUBNE,
++ AVR32_MNEMONIC_SUBCC,
++ AVR32_MNEMONIC_SUBCS,
++ AVR32_MNEMONIC_SUBGE,
++ AVR32_MNEMONIC_SUBLT,
++ AVR32_MNEMONIC_SUBMI,
++ AVR32_MNEMONIC_SUBPL,
++ AVR32_MNEMONIC_SUBLS,
++ AVR32_MNEMONIC_SUBGT,
++ AVR32_MNEMONIC_SUBLE,
++ AVR32_MNEMONIC_SUBHI,
++ AVR32_MNEMONIC_SUBVS,
++ AVR32_MNEMONIC_SUBVC,
++ AVR32_MNEMONIC_SUBQS,
++ AVR32_MNEMONIC_SUBAL,
++ AVR32_MNEMONIC_SUBHS,
++ AVR32_MNEMONIC_SUBLO,
++ AVR32_MNEMONIC_SUBFEQ,
++ AVR32_MNEMONIC_SUBFNE,
++ AVR32_MNEMONIC_SUBFCC,
++ AVR32_MNEMONIC_SUBFCS,
++ AVR32_MNEMONIC_SUBFGE,
++ AVR32_MNEMONIC_SUBFLT,
++ AVR32_MNEMONIC_SUBFMI,
++ AVR32_MNEMONIC_SUBFPL,
++ AVR32_MNEMONIC_SUBFLS,
++ AVR32_MNEMONIC_SUBFGT,
++ AVR32_MNEMONIC_SUBFLE,
++ AVR32_MNEMONIC_SUBFHI,
++ AVR32_MNEMONIC_SUBFVS,
++ AVR32_MNEMONIC_SUBFVC,
++ AVR32_MNEMONIC_SUBFQS,
++ AVR32_MNEMONIC_SUBFAL,
++ AVR32_MNEMONIC_SUBFHS,
++ AVR32_MNEMONIC_SUBFLO,
++ AVR32_MNEMONIC_SUBHH_W,
++ AVR32_MNEMONIC_SWAP_B,
++ AVR32_MNEMONIC_SWAP_BH,
++ AVR32_MNEMONIC_SWAP_H,
++ AVR32_MNEMONIC_SYNC,
++ AVR32_MNEMONIC_TLBR,
++ AVR32_MNEMONIC_TLBS,
++ AVR32_MNEMONIC_TLBW,
++ AVR32_MNEMONIC_TNBZ,
++ AVR32_MNEMONIC_TST,
++ AVR32_MNEMONIC_XCHG,
++ AVR32_MNEMONIC_MEMC,
++ AVR32_MNEMONIC_MEMS,
++ AVR32_MNEMONIC_MEMT,
++ AVR32_MNEMONIC_FADD_S,
++ AVR32_MNEMONIC_FADD_D,
++ AVR32_MNEMONIC_FSUB_S,
++ AVR32_MNEMONIC_FSUB_D,
++ AVR32_MNEMONIC_FMAC_S,
++ AVR32_MNEMONIC_FMAC_D,
++ AVR32_MNEMONIC_FNMAC_S,
++ AVR32_MNEMONIC_FNMAC_D,
++ AVR32_MNEMONIC_FMSC_S,
++ AVR32_MNEMONIC_FMSC_D,
++ AVR32_MNEMONIC_FNMSC_S,
++ AVR32_MNEMONIC_FNMSC_D,
++ AVR32_MNEMONIC_FMUL_S,
++ AVR32_MNEMONIC_FMUL_D,
++ AVR32_MNEMONIC_FNMUL_S,
++ AVR32_MNEMONIC_FNMUL_D,
++ AVR32_MNEMONIC_FNEG_S,
++ AVR32_MNEMONIC_FNEG_D,
++ AVR32_MNEMONIC_FABS_S,
++ AVR32_MNEMONIC_FABS_D,
++ AVR32_MNEMONIC_FCMP_S,
++ AVR32_MNEMONIC_FCMP_D,
++ AVR32_MNEMONIC_FMOV_S,
++ AVR32_MNEMONIC_FMOV_D,
++ AVR32_MNEMONIC_FCASTS_D,
++ AVR32_MNEMONIC_FCASTD_S,
++ /* AVR32_MNEMONIC_FLD_S,
++ AVR32_MNEMONIC_FLD_D,
++ AVR32_MNEMONIC_FST_S,
++ AVR32_MNEMONIC_FST_D, */
++ AVR32_MNEMONIC_LDA_W,
++ AVR32_MNEMONIC_CALL,
++ AVR32_MNEMONIC_PICOSVMAC,
++ AVR32_MNEMONIC_PICOSVMUL,
++ AVR32_MNEMONIC_PICOVMAC,
++ AVR32_MNEMONIC_PICOVMUL,
++ AVR32_MNEMONIC_PICOLD_D,
++ AVR32_MNEMONIC_PICOLD_W,
++ AVR32_MNEMONIC_PICOLDM_D,
++ AVR32_MNEMONIC_PICOLDM_W,
++ AVR32_MNEMONIC_PICOMV_D,
++ AVR32_MNEMONIC_PICOMV_W,
++ AVR32_MNEMONIC_PICOST_D,
++ AVR32_MNEMONIC_PICOST_W,
++ AVR32_MNEMONIC_PICOSTM_D,
++ AVR32_MNEMONIC_PICOSTM_W,
++ AVR32_MNEMONIC__END_
++};
++#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
++
++enum avr32_syntax_parser
++ {
++ AVR32_PARSER_NORMAL,
++ AVR32_PARSER_ALIAS,
++ AVR32_PARSER_LDA,
++ AVR32_PARSER_CALL,
++ AVR32_PARSER__END_
++ };
++#define AVR32_NR_PARSERS AVR32_PARSER__END_
+diff -Nrup binutils-2.17/opcodes/config.in binutils-2.17.atmel.1.3.0/opcodes/config.in
+--- binutils-2.17/opcodes/config.in 2005-03-31 18:52:53.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/opcodes/config.in 2007-03-26 10:31:37.000000000 +0200
+@@ -138,7 +138,7 @@
+
+ /* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+- automatically deduced at run-time.
++ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+@@ -159,8 +159,8 @@
+ #undef inline
+ #endif
+
+-/* Define to `long' if <sys/types.h> does not define. */
++/* Define to `long int' if <sys/types.h> does not define. */
+ #undef off_t
+
+-/* Define to `unsigned' if <sys/types.h> does not define. */
++/* Define to `unsigned int' if <sys/types.h> does not define. */
+ #undef size_t
+diff -Nrup binutils-2.17/opcodes/configure binutils-2.17.atmel.1.3.0/opcodes/configure
+--- binutils-2.17/opcodes/configure 2006-02-17 15:36:28.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/configure 2007-03-26 10:31:36.000000000 +0200
+@@ -1,25 +1,54 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.59.
++# Generated by GNU Autoconf 2.61.
+ #
+-# Copyright (C) 2003 Free Software Foundation, Inc.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -29,8 +58,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -44,18 +108,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -63,157 +128,388 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
++# CDPATH.
++$as_unset CDPATH
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
++if test "x$CONFIG_SHELL" = x; then
++ if (eval ":") 2>/dev/null; then
++ as_have_required=yes
++else
++ as_have_required=no
++fi
++
++ if test $as_have_required = yes && (eval ":
++(as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
+ fi
+
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0) || { (exit 1); exit 1; }
++
++(
++ as_lineno_1=\$LINENO
++ as_lineno_2=\$LINENO
++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
++") 2> /dev/null; then
++ :
++else
++ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
++ case $as_dir in
+ /*)
+- if ("$as_dir/$as_base" -c '
++ for as_base in sh bash ksh sh5; do
++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
++ done;;
++ esac
++done
++IFS=$as_save_IFS
++
++
++ for as_shell in $as_candidate_shells $SHELL; do
++ # Try only shells that exist, to save several forks.
++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
++ { ("$as_shell") 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++_ASEOF
++}; then
++ CONFIG_SHELL=$as_shell
++ as_have_required=yes
++ if { "$as_shell" 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++(as_func_return () {
++ (exit $1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = "$1" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test $exitcode = 0) || { (exit 1); exit 1; }
++
++(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
++
++_ASEOF
++}; then
++ break
++fi
++
++fi
++
++ done
++
++ if test "x$CONFIG_SHELL" != x; then
++ for as_var in BASH_ENV ENV
++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ done
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
++fi
++
++
++ if test $as_have_required = no; then
++ echo This script requires a shell more modern than all the
++ echo shells that I found on your system. Please install a
++ echo modern shell, or manually run the script under such a
++ echo shell if you do have one.
++ { (exit 1); exit 1; }
++fi
++
++
++fi
++
++fi
++
++
++
++(eval "as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0") || {
++ echo No shell found that supports shell functions.
++ echo Please tell autoconf@gnu.org about your system,
++ echo including any error possibly output before this
++ echo message
++}
++
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
++ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -222,7 +518,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+
++exec 7<&0 </dev/null 6>&1
+
+ # Name of the host.
+ # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+ # so uname gets run too.
+ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+-exec 6>&1
+-
+ #
+ # Initializations.
+ #
+ ac_default_prefix=/usr/local
++ac_clean_files=
+ ac_config_libobj_dir=.
++LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete. It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+ # Identity of this package.
+ PACKAGE_NAME=
+ PACKAGE_TARNAME=
+@@ -275,42 +580,187 @@ ac_unique_file="z8k-dis.c"
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#if HAVE_SYS_TYPES_H
++#ifdef HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#if HAVE_SYS_STAT_H
++#ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#if STDC_HEADERS
++#ifdef STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# if HAVE_STDLIB_H
++# ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#if HAVE_STRINGS_H
++#ifdef HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#if HAVE_INTTYPES_H
++#ifdef HAVE_INTTYPES_H
+ # include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-# include <stdint.h>
+-# endif
+ #endif
+-#if HAVE_UNISTD_H
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL WARN_CFLAGS NO_WERROR MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INSTALL_LIBBFD_TRUE INSTALL_LIBBFD_FALSE host_noncanonical target_noncanonical bfdlibdir bfdincludedir CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l CC_FOR_BUILD EXEEXT_FOR_BUILD HDEFINES CGEN_MAINT_TRUE CGEN_MAINT_FALSE cgendir WIN32LDFLAGS WIN32LIBADD archdefs BFD_MACHINES LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL
++PATH_SEPARATOR
++PACKAGE_NAME
++PACKAGE_TARNAME
++PACKAGE_VERSION
++PACKAGE_STRING
++PACKAGE_BUGREPORT
++exec_prefix
++prefix
++program_transform_name
++bindir
++sbindir
++libexecdir
++datarootdir
++datadir
++sysconfdir
++sharedstatedir
++localstatedir
++includedir
++oldincludedir
++docdir
++infodir
++htmldir
++dvidir
++pdfdir
++psdir
++libdir
++localedir
++mandir
++DEFS
++ECHO_C
++ECHO_N
++ECHO_T
++LIBS
++build_alias
++host_alias
++target_alias
++build
++build_cpu
++build_vendor
++build_os
++host
++host_cpu
++host_vendor
++host_os
++target
++target_cpu
++target_vendor
++target_os
++CC
++CFLAGS
++LDFLAGS
++CPPFLAGS
++ac_ct_CC
++EXEEXT
++OBJEXT
++INSTALL_PROGRAM
++INSTALL_SCRIPT
++INSTALL_DATA
++CYGPATH_W
++PACKAGE
++VERSION
++ACLOCAL
++AUTOCONF
++AUTOMAKE
++AUTOHEADER
++MAKEINFO
++install_sh
++STRIP
++INSTALL_STRIP_PROGRAM
++mkdir_p
++AWK
++SET_MAKE
++am__leading_dot
++AMTAR
++am__tar
++am__untar
++DEPDIR
++am__include
++am__quote
++AMDEP_TRUE
++AMDEP_FALSE
++AMDEPBACKSLASH
++CCDEPMODE
++am__fastdepCC_TRUE
++am__fastdepCC_FALSE
++AR
++RANLIB
++LN_S
++LIBTOOL
++WARN_CFLAGS
++NO_WERROR
++MAINTAINER_MODE_TRUE
++MAINTAINER_MODE_FALSE
++MAINT
++INSTALL_LIBBFD_TRUE
++INSTALL_LIBBFD_FALSE
++host_noncanonical
++target_noncanonical
++bfdlibdir
++bfdincludedir
++CPP
++GREP
++EGREP
++ALLOCA
++USE_NLS
++MSGFMT
++GMSGFMT
++XGETTEXT
++USE_INCLUDED_LIBINTL
++CATALOGS
++CATOBJEXT
++DATADIRNAME
++GMOFILES
++INSTOBJEXT
++INTLDEPS
++INTLLIBS
++INTLOBJS
++POFILES
++POSUB
++INCLUDE_LOCALE_H
++GT_NO
++GT_YES
++MKINSTALLDIRS
++l
++CC_FOR_BUILD
++EXEEXT_FOR_BUILD
++HDEFINES
++CGEN_MAINT_TRUE
++CGEN_MAINT_FALSE
++cgendir
++WIN32LDFLAGS
++WIN32LIBADD
++archdefs
++BFD_MACHINES
++LIBOBJS
++LTLIBOBJS'
+ ac_subst_files=''
++ ac_precious_vars='build_alias
++host_alias
++target_alias
++CC
++CFLAGS
++LDFLAGS
++LIBS
++CPPFLAGS
++CPP'
++
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -337,34 +787,48 @@ x_libraries=NONE
+ # and all the variables that are supposed to be based on exec_prefix
+ # by default will actually change.
+ # Use braces instead of parens because sh, perl, etc. also accept them.
++# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datadir='${prefix}/share'
++datarootdir='${prefix}/share'
++datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+-libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-infodir='${prefix}/info'
+-mandir='${prefix}/man'
++docdir='${datarootdir}/doc/${PACKAGE}'
++infodir='${datarootdir}/info'
++htmldir='${docdir}'
++dvidir='${docdir}'
++pdfdir='${docdir}'
++psdir='${docdir}'
++libdir='${exec_prefix}/lib'
++localedir='${datarootdir}/locale'
++mandir='${datarootdir}/man'
+
+ ac_prev=
++ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval "$ac_prev=\$ac_option"
++ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++ case $ac_option in
++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
++ *) ac_optarg=yes ;;
++ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_option in
++ case $ac_dashdash$ac_option in
++ --)
++ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -386,33 +850,45 @@ do
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+- | --da=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
++ | --dataroo | --dataro | --datar)
++ ac_prev=datarootdir ;;
++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
++ datarootdir=$ac_optarg ;;
++
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- eval "enable_$ac_feature=no" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=no ;;
++
++ -docdir | --docdir | --docdi | --doc | --do)
++ ac_prev=docdir ;;
++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
++ docdir=$ac_optarg ;;
++
++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
++ ac_prev=dvidir ;;
++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
++ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "enable_$ac_feature='$ac_optarg'" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -439,6 +915,12 @@ do
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
++ ac_prev=htmldir ;;
++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
++ | --ht=*)
++ htmldir=$ac_optarg ;;
++
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -463,13 +945,16 @@ do
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
++ -localedir | --localedir | --localedi | --localed | --locale)
++ ac_prev=localedir ;;
++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
++ localedir=$ac_optarg ;;
++
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst \
+- | --locals | --local | --loca | --loc | --lo)
++ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -534,6 +1019,16 @@ do
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
++ ac_prev=pdfdir ;;
++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
++ pdfdir=$ac_optarg ;;
++
++ -psdir | --psdir | --psdi | --psd | --ps)
++ ac_prev=psdir ;;
++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
++ psdir=$ac_optarg ;;
++
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -586,24 +1081,20 @@ do
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package| sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "with_$ac_package='$ac_optarg'" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package | sed 's/-/_/g'`
+- eval "with_$ac_package=no" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -634,8 +1125,7 @@ Try \`$0 --help' for more information."
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+- eval "$ac_envvar='$ac_optarg'"
++ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+@@ -655,27 +1145,19 @@ if test -n "$ac_prev"; then
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
+-do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
+- esac
+-done
+-
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+- localstatedir libdir includedir oldincludedir infodir mandir
++# Be sure to have absolute directory names.
++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
++ datadir sysconfdir sharedstatedir localstatedir includedir \
++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
++ libdir localedir mandir
+ do
+- eval ac_val=$`echo $ac_var`
++ eval ac_val=\$$ac_var
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
++ [\\/$]* | ?:[\\/]* ) continue;;
++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -702,74 +1184,76 @@ test -n "$host_alias" && ac_tool_prefix=
+ test "$silent" = yes && exec 6>/dev/null
+
+
++ac_pwd=`pwd` && test -n "$ac_pwd" &&
++ac_ls_di=`ls -di .` &&
++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
++ { echo "$as_me: error: Working directory cannot be determined" >&2
++ { (exit 1); exit 1; }; }
++test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
++ { echo "$as_me: error: pwd does not report name of working directory" >&2
++ { (exit 1); exit 1; }; }
++
++
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+- # Try the directory containing this script, then its parent.
+- ac_confdir=`(dirname "$0") 2>/dev/null ||
++ # Try the directory containing this script, then the parent directory.
++ ac_confdir=`$as_dirname -- "$0" ||
+ $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$0" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r $srcdir/$ac_unique_file; then
++ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r $srcdir/$ac_unique_file; then
+- if test "$ac_srcdir_defaulted" = yes; then
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+- { (exit 1); exit 1; }; }
+- else
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+- { (exit 1); exit 1; }; }
+- fi
+-fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+- { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
++if test ! -r "$srcdir/$ac_unique_file"; then
++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++ { (exit 1); exit 1; }; }
++fi
++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
++ac_abs_confdir=`(
++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
++ { (exit 1); exit 1; }; }
++ pwd)`
++# When building in place, set srcdir=.
++if test "$ac_abs_confdir" = "$ac_pwd"; then
++ srcdir=.
++fi
++# Remove unnecessary trailing slashes from srcdir.
++# Double slashes in file names in object file debugging info
++# mess up M-x gdb in Emacs.
++case $srcdir in
++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
++esac
++for ac_var in $ac_precious_vars; do
++ eval ac_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_env_${ac_var}_value=\$${ac_var}
++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_cv_env_${ac_var}_value=\$${ac_var}
++done
+
+ #
+ # Report the --help message.
+@@ -798,9 +1282,6 @@ Configuration:
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-_ACEOF
+-
+- cat <<_ACEOF
+ Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+@@ -818,15 +1299,22 @@ Fine tuning of the installation director
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+- --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+- --infodir=DIR info documentation [PREFIX/info]
+- --mandir=DIR man documentation [PREFIX/man]
++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
++ --infodir=DIR info documentation [DATAROOTDIR/info]
++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
++ --mandir=DIR man documentation [DATAROOTDIR/man]
++ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
++ --htmldir=DIR html documentation [DOCDIR]
++ --dvidir=DIR dvi documentation [DOCDIR]
++ --pdfdir=DIR pdf documentation [DOCDIR]
++ --psdir=DIR ps documentation [DOCDIR]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -878,126 +1366,95 @@ Some influential environment variables:
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+- headers in a nonstandard directory <include dir>
++ LIBS libraries to pass to the linker, e.g. -l<library>
++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
++ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ _ACEOF
++ac_status=$?
+ fi
+
+ if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+- ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+- test -d $ac_dir || continue
++ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+-
+- cd $ac_dir
+- # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f $ac_srcdir/configure.gnu; then
+- echo
+- $SHELL $ac_srcdir/configure.gnu --help=recursive
+- elif test -f $ac_srcdir/configure; then
+- echo
+- $SHELL $ac_srcdir/configure --help=recursive
+- elif test -f $ac_srcdir/configure.ac ||
+- test -f $ac_srcdir/configure.in; then
+- echo
+- $ac_configure --help
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
++
++ cd "$ac_dir" || { ac_status=$?; continue; }
++ # Check for guested configure.
++ if test -f "$ac_srcdir/configure.gnu"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
++ elif test -f "$ac_srcdir/configure"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+- fi
+- cd $ac_popdir
++ fi || ac_status=$?
++ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+ fi
+
+-test -n "$ac_init_help" && exit 0
++test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+ cat <<\_ACEOF
++configure
++generated by GNU Autoconf 2.61
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+- exit 0
++ exit
+ fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
++cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
++exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1016,7 +1473,7 @@ uname -v = `(uname -v) 2>/dev/null || ec
+ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+ /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+ /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+ /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+ /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+ /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+@@ -1030,6 +1487,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
++IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1051,7 +1509,6 @@ _ACEOF
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
+-ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1062,7 +1519,7 @@ do
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+@@ -1084,9 +1541,7 @@ do
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
++ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+@@ -1097,8 +1552,8 @@ $as_unset ac_configure_args1 || test "${
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log. We remove comments because anyway the quotes in there
+ # would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
++# WARNING: Use '\'' to represent an apostrophe within the trap.
++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+ trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+@@ -1111,20 +1566,34 @@ trap 'exit_status=$?
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
+ (set) 2>&1 |
+- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ sed -n \
+- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+- ;;
++ "s/'\''/'\''\\\\'\'''\''/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
++ ;; #(
+ *)
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-}
++ esac |
++ sort
++)
+ echo
+
+ cat <<\_ASBOX
+@@ -1135,22 +1604,28 @@ _ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
++## ------------------- ##
++## File substitutions. ##
++## ------------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+@@ -1162,26 +1637,24 @@ _ASBOX
+ ## ----------- ##
+ _ASBOX
+ echo
+- sed "/^$/d" confdefs.h | sort
++ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+- rm -f core *.core &&
+- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core core.conftest.* &&
++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+- ' 0
++' 0
+ for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+ done
+ ac_signal=0
+
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
++rm -f -r conftest* confdefs.h
+
+ # Predefined preprocessor variables.
+
+@@ -1212,14 +1685,17 @@ _ACEOF
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -z "$CONFIG_SITE"; then
+- if test "x$prefix" != xNONE; then
+- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+- else
+- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+- fi
++if test -n "$CONFIG_SITE"; then
++ set x "$CONFIG_SITE"
++elif test "x$prefix" != xNONE; then
++ set x "$prefix/share/config.site" "$prefix/etc/config.site"
++else
++ set x "$ac_default_prefix/share/config.site" \
++ "$ac_default_prefix/etc/config.site"
+ fi
+-for ac_site_file in $CONFIG_SITE; do
++shift
++for ac_site_file
++do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+ echo "$as_me: loading site script $ac_site_file" >&6;}
+@@ -1235,8 +1711,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -1248,12 +1724,11 @@ fi
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
++for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+- eval ac_new_val="\$ac_env_${ac_var}_value"
++ eval ac_old_val=\$ac_cv_env_${ac_var}_value
++ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+@@ -1278,8 +1753,7 @@ echo "$as_me: current value: $ac_new_v
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1296,12 +1770,6 @@ echo "$as_me: error: run \`make distclea
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+
+
+
+@@ -1318,109 +1786,164 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ ac_aux_dir=
+-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+- if test -f $ac_dir/install-sh; then
++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
++ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f $ac_dir/install.sh; then
++ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f $ac_dir/shtool; then
++ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+ done
+ if test -z "$ac_aux_dir"; then
+- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++
++# These three variables are undocumented and unsupported,
++# and are intended to be withdrawn in a future Autoconf release.
++# They can cause serious problems if a builder's source tree is in a directory
++# whose full name contains unusual characters.
++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
++
+
+ # Make sure we can run config.sub.
+-$ac_config_sub sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+-echo "$as_me:$LINENO: checking build system type" >&5
+-echo $ECHO_N "checking build system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking build system type" >&5
++echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+ if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_build_alias=$build_alias
+-test -z "$ac_cv_build_alias" &&
+- ac_cv_build_alias=`$ac_config_guess`
+-test -z "$ac_cv_build_alias" &&
++ ac_build_alias=$build_alias
++test "x$ac_build_alias" = x &&
++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
++test "x$ac_build_alias" = x &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+ echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6; }
++case $ac_cv_build in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
++echo "$as_me: error: invalid value of canonical build" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ build=$ac_cv_build
+-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_build
++shift
++build_cpu=$1
++build_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++build_os=$*
++IFS=$ac_save_IFS
++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking host system type" >&5
++echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+ if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_host_alias=$host_alias
+-test -z "$ac_cv_host_alias" &&
+- ac_cv_host_alias=$ac_cv_build_alias
+-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
++ if test "x$host_alias" = x; then
++ ac_cv_host=$ac_cv_build
++else
++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6; }
++case $ac_cv_host in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
++echo "$as_me: error: invalid value of canonical host" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ host=$ac_cv_host
+-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_host
++shift
++host_cpu=$1
++host_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++host_os=$*
++IFS=$ac_save_IFS
++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking target system type" >&5
++echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
+ if test "${ac_cv_target+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_target_alias=$target_alias
+-test "x$ac_cv_target_alias" = "x" &&
+- ac_cv_target_alias=$ac_cv_host_alias
+-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
++ if test "x$target_alias" = x; then
++ ac_cv_target=$ac_cv_host
++else
++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
++echo "${ECHO_T}$ac_cv_target" >&6; }
++case $ac_cv_target in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
++echo "$as_me: error: invalid value of canonical target" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ target=$ac_cv_target
+-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_target
++shift
++target_cpu=$1
++target_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++target_os=$*
++IFS=$ac_save_IFS
++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+ # The aliases save the names the user supplied, while $host etc.
+@@ -1437,8 +1960,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1451,32 +1974,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1489,36 +2014,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1531,74 +2071,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1612,7 +2112,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -1623,6 +2123,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -1640,22 +2141,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1668,36 +2170,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1710,29 +2214,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -1745,21 +2265,35 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+@@ -1784,47 +2318,77 @@ ac_clean_files="$ac_clean_files a.out a.
+ # Try to create an executable without -o first, disregard a.out.
+ # It will help us diagnose broken compilers, and finding out an intuition
+ # of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+- (eval $ac_link_default) 2>&5
++#
++# List of possible output files, starting from the most likely.
++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
++# only as a last resort. b.out is created by i960 compilers.
++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
++#
++# The IRIX 6 linker writes into existing files which may not be
++# executable, retaining their permissions. Remove them first so a
++# subsequent execution test works.
++ac_rmfiles=
++for ac_file in $ac_files
++do
++ case $ac_file in
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
++ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
++ esac
++done
++rm -f $ac_rmfiles
++
++if { (ac_try="$ac_link_default"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- # Find the output, starting from the most likely. This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
++# in a Makefile. We should not override ac_cv_exeext if it was cached,
++# so that the user can short-circuit this test for compilers unknown to
++# Autoconf.
++for ac_file in $ac_files ''
+ do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+- ;;
+- conftest.$ac_ext )
+- # This is the source file.
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- # FIXME: I believe we export ac_cv_exeext for Libtool,
+- # but it would be cool to find out if it's true. Does anybody
+- # maintain Libtool? --akim.
+- export ac_cv_exeext
++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
++ then :; else
++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ fi
++ # We set ac_cv_exeext here because the later test for it is not
++ # safe: cross compilers may not add the suffix if given an `-o'
++ # argument, so we may need to know it at that point already.
++ # Even if this section looks crufty: it has the advantage of
++ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+ done
++test "$ac_cv_exeext" = no && ac_cv_exeext=
++
+ else
++ ac_file=''
++fi
++
++{ echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6; }
++if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -1836,19 +2400,21 @@ See \`config.log' for more details." >&2
+ fi
+
+ ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+ # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+ # If not cross compiling, check that we can run a simple program.
+ if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -1867,22 +2433,27 @@ See \`config.log' for more details." >&2
+ fi
+ fi
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
++echo "${ECHO_T}$cross_compiling" >&6; }
++
++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -1893,9 +2464,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
+ for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -1909,14 +2479,14 @@ See \`config.log' for more details." >&2
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
++echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+ rm -f conftest.$ac_ext
+ EXEEXT=$ac_cv_exeext
+ ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+ if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1936,14 +2506,20 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
++ for ac_file in conftest.o conftest.obj conftest.*; do
++ test -f "$ac_file" || continue;
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -1961,12 +2537,12 @@ fi
+
+ rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
++echo "${ECHO_T}$ac_cv_objext" >&6; }
+ OBJEXT=$ac_cv_objext
+ ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1989,50 +2565,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -2048,38 +2623,118 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -2095,12 +2750,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -2134,12 +2789,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -2154,335 +2814,144 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
++if test "${ac_cv_search_strerror+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_func_search_save_LIBS=$LIBS
+ cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char strerror ();
+ int
+ main ()
+ {
+-exit (42);
++return strerror ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++for ac_lib in '' cposix; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_strerror=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_strerror+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-echo "$as_me:$LINENO: checking for library containing strerror" >&5
+-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
++done
+ if test "${ac_cv_search_strerror+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_strerror=no
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="none required"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_strerror" = no; then
+- for ac_lib in cposix; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="-l$ac_lib"
+-break
++ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++ ac_cv_search_strerror=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+-echo "${ECHO_T}$ac_cv_search_strerror" >&6
+-if test "$ac_cv_search_strerror" != no; then
+- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
++echo "${ECHO_T}$ac_cv_search_strerror" >&6; }
++ac_res=$ac_cv_search_strerror
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+@@ -2506,8 +2975,8 @@ am__api_version="1.9"
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -2529,7 +2998,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -2548,21 +3017,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -2572,8 +3042,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
+
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+ # Just in case
+ sleep 1
+ echo timestamp > conftest.file
+@@ -2615,20 +3085,20 @@ echo "$as_me: error: newly created file
+ Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ test "$program_prefix" != NONE &&
+- program_transform_name="s,^,$program_prefix,;$program_transform_name"
++ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+ # Use a double $ so make ignores it.
+ test "$program_suffix" != NONE &&
+- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
++ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+ # Double any \ or $. echo might interpret backslashes.
+ # By default was `s,x,x', remove it if useless.
+ cat <<\_ACEOF >conftest.sed
+ s/[\\$]/&&/g;s/;s,x,x,$//
+ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+-rm conftest.sed
++rm -f conftest.sed
+
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+@@ -2680,8 +3150,8 @@ for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2694,54 +3164,57 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ AWK=$ac_cv_prog_AWK
+ if test -n "$AWK"; then
+- echo "$as_me:$LINENO: result: $AWK" >&5
+-echo "${ECHO_T}$AWK" >&6
++ { echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$AWK" && break
+ done
+
+-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
++SHELL = /bin/sh
+ all:
+- @echo 'ac_maketemp="$(MAKE)"'
++ @echo '@@@%%%=$(MAKE)=@@@%%%'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+-if test -n "$ac_maketemp"; then
+- eval ac_cv_prog_make_${ac_make}_set=yes
+-else
+- eval ac_cv_prog_make_${ac_make}_set=no
+-fi
++case `${MAKE-make} -f conftest.make 2>/dev/null` in
++ *@@@%%%=?*=@@@%%%*)
++ eval ac_cv_prog_make_${ac_make}_set=yes;;
++ *)
++ eval ac_cv_prog_make_${ac_make}_set=no;;
++esac
+ rm -f conftest.make
+ fi
+-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -2756,7 +3229,7 @@ rmdir .tst 2>/dev/null
+
+ DEPDIR="${am__leading_dot}deps"
+
+- ac_config_commands="$ac_config_commands depfiles"
++ac_config_commands="$ac_config_commands depfiles"
+
+
+ am_make=${MAKE-make}
+@@ -2766,8 +3239,8 @@ am__doit:
+ .PHONY: am__doit
+ END
+ # If we don't find an include directive, just comment out the code.
+-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+ am__include="#"
+ am__quote=
+ _am_result=none
+@@ -2794,15 +3267,15 @@ if test "$am__include" = "#"; then
+ fi
+
+
+-echo "$as_me:$LINENO: result: $_am_result" >&5
+-echo "${ECHO_T}$_am_result" >&6
++{ echo "$as_me:$LINENO: result: $_am_result" >&5
++echo "${ECHO_T}$_am_result" >&6; }
+ rm -f confinc confmf
+
+-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
++# Check whether --enable-dependency-tracking was given.
+ if test "${enable_dependency_tracking+set}" = set; then
+- enableval="$enable_dependency_tracking"
++ enableval=$enable_dependency_tracking;
++fi
+
+-fi;
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -2877,8 +3350,8 @@ if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2891,32 +3364,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2929,27 +3404,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -2970,8 +3459,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am
+
+ depcc="$CC" am_compiler_list=
+
+-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+ if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3060,8 +3549,8 @@ else
+ fi
+
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+ CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+@@ -3082,8 +3571,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3096,32 +3585,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ AR=$ac_cv_prog_AR
+ if test -n "$AR"; then
+- echo "$as_me:$LINENO: result: $AR" >&5
+-echo "${ECHO_T}$AR" >&6
++ { echo "$as_me:$LINENO: result: $AR" >&5
++echo "${ECHO_T}$AR" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+ set dummy ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3134,26 +3625,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_AR=$ac_cv_prog_ac_ct_AR
+ if test -n "$ac_ct_AR"; then
+- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+-echo "${ECHO_T}$ac_ct_AR" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
++echo "${ECHO_T}$ac_ct_AR" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- AR=$ac_ct_AR
++ if test "x$ac_ct_AR" = x; then
++ AR=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ AR=$ac_ct_AR
++ fi
+ else
+ AR="$ac_cv_prog_AR"
+ fi
+@@ -3161,8 +3667,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3175,32 +3681,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3213,36 +3721,49 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+
+
+-# Check whether --enable-shared or --disable-shared was given.
++# Check whether --enable-shared was given.
+ if test "${enable_shared+set}" = set; then
+- enableval="$enable_shared"
+- p=${PACKAGE-default}
++ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+@@ -3260,12 +3781,12 @@ no) enable_shared=no ;;
+ esac
+ else
+ enable_shared=no
+-fi;
++fi
++
+
+-# Check whether --enable-static or --disable-static was given.
++# Check whether --enable-static was given.
+ if test "${enable_static+set}" = set; then
+- enableval="$enable_static"
+- p=${PACKAGE-default}
++ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+@@ -3283,11 +3804,11 @@ no) enable_static=no ;;
+ esac
+ else
+ enable_static=yes
+-fi;
+-# Check whether --enable-fast-install or --disable-fast-install was given.
++fi
++
++# Check whether --enable-fast-install was given.
+ if test "${enable_fast_install+set}" = set; then
+- enableval="$enable_fast_install"
+- p=${PACKAGE-default}
++ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+@@ -3305,20 +3826,21 @@ no) enable_fast_install=no ;;
+ esac
+ else
+ enable_fast_install=yes
+-fi;
++fi
++
+
+-# Check whether --with-gnu-ld or --without-gnu-ld was given.
++# Check whether --with-gnu-ld was given.
+ if test "${with_gnu_ld+set}" = set; then
+- withval="$with_gnu_ld"
+- test "$withval" = no || with_gnu_ld=yes
++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ else
+ with_gnu_ld=no
+-fi;
++fi
++
+ ac_prog=ld
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+- echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+@@ -3347,11 +3869,11 @@ echo $ECHO_N "checking for ld used by GC
+ ;;
+ esac
+ elif test "$with_gnu_ld" = yes; then
+- echo "$as_me:$LINENO: checking for GNU ld" >&5
+-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+ else
+- echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+ fi
+ if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -3380,17 +3902,17 @@ fi
+
+ LD="$lt_cv_path_LD"
+ if test -n "$LD"; then
+- echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6
++ { echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+ echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+ if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3401,25 +3923,25 @@ else
+ lt_cv_prog_gnu_ld=no
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+ with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ lt_cv_ld_reload_flag='-r'
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
+ reload_flag=$lt_cv_ld_reload_flag
+ test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
+ if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3454,22 +3976,22 @@ fi
+ fi
+
+ NM="$lt_cv_path_NM"
+-echo "$as_me:$LINENO: result: $NM" >&5
+-echo "${ECHO_T}$NM" >&6
++{ echo "$as_me:$LINENO: result: $NM" >&5
++echo "${ECHO_T}$NM" >&6; }
+
+-echo "$as_me:$LINENO: checking whether ln -s works" >&5
+-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+ LN_S=$as_ln_s
+ if test "$LN_S" = "ln -s"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+-echo "${ECHO_T}no, using $LN_S" >&6
++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6; }
+ fi
+
+-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
+-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; }
+ if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3631,8 +4153,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ esac
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+
+@@ -3642,8 +4164,8 @@ deplibs_check_method=$lt_cv_deplibs_chec
+ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+ # find the maximum length of command line arguments
+-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+ if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3694,11 +4216,11 @@ else
+ fi
+
+ if test -n "$lt_cv_sys_max_cmd_len" ; then
+- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+ else
+- echo "$as_me:$LINENO: result: none" >&5
+-echo "${ECHO_T}none" >&6
++ { echo "$as_me:$LINENO: result: none" >&5
++echo "${ECHO_T}none" >&6; }
+ fi
+
+
+@@ -3706,8 +4228,8 @@ fi
+ case $deplibs_check_method in
+ file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3761,17 +4283,17 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+- echo "$as_me:$LINENO: checking for file" >&5
+-echo $ECHO_N "checking for file... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for file" >&5
++echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+ if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3825,11 +4347,11 @@ fi
+
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if test -n "$MAGIC_CMD"; then
+- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+-echo "${ECHO_T}$MAGIC_CMD" >&6
++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
++echo "${ECHO_T}$MAGIC_CMD" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ else
+@@ -3844,8 +4366,8 @@ esac
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3858,32 +4380,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3896,27 +4420,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -3924,8 +4462,8 @@ fi
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3938,32 +4476,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ STRIP=$ac_cv_prog_STRIP
+ if test -n "$STRIP"; then
+- echo "$as_me:$LINENO: result: $STRIP" >&5
+-echo "${ECHO_T}$STRIP" >&6
++ { echo "$as_me:$LINENO: result: $STRIP" >&5
++echo "${ECHO_T}$STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3976,27 +4516,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+ fi
+ fi
+ ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+ if test -n "$ac_ct_STRIP"; then
+- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+-echo "${ECHO_T}$ac_ct_STRIP" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
++echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- STRIP=$ac_ct_STRIP
++ if test "x$ac_ct_STRIP" = x; then
++ STRIP=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ STRIP=$ac_ct_STRIP
++ fi
+ else
+ STRIP="$ac_cv_prog_STRIP"
+ fi
+@@ -4011,22 +4565,22 @@ test "$GCC" = yes && libtool_flags="$lib
+ test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+
+
+-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
++# Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then
+- enableval="$enable_libtool_lock"
++ enableval=$enable_libtool_lock;
++fi
+
+-fi;
+ test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+
+-# Check whether --with-pic or --without-pic was given.
++# Check whether --with-pic was given.
+ if test "${with_pic+set}" = set; then
+- withval="$with_pic"
+- pic_mode="$withval"
++ withval=$with_pic; pic_mode="$withval"
+ else
+ pic_mode=default
+-fi;
++fi
++
+ test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
+ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
+
+@@ -4035,7 +4589,7 @@ test x"$pic_mode" = xno && libtool_flags
+ case $host in
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 4038 "configure"' > conftest.$ac_ext
++ echo '#line 4592 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -4140,13 +4694,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+ if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+
+-
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -4169,35 +4722,32 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ lt_cv_cc_needs_belf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-lt_cv_cc_needs_belf=no
++ lt_cv_cc_needs_belf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -4206,8 +4756,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+@@ -4237,39 +4787,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -4295,8 +4864,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -4322,10 +4891,9 @@ exec 5>>./config.log
+
+
+
+-# Check whether --enable-targets or --disable-targets was given.
++# Check whether --enable-targets was given.
+ if test "${enable_targets+set}" = set; then
+- enableval="$enable_targets"
+- case "${enableval}" in
++ enableval=$enable_targets; case "${enableval}" in
+ yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5
+ echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;}
+ { (exit 1); exit 1; }; }
+@@ -4333,31 +4901,32 @@ echo "$as_me: error: enable-targets opti
+ no) enable_targets= ;;
+ *) enable_targets=$enableval ;;
+ esac
+-fi; # Check whether --enable-commonbfdlib or --disable-commonbfdlib was given.
++fi
++# Check whether --enable-commonbfdlib was given.
+ if test "${enable_commonbfdlib+set}" = set; then
+- enableval="$enable_commonbfdlib"
+- case "${enableval}" in
++ enableval=$enable_commonbfdlib; case "${enableval}" in
+ yes) commonbfdlib=true ;;
+ no) commonbfdlib=false ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for opcodes commonbfdlib option" >&5
+ echo "$as_me: error: bad value ${enableval} for opcodes commonbfdlib option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+-fi;
++fi
++
+
+ GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+
+-# Check whether --enable-werror or --disable-werror was given.
++# Check whether --enable-werror was given.
+ if test "${enable_werror+set}" = set; then
+- enableval="$enable_werror"
+- case "${enableval}" in
++ enableval=$enable_werror; case "${enableval}" in
+ yes | y) ERROR_ON_WARNING="yes" ;;
+ no | n) ERROR_ON_WARNING="no" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5
+ echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+-fi;
++fi
++
+
+ # Enable -Werror by default when using gcc
+ if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
+@@ -4374,10 +4943,9 @@ if test "${GCC}" = yes ; then
+ WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+ fi
+
+-# Check whether --enable-build-warnings or --disable-build-warnings was given.
++# Check whether --enable-build-warnings was given.
+ if test "${enable_build_warnings+set}" = set; then
+- enableval="$enable_build_warnings"
+- case "${enableval}" in
++ enableval=$enable_build_warnings; case "${enableval}" in
+ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+ no) if test "${GCC}" = yes ; then
+ WARN_CFLAGS="-w"
+@@ -4388,7 +4956,8 @@ if test "${enable_build_warnings+set}" =
+ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
+ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+ esac
+-fi;
++fi
++
+
+ if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then
+ echo "Setting warning flags = $WARN_CFLAGS" 6>&1
+@@ -4398,7 +4967,7 @@ fi
+
+
+
+- ac_config_headers="$ac_config_headers config.h:config.in"
++ac_config_headers="$ac_config_headers config.h:config.in"
+
+
+ if test -z "$target" ; then
+@@ -4407,17 +4976,17 @@ echo "$as_me: error: Unrecognized target
+ { (exit 1); exit 1; }; }
+ fi
+
+-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
++ # Check whether --enable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then
+- enableval="$enable_maintainer_mode"
+- USE_MAINTAINER_MODE=$enableval
++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+ else
+ USE_MAINTAINER_MODE=no
+-fi;
+- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
+
+
+ if test $USE_MAINTAINER_MODE = yes; then
+@@ -4446,21 +5015,21 @@ esac
+ *) target_noncanonical=${target_alias} ;;
+ esac
+
+-echo "$as_me:$LINENO: checking whether to install libbfd" >&5
+-echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6
+- # Check whether --enable-install-libbfd or --disable-install-libbfd was given.
++{ echo "$as_me:$LINENO: checking whether to install libbfd" >&5
++echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6; }
++ # Check whether --enable-install-libbfd was given.
+ if test "${enable_install_libbfd+set}" = set; then
+- enableval="$enable_install_libbfd"
+- install_libbfd_p=$enableval
++ enableval=$enable_install_libbfd; install_libbfd_p=$enableval
+ else
+ if test "${host}" = "${target}" || test "$enable_shared" = "yes"; then
+ install_libbfd_p=yes
+ else
+ install_libbfd_p=no
+ fi
+-fi;
+- echo "$as_me:$LINENO: result: $install_libbfd_p" >&5
+-echo "${ECHO_T}$install_libbfd_p" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $install_libbfd_p" >&5
++echo "${ECHO_T}$install_libbfd_p" >&6; }
+
+
+ if test $install_libbfd_p = yes; then
+@@ -4499,8 +5068,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4513,32 +5082,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4551,36 +5122,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4593,74 +5179,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4674,7 +5220,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -4685,6 +5231,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -4702,22 +5249,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4730,36 +5278,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4772,29 +5322,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -4807,27 +5373,41 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4850,50 +5430,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -4909,59 +5488,139 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+-if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
+-elif test $ac_cv_prog_cc_g = yes; then
+- if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
+- else
+- CFLAGS="-g"
+- fi
+-else
+- if test "$GCC" = yes; then
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
++if test "$ac_test_CFLAGS" = set; then
++ CFLAGS=$ac_save_CFLAGS
++elif test $ac_cv_prog_cc_g = yes; then
++ if test "$GCC" = yes; then
++ CFLAGS="-g -O2"
++ else
++ CFLAGS="-g"
++ fi
++else
++ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -4995,12 +5654,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -5015,205 +5679,57 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -5225,8 +5741,8 @@ ALL_LINGUAS="fr sv tr es da de id pt_BR
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5239,32 +5755,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ RANLIB=$ac_cv_prog_RANLIB
+ if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5277,27 +5795,41 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+ ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+ if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- RANLIB=$ac_ct_RANLIB
++ if test "x$ac_ct_RANLIB" = x; then
++ RANLIB=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ RANLIB=$ac_ct_RANLIB
++ fi
+ else
+ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+@@ -5307,8 +5839,8 @@ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -5342,24 +5874,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5368,9 +5898,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5380,24 +5911,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5408,6 +5937,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5425,8 +5955,8 @@ fi
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
++{ echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6; }
+ ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+@@ -5449,24 +5979,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5475,9 +6003,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -5487,24 +6016,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -5515,6 +6042,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -5537,79 +6065,222 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Extract the first word of "grep ggrep" to use in msg output
++if test -z "$GREP"; then
++set dummy grep ggrep; ac_prog_name=$2
++if test "${ac_cv_path_GREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+- then ac_cv_prog_egrep='grep -E'
+- else ac_cv_prog_egrep='egrep'
++ ac_path_GREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
++ # Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
+ fi
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
+
+
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+-if test "${ac_cv_header_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
++ $ac_path_GREP_found && break 3
++ done
++done
+
+-int
+-main ()
+-{
++done
++IFS=$as_save_IFS
++
++
++fi
++
++GREP="$ac_cv_path_GREP"
++if test -z "$GREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_header_stdc=yes
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++ ac_cv_path_GREP=$GREP
++fi
++
+
+-ac_cv_header_stdc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
++echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
+
+-if test $ac_cv_header_stdc = yes; then
+- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+- cat >conftest.$ac_ext <<_ACEOF
++
++{ echo "$as_me:$LINENO: checking for egrep" >&5
++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ # Extract the first word of "egrep" to use in msg output
++if test -z "$EGREP"; then
++set dummy egrep; ac_prog_name=$2
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_EGREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
++ # Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_EGREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++EGREP="$ac_cv_path_EGREP"
++if test -z "$EGREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++
++ fi
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
++
++
++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++if test "${ac_cv_header_stdc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_header_stdc=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_header_stdc=no
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -5661,6 +6332,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
++#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -5680,18 +6352,27 @@ main ()
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
++ return 2;
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -5704,12 +6385,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
++echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+ if test $ac_cv_header_stdc = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5718,8 +6401,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
+ if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5737,10 +6420,10 @@ main ()
+ #ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+- const charset x;
++ const charset cs;
+ /* SunOS 4.1.1 cc rejects this. */
+- char const *const *ccp;
+- char **p;
++ char const *const *pcpcc;
++ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+@@ -5749,16 +6432,17 @@ main ()
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+- ccp = &g + (g ? g-g : 0);
++ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+- ++ccp;
+- p = (char**) ccp;
+- ccp = (char const *const *) p;
++ ++pcpcc;
++ ppc = (char**) pcpcc;
++ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
++ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+@@ -5777,7 +6461,9 @@ main ()
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
++ if (!foo) return 0;
+ }
++ return !cs[0] && !zero.x;
+ #endif
+
+ ;
+@@ -5785,38 +6471,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_c_const=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_c_const=no
++ ac_cv_c_const=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+-echo "${ECHO_T}$ac_cv_c_const" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
++echo "${ECHO_T}$ac_cv_c_const" >&6; }
+ if test $ac_cv_c_const = no; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -5825,8 +6507,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5846,39 +6528,37 @@ $ac_kw foo_t foo () {return 0; }
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_c_inline=$ac_kw; break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_c_inline=$ac_kw
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ test "$ac_cv_c_inline" != no && break
+ done
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6; }
+
+
+ case $ac_cv_c_inline in
+@@ -5910,9 +6590,9 @@ for ac_header in sys/types.h sys/stat.h
+ inttypes.h stdint.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -5926,38 +6606,35 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -5968,8 +6645,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking for off_t" >&5
+-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for off_t" >&5
++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5980,62 +6657,59 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef off_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((off_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (off_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_off_t=no
++ ac_cv_type_off_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+-echo "${ECHO_T}$ac_cv_type_off_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
++echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
+ if test $ac_cv_type_off_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define off_t long
++#define off_t long int
+ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for size_t" >&5
+-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for size_t" >&5
++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6046,64 +6720,61 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++typedef size_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((size_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (size_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_size_t=no
++ ac_cv_type_size_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+-echo "${ECHO_T}$ac_cv_type_size_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
++echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+ if test $ac_cv_type_size_t = yes; then
+ :
+ else
+
+ cat >>confdefs.h <<_ACEOF
+-#define size_t unsigned
++#define size_t unsigned int
+ _ACEOF
+
+ fi
+
+ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+ # for constant arguments. Useless!
+-echo "$as_me:$LINENO: checking for working alloca.h" >&5
+-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+ if test "${ac_cv_working_alloca_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6118,44 +6789,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (2 * sizeof (int));
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_working_alloca_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_working_alloca_h=no
++ ac_cv_working_alloca_h=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+ if test $ac_cv_working_alloca_h = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6164,8 +6833,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for alloca" >&5
+-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for alloca" >&5
++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_func_alloca_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6182,7 +6851,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ # include <malloc.h>
+ # define alloca _alloca
+ # else
+-# if HAVE_ALLOCA_H
++# ifdef HAVE_ALLOCA_H
+ # include <alloca.h>
+ # else
+ # ifdef _AIX
+@@ -6200,44 +6869,42 @@ int
+ main ()
+ {
+ char *p = (char *) alloca (1);
++ if (p) return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_alloca_works=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_func_alloca_works=no
++ ac_cv_func_alloca_works=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+ if test $ac_cv_func_alloca_works = yes; then
+
+@@ -6251,15 +6918,15 @@ else
+ # contain a buggy version. If you still want to use their alloca,
+ # use ar to extract alloca.o from them instead of compiling alloca.c.
+
+-ALLOCA=alloca.$ac_objext
++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+ cat >>confdefs.h <<\_ACEOF
+ #define C_ALLOCA 1
+ _ACEOF
+
+
+-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+ if test "${ac_cv_os_cray+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6269,7 +6936,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#if defined(CRAY) && ! defined(CRAY2)
++#if defined CRAY && ! defined CRAY2
+ webecray
+ #else
+ wenotbecray
+@@ -6285,14 +6952,14 @@ fi
+ rm -f conftest*
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+-echo "${ECHO_T}$ac_cv_os_cray" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
++echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+ if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6318,68 +6985,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6392,8 +7051,8 @@ fi
+ done
+ fi
+
+-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+ if test "${ac_cv_c_stack_direction+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6406,6 +7065,7 @@ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
++$ac_includes_default
+ int
+ find_stack_direction ()
+ {
+@@ -6423,17 +7083,26 @@ find_stack_direction ()
+ int
+ main ()
+ {
+- exit (find_stack_direction () < 0);
++ return find_stack_direction () < 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6446,11 +7115,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_c_stack_direction=-1
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+ cat >>confdefs.h <<_ACEOF
+ #define STACK_DIRECTION $ac_cv_c_stack_direction
+@@ -6464,18 +7135,19 @@ fi
+ for ac_header in stdlib.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6486,41 +7158,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6529,24 +7197,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -6554,9 +7220,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -6580,25 +7247,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -6614,9 +7275,9 @@ done
+ for ac_func in getpagesize
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6642,68 +7303,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6712,8 +7365,8 @@ _ACEOF
+ fi
+ done
+
+-echo "$as_me:$LINENO: checking for working mmap" >&5
+-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working mmap" >&5
++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; }
+ if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6755,21 +7408,21 @@ $ac_includes_default
+ #include <fcntl.h>
+ #include <sys/mman.h>
+
+-#if !STDC_HEADERS && !HAVE_STDLIB_H
++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+ char *malloc ();
+ #endif
+
+ /* This mess was copied from the GNU getpagesize.h. */
+-#if !HAVE_GETPAGESIZE
++#ifndef HAVE_GETPAGESIZE
+ /* Assume that all systems that can run configure have sys/param.h. */
+-# if !HAVE_SYS_PARAM_H
++# ifndef HAVE_SYS_PARAM_H
+ # define HAVE_SYS_PARAM_H 1
+ # endif
+
+ # ifdef _SC_PAGESIZE
+ # define getpagesize() sysconf(_SC_PAGESIZE)
+ # else /* no _SC_PAGESIZE */
+-# if HAVE_SYS_PARAM_H
++# ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ # ifdef EXEC_PAGESIZE
+ # define getpagesize() EXEC_PAGESIZE
+@@ -6808,15 +7461,15 @@ main ()
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ if (write (fd, data, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ close (fd);
+
+ /* Next, try to mmap the file at a fixed address which already has
+@@ -6824,17 +7477,17 @@ main ()
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+- exit (1);
++ return 1;
+ data2 = (char *) malloc (2 * pagesize);
+ if (!data2)
+- exit (1);
+- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
++ return 1;
++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1);
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+- exit (1);
++ return 1;
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+@@ -6843,24 +7496,33 @@ main ()
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+- exit (1);
++ return 1;
+ if (read (fd, data3, pagesize) != pagesize)
+- exit (1);
++ return 1;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+- exit (1);
++ return 1;
+ close (fd);
+- exit (0);
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -6873,11 +7535,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_func_mmap_fixed_mapped=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; }
+ if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6901,18 +7565,19 @@ for ac_header in argz.h limits.h locale.
+ unistd.h values.h sys/param.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6923,41 +7588,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6966,24 +7627,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -6991,9 +7650,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -7017,25 +7677,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -7061,9 +7715,9 @@ for ac_func in getcwd munmap putenv sete
+ __argz_count __argz_stringify __argz_next
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7089,68 +7743,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7165,9 +7811,9 @@ done
+ for ac_func in stpcpy
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7193,68 +7839,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7273,8 +7911,8 @@ _ACEOF
+ fi
+
+ if test $ac_cv_header_locale_h = yes; then
+- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; }
+ if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7294,39 +7932,36 @@ return LC_MESSAGES
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ am_cv_val_LC_MESSAGES=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-am_cv_val_LC_MESSAGES=no
++ am_cv_val_LC_MESSAGES=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; }
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -7335,34 +7970,34 @@ _ACEOF
+
+ fi
+ fi
+- echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
+- # Check whether --enable-nls or --disable-nls was given.
++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5
++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; }
++ # Check whether --enable-nls was given.
+ if test "${enable_nls+set}" = set; then
+- enableval="$enable_nls"
+- USE_NLS=$enableval
++ enableval=$enable_nls; USE_NLS=$enableval
+ else
+ USE_NLS=yes
+-fi;
+- echo "$as_me:$LINENO: result: $USE_NLS" >&5
+-echo "${ECHO_T}$USE_NLS" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6; }
+
+
+ USE_INCLUDED_LIBINTL=no
+
+ if test "$USE_NLS" = "yes"; then
+- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
+-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; }
+
+-# Check whether --with-included-gettext or --without-included-gettext was given.
++# Check whether --with-included-gettext was given.
+ if test "${with_included_gettext+set}" = set; then
+- withval="$with_included_gettext"
+- nls_cv_force_use_gnu_gettext=$withval
++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval
+ else
+ nls_cv_force_use_gnu_gettext=no
+-fi;
+- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
+-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6
++fi
++
++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; }
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+@@ -7371,17 +8006,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get
+ CATOBJEXT=
+
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking libintl.h usability" >&5
+-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5
++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7392,41 +8027,37 @@ $ac_includes_default
+ #include <libintl.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking libintl.h presence" >&5
+-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5
++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7435,24 +8066,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <libintl.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -7460,9 +8089,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -7486,30 +8116,23 @@ echo "$as_me: WARNING: libintl.h: se
+ echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for libintl.h" >&5
+-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for libintl.h" >&5
++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_libintl_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; }
+
+ fi
+ if test $ac_cv_header_libintl_h = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libc" >&5
+-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5
++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7529,43 +8152,40 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libc=no
++ gt_cv_func_gettext_libc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; }
+
+ if test "$gt_cv_func_gettext_libc" != "yes"; then
+- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; }
+ if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7578,59 +8198,56 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char bindtextdomain ();
+ int
+ main ()
+ {
+-bindtextdomain ();
++return bindtextdomain ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_intl_bindtextdomain=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_intl_bindtextdomain=no
++ ac_cv_lib_intl_bindtextdomain=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; }
+ if test $ac_cv_lib_intl_bindtextdomain = yes; then
+- echo "$as_me:$LINENO: checking for gettext in libintl" >&5
+-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5
++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; }
+ if test "${gt_cv_func_gettext_libintl+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7650,39 +8267,36 @@ return (int) gettext ("")
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_gettext_libintl=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-gt_cv_func_gettext_libintl=no
++ gt_cv_func_gettext_libintl=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
+-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6
++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5
++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; }
+ fi
+
+ fi
+@@ -7696,8 +8310,8 @@ _ACEOF
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7723,20 +8337,20 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+ if test "$MSGFMT" != "no"; then
+
+ for ac_func in dcgettext
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7762,68 +8376,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -7834,8 +8440,8 @@ done
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7850,32 +8456,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7901,11 +8508,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -7925,37 +8532,34 @@ extern int _nl_msg_cat_cntr;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-CATOBJEXT=.mo
++ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ INSTOBJEXT=.mo
+ fi
+@@ -7977,8 +8581,8 @@ fi
+ INTLOBJS="\$(GETTOBJS)"
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8004,17 +8608,17 @@ esac
+ fi
+ MSGFMT="$ac_cv_path_MSGFMT"
+ if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8029,32 +8633,33 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+ esac
+ fi
+ GMSGFMT=$ac_cv_path_GMSGFMT
+-
+ if test -n "$GMSGFMT"; then
+- echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+-echo "${ECHO_T}$GMSGFMT" >&6
++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8080,11 +8685,11 @@ esac
+ fi
+ XGETTEXT="$ac_cv_path_XGETTEXT"
+ if test -n "$XGETTEXT"; then
+- echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+-echo "${ECHO_T}$XGETTEXT" >&6
++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+
+@@ -8103,8 +8708,8 @@ fi
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
+-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6
++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5
++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ fi
+@@ -8153,8 +8758,8 @@ _ACEOF
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; }
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+@@ -8162,8 +8767,8 @@ echo $ECHO_N "checking for catalogs to b
+ esac
+ done
+ LINGUAS=$NEW_LINGUAS
+- echo "$as_me:$LINENO: result: $LINGUAS" >&5
+-echo "${ECHO_T}$LINGUAS" >&6
++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5
++echo "${ECHO_T}$LINGUAS" >&6; }
+ fi
+
+ if test -n "$LINGUAS"; then
+@@ -8182,17 +8787,17 @@ echo "${ECHO_T}$LINGUAS" >&6
+ if test -f $srcdir/po2tbl.sed.in; then
+ if test "$CATOBJEXT" = ".cat"; then
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking linux/version.h usability" >&5
+-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5
++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8203,41 +8808,37 @@ $ac_includes_default
+ #include <linux/version.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking linux/version.h presence" >&5
+-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5
++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8246,24 +8847,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <linux/version.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -8271,9 +8870,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -8297,25 +8897,18 @@ echo "$as_me: WARNING: linux/version.h:
+ echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for linux/version.h" >&5
+-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5
++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_linux_version_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_linux_version_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
+-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5
++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; }
+
+ fi
+ if test $ac_cv_header_linux_version_h = yes; then
+@@ -8380,8 +8973,8 @@ fi
+ if test "x$cross_compiling" = "xno"; then
+ EXEEXT_FOR_BUILD='$(EXEEXT)'
+ else
+- echo "$as_me:$LINENO: checking for build system executable suffix" >&5
+-echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for build system executable suffix" >&5
++echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6; }
+ if test "${bfd_cv_build_exeext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8398,8 +8991,8 @@ else
+ rm -f conftest*
+ test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no
+ fi
+-echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5
+-echo "${ECHO_T}$bfd_cv_build_exeext" >&6
++{ echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5
++echo "${ECHO_T}$bfd_cv_build_exeext" >&6; }
+ EXEEXT_FOR_BUILD=""
+ test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
+ fi
+@@ -8419,8 +9012,8 @@ fi
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -8442,7 +9035,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -8461,21 +9054,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -8492,18 +9086,19 @@ test -z "$INSTALL_DATA" && INSTALL_DATA=
+ for ac_header in string.h strings.h stdlib.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8514,41 +9109,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -8557,24 +9148,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -8582,9 +9171,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -8608,25 +9198,19 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
+-## ------------------------------------------ ##
+-## Report this to the AC_PACKAGE_NAME lists. ##
+-## ------------------------------------------ ##
+-_ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -8639,8 +9223,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking whether basename is declared" >&5
+-echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether basename is declared" >&5
++echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_basename+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -8655,7 +9239,7 @@ int
+ main ()
+ {
+ #ifndef basename
+- char *p = (char *) basename;
++ (void) basename;
+ #endif
+
+ ;
+@@ -8663,38 +9247,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_basename=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_basename=no
++ ac_cv_have_decl_basename=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_basename" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5
++echo "${ECHO_T}$ac_cv_have_decl_basename" >&6; }
+ if test $ac_cv_have_decl_basename = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -8715,10 +9295,9 @@ fi
+ cgen_maint=no
+ cgendir='$(srcdir)/../cgen'
+
+-# Check whether --enable-cgen-maint or --disable-cgen-maint was given.
++# Check whether --enable-cgen-maint was given.
+ if test "${enable_cgen_maint+set}" = set; then
+- enableval="$enable_cgen_maint"
+- case "${enableval}" in
++ enableval=$enable_cgen_maint; case "${enableval}" in
+ yes) cgen_maint=yes ;;
+ no) cgen_maint=no ;;
+ *)
+@@ -8729,7 +9308,8 @@ if test "${enable_cgen_maint+set}" = set
+ cgendir=${cgen_maint}/lib/cgen
+ ;;
+ esac
+-fi;
++fi
++
+
+ if test x${cgen_maint} = xyes; then
+ CGEN_MAINT_TRUE=
+@@ -8805,6 +9385,7 @@ if test x${all_targets} = xfalse ; then
+ bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
+ bfd_arm_arch) ta="$ta arm-dis.lo" ;;
+ bfd_avr_arch) ta="$ta avr-dis.lo" ;;
++ bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
+ bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
+ bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
+ bfd_crx_arch) ta="$ta crx-dis.lo crx-opc.lo" ;;
+@@ -8922,9 +9503,9 @@ fi
+
+
+
+- ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in"
++ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in"
+
+- ac_config_commands="$ac_config_commands default"
++ac_config_commands="$ac_config_commands default"
+
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+@@ -8944,39 +9525,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -8985,32 +9585,18 @@ test "x$prefix" = xNONE && prefix=$ac_de
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ ]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ ]*$//;
+-}'
+-fi
+-
+ DEFS=-DHAVE_CONFIG_H
+
+ ac_libobjs=
+ ac_ltlibobjs=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+- ac_i=`echo "$ac_i" |
+- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+- # 2. Add them.
+- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
++ ac_i=`echo "$ac_i" | sed "$ac_script"`
++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
++ # will be set to the directory where LIBOBJS objects are built.
++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+ done
+ LIBOBJS=$ac_libobjs
+
+@@ -9076,17 +9662,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -9096,8 +9710,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -9111,18 +9760,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -9130,159 +9780,120 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
++# CDPATH.
++$as_unset CDPATH
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+-
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
+-fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+-
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
++ chmod +x "$as_me.lineno" ||
++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -9291,7 +9902,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -9300,31 +9932,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+ exec 6>&1
+
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
++# Save the log message, to keep $[0] and so on meaningful, and to
+ # report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling. Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
++# values after options handling.
++ac_log="
+ This file was extended by $as_me, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -9332,30 +9947,20 @@ generated by GNU Autoconf 2.59. Invocat
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
++on `(hostname || uname -n) 2>/dev/null | sed 1q`
++"
++
+ _ACEOF
+
++cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_headers"; then
+- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_links"; then
+- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
++config_files="$ac_config_files"
++config_headers="$ac_config_headers"
++config_commands="$ac_config_commands"
+
+-if test -n "$ac_config_commands"; then
+- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
++_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-
+ ac_cs_usage="\
+ \`$as_me' instantiates files from templates according to the
+ current configuration.
+@@ -9363,7 +9968,7 @@ current configuration.
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number, then exit
++ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+@@ -9382,19 +9987,21 @@ Configuration commands:
+ $config_commands
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ config.status
+-configured by $0, generated by GNU Autoconf 2.59,
+- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.61,
++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 2006 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
++
++ac_pwd='$ac_pwd'
++srcdir='$srcdir'
++INSTALL='$INSTALL'
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -9405,39 +10012,24 @@ while test $# != 0
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "x$1" : 'x\([^=]*\)='`
+- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
++ ac_option=`expr "X$1" : 'X\([^=]*\)='`
++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+- -*)
++ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+- *) # This is not an option, so the user has probably given explicit
+- # arguments.
+- ac_option=$1
+- ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+- --version | --vers* | -V )
+- echo "$ac_cs_version"; exit 0 ;;
+- --he | --h)
+- # Conflict between --help and --header
+- { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; };;
+- --help | --hel | -h )
+- echo "$ac_cs_usage"; exit 0 ;;
+- --debug | --d* | -d )
++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
++ echo "$ac_cs_version"; exit ;;
++ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+@@ -9447,18 +10039,24 @@ Try \`$0 --help' for more information."
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
++ --he | --h)
++ # Conflict between --help and --header
++ { echo "$as_me: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&2
++ { (exit 1); exit 1; }; };;
++ --help | --hel | -h )
++ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
++ -*) { echo "$as_me: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+- *) ac_config_targets="$ac_config_targets $1" ;;
++ *) ac_config_targets="$ac_config_targets $1"
++ ac_need_defaults=false ;;
+
+ esac
+ shift
+@@ -9474,40 +10072,52 @@ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
++ CONFIG_SHELL=$SHELL
++ export CONFIG_SHELL
++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ fi
+
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++exec 5>>config.log
++{
++ echo
++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
++## Running $as_me. ##
++_ASBOX
++ echo "$ac_log"
++} >&5
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+-# INIT-COMMANDS section.
++# INIT-COMMANDS
+ #
+-
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+ _ACEOF
+
+-
+-
+ cat >>$CONFIG_STATUS <<\_ACEOF
++
++# Handling of arguments.
+ for ac_config_target in $ac_config_targets
+ do
+- case "$ac_config_target" in
+- # Handling of arguments.
+- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
+- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ case $ac_config_target in
++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
++
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+ echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ done
+
++
+ # If the user did not use the arguments to specify the items to instantiate,
+ # then the envvar interface is used. Set only those that are not.
+ # We use the long form for the default assignment because of an extremely
+@@ -9519,635 +10129,623 @@ if $ac_need_defaults; then
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
++# simply because there is no reason against having it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
++# Hook for its removal unless debugging.
++# Note that there is a small window in which the directory will not be cleaned:
++# after its creation but before its name has been assigned to `$tmp'.
+ $debug ||
+ {
+- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
++ tmp=
++ trap 'exit_status=$?
++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
++' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+ }
+-
+ # Create a (secure) tmp directory for tmp files.
+
+ {
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./confstat$$-$RANDOM
+- (umask 077 && mkdir $tmp)
++ tmp=./conf$$-$RANDOM
++ (umask 077 && mkdir "$tmp")
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+ #
+-# CONFIG_FILES section.
++# Set up the sed scripts for CONFIG_FILES section.
+ #
+
+ # No need to generate the scripts if there are no CONFIG_FILES.
+ # This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+- # Protect against being on the right side of a sed subst in config.status.
+- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@build@,$build,;t t
+-s,@build_cpu@,$build_cpu,;t t
+-s,@build_vendor@,$build_vendor,;t t
+-s,@build_os@,$build_os,;t t
+-s,@host@,$host,;t t
+-s,@host_cpu@,$host_cpu,;t t
+-s,@host_vendor@,$host_vendor,;t t
+-s,@host_os@,$host_os,;t t
+-s,@target@,$target,;t t
+-s,@target_cpu@,$target_cpu,;t t
+-s,@target_vendor@,$target_vendor,;t t
+-s,@target_os@,$target_os,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@CYGPATH_W@,$CYGPATH_W,;t t
+-s,@PACKAGE@,$PACKAGE,;t t
+-s,@VERSION@,$VERSION,;t t
+-s,@ACLOCAL@,$ACLOCAL,;t t
+-s,@AUTOCONF@,$AUTOCONF,;t t
+-s,@AUTOMAKE@,$AUTOMAKE,;t t
+-s,@AUTOHEADER@,$AUTOHEADER,;t t
+-s,@MAKEINFO@,$MAKEINFO,;t t
+-s,@install_sh@,$install_sh,;t t
+-s,@STRIP@,$STRIP,;t t
+-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+-s,@mkdir_p@,$mkdir_p,;t t
+-s,@AWK@,$AWK,;t t
+-s,@SET_MAKE@,$SET_MAKE,;t t
+-s,@am__leading_dot@,$am__leading_dot,;t t
+-s,@AMTAR@,$AMTAR,;t t
+-s,@am__tar@,$am__tar,;t t
+-s,@am__untar@,$am__untar,;t t
+-s,@DEPDIR@,$DEPDIR,;t t
+-s,@am__include@,$am__include,;t t
+-s,@am__quote@,$am__quote,;t t
+-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+-s,@CCDEPMODE@,$CCDEPMODE,;t t
+-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+-s,@AR@,$AR,;t t
+-s,@ac_ct_AR@,$ac_ct_AR,;t t
+-s,@RANLIB@,$RANLIB,;t t
+-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+-s,@LN_S@,$LN_S,;t t
+-s,@LIBTOOL@,$LIBTOOL,;t t
+-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t
+-s,@NO_WERROR@,$NO_WERROR,;t t
+-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+-s,@MAINT@,$MAINT,;t t
+-s,@INSTALL_LIBBFD_TRUE@,$INSTALL_LIBBFD_TRUE,;t t
+-s,@INSTALL_LIBBFD_FALSE@,$INSTALL_LIBBFD_FALSE,;t t
+-s,@host_noncanonical@,$host_noncanonical,;t t
+-s,@target_noncanonical@,$target_noncanonical,;t t
+-s,@bfdlibdir@,$bfdlibdir,;t t
+-s,@bfdincludedir@,$bfdincludedir,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@ALLOCA@,$ALLOCA,;t t
+-s,@USE_NLS@,$USE_NLS,;t t
+-s,@MSGFMT@,$MSGFMT,;t t
+-s,@GMSGFMT@,$GMSGFMT,;t t
+-s,@XGETTEXT@,$XGETTEXT,;t t
+-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t
+-s,@CATALOGS@,$CATALOGS,;t t
+-s,@CATOBJEXT@,$CATOBJEXT,;t t
+-s,@DATADIRNAME@,$DATADIRNAME,;t t
+-s,@GMOFILES@,$GMOFILES,;t t
+-s,@INSTOBJEXT@,$INSTOBJEXT,;t t
+-s,@INTLDEPS@,$INTLDEPS,;t t
+-s,@INTLLIBS@,$INTLLIBS,;t t
+-s,@INTLOBJS@,$INTLOBJS,;t t
+-s,@POFILES@,$POFILES,;t t
+-s,@POSUB@,$POSUB,;t t
+-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t
+-s,@GT_NO@,$GT_NO,;t t
+-s,@GT_YES@,$GT_YES,;t t
+-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+-s,@l@,$l,;t t
+-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
+-s,@EXEEXT_FOR_BUILD@,$EXEEXT_FOR_BUILD,;t t
+-s,@HDEFINES@,$HDEFINES,;t t
+-s,@CGEN_MAINT_TRUE@,$CGEN_MAINT_TRUE,;t t
+-s,@CGEN_MAINT_FALSE@,$CGEN_MAINT_FALSE,;t t
+-s,@cgendir@,$cgendir,;t t
+-s,@WIN32LDFLAGS@,$WIN32LDFLAGS,;t t
+-s,@WIN32LIBADD@,$WIN32LIBADD,;t t
+-s,@archdefs@,$archdefs,;t t
+-s,@BFD_MACHINES@,$BFD_MACHINES,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-CEOF
+-
+-_ACEOF
+-
+- cat >>$CONFIG_STATUS <<\_ACEOF
+- # Split the substitutions into bite-sized pieces for seds with
+- # small command number limits, like on Digital OSF/1 and HP-UX.
+- ac_max_sed_lines=48
+- ac_sed_frag=1 # Number of current file.
+- ac_beg=1 # First line for current file.
+- ac_end=$ac_max_sed_lines # Line after last line for current file.
+- ac_more_lines=:
+- ac_sed_cmds=
+- while $ac_more_lines; do
+- if test $ac_beg -gt 1; then
+- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- else
+- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- fi
+- if test ! -s $tmp/subs.frag; then
+- ac_more_lines=false
+- else
+- # The purpose of the label and of the branching condition is to
+- # speed up the sed processing (if there are no `@' at all, there
+- # is no need to browse any of the substitutions).
+- # These are the two extra sed commands mentioned above.
+- (echo ':t
+- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+- else
+- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+- fi
+- ac_sed_frag=`expr $ac_sed_frag + 1`
+- ac_beg=$ac_end
+- ac_end=`expr $ac_end + $ac_max_sed_lines`
+- fi
+- done
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds=cat
++if test -n "$CONFIG_FILES"; then
++
++_ACEOF
++
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++SHELL!$SHELL$ac_delim
++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
++PACKAGE_NAME!$PACKAGE_NAME$ac_delim
++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
++PACKAGE_STRING!$PACKAGE_STRING$ac_delim
++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
++exec_prefix!$exec_prefix$ac_delim
++prefix!$prefix$ac_delim
++program_transform_name!$program_transform_name$ac_delim
++bindir!$bindir$ac_delim
++sbindir!$sbindir$ac_delim
++libexecdir!$libexecdir$ac_delim
++datarootdir!$datarootdir$ac_delim
++datadir!$datadir$ac_delim
++sysconfdir!$sysconfdir$ac_delim
++sharedstatedir!$sharedstatedir$ac_delim
++localstatedir!$localstatedir$ac_delim
++includedir!$includedir$ac_delim
++oldincludedir!$oldincludedir$ac_delim
++docdir!$docdir$ac_delim
++infodir!$infodir$ac_delim
++htmldir!$htmldir$ac_delim
++dvidir!$dvidir$ac_delim
++pdfdir!$pdfdir$ac_delim
++psdir!$psdir$ac_delim
++libdir!$libdir$ac_delim
++localedir!$localedir$ac_delim
++mandir!$mandir$ac_delim
++DEFS!$DEFS$ac_delim
++ECHO_C!$ECHO_C$ac_delim
++ECHO_N!$ECHO_N$ac_delim
++ECHO_T!$ECHO_T$ac_delim
++LIBS!$LIBS$ac_delim
++build_alias!$build_alias$ac_delim
++host_alias!$host_alias$ac_delim
++target_alias!$target_alias$ac_delim
++build!$build$ac_delim
++build_cpu!$build_cpu$ac_delim
++build_vendor!$build_vendor$ac_delim
++build_os!$build_os$ac_delim
++host!$host$ac_delim
++host_cpu!$host_cpu$ac_delim
++host_vendor!$host_vendor$ac_delim
++host_os!$host_os$ac_delim
++target!$target$ac_delim
++target_cpu!$target_cpu$ac_delim
++target_vendor!$target_vendor$ac_delim
++target_os!$target_os$ac_delim
++CC!$CC$ac_delim
++CFLAGS!$CFLAGS$ac_delim
++LDFLAGS!$LDFLAGS$ac_delim
++CPPFLAGS!$CPPFLAGS$ac_delim
++ac_ct_CC!$ac_ct_CC$ac_delim
++EXEEXT!$EXEEXT$ac_delim
++OBJEXT!$OBJEXT$ac_delim
++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
++INSTALL_DATA!$INSTALL_DATA$ac_delim
++CYGPATH_W!$CYGPATH_W$ac_delim
++PACKAGE!$PACKAGE$ac_delim
++VERSION!$VERSION$ac_delim
++ACLOCAL!$ACLOCAL$ac_delim
++AUTOCONF!$AUTOCONF$ac_delim
++AUTOMAKE!$AUTOMAKE$ac_delim
++AUTOHEADER!$AUTOHEADER$ac_delim
++MAKEINFO!$MAKEINFO$ac_delim
++install_sh!$install_sh$ac_delim
++STRIP!$STRIP$ac_delim
++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
++mkdir_p!$mkdir_p$ac_delim
++AWK!$AWK$ac_delim
++SET_MAKE!$SET_MAKE$ac_delim
++am__leading_dot!$am__leading_dot$ac_delim
++AMTAR!$AMTAR$ac_delim
++am__tar!$am__tar$ac_delim
++am__untar!$am__untar$ac_delim
++DEPDIR!$DEPDIR$ac_delim
++am__include!$am__include$ac_delim
++am__quote!$am__quote$ac_delim
++AMDEP_TRUE!$AMDEP_TRUE$ac_delim
++AMDEP_FALSE!$AMDEP_FALSE$ac_delim
++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
++CCDEPMODE!$CCDEPMODE$ac_delim
++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
++AR!$AR$ac_delim
++RANLIB!$RANLIB$ac_delim
++LN_S!$LN_S$ac_delim
++LIBTOOL!$LIBTOOL$ac_delim
++WARN_CFLAGS!$WARN_CFLAGS$ac_delim
++NO_WERROR!$NO_WERROR$ac_delim
++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
++MAINT!$MAINT$ac_delim
++INSTALL_LIBBFD_TRUE!$INSTALL_LIBBFD_TRUE$ac_delim
++INSTALL_LIBBFD_FALSE!$INSTALL_LIBBFD_FALSE$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+-fi # test -n "$CONFIG_FILES"
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
++
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
++_ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++CEOF$ac_eof
++_ACEOF
++
+
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++host_noncanonical!$host_noncanonical$ac_delim
++target_noncanonical!$target_noncanonical$ac_delim
++bfdlibdir!$bfdlibdir$ac_delim
++bfdincludedir!$bfdincludedir$ac_delim
++CPP!$CPP$ac_delim
++GREP!$GREP$ac_delim
++EGREP!$EGREP$ac_delim
++ALLOCA!$ALLOCA$ac_delim
++USE_NLS!$USE_NLS$ac_delim
++MSGFMT!$MSGFMT$ac_delim
++GMSGFMT!$GMSGFMT$ac_delim
++XGETTEXT!$XGETTEXT$ac_delim
++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim
++CATALOGS!$CATALOGS$ac_delim
++CATOBJEXT!$CATOBJEXT$ac_delim
++DATADIRNAME!$DATADIRNAME$ac_delim
++GMOFILES!$GMOFILES$ac_delim
++INSTOBJEXT!$INSTOBJEXT$ac_delim
++INTLDEPS!$INTLDEPS$ac_delim
++INTLLIBS!$INTLLIBS$ac_delim
++INTLOBJS!$INTLOBJS$ac_delim
++POFILES!$POFILES$ac_delim
++POSUB!$POSUB$ac_delim
++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim
++GT_NO!$GT_NO$ac_delim
++GT_YES!$GT_YES$ac_delim
++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim
++l!$l$ac_delim
++CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim
++EXEEXT_FOR_BUILD!$EXEEXT_FOR_BUILD$ac_delim
++HDEFINES!$HDEFINES$ac_delim
++CGEN_MAINT_TRUE!$CGEN_MAINT_TRUE$ac_delim
++CGEN_MAINT_FALSE!$CGEN_MAINT_FALSE$ac_delim
++cgendir!$cgendir$ac_delim
++WIN32LDFLAGS!$WIN32LDFLAGS$ac_delim
++WIN32LIBADD!$WIN32LIBADD$ac_delim
++archdefs!$archdefs$ac_delim
++BFD_MACHINES!$BFD_MACHINES$ac_delim
++LIBOBJS!$LIBOBJS$ac_delim
++LTLIBOBJS!$LTLIBOBJS$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 40; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
++ fi
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
++
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+ _ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++:end
++s/|#_!!_#|//g
++CEOF$ac_eof
++_ACEOF
++
++
++# VPATH may cause trouble with some makes, so we remove $(srcdir),
++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
++# trailing colons and then remove the whole line if VPATH becomes empty
++# (actually we leave an empty line to preserve line numbers).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/
++s/:*\${srcdir}:*/:/
++s/:*@srcdir@:*/:/
++s/^\([^=]*=[ ]*\):*/\1/
++s/:*$//
++s/^[^=]*=[ ]*$//
++}'
++fi
++
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+- case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++fi # test -n "$CONFIG_FILES"
++
++
++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
++do
++ case $ac_tag in
++ :[FHLC]) ac_mode=$ac_tag; continue;;
++ esac
++ case $ac_mode$ac_tag in
++ :[FHL]*:*);;
++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
++echo "$as_me: error: Invalid tag $ac_tag." >&2;}
++ { (exit 1); exit 1; }; };;
++ :[FH]-) ac_tag=-:-;;
++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
++ ac_save_IFS=$IFS
++ IFS=:
++ set x $ac_tag
++ IFS=$ac_save_IFS
++ shift
++ ac_file=$1
++ shift
++
++ case $ac_mode in
++ :L) ac_source=$1;;
++ :[FH])
++ ac_file_inputs=
++ for ac_f
++ do
++ case $ac_f in
++ -) ac_f="$tmp/stdin";;
++ *) # Look for the file first in the build tree, then in the source tree
++ # (if the path is not absolute). The absolute path cannot be DOS-style,
++ # because $ac_f cannot contain `:'.
++ test -f "$ac_f" ||
++ case $ac_f in
++ [\\/$]*) false;;
++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
++ esac ||
++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
++echo "$as_me: error: cannot find input file: $ac_f" >&2;}
++ { (exit 1); exit 1; }; };;
++ esac
++ ac_file_inputs="$ac_file_inputs $ac_f"
++ done
++
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ configure_input="Generated from "`IFS=:
++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
++ if test x"$ac_file" != x-; then
++ configure_input="$ac_file. $configure_input"
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ fi
+
+- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++ case $ac_tag in
++ *:-:* | *:-) cat >"$tmp/stdin";;
++ esac
++ ;;
++ esac
++
++ ac_dir=`$as_dirname -- "$ac_file" ||
+ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir="$ac_dir"
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
++esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+
++ case $ac_mode in
++ :F)
++ #
++ # CONFIG_FILE
++ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
++_ACEOF
+
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- configure_input=
+- else
+- configure_input="$ac_file. "
+- fi
+- configure_input=$configure_input"Generated from `echo $ac_file_in |
+- sed 's,.*/,,'` by configure."
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
++cat >>$CONFIG_STATUS <<\_ACEOF
++# If the template does not know about datarootdir, expand it.
++# FIXME: This hack should be removed a few years after 2.60.
++ac_datarootdir_hack=; ac_datarootdir_seen=
++
++case `sed -n '/datarootdir/ {
++ p
++ q
++}
++/@datadir@/p
++/@docdir@/p
++/@infodir@/p
++/@localedir@/p
++/@mandir@/p
++' $ac_file_inputs` in
++*datarootdir*) ac_datarootdir_seen=yes;;
++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
++ ac_datarootdir_hack='
++ s&@datadir@&$datadir&g
++ s&@docdir@&$docdir&g
++ s&@infodir@&$infodir&g
++ s&@localedir@&$localedir&g
++ s&@mandir@&$mandir&g
++ s&\\\${datarootdir}&$datarootdir&g' ;;
++esac
++_ACEOF
++
++# Neutralize VPATH when `$srcdir' = `.'.
++# Shell code in configure.ac might set extrasub.
++# FIXME: do we really want to maintain this feature?
++cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+- rm -f $tmp/stdin
+- if test x"$ac_file" != x-; then
+- mv $tmp/out $ac_file
+- else
+- cat $tmp/out
+- rm -f $tmp/out
+- fi
++s&@configure_input@&$configure_input&;t t
++s&@top_builddir@&$ac_top_builddir_sub&;t t
++s&@srcdir@&$ac_srcdir&;t t
++s&@abs_srcdir@&$ac_abs_srcdir&;t t
++s&@top_srcdir@&$ac_top_srcdir&;t t
++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
++s&@builddir@&$ac_builddir&;t t
++s&@abs_builddir@&$ac_abs_builddir&;t t
++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
++s&@INSTALL@&$ac_INSTALL&;t t
++$ac_datarootdir_hack
++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
++
++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&5
++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&2;}
+
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_HEADER section.
+-#
+-
+-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+-# NAME is the cpp macro being defined and VALUE is the value it is being given.
+-#
+-# ac_d sets the value in "#define NAME VALUE" lines.
+-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+-ac_dB='[ ].*$,\1#\2'
+-ac_dC=' '
+-ac_dD=',;t'
+-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+-ac_uB='$,\1#\2define\3'
+-ac_uC=' '
+-ac_uD=',;t'
+-
+-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ rm -f "$tmp/stdin"
+ case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++ -) cat "$tmp/out"; rm -f "$tmp/out";;
++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
++ ;;
++ :H)
++ #
++ # CONFIG_HEADER
++ #
++_ACEOF
++
++# Transform confdefs.h into a sed script `conftest.defines', that
++# substitutes the proper values into config.h.in to produce config.h.
++rm -f conftest.defines conftest.tail
++# First, append a space to every undef/define line, to ease matching.
++echo 's/$/ /' >conftest.defines
++# Then, protect against being on the right side of a sed subst, or in
++# an unquoted here document, in config.status. If some macros were
++# called several times there might be several #defines for the same
++# symbol, which is useless. But do not sort them, since the last
++# AC_DEFINE must be honored.
++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
++# NAME is the cpp macro being defined, VALUE is the value it is being given.
++# PARAMS is the parameter list in the macro definition--in most cases, it's
++# just an empty string.
++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
++ac_dB='\\)[ (].*,\\1define\\2'
++ac_dC=' '
++ac_dD=' ,'
+
+- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- # Do quote $f, to prevent DOS paths from being IFS'd.
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+- # Remove the trailing spaces.
+- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+-
+-_ACEOF
++uniq confdefs.h |
++ sed -n '
++ t rset
++ :rset
++ s/^[ ]*#[ ]*define[ ][ ]*//
++ t ok
++ d
++ :ok
++ s/[\\&,]/\\&/g
++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
++ ' >>conftest.defines
+
+-# Transform confdefs.h into two sed scripts, `conftest.defines' and
+-# `conftest.undefs', that substitutes the proper values into
+-# config.h.in to produce config.h. The first handles `#define'
+-# templates, and the second `#undef' templates.
+-# And first: Protect against being on the right side of a sed subst in
+-# config.status. Protect against being in an unquoted here document
+-# in config.status.
+-rm -f conftest.defines conftest.undefs
+-# Using a here document instead of a string reduces the quoting nightmare.
+-# Putting comments in sed scripts is not portable.
+-#
+-# `end' is used to avoid that the second main sed command (meant for
+-# 0-ary CPP macros) applies to n-ary macro definitions.
+-# See the Autoconf documentation for `clear'.
+-cat >confdef2sed.sed <<\_ACEOF
+-s/[\\&,]/\\&/g
+-s,[\\$`],\\&,g
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+-t end
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+-: end
+-_ACEOF
+-# If some macros were called several times there might be several times
+-# the same #defines, which is useless. Nevertheless, we may not want to
+-# sort them, since we want the *last* AC-DEFINE to be honored.
+-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+-rm -f confdef2sed.sed
+-
+-# This sed command replaces #undef with comments. This is necessary, for
++# Remove the space that was appended to ease matching.
++# Then replace #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-cat >>conftest.undefs <<\_ACEOF
+-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++# (The regexp can be short, since the line contains either #define or #undef.)
++echo 's/ $//
++s,^[ #]*u.*,/* & */,' >>conftest.defines
++
++# Break up conftest.defines:
++ac_max_sed_lines=50
++
++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
++# et cetera.
++ac_in='$ac_file_inputs'
++ac_out='"$tmp/out1"'
++ac_nxt='"$tmp/out2"'
++
++while :
++do
++ # Write a here document:
++ cat >>$CONFIG_STATUS <<_ACEOF
++ # First, check the format of the line:
++ cat >"\$tmp/defines.sed" <<\\CEOF
++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
++b
++:def
+ _ACEOF
+-
+-# Break up conftest.defines because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+-echo ' :' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.defines >/dev/null
+-do
+- # Write a limited-size here document to $tmp/defines.sed.
+- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#define' lines.
+- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f $tmp/defines.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
++ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines
+-echo ' fi # grep' >>$CONFIG_STATUS
+-echo >>$CONFIG_STATUS
+-
+-# Break up conftest.undefs because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.undefs >/dev/null
+-do
+- # Write a limited-size here document to $tmp/undefs.sed.
+- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#undef'
+- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+- echo 'CEOF
+- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+- rm -f conftest.undefs
+- mv conftest.tail conftest.undefs
+-done
+-rm -f conftest.undefs
++rm -f conftest.defines conftest.tail
+
++echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- echo "/* Generated by configure. */" >$tmp/config.h
+- else
+- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+- fi
+- cat $tmp/in >>$tmp/config.h
+- rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ echo "/* $configure_input */" >"$tmp/config.h"
++ cat "$ac_result" >>"$tmp/config.h"
++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_file" : 'X\(//\)[^/]' \| \
+- X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+ rm -f $ac_file
+- mv $tmp/config.h $ac_file
++ mv "$tmp/config.h" $ac_file
+ fi
+ else
+- cat $tmp/config.h
+- rm -f $tmp/config.h
++ echo "/* $configure_input */"
++ cat "$ac_result"
+ fi
++ rm -f "$tmp/out12"
+ # Compute $ac_file's index in $config_headers.
+ _am_stamp_count=1
+ for _am_header in $config_headers :; do
+@@ -10158,135 +10756,39 @@ for _am_header in $config_headers :; do
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+ done
+-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
+ $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+- X$ac_file : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
+ echo X$ac_file |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`/stamp-h$_am_stamp_count
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_COMMANDS section.
+-#
+-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_dest" : 'X\(//\)[^/]' \| \
+- X"$ac_dest" : 'X\(//\)$' \| \
+- X"$ac_dest" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_dest" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+- ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+- .) # No --srcdir option. We are building in place.
+- ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
+- ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`/stamp-h$_am_stamp_count
++ ;;
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
++echo "$as_me: executing $ac_file commands" >&6;}
++ ;;
++ esac
+
+
+- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+-echo "$as_me: executing $ac_dest commands" >&6;}
+- case $ac_dest in
+- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
++ case $ac_file$ac_mode in
++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+@@ -10296,18 +10798,29 @@ echo "$as_me: executing $ac_dest command
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+- dirpart=`(dirname "$mf") 2>/dev/null ||
++ dirpart=`$as_dirname -- "$mf" ||
+ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+- X"$mf" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$mf" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ else
+ continue
+ fi
+@@ -10329,54 +10842,80 @@ echo X"$mf" |
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+- fdir=`(dirname "$file") 2>/dev/null ||
++ fdir=`$as_dirname -- "$file" ||
+ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+- X"$file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p $dirpart/$fdir
+- else
+- as_dir=$dirpart/$fdir
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir=$dirpart/$fdir
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+ ;;
+- default ) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;;
++ "default":C) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;;
++
+ esac
+-done
+-_ACEOF
++done # for ac_tag
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+diff -Nrup binutils-2.17/opcodes/configure.in binutils-2.17.atmel.1.3.0/opcodes/configure.in
+--- binutils-2.17/opcodes/configure.in 2006-02-17 15:36:28.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/configure.in 2007-03-26 10:20:33.000000000 +0200
+@@ -157,6 +157,7 @@ if test x${all_targets} = xfalse ; then
+ bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
+ bfd_arm_arch) ta="$ta arm-dis.lo" ;;
+ bfd_avr_arch) ta="$ta avr-dis.lo" ;;
++ bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
+ bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
+ bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
+ bfd_crx_arch) ta="$ta crx-dis.lo crx-opc.lo" ;;
+diff -Nrup binutils-2.17/opcodes/disassemble.c binutils-2.17.atmel.1.3.0/opcodes/disassemble.c
+--- binutils-2.17/opcodes/disassemble.c 2006-02-17 15:36:28.000000000 +0100
++++ binutils-2.17.atmel.1.3.0/opcodes/disassemble.c 2007-03-26 10:20:34.000000000 +0200
+@@ -24,6 +24,7 @@
+ #define ARCH_arc
+ #define ARCH_arm
+ #define ARCH_avr
++#define ARCH_avr32
+ #define ARCH_bfin
+ #define ARCH_cris
+ #define ARCH_crx
+@@ -121,6 +122,11 @@ disassembler (abfd)
+ disassemble = print_insn_avr;
+ break;
+ #endif
++#ifdef ARCH_avr32
++ case bfd_arch_avr32:
++ disassemble = print_insn_avr32;
++ break;
++#endif
+ #ifdef ARCH_bfin
+ case bfd_arch_bfin:
+ disassemble = print_insn_bfin;
+@@ -433,6 +439,9 @@ disassembler_usage (stream)
+ #ifdef ARCH_powerpc
+ print_ppc_disassembler_options (stream);
+ #endif
++#ifdef ARCH_avr32
++ print_avr32_disassembler_options (stream);
++#endif
+
+ return;
+ }
+diff -Nrup binutils-2.17/opcodes/Makefile.am binutils-2.17.atmel.1.3.0/opcodes/Makefile.am
+--- binutils-2.17/opcodes/Makefile.am 2006-04-06 23:49:35.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/opcodes/Makefile.am 2007-03-26 10:20:34.000000000 +0200
+@@ -29,6 +29,7 @@ LIBIBERTY = ../libiberty/libiberty.a
+ # Header files.
+ HFILES = \
+ cgen-ops.h cgen-types.h \
++ avr32-asm.h avr32-opc.h \
+ fr30-desc.h fr30-opc.h \
+ frv-desc.h frv-opc.h \
+ h8500-opc.h \
+@@ -58,6 +59,9 @@ CFILES = \
+ arc-ext.c \
+ arm-dis.c \
+ avr-dis.c \
++ avr32-asm.c \
++ avr32-dis.c \
++ avr32-opc.c \
+ bfin-dis.c \
+ cgen-asm.c \
+ cgen-bitset.c \
+@@ -200,6 +204,9 @@ ALL_MACHINES = \
+ arc-ext.lo \
+ arm-dis.lo \
+ avr-dis.lo \
++ avr32-asm.lo \
++ avr32-dis.lo \
++ avr32-opc.lo \
+ bfin-dis.lo \
+ cgen-asm.lo \
+ cgen-bitset.lo \
+@@ -624,6 +631,15 @@ arm-dis.lo: arm-dis.c sysdep.h config.h
+ avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h \
+ $(INCDIR)/libiberty.h $(INCDIR)/opcode/avr.h
++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
++ $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
++ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
++ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
++ avr32-opc.h opintl.h
++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
+ bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
+ $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
+ cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+diff -Nrup binutils-2.17/opcodes/Makefile.in binutils-2.17.atmel.1.3.0/opcodes/Makefile.in
+--- binutils-2.17/opcodes/Makefile.in 2006-04-06 23:49:35.000000000 +0200
++++ binutils-2.17.atmel.1.3.0/opcodes/Makefile.in 2007-03-26 10:31:36.000000000 +0200
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.9.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+@@ -15,8 +15,6 @@
+ @SET_MAKE@
+
+
+-SOURCES = libopcodes.c $(libopcodes_la_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -132,6 +130,7 @@ EXEEXT = @EXEEXT@
+ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+ GMOFILES = @GMOFILES@
+ GMSGFMT = @GMSGFMT@
++GREP = @GREP@
+ GT_NO = @GT_NO@
+ GT_YES = @GT_YES@
+ HDEFINES = @HDEFINES@
+@@ -180,10 +179,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
+ WIN32LDFLAGS = @WIN32LDFLAGS@
+ WIN32LIBADD = @WIN32LIBADD@
+ XGETTEXT = @XGETTEXT@
+-ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_RANLIB = @ac_ct_RANLIB@
+-ac_ct_STRIP = @ac_ct_STRIP@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+ am__include = @am__include@
+@@ -202,6 +198,9 @@ build_os = @build_os@
+ build_vendor = @build_vendor@
+ cgendir = @cgendir@
+ datadir = @datadir@
++datarootdir = @datarootdir@
++docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+@@ -209,18 +208,22 @@ host_cpu = @host_cpu@
+ host_noncanonical = @host_noncanonical@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
++htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ l = @l@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
++psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+@@ -247,6 +250,7 @@ LIBIBERTY = ../libiberty/libiberty.a
+ # Header files.
+ HFILES = \
+ cgen-ops.h cgen-types.h \
++ avr32-asm.h avr32-opc.h \
+ fr30-desc.h fr30-opc.h \
+ frv-desc.h frv-opc.h \
+ h8500-opc.h \
+@@ -277,6 +281,9 @@ CFILES = \
+ arc-ext.c \
+ arm-dis.c \
+ avr-dis.c \
++ avr32-asm.c \
++ avr32-dis.c \
++ avr32-opc.c \
+ bfin-dis.c \
+ cgen-asm.c \
+ cgen-bitset.c \
+@@ -419,6 +426,9 @@ ALL_MACHINES = \
+ arc-ext.lo \
+ arm-dis.lo \
+ avr-dis.lo \
++ avr32-asm.lo \
++ avr32-dis.lo \
++ avr32-opc.lo \
+ bfin-dis.lo \
+ cgen-asm.lo \
+ cgen-bitset.lo \
+@@ -1166,6 +1176,15 @@ arm-dis.lo: arm-dis.c sysdep.h config.h
+ avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h \
+ $(INCDIR)/libiberty.h $(INCDIR)/opcode/avr.h
++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
++ $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
++ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
++ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
++ avr32-opc.h opintl.h
++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
+ bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
+ $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
+ cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
diff --git a/packages/binutils/binutils-2.17/501-avr32-fix-pool-alignment.patch b/packages/binutils/binutils-2.17/501-avr32-fix-pool-alignment.patch
new file mode 100644
index 0000000000..bd519a1e69
--- /dev/null
+++ b/packages/binutils/binutils-2.17/501-avr32-fix-pool-alignment.patch
@@ -0,0 +1,26 @@
+Index: a/gas/config/tc-avr32.c
+===================================================================
+--- a/gas/config/tc-avr32.c (revision 31496)
++++ b/gas/config/tc-avr32.c (revision 32014)
+@@ -3092,6 +3092,8 @@
+
+ /* Make sure the constant pool is properly aligned */
+ frag_align_code(2, 0);
++ if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
++ bfd_set_section_alignment(stdoutput, pool->section, 2);
+
+ /* Assume none of the entries are discarded, and that we need the
+ maximum amount of alignment. But we're not going to allocate
+Index: a/bfd/configure.in
+===================================================================
+--- a/bfd/configure.in (revision 31496)
++++ b/bfd/configure.in (revision 32014)
+@@ -8,7 +8,7 @@
+ AC_CANONICAL_TARGET
+ AC_ISC_POSIX
+
+-AM_INIT_AUTOMAKE(bfd, 2.17.atmel.1.2.0)
++AM_INIT_AUTOMAKE(bfd, 2.17.atmel.1.2.1)
+
+ dnl These must be called before AM_PROG_LIBTOOL, because it may want
+ dnl to call AC_CHECK_PROG.
diff --git a/packages/binutils/binutils-2.17/503-avr32-fix-got-offset-init.patch b/packages/binutils/binutils-2.17/503-avr32-fix-got-offset-init.patch
new file mode 100644
index 0000000000..66add3a47b
--- /dev/null
+++ b/packages/binutils/binutils-2.17/503-avr32-fix-got-offset-init.patch
@@ -0,0 +1,12 @@
+stelios@Athena:~/proj/oplinux-0.2/org.openembedded.dev/packages/binutils$ cat binutils-2.17/503-avr32-fix-got-offset-init.patch
+--- a/bfd/elf32-avr32.c 2007-05-31 17:00:13.000000000 +0200
++++ b/bfd/elf32-avr32.c 2007-05-30 14:07:25.000000000 +0200
+@@ -395,6 +395,8 @@ avr32_elf_link_hash_table_create(bfd *ab
+ /* Prevent the BFD core from creating bogus got_entry pointers */
+ ret->root.init_got_refcount.glist = NULL;
+ ret->root.init_plt_refcount.glist = NULL;
++ ret->root.init_got_offset.glist = NULL;
++ ret->root.init_plt_offset.glist = NULL;
+
+ return &ret->root.root;
+ } \ No newline at end of file
diff --git a/packages/binutils/binutils_2.17.bb b/packages/binutils/binutils_2.17.bb
index 8d38f3a459..3e7af6d4b3 100644
--- a/packages/binutils/binutils_2.17.bb
+++ b/packages/binutils/binutils_2.17.bb
@@ -1,6 +1,6 @@
require binutils.inc
-PR = "r1"
+PR = "r3"
SRC_URI = \
"http://ftp.gnu.org/gnu/binutils/binutils-${PV}.tar.bz2 \
@@ -18,9 +18,8 @@ SRC_URI += "\
file://300-012_check_ldrunpath_length.patch;patch=1 \
file://300-001_ld_makefile_patch.patch;patch=1 \
file://400-mips-ELF_MAXPAGESIZE-4K.patch;patch=1 \
- http://avr32linux.org/twiki/pub/Main/DevelopmentTools/500-avr32.patch.gz;patch=1 \
- http://avr32linux.org/twiki/pub/Main/DevelopmentTools/501-avr32-sreldyn-fix.patch.gz;patch=1 \
- http://avr32linux.org/twiki/pub/Main/DevelopmentTools/502-avr32-bfd-dont-allow-direct-refs-to-bss.patch.gz;patch=1 \
+ file://500-avr32-atmel.1.3.0.patch;patch=1 \
+ file://501-avr32-fix-pool-alignment.patch;patch=1 \
"
# Zecke's OSX fixes
diff --git a/packages/busybox/busybox-1.00/nylon/.mtn2git_empty b/packages/blackbox/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.00/nylon/.mtn2git_empty
+++ b/packages/blackbox/.mtn2git_empty
diff --git a/packages/blackbox/blackbox_0.70.1.bb b/packages/blackbox/blackbox_0.70.1.bb
new file mode 100644
index 0000000000..50dc5a69c6
--- /dev/null
+++ b/packages/blackbox/blackbox_0.70.1.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Blackbox Window Manager"
+SECTION = "x11/wm"
+LICENSE = "GPL"
+DEPENDS = "libx11 libxext libxcomposite libxfixes libxdamage libxrender libxinerama libxpm xrandr xft"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/blackboxwm/blackbox-0.70.1.tar.gz \
+ file://remove-host-includes.patch;patch=1"
+S = "${WORKDIR}/blackbox-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-i18n --without-imlib --with-xpm --with-gnome-menus"
+
diff --git a/packages/busybox/busybox-1.00/openmn/.mtn2git_empty b/packages/blackbox/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.00/openmn/.mtn2git_empty
+++ b/packages/blackbox/files/.mtn2git_empty
diff --git a/packages/blackbox/files/remove-host-includes.patch b/packages/blackbox/files/remove-host-includes.patch
new file mode 100644
index 0000000000..bf557b51da
--- /dev/null
+++ b/packages/blackbox/files/remove-host-includes.patch
@@ -0,0 +1,19 @@
+Index: blackbox-0.70.1/configure.ac
+===================================================================
+--- blackbox-0.70.1.orig/configure.ac
++++ blackbox-0.70.1/configure.ac
+@@ -8,14 +8,6 @@ AC_CONFIG_SRCDIR([src/blackbox.cc])
+ dnl Determine default prefix
+ test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
+
+-dnl Look in the most logical places for external libraries
+-CPPFLAGS="$CPPFLAGS -I$prefix/include"
+-LDFLAGS="$LDFLAGS -L$prefix/lib"
+-if test "x$prefix" != "x/usr/local"; then
+- CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+- LDFLAGS="$LDFLAGS -L/usr/local/lib"
+-fi
+-
+ dnl Locate required external software
+ AC_PROG_CC
+
diff --git a/packages/bluez/bluez-cups-backend_3.18.bb b/packages/bluez/bluez-cups-backend_3.18.bb
index 64884fa904..d92b53220f 100644
--- a/packages/bluez/bluez-cups-backend_3.18.bb
+++ b/packages/bluez/bluez-cups-backend_3.18.bb
@@ -20,7 +20,6 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/cups/backend/bluetooth"
RDEPENDS_${PN} = "cups" \ No newline at end of file
diff --git a/packages/bluez/bluez-cups-backend_3.19.bb b/packages/bluez/bluez-cups-backend_3.19.bb
index 64884fa904..d92b53220f 100644
--- a/packages/bluez/bluez-cups-backend_3.19.bb
+++ b/packages/bluez/bluez-cups-backend_3.19.bb
@@ -20,7 +20,6 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/cups/backend/bluetooth"
RDEPENDS_${PN} = "cups" \ No newline at end of file
diff --git a/packages/bluez/bluez-cups-backend_3.20.bb b/packages/bluez/bluez-cups-backend_3.20.bb
index 64884fa904..d92b53220f 100644
--- a/packages/bluez/bluez-cups-backend_3.20.bb
+++ b/packages/bluez/bluez-cups-backend_3.20.bb
@@ -20,7 +20,6 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/cups/backend/bluetooth"
RDEPENDS_${PN} = "cups" \ No newline at end of file
diff --git a/packages/bluez/bluez-cups-backend_3.22.bb b/packages/bluez/bluez-cups-backend_3.22.bb
index 64884fa904..d92b53220f 100644
--- a/packages/bluez/bluez-cups-backend_3.22.bb
+++ b/packages/bluez/bluez-cups-backend_3.22.bb
@@ -20,7 +20,6 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/cups/backend/bluetooth"
RDEPENDS_${PN} = "cups" \ No newline at end of file
diff --git a/packages/bluez/bluez-cups-backend_3.23.bb b/packages/bluez/bluez-cups-backend_3.23.bb
index 64884fa904..46ca0becf0 100644
--- a/packages/bluez/bluez-cups-backend_3.23.bb
+++ b/packages/bluez/bluez-cups-backend_3.23.bb
@@ -1,5 +1,5 @@
require bluez-utils3.inc
-
+PR = "r1"
DEPENDS += "cups"
# see bluez-utils3.inc for the explanation of these option
@@ -20,7 +20,6 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/cups/backend/bluetooth"
RDEPENDS_${PN} = "cups" \ No newline at end of file
diff --git a/packages/bluez/bluez-cups-backend_3.24.bb b/packages/bluez/bluez-cups-backend_3.24.bb
index 1c43313a8a..40e099642a 100644
--- a/packages/bluez/bluez-cups-backend_3.24.bb
+++ b/packages/bluez/bluez-cups-backend_3.24.bb
@@ -22,7 +22,6 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/cups/backend/bluetooth"
RDEPENDS_${PN} = "cups"
diff --git a/packages/busybox/busybox-1.00/slugos/.mtn2git_empty b/packages/bluez/bluez-dtl1-workaround/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.00/slugos/.mtn2git_empty
+++ b/packages/bluez/bluez-dtl1-workaround/.mtn2git_empty
diff --git a/packages/bluez/files/02dtl1_cs.sh b/packages/bluez/bluez-dtl1-workaround/02dtl1_cs.sh
index fefc72e07a..fefc72e07a 100644
--- a/packages/bluez/files/02dtl1_cs.sh
+++ b/packages/bluez/bluez-dtl1-workaround/02dtl1_cs.sh
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.19.bb b/packages/bluez/bluez-gstreamer-plugin_3.19.bb
index c5a1a9acee..123259b3a7 100644
--- a/packages/bluez/bluez-gstreamer-plugin_3.19.bb
+++ b/packages/bluez/bluez-gstreamer-plugin_3.19.bb
@@ -21,6 +21,5 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.20.bb b/packages/bluez/bluez-gstreamer-plugin_3.20.bb
index c5a1a9acee..123259b3a7 100644
--- a/packages/bluez/bluez-gstreamer-plugin_3.20.bb
+++ b/packages/bluez/bluez-gstreamer-plugin_3.20.bb
@@ -21,6 +21,5 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.22.bb b/packages/bluez/bluez-gstreamer-plugin_3.22.bb
index c5a1a9acee..123259b3a7 100644
--- a/packages/bluez/bluez-gstreamer-plugin_3.22.bb
+++ b/packages/bluez/bluez-gstreamer-plugin_3.22.bb
@@ -21,6 +21,5 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.23.bb b/packages/bluez/bluez-gstreamer-plugin_3.23.bb
index c5a1a9acee..36e9ca3d91 100644
--- a/packages/bluez/bluez-gstreamer-plugin_3.23.bb
+++ b/packages/bluez/bluez-gstreamer-plugin_3.23.bb
@@ -1,5 +1,5 @@
require bluez-utils3.inc
-
+PR = "r1"
DEPENDS += "gstreamer gst-plugins-base "
# see bluez-utils3.inc for the explanation of these option
@@ -21,6 +21,5 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.24.bb b/packages/bluez/bluez-gstreamer-plugin_3.24.bb
index e485d95c36..53b7eb86f2 100644
--- a/packages/bluez/bluez-gstreamer-plugin_3.24.bb
+++ b/packages/bluez/bluez-gstreamer-plugin_3.24.bb
@@ -23,6 +23,5 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/busybox/busybox-1.00/sparc/.mtn2git_empty b/packages/bluez/bluez-utils-3.23/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.00/sparc/.mtn2git_empty
+++ b/packages/bluez/bluez-utils-3.23/.mtn2git_empty
diff --git a/packages/bluez/bluez-utils/hciattach-ti-bts.patch b/packages/bluez/bluez-utils-3.23/hciattach-ti-bts.patch
index 1b208f7979..1b208f7979 100644
--- a/packages/bluez/bluez-utils/hciattach-ti-bts.patch
+++ b/packages/bluez/bluez-utils-3.23/hciattach-ti-bts.patch
diff --git a/packages/busybox/busybox-1.00/wrt54/.mtn2git_empty b/packages/bluez/bluez-utils-3.24/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.00/wrt54/.mtn2git_empty
+++ b/packages/bluez/bluez-utils-3.24/.mtn2git_empty
diff --git a/packages/bluez/bluez-utils-3.24/hciattach-ti-bts.patch b/packages/bluez/bluez-utils-3.24/hciattach-ti-bts.patch
new file mode 100644
index 0000000000..1b208f7979
--- /dev/null
+++ b/packages/bluez/bluez-utils-3.24/hciattach-ti-bts.patch
@@ -0,0 +1,477 @@
+--- bluez-utils-3.1/tools/hciattach.c.orig 2006-07-23 14:02:14.000000000 +0200
++++ bluez-utils-3.1/tools/hciattach.c 2006-07-23 14:06:29.000000000 +0200
+@@ -60,6 +60,8 @@
+ #define HCI_UART_3WIRE 2
+ #define HCI_UART_H4DS 3
+
++#include "ti_bts.h"
++
+ struct uart_t {
+ char *type;
+ int m_id;
+@@ -70,6 +72,7 @@
+ int flags;
+ char *bdaddr;
+ int (*init) (int fd, struct uart_t *u, struct termios *ti);
++ char *bts; /* bluetooth script */
+ };
+
+ #define FLOW_CTL 0x0001
+@@ -279,6 +282,114 @@
+ return 0;
+ }
+
++static int brf6150(int fd, struct uart_t *u, struct termios *ti)
++{
++ bts_t *bfp;
++ int i;
++ unsigned long vers;
++ unsigned char actionbuf[256];
++ unsigned char resp[128]; /* Response */
++ unsigned long count;
++ unsigned short atype;
++
++ if (u->bts == NULL) /* no script, ignore */
++ return 0;
++
++ bfp = bts_load_script( u->bts, &vers );
++ if (bfp == NULL)
++ return -1;
++
++ fprintf( stderr, "Loading BTS script version %lu\n", vers );
++
++ while ((count = bts_next_action( bfp, actionbuf,
++ sizeof actionbuf - 1, &atype )) != 0) {
++ if (atype == ACTION_REMARKS) {
++ if (actionbuf[0] != 0)
++ fprintf( stderr, "%s\n", actionbuf );
++ }
++ else if (atype == ACTION_SEND_COMMAND) {
++#if 0
++ fprintf( stderr, "ACTION_SEND_COMMAND: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ int n;
++ n = write(fd, actionbuf, count);
++ if (n < 0 || n < count) {
++ perror("Failed to write TI action command");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_WAIT_EVENT) {
++ action_wait_t *wait = (action_wait_t *)actionbuf;
++#if 0
++ fprintf( stderr, "ACTION_WAIT_EVENT: %u msec, %u size, data = ", wait->msec, wait->size );
++ for (i=0; i<wait->size; i++) {
++ fprintf( stderr, "0x%02x ", wait->data[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ usleep(wait->msec); /* seems they give usec, not msec */
++ /* Read reply. */
++ if ((count = read_hci_event(fd, resp, sizeof resp)) < 0) {
++ perror("Failed to read TI command response");
++ return -1;
++ }
++ if (count < wait->size) {
++ fprintf( stderr, "TI command response is short.");
++ }
++ for (i=0; i<wait->size; i++) {
++ if (i == 3) continue; /* ignore */
++ if (resp[i] != wait->data[i]) {
++ fprintf( stderr, "TI command response does not match expected result.\n" );
++ }
++ }
++ }
++ else if (atype == ACTION_SERIAL_PORT_PARAMETERS) {
++ action_serial_t *sercmd = (action_serial_t *)actionbuf;
++
++ /* Set actual baudrate */
++ fprintf( stderr,
++ "BTS changing baud rate to %u, flow control to %u\n",
++ sercmd->baud, sercmd->flow_control );
++
++ tcflush(fd, TCIOFLUSH);
++
++ if (sercmd->flow_control)
++ ti->c_cflag |= CRTSCTS;
++ else
++ ti->c_cflag &= ~CRTSCTS;
++ if (tcsetattr(fd, TCSANOW, ti) < 0) {
++ perror("Can't set port settings");
++ return -1;
++ }
++
++ u->speed = sercmd->baud;
++
++ tcflush(fd, TCIOFLUSH);
++ if (set_speed(fd, ti, sercmd->baud) < 0) {
++ perror("Can't set baud rate");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_DELAY) {
++ action_delay_t *delay = (action_delay_t *)actionbuf;
++ usleep(delay->msec); /* seems they give usec, not msec */
++ }
++ else {
++ fprintf( stderr, "BTS action type = %d: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++ }
++ }
++ bts_unload_script( bfp );
++ return 0;
++}
++
+ static int texas(int fd, struct uart_t *u, struct termios *ti)
+ {
+ struct timespec tm = {0, 50000};
+@@ -328,6 +439,17 @@
+ /* Print LMP subversion */
+ fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF);
+
++ if ((resp[14] >> 2) == 3) {
++ /* BRF6150 */
++ int err;
++
++ nanosleep(&tm, NULL);
++ if ((err = brf6150(fd, u, ti)) != 0) {
++ fprintf(stderr, "Texas module script failed (err=%d)\n", err);
++ return -1;
++ }
++ }
++
+ nanosleep(&tm, NULL);
+ return 0;
+ }
+@@ -1204,7 +1326,7 @@
+ {
+ printf("hciattach - HCI UART driver initialization utility\n");
+ printf("Usage:\n");
+- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
++ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
+ printf("\thciattach -l\n");
+ }
+
+@@ -1219,11 +1341,12 @@
+ struct sigaction sa;
+ struct pollfd p;
+ char dev[PATH_MAX];
++ char *bts = NULL;
+
+ detach = 1;
+ printpid = 0;
+
+- while ((opt=getopt(argc, argv, "bnpt:s:l")) != EOF) {
++ while ((opt=getopt(argc, argv, "bnpt:s:S:l")) != EOF) {
+ switch(opt) {
+ case 'b':
+ send_break = 1;
+@@ -1245,6 +1368,10 @@
+ init_speed = atoi(optarg);
+ break;
+
++ case 'S':
++ bts = optarg;
++ break;
++
+ case 'l':
+ for (i = 0; uart[i].type; i++) {
+ printf("%-10s0x%04x,0x%04x\n", uart[i].type,
+@@ -1320,6 +1447,8 @@
+ if (init_speed)
+ u->init_speed = init_speed;
+
++ u->bts = bts;
++
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_flags = SA_NOCLDSTOP;
+ sa.sa_handler = sig_alarm;
+--- bluez-utils-3.1/tools/ti_bts.h.orig 2006-07-23 14:07:26.000000000 +0200
++++ bluez-utils-3.1/tools/ti_bts.h 2006-07-23 14:07:46.000000000 +0200
+@@ -0,0 +1,116 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++#ifndef BT_SCRIPT_H
++#define BT_SCRIPT_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++ * Define the interface of Bluetooth Script
++ */
++
++typedef void bts_t;
++
++
++#define ACTION_SEND_COMMAND 1 /* Send out raw data (as is) */
++#define ACTION_WAIT_EVENT 2 /* Wait for data */
++#define ACTION_SERIAL_PORT_PARAMETERS 3
++#define ACTION_DELAY 4
++#define ACTION_RUN_SCRIPT 5
++#define ACTION_REMARKS 6
++
++/*
++ * Structure for ACTION_SEND_COMMAND
++ */
++typedef struct tagCActionCommand
++{
++ unsigned char data[1]; /* Data to send */
++} action_command_t;
++
++/*
++ * Structure for ACTION_WAIT_EVENT
++ */
++typedef struct tagCActionWaitEvent
++{
++ unsigned long msec; /* in milliseconds */
++ unsigned long size;
++ unsigned char data[1]; /* Data to wait for */
++} action_wait_t;
++
++
++/*
++ * Structure for ACTION_SERIAL_PORT_PARAMETERS
++ */
++typedef struct tagCActionSerialPortParameters
++{
++ unsigned long baud;
++ unsigned long flow_control;
++} action_serial_t;
++
++/* Flow Control Type */
++#define FCT_NONE 0
++#define FCT_HARDWARE 1
++
++#define DONT_CHANGE 0xFFFFFFFF /* For both baud rate and flow control */
++
++
++/*
++ * Structure for ACTION_DELAY
++ */
++typedef struct tagCActionDelay
++{
++ unsigned long msec; /* in milliseconds */
++} action_delay_t;
++
++/*
++ * Structure for ACTION_RUN_SCRIPT
++ */
++typedef struct tagCActionRunScript
++{
++ char filename[1];
++} action_run_t;
++
++/*
++ * Structure for ACTION_REMARKS
++ */
++typedef struct tagCActionRemarks
++{
++ char m_szRemarks[1];
++} action_remarks_t;
++
++
++const char *cis_create_filename(const unsigned char* cmdparms);
++bts_t * bts_load_script(const char* fname, unsigned long* version);
++unsigned long bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype);
++void bts_unload_script(bts_t* bts_fp);
++
++#ifdef __cplusplus
++};
++#endif
++
++#endif /* BT_SCRIPT_H */
++
+--- bluez-utils-3.1/tools/ti_bts.c.orig 2006-07-23 14:07:28.000000000 +0200
++++ bluez-utils-3.1/tools/ti_bts.c 2006-07-23 14:07:46.000000000 +0200
+@@ -0,0 +1,149 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++
++#include <stdio.h>
++#include <stdlib.h>
++#include "ti_bts.h"
++
++#ifndef MAKEWORD
++#define MAKEWORD(a, b) ((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) << 8))
++#endif
++
++#define TI_MANUFACTURER_ID 13
++
++/*
++ * Common Init Script specific
++ */
++const char *
++cis_create_filename(const unsigned char* cmdparms)
++{
++ static char bts_file[50];
++
++ /* Check for TI's id */
++ unsigned short manfid = MAKEWORD(cmdparms[8], cmdparms[9]);
++
++ if (TI_MANUFACTURER_ID == manfid) {
++ unsigned short version = MAKEWORD(cmdparms[10], cmdparms[11]);
++
++ unsigned short chip = (version & 0x7C00) >> 10;
++ unsigned short min_ver = (version & 0x007F);
++ unsigned short maj_ver = (version & 0x0380) >> 7;
++
++ if (0 != (version & 0x8000)) {
++ maj_ver |= 0x0008;
++ }
++
++ sprintf( bts_file, "TIInit_%d.%d.%d.bts",
++ (int)chip, (int)maj_ver, (int)min_ver);
++
++ return &bts_file[0];
++ }
++ return NULL;
++}
++
++typedef struct tagCHeader
++{
++ unsigned long magic;
++ unsigned long version;
++ unsigned char future[24];
++} cheader_t;
++
++
++/* The value 0x42535442 stands for (in ASCII) BTSB */
++/* which is Bluetooth Script Binary */
++#define FILE_HEADER_MAGIC 0x42535442
++
++
++bts_t *
++bts_load_script(const char* fname, unsigned long* version)
++{
++ bts_t* bts = NULL;
++ FILE* fp = fopen(fname, "rb");
++
++ if (NULL != fp) {
++ /* Read header */
++ cheader_t header;
++
++ /* Read header */
++ if (1 == fread(&header, sizeof(header), 1, fp)) {
++ /* Check magic number for correctness */
++ if (header.magic == FILE_HEADER_MAGIC) {
++ /* If user wants the version number */
++ if (NULL != version) {
++ *version = header.version;
++ }
++ bts = (bts_t*)fp;
++ }
++ }
++ /* If failed reading the file, close it */
++ if (NULL == bts) {
++ fclose(fp);
++ }
++ }
++ return bts;
++}
++
++unsigned long
++bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype)
++{
++ unsigned long bytes = 0;
++ FILE* fp = (FILE*)bts_fp;
++ unsigned char action_hdr[4];
++
++ if (bts_fp == NULL)
++ return 0;
++
++ /* Each Action has the following: */
++ /* UINT16 type of this action */
++ /* UINT16 size of rest */
++ /* BYTE[] action buffer (for HCI, includes the type byte e.g. 1 for hci command) */
++
++ if (1 == fread(&action_hdr[0], sizeof(action_hdr), 1, fp)) {
++ unsigned short type = *(unsigned short*)&action_hdr[0];
++ unsigned short size = *(unsigned short*)&action_hdr[2];
++
++ if (size <= nMaxSize) {
++ int nread = fread(action_buf, sizeof(action_buf[0]), size, fp);
++
++ if (nread == size) {
++ *ptype = type;
++ bytes = (unsigned long)size;
++ }
++ }
++ }
++
++ return bytes;
++}
++
++void
++bts_unload_script(bts_t* bts_fp)
++{
++ FILE* fp = (FILE*)bts_fp;
++
++ if (NULL != fp) {
++ fclose(fp);
++ }
++}
++
+--- bluez-utils-3.1/tools/Makefile.am.orig 2006-07-23 14:06:59.000000000 +0200
++++ bluez-utils-3.1/tools/Makefile.am 2006-07-23 14:07:18.000000000 +0200
+@@ -45,7 +45,7 @@
+
+ noinst_PROGRAMS = hcisecfilter ppporc
+
+-hciattach_SOURCES = hciattach.c hciattach_st.c
++hciattach_SOURCES = hciattach.c hciattach_st.c ti_bts.h ti_bts.c
+ hciattach_LDADD = @BLUEZ_LIBS@
+
+ hciconfig_SOURCES = hciconfig.c csr.h csr.c
diff --git a/packages/busybox/busybox-1.01/.mtn2git_empty b/packages/bluez/bluez-utils-3.x/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/.mtn2git_empty
+++ b/packages/bluez/bluez-utils-3.x/.mtn2git_empty
diff --git a/packages/bluez/files/hciattach-ti-bts.patch b/packages/bluez/bluez-utils-3.x/hciattach-ti-bts.patch
index 8fe37de9d3..8fe37de9d3 100644
--- a/packages/bluez/files/hciattach-ti-bts.patch
+++ b/packages/bluez/bluez-utils-3.x/hciattach-ti-bts.patch
diff --git a/packages/bluez/files/hcid.conf b/packages/bluez/bluez-utils-3.x/hcid.conf
index 44e9c46fb0..44e9c46fb0 100644
--- a/packages/bluez/files/hcid.conf
+++ b/packages/bluez/bluez-utils-3.x/hcid.conf
diff --git a/packages/bluez/bluez-utils-alsa_3.18.bb b/packages/bluez/bluez-utils-alsa_3.18.bb
index e2f48fba49..5c4a07e8ab 100644
--- a/packages/bluez/bluez-utils-alsa_3.18.bb
+++ b/packages/bluez/bluez-utils-alsa_3.18.bb
@@ -20,5 +20,4 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils-alsa_3.19.bb b/packages/bluez/bluez-utils-alsa_3.19.bb
index e2f48fba49..5c4a07e8ab 100644
--- a/packages/bluez/bluez-utils-alsa_3.19.bb
+++ b/packages/bluez/bluez-utils-alsa_3.19.bb
@@ -20,5 +20,4 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils-alsa_3.20.bb b/packages/bluez/bluez-utils-alsa_3.20.bb
index e2f48fba49..5c4a07e8ab 100644
--- a/packages/bluez/bluez-utils-alsa_3.20.bb
+++ b/packages/bluez/bluez-utils-alsa_3.20.bb
@@ -20,5 +20,4 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils-alsa_3.22.bb b/packages/bluez/bluez-utils-alsa_3.22.bb
index e2f48fba49..5c4a07e8ab 100644
--- a/packages/bluez/bluez-utils-alsa_3.22.bb
+++ b/packages/bluez/bluez-utils-alsa_3.22.bb
@@ -20,5 +20,4 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils-alsa_3.23.bb b/packages/bluez/bluez-utils-alsa_3.23.bb
index e2f48fba49..0d7836fa65 100644
--- a/packages/bluez/bluez-utils-alsa_3.23.bb
+++ b/packages/bluez/bluez-utils-alsa_3.23.bb
@@ -1,4 +1,5 @@
require bluez-utils3.inc
+PR = "r1"
DEPENDS += "alsa-lib"
@@ -20,5 +21,4 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils-alsa_3.24.bb b/packages/bluez/bluez-utils-alsa_3.24.bb
index 5ef75b54a4..a1e3e85818 100644
--- a/packages/bluez/bluez-utils-alsa_3.24.bb
+++ b/packages/bluez/bluez-utils-alsa_3.24.bb
@@ -22,5 +22,4 @@ EXTRA_OECONF = " \
--enable-test \
"
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils3.inc b/packages/bluez/bluez-utils3.inc
index b995d6990c..3932d722ee 100644
--- a/packages/bluez/bluez-utils3.inc
+++ b/packages/bluez/bluez-utils3.inc
@@ -8,11 +8,14 @@ RREPLACES = "bluez-utils-dbus"
RCONFLICTS_${PN} = "bluez-utils-nodbus"
LICENSE = "GPL"
+FILESPATH = "${FILE_DIRNAME}/bluez-utils-${PV}:${FILE_DIRNAME}/bluez-utils"
+
# ti patch should be sent it upstream!
SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
file://hcid.conf \
file://hciattach-ti-bts.patch;patch=1"
+
S = "${WORKDIR}/bluez-utils-${PV}"
inherit autotools update-rc.d
diff --git a/packages/bluez/bluez-utils_3.23.bb b/packages/bluez/bluez-utils_3.23.bb
index f96d1f2ba4..37365f67fc 100644
--- a/packages/bluez/bluez-utils_3.23.bb
+++ b/packages/bluez/bluez-utils_3.23.bb
@@ -1,5 +1,5 @@
require bluez-utils3.inc
-PR = "r1"
+PR = "r2"
# see bluez-utils3.inc for the explanation of these option
EXTRA_OECONF = " \
diff --git a/packages/bonnie/bonnie++.inc b/packages/bonnie/bonnie++.inc
new file mode 100644
index 0000000000..dabe6dc1f7
--- /dev/null
+++ b/packages/bonnie/bonnie++.inc
@@ -0,0 +1,29 @@
+# bonnie OE build file
+# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION="Tests large file IO and creation/deletion of small files."
+LICENSE="GPL"
+
+
+SRC_URI="http://www.coker.com.au/bonnie++/${PN}-${PV}.tgz"
+
+inherit autotools
+
+EXES="bonnie++ zcav"
+SCRIPTS="bon_csv2html bon_csv2txt"
+
+PACKAGES += "bonnie-scripts"
+
+FILES_${PN} = "/sbin"
+FILES_bonnie-scripts="/bin"
+
+S="${WORKDIR}/${PN}-${PV}"
+
+do_install () {
+ install -d ${D}/bin
+ install -d ${D}/sbin
+
+ install -m 0755 ${EXES} ${D}/sbin
+ install -m 0755 ${SCRIPTS} ${D}/bin
+}
diff --git a/packages/bonnie/bonnie++_1.03a.bb b/packages/bonnie/bonnie++_1.03a.bb
index 46d259af78..3934aff43e 100644
--- a/packages/bonnie/bonnie++_1.03a.bb
+++ b/packages/bonnie/bonnie++_1.03a.bb
@@ -1,29 +1 @@
-# bonnie OE build file
-# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION="Tests large file IO and creation/deletion of small files."
-LICENSE="GPL"
-
-
-SRC_URI="${SOURCEFORGE_MIRROR}/bonnie/${PN}-${PV}.tgz"
-
-inherit autotools
-
-EXES="bonnie++ zcav"
-SCRIPTS="bon_csv2html bon_csv2txt"
-
-PACKAGES += "bonnie-scripts"
-
-FILES_${PN} = "/sbin"
-FILES_bonnie-scripts="/bin"
-
-S="${WORKDIR}/${PN}-${PV}"
-
-do_install () {
- install -d ${D}/bin
- install -d ${D}/sbin
-
- install -m 0755 ${EXES} ${D}/sbin
- install -m 0755 ${SCRIPTS} ${D}/bin
-}
+require bonnie++.inc
diff --git a/packages/bonnie/bonnie++_1.03c.bb b/packages/bonnie/bonnie++_1.03c.bb
new file mode 100644
index 0000000000..3934aff43e
--- /dev/null
+++ b/packages/bonnie/bonnie++_1.03c.bb
@@ -0,0 +1 @@
+require bonnie++.inc
diff --git a/packages/boost-asio/boost-asio_0.3.7.bb b/packages/boost-asio/boost-asio_0.3.7.bb
index 947f89cae2..a27001e576 100644
--- a/packages/boost-asio/boost-asio_0.3.7.bb
+++ b/packages/boost-asio/boost-asio_0.3.7.bb
@@ -32,5 +32,5 @@ do_stage() {
cp -dpR boost ${STAGING_INCDIR}
}
-PACKAGES = "${PN}-dev"
+PACKAGES = "${PN}-dbg ${PN}-dev"
FILES_${PN}-dev = "/usr/include"
diff --git a/packages/bootsplash/bootsplash-native_3.0.7.bb b/packages/bootsplash/bootsplash-native_3.0.7.bb
index 7eabf484ac..bc5956d2c4 100644
--- a/packages/bootsplash/bootsplash-native_3.0.7.bb
+++ b/packages/bootsplash/bootsplash-native_3.0.7.bb
@@ -4,6 +4,8 @@
require bootsplash_${PV}.bb
+DEPENDS += "jpeg-native"
+
inherit native
S="${WORKDIR}/bootsplash-${PV}"
diff --git a/packages/bt950-cs/bt950-cs_0.1.bb b/packages/bt950-cs/bt950-cs_0.1.bb
index dfd288e50a..66820a7e7d 100644
--- a/packages/bt950-cs/bt950-cs_0.1.bb
+++ b/packages/bt950-cs/bt950-cs_0.1.bb
@@ -11,7 +11,7 @@ file://makefile.patch;patch=1"
S = "${WORKDIR}/bt950-${PV}"
-PACKAGES = "kernel-module-bt950-cs"
+PACKAGES = "${PN}-dbg kernel-module-bt950-cs"
FILES_kernel-module-bt950-cs = "/etc/pcmcia/bt950.conf /lib/modules/${KERNEL_VERSION}/kernel/drivers/bluetooth/bt950_cs.o"
inherit module
diff --git a/packages/busybox/busybox-1.00/add-getkey-applet.patch b/packages/busybox/busybox-1.00/add-getkey-applet.patch
deleted file mode 100644
index 6ce0df21bd..0000000000
--- a/packages/busybox/busybox-1.00/add-getkey-applet.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- /dev/null
-+++ busybox-1.00/console-tools/getkey.c
-@@ -0,0 +1,94 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * getkey.c - Michael 'Mickey' Lauer
-+ *
-+ * Version 0.1
-+ *
-+ * A simple keygrapper. Displays a configurable message and waits a dedicated number
-+ * of seconds for a keypress. Sets the exit code accordingly (SUCCESS on keypress).
-+ */
-+#include <stdio.h>
-+#include <fcntl.h>
-+#include <memory.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <sys/types.h>
-+#include <errno.h>
-+#include <sys/ioctl.h>
-+#include <sys/kd.h>
-+#include "busybox.h"
-+
-+extern int getkey_main(int argc, char **argv)
-+{
-+ int status = EXIT_FAILURE;
-+
-+ if ( argc < 2 )
-+ {
-+ bb_show_usage();
-+ }
-+
-+ /*
-+ * If no terminal is attached it is quite useless
-+ * to treat it like one.
-+ */
-+ if( !isatty(STDIN_FILENO) )
-+ {
-+ goto error_hard;
-+ }
-+
-+ //bb_printf( "DEBUG: time = '%s'\n", argv[1] );
-+ //bb_printf( "DEBUG: mesg = '%s'\n", argv[2] );
-+
-+ struct termios orig;
-+ struct termios attr;
-+
-+ if ( tcgetattr(STDIN_FILENO, &orig) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ attr = orig;
-+ attr.c_cc[VMIN] = 0;
-+ attr.c_cc[VTIME] = 0;
-+ attr.c_iflag |= INLCR;
-+ attr.c_oflag |= OPOST|ONLCR;
-+ attr.c_cflag &= ~PARENB;
-+ attr.c_lflag &= ~(ICANON/*|ECHO*/);
-+ if ( tcsetattr(STDIN_FILENO,TCSANOW,&attr) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ fd_set rfds;
-+ struct timeval tv;
-+ int retval;
-+
-+ FD_ZERO(&rfds);
-+ FD_SET(0, &rfds);
-+
-+ tv.tv_sec = atoi( argv[1] );
-+ tv.tv_usec = 0;
-+
-+ if ( argc == 3 )
-+ {
-+ bb_printf( argv[2], tv.tv_sec );
-+ bb_printf( "\n" );
-+ fflush(stdout);
-+ }
-+ retval = select(1, &rfds, NULL, NULL, &tv);
-+ if (retval > 0)
-+ {
-+ status = EXIT_SUCCESS;
-+ }
-+
-+ if (tcsetattr(STDIN_FILENO,TCSANOW,&orig) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ return status;
-+
-+error_hard :
-+ return EXIT_FAILURE;
-+};
-+
---- busybox-1.00/console-tools/Makefile.in~add-getkey-applet.patch
-+++ busybox-1.00/console-tools/Makefile.in
-@@ -28,6 +28,7 @@
- CONSOLETOOLS_DIR-$(CONFIG_CLEAR) += clear.o
- CONSOLETOOLS_DIR-$(CONFIG_DEALLOCVT) += deallocvt.o
- CONSOLETOOLS_DIR-$(CONFIG_DUMPKMAP) += dumpkmap.o
-+CONSOLETOOLS_DIR-$(CONFIG_GETKEY) += getkey.o
- CONSOLETOOLS_DIR-$(CONFIG_LOADFONT) += loadfont.o
- CONSOLETOOLS_DIR-$(CONFIG_LOADKMAP) += loadkmap.o
- CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o
---- busybox-1.00/console-tools/Config.in~add-getkey-applet.patch
-+++ busybox-1.00/console-tools/Config.in
-@@ -31,6 +31,14 @@
- This program dumps the kernel's keyboard translation table to
- stdout, in binary format. You can then use loadkmap to load it.
-
-+config CONFIG_GETKEY
-+ bool "getkey"
-+ default n
-+ help
-+ This program displays a configurable message and waits
-+ a dedicated number of seconds for a keypress. It sets
-+ the exit code accordingly, i.e. SUCCESS if there was a keypress.
-+
- config CONFIG_LOADFONT
- bool "loadfont"
- default n
---- busybox-1.00/include/applets.h~add-getkey-applet.patch
-+++ busybox-1.00/include/applets.h
-@@ -223,6 +223,9 @@
- #ifdef CONFIG_FTPPUT
- APPLET(ftpput, ftpgetput_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
- #endif
-+#ifdef CONFIG_GETKEY
-+ APPLET(getkey, getkey_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
-+#endif
- #ifdef CONFIG_GETOPT
- APPLET(getopt, getopt_main, _BB_DIR_BIN, _BB_SUID_NEVER)
- #endif
---- busybox-1.00/include/usage.h~add-getkey-applet.patch
-+++ busybox-1.00/include/usage.h
-@@ -734,6 +734,13 @@
- "\t-p, --password Password to be used\n" \
- "\t-P, --port Port number to be used"
-
-+#define getkey_trivial_usage \
-+ "time [message]"
-+#define getkey_full_usage \
-+ "Display a message and wait for a keypress."
-+#define getkey_example_usage \
-+ "$ getkey 5 'Press a key within %d seconds to interrupt autoboot.'"
-+
- #define getopt_trivial_usage \
- "[OPTIONS]..."
- #define getopt_full_usage \
diff --git a/packages/busybox/busybox-1.00/below.patch b/packages/busybox/busybox-1.00/below.patch
deleted file mode 100644
index ec97b29962..0000000000
--- a/packages/busybox/busybox-1.00/below.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Index: modutils/modprobe.c
-===================================================================
-RCS file: /var/cvs/busybox/modutils/modprobe.c,v
-retrieving revision 1.41
-diff -u -r1.41 modprobe.c
---- busybox/modutils/modprobe.c 24 Sep 2004 09:18:55 -0000 1.41
-+++ busybox/modutils/modprobe.c 29 Dec 2004 11:56:07 -0000
-@@ -357,6 +357,41 @@
- }
- }
- }
-+ else if ((strncmp (buffer, "below", 5) == 0) && isspace (buffer[5])) {
-+ char *mod, *deps;
-+ if (parse_tag_value (buffer + 6, &mod, &deps)) {
-+ struct dep_t *dt;
-+
-+ for (dt = first; dt; dt = dt->m_next) {
-+ if (strcmp (dt->m_name, mod) == 0)
-+ break;
-+ }
-+ if (dt) {
-+ char *pp;
-+ char *name;
-+
-+ pp = name = deps;
-+
-+ for (;;) {
-+ while (*pp != 0 && !isspace (*pp))
-+ pp++;
-+ if (isspace (*pp))
-+ *(pp++) = 0;
-+
-+ dt->m_depcnt++;
-+ dt->m_deparr = (char **) xrealloc (dt->m_deparr,
-+ sizeof (char *) * dt->m_depcnt);
-+ dt->m_deparr[dt->m_depcnt - 1] = bb_xstrdup (name);
-+
-+ while (isspace (*pp))
-+ pp++;
-+ name = pp;
-+ if (*pp == 0)
-+ break;
-+ }
-+ }
-+ }
-+ }
- }
- }
- close ( fd );
diff --git a/packages/busybox/busybox-1.00/celf-ash-builtins.patch b/packages/busybox/busybox-1.00/celf-ash-builtins.patch
deleted file mode 100644
index ec1925e6ad..0000000000
--- a/packages/busybox/busybox-1.00/celf-ash-builtins.patch
+++ /dev/null
@@ -1,431 +0,0 @@
-diff -Naur busybox-1.00-pre3.orig/coreutils/echo.c busybox-1.00-pre3/coreutils/echo.c
---- busybox-1.00-pre3.orig/coreutils/echo.c 2003-03-19 12:11:33.000000000 +0300
-+++ busybox-1.00-pre3/coreutils/echo.c 2003-11-07 17:47:35.000000000 +0300
-@@ -122,7 +122,11 @@
- #endif
-
- DONE:
-- bb_fflush_stdout_and_exit(EXIT_SUCCESS);
-+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
-+ return EXIT_SUCCESS;
-+#else
-+ bb_fflush_stdout_and_exit(EXIT_SUCCESS);
-+#endif
- }
-
- /*-
-diff -Naur busybox-1.00-pre3.orig/coreutils/test.c busybox-1.00-pre3/coreutils/test.c
---- busybox-1.00-pre3.orig/coreutils/test.c 2003-07-15 01:20:45.000000000 +0400
-+++ busybox-1.00-pre3/coreutils/test.c 2003-11-07 17:47:35.000000000 +0300
-@@ -188,19 +188,19 @@
- /* Implement special cases from POSIX.2, section 4.62.4 */
- switch (argc) {
- case 1:
-- exit(1);
-+ return (1);
- case 2:
-- exit(*argv[1] == '\0');
-+ return (*argv[1] == '\0');
- case 3:
- if (argv[1][0] == '!' && argv[1][1] == '\0') {
-- exit(!(*argv[2] == '\0'));
-+ return (!(*argv[2] == '\0'));
- }
- break;
- case 4:
- if (argv[1][0] != '!' || argv[1][1] != '\0') {
- if (t_lex(argv[2]), t_wp_op && t_wp_op->op_type == BINOP) {
- t_wp = &argv[1];
-- exit(binop() == 0);
-+ return (binop() == 0);
- }
- }
- break;
-@@ -208,7 +208,7 @@
- if (argv[1][0] == '!' && argv[1][1] == '\0') {
- if (t_lex(argv[3]), t_wp_op && t_wp_op->op_type == BINOP) {
- t_wp = &argv[2];
-- exit(!(binop() == 0));
-+ return (!(binop() == 0));
- }
- }
- break;
-diff -Naur busybox-1.00-pre3.orig/include/usage.h busybox-1.00-pre3/include/usage.h
---- busybox-1.00-pre3.orig/include/usage.h 2003-08-29 18:18:26.000000000 +0400
-+++ busybox-1.00-pre3/include/usage.h 2003-11-07 17:47:59.000000000 +0300
-@@ -1760,6 +1760,13 @@
- "quit\n" \
- "221 foobar closing connection\n"
-
-+#define nice_trivial_usage \
-+ "[OPTION] [COMMAND [ARG]...]"
-+#define nice_full_usage \
-+ "Run COMMAND with an adjusted scheduling priority."
-+#define nice_example_usage \
-+ "$ nice -n 0 /tmp/foo \n"
-+
- #define netstat_trivial_usage \
- "[-laenrtuwx]"
- #define netstat_full_usage \
-diff -Naur busybox-1.00-pre3.orig/shell/Config.in busybox-1.00-pre3/shell/Config.in
---- busybox-1.00-pre3.orig/shell/Config.in 2003-09-12 08:51:25.000000000 +0400
-+++ busybox-1.00-pre3/shell/Config.in 2003-11-07 17:47:59.000000000 +0300
-@@ -53,6 +53,34 @@
- help
- Enable job control in the ash shell.
-
-+config CONFIG_ASH_PIPE_OPTIMIZATION
-+ bool " Enable ash pipe optimization "
-+ default y
-+ depends on CONFIG_ASH
-+ help
-+ Eliminate cat at the beginning of the pipe.
-+
-+config CONFIG_FEATURE_BUILTIN_TEST
-+ bool " Builtin test command"
-+ default y
-+ depends on CONFIG_ASH
-+ help
-+ Builtin test command"
-+
-+config CONFIG_FEATURE_BUILTIN_ECHO
-+ bool " Builtin echo command"
-+ default y
-+ depends on CONFIG_ASH
-+ help
-+ Builtin echo command"
-+
-+config CONFIG_FEATURE_BUILTIN_PIDOF
-+ bool " Builtin pidof command"
-+ default y
-+ depends on CONFIG_ASH && CONFIG_PIDOF
-+ help
-+ Builtin pidof command"
-+
- config CONFIG_ASH_ALIAS
- bool " Enable alias support"
- default y
-diff -Naur busybox-1.00-pre3.orig/shell/ash.c busybox-1.00-pre3/shell/ash.c
---- busybox-1.00-pre3.orig/shell/ash.c 2003-09-02 06:36:17.000000000 +0400
-+++ busybox-1.00-pre3/shell/ash.c 2003-11-07 17:47:59.000000000 +0300
-@@ -1259,6 +1259,16 @@
- #ifdef JOBS
- static int killcmd(int, char **);
- #endif
-+#ifdef CONFIG_FEATURE_BUILTIN_TEST
-+static int testcmd(int, char **);
-+#endif
-+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
-+static int echocmd(int, char**);
-+#endif
-+#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
-+static int pidofcmd(int, char **);
-+#endif
-+
-
- /* $NetBSD: mail.h,v 1.9 2002/11/24 22:35:40 christos Exp $ */
-
-@@ -1281,39 +1291,6 @@
- /* unsigned flags; */
- };
-
--#ifdef CONFIG_ASH_CMDCMD
--# ifdef JOBS
--# ifdef CONFIG_ASH_ALIAS
--# define COMMANDCMD (builtincmd + 7)
--# define EXECCMD (builtincmd + 10)
--# else
--# define COMMANDCMD (builtincmd + 6)
--# define EXECCMD (builtincmd + 9)
--# endif
--# else /* ! JOBS */
--# ifdef CONFIG_ASH_ALIAS
--# define COMMANDCMD (builtincmd + 6)
--# define EXECCMD (builtincmd + 9)
--# else
--# define COMMANDCMD (builtincmd + 5)
--# define EXECCMD (builtincmd + 8)
--# endif
--# endif /* JOBS */
--#else /* ! CONFIG_ASH_CMDCMD */
--# ifdef JOBS
--# ifdef CONFIG_ASH_ALIAS
--# define EXECCMD (builtincmd + 9)
--# else
--# define EXECCMD (builtincmd + 8)
--# endif
--# else /* ! JOBS */
--# ifdef CONFIG_ASH_ALIAS
--# define EXECCMD (builtincmd + 8)
--# else
--# define EXECCMD (builtincmd + 7)
--# endif
--# endif /* JOBS */
--#endif /* CONFIG_ASH_CMDCMD */
-
- #define BUILTIN_NOSPEC "0"
- #define BUILTIN_SPECIAL "1"
-@@ -1328,65 +1305,21 @@
- #define IS_BUILTIN_REGULAR(builtincmd) ((builtincmd)->name[0] & 2)
-
- static const struct builtincmd builtincmd[] = {
-- { BUILTIN_SPEC_REG ".", dotcmd },
-- { BUILTIN_SPEC_REG ":", truecmd },
--#ifdef CONFIG_ASH_ALIAS
-- { BUILTIN_REG_ASSG "alias", aliascmd },
--#endif
--#ifdef JOBS
-- { BUILTIN_REGULAR "bg", bgcmd },
--#endif
-- { BUILTIN_SPEC_REG "break", breakcmd },
-- { BUILTIN_REGULAR "cd", cdcmd },
-- { BUILTIN_NOSPEC "chdir", cdcmd },
--#ifdef CONFIG_ASH_CMDCMD
-- { BUILTIN_REGULAR "command", commandcmd },
--#endif
-- { BUILTIN_SPEC_REG "continue", breakcmd },
-- { BUILTIN_SPEC_REG "eval", evalcmd },
-- { BUILTIN_SPEC_REG "exec", execcmd },
-- { BUILTIN_SPEC_REG "exit", exitcmd },
-- { BUILTIN_SPEC_REG_ASSG "export", exportcmd },
-- { BUILTIN_REGULAR "false", falsecmd },
--#ifdef JOBS
-- { BUILTIN_REGULAR "fg", fgcmd },
--#endif
--#ifdef CONFIG_ASH_GETOPTS
-- { BUILTIN_REGULAR "getopts", getoptscmd },
--#endif
-- { BUILTIN_NOSPEC "hash", hashcmd },
--#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
-- { BUILTIN_NOSPEC "help", helpcmd },
--#endif
--#ifdef JOBS
-- { BUILTIN_REGULAR "jobs", jobscmd },
-- { BUILTIN_REGULAR "kill", killcmd },
--#endif
--#ifdef CONFIG_ASH_MATH_SUPPORT
-- { BUILTIN_NOSPEC "let", letcmd },
--#endif
-- { BUILTIN_ASSIGN "local", localcmd },
-- { BUILTIN_NOSPEC "pwd", pwdcmd },
-- { BUILTIN_REGULAR "read", readcmd },
-- { BUILTIN_SPEC_REG_ASSG "readonly", exportcmd },
-- { BUILTIN_SPEC_REG "return", returncmd },
-- { BUILTIN_SPEC_REG "set", setcmd },
-- { BUILTIN_SPEC_REG "shift", shiftcmd },
-- { BUILTIN_SPEC_REG "times", timescmd },
-- { BUILTIN_SPEC_REG "trap", trapcmd },
-- { BUILTIN_REGULAR "true", truecmd },
-- { BUILTIN_NOSPEC "type", typecmd },
-- { BUILTIN_NOSPEC "ulimit", ulimitcmd },
-- { BUILTIN_REGULAR "umask", umaskcmd },
--#ifdef CONFIG_ASH_ALIAS
-- { BUILTIN_REGULAR "unalias", unaliascmd },
--#endif
-- { BUILTIN_SPEC_REG "unset", unsetcmd },
-- { BUILTIN_REGULAR "wait", waitcmd },
-+#define BUILTIN_COMMAND_SPEC(code, str, func) {str, func},
-+#include "ash.d"
-+{}
- };
-
--#define NUMBUILTINS (sizeof (builtincmd) / sizeof (struct builtincmd) )
-+enum {
-+#define BUILTIN_COMMAND_SPEC(code, str, func) code,
-+#include "ash.d"
-+NUMBUILTINS
-+};
-
-+#ifdef CONFIG_ASH_CMDCMD
-+#define COMMANDCMD (builtincmd + COMMAND_CMD)
-+#endif
-+#define EXECCMD (builtincmd + EXEC_CMD)
-
-
- struct cmdentry {
-@@ -1678,7 +1611,8 @@
-
- /* from input.c: */
- {
-- basepf.nextc = basepf.buf = basebuf;
-+ struct parsefile* pf = &basepf;
-+ pf->nextc = pf->buf = basebuf;
- }
-
- /* from trap.c: */
-@@ -2678,6 +2612,14 @@
- * Called to reset things after an exception.
- */
-
-+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
-+static int
-+echocmd(int argc, char **argv)
-+{
-+ return echo_main(argc, argv);
-+}
-+#endif
-+
- /*
- * The eval commmand.
- */
-@@ -3028,6 +2970,23 @@
- }
-
-
-+static int
-+cat_file(union node *n)
-+{
-+#ifdef CONFIG_ASH_PIPE_OPTIMIZATION
-+ if (n->type == NCMD
-+ && n->ncmd.args != NULL
-+ && strcmp(n->ncmd.args->narg.text, "cat") == 0
-+ && n->ncmd.args->narg.next != NULL
-+ && *n->ncmd.args->narg.next->narg.text != '-'
-+ && n->ncmd.args->narg.next->narg.next == NULL)
-+ {
-+ return open(n->ncmd.args->narg.next->narg.text, O_RDONLY);
-+ }
-+#endif
-+ return -1;
-+}
-+
-
- /*
- * Evaluate a pipeline. All the processes in the pipeline are children
-@@ -3057,7 +3016,11 @@
- prehash(lp->n);
- pip[1] = -1;
- if (lp->next) {
-- if (pipe(pip) < 0) {
-+ if (prevfd < 0 && (prevfd = cat_file(lp->n)) >= 0) {
-+ // it is cat at the beginning of the pipe
-+ continue;
-+ }
-+ if (pipe(pip) < 0) {
- close(prevfd);
- error("Pipe call failed");
- }
-@@ -3104,11 +3067,11 @@
- {
- int saveherefd;
-
-- result->fd = -1;
-+ result->fd = cat_file(n);
- result->buf = NULL;
- result->nleft = 0;
- result->jp = NULL;
-- if (n == NULL) {
-+ if (n == NULL || result->fd >= 0) {
- goto out;
- }
-
-@@ -3562,6 +3525,24 @@
- }
- }
-
-+#ifdef CONFIG_FEATURE_BUILTIN_TEST
-+static int
-+testcmd(int argc, char** argv)
-+{
-+ bb_applet_name = argv[0];
-+ return test_main(argc, argv);
-+}
-+#endif
-+
-+#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
-+static int
-+pidofcmd(int argc, char** argv)
-+{
-+ bb_applet_name = argv[0];
-+ return pidof_main(argc, argv);
-+}
-+#endif
-+
-
- static int
- falsecmd(int argc, char **argv)
-@@ -4943,7 +4924,9 @@
- ckfree(in.buf);
- if (in.fd >= 0) {
- close(in.fd);
-- back_exitstatus = waitforjob(in.jp);
-+ if (in.jp != NULL) {
-+ back_exitstatus = waitforjob(in.jp);
-+ }
- }
- INTON;
-
-diff -Naur busybox-1.00-pre3.orig/shell/ash.d busybox-1.00-pre3/shell/ash.d
---- busybox-1.00-pre3.orig/shell/ash.d 1970-01-01 03:00:00.000000000 +0300
-+++ busybox-1.00-pre3/shell/ash.d 2003-11-07 17:47:59.000000000 +0300
-@@ -0,0 +1,70 @@
-+BUILTIN_COMMAND_SPEC(DOT_CMD, BUILTIN_SPEC_REG ".", dotcmd)
-+BUILTIN_COMMAND_SPEC(COMMA_CMD, BUILTIN_SPEC_REG ":", truecmd)
-+#ifdef CONFIG_FEATURE_BUILTIN_TEST
-+BUILTIN_COMMAND_SPEC(RPAR_CMD, BUILTIN_REGULAR "[", testcmd)
-+#endif
-+#ifdef CONFIG_ASH_ALIAS
-+BUILTIN_COMMAND_SPEC(ALIAS_CMD, BUILTIN_REG_ASSG "alias", aliascmd)
-+#endif
-+#ifdef JOBS
-+BUILTIN_COMMAND_SPEC(BG_CMD, BUILTIN_REGULAR "bg", bgcmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(BREAK_CMD, BUILTIN_SPEC_REG "break", breakcmd)
-+BUILTIN_COMMAND_SPEC(CD_CMD, BUILTIN_REGULAR "cd", cdcmd)
-+BUILTIN_COMMAND_SPEC(CHDIR_CMD, BUILTIN_NOSPEC "chdir", cdcmd)
-+#ifdef CONFIG_ASH__CMD_CMD
-+BUILTIN_COMMAND_SPEC(COMMAND_CMD, BUILTIN_REGULAR "command", commandcmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(CONTINUE_CMD,BUILTIN_SPEC_REG "continue", breakcmd)
-+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
-+BUILTIN_COMMAND_SPEC(ECHO_CMD, BUILTIN_REGULAR "echo", echocmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(EVAL_CMD, BUILTIN_SPEC_REG "eval", evalcmd)
-+BUILTIN_COMMAND_SPEC(EXEC_CMD, BUILTIN_SPEC_REG "exec", execcmd)
-+BUILTIN_COMMAND_SPEC(EXIT_CMD, BUILTIN_SPEC_REG "exit", exitcmd)
-+BUILTIN_COMMAND_SPEC(EXPORT_CMD, BUILTIN_SPEC_REG_ASSG "export", exportcmd)
-+BUILTIN_COMMAND_SPEC(FALSE_CMD, BUILTIN_REGULAR "false", falsecmd)
-+#ifdef JOBS
-+BUILTIN_COMMAND_SPEC(FG_CMD, BUILTIN_REGULAR "fg", fgcmd)
-+#endif
-+#ifdef CONFIG_ASH_GETOPTS
-+BUILTIN_COMMAND_SPEC(GETOPTS_CMD, BUILTIN_REGULAR "getopts", getoptscmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(HASH_CMD, BUILTIN_NOSPEC "hash", hashcmd)
-+#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
-+BUILTIN_COMMAND_SPEC(HELP_CMD, BUILTIN_NOSPEC "help", helpcmd)
-+#endif
-+#ifdef JOBS
-+BUILTIN_COMMAND_SPEC(JOBS_CMD, BUILTIN_REGULAR "jobs", jobscmd)
-+BUILTIN_COMMAND_SPEC(KILL_CMD, BUILTIN_REGULAR "kill", killcmd)
-+#endif
-+#ifdef CONFIG_ASH_MATH_SUPPORT
-+BUILTIN_COMMAND_SPEC(LET_CMD, BUILTIN_NOSPEC "let", letcmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(LOCAL_CMD, BUILTIN_ASSIGN "local", localcmd)
-+#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
-+BUILTIN_COMMAND_SPEC(PIDOF_CMD, BUILTIN_REGULAR "pidof", pidofcmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(PWD_CMD, BUILTIN_NOSPEC "pwd", pwdcmd)
-+BUILTIN_COMMAND_SPEC(READ_CMD, BUILTIN_REGULAR "read", readcmd)
-+BUILTIN_COMMAND_SPEC(READONLY_CMD,BUILTIN_SPEC_REG_ASSG "readonly", exportcmd)
-+BUILTIN_COMMAND_SPEC(RETURN_CMD, BUILTIN_SPEC_REG "return", returncmd)
-+BUILTIN_COMMAND_SPEC(SET_CMD, BUILTIN_SPEC_REG "set", setcmd)
-+BUILTIN_COMMAND_SPEC(SHIFT_CMD, BUILTIN_SPEC_REG "shift", shiftcmd)
-+#ifdef CONFIG_FEATURE_BUILTIN_TEST
-+BUILTIN_COMMAND_SPEC(TEST_CMD, BUILTIN_REGULAR "test", testcmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(TIMES_CMD, BUILTIN_SPEC_REG "times", timescmd)
-+BUILTIN_COMMAND_SPEC(TRAP_CMD, BUILTIN_SPEC_REG "trap", trapcmd)
-+BUILTIN_COMMAND_SPEC(TRUE_CMD, BUILTIN_REGULAR "true", truecmd)
-+BUILTIN_COMMAND_SPEC(TYPE_CMD, BUILTIN_NOSPEC "type", typecmd)
-+BUILTIN_COMMAND_SPEC(ULIMIT_CMD, BUILTIN_NOSPEC "ulimit", ulimitcmd)
-+BUILTIN_COMMAND_SPEC(UMASK_CMD, BUILTIN_REGULAR "umask", umaskcmd)
-+#ifdef CONFIG_ASH_ALIAS
-+BUILTIN_COMMAND_SPEC(UNALIAS_CMD, BUILTIN_REGULAR "unalias", unaliascmd)
-+#endif
-+BUILTIN_COMMAND_SPEC(UNSET_CMD, BUILTIN_SPEC_REG "unset", unsetcmd)
-+BUILTIN_COMMAND_SPEC(WAIT_CMD, BUILTIN_REGULAR "wait", waitcmd)
-+
-+
-+#undef BUILTIN_COMMAND_SPEC
diff --git a/packages/busybox/busybox-1.00/console.patch b/packages/busybox/busybox-1.00/console.patch
deleted file mode 100644
index d57bdfbe89..0000000000
--- a/packages/busybox/busybox-1.00/console.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- busybox-1.00-pre2/libbb/get_console.c~console
-+++ busybox-1.00-pre2/libbb/get_console.c
-@@ -86,10 +86,6 @@
- {
- int fd;
-
-- if (-1 == (fd = open_a_console("/dev/console")))
-- return -1;
-- else
-- return fd;
- fd = open_a_console(CURRENT_TTY);
- if (fd >= 0)
- return fd;
diff --git a/packages/busybox/busybox-1.00/defconfig b/packages/busybox/busybox-1.00/defconfig
deleted file mode 100644
index 8b8212c54a..0000000000
--- a/packages/busybox/busybox-1.00/defconfig
+++ /dev/null
@@ -1,476 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-# CONFIG_FEATURE_LS_RECURSIVE is not set
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-CONFIG_FEATURE_INSMOD_LOAD_MAP=y
-CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
-CONFIG_LSMOD=y
-CONFIG_MODPROBE=y
-CONFIG_RMMOD=y
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-CONFIG_UDHCPD=y
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.00/df.patch b/packages/busybox/busybox-1.00/df.patch
deleted file mode 100644
index 49888293fd..0000000000
--- a/packages/busybox/busybox-1.00/df.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- busybox-1.00/coreutils/df.c.orig 2006-07-14 09:50:47.914912750 -0400
-+++ busybox-1.00/coreutils/df.c 2006-07-14 09:52:32.613456000 -0400
-@@ -60,6 +60,7 @@
- struct statfs s;
- static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */
- const char *disp_units_hdr = hdr_1k;
-+ int root_done = 0;
-
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
- bb_opt_complementaly = "h-km:k-hm:m-hk";
-@@ -125,14 +126,14 @@
- ) / (blocks_used + s.f_bavail);
- }
-
-- if (strcmp(device, "rootfs") == 0) {
-- continue;
-- } else if (strcmp(device, "/dev/root") == 0) {
-+ if (strcmp(device, "/dev/root") == 0 || strcmp(device, "rootfs") == 0) {
-+ if (root_done) continue;
- /* Adjusts device to be the real root device,
- * or leaves device alone if it can't find it */
- if ((device = find_real_root_device_name()) == NULL) {
- goto SET_ERROR;
- }
-+ root_done = 1;
- }
-
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
diff --git a/packages/busybox/busybox-1.00/dhcp-hostname.patch b/packages/busybox/busybox-1.00/dhcp-hostname.patch
deleted file mode 100644
index 5eb77a8e10..0000000000
--- a/packages/busybox/busybox-1.00/dhcp-hostname.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- busybox/networking/udhcp/dhcpc.c 2005-05-25 11:49:24.000000000 +0100
-+++ busybox/networking/udhcp/dhcpc.c 2005-05-25 12:54:30.000000000 +0100
-@@ -193,6 +193,7 @@
- long now;
- int max_fd;
- int sig;
-+ char hostbuf[256]; /* SUSv2: hostnames are <= 255 bytes */
-
- static const struct option arg_options[] = {
- {"clientid", required_argument, 0, 'c'},
-@@ -211,6 +212,14 @@
- {0, 0, 0, 0}
- };
-
-+ if (gethostname (hostbuf, sizeof (hostbuf)) == 0) {
-+ len = strlen (hostbuf);
-+ client_config.hostname = xmalloc (len + 2);
-+ client_config.hostname[OPT_CODE] = DHCP_HOST_NAME;
-+ client_config.hostname[OPT_LEN] = len;
-+ strncpy(client_config.hostname + 2, hostbuf, len);
-+ }
-+
- /* get options */
- while (1) {
- int option_index = 0;
diff --git a/packages/busybox/busybox-1.00/dhcpretrytime.patch b/packages/busybox/busybox-1.00/dhcpretrytime.patch
deleted file mode 100644
index c55a38552f..0000000000
--- a/packages/busybox/busybox-1.00/dhcpretrytime.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.00-rc3/networking/udhcp/dhcpc.c~dhcpretrytime
-+++ busybox-1.00-rc3/networking/udhcp/dhcpc.c
-@@ -48,6 +48,7 @@
- static unsigned long requested_ip; /* = 0 */
- static unsigned long server_addr;
- static unsigned long timeout;
-+static unsigned long retrytime = 60;
- static int packet_num; /* = 0 */
- static int fd = -1;
-
-@@ -90,6 +91,7 @@
- " -r, --request=IP IP address to request (default: none)\n"
- " -s, --script=file Run file at dhcp events (default:\n"
- " " DEFAULT_SCRIPT ")\n"
-+" -t, --retrytime time to retry DHCP request (default 60s)\n")
- " -v, --version Display version\n"
- );
- exit(0);
-@@ -204,6 +206,7 @@
- {"quit", no_argument, 0, 'q'},
- {"request", required_argument, 0, 'r'},
- {"script", required_argument, 0, 's'},
-+ {"retrytime", required_argument, 0, 't'},
- {"version", no_argument, 0, 'v'},
- {0, 0, 0, 0}
- };
-@@ -211,7 +214,7 @@
- /* get options */
- while (1) {
- int option_index = 0;
-- c = getopt_long(argc, argv, "c:fbH:h:i:np:qr:s:v", arg_options, &option_index);
-+ c = getopt_long(argc, argv, "c:fbH:h:i:np:qr:s:t:v", arg_options, &option_index);
- if (c == -1) break;
-
- switch (c) {
-@@ -257,6 +260,9 @@
- case 's':
- client_config.script = optarg;
- break;
-+ case 't':
-+ retrytime = atol(optarg);
-+ break;
- case 'v':
- printf("udhcpcd, version %s\n\n", VERSION);
- return 0;
-@@ -335,7 +341,7 @@
- }
- /* wait to try again */
- packet_num = 0;
-- timeout = now + 60;
-+ timeout = now + retrytime;
- }
- break;
- case RENEW_REQUESTED:
---- busybox-1.00-rc3/networking/ifupdown.c~dhcpretrytime
-+++ busybox-1.00-rc3/networking/ifupdown.c
-@@ -538,7 +538,7 @@
- static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
- {
- if (execable("/sbin/udhcpc")) {
-- return( execute("udhcpc -n -p /var/run/udhcpc.%iface%.pid -i "
-+ return( execute("udhcpc -b -p /var/run/udhcpc.%iface%.pid -i "
- "%iface% [[-H %hostname%]] [[-c %clientid%]]", ifd, exec));
- } else if (execable("/sbin/pump")) {
- return( execute("pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]]", ifd, exec));
-@@ -558,8 +558,8 @@
- /* SIGUSR2 forces udhcpc to release the current lease and go inactive,
- * and SIGTERM causes udhcpc to exit. Signals are queued and processed
- * sequentially so we don't need to sleep */
-- result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
-- result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
-+ result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
-+ result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
- } else if (execable("/sbin/pump")) {
- result = execute("pump -i %iface% -k", ifd, exec);
- } else if (execable("/sbin/dhclient")) {
diff --git a/packages/busybox/busybox-1.00/fbset.patch b/packages/busybox/busybox-1.00/fbset.patch
deleted file mode 100644
index d0609ce6f7..0000000000
--- a/packages/busybox/busybox-1.00/fbset.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- busybox/util-linux/fbset.c~ 2004-07-03 16:24:23.000000000 +0100
-+++ busybox/util-linux/fbset.c 2004-12-30 20:09:26.000000000 +0000
-@@ -337,7 +337,7 @@
- {
- struct fb_var_screeninfo var, varset;
- int fh, i;
-- char *fbdev = DEFAULTFBDEV;
-+ char *fbdev = NULL;
- char *modefile = DEFAULTFBMODE;
- char *thisarg, *mode = NULL;
-
-@@ -404,7 +404,12 @@
- }
- }
-
-+ if (fbdev == NULL)
-+ fbdev = DEFAULTFBDEV;
- if ((fh = open(fbdev, O_RDONLY)) < 0)
-+#ifdef CONFIG_FEATURE_DEVFS
-+ if ((fh = open("/dev/fb0", O_RDONLY)) < 0)
-+#endif
- bb_perror_msg_and_die("fbset(open)");
- if (ioctl(fh, FBIOGET_VSCREENINFO, &var))
- bb_perror_msg_and_die("fbset(ioctl)");
diff --git a/packages/busybox/busybox-1.00/gzip-spurious-const.patch b/packages/busybox/busybox-1.00/gzip-spurious-const.patch
deleted file mode 100644
index 114a284e99..0000000000
--- a/packages/busybox/busybox-1.00/gzip-spurious-const.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- busybox-1.00/archival/gzip.c.old 2005-06-05 22:57:32.000000000 +0100
-+++ busybox-1.00/archival/gzip.c 2005-06-05 22:57:38.000000000 +0100
-@@ -2162,7 +2162,7 @@
- * Construct the Huffman tree for the bit lengths and return the index in
- * bl_order of the last bit length code to send.
- */
--static const int build_bl_tree()
-+static int build_bl_tree()
- {
- int max_blindex; /* index of last bit length code of non zero freq */
-
diff --git a/packages/busybox/busybox-1.00/hdparm_M.patch b/packages/busybox/busybox-1.00/hdparm_M.patch
deleted file mode 100644
index 170906535e..0000000000
--- a/packages/busybox/busybox-1.00/hdparm_M.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -Naur busybox-1.00/miscutils/hdparm.c busybox-1.00-patched/miscutils/hdparm.c
---- busybox-1.00/miscutils/hdparm.c 2004-07-21 00:53:59.000000000 +0200
-+++ busybox-1.00-patched/miscutils/hdparm.c 2004-10-21 15:17:13.000000000 +0200
-@@ -1254,6 +1254,7 @@
- static unsigned long set_sleepnow = 0, get_sleepnow = 0;
- static unsigned long get_powermode = 0;
- static unsigned long set_apmmode = 0, get_apmmode= 0, apmmode = 0;
-+static unsigned long set_acoustic = 0, get_acoustic = 0, acoustic = 0;
- #endif
- #ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
- static int get_IDentity = 0;
-@@ -2123,6 +2124,20 @@
- }
- bb_ioctl(fd, HDIO_DRIVE_CMD, &args,"HDIO_DRIVE_CMD");
- }
-+ if (set_acoustic)
-+ {
-+ no_scsi();
-+ acoustic=check_if_min_and_set_val(acoustic,0);
-+ acoustic=check_if_maj_and_set_val(acoustic,254);
-+ if_printf(get_acoustic," setting AAM level to 0x%02lX (%ld)\n", acoustic, acoustic);
-+ bb_ioctl(fd, HDIO_SET_ACOUSTIC, (int*)acoustic,"HDIO_SET_ACOUSTIC");
-+ }
-+ if (get_acoustic)
-+ {
-+ no_scsi();
-+ bb_ioctl(fd, HDIO_GET_ACOUSTIC, (unsigned long*)&parm,"HDIO_GET_ACOUSTIC");
-+ printf(" acoustic = %2ld (128=quiet ... 254=fast)\n", parm);
-+ }
- if (set_wcache)
- {
- #ifdef DO_FLUSHCACHE
-@@ -2831,6 +2846,13 @@
- p = *argv++, --argc;
- p=GET_NUMBER(p,&set_readahead,&Xreadahead);
- break;
-+ case 'M':
-+ get_acoustic = noisy;
-+ noisy = 1;
-+ if (!*p && argc && isalnum(**argv))
-+ p = *argv++, --argc;
-+ p=GET_NUMBER(p,&set_acoustic,&acoustic);
-+ break;
- case 'B':
- get_apmmode = noisy;
- noisy = 1;
-
diff --git a/packages/busybox/busybox-1.00/ifupdown-spurious-environ.patch b/packages/busybox/busybox-1.00/ifupdown-spurious-environ.patch
deleted file mode 100644
index 8753315f2c..0000000000
--- a/packages/busybox/busybox-1.00/ifupdown-spurious-environ.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- busybox-1.00/networking/ifupdown.c.old 2005-06-11 19:51:59.000000000 +0100
-+++ busybox-1.00/networking/ifupdown.c 2005-06-11 19:52:19.000000000 +0100
-@@ -148,6 +148,9 @@
- struct mapping_defn_t *mappings;
- };
-
-+/* XXX */
-+#define environ local_environ
-+
- static char no_act = 0;
- static char verbose = 0;
- static char **environ = NULL;
diff --git a/packages/busybox/busybox-1.00/iproute-flush-cache.patch b/packages/busybox/busybox-1.00/iproute-flush-cache.patch
deleted file mode 100644
index f8becc3390..0000000000
--- a/packages/busybox/busybox-1.00/iproute-flush-cache.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: networking/libiproute/iproute.c
-===================================================================
-RCS file: /var/cvs/busybox/networking/libiproute/iproute.c,v
-retrieving revision 1.14
-diff -u -r1.14 iproute.c
---- networking/libiproute/iproute.c 11 Aug 2004 08:10:58 -0000 1.14
-+++ networking/libiproute/iproute.c 30 Nov 2004 20:43:44 -0000
-@@ -537,6 +537,15 @@
- } else if (matches(*argv, "match") == 0) {
- NEXT_ARG();
- get_prefix(&filter.mdst, *argv, do_ipv6);
-+ } else if (matches(*argv, "table") == 0) {
-+ NEXT_ARG();
-+ if (matches(*argv, "cache") == 0) {
-+ filter.tb = -1;
-+ } else if (matches(*argv, "main") != 0) {
-+ invarg("invalid \"table\"", *argv);
-+ }
-+ } else if (matches(*argv, "cache") == 0) {
-+ filter.tb = -1;
- } else {
- if (matches(*argv, "exact") == 0) {
- NEXT_ARG();
diff --git a/packages/busybox/busybox-1.00/linux-types.patch b/packages/busybox/busybox-1.00/linux-types.patch
deleted file mode 100644
index e312073c9e..0000000000
--- a/packages/busybox/busybox-1.00/linux-types.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- busybox-1.00/libbb/loop.c.org 2006-09-19 18:18:17.084592997 +0200
-+++ busybox-1.00/libbb/loop.c 2006-09-19 18:18:09.820275793 +0200
-@@ -19,6 +19,7 @@
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-+#include <linux/types.h>
- #include <asm/posix_types.h>
- #include <stdio.h>
- #include <errno.h>
diff --git a/packages/busybox/busybox-1.00/mount-all-type.patch b/packages/busybox/busybox-1.00/mount-all-type.patch
deleted file mode 100644
index 476094a804..0000000000
--- a/packages/busybox/busybox-1.00/mount-all-type.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- busybox-1.00/.pc/mount-all-type.patch/util-linux/mount.c 2004-08-02 17:14:02.000000000 -0700
-+++ busybox-1.00/util-linux/mount.c 2005-05-13 00:17:19.054232796 -0700
-@@ -364,6 +364,56 @@
- exit(EXIT_SUCCESS);
- }
-
-+/* Does this file system type, from /etc/fstab, match the given
-+ * -t option value?
-+ */
-+static int match_fs(const char *option, const char *type)
-+{
-+ const int len = strlen(type);
-+ const int no = option[0] == 'n' && option[1] == 'o';
-+ const char *optp = option;
-+
-+ if (len > 0) do {
-+ const char *match = strstr(optp, type);
-+
-+ if (match == NULL) {
-+ /* No match, but if the option string starts 'no' no match
-+ * means yes.
-+ */
-+ return no;
-+ }
-+
-+ /* Match, may be partial, check for end-of-type in option string. */
-+ if (match[len] == 0 || match[len] == ',') {
-+ /* Ok, check for type or notype. */
-+ if (match == option) {
-+ /* Exact match at start (can't be 'no') */
-+ return 1;
-+ }
-+ if (match > option+1) {
-+ if (match[-1] == ',') {
-+ /* Exact match in middle, might be 'no' */
-+ return !no;
-+ }
-+ if (match == option+2 && no) {
-+ /* Exact match to 'notype' at start. */
-+ return 0;
-+ }
-+ if (match > option+2 && match[-3] == ',' &&
-+ match[-2] == 'n' && match[-1] == 'o') {
-+ return 0;
-+ }
-+ }
-+ }
-+
-+ /* Look for another match. */
-+ optp = match+1;
-+ } while (1);
-+
-+ /* zero length type in fstab (impossible?), don't match it. */
-+ return 0;
-+}
-+
- extern int mount_main(int argc, char **argv)
- {
- struct stat statbuf;
-@@ -371,6 +421,7 @@
- char *extra_opts;
- int flags = 0;
- char *filesystemType = "auto";
-+ char *filesystemOption = 0;
- int got_filesystemType = 0;
- char *device = xmalloc(PATH_MAX);
- char *directory = xmalloc(PATH_MAX);
-@@ -393,6 +444,7 @@
- break;
- case 't':
- filesystemType = optarg;
-+ filesystemOption = optarg;
- got_filesystemType = 1;
- break;
- case 'w':
-@@ -460,6 +512,8 @@
-
- strcpy(device, m->mnt_fsname);
- strcpy(directory, m->mnt_dir);
-+ if (all && filesystemOption != 0 && !match_fs(filesystemOption, m->mnt_type))
-+ continue;
- filesystemType = bb_xstrdup(m->mnt_type);
- singlemount:
- extra_opts = string_flags;
diff --git a/packages/busybox/busybox-1.00/nylon/defconfig b/packages/busybox/busybox-1.00/nylon/defconfig
deleted file mode 100644
index 7efd042cdc..0000000000
--- a/packages/busybox/busybox-1.00/nylon/defconfig
+++ /dev/null
@@ -1,458 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-# CONFIG_FEATURE_TAR_BZIP2 is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_UNCOMPRESS=y
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Common options for dpkg and dpkg_deb
-#
-CONFIG_FEATURE_DEB_TAR_GZ=y
-CONFIG_FEATURE_DEB_TAR_BZ2=y
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CMP=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-# CONFIG_TEST is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-# CONFIG_LOADFONT is not set
-CONFIG_LOADKMAP=y
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-CONFIG_SETKEYCODES=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-CONFIG_CROND=y
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-CONFIG_WATCHDOG=y
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_ARPING=y
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-CONFIG_HTTPD=y
-# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
-CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-CONFIG_FEATURE_HTTPD_AUTH_MD5=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-CONFIG_FEATURE_HTTPD_SETUID=y
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
-CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_INETD=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN=y
-# CONFIG_IP is not set
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-CONFIG_NAMEIF=y
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-CONFIG_UDHCPD=y
-CONFIG_UDHCPC=y
-CONFIG_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-CONFIG_SYSCTL=y
-
-#
-# Another Bourne-like Shell
-#
-# CONFIG_FEATURE_SH_IS_ASH is not set
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-CONFIG_FEATURE_SH_IS_NONE=y
-# CONFIG_ASH is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-# CONFIG_MORE is not set
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.00/openmn/defconfig b/packages/busybox/busybox-1.00/openmn/defconfig
deleted file mode 100644
index f98af91853..0000000000
--- a/packages/busybox/busybox-1.00/openmn/defconfig
+++ /dev/null
@@ -1,475 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CMP=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-# CONFIG_FEATURE_LS_COLOR is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-# CONFIG_FEATURE_FANCY_TAIL is not set
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETKEYCODES=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-CONFIG_ADDGROUP=y
-CONFIG_DELGROUP=y
-CONFIG_ADDUSER=y
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-CONFIG_FEATURE_U_W_TMP=y
-CONFIG_LOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_SU=y
-CONFIG_SULOGIN=y
-CONFIG_VLOCK=y
-
-#
-# Common options for adduser, deluser, login, su
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-CONFIG_FEATURE_INSMOD_LOAD_MAP=y
-CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
-CONFIG_LSMOD=y
-CONFIG_MODPROBE=y
-CONFIG_RMMOD=y
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_FEATURE_IPV6 is not set
-CONFIG_ARPING=y
-# CONFIG_FTPGET is not set
-CONFIG_FTPPUT=y
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-# CONFIG_FEATURE_IP_TUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
-# CONFIG_TELNETD is not set
-# CONFIG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-# CONFIG_FEATURE_WGET_STATUSBAR is not set
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=31
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-# FDISK_SUPPORT_LARGE_DISKS is not set
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_SWAPONOFF is not set
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.00/readlink.patch b/packages/busybox/busybox-1.00/readlink.patch
deleted file mode 100644
index 0c5431085a..0000000000
--- a/packages/busybox/busybox-1.00/readlink.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-diff -p -u -r1.7 Config.in
---- busybox-1.00/debianutils/Config.in 15 Mar 2004 08:28:24 -0000 1.7
-+++ busybox-1.00-patched/debianutils/Config.in 16 Nov 2004 11:46:41 -0000
-@@ -24,6 +24,13 @@ config CONFIG_READLINK
- This program reads a symbolic link and returns the name
- of the file it points to
-
-+config CONFIG_FEATURE_READLINK_FOLLOW
-+ bool " Enable canonicalization by following all symlinks (-f)"
-+ default n
-+ depends on CONFIG_READLINK
-+ help
-+ Enable the readlink option (-f).
-+
- config CONFIG_RUN_PARTS
- bool "run-parts"
- default n
-diff -p -u -r1.2 readlink.c
---- busybox-1.00/debianutils/readlink.c 19 Mar 2003 09:11:41 -0000 1.2
-+++ busybox-1.00-patched/debianutils/readlink.c 16 Nov 2004 11:46:41 -0000
-@@ -23,18 +23,38 @@
- #include <errno.h>
- #include <unistd.h>
- #include <stdlib.h>
-+#include <getopt.h>
- #include "busybox.h"
-
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+# define READLINK_FOLLOW "f"
-+# define READLINK_FLAG_f (1 << 0)
-+#else
-+# define READLINK_FOLLOW ""
-+#endif
-+
-+static const char readlink_options[] = READLINK_FOLLOW;
-+
- int readlink_main(int argc, char **argv)
- {
- char *buf = NULL;
-+ unsigned long opt = bb_getopt_ulflags(argc, argv, readlink_options);
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+ RESERVE_CONFIG_BUFFER(resolved_path, PATH_MAX);
-+#endif
-
- /* no options, no getopt */
-
-- if (argc != 2)
-+ if (optind + 1 != argc)
- bb_show_usage();
-
-- buf = xreadlink(argv[1]);
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+ if (opt & READLINK_FLAG_f) {
-+ buf = realpath(argv[optind], resolved_path);
-+ } else
-+#endif
-+ buf = xreadlink(argv[optind]);
-+
- if (!buf)
- return EXIT_FAILURE;
- puts(buf);
-diff -p -u -r1.222 usage.h
---- busybox-1.00/include/usage.h 14 Sep 2004 16:23:56 -0000 1.222
-+++ busybox-1.00-patched/include/usage.h 16 Nov 2004 11:46:42 -0000
-@@ -1985,10 +1985,18 @@
- "\t-s\tSet the system date and time (default).\n" \
- "\t-p\tPrint the date and time."
-
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+#define USAGE_READLINK_FOLLOW(a) a
-+#else
-+#define USAGE_READLINK_FOLLOW(a)
-+#endif
-+
- #define readlink_trivial_usage \
-- ""
-+ USAGE_READLINK_FOLLOW("[-f] ") "FILE"
- #define readlink_full_usage \
-- "Displays the value of a symbolic link."
-+ "Displays the value of a symbolic link." \
-+ USAGE_READLINK_FOLLOW("\n\nOptions:\n" \
-+ "\t-f\tcanonicalize by following all symlinks")
-
- #define realpath_trivial_usage \
- "pathname ..."
diff --git a/packages/busybox/busybox-1.00/rmmod.patch b/packages/busybox/busybox-1.00/rmmod.patch
deleted file mode 100644
index 5a557ef35d..0000000000
--- a/packages/busybox/busybox-1.00/rmmod.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Index: modutils/rmmod.c
-===================================================================
-RCS file: /var/cvs/busybox/modutils/rmmod.c,v
-retrieving revision 1.31
-diff -u -r1.31 rmmod.c
---- busybox/modutils/rmmod.c 20 Jul 2004 18:36:51 -0000 1.31
-+++ busybox/modutils/rmmod.c 10 Dec 2004 22:56:36 -0000
-@@ -28,6 +28,7 @@
- #include <fcntl.h>
- #include <string.h>
- #include <sys/syscall.h>
-+#include <sys/utsname.h>
- #include "busybox.h"
-
- #ifdef CONFIG_FEATURE_2_6_MODULES
-@@ -63,6 +64,16 @@
- void *buf; /* hold the module names which we ignore but must get */
- size_t bufsize = 0;
- #endif
-+#ifdef CONFIG_FEATURE_2_6_MODULES
-+ int k_version = 0;
-+ struct utsname myuname;
-+
-+ if (uname(&myuname) == 0) {
-+ if (myuname.release[0] == '2') {
-+ k_version = myuname.release[2] - '0';
-+ }
-+ }
-+#endif
-
- /* Parse command line. */
- while ((n = getopt(argc, argv, "a")) != EOF) {
-@@ -109,7 +120,10 @@
- for (n = optind; n < argc; n++) {
- #ifdef CONFIG_FEATURE_2_6_MODULES
- char module_name[strlen(argv[n]) + 1];
-- filename2modname(module_name, argv[n]);
-+ if (k_version != 4)
-+ filename2modname(module_name, argv[n]);
-+ else
-+ strcpy(module_name, argv[n]);
- #else
- #define module_name argv[n]
- #endif
diff --git a/packages/busybox/busybox-1.00/slugos/defconfig b/packages/busybox/busybox-1.00/slugos/defconfig
deleted file mode 100644
index 7debaeced2..0000000000
--- a/packages/busybox/busybox-1.00/slugos/defconfig
+++ /dev/null
@@ -1,461 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-# CONFIG_CPIO is not set
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-# CONFIG_FIND is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-# CONFIG_XARGS is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_PIPE_OPTIMIZATION=y
-CONFIG_FEATURE_BUILTIN_TEST=y
-CONFIG_FEATURE_BUILTIN_ECHO=y
-CONFIG_FEATURE_BUILTIN_PIDOF=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.00/slugos/udhcpscript.patch b/packages/busybox/busybox-1.00/slugos/udhcpscript.patch
deleted file mode 100644
index 2f58632378..0000000000
--- a/packages/busybox/busybox-1.00/slugos/udhcpscript.patch
+++ /dev/null
@@ -1,133 +0,0 @@
---- busybox-1.00/.pc/udhcpscript.patch/examples/udhcp/simple.script 2004-10-13 00:18:05.000000000 -0700
-+++ busybox-1.00/examples/udhcp/simple.script 2005-06-05 15:08:28.432605118 -0700
-@@ -1,40 +1,101 @@
- #!/bin/sh
-+# slugos UDHCP client script
-+# this must set the HW address (MAC) on the interface
-+#
-+. /etc/default/functions
-
--# udhcpc script edited by Tim Riker <Tim@Rikers.org>
-
--[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
-+echodns(){
-+ local dns
-+ if test $# -gt 0
-+ then
-+ for dns in "$@"
-+ do
-+ echo "nameserver $dns"
-+ done
-+ fi
-+}
-+
-+# Output the correct contents for resolv.conf
-+mkresolv() {
-+ test -n "$domain" && echo "search $domain"
-+ echodns $dns
-+}
-+
-+# checksum of a file (or stdin if -)
-+md5strm() {
-+ md5sum $1 2>/dev/null | sed -n 's/^\([0-9A-Za-z]*\).*$/\1/p'
-+}
-+
-+bind() {
-+ local B N metric i olddomain
-+ B=
-+ test -n "$broadcast" && B="broadcast $broadcast"
-+ N=
-+ test -n "$subnet" && N="netmask $subnet"
-+ ifconfig "$interface" "$ip" $B $N up
-+
-+ # If given router information delete the old information and
-+ # enter new stuff, routers get metrics incremented by 1
-+ # between each (this is somewhat arbitrary)
-+ if test -n "$router"
-+ then
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null
-+ do
-+ :
-+ done
-
--RESOLV_CONF="/etc/resolv.conf"
--[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
--[ -n "$subnet" ] && NETMASK="netmask $subnet"
-+ metric=0
-+ for i in $router
-+ do
-+ route add default gw "$i" dev "$interface" metric $((metric++))
-+ done
-+ fi
-+
-+ olddomain=
-+ test -r /etc/defaultdomain && olddomain="$(cat /etc/defaultdomain)"
-+ if test -n "$domain" -a "$domain" != "$olddomain"
-+ then
-+ echo "$domain" >/etc/defaultdomain
-+ # and update the kernel view too
-+ echo "$domain" >/proc/sys/kernel/domainname
-+ fi
-+
-+ # Update /etc/resolv.conf to reflect domain and dns information,
-+ # this always clears resolv.conf if none is given
-+ md5old="$(md5strm /etc/resolv.conf)"
-+ md5new="$(mkresolv | md5strm -)"
-+ test "$md5old" != "$md5new" && mkresolv >/etc/resolv.conf
-+}
-
- case "$1" in
-- deconfig)
-- /sbin/ifconfig $interface 0.0.0.0
-- ;;
--
-- renew|bound)
-- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
--
-- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-- :
-- done
--
-- metric=0
-- for i in $router ; do
-- route add default gw $i dev $interface metric $((metric++))
-- done
-+deconfig)
-+ # Bring the interface up (without inet at this point)
-+ ifconfig "$interface" up;;
-+
-+renew|bound)
-+ bind;;
-+
-+leasefail)
-+ # Pull the values from the config data if (only only if) this
-+ # is the config interface
-+ if test "$interface" = "$(config iface)"
-+ then
-+ ip="$(config ip)"
-+ if test -n "$ip"
-+ then
-+ router="$(config gateway)"
-+ subnet="$(config netmask)"
-+ broadcast="$(config broadcast)"
-+ domain="$(config domain)"
-+ dns="$(config dns)"
-+
-+ bind
- fi
-+ fi;;
-
-- echo -n > $RESOLV_CONF
-- [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
-- for i in $dns ; do
-- echo adding dns $i
-- echo nameserver $i >> $RESOLV_CONF
-- done
-- ;;
-+*) echo "udhcpc: $*: unknown command" >&2
-+ exit 1;;
- esac
-
- exit 0
diff --git a/packages/busybox/busybox-1.00/sparc/defconfig b/packages/busybox/busybox-1.00/sparc/defconfig
deleted file mode 100644
index 8b8cbfc839..0000000000
--- a/packages/busybox/busybox-1.00/sparc/defconfig
+++ /dev/null
@@ -1,467 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-# CONFIG_FEATURE_LS_RECURSIVE is not set
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-CONFIG_MAKEDEVS=y
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-# CONFIG_LOSETUP is not set
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-# CONFIG_FEATURE_MOUNT_LOOP is not set
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.00/start-stop-daemon-oknodo-support.patch b/packages/busybox/busybox-1.00/start-stop-daemon-oknodo-support.patch
deleted file mode 100644
index 1b8debb021..0000000000
--- a/packages/busybox/busybox-1.00/start-stop-daemon-oknodo-support.patch
+++ /dev/null
@@ -1,73 +0,0 @@
---- busybox-1.00/debianutils/start_stop_daemon.c.orig 2006-07-23 00:06:14.000000000 +0200
-+++ busybox-1.00/debianutils/start_stop_daemon.c 2006-07-23 00:21:39.000000000 +0200
-@@ -160,7 +160,7 @@
- }
-
-
--static void
-+static int
- do_stop(void)
- {
- char what[1024];
-@@ -183,7 +183,7 @@
- if (!found) {
- if (!quiet)
- printf("no %s found; none killed.\n", what);
-- return;
-+ return -1;
- }
- for (p = found; p; p = p->next) {
- if (kill(p->pid, signal_nr) == 0) {
-@@ -200,6 +200,7 @@
- printf(" %d", -p->pid);
- printf(").\n");
- }
-+ return killed;
- }
-
-
-@@ -209,6 +210,7 @@
- { "background", 0, NULL, 'b' },
- { "quiet", 0, NULL, 'q' },
- { "make-pidfile", 0, NULL, 'm' },
-+ { "oknodo", 0, NULL, 'o' },
- { "startas", 1, NULL, 'a' },
- { "name", 1, NULL, 'n' },
- { "signal", 1, NULL, 's' },
-@@ -223,6 +225,7 @@
- #define SSD_OPT_BACKGROUND 4
- #define SSD_OPT_QUIET 8
- #define SSD_OPT_MAKEPID 16
-+#define SSD_OPT_OKNODO 32
-
- int
- start_stop_daemon_main(int argc, char **argv)
-@@ -234,7 +237,7 @@
- bb_applet_long_options = ssd_long_options;
-
- bb_opt_complementaly = "K~S:S~K";
-- opt = bb_getopt_ulflags(argc, argv, "KSbqma:n:s:u:x:p:",
-+ opt = bb_getopt_ulflags(argc, argv, "KSbqmoa:n:s:u:x:p:",
- &startas, &cmdname, &signame, &userspec, &execname, &pidfile);
-
- /* Check one and only one context option was given */
-@@ -265,8 +268,8 @@
- user_id = my_getpwnam(userspec);
-
- if (opt & SSD_CTX_STOP) {
-- do_stop();
-- return EXIT_SUCCESS;
-+ int i = do_stop();
-+ return (opt & SSD_OPT_OKNODO) ? 0 : (i <= 0);
- }
-
- do_procinit();
-@@ -274,7 +277,7 @@
- if (found) {
- if (!quiet)
- printf("%s already running.\n%d\n", execname ,found->pid);
-- return EXIT_SUCCESS;
-+ return (opt & SSD_OPT_OKNODO) ? EXIT_SUCCESS : EXIT_FAILURE;
- }
- *--argv = startas;
- if (opt & SSD_OPT_BACKGROUND) {
diff --git a/packages/busybox/busybox-1.00/uclibc_posix.patch b/packages/busybox/busybox-1.00/uclibc_posix.patch
deleted file mode 100644
index aefb994068..0000000000
--- a/packages/busybox/busybox-1.00/uclibc_posix.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-see http://www.busybox.net/lists/busybox/2004-December/013276.html
-
---- busybox-old/libbb/loop.c 2004-08-16 04:36:28.000000000 -0400
-+++ busybox/libbb/loop.c 2004-12-04 23:45:58.000000000 -0500
-@@ -19,6 +19,7 @@
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-+#include <asm/posix_types.h>
- #include <stdio.h>
- #include <errno.h>
- #include <fcntl.h>
-@@ -30,7 +31,6 @@
- /* Grumble... The 2.6.x kernel breaks asm/posix_types.h
- * so we get to try and cope as best we can... */
- #include <linux/version.h>
--#include <asm/posix_types.h>
-
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
- #define __bb_kernel_dev_t __kernel_old_dev_t
diff --git a/packages/busybox/busybox-1.00/udhcppidfile-breakage.patch b/packages/busybox/busybox-1.00/udhcppidfile-breakage.patch
deleted file mode 100644
index 031274908b..0000000000
--- a/packages/busybox/busybox-1.00/udhcppidfile-breakage.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- busybox-1.00/networking/udhcp/common.c~udhcppidfile2
-+++ busybox-1.00/networking/udhcp/common.c
-@@ -74,7 +74,7 @@
-
- if (pid > 0) {
- /* parent */
-- if (pidfile_reassign(pidfile, pid) < 0) {
-+ if (pidfile != NULL && pidfile_reassign(pidfile, pid) < 0) {
- (void)kill(pid, SIGKILL);
- exit(1);
- } else
-@@ -119,7 +119,7 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- if (pidfile_acquire(pidfile) < 0)
-+ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
- exit(1);
-
- /* equivelent of doing a fflush after every \n */
-@@ -166,7 +166,7 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- if (pidfile_acquire(pidfile) < 0)
-+ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
- exit(1);
-
- /* equivelent of doing a fflush after every \n */
---- busybox-1.00/networking/udhcp/pidfile.c~udhcppidfile2
-+++ busybox-1.00/networking/udhcp/pidfile.c
-@@ -141,7 +141,11 @@
- int pidfile_acquire(const char *pidfile)
- {
- int fd, result;
-- if (!pidfile) return (-1);
-+
-+ if (pidfile == NULL) {
-+ LOG(LOG_ERR, "pidfile_acquire: filename is NULL\n");
-+ return (-1);
-+ }
-
- if ((fd = pidfile_open(pidfile)) < 0)
- return (-1);
-@@ -170,7 +174,11 @@
- int pidfile_reassign(const char *pidfile, int pid)
- {
- int fd, result;
-- if (!pidfile) return (-1);
-+
-+ if (pidfile == NULL) {
-+ LOG(LOG_ERR, "pidfile_reassign: filename is NULL\n");
-+ return (-1);
-+ }
-
- if ((fd = pidfile_open(pidfile)) < 0)
- return (-1);
diff --git a/packages/busybox/busybox-1.00/udhcppidfile.patch b/packages/busybox/busybox-1.00/udhcppidfile.patch
deleted file mode 100644
index fb2b2ec19a..0000000000
--- a/packages/busybox/busybox-1.00/udhcppidfile.patch
+++ /dev/null
@@ -1,276 +0,0 @@
---- busybox-1.00/networking/udhcp/pidfile.h-dist 2004-04-15 03:51:26.000000000 +1000
-+++ busybox-1.00/networking/udhcp/pidfile.h 2004-10-27 15:46:38.000000000 +1000
-@@ -21,5 +21,5 @@
-
-
- int pidfile_acquire(const char *pidfile);
--void pidfile_write_release(int pid_fd);
-+int pidfile_reassign(const char *pidfile, int newpid);
-
---- busybox-1.00/networking/udhcp/pidfile.c-dist 2004-04-15 03:51:25.000000000 +1000
-+++ busybox-1.00/networking/udhcp/pidfile.c 2004-10-27 19:43:40.000000000 +1000
-@@ -25,6 +25,7 @@
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#include <errno.h>
-
- #include "pidfile.h"
- #include "common.h"
-@@ -37,39 +38,146 @@
- }
-
-
--int pidfile_acquire(const char *pidfile)
-+static int pidfile_open(const char *pidfile)
- {
-- int pid_fd;
-- if (!pidfile) return -1;
-+ int fd;
-
-- pid_fd = open(pidfile, O_CREAT | O_WRONLY, 0644);
-- if (pid_fd < 0) {
-- LOG(LOG_ERR, "Unable to open pidfile %s: %m\n", pidfile);
-- } else {
-- lockf(pid_fd, F_LOCK, 0);
-- if (!saved_pidfile)
-- atexit(pidfile_delete);
-- saved_pidfile = (char *) pidfile;
-+ if ((fd = open(pidfile, O_CREAT | O_RDWR, 0644)) < 0) {
-+ LOG(LOG_ERR, "pidfile_open: open %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ /* NOTE: lockf is not inherited by child after fork */
-+ if (lockf(fd, F_LOCK, 0) < 0) {
-+ LOG(LOG_ERR, "pidfile_open: lock %s failed: %m\n", pidfile);
-+ close(fd);
-+ return (-1);
-+ }
-+
-+ return (fd);
-+}
-+
-+
-+static int pidfile_check(int fd, const char *pidfile)
-+{
-+ int len, pid;
-+ char buf[20];
-+
-+ if (lseek(fd, 0L, SEEK_SET) < 0) {
-+ LOG(LOG_ERR, "pidfile_check: lseek %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ if ((len = read(fd, buf, sizeof buf - 1)) < 0) {
-+ LOG(LOG_ERR, "pidfile_check: read %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ if (len == 0)
-+ return (0);
-+
-+ buf[len] = '\0';
-+
-+ if ((pid = atoi(buf)) <= 1) {
-+ LOG(LOG_WARNING,
-+ "pidfile_check: ignoring bogus pid (%s) in %s\n",
-+ buf, pidfile);
-+ return (0);
-+ }
-+
-+ if (kill((pid_t)pid, 0) == 0) {
-+ LOG(LOG_ERR, "pidfile_check: process %d exists (%s)\n",
-+ pid, pidfile);
-+ return (-1);
-+ }
-+
-+ if (errno != ESRCH) {
-+ LOG(LOG_ERR, "pidfile_check: kill %d failed (%s): %m\n",
-+ pid, pidfile);
-+ return (-1);
-+ }
-+
-+ return (0);
-+}
-+
-+
-+static int pidfile_store(int fd, const char *pidfile, int pid)
-+{
-+ int len;
-+ char buf[20];
-+
-+ if (lseek(fd, 0L, SEEK_SET) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: lseek %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ len = snprintf(buf, sizeof buf - 1, "%d\n", pid);
-+ buf[len] = '\0';
-+
-+ if (write(fd, buf, len) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: write %s failed: %m\n",
-+ pidfile);
-+ return (-1);
-+ }
-+
-+ if (ftruncate(fd, len) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: ftruncate %d failed (%s): %m\n",
-+ len, pidfile);
-+ return (-1);
- }
-
-- return pid_fd;
-+ return (0);
- }
-
-
--void pidfile_write_release(int pid_fd)
-+static void pidfile_close(int fd)
- {
-- FILE *out;
-+ (void)lseek(fd, 0L, SEEK_SET);
-+ (void)lockf(fd, F_ULOCK, 0);
-+ (void)close(fd);
-+}
-
-- if (pid_fd < 0) return;
-
-- if ((out = fdopen(pid_fd, "w")) != NULL) {
-- fprintf(out, "%d\n", getpid());
-- fclose(out);
-+int pidfile_acquire(const char *pidfile)
-+{
-+ int fd, result;
-+ if (!pidfile) return (-1);
-+
-+ if ((fd = pidfile_open(pidfile)) < 0)
-+ return (-1);
-+
-+ if ((result = pidfile_check(fd, pidfile)) == 0)
-+ result = pidfile_store(fd, pidfile, getpid());
-+
-+ pidfile_close(fd);
-+
-+ if (result == 0) {
-+ saved_pidfile = (char *) pidfile;
-+ atexit(pidfile_delete);
- }
-- lockf(pid_fd, F_UNLCK, 0);
-- close(pid_fd);
-+
-+ return (result);
- }
-
-
-+/*
-+ * reassign the pid in a pidfile - used just after a fork so a parent
-+ * can store the pid of its child into the file without any window
-+ * where the pid in the file is a dead process (which might let another
-+ * instance of the program start). Note the parent must use _exit() to
-+ * avoid triggering the unlink scheduled above in pidfile_acquire()
-+ */
-+int pidfile_reassign(const char *pidfile, int pid)
-+{
-+ int fd, result;
-+ if (!pidfile) return (-1);
-+
-+ if ((fd = pidfile_open(pidfile)) < 0)
-+ return (-1);
-
-+ result = pidfile_store(fd, pidfile, pid);
-
-+ pidfile_close(fd);
-+
-+ return (result);
-+}
---- busybox-1.00/networking/udhcp/common.c-dist 2004-05-19 19:18:04.000000000 +1000
-+++ busybox-1.00/networking/udhcp/common.c 2004-10-27 19:58:10.000000000 +1000
-@@ -64,16 +64,34 @@
- #ifdef __uClinux__
- LOG(LOG_ERR, "Cannot background in uclinux (yet)");
- #else /* __uClinux__ */
-- int pid_fd;
-+ int pid, fd;
-
-- /* hold lock during fork. */
-- pid_fd = pidfile_acquire(pidfile);
-- if (daemon(0, 0) == -1) {
-+ /* NOTE: lockf is not inherited by the child after fork */
-+ if ((pid = fork()) < 0) {
- perror("fork");
- exit(1);
- }
-+
-+ if (pid > 0) {
-+ /* parent */
-+ if (pidfile_reassign(pidfile, pid) < 0) {
-+ (void)kill(pid, SIGKILL);
-+ exit(1);
-+ } else
-+ _exit(0);
-+ }
-+
-+ /* child */
-+ (void)chdir("/");
-+ if ((fd = open("/dev/null", O_RDWR)) >= 0) {
-+ (void)dup2(fd, 0);
-+ (void)dup2(fd, 1);
-+ (void)dup2(fd, 2);
-+ (void)close(fd);
-+ }
-+ (void)setsid();
-+
- daemonized++;
-- pidfile_write_release(pid_fd);
- #endif /* __uClinux__ */
- }
-
-@@ -97,14 +115,12 @@
-
- void start_log_and_pid(const char *client_server, const char *pidfile)
- {
-- int pid_fd;
--
- /* Make sure our syslog fd isn't overwritten */
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- pid_fd = pidfile_acquire(pidfile);
-- pidfile_write_release(pid_fd);
-+ if (pidfile_acquire(pidfile) < 0)
-+ exit(1);
-
- /* equivelent of doing a fflush after every \n */
- setlinebuf(stdout);
-@@ -150,8 +166,8 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- pid_fd = pidfile_acquire(pidfile);
-- pidfile_write_release(pid_fd);
-+ if (pidfile_acquire(pidfile) < 0)
-+ exit(1);
-
- /* equivelent of doing a fflush after every \n */
- setlinebuf(stdout);
---- busybox-1.00/networking/udhcp/common.h-dist 2004-05-19 18:29:05.000000000 +1000
-+++ busybox-1.00/networking/udhcp/common.h 2004-10-27 15:10:16.000000000 +1000
-@@ -42,7 +42,6 @@
- long uptime(void);
- void background(const char *pidfile);
- void start_log_and_pid(const char *client_server, const char *pidfile);
--void background(const char *pidfile);
- void udhcp_logging(int level, const char *fmt, ...);
-
- #define LOG(level, str, args...) udhcp_logging(level, str, ## args)
---- busybox-1.00/networking/udhcp/script.c-dist 2004-05-19 17:45:47.000000000 +1000
-+++ busybox-1.00/networking/udhcp/script.c 2004-10-27 15:54:04.000000000 +1000
-@@ -228,6 +228,6 @@
- execle(client_config.script, client_config.script,
- name, NULL, envp);
- LOG(LOG_ERR, "script %s failed: %m", client_config.script);
-- exit(1);
-+ _exit(1);
- }
- }
diff --git a/packages/busybox/busybox-1.00/unzip-endian-fixes.patch b/packages/busybox/busybox-1.00/unzip-endian-fixes.patch
deleted file mode 100644
index 56af433c30..0000000000
--- a/packages/busybox/busybox-1.00/unzip-endian-fixes.patch
+++ /dev/null
@@ -1,54 +0,0 @@
---- archival/unzip.c.orig 2005-03-17 18:42:45.000000000 -0500
-+++ archival/unzip.c 2005-03-17 17:46:45.000000000 -0500
-@@ -46,10 +46,28 @@
- #include "unarchive.h"
- #include "busybox.h"
-
--#define ZIP_FILEHEADER_MAGIC 0x04034b50
--#define ZIP_CDS_MAGIC 0x02014b50
--#define ZIP_CDS_END_MAGIC 0x06054b50
--#define ZIP_DD_MAGIC 0x08074b50
-+#if (BYTE_ORDER == BIG_ENDIAN)
-+static inline unsigned short
-+__swap16(unsigned short x) {
-+ return (((uint16_t)(x) & 0xFF) << 8) | (((uint16_t)(x) & 0xFF00) >> 8);
-+}
-+
-+static inline uint32_t
-+__swap32(uint32_t x) {
-+ return (((x & 0xFF) << 24) |
-+ ((x & 0xFF00) << 8) |
-+ ((x & 0xFF0000) >> 8) |
-+ ((x & 0xFF000000) >> 24));
-+}
-+#else
-+#define __swap16(x) (x)
-+#define __swap32(x) (x)
-+#endif
-+
-+#define ZIP_FILEHEADER_MAGIC __swap32(0x04034b50)
-+#define ZIP_CDS_MAGIC __swap32(0x02014b50)
-+#define ZIP_CDS_END_MAGIC __swap32(0x06054b50)
-+#define ZIP_DD_MAGIC __swap32(0x08074b50)
-
- extern unsigned int gunzip_crc;
- extern unsigned int gunzip_bytes_out;
-@@ -249,6 +267,18 @@
-
- /* Read the file header */
- unzip_read(src_fd, zip_header.raw, 26);
-+#if (BYTE_ORDER == BIG_ENDIAN)
-+ zip_header.formated.version = __swap16(zip_header.formated.version);
-+ zip_header.formated.flags = __swap16(zip_header.formated.flags);
-+ zip_header.formated.method = __swap16(zip_header.formated.method);
-+ zip_header.formated.modtime = __swap16(zip_header.formated.modtime);
-+ zip_header.formated.moddate = __swap16(zip_header.formated.moddate);
-+ zip_header.formated.crc32 = __swap32(zip_header.formated.crc32);
-+ zip_header.formated.cmpsize = __swap32(zip_header.formated.cmpsize);
-+ zip_header.formated.ucmpsize = __swap32(zip_header.formated.ucmpsize);
-+ zip_header.formated.filename_len = __swap16(zip_header.formated.filename_len);
-+ zip_header.formated.extra_len = __swap16(zip_header.formated.extra_len);
-+#endif
- if ((zip_header.formated.method != 0) && (zip_header.formated.method != 8)) {
- bb_error_msg_and_die("Unsupported compression method %d", zip_header.formated.method);
- }
diff --git a/packages/busybox/busybox-1.00/unzip-enhancement-and-fixes.patch b/packages/busybox/busybox-1.00/unzip-enhancement-and-fixes.patch
deleted file mode 100644
index 49542cab1d..0000000000
--- a/packages/busybox/busybox-1.00/unzip-enhancement-and-fixes.patch
+++ /dev/null
@@ -1,878 +0,0 @@
-
-Index: archival/unzip.c
-===================================================================
-RCS file: /var/cvs/busybox/archival/unzip.c,v
-retrieving revision 1.8
-diff -u -r1.8 unzip.c
---- archival/unzip.c 6 Jun 2004 10:22:43 -0000 1.8
-+++ archival/unzip.c 18 Oct 2004 01:32:25 -0000
-@@ -2,7 +2,10 @@
- /*
- * Mini unzip implementation for busybox
- *
-- * Copyright (C) 2001 by Laurence Anderson
-+ * Copyright (C) 2004 by Ed Clark
-+ *
-+ * Loosely based on original busybox unzip applet by Laurence Anderson.
-+ * All options and features should work in this version.
- *
- * 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
-@@ -21,17 +24,25 @@
- */
-
- /* For reference see
-- * http://www.pkware.com/products/enterprise/white_papers/appnote.txt
-+ * http://www.pkware.com/company/standards/appnote/
- * http://www.info-zip.org/pub/infozip/doc/appnote-iz-latest.zip
- */
-
--/* TODO Endian issues, exclude, should we accept input from stdin ? */
-+/* TODO
-+ * Endian issues
-+ * Zip64 + other methods
-+ * Improve handling of zip format, ie.
-+ * - deferred CRC, comp. & uncomp. lengths (zip header flags bit 3)
-+ * - unix file permissions, etc.
-+ * - central directory
-+ */
-
- #include <fcntl.h>
- #include <getopt.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
-+#include <errno.h>
- #include "unarchive.h"
- #include "busybox.h"
-
-@@ -43,205 +54,353 @@
- extern unsigned int gunzip_crc;
- extern unsigned int gunzip_bytes_out;
-
--static void header_list_unzip(const file_header_t *file_header)
-+typedef union {
-+ unsigned char raw[26];
-+ struct {
-+ unsigned short version; /* 0-1 */
-+ unsigned short flags; /* 2-3 */
-+ unsigned short method; /* 4-5 */
-+ unsigned short modtime; /* 6-7 */
-+ unsigned short moddate; /* 8-9 */
-+ unsigned int crc32 __attribute__ ((packed)); /* 10-13 */
-+ unsigned int cmpsize __attribute__ ((packed)); /* 14-17 */
-+ unsigned int ucmpsize __attribute__ ((packed)); /* 18-21 */
-+ unsigned short filename_len; /* 22-23 */
-+ unsigned short extra_len; /* 24-25 */
-+ } formated __attribute__ ((packed));
-+} zip_header_t;
-+
-+static void unzip_skip(int fd, off_t skip)
- {
-- printf(" inflating: %s\n", file_header->name);
-+ if (lseek(fd, skip, SEEK_CUR) == (off_t)-1) {
-+ if ((errno != ESPIPE) || (bb_copyfd_size(fd, -1, skip) != skip)) {
-+ bb_error_msg_and_die("Seek failure");
-+ }
-+ }
- }
-
--static void header_verbose_list_unzip(const file_header_t *file_header)
-+static void unzip_read(int fd, void *buf, size_t count)
- {
-- unsigned int dostime = (unsigned int) file_header->mtime;
-+ if (bb_xread(fd, buf, count) != count) {
-+ bb_error_msg_and_die("Read failure");
-+ }
-+}
-
-- /* can printf arguments cut of the decade component ? */
-- unsigned short year = 1980 + ((dostime & 0xfe000000) >> 25);
-- while (year >= 100) {
-- year -= 100;
-- }
--
-- printf("%9u %02u-%02u-%02u %02u:%02u %s\n",
-- (unsigned int) file_header->size,
-- (dostime & 0x01e00000) >> 21,
-- (dostime & 0x001f0000) >> 16,
-- year,
-- (dostime & 0x0000f800) >> 11,
-- (dostime & 0x000007e0) >> 5,
-- file_header->name);
-+static void unzip_create_leading_dirs(char *fn)
-+{
-+ /* Create all leading directories */
-+ char *name = bb_xstrdup(fn);
-+ if (bb_make_directory(dirname(name), 0777, FILEUTILS_RECUR)) {
-+ bb_error_msg_and_die("Failed to create directory");
-+ }
-+ free(name);
- }
-
--extern int unzip_main(int argc, char **argv)
-+static void unzip_extract(zip_header_t *zip_header, int src_fd, int dst_fd)
- {
-- union {
-- unsigned char raw[26];
-- struct {
-- unsigned short version; /* 0-1 */
-- unsigned short flags; /* 2-3 */
-- unsigned short method; /* 4-5 */
-- unsigned short modtime; /* 6-7 */
-- unsigned short moddate; /* 8-9 */
-- unsigned int crc32 __attribute__ ((packed)); /* 10-13 */
-- unsigned int cmpsize __attribute__ ((packed));; /* 14-17 */
-- unsigned int ucmpsize __attribute__ ((packed));; /* 18-21 */
-- unsigned short filename_len; /* 22-23 */
-- unsigned short extra_len; /* 24-25 */
-- } formated __attribute__ ((packed));
-- } zip_header;
-+ if (zip_header->formated.method == 0) {
-+ /* Method 0 - stored (not compressed) */
-+ int size = zip_header->formated.ucmpsize;
-+ if (size && (bb_copyfd_size(src_fd, dst_fd, size) != size)) {
-+ bb_error_msg_and_die("Cannot complete extraction");
-+ }
-+
-+ } else {
-+ /* Method 8 - inflate */
-+ inflate_init(zip_header->formated.cmpsize);
-+ inflate_unzip(src_fd, dst_fd);
-+ inflate_cleanup();
-+ /* Validate decompression - crc */
-+ if (zip_header->formated.crc32 != (gunzip_crc ^ 0xffffffffL)) {
-+ bb_error_msg("Invalid compressed data--crc error");
-+ }
-+ /* Validate decompression - size */
-+ if (zip_header->formated.ucmpsize != gunzip_bytes_out) {
-+ bb_error_msg("Invalid compressed data--length error");
-+ }
-+ }
-+}
-
-- archive_handle_t *archive_handle;
-+extern int unzip_main(int argc, char **argv)
-+{
-+ zip_header_t zip_header;
-+ enum {v_silent, v_normal, v_list} verbosity = v_normal;
-+ enum {o_prompt, o_never, o_always} overwrite = o_prompt;
- unsigned int total_size = 0;
- unsigned int total_entries = 0;
-+ int src_fd = -1, dst_fd = -1;
-+ char *src_fn = NULL, *dst_fn = NULL;
-+ llist_t *accept = NULL;
-+ llist_t *reject = NULL;
- char *base_dir = NULL;
-- int opt = 0;
--
-- /* Initialise */
-- archive_handle = init_handle();
-- archive_handle->action_data = NULL;
-- archive_handle->action_header = header_list_unzip;
--
-- while ((opt = getopt(argc, argv, "lnopqd:")) != -1) {
-- switch (opt) {
-- case 'l': /* list */
-- archive_handle->action_header = header_verbose_list_unzip;
-- archive_handle->action_data = data_skip;
-- break;
-- case 'n': /* never overwright existing files */
-+ int i, opt, opt_range = 0, list_header_done = 0;
-+ char key_buf[512];
-+ struct stat stat_buf;
-+
-+ while((opt = getopt(argc, argv, "-d:lnopqx")) != -1) {
-+ switch(opt_range) {
-+ case 0: /* Options */
-+ switch(opt) {
-+ case 'l': /* List */
-+ verbosity = v_list;
- break;
-- case 'o':
-- archive_handle->flags = ARCHIVE_EXTRACT_UNCONDITIONAL;
-+
-+ case 'n': /* Never overwrite existing files */
-+ overwrite = o_never;
- break;
-- case 'p': /* extract files to stdout */
-- archive_handle->action_data = data_extract_to_stdout;
-+
-+ case 'o': /* Always overwrite existing files */
-+ overwrite = o_always;
- break;
-- case 'q': /* Extract files quietly */
-- archive_handle->action_header = header_skip;
-+
-+ case 'p': /* Extract files to stdout and fall through to set verbosity */
-+ dst_fd = STDOUT_FILENO;
-+
-+ case 'q': /* Be quiet */
-+ verbosity = (verbosity == v_normal) ? v_silent : verbosity;
- break;
-- case 'd': /* Extract files to specified base directory*/
-- base_dir = optarg;
-- break;
--#if 0
-- case 'x': /* Exclude the specified files */
-- archive_handle->filter = filter_accept_reject_list;
-+
-+ case 1 : /* The zip file */
-+ src_fn = bb_xstrndup(optarg, strlen(optarg)+4);
-+ opt_range++;
- break;
--#endif
-+
- default:
- bb_show_usage();
-+
-+ }
-+ break;
-+
-+ case 1: /* Include files */
-+ if (opt == 1) {
-+ accept = llist_add_to(accept, optarg);
-+
-+ } else if (opt == 'd') {
-+ base_dir = optarg;
-+ opt_range += 2;
-+
-+ } else if (opt == 'x') {
-+ opt_range++;
-+
-+ } else {
-+ bb_show_usage();
-+ }
-+ break;
-+
-+ case 2 : /* Exclude files */
-+ if (opt == 1) {
-+ reject = llist_add_to(reject, optarg);
-+
-+ } else if (opt == 'd') { /* Extract to base directory */
-+ base_dir = optarg;
-+ opt_range++;
-+
-+ } else {
-+ bb_show_usage();
-+ }
-+ break;
-+
-+ default:
-+ bb_show_usage();
- }
- }
--
-- if (argc == optind) {
-+
-+ if (src_fn == NULL) {
- bb_show_usage();
- }
-
-- printf("Archive: %s\n", argv[optind]);
-- if (archive_handle->action_header == header_verbose_list_unzip) {
-- printf(" Length Date Time Name\n");
-- printf(" -------- ---- ---- ----\n");
-- }
--
-- if (*argv[optind] == '-') {
-- archive_handle->src_fd = STDIN_FILENO;
-- archive_handle->seek = seek_by_char;
-+ /* Open input file */
-+ if (strcmp("-", src_fn) == 0) {
-+ src_fd = STDIN_FILENO;
-+ /* Cannot use prompt mode since zip data is arriving on STDIN */
-+ overwrite = (overwrite == o_prompt) ? o_never : overwrite;
-+
- } else {
-- archive_handle->src_fd = bb_xopen(argv[optind++], O_RDONLY);
-+ char *extn[] = {"", ".zip", ".ZIP"};
-+ int orig_src_fn_len = strlen(src_fn);
-+ for(i = 0; (i < 3) && (src_fd == -1); i++) {
-+ strcpy(src_fn + orig_src_fn_len, extn[i]);
-+ src_fd = open(src_fn, O_RDONLY);
-+ }
-+ if (src_fd == -1) {
-+ src_fn[orig_src_fn_len] = 0;
-+ bb_error_msg_and_die("Cannot open %s, %s.zip, %s.ZIP", src_fn, src_fn, src_fn);
-+ }
- }
-
-- if ((base_dir) && (chdir(base_dir))) {
-- bb_perror_msg_and_die("Couldnt chdir");
-+ /* Change dir if necessary */
-+ if (base_dir && chdir(base_dir)) {
-+ bb_perror_msg_and_die("Cannot chdir");
- }
-
-- while (optind < argc) {
-- archive_handle->filter = filter_accept_list;
-- archive_handle->accept = llist_add_to(archive_handle->accept, argv[optind]);
-- optind++;
-- }
-+ if (verbosity != v_silent)
-+ printf("Archive: %s\n", src_fn);
-
- while (1) {
- unsigned int magic;
-- int dst_fd;
--
-- /* TODO Endian issues */
-- archive_xread_all(archive_handle, &magic, 4);
-- archive_handle->offset += 4;
-
-+ /* Check magic number */
-+ unzip_read(src_fd, &magic, 4);
- if (magic == ZIP_CDS_MAGIC) {
- break;
-+ } else if (magic != ZIP_FILEHEADER_MAGIC) {
-+ bb_error_msg_and_die("Invalid zip magic %08X", magic);
- }
-- else if (magic != ZIP_FILEHEADER_MAGIC) {
-- bb_error_msg_and_die("Invlaide zip magic");
-- }
--
-+
- /* Read the file header */
-- archive_xread_all(archive_handle, zip_header.raw, 26);
-- archive_handle->offset += 26;
-- archive_handle->file_header->mode = S_IFREG | 0777;
--
-- if (zip_header.formated.method != 8) {
-- bb_error_msg_and_die("Unsupported compression method %d\n", zip_header.formated.method);
-+ unzip_read(src_fd, zip_header.raw, 26);
-+ if ((zip_header.formated.method != 0) && (zip_header.formated.method != 8)) {
-+ bb_error_msg_and_die("Unsupported compression method %d", zip_header.formated.method);
- }
-
- /* Read filename */
-- archive_handle->file_header->name = xmalloc(zip_header.formated.filename_len + 1);
-- archive_xread_all(archive_handle, archive_handle->file_header->name, zip_header.formated.filename_len);
-- archive_handle->offset += zip_header.formated.filename_len;
-- archive_handle->file_header->name[zip_header.formated.filename_len] = '\0';
--
-- /* Skip extra header bits */
-- archive_handle->file_header->size = zip_header.formated.extra_len;
-- data_skip(archive_handle);
-- archive_handle->offset += zip_header.formated.extra_len;
--
-- /* Handle directories */
-- archive_handle->file_header->mode = S_IFREG | 0777;
-- if (last_char_is(archive_handle->file_header->name, '/')) {
-- archive_handle->file_header->mode ^= S_IFREG;
-- archive_handle->file_header->mode |= S_IFDIR;
-- }
--
-- /* Data section */
-- archive_handle->file_header->size = zip_header.formated.cmpsize;
-- if (archive_handle->action_data) {
-- archive_handle->action_data(archive_handle);
-- } else {
-- dst_fd = bb_xopen(archive_handle->file_header->name, O_WRONLY | O_CREAT);
-- inflate_init(zip_header.formated.cmpsize);
-- inflate_unzip(archive_handle->src_fd, dst_fd);
-- close(dst_fd);
-- chmod(archive_handle->file_header->name, archive_handle->file_header->mode);
--
-- /* Validate decompression - crc */
-- if (zip_header.formated.crc32 != (gunzip_crc ^ 0xffffffffL)) {
-- bb_error_msg("Invalid compressed data--crc error");
-- }
--
-- /* Validate decompression - size */
-- if (gunzip_bytes_out != zip_header.formated.ucmpsize) {
-- bb_error_msg("Invalid compressed data--length error");
-- }
-+ free(dst_fn);
-+ dst_fn = xmalloc(zip_header.formated.filename_len + 1);
-+ unzip_read(src_fd, dst_fn, zip_header.formated.filename_len);
-+ dst_fn[zip_header.formated.filename_len] = 0;
-+
-+ /* Skip extra header bytes */
-+ unzip_skip(src_fd, zip_header.formated.extra_len);
-+
-+ if ((verbosity == v_list) && !list_header_done){
-+ printf(" Length Date Time Name\n");
-+ printf(" -------- ---- ---- ----\n");
-+ list_header_done = 1;
- }
-
-- /* local file descriptor section */
-- archive_handle->offset += zip_header.formated.cmpsize;
-- /* This ISNT unix time */
-- archive_handle->file_header->mtime = zip_header.formated.modtime | (zip_header.formated.moddate << 16);
-- archive_handle->file_header->size = zip_header.formated.ucmpsize;
-- total_size += archive_handle->file_header->size;
-- total_entries++;
-+ /* Filter zip entries */
-+ if (find_list_entry(reject, dst_fn) ||
-+ (accept && !find_list_entry(accept, dst_fn))) { /* Skip entry */
-+ i = 'n';
-+
-+ } else { /* Extract entry */
-+ total_size += zip_header.formated.ucmpsize;
-+
-+ if (verbosity == v_list) { /* List entry */
-+ unsigned int dostime = zip_header.formated.modtime | (zip_header.formated.moddate << 16);
-+ printf("%9u %02u-%02u-%02u %02u:%02u %s\n",
-+ zip_header.formated.ucmpsize,
-+ (dostime & 0x01e00000) >> 21,
-+ (dostime & 0x001f0000) >> 16,
-+ (((dostime & 0xfe000000) >> 25) + 1980) % 100,
-+ (dostime & 0x0000f800) >> 11,
-+ (dostime & 0x000007e0) >> 5,
-+ dst_fn);
-+ total_entries++;
-+ i = 'n';
-+
-+ } else if (dst_fd == STDOUT_FILENO) { /* Extracting to STDOUT */
-+ i = -1;
-+
-+ } else if (last_char_is(dst_fn, '/')) { /* Extract directory */
-+ if (stat(dst_fn, &stat_buf) == -1) {
-+ if (errno != ENOENT) {
-+ bb_perror_msg_and_die("Cannot stat '%s'",dst_fn);
-+ }
-+ if (verbosity == v_normal) {
-+ printf(" creating: %s\n", dst_fn);
-+ }
-+ unzip_create_leading_dirs(dst_fn);
-+ if (bb_make_directory(dst_fn, 0777, 0)) {
-+ bb_error_msg_and_die("Failed to create directory");
-+ }
-+ } else {
-+ if (!S_ISDIR(stat_buf.st_mode)) {
-+ bb_error_msg_and_die("'%s' exists but is not directory", dst_fn);
-+ }
-+ }
-+ i = 'n';
-+
-+ } else { /* Extract file */
-+ _check_file:
-+ if (stat(dst_fn, &stat_buf) == -1) { /* File does not exist */
-+ if (errno != ENOENT) {
-+ bb_perror_msg_and_die("Cannot stat '%s'",dst_fn);
-+ }
-+ i = 'y';
-+
-+ } else { /* File already exists */
-+ if (overwrite == o_never) {
-+ i = 'n';
-+
-+ } else if (S_ISREG(stat_buf.st_mode)) { /* File is regular file */
-+ if (overwrite == o_always) {
-+ i = 'y';
-+ } else {
-+ printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", dst_fn);
-+ if (!fgets(key_buf, 512, stdin)) {
-+ bb_perror_msg_and_die("Cannot read input");
-+ }
-+ i = key_buf[0];
-+ }
-+
-+ } else { /* File is not regular file */
-+ bb_error_msg_and_die("'%s' exists but is not regular file",dst_fn);
-+ }
-+ }
-+ }
-+ }
-
-- archive_handle->action_header(archive_handle->file_header);
-+ switch (i) {
-+ case 'A':
-+ overwrite = o_always;
-+ case 'y': /* Open file and fall into unzip */
-+ unzip_create_leading_dirs(dst_fn);
-+ dst_fd = bb_xopen(dst_fn, O_WRONLY | O_CREAT);
-+ case -1: /* Unzip */
-+ if (verbosity == v_normal) {
-+ printf(" inflating: %s\n", dst_fn);
-+ }
-+ unzip_extract(&zip_header, src_fd, dst_fd);
-+ if (dst_fd != STDOUT_FILENO) {
-+ /* closing STDOUT is potentially bad for future business */
-+ close(dst_fd);
-+ }
-+ break;
-
-+ case 'N':
-+ overwrite = o_never;
-+ case 'n':
-+ /* Skip entry data */
-+ unzip_skip(src_fd, zip_header.formated.cmpsize);
-+ break;
-+
-+ case 'r':
-+ /* Prompt for new name */
-+ printf("new name: ");
-+ if (!fgets(key_buf, 512, stdin)) {
-+ bb_perror_msg_and_die("Cannot read input");
-+ }
-+ free(dst_fn);
-+ dst_fn = bb_xstrdup(key_buf);
-+ chomp(dst_fn);
-+ goto _check_file;
-+
-+ default:
-+ printf("error: invalid response [%c]\n",(char)i);
-+ goto _check_file;
-+ }
-+
- /* Data descriptor section */
- if (zip_header.formated.flags & 4) {
- /* skip over duplicate crc, compressed size and uncompressed size */
-- unsigned char data_description[12];
-- archive_xread_all(archive_handle, data_description, 12);
-- archive_handle->offset += 12;
-+ unzip_skip(src_fd, 12);
- }
- }
-- /* Central directory section */
-
-- if (archive_handle->action_header == header_verbose_list_unzip) {
-+ if (verbosity == v_list) {
- printf(" -------- -------\n");
- printf("%9d %d files\n", total_size, total_entries);
- }
--
-+
- return(EXIT_SUCCESS);
- }
-+
-+/* END CODE */
-+/*
-+Local Variables:
-+c-file-style: "linux"
-+c-basic-offset: 4
-+tab-width: 4
-+End:
-+*/
-Index: archival/libunarchive/decompress_unzip.c
-===================================================================
-RCS file: /var/cvs/busybox/archival/libunarchive/decompress_unzip.c,v
-retrieving revision 1.35
-diff -u -r1.35 decompress_unzip.c
---- archival/libunarchive/decompress_unzip.c 25 Apr 2004 05:11:13 -0000 1.35
-+++ archival/libunarchive/decompress_unzip.c 18 Oct 2004 01:32:29 -0000
-@@ -16,6 +16,11 @@
- *
- * read_gz interface + associated hacking by Laurence Anderson
- *
-+ * Fixed huft_build() so decoding end-of-block code does not grab more bits
-+ * than necessary (this is required by unzip applet), added inflate_cleanup()
-+ * to free leaked bytebuffer memory (used in unzip.c), and some minor style
-+ * guide cleanups by Ed Clark
-+ *
- * 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
-@@ -116,26 +121,26 @@
- /* Copy lengths for literal codes 257..285 */
- static const unsigned short cplens[] = {
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59,
-- 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
-+ 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
- };
-
- /* note: see note #13 above about the 258 in this list. */
- /* Extra bits for literal codes 257..285 */
- static const unsigned char cplext[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5,
-- 5, 5, 5, 0, 99, 99
-+ 5, 5, 5, 0, 99, 99
- }; /* 99==invalid */
-
- /* Copy offsets for distance codes 0..29 */
- static const unsigned short cpdist[] = {
- 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513,
-- 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577
-+ 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577
- };
-
- /* Extra bits for distance codes */
- static const unsigned char cpdext[] = {
- 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10,
-- 11, 11, 12, 12, 13, 13
-+ 11, 11, 12, 12, 13, 13
- };
-
- /* Tables for deflate from PKZIP's appnote.txt. */
-@@ -184,8 +189,8 @@
- table_entry = (table_entry >> 1) ^ poly;
- } else {
- table_entry >>= 1;
-- }
-- }
-+ }
-+ }
- gunzip_crc_table[i] = table_entry;
- }
- }
-@@ -225,70 +230,59 @@
- * t: result: starting table
- * m: maximum lookup bits, returns actual
- */
--static int huft_build(unsigned int *b, const unsigned int n,
-- const unsigned int s, const unsigned short *d,
-- const unsigned char *e, huft_t ** t, int *m)
-+int huft_build(unsigned int *b, const unsigned int n,
-+ const unsigned int s, const unsigned short *d,
-+ const unsigned char *e, huft_t ** t, int *m)
- {
-- unsigned a; /* counter for codes of length k */
-+ unsigned a; /* counter for codes of length k */
- unsigned c[BMAX + 1]; /* bit length count table */
-- unsigned f; /* i repeats in table every f entries */
-- int g; /* maximum code length */
-- int h; /* table level */
-+ unsigned eob_len; /* length of end-of-block code (value 256) */
-+ unsigned f; /* i repeats in table every f entries */
-+ int g; /* maximum code length */
-+ int h; /* table level */
- register unsigned i; /* counter, current code */
- register unsigned j; /* counter */
-- register int k; /* number of bits in current code */
-- int l; /* bits per table (returned in m) */
-+ register int k; /* number of bits in current code */
- register unsigned *p; /* pointer into c[], b[], or v[] */
-- register huft_t *q; /* points to current table */
-- huft_t r; /* table entry for structure assignment */
-- huft_t *u[BMAX]; /* table stack */
-- unsigned v[N_MAX]; /* values in order of bit length */
-- register int w; /* bits before this table == (l * h) */
-+ register huft_t *q; /* points to current table */
-+ huft_t r; /* table entry for structure assignment */
-+ huft_t *u[BMAX]; /* table stack */
-+ unsigned v[N_MAX]; /* values in order of bit length */
-+ int ws[BMAX+1]; /* bits decoded stack */
-+ register int w; /* bits decoded */
- unsigned x[BMAX + 1]; /* bit offsets, then code stack */
-- unsigned *xp; /* pointer into x */
-- int y; /* number of dummy codes added */
-- unsigned z; /* number of entries in current table */
-+ unsigned *xp; /* pointer into x */
-+ int y; /* number of dummy codes added */
-+ unsigned z; /* number of entries in current table */
-+
-+ /* Length of EOB code, if any */
-+ eob_len = n > 256 ? b[256] : BMAX;
-
- /* Generate counts for each bit length */
-- memset((void *) (c), 0, sizeof(c));
-+ memset((void *)c, 0, sizeof(c));
- p = b;
- i = n;
- do {
-- c[*p]++; /* assume all entries <= BMAX */
-- p++; /* Can't combine with above line (Solaris bug) */
-+ c[*p]++; /* assume all entries <= BMAX */
-+ p++; /* Can't combine with above line (Solaris bug) */
- } while (--i);
-- if (c[0] == n) { /* null input--all zero length codes */
-+ if (c[0] == n) { /* null input--all zero length codes */
- *t = (huft_t *) NULL;
- *m = 0;
- return 0;
- }
-
- /* Find minimum and maximum length, bound *m by those */
-- l = *m;
-- for (j = 1; j <= BMAX; j++) {
-- if (c[j]) {
-- break;
-- }
-- }
-- k = j; /* minimum code length */
-- if ((unsigned) l < j) {
-- l = j;
-- }
-- for (i = BMAX; i; i--) {
-- if (c[i]) {
-- break;
-- }
-- }
-- g = i; /* maximum code length */
-- if ((unsigned) l > i) {
-- l = i;
-- }
-- *m = l;
-+ for (j = 1; (c[j] == 0) && (j <= BMAX); j++);
-+ k = j; /* minimum code length */
-+ for (i = BMAX; (c[i] == 0) && i; i--);
-+ g = i; /* maximum code length */
-+ *m = (*m < j) ? j : ((*m > i) ? i : *m);
-
- /* Adjust last length count to fill out codes, if needed */
- for (y = 1 << j; j < i; j++, y <<= 1) {
- if ((y -= c[j]) < 0) {
-- return 2; /* bad input: more codes than bits */
-+ return 2; /* bad input: more codes than bits */
- }
- }
- if ((y -= c[i]) < 0) {
-@@ -300,7 +294,7 @@
- x[1] = j = 0;
- p = c + 1;
- xp = x + 2;
-- while (--i) { /* note that i == g from above */
-+ while (--i) { /* note that i == g from above */
- *xp++ = (j += *p++);
- }
-
-@@ -314,13 +308,13 @@
- } while (++i < n);
-
- /* Generate the Huffman codes and for each, make the table entries */
-- x[0] = i = 0; /* first Huffman code is zero */
-- p = v; /* grab values in bit order */
-- h = -1; /* no tables yet--level -1 */
-- w = -l; /* bits decoded == (l * h) */
-+ x[0] = i = 0; /* first Huffman code is zero */
-+ p = v; /* grab values in bit order */
-+ h = -1; /* no tables yet--level -1 */
-+ w = ws[0] = 0; /* bits decoded */
- u[0] = (huft_t *) NULL; /* just to keep compilers happy */
- q = (huft_t *) NULL; /* ditto */
-- z = 0; /* ditto */
-+ z = 0; /* ditto */
-
- /* go through the bit lengths (k already is bits in shortest code) */
- for (; k <= g; k++) {
-@@ -328,52 +322,52 @@
- while (a--) {
- /* here i is the Huffman code of length k bits for value *p */
- /* make tables up to required level */
-- while (k > w + l) {
-- h++;
-- w += l; /* previous table always l bits */
--
-- /* compute minimum size table less than or equal to l bits */
-- z = (z = g - w) > (unsigned) l ? l : z; /* upper limit on table size */
-- if ((f = 1 << (j = k - w)) > a + 1) { /* try a k-w bit table *//* too few codes for k-w bit table */
-- f -= a + 1; /* deduct codes from patterns left */
-+ while (k > ws[h + 1]) {
-+ w = ws[++h];
-+
-+ /* compute minimum size table less than or equal to *m bits */
-+ z = (z = g - w) > *m ? *m : z; /* upper limit on table size */
-+ if ((f = 1 << (j = k - w)) > a + 1) { /* try a k-w bit table */
-+ /* too few codes for k-w bit table */
-+ f -= a + 1; /* deduct codes from patterns left */
- xp = c + k;
-- while (++j < z) { /* try smaller tables up to z bits */
-+ while (++j < z) { /* try smaller tables up to z bits */
- if ((f <<= 1) <= *++xp) {
-- break; /* enough codes to use up j bits */
-+ break; /* enough codes to use up j bits */
- }
-- f -= *xp; /* else deduct codes from patterns */
-+ f -= *xp; /* else deduct codes from patterns */
- }
- }
-+ j = (w + j > eob_len && w < eob_len) ? eob_len - w : j; /* make EOB code end at table */
- z = 1 << j; /* table entries for j-bit table */
-+ ws[h+1] = w + j; /* set bits decoded in stack */
-
- /* allocate and link in new table */
- q = (huft_t *) xmalloc((z + 1) * sizeof(huft_t));
--
- *t = q + 1; /* link to list for huft_free() */
- *(t = &(q->v.t)) = NULL;
- u[h] = ++q; /* table starts after link */
-
- /* connect to last table, if there is one */
- if (h) {
-- x[h] = i; /* save pattern for backing up */
-- r.b = (unsigned char) l; /* bits to dump before this table */
-- r.e = (unsigned char) (16 + j); /* bits in this table */
-- r.v.t = q; /* pointer to this table */
-- j = i >> (w - l); /* (get around Turbo C bug) */
-- u[h - 1][j] = r; /* connect to last table */
-+ x[h] = i; /* save pattern for backing up */
-+ r.b = (unsigned char) (w - ws[h - 1]); /* bits to dump before this table */
-+ r.e = (unsigned char) (16 + j); /* bits in this table */
-+ r.v.t = q; /* pointer to this table */
-+ j = (i & ((1 << w) - 1)) >> ws[h - 1];
-+ u[h - 1][j] = r; /* connect to last table */
- }
- }
--
-+
- /* set up table entry in r */
- r.b = (unsigned char) (k - w);
- if (p >= v + n) {
-- r.e = 99; /* out of values--invalid code */
-+ r.e = 99; /* out of values--invalid code */
- } else if (*p < s) {
-- r.e = (unsigned char) (*p < 256 ? 16 : 15); /* 256 is end-of-block code */
-- r.v.n = (unsigned short) (*p); /* simple code is just the value */
-- p++; /* one compiler does not like *p++ */
-+ r.e = (unsigned char) (*p < 256 ? 16 : 15); /* 256 is EOB code */
-+ r.v.n = (unsigned short) (*p++); /* simple code is just the value */
- } else {
-- r.e = (unsigned char) e[*p - s]; /* non-simple--look up in lists */
-+ r.e = (unsigned char) e[*p - s]; /* non-simple--look up in lists */
- r.v.n = d[*p++ - s];
- }
-
-@@ -391,11 +385,14 @@
-
- /* backup over finished tables */
- while ((i & ((1 << w) - 1)) != x[h]) {
-- h--; /* don't need to update q */
-- w -= l;
-+ w = ws[--h];
- }
- }
- }
-+
-+ /* return actual size of base table */
-+ *m = ws[1];
-+
- /* Return true (1) if we were given an incomplete table */
- return y != 0 && g != 1;
- }
-@@ -901,6 +898,11 @@
- bytebuffer_size = 0;
- }
-
-+extern void inflate_cleanup(void)
-+{
-+ free(bytebuffer);
-+}
-+
- extern int inflate_unzip(int in, int out)
- {
- ssize_t nwrote;
-Index: include/unarchive.h
-===================================================================
-RCS file: /var/cvs/busybox/include/unarchive.h,v
-retrieving revision 1.23
-diff -u -r1.23 unarchive.h
---- include/unarchive.h 15 Mar 2004 08:28:38 -0000 1.23
-+++ include/unarchive.h 18 Oct 2004 01:32:30 -0000
-@@ -98,6 +98,7 @@
-
- extern int uncompressStream(int src_fd, int dst_fd);
- extern void inflate_init(unsigned int bufsize);
-+extern void inflate_cleanup(void);
- extern int inflate_unzip(int in, int out);
- extern int inflate_gunzip(int in, int out);
-
-_________________________________________________________________
-Express yourself instantly with MSN Messenger! Download today it's FREE!
-http://messenger.msn.com/
-
-
---===============0046497949==
-Content-Type: text/plain; charset="iso-8859-1"
-MIME-Version: 1.0
-Content-Transfer-Encoding: quoted-printable
-Content-Disposition: inline
-
-_______________________________________________
-busybox mailing list
-busybox@mail.busybox.net
-http://codepoet.org/mailman/listinfo/busybox
-
---===============0046497949==--
diff --git a/packages/busybox/busybox-1.00/wrt54/defconfig b/packages/busybox/busybox-1.00/wrt54/defconfig
deleted file mode 100644
index 7f1aef4ef9..0000000000
--- a/packages/busybox/busybox-1.00/wrt54/defconfig
+++ /dev/null
@@ -1,476 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="mipsel-uclibc-"
-EXTRA_CFLAGS_OPTIONS="-Os "
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-# CONFIG_AR is not set
-CONFIG_BUNZIP2=y
-# CONFIG_CPIO is not set
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNZIP is not set
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-CONFIG_LENGTH=y
-CONFIG_LN=y
-# CONFIG_LOGNAME is not set
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-# CONFIG_MKNOD is not set
-CONFIG_MV=y
-# CONFIG_OD is not set
-# CONFIG_PRINTF is not set
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-# CONFIG_SEQ is not set
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-# CONFIG_STTY is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-# CONFIG_TTY is not set
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-# CONFIG_WATCH is not set
-CONFIG_WC=y
-# CONFIG_WHO is not set
-# CONFIG_WHOAMI is not set
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-# CONFIG_DUMPKMAP is not set
-# CONFIG_GETKEY is not set
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-# CONFIG_READLINK is not set
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-# CONFIG_FEATURE_FIND_MTIME is not set
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-# CONFIG_FEATURE_FIND_NEWER is not set
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-CONFIG_INIT=y
-CONFIG_FEATURE_USE_INITTAB=y
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-CONFIG_REBOOT=y
-CONFIG_MESG=y
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-# CONFIG_FEATURE_U_W_TMP is not set
-CONFIG_LOGIN=y
-CONFIG_FEATURE_SECURETTY=y
-CONFIG_PASSWD=y
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Common options for adduser, deluser, login, su
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-CONFIG_CROND=y
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-# CONFIG_DC is not set
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-# CONFIG_FEATURE_2_6_MODULES is not set
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-CONFIG_LSMOD=y
-CONFIG_FEATURE_QUERY_MODULE_INTERFACE=y
-# CONFIG_MODPROBE is not set
-CONFIG_RMMOD=y
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_ARPING=y
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_HOSTNAME is not set
-CONFIG_HTTPD=y
-# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
-CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-CONFIG_FEATURE_HTTPD_AUTH_MD5=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
-CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_IP is not set
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-# CONFIG_TELNET is not set
-# CONFIG_TELNETD is not set
-# CONFIG_TFTP is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-# CONFIG_FEATURE_UDHCP_SYSLOG is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-# CONFIG_RENICE is not set
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-CONFIG_SYSCTL=y
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_PIPE_OPTIMIZATION=y
-CONFIG_FEATURE_BUILTIN_TEST=y
-CONFIG_FEATURE_BUILTIN_ECHO=y
-CONFIG_FEATURE_BUILTIN_PIDOF=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=15
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-# CONFIG_FDISK is not set
-FDISK_SUPPORT_LARGE_DISKS=y
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-# CONFIG_LOSETUP is not set
-# CONFIG_MKSWAP is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_SWAPONOFF is not set
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.00/xargs-double-size.patch b/packages/busybox/busybox-1.00/xargs-double-size.patch
deleted file mode 100644
index c7dc900cdd..0000000000
--- a/packages/busybox/busybox-1.00/xargs-double-size.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- busybox-1.00/findutils/xargs.c.org 2006-09-19 18:18:17.084592997 +0200
-+++ busybox-1.00/findutils/xargs.c 2006-09-19 18:18:09.820275793 +0200
-@@ -466,8 +466,8 @@
- have it at 1 meg). Things will work fine with a large ARG_MAX but it
- will probably hurt the system more than it needs to; an array of this
- size is allocated. */
-- if (orig_arg_max > 20 * 1024)
-- orig_arg_max = 20 * 1024;
-+ if (orig_arg_max > 40 * 1024)
-+ orig_arg_max = 40 * 1024;
- n_max_chars = orig_arg_max;
- }
- max_chars = xmalloc(n_max_chars);
diff --git a/packages/busybox/busybox-1.01/add-getkey-applet.patch b/packages/busybox/busybox-1.01/add-getkey-applet.patch
deleted file mode 100644
index 6ce0df21bd..0000000000
--- a/packages/busybox/busybox-1.01/add-getkey-applet.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- /dev/null
-+++ busybox-1.00/console-tools/getkey.c
-@@ -0,0 +1,94 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * getkey.c - Michael 'Mickey' Lauer
-+ *
-+ * Version 0.1
-+ *
-+ * A simple keygrapper. Displays a configurable message and waits a dedicated number
-+ * of seconds for a keypress. Sets the exit code accordingly (SUCCESS on keypress).
-+ */
-+#include <stdio.h>
-+#include <fcntl.h>
-+#include <memory.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <sys/types.h>
-+#include <errno.h>
-+#include <sys/ioctl.h>
-+#include <sys/kd.h>
-+#include "busybox.h"
-+
-+extern int getkey_main(int argc, char **argv)
-+{
-+ int status = EXIT_FAILURE;
-+
-+ if ( argc < 2 )
-+ {
-+ bb_show_usage();
-+ }
-+
-+ /*
-+ * If no terminal is attached it is quite useless
-+ * to treat it like one.
-+ */
-+ if( !isatty(STDIN_FILENO) )
-+ {
-+ goto error_hard;
-+ }
-+
-+ //bb_printf( "DEBUG: time = '%s'\n", argv[1] );
-+ //bb_printf( "DEBUG: mesg = '%s'\n", argv[2] );
-+
-+ struct termios orig;
-+ struct termios attr;
-+
-+ if ( tcgetattr(STDIN_FILENO, &orig) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ attr = orig;
-+ attr.c_cc[VMIN] = 0;
-+ attr.c_cc[VTIME] = 0;
-+ attr.c_iflag |= INLCR;
-+ attr.c_oflag |= OPOST|ONLCR;
-+ attr.c_cflag &= ~PARENB;
-+ attr.c_lflag &= ~(ICANON/*|ECHO*/);
-+ if ( tcsetattr(STDIN_FILENO,TCSANOW,&attr) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ fd_set rfds;
-+ struct timeval tv;
-+ int retval;
-+
-+ FD_ZERO(&rfds);
-+ FD_SET(0, &rfds);
-+
-+ tv.tv_sec = atoi( argv[1] );
-+ tv.tv_usec = 0;
-+
-+ if ( argc == 3 )
-+ {
-+ bb_printf( argv[2], tv.tv_sec );
-+ bb_printf( "\n" );
-+ fflush(stdout);
-+ }
-+ retval = select(1, &rfds, NULL, NULL, &tv);
-+ if (retval > 0)
-+ {
-+ status = EXIT_SUCCESS;
-+ }
-+
-+ if (tcsetattr(STDIN_FILENO,TCSANOW,&orig) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ return status;
-+
-+error_hard :
-+ return EXIT_FAILURE;
-+};
-+
---- busybox-1.00/console-tools/Makefile.in~add-getkey-applet.patch
-+++ busybox-1.00/console-tools/Makefile.in
-@@ -28,6 +28,7 @@
- CONSOLETOOLS_DIR-$(CONFIG_CLEAR) += clear.o
- CONSOLETOOLS_DIR-$(CONFIG_DEALLOCVT) += deallocvt.o
- CONSOLETOOLS_DIR-$(CONFIG_DUMPKMAP) += dumpkmap.o
-+CONSOLETOOLS_DIR-$(CONFIG_GETKEY) += getkey.o
- CONSOLETOOLS_DIR-$(CONFIG_LOADFONT) += loadfont.o
- CONSOLETOOLS_DIR-$(CONFIG_LOADKMAP) += loadkmap.o
- CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o
---- busybox-1.00/console-tools/Config.in~add-getkey-applet.patch
-+++ busybox-1.00/console-tools/Config.in
-@@ -31,6 +31,14 @@
- This program dumps the kernel's keyboard translation table to
- stdout, in binary format. You can then use loadkmap to load it.
-
-+config CONFIG_GETKEY
-+ bool "getkey"
-+ default n
-+ help
-+ This program displays a configurable message and waits
-+ a dedicated number of seconds for a keypress. It sets
-+ the exit code accordingly, i.e. SUCCESS if there was a keypress.
-+
- config CONFIG_LOADFONT
- bool "loadfont"
- default n
---- busybox-1.00/include/applets.h~add-getkey-applet.patch
-+++ busybox-1.00/include/applets.h
-@@ -223,6 +223,9 @@
- #ifdef CONFIG_FTPPUT
- APPLET(ftpput, ftpgetput_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
- #endif
-+#ifdef CONFIG_GETKEY
-+ APPLET(getkey, getkey_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
-+#endif
- #ifdef CONFIG_GETOPT
- APPLET(getopt, getopt_main, _BB_DIR_BIN, _BB_SUID_NEVER)
- #endif
---- busybox-1.00/include/usage.h~add-getkey-applet.patch
-+++ busybox-1.00/include/usage.h
-@@ -734,6 +734,13 @@
- "\t-p, --password Password to be used\n" \
- "\t-P, --port Port number to be used"
-
-+#define getkey_trivial_usage \
-+ "time [message]"
-+#define getkey_full_usage \
-+ "Display a message and wait for a keypress."
-+#define getkey_example_usage \
-+ "$ getkey 5 'Press a key within %d seconds to interrupt autoboot.'"
-+
- #define getopt_trivial_usage \
- "[OPTIONS]..."
- #define getopt_full_usage \
diff --git a/packages/busybox/busybox-1.01/angstrom/defconfig b/packages/busybox/busybox-1.01/angstrom/defconfig
deleted file mode 100644
index 34a5804a4d..0000000000
--- a/packages/busybox/busybox-1.01/angstrom/defconfig
+++ /dev/null
@@ -1,475 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNZIP is not set
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-# CONFIG_FEATURE_LS_RECURSIVE is not set
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-# CONFIG_DUMPKMAP is not set
-CONFIG_GETKEY=y
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-CONFIG_FEATURE_INSMOD_LOAD_MAP=y
-CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
-CONFIG_LSMOD=y
-CONFIG_MODPROBE=y
-CONFIG_RMMOD=y
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/below.patch b/packages/busybox/busybox-1.01/below.patch
deleted file mode 100644
index ec97b29962..0000000000
--- a/packages/busybox/busybox-1.01/below.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Index: modutils/modprobe.c
-===================================================================
-RCS file: /var/cvs/busybox/modutils/modprobe.c,v
-retrieving revision 1.41
-diff -u -r1.41 modprobe.c
---- busybox/modutils/modprobe.c 24 Sep 2004 09:18:55 -0000 1.41
-+++ busybox/modutils/modprobe.c 29 Dec 2004 11:56:07 -0000
-@@ -357,6 +357,41 @@
- }
- }
- }
-+ else if ((strncmp (buffer, "below", 5) == 0) && isspace (buffer[5])) {
-+ char *mod, *deps;
-+ if (parse_tag_value (buffer + 6, &mod, &deps)) {
-+ struct dep_t *dt;
-+
-+ for (dt = first; dt; dt = dt->m_next) {
-+ if (strcmp (dt->m_name, mod) == 0)
-+ break;
-+ }
-+ if (dt) {
-+ char *pp;
-+ char *name;
-+
-+ pp = name = deps;
-+
-+ for (;;) {
-+ while (*pp != 0 && !isspace (*pp))
-+ pp++;
-+ if (isspace (*pp))
-+ *(pp++) = 0;
-+
-+ dt->m_depcnt++;
-+ dt->m_deparr = (char **) xrealloc (dt->m_deparr,
-+ sizeof (char *) * dt->m_depcnt);
-+ dt->m_deparr[dt->m_depcnt - 1] = bb_xstrdup (name);
-+
-+ while (isspace (*pp))
-+ pp++;
-+ name = pp;
-+ if (*pp == 0)
-+ break;
-+ }
-+ }
-+ }
-+ }
- }
- }
- close ( fd );
diff --git a/packages/busybox/busybox-1.01/defconfig b/packages/busybox/busybox-1.01/defconfig
deleted file mode 100644
index 8b8212c54a..0000000000
--- a/packages/busybox/busybox-1.01/defconfig
+++ /dev/null
@@ -1,476 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-# CONFIG_FEATURE_LS_RECURSIVE is not set
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-CONFIG_FEATURE_INSMOD_LOAD_MAP=y
-CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
-CONFIG_LSMOD=y
-CONFIG_MODPROBE=y
-CONFIG_RMMOD=y
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-CONFIG_UDHCPD=y
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/dhcp-hostname.patch b/packages/busybox/busybox-1.01/dhcp-hostname.patch
deleted file mode 100644
index e0adea662e..0000000000
--- a/packages/busybox/busybox-1.01/dhcp-hostname.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.01/networking/udhcp/dhcpc.c~dhcp-hostname
-+++ busybox-1.01/networking/udhcp/dhcpc.c
-@@ -193,6 +193,7 @@
- int max_fd;
- int sig;
- int no_clientid = 0;
-+ char hostbuf[256]; /* SUSv2: hostnames are <= 255 bytes */
-
- static const struct option arg_options[] = {
- {"clientid", required_argument, 0, 'c'},
-@@ -211,6 +212,14 @@
- {0, 0, 0, 0}
- };
-
-+ if (gethostname (hostbuf, sizeof (hostbuf)) == 0) {
-+ len = strlen (hostbuf);
-+ client_config.hostname = xmalloc (len + 2);
-+ client_config.hostname[OPT_CODE] = DHCP_HOST_NAME;
-+ client_config.hostname[OPT_LEN] = len;
-+ strncpy(client_config.hostname + 2, hostbuf, len);
-+ }
-+
- /* get options */
- while (1) {
- int option_index = 0;
diff --git a/packages/busybox/busybox-1.01/dhcpretrytime.patch b/packages/busybox/busybox-1.01/dhcpretrytime.patch
deleted file mode 100644
index e41ea9de55..0000000000
--- a/packages/busybox/busybox-1.01/dhcpretrytime.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.01/networking/udhcp/dhcpc.c~dhcpretrytime
-+++ busybox-1.01/networking/udhcp/dhcpc.c
-@@ -48,6 +48,7 @@
- static unsigned long requested_ip; /* = 0 */
- static unsigned long server_addr;
- static unsigned long timeout;
-+static unsigned long retrytime = 60;
- static int packet_num; /* = 0 */
- static int fd = -1;
-
-@@ -91,6 +92,7 @@
- " -r, --request=IP IP address to request (default: none)\n"
- " -s, --script=file Run file at dhcp events (default:\n"
- " " DEFAULT_SCRIPT ")\n"
-+" -t, --retrytime time to retry DHCP request (default 60s)\n")
- " -v, --version Display version\n"
- );
- exit(0);
-@@ -208,6 +210,7 @@
- {"quit", no_argument, 0, 'q'},
- {"request", required_argument, 0, 'r'},
- {"script", required_argument, 0, 's'},
-+ {"retrytime", required_argument, 0, 't'},
- {"version", no_argument, 0, 'v'},
- {0, 0, 0, 0}
- };
-@@ -223,7 +226,7 @@
- /* get options */
- while (1) {
- int option_index = 0;
-- c = getopt_long(argc, argv, "c:CfbH:h:i:np:qr:s:v", arg_options, &option_index);
-+ c = getopt_long(argc, argv, "c:fbH:h:i:np:qr:s:t:v", arg_options, &option_index);
- if (c == -1) break;
-
- switch (c) {
-@@ -274,6 +277,9 @@
- case 's':
- client_config.script = optarg;
- break;
-+ case 't':
-+ retrytime = atol(optarg);
-+ break;
- case 'v':
- printf("udhcpcd, version %s\n\n", VERSION);
- return 0;
-@@ -353,7 +359,7 @@
- }
- /* wait to try again */
- packet_num = 0;
-- timeout = now + 60;
-+ timeout = now + retrytime;
- }
- break;
- case RENEW_REQUESTED:
---- busybox-1.01/networking/ifupdown.c~dhcpretrytime
-+++ busybox-1.01/networking/ifupdown.c
-@@ -541,7 +541,7 @@
- static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
- {
- if (execable("/sbin/udhcpc")) {
-- return( execute("udhcpc -n -p /var/run/udhcpc.%iface%.pid -i "
-+ return( execute("udhcpc -b -p /var/run/udhcpc.%iface%.pid -i "
- "%iface% [[-H %hostname%]] [[-c %clientid%]]", ifd, exec));
- } else if (execable("/sbin/pump")) {
- return( execute("pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]]", ifd, exec));
-@@ -561,8 +561,8 @@
- /* SIGUSR2 forces udhcpc to release the current lease and go inactive,
- * and SIGTERM causes udhcpc to exit. Signals are queued and processed
- * sequentially so we don't need to sleep */
-- result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
-- result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
-+ result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
-+ result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
- } else if (execable("/sbin/pump")) {
- result = execute("pump -i %iface% -k", ifd, exec);
- } else if (execable("/sbin/dhclient")) {
diff --git a/packages/busybox/busybox-1.01/familiar/defconfig b/packages/busybox/busybox-1.01/familiar/defconfig
deleted file mode 100644
index 49dd403eb5..0000000000
--- a/packages/busybox/busybox-1.01/familiar/defconfig
+++ /dev/null
@@ -1,470 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNZIP is not set
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-# CONFIG_FEATURE_LS_RECURSIVE is not set
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-CONFIG_FEATURE_INSMOD_LOAD_MAP=y
-CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
-CONFIG_LSMOD=y
-CONFIG_MODPROBE=y
-CONFIG_RMMOD=y
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-# CONFIG_FDISK is not set
-FDISK_SUPPORT_LARGE_DISKS=y
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/fbset.patch b/packages/busybox/busybox-1.01/fbset.patch
deleted file mode 100644
index d0609ce6f7..0000000000
--- a/packages/busybox/busybox-1.01/fbset.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- busybox/util-linux/fbset.c~ 2004-07-03 16:24:23.000000000 +0100
-+++ busybox/util-linux/fbset.c 2004-12-30 20:09:26.000000000 +0000
-@@ -337,7 +337,7 @@
- {
- struct fb_var_screeninfo var, varset;
- int fh, i;
-- char *fbdev = DEFAULTFBDEV;
-+ char *fbdev = NULL;
- char *modefile = DEFAULTFBMODE;
- char *thisarg, *mode = NULL;
-
-@@ -404,7 +404,12 @@
- }
- }
-
-+ if (fbdev == NULL)
-+ fbdev = DEFAULTFBDEV;
- if ((fh = open(fbdev, O_RDONLY)) < 0)
-+#ifdef CONFIG_FEATURE_DEVFS
-+ if ((fh = open("/dev/fb0", O_RDONLY)) < 0)
-+#endif
- bb_perror_msg_and_die("fbset(open)");
- if (ioctl(fh, FBIOGET_VSCREENINFO, &var))
- bb_perror_msg_and_die("fbset(ioctl)");
diff --git a/packages/busybox/busybox-1.01/hdparm_M.patch b/packages/busybox/busybox-1.01/hdparm_M.patch
deleted file mode 100644
index 170906535e..0000000000
--- a/packages/busybox/busybox-1.01/hdparm_M.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -Naur busybox-1.00/miscutils/hdparm.c busybox-1.00-patched/miscutils/hdparm.c
---- busybox-1.00/miscutils/hdparm.c 2004-07-21 00:53:59.000000000 +0200
-+++ busybox-1.00-patched/miscutils/hdparm.c 2004-10-21 15:17:13.000000000 +0200
-@@ -1254,6 +1254,7 @@
- static unsigned long set_sleepnow = 0, get_sleepnow = 0;
- static unsigned long get_powermode = 0;
- static unsigned long set_apmmode = 0, get_apmmode= 0, apmmode = 0;
-+static unsigned long set_acoustic = 0, get_acoustic = 0, acoustic = 0;
- #endif
- #ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
- static int get_IDentity = 0;
-@@ -2123,6 +2124,20 @@
- }
- bb_ioctl(fd, HDIO_DRIVE_CMD, &args,"HDIO_DRIVE_CMD");
- }
-+ if (set_acoustic)
-+ {
-+ no_scsi();
-+ acoustic=check_if_min_and_set_val(acoustic,0);
-+ acoustic=check_if_maj_and_set_val(acoustic,254);
-+ if_printf(get_acoustic," setting AAM level to 0x%02lX (%ld)\n", acoustic, acoustic);
-+ bb_ioctl(fd, HDIO_SET_ACOUSTIC, (int*)acoustic,"HDIO_SET_ACOUSTIC");
-+ }
-+ if (get_acoustic)
-+ {
-+ no_scsi();
-+ bb_ioctl(fd, HDIO_GET_ACOUSTIC, (unsigned long*)&parm,"HDIO_GET_ACOUSTIC");
-+ printf(" acoustic = %2ld (128=quiet ... 254=fast)\n", parm);
-+ }
- if (set_wcache)
- {
- #ifdef DO_FLUSHCACHE
-@@ -2831,6 +2846,13 @@
- p = *argv++, --argc;
- p=GET_NUMBER(p,&set_readahead,&Xreadahead);
- break;
-+ case 'M':
-+ get_acoustic = noisy;
-+ noisy = 1;
-+ if (!*p && argc && isalnum(**argv))
-+ p = *argv++, --argc;
-+ p=GET_NUMBER(p,&set_acoustic,&acoustic);
-+ break;
- case 'B':
- get_apmmode = noisy;
- noisy = 1;
-
diff --git a/packages/busybox/busybox-1.01/ifupdown-spurious-environ.patch b/packages/busybox/busybox-1.01/ifupdown-spurious-environ.patch
deleted file mode 100644
index 8753315f2c..0000000000
--- a/packages/busybox/busybox-1.01/ifupdown-spurious-environ.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- busybox-1.00/networking/ifupdown.c.old 2005-06-11 19:51:59.000000000 +0100
-+++ busybox-1.00/networking/ifupdown.c 2005-06-11 19:52:19.000000000 +0100
-@@ -148,6 +148,9 @@
- struct mapping_defn_t *mappings;
- };
-
-+/* XXX */
-+#define environ local_environ
-+
- static char no_act = 0;
- static char verbose = 0;
- static char **environ = NULL;
diff --git a/packages/busybox/busybox-1.01/iproute-flush-cache.patch b/packages/busybox/busybox-1.01/iproute-flush-cache.patch
deleted file mode 100644
index f8becc3390..0000000000
--- a/packages/busybox/busybox-1.01/iproute-flush-cache.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: networking/libiproute/iproute.c
-===================================================================
-RCS file: /var/cvs/busybox/networking/libiproute/iproute.c,v
-retrieving revision 1.14
-diff -u -r1.14 iproute.c
---- networking/libiproute/iproute.c 11 Aug 2004 08:10:58 -0000 1.14
-+++ networking/libiproute/iproute.c 30 Nov 2004 20:43:44 -0000
-@@ -537,6 +537,15 @@
- } else if (matches(*argv, "match") == 0) {
- NEXT_ARG();
- get_prefix(&filter.mdst, *argv, do_ipv6);
-+ } else if (matches(*argv, "table") == 0) {
-+ NEXT_ARG();
-+ if (matches(*argv, "cache") == 0) {
-+ filter.tb = -1;
-+ } else if (matches(*argv, "main") != 0) {
-+ invarg("invalid \"table\"", *argv);
-+ }
-+ } else if (matches(*argv, "cache") == 0) {
-+ filter.tb = -1;
- } else {
- if (matches(*argv, "exact") == 0) {
- NEXT_ARG();
diff --git a/packages/busybox/busybox-1.01/mount-all-type.patch b/packages/busybox/busybox-1.01/mount-all-type.patch
deleted file mode 100644
index 476094a804..0000000000
--- a/packages/busybox/busybox-1.01/mount-all-type.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- busybox-1.00/.pc/mount-all-type.patch/util-linux/mount.c 2004-08-02 17:14:02.000000000 -0700
-+++ busybox-1.00/util-linux/mount.c 2005-05-13 00:17:19.054232796 -0700
-@@ -364,6 +364,56 @@
- exit(EXIT_SUCCESS);
- }
-
-+/* Does this file system type, from /etc/fstab, match the given
-+ * -t option value?
-+ */
-+static int match_fs(const char *option, const char *type)
-+{
-+ const int len = strlen(type);
-+ const int no = option[0] == 'n' && option[1] == 'o';
-+ const char *optp = option;
-+
-+ if (len > 0) do {
-+ const char *match = strstr(optp, type);
-+
-+ if (match == NULL) {
-+ /* No match, but if the option string starts 'no' no match
-+ * means yes.
-+ */
-+ return no;
-+ }
-+
-+ /* Match, may be partial, check for end-of-type in option string. */
-+ if (match[len] == 0 || match[len] == ',') {
-+ /* Ok, check for type or notype. */
-+ if (match == option) {
-+ /* Exact match at start (can't be 'no') */
-+ return 1;
-+ }
-+ if (match > option+1) {
-+ if (match[-1] == ',') {
-+ /* Exact match in middle, might be 'no' */
-+ return !no;
-+ }
-+ if (match == option+2 && no) {
-+ /* Exact match to 'notype' at start. */
-+ return 0;
-+ }
-+ if (match > option+2 && match[-3] == ',' &&
-+ match[-2] == 'n' && match[-1] == 'o') {
-+ return 0;
-+ }
-+ }
-+ }
-+
-+ /* Look for another match. */
-+ optp = match+1;
-+ } while (1);
-+
-+ /* zero length type in fstab (impossible?), don't match it. */
-+ return 0;
-+}
-+
- extern int mount_main(int argc, char **argv)
- {
- struct stat statbuf;
-@@ -371,6 +421,7 @@
- char *extra_opts;
- int flags = 0;
- char *filesystemType = "auto";
-+ char *filesystemOption = 0;
- int got_filesystemType = 0;
- char *device = xmalloc(PATH_MAX);
- char *directory = xmalloc(PATH_MAX);
-@@ -393,6 +444,7 @@
- break;
- case 't':
- filesystemType = optarg;
-+ filesystemOption = optarg;
- got_filesystemType = 1;
- break;
- case 'w':
-@@ -460,6 +512,8 @@
-
- strcpy(device, m->mnt_fsname);
- strcpy(directory, m->mnt_dir);
-+ if (all && filesystemOption != 0 && !match_fs(filesystemOption, m->mnt_type))
-+ continue;
- filesystemType = bb_xstrdup(m->mnt_type);
- singlemount:
- extra_opts = string_flags;
diff --git a/packages/busybox/busybox-1.01/nylon/defconfig b/packages/busybox/busybox-1.01/nylon/defconfig
deleted file mode 100644
index 7efd042cdc..0000000000
--- a/packages/busybox/busybox-1.01/nylon/defconfig
+++ /dev/null
@@ -1,458 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-# CONFIG_FEATURE_TAR_BZIP2 is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_UNCOMPRESS=y
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Common options for dpkg and dpkg_deb
-#
-CONFIG_FEATURE_DEB_TAR_GZ=y
-CONFIG_FEATURE_DEB_TAR_BZ2=y
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CMP=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-# CONFIG_TEST is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-# CONFIG_LOADFONT is not set
-CONFIG_LOADKMAP=y
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-CONFIG_SETKEYCODES=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-CONFIG_CROND=y
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-CONFIG_WATCHDOG=y
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_ARPING=y
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-CONFIG_HTTPD=y
-# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
-CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-CONFIG_FEATURE_HTTPD_AUTH_MD5=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-CONFIG_FEATURE_HTTPD_SETUID=y
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
-CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_INETD=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN=y
-# CONFIG_IP is not set
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-CONFIG_NAMEIF=y
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-CONFIG_UDHCPD=y
-CONFIG_UDHCPC=y
-CONFIG_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-CONFIG_SYSCTL=y
-
-#
-# Another Bourne-like Shell
-#
-# CONFIG_FEATURE_SH_IS_ASH is not set
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-CONFIG_FEATURE_SH_IS_NONE=y
-# CONFIG_ASH is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-# CONFIG_MORE is not set
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/openmn/defconfig b/packages/busybox/busybox-1.01/openmn/defconfig
deleted file mode 100644
index f98af91853..0000000000
--- a/packages/busybox/busybox-1.01/openmn/defconfig
+++ /dev/null
@@ -1,475 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_CMP=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-# CONFIG_FEATURE_LS_COLOR is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-# CONFIG_FEATURE_FANCY_TAIL is not set
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETKEYCODES=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-CONFIG_ADDGROUP=y
-CONFIG_DELGROUP=y
-CONFIG_ADDUSER=y
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-CONFIG_FEATURE_U_W_TMP=y
-CONFIG_LOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_SU=y
-CONFIG_SULOGIN=y
-CONFIG_VLOCK=y
-
-#
-# Common options for adduser, deluser, login, su
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-CONFIG_FEATURE_INSMOD_LOAD_MAP=y
-CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
-CONFIG_LSMOD=y
-CONFIG_MODPROBE=y
-CONFIG_RMMOD=y
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_FEATURE_IPV6 is not set
-CONFIG_ARPING=y
-# CONFIG_FTPGET is not set
-CONFIG_FTPPUT=y
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-# CONFIG_FEATURE_IP_TUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
-# CONFIG_TELNETD is not set
-# CONFIG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-# CONFIG_FEATURE_WGET_STATUSBAR is not set
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=31
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-# FDISK_SUPPORT_LARGE_DISKS is not set
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-CONFIG_LOSETUP=y
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_SWAPONOFF is not set
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/readlink.patch b/packages/busybox/busybox-1.01/readlink.patch
deleted file mode 100644
index 0c5431085a..0000000000
--- a/packages/busybox/busybox-1.01/readlink.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-diff -p -u -r1.7 Config.in
---- busybox-1.00/debianutils/Config.in 15 Mar 2004 08:28:24 -0000 1.7
-+++ busybox-1.00-patched/debianutils/Config.in 16 Nov 2004 11:46:41 -0000
-@@ -24,6 +24,13 @@ config CONFIG_READLINK
- This program reads a symbolic link and returns the name
- of the file it points to
-
-+config CONFIG_FEATURE_READLINK_FOLLOW
-+ bool " Enable canonicalization by following all symlinks (-f)"
-+ default n
-+ depends on CONFIG_READLINK
-+ help
-+ Enable the readlink option (-f).
-+
- config CONFIG_RUN_PARTS
- bool "run-parts"
- default n
-diff -p -u -r1.2 readlink.c
---- busybox-1.00/debianutils/readlink.c 19 Mar 2003 09:11:41 -0000 1.2
-+++ busybox-1.00-patched/debianutils/readlink.c 16 Nov 2004 11:46:41 -0000
-@@ -23,18 +23,38 @@
- #include <errno.h>
- #include <unistd.h>
- #include <stdlib.h>
-+#include <getopt.h>
- #include "busybox.h"
-
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+# define READLINK_FOLLOW "f"
-+# define READLINK_FLAG_f (1 << 0)
-+#else
-+# define READLINK_FOLLOW ""
-+#endif
-+
-+static const char readlink_options[] = READLINK_FOLLOW;
-+
- int readlink_main(int argc, char **argv)
- {
- char *buf = NULL;
-+ unsigned long opt = bb_getopt_ulflags(argc, argv, readlink_options);
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+ RESERVE_CONFIG_BUFFER(resolved_path, PATH_MAX);
-+#endif
-
- /* no options, no getopt */
-
-- if (argc != 2)
-+ if (optind + 1 != argc)
- bb_show_usage();
-
-- buf = xreadlink(argv[1]);
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+ if (opt & READLINK_FLAG_f) {
-+ buf = realpath(argv[optind], resolved_path);
-+ } else
-+#endif
-+ buf = xreadlink(argv[optind]);
-+
- if (!buf)
- return EXIT_FAILURE;
- puts(buf);
-diff -p -u -r1.222 usage.h
---- busybox-1.00/include/usage.h 14 Sep 2004 16:23:56 -0000 1.222
-+++ busybox-1.00-patched/include/usage.h 16 Nov 2004 11:46:42 -0000
-@@ -1985,10 +1985,18 @@
- "\t-s\tSet the system date and time (default).\n" \
- "\t-p\tPrint the date and time."
-
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+#define USAGE_READLINK_FOLLOW(a) a
-+#else
-+#define USAGE_READLINK_FOLLOW(a)
-+#endif
-+
- #define readlink_trivial_usage \
-- ""
-+ USAGE_READLINK_FOLLOW("[-f] ") "FILE"
- #define readlink_full_usage \
-- "Displays the value of a symbolic link."
-+ "Displays the value of a symbolic link." \
-+ USAGE_READLINK_FOLLOW("\n\nOptions:\n" \
-+ "\t-f\tcanonicalize by following all symlinks")
-
- #define realpath_trivial_usage \
- "pathname ..."
diff --git a/packages/busybox/busybox-1.01/rmmod.patch b/packages/busybox/busybox-1.01/rmmod.patch
deleted file mode 100644
index 5a557ef35d..0000000000
--- a/packages/busybox/busybox-1.01/rmmod.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Index: modutils/rmmod.c
-===================================================================
-RCS file: /var/cvs/busybox/modutils/rmmod.c,v
-retrieving revision 1.31
-diff -u -r1.31 rmmod.c
---- busybox/modutils/rmmod.c 20 Jul 2004 18:36:51 -0000 1.31
-+++ busybox/modutils/rmmod.c 10 Dec 2004 22:56:36 -0000
-@@ -28,6 +28,7 @@
- #include <fcntl.h>
- #include <string.h>
- #include <sys/syscall.h>
-+#include <sys/utsname.h>
- #include "busybox.h"
-
- #ifdef CONFIG_FEATURE_2_6_MODULES
-@@ -63,6 +64,16 @@
- void *buf; /* hold the module names which we ignore but must get */
- size_t bufsize = 0;
- #endif
-+#ifdef CONFIG_FEATURE_2_6_MODULES
-+ int k_version = 0;
-+ struct utsname myuname;
-+
-+ if (uname(&myuname) == 0) {
-+ if (myuname.release[0] == '2') {
-+ k_version = myuname.release[2] - '0';
-+ }
-+ }
-+#endif
-
- /* Parse command line. */
- while ((n = getopt(argc, argv, "a")) != EOF) {
-@@ -109,7 +120,10 @@
- for (n = optind; n < argc; n++) {
- #ifdef CONFIG_FEATURE_2_6_MODULES
- char module_name[strlen(argv[n]) + 1];
-- filename2modname(module_name, argv[n]);
-+ if (k_version != 4)
-+ filename2modname(module_name, argv[n]);
-+ else
-+ strcpy(module_name, argv[n]);
- #else
- #define module_name argv[n]
- #endif
diff --git a/packages/busybox/busybox-1.01/slugos/defconfig b/packages/busybox/busybox-1.01/slugos/defconfig
deleted file mode 100644
index 55aa5f3b5e..0000000000
--- a/packages/busybox/busybox-1.01/slugos/defconfig
+++ /dev/null
@@ -1,444 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-# CONFIG_CPIO is not set
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-# CONFIG_DUMPKMAP is not set
-CONFIG_GETKEY=y
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-# CONFIG_FIND is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-# CONFIG_XARGS is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-# CONFIG_DC is not set
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_IP is not set
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-CONFIG_SYSCTL=y
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-CONFIG_FEATURE_OSF_LABEL=y
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-# CONFIG_LOSETUP is not set
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_SWAPONOFF is not set
-# CONFIG_MOUNT is not set
-# CONFIG_UMOUNT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/slugos/sysctl.conf b/packages/busybox/busybox-1.01/slugos/sysctl.conf
deleted file mode 100644
index cfaa3c7f92..0000000000
--- a/packages/busybox/busybox-1.01/slugos/sysctl.conf
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# /etc/sysctl.conf - Configuration file for setting system variables
-# See sysctl.conf (5) for information.
-#
-
-#kernel.domainname = example.com
-
-# This flag allows the machine to respond to broadcast pings.
-# Very useful on embedded machines
-net/ipv4/icmp_echo_ignore_broadcasts=0
-
-# Uncomment the following to stop low-level messages on console
-#kernel/printk = 4 4 1 7
-
-##############################################################3
-# Functions previously found in netbase
-#
-
-# Uncomment the next line to enable Spoof protection (reverse-path filter)
-#net/ipv4/conf/all/rp_filter=1
-
-# Uncomment the next line to enable TCP/IP SYN cookies
-#net/ipv4/tcp_syncookies=1
-
-# Uncomment the next line to enable packet forwarding for IPv4
-#net/ipv4/ip_forward=1
-
-# Uncomment the next line to enable packet forwarding for IPv6
-#net/ipv6/ip_forward=1
-
-# This sets the app to run on a hotplug event
-kernel/hotplug=/sbin/udevsend
diff --git a/packages/busybox/busybox-1.01/slugos/udhcpscript.patch b/packages/busybox/busybox-1.01/slugos/udhcpscript.patch
deleted file mode 100644
index 277a22cddb..0000000000
--- a/packages/busybox/busybox-1.01/slugos/udhcpscript.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-diff -rup busybox-1.01/.pc/udhcpscript.patch/examples/udhcp/simple.script busybox-1.01/examples/udhcp/simple.script
---- busybox-1.01/examples/udhcp/simple.script 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.01/examples/udhcp/simple.script 1970-01-01 00:00:00.000000000 +0000
-@@ -1,40 +1,129 @@
- #!/bin/sh
-+# slugos UDHCP client script
-+#
-+. /etc/default/functions
-+
-+echodns(){
-+ local dns
-+ if test $# -gt 0
-+ then
-+ for dns in "$@"
-+ do
-+ echo "nameserver $dns #dhcp:$interface"
-+ done
-+ fi
-+}
-
--# udhcpc script edited by Tim Riker <Tim@Rikers.org>
-+# Output the correct contents for resolv.conf based on
-+# the current one and any new information
-+mkresolv() {
-+ local rmdomain
-+ rmdomain=
-+ # last search takes precedence, so a user
-+ # specified search in resolv.conf is retained
-+ test -n "$domain" && {
-+ echo "search $domain #dhcp"
-+ rmdomain='|search [^ ]* #dhcp'
-+ }
-+ # first nameserver takes precedence, use a user
-+ # specified nameserver in preference then the
-+ # new ones
-+ egrep -v '^(nameserver [^ ]* #dhcp:.*'"$rmdomain"')$' "$1"
-+ echodns $dns
-+ egrep '^nameserver [^ ]* #dhcp:.*$' "$1" | egrep -v :"$interface"'$'
-+}
-+
-+# checksum of a file (or stdin if -)
-+md5strm() {
-+ md5sum $1 2>/dev/null | sed -n 's/^\([0-9A-Za-z]*\).*$/\1/p'
-+}
-+
-+# update resolv.conf for $interface using $domain and $dns
-+updresolv() {
-+ local md5old md5new resolv
-+ md5old="$(md5strm /etc/resolv.conf)"
-+ resolv="$(mkresolv /etc/resolv.conf)"
-+ md5new="$(echo "$resolv" | md5strm -)"
-+ test "$md5old" != "$md5new" && echo "$resolv" >/etc/resolv.conf
-+}
-+
-+unroute() {
-+ # called to deconfig the interface
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null
-+ do
-+ :
-+ done
-+}
-+
-+bind() {
-+ local B N metric i olddomain resolv
-+ B=
-+ test -n "$broadcast" && B="broadcast $broadcast"
-+ N=
-+ test -n "$subnet" && N="netmask $subnet"
-+ ifconfig "$interface" "$ip" $B $N up
-+
-+ # If given router information delete the old information and
-+ # enter new stuff, routers get metrics incremented by 1
-+ # between each (this is somewhat arbitrary)
-+ if test -n "$router"
-+ then
-+ unroute
-+ metric=0
-+ for i in $router
-+ do
-+ route add default gw "$i" dev "$interface" metric $((metric++))
-+ done
-+ fi
-
--[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
-+ olddomain=
-+ test -r /etc/defaultdomain && olddomain="$(cat /etc/defaultdomain)"
-+ if test -n "$domain" -a "$domain" != "$olddomain"
-+ then
-+ echo "$domain" >/etc/defaultdomain
-+ # and update the kernel view too
-+ echo "$domain" >/proc/sys/kernel/domainname
-+ fi
-
--RESOLV_CONF="/etc/resolv.conf"
--[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
--[ -n "$subnet" ] && NETMASK="netmask $subnet"
-+ updresolv
-+}
-
- case "$1" in
-- deconfig)
-- /sbin/ifconfig $interface 0.0.0.0
-- ;;
--
-- renew|bound)
-- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
--
-- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-- :
-- done
--
-- metric=0
-- for i in $router ; do
-- route add default gw $i dev $interface metric $((metric++))
-- done
-+deconfig)
-+ # Bring the interface up (without inet at this point)
-+ # Remove the resolver information because deconfig is called
-+ # on leasefail and we need to remove this interface at that
-+ # point to ensure the machine remains visible on another
-+ # interface!
-+ domain=
-+ dns=
-+ unroute
-+ updresolv
-+ ifconfig "$interface" up;;
-+
-+renew|bound)
-+ bind;;
-+
-+leasefail)
-+ # Pull the values from the config data if (only only if) this
-+ # is the config interface
-+ if test "$interface" = "$(config iface)"
-+ then
-+ ip="$(config ip)"
-+ if test -n "$ip"
-+ then
-+ router="$(config gateway)"
-+ subnet="$(config netmask)"
-+ broadcast="$(config broadcast)"
-+ domain="$(config domain)"
-+ dns="$(config dns)"
-+
-+ bind
- fi
-+ fi;;
-
-- echo -n > $RESOLV_CONF
-- [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
-- for i in $dns ; do
-- echo adding dns $i
-- echo nameserver $i >> $RESOLV_CONF
-- done
-- ;;
-+*) echo "udhcpc: $*: unknown command" >&2
-+ exit 1;;
- esac
-
- exit 0
diff --git a/packages/busybox/busybox-1.01/sparc/defconfig b/packages/busybox/busybox-1.01/sparc/defconfig
deleted file mode 100644
index 8b8cbfc839..0000000000
--- a/packages/busybox/busybox-1.01/sparc/defconfig
+++ /dev/null
@@ -1,467 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-# CONFIG_FEATURE_LS_RECURSIVE is not set
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-CONFIG_OD=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-CONFIG_STTY=y
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-CONFIG_MAKEDEVS=y
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-CONFIG_RENICE=y
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
-# CONFIG_LOSETUP is not set
-CONFIG_MKSWAP=y
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-CONFIG_SWAPONOFF=y
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-# CONFIG_FEATURE_MOUNT_LOOP is not set
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/thumb-bsdlabel.patch b/packages/busybox/busybox-1.01/thumb-bsdlabel.patch
deleted file mode 100644
index dc3eb7c552..0000000000
--- a/packages/busybox/busybox-1.01/thumb-bsdlabel.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- busybox-1.01/util-linux/fdisk.c 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.01/util-linux/fdisk.c 1970-01-01 00:00:00.000000000 +0000
-@@ -507,7 +507,7 @@ check_aix_label( void )
-
- #define BSD_LINUX_BOOTDIR "/usr/ucb/mdec"
-
--#if defined (i386) || defined (__sparc__) || defined (__arm__) || defined (__mips__) || defined (__s390__) || defined (__sh__) || defined(__x86_64__)
-+#if defined (i386) || defined (__sparc__) || defined (__arm__) || defined (__thumb__) || defined (__mips__) || defined (__s390__) || defined (__sh__) || defined(__x86_64__)
- #define BSD_LABELSECTOR 1
- #define BSD_LABELOFFSET 0
- #elif defined (__alpha__) || defined (__powerpc__) || defined (__ia64__) || defined (__hppa__)
diff --git a/packages/busybox/busybox-1.01/uclibc_posix.patch b/packages/busybox/busybox-1.01/uclibc_posix.patch
deleted file mode 100644
index 186f3f9c3a..0000000000
--- a/packages/busybox/busybox-1.01/uclibc_posix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-see http://www.busybox.net/lists/busybox/2004-December/013276.html
-and http://bugs.openembedded.org/show_bug.cgi?id=657
-
---- busybox-1.01/libbb/loop.c 2006/03/13 22:18:47 1.1
-+++ busybox-1.01/libbb/loop.c 2006/03/13 22:19:57
-@@ -19,6 +19,7 @@
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-+#include <linux/types.h>
- #include <stdio.h>
- #include <errno.h>
- #include <fcntl.h>
-@@ -30,7 +31,6 @@
- /* Grumble... The 2.6.x kernel breaks asm/posix_types.h
- * so we get to try and cope as best we can... */
- #include <linux/version.h>
--#include <asm/posix_types.h>
-
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
- #define __bb_kernel_dev_t __kernel_old_dev_t
diff --git a/packages/busybox/busybox-1.01/udhcppidfile-breakage.patch b/packages/busybox/busybox-1.01/udhcppidfile-breakage.patch
deleted file mode 100644
index 031274908b..0000000000
--- a/packages/busybox/busybox-1.01/udhcppidfile-breakage.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- busybox-1.00/networking/udhcp/common.c~udhcppidfile2
-+++ busybox-1.00/networking/udhcp/common.c
-@@ -74,7 +74,7 @@
-
- if (pid > 0) {
- /* parent */
-- if (pidfile_reassign(pidfile, pid) < 0) {
-+ if (pidfile != NULL && pidfile_reassign(pidfile, pid) < 0) {
- (void)kill(pid, SIGKILL);
- exit(1);
- } else
-@@ -119,7 +119,7 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- if (pidfile_acquire(pidfile) < 0)
-+ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
- exit(1);
-
- /* equivelent of doing a fflush after every \n */
-@@ -166,7 +166,7 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- if (pidfile_acquire(pidfile) < 0)
-+ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
- exit(1);
-
- /* equivelent of doing a fflush after every \n */
---- busybox-1.00/networking/udhcp/pidfile.c~udhcppidfile2
-+++ busybox-1.00/networking/udhcp/pidfile.c
-@@ -141,7 +141,11 @@
- int pidfile_acquire(const char *pidfile)
- {
- int fd, result;
-- if (!pidfile) return (-1);
-+
-+ if (pidfile == NULL) {
-+ LOG(LOG_ERR, "pidfile_acquire: filename is NULL\n");
-+ return (-1);
-+ }
-
- if ((fd = pidfile_open(pidfile)) < 0)
- return (-1);
-@@ -170,7 +174,11 @@
- int pidfile_reassign(const char *pidfile, int pid)
- {
- int fd, result;
-- if (!pidfile) return (-1);
-+
-+ if (pidfile == NULL) {
-+ LOG(LOG_ERR, "pidfile_reassign: filename is NULL\n");
-+ return (-1);
-+ }
-
- if ((fd = pidfile_open(pidfile)) < 0)
- return (-1);
diff --git a/packages/busybox/busybox-1.01/udhcppidfile.patch b/packages/busybox/busybox-1.01/udhcppidfile.patch
deleted file mode 100644
index fb2b2ec19a..0000000000
--- a/packages/busybox/busybox-1.01/udhcppidfile.patch
+++ /dev/null
@@ -1,276 +0,0 @@
---- busybox-1.00/networking/udhcp/pidfile.h-dist 2004-04-15 03:51:26.000000000 +1000
-+++ busybox-1.00/networking/udhcp/pidfile.h 2004-10-27 15:46:38.000000000 +1000
-@@ -21,5 +21,5 @@
-
-
- int pidfile_acquire(const char *pidfile);
--void pidfile_write_release(int pid_fd);
-+int pidfile_reassign(const char *pidfile, int newpid);
-
---- busybox-1.00/networking/udhcp/pidfile.c-dist 2004-04-15 03:51:25.000000000 +1000
-+++ busybox-1.00/networking/udhcp/pidfile.c 2004-10-27 19:43:40.000000000 +1000
-@@ -25,6 +25,7 @@
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#include <errno.h>
-
- #include "pidfile.h"
- #include "common.h"
-@@ -37,39 +38,146 @@
- }
-
-
--int pidfile_acquire(const char *pidfile)
-+static int pidfile_open(const char *pidfile)
- {
-- int pid_fd;
-- if (!pidfile) return -1;
-+ int fd;
-
-- pid_fd = open(pidfile, O_CREAT | O_WRONLY, 0644);
-- if (pid_fd < 0) {
-- LOG(LOG_ERR, "Unable to open pidfile %s: %m\n", pidfile);
-- } else {
-- lockf(pid_fd, F_LOCK, 0);
-- if (!saved_pidfile)
-- atexit(pidfile_delete);
-- saved_pidfile = (char *) pidfile;
-+ if ((fd = open(pidfile, O_CREAT | O_RDWR, 0644)) < 0) {
-+ LOG(LOG_ERR, "pidfile_open: open %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ /* NOTE: lockf is not inherited by child after fork */
-+ if (lockf(fd, F_LOCK, 0) < 0) {
-+ LOG(LOG_ERR, "pidfile_open: lock %s failed: %m\n", pidfile);
-+ close(fd);
-+ return (-1);
-+ }
-+
-+ return (fd);
-+}
-+
-+
-+static int pidfile_check(int fd, const char *pidfile)
-+{
-+ int len, pid;
-+ char buf[20];
-+
-+ if (lseek(fd, 0L, SEEK_SET) < 0) {
-+ LOG(LOG_ERR, "pidfile_check: lseek %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ if ((len = read(fd, buf, sizeof buf - 1)) < 0) {
-+ LOG(LOG_ERR, "pidfile_check: read %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ if (len == 0)
-+ return (0);
-+
-+ buf[len] = '\0';
-+
-+ if ((pid = atoi(buf)) <= 1) {
-+ LOG(LOG_WARNING,
-+ "pidfile_check: ignoring bogus pid (%s) in %s\n",
-+ buf, pidfile);
-+ return (0);
-+ }
-+
-+ if (kill((pid_t)pid, 0) == 0) {
-+ LOG(LOG_ERR, "pidfile_check: process %d exists (%s)\n",
-+ pid, pidfile);
-+ return (-1);
-+ }
-+
-+ if (errno != ESRCH) {
-+ LOG(LOG_ERR, "pidfile_check: kill %d failed (%s): %m\n",
-+ pid, pidfile);
-+ return (-1);
-+ }
-+
-+ return (0);
-+}
-+
-+
-+static int pidfile_store(int fd, const char *pidfile, int pid)
-+{
-+ int len;
-+ char buf[20];
-+
-+ if (lseek(fd, 0L, SEEK_SET) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: lseek %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ len = snprintf(buf, sizeof buf - 1, "%d\n", pid);
-+ buf[len] = '\0';
-+
-+ if (write(fd, buf, len) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: write %s failed: %m\n",
-+ pidfile);
-+ return (-1);
-+ }
-+
-+ if (ftruncate(fd, len) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: ftruncate %d failed (%s): %m\n",
-+ len, pidfile);
-+ return (-1);
- }
-
-- return pid_fd;
-+ return (0);
- }
-
-
--void pidfile_write_release(int pid_fd)
-+static void pidfile_close(int fd)
- {
-- FILE *out;
-+ (void)lseek(fd, 0L, SEEK_SET);
-+ (void)lockf(fd, F_ULOCK, 0);
-+ (void)close(fd);
-+}
-
-- if (pid_fd < 0) return;
-
-- if ((out = fdopen(pid_fd, "w")) != NULL) {
-- fprintf(out, "%d\n", getpid());
-- fclose(out);
-+int pidfile_acquire(const char *pidfile)
-+{
-+ int fd, result;
-+ if (!pidfile) return (-1);
-+
-+ if ((fd = pidfile_open(pidfile)) < 0)
-+ return (-1);
-+
-+ if ((result = pidfile_check(fd, pidfile)) == 0)
-+ result = pidfile_store(fd, pidfile, getpid());
-+
-+ pidfile_close(fd);
-+
-+ if (result == 0) {
-+ saved_pidfile = (char *) pidfile;
-+ atexit(pidfile_delete);
- }
-- lockf(pid_fd, F_UNLCK, 0);
-- close(pid_fd);
-+
-+ return (result);
- }
-
-
-+/*
-+ * reassign the pid in a pidfile - used just after a fork so a parent
-+ * can store the pid of its child into the file without any window
-+ * where the pid in the file is a dead process (which might let another
-+ * instance of the program start). Note the parent must use _exit() to
-+ * avoid triggering the unlink scheduled above in pidfile_acquire()
-+ */
-+int pidfile_reassign(const char *pidfile, int pid)
-+{
-+ int fd, result;
-+ if (!pidfile) return (-1);
-+
-+ if ((fd = pidfile_open(pidfile)) < 0)
-+ return (-1);
-
-+ result = pidfile_store(fd, pidfile, pid);
-
-+ pidfile_close(fd);
-+
-+ return (result);
-+}
---- busybox-1.00/networking/udhcp/common.c-dist 2004-05-19 19:18:04.000000000 +1000
-+++ busybox-1.00/networking/udhcp/common.c 2004-10-27 19:58:10.000000000 +1000
-@@ -64,16 +64,34 @@
- #ifdef __uClinux__
- LOG(LOG_ERR, "Cannot background in uclinux (yet)");
- #else /* __uClinux__ */
-- int pid_fd;
-+ int pid, fd;
-
-- /* hold lock during fork. */
-- pid_fd = pidfile_acquire(pidfile);
-- if (daemon(0, 0) == -1) {
-+ /* NOTE: lockf is not inherited by the child after fork */
-+ if ((pid = fork()) < 0) {
- perror("fork");
- exit(1);
- }
-+
-+ if (pid > 0) {
-+ /* parent */
-+ if (pidfile_reassign(pidfile, pid) < 0) {
-+ (void)kill(pid, SIGKILL);
-+ exit(1);
-+ } else
-+ _exit(0);
-+ }
-+
-+ /* child */
-+ (void)chdir("/");
-+ if ((fd = open("/dev/null", O_RDWR)) >= 0) {
-+ (void)dup2(fd, 0);
-+ (void)dup2(fd, 1);
-+ (void)dup2(fd, 2);
-+ (void)close(fd);
-+ }
-+ (void)setsid();
-+
- daemonized++;
-- pidfile_write_release(pid_fd);
- #endif /* __uClinux__ */
- }
-
-@@ -97,14 +115,12 @@
-
- void start_log_and_pid(const char *client_server, const char *pidfile)
- {
-- int pid_fd;
--
- /* Make sure our syslog fd isn't overwritten */
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- pid_fd = pidfile_acquire(pidfile);
-- pidfile_write_release(pid_fd);
-+ if (pidfile_acquire(pidfile) < 0)
-+ exit(1);
-
- /* equivelent of doing a fflush after every \n */
- setlinebuf(stdout);
-@@ -150,8 +166,8 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- pid_fd = pidfile_acquire(pidfile);
-- pidfile_write_release(pid_fd);
-+ if (pidfile_acquire(pidfile) < 0)
-+ exit(1);
-
- /* equivelent of doing a fflush after every \n */
- setlinebuf(stdout);
---- busybox-1.00/networking/udhcp/common.h-dist 2004-05-19 18:29:05.000000000 +1000
-+++ busybox-1.00/networking/udhcp/common.h 2004-10-27 15:10:16.000000000 +1000
-@@ -42,7 +42,6 @@
- long uptime(void);
- void background(const char *pidfile);
- void start_log_and_pid(const char *client_server, const char *pidfile);
--void background(const char *pidfile);
- void udhcp_logging(int level, const char *fmt, ...);
-
- #define LOG(level, str, args...) udhcp_logging(level, str, ## args)
---- busybox-1.00/networking/udhcp/script.c-dist 2004-05-19 17:45:47.000000000 +1000
-+++ busybox-1.00/networking/udhcp/script.c 2004-10-27 15:54:04.000000000 +1000
-@@ -228,6 +228,6 @@
- execle(client_config.script, client_config.script,
- name, NULL, envp);
- LOG(LOG_ERR, "script %s failed: %m", client_config.script);
-- exit(1);
-+ _exit(1);
- }
- }
diff --git a/packages/busybox/busybox-1.01/udhcpscript.patch b/packages/busybox/busybox-1.01/udhcpscript.patch
deleted file mode 100644
index fc21d440cd..0000000000
--- a/packages/busybox/busybox-1.01/udhcpscript.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.00-rc3/examples/udhcp/simple.script~udhcpscript
-+++ busybox-1.00-rc3/examples/udhcp/simple.script
-@@ -17,8 +17,7 @@
- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
-
- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
- :
- done
-
diff --git a/packages/busybox/busybox-1.01/wrt54/defconfig b/packages/busybox/busybox-1.01/wrt54/defconfig
deleted file mode 100644
index 7f1aef4ef9..0000000000
--- a/packages/busybox/busybox-1.01/wrt54/defconfig
+++ /dev/null
@@ -1,476 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="mipsel-uclibc-"
-EXTRA_CFLAGS_OPTIONS="-Os "
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="./_install"
-
-#
-# Archival Utilities
-#
-# CONFIG_AR is not set
-CONFIG_BUNZIP2=y
-# CONFIG_CPIO is not set
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNZIP is not set
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_EXPR=y
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-CONFIG_LENGTH=y
-CONFIG_LN=y
-# CONFIG_LOGNAME is not set
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_MKFIFO=y
-# CONFIG_MKNOD is not set
-CONFIG_MV=y
-# CONFIG_OD is not set
-# CONFIG_PRINTF is not set
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-# CONFIG_SEQ is not set
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-# CONFIG_STTY is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_TEST=y
-
-#
-# test (forced enabled for use with shell)
-#
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_TRUE=y
-# CONFIG_TTY is not set
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-# CONFIG_WATCH is not set
-CONFIG_WC=y
-# CONFIG_WHO is not set
-# CONFIG_WHOAMI is not set
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-# CONFIG_DUMPKMAP is not set
-# CONFIG_GETKEY is not set
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-# CONFIG_READLINK is not set
-CONFIG_RUN_PARTS=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-# CONFIG_FEATURE_FIND_MTIME is not set
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-# CONFIG_FEATURE_FIND_NEWER is not set
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-CONFIG_INIT=y
-CONFIG_FEATURE_USE_INITTAB=y
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-CONFIG_REBOOT=y
-CONFIG_MESG=y
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-# CONFIG_FEATURE_U_W_TMP is not set
-CONFIG_LOGIN=y
-CONFIG_FEATURE_SECURETTY=y
-CONFIG_PASSWD=y
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Common options for adduser, deluser, login, su
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-CONFIG_CROND=y
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-# CONFIG_DC is not set
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-CONFIG_FEATURE_2_4_MODULES=y
-# CONFIG_FEATURE_2_6_MODULES is not set
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-CONFIG_LSMOD=y
-CONFIG_FEATURE_QUERY_MODULE_INTERFACE=y
-# CONFIG_MODPROBE is not set
-CONFIG_RMMOD=y
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_ARPING=y
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_HOSTNAME is not set
-CONFIG_HTTPD=y
-# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
-CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-CONFIG_FEATURE_HTTPD_AUTH_MD5=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
-CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_IP is not set
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-# CONFIG_TELNET is not set
-# CONFIG_TELNETD is not set
-# CONFIG_TFTP is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-CONFIG_UDHCPC=y
-# CONFIG_FEATURE_UDHCP_SYSLOG is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-CONFIG_PS=y
-# CONFIG_RENICE is not set
-CONFIG_TOP=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-CONFIG_SYSCTL=y
-
-#
-# Another Bourne-like Shell
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_PIPE_OPTIMIZATION=y
-CONFIG_FEATURE_BUILTIN_TEST=y
-CONFIG_FEATURE_BUILTIN_ECHO=y
-CONFIG_FEATURE_BUILTIN_PIDOF=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-CONFIG_FEATURE_COMMAND_HISTORY=15
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-# CONFIG_FDISK is not set
-FDISK_SUPPORT_LARGE_DISKS=y
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-# CONFIG_LOSETUP is not set
-# CONFIG_MKSWAP is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_SWAPONOFF is not set
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/busybox-1.01/xargs-double-size.patch b/packages/busybox/busybox-1.01/xargs-double-size.patch
deleted file mode 100644
index 218d6c0d1c..0000000000
--- a/packages/busybox/busybox-1.01/xargs-double-size.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- busybox-1.01/findutils/xargs.c.org 2006-09-19 18:18:17.084592997 +0200
-+++ busybox-1.01/findutils/xargs.c 2006-09-19 18:18:09.820275793 +0200
-@@ -466,8 +466,8 @@
- have it at 1 meg). Things will work fine with a large ARG_MAX but it
- will probably hurt the system more than it needs to; an array of this
- size is allocated. */
-- if (orig_arg_max > 20 * 1024)
-- orig_arg_max = 20 * 1024;
-+ if (orig_arg_max > 40 * 1024)
-+ orig_arg_max = 40 * 1024;
- n_max_chars = orig_arg_max;
- }
- max_chars = xmalloc(n_max_chars);
diff --git a/packages/busybox/busybox-1.2.0/add-getkey-applet.patch b/packages/busybox/busybox-1.2.0/add-getkey-applet.patch
deleted file mode 100644
index a75cf823c7..0000000000
--- a/packages/busybox/busybox-1.2.0/add-getkey-applet.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
-Index: busybox-1.1.0/console-tools/getkey.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.1.0/console-tools/getkey.c 2006-03-14 17:17:28.000000000 +0100
-@@ -0,0 +1,94 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * getkey.c - Michael 'Mickey' Lauer
-+ *
-+ * Version 0.1
-+ *
-+ * A simple keygrapper. Displays a configurable message and waits a dedicated number
-+ * of seconds for a keypress. Sets the exit code accordingly (SUCCESS on keypress).
-+ */
-+#include <stdio.h>
-+#include <fcntl.h>
-+#include <memory.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <sys/types.h>
-+#include <errno.h>
-+#include <sys/ioctl.h>
-+#include <sys/kd.h>
-+#include "busybox.h"
-+
-+extern int getkey_main(int argc, char **argv)
-+{
-+ int status = EXIT_FAILURE;
-+
-+ if ( argc < 2 )
-+ {
-+ bb_show_usage();
-+ }
-+
-+ /*
-+ * If no terminal is attached it is quite useless
-+ * to treat it like one.
-+ */
-+ if( !isatty(STDIN_FILENO) )
-+ {
-+ goto error_hard;
-+ }
-+
-+ //bb_printf( "DEBUG: time = '%s'\n", argv[1] );
-+ //bb_printf( "DEBUG: mesg = '%s'\n", argv[2] );
-+
-+ struct termios orig;
-+ struct termios attr;
-+
-+ if ( tcgetattr(STDIN_FILENO, &orig) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ attr = orig;
-+ attr.c_cc[VMIN] = 0;
-+ attr.c_cc[VTIME] = 0;
-+ attr.c_iflag |= INLCR;
-+ attr.c_oflag |= OPOST|ONLCR;
-+ attr.c_cflag &= ~PARENB;
-+ attr.c_lflag &= ~(ICANON/*|ECHO*/);
-+ if ( tcsetattr(STDIN_FILENO,TCSANOW,&attr) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ fd_set rfds;
-+ struct timeval tv;
-+ int retval;
-+
-+ FD_ZERO(&rfds);
-+ FD_SET(0, &rfds);
-+
-+ tv.tv_sec = atoi( argv[1] );
-+ tv.tv_usec = 0;
-+
-+ if ( argc == 3 )
-+ {
-+ bb_printf( argv[2], tv.tv_sec );
-+ bb_printf( "\n" );
-+ fflush(stdout);
-+ }
-+ retval = select(1, &rfds, NULL, NULL, &tv);
-+ if (retval > 0)
-+ {
-+ status = EXIT_SUCCESS;
-+ }
-+
-+ if (tcsetattr(STDIN_FILENO,TCSANOW,&orig) == -1 )
-+ {
-+ goto error_hard;
-+ }
-+
-+ return status;
-+
-+error_hard :
-+ return EXIT_FAILURE;
-+};
-+
-Index: busybox-1.1.0/console-tools/Makefile.in
-===================================================================
---- busybox-1.1.0.orig/console-tools/Makefile.in 2006-01-11 06:43:57.000000000 +0100
-+++ busybox-1.1.0/console-tools/Makefile.in 2006-03-14 17:18:18.000000000 +0100
-@@ -21,6 +21,7 @@
- CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o
- CONSOLETOOLS_DIR-$(CONFIG_RESET) += reset.o
- CONSOLETOOLS_DIR-$(CONFIG_SETKEYCODES) += setkeycodes.o
-+CONSOLETOOLS_DIR-$(CONFIG_GETKEY) += getkey.o
-
- libraries-y+=$(CONSOLETOOLS_DIR)$(CONSOLETOOLS_AR)
-
-Index: busybox-1.1.0/console-tools/Config.in
-===================================================================
---- busybox-1.1.0.orig/console-tools/Config.in 2006-01-11 06:43:57.000000000 +0100
-+++ busybox-1.1.0/console-tools/Config.in 2006-03-14 17:17:28.000000000 +0100
-@@ -31,6 +31,14 @@
- This program dumps the kernel's keyboard translation table to
- stdout, in binary format. You can then use loadkmap to load it.
-
-+config CONFIG_GETKEY
-+ bool "getkey"
-+ default n
-+ help
-+ This program displays a configurable message and waits
-+ a dedicated number of seconds for a keypress. It sets
-+ the exit code accordingly, i.e. SUCCESS if there was a keypress.
-+
- config CONFIG_LOADFONT
- bool "loadfont"
- default n
-Index: busybox-1.1.0/include/applets.h
-===================================================================
---- busybox-1.1.0.orig/include/applets.h 2006-01-11 06:44:14.000000000 +0100
-+++ busybox-1.1.0/include/applets.h 2006-03-14 17:17:28.000000000 +0100
-@@ -261,6 +261,9 @@
- #ifdef CONFIG_FUSER
- APPLET(fuser, fuser_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
- #endif
-+#ifdef CONFIG_GETKEY
-+ APPLET(getkey, getkey_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
-+#endif
- #ifdef CONFIG_GETOPT
- APPLET(getopt, getopt_main, _BB_DIR_BIN, _BB_SUID_NEVER)
- #endif
-Index: busybox-1.1.0/include/usage.h
-===================================================================
---- busybox-1.1.0.orig/include/usage.h 2006-01-11 06:44:14.000000000 +0100
-+++ busybox-1.1.0/include/usage.h 2006-03-14 17:19:11.000000000 +0100
-@@ -841,6 +841,13 @@
- "\t-p, --password Password to be used\n" \
- "\t-P, --port Port number to be used"
-
-+#define getkey_trivial_usage \
-+ "time [message]"
-+#define getkey_full_usage \
-+ "Display a message and wait for a keypress."
-+#define getkey_example_usage \
-+ "$ getkey 5 'Press a key within %d seconds to interrupt autoboot.'"
-+
- #define fuser_trivial_usage \
- "[options] file OR port/proto"
- #define fuser_full_usage \
diff --git a/packages/busybox/busybox-1.2.0/angstrom/defconfig b/packages/busybox/busybox-1.2.0/angstrom/defconfig
deleted file mode 100644
index e5f48ec64f..0000000000
--- a/packages/busybox/busybox-1.2.0/angstrom/defconfig
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-# CONFIG_NOHUP is not set
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.2.0/below.patch b/packages/busybox/busybox-1.2.0/below.patch
deleted file mode 100644
index 95e8376e46..0000000000
--- a/packages/busybox/busybox-1.2.0/below.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Index: busybox-1.1.0/modutils/modprobe.c
-===================================================================
---- busybox-1.1.0.orig/modutils/modprobe.c 2006-01-11 06:43:56.000000000 +0100
-+++ busybox-1.1.0/modutils/modprobe.c 2006-03-14 16:36:54.000000000 +0100
-@@ -509,6 +509,41 @@
- }
- }
- }
-+ else if ((strncmp (buffer, "below", 5) == 0) && isspace (buffer[5])) {
-+ char *mod, *deps;
-+ if (parse_tag_value (buffer + 6, &mod, &deps)) {
-+ struct dep_t *dt;
-+
-+ for (dt = first; dt; dt = dt->m_next) {
-+ if (strcmp (dt->m_name, mod) == 0)
-+ break;
-+ }
-+ if (dt) {
-+ char *pp;
-+ char *name;
-+
-+ pp = name = deps;
-+
-+ for (;;) {
-+ while (*pp != 0 && !isspace (*pp))
-+ pp++;
-+ if (isspace (*pp))
-+ *(pp++) = 0;
-+
-+ dt->m_depcnt++;
-+ dt->m_deparr = (char **) xrealloc (dt->m_deparr,
-+ sizeof (char *) * dt->m_depcnt);
-+ dt->m_deparr[dt->m_depcnt - 1] = bb_xstrdup (name);
-+
-+ while (isspace (*pp))
-+ pp++;
-+ name = pp;
-+ if (*pp == 0)
-+ break;
-+ }
-+ }
-+ }
-+ }
- }
- }
- close ( fd );
diff --git a/packages/busybox/busybox-1.2.0/defconfig b/packages/busybox/busybox-1.2.0/defconfig
deleted file mode 100644
index 981b7d7c71..0000000000
--- a/packages/busybox/busybox-1.2.0/defconfig
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-# CONFIG_NOHUP is not set
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.2.0/dhcp-hostname.patch b/packages/busybox/busybox-1.2.0/dhcp-hostname.patch
deleted file mode 100644
index e0adea662e..0000000000
--- a/packages/busybox/busybox-1.2.0/dhcp-hostname.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.01/networking/udhcp/dhcpc.c~dhcp-hostname
-+++ busybox-1.01/networking/udhcp/dhcpc.c
-@@ -193,6 +193,7 @@
- int max_fd;
- int sig;
- int no_clientid = 0;
-+ char hostbuf[256]; /* SUSv2: hostnames are <= 255 bytes */
-
- static const struct option arg_options[] = {
- {"clientid", required_argument, 0, 'c'},
-@@ -211,6 +212,14 @@
- {0, 0, 0, 0}
- };
-
-+ if (gethostname (hostbuf, sizeof (hostbuf)) == 0) {
-+ len = strlen (hostbuf);
-+ client_config.hostname = xmalloc (len + 2);
-+ client_config.hostname[OPT_CODE] = DHCP_HOST_NAME;
-+ client_config.hostname[OPT_LEN] = len;
-+ strncpy(client_config.hostname + 2, hostbuf, len);
-+ }
-+
- /* get options */
- while (1) {
- int option_index = 0;
diff --git a/packages/busybox/busybox-1.2.0/dhcpretrytime.patch b/packages/busybox/busybox-1.2.0/dhcpretrytime.patch
deleted file mode 100644
index 893e346acf..0000000000
--- a/packages/busybox/busybox-1.2.0/dhcpretrytime.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
-Index: busybox-1.1.0/networking/udhcp/dhcpc.c
-===================================================================
---- busybox-1.1.0.orig/networking/udhcp/dhcpc.c 2006-03-14 17:19:31.000000000 +0100
-+++ busybox-1.1.0/networking/udhcp/dhcpc.c 2006-03-14 17:20:45.000000000 +0100
-@@ -48,6 +48,7 @@
- static unsigned long requested_ip; /* = 0 */
- static unsigned long server_addr;
- static unsigned long timeout;
-+static unsigned long retrytime = 60;
- static int packet_num; /* = 0 */
- static int fd = -1;
-
-@@ -95,6 +96,7 @@
- " -r, --request=IP IP address to request (default: none)\n"
- " -s, --script=file Run file at dhcp events (default:\n"
- " " DEFAULT_SCRIPT ")\n"
-+" -t, --retrytime time to retry DHCP request (default 60s)\n")
- " -v, --version Display version\n"
- );
- exit(0);
-@@ -214,6 +216,7 @@
- {"quit", no_argument, 0, 'q'},
- {"request", required_argument, 0, 'r'},
- {"script", required_argument, 0, 's'},
-+ {"retrytime", required_argument, 0, 't'},
- {"version", no_argument, 0, 'v'},
- {0, 0, 0, 0}
- };
-@@ -229,7 +232,7 @@
- /* get options */
- while (1) {
- int option_index = 0;
-- c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:v", arg_options, &option_index);
-+ c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:t:v", arg_options, &option_index);
- if (c == -1) break;
-
- switch (c) {
-@@ -305,6 +308,9 @@
- case 's':
- client_config.script = optarg;
- break;
-+ case 't':
-+ retrytime = atol(optarg);
-+ break;
- case 'v':
- printf("udhcpcd, version %s\n\n", VERSION);
- return 0;
-@@ -394,7 +400,7 @@
- }
- /* wait to try again */
- packet_num = 0;
-- timeout = now + 60;
-+ timeout = now + retrytime;
- }
- break;
- case RENEW_REQUESTED:
-Index: busybox-1.1.0/networking/ifupdown.c
-===================================================================
---- busybox-1.1.0.orig/networking/ifupdown.c 2006-01-11 06:43:51.000000000 +0100
-+++ busybox-1.1.0/networking/ifupdown.c 2006-03-14 17:19:41.000000000 +0100
-@@ -506,7 +506,7 @@
- static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
- {
- if (execable("/sbin/udhcpc")) {
-- return( execute("udhcpc -n -p /var/run/udhcpc.%iface%.pid -i "
-+ return( execute("udhcpc -b -p /var/run/udhcpc.%iface%.pid -i "
- "%iface% [[-H %hostname%]] [[-c %clientid%]]", ifd, exec));
- } else if (execable("/sbin/pump")) {
- return( execute("pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]]", ifd, exec));
-@@ -526,8 +526,8 @@
- /* SIGUSR2 forces udhcpc to release the current lease and go inactive,
- * and SIGTERM causes udhcpc to exit. Signals are queued and processed
- * sequentially so we don't need to sleep */
-- result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
-- result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
-+ result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
-+ result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
- } else if (execable("/sbin/pump")) {
- result = execute("pump -i %iface% -k", ifd, exec);
- } else if (execable("/sbin/dhclient")) {
diff --git a/packages/busybox/busybox-1.2.0/fbset.patch b/packages/busybox/busybox-1.2.0/fbset.patch
deleted file mode 100644
index d0609ce6f7..0000000000
--- a/packages/busybox/busybox-1.2.0/fbset.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- busybox/util-linux/fbset.c~ 2004-07-03 16:24:23.000000000 +0100
-+++ busybox/util-linux/fbset.c 2004-12-30 20:09:26.000000000 +0000
-@@ -337,7 +337,7 @@
- {
- struct fb_var_screeninfo var, varset;
- int fh, i;
-- char *fbdev = DEFAULTFBDEV;
-+ char *fbdev = NULL;
- char *modefile = DEFAULTFBMODE;
- char *thisarg, *mode = NULL;
-
-@@ -404,7 +404,12 @@
- }
- }
-
-+ if (fbdev == NULL)
-+ fbdev = DEFAULTFBDEV;
- if ((fh = open(fbdev, O_RDONLY)) < 0)
-+#ifdef CONFIG_FEATURE_DEVFS
-+ if ((fh = open("/dev/fb0", O_RDONLY)) < 0)
-+#endif
- bb_perror_msg_and_die("fbset(open)");
- if (ioctl(fh, FBIOGET_VSCREENINFO, &var))
- bb_perror_msg_and_die("fbset(ioctl)");
diff --git a/packages/busybox/busybox-1.2.0/hdparm_M.patch b/packages/busybox/busybox-1.2.0/hdparm_M.patch
deleted file mode 100644
index 9adcd36f92..0000000000
--- a/packages/busybox/busybox-1.2.0/hdparm_M.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Index: busybox-1.1.0/miscutils/hdparm.c
-===================================================================
---- busybox-1.1.0.orig/miscutils/hdparm.c 2006-01-11 06:44:13.000000000 +0100
-+++ busybox-1.1.0/miscutils/hdparm.c 2006-03-14 17:22:22.000000000 +0100
-@@ -1255,6 +1255,7 @@
- static unsigned long set_sleepnow, get_sleepnow;
- static unsigned long get_powermode;
- static unsigned long set_apmmode, get_apmmode, apmmode;
-+static unsigned long set_acoustic = 0, get_acoustic = 0, acoustic = 0;
- #endif
- #ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
- static int get_IDentity;
-@@ -2124,6 +2125,20 @@
- }
- bb_ioctl(fd, HDIO_DRIVE_CMD, &args,"HDIO_DRIVE_CMD");
- }
-+ if (set_acoustic)
-+ {
-+ no_scsi();
-+ acoustic=check_if_min_and_set_val(acoustic,0);
-+ acoustic=check_if_maj_and_set_val(acoustic,254);
-+ if_printf(get_acoustic," setting AAM level to 0x%02lX (%ld)\n", acoustic, acoustic);
-+ bb_ioctl(fd, HDIO_SET_ACOUSTIC, (int*)acoustic,"HDIO_SET_ACOUSTIC");
-+ }
-+ if (get_acoustic)
-+ {
-+ no_scsi();
-+ bb_ioctl(fd, HDIO_GET_ACOUSTIC, (unsigned long*)&parm,"HDIO_GET_ACOUSTIC");
-+ printf(" acoustic = %2ld (128=quiet ... 254=fast)\n", parm);
-+ }
- if (set_wcache)
- {
- #ifdef DO_FLUSHCACHE
-@@ -2832,6 +2847,13 @@
- p = *argv++, --argc;
- p=GET_NUMBER(p,&set_readahead,&Xreadahead);
- break;
-+ case 'M':
-+ get_acoustic = noisy;
-+ noisy = 1;
-+ if (!*p && argc && isalnum(**argv))
-+ p = *argv++, --argc;
-+ p=GET_NUMBER(p,&set_acoustic,&acoustic);
-+ break;
- case 'B':
- get_apmmode = noisy;
- noisy = 1;
diff --git a/packages/busybox/busybox-1.2.0/ifupdown-spurious-environ.patch b/packages/busybox/busybox-1.2.0/ifupdown-spurious-environ.patch
deleted file mode 100644
index 8753315f2c..0000000000
--- a/packages/busybox/busybox-1.2.0/ifupdown-spurious-environ.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- busybox-1.00/networking/ifupdown.c.old 2005-06-11 19:51:59.000000000 +0100
-+++ busybox-1.00/networking/ifupdown.c 2005-06-11 19:52:19.000000000 +0100
-@@ -148,6 +148,9 @@
- struct mapping_defn_t *mappings;
- };
-
-+/* XXX */
-+#define environ local_environ
-+
- static char no_act = 0;
- static char verbose = 0;
- static char **environ = NULL;
diff --git a/packages/busybox/busybox-1.2.0/iproute-flush-cache.patch b/packages/busybox/busybox-1.2.0/iproute-flush-cache.patch
deleted file mode 100644
index f8becc3390..0000000000
--- a/packages/busybox/busybox-1.2.0/iproute-flush-cache.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: networking/libiproute/iproute.c
-===================================================================
-RCS file: /var/cvs/busybox/networking/libiproute/iproute.c,v
-retrieving revision 1.14
-diff -u -r1.14 iproute.c
---- networking/libiproute/iproute.c 11 Aug 2004 08:10:58 -0000 1.14
-+++ networking/libiproute/iproute.c 30 Nov 2004 20:43:44 -0000
-@@ -537,6 +537,15 @@
- } else if (matches(*argv, "match") == 0) {
- NEXT_ARG();
- get_prefix(&filter.mdst, *argv, do_ipv6);
-+ } else if (matches(*argv, "table") == 0) {
-+ NEXT_ARG();
-+ if (matches(*argv, "cache") == 0) {
-+ filter.tb = -1;
-+ } else if (matches(*argv, "main") != 0) {
-+ invarg("invalid \"table\"", *argv);
-+ }
-+ } else if (matches(*argv, "cache") == 0) {
-+ filter.tb = -1;
- } else {
- if (matches(*argv, "exact") == 0) {
- NEXT_ARG();
diff --git a/packages/busybox/busybox-1.2.0/mnci/defconfig b/packages/busybox/busybox-1.2.0/mnci/defconfig
deleted file mode 100644
index ccf9e279a2..0000000000
--- a/packages/busybox/busybox-1.2.0/mnci/defconfig
+++ /dev/null
@@ -1,643 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_SHOW_USAGE is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-# CONFIG_LFS is not set
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-linux-"
-# CONFIG_BUILD_AT_ONCE is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-CONFIG_CMP=y
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-# CONFIG_DIFF is not set
-# CONFIG_FEATURE_DIFF_BINARY is not set
-# CONFIG_FEATURE_DIFF_DIR is not set
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-# CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-# CONFIG_LOGNAME is not set
-CONFIG_LS=y
-# CONFIG_FEATURE_LS_FILETYPES is not set
-# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-# CONFIG_FEATURE_LS_COLOR is not set
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-# CONFIG_FEATURE_SORT_BIG is not set
-CONFIG_STAT=y
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-# CONFIG_FEATURE_FANCY_TAIL is not set
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-# CONFIG_FEATURE_TR_CLASSES is not set
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-# CONFIG_WATCH is not set
-CONFIG_WC=y
-# CONFIG_WHO is not set
-# CONFIG_WHOAMI is not set
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-# CONFIG_FEATURE_GREP_FGREP_ALIAS is not set
-# CONFIG_FEATURE_GREP_CONTEXT is not set
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-CONFIG_ADDGROUP=y
-CONFIG_DELGROUP=y
-CONFIG_ADDUSER=y
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-# CONFIG_FEATURE_UTMP is not set
-# CONFIG_FEATURE_WTMP is not set
-CONFIG_LOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_SU=y
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-# CONFIG_CHATTR is not set
-# CONFIG_E2FSCK is not set
-# CONFIG_FSCK is not set
-# CONFIG_LSATTR is not set
-# CONFIG_MKE2FS is not set
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FEATURE_FBSET_FANCY is not set
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-# CONFIG_FDISK is not set
-# FDISK_SUPPORT_LARGE_DISKS is not set
-# CONFIG_FEATURE_FDISK_WRITABLE is not set
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_FEATURE_MINIX2 is not set
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
-# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
-# CONFIG_IPCRM is not set
-CONFIG_IPCS=y
-# CONFIG_LOSETUP is not set
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-# CONFIG_FEATURE_MDEV_EXEC is not set
-# CONFIG_MKSWAP is not set
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-# CONFIG_SWAPONOFF is not set
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-CONFIG_ADJTIMEX=y
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-CONFIG_FEATURE_DEVFS=y
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-# CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_FEATURE_IPV6 is not set
-CONFIG_ARPING=y
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-# CONFIG_IP is not set
-# CONFIG_FEATURE_IP_ADDRESS is not set
-# CONFIG_FEATURE_IP_LINK is not set
-# CONFIG_FEATURE_IP_ROUTE is not set
-# CONFIG_FEATURE_IP_TUNNEL is not set
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-# CONFIG_PING6 is not set
-# CONFIG_FEATURE_FANCY_PING6 is not set
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-# CONFIG_TFTP is not set
-# CONFIG_FEATURE_TFTP_GET is not set
-# CONFIG_FEATURE_TFTP_PUT is not set
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-# CONFIG_APP_UDHCPD is not set
-CONFIG_APP_UDHCPC=y
-# CONFIG_APP_DUMPLEASES is not set
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-# CONFIG_FEATURE_WGET_STATUSBAR is not set
-# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
-# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
-# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
-CONFIG_ZCIP=y
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-# CONFIG_FUSER is not set
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-# CONFIG_UPTIME is not set
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_ASH_EXPAND_PRMT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=15
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.2.0/mount-all-type.patch b/packages/busybox/busybox-1.2.0/mount-all-type.patch
deleted file mode 100644
index 476094a804..0000000000
--- a/packages/busybox/busybox-1.2.0/mount-all-type.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- busybox-1.00/.pc/mount-all-type.patch/util-linux/mount.c 2004-08-02 17:14:02.000000000 -0700
-+++ busybox-1.00/util-linux/mount.c 2005-05-13 00:17:19.054232796 -0700
-@@ -364,6 +364,56 @@
- exit(EXIT_SUCCESS);
- }
-
-+/* Does this file system type, from /etc/fstab, match the given
-+ * -t option value?
-+ */
-+static int match_fs(const char *option, const char *type)
-+{
-+ const int len = strlen(type);
-+ const int no = option[0] == 'n' && option[1] == 'o';
-+ const char *optp = option;
-+
-+ if (len > 0) do {
-+ const char *match = strstr(optp, type);
-+
-+ if (match == NULL) {
-+ /* No match, but if the option string starts 'no' no match
-+ * means yes.
-+ */
-+ return no;
-+ }
-+
-+ /* Match, may be partial, check for end-of-type in option string. */
-+ if (match[len] == 0 || match[len] == ',') {
-+ /* Ok, check for type or notype. */
-+ if (match == option) {
-+ /* Exact match at start (can't be 'no') */
-+ return 1;
-+ }
-+ if (match > option+1) {
-+ if (match[-1] == ',') {
-+ /* Exact match in middle, might be 'no' */
-+ return !no;
-+ }
-+ if (match == option+2 && no) {
-+ /* Exact match to 'notype' at start. */
-+ return 0;
-+ }
-+ if (match > option+2 && match[-3] == ',' &&
-+ match[-2] == 'n' && match[-1] == 'o') {
-+ return 0;
-+ }
-+ }
-+ }
-+
-+ /* Look for another match. */
-+ optp = match+1;
-+ } while (1);
-+
-+ /* zero length type in fstab (impossible?), don't match it. */
-+ return 0;
-+}
-+
- extern int mount_main(int argc, char **argv)
- {
- struct stat statbuf;
-@@ -371,6 +421,7 @@
- char *extra_opts;
- int flags = 0;
- char *filesystemType = "auto";
-+ char *filesystemOption = 0;
- int got_filesystemType = 0;
- char *device = xmalloc(PATH_MAX);
- char *directory = xmalloc(PATH_MAX);
-@@ -393,6 +444,7 @@
- break;
- case 't':
- filesystemType = optarg;
-+ filesystemOption = optarg;
- got_filesystemType = 1;
- break;
- case 'w':
-@@ -460,6 +512,8 @@
-
- strcpy(device, m->mnt_fsname);
- strcpy(directory, m->mnt_dir);
-+ if (all && filesystemOption != 0 && !match_fs(filesystemOption, m->mnt_type))
-+ continue;
- filesystemType = bb_xstrdup(m->mnt_type);
- singlemount:
- extra_opts = string_flags;
diff --git a/packages/busybox/busybox-1.2.0/nylon/defconfig b/packages/busybox/busybox-1.2.0/nylon/defconfig
deleted file mode 100644
index ee3373a62c..0000000000
--- a/packages/busybox/busybox-1.2.0/nylon/defconfig
+++ /dev/null
@@ -1,568 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-# CONFIG_EJECT is not set
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-# CONFIG_BUILD_AT_ONCE is not set
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-# CONFIG_FEATURE_TAR_BZIP2 is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_UNCOMPRESS=y
-# CONFIG_UNLZMA is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Common options for dpkg and dpkg_deb
-#
-CONFIG_FEATURE_DEB_TAR_GZ=y
-CONFIG_FEATURE_DEB_TAR_BZ2=y
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_DIFF=y
-# CONFIG_FEATURE_DIFF_BINARY is not set
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-# CONFIG_COMM is not set
-# CONFIG_CKSUM is not set
-# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_CMP=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-# CONFIG_FEATURE_SORT_BIG is not set
-CONFIG_STAT=y
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-# CONFIG_TEST is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-# CONFIG_FEATURE_TR_CLASSES is not set
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-# CONFIG_LOADFONT is not set
-CONFIG_LOADKMAP=y
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=n
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-# CONFIG_CHATTR is not set
-# CONFIG_E2FSCK is not set
-# CONFIG_FSCK is not set
-# CONFIG_LSATTR is not set
-# CONFIG_MKE2FS is not set
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-CONFIG_CROND=y
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-# CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-CONFIG_WATCHDOG=y
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_ARPING=y
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-CONFIG_HTTPD=y
-CONFIG_FEATURE_HTTPD_WITHOUT_INETD=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
-CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-CONFIG_FEATURE_HTTPD_AUTH_MD5=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-CONFIG_FEATURE_HTTPD_SETUID=y
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
-CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_INETD=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
-# CONFIG_FEATURE_INETD_RPC is not set
-# CONFIG_IP is not set
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-CONFIG_NAMEIF=y
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
-CONFIG_ZCIP=y
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-# CONFIG_FUSER is not set
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-# CONFIG_FEATURE_PS_WIDE is not set
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-CONFIG_SYSCTL=y
-
-#
-# Another Bourne-like Shell
-#
-# CONFIG_FEATURE_SH_IS_ASH is not set
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-CONFIG_FEATURE_SH_IS_NONE=y
-# CONFIG_ASH is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-# CONFIG_IPCRM is not set
-CONFIG_IPCS=y
-CONFIG_LOSETUP=y
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-# CONFIG_MORE is not set
-CONFIG_PIVOT_ROOT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-# CONFIG_RDATE is not set
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_MOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-CONFIG_DEBUG_YANK_SUSv2=y
diff --git a/packages/busybox/busybox-1.2.0/openslug/udhcpscript.patch b/packages/busybox/busybox-1.2.0/openslug/udhcpscript.patch
deleted file mode 100644
index 010f64a53f..0000000000
--- a/packages/busybox/busybox-1.2.0/openslug/udhcpscript.patch
+++ /dev/null
@@ -1,133 +0,0 @@
---- busybox-1.00/.pc/udhcpscript.patch/examples/udhcp/simple.script 2004-10-13 00:18:05.000000000 -0700
-+++ busybox-1.00/examples/udhcp/simple.script 2005-06-05 15:08:28.432605118 -0700
-@@ -1,40 +1,101 @@
- #!/bin/sh
-+# openslug UDHCP client script
-+# this must set the HW address (MAC) on the interface
-+#
-+. /etc/default/functions
-
--# udhcpc script edited by Tim Riker <Tim@Rikers.org>
-
--[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
-+echodns(){
-+ local dns
-+ if test $# -gt 0
-+ then
-+ for dns in "$@"
-+ do
-+ echo "nameserver $dns"
-+ done
-+ fi
-+}
-+
-+# Output the correct contents for resolv.conf
-+mkresolv() {
-+ test -n "$domain" && echo "search $domain"
-+ echodns $dns
-+}
-+
-+# checksum of a file (or stdin if -)
-+md5strm() {
-+ md5sum $1 2>/dev/null | sed -n 's/^\([0-9A-Za-z]*\).*$/\1/p'
-+}
-+
-+bind() {
-+ local B N metric i olddomain
-+ B=
-+ test -n "$broadcast" && B="broadcast $broadcast"
-+ N=
-+ test -n "$subnet" && N="netmask $subnet"
-+ ifconfig "$interface" "$ip" $B $N up
-+
-+ # If given router information delete the old information and
-+ # enter new stuff, routers get metrics incremented by 1
-+ # between each (this is somewhat arbitrary)
-+ if test -n "$router"
-+ then
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null
-+ do
-+ :
-+ done
-
--RESOLV_CONF="/etc/resolv.conf"
--[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
--[ -n "$subnet" ] && NETMASK="netmask $subnet"
-+ metric=0
-+ for i in $router
-+ do
-+ route add default gw "$i" dev "$interface" metric $((metric++))
-+ done
-+ fi
-+
-+ olddomain=
-+ test -r /etc/defaultdomain && olddomain="$(cat /etc/defaultdomain)"
-+ if test -n "$domain" -a "$domain" != "$olddomain"
-+ then
-+ echo "$domain" >/etc/defaultdomain
-+ # and update the kernel view too
-+ echo "$domain" >/proc/sys/kernel/domainname
-+ fi
-+
-+ # Update /etc/resolv.conf to reflect domain and dns information,
-+ # this always clears resolv.conf if none is given
-+ md5old="$(md5strm /etc/resolv.conf)"
-+ md5new="$(mkresolv | md5strm -)"
-+ test "$md5old" != "$md5new" && mkresolv >/etc/resolv.conf
-+}
-
- case "$1" in
-- deconfig)
-- /sbin/ifconfig $interface 0.0.0.0
-- ;;
--
-- renew|bound)
-- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
--
-- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-- :
-- done
--
-- metric=0
-- for i in $router ; do
-- route add default gw $i dev $interface metric $((metric++))
-- done
-+deconfig)
-+ # Bring the interface up (without inet at this point)
-+ ifconfig "$interface" up;;
-+
-+renew|bound)
-+ bind;;
-+
-+leasefail)
-+ # Pull the values from the config data if (only only if) this
-+ # is the config interface
-+ if test "$interface" = "$(config iface)"
-+ then
-+ ip="$(config ip)"
-+ if test -n "$ip"
-+ then
-+ router="$(config gateway)"
-+ subnet="$(config netmask)"
-+ broadcast="$(config broadcast)"
-+ domain="$(config domain)"
-+ dns="$(config dns)"
-+
-+ bind
- fi
-+ fi;;
-
-- echo -n > $RESOLV_CONF
-- [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
-- for i in $dns ; do
-- echo adding dns $i
-- echo nameserver $i >> $RESOLV_CONF
-- done
-- ;;
-+*) echo "udhcpc: $*: unknown command" >&2
-+ exit 1;;
- esac
-
- exit 0
diff --git a/packages/busybox/busybox-1.2.0/readlink.patch b/packages/busybox/busybox-1.2.0/readlink.patch
deleted file mode 100644
index 0c5431085a..0000000000
--- a/packages/busybox/busybox-1.2.0/readlink.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-diff -p -u -r1.7 Config.in
---- busybox-1.00/debianutils/Config.in 15 Mar 2004 08:28:24 -0000 1.7
-+++ busybox-1.00-patched/debianutils/Config.in 16 Nov 2004 11:46:41 -0000
-@@ -24,6 +24,13 @@ config CONFIG_READLINK
- This program reads a symbolic link and returns the name
- of the file it points to
-
-+config CONFIG_FEATURE_READLINK_FOLLOW
-+ bool " Enable canonicalization by following all symlinks (-f)"
-+ default n
-+ depends on CONFIG_READLINK
-+ help
-+ Enable the readlink option (-f).
-+
- config CONFIG_RUN_PARTS
- bool "run-parts"
- default n
-diff -p -u -r1.2 readlink.c
---- busybox-1.00/debianutils/readlink.c 19 Mar 2003 09:11:41 -0000 1.2
-+++ busybox-1.00-patched/debianutils/readlink.c 16 Nov 2004 11:46:41 -0000
-@@ -23,18 +23,38 @@
- #include <errno.h>
- #include <unistd.h>
- #include <stdlib.h>
-+#include <getopt.h>
- #include "busybox.h"
-
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+# define READLINK_FOLLOW "f"
-+# define READLINK_FLAG_f (1 << 0)
-+#else
-+# define READLINK_FOLLOW ""
-+#endif
-+
-+static const char readlink_options[] = READLINK_FOLLOW;
-+
- int readlink_main(int argc, char **argv)
- {
- char *buf = NULL;
-+ unsigned long opt = bb_getopt_ulflags(argc, argv, readlink_options);
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+ RESERVE_CONFIG_BUFFER(resolved_path, PATH_MAX);
-+#endif
-
- /* no options, no getopt */
-
-- if (argc != 2)
-+ if (optind + 1 != argc)
- bb_show_usage();
-
-- buf = xreadlink(argv[1]);
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+ if (opt & READLINK_FLAG_f) {
-+ buf = realpath(argv[optind], resolved_path);
-+ } else
-+#endif
-+ buf = xreadlink(argv[optind]);
-+
- if (!buf)
- return EXIT_FAILURE;
- puts(buf);
-diff -p -u -r1.222 usage.h
---- busybox-1.00/include/usage.h 14 Sep 2004 16:23:56 -0000 1.222
-+++ busybox-1.00-patched/include/usage.h 16 Nov 2004 11:46:42 -0000
-@@ -1985,10 +1985,18 @@
- "\t-s\tSet the system date and time (default).\n" \
- "\t-p\tPrint the date and time."
-
-+#ifdef CONFIG_FEATURE_READLINK_FOLLOW
-+#define USAGE_READLINK_FOLLOW(a) a
-+#else
-+#define USAGE_READLINK_FOLLOW(a)
-+#endif
-+
- #define readlink_trivial_usage \
-- ""
-+ USAGE_READLINK_FOLLOW("[-f] ") "FILE"
- #define readlink_full_usage \
-- "Displays the value of a symbolic link."
-+ "Displays the value of a symbolic link." \
-+ USAGE_READLINK_FOLLOW("\n\nOptions:\n" \
-+ "\t-f\tcanonicalize by following all symlinks")
-
- #define realpath_trivial_usage \
- "pathname ..."
diff --git a/packages/busybox/busybox-1.2.0/rmmod.patch b/packages/busybox/busybox-1.2.0/rmmod.patch
deleted file mode 100644
index 20770e0dc4..0000000000
--- a/packages/busybox/busybox-1.2.0/rmmod.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Index: busybox-1.1.0/modutils/rmmod.c
-===================================================================
---- busybox-1.1.0.orig/modutils/rmmod.c 2006-01-11 06:43:56.000000000 +0100
-+++ busybox-1.1.0/modutils/rmmod.c 2006-03-14 16:42:14.000000000 +0100
-@@ -29,6 +29,7 @@
- #include <string.h>
- #include <sys/utsname.h>
- #include <sys/syscall.h>
-+#include <sys/utsname.h>
- #include "busybox.h"
-
- #ifdef CONFIG_FEATURE_2_6_MODULES
-@@ -64,6 +65,16 @@
- but must get */
- size_t bufsize = sizeof(bb_common_bufsiz1);
- #endif
-+#ifdef CONFIG_FEATURE_2_6_MODULES
-+ int k_version = 0;
-+ struct utsname myuname;
-+
-+ if (uname(&myuname) == 0) {
-+ if (myuname.release[0] == '2') {
-+ k_version = myuname.release[2] - '0';
-+ }
-+ }
-+#endif
-
- /* Parse command line. */
- n = bb_getopt_ulflags(argc, argv, "wfa");
-@@ -109,6 +120,10 @@
- afterslash++;
- module_name = alloca(strlen(afterslash) + 1);
- filename2modname(module_name, afterslash);
-+ if (k_version != 4)
-+ filename2modname(module_name, afterslash);
-+ else
-+ strcpy(module_name, afterslash);
- #else
- #define module_name argv[n]
- #endif
diff --git a/packages/busybox/busybox-1.2.0/udhcppidfile-breakage.patch b/packages/busybox/busybox-1.2.0/udhcppidfile-breakage.patch
deleted file mode 100644
index 031274908b..0000000000
--- a/packages/busybox/busybox-1.2.0/udhcppidfile-breakage.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- busybox-1.00/networking/udhcp/common.c~udhcppidfile2
-+++ busybox-1.00/networking/udhcp/common.c
-@@ -74,7 +74,7 @@
-
- if (pid > 0) {
- /* parent */
-- if (pidfile_reassign(pidfile, pid) < 0) {
-+ if (pidfile != NULL && pidfile_reassign(pidfile, pid) < 0) {
- (void)kill(pid, SIGKILL);
- exit(1);
- } else
-@@ -119,7 +119,7 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- if (pidfile_acquire(pidfile) < 0)
-+ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
- exit(1);
-
- /* equivelent of doing a fflush after every \n */
-@@ -166,7 +166,7 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- if (pidfile_acquire(pidfile) < 0)
-+ if (pidfile != NULL && pidfile_acquire(pidfile) < 0)
- exit(1);
-
- /* equivelent of doing a fflush after every \n */
---- busybox-1.00/networking/udhcp/pidfile.c~udhcppidfile2
-+++ busybox-1.00/networking/udhcp/pidfile.c
-@@ -141,7 +141,11 @@
- int pidfile_acquire(const char *pidfile)
- {
- int fd, result;
-- if (!pidfile) return (-1);
-+
-+ if (pidfile == NULL) {
-+ LOG(LOG_ERR, "pidfile_acquire: filename is NULL\n");
-+ return (-1);
-+ }
-
- if ((fd = pidfile_open(pidfile)) < 0)
- return (-1);
-@@ -170,7 +174,11 @@
- int pidfile_reassign(const char *pidfile, int pid)
- {
- int fd, result;
-- if (!pidfile) return (-1);
-+
-+ if (pidfile == NULL) {
-+ LOG(LOG_ERR, "pidfile_reassign: filename is NULL\n");
-+ return (-1);
-+ }
-
- if ((fd = pidfile_open(pidfile)) < 0)
- return (-1);
diff --git a/packages/busybox/busybox-1.2.0/udhcppidfile.patch b/packages/busybox/busybox-1.2.0/udhcppidfile.patch
deleted file mode 100644
index b4b86b8775..0000000000
--- a/packages/busybox/busybox-1.2.0/udhcppidfile.patch
+++ /dev/null
@@ -1,274 +0,0 @@
-Index: busybox-1.1.0/networking/udhcp/pidfile.h
-===================================================================
---- busybox-1.1.0.orig/networking/udhcp/pidfile.h 2006-01-11 06:43:50.000000000 +0100
-+++ busybox-1.1.0/networking/udhcp/pidfile.h 2006-03-14 17:15:45.000000000 +0100
-@@ -21,5 +21,5 @@
-
-
- int pidfile_acquire(const char *pidfile);
--void pidfile_write_release(int pid_fd);
-+int pidfile_reassign(const char *pidfile, int newpid);
-
-Index: busybox-1.1.0/networking/udhcp/pidfile.c
-===================================================================
---- busybox-1.1.0.orig/networking/udhcp/pidfile.c 2006-01-11 06:43:50.000000000 +0100
-+++ busybox-1.1.0/networking/udhcp/pidfile.c 2006-03-14 17:15:45.000000000 +0100
-@@ -25,6 +25,7 @@
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#include <errno.h>
-
- #include "pidfile.h"
- #include "common.h"
-@@ -37,39 +38,146 @@
- }
-
-
--int pidfile_acquire(const char *pidfile)
-+static int pidfile_open(const char *pidfile)
- {
-- int pid_fd;
-- if (!pidfile) return -1;
-+ int fd;
-
-- pid_fd = open(pidfile, O_CREAT | O_WRONLY, 0644);
-- if (pid_fd < 0) {
-- LOG(LOG_ERR, "Unable to open pidfile %s: %m\n", pidfile);
-- } else {
-- lockf(pid_fd, F_LOCK, 0);
-- if (!saved_pidfile)
-- atexit(pidfile_delete);
-- saved_pidfile = (char *) pidfile;
-+ if ((fd = open(pidfile, O_CREAT | O_RDWR, 0644)) < 0) {
-+ LOG(LOG_ERR, "pidfile_open: open %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ /* NOTE: lockf is not inherited by child after fork */
-+ if (lockf(fd, F_LOCK, 0) < 0) {
-+ LOG(LOG_ERR, "pidfile_open: lock %s failed: %m\n", pidfile);
-+ close(fd);
-+ return (-1);
-+ }
-+
-+ return (fd);
-+}
-+
-+
-+static int pidfile_check(int fd, const char *pidfile)
-+{
-+ int len, pid;
-+ char buf[20];
-+
-+ if (lseek(fd, 0L, SEEK_SET) < 0) {
-+ LOG(LOG_ERR, "pidfile_check: lseek %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ if ((len = read(fd, buf, sizeof buf - 1)) < 0) {
-+ LOG(LOG_ERR, "pidfile_check: read %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ if (len == 0)
-+ return (0);
-+
-+ buf[len] = '\0';
-+
-+ if ((pid = atoi(buf)) <= 1) {
-+ LOG(LOG_WARNING,
-+ "pidfile_check: ignoring bogus pid (%s) in %s\n",
-+ buf, pidfile);
-+ return (0);
-+ }
-+
-+ if (kill((pid_t)pid, 0) == 0) {
-+ LOG(LOG_ERR, "pidfile_check: process %d exists (%s)\n",
-+ pid, pidfile);
-+ return (-1);
-+ }
-+
-+ if (errno != ESRCH) {
-+ LOG(LOG_ERR, "pidfile_check: kill %d failed (%s): %m\n",
-+ pid, pidfile);
-+ return (-1);
-+ }
-+
-+ return (0);
-+}
-+
-+
-+static int pidfile_store(int fd, const char *pidfile, int pid)
-+{
-+ int len;
-+ char buf[20];
-+
-+ if (lseek(fd, 0L, SEEK_SET) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: lseek %s failed: %m\n", pidfile);
-+ return (-1);
-+ }
-+
-+ len = snprintf(buf, sizeof buf - 1, "%d\n", pid);
-+ buf[len] = '\0';
-+
-+ if (write(fd, buf, len) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: write %s failed: %m\n",
-+ pidfile);
-+ return (-1);
-+ }
-+
-+ if (ftruncate(fd, len) < 0) {
-+ LOG(LOG_ERR, "pidfile_store: ftruncate %d failed (%s): %m\n",
-+ len, pidfile);
-+ return (-1);
- }
-
-- return pid_fd;
-+ return (0);
- }
-
-
--void pidfile_write_release(int pid_fd)
-+static void pidfile_close(int fd)
- {
-- FILE *out;
-+ (void)lseek(fd, 0L, SEEK_SET);
-+ (void)lockf(fd, F_ULOCK, 0);
-+ (void)close(fd);
-+}
-
-- if (pid_fd < 0) return;
-
-- if ((out = fdopen(pid_fd, "w")) != NULL) {
-- fprintf(out, "%d\n", getpid());
-- fclose(out);
-+int pidfile_acquire(const char *pidfile)
-+{
-+ int fd, result;
-+ if (!pidfile) return (-1);
-+
-+ if ((fd = pidfile_open(pidfile)) < 0)
-+ return (-1);
-+
-+ if ((result = pidfile_check(fd, pidfile)) == 0)
-+ result = pidfile_store(fd, pidfile, getpid());
-+
-+ pidfile_close(fd);
-+
-+ if (result == 0) {
-+ saved_pidfile = (char *) pidfile;
-+ atexit(pidfile_delete);
- }
-- lockf(pid_fd, F_UNLCK, 0);
-- close(pid_fd);
-+
-+ return (result);
- }
-
-
-+/*
-+ * reassign the pid in a pidfile - used just after a fork so a parent
-+ * can store the pid of its child into the file without any window
-+ * where the pid in the file is a dead process (which might let another
-+ * instance of the program start). Note the parent must use _exit() to
-+ * avoid triggering the unlink scheduled above in pidfile_acquire()
-+ */
-+int pidfile_reassign(const char *pidfile, int pid)
-+{
-+ int fd, result;
-+ if (!pidfile) return (-1);
-+
-+ if ((fd = pidfile_open(pidfile)) < 0)
-+ return (-1);
-
-+ result = pidfile_store(fd, pidfile, pid);
-
-+ pidfile_close(fd);
-+
-+ return (result);
-+}
-Index: busybox-1.1.0/networking/udhcp/common.c
-===================================================================
---- busybox-1.1.0.orig/networking/udhcp/common.c 2006-01-11 06:43:50.000000000 +0100
-+++ busybox-1.1.0/networking/udhcp/common.c 2006-03-14 17:15:45.000000000 +0100
-@@ -64,16 +64,34 @@
- #ifdef __uClinux__
- LOG(LOG_ERR, "Cannot background in uclinux (yet)");
- #else /* __uClinux__ */
-- int pid_fd;
-+ int pid, fd;
-
-- /* hold lock during fork. */
-- pid_fd = pidfile_acquire(pidfile);
-- if (daemon(0, 0) == -1) {
-+ /* NOTE: lockf is not inherited by the child after fork */
-+ if ((pid = fork()) < 0) {
- perror("fork");
- exit(1);
- }
-+
-+ if (pid > 0) {
-+ /* parent */
-+ if (pidfile_reassign(pidfile, pid) < 0) {
-+ (void)kill(pid, SIGKILL);
-+ exit(1);
-+ } else
-+ _exit(0);
-+ }
-+
-+ /* child */
-+ (void)chdir("/");
-+ if ((fd = open("/dev/null", O_RDWR)) >= 0) {
-+ (void)dup2(fd, 0);
-+ (void)dup2(fd, 1);
-+ (void)dup2(fd, 2);
-+ (void)close(fd);
-+ }
-+ (void)setsid();
-+
- daemonized++;
-- pidfile_write_release(pid_fd);
- #endif /* __uClinux__ */
- }
-
-@@ -97,14 +115,12 @@
-
- void start_log_and_pid(const char *client_server, const char *pidfile)
- {
-- int pid_fd;
--
- /* Make sure our syslog fd isn't overwritten */
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- pid_fd = pidfile_acquire(pidfile);
-- pidfile_write_release(pid_fd);
-+ if (pidfile_acquire(pidfile) < 0)
-+ exit(1);
-
- /* equivelent of doing a fflush after every \n */
- setlinebuf(stdout);
-@@ -150,8 +166,8 @@
- sanitize_fds();
-
- /* do some other misc startup stuff while we are here to save bytes */
-- pid_fd = pidfile_acquire(pidfile);
-- pidfile_write_release(pid_fd);
-+ if (pidfile_acquire(pidfile) < 0)
-+ exit(1);
-
- /* equivelent of doing a fflush after every \n */
- setlinebuf(stdout);
-Index: busybox-1.1.0/networking/udhcp/script.c
-===================================================================
---- busybox-1.1.0.orig/networking/udhcp/script.c 2006-01-11 06:43:50.000000000 +0100
-+++ busybox-1.1.0/networking/udhcp/script.c 2006-03-14 17:15:45.000000000 +0100
-@@ -229,6 +229,6 @@
- execle(client_config.script, client_config.script,
- name, NULL, envp);
- LOG(LOG_ERR, "script %s failed: %m", client_config.script);
-- exit(1);
-+ _exit(1);
- }
- }
diff --git a/packages/busybox/busybox-1.2.0/udhcpscript.patch b/packages/busybox/busybox-1.2.0/udhcpscript.patch
deleted file mode 100644
index fc21d440cd..0000000000
--- a/packages/busybox/busybox-1.2.0/udhcpscript.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.00-rc3/examples/udhcp/simple.script~udhcpscript
-+++ busybox-1.00-rc3/examples/udhcp/simple.script
-@@ -17,8 +17,7 @@
- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
-
- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
- :
- done
-
diff --git a/packages/busybox/busybox-1.2.0/xargs-double-size.patch b/packages/busybox/busybox-1.2.0/xargs-double-size.patch
deleted file mode 100644
index 4fd410ca6a..0000000000
--- a/packages/busybox/busybox-1.2.0/xargs-double-size.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- busybox-1.2.0/findutils/xargs.c.org 2006-09-19 18:18:17.084592997 +0200
-+++ busybox-1.2.0/findutils/xargs.c 2006-09-19 18:18:09.820275793 +0200
-@@ -466,8 +466,8 @@
- have it at 1 meg). Things will work fine with a large ARG_MAX but it
- will probably hurt the system more than it needs to; an array of this
- size is allocated. */
-- if (orig_arg_max > 20 * 1024)
-- orig_arg_max = 20 * 1024;
-+ if (orig_arg_max > 40 * 1024)
-+ orig_arg_max = 40 * 1024;
- n_max_chars = orig_arg_max;
- }
- max_chars = xmalloc(n_max_chars);
diff --git a/packages/busybox/busybox-1.2.1/angstrom/defconfig b/packages/busybox/busybox-1.2.1/angstrom/defconfig
index 1807dab68e..5e0aa71614 100644
--- a/packages/busybox/busybox-1.2.1/angstrom/defconfig
+++ b/packages/busybox/busybox-1.2.1/angstrom/defconfig
@@ -123,7 +123,7 @@ CONFIG_CHROOT=y
CONFIG_CP=y
CONFIG_CUT=y
CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
+CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
# CONFIG_FEATURE_DD_IBS_OBS is not set
@@ -257,7 +257,7 @@ CONFIG_MKTEMP=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
diff --git a/packages/busybox/busybox-1.01/angstrom/.mtn2git_empty b/packages/busybox/busybox-1.2.1/avr32/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/angstrom/.mtn2git_empty
+++ b/packages/busybox/busybox-1.2.1/avr32/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.2.1/avr32/defconfig b/packages/busybox/busybox-1.2.1/avr32/defconfig
new file mode 100644
index 0000000000..112eb21d7e
--- /dev/null
+++ b/packages/busybox/busybox-1.2.1/avr32/defconfig
@@ -0,0 +1,643 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+# CONFIG_FEATURE_VERBOSE_USAGE is not set
+# CONFIG_FEATURE_COMPRESS_USAGE is not set
+# CONFIG_FEATURE_INSTALLER is not set
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+# CONFIG_FEATURE_SUID is not set
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_SELINUX is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+USING_CROSS_COMPILER=y
+CROSS_COMPILER_PREFIX="avr32-angstrom-linux-uclibc-"
+CONFIG_BUILD_AT_ONCE=y
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_NO_DEBUG_LIB is not set
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_DEBUG_YANK_SUSv2=y
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_MD5_SIZE_VS_SPEED=2
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
+CONFIG_GZIP=y
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_BZIP2=y
+# CONFIG_FEATURE_TAR_LZMA is not set
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+# CONFIG_FEATURE_TAR_COMPRESS is not set
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+# CONFIG_CAL is not set
+CONFIG_CAT=y
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+# CONFIG_CKSUM is not set
+# CONFIG_CMP is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_DF=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
+CONFIG_DIRNAME=y
+# CONFIG_DOS2UNIX is not set
+# CONFIG_UNIX2DOS is not set
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+CONFIG_HEAD=y
+# CONFIG_FEATURE_FANCY_HEAD is not set
+# CONFIG_HOSTID is not set
+CONFIG_ID=y
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+# CONFIG_LENGTH is not set
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+# CONFIG_MD5SUM is not set
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+# CONFIG_NICE is not set
+CONFIG_NOHUP=y
+CONFIG_OD=y
+# CONFIG_PRINTENV is not set
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+# CONFIG_SHA1SUM is not set
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+CONFIG_TEST=y
+# CONFIG_FEATURE_TEST_64 is not set
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+# CONFIG_UUDECODE is not set
+# CONFIG_UUENCODE is not set
+CONFIG_WATCH=y
+CONFIG_WC=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+# CONFIG_SETKEYCODES is not set
+# CONFIG_SETLOGCONS is not set
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+# CONFIG_PIPE_PROGRESS is not set
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+# CONFIG_ED is not set
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+# CONFIG_FEATURE_VI_DOT_CMD is not set
+# CONFIG_FEATURE_VI_READONLY is not set
+# CONFIG_FEATURE_VI_SETOPTS is not set
+# CONFIG_FEATURE_VI_SET is not set
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_NEWER=y
+# CONFIG_FEATURE_FIND_INUM is not set
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_DEBUG_INIT is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+# CONFIG_HALT is not set
+# CONFIG_MESG is not set
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_ADDGROUP is not set
+# CONFIG_DELGROUP is not set
+# CONFIG_ADDUSER is not set
+# CONFIG_DELUSER is not set
+# CONFIG_GETTY is not set
+CONFIG_FEATURE_UTMP=y
+# CONFIG_FEATURE_WTMP is not set
+# CONFIG_LOGIN is not set
+# CONFIG_FEATURE_SECURETTY is not set
+# CONFIG_PASSWD is not set
+# CONFIG_SU is not set
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_E2FSCK=y
+CONFIG_FSCK=y
+# CONFIG_LSATTR is not set
+CONFIG_MKE2FS=y
+# CONFIG_TUNE2FS is not set
+# CONFIG_E2LABEL is not set
+# CONFIG_FINDFS is not set
+
+#
+# Linux Module Utilities
+#
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_2_4_MODULES is not set
+CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FREERAMDISK is not set
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+# CONFIG_GETOPT is not set
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+CONFIG_LOSETUP=y
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_V0 is not set
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+# CONFIG_FEATURE_UMOUNT_ALL is not set
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_CROND is not set
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+# CONFIG_CRONTAB is not set
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_EJECT is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+# CONFIG_FEATURE_LESS_FLAGCS is not set
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_MT is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+CONFIG_STRINGS=y
+# CONFIG_SETSID is not set
+# CONFIG_TASKSET is not set
+CONFIG_TIME=y
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_ARPING is not set
+# CONFIG_DNSD is not set
+# CONFIG_ETHER_WAKE is not set
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+CONFIG_FEATURE_IFCONFIG_HW=y
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+CONFIG_IFUPDOWN=y
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+# CONFIG_FEATURE_IP_SHORT_FORMS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_NAMEIF is not set
+CONFIG_NC=y
+# CONFIG_NC_GAPING_SECURITY_HOLE is not set
+CONFIG_NETSTAT=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING6=y
+CONFIG_ROUTE=y
+CONFIG_TELNET=y
+# CONFIG_FEATURE_TELNET_TTYPE is not set
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_INETD is not set
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+
+#
+# udhcp Server/Client
+#
+CONFIG_APP_UDHCPD=y
+CONFIG_APP_UDHCPC=y
+CONFIG_APP_DUMPLEASES=y
+CONFIG_FEATURE_UDHCP_SYSLOG=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_IP6_LITERAL=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+# CONFIG_ZCIP is not set
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_PIDOF=y
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_UPTIME=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_LASH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_JOB_CONTROL=y
+# CONFIG_ASH_READ_NCHARS is not set
+# CONFIG_ASH_READ_TIMEOUT is not set
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+# CONFIG_ASH_MATH_SUPPORT_64 is not set
+CONFIG_ASH_GETOPTS=y
+# CONFIG_ASH_BUILTIN_ECHO is not set
+CONFIG_ASH_BUILTIN_TEST=y
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
+CONFIG_FEATURE_COMMAND_EDITING=y
+# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
+CONFIG_FEATURE_COMMAND_HISTORY=63
+# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
+CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
+# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_SH_FANCY_PROMPT=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.2.1/defconfig b/packages/busybox/busybox-1.2.1/defconfig
index 7308eead76..4bb48eb09d 100644
--- a/packages/busybox/busybox-1.2.1/defconfig
+++ b/packages/busybox/busybox-1.2.1/defconfig
@@ -123,7 +123,7 @@ CONFIG_CHROOT=y
CONFIG_CP=y
CONFIG_CUT=y
CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
+CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
# CONFIG_FEATURE_DD_IBS_OBS is not set
@@ -257,7 +257,7 @@ CONFIG_MKTEMP=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
diff --git a/packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch b/packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch
new file mode 100644
index 0000000000..4bec313f0e
--- /dev/null
+++ b/packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch
@@ -0,0 +1,53 @@
+---
+ coreutils/install.c | 2 +-
+ include/libbb.h | 3 ++-
+ libbb/copy_file.c | 9 +++++++++
+ 3 files changed, 12 insertions(+), 2 deletions(-)
+
+Index: busybox-1.2.1/coreutils/install.c
+===================================================================
+--- busybox-1.2.1.orig/coreutils/install.c 2006-10-19 16:33:48.000000000 +0200
++++ busybox-1.2.1/coreutils/install.c 2006-10-19 16:35:58.000000000 +0200
+@@ -59,7 +59,7 @@ int install_main(int argc, char **argv)
+ char *gid_str = "-1";
+ char *uid_str = "-1";
+ char *mode_str = "0755";
+- int copy_flags = FILEUTILS_DEREFERENCE | FILEUTILS_FORCE;
++ int copy_flags = FILEUTILS_DEREFERENCE | FILEUTILS_FORCE | FILEUTILS_NO_TRUNC;
+ int ret = EXIT_SUCCESS, flags, i, isdir;
+
+ #if ENABLE_FEATURE_INSTALL_LONG_OPTIONS
+Index: busybox-1.2.1/include/libbb.h
+===================================================================
+--- busybox-1.2.1.orig/include/libbb.h 2006-10-19 16:24:50.000000000 +0200
++++ busybox-1.2.1/include/libbb.h 2006-10-19 16:32:40.000000000 +0200
+@@ -345,7 +345,8 @@ enum { /* DO NOT CHANGE THESE VALUES! c
+ FILEUTILS_DEREFERENCE = 2,
+ FILEUTILS_RECUR = 4,
+ FILEUTILS_FORCE = 8,
+- FILEUTILS_INTERACTIVE = 16
++ FILEUTILS_INTERACTIVE = 16,
++ FILEUTILS_NO_TRUNC = 32
+ };
+
+ extern const char *bb_applet_name;
+Index: busybox-1.2.1/libbb/copy_file.c
+===================================================================
+--- busybox-1.2.1.orig/libbb/copy_file.c 2006-10-19 16:26:53.000000000 +0200
++++ busybox-1.2.1/libbb/copy_file.c 2006-10-19 16:32:28.000000000 +0200
+@@ -136,6 +136,15 @@ int copy_file(const char *source, const
+ }
+ }
+
++ if (flags & FILEUTILS_NO_TRUNC) {
++ if (unlink(dest) < 0) {
++ bb_perror_msg("unable to remove `%s'", dest);
++ close(src_fd);
++ return -1;
++ }
++ goto dest_removed;
++ }
++
+ dst_fd = open(dest, O_WRONLY|O_TRUNC);
+ if (dst_fd == -1) {
+ if (!(flags & FILEUTILS_FORCE)) {
diff --git a/packages/busybox/busybox-1.2.1/nylon/defconfig b/packages/busybox/busybox-1.2.1/nylon/defconfig
index 8a7aa8b00f..1e8ebb15a5 100644
--- a/packages/busybox/busybox-1.2.1/nylon/defconfig
+++ b/packages/busybox/busybox-1.2.1/nylon/defconfig
@@ -243,7 +243,7 @@ CONFIG_PIPE_PROGRESS=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
diff --git a/packages/busybox/busybox-1.2.1/slugos/defconfig b/packages/busybox/busybox-1.2.1/slugos/defconfig
index 74ece9c3b6..6ec2e8bee7 100644
--- a/packages/busybox/busybox-1.2.1/slugos/defconfig
+++ b/packages/busybox/busybox-1.2.1/slugos/defconfig
@@ -123,7 +123,7 @@ CONFIG_CHROOT=y
CONFIG_CP=y
CONFIG_CUT=y
CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
+CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
# CONFIG_FEATURE_DD_IBS_OBS is not set
@@ -257,7 +257,7 @@ CONFIG_MKTEMP=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
diff --git a/packages/busybox/busybox-1.5.0/angstrom/defconfig b/packages/busybox/busybox-1.5.0/angstrom/defconfig
deleted file mode 100644
index 1807dab68e..0000000000
--- a/packages/busybox/busybox-1.5.0/angstrom/defconfig
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-CONFIG_SWITCH_ROOT=y
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.5.0/busybox-mdev.sh b/packages/busybox/busybox-1.5.0/busybox-mdev.sh
deleted file mode 100755
index 9744322fa9..0000000000
--- a/packages/busybox/busybox-1.5.0/busybox-mdev.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-MDEV=/sbin/mdev
-DESC="Busybox mdev setup"
-
-# Complain if thing's aren't right
-if [ ! -e /proc/filesystems ]; then
- echo "mdev requires a mounted procfs, not started."
- exit 1
-fi
-
-if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
- echo "mdev requires tmpfs support, not started."
- exit 1
-fi
-
-if [ ! -d /sys/class/ ]; then
- echo "mdev requires a mounted sysfs, not started."
- exit 1
-fi
-
-if [ ! -e /proc/sys/kernel/hotplug ]; then
- echo "mdev requires hotplug support, not started."
- exit 1
-fi
-
-# We need to unmount /dev/pts/ and remount it later over the tmpfs
-if mountpoint -q /dev/pts/; then
- umount -l /dev/pts/
-fi
-
-if mountpoint -q /dev/shm/; then
- umount -l /dev/shm/
-fi
-
-# Create tmpfs for /dev
-echo "Creating tmpfs at /dev"
-mount -t tmpfs tmpfs /dev -o size=800k
-
-# Register mdev as hotplug event helper
-echo "$MDEV" > /proc/sys/kernel/hotplug
-
-# Populate /dev from /sys info
-echo "Populating /dev using mdev"
-$MDEV -s
-
-# Touch .udev to inform scripts that /dev needs no further setup
-touch /dev/.udev
-
-# Mount devpts
-TTYGRP=5
-TTYMODE=620
-mkdir -m 755 -p /dev/pts
-if [ ! -e /dev/ptmx ]; then
- mknod -m 666 /dev/ptmx c 5 2
-fi
-mount -t devpts devpts /dev/pts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
-
-# Make shm directory
-mkdir -m 755 -p /dev/shm
-
-# Make extraneous links
-ln -sf /proc/self/fd /dev/fd
-ln -sf /proc/self/fd/0 /dev/stdin
-ln -sf /proc/self/fd/1 /dev/stdout
-ln -sf /proc/self/fd/2 /dev/stderr
-ln -sf /proc/kcore /dev/core
-ln -sf /proc/asound/oss/sndstat /dev/sndstat
-
-exit 0
diff --git a/packages/busybox/busybox-1.5.0/defconfig b/packages/busybox/busybox-1.5.0/defconfig
deleted file mode 100644
index 7308eead76..0000000000
--- a/packages/busybox/busybox-1.5.0/defconfig
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.5.0/df_rootfs.patch b/packages/busybox/busybox-1.5.0/df_rootfs.patch
deleted file mode 100644
index 3819b59106..0000000000
--- a/packages/busybox/busybox-1.5.0/df_rootfs.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- busybox-1.3.1.orig/coreutils/df.c 2006-12-26 22:54:50.000000000 -0600
-+++ busybox-1.3.1/coreutils/df.c 2006-12-30 00:45:10.000000000 -0600
-@@ -47,6 +47,7 @@
- struct statfs s;
- static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */
- const char *disp_units_hdr = hdr_1k;
-+ int root_done = 0;
-
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
- opt_complementary = "h-km:k-hm:m-hk";
-@@ -77,7 +78,7 @@
-
- do {
- const char *device;
-- const char *mount_point;
-+ char *mount_point;
-
- if (mount_table) {
- mount_entry = getmntent(mount_table);
-@@ -116,17 +117,20 @@
- ) / (blocks_used + s.f_bavail);
- }
-
-- if (strcmp(device, "rootfs") == 0) {
-- continue;
-- } else if (strcmp(device, "/dev/root") == 0) {
-+ if (strcmp(device, "/dev/root") == 0 || strcmp(device, "rootfs") == 0) {
- /* Adjusts device to be the real root device,
- * or leaves device alone if it can't find it */
-- device = find_block_device("/");
-+ device = find_block_device(mount_point);
- if (!device) {
- goto SET_ERROR;
- }
- }
-
-+ if (strcmp(mount_point, "/") == 0) {
-+ if (root_done) continue;
-+ root_done = 1;
-+ }
-+
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
- printf("%-20s %9s ", device,
- make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
diff --git a/packages/busybox/busybox-1.5.0/dhcp-hostname.patch b/packages/busybox/busybox-1.5.0/dhcp-hostname.patch
deleted file mode 100644
index 8e7e68a4c9..0000000000
--- a/packages/busybox/busybox-1.5.0/dhcp-hostname.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- busybox-1.5.0/networking/udhcp/dhcpc.c~ 2007-03-22 15:21:23.000000000 -0500
-+++ busybox-1.5.0/networking/udhcp/dhcpc.c 2007-04-01 08:42:41.000000000 -0500
-@@ -136,6 +136,7 @@
- int retval;
- int len;
- int no_clientid = 0;
-+ char hostbuf[256]; /* (default hostname patch) */
- fd_set rfds;
- struct timeval tv;
- struct dhcpMessage packet;
-@@ -214,6 +215,9 @@
- client_config.background_if_no_lease = 1;
- if (opt & OPT_h)
- client_config.hostname = alloc_dhcp_option(DHCP_HOST_NAME, str_h, 0);
-+ else /* (default hostname patch) default hostname is our hostname as set */
-+ if (gethostname(hostbuf, sizeof(hostbuf)) == 0)
-+ client_config.hostname = alloc_dhcp_option(DHCP_HOST_NAME, hostbuf, 0);
- if (opt & OPT_F) {
- client_config.fqdn = alloc_dhcp_option(DHCP_FQDN, str_F, 3);
- /* Flags: 0000NEOS
diff --git a/packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch b/packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch
deleted file mode 100644
index f49aa16580..0000000000
--- a/packages/busybox/busybox-1.5.0/dhcp-increase-retries.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- busybox-1.5.0/networking/udhcp/dhcpc.c~ 2007-04-01 08:42:41.000000000 -0500
-+++ busybox-1.5.0/networking/udhcp/dhcpc.c 2007-04-01 21:03:42.000000000 -0500
-@@ -188,7 +188,7 @@
- /* Default options. */
- client_config.interface = "eth0";
- client_config.script = DEFAULT_SCRIPT;
-- client_config.retries = 3;
-+ client_config.retries = 5;
- client_config.timeout = 3;
-
- /* Parse command line */
diff --git a/packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch b/packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch
deleted file mode 100644
index 812a0b3ee8..0000000000
--- a/packages/busybox/busybox-1.5.0/ifupdown-spurious-environ.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- busybox-1.5.0/networking/ifupdown.c~ 2007-03-22 15:21:23.000000000 -0500
-+++ busybox-1.5.0/networking/ifupdown.c 2007-04-01 08:52:25.000000000 -0500
-@@ -83,6 +83,13 @@
- struct mapping_defn_t *mappings;
- };
-
-+/* XXX - ifupdown-spurious-environ.patch -- appears to be long obsolete,
-+ * but is carried forward because it doesn't seem to hurt anything and
-+ * it's non-obvious how to remove the patch from OE without breaking
-+ * old builds. MJW
-+ */
-+#define environ local_environ
-+
- #define OPTION_STR "anvf" USE_FEATURE_IFUPDOWN_MAPPING("m") "i:"
- enum {
- OPT_do_all = 0x1,
diff --git a/packages/busybox/busybox-1.5.0/mnci/defconfig b/packages/busybox/busybox-1.5.0/mnci/defconfig
deleted file mode 100644
index 6a04803f18..0000000000
--- a/packages/busybox/busybox-1.5.0/mnci/defconfig
+++ /dev/null
@@ -1,643 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_SHOW_USAGE is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-# CONFIG_LFS is not set
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-linux-"
-# CONFIG_BUILD_AT_ONCE is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-CONFIG_CMP=y
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-# CONFIG_DIFF is not set
-# CONFIG_FEATURE_DIFF_BINARY is not set
-# CONFIG_FEATURE_DIFF_DIR is not set
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-# CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-# CONFIG_LOGNAME is not set
-CONFIG_LS=y
-# CONFIG_FEATURE_LS_FILETYPES is not set
-# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-# CONFIG_FEATURE_LS_COLOR is not set
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-# CONFIG_FEATURE_SORT_BIG is not set
-CONFIG_STAT=y
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-# CONFIG_FEATURE_FANCY_TAIL is not set
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-# CONFIG_FEATURE_TR_CLASSES is not set
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-# CONFIG_WATCH is not set
-CONFIG_WC=y
-# CONFIG_WHO is not set
-# CONFIG_WHOAMI is not set
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=y
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-# CONFIG_FEATURE_GREP_FGREP_ALIAS is not set
-# CONFIG_FEATURE_GREP_CONTEXT is not set
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-CONFIG_FEATURE_SHADOWPASSWDS=y
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-CONFIG_ADDGROUP=y
-CONFIG_DELGROUP=y
-CONFIG_ADDUSER=y
-CONFIG_DELUSER=y
-CONFIG_GETTY=y
-# CONFIG_FEATURE_UTMP is not set
-# CONFIG_FEATURE_WTMP is not set
-CONFIG_LOGIN=y
-# CONFIG_FEATURE_SECURETTY is not set
-CONFIG_PASSWD=y
-CONFIG_SU=y
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-# CONFIG_CHATTR is not set
-# CONFIG_E2FSCK is not set
-# CONFIG_FSCK is not set
-# CONFIG_LSATTR is not set
-# CONFIG_MKE2FS is not set
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FEATURE_FBSET_FANCY is not set
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-# CONFIG_FDISK is not set
-# FDISK_SUPPORT_LARGE_DISKS is not set
-# CONFIG_FEATURE_FDISK_WRITABLE is not set
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_FEATURE_MINIX2 is not set
-CONFIG_GETOPT=y
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
-# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
-# CONFIG_IPCRM is not set
-CONFIG_IPCS=y
-# CONFIG_LOSETUP is not set
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-# CONFIG_FEATURE_MDEV_EXEC is not set
-# CONFIG_MKSWAP is not set
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-# CONFIG_SWAPONOFF is not set
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-CONFIG_ADJTIMEX=y
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-CONFIG_FEATURE_DEVFS=y
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-# CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_FEATURE_IPV6 is not set
-CONFIG_ARPING=y
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-# CONFIG_IP is not set
-# CONFIG_FEATURE_IP_ADDRESS is not set
-# CONFIG_FEATURE_IP_LINK is not set
-# CONFIG_FEATURE_IP_ROUTE is not set
-# CONFIG_FEATURE_IP_TUNNEL is not set
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-# CONFIG_PING6 is not set
-# CONFIG_FEATURE_FANCY_PING6 is not set
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-# CONFIG_TFTP is not set
-# CONFIG_FEATURE_TFTP_GET is not set
-# CONFIG_FEATURE_TFTP_PUT is not set
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-# CONFIG_APP_UDHCPD is not set
-CONFIG_APP_UDHCPC=y
-# CONFIG_APP_DUMPLEASES is not set
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-# CONFIG_FEATURE_WGET_STATUSBAR is not set
-# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
-# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-CONFIG_ZCIP=y
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-# CONFIG_FUSER is not set
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_PIDOF is not set
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-# CONFIG_UPTIME is not set
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_ASH_EXPAND_PRMT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=15
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.5.0/nylon/defconfig b/packages/busybox/busybox-1.5.0/nylon/defconfig
deleted file mode 100644
index 67c5408ada..0000000000
--- a/packages/busybox/busybox-1.5.0/nylon/defconfig
+++ /dev/null
@@ -1,568 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_FEATURE_DEVFS=y
-# CONFIG_EJECT is not set
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_LFS is not set
-# USING_CROSS_COMPILER is not set
-EXTRA_CFLAGS_OPTIONS=""
-# CONFIG_BUILD_AT_ONCE is not set
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-CONFIG_DPKG=y
-CONFIG_DPKG_DEB=y
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-# CONFIG_FEATURE_TAR_BZIP2 is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_UNCOMPRESS=y
-# CONFIG_UNLZMA is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Common options for dpkg and dpkg_deb
-#
-CONFIG_FEATURE_DEB_TAR_GZ=y
-CONFIG_FEATURE_DEB_TAR_BZ2=y
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAL=y
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-CONFIG_DIFF=y
-# CONFIG_FEATURE_DIFF_BINARY is not set
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-# CONFIG_COMM is not set
-# CONFIG_CKSUM is not set
-# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_CMP=y
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-
-#
-# date (forced enabled for use with watch)
-#
-CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_DD=y
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_HOSTID=y
-CONFIG_ID=y
-CONFIG_INSTALL=y
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-CONFIG_LENGTH=y
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-# CONFIG_FEATURE_SORT_BIG is not set
-CONFIG_STAT=y
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-# CONFIG_TEST is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-# CONFIG_FEATURE_TR_CLASSES is not set
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls and more
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-CONFIG_DUMPKMAP=y
-CONFIG_GETKEY=y
-# CONFIG_LOADFONT is not set
-CONFIG_LOADKMAP=y
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=n
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-# CONFIG_VI is not set
-#CONFIG_FEATURE_VI_COLON=y
-#CONFIG_FEATURE_VI_YANKMARK=y
-#CONFIG_FEATURE_VI_SEARCH=y
-#CONFIG_FEATURE_VI_USE_SIGNALS=y
-#CONFIG_FEATURE_VI_DOT_CMD=y
-#CONFIG_FEATURE_VI_READONLY=y
-#CONFIG_FEATURE_VI_SETOPTS=y
-#CONFIG_FEATURE_VI_SET=y
-#CONFIG_FEATURE_VI_WIN_RESIZE=y
-#CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_U_W_TMP=y
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-# CONFIG_CHATTR is not set
-# CONFIG_E2FSCK is not set
-# CONFIG_FSCK is not set
-# CONFIG_LSATTR is not set
-# CONFIG_MKE2FS is not set
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-CONFIG_CROND=y
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_CRONTAB=y
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-# CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-CONFIG_WATCHDOG=y
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-CONFIG_ARPING=y
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-CONFIG_HOSTNAME=y
-CONFIG_HTTPD=y
-CONFIG_FEATURE_HTTPD_WITHOUT_INETD=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
-CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-CONFIG_FEATURE_HTTPD_AUTH_MD5=y
-CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
-CONFIG_FEATURE_HTTPD_SETUID=y
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
-CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-CONFIG_INETD=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
-CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
-# CONFIG_FEATURE_INETD_RPC is not set
-# CONFIG_IP is not set
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-CONFIG_NAMEIF=y
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-CONFIG_FEATURE_TFTP_BLOCKSIZE=y
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-CONFIG_VCONFIG=y
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
-CONFIG_ZCIP=y
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-# CONFIG_FUSER is not set
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-# CONFIG_FEATURE_PS_WIDE is not set
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-FEATURE_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-CONFIG_SYSCTL=y
-
-#
-# Another Bourne-like Shell
-#
-# CONFIG_FEATURE_SH_IS_ASH is not set
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-CONFIG_FEATURE_SH_IS_NONE=y
-# CONFIG_ASH is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-# CONFIG_IPCRM is not set
-CONFIG_IPCS=y
-CONFIG_LOSETUP=y
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-# CONFIG_MORE is not set
-CONFIG_PIVOT_ROOT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-# CONFIG_RDATE is not set
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_MOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-CONFIG_DEBUG_YANK_SUSv2=y
diff --git a/packages/busybox/busybox-1.5.0/slugos/defconfig b/packages/busybox/busybox-1.5.0/slugos/defconfig
deleted file mode 100644
index 8c61fedfdb..0000000000
--- a/packages/busybox/busybox-1.5.0/slugos/defconfig
+++ /dev/null
@@ -1,686 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Busybox version: 1.5.0
-# Mon Apr 2 17:38:36 2007
-#
-CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_DESKTOP is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-CONFIG_FEATURE_VERBOSE_USAGE=y
-CONFIG_FEATURE_COMPRESS_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SYSLOG=y
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-CONFIG_FEATURE_HAVE_RPC=y
-# CONFIG_SELINUX is not set
-# CONFIG_FEATURE_EXEC_PREFER_APPLETS is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_WERROR is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_INCLUDE_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_PASSWORD_MINLEN=6
-CONFIG_MD5_SIZE_VS_SPEED=2
-CONFIG_FEATURE_EDITING=y
-CONFIG_FEATURE_EDITING_FANCY_KEYS=y
-# CONFIG_FEATURE_EDITING_VI is not set
-CONFIG_FEATURE_EDITING_HISTORY=15
-# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
-CONFIG_FEATURE_TAB_COMPLETION=y
-# CONFIG_FEATURE_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-# CONFIG_CPIO is not set
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-CONFIG_CMP=y
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-# CONFIG_NOHUP is not set
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-# CONFIG_FEATURE_WC_LARGE is not set
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-CONFIG_CLEAR=y
-# CONFIG_DEALLOCVT is not set
-# CONFIG_DUMPKMAP is not set
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-# CONFIG_OPENVT is not set
-CONFIG_RESET=y
-# CONFIG_RESIZE is not set
-# CONFIG_FEATURE_RESIZE_PRINT is not set
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_FEATURE_VI_READONLY=y
-CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_FEATURE_VI_SET=y
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-CONFIG_FEATURE_ALLOW_EXEC=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-CONFIG_FEATURE_FIND_INUM=y
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_FEATURE_FIND_USER=y
-CONFIG_FEATURE_FIND_NOT=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_INIT_SYSLOG is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_LOGIN_SCRIPTS is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
-# CONFIG_SU is not set
-# CONFIG_FEATURE_SU_SYSLOG is not set
-# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-# CONFIG_FSCK is not set
-# CONFIG_LSATTR is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-# CONFIG_RMMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
-# CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
-# CONFIG_FEATURE_2_4_MODULES is not set
-# CONFIG_FEATURE_2_6_MODULES is not set
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FEATURE_DMESG_PRETTY=y
-# CONFIG_FBSET is not set
-# CONFIG_FEATURE_FBSET_FANCY is not set
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-CONFIG_FEATURE_OSF_LABEL=y
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_FEATURE_MINIX2 is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-# CONFIG_LOSETUP is not set
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-# CONFIG_FEATURE_MOUNT_CIFS is not set
-CONFIG_FEATURE_MOUNT_FLAGS=y
-CONFIG_FEATURE_MOUNT_FSTAB=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-# CONFIG_SWAPONOFF is not set
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CHRT is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-# CONFIG_DC is not set
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_MAXLINES=9999999
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_NMETER is not set
-# CONFIG_RAIDAUTORUN is not set
-# CONFIG_READAHEAD is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-# CONFIG_FEATURE_TASKSET_FANCY is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
-# CONFIG_ARP is not set
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
-CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-# CONFIG_IP is not set
-# CONFIG_FEATURE_IP_ADDRESS is not set
-# CONFIG_FEATURE_IP_LINK is not set
-# CONFIG_FEATURE_IP_ROUTE is not set
-# CONFIG_FEATURE_IP_TUNNEL is not set
-# CONFIG_FEATURE_IP_RULE is not set
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPRULE is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_SERVER is not set
-# CONFIG_NC_EXTRA is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-CONFIG_FEATURE_TELNET_TTYPE=y
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_STANDALONE is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-# CONFIG_APP_UDHCPD is not set
-# CONFIG_APP_DHCPRELAY is not set
-# CONFIG_APP_DUMPLEASES is not set
-CONFIG_APP_UDHCPC=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_KILLALL5 is not set
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Runit Utilities
-#
-# CONFIG_RUNSV is not set
-# CONFIG_RUNSVDIR is not set
-# CONFIG_SV is not set
-# CONFIG_SVLOGD is not set
-# CONFIG_CHPST is not set
-# CONFIG_SETUIDGID is not set
-# CONFIG_ENVUIDGID is not set
-# CONFIG_ENVDIR is not set
-# CONFIG_SOFTLIMIT is not set
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
diff --git a/packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch b/packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch
deleted file mode 100644
index dec6c18994..0000000000
--- a/packages/busybox/busybox-1.5.0/slugos/udhcpscript.patch
+++ /dev/null
@@ -1,133 +0,0 @@
---- busybox-1.00/.pc/udhcpscript.patch/examples/udhcp/simple.script 2004-10-13 00:18:05.000000000 -0700
-+++ busybox-1.00/examples/udhcp/simple.script 2005-06-05 15:08:28.432605118 -0700
-@@ -1,40 +1,101 @@
- #!/bin/sh
-+# openslug UDHCP client script
-+# this must set the HW address (MAC) on the interface
-+#
-+. /etc/default/functions
-
--# udhcpc script edited by Tim Riker <Tim@Rikers.org>
-
--[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
-+echodns(){
-+ local dns
-+ if test $# -gt 0
-+ then
-+ for dns in "$@"
-+ do
-+ echo "nameserver $dns"
-+ done
-+ fi
-+}
-+
-+# Output the correct contents for resolv.conf
-+mkresolv() {
-+ test -n "$domain" && echo "search $domain"
-+ echodns $dns
-+}
-+
-+# checksum of a file (or stdin if -)
-+md5strm() {
-+ md5sum $1 2>/dev/null | sed -n 's/^\([0-9A-Za-z]*\).*$/\1/p'
-+}
-+
-+bind() {
-+ local B N metric i olddomain
-+ B=
-+ test -n "$broadcast" && B="broadcast $broadcast"
-+ N=
-+ test -n "$subnet" && N="netmask $subnet"
-+ ifconfig "$interface" "$ip" $B $N up
-+
-+ # If given router information delete the old information and
-+ # enter new stuff, routers get metrics incremented by 1
-+ # between each (this is somewhat arbitrary)
-+ if test -n "$router"
-+ then
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null
-+ do
-+ :
-+ done
-
--RESOLV_CONF="/etc/resolv.conf"
--[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
--[ -n "$subnet" ] && NETMASK="netmask $subnet"
-+ metric=0
-+ for i in $router
-+ do
-+ route add default gw "$i" dev "$interface" metric $((metric++))
-+ done
-+ fi
-+
-+ olddomain=
-+ test -r /etc/defaultdomain && olddomain="$(cat /etc/defaultdomain)"
-+ if test -n "$domain" -a "$domain" != "$olddomain"
-+ then
-+ echo "$domain" >/etc/defaultdomain
-+ # and update the kernel view too
-+ echo "$domain" >/proc/sys/kernel/domainname
-+ fi
-+
-+ # Update /etc/resolv.conf to reflect domain and dns information,
-+ # this always clears resolv.conf if none is given
-+ md5old="$(md5strm /etc/resolv.conf)"
-+ md5new="$(mkresolv | md5strm -)"
-+ test "$md5old" != "$md5new" && mkresolv >/etc/resolv.conf
-+}
-
- case "$1" in
-- deconfig)
-- /sbin/ifconfig $interface 0.0.0.0
-- ;;
--
-- renew|bound)
-- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
--
-- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-- :
-- done
--
-- metric=0
-- for i in $router ; do
-- route add default gw $i dev $interface metric $((metric++))
-- done
-+deconfig)
-+ # Bring the interface up (without inet at this point)
-+ ifconfig "$interface" 0.0.0.0;;
-+
-+renew|bound)
-+ bind;;
-+
-+leasefail)
-+ # Pull the values from the config data if (only only if) this
-+ # is the config interface
-+ if test "$interface" = "$(config iface)"
-+ then
-+ ip="$(config ip)"
-+ if test -n "$ip"
-+ then
-+ router="$(config gateway)"
-+ subnet="$(config netmask)"
-+ broadcast="$(config broadcast)"
-+ domain="$(config domain)"
-+ dns="$(config dns)"
-+
-+ bind
- fi
-+ fi;;
-
-- echo -n > $RESOLV_CONF
-- [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
-- for i in $dns ; do
-- echo adding dns $i
-- echo nameserver $i >> $RESOLV_CONF
-- done
-- ;;
-+*) echo "udhcpc: $*: unknown command" >&2
-+ exit 1;;
- esac
-
- exit 0
diff --git a/packages/busybox/busybox-1.5.0/udhcpscript.patch b/packages/busybox/busybox-1.5.0/udhcpscript.patch
deleted file mode 100644
index fc21d440cd..0000000000
--- a/packages/busybox/busybox-1.5.0/udhcpscript.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.00-rc3/examples/udhcp/simple.script~udhcpscript
-+++ busybox-1.00-rc3/examples/udhcp/simple.script
-@@ -17,8 +17,7 @@
- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
-
- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
- :
- done
-
diff --git a/packages/busybox/busybox-1.5.0/xargs-double-size.patch b/packages/busybox/busybox-1.5.0/xargs-double-size.patch
deleted file mode 100644
index df64554ffc..0000000000
--- a/packages/busybox/busybox-1.5.0/xargs-double-size.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- busybox-1.2.1/findutils/xargs.c.org 2006-09-19 18:18:17.084592997 +0200
-+++ busybox-1.2.1/findutils/xargs.c 2006-09-19 18:18:09.820275793 +0200
-@@ -466,8 +466,8 @@
- have it at 1 meg). Things will work fine with a large ARG_MAX but it
- will probably hurt the system more than it needs to; an array of this
- size is allocated. */
-- if (orig_arg_max > 20 * 1024)
-- orig_arg_max = 20 * 1024;
-+ if (orig_arg_max > 40 * 1024)
-+ orig_arg_max = 40 * 1024;
- n_max_chars = orig_arg_max;
- }
- max_chars = xmalloc(n_max_chars);
diff --git a/packages/busybox/busybox-1.6.0/angstrom/defconfig b/packages/busybox/busybox-1.6.0/angstrom/defconfig
deleted file mode 100644
index 1807dab68e..0000000000
--- a/packages/busybox/busybox-1.6.0/angstrom/defconfig
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-CONFIG_SWITCH_ROOT=y
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.6.0/busybox-mdev.sh b/packages/busybox/busybox-1.6.0/busybox-mdev.sh
deleted file mode 100755
index 9744322fa9..0000000000
--- a/packages/busybox/busybox-1.6.0/busybox-mdev.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-MDEV=/sbin/mdev
-DESC="Busybox mdev setup"
-
-# Complain if thing's aren't right
-if [ ! -e /proc/filesystems ]; then
- echo "mdev requires a mounted procfs, not started."
- exit 1
-fi
-
-if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
- echo "mdev requires tmpfs support, not started."
- exit 1
-fi
-
-if [ ! -d /sys/class/ ]; then
- echo "mdev requires a mounted sysfs, not started."
- exit 1
-fi
-
-if [ ! -e /proc/sys/kernel/hotplug ]; then
- echo "mdev requires hotplug support, not started."
- exit 1
-fi
-
-# We need to unmount /dev/pts/ and remount it later over the tmpfs
-if mountpoint -q /dev/pts/; then
- umount -l /dev/pts/
-fi
-
-if mountpoint -q /dev/shm/; then
- umount -l /dev/shm/
-fi
-
-# Create tmpfs for /dev
-echo "Creating tmpfs at /dev"
-mount -t tmpfs tmpfs /dev -o size=800k
-
-# Register mdev as hotplug event helper
-echo "$MDEV" > /proc/sys/kernel/hotplug
-
-# Populate /dev from /sys info
-echo "Populating /dev using mdev"
-$MDEV -s
-
-# Touch .udev to inform scripts that /dev needs no further setup
-touch /dev/.udev
-
-# Mount devpts
-TTYGRP=5
-TTYMODE=620
-mkdir -m 755 -p /dev/pts
-if [ ! -e /dev/ptmx ]; then
- mknod -m 666 /dev/ptmx c 5 2
-fi
-mount -t devpts devpts /dev/pts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
-
-# Make shm directory
-mkdir -m 755 -p /dev/shm
-
-# Make extraneous links
-ln -sf /proc/self/fd /dev/fd
-ln -sf /proc/self/fd/0 /dev/stdin
-ln -sf /proc/self/fd/1 /dev/stdout
-ln -sf /proc/self/fd/2 /dev/stderr
-ln -sf /proc/kcore /dev/core
-ln -sf /proc/asound/oss/sndstat /dev/sndstat
-
-exit 0
diff --git a/packages/busybox/busybox-1.6.0/defconfig b/packages/busybox/busybox-1.6.0/defconfig
deleted file mode 100644
index 7308eead76..0000000000
--- a/packages/busybox/busybox-1.6.0/defconfig
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="arm-angstrom-linux-gnueabi-"
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WATCH=y
-CONFIG_WC=y
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_E2FSCK=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-CONFIG_MKE2FS=y
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-CONFIG_TIME=y
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-CONFIG_NETSTAT=y
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_PING6=y
-CONFIG_FEATURE_FANCY_PING6=y
-CONFIG_ROUTE=y
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-CONFIG_APP_UDHCPD=y
-CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
-CONFIG_FEATURE_UDHCP_SYSLOG=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_IP6_LITERAL=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_UPTIME=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=63
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-CONFIG_FEATURE_SH_FANCY_PROMPT=y
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
diff --git a/packages/busybox/busybox-1.6.0/df_rootfs.patch b/packages/busybox/busybox-1.6.0/df_rootfs.patch
deleted file mode 100644
index 3819b59106..0000000000
--- a/packages/busybox/busybox-1.6.0/df_rootfs.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- busybox-1.3.1.orig/coreutils/df.c 2006-12-26 22:54:50.000000000 -0600
-+++ busybox-1.3.1/coreutils/df.c 2006-12-30 00:45:10.000000000 -0600
-@@ -47,6 +47,7 @@
- struct statfs s;
- static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */
- const char *disp_units_hdr = hdr_1k;
-+ int root_done = 0;
-
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
- opt_complementary = "h-km:k-hm:m-hk";
-@@ -77,7 +78,7 @@
-
- do {
- const char *device;
-- const char *mount_point;
-+ char *mount_point;
-
- if (mount_table) {
- mount_entry = getmntent(mount_table);
-@@ -116,17 +117,20 @@
- ) / (blocks_used + s.f_bavail);
- }
-
-- if (strcmp(device, "rootfs") == 0) {
-- continue;
-- } else if (strcmp(device, "/dev/root") == 0) {
-+ if (strcmp(device, "/dev/root") == 0 || strcmp(device, "rootfs") == 0) {
- /* Adjusts device to be the real root device,
- * or leaves device alone if it can't find it */
-- device = find_block_device("/");
-+ device = find_block_device(mount_point);
- if (!device) {
- goto SET_ERROR;
- }
- }
-
-+ if (strcmp(mount_point, "/") == 0) {
-+ if (root_done) continue;
-+ root_done = 1;
-+ }
-+
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
- printf("%-20s %9s ", device,
- make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
diff --git a/packages/busybox/busybox-1.6.0/dhcp-hostname.patch b/packages/busybox/busybox-1.6.0/dhcp-hostname.patch
deleted file mode 100644
index 8e7e68a4c9..0000000000
--- a/packages/busybox/busybox-1.6.0/dhcp-hostname.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- busybox-1.5.0/networking/udhcp/dhcpc.c~ 2007-03-22 15:21:23.000000000 -0500
-+++ busybox-1.5.0/networking/udhcp/dhcpc.c 2007-04-01 08:42:41.000000000 -0500
-@@ -136,6 +136,7 @@
- int retval;
- int len;
- int no_clientid = 0;
-+ char hostbuf[256]; /* (default hostname patch) */
- fd_set rfds;
- struct timeval tv;
- struct dhcpMessage packet;
-@@ -214,6 +215,9 @@
- client_config.background_if_no_lease = 1;
- if (opt & OPT_h)
- client_config.hostname = alloc_dhcp_option(DHCP_HOST_NAME, str_h, 0);
-+ else /* (default hostname patch) default hostname is our hostname as set */
-+ if (gethostname(hostbuf, sizeof(hostbuf)) == 0)
-+ client_config.hostname = alloc_dhcp_option(DHCP_HOST_NAME, hostbuf, 0);
- if (opt & OPT_F) {
- client_config.fqdn = alloc_dhcp_option(DHCP_FQDN, str_F, 3);
- /* Flags: 0000NEOS
diff --git a/packages/busybox/busybox-1.6.0/dhcp-increase-retries.patch b/packages/busybox/busybox-1.6.0/dhcp-increase-retries.patch
deleted file mode 100644
index f49aa16580..0000000000
--- a/packages/busybox/busybox-1.6.0/dhcp-increase-retries.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- busybox-1.5.0/networking/udhcp/dhcpc.c~ 2007-04-01 08:42:41.000000000 -0500
-+++ busybox-1.5.0/networking/udhcp/dhcpc.c 2007-04-01 21:03:42.000000000 -0500
-@@ -188,7 +188,7 @@
- /* Default options. */
- client_config.interface = "eth0";
- client_config.script = DEFAULT_SCRIPT;
-- client_config.retries = 3;
-+ client_config.retries = 5;
- client_config.timeout = 3;
-
- /* Parse command line */
diff --git a/packages/busybox/busybox-1.6.0/ifupdown-spurious-environ.patch b/packages/busybox/busybox-1.6.0/ifupdown-spurious-environ.patch
deleted file mode 100644
index 812a0b3ee8..0000000000
--- a/packages/busybox/busybox-1.6.0/ifupdown-spurious-environ.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- busybox-1.5.0/networking/ifupdown.c~ 2007-03-22 15:21:23.000000000 -0500
-+++ busybox-1.5.0/networking/ifupdown.c 2007-04-01 08:52:25.000000000 -0500
-@@ -83,6 +83,13 @@
- struct mapping_defn_t *mappings;
- };
-
-+/* XXX - ifupdown-spurious-environ.patch -- appears to be long obsolete,
-+ * but is carried forward because it doesn't seem to hurt anything and
-+ * it's non-obvious how to remove the patch from OE without breaking
-+ * old builds. MJW
-+ */
-+#define environ local_environ
-+
- #define OPTION_STR "anvf" USE_FEATURE_IFUPDOWN_MAPPING("m") "i:"
- enum {
- OPT_do_all = 0x1,
diff --git a/packages/busybox/busybox-1.6.0/udhcpscript.patch b/packages/busybox/busybox-1.6.0/udhcpscript.patch
deleted file mode 100644
index fc21d440cd..0000000000
--- a/packages/busybox/busybox-1.6.0/udhcpscript.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- busybox-1.00-rc3/examples/udhcp/simple.script~udhcpscript
-+++ busybox-1.00-rc3/examples/udhcp/simple.script
-@@ -17,8 +17,7 @@
- /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
-
- if [ -n "$router" ] ; then
-- echo "deleting routers"
-- while route del default gw 0.0.0.0 dev $interface ; do
-+ while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
- :
- done
-
diff --git a/packages/busybox/busybox-1.6.0/xargs-double-size.patch b/packages/busybox/busybox-1.6.0/xargs-double-size.patch
deleted file mode 100644
index df64554ffc..0000000000
--- a/packages/busybox/busybox-1.6.0/xargs-double-size.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- busybox-1.2.1/findutils/xargs.c.org 2006-09-19 18:18:17.084592997 +0200
-+++ busybox-1.2.1/findutils/xargs.c 2006-09-19 18:18:09.820275793 +0200
-@@ -466,8 +466,8 @@
- have it at 1 meg). Things will work fine with a large ARG_MAX but it
- will probably hurt the system more than it needs to; an array of this
- size is allocated. */
-- if (orig_arg_max > 20 * 1024)
-- orig_arg_max = 20 * 1024;
-+ if (orig_arg_max > 40 * 1024)
-+ orig_arg_max = 40 * 1024;
- n_max_chars = orig_arg_max;
- }
- max_chars = xmalloc(n_max_chars);
diff --git a/packages/busybox/busybox-1.7.2/angstrom/defconfig b/packages/busybox/busybox-1.7.2/angstrom/defconfig
deleted file mode 100644
index 30e71e8ffe..0000000000
--- a/packages/busybox/busybox-1.7.2/angstrom/defconfig
+++ /dev/null
@@ -1,753 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Busybox version: 1.7.2
-# Fri Oct 12 19:00:27 2007
-#
-CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_DESKTOP is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-CONFIG_FEATURE_COMPRESS_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-CONFIG_LOCALE_SUPPORT=y
-CONFIG_GETOPT_LONG=y
-CONFIG_FEATURE_DEVPTS=y
-# CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_FEATURE_PIDFILE=y
-CONFIG_FEATURE_SUID=y
-CONFIG_FEATURE_SUID_CONFIG=y
-CONFIG_FEATURE_SUID_CONFIG_QUIET=y
-# CONFIG_SELINUX is not set
-# CONFIG_FEATURE_PREFER_APPLETS is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-CONFIG_FEATURE_SYSLOG=y
-CONFIG_FEATURE_HAVE_RPC=y
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-CONFIG_BUILD_AT_ONCE=y
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_WERROR is not set
-CONFIG_NO_DEBUG_LIB=y
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-# CONFIG_INCLUDE_SUSv2 is not set
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_PASSWORD_MINLEN=6
-CONFIG_MD5_SIZE_VS_SPEED=2
-CONFIG_FEATURE_FAST_TOP=y
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-CONFIG_FEATURE_EDITING=y
-CONFIG_FEATURE_EDITING_MAX_LEN=1024
-# CONFIG_FEATURE_EDITING_FANCY_KEYS is not set
-# CONFIG_FEATURE_EDITING_VI is not set
-CONFIG_FEATURE_EDITING_HISTORY=15
-CONFIG_FEATURE_EDITING_SAVEHISTORY=y
-CONFIG_FEATURE_TAB_COMPLETION=y
-CONFIG_FEATURE_USERNAME_COMPLETION=y
-CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
-CONFIG_MONOTONIC_SYSCALL=y
-CONFIG_IOCTL_HEX2STR_ERROR=y
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_AR=y
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-# CONFIG_FEATURE_RPM_BZ2 is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-# CONFIG_FEATURE_TAR_COMPRESS is not set
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_UNCOMPRESS is not set
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
-CONFIG_FEATURE_ENV_LONG_OPTIONS=y
-# CONFIG_EXPAND is not set
-# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-# CONFIG_FEATURE_FANCY_HEAD is not set
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-CONFIG_LOGNAME=y
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_FEATURE_LS_COLOR=y
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-CONFIG_NOHUP=y
-CONFIG_OD=y
-# CONFIG_PRINTENV is not set
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-CONFIG_SEQ=y
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-# CONFIG_SPLIT is not set
-# CONFIG_FEATURE_SPLIT_FANCY is not set
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-# CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_TRUE=y
-CONFIG_TTY=y
-CONFIG_UNAME=y
-# CONFIG_UNEXPAND is not set
-# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
-CONFIG_UNIQ=y
-CONFIG_USLEEP=y
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-CONFIG_WC=y
-# CONFIG_FEATURE_WC_LARGE is not set
-CONFIG_WHO=y
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-CONFIG_LOADFONT=y
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-# CONFIG_RESIZE is not set
-# CONFIG_FEATURE_RESIZE_PRINT is not set
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_CMP is not set
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-# CONFIG_ED is not set
-CONFIG_PATCH=y
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_MAX_LEN=1024
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-CONFIG_FEATURE_ALLOW_EXEC=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-CONFIG_FEATURE_FIND_MMIN=y
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_FEATURE_FIND_MAXDEPTH=y
-CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_FEATURE_FIND_USER=y
-CONFIG_FEATURE_FIND_GROUP=y
-CONFIG_FEATURE_FIND_NOT=y
-CONFIG_FEATURE_FIND_DEPTH=y
-CONFIG_FEATURE_FIND_PAREN=y
-CONFIG_FEATURE_FIND_SIZE=y
-CONFIG_FEATURE_FIND_PRUNE=y
-# CONFIG_FEATURE_FIND_DELETE is not set
-CONFIG_FEATURE_FIND_PATH=y
-CONFIG_FEATURE_FIND_REGEX=y
-# CONFIG_FEATURE_FIND_CONTEXT is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_XARGS=y
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_INIT_SYSLOG is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-CONFIG_FEATURE_UTMP=y
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_PAM is not set
-# CONFIG_LOGIN_SCRIPTS is not set
-# CONFIG_FEATURE_NOLOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
-# CONFIG_CRYPTPW is not set
-# CONFIG_CHPASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_FEATURE_SU_SYSLOG is not set
-# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-CONFIG_FSCK=y
-# CONFIG_LSATTR is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
-CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-# CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-CONFIG_FEATURE_DMESG_PRETTY=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FREERAMDISK is not set
-CONFIG_FSCK_MINIX=y
-CONFIG_MKFS_MINIX=y
-
-#
-# Minix filesystem support
-#
-CONFIG_FEATURE_MINIX2=y
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-CONFIG_HWCLOCK=y
-CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
-CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-# CONFIG_FEATURE_MOUNT_CIFS is not set
-CONFIG_FEATURE_MOUNT_FLAGS=y
-CONFIG_FEATURE_MOUNT_FSTAB=y
-CONFIG_PIVOT_ROOT=y
-CONFIG_RDATE=y
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-CONFIG_SWITCH_ROOT=y
-CONFIG_UMOUNT=y
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CHRT is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-CONFIG_LESS=y
-CONFIG_FEATURE_LESS_MAXLINES=9999999
-CONFIG_FEATURE_LESS_BRACKETS=y
-CONFIG_FEATURE_LESS_FLAGS=y
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RAIDAUTORUN is not set
-# CONFIG_READAHEAD is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-# CONFIG_FEATURE_TASKSET_FANCY is not set
-CONFIG_TIME=y
-# CONFIG_TTYSIZE is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-CONFIG_FEATURE_IPV6=y
-# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
-# CONFIG_ARP is not set
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-CONFIG_IFUPDOWN=y
-CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
-CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-CONFIG_FEATURE_IFUPDOWN_IPV6=y
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-# CONFIG_FEATURE_IP_RULE is not set
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPRULE is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_SERVER is not set
-# CONFIG_NC_EXTRA is not set
-CONFIG_NETSTAT=y
-# CONFIG_FEATURE_NETSTAT_WIDE is not set
-CONFIG_NSLOOKUP=y
-CONFIG_PING=y
-CONFIG_PING6=y
-# CONFIG_PSCAN is not set
-CONFIG_FEATURE_FANCY_PING=y
-CONFIG_ROUTE=y
-# CONFIG_SLATTACH is not set
-CONFIG_TELNET=y
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-CONFIG_FEATURE_TELNET_AUTOLOGIN=y
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_STANDALONE is not set
-CONFIG_TFTP=y
-CONFIG_FEATURE_TFTP_GET=y
-CONFIG_FEATURE_TFTP_PUT=y
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-CONFIG_TRACEROUTE=y
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-CONFIG_APP_UDHCPD=y
-# CONFIG_APP_DHCPRELAY is not set
-CONFIG_APP_DUMPLEASES=y
-# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
-CONFIG_APP_UDHCPC=y
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_FEATURE_RFC3397 is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-CONFIG_FUSER=y
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-# CONFIG_KILLALL5 is not set
-# CONFIG_NMETER is not set
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-CONFIG_FEATURE_PS_WIDE=y
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
-# CONFIG_FEATURE_TOP_DECIMALS is not set
-CONFIG_UPTIME=y
-CONFIG_WATCH=y
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-CONFIG_ASH_READ_NCHARS=y
-CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_ASH_ALIAS=y
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-CONFIG_ASH_BUILTIN_TEST=y
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_HUSH is not set
-# CONFIG_HUSH_HELP is not set
-# CONFIG_HUSH_INTERACTIVE is not set
-# CONFIG_HUSH_JOB is not set
-# CONFIG_HUSH_TICK is not set
-# CONFIG_HUSH_IF is not set
-# CONFIG_HUSH_LOOPS is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-CONFIG_FEATURE_SH_EXTRA_QUIET=y
-# CONFIG_FEATURE_SH_STANDALONE is not set
-# CONFIG_CTTYHACK is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_FEATURE_REMOTE_LOG=y
-CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_LOGREAD=y
-CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
-CONFIG_KLOGD=y
-CONFIG_LOGGER=y
-
-#
-# Runit Utilities
-#
-# CONFIG_RUNSV is not set
-# CONFIG_RUNSVDIR is not set
-# CONFIG_SV is not set
-# CONFIG_SVLOGD is not set
-# CONFIG_CHPST is not set
-# CONFIG_SETUIDGID is not set
-# CONFIG_ENVUIDGID is not set
-# CONFIG_ENVDIR is not set
-# CONFIG_SOFTLIMIT is not set
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-
-#
-# ipsvd utilities
-#
-# CONFIG_TCPSVD is not set
-# CONFIG_UDPSVD is not set
diff --git a/packages/busybox/busybox-1.7.2/defconfig b/packages/busybox/busybox-1.7.2/defconfig
new file mode 100644
index 0000000000..6cf2eb19ee
--- /dev/null
+++ b/packages/busybox/busybox-1.7.2/defconfig
@@ -0,0 +1,753 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.7.2
+# Wed Feb 13 13:31:37 2008
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+# CONFIG_DESKTOP is not set
+# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+# CONFIG_FEATURE_VERBOSE_USAGE is not set
+CONFIG_FEATURE_COMPRESS_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_BUILD_AT_ONCE=y
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+# CONFIG_INCLUDE_SUSv2 is not set
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+CONFIG_FEATURE_FAST_TOP=y
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+# CONFIG_FEATURE_EDITING_FANCY_KEYS is not set
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=15
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+CONFIG_FEATURE_USERNAME_COMPLETION=y
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
+CONFIG_GZIP=y
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+# CONFIG_FEATURE_RPM_BZ2 is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_BZIP2=y
+# CONFIG_FEATURE_TAR_LZMA is not set
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+# CONFIG_FEATURE_TAR_COMPRESS is not set
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+# CONFIG_CAL is not set
+CONFIG_CAT=y
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+# CONFIG_CKSUM is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+# CONFIG_FEATURE_DATE_ISOFMT is not set
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_DF=y
+CONFIG_DIRNAME=y
+# CONFIG_DOS2UNIX is not set
+# CONFIG_UNIX2DOS is not set
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+# CONFIG_EXPAND is not set
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+CONFIG_HEAD=y
+# CONFIG_FEATURE_FANCY_HEAD is not set
+# CONFIG_HOSTID is not set
+CONFIG_ID=y
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+# CONFIG_LENGTH is not set
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+# CONFIG_NICE is not set
+CONFIG_NOHUP=y
+CONFIG_OD=y
+# CONFIG_PRINTENV is not set
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+# CONFIG_SHA1SUM is not set
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+CONFIG_TEST=y
+# CONFIG_FEATURE_TEST_64 is not set
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+# CONFIG_UNEXPAND is not set
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+# CONFIG_UUDECODE is not set
+# CONFIG_UUENCODE is not set
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+# CONFIG_SETKEYCODES is not set
+# CONFIG_SETLOGCONS is not set
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+# CONFIG_PIPE_PROGRESS is not set
+CONFIG_RUN_PARTS=y
+# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+# CONFIG_CMP is not set
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
+# CONFIG_ED is not set
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+# CONFIG_FEATURE_VI_DOT_CMD is not set
+# CONFIG_FEATURE_VI_READONLY is not set
+# CONFIG_FEATURE_VI_SETOPTS is not set
+# CONFIG_FEATURE_VI_SET is not set
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+# CONFIG_FEATURE_FIND_INUM is not set
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_DEBUG_INIT is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+# CONFIG_HALT is not set
+# CONFIG_MESG is not set
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+# CONFIG_CRYPTPW is not set
+# CONFIG_CHPASSWD is not set
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+# CONFIG_SULOGIN is not set
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+# CONFIG_LSATTR is not set
+
+#
+# Linux Module Utilities
+#
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_2_4_MODULES is not set
+CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FREERAMDISK is not set
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+# CONFIG_GETOPT is not set
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+CONFIG_LOSETUP=y
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_V0 is not set
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_NFS=y
+# CONFIG_FEATURE_MOUNT_CIFS is not set
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+# CONFIG_FEATURE_UMOUNT_ALL is not set
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_CHRT is not set
+# CONFIG_CROND is not set
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+# CONFIG_CRONTAB is not set
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_EJECT is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+# CONFIG_FEATURE_LESS_FLAGCS is not set
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_MT is not set
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+CONFIG_STRINGS=y
+# CONFIG_SETSID is not set
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_TIME=y
+# CONFIG_TTYSIZE is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_ARP is not set
+# CONFIG_ARPING is not set
+# CONFIG_DNSD is not set
+# CONFIG_ETHER_WAKE is not set
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+CONFIG_FEATURE_IFCONFIG_HW=y
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+# CONFIG_FEATURE_IP_RULE is not set
+# CONFIG_FEATURE_IP_SHORT_FORMS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_IPRULE is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_NAMEIF is not set
+CONFIG_NC=y
+# CONFIG_NC_SERVER is not set
+# CONFIG_NC_EXTRA is not set
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+# CONFIG_PSCAN is not set
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+CONFIG_TELNET=y
+# CONFIG_FEATURE_TELNET_TTYPE is not set
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_APP_UDHCPD=y
+# CONFIG_APP_DHCPRELAY is not set
+CONFIG_APP_DUMPLEASES=y
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_APP_UDHCPC=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+# CONFIG_ZCIP is not set
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+# CONFIG_KILLALL5 is not set
+# CONFIG_NMETER is not set
+CONFIG_PIDOF=y
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_LASH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+# CONFIG_ASH_MATH_SUPPORT_64 is not set
+CONFIG_ASH_GETOPTS=y
+# CONFIG_ASH_BUILTIN_ECHO is not set
+CONFIG_ASH_BUILTIN_TEST=y
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_CTTYHACK is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_SV is not set
+# CONFIG_SVLOGD is not set
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+
+#
+# ipsvd utilities
+#
+# CONFIG_TCPSVD is not set
+# CONFIG_UDPSVD is not set
diff --git a/packages/busybox/busybox-1.01/familiar/.mtn2git_empty b/packages/busybox/busybox-1.9.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/familiar/.mtn2git_empty
+++ b/packages/busybox/busybox-1.9.1/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.9.1/adduser-longops.patch b/packages/busybox/busybox-1.9.1/adduser-longops.patch
new file mode 100644
index 0000000000..f221d30895
--- /dev/null
+++ b/packages/busybox/busybox-1.9.1/adduser-longops.patch
@@ -0,0 +1,55 @@
+upstream: http://bugs.busybox.net/view.php?id=2134
+status: accepted in rev. 21031 on Feb 15 2008
+comment: fixes OE bug 3781, applied by mickeyl
+
+diff -Nuar busybox-1.9.1.old/loginutils/Config.in busybox-1.9.1/loginutils/Config.in
+--- busybox-1.9.1.old/loginutils/Config.in Tue Feb 12 10:03:11 2008
++++ busybox-1.9.1/loginutils/Config.in Thu Feb 14 11:48:31 2008
+@@ -88,6 +88,13 @@
+ help
+ Utility for creating a new user account.
+
++config FEATURE_ADDUSER_LONG_OPTIONS
++ bool "Enable long options"
++ default n
++ depends on ADDUSER && GETOPT_LONG
++ help
++ Support long options for the adduser applet.
++
+ config DELUSER
+ bool "deluser"
+ default n
+diff -Nuar busybox-1.9.1.old/loginutils/adduser.c busybox-1.9.1/loginutils/adduser.c
+--- busybox-1.9.1.old/loginutils/adduser.c Thu Feb 14 10:25:33 2008
++++ busybox-1.9.1/loginutils/adduser.c Thu Feb 14 13:32:47 2008
+@@ -66,6 +66,19 @@
+ bb_error_msg_and_die("cannot execute %s, you must set password manually", prog);
+ }
+
++#if ENABLE_FEATURE_ADDUSER_LONG_OPTIONS
++static const char adduser_longopts[] ALIGN1 =
++ "home\0" Required_argument "h"
++ "gecos\0" Required_argument "g"
++ "shell\0" Required_argument "s"
++ "ingroup\0" Required_argument "G"
++ "disabled-password\0" No_argument "D"
++ "empty-password\0" No_argument "D"
++ "system\0" No_argument "S"
++ "no-create-home\0" No_argument "H"
++ ;
++#endif
++
+ /*
+ * adduser will take a login_name as its first parameter.
+ * home, shell, gecos:
+@@ -77,6 +90,10 @@
+ struct passwd pw;
+ const char *usegroup = NULL;
+ FILE *file;
++
++#if ENABLE_FEATURE_ADDUSER_LONG_OPTIONS
++ applet_long_options = adduser_longopts;
++#endif
+
+ /* got root? */
+ if (geteuid()) {
diff --git a/packages/busybox/busybox-1.9.1/defconfig b/packages/busybox/busybox-1.9.1/defconfig
new file mode 100644
index 0000000000..61865cb4c5
--- /dev/null
+++ b/packages/busybox/busybox-1.9.1/defconfig
@@ -0,0 +1,777 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.9.1
+# Thu Feb 14 11:54:00 2008
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+# CONFIG_DESKTOP is not set
+# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+# CONFIG_FEATURE_VERBOSE_USAGE is not set
+CONFIG_FEATURE_COMPRESS_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+# CONFIG_INCLUDE_SUSv2 is not set
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+CONFIG_FEATURE_FAST_TOP=y
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_FANCY_KEYS=y
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=15
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+CONFIG_FEATURE_USERNAME_COMPLETION=y
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_BUNZIP2=y
+# CONFIG_BZIP2 is not set
+CONFIG_CPIO=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
+CONFIG_GZIP=y
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+# CONFIG_FEATURE_RPM_BZ2 is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_BZIP2=y
+# CONFIG_FEATURE_TAR_LZMA is not set
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+# CONFIG_FEATURE_TAR_COMPRESS is not set
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+# CONFIG_CAL is not set
+CONFIG_CAT=y
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+# CONFIG_CKSUM is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+# CONFIG_FEATURE_DATE_ISOFMT is not set
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_DF=y
+# CONFIG_FEATURE_DF_INODE is not set
+CONFIG_DIRNAME=y
+# CONFIG_DOS2UNIX is not set
+# CONFIG_UNIX2DOS is not set
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+# CONFIG_EXPAND is not set
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+CONFIG_HEAD=y
+# CONFIG_FEATURE_FANCY_HEAD is not set
+# CONFIG_HOSTID is not set
+CONFIG_ID=y
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+# CONFIG_LENGTH is not set
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+# CONFIG_NICE is not set
+CONFIG_NOHUP=y
+CONFIG_OD=y
+# CONFIG_PRINTENV is not set
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+# CONFIG_SHA1SUM is not set
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+CONFIG_TEST=y
+# CONFIG_FEATURE_TEST_64 is not set
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+# CONFIG_UNEXPAND is not set
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+# CONFIG_UUDECODE is not set
+# CONFIG_UUENCODE is not set
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+# CONFIG_KBD_MODE is not set
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+# CONFIG_SETKEYCODES is not set
+# CONFIG_SETLOGCONS is not set
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+# CONFIG_PIPE_PROGRESS is not set
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+# CONFIG_CMP is not set
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
+# CONFIG_ED is not set
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+# CONFIG_FEATURE_VI_DOT_CMD is not set
+# CONFIG_FEATURE_VI_READONLY is not set
+# CONFIG_FEATURE_VI_SETOPTS is not set
+# CONFIG_FEATURE_VI_SET is not set
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+# CONFIG_FEATURE_FIND_INUM is not set
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_DEBUG_INIT is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+# CONFIG_HALT is not set
+# CONFIG_MESG is not set
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_ADDUSER=y
+CONFIG_FEATURE_ADDUSER_LONG_OPTIONS=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+# CONFIG_CRYPTPW is not set
+# CONFIG_CHPASSWD is not set
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+# CONFIG_SULOGIN is not set
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+# CONFIG_LSATTR is not set
+
+#
+# Linux Module Utilities
+#
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_2_4_MODULES is not set
+CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FREERAMDISK is not set
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+# CONFIG_GETOPT is not set
+CONFIG_HEXDUMP=y
+# CONFIG_HD is not set
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+CONFIG_LOSETUP=y
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_V0 is not set
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_MOUNT=y
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+CONFIG_FEATURE_MOUNT_NFS=y
+# CONFIG_FEATURE_MOUNT_CIFS is not set
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+# CONFIG_FEATURE_UMOUNT_ALL is not set
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_CHRT is not set
+# CONFIG_CROND is not set
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+# CONFIG_CRONTAB is not set
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_EJECT is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+# CONFIG_FEATURE_LESS_FLAGCS is not set
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MICROCOM is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_MT is not set
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+CONFIG_STRINGS=y
+# CONFIG_SETSID is not set
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_TIME=y
+# CONFIG_TTYSIZE is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_ARP is not set
+# CONFIG_ARPING is not set
+# CONFIG_DNSD is not set
+# CONFIG_ETHER_WAKE is not set
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+CONFIG_FEATURE_IFCONFIG_HW=y
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+# CONFIG_FEATURE_IP_RULE is not set
+# CONFIG_FEATURE_IP_SHORT_FORMS is not set
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_IPRULE is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_NAMEIF is not set
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+CONFIG_NC=y
+# CONFIG_NC_SERVER is not set
+# CONFIG_NC_EXTRA is not set
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+# CONFIG_PSCAN is not set
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+CONFIG_TELNET=y
+# CONFIG_FEATURE_TELNET_TTYPE is not set
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_APP_UDHCPD=y
+# CONFIG_APP_DHCPRELAY is not set
+CONFIG_APP_DUMPLEASES=y
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_APP_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+# CONFIG_ZCIP is not set
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+# CONFIG_KILLALL5 is not set
+# CONFIG_NMETER is not set
+# CONFIG_PGREP is not set
+CONFIG_PIDOF=y
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+# CONFIG_PKILL is not set
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+# CONFIG_FEATURE_TOPMEM is not set
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+# CONFIG_ASH_MATH_SUPPORT_64 is not set
+CONFIG_ASH_GETOPTS=y
+# CONFIG_ASH_BUILTIN_ECHO is not set
+CONFIG_ASH_BUILTIN_TEST=y
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_CTTYHACK is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_SV is not set
+# CONFIG_SVLOGD is not set
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# ipsvd utilities
+#
+# CONFIG_TCPSVD is not set
+# CONFIG_UDPSVD is not set
diff --git a/packages/busybox/busybox-1.9.1/sort-z-nul.patch b/packages/busybox/busybox-1.9.1/sort-z-nul.patch
new file mode 100644
index 0000000000..55452a4524
--- /dev/null
+++ b/packages/busybox/busybox-1.9.1/sort-z-nul.patch
@@ -0,0 +1,50 @@
+Summary: 0001591: inconsistent behavior of sort -z
+
+URL: http://busybox.net/bugs/view.php?id=1591
+http://www.busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/coreutils/sort.c?rev=21004&r1=20435&r2=21004&makepatch=1&diff_format=u
+
+Description:
+
+busybox sort -z does:
+use NUL instead of EOL on input
+
+GNU sort -z does:
+use NUL instead of EOL on input and output
+
+GNU sort -z documents:
+use NUL instead of EOL on input
+
+Additional Information:
+
+Note that sort -z is not part of any standard. But several applications
+(e. g. GNU findutils updatedb) depends on the NUL-on-output behavior.
+
+GNU sort documentation bug was reported to coreutils maintainers.
+
+Notes:
+
+vda 02-13-08 06:30 (0004364)
+Fixed in revision 21004. Thanks!
+
+--- busybox/coreutils/sort.c 2007/11/16 12:39:16 20435
++++ busybox/coreutils/sort.c 2008/02/13 14:30:33 21004
+@@ -32,7 +32,7 @@
+ FLAG_u = 8, /* Unique */
+ FLAG_c = 0x10, /* Check: no output, exit(!ordered) */
+ FLAG_s = 0x20, /* Stable sort, no ascii fallback at end */
+- FLAG_z = 0x40, /* Input is null terminated, not \n */
++ FLAG_z = 0x40, /* Input and output is NUL terminated, not \n */
+ /* These can be applied to search keys, the previous four can't */
+ FLAG_b = 0x80, /* Ignore leading blanks */
+ FLAG_r = 0x100, /* Reverse */
+@@ -396,8 +396,9 @@
+ if (linecount) linecount = flag+1;
+ }
+ /* Print it */
++ flag = (option_mask32 & FLAG_z) ? '\0' : '\n';
+ for (i = 0; i < linecount; i++)
+- fprintf(outfile, "%s\n", lines[i]);
++ fprintf(outfile, "%s%c", lines[i], flag);
+
+ fflush_stdout_and_exit(EXIT_SUCCESS);
+ }
diff --git a/packages/busybox/busybox-1.00/udhcpscript.patch b/packages/busybox/busybox-1.9.1/udhcpscript.patch
index fc21d440cd..fc21d440cd 100644
--- a/packages/busybox/busybox-1.00/udhcpscript.patch
+++ b/packages/busybox/busybox-1.9.1/udhcpscript.patch
diff --git a/packages/busybox/busybox-static-1.2.1/defconfig b/packages/busybox/busybox-static-1.2.1/defconfig
index 1807dab68e..5e0aa71614 100644
--- a/packages/busybox/busybox-static-1.2.1/defconfig
+++ b/packages/busybox/busybox-static-1.2.1/defconfig
@@ -123,7 +123,7 @@ CONFIG_CHROOT=y
CONFIG_CP=y
CONFIG_CUT=y
CONFIG_DATE=y
-# CONFIG_FEATURE_DATE_ISOFMT is not set
+CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
# CONFIG_FEATURE_DD_IBS_OBS is not set
@@ -257,7 +257,7 @@ CONFIG_MKTEMP=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
diff --git a/packages/busybox/busybox-static_1.2.1.bb b/packages/busybox/busybox-static_1.2.1.bb
index 519468039a..e51bb86da0 100644
--- a/packages/busybox/busybox-static_1.2.1.bb
+++ b/packages/busybox/busybox-static_1.2.1.bb
@@ -1,5 +1,5 @@
require busybox_${PV}.bb
-PR = "r1"
+PR = "r2"
S = "${WORKDIR}/busybox-1.2.1"
diff --git a/packages/busybox/busybox_1.00.bb b/packages/busybox/busybox_1.00.bb
deleted file mode 100644
index 262d6afff1..0000000000
--- a/packages/busybox/busybox_1.00.bb
+++ /dev/null
@@ -1,112 +0,0 @@
-require busybox.inc
-
-PR = "r38"
-
-SRC_URI += "file://add-getkey-applet.patch;patch=1 \
- file://below.patch;patch=1 \
- file://defconfig \
- file://df.patch;patch=1 \
- file://dhcpretrytime.patch;patch=1 \
- file://fbset.patch;patch=1 \
- file://gzip-spurious-const.patch;patch=1 \
- file://hdparm_M.patch;patch=1 \
- file://iproute-flush-cache.patch;patch=1;pnum=0 \
- file://mount-all-type.patch;patch=1 \
- file://readlink.patch;patch=1 \
- file://rmmod.patch;patch=1 \
- file://start-stop-daemon-oknodo-support.patch;patch=1 \
- file://uclibc_posix.patch;patch=1 \
- file://udhcppidfile-breakage.patch;patch=1 \
- file://udhcppidfile.patch;patch=1 \
- file://unzip-endian-fixes.patch;patch=1;pnum=0 \
- file://unzip-enhancement-and-fixes.patch;patch=1;pnum=0"
-
-SRC_URI_append_mtx-1 = " file://linux-types.patch;patch=1"
-SRC_URI_append_mtx-2 = " file://linux-types.patch;patch=1"
-
-S = "${WORKDIR}/busybox-${PV}"
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- cml1_do_configure
-}
-
-do_install () {
- install -d ${D}${sysconfdir}/init.d
- oe_runmake 'PREFIX=${D}' install
-
- # Move everything to /busybox (not supposed to end up in any package)
- install -d ${D}/busybox
- mv ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
- # Move the busybox binary back to /bin
- install -d ${D}${base_bindir}
- mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
- # Move back the sh symlink
- test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
-
- install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
- install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
- if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
- # Move crond back to /usr/sbin/crond
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
- # Move httpd back to /usr/sbin/httpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
- install -d ${D}/srv/www
- fi
- if grep "CONFIG_UDHCPD=y" ${WORKDIR}/defconfig; then
- # Move udhcpd back to /usr/sbin/udhcpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
- # Move hwclock back to /sbin/hwclock
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
-
- install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_UDHCPC=y" ${WORKDIR}/defconfig; then
- # Move dhcpc back to /usr/sbin/udhcpc
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
-
- install -d ${D}${sysconfdir}/udhcpc.d
- install -d ${D}${datadir}/udhcpc
- install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
- install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
- fi
-
- install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
-}
-
-pkg_prerm_${PN} () {
- # This is so you can make busybox commit suicide - removing busybox with no other packages
- # providing its files, this will make update-alternatives work, but the update-rc.d part
- # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
- tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
- cp -pPR /bin/busybox $tmpdir/
- ln -s /bin/busybox $tmpdir/[
- ln -s /bin/busybox $tmpdir/test
- ln -s /bin/busybox $tmpdir/head
- ln -s /bin/busybox $tmpdir/sh
- ln -s /bin/busybox $tmpdir/basename
- ln -s /bin/busybox $tmpdir/echo
- ln -s /bin/busybox $tmpdir/mv
- ln -s /bin/busybox $tmpdir/ln
- ln -s /bin/busybox $tmpdir/dirname
- ln -s /bin/busybox $tmpdir/rm
- ln -s /bin/busybox $tmpdir/sed
- ln -s /bin/busybox $tmpdir/sort
- export PATH=$PATH:$tmpdir
- while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
-}
diff --git a/packages/busybox/busybox_1.01.bb b/packages/busybox/busybox_1.01.bb
deleted file mode 100644
index 39a052bc90..0000000000
--- a/packages/busybox/busybox_1.01.bb
+++ /dev/null
@@ -1,111 +0,0 @@
-require busybox.inc
-
-PR = "r13"
-
-SRC_URI += "file://add-getkey-applet.patch;patch=1 \
- file://below.patch;patch=1 \
- file://defconfig \
- file://dhcpretrytime.patch;patch=1 \
- file://fbset.patch;patch=1 \
- file://glibc2.4-icmp6.patch;patch=1 \
- file://hdparm_M.patch;patch=1 \
- file://iproute-flush-cache.patch;patch=1;pnum=0 \
- file://mount-all-type.patch;patch=1 \
- file://readlink.patch;patch=1 \
- file://rmmod.patch;patch=1 \
- file://thumb-bsdlabel.patch;patch=1 \
- file://uclibc_posix.patch;patch=1 \
- file://udhcppidfile-breakage.patch;patch=1 \
- file://udhcppidfile.patch;patch=1"
-
-SRC_URI_append_slugos += " file://sysctl.conf "
-
-S = "${WORKDIR}/busybox-${PV}"
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- cml1_do_configure
-}
-
-do_install () {
- install -d ${D}${sysconfdir}/init.d
- oe_runmake 'PREFIX=${D}' install
-
- # Move everything to /busybox (not supposed to end up in any package)
- install -d ${D}/busybox
- mv ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
- # Move the busybox binary back to /bin
- install -d ${D}${base_bindir}
- mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
- # Move back the sh symlink
- test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
-
- install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
- install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
- if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
- # Move crond back to /usr/sbin/crond
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
- # Move httpd back to /usr/sbin/httpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
- install -d ${D}/srv/www
- fi
- if grep "CONFIG_UDHCPD=y" ${WORKDIR}/defconfig; then
- # Move udhcpd back to /usr/sbin/udhcpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
- # Move hwclock back to /sbin/hwclock
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
-
- install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_UDHCPC=y" ${WORKDIR}/defconfig; then
- # Move dhcpc back to /usr/sbin/udhcpc
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
-
- install -d ${D}${sysconfdir}/udhcpc.d
- install -d ${D}${datadir}/udhcpc
- install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
- install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
- fi
-
- install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
-}
-
-do_install_append_slugos() {
- install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}
-}
-
-pkg_prerm_${PN} () {
- # This is so you can make busybox commit suicide - removing busybox with no other packages
- # providing its files, this will make update-alternatives work, but the update-rc.d part
- # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
- tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
- ln -s /bin/busybox $tmpdir/[
- ln -s /bin/busybox $tmpdir/test
- ln -s /bin/busybox $tmpdir/head
- ln -s /bin/busybox $tmpdir/sh
- ln -s /bin/busybox $tmpdir/basename
- ln -s /bin/busybox $tmpdir/echo
- ln -s /bin/busybox $tmpdir/mv
- ln -s /bin/busybox $tmpdir/ln
- ln -s /bin/busybox $tmpdir/dirname
- ln -s /bin/busybox $tmpdir/rm
- ln -s /bin/busybox $tmpdir/sed
- ln -s /bin/busybox $tmpdir/sort
- export PATH=$PATH:$tmpdir
- while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
-}
diff --git a/packages/busybox/busybox_1.2.0.bb b/packages/busybox/busybox_1.2.0.bb
deleted file mode 100644
index 009d1724ff..0000000000
--- a/packages/busybox/busybox_1.2.0.bb
+++ /dev/null
@@ -1,101 +0,0 @@
-require busybox.inc
-
-PR = "r2"
-
-SRC_URI += "file://defconfig"
-
-S = "${WORKDIR}/busybox-1.2.0"
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config.oe
-
- echo "CROSS_COMPILER_PREFIX=\"${TARGET_PREFIX}\"" > ${S}/.config
- echo "USING_CROSS_COMPILER=y" >> ${S}/.config
-
- sed -e '/CROSS_COMPILER_PREFIX/d' \
- -e '/USING_CROSS_COMPILER/d' \
- '${S}/.config.oe' >>'${S}/.config'
- cml1_do_configure
-}
-
-do_install () {
- install -d ${D}${sysconfdir}/init.d
- oe_runmake "PREFIX=${D}" install
- cp -pPR ${S}/_install/* ${D}/
-
- # Move everything to /busybox (not supposed to end up in any package)
- install -d ${D}/busybox
- ls ${D} -R
-
- mv ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
- # Move the busybox binary back to /bin
- install -d ${D}${base_bindir}
- mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
- # Move back the sh symlink
- test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
-
- install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
- install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
- if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
- # Move crond back to /usr/sbin/crond
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
- # Move httpd back to /usr/sbin/httpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
- install -d ${D}/srv/www
- fi
- if grep "CONFIG_APP_UDHCPD=y" ${WORKDIR}/defconfig; then
- # Move udhcpd back to /usr/sbin/udhcpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
- # Move hwclock back to /sbin/hwclock
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
-
- install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_APP_UDHCPC=y" ${WORKDIR}/defconfig; then
- # Move dhcpc back to /usr/sbin/udhcpc
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
-
- install -d ${D}${sysconfdir}/udhcpc.d
- install -d ${D}${datadir}/udhcpc
- install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
- install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
- fi
-
- install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
-}
-
-pkg_prerm_${PN} () {
- # This is so you can make busybox commit suicide - removing busybox with no other packages
- # providing its files, this will make update-alternatives work, but the update-rc.d part
- # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
- tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
- ln -s /bin/busybox $tmpdir/[
- ln -s /bin/busybox $tmpdir/test
- ln -s /bin/busybox $tmpdir/head
- ln -s /bin/busybox $tmpdir/sh
- ln -s /bin/busybox $tmpdir/basename
- ln -s /bin/busybox $tmpdir/echo
- ln -s /bin/busybox $tmpdir/mv
- ln -s /bin/busybox $tmpdir/ln
- ln -s /bin/busybox $tmpdir/dirname
- ln -s /bin/busybox $tmpdir/rm
- ln -s /bin/busybox $tmpdir/sed
- ln -s /bin/busybox $tmpdir/sort
- export PATH=$PATH:$tmpdir
- while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
-}
diff --git a/packages/busybox/busybox_1.2.1.bb b/packages/busybox/busybox_1.2.1.bb
index 325111c22f..1accc790a2 100644
--- a/packages/busybox/busybox_1.2.1.bb
+++ b/packages/busybox/busybox_1.2.1.bb
@@ -1,10 +1,11 @@
require busybox.inc
-PR = "r15"
+PR = "r16"
SRC_URI += "file://wget-long-options.patch;patch=1 \
file://df_rootfs.patch;patch=1 \
file://defconfig"
+SRC_URI_append_avr32 = " file://install-should-unlink-dest-if-it-exists.patch;patch=1"
do_configure () {
install -m 0644 ${WORKDIR}/defconfig ${S}/.config.oe
diff --git a/packages/busybox/busybox_1.2.2.bb b/packages/busybox/busybox_1.2.2.bb
index 75847e1117..fbf05e7182 100644
--- a/packages/busybox/busybox_1.2.2.bb
+++ b/packages/busybox/busybox_1.2.2.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r1"
+PR = "r2"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/busybox/busybox_1.3.1.bb b/packages/busybox/busybox_1.3.1.bb
index 369500fc7b..1eea1edea2 100644
--- a/packages/busybox/busybox_1.3.1.bb
+++ b/packages/busybox/busybox_1.3.1.bb
@@ -1,6 +1,6 @@
require busybox.inc
-PR = "r1"
+PR = "r2"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/busybox/busybox_1.5.0.bb b/packages/busybox/busybox_1.5.0.bb
deleted file mode 100644
index b8ee4854b8..0000000000
--- a/packages/busybox/busybox_1.5.0.bb
+++ /dev/null
@@ -1,104 +0,0 @@
-require busybox.inc
-
-PR = "r1"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI += "file://dhcp-increase-retries.patch;patch=1 \
- file://df_rootfs.patch;patch=1 \
- file://defconfig"
-
-EXTRA_OEMAKE_append = " V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- cml1_do_configure
-}
-
-do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- base_do_compile
-}
-
-do_install () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- install -d ${D}${sysconfdir}/init.d
- oe_runmake "PREFIX=${D}" install
- cp -pPR ${S}/_install/* ${D}/
-
- # Move everything to /busybox (not supposed to end up in any package)
- install -d ${D}/busybox
- ls ${D} -R
-
- cp -dPr ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
- # Move the busybox binary back to /bin
- install -d ${D}${base_bindir}
- mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
- # Move back the sh symlink
- test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
-
- install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
- install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
- if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
- # Move crond back to /usr/sbin/crond
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
- # Move httpd back to /usr/sbin/httpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
- install -d ${D}/srv/www
- fi
- if grep "CONFIG_APP_UDHCPD=y" ${WORKDIR}/defconfig; then
- # Move udhcpd back to /usr/sbin/udhcpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
- # Move hwclock back to /sbin/hwclock
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
-
- install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_APP_UDHCPC=y" ${WORKDIR}/defconfig; then
- # Move dhcpc back to /usr/sbin/udhcpc
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
-
- install -d ${D}${sysconfdir}/udhcpc.d
- install -d ${D}${datadir}/udhcpc
- install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
- install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
- fi
-
- install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
-}
-
-pkg_prerm_${PN} () {
- # This is so you can make busybox commit suicide - removing busybox with no other packages
- # providing its files, this will make update-alternatives work, but the update-rc.d part
- # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
- tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
- ln -s /bin/busybox $tmpdir/[
- ln -s /bin/busybox $tmpdir/test
- ln -s /bin/busybox $tmpdir/head
- ln -s /bin/busybox $tmpdir/sh
- ln -s /bin/busybox $tmpdir/basename
- ln -s /bin/busybox $tmpdir/echo
- ln -s /bin/busybox $tmpdir/mv
- ln -s /bin/busybox $tmpdir/ln
- ln -s /bin/busybox $tmpdir/dirname
- ln -s /bin/busybox $tmpdir/rm
- ln -s /bin/busybox $tmpdir/sed
- ln -s /bin/busybox $tmpdir/sort
- export PATH=$PATH:$tmpdir
- while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
-}
diff --git a/packages/busybox/busybox_1.6.0.bb b/packages/busybox/busybox_1.6.0.bb
deleted file mode 100644
index b8ee4854b8..0000000000
--- a/packages/busybox/busybox_1.6.0.bb
+++ /dev/null
@@ -1,104 +0,0 @@
-require busybox.inc
-
-PR = "r1"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI += "file://dhcp-increase-retries.patch;patch=1 \
- file://df_rootfs.patch;patch=1 \
- file://defconfig"
-
-EXTRA_OEMAKE_append = " V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- cml1_do_configure
-}
-
-do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- base_do_compile
-}
-
-do_install () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- install -d ${D}${sysconfdir}/init.d
- oe_runmake "PREFIX=${D}" install
- cp -pPR ${S}/_install/* ${D}/
-
- # Move everything to /busybox (not supposed to end up in any package)
- install -d ${D}/busybox
- ls ${D} -R
-
- cp -dPr ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
- # Move the busybox binary back to /bin
- install -d ${D}${base_bindir}
- mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
- # Move back the sh symlink
- test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
-
- install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
- install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
- if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
- # Move crond back to /usr/sbin/crond
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
- # Move httpd back to /usr/sbin/httpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
- install -d ${D}/srv/www
- fi
- if grep "CONFIG_APP_UDHCPD=y" ${WORKDIR}/defconfig; then
- # Move udhcpd back to /usr/sbin/udhcpd
- install -d ${D}${sbindir}
- mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
-
- install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
- # Move hwclock back to /sbin/hwclock
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
-
- install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
- fi
- if grep "CONFIG_APP_UDHCPC=y" ${WORKDIR}/defconfig; then
- # Move dhcpc back to /usr/sbin/udhcpc
- install -d ${D}${base_sbindir}
- mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
-
- install -d ${D}${sysconfdir}/udhcpc.d
- install -d ${D}${datadir}/udhcpc
- install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
- install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
- fi
-
- install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
-}
-
-pkg_prerm_${PN} () {
- # This is so you can make busybox commit suicide - removing busybox with no other packages
- # providing its files, this will make update-alternatives work, but the update-rc.d part
- # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
- tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
- ln -s /bin/busybox $tmpdir/[
- ln -s /bin/busybox $tmpdir/test
- ln -s /bin/busybox $tmpdir/head
- ln -s /bin/busybox $tmpdir/sh
- ln -s /bin/busybox $tmpdir/basename
- ln -s /bin/busybox $tmpdir/echo
- ln -s /bin/busybox $tmpdir/mv
- ln -s /bin/busybox $tmpdir/ln
- ln -s /bin/busybox $tmpdir/dirname
- ln -s /bin/busybox $tmpdir/rm
- ln -s /bin/busybox $tmpdir/sed
- ln -s /bin/busybox $tmpdir/sort
- export PATH=$PATH:$tmpdir
- while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
-}
diff --git a/packages/busybox/busybox_1.7.2.bb b/packages/busybox/busybox_1.7.2.bb
index 98ed135f66..75f59cf932 100644
--- a/packages/busybox/busybox_1.7.2.bb
+++ b/packages/busybox/busybox_1.7.2.bb
@@ -1,8 +1,5 @@
require busybox.inc
-
-PR = "r4"
-
-DEFAULT_PREFERENCE = "-1"
+PR = "r8"
SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
file://busybox-cron \
@@ -15,16 +12,15 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
file://syslog.conf \
file://udhcpscript.patch;patch=1 \
file://umount.busybox \
- file://run_parts.c"
-
+ file://run_parts.c"
SRC_URI += "http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-ash.patch;patch=1 \
http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-iptun.patch;patch=1 \
- http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-logger.patch;patch=1 \
- http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-tail.patch;patch=1 \
+ http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-logger.patch;patch=1 \
+ http://busybox.net/downloads/fixes-1.7.2/busybox-1.7.2-tail.patch;patch=1 \
file://defconfig"
-EXTRA_OEMAKE_append = " V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
+EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
do_configure () {
cp ${WORKDIR}/run_parts.c ${S}/debianutils/
@@ -33,12 +29,12 @@ do_configure () {
}
do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- base_do_compile
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ base_do_compile
}
do_install () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
install -d ${D}${sysconfdir}/init.d
oe_runmake "PREFIX=${D}" install
cp -pPR ${S}/_install/* ${D}/
diff --git a/packages/busybox/busybox_1.9.1.bb b/packages/busybox/busybox_1.9.1.bb
new file mode 100644
index 0000000000..3f8184fcc0
--- /dev/null
+++ b/packages/busybox/busybox_1.9.1.bb
@@ -0,0 +1,113 @@
+require busybox.inc
+PR = "r2"
+
+SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
+ http://busybox.net/downloads/fixes-1.9.1/busybox-1.9.1-lineedit.patch;patch=1 \
+ file://udhcpscript.patch;patch=1 \
+ file://adduser-longops.patch;patch=1 \
+ file://sort-z-nul.patch;patch=1;status=upstream \
+ file://busybox-cron \
+ file://busybox-httpd \
+ file://busybox-udhcpd \
+ file://default.script \
+ file://hwclock.sh \
+ file://mount.busybox \
+ file://syslog \
+ file://syslog.conf \
+ file://umount.busybox \
+ file://defconfig"
+
+EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
+
+do_configure () {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+ cml1_do_configure
+}
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ base_do_compile
+}
+
+do_install () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ install -d ${D}${sysconfdir}/init.d
+ oe_runmake "PREFIX=${D}" install
+ cp -pPR ${S}/_install/* ${D}/
+
+ # Move everything to /busybox (not supposed to end up in any package)
+ install -d ${D}/busybox
+ ls ${D} -R
+
+ cp -dPr ${D}${base_bindir} ${D}${base_sbindir} ${D}${prefix} ${D}/busybox/
+ # Move the busybox binary back to /bin
+ install -d ${D}${base_bindir}
+ mv ${D}/busybox${base_bindir}/busybox ${D}${base_bindir}/
+ # Move back the sh symlink
+ test -h ${D}/busybox${base_bindir}/sh && mv ${D}/busybox${base_bindir}/sh ${D}${base_bindir}/
+
+ install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/
+ install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/
+ if grep "CONFIG_CROND=y" ${WORKDIR}/defconfig; then
+ # Move crond back to /usr/sbin/crond
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/crond ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_HTTPD=y" ${WORKDIR}/defconfig; then
+ # Move httpd back to /usr/sbin/httpd
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/httpd ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/
+ install -d ${D}/srv/www
+ fi
+ if grep "CONFIG_APP_UDHCPD=y" ${WORKDIR}/defconfig; then
+ # Move udhcpd back to /usr/sbin/udhcpd
+ install -d ${D}${sbindir}
+ mv ${D}/busybox${sbindir}/udhcpd ${D}${sbindir}/
+
+ install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_HWCLOCK=y" ${WORKDIR}/defconfig; then
+ # Move hwclock back to /sbin/hwclock
+ install -d ${D}${base_sbindir}
+ mv ${D}/busybox${base_sbindir}/hwclock ${D}${base_sbindir}/
+
+ install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
+ fi
+ if grep "CONFIG_APP_UDHCPC=y" ${WORKDIR}/defconfig; then
+ # Move dhcpc back to /usr/sbin/udhcpc
+ install -d ${D}${base_sbindir}
+ mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
+
+ install -d ${D}${sysconfdir}/udhcpc.d
+ install -d ${D}${datadir}/udhcpc
+ install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
+ install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
+ fi
+
+ install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
+}
+
+pkg_prerm_${PN} () {
+ # This is so you can make busybox commit suicide - removing busybox with no other packages
+ # providing its files, this will make update-alternatives work, but the update-rc.d part
+ # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
+ tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
+ ln -s /bin/busybox $tmpdir/[
+ ln -s /bin/busybox $tmpdir/test
+ ln -s /bin/busybox $tmpdir/head
+ ln -s /bin/busybox $tmpdir/sh
+ ln -s /bin/busybox $tmpdir/basename
+ ln -s /bin/busybox $tmpdir/echo
+ ln -s /bin/busybox $tmpdir/mv
+ ln -s /bin/busybox $tmpdir/ln
+ ln -s /bin/busybox $tmpdir/dirname
+ ln -s /bin/busybox $tmpdir/rm
+ ln -s /bin/busybox $tmpdir/sed
+ ln -s /bin/busybox $tmpdir/sort
+ export PATH=$PATH:$tmpdir
+ while read link; do case "$link" in /*/*/*) to="../../bin/busybox";; /bin/*) to="busybox";; /*/*) to="../bin/busybox";; esac; bn=`basename $link`; sh /usr/bin/update-alternatives --remove $bn $to; done </etc/busybox.links
+}
diff --git a/packages/busybox/files/install-should-unlink-dest-if-it-exists.patch b/packages/busybox/files/install-should-unlink-dest-if-it-exists.patch
new file mode 100644
index 0000000000..4bec313f0e
--- /dev/null
+++ b/packages/busybox/files/install-should-unlink-dest-if-it-exists.patch
@@ -0,0 +1,53 @@
+---
+ coreutils/install.c | 2 +-
+ include/libbb.h | 3 ++-
+ libbb/copy_file.c | 9 +++++++++
+ 3 files changed, 12 insertions(+), 2 deletions(-)
+
+Index: busybox-1.2.1/coreutils/install.c
+===================================================================
+--- busybox-1.2.1.orig/coreutils/install.c 2006-10-19 16:33:48.000000000 +0200
++++ busybox-1.2.1/coreutils/install.c 2006-10-19 16:35:58.000000000 +0200
+@@ -59,7 +59,7 @@ int install_main(int argc, char **argv)
+ char *gid_str = "-1";
+ char *uid_str = "-1";
+ char *mode_str = "0755";
+- int copy_flags = FILEUTILS_DEREFERENCE | FILEUTILS_FORCE;
++ int copy_flags = FILEUTILS_DEREFERENCE | FILEUTILS_FORCE | FILEUTILS_NO_TRUNC;
+ int ret = EXIT_SUCCESS, flags, i, isdir;
+
+ #if ENABLE_FEATURE_INSTALL_LONG_OPTIONS
+Index: busybox-1.2.1/include/libbb.h
+===================================================================
+--- busybox-1.2.1.orig/include/libbb.h 2006-10-19 16:24:50.000000000 +0200
++++ busybox-1.2.1/include/libbb.h 2006-10-19 16:32:40.000000000 +0200
+@@ -345,7 +345,8 @@ enum { /* DO NOT CHANGE THESE VALUES! c
+ FILEUTILS_DEREFERENCE = 2,
+ FILEUTILS_RECUR = 4,
+ FILEUTILS_FORCE = 8,
+- FILEUTILS_INTERACTIVE = 16
++ FILEUTILS_INTERACTIVE = 16,
++ FILEUTILS_NO_TRUNC = 32
+ };
+
+ extern const char *bb_applet_name;
+Index: busybox-1.2.1/libbb/copy_file.c
+===================================================================
+--- busybox-1.2.1.orig/libbb/copy_file.c 2006-10-19 16:26:53.000000000 +0200
++++ busybox-1.2.1/libbb/copy_file.c 2006-10-19 16:32:28.000000000 +0200
+@@ -136,6 +136,15 @@ int copy_file(const char *source, const
+ }
+ }
+
++ if (flags & FILEUTILS_NO_TRUNC) {
++ if (unlink(dest) < 0) {
++ bb_perror_msg("unable to remove `%s'", dest);
++ close(src_fd);
++ return -1;
++ }
++ goto dest_removed;
++ }
++
+ dst_fd = open(dest, O_WRONLY|O_TRUNC);
+ if (dst_fd == -1) {
+ if (!(flags & FILEUTILS_FORCE)) {
diff --git a/packages/busybox/busybox-1.7.2/run_parts.c b/packages/busybox/files/run_parts.c
index 56f70c6eea..56f70c6eea 100644
--- a/packages/busybox/busybox-1.7.2/run_parts.c
+++ b/packages/busybox/files/run_parts.c
diff --git a/packages/busybox/files/syslog b/packages/busybox/files/syslog
index a999565e84..61d273b7cb 100644
--- a/packages/busybox/files/syslog
+++ b/packages/busybox/files/syslog
@@ -11,7 +11,7 @@ if [ -f /etc/syslog.conf ]; then
LOG_REMOTE=0
for D in $DESTINATION; do
if [ "$D" = "buffer" ]; then
- SYSLOG_ARGS="$SYSLOG_ARGS -C $BUFFERSIZE"
+ SYSLOG_ARGS="$SYSLOG_ARGS -C$BUFFERSIZE"
LOG_LOCAL=1
elif [ "$D" = "file" ]; then
if [ -n "$LOGFILE" ]; then
diff --git a/packages/busybox/slingbox-1.00/defconfig b/packages/busybox/slingbox-1.00/defconfig
deleted file mode 100644
index 6b15e1944b..0000000000
--- a/packages/busybox/slingbox-1.00/defconfig
+++ /dev/null
@@ -1,334 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_FEATURE_DEVPTS is not set
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="armv5b-softfloat-linux-"
-EXTRA_CFLAGS_OPTIONS=""
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-PREFIX="/"
-
-#
-# Archival Utilities
-#
-# CONFIG_AR is not set
-CONFIG_BUNZIP2=y
-# CONFIG_CPIO is not set
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_FROM is not set
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_UNCOMPRESS=y
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-
-#
-# Coreutils
-#
-# CONFIG_BASENAME is not set
-# CONFIG_CAL is not set
-# CONFIG_CAT is not set
-# CONFIG_CHGRP is not set
-# CONFIG_CHMOD is not set
-# CONFIG_CHOWN is not set
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-# CONFIG_CP is not set
-CONFIG_CUT=y
-# CONFIG_DATE is not set
-# CONFIG_DD is not set
-# CONFIG_DF is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-CONFIG_DU=y
-# CONFIG_ECHO is not set
-# CONFIG_ENV is not set
-CONFIG_EXPR=y
-# CONFIG_FALSE is not set
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-# CONFIG_HOSTID is not set
-# CONFIG_ID is not set
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-# CONFIG_LN is not set
-# CONFIG_LOGNAME is not set
-# CONFIG_LS is not set
-CONFIG_MD5SUM=y
-# CONFIG_MKDIR is not set
-CONFIG_MKFIFO=y
-# CONFIG_MKNOD is not set
-# CONFIG_MV is not set
-# CONFIG_OD is not set
-# CONFIG_PRINTF is not set
-# CONFIG_PWD is not set
-# CONFIG_REALPATH is not set
-# CONFIG_RM is not set
-CONFIG_RMDIR=y
-# CONFIG_SEQ is not set
-# CONFIG_SHA1SUM is not set
-# CONFIG_SLEEP is not set
-CONFIG_SORT=y
-# CONFIG_STTY is not set
-# CONFIG_SYNC is not set
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_TEST is not set
-# CONFIG_TOUCH is not set
-# CONFIG_TR is not set
-# CONFIG_TRUE is not set
-# CONFIG_TTY is not set
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-# CONFIG_WATCH is not set
-# CONFIG_WC is not set
-# CONFIG_WHO is not set
-# CONFIG_WHOAMI is not set
-# CONFIG_YES is not set
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-# CONFIG_CLEAR is not set
-# CONFIG_DEALLOCVT is not set
-# CONFIG_DUMPKMAP is not set
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-# CONFIG_OPENVT is not set
-# CONFIG_RESET is not set
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-# CONFIG_READLINK is not set
-# CONFIG_RUN_PARTS is not set
-# CONFIG_START_STOP_DAEMON is not set
-# CONFIG_WHICH is not set
-
-#
-# Editors
-#
-CONFIG_AWK=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-# CONFIG_VI is not set
-
-#
-# Finding Utilities
-#
-# CONFIG_FIND is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-# CONFIG_FEATURE_GREP_CONTEXT is not set
-# CONFIG_XARGS is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_HALT is not set
-# CONFIG_POWEROFF is not set
-# CONFIG_REBOOT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-# CONFIG_LOGIN is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_CROND is not set
-# CONFIG_CRONTAB is not set
-# CONFIG_DC is not set
-# CONFIG_DEVFSD is not set
-# CONFIG_LAST is not set
-# CONFIG_HDPARM is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_MT is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_RMMOD is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_FEATURE_IPV6 is not set
-# CONFIG_ARPING is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_HOSTNAME is not set
-# CONFIG_HTTPD is not set
-# CONFIG_IFCONFIG is not set
-# CONFIG_IFUPDOWN is not set
-# CONFIG_INETD is not set
-# CONFIG_IP is not set
-# CONFIG_IPCALC is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NETSTAT is not set
-# CONFIG_NSLOOKUP is not set
-# CONFIG_PING is not set
-# CONFIG_ROUTE is not set
-# CONFIG_TELNET is not set
-# CONFIG_TELNETD is not set
-# CONFIG_TFTP is not set
-# CONFIG_TRACEROUTE is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-# CONFIG_FEATURE_WGET_STATUSBAR is not set
-# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
-# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-# CONFIG_UDHCPC is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-# CONFIG_KILL is not set
-# CONFIG_PIDOF is not set
-# CONFIG_PS is not set
-# CONFIG_RENICE is not set
-# CONFIG_TOP is not set
-# CONFIG_UPTIME is not set
-# CONFIG_SYSCTL is not set
-
-#
-# Another Bourne-like Shell
-#
-# CONFIG_FEATURE_SH_IS_ASH is not set
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-CONFIG_FEATURE_SH_IS_NONE=y
-# CONFIG_ASH is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# System Logging Utilities
-#
-# CONFIG_SYSLOGD is not set
-# CONFIG_LOGGER is not set
-
-#
-# Linux System Utilities
-#
-# CONFIG_DMESG is not set
-# CONFIG_FBSET is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-# CONFIG_FDISK is not set
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-CONFIG_LOSETUP=y
-# CONFIG_MKSWAP is not set
-# CONFIG_MORE is not set
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_SWAPONOFF is not set
-CONFIG_MOUNT=y
-CONFIG_NFSMOUNT=y
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_MOUNT_FORCE=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
diff --git a/packages/busybox/slingbox-1.00/lazy_umount.patch b/packages/busybox/slingbox-1.00/lazy_umount.patch
deleted file mode 100644
index 0608017e70..0000000000
--- a/packages/busybox/slingbox-1.00/lazy_umount.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- busybox-1.00-orig/util-linux/umount.c 2005-12-16 23:13:33.000000000 -0600
-+++ busybox-1.00/util-linux/umount.c 2005-12-16 23:16:49.000000000 -0600
-@@ -35,6 +35,7 @@
- #endif
-
- static const int MNT_FORCE = 1;
-+static const int MNT_DETACH = 2; /* Linksys -L mod */
- static const int MS_MGC_VAL = 0xc0ed0000; /* Magic number indicatng "new" flags */
- static const int MS_REMOUNT = 32; /* Alter flags of a mounted FS. */
- static const int MS_RDONLY = 1; /* Mount read-only. */
-@@ -54,7 +55,7 @@
- static struct _mtab_entry_t *mtab_cache = NULL;
-
-
--
-+static int doLazy = FALSE; /* Linksys -L mod */
- #if defined CONFIG_FEATURE_MOUNT_FORCE
- static int doForce = FALSE;
- #endif
-@@ -181,6 +182,12 @@
- /* this was a loop device, delete it */
- del_loop(blockDevice);
- #endif
-+ if (status != 0 && doLazy) { /* Linksys -L mod */
-+ status = umount2(blockDevice, MNT_DETACH);
-+ if (status != 0) {
-+ bb_error_msg_and_die("lazy umount of %s failed!", blockDevice);
-+ }
-+ }
- #if defined CONFIG_FEATURE_MOUNT_FORCE
- if (status != 0 && doForce) {
- status = umount2(blockDevice, MNT_FORCE);
-@@ -259,6 +266,9 @@
- freeLoop = FALSE;
- break;
- #endif
-+ case 'L': /* Linksys -L mod */
-+ doLazy = TRUE;
-+ break;
- #ifdef CONFIG_FEATURE_MTAB_SUPPORT
- case 'n':
- useMtab = FALSE;
diff --git a/packages/busybox/slingbox-1.00/slingbox.patch b/packages/busybox/slingbox-1.00/slingbox.patch
deleted file mode 100644
index 6f5594b284..0000000000
--- a/packages/busybox/slingbox-1.00/slingbox.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- busybox-1.00-rc3/applets/install.sh 2001-03-09 08:12:11.000000000 +1030
-+++ slingbox/applets/install.sh 2004-08-31 11:27:23.000000000 +0930
-@@ -16,28 +16,28 @@
- h=`sort busybox.links | uniq`
-
-
--rm -f $prefix/bin/busybox || exit 1
-+rm -f $prefix/bin/slingbox || exit 1
- mkdir -p $prefix/bin || exit 1
--install -m 755 busybox $prefix/bin/busybox || exit 1
-+install -m 755 busybox $prefix/bin/slingbox || exit 1
-
- for i in $h ; do
- appdir=`dirname $i`
- mkdir -p $prefix/$appdir || exit 1
- if [ "$2" = "--hardlinks" ]; then
-- bb_path="$prefix/bin/busybox"
-+ bb_path="$prefix/bin/slingbox"
- else
- case "$appdir" in
- /)
-- bb_path="bin/busybox"
-+ bb_path="bin/slingbox"
- ;;
- /bin)
-- bb_path="busybox"
-+ bb_path="slingbox"
- ;;
- /sbin)
-- bb_path="../bin/busybox"
-+ bb_path="../bin/slingbox"
- ;;
- /usr/bin|/usr/sbin)
-- bb_path="../../bin/busybox"
-+ bb_path="../../bin/slingbox"
- ;;
- *)
- echo "Unknown installation directory: $appdir"
diff --git a/packages/busybox/slingbox-1.1.3/Makefile_args.patch b/packages/busybox/slingbox-1.1.3/Makefile_args.patch
deleted file mode 100644
index 7561a89b94..0000000000
--- a/packages/busybox/slingbox-1.1.3/Makefile_args.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- busybox-1.1.2/Makefile.orig 2006-04-10 14:45:46.000000000 -0500
-+++ busybox-1.1.2/Makefile 2006-05-15 00:54:31.000000000 -0500
-@@ -79,6 +79,8 @@
- top_srcdir=$(top_srcdir) \
- top_builddir=$(top_builddir) \
- KBUILD_SRC=$(top_srcdir) \
-+ PREFIX=$(PREFIX) \
-+ CROSS=$(CROSS) \
- -f $(CURDIR)/Makefile $@
-
- $(KBUILD_OUTPUT)/Rules.mak:
diff --git a/packages/busybox/slingbox-1.1.3/defconfig b/packages/busybox/slingbox-1.1.3/defconfig
deleted file mode 100644
index f1fe0d6d2d..0000000000
--- a/packages/busybox/slingbox-1.1.3/defconfig
+++ /dev/null
@@ -1,594 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_FEATURE_VERBOSE_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_FEATURE_DEVPTS is not set
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_DISABLE_SHARED is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="armv5b-softfloat-linux-"
-EXTRA_CFLAGS_OPTIONS=""
-# CONFIG_BUILD_AT_ONCE is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="/"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-# CONFIG_AR is not set
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-# CONFIG_CPIO is not set
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-# CONFIG_FEATURE_TAR_FROM is not set
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-CONFIG_FEATURE_TAR_LONG_OPTIONS=y
-CONFIG_UNCOMPRESS=y
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-# CONFIG_BASENAME is not set
-# CONFIG_CAL is not set
-# CONFIG_CAT is not set
-# CONFIG_CHGRP is not set
-# CONFIG_CHMOD is not set
-# CONFIG_CHOWN is not set
-CONFIG_CHROOT=y
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-# CONFIG_CP is not set
-CONFIG_CUT=y
-# CONFIG_DATE is not set
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-# CONFIG_DD is not set
-# CONFIG_DF is not set
-CONFIG_DIRNAME=y
-# CONFIG_DOS2UNIX is not set
-# CONFIG_UNIX2DOS is not set
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
-# CONFIG_ECHO is not set
-# CONFIG_FEATURE_FANCY_ECHO is not set
-# CONFIG_ENV is not set
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-# CONFIG_FALSE is not set
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-# CONFIG_HOSTID is not set
-# CONFIG_ID is not set
-# CONFIG_INSTALL is not set
-# CONFIG_LENGTH is not set
-# CONFIG_LN is not set
-# CONFIG_LOGNAME is not set
-# CONFIG_LS is not set
-# CONFIG_FEATURE_LS_FILETYPES is not set
-# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
-# CONFIG_FEATURE_LS_RECURSIVE is not set
-# CONFIG_FEATURE_LS_SORTFILES is not set
-# CONFIG_FEATURE_LS_TIMESTAMPS is not set
-# CONFIG_FEATURE_LS_USERNAME is not set
-# CONFIG_FEATURE_LS_COLOR is not set
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-# CONFIG_MKDIR is not set
-CONFIG_MKFIFO=y
-# CONFIG_MKNOD is not set
-# CONFIG_MV is not set
-# CONFIG_NICE is not set
-# CONFIG_NOHUP is not set
-# CONFIG_OD is not set
-# CONFIG_PRINTENV is not set
-# CONFIG_PRINTF is not set
-# CONFIG_PWD is not set
-# CONFIG_REALPATH is not set
-# CONFIG_RM is not set
-CONFIG_RMDIR=y
-# CONFIG_SEQ is not set
-# CONFIG_SHA1SUM is not set
-# CONFIG_SLEEP is not set
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-# CONFIG_FEATURE_SORT_BIG is not set
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-# CONFIG_STTY is not set
-# CONFIG_SUM is not set
-# CONFIG_SYNC is not set
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-# CONFIG_TEST is not set
-# CONFIG_FEATURE_TEST_64 is not set
-# CONFIG_TOUCH is not set
-# CONFIG_TR is not set
-# CONFIG_FEATURE_TR_CLASSES is not set
-# CONFIG_FEATURE_TR_EQUIV is not set
-# CONFIG_TRUE is not set
-# CONFIG_TTY is not set
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-# CONFIG_WATCH is not set
-# CONFIG_WC is not set
-# CONFIG_WHO is not set
-# CONFIG_WHOAMI is not set
-# CONFIG_YES is not set
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-# CONFIG_FEATURE_HUMAN_READABLE is not set
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-# CONFIG_CLEAR is not set
-# CONFIG_DEALLOCVT is not set
-# CONFIG_DUMPKMAP is not set
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-# CONFIG_OPENVT is not set
-# CONFIG_RESET is not set
-# CONFIG_SETCONSOLE is not set
-# CONFIG_SETKEYCODES is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-# CONFIG_READLINK is not set
-# CONFIG_FEATURE_READLINK_FOLLOW is not set
-# CONFIG_RUN_PARTS is not set
-# CONFIG_START_STOP_DAEMON is not set
-# CONFIG_WHICH is not set
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-# CONFIG_VI is not set
-# CONFIG_FEATURE_VI_COLON is not set
-# CONFIG_FEATURE_VI_YANKMARK is not set
-# CONFIG_FEATURE_VI_SEARCH is not set
-# CONFIG_FEATURE_VI_USE_SIGNALS is not set
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-# CONFIG_FEATURE_VI_WIN_RESIZE is not set
-# CONFIG_FEATURE_VI_OPTIMIZE_CURSOR is not set
-
-#
-# Finding Utilities
-#
-# CONFIG_FIND is not set
-# CONFIG_FEATURE_FIND_MTIME is not set
-# CONFIG_FEATURE_FIND_MMIN is not set
-# CONFIG_FEATURE_FIND_PERM is not set
-# CONFIG_FEATURE_FIND_TYPE is not set
-# CONFIG_FEATURE_FIND_XDEV is not set
-# CONFIG_FEATURE_FIND_NEWER is not set
-# CONFIG_FEATURE_FIND_INUM is not set
-# CONFIG_FEATURE_FIND_EXEC is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-# CONFIG_FEATURE_GREP_CONTEXT is not set
-# CONFIG_XARGS is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_HALT is not set
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-# CONFIG_FEATURE_UTMP is not set
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-# CONFIG_CHATTR is not set
-# CONFIG_E2FSCK is not set
-# CONFIG_FSCK is not set
-# CONFIG_LSATTR is not set
-# CONFIG_MKE2FS is not set
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_INSMOD is not set
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-# CONFIG_RMMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
-# CONFIG_FEATURE_2_4_MODULES is not set
-# CONFIG_FEATURE_2_6_MODULES is not set
-# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
-
-#
-# Linux System Utilities
-#
-# CONFIG_DMESG is not set
-# CONFIG_FBSET is not set
-# CONFIG_FEATURE_FBSET_FANCY is not set
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_FEATURE_MINIX2 is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-# CONFIG_FEATURE_HWCLOCK_LONGOPTIONS is not set
-# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_MKSWAP is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-# CONFIG_SWAPONOFF is not set
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-# CONFIG_DC is not set
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-# CONFIG_LESS is not set
-# CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_FEATURE_IPV6 is not set
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_HOSTNAME is not set
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-# CONFIG_IFCONFIG is not set
-# CONFIG_FEATURE_IFCONFIG_STATUS is not set
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-# CONFIG_FEATURE_IFCONFIG_HW is not set
-# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
-# CONFIG_IFUPDOWN is not set
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
-# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-# CONFIG_IP is not set
-# CONFIG_FEATURE_IP_ADDRESS is not set
-# CONFIG_FEATURE_IP_LINK is not set
-# CONFIG_FEATURE_IP_ROUTE is not set
-# CONFIG_FEATURE_IP_TUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-# CONFIG_NETSTAT is not set
-# CONFIG_NSLOOKUP is not set
-# CONFIG_PING is not set
-# CONFIG_FEATURE_FANCY_PING is not set
-# CONFIG_PING6 is not set
-# CONFIG_FEATURE_FANCY_PING6 is not set
-# CONFIG_ROUTE is not set
-# CONFIG_TELNET is not set
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-# CONFIG_TFTP is not set
-# CONFIG_FEATURE_TFTP_GET is not set
-# CONFIG_FEATURE_TFTP_PUT is not set
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_FEATURE_TFTP_DEBUG is not set
-# CONFIG_TRACEROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-# CONFIG_FEATURE_WGET_STATUSBAR is not set
-# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
-# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
-
-#
-# udhcp Server/Client
-#
-# CONFIG_UDHCPD is not set
-# CONFIG_UDHCPC is not set
-# CONFIG_DUMPLEASES is not set
-# CONFIG_FEATURE_UDHCP_SYSLOG is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-# CONFIG_FUSER is not set
-# CONFIG_KILL is not set
-# CONFIG_KILLALL is not set
-# CONFIG_PIDOF is not set
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-# CONFIG_PS is not set
-# CONFIG_FEATURE_PS_WIDE is not set
-# CONFIG_RENICE is not set
-# CONFIG_BB_SYSCTL is not set
-# CONFIG_TOP is not set
-# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set
-# CONFIG_UPTIME is not set
-
-#
-# Shells
-#
-# CONFIG_FEATURE_SH_IS_ASH is not set
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-CONFIG_FEATURE_SH_IS_NONE=y
-# CONFIG_ASH is not set
-# CONFIG_ASH_JOB_CONTROL is not set
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-# CONFIG_ASH_ALIAS is not set
-# CONFIG_ASH_MATH_SUPPORT is not set
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_MAIL is not set
-# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_ASH_EXPAND_PRMT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-# CONFIG_FEATURE_COMMAND_EDITING is not set
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=0
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-# CONFIG_FEATURE_COMMAND_TAB_COMPLETION is not set
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-# CONFIG_FEATURE_SH_FANCY_PROMPT is not set
-
-#
-# System Logging Utilities
-#
-# CONFIG_SYSLOGD is not set
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-# CONFIG_FEATURE_IPC_SYSLOG is not set
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
-# CONFIG_LOGREAD is not set
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-# CONFIG_KLOGD is not set
-# CONFIG_LOGGER is not set
diff --git a/packages/busybox/slingbox-1.1.3/lazy_umount.patch b/packages/busybox/slingbox-1.1.3/lazy_umount.patch
deleted file mode 100644
index d5156d00d3..0000000000
--- a/packages/busybox/slingbox-1.1.3/lazy_umount.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- busybox-1.1.2/util-linux/umount.c~ 2006-03-22 15:16:26.000000000 -0600
-+++ busybox-1.1.2/util-linux/umount.c 2006-05-15 11:43:23.000000000 -0500
-@@ -21,7 +21,7 @@
- #include <getopt.h>
- #include "busybox.h"
-
--#define OPTION_STRING "flDnrvad"
-+#define OPTION_STRING "flDnrvadL"
- #define OPT_FORCE 1
- #define OPT_LAZY 2
- #define OPT_DONTFREELOOP 4
-@@ -29,6 +29,7 @@
- #define OPT_REMOUNT 16
- #define OPT_IGNORED 32 // -v is ignored
- #define OPT_ALL (ENABLE_FEATURE_UMOUNT_ALL ? 64 : 0)
-+#define OPT_LINKSYS_LAZY 256
-
- int umount_main(int argc, char **argv)
- {
-@@ -51,6 +52,8 @@
- argc -= optind;
- argv += optind;
-
-+ if (opt & OPT_LINKSYS_LAZY) opt |= OPT_LAZY; /* -L option same as -l */
-+
- doForce = MAX((opt & OPT_FORCE), (opt & OPT_LAZY));
-
- /* Get a list of mount points from mtab. We read them all in now mostly
diff --git a/packages/busybox/slingbox-1.1.3/slingbox.patch b/packages/busybox/slingbox-1.1.3/slingbox.patch
deleted file mode 100644
index 3759723bce..0000000000
--- a/packages/busybox/slingbox-1.1.3/slingbox.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- slingbox/applets/install.sh.orig 2006-05-14 18:08:17.000000000 -0500
-+++ slingbox/applets/install.sh 2006-05-14 18:10:40.000000000 -0500
-@@ -33,28 +33,28 @@
- fi
- done
- fi
--rm -f $prefix/bin/busybox || exit 1
-+rm -f $prefix/bin/slingbox || exit 1
- mkdir -p $prefix/bin || exit 1
--install -m 755 busybox $prefix/bin/busybox || exit 1
-+install -m 755 busybox $prefix/bin/slingbox || exit 1
-
- for i in $h ; do
- appdir=`dirname $i`
- mkdir -p $prefix/$appdir || exit 1
- if [ "$2" = "--hardlinks" ]; then
-- bb_path="$prefix/bin/busybox"
-+ bb_path="$prefix/bin/slingbox"
- else
- case "$appdir" in
- /)
-- bb_path="bin/busybox"
-+ bb_path="bin/slingbox"
- ;;
- /bin)
-- bb_path="busybox"
-+ bb_path="slingbox"
- ;;
- /sbin)
-- bb_path="../bin/busybox"
-+ bb_path="../bin/slingbox"
- ;;
- /usr/bin|/usr/sbin)
-- bb_path="../../bin/busybox"
-+ bb_path="../../bin/slingbox"
- ;;
- *)
- echo "Unknown installation directory: $appdir"
diff --git a/packages/busybox/slingbox-1.1.3/slingbox_name.patch b/packages/busybox/slingbox-1.1.3/slingbox_name.patch
deleted file mode 100644
index aeb7221fe2..0000000000
--- a/packages/busybox/slingbox-1.1.3/slingbox_name.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- busybox-1.1.2/applets/applets.c~ 2006-03-22 15:16:25.000000000 -0600
-+++ busybox-1.1.2/applets/applets.c 2006-05-15 11:53:18.000000000 -0500
-@@ -447,6 +447,7 @@
- if(ENABLE_FEATURE_SUID_CONFIG) parse_config_file ();
-
- if(!strncmp(name, "busybox", 7)) busybox_main(argc, argv);
-+ if(!strncmp(name, "slingbox", 8)) busybox_main(argc, argv);
- /* Do a binary search to find the applet entry given the name. */
- applet_using = find_applet_by_name(name);
- if(applet_using) {
diff --git a/packages/busybox/slingbox-1.2.2/defconfig b/packages/busybox/slingbox-1.2.2/defconfig
deleted file mode 100644
index 8026cfc2ff..0000000000
--- a/packages/busybox/slingbox-1.2.2/defconfig
+++ /dev/null
@@ -1,643 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_NITPICK is not set
-# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_SHOW_USAGE=y
-CONFIG_FEATURE_VERBOSE_USAGE=y
-CONFIG_FEATURE_COMPRESS_USAGE=y
-# CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_LOCALE_SUPPORT is not set
-CONFIG_GETOPT_LONG=y
-# CONFIG_FEATURE_DEVPTS is not set
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-CONFIG_LFS=y
-USING_CROSS_COMPILER=y
-CROSS_COMPILER_PREFIX="armeb-linux-"
-# CONFIG_BUILD_AT_ONCE is not set
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_NO_DEBUG_LIB is not set
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-CONFIG_DEBUG_YANK_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_INSTALL_NO_USR is not set
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_MD5_SIZE_VS_SPEED=2
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-# CONFIG_AR is not set
-# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
-CONFIG_BUNZIP2=y
-CONFIG_CPIO=y
-# CONFIG_DPKG is not set
-# CONFIG_DPKG_DEB is not set
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
-CONFIG_GZIP=y
-# CONFIG_RPM2CPIO is not set
-# CONFIG_RPM is not set
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_BZIP2=y
-# CONFIG_FEATURE_TAR_LZMA is not set
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_GZIP=y
-CONFIG_FEATURE_TAR_COMPRESS=y
-# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-CONFIG_UNCOMPRESS=y
-# CONFIG_UNLZMA is not set
-# CONFIG_FEATURE_LZMA_FAST is not set
-CONFIG_UNZIP=y
-
-#
-# Common options for cpio and tar
-#
-# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
-# CONFIG_FEATURE_DEB_TAR_GZ is not set
-# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
-# CONFIG_FEATURE_DEB_TAR_LZMA is not set
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-# CONFIG_CAL is not set
-CONFIG_CAT=y
-# CONFIG_CATV is not set
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_CHROOT=y
-# CONFIG_CKSUM is not set
-# CONFIG_CMP is not set
-# CONFIG_COMM is not set
-CONFIG_CP=y
-CONFIG_CUT=y
-# CONFIG_DATE is not set
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-CONFIG_DD=y
-# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
-# CONFIG_FEATURE_DD_IBS_OBS is not set
-CONFIG_DF=y
-# CONFIG_DIFF is not set
-# CONFIG_FEATURE_DIFF_BINARY is not set
-# CONFIG_FEATURE_DIFF_DIR is not set
-# CONFIG_FEATURE_DIFF_MINIMAL is not set
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-# CONFIG_ENV is not set
-# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
-CONFIG_EXPR=y
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-# CONFIG_FALSE is not set
-# CONFIG_FOLD is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-# CONFIG_HOSTID is not set
-CONFIG_ID=y
-# CONFIG_INSTALL is not set
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-# CONFIG_LENGTH is not set
-CONFIG_LN=y
-# CONFIG_LOGNAME is not set
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-# CONFIG_FEATURE_LS_COLOR is not set
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-# CONFIG_NICE is not set
-# CONFIG_NOHUP is not set
-# CONFIG_OD is not set
-# CONFIG_PRINTENV is not set
-# CONFIG_PRINTF is not set
-CONFIG_PWD=y
-# CONFIG_REALPATH is not set
-CONFIG_RM=y
-CONFIG_RMDIR=y
-# CONFIG_SEQ is not set
-# CONFIG_SHA1SUM is not set
-CONFIG_SLEEP=y
-# CONFIG_FEATURE_FANCY_SLEEP is not set
-CONFIG_SORT=y
-# CONFIG_FEATURE_SORT_BIG is not set
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-# CONFIG_STTY is not set
-# CONFIG_SUM is not set
-CONFIG_SYNC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
-CONFIG_TEST=y
-# CONFIG_FEATURE_TEST_64 is not set
-CONFIG_TOUCH=y
-# CONFIG_TR is not set
-# CONFIG_FEATURE_TR_CLASSES is not set
-# CONFIG_FEATURE_TR_EQUIV is not set
-# CONFIG_TRUE is not set
-# CONFIG_TTY is not set
-CONFIG_UNAME=y
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-# CONFIG_UUDECODE is not set
-# CONFIG_UUENCODE is not set
-# CONFIG_WATCH is not set
-# CONFIG_WC is not set
-# CONFIG_WHO is not set
-# CONFIG_WHOAMI is not set
-# CONFIG_YES is not set
-
-#
-# Common options for cp and mv
-#
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_CHVT is not set
-# CONFIG_CLEAR is not set
-# CONFIG_DEALLOCVT is not set
-# CONFIG_DUMPKMAP is not set
-# CONFIG_LOADFONT is not set
-# CONFIG_LOADKMAP is not set
-# CONFIG_OPENVT is not set
-# CONFIG_RESET is not set
-# CONFIG_SETCONSOLE is not set
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETKEYCODES is not set
-# CONFIG_SETLOGCONS is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-# CONFIG_PIPE_PROGRESS is not set
-# CONFIG_READLINK is not set
-# CONFIG_FEATURE_READLINK_FOLLOW is not set
-# CONFIG_RUN_PARTS is not set
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-# CONFIG_START_STOP_DAEMON is not set
-# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
-# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
-# CONFIG_WHICH is not set
-
-#
-# Editors
-#
-CONFIG_AWK=y
-CONFIG_FEATURE_AWK_MATH=y
-# CONFIG_ED is not set
-# CONFIG_PATCH is not set
-CONFIG_SED=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_COLON=y
-CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_FEATURE_VI_SEARCH=y
-# CONFIG_FEATURE_VI_USE_SIGNALS is not set
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-# CONFIG_FEATURE_VI_WIN_RESIZE is not set
-CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-# CONFIG_FEATURE_FIND_PRINT0 is not set
-# CONFIG_FEATURE_FIND_MTIME is not set
-# CONFIG_FEATURE_FIND_MMIN is not set
-# CONFIG_FEATURE_FIND_PERM is not set
-CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_FEATURE_FIND_XDEV=y
-# CONFIG_FEATURE_FIND_NEWER is not set
-# CONFIG_FEATURE_FIND_INUM is not set
-# CONFIG_FEATURE_FIND_EXEC is not set
-CONFIG_GREP=y
-CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-# CONFIG_FEATURE_GREP_CONTEXT is not set
-# CONFIG_XARGS is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
-# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
-
-#
-# Init Utilities
-#
-# CONFIG_INIT is not set
-# CONFIG_DEBUG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-CONFIG_HALT=y
-# CONFIG_MESG is not set
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_DELUSER is not set
-# CONFIG_GETTY is not set
-# CONFIG_FEATURE_UTMP is not set
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_LOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-# CONFIG_CHATTR is not set
-# CONFIG_E2FSCK is not set
-# CONFIG_FSCK is not set
-# CONFIG_LSATTR is not set
-# CONFIG_MKE2FS is not set
-# CONFIG_TUNE2FS is not set
-# CONFIG_E2LABEL is not set
-# CONFIG_FINDFS is not set
-
-#
-# Linux Module Utilities
-#
-CONFIG_INSMOD=y
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_RMMOD=y
-CONFIG_LSMOD=y
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-CONFIG_FEATURE_2_4_MODULES=y
-# CONFIG_FEATURE_2_6_MODULES is not set
-CONFIG_FEATURE_QUERY_MODULE_INTERFACE=y
-
-#
-# Linux System Utilities
-#
-CONFIG_DMESG=y
-# CONFIG_FBSET is not set
-# CONFIG_FEATURE_FBSET_FANCY is not set
-# CONFIG_FEATURE_FBSET_READMODE is not set
-# CONFIG_FDFLUSH is not set
-# CONFIG_FDFORMAT is not set
-CONFIG_FDISK=y
-FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_FDISK_ADVANCED is not set
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_FEATURE_MINIX2 is not set
-# CONFIG_GETOPT is not set
-CONFIG_HEXDUMP=y
-# CONFIG_HWCLOCK is not set
-# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
-# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-CONFIG_MKSWAP=y
-# CONFIG_FEATURE_MKSWAP_V0 is not set
-CONFIG_MORE=y
-CONFIG_FEATURE_USE_TERMIOS=y
-CONFIG_MOUNT=y
-CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_PIVOT_ROOT=y
-# CONFIG_RDATE is not set
-# CONFIG_READPROFILE is not set
-# CONFIG_SETARCH is not set
-CONFIG_SWAPONOFF=y
-# CONFIG_SWITCH_ROOT is not set
-CONFIG_UMOUNT=y
-CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_CROND is not set
-# CONFIG_DEBUG_CROND_OPTION is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-# CONFIG_CRONTAB is not set
-# CONFIG_DC is not set
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-# CONFIG_EJECT is not set
-# CONFIG_LAST is not set
-# CONFIG_LESS is not set
-# CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_FEATURE_LESS_FLAGCS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_HDPARM is not set
-# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
-# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
-# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
-# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
-# CONFIG_MAKEDEVS is not set
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-# CONFIG_RUNLEVEL is not set
-# CONFIG_RX is not set
-CONFIG_STRINGS=y
-# CONFIG_SETSID is not set
-# CONFIG_TASKSET is not set
-# CONFIG_TIME is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_FEATURE_IPV6 is not set
-# CONFIG_ARPING is not set
-# CONFIG_DNSD is not set
-# CONFIG_ETHER_WAKE is not set
-# CONFIG_FAKEIDENTD is not set
-# CONFIG_FTPGET is not set
-# CONFIG_FTPPUT is not set
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-CONFIG_HOSTNAME=y
-# CONFIG_HTTPD is not set
-# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
-# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
-# CONFIG_FEATURE_HTTPD_SETUID is not set
-# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
-# CONFIG_FEATURE_HTTPD_CGI is not set
-# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
-# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
-# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-# CONFIG_IFUPDOWN is not set
-# CONFIG_FEATURE_IFUPDOWN_IP is not set
-# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
-# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-# CONFIG_FEATURE_IFUPDOWN_IPX is not set
-# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-# CONFIG_IP is not set
-# CONFIG_FEATURE_IP_ADDRESS is not set
-# CONFIG_FEATURE_IP_LINK is not set
-# CONFIG_FEATURE_IP_ROUTE is not set
-# CONFIG_FEATURE_IP_TUNNEL is not set
-# CONFIG_FEATURE_IP_SHORT_FORMS is not set
-# CONFIG_IPADDR is not set
-# CONFIG_IPLINK is not set
-# CONFIG_IPROUTE is not set
-# CONFIG_IPTUNNEL is not set
-# CONFIG_IPCALC is not set
-# CONFIG_FEATURE_IPCALC_FANCY is not set
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-# CONFIG_NAMEIF is not set
-CONFIG_NC=y
-# CONFIG_NC_GAPING_SECURITY_HOLE is not set
-# CONFIG_NETSTAT is not set
-# CONFIG_NSLOOKUP is not set
-CONFIG_PING=y
-CONFIG_FEATURE_FANCY_PING=y
-# CONFIG_PING6 is not set
-# CONFIG_FEATURE_FANCY_PING6 is not set
-CONFIG_ROUTE=y
-# CONFIG_TELNET is not set
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_INETD is not set
-# CONFIG_TFTP is not set
-# CONFIG_FEATURE_TFTP_GET is not set
-# CONFIG_FEATURE_TFTP_PUT is not set
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_DEBUG_TFTP is not set
-# CONFIG_TRACEROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-
-#
-# udhcp Server/Client
-#
-# CONFIG_APP_UDHCPD is not set
-# CONFIG_APP_UDHCPC is not set
-# CONFIG_APP_DUMPLEASES is not set
-# CONFIG_FEATURE_UDHCP_SYSLOG is not set
-# CONFIG_FEATURE_UDHCP_DEBUG is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-# CONFIG_FEATURE_WGET_STATUSBAR is not set
-# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
-# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
-CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_ZCIP is not set
-
-#
-# Process Utilities
-#
-CONFIG_FREE=y
-# CONFIG_FUSER is not set
-CONFIG_KILL=y
-CONFIG_KILLALL=y
-CONFIG_PIDOF=y
-# CONFIG_FEATURE_PIDOF_SINGLE is not set
-# CONFIG_FEATURE_PIDOF_OMIT is not set
-CONFIG_PS=y
-# CONFIG_FEATURE_PS_WIDE is not set
-# CONFIG_RENICE is not set
-# CONFIG_BB_SYSCTL is not set
-# CONFIG_TOP is not set
-# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set
-# CONFIG_UPTIME is not set
-
-#
-# Shells
-#
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_LASH is not set
-# CONFIG_FEATURE_SH_IS_MSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_ASH=y
-
-#
-# Ash Shell Options
-#
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_READ_NCHARS is not set
-# CONFIG_ASH_READ_TIMEOUT is not set
-# CONFIG_ASH_ALIAS is not set
-CONFIG_ASH_MATH_SUPPORT=y
-# CONFIG_ASH_MATH_SUPPORT_64 is not set
-# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_ASH_EXPAND_PRMT is not set
-# CONFIG_HUSH is not set
-# CONFIG_LASH is not set
-# CONFIG_MSH is not set
-
-#
-# Bourne Shell Options
-#
-# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
-# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
-CONFIG_FEATURE_COMMAND_EDITING=y
-# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
-CONFIG_FEATURE_COMMAND_HISTORY=15
-# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
-CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
-# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
-# CONFIG_FEATURE_SH_FANCY_PROMPT is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_SYSLOGD=y
-CONFIG_FEATURE_ROTATE_LOGFILE=y
-# CONFIG_FEATURE_REMOTE_LOG is not set
-# CONFIG_FEATURE_IPC_SYSLOG is not set
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
-# CONFIG_LOGREAD is not set
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-# CONFIG_LOGGER is not set
diff --git a/packages/busybox/slingbox-1.2.2/df_rootfs.patch b/packages/busybox/slingbox-1.2.2/df_rootfs.patch
deleted file mode 100644
index fa7e61af15..0000000000
--- a/packages/busybox/slingbox-1.2.2/df_rootfs.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- busybox-1.2.2/coreutils/df.c.orig 2006-11-11 13:25:00.000000000 -0600
-+++ busybox-1.2.2/coreutils/df.c 2006-11-11 13:23:15.000000000 -0600
-@@ -47,6 +47,7 @@
- struct statfs s;
- static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */
- const char *disp_units_hdr = hdr_1k;
-+ int root_done = 0;
-
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
- bb_opt_complementally = "h-km:k-hm:m-hk";
-@@ -112,16 +113,19 @@
- ) / (blocks_used + s.f_bavail);
- }
-
-- if (strcmp(device, "rootfs") == 0) {
-- continue;
-- } else if (strcmp(device, "/dev/root") == 0) {
-+ if (strcmp(device, "/dev/root") == 0 || strcmp(device, "rootfs") == 0) {
- /* Adjusts device to be the real root device,
- * or leaves device alone if it can't find it */
-- if ((device = find_block_device("/")) == NULL) {
-+ if ((device = find_block_device(mount_point)) == NULL) {
- goto SET_ERROR;
- }
- }
-
-+ if (strcmp(mount_point, "/") == 0) {
-+ if (root_done) continue;
-+ root_done = 1;
-+ }
-+
- #ifdef CONFIG_FEATURE_HUMAN_READABLE
- bb_printf("%-20s %9s ", device,
- make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
diff --git a/packages/busybox/slingbox-1.2.2/halt.patch b/packages/busybox/slingbox-1.2.2/halt.patch
deleted file mode 100644
index c52e35a8d5..0000000000
--- a/packages/busybox/slingbox-1.2.2/halt.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -Naur busybox-1.2.2/init.orig/halt.c busybox-1.2.2/init/halt.c
---- busybox-1.2.2/init.orig/halt.c 2006-11-10 13:39:29.000000000 -0600
-+++ busybox-1.2.2/init/halt.c 2006-11-10 13:39:09.000000000 -0600
-@@ -12,6 +12,8 @@
- #include <sys/reboot.h>
- #include <unistd.h>
-
-+#include "init_shared.h" /* Linksys mods */
-+
- int halt_main(int argc, char *argv[])
- {
- static const int magic[] = {
-@@ -40,6 +42,12 @@
- if (flags&1) sleep(atoi(delay));
- if (!(flags&2)) sync();
-
-+/* Linksys Halt code - adapted from the Linksys source for Busybox. */
-+ rc = bb_shutdown_system(magic[which]);
-+ if (rc) bb_error_msg("No.");
-+ return rc; /* Shrug */
-+/* End of Linksys code */
-+
- /* Perform action. */
- if (ENABLE_INIT && !(flags & 4)) {
- if (ENABLE_FEATURE_INITRD) {
-diff -Naur busybox-1.2.2/init.orig/init_shared.c busybox-1.2.2/init/init_shared.c
---- busybox-1.2.2/init.orig/init_shared.c 2006-11-10 13:39:29.000000000 -0600
-+++ busybox-1.2.2/init/init_shared.c 2006-11-10 13:38:37.000000000 -0600
-@@ -62,6 +62,11 @@
-
- sync();
-
-+/* Linksys Halt code - if poweroff or halt, invoke an external program
-+ to do actually turn off the power. */
-+ if (magic != 0x01234567) system("/usr/bin/Set_Led power_off");
-+/* End of Linksys Halt code */
-+
- reboot(magic);
- return 0; /* Shrug */
- }
diff --git a/packages/busybox/slingbox-1.2.2/lazy_umount.patch b/packages/busybox/slingbox-1.2.2/lazy_umount.patch
deleted file mode 100644
index 345272b8c3..0000000000
--- a/packages/busybox/slingbox-1.2.2/lazy_umount.patch
+++ /dev/null
@@ -1,27 +0,0 @@
----busybox-1.2.2/util-linux/umount.c~ 2006-11-04 17:59:20.000000000 -0600
-+++ busybox-1.2.2/util-linux/umount.c 2006-11-04 18:03:55.000000000 -0600
-@@ -16,13 +16,14 @@
- #include <errno.h>
- #include <getopt.h>
-
--#define OPTION_STRING "flDnravd"
-+#define OPTION_STRING "flDnravdL"
- #define OPT_FORCE 1
- #define OPT_LAZY 2
- #define OPT_DONTFREELOOP 4
- #define OPT_NO_MTAB 8
- #define OPT_REMOUNT 16
- #define OPT_ALL (ENABLE_FEATURE_UMOUNT_ALL ? 32 : 0)
-+#define OPT_LINKSYS_LAZY 256
-
- int umount_main(int argc, char **argv)
- {
-@@ -45,6 +46,8 @@
- argc -= optind;
- argv += optind;
-
-+ if (opt & OPT_LINKSYS_LAZY) opt |= OPT_LAZY; /* -L same as -l */
-+
- doForce = MAX((opt & OPT_FORCE), (opt & OPT_LAZY));
-
- /* Get a list of mount points from mtab. We read them all in now mostly
diff --git a/packages/busybox/slingbox-1.2.2/slingbox.patch b/packages/busybox/slingbox-1.2.2/slingbox.patch
deleted file mode 100644
index 15f21ed4d0..0000000000
--- a/packages/busybox/slingbox-1.2.2/slingbox.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- slingbox/applets/install.sh.orig 2006-11-04 18:08:47.000000000 -0600
-+++ slingbox/applets/install.sh 2006-11-04 18:11:46.000000000 -0600
-@@ -39,8 +39,8 @@
- done
- fi
-
--if [ "$cleanup" = "1" ] && [ -e "$prefix/bin/busybox" ]; then
-- inode=`ls -i "$prefix/bin/busybox" | awk '{print $1}'`
-+if [ "$cleanup" = "1" ] && [ -e "$prefix/bin/slingbox" ]; then
-+ inode=`ls -i "$prefix/bin/slingbox" | awk '{print $1}'`
- sub_shell_it=`
- cd "$prefix"
- for d in usr/sbin usr/bin sbin bin ; do
-@@ -54,28 +54,28 @@
- `
- fi
-
--rm -f $prefix/bin/busybox || exit 1
-+rm -f $prefix/bin/slingbox || exit 1
- mkdir -p $prefix/bin || exit 1
--install -m 755 busybox $prefix/bin/busybox || exit 1
-+install -m 755 busybox $prefix/bin/slingbox || exit 1
-
- for i in $h ; do
- appdir=`dirname $i`
- mkdir -p $prefix/$appdir || exit 1
- if [ "$2" = "--hardlinks" ]; then
-- bb_path="$prefix/bin/busybox"
-+ bb_path="$prefix/bin/slingbox"
- else
- case "$appdir" in
- /)
-- bb_path="bin/busybox"
-+ bb_path="bin/slingbox"
- ;;
- /bin)
-- bb_path="busybox"
-+ bb_path="slingbox"
- ;;
- /sbin)
-- bb_path="../bin/busybox"
-+ bb_path="../bin/slingbox"
- ;;
- /usr/bin|/usr/sbin)
-- bb_path="../../bin/busybox"
-+ bb_path="../../bin/slingbox"
- ;;
- *)
- echo "Unknown installation directory: $appdir"
diff --git a/packages/busybox/slingbox-1.2.2/slingbox_name.patch b/packages/busybox/slingbox-1.2.2/slingbox_name.patch
deleted file mode 100644
index aeb7221fe2..0000000000
--- a/packages/busybox/slingbox-1.2.2/slingbox_name.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- busybox-1.1.2/applets/applets.c~ 2006-03-22 15:16:25.000000000 -0600
-+++ busybox-1.1.2/applets/applets.c 2006-05-15 11:53:18.000000000 -0500
-@@ -447,6 +447,7 @@
- if(ENABLE_FEATURE_SUID_CONFIG) parse_config_file ();
-
- if(!strncmp(name, "busybox", 7)) busybox_main(argc, argv);
-+ if(!strncmp(name, "slingbox", 8)) busybox_main(argc, argv);
- /* Do a binary search to find the applet entry given the name. */
- applet_using = find_applet_by_name(name);
- if(applet_using) {
diff --git a/packages/busybox/slingbox-1.2.2/wget-long-options.patch b/packages/busybox/slingbox-1.2.2/wget-long-options.patch
deleted file mode 100644
index 3c5920a3cb..0000000000
--- a/packages/busybox/slingbox-1.2.2/wget-long-options.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- busybox-1.2.1.orig/networking/wget.c
-+++ busybox-1.2.1/networking/wget.c
-@@ -136,7 +136,7 @@
- #define WGET_OPT_PREFIX 32
- #define WGET_OPT_PROXY 64
-
--#if ENABLE_WGET_LONG_OPTIONS
-+#if CONFIG_FEATURE_WGET_LONG_OPTIONS
- static const struct option wget_long_options[] = {
- { "continue", 0, NULL, 'c' },
- { "quiet", 0, NULL, 'q' },
-@@ -180,7 +180,7 @@
- * Crack command line.
- */
- bb_opt_complementally = "-1:\203::";
--#if ENABLE_WGET_LONG_OPTIONS
-+#if CONFIG_FEATURE_WGET_LONG_OPTIONS
- bb_applet_long_options = wget_long_options;
- #endif
- opt = bb_getopt_ulflags(argc, argv, "cq\213O:\203:P:Y:",
diff --git a/packages/busybox/slingbox_1.00.bb b/packages/busybox/slingbox_1.00.bb
deleted file mode 100644
index 2d2d88317c..0000000000
--- a/packages/busybox/slingbox_1.00.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-DESCRIPTION = "SlingBox is a minimal version of BusyBox with just enough functionality \
-to enable ipkg to run on an Unslung NSLU2 device."
-HOMEPAGE = "http://www.busybox.net"
-LICENSE = "GPL"
-SECTION = "base"
-PRIORITY = "required"
-PR = "r10"
-COMPATIBLE_MACHINE = "nslu2"
-
-SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
- file://defconfig \
- file://lazy_umount.patch;patch=1 \
- file://slingbox.patch;patch=1"
-
-S = "${WORKDIR}/busybox-${PV}"
-
-export EXTRA_CFLAGS = "${CFLAGS}"
-EXTRA_OEMAKE_append = " CROSS=${HOST_PREFIX}"
-
-PACKAGES = "${PN}"
-FILES_${PN} = "/"
-FILES_${PN}-doc = ""
-FILES_${PN}-dev = ""
-FILES_${PN}-locale = ""
-
-inherit cml1
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- cml1_do_configure
-}
-
-do_compile () {
- unset CFLAGS
- base_do_compile
-}
-
-do_install () {
- oe_runmake 'PREFIX=${D}' install
-}
diff --git a/packages/busybox/slingbox_1.1.3.bb b/packages/busybox/slingbox_1.1.3.bb
deleted file mode 100644
index 2a86748f28..0000000000
--- a/packages/busybox/slingbox_1.1.3.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "SlingBox is a minimal version of BusyBox with just enough functionality \
-to enable ipkg to run on an Unslung NSLU2 device."
-HOMEPAGE = "http://www.busybox.net"
-LICENSE = "GPL"
-SECTION = "base"
-PRIORITY = "required"
-PR = "r3"
-COMPATIBLE_MACHINE = "nslu2"
-
-SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
- file://defconfig \
- file://Makefile_args.patch;patch=1 \
- file://lazy_umount.patch;patch=1 \
- file://slingbox_name.patch;patch=1 \
- file://slingbox.patch;patch=1"
-
-S = "${WORKDIR}/busybox-${PV}"
-
-export EXTRA_CFLAGS = "${CFLAGS}"
-EXTRA_OEMAKE_append = " CROSS=${HOST_PREFIX}"
-
-PACKAGES = "${PN}"
-FILES_${PN} = "/"
-FILES_${PN}-doc = ""
-FILES_${PN}-dev = ""
-FILES_${PN}-locale = ""
-
-inherit cml1
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- cml1_do_configure
-}
-
-do_compile () {
- unset CFLAGS
- base_do_compile
- # Just in case fdisk is compiled in, do not overwrite the Linksys one
- sed -i -e '/fdisk/d' ${S}/busybox.links
-}
-
-do_install () {
- oe_runmake 'PREFIX=${D}' install
-}
diff --git a/packages/busybox/slingbox_1.2.2.bb b/packages/busybox/slingbox_1.2.2.bb
deleted file mode 100644
index 523e2199f5..0000000000
--- a/packages/busybox/slingbox_1.2.2.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-DESCRIPTION = "SlingBox is a minimal version of BusyBox with just enough functionality \
-to enable ipkg to run on an Unslung NSLU2 device."
-HOMEPAGE = "http://www.busybox.net"
-LICENSE = "GPL"
-SECTION = "base"
-PRIORITY = "required"
-PR = "r4"
-COMPATIBLE_MACHINE = "nslu2"
-
-SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
- file://defconfig \
- file://wget-long-options.patch;patch=1 \
- file://lazy_umount.patch;patch=1 \
- file://df_rootfs.patch;patch=1 \
- file://slingbox_name.patch;patch=1 \
- file://halt.patch;patch=1" \
- file://slingbox.patch;patch=1"
-
-S = "${WORKDIR}/busybox-${PV}"
-
-export EXTRA_CFLAGS = "${CFLAGS}"
-EXTRA_OEMAKE_append = " CROSS=${HOST_PREFIX}"
-
-PACKAGES = "${PN}"
-FILES_${PN} = "/"
-FILES_${PN}-doc = ""
-FILES_${PN}-dev = ""
-FILES_${PN}-locale = ""
-
-inherit cml1
-
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config.oe
- echo "CROSS_COMPILER_PREFIX=\"${TARGET_PREFIX}\"" > ${S}/.config
- echo "USING_CROSS_COMPILER=y" >> ${S}/.config
- sed -e '/CROSS_COMPILER_PREFIX/d' \
- -e '/USING_CROSS_COMPILER/d' \
- '${S}/.config.oe' >>'${S}/.config'
- cml1_do_configure
-}
-
-do_compile () {
- unset CFLAGS
- base_do_compile
- # Just in case fdisk is compiled in, do not overwrite the Linksys one
- sed -i -e '/fdisk/d' ${S}/busybox.links
-}
-
-do_install () {
- oe_runmake "PREFIX=${D}" install
- cp -pPR ${S}/_install/* ${D}/
-}
diff --git a/packages/busybox/slingbox_1.3.1.bb b/packages/busybox/slingbox_1.3.1.bb
index 4d3ab56cc3..a680efc843 100644
--- a/packages/busybox/slingbox_1.3.1.bb
+++ b/packages/busybox/slingbox_1.3.1.bb
@@ -23,7 +23,6 @@ S = "${WORKDIR}/busybox-${PV}"
export EXTRA_CFLAGS = "${CFLAGS}"
EXTRA_OEMAKE_append = " V=1 ARCH=arm CROSS_COMPILE=${TARGET_PREFIX}"
-PACKAGES = "${PN}"
FILES_${PN} = "/"
FILES_${PN}-doc = ""
FILES_${PN}-dev = ""
diff --git a/packages/bvi/bvi-1.3.1/no-strip.patch b/packages/bvi/bvi-1.3.1/no-strip.patch
new file mode 100644
index 0000000000..520b058ea0
--- /dev/null
+++ b/packages/bvi/bvi-1.3.1/no-strip.patch
@@ -0,0 +1,13 @@
+--- 1/Makefile.in.org 2001-12-25 15:37:37.000000000 +0200
++++ 1/Makefile.in 2008-02-20 02:54:56.000000000 +0200
+@@ -63,8 +63,8 @@
+ install: all installdirs
+ @echo "Installing bvi"
+ @$(INSTALL_DATA) bvi.1 bmore.1 $(man1dir)
+- @$(INSTALL_PROGRAM) -s bvi $(bindir)
+- @$(INSTALL_PROGRAM) -s bmore $(bindir)
++ @$(INSTALL_PROGRAM) bvi $(bindir)
++ @$(INSTALL_PROGRAM) bmore $(bindir)
+ @$(INSTALL_DATA) bmore.help $(datadir)
+ @if [ -f $(bindir)/bview ]; then rm $(bindir)/bview; fi
+ @if [ -f $(bindir)/bvedit ]; then rm $(bindir)/bvedit; fi
diff --git a/packages/bvi/bvi_1.3.1.bb b/packages/bvi/bvi_1.3.1.bb
index 8e7a8adbe9..b6525aad88 100644
--- a/packages/bvi/bvi_1.3.1.bb
+++ b/packages/bvi/bvi_1.3.1.bb
@@ -3,9 +3,11 @@ DESCRIPTION = "binary vi (binary file editor)"
SECTION = "console/utils"
DEPENDS = "ncurses"
LICENSE = "GPL"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/bvi/bvi-${PV}.src.tar.gz \
file://configure.patch;patch=1 \
- file://compile.patch;patch=1"
+ file://compile.patch;patch=1 \
+ file://no-strip.patch;patch=1"
inherit autotools
diff --git a/packages/cacao/cacao-cldc.inc b/packages/cacao/cacao-cldc.inc
index 86df369a32..0a6e5249e7 100644
--- a/packages/cacao/cacao-cldc.inc
+++ b/packages/cacao/cacao-cldc.inc
@@ -38,7 +38,7 @@ PACKAGES = "${PN} ${PN}-doc ${PN}-dbg"
FILES_${PN} = "${bindir}/${PN} ${libdir}/lib*.so* ${datadir}/${PN}"
FILES_${PN}-doc = "${datadir}/man"
-FILES_${PN}-dbg = "${bindir}/.debug ${libdir}/.debug/lib*.so*"
+FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/.debug/lib*.so*"
ALTERNATIVE_NAME = "java-cldc"
ALTERNATIVE_LINK = "${bindir}/${ALTERNATIVE_NAME}"
diff --git a/packages/cacao/cacao.inc b/packages/cacao/cacao.inc
index 0f7fa554ac..0d2b4c7ae1 100644
--- a/packages/cacao/cacao.inc
+++ b/packages/cacao/cacao.inc
@@ -13,7 +13,7 @@ RDEPENDS = "classpath"
PROVIDES = "cacao virtual/java"
RPROVIDES_cacao = "java2-runtime"
-inherit autotools update-alternatives
+inherit java autotools update-alternatives
EXTRA_OECONF = "\
${@['','--enable-softfloat'][bb.data.getVar('TARGET_FPU',d,1) == 'soft']} \
@@ -30,7 +30,7 @@ PACKAGES = "${PN} ${PN}-doc ${PN}-dbg"
FILES_${PN} = "${bindir}/${PN} ${libdir}/lib*.so* ${datadir}/${PN}"
FILES_${PN}-doc = "${datadir}/man"
-FILES_${PN}-dbg = "${bindir}/.debug ${libdir}/.debug/lib*.so*"
+FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/.debug/lib*.so*"
ALTERNATIVE_NAME = "java"
ALTERNATIVE_LINK = "${bindir}/${ALTERNATIVE_NAME}"
@@ -41,11 +41,11 @@ do_configure_prepend() {
# Replaces the placeholder OE_LIBDIR_JNI with the JNI library directory
# configured in OE.
if [ -e src/vm/properties.c ]; then
- sed -i -e "s|OE_LIBDIR_JNI|${libdir}/jni|" src/vm/properties.c
+ sed -i -e "s|OE_LIBDIR_JNI|${libdir_jni}|" src/vm/properties.c
fi
if [ -e src/vm/properties.c ]; then
- sed -i -e "s|OE_LIBDIR_JNI|${libdir}/jni|" src/vm/vm.c
+ sed -i -e "s|OE_LIBDIR_JNI|${libdir_jni}|" src/vm/vm.c
fi
}
diff --git a/packages/cacao/cacao_0.98+hg20071001.bb b/packages/cacao/cacao_0.98+hg20071001.bb
index 94919ad24a..878827c28e 100644
--- a/packages/cacao/cacao_0.98+hg20071001.bb
+++ b/packages/cacao/cacao_0.98+hg20071001.bb
@@ -1,6 +1,6 @@
require cacao.inc
-PR = "r7"
+PR = "r8"
SRC_URI = "\
http://jalimo.evolvis.org/repository/sources/cacao-${PV}.tar.bz2;md5sum=9ff10c929bd0cbf15909107c1aff7518 \
diff --git a/packages/busybox/busybox-1.01/nylon/.mtn2git_empty b/packages/cairo/cairo-1.4.14/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/nylon/.mtn2git_empty
+++ b/packages/cairo/cairo-1.4.14/.mtn2git_empty
diff --git a/packages/cairo/cairo-1.4.14/0001-Fix-for-a-memory-leak-in-pixman.patch b/packages/cairo/cairo-1.4.14/0001-Fix-for-a-memory-leak-in-pixman.patch
new file mode 100644
index 0000000000..686ab7ceb0
--- /dev/null
+++ b/packages/cairo/cairo-1.4.14/0001-Fix-for-a-memory-leak-in-pixman.patch
@@ -0,0 +1,32 @@
+From 7647f29a2a3b69592e38f50890a96d8deeaa2dbb Mon Sep 17 00:00:00 2001
+From: Jan Slupski <jslupski@juljas.net>
+Date: Fri, 15 Feb 2008 00:55:30 +0100
+Subject: [PATCH] Fix for a memory leak in pixman.
+
+Port of a 1.6 fix for a memory leak in pixman_region_init_rects/pixman_rect_alloc
+when the count of boxes is 0.
+---
+ pixman/src/pixregion.c | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/src/pixregion.c b/pixman/src/pixregion.c
+index 1ed3ad7..d6caf6c 100644
+--- a/pixman/src/pixregion.c
++++ b/pixman/src/pixregion.c
+@@ -355,6 +355,15 @@ pixman_region_init_rects(pixman_region16_t *region, pixman_box16_t *boxes, int c
+ }
+
+ pixman_region_init(region);
++
++ /* if it's 0, don't call pixman_rect_alloc -- 0 rectangles is
++ * a special case, and causing pixman_rect_alloc would cause
++ * us to leak memory (because the 0-rect case should be the
++ * static pixman_region_emptyData data).
++ */
++ if (count == 0)
++ return PIXMAN_REGION_STATUS_SUCCESS;
++
+ if (!pixman_rect_alloc(region, count))
+ return PIXMAN_REGION_STATUS_FAILURE;
+
+
diff --git a/packages/cairo/cairo_1.4.14.bb b/packages/cairo/cairo_1.4.14.bb
new file mode 100644
index 0000000000..b0f9fe8790
--- /dev/null
+++ b/packages/cairo/cairo_1.4.14.bb
@@ -0,0 +1,9 @@
+require cairo.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
+file://0001-Fix-for-a-memory-leak-in-pixman.patch;patch=1;p=1"
+
+PR = "r0"
+
diff --git a/packages/busybox/busybox-1.01/openmn/.mtn2git_empty b/packages/chumby/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/openmn/.mtn2git_empty
+++ b/packages/chumby/.mtn2git_empty
diff --git a/packages/chumby/chumby-firmware_1.2.bb b/packages/chumby/chumby-firmware_1.2.bb
new file mode 100644
index 0000000000..73e3a4a7a9
--- /dev/null
+++ b/packages/chumby/chumby-firmware_1.2.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Binary Chumby firmware for kexec"
+PACKAGES = "${PN}-k2 ${PN}-rfs2 ${PN}-bl ${PN}-psp ${PN}-k1 ${PN}-rfs1"
+PR = "r1"
+
+SRC_URI = "http://files.chumby.com/resources/chumby_fw_1_2.zip"
+S = ${WORKDIR}
+
+PACKAGE_ARCH = "chumby"
+COMPATIBLE_MACHINES = "chumby"
+
+do_install () {
+ cd ${S}/update1 && unzip k2.bin.zip
+ cd ${S}/update1 && unzip rfs2.bin.zip
+ cd ${S}/update2 && unzip bl.bin.zip
+ cd ${S}/update2 && unzip psp.bin.zip
+ cd ${S}/update2 && unzip k1.bin.zip
+ cd ${S}/update2 && unzip rfs1.bin.zip
+
+ install -d ${D}/boot/chumby-firmware/
+ install -m 0644 ${S}/update1/k2.bin ${D}/boot/chumby-firmware/
+ install -m 0644 ${S}/update1/rfs2.bin ${D}/boot/chumby-firmware/
+ install -m 0644 ${S}/update2/bl.bin ${D}/boot/chumby-firmware/
+ install -m 0644 ${S}/update2/psp.bin ${D}/boot/chumby-firmware/
+ install -m 0644 ${S}/update2/k1.bin ${D}/boot/chumby-firmware/
+ install -m 0644 ${S}/update2/rfs1.bin ${D}/boot/chumby-firmware/
+}
+
+FILES_${PN}-k2 = "/boot/chumby-firmware/k2.bin"
+FILES_${PN}-rfs2 = "/boot/chumby-firmware/rfs2.bin"
+FILES_${PN}-bl = "/boot/chumby-firmware/bl.bin"
+FILES_${PN}-psp = "/boot/chumby-firmware/psp.bin"
+FILES_${PN}-k1 = "/boot/chumby-firmware/k1.bin"
+FILES_${PN}-rfs1 = "/boot/chumby-firmware/rfs1.bin"
+
diff --git a/packages/classpath/classpath-minimal_0.96.1.bb b/packages/classpath/classpath-minimal_0.96.1.bb
index 0597274915..982203553e 100644
--- a/packages/classpath/classpath-minimal_0.96.1.bb
+++ b/packages/classpath/classpath-minimal_0.96.1.bb
@@ -1,6 +1,6 @@
require classpath.inc
-PR = "r3"
+PR = "r4"
SRC_URI += "file://gjar-prefix-patch.diff;patch=1;pnum=0"
diff --git a/packages/classpath/classpath.inc b/packages/classpath/classpath.inc
index 97c081af89..3e0c99c958 100644
--- a/packages/classpath/classpath.inc
+++ b/packages/classpath/classpath.inc
@@ -9,6 +9,8 @@ DEPENDS = "virtual/javac-native fastjar-native zip-native"
RPROVIDES = ""
RDEPENDS_${PN} = "${PBN}-common (>= ${PV})"
+RDEPENDS_${PN}-examples = "java2-runtime ${PN}-awt"
+RDEPENDS_${PN}-tools = "java2-runtime"
RPROVIDES_${PN} = "${PBN}"
RPROVIDES_${PN}-gtk = "${PBN}-awt"
diff --git a/packages/classpath/classpath_0.96.1.bb b/packages/classpath/classpath_0.96.1.bb
index 6b167a2d47..fdb811a89f 100644
--- a/packages/classpath/classpath_0.96.1.bb
+++ b/packages/classpath/classpath_0.96.1.bb
@@ -1,8 +1,9 @@
require classpath.inc
-SRC_URI += "file://gjar-prefix-patch.diff;patch=1;pnum=0"
+SRC_URI += "file://gjar-prefix-patch.diff;patch=1;pnum=0 \
+ "
-PR = "r2"
+PR = "r3"
DEPENDS += "gtk+ gconf libxtst"
diff --git a/packages/cmake/cmake-native_2.4.7.bb b/packages/cmake/cmake-native_2.4.8.bb
index fcfdda1c1a..fcfdda1c1a 100644
--- a/packages/cmake/cmake-native_2.4.7.bb
+++ b/packages/cmake/cmake-native_2.4.8.bb
diff --git a/packages/cmake/cmake_2.4.7.bb b/packages/cmake/cmake_2.4.8.bb
index 619aea9701..619aea9701 100644
--- a/packages/cmake/cmake_2.4.7.bb
+++ b/packages/cmake/cmake_2.4.8.bb
diff --git a/packages/conserver/conserver.inc b/packages/conserver/conserver.inc
index ff8314fc6e..d4d1ab6d38 100644
--- a/packages/conserver/conserver.inc
+++ b/packages/conserver/conserver.inc
@@ -25,7 +25,7 @@ FILES_${PN}-doc += "${datadir}/examples/conserver"
# Make sure .debug files end up in the correct place
FILES_${PN} = "${sysconfdir} ${bindir}/* ${libdir}/${PN}/* ${sbindir}/*"
-FILES_${PN}-dbg = "${bindir}/.debug ${sbindir}/.debug ${libdir}/${PN}/.debug"
+FILES_${PN}-dbg += "${bindir}/.debug ${sbindir}/.debug ${libdir}/${PN}/.debug"
# Indicate that the default file is a configuation file
CONFFILES_${PN} = "${sysconfdir}/default/conserver"
diff --git a/packages/cups/cups.inc b/packages/cups/cups.inc
index 20cc8c39c3..bbf2377ced 100644
--- a/packages/cups/cups.inc
+++ b/packages/cups/cups.inc
@@ -64,6 +64,12 @@ python do_package_append() {
os.system('chmod 0511 %s/install/cups/var/run/cups/certs' % workdir)
}
+PACKAGES =+ "${PN}-lib ${PN}-libimage"
+
+FILES_${PN}-lib = "${libdir}/libcups.so.*"
+
+FILES_${PN}-libimage = "${libdir}/libcupsimage.so.*"
+
FILES_${PN}-dbg += "${libdir}/cups/backend/.debug \
${libdir}/cups/cgi-bin/.debug \
${libdir}/cups/filter/.debug \
@@ -79,5 +85,3 @@ FILES_${PN} += "${datadir}/doc/cups/images \
${datadir}/icons/ \
"
-LEAD_SONAME = "libcups.so.*"
-
diff --git a/packages/cups/cups_1.2.10.bb b/packages/cups/cups_1.2.10.bb
index 125fc51caf..2361565a91 100644
--- a/packages/cups/cups_1.2.10.bb
+++ b/packages/cups/cups_1.2.10.bb
@@ -1,4 +1,4 @@
require cups.inc
-PR = "r2"
+PR = "r3"
diff --git a/packages/cups/cups_1.2.12.bb b/packages/cups/cups_1.2.12.bb
index 4a4512d790..662f0ec8ff 100644
--- a/packages/cups/cups_1.2.12.bb
+++ b/packages/cups/cups_1.2.12.bb
@@ -1,5 +1,5 @@
require cups.inc
-PR = "r0"
+PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/db/db3_3.2.9.bb b/packages/db/db3_3.2.9.bb
index a130d89bd5..7edba4f543 100644
--- a/packages/db/db3_3.2.9.bb
+++ b/packages/db/db3_3.2.9.bb
@@ -23,7 +23,7 @@ EXTRA_OEMAKE = "'SHELL=/bin/sh' 'ar=`which ${AR}` cr' 'chmod=`which chmod`' \
'cp=`which cp`' 'ln=`which ln`' 'mkdir=`which mkdir`' 'ranlib=`which ${RANLIB}`' \
'rm=`which rm`' 'strip=`which ${STRIP}`'"
-PACKAGES = "${PN} ${PN}-bin ${PN}-dev ${PN}-doc ${PN}-locale"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-bin ${PN}-dev ${PN}-doc ${PN}-locale"
FILES_${PN} = "${libdir}/libdb-3.2*so*"
FILES_${PN}-bin = "${bindir}"
diff --git a/packages/db/db_4.3.29.bb b/packages/db/db_4.3.29.bb
index 750822fafe..026b45bd67 100644
--- a/packages/db/db_4.3.29.bb
+++ b/packages/db/db_4.3.29.bb
@@ -14,7 +14,7 @@ HOMEPAGE = "http://www.sleepycat.com"
LICENSE = "BSD Sleepycat"
VIRTUAL_NAME ?= "virtual/db"
CONFLICTS = "db3"
-PR = "r8"
+PR = "r9"
SRC_URI = "http://downloads.sleepycat.com/db-${PV}.tar.gz"
#SRC_URI_MD5 = "http://downloads.sleepycat.com/db-${PV}.tar.gz.md5"
@@ -44,7 +44,7 @@ B = "${WORKDIR}/db-${PV}/build_unix"
PACKAGES += " ${PN}-bin"
# Package contents
-FILES_${PN} = "${libdir}/libdb-4*so*"
+FILES_${PN} = "${libdir}/libdb-4.*.so*"
FILES_${PN}-bin = "${bindir}/*"
# The dev package has the .so link (as in db3) and the .a's -
# it is therefore incompatible (cannot be installed at the
diff --git a/packages/dbench/dbench_3.04.bb b/packages/dbench/dbench_3.04.bb
index 5eec719b95..1f6b703ba8 100644
--- a/packages/dbench/dbench_3.04.bb
+++ b/packages/dbench/dbench_3.04.bb
@@ -13,4 +13,4 @@ inherit autotools
PACKAGES =+ "tbench tbench-dbg"
FILES_tbench = "${bindir}/tbench*"
-FILES_tbench-dbg = "${bindir}/.debug/tbench*"
+FILES_tbench-dbg += "${bindir}/.debug/tbench*"
diff --git a/packages/busybox/busybox-1.01/slugos/.mtn2git_empty b/packages/dbus-java/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/slugos/.mtn2git_empty
+++ b/packages/dbus-java/.mtn2git_empty
diff --git a/packages/dbus-java/dbus-java_2.3.bb b/packages/dbus-java/dbus-java_2.3.bb
new file mode 100644
index 0000000000..1c30fc7fe4
--- /dev/null
+++ b/packages/dbus-java/dbus-java_2.3.bb
@@ -0,0 +1,97 @@
+DESCRIPTION = "A pure Java D-Bus Implementation"
+DESCRIPTION_dbus-java-viewer = "${DESCRIPTION} (DBusViewer Binary)"
+DESCRIPTION_dbus-java-bin = "${DESCRIPTION} (Binaries)"
+
+LICENSE = "GPLv2 AFL"
+SECTION = "libs"
+HOMEPAGE = "http://jalimo.org"
+AUTHOR = "Matthew Johnson <dbus@matthew.ath.cx>"
+
+PR = "r2"
+
+inherit java-library
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus-java/dbus-java-${PV}.tar.gz"
+
+S = "${WORKDIR}/dbus-java-${PV}"
+
+DEPENDS = "libmatthew docbook-utils-native docbook-sgml-dtd-4.1-native"
+RSUGGESTS_libdbus-java = "libmatthew-java dbus"
+RDEPENDS_dbus-java-viewer = "java2-runtime libmatthew-java ${JPN}"
+RDEPENDS_dbus-java-bin = "java2-runtime libmatthew-java ${JPN}"
+
+do_compile () {
+ # run target .binclasses first to fix a brokenness in the Makefile
+ oe_runmake \
+ JCFLAGS="-source 1.5" \
+ JAVAC="javac" \
+ JARPREFIX="${STAGING_DATADIR}/java" \
+ JAVAUNIXJARDIR="${STAGING_DATADIR}/java" \
+ CLASSPATH="${S}/classes" \
+ JAR="fastjar" \
+ .binclasses
+
+ oe_runmake \
+ JCFLAGS="-source 1.5" \
+ JAVAC="javac" \
+ JARPREFIX="${STAGING_DATADIR}/java" \
+ JAVAUNIXJARDIR="${STAGING_DATADIR}/java" \
+ CLASSPATH="${S}/classes" \
+ JAR="fastjar" \
+ all
+
+ # Generated shell scripts will have staging paths inside them.
+ rm bin/*
+
+ # Generate them again with target paths.
+ oe_runmake \
+ JAVAC="oefatal \"No Java compilation expected here.\"" \
+ JAR="oefatal \"No jar invocation expected here.\"" \
+ JARPREFIX=${datadir}/java \
+ JAVAUNIXPATH=${datadir}/java \
+ all
+
+ # Trigger generation of all documentation files to prevent this
+ # being happen at the target 'install-man' in do_install.
+ oe_runmake \
+ JAVAC="oefatal \"No Java compilation expected here.\"" \
+ JAR="oefatal \"No jar invocation expected here.\"" \
+ JARPREFIX=${datadir}/java \
+ JAVAUNIXPATH=${datadir}/java \
+ CreateInterface.1 ListDBus.1 DBusDaemon.1 DBusViewer.1 changelog AUTHORS COPYING README INSTALL DBusCall.1
+}
+
+do_staging () {
+ oe_jarinstall -s ${JPN}-${PV}.jar ${JPN}.jar
+}
+
+do_install () {
+ oe_jarinstall ${JPN}-${PV}.jar ${JPN}.jar
+ oe_jarinstall dbus-java-viewer-${PV}.jar dbus-java-viewer.jar
+ oe_jarinstall dbus-java-bin-${PV}.jar dbus-java-bin.jar
+
+ install -d ${D}${bindir}
+ install bin/DBusViewer ${D}${bindir}
+ install bin/DBusCall ${D}${bindir}
+ install bin/CreateInterface ${D}${bindir}
+ install bin/ListDBus ${D}${bindir}
+ install bin/DBusDaemon ${D}${bindir}
+
+ oe_runmake \
+ JAVAC="oefatal \"No Java compilation expected here.\"" \
+ JAR="oefatal \"No jar invocation expected here.\"" \
+ MANPREFIX=${D}${mandir} \
+ DOCPREFIX=${D}${docdir}/${JPN} \
+ install-man
+}
+
+# ${JPN} must be last otherwise it would pick up dbus-viewer*.jar
+# and dbus-bin*.jar
+PACKAGES = "dbus-java-viewer dbus-java-viewer-doc dbus-java-bin dbus-java-bin-doc ${JPN}"
+
+PACKAGE_ARCH = "all"
+
+FILES_dbus-java-viewer = "${datadir}/java/dbus-java-viewer*.jar ${bindir}/DBusViewer"
+FILES_dbus-java-viewer-doc = "${mandir}/DBusViewer*"
+FILES_dbus-java-bin = "${datadir}/java/dbus-java-bin*.jar ${bindir}"
+FILES_dbus-java-bin-doc = "${mandir} ${docdir}/${JPN}"
diff --git a/packages/dbus/dbus-1.0.1/dbus-1.init b/packages/dbus/dbus-1.0.1/dbus-1.init
deleted file mode 100644
index 38e7574ad5..0000000000
--- a/packages/dbus/dbus-1.0.1/dbus-1.init
+++ /dev/null
@@ -1,96 +0,0 @@
-#! /bin/sh
-# -*- coding: utf-8 -*-
-# Debian init.d script for D-BUS
-# Copyright © 2003 Colin Walters <walters@debian.org>
-
-set -e
-
-DAEMON=/usr/bin/dbus-daemon
-NAME=dbus
-DAEMONUSER=messagebus
-PIDDIR=/var/run/dbus
-PIDFILE=$PIDDIR/pid
-UUIDDIR=/var/lib/dbus
-DESC="system message bus"
-EVENTDIR=/etc/dbus-1/event.d
-
-test -x $DAEMON || exit 0
-
-# Source defaults file; edit that file to configure this script.
-ENABLED=1
-PARAMS=""
-if [ -e /etc/default/dbus ]; then
- . /etc/default/dbus
-fi
-
-test "$ENABLED" != "0" || exit 0
-
-start_it_up()
-{
- if [ ! -d $PIDDIR ]; then
- mkdir -p $PIDDIR
- chown $DAEMONUSER $PIDDIR
- chgrp $DAEMONUSER $PIDDIR
- fi
- if [ -e $PIDFILE ]; then
- PIDDIR=/proc/$(cat $PIDFILE)
- if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
- echo "$DESC already started; not starting."
- else
- echo "Removing stale PID file $PIDFILE."
- rm -f $PIDFILE
- fi
- fi
-
- if [ ! -d $UUIDDIR ]; then
- mkdir -p $UUIDDIR
- chown $DAEMONUSER $UUIDDIR
- chgrp $DAEMONUSER $UUIDDIR
- fi
-
- dbus-uuidgen --ensure
-
- echo -n "Starting $DESC: "
- start-stop-daemon --start --quiet --pidfile $PIDFILE \
- --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS
- echo "$NAME."
- if [ -d $EVENTDIR ]; then
- run-parts --arg=start $EVENTDIR
- fi
-}
-
-shut_it_down()
-{
- if [ -d $EVENTDIR ]; then
- run-parts --reverse --arg=stop $EVENTDIR
- fi
- echo -n "Stopping $DESC: "
- start-stop-daemon --stop --quiet --pidfile $PIDFILE \
- --user $DAEMONUSER
- # We no longer include these arguments so that start-stop-daemon
- # can do its job even given that we may have been upgraded.
- # We rely on the pidfile being sanely managed
- # --exec $DAEMON -- --system $PARAMS
- echo "$NAME."
- rm -f $PIDFILE
-}
-
-case "$1" in
- start)
- start_it_up
- ;;
- stop)
- shut_it_down
- ;;
- restart|force-reload)
- shut_it_down
- sleep 1
- start_it_up
- ;;
- *)
- echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/packages/dbus/dbus-1.0.1/dbus-exploit-fix.patch b/packages/dbus/dbus-1.0.1/dbus-exploit-fix.patch
deleted file mode 100644
index 7d36dbdf22..0000000000
--- a/packages/dbus/dbus-1.0.1/dbus-exploit-fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-https://bugs.freedesktop.org/show_bug.cgi?id=9142
-
-[..] the use case was the following. There
-are three processes A, B, and C. All of them add the same match (same value). A
-is started first, then B, and lastly C. Now, B and C are closed: if B is closed
-before C, A's match is removed; but if C is closed before B, A's match is not
-removed (no buggy behaviour). (B and C call dbus_bus_remove_match on exit.)
-
-diff -pur 0.61-osso23/bus/signals.c 0.61-osso23.new/bus/signals.c
---- 0.61-osso23/bus/signals.c 2006-11-23 16:46:52.589602192 +0200
-+++ 0.61-osso23.new/bus/signals.c 2006-11-23 16:49:28.873843376 +0200
-@@ -1067,6 +1067,9 @@ match_rule_equal (BusMatchRule *a,
- if (a->flags != b->flags)
- return FALSE;
-
-+ if (a->matches_go_to != b->matches_go_to)
-+ return FALSE;
-+
- if ((a->flags & BUS_MATCH_MESSAGE_TYPE) &&
- a->message_type != b->message_type)
- return FALSE;
diff --git a/packages/dbus/dbus-1.1.1/tmpdir.patch b/packages/dbus/dbus-1.0.2/tmpdir.patch
index 838b903f0a..838b903f0a 100644
--- a/packages/dbus/dbus-1.1.1/tmpdir.patch
+++ b/packages/dbus/dbus-1.0.2/tmpdir.patch
diff --git a/packages/dbus/dbus-1.1.1/cross.patch b/packages/dbus/dbus-1.1.1/cross.patch
deleted file mode 100644
index 268a3ae3de..0000000000
--- a/packages/dbus/dbus-1.1.1/cross.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- /tmp/configure.in 2006-11-09 21:47:10.000000000 +0100
-+++ dbus-0.95/configure.in 2006-11-09 21:48:13.108554000 +0100
-@@ -719,6 +719,7 @@
- exit (0);
- ]])],
- [ac_cv_have_abstract_sockets=yes],
-+ [ac_cv_have_abstract_sockets=no],
- [ac_cv_have_abstract_sockets=no]
- )])
- AC_LANG_POP(C)
diff --git a/packages/dbus/dbus-1.1.1/fix-install-daemon.patch b/packages/dbus/dbus-1.1.1/fix-install-daemon.patch
deleted file mode 100644
index c31786357d..0000000000
--- a/packages/dbus/dbus-1.1.1/fix-install-daemon.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: dbus-0.94/bus/Makefile.am
-===================================================================
---- dbus-0.94.orig/bus/Makefile.am 2006-10-01 17:36:18.000000000 +0200
-+++ dbus-0.94/bus/Makefile.am 2006-10-14 21:40:05.000000000 +0200
-@@ -110,7 +110,7 @@
- $(mkinstalldirs) $(DESTDIR)$(DBUS_DAEMONDIR); \
- chmod 755 $(DESTDIR)$(DBUS_DAEMONDIR); \
- fi
-- $(INSTALL_PROGRAM) dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR)
-+ $(INSTALL_PROGRAM) .libs/dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR)
- $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus
- $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d
- $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services
diff --git a/packages/busybox/busybox-1.01/sparc/.mtn2git_empty b/packages/dbus/dbus-1.1.4/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/sparc/.mtn2git_empty
+++ b/packages/dbus/dbus-1.1.4/.mtn2git_empty
diff --git a/packages/dbus/dbus-1.0.1/cross.patch b/packages/dbus/dbus-1.1.4/cross.patch
index 268a3ae3de..268a3ae3de 100644
--- a/packages/dbus/dbus-1.0.1/cross.patch
+++ b/packages/dbus/dbus-1.1.4/cross.patch
diff --git a/packages/dbus/dbus-1.1.1/dbus-1.init b/packages/dbus/dbus-1.1.4/dbus-1.init
index 0725083c69..0725083c69 100644
--- a/packages/dbus/dbus-1.1.1/dbus-1.init
+++ b/packages/dbus/dbus-1.1.4/dbus-1.init
diff --git a/packages/dbus/dbus-1.0.1/fix-install-daemon.patch b/packages/dbus/dbus-1.1.4/fix-install-daemon.patch
index c31786357d..c31786357d 100644
--- a/packages/dbus/dbus-1.0.1/fix-install-daemon.patch
+++ b/packages/dbus/dbus-1.1.4/fix-install-daemon.patch
diff --git a/packages/dbus/dbus/tmpdir.patch b/packages/dbus/dbus-1.1.4/tmpdir.patch
index 838b903f0a..838b903f0a 100644
--- a/packages/dbus/dbus/tmpdir.patch
+++ b/packages/dbus/dbus-1.1.4/tmpdir.patch
diff --git a/packages/dbus/dbus-glib-native/run-with-tmp-session-bus.patch b/packages/dbus/dbus-glib-native/run-with-tmp-session-bus.patch
deleted file mode 100644
index 186abdb56b..0000000000
--- a/packages/dbus/dbus-glib-native/run-with-tmp-session-bus.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- dbus-glib-0.71/tools/Makefile.am.orig 2006-08-27 12:54:34.351198198 +0200
-+++ dbus-glib-0.71/tools/Makefile.am 2006-08-27 12:55:12.533584373 +0200
-@@ -9,7 +9,7 @@
- BUILT_SOURCES = dbus-glib-bindings.h dbus-bus-introspect.xml
-
- dbus-bus-introspect.xml:
-- DBUS_TOP_BUILDDIR=$(top_builddir) dbus-send --system --print-reply=literal --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Introspectable.Introspect > dbus-bus-introspect.xml.tmp && mv dbus-bus-introspect.xml.tmp dbus-bus-introspect.xml
-+ DBUS_TOP_BUILDDIR=$(top_builddir) ./run-with-tmp-session-bus.sh dbus-send --print-reply=literal --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Introspectable.Introspect > dbus-bus-introspect.xml.tmp && mv dbus-bus-introspect.xml.tmp dbus-bus-introspect.xml
-
- EXTRA_DIST = run-with-tmp-session-bus.sh
-
---- dbus-glib-0.71/tools/run-with-tmp-session-bus.sh.orig 2006-08-27 11:52:17.497666746 +0200
-+++ dbus-glib-0.71/tools/run-with-tmp-session-bus.sh 2006-08-27 12:53:22.626715838 +0200
-@@ -27,16 +27,15 @@
- echo "escaped service dir is: $ESCAPED_SERVICE_DIR" >&2
-
- ## create a configuration file based on the standard session.conf
--cat $DBUS_TOP_BUILDDIR/tools/session.conf | \
-+cat $datadir/dbus/session.conf | \
- sed -e 's/<servicedir>.*$/<servicedir>'$ESCAPED_SERVICE_DIR'<\/servicedir>/g' | \
- sed -e 's/<include.*$//g' \
- > $CONFIG_FILE
-
- echo "Created configuration file $CONFIG_FILE" >&2
-
--export PATH=$DBUS_TOP_BUILDDIR/bus:$PATH
- ## the libtool script found by the path search should already do this, but
--export LD_LIBRARY_PATH=$DBUS_TOP_BUILDDIR/dbus/.libs:$LD_LIBRARY_PATH
-+export LD_LIBRARY_PATH=$libdir:$LD_LIBRARY_PATH
-
- unset DBUS_SESSION_BUS_ADDRESS
- unset DBUS_SESSION_BUS_PID
diff --git a/packages/dbus/dbus-native_1.0.1.bb b/packages/dbus/dbus-native_1.0.1.bb
deleted file mode 100644
index 1ad5cf246a..0000000000
--- a/packages/dbus/dbus-native_1.0.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Message bus system for applications to talk to one another"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-LICENSE = "GPL"
-SECTION = "base"
-
-PR = "r0"
-
-DEPENDS = "glib-2.0-native libxml2-native expat-native"
-
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-1.0.1"
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
- file://cross.patch;patch=1 \
- "
-
-inherit autotools pkgconfig gettext native
-
-S = "${WORKDIR}/dbus-${PV}"
-
-EXTRA_OECONF = "--disable-qt --disable-qt3 --disable-gtk --disable-tests \
- --disable-checks --disable-xml-docs --disable-doxygen-docs \
- --with-xml=expat --without-x"
-
-do_stage () {
- oe_runmake install
- autotools_stage_all
-
- # for dbus-glib-native introspection generation
- install -d ${STAGING_DATADIR}/dbus
- install -m 0644 bus/session.conf ${STAGING_DATADIR}/dbus/session.conf
-}
diff --git a/packages/dbus/dbus-native_1.0.2.bb b/packages/dbus/dbus-native_1.0.2.bb
new file mode 100644
index 0000000000..ebd57b2876
--- /dev/null
+++ b/packages/dbus/dbus-native_1.0.2.bb
@@ -0,0 +1,28 @@
+require dbus.inc
+DEFAULT_PREFERENCE = "1"
+
+inherit native
+
+DEPENDS = "glib-2.0-native libxml2-native expat-native"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-${PV}"
+
+SRC_URI = "\
+ http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://dbus-1.init \
+"
+
+do_stage() {
+ oe_runmake install
+ autotools_stage_all
+
+ # for dbus-glib-native introspection generation
+ install -d ${STAGING_DATADIR}/dbus
+ install -m 0644 bus/session.conf ${STAGING_DATADIR}/dbus/session.conf
+}
+
+do_install() {
+ :
+}
+
diff --git a/packages/dbus/dbus-native_1.1.1.bb b/packages/dbus/dbus-native_1.1.1.bb
deleted file mode 100644
index 72e2190f78..0000000000
--- a/packages/dbus/dbus-native_1.1.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "message bus system for applications to talk to one another"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-LICENSE = "GPL"
-SECTION = "base"
-
-PR = "r0"
-
-DEPENDS = "glib-2.0-native libxml2-native expat-native"
-
-DEFAULT_PREFERENCE = "-1"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-1.0.2"
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
- file://cross.patch;patch=1 \
- "
-
-inherit autotools pkgconfig gettext native
-
-S = "${WORKDIR}/dbus-${PV}"
-
-EXTRA_OECONF = " --disable-tests --disable-checks --disable-xml-docs \
- --disable-doxygen-docs --with-xml=expat --without-x"
-
-do_stage () {
- oe_runmake install
- autotools_stage_all
-
- # for dbus-glib-native introspection generation
- install -d ${STAGING_DATADIR}/dbus
- install -m 0644 bus/session.conf ${STAGING_DATADIR}/dbus/session.conf
-}
diff --git a/packages/dbus/dbus-native_1.1.4.bb b/packages/dbus/dbus-native_1.1.4.bb
new file mode 100644
index 0000000000..a006965a32
--- /dev/null
+++ b/packages/dbus/dbus-native_1.1.4.bb
@@ -0,0 +1,25 @@
+require dbus.inc
+inherit native
+
+DEPENDS = "glib-2.0-native libxml2-native expat-native"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-${PV}"
+
+SRC_URI = "\
+ http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://dbus-1.init \
+"
+
+do_stage() {
+ oe_runmake install
+ autotools_stage_all
+
+ # for dbus-glib-native introspection generation
+ install -d ${STAGING_DATADIR}/dbus
+ install -m 0644 bus/session.conf ${STAGING_DATADIR}/dbus/session.conf
+}
+
+do_install() {
+ :
+}
diff --git a/packages/dbus/dbus-python_0.71.bb b/packages/dbus/dbus-python_0.71.bb
deleted file mode 100644
index ed586b7f4b..0000000000
--- a/packages/dbus/dbus-python_0.71.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-DESCRIPTION = "Message bus system for applications to talk to one another - python bindings"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-LICENSE = "GPL"
-SECTION = "devel/python"
-DEPENDS = "python-pyrex-native dbus dbus-glib"
-PR = "r0"
-
-SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-python-${PV}.tar.gz"
-
-inherit distutils
diff --git a/packages/dbus/dbus.inc b/packages/dbus/dbus.inc
index 21316c2d09..a8fd31d8c7 100644
--- a/packages/dbus/dbus.inc
+++ b/packages/dbus/dbus.inc
@@ -1,16 +1,19 @@
+DESCRIPTION = "A message bus system for inter-process communication"
+HOMEPAGE = "http://dbus.freedesktop.org"
SECTION = "base"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-DESCRIPTION = "Message bus system for applications to talk to one another"
LICENSE = "GPL"
DEPENDS = "expat glib-2.0 virtual/libintl"
DEFAULT_PREFERENCE = "-1"
-SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
- file://cross.patch;patch=1 \
- file://tmpdir.patch;patch=1 \
- file://dbus-1.init \
- "
+SRC_URI = "\
+ http://freedesktop.org/software/dbus/releases/dbus/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://fix-install-daemon.patch;patch=1 \
+ file://dbus-1.init \
+"
+S = "${WORKDIR}/dbus-${PV}"
inherit autotools pkgconfig update-rc.d gettext
@@ -19,7 +22,23 @@ INITSCRIPT_PARAMS = "defaults"
CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
-FILES_${PN} = "${bindir}/dbus-daemon* ${bindir}/dbus-uuidgen ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+DEBIANNAME_${PN} = "dbus-1"
+
+PACKAGES += "${PN}-lib"
+
+FILES_${PN} = "\
+${bindir}/dbus-daemon* \
+${bindir}/dbus-uuidgen \
+${bindir}/dbus-launch \
+${bindir}/dbus-cleanup-sockets \
+${bindir}/dbus-send \
+${bindir}/dbus-monitor \
+${libexecdir}/dbus* \
+${sysconfdir} \
+${datadir}/dbus-1/services \
+${datadir}/dbus-1/system-services \
+"
+FILES_${PN}-lib = "${libdir}/lib*.so.*"
FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
pkg_postinst_dbus() {
@@ -38,15 +57,22 @@ chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
grep -q netdev: /etc/group || addgroup netdev
-
+chmod u+s /usr/libexec/dbus-daemon-launch-helper
}
-EXTRA_OECONF = "--disable-qt --disable-qt3 --disable-gtk --disable-tests \
- --disable-checks --disable-xml-docs --disable-doxygen-docs \
- --with-xml=expat --without-x"
-
-
-do_stage () {
+EXTRA_OECONF = "\
+ --disable-qt \
+ --disable-qt3 \
+ --disable-gtk \
+ --disable-tests \
+ --disable-checks \
+ --disable-xml-docs \
+ --disable-doxygen-docs \
+ --with-xml=expat \
+ --without-x \
+"
+
+do_stage() {
oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
autotools_stage_includes
@@ -55,12 +81,11 @@ do_stage () {
install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
}
-do_install_append () {
+do_install_append() {
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
-}
-
-python populate_packages_prepend () {
- if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
- bb.data.setVar('PKG_dbus', 'dbus-1', d)
+ # the stock install seems to install the libtool wrapper script, so we have to copy this manually :M:
+ if [ -e bus/.libs/dbus-daemon-launch-helper ]; then
+ install -m 0755 bus/.libs/dbus-daemon-launch-helper ${D}${libexecdir}/
+ fi
}
diff --git a/packages/dbus/dbus/0.23.1.diff b/packages/dbus/dbus/0.23.1.diff
deleted file mode 100644
index d56e1afc9c..0000000000
--- a/packages/dbus/dbus/0.23.1.diff
+++ /dev/null
@@ -1,308 +0,0 @@
-diff -ur dbus-0.23/ChangeLog dbus-0.23.1/ChangeLog
---- dbus-0.23/ChangeLog 2005-01-13 00:48:43.000000000 +0200
-+++ dbus-0.23.1/ChangeLog 2005-02-11 20:25:48.000000000 +0200
-@@ -1,3 +1,33 @@
-+2005-02-11 Joe Shaw <joeshaw@novell.com>
-+
-+ * NEWS: Update for 0.23.1
-+
-+ * configure.in: Release 0.23.1
-+
-+2005-02-10 Joe Shaw <joeshaw@novell.com>
-+
-+ * dbus/dbus-connection.c
-+ (_dbus_connection_queue_received_message_link,
-+ _dbus_connection_message_sent): Add the path to
-+ the verbose output.
-+ (_dbus_connection_send_preallocated_and_unlock): Added. Calls
-+ _dbus_connection_send_preallocated_unlocked(), updated the
-+ dispatch status, and unlocks. Fixes a bug where certain
-+ situations (like a broken pipe) could cause a Disconnect message
-+ to not be sent, tricking the bus into thinking a service was still
-+ there when the process had quit.
-+ (_dbus_connection_send_preallocated): Call
-+ _dbus_connection_send_preallocated_and_unlock().
-+ (_dbus_connection_send_and_unlock): Added. Calls
-+ _dbus_connection_send_preallocated_and_unlock().
-+ (dbus_connection_send): Call _dbus_connection_send_and_unlock().
-+ (dbus_connection_send_with_reply): Update the dispatch status and
-+ unlock.
-+
-+ * mono/Service.cs (~Service): Added. Removes the filter so that
-+ we don't get unmanaged code calling back into a GCed delegate.
-+ (RemoveFilter); Added.
-+
- 2005-01-12 Joe Shaw <joeshaw@novell.com>
-
- * NEWS: Update for 0.23.
-diff -ur dbus-0.23/NEWS dbus-0.23.1/NEWS
---- dbus-0.23/NEWS 2005-01-13 00:20:40.000000000 +0200
-+++ dbus-0.23.1/NEWS 2005-02-11 20:25:16.000000000 +0200
-@@ -1,3 +1,11 @@
-+D-BUS 0.23.1 (11 Feb 2005)
-+===
-+- fix a bug in which the bus daemon wouldn't recognize that a service
-+ owner quit
-+- fix a bug in the mono bindings that would cause unmanaged code to
-+ call back into a delegate that had been garbage collected and
-+ crashed.
-+
- D-BUS 0.23 (11 Jan 2005)
- ===
-
-diff -ur dbus-0.23/configure dbus-0.23.1/configure
---- dbus-0.23/configure 2005-01-13 00:21:25.000000000 +0200
-+++ dbus-0.23.1/configure 2005-02-11 19:53:33.000000000 +0200
-@@ -1826,7 +1826,7 @@
-
- # Define the identity of the package.
- PACKAGE=dbus
-- VERSION=0.23
-+ VERSION=0.23.1
-
-
- cat >>confdefs.h <<_ACEOF
-diff -ur dbus-0.23/configure.in dbus-0.23.1/configure.in
---- dbus-0.23/configure.in 2005-01-13 00:20:40.000000000 +0200
-+++ dbus-0.23.1/configure.in 2005-02-11 19:53:09.000000000 +0200
-@@ -3,7 +3,7 @@
-
- AC_INIT(dbus/dbus.h)
-
--AM_INIT_AUTOMAKE(dbus, 0.23)
-+AM_INIT_AUTOMAKE(dbus, 0.23.1)
-
- AM_CONFIG_HEADER(config.h)
-
-diff -ur dbus-0.23/dbus/dbus-connection.c dbus-0.23.1/dbus/dbus-connection.c
---- dbus-0.23/dbus/dbus-connection.c 2005-01-11 21:31:56.000000000 +0200
-+++ dbus-0.23.1/dbus/dbus-connection.c 2005-02-11 19:52:47.000000000 +0200
-@@ -358,9 +358,10 @@
-
- _dbus_connection_wakeup_mainloop (connection);
-
-- _dbus_verbose ("Message %p (%d %s %s '%s') added to incoming queue %p, %d incoming\n",
-+ _dbus_verbose ("Message %p (%d %s %s %s '%s') added to incoming queue %p, %d incoming\n",
- message,
- dbus_message_get_type (message),
-+ dbus_message_get_path (message),
- dbus_message_get_interface (message) ?
- dbus_message_get_interface (message) :
- "no interface",
-@@ -473,9 +474,10 @@
-
- connection->n_outgoing -= 1;
-
-- _dbus_verbose ("Message %p (%d %s %s '%s') removed from outgoing queue %p, %d left to send\n",
-+ _dbus_verbose ("Message %p (%d %s %s %s '%s') removed from outgoing queue %p, %d left to send\n",
- message,
- dbus_message_get_type (message),
-+ dbus_message_get_path (message),
- dbus_message_get_interface (message) ?
- dbus_message_get_interface (message) :
- "no interface",
-@@ -1572,9 +1574,10 @@
- }
- #endif
-
-- _dbus_verbose ("Message %p (%d %s %s '%s') added to outgoing queue %p, %d pending to send\n",
-+ _dbus_verbose ("Message %p (%d %s %s %s '%s') added to outgoing queue %p, %d pending to send\n",
- message,
- dbus_message_get_type (message),
-+ dbus_message_get_path (message),
- dbus_message_get_interface (message) ?
- dbus_message_get_interface (message) :
- "no interface",
-@@ -1606,12 +1609,30 @@
- _dbus_connection_do_iteration (connection,
- DBUS_ITERATION_DO_WRITING,
- -1);
--
-+
- /* If stuff is still queued up, be sure we wake up the main loop */
- if (connection->n_outgoing > 0)
- _dbus_connection_wakeup_mainloop (connection);
- }
-
-+static void
-+_dbus_connection_send_preallocated_and_unlock (DBusConnection *connection,
-+ DBusPreallocatedSend *preallocated,
-+ DBusMessage *message,
-+ dbus_uint32_t *client_serial)
-+{
-+ DBusDispatchStatus status;
-+
-+ _dbus_connection_send_preallocated_unlocked (connection,
-+ preallocated,
-+ message, client_serial);
-+
-+ status = _dbus_connection_get_dispatch_status_unlocked (connection);
-+
-+ /* this calls out to user code */
-+ _dbus_connection_update_dispatch_status_and_unlock (connection, status);
-+}
-+
- /**
- * Sends a message using preallocated resources. This function cannot fail.
- * It works identically to dbus_connection_send() in other respects.
-@@ -1642,10 +1663,9 @@
- dbus_message_get_member (message) != NULL));
-
- CONNECTION_LOCK (connection);
-- _dbus_connection_send_preallocated_unlocked (connection,
-- preallocated,
-- message, client_serial);
-- CONNECTION_UNLOCK (connection);
-+ _dbus_connection_send_preallocated_and_unlock (connection,
-+ preallocated,
-+ message, client_serial);
- }
-
- static dbus_bool_t
-@@ -1670,6 +1690,27 @@
- return TRUE;
- }
-
-+static dbus_bool_t
-+_dbus_connection_send_and_unlock (DBusConnection *connection,
-+ DBusMessage *message,
-+ dbus_uint32_t *client_serial)
-+{
-+ DBusPreallocatedSend *preallocated;
-+
-+ _dbus_assert (connection != NULL);
-+ _dbus_assert (message != NULL);
-+
-+ preallocated = _dbus_connection_preallocate_send_unlocked (connection);
-+ if (preallocated == NULL)
-+ return FALSE;
-+
-+ _dbus_connection_send_preallocated_and_unlock (connection,
-+ preallocated,
-+ message,
-+ client_serial);
-+ return TRUE;
-+}
-+
- /**
- * Adds a message to the outgoing message queue. Does not block to
- * write the message to the network; that happens asynchronously. To
-@@ -1698,14 +1739,9 @@
-
- CONNECTION_LOCK (connection);
-
-- if (!_dbus_connection_send_unlocked (connection, message, client_serial))
-- {
-- CONNECTION_UNLOCK (connection);
-- return FALSE;
-- }
--
-- CONNECTION_UNLOCK (connection);
-- return TRUE;
-+ return _dbus_connection_send_and_unlock (connection,
-+ message,
-+ client_serial);
- }
-
- static dbus_bool_t
-@@ -1784,6 +1820,7 @@
- DBusMessage *reply;
- DBusList *reply_link;
- dbus_int32_t serial = -1;
-+ DBusDispatchStatus status;
-
- _dbus_return_val_if_fail (connection != NULL, FALSE);
- _dbus_return_val_if_fail (message != NULL, FALSE);
-@@ -1845,8 +1882,11 @@
- else
- dbus_pending_call_unref (pending);
-
-- CONNECTION_UNLOCK (connection);
--
-+ status = _dbus_connection_get_dispatch_status_unlocked (connection);
-+
-+ /* this calls out to user code */
-+ _dbus_connection_update_dispatch_status_and_unlock (connection, status);
-+
- return TRUE;
-
- error:
-@@ -2256,9 +2296,10 @@
- link = _dbus_list_pop_first_link (&connection->incoming_messages);
- connection->n_incoming -= 1;
-
-- _dbus_verbose ("Message %p (%d %s %s '%s') removed from incoming queue %p, %d incoming\n",
-+ _dbus_verbose ("Message %p (%d %s %s %s '%s') removed from incoming queue %p, %d incoming\n",
- link->data,
- dbus_message_get_type (link->data),
-+ dbus_message_get_path (link->data),
- dbus_message_get_interface (link->data) ?
- dbus_message_get_interface (link->data) :
- "no interface",
-diff -ur dbus-0.23/mono/Service.cs dbus-0.23.1/mono/Service.cs
---- dbus-0.23/mono/Service.cs 2004-08-31 06:59:14.000000000 +0300
-+++ dbus-0.23.1/mono/Service.cs 2005-02-11 19:52:47.000000000 +0200
-@@ -23,6 +23,9 @@
- private static AssemblyBuilder proxyAssembly;
- private ModuleBuilder module = null;
-
-+ // Add a match for signals. FIXME: Can we filter the service?
-+ private const string MatchRule = "type='signal'";
-+
- internal Service(string name, Connection connection)
- {
- this.name = name;
-@@ -47,6 +50,12 @@
- this.local = true;
- }
-
-+ ~Service ()
-+ {
-+ if (this.filterCalled != null)
-+ RemoveFilter ();
-+ }
-+
- public static bool Exists(Connection connection, string name)
- {
- Error error = new Error();
-@@ -113,9 +122,17 @@
- IntPtr.Zero))
- throw new OutOfMemoryException();
-
-- // Add a match for signals. FIXME: Can we filter the service?
-- string rule = "type='signal'";
-- dbus_bus_add_match(connection.RawConnection, rule, IntPtr.Zero);
-+ dbus_bus_add_match(connection.RawConnection, MatchRule, IntPtr.Zero);
-+ }
-+
-+ private void RemoveFilter()
-+ {
-+ dbus_connection_remove_filter (Connection.RawConnection,
-+ this.filterCalled,
-+ IntPtr.Zero);
-+ this.filterCalled = null;
-+
-+ dbus_bus_remove_match (connection.RawConnection, MatchRule, IntPtr.Zero);
- }
-
- private int Service_FilterCalled(IntPtr rawConnection,
-@@ -200,9 +217,19 @@
- IntPtr freeData);
-
- [DllImport("dbus-1")]
-+ private extern static void dbus_connection_remove_filter(IntPtr rawConnection,
-+ DBusHandleMessageFunction filter,
-+ IntPtr userData);
-+
-+ [DllImport("dbus-1")]
- private extern static void dbus_bus_add_match(IntPtr rawConnection,
- string rule,
- IntPtr erro);
-
-+ [DllImport("dbus-1")]
-+ private extern static void dbus_bus_remove_match(IntPtr rawConnection,
-+ string rule,
-+ IntPtr erro);
-+
- }
- }
diff --git a/packages/dbus/dbus/config.diff b/packages/dbus/dbus/config.diff
deleted file mode 100644
index b67c8d72fe..0000000000
--- a/packages/dbus/dbus/config.diff
+++ /dev/null
@@ -1,17 +0,0 @@
-Only in /home/kihamala/svn/dbus/bus: .svn
-diff -ur bus/session.conf.in /home/kihamala/svn/dbus/bus/session.conf.in
---- bus/session.conf.in 2004-10-25 21:48:58.000000000 +0300
-+++ /home/kihamala/svn/dbus/bus/session.conf.in 2005-02-15 11:03:26.000000000 +0200
-@@ -8,9 +8,10 @@
- <!-- Our well-known bus type, don't change this -->
- <type>session</type>
-
-- <listen>unix:tmpdir=@DBUS_SESSION_SOCKET_DIR@</listen>
-+ <listen>unix:path=/tmp/session_bus_socket</listen>
-
-- <servicedir>@EXPANDED_DATADIR@/dbus-1/services</servicedir>
-+ <servicedir>@EXPANDED_LIBDIR@/dbus-1.0/services</servicedir>
-+ <!-- <servicedir>/var/lib/install/usr/lib/dbus-1.0/services</servicedir> -->
-
- <policy context="default">
- <!-- Allow everything to be sent -->
diff --git a/packages/dbus/dbus/cross.patch b/packages/dbus/dbus/cross.patch
deleted file mode 100644
index 6d1d9d8e7e..0000000000
--- a/packages/dbus/dbus/cross.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- dbus-0.20/configure.in~cross
-+++ dbus-0.20/configure.in
-@@ -466,6 +466,7 @@
- exit (0);
- ]])],
- [have_abstract_sockets=yes],
-+ [have_abstract_sockets=no],
- [have_abstract_sockets=no])
- AC_LANG_POP(C)
- AC_MSG_RESULT($have_abstract_sockets)
diff --git a/packages/dbus/dbus/dbus-1.init b/packages/dbus/dbus/dbus-1.init
deleted file mode 100644
index adefe7c5b1..0000000000
--- a/packages/dbus/dbus/dbus-1.init
+++ /dev/null
@@ -1,86 +0,0 @@
-#! /bin/sh
-# -*- coding: utf-8 -*-
-# Debian init.d script for D-BUS
-# Copyright © 2003 Colin Walters <walters@debian.org>
-
-set -e
-
-DAEMON=/usr/bin/dbus-daemon-1
-NAME=dbus-1
-DAEMONUSER=messagebus
-PIDDIR=/var/run/dbus
-PIDFILE=$PIDDIR/pid
-DESC="system message bus"
-EVENTDIR=/etc/dbus-1/event.d
-
-test -x $DAEMON || exit 0
-
-# Source defaults file; edit that file to configure this script.
-ENABLED=1
-PARAMS=""
-if [ -e /etc/default/dbus-1 ]; then
- . /etc/default/dbus-1
-fi
-
-test "$ENABLED" != "0" || exit 0
-
-start_it_up()
-{
- if [ ! -d $PIDDIR ]; then
- mkdir -p $PIDDIR
- chown $DAEMONUSER $PIDDIR
- chgrp $DAEMONUSER $PIDDIR
- fi
- if [ -e $PIDFILE ]; then
- PIDDIR=/proc/$(cat $PIDFILE)
- if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
- echo "$DESC already started; not starting."
- else
- echo "Removing stale PID file $PIDFILE."
- rm -f $PIDFILE
- fi
- fi
- echo -n "Starting $DESC: "
- start-stop-daemon --start --quiet --pidfile $PIDFILE \
- --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS
- echo "$NAME."
- if [ -d $EVENTDIR ]; then
- run-parts --arg=start $EVENTDIR
- fi
-}
-
-shut_it_down()
-{
- if [ -d $EVENTDIR ]; then
- run-parts --reverse --arg=stop $EVENTDIR
- fi
- echo -n "Stopping $DESC: "
- start-stop-daemon --stop --quiet --pidfile $PIDFILE \
- --user $DAEMONUSER
- # We no longer include these arguments so that start-stop-daemon
- # can do its job even given that we may have been upgraded.
- # We rely on the pidfile being sanely managed
- # --exec $DAEMON -- --system $PARAMS
- echo "$NAME."
- rm -f $PIDFILE
-}
-
-case "$1" in
- start)
- start_it_up
- ;;
- stop)
- shut_it_down
- ;;
- restart|force-reload)
- shut_it_down
- sleep 1
- start_it_up
- ;;
- *)
- echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/packages/dbus/dbus/dbus-monitor.patch b/packages/dbus/dbus/dbus-monitor.patch
deleted file mode 100644
index c2f90c885b..0000000000
--- a/packages/dbus/dbus/dbus-monitor.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-diff -urN dbus-0.22.orig/tools/dbus-monitor.1 dbus-0.22/tools/dbus-monitor.1
---- dbus-0.22.orig/tools/dbus-monitor.1 2004-10-10 20:47:19.906823680 +1000
-+++ dbus-0.22/tools/dbus-monitor.1 2004-10-10 20:47:27.791625008 +1000
-@@ -9,6 +9,7 @@
- .PP
- .B dbus-monitor
- [\-\-system | \-\-session]
-+[watch expressions]
-
- .SH DESCRIPTION
-
-@@ -25,6 +26,11 @@
- monitor the system or session buses respectively. If neither is
- specified, \fIdbus-monitor\fP monitors the session bus.
-
-+.PP
-+In order to get \fIdbus-monitor\fP to see the messages you are interested
-+in, you should specify a set of watch expressions as you would expect to
-+be passed to the \fIdbus_bus_add_watch\fP function.
-+
- .PP
- The message bus configuration may keep \fIdbus-monitor\fP from seeing
- all messages, especially if you run the monitor as a non-root user.
-@@ -37,6 +43,15 @@
- .I "--session"
- Monitor the session message bus. (This is the default.)
-
-+.SH EXAMPLE
-+Here is an example of using dbus-monitor to watch for the gnome typing
-+monitor to say things
-+.nf
-+
-+ dbus-monitor "type='signal',sender='org.gnome.TypingMonitor',interface='org.gnome.TypingMonitor'"
-+
-+.fi
-+
- .SH AUTHOR
- dbus-monitor was written by Philip Blundell.
-
---- dbus-0.22-1ubuntu1/tools/dbus-monitor.c 2004-08-10 13:03:37.000000000 +1000
-+++ dbus-0.22/tools/dbus-monitor.c 2004-10-10 21:38:08.532362152 +1000
-@@ -45,7 +45,7 @@
- static void
- usage (char *name, int ecode)
- {
-- fprintf (stderr, "Usage: %s [--system | --session]\n", name);
-+ fprintf (stderr, "Usage: %s [--system | --session] [watch expressions]\n", name);
- exit (ecode);
- }
-
-@@ -56,8 +56,8 @@
- DBusError error;
- DBusBusType type = DBUS_BUS_SESSION;
- GMainLoop *loop;
-- int i;
--
-+ int i = 0, j = 0, numFilters = 0;
-+ char **filters = NULL;
- for (i = 1; i < argc; i++)
- {
- char *arg = argv[i];
-@@ -69,14 +69,18 @@
- else if (!strcmp (arg, "--help"))
- usage (argv[0], 0);
- else if (!strcmp (arg, "--"))
-- break;
-+ continue;
- else if (arg[0] == '-')
- usage (argv[0], 1);
-+ else {
-+ numFilters++;
-+ filters = (char **)realloc(filters, numFilters * sizeof(char *));
-+ filters[j] = (char *)malloc((strlen(arg) + 1) * sizeof(char *));
-+ snprintf(filters[j], strlen(arg) + 1, "%s", arg);
-+ j++;
-+ }
- }
-
-- if (argc > 2)
-- usage (argv[0], 1);
--
- loop = g_main_loop_new (NULL, FALSE);
-
- dbus_error_init (&error);
-@@ -92,26 +102,45 @@
-
- dbus_connection_setup_with_g_main (connection, NULL);
-
-- dbus_bus_add_match (connection,
-- "type='signal'",
-- &error);
-- if (dbus_error_is_set (&error))
-- goto lose;
-- dbus_bus_add_match (connection,
-- "type='method_call'",
-- &error);
-- if (dbus_error_is_set (&error))
-- goto lose;
-- dbus_bus_add_match (connection,
-- "type='method_return'",
-- &error);
-- if (dbus_error_is_set (&error))
-- goto lose;
-- dbus_bus_add_match (connection,
-- "type='error'",
-- &error);
-- if (dbus_error_is_set (&error))
-- goto lose;
-+ if (numFilters)
-+ {
-+ for (i = 0; i < j; i++)
-+ {
-+ dbus_bus_add_match (connection, filters[i], &error);
-+ if (dbus_error_is_set (&error))
-+ {
-+ fprintf (stderr, "Failed to setup match \"%s\": %s\n",
-+ filters[i], error.message);
-+ dbus_error_free (&error);
-+ exit (1);
-+ }
-+ free(filters[i]);
-+ }
-+ }
-+ else
-+ {
-+ dbus_bus_add_match (connection,
-+ "type='signal'",
-+ &error);
-+ if (dbus_error_is_set (&error))
-+ goto lose;
-+ dbus_bus_add_match (connection,
-+ "type='method_call'",
-+ &error);
-+ if (dbus_error_is_set (&error))
-+ goto lose;
-+ dbus_bus_add_match (connection,
-+ "type='method_return'",
-+ &error);
-+ if (dbus_error_is_set (&error))
-+ goto lose;
-+ dbus_bus_add_match (connection,
-+ "type='error'",
-+ &error);
-+ if (dbus_error_is_set (&error))
-+ goto lose;
-+ }
-+
- if (!dbus_connection_add_filter (connection, filter_func, NULL, NULL)) {
- fprintf (stderr, "Couldn't add filter!\n");
- exit (1);
diff --git a/packages/dbus/dbus/dbus-quiesce-startup-errors.patch b/packages/dbus/dbus/dbus-quiesce-startup-errors.patch
deleted file mode 100644
index ba5142af2f..0000000000
--- a/packages/dbus/dbus/dbus-quiesce-startup-errors.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- dbus-0.20-virgin-patches/bus/config-parser.c 2003-10-14 21:30:21.000000000 +0100
-+++ dbus-0.20/bus/config-parser.c 2004-02-10 00:40:05.000000000 +0000
-@@ -1710,8 +1710,18 @@
- {
- if (!include_file (parser, &full_path, TRUE, error))
- {
-- _dbus_string_free (&full_path);
-- goto failed;
-+ /* Debian patch to skip malformed /etc/dbus-1/system.d entries */
-+ /*
-+ * _dbus_string_free (&full_path);
-+ * goto failed;
-+ */
-+ if (dbus_error_is_set (error))
-+ {
-+ _dbus_warn("\nEncountered error '%s' while parsing '%s'\n",
-+ error->message,
-+ _dbus_string_get_const_data(&full_path));
-+ dbus_error_free (error);
-+ }
- }
- }
-
diff --git a/packages/dbus/dbus/dbussend.patch b/packages/dbus/dbus/dbussend.patch
deleted file mode 100644
index 49a251bbb0..0000000000
--- a/packages/dbus/dbus/dbussend.patch
+++ /dev/null
@@ -1,399 +0,0 @@
-Index: dbus-send.1
-===================================================================
---- tools/dbus-send.1 (revision 691)
-+++ tools/dbus-send.1 (working copy)
-@@ -36,8 +36,8 @@
- specified. Following arguments, if any, are the message contents
- (message arguments). These are given as a type name, a colon, and
- then the value of the argument. The possible type names are: string,
--int32, uint32, double, byte, boolean. (D-BUS supports more types than
--these, but \fIdbus-send\fP currently does not.)
-+int32, uint32, double, byte, boolean, array. (D-BUS supports more types
-+than these, but \fIdbus-send\fP currently does not.)
-
- .PP
- Here is an example invocation:
-@@ -46,7 +46,8 @@
- dbus-send \-\-dest='org.freedesktop.ExampleService' \\
- /org/freedesktop/sample/object/name \\
- org.freedesktop.ExampleInterface.ExampleMethod \\
-- int32:47 string:'hello world' double:65.32
-+ int32:47 string:'hello world' double:65.32 \\
-+ array:byte[0,1,2]
-
- .fi
-
-Index: dbus-print-message.c
-===================================================================
---- tools/dbus-print-message.c (revision 691)
-+++ tools/dbus-print-message.c (working copy)
-@@ -39,6 +39,78 @@
- }
- }
-
-+static void
-+iterate (DBusMessageIter* iter, int entry_type)
-+{
-+ do
-+ {
-+ char *str;
-+ dbus_uint32_t uint32;
-+ dbus_int32_t int32;
-+ double d;
-+ unsigned char byte;
-+ dbus_bool_t boolean;
-+ int type = dbus_message_iter_get_arg_type (iter);
-+
-+ DBusMessageIter array_iter;
-+ int array_type = DBUS_TYPE_INVALID;
-+
-+ if (type == DBUS_TYPE_INVALID)
-+ {
-+ if (entry_type == DBUS_TYPE_INVALID)
-+ break;
-+ else
-+ type == entry_type;
-+ }
-+
-+ switch (type)
-+ {
-+ case DBUS_TYPE_STRING:
-+ str = dbus_message_iter_get_string (iter);
-+ printf ("string:%s\n", str);
-+ break;
-+
-+ case DBUS_TYPE_INT32:
-+ int32 = dbus_message_iter_get_int32 (iter);
-+ printf ("int32:%d\n", int32);
-+ break;
-+
-+ case DBUS_TYPE_UINT32:
-+ uint32 = dbus_message_iter_get_uint32 (iter);
-+ printf ("int32:%u\n", uint32);
-+ break;
-+
-+ case DBUS_TYPE_DOUBLE:
-+ d = dbus_message_iter_get_double (iter);
-+ printf ("double:%f\n", d);
-+ break;
-+
-+ case DBUS_TYPE_BYTE:
-+ byte = dbus_message_iter_get_byte (iter);
-+ printf ("byte:%d\n", byte);
-+ break;
-+
-+ case DBUS_TYPE_BOOLEAN:
-+ boolean = dbus_message_iter_get_boolean (iter);
-+ printf ("boolean:%s\n", boolean ? "true" : "false");
-+ break;
-+
-+ case DBUS_TYPE_ARRAY:
-+ dbus_message_iter_init_array_iterator (iter,
-+ &array_iter,
-+ &array_type);
-+ printf ("array[\n");
-+ iterate (&array_iter, array_type);
-+ printf ("]\n");
-+ break;
-+
-+ default:
-+ printf ("(unknown arg type %d)\n", type);
-+ break;
-+ }
-+ } while (dbus_message_iter_next (iter));
-+}
-+
- void
- print_message (DBusMessage *message)
- {
-@@ -81,55 +153,6 @@
-
- dbus_message_iter_init (message, &iter);
-
-- do
-- {
-- int type = dbus_message_iter_get_arg_type (&iter);
-- char *str;
-- dbus_uint32_t uint32;
-- dbus_int32_t int32;
-- double d;
-- unsigned char byte;
-- dbus_bool_t boolean;
--
-- if (type == DBUS_TYPE_INVALID)
-- break;
--
-- switch (type)
-- {
-- case DBUS_TYPE_STRING:
-- str = dbus_message_iter_get_string (&iter);
-- printf ("string:%s\n", str);
-- break;
--
-- case DBUS_TYPE_INT32:
-- int32 = dbus_message_iter_get_int32 (&iter);
-- printf ("int32:%d\n", int32);
-- break;
--
-- case DBUS_TYPE_UINT32:
-- uint32 = dbus_message_iter_get_uint32 (&iter);
-- printf ("int32:%u\n", uint32);
-- break;
--
-- case DBUS_TYPE_DOUBLE:
-- d = dbus_message_iter_get_double (&iter);
-- printf ("double:%f\n", d);
-- break;
--
-- case DBUS_TYPE_BYTE:
-- byte = dbus_message_iter_get_byte (&iter);
-- printf ("byte:%d\n", byte);
-- break;
--
-- case DBUS_TYPE_BOOLEAN:
-- boolean = dbus_message_iter_get_boolean (&iter);
-- printf ("boolean:%s\n", boolean ? "true" : "false");
-- break;
--
-- default:
-- printf ("(unknown arg type %d)\n", type);
-- break;
-- }
-- } while (dbus_message_iter_next (&iter));
-+ iterate (&iter, DBUS_TYPE_INVALID);
- }
-
-Index: dbus-send.c
-===================================================================
---- tools/dbus-send.c (revision 691)
-+++ tools/dbus-send.c (working copy)
-@@ -34,6 +34,146 @@
- exit (ecode);
- }
-
-+
-+static int
-+get_type (char **argv, char *arg)
-+{
-+ int type;
-+
-+ if (arg[0] == 0 || !strcmp (arg, "string"))
-+ type = DBUS_TYPE_STRING;
-+ else if (!strcmp (arg, "int32"))
-+ type = DBUS_TYPE_INT32;
-+ else if (!strcmp (arg, "uint32"))
-+ type = DBUS_TYPE_UINT32;
-+ else if (!strcmp (arg, "double"))
-+ type = DBUS_TYPE_DOUBLE;
-+ else if (!strcmp (arg, "byte"))
-+ type = DBUS_TYPE_BYTE;
-+ else if (!strcmp (arg, "boolean"))
-+ type = DBUS_TYPE_BOOLEAN;
-+ else if (!strcmp (arg, "array"))
-+ type = DBUS_TYPE_ARRAY;
-+ else
-+ {
-+ fprintf (stderr, "%s: Unknown type \"%s\"\n", argv[0], arg);
-+ exit (1);
-+ }
-+
-+ return type;
-+}
-+
-+
-+static void
-+append (char **argv, char *arg, char *c, DBusMessageIter *iter)
-+{
-+ int type, atype = 0;
-+ dbus_uint32_t uint32;
-+ dbus_int32_t int32;
-+ double d;
-+ unsigned char byte;
-+ DBusMessageIter array_iter;
-+ int end_found = 0;
-+ char *next;
-+
-+ /* FIXME - we are ignoring OOM returns on all these functions */
-+
-+ type = get_type(argv, arg);
-+ if (type == DBUS_TYPE_ARRAY)
-+ {
-+ arg = c;
-+ c = strchr (c, '[');
-+ if (c == NULL)
-+ {
-+ fprintf (stderr, "%s: Data item \"%s\" is badly formed\n", argv[0], arg);
-+ exit (1);
-+ }
-+
-+ if (strchr(c, ']') == NULL)
-+ {
-+ fprintf (stderr, "%s: Data item \"%s\" is badly formed\n", argv[0], arg);
-+ exit (1);
-+ }
-+
-+ *(c++) = 0;
-+
-+ atype = get_type(argv, arg);
-+ }
-+
-+
-+ switch (type)
-+ {
-+ case DBUS_TYPE_BYTE:
-+ byte = strtoul (c, NULL, 0);
-+ dbus_message_iter_append_byte (iter, byte);
-+ break;
-+
-+ case DBUS_TYPE_DOUBLE:
-+ d = strtod (c, NULL);
-+ dbus_message_iter_append_double (iter, d);
-+ break;
-+
-+ case DBUS_TYPE_INT32:
-+ int32 = strtol (c, NULL, 0);
-+ dbus_message_iter_append_int32 (iter, int32);
-+ break;
-+
-+ case DBUS_TYPE_UINT32:
-+ uint32 = strtoul (c, NULL, 0);
-+ dbus_message_iter_append_uint32 (iter, uint32);
-+ break;
-+
-+ case DBUS_TYPE_STRING:
-+ dbus_message_iter_append_string (iter, c);
-+ break;
-+
-+ case DBUS_TYPE_BOOLEAN:
-+ if (strcmp(c, "true") == 0)
-+ dbus_message_iter_append_boolean (iter, TRUE);
-+ else if (strcmp(c, "false") == 0)
-+ dbus_message_iter_append_boolean (iter, FALSE);
-+ else
-+ {
-+ fprintf (stderr, "%s: Expected \"true\" or \"false\" instead of \"%s\"\n", argv[0], c);
-+ exit (1);
-+ }
-+ break;
-+
-+ case DBUS_TYPE_ARRAY:
-+ /* Decompose parameters and put it as array */
-+ dbus_message_iter_append_array(iter, &array_iter, atype);
-+
-+ while(!end_found)
-+ {
-+ next = strchr(c, ',');
-+ if (next == NULL)
-+ {
-+ next = strchr(c, ']');
-+
-+ if (next != NULL)
-+ next[0] = 0;
-+ else
-+ break;
-+
-+ end_found = 1;
-+ }
-+ else
-+ {
-+ next[0] = 0;
-+ next++;
-+ }
-+
-+ append (argv, arg, c, &array_iter);
-+ c = next;
-+ }
-+ break;
-+
-+ default:
-+ fprintf (stderr, "%s: Unsupported data type\n", argv[0]);
-+ exit (1);
-+ }
-+}
-+
- int
- main (int argc, char *argv[])
- {
-@@ -174,12 +314,7 @@
- {
- char *arg;
- char *c;
-- int type;
-- dbus_uint32_t uint32;
-- dbus_int32_t int32;
-- double d;
-- unsigned char byte;
--
-+
- type = DBUS_TYPE_INVALID;
- arg = argv[i++];
- c = strchr (arg, ':');
-@@ -192,67 +327,7 @@
-
- *(c++) = 0;
-
-- if (arg[0] == 0 || !strcmp (arg, "string"))
-- type = DBUS_TYPE_STRING;
-- else if (!strcmp (arg, "int32"))
-- type = DBUS_TYPE_INT32;
-- else if (!strcmp (arg, "uint32"))
-- type = DBUS_TYPE_UINT32;
-- else if (!strcmp (arg, "double"))
-- type = DBUS_TYPE_DOUBLE;
-- else if (!strcmp (arg, "byte"))
-- type = DBUS_TYPE_BYTE;
-- else if (!strcmp (arg, "boolean"))
-- type = DBUS_TYPE_BOOLEAN;
-- else
-- {
-- fprintf (stderr, "%s: Unknown type \"%s\"\n", argv[0], arg);
-- exit (1);
-- }
--
-- /* FIXME - we are ignoring OOM returns on all these functions */
-- switch (type)
-- {
-- case DBUS_TYPE_BYTE:
-- byte = strtoul (c, NULL, 0);
-- dbus_message_iter_append_byte (&iter, byte);
-- break;
--
-- case DBUS_TYPE_DOUBLE:
-- d = strtod (c, NULL);
-- dbus_message_iter_append_double (&iter, d);
-- break;
--
-- case DBUS_TYPE_INT32:
-- int32 = strtol (c, NULL, 0);
-- dbus_message_iter_append_int32 (&iter, int32);
-- break;
--
-- case DBUS_TYPE_UINT32:
-- uint32 = strtoul (c, NULL, 0);
-- dbus_message_iter_append_uint32 (&iter, uint32);
-- break;
--
-- case DBUS_TYPE_STRING:
-- dbus_message_iter_append_string (&iter, c);
-- break;
--
-- case DBUS_TYPE_BOOLEAN:
-- if (strcmp(c, "true") == 0)
-- dbus_message_iter_append_boolean (&iter, TRUE);
-- else if (strcmp(c, "false") == 0)
-- dbus_message_iter_append_boolean (&iter, FALSE);
-- else
-- {
-- fprintf (stderr, "%s: Expected \"true\" or \"false\" instead of \"%s\"\n", argv[0], c);
-- exit (1);
-- }
-- break;
--
-- default:
-- fprintf (stderr, "%s: Unsupported data type\n", argv[0]);
-- exit (1);
-- }
-+ append (argv, arg, c, &iter);
- }
-
- if (print_reply)
diff --git a/packages/dbus/dbus/gettext.patch b/packages/dbus/dbus/gettext.patch
deleted file mode 100644
index 7042bd0903..0000000000
--- a/packages/dbus/dbus/gettext.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-Index: dbus-0.23/configure.in
-===================================================================
---- dbus-0.23.orig/configure.in 2005-04-02 17:14:37.780040976 -0500
-+++ dbus-0.23/configure.in 2005-04-02 17:14:38.024003888 -0500
-@@ -22,6 +22,9 @@
- AC_ISC_POSIX
- AC_HEADER_STDC
-
-+AM_GNU_GETTEXT_VERSION(0.11.5)
-+AM_GNU_GETTEXT([external], [need-ngettext])
-+
- AC_ARG_ENABLE(qt, [ --enable-qt enable Qt-friendly client library],enable_qt=$enableval,enable_qt=auto)
- AC_ARG_ENABLE(glib, [ --enable-glib enable GLib-friendly client library],enable_glib=$enableval,enable_glib=auto)
- AC_ARG_ENABLE(gtk, [ --enable-gtk enable GTK-requiring executables],enable_gtk=$enableval,enable_gtk=auto)
-Index: dbus-0.23/glib/Makefile.am
-===================================================================
---- dbus-0.23.orig/glib/Makefile.am 2004-07-29 04:00:45.000000000 -0400
-+++ dbus-0.23/glib/Makefile.am 2005-04-02 17:22:27.302662688 -0500
-@@ -15,7 +15,7 @@
- dbus-gvalue.c \
- dbus-gvalue.h
-
--libdbus_glib_1_la_LIBADD= $(DBUS_GLIB_LIBS) $(top_builddir)/dbus/libdbus-1.la
-+libdbus_glib_1_la_LIBADD= $(DBUS_GLIB_LIBS) $(LIBINTL) $(top_builddir)/dbus/libdbus-1.la
- ## don't export symbols that start with "_" (we use this
- ## convention for internal symbols)
- libdbus_glib_1_la_LDFLAGS= -export-symbols-regex "^[^_].*"
-Index: dbus-0.23/glib/dbus-glib-tool.c
-===================================================================
---- dbus-0.23.orig/glib/dbus-glib-tool.c 2004-08-09 23:07:00.000000000 -0400
-+++ dbus-0.23/glib/dbus-glib-tool.c 2005-04-02 17:14:38.024003888 -0500
-@@ -26,8 +26,13 @@
- #include "dbus-gparser.h"
- #include "dbus-gutils.h"
- #include <locale.h>
-+
-+#ifdef HAVE_GETTEXT
- #include <libintl.h>
- #define _(x) dgettext (GETTEXT_PACKAGE, x)
-+#else
-+#define _(x) x
-+#endif
- #define N_(x) x
- #include <stdio.h>
- #include <stdlib.h>
-Index: dbus-0.23/glib/dbus-glib.c
-===================================================================
---- dbus-0.23.orig/glib/dbus-glib.c 2004-08-09 23:07:00.000000000 -0400
-+++ dbus-0.23/glib/dbus-glib.c 2005-04-02 17:14:38.024003888 -0500
-@@ -27,8 +27,12 @@
- #include "dbus-gtest.h"
- #include "dbus-gutils.h"
-
-+#ifdef HAVE_GETTEXT
- #include <libintl.h>
- #define _(x) dgettext (GETTEXT_PACKAGE, x)
-+#else
-+#define _(x) x
-+#endif
- #define N_(x) x
-
- /**
-Index: dbus-0.23/glib/dbus-gmain.c
-===================================================================
---- dbus-0.23.orig/glib/dbus-gmain.c 2004-11-13 02:07:47.000000000 -0500
-+++ dbus-0.23/glib/dbus-gmain.c 2005-04-02 17:14:38.025003736 -0500
-@@ -27,8 +27,12 @@
- #include "dbus-gtest.h"
- #include "dbus-gutils.h"
-
-+#ifdef HAVE_GETTEXT
- #include <libintl.h>
- #define _(x) dgettext (GETTEXT_PACKAGE, x)
-+#else
-+#define _(x) x
-+#endif
- #define N_(x) x
-
- /**
-Index: dbus-0.23/glib/dbus-gparser.c
-===================================================================
---- dbus-0.23.orig/glib/dbus-gparser.c 2004-08-09 23:07:00.000000000 -0400
-+++ dbus-0.23/glib/dbus-gparser.c 2005-04-02 17:14:38.025003736 -0500
-@@ -20,12 +20,18 @@
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-+
-+#include <config.h>
- #include "dbus-gparser.h"
- #include "dbus-gidl.h"
- #include <string.h>
-
-+#ifdef HAVE_GETTEXT
- #include <libintl.h>
- #define _(x) gettext ((x))
-+#else
-+#define _(x) x
-+#endif
- #define N_(x) x
-
- #ifndef DOXYGEN_SHOULD_SKIP_THIS
-Index: dbus-0.23/tools/Makefile.am
-===================================================================
---- dbus-0.23.orig/tools/Makefile.am 2004-04-21 17:29:07.000000000 -0400
-+++ dbus-0.23/tools/Makefile.am 2005-04-02 17:22:00.712704976 -0500
-@@ -37,8 +37,8 @@
-
- dbus_send_LDADD= $(top_builddir)/dbus/libdbus-1.la
- dbus_monitor_LDADD= $(top_builddir)/glib/libdbus-glib-1.la
--dbus_launch_LDADD= $(DBUS_X_LIBS)
--dbus_viewer_LDADD= $(DBUS_GLIB_TOOL_LIBS) $(top_builddir)/glib/libdbus-gtool.la $(DBUS_GTK_LIBS)
-+dbus_launch_LDADD= $(DBUS_X_LIBS) $(LIBINTL)
-+dbus_viewer_LDADD= $(DBUS_GLIB_TOOL_LIBS) $(LIBINTL) $(top_builddir)/glib/libdbus-gtool.la $(DBUS_GTK_LIBS)
-
- man_MANS = dbus-send.1 dbus-monitor.1 dbus-launch.1 dbus-cleanup-sockets.1
- EXTRA_DIST = $(man_MANS)
-Index: dbus-0.23/tools/dbus-launch.c
-===================================================================
---- dbus-0.23.orig/tools/dbus-launch.c 2004-08-09 23:07:01.000000000 -0400
-+++ dbus-0.23/tools/dbus-launch.c 2005-04-02 17:14:38.026003584 -0500
-@@ -22,6 +22,8 @@
- */
- #include <config.h>
- #include <stdlib.h>
-+#include <sys/time.h>
-+#include <sys/types.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <signal.h>
-Index: dbus-0.23/tools/dbus-tree-view.c
-===================================================================
---- dbus-0.23.orig/tools/dbus-tree-view.c 2004-08-09 23:07:01.000000000 -0400
-+++ dbus-0.23/tools/dbus-tree-view.c 2005-04-02 17:14:38.026003584 -0500
-@@ -24,8 +24,12 @@
- #include <config.h>
- #include "dbus-tree-view.h"
-
-+#ifdef HAVE_GETTEXT
- #include <libintl.h>
- #define _(x) dgettext (GETTEXT_PACKAGE, x)
-+#else
-+#define _(x) x
-+#endif
- #define N_(x) x
-
- enum
-Index: dbus-0.23/tools/dbus-viewer.c
-===================================================================
---- dbus-0.23.orig/tools/dbus-viewer.c 2004-08-09 23:07:01.000000000 -0400
-+++ dbus-0.23/tools/dbus-viewer.c 2005-04-02 17:14:38.027003432 -0500
-@@ -30,8 +30,12 @@
- #include <glib/dbus-gparser.h>
- #include <glib/dbus-gutils.h>
-
-+#ifdef HAVE_GETTEXT
- #include <libintl.h>
- #define _(x) dgettext (GETTEXT_PACKAGE, x)
-+#else
-+#define _(x) x
-+#endif
- #define N_(x) x
-
- typedef struct
diff --git a/packages/dbus/dbus/no-bindings.patch b/packages/dbus/dbus/no-bindings.patch
deleted file mode 100644
index 12ba00ff70..0000000000
--- a/packages/dbus/dbus/no-bindings.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- dbus-0.34/tools/Makefile.am.old 2005-06-27 21:48:44.000000000 +0100
-+++ dbus-0.34/tools/Makefile.am 2005-06-27 21:49:04.000000000 +0100
-@@ -6,9 +6,6 @@
- nodist_libdbus_glib_HEADERS = dbus-glib-bindings.h
- libdbus_glibdir = $(includedir)/dbus-1.0/dbus
-
--dbus-glib-bindings.h: dbus-bus-introspect.xml $(top_builddir)/glib/dbus-binding-tool
-- $(top_builddir)/glib/dbus-binding-tool --mode=glib-client --output=dbus-glib-bindings.h dbus-bus-introspect.xml
--
- BUILT_SOURCES = dbus-glib-bindings.h dbus-bus-introspect.xml
-
- else
diff --git a/packages/dbus/dbus/no-examples.patch b/packages/dbus/dbus/no-examples.patch
deleted file mode 100644
index 8767705cee..0000000000
--- a/packages/dbus/dbus/no-examples.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- dbus-0.36.2/glib/Makefile.am.orig 2005-09-06 17:30:26 +0200
-+++ dbus-0.36.2/glib/Makefile.am 2005-09-06 17:30:34 +0200
-@@ -1,4 +1,4 @@
--SUBDIRS = . examples
-+SUBDIRS = .
-
- INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) $(DBUS_GLIB_TOOL_CFLAGS) -DDBUS_COMPILATION=1 -DDBUS_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\"
-
diff --git a/packages/dbus/dbus/no-introspect.patch b/packages/dbus/dbus/no-introspect.patch
deleted file mode 100644
index d7ae8e4cad..0000000000
--- a/packages/dbus/dbus/no-introspect.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- dbus-0.34/tools/Makefile.am.old 2005-06-27 20:54:36.000000000 +0100
-+++ dbus-0.34/tools/Makefile.am 2005-06-27 20:54:43.000000000 +0100
-@@ -21,16 +21,6 @@
- GTK_TOOLS=
- endif
-
--if HAVE_GLIB
--noinst_PROGRAMS = print-introspect
--
--print_introspect_SOURCES = print-introspect.c
--print_introspect_LDADD = $(top_builddir)/glib/libdbus-glib-1.la
--
--dbus-bus-introspect.xml: $(top_builddir)/bus/dbus-daemon dbus-launch print-introspect $(top_builddir)/bus/dbus-daemon
-- DBUS_TOP_BUILDDIR=$(top_builddir) $(srcdir)/run-with-tmp-session-bus.sh ./print-introspect org.freedesktop.DBus /org/freedesktop/DBus > dbus-bus-introspect.xml.tmp && mv dbus-bus-introspect.xml.tmp dbus-bus-introspect.xml
--endif
--
- bin_PROGRAMS=dbus-send $(GLIB_TOOLS) dbus-launch dbus-cleanup-sockets $(GTK_TOOLS)
-
- dbus_send_SOURCES= \
diff --git a/packages/dbus/dbus/no-static.patch b/packages/dbus/dbus/no-static.patch
deleted file mode 100644
index a28a582681..0000000000
--- a/packages/dbus/dbus/no-static.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- dbus-0.23.4/bus/Makefile.am.old 2006-02-04 11:51:26.000000000 +0000
-+++ dbus-0.23.4/bus/Makefile.am 2006-02-04 11:51:27.000000000 +0000
-@@ -63,7 +63,7 @@
- dbus_daemon_1_LDADD= \
- $(EFENCE) \
- $(DBUS_BUS_LIBS) \
-- $(top_builddir)/dbus/libdbus-convenience.la
-+ $(top_builddir)/dbus/libdbus-1.la $(top_builddir)/dbus/libdbus-convenience.la
-
- ## note that TESTS has special meaning (stuff to use in make check)
- ## so if adding tests not to be run in make check, don't add them to
---- dbus-0.23.4/dbus/Makefile.am.old 2006-02-04 13:27:03.000000000 +0000
-+++ dbus-0.23.4/dbus/Makefile.am 2006-02-04 13:27:04.000000000 +0000
-@@ -144,7 +144,7 @@
- libdbus_1_la_LIBADD= $(DBUS_CLIENT_LIBS)
- ## don't export symbols that start with "_" (we use this
- ## convention for internal symbols)
--libdbus_1_la_LDFLAGS= -export-symbols-regex "^[^_].*"
-+#libdbus_1_la_LDFLAGS= -export-symbols-regex "^[^_].*"
-
- ## note that TESTS has special meaning (stuff to use in make check)
- ## so if adding tests not to be run in make check, don't add them to
diff --git a/packages/dbus/dbus/spawn-priority.diff b/packages/dbus/dbus/spawn-priority.diff
deleted file mode 100644
index 954d2512fa..0000000000
--- a/packages/dbus/dbus/spawn-priority.diff
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -ur dbus/dbus/dbus-spawn.c dbus.work/dbus/dbus-spawn.c
---- dbus/dbus/dbus-spawn.c 2005-03-14 14:25:02.849823496 +0200
-+++ dbus.work/dbus/dbus-spawn.c 2005-03-14 14:34:43.947483224 +0200
-@@ -1117,6 +1117,12 @@
- }
- else if (grandchild_pid == 0)
- {
-+ int p;
-+ errno = 0;
-+ p = getpriority(PRIO_PROCESS, 0);
-+ if (!errno && p < 0) {
-+ setpriority(PRIO_PROCESS, 0, 0);
-+ }
- do_exec (child_err_report_pipe[WRITE_END],
- argv,
- child_setup, user_data);
-Only in dbus.work/dbus: dbus-spawn.c~
diff --git a/packages/dbus/dbus/tools.diff b/packages/dbus/dbus/tools.diff
deleted file mode 100644
index d9e8712983..0000000000
--- a/packages/dbus/dbus/tools.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-Only in /home/kihamala/svn/dbus/tools: .svn
-diff -ur tools/dbus-launch.c /home/kihamala/svn/dbus/tools/dbus-launch.c
---- tools/dbus-launch.c 2004-08-10 06:07:01.000000000 +0300
-+++ /home/kihamala/svn/dbus/tools/dbus-launch.c 2005-02-09 17:59:05.000000000 +0200
-@@ -20,6 +20,7 @@
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-+#include <sys/select.h>
- #include <config.h>
- #include <stdlib.h>
- #include <unistd.h>
diff --git a/packages/dbus/dbus_1.0.1.bb b/packages/dbus/dbus_1.0.1.bb
deleted file mode 100644
index f5e4aa16ea..0000000000
--- a/packages/dbus/dbus_1.0.1.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require dbus.inc
-
-SRC_URI += "file://dbus-exploit-fix.patch;patch=1"
-
-PR = "r4"
diff --git a/packages/dbus/dbus_1.0.2.bb b/packages/dbus/dbus_1.0.2.bb
index f51265e434..e803cb7189 100644
--- a/packages/dbus/dbus_1.0.2.bb
+++ b/packages/dbus/dbus_1.0.2.bb
@@ -1,14 +1,6 @@
require dbus.inc
-
DEFAULT_PREFERENCE = "1"
-PR = "r8"
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
- file://tmpdir.patch;patch=1 \
- file://dbus-1.init \
- file://cross.patch;patch=1 \
- file://fix-install-daemon.patch;patch=1"
-
+PR = "r9"
diff --git a/packages/dbus/dbus_1.1.1.bb b/packages/dbus/dbus_1.1.1.bb
deleted file mode 100644
index 7bf0a8634d..0000000000
--- a/packages/dbus/dbus_1.1.1.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-
-SECTION = "base"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-DESCRIPTION = "message bus system for applications to talk to one another"
-LICENSE = "GPL"
-DEPENDS = "expat glib-2.0 virtual/libintl"
-
-PR = "r3"
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
- file://tmpdir.patch;patch=1 \
- file://dbus-1.init \
- file://cross.patch;patch=1 \
- file://fix-install-daemon.patch;patch=1"
-
-inherit autotools pkgconfig update-rc.d gettext
-
-INITSCRIPT_NAME = "dbus-1"
-INITSCRIPT_PARAMS = "defaults"
-
-CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
-
-FILES_${PN} = "${bindir}/dbus-daemon ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${bindir}/dbus-uuidgen ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${libdir}/dbus-1.0/include"
-
-pkg_postinst_dbus() {
-#!/bin/sh
-
-# can't do adduser stuff offline
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-MESSAGEUSER=messagebus
-MESSAGEHOME=/var/run/dbus
-
-mkdir -p $MESSAGEHOME || true
-chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
-chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
-}
-
-EXTRA_OECONF = " --disable-tests --disable-checks --disable-xml-docs \
- --disable-doxygen-docs --with-xml=expat --without-x"
-
-do_stage () {
- oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
-
- autotools_stage_includes
-
- mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
- install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
-}
-
-do_install_append () {
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
-}
-
-python populate_packages_prepend () {
- if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
- bb.data.setVar('PKG_dbus', 'dbus-1', d)
-}
diff --git a/packages/dbus/dbus_1.1.4.bb b/packages/dbus/dbus_1.1.4.bb
new file mode 100644
index 0000000000..7838e55ca1
--- /dev/null
+++ b/packages/dbus/dbus_1.1.4.bb
@@ -0,0 +1,3 @@
+include dbus.inc
+
+PR = "r2"
diff --git a/packages/dcop/dcopidl-native_3.5.4.bb b/packages/dcop/dcopidl-native_3.5.4.bb
index 5f47effd24..62abe88bac 100644
--- a/packages/dcop/dcopidl-native_3.5.4.bb
+++ b/packages/dcop/dcopidl-native_3.5.4.bb
@@ -4,9 +4,9 @@ PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "uicmoc3-native"
-SRC_URI = "svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/dcop/;module=dcopidl \
+SRC_URI = "ftp://download.kde.org/pub/kde/stable/3.5.4/src/kdelibs-3.5.4.tar.bz2 \
file://dcopidl-compile.patch;patch=1 "
-S = "${WORKDIR}/dcopidl"
+S = "${WORKDIR}/kdelibs-3.5.4/dcop/dcopidl"
inherit native qmake qt3e
diff --git a/packages/dcop/dcopidl2cpp-native_3.5.4.bb b/packages/dcop/dcopidl2cpp-native_3.5.4.bb
index 2b5cd126d7..d7a1c6e338 100644
--- a/packages/dcop/dcopidl2cpp-native_3.5.4.bb
+++ b/packages/dcop/dcopidl2cpp-native_3.5.4.bb
@@ -4,10 +4,10 @@ PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "uicmoc3-native"
-SRC_URI = "svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/dcop/;module=dcopidl2cpp "
+SRC_URI = "ftp://download.kde.org/pub/kde/stable/3.5.4/src/kdelibs-3.5.4.tar.bz2 "
#\
# file://dcopidl-compile.patch;patch=1 "
-S = "${WORKDIR}/dcopidl2cpp"
+S = "${WORKDIR}/kdelibs-3.5.4/dcop/dcopidl2cpp"
inherit native qmake qt3e
diff --git a/packages/devio/devio.inc b/packages/devio/devio.inc
index 4cba2d5cc0..b2d09e81f0 100644
--- a/packages/devio/devio.inc
+++ b/packages/devio/devio.inc
@@ -10,7 +10,6 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/devio/devio-${PV}.tar.gz"
S = "${WORKDIR}/devio-${PV}"
# Just the one package at present
-PACKAGES = "${PN}"
# Set the install dir to /sbin, not /usr/sbin, because devio is used
# during bootstrap (we want it to be posible to mount /usr separately)
diff --git a/packages/dhcp/dhcp_3.0.1.bb b/packages/dhcp/dhcp_3.0.1.bb
index 1536aea914..650de1391d 100644
--- a/packages/dhcp/dhcp_3.0.1.bb
+++ b/packages/dhcp/dhcp_3.0.1.bb
@@ -35,7 +35,7 @@ do_install() {
install -m 0644 ${WORKDIR}/dhcpd.conf ${D}${sysconfdir}/dhcp/dhcpd.conf
}
-PACKAGES = "dhcp-server dhcp-client dhcp-relay dhcp-omshell dhcp-dev dhcp-doc"
+PACKAGES = "${PN}-dbg dhcp-server dhcp-client dhcp-relay dhcp-omshell dhcp-dev dhcp-doc"
FILES_dhcp-server = "${sbindir}/dhcpd /etc/init.d/dhcp-server /etc/default/dhcp-server /etc/dhcp/dhcpd.conf"
FILES_dhcp-relay = "${sbindir}/dhcrelay /etc/init.d/dhcp-relay /etc/default/dhcp-relay"
FILES_dhcp-client = "/sbin/ /etc/dhcp/dhclient.conf"
diff --git a/packages/djvulibre/djvulibre_3.5.19.bb b/packages/djvulibre/djvulibre_3.5.19.bb
deleted file mode 100644
index 5ba5751f2d..0000000000
--- a/packages/djvulibre/djvulibre_3.5.19.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "DjVuLibre is an open source (GPL'ed) implementation of DjVu, including viewers, browser plugins, decoders, simple encoders, and utilities."
-LICENSE = "GPL"
-
-DEPENDS = "jpeg libpng tiff"
-
-SRC_URI = "http://downloads.sourceforge.net/djvu/djvulibre-${PV}.tar.gz \
- file://fix-cross-configure.patch;patch=1"
-
-
-inherit qt4x11 autotools pkgconfig
-
-#export QT_LIBS = "${OE_QMAKE_LIBS_QT}"
-#export QT_CFLAGS = "${OE_QMAKE_CXXFLAGS} -I${QTDIR}/include/Qt/ "
-
-EXTRA_OECONF = " --enable-threads \
- --with-qt=${QTDIR} "
-
-PACKAGES =+ "libdjvulibre"
-
-FILES_libdjvulibre = "${libdir}/libdjvulibre.so.*"
-FILES_${PN} += "${datadir}/djvu"
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/djvulibre/djvulibre_3.5.20.bb b/packages/djvulibre/djvulibre_3.5.20.bb
new file mode 100644
index 0000000000..386eccc6cb
--- /dev/null
+++ b/packages/djvulibre/djvulibre_3.5.20.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "DjVuLibre is an open source (GPL'ed) implementation of DjVu, including viewers, browser plugins, decoders, simple encoders, and utilities."
+LICENSE = "GPL"
+DEPENDS = "jpeg libpng tiff"
+PR = "r1"
+
+SRC_URI = "http://${SOURCEFORGE_MIRROR}/djvu/djvulibre-${PV}.tar.gz \
+ file://fix-cross-configure.patch;patch=1"
+
+inherit qt4x11 autotools pkgconfig
+
+#export QT_LIBS = "${OE_QMAKE_LIBS_QT}"
+#export QT_CFLAGS = "${OE_QMAKE_CXXFLAGS} -I${QTDIR}/include/Qt/ "
+
+EXTRA_OECONF = " --enable-threads \
+ --with-qt=${PAMLTOPDIR} "
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES =+ "libdjvulibre"
+FILES_libdjvulibre = "${libdir}/libdjvulibre.so.*"
+FILES_${PN} += "${datadir}/djvu"
diff --git a/packages/e17/e-wm_0.16.999.041.bb b/packages/e17/e-wm_0.16.999.041.bb
deleted file mode 100644
index 51e9e0d189..0000000000
--- a/packages/e17/e-wm_0.16.999.041.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-DESCRIPTION = "E17 - the Enlightenment Window Mananger"
-DEPENDS = "eet evas ecore edje efreet"
-LICENSE = "MIT BSD"
-PR = "r0"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit e update-alternatives
-
-SRC_URI = "http://download.enlightenment.org/snapshots/2007-08-26/enlightenment-${PV}.tar.gz \
- file://fix-configure.patch;patch=1 \
- file://set-autoscroll-defaults.patch;patch=1 \
- file://Xsession.d/98enlightenment \
- file://applications.menu \
- "
-
-S = "${WORKDIR}/enlightenment-${PV}"
-
-PROFILE = "LOWRES_PDA"
-PROFILE_c7x0 = "HIRES_PDA"
-PROFILE_tosa = "HIRES_PDA"
-PROFILE_spitz = "HIRES_PDA"
-PROFILE_akita = "HIRES_PDA"
-
-EXTRA_OECONF = "--with-profile=${PROFILE} \
- --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
- --x-includes=${STAGING_INCDIR}/X11 \
- --x-libraries=${STAGING_LIBDIR}"
-
-FILES_${PN} = "${bindir}/* ${libdir}/enlightenment/modules/*/*.edj ${libdir}/enlightenment/modules/*/*.desktop ${libdir}/enlightenment/modules/*/*/*.so ${libdir}/enlightenment/preload/*.so ${datadir} ${sysconfdir} ${libdir}/enlightenment/modules/cpufreq/*/freqset"
-FILES_${PN}-dev += "${libdir}/enlightenment/modules/*/*/*.a ${libdir}/enlightenment/modules/*/*/*.la ${libdir}/enlightenment/preload/*.a ${libdir}/enlightenment/preload/*.la"
-FILES_${PN}-dbg += "${libdir}/enlightenment/modules/*/*/.debug/ ${libdir}/enlightenment/preload/.debug/"
-
-do_compile_prepend() {
- find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
- find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
-}
-
-do_install_append() {
- install -d ${D}/${sysconfdir}/X11/Xsession.d
- install -m 755 ${WORKDIR}/Xsession.d/98enlightenment ${D}/${sysconfdir}/X11/Xsession.d
-
- install -d ${D}/${sysconfdir}/xdg/menus
- install -m 644 ${WORKDIR}/applications.menu ${D}/${sysconfdir}/xdg/menus/
-}
-
-ALTERNATIVE_PATH = "${bindir}/enlightenment_start"
-ALTERNATIVE_NAME = "x-window-manager"
-ALTERNATIVE_LINK = "${bindir}/x-window-manager"
-ALTERNATIVE_PRIORITY = "16"
diff --git a/packages/e17/e-wm_cvs.bb b/packages/e17/e-wm_cvs.bb
index 04e2ec7d59..4dbacffe1b 100644
--- a/packages/e17/e-wm_cvs.bb
+++ b/packages/e17/e-wm_cvs.bb
@@ -1,7 +1,7 @@
-DESCRIPTION = "E17 - the Enlightenment Window Mananger"
+DESCRIPTION = "The Enlightenment Window Mananger Version 17"
DEPENDS = "eet evas ecore edje efreet"
LICENSE = "MIT BSD"
-PV = "0.16.999.041+cvs${SRCDATE}"
+PV = "0.16.999.042+cvs${SRCDATE}"
PR = "r0"
inherit e update-alternatives
@@ -21,9 +21,7 @@ EXTRA_OECONF = "\
"
do_configure_prepend() {
- install -m 0644 ${WORKDIR}/Makefile.in.in po/
- echo "install -d $*" >./mkinstalldirs
- chmod a+rx ./mkinstalldirs
+ autopoint
}
do_stage() {
diff --git a/packages/e17/enna_cvs.bb b/packages/e17/enna_cvs.bb
index 7f2c6eb632..4f50b118f3 100644
--- a/packages/e17/enna_cvs.bb
+++ b/packages/e17/enna_cvs.bb
@@ -1,6 +1,7 @@
DESCRIPTION = "Enna is a media center application based on EFL"
LICENSE = "GPL"
-DEPENDS = "curl dbus eet evas edje ecore edbus emotion libmusicbrainz libxml2 taglibc"
+DEPENDS = "curl dbus eet evas edje ecore edbus emotion"
+DEPENDS += "libmusicbrainz lightmediascanner libxml2 taglib"
SECTION = "x11/multimedia"
PV = "0.2.0+cvs${SRCDATE}"
diff --git a/packages/e17/expedite/hack-disable-opengl.patch b/packages/e17/expedite/hack-disable-opengl.patch
deleted file mode 100644
index 7d368d320d..0000000000
--- a/packages/e17/expedite/hack-disable-opengl.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-Index: expedite/configure.in
-===================================================================
---- expedite.orig/configure.in
-+++ expedite/configure.in
-@@ -47,24 +47,11 @@
- PKG_CHECK_MODULES([EVAS], evas)
-
- dnl OpenGL GLEW
--PKG_CHECK_EXISTS(evas-opengl-glew,
-- [
-- AC_DEFINE(HAVE_EVAS_OPENGL_GLEW, 1, [Evas GL Glew Engine Support])
-- have_opengl_glew="yes"
-- glew_libs="-lglew32 -lgdi32"
-- ],
-- [ have_opengl_glew="no" ]
--)
-+have_opengl_glew="no"
- AM_CONDITIONAL(BUILD_OPENGL_GLEW, test "x$have_opengl_glew" = "xyes")
-
- dnl OpenGL X11
--PKG_CHECK_EXISTS(evas-opengl-x11,
-- [
-- AC_DEFINE(HAVE_EVAS_OPENGL_X11, 1, [Evas GL X11 Engine Support])
-- have_opengl_x11="yes"
-- ],
-- [ have_opengl_x11="no" ]
--)
-+have_opengl_x11="no"
- AM_CONDITIONAL(BUILD_OPENGL_X11, test "x$have_opengl_x11" = "xyes")
-
- dnl Software X11
-@@ -109,49 +96,23 @@
-
- # TODO: Check availability of libs
- dnl DirectDraw
--PKG_CHECK_EXISTS(evas-software-ddraw,
-- [
-- AC_DEFINE(HAVE_EVAS_SOFTWARE_DDRAW, 1, [Evas Software DirectDraw Engine Support])
-- have_software_ddraw="yes"
-- ddraw_libs="-lddraw -ldxguid"
-- ],
-- [ have_software_ddraw="no" ]
--)
-+have_software_ddraw="no"
- AM_CONDITIONAL(BUILD_SOFTWARE_DDRAW, test "x$have_software_ddraw" = "xyes")
-
- # TODO: Check availability of libs
- dnl 16bit DirectDraw
--PKG_CHECK_EXISTS(evas-software-16-ddraw,
-- [
-- AC_DEFINE(HAVE_EVAS_SOFTWARE_16_DDRAW, 1, [Evas Software 16bit DirectDraw Engine Support])
-- have_software_16_ddraw="yes"
-- ddraw_libs="-lddraw -ldxguid"
-- ],
-- [ have_software_16_ddraw="no" ]
--)
-+have_software_16_ddraw="no"
- AM_CONDITIONAL(BUILD_SOFTWARE_16_DDRAW, test "x$have_software_16_ddraw" = "xyes")
-
- # TODO: Check availability of libs
- dnl Direct3D
--PKG_CHECK_EXISTS(evas-direct3d,
-- [
-- AC_DEFINE(HAVE_EVAS_DIRECT3D, 1, [Evas Direct3D Engine Support])
-- have_direct3d="yes"
-- d3d_libs="-ld3d9 -ld3dx9d"
-- ],
-- [ have_direct3d="no" ]
--)
-+have_direct3d="no"
- AM_CONDITIONAL(BUILD_DIRECT3D, test "x$have_direct3d" = "xyes")
-
- dnl Software SDL
--PKG_CHECK_EXISTS(evas-software-sdl,
-- [
-- AC_DEFINE(HAVE_EVAS_SOFTWARE_SDL, 1, [Evas Software SDL Engine Support])
-- have_software_sdl="yes"
-- ],
-- [ have_direct3d="no" ]
--)
--AM_CONDITIONAL(BUILD_SOFTWARE_SDL, test "x$have_software_sdl" = "xyes")
-+have_software_sdl="no"
-+AM_CONDITIONAL(BUILD_SOFTWARE_SDL, test "x$have_software_sdl" = "xyes")
-+
-
- if test "x$have_software_x11" = "xyes" -o "x$have_software_16_x11" = "xyes" -o "x$have_xrender_x11" = "xyes" -o "x$have_opengl_x11" = "xyes"; then
- AC_PATH_XTRA
diff --git a/packages/e17/expedite_cvs.bb b/packages/e17/expedite_cvs.bb
index 271ed62d66..11d4e503cb 100644
--- a/packages/e17/expedite_cvs.bb
+++ b/packages/e17/expedite_cvs.bb
@@ -3,12 +3,11 @@ DEPENDS = "eet evas"
RDEPENDS = "libevas-engine-buffer libevas-engine-fb libevas-engine-software-generic libevas-engine-software-x11 libevas-loader-png"
LICENSE = "MIT BSD"
PV = "0.6.0+cvs${SRCDATE}"
-PR = "r0"
+PR = "r1"
inherit autotools
-SRC_URI = "${E_CVS};module=e17/apps/expedite \
- file://hack-disable-opengl.patch;patch=1"
+SRC_URI = "${E_CVS};module=e17/apps/expedite"
S = "${WORKDIR}/${PN}"
EXTRA_OECONF = "\
diff --git a/packages/e17/rage_0.2.0.005.bb b/packages/e17/rage_0.2.0.005.bb
deleted file mode 100644
index d2d6c3feae..0000000000
--- a/packages/e17/rage_0.2.0.005.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-DESCRIPTION = "Rage is a media center application based on EFL"
-AUTHOR = "Carsten 'The Rasterman' Heitzler"
-HOMEPAGE = "http://www.rasterman.com"
-LICENSE = "MIT BSD"
-DEPENDS = "evas ecore edje"
-SECTION = "x11/multimedia"
-
-SRC_URI = "http://download.enlightenment.org/snapshots/2007-08-26/rage-${PV}.tar.gz"
-
-inherit autotools
diff --git a/packages/e17/rage_cvs.bb b/packages/e17/rage_cvs.bb
new file mode 100644
index 0000000000..3b7bed7a11
--- /dev/null
+++ b/packages/e17/rage_cvs.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Rage is a media center application based on EFL"
+AUTHOR = "Carsten 'The Rasterman' Heitzler"
+HOMEPAGE = "http://www.rasterman.com"
+LICENSE = "MIT BSD"
+DEPENDS = "evas ecore edje"
+SECTION = "x11/multimedia"
+PV = "0.3.0.042+cvs${SRCDATE}"
+
+inherit autotools
+
+SRC_URI = "${E_CVS};module=misc/rage"
+S = "${WORKDIR}/rage"
+
diff --git a/packages/eb/eb_4.3.2.bb b/packages/eb/eb_4.3.2.bb
new file mode 100644
index 0000000000..5ba61c7cdb
--- /dev/null
+++ b/packages/eb/eb_4.3.2.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Electronic book library"
+HOMEPAGE = "http://www.sra.co.jp/people/m-kasahr/eb"
+SECTION = "libs"
+LICENSE = "GPL"
+#DEPENDS = "zlib"
+
+SRC_URI = "ftp://ftp.sra.co.jp/pub/misc/eb/eb-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF += " --with-pkgdocdir=${docdir}/eb"
+
+do_stage () {
+ autotools_stage_all
+}
+
+PACKAGES =+ "eb-utils"
+FILES_eb-utils = "/usr/bin/*"
diff --git a/packages/eb/eb_4.3.bb b/packages/eb/eb_4.3.bb
deleted file mode 100644
index 29bd53dfea..0000000000
--- a/packages/eb/eb_4.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Electronic book library"
-HOMEPAGE = "http://www.sra.co.jp/people/m-kasahr/eb"
-SECTION = "libs"
-LICENSE = "GPL"
-
-SRC_URI = "ftp://ftp.sra.co.jp/pub/misc/eb/eb-${PV}.tar.bz2"
-
-inherit autotools pkgconfig
-
-do_stage () {
- install -d ${STAGING_INCDIR}/eb/
- install -m 0644 eb/*.h ${STAGING_INCDIR}/eb/
- install eb/.libs/libeb.so ${STAGING_LIBDIR}
-}
diff --git a/packages/efl1/ecore-native_cvs.bb b/packages/efl1/ecore-native_cvs.bb
index 52855d99a8..b7d16b54ba 100644
--- a/packages/efl1/ecore-native_cvs.bb
+++ b/packages/efl1/ecore-native_cvs.bb
@@ -1,7 +1,7 @@
require ecore.inc
inherit native
DEPENDS = "eet-native evas-native"
-PR = "r2"
+PR = "r3"
EXTRA_OECONF = "\
--x-includes=${STAGING_INCDIR}/X11 \
@@ -19,6 +19,7 @@ EXTRA_OECONF = "\
--disable-ecore-evas-x11-gl \
--disable-ecore-evas-xrender \
--disable-ecore-evas-dfb \
+ --disable-ecore-evas-sdl \
--disable-openssl \
--enable-abstract-sockets \
--enable-ecore-con \
diff --git a/packages/efl1/ecore.inc b/packages/efl1/ecore.inc
index eacde2d012..6175c605c0 100644
--- a/packages/efl1/ecore.inc
+++ b/packages/efl1/ecore.inc
@@ -1,11 +1,9 @@
-DESCRIPTION = "Ecore is the core event abstraction layer for the enlightenment \
-foundation libraries. It makes makes doing selections, drag and drop, event loops, \
-timeouts and idle handlers fast, optimized, and convenient."
-LICENSE = "MIT"
+DESCRIPTION = "Ecore is the Enlightenment application framework library"
+LICENSE = "MIT BSD"
DEPENDS = "curl eet evas tslib"
# optional
# DEPENDS += "directfb libsdl-x11 openssl virtual/libiconv"
-PV = "0.9.9.041+cvs${SRCDATE}"
+PV = "0.9.9.042+cvs${SRCDATE}"
inherit efl_library
diff --git a/packages/efl1/ecore/configure.patch b/packages/efl1/ecore/configure.patch
deleted file mode 100644
index 9939bd9d34..0000000000
--- a/packages/efl1/ecore/configure.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: ecore/configure.in
-===================================================================
---- ecore.orig/configure.in 2007-08-20 17:21:13.000000000 +0000
-+++ ecore/configure.in 2007-08-20 17:23:31.000000000 +0000
-@@ -16,7 +16,6 @@
- AC_CHECK_SIZEOF(long, 4)
- AM_ENABLE_SHARED
- AM_PROG_LIBTOOL
--AC_C___ATTRIBUTE__
-
- if test "x${bindir}" = 'xNONE'; then
- if test "x${prefix}" = "xNONE"; then
-@@ -238,9 +237,7 @@
- AC_CHECK_HEADER(X11/X.h,
- [
- have_x="yes"
-- x_dir=${x_dir:-/usr/X11R6}
-- x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
-- x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
-+ x_libs="${x_libs} -lX11 -lXext"
- ]
- )
-
diff --git a/packages/efl1/ecore/ecore_kernel_input_header.patch b/packages/efl1/ecore/ecore_kernel_input_header.patch
deleted file mode 100644
index 99f57ddcff..0000000000
--- a/packages/efl1/ecore/ecore_kernel_input_header.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: ecore-0.9.9.036/src/lib/ecore_fb/ecore_fb_li.c
-===================================================================
---- ecore-0.9.9.036.orig/src/lib/ecore_fb/ecore_fb_li.c 2006-09-05 01:36:43.000000000 +0100
-+++ ecore-0.9.9.036/src/lib/ecore_fb/ecore_fb_li.c 2006-12-02 21:55:54.000000000 +0000
-@@ -1,6 +1,18 @@
- #include "Ecore_Fb.h"
- #include "ecore_fb_private.h"
-
-+struct input_absinfo {
-+ __s32 value;
-+ __s32 minimum;
-+ __s32 maximum;
-+ __s32 fuzz;
-+ __s32 flat;
-+};
-+
-+
-+#define EV_SYN 0x00
-+#define EV_PWR 0x16
-+#define EV_FF_STATUS 0x17
-
- /* Copyright (C) Brad Hards (1999-2002).
- * this macro is used to tell if "bit" is set in "array"
diff --git a/packages/efl1/ecore/fix-tslib-configure.patch b/packages/efl1/ecore/fix-tslib-configure.patch
deleted file mode 100644
index a1fbb21326..0000000000
--- a/packages/efl1/ecore/fix-tslib-configure.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Index: ecore-0.9.9.038/configure.in
-===================================================================
---- ecore-0.9.9.038.orig/configure.in
-+++ ecore-0.9.9.038/configure.in
-@@ -1,4 +1,4 @@
--dnl Process this file with autoconf to produce a configure script.
-+<dnl Process this file with autoconf to produce a configure script.
-
- AC_INIT(configure.in)
- AC_CANONICAL_BUILD
-@@ -321,7 +321,7 @@ tslib_libs=""
- if test "x$have_ecore_fb" = "xyes" ; then
- AC_CHECK_HEADER(tslib.h,
- [
-- tslib_libs="-ltslib"
-+ tslib_libs="-lts"
- AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
- ]
- )
diff --git a/packages/efl1/ecore/remove-bad-code.patch b/packages/efl1/ecore/remove-bad-code.patch
deleted file mode 100644
index 87a8d16bd6..0000000000
--- a/packages/efl1/ecore/remove-bad-code.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Index: ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_private.h
-===================================================================
---- ecore-0.9.9.037.orig/src/lib/ecore_fb/ecore_fb_private.h
-+++ ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_private.h
-@@ -19,8 +19,8 @@
- #define kernel_ulong_t unsigned long
- #define BITS_PER_LONG 32
- #include <linux/input.h>
-- #undef kernel_ulong_t <-added
-- #undef BITS_PER_LONG <-added
-+ #undef kernel_ulong_t
-+ #undef BITS_PER_LONG
- #else
- #include <linux/input.h>
- #endif
-Index: ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_li.c
-===================================================================
---- ecore-0.9.9.037.orig/src/lib/ecore_fb/ecore_fb_li.c
-+++ ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_li.c
-@@ -1,6 +1,6 @@
- #include "Ecore_Fb.h"
- #include "ecore_fb_private.h"
--
-+/*
- struct input_absinfo {
- __s32 value;
- __s32 minimum;
-@@ -8,7 +8,7 @@ struct input_absinfo {
- __s32 fuzz;
- __s32 flat;
- };
--
-+*/
-
- #define EV_SYN 0x00
- #define EV_PWR 0x16
diff --git a/packages/efl1/ecore_cvs.bb b/packages/efl1/ecore_cvs.bb
index cea3d7602d..3e8cdcf5be 100644
--- a/packages/efl1/ecore_cvs.bb
+++ b/packages/efl1/ecore_cvs.bb
@@ -1,5 +1,5 @@
require ecore.inc
-PR = "r2"
+PR = "r1"
EXTRA_OECONF = "\
--x-includes=${STAGING_INCDIR}/X11 \
@@ -15,9 +15,11 @@ EXTRA_OECONF = "\
--disable-ecore-sdl \
--enable-ecore-fb \
--enable-ecore-evas \
+ --enable-ecore-evas-x11-16 \
--disable-ecore-evas-x11-gl \
--enable-ecore-evas-xrender \
--disable-ecore-evas-dfb \
+ --disable-ecore-evas-sdl \
--disable-openssl \
--enable-abstract-sockets \
--enable-ecore-con \
diff --git a/packages/efl1/edb_cvs.bb b/packages/efl1/edb_cvs.bb
index b7c85e8663..97dafb3931 100644
--- a/packages/efl1/edb_cvs.bb
+++ b/packages/efl1/edb_cvs.bb
@@ -1,5 +1,6 @@
-DESCRIPTION = "Edb is a database library"
-LICENSE = "MIT"
-PV = "0.0.0+cvs${SRCDATE}"
+DESCRIPTION = "Edb is the Enlightenment database library"
+LICENSE = "MIT BSD"
+DEPENDS = "zlib"
+PV = "1.0.5.042+cvs${SRCDATE}"
inherit efl_library
diff --git a/packages/efl1/edje_cvs.bb b/packages/efl1/edje_cvs.bb
index 734dccf56e..e930fc4795 100644
--- a/packages/efl1/edje_cvs.bb
+++ b/packages/efl1/edje_cvs.bb
@@ -1,9 +1,8 @@
-DESCRIPTION = "Edje is a complex graphical design & layout library."
-# can also install vim data files
+DESCRIPTION = "Edje is the Enlightenment graphical design & layout library"
DEPENDS = "eet evas ecore embryo edje-native"
LICENSE = "MIT BSD"
-PV = "0.5.0.41+cvs${SRCDATE}"
-PR = "r2"
+PV = "0.5.0.042+cvs${SRCDATE}"
+PR = "r0"
inherit efl_library
diff --git a/packages/efl1/eet_cvs.bb b/packages/efl1/eet_cvs.bb
index f2ab6a7408..370b385bf8 100644
--- a/packages/efl1/eet_cvs.bb
+++ b/packages/efl1/eet_cvs.bb
@@ -1,10 +1,7 @@
-DESCRIPTION = "EET is a tiny library designed to write an \
-arbitary set of chunks of data to a file and optionally compress \
-each chunk (very much like a zip file) and allow fast \
-random-access reading of the file later on."
+DESCRIPTION = "EET is the Enlightenment data storage library"
DEPENDS = "zlib jpeg"
LICENSE = "MIT BSD"
-PV = "0.9.10.041+cvs${SRCDATE}"
-PR = "r1"
+PV = "0.9.10.042+cvs${SRCDATE}"
+PR = "r0"
inherit efl_library
diff --git a/packages/efl1/efreet_cvs.bb b/packages/efl1/efreet_cvs.bb
index 248dadd9bf..a1a027fc8f 100644
--- a/packages/efl1/efreet_cvs.bb
+++ b/packages/efl1/efreet_cvs.bb
@@ -1,8 +1,7 @@
-DESCRIPTION = "An implementation of freedesktop.org specs for the \
-Enlightenment Foundation Libraries"
+DESCRIPTION = "The Enlightenment freedesktop.org library"
DEPENDS = "ecore"
LICENSE = "MIT BSD"
-PV = "0.0.3.003+cvs${SRCDATE}"
+PV = "0.0.3.042+cvs${SRCDATE}"
PR = "r0"
inherit efl_library
diff --git a/packages/efl1/embryo_cvs.bb b/packages/efl1/embryo_cvs.bb
index 15546e206f..2f5ab176ce 100644
--- a/packages/efl1/embryo_cvs.bb
+++ b/packages/efl1/embryo_cvs.bb
@@ -1,10 +1,6 @@
-DESCRIPTION = "Embryo implements a C like scripting language used in various parts \
-of the Enlightenment project, namely Edje. Embryo's scripting language is based on \
-CompuPhase's Small language that was introduced in Dr Dobb's Journal in 1999. \
-Embryo allows scripting capabilities in places that otherwise wouldn't support \
-basic programming structures such as in Edje EDCs."
+DESCRIPTION = "The Enlightenment C-like scripting language for Edje"
LICENSE = "MIT BSD"
-PV = "0.9.1.041+cvs${SRCDATE}"
-PR = "r1"
+PV = "0.9.1.042+cvs${SRCDATE}"
+PR = "r0"
inherit efl_library
diff --git a/packages/efl1/emotion_cvs.bb b/packages/efl1/emotion_cvs.bb
index 84302e4793..36a5065e7a 100644
--- a/packages/efl1/emotion_cvs.bb
+++ b/packages/efl1/emotion_cvs.bb
@@ -1,9 +1,9 @@
-DESCRIPTION = "Emotion is a multimedia library with backends: gstreamer and libxine"
-LICENSE = "MIT"
+DESCRIPTION = "The Enlightenment multimedia library"
+LICENSE = "MIT BSD"
# we no longer build the libxine backend, since the gstreamer backend seems more promising
DEPENDS = "eet evas ecore edje gstreamer gst-plugins-base"
RRECOMMENDS_${PN} = "emotion-backend-gstreamer"
-PV = "0.0.1+cvs${SRCDATE}"
+PV = "0.1.0+cvs${SRCDATE}"
PR = "r0"
inherit efl_library
diff --git a/packages/efl1/epdf_cvs.bb b/packages/efl1/epdf_cvs.bb
index 27c475c37d..fa4f4282e1 100644
--- a/packages/efl1/epdf_cvs.bb
+++ b/packages/efl1/epdf_cvs.bb
@@ -1,13 +1,11 @@
DESCRIPTION = "Epdf is the glue between EFL and libpoppler"
-LICENSE = "BSD"
-DEPENDS = "poppler evas ecore etk"
+LICENSE = "MIT BSD"
+DEPENDS = "poppler evas ecore etk ewl"
PV = "0.1.0+cvs${SRCDATE}"
-PR = "r2"
+PR = "r0"
inherit efl_library
-EXTRA_OECONF = "--disable-ewl"
-
SRC_URI = "${E_CVS};module=e17/proto/${SRCNAME} \
file://fix-plugin-path-check.patch;HACK=1;patch=1"
diff --git a/packages/efl1/epsilon_cvs.bb b/packages/efl1/epsilon_cvs.bb
index be2934dec8..8c71ef3e3d 100644
--- a/packages/efl1/epsilon_cvs.bb
+++ b/packages/efl1/epsilon_cvs.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "Epsilon is a flexible and powerful image thumbnailing library \
that is compliant with the freedesktop.org Thumbnail Managing Standard."
-LICENSE = "BSD"
+LICENSE = "MIT BSD"
# can also depend on xine for movie thumbnails
DEPENDS = "imlib2 epeg libpng evas ecore edje perl-native"
-PV = "0.3.0+cvs${SRCDATE}"
+PV = "0.3.0.012+cvs${SRCDATE}"
inherit efl_library
diff --git a/packages/efl1/esmart_cvs.bb b/packages/efl1/esmart_cvs.bb
index 17e1f42b95..fa35d60d30 100644
--- a/packages/efl1/esmart_cvs.bb
+++ b/packages/efl1/esmart_cvs.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "ESmart is a collection of smart Evas objects"
-LICENSE = "MIT"
+LICENSE = "MIT BSD"
DEPENDS = "evas ecore edje imlib2 epsilon libtool"
-PV = "0.9.0+cvs${SRCDATE}"
+PV = "0.9.0.042+cvs${SRCDATE}"
inherit efl_library
diff --git a/packages/efl1/etk_cvs.bb b/packages/efl1/etk_cvs.bb
index 238d640a68..90df74e61c 100644
--- a/packages/efl1/etk_cvs.bb
+++ b/packages/efl1/etk_cvs.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Etk is an advanced widget toolkit based on the Enlightenment Foundation Libraries."
DEPENDS = "evas ecore edje"
LICENSE = "MIT"
-PV = "0.1.0+cvs${SRCDATE}"
-PR = "r1"
+PV = "0.1.0.042+cvs${SRCDATE}"
+PR = "r0"
inherit efl_library
diff --git a/packages/efl1/evas.inc b/packages/efl1/evas.inc
index e05397067b..77ec2db308 100644
--- a/packages/efl1/evas.inc
+++ b/packages/efl1/evas.inc
@@ -1,18 +1,12 @@
-DESCRIPTION = "Evas is a hardware-accelerated canvas API that can draw \
-anti-aliased text, smooth super and sub-images, alpha-blend, as well as drop \
-down to using normal X11 primitives such as pixmaps, lines and rectangles if \
-your CPU or graphics hardware are too slow."
+DESCRIPTION = "Evas is the Enlightenment canvas API"
LICENSE = "MIT BSD"
# can also depend on valgrind, libsdl-x11, directfb
DEPENDS = "eet freetype jpeg libpng virtual/libx11 libxext libxrender"
-PV = "0.9.9.041+cvs${SRCDATE}"
+PV = "0.9.9.042+cvs${SRCDATE}"
inherit efl_library
-# SRC_URI += "file://fix-configure.patch;patch=1"
-
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/evas"
-
EXTRA_OECONF = "<override me>"
python populate_packages_prepend () {
diff --git a/packages/efl1/evas_cvs.bb b/packages/efl1/evas_cvs.bb
index d30a03d7c1..862cc51370 100644
--- a/packages/efl1/evas_cvs.bb
+++ b/packages/efl1/evas_cvs.bb
@@ -1,5 +1,5 @@
require evas.inc
-PR = "r2"
+PR = "r0"
EXTRA_OECONF = "\
--x-includes=${STAGING_INCDIR}/X11 \
diff --git a/packages/efl1/ewl_cvs.bb b/packages/efl1/ewl_cvs.bb
index 193efcbe18..15a777df67 100644
--- a/packages/efl1/ewl_cvs.bb
+++ b/packages/efl1/ewl_cvs.bb
@@ -1,10 +1,8 @@
-DESCRIPTION = "The Enlightened Widget Library, \
-a simple-to-use general purpose widget library \
-based on the enlightenment foundation libraries."
+DESCRIPTION = "The Enlightened Widget Library"
DEPENDS = "evas ecore edje emotion efreet epsilon"
-LICENSE = "MIT"
-PV = "0.5.1+cvs${SRCDATE}"
-PR = "r2"
+LICENSE = "MIT BSD"
+PV = "0.5.2.042+cvs${SRCDATE}"
+PR = "r0"
inherit efl_library
diff --git a/packages/efl1/imlib2_1.4.0.002.bb b/packages/efl1/imlib2_1.4.0.002.bb
deleted file mode 100644
index baee4b62b0..0000000000
--- a/packages/efl1/imlib2_1.4.0.002.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "A graphic library for file loading, saving, rendering, and manipulation."
-LICENSE = "BSD"
-# can also depend on tiff34, ungif or gif, z, bz2, id3tag
-DEPENDS = "freetype libpng jpeg virtual/libx11 libxext"
-PR = "r2"
-
-inherit efl_library
-
-SRC_URI += "file://remove-local-includes.patch;patch=1"
-
-EXTRA_OECONF = "--with-x"
-
-# TODO: Use more fine granular version
-#OE_LT_RPATH_ALLOW=":${libdir}/imlib2/loaders:${libdir}/imlib2/filters:"
-OE_LT_RPATH_ALLOW = "any"
-OE_LT_RPATH_ALLOW[export]="1"
-
-PACKAGES =+ "imlib2-loaders-dbg imlib2-filters-dbg imlib2-loaders imlib2-filters"
-FILES_${PN} = "${libdir}/lib*.so.* ${libdir}/imlib2/*/*.so"
-FILES_${PN}-dbg = "${libdir}/.debug/ ${bindir}/.debug/"
-FILES_${PN}-dev += "${bindir}/imlib2-config ${libdir}/*.so ${includedir}"
-FILES_${PN}-bin = "${bindir}"
-FILES_imlib2-loaders = "${libdir}/imlib2/loaders/*.so"
-FILES_imlib2-filters = "${libdir}/imlib2/filters/*.so"
-FILES_imlib2-loaders-dbg += "${libdir}/imlib2/loaders/.debug"
-FILES_imlib2-filters-dbg += "${libdir}/imlib2/filters/.debug"
diff --git a/packages/efl1/imlib2_1.4.1.000.bb b/packages/efl1/imlib2_1.4.1.000.bb
new file mode 100644
index 0000000000..b0db13b5ce
--- /dev/null
+++ b/packages/efl1/imlib2_1.4.1.000.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "A graphic library for file loading, saving, rendering, and manipulation."
+LICENSE = "BSD"
+# can also depend on tiff34, ungif or gif, z, bz2, id3tag
+DEPENDS = "freetype libpng jpeg virtual/libx11 libxext"
+PR = "r0"
+
+inherit efl_library
+
+SRC_URI += "file://remove-local-includes.patch;patch=1"
+
+EXTRA_OECONF = "--with-x"
+
+# TODO: Use more fine granular version
+#OE_LT_RPATH_ALLOW=":${libdir}/imlib2/loaders:${libdir}/imlib2/filters:"
+OE_LT_RPATH_ALLOW = "any"
+OE_LT_RPATH_ALLOW[export]="1"
+
+PACKAGES =+ "imlib2-loaders-dbg imlib2-filters-dbg imlib2-loaders imlib2-filters"
+FILES_${PN} = "${libdir}/lib*.so.* ${libdir}/imlib2/*/*.so"
+FILES_${PN}-dbg = "${libdir}/.debug/ ${bindir}/.debug/"
+FILES_${PN}-dev += "${bindir}/imlib2-config ${libdir}/*.so ${includedir}"
+FILES_${PN}-bin = "${bindir}"
+FILES_imlib2-loaders = "${libdir}/imlib2/loaders/*.so"
+FILES_imlib2-filters = "${libdir}/imlib2/filters/*.so"
+FILES_imlib2-loaders-dbg += "${libdir}/imlib2/loaders/.debug"
+FILES_imlib2-filters-dbg += "${libdir}/imlib2/filters/.debug"
diff --git a/packages/elfkickers/elfkickers_2.0a.bb b/packages/elfkickers/elfkickers_2.0a.bb
index 6f18da5960..b369b8690c 100644
--- a/packages/elfkickers/elfkickers_2.0a.bb
+++ b/packages/elfkickers/elfkickers_2.0a.bb
@@ -11,7 +11,7 @@ S = "${WORKDIR}/ELFkickers"
ELFPKGS = "ebfc elfls elftoc \
rebind sstrip"
-PACKAGES = "${ELFPKGS}"
+PACKAGES = "${PN}-dbg ${ELFPKGS}"
FILES_ebfc = "${bindir}/ebfc"
FILES_elfls = "${bindir}/elfls"
FILES_elftoc = "${bindir}/elftoc"
diff --git a/packages/elvis/elvis-tiny_2.2.0.bb b/packages/elvis/elvis-tiny_2.2.0.bb
index 0e26c0126a..a5e42bf07c 100644
--- a/packages/elvis/elvis-tiny_2.2.0.bb
+++ b/packages/elvis/elvis-tiny_2.2.0.bb
@@ -16,5 +16,4 @@ do_install_append() {
sed -i -e "s/^set\(.*lptype.*\)/\"set\1/" ${D}/etc/elvis/elvis.ini
}
-PACKAGES = "${PN}"
FILES_${PN} = "/usr/bin/elvis /etc/elvis"
diff --git a/packages/elvis/elvis_2.2.0.bb b/packages/elvis/elvis_2.2.0.bb
index 738822b139..c0f92627bf 100644
--- a/packages/elvis/elvis_2.2.0.bb
+++ b/packages/elvis/elvis_2.2.0.bb
@@ -54,7 +54,7 @@ pkg_prerm_${PN} () {
update-alternatives --remove vi /usr/bin/elvis
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-tools"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-tools"
FILES_${PN}-doc = "/usr/share/elvis/manual /usr/share/elvis/README"
FILES_${PN}-tools = "/usr/bin/elvfmt /usr/bin/elvtags /usr/bin/ref"
FILES_${PN} = "/usr/bin/elvis /etc/elvis /usr/share/elvis/scripts /usr/share/elvis/README /usr/share/elvis/*.*"
diff --git a/packages/ez-ipupdate/ez-ipupdate_3.0.10.bb b/packages/ez-ipupdate/ez-ipupdate_3.0.10.bb
index 2b9c578125..fbf5f61a39 100644
--- a/packages/ez-ipupdate/ez-ipupdate_3.0.10.bb
+++ b/packages/ez-ipupdate/ez-ipupdate_3.0.10.bb
@@ -22,7 +22,7 @@ CONFFILES_${PN} = "${sysconfdir}/ipupdate.conf"
inherit autotools update-rc.d
-PACKAGES = "ez-ipupdate"
+PACKAGES += "ez-ipupdate"
do_install_append() {
install -d "${D}${sysconfdir}/init.d"
diff --git a/packages/faac/faac_1.24.bb b/packages/faac/faac_1.24.bb
index 253310d1c5..f6ba784389 100644
--- a/packages/faac/faac_1.24.bb
+++ b/packages/faac/faac_1.24.bb
@@ -9,7 +9,7 @@ inherit autotools
SRC_URI = "${SOURCEFORGE_MIRROR}/faac/${PN}-${PV}.tar.gz"
S="${WORKDIR}/${PN}"
-PACKAGES = "${PN} lib${PN} lib${PN}-dev"
+PACKAGES = "${PN}-dbg ${PN} lib${PN} lib${PN}-dev"
FILES_${PN} = " ${bindir}/faac "
FILES_lib${PN} = " ${libdir}/libfaac.so.0 ${libdir}/libfaac.so.0.0.0 "
diff --git a/packages/fakeroot/fakeroot-native-1.8.3/configure-libtool.patch b/packages/fakeroot/fakeroot-native-1.8.3/configure-libtool.patch
deleted file mode 100644
index 8830328eb5..0000000000
--- a/packages/fakeroot/fakeroot-native-1.8.3/configure-libtool.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- fakeroot-1.8.3/configure.ac.orig 2007-10-31 00:17:27.000000000 -0500
-+++ fakeroot-1.8.3/configure.ac 2007-10-31 00:18:12.000000000 -0500
-@@ -1,14 +1,12 @@
- dnl Process this file with autoconf to produce a configure script.
- AC_INIT([fakeroot],[FAKEROOT_VERSION],[schizo@debian.org],[fakeroot])
- AC_PREREQ(2.61)
--LT_PREREQ(2.1a)
- AC_CANONICAL_TARGET
- AM_INIT_AUTOMAKE
- AM_MAINTAINER_MODE
- AC_CONFIG_HEADERS([config.h])
- AC_PROG_MAKE_SET
--LT_INIT
--LT_LANG(C)
-+AC_PROG_LIBTOOL
-
- AC_ARG_WITH([ipc],
- AS_HELP_STRING([--with-ipc@<:@=IPCTYPE@:>@],
diff --git a/packages/fakeroot/fakeroot-native_1.8.3.bb b/packages/fakeroot/fakeroot-native_1.8.3.bb
deleted file mode 100644
index 8b3d2a1590..0000000000
--- a/packages/fakeroot/fakeroot-native_1.8.3.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SECTION = "base"
-require fakeroot_${PV}.bb
-inherit native
-RDEPENDS="util-linux-native"
-
-SRC_URI += "file://fix-prefix.patch;patch=1 "
-S = "${WORKDIR}/fakeroot-${PV}"
-
-EXTRA_OECONF = " --program-prefix="
-
-# Compatability for the rare systems not using or having SYSV
-python () {
- if bb.data.getVar('HOST_NONSYSV', d, True) and bb.data.getVar('HOST_NONSYSV', d, True) != '0':
- bb.data.setVar('EXTRA_OECONF', ' --with-ipc=tcp --program-prefix= ', d)
-}
-
-do_stage_append () {
- oe_libinstall -so libfakeroot ${STAGING_LIBDIR}/libfakeroot/
-}
-
diff --git a/packages/fakeroot/fakeroot-native_1.9.1.bb b/packages/fakeroot/fakeroot-native_1.9.1.bb
new file mode 100644
index 0000000000..77d6f58651
--- /dev/null
+++ b/packages/fakeroot/fakeroot-native_1.9.1.bb
@@ -0,0 +1,21 @@
+require fakeroot_${PV}.bb
+
+RDEPENDS="util-linux-native"
+
+SRC_URI += "file://fix-prefix.patch;patch=1 "
+S = "${WORKDIR}/fakeroot-${PV}"
+
+inherit native
+
+EXTRA_OECONF = " --program-prefix="
+
+# Compatability for the rare systems not using or having SYSV
+python () {
+ if bb.data.getVar('HOST_NONSYSV', d, True) and bb.data.getVar('HOST_NONSYSV', d, True) != '0':
+ bb.data.setVar('EXTRA_OECONF', ' --with-ipc=tcp --program-prefix= ', d)
+}
+
+do_stage_append () {
+ oe_libinstall -so libfakeroot ${STAGING_LIBDIR}/libfakeroot/
+}
+
diff --git a/packages/fakeroot/fakeroot_1.8.3.bb b/packages/fakeroot/fakeroot_1.8.3.bb
deleted file mode 100644
index ef4d1ba55c..0000000000
--- a/packages/fakeroot/fakeroot_1.8.3.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "Gives a fake root environment"
-SECTION = "base"
-LICENSE = "GPL"
-# fakeroot needs getopt which is provided by the util-linux package
-RDEPENDS = "util-linux"
-PR = "r1"
-
-SRC_URI = "ftp://ftp.debian.org/debian/pool/main/f/fakeroot/fakeroot_${PV}.tar.gz \
- file://configure-libtool.patch;patch=1"
-
-inherit autotools
-
-do_stage() {
- install -d ${STAGING_INCDIR}/fakeroot
- install -m 644 *.h ${STAGING_INCDIR}/fakeroot
- autotools_stage_all
-}
diff --git a/packages/fakeroot/fakeroot_1.9.1.bb b/packages/fakeroot/fakeroot_1.9.1.bb
new file mode 100644
index 0000000000..aaf696d79d
--- /dev/null
+++ b/packages/fakeroot/fakeroot_1.9.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Gives a fake root environment"
+HOMEPAGE = "http://fakeroot.alioth.debian.org/"
+SECTION = "base"
+LICENSE = "GPL"
+# fakeroot needs getopt which is provided by the util-linux package
+RDEPENDS = "util-linux"
+PR = "r1"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/f/fakeroot/fakeroot_${PV}.tar.gz \
+ file://configure-libtool.patch;patch=1"
+
+inherit autotools
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/fakeroot
+ install -m 644 *.h ${STAGING_INCDIR}/fakeroot
+ autotools_stage_all
+}
diff --git a/packages/fakeroot/fakeroot-1.8.3/configure-libtool.patch b/packages/fakeroot/files/configure-libtool.patch
index 8830328eb5..8830328eb5 100644
--- a/packages/fakeroot/fakeroot-1.8.3/configure-libtool.patch
+++ b/packages/fakeroot/files/configure-libtool.patch
diff --git a/packages/fastjar/fastjar-native_0.95.bb b/packages/fastjar/fastjar-native_0.95.bb
index 520235d799..3d003306b8 100644
--- a/packages/fastjar/fastjar-native_0.95.bb
+++ b/packages/fastjar/fastjar-native_0.95.bb
@@ -4,6 +4,8 @@ SECTION = "devel"
PRIORITY = "optional"
LICENSE = "GPL"
+PR = "r1"
+
DEPENDS = "zlib-native"
SRC_URI = "http://download.savannah.nongnu.org/releases/fastjar/fastjar-${PV}.tar.gz"
@@ -20,7 +22,8 @@ do_configure () {
}
do_stage() {
+ #we should teach autotools.bbclass:autotools_stage_all() about ${STAGING_BINDIR}
install -d ${STAGING_BINDIR}
- install -m 755 fastjar ${STAGING_BINDIR}/fastjar
- install -m 755 grepjar ${STAGING_BINDIR}
+ install -m 755 .libs/fastjar ${STAGING_BINDIR}/fastjar
+ install -m 755 .libs/grepjar ${STAGING_BINDIR}
}
diff --git a/packages/fbset/fbset-init.bb b/packages/fbset/fbset-init.bb
new file mode 100644
index 0000000000..f04691d793
--- /dev/null
+++ b/packages/fbset/fbset-init.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Set framebuffer mode during boot"
+PR = "r1"
+
+SRC_URI = "file://fbset.sh file://default-fbset"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "fbset.sh"
+INITSCRIPT_PARAMS = "start 0 S ."
+
+do_install() {
+ install -d ${D}${sysconfdir}/init.d
+ install -d ${D}${sysconfdir}/default
+ install -m 0755 ${WORKDIR}/fbset.sh ${D}${sysconfdir}/init.d/
+ install -m 0644 ${WORKDIR}/default-fbset ${D}${sysconfdir}/default/fbset
+}
+
+PACKAGE_ARCH = "all"
+CONFFILES_${PN} = "${sysconfdir}/default/fbset"
diff --git a/packages/busybox/busybox-1.01/wrt54/.mtn2git_empty b/packages/fbset/fbset-init/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.01/wrt54/.mtn2git_empty
+++ b/packages/fbset/fbset-init/.mtn2git_empty
diff --git a/packages/fbset/fbset-init/default-fbset b/packages/fbset/fbset-init/default-fbset
new file mode 100644
index 0000000000..5c163a7f7c
--- /dev/null
+++ b/packages/fbset/fbset-init/default-fbset
@@ -0,0 +1,3 @@
+# Uncomment and set value below to one of modes from /etc/fb.modes
+# or alternatively to "-xres <width> -yres <height>"
+#FBSET_MODE="vga"
diff --git a/packages/fbset/fbset-init/fbset.sh b/packages/fbset/fbset-init/fbset.sh
new file mode 100755
index 0000000000..900a1d4182
--- /dev/null
+++ b/packages/fbset/fbset-init/fbset.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+. /etc/default/fbset
+[ -n "$FBSET_MODE" ] && fbset -n $FBSET_MODE
diff --git a/packages/fbset/fbset-modes.bb b/packages/fbset/fbset-modes.bb
index 2724252125..403751c90a 100644
--- a/packages/fbset/fbset-modes.bb
+++ b/packages/fbset/fbset-modes.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Default display timings and resolutions for fbset"
PV = "0.1.0"
-PR = "r2"
+PR = "r3"
SRC_URI = "file://fb.modes"
diff --git a/packages/busybox/busybox-1.2.0/.mtn2git_empty b/packages/fbset/fbset-modes/qemuarm/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.2.0/.mtn2git_empty
+++ b/packages/fbset/fbset-modes/qemuarm/.mtn2git_empty
diff --git a/packages/fbset/fbset-modes/qemuarm/fb.modes b/packages/fbset/fbset-modes/qemuarm/fb.modes
new file mode 100644
index 0000000000..1114564797
--- /dev/null
+++ b/packages/fbset/fbset-modes/qemuarm/fb.modes
@@ -0,0 +1,17 @@
+# QEMU versatilepb machine, qemuarm in OE
+
+mode "vga" "640x480"
+ geometry 640 480 640 480 16
+endmode
+
+mode "vga-portrait" "480x640"
+ geometry 480 640 480 640 16
+endmode
+
+mode "qvga" "320x240"
+ geometry 320 240 320 240 16
+endmode
+
+mode "qvga-portrait" "240x320"
+ geometry 240 320 240 320 16
+endmode
diff --git a/packages/fbvncserver/fbvncserver_0.9.4.bb b/packages/fbvncserver/fbvncserver_0.9.4.bb
deleted file mode 100644
index e7c8151e18..0000000000
--- a/packages/fbvncserver/fbvncserver_0.9.4.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-DESCRIPTION = "Framebuffer VNC server"
-LICENSE = "GPL"
-SECTION = "console/utils"
-#DEPENDS = "libvncserver jpeg zlib"
-# using older version due of error with libvncserver-0.7.1
-# fbvncserver.c:577: error: structure has no member named `rfbAlwaysShared'
-# fbvncserver.c:602: error: structure has no member named `rfbClientHead'
-DEPENDS = "libvncserver-0.6 jpeg zlib"
-RDEPENDS = "fbvncserver-kmodule libvncserver-storepasswd libvncserver-javaapplet"
-PR = "r2"
-
-SRC_URI = "http://sdgsystems.com/download/fbvncserver-${PV}.tar.gz \
- file://libvncs0.6.patch;patch=1 \
- file://paths.patch;patch=1 \
- file://kernelinclude.patch;patch=1 \
- file://buildfix.patch;patch=1 \
- file://ipaq.patch;patch=1 \
- file://init"
-
-S = "${WORKDIR}/fbvncserver-${PV}"
-
-export INCLUDES = "-I${STAGING_INCDIR}"
-
-export LIBS = "-L${STAGING_LIBDIR} -lpthread"
-export VNCSERVER_DIR = "${STAGING_LIBDIR}"
-export ZAURUS_ZLIB_LIBS = "${STAGING_LIBDIR}"
-export ZAURUS_JPEG_LIBS = "${STAGING_LIBDIR}"
-
-inherit update-rc.d
-
-INITSCRIPT_NAME = "fbvncinput"
-INITSCRIPT_PARAMS = "defaults 97"
-
-FBVNCSERVER_SYSTEM = "zaurus"
-FBVNCSERVER_SYSTEM_h3600 = "ipaq"
-FBVNCSERVER_SYSTEM_h3900 = "ipaq"
-
-do_compile () {
- oe_runmake ${FBVNCSERVER_SYSTEM}_fbvncserver ${FBVNCSERVER_SYSTEM}_tssimd
-}
-
-do_install () {
- install -d ${D}${bindir}
- install -m 0755 ${FBVNCSERVER_SYSTEM}_fbvncserver ${D}${bindir}/fbvncserver
- install -m 0755 ${FBVNCSERVER_SYSTEM}_tssimd ${D}${bindir}/tssimd
-
- install -d ${D}${datadir}/fbvncserver
- install -m 0644 ${FBVNCSERVER_SYSTEM}_panel.jpg ${D}${datadir}/fbvncserver/
-
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/fbvncinput
-}
-
-FILES_${PN} += " /usr/share/fbvncserver/*.jpg"
-
diff --git a/packages/ffmpeg/ffmpeg-0.4.9-pre1/common.patch b/packages/ffmpeg/ffmpeg-0.4.9-pre1/common.patch
deleted file mode 100644
index 5a1ceaa10d..0000000000
--- a/packages/ffmpeg/ffmpeg-0.4.9-pre1/common.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ffmpeg-0.4.9-pre1/libavcodec/common.h.orig 2004-12-24 23:49:50.000000000 +0100
-+++ ffmpeg-0.4.9-pre1/libavcodec/common.h 2004-12-24 23:51:37.000000000 +0100
-@@ -1292,10 +1292,6 @@
- #define time time_is_forbidden_due_to_security_issues
- #define rand rand_is_forbidden_due_to_state_trashing
- #define srand srand_is_forbidden_due_to_state_trashing
--#if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H))
--#define printf please_use_av_log
--#define fprintf please_use_av_log
--#endif
-
- #define CHECKED_ALLOCZ(p, size)\
- {\
diff --git a/packages/ffmpeg/ffmpeg-0.4.9-pre1/gcc4.patch b/packages/ffmpeg/ffmpeg-0.4.9-pre1/gcc4.patch
new file mode 100644
index 0000000000..e04fdab3e5
--- /dev/null
+++ b/packages/ffmpeg/ffmpeg-0.4.9-pre1/gcc4.patch
@@ -0,0 +1,146 @@
+--- ffmpeg-0.4.9-pre1/libavcodec/common.h.orig 2008-02-23 19:42:48.000000000 -0500
++++ ffmpeg-0.4.9-pre1/libavcodec/common.h 2008-02-23 19:08:09.000000000 -0500
+@@ -64,11 +64,11 @@
+
+ struct AVOption;
+ #ifdef HAVE_MMX
+-extern const struct AVOption avoptions_common[3 + 5];
++extern const struct AVOption *avoptions_common[2 + 5];
+ #else
+-extern const struct AVOption avoptions_common[3];
++extern const struct AVOption *avoptions_common[2];
+ #endif
+-extern const struct AVOption avoptions_workaround_bug[11];
++extern const struct AVOption *avoptions_workaround_bug[10];
+
+ #endif /* HAVE_AV_CONFIG_H */
+
+@@ -1292,10 +1292,6 @@ tend= rdtsc();\
+ #define time time_is_forbidden_due_to_security_issues
+ #define rand rand_is_forbidden_due_to_state_trashing
+ #define srand srand_is_forbidden_due_to_state_trashing
+-#if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H))
+-#define printf please_use_av_log
+-#define fprintf please_use_av_log
+-#endif
+
+ #define CHECKED_ALLOCZ(p, size)\
+ {\
+--- ffmpeg-0.4.9-pre1/libavcodec/ac3tab.h.orig 2008-02-23 19:46:06.000000000 -0500
++++ ffmpeg-0.4.9-pre1/libavcodec/ac3tab.h 2008-02-23 19:08:09.000000000 -0500
+@@ -4,10 +4,10 @@
+ */
+
+ /* possible frequencies */
+-static const uint16_t ac3_freqs[3] = { 48000, 44100, 32000 };
++const uint16_t ac3_freqs[3] = { 48000, 44100, 32000 };
+
+ /* possible bitrates */
+-static const uint16_t ac3_bitratetab[19] = {
++const uint16_t ac3_bitratetab[19] = {
+ 32, 40, 48, 56, 64, 80, 96, 112, 128,
+ 160, 192, 224, 256, 320, 384, 448, 512, 576, 640
+ };
+@@ -15,7 +15,7 @@ static const uint16_t ac3_bitratetab[19]
+ /* AC3 MDCT window */
+
+ /* MDCT window */
+-static const int16_t ac3_window[256] = {
++const int16_t ac3_window[256] = {
+ 4, 7, 12, 16, 21, 28, 34, 42,
+ 51, 61, 72, 84, 97, 111, 127, 145,
+ 164, 184, 207, 231, 257, 285, 315, 347,
+@@ -144,27 +144,27 @@ static const uint8_t baptab[64]= {
+ 15, 15, 15, 15,
+ };
+
+-static const uint8_t sdecaytab[4]={
++const uint8_t sdecaytab[4]={
+ 0x0f, 0x11, 0x13, 0x15,
+ };
+
+-static const uint8_t fdecaytab[4]={
++const uint8_t fdecaytab[4]={
+ 0x3f, 0x53, 0x67, 0x7b,
+ };
+
+-static const uint16_t sgaintab[4]= {
++const uint16_t sgaintab[4]= {
+ 0x540, 0x4d8, 0x478, 0x410,
+ };
+
+-static const uint16_t dbkneetab[4]= {
++const uint16_t dbkneetab[4]= {
+ 0x000, 0x700, 0x900, 0xb00,
+ };
+
+-static const uint16_t floortab[8]= {
++const uint16_t floortab[8]= {
+ 0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
+ };
+
+-static const uint16_t fgaintab[8]= {
++const uint16_t fgaintab[8]= {
+ 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
+ };
+
+--- ffmpeg-0.4.9-pre1/libavcodec/dsputil.h.orig 2008-02-23 19:47:34.000000000 -0500
++++ ffmpeg-0.4.9-pre1/libavcodec/dsputil.h 2008-02-23 19:08:09.000000000 -0500
+@@ -558,15 +558,15 @@ static int name16(void /*MpegEncContext*
+ /* XXX: add ISOC specific test to avoid specific BSD testing. */
+ /* better than nothing implementation. */
+ /* btw, rintf() is existing on fbsd too -- alex */
+-static inline long int lrintf(float x)
+-{
+-#ifdef CONFIG_WIN32
+- /* XXX: incorrect, but make it compile */
+- return (int)(x);
+-#else
+- return (int)(rint(x));
+-#endif
+-}
++//static inline long int lrintf(float x)
++//{
++//#ifdef CONFIG_WIN32
++// /* XXX: incorrect, but make it compile */
++// return (int)(x);
++//#else
++// return (int)(rint(x));
++//#endif
++//}
+ #else
+ #ifndef _ISOC9X_SOURCE
+ #define _ISOC9X_SOURCE
+--- ffmpeg-0.4.9-pre1/libavcodec/opts.c.orig 2008-02-23 19:49:11.000000000 -0500
++++ ffmpeg-0.4.9-pre1/libavcodec/opts.c 2008-02-23 19:08:09.000000000 -0500
+@@ -12,7 +12,7 @@
+
+ #include "avcodec.h"
+
+-const AVOption avoptions_common[] = {
++const AVOption *avoptions_common[] = {
+ AVOPTION_CODEC_FLAG("bit_exact", "use only bit-exact stuff", flags, CODEC_FLAG_BITEXACT, 0),
+ AVOPTION_CODEC_FLAG("mm_force", "force mm flags", dsp_mask, FF_MM_FORCE, 0),
+ #ifdef HAVE_MMX
+@@ -22,10 +22,10 @@ const AVOption avoptions_common[] = {
+ AVOPTION_CODEC_FLAG("mm_sse", "mask SSE feature", dsp_mask, FF_MM_SSE, 0),
+ AVOPTION_CODEC_FLAG("mm_sse2", "mask SSE2 feature", dsp_mask, FF_MM_SSE2, 0),
+ #endif
+- AVOPTION_END()
++// AVOPTION_END()
+ };
+
+-const AVOption avoptions_workaround_bug[] = {
++const AVOption *avoptions_workaround_bug[] = {
+ AVOPTION_CODEC_FLAG("bug_autodetect", "workaround bug autodetection", workaround_bugs, FF_BUG_AUTODETECT, 1),
+ AVOPTION_CODEC_FLAG("bug_old_msmpeg4", "workaround old msmpeg4 bug", workaround_bugs, FF_BUG_OLD_MSMPEG4, 0),
+ AVOPTION_CODEC_FLAG("bug_xvid_ilace", "workaround XviD interlace bug", workaround_bugs, FF_BUG_XVID_ILACE, 0),
+@@ -36,7 +36,7 @@ const AVOption avoptions_workaround_bug[
+ AVOPTION_CODEC_FLAG("bug_std_qpel", "workaround std qpel bug", workaround_bugs, FF_BUG_STD_QPEL, 0),
+ AVOPTION_CODEC_FLAG("bug_qpel_chroma2", "workaround qpel chroma2 bug", workaround_bugs, FF_BUG_QPEL_CHROMA2, 0),
+ AVOPTION_CODEC_FLAG("bug_direct_blocksize", "workaround direct blocksize bug", workaround_bugs, FF_BUG_DIRECT_BLOCKSIZE, 0),
+- AVOPTION_END()
++// AVOPTION_END()
+ };
+
+ /* avoid compatibility problems by redefining it */
diff --git a/packages/ffmpeg/ffmpeg-0.4.9-pre1/soname.patch b/packages/ffmpeg/ffmpeg-0.4.9-pre1/soname.patch
index 48de6f01bf..80bf3937e4 100644
--- a/packages/ffmpeg/ffmpeg-0.4.9-pre1/soname.patch
+++ b/packages/ffmpeg/ffmpeg-0.4.9-pre1/soname.patch
@@ -1,6 +1,6 @@
---- ffmpeg-0.4.9-pre1/libavcodec/Makefile.orig 2004-08-25 22:36:39.000000000 +0200
-+++ ffmpeg-0.4.9-pre1/libavcodec/Makefile 2004-08-25 22:37:22.000000000 +0200
-@@ -7,7 +7,7 @@
+--- ffmpeg-0.4.9-pre1/libavcodec/Makefile.orig 2008-02-23 19:34:18.000000000 -0500
++++ ffmpeg-0.4.9-pre1/libavcodec/Makefile 2008-02-23 19:24:55.000000000 -0500
+@@ -7,7 +7,7 @@ include ../config.mak
VPATH=$(SRC_PATH)/libavcodec
# NOTE: -I.. is needed to include config.h
@@ -9,7 +9,19 @@
OBJS= common.o utils.o mem.o allcodecs.o \
mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o\
-@@ -197,7 +197,7 @@
+@@ -89,9 +89,10 @@ endif
+
+ ifeq ($(CONFIG_PP),yes)
+ ifeq ($(SHARED_PP),yes)
+-EXTRALIBS += -lpostproc
++LIBS += -lpostproc
+ else
+ # LIBS += libpostproc/libpostproc.a ... should be fixed
++LIBS += libpostproc/libpostproc.a
+ OBJS += libpostproc/postprocess.o
+ endif
+ endif
+@@ -197,7 +198,7 @@ ifeq ($(CONFIG_WIN32),yes)
$(CC) $(SHFLAGS) -Wl,--output-def,$(@:.dll=.def) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS)
-lib /machine:i386 /def:$(@:.dll=.def)
else
@@ -18,7 +30,7 @@
endif
dsputil.o: dsputil.c dsputil.h
-@@ -269,8 +269,9 @@
+@@ -269,8 +270,9 @@ ifeq ($(CONFIG_WIN32),yes)
install -s -m 755 $(SLIB) "$(prefix)"
else
install -d $(prefix)/lib
@@ -30,10 +42,9 @@
ldconfig || true
endif
else
-
---- ffmpeg-0.4.9-pre1/libavformat/Makefile.orig 2004-08-26 13:45:12.000000000 +0200
-+++ ffmpeg-0.4.9-pre1/libavformat/Makefile 2004-08-26 13:46:00.000000000 +0200
-@@ -6,7 +6,7 @@
+--- ffmpeg-0.4.9-pre1/libavformat/Makefile.orig 2008-02-23 19:37:40.000000000 -0500
++++ ffmpeg-0.4.9-pre1/libavformat/Makefile 2008-02-23 19:06:56.000000000 -0500
+@@ -6,7 +6,7 @@ include ../config.mak
VPATH=$(SRC_PATH)/libavformat
@@ -42,7 +53,7 @@
OBJS= utils.o cutils.o os_support.o allformats.o
PPOBJS=
-@@ -54,6 +54,7 @@
+@@ -54,6 +54,7 @@ endif
ifeq ($(CONFIG_AUDIO_BEOS),yes)
PPOBJS+= beosaudio.o
EXTRALIBS+=-lbe -lmedia
@@ -50,7 +61,7 @@
# this should be the default !
EXTRALIBS+=-lavcodec -L../libavcodec
endif
-@@ -93,7 +94,7 @@
+@@ -93,7 +94,7 @@ ifeq ($(CONFIG_WIN32),yes)
$(CC) $(SHFLAGS) -Wl,--output-def,$(@:.dll=.def) -o $@ $(OBJS) $(PPOBJS) $(EXTRALIBS) $(VPATH)/../libavcodec/avcodec.dll
-lib /machine:i386 /def:$(@:.dll=.def)
else
@@ -59,7 +70,7 @@
endif
depend: $(SRCS)
-@@ -105,8 +106,9 @@
+@@ -105,8 +106,9 @@ ifeq ($(CONFIG_WIN32),yes)
install -s -m 755 $(SLIB) "$(prefix)"
else
install -d $(prefix)/lib
@@ -71,4 +82,3 @@
ldconfig || true
endif
else
-
diff --git a/packages/ffmpeg/ffmpeg.inc b/packages/ffmpeg/ffmpeg.inc
new file mode 100644
index 0000000000..aab2c62fa9
--- /dev/null
+++ b/packages/ffmpeg/ffmpeg.inc
@@ -0,0 +1,35 @@
+DESCRIPTION = "FFmpeg is a complete solution to record, convert and stream audio and video"
+HOMEPAGE = "http://ffmpeg.mplayerhq.hu/"
+AUTHOR = "Fabrice Bellard ffmpeg-devel@mplayerhq.hu"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+
+DEPENDS = "zlib libogg libvorbis faac faad2 liba52 lame"
+RSUGGESTS = "mplayer"
+
+inherit autotools pkgconfig
+
+LEAD_SONAME = "libavcodec.so"
+
+EXTRA_OECONF = "\
+ \
+ --enable-pp \
+ --enable-shared \
+ --enable-pthreads \
+ --enable-gpl \
+ \
+ --cross-prefix=${TARGET_PREFIX} \
+ --disable-debug \
+ --disable-ffserver \
+ --disable-ffplay \
+ \
+"
+
+PACKAGES += "${PN}-vhook-dbg ${PN}-vhook"
+
+FILES_${PN} = "${bindir}"
+FILES_${PN}-dev = "${includedir}/${PN}"
+
+FILES_${PN}-vhook = "${libdir}/vhook"
+FILES_${PN}-vhook-dbg += "${libdir}/vhook/.debug"
diff --git a/packages/ffmpeg/ffmpeg/common.patch b/packages/ffmpeg/ffmpeg/common.patch
deleted file mode 100644
index 233a454a48..0000000000
--- a/packages/ffmpeg/ffmpeg/common.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ffmpeg/libavcodec/common.h.orig 2005-02-10 15:10:34.000000000 +0100
-+++ ffmpeg/libavcodec/common.h 2005-02-10 15:11:28.000000000 +0100
-@@ -501,10 +501,6 @@
- #define srand srand_is_forbidden_due_to_state_trashing
- #define sprintf sprintf_is_forbidden_due_to_security_issues_use_snprintf
- #define strcat strcat_is_forbidden_due_to_security_issues_use_pstrcat
--#if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H))
--#define printf please_use_av_log
--#define fprintf please_use_av_log
--#endif
-
- #define CHECKED_ALLOCZ(p, size)\
- {\
diff --git a/packages/ffmpeg/ffmpeg/configure.patch b/packages/ffmpeg/ffmpeg/configure.patch
deleted file mode 100644
index ae13b861b0..0000000000
--- a/packages/ffmpeg/ffmpeg/configure.patch
+++ /dev/null
@@ -1,87 +0,0 @@
---- ./configure~configure.patch 2004-07-06 03:36:16.000000000 +0930
-+++ ./configure 2004-09-27 00:07:23.000000000 +0930
-@@ -88,7 +88,7 @@
- mandir=""
- bindir=""
- cross_prefix=""
--cc="gcc"
-+cc="$CC"
- ar="ar"
- ranlib="ranlib"
- make="make"
-@@ -104,7 +104,7 @@
- cpu="x86"
- ;;
- # armv4l is a subset of armv5tel
-- armv4l|armv5tel)
-+ armv4l|armv5tel|arm|xscale)
- cpu="armv4l"
- ;;
- alpha)
-@@ -434,6 +434,37 @@
- esac
- done
-
-+case "$cpu" in
-+ i386|i486|i586|i686|i86pc|BePC)
-+ cpu="x86"
-+ ;;
-+ # armv4l is a subset of armv5tel
-+ armv4l|armv5tel|arm|xscale)
-+ cpu="armv4l"
-+ ;;
-+ alpha)
-+ cpu="alpha"
-+ ;;
-+ "Power Macintosh"|ppc)
-+ cpu="powerpc"
-+ ;;
-+ mips)
-+ cpu="mips"
-+ ;;
-+ sun4u|sparc64)
-+ cpu="sparc64"
-+ ;;
-+ sparc)
-+ cpu="sparc"
-+ ;;
-+ sh4)
-+ cpu="sh4"
-+ ;;
-+ *)
-+ cpu="unknown"
-+ ;;
-+esac
-+
- if test "$gpl" != "yes"; then
- if test "$pp" != "no" -o "$shared_pp" != "no"; then
- echo "The Postprocessing code is under GPL and --enable-gpl is not specified"
-@@ -662,7 +693,6 @@
- bindir="$prefix"
- fi
-
--cc="${cross_prefix}${cc}"
- ar="${cross_prefix}${ar}"
- ranlib="${cross_prefix}${ranlib}"
- strip="${cross_prefix}${strip}"
-@@ -753,21 +783,6 @@
- fi
-
- if test "$zlib" = "yes"; then
--# check for zlib - mmu_man
--cat > $TMPC << EOF
--#include <zlib.h>
--int main ( void ) {
--if (zlibVersion() != ZLIB_VERSION)
-- puts("zlib version differs !!!");
-- return 1;
--return 0;
--}
--EOF
--$cc $CFLAGS -o $TMPE $TMPC -lz 2> /dev/null || zlib="no"
--# $TMPE 2> /dev/null > /dev/null || zlib="no"
--# XXX: more tests needed - runtime test
--fi
--if test "$zlib" = "yes"; then
- extralibs="$extralibs -lz"
- fi
diff --git a/packages/ffmpeg/ffmpeg/soname.patch b/packages/ffmpeg/ffmpeg/soname.patch
deleted file mode 100644
index 6d01f922af..0000000000
--- a/packages/ffmpeg/ffmpeg/soname.patch
+++ /dev/null
@@ -1,65 +0,0 @@
---- ffmpeg/libavcodec/Makefile.orig 2005-02-10 18:11:57.000000000 +0100
-+++ ffmpeg/libavcodec/Makefile 2005-02-10 18:15:36.000000000 +0100
-@@ -7,7 +7,7 @@
- VPATH=$(SRC_PATH)/libavcodec
-
- # NOTE: -I.. is needed to include config.h
--CFLAGS=$(OPTFLAGS) -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
-+CFLAGS=$(OPTFLAGS) -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -fPIC -DPIC
-
- OBJS= bitstream.o utils.o mem.o allcodecs.o \
- mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o\
-@@ -222,7 +222,7 @@
- $(CC) $(SHFLAGS) -Wl,--output-def,$(@:.dll=.def) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS)
- -lib /machine:i386 /def:$(@:.dll=.def)
- else
-- $(CC) $(SHFLAGS) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS) $(LDFLAGS)
-+ $(CC) $(SHFLAGS) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS) $(LDFLAGS) -Wl,-soname -Wl,libavcodec.so.0
- endif
-
- dsputil.o: dsputil.c dsputil.h
-@@ -294,8 +294,9 @@
- install $(INSTALLSTRIP) -m 755 $(SLIB) "$(prefix)"
- else
- install -d $(prefix)/lib
-- install $(INSTALLSTRIP) -m 755 $(SLIB) $(prefix)/lib/libavcodec-$(VERSION).so
-- ln -sf libavcodec-$(VERSION).so $(prefix)/lib/libavcodec.so
-+ install -m 755 $(SLIB) $(prefix)/lib/libavcodec.so.0.4.9
-+ ln -sf libavcodec.so.0.4.9 $(prefix)/lib/libavcodec.so.0
-+ ln -sf libavcodec.so.0.4.9 $(prefix)/lib/libavcodec.so
- ldconfig || true
- endif
- ifeq ($(CONFIG_PP),yes)
-
---- ffmpeg/libavformat/Makefile.orig 2005-02-10 18:15:50.000000000 +0100
-+++ ffmpeg/libavformat/Makefile 2005-02-10 18:18:23.000000000 +0100
-@@ -6,7 +6,7 @@
-
- VPATH=$(SRC_PATH)/libavformat
-
--CFLAGS=$(OPTFLAGS) -I.. -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
-+CFLAGS=$(OPTFLAGS) -I.. -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -fPIC -DPIC
-
- OBJS= utils.o cutils.o os_support.o allformats.o
- PPOBJS=
-@@ -104,7 +104,7 @@
- $(CC) $(SHFLAGS) -Wl,--output-def,$(@:.dll=.def) -o $@ $(OBJS) $(PPOBJS) $(EXTRALIBS) $(VPATH)/../libavcodec/avcodec.dll
- -lib /machine:i386 /def:$(@:.dll=.def)
- else
-- $(CC) $(SHFLAGS) -o $@ $(OBJS) $(PPOBJS) $(EXTRALIBS)
-+ $(CC) $(SHFLAGS) -o $@ $(OBJS) $(PPOBJS) $(EXTRALIBS) -Wl,-soname -Wl,libavformat.so.0
- endif
-
- depend: $(SRCS)
-@@ -116,8 +116,9 @@
- install $(INSTALLSTRIP) -m 755 $(SLIB) "$(prefix)"
- else
- install -d $(prefix)/lib
-- install $(INSTALLSTRIP) -m 755 $(SLIB) $(prefix)/lib/libavformat-$(VERSION).so
-- ln -sf libavformat-$(VERSION).so $(prefix)/lib/libavformat.so
-+ install -m 755 $(SLIB) $(prefix)/lib/libavformat.so.0.4.9
-+ ln -sf libavformat.so.0.4.9 $(prefix)/lib/libavformat.so.0
-+ ln -sf libavformat.so.0.4.9 $(prefix)/lib/libavformat.so
- ldconfig || true
- endif
- else
diff --git a/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb b/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb
index 12a73cceb6..6df6d89ca0 100644
--- a/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb
+++ b/packages/ffmpeg/ffmpeg_0.4.9-pre1.bb
@@ -1,85 +1,60 @@
+require ffmpeg.inc
-DESCRIPTION = "ffmpeg"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "zlib libvorbis faad2 faac liba52 lame mplayer"
-LICENSE = "LGPL"
-PR = "r1"
-
-
-inherit autotools
+PR = "r3"
SRC_URI = "${SOURCEFORGE_MIRROR}/ffmpeg/ffmpeg-${PV}.tar.gz \
- file://configure.patch;patch=0 \
- file://common.patch;patch=1 \
- file://soname.patch;patch=1 \
- "
-
-TARGET_LDFLAGS_append = " -lm -la52 "
-
-EXTRA_OECONF=" \
- --enable-mp3lame \
- --enable-vorbis \
- --enable-faad \
- --enable-faadbin \
- --enable-faac \
- --enable-a52 \
- --enable-a52bin \
- --enable-pp \
- --enable-shared-pp \
- --enable-shared \
- --disable-amr_nb \
- --enable-amr_nb-fixed \
- --disable-amr_wb \
- --enable-pthreads \
- --enable-gpl \
- --enable-zlib \
- \
- --disable-audio-beos \
- --disable-v4l \
- --disable-dv1394 \
- --disable-debug \
- --disable-ffserver \
- --disable-ffplay \
- \
- --cross-prefix=${TARGET_PREFIX} \
- --extra-cflags=\$(TARGET_CFLAGS) \
- --extra-ldflags=\$(TARGET_LDFLAGS) \
- --extra-libs=\$(TARGET_LDFLAGS) \
- \
- --cpu=${PACKAGE_ARCH} \
- --prefix=${D}${prefix} \
- --mandir=${D}${prefix}/share/man \
+ file://configure.patch;patch=0 \
+ file://gcc4.patch;patch=1 \
+ file://soname.patch;patch=1 \
+ "
+
+EXTRA_OECONF += " \
+ \
+ --prefix=${D}${prefix} \
+ --mandir=${D}${prefix}/share/man \
+ \
+ --enable-mp3lame \
+ --enable-vorbis \
+ --enable-faad \
+ --enable-faadbin \
+ --enable-faac \
+ --enable-a52 \
+ --enable-a52bin \
+ --enable-shared-pp \
+ --disable-amr_nb \
+ --enable-amr_nb-fixed \
+ --disable-amr_wb \
+ \
+ --cpu=${TARGET_ARCH} \
+ --tune=${PACKAGE_ARCH} \
+ --extra-ldflags="-la52" \
+ \
+ --disable-audio-beos \
+ --disable-v4l \
+ --disable-dv1394 \
"
-PACKAGES += "libavcodec libavcodec-dev libavformat libavformat-dev"
-FILES_${PN} = "${bindir}"
-FILES_${PN}-dev = "${includedir}"
-FILES_libavcodec = "${libdir}/libavcodec*.so.*"
-FILES_libavcodec-dev = "${libdir}/libavcodec*.so ${libdir}/libavcodec*.la ${libdir}/libavcodec*.a"
-FILES_libavformat = "${libdir}/libavformat*.so.*"
-FILES_libavformat-dev = "${libdir}/libavformat*.so ${libdir}/libavformat*.la ${libdir}/libavformat*.a"
+do_stage() {
+ oe_libinstall -a -so -C libavcodec libavcodec ${STAGING_LIBDIR}
+ oe_libinstall -a -so -C libavformat libavformat ${STAGING_LIBDIR}
-# We do this because the install program is called with -s which causes it to call "strip" and it then mangles cross compiled stuff..
-PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:"
+ install -d ${STAGING_INCDIR}/ffmpeg
-# --enable-shared-pp \
+ install -m 0644 ${S}/libavcodec/avcodec.h ${STAGING_INCDIR}/ffmpeg/avcodec.h
+ install -m 0644 ${S}/libavcodec/common.h ${STAGING_INCDIR}/ffmpeg/common.h
+ install -m 0644 ${S}/libavcodec/rational.h ${STAGING_INCDIR}/ffmpeg/rational.h
-do_configure_prepend() {
- export CC="${CC}"
+ install -m 0644 ${S}/libavformat/avformat.h ${STAGING_INCDIR}/ffmpeg/avformat.h
+ install -m 0644 ${S}/libavformat/avio.h ${STAGING_INCDIR}/ffmpeg/avio.h
+ install -m 0644 ${S}/libavformat/rtp.h ${STAGING_INCDIR}/ffmpeg/rtp.h
+ install -m 0644 ${S}/libavformat/rtsp.h ${STAGING_INCDIR}/ffmpeg/rtsp.h
+ install -m 0644 ${S}/libavformat/rtspcodes.h ${STAGING_INCDIR}/ffmpeg/rtspcodes.h
}
-do_stage() {
- oe_libinstall -a -so -C libavcodec libavcodec ${STAGING_LIBDIR}
- oe_libinstall -a -so -C libavformat libavformat ${STAGING_LIBDIR}
+PACKAGES += "libavcodec libavcodec-dev \
+ libavformat libavformat-dev"
- install -d ${STAGING_INCDIR}/ffmpeg
- install -m 0644 ${S}/libavcodec/avcodec.h ${STAGING_INCDIR}/ffmpeg/avcodec.h
- install -m 0644 ${S}/libavcodec/common.h ${STAGING_INCDIR}/ffmpeg/common.h
- install -m 0644 ${S}/libavcodec/rational.h ${STAGING_INCDIR}/ffmpeg/rational.h
- install -m 0644 ${S}/libavformat/avformat.h ${STAGING_INCDIR}/ffmpeg/avformat.h
- install -m 0644 ${S}/libavformat/avio.h ${STAGING_INCDIR}/ffmpeg/avio.h
- install -m 0644 ${S}/libavformat/rtp.h ${STAGING_INCDIR}/ffmpeg/rtp.h
- install -m 0644 ${S}/libavformat/rtsp.h ${STAGING_INCDIR}/ffmpeg/rtsp.h
- install -m 0644 ${S}/libavformat/rtspcodes.h ${STAGING_INCDIR}/ffmpeg/rtspcodes.h
-}
+FILES_libavcodec = "${libdir}/libavcodec*.so.*"
+FILES_libavcodec-dev = "${libdir}/libavcodec*.so"
+FILES_libavformat = "${libdir}/libavformat*.so.*"
+FILES_libavformat-dev = "${libdir}/libavformat*.so"
diff --git a/packages/ffmpeg/ffmpeg_svn.bb b/packages/ffmpeg/ffmpeg_svn.bb
index 5276a8fef6..83c40f8b3f 100644
--- a/packages/ffmpeg/ffmpeg_svn.bb
+++ b/packages/ffmpeg/ffmpeg_svn.bb
@@ -1,10 +1,9 @@
-DESCRIPTION = "ffmpeg"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPL"
-DEPENDS = "libogg zlib libvorbis faac liba52 lame"
-PV = "0.4.9+svnr${SRCREV}"
-PR = "r1"
+require ffmpeg.inc
+
+DEPENDS += "libgsm"
+
+PV = "0.4.9+svn${SRCDATE}"
+PR = "r3"
DEFAULT_PREFERENCE = "-1"
@@ -12,130 +11,95 @@ SRC_URI = "svn://svn.mplayerhq.hu/ffmpeg/;module=trunk"
S = "${WORKDIR}/trunk"
-inherit autotools pkgconfig
-
-TARGET_LDFLAGS_append = " -lm -la52 "
-
-EXTRA_OECONF = " \
- --enable-libmp3lame \
- --enable-libvorbis \
- --disable-libfaad \
- --enable-liba52 \
- --enable-liba52bin \
- --enable-libogg \
- --enable-pp \
- --enable-shared \
- --enable-pthreads \
- --enable-gpl \
+EXTRA_OECONF += " \
+ --prefix=/usr \
\
- --disable-audio-beos \
- --disable-v4l \
- --disable-dv1394 \
- --disable-debug \
- --disable-ffserver \
- --disable-ffplay \
- --disable-strip \
+ --enable-nonfree \
+ --enable-swscaler \
+ --enable-x11grab \
\
- --cross-prefix=${TARGET_PREFIX} \
+ --enable-liba52 \
+ --enable-liba52bin \
+ --enable-libfaac \
+ --enable-libfaad \
+ --enable-libfaadbin \
+ --enable-libgsm \
+ --enable-libmp3lame \
+ --enable-libvorbis \
\
- --cpu=${PACKAGE_ARCH} \
- --arch=${PACKAGE_ARCH} \
+ --arch=${TARGET_ARCH} \
+ --cross-compile \
+ --cc="gcc ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" \
+ --extra-cflags="${TARGET_CFLAGS}" \
+ --extra-ldflags="${TARGET_LDFLAGS}" \
+ --enable-hardcoded-tables \
"
+do_configure() {
+ ${S}/configure ${EXTRA_OECONF}
+}
-# We do this because the install program is called with -s
-# which causes it to call "strip" and it then mangles cross compiled stuff..
-PATH_prepend="${CROSS_DIR}/${TARGET_SYS}/bin:"
+do_stage() {
+ for lib in libavcodec libavdevice libavformat \
+ libavutil libpostproc libswscale
+ do
+ oe_libinstall -a -so -C $lib $lib ${STAGING_LIBDIR}
+ done
-do_configure_prepend() {
- export CC="${CC}"
-}
+ install -d ${STAGING_INCDIR}/ffmpeg
-oe_runconf () {
- # make ffmpeg detect arm targets that don't end in 'l'
- sed -i -e s:'armv\[4567\]\*l':'armv\[4567\]\*':g ${S}/configure
- if [ -x ${S}/configure ] ; then
- cfgcmd="${S}/configure \
- --prefix=${prefix} \
- --mandir=${mandir} \
- ${EXTRA_OECONF} \
- $@"
- oenote "Running $cfgcmd..."
- $cfgcmd || oefatal "oe_runconf failed"
- else
- oefatal "no configure script found"
- fi
+ install -m 0644 ${S}/libavcodec/avcodec.h ${STAGING_INCDIR}/ffmpeg/avcodec.h
+ install -m 0644 ${S}/libavcodec/opt.h ${STAGING_INCDIR}/ffmpeg/opt.h
-}
+ install -m 0644 ${S}/libavdevice/avdevice.h ${STAGING_INCDIR}/ffmpeg/avdevice.h
+
+ for h in avformat.h avio.h rtp.h rtsp.h rtspcodes.h
+ do
+ install -m 0644 ${S}/libavformat/$h ${STAGING_INCDIR}/ffmpeg/$h
+ done
-do_stage() {
- oe_libinstall -a -so -C libavcodec libavcodec ${STAGING_LIBDIR}
- oe_libinstall -a -so -C libavformat libavformat ${STAGING_LIBDIR}
- oe_libinstall -a -so -C libavutil libavutil ${STAGING_LIBDIR}
- oe_libinstall -a -so -C libpostproc libpostproc ${STAGING_LIBDIR}
+ for h in adler32.h avstring.h avutil.h base64.h bswap.h \
+ common.h crc.h fifo.h integer.h intfloat_readwrite.h \
+ log.h lzo.h mathematics.h md5.h mem.h random.h \
+ rational.h sha1.h
+ do
+ install -m 0644 ${S}/libavutil/$h ${STAGING_INCDIR}/ffmpeg/$h
+ done
- install -d ${STAGING_INCDIR}/ffmpeg
- install -m 0644 ${S}/libavcodec/avcodec.h \
- ${STAGING_INCDIR}/ffmpeg/avcodec.h
-
- install -m 0644 ${S}/libavformat/avformat.h \
- ${STAGING_INCDIR}/ffmpeg/avformat.h
- install -m 0644 ${S}/libavformat/avio.h \
- ${STAGING_INCDIR}/ffmpeg/avio.h
- install -m 0644 ${S}/libavformat/rtp.h \
- ${STAGING_INCDIR}/ffmpeg/rtp.h
- install -m 0644 ${S}/libavformat/rtsp.h \
- ${STAGING_INCDIR}/ffmpeg/rtsp.h
- install -m 0644 ${S}/libavformat/rtspcodes.h \
- ${STAGING_INCDIR}/ffmpeg/rtspcodes.h
-
- install -m 0644 ${S}/libavutil/avutil.h \
- ${STAGING_INCDIR}/ffmpeg/avutil.h
- install -m 0644 ${S}/libavutil/bswap.h \
- ${STAGING_INCDIR}/ffmpeg/bswap.h
- install -m 0644 ${S}/libavutil/common.h \
- ${STAGING_INCDIR}/ffmpeg/common.h
- install -m 0644 ${S}/libavutil/crc.h \
- ${STAGING_INCDIR}/ffmpeg/crc.h
- install -m 0644 ${S}/libavutil/integer.h \
- ${STAGING_INCDIR}/ffmpeg/integer.h
- install -m 0644 ${S}/libavutil/intfloat_readwrite.h \
- ${STAGING_INCDIR}/ffmpeg/intfloat_readwrite.h
- install -m 0644 ${S}/libavutil/mathematics.h \
- ${STAGING_INCDIR}/ffmpeg/mathematics.h
- install -m 0644 ${S}/libavutil/rational.h \
- ${STAGING_INCDIR}/ffmpeg/rational.h
- install -m 0644 ${S}/libavutil/mem.h \
- ${STAGING_INCDIR}/ffmpeg/mem.h
- install -m 0644 ${S}/libavutil/log.h \
- ${STAGING_INCDIR}/ffmpeg/log.h
+ install -m 0644 ${S}/libswscale/swscale.h ${STAGING_INCDIR}/ffmpeg/swscale.h
+ install -m 0644 ${S}/libswscale/rgb2rgb.h ${STAGING_INCDIR}/ffmpeg/rgb2rgb.h
install -d ${STAGING_INCDIR}/libpostproc
- install -m 0644 ${S}/libpostproc/postprocess.h \
- ${STAGING_INCDIR}/libpostproc/postprocess.h
+ install -m 0644 ${S}/libpostproc/postprocess.h ${STAGING_INCDIR}/libpostproc/postprocess.h
}
-PACKAGES += "libavcodec libavcodec-dev \
- libavformat libavformat-dev \
- libavutil libavutil-dev \
- libpostproc libpostproc-dev"
-
-FILES_${PN} = "${bindir}"
-FILES_${PN}-dev = "${includedir}"
-FILES_${PN}-doc = "${mandir}"
+PACKAGES += "libavcodec libavcodec-dev libavcodec-dbg \
+ libavdevice libavdevice-dev libavdevice-dbg \
+ libavformat libavformat-dev libavformat-dbg \
+ libavutil libavutil-dev libavutil-dbg \
+ libpostproc libpostproc-dev libpostproc-dbg \
+ libswscale libswscale-dev libswscale-dbg"
FILES_libavcodec = "${libdir}/libavcodec*.so.*"
-FILES_libavcodec-dev = "${libdir}/libavcodec*.so \
- ${libdir}/libavcodec*.la ${libdir}/libavcodec*.a"
+FILES_libavcodec-dev = "${libdir}/libavcodec*.so ${libdir}/pkgconfig/libavcodec.pc ${libdir}/libavcodec*.a"
+FILES_libavcodec-dbg += "${libdir}/.debug/libavcodec*"
+
+FILES_libavdevice = "${libdir}/libavdevice*.so.*"
+FILES_libavdevice-dev = "${libdir}/libavdevice*.so ${libdir}/pkgconfig/libavdevice.pc ${libdir}/libavdevice*.a"
+FILES_libavdevice-dbg += "${libdir}/.debug/libavdevice*"
FILES_libavformat = "${libdir}/libavformat*.so.*"
-FILES_libavformat-dev = "${libdir}/libavformat*.so \
- ${libdir}/libavformat*.la ${libdir}/libavformat*.a"
+FILES_libavformat-dev = "${libdir}/libavformat*.so ${libdir}/pkgconfig/libavformat.pc ${libdir}/libavformat*.a"
+FILES_libavformat-dbg += "${libdir}/.debug/libavformat*"
FILES_libavutil = "${libdir}/libavutil*.so.*"
-FILES_libavutil-dev = "${libdir}/libavutil*.so \
- ${libdir}/libavutil*.la ${libdir}/libavutil*.a"
+FILES_libavutil-dev = "${libdir}/libavutil*.so ${libdir}/pkgconfig/libavutil.pc ${libdir}/libavutil*.a"
+FILES_libavutil-dbg += "${libdir}/.debug/libavutil*"
FILES_libpostproc = "${libdir}/libpostproc*.so.*"
-FILES_libpostproc-dev = "${libdir}/libpostproc*.so \
- ${libdir}/libpostproc*.la ${libdir}/libpostproc*.a"
+FILES_libpostproc-dev = "${libdir}/libpostproc*.so ${libdir}/pkgconfig/libpostproc.pc ${libdir}/libpostproc*.a ${includedir}/postproc"
+FILES_libpostproc-dbg += "${libdir}/.debug/libpostproc*"
+
+FILES_libswscale = "${libdir}/libswscale*.so.*"
+FILES_libswscale-dev = "${libdir}/libswscale*.so ${libdir}/pkgconfig/libswscale.pc ${libdir}/libswscale*.a"
+FILES_libswscale-dbg += "${libdir}/.debug/libswscale*"
diff --git a/packages/findutils/findutils_4.2.29.bb b/packages/findutils/findutils_4.2.29.bb
index 2f40d03bd4..fcb074c185 100644
--- a/packages/findutils/findutils_4.2.29.bb
+++ b/packages/findutils/findutils_4.2.29.bb
@@ -1,5 +1,7 @@
require findutils.inc
+EXTRA_OECONF += " ac_cv_path_SORT=/usr/bin/sort "
+
do_install_append () {
mv ${D}${bindir}/find ${D}${bindir}/find.${PN}
mv ${D}${bindir}/xargs ${D}${bindir}/xargs.${PN}
diff --git a/packages/fltk/efltk_2.0.7.bb b/packages/fltk/efltk_2.0.7.bb
new file mode 100644
index 0000000000..57737e1c57
--- /dev/null
+++ b/packages/fltk/efltk_2.0.7.bb
@@ -0,0 +1,67 @@
+DESCRIPTION = "EFLTK is a cross-platform C++ GUI toolkit"
+HOMEPAGE = "http://equinox-project.org/page/documentation"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "zlib jpeg libpng libxext libxft"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/ede/efltk-${PV}.tar.gz"
+S = "${WORKDIR}/efltk"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "\
+ --enable-shared \
+ --enable-xdbe \
+ --enable-xft \
+ --enable-gl \
+ --disable-mysql \
+ --disable-unixODBC \
+ --x-includes=${STAGING_INCDIR}/freetype2 \
+ --x-libraries=${STAGING_LIBDIR} \
+"
+
+# yes, this is nasty, but configure is so broken there is no other way
+do_configure() {
+ gnu-configize
+ oe_runconf
+ mv -f config.h save
+ autotools_do_configure
+ mv -f save config.h
+}
+
+# more nasties
+do_configure_append() {
+ sed -i s,/usr/include,${STAGING_INCDIR}, makeinclude
+ sed -i s,/usr/include/freetype2,, makeinclude
+ sed -i s,/usr/bin/strip,echo, makeinclude
+ sed -i s,CONFIGDIR,'"${datadir}/ede/"', src/core/Fl_Config.cpp
+}
+
+do_stage() {
+ oe_runmake install prefix="${STAGING_DIR}" \
+ bindir="${STAGING_BINDIR}" \
+ includedir="${STAGING_INCDIR}" \
+ libdir="${STAGING_LIBDIR}" \
+ datadir="${STAGING_DATADIR}"
+}
+
+do_install () {
+ install -d ${D}${libdir}
+ oe_runmake install prefix="${D}${prefix}" \
+ bindir="${D}${bindir}" \
+ libdir="${D}${libdir}" \
+ includedir="${D}${includedir}" \
+ datadir="${STAGING_DATADIR}"
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_${PN}', 'libefltk${PV}', d)
+}
+
+LEAD_SONAME = "libefltk.so"
+
+FILES_${PN} += "${libdir}/fltk/*.theme"
+FILES_${PN}-dbg += "${libdir}/fltk/.debug"
diff --git a/packages/busybox/busybox-1.2.0/angstrom/.mtn2git_empty b/packages/font-update-common/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.2.0/angstrom/.mtn2git_empty
+++ b/packages/font-update-common/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.2.0/mnci/.mtn2git_empty b/packages/font-update-common/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.2.0/mnci/.mtn2git_empty
+++ b/packages/font-update-common/files/.mtn2git_empty
diff --git a/packages/font-update-common/files/update-fonts b/packages/font-update-common/files/update-fonts
new file mode 100644
index 0000000000..19e3157d2f
--- /dev/null
+++ b/packages/font-update-common/files/update-fonts
@@ -0,0 +1,4 @@
+#!/bin/sh
+#Author: Rolf Leggewie
+
+run-parts /etc/update-fonts-common.d/
diff --git a/packages/font-update-common/font-update-common_0.1.bb b/packages/font-update-common/font-update-common_0.1.bb
new file mode 100644
index 0000000000..eae0a8a55f
--- /dev/null
+++ b/packages/font-update-common/font-update-common_0.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Scripts to be called when fonts are installed or removed \
+to make them known to the WM, whether X11 or Opie"
+AUTHOR = "Rolf Leggewie <oe-devel@rolf.leggewie.biz"
+
+SRC_URI = "file://update-fonts"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${sysconfdir}/update-fonts-common.d/
+ install -m 0755 ${WORKDIR}/update-fonts ${D}${bindir}
+}
+
+PACKAGE_ARCH = "all"
diff --git a/packages/fontconfig/files/01fc-cache b/packages/fontconfig/files/01fc-cache
new file mode 100644
index 0000000000..963aaec8ca
--- /dev/null
+++ b/packages/fontconfig/files/01fc-cache
@@ -0,0 +1,4 @@
+#!/bin/sh
+# Author: Rolf Leggewie
+
+fc-cache
diff --git a/packages/fontconfig/fontconfig.inc b/packages/fontconfig/fontconfig.inc
index 2b3dc39c36..252b843340 100644
--- a/packages/fontconfig/fontconfig.inc
+++ b/packages/fontconfig/fontconfig.inc
@@ -9,7 +9,8 @@ RREPLACES_fontconfig-utils = "libfontconfig-utils"
RCONFLICTS_fontconfig-utils = "libfontconfig-utils"
DEBIAN_NOAUTONAME_fontconfig-utils = "1"
-SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz"
+SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz \
+ file://01fc-cache"
S = "${WORKDIR}/fontconfig-${PV}"
@@ -32,6 +33,10 @@ python do_unpack () {
bb.build.exec_func('fontconfig_do_unpack', d)
}
+fontconfig-utils_do_install_prepend() {
+ install -m 0755 ${WORKDIR}/01fc-cache ${D}${sysconfdir}/update-fonts-common.d/
+}
+
PACKAGES =+ "fontconfig-utils-dbg fontconfig-utils "
-FILES_fontconfig-utils-dbg = "${bindir}/*.dbg"
+FILES_fontconfig-utils-dbg += "${bindir}/*.dbg"
FILES_fontconfig-utils = "${bindir}/*"
diff --git a/packages/foonas-init/foonas-init_0.10.bb b/packages/foonas-init/foonas-init_0.10.bb
index c8a1b05232..7c51606e7e 100644
--- a/packages/foonas-init/foonas-init_0.10.bb
+++ b/packages/foonas-init/foonas-init_0.10.bb
@@ -118,5 +118,4 @@ pkg_postrm_foonas-init() {
done
}
-PACKAGES = "${PN}"
FILES_${PN} = "/"
diff --git a/packages/free42/free42-vga_1.4.36.bb b/packages/free42/free42-vga_1.4.36.bb
deleted file mode 100644
index 3f64f99c6a..0000000000
--- a/packages/free42/free42-vga_1.4.36.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "Free42 RPN Calculator"
-SECTION = "openmoko/applications"
-DEPENDS = "gtk+"
-PV = "1.4.36"
-PR = "r1"
-
-SRC_URI = "http://home.planet.nl/~demun000/thomas_projects/free42/free42.tgz \
- http://sense.net/zc/free42/42c_skins.tgz \
- file://free42-bcd-gtk-only.patch;patch=1 \
- file://free42-vga-skin.patch;patch=1 \
- file://free42-dont-declare-sincos.patch;patch=1 \
- file://free42dec.desktop"
-
-S = "${WORKDIR}/free42"
-
-TARGET_CXXFLAGS_append = " -fsigned-char"
-TARGET_CXXFLAGS_append += "-DVERSION=\\"${PV}\\" -DBCD_MATH"
-TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/gtk-2.0"
-TARGET_CXXFLAGS_append += "-I${STAGING_LIBDIR}/gtk-2.0/include"
-TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/cairo"
-TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/glib-2.0"
-TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/pango-1.0"
-TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/atk-1.0"
-
-do_compile() {
- cp -fv ${S}/common/* ${S}/gtk
- cp -fv ${S}/ppcskins/Ehrling42ssv.* ${S}/skins/
- cp ${WORKDIR}/42ct.* ${S}/skins/
- cd ${S}/gtk/
- ${BUILD_CXX} -o skin2cc skin2cc.cc ${BUILD_CXXFLAGS}
- ${BUILD_CXX} -o keymap2cc keymap2cc.cc ${BUILD_CXXFLAGS}
- oe_runmake
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 ${S}/gtk/free42dec ${D}${bindir}/free42dec
- install -d ${D}${datadir}/applications
- install -m 0644 ${WORKDIR}/free42dec.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 ${S}/gtk/icon.xpm ${D}${datadir}/pixmaps/free42.xpm
-}
-
-
diff --git a/packages/free42/free42-vga_1.4.41.bb b/packages/free42/free42-vga_1.4.41.bb
new file mode 100644
index 0000000000..ff5e07feae
--- /dev/null
+++ b/packages/free42/free42-vga_1.4.41.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "Free42 RPN Calculator"
+HOMEPAGE = "http://free42.sf.net"
+SECTION = "openmoko/applications"
+DEPENDS = "gtk+"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/free42/free42.tgz \
+ http://sense.net/zc/free42/42c_skins.tgz \
+ file://free42-bcd-gtk-only.patch;patch=1 \
+ file://free42-vga-skin.patch;patch=1 \
+ file://free42-dont-declare-sincos.patch;patch=1 \
+ file://free42dec.desktop"
+
+S = "${WORKDIR}/free42"
+
+TARGET_CXXFLAGS_append = " -fsigned-char"
+TARGET_CXXFLAGS_append += "-DVERSION=\\"${PV}\\" -DBCD_MATH"
+TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/gtk-2.0"
+TARGET_CXXFLAGS_append += "-I${STAGING_LIBDIR}/gtk-2.0/include"
+TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/cairo"
+TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/glib-2.0"
+TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/pango-1.0"
+TARGET_CXXFLAGS_append += "-I${STAGING_INCDIR}/atk-1.0"
+
+do_compile() {
+ cp -fv ${S}/common/* ${S}/gtk
+ cp -fv ${S}/ppcskins/Ehrling42ssv.* ${S}/skins/
+ cp ${WORKDIR}/42ct.* ${S}/skins/
+ cd ${S}/gtk/
+ ${BUILD_CXX} -o skin2cc skin2cc.cc ${BUILD_CXXFLAGS}
+ ${BUILD_CXX} -o keymap2cc keymap2cc.cc ${BUILD_CXXFLAGS}
+ oe_runmake
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/gtk/free42dec ${D}${bindir}/free42dec
+ install -d ${D}${datadir}/applications
+ install -m 0644 ${WORKDIR}/free42dec.desktop ${D}${datadir}/applications/
+ install -d ${D}${datadir}/pixmaps
+ install -m 0644 ${S}/gtk/icon.xpm ${D}${datadir}/pixmaps/free42.xpm
+}
+
+
diff --git a/packages/freesmartphone/gsm0710muxd_svn.bb b/packages/freesmartphone/gsm0710muxd_svn.bb
index f451f7814c..98b9360c00 100644
--- a/packages/freesmartphone/gsm0710muxd_svn.bb
+++ b/packages/freesmartphone/gsm0710muxd_svn.bb
@@ -1,20 +1,32 @@
-DESCRIPTION = "gsm.07.10 muxer userspace daemon"
+DESCRIPTION = "gsm 07.10 muxer userspace daemon"
+HOMEPAGE = "http://www.freesmartphone.org"
AUTHOR = "M. Dietrich"
SECTION = "console/network"
DEPENDS = "intltool-native dbus"
LICENSE = "GPL"
PV = "0.0+svnr${SRCREV}"
-PR = "r1"
+PR = "r2"
SRC_URI = "svn://projects.linuxtogo.org/svn/smartphones/trunk/software;module=gsm0710muxd"
S = "${WORKDIR}/gsm0710muxd"
-inherit autotools update-rc.d
-
-INITSCRIPT_NAME = "gsm0710muxd"
-INITSCRIPT_PARAMS = "defaults 35"
+inherit autotools
do_install_append() {
- chmod a+rx ${D}${sysconfdir}/init.d/gsm0710muxd
+ # temp hack
+ mv -f ${D}${datadir}/dbus-1/system-services/org.freesmartphone.GSM.MUX.service ${D}${datadir}/dbus-1/system-services/org.mobile.mux.service
+}
+
+pkg_postinst_${PN}() {
+ # can't do this offline
+ if [ "x$D" != "x" ]; then
+ exit 1
+ fi
+ # reload dbus configuration files
+ for i in `pidof dbus-daemon`; do
+ kill -SIGHUP $i
+ done
}
+FILES_${PN} += "${datadir}"
+
diff --git a/packages/ftpd-topfield/ftpd-topfield_0.7.4.bb b/packages/ftpd-topfield/ftpd-topfield_0.7.4.bb
index 75d963f6da..356a6018a2 100755
--- a/packages/ftpd-topfield/ftpd-topfield_0.7.4.bb
+++ b/packages/ftpd-topfield/ftpd-topfield_0.7.4.bb
@@ -17,7 +17,6 @@ INITSCRIPT_NAME = "ftpd-topfield"
INITSCRIPT_PARAMS = "defaults"
# Just the one package at present
-PACKAGES = "${PN}"
inherit autotools
diff --git a/packages/busybox/busybox-1.2.0/nylon/.mtn2git_empty b/packages/fuse/fuse-2.7.2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.2.0/nylon/.mtn2git_empty
+++ b/packages/fuse/fuse-2.7.2/.mtn2git_empty
diff --git a/packages/fuse/fuse-2.7.2/not-run-updaterc.d-on-host.patch b/packages/fuse/fuse-2.7.2/not-run-updaterc.d-on-host.patch
new file mode 100644
index 0000000000..903a8baa9e
--- /dev/null
+++ b/packages/fuse/fuse-2.7.2/not-run-updaterc.d-on-host.patch
@@ -0,0 +1,15 @@
+Index: fuse-2.7.2/util/Makefile.am
+===================================================================
+--- fuse-2.7.2.orig/util/Makefile.am 2007-04-26 01:36:47.000000000 +0930
++++ fuse-2.7.2/util/Makefile.am 2008-02-10 16:43:19.000000000 +1030
+@@ -33,10 +33,6 @@
+ $(INSTALL_PROGRAM) $(srcdir)/mount.fuse $(DESTDIR)$(MOUNT_FUSE_PATH)/mount.fuse
+ $(mkdir_p) $(DESTDIR)$(INIT_D_PATH)
+ $(INSTALL_PROGRAM) $(srcdir)/init_script $(DESTDIR)$(INIT_D_PATH)/fuse
+- @if test -x /usr/sbin/update-rc.d; then \
+- echo "/usr/sbin/update-rc.d fuse start 34 S . start 41 0 6 . || true"; \
+- /usr/sbin/update-rc.d fuse start 34 S . start 41 0 6 . || true; \
+- fi
+
+ install-data-local:
+ $(mkdir_p) $(DESTDIR)$(UDEV_RULES_PATH)
diff --git a/packages/busybox/busybox-1.2.0/openslug/.mtn2git_empty b/packages/fuse/fuse-module-2.5.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.2.0/openslug/.mtn2git_empty
+++ b/packages/fuse/fuse-module-2.5.3/.mtn2git_empty
diff --git a/packages/fuse/fuse-module-2.5.3/preserve_CC_with_2_4_kernel.patch b/packages/fuse/fuse-module-2.5.3/preserve_CC_with_2_4_kernel.patch
new file mode 100644
index 0000000000..05619d557c
--- /dev/null
+++ b/packages/fuse/fuse-module-2.5.3/preserve_CC_with_2_4_kernel.patch
@@ -0,0 +1,11 @@
+--- fuse-2.5.3/kernel/Makefile.in.orig 2008-01-05 20:43:00.000000000 -0600
++++ fuse-2.5.3/kernel/Makefile.in 2008-01-05 20:43:25.000000000 -0600
+@@ -54,8 +54,6 @@
+
+ ifeq ($(majver), 2.4)
+
+-CC = gcc
+-LD = ld
+ CFLAGS = -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -pipe @KERNELCFLAGS@
+ CPPFLAGS = -I@kernelsrc@/include -I. -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DFUSE_VERSION=\"$(VERSION)\" @KERNELCPPFLAGS@
+
diff --git a/packages/fuse/fuse-module_2.5.3.bb b/packages/fuse/fuse-module_2.5.3.bb
new file mode 100644
index 0000000000..f707888c94
--- /dev/null
+++ b/packages/fuse/fuse-module_2.5.3.bb
@@ -0,0 +1,31 @@
+require fuse.inc
+
+PR = "r0"
+
+SRC_URI += "file://preserve_CC_with_2_4_kernel.patch;patch=1"
+
+S = "${WORKDIR}/fuse-${PV}"
+
+FILES_${PN} = "${base_libdir}/modules"
+
+EXTRA_OECONF = " --enable-kernel-module --with-kernel=${STAGING_KERNEL_DIR}"
+
+inherit module
+
+do_configure() {
+ cd ${S}
+ oe_runconf
+}
+
+do_compile(){
+ LDFLAGS=""
+ cd ${S}/kernel
+ oe_runmake
+}
+
+fakeroot do_install() {
+ LDFLAGS=""
+ cd ${S}/kernel
+ oe_runmake install DESTDIR=${D}
+}
+
diff --git a/packages/fuse/fuse-module_2.7.2.bb b/packages/fuse/fuse-module_2.7.2.bb
new file mode 100644
index 0000000000..48cc33a338
--- /dev/null
+++ b/packages/fuse/fuse-module_2.7.2.bb
@@ -0,0 +1,29 @@
+require fuse.inc
+
+RRECOMMENDS = "fuse"
+PR = "r0"
+
+S = "${WORKDIR}/fuse-${PV}"
+FILES_${PN} = "/dev ${base_libdir}/modules ${sysconfdir}"
+EXTRA_OECONF = " --enable-kernel-module --with-kernel=${STAGING_KERNEL_DIR}"
+
+inherit module
+
+do_configure() {
+ cd ${S} ; oe_runconf
+}
+
+do_compile(){
+ LDFLAGS=""
+ cd ${S}/kernel
+ oe_runmake
+}
+
+fakeroot do_install() {
+ LDFLAGS=""
+ install -d ${D}${sysconfdir}/udev/rules.d/
+ install -m 644 util/udev.rules ${D}${sysconfdir}/udev/rules.d/
+ cd ${S}/kernel
+ oe_runmake install DESTDIR=${D}
+}
+
diff --git a/packages/fuse/fuse_2.7.2.bb b/packages/fuse/fuse_2.7.2.bb
new file mode 100644
index 0000000000..a1795e7f0c
--- /dev/null
+++ b/packages/fuse/fuse_2.7.2.bb
@@ -0,0 +1,27 @@
+require fuse.inc
+
+PR = "r0"
+
+SRC_URI += "file://not-run-updaterc.d-on-host.patch;patch=1"
+
+EXTRA_OECONF = " --disable-kernel-module"
+
+#package utils in a sperate package and stop debian.bbclass renaming it to libfuse-utils, we want it to be fuse-utils
+PACKAGES =+ "fuse-utils-dbg fuse-utils libulockmgr libulockmgr-dev libulockmgr-dbg"
+FILES_${PN} += "${libdir}/libfuse.so.*"
+FILES_${PN}-dev += "${libdir}/libfuse*.la"
+
+FILES_libulockmgr = "${libdir}/libulockmgr.so.*"
+FILES_libulockmgr-dev += "${libdir}/libulock*.la"
+FILES_libulockmgr-dbg += "${libdir}/.debug/libulock*"
+
+FILES_fuse-utils = "${bindir} ${base_sbindir}"
+FILES_fuse-utils-dbg = "${bindir}/.debug ${base_sbindir}/.debug"
+DEBIAN_NOAUTONAME_fuse-utils = "1"
+DEBIAN_NOAUTONAME_fuse-utils-dbg = "1"
+
+fakeroot do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/gaim/pidgin.inc b/packages/gaim/pidgin.inc
deleted file mode 100644
index 4184848daa..0000000000
--- a/packages/gaim/pidgin.inc
+++ /dev/null
@@ -1,85 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "multi-protocol instant messaging client"
-LICENSE = "GPL"
-
-DEPENDS = "avahi gtk+ ncurses gnutls virtual/libintl gstreamer dbus"
-RRECOMMENDS_${PN} = "libpurple-plugin-ssl-gnutls libpurple-protocol-irc libpurple-protocol-xmpp"
-
-EXTRA_OECONF = " \
- --disable-audio \
- --disable-perl \
- --disable-tcl \
- --disable-deprecated \
- --disable-gevolution \
- --x-includes=${STAGING_INCDIR} \
- --x-libraries=${STAGING_LIBDIR} \
- --enable-gnutls=yes \
- --with-ncurses-headers=${STAGING_INCDIR} \
- --with-gnutls-includes=${STAGING_INCDIR} \
- --with-gnutls-libs=${STAGING_LIBDIR} \
- "
-
-OE_LT_RPATH_ALLOW=":${libdir}/purple-2:"
-OE_LT_RPATH_ALLOW[export]="1"
-
-PACKAGES =+ "libpurple libpurple-dev libpurple-dbg libpurple-liboscar libpurple-libjabber libpurple-logreader finch finch-dev finch-dbg"
-
-
-LEAD_SONAME = "libpurple.so.0"
-FILES_libpurple = "${libdir}/libpurple*.so.* /usr/bin/purple-* /etc/gconf/schemas/purple*"
-FILES_libpurple-dev = "${libdir}/libpurple* \
- ${libdir}/purple-2/*.la "
-FILES_libpurple-dbg = "${libdir}/.debug/libpurple* \
- ${libdir}/purple-2/.debug"
-FILES_libpurple-liboscar = "${libdir}/purple-2/liboscar.so.*"
-FILES_libpurple-libjabber = "${libdir}/purple-2/libjabber.so.*"
-FILES_libpurple-logreader = "${libdir}/purple-2/log_reader.so"
-FILES_finch = "${bindir}/finch /usr/lib/libgnt.so.*"
-FILES_finch-dev = "${libdir}/finch/*.la"
-FILES_finch-dbg = "${bindir}/.debug/finch \
- ${libdir}/finch/.debug"
-
-FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
- ${sysconfdir} ${sharedstatedir} ${localstatedir} \
- /bin /sbin /lib/*.so* ${datadir}/${PN} ${libdir}/${PN}/*.so \
- ${datadir}/pixmaps ${datadir}/applications \
- ${datadir}/idl ${datadir}/omf ${datadir}/sounds \
- ${libdir}/bonobo/servers ${datadir}/icons"
-FILES_${PN}-dev += "${libdir}/pidgin/*.la"
-
-inherit autotools gettext pkgconfig gconf
-
-PACKAGES_DYNAMIC = "libpurple-protocol-* libpurple-plugin-* pidgin-plugin-* finch-plugin-*"
-
-python populate_packages_prepend () {
- root = bb.data.expand('${libdir}/pidgin', d)
- purple = bb.data.expand('${libdir}/purple-2', d)
- finch = bb.data.expand('${libdir}/finch', d)
-
- do_split_packages(d, root, '^([^l][^i][^b].*)\.so$',
- output_pattern='pidgin-plugin-%s',
- description='Pidgin plugin %s',
- prepend=True, extra_depends='')
-
- do_split_packages(d, purple, '^lib(.*)\.so$',
- output_pattern='libpurple-protocol-%s',
- description='Libpurple protocol plugin for %s',
- prepend=True, extra_depends='')
-
- do_split_packages(d, purple, '^(ssl-.*)\.so$',
- output_pattern='libpurple-plugin-%s',
- description='libpurple plugin %s',
- prepend=True, extra_depends='libpurple-plugin-ssl')
-
- do_split_packages(d, purple, '^([^l][^i][^b].*)\.so$',
- output_pattern='libpurple-plugin-%s',
- description='libpurple plugin %s',
- prepend=True, extra_depends='')
-
- do_split_packages(d, finch, '^([^l][^i][^b].*)\.so$',
- output_pattern='finch-plugin-%s',
- description='Finch plugin %s',
- prepend=True, extra_depends='')
-
-
-}
diff --git a/packages/gammu/gammu_1.17.0.bb b/packages/gammu/gammu_1.17.0.bb
index fc7adb1b79..65ab877495 100644
--- a/packages/gammu/gammu_1.17.0.bb
+++ b/packages/gammu/gammu_1.17.0.bb
@@ -3,6 +3,7 @@ SECTION = "console/network"
DEPENDS = "bluez-libs cmake-native"
LICENSE = "GPL"
HOMEPAGE = "http://www.gammu.org/"
+PR = "r1"
SRC_URI = "http://dl.cihar.com/gammu/releases/gammu-${PV}.tar.bz2 "
@@ -25,6 +26,7 @@ do_stage() {
install -m 0644 build-configure/include/*.h ${STAGING_INCDIR}/gammu/
oe_libinstall -so -C build-configure/common libGammu ${STAGING_LIBDIR}
+ rm -f ./build-configure/pkgconfig/gammu.pc
}
PACKAGES =+ "libgammu"
diff --git a/packages/gcc/gcc-4.1.0/arm-nolibfloat.patch b/packages/gcc/gcc-4.1.0/arm-nolibfloat.patch
deleted file mode 100644
index c4897c0330..0000000000
--- a/packages/gcc/gcc-4.1.0/arm-nolibfloat.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-# Dimitry Andric <dimitry@andric.com>, 2004-05-01
-#
-# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
-# anymore. (The required functions are now in libgcc.)
-#
-# Fixes errors like
-# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat
-# collect2: ld returned 1 exit status
-# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1
-# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat
-
-Index: gcc-4.0.2/gcc/config/arm/linux-elf.h
-===================================================================
---- gcc-4.0.2.orig/gcc/config/arm/linux-elf.h 2005-03-04 16:14:01.000000000 +0000
-+++ gcc-4.0.2/gcc/config/arm/linux-elf.h 2005-11-11 18:02:54.000000000 +0000
-@@ -56,7 +56,7 @@
- %{shared:-lc} \
- %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
-
--#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
-+#define LIBGCC_SPEC "-lgcc"
-
- /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
- the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
diff --git a/packages/gcc/gcc-4.1.0/arm-softfloat.patch b/packages/gcc/gcc-4.1.0/arm-softfloat.patch
deleted file mode 100644
index c86c83ed15..0000000000
--- a/packages/gcc/gcc-4.1.0/arm-softfloat.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: gcc-4.0.2/gcc/config/arm/t-linux
-===================================================================
---- gcc-4.0.2.orig/gcc/config/arm/t-linux 2004-05-15 12:41:35.000000000 +0000
-+++ gcc-4.0.2/gcc/config/arm/t-linux 2005-11-11 16:07:53.000000000 +0000
-@@ -4,7 +4,10 @@
- LIBGCC2_DEBUG_CFLAGS = -g0
-
- LIB1ASMSRC = arm/lib1funcs.asm
--LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
-+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
-+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-+ _fixsfsi _fixunssfsi _floatdidf _floatdisf
-
- # MULTILIB_OPTIONS = mhard-float/msoft-float
- # MULTILIB_DIRNAMES = hard-float soft-float
diff --git a/packages/gcc/gcc-4.1.0/ldflags.patch b/packages/gcc/gcc-4.1.0/ldflags.patch
deleted file mode 100644
index 9576f60778..0000000000
--- a/packages/gcc/gcc-4.1.0/ldflags.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- /tmp/Makefile.in 2006-02-23 20:56:01.399758728 +0100
-+++ gcc-4.1-20060217/Makefile.in 2006-02-23 20:56:16.874406224 +0100
-@@ -334,7 +334,7 @@
- CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
- LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
- LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
--LDFLAGS_FOR_TARGET =
-+LDFLAGS_FOR_TARGET = @LDFLAGS@
- PICFLAG_FOR_TARGET =
-
- # ------------------------------------
---- /tmp/Makefile.tpl 2006-02-23 20:50:34.077519272 +0100
-+++ gcc-4.1-20060217/Makefile.tpl 2006-02-23 21:04:31.092273688 +0100
-@@ -337,7 +337,7 @@
- CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
- LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
- LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
--LDFLAGS_FOR_TARGET =
-+LDFLAGS_FOR_TARGET = @LDFLAGS@
- PICFLAG_FOR_TARGET =
-
- # ------------------------------------
diff --git a/packages/gcc/gcc-4.1.0/pr34130.patch b/packages/gcc/gcc-4.1.0/pr34130.patch
deleted file mode 100644
index 415335f4b4..0000000000
--- a/packages/gcc/gcc-4.1.0/pr34130.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: gcc-4.1.2/gcc/fold-const.c
-===================================================================
---- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
-+++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
-@@ -5339,7 +5339,10 @@
- }
- break;
- }
-- /* FALLTHROUGH */
-+ /* If the constant is negative, we cannot simplify this. */
-+ if (tree_int_cst_sgn (c) == -1)
-+ break;
-+ /* FALLTHROUGH */
- case NEGATE_EXPR:
- if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
- return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
diff --git a/packages/gcc/gcc-4.1.0/zecke-no-host-includes.patch b/packages/gcc/gcc-4.1.0/zecke-no-host-includes.patch
deleted file mode 100644
index 6afb10d6ef..0000000000
--- a/packages/gcc/gcc-4.1.0/zecke-no-host-includes.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Index: gcc-4.0.2/gcc/c-incpath.c
-===================================================================
---- gcc-4.0.2.orig/gcc/c-incpath.c 2005-01-23 16:05:27.000000000 +0100
-+++ gcc-4.0.2/gcc/c-incpath.c 2006-05-15 21:23:02.000000000 +0200
-@@ -350,6 +350,26 @@
- p->construct = 0;
- p->user_supplied_p = user_supplied_p;
-
-+#ifdef CROSS_COMPILE
-+ /* A common error when cross compiling is including
-+ host headers. This code below will try to fail fast
-+ for cross compiling. Currently we consider /usr/include,
-+ /opt/include and /sw/include as harmful. */
-+ {
-+ /* printf("Adding Path: %s\n", p->name ); */
-+ if( strstr(p->name, "/usr/include" ) == p->name ) {
-+ fprintf(stderr, _("CROSS COMPILE Badness: /usr/include in INCLUDEPATH: %s\n"), p->name);
-+ abort();
-+ } else if( strstr(p->name, "/sw/include") == p->name ) {
-+ fprintf(stderr, _("CROSS COMPILE Badness: /sw/include in INCLUDEPATH: %s\n"), p->name);
-+ abort();
-+ } else if( strstr(p->name, "/opt/include") == p->name ) {
-+ fprintf(stderr, _("CROSS COMPILE Badness: /opt/include in INCLUDEPATH: %s\n"), p->name);
-+ abort();
-+ }
-+ }
-+#endif
-+
- add_cpp_dir_path (p, chain);
- }
-
diff --git a/packages/gcc/gcc-4.1.0/zecke-xgcc-cpp.patch b/packages/gcc/gcc-4.1.0/zecke-xgcc-cpp.patch
deleted file mode 100644
index 120cf55a0f..0000000000
--- a/packages/gcc/gcc-4.1.0/zecke-xgcc-cpp.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: gcc-4.1.0/Makefile.in
-===================================================================
---- gcc-4.1.0.orig/Makefile.in 2005-12-15 15:02:02.000000000 +0100
-+++ gcc-4.1.0/Makefile.in 2006-08-06 13:29:36.000000000 +0200
-@@ -194,6 +194,7 @@
- AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
- CC="$(CC_FOR_TARGET)"; export CC; \
- CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
-+ CPP="$(CC_FOR_TARGET) -E"; export CCP; \
- CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
- CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
- CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
diff --git a/packages/gcc/gcc-4.1.1/zecke-xgcc-cpp.patch b/packages/gcc/gcc-4.1.1/zecke-xgcc-cpp.patch
index 42ec190600..921cab6e18 100644
--- a/packages/gcc/gcc-4.1.1/zecke-xgcc-cpp.patch
+++ b/packages/gcc/gcc-4.1.1/zecke-xgcc-cpp.patch
@@ -1,3 +1,7 @@
+upstream: n/a
+comment: Use the preprocessor we have just compiled instead the one of
+the system. There might be incompabilities between us and them.
+
Index: gcc-4.1.1/Makefile.in
===================================================================
--- gcc-4.1.1.orig/Makefile.in 2006-08-06 13:32:44.000000000 +0200
diff --git a/packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch b/packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch
index 42ec190600..921cab6e18 100644
--- a/packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch
+++ b/packages/gcc/gcc-4.1.2/zecke-xgcc-cpp.patch
@@ -1,3 +1,7 @@
+upstream: n/a
+comment: Use the preprocessor we have just compiled instead the one of
+the system. There might be incompabilities between us and them.
+
Index: gcc-4.1.1/Makefile.in
===================================================================
--- gcc-4.1.1.orig/Makefile.in 2006-08-06 13:32:44.000000000 +0200
diff --git a/packages/gcc/gcc-4.2.1/zecke-no-host-includes.patch b/packages/gcc/gcc-4.2.1/zecke-no-host-includes.patch
index 6afb10d6ef..0b401defd8 100644
--- a/packages/gcc/gcc-4.2.1/zecke-no-host-includes.patch
+++ b/packages/gcc/gcc-4.2.1/zecke-no-host-includes.patch
@@ -1,3 +1,16 @@
+upstream: n/a
+status: evil hack
+comment: Including host system headers when cross compiling can lead to weird
+issues, in the best case compile issues, in the worst case crashes. E.g. if you
+are building a uclibc system, you certainly do not want glibc headers or OSX libc
+headers to be picked up. To avoid that this patch is penetalizing certain common
+Linux/Unix host directories.
+
+To send the patch upstream the evil paths should be specified by
+a setting or command-line options. Until now this is a evil hack assuming
+certain host system paths. E.g. /usr/local/ and other common paths should be
+added.
+
Index: gcc-4.0.2/gcc/c-incpath.c
===================================================================
--- gcc-4.0.2.orig/gcc/c-incpath.c 2005-01-23 16:05:27.000000000 +0100
diff --git a/packages/gcc/gcc-4.2.1/zecke-xgcc-cpp.patch b/packages/gcc/gcc-4.2.1/zecke-xgcc-cpp.patch
index 42ec190600..921cab6e18 100644
--- a/packages/gcc/gcc-4.2.1/zecke-xgcc-cpp.patch
+++ b/packages/gcc/gcc-4.2.1/zecke-xgcc-cpp.patch
@@ -1,3 +1,7 @@
+upstream: n/a
+comment: Use the preprocessor we have just compiled instead the one of
+the system. There might be incompabilities between us and them.
+
Index: gcc-4.1.1/Makefile.in
===================================================================
--- gcc-4.1.1.orig/Makefile.in 2006-08-06 13:32:44.000000000 +0200
diff --git a/packages/gcc/gcc-4.2.2/arm-softfloat.patch b/packages/gcc/gcc-4.2.2/arm-softfloat.patch
index c86c83ed15..5e1edd9208 100644
--- a/packages/gcc/gcc-4.2.2/arm-softfloat.patch
+++ b/packages/gcc/gcc-4.2.2/arm-softfloat.patch
@@ -10,7 +10,7 @@ Index: gcc-4.0.2/gcc/config/arm/t-linux
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-+ _fixsfsi _fixunssfsi _floatdidf _floatdisf
++ _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf
# MULTILIB_OPTIONS = mhard-float/msoft-float
# MULTILIB_DIRNAMES = hard-float soft-float
diff --git a/packages/gcc/gcc-4.2.2/arm-thumb.patch b/packages/gcc/gcc-4.2.2/arm-thumb.patch
index 69e2f68cf2..016a7a550b 100644
--- a/packages/gcc/gcc-4.2.2/arm-thumb.patch
+++ b/packages/gcc/gcc-4.2.2/arm-thumb.patch
@@ -59,6 +59,6 @@
_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+ _call_via_rX \
- _fixsfsi _fixunssfsi _floatdidf _floatdisf
+ _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf
# MULTILIB_OPTIONS = mhard-float/msoft-float
diff --git a/packages/gcc/gcc-4.2.2/zecke-xgcc-cpp.patch b/packages/gcc/gcc-4.2.2/zecke-xgcc-cpp.patch
index 42ec190600..921cab6e18 100644
--- a/packages/gcc/gcc-4.2.2/zecke-xgcc-cpp.patch
+++ b/packages/gcc/gcc-4.2.2/zecke-xgcc-cpp.patch
@@ -1,3 +1,7 @@
+upstream: n/a
+comment: Use the preprocessor we have just compiled instead the one of
+the system. There might be incompabilities between us and them.
+
Index: gcc-4.1.1/Makefile.in
===================================================================
--- gcc-4.1.1.orig/Makefile.in 2006-08-06 13:32:44.000000000 +0200
diff --git a/packages/gcc/gcc-cross-kernel-3.3.4_3.3.4.bb b/packages/gcc/gcc-cross-kernel-3.3.4_3.3.4.bb
index 7f274bee30..ba89452187 100644
--- a/packages/gcc/gcc-cross-kernel-3.3.4_3.3.4.bb
+++ b/packages/gcc/gcc-cross-kernel-3.3.4_3.3.4.bb
@@ -12,6 +12,6 @@ do_install () {
do_stage () {
cd gcc
- oe_runmake install-common install-headers install-libgcc
+ oe_runmake install-libgcc install-common install-headers
install -m 0755 xgcc ${CROSS_DIR}/bin/${TARGET_PREFIX}gcc-${PV}
}
diff --git a/packages/gcc/gcc-cross_4.1.2.bb b/packages/gcc/gcc-cross_4.1.2.bb
index 0f63487f2c..306cf9539c 100644
--- a/packages/gcc/gcc-cross_4.1.2.bb
+++ b/packages/gcc/gcc-cross_4.1.2.bb
@@ -17,4 +17,6 @@ require gcc-package-cross.inc
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
+EXTRA_OECONF_append_avr32= " --disable-libmudflap "
+
EXTRA_OECONF += "--disable-libunwind-exceptions --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
diff --git a/packages/gcc/gcc-native_3.4.4.bb b/packages/gcc/gcc-native_3.4.4.bb
index 2e5d3ac263..d70a4f5464 100644
--- a/packages/gcc/gcc-native_3.4.4.bb
+++ b/packages/gcc/gcc-native_3.4.4.bb
@@ -1,2 +1,3 @@
require gcc_${PV}.bb
require gcc-native.inc
+PROVIDES += "gcc3-native"
diff --git a/packages/gcc/gcc-package-cross.inc b/packages/gcc/gcc-package-cross.inc
index 5c6b370d82..51a45cd633 100644
--- a/packages/gcc/gcc-package-cross.inc
+++ b/packages/gcc/gcc-package-cross.inc
@@ -43,12 +43,12 @@ do_install () {
# Already in the right location
:
elif [ -f ${D}${prefix}/lib/libgcc_s.so.? ]; then
- mv -f ${D}${prefix}/lib/libgcc_s.so* ${D}${target_base_libdir}
+ mv -f ${D}${prefix}/lib/libgcc_s.so* ${D}${target_base_libdir} || true
elif [ -f ${D}${prefix}/*/lib/nof/libgcc_s.so.? ]; then
mv -f ${D}${prefix}/*/lib/nof/libgcc_s.so* ${D}${target_base_libdir}
else
- mv -f ${D}${prefix}/*/lib/libgcc_s.so* ${D}${target_base_libdir}
+ mv -f ${D}${prefix}/*/lib/libgcc_s.so* ${D}${target_base_libdir} || true
fi
@@ -58,12 +58,12 @@ do_install () {
if [ -f ${D}${prefix}/*/lib/nof/libstdc++.so ]; then
- mv -f ${D}${prefix}/*/lib/nof/libstdc++.so* ${D}${target_libdir}
+ mv -f ${D}${prefix}/*/lib/nof/libstdc++.so* ${D}${target_libdir} || true
mv -f ${D}${prefix}/*/lib/nof/libg2c.so* ${D}${target_libdir} || true
mv -f ${D}${prefix}/*/lib/nof/libgfortran*.so* ${D}${target_libdir} || true
else
- mv -f ${D}${prefix}/*/lib/libstdc++.so* ${D}${target_libdir}
+ mv -f ${D}${prefix}/*/lib/libstdc++.so* ${D}${target_libdir} || true
mv -f ${D}${prefix}/*/lib/libg2c.so* ${D}${target_libdir} || true
mv -f ${D}${prefix}/*/lib/libgfortran*.so* ${D}${target_libdir} || true
fi
@@ -75,7 +75,7 @@ do_install () {
if [ "x${OLD_INHIBIT_PACKAGE_STRIP}" != "x1" ]; then
${TARGET_PREFIX}strip ${D}${target_libdir}/libstdc++.so.*
${TARGET_PREFIX}strip ${D}${target_libdir}/libg2c.so.* || true
- ${TARGET_PREFIX}strip ${D}${target_base_libdir}/libgcc_s.so.*
+ ${TARGET_PREFIX}strip ${D}${target_base_libdir}/libgcc_s.so.* || true
${TARGET_PREFIX}strip ${D}${target_libdir}/libgfortran*.so* || true
fi
diff --git a/packages/gcc/gcc-package.inc b/packages/gcc/gcc-package.inc
index d1b4607de5..2976d58d05 100644
--- a/packages/gcc/gcc-package.inc
+++ b/packages/gcc/gcc-package.inc
@@ -1,41 +1,58 @@
gcclibdir ?= "${libdir}/gcc"
BINV ?= "${PV}"
-PACKAGES = "libgcc ${PN} ${PN}-symlinks \
- g++ g++-symlinks \
- cpp cpp-symlinks \
- g77 g77-symlinks \
- gfortran gfortran-symlinks \
- gcov gcov-symlinks \
- libmudflap libmudflap-dev \
- libstdc++ libg2c \
- libstdc++-dev libg2c-dev \
- ${PN}-doc"
-
-FILES_${PN} = "${bindir}/${TARGET_PREFIX}gcc \
- ${bindir}/${TARGET_PREFIX}gccbug \
- ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1 \
- ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/collect2 \
- ${gcclibdir}/${TARGET_SYS}/${BINV}/*.o \
- ${gcclibdir}/${TARGET_SYS}/${BINV}/specs \
- ${gcclibdir}/${TARGET_SYS}/${BINV}/lib* \
- ${gcclibdir}/${TARGET_SYS}/${BINV}/include"
-FILES_${PN}-symlinks = "${bindir}/cc \
- ${bindir}/gcc \
- ${bindir}/gccbug"
-
-FILES_g77 = "${bindir}/${TARGET_PREFIX}g77 \
- ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f771"
-FILES_g77-symlinks = "${bindir}/g77 \
- ${bindir}/f77"
-
-FILES_gfortran = "${bindir}/${TARGET_PREFIX}gfortran \
- ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951"
-FILES_gfortran-symlinks = "${bindir}/gfortran \
- ${bindir}/f95"
-
-FILES_cpp = "${bindir}/${TARGET_PREFIX}cpp \
- ${base_libdir}/cpp"
+PACKAGES = "\
+ libgcc ${PN} ${PN}-symlinks \
+ g++ g++-symlinks \
+ cpp cpp-symlinks \
+ g77 g77-symlinks \
+ gfortran gfortran-symlinks \
+ gcov gcov-symlinks \
+ libmudflap libmudflap-dev \
+ libstdc++ libg2c \
+ libstdc++-dev libg2c-dev \
+ ${PN}-doc \
+"
+
+# We really need HOST_SYS here for some packages and TARGET_SYS for others.
+# For now, libgcc is most important so we fix for that - RP.
+SHLIBSDIR = "${STAGING_DIR}/${TARGET_SYS}/shlibs"
+
+FILES_${PN} = "\
+ ${bindir}/${TARGET_PREFIX}gcc \
+ ${bindir}/${TARGET_PREFIX}gccbug \
+ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/collect2 \
+ ${gcclibdir}/${TARGET_SYS}/${BINV}/*.o \
+ ${gcclibdir}/${TARGET_SYS}/${BINV}/specs \
+ ${gcclibdir}/${TARGET_SYS}/${BINV}/lib* \
+ ${gcclibdir}/${TARGET_SYS}/${BINV}/include \
+"
+FILES_${PN}-symlinks = "\
+ ${bindir}/cc \
+ ${bindir}/gcc \
+ ${bindir}/gccbug \
+"
+
+FILES_g77 = "\
+ ${bindir}/${TARGET_PREFIX}g77 \
+ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f771 \
+"
+FILES_g77-symlinks = "\
+ ${bindir}/g77 \
+ ${bindir}/f77 \
+"
+FILES_gfortran = "\
+ ${bindir}/${TARGET_PREFIX}gfortran \
+ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
+"
+FILES_gfortran-symlinks = "\
+ ${bindir}/gfortran \
+ ${bindir}/f95"
+
+FILES_cpp = "\
+ ${bindir}/${TARGET_PREFIX}cpp \
+ ${base_libdir}/cpp \
+ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1"
FILES_cpp-symlinks = "${bindir}/cpp"
FILES_gcov = "${bindir}/${TARGET_PREFIX}gcov"
@@ -46,37 +63,48 @@ FILES_libgcc-dev = "${base_libdir}/libgcc*.so"
# Called from within gcc-cross, so libdir is set wrong
FILES_libg2c = "${target_libdir}/libg2c.so.*"
-FILES_libg2c-dev = "${libdir}/libg2c.so \
- ${libdir}/libg2c.a \
- ${libdir}/libfrtbegin.a"
-
-FILES_g++ = "${bindir}/${TARGET_PREFIX}g++ \
- ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus"
-FILES_g++-symlinks = "${bindir}/c++ \
- ${bindir}/g++"
+FILES_libg2c-dev = "\
+ ${libdir}/libg2c.so \
+ ${libdir}/libg2c.a \
+ ${libdir}/libfrtbegin.a \
+"
+
+FILES_g++ = "\
+ ${bindir}/${TARGET_PREFIX}g++ \
+ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus \
+"
+FILES_g++-symlinks = "\
+ ${bindir}/c++ \
+ ${bindir}/g++ \
+"
FILES_libstdc++ = "${libdir}/libstdc++.so.*"
-FILES_libstdc++-dev = "${includedir}/c++/${BINV} \
- ${libdir}/libstdc++.so \
- ${libdir}/libstdc++.la \
- ${libdir}/libstdc++.a \
- ${libdir}/libsupc++.la \
- ${libdir}/libsupc++.a"
+FILES_libstdc++-dev = "\
+ ${includedir}/c++/${BINV} \
+ ${libdir}/libstdc++.so \
+ ${libdir}/libstdc++.la \
+ ${libdir}/libstdc++.a \
+ ${libdir}/libsupc++.la \
+ ${libdir}/libsupc++.a \
+"
FILES_libmudflap = "${libdir}/libmudflap*.so.*"
-FILES_libmudflap-dev = "${libdir}/libmudflap*.so \
- ${libdir}/libmudflap*.a \
- ${libdir}/libmudflap*.a"
-
-
-FILES_${PN}-doc = "${infodir} \
- ${mandir} \
- ${gcclibdir}/${TARGET_SYS}/${BINV}/include/README"
+FILES_libmudflap-dev = "\
+ ${libdir}/libmudflap*.so \
+ ${libdir}/libmudflap*.a \
+ ${libdir}/libmudflap*.a \
+"
+
+FILES_${PN}-doc = "\
+ ${infodir} \
+ ${mandir} \
+ ${gcclibdir}/${TARGET_SYS}/${BINV}/include/README \
+"
python do_package() {
- if bb.data.getVar('DEBIAN_NAMES', d, 1):
- bb.data.setVar('PKG_libgcc', 'libgcc1', d)
- bb.build.exec_func('package_do_package', d)
+ if bb.data.getVar('DEBIAN_NAMES', d, 1):
+ bb.data.setVar('PKG_libgcc', 'libgcc1', d)
+ bb.build.exec_func('package_do_package', d)
}
diff --git a/packages/gcc/gcc_4.0.0.bb b/packages/gcc/gcc_4.0.0.bb
index 28561e1e07..9f75bf1f54 100644
--- a/packages/gcc/gcc_4.0.0.bb
+++ b/packages/gcc/gcc_4.0.0.bb
@@ -1,8 +1,8 @@
-PR = "r2"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
+PR = "r3"
inherit autotools gettext
diff --git a/packages/gcc/gcc_4.0.2.bb b/packages/gcc/gcc_4.0.2.bb
index 19d67ab1b4..2945592659 100644
--- a/packages/gcc/gcc_4.0.2.bb
+++ b/packages/gcc/gcc_4.0.2.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
DEPENDS = "mpfr gmp"
-PR = "r6"
+PR = "r7"
inherit autotools gettext
diff --git a/packages/gcc/gcc_4.1.0.bb b/packages/gcc/gcc_4.1.0.bb
index a9dbad579f..6a5f607729 100644
--- a/packages/gcc/gcc_4.1.0.bb
+++ b/packages/gcc/gcc_4.1.0.bb
@@ -1,8 +1,9 @@
-PR = "r2"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
+PR = "r3"
+
DEFAULT_PREFERENCE = "-1"
inherit autotools gettext
diff --git a/packages/gcc/gcc_4.1.1.bb b/packages/gcc/gcc_4.1.1.bb
index 8d08df6b8c..4b538219b3 100644
--- a/packages/gcc/gcc_4.1.1.bb
+++ b/packages/gcc/gcc_4.1.1.bb
@@ -1,8 +1,8 @@
-PR = "r17"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
+PR = "r18"
inherit autotools gettext
diff --git a/packages/gcc/gcc_4.1.2.bb b/packages/gcc/gcc_4.1.2.bb
index e0801d3c7f..fc75e942bb 100644
--- a/packages/gcc/gcc_4.1.2.bb
+++ b/packages/gcc/gcc_4.1.2.bb
@@ -4,7 +4,7 @@ SECTION = "devel"
LICENSE = "GPL"
# NOTE: split PR. If the main .bb changes something that affects its *build*
# remember to increment the -cross .bb PR too.
-PR = "r10"
+PR = "r11"
inherit autotools gettext
@@ -39,6 +39,25 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 \
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
+SRC_URI_avr32 = "http://www.angstrom-distribution.org/unstable/sources/gcc-4.1.2-atmel.1.1.0.tar.gz \
+# file://100-uclibc-conf.patch;patch=1 \
+# file://200-uclibc-locale.patch;patch=1 \
+# file://300-libstdc++-pic.patch;patch=1 \
+ file://301-missing-execinfo_h.patch;patch=1 \
+ file://302-c99-snprintf.patch;patch=1 \
+ file://303-c99-complex-ugly-hack.patch;patch=1 \
+ file://304-index_macro.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://gcc41-configure.in.patch;patch=1 \
+ file://ldflags.patch;patch=1 \
+ file://zecke-xgcc-cpp.patch;patch=1 \
+ file://cache-amnesia.patch;patch=1 \
+ "
+
+do_compile_prepend_avr32() {
+ ln -sf ${S}/libstdc++-v3/config/os/uclibc/ ${S}/libstdc++-v3/config/os/uclibc-linux
+}
+
#Set the fortran bits
# ',fortran' or '', not 'f77' like gcc3 had
FORTRAN = ""
diff --git a/packages/gcc/gcc_4.2.1.bb b/packages/gcc/gcc_4.2.1.bb
index 5d049398e4..dac620397b 100644
--- a/packages/gcc/gcc_4.2.1.bb
+++ b/packages/gcc/gcc_4.2.1.bb
@@ -1,8 +1,8 @@
-PR = "r7"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
+PR = "r8"
inherit autotools gettext
@@ -11,8 +11,8 @@ require gcc-package.inc
SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://100-uclibc-conf.patch;patch=1 \
file://103-uclibc-conf-noupstream.patch;patch=1 \
- file://200-uclibc-locale.patch;patch=1 \
- file://203-uclibc-locale-no__x.patch;patch=1 \
+ file://200-uclibc-locale.patch;patch=1 \
+ file://203-uclibc-locale-no__x.patch;patch=1 \
file://204-uclibc-locale-wchar_fix.patch;patch=1 \
file://205-uclibc-locale-update.patch;patch=1 \
file://300-libstdc++-pic.patch;patch=1 \
@@ -20,11 +20,11 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://302-c99-snprintf.patch;patch=1 \
file://303-c99-complex-ugly-hack.patch;patch=1 \
file://304-index_macro.patch;patch=1 \
- file://305-libmudflap-susv3-legacy.patch;patch=1 \
- file://306-libstdc++-namespace.patch;patch=1 \
+ file://305-libmudflap-susv3-legacy.patch;patch=1 \
+ file://306-libstdc++-namespace.patch;patch=1 \
file://307-locale_facets.patch;patch=1 \
- file://402-libbackend_dep_gcov-iov.h.patch;patch=1 \
- file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://402-libbackend_dep_gcov-iov.h.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
file://740-sh-pr24836.patch;patch=1 \
file://800-arm-bigendian.patch;patch=1 \
file://904-flatten-switch-stmt-00.patch;patch=1 \
@@ -36,10 +36,36 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://ldflags.patch;patch=1 \
file://zecke-xgcc-cpp.patch;patch=1 \
file://unbreak-armv4t.patch;patch=1 \
- file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
+ file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
file://cache-amnesia.patch;patch=1 \
+ file://gfortran.patch;patch=1 \
+ file://pr34130.patch;patch=1 \
+"
+
+SRC_URI_avr32 = " http://ewi546.ewi.utwente.nl/tmp/avr32-gcc-4.2.1-atmel.1.0.1.tar.gz \
+ file://100-uclibc-conf.patch;patch=1 \
+ file://103-uclibc-conf-noupstream.patch;patch=1 \
+ file://200-uclibc-locale.patch;patch=1 \
+ file://203-uclibc-locale-no__x.patch;patch=1 \
+ file://204-uclibc-locale-wchar_fix.patch;patch=1 \
+ file://205-uclibc-locale-update.patch;patch=1 \
+ file://300-libstdc++-pic.patch;patch=1 \
+ file://301-missing-execinfo_h.patch;patch=1 \
+ file://302-c99-snprintf.patch;patch=1 \
+ file://303-c99-complex-ugly-hack.patch;patch=1 \
+ file://304-index_macro.patch;patch=1 \
+ file://305-libmudflap-susv3-legacy.patch;patch=1 \
+ file://306-libstdc++-namespace.patch;patch=1 \
+ file://307-locale_facets.patch;patch=1 \
+ file://402-libbackend_dep_gcov-iov.h.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://740-sh-pr24836.patch;patch=1 \
+ file://904-flatten-switch-stmt-00.patch;patch=1 \
+ file://gcc41-configure.in.patch;patch=1 \
+ file://ldflags.patch;patch=1 \
+ file://zecke-xgcc-cpp.patch;patch=1 \
+ file://cache-amnesia.patch;patch=1 \
file://gfortran.patch;patch=1 \
- file://pr34130.patch;patch=1 \
"
SRC_URI_append_ep93xx = " \
@@ -80,5 +106,5 @@ require gcc3-build.inc
ARCH_FLAGS_FOR_TARGET=-isystem${STAGING_INCDIR}
-EXTRA_OECONF += " --disable-libssp --disable-bootstrap "
+EXTRA_OECONF += " --disable-libgomp --disable-libssp --disable-bootstrap "
diff --git a/packages/gcc/gcc_4.2.2.bb b/packages/gcc/gcc_4.2.2.bb
index 15a25c9c6a..06cbbb23e4 100644
--- a/packages/gcc/gcc_4.2.2.bb
+++ b/packages/gcc/gcc_4.2.2.bb
@@ -1,8 +1,8 @@
-PR = "r3"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
LICENSE = "GPL"
+PR = "r4"
inherit autotools gettext
@@ -11,8 +11,8 @@ require gcc-package.inc
SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://100-uclibc-conf.patch;patch=1 \
file://103-uclibc-conf-noupstream.patch;patch=1 \
- file://200-uclibc-locale.patch;patch=1 \
- file://203-uclibc-locale-no__x.patch;patch=1 \
+ file://200-uclibc-locale.patch;patch=1 \
+ file://203-uclibc-locale-no__x.patch;patch=1 \
file://204-uclibc-locale-wchar_fix.patch;patch=1 \
file://205-uclibc-locale-update.patch;patch=1 \
file://300-libstdc++-pic.patch;patch=1 \
@@ -20,13 +20,14 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://302-c99-snprintf.patch;patch=1 \
file://303-c99-complex-ugly-hack.patch;patch=1 \
file://304-index_macro.patch;patch=1 \
- file://305-libmudflap-susv3-legacy.patch;patch=1 \
- file://306-libstdc++-namespace.patch;patch=1 \
+ file://305-libmudflap-susv3-legacy.patch;patch=1 \
+ file://306-libstdc++-namespace.patch;patch=1 \
file://307-locale_facets.patch;patch=1 \
- file://402-libbackend_dep_gcov-iov.h.patch;patch=1 \
- file://602-sdk-libstdc++-includes.patch;patch=1 \
+ file://402-libbackend_dep_gcov-iov.h.patch;patch=1 \
+ file://602-sdk-libstdc++-includes.patch;patch=1 \
file://740-sh-pr24836.patch;patch=1 \
file://800-arm-bigendian.patch;patch=1 \
+ file://801-arm-bigendian-eabi.patch;patch=1 \
file://904-flatten-switch-stmt-00.patch;patch=1 \
file://arm-nolibfloat.patch;patch=1 \
file://arm-softfloat.patch;patch=1 \
@@ -36,12 +37,12 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://ldflags.patch;patch=1 \
file://zecke-xgcc-cpp.patch;patch=1 \
file://unbreak-armv4t.patch;patch=1 \
- file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
+ file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
file://cache-amnesia.patch;patch=1 \
- file://gfortran.patch;patch=1 \
- file://gcc-4.0.2-e300c2c3.patch;patch=1 \
- file://pr34130.patch;patch=1 \
- file://fortran-static-linking.patch;patch=1 \
+ file://gfortran.patch;patch=1 \
+ file://gcc-4.0.2-e300c2c3.patch;patch=1 \
+ file://pr34130.patch;patch=1 \
+ file://fortran-static-linking.patch;patch=1 \
"
SRC_URI_append_ep93xx = " \
diff --git a/packages/gimp/babl_svn.bb b/packages/gimp/babl_svn.bb
index a32d6ce31a..d53acf46f8 100644
--- a/packages/gimp/babl_svn.bb
+++ b/packages/gimp/babl_svn.bb
@@ -16,6 +16,6 @@ do_stage() {
FILES_${PN} += "${libdir}/babl-0.0/"
-FILES_${PN}-dbg = "${libdir}/babl-0.0/.debug/"
+FILES_${PN}-dbg += "${libdir}/babl-0.0/.debug/"
diff --git a/packages/busybox/busybox-1.5.0/.mtn2git_empty b/packages/glib-2.0/glib-2.0-2.14.4/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.5.0/.mtn2git_empty
+++ b/packages/glib-2.0/glib-2.0-2.14.4/.mtn2git_empty
diff --git a/packages/glib-2.0/glib-2.0-2.14.4/configure-libtool.patch b/packages/glib-2.0/glib-2.0-2.14.4/configure-libtool.patch
new file mode 100644
index 0000000000..a52327c8c9
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.14.4/configure-libtool.patch
@@ -0,0 +1,29 @@
+--- glib-2.12.10/configure.in.orig 2006-06-05 13:34:08.000000000 +0100
++++ glib-2.12.10/configure.in 2006-06-05 13:34:36.000000000 +0100
+@@ -1174,7 +1174,7 @@
+ G_MODULE_LDFLAGS=
+ else
+ export SED
+- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++ G_MODULE_LDFLAGS=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ fi
+ dnl G_MODULE_IMPL= don't reset, so cmd-line can override
+ G_MODULE_NEED_USCORE=0
+@@ -1265,7 +1265,7 @@
+ LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
+ dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
+ echo "void glib_plugin_test(void) { }" > plugin.c
+- ${SHELL} ./libtool --mode=compile ${CC} -shared \
++ ${SHELL} ./$host_alias-libtool --mode=compile ${CC} -shared \
+ -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+ AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
+ glib_cv_rtldglobal_broken,[
+@@ -1339,7 +1339,7 @@
+
+ AC_MSG_CHECKING(for the suffix of shared libraries)
+ export SED
+-shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
++shrext_cmds=`./$host_alias-libtool --config | grep '^shrext_cmds='`
+ eval $shrext_cmds
+ module=yes eval std_shrext=$shrext_cmds
+ # chop the initial dot
diff --git a/packages/glib-2.0/glib-2.0-2.14.4/gcc-4.2-inline-fix.patch b/packages/glib-2.0/glib-2.0-2.14.4/gcc-4.2-inline-fix.patch
new file mode 100644
index 0000000000..ea2b41e900
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.14.4/gcc-4.2-inline-fix.patch
@@ -0,0 +1,17 @@
+Index: glib-2.12.9/glib/gutils.h
+===================================================================
+--- glib-2.12.9.orig/glib/gutils.h 2007-10-07 19:13:53.000000000 +0200
++++ glib-2.12.9/glib/gutils.h 2007-10-07 19:15:04.000000000 +0200
+@@ -97,7 +97,11 @@
+ # define G_INLINE_FUNC
+ # undef G_CAN_INLINE
+ #elif defined (__GNUC__)
+-# define G_INLINE_FUNC extern inline
++# if defined (__GNUC_GNU_INLINE__)
++# define G_INLINE_FUNC extern __attribute__((gnu_inline)) inline
++# else
++# define G_INLINE_FUNC extern inline
++# endif
+ #elif defined (G_CAN_INLINE)
+ # define G_INLINE_FUNC static inline
+ #else /* can't inline */
diff --git a/packages/glib-2.0/glib-2.0_2.14.4.bb b/packages/glib-2.0/glib-2.0_2.14.4.bb
new file mode 100644
index 0000000000..e4318cd1f0
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0_2.14.4.bb
@@ -0,0 +1,6 @@
+require glib.inc
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.14/glib-${PV}.tar.bz2 \
+ file://glibconfig-sysdefs.h \
+ file://configure-libtool.patch;patch=1 \
+ file://gcc-4.2-inline-fix.patch;patch=1"
diff --git a/packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch b/packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch
new file mode 100644
index 0000000000..bab3747b1a
--- /dev/null
+++ b/packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch
@@ -0,0 +1,44 @@
+--- glibc-2.5.orig/debian/patches/any/local-dynamic-resolvconf.diff
++++ glibc-2.5/debian/patches/any/local-dynamic-resolvconf.diff
+@@ -0,0 +1,41 @@
++# All lines beginning with `# DP:' are a description of the patch.
++# DP: Description: allow dynamic long-running processes to
++# DP: re-read a dynamically updated resolv.conf on the fly
++# DP: Dpatch author: Adam Conrad <adconrad@ubuntu.com>
++# DP: Patch author: Thorsten Kukuk <kukuk@suse.de>
++# DP: Upstream status: Ubuntu-Specific
++# DP: Date: 2006-01-13 08:14:21 UTC
++
++Index: resolv/res_libc.c
++===================================================================
++--- resolv/res_libc.c.orig
+++++ resolv/res_libc.c
++@@ -22,7 +22,7 @@
++ #include <arpa/nameser.h>
++ #include <resolv.h>
++ #include <bits/libc-lock.h>
++-
+++#include <sys/stat.h>
++
++ /* The following bit is copied from res_data.c (where it is #ifdef'ed
++ out) since res_init() should go into libc.so but the rest of that
++@@ -94,8 +94,17 @@
++ int
++ __res_maybe_init (res_state resp, int preinit)
++ {
++- if (resp->options & RES_INIT) {
++- if (__res_initstamp != resp->_u._ext.initstamp) {
+++ static time_t last_mtime;
+++ struct stat statbuf;
+++ int ret;
+++
+++
+++ if (resp->options & RES_INIT) {
+++ ret = stat (_PATH_RESCONF, &statbuf);
+++ if (__res_initstamp != resp->_u._ext.initstamp
+++ || (ret == 0) && (last_mtime != statbuf.st_mtime))
+++ {
+++ last_mtime = statbuf.st_mtime;
++ if (resp->nscount > 0) {
++ __res_iclose (resp, true);
++ return __res_vinit (resp, 1);
diff --git a/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch b/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch
index e41c1b7d96..e41c1b7d96 100755..100644
--- a/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch
+++ b/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch
diff --git a/packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch b/packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
new file mode 100644
index 0000000000..33d5282b90
--- /dev/null
+++ b/packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
@@ -0,0 +1,20 @@
+Submitted By: Joe Ciccone <jciccone@linuxfromscratch.org>
+Date: 07-02-2007
+Initial Package Version: 2.6
+Origin: http://sourceware.org/ml/libc-ports/2007-05/msg00051.html
+Upstream Status: Unknown
+Description: Defines RTLD_SINGLE_THREAD_P for arm.
+
+diff -Naur glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+--- glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:22.000000000 -0400
++++ glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:36.000000000 -0400
+@@ -126,3 +126,9 @@
+ # define NO_CANCELLATION 1
+
+ #endif
++
++#ifndef __ASSEMBLER__
++# define RTLD_SINGLE_THREAD_P \
++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
++ header.multiple_threads) == 0, 1)
++#endif
diff --git a/packages/glibc/glibc-2.4/zecke-sane-readelf.patch b/packages/glibc/glibc-2.4/zecke-sane-readelf.patch
index 023b6a51bc..229db09fb3 100644
--- a/packages/glibc/glibc-2.4/zecke-sane-readelf.patch
+++ b/packages/glibc/glibc-2.4/zecke-sane-readelf.patch
@@ -1,3 +1,8 @@
+upstream: http://sources.redhat.com/bugzilla/show_bug.cgi?id=3004
+status: WONTFIX
+comment: Use OEs version of the readelf version. There might be no
+host system version (e.g. on OSX) or it is not multiarch.
+
Index: glibc-2.4/configure
===================================================================
--- glibc-2.4.orig/configure 2006-03-06 12:18:56.000000000 +0100
diff --git a/packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch b/packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch
index c57494f937..7dc699cfad 100644
--- a/packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch
+++ b/packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch
@@ -1,3 +1,8 @@
+upstream: http://sources.redhat.com/bugzilla/show_bug.cgi?id=3004
+status: WONTFIX
+comment: Use OEs version of the readelf version. There might be no
+host system version (e.g. on OSX) or it is not multiarch.
+
Index: glibc-2.3.2/configure
===================================================================
--- glibc-2.3.2.orig/configure 2006-08-05 20:18:11.000000000 +0200
diff --git a/packages/glibc/glibc_2.5.bb b/packages/glibc/glibc_2.5.bb
index e30d357121..f50c85b1d0 100644
--- a/packages/glibc/glibc_2.5.bb
+++ b/packages/glibc/glibc_2.5.bb
@@ -1,17 +1,15 @@
require glibc.inc
+PR = "r9"
ARM_INSTRUCTION_SET = "arm"
PACKAGES_DYNAMIC = "libc6*"
RPROVIDES_${PN}-dev = "libc6-dev"
-PR = "r8"
-
# the -isystem in bitbake.conf screws up glibc do_stage
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
-
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
GLIBC_ADDONS ?= "ports,nptl,libidn"
@@ -36,57 +34,52 @@ python __anonymous () {
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-# file://arm-machine-gmon.patch;patch=1;pnum=0 \
-# \
-# file://arm-ioperm.patch;patch=1;pnum=0 \
-# file://ldd.patch;patch=1;pnum=0 \
-SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://nptl-crosscompile.patch;patch=1 \
- file://glibc-check_pf.patch;patch=1;pnum=0 \
-# file://glibc-2.4-compile.patch;patch=1 \
-# file://glibc-2.4-openat-3.patch;patch=1 \
-# file://fixup-aeabi-syscalls.patch;patch=1 \
- file://zecke-sane-readelf.patch;patch=1 \
- file://ldd-unbash.patch;patch=1 \
- file://generic-bits_select.h \
- file://generic-bits_types.h \
- file://generic-bits_typesizes.h \
- file://generic-bits_time.h \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
+SRC_URI = "\
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
+ file://arm-memcpy.patch;patch=1 \
+ file://arm-longlong.patch;patch=1 \
+ file://fhs-linux-paths.patch;patch=1 \
+ file://dl-cache-libcmp.patch;patch=1 \
+ file://ldsocache-varrun.patch;patch=1 \
+ file://nptl-crosscompile.patch;patch=1 \
+ file://glibc-2.5-local-dynamic-resolvconf.patch;patch=1 \
+ file://glibc-check_pf.patch;patch=1;pnum=0 \
+ file://zecke-sane-readelf.patch;patch=1 \
+ file://ldd-unbash.patch;patch=1 \
+ file://generic-bits_select.h \
+ file://generic-bits_types.h \
+ file://generic-bits_typesizes.h \
+ file://generic-bits_time.h \
+ file://etc/ld.so.conf \
+ file://generate-supported.mk \
+"
# Build fails on sh3 and sh4 without additional patches
SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
-#powerpc patches to add support for soft-float
-SRC_URI_append_powerpc= " file://ppc-sfp-machine.patch;patch=1 \
- file://ppc-soft-fp-20070115.patch;patch=1 \
- file://ppc-ld-nofpu-20070104.patch;patch=1 \
- file://ppc-ports-ld-nofpu-20070114.patch;patch=1 \
- file://powerpc-sqrt-hack.diff;patch=1 \
- file://glibc-2.5-soft-fp-separate-strong-alias.patch;patch=1"
+# Powerpc patches to add support for soft-float
+SRC_URI_append_powerpc = " file://ppc-sfp-machine.patch;patch=1 \
+ file://ppc-soft-fp-20070115.patch;patch=1 \
+ file://ppc-ld-nofpu-20070104.patch;patch=1 \
+ file://ppc-ports-ld-nofpu-20070114.patch;patch=1 \
+ file://powerpc-sqrt-hack.diff;patch=1 \
+ file://glibc-2.5-soft-fp-separate-strong-alias.patch;patch=1"
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
+EXTRA_OECONF = "\
+ --enable-kernel=${OLDEST_KERNEL} \
+ --without-cvs --disable-profile --disable-debug --without-gd \
+ --enable-clocale=gnu \
+ --enable-add-ons=${GLIBC_ADDONS} \
+ --with-headers=${STAGING_INCDIR} \
+ --without-selinux \
+ ${GLIBC_EXTRA_OECONF} \
+"
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
diff --git a/packages/glibc/glibc_2.6.1.bb b/packages/glibc/glibc_2.6.1.bb
index 46b56a0a65..705fab6715 100644
--- a/packages/glibc/glibc_2.6.1.bb
+++ b/packages/glibc/glibc_2.6.1.bb
@@ -1,12 +1,11 @@
require glibc.inc
+PR = "r2"
ARM_INSTRUCTION_SET = "arm"
PACKAGES_DYNAMIC = "libc6*"
RPROVIDES_${PN}-dev = "libc6-dev"
-PR = "r1"
-
# the -isystem in bitbake.conf screws up glibc do_stage
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
@@ -36,53 +35,48 @@ python __anonymous () {
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-# file://arm-machine-gmon.patch;patch=1;pnum=0 \
-# \
-# file://arm-ioperm.patch;patch=1;pnum=0 \
-# file://ldd.patch;patch=1;pnum=0 \
-SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://nptl-crosscompile.patch;patch=1 \
- file://glibc-check_pf.patch;patch=1;pnum=0 \
-# file://glibc-2.4-compile.patch;patch=1 \
-# file://glibc-2.4-openat-3.patch;patch=1 \
-# file://fixup-aeabi-syscalls.patch;patch=1 \
- file://zecke-sane-readelf.patch;patch=1 \
- file://ldd-unbash.patch;patch=1 \
- file://generic-bits_select.h \
- file://generic-bits_types.h \
- file://generic-bits_typesizes.h \
- file://generic-bits_time.h \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
+SRC_URI = "\
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
+ ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
+ file://arm-memcpy.patch;patch=1 \
+ file://arm-longlong.patch;patch=1 \
+ file://fhs-linux-paths.patch;patch=1 \
+ file://dl-cache-libcmp.patch;patch=1 \
+ file://ldsocache-varrun.patch;patch=1 \
+ file://nptl-crosscompile.patch;patch=1 \
+ file://glibc-2.5-local-dynamic-resolvconf.patch;patch=1 \
+ file://glibc-check_pf.patch;patch=1;pnum=0 \
+ file://zecke-sane-readelf.patch;patch=1 \
+ file://ldd-unbash.patch;patch=1 \
+ file://generic-bits_select.h \
+ file://generic-bits_types.h \
+ file://generic-bits_typesizes.h \
+ file://generic-bits_time.h \
+ file://etc/ld.so.conf \
+ file://generate-supported.mk \
+ file://glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch;patch=1 \
+"
# Build fails on sh3 and sh4 without additional patches
SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
-#powerpc patches to add support for soft-float
-SRC_URI_append_powerpc= " \
- file://powerpc-sqrt-hack.diff;patch=1""
+# PowerPC Patches to add support for soft-float
+SRC_URI_append_powerpc = "file://powerpc-sqrt-hack.diff;patch=1"
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
+EXTRA_OECONF = "\
+ --enable-kernel=${OLDEST_KERNEL} \
+ --without-cvs --disable-profile --disable-debug --without-gd \
+ --enable-clocale=gnu \
+ --enable-add-ons=${GLIBC_ADDONS} \
+ --with-headers=${STAGING_INCDIR} \
+ --without-selinux \
+ ${GLIBC_EXTRA_OECONF} \
+"
EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
diff --git a/packages/gnome/gconf-dbus/gconf-dbus-update.patch b/packages/gnome/gconf-dbus/gconf-dbus-update.patch
deleted file mode 100644
index 9870078b86..0000000000
--- a/packages/gnome/gconf-dbus/gconf-dbus-update.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-? gconf/gconf.service
-Index: gconf/Makefile.am
-===================================================================
-RCS file: /cvs/gnome/gconf/gconf/Makefile.am,v
-retrieving revision 1.78.4.8
-diff -u -r1.78.4.8 Makefile.am
---- gconf/Makefile.am 21 Dec 2003 14:21:15 -0000 1.78.4.8
-+++ gconf/Makefile.am 22 Jan 2005 00:30:13 -0000
-@@ -155,6 +155,7 @@
-
- libgconf_2_la_LDFLAGS = -version-info $(GCONF_CURRENT):$(GCONF_REVISION):$(GCONF_AGE) -no-undefined
- libgconf_2_la_LIBADD = $(INTLLIBS) $(DEPENDENT_LIBS) $(GCONF_IPC_LIBS)
-+libgconf_2_la_CFLAGS = $(AM_CFLAGS)
-
- if HAVE_DBUS
- servicedir = $(DBUS_SERVICE_DIR)
-Index: backends/Makefile.am
-===================================================================
-RCS file: /cvs/gnome/gconf/backends/Makefile.am,v
-retrieving revision 1.30
-diff -u -r1.30 Makefile.am
---- backends/Makefile.am 3 Nov 2003 00:19:33 -0000 1.30
-+++ backends/Makefile.am 22 Jan 2005 00:30:14 -0000
-@@ -17,6 +17,7 @@
-
- libgconfbackend_oldxml_la_LDFLAGS = -avoid-version -module -no-undefined
- libgconfbackend_oldxml_la_LIBADD = $(DEPENDENT_WITH_XML_LIBS) $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la
-+libgconfbackend_oldxml_la_CFLAGS = $(AM_CFLAGS)
-
- libgconfbackend_xml_la_SOURCES = \
- markup-backend.c \
diff --git a/packages/gnome/gconf-dbus/xml-backend-locks-compile-fix.patch b/packages/gnome/gconf-dbus/xml-backend-locks-compile-fix.patch
deleted file mode 100644
index c195aad639..0000000000
--- a/packages/gnome/gconf-dbus/xml-backend-locks-compile-fix.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- trunk/backends/xml-backend.c~ 2006-01-18 09:57:39.000000000 -0800
-+++ trunk/backends/xml-backend.c 2006-01-19 11:38:37.000000000 -0800
-@@ -115,6 +115,13 @@
-
- typedef struct _XMLSource XMLSource;
-
-+extern GConfLock*
-+gconf_get_lock (const gchar *lock_directory,
-+ GError **err);
-+extern gboolean
-+gconf_release_lock (GConfLock *lock,
-+ GError **err);
-+
- /* XMLSource **/
-
- struct _XMLSource {
diff --git a/packages/gnome/gconf-dbus/xml-backend-oldxml-Makefile.patch b/packages/gnome/gconf-dbus/xml-backend-oldxml-Makefile.patch
deleted file mode 100644
index 312a356c84..0000000000
--- a/packages/gnome/gconf-dbus/xml-backend-oldxml-Makefile.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- trunk/backends/Makefile~ 2006-01-19 09:52:22.000000000 -0800
-+++ trunk/backends/Makefile 2006-01-19 13:13:23.000000000 -0800
-@@ -84,7 +84,7 @@
- xml_test_OBJECTS = $(am_xml_test_OBJECTS)
- xml_test_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(top_builddir)/gconf/libgconf-$(MAJOR_VERSION).la \
-- $(top_builddir)/backends/libgconfbackend-oldxml.la
-+ libgconfbackend-oldxml.la
- DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
- depcomp = $(SHELL) $(top_srcdir)/depcomp
- am__depfiles_maybe = depfiles
diff --git a/packages/gnome/gconf-dbus_cvs.bb b/packages/gnome/gconf-dbus_cvs.bb
deleted file mode 100644
index 6128eac3e2..0000000000
--- a/packages/gnome/gconf-dbus_cvs.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SECTION = "x11/utils"
-DEPENDS = "gtk+ glib-2.0 dbus libxml2 popt"
-DESCRIPTION = "Settings daemon using DBUS for communication."
-LICENSE = "GPL"
-PROVIDES = "gconf"
-RPROVIDES_${PN} = "gconf"
-RPROVIDES_${PN}-dev = "gconf-dev"
-
-PV = "0.0+cvs${SRCDATE}"
-PR = "r8"
-
-SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=gconf;tag=gconf-dbus-2-6 \
- file://gconf-dbus-update.patch;patch=1;pnum=0 \
- file://69gconfd-dbus"
-
-inherit pkgconfig autotools
-S = "${WORKDIR}/gconf"
-
-FILES_${PN} += " ${libdir}/GConf/2/*.so ${libdir}/dbus-1.0 ${sysconfdir} ${datadir}/dbus*"
-
-EXTRA_OECONF = " --with-ipc=dbus --disable-gtk-doc --enable-gtk --host=${HOST_SYS} --enable-shared --disable-static"
-
-HEADERS = "gconf.h gconf-changeset.h gconf-listeners.h gconf-schema.h gconf-value.h gconf-error.h gconf-engine.h gconf-client.h gconf-enum-types.h"
-
-do_stage() {
- oe_libinstall -so -C gconf libgconf-2 ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/gconf/2/gconf/
- ( cd gconf; for i in ${HEADERS}; do install -m 0644 $i ${STAGING_INCDIR}/gconf/2/gconf/$i; done )
- install -m 0644 gconf.m4 ${STAGING_DATADIR}/aclocal/gconf-2.m4
-}
-
-do_install_append () {
- install -d ${D}/${sysconfdir}/X11/Xsession.d
- install -m 755 ${WORKDIR}/69gconfd-dbus ${D}/${sysconfdir}/X11/Xsession.d/
- install -d ${D}/${datadir}/dbus-1.0/services/
- install -m 644 gconf/gconf.service ${D}${datadir}/dbus-1.0/services/
-}
diff --git a/packages/gnome/gconf-dbus_svn.bb b/packages/gnome/gconf-dbus_svn.bb
index e7875dc72e..074b3015c2 100644
--- a/packages/gnome/gconf-dbus_svn.bb
+++ b/packages/gnome/gconf-dbus_svn.bb
@@ -1,39 +1,38 @@
-SECTION = "x11/utils"
+DESCRIPTION = "The GNOME Settings daemon using DBUS for communication."
DEPENDS = "intltool-native virtual/libintl glib-2.0 dbus dbus-glib libxml2 popt gtk-doc-native"
-DESCRIPTION = "Settings daemon using DBUS for communication."
LICENSE = "GPL"
+SECTION = "x11/utils"
PROVIDES = "gconf"
RPROVIDES_${PN} = "gconf"
RPROVIDES_${PN}-dev = "gconf-dev"
-
PV = "2.16.0+svnr${SRCREV}"
-PR = "r5"
+PR = "r0"
-SRC_URI = "svn://developer.imendio.com/svn/gconf-dbus;module=trunk;proto=http \
- file://69gconfd-dbus"
+inherit autotools pkgconfig
-inherit pkgconfig autotools
+SRC_URI = "svn://developer.imendio.com/svn/gconf-dbus;module=trunk;proto=http \
+ file://69gconfd-dbus"
S = "${WORKDIR}/trunk"
PARALLEL_MAKE = ""
-FILES_${PN} = "${libdir}/GConf-dbus/2/*.so ${libdir}/dbus-1.0 ${sysconfdir} ${datadir}/dbus* ${libdir}/*.so.* ${bindir}/* ${libexecdir}/*"
-FILES_${PN}-dbg += " ${libdir}/GConf-dbus/2/.debug"
-FILES_${PN}-dev += "${libdir}/GConf-dbus/2/*.la ${datadir}/sgml/gconf/gconf-1.0.dtd"
-
-EXTRA_OECONF = " --with-ipc=dbus --disable-gtk-doc --disable-gtk --enable-shared --disable-static"
-
+EXTRA_OECONF = "--with-ipc=dbus --disable-gtk-doc --disable-gtk --enable-shared --disable-static"
do_configure_prepend() {
- touch gtk-doc.make
+ touch gtk-doc.make
}
do_stage() {
- autotools_stage_all
- install -m 0644 gconf-2.m4 ${STAGING_DATADIR}/aclocal/gconf-2.m4
+ autotools_stage_all
+ install -m 0644 gconf-2.m4 ${STAGING_DATADIR}/aclocal/gconf-2.m4
}
-do_install_append () {
+do_install_append() {
install -d ${D}/${sysconfdir}/X11/Xsession.d
install -m 755 ${WORKDIR}/69gconfd-dbus ${D}/${sysconfdir}/X11/Xsession.d/
}
+
+FILES_${PN} = "${libdir}/GConf-dbus/2/*.so ${libdir}/dbus-1.0 ${sysconfdir} ${datadir}/dbus* ${libdir}/*.so.* ${bindir}/* ${libexecdir}/*"
+FILES_${PN}-dbg += " ${libdir}/GConf-dbus/2/.debug"
+FILES_${PN}-dev += "${libdir}/GConf-dbus/2/*.la ${datadir}/sgml/gconf/gconf-1.0.dtd"
+
diff --git a/packages/gnome/gnome-desktop.inc b/packages/gnome/gnome-desktop.inc
new file mode 100644
index 0000000000..aeabf4f41e
--- /dev/null
+++ b/packages/gnome/gnome-desktop.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "GNOME library for reading .desktop files"
+SECTION = "x11/gnome"
+LICENSE = "GPL"
+DEPENDS = "gnome-common libgnomeui"
+
+EXTRA_OECONF = "--disable-scrollkeeper"
+
+do_configure_prepend () {
+ cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
+}
+
+do_stage () {
+ autotools_stage_all
+}
+
+FILES_${PN} += "${datadir}/gnome-about"
diff --git a/packages/gnome/gnome-desktop_2.10.2.bb b/packages/gnome/gnome-desktop_2.10.2.bb
index b8e098f40c..2bf249ddb6 100644
--- a/packages/gnome/gnome-desktop_2.10.2.bb
+++ b/packages/gnome/gnome-desktop_2.10.2.bb
@@ -1,17 +1,5 @@
-LICENSE = "GPL"
-SECTION = "x11/gnome"
-PR = "r1"
-DESCRIPTION = "GNOME library for reading .desktop files"
-inherit gnome pkgconfig
-
-DEPENDS = "gnome-common libgnomeui"
+require gnome-desktop.inc
-EXTRA_AUTORECONF = "-I ${STAGING_DATADIR}/aclocal/gnome2-macros"
-
-do_configure_prepend () {
- cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
-}
+PR = "r1"
-do_stage () {
-autotools_stage_all
-}
+inherit gnome pkgconfig
diff --git a/packages/gnome/gnome-desktop_2.16.1.bb b/packages/gnome/gnome-desktop_2.16.1.bb
index 69de709350..fb45b134ae 100644
--- a/packages/gnome/gnome-desktop_2.16.1.bb
+++ b/packages/gnome/gnome-desktop_2.16.1.bb
@@ -1,25 +1,9 @@
-LICENSE = "GPL"
-SECTION = "x11/gnome"
+require gnome-desktop.inc
+
PR = "r2"
-DESCRIPTION = "GNOME library for reading .desktop files"
inherit gnome pkgconfig
-DEPENDS = "gnome-common gnome-doc-utils libgnomeui"
+DEPENDS += "gnome-doc-utils"
SRC_URI += "file://scrollkeeper.patch;patch=1 \
file://no-desktop-docs.patch;patch=1;pnum=0"
-
-EXTRA_OECONF = "--disable-scrollkeeper"
-
-EXTRA_AUTORECONF = "-I ${STAGING_DATADIR}/aclocal/gnome2-macros"
-
-do_configure_prepend () {
- cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
-}
-
-FILES_${PN} += "${datadir}/gnome-about"
-
-
-do_stage () {
- autotools_stage_all
-}
diff --git a/packages/gnome/gnome-desktop_2.18.3.bb b/packages/gnome/gnome-desktop_2.18.3.bb
index c2888bf2a4..7b9a5932e1 100644
--- a/packages/gnome/gnome-desktop_2.18.3.bb
+++ b/packages/gnome/gnome-desktop_2.18.3.bb
@@ -1,23 +1,10 @@
-LICENSE = "GPL"
-SECTION = "x11/gnome"
+require gnome-desktop.inc
+
PR = "r2"
-DESCRIPTION = "GNOME library for reading .desktop files"
+
inherit gnome pkgconfig
-DEPENDS = "gnome-common gnome-doc-utils gnome-vfs libgnomeui"
+DEPENDS += "gnome-doc-utils gnome-vfs"
SRC_URI += "file://scrollkeeper.patch;patch=1 \
file://no-desktop-docs.patch;patch=1;pnum=0"
-
-EXTRA_OECONF = "--disable-scrollkeeper"
-
-do_configure_prepend () {
- cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
-}
-
-FILES_${PN} += "${datadir}/gnome-about"
-
-
-do_stage () {
- autotools_stage_all
-}
diff --git a/packages/gnome/gnome-desktop_2.7.90.bb b/packages/gnome/gnome-desktop_2.7.90.bb
index c7fd61470d..53b70245ca 100644
--- a/packages/gnome/gnome-desktop_2.7.90.bb
+++ b/packages/gnome/gnome-desktop_2.7.90.bb
@@ -1,17 +1,12 @@
-LICENSE = "GPL"
-SECTION = "x11/gnome"
+require gnome-desktop.inc
+
PR = "r0"
-DESCRIPTION = "GNOME library for reading .desktop files"
-inherit gnome
-DEPENDS = "gnome-common libgnomeui"
+inherit gnome
+EXTRA_OECONF = ""
EXTRA_AUTORECONF = "-I ${STAGING_DATADIR}/aclocal/gnome2-macros"
-do_configure_prepend () {
- cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S}
-}
-
do_stage () {
install -d ${STAGING_INCDIR}/gnome-desktop-2.0/libgnome/
# install -d ${STAGING_INCDIR}/gnome-desktop-2.0/libgnomeui/
diff --git a/packages/gnome/gnome-doc-utils.inc b/packages/gnome/gnome-doc-utils.inc
new file mode 100644
index 0000000000..ff62257aa8
--- /dev/null
+++ b/packages/gnome/gnome-doc-utils.inc
@@ -0,0 +1,16 @@
+LICENSE = "GPL LGPL"
+DEPENDS = "libxml2 libxslt libxslt-native"
+
+PR = "r1"
+
+inherit gnome
+
+EXTRA_OECONF = "--disable-scrollkeeper"
+
+do_stage() {
+ mkdir -p ${STAGING_DATADIR}/xml/gnome/xslt/
+ cp -pPr ${S}/xslt/* ${STAGING_DATADIR}/xml/gnome/xslt/
+ autotools_stage_all
+}
+
+FILES_${PN} += "${datadir}/xml*"
diff --git a/packages/gnome/gnome-doc-utils_0.10.3.bb b/packages/gnome/gnome-doc-utils_0.10.3.bb
index 315cdbd160..cfb4788076 100644
--- a/packages/gnome/gnome-doc-utils_0.10.3.bb
+++ b/packages/gnome/gnome-doc-utils_0.10.3.bb
@@ -1,16 +1,3 @@
-LICENSE = "GPL LGPL"
-DEPENDS = "libxml2 libxslt"
+require gnome-doc-utils.inc
PR = "r0"
-
-inherit gnome
-
-EXTRA_OECONF = "--disable-scrollkeeper"
-
-FILES_${PN} += "${datadir}/xml*"
-
-do_stage() {
- mkdir -p ${STAGING_DATADIR}/xml/gnome/xslt/
- cp -pPr ${S}/xslt/* ${STAGING_DATADIR}/xml/gnome/xslt/
- autotools_stage_all
-}
diff --git a/packages/gnome/gnome-doc-utils_0.12.0.bb b/packages/gnome/gnome-doc-utils_0.12.0.bb
index f190a5ae13..2499ac36e4 100644
--- a/packages/gnome/gnome-doc-utils_0.12.0.bb
+++ b/packages/gnome/gnome-doc-utils_0.12.0.bb
@@ -1,16 +1,3 @@
-LICENSE = "GPL/LGPL"
-DEPENDS = "libxml2 libxslt"
+require gnome-doc-utils.inc
PR = "r1"
-
-inherit gnome
-
-EXTRA_OECONF = "--disable-scrollkeeper"
-
-FILES_${PN} += "${datadir}/xml*"
-
-do_stage() {
- mkdir -p ${STAGING_DATADIR}/xml/gnome/xslt/
- cp -pPr ${S}/xslt/* ${STAGING_DATADIR}/xml/gnome/xslt/
- autotools_stage_all
-}
diff --git a/packages/gnome/gnome-doc-utils_0.7.1.bb b/packages/gnome/gnome-doc-utils_0.7.1.bb
index 86a36c4bd7..2499ac36e4 100644
--- a/packages/gnome/gnome-doc-utils_0.7.1.bb
+++ b/packages/gnome/gnome-doc-utils_0.7.1.bb
@@ -1,16 +1,3 @@
-LICENSE = "GPL LGPL"
-DEPENDS = "libxml2 libxslt"
+require gnome-doc-utils.inc
PR = "r1"
-
-inherit gnome
-
-EXTRA_OECONF = "--disable-scrollkeeper"
-
-FILES_${PN} += "${datadir}/xml*"
-
-do_stage() {
- mkdir -p ${STAGING_DATADIR}/xml/gnome/xslt/
- cp -pPr ${S}/xslt/* ${STAGING_DATADIR}/xml/gnome/xslt/
- autotools_stage_all
-}
diff --git a/packages/gnome/kanjipad_svn.bb b/packages/gnome/kanjipad_svn.bb
deleted file mode 100644
index 1e0d943da7..0000000000
--- a/packages/gnome/kanjipad_svn.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "KanjiPad is a very simple program for handwriting recognition"
-LICENSE = "GPLv2"
-
-DEPENDS = "gtk+ perl-native"
-
-PV = "2.0.0+svn${SRCDATE}"
-
-inherit pkgconfig
-
-SRC_URI = "svn://svn.gnome.org/svn/${PN}/;module=trunk"
-
-S = "${WORKDIR}/trunk"
-
-do_compile_prepend() {
- export CFLAGS='${TARGET_CFLAGS} -DFOR_PILOT_COMPAT -DKP_LIBDIR="${libdir}/kanjipad" -DBINDIR="${bindir}" `pkg-config --cflags gtk+-2.0` `pkg-config --cflags glib-2.0`'
-}
-
-
-
diff --git a/packages/gnu-config/gnu-config_20050701.bb b/packages/gnu-config/gnu-config_20050701.bb
index 2f1b6eb785..8ee0a32120 100644
--- a/packages/gnu-config/gnu-config_20050701.bb
+++ b/packages/gnu-config/gnu-config_20050701.bb
@@ -29,5 +29,4 @@ do_install () {
install -m 0644 config.guess config.sub ${D}${datadir}/gnu-config/
}
-PACKAGES = "${PN}"
FILES_${PN} = "${bindir} ${datadir}/gnu-config"
diff --git a/packages/gnuplot/files/subdirs.patch b/packages/gnuplot/files/subdirs.patch
index 69c7753973..8c7d1f0d35 100644
--- a/packages/gnuplot/files/subdirs.patch
+++ b/packages/gnuplot/files/subdirs.patch
@@ -1,16 +1,11 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- gnuplot-4.0.0/Makefile.am~nodocs
-+++ gnuplot-4.0.0/Makefile.am
+--- /tmp/Makefile.am 2007-08-23 13:10:15.560659023 +0200
++++ gnuplot-4.2.0/Makefile.am 2007-08-23 13:10:34.961764629 +0200
@@ -1,7 +1,7 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
AUTOMAKE_OPTIONS = foreign 1.2h
--SUBDIRS = config m4 term src docs lisp man demo tutorial
-+SUBDIRS = config m4 term src man tutorial
+-SUBDIRS = config m4 term src docs $(LISPDIR) man demo tutorial share
++SUBDIRS = config m4 term src $(LISPDIR) man share
EXTRA_DIST = BUGS CodeStyle Copyright FAQ GNUmakefile INSTALL INSTALL.gnu \
Makefile.maint PATCHLEVEL PGPKEYS PORTING README README.1ST README.exp \
diff --git a/packages/gnuplot/files/term.patch b/packages/gnuplot/files/term.patch
index 2979b5ec9e..41aa8e7a97 100644
--- a/packages/gnuplot/files/term.patch
+++ b/packages/gnuplot/files/term.patch
@@ -1,14 +1,14 @@
---- gnuplot-4.0.0/src/term.h.old 2005-03-01 15:17:46.424111687 +0000
-+++ gnuplot-4.0.0/src/term.h 2005-03-01 15:18:50.961405665 +0000
-@@ -54,6 +54,7 @@
+--- gnuplot-4.2.0/src/term.h.old 2007-11-16 01:21:09.000000000 -0600
++++ gnuplot-4.2.0/src/term.h 2007-11-16 01:22:45.000000000 -0600
+@@ -70,6 +70,7 @@
*/
#ifdef SHORT_TERMLIST
# include "dumb.trm" /* dumb terminal */
+# include "qtopia.trm" /* QTopia terminal */
- # include "post.trm" /* postscript */
- # include "table.trm" /* built-in, but used for the documentation */
- # if !(defined(OS2) || defined(MSDOS) || defined(_Windows) || defined(ATARI) || defined(MTOS) || defined(AMIGA))
-@@ -432,6 +433,9 @@
+
+ # ifdef GP_ENH_EST
+ # include "estimate.trm" /* used for enhanced text processing */
+@@ -436,6 +437,9 @@
/* TeXDraw drawing package for LaTeX */
#include "texdraw.trm"
diff --git a/packages/busybox/busybox-1.5.0/angstrom/.mtn2git_empty b/packages/gnuplot/gnuplot-4.0.0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.5.0/angstrom/.mtn2git_empty
+++ b/packages/gnuplot/gnuplot-4.0.0/.mtn2git_empty
diff --git a/packages/gnuplot/files/debian-separate-x11-package.patch b/packages/gnuplot/gnuplot-4.0.0/debian-separate-x11-package.patch
index 7afa0ee00e..7afa0ee00e 100644
--- a/packages/gnuplot/files/debian-separate-x11-package.patch
+++ b/packages/gnuplot/gnuplot-4.0.0/debian-separate-x11-package.patch
diff --git a/packages/gnuplot/files/matrix.patch b/packages/gnuplot/gnuplot-4.0.0/matrix.patch
index 10f56d9f6a..10f56d9f6a 100644
--- a/packages/gnuplot/files/matrix.patch
+++ b/packages/gnuplot/gnuplot-4.0.0/matrix.patch
diff --git a/packages/gnuplot/gnuplot-4.0.0/subdirs.patch b/packages/gnuplot/gnuplot-4.0.0/subdirs.patch
new file mode 100644
index 0000000000..69c7753973
--- /dev/null
+++ b/packages/gnuplot/gnuplot-4.0.0/subdirs.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gnuplot-4.0.0/Makefile.am~nodocs
++++ gnuplot-4.0.0/Makefile.am
+@@ -1,7 +1,7 @@
+ ## Process this file with automake to produce Makefile.in -*-Makefile-*-
+ AUTOMAKE_OPTIONS = foreign 1.2h
+
+-SUBDIRS = config m4 term src docs lisp man demo tutorial
++SUBDIRS = config m4 term src man tutorial
+
+ EXTRA_DIST = BUGS CodeStyle Copyright FAQ GNUmakefile INSTALL INSTALL.gnu \
+ Makefile.maint PATCHLEVEL PGPKEYS PORTING README README.1ST README.exp \
diff --git a/packages/gnuplot/gnuplot-4.0.0/term.patch b/packages/gnuplot/gnuplot-4.0.0/term.patch
new file mode 100644
index 0000000000..2979b5ec9e
--- /dev/null
+++ b/packages/gnuplot/gnuplot-4.0.0/term.patch
@@ -0,0 +1,20 @@
+--- gnuplot-4.0.0/src/term.h.old 2005-03-01 15:17:46.424111687 +0000
++++ gnuplot-4.0.0/src/term.h 2005-03-01 15:18:50.961405665 +0000
+@@ -54,6 +54,7 @@
+ */
+ #ifdef SHORT_TERMLIST
+ # include "dumb.trm" /* dumb terminal */
++# include "qtopia.trm" /* QTopia terminal */
+ # include "post.trm" /* postscript */
+ # include "table.trm" /* built-in, but used for the documentation */
+ # if !(defined(OS2) || defined(MSDOS) || defined(_Windows) || defined(ATARI) || defined(MTOS) || defined(AMIGA))
+@@ -432,6 +433,9 @@
+ /* TeXDraw drawing package for LaTeX */
+ #include "texdraw.trm"
+
++/* Qtopia */
++#include "qtopia.trm"
++
+ /* METAFONT */
+ #include "metafont.trm"
+
diff --git a/packages/gnuplot/gnuplot-4.2.0/subdirs.patch b/packages/gnuplot/gnuplot-4.2.0/subdirs.patch
deleted file mode 100644
index 8c7d1f0d35..0000000000
--- a/packages/gnuplot/gnuplot-4.2.0/subdirs.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/Makefile.am 2007-08-23 13:10:15.560659023 +0200
-+++ gnuplot-4.2.0/Makefile.am 2007-08-23 13:10:34.961764629 +0200
-@@ -1,7 +1,7 @@
- ## Process this file with automake to produce Makefile.in -*-Makefile-*-
- AUTOMAKE_OPTIONS = foreign 1.2h
-
--SUBDIRS = config m4 term src docs $(LISPDIR) man demo tutorial share
-+SUBDIRS = config m4 term src $(LISPDIR) man share
-
- EXTRA_DIST = BUGS CodeStyle Copyright FAQ GNUmakefile INSTALL INSTALL.gnu \
- Makefile.maint PATCHLEVEL PGPKEYS PORTING README README.1ST README.exp \
diff --git a/packages/gnuplot/gnuplot-4.2.0/term.patch b/packages/gnuplot/gnuplot-4.2.0/term.patch
deleted file mode 100644
index 41aa8e7a97..0000000000
--- a/packages/gnuplot/gnuplot-4.2.0/term.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- gnuplot-4.2.0/src/term.h.old 2007-11-16 01:21:09.000000000 -0600
-+++ gnuplot-4.2.0/src/term.h 2007-11-16 01:22:45.000000000 -0600
-@@ -70,6 +70,7 @@
- */
- #ifdef SHORT_TERMLIST
- # include "dumb.trm" /* dumb terminal */
-+# include "qtopia.trm" /* QTopia terminal */
-
- # ifdef GP_ENH_EST
- # include "estimate.trm" /* used for enhanced text processing */
-@@ -436,6 +437,9 @@
- /* TeXDraw drawing package for LaTeX */
- #include "texdraw.trm"
-
-+/* Qtopia */
-+#include "qtopia.trm"
-+
- /* METAFONT */
- #include "metafont.trm"
-
diff --git a/packages/gnuplot/gnuplot_4.2.0.bb b/packages/gnuplot/gnuplot_4.2.0.bb
deleted file mode 100644
index 1df0c9fa21..0000000000
--- a/packages/gnuplot/gnuplot_4.2.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require gnuplot.inc
-
-PR = "r1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/gnuplot/${PN}-${PV}.tar.gz \
- http://www.mneuroth.de/privat/zaurus/qtplot-0.2.tar.gz \
- file://subdirs.patch;patch=1 \
- file://term.patch;patch=1 \
- file://gnuplot.desktop \
- file://gnuplot.png"
diff --git a/packages/gnuplot/gnuplot_4.2.2.bb b/packages/gnuplot/gnuplot_4.2.2.bb
new file mode 100644
index 0000000000..478f6e2b0f
--- /dev/null
+++ b/packages/gnuplot/gnuplot_4.2.2.bb
@@ -0,0 +1,10 @@
+require gnuplot.inc
+
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gnuplot/${PN}-${PV}.tar.gz \
+ http://www.mneuroth.de/privat/zaurus/qtplot-0.2.tar.gz \
+ file://subdirs.patch;patch=1 \
+ file://term.patch;patch=1 \
+ file://gnuplot.desktop \
+ file://gnuplot.png"
diff --git a/packages/gnuplot/gnuplot_cvs.bb b/packages/gnuplot/gnuplot_cvs.bb
new file mode 100644
index 0000000000..d63d31a492
--- /dev/null
+++ b/packages/gnuplot/gnuplot_cvs.bb
@@ -0,0 +1,17 @@
+require gnuplot.inc
+
+PV = "4.3.0+cvs${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "cvs://anonymous@gnuplot.cvs.sourceforge.net/cvsroot/${PN};module=${PN} \
+ http://www.mneuroth.de/privat/zaurus/qtplot-0.2.tar.gz \
+ file://subdirs.patch;patch=1 \
+ file://term.patch;patch=1 \
+ file://gnuplot.desktop \
+ file://gnuplot.png"
+
+S = "${WORKDIR}/${PN}"
+
+do_configure_prepend() {
+ ./prepare
+}
diff --git a/packages/gpe-conf/gpe-conf_svn.bb b/packages/gpe-conf/gpe-conf_svn.bb
index 266053073a..dfa7a8bce6 100644
--- a/packages/gpe-conf/gpe-conf_svn.bb
+++ b/packages/gpe-conf/gpe-conf_svn.bb
@@ -18,7 +18,7 @@ SRC_URI = "${GPE_SVN}"
S = "${WORKDIR}/${PN}"
-PACKAGES = "gpe-conf gpe-conf-panel"
+PACKAGES = "${PN}-dbg gpe-conf gpe-conf-panel"
FILES_${PN} = "${sysconfdir} ${bindir} ${datadir}/pixmaps \
${datadir}/applications/gpe-conf-* ${datadir}/gpe/pixmaps \
diff --git a/packages/gpe-filemanager/gpe-filemanager_0.31.bb b/packages/gpe-filemanager/gpe-filemanager_0.31.bb
new file mode 100644
index 0000000000..84bf2d3d2f
--- /dev/null
+++ b/packages/gpe-filemanager/gpe-filemanager_0.31.bb
@@ -0,0 +1,13 @@
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit autotools gpe
+
+PR = "r0"
+LICENSE = "GPL"
+DESCRIPTION = "GPE file manager"
+DEPENDS = "libgpewidget gnome-vfs dbus-glib"
+SECTION = "gpe"
+RDEPENDS = "gpe-icons"
+RRECOMMENDS = "gnome-vfs-plugin-file gnome-vfs-plugin-smb gnome-vfs-plugin-ftp gnome-vfs-plugin-computer gnome-vfs-plugin-network gnome-vfs-plugin-sftp gnome-vfs-plugin-http"
+
+FILES_${PN} += " ${datadir}/gpe"
diff --git a/packages/gpe-login/files/chvt-keylaunch.patch b/packages/gpe-login/files/chvt-keylaunch.patch
index 5e62a1107e..798c059ccc 100644
--- a/packages/gpe-login/files/chvt-keylaunch.patch
+++ b/packages/gpe-login/files/chvt-keylaunch.patch
@@ -1,11 +1,12 @@
---- gpe-login-0.86/gpe-login.keylaunchrc.orig 2006-05-28 20:38:39.846547024 +0200
-+++ gpe-login-0.86/gpe-login.keylaunchrc 2006-05-28 20:38:56.800969560 +0200
-@@ -1,3 +1,8 @@
- key=???XF86AudioRecord:xcalibrate:/usr/bin/gpe-xcalibrate.sh
- key=???XF86PowerDown:-:/usr/bin/apm --suspend
- key=???Held XF86PowerDown:-:bl toggle
+--- /tmp/gpe-login.keylaunchrc 2006-05-29 23:46:42.806081576 +0200
++++ gpe-login-0.87/gpe-login.keylaunchrc 2006-05-29 23:48:18.476537456 +0200
+@@ -1,3 +1,9 @@
+ key=????XF86AudioRecord:xcalibrate:/usr/bin/gpe-xcalibrate.sh
+ key=????XF86PowerDown:-:/usr/bin/apm --suspend
+ key=????Held XF86PowerDown:-:bl toggle
+
+# VT changing
+key=...*Left:-:~chvt 1
+key=...*Right:-:~chvt 3
+key=...*Escape:-:~/etc/init.d/gpe-dm stop
++
diff --git a/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch b/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch
index afad073acf..d1745f0897 100644
--- a/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch
+++ b/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch
@@ -1,3 +1,5 @@
+upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=124
+
diff -r 976c01632fea gpe-login.keylaunchrc
--- a/gpe-login.keylaunchrc Sun Nov 25 22:39:23 2007 +0200
+++ b/gpe-login.keylaunchrc Mon Nov 26 01:12:14 2007 +0200
diff --git a/packages/gpe-login/files/lock-on-supend.patch b/packages/gpe-login/files/lock-on-supend.patch
index 2aeb20f1ea..0b00a75ead 100644
--- a/packages/gpe-login/files/lock-on-supend.patch
+++ b/packages/gpe-login/files/lock-on-supend.patch
@@ -1,3 +1,6 @@
+upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=125
+status: accepted in 0.91
+
Lock screen when device goes to suspend, not after some time has passed
since resume and they stole your data from the unprotected screen.
diff --git a/packages/gpe-login/files/size-autolock-properly.patch b/packages/gpe-login/files/size-autolock-properly.patch
index b8e2cd6f4f..cf2978f34d 100644
--- a/packages/gpe-login/files/size-autolock-properly.patch
+++ b/packages/gpe-login/files/size-autolock-properly.patch
@@ -1,3 +1,5 @@
+upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=152
+
# HG changeset patch
# User "Paul Sokolovsky <pfalcon@users.sourceforge.net>"
# Date 1196345352 -7200
diff --git a/packages/busybox/busybox-1.5.0/mnci/.mtn2git_empty b/packages/gpe-login/gpe-login-0.86/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.5.0/mnci/.mtn2git_empty
+++ b/packages/gpe-login/gpe-login-0.86/.mtn2git_empty
diff --git a/packages/gpe-login/gpe-login-0.86/chvt-keylaunch.patch b/packages/gpe-login/gpe-login-0.86/chvt-keylaunch.patch
new file mode 100644
index 0000000000..5e62a1107e
--- /dev/null
+++ b/packages/gpe-login/gpe-login-0.86/chvt-keylaunch.patch
@@ -0,0 +1,11 @@
+--- gpe-login-0.86/gpe-login.keylaunchrc.orig 2006-05-28 20:38:39.846547024 +0200
++++ gpe-login-0.86/gpe-login.keylaunchrc 2006-05-28 20:38:56.800969560 +0200
+@@ -1,3 +1,8 @@
+ key=???XF86AudioRecord:xcalibrate:/usr/bin/gpe-xcalibrate.sh
+ key=???XF86PowerDown:-:/usr/bin/apm --suspend
+ key=???Held XF86PowerDown:-:bl toggle
++
++# VT changing
++key=...*Left:-:~chvt 1
++key=...*Right:-:~chvt 3
++key=...*Escape:-:~/etc/init.d/gpe-dm stop
diff --git a/packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch b/packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch
deleted file mode 100644
index 798c059ccc..0000000000
--- a/packages/gpe-login/gpe-login-0.90/chvt-keylaunch.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- /tmp/gpe-login.keylaunchrc 2006-05-29 23:46:42.806081576 +0200
-+++ gpe-login-0.87/gpe-login.keylaunchrc 2006-05-29 23:48:18.476537456 +0200
-@@ -1,3 +1,9 @@
- key=????XF86AudioRecord:xcalibrate:/usr/bin/gpe-xcalibrate.sh
- key=????XF86PowerDown:-:/usr/bin/apm --suspend
- key=????Held XF86PowerDown:-:bl toggle
-+
-+# VT changing
-+key=...*Left:-:~chvt 1
-+key=...*Right:-:~chvt 3
-+key=...*Escape:-:~/etc/init.d/gpe-dm stop
-+
diff --git a/packages/gpe-login/gpe-login_0.91.bb b/packages/gpe-login/gpe-login_0.91.bb
new file mode 100644
index 0000000000..16d9e471d7
--- /dev/null
+++ b/packages/gpe-login/gpe-login_0.91.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "GPE user login screen"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
+RDEPENDS = "xkbd gpe-theme-clearlooks"
+RPROVIDES_${PN} = "gpe-session-starter"
+PR = "r0"
+
+SRC_URI_OVERRIDES_PACKAGE_ARCH = "1"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+
+
+SRC_URI += "file://removeblue-fontsize8.patch;patch=1"
+SRC_URI += " file://chvt-keylaunch.patch;patch=1 "
+SRC_URI += " file://gpe-xcalibrate-rises-from-dead.patch;patch=1 "
+SRC_URI += " file://size-autolock-properly.patch;patch=1 "
+SRC_URI += " file://c-locale.patch;patch=1 "
+
+SRC_URI_append_spitz = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+SRC_URI_append_akita = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+SRC_URI_append_c7x0 = "file://brightness-adjust-keyluanchrc.patch;patch=1"
+
diff --git a/packages/gpe-mini-browser/gpe-mini-browser2_svn.bb b/packages/gpe-mini-browser/gpe-mini-browser2_svn.bb
new file mode 100644
index 0000000000..8b56e23630
--- /dev/null
+++ b/packages/gpe-mini-browser/gpe-mini-browser2_svn.bb
@@ -0,0 +1,21 @@
+DEPENDS = "gtk+ glib-2.0 libgpewidget webkit-gtk"
+PV = "0.0.1+svn${SRCDATE}"
+PR = "r0"
+
+inherit autotools
+
+SRC_URI = "${GPE_EXTRA_SVN}"
+
+S = "${WORKDIR}/gpe-mini-browser2"
+
+do_install() {
+ install -d ${D}/usr/share/applications
+ install -m 0644 ${S}/gpe-mini-browser2.desktop ${D}/usr/share/applications/gpe-mini-browser2.desktop
+ install -d ${D}/usr/share/pixmaps
+ install -m 0644 ${S}/gpe-mini-browser2.png ${D}/usr/share/pixmaps/gpe-mini-browser2.png
+ autotools_do_install
+}
+
+require gpe-mini-browser.inc
+
+#DEFAULT_PREFERENCE = "-1"
diff --git a/packages/busybox/busybox-1.5.0/nylon/.mtn2git_empty b/packages/gpephone/calendar2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.5.0/nylon/.mtn2git_empty
+++ b/packages/gpephone/calendar2/.mtn2git_empty
diff --git a/packages/gpephone/calendar2/disable-broken-tests.patch b/packages/gpephone/calendar2/disable-broken-tests.patch
new file mode 100644
index 0000000000..fa3102f5a0
--- /dev/null
+++ b/packages/gpephone/calendar2/disable-broken-tests.patch
@@ -0,0 +1,9 @@
+--- calendar2/Makefile.am~ 2008-01-24 16:54:38.000000000 +0100
++++ calendar2/Makefile.am 2008-01-24 16:54:38.000000000 +0100
+@@ -1,5 +1,5 @@
+ #SUBDIRS = src announce atd schedule test res po
+-SUBDIRS = src test res po
++SUBDIRS = src res po
+
+ desktopdir = $(GPE_DIR)/share/applications
+ desktop_in_files = cal.desktop.in
diff --git a/packages/gpephone/calendar2_svn.bb b/packages/gpephone/calendar2_svn.bb
index a68b8824f3..c066fc77c0 100644
--- a/packages/gpephone/calendar2_svn.bb
+++ b/packages/gpephone/calendar2_svn.bb
@@ -3,13 +3,14 @@ LICENSE = "LiPS"
SECTION = "gpe"
PRIORITY = "optional"
PV = "0.0+svnr-${SRCREV}"
-PR = "r0"
+PR = "r1"
DEPENDS = "gtk+ libgpewidget libgpephone libgemwidget dbus-glib libcalenabler2 libiac"
inherit gpephone autotools
-SRC_URI = "${GPEPHONE_SVN}"
+SRC_URI = "${GPEPHONE_SVN} \
+ file://disable-broken-tests.patch;patch=1"
S = ${WORKDIR}/${PN}
diff --git a/packages/gpephone/libgpephone_svn.bb b/packages/gpephone/libgpephone_svn.bb
index 255d251eff..ce960ac3cc 100644
--- a/packages/gpephone/libgpephone_svn.bb
+++ b/packages/gpephone/libgpephone_svn.bb
@@ -6,8 +6,10 @@ DEPENDS = "gtk+ gtk-doc dbus-glib"
PV = "0.4+svnr-${SRCREV}"
PR = "r0"
-SRC_URI = "${GPEPHONE_SVN}"
inherit gpephone pkgconfig autotools
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
do_stage () {
autotools_stage_all
diff --git a/packages/gpephone/libtapi_svn.bb b/packages/gpephone/libtapi_svn.bb
new file mode 100644
index 0000000000..68e578728a
--- /dev/null
+++ b/packages/gpephone/libtapi_svn.bb
@@ -0,0 +1,17 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS telephony library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ libglade libgsmd"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libvoc_svn.bb b/packages/gpephone/libvoc_svn.bb
new file mode 100644
index 0000000000..3389c7d10a
--- /dev/null
+++ b/packages/gpephone/libvoc_svn.bb
@@ -0,0 +1,17 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS voice call library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ libglade libgsmd"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpgme/gpgme.inc b/packages/gpgme/gpgme.inc
new file mode 100644
index 0000000000..dc8df2c85f
--- /dev/null
+++ b/packages/gpgme/gpgme.inc
@@ -0,0 +1,27 @@
+DESCRIPTION = "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG easier for applications"
+HOMEPAGE = "http://www.gnupg.org/gpgme.html"
+LICENSE = "GPL"
+DEPENDS = "libgpg-error pth libassuan"
+
+SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-${PV}.tar.gz"
+
+EXTRA_OECONF = "--with-pth=${STAGING_DIR}/${HOST_SYS} --without-pth-test --with-gpg=${bindir}/gpg --without-gpgsm"
+
+LEAD_SONAME = "libgpgme.so"
+
+inherit autotools binconfig
+
+do_stage() {
+ autotools_stage_includes
+
+ install -d ${STAGING_LIBDIR}
+ oe_libinstall -C gpgme -so libgpgme ${STAGING_LIBDIR}
+ oe_libinstall -C gpgme -so libgpgme-pth ${STAGING_LIBDIR}
+ oe_libinstall -C gpgme -so libgpgme-pthread ${STAGING_LIBDIR}
+
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 gpgme/gpgme.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+FILES_${PN} = "${libdir}/libgpgme*.so.*"
+FILES_${PN}-dev += "${bindir}/gpgme-config"
diff --git a/packages/gpgme/gpgme_1.0.0.bb b/packages/gpgme/gpgme_1.0.0.bb
index 8292991a89..2a8923ba4c 100644
--- a/packages/gpgme/gpgme_1.0.0.bb
+++ b/packages/gpgme/gpgme_1.0.0.bb
@@ -1,22 +1,3 @@
-LICENSE = "GPL"
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-${PV}.tar.gz"
-PR = "r1"
-
-DEPENDS = "libgpg-error pth libassuan"
-
-EXTRA_OECONF = "--with-pth=${STAGING_DIR}/${HOST_SYS} --without-pth-test --with-gpg=${bindir}/gpg --without-gpgsm"
-
-inherit autotools binconfig
-
-do_stage() {
- autotools_stage_includes
-
- install -d ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme-pth ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme-pthread ${STAGING_LIBDIR}
-
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 gpgme/gpgme.m4 ${STAGING_DATADIR}/aclocal/
-}
+require gpgme.inc
+PR = "r2"
diff --git a/packages/gpgme/gpgme_1.0.3.bb b/packages/gpgme/gpgme_1.0.3.bb
index 8292991a89..2a8923ba4c 100644
--- a/packages/gpgme/gpgme_1.0.3.bb
+++ b/packages/gpgme/gpgme_1.0.3.bb
@@ -1,22 +1,3 @@
-LICENSE = "GPL"
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-${PV}.tar.gz"
-PR = "r1"
-
-DEPENDS = "libgpg-error pth libassuan"
-
-EXTRA_OECONF = "--with-pth=${STAGING_DIR}/${HOST_SYS} --without-pth-test --with-gpg=${bindir}/gpg --without-gpgsm"
-
-inherit autotools binconfig
-
-do_stage() {
- autotools_stage_includes
-
- install -d ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme-pth ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme-pthread ${STAGING_LIBDIR}
-
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 gpgme/gpgme.m4 ${STAGING_DATADIR}/aclocal/
-}
+require gpgme.inc
+PR = "r2"
diff --git a/packages/gpgme/gpgme_1.1.4.bb b/packages/gpgme/gpgme_1.1.4.bb
index d78cc88cef..2b8b07c90e 100644
--- a/packages/gpgme/gpgme_1.1.4.bb
+++ b/packages/gpgme/gpgme_1.1.4.bb
@@ -1,22 +1,3 @@
-LICENSE = "GPL"
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-${PV}.tar.bz2"
-PR = "r1"
-
-DEPENDS = "libgpg-error pth libassuan"
-
-EXTRA_OECONF = "--with-pth=${STAGING_DIR}/${HOST_SYS} --without-pth-test --with-gpg=${bindir}/gpg --without-gpgsm"
-
-inherit autotools binconfig
-
-do_stage() {
- autotools_stage_includes
-
- install -d ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme-pth ${STAGING_LIBDIR}
- oe_libinstall -C gpgme -so libgpgme-pthread ${STAGING_LIBDIR}
-
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 gpgme/gpgme.m4 ${STAGING_DATADIR}/aclocal/
-}
+require gpgme.inc
+PR = "r3"
diff --git a/packages/gpsd/gpsd.inc b/packages/gpsd/gpsd.inc
index 237971c9c7..f7952e0297 100644
--- a/packages/gpsd/gpsd.inc
+++ b/packages/gpsd/gpsd.inc
@@ -3,7 +3,7 @@ SECTION = "console/network"
PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "dbus-glib ncurses python"
-RDEPENDS = "gpsd-conf"
+RDEPENDS_${PN} = "gpsd-conf gpsd-gpsctl"
EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
--x-libraries=${STAGING_LIBDIR} \
@@ -12,12 +12,12 @@ EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
SRC_URI = "http://download.berlios.de/gpsd/gpsd-${PV}.tar.gz \
file://gpsd-default \
- file://gps-hardware \
+ file://gps-hardware \
file://gpsd"
SRC_URI_append_fic-gta01 = " \
- file://restart_gllin.sh \
- "
+ file://restart_gllin.sh \
+"
inherit autotools update-rc.d
@@ -47,7 +47,7 @@ do_install_append() {
install -d ${D}/${sysconfdir}/init.d
install -d ${D}/dev
install -m 0755 ${WORKDIR}/gpsd ${D}/${sysconfdir}/init.d/
- install -m 0755 ${WORKDIR}/gps-hardware ${D}/${sysconfdir}/init.d/gps-hardware.default
+ install -m 0755 ${WORKDIR}/gps-hardware ${D}/${sysconfdir}/init.d/gps-hardware.default
install -d ${D}/${sysconfdir}/default
install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd.default
}
@@ -69,14 +69,18 @@ pkg_postrm_${PN}-conf() {
SRC_URI_OVERRIDES_PACKAGE_ARCH = "0"
-PACKAGES =+ "libgps python-pygps gpsd-conf"
+PACKAGES =+ "libgps python-pygps gpsd-conf gpsd-gpsctl gps-utils"
PACKAGE_ARCH_gpsd-conf = "${MACHINE_ARCH}"
FILES_libgps = "${libdir}/*.so.*"
FILES_gpsd-conf = "${sysconfdir}"
+FILES_gpsd-gpsctl = "${bindir}/gpsctl"
+FILES_gps-utils = "${bindir}/*"
+# might split them up even more fine granular
+RDEPENDS_gps-utils = "python-pygps"
DESCRIPTION_python-pygps = "Python bindings to gpsd"
FILES_python-pygps = "${libdir}/*/site-packages/*"
-RDEPENDS_python-pygps = "python-core gpsd"
+RDEPENDS_python-pygps = "python-core python-curses gpsd"
diff --git a/packages/gpsd/gpsd_2.28.bb b/packages/gpsd/gpsd_2.28.bb
index 7094893b99..d5a02e27b4 100644
--- a/packages/gpsd/gpsd_2.28.bb
+++ b/packages/gpsd/gpsd_2.28.bb
@@ -1,2 +1,3 @@
require gpsd.inc
-PR = "r8"
+
+PR = "r9"
diff --git a/packages/gpsd/gpsd_2.34.bb b/packages/gpsd/gpsd_2.34.bb
index ea9fe4f550..8e46cb01eb 100644
--- a/packages/gpsd/gpsd_2.34.bb
+++ b/packages/gpsd/gpsd_2.34.bb
@@ -1,4 +1,4 @@
require gpsd.inc
-PR = "r8"
+PR = "r9"
diff --git a/packages/gpsd/gpsd_2.36.bb b/packages/gpsd/gpsd_2.36.bb
index 726ba42481..b3cc2f1f19 100644
--- a/packages/gpsd/gpsd_2.36.bb
+++ b/packages/gpsd/gpsd_2.36.bb
@@ -1,3 +1,3 @@
require gpsd.inc
-PR = "r2"
+PR = "r4"
diff --git a/packages/gpsdrive/gpsdrive_2.10pre3.bb b/packages/gpsdrive/gpsdrive_2.10pre3.bb
index cb651aaf39..6a97344260 100644
--- a/packages/gpsdrive/gpsdrive_2.10pre3.bb
+++ b/packages/gpsdrive/gpsdrive_2.10pre3.bb
@@ -11,7 +11,7 @@ SECTION = "x11"
PRIORITY = "optional"
LICENSE = "GPL"
-SRC_URI = "http://www.ostertag.name/tweety/Projekte/gpsdrive/gpsdrive-2.10pre3.tar.gz \
+SRC_URI = "http://www.gpsdrive.de/packages/${PN}-${PV}.tar.gz \
file://gpsdrive.desktop"
CFLAGS += "-D_GNU_SOURCE"
diff --git a/packages/gsm/files/default b/packages/gsm/files/default
index ffff4399cc..cf36460fac 100644
--- a/packages/gsm/files/default
+++ b/packages/gsm/files/default
@@ -5,10 +5,15 @@
case `machine_id` in
"gta01"|"gta02")
GSMD_OPTS="-s 115200 -F"
+ if [ -d '/sys/bus/platform/devices/gta01-pm-gsm.0' ] ; then
+ GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
+ GSM_RES="/sys/bus/platform/devices/gta01-pm-gsm.0/reset"
+ else
GSM_POW="/sys/bus/platform/devices/neo1973-pm-gsm.0/power_on"
GSM_RES="/sys/bus/platform/devices/neo1973-pm-gsm.0/reset"
- GSM_DL="/sys/bus/platform/devices/neo1973-pm-gsm.0/download"
+ fi
GSM_DEV="/dev/ttySAC0"
+ GSM_DL="/sys/devices/platform/neo1973-pm-gsm.0/download"
;;
"htc_apache"|"htc_blueangel"|"htc_universal")
GSMD_OPTS="-s 115200 -F"
diff --git a/packages/gsm/libgsmd-lips_svn.bb b/packages/gsm/libgsmd-lips_svn.bb
deleted file mode 100644
index 081833dc2b..0000000000
--- a/packages/gsm/libgsmd-lips_svn.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-BASEPN = "gsmd-lips"
-CONFLICTNAME = "gsmd-devel gsmd"
-
-require gsmd.inc
-
-RPROVIDES_${PN} = "libgsmd0 libgsmd gsmd gsmd-devel libtapi libgsmd-dev"
-
-PV = "0.0+svnr${SRCREV}"
-PR = "r3"
-
-SRC_URI = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source/;module=gsm \
- file://gsmd \
- file://default"
-
diff --git a/packages/gstreamer/gst-meta-base_0.10.bb b/packages/gstreamer/gst-meta-base_0.10.bb
index 3a33b2086c..a37623210b 100644
--- a/packages/gstreamer/gst-meta-base_0.10.bb
+++ b/packages/gstreamer/gst-meta-base_0.10.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "Gstreamer package groups"
DEPENDS = "gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good gst-plugins-ugly"
PR = "r10"
-PACKAGES = "\
+PACKAGES = "${PN}-dbg \
gst-meta-base \
gst-meta-audio \
gst-meta-debug \
diff --git a/packages/busybox/busybox-1.5.0/slugos/.mtn2git_empty b/packages/gstreamer/gst-plugin-pulse/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.5.0/slugos/.mtn2git_empty
+++ b/packages/gstreamer/gst-plugin-pulse/.mtn2git_empty
diff --git a/packages/gstreamer/gst-plugin-pulse/dont-overload-pulseaudio.patch b/packages/gstreamer/gst-plugin-pulse/dont-overload-pulseaudio.patch
new file mode 100644
index 0000000000..377a4f9589
--- /dev/null
+++ b/packages/gstreamer/gst-plugin-pulse/dont-overload-pulseaudio.patch
@@ -0,0 +1,13 @@
+Index: gst-pulse-0.9.7/src/pulsesink.c
+===================================================================
+--- gst-pulse-0.9.7.orig/src/pulsesink.c
++++ gst-pulse-0.9.7/src/pulsesink.c
+@@ -477,6 +477,8 @@ static guint gst_pulsesink_write(GstAudi
+ length -= l;
+
+ sum += l;
++
++ usleep( 500 );
+ }
+
+ pa_threaded_mainloop_unlock(pulsesink->mainloop);
diff --git a/packages/gstreamer/gst-plugin-pulse_0.9.4.bb b/packages/gstreamer/gst-plugin-pulse_0.9.4.bb
index f88cb66ff4..a91e482358 100644
--- a/packages/gstreamer/gst-plugin-pulse_0.9.4.bb
+++ b/packages/gstreamer/gst-plugin-pulse_0.9.4.bb
@@ -24,5 +24,5 @@ FILES_${PN}-dev = "\
${libdir}/gstreamer-0.10/libgstpulse.a \
${libdir}/gstreamer-0.10/libgstpulse.la \
${libdir}/gstreamer-0.10/libgstpulse.so*"
-FILES_${PN}-dbg = "${libdir}/gstreamer-0.10/.debug"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
diff --git a/packages/gstreamer/gst-plugin-pulse_0.9.7.bb b/packages/gstreamer/gst-plugin-pulse_0.9.7.bb
new file mode 100644
index 0000000000..8351856143
--- /dev/null
+++ b/packages/gstreamer/gst-plugin-pulse_0.9.7.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "GStreamer plugin for using pulse audio as sink and source"
+HOMEPAGE = "http://0pointer.de/lennart/projects/gst-pulse/"
+LICENSE = "GPL"
+DEPENDS = "gstreamer pulseaudio"
+PR = "r1"
+
+SRC_URI = "http://0pointer.de/lennart/projects/gst-pulse/gst-pulse-${PV}.tar.gz \
+ file://dont-overload-pulseaudio.patch;patch=1"
+S = "${WORKDIR}/gst-pulse-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-lynx"
+GST_LIBV = 0.10
+
+do_install() {
+ install -d ${D}${libdir}/gstreamer-${GST_LIBV}/
+ install -m 0755 src/.libs/libgstpulse.so ${D}${libdir}/gstreamer-${GST_LIBV}
+}
+
+export GST_MODDIR=${libdir}/gstreamer-0.10
+
+FILES_${PN} = "${libdir}/gstreamer-0.10/libgstpulse.so"
+FILES_${PN}-dev = "\
+ ${libdir}/gstreamer-0.10/libgstpulse.a \
+ ${libdir}/gstreamer-0.10/libgstpulse.la \
+ ${libdir}/gstreamer-0.10/libgstpulse.so*"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
+
diff --git a/packages/gstreamer/gst-plugins-base_0.10.17.bb b/packages/gstreamer/gst-plugins-base_0.10.17.bb
new file mode 100644
index 0000000000..33b189a0ff
--- /dev/null
+++ b/packages/gstreamer/gst-plugins-base_0.10.17.bb
@@ -0,0 +1,12 @@
+require gst-plugins.inc
+
+PROVIDES += "gst-plugins"
+
+# gst-plugins-base only builds the alsa plugin
+# if alsa has been built and is present. You will
+# not get an error if this is not present, just
+# a missing alsa plugin
+DEPENDS += "alsa-lib"
+
+PR = "r2"
+
diff --git a/packages/gstreamer/gstreamer_0.10.17.bb b/packages/gstreamer/gstreamer_0.10.17.bb
new file mode 100644
index 0000000000..9e9ae62cb1
--- /dev/null
+++ b/packages/gstreamer/gstreamer_0.10.17.bb
@@ -0,0 +1,3 @@
+require gstreamer.inc
+
+PR = "r0"
diff --git a/packages/busybox/busybox-1.6.0/.mtn2git_empty b/packages/gtk+/gtk+-2.12.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.6.0/.mtn2git_empty
+++ b/packages/gtk+/gtk+-2.12.3/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.12.3/cellrenderer-cairo.patch b/packages/gtk+/gtk+-2.12.3/cellrenderer-cairo.patch
new file mode 100644
index 0000000000..4439e69fb6
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/cellrenderer-cairo.patch
@@ -0,0 +1,32 @@
+Index: gtk/gtkcellrenderer.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/gtkcellrenderer.c,v
+retrieving revision 1.55
+diff -u -r1.55 gtkcellrenderer.c
+--- gtk/gtkcellrenderer.c 14 May 2006 04:25:28 -0000 1.55
++++ gtk/gtkcellrenderer.c 30 Jun 2006 10:57:43 -0000
+@@ -551,6 +551,7 @@
+
+ if (cell->cell_background_set && !selected)
+ {
++#ifdef USE_CAIRO_INTERNALLY
+ cairo_t *cr = gdk_cairo_create (window);
+
+ gdk_cairo_rectangle (cr, background_area);
+@@ -558,6 +559,16 @@
+ cairo_fill (cr);
+
+ cairo_destroy (cr);
++#else
++ GdkGC *gc;
++
++ gc = gdk_gc_new (window);
++ gdk_gc_set_rgb_fg_color (gc, &priv->cell_background);
++ gdk_draw_rectangle (window, gc, TRUE,
++ background_area->x, background_area->y,
++ background_area->width, background_area->height);
++ g_object_unref (gc);
++#endif
+ }
+
+ GTK_CELL_RENDERER_GET_CLASS (cell)->render (cell,
diff --git a/packages/gtk+/gtk+-2.12.3/combo-arrow-size.patch b/packages/gtk+/gtk+-2.12.3/combo-arrow-size.patch
new file mode 100644
index 0000000000..d44c454ce3
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/combo-arrow-size.patch
@@ -0,0 +1,67 @@
+Index: gtk/gtkcombobox.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/gtkcombobox.c,v
+retrieving revision 1.185
+diff -u -p -r1.185 gtkcombobox.c
+--- gtk/gtkcombobox.c 12 Oct 2006 13:48:07 -0000 1.185
++++ gtk/gtkcombobox.c 1 Nov 2006 19:01:09 -0000
+@@ -756,6 +756,25 @@ gtk_combo_box_class_init (GtkComboBoxCla
+ FALSE,
+ GTK_PARAM_READABLE));
+
++ /**
++ * GtkComboBox:arrow-size:
++ *
++ * Sets the minimum size of the arrow in the combo box. Note
++ * that the arrow size is coupled to the font size, so in case
++ * a larger font is used, the arrow will be larger than set
++ * by arrow size.
++ *
++ * Since: 2.12
++ */
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("arrow-size",
++ P_("Arrow Size"),
++ P_("The minimum size of the arrow in the combo box"),
++ 0,
++ G_MAXINT,
++ 15,
++ GTK_PARAM_READABLE));
++
+ g_type_class_add_private (object_class, sizeof (GtkComboBoxPrivate));
+ }
+
+@@ -1897,7 +1916,12 @@ gtk_combo_box_size_request (GtkWidget
+ {
+ gint width, height;
+ gint focus_width, focus_pad;
++ gint font_size;
++ gint arrow_size;
+ GtkRequisition bin_req;
++ PangoContext *context;
++ PangoFontMetrics *metrics;
++ PangoFontDescription *font_desc;
+
+ GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
+
+@@ -1910,7 +1934,20 @@ gtk_combo_box_size_request (GtkWidget
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_pad,
++ "arrow-size", &arrow_size,
+ NULL);
++
++ font_desc = GTK_BIN (widget)->child->style->font_desc;
++ context = gtk_widget_get_pango_context (widget);
++ metrics = pango_context_get_metrics (context, font_desc,
++ pango_context_get_language (context));
++ font_size = PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) +
++ pango_font_metrics_get_descent (metrics));
++ pango_font_metrics_unref (metrics);
++
++ arrow_size = MAX (arrow_size, font_size);
++
++ gtk_widget_set_size_request (combo_box->priv->arrow, arrow_size, arrow_size);
+
+ if (!combo_box->priv->tree_view)
+ {
diff --git a/packages/gtk+/gtk+-2.12.3/disable-print.patch b/packages/gtk+/gtk+-2.12.3/disable-print.patch
new file mode 100644
index 0000000000..21a4be4da8
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/disable-print.patch
@@ -0,0 +1,26 @@
+--- gtk+-2.12.0/configure.in~ 2006-07-05 18:11:44.000000000 +0200
++++ gtk+-2.12.0/configure.in 2006-07-05 18:11:44.000000000 +0200
+@@ -1554,22 +1554 @@
+-AC_PATH_PROG(CUPS_CONFIG, cups-config, no)
+-if test "x$CUPS_CONFIG" != "xno"; then
+- CUPS_CFLAGS=`cups-config --cflags | sed 's/-O[0-9]*//' | sed 's/-m[^\t]*//g'`
+- CUPS_LIBS=`cups-config --libs`
+-
+- CUPS_API_VERSION=`cups-config --api-version`
+- CUPS_API_MAJOR=`echo -n $CUPS_API_VERSION | awk -F. '{print $1}'`
+- CUPS_API_MINOR=`echo -n $CUPS_API_VERSION | awk -F. '{print $2}'`
+-
+- if test $CUPS_API_MAJOR -gt 1 -o \
+- $CUPS_API_MAJOR -eq 1 -a $CUPS_API_MINOR -ge 2; then
+- AC_DEFINE(HAVE_CUPS_API_1_2)
+- fi
+-
+- AC_SUBST(CUPS_API_MAJOR)
+- AC_SUBST(CUPS_API_MINOR)
+- AC_SUBST(CUPS_CFLAGS)
+- AC_SUBST(CUPS_LIBS)
+-
+- AC_CHECK_HEADER(cups/cups.h,,AC_MSG_ERROR([[*** Sorry, cups-config present but cups/cups.h missing.]]))
+-fi
+-AM_CONDITIONAL(HAVE_CUPS, test "x$CUPS_CONFIG" != "xno")
++AM_CONDITIONAL(HAVE_CUPS, false)
diff --git a/packages/gtk+/gtk+-2.12.3/entry-cairo.patch b/packages/gtk+/gtk+-2.12.3/entry-cairo.patch
new file mode 100644
index 0000000000..3313e7f132
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/entry-cairo.patch
@@ -0,0 +1,103 @@
+Index: gtk/gtkentry.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/gtkentry.c,v
+retrieving revision 1.317
+diff -u -r1.317 gtkentry.c
+--- gtk/gtkentry.c 29 Jun 2006 09:18:05 -0000 1.317
++++ gtk/gtkentry.c 2 Jul 2006 14:14:24 -0000
+@@ -3337,7 +3337,9 @@
+ if (GTK_WIDGET_DRAWABLE (entry))
+ {
+ PangoLayout *layout = gtk_entry_ensure_layout (entry, TRUE);
++#ifdef USE_CAIRO_INTERNALLY
+ cairo_t *cr;
++#endif
+ gint x, y;
+ gint start_pos, end_pos;
+
+@@ -3345,23 +3347,35 @@
+
+ get_layout_position (entry, &x, &y);
+
++#ifdef USE_CAIRO_INTERNALLY
+ cr = gdk_cairo_create (entry->text_area);
+
+ cairo_move_to (cr, x, y);
+ gdk_cairo_set_source_color (cr, &widget->style->text [widget->state]);
+ pango_cairo_show_layout (cr, layout);
++#else
++ gdk_draw_layout (entry->text_area, widget->style->text_gc [widget->state],
++ x, y,
++ layout);
++#endif
+
+ if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos))
+ {
+ gint *ranges;
+ gint n_ranges, i;
+ PangoRectangle logical_rect;
+- GdkColor *selection_color, *text_color;
+ GtkBorder inner_border;
++#ifdef USE_CAIRO_INTERNALLY
++ GdkColor *selection_color, *text_color;
++#else
++ GdkGC *selection_gc, *text_gc;
++ GdkRegion *clip_region;
++#endif
+
+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+ gtk_entry_get_pixel_ranges (entry, &ranges, &n_ranges);
+
++#ifdef USE_CAIRO_INTERNALLY
+ if (GTK_WIDGET_HAS_FOCUS (entry))
+ {
+ selection_color = &widget->style->base [GTK_STATE_SELECTED];
+@@ -3390,11 +3404,46 @@
+ cairo_move_to (cr, x, y);
+ gdk_cairo_set_source_color (cr, text_color);
+ pango_cairo_show_layout (cr, layout);
+-
++#else
++ if (GTK_WIDGET_HAS_FOCUS (entry))
++ {
++ selection_gc = widget->style->base_gc [GTK_STATE_SELECTED];
++ text_gc = widget->style->text_gc [GTK_STATE_SELECTED];
++ }
++ else
++ {
++ selection_gc = widget->style->base_gc [GTK_STATE_ACTIVE];
++ text_gc = widget->style->text_gc [GTK_STATE_ACTIVE];
++ }
++
++ clip_region = gdk_region_new ();
++ for (i = 0; i < n_ranges; ++i)
++ {
++ GdkRectangle rect;
++
++ rect.x = inner_border.left - entry->scroll_offset + ranges[2 * i];
++ rect.y = y;
++ rect.width = ranges[2 * i + 1];
++ rect.height = logical_rect.height;
++
++ gdk_draw_rectangle (entry->text_area, selection_gc, TRUE,
++ rect.x, rect.y, rect.width, rect.height);
++
++ gdk_region_union_with_rect (clip_region, &rect);
++ }
++
++ gdk_gc_set_clip_region (text_gc, clip_region);
++ gdk_draw_layout (entry->text_area, text_gc,
++ x, y,
++ layout);
++ gdk_gc_set_clip_region (text_gc, NULL);
++ gdk_region_destroy (clip_region);
++#endif
+ g_free (ranges);
+ }
+-
++#ifdef USE_CAIRO_INTERNALLY
+ cairo_destroy (cr);
++#endif
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.12.3/gtklabel-resize-patch b/packages/gtk+/gtk+-2.12.3/gtklabel-resize-patch
new file mode 100644
index 0000000000..df29656343
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.12.3/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.12.3/hardcoded_libtool.patch
new file mode 100644
index 0000000000..6adb0cfef6
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- /tmp/configure.in 2007-01-08 17:50:49.000000000 +0100
++++ gtk+-2.10.7/configure.in 2007-01-08 17:52:33.495251000 +0100
+@@ -371,7 +371,7 @@
+ case $enable_explicit_deps in
+ auto)
+ export SED
+- deplibs_check_method=`(./libtool --config; echo 'eval echo $deplibs_check_method') | sh`
++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo $deplibs_check_method') | sh`
+ if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -773,7 +773,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1611,7 +1611,7 @@
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.12.3/menu-deactivate.patch b/packages/gtk+/gtk+-2.12.3/menu-deactivate.patch
new file mode 100644
index 0000000000..cfb8849e9f
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/menu-deactivate.patch
@@ -0,0 +1,51 @@
+--- gtk+-2.10.0/gtk/gtkmenushell.c.orig 2006-07-05 17:17:34.000000000 +0200
++++ gtk+-2.10.0/gtk/gtkmenushell.c 2006-07-05 17:19:01.000000000 +0200
+@@ -42,7 +42,7 @@
+ #include "gtkintl.h"
+ #include "gtkalias.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ #define PACK_DIRECTION(m) \
+ (GTK_IS_MENU_BAR (m) \
+@@ -203,6 +203,8 @@
+
+ G_DEFINE_TYPE (GtkMenuShell, gtk_menu_shell, GTK_TYPE_CONTAINER)
+
++static int last_crossing_time;
++
+ static void
+ gtk_menu_shell_class_init (GtkMenuShellClass *klass)
+ {
+@@ -517,6 +519,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -669,6 +672,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -716,6 +726,8 @@
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
+
++ last_crossing_time = event->time;
++
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
+ !_gtk_menu_item_is_selectable (menu_item)))
diff --git a/packages/gtk+/gtk+-2.12.3/no-demos.patch b/packages/gtk+/gtk+-2.12.3/no-demos.patch
new file mode 100644
index 0000000000..0fc4c48d1a
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.10.1/Makefile.am.orig 2006-08-08 12:37:30.000000000 +0100
++++ gtk+-2.10.1/Makefile.am 2006-08-08 12:37:48.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests perf contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests perf contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.12.3/pangoxft2.10.6.diff b/packages/gtk+/gtk+-2.12.3/pangoxft2.10.6.diff
new file mode 100644
index 0000000000..63828cec63
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/pangoxft2.10.6.diff
@@ -0,0 +1,2456 @@
+http://mail.gnome.org/archives/performance-list/2006-October/msg00063.html
+
+From: Xan Lópe
+To: ext Matt Hoosier
+Cc: performance-list gnome org
+Subject: Re: [patch] Remove pangocairo from Gtk+ 2.8.20
+Date: Mon, 30 Oct 2006 14:31:56 +0200
+Hi,
+
+I've upgraded your patch against GTK+ 2.10.6, and we are getting great
+performance figures compared to GTK+ 2.10.6 with pangocairo too
+(basically at the level of GTK+ 2.6.10 again). Right now I'm working on
+a python/cairo script to get some nice graphics from a torture test
+session with several GTK+s, hope to get it ready soon.
+
+Index: gtk+-2.10.6/configure.in
+===================================================================
+--- gtk+-2.10.6.orig/configure.in 2006-10-30 12:59:28.000000000 +0000
++++ gtk+-2.10.6/configure.in 2006-10-30 12:59:30.000000000 +0000
+@@ -1435,7 +1435,7 @@
+ if test "x$gdktarget" = "xwin32"; then
+ PANGO_PACKAGES="pangowin32 pangocairo"
+ else
+- PANGO_PACKAGES="pango pangocairo"
++ PANGO_PACKAGES="pango pangocairo pangoxft"
+ fi
+
+ AC_MSG_CHECKING(Pango flags)
+Index: gtk+-2.10.6/gdk/gdkaliasdef.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/gdkaliasdef.c 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/gdkaliasdef.c 2006-10-30 12:59:30.000000000 +0000
+@@ -1799,9 +1799,6 @@
+ #undef gdk_pango_context_get
+ extern __typeof (gdk_pango_context_get) gdk_pango_context_get __attribute((alias("IA__gdk_pango_context_get"), visibility("default")));
+
+-#undef gdk_pango_context_get_for_screen
+-extern __typeof (gdk_pango_context_get_for_screen) gdk_pango_context_get_for_screen __attribute((alias("IA__gdk_pango_context_get_for_screen"), visibility("default")));
+-
+ #ifndef GDK_DISABLE_DEPRECATED
+ #undef gdk_pango_context_set_colormap
+ extern __typeof (gdk_pango_context_set_colormap) gdk_pango_context_set_colormap __attribute((alias("IA__gdk_pango_context_set_colormap"), visibility("default")));
+@@ -1836,6 +1833,13 @@
+
+ #endif
+ #endif
++#if IN_HEADER(__GDK_PANGO_H__)
++#if IN_FILE(__GDK_PANGO_X11_C__)
++#undef gdk_pango_context_get_for_screen
++extern __typeof (gdk_pango_context_get_for_screen) gdk_pango_context_get_for_screen __attribute((alias("IA__gdk_pango_context_get_for_screen"), visibility("default")));
++
++#endif
++#endif
+ #if IN_HEADER(__GDK_PIXBUF_H__)
+ #if IN_FILE(__GDK_PIXBUF_DRAWABLE_C__)
+ #undef gdk_pixbuf_get_from_drawable
+Index: gtk+-2.10.6/gdk/gdkalias.h
+===================================================================
+--- gtk+-2.10.6.orig/gdk/gdkalias.h 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/gdkalias.h 2006-10-30 12:59:30.000000000 +0000
+@@ -1796,9 +1796,6 @@
+ extern __typeof (gdk_pango_context_get) IA__gdk_pango_context_get __attribute((visibility("hidden")));
+ #define gdk_pango_context_get IA__gdk_pango_context_get
+
+-extern __typeof (gdk_pango_context_get_for_screen) IA__gdk_pango_context_get_for_screen __attribute((visibility("hidden")));
+-#define gdk_pango_context_get_for_screen IA__gdk_pango_context_get_for_screen
+-
+ #ifndef GDK_DISABLE_DEPRECATED
+ extern __typeof (gdk_pango_context_set_colormap) IA__gdk_pango_context_set_colormap __attribute((visibility("hidden")));
+ #define gdk_pango_context_set_colormap IA__gdk_pango_context_set_colormap
+@@ -1833,6 +1830,13 @@
+
+ #endif
+ #endif
++#if IN_HEADER(__GDK_PANGO_H__)
++#if IN_FILE(__GDK_PANGO_X11_C__)
++extern __typeof (gdk_pango_context_get_for_screen) IA__gdk_pango_context_get_for_screen __attribute((visibility("hidden")));
++#define gdk_pango_context_get_for_screen IA__gdk_pango_context_get_for_screen
++
++#endif
++#endif
+ #if IN_HEADER(__GDK_PIXBUF_H__)
+ #if IN_FILE(__GDK_PIXBUF_DRAWABLE_C__)
+ extern __typeof (gdk_pixbuf_get_from_drawable) IA__gdk_pixbuf_get_from_drawable __attribute((visibility("hidden")));
+Index: gtk+-2.10.6/gdk/gdkdraw.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/gdkdraw.c 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/gdkdraw.c 2006-10-30 12:59:30.000000000 +0000
+@@ -909,9 +909,9 @@
+ {
+ g_return_if_fail (GDK_IS_DRAWABLE (drawable));
+ g_return_if_fail (GDK_IS_GC (gc));
+-
+- real_draw_glyphs (drawable, gc, NULL, font,
+- x, y, glyphs);
++
++
++ GDK_DRAWABLE_GET_CLASS (drawable)->draw_glyphs (drawable, gc, font, x, y, glyphs);
+ }
+
+ /**
+@@ -949,8 +949,9 @@
+ g_return_if_fail (GDK_IS_DRAWABLE (drawable));
+ g_return_if_fail (GDK_IS_GC (gc));
+
+- real_draw_glyphs (drawable, gc, matrix, font,
+- x / PANGO_SCALE, y / PANGO_SCALE, glyphs);
++ if (GDK_DRAWABLE_GET_CLASS (drawable)->draw_glyphs_transformed)
++ GDK_DRAWABLE_GET_CLASS (drawable)->draw_glyphs_transformed (drawable, gc, matrix,
++ font, x, y, glyphs);
+ }
+
+ /**
+@@ -974,28 +975,12 @@
+ GdkTrapezoid *trapezoids,
+ gint n_trapezoids)
+ {
+- cairo_t *cr;
+- int i;
+-
+ g_return_if_fail (GDK_IS_DRAWABLE (drawable));
+ g_return_if_fail (GDK_IS_GC (gc));
+ g_return_if_fail (n_trapezoids == 0 || trapezoids != NULL);
+
+- cr = gdk_cairo_create (drawable);
+- _gdk_gc_update_context (gc, cr, NULL, NULL, TRUE);
+-
+- for (i = 0; i < n_trapezoids; i++)
+- {
+- cairo_move_to (cr, trapezoids[i].x11, trapezoids[i].y1);
+- cairo_line_to (cr, trapezoids[i].x21, trapezoids[i].y1);
+- cairo_line_to (cr, trapezoids[i].x22, trapezoids[i].y2);
+- cairo_line_to (cr, trapezoids[i].x21, trapezoids[i].y2);
+- cairo_close_path (cr);
+- }
+-
+- cairo_fill (cr);
+-
+- cairo_destroy (cr);
++ GDK_DRAWABLE_GET_CLASS (drawable)->draw_trapezoids (drawable, gc,
++ trapezoids, n_trapezoids);
+ }
+
+ /**
+Index: gtk+-2.10.6/gdk/gdkpango.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/gdkpango.c 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/gdkpango.c 2006-10-30 12:59:30.000000000 +0000
+@@ -50,19 +50,34 @@
+ GdkBitmap *stipple[MAX_RENDER_PART + 1];
+ gboolean embossed;
+
+- cairo_t *cr;
+- PangoRenderPart last_part;
++ /* When switching between the normal and shadow copies when
++ * drawing shadows we can get unexpected recursion into the
++ * drawing functions; the 'in_emboss' flag guards against that.
++ */
++ gboolean in_emboss;
+
+ /* Current target */
+ GdkDrawable *drawable;
+ GdkGC *base_gc;
+
+ gboolean gc_changed;
++
++ /* Cached GC, derived from base_gc */
++ GdkGC *gc;
++ PangoColor gc_color;
++ gboolean gc_color_set;
++ GdkBitmap *gc_stipple;
++
++ /* we accumulate trapezoids for the same PangoRenderPart */
++ GArray *trapezoids;
++ PangoRenderPart trapezoid_part;
+ };
+
+ static PangoAttrType gdk_pango_attr_stipple_type;
+ static PangoAttrType gdk_pango_attr_embossed_type;
+
++static void flush_trapezoids (GdkPangoRenderer *gdk_renderer);
++
+ enum {
+ PROP_0,
+ PROP_SCREEN
+@@ -77,6 +92,10 @@
+ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
+ int i;
+
++ if (priv->gc)
++ g_object_unref (priv->gc);
++ if (priv->gc_stipple)
++ g_object_unref (priv->gc_stipple);
+ if (priv->base_gc)
+ g_object_unref (priv->base_gc);
+ if (priv->drawable)
+@@ -86,6 +105,8 @@
+ if (priv->stipple[i])
+ g_object_unref (priv->stipple[i]);
+
++ g_array_free (priv->trapezoids, TRUE);
++
+ G_OBJECT_CLASS (gdk_pango_renderer_parent_class)->finalize (object);
+ }
+
+@@ -112,25 +133,6 @@
+ return object;
+ }
+
+-/* Adjusts matrix and color for the renderer to draw the secondary
+- * "shadow" copy for embossed text */
+-static void
+-emboss_context (cairo_t *cr)
+-{
+- cairo_matrix_t tmp_matrix;
+-
+- /* The gymnastics here to adjust the matrix are because we want
+- * to offset by +1,+1 in device-space, not in user-space,
+- * so we can't just draw the layout at x + 1, y + 1
+- */
+- cairo_get_matrix (cr, &tmp_matrix);
+- tmp_matrix.x0 += 1.0;
+- tmp_matrix.y0 += 1.0;
+- cairo_set_matrix (cr, &tmp_matrix);
+-
+- cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+-}
+-
+ static inline gboolean
+ color_equal (PangoColor *c1, PangoColor *c2)
+ {
+@@ -146,74 +148,154 @@
+ return FALSE;
+ }
+
+-static cairo_t *
+-get_cairo_context (GdkPangoRenderer *gdk_renderer,
+- PangoRenderPart part)
++/* Adjusts matrix and color for the renderer to draw the secondar
++ * "shadow" copy for embossed text */
++static void
++emboss_renderer (PangoRenderer *renderer,
++ PangoRenderPart part,
++ PangoMatrix **save_matrix,
++ PangoColor **save_color)
++{
++ GdkPangoRendererPrivate *priv = GDK_PANGO_RENDERER(renderer)->priv;
++ static const PangoColor white = { 0xffff, 0xffff, 0xffff };
++ PangoMatrix tmp_matrix = PANGO_MATRIX_INIT;
++
++ priv->in_emboss = TRUE;
++
++ *save_color = pango_renderer_get_color (renderer, part);
++ if (*save_color)
++ *save_color = pango_color_copy (*save_color);
++
++ *save_matrix = renderer->matrix;
++ if (*save_matrix)
++ {
++ *save_matrix = pango_matrix_copy (*save_matrix);
++ tmp_matrix = **save_matrix;
++ }
++
++ /* The gymnastics here to adjust the matrix are because we want
++ * to offset by +1,+1 in device-space, not in user-space,
++ * so we can't just draw the layout at x + 1, y + 1
++ */
++ tmp_matrix.x0 += 1;
++ tmp_matrix.y0 += 1;
++
++ pango_renderer_set_matrix (renderer, &tmp_matrix);
++ pango_renderer_set_color (renderer, part, &white);
++}
++
++/* Restores from emboss_renderer() */
++static void
++unemboss_renderer (PangoRenderer *renderer,
++ PangoRenderPart part,
++ PangoMatrix **save_matrix,
++ PangoColor **save_color)
++{
++ GdkPangoRendererPrivate *priv = GDK_PANGO_RENDERER(renderer)->priv;
++ pango_renderer_set_matrix (renderer, *save_matrix);
++ pango_renderer_set_color (renderer, part, *save_color);
++
++ if (*save_matrix)
++ pango_matrix_free (*save_matrix);
++ if (*save_color)
++ pango_color_free (*save_color);
++
++ priv->in_emboss = FALSE;
++}
++
++/* Gets the GC for drawing @part. This make involve copying the base GC
++ * for the renderer, in which case we keep a one-GC cache. */
++static GdkGC *
++get_gc (GdkPangoRenderer *gdk_renderer,
++ PangoRenderPart part)
+ {
+ PangoRenderer *renderer = PANGO_RENDERER (gdk_renderer);
++ PangoColor *color;
++ GdkBitmap *stipple;
+ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
+
+- if (!priv->cr)
++ color = pango_renderer_get_color (renderer, part);
++
++ if (part <= MAX_RENDER_PART)
++ stipple = priv->stipple[part];
++ else
++ stipple = NULL;
++
++ if (!color && !stipple) /* nothing override, use base_gc */
++ return priv->base_gc;
++ else
+ {
+- const PangoMatrix *matrix;
++ gboolean new_stipple = FALSE;
++ gboolean new_color = FALSE;
+
+- priv->cr = gdk_cairo_create (priv->drawable);
++ if (stipple != priv->gc_stipple)
++ new_stipple = TRUE;
+
+- matrix = pango_renderer_get_matrix (renderer);
+- if (matrix)
++ if ((priv->gc_color_set && !color) ||
++ (!priv->gc_color_set && color) ||
++ priv->gc_color.red != color->red ||
++ priv->gc_color.green != color->green ||
++ priv->gc_color.blue != color->blue)
++ new_color = TRUE;
++
++ if (!priv->gc)
+ {
+- cairo_matrix_t cairo_matrix;
+-
+- cairo_matrix_init (&cairo_matrix,
+- matrix->xx, matrix->yx,
+- matrix->xy, matrix->yy,
+- matrix->x0, matrix->y0);
+- cairo_set_matrix (priv->cr, &cairo_matrix);
++ priv->gc = gdk_gc_new (priv->drawable);
++ gdk_gc_copy (priv->gc, priv->base_gc);
++ }
++ else if (new_color && priv->gc_color_set && !color)
++ {
++ /* We have to recopy the original GC onto the cached GC
++ * to get the default color */
++ new_stipple = TRUE;
++ gdk_gc_copy (priv->gc, priv->base_gc);
++ }
++ else if (new_stipple && priv->gc_stipple && !stipple)
++ {
++ /* Similarly, we need to make a new copy to restore to the
++ * default stipple state (the caller may have set a stipple
++ * on the GC, and even if not, gdk_gc_set_stipple (gc, NULL)
++ * doesn't work currently to restore to the default X stipple) */
++ new_color = TRUE;
++ gdk_gc_copy (priv->gc, priv->base_gc);
+ }
+- }
+-
+- if (part != priv->last_part)
+- {
+- PangoColor *pango_color;
+- GdkColor *color;
+- GdkColor tmp_color;
+- gboolean changed;
+
+- pango_color = pango_renderer_get_color (renderer, part);
+-
+- if (priv->last_part != -1)
+- changed = priv->gc_changed ||
+- priv->stipple[priv->last_part] != priv->stipple[part] ||
+- !color_equal (pango_color,
+- pango_renderer_get_color (renderer, priv->last_part));
+- else
+- changed = TRUE;
+-
+- if (changed)
++ if (new_color)
+ {
+- if (pango_color)
++ if (color)
+ {
+- tmp_color.red = pango_color->red;
+- tmp_color.green = pango_color->green;
+- tmp_color.blue = pango_color->blue;
++ GdkColor gdk_color;
++
++ gdk_color.red = color->red;
++ gdk_color.green = color->green;
++ gdk_color.blue = color->blue;
+
+- color = &tmp_color;
++ gdk_gc_set_rgb_fg_color (priv->gc, &gdk_color);
++
++ priv->gc_color = *color;
++ priv->gc_color_set = TRUE;
+ }
+ else
+- color = NULL;
++ priv->gc_color_set = FALSE;
++ }
+
+- _gdk_gc_update_context (priv->base_gc,
+- priv->cr,
+- color,
+- priv->stipple[part],
+- priv->gc_changed);
++ if (new_stipple)
++ {
++ if (priv->gc_stipple)
++ g_object_unref (priv->gc_stipple);
++
++ if (stipple)
++ {
++ gdk_gc_set_stipple (priv->gc, stipple);
++ gdk_gc_set_fill (priv->gc, GDK_STIPPLED);
++ priv->gc_stipple = g_object_ref (stipple);
++ }
++ else
++ priv->gc_stipple = NULL;
+ }
+
+- priv->last_part = part;
+- priv->gc_changed = FALSE;
++ return priv->gc;
+ }
+-
+- return priv->cr;
+ }
+
+ static void
+@@ -225,133 +307,78 @@
+ {
+ GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
+ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
+- cairo_t *cr;
+
+- cr = get_cairo_context (gdk_renderer,
+- PANGO_RENDER_PART_FOREGROUND);
++ flush_trapezoids (gdk_renderer);
+
+- if (priv->embossed)
++ if (!priv->in_emboss && priv->embossed)
+ {
+- cairo_save (cr);
+- emboss_context (cr);
+- cairo_move_to (cr, (double)x / PANGO_SCALE, (double)y / PANGO_SCALE);
+- pango_cairo_show_glyph_string (cr, font, glyphs);
+- cairo_restore (cr);
+- }
+-
+- cairo_move_to (cr, (double)x / PANGO_SCALE, (double)y / PANGO_SCALE);
+- pango_cairo_show_glyph_string (cr, font, glyphs);
+-}
+-
+-/* Draws an error underline that looks like one of:
+- * H E H
+- * /\ /\ /\ /\ /\ -
+- * A/ \ / \ / \ A/ \ / \ |
+- * \ \ / \ / /D \ \ / \ |
+- * \ \/ C \/ / \ \/ C \ | height = HEIGHT_SQUARES * square
+- * \ /\ F / \ F /\ \ |
+- * \ / \ / \ / \ \G |
+- * \ / \ / \ / \ / |
+- * \/ \/ \/ \/ -
+- * B B
+- * |----|
+- * unit_width = (HEIGHT_SQUARES - 1) * square
+- *
+- * The x, y, width, height passed in give the desired bounding box;
+- * x/width are adjusted to make the underline a integer number of units
+- * wide.
+- */
+-#define HEIGHT_SQUARES 2.5
++ PangoMatrix *save_matrix;
++ PangoColor *save_color;
+
+-/* Cut-and-pasted between here and pango/pango/pangocairo-render.c */
++ emboss_renderer (renderer, PANGO_RENDER_PART_FOREGROUND, &save_matrix, &save_color);
++ gdk_draw_glyphs_transformed (priv->drawable,
++ get_gc (gdk_renderer, PANGO_RENDER_PART_FOREGROUND),
++ renderer->matrix, font, x, y, glyphs);
++ unemboss_renderer (renderer, PANGO_RENDER_PART_FOREGROUND, &save_matrix, &save_color);
++ }
++
++ gdk_draw_glyphs_transformed (priv->drawable,
++ get_gc (gdk_renderer, PANGO_RENDER_PART_FOREGROUND),
++ renderer->matrix, font, x, y, glyphs);
++}
++
++/* Outputs any pending trapezoids, we do this when the part or
++ * part color changes, when we are about to draw text, etc. */
+ static void
+-draw_error_underline (cairo_t *cr,
+- double x,
+- double y,
+- double width,
+- double height)
+-{
+- double square = height / HEIGHT_SQUARES;
+- double unit_width = (HEIGHT_SQUARES - 1) * square;
+- int width_units = (width + unit_width / 2) / unit_width;
+- double y_top, y_bottom;
+- int i;
++flush_trapezoids (GdkPangoRenderer *gdk_renderer)
++{
++ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
+
+- x += (width - width_units * unit_width) / 2;
+- width = width_units * unit_width;
++ if (!priv->trapezoids || priv->trapezoids->len == 0)
++ return;
+
+- y_top = y;
+- y_bottom = y + height;
+-
+- /* Bottom of squiggle */
+- cairo_move_to (cr, x - square / 2, y_top + square / 2); /* A */
+- for (i = 0; i < width_units; i += 2)
+- {
+- double x_middle = x + (i + 1) * unit_width;
+- double x_right = x + (i + 2) * unit_width;
+-
+- cairo_line_to (cr, x_middle, y_bottom); /* B */
+-
+- if (i + 1 == width_units)
+- /* Nothing */;
+- else if (i + 2 == width_units)
+- cairo_line_to (cr, x_right + square / 2, y_top + square / 2); /* D */
+- else
+- cairo_line_to (cr, x_right, y_top + square); /* C */
+- }
+-
+- /* Top of squiggle */
+- for (i -= 2; i >= 0; i -= 2)
+- {
+- double x_left = x + i * unit_width;
+- double x_middle = x + (i + 1) * unit_width;
+- double x_right = x + (i + 2) * unit_width;
+-
+- if (i + 1 == width_units)
+- cairo_line_to (cr, x_middle + square / 2, y_bottom - square / 2); /* G */
+- else {
+- if (i + 2 == width_units)
+- cairo_line_to (cr, x_right, y_top); /* E */
+- cairo_line_to (cr, x_middle, y_bottom - square); /* F */
+- }
+-
+- cairo_line_to (cr, x_left, y_top); /* H */
+- }
++ gdk_draw_trapezoids (priv->drawable,
++ get_gc (gdk_renderer, priv->trapezoid_part),
++ (GdkTrapezoid *)priv->trapezoids->data,
++ priv->trapezoids->len);
+
+- cairo_close_path (cr);
+- cairo_fill (cr);
++ g_array_set_size (priv->trapezoids, 0);
+ }
+
++/* Draws a single trapezoid ... we don't draw it immediately, but rather
++ * cache it to join together with other trapezoids that form part of the
++ * same logical shape */
+ static void
+-gdk_pango_renderer_draw_rectangle (PangoRenderer *renderer,
+- PangoRenderPart part,
+- int x,
+- int y,
+- int width,
+- int height)
++gdk_pango_renderer_draw_trapezoid (PangoRenderer *renderer,
++ PangoRenderPart part,
++ double y1,
++ double x11,
++ double x21,
++ double y2,
++ double x12,
++ double x22)
+ {
+ GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
+- GdkPangoRendererPrivate *priv = gdk_renderer->priv;
+- cairo_t *cr;
+-
+- cr = get_cairo_context (gdk_renderer, part);
+-
+- if (priv->embossed && part != PANGO_RENDER_PART_BACKGROUND)
+- {
+- cairo_save (cr);
+- emboss_context (cr);
+- cairo_rectangle (cr,
+- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
+- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
++ GdkTrapezoid trap;
+
+- cairo_fill (cr);
+- cairo_restore (cr);
+- }
++ if (!gdk_renderer->priv->trapezoids)
++ gdk_renderer->priv->trapezoids = g_array_new (FALSE, FALSE,
++ sizeof (GdkTrapezoid));
++
++ if (gdk_renderer->priv->trapezoids->len > 0 &&
++ gdk_renderer->priv->trapezoid_part != part)
++ flush_trapezoids (gdk_renderer);
++
++ gdk_renderer->priv->trapezoid_part = part;
++
++ trap.y1 = y1;
++ trap.x11 = x11 / 2;
++ trap.x21 = x21;
++ trap.y2 = y2;
++ trap.x12 = x12;
++ trap.x22 = x22;
+
+- cairo_rectangle (cr,
+- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
+- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
+- cairo_fill (cr);
++ g_array_append_val (gdk_renderer->priv->trapezoids, trap);
+ }
+
+ static void
+@@ -363,23 +390,51 @@
+ {
+ GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
+ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
+- cairo_t *cr;
+-
+- cr = get_cairo_context (gdk_renderer, PANGO_RENDER_PART_UNDERLINE);
+-
+- if (priv->embossed)
++
++ if (!priv->in_emboss && priv->embossed)
+ {
+- cairo_save (cr);
+- emboss_context (cr);
+- draw_error_underline (cr,
+- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
+- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
+- cairo_restore (cr);
++ PangoMatrix *save_matrix;
++ PangoColor *save_color;
++
++ emboss_renderer (renderer, PANGO_RENDER_PART_UNDERLINE, &save_matrix, &save_color);
++ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_error_underline (renderer,
++ x, y, width, height);
++ unemboss_renderer (renderer, PANGO_RENDER_PART_UNDERLINE, &save_matrix, &save_color);
+ }
+
+- draw_error_underline (cr,
+- (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
+- (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
++ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_error_underline (renderer,
++ x, y, width, height);
++}
++
++/* We can't handle embossing at the level of trapezoids, because when an
++ * underline is split into multiple trapezoids, the normal and shadow
++ * trapezoids will be drawn mixed together. Instead, we have to emboss
++ * and entire rectangle or error underline
++ */
++static void
++gdk_pango_renderer_draw_rectangle (PangoRenderer *renderer,
++ PangoRenderPart part,
++ int x,
++ int y,
++ int width,
++ int height)
++{
++ GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
++ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
++
++ if (!priv->in_emboss && priv->embossed && part != PANGO_RENDER_PART_BACKGROUND)
++ {
++ PangoMatrix *save_matrix;
++ PangoColor *save_color;
++
++ emboss_renderer (renderer, part, &save_matrix, &save_color);
++ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_rectangle (renderer, part,
++ x, y, width, height);
++ unemboss_renderer (renderer, part, &save_matrix, &save_color);
++ }
++
++ PANGO_RENDERER_CLASS (gdk_pango_renderer_parent_class)->draw_rectangle (renderer, part,
++ x, y, width, height);
+ }
+
+ static void
+@@ -388,8 +443,8 @@
+ {
+ GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
+
+- if (gdk_renderer->priv->last_part == part)
+- gdk_renderer->priv->last_part = (PangoRenderPart)-1;
++ if (part == gdk_renderer->priv->trapezoid_part)
++ flush_trapezoids (gdk_renderer);
+ }
+
+ static void
+@@ -410,13 +465,8 @@
+ {
+ GdkPangoRenderer *gdk_renderer = GDK_PANGO_RENDERER (renderer);
+ GdkPangoRendererPrivate *priv = gdk_renderer->priv;
+-
+- if (priv->cr)
+- {
+- cairo_destroy (priv->cr);
+- priv->cr = NULL;
+- }
+- priv->last_part = (PangoRenderPart)-1;
++
++ flush_trapezoids (gdk_renderer);
+ }
+
+ static void
+@@ -515,7 +565,6 @@
+ GDK_TYPE_PANGO_RENDERER,
+ GdkPangoRendererPrivate);
+
+- renderer->priv->last_part = (PangoRenderPart)-1;
+ renderer->priv->gc_changed = TRUE;
+ }
+
+@@ -527,6 +576,7 @@
+ PangoRendererClass *renderer_class = PANGO_RENDERER_CLASS (klass);
+
+ renderer_class->draw_glyphs = gdk_pango_renderer_draw_glyphs;
++ renderer_class->draw_trapezoid = gdk_pango_renderer_draw_trapezoid;
+ renderer_class->draw_rectangle = gdk_pango_renderer_draw_rectangle;
+ renderer_class->draw_error_underline = gdk_pango_renderer_draw_error_underline;
+ renderer_class->part_changed = gdk_pango_renderer_part_changed;
+@@ -647,6 +697,8 @@
+
+ priv = gdk_renderer->priv;
+
++ flush_trapezoids (gdk_renderer);
++
+ if (priv->drawable != drawable)
+ {
+ if (priv->drawable)
+@@ -681,6 +733,8 @@
+
+ priv = gdk_renderer->priv;
+
++ flush_trapezoids (gdk_renderer);
++
+ if (priv->base_gc != gc)
+ {
+ if (priv->base_gc)
+@@ -689,6 +743,20 @@
+ if (priv->base_gc)
+ g_object_ref (priv->base_gc);
+
++ if (priv->gc)
++ {
++ g_object_unref (priv->gc);
++ priv->gc = NULL;
++ }
++
++ priv->gc_color_set = FALSE;
++
++ if (priv->gc_stipple)
++ {
++ g_object_unref (priv->gc_stipple);
++ priv->gc_stipple = NULL;
++ }
++
+ priv->gc_changed = TRUE;
+ }
+ }
+@@ -1414,50 +1482,5 @@
+ return gdk_pango_context_get_for_screen (gdk_screen_get_default ());
+ }
+
+-/**
+- * gdk_pango_context_get_for_screen:
+- * @screen: the #GdkScreen for which the context is to be created.
+- *
+- * Creates a #PangoContext for @screen.
+- *
+- * The context must be freed when you're finished with it.
+- *
+- * When using GTK+, normally you should use gtk_widget_get_pango_context()
+- * instead of this function, to get the appropriate context for
+- * the widget you intend to render text onto.
+- *
+- * The newly created context will have the default font options
+- * (see #cairo_font_options_t) for the screen; if these options
+- * change it will not be updated. Using gtk_widget_get_pango_context()
+- * is more convenient if you want to keep a context around and track
+- * changes to the screen's font rendering settings.
+- *
+- * Return value: a new #PangoContext for @screen
+- *
+- * Since: 2.2
+- **/
+-PangoContext *
+-gdk_pango_context_get_for_screen (GdkScreen *screen)
+-{
+- PangoFontMap *fontmap;
+- PangoContext *context;
+- const cairo_font_options_t *options;
+- double dpi;
+-
+- g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+-
+- fontmap = pango_cairo_font_map_get_default ();
+-
+- context = pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap));
+-
+- options = gdk_screen_get_font_options (screen);
+- pango_cairo_context_set_font_options (context, options);
+-
+- dpi = gdk_screen_get_resolution (screen);
+- pango_cairo_context_set_resolution (context, dpi);
+-
+- return context;
+-}
+-
+ #define __GDK_PANGO_C__
+ #include "gdkaliasdef.c"
+Index: gtk+-2.10.6/gdk/gdk.symbols
+===================================================================
+--- gtk+-2.10.6.orig/gdk/gdk.symbols 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/gdk.symbols 2006-10-30 12:59:30.000000000 +0000
+@@ -861,7 +861,6 @@
+ gdk_pango_attr_embossed_new
+ gdk_pango_attr_stipple_new
+ gdk_pango_context_get
+-gdk_pango_context_get_for_screen
+ #ifndef GDK_DISABLE_DEPRECATED
+ gdk_pango_context_set_colormap
+ #endif
+@@ -877,6 +876,12 @@
+ #endif
+ #endif
+
++#if IN_HEADER(__GDK_PANGO_H__)
++#if IN_FILE(__GDK_PANGO_X11_C__)
++gdk_pango_context_get_for_screen
++#endif
++#endif
++
+ #if IN_HEADER(__GDK_PIXBUF_H__)
+ #if IN_FILE(__GDK_PIXBUF_DRAWABLE_C__)
+ gdk_pixbuf_get_from_drawable
+Index: gtk+-2.10.6/gdk/gdkwindow.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/gdkwindow.c 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/gdkwindow.c 2006-10-30 12:59:30.000000000 +0000
+@@ -1834,9 +1834,14 @@
+ }
+ else
+ {
+- method->cr = cairo_create (paint->surface);
++ /*method->cr = cairo_create (paint->surface);
+
+- gdk_cairo_set_source_color (method->cr, &private->bg_color);
++ gdk_cairo_set_source_color (method->cr, &private->bg_color);*/
++ GdkGC *gc = _gdk_drawable_get_scratch_gc (paint->pixmap, FALSE);
++
++ gdk_gc_set_foreground (gc, &(private->bg_color));
++
++ method->gc = g_object_ref (gc);
+ }
+ }
+
+Index: gtk+-2.10.6/gdk/x11/gdkdisplay-x11.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkdisplay-x11.c 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkdisplay-x11.c 2006-10-30 12:59:30.000000000 +0000
+@@ -190,7 +190,8 @@
+ display_x11->leader_window_title_set = FALSE;
+
+ display_x11->have_render = GDK_UNKNOWN;
+-
++ display_x11->have_render_with_trapezoids = GDK_UNKNOWN;
++
+ #ifdef HAVE_XFIXES
+ if (XFixesQueryExtension (display_x11->xdisplay,
+ &display_x11->xfixes_event_base,
+Index: gtk+-2.10.6/gdk/x11/gdkdisplay-x11.h
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkdisplay-x11.h 2006-10-30 12:58:29.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkdisplay-x11.h 2006-10-30 12:59:30.000000000 +0000
+@@ -78,6 +78,7 @@
+ gboolean use_xshm;
+ gboolean have_shm_pixmaps;
+ GdkTristate have_render;
++ GdkTristate have_render_with_trapezoids;
+ gboolean have_xfixes;
+ gint xfixes_event_base;
+
+Index: gtk+-2.10.6/gdk/x11/gdkdrawable-x11.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkdrawable-x11.c 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkdrawable-x11.c 2006-10-30 12:59:30.000000000 +0000
+@@ -26,6 +26,8 @@
+
+ #include <config.h>
+
++#include <pango/pangoxft.h>
++
+ #include "gdkx.h"
+ #include "gdkregion-generic.h"
+
+@@ -106,7 +108,21 @@
+ GdkGC *gc,
+ GdkPoint *points,
+ gint npoints);
+-
++
++static void gdk_x11_draw_glyphs (GdkDrawable *drawable,
++ GdkGC *gc,
++ PangoFont *font,
++ gint x,
++ gint y,
++ PangoGlyphString *glyphs);
++static void gdk_x11_draw_glyphs_transformed (GdkDrawable *drawable,
++ GdkGC *gc,
++ PangoMatrix *matrix,
++ PangoFont *font,
++ gint x,
++ gint y,
++ PangoGlyphString *glyphs);
++
+ static void gdk_x11_draw_image (GdkDrawable *drawable,
+ GdkGC *gc,
+ GdkImage *image,
+@@ -129,6 +145,11 @@
+ gint x_dither,
+ gint y_dither);
+
++static void gdk_x11_draw_trapezoids (GdkDrawable *drawable,
++ GdkGC *gc,
++ GdkTrapezoid *trapezoids,
++ gint n_trapezoids);
++
+ static cairo_surface_t *gdk_x11_ref_cairo_surface (GdkDrawable *drawable);
+
+ static void gdk_x11_set_colormap (GdkDrawable *drawable,
+@@ -163,8 +184,11 @@
+ drawable_class->draw_points = gdk_x11_draw_points;
+ drawable_class->draw_segments = gdk_x11_draw_segments;
+ drawable_class->draw_lines = gdk_x11_draw_lines;
++ drawable_class->draw_glyphs = gdk_x11_draw_glyphs;
++ drawable_class->draw_glyphs_transformed = gdk_x11_draw_glyphs_transformed;
+ drawable_class->draw_image = gdk_x11_draw_image;
+ drawable_class->draw_pixbuf = gdk_x11_draw_pixbuf;
++ drawable_class->draw_trapezoids = gdk_x11_draw_trapezoids;
+
+ drawable_class->ref_cairo_surface = gdk_x11_ref_cairo_surface;
+
+@@ -327,6 +351,72 @@
+ return x11display->have_render == GDK_YES;
+ }
+
++gboolean
++_gdk_x11_have_render_with_trapezoids (GdkDisplay *display)
++{
++ Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
++ GdkDisplayX11 *x11display = GDK_DISPLAY_X11 (display);
++
++ if (x11display->have_render_with_trapezoids == GDK_UNKNOWN)
++ {
++ x11display->have_render_with_trapezoids = GDK_NO;
++ if (_gdk_x11_have_render (display))
++ {
++ /*
++ * Require protocol >= 0.4 for CompositeTrapezoids support.
++ */
++ int major_version, minor_version;
++
++#define XRENDER_TETRAPEZOIDS_MAJOR 0
++#define XRENDER_TETRAPEZOIDS_MINOR 4
++
++ if (XRenderQueryVersion (xdisplay, &major_version,
++ &minor_version))
++ if ((major_version == XRENDER_TETRAPEZOIDS_MAJOR) &&
++ (minor_version >= XRENDER_TETRAPEZOIDS_MINOR))
++ x11display->have_render_with_trapezoids = GDK_YES;
++ }
++ }
++
++ return x11display->have_render_with_trapezoids == GDK_YES;
++}
++
++static XftDraw *
++gdk_x11_drawable_get_xft_draw (GdkDrawable *drawable)
++{
++ GdkDrawableImplX11 *impl = GDK_DRAWABLE_IMPL_X11 (drawable);
++
++ if (impl->xft_draw == NULL)
++ {
++ GdkColormap *colormap = gdk_drawable_get_colormap (drawable);
++
++ if (colormap)
++ {
++ GdkVisual *visual;
++
++ visual = gdk_colormap_get_visual (colormap);
++
++ impl->xft_draw = XftDrawCreate (GDK_SCREEN_XDISPLAY (impl->screen), impl->xid,
++ GDK_VISUAL_XVISUAL (visual), GDK_COLORMAP_XCOLORMAP (colormap));
++ }
++ else if (gdk_drawable_get_depth (drawable) == 1)
++ {
++ impl->xft_draw = XftDrawCreateBitmap (GDK_SCREEN_XDISPLAY (impl->screen), impl->xid);
++ }
++ else
++ {
++ g_warning ("Using Xft rendering requires the drawable argument to\n"
++ "have a specified colormap. All windows have a colormap,\n"
++ "however, pixmaps only have colormap by default if they\n"
++ "were created with a non-NULL window argument. Otherwise\n"
++ "a colormap must be set on them with gdk_drawable_set_colormap");
++ return NULL;
++ }
++ }
++
++ return impl->xft_draw;
++}
++
+ static Picture
+ gdk_x11_drawable_get_picture (GdkDrawable *drawable)
+ {
+@@ -393,6 +483,57 @@
+ }
+ }
+
++static void
++gdk_x11_drawable_update_xft_clip (GdkDrawable *drawable,
++ GdkGC *gc)
++{
++ XftDraw *xft_draw = gdk_x11_drawable_get_xft_draw (drawable);
++ GdkRegion *clip_region = _gdk_gc_get_clip_region (gc);
++
++ if (gc && clip_region)
++ {
++ GdkRegionBox *boxes = clip_region->rects;
++ gint n_boxes = clip_region->numRects;
++#if 0 /* Until XftDrawSetClipRectangles is there */
++ XRectangle *rects = g_new (XRectangle, n_boxes);
++ int i;
++
++ for (i=0; i < n_boxes; i++)
++ {
++ rects[i].x = CLAMP (boxes[i].x1 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT);
++ rects[i].y = CLAMP (boxes[i].y1 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT);
++ rects[i].width = CLAMP (boxes[i].x2 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT) - rects[i].x;
++ rects[i].height = CLAMP (boxes[i].y2 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT) - rects[i].y;
++ }
++ XftDrawSetClipRectangles (xft_draw, 0, 0, rects, n_boxes);
++
++ g_free (rects);
++#else
++ Region xregion = XCreateRegion ();
++ int i;
++
++ for (i=0; i < n_boxes; i++)
++ {
++ XRectangle rect;
++
++ rect.x = CLAMP (boxes[i].x1 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT);
++ rect.y = CLAMP (boxes[i].y1 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT);
++ rect.width = CLAMP (boxes[i].x2 + gc->clip_x_origin, G_MINSHORT, G_MAXSHORT) - rect.x;
++ rect.height = CLAMP (boxes[i].y2 + gc->clip_y_origin, G_MINSHORT, G_MAXSHORT) - rect.y;
++
++ XUnionRectWithRegion (&rect, xregion, xregion);
++ }
++
++ XftDrawSetClip (xft_draw, xregion);
++ XDestroyRegion (xregion);
++#endif
++ }
++ else
++ {
++ XftDrawSetClip (xft_draw, NULL);
++ }
++}
++
+ /*****************************************************
+ * X11 specific implementations of generic functions *
+ *****************************************************/
+@@ -780,6 +921,45 @@
+ }
+
+ static void
++gdk_x11_draw_glyphs (GdkDrawable *drawable,
++ GdkGC *gc,
++ PangoFont *font,
++ gint x,
++ gint y,
++ PangoGlyphString *glyphs)
++{
++ gdk_x11_draw_glyphs_transformed (drawable, gc, NULL,
++ font,
++ x * PANGO_SCALE,
++ y * PANGO_SCALE,
++ glyphs);
++}
++
++static void
++gdk_x11_draw_glyphs_transformed (GdkDrawable *drawable,
++ GdkGC *gc,
++ PangoMatrix *matrix,
++ PangoFont *font,
++ gint x,
++ gint y,
++ PangoGlyphString *glyphs)
++{
++ GdkDrawableImplX11 *impl;
++ PangoRenderer *renderer;
++
++ impl = GDK_DRAWABLE_IMPL_X11 (drawable);
++
++ g_return_if_fail (PANGO_XFT_IS_FONT (font));
++
++ renderer = _gdk_x11_renderer_get (drawable, gc);
++ if (matrix)
++ pango_renderer_set_matrix (renderer, matrix);
++ pango_renderer_draw_glyphs (renderer, font, glyphs, x, y);
++ if (matrix)
++ pango_renderer_set_matrix (renderer, NULL);
++}
++
++static void
+ gdk_x11_draw_image (GdkDrawable *drawable,
+ GdkGC *gc,
+ GdkImage *image,
+@@ -1444,6 +1624,47 @@
+ }
+
+ static void
++gdk_x11_draw_trapezoids (GdkDrawable *drawable,
++ GdkGC *gc,
++ GdkTrapezoid *trapezoids,
++ gint n_trapezoids)
++{
++ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
++ GdkDisplay *display = gdk_screen_get_display (screen);
++ XTrapezoid *xtrapezoids;
++ gint i;
++
++ if (!_gdk_x11_have_render_with_trapezoids (display))
++ {
++ GdkDrawable *wrapper = GDK_DRAWABLE_IMPL_X11 (drawable)->wrapper;
++ GDK_DRAWABLE_CLASS (_gdk_drawable_impl_x11_parent_class)->draw_trapezoids (wrapper, gc,
++ trapezoids, n_trapezoids);
++ return;
++ }
++
++ xtrapezoids = g_new (XTrapezoid, n_trapezoids);
++
++ for (i = 0; i < n_trapezoids; i++)
++ {
++ xtrapezoids[i].top = XDoubleToFixed (trapezoids[i].y1);
++ xtrapezoids[i].bottom = XDoubleToFixed (trapezoids[i].y2);
++ xtrapezoids[i].left.p1.x = XDoubleToFixed (trapezoids[i].x11);
++ xtrapezoids[i].left.p1.y = XDoubleToFixed (trapezoids[i].y1);
++ xtrapezoids[i].left.p2.x = XDoubleToFixed (trapezoids[i].x12);
++ xtrapezoids[i].left.p2.y = XDoubleToFixed (trapezoids[i].y2);
++ xtrapezoids[i].right.p1.x = XDoubleToFixed (trapezoids[i].x21);
++ xtrapezoids[i].right.p1.y = XDoubleToFixed (trapezoids[i].y1);
++ xtrapezoids[i].right.p2.x = XDoubleToFixed (trapezoids[i].x22);
++ xtrapezoids[i].right.p2.y = XDoubleToFixed (trapezoids[i].y2);
++ }
++
++ _gdk_x11_drawable_draw_xtrapezoids (drawable, gc,
++ xtrapezoids, n_trapezoids);
++
++ g_free (xtrapezoids);
++}
++
++static void
+ gdk_x11_cairo_surface_destroy (void *data)
+ {
+ GdkDrawableImplX11 *impl = data;
+@@ -1498,5 +1719,89 @@
+ return impl->cairo_surface;
+ }
+
++void
++_gdk_x11_drawable_draw_xtrapezoids (GdkDrawable *drawable,
++ GdkGC *gc,
++ XTrapezoid *xtrapezoids,
++ int n_trapezoids)
++{
++ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
++ GdkDisplay *display = gdk_screen_get_display (screen);
++ GdkDisplayX11 *x11display = GDK_DISPLAY_X11 (display);
++
++ XftDraw *draw;
++
++ if (!_gdk_x11_have_render_with_trapezoids (display))
++ {
++ /* This is the case of drawing the borders of the unknown glyph box
++ * without render on the display, we need to feed it back to
++ * fallback code. Not efficient, but doesn't matter.
++ */
++ GdkTrapezoid *trapezoids = g_new (GdkTrapezoid, n_trapezoids);
++ int i;
++
++ for (i = 0; i < n_trapezoids; i++)
++ {
++ trapezoids[i].y1 = XFixedToDouble (xtrapezoids[i].top);
++ trapezoids[i].y2 = XFixedToDouble (xtrapezoids[i].bottom);
++ trapezoids[i].x11 = XFixedToDouble (xtrapezoids[i].left.p1.x);
++ trapezoids[i].x12 = XFixedToDouble (xtrapezoids[i].left.p2.x);
++ trapezoids[i].x21 = XFixedToDouble (xtrapezoids[i].right.p1.x);
++ trapezoids[i].x22 = XFixedToDouble (xtrapezoids[i].right.p2.x);
++ }
++
++ gdk_x11_draw_trapezoids (drawable, gc, trapezoids, n_trapezoids);
++ g_free (trapezoids);
++
++ return;
++ }
++
++ gdk_x11_drawable_update_xft_clip (drawable, gc);
++ draw = gdk_x11_drawable_get_xft_draw (drawable);
++
++ if (!x11display->mask_format)
++ x11display->mask_format = XRenderFindStandardFormat (x11display->xdisplay,
++ PictStandardA8);
++
++ XRenderCompositeTrapezoids (x11display->xdisplay, PictOpOver,
++ _gdk_x11_gc_get_fg_picture (gc),
++ XftDrawPicture (draw),
++ x11display->mask_format,
++ - gc->ts_x_origin, - gc->ts_y_origin,
++ xtrapezoids, n_trapezoids);
++}
++
++void
++_gdk_x11_drawable_draw_xft_glyphs (GdkDrawable *drawable,
++ GdkGC *gc,
++ XftFont *xft_font,
++ XftGlyphSpec *glyphs,
++ gint n_glyphs)
++{
++ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
++ GdkDisplay *display = gdk_screen_get_display (screen);
++ GdkDisplayX11 *x11display = GDK_DISPLAY_X11 (display);
++ XftDraw *draw;
++
++ gdk_x11_drawable_update_xft_clip (drawable, gc);
++ draw = gdk_x11_drawable_get_xft_draw (drawable);
++
++ if (_gdk_x11_have_render (display))
++ {
++ XftGlyphSpecRender (x11display->xdisplay, PictOpOver,
++ _gdk_x11_gc_get_fg_picture (gc),
++ xft_font,
++ XftDrawPicture (draw),
++ - gc->ts_x_origin, - gc->ts_y_origin,
++ glyphs, n_glyphs);
++ }
++ else
++ {
++ XftColor color;
++
++ _gdk_gc_x11_get_fg_xft_color (gc, &color);
++ XftDrawGlyphSpec (draw, &color, xft_font, glyphs, n_glyphs);
++ }
++}
+ #define __GDK_DRAWABLE_X11_C__
+ #include "gdkaliasdef.c"
+Index: gtk+-2.10.6/gdk/x11/gdkdrawable-x11.h
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkdrawable-x11.h 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkdrawable-x11.h 2006-10-30 12:59:30.000000000 +0000
+@@ -33,6 +33,7 @@
+
+ #include <X11/Xlib.h>
+ #include <X11/extensions/Xrender.h>
++#include <X11/Xft/Xft.h>
+
+ G_BEGIN_DECLS
+
+@@ -68,6 +69,8 @@
+ Window xid;
+ GdkScreen *screen;
+
++ XftDraw *xft_draw;
++
+ Picture picture;
+ cairo_surface_t *cairo_surface;
+ };
+@@ -92,7 +95,15 @@
+ /* Note that the following take GdkDrawableImplX11, not the wrapper drawable */
+ void _gdk_x11_drawable_finish (GdkDrawable *drawable);
+ void _gdk_x11_drawable_update_size (GdkDrawable *drawable);
+-
++void _gdk_x11_drawable_draw_xtrapezoids (GdkDrawable *drawable,
++ GdkGC *gc,
++ XTrapezoid *xtrapezoids,
++ int n_trapezoids);
++void _gdk_x11_drawable_draw_xft_glyphs (GdkDrawable *drawable,
++ GdkGC *gc,
++ XftFont *xft_font,
++ XftGlyphSpec *glyphs,
++ gint n_glyphs);
+ G_END_DECLS
+
+ #endif /* __GDK_DRAWABLE_X11_H__ */
+Index: gtk+-2.10.6/gdk/x11/gdkgc-x11.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkgc-x11.c 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkgc-x11.c 2006-10-30 12:59:30.000000000 +0000
+@@ -80,7 +80,10 @@
+ gdk_gc_x11_finalize (GObject *object)
+ {
+ GdkGCX11 *x11_gc = GDK_GC_X11 (object);
+-
++
++ if (x11_gc->fg_picture != None)
++ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), x11_gc->fg_picture);
++
+ XFreeGC (GDK_GC_XDISPLAY (x11_gc), GDK_GC_XGC (x11_gc));
+
+ G_OBJECT_CLASS (_gdk_gc_x11_parent_class)->finalize (object);
+@@ -110,7 +113,7 @@
+
+ private->dirty_mask = 0;
+ private->have_clip_mask = FALSE;
+-
++
+ private->screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
+
+ private->depth = gdk_drawable_get_depth (drawable);
+@@ -339,6 +342,18 @@
+ }
+
+ static void
++clear_fg_picture (GdkGC *gc)
++{
++ GdkGCX11 *x11_gc = GDK_GC_X11 (gc);
++
++ if (x11_gc->fg_picture != None)
++ {
++ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), x11_gc->fg_picture);
++ x11_gc->fg_picture = None;
++ }
++}
++
++static void
+ gdk_x11_gc_set_values (GdkGC *gc,
+ GdkGCValues *values,
+ GdkGCValuesMask values_mask)
+@@ -367,6 +382,29 @@
+ x11_gc->have_clip_mask = values->clip_mask != NULL;
+ }
+
++ if (values_mask & GDK_GC_BACKGROUND)
++ {
++ if (_gdk_gc_get_fill (gc) == GDK_OPAQUE_STIPPLED)
++ clear_fg_picture (gc);
++ }
++
++ if (values_mask & GDK_GC_FILL)
++ {
++ clear_fg_picture (gc);
++ }
++
++ if (values_mask & GDK_GC_STIPPLE)
++ {
++ if (_gdk_gc_get_fill (gc) == GDK_STIPPLED || _gdk_gc_get_fill (gc) == GDK_OPAQUE_STIPPLED)
++ clear_fg_picture (gc);
++ }
++
++ if (values_mask & GDK_GC_TILE)
++ {
++ if (_gdk_gc_get_fill (gc) == GDK_TILED)
++ clear_fg_picture (gc);
++ }
++
+ gdk_x11_gc_values_to_xvalues (values, values_mask, &xvalues, &xvalues_mask);
+
+ XChangeGC (GDK_GC_XDISPLAY (gc),
+@@ -642,6 +680,8 @@
+ x11_dst_gc->dirty_mask = x11_src_gc->dirty_mask;
+ x11_dst_gc->have_clip_region = x11_src_gc->have_clip_region;
+ x11_dst_gc->have_clip_mask = x11_src_gc->have_clip_mask;
++
++ clear_fg_picture (dst_gc);
+ }
+
+ /**
+@@ -701,5 +741,359 @@
+ return gc_x11->xgc;
+ }
+
++/* Various bits of the below are roughly cribbed from XFree86
++ * lib/Xft/xftdraw.c, Copyright 2000, Keith Packard
++ */
++
++static XRenderPictFormat *
++foreground_format (GdkGC *gc)
++{
++ XRenderPictFormat pf;
++
++ pf.type = PictTypeDirect;
++ pf.depth = 32;
++ pf.direct.redMask = 0xff;
++ pf.direct.greenMask = 0xff;
++ pf.direct.blueMask = 0xff;
++ pf.direct.alphaMask = 0xff;
++
++ return XRenderFindFormat (GDK_GC_XDISPLAY (gc),
++ (PictFormatType |
++ PictFormatDepth |
++ PictFormatRedMask |
++ PictFormatGreenMask |
++ PictFormatBlueMask |
++ PictFormatAlphaMask),
++ &pf,
++ 0);
++}
++
++static Picture
++make_fg_tile_picture (GdkGC *gc)
++{
++ GdkGCX11 *x11_gc = GDK_GC_X11 (gc);
++ GdkVisual *visual = gdk_drawable_get_visual (_gdk_gc_get_tile (gc));
++ XRenderPictFormat *format = NULL;
++
++ if (visual)
++ {
++ format = XRenderFindVisualFormat (GDK_GC_XDISPLAY (gc),
++ GDK_VISUAL_XVISUAL (visual));
++ }
++ else if (x11_gc->depth == 1)
++ {
++ format = XRenderFindStandardFormat (GDK_GC_XDISPLAY (gc),
++ PictStandardA1);
++ }
++
++ if (format)
++ {
++ XRenderPictureAttributes pa;
++ pa.repeat = True;
++
++ return XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
++ GDK_PIXMAP_XID (_gdk_gc_get_tile (gc)),
++ format,
++ CPRepeat, &pa);
++ }
++
++ return None;
++}
++
++static Picture
++make_stipple_picture (GdkGC *gc)
++{
++ XRenderPictFormat *format = NULL;
++ XRenderPictureAttributes pa;
++
++ format = XRenderFindStandardFormat (GDK_GC_XDISPLAY (gc),
++ PictStandardA1);
++
++ pa.repeat = True;
++ return XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
++ GDK_PIXMAP_XID (_gdk_gc_get_stipple (gc)),
++ format,
++ CPRepeat, &pa);
++}
++
++static Picture
++make_color_picture (GdkGC *gc,
++ XRenderColor *color)
++{
++ GdkGCX11 *x11_gc = GDK_GC_X11 (gc);
++ XRenderPictureAttributes pa;
++ XRenderPictFormat *pix_format = foreground_format (gc);
++ Pixmap pix;
++ Picture picture;
++
++ if (!pix_format)
++ return None;
++
++ pix = XCreatePixmap (GDK_GC_XDISPLAY (gc),
++ GDK_SCREEN_XROOTWIN (x11_gc->screen),
++ 1, 1, pix_format->depth);
++ pa.repeat = True;
++ picture = XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
++ pix,
++ pix_format,
++ CPRepeat, &pa);
++ XFreePixmap (GDK_GC_XDISPLAY (gc), pix);
++
++ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
++ picture, color,
++ 0, 0, 1, 1);
++
++ return picture;
++}
++
++static void
++get_bg_color (GdkGC *gc,
++ XRenderColor *render_color)
++{
++ GdkColormap *cmap;
++
++ cmap = gdk_gc_get_colormap (gc);
++
++ if (cmap)
++ {
++ GdkColor color;
++
++ gdk_colormap_query_color (cmap, _gdk_gc_get_bg_pixel (gc), &color);
++
++ render_color->alpha = 0xffff;
++ render_color->red = color.red;
++ render_color->green = color.green;
++ render_color->blue = color.blue;
++ }
++ else /* Not worth warning, just use black */
++ {
++ render_color->alpha = 0xffff;
++ render_color->red = 0;
++ render_color->green = 0;
++ render_color->blue = 0;
++ }
++}
++
++/**
++ * _gdk_x11_gc_get_fg_picture:
++ * @gc: a #GdkGC
++ *
++ * Gets a Xrender Picture object suitable for being the source
++ * drawable for drawing with the foreground the graphics context.
++ *
++ * Return value: a Picture, owned by the GC; this cannot be
++ * used over subsequent modification of the GC.
++ **/
++Picture
++_gdk_x11_gc_get_fg_picture (GdkGC *gc)
++{
++ GdkGCX11 *x11_gc;
++ gboolean new = FALSE;
++ XftColor xftcolor;
++ GdkFill fill;
++ int width, height;
++
++ g_return_val_if_fail (GDK_IS_GC_X11 (gc), None);
++
++ if (!_gdk_x11_have_render (GDK_GC_DISPLAY (gc)))
++ return None;
++
++ x11_gc = GDK_GC_X11 (gc);
++
++ fill = GDK_SOLID;
++ width = 1;
++ height = 1;
++
++ switch (_gdk_gc_get_fill (gc))
++ {
++ case GDK_SOLID:
++ break;
++ case GDK_TILED:
++ if (_gdk_gc_get_tile (gc))
++ {
++ if (!x11_gc->fg_picture)
++ x11_gc->fg_picture = make_fg_tile_picture (gc);
++
++ if (x11_gc->fg_picture != None)
++ return x11_gc->fg_picture;
++ }
++ break;
++ case GDK_STIPPLED:
++ case GDK_OPAQUE_STIPPLED:
++ if (_gdk_gc_get_stipple (gc))
++ {
++ gdk_drawable_get_size (_gdk_gc_get_stipple (gc), &width, &height);
++ fill = _gdk_gc_get_fill (gc);
++ }
++ break;
++ }
++
++ if (x11_gc->fg_picture == None)
++ {
++ XRenderPictureAttributes pa;
++ XRenderPictFormat *pix_format = foreground_format (gc);
++ Pixmap pix;
++
++ if (!pix_format)
++ return None;
++
++ pix = XCreatePixmap (GDK_GC_XDISPLAY (gc),
++ GDK_SCREEN_XROOTWIN (x11_gc->screen),
++ width, height, pix_format->depth);
++ pa.repeat = True;
++ x11_gc->fg_picture = XRenderCreatePicture (GDK_GC_XDISPLAY (gc),
++ pix,
++ pix_format,
++ CPRepeat, &pa);
++ XFreePixmap (GDK_GC_XDISPLAY (gc), pix);
++
++ new = TRUE;
++ }
++
++ _gdk_gc_x11_get_fg_xft_color (gc, &xftcolor);
++
++ if (x11_gc->fg_picture_color.alpha != 0xffff ||
++ x11_gc->fg_picture_color.red != xftcolor.color.red ||
++ x11_gc->fg_picture_color.green != xftcolor.color.green ||
++ x11_gc->fg_picture_color.blue != xftcolor.color.blue)
++ {
++ x11_gc->fg_picture_color.alpha = 0xffff;
++ x11_gc->fg_picture_color.red = xftcolor.color.red;
++ x11_gc->fg_picture_color.green = xftcolor.color.green;
++ x11_gc->fg_picture_color.blue = xftcolor.color.blue;
++
++ new = TRUE;
++ }
++
++ switch (fill)
++ {
++ case GDK_SOLID:
++ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
++ x11_gc->fg_picture, &x11_gc->fg_picture_color,
++ 0, 0, width, height);
++ break;
++ case GDK_STIPPLED:
++ {
++ Picture stipple_picture = make_stipple_picture (gc);
++
++ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
++ x11_gc->fg_picture, &x11_gc->fg_picture_color,
++ 0, 0, width, height);
++ XRenderComposite (GDK_GC_XDISPLAY (gc),
++ PictOpInReverse,
++ stipple_picture, None, x11_gc->fg_picture,
++ 0, 0, 0, 0, 0, 0, width, height);
++
++ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), stipple_picture);
++ }
++ break;
++ case GDK_OPAQUE_STIPPLED:
++ {
++ XRenderColor bg_color;
++
++ Picture stipple_picture = make_stipple_picture (gc);
++ Picture fg_picture = make_color_picture (gc, &x11_gc->fg_picture_color);
++
++ get_bg_color (gc, &bg_color);
++
++ XRenderFillRectangle (GDK_GC_XDISPLAY (gc), PictOpSrc,
++ x11_gc->fg_picture, &bg_color,
++ 0, 0, width, height);
++ XRenderComposite (GDK_GC_XDISPLAY (gc),
++ PictOpOver,
++ fg_picture, stipple_picture, x11_gc->fg_picture,
++ 0, 0, 0, 0, 0, 0, width, height);
++
++ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), stipple_picture);
++ XRenderFreePicture (GDK_GC_XDISPLAY (x11_gc), fg_picture);
++ }
++ break;
++ case GDK_TILED:
++ g_assert_not_reached (); /* handled above */
++ break;
++ }
++
++ return x11_gc->fg_picture;
++}
++
++/**
++ * _gdk_gc_x11_get_fg_xft_color:
++ * @gc: a #GdkGC
++ * @xftcolor: location to store the color
++ *
++ * Gets the foreground color of the GC as a XftColor.
++ **/
++void
++_gdk_gc_x11_get_fg_xft_color (GdkGC *gc,
++ XftColor *xftcolor)
++{
++ GdkGCX11 *x11_gc;
++ GdkColormap *cmap;
++ GdkColor color;
++
++ g_return_if_fail (GDK_IS_GC_X11 (gc));
++
++ x11_gc = GDK_GC_X11 (gc);
++
++ cmap = gdk_gc_get_colormap (gc);
++
++ xftcolor->pixel = _gdk_gc_get_fg_pixel (gc);
++
++ if (cmap)
++ {
++ gdk_colormap_query_color (cmap, xftcolor->pixel, &color);
++ xftcolor->color.alpha = 0xffff;
++ xftcolor->color.red = color.red;
++ xftcolor->color.green = color.green;
++ xftcolor->color.blue = color.blue;
++ }
++ else if (x11_gc->depth == 1)
++ {
++ /* Drawing with Xft on a bitmap is a bit bizzare; it
++ * takes alpha >= 0x8000 to mean 'set to 1' and
++ * alpha < 0x8000 to mean 'set to 0'.
++ */
++ if (xftcolor->pixel)
++ {
++ xftcolor->color.red = 0xffff;
++ xftcolor->color.green = 0xffff;
++ xftcolor->color.blue = 0xffff;
++ xftcolor->color.alpha = 0xffff;
++ }
++ else
++ {
++ xftcolor->color.red = 0;
++ xftcolor->color.green = 0;
++ xftcolor->color.blue = 0;
++ xftcolor->color.alpha = 0;
++ }
++ }
++ else
++ {
++ g_warning ("Using Xft rendering requires the GC argument to have a\n"
++ "specified colormap. If the GC was created for a drawable\n"
++ "with a colormap, the colormap will be set on the GC\n"
++ "automatically. Otherwise, a colormap must be set on it with"
++ "gdk_gc_set_colormap");
++ }
++}
++
++void
++_gdk_windowing_gc_get_foreground (GdkGC *gc,
++ GdkColor *color)
++{
++ GdkColormap *cmap;
++
++ g_return_if_fail (GDK_IS_GC_X11 (gc));
++
++ color->pixel = _gdk_gc_get_fg_pixel (gc);
++
++ cmap = gdk_gc_get_colormap (gc);
++
++ if (cmap)
++ gdk_colormap_query_color (cmap, _gdk_gc_get_fg_pixel (gc), color);
++ else
++ g_warning ("No colormap in _gdk_windowing_gc_get_foreground");
++}
+ #define __GDK_GC_X11_C__
+ #include "gdkaliasdef.c"
+Index: gtk+-2.10.6/gdk/x11/gdkprivate-x11.h
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkprivate-x11.h 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkprivate-x11.h 2006-10-30 12:59:30.000000000 +0000
+@@ -63,6 +63,9 @@
+ guint have_clip_region : 1;
+ guint have_clip_mask : 1;
+ guint depth : 8;
++
++ Picture fg_picture;
++ XRenderColor fg_picture_color;
+ };
+
+ struct _GdkGCX11Class
+@@ -102,6 +105,11 @@
+ GType _gdk_gc_x11_get_type (void);
+
+ gboolean _gdk_x11_have_render (GdkDisplay *display);
++gboolean _gdk_x11_have_render_with_trapezoids (GdkDisplay *display);
++
++Picture _gdk_x11_gc_get_fg_picture (GdkGC *gc);
++void _gdk_gc_x11_get_fg_xft_color (GdkGC *gc,
++ XftColor *xftcolor);
+
+ GdkGC *_gdk_x11_gc_new (GdkDrawable *drawable,
+ GdkGCValues *values,
+Index: gtk+-2.10.6/gdk/x11/gdkwindow-x11.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkwindow-x11.c 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkwindow-x11.c 2006-10-30 12:59:30.000000000 +0000
+@@ -1114,7 +1114,8 @@
+ {
+ GdkWindowObject *private = (GdkWindowObject *)window;
+ GdkToplevelX11 *toplevel;
+-
++ GdkDrawableImplX11 *draw_impl;
++
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+ _gdk_selection_window_destroyed (window);
+@@ -1126,6 +1127,11 @@
+ if (toplevel)
+ gdk_toplevel_x11_free_contents (GDK_WINDOW_DISPLAY (window), toplevel);
+
++ draw_impl = GDK_DRAWABLE_IMPL_X11 (private->impl);
++
++ if (draw_impl->xft_draw)
++ XftDrawDestroy (draw_impl->xft_draw);
++
+ _gdk_x11_drawable_finish (private->impl);
+
+ if (!recursing && !foreign_destroy)
+Index: gtk+-2.10.6/gdk/x11/Makefile.am
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/Makefile.am 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/Makefile.am 2006-10-30 12:59:30.000000000 +0000
+@@ -37,6 +37,7 @@
+ gdkinput.c \
+ gdkkeys-x11.c \
+ gdkmain-x11.c \
++ gdkpango-x11.c \
+ gdkpixmap-x11.c \
+ gdkpixmap-x11.h \
+ gdkproperty-x11.c \
+Index: gtk+-2.10.6/gtk/gtkcalendar.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkcalendar.c 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gtk/gtkcalendar.c 2006-10-30 12:59:30.000000000 +0000
+@@ -1821,7 +1821,7 @@
+ }
+ }
+
+-
++
+ /****************************************
+ * Repainting *
+ ****************************************/
+@@ -1831,7 +1831,7 @@
+ {
+ GtkWidget *widget = GTK_WIDGET (calendar);
+ GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
+- cairo_t *cr;
++ GdkGC *gc;
+ char buffer[255];
+ int x, y;
+ gint header_width;
+@@ -1849,7 +1849,7 @@
+ else
+ year_left = !priv->year_before;
+
+- cr = gdk_cairo_create (priv->header_win);
++ gc = calendar->gc;
+
+ header_width = widget->allocation.width - 2 * widget->style->xthickness;
+
+@@ -1902,9 +1902,9 @@
+ - (max_year_width - logical_rect.width)/2);
+
+
+- gdk_cairo_set_source_color (cr, HEADER_FG_COLOR (GTK_WIDGET (calendar)));
+- cairo_move_to (cr, x, y);
+- pango_cairo_show_layout (cr, layout);
++ gdk_gc_set_foreground (gc, HEADER_FG_COLOR (GTK_WIDGET (calendar)));
++ gdk_draw_layout (priv->header_win, gc, x, y, layout);
++
+
+ /* Draw month */
+ g_snprintf (buffer, sizeof (buffer), "%s", default_monthname[calendar->month]);
+@@ -1924,19 +1924,19 @@
+ else
+ x = 3 + priv->arrow_width + (max_month_width - logical_rect.width)/2;
+
+- cairo_move_to (cr, x, y);
+- pango_cairo_show_layout (cr, layout);
+-
++ gdk_draw_layout (priv->header_win, gc, x, y, layout);
++
++ gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));
++
+ g_object_unref (layout);
+- cairo_destroy (cr);
+ }
+
+ static void
+ calendar_paint_day_names (GtkCalendar *calendar)
+ {
+ GtkWidget *widget = GTK_WIDGET (calendar);
++ GdkGC *gc;
+ GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
+- cairo_t *cr;
+ char buffer[255];
+ int day,i;
+ int day_width, cal_width;
+@@ -1946,8 +1946,7 @@
+ gint focus_padding;
+ gint focus_width;
+
+- cr = gdk_cairo_create (priv->day_name_win);
+-
++ gc = calendar->gc;
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_padding,
+@@ -1961,22 +1960,19 @@
+ * Draw rectangles as inverted background for the labels.
+ */
+
+- gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget));
+- cairo_rectangle (cr,
+- CALENDAR_MARGIN, CALENDAR_MARGIN,
+- cal_width-CALENDAR_MARGIN * 2,
+- priv->day_name_h - CALENDAR_MARGIN);
+- cairo_fill (cr);
+-
++ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget));
++ gdk_draw_rectangle (priv->day_name_win, gc, TRUE,
++ CALENDAR_MARGIN, CALENDAR_MARGIN,
++ cal_width-CALENDAR_MARGIN * 2,
++ priv->day_name_h - CALENDAR_MARGIN);
++
+ if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
+- {
+- cairo_rectangle (cr,
+- CALENDAR_MARGIN,
+- priv->day_name_h - CALENDAR_YSEP,
+- priv->week_width - CALENDAR_YSEP - CALENDAR_MARGIN,
+- CALENDAR_YSEP);
+- cairo_fill (cr);
+- }
++ gdk_draw_rectangle (priv->day_name_win, gc, TRUE,
++ CALENDAR_MARGIN,
++ priv->day_name_h - CALENDAR_YSEP,
++ priv->week_width - CALENDAR_YSEP - CALENDAR_MARGIN,
++ CALENDAR_YSEP);
++
+
+ /*
+ * Write the labels
+@@ -1984,7 +1980,7 @@
+
+ layout = gtk_widget_create_pango_layout (widget, NULL);
+
+- gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget));
++ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget));
+ for (i = 0; i < 7; i++)
+ {
+ if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL)
+@@ -1997,19 +1993,18 @@
+ pango_layout_set_text (layout, buffer, -1);
+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+
+- cairo_move_to (cr,
+- (CALENDAR_MARGIN +
+- + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
+- (priv->week_width + (priv->week_width ? CALENDAR_XSEP : 0))
+- : 0)
+- + day_wid_sep * i
+- + (day_width - logical_rect.width)/2),
+- CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y);
+- pango_cairo_show_layout (cr, layout);
++ gdk_draw_layout (priv->day_name_win, gc,
++ (CALENDAR_MARGIN +
++ + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
++ (priv->week_width + (priv->week_width ? CALENDAR_XSEP : 0))
++ : 0)
++ + day_wid_sep * i
++ + (day_width - logical_rect.width)/2),
++ CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y,
++ layout);
+ }
+
+ g_object_unref (layout);
+- cairo_destroy (cr);
+ }
+
+ static void
+@@ -2017,7 +2012,7 @@
+ {
+ GtkWidget *widget = GTK_WIDGET (calendar);
+ GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
+- cairo_t *cr;
++ GdkGC *gc;
+ gint row, week = 0, year;
+ gint x_loc;
+ char buffer[32];
+@@ -2027,7 +2022,7 @@
+ gint focus_padding;
+ gint focus_width;
+
+- cr = gdk_cairo_create (priv->week_win);
++ gc = calendar->gc;
+
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+@@ -2038,20 +2033,20 @@
+ * Draw a rectangle as inverted background for the labels.
+ */
+
+- gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget));
++ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget));
+ if (priv->day_name_win)
+- cairo_rectangle (cr,
+- CALENDAR_MARGIN,
+- 0,
+- priv->week_width - CALENDAR_MARGIN,
+- priv->main_h - CALENDAR_MARGIN);
++ gdk_draw_rectangle (priv->week_win, gc, TRUE,
++ CALENDAR_MARGIN,
++ 0,
++ priv->week_width - CALENDAR_MARGIN,
++ priv->main_h - CALENDAR_MARGIN);
+ else
+- cairo_rectangle (cr,
+- CALENDAR_MARGIN,
+- CALENDAR_MARGIN,
+- priv->week_width - CALENDAR_MARGIN,
+- priv->main_h - 2 * CALENDAR_MARGIN);
+- cairo_fill (cr);
++ gdk_draw_rectangle (priv->week_win, gc, TRUE,
++ CALENDAR_MARGIN,
++ CALENDAR_MARGIN,
++ priv->week_width - CALENDAR_MARGIN,
++ priv->main_h - 2 * CALENDAR_MARGIN);
++
+
+ /*
+ * Write the labels
+@@ -2059,7 +2054,7 @@
+
+ layout = gtk_widget_create_pango_layout (widget, NULL);
+
+- gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget));
++ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget));
+ day_height = calendar_row_height (calendar);
+ for (row = 0; row < 6; row++)
+ {
+@@ -2095,12 +2090,10 @@
+ - logical_rect.width
+ - CALENDAR_XSEP - focus_padding - focus_width);
+
+- cairo_move_to (cr, x_loc, y_loc);
+- pango_cairo_show_layout (cr, layout);
++ gdk_draw_layout (priv->week_win, gc, x_loc, y_loc, layout);
+ }
+
+ g_object_unref (layout);
+- cairo_destroy (cr);
+ }
+
+ static void
+@@ -2149,7 +2142,7 @@
+ {
+ GtkWidget *widget = GTK_WIDGET (calendar);
+ GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
+- cairo_t *cr;
++ GdkGC *gc;
+ GdkColor *text_color;
+ gchar buffer[32];
+ gint day;
+@@ -2162,7 +2155,7 @@
+ g_return_if_fail (row < 6);
+ g_return_if_fail (col < 7);
+
+- cr = gdk_cairo_create (priv->main_win);
++ gc = calendar->gc;
+
+ day = calendar->day[row][col];
+
+@@ -2170,11 +2163,11 @@
+
+ if (calendar->day_month[row][col] == MONTH_PREV)
+ {
+- text_color = PREV_MONTH_COLOR (widget);
++ gdk_gc_set_foreground (gc, PREV_MONTH_COLOR (GTK_WIDGET (calendar)));
+ }
+ else if (calendar->day_month[row][col] == MONTH_NEXT)
+ {
+- text_color = NEXT_MONTH_COLOR (widget);
++ gdk_gc_set_foreground (gc, NEXT_MONTH_COLOR (GTK_WIDGET (calendar)));
+ }
+ else
+ {
+@@ -2188,16 +2181,16 @@
+ #endif
+ if (calendar->selected_day == day)
+ {
+- gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget));
+- gdk_cairo_rectangle (cr, &day_rect);
+- cairo_fill (cr);
++ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (GTK_WIDGET (calendar)));
++ gdk_draw_rectangle (priv->main_win, gc, TRUE, day_rect.x, day_rect.y,
++ day_rect.width, day_rect.height);
+ }
+ if (calendar->selected_day == day)
+- text_color = SELECTED_FG_COLOR (widget);
++ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar)));
+ else if (calendar->marked_date[day-1])
+- text_color = MARKED_COLOR (widget);
++ gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar)));
+ else
+- text_color = NORMAL_DAY_COLOR (widget);
++ gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar)));
+ }
+
+ /* Translators: this defines whether the day numbers should use
+@@ -2219,16 +2212,13 @@
+ x_loc -= logical_rect.width;
+ y_loc = day_rect.y + (day_rect.height - logical_rect.height) / 2;
+
+- gdk_cairo_set_source_color (cr, text_color);
+- cairo_move_to (cr, x_loc, y_loc);
+- pango_cairo_show_layout (cr, layout);
++ gdk_draw_layout (priv->main_win, gc,
++ x_loc, y_loc, layout);
+
+ if (calendar->marked_date[day-1]
+ && calendar->day_month[row][col] == MONTH_CURRENT)
+- {
+- cairo_move_to (cr, x_loc - 1, y_loc);
+- pango_cairo_show_layout (cr, layout);
+- }
++ gdk_draw_layout (priv->main_win, gc,
++ x_loc-1, y_loc, layout);
+
+ if (GTK_WIDGET_HAS_FOCUS (calendar)
+ && calendar->focus_row == row && calendar->focus_col == col)
+@@ -2253,7 +2243,6 @@
+ }
+
+ g_object_unref (layout);
+- cairo_destroy (cr);
+ }
+
+ static void
+Index: gtk+-2.10.6/gtk/gtkentry.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkentry.c 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gtk/gtkentry.c 2006-10-30 12:59:30.000000000 +0000
+@@ -3333,7 +3333,6 @@
+ if (GTK_WIDGET_DRAWABLE (entry))
+ {
+ PangoLayout *layout = gtk_entry_ensure_layout (entry, TRUE);
+- cairo_t *cr;
+ gint x, y;
+ gint start_pos, end_pos;
+
+@@ -3341,56 +3340,60 @@
+
+ get_layout_position (entry, &x, &y);
+
+- cr = gdk_cairo_create (entry->text_area);
+-
+- cairo_move_to (cr, x, y);
+- gdk_cairo_set_source_color (cr, &widget->style->text [widget->state]);
+- pango_cairo_show_layout (cr, layout);
+-
++ gdk_draw_layout (entry->text_area, widget->style->text_gc [widget->state],
++ x, y,
++ layout);
++
+ if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos))
+ {
+ gint *ranges;
+ gint n_ranges, i;
+ PangoRectangle logical_rect;
+- GdkColor *selection_color, *text_color;
++ GdkGC *selection_gc, *text_gc;
+ GtkBorder inner_border;
+-
++ GdkRegion *clip_region;
++
+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+ gtk_entry_get_pixel_ranges (entry, &ranges, &n_ranges);
+
+ if (GTK_WIDGET_HAS_FOCUS (entry))
+ {
+- selection_color = &widget->style->base [GTK_STATE_SELECTED];
+- text_color = &widget->style->text [GTK_STATE_SELECTED];
++ selection_gc = widget->style->base_gc [GTK_STATE_SELECTED];
++ text_gc = widget->style->text_gc [GTK_STATE_SELECTED];
+ }
+ else
+ {
+- selection_color = &widget->style->base [GTK_STATE_ACTIVE];
+- text_color = &widget->style->text [GTK_STATE_ACTIVE];
++ selection_gc = widget->style->base_gc [GTK_STATE_ACTIVE];
++ text_gc = widget->style->text_gc [GTK_STATE_ACTIVE];
+ }
+-
++
++ clip_region = gdk_region_new ();
+ _gtk_entry_effective_inner_border (entry, &inner_border);
+
+ for (i = 0; i < n_ranges; ++i)
+- cairo_rectangle (cr,
+- inner_border.left - entry->scroll_offset + ranges[2 * i],
+- y,
+- ranges[2 * i + 1],
+- logical_rect.height);
++ {
++ GdkRectangle rect;
+
+- cairo_clip (cr);
+-
+- gdk_cairo_set_source_color (cr, selection_color);
+- cairo_paint (cr);
++ rect.x = inner_border.left - entry->scroll_offset + ranges[2 * i];
++ rect.y = y;
++ rect.width = ranges[2 * i + 1];
++ rect.height = logical_rect.height;
++
++ gdk_draw_rectangle (entry->text_area, selection_gc, TRUE,
++ rect.x, rect.y, rect.width, rect.height);
+
+- cairo_move_to (cr, x, y);
+- gdk_cairo_set_source_color (cr, text_color);
+- pango_cairo_show_layout (cr, layout);
++ gdk_region_union_with_rect (clip_region, &rect);
++ }
+
++ gdk_gc_set_clip_region (text_gc, clip_region);
++ gdk_draw_layout (entry->text_area, text_gc,
++ x, y,
++ layout);
++ gdk_gc_set_clip_region (text_gc, NULL);
++
++ gdk_region_destroy (clip_region);
+ g_free (ranges);
+ }
+-
+- cairo_destroy (cr);
+ }
+ }
+
+Index: gtk+-2.10.6/gtk/gtkwidget.c
+===================================================================
+--- gtk+-2.10.6.orig/gtk/gtkwidget.c 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gtk/gtkwidget.c 2006-10-30 12:59:30.000000000 +0000
+@@ -5445,7 +5445,8 @@
+ GdkScreen *screen;
+
+ update_pango_context (widget, context);
+-
++/* TODO: Figure out the proper way to handle this in a pangoxft setting
++
+ screen = gtk_widget_get_screen_unchecked (widget);
+ if (screen)
+ {
+@@ -5453,7 +5454,7 @@
+ gdk_screen_get_resolution (screen));
+ pango_cairo_context_set_font_options (context,
+ gdk_screen_get_font_options (screen));
+- }
++ }*/
+ }
+ }
+
+Index: gtk+-2.10.6/gdk/x11/gdkpango-x11.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkpango-x11.c 2006-10-30 12:59:30.000000000 +0000
+@@ -0,0 +1,174 @@
++/* GDK - The GIMP Drawing Kit
++ * Copyright (C) 2000 Red Hat, Inc.
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#include <config.h>
++#include <stdlib.h>
++
++#include "gdkx.h"
++#include "gdkdisplay-x11.h"
++#include "gdkpango.h"
++#include <pango/pangoxft.h>
++#include <pango/pangoxft-render.h>
++#include "gdkalias.h"
++
++#include <math.h>
++
++typedef struct _GdkX11Renderer GdkX11Renderer;
++typedef struct _GdkX11RendererClass GdkX11RendererClass;
++
++#define GDK_TYPE_X11_RENDERER (_gdk_x11_renderer_get_type())
++#define GDK_X11_RENDERER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_RENDERER, GdkX11Renderer))
++#define GDK_IS_X11_RENDERER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_RENDERER))
++#define GDK_X11_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_RENDERER, GdkX11RendererClass))
++#define GDK_IS_X11_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_RENDERER))
++#define GDK_X11_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_RENDERER, GdkX11RendererClass))
++
++#define MAX_RENDER_PART PANGO_RENDER_PART_STRIKETHROUGH
++
++struct _GdkX11Renderer
++{
++ PangoXftRenderer parent_instance;
++
++ XRenderPictFormat *mask_format;
++
++ GdkDrawable *drawable;
++ GdkGC *gc;
++};
++
++struct _GdkX11RendererClass
++{
++ PangoXftRendererClass parent_class;
++};
++
++G_DEFINE_TYPE (GdkX11Renderer, _gdk_x11_renderer, PANGO_TYPE_XFT_RENDERER)
++
++static void
++gdk_x11_renderer_finalize (GObject *object)
++{
++ G_OBJECT_CLASS (_gdk_x11_renderer_parent_class)->finalize (object);
++}
++
++static void
++gdk_x11_renderer_composite_trapezoids (PangoXftRenderer *xftrenderer,
++ PangoRenderPart part,
++ XTrapezoid *trapezoids,
++ int n_trapezoids)
++{
++ /* Because we only use this renderer for "draw_glyphs()" calls, we
++ * won't hit this code path much. However, it is hit for drawing
++ * the "unknown glyph" hex squares. We can safely ignore the part,
++ */
++ GdkX11Renderer *x11_renderer = GDK_X11_RENDERER (xftrenderer);
++
++ _gdk_x11_drawable_draw_xtrapezoids (x11_renderer->drawable,
++ x11_renderer->gc,
++ trapezoids, n_trapezoids);
++
++}
++
++static void
++gdk_x11_renderer_composite_glyphs (PangoXftRenderer *xftrenderer,
++ XftFont *xft_font,
++ XftGlyphSpec *glyphs,
++ gint n_glyphs)
++{
++ GdkX11Renderer *x11_renderer = GDK_X11_RENDERER (xftrenderer);
++
++ _gdk_x11_drawable_draw_xft_glyphs (x11_renderer->drawable,
++ x11_renderer->gc,
++ xft_font, glyphs, n_glyphs);
++}
++
++static void
++_gdk_x11_renderer_init (GdkX11Renderer *renderer)
++{
++}
++
++static void
++_gdk_x11_renderer_class_init (GdkX11RendererClass *klass)
++{
++ PangoXftRendererClass *xftrenderer_class = PANGO_XFT_RENDERER_CLASS (klass);
++ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++
++ xftrenderer_class->composite_glyphs = gdk_x11_renderer_composite_glyphs;
++ xftrenderer_class->composite_trapezoids = gdk_x11_renderer_composite_trapezoids;
++
++ object_class->finalize = gdk_x11_renderer_finalize;
++}
++
++PangoRenderer *
++_gdk_x11_renderer_get (GdkDrawable *drawable,
++ GdkGC *gc)
++{
++ GdkScreen *screen = GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
++ GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
++ GdkX11Renderer *x11_renderer;
++
++ if (!screen_x11->renderer)
++ {
++ screen_x11->renderer = g_object_new (GDK_TYPE_X11_RENDERER,
++ "display", GDK_SCREEN_XDISPLAY (screen),
++ "screen", GDK_SCREEN_XNUMBER (screen),
++ NULL);
++ }
++
++ x11_renderer = GDK_X11_RENDERER (screen_x11->renderer);
++
++ x11_renderer->drawable = drawable;
++ x11_renderer->gc = gc;
++
++ return screen_x11->renderer;
++}
++
++/**
++ * gdk_pango_context_get_for_screen:
++ * @screen: the #GdkScreen for which the context is to be created.
++ *
++ * Creates a #PangoContext for @screen.
++ *
++ * The context must be freed when you're finished with it.
++ *
++ * When using GTK+, normally you should use gtk_widget_get_pango_context()
++ * instead of this function, to get the appropriate context for
++ * the widget you intend to render text onto.
++ *
++ * Return value: a new #PangoContext for @screen
++ *
++ * Since: 2.2
++ **/
++PangoContext *
++gdk_pango_context_get_for_screen (GdkScreen *screen)
++{
++ PangoContext *context;
++
++ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
++
++ if (screen->closed)
++ return NULL;
++
++ context = pango_xft_get_context (GDK_SCREEN_XDISPLAY (screen),
++ GDK_SCREEN_X11 (screen)->screen_num);
++
++ g_object_set_data (G_OBJECT (context), "gdk-pango-screen", screen);
++
++ return context;
++}
++
++#define __GDK_PANGO_X11_C__
++#include "gdkaliasdef.c"
+Index: gtk+-2.10.6/gdk/x11/gdkpixmap-x11.c
+===================================================================
+--- gtk+-2.10.6.orig/gdk/x11/gdkpixmap-x11.c 2006-10-30 12:58:30.000000000 +0000
++++ gtk+-2.10.6/gdk/x11/gdkpixmap-x11.c 2006-10-30 12:59:30.000000000 +0000
+@@ -119,6 +119,9 @@
+ {
+ GdkDrawableImplX11 *draw_impl = GDK_DRAWABLE_IMPL_X11 (impl);
+
++ if (draw_impl->xft_draw)
++ XftDrawDestroy (draw_impl->xft_draw);
++
+ _gdk_x11_drawable_finish (GDK_DRAWABLE (draw_impl));
+ }
+
+--- gtk+-2.10.6.orig/gtk/gtkcalendar.c.orig 2006-11-14 14:39:34.000000000 -0800
++++ gtk+-2.10.6/gtk/gtkcalendar.c 2006-11-14 14:37:34.000000000 -0800
+@@ -1495,6 +1495,10 @@ gtk_calendar_realize (GtkWidget *widget)
+ BACKGROUND_COLOR ( GTK_WIDGET ( calendar)));
+ gdk_window_show (priv->main_win);
+ gdk_window_set_user_data (priv->main_win, widget);
++
++ /* Set widgets gc */
++ calendar->gc = gdk_gc_new (widget->window);
++
+ gdk_window_set_background (widget->window, BACKGROUND_COLOR (widget));
+ gdk_window_show (widget->window);
+ gdk_window_set_user_data (widget->window, widget);
diff --git a/packages/gtk+/gtk+-2.12.3/range-no-redraw.patch b/packages/gtk+/gtk+-2.12.3/range-no-redraw.patch
new file mode 100644
index 0000000000..14387b8a2e
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/range-no-redraw.patch
@@ -0,0 +1,127 @@
+5f084ea0849d5967a3c22821542ecaaa8accb398
+diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
+index bd95351..64e0e59 100644
+--- gtk/gtkrange.c
++++ gtk/gtkrange.c
+@@ -109,6 +109,8 @@ struct _GtkRangeLayout
+ GtkSensitivityType upper_sensitivity;
+
+ gdouble fill_level;
++
++ guint motion_idle_id;
+ };
+
+
+@@ -205,6 +207,8 @@ static gboolean gtk_range_real_change_value (GtkRange *range,
+ static void gtk_range_update_value (GtkRange *range);
+ static gboolean gtk_range_key_press (GtkWidget *range,
+ GdkEventKey *event);
++static void gtk_range_add_motion_idle (GtkRange *range);
++static void gtk_range_remove_motion_idle (GtkRange *range);
+
+
+ static guint signals[LAST_SIGNAL];
+@@ -1167,6 +1171,7 @@ gtk_range_destroy (GtkObject *object)
+
+ gtk_range_remove_step_timer (range);
+ gtk_range_remove_update_timer (range);
++ gtk_range_remove_motion_idle (range);
+
+ if (range->adjustment)
+ {
+@@ -1276,6 +1281,7 @@ gtk_range_unrealize (GtkWidget *widget)
+
+ gtk_range_remove_step_timer (range);
+ gtk_range_remove_update_timer (range);
++ gtk_range_remove_motion_idle (range);
+
+ gdk_window_set_user_data (range->event_window, NULL);
+ gdk_window_destroy (range->event_window);
+@@ -2165,7 +2171,7 @@ gtk_range_motion_notify (GtkWidget *widget,
+ gtk_widget_queue_draw (widget);
+
+ if (range->layout->grab_location == MOUSE_SLIDER)
+- update_slider_position (range, x, y);
++ gtk_range_add_motion_idle (range);
+
+ /* We handled the event if the mouse was in the range_rect */
+ return range->layout->mouse_location != MOUSE_OUTSIDE;
+@@ -3335,9 +3341,10 @@ initial_timeout (gpointer data)
+ g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL);
+
+ range = GTK_RANGE (data);
+- range->timer->timeout_id = gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR,
+- second_timeout,
+- range);
++ range->timer->timeout_id =
++ gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR,
++ second_timeout,
++ range);
+ /* remove self */
+ return FALSE;
+ }
+@@ -3357,9 +3364,8 @@ gtk_range_add_step_timer (GtkRange *range,
+
+ range->timer = g_new (GtkRangeStepTimer, 1);
+
+- range->timer->timeout_id = gdk_threads_add_timeout (timeout,
+- initial_timeout,
+- range);
++ range->timer->timeout_id =
++ gdk_threads_add_timeout (timeout, initial_timeout, range);
+ range->timer->step = step;
+
+ gtk_range_scroll (range, range->timer->step);
+@@ -3397,9 +3403,8 @@ gtk_range_reset_update_timer (GtkRange *range)
+ {
+ gtk_range_remove_update_timer (range);
+
+- range->update_timeout_id = gdk_threads_add_timeout (UPDATE_DELAY,
+- update_timeout,
+- range);
++ range->update_timeout_id =
++ gdk_threads_add_timeout (UPDATE_DELAY, update_timeout, range);
+ }
+
+ static void
+@@ -3412,5 +3417,40 @@ gtk_range_remove_update_timer (GtkRange *range)
+ }
+ }
+
++static gboolean
++motion_idle (gpointer data)
++{
++ GtkRange *range = data;
++ GtkRangeLayout *layout = range->layout;
++
++ update_slider_position (range, layout->mouse_x, layout->mouse_y);
++
++ layout->motion_idle_id = 0;
++
++ return FALSE;
++}
++
++static void
++gtk_range_add_motion_idle (GtkRange *range)
++{
++ if (!range->layout->motion_idle_id)
++ {
++ range->layout->motion_idle_id =
++ gdk_threads_add_idle_full (GDK_PRIORITY_REDRAW,
++ motion_idle, range,
++ NULL);
++ }
++}
++
++static void
++gtk_range_remove_motion_idle (GtkRange *range)
++{
++ if (range->layout->motion_idle_id != 0)
++ {
++ g_source_remove (range->layout->motion_idle_id);
++ range->layout->motion_idle_id = 0;
++ }
++}
++
+ #define __GTK_RANGE_C__
+ #include "gtkaliasdef.c"
diff --git a/packages/gtk+/gtk+-2.12.3/run-iconcache.patch b/packages/gtk+/gtk+-2.12.3/run-iconcache.patch
new file mode 100644
index 0000000000..ac15e9ab24
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/run-iconcache.patch
@@ -0,0 +1,19 @@
+--- /tmp/Makefile.am 2007-01-08 17:44:47.000000000 +0100
++++ gtk+-2.10.7/gtk/Makefile.am 2007-01-08 17:45:17.025251000 +0100
+@@ -1128,11 +1128,11 @@
+ ./gtk-update-icon-cache
+ endif
+
+-gtkbuiltincache.h: @REBUILD@ stamp-icons
+- $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
+- $(gtk_update_icon_cache_program) --force --ignore-theme-index \
+- --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
+- mv gtkbuiltincache.h.tmp gtkbuiltincache.h
++#gtkbuiltincache.h: @REBUILD@ stamp-icons
++# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT)
++# $(gtk_update_icon_cache_program) --force --ignore-theme-index \
++# --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \
++# mv gtkbuiltincache.h.tmp gtkbuiltincache.h
+
+ EXTRA_DIST += \
+ $(STOCK_ICONS) \
diff --git a/packages/gtk+/gtk+-2.12.3/scrolled-placement.patch b/packages/gtk+/gtk+-2.12.3/scrolled-placement.patch
new file mode 100644
index 0000000000..a0b50c8cac
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/scrolled-placement.patch
@@ -0,0 +1,22 @@
+Index: gdk/x11/gdksettings.c
+===================================================================
+--- gdk/x11/gdksettings.c (revision 18493)
++++ gdk/x11/gdksettings.c (working copy)
+@@ -65,7 +65,8 @@
+ "Xft/RGBA\0" "gtk-xft-rgba\0"
+ "Xft/DPI\0" "gtk-xft-dpi\0"
+ "Net/FallbackIconTheme\0" "gtk-fallback-icon-theme\0"
+- "Gtk/TouchscreenMode\0" "gtk-touchscreen-mode\0";
++ "Gtk/TouchscreenMode\0" "gtk-touchscreen-mode\0"
++ "Gtk/ScrolledWindowPlacement\0" "gtk-scrolled-window-placement\0";
+
+ static const struct
+ {
+@@ -107,5 +108,6 @@
+ { 1197, 1206 },
+ { 1219, 1227 },
+ { 1239, 1261 },
+- { 1285, 1305 }
++ { 1285, 1305 },
++ { 1326, 1354 }
+ };
diff --git a/packages/gtk+/gtk+-2.12.3/toggle-font.diff b/packages/gtk+/gtk+-2.12.3/toggle-font.diff
new file mode 100644
index 0000000000..59ad150b2f
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/toggle-font.diff
@@ -0,0 +1,100 @@
+Index: gtk/gtkcellrenderertoggle.c
+===================================================================
+--- gtk/gtkcellrenderertoggle.c (revision 18523)
++++ gtk/gtkcellrenderertoggle.c (working copy)
+@@ -71,6 +71,8 @@
+ PROP_INDICATOR_SIZE
+ };
+
++/* This is a hard-coded default which promptly gets overridden by a size
++ calculated from the font size. */
+ #define TOGGLE_WIDTH 13
+
+ static guint toggle_cell_signals[LAST_SIGNAL] = { 0 };
+@@ -80,8 +82,9 @@
+ typedef struct _GtkCellRendererTogglePrivate GtkCellRendererTogglePrivate;
+ struct _GtkCellRendererTogglePrivate
+ {
+- gint indicator_size;
+-
++ gint indicator_size; /* This is the real size */
++ gint override_size; /* This is the size set from the indicator-size property */
++ GtkWidget *cached_widget;
+ guint inconsistent : 1;
+ };
+
+@@ -104,6 +107,7 @@
+ GTK_CELL_RENDERER (celltoggle)->ypad = 2;
+
+ priv->indicator_size = TOGGLE_WIDTH;
++ priv->override_size = 0;
+ priv->inconsistent = FALSE;
+ }
+
+@@ -210,7 +214,7 @@
+ g_value_set_boolean (value, celltoggle->radio);
+ break;
+ case PROP_INDICATOR_SIZE:
+- g_value_set_int (value, priv->indicator_size);
++ g_value_set_int (value, priv->override_size ? priv->override_size : priv->indicator_size);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+@@ -245,7 +249,7 @@
+ celltoggle->radio = g_value_get_boolean (value);
+ break;
+ case PROP_INDICATOR_SIZE:
+- priv->indicator_size = g_value_get_int (value);
++ priv->override_size = g_value_get_int (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+@@ -273,6 +277,27 @@
+ }
+
+ static void
++on_widget_style_set (GtkWidget *widget, GtkStyle *previous, gpointer user_data)
++{
++ GtkCellRendererTogglePrivate *priv = user_data;
++ PangoContext *context;
++ PangoFontMetrics *metrics;
++ int height;
++
++ context = gtk_widget_get_pango_context (widget);
++ metrics = pango_context_get_metrics (context,
++ widget->style->font_desc,
++ pango_context_get_language (context));
++
++ height = pango_font_metrics_get_ascent (metrics) +
++ pango_font_metrics_get_descent (metrics);
++
++ pango_font_metrics_unref (metrics);
++
++ priv->indicator_size = PANGO_PIXELS (height * 0.85);
++}
++
++static void
+ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+@@ -287,6 +312,20 @@
+
+ priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (cell);
+
++ if (priv->override_size) {
++ priv->indicator_size = priv->override_size;
++ } else if (priv->cached_widget != widget) {
++ if (priv->cached_widget) {
++ g_object_remove_weak_pointer (widget, &priv->cached_widget);
++ g_signal_handlers_disconnect_by_func (priv->cached_widget, on_widget_style_set, priv);
++ }
++ priv->cached_widget = widget;
++ g_object_add_weak_pointer (widget, &priv->cached_widget);
++ g_signal_connect (widget, "style-set", on_widget_style_set, priv);
++
++ on_widget_style_set (widget, NULL, priv);
++ }
++
+ calc_width = (gint) cell->xpad * 2 + priv->indicator_size;
+ calc_height = (gint) cell->ypad * 2 + priv->indicator_size;
+
diff --git a/packages/gtk+/gtk+-2.12.3/xsettings.patch b/packages/gtk+/gtk+-2.12.3/xsettings.patch
new file mode 100644
index 0000000000..b63e262d34
--- /dev/null
+++ b/packages/gtk+/gtk+-2.12.3/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+.inc b/packages/gtk+/gtk+.inc
index 14b5026cc6..1a8236aa34 100644
--- a/packages/gtk+/gtk+.inc
+++ b/packages/gtk+/gtk+.inc
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
LICENSE = "LGPL"
PRIORITY = "optional"
-DEPENDS = "glib-2.0 tiff pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt"
+DEPENDS = "glib-2.0 tiff pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt cups"
inherit autotools pkgconfig
diff --git a/packages/gtk+/gtk+_2.12.3.bb b/packages/gtk+/gtk+_2.12.3.bb
new file mode 100644
index 0000000000..689071d776
--- /dev/null
+++ b/packages/gtk+/gtk+_2.12.3.bb
@@ -0,0 +1,48 @@
+require gtk+.inc
+
+PR = "r0"
+
+DEPENDS += "cairo"
+
+# disable per default - untested and not all patches included.
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://download.gnome.org/sources/gtk+/2.12/gtk+-${PV}.tar.bz2 \
+ file://xsettings.patch;patch=1 \
+ file://run-iconcache.patch;patch=1 \
+ file://hardcoded_libtool.patch;patch=1 \
+ file://no-demos.patch;patch=1 \
+ file://cellrenderer-cairo.patch;patch=1;pnum=0 \
+ file://entry-cairo.patch;patch=1;pnum=0 \
+ file://toggle-font.diff;patch=1;pnum=0 \
+ file://scrolled-placement.patch;patch=1;pnum=0"
+# temporary
+# file://gtklabel-resize-patch;patch=1 \
+# file://menu-deactivate.patch;patch=1 \
+# file://combo-arrow-size.patch;patch=1;pnum=0 \
+# die die die
+# file://pangoxft2.10.6.diff;patch=1"
+
+EXTRA_OECONF = "--with-libtiff --disable-xkb --disable-glibtest --enable-display-migration"
+
+LIBV = "2.10.0"
+
+PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-* gtk-printbackend-*"
+
+python populate_packages_prepend () {
+ import os.path
+
+ prologue = bb.data.getVar("postinst_prologue", d, 1)
+
+ gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d)
+ loaders_root = os.path.join(gtk_libdir, 'loaders')
+ immodules_root = os.path.join(gtk_libdir, 'immodules')
+ printmodules_root = os.path.join(gtk_libdir, 'printbackends');
+
+ do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', prologue + 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders')
+ do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules')
+ do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
+
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d)
+}
diff --git a/packages/gtk-engines/gtk-sato-engine_0.1.bb b/packages/gtk-engines/gtk-sato-engine_0.1.bb
index 4429b21cc9..85720fbdd2 100644
--- a/packages/gtk-engines/gtk-sato-engine_0.1.bb
+++ b/packages/gtk-engines/gtk-sato-engine_0.1.bb
@@ -18,7 +18,7 @@ do_configure_prepend() {
PACKAGES += "gtk-theme-sato"
FILES_${PN} = "${libdir}/gtk-2.0/*/engines/*.so "
FILES_${PN}-dev = "${libdir}/gtk-2.0/*/engines/*"
-FILES_${PN}-dbg = "${libdir}/gtk-2.0/*/engines/.debug"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/engines/.debug"
FILES_gtk-theme-sato = "${datadir}/icons ${datadir}/themes"
RDEPENDS_gtk-theme-sato = "${PN}"
diff --git a/packages/gtk-engines/gtk-sato-engine_svn.bb b/packages/gtk-engines/gtk-sato-engine_svn.bb
index c3d760c829..39829984d3 100644
--- a/packages/gtk-engines/gtk-sato-engine_svn.bb
+++ b/packages/gtk-engines/gtk-sato-engine_svn.bb
@@ -17,7 +17,7 @@ inherit autotools pkgconfig
PACKAGES += "gtk-theme-sato"
FILES_${PN} = "${libdir}/gtk-2.0/*/engines/*.so "
FILES_${PN}-dev = "${libdir}/gtk-2.0/*/engines/*"
-FILES_${PN}-dbg = "${libdir}/gtk-2.0/*/engines/.debug"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/engines/.debug"
FILES_gtk-theme-sato = "${datadir}/icons ${datadir}/themes"
RDEPENDS_gtk-theme-sato = "${PN}"
diff --git a/packages/gtk-sharp/gtk-sharp_2.10.2.bb b/packages/gtk-sharp/gtk-sharp_2.10.2.bb
index ddb209e15c..28b50e13c7 100644
--- a/packages/gtk-sharp/gtk-sharp_2.10.2.bb
+++ b/packages/gtk-sharp/gtk-sharp_2.10.2.bb
@@ -36,7 +36,7 @@ FILES_libgtk2.0-cil-dev = "/usr/lib/pkgconfig/gtk-sharp-2.0.pc \
/usr/share/gapi-2.0/atk-api.xml \
/usr/share/gapi-2.0/gdk-api.xml \
/usr/share/gapi-2.0/gtk-api.xml"
-FILES_libgtk2.0-cil-dbg = "/usr/lib/.debug/libgtksharpglue-2.so \
+FILES_libgtk2.0-cil-dbg += "/usr/lib/.debug/libgtksharpglue-2.so \
/usr/lib/.debug/libgdksharpglue-2.so \
/usr/lib/.debug/libpangosharpglue-2.so"
@@ -46,7 +46,7 @@ FILES_libglib2.0-cil = "/usr/lib/mono/gac/glib-sharp \
/usr/lib/mono/gac/policy.2.*.glib-sharp/ \
/usr/lib/mono/gtk-sharp-2.0/policy.2.*.glib-sharp.dll"
FILES_libglib2.0-cil-dev = "/usr/lib/pkgconfig/glib-sharp-2.0.pc"
-FILES_libglib2.0-cil-dbg = "/usr/lib/.debug/libglibsharpglue-2.so"
+FILES_libglib2.0-cil-dbg += "/usr/lib/.debug/libglibsharpglue-2.so"
FILES_libglade2.0-cil = "/usr/lib/mono/gac/glade-sharp \
/usr/lib/libgladesharpglue-2.so \
@@ -55,7 +55,7 @@ FILES_libglade2.0-cil = "/usr/lib/mono/gac/glade-sharp \
/usr/lib/mono/gtk-sharp-2.0/policy.2.*.glade-sharp.dll"
FILES_libglade2.0-cil-dev = "/usr/lib/pkgconfig/glade-sharp-2.0.pc \
/usr/share/gapi-2.0/glade-api.xml"
-FILES_libglade2.0-cil-dbg = "/usr/lib/.debug/libgladesharpglue-2.so"
+FILES_libglade2.0-cil-dbg += "/usr/lib/.debug/libgladesharpglue-2.so"
FILES_gtk-sharp-gapi2 = " \
/usr/bin/gapi2-* \
diff --git a/packages/gtk-webcore/osb-nrcore.inc b/packages/gtk-webcore/osb-nrcore.inc
index 7cbf0ce890..6fd1d22580 100644
--- a/packages/gtk-webcore/osb-nrcore.inc
+++ b/packages/gtk-webcore/osb-nrcore.inc
@@ -3,12 +3,15 @@ HOMEPAGE = "http://gtk-webcore.sourceforge.net/"
PRIORITY = "optional"
SECTION = "gpe"
LICENSE = "GPL"
-DEPENDS = "glib-2.0 gtk+ pango osb-jscore libxt"
+DEPENDS = "glib-2.0 gtk+ pango osb-jscore libxt gperf-native"
LEAD_SONAME = "libnrcore.so"
inherit autotools pkgconfig
+#/khtml/css/cssproperties.h failes to generate properly with high parallel makes
+PARALLEL_MAKE = ""
+
do_configure () {
autotools_do_configure
cd ${S}
diff --git a/packages/gtkhtml2/gtkhtml2_svn.bb b/packages/gtkhtml2/gtkhtml2_svn.bb
index 1745412f5c..1798fcf1df 100644
--- a/packages/gtkhtml2/gtkhtml2_svn.bb
+++ b/packages/gtkhtml2/gtkhtml2_svn.bb
@@ -5,12 +5,12 @@ LICENSE = "GPL"
PV = "2.11.0+svnr${SRCREV}"
SRC_URI = "svn://anonymous@svn.gnome.org/svn/gtkhtml2/;module=trunk \
- http://svn.o-hand.com/repos/web/trunk/patches/at-import_box-pos.patch;patch=1;pnum=0 \
- http://svn.o-hand.com/repos/web/trunk/patches/css-stylesheet-user.patch;patch=1;pnum=0 \
- http://svn.o-hand.com/repos/web/trunk/patches/css-media.patch;patch=1;pnum=0 \
- http://svn.o-hand.com/repos/web/trunk/patches/add-end-element-signal.patch;patch=1;pnum=0 \
- http://svn.o-hand.com/repos/web/trunk/patches/add-dom-functions.patch;patch=1;pnum=0 \
- http://svn.o-hand.com/repos/web/trunk/patches/iain-mem-leak.patch;patch=1;pnum=0"
+ http://svn.o-hand.com/repos/web/trunk/patches/at-import_box-pos.patch;patch=1;pnum=0;maxrev=1157 \
+ http://svn.o-hand.com/repos/web/trunk/patches/css-stylesheet-user.patch;patch=1;pnum=0;maxrev=1157 \
+ http://svn.o-hand.com/repos/web/trunk/patches/css-media.patch;patch=1;pnum=0;maxrev=1157 \
+ http://svn.o-hand.com/repos/web/trunk/patches/add-end-element-signal.patch;patch=1;pnum=0;maxrev=1157 \
+ http://svn.o-hand.com/repos/web/trunk/patches/add-dom-functions.patch;patch=1;pnum=0;maxrev=1157 \
+ http://svn.o-hand.com/repos/web/trunk/patches/iain-mem-leak.patch;patch=1;pnum=0;maxrev=1157"
S = "${WORKDIR}/trunk"
diff --git a/packages/gtkmm/gtkmm.inc b/packages/gtkmm/gtkmm.inc
index 9dd1e43d54..139d95239d 100644
--- a/packages/gtkmm/gtkmm.inc
+++ b/packages/gtkmm/gtkmm.inc
@@ -7,9 +7,6 @@ DEPENDS = "atk glibmm gtk+ cairomm"
inherit gnome autotools pkgconfig flow-lossage
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${libdir}/glibmm-2.4/include/"
-
LIBV = "2.4.0"
do_stage () {
@@ -19,3 +16,6 @@ do_stage () {
install -m 0644 gdk/gdkmmconfig.h ${STAGING_INCDIR}/gtkmm-2.4
install -m 0644 gtk/gtkmmconfig.h ${STAGING_INCDIR}/gtkmm-2.4
}
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/*/include ${libdir}/*/proc/m4"
diff --git a/packages/gtkmm/gtkmm_2.10.10.bb b/packages/gtkmm/gtkmm_2.10.11.bb
index b8ba69f50e..b8ba69f50e 100644
--- a/packages/gtkmm/gtkmm_2.10.10.bb
+++ b/packages/gtkmm/gtkmm_2.10.11.bb
diff --git a/packages/hostap/hostap-modules.inc b/packages/hostap/hostap-modules.inc
index 01e4e53710..3184f00fb3 100644
--- a/packages/hostap/hostap-modules.inc
+++ b/packages/hostap/hostap-modules.inc
@@ -31,7 +31,7 @@ do_install() {
install -m 0644 driver/modules/hostap_cs${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/pcmcia/
}
-PACKAGES = "hostap-modules-cs hostap-modules-pci hostap-modules"
+PACKAGES = "${PN}-dbg hostap-modules-cs hostap-modules-pci hostap-modules"
FILES_hostap-modules-cs = "/lib/modules/${KERNEL_VERSION}/pcmcia/ /${sysconfdir}/pcmcia/"
FILES_hostap-modules-pci = "/lib/modules/${KERNEL_VERSION}/net/hostap_pci${KERNEL_OBJECT_SUFFIX}"
FILES_hostap-modules = "/lib/modules/"
diff --git a/packages/busybox/busybox-1.6.0/angstrom/.mtn2git_empty b/packages/htop/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.6.0/angstrom/.mtn2git_empty
+++ b/packages/htop/.mtn2git_empty
diff --git a/packages/busybox/busybox-1.7.2/angstrom/.mtn2git_empty b/packages/htop/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/busybox-1.7.2/angstrom/.mtn2git_empty
+++ b/packages/htop/files/.mtn2git_empty
diff --git a/packages/htop/files/remove-proc-test.patch b/packages/htop/files/remove-proc-test.patch
new file mode 100644
index 0000000000..3185fdd1f4
--- /dev/null
+++ b/packages/htop/files/remove-proc-test.patch
@@ -0,0 +1,13 @@
+--- htop-0.6.6/configure.ac 2007-05-21 13:06:15.000000000 -0500
++++ htop-0.6.6-cross/configure.ac 2007-11-16 14:12:16.000000000 -0600
+@@ -58,8 +58,8 @@
+ fi,
+ AC_DEFINE(PROCDIR, "/proc", [Path of proc filesystem]))
+
+-AC_CHECK_FILE($PROCDIR/stat,,AC_MSG_ERROR(Cannot find /proc/stat. Make sure you have a Linux-compatible /proc filesystem mounted. See the file README for help.))
+-AC_CHECK_FILE($PROCDIR/meminfo,,AC_MSG_ERROR(Cannot find /proc/meminfo. Make sure you have a Linux-compatible /proc filesystem mounted. See the file README for help.))
++#AC_CHECK_FILE($PROCDIR/stat,,AC_MSG_ERROR(Cannot find /proc/stat. Make sure you have a Linux-compatible /proc filesystem mounted. See the file README for help.))
++#AC_CHECK_FILE($PROCDIR/meminfo,,AC_MSG_ERROR(Cannot find /proc/meminfo. Make sure you have a Linux-compatible /proc filesystem mounted. See the file README for help.))
+
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
diff --git a/packages/htop/htop_0.7.bb b/packages/htop/htop_0.7.bb
new file mode 100644
index 0000000000..4a614bd8e0
--- /dev/null
+++ b/packages/htop/htop_0.7.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "htop process monitor"
+HOMEPAGE = "http://htop.sf.net"
+SECTION = "console/utils"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+
+RDEPENDS = "ncurses"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/htop/htop-${PV}.tar.gz \
+ file://remove-proc-test.patch;patch=1"
+
+inherit autotools
diff --git a/packages/icewm/icewm_1.2.20.bb b/packages/icewm/icewm_1.2.20.bb
index b6a90a54a4..1567e985e2 100644
--- a/packages/icewm/icewm_1.2.20.bb
+++ b/packages/icewm/icewm_1.2.20.bb
@@ -2,7 +2,8 @@ SECTION = "x11/wm"
DESCRIPTION = "IceWM Window Manager"
LICENSE = "GPL"
DEPENDS = "virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender libxinerama libxpm xrandr xft mkfontdir-native"
-PR = "r1"
+RRECOMMENDS = "ttf-dejavu-sans"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/icewm/icewm-${PV}.tar.gz \
file://makefile.patch;patch=1 \
diff --git a/packages/icewm/icewm_1.2.30.bb b/packages/icewm/icewm_1.2.30.bb
index 4e7b7125ec..3dfffb1ae8 100644
--- a/packages/icewm/icewm_1.2.30.bb
+++ b/packages/icewm/icewm_1.2.30.bb
@@ -2,7 +2,8 @@ SECTION = "x11/wm"
DESCRIPTION = "IceWM Window Manager"
LICENSE = "GPL"
DEPENDS = "virtual/libx11 libxext libxcomposite libxfixes libxdamage libxrender libxinerama libxpm xrandr xft mkfontdir-native"
-PR = "r0"
+RRECOMMENDS = "ttf-dejavu-sans"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/icewm/icewm-${PV}.tar.gz \
file://makefile.patch;patch=1 \
diff --git a/packages/ifplugd/files/nobash.patch b/packages/ifplugd/files/nobash.patch
new file mode 100644
index 0000000000..8d0be50925
--- /dev/null
+++ b/packages/ifplugd/files/nobash.patch
@@ -0,0 +1,8 @@
+--- ifplugd-0.28/conf/ifplugd.init.in.orig 2007-05-24 19:00:03.000000000 +0000
++++ ifplugd-0.28/conf/ifplugd.init.in 2007-05-24 19:00:09.000000000 +0000
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ # $Id: ifplugd.init.in 86 2004-01-26 15:34:24Z lennart $
+
+ # This file is part of ifplugd.
diff --git a/packages/ifplugd/ifplugd_0.20.bb b/packages/ifplugd/ifplugd_0.20.bb
deleted file mode 100644
index 18e9a66c94..0000000000
--- a/packages/ifplugd/ifplugd_0.20.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SECTION = "console/network"
-DESCRIPTION = "ifplugd is a Linux daemon which will automatically configure your ethernet device when a cable is plugged in and automatically unconfigure it if the cable is pulled."
-DEPENDS = "libdaemon"
-LICENSE = "GPL"
-
-SRC_URI = "http://0pointer.de/lennart/projects/ifplugd/ifplugd-${PV}.tar.gz"
-
-inherit autotools update-rc.d
-
-EXTRA_OECONF = "--disable-lynx"
-
-INITSCRIPT_NAME = "ifplugd"
-INITSCRIPT_PARAMS = "defaults" \ No newline at end of file
diff --git a/packages/ifplugd/ifplugd_0.25.bb b/packages/ifplugd/ifplugd_0.25.bb
index 55c2be0ced..ca7f219165 100644
--- a/packages/ifplugd/ifplugd_0.25.bb
+++ b/packages/ifplugd/ifplugd_0.25.bb
@@ -1,12 +1,14 @@
-SECTION = "console/network"
-DESCRIPTION = "ifplugd is a Linux daemon which will automatically configure your ethernet device when a cable is plugged in and automatically unconfigure it if the cable is pulled."
+DESCRIPTION = "ifplugd is a Linux daemon which will automatically configure your ethernet device \
+when a cable is plugged in and automatically unconfigure it if the cable is pulled."
HOMEPAGE = "http://0pointer.de/lennart/projects/ifplugd/"
+SECTION = "network"
DEPENDS = "libdaemon"
LICENSE = "GPL"
+PR = "r1"
-SRC_URI = "http://0pointer.de/lennart/projects/ifplugd/ifplugd-${PV}.tar.gz"
-
-SRC_URI_append_nylon = " file://kernel-types.patch;patch=1"
+SRC_URI = "http://0pointer.de/lennart/projects/ifplugd/ifplugd-${PV}.tar.gz \
+ file://kernel-types.patch;patch=1 \
+ file://nobash.patch;patch=1"
inherit autotools update-rc.d pkgconfig
@@ -15,4 +17,4 @@ EXTRA_OECONF = "--disable-lynx"
INITSCRIPT_NAME = "ifplugd"
INITSCRIPT_PARAMS = "defaults"
-CONFFILES_${PN}_nylon = "${sysconfdir}/ifplugd/ifplugd.conf"
+CONFFILES_${PN} = "${sysconfdir}/ifplugd/ifplugd.conf"
diff --git a/packages/images/initramfs-bootmenu-image.bb b/packages/images/initramfs-bootmenu-image.bb
index a495363661..6a4974fa9d 100644
--- a/packages/images/initramfs-bootmenu-image.bb
+++ b/packages/images/initramfs-bootmenu-image.bb
@@ -1,6 +1,7 @@
-# Sample initramfs image
+# initramfs image with interactive boot menu allowing to select rootfs location
+# from choices of block devices, loopback images and NFS.
-IMAGE_INSTALL = "busybox-static initramfs-module-bootmenu"
+IMAGE_INSTALL = "busybox-static initramfs-module-bootmenu initramfs-module-check-modules initramfs-module-kexecboot"
IMAGE_LINGUAS = ""
# Remove any kernel-image that the kernel-module-* packages may have pulled in.
diff --git a/packages/images/initramfs-image.bb b/packages/images/initramfs-image.bb
index 3103b9f765..162e6676d7 100644
--- a/packages/images/initramfs-image.bb
+++ b/packages/images/initramfs-image.bb
@@ -1,4 +1,6 @@
-# Sample initramfs image
+# initramfs image allowing to boot from location as specified on kernel
+# command line, from teh choices of block device, loop back images (including
+# recursive) and NFS.
IMAGE_INSTALL = "initramfs-module-block initramfs-module-loop initramfs-module-nfs"
IMAGE_LINGUAS = ""
diff --git a/packages/images/initramfs-kexec-image.bb b/packages/images/initramfs-kexec-image.bb
new file mode 100644
index 0000000000..e4f4930286
--- /dev/null
+++ b/packages/images/initramfs-kexec-image.bb
@@ -0,0 +1,9 @@
+#initramfs image which mounts the rootfilesystem and kexecs a kernel from there
+
+inherit image
+
+export IMAGE_BASENAME = "initramfs-kexec-image"
+
+IMAGE_INSTALL = "klibc-utils-static-sh klibc-utils-static-mount kexec-static initramfs-kexec"
+IMAGE_FSTYPES += " cpio.gz"
+IMAGE_LINGUAS = ""
diff --git a/packages/images/initramfs-minimal-image.bb b/packages/images/initramfs-minimal-image.bb
index d696468913..cb323ddd50 100644
--- a/packages/images/initramfs-minimal-image.bb
+++ b/packages/images/initramfs-minimal-image.bb
@@ -1,4 +1,4 @@
-# Sample initramfs image
+# Sample initramfs image, very minimal
IMAGE_INSTALL = "initramfs-module-nfs busybox-static"
diff --git a/packages/images/openmoko-python-devel-image.bb b/packages/images/openmoko-python-devel-image.bb
index 9d2a8db2c6..615042f3b8 100644
--- a/packages/images/openmoko-python-devel-image.bb
+++ b/packages/images/openmoko-python-devel-image.bb
@@ -2,5 +2,6 @@ require openmoko-image.bb
IMAGE_INSTALL += "\
task-openmoko-python-devel \
+ task-python-efl-examples \
+ edje-viewer \
"
-
diff --git a/packages/images/x11-gpe-java-image.bb b/packages/images/x11-gpe-java-image.bb
new file mode 100644
index 0000000000..5a7ec5ec16
--- /dev/null
+++ b/packages/images/x11-gpe-java-image.bb
@@ -0,0 +1,28 @@
+#Angstrom X11 image, with apps and kernel modules included
+
+ANGSTROM_EXTRA_INSTALL += " \
+ ${@base_contains("MACHINE_FEATURES", "phone", "openmoko-dialer2", "",d)} \
+ "
+XSERVER ?= "xserver-kdrive-fbdev"
+
+export IMAGE_BASENAME = "x11-gpe-java-image"
+
+DEPENDS = "task-base"
+IMAGE_INSTALL = "\
+ ${XSERVER} \
+ task-base-extended \
+ task-java \
+ task-java-gtk \
+ angstrom-x11-base-depends \
+ angstrom-gpe-task-base \
+ angstrom-gpe-task-settings \
+ kernel-modules \
+ hal \
+ angstrom-gpe-task-pim \
+ ${ANGSTROM_EXTRA_INSTALL}"
+
+
+#zap root password for release images
+ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+
+inherit image
diff --git a/packages/inetutils/inetutils_1.5.bb b/packages/inetutils/inetutils_1.5.bb
new file mode 100644
index 0000000000..0971e58967
--- /dev/null
+++ b/packages/inetutils/inetutils_1.5.bb
@@ -0,0 +1,17 @@
+SECTION = "libs"
+DEPENDS = "ncurses"
+LICENSE = "GPL"
+DESCRIPTION = "The GNU inetutils are a collection of common \
+networking utilities and servers including ftp, ftpd, rcp, \
+rexec, rlogin, rlogind, rsh, rshd, syslog, syslogd, talk, \
+talkd, telnet, telnetd, tftp, tftpd, and uucpd."
+
+SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.gz"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-ncurses-include-dir=${STAGING_INCDIR}"
+
+do_configure_prepend () {
+ rm -f ${S}/glob/configure*
+}
diff --git a/packages/initrdscripts/devimage/devimage.sh b/packages/initrdscripts/devimage/devimage.sh
index e85debf245..8a264ed33d 100644
--- a/packages/initrdscripts/devimage/devimage.sh
+++ b/packages/initrdscripts/devimage/devimage.sh
@@ -7,6 +7,11 @@ mount -t sysfs sysfs /sys
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
+modprobe g_ether
+ifconfig usb0 192.168.2.202
+
+export PATH=$PATH:/usr/sbin
+
/usr/sbin/dropbear -E
/bin/sh
diff --git a/packages/initrdscripts/devimage_0.1.bb b/packages/initrdscripts/devimage_0.1.bb
index 08949b9515..0622dd0330 100644
--- a/packages/initrdscripts/devimage_0.1.bb
+++ b/packages/initrdscripts/devimage_0.1.bb
@@ -1,12 +1,14 @@
DESCRIPTION = "Set of files to initialize bare system suitable for kernel, etc. testing."
SRC_URI = "file://devimage.sh file://passwd file://dropbear_rsa_host_key"
-PR = "r2"
+PR = "r4"
do_install() {
- install -m 0755 ${WORKDIR}/devimage.sh ${D}/init
install -d ${D}/etc/dropbear
+ install -d ${D}/sbin
+ install -m 0755 ${WORKDIR}/devimage.sh ${D}/init
install -m 0600 ${WORKDIR}/dropbear_rsa_host_key ${D}/etc/dropbear/
install -m 0644 ${WORKDIR}/passwd ${D}/etc/
+ ln -s /init ${D}/sbin/init
}
-FILES_${PN} += " /init /etc/*"
+FILES_${PN} += " /init /etc/* /sbin/*"
diff --git a/packages/initrdscripts/files/10-initfs.sh b/packages/initrdscripts/files/10-initfs.sh
index bad649e5c2..c2a843eb12 100644
--- a/packages/initrdscripts/files/10-initfs.sh
+++ b/packages/initrdscripts/files/10-initfs.sh
@@ -3,3 +3,4 @@
modprobe -q vfat >/dev/null 2>&1
modprobe -q ext2 >/dev/null 2>&1
modprobe -q ext3 >/dev/null 2>&1
+modprobe -q jffs2 >/dev/null 2>&1
diff --git a/packages/initrdscripts/files/30-bootmenu.sh b/packages/initrdscripts/files/30-bootmenu.sh
index 319f85aa6e..3f3b8c7079 100644
--- a/packages/initrdscripts/files/30-bootmenu.sh
+++ b/packages/initrdscripts/files/30-bootmenu.sh
@@ -81,7 +81,7 @@ while read maj min nblk dev; do
fi
get_partition_type
- if [ "$fstype" != "ext2" -a "$fstype" != "ext3" -a "$fstype" != "vfat" ]; then
+ if [ "$fstype" != "ext2" -a "$fstype" != "ext3" -a "$fstype" != "vfat" -a "$fstype" != "jffs2" ]; then
# continue
true
fi
@@ -95,6 +95,7 @@ while read maj min nblk dev; do
done < /proc/partitions
add_menu_item "NFS (nfsroot=192.168.2.200:/srv/nfs/oe/image)"
+add_menu_item "Shell"
total=`echo -e $list | wc -l`
num=0
@@ -142,15 +143,23 @@ echo Selected: $sel
dev=`expr "$sel" : '\([^ /]*\)'`
path=`expr "$sel" : '[^/]*\([^ ]*\).*'`
+fstype=`expr "$sel" : '[^ ]* *\(.*\)'`
-if [ "$dev" == "NFS" ]; then
+if [ "$dev" == "Shell" ]; then
+ exec /bin/sh
+elif [ "$dev" == "NFS" ]; then
ROOT_DEVICE="/dev/nfs"
- CMDLINE="$CMDLINE nfsroot=192.168.2.200:/srv/nfs/oe/image"
+ CMDLINE="$CMDLINE root=/dev/nfs nfsroot=192.168.2.200:/srv/nfs/oe/image"
elif [ -n "$path" ]; then
ROOT_DEVICE="/dev/loop"
- CMDLINE="looproot=/dev/$dev:$path"
+ CMDLINE="$CMDLINE root=/dev/loop looproot=/dev/$dev:$path"
else
ROOT_DEVICE="/dev/$dev"
+ # jffs2 is not recognized by mount automagically
+ if [ "$fstype" == "(jffs2)" ]; then
+ ROOT_FSTYPE="jffs2"
+ fi
+ CMDLINE="$CMDLINE root=$ROOT_DEVICE"
fi
echo ROOT_DEVICE=$ROOT_DEVICE
diff --git a/packages/initrdscripts/files/85-blockboot.sh b/packages/initrdscripts/files/85-blockboot.sh
index 567f7e29b3..e1c3ed893e 100644
--- a/packages/initrdscripts/files/85-blockboot.sh
+++ b/packages/initrdscripts/files/85-blockboot.sh
@@ -3,6 +3,10 @@
if [ -e "$ROOT_DEVICE" ]; then
echo "booting from: $ROOT_DEVICE"
- mount "$ROOT_DEVICE" /mnt
+ type=""
+ if [ -n "$ROOT_FSTYPE" ]; then
+ type="-t $ROOT_FSTYPE"
+ fi
+ mount $type "$ROOT_DEVICE" /mnt || fatal "Unable to mount rootfs device"
BOOT_ROOT=/mnt
fi
diff --git a/packages/initrdscripts/files/87-kexecboot.sh b/packages/initrdscripts/files/87-kexecboot.sh
new file mode 100644
index 0000000000..9232934f98
--- /dev/null
+++ b/packages/initrdscripts/files/87-kexecboot.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Allow kexecing to kernel in rootfs
+
+if [ -n "$BOOT_ROOT" -a -f "$BOOT_ROOT/boot/zImage" ]; then
+ if ! expr "$CMDLINE" : '.*nokexec'; then
+ echo "Kernel found in rootfs:"
+ ls -l "$BOOT_ROOT/boot/zImage"
+ initramfs=""
+ if [ -f "$BOOT_ROOT/boot/initramfs.bin" ]; then
+ echo "Initramfs found in rootfs:"
+ ls -l "$BOOT_ROOT/boot/initramfs.bin"
+ initramfs="--initrd=$BOOT_ROOT/boot/initramfs.bin"
+ fi
+ echo /usr/sbin/kexec -f "$BOOT_ROOT/boot/zImage" $initramfs --command-line="$CMDLINE nokexec"
+ sleep 10
+ /usr/sbin/kexec -f "$BOOT_ROOT/boot/zImage" $initramfs --command-line="$CMDLINE nokexec"
+ sleep 10000
+ fi
+fi
diff --git a/packages/initrdscripts/files/90-check-modules.sh b/packages/initrdscripts/files/90-check-modules.sh
new file mode 100644
index 0000000000..2423d7f8c5
--- /dev/null
+++ b/packages/initrdscripts/files/90-check-modules.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Check that modules for the current kernel exist, error out otherwise
+
+uname=`cat /proc/version`
+ver=`expr "x$uname" : 'xLinux version \([^ ]\+\) '`
+
+if [ -n "$BOOT_ROOT" -a ! -d "$BOOT_ROOT/lib/modules/$ver" ]; then
+ echo -e "\033[1m===================="
+ echo "ERROR!"
+ echo "There are no modules for this kernel"
+ echo "version ($ver) in the root file "
+ echo "system, which will lead to boot failure or"
+ echo "broken functionally. If you performed"
+ echo "a kernel upgrade, make sure that version"
+ echo "installed in root filesystem matches"
+ echo "version used in bootloader."
+ echo -e "====================\033[0m"
+ echo
+
+ echo "System halted"
+ while true; do
+ sleep 10000
+ done
+fi
diff --git a/packages/initrdscripts/files/init.sh b/packages/initrdscripts/files/init.sh
index f8d5de9173..8b9fe12429 100644
--- a/packages/initrdscripts/files/init.sh
+++ b/packages/initrdscripts/files/init.sh
@@ -8,6 +8,7 @@ early_setup() {
mkdir /proc
mount -t proc proc /proc
mkdir /mnt
+ modprobe -q mtdblock
}
dev_setup()
@@ -30,6 +31,8 @@ read_args() {
case $arg in
root=*)
ROOT_DEVICE=$optarg ;;
+ rootfstype=*)
+ ROOT_FSTYPE=$optarg ;;
rootdelay=*)
rootdelay=$optarg ;;
esac
@@ -48,13 +51,13 @@ boot_root() {
exec switch_root -c /dev/console $BOOT_ROOT /sbin/init
}
-boot_failed() {
- echo "No valid root device was specified. Please add root=/dev/something to"
- echo "the kernel command-line and try again."
+fatal() {
+ echo $1
echo
exec sh
}
+
echo "Starting initramfs boot..."
early_setup
read_args
@@ -68,4 +71,5 @@ dev_setup
load_modules
[ -n "$BOOT_ROOT" ] && boot_root
-boot_failed
+
+fatal "No valid root device was specified. Please add root=/dev/something to the kernel command-line and try again."
diff --git a/packages/initrdscripts/initramfs-kexec_1.0.bb b/packages/initrdscripts/initramfs-kexec_1.0.bb
new file mode 100644
index 0000000000..b14ebbe60c
--- /dev/null
+++ b/packages/initrdscripts/initramfs-kexec_1.0.bb
@@ -0,0 +1,25 @@
+DESCRIPTON = "A init script that mounts a device and kexecs a new kernel from it."
+PR = "r4"
+
+do_compile() {
+ cat > init.sh << EOF
+#!/bin/sh
+/bin/mount -t proc proc /proc
+/bin/mount -t ${ROOTFS} ${ROOTDEV} /mnt
+/usr/sbin/kexec -l /mnt/zImage
+/usr/sbin/kexec -e
+EOF
+}
+
+do_install() {
+ install -m 0755 ${S}/init.sh ${D}/init
+ install -d ${D}/proc
+ install -d ${D}/mnt
+}
+
+PACKAGE_ARCH = "all"
+
+FILES_${PN} = "/init /proc /mnt"
+
+ROOTDEV = "mtd2"
+ROOTFS = "jffs2"
diff --git a/packages/initrdscripts/initramfs-module-block_1.0.bb b/packages/initrdscripts/initramfs-module-block_1.0.bb
index 72812a2490..b4b2d43150 100644
--- a/packages/initrdscripts/initramfs-module-block_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-block_1.0.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://85-blockboot.sh"
-PR = "r1"
+PR = "r3"
RDEPENDS = "initramfs-uniboot"
DESCRIPTION = "An initramfs module for booting off normal block devices."
diff --git a/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
index 19e7403b83..8c66521f30 100644
--- a/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://30-bootmenu.sh"
-PR = "r7"
+PR = "r11"
DESCRIPTION = "An initramfs module with UI for selection of boot device."
RDEPENDS = "klibc-utils-fstype initramfs-uniboot initramfs-module-block initramfs-module-loop initramfs-module-nfs"
# For VFAT mounting.
diff --git a/packages/initrdscripts/initramfs-module-check-modules_1.0.bb b/packages/initrdscripts/initramfs-module-check-modules_1.0.bb
new file mode 100644
index 0000000000..6986316a6f
--- /dev/null
+++ b/packages/initrdscripts/initramfs-module-check-modules_1.0.bb
@@ -0,0 +1,12 @@
+SRC_URI = "file://90-check-modules.sh"
+PR = "r0"
+DESCRIPTION = "An initramfs module for checking that kernel modules exist in rootfs"
+RDEPENDS = "initramfs-uniboot"
+
+do_install() {
+ install -d ${D}/initrd.d
+ install -m 0755 ${WORKDIR}/90-check-modules.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "
diff --git a/packages/initrdscripts/initramfs-module-initfs_1.0.bb b/packages/initrdscripts/initramfs-module-initfs_1.0.bb
index 64bba4a304..2c2ec07bf5 100644
--- a/packages/initrdscripts/initramfs-module-initfs_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-initfs_1.0.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://10-initfs.sh"
-PR = "r2"
+PR = "r4"
DESCRIPTION = "An initramfs module for initializing filesystems."
RDEPENDS = "initramfs-uniboot"
RRECOMMENDS = "kernel-module-vfat kernel-module-ext2"
diff --git a/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb b/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
new file mode 100644
index 0000000000..35100a94e6
--- /dev/null
+++ b/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
@@ -0,0 +1,12 @@
+SRC_URI = "file://87-kexecboot.sh"
+PR = "r0.4"
+DESCRIPTION = "An initramfs module for kexecing kernel from rootfs."
+RDEPENDS = "initramfs-uniboot kexec-static"
+
+do_install() {
+ install -d ${D}/initrd.d
+ install -m 0755 ${WORKDIR}/87-kexecboot.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "
diff --git a/packages/initrdscripts/initramfs-uniboot_1.0.bb b/packages/initrdscripts/initramfs-uniboot_1.0.bb
index 167ce71ffe..e0f726582e 100644
--- a/packages/initrdscripts/initramfs-uniboot_1.0.bb
+++ b/packages/initrdscripts/initramfs-uniboot_1.0.bb
@@ -1,6 +1,7 @@
SRC_URI = "file://init.sh"
-PR = "r2"
+PR = "r4"
DESCRIPTON = "A modular initramfs init script system."
+RRECOMMENDS = "kernel-module-mtdblock"
do_install() {
install -m 0755 ${WORKDIR}/init.sh ${D}/init
diff --git a/packages/initscripts/initscripts-1.0/banner b/packages/initscripts/initscripts-1.0/banner
index 21a01d2846..0349ce1954 100644
--- a/packages/initscripts/initscripts-1.0/banner
+++ b/packages/initscripts/initscripts-1.0/banner
@@ -8,6 +8,8 @@ if ( > /dev/tty0 ) 2>/dev/null; then
vtmaster=/dev/tty0
elif ( > /dev/vc/0 ) 2>/dev/null; then
vtmaster=/dev/vc/0
+elif ( > /dev/console ) 2>/dev/null; then
+ vtmaster=/dev/console
else
vtmaster=/dev/null
fi
diff --git a/packages/initscripts/initscripts-openprotium_1.0.bb b/packages/initscripts/initscripts-openprotium_1.0.bb
index 890bbd756c..1ae398e962 100644
--- a/packages/initscripts/initscripts-openprotium_1.0.bb
+++ b/packages/initscripts/initscripts-openprotium_1.0.bb
@@ -15,7 +15,7 @@ PR := "${PR}.11"
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
-PACKAGES = "${PN}"
+PACKAGES = "${PN}-dbg ${PN}"
SRC_URI += "file://openprotium/devfs.sh"
SRC_URI += "file://openprotium/domainname.sh"
diff --git a/packages/initscripts/initscripts-slugos_1.0.bb b/packages/initscripts/initscripts-slugos_1.0.bb
index 76d88f4627..0608db714d 100644
--- a/packages/initscripts/initscripts-slugos_1.0.bb
+++ b/packages/initscripts/initscripts-slugos_1.0.bb
@@ -14,7 +14,7 @@ PR := "${PR}.12"
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
-PACKAGES = "${PN}"
+PACKAGES = "${PN}-dbg ${PN}"
SRC_URI += "file://alignment.sh"
SRC_URI += "file://domainname.sh"
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index 4433d12318..55998c0a4a 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
DEPENDS = "makedevs"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r104"
+PR = "r105"
SRC_URI = "file://functions \
file://halt \
diff --git a/packages/inputpipe/inputpipe_svn.bb b/packages/inputpipe/inputpipe_svn.bb
index 3274e9a5eb..40d78f9139 100644
--- a/packages/inputpipe/inputpipe_svn.bb
+++ b/packages/inputpipe/inputpipe_svn.bb
@@ -18,7 +18,7 @@ do_install() {
install inputpipe-client ${D}${bindir}
}
-PACKAGES = "inputpipe-server inputpipe-client"
+PACKAGES = "${PN}-dbg inputpipe-server inputpipe-client"
FILES_inputpipe-client = "${bindir}/inputpipe-client"
FILES_inputpipe-server = "${bindir}/inputpipe-server"
diff --git a/packages/ipaq-boot-params/files/h5000/params b/packages/ipaq-boot-params/files/h5000/params
index 2d1a571173..fb42935fd5 100644
--- a/packages/ipaq-boot-params/files/h5000/params
+++ b/packages/ipaq-boot-params/files/h5000/params
@@ -1 +1 @@
-set linuxargs "root=/dev/mtdblock1 noinitrd console=ttyS0,115200"
+set linuxargs "root=mtd1 noinitrd console=ttyS0,115200 console=tty0"
diff --git a/packages/ipaq-boot-params/files/params b/packages/ipaq-boot-params/files/params
index 42344d6fb7..fb42935fd5 100644
--- a/packages/ipaq-boot-params/files/params
+++ b/packages/ipaq-boot-params/files/params
@@ -1 +1 @@
-set linuxargs "root=/dev/mtdblock1 init=/linuxrc noinitrd console=none"
+set linuxargs "root=mtd1 noinitrd console=ttyS0,115200 console=tty0"
diff --git a/packages/ipaq-boot-params/ipaq-boot-params.bb b/packages/ipaq-boot-params/ipaq-boot-params.bb
index 15e3c9cd51..216811ab56 100644
--- a/packages/ipaq-boot-params/ipaq-boot-params.bb
+++ b/packages/ipaq-boot-params/ipaq-boot-params.bb
@@ -1,5 +1,6 @@
+DESCRIPTION = "Kernel boot parameters for HH.org bootldr"
LICENSE = "MIT"
-PR = "r2"
+PR = "r5"
COMPATIBLE_MACHINE = "(h3600|h3800|h3900|h5000|simpad)"
diff --git a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
index 3101ecb3be..ba3c8ecd0c 100644
--- a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
@@ -1,7 +1,7 @@
require ipkg-utils_${PV}.bb
RDEPENDS = ""
-PR = "r15"
+PR = "r16"
inherit native
diff --git a/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch b/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
index 9f9b9359ce..ad6df4f2e9 100644
--- a/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
+++ b/packages/ipkg-utils/ipkg-utils/ipkg-make-index-track-stamps.patch
@@ -86,12 +86,3 @@ Index: ipkg-utils/ipkg-make-index
if opt_s:
sys.exit(0)
-@@ -154,7 +177,7 @@ if packages_filename:
- os.rename(tmp_packages_filename, packages_filename)
- os.rename(tmp_gzip_filename, gzip_filename)
-
--if verbose:
-+if verbose:
- sys.stderr.write("Generate Packages.filelist file\n")
- files = {}
- names = packages.packages.keys()
diff --git a/packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch b/packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch
index 25eb2cce6f..389a86018b 100644
--- a/packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch
+++ b/packages/ipkg-utils/ipkg-utils/ipkg-py-tarfile.patch
@@ -1,13 +1,6 @@
----
- arfile.py | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ipkg.py | 106 ++++++++++++++++++++++++++---------------------------
- setup.py | 2 -
- 3 files changed, 177 insertions(+), 55 deletions(-)
-
-Index: ipkg-utils/arfile.py
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ipkg-utils/arfile.py 2007-05-26 23:46:59.000000000 +0100
+diff -r 720080c24d2f arfile.py
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/arfile.py Sun Jan 27 23:26:35 2008 +0200
@@ -0,0 +1,124 @@
+"""
+arfile - A module to parse GNU ar archives.
@@ -133,23 +126,10 @@ Index: ipkg-utils/arfile.py
+
+ f2 = tarf.extractfile("control")
+ print f2.read()
-Index: ipkg-utils/setup.py
-===================================================================
---- ipkg-utils.orig/setup.py 2007-05-26 23:45:55.000000000 +0100
-+++ ipkg-utils/setup.py 2007-05-26 23:46:59.000000000 +0100
-@@ -16,6 +16,6 @@ distutils.core.setup( name = 'ipkg-utils
- platforms = 'POSIX',
- keywords = 'ipkg familiar',
- url = 'http://www.handhelds.org/sources.html/',
-- py_modules = [ 'ipkg' ],
-+ py_modules = [ 'ipkg', 'arfile' ],
- scripts = ['ipkg-compare-indexes', 'ipkg-make-index', 'ipkg-update-index', 'ipkg-build', 'ipkg-unbuild', 'ipkg-upload']
- )
-Index: ipkg-utils/ipkg.py
-===================================================================
---- ipkg-utils.orig/ipkg.py 2007-05-26 23:46:55.000000000 +0100
-+++ ipkg-utils/ipkg.py 2007-05-26 23:45:20.000000000 +0100
-@@ -41,6 +41,8 @@ import re
+diff -r 720080c24d2f ipkg.py
+--- a/ipkg.py Sun Jan 27 23:13:26 2008 +0200
++++ b/ipkg.py Sun Jan 27 23:26:35 2008 +0200
+@@ -41,6 +41,8 @@ import string
import string
import commands
from stat import ST_SIZE
@@ -158,7 +138,7 @@ Index: ipkg-utils/ipkg.py
class Version:
"""A class for holding parsed package version information."""
-@@ -131,78 +133,61 @@ class Package:
+@@ -131,77 +133,61 @@ class Package:
self.section = None
self.filename_header = None
self.file_list = []
@@ -198,8 +178,6 @@ Index: ipkg-utils/ipkg.py
- self.size = stat[ST_SIZE]
+
self.filename = os.path.basename(fn)
-+ assert self.isdeb == 1, "Old ipk format (non-deb) is unsupported"
-+
## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,))
- if self.isdeb:
- control = os.popen("ar p "+fn+" control.tar.gz | tar xfzO - './control'","r")
@@ -227,15 +205,18 @@ Index: ipkg-utils/ipkg.py
- self.__dict__[name] = value
- else:
- line = control.readline()
++ if self.isdeb:
++ ar = arfile.ArFile(f)
++ tarStream = ar.open("control.tar.gz")
++ tarf = tarfile.open("control.tar.gz", "r", tarStream)
++
++ try:
++ control = tarf.extractfile("control")
++ except KeyError:
++ control = tarf.extractfile("./control")
++ else:
++ control = os.popen("tar --wildcards -xzO -f " + fn + " '*control.tar.gz' | tar xfzO - './control'", "r")
+
-+ ar = arfile.ArFile(f)
-+ tarStream = ar.open("control.tar.gz")
-+ tarf = tarfile.open("control.tar.gz", "r", tarStream)
-+
-+ try:
-+ control = tarf.extractfile("control")
-+ except KeyError:
-+ control = tarf.extractfile("./control")
+ self.read_control(control)
control.close()
- if self.isdeb:
@@ -251,7 +232,7 @@ Index: ipkg-utils/ipkg.py
self.scratch_dir = None
self.file_dir = None
self.meta_dir = None
-
++
+ def __getattr__(self, name):
+ if name == "md5":
+ self._computeFileMD5()
@@ -269,11 +250,10 @@ Index: ipkg-utils/ipkg.py
+ sum.update(data)
+ f.close()
+ self.md5 = sum.hexdigest()
-+
+
def read_control(self, control):
import os
-
-@@ -221,9 +203,15 @@ class Package:
+@@ -221,9 +207,15 @@ class Package:
value = value + '\n' + line
if name == 'size':
self.size = int(value)
@@ -290,20 +270,43 @@ Index: ipkg-utils/ipkg.py
return # consumes one blank line at end of package descriptoin
else:
line = control.readline()
-@@ -314,6 +302,16 @@ class Package:
+@@ -314,7 +306,27 @@ class Package:
return self.section
def get_file_list(self):
+- return self.file_list
+ if not self.fn:
+ return []
-+ f = open(self.fn, "rb")
-+ ar = arfile.ArFile(f)
-+ tarStream = ar.open("data.tar.gz")
-+ tarf = tarfile.open("data.tar.gz", "r", tarStream)
-+ self.file_list = tarf.getnames()
++
++ if self.isdeb:
++ f = open(self.fn, "rb")
++ ar = arfile.ArFile(f)
++ tarStream = ar.open("data.tar.gz")
++ tarf = tarfile.open("data.tar.gz", "r", tarStream)
++ self.file_list = tarf.getnames()
++ f.close()
++ else:
++ f = os.popen("tar xfzO " + self.fn + " '*data.tar.gz' | tar tfz -","r")
++ while 1:
++ line = f.readline()
++ if not line: break
++ self.file_list.append(string.rstrip(line))
++ f.close()
++
++ # Make sure that filelist has consistent format regardless of tar version
+ self.file_list = map(lambda a: ["./", ""][a.startswith("./")] + a, self.file_list)
-+
-+ f.close()
- return self.file_list
++ return self.file_list
def write_package(self, dirname):
+ buf = self.render_control()
+diff -r 720080c24d2f setup.py
+--- a/setup.py Sun Jan 27 23:13:26 2008 +0200
++++ b/setup.py Sun Jan 27 23:26:35 2008 +0200
+@@ -16,6 +16,6 @@ distutils.core.setup( name = 'ipkg-utils
+ platforms = 'POSIX',
+ keywords = 'ipkg familiar',
+ url = 'http://www.handhelds.org/sources.html/',
+- py_modules = [ 'ipkg' ],
++ py_modules = [ 'ipkg', 'arfile' ],
+ scripts = ['ipkg-compare-indexes', 'ipkg-make-index', 'ipkg-update-index', 'ipkg-build', 'ipkg-unbuild', 'ipkg-upload']
+ )
diff --git a/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
index c089796ccb..febecb0085 100644
--- a/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils_1.6+cvs20050404.bb
@@ -5,7 +5,7 @@ LICENSE = "GPL"
CONFLICTS = "ipkg-link"
RDEPENDS = "python"
SRCDATE = "20050404"
-PR = "r17"
+PR = "r18"
SRC_URI = "${HANDHELDS_CVS};module=ipkg-utils \
file://ipkg-utils-fix.patch;patch=1 \
diff --git a/packages/ipkg/files/enable_debversion.patch b/packages/ipkg/files/enable_debversion.patch
new file mode 100644
index 0000000000..e9c3a7a1d4
--- /dev/null
+++ b/packages/ipkg/files/enable_debversion.patch
@@ -0,0 +1,111 @@
+OE makes heavy use of the revision field so it makes sense to
+enable it. We don't want the familiar stuff though so patch that
+out.
+
+RP - 19/02/2008
+
+Index: ipkg-0.99.163/pkg.c
+===================================================================
+--- ipkg-0.99.163.orig/pkg.c 2008-02-19 00:35:03.000000000 +0000
++++ ipkg-0.99.163/pkg.c 2008-02-19 00:36:02.000000000 +0000
+@@ -1118,15 +1118,11 @@
+ return r;
+ }
+
+-#ifdef USE_DEBVERSION
+ r = verrevcmp(pkg->revision, ref_pkg->revision);
+ if (r) {
+ return r;
+ }
+
+- r = verrevcmp(pkg->familiar_revision, ref_pkg->familiar_revision);
+-#endif
+-
+ return r;
+ }
+
+@@ -1240,10 +1236,7 @@
+ {
+ char *complete_version;
+ char *epoch_str;
+-#ifdef USE_DEBVERSION
+ char *revision_str;
+- char *familiar_revision_str;
+-#endif
+
+ if (pkg->epoch) {
+ sprintf_alloc(&epoch_str, "%d:", pkg->epoch);
+@@ -1251,33 +1244,18 @@
+ epoch_str = strdup("");
+ }
+
+-#ifdef USE_DEBVERSION
+ if (pkg->revision && strlen(pkg->revision)) {
+ sprintf_alloc(&revision_str, "-%s", pkg->revision);
+ } else {
+ revision_str = strdup("");
+ }
+
+- if (pkg->familiar_revision && strlen(pkg->familiar_revision)) {
+- sprintf_alloc(&familiar_revision_str, "-fam%s", pkg->familiar_revision);
+- } else {
+- familiar_revision_str = strdup("");
+- }
+-#endif
+
+-#ifdef USE_DEBVERSION
+- sprintf_alloc(&complete_version, "%s%s%s%s",
+- epoch_str, pkg->version, revision_str, familiar_revision_str);
+-#else
+- sprintf_alloc(&complete_version, "%s%s",
+- epoch_str, pkg->version);
+-#endif
++ sprintf_alloc(&complete_version, "%s%s%s",
++ epoch_str, pkg->version, revision_str);
+
+ free(epoch_str);
+-#ifdef USE_DEBVERSION
+ free(revision_str);
+- free(familiar_revision_str);
+-#endif
+
+ return complete_version;
+ }
+Index: ipkg-0.99.163/pkg_parse.c
+===================================================================
+--- ipkg-0.99.163.orig/pkg_parse.c 2008-02-19 00:35:03.000000000 +0000
++++ ipkg-0.99.163/pkg_parse.c 2008-02-19 00:38:42.000000000 +0000
+@@ -105,9 +105,7 @@
+ int parseVersion(pkg_t *pkg, char *raw)
+ {
+ char *colon, *eepochcolon;
+-#ifdef USE_DEBVERSION
+ char *hyphen;
+-#endif
+ unsigned long epoch;
+
+ if (!*raw) {
+@@ -149,23 +147,12 @@
+ }
+ strcpy(pkg->version, raw);
+
+-#ifdef USE_DEBVERSION
+ hyphen= strrchr(pkg->version,'-');
+
+ if (hyphen) {
+ *hyphen++= 0;
+- if (strncmp("fam", hyphen, 3) == 0) {
+- pkg->familiar_revision=hyphen+3;
+- hyphen= strrchr(pkg->version,'-');
+- if (hyphen) {
+- *hyphen++= 0;
+- pkg->revision = hyphen;
+- }
+- } else {
+ pkg->revision = hyphen;
+- }
+ }
+-#endif
+
+ /*
+ fprintf(stderr,"Parsed version: %lu, %s, %s, %s\n",
diff --git a/packages/ipkg/files/update_version_comparision.patch b/packages/ipkg/files/update_version_comparision.patch
new file mode 100644
index 0000000000..b0d0df525b
--- /dev/null
+++ b/packages/ipkg/files/update_version_comparision.patch
@@ -0,0 +1,84 @@
+Update the version comparision to a more recent one from dpkg. This
+means it now recognises 0.0-foo > 0.0+foo as it should.
+
+RP - 19/02/2008
+
+Index: ipkg-0.99.163/pkg.c
+===================================================================
+--- ipkg-0.99.163.orig/pkg.c 2008-02-18 11:24:45.000000000 +0000
++++ ipkg-0.99.163/pkg.c 2008-02-19 00:24:50.000000000 +0000
+@@ -1128,43 +1130,37 @@
+ return r;
+ }
+
+-int verrevcmp(const char *val, const char *ref)
+-{
+- int vc, rc;
+- long vl, rl;
+- const char *vp, *rp;
+- const char *vsep, *rsep;
+-
+- if (!val) val= "";
+- if (!ref) ref= "";
+- for (;;) {
+- vp= val; while (*vp && !isdigit(*vp)) vp++;
+- rp= ref; while (*rp && !isdigit(*rp)) rp++;
+- for (;;) {
+- vc= (val == vp) ? 0 : *val++;
+- rc= (ref == rp) ? 0 : *ref++;
+- if (!rc && !vc) break;
+- if (vc && !isalpha(vc)) vc += 256; /* assumes ASCII character set */
+- if (rc && !isalpha(rc)) rc += 256;
+- if (vc != rc) return vc - rc;
+- }
+- val= vp;
+- ref= rp;
+- vl=0; if (isdigit(*vp)) vl= strtol(val,(char**)&val,10);
+- rl=0; if (isdigit(*rp)) rl= strtol(ref,(char**)&ref,10);
+- if (vl != rl) return vl - rl;
+-
+- vc = *val;
+- rc = *ref;
+- vsep = strchr(".-", vc);
+- rsep = strchr(".-", rc);
+- if (vsep && !rsep) return -1;
+- if (!vsep && rsep) return +1;
+-
+- if (!*val && !*ref) return 0;
+- if (!*val) return -1;
+- if (!*ref) return +1;
+- }
++/* assume ascii; warning: evaluates x multiple times! */
++#define order(x) ((x) == '~' ? -1 \
++ : isdigit((x)) ? 0 \
++ : !(x) ? 0 \
++ : isalpha((x)) ? (x) \
++ : (x) + 256)
++
++static int verrevcmp(const char *val, const char *ref) {
++ if (!val) val= "";
++ if (!ref) ref= "";
++
++ while (*val || *ref) {
++ int first_diff= 0;
++
++ while ( (*val && !isdigit(*val)) || (*ref && !isdigit(*ref)) ) {
++ int vc= order(*val), rc= order(*ref);
++ if (vc != rc) return vc - rc;
++ val++; ref++;
++ }
++
++ while ( *val == '0' ) val++;
++ while ( *ref == '0' ) ref++;
++ while (isdigit(*val) && isdigit(*ref)) {
++ if (!first_diff) first_diff= *val - *ref;
++ val++; ref++;
++ }
++ if (isdigit(*val)) return 1;
++ if (isdigit(*ref)) return -1;
++ if (first_diff) return first_diff;
++ }
++ return 0;
+ }
+
+ int pkg_version_satisfied(pkg_t *it, pkg_t *ref, const char *op)
diff --git a/packages/ipkg/ipkg-native_0.99.163.bb b/packages/ipkg/ipkg-native_0.99.163.bb
index 7a95b28159..dd9ff16b65 100644
--- a/packages/ipkg/ipkg-native_0.99.163.bb
+++ b/packages/ipkg/ipkg-native_0.99.163.bb
@@ -2,11 +2,13 @@ S = "${WORKDIR}/ipkg-${PV}"
#require ipkg_${PV}.bb
require ipkg-native.inc
-PR = "r4"
+PR = "r6"
inherit autotools pkgconfig native
SRC_URI = "http://www.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz \
+ file://update_version_comparision.patch;patch=1 \
+ file://enable_debversion.patch;patch=1 \
file://is-processing.patch;patch=1 \
file://1-pkg-parse--Optimize-inefficient-parsing.patch;patch=1 \
file://2-pkg-vec--Optimize-gross-inefficiency.patch;patch=1 \
diff --git a/packages/ipkg/ipkg.inc b/packages/ipkg/ipkg.inc
index 9154572f08..ee5da71c22 100644
--- a/packages/ipkg/ipkg.inc
+++ b/packages/ipkg/ipkg.inc
@@ -10,6 +10,8 @@ FILES_libipkg = "${libdir}/*.so.*"
AUTO_LIBNAME_PKGS = "libipkg"
SRC_URI = "${HANDHELDS_CVS};module=familiar/dist/ipkg;tag=${@'V' + bb.data.getVar('PV',d,1).replace('.', '-')} \
+ file://update_version_comparision.patch;patch=1 \
+ file://enable_debversion.patch;patch=1 \
file://ipkg-configure \
file://terse.patch;patch=1"
diff --git a/packages/ipkg/ipkg_0.99.163.bb b/packages/ipkg/ipkg_0.99.163.bb
index fccfe8d53f..f546f6e6c8 100644
--- a/packages/ipkg/ipkg_0.99.163.bb
+++ b/packages/ipkg/ipkg_0.99.163.bb
@@ -1,5 +1,5 @@
include ipkg.inc
-PR = "r6"
+PR = "r8"
S = "${WORKDIR}/ipkg-${PV}"
diff --git a/packages/ixp4xx/ixp4xx-csr_2.0.bb b/packages/ixp4xx/ixp4xx-csr_2.0.bb
index a160fe4609..e462c505fb 100644
--- a/packages/ixp4xx/ixp4xx-csr_2.0.bb
+++ b/packages/ixp4xx/ixp4xx-csr_2.0.bb
@@ -82,7 +82,6 @@ do_stage () {
install -m 0644 src/include/*.h ${STAGING_INCDIR}/linux/ixp4xx-csr/
}
-PACKAGES = "${PN}"
do_install () {
install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400
diff --git a/packages/ixp4xx/ixp4xx-csr_2.1.1.bb b/packages/ixp4xx/ixp4xx-csr_2.1.1.bb
index cc063b523e..32685d30f6 100644
--- a/packages/ixp4xx/ixp4xx-csr_2.1.1.bb
+++ b/packages/ixp4xx/ixp4xx-csr_2.1.1.bb
@@ -113,7 +113,6 @@ do_stage () {
fi
}
-PACKAGES = "${PN}"
do_install () {
install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400
diff --git a/packages/ixp4xx/ixp4xx-csr_2.1.bb b/packages/ixp4xx/ixp4xx-csr_2.1.bb
index e72de05071..e95f807107 100644
--- a/packages/ixp4xx/ixp4xx-csr_2.1.bb
+++ b/packages/ixp4xx/ixp4xx-csr_2.1.bb
@@ -105,7 +105,6 @@ do_stage () {
fi
}
-PACKAGES = "${PN}"
do_install () {
install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400
diff --git a/packages/jamvm/files/debian-jni.patch b/packages/jamvm/files/debian-jni.patch
new file mode 100644
index 0000000000..040163da69
--- /dev/null
+++ b/packages/jamvm/files/debian-jni.patch
@@ -0,0 +1,19 @@
+--- src/dll.c.orig 2004-09-09 15:48:45.000000000 +0000
++++ src/dll.c 2004-09-09 15:50:32.000000000 +0000
+@@ -189,6 +189,16 @@
+ #ifndef NO_JNI
+ /* Init hash table, and create lock */
+ initHashTable(hash_table, HASHTABSZE, TRUE);
++
++ /* XXX: Add Debian JNI directory. */
++ char* path = getenv("LD_LIBRARY_PATH");
++
++ if (path != NULL)
++ path = strcat(path, ":OE_LIBDIR_JNI");
++ else
++ path = "OE_LIBDIR_JNI";
++
++ setenv("LD_LIBRARY_PATH", path, 1);
+ #endif
+ }
+
diff --git a/packages/jamvm/jamvm.inc b/packages/jamvm/jamvm.inc
index 36378370c5..930159e891 100644
--- a/packages/jamvm/jamvm.inc
+++ b/packages/jamvm/jamvm.inc
@@ -12,7 +12,7 @@ RPROVIDES_jamvm = "java2-runtime"
# This uses 32 bit arm, so force the instruction set to arm, not thumb
ARM_INSTRUCTION_SET = "arm"
-inherit autotools update-alternatives
+inherit java autotools update-alternatives
EXTRA_OECONF = "--with-classpath-install-dir=${prefix}"
CFLAGS += "-DDEFAULT_MAX_HEAP=16*MB"
diff --git a/packages/jamvm/jamvm_1.5.0.bb b/packages/jamvm/jamvm_1.5.0.bb
index efa959f0f9..366658dd97 100644
--- a/packages/jamvm/jamvm_1.5.0.bb
+++ b/packages/jamvm/jamvm_1.5.0.bb
@@ -1,5 +1,12 @@
require jamvm.inc
-PR = "r0"
+SRC_URI += "file://debian-jni.patch;patch=1;pnum=0"
+PR = "r1"
+
+do_configure_prepend() {
+ # Replaces the placeholder OE_LIBDIR_JNI with the JNI library directory
+ # configured in OE.
+ sed -i -e "s|OE_LIBDIR_JNI|${libdir_jni}|" src/dll.c
+}
diff --git a/packages/joe/joe_3.1.bb b/packages/joe/joe_3.1.bb
index 31050477b8..d2f2aa6ad2 100644
--- a/packages/joe/joe_3.1.bb
+++ b/packages/joe/joe_3.1.bb
@@ -1,6 +1,8 @@
SECTION = "console/utils"
-DESCRIPTION = "Joe's own editor."
+DESCRIPTION = "Console text editor with good functionality, good choice for vi-haters."
+HOMEPAGE = "http://joe-editor.sourceforge.net/"
LICENSE ="GPL"
SRC_URI = "${SOURCEFORGE_MIRROR}/joe-editor/joe-${PV}.tar.gz"
+PR = "r1"
inherit autotools
diff --git a/packages/juce/juce_1.29.bb b/packages/juce/juce_1.29.bb
index c5a920a0dc..59fd25f2b8 100644
--- a/packages/juce/juce_1.29.bb
+++ b/packages/juce/juce_1.29.bb
@@ -28,6 +28,6 @@ do_install() {
install -m 0655 demo/build/linux/build/jucedemo ${D}${bindir}
}
-PACKAGES = "jucedemo"
+PACKAGES = "${PN}-dbg jucedemo"
FILES_jucedemo = "${bindir}"
diff --git a/packages/kanjipad/kanjipad_svn.bb b/packages/kanjipad/kanjipad_svn.bb
new file mode 100644
index 0000000000..73c6ddba0f
--- /dev/null
+++ b/packages/kanjipad/kanjipad_svn.bb
@@ -0,0 +1,12 @@
+require kanjipad.inc
+
+DEPENDS += "perl-native"
+PV = "2.0.0+svn${SRCDATE}"
+PR = "r1"
+
+SRC_URI = "svn://svn.gnome.org/svn/${PN}/;module=trunk"
+S = "${WORKDIR}/trunk"
+
+do_compile_prepend() {
+ export CFLAGS='${TARGET_CFLAGS} -DFOR_PILOT_COMPAT -DKP_LIBDIR="${libdir}/kanjipad" -DBINDIR="${bindir}" `pkg-config --cflags gtk+-2.0` `pkg-config --cflags glib-2.0`'
+}
diff --git a/packages/kdepimpi/files/gcc4.patch b/packages/kdepimpi/files/gcc4.patch
index 70bd00c889..4f0f212ea6 100644
--- a/packages/kdepimpi/files/gcc4.patch
+++ b/packages/kdepimpi/files/gcc4.patch
@@ -1,3 +1,6 @@
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
--- ./gammu/emb/gammu/depend/siemens/dsiemens.c 2006/04/14 23:30:53 1.1
+++ ./gammu/emb/gammu/depend/siemens/dsiemens.c 2006/04/14 23:31:08
@@ -351,7 +351,7 @@
diff --git a/packages/kdepimpi/files/gcc42.patch b/packages/kdepimpi/files/gcc42.patch
index 30e425aeda..e6328eb1ee 100644
--- a/packages/kdepimpi/files/gcc42.patch
+++ b/packages/kdepimpi/files/gcc42.patch
@@ -1,4 +1,8 @@
-diff --git a/kabc/secrecy.h b/kabc/secrecy.h
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
+diff --git
+a/kabc/secrecy.h b/kabc/secrecy.h
index 21e22f2..3011ae9 100644
--- a/kabc/secrecy.h
+++ b/kabc/secrecy.h
diff --git a/packages/kdepimpi/files/qt-mt.patch b/packages/kdepimpi/files/qt-mt.patch
index c7e3f9d88a..f0a5721bd1 100644
--- a/packages/kdepimpi/files/qt-mt.patch
+++ b/packages/kdepimpi/files/qt-mt.patch
@@ -1,4 +1,8 @@
-diff --git a/microkde/kresources/resource.cpp b/microkde/kresources/resource.cpp
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
+diff --git
+a/microkde/kresources/resource.cpp b/microkde/kresources/resource.cpp
index cccd485..65d82e2 100644
--- a/microkde/kresources/resource.cpp
+++ b/microkde/kresources/resource.cpp
diff --git a/packages/kdepimpi/kdepimpi-base.inc b/packages/kdepimpi/kdepimpi-base.inc
index 036292d81f..250cab0614 100644
--- a/packages/kdepimpi/kdepimpi-base.inc
+++ b/packages/kdepimpi/kdepimpi-base.inc
@@ -150,7 +150,7 @@ do_install() {
}
-PACKAGES = "libmicrokcal libmicrokabc kopi-applet kopi kapi libmicrokdelibs kammu libmicrokammu"
+PACKAGES = "${PN}-dbg libmicrokcal libmicrokabc kopi-applet kopi kapi libmicrokdelibs kammu libmicrokammu"
FILES_kopi = "${bindir}/kopi ${palmtopdir}/apps/1Pim/korganizer.desktop ${palmtopdir}/pics/kdepim/korganizer/* "
FILES_kapi = "${bindir}/kapi ${palmtopdir}/apps/1Pim/kaddressbook.desktop ${palmtopdir}/pics/kdepim/kaddressbook/* ${palmtopdir}/lib/libmicrokabc_* ${palmtopdir}/lib/libmicrokabcformat_binary*"
diff --git a/packages/kdepimpi/kdepimpi-qte.inc b/packages/kdepimpi/kdepimpi-qte.inc
new file mode 100644
index 0000000000..3fa8781658
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-qte.inc
@@ -0,0 +1,163 @@
+DESCRIPTION = "KDE-Pim Platform Independent - port of KDE Pim to PDA"
+DESCRIPTION_kopi = "Korganizer/PI is a powerful calendar and ToDo Tool"
+DESCRIPTION_kopi-applet = "KDE Pim/PI applet"
+DESCRIPTION_kapi = "KAddressbook/PI is a port of KDE addressbook"
+DESCRIPTION_libmicrokdelibs = "KDE Pim/PI library - microkde"
+DESCRIPTION_libmicrokcal = "KDE Pim/PI library - microkcal"
+DESCRIPTION_libmicrokabc = "KDE Pim/PI library - microkabc"
+DESCRIPTION_libmicrokammu = "KDE Pim/PI fork of libGammu"
+DESCRIPTION_kammu = "KDE Pim/PI fork of gammu"
+
+SECTION = "opie/pim"
+PRIORITY = "optional"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.pi-sync.net/ http://sf.net/projects/kdepimpi/"
+MAINTAINER = "Marcin Juszkiewicz <openembedded@hrw.one.pl>"
+
+# we can't build:
+# kabc/plugins/sharpdtm - wants libsl (Sharp ROM 3.x closed source library)
+# kabc/plugins/ldap - wants ldap libs (?)
+# kabc/plugins/opie - wants libopie1 (we don't plan to have it in OE)
+# kmicromail - conflict with OE libetpan, libmailwrapper/OPIE
+
+PARALLEL_MAKE = ""
+
+S = "${WORKDIR}/kdepim"
+
+EXTRA_QMAKEVARS_POST += " \
+INCLUDEPATH+=../ \
+OBJECTS_DIR=obj/ MOC_DIR=moc/ \
+DESTDIR=${S}/dest \
+LIBS+=-L${S}/dest/ \
+LIBS-=-lzlib \
+LIBS+=-lz \
+"
+# That changes will be needed for KMicroMail/PI to get it build with OE libs
+#
+# LIBS-=-lkmicromailwrapper LIBS+=-lmailwrapper LIBS+=-lopiecore2 \
+
+QMAKE_PROFILES= "all.pro"
+
+SUBDIRS="qtcompat libical/src/libical libical/src/libicalss microkde libkcal libkdepim \
+ kabc korganizer kalarmd kaddressbook kabc/plugins/file kabc/plugins/dir \
+ kabc/formats/binary kabc/plugins/qtopia \
+ gammu/emb/common \
+ gammu/emb/gammu \
+# pwmanager/libcrypt/mpi \
+# pwmanager/libcrypt/error \
+# pwmanager/libcrypt/cipher \
+# pwmanager/libcrypt/zlib \
+# pwmanager/pwmanager \
+ "
+
+inherit palmtop
+
+do_configure_prepend() {
+ mv ${S}/kabc/formats/binary/kabcformat_binaryE.pro ${S}/kabc/formats/binary/binaryE.pro
+ echo -e "TEMPLATE=subdirs\nSUBDIRS=${SUBDIRS}\n" >all.pro
+ for d in ${SUBDIRS}
+ do
+ if [ -f ${d}/`basename ${d}`E.pro ];
+ then
+ mv -f ${d}/`basename ${d}`E.pro ${d}/`basename ${d}`.pro
+ fi
+ done
+}
+
+do_compile() {
+ export KDEPIMDIR=${S}
+ oe_runmake
+}
+
+HEADERS_DIRS = "qtcompat \
+microkde \
+microkde/kdecore \
+microkde/kdeui \
+microkde/kio \
+microkde/kresources \
+microkde/kutils \
+microkde/opie2 \
+kabc \
+libkcal \
+libkdepim "
+
+do_unstage() {
+
+ for dir in ${HEADERS_DIRS};
+ do
+ rm -rf ${STAGING_INCDIR}/kdepimpi/$dir
+ done
+
+ for f in libmicrokde libmicrokdepim libmicrokabc libmicrokcal libmicroqtcompat
+ do
+ rm -f ${STAGING_LIBDIR}/kdepimpi/$f*
+ done
+}
+
+addtask unstage before do_configure
+
+do_stage() {
+
+ for dir in ${HEADERS_DIRS};
+ do
+ install -d ${STAGING_INCDIR}/kdepimpi/$dir
+ install -m 0644 ${S}/$dir/*.h ${STAGING_INCDIR}/kdepimpi/$dir/
+ done
+
+ for f in libmicrokde libmicrokdepim libmicrokabc libmicrokcal libmicroqtcompat
+ do
+ oe_libinstall -so -C ${S}/dest/ $f ${STAGING_LIBDIR}/kdepimpi/
+ done
+}
+
+do_install() {
+ install -d ${D}${palmtopdir}/bin \
+ ${D}${palmtopdir}/lib \
+ ${D}${palmtopdir}/apps/1Pim \
+ ${D}${palmtopdir}/pics/kdepim/korganizer/icons16 \
+ ${D}${palmtopdir}/pics/kdepim/korganizer/iconsmini \
+ ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons16 \
+ ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons22 \
+ ${D}${palmtopdir}/plugins/applets
+
+ install -m 0644 ${S}/bin/kdepim/korganizer/ko16.png ${D}${palmtopdir}/pics/
+ install -m 0644 ${S}/bin/kdepim/korganizer/ko24.png ${D}${palmtopdir}/pics/
+ install -m 0644 ${S}/bin/kdepim/korganizer/*.* ${D}${palmtopdir}/pics/kdepim/korganizer
+ install -m 0644 ${S}/bin/kdepim/korganizer/icons16/*.png ${D}${palmtopdir}/pics/kdepim/korganizer/icons16
+ install -m 0644 ${S}/bin/kdepim/korganizer/iconsmini/*.png ${D}${palmtopdir}/pics/kdepim/korganizer/iconsmini
+ install -m 0644 korganizer/korganizer.desktop ${D}${palmtopdir}/apps/1Pim/korganizer.desktop
+
+ install -m 0644 ${S}/bin/kdepim/kaddressbook/*.* ${D}${palmtopdir}/pics/kdepim/kaddressbook
+ install -m 0644 ${S}/bin/kdepim/kaddressbook/icons16/*.png ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons16
+ install -m 0644 ${S}/bin/kdepim/kaddressbook/icons22/*.png ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons22
+ install -m 0644 kaddressbook/kaddressbook.desktop ${D}${palmtopdir}/apps/1Pim/kaddressbook.desktop
+
+ for f in libmicrokde libmicrokdepim libmicrokabc libmicrokcal libmicroqtcompat libmicrokabc_file libmicrokabc_dir libmicrokabcformat_binary libmicrokabc_qtopia
+ do
+ oe_libinstall -so -C ${S}/dest/ $f ${D}${palmtopdir}/lib
+ done
+
+ install -m 0755 ${S}/dest/kopi ${D}${palmtopdir}/bin/kopi
+ install -m 0755 ${S}/dest/kapi ${D}${palmtopdir}/bin/kapi
+
+ install -d ${D}${bindir} ${D}${libdir}
+ install -m 0755 ${S}/dest/kammu ${D}${bindir}/kammu
+ oe_libinstall -so -C ${S}/dest/ libmicrokammu ${D}${libdir}
+
+ for f in libkopialarmapplet
+ do
+ oe_libinstall -so -C ${S}/dest/ $f ${D}${palmtopdir}/plugins/applets
+ done
+}
+
+
+PACKAGES = "libmicrokcal libmicrokabc kopi-applet kopi kapi libmicrokdelibs kammu libmicrokammu"
+
+FILES_kopi = "${palmtopdir}/bin/kopi ${palmtopdir}/apps/1Pim/korganizer.desktop ${palmtopdir}/pics/kdepim/korganizer/* "
+FILES_kapi = "${palmtopdir}/bin/kapi ${palmtopdir}/apps/1Pim/kaddressbook.desktop ${palmtopdir}/pics/kdepim/kaddressbook/* ${palmtopdir}/lib/libmicrokabc_* ${palmtopdir}/lib/libmicrokabcformat_binary*"
+FILES_kopi-applet = "${palmtopdir}/plugins/applets/* ${palmtopdir}/pics/ko16.png ${palmtopdir}/pics/ko24.png"
+FILES_libmicrokabc = "${palmtopdir}/lib/libmicrokabc*"
+FILES_libmicrokcal = "${palmtopdir}/lib/libmicrokcal*"
+FILES_libmicrokdelibs = "${palmtopdir}/lib/*"
+FILES_kammu = "${bindir}/kammu"
+FILES_libmicrokammu = "${libdir}/libmicrokammu*"
diff --git a/packages/kdepimpi/kdepimpi-x11.inc b/packages/kdepimpi/kdepimpi-x11.inc
new file mode 100644
index 0000000000..80c246ad7c
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-x11.inc
@@ -0,0 +1,70 @@
+DESCRIPTION = "KDE-Pim Platform Independent - port of KDE Pim to PDA - X11 version"
+DESCRIPTION_kopi-x11 = "Korganizer/PI is a powerful calendar and ToDo Tool - X11 version"
+DESCRIPTION_kopi-applet-x11 = "KDE Pim/PI applet - X11 version"
+DESCRIPTION_kapi-x11 = "KAddressbook/PI is a port of KDE addressbook - X11 version"
+DESCRIPTION_libmicrokdelibs-x11 = "KDE Pim/PI library - microkde - X11 version"
+DESCRIPTION_libmicrokcal-x11 = "KDE Pim/PI library - microkcal - X11 version"
+DESCRIPTION_libmicrokabc-x11 = "KDE Pim/PI library - microkabc - X11 version"
+DESCRIPTION_libmicrokammu-x11 = "KDE Pim/PI fork of libGammu - X11 version"
+DESCRIPTION_kammu-x11 = "KDE Pim/PI fork of gammu - X11 version"
+
+SECTION = "x11/pim"
+
+inherit qmake qt3x11
+
+QMAKE_PROFILES= "kdepim-desktop.pro"
+
+do_install() {
+ oe_runmake install
+}
+
+do_install-broken() {
+ install -d ${D}${palmtopdir}/bin \
+ ${D}${palmtopdir}/lib \
+ ${D}${palmtopdir}/apps/1Pim \
+ ${D}${palmtopdir}/pics/kdepim/korganizer/icons16 \
+ ${D}${palmtopdir}/pics/kdepim/korganizer/iconsmini \
+ ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons16 \
+ ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons22 \
+ ${D}${palmtopdir}/plugins/applets
+
+ install -m 0644 ${S}/bin/kdepim/korganizer/ko16.png ${D}${palmtopdir}/pics/
+ install -m 0644 ${S}/bin/kdepim/korganizer/ko24.png ${D}${palmtopdir}/pics/
+ install -m 0644 ${S}/bin/kdepim/korganizer/*.* ${D}${palmtopdir}/pics/kdepim/korganizer
+ install -m 0644 ${S}/bin/kdepim/korganizer/icons16/*.png ${D}${palmtopdir}/pics/kdepim/korganizer/icons16
+ install -m 0644 ${S}/bin/kdepim/korganizer/iconsmini/*.png ${D}${palmtopdir}/pics/kdepim/korganizer/iconsmini
+ install -m 0644 korganizer/korganizer.desktop ${D}${palmtopdir}/apps/1Pim/korganizer.desktop
+
+ install -m 0644 ${S}/bin/kdepim/kaddressbook/*.* ${D}${palmtopdir}/pics/kdepim/kaddressbook
+ install -m 0644 ${S}/bin/kdepim/kaddressbook/icons16/*.png ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons16
+ install -m 0644 ${S}/bin/kdepim/kaddressbook/icons22/*.png ${D}${palmtopdir}/pics/kdepim/kaddressbook/icons22
+ install -m 0644 kaddressbook/kaddressbook.desktop ${D}${palmtopdir}/apps/1Pim/kaddressbook.desktop
+
+ for f in libmicrokde libmicrokdepim libmicrokabc libmicrokcal libmicroqtcompat libmicrokabc_file libmicrokabc_dir libmicrokabcformat_binary libmicrokabc_qtopia
+ do
+ oe_libinstall -so -C ${S}/dest/ $f ${D}${palmtopdir}/lib
+ done
+
+ install -m 0755 ${S}/dest/kopi ${D}${palmtopdir}/bin/kopi
+ install -m 0755 ${S}/dest/kapi ${D}${palmtopdir}/bin/kapi
+
+ install -d ${D}${bindir} ${D}${libdir}
+ install -m 0755 ${S}/dest/kammu ${D}${bindir}/kammu
+ oe_libinstall -so -C ${S}/dest/ libmicrokammu ${D}${libdir}
+
+ for f in libkopialarmapplet
+ do
+ oe_libinstall -so -C ${S}/dest/ $f ${D}${palmtopdir}/plugins/applets
+ done
+}
+
+PACKAGES = "libmicrokcal-x11 libmicrokabc-x11 kopi-applet-x11 kopi-x11 kapi-x11 libmicrokdelibs-x11 kammu-x11 libmicrokammu-x11"
+
+FILES_kopi-x11 = "${palmtopdir}/bin/kopi ${palmtopdir}/apps/1Pim/korganizer.desktop ${palmtopdir}/pics/kdepim/korganizer/* "
+FILES_kapi-x11 = "${palmtopdir}/bin/kapi ${palmtopdir}/apps/1Pim/kaddressbook.desktop ${palmtopdir}/pics/kdepim/kaddressbook/* ${palmtopdir}/lib/libmicrokabc_* ${palmtopdir}/lib/libmicrokabcformat_binary*"
+FILES_kopi-applet-x11 = "${palmtopdir}/plugins/applets/* ${palmtopdir}/pics/ko16.png ${palmtopdir}/pics/ko24.png"
+FILES_libmicrokabc-x11 = "${palmtopdir}/lib/libmicrokabc*"
+FILES_libmicrokcal-x11 = "${palmtopdir}/lib/libmicrokcal*"
+FILES_libmicrokdelibs-x11 = "${palmtopdir}/lib/*"
+FILES_kammu-x11 = "${bindir}/kammu"
+FILES_libmicrokammu-x11 = "${libdir}/libmicrokammu*"
diff --git a/packages/busybox/slingbox-1.00/.mtn2git_empty b/packages/kdepimpi/kdepimpi-x11/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/slingbox-1.00/.mtn2git_empty
+++ b/packages/kdepimpi/kdepimpi-x11/.mtn2git_empty
diff --git a/packages/kdepimpi/kdepimpi-x11/kabc.patch b/packages/kdepimpi/kdepimpi-x11/kabc.patch
new file mode 100644
index 0000000000..1f57b855c3
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-x11/kabc.patch
@@ -0,0 +1,24 @@
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- kdepim/kaddressbook/kaddressbook.pro~kabc
++++ kdepim/kaddressbook/kaddressbook.pro
+@@ -31,10 +31,10 @@
+ LIBS += ../libical/lib/libicalss.a
+
+ } else {
+-LIBS += ../bin/libmicrokdepim.so
+-LIBS += ../bin/libmicrokde.so
+-LIBS += ../bin/libmicrokabc.so
+-LIBS += ../bin/libmicrokcal.so
++LIBS += $(DESTDIR)/libmicrokdepim.so
++LIBS += $(DESTDIR)/libmicrokde.so
++LIBS += $(DESTDIR)/libmicrokabc.so
++LIBS += $(DESTDIR)/libmicrokcal.so
+ #LIBS += -lldap
+ }
+ OBJECTS_DIR = obj/unix
diff --git a/packages/kdepimpi/kdepimpi-x11/kammu.patch b/packages/kdepimpi/kdepimpi-x11/kammu.patch
new file mode 100644
index 0000000000..b7ccf7c731
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-x11/kammu.patch
@@ -0,0 +1,18 @@
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- kdepim/gammu/emb/gammu/gammu.pro~kammu
++++ kdepim/gammu/emb/gammu/gammu.pro
+@@ -47,7 +47,7 @@
+ depend/nokia/dct3trac/wmx-util.c \
+ depend/nokia/dct3trac/wmx.c
+ unix : {
+-LIBS += ../../../bin/libmicrogammu.so /usr/lib/libpthread.so
++LIBS += $(DESTDIR)/libmicrogammu.so
+ # bluetooth disabled for now
+ #/usr/lib/libbluetooth.so /usr/lib/libsdp.so
+ OBJECTS_DIR = obj/unix
diff --git a/packages/kdepimpi/kdepimpi-x11/korganizer.patch b/packages/kdepimpi/kdepimpi-x11/korganizer.patch
new file mode 100644
index 0000000000..3537b5ca10
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-x11/korganizer.patch
@@ -0,0 +1,24 @@
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- kdepim/korganizer/korganizer.pro~korganizer
++++ kdepim/korganizer/korganizer.pro
+@@ -34,10 +34,10 @@
+ LIBS += ../libical/lib/libical.a
+ LIBS += ../libical/lib/libicalss.a
+ } else {
+-LIBS += ../bin/libmicrokdepim.so
+-LIBS += ../bin/libmicrokcal.so
+-LIBS += ../bin/libmicrokde.so
+-LIBS += ../bin/libmicrokabc.so
++LIBS += $(DESTDIR)/libmicrokdepim.so
++LIBS += $(DESTDIR)/libmicrokcal.so
++LIBS += $(DESTDIR)/libmicrokde.so
++LIBS += $(DESTDIR)/libmicrokabc.so
+ #LIBS += -lbluetooth
+ #LIBS += -lsdp
+
diff --git a/packages/kdepimpi/kdepimpi-x11/libkcal.patch b/packages/kdepimpi/kdepimpi-x11/libkcal.patch
new file mode 100644
index 0000000000..e226c8c02b
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-x11/libkcal.patch
@@ -0,0 +1,16 @@
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
+--- kdepim/libkcal/libkcal.pro~paths 2005-01-30 00:23:34.000000000 +0100
++++ kdepim/libkcal/libkcal.pro 2005-10-03 11:09:49.000000000 +0200
+@@ -11,8 +11,8 @@
+ DESTDIR = ../bin
+ DEFINES += DESKTOP_VERSION
+ unix: {
+-LIBS += ../libical/lib/libical.a
+-LIBS += ../libical/lib/libicalss.a
++LIBS += ../dest$(LIBICAL_PATH)/libical.a
++LIBS += ../dest$(LIBICAL_PATH)/libicalss.a
+ OBJECTS_DIR = obj/unix
+ MOC_DIR = moc/unix
+ }
diff --git a/packages/kdepimpi/kdepimpi-x11/nomail.patch b/packages/kdepimpi/kdepimpi-x11/nomail.patch
new file mode 100644
index 0000000000..b37ed7badf
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-x11/nomail.patch
@@ -0,0 +1,18 @@
+upstream: http://sourceforge.net/tracker/index.php?func=detail&aid=1898924&group_id=104103&atid=636951
+status: upstream is pretty dead
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- kdepim/kdepim-desktop.pro~nomail
++++ kdepim/kdepim-desktop.pro
+@@ -15,7 +15,7 @@
+ }
+ unix:{
+ !staticlib: {
+-SUBDIRS += libetpan kmicromail/libmailwrapper kmicromail pwmanager/libcrypt/cipher pwmanager/libcrypt/error pwmanager/libcrypt/mpi pwmanager/libcrypt/zlib pwmanager/pwmanager
++SUBDIRS += pwmanager/libcrypt/cipher pwmanager/libcrypt/error pwmanager/libcrypt/mpi pwmanager/libcrypt/zlib pwmanager/pwmanager
+ }
+ }
+
diff --git a/packages/kdepimpi/kdepimpi-x11_2.2.3.bb b/packages/kdepimpi/kdepimpi-x11_2.2.3.bb
new file mode 100644
index 0000000000..6c48baf266
--- /dev/null
+++ b/packages/kdepimpi/kdepimpi-x11_2.2.3.bb
@@ -0,0 +1,10 @@
+SRC_URI = "${SOURCEFORGE_MIRROR}/kdepimpi/kdepimpi-${PV}.tar.gz \
+file://libkcal.patch;patch=1 \
+file://kabc.patch;patch=1 \
+file://kammu.patch;patch=1 \
+file://korganizer.patch;patch=1 \
+file://nomail.patch;patch=1 \
+"
+
+include kdepimpi-base.inc
+include kdepimpi-x11.inc
diff --git a/packages/kphonepi/kphonepi_1.0.0.bb b/packages/kdepimpi/kphonepi_1.0.0.bb
index 1f8a5d8196..1f8a5d8196 100644
--- a/packages/kphonepi/kphonepi_1.0.0.bb
+++ b/packages/kdepimpi/kphonepi_1.0.0.bb
diff --git a/packages/ktimetrackerpi/ktimetrackerpi_0.9.7.bb b/packages/kdepimpi/ktimetrackerpi_0.9.7.bb
index d022dc55cc..d022dc55cc 100644
--- a/packages/ktimetrackerpi/ktimetrackerpi_0.9.7.bb
+++ b/packages/kdepimpi/ktimetrackerpi_0.9.7.bb
diff --git a/packages/kdepimpi/pwmpi.inc b/packages/kdepimpi/pwmpi.inc
index 3866b70977..9e3cd8eae7 100644
--- a/packages/kdepimpi/pwmpi.inc
+++ b/packages/kdepimpi/pwmpi.inc
@@ -36,5 +36,4 @@ do_install() {
install -m 0755 ${S}/dest/pwmpi ${D}${bindir}
}
-PACKAGES = "${PN}"
FILES_${PN} = "${palmtopdir} ${bindir}"
diff --git a/packages/busybox/slingbox-1.1.3/.mtn2git_empty b/packages/kexec/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/slingbox-1.1.3/.mtn2git_empty
+++ b/packages/kexec/files/.mtn2git_empty
diff --git a/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch b/packages/kexec/files/kexec-arm-atags.patch
index bf6f640035..bf6f640035 100644
--- a/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch
+++ b/packages/kexec/files/kexec-arm-atags.patch
diff --git a/packages/kexec/files/kexec-klibc.patch b/packages/kexec/files/kexec-klibc.patch
new file mode 100644
index 0000000000..b8e2c81689
--- /dev/null
+++ b/packages/kexec/files/kexec-klibc.patch
@@ -0,0 +1,140 @@
+Index: kexec-tools-1.101/kexec/arch/arm/kexec-elf-rel-arm.c
+===================================================================
+--- kexec-tools-1.101.orig/kexec/arch/arm/kexec-elf-rel-arm.c 2008-02-22 20:45:15.907610333 +0100
++++ kexec-tools-1.101/kexec/arch/arm/kexec-elf-rel-arm.c 2008-02-22 20:45:27.508612989 +0100
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+
+Index: kexec-tools-1.101/kexec/arch/arm/kexec-zImage-arm.c
+===================================================================
+--- kexec-tools-1.101.orig/kexec/arch/arm/kexec-zImage-arm.c 2008-02-22 20:45:15.959611260 +0100
++++ kexec-tools-1.101/kexec/arch/arm/kexec-zImage-arm.c 2008-02-22 20:45:27.508612989 +0100
+@@ -110,13 +110,13 @@
+ }
+
+ fread(buf, sizeof(buf[1]), BOOT_PARAMS_SIZE, fp);
+- if (ferror(fp)) {
++/* if (ferror(fp)) {
+ fprintf(stderr, "Cannot read %s: %s\n",
+ fn, strerror(errno));
+ fclose(fp);
+ return NULL;
+ }
+-
++*/
+ fclose(fp);
+ return (struct tag *) buf;
+ }
+Index: kexec-tools-1.101/kexec/ifdown.c
+===================================================================
+--- kexec-tools-1.101.orig/kexec/ifdown.c 2004-06-09 20:55:31.000000000 +0200
++++ kexec-tools-1.101/kexec/ifdown.c 2008-02-22 20:45:27.508612989 +0100
+@@ -14,7 +14,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+ #include <sys/time.h>
+-#include <sys/errno.h>
++#include <errno.h>
+
+ #include <net/if.h>
+ #include <netinet/in.h>
+Index: kexec-tools-1.101/purgatory/Makefile
+===================================================================
+--- kexec-tools-1.101.orig/purgatory/Makefile 2005-01-08 23:36:32.000000000 +0100
++++ kexec-tools-1.101/purgatory/Makefile 2008-02-22 20:45:27.516611391 +0100
+@@ -13,7 +13,7 @@
+
+ PCFLAGS += $(call cc-option, -ffreestanding)
+ PCFLAGS += $(call cc-option, -fnobuiltin)
+-PCFLAGS += $(call cc-option, -fnostdinc)
++PCFLAGS += $(call cc-option, -nostdinc)
+ PCFLAGS += $(call cc-option, -fno-zero-initialized-in-bss)
+
+ PURGATORY_C_SRCS:=
+Index: kexec-tools-1.101/kexec/kexec-elf-rel.c
+===================================================================
+--- kexec-tools-1.101.orig/kexec/kexec-elf-rel.c 2005-01-13 14:04:21.000000000 +0100
++++ kexec-tools-1.101/kexec/kexec-elf-rel.c 2008-02-22 20:45:27.524612027 +0100
+@@ -4,7 +4,7 @@
+ #include <stdio.h>
+ #include <errno.h>
+ #include <stdlib.h>
+-#include "elf.h"
++#include "../include/elf.h"
+ #include <boot/elf_boot.h>
+ #include "kexec.h"
+ #include "kexec-elf.h"
+Index: kexec-tools-1.101/kexec/kexec-syscall.h
+===================================================================
+--- kexec-tools-1.101.orig/kexec/kexec-syscall.h 2008-02-22 20:45:15.923611048 +0100
++++ kexec-tools-1.101/kexec/kexec-syscall.h 2008-02-22 20:45:27.524612027 +0100
+@@ -2,7 +2,7 @@
+ #define KEXEC_SYSCALL_H
+
+ #define __LIBRARY__
+-#include <syscall.h>
++/*#include <syscall.h>*/
+ #include <sys/syscall.h>
+ #include <unistd.h>
+
+@@ -21,7 +21,7 @@
+ #define LINUX_REBOOT_CMD_KEXEC_OLD 0x81726354
+ #define LINUX_REBOOT_CMD_KEXEC_OLD2 0x18263645
+ #define LINUX_REBOOT_CMD_KEXEC 0x45584543
+-
++/*
+ #ifdef __i386__
+ #define __NR_kexec_load 283
+ #endif
+@@ -43,18 +43,19 @@
+ #ifndef __NR_kexec_load
+ #error Unknown processor architecture. Needs a kexec_load syscall number.
+ #endif
+-
++*/
+ struct kexec_segment;
+-
++/*
+ static inline long kexec_load(void *entry, unsigned long nr_segments,
+ struct kexec_segment *segments, unsigned long flags)
+ {
+ return (long) syscall(__NR_kexec_load, entry, nr_segments, segments, flags);
+ }
+-
++*/
+ static inline long kexec_reboot(void)
+ {
+- return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
++ //return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
++ return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
+ }
+
+
+Index: kexec-tools-1.101/kexec/kexec.c
+===================================================================
+--- kexec-tools-1.101.orig/kexec/kexec.c 2008-02-22 20:45:15.923611048 +0100
++++ kexec-tools-1.101/kexec/kexec.c 2008-02-22 20:45:38.847612035 +0100
+@@ -29,9 +29,7 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <getopt.h>
+-#ifdef HAVE_ZLIB_H
+-#include <zlib.h>
+-#endif
++#include "zlib.h"
+ #include <sha256.h>
+ #include "kexec.h"
+ #include "kexec-syscall.h"
+@@ -383,7 +381,7 @@
+ return buf;
+ }
+
+-#if HAVE_ZLIB_H
++#if 1
+ char *slurp_decompress_file(const char *filename, off_t *r_size)
+ {
+ gzFile fp;
diff --git a/packages/kexec/files/kexec-static.patch b/packages/kexec/files/kexec-static.patch
new file mode 100644
index 0000000000..549300576e
--- /dev/null
+++ b/packages/kexec/files/kexec-static.patch
@@ -0,0 +1,12 @@
+diff -ur kexec-tools-1.101.bak/configure.ac kexec-tools-1.101/configure.ac
+--- kexec-tools-1.101.bak/configure.ac 2008-02-03 00:05:59.577094746 +0100
++++ kexec-tools-1.101/configure.ac 2008-02-03 00:06:35.579146386 +0100
+@@ -96,7 +96,7 @@
+
+ dnl ---Hard codes
+
+-CFLAGS='-Wall -g -fno-strict-aliasing $(CPPFLAGS)'
++CFLAGS='-Wall -g -static -fno-strict-aliasing $(CPPFLAGS)'
+ BUILD_CFLAGS='-O2 -Wall $(CPPFLAGS)'
+
+ dnl ---Sanity checks
diff --git a/packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch b/packages/kexec/files/kexec-tools-arm.patch
index 6e43b76096..6e43b76096 100644
--- a/packages/kexec/kexec-tools-1.101/kexec-tools-arm.patch
+++ b/packages/kexec/files/kexec-tools-arm.patch
diff --git a/packages/kexec/kexec-tools-static_1.101.bb b/packages/kexec/kexec-tools-static_1.101.bb
new file mode 100644
index 0000000000..5fa51b2e70
--- /dev/null
+++ b/packages/kexec/kexec-tools-static_1.101.bb
@@ -0,0 +1,23 @@
+# the binaries are statical linked against klibc
+require kexec-tools.inc
+
+PR = "r3"
+DEPENDS = "klibc"
+
+SRC_URI += "file://kexec-klibc.patch;patch=1"
+S = "${WORKDIR}/kexec-tools-${PV}"
+
+EXTRA_OECONF = " --without-zlib"
+
+export CC=${TARGET_PREFIX}klcc
+
+# standart oe cflags don't work with klcc
+export CFLAGS=""
+export CPPFLAGS=""
+export LDFLAGS=""
+
+PACKAGES =+ "kexec-static kdump-static"
+
+FILES_kexec-static = "${sbindir}/kexec"
+FILES_kdump-static = "${sbindir}/kdump"
+
diff --git a/packages/kexec/kexec-tools.inc b/packages/kexec/kexec-tools.inc
new file mode 100644
index 0000000000..f806e71480
--- /dev/null
+++ b/packages/kexec/kexec-tools.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Kexec is a fast reboot feature that lets you reboot to a new Linux kernel"
+AUTHOR = "Eric Biederman"
+HOMEPAGE = "http://www.xmission.com/~ebiederm/files/kexec/"
+SECTION = "kernel/userland"
+LICENSE = "GPL"
+DEPENDS = "virtual/kernel zlib"
+
+inherit autotools
+
+
+SRC_URI = "http://www.xmission.com/~ebiederm/files/kexec/kexec-tools-${PV}.tar.gz \
+ file://kexec-tools-arm.patch;patch=1 \
+ file://kexec-arm-atags.patch;patch=1"
diff --git a/packages/kexec/kexec-tools_1.101.bb b/packages/kexec/kexec-tools_1.101.bb
index d152a678ed..f74c7bcd83 100644
--- a/packages/kexec/kexec-tools_1.101.bb
+++ b/packages/kexec/kexec-tools_1.101.bb
@@ -1,16 +1,5 @@
-DESCRIPTION = "Kexec is a fast reboot feature that lets you reboot to a new Linux kernel"
-AUTHOR = "Eric Biederman"
-HOMEPAGE = "http://www.xmission.com/~ebiederm/files/kexec/"
-SECTION = "kernel/userland"
-DEPENDS = "virtual/kernel zlib"
-LICENSE = "GPL"
-PR = "r3"
-
-inherit autotools
-
+require kexec-tools.inc
export LDFLAGS = "-L${STAGING_LIBDIR}"
EXTRA_OECONF = " --with-zlib=yes"
-SRC_URI = "http://www.xmission.com/~ebiederm/files/kexec/kexec-tools-${PV}.tar.gz \
- file://kexec-tools-arm.patch;patch=1 \
- file://kexec-arm-atags.patch;patch=1"
+PR = "r5"
diff --git a/packages/keylaunch/files/unbreak-keyevents.patch b/packages/keylaunch/files/unbreak-keyevents.patch
index 0a2d58b16a..ee13cc9a63 100644
--- a/packages/keylaunch/files/unbreak-keyevents.patch
+++ b/packages/keylaunch/files/unbreak-keyevents.patch
@@ -1,3 +1,5 @@
+upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=123
+
# HG changeset patch
# User "Paul Sokolovsky <pfalcon@users.sourceforge.net>"
# Date 1196027570 -7200
diff --git a/packages/keyring/keyring_0.6.8.bb b/packages/keyring/keyring_0.6.8.bb
index 02403bc2e1..5696a6618b 100644
--- a/packages/keyring/keyring_0.6.8.bb
+++ b/packages/keyring/keyring_0.6.8.bb
@@ -29,7 +29,7 @@ do_install() {
install -m 0644 ${S}/*.html ${D}${palmtopdir}/help/html/
}
-PACKAGES = "${PN} ${PN}-help"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-help"
FILES_${PN} = " ${palmtopdir}${base_bindir} ${palmtopdir}/apps ${palmtopdir}/pics"
FILES_${PN}-help = " ${palmtopdir}/help/html"
diff --git a/packages/kismet/kismet-newcore_svn.bb b/packages/kismet/kismet-newcore_svn.bb
index fd1eadfeb7..6f3c00bdcb 100644
--- a/packages/kismet/kismet-newcore_svn.bb
+++ b/packages/kismet/kismet-newcore_svn.bb
@@ -1,28 +1,12 @@
-DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-HOMEPAGE = "http://www.kismetwireless.net/"
-SECTION = "console/network"
-LICENSE = "GPLv2"
-DEPENDS = "expat gmp imagemagick tiff fakeroot-native zlib bzip2"
-PV = "0.0+svnr${SRCREV}"
-PR = "r2"
-DEFAULT_PREFERENCE = "-1"
-SRC_URI = "svn://svn.kismetwireless.net/code/branch/;module=kismet-newcore;proto=http"
+require kismet.inc
-EXTRA_OECONF = "--disable-gpsmap --enable-wsp100 --with-pcap=linux \
- --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
-
-inherit autotools
-
-S = "${WORKDIR}/kismet-newcore"
-
-fakeroot do_install() {
- oe_runmake "DESTDIR=${D}" suidinstall
-}
+DEFAULT_PREFERENCE = "-1"
-PACKAGES =+ "${PN}-sounds"
+PV = "0.0+svnr${SRCREV}"
+PR = "r3"
-FILES_${PN}-sounds = "${datadir}/kismet/wav"
-RDEPENDS_${PN}-sounds = "sox"
+SRC_URI = "svn://svn.kismetwireless.net/code/branch/;module=kismet-newcore;proto=http"
-CONFFILES_${PN} = "${sysconfdir}/kismet.conf ${sysconfdir}/kismet_ui.conf ${sysconfdir}/kismet_drone.conf"
+EXTRA_OECONF += "--disable-gpsmap"
+S = "${WORKDIR}/kismet-newcore"
diff --git a/packages/kismet/kismet.inc b/packages/kismet/kismet.inc
new file mode 100644
index 0000000000..57298c5c00
--- /dev/null
+++ b/packages/kismet/kismet.inc
@@ -0,0 +1,33 @@
+DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
+HOMEPAGE = "http://www.kismetwireless.net/"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+DEPENDS = "expat gmp imagemagick tiff fakeroot-native zlib bzip2 libpcap"
+
+SRC_URI = "http://www.kismetwireless.net/code/kismet-${PV}.tar.gz"
+
+EXTRA_OECONF = "--enable-wsp100 --with-pcap=linux \
+ --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
+
+inherit autotools
+
+fakeroot do_install() {
+ oe_runmake "DESTDIR=${D}" suidinstall
+}
+
+do_install_append() {
+ if test -e ${WORKDIR}/kismet.conf; then
+ install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
+ fi
+}
+
+PACKAGES =+ "${PN}-sounds ${PN}-gpsmap"
+
+FILES_${PN}-sounds = "${datadir}/kismet/wav"
+RDEPENDS_${PN}-sounds = "sox"
+
+FILES_${PN}-gpsmap = "${bindir}/gpsmap*"
+RDEPENDS_${PN}-gpsmap = "gpsd"
+
+CONFFILES_${PN} = "${sysconfdir}/kismet.conf ${sysconfdir}/kismet_ui.conf ${sysconfdir}/kismet_drone.conf"
+
diff --git a/packages/kismet/kismet_2007-01-R1b.bb b/packages/kismet/kismet_2007-01-R1b.bb
index a908ac4637..ef1cf86c98 100644
--- a/packages/kismet/kismet_2007-01-R1b.bb
+++ b/packages/kismet/kismet_2007-01-R1b.bb
@@ -1,34 +1,3 @@
-DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-HOMEPAGE = "http://www.kismetwireless.net/"
-SECTION = "console/network"
-LICENSE = "GPLv2"
-DEPENDS = "expat gmp imagemagick tiff fakeroot-native zlib bzip2"
-PR = "r2"
-
-SRC_URI = "http://www.kismetwireless.net/code/kismet-${PV}.tar.gz"
-
-EXTRA_OECONF = "--enable-wsp100 --with-pcap=linux \
- --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
-
-inherit autotools
-
-fakeroot do_install() {
- oe_runmake "DESTDIR=${D}" suidinstall
-}
-
-do_install_append() {
- if test -e ${WORKDIR}/kismet.conf; then
- install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
- fi
-}
-
-PACKAGES =+ "${PN}-sounds ${PN}-gpsmap"
-
-FILES_${PN}-sounds = "${datadir}/kismet/wav"
-RDEPENDS_${PN}-sounds = "sox"
-
-FILES_${PN}-gpsmap = "${bindir}/gpsmap*"
-RDEPENDS_${PN}-gpsmap = "gpsd"
-
-CONFFILES_${PN} = "${sysconfdir}/kismet.conf ${sysconfdir}/kismet_ui.conf ${sysconfdir}/kismet_drone.conf"
+require kismet.inc
+PR = "r3"
diff --git a/packages/kismet/kismet_2007-10-R1.bb b/packages/kismet/kismet_2007-10-R1.bb
index 1a53c6f78f..ef1cf86c98 100644
--- a/packages/kismet/kismet_2007-10-R1.bb
+++ b/packages/kismet/kismet_2007-10-R1.bb
@@ -1,34 +1,3 @@
-DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-HOMEPAGE = "http://www.kismetwireless.net/"
-SECTION = "console/network"
-LICENSE = "GPLv2"
-DEPENDS = "expat gmp imagemagick tiff fakeroot-native zlib bzip2 libpcap"
-PR = "r2"
-
-SRC_URI = "http://www.kismetwireless.net/code/kismet-${PV}.tar.gz"
-
-EXTRA_OECONF = "--enable-wsp100 --with-pcap=linux \
- --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
-
-inherit autotools
-
-fakeroot do_install() {
- oe_runmake "DESTDIR=${D}" suidinstall
-}
-
-do_install_append() {
- if test -e ${WORKDIR}/kismet.conf; then
- install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
- fi
-}
-
-PACKAGES =+ "${PN}-sounds ${PN}-gpsmap"
-
-FILES_${PN}-sounds = "${datadir}/kismet/wav"
-RDEPENDS_${PN}-sounds = "sox"
-
-FILES_${PN}-gpsmap = "${bindir}/gpsmap*"
-RDEPENDS_${PN}-gpsmap = "gpsd"
-
-CONFFILES_${PN} = "${sysconfdir}/kismet.conf ${sysconfdir}/kismet_ui.conf ${sysconfdir}/kismet_drone.conf"
+require kismet.inc
+PR = "r3"
diff --git a/packages/kismet/kismet_svn.bb b/packages/kismet/kismet_svn.bb
index 10723dd42a..878678052a 100644
--- a/packages/kismet/kismet_svn.bb
+++ b/packages/kismet/kismet_svn.bb
@@ -1,37 +1,10 @@
-DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-HOMEPAGE = "http://www.kismetwireless.net/"
-SECTION = "console/network"
-LICENSE = "GPLv2"
-DEPENDS = "expat gmp imagemagick tiff fakeroot-native zlib bzip2"
-PV = "2007-10-R1+svnr${SRCREV}"
-PR = "r1"
+require kismet.inc
+
DEFAULT_PREFERENCE = "-1"
-SRC_URI = "svn://svn.kismetwireless.net/code/;module=trunk;proto=http"
-EXTRA_OECONF = "--enable-wsp100 --with-pcap=linux \
- --with-linuxheaders=${STAGING_KERNEL_DIR}/include"
+PV = "2007-10-R1+svnr${SRCREV}"
+PR = "r2"
-inherit autotools
+SRC_URI = "svn://svn.kismetwireless.net/code/;module=trunk;proto=http"
S = "${WORKDIR}/trunk"
-
-fakeroot do_install() {
- oe_runmake "DESTDIR=${D}" suidinstall
-}
-
-do_install_append() {
- if test -e ${WORKDIR}/kismet.conf; then
- install -m 644 ${WORKDIR}/kismet.conf ${D}${sysconfdir}/
- fi
-}
-
-PACKAGES =+ "${PN}-sounds ${PN}-gpsmap"
-
-FILES_${PN}-sounds = "${datadir}/kismet/wav"
-RDEPENDS_${PN}-sounds = "sox"
-
-FILES_${PN}-gpsmap = "${bindir}/gpsmap*"
-RDEPENDS_${PN}-gpsmap = "gpsd"
-
-CONFFILES_${PN} = "${sysconfdir}/kismet.conf ${sysconfdir}/kismet_ui.conf ${sysconfdir}/kismet_drone.conf"
-
diff --git a/packages/klibc/files/fstype-sane-and-vfat-jffs2.patch b/packages/klibc/files/fstype-sane-and-vfat-jffs2.patch
new file mode 100644
index 0000000000..e89c5adb9a
--- /dev/null
+++ b/packages/klibc/files/fstype-sane-and-vfat-jffs2.patch
@@ -0,0 +1,68 @@
+diff -r 3c9d84425ba7 utils/fstype.c
+--- a/utils/fstype.c Thu Feb 14 02:09:30 2008 +0200
++++ b/utils/fstype.c Thu Feb 14 02:13:46 2008 +0200
+@@ -13,11 +13,18 @@
+ */
+
+ #include <sys/types.h>
++#include <linux/types.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <endian.h>
+ #include <netinet/in.h>
++#if __BYTE_ORDER == __BIG_ENDIAN
++#include <linux/byteorder/big_endian.h>
++#else
++#include <linux/byteorder/little_endian.h>
++#endif
++
+
+ #define cpu_to_be32(x) __cpu_to_be32(x) /* Needed by romfs_fs.h */
+
+@@ -105,6 +112,27 @@ static int romfs_image(const unsigned ch
+ return 0;
+ }
+
++static int jffs2_image(const unsigned char *buf, unsigned long *blocks)
++{
++ // Very sloppy! ;-E
++ if (*buf == 0x85 && buf[1] == 0x19)
++ return 1;
++
++ return 0;
++}
++
++static int vfat_image(const unsigned char *buf, unsigned long *blocks)
++{
++ const struct romfs_super_block *sb =
++ (const struct romfs_super_block *)buf;
++ if (!strncmp(buf + 54, "FAT12 ", 8)
++ || !strncmp(buf + 54, "FAT16 ", 8)
++ || !strncmp(buf + 82, "FAT32 ", 8))
++ return 1;
++
++ return 0;
++}
++
+ static int minix_image(const unsigned char *buf, unsigned long *blocks)
+ {
+ const struct minix_super_block *sb =
+@@ -167,8 +195,6 @@ static int xfs_image(const unsigned char
+ (const struct xfs_sb *)buf;
+
+ if (__be32_to_cpu(sb->sb_magicnum) == XFS_SB_MAGIC) {
+- *blocks = __be64_to_cpu(sb->sb_dblocks) *
+- (__be32_to_cpu(sb->sb_blocksize) / BLOCK_SIZE);
+ return 1;
+ }
+ return 0;
+@@ -184,6 +210,8 @@ static struct imagetype images[] = {
+ { 0, "gzip", gzip_image },
+ { 0, "cramfs", cramfs_image },
+ { 0, "romfs", romfs_image },
++ { 0, "jffs2", jffs2_image },
++ { 0, "vfat", vfat_image },
+ { 0, "xfs", xfs_image },
+ { 1, "minix", minix_image },
+ { 1, "ext3", ext3_image },
diff --git a/packages/klibc/files/fstype-sane-and-vfat.patch b/packages/klibc/files/fstype-sane-and-vfat.patch
deleted file mode 100644
index 7b7674637a..0000000000
--- a/packages/klibc/files/fstype-sane-and-vfat.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Patch to compile fstype util against "normal" libc (glibc/uclicb), and to
-add vfat detection.
-
---- klibc-1.1.1/utils/fstype.c.org 2005-09-06 23:49:34.000000000 +0300
-+++ klibc-1.1.1/utils/fstype.c 2007-11-24 01:07:26.000000000 +0200
-@@ -13,11 +13,18 @@
- */
-
- #include <sys/types.h>
-+#include <linux/types.h>
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
- #include <endian.h>
- #include <netinet/in.h>
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+#include <linux/byteorder/big_endian.h>
-+#else
-+#include <linux/byteorder/little_endian.h>
-+#endif
-+
-
- #define cpu_to_be32(x) __cpu_to_be32(x) /* Needed by romfs_fs.h */
-
-@@ -105,6 +112,18 @@
- return 0;
- }
-
-+static int vfat_image(const unsigned char *buf, unsigned long *blocks)
-+{
-+ const struct romfs_super_block *sb =
-+ (const struct romfs_super_block *)buf;
-+ if (!strncmp(buf + 54, "FAT12 ", 8)
-+ || !strncmp(buf + 54, "FAT16 ", 8)
-+ || !strncmp(buf + 82, "FAT32 ", 8))
-+ return 1;
-+
-+ return 0;
-+}
-+
- static int minix_image(const unsigned char *buf, unsigned long *blocks)
- {
- const struct minix_super_block *sb =
-@@ -167,8 +186,6 @@
- (const struct xfs_sb *)buf;
-
- if (__be32_to_cpu(sb->sb_magicnum) == XFS_SB_MAGIC) {
-- *blocks = __be64_to_cpu(sb->sb_dblocks) *
-- (__be32_to_cpu(sb->sb_blocksize) / BLOCK_SIZE);
- return 1;
- }
- return 0;
-@@ -184,6 +201,7 @@
- { 0, "gzip", gzip_image },
- { 0, "cramfs", cramfs_image },
- { 0, "romfs", romfs_image },
-+ { 0, "vfat", vfat_image },
- { 0, "xfs", xfs_image },
- { 1, "minix", minix_image },
- { 1, "ext3", ext3_image },
diff --git a/packages/klibc/files/install.patch b/packages/klibc/files/install.patch
deleted file mode 100644
index b165e8b177..0000000000
--- a/packages/klibc/files/install.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-# These are OE specific patches which make the install stuff work
-# in the OE build environment and fix the problem that the gzip
-# stuff should be all links to one executable but end up being
-# copies
---- klibc-1.1.1/Makefile.orig 2005-12-29 14:20:09.080981353 -0800
-+++ klibc-1.1.1/Makefile 2005-12-29 14:20:25.634022970 -0800
-@@ -61,7 +61,7 @@ local-install: $(CROSS)klcc
- mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include/$$d ; \
- for r in $(KRNLSRC)/include $(KRNLOBJ)/include $(KRNLOBJ)/include2 ; do \
- [ ! -d $$r/$$d ] || \
-- cp -rfL $$r/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/$$d/. ; \
-+ cp -rf $$r/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/$$d/. ; \
- done ; \
- done
- cd $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include && ln -sf asm-$(ARCH) asm
---- klibc-1.1.1/gzip/Makefile.orig 2005-12-29 18:10:00.787869930 -0800
-+++ klibc-1.1.1/gzip/Makefile 2005-12-29 18:11:21.084922705 -0800
-@@ -70,9 +70,12 @@ clean:
- spotless: clean
- rm -f *~
-
--# These should presumably be shared...
- install: all
-- $(INSTALL_EXEC) gzip gunzip zcat $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin
-+ $(INSTALL_EXEC) gzip $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin
-+ rm -f $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin/gunzip
-+ ln $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin/gzip $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin/gunzip
-+ rm -f $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin/zcat
-+ ln $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin/gzip $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin/zcat
-
- ifneq ($(wildcard .*.d),)
- include $(wildcard .*.d)
---- klibc-1.1.1/klibc/Makefile.orig 2005-12-30 10:39:04.504930675 -0800
-+++ klibc-1.1.1/klibc/Makefile 2005-12-30 10:39:52.755966921 -0800
-@@ -184,6 +184,7 @@ install: all
- $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)lib
- $(INSTALL_EXEC) klibc-`cat $(SOLIB).hash`.so \
- $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)lib
-+ test -z "$(INSTALLROOT)" || \
- $(INSTALL_EXEC) klibc-`cat $(SOLIB).hash`.so \
- $(INSTALLROOT)/$(SHLIBDIR)
-
diff --git a/packages/klibc/files/klibc-config-eabi.patch b/packages/klibc/files/klibc-config-eabi.patch
new file mode 100644
index 0000000000..86517f0594
--- /dev/null
+++ b/packages/klibc/files/klibc-config-eabi.patch
@@ -0,0 +1,9 @@
+diff -Nur klibc-1.5/defconfig klibc-1.5p/defconfig
+--- klibc-1.5/defconfig 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5p/defconfig 2008-02-08 19:24:22.337127756 +0100
+@@ -5,4 +5,4 @@
+ CONFIG_REGPARM=y
+ # ARM options
+ # CONFIG_KLIBC_THUMB is not set
+-# CONFIG_AEABI is not set
++CONFIG_AEABI=y
diff --git a/packages/klibc/files/klibc_kexecsyscall.patch b/packages/klibc/files/klibc_kexecsyscall.patch
new file mode 100644
index 0000000000..9b2dca4738
--- /dev/null
+++ b/packages/klibc/files/klibc_kexecsyscall.patch
@@ -0,0 +1,11 @@
+--- klibc-1.5/usr/klibc/SYSCALLS.def 2007-03-04 02:52:10.000000000 +0100
++++ klibc.clean/usr/klibc/SYSCALLS.def 2008-02-22 17:12:23.663612084 +0100
+@@ -13,6 +13,8 @@
+ #include <asm/unistd.h>
+ #include <klibc/sysconfig.h>
+ #include <bitsize.h>
++#include <asm/kexec.h>
++long kexec_load(void *, unsigned long , struct kexec_segment *, unsigned long );
+
+ /*
+ * Process-related syscalls
diff --git a/packages/klibc/files/staging.patch b/packages/klibc/files/staging.patch
new file mode 100644
index 0000000000..215daad456
--- /dev/null
+++ b/packages/klibc/files/staging.patch
@@ -0,0 +1,144 @@
+Index: klibc-1.5/Makefile
+===================================================================
+--- klibc-1.5.orig/Makefile 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/Makefile 2008-02-24 15:25:15.213824149 +0100
+@@ -33,7 +33,7 @@
+ export PERL := perl
+
+ # Location for installation
+-export prefix = /usr
++export prefix = $(INST)
+ export bindir = $(prefix)/bin
+ export libdir = $(prefix)/lib
+ export mandir = $(prefix)/man
+Index: klibc-1.5/scripts/Kbuild.install
+===================================================================
+--- klibc-1.5.orig/scripts/Kbuild.install 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/scripts/Kbuild.install 2008-02-24 15:24:28.085825030 +0100
+@@ -88,25 +88,21 @@
+ header:
+ $(Q)echo " INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)"
+ $(Q)mkdir -p $(INSTALLROOT)$(bindir)
+- $(Q)mkdir -p $(INSTALLROOT)$(mandir)/man1
+- $(Q)mkdir -p $(INSTALLROOT)$(SHLIBDIR)
+ $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)
+ $(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
+- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
+ $(Q)set -e ; for d in linux scsi asm-$(KLIBCARCH) asm-generic $(ASMKLIBCARCH); do \
+ mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)include/$$d ; \
+ for r in $(KLIBCKERNELSRC)/include $(KLIBCKERNELOBJ)/include \
+ $(KLIBCKERNELOBJ)/include2 ; do \
+ [ ! -d $$r/$$d ] || \
+- cp -rfL $$r/$$d/. \
++ cp -rfd $$r/$$d/. \
+ $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/$$d/. ; \
+ done ; \
+ done
+ $(Q)cd $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include && ln -sf asm-$(KLIBCARCH) asm
+ $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
+- $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
+ $(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir)
+
+ footer: header
+Index: klibc-1.5/usr/dash/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/dash/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/dash/Kbuild 2008-02-24 15:13:50.189827040 +0100
+@@ -107,5 +107,3 @@
+ $(obj)/arith.c: $(obj)/arith.h
+ $(Q):
+
+-# Targets to install
+-install-y := sh.shared
+Index: klibc-1.5/usr/gzip/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/gzip/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/gzip/Kbuild 2008-02-24 15:13:50.197824604 +0100
+@@ -21,5 +21,3 @@
+ # Cleaning
+ targets := gzip gzip.g gunzip zcat
+
+-# Targets to install
+-install-y := gzip gunzip zcat
+Index: klibc-1.5/usr/kinit/fstype/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/kinit/fstype/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/kinit/fstype/Kbuild 2008-02-24 15:13:50.201824503 +0100
+@@ -21,5 +21,3 @@
+ # Cleaning
+ clean-dirs := static shared
+
+-# install binary
+-install-y := $(shared-y)
+Index: klibc-1.5/usr/kinit/ipconfig/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/kinit/ipconfig/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/kinit/ipconfig/Kbuild 2008-02-24 15:13:50.205824123 +0100
+@@ -27,5 +27,3 @@
+ # Cleaning
+ clean-dirs := static shared
+
+-# install binary
+-install-y := $(shared-y)
+Index: klibc-1.5/usr/kinit/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/kinit/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/kinit/Kbuild 2008-02-24 15:13:50.209824302 +0100
+@@ -33,5 +33,3 @@
+ subdir- := fstype ipconfig nfsmount resume run-init
+
+
+-# install binary
+-install-y := kinit kinit.shared
+Index: klibc-1.5/usr/kinit/nfsmount/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/kinit/nfsmount/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/kinit/nfsmount/Kbuild 2008-02-24 15:13:50.213824201 +0100
+@@ -23,5 +23,3 @@
+
+ clean-dirs := static shared
+
+-# Install binary
+-install-y := $(shared-y)
+Index: klibc-1.5/usr/kinit/resume/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/kinit/resume/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/kinit/resume/Kbuild 2008-02-24 15:13:50.217824380 +0100
+@@ -26,5 +26,3 @@
+ # Cleaning
+ clean-dirs := static shared
+
+-# install binary
+-install-y := $(shared-y)
+Index: klibc-1.5/usr/kinit/run-init/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/kinit/run-init/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/kinit/run-init/Kbuild 2008-02-24 15:13:50.221824559 +0100
+@@ -21,5 +21,3 @@
+ # Cleaning
+ clean-dirs := static shared
+
+-# install binary
+-install-y := $(shared-y)
+Index: klibc-1.5/usr/klibc/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/klibc/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/klibc/Kbuild 2008-02-24 15:13:50.229824358 +0100
+@@ -175,5 +175,3 @@
+ $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib))
+ $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \
+ $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib
+- $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \
+- $(INSTALLROOT)$(SHLIBDIR)
+Index: klibc-1.5/usr/utils/Kbuild
+===================================================================
+--- klibc-1.5.orig/usr/utils/Kbuild 2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5/usr/utils/Kbuild 2008-02-24 15:13:50.229824358 +0100
+@@ -64,5 +64,3 @@
+ # Clean deletes the static and shared dir
+ clean-dirs := static shared
+
+-# install only install the shared binaries
+-install-y := $(shared-y) shared/reboot shared/poweroff
diff --git a/packages/klibc/klibc-common.inc b/packages/klibc/klibc-common.inc
new file mode 100644
index 0000000000..76e393796a
--- /dev/null
+++ b/packages/klibc/klibc-common.inc
@@ -0,0 +1,29 @@
+DEPENDS = "virtual/kernel perl-native"
+SECTION = "libs"
+DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \
+use with initramfs. It is deliberately written for small size, \
+minimal entaglement, and portability, not speed."
+LICENSE = "BSD-ADV"
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
+S = "${WORKDIR}/klibc-${PV}"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+KLIBC_ARCH = '${TARGET_ARCH}'
+KLIBC_ARCH_armeb = 'arm'
+KLIBC_ARCH_mipsel = 'mips'
+
+# the klibc code contains ARM instructions (for ARM), this
+# could be fixed, but for the moment:
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI_append_linux-gnueabi = "file://klibc-config-eabi.patch;patch=1"
+SRC_URI_append_linux-uclibcgnueabi = "file://klibc-config-eabi.patch;patch=1"
+
+EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \
+ 'CROSS_COMPILE=${TARGET_PREFIX}' \
+ "
+
+do_configure () {
+ ln -sf ${STAGING_KERNEL_DIR} linux
+}
+
diff --git a/packages/klibc/klibc-utils-fstype_1.1.1.bb b/packages/klibc/klibc-utils-fstype_1.1.1.bb
index 29ce38285c..2bcc0f6085 100644
--- a/packages/klibc/klibc-utils-fstype_1.1.1.bb
+++ b/packages/klibc/klibc-utils-fstype_1.1.1.bb
@@ -1,6 +1,6 @@
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
-SRC_URI += "file://fstype-sane-and-vfat.patch;patch=1"
-PR = "r0"
+SRC_URI += "file://fstype-sane-and-vfat-jffs2.patch;patch=1"
+PR = "r1"
S = "${WORKDIR}/klibc-${PV}"
diff --git a/packages/klibc/klibc-utils-static_1.5.bb b/packages/klibc/klibc-utils-static_1.5.bb
new file mode 100644
index 0000000000..f9c9923212
--- /dev/null
+++ b/packages/klibc/klibc-utils-static_1.5.bb
@@ -0,0 +1,94 @@
+require klibc-common.inc
+
+PR = "r6"
+
+
+# We only want the static utils. klibc build both. So we install only what we want.
+do_install() {
+ install -d ${D}${base_bindir}
+ install -m 755 usr/dash/sh ${D}${base_bindir}
+ install -m 755 usr/gzip/gzip ${D}${base_bindir}
+ install -m 755 usr/kinit/kinit ${D}${base_bindir}
+ install -m 755 usr/kinit/fstype/static/fstype ${D}${base_bindir}
+ install -m 755 usr/kinit/ipconfig/static/ipconfig ${D}${base_bindir}
+ install -m 755 usr/kinit/nfsmount/static/nfsmount ${D}${base_bindir}
+ install -m 755 usr/kinit/resume/static/resume ${D}${base_bindir}
+ install -m 755 usr/kinit/run-init/static/run-init ${D}${base_bindir}
+ install -m 755 usr/utils/static/cat ${D}${base_bindir}
+ install -m 755 usr/utils/static/chroot ${D}${base_bindir}
+ install -m 755 usr/utils/static/cpio ${D}${base_bindir}
+ install -m 755 usr/utils/static/dd ${D}${base_bindir}
+ install -m 755 usr/utils/static/false ${D}${base_bindir}
+ install -m 755 usr/utils/static/halt ${D}${base_bindir}
+ install -m 755 usr/utils/static/insmod ${D}${base_bindir}
+ install -m 755 usr/utils/static/kill ${D}${base_bindir}
+ install -m 755 usr/utils/static/ln ${D}${base_bindir}
+ install -m 755 usr/utils/static/minips ${D}${base_bindir}
+ install -m 755 usr/utils/static/mkdir ${D}${base_bindir}
+ install -m 755 usr/utils/static/mkfifo ${D}${base_bindir}
+ install -m 755 usr/utils/static/mknod ${D}${base_bindir}
+ install -m 755 usr/utils/static/mount ${D}${base_bindir}
+ install -m 755 usr/utils/static/nuke ${D}${base_bindir}
+ install -m 755 usr/utils/static/pivot_root ${D}${base_bindir}
+ install -m 755 usr/utils/static/poweroff ${D}${base_bindir}
+ install -m 755 usr/utils/static/readlink ${D}${base_bindir}
+ install -m 755 usr/utils/static/reboot ${D}${base_bindir}
+ install -m 755 usr/utils/static/sleep ${D}${base_bindir}
+ install -m 755 usr/utils/static/true ${D}${base_bindir}
+ install -m 755 usr/utils/static/umount ${D}${base_bindir}
+ install -m 755 usr/utils/static/uname ${D}${base_bindir}
+ cd ${D}${base_bindir}
+ ln -s gzip gunzip
+ ln -s gzip zcat
+ cd -
+}
+
+PACKAGES = "klibc-utils-static-sh klibc-utils-static-gzip \
+ klibc-utils-static-kinit klibc-utils-static-fstype \
+ klibc-utils-static-ipconfig klibc-utils-static-nfsmount \
+ klibc-utils-static-resume klibc-utils-static-run-init \
+ klibc-utils-static-cat klibc-utils-static-chroot \
+ klibc-utils-static-cpio klibc-utils-static-dd \
+ klibc-utils-static-false klibc-utils-static-halt \
+ klibc-utils-static-insmod klibc-utils-static-kill \
+ klibc-utils-static-ln klibc-utils-static-minips \
+ klibc-utils-static-mkdir klibc-utils-static-mkfifo \
+ klibc-utils-static-mknod klibc-utils-static-mount \
+ klibc-utils-static-nuke klibc-utils-static-pivot-root \
+ klibc-utils-static-poweroff klibc-utils-static-readlink \
+ klibc-utils-static-reboot klibc-utils-static-sleep \
+ klibc-utils-static-true klibc-utils-static-umount \
+ klibc-utils-static-uname \
+ "
+
+FILES_klibc-utils-static-sh = "${base_bindir}/sh"
+FILES_klibc-utils-static-gzip = "${base_bindir}/gzip ${base_bindir}/gunzip ${base_bindir}/zcat"
+FILES_klibc-utils-static-kinit = "${base_bindir}/kinit"
+FILES_klibc-utils-static-fstype = "${base_bindir}/fstype"
+FILES_klibc-utils-static-ipconfig = "${base_bindir}/ipconfig"
+FILES_klibc-utils-static-nfsmount = "${base_bindir}/nfsmount"
+FILES_klibc-utils-static-resume = "${base_bindir}/resume"
+FILES_klibc-utils-static-run-init = "${base_bindir}/run-init"
+FILES_klibc-utils-static-cat = "${base_bindir}/cat"
+FILES_klibc-utils-static-chroot = "${base_bindir}/chroot"
+FILES_klibc-utils-static-cpio = "${base_bindir}/cpio"
+FILES_klibc-utils-static-dd = "${base_bindir}/dd"
+FILES_klibc-utils-static-false = "${base_bindir}/false"
+FILES_klibc-utils-static-halt = "${base_bindir}/halt"
+FILES_klibc-utils-static-insmod = "${base_bindir}/insmod"
+FILES_klibc-utils-static-kill = "${base_bindir}/kill"
+FILES_klibc-utils-static-ln = "${base_bindir}/ln"
+FILES_klibc-utils-static-minips = "${base_bindir}/minips"
+FILES_klibc-utils-static-mkdir = "${base_bindir}/mkdir"
+FILES_klibc-utils-static-mkfifo = "${base_bindir}/mkfifo"
+FILES_klibc-utils-static-mknod = "${base_bindir}/mknod"
+FILES_klibc-utils-static-mount = "${base_bindir}/mount"
+FILES_klibc-utils-static-nuke = "${base_bindir}/nuke"
+FILES_klibc-utils-static-pivot-root = "${base_bindir}/pivot_root"
+FILES_klibc-utils-static-poweroff = "${base_bindir}/poweroff"
+FILES_klibc-utils-static-readlink = "${base_bindir}/readlink"
+FILES_klibc-utils-static-reboot = "${base_bindir}/reboot"
+FILES_klibc-utils-static-sleep = "${base_bindir}/sleep"
+FILES_klibc-utils-static-true = "${base_bindir}/true"
+FILES_klibc-utils-static-umount = "${base_bindir}/umount"
+FILES_klibc-utils-static-uname = "${base_bindir}/uname"
diff --git a/packages/klibc/klibc.inc b/packages/klibc/klibc.inc
index a7f0094264..78e1bca125 100644
--- a/packages/klibc/klibc.inc
+++ b/packages/klibc/klibc.inc
@@ -1,78 +1,139 @@
-DEPENDS = "virtual/kernel perl-native"
-SECTION = "libs"
-DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \
-use with initramfs. It is deliberately written for small size, \
-minimal entaglement, and portability, not speed."
-LICENSE = "BSD-ADV"
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
-SRC_URI += "file://install.patch;patch=1"
-S = "${WORKDIR}/klibc-${PV}"
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+require klibc-common.inc
-# for the correct kernel staging path
-# inherit module-base
+SRC_URI += "file://staging.patch;patch=1 \
+ file://klibc_kexecsyscall.patch;patch=1 \
+ "
-EXTRA_OEMAKE = "'ARCH=${KLIBC_ARCH}' \
- 'CROSS=${TARGET_PREFIX}' \
- 'CC=${HOST_PREFIX}gcc' \
- 'LD=${HOST_PREFIX}ld' \
- 'AR=${AR}' \
- 'RANLIB=${RANLIB}' \
- 'NM=${TARGET_PREFIX}nm' \
- 'STRIP=echo' \
- 'SHLIBDIR=/lib' \
- 'HOST_CC=${BUILD_CC}' \
- 'HOST_CFLAGS=${BUILD_CFLAGS}' \
- 'HOST_LDFLAGS=${BUILD_LDFLAGS}' \
- 'HOST_LIBS=' \
- 'LDFLAGS=' \
- 'ARCHREQFLAGS=${HOST_CC_ARCH}' \
- 'OPTFLAGS=${TARGET_CFLAGS}' \
- 'mandir=${mandir}'"
-
-KLIBC_ARCH = '${TARGET_ARCH}'
-KLIBC_ARCH_armeb = 'arm'
-KLIBC_ARCH_mipsel = 'mips'
-
-# the klibc code contains ARM instructions (for ARM), this
-# could be fixed, but for the moment:
-ARM_INSTRUCTION_SET = "arm"
-
-TARGET_CFLAGS := "${@oe_filter_out('-I\S+', '${TARGET_CFLAGS}', d)} -I${STAGING_KERNEL_DIR}/include"
-
-INSTALLDIR = "/usr/lib/klibc"
-INSTALLPREFIX = "${INSTALLDIR}/${TARGET_PREFIX}"
-INSTALLBINDIR = "${INSTALLPREFIX}bin"
-INSTALLLIBDIR = "${INSTALLPREFIX}lib"
-INSTALLINCDIR = "${INSTALLPREFIX}include"
-
-PACKAGES = "${PN} ${PN}-dev ${PN}-doc"
-
-FILES_${PN} = "/lib/*.so* ${INSTALLBINDIR}"
-FILES_${PN}-dev = "/usr/bin ${INSTALLINCDIR} ${INSTALLLIBDIR}"
-
-do_configure () {
- ln -sf ${STAGING_KERNEL_DIR} linux
+# we want only the shared programms and the lib so we chose them manually
+do_install() {
+ install -d ${D}${base_bindir}
+ install -m 755 usr/dash/sh.shared ${D}${base_bindir}/sh
+ install -m 755 usr/gzip/gzip ${D}${base_bindir}
+ install -m 755 usr/kinit/kinit.shared ${D}${base_bindir}/kinit
+ install -m 755 usr/kinit/fstype/shared/fstype ${D}${base_bindir}
+ install -m 755 usr/kinit/ipconfig/shared/ipconfig ${D}${base_bindir}
+ install -m 755 usr/kinit/nfsmount/shared/nfsmount ${D}${base_bindir}
+ install -m 755 usr/kinit/resume/shared/resume ${D}${base_bindir}
+ install -m 755 usr/kinit/run-init/shared/run-init ${D}${base_bindir}
+ install -m 755 usr/utils/shared/cat ${D}${base_bindir}
+ install -m 755 usr/utils/shared/chroot ${D}${base_bindir}
+ install -m 755 usr/utils/shared/cpio ${D}${base_bindir}
+ install -m 755 usr/utils/shared/dd ${D}${base_bindir}
+ install -m 755 usr/utils/shared/false ${D}${base_bindir}
+ install -m 755 usr/utils/shared/halt ${D}${base_bindir}
+ install -m 755 usr/utils/shared/insmod ${D}${base_bindir}
+ install -m 755 usr/utils/shared/kill ${D}${base_bindir}
+ install -m 755 usr/utils/shared/ln ${D}${base_bindir}
+ install -m 755 usr/utils/shared/minips ${D}${base_bindir}
+ install -m 755 usr/utils/shared/mkdir ${D}${base_bindir}
+ install -m 755 usr/utils/shared/mkfifo ${D}${base_bindir}
+ install -m 755 usr/utils/shared/mknod ${D}${base_bindir}
+ install -m 755 usr/utils/shared/mount ${D}${base_bindir}
+ install -m 755 usr/utils/shared/nuke ${D}${base_bindir}
+ install -m 755 usr/utils/shared/pivot_root ${D}${base_bindir}
+ install -m 755 usr/utils/shared/poweroff ${D}${base_bindir}
+ install -m 755 usr/utils/shared/readlink ${D}${base_bindir}
+ install -m 755 usr/utils/shared/reboot ${D}${base_bindir}
+ install -m 755 usr/utils/shared/sleep ${D}${base_bindir}
+ install -m 755 usr/utils/shared/true ${D}${base_bindir}
+ install -m 755 usr/utils/shared/umount ${D}${base_bindir}
+ install -m 755 usr/utils/shared/uname ${D}${base_bindir}
+
+ install -d ${D}${base_libdir}
+ install -m 755 usr/klibc/klibc-*.so ${D}${base_libdir}
+ cd ${D}${base_libdir}
+ ln -s klibc-*.so klibc.so
+ cd -
+ cd ${D}${base_bindir}
+ ln -s gzip gunzip
+ ln -s gzip zcat
+ cd -
}
-STAGING_KLIBC_DIR = "${STAGING_DIR_HOST}/klibc"
-
+export INST=${STAGING_DIR_TARGET}
do_stage() {
- rm -rf "${STAGING_KLIBC_DIR}"
- oe_runmake 'prefix=${STAGING_KLIBC_DIR}' \
- 'bindir=${STAGING_BINDIR}' \
- 'mandir=${STAGING_DIR_HOST}${layout_mandir}' \
- install
- # The following is sufficient, at least in klibc 1.1.1 to make klcc
- # use the staged libraries and include files.
- sed -i -e 's@^\$prefix = .*$@\$prefix = "${STAGING_KLIBC_DIR}/lib/klibc";@' \
- '${STAGING_BINDIR}/${TARGET_PREFIX}klcc'
- # Perhaps other binaries need to be moved to cross?
- mv '${STAGING_BINDIR}/${TARGET_PREFIX}klcc' '${STAGING_BINDIR_CROSS}'
+ oe_runmake install
+ cp '${STAGING_DIR_TARGET}/bin/klcc' '${CROSS_DIR}/bin/${TARGET_PREFIX}klcc'
}
-do_install() {
- # The installed -dev won't work because it has the cross compiler
- # path compiled in.
- oe_runmake 'INSTALLROOT=${D}' install
-}
+PACKAGES = "${PN} klibc-utils-sh klibc-utils-kinit \
+ klibc-utils-fstype klibc-utils-ipconfig \
+ klibc-utils-nfsmount klibc-utils-resume \
+ klibc-utils-run-init klibc-utils-cat \
+ klibc-utils-chroot klibc-utils-cpio \
+ klibc-utils-dd klibc-utils-false \
+ klibc-utils-halt klibc-utils-insmod \
+ klibc-utils-kill klibc-utils-ln \
+ klibc-utils-minips klibc-utils-mkdir \
+ klibc-utils-mkfifo klibc-utils-mknod \
+ klibc-utils-mount klibc-utils-nuke \
+ klibc-utils-pivot-root klibc-utils-poweroff \
+ klibc-utils-readlink klibc-utils-reboot \
+ klibc-utils-sleep klibc-utils-true \
+ klibc-utils-umount klibc-utils-uname \
+ klibc-utils-gzip"
+
+FILES_${PN} = "${base_libdir}/klibc*.so"
+FILES_klibc-utils-sh = "${base_bindir}/sh"
+FILES_klibc-utils-static-gzip = "${base_bindir}/gzip ${base_bindir}/gunzip ${base_bindir}/zcat"
+FILES_klibc-utils-kinit = "${base_bindir}/kinit"
+FILES_klibc-utils-fstype = "${base_bindir}/fstype"
+FILES_klibc-utils-ipconfig = "${base_bindir}/ipconfig"
+FILES_klibc-utils-nfsmount = "${base_bindir}/nfsmount"
+FILES_klibc-utils-resume = "${base_bindir}/resume"
+FILES_klibc-utils-run-init = "${base_bindir}/run-init"
+FILES_klibc-utils-cat = "${base_bindir}/cat"
+FILES_klibc-utils-chroot = "${base_bindir}/chroot"
+FILES_klibc-utils-cpio = "${base_bindir}/cpio"
+FILES_klibc-utils-dd = "${base_bindir}/dd"
+FILES_klibc-utils-false = "${base_bindir}/false"
+FILES_klibc-utils-halt = "${base_bindir}/halt"
+FILES_klibc-utils-insmod = "${base_bindir}/insmod"
+FILES_klibc-utils-kill = "${base_bindir}/kill"
+FILES_klibc-utils-ln = "${base_bindir}/ln"
+FILES_klibc-utils-minips = "${base_bindir}/minips"
+FILES_klibc-utils-mkdir = "${base_bindir}/mkdir"
+FILES_klibc-utils-mkfifo = "${base_bindir}/mkfifo"
+FILES_klibc-utils-mknod = "${base_bindir}/mknod"
+FILES_klibc-utils-mount = "${base_bindir}/mount"
+FILES_klibc-utils-nuke = "${base_bindir}/nuke"
+FILES_klibc-utils-pivot-root = "${base_bindir}/pivot_root"
+FILES_klibc-utils-poweroff = "${base_bindir}/poweroff"
+FILES_klibc-utils-readlink = "${base_bindir}/readlink"
+FILES_klibc-utils-reboot = "${base_bindir}/reboot"
+FILES_klibc-utils-sleep = "${base_bindir}/sleep"
+FILES_klibc-utils-true = "${base_bindir}/true"
+FILES_klibc-utils-umount = "${base_bindir}/umount"
+FILES_klibc-utils-uname = "${base_bindir}/uname"
+
+# Yes we want exactly the klibc that was compiled with the utils
+RDEPENDS_klibc-utils-sh = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-kinit = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-fstype = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-ipconfig = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-nfsmount = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-resume = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-run-init = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-cat = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-chroot = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-cpio = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-dd = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-false = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-halt = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-insmod = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-kill = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-ln = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-minips = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-mkdir = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-mkfifo = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-mknod = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-mount = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-nuke = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-pivot-root = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-poweroff = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-readlink = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-reboot = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-sleep = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-true = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-umount = "${PN} (=${PV}-${PR})"
+RDEPENDS_klibc-utils-uname = "${PN} (=${PV}-${PR})"
diff --git a/packages/klibc/klibc_0.190.bb b/packages/klibc/klibc_0.190.bb
deleted file mode 100644
index cd1ba9d56e..0000000000
--- a/packages/klibc/klibc_0.190.bb
+++ /dev/null
@@ -1 +0,0 @@
-require klibc.inc
diff --git a/packages/klibc/klibc_1.1.1.bb b/packages/klibc/klibc_1.1.1.bb
deleted file mode 100644
index ff715765d5..0000000000
--- a/packages/klibc/klibc_1.1.1.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require klibc.inc
-
-PR = "r1"
diff --git a/packages/klibc/klibc_1.5.bb b/packages/klibc/klibc_1.5.bb
new file mode 100644
index 0000000000..71eed9f8da
--- /dev/null
+++ b/packages/klibc/klibc_1.5.bb
@@ -0,0 +1,2 @@
+require klibc.inc
+PR = "r4"
diff --git a/packages/busybox/slingbox-1.2.2/.mtn2git_empty b/packages/kobodeluxe/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/busybox/slingbox-1.2.2/.mtn2git_empty
+++ b/packages/kobodeluxe/.mtn2git_empty
diff --git a/packages/compositeext/.mtn2git_empty b/packages/kobodeluxe/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/compositeext/.mtn2git_empty
+++ b/packages/kobodeluxe/files/.mtn2git_empty
diff --git a/packages/kobodeluxe/files/debian-kobo.patch b/packages/kobodeluxe/files/debian-kobo.patch
new file mode 100644
index 0000000000..90b1d84080
--- /dev/null
+++ b/packages/kobodeluxe/files/debian-kobo.patch
@@ -0,0 +1,72 @@
+--- kobodeluxe-0.5.1.orig/kobo.cpp
++++ kobodeluxe-0.5.1/kobo.cpp
+@@ -141,21 +141,21 @@
+ * Graphics data
+ */
+ /* Current dir; from within the build tree */
+- fmap->addpath("GFX", "./data/gfx");
++ //fmap->addpath("GFX", "./data/gfx");
+ /* Real data dir */
+ fmap->addpath("GFX", "DATA>>gfx");
+ /* Current dir */
+- fmap->addpath("GFX", "./gfx");
++ //fmap->addpath("GFX", "./gfx");
+
+ /*
+ * Sound data
+ */
+ /* Current dir; from within the build tree */
+- fmap->addpath("SFX", "./data/sfx");
++ //fmap->addpath("SFX", "./data/sfx");
+ /* Real data dir */
+ fmap->addpath("SFX", "DATA>>sfx");
+ /* Current dir */
+- fmap->addpath("SFX", "./sfx");
++ //fmap->addpath("SFX", "./sfx");
+
+ /*
+ * Score files (user and global)
+@@ -173,7 +173,7 @@
+ /* System local */
+ fmap->addpath("CONFIG", SYSCONF_DIR);
+ /* In current dir (last resort) */
+- fmap->addpath("CONFIG", "./");
++ //fmap->addpath("CONFIG", "./");
+ }
+
+
+--- kobodeluxe-0.5.1.orig/graphics/window.cpp
++++ kobodeluxe-0.5.1/graphics/window.cpp
+@@ -331,7 +331,7 @@
+ }
+
+
+-void window_t::center_token(int _x, int _y, const char *txt, char token)
++void window_t::center_token(int _x, int _y, const char *txt, signed char token)
+ {
+ center_token_fxp(PIXEL2CS(_x), PIXEL2CS(_y), txt, token);
+ }
+@@ -374,7 +374,7 @@
+ }
+
+
+-void window_t::center_token_fxp(int _x, int _y, const char *txt, char token)
++void window_t::center_token_fxp(int _x, int _y, const char *txt, signed char token)
+ {
+ _x = CS2PIXEL((_x * xs + 128) >> 8);
+ _y = CS2PIXEL((_y * ys + 128) >> 8);
+--- kobodeluxe-0.5.1.orig/graphics/window.h
++++ kobodeluxe-0.5.1/graphics/window.h
+@@ -265,10 +265,10 @@
+ void font(int fnt);
+ void string(int _x, int _y, const char *txt);
+ void center(int _y, const char *txt);
+- void center_token(int _x, int _y, const char *txt, char token = 0);
++ void center_token(int _x, int _y, const char *txt, signed char token = 0);
+ void string_fxp(int _x, int _y, const char *txt);
+ void center_fxp(int _y, const char *txt);
+- void center_token_fxp(int _x, int _y, const char *txt, char token = 0);
++ void center_token_fxp(int _x, int _y, const char *txt, signed char token = 0);
+ int textwidth(const char *txt, int min = 0, int max = 255);
+ int textwidth_fxp(const char *txt, int min = 0, int max = 255);
+ int fontheight();
diff --git a/packages/kobodeluxe/files/default-config b/packages/kobodeluxe/files/default-config
new file mode 100644
index 0000000000..4a8f5f7a96
--- /dev/null
+++ b/packages/kobodeluxe/files/default-config
@@ -0,0 +1,70 @@
+#--------------------------------------------
+# Kobo Deluxe 0.5.1 Configuration File
+#--------------------------------------------
+# Switches - [no]<switch>
+# Values - <key> [<value>|"<string>"]
+#--------------------------------------------
+#--- System options --------------------------
+nologfile
+logformat 0
+logverbosity 2
+#--- Input options --------------------------
+nojoystick
+joystick_no 0
+mouse
+mousemode 1
+nobroken_numdia
+dia_emphasis 0
+noalways_fire
+mousecapture
+#--- Game options ---------------------------
+scrollradar 2
+filter
+timefilter 50
+countdown 5
+starfield 2
+stars 250
+overheatloud 100
+cannonloud 100
+#--- Sound settings -------------------------
+nosound
+music
+nocached_sounds
+samplerate 8000
+latency 50
+mixquality 1
+vol 100
+intro_vol 100
+sfx_vol 100
+music_vol 30
+reverb 100
+vol_boost 0
+#--- Video settings -------------------------
+fullscreen
+videodriver 0
+width WIDTH_HERE
+height HEIGHT_HERE
+autoswap
+aspect 1
+depth 0
+maxfps 100
+maxfpsstrict 0
+buffer 0
+shadow
+videomode -1
+vsync
+videopages -1
+#--- Graphics settings ----------------------
+scalemode 0
+nodither
+dither_type 2
+nobroken_rgba8
+alpha
+brightness 100
+contrast 100
+#--- File paths -----------------------------
+files ""
+gfx ""
+sfx ""
+scores ""
+wait 30
diff --git a/packages/kobodeluxe/files/fighter-48.xpm b/packages/kobodeluxe/files/fighter-48.xpm
new file mode 100644
index 0000000000..3c1e8c8b7a
--- /dev/null
+++ b/packages/kobodeluxe/files/fighter-48.xpm
@@ -0,0 +1,442 @@
+/* XPM */
+static char * fighter_48_xpm[] = {
+"40 40 399 2",
+" c None",
+". c #C8E2CD",
+"+ c #8AB7A3",
+"@ c #408474",
+"# c #023D3D",
+"$ c #F2FBEA",
+"% c #CEE5D1",
+"& c #7DB09B",
+"* c #063E32",
+"= c #002320",
+"- c #D0E6D2",
+"; c #F6FEEE",
+"> c #C7E0CC",
+", c #639C89",
+"' c #054137",
+") c #002629",
+"! c #A6C9B3",
+"~ c #E8F6E4",
+"{ c #EEF8E8",
+"] c #92BDA9",
+"^ c #3A7F6F",
+"/ c #074847",
+"( c #002924",
+"_ c #00286F",
+": c #9CC2AD",
+"< c #F0F9E9",
+"[ c #C8E0CC",
+"} c #6FA894",
+"| c #377F6E",
+"1 c #105251",
+"2 c #002F23",
+"3 c #002863",
+"4 c #ACCDB8",
+"5 c #F0F8E8",
+"6 c #ABCDB8",
+"7 c #62A28E",
+"8 c #3B8572",
+"9 c #195B5D",
+"0 c #003729",
+"a c #002750",
+"b c #8AB4A0",
+"c c #C4DDC9",
+"d c #E8F4E3",
+"e c #99C1AC",
+"f c #569D89",
+"g c #3D8876",
+"h c #23645D",
+"i c #013F3A",
+"j c #00273F",
+"k c #81B09C",
+"l c #CAE1CE",
+"m c #D1E7D3",
+"n c #86B4A0",
+"o c #4E9885",
+"p c #3F8A76",
+"q c #2A6C60",
+"r c #064646",
+"s c #002831",
+"t c #7AAD99",
+"u c #C8E1CD",
+"v c #BAD8C3",
+"w c #77AC98",
+"x c #4B9783",
+"y c #408B77",
+"z c #307465",
+"A c #094B4E",
+"B c #002A24",
+"C c #7EB09C",
+"D c #CCE4D0",
+"E c #AFD0BB",
+"F c #6BA693",
+"G c #489581",
+"H c #418E7A",
+"I c #337868",
+"J c #0D4F54",
+"K c #002C22",
+"L c #7AAE9A",
+"M c #C4E0CB",
+"N c #A4C8B2",
+"O c #66A490",
+"P c #46947F",
+"Q c #428F7A",
+"R c #357C6B",
+"S c #115355",
+"T c #002E22",
+"U c #002869",
+"V c #88B9A8",
+"W c #87B6A2",
+"X c #C5E1CC",
+"Y c #9FC4AF",
+"Z c #5DA08D",
+"` c #428F7B",
+" . c #377E6D",
+".. c #135555",
+"+. c #003124",
+"@. c #00275F",
+"#. c #001B3C",
+"$. c #8DBCAE",
+"%. c #7EB19D",
+"&. c #B9D9C2",
+"*. c #95BDA8",
+"=. c #5A9988",
+"-. c #4F7666",
+";. c #466F5F",
+">. c #357868",
+",. c #18595A",
+"'. c #003426",
+"). c #00275D",
+"!. c #001931",
+"~. c #9CC4B8",
+"{. c #75AC98",
+"]. c #AFD1BB",
+"^. c #8CAD9A",
+"/. c #B2ACA7",
+"(. c #C08F8E",
+"_. c #792D2C",
+":. c #271C19",
+"<. c #174A50",
+"[. c #003628",
+"}. c #00275C",
+"|. c #02202F",
+"1. c #D3E4DE",
+"2. c #80B5A4",
+"3. c #73AA97",
+"4. c #A9CBB6",
+"5. c #BDB3AC",
+"6. c #F7F0F0",
+"7. c #CB9B9B",
+"8. c #6B2222",
+"9. c #1B0404",
+"0. c #131112",
+"a. c #012E23",
+"b. c #002559",
+"c. c #042C31",
+"d. c #01120F",
+"e. c #ECEEEA",
+"f. c #C5DAD1",
+"g. c #76B09E",
+"h. c #75AC97",
+"i. c #A6AA9B",
+"j. c #E2C8C8",
+"k. c #DEC0C0",
+"l. c #AE6C6C",
+"m. c #460E0E",
+"n. c #150303",
+"o. c #110303",
+"p. c #07120D",
+"q. c #001F47",
+"r. c #042E2B",
+"s. c #03231D",
+"t. c #01110D",
+"u. c #E3E9E4",
+"v. c #82B7A5",
+"w. c #78B19E",
+"x. c #78AD98",
+"y. c #A88E86",
+"z. c #BF8686",
+"A. c #8D3E3E",
+"B. c #2F0808",
+"C. c #140303",
+"D. c #0D0604",
+"E. c #000F22",
+"F. c #04251F",
+"G. c #052D25",
+"H. c #032B23",
+"I. c #EFEFEC",
+"J. c #8ABCAB",
+"K. c #82B6A4",
+"L. c #7BB2A0",
+"M. c #79AB98",
+"N. c #A56F6B",
+"O. c #B77878",
+"P. c #AD6868",
+"Q. c #7C2A2A",
+"R. c #2C0707",
+"S. c #100403",
+"T. c #000A15",
+"U. c #041411",
+"V. c #052922",
+"W. c #064034",
+"X. c #04362C",
+"Y. c #EBEDEA",
+"Z. c #92C0B1",
+"`. c #7CB3A1",
+" + c #7EB4A2",
+".+ c #76A391",
+"++ c #9F5B5A",
+"@+ c #AA6363",
+"#+ c #A35959",
+"$+ c #742323",
+"%+ c #2A0707",
+"&+ c #020B13",
+"*+ c #050F0C",
+"=+ c #05201B",
+"-+ c #063D32",
+";+ c #095747",
+">+ c #064135",
+",+ c #DDE6E1",
+"'+ c #8ABBAA",
+")+ c #80B5A3",
+"!+ c #6EA18F",
+"~+ c #975150",
+"{+ c #A65E5E",
+"]+ c #9F5353",
+"^+ c #712020",
+"/+ c #280606",
+"(+ c #130303",
+"_+ c #280707",
+":+ c #030B13",
+"<+ c #050E0B",
+"[+ c #051914",
+"}+ c #06352B",
+"|+ c #095545",
+"1+ c #0A5A4A",
+"2+ c #084E3F",
+"3+ c #BAD5CB",
+"4+ c #81B6A5",
+"5+ c #80B6A3",
+"6+ c #6FA795",
+"7+ c #8A4846",
+"8+ c #9A4C4C",
+"9+ c #974747",
+"0+ c #671A1A",
+"a+ c #220606",
+"b+ c #120303",
+"c+ c #631818",
+"d+ c #030B15",
+"e+ c #050E0C",
+"f+ c #051712",
+"g+ c #052C24",
+"h+ c #074D3F",
+"i+ c #0A5C4C",
+"j+ c #0A5848",
+"k+ c #0A5C4B",
+"l+ c #0A6350",
+"m+ c #8DBFAE",
+"n+ c #84B8A7",
+"o+ c #7FB5A2",
+"p+ c #7BB3A0",
+"q+ c #7AB2A0",
+"r+ c #7DB4A2",
+"s+ c #81B6A3",
+"t+ c #6CA996",
+"u+ c #6F4C45",
+"v+ c #792222",
+"w+ c #802A2A",
+"x+ c #591111",
+"y+ c #1D0505",
+"z+ c #420D0D",
+"A+ c #572020",
+"B+ c #020D14",
+"C+ c #051512",
+"D+ c #052720",
+"E+ c #095A4B",
+"F+ c #095646",
+"G+ c #0A5849",
+"H+ c #0A5B4B",
+"I+ c #0A5A49",
+"J+ c #7FB5A3",
+"K+ c #6BA795",
+"L+ c #6E8173",
+"M+ c #470F0E",
+"N+ c #571010",
+"O+ c #3B0A0A",
+"P+ c #170404",
+"Q+ c #1C0505",
+"R+ c #5A1111",
+"S+ c #200E10",
+"T+ c #030C12",
+"U+ c #051612",
+"V+ c #05251F",
+"W+ c #063A2F",
+"X+ c #095848",
+"Y+ c #0A5949",
+"Z+ c #085142",
+"`+ c #7BB3A1",
+" @ c #6EA997",
+".@ c #74A794",
+"+@ c #423430",
+"@@ c #1C0404",
+"#@ c #360909",
+"$@ c #280909",
+"%@ c #010A12",
+"&@ c #030D10",
+"*@ c #050F0D",
+"=@ c #051814",
+"-@ c #052721",
+";@ c #06382E",
+">@ c #095546",
+",@ c #074C3E",
+"'@ c #58A894",
+")@ c #6CAE9B",
+"!@ c #81B6A4",
+"~@ c #6DA695",
+"{@ c #5B9B88",
+"]@ c #789888",
+"^@ c #221715",
+"/@ c #2C0808",
+"(@ c #2D0A0A",
+"_@ c #040D0A",
+":@ c #000B18",
+"<@ c #040D0F",
+"[@ c #05110F",
+"}@ c #051C16",
+"|@ c #063A30",
+"1@ c #095344",
+"2@ c #0A5B4A",
+"3@ c #095647",
+"4@ c #074B3D",
+"5@ c #053D32",
+"6@ c #18866E",
+"7@ c #3C9681",
+"8@ c #6DAE9B",
+"9@ c #7DB3A1",
+"0@ c #70A998",
+"a@ c #428776",
+"b@ c #82B09C",
+"c@ c #658E7D",
+"d@ c #342E28",
+"e@ c #3E1A17",
+"f@ c #141616",
+"g@ c #000E0A",
+"h@ c #000C1E",
+"i@ c #040E0E",
+"j@ c #051511",
+"k@ c #063E33",
+"l@ c #085344",
+"m@ c #084C3E",
+"n@ c #042F26",
+"o@ c #021F19",
+"p@ c #084D3E",
+"q@ c #0C5344",
+"r@ c #2F806E",
+"s@ c #60A895",
+"t@ c #75AD9B",
+"u@ c #307365",
+"v@ c #6DA793",
+"w@ c #76AA97",
+"x@ c #4C7E6F",
+"y@ c #34332C",
+"z@ c #091616",
+"A@ c #000C0D",
+"B@ c #000C21",
+"C@ c #041311",
+"D@ c #051B16",
+"E@ c #052821",
+"F@ c #05362C",
+"G@ c #032C24",
+"H@ c #021D18",
+"I@ c #02211B",
+"J@ c #042B23",
+"K@ c #145345",
+"L@ c #38806F",
+"M@ c #5DA592",
+"N@ c #72AE9C",
+"O@ c #24635D",
+"P@ c #4C927F",
+"Q@ c #70A995",
+"R@ c #529784",
+"S@ c #29524A",
+"T@ c #021B19",
+"U@ c #000E1A",
+"V@ c #00112E",
+"W@ c #041916",
+"X@ c #031B16",
+"Y@ c #021B16",
+"Z@ c #011411",
+"`@ c #011915",
+" # c #021E19",
+".# c #021C17",
+"+# c #03221C",
+"@# c #083B31",
+"## c #11525B",
+"$# c #2C7166",
+"%# c #5FA08D",
+"&# c #559A87",
+"*# c #195957",
+"=# c #00281E",
+"-# c #001B46",
+";# c #00173B",
+"># c #010C0B",
+",# c #010F0C",
+"'# c #01110F",
+")# c #023637",
+"!# c #0D5058",
+"~# c #377D6D",
+"{# c #2E7369",
+"]# c #05443F",
+"^# c #002742",
+"/# c #00276C",
+"(# c #001D42",
+"_# c #003E2F",
+":# c #05413A",
+"<# c #023930",
+"[# c #002A31",
+"}# c #00286B",
+"|# c #002727",
+"1# c #002651",
+"2# c #00286C",
+" ",
+" ",
+" . + @ # ",
+" . $ % & * = ",
+" - ; > , ' ) ",
+" ! ~ { ] ^ / ( _ ",
+" : < [ } | 1 2 3 ",
+" 4 5 6 7 8 9 0 a ",
+" b c d e f g h i j _ ",
+" k l m n o p q r s _ ",
+" t u v w x y z A B _ ",
+" C D E F G H I J K _ ",
+" L M N O P Q R S T U ",
+" V W X Y Z P ` ...+.@.#. ",
+" $.%.&.*.=.-.;.>.,.'.).!. ",
+" ~.{.].^./.(._.:.<.[.}.|. ",
+" 1.2.3.4.5.6.7.8.9.0.a.b.c.d. ",
+" e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t. ",
+" u.v.w.x.y.7.z.A.B.C.o.D.E.F.G.H. ",
+" I.J.K.L.M.N.O.P.Q.R.C.o.S.T.U.V.W.X. ",
+" Y.Z.`. + +.+++@+#+$+%+C.o.o.&+*+=+-+;+>+ ",
+" ,+'+`.)+`.)+!+~+{+]+^+/+(+(+_+:+<+[+}+|+1+2+ ",
+" I.3+4+K.`.)+L.5+6+7+8+9+0+a+b+a+c+d+e+f+g+h+i+j+k+l+ ",
+" m+n+o+`.p+q+r+s+`.t+u+v+w+x+y+b+z+A+B+e+C+D+W.E+F+G+H+I+ ",
+" J+`.K.q+)+L.)+ +q+K+L+M+N+O+P+Q+R+S+T+*+U+V+W+X+Y+;+i+Z+ ",
+" q+`.`+`+o+ +`.J+`+ @.@+@%+@@(+#@$@%@&@*@=@-@;@>@Y+X+i+,@ ",
+" '@)@`.!@`+r+`+J+r+~@{@]@^@(+/@(@_@:@<@[@}@V.|@1@2@3@4@5@ ",
+" 6@7@8@q+)+`. +9@0@a@b@c@d@e@f@g@h@i@j@=+g+k@l@m@n@o@ ",
+" p@q@r@s@r+L.5+t@u@v@w@x@y@z@A@B@C@D@E@G.F@G@o@H@ ",
+" I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ # ",
+" .#+#@###$#%#&#*#=#-#;#>#,#'# ",
+" )#!#~#{#]#^#/#(# ",
+" _#:#<#[#}#_ ",
+" |#1#2#_ ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/packages/kobodeluxe/files/kobodeluxe-dimension-autoswap.patch b/packages/kobodeluxe/files/kobodeluxe-dimension-autoswap.patch
new file mode 100644
index 0000000000..273e523103
--- /dev/null
+++ b/packages/kobodeluxe/files/kobodeluxe-dimension-autoswap.patch
@@ -0,0 +1,236 @@
+Index: KoboDeluxe-0.5.1/graphics/gfxengine.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/graphics/gfxengine.cpp 2008-02-11 13:17:27.000000000 +0100
++++ KoboDeluxe-0.5.1/graphics/gfxengine.cpp 2008-02-11 15:27:57.000000000 +0100
+@@ -135,11 +135,13 @@
+
+ _width = w;
+ _height = h;
++
+ if(csengine)
+ cs_engine_set_size(csengine, w, h);
+
+ if(was_showing)
+ show();
++
+ }
+
+ void gfxengine_t::centered(int c)
+@@ -759,33 +761,13 @@
+ Display show/hide
+ ----------------------------------------------------------*/
+
+-int gfxengine_t::show()
++/** Helper method that returns the flags value needed for
++ * SDL_SetVideoMode() and SDL_VideoModeOK().
++ */
++int gfxengine_t::video_flags()
+ {
+ int flags = 0;
+
+- if(!is_open)
+- return -1;
+-
+- if(is_showing)
+- return 0;
+-
+- if(_centered && !_fullscreen)
+-#if HAVE_DECL_SDL_PUTENV
+- SDL_putenv("SDL_VIDEO_CENTERED=1");
+-#elif defined(HAVE_PUTENV)
+- putenv("SDL_VIDEO_CENTERED=1");
+-#else
+- #error Neither SDL_putenv() nor putenv() are available. Fix it!
+-#endif
+-
+- log_printf(DLOG, "Opening screen...\n");
+- if(!SDL_WasInit(SDL_INIT_VIDEO))
+- if(SDL_InitSubSystem(SDL_INIT_VIDEO) == -1)
+- {
+- log_printf(ELOG, "Failed to initialize SDL!\n");
+- return -2;
+- }
+-
+ switch(_driver)
+ {
+ case GFX_DRIVER_SDL2D:
+@@ -830,11 +812,72 @@
+ glSDL_VSync(_vsync);
+ flags |= xflags;
+
++ return flags;
++}
++
++bool gfxengine_t::check_mode_autoswap(int *w, int *h)
++{
++ log_printf(VLOG, "Trying display modes %dx%d and %dx%d if the first fails.\n", *w, *h, *h, *w);
++
++ int flags = video_flags();
++
++ SDL_Surface *test_surface = NULL;
++
++ // On some platforms SDL_VideoModeOK() cannot be trusted unfortunately.
++ if(!(test_surface = SDL_SetVideoMode(*w, *h, _depth, flags)))
++ {
++ if(!(test_surface = SDL_SetVideoMode(*h, *w, _depth, flags)))
++ {
++ log_printf(ELOG, "Failed with both display mode. Giving up!\n");
++ return false;
++ }
++
++ int temp = *w;
++ *w = *h;
++ *h = temp;
++
++ log_printf(VLOG, "Display dimensions swapped. Using %dx%d!\n", *w, *h);
++ }
++ else
++ log_printf(VLOG, "Stored display dimension worked. Using %dx%d!\n", *w, *h);
++
++ SDL_FreeSurface(test_surface);
++
++ return true;
++}
++
++int gfxengine_t::show()
++{
++ if(!is_open)
++ return -1;
++
++ if(is_showing)
++ return 0;
++
++ if(_centered && !_fullscreen)
++#if HAVE_DECL_SDL_PUTENV
++ SDL_putenv("SDL_VIDEO_CENTERED=1");
++#elif defined(HAVE_PUTENV)
++ putenv("SDL_VIDEO_CENTERED=1");
++#else
++ #error Neither SDL_putenv() nor putenv() are available. Fix it!
++#endif
++
++ log_printf(DLOG, "Opening screen...\n");
++ if(!SDL_WasInit(SDL_INIT_VIDEO))
++ if(SDL_InitSubSystem(SDL_INIT_VIDEO) == -1)
++ {
++ log_printf(ELOG, "Failed to initialize SDL!\n");
++ return -2;
++ }
++
++ int flags = video_flags();
++
+ screen_surface = SDL_SetVideoMode(_width, _height, _depth, flags);
+ if(!screen_surface)
+ {
+- log_printf(ELOG, "Failed to open display!\n");
+- return -3;
++ log_printf(ELOG, "Failed to open display with %dx%d! Giving up.\n", _width, _height);
++ return -3;
+ }
+
+ if(_driver != GFX_DRIVER_GLSDL)
+Index: KoboDeluxe-0.5.1/graphics/gfxengine.h
+===================================================================
+--- KoboDeluxe-0.5.1.orig/graphics/gfxengine.h 2008-02-11 13:24:51.000000000 +0100
++++ KoboDeluxe-0.5.1/graphics/gfxengine.h 2008-02-11 15:15:50.000000000 +0100
+@@ -54,6 +54,9 @@
+ class gfxengine_t
+ {
+ friend class window_t;
++
++ int video_flags();
++
+ public:
+ gfxengine_t();
+ virtual ~gfxengine_t();
+@@ -135,6 +138,7 @@
+ void title(const char *win, const char *icon);
+
+ /* Display show/hide */
++ bool check_mode_autoswap(int *, int *);
+ int show();
+ void hide();
+
+Index: KoboDeluxe-0.5.1/kobo.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/kobo.cpp 2008-02-11 13:16:24.000000000 +0100
++++ KoboDeluxe-0.5.1/kobo.cpp 2008-02-11 14:57:29.000000000 +0100
+@@ -641,8 +641,27 @@
+ gengine->title("Kobo Deluxe " VERSION, "kobodl");
+ gengine->driver((gfx_drivers_t)p->videodriver);
+
++ // Initializes gfxengine with all kinds of display properties.
++ // We need this at this point to make the autoswap check work
++ // properly. Since these properties are independent of other
++ // values that is no problem.
++ gengine->mode(0, p->fullscreen);
++ gengine->doublebuffer(p->doublebuf);
++ gengine->pages(p->pages);
++ gengine->vsync(p->vsync);
++ gengine->shadow(p->shadow);
++ gengine->cursor(0);
++
++ // Do the auto swap dance only if configured so.
++ if (prefs->autoswap)
++ {
++ if (!gengine->check_mode_autoswap(&p->width, &p->height))
++ return -1;
++ }
++
+ dw = p->width;
+ dh = p->height;
++
+ if(p->fullscreen)
+ {
+ // This game assumes 1:1 pixel aspect ratio, or 4:3
+@@ -696,13 +715,6 @@
+ yoffs = (int)((dh - gh) / 2 / gengine->yscale());
+ gengine->size(dw, dh);
+
+- gengine->mode(0, p->fullscreen);
+- gengine->doublebuffer(p->doublebuf);
+- gengine->pages(p->pages);
+- gengine->vsync(p->vsync);
+- gengine->shadow(p->shadow);
+- gengine->cursor(0);
+-
+ gengine->period(game.speed);
+ sound.period(game.speed);
+ gengine->timefilter(p->timefilter * 0.01f);
+Index: KoboDeluxe-0.5.1/prefs.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/prefs.cpp 2008-02-11 14:28:01.000000000 +0100
++++ KoboDeluxe-0.5.1/prefs.cpp 2008-02-11 14:30:15.000000000 +0100
+@@ -86,6 +86,7 @@
+ desc("Display Driver");
+ key("width", width, 640); desc("Horizontal Resolution");
+ key("height", height, 480); desc("Vertical Resolution");
++ yesno("autoswap", autoswap, 0); desc("Automatically swap display dimension");
+ key("aspect", aspect, 1000); desc("Pixel Aspect Ratio");
+ key("depth", depth, 0); desc("Display Depth");
+ key("maxfps", max_fps, 100); desc("Maximum fps");
+Index: KoboDeluxe-0.5.1/prefs.h
+===================================================================
+--- KoboDeluxe-0.5.1.orig/prefs.h 2008-02-11 14:28:01.000000000 +0100
++++ KoboDeluxe-0.5.1/prefs.h 2008-02-11 14:31:24.000000000 +0100
+@@ -76,6 +76,7 @@
+ int videodriver; //Internal video driver
+ int width; //Screen/window width
+ int height; //Screen/window height
++ int autoswap; // Automatically swap dimensions if initialization fails
+ int aspect; //Pixel aspect ratio * 1000
+ int depth; //Bits per pixel
+ int max_fps; //Maximum fps
+Index: KoboDeluxe-0.5.1/states.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/states.cpp 2008-02-11 14:32:13.000000000 +0100
++++ KoboDeluxe-0.5.1/states.cpp 2008-02-11 15:00:13.000000000 +0100
+@@ -117,6 +117,8 @@
+ switch (button)
+ {
+ case BTN_EXIT:
++ gsm.push(&st_ask_exit);
++ break;
+ case BTN_CLOSE:
+ gsm.push(&st_main_menu);
+ break;
diff --git a/packages/kobodeluxe/files/kobodeluxe-menu-pointer.patch b/packages/kobodeluxe/files/kobodeluxe-menu-pointer.patch
new file mode 100644
index 0000000000..160d3ce896
--- /dev/null
+++ b/packages/kobodeluxe/files/kobodeluxe-menu-pointer.patch
@@ -0,0 +1,266 @@
+Index: KoboDeluxe-0.5.1/README
+===================================================================
+--- KoboDeluxe-0.5.1.orig/README 2008-02-11 01:10:23.000000000 +0100
++++ KoboDeluxe-0.5.1/README 2008-02-11 01:17:30.000000000 +0100
+@@ -39,6 +39,12 @@
+ key diagonals. Escape enters the meny system, from where it is possi-
+ ble to change settings, start a new game or exit the game.
+
++ In case the touchscreen support has been compiled in the menu can be
++ controlled by clicking the frame borders. Touching the inner part of
++ the screen is like a button press. In the game mode a click in the
++ upper right corner activates pause mode and the lower right corner es-
++ capes to the menu.
++
+ OPTIONS
+ Note that all relevant options can be also configured in the config
+ file, which can be edited directly, or using the options menus in the
+Index: KoboDeluxe-0.5.1/config.h
+===================================================================
+--- KoboDeluxe-0.5.1.orig/config.h 2008-02-11 00:23:20.000000000 +0100
++++ KoboDeluxe-0.5.1/config.h 2008-02-11 02:01:17.000000000 +0100
+@@ -95,6 +95,15 @@
+ #define MARGIN 8
+
+ /*
++ * Fraction of the screen size in which clicks are not considered
++ * clicks but movements in that direction (as regarded from the
++ * center of the screen) or other special things (pause & exit).
++ *
++ * Used only in touchscreen mode.
++ */
++#define POINTER_MARGIN_PERCENT 10
++
++/*
+ * (In XKobo, WSIZE was used where this is
+ * used now; in the game logic code.)
+ *
+Index: KoboDeluxe-0.5.1/configure.in
+===================================================================
+--- KoboDeluxe-0.5.1.orig/configure.in 2008-02-11 00:37:18.000000000 +0100
++++ KoboDeluxe-0.5.1/configure.in 2008-02-11 00:48:59.000000000 +0100
+@@ -195,6 +195,16 @@
+ CXXFLAGS="$CXXFLAGS -DHAVE_OPENGL"
+ fi
+
++AC_ARG_ENABLE(
++ touchscreen,
++ [AS_HELP_STRING(
++ [--enable-touchscreen],
++ [Compile menu control support suitable for touchscreens (default is no)])],
++ AC_DEFINE(
++ [ENABLE_TOUCHSCREEN],
++ [1],
++ [Set to 1 if the menusystem should support touchscreen input]),
++ [])
+
+ dnl-------------------------------------------------------
+ dnl Checks for header files.
+Index: KoboDeluxe-0.5.1/kobo.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/kobo.cpp 2008-02-11 00:24:57.000000000 +0100
++++ KoboDeluxe-0.5.1/kobo.cpp 2008-02-11 16:02:23.000000000 +0100
+@@ -28,6 +28,8 @@
+ // Use this to benchmark and create a new percentage table!
+ #undef TIME_PROGRESS
+
++#include <aconfig.h>
++
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+@@ -671,6 +673,10 @@
+ gh = dh;
+ }
+
++#if ENABLE_TOUCHSCREEN
++ gengine->setup_pointer_margin(dw, dh);
++#endif
++
+ // Scaling has 16ths granularity, so tiles scale properly!
+ gengine->scale((int)((gw * 16 + 8) / SCREEN_WIDTH) / 16.f,
+ (int)((gh * 16 + 8) / SCREEN_HEIGHT) / 16.f);
+@@ -1599,6 +1605,23 @@
+ {
+ }
+
++#ifdef ENABLE_TOUCHSCREEN
++void kobo_gfxengine_t::setup_pointer_margin(int dw, int dh)
++{
++ // Precalculates the border ranges. Mouse clicks outside these are handled
++ // specially.
++ pointer_margin_width_min = dw * POINTER_MARGIN_PERCENT / 100;
++ pointer_margin_width_max = dw - dw * POINTER_MARGIN_PERCENT / 100;
++ pointer_margin_height_min = dh * POINTER_MARGIN_PERCENT / 100;
++ pointer_margin_height_max = dh - dh * POINTER_MARGIN_PERCENT / 100;
++
++ log_printf(VLOG, "Pointer margin range [%d, %d, %d, %d]\n",
++ pointer_margin_width_min,
++ pointer_margin_width_max,
++ pointer_margin_height_min,
++ pointer_margin_height_max);
++}
++#endif
+
+ void kobo_gfxengine_t::frame()
+ {
+@@ -1800,11 +1823,57 @@
+ mouse_y - MARGIN - WSIZE/2);
+ break;
+ case SDL_MOUSEBUTTONDOWN:
+- mouse_x = (int)(ev.motion.x / gengine->xscale()) - km.xoffs;
+- mouse_y = (int)(ev.motion.y / gengine->yscale()) - km.yoffs;
+- gsm.press(BTN_FIRE);
++ mouse_x = (int)(ev.button.x / gengine->xscale()) - km.xoffs;
++ mouse_y = (int)(ev.button.y / gengine->yscale()) - km.yoffs;
+ if(prefs->use_mouse)
+ {
++#if ENABLE_TOUCHSCREEN
++ if (ev.motion.x <= pointer_margin_width_min)
++ {
++ gsm.press(BTN_LEFT);
++ pointer_margin_used = true;
++ } else if (ev.motion.x >= pointer_margin_width_max)
++ {
++ // Upper right corner invokes pause.
++ // Lower right corner invokes exit.
++ // Otherwise it is just 'right'. :)
++ if (ev.motion.y <= pointer_margin_height_min)
++ {
++ gsm.press(BTN_PAUSE);
++ gamecontrol.press(BTN_PAUSE);
++ }
++ else
++ gsm.press((ev.motion.y >= pointer_margin_height_max
++ ? BTN_EXIT
++ : BTN_RIGHT));
++
++ pointer_margin_used = true;
++
++ }
++
++ if (ev.motion.y <= pointer_margin_height_min)
++ {
++ // Handle as 'up' only if it was not in the 'pause' area.
++ // Still handle as clicked, so 'fire' will not kick in.
++ if (ev.motion.x < pointer_margin_width_max)
++ gsm.press(BTN_UP);
++ pointer_margin_used = true;
++ } else if (ev.motion.y >= pointer_margin_height_max)
++ {
++ // Handle as 'down' only if it was not in the 'exit' area.
++ // Still handle as clicked, so 'fire' will not kick in.
++ if (ev.motion.x < pointer_margin_width_max)
++ gsm.press(BTN_DOWN);
++
++ pointer_margin_used = true;
++ }
++
++ if (!pointer_margin_used)
++ gsm.press(BTN_FIRE);
++#else
++ gsm.press(BTN_FIRE);
++#endif
++
+ gamecontrol.mouse_position(
+ mouse_x - 8 - MARGIN - WSIZE/2,
+ mouse_y - MARGIN - WSIZE/2);
+@@ -1824,10 +1893,24 @@
+ }
+ break;
+ case SDL_MOUSEBUTTONUP:
+- mouse_x = (int)(ev.motion.x / gengine->xscale()) - km.xoffs;
+- mouse_y = (int)(ev.motion.y / gengine->yscale()) - km.yoffs;
++ mouse_x = (int)(ev.button.x / gengine->xscale()) - km.xoffs;
++ mouse_y = (int)(ev.button.y / gengine->yscale()) - km.yoffs;
+ if(prefs->use_mouse)
+ {
++#if ENABLE_TOUCHSCREEN
++ // Resets all kinds of buttons that might have been activated by
++ // clicking in the pointer margin.
++ if (pointer_margin_used)
++ {
++ gsm.release(BTN_EXIT);
++ gsm.release(BTN_LEFT);
++ gsm.release(BTN_RIGHT);
++ gsm.release(BTN_UP);
++ gsm.release(BTN_DOWN);
++ pointer_margin_used = false;
++ }
++#endif
++
+ gamecontrol.mouse_position(
+ mouse_x - 8 - MARGIN - WSIZE/2,
+ mouse_y - MARGIN - WSIZE/2);
+@@ -2078,6 +2161,19 @@
+ int main(int argc, char *argv[])
+ {
+ int cmd_exit = 0;
++
++ printf(PACKAGE " - " VERSION " (touchscreen support: %s)\n",
++ (ENABLE_TOUCHSCREEN ? "yes" : "no"));
++ puts("Copyright (c) 1995, 1996 Akira Higuchi\n"
++ "Copyright (C) 1997 Masanao Izumo\n"
++ "Copyright (C) 1999-2001 Simon Peter\n"
++ "Copyright (C) 2002 Florian Schulze\n"
++ "Copyright (C) 2002 Jeremy Sheeley\n"
++ "Copyright (C) 2005 Erik Auerswald\n"
++ "Copyright (c) 1999-2007 David Olofson\n"
++ "This is free software; see the source for copying conditions. There is NO\n"
++ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
++
+ atexit(emergency_close);
+ signal(SIGTERM, breakhandler);
+ signal(SIGINT, breakhandler);
+Index: KoboDeluxe-0.5.1/kobo.h
+===================================================================
+--- KoboDeluxe-0.5.1.orig/kobo.h 2008-02-11 00:31:23.000000000 +0100
++++ KoboDeluxe-0.5.1/kobo.h 2008-02-11 02:19:29.000000000 +0100
+@@ -23,6 +23,8 @@
+ #ifndef _KOBO_H_
+ #define _KOBO_H_
+
++#include <aconfig.h>
++
+ #include "gfxengine.h"
+ #include "window.h"
+ #include "display.h"
+@@ -45,11 +47,25 @@
+
+ class kobo_gfxengine_t : public gfxengine_t
+ {
++#if ENABLE_TOUCHSCREEN
++ bool pointer_margin_used;
++
++ int pointer_margin_width_min;
++ int pointer_margin_width_max;
++ int pointer_margin_height_min;
++ int pointer_margin_height_max;
++#endif
++
+ void frame();
+ void pre_render();
+ void post_render();
+ public:
+ kobo_gfxengine_t();
++
++#if ENABLE_TOUCHSCREEN
++ void setup_pointer_margin(int, int);
++#endif
++
+ };
+
+ extern kobo_gfxengine_t *gengine;
+Index: KoboDeluxe-0.5.1/states.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/states.cpp 2008-02-11 03:06:41.000000000 +0100
++++ KoboDeluxe-0.5.1/states.cpp 2008-02-11 15:42:55.000000000 +0100
+@@ -963,8 +963,6 @@
+ break;
+
+ case BTN_FIRE:
+- if(!prefs->use_joystick)
+- break;
+ case BTN_START:
+ case BTN_SELECT:
+ sound.ui_ok();
diff --git a/packages/kobodeluxe/files/kobodeluxe-putenv.patch b/packages/kobodeluxe/files/kobodeluxe-putenv.patch
new file mode 100644
index 0000000000..05f7c72f81
--- /dev/null
+++ b/packages/kobodeluxe/files/kobodeluxe-putenv.patch
@@ -0,0 +1,69 @@
+Index: KoboDeluxe-0.5.1/configure.in
+===================================================================
+--- KoboDeluxe-0.5.1.orig/configure.in 2008-02-10 12:27:11.000000000 +0100
++++ KoboDeluxe-0.5.1/configure.in 2008-02-10 15:50:11.000000000 +0100
+@@ -159,7 +159,6 @@
+ )
+ LIBS="$LIBS -lSDL_image"
+
+-
+ dnl-------------------------------------------------------
+ dnl Checks for OpenGL
+ dnl-------------------------------------------------------
+@@ -214,13 +213,18 @@
+ dnl-------------------------------------------------------
+ dnl Checks for library functions.
+ dnl-------------------------------------------------------
++dnl SDL_putenv may not be available in all SDL ports
++AC_CHECK_DECLS(SDL_putenv,,,[#include <SDL.h>])
++
+ AC_CHECK_FUNCS(strdup strstr strchr strrchr)
+ AC_CHECK_FUNCS(snprintf _snprintf vsnprintf _vsnprintf)
+ AC_CHECK_FUNCS(pow sqrt)
+ AC_CHECK_FUNCS(munmap mkdir select stat)
+ AC_CHECK_FUNCS(atexit floor memmove memset memcmp)
+-AC_CHECK_FUNCS(gettimeofday)
++AC_CHECK_FUNCS(gettimeofday putenv)
+ AC_CHECK_FUNCS(getegid setgid)
++
++
+ AC_FUNC_MEMCMP
+ AC_FUNC_STRTOD
+ AC_FUNC_VPRINTF
+Index: KoboDeluxe-0.5.1/graphics/gfxengine.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/graphics/gfxengine.cpp 2008-02-10 12:41:31.000000000 +0100
++++ KoboDeluxe-0.5.1/graphics/gfxengine.cpp 2008-02-10 15:58:06.000000000 +0100
+@@ -21,10 +21,15 @@
+
+ #define DBG(x) x
+
++#include <aconfig.h>
++
+ #include "logger.h"
+
+ #include <string.h>
+ #include <math.h>
++#if not (HAVE_DECL_SDL_PUTENV) and defined (HAVE_PUTENV)
++#include <stdlib.h>
++#endif
+
+ #include "gfxengine.h"
+ #include "filters.h"
+@@ -764,8 +769,14 @@
+ if(is_showing)
+ return 0;
+
+- if(_centered && !_fullscreen)
+- SDL_putenv((char *)"SDL_VIDEO_CENTERED=1");
++ if(_centered && !_fullscreen)
++#if HAVE_DECL_SDL_PUTENV
++ SDL_putenv("SDL_VIDEO_CENTERED=1");
++#elif defined(HAVE_PUTENV)
++ putenv("SDL_VIDEO_CENTERED=1");
++#else
++ #error Neither SDL_putenv() nor putenv() are available. Fix it!
++#endif
+
+ log_printf(DLOG, "Opening screen...\n");
+ if(!SDL_WasInit(SDL_INIT_VIDEO))
diff --git a/packages/kobodeluxe/files/kobodeluxe-sysconf-support.patch b/packages/kobodeluxe/files/kobodeluxe-sysconf-support.patch
new file mode 100644
index 0000000000..1f62b31d71
--- /dev/null
+++ b/packages/kobodeluxe/files/kobodeluxe-sysconf-support.patch
@@ -0,0 +1,84 @@
+Index: KoboDeluxe-0.5.1/configure.in
+===================================================================
+--- KoboDeluxe-0.5.1.orig/configure.in 2008-02-10 20:51:37.000000000 +0100
++++ KoboDeluxe-0.5.1/configure.in 2008-02-10 21:40:09.000000000 +0100
+@@ -36,6 +36,7 @@
+ SCOREDIR='$(sharedstatedir)/kobo-deluxe/scores'
+ CONFIGDIR='HOME>>'
+ CONFIGFILE='.kobodlrc'
++USE_SYSCONF=1
+ EXEFILE=kobodl
+ case "$target_os" in
+ linux*)
+@@ -57,6 +58,7 @@
+ SCOREDIR='EXE>>scores'
+ CONFIGDIR='EXE>>'
+ CONFIGFILE='kobodl.cfg'
++ USE_SYSCONF=0
+ EXEFILE=kobodl.exe
+ MATHLIB=""
+ ;;
+@@ -68,6 +70,7 @@
+ SCOREDIR='EXE>>scores'
+ CONFIGDIR='EXE>>'
+ CONFIGFILE='kobodl.cfg'
++ USE_SYSCONF=0
+ EXEFILE=kobodl.exe
+ MATHLIB=""
+ ;;
+@@ -105,10 +108,12 @@
+ AM_CONDITIONAL(BUILD_MACOSX_BUNDLE, test x$build_macosx_bundle = xyes)
+ AM_CONDITIONAL(BUILD_SIMPLE_BUNDLE, test x$build_simple_bundle = xyes)
+ AM_CONDITIONAL(UNIX_SCOREDIR, test x$unix_scoredir = xyes)
++AC_DEFINE_UNQUOTED([USE_SYSCONF], [$USE_SYSCONF], [Define to 1 to use Unix-style sysconf dir for default configuration.])
+ AC_SUBST(DATADIR)
+ AC_SUBST(SCOREDIR)
+ AC_SUBST(CONFIGDIR)
+ AC_SUBST(CONFIGFILE)
++AC_SUBST(KOBO_SYSCONF)
+ AC_SUBST(EXEFILE)
+ AC_SUBST(MATHLIB)
+
+Index: KoboDeluxe-0.5.1/kobo.cpp
+===================================================================
+--- KoboDeluxe-0.5.1.orig/kobo.cpp 2008-02-10 20:57:32.000000000 +0100
++++ KoboDeluxe-0.5.1/kobo.cpp 2008-02-10 21:27:22.000000000 +0100
+@@ -1293,9 +1293,38 @@
+ FILE *f = fmap->fopen(KOBO_CONFIG_DIR "/" KOBO_CONFIG_FILE, "r");
+ if(f)
+ {
++ log_puts(VLOG, "Loading personal configuration from: "\
++ KOBO_CONFIG_DIR "/" KOBO_CONFIG_FILE "\n");
+ p->read(f);
+ fclose(f);
+ }
++#if USE_SYSCONF
++ /* On Unixen, where they have SYSCONF_DIR (usually /etc) try to get
++ * the default configuration from a file stored there before
++ * giving up.
++ *
++ * This gives packagers a chance to provide a proper default
++ * (playable) configuration for all those little Linux-based
++ * gadgets that are flying around.
++ */
++ else
++ {
++ f = fmap->fopen(SYSCONF_DIR "/kobo-deluxe/default-config", "r");
++ if(f)
++ {
++ log_puts(VLOG, "Loading configuration defaults from: "\
++ SYSCONF_DIR "/kobo-deluxe/default-config\n");
++
++ p->read(f);
++ fclose(f);
++ }
++ else
++ log_puts(VLOG, "Using built-in configuration defaults.\n");
++
++ }
++#else
++ log_puts(VLOG, "Using built-in configuration defaults.\n");
++#endif
+ }
+
+
diff --git a/packages/kobodeluxe/kobodeluxe_0.5.1.bb b/packages/kobodeluxe/kobodeluxe_0.5.1.bb
new file mode 100644
index 0000000000..e9162b9981
--- /dev/null
+++ b/packages/kobodeluxe/kobodeluxe_0.5.1.bb
@@ -0,0 +1,55 @@
+DESCRIPTION = "Fast-paced 2D top-down shooter where you have to destroy space station"
+SECTION = "games"
+PRIORITY = "optional"
+LICENSE = "GPL"
+AUTHOR = "David Olofson <david@olofson.net>"
+HOMEPAGE = "http://olofson.net/kobodl"
+
+PR = "r4"
+
+DEPENDS = "libsdl-image virtual/libsdl"
+
+RDEPENDS_${PN} = "${PN}-data"
+
+SRC_URI = "http://olofson.net/kobodl/download/KoboDeluxe-${PV}.tar.bz2 \
+ file://fighter-48.xpm \
+ file://debian-kobo.patch;patch=1 \
+ file://kobodeluxe-putenv.patch;patch=1 \
+ file://kobodeluxe-sysconf-support.patch;patch=1 \
+ file://kobodeluxe-menu-pointer.patch;patch=1 \
+ file://kobodeluxe-dimension-autoswap.patch;patch=1 \
+ file://default-config \
+ "
+
+S = "${WORKDIR}/KoboDeluxe-${PV}"
+
+inherit autotools sdl
+
+APPIMAGE = "${WORKDIR}/fighter-48.xpm"
+APPNAME = "kobodl"
+
+EXTRA_OECONF = "--disable-opengl --disable-sdltest --enable-touchscreen"
+
+export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
+
+do_configure_prepend() {
+ sed -i \
+ -e "s|width WIDTH_HERE|width ${MACHINE_DISPLAY_WIDTH_PIXELS}|" \
+ -e "s|height HEIGHT_HERE|height ${MACHINE_DISPLAY_HEIGHT_PIXELS}|" \
+ ${WORKDIR}/default-config
+}
+
+do_install_append() {
+ # Provide a default (working) configuration file
+ install -d ${D}${sysconfdir}/kobo-deluxe
+ install -m 755 ${WORKDIR}/default-config ${D}${sysconfdir}/kobo-deluxe
+}
+
+PACKAGES += "${PN}-data"
+
+FILES_${PN} += "${sysconfdir}"
+CONFFILES_${PN} = "${sysconfdir}/kobo-deluxe/default-config"
+
+FILES_${PN}-data = "${datadir}"
+
+PACKAGE_ARCH_${PN}-data = "all"
diff --git a/packages/damageext/.mtn2git_empty b/packages/kxml2/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/damageext/.mtn2git_empty
+++ b/packages/kxml2/files/.mtn2git_empty
diff --git a/packages/kxml2/files/makefile.patch b/packages/kxml2/files/makefile.patch
new file mode 100644
index 0000000000..9119971a64
--- /dev/null
+++ b/packages/kxml2/files/makefile.patch
@@ -0,0 +1,421 @@
+Index: kxml2-2/src/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ kxml2-2/src/Makefile 2007-11-30 04:17:21.000000000 +0100
+@@ -0,0 +1,416 @@
++#
++# Makefile created at Fri Nov 30 04:17:22 2007, by mmake
++#
++
++# Programs (with common options):
++SHELL = /bin/sh
++CP = cp
++RM = rm -f
++MV = mv -f
++SED = sed
++ETAGS = etags
++XARGS = xargs
++CAT = cat
++FIND = find
++CPP = cpp -C -P
++
++INSTALL = install
++INSTALL_PROG = $(INSTALL) -m $(MODE_PROGS)
++INSTALL_FILE = $(INSTALL) -m $(MODE_FILES)
++INSTALL_DIR = $(INSTALL) -m $(MODE_DIRS) -d
++
++# Install modes
++MODE_PROGS = 555
++MODE_FILES = 444
++MODE_DIRS = 2755
++
++# Build programs
++JAVAC = javac
++JAVADOC = gjavadoc
++JAR = fastjar
++
++# Build flags
++JAVAC_FLAGS = -source 1.3 -target 1.1
++JAVADOC_FLAGS = -version -author
++JAR_FLAGS = cvf
++JIKES_DEP_FLAG = +M
++
++# ------------------------------------------------------------------- #
++
++# Prefix for every install directory
++PREFIX =
++
++# Where to start installing the class files. Set this to an empty value
++# if you dont want to install classes
++CLASS_DIR = $(PREFIX)classes
++
++# The directory to install the jar file in. Set this to an empty value
++# if you dont want to install a jar file
++JAR_DIR = $(PREFIX)lib
++
++# The directory to install the app bundle in. Set this to an empty value
++# if you dont want to install an app bundle
++BUNDLE_DIR = $(PREFIX)lib
++
++
++# The directory to install html files generated by javadoc
++DOC_DIR = $(PREFIX)doc/api-docs
++
++# The directory to install script files in
++SCRIPT_DIR = $(PREFIX)bin
++
++# ------------------------------------------------------------------- #
++
++# The name of the jar file to install
++JAR_FILE = kxml2-2.3.0.jar
++
++#
++# The VERSION variable below should be set to a value
++# that will be tested in the .xjava code and Info.plist.
++#
++VERSION = CHANGE_ME
++
++# ------------------------------------------------------------------- #
++
++# The name of the OS X Application Bundle to install
++BUNDLE_FILE =
++
++# Folder containing App Bundle resources (Info.plist, *.icns, etc.)
++BUNDLE_RESOURCE_DIR = misc/macosx
++
++# Items to copy to the Resources folder of the bundle
++BUNDLE_RESOURCES = $(addsuffix .icns, $(basename $(APP_FILE)) Document)
++
++# Location of JavaApplicatonStub
++JAVA_STUB = /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub
++
++# ------------------------------------------------------------------- #
++
++# Resource files:
++# Extend the list to install other files of your choice
++RESOURCE_SRC := *.properties *.gif *.au
++
++# Objects that should go into the jar file. (find syntax)
++JAR_OBJS := \( -name '*.class' -o -name '*.gif' -o -name "*.au" \
++ -o -name '*.properties' \)
++
++# Include the separate variables file if it exists
++MAKEFILE_VARS = makefile.vars
++VARS = $(wildcard $(MAKEFILE_VARS))
++ifneq ($(VARS),)
++ include $(MAKEFILE_VARS)
++endif
++
++
++# Packages we should compile
++PACKAGES = \
++ org.kxml2.wap.wml \
++ org.kxml2.wap.wv \
++ org.kxml2.wap \
++ org.kxml2.io \
++ org.kxml2.wap.syncml \
++ org.kxml2.kdom
++
++
++# All packages that can be recursively compiled.
++ALL_PACKAGES = \
++ org \
++ org.kxml2 \
++ $(PACKAGES)
++
++
++# Packages to generate docs for.
++JAVADOC_PACKAGES = $(PACKAGES)
++
++
++# Resource packages
++RESOURCES =
++
++
++# Directories with shell scripts
++SCRIPTS =
++
++# ------------------------------------------------------------------- #
++
++# A marker variable for the top level directory
++TOPLEVEL := .
++
++# Subdirectories with java files:
++JAVA_DIRS := $(subst .,/,$(PACKAGES)) $(TOPLEVEL)
++
++# Subdirectories with only resource files:
++RESOURCE_DIRS := $(subst .,/,$(RESOURCES))
++
++# All the .xjava source files:
++XJAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.xjava))
++
++# All the xjava files to build
++XJAVA_OBJS := $(XJAVA_SRC:.xjava=.java)
++
++# Directory coresponding to a package
++PACKAGE_DIR = $(subst .,/,$(1))
++
++# All the (x)java files in a package
++PACKAGE_SRC = $(shell $(FIND) $(PACKAGE_DIR) \( -name '*.java' -or -name '*.xjava' \) )
++
++# All the classes to build in a package
++PACKAGE_OBJS = $(patsubst %.java,%.class,$(PACKAGE_SRC: %.xjava=%.java))
++
++# All the .java source files:
++JAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.java))
++JAVA_SRC := $(XJAVA_OBJS) $(JAVA_SRC)
++
++# Dependency files:
++DEPEND_OBJS := $(JAVA_SRC:.java=.u)
++
++# The intermediate java files and main classes we should build:
++JAVA_OBJS := $(XJAVA_OBJS) $(JAVA_SRC:.java=.class)
++
++# Search for resource files in both JAVA_DIRS and RESOURCE_DIRS
++RESOURCE_OBJS := $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
++ $(wildcard $(foreach file, $(RESOURCE_SRC), \
++ $(dir)/$(file))))
++
++# All the shell scripts source
++SCRIPT_SRCS := $(foreach dir, $(SCRIPTS), $(wildcard $(dir)/*.sh))
++# All shell scripts we should install
++SCRIPT_OBJS := $(SCRIPT_SRCS:.sh=)
++
++# All the files to install into CLASS_DIR
++INSTALL_OBJS := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.class))
++# Escape inner class delimiter $
++INSTALL_OBJS := $(subst $$,\$$,$(INSTALL_OBJS))
++# Add the resource files to be installed as well
++INSTALL_OBJS := $(INSTALL_OBJS) $(RESOURCE_OBJS)
++
++
++# ------------------------------------------------------------------- #
++
++
++define check-exit
++|| exit 1
++
++endef
++
++
++# -----------
++# Build Rules
++# -----------
++
++%.java: %.xjava
++ $(CPP) -D$(VERSION) $< $@
++
++%.class: %.java
++ $(JAVAC) $(JAVAC_FLAGS) $<
++
++%.jar: $(JAVA_OBJS) $(RESOURCE_OBJS)
++ $(FIND) $(TOPLEVEL) $(JAR_OBJS) -print | $(XARGS) \
++ $(JAR) $(JAR_FLAGS) $(JAR_FILE)
++
++%.u: %.java
++ $(JAVAC) $(JIKES_DEP_FLAG) $<
++
++
++# -------
++# Targets
++# -------
++
++.PHONY: all jar install uninstall doc clean depend tags bundle \
++ help $(ALL_PACKAGES)
++
++all:: $(JAVA_OBJS)
++
++help:
++ @echo "Usage: make {all|jar|srcjar|bundle|install|uninstall|doc|clean|depend|tags|PACKAGE_NAME}"
++ @echo " all: build all classes"
++ @echo " jar: build jar file"
++ @echo " srcjar: build source jar file"
++ @echo " bundle: build OS X app bundle"
++ @echo " install: install classes into $(CLASS_DIR)"
++ @echo " jar into $(JAR_DIR)"
++ @echo " bundle into $(BUNDLE_DIR)"
++ @echo " javadocs into $(DOC_DIR)"
++ @echo " scripts into $(SCRIPT_DIR)"
++ @echo " uninstall: remove installed files"
++ @echo " doc: generate api docs from javadoc comments"
++ @echo " clean: remove classes and temporary files"
++ @echo " depend: build class dependency info using jikes"
++ @echo " tags: build emacs tags file"
++ @echo " PACKAGE_NAME: builds all classes in this package and any subpackages."
++
++# Jar target
++ifneq ($(strip $(JAR_FILE)),)
++jar: $(JAR_FILE)
++ifneq ($(strip $(JAR_DIR)),)
++install:: $(JAR_FILE)
++ @echo "===> [Installing jar file, $(JAR_FILE) in $(JAR_DIR)] "
++ $(INSTALL_DIR) $(JAR_DIR) $(check-exit)
++ $(INSTALL_FILE) $(JAR_FILE) $(JAR_DIR) $(check-exit)
++uninstall::
++ @echo "===> [Removing jar file, $(JAR_FILE) from $(JAR_DIR)] "
++ $(RM) $(JAR_DIR)/$(JAR_FILE) $(check-exit)
++else
++install::
++ @echo "No jar install dir defined"
++endif
++clean::
++ $(RM) $(JAR_FILE)
++else
++jar:
++ @echo "No jar file defined"
++endif
++
++SRC_JAR_FILE := $(basename $(JAR_FILE))-src$(suffix $JAR_FILE)
++
++# Source jar target
++srcjar : $(SRC_JAR_FILE)
++$(SRC_JAR_FILE): $(JAVA_SRC) $(RESOURCE_OBJS)
++ $(FIND) $(TOPLEVEL) $(JAR_OBJS: .class=.java) -print | $(XARGS) \
++ $(JAR) $(JAR_FLAGS) $@
++
++# Bundle target
++ifneq ($(strip $(BUNDLE_FILE)),)
++bundle: $(BUNDLE_FILE)
++$(BUNDLE_FILE) : $(JAR_FILE)
++ $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/Resources/Java $(check-exit)
++ $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/MacOS $(check-exit)
++ $(INSTALL_PROG) $(JAVA_STUB) $(BUNDLE_FILE)/Contents/MacOS/ \
++ $(check-exit)
++ ( $(CAT) $(BUNDLE_RESOURCE_DIR)/Info.plist | $(SED) -e \
++ s/VERSION/$(VERSION)/ >98762infoplist876 ) $(check-exit)
++ $(INSTALL_FILE) 98762infoplist876 \
++ $(BUNDLE_FILE)/Contents/Info.plist $(check-exit)
++ $(RM) 98762infoplist876 $(check-exit)
++ $(INSTALL_FILE) $(JAR_FILE) $(BUNDLE_FILE)/Contents/Resources/Java
++ checkexit="";for f in $(BUNDLE_RESOURCES); do \
++ $(INSTALL_FILE) $(BUNDLE_RESOURCE_DIR)$$f $(BUNDLE_FILE)/Contents/Resources/ \
++ || checkexit=$?; \
++ done; test -z $$checkexit
++
++ifneq ($(strip $(BUNDLE_DIR)),)
++# This is probably bad, but I don't know how else to do it
++install:: $(BUNDLE_FILE)
++ @echo "===> [Installing app bundle, $(BUNDLE_FILE) in $(BUNDLE_DIR)] "
++ $(INSTALL_DIR) $(BUNDLE_DIR) $(check-exit)
++ $(CP) -R $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
++ $(INSTALL_FILE) $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
++uninstall::
++ @echo "===> [Removing bundle file, $(BUNDLE_FILE) from $(BUNDLE_DIR)] "
++ $(RM) -r $(BUNDLE_DIR)/$(BUNDLE_FILE) $(check-exit)
++else
++install::
++ @echo "No bundle install dir defined"
++endif
++clean::
++ $(RM) -r $(BUNDLE_FILE)
++else
++bundle:
++ @echo "No bundle file defined"
++endif
++
++
++# Install target for Classes and Resources
++ifneq ($(strip $(CLASS_DIR)),)
++install:: $(JAVA_OBJS)
++ @echo "===> [Installing classes in $(CLASS_DIR)] "
++ $(INSTALL_DIR) $(CLASS_DIR) $(check-exit)
++ $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
++ $(INSTALL_DIR) $(CLASS_DIR)/$(dir) $(check-exit))
++ $(foreach file, $(INSTALL_OBJS), \
++ $(INSTALL_FILE) $(file) $(CLASS_DIR)/$(file) \
++ $(check-exit))
++uninstall::
++ @echo "===> [Removing class-files from $(CLASS_DIR)] "
++ $(foreach file, $(INSTALL_OBJS), \
++ $(RM) $(CLASS_DIR)/$(file) \
++ $(check-exit))
++else
++# Print a warning here if you like. (No class install dir defined)
++endif
++
++
++
++# Depend target
++ifeq ($(findstring jikes,$(JAVAC)),jikes)
++depend: $(XJAVA_OBJS) $(DEPEND_OBJS)
++ ( $(CAT) $(DEPEND_OBJS) | $(SED) -e '/\.class$$/d' \
++ -e '/.*$$.*/d' > $(MAKEFILE_DEPEND); $(RM) $(DEPEND_OBJS); )
++else
++depend:
++ @echo "mmake needs the jikes compiler to build class dependencies"
++endif
++
++
++
++# Doc target
++ifneq ($(strip $(JAVADOC_PACKAGES)),)
++doc: $(JAVA_SRC)
++ @echo "===> [Installing java documentation in $(DOC_DIR)] "
++ $(INSTALL_DIR) $(DOC_DIR) $(check-exit)
++ $(JAVADOC) $(JAVADOC_FLAGS) -d $(DOC_DIR) $(JAVADOC_PACKAGES)
++else
++doc:
++ @echo "You must put your source files in a package to run make doc"
++endif
++
++
++
++# Script target
++ifneq ($(strip $(SCRIPT_OBJS)),)
++all:: $(SCRIPT_OBJS)
++ifneq ($(strip $(SCRIPT_DIR)),)
++install:: $(SCRIPT_OBJS)
++ @echo "===> [Installing shell-scripts in $(SCRIPT_DIR)] "
++ $(INSTALL_DIR) $(SCRIPT_DIR) $(check-exit)
++ $(foreach file, $(SCRIPT_OBJS), \
++ $(INSTALL_PROG) $(file) $(SCRIPT_DIR) $(check-exit))
++uninstall::
++ @echo "===> [Removing shell-scripts from $(SCRIPT_DIR)] "
++ $(foreach file, $(SCRIPT_OBJS), \
++ $(RM) $(SCRIPT_DIR)/$(file) $(check-exit))
++else
++# Print a warning here if you like. (No script install dir defined)
++endif
++clean::
++ rm -f $(SCRIPT_OBJS)
++endif
++
++
++
++# Tag target
++tags:
++ @echo "Tagging"
++ $(ETAGS) $(filter-out $(XJAVA_OBJS), $(JAVA_SRC)) $(XJAVA_SRC)
++
++
++
++# Various cleanup routines
++clean::
++ $(FIND) . \( -name '*~' -o -name '*.class' \) -print | \
++ $(XARGS) $(RM)
++ $(FIND) . -name '*.u' -print | $(XARGS) $(RM)
++
++ifneq ($(strip $(XJAVA_SRC)),)
++clean::
++ $(RM) $(XJAVA_OBJS)
++endif
++
++# ----------------------------------------
++# Include the dependency graph if it exist
++# ----------------------------------------
++MAKEFILE_DEPEND = makefile.dep
++DEPEND = $(wildcard $(MAKEFILE_DEPEND))
++ifneq ($(DEPEND),)
++ include $(MAKEFILE_DEPEND)
++endif
++
++#package targets
++org : $(call PACKAGE_OBJS,org)
++org.kxml2 : $(call PACKAGE_OBJS,org.kxml2)
++org.kxml2.wap.wml : $(call PACKAGE_OBJS,org.kxml2.wap.wml)
++org.kxml2.wap.wv : $(call PACKAGE_OBJS,org.kxml2.wap.wv)
++org.kxml2.wap : $(call PACKAGE_OBJS,org.kxml2.wap)
++org.kxml2.io : $(call PACKAGE_OBJS,org.kxml2.io)
++org.kxml2.wap.syncml : $(call PACKAGE_OBJS,org.kxml2.wap.syncml)
++org.kxml2.kdom : $(call PACKAGE_OBJS,org.kxml2.kdom)
++
diff --git a/packages/kxml2/kxml2_2.3.0.bb b/packages/kxml2/kxml2_2.3.0.bb
index 284aa1af6d..994a0a5799 100644
--- a/packages/kxml2/kxml2_2.3.0.bb
+++ b/packages/kxml2/kxml2_2.3.0.bb
@@ -1,33 +1,38 @@
-DESCRIPTION = "kxml2 is a small XML pull parser"
-HOMEPAGE = "http://kxml.sourceforge.net/"
-LICENSE = "BSD"
+DESCRIPTION = "A small XML pull parser, specially designed for constrained environments such as Applets, Personal Java or MIDP devices"
+HOMEPAGE = "http://kxml.sourceforge.net"
PRIORITY = "optional"
-PR = "r0"
+SECTION = "libs"
+LICENSE = "BSD CPL LGPL"
+PR = "r1"
+inherit java-library
-JAR = ${PN}-${PV}.jar
+DEPENDS = "xmlpull"
+RDEPENDS = "libxmlpull-java"
-SRC_URI = "http://downloads.sourceforge.net/kxml/${JAR}"
+S = "${WORKDIR}"
+JAR = "${PN}-${PV}.jar"
-do_unpack() {
- :
-}
-
-do_install() {
+SRC_URI = "\
+ http://belnet.dl.sourceforge.net/sourceforge/kxml/${PN}-src-${PV}.zip \
+ file://makefile.patch;patch=1 \
+ "
-install -d ${D}${datadir}/java
-install -m 0644 ${DL_DIR}/${JAR} ${D}${datadir}/java
+do_compile() {
+ oe_runmake -C src \
+ JAVAC_FLAGS="-sourcepath . -cp ${STAGING_DATADIR}/java/xmlpull.jar" \
+ JAR="oefatal \"No jar invocation expected here.\"" \
+ oe_runmake -C src \
+ JAVAC="oefatal \"No Java compilation expected here.\"" \
+ jar
}
do_stage() {
-
-install -d ${STAGING_DATADIR}/java
-install -m 0644 ${DL_DIR}/${JAR} ${STAGING_DATADIR}/java
-
+ oe_jarinstall -s src/${JAR} ${PN}.jar
}
-PACKAGES = "${PN}"
-
-FILES_${PN} = "${datadir}/java/${JAR}"
+do_install() {
+ oe_jarinstall src/${JAR} ${PN}.jar
+}
diff --git a/packages/lemon/lemon-native_3.3.5.bb b/packages/lemon/lemon-native_3.3.5.bb
deleted file mode 100644
index 4c721723de..0000000000
--- a/packages/lemon/lemon-native_3.3.5.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require lemon.inc
-inherit native
-
-do_stage() {
- install -d ${STAGING_BINDIR}
- install -m 0755 lemon ${STAGING_BINDIR}/
- install -d ${STAGING_DATADIR}/lemon
- install -m 0644 lempar.c ${STAGING_DATADIR}/lemon/
-}
diff --git a/packages/lemon/lemon-native_3.5.4.bb b/packages/lemon/lemon-native_3.5.4.bb
new file mode 100644
index 0000000000..55a083ccb7
--- /dev/null
+++ b/packages/lemon/lemon-native_3.5.4.bb
@@ -0,0 +1,11 @@
+require lemon.inc
+
+PR = "r0"
+
+inherit native
+
+do_stage() {
+ install -d ${STAGING_BINDIR}
+ install -m 0755 lemon ${STAGING_BINDIR}
+ install -m 0644 lempar.c ${STAGING_BINDIR}
+}
diff --git a/packages/lemon/lemon.inc b/packages/lemon/lemon.inc
index 9dcadbd674..7742fb8118 100644
--- a/packages/lemon/lemon.inc
+++ b/packages/lemon/lemon.inc
@@ -6,6 +6,7 @@ SECTION = "devel"
SRC_URI = "http://www.sqlite.org/sqlite-${PV}.tar.gz \
file://lemon.1"
+
S = "${WORKDIR}/sqlite-${PV}/tool"
do_compile() {
diff --git a/packages/lemon/lemon_3.3.5.bb b/packages/lemon/lemon_3.3.5.bb
deleted file mode 100644
index b057360010..0000000000
--- a/packages/lemon/lemon_3.3.5.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require lemon.inc
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 lemon ${D}${bindir}/
- install -d ${D}${datadir}/lemon
- install -m 0644 lempar.c ${D}${datadir}/lemon/
- install -d ${D}${mandir}/man1
- install -m 0644 ${WORKDIR}/lemon.1 ${D}${mandir}/man1/
-}
diff --git a/packages/lemon/lemon_3.5.4.bb b/packages/lemon/lemon_3.5.4.bb
new file mode 100644
index 0000000000..4a7e5e77f0
--- /dev/null
+++ b/packages/lemon/lemon_3.5.4.bb
@@ -0,0 +1,11 @@
+require lemon.inc
+
+PR = "r0"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 lemon ${D}${bindir}
+ install -m 0644 lempar.c ${D}${bindir}
+ install -d ${D}${mandir}/man1
+ install -m 0644 ${WORKDIR}/lemon.1 ${D}${mandir}/man1/
+}
diff --git a/packages/liba52/liba52_0.7.4.bb b/packages/liba52/liba52_0.7.4.bb
index e29e6c9b2f..743fa30f83 100644
--- a/packages/liba52/liba52_0.7.4.bb
+++ b/packages/liba52/liba52_0.7.4.bb
@@ -15,9 +15,9 @@ PACKAGES =+ "a52dec a52dec-dbg a52dec-doc"
FILES_${PN} = " ${libdir}/liba52.so.0 ${libdir}/liba52.so.0.0.0 "
FILES_${PN}-dev = " ${includedir}/a52dec/*.h ${libdir}/liba52.so ${libdir}/liba52.la ${libdir}/liba52.a "
-FILES_${PN}-dbg = " ${libdir}/.debug/*"
+FILES_${PN}-dbg += " ${libdir}/.debug/*"
FILES_a52dec = " ${bindir}/* "
-FILES_a52dec-dbg = " ${bindir}/.debug/* "
+FILES_a52dec-dbg += " ${bindir}/.debug/* "
FILES_a52dec-doc = " ${mandir}/man1/* "
do_stage() {
diff --git a/packages/libao/libao-alsa_0.8.6.bb b/packages/libao/libao-alsa_0.8.6.bb
index 5af8fa687a..c6fda2dbef 100644
--- a/packages/libao/libao-alsa_0.8.6.bb
+++ b/packages/libao/libao-alsa_0.8.6.bb
@@ -20,6 +20,6 @@ do_stage() {
oe_libinstall -so -C src libao ${STAGING_LIBDIR}
}
-PACKAGES = "libao-alsa-plugin libao-alsa-plugin-dev"
+PACKAGES = "${PN}-dbg libao-alsa-plugin libao-alsa-plugin-dev"
FILES_libao-alsa-plugin= "${libdir}/ao/plugins-2/libalsa*.so"
FILES_libao-alsa-plugin-dev += "${libdir}/ao/plugins-2/libalsa*.la"
diff --git a/packages/libao/libao-plugin-alsa_0.8.6.bb b/packages/libao/libao-plugin-alsa_0.8.6.bb
index 86dc4afc14..94727ad5c7 100644
--- a/packages/libao/libao-plugin-alsa_0.8.6.bb
+++ b/packages/libao/libao-plugin-alsa_0.8.6.bb
@@ -5,7 +5,7 @@ SECTION = "libs"
PRIORITY = "optional"
DEPENDS = "alsa-lib libao"
PROVIDES = "libao-alsa"
-PACKAGES = "libao-alsa libao-alsa-dev"
+PACKAGES = "${PN}-dbg libao-alsa libao-alsa-dev"
PR = "r3"
SRC_URI = "http://downloads.xiph.org/releases/ao/libao-${PV}.tar.gz"
diff --git a/packages/libao/libao_0.8.8.bb b/packages/libao/libao_0.8.8.bb
new file mode 100644
index 0000000000..88f7c898ec
--- /dev/null
+++ b/packages/libao/libao_0.8.8.bb
@@ -0,0 +1,39 @@
+LICENSE = "GPL"
+DESCRIPTION = "A cross platform audio library"
+HOMEPAGE = "http://www.xiph.org/ao/"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "alsa-lib pulseaudio"
+PROVIDES = "libao-alsa libao-alsa-plugin"
+PR = "r0"
+
+SRC_URI = "http://downloads.xiph.org/releases/ao/libao-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-esd --disable-esdtest \
+ --disable-alsa --enable-alsa09 \
+ --disable-arts --disable-nas \
+ --enable-pulse"
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/ao
+ install -m 0644 ${S}/include/ao/ao.h ${S}/include/ao/os_types.h \
+ ${S}/include/ao/plugin.h ${STAGING_INCDIR}/ao/
+
+ oe_libinstall -so -C src libao ${STAGING_LIBDIR}
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 ao.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+PACKAGES =+ "${PN}-alsa ${PN}-alsa-dev ${PN}-pulse ${PN}-pulse-dev"
+
+FILES_${PN}-alsa = "${libdir}/ao/plugins-2/libalsa*.so"
+FILES_${PN}-alsa-dev = "${libdir}/ao/plugins-2/libalsa*.la"
+FILES_${PN}-pulse = "${libdir}/ao/plugins-2/libpulse*.so"
+FILES_${PN}-pulse-dev = "${libdir}/ao/plugins-2/libpulse*.la"
+
+FILES_${PN} += "${libdir}/ao/plugins-2/*.so"
+FILES_${PN}-dev += "${libdir}/ao/plugins-2/*.la"
+FILES_${PN}-dbg += "${libdir}/ao/plugins-2/.debug"
+
diff --git a/packages/damageext/damageext-1.0/.mtn2git_empty b/packages/libc-client/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/damageext/damageext-1.0/.mtn2git_empty
+++ b/packages/libc-client/.mtn2git_empty
diff --git a/packages/libc-client/libc-client_2007.bb b/packages/libc-client/libc-client_2007.bb
new file mode 100644
index 0000000000..87035afec4
--- /dev/null
+++ b/packages/libc-client/libc-client_2007.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "UW c-client library for mail protocols"
+SECTION = "devel"
+PRIORITY = "optional"
+LICENSE = "University of Washington's Free-Fork License"
+DEPENDS = "libpam openssl"
+
+SRC_URI = "ftp://ftp.cac.washington.edu/imap/c-client.tar.Z"
+
+S = "${WORKDIR}/imap-2007"
+
+EXTRA_OEMAKE = "CC='${CC}'"
+
+HEADERS = "src/c-client/*.h src/osdep/unix/*.h c-client/auths.c c-client/linkage.c c-client/linkage.h c-client/osdep.h"
+
+do_compile() {
+ echo "SSLINCLUDE=${STAGING_INCDIR}/openssl SSLLIB=${STAGING_LIBDIR}" > ${S}/SPECIALS
+ oe_runmake lnp
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/c-client
+ install ${HEADERS} ${STAGING_INCDIR}/c-client
+ install c-client/c-client.a ${STAGING_LIBDIR}/libc-client.a
+}
+
diff --git a/packages/libdbi/libdbi-drivers_0.7.1.bb b/packages/libdbi/libdbi-drivers_0.7.1.bb
index d36643dc22..2e3bc5cf16 100644
--- a/packages/libdbi/libdbi-drivers_0.7.1.bb
+++ b/packages/libdbi/libdbi-drivers_0.7.1.bb
@@ -14,7 +14,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/libdbi-drivers/libdbi-drivers-${PV}.tar.gz"
inherit autotools
-PACKAGES = "libdbd-sqlite"
+PACKAGES = "${PN}-dbg libdbd-sqlite"
EXTRA_OECONF = "--with-dbi-incdir=${STAGING_INCDIR} \
--with-sqlite \
diff --git a/packages/libeventdb/libeventdb.inc b/packages/libeventdb/libeventdb.inc
new file mode 100644
index 0000000000..7facee79ce
--- /dev/null
+++ b/packages/libeventdb/libeventdb.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Database access library for GPE calendar"
+SECTION = "gpe/libs"
+LICENSE = "LGPL"
+PRIORITY = "optional"
+DEPENDS = "libgpewidget libgpepimc sqlite"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit pkgconfig gpe autotools
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/libeventdb/libeventdb_0.17.bb b/packages/libeventdb/libeventdb_0.17.bb
index 282383108b..bb8fbaa9b8 100644
--- a/packages/libeventdb/libeventdb_0.17.bb
+++ b/packages/libeventdb/libeventdb_0.17.bb
@@ -1,20 +1,5 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "libgpewidget libgpepimc sqlite"
+require libeventdb.inc
-GPE_TARBALL_SUFFIX = "bz2"
-
-inherit pkgconfig gpe autotools
+PR = "r1"
headers = "event-db.h"
-
-do_stage () {
- oe_libinstall -so libeventdb ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/gpe
- for h in ${headers}; do
- install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/$h
- done
-}
diff --git a/packages/libeventdb/libeventdb_0.18.bb b/packages/libeventdb/libeventdb_0.18.bb
index 2db316c65e..1c9d3ab4bc 100644
--- a/packages/libeventdb/libeventdb_0.18.bb
+++ b/packages/libeventdb/libeventdb_0.18.bb
@@ -1,14 +1,3 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "libgpewidget libgpepimc sqlite"
+require libeventdb.inc
-GPE_TARBALL_SUFFIX = "bz2"
-
-inherit pkgconfig gpe autotools
-
-
-do_stage () {
-autotools_stage_all
-}
+PR = "r1"
diff --git a/packages/libeventdb/libeventdb_0.19.bb b/packages/libeventdb/libeventdb_0.19.bb
index 52e44ecc0e..1c9d3ab4bc 100644
--- a/packages/libeventdb/libeventdb_0.19.bb
+++ b/packages/libeventdb/libeventdb_0.19.bb
@@ -1,14 +1,3 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "libgpewidget libgpepimc sqlite"
+require libeventdb.inc
-GPE_TARBALL_SUFFIX = "bz2"
-
-inherit pkgconfig gpe autotools
-
-
-do_stage () {
-autotools_stage_all
-}
+PR = "r1"
diff --git a/packages/libeventdb/libeventdb_0.21.bb b/packages/libeventdb/libeventdb_0.21.bb
index 52e44ecc0e..1c9d3ab4bc 100644
--- a/packages/libeventdb/libeventdb_0.21.bb
+++ b/packages/libeventdb/libeventdb_0.21.bb
@@ -1,14 +1,3 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "libgpewidget libgpepimc sqlite"
+require libeventdb.inc
-GPE_TARBALL_SUFFIX = "bz2"
-
-inherit pkgconfig gpe autotools
-
-
-do_stage () {
-autotools_stage_all
-}
+PR = "r1"
diff --git a/packages/libeventdb/libeventdb_0.30.bb b/packages/libeventdb/libeventdb_0.30.bb
index d93766a21a..b3b34d3be9 100644
--- a/packages/libeventdb/libeventdb_0.30.bb
+++ b/packages/libeventdb/libeventdb_0.30.bb
@@ -1,16 +1,4 @@
-DEFAULT_PREFERENCE = "-1"
-
-LICENSE = "LGPL"
-DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "libgpewidget libgpepimc sqlite"
-
-GPE_TARBALL_SUFFIX = "bz2"
+require libeventdb.inc
-inherit pkgconfig gpe autotools
-
-
-do_stage () {
-autotools_stage_all
-}
+PR = "r1"
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/libeventdb/libeventdb_0.90.bb b/packages/libeventdb/libeventdb_0.90.bb
index 2372db528b..1c9d3ab4bc 100644
--- a/packages/libeventdb/libeventdb_0.90.bb
+++ b/packages/libeventdb/libeventdb_0.90.bb
@@ -1,14 +1,3 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Database access library for GPE calendar"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-DEPENDS = "libgpewidget libgpepimc sqlite"
+require libeventdb.inc
-GPE_TARBALL_SUFFIX = "bz2"
-
-inherit pkgconfig gpe autotools
-
-
-do_stage () {
- autotools_stage_all
-}
+PR = "r1"
diff --git a/packages/libeventdb/libeventdb_svn.bb b/packages/libeventdb/libeventdb_svn.bb
index 4361df2ea4..132205ee0a 100644
--- a/packages/libeventdb/libeventdb_svn.bb
+++ b/packages/libeventdb/libeventdb_svn.bb
@@ -1,21 +1,8 @@
-DESCRIPTION = "Database access library for GPE calendar"
-LICENSE = "LGPL"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-
-DEPENDS = "libgpewidget libgpepimc sqlite"
+require libeventdb.inc
+PR = "r1"
PV = "0.90+svn${SRCDATE}"
-PR = "r0"
-
DEFAULT_PREFERENCE = "-1"
-inherit pkgconfig gpe autotools
-
SRC_URI = "${GPE_SVN}"
-
S = "${WORKDIR}/${PN}"
-
-do_stage () {
- autotools_stage_all
-}
diff --git a/packages/damageext/files/.mtn2git_empty b/packages/libexosip2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/damageext/files/.mtn2git_empty
+++ b/packages/libexosip2/.mtn2git_empty
diff --git a/packages/dbus/dbus-1.0.1/.mtn2git_empty b/packages/libexosip2/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/dbus/dbus-1.0.1/.mtn2git_empty
+++ b/packages/libexosip2/files/.mtn2git_empty
diff --git a/packages/libexosip2/files/simplify-flags.patch b/packages/libexosip2/files/simplify-flags.patch
new file mode 100644
index 0000000000..62bb768861
--- /dev/null
+++ b/packages/libexosip2/files/simplify-flags.patch
@@ -0,0 +1,27 @@
+diff -urN libeXosip2-2.2.3.orig/src/Makefile.am libeXosip2-2.2.3/src/Makefile.am
+--- libeXosip2-2.2.3.orig/src/Makefile.am 2005-10-07 14:44:38.000000000 +0200
++++ libeXosip2-2.2.3/src/Makefile.am 2008-01-23 16:05:07.000000000 +0100
+@@ -27,7 +27,7 @@
+ jpipe.c jpipe.h jauth.c \
+ sdp_offans.c jpublish.c
+
+-libeXosip2_la_LDFLAGS = -L$(prefix)/lib -version-info $(LIBEXOSIP_SO_VERSION)
++libeXosip2_la_LDFLAGS = -version-info $(LIBEXOSIP_SO_VERSION)
+ libeXosip2_la_LIBADD = -losip2 @EXOSIP_LIB@ @PTHREAD_LIBS@
+
+-INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include -I$(includedir)
++INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include
+diff -urN libeXosip2-2.2.3.orig/tools/Makefile.am libeXosip2-2.2.3/tools/Makefile.am
+--- libeXosip2-2.2.3.orig/tools/Makefile.am 2005-07-24 02:11:43.000000000 +0200
++++ libeXosip2-2.2.3/tools/Makefile.am 2008-01-23 16:11:07.000000000 +0100
+@@ -9,8 +9,8 @@
+
+ sip_reg_LDFLAGS = -O @EXOSIP_LIB@ @PTHREAD_LIBS@ @JOSUA_LIB@
+
+-sip_reg_LDADD = -L$(prefix)/lib $(top_builddir)/src/libeXosip2.la -losip2 -losipparser2
++sip_reg_LDADD = $(top_builddir)/src/libeXosip2.la -losip2 -losipparser2
+
+-INCLUDES = -I$(prefix)/include -I$(top_srcdir) -I$(top_srcdir)/include -I$(includedir)
++INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include
+
+
diff --git a/packages/libexosip2/libexosip2_2.2.3.bb b/packages/libexosip2/libexosip2_2.2.3.bb
new file mode 100644
index 0000000000..5251d0e2e2
--- /dev/null
+++ b/packages/libexosip2/libexosip2_2.2.3.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "High level Session Initiation Protocol (SIP) library"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "libosip2"
+SRCNAME = "libeXosip2"
+LEAD_SONAME = "libeXosip2"
+
+PR = "r0"
+SRC_URI = "http://download.savannah.nongnu.org/releases/exosip/${SRCNAME}-${PV}.tar.gz \
+ file://simplify-flags.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit autotools pkgconfig
+EXTRA_OECONF = "--disable-josua"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libffi/libffi_2.0+gcc3.4.1.bb b/packages/libffi/libffi_2.0+gcc3.4.1.bb
index 3e0d789412..6b2df35ae1 100644
--- a/packages/libffi/libffi_2.0+gcc3.4.1.bb
+++ b/packages/libffi/libffi_2.0+gcc3.4.1.bb
@@ -6,7 +6,7 @@ PR = "r1"
inherit autotools gettext
-PACKAGES = "${PN} ${PN}-dev"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-dev"
FILES_${PN} = "${libdir}/libffi.so.*"
diff --git a/packages/libgcrypt/libgcrypt_1.4.0.bb b/packages/libgcrypt/libgcrypt_1.4.0.bb
new file mode 100644
index 0000000000..74205da673
--- /dev/null
+++ b/packages/libgcrypt/libgcrypt_1.4.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "A general purpose cryptographic library based on the code from GnuPG"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL LGPL FDL"
+DEPENDS = "libgpg-error"
+PR = "r1"
+
+# move libgcrypt-config into -dev package
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}"
+
+SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-${PV}.tar.gz"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "--without-pth --disable-asm --with-capabilities"
+
+ARM_INSTRUCTION_SET = "arm"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/dbus/dbus-1.1.1/.mtn2git_empty b/packages/libglade/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/dbus/dbus-1.1.1/.mtn2git_empty
+++ b/packages/libglade/files/.mtn2git_empty
diff --git a/packages/libglade/libglade-2.4.0/glade-cruft.patch b/packages/libglade/files/glade-cruft.patch
index 0fceccf0c4..0fceccf0c4 100644
--- a/packages/libglade/libglade-2.4.0/glade-cruft.patch
+++ b/packages/libglade/files/glade-cruft.patch
diff --git a/packages/libglade/libglade-2.0.1/gtk-2.0.m4 b/packages/libglade/files/gtk-2.0.m4
index a0c53ac11f..a0c53ac11f 100644
--- a/packages/libglade/libglade-2.0.1/gtk-2.0.m4
+++ b/packages/libglade/files/gtk-2.0.m4
diff --git a/packages/libglade/libglade-2.5.1/no-deprecation.patch b/packages/libglade/files/no-deprecation.patch
index 9ef8f0738e..9ef8f0738e 100644
--- a/packages/libglade/libglade-2.5.1/no-deprecation.patch
+++ b/packages/libglade/files/no-deprecation.patch
diff --git a/packages/libglade/libglade-2.4.2/no-xml2.patch b/packages/libglade/files/no-xml2.patch
index 1c2e215b8d..1c2e215b8d 100644
--- a/packages/libglade/libglade-2.4.2/no-xml2.patch
+++ b/packages/libglade/files/no-xml2.patch
diff --git a/packages/libglade/libglade-2.0.1/glade-cruft.patch b/packages/libglade/libglade-2.0.1/glade-cruft.patch
deleted file mode 100644
index 2edaa729c6..0000000000
--- a/packages/libglade/libglade-2.0.1/glade-cruft.patch
+++ /dev/null
@@ -1,97 +0,0 @@
---- configure.in~ 2002-08-29 13:45:44.000000000 +0100
-+++ configure.in 2004-03-15 19:40:58.000000000 +0000
-@@ -84,6 +84,18 @@
- AM_CONDITIONAL(HAVE_PYTHON, $have_python)
- AC_SUBST(PYTHON)
-
-+AC_MSG_CHECKING([for cruft in libgtk])
-+AC_TRY_LINK([
-+#include <gtk/gtk.h>
-+#include <stdio.h>
-+], [ gtk_tree_get_type (); return 0; ],
-+ [ AC_MSG_RESULT(yes)
-+ have_cruft=yes ],
-+ [ AC_MSG_RESULT(no)
-+ AC_DEFINE(DISABLE_CRUFT,,[leave out support for old, broken widgets])
-+ have_cruft=no ])
-+AC_SUBST(DISABLE_CRUFT)
-+
- dnl add debugging options ...
- changequote(,)dnl
- if test "x$GCC" = xyes; then
---- glade/glade-gtk.c~ 2002-07-30 10:10:36.000000000 +0100
-+++ glade/glade-gtk.c 2004-03-15 19:43:46.000000000 +0000
-@@ -211,6 +211,8 @@
- gtk_clist_column_titles_hide (GTK_CLIST (w));
- }
-
-+#ifndef DISABLE_CRUFT
-+
- static void
- tree_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -236,6 +238,8 @@
- gtk_tree_set_view_lines (GTK_TREE (w), BOOL (value));
- }
-
-+#endif
-+
- static void
- list_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -252,6 +256,7 @@
- gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (w), BOOL (value));
- }
-
-+#ifndef DISABLE_CRUFT
- static void
- text_set_text (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -260,6 +265,7 @@
-
- gtk_editable_insert_text (GTK_EDITABLE (w), value, -1, &pos);
- }
-+#endif
-
- static void
- radio_menu_item_set_group (GladeXML *xml, GtkWidget *w,
-@@ -1011,13 +1017,17 @@
- glade_register_custom_prop (GTK_TYPE_CLIST, "selection_mode", clist_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CLIST, "shadow_type", clist_set_shadow_type);
- glade_register_custom_prop (GTK_TYPE_CLIST, "show_titles", clist_set_show_titles);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TREE, "selection_mode", tree_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_mode", tree_set_view_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_line", tree_set_view_line);
-+#endif
- glade_register_custom_prop (GTK_TYPE_LIST, "selection_mode", list_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CHECK_MENU_ITEM, "always_show_toggle",
- check_menu_item_set_always_show_toggle);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TEXT, "text", text_set_text);
-+#endif
- glade_register_custom_prop (GTK_TYPE_RADIO_MENU_ITEM, "group",
- radio_menu_item_set_group);
- glade_register_custom_prop (GTK_TYPE_TOOLBAR, "tooltips", toolbar_set_tooltips);
-@@ -1155,8 +1165,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TEAROFF_MENU_ITEM, glade_standard_build_widget,
- NULL, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TEXT, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TEXT_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_TIPS_QUERY, glade_standard_build_widget,
-@@ -1165,8 +1177,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TOOLBAR, glade_standard_build_widget,
- toolbar_build_children, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TREE, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TREE_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_VBUTTON_BOX, glade_standard_build_widget,
diff --git a/packages/libglade/libglade-2.4.0/no-xml2.patch b/packages/libglade/libglade-2.4.0/no-xml2.patch
deleted file mode 100644
index 797599a821..0000000000
--- a/packages/libglade/libglade-2.4.0/no-xml2.patch
+++ /dev/null
@@ -1,502 +0,0 @@
---- libglade/libglade-2.0.pc.in 2001-12-12 14:26:54.000000000 +0000
-+++ libglade/libglade-2.0.pc.in 2004-01-12 20:08:06.000000000 +0000
-@@ -11,8 +11,8 @@
- Name: Libglade
- Description: a library for dynamically loading GLADE interface files
- Version: @VERSION@
--Requires: gtk+-2.0 libxml-2.0
-+Requires: gtk+-2.0 @PKGCFG_REQUIRE_LIBXML2@
- Libs: -L${libdir} -lglade-2.0
- Cflags: -I${includedir}/libglade-2.0
-
-
---- libglade/glade/glade-parser.c.orig 2004-02-11 01:26:01.000000000 +0000
-+++ libglade/glade/glade-parser.c 2005-01-01 11:26:37.000000000 +0000
-@@ -34,7 +34,15 @@
- # define dgettext(Domain, String) (String)
- #endif
-
--#include <libxml/parser.h>
-+#ifdef USE_GMARKUP_PARSER
-+# include <zlib.h>
-+#else
-+# include <libxml/parser.h>
-+#endif
-+
-+#ifdef USE_GMARKUP_PARSER
-+# define xmlChar gchar
-+#endif
-
- #include "glade-parser.h"
- #include "glade-private.h"
-@@ -507,7 +515,9 @@
- case PARSER_START:
- if (!strcmp(name, "glade-interface")) {
- state->state = PARSER_GLADE_INTERFACE;
--#if 0
-+
-+#ifndef USE_GMARKUP_PARSER
-+ #if 0
- /* check for correct XML namespace */
- for (i = 0; attrs && attrs[i] != NULL; i += 2) {
- if (!strcmp(attrs[i], "xmlns") &&
-@@ -517,7 +527,9 @@
- g_warning("unknown attribute `%s' for <glade-interface>",
- attrs[i]);
- }
-+ #endif
- #endif
-+
- } else {
- g_warning("Expected <glade-interface>. Got <%s>.", name);
- state->prev_state = state->state;
-@@ -1056,12 +1068,18 @@
- }
- }
-
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlEntityPtr
- glade_parser_get_entity(GladeParseState *state, const xmlChar *name)
- {
- return xmlGetPredefinedEntity(name);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_warning(GladeParseState *state, const char *msg, ...)
- {
-@@ -1072,6 +1090,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1082,6 +1104,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_fatal_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1092,6 +1118,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlSAXHandler glade_parser = {
- 0, /* internalSubset */
- 0, /* isStandalone */
-@@ -1119,6 +1149,82 @@
- (fatalErrorSAXFunc)glade_parser_fatal_error, /* fatalError */
- };
-
-+#else /* USE_GMARKUP_PARSER */
-+
-+static void
-+glade_parser_start_element_wrapper(GMarkupParseContext *context,
-+ const gchar *name,
-+ const gchar **attr_names,
-+ const gchar **attr_values,
-+ gpointer state,
-+ GError **error)
-+{
-+ guint i = 0;
-+
-+ /* Pack attribute names/values from two separate
-+ * arrays (GMarkupParser style) into one single
-+ * array (libxml SAXParser style). This is not
-+ * very efficient, but we do it to make the
-+ * GMarkupParser code as little invasive as
-+ * possible. */
-+
-+ while (attr_names[i] != NULL) {
-+ ++i;
-+ }
-+
-+ if (1)
-+ {
-+ const gchar *attr[(i*2)+1];
-+ guint j, k;
-+
-+ for (j=0, k=0; k < i; j += 2)
-+ {
-+ attr[j] = attr_names[k];
-+ attr[j+1] = attr_values[k];
-+ ++k;
-+ }
-+ attr[i*2] = NULL;
-+
-+ glade_parser_start_element((GladeParseState*)state, name, attr);
-+ }
-+}
-+
-+static void
-+glade_parser_end_element_wrapper(GMarkupParseContext *context,
-+ const gchar *name,
-+ gpointer state,
-+ GError **err)
-+{
-+ glade_parser_end_element((GladeParseState*)state, name);
-+}
-+
-+static void
-+glade_parser_characters_wrapper(GMarkupParseContext *context,
-+ const gchar *chars,
-+ gsize len,
-+ gpointer state,
-+ GError **err)
-+{
-+ glade_parser_characters((GladeParseState*)state, chars, (int) len);
-+}
-+
-+static void
-+glade_parser_error(GMarkupParseContext *context, GError *err, gpointer data)
-+{
-+ g_log("Glade-Parser", G_LOG_LEVEL_CRITICAL, "%s", err->message);
-+}
-+
-+static const GMarkupParser glade_parser = {
-+ glade_parser_start_element_wrapper, /* element open */
-+ glade_parser_end_element_wrapper, /* element close */
-+ glade_parser_characters_wrapper, /* text content */
-+ NULL, /* passthrough */
-+ glade_parser_error, /* parse error */
-+};
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- static void
- widget_info_free(GladeWidgetInfo *info)
- {
-@@ -1182,6 +1288,9 @@
- *
- * Returns: the GladeInterface structure for the XML file.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_file(const gchar *file, const gchar *domain)
- {
-@@ -1213,6 +1322,31 @@
- return state.interface;
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+GladeInterface *
-+glade_parser_parse_file(const gchar *file, const gchar *domain)
-+{
-+ GladeInterface *interface;
-+ GError *err = NULL;
-+ gchar *content = NULL;
-+ gsize clen;
-+
-+ if (!g_file_get_contents(file, &content, &clen, &err)) {
-+ g_warning("could not load glade file: %s", err->message);
-+ g_error_free(err);
-+ return NULL;
-+ }
-+
-+ interface = glade_parser_parse_buffer(content, (gint) clen, domain);
-+
-+ g_free(content);
-+
-+ return interface;
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
- /**
- * glade_parser_parse_buffer
- * @buffer: a buffer in memory containing XML data.
-@@ -1228,6 +1362,9 @@
- *
- * Returns: the GladeInterface structure for the XML buffer.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
- {
-@@ -1254,6 +1391,161 @@
- return state.interface;
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+
-+static GladeInterface *
-+glade_parser_parse_buffer_internal(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ GMarkupParseContext *context;
-+ GladeParseState state = { 0 };
-+ GError *err = NULL;
-+
-+ state.interface = NULL;
-+ if (domain)
-+ state.domain = domain;
-+ else
-+ state.domain = textdomain(NULL);
-+
-+ /* FIXME: This strstr() is not safe, as it ignores the len
-+ * argument and assumes the buffer is NUL-terminated */
-+ if (strstr(buffer, "<?xml") == NULL) {
-+ g_warning("No XML header found in document!");
-+ return NULL;
-+ }
-+
-+ context = g_markup_parse_context_new(&glade_parser, (GMarkupParseFlags) 0, &state, NULL);
-+
-+ glade_parser_start_document(&state);
-+
-+ if (!g_markup_parse_context_parse(context, buffer, (gssize) len, &err)) {
-+ g_warning("document not well formed: %s", err->message);
-+ g_error_free(err);
-+ if (state.interface)
-+ glade_interface_destroy (state.interface);
-+ return NULL;
-+ }
-+
-+ glade_parser_end_document(&state);
-+
-+ if (state.state != PARSER_FINISH) {
-+ g_warning("did not finish in PARSER_FINISH state!");
-+
-+ if (state.interface)
-+ glade_interface_destroy(state.interface);
-+
-+ return NULL;
-+ }
-+
-+ return state.interface;
-+}
-+
-+struct _gzip_rfc1952_hdr
-+{
-+ guint8 id1, id2, cm, flags;
-+ guint32 mtime;
-+ guint8 xflags;
-+ guint8 os;
-+};
-+
-+static GladeInterface *
-+glade_parser_parse_gzipped_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ struct _gzip_rfc1952_hdr *hdr = (struct _gzip_rfc1952_hdr*)buffer;
-+ struct z_stream_s zstream;
-+ GladeInterface *interface;
-+ const guint8 *cbuf; /* start of compressed data */
-+ guint8 *decompress_buf;
-+ gulong decompress_len = 0;
-+ gint ret;
-+
-+ g_assert(hdr != NULL && hdr->id1 == 0x1f && hdr->id2 == 0x8b);
-+
-+ if (hdr->cm != Z_DEFLATED) {
-+ g_warning("Unknown decompression method %u", (guint) hdr->cm);
-+ return NULL;
-+ }
-+
-+ /* Uncompressed size (modulo 2^32) is last
-+ * 4 bytes of gzipped file, and little endian.
-+ * See RFC 1952 */
-+ decompress_len = GUINT32_FROM_LE(*((guint32*)(((guint8*)buffer) + len - 4)));
-+
-+ /* paranoid mode: glade files > 5MB are unlikely */
-+ g_return_val_if_fail(decompress_len < 5*1024*1024, NULL);
-+
-+ decompress_buf = g_malloc0(decompress_len + 1); /* +1 for NUL-terminator */
-+
-+ /* find start of compressed data, skipping header stuff */
-+ cbuf = (guint8*)buffer + 10;
-+ if (hdr->flags & 0x04) {
-+ guint16 xlen = GUINT16_FROM_LE(*((guint16*)cbuf));
-+ cbuf += xlen + 2;
-+ }
-+ if (hdr->flags & 0x08) {
-+ guint16 onamelen = strlen(cbuf);
-+ cbuf += onamelen + 1;
-+ }
-+ if (hdr->flags & 0x10) {
-+ guint16 commentlen = strlen(cbuf);
-+ cbuf += commentlen + 1;
-+ }
-+ if (hdr->flags & 0x02)
-+ {
-+ cbuf += 2; /* skip header CRC16 */
-+ }
-+
-+ zstream.next_in = (void*)cbuf;
-+ zstream.avail_in = (uLongf) len - ((void*)cbuf-(void*)buffer) - 4 - 4 +1;
-+ zstream.next_out = decompress_buf;
-+ zstream.avail_out= decompress_len;
-+ zstream.zalloc = Z_NULL;
-+ zstream.zfree = Z_NULL;
-+ zstream.opaque = Z_NULL;
-+
-+ ret = inflateInit2(&zstream, -MAX_WBITS);
-+
-+ if (ret != Z_OK) {
-+ g_warning("inflateInit2() failed. zlib error code: %d", ret);
-+ g_free(decompress_buf);
-+ return NULL;
-+ }
-+
-+ ret = inflate(&zstream, Z_FINISH);
-+
-+ if (ret != Z_STREAM_END) {
-+ g_warning("zlib decompression failed. zlib error code: %d", ret);
-+ g_free(decompress_buf);
-+ return NULL;
-+ }
-+
-+ interface = glade_parser_parse_buffer_internal(decompress_buf, decompress_len, domain);
-+
-+ g_free(decompress_buf);
-+
-+ return interface;
-+}
-+
-+GladeInterface *
-+glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ g_return_val_if_fail(buffer != NULL, NULL);
-+ g_return_val_if_fail(len > 0, NULL);
-+
-+ /* Check if buffer is gzipped */
-+ if (buffer[0] == 0x1f && buffer[1] == (gchar)0x8b) {
-+ return glade_parser_parse_gzipped_buffer(buffer, len, domain);
-+ }
-+
-+ /* Buffer is cleartext. */
-+ return glade_parser_parse_buffer_internal(buffer, len, domain);
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- dump_widget(xmlNode *parent, GladeWidgetInfo *info, gint indent)
- {
-@@ -1373,6 +1665,8 @@
- xmlNodeAddContent(widget, " ");
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
- /**
- * glade_interface_dump
- * @interface: the GladeInterface
-@@ -1381,6 +1675,9 @@
- * This function dumps the contents of a GladeInterface into a file as
- * XML. It is intended mainly as a debugging tool.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- void
- glade_interface_dump(GladeInterface *interface, const gchar *filename)
- {
-@@ -1419,6 +1716,17 @@
- xmlFreeDoc(doc);
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+void
-+glade_interface_dump(GladeInterface *interface, const gchar *filename)
-+{
-+ g_warning("glade_interface_dump() is only available with libxml2.");
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- #if 0
- int
- main(int argc, char **argv) {
-
-
---- libglade-2.4.0/configure.in.orig 2005-01-01 12:23:37.000000000 +0000
-+++ libglade-2.4.0/configure.in 2005-01-01 12:35:31.000000000 +0000
-@@ -48,13 +48,36 @@
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
- PKG_CHECK_MODULES(LIBGLADE, [dnl
-- libxml-2.0 >= required_libxml_version dnl
- atk >= required_atk_version dnl
- gtk+-2.0 >= required_gtk_version dnl
- glib-2.0 >= required_glib_version])
- AC_SUBST(LIBGLADE_LIBS)
- AC_SUBST(LIBGLADE_CFLAGS)
-
-+
-+disable_xml2=no
-+AC_ARG_WITH([libxml2],
-+ AC_HELP_STRING([--without-libxml2], [Don't use libxml2, use Glib's GMarkupParser instead]),
-+ [disable_xml2=yes],
-+ [disable_xml2=no])
-+
-+AC_MSG_CHECKING([if we are using libxml2])
-+if test "x$disable_xml2" == "xno"; then
-+ AC_MSG_RESULT(yes)
-+ PKG_CHECK_MODULES(XML2, libxml-2.0 >= 2.4.10)
-+ PKGCFG_REQUIRE_LIBXML2="libxml-2.0"
-+ LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS $XML2_CFLAGS"
-+ LIBGLADE_LIBS="$LIBGLADE_LIBS $XML2_LIBS"
-+else
-+ LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS -DUSE_GMARKUP_PARSER"
-+ PKGCFG_REQUIRE_LIBXML2=""
-+ AC_MSG_RESULT(no)
-+fi
-+
-+AC_SUBST(XML2_LIBS)
-+AC_SUBST(XML2_CFLAGS)
-+AC_SUBST(PKGCFG_REQUIRE_LIBXML2)
-+
- AC_MSG_CHECKING([for native Win32])
- case "$host" in
- *-*-mingw*)
-@@ -114,6 +137,21 @@
- fi
- fi
-
-+if test "x$disable_xml2" == "xyes"; then
-+ echo "*****************************************************"
-+ echo " You chose to disable libxml2 and use Glib's"
-+ echo " GMarkupParser instead."
-+ echo
-+ echo " Please bear in mind that using libglade with"
-+ echo " GMarkupParser is an experimental feature only."
-+ echo
-+ echo " Please post problems or success stories to"
-+ echo " the glade-devel mailing list. Thank you."
-+ echo "*****************************************************"
-+fi
-+
-+
-+
- GTK_DOC_CHECK(1.0)
-
- dnl gettext stuff ... there is no message catalog for libglade -- libglade
diff --git a/packages/libglade/libglade-2.4.2/glade-cruft.patch b/packages/libglade/libglade-2.4.2/glade-cruft.patch
deleted file mode 100644
index 0fceccf0c4..0000000000
--- a/packages/libglade/libglade-2.4.2/glade-cruft.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-diff -ur libglade-2.4.0~/configure.in libglade-2.4.0/configure.in
---- libglade-2.4.0~/configure.in 2004-05-17 12:38:31.000000000 +0100
-+++ libglade-2.4.0/configure.in 2004-07-28 16:53:09.000000000 +0100
-@@ -147,6 +147,18 @@
- AM_CONDITIONAL(HAVE_PYTHON, $have_python)
- AC_SUBST(PYTHON)
-
-+AC_MSG_CHECKING([for cruft in libgtk])
-+AC_TRY_LINK([
-+#include <gtk/gtk.h>
-+#include <stdio.h>
-+], [ gtk_tree_get_type (); return 0; ],
-+ [ AC_MSG_RESULT(yes)
-+ have_cruft=yes ],
-+ [ AC_MSG_RESULT(no)
-+ AC_DEFINE(DISABLE_CRUFT,,[leave out support for old, broken widgets])
-+ have_cruft=no ])
-+AC_SUBST(DISABLE_CRUFT)
-+
- dnl add debugging options ...
- changequote(,)dnl
- if test "x$GCC" = xyes; then
-Only in libglade-2.4.0: configure.in.orig
-diff -ur libglade-2.4.0~/glade/glade-gtk.c libglade-2.4.0/glade/glade-gtk.c
---- libglade-2.4.0~/glade/glade-gtk.c 2004-03-13 13:47:35.000000000 +0000
-+++ libglade-2.4.0/glade/glade-gtk.c 2004-07-28 16:53:52.000000000 +0100
-@@ -213,6 +213,8 @@
- gtk_clist_column_titles_hide (GTK_CLIST (w));
- }
-
-+#ifndef DISABLE_CRUFT
-+
- static void
- tree_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -238,6 +240,8 @@
- gtk_tree_set_view_lines (GTK_TREE (w), BOOL (value));
- }
-
-+#endif
-+
- static void
- list_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -254,6 +258,7 @@
- gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (w), BOOL (value));
- }
-
-+#ifndef DISABLE_CRUFT
- static void
- text_set_text (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -262,6 +267,7 @@
-
- gtk_editable_insert_text (GTK_EDITABLE (w), value, -1, &pos);
- }
-+#endif
-
- static void
- radio_menu_item_set_group (GladeXML *xml, GtkWidget *w,
-@@ -1125,13 +1131,17 @@
- glade_register_custom_prop (GTK_TYPE_CLIST, "selection_mode", clist_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CLIST, "shadow_type", clist_set_shadow_type);
- glade_register_custom_prop (GTK_TYPE_CLIST, "show_titles", clist_set_show_titles);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TREE, "selection_mode", tree_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_mode", tree_set_view_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_line", tree_set_view_line);
-+#endif
- glade_register_custom_prop (GTK_TYPE_LIST, "selection_mode", list_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CHECK_MENU_ITEM, "always_show_toggle",
- check_menu_item_set_always_show_toggle);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TEXT, "text", text_set_text);
-+#endif
- glade_register_custom_prop (GTK_TYPE_RADIO_MENU_ITEM, "group",
- radio_menu_item_set_group);
- glade_register_custom_prop (GTK_TYPE_TOOLBAR, "tooltips", toolbar_set_tooltips);
-@@ -1288,8 +1298,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TEAROFF_MENU_ITEM, glade_standard_build_widget,
- NULL, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TEXT, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TEXT_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_TIPS_QUERY, glade_standard_build_widget,
-@@ -1304,8 +1316,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TOOL_BUTTON, glade_standard_build_widget,
- NULL, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TREE, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TREE_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_VBUTTON_BOX, glade_standard_build_widget,
diff --git a/packages/libglade/libglade-2.5.1/glade-cruft.patch b/packages/libglade/libglade-2.5.1/glade-cruft.patch
deleted file mode 100644
index 0fceccf0c4..0000000000
--- a/packages/libglade/libglade-2.5.1/glade-cruft.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-diff -ur libglade-2.4.0~/configure.in libglade-2.4.0/configure.in
---- libglade-2.4.0~/configure.in 2004-05-17 12:38:31.000000000 +0100
-+++ libglade-2.4.0/configure.in 2004-07-28 16:53:09.000000000 +0100
-@@ -147,6 +147,18 @@
- AM_CONDITIONAL(HAVE_PYTHON, $have_python)
- AC_SUBST(PYTHON)
-
-+AC_MSG_CHECKING([for cruft in libgtk])
-+AC_TRY_LINK([
-+#include <gtk/gtk.h>
-+#include <stdio.h>
-+], [ gtk_tree_get_type (); return 0; ],
-+ [ AC_MSG_RESULT(yes)
-+ have_cruft=yes ],
-+ [ AC_MSG_RESULT(no)
-+ AC_DEFINE(DISABLE_CRUFT,,[leave out support for old, broken widgets])
-+ have_cruft=no ])
-+AC_SUBST(DISABLE_CRUFT)
-+
- dnl add debugging options ...
- changequote(,)dnl
- if test "x$GCC" = xyes; then
-Only in libglade-2.4.0: configure.in.orig
-diff -ur libglade-2.4.0~/glade/glade-gtk.c libglade-2.4.0/glade/glade-gtk.c
---- libglade-2.4.0~/glade/glade-gtk.c 2004-03-13 13:47:35.000000000 +0000
-+++ libglade-2.4.0/glade/glade-gtk.c 2004-07-28 16:53:52.000000000 +0100
-@@ -213,6 +213,8 @@
- gtk_clist_column_titles_hide (GTK_CLIST (w));
- }
-
-+#ifndef DISABLE_CRUFT
-+
- static void
- tree_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -238,6 +240,8 @@
- gtk_tree_set_view_lines (GTK_TREE (w), BOOL (value));
- }
-
-+#endif
-+
- static void
- list_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -254,6 +258,7 @@
- gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (w), BOOL (value));
- }
-
-+#ifndef DISABLE_CRUFT
- static void
- text_set_text (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -262,6 +267,7 @@
-
- gtk_editable_insert_text (GTK_EDITABLE (w), value, -1, &pos);
- }
-+#endif
-
- static void
- radio_menu_item_set_group (GladeXML *xml, GtkWidget *w,
-@@ -1125,13 +1131,17 @@
- glade_register_custom_prop (GTK_TYPE_CLIST, "selection_mode", clist_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CLIST, "shadow_type", clist_set_shadow_type);
- glade_register_custom_prop (GTK_TYPE_CLIST, "show_titles", clist_set_show_titles);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TREE, "selection_mode", tree_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_mode", tree_set_view_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_line", tree_set_view_line);
-+#endif
- glade_register_custom_prop (GTK_TYPE_LIST, "selection_mode", list_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CHECK_MENU_ITEM, "always_show_toggle",
- check_menu_item_set_always_show_toggle);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TEXT, "text", text_set_text);
-+#endif
- glade_register_custom_prop (GTK_TYPE_RADIO_MENU_ITEM, "group",
- radio_menu_item_set_group);
- glade_register_custom_prop (GTK_TYPE_TOOLBAR, "tooltips", toolbar_set_tooltips);
-@@ -1288,8 +1298,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TEAROFF_MENU_ITEM, glade_standard_build_widget,
- NULL, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TEXT, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TEXT_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_TIPS_QUERY, glade_standard_build_widget,
-@@ -1304,8 +1316,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TOOL_BUTTON, glade_standard_build_widget,
- NULL, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TREE, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TREE_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_VBUTTON_BOX, glade_standard_build_widget,
diff --git a/packages/libglade/libglade-2.5.1/no-xml2.patch b/packages/libglade/libglade-2.5.1/no-xml2.patch
deleted file mode 100644
index 1c2e215b8d..0000000000
--- a/packages/libglade/libglade-2.5.1/no-xml2.patch
+++ /dev/null
@@ -1,499 +0,0 @@
-diff -urN libglade-2.4.2.orig/configure.in libglade-2.4.2/configure.in
---- libglade-2.4.2.orig/configure.in 2005-02-11 12:42:58.000000000 +0100
-+++ libglade-2.4.2/configure.in 2005-03-22 01:22:00.000000000 +0100
-@@ -52,11 +52,33 @@
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
- PKG_CHECK_MODULES(LIBGLADE, [dnl
-- libxml-2.0 >= required_libxml_version dnl
- atk >= required_atk_version dnl
- gtk+-2.0 >= required_gtk_version dnl
- glib-2.0 >= required_glib_version])
-
-+disable_xml2=no
-+AC_ARG_WITH([libxml2],
-+ AC_HELP_STRING([--without-libxml2], [Don't use libxml2, use Glib's GMarkupParser instead]),
-+ [disable_xml2=yes],
-+ [disable_xml2=no])
-+
-+AC_MSG_CHECKING([if we are using libxml2])
-+if test "x$disable_xml2" == "xno"; then
-+ AC_MSG_RESULT(yes)
-+ PKG_CHECK_MODULES(XML2, libxml-2.0 >= 2.4.10)
-+ PKGCFG_REQUIRE_LIBXML2="libxml-2.0"
-+ LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS $XML2_CFLAGS"
-+ LIBGLADE_LIBS="$LIBGLADE_LIBS $XML2_LIBS"
-+else
-+ LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS -DUSE_GMARKUP_PARSER"
-+ PKGCFG_REQUIRE_LIBXML2=""
-+ AC_MSG_RESULT(no)
-+fi
-+
-+AC_SUBST(XML2_LIBS)
-+AC_SUBST(XML2_CFLAGS)
-+AC_SUBST(PKGCFG_REQUIRE_LIBXML2)
-+
- AC_MSG_CHECKING([for native Win32])
- case "$host" in
- *-*-mingw*)
-@@ -116,6 +138,21 @@
- fi
- fi
-
-+if test "x$disable_xml2" == "xyes"; then
-+ echo "*****************************************************"
-+ echo " You chose to disable libxml2 and use Glib's"
-+ echo " GMarkupParser instead."
-+ echo
-+ echo " Please bear in mind that using libglade with"
-+ echo " GMarkupParser is an experimental feature only."
-+ echo
-+ echo " Please post problems or success stories to"
-+ echo " the glade-devel mailing list. Thank you."
-+ echo "*****************************************************"
-+fi
-+
-+
-+
- GTK_DOC_CHECK(1.0)
-
- dnl gettext stuff ... there is no message catalog for libglade -- libglade
-diff -urN libglade-2.4.2.orig/glade/glade-parser.c libglade-2.4.2/glade/glade-parser.c
---- libglade-2.4.2.orig/glade/glade-parser.c 2004-11-11 11:56:13.000000000 +0100
-+++ libglade-2.4.2/glade/glade-parser.c 2005-03-22 01:20:00.000000000 +0100
-@@ -34,7 +34,15 @@
- # define dgettext(Domain, String) (String)
- #endif
-
--#include <libxml/parser.h>
-+#ifdef USE_GMARKUP_PARSER
-+# include <zlib.h>
-+#else
-+# include <libxml/parser.h>
-+#endif
-+
-+#ifdef USE_GMARKUP_PARSER
-+# define xmlChar gchar
-+#endif
-
- #include "glade-parser.h"
- #include "glade-private.h"
-@@ -508,7 +516,9 @@
- case PARSER_START:
- if (!strcmp(name, "glade-interface")) {
- state->state = PARSER_GLADE_INTERFACE;
--#if 0
-+
-+#ifndef USE_GMARKUP_PARSER
-+ #if 0
- /* check for correct XML namespace */
- for (i = 0; attrs && attrs[i] != NULL; i += 2) {
- if (!strcmp(attrs[i], "xmlns") &&
-@@ -518,7 +528,9 @@
- g_warning("unknown attribute `%s' for <glade-interface>",
- attrs[i]);
- }
-+ #endif
- #endif
-+
- } else {
- g_warning("Expected <glade-interface>. Got <%s>.", name);
- state->prev_state = state->state;
-@@ -1063,12 +1075,18 @@
- }
- }
-
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlEntityPtr
- glade_parser_get_entity(GladeParseState *state, const xmlChar *name)
- {
- return xmlGetPredefinedEntity(name);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_warning(GladeParseState *state, const char *msg, ...)
- {
-@@ -1079,6 +1097,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1089,6 +1111,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_fatal_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1099,6 +1125,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlSAXHandler glade_parser = {
- (internalSubsetSAXFunc)NULL, /* internalSubset */
- (isStandaloneSAXFunc)NULL, /* isStandalone */
-@@ -1126,6 +1156,82 @@
- (fatalErrorSAXFunc)glade_parser_fatal_error, /* fatalError */
- };
-
-+#else /* USE_GMARKUP_PARSER */
-+
-+static void
-+glade_parser_start_element_wrapper(GMarkupParseContext *context,
-+ const gchar *name,
-+ const gchar **attr_names,
-+ const gchar **attr_values,
-+ gpointer state,
-+ GError **error)
-+{
-+ guint i = 0;
-+
-+ /* Pack attribute names/values from two separate
-+ * arrays (GMarkupParser style) into one single
-+ * array (libxml SAXParser style). This is not
-+ * very efficient, but we do it to make the
-+ * GMarkupParser code as little invasive as
-+ * possible. */
-+
-+ while (attr_names[i] != NULL) {
-+ ++i;
-+ }
-+
-+ if (1)
-+ {
-+ const gchar *attr[(i*2)+1];
-+ guint j, k;
-+
-+ for (j=0, k=0; k < i; j += 2)
-+ {
-+ attr[j] = attr_names[k];
-+ attr[j+1] = attr_values[k];
-+ ++k;
-+ }
-+ attr[i*2] = NULL;
-+
-+ glade_parser_start_element((GladeParseState*)state, name, attr);
-+ }
-+}
-+
-+static void
-+glade_parser_end_element_wrapper(GMarkupParseContext *context,
-+ const gchar *name,
-+ gpointer state,
-+ GError **err)
-+{
-+ glade_parser_end_element((GladeParseState*)state, name);
-+}
-+
-+static void
-+glade_parser_characters_wrapper(GMarkupParseContext *context,
-+ const gchar *chars,
-+ gsize len,
-+ gpointer state,
-+ GError **err)
-+{
-+ glade_parser_characters((GladeParseState*)state, chars, (int) len);
-+}
-+
-+static void
-+glade_parser_error(GMarkupParseContext *context, GError *err, gpointer data)
-+{
-+ g_log("Glade-Parser", G_LOG_LEVEL_CRITICAL, "%s", err->message);
-+}
-+
-+static const GMarkupParser glade_parser = {
-+ glade_parser_start_element_wrapper, /* element open */
-+ glade_parser_end_element_wrapper, /* element close */
-+ glade_parser_characters_wrapper, /* text content */
-+ NULL, /* passthrough */
-+ glade_parser_error, /* parse error */
-+};
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- static void
- widget_info_free(GladeWidgetInfo *info)
- {
-@@ -1191,6 +1297,9 @@
- *
- * Returns: the GladeInterface structure for the XML file.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_file(const gchar *file, const gchar *domain)
- {
-@@ -1222,6 +1331,31 @@
- return state.interface;
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+GladeInterface *
-+glade_parser_parse_file(const gchar *file, const gchar *domain)
-+{
-+ GladeInterface *interface;
-+ GError *err = NULL;
-+ gchar *content = NULL;
-+ gsize clen;
-+
-+ if (!g_file_get_contents(file, &content, &clen, &err)) {
-+ g_warning("could not load glade file: %s", err->message);
-+ g_error_free(err);
-+ return NULL;
-+ }
-+
-+ interface = glade_parser_parse_buffer(content, (gint) clen, domain);
-+
-+ g_free(content);
-+
-+ return interface;
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
- /**
- * glade_parser_parse_buffer
- * @buffer: a buffer in memory containing XML data.
-@@ -1237,6 +1371,9 @@
- *
- * Returns: the GladeInterface structure for the XML buffer.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
- {
-@@ -1263,6 +1400,161 @@
- return state.interface;
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+
-+static GladeInterface *
-+glade_parser_parse_buffer_internal(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ GMarkupParseContext *context;
-+ GladeParseState state = { 0 };
-+ GError *err = NULL;
-+
-+ state.interface = NULL;
-+ if (domain)
-+ state.domain = domain;
-+ else
-+ state.domain = textdomain(NULL);
-+
-+ /* FIXME: This strstr() is not safe, as it ignores the len
-+ * argument and assumes the buffer is NUL-terminated */
-+ if (strstr(buffer, "<?xml") == NULL) {
-+ g_warning("No XML header found in document!");
-+ return NULL;
-+ }
-+
-+ context = g_markup_parse_context_new(&glade_parser, (GMarkupParseFlags) 0, &state, NULL);
-+
-+ glade_parser_start_document(&state);
-+
-+ if (!g_markup_parse_context_parse(context, buffer, (gssize) len, &err)) {
-+ g_warning("document not well formed: %s", err->message);
-+ g_error_free(err);
-+ if (state.interface)
-+ glade_interface_destroy (state.interface);
-+ return NULL;
-+ }
-+
-+ glade_parser_end_document(&state);
-+
-+ if (state.state != PARSER_FINISH) {
-+ g_warning("did not finish in PARSER_FINISH state!");
-+
-+ if (state.interface)
-+ glade_interface_destroy(state.interface);
-+
-+ return NULL;
-+ }
-+
-+ return state.interface;
-+}
-+
-+struct _gzip_rfc1952_hdr
-+{
-+ guint8 id1, id2, cm, flags;
-+ guint32 mtime;
-+ guint8 xflags;
-+ guint8 os;
-+};
-+
-+static GladeInterface *
-+glade_parser_parse_gzipped_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ struct _gzip_rfc1952_hdr *hdr = (struct _gzip_rfc1952_hdr*)buffer;
-+ struct z_stream_s zstream;
-+ GladeInterface *interface;
-+ const guint8 *cbuf; /* start of compressed data */
-+ guint8 *decompress_buf;
-+ gulong decompress_len = 0;
-+ gint ret;
-+
-+ g_assert(hdr != NULL && hdr->id1 == 0x1f && hdr->id2 == 0x8b);
-+
-+ if (hdr->cm != Z_DEFLATED) {
-+ g_warning("Unknown decompression method %u", (guint) hdr->cm);
-+ return NULL;
-+ }
-+
-+ /* Uncompressed size (modulo 2^32) is last
-+ * 4 bytes of gzipped file, and little endian.
-+ * See RFC 1952 */
-+ decompress_len = GUINT32_FROM_LE(*((guint32*)(((guint8*)buffer) + len - 4)));
-+
-+ /* paranoid mode: glade files > 5MB are unlikely */
-+ g_return_val_if_fail(decompress_len < 5*1024*1024, NULL);
-+
-+ decompress_buf = g_malloc0(decompress_len + 1); /* +1 for NUL-terminator */
-+
-+ /* find start of compressed data, skipping header stuff */
-+ cbuf = (guint8*)buffer + 10;
-+ if (hdr->flags & 0x04) {
-+ guint16 xlen = GUINT16_FROM_LE(*((guint16*)cbuf));
-+ cbuf += xlen + 2;
-+ }
-+ if (hdr->flags & 0x08) {
-+ guint16 onamelen = strlen(cbuf);
-+ cbuf += onamelen + 1;
-+ }
-+ if (hdr->flags & 0x10) {
-+ guint16 commentlen = strlen(cbuf);
-+ cbuf += commentlen + 1;
-+ }
-+ if (hdr->flags & 0x02)
-+ {
-+ cbuf += 2; /* skip header CRC16 */
-+ }
-+
-+ zstream.next_in = (void*)cbuf;
-+ zstream.avail_in = (uLongf) len - ((void*)cbuf-(void*)buffer) - 4 - 4 +1;
-+ zstream.next_out = decompress_buf;
-+ zstream.avail_out= decompress_len;
-+ zstream.zalloc = Z_NULL;
-+ zstream.zfree = Z_NULL;
-+ zstream.opaque = Z_NULL;
-+
-+ ret = inflateInit2(&zstream, -MAX_WBITS);
-+
-+ if (ret != Z_OK) {
-+ g_warning("inflateInit2() failed. zlib error code: %d", ret);
-+ g_free(decompress_buf);
-+ return NULL;
-+ }
-+
-+ ret = inflate(&zstream, Z_FINISH);
-+
-+ if (ret != Z_STREAM_END) {
-+ g_warning("zlib decompression failed. zlib error code: %d", ret);
-+ g_free(decompress_buf);
-+ return NULL;
-+ }
-+
-+ interface = glade_parser_parse_buffer_internal(decompress_buf, decompress_len, domain);
-+
-+ g_free(decompress_buf);
-+
-+ return interface;
-+}
-+
-+GladeInterface *
-+glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ g_return_val_if_fail(buffer != NULL, NULL);
-+ g_return_val_if_fail(len > 0, NULL);
-+
-+ /* Check if buffer is gzipped */
-+ if (buffer[0] == 0x1f && buffer[1] == (gchar)0x8b) {
-+ return glade_parser_parse_gzipped_buffer(buffer, len, domain);
-+ }
-+
-+ /* Buffer is cleartext. */
-+ return glade_parser_parse_buffer_internal(buffer, len, domain);
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- dump_widget(xmlNode *parent, GladeWidgetInfo *info, gint indent)
- {
-@@ -1382,6 +1674,8 @@
- xmlNodeAddContent(widget, " ");
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
- /**
- * glade_interface_dump
- * @interface: the GladeInterface
-@@ -1390,6 +1684,9 @@
- * This function dumps the contents of a GladeInterface into a file as
- * XML. It is intended mainly as a debugging tool.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- void
- glade_interface_dump(GladeInterface *interface, const gchar *filename)
- {
-@@ -1428,6 +1725,17 @@
- xmlFreeDoc(doc);
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+void
-+glade_interface_dump(GladeInterface *interface, const gchar *filename)
-+{
-+ g_warning("glade_interface_dump() is only available with libxml2.");
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- #if 0
- int
- main(int argc, char **argv) {
-diff -urN libglade-2.4.2.orig/libglade-2.0.pc.in libglade-2.4.2/libglade-2.0.pc.in
---- libglade-2.4.2.orig/libglade-2.0.pc.in 2001-12-12 15:28:23.000000000 +0100
-+++ libglade-2.4.2/libglade-2.0.pc.in 2005-03-22 01:20:00.000000000 +0100
-@@ -11,7 +11,7 @@
- Name: Libglade
- Description: a library for dynamically loading GLADE interface files
- Version: @VERSION@
--Requires: gtk+-2.0 libxml-2.0
-+Requires: gtk+-2.0 @PKGCFG_REQUIRE_LIBXML2@
- Libs: -L${libdir} -lglade-2.0
- Cflags: -I${includedir}/libglade-2.0
-
diff --git a/packages/libglade/libglade-2.6.2/glade-cruft.patch b/packages/libglade/libglade-2.6.2/glade-cruft.patch
deleted file mode 100644
index 0fceccf0c4..0000000000
--- a/packages/libglade/libglade-2.6.2/glade-cruft.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-diff -ur libglade-2.4.0~/configure.in libglade-2.4.0/configure.in
---- libglade-2.4.0~/configure.in 2004-05-17 12:38:31.000000000 +0100
-+++ libglade-2.4.0/configure.in 2004-07-28 16:53:09.000000000 +0100
-@@ -147,6 +147,18 @@
- AM_CONDITIONAL(HAVE_PYTHON, $have_python)
- AC_SUBST(PYTHON)
-
-+AC_MSG_CHECKING([for cruft in libgtk])
-+AC_TRY_LINK([
-+#include <gtk/gtk.h>
-+#include <stdio.h>
-+], [ gtk_tree_get_type (); return 0; ],
-+ [ AC_MSG_RESULT(yes)
-+ have_cruft=yes ],
-+ [ AC_MSG_RESULT(no)
-+ AC_DEFINE(DISABLE_CRUFT,,[leave out support for old, broken widgets])
-+ have_cruft=no ])
-+AC_SUBST(DISABLE_CRUFT)
-+
- dnl add debugging options ...
- changequote(,)dnl
- if test "x$GCC" = xyes; then
-Only in libglade-2.4.0: configure.in.orig
-diff -ur libglade-2.4.0~/glade/glade-gtk.c libglade-2.4.0/glade/glade-gtk.c
---- libglade-2.4.0~/glade/glade-gtk.c 2004-03-13 13:47:35.000000000 +0000
-+++ libglade-2.4.0/glade/glade-gtk.c 2004-07-28 16:53:52.000000000 +0100
-@@ -213,6 +213,8 @@
- gtk_clist_column_titles_hide (GTK_CLIST (w));
- }
-
-+#ifndef DISABLE_CRUFT
-+
- static void
- tree_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -238,6 +240,8 @@
- gtk_tree_set_view_lines (GTK_TREE (w), BOOL (value));
- }
-
-+#endif
-+
- static void
- list_set_selection_mode (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -254,6 +258,7 @@
- gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (w), BOOL (value));
- }
-
-+#ifndef DISABLE_CRUFT
- static void
- text_set_text (GladeXML *xml, GtkWidget *w,
- const char *name, const char *value)
-@@ -262,6 +267,7 @@
-
- gtk_editable_insert_text (GTK_EDITABLE (w), value, -1, &pos);
- }
-+#endif
-
- static void
- radio_menu_item_set_group (GladeXML *xml, GtkWidget *w,
-@@ -1125,13 +1131,17 @@
- glade_register_custom_prop (GTK_TYPE_CLIST, "selection_mode", clist_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CLIST, "shadow_type", clist_set_shadow_type);
- glade_register_custom_prop (GTK_TYPE_CLIST, "show_titles", clist_set_show_titles);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TREE, "selection_mode", tree_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_mode", tree_set_view_mode);
- glade_register_custom_prop (GTK_TYPE_TREE, "view_line", tree_set_view_line);
-+#endif
- glade_register_custom_prop (GTK_TYPE_LIST, "selection_mode", list_set_selection_mode);
- glade_register_custom_prop (GTK_TYPE_CHECK_MENU_ITEM, "always_show_toggle",
- check_menu_item_set_always_show_toggle);
-+#ifndef DISABLE_CRUFT
- glade_register_custom_prop (GTK_TYPE_TEXT, "text", text_set_text);
-+#endif
- glade_register_custom_prop (GTK_TYPE_RADIO_MENU_ITEM, "group",
- radio_menu_item_set_group);
- glade_register_custom_prop (GTK_TYPE_TOOLBAR, "tooltips", toolbar_set_tooltips);
-@@ -1288,8 +1298,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TEAROFF_MENU_ITEM, glade_standard_build_widget,
- NULL, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TEXT, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TEXT_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_TIPS_QUERY, glade_standard_build_widget,
-@@ -1304,8 +1316,10 @@
- glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TOOL_BUTTON, glade_standard_build_widget,
- NULL, NULL);
-+#ifndef DISABLE_CRUFT
- glade_register_widget (GTK_TYPE_TREE, glade_standard_build_widget,
- NULL, NULL);
-+#endif
- glade_register_widget (GTK_TYPE_TREE_VIEW, glade_standard_build_widget,
- NULL, NULL);
- glade_register_widget (GTK_TYPE_VBUTTON_BOX, glade_standard_build_widget,
diff --git a/packages/libglade/libglade-2.6.2/no-xml2.patch b/packages/libglade/libglade-2.6.2/no-xml2.patch
deleted file mode 100644
index 1c2e215b8d..0000000000
--- a/packages/libglade/libglade-2.6.2/no-xml2.patch
+++ /dev/null
@@ -1,499 +0,0 @@
-diff -urN libglade-2.4.2.orig/configure.in libglade-2.4.2/configure.in
---- libglade-2.4.2.orig/configure.in 2005-02-11 12:42:58.000000000 +0100
-+++ libglade-2.4.2/configure.in 2005-03-22 01:22:00.000000000 +0100
-@@ -52,11 +52,33 @@
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
- PKG_CHECK_MODULES(LIBGLADE, [dnl
-- libxml-2.0 >= required_libxml_version dnl
- atk >= required_atk_version dnl
- gtk+-2.0 >= required_gtk_version dnl
- glib-2.0 >= required_glib_version])
-
-+disable_xml2=no
-+AC_ARG_WITH([libxml2],
-+ AC_HELP_STRING([--without-libxml2], [Don't use libxml2, use Glib's GMarkupParser instead]),
-+ [disable_xml2=yes],
-+ [disable_xml2=no])
-+
-+AC_MSG_CHECKING([if we are using libxml2])
-+if test "x$disable_xml2" == "xno"; then
-+ AC_MSG_RESULT(yes)
-+ PKG_CHECK_MODULES(XML2, libxml-2.0 >= 2.4.10)
-+ PKGCFG_REQUIRE_LIBXML2="libxml-2.0"
-+ LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS $XML2_CFLAGS"
-+ LIBGLADE_LIBS="$LIBGLADE_LIBS $XML2_LIBS"
-+else
-+ LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS -DUSE_GMARKUP_PARSER"
-+ PKGCFG_REQUIRE_LIBXML2=""
-+ AC_MSG_RESULT(no)
-+fi
-+
-+AC_SUBST(XML2_LIBS)
-+AC_SUBST(XML2_CFLAGS)
-+AC_SUBST(PKGCFG_REQUIRE_LIBXML2)
-+
- AC_MSG_CHECKING([for native Win32])
- case "$host" in
- *-*-mingw*)
-@@ -116,6 +138,21 @@
- fi
- fi
-
-+if test "x$disable_xml2" == "xyes"; then
-+ echo "*****************************************************"
-+ echo " You chose to disable libxml2 and use Glib's"
-+ echo " GMarkupParser instead."
-+ echo
-+ echo " Please bear in mind that using libglade with"
-+ echo " GMarkupParser is an experimental feature only."
-+ echo
-+ echo " Please post problems or success stories to"
-+ echo " the glade-devel mailing list. Thank you."
-+ echo "*****************************************************"
-+fi
-+
-+
-+
- GTK_DOC_CHECK(1.0)
-
- dnl gettext stuff ... there is no message catalog for libglade -- libglade
-diff -urN libglade-2.4.2.orig/glade/glade-parser.c libglade-2.4.2/glade/glade-parser.c
---- libglade-2.4.2.orig/glade/glade-parser.c 2004-11-11 11:56:13.000000000 +0100
-+++ libglade-2.4.2/glade/glade-parser.c 2005-03-22 01:20:00.000000000 +0100
-@@ -34,7 +34,15 @@
- # define dgettext(Domain, String) (String)
- #endif
-
--#include <libxml/parser.h>
-+#ifdef USE_GMARKUP_PARSER
-+# include <zlib.h>
-+#else
-+# include <libxml/parser.h>
-+#endif
-+
-+#ifdef USE_GMARKUP_PARSER
-+# define xmlChar gchar
-+#endif
-
- #include "glade-parser.h"
- #include "glade-private.h"
-@@ -508,7 +516,9 @@
- case PARSER_START:
- if (!strcmp(name, "glade-interface")) {
- state->state = PARSER_GLADE_INTERFACE;
--#if 0
-+
-+#ifndef USE_GMARKUP_PARSER
-+ #if 0
- /* check for correct XML namespace */
- for (i = 0; attrs && attrs[i] != NULL; i += 2) {
- if (!strcmp(attrs[i], "xmlns") &&
-@@ -518,7 +528,9 @@
- g_warning("unknown attribute `%s' for <glade-interface>",
- attrs[i]);
- }
-+ #endif
- #endif
-+
- } else {
- g_warning("Expected <glade-interface>. Got <%s>.", name);
- state->prev_state = state->state;
-@@ -1063,12 +1075,18 @@
- }
- }
-
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlEntityPtr
- glade_parser_get_entity(GladeParseState *state, const xmlChar *name)
- {
- return xmlGetPredefinedEntity(name);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_warning(GladeParseState *state, const char *msg, ...)
- {
-@@ -1079,6 +1097,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1089,6 +1111,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_fatal_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1099,6 +1125,10 @@
- va_end(args);
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlSAXHandler glade_parser = {
- (internalSubsetSAXFunc)NULL, /* internalSubset */
- (isStandaloneSAXFunc)NULL, /* isStandalone */
-@@ -1126,6 +1156,82 @@
- (fatalErrorSAXFunc)glade_parser_fatal_error, /* fatalError */
- };
-
-+#else /* USE_GMARKUP_PARSER */
-+
-+static void
-+glade_parser_start_element_wrapper(GMarkupParseContext *context,
-+ const gchar *name,
-+ const gchar **attr_names,
-+ const gchar **attr_values,
-+ gpointer state,
-+ GError **error)
-+{
-+ guint i = 0;
-+
-+ /* Pack attribute names/values from two separate
-+ * arrays (GMarkupParser style) into one single
-+ * array (libxml SAXParser style). This is not
-+ * very efficient, but we do it to make the
-+ * GMarkupParser code as little invasive as
-+ * possible. */
-+
-+ while (attr_names[i] != NULL) {
-+ ++i;
-+ }
-+
-+ if (1)
-+ {
-+ const gchar *attr[(i*2)+1];
-+ guint j, k;
-+
-+ for (j=0, k=0; k < i; j += 2)
-+ {
-+ attr[j] = attr_names[k];
-+ attr[j+1] = attr_values[k];
-+ ++k;
-+ }
-+ attr[i*2] = NULL;
-+
-+ glade_parser_start_element((GladeParseState*)state, name, attr);
-+ }
-+}
-+
-+static void
-+glade_parser_end_element_wrapper(GMarkupParseContext *context,
-+ const gchar *name,
-+ gpointer state,
-+ GError **err)
-+{
-+ glade_parser_end_element((GladeParseState*)state, name);
-+}
-+
-+static void
-+glade_parser_characters_wrapper(GMarkupParseContext *context,
-+ const gchar *chars,
-+ gsize len,
-+ gpointer state,
-+ GError **err)
-+{
-+ glade_parser_characters((GladeParseState*)state, chars, (int) len);
-+}
-+
-+static void
-+glade_parser_error(GMarkupParseContext *context, GError *err, gpointer data)
-+{
-+ g_log("Glade-Parser", G_LOG_LEVEL_CRITICAL, "%s", err->message);
-+}
-+
-+static const GMarkupParser glade_parser = {
-+ glade_parser_start_element_wrapper, /* element open */
-+ glade_parser_end_element_wrapper, /* element close */
-+ glade_parser_characters_wrapper, /* text content */
-+ NULL, /* passthrough */
-+ glade_parser_error, /* parse error */
-+};
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- static void
- widget_info_free(GladeWidgetInfo *info)
- {
-@@ -1191,6 +1297,9 @@
- *
- * Returns: the GladeInterface structure for the XML file.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_file(const gchar *file, const gchar *domain)
- {
-@@ -1222,6 +1331,31 @@
- return state.interface;
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+GladeInterface *
-+glade_parser_parse_file(const gchar *file, const gchar *domain)
-+{
-+ GladeInterface *interface;
-+ GError *err = NULL;
-+ gchar *content = NULL;
-+ gsize clen;
-+
-+ if (!g_file_get_contents(file, &content, &clen, &err)) {
-+ g_warning("could not load glade file: %s", err->message);
-+ g_error_free(err);
-+ return NULL;
-+ }
-+
-+ interface = glade_parser_parse_buffer(content, (gint) clen, domain);
-+
-+ g_free(content);
-+
-+ return interface;
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
- /**
- * glade_parser_parse_buffer
- * @buffer: a buffer in memory containing XML data.
-@@ -1237,6 +1371,9 @@
- *
- * Returns: the GladeInterface structure for the XML buffer.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
- {
-@@ -1263,6 +1400,161 @@
- return state.interface;
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+
-+static GladeInterface *
-+glade_parser_parse_buffer_internal(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ GMarkupParseContext *context;
-+ GladeParseState state = { 0 };
-+ GError *err = NULL;
-+
-+ state.interface = NULL;
-+ if (domain)
-+ state.domain = domain;
-+ else
-+ state.domain = textdomain(NULL);
-+
-+ /* FIXME: This strstr() is not safe, as it ignores the len
-+ * argument and assumes the buffer is NUL-terminated */
-+ if (strstr(buffer, "<?xml") == NULL) {
-+ g_warning("No XML header found in document!");
-+ return NULL;
-+ }
-+
-+ context = g_markup_parse_context_new(&glade_parser, (GMarkupParseFlags) 0, &state, NULL);
-+
-+ glade_parser_start_document(&state);
-+
-+ if (!g_markup_parse_context_parse(context, buffer, (gssize) len, &err)) {
-+ g_warning("document not well formed: %s", err->message);
-+ g_error_free(err);
-+ if (state.interface)
-+ glade_interface_destroy (state.interface);
-+ return NULL;
-+ }
-+
-+ glade_parser_end_document(&state);
-+
-+ if (state.state != PARSER_FINISH) {
-+ g_warning("did not finish in PARSER_FINISH state!");
-+
-+ if (state.interface)
-+ glade_interface_destroy(state.interface);
-+
-+ return NULL;
-+ }
-+
-+ return state.interface;
-+}
-+
-+struct _gzip_rfc1952_hdr
-+{
-+ guint8 id1, id2, cm, flags;
-+ guint32 mtime;
-+ guint8 xflags;
-+ guint8 os;
-+};
-+
-+static GladeInterface *
-+glade_parser_parse_gzipped_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ struct _gzip_rfc1952_hdr *hdr = (struct _gzip_rfc1952_hdr*)buffer;
-+ struct z_stream_s zstream;
-+ GladeInterface *interface;
-+ const guint8 *cbuf; /* start of compressed data */
-+ guint8 *decompress_buf;
-+ gulong decompress_len = 0;
-+ gint ret;
-+
-+ g_assert(hdr != NULL && hdr->id1 == 0x1f && hdr->id2 == 0x8b);
-+
-+ if (hdr->cm != Z_DEFLATED) {
-+ g_warning("Unknown decompression method %u", (guint) hdr->cm);
-+ return NULL;
-+ }
-+
-+ /* Uncompressed size (modulo 2^32) is last
-+ * 4 bytes of gzipped file, and little endian.
-+ * See RFC 1952 */
-+ decompress_len = GUINT32_FROM_LE(*((guint32*)(((guint8*)buffer) + len - 4)));
-+
-+ /* paranoid mode: glade files > 5MB are unlikely */
-+ g_return_val_if_fail(decompress_len < 5*1024*1024, NULL);
-+
-+ decompress_buf = g_malloc0(decompress_len + 1); /* +1 for NUL-terminator */
-+
-+ /* find start of compressed data, skipping header stuff */
-+ cbuf = (guint8*)buffer + 10;
-+ if (hdr->flags & 0x04) {
-+ guint16 xlen = GUINT16_FROM_LE(*((guint16*)cbuf));
-+ cbuf += xlen + 2;
-+ }
-+ if (hdr->flags & 0x08) {
-+ guint16 onamelen = strlen(cbuf);
-+ cbuf += onamelen + 1;
-+ }
-+ if (hdr->flags & 0x10) {
-+ guint16 commentlen = strlen(cbuf);
-+ cbuf += commentlen + 1;
-+ }
-+ if (hdr->flags & 0x02)
-+ {
-+ cbuf += 2; /* skip header CRC16 */
-+ }
-+
-+ zstream.next_in = (void*)cbuf;
-+ zstream.avail_in = (uLongf) len - ((void*)cbuf-(void*)buffer) - 4 - 4 +1;
-+ zstream.next_out = decompress_buf;
-+ zstream.avail_out= decompress_len;
-+ zstream.zalloc = Z_NULL;
-+ zstream.zfree = Z_NULL;
-+ zstream.opaque = Z_NULL;
-+
-+ ret = inflateInit2(&zstream, -MAX_WBITS);
-+
-+ if (ret != Z_OK) {
-+ g_warning("inflateInit2() failed. zlib error code: %d", ret);
-+ g_free(decompress_buf);
-+ return NULL;
-+ }
-+
-+ ret = inflate(&zstream, Z_FINISH);
-+
-+ if (ret != Z_STREAM_END) {
-+ g_warning("zlib decompression failed. zlib error code: %d", ret);
-+ g_free(decompress_buf);
-+ return NULL;
-+ }
-+
-+ interface = glade_parser_parse_buffer_internal(decompress_buf, decompress_len, domain);
-+
-+ g_free(decompress_buf);
-+
-+ return interface;
-+}
-+
-+GladeInterface *
-+glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+ g_return_val_if_fail(buffer != NULL, NULL);
-+ g_return_val_if_fail(len > 0, NULL);
-+
-+ /* Check if buffer is gzipped */
-+ if (buffer[0] == 0x1f && buffer[1] == (gchar)0x8b) {
-+ return glade_parser_parse_gzipped_buffer(buffer, len, domain);
-+ }
-+
-+ /* Buffer is cleartext. */
-+ return glade_parser_parse_buffer_internal(buffer, len, domain);
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- dump_widget(xmlNode *parent, GladeWidgetInfo *info, gint indent)
- {
-@@ -1382,6 +1674,8 @@
- xmlNodeAddContent(widget, " ");
- }
-
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
- /**
- * glade_interface_dump
- * @interface: the GladeInterface
-@@ -1390,6 +1684,9 @@
- * This function dumps the contents of a GladeInterface into a file as
- * XML. It is intended mainly as a debugging tool.
- */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- void
- glade_interface_dump(GladeInterface *interface, const gchar *filename)
- {
-@@ -1428,6 +1725,17 @@
- xmlFreeDoc(doc);
- }
-
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+void
-+glade_interface_dump(GladeInterface *interface, const gchar *filename)
-+{
-+ g_warning("glade_interface_dump() is only available with libxml2.");
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- #if 0
- int
- main(int argc, char **argv) {
-diff -urN libglade-2.4.2.orig/libglade-2.0.pc.in libglade-2.4.2/libglade-2.0.pc.in
---- libglade-2.4.2.orig/libglade-2.0.pc.in 2001-12-12 15:28:23.000000000 +0100
-+++ libglade-2.4.2/libglade-2.0.pc.in 2005-03-22 01:20:00.000000000 +0100
-@@ -11,7 +11,7 @@
- Name: Libglade
- Description: a library for dynamically loading GLADE interface files
- Version: @VERSION@
--Requires: gtk+-2.0 libxml-2.0
-+Requires: gtk+-2.0 @PKGCFG_REQUIRE_LIBXML2@
- Libs: -L${libdir} -lglade-2.0
- Cflags: -I${includedir}/libglade-2.0
-
diff --git a/packages/libglade/libglade.inc b/packages/libglade/libglade.inc
new file mode 100644
index 0000000000..2aa5df7c95
--- /dev/null
+++ b/packages/libglade/libglade.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "Runtime support for GTK interface builder"
+HOMEPAGE = "http://glade.gnome.org/"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "gtk+ gtk-doc"
+
+inherit autotools pkgconfig
+
+headers = "glade-build.h glade-init.h glade-parser.h glade-xml.h glade.h"
+
+do_stage () {
+ oe_libinstall -a -so -C glade libglade-2.0 ${STAGING_LIBDIR}
+
+ mkdir -p ${STAGING_INCDIR}/libglade-2.0/glade
+ for i in ${headers}; do
+ install -m 0644 ${S}/glade/$i ${STAGING_INCDIR}/libglade-2.0/glade/$i
+ done
+}
+
+PACKAGES += " ${PN}-data"
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-data = "${datadir}/xml/libglade/glade-2.0.dtd"
+FILES_${PN}-dev += "${bindir}/libglade-convert"
+#RDEPENDS_${PN} = "${PN}-data"
diff --git a/packages/libglade/libglade_2.0.1.bb b/packages/libglade/libglade_2.0.1.bb
index 535396c5a0..ea7446b092 100644
--- a/packages/libglade/libglade_2.0.1.bb
+++ b/packages/libglade/libglade_2.0.1.bb
@@ -1,27 +1,13 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Runtime support for GTK interface builder"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "libxml2 gtk+"
+require libglade.inc
+
+PR = "r1"
+DEPENDS += "libxml2"
SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/libglade/2.0/libglade-${PV}.tar.bz2 \
file://glade-cruft.patch;patch=1;pnum=0 \
file://gtk-2.0.m4"
-inherit autotools pkgconfig
-
-headers = "glade-build.h glade-init.h glade-parser.h glade-xml.h glade.h"
-
do_configure_prepend() {
install -d m4
install ${WORKDIR}/gtk-2.0.m4 m4/
}
-
-do_stage () {
- oe_libinstall -a -so -C glade libglade-2.0 ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/libglade-2.0/glade
- for i in ${headers}; do
- install -m 0644 ${S}/glade/$i ${STAGING_INCDIR}/libglade-2.0/glade/$i
- done
-}
diff --git a/packages/libglade/libglade_2.4.0.bb b/packages/libglade/libglade_2.4.0.bb
index f1d76b737d..774331719e 100644
--- a/packages/libglade/libglade_2.4.0.bb
+++ b/packages/libglade/libglade_2.4.0.bb
@@ -1,30 +1,9 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Runtime support for GTK interface builder"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "gtk+ gtk-doc"
+require libglade.inc
-inherit autotools pkgconfig gnome
+PR = "r3"
-PR = "r2"
+inherit gnome
SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1"
EXTRA_OECONF += "--without-libxml2"
-
-PACKAGES += " ${PN}-data"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-data = "${datadir}/xml/libglade/glade-2.0.dtd"
-FILES_${PN}-dev += "${bindir}/libglade-convert"
-#RDEPENDS_${PN} = "${PN}-data"
-
-headers = "glade-build.h glade-init.h glade-parser.h glade-xml.h glade.h"
-
-do_stage () {
- oe_libinstall -a -so -C glade libglade-2.0 ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/libglade-2.0/glade
- for i in ${headers}; do
- install -m 0644 ${S}/glade/$i ${STAGING_INCDIR}/libglade-2.0/glade/$i
- done
-}
diff --git a/packages/libglade/libglade_2.4.2.bb b/packages/libglade/libglade_2.4.2.bb
index dce7e5618d..1565563cdf 100644
--- a/packages/libglade/libglade_2.4.2.bb
+++ b/packages/libglade/libglade_2.4.2.bb
@@ -1,32 +1,11 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Runtime support for GTK interface builder"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "gtk+ gtk-doc"
+require libglade.inc
-inherit autotools pkgconfig gnome
+PR = "r1"
-PR = "r0"
+inherit gnome
SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1"
EXTRA_OECONF += "--without-libxml2"
LDFLAGS += "-lz"
-
-PACKAGES += " ${PN}-data"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-data = "${datadir}/xml/libglade/glade-2.0.dtd"
-FILES_${PN}-dev += "${bindir}/libglade-convert"
-#RDEPENDS_${PN} = "${PN}-data"
-
-headers = "glade-build.h glade-init.h glade-parser.h glade-xml.h glade.h"
-
-do_stage () {
- oe_libinstall -a -so -C glade libglade-2.0 ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/libglade-2.0/glade
- for i in ${headers}; do
- install -m 0644 ${S}/glade/$i ${STAGING_INCDIR}/libglade-2.0/glade/$i
- done
-}
diff --git a/packages/libglade/libglade_2.5.1.bb b/packages/libglade/libglade_2.5.1.bb
index 8d43bc412e..bf6825e03a 100644
--- a/packages/libglade/libglade_2.5.1.bb
+++ b/packages/libglade/libglade_2.5.1.bb
@@ -1,12 +1,8 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Runtime support for GTK interface builder"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "gtk+ gtk-doc"
+require libglade.inc
-inherit autotools pkgconfig gnome
+PR = "r2"
-PR = "r1"
+inherit gnome
SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1 \
file://no-deprecation.patch;patch=1"
@@ -14,20 +10,3 @@ SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1 \
EXTRA_OECONF += "--without-libxml2"
LDFLAGS += "-lz"
-
-PACKAGES += " ${PN}-data"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-data = "${datadir}/xml/libglade/glade-2.0.dtd"
-FILES_${PN}-dev += "${bindir}/libglade-convert"
-#RDEPENDS_${PN} = "${PN}-data"
-
-headers = "glade-build.h glade-init.h glade-parser.h glade-xml.h glade.h"
-
-do_stage () {
- oe_libinstall -a -so -C glade libglade-2.0 ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/libglade-2.0/glade
- for i in ${headers}; do
- install -m 0644 ${S}/glade/$i ${STAGING_INCDIR}/libglade-2.0/glade/$i
- done
-}
diff --git a/packages/libglade/libglade_2.6.2.bb b/packages/libglade/libglade_2.6.2.bb
index f0450e644d..dace1d3f31 100644
--- a/packages/libglade/libglade_2.6.2.bb
+++ b/packages/libglade/libglade_2.6.2.bb
@@ -1,32 +1,11 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Runtime support for GTK interface builder"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "gtk+ gtk-doc"
+require libglade.inc
-inherit autotools pkgconfig gnome
+PR = "r2"
-PR = "r1"
+inherit gnome
SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1"
EXTRA_OECONF += "--without-libxml2"
LDFLAGS += "-lz"
-
-PACKAGES += " ${PN}-data"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-data = "${datadir}/xml/libglade/glade-2.0.dtd"
-FILES_${PN}-dev += "${bindir}/libglade-convert"
-#RDEPENDS_${PN} = "${PN}-data"
-
-headers = "glade-build.h glade-init.h glade-parser.h glade-xml.h glade.h"
-
-do_stage () {
- oe_libinstall -a -so -C glade libglade-2.0 ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/libglade-2.0/glade
- for i in ${headers}; do
- install -m 0644 ${S}/glade/$i ${STAGING_INCDIR}/libglade-2.0/glade/$i
- done
-}
diff --git a/packages/libgsm/libgsm_1.0.10.bb b/packages/libgsm/libgsm_1.0.10.bb
index 0a86bd0bb4..93d042ed36 100644
--- a/packages/libgsm/libgsm_1.0.10.bb
+++ b/packages/libgsm/libgsm_1.0.10.bb
@@ -3,10 +3,13 @@ SECTION = "libs"
PRIORITY = "optional"
#DEPENDS = ""
LICENSE = "libgsm"
+
+PR = "r1"
+
inherit pkgconfig gpe
SRC_URI = "http://www.netsw.org/audio/convert/gsm-${PV}.tar.gz \
- file://${FILESDIR}/libgsm_patch;patch=1;pnum=0"
+ file://${FILESDIR}/libgsm_patch;patch=1;pnum=0"
S = "${WORKDIR}/gsm-1.0-pl10/"
@@ -14,13 +17,14 @@ headers = "gsm.h"
do_stage () {
oe_libinstall -a -C lib libgsm ${STAGING_LIBDIR}
- mkdir -p ${STAGING_INCDIR}/gsm
- for h in ${headers}; do
- install -m 0644 ${S}/inc/$h ${STAGING_INCDIR}/gsm/$h
- done
+ mkdir -p ${STAGING_INCDIR}/gsm
+ for h in ${headers}; do
+ install -m 0644 ${S}/inc/$h ${STAGING_INCDIR}/gsm/$h
+ done
+ ln -s ${STAGING_INCDIR}/gsm/gsm.h ${STAGING_INCDIR}/gsm.h
}
#do_install () {
-# gpe_do_install
-# oe_runmake PREFIX=${prefix} DESTDIR=${D} install-devel
+# gpe_do_install
+# oe_runmake PREFIX=${prefix} DESTDIR=${D} install-devel
#}
diff --git a/packages/dbus/dbus-glib-native/.mtn2git_empty b/packages/libjson/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/dbus/dbus-glib-native/.mtn2git_empty
+++ b/packages/libjson/.mtn2git_empty
diff --git a/packages/libjson/libjson_0.6.bb b/packages/libjson/libjson_0.6.bb
new file mode 100644
index 0000000000..4c93e82a0b
--- /dev/null
+++ b/packages/libjson/libjson_0.6.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "A library for parsing and creating JSON files"
+HOMEPAGE = "http://oss.metaparadigm.com/json-c/"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "BSD"
+PR = "r0"
+
+SRC_URI = "http://oss.metaparadigm.com/json-c/json-c-${PV}.tar.gz"
+S = "${WORKDIR}/json-c-${PV}"
+
+inherit autotools
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/dbus/dbus/.mtn2git_empty b/packages/libmad/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/dbus/dbus/.mtn2git_empty
+++ b/packages/libmad/files/.mtn2git_empty
diff --git a/packages/libmad/files/libmad-0.15.1b-avr32-optimization.patch b/packages/libmad/files/libmad-0.15.1b-avr32-optimization.patch
new file mode 100644
index 0000000000..b74eea3225
--- /dev/null
+++ b/packages/libmad/files/libmad-0.15.1b-avr32-optimization.patch
@@ -0,0 +1,2922 @@
+diff --git a/bit.c b/bit.c
+index c2bfb24..262ce3a 100644
+--- a/bit.c
++++ b/bit.c
+@@ -25,12 +25,6 @@
+
+ # include "global.h"
+
+-# ifdef HAVE_LIMITS_H
+-# include <limits.h>
+-# else
+-# define CHAR_BIT 8
+-# endif
+-
+ # include "bit.h"
+
+ /*
+@@ -81,6 +75,8 @@ unsigned short const crc_table[256] = {
+
+ # define CRC_POLY 0x8005
+
++#ifndef FPM_AVR32
++
+ /*
+ * NAME: bit->init()
+ * DESCRIPTION: initialize bit pointer struct
+@@ -190,6 +186,8 @@ void mad_bit_write(struct mad_bitptr *bitptr, unsigned int len,
+ }
+ # endif
+
++#endif
++
+ /*
+ * NAME: bit->crc()
+ * DESCRIPTION: compute CRC-check word
+diff --git a/bit.h b/bit.h
+index 5a51570..70f550a 100644
+--- a/bit.h
++++ b/bit.h
+@@ -22,6 +22,92 @@
+ # ifndef LIBMAD_BIT_H
+ # define LIBMAD_BIT_H
+
++# ifdef HAVE_LIMITS_H
++# include <limits.h>
++# else
++# define CHAR_BIT 8
++# endif
++
++#ifdef FPM_AVR32
++
++struct mad_bitptr {
++ unsigned char const *byte;
++ unsigned int read_bytes;
++};
++
++/*
++ * NAME: bit->init()
++ * DESCRIPTION: initialize bit pointer struct
++ */
++static void mad_bit_init(struct mad_bitptr *bitptr, unsigned char const *byte)
++{
++ bitptr->byte = byte;
++ bitptr->read_bytes = 0;
++}
++
++/*
++ * NAME: bit->length()
++ * DESCRIPTION: return number of bits between start and end points
++ */
++static unsigned int mad_bit_length(struct mad_bitptr const *begin,
++ struct mad_bitptr const *end)
++{
++ return (end->read_bytes - begin->read_bytes) +
++ 8 * (end->byte - begin->byte);
++}
++
++/*
++ * NAME: bit->nextbyte()
++ * DESCRIPTION: return pointer to next unprocessed byte
++ */
++static unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *bitptr)
++{
++ return bitptr->byte + ((bitptr->read_bytes + 0x7) >> 3);
++}
++
++/*
++ * NAME: bit->skip()
++ * DESCRIPTION: advance bit pointer
++ */
++static void mad_bit_skip(struct mad_bitptr *bitptr, unsigned int len)
++{
++ bitptr->read_bytes += len;
++ bitptr->byte += (bitptr->read_bytes >> 3);
++ bitptr->read_bytes &= 0x7;
++}
++
++/*
++ * NAME: bit->read()
++ * DESCRIPTION: read an arbitrary number of bits and return their UIMSBF value
++ */
++static unsigned long mad_bit_read(struct mad_bitptr *bitptr, unsigned int len)
++{
++ register unsigned long value;
++
++ if (!len)
++ return 0;
++
++ value = *(unsigned int *)bitptr->byte;
++
++ value <<= bitptr->read_bytes;
++ value >>= (32 - len);
++
++ bitptr->read_bytes += len;
++ bitptr->byte += (bitptr->read_bytes >> 3);
++ bitptr->read_bytes &= 0x7;
++
++ return value;
++}
++
++# define mad_bit_finish(bitptr) /* nothing */
++
++static unsigned long mad_bit_bitsleft(struct mad_bitptr *bitptr)
++{
++ return (8 - (bitptr)->read_bytes);
++}
++
++#else /* #ifdef FPM_AVR32 */
++
+ struct mad_bitptr {
+ unsigned char const *byte;
+ unsigned short cache;
+@@ -42,6 +128,8 @@ void mad_bit_skip(struct mad_bitptr *, unsigned int);
+ unsigned long mad_bit_read(struct mad_bitptr *, unsigned int);
+ void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long);
+
++#endif
++
+ unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short);
+
+ # endif
+diff --git a/configure.ac b/configure.ac
+index 9b79399..063cb9b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -274,13 +274,14 @@ fi
+ AC_MSG_CHECKING(for architecture-specific fixed-point math routines)
+ AC_ARG_ENABLE(fpm, AC_HELP_STRING([--enable-fpm=ARCH],
+ [use ARCH-specific fixed-point math routines
+- (one of: intel, arm, mips, sparc, ppc, 64bit, default)]),
++ (one of: intel, arm, avr32, mips, sparc, ppc, 64bit, default)]),
+ [
+ case "$enableval" in
+ yes) ;;
+ no|default|approx) FPM="DEFAULT" ;;
+ intel|i?86) FPM="INTEL" ;;
+ arm) FPM="ARM" ;;
++ avr32) FPM="AVR32" ;;
+ mips) FPM="MIPS" ;;
+ sparc) FPM="SPARC" ;;
+ ppc|powerpc) FPM="PPC" ;;
+@@ -298,6 +299,7 @@ then
+ case "$host" in
+ i?86-*) FPM="INTEL" ;;
+ arm*-*) FPM="ARM" ;;
++ avr32*-*) FPM="AVR32" ;;
+ mips*-*) FPM="MIPS" ;;
+ sparc*-*) FPM="SPARC" ;;
+ powerpc*-*) FPM="PPC" ;;
+@@ -343,6 +345,11 @@ then
+ ASO="$ASO -DASO_IMDCT"
+ ASO_OBJS="imdct_l_arm.lo"
+ ;;
++ avr32*-*)
++ ASO="$ASO -DASO_INTERLEAVE2"
++ ASO="$ASO -DASO_ZEROCHECK"
++ ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo"
++ ;;
+ mips*-*)
+ ASO="$ASO -DASO_INTERLEAVE2"
+ ASO="$ASO -DASO_ZEROCHECK"
+diff --git a/configure b/configure
+index ee421cc..7a9f0c8 100755
+--- a/configure
++++ b/configure
+@@ -1048,7 +1048,7 @@ Optional Features:
+ --enable-speed optimize for speed over accuracy
+ --enable-accuracy optimize for accuracy over speed
+ --enable-fpm=ARCH use ARCH-specific fixed-point math routines (one of:
+- intel, arm, mips, sparc, ppc, 64bit, default)
++ intel, arm, avr32, mips, sparc, ppc, 64bit, default)
+ --enable-sso use subband synthesis optimization
+ --disable-aso disable architecture-specific optimizations
+ --enable-strict-iso use strict ISO/IEC interpretations
+@@ -21477,6 +21477,7 @@ if test "${enable_fpm+set}" = set; then
+ no|default|approx) FPM="DEFAULT" ;;
+ intel|i?86) FPM="INTEL" ;;
+ arm) FPM="ARM" ;;
++ avr32) FPM="AVR32" ;;
+ mips) FPM="MIPS" ;;
+ sparc) FPM="SPARC" ;;
+ ppc|powerpc) FPM="PPC" ;;
+@@ -21498,6 +21499,7 @@ then
+ case "$host" in
+ i?86-*) FPM="INTEL" ;;
+ arm*-*) FPM="ARM" ;;
++ avr32*-*) FPM="AVR32" ;;
+ mips*-*) FPM="MIPS" ;;
+ sparc*-*) FPM="SPARC" ;;
+ powerpc*-*) FPM="PPC" ;;
+@@ -21554,6 +21556,11 @@ then
+ ASO="$ASO -DASO_IMDCT"
+ ASO_OBJS="imdct_l_arm.lo"
+ ;;
++ avr32*-*)
++ ASO="$ASO -DASO_INTERLEAVE2"
++ ASO="$ASO -DASO_ZEROCHECK"
++ ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo"
++ ;;
+ mips*-*)
+ ASO="$ASO -DASO_INTERLEAVE2"
+ ASO="$ASO -DASO_ZEROCHECK"
+diff --git a/dct32_avr32.S b/dct32_avr32.S
+new file mode 100644
+index 0000000..7513340
+--- /dev/null
++++ b/dct32_avr32.S
+@@ -0,0 +1,780 @@
++/*
++ Optimized 32-point Discrete Cosine Transform (DCT)
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway
++
++ 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. */
++
++#define SHIFT 12
++#define MAD_F_SCALEBITS 28
++#define SLOTS 8
++
++#define MAD_F(x) ((x + (1 << 15)) >> 16)
++
++# define costab1 MAD_F(0x7fd8878e)
++# define costab2 MAD_F(0x7f62368f)
++# define costab3 MAD_F(0x7e9d55fc)
++# define costab4 MAD_F(0x7d8a5f40)
++# define costab5 MAD_F(0x7c29fbee)
++# define costab6 MAD_F(0x7a7d055b)
++# define costab7 MAD_F(0x78848414)
++# define costab8 MAD_F(0x7641af3d)
++# define costab9 MAD_F(0x73b5ebd1)
++# define costab10 MAD_F(0x70e2cbc6)
++# define costab11 MAD_F(0x6dca0d14)
++# define costab12 MAD_F(0x6a6d98a4)
++# define costab13 MAD_F(0x66cf8120)
++# define costab14 MAD_F(0x62f201ac)
++# define costab15 MAD_F(0x5ed77c8a)
++# define costab16 MAD_F(0x5a82799a)
++# define costab17 MAD_F(0x55f5a4d2)
++# define costab18 MAD_F(0x5133cc94)
++# define costab19 MAD_F(0x4c3fdff4)
++# define costab20 MAD_F(0x471cece7)
++# define costab21 MAD_F(0x41ce1e65)
++# define costab22 MAD_F(0x3c56ba70)
++# define costab23 MAD_F(0x36ba2014)
++# define costab24 MAD_F(0x30fbc54d)
++# define costab25 MAD_F(0x2b1f34eb)
++# define costab26 MAD_F(0x25280c5e)
++# define costab27 MAD_F(0x1f19f97b)
++# define costab28 MAD_F(0x18f8b83c)
++# define costab29 MAD_F(0x12c8106f)
++# define costab30 MAD_F(0x0c8bd35e)
++# define costab31 MAD_F(0x0647d97c)
++
++
++ .macro butterfly2_in out1, out2, out3, out4, in, idx_in1, idx_in2, idx_in3, idx_in4, coeff1, coeff2, tmplo, tmphi
++ mov \tmplo, \coeff1
++ ld.w \out1, \in[\idx_in1 * 4]
++ ld.w \out2, \in[\idx_in2 * 4]
++ ld.w \out3, \in[\idx_in3 * 4]
++ ld.w \out4, \in[\idx_in4 * 4]
++ sub \tmphi, \out1, \out2
++ add \out1, \out2
++ mulsatrndwh.w \out2, \tmphi, \tmplo:b
++
++ sub \tmphi, \out3, \out4
++ mov \tmplo, \coeff2
++ add \out3, \out4
++ mulsatrndwh.w \out4, \tmphi, \tmplo:b
++ .endm
++
++ .macro butterfly2 in1, in2, in3, in4, coeff1, tmplo, tmphi, tmp
++ mov \tmp, \coeff1
++ sub \tmphi, \in1, \in2
++ add \in1, \in2
++ mulsatrndwh.w \in2, \tmphi, \tmp:b
++
++ sub \tmphi, \in3, \in4
++ add \in3, \in4
++ mulsatrndwh.w \in4, \tmphi, \tmp:b
++ .endm
++
++ .macro butterfly4 in1, in2, in3, in4, in5, in6, in7, in8, coeff1, tmplo, tmphi, tmp
++ mov \tmp, \coeff1
++ sub \tmphi, \in1, \in2
++ add \in1, \in2
++ mulsatrndwh.w \in2, \tmphi, \tmp:b
++
++ sub \tmphi, \in3, \in4
++ add \in3, \in4
++ mulsatrndwh.w \in4, \tmphi, \tmp:b
++
++ sub \tmphi, \in5, \in6
++ add \in5, \in6
++ mulsatrndwh.w \in6, \tmphi, \tmp:b
++
++ sub \tmphi, \in7, \in8
++ add \in7, \in8
++ mulsatrndwh.w \in8, \tmphi, \tmp:b
++ .endm
++
++ .macro scale reg
++ .endm
++
++/*void dct32( mad_fixed_t const in[32], unsigned int slot,
++ mad_fixed_t lo[16][8], mad_fixed_t hi[16][8]) */
++
++ .global dct32_avr32
++dct32_avr32:
++ stm --sp, r0-r7, r9-r11, lr
++
++ sub sp, 32*4
++
++/* t0 = in[0] + in[31]; t16 = MUL(in[0] - in[31], costab1);
++ t1 = in[15] + in[16]; t17 = MUL(in[15] - in[16], costab31); */
++ butterfly2_in r4/*t0*/, r5/*t16*/, r6/*t1*/, r7/*t17*/, r12, 0, 31, 15, 16, costab1, costab31, r10, r11
++
++/* t41 = t16 + t17;
++ t59 = MUL(t16 - t17, costab2);
++ t33 = t0 + t1;
++ t50 = MUL(t0 - t1, costab2);*/
++ butterfly2 r5/*t41*/, r7/*t59*/, r4/*t33*/, r6/*t50*/, costab2, r10, r11, lr
++
++/* t2 = in[7] + in[24]; t18 = MUL(in[7] - in[24], costab15);
++ t3 = in[8] + in[23]; t19 = MUL(in[8] - in[23], costab17); */
++ butterfly2_in r0/*t2*/, r1/*t18*/, r2/*t3*/, r3/*t19*/, r12, 7, 24, 8, 23, costab15, costab17, r10, r11
++
++/* t42 = t18 + t19;
++ t60 = MUL(t18 - t19, costab30);
++ t34 = t2 + t3;
++ t51 = MUL(t2 - t3, costab30); */
++ butterfly2 r1/*t42*/, r3/*t60*/, r0/*t34*/, r2/*t51*/, costab30, r10, r11, lr
++
++/* t73 = t41 + t42; t94 = MUL(t41 - t42, costab4);
++ t83 = t59 + t60; t106 = MUL(t59 - t60, costab4); */
++
++
++/* t69 = t33 + t34; t89 = MUL(t33 - t34, costab4);
++ t78 = t50 + t51; t100 = MUL(t50 - t51, costab4); */
++ butterfly4 r5/*t73*/, r1/*t94*/, r7/*t83*/, r3/*t106*/,r4/*t69*/, r0/*t89*/, r6/*t78*/, r2/*t100*/, costab4, r10, r11, lr
++
++/* Store away the computed butterflies:
++ sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89 */
++ stm sp, r0-r7
++
++
++/* t4 = in[3] + in[28]; t20 = MUL(in[3] - in[28], costab7);
++ t5 = in[12] + in[19]; t21 = MUL(in[12] - in[19], costab25); */
++ butterfly2_in r4/*t4*/, r5/*t20*/, r6/*t5*/, r7/*t21*/, r12, 3, 28, 12, 19, costab7, costab25, r10, r11
++
++/* t43 = t20 + t21;
++ t61 = MUL(t20 - t21, costab14);
++ t35 = t4 + t5;
++ t52 = MUL(t4 - t5, costab14); */
++ butterfly2 r5/*t43*/, r7/*t61*/, r4/*t35*/, r6/*t52*/, costab14, r10, r11, lr
++
++/* t6 = in[4] + in[27]; t22 = MUL(in[4] - in[27], costab9);
++ t7 = in[11] + in[20]; t23 = MUL(in[11] - in[20], costab23); */
++ butterfly2_in r0/*t6*/, r1/*t22*/, r2/*t7*/, r3/*t23*/, r12, 4, 27, 11, 20, costab9, costab23, r10, r11
++
++/* t44 = t22 + t23;
++ t62 = MUL(t22 - t23, costab18);
++ t36 = t6 + t7;
++ t53 = MUL(t6 - t7, costab18); */
++ butterfly2 r1/*t44*/, r3/*t62*/, r0/*t36*/, r2/*t53*/, costab18, r10, r11, lr
++
++/* t74 = t43 + t44; t95 = MUL(t43 - t44, costab28);
++ t84 = t61 + t62; t107 = MUL(t61 - t62, costab28); */
++
++/* t70 = t35 + t36; t90 = MUL(t35 - t36, costab28);
++ t79 = t52 + t53; t101 = MUL(t52 - t53, costab28); */
++ butterfly4 r5/*t74*/, r1/*t95*/, r7/*t84*/, r3/*t107*/, r4/*t70*/, r0/*t90*/, r6/*t79*/, r2/*t101*/, costab28, r10, r11, lr
++
++/* Store away the computed butterflies:
++ sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90 */
++ sub r10, sp, -8*4
++ stm r10, r0-r7
++
++
++/* t8 = in[1] + in[30]; t24 = MUL(in[1] - in[30], costab3);
++ t9 = in[14] + in[17]; t25 = MUL(in[14] - in[17], costab29); */
++ butterfly2_in r4/*t8*/, r5/*t24*/, r6/*t9*/, r7/*t25*/, r12, 1, 30, 14, 17, costab3, costab29, r10, r11
++
++
++/* t45 = t24 + t25;
++ t63 = MUL(t24 - t25, costab6);
++ t37 = t8 + t9;
++ t54 = MUL(t8 - t9, costab6); */
++ butterfly2 r5/*t45*/, r7/*t63*/, r4/*t37*/, r6/*t54*/, costab6, r10, r11, lr
++
++/* t10 = in[6] + in[25]; t26 = MUL(in[6] - in[25], costab13);
++ t11 = in[9] + in[22]; t27 = MUL(in[9] - in[22], costab19); */
++ butterfly2_in r0/*t10*/, r1/*t26*/, r2/*t11*/, r3/*t27*/, r12, 6, 25, 9, 22, costab13, costab19, r10, r11
++
++/* t46 = t26 + t27;
++ t64 = MUL(t26 - t27, costab26);
++ t38 = t10 + t11;
++ t55 = MUL(t10 - t11, costab26); */
++ butterfly2 r1/*t46*/, r3/*t64*/, r0/*t38*/, r2/*t55*/, costab26, r10, r11, lr
++
++/* t75 = t45 + t46; t96 = MUL(t45 - t46, costab12);
++ t85 = t63 + t64; t108 = MUL(t63 - t64, costab12); */
++
++/* t71 = t37 + t38; t91 = MUL(t37 - t38, costab12);
++ t80 = t54 + t55; t102 = MUL(t54 - t55, costab12); */
++ butterfly4 r5/*t75*/, r1/*t96*/, r7/*t85*/, r3/*t108*/, r4/*t71*/, r0/*t91*/, r6/*t80*/, r2/*t102*/, costab12, r10, r11, lr
++
++/* Store away the computed butterflies:
++ sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91 */
++ sub r10, sp, -16*4
++ stm r10, r0-r7
++
++/* t12 = in[2] + in[29]; t28 = MUL(in[2] - in[29], costab5);
++ t13 = in[13] + in[18]; t29 = MUL(in[13] - in[18], costab27); */
++ butterfly2_in r4/*t12*/, r5/*t28*/, r6/*t13*/, r7/*t29*/, r12, 2, 29, 13, 18, costab5, costab27, r10, r11
++
++/* t47 = t28 + t29;
++ t65 = MUL(t28 - t29, costab10);
++ t39 = t12 + t13;
++ t56 = MUL(t12 - t13, costab10); */
++ butterfly2 r5/*t47*/, r7/*t65*/, r4/*t39*/, r6/*t56*/, costab10, r10, r11, lr
++
++/* t14 = in[5] + in[26]; t30 = MUL(in[5] - in[26], costab11);
++ t15 = in[10] + in[21]; t31 = MUL(in[10] - in[21], costab21);*/
++ butterfly2_in r0/*t14*/, r1/*t30*/, r2/*t15*/, r3/*t31*/, r12, 5, 26, 10, 21, costab11, costab21, r10, r11
++
++/* t48 = t30 + t31;
++ t66 = MUL(t30 - t31, costab22);
++ t40 = t14 + t15;
++ t57 = MUL(t14 - t15, costab22);*/
++ butterfly2 r1/*t48*/, r3/*t66*/, r0/*t40*/, r2/*t57*/, costab22, r10, r11, lr
++
++/* t76 = t47 + t48; t97 = MUL(t47 - t48, costab20);
++ t86 = t65 + t66; t109 = MUL(t65 - t66, costab20);*/
++
++/* t72 = t39 + t40; t92 = MUL(t39 - t40, costab20);
++ t81 = t56 + t57; t103 = MUL(t56 - t57, costab20);*/
++ butterfly4 r5/*t76*/, r1/*t97*/, r7/*t86*/, r3/*t109*/,r4/*t72*/, r0/*t92*/, r6/*t81*/, r2/*t103*/, costab20, r10, r11, lr
++
++/* Store away the computed butterflies:
++ sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 */
++ sub r10, sp, -24*4
++ stm r10, r0-r7
++
++/* We now have the following on the stack:
++
++ sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89
++ sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90
++ sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91
++ sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 */
++
++/* Load {r0...r7} = { t72, t76, t71, t75, t70, t74, t69, t73 } */
++ ld.d r6, sp[2*4]
++ ld.d r4, sp[10*4]
++ ld.d r2, sp[18*4]
++ ld.d r0, sp[26*4]
++
++
++/* t113 = t69 + t70;
++ t141 = MUL(t69 - t70, costab8);
++
++ t115 = t73 + t74;
++ t144 = MUL(t73 - t74, costab8); */
++ butterfly2 r6/*t113*/, r4/*t141*/, r7/*t115*/, r5/*t144*/, costab8, r10, r11, lr
++
++/* t114 = t71 + t72;
++ t142 = MUL(t71 - t72, costab24);
++
++ t116 = t75 + t76;
++ t145 = MUL(t75 - t76, costab24); */
++ butterfly2 r2/*t114*/, r0/*t142*/, r3/*t116*/, r1/*t145*/, costab24, r10, r11, lr
++
++
++/*
++ t191 = t113 + t114;
++ t192 = MUL(t113 - t114, costab16)
++
++ t32 = t115 + t116;
++ t177 = MUL(t115 - t116, costab16) ;
++
++ t143 = t141 + t142;
++ t190 = MUL(t141 - t142, costab16) ;
++
++ t146 = t144 + t145;
++ t184 = MUL(t144 - t145, costab16) ; */
++ butterfly4 r6/*t191*/, r2/*t192*/, r7/*t32*/, r3/*t177*/, r4/*t143*/, r0/*190*/, r5/*t146*/, r1/*t184*/, costab16, r10, r11, lr
++
++/* Store away the computed butterflies:
++ sp[2-3] = t32, t191
++ sp[10-11] = t146, t143
++ sp[18-19] = t177, t192
++ sp[26-27] = t184, t190 */
++ st.d sp[2*4] , r6
++ st.d sp[10*4], r4
++ st.d sp[18*4], r2
++ st.d sp[26*4], r0
++
++/* Load {r0...r7} = { t81, t86, t80, t85, t79, t84, t78, t83 } */
++ ld.d r6, sp[0*4]
++ ld.d r4, sp[8*4]
++ ld.d r2, sp[16*4]
++ ld.d r0, sp[24*4]
++
++
++/* t118 = t78 + t79;
++ t148 = MUL(t78 - t79, costab8);
++
++ t121 = t83 + t84;
++ t152 = MUL(t83 - t84, costab8); */
++ butterfly2 r6/*t118*/, r4/*t148*/, r7/*t121*/, r5/*t152*/, costab8, r10, r11, lr
++
++/* t119 = t80 + t81;
++ t149 = MUL(t80 - t81, costab24);
++
++ t122 = t85 + t86;
++ t153 = MUL(t85 - t86, costab24); */
++ butterfly2 r2/*t119*/, r0/*t149*/, r3/*t122*/, r1/*t153*/, costab24, r10, r11, lr
++
++
++
++/* t58 = t118 + t119;
++ t178 = MUL(t118 - t119, costab16) ;
++
++ t67 = t121 + t122;
++ t179 = MUL(t121 - t122, costab16) ;
++
++ t150 = t148 + t149;
++ t185 = MUL(t148 - t149, costab16) ;
++
++ t154 = t152 + t153;
++ t186 = MUL(t152 - t153, costab16) ; */
++ butterfly4 r6/*t58*/, r2/*t178*/, r7/*t67*/, r3/*t179*/, r4/*t150*/, r0/*185*/, r5/*t154*/, r1/*t186*/, costab16, r10, r11, lr
++
++/* Store away the computed butterflies:
++ sp[0-1] = t67, t58
++ sp[8-9] = t154, t150
++ sp[16-17] = t179, t178
++ sp[24-25] = t186, t185 */
++ st.d sp[0*4] , r6
++ st.d sp[8*4], r4
++ st.d sp[16*4], r2
++ st.d sp[24*4], r0
++
++/* Load {r0...r7} = { t92, t97, t91, t96, t90, t95, t89, t94 } */
++ ld.d r6, sp[6*4]
++ ld.d r4, sp[14*4]
++ ld.d r2, sp[22*4]
++ ld.d r0, sp[30*4]
++
++
++/* t125 = t89 + t90;
++ t157 = MUL(t89 - t90, costab8);
++
++ t128 = t94 + t95;
++ t161 = MUL(t94 - t95, costab8); */
++ butterfly2 r6/*t125*/, r4/*t157*/, r7/*t128*/, r5/*t161*/, costab8, r10, r11, lr
++
++/* t126 = t91 + t92;
++ t158 = MUL(t91 - t92, costab24);
++
++ t129 = t96 + t97;
++ t162 = MUL(t96 - t97, costab24); */
++ butterfly2 r2/*t126*/, r0/*t158*/, r3/*t129*/, r1/*t162*/, costab24, r10, r11, lr
++
++
++/*
++ t93 = t125 + t126;
++ t180 = MUL(t125 - t126, costab16) ;
++
++ t98 = t128 + t129;
++ t181 = MUL(t128 - t129, costab16) ;
++
++ t159 = t157 + t158;
++ t187 = MUL(t157 - t158, costab16) ;
++
++ t163 = t161 + t162;
++ t188 = MUL(t161 - t162, costab16) ; */
++ butterfly4 r6/*t93*/, r2/*t180*/, r7/*t98*/, r3/*t181*/, r4/*t159*/, r0/*187*/, r5/*t163*/, r1/*t188*/, costab16, r10, r11, lr
++
++
++/* Store away the computed butterflies:
++ sp[6-7] = t98, t93
++ sp[14-15] = t163, t159
++ sp[22-23] = t181, t180
++ sp[30-31] = t188, t187 */
++ st.d sp[6*4] , r6
++ st.d sp[14*4], r4
++ st.d sp[22*4], r2
++ st.d sp[30*4], r0
++
++/* Load {r0...r7} = { t103, t109, t102, t108, t101, t107, t100, t106 } */
++ ld.d r6, sp[4*4]
++ ld.d r4, sp[12*4]
++ ld.d r2, sp[20*4]
++ ld.d r0, sp[28*4]
++
++
++
++/* t132 = t100 + t101;
++ t166 = MUL(t100 - t101, costab8);
++
++ t136 = t106 + t107;
++ t171 = MUL(t106 - t107, costab8); */
++ butterfly2 r6/*t132*/, r4/*t166*/, r7/*t136*/, r5/*t171*/, costab8, r10, r11, lr
++
++/* t133 = t102 + t103;
++ t167 = MUL(t102 - t103, costab24);
++
++ t137 = t108 + t109;
++ t172 = MUL(t108 - t109, costab24);*/
++ butterfly2 r2/*t133*/, r0/*t167*/, r3/*t137*/, r1/*t172*/, costab24, r10, r11, lr
++
++
++/* t104 = t132 + t133;
++ t182 = MUL(t132 - t133, costab16) ;
++
++ t110 = t136 + t137;
++ t183 = MUL(t136 - t137, costab16) ;
++
++ t168 = t166 + t167;
++ t189 = MUL(t166 - t167, costab16) ;
++
++ t173 = t171 + t172;
++ t208 = MUL(t171 - t172, costab16) ; */
++ butterfly4 r6/*t104*/, r2/*t182*/, r7/*t110*/, r3/*t183*/, r4/*t168*/, r0/*189*/, r5/*t173*/, r1/*t208*/, costab16, r10, r11, lr
++
++/* Store away the computed butterflies:
++ sp[4-5] = t110, t104
++ sp[12-13] = t173, t168
++ sp[20-21] = t183, t182
++ sp[28-29] = t208, t189 */
++ st.d sp[4*4] , r6
++ st.d sp[12*4], r4
++ st.d sp[20*4], r2
++ st.d sp[28*4], r0
++
++/* Now we have the following stack
++
++ sp[0-7] = t67, t58 , t32, t191, t110, t104, t98, t93
++ sp[8-15] = t154, t150, t146, t143, t173, t168, t163, t159
++ sp[16-23] = t179, t178, t177, t192, t183, t182, t181, t180
++ sp[24-31] = t186, t185, t184, t190, t208, t189, t188, t187
++*/
++
++ /* Get slot, lo and hi from stack */
++ lddsp lr, sp[32*4 + 4] /*slot*/
++ lddsp r12, sp[32*4 + 8] /*lo*/
++ lddsp r11, sp[32*4 + 12] /*hi*/
++
++ add r12, r12, lr << 2
++ add r11, r11, lr << 2
++
++
++/* t49 = -(t67 * 2) + t32;
++ hi[14][slot] = SHIFT(t32);
++ t87 = -(t110 * 2) + t67;
++ t138 = -(t173 * 2) + t110;
++ t203 = -(t208 * 2) + t173; */
++
++ lddsp r0/*t67*/, sp[0]
++ lddsp r1/*t32*/, sp[2*4]
++ lddsp r2/*t110*/, sp[4*4]
++ lddsp r3/*t173*/, sp[12*4]
++ lddsp r5/*t208*/, sp[28*4]
++
++ sub r4/*t49*/, r1, r0 << 1
++ scale r1
++ sub r0/*t87*/, r0, r2 << 1
++ st.w r11[14*SLOTS*4], r1
++ sub r2/*t138*/, r2, r3 << 1
++ sub r1/*t203*/, r3, r5 << 1
++
++/* Live: r0 = t87, r1= t203, r2= t138, r4 = t49
++ Free: r3, r5, r6, r7, r8, r9, r10, lr */
++
++/* t68 = (t98 * 2) + t49;
++ hi[12][slot] = SHIFT(-t49);
++ t130 = -(t163 * 2) + t98;
++ t201 = -(t188 * 2) + t163;
++ t200 = -(t186 * 2) + t154;
++ t111 = (t154 * 2) + t87;
++ t77 = -(-(t87 * 2) - t68);
++ t88 = (t146 * 2) + t77;
++ t199 = -(t184 * 2) + t146;
++ hi[ 8][slot] = SHIFT(-t77);
++ hi[10][slot] = SHIFT(t68);*/
++ lddsp r3/*t98*/, sp[6*4]
++ lddsp r5/*t163*/, sp[14*4]
++ lddsp r6/*t188*/, sp[30*4]
++ lddsp r10/*t186*/, sp[24*4]
++
++ add r7/*t68*/, r4, r3 << 1
++ neg r4
++ scale r4
++ lddsp r9/*t154*/, sp[8*4]
++ sub r3/*t130*/, r3, r5 << 1
++ st.w r11[12*SLOTS*4], r4
++ sub r8/*t201*/, r5, r6 << 1
++ sub r4/*t200*/, r9, r10 << 1
++ lddsp lr/*t146*/, sp[10*4]
++ lddsp r6/*t184*/, sp[26*4]
++ add r10/*t111*/, r0, r9 << 1
++ add r5/*t77*/,r7, r0 << 1
++ add r0/*t88*/, r5, lr << 1
++ sub r6/*t199*/, lr, r6 << 1
++ neg r5
++ scale r5
++ scale r7
++ st.w r11[8*SLOTS*4], r5
++ st.w r11[10*SLOTS*4], r7
++
++/* Live: r0 = t88, r1= t203, r2= t138, r3 = t130, r4 = t200,
++ r6 = 199, r8 = t201, r10 = t111
++ Free: r5, r7, r9, lr */
++
++
++/*
++ t123 = -(-(t138 * 2) - t111);
++ t174 = (t183 * 2) + t138;
++ t99 = -(t111 * 2) + t88;
++ hi[ 6][slot] = SHIFT(t88); */
++ lddsp r5/*t183*/, sp[20*4]
++
++ add r7/*t123*/, r10, r2 << 1
++ sub r10/*t99*/, r0, r10 << 1
++ scale r0
++ add r2/*t174*/, r2, r5 << 1
++ st.w r11[6*SLOTS*4], r0
++
++/* Live: r1 = t203, r2 = t174, r3 = t130, r4 = t200,
++ r6 = t199, r7 = t123, r8 = t201, r10 = t99
++ Free: r0, r5, r9, lr */
++
++/* t112 = -(t130 * 2) + t99;
++ t164 = (t181 * 2) + t130;
++ hi[ 4][slot] = SHIFT(-t99); */
++ lddsp r0/*t181*/, sp[22*4]
++
++ sub r5/*t112*/, r10, r3 << 1
++ neg r10
++ scale r10
++ add r3/*164*/, r3, r0 << 1
++ st.w r11[4*SLOTS*4], r10
++
++/* Live: r1 = t203, r2 = t174, r3 = t164, r4 = t200,
++ r5 = t112, r6 = t199, r7 = t123, r8 = t201
++ Free: r0, r9, r10, lr */
++
++
++/* t117 = -(-(t123 * 2) - t112);
++ t139 = (t179 * 2) + t123;
++ hi[ 2][slot] = SHIFT(t112); */
++ lddsp r0/*t179*/, sp[16*4]
++
++ add r9/*t117*/, r5, r7 << 1
++ scale r5
++ add r7/*t139*/, r7, r0 << 1
++ st.w r11[2*SLOTS*4], r5
++
++/* Live: r1 = t203, r2 = t174, r3 = t164, r4 = t200,
++ r6 = t199, r7 = t139, r8 = t201, r9 = t117
++ Free: r0, r5, r10, lr */
++
++/* t155 = -(t174 * 2) + t139;
++ t204 = -(-(t203 * 2) - t174);
++ t124 = (t177 * 2) + t117;
++ hi[ 0][slot] = SHIFT(-t117);
++ t131 = -(t139 * 2) + t124;
++ lo[ 1][slot] = SHIFT(t124);*/
++ lddsp r0/*t177*/, sp[18*4]
++
++ sub r5/*t155*/, r7, r2 << 1
++ add r2/*t204*/, r2, r1 << 1
++ add r0/*t124*/, r9, r0 << 1
++ neg r9
++ scale r9
++ sub r7/*t131*/, r0, r7 << 1
++ scale r0
++ st.w r11[0*SLOTS*4], r9
++ st.w r12[1*SLOTS*4], r0
++
++/* Live: r2 = t204, r3 = t164, r4 = t200,
++ r5 = t155, r6 = t199, r7 = t131, r8 = t201
++ Free: r0, r1, r9, r10, lr */
++
++/* t140 = (t164 * 2) + t131;
++ lo[ 3][slot] = SHIFT(-t131);
++ t202 = -(-(t201 * 2) - t164); */
++ add r0/*t140*/, r7, r3 << 1
++ neg r7
++ scale r7
++ add r3/*t202*/, r3, r8 << 1
++ st.w r12[3*SLOTS*4], r7
++
++/* Live: r0 = t140, r2 = t204, r3 = t202, r4 = t200,
++ r5 = t155, r6 = t199
++ Free: r1, r7, r8, r9, r10, lr */
++
++
++/* t147 = -(-(t155 * 2) - t140);
++ lo[ 5][slot] = SHIFT(t140);
++ t175 = -(t200 * 2) + t155;
++ t156 = -(t199 * 2) + t147;
++ lo[ 7][slot] = SHIFT(-t147); */
++ add r1/*t147*/, r0, r5 << 1
++ scale r0
++ sub r5/*t175*/, r5, r4 << 1
++ sub r4/*156*/, r1, r6 << 1
++ neg r1
++ scale r1
++ st.w r12[5*SLOTS*4], r0
++ st.w r12[7*SLOTS*4], r1
++
++/* Live: r2 = t204, r3 = t202,
++ r4 = t156, r5 = t175
++ Free: r0, r1, r6, r7, r8, r9, r10, lr */
++
++
++/* t205 = -(-(t204 * 2) - t175);
++ t165 = -(t175 * 2) + t156;
++ lo[ 9][slot] = SHIFT(t156);
++ t176 = -(t202 * 2) + t165;
++ lo[11][slot] = SHIFT(-t165);
++ t206 = -(-(t205 * 2) - t176);
++ lo[15][slot] = SHIFT(-t206)
++ lo[13][slot] = SHIFT(t176) */
++ add r0/*t205*/, r5, r2 << 1
++ sub r1/*t165*/, r4, r5 << 1
++ scale r4
++ sub r3/*t176*/, r1, r3 << 1
++ st.w r12[9*SLOTS*4], r4
++ neg r1
++ scale r1
++ add r6/*t206*/, r3, r0 << 1
++ neg r6
++ scale r6
++ scale r3
++ st.w r12[11*SLOTS*4], r1
++ st.w r12[15*SLOTS*4], r6
++ st.w r12[13*SLOTS*4], r3
++
++/* t193 = -((t190 * 2) - t143)
++ hi[ 7][slot] = SHIFT(t143);
++ lo[ 8][slot] = SHIFT(-t193);
++ t82 = -(t104 * 2) + t58;
++ hi[13][slot] = SHIFT(t58);
++ t134 = -(t168 * 2) + t104;
++ t196 = -(t189 * 2) + t168; */
++
++ lddsp r0/*t190*/, sp[27*4]
++ lddsp r1/*t143*/, sp[11*4]
++ lddsp r2/*t104*/, sp[5*4]
++ lddsp r3/*t58*/, sp[1*4]
++ lddsp r4/*t168*/, sp[13*4]
++ lddsp r5/*t189*/, sp[29*4]
++ sub r0/*t193*/, r1, r0 << 1
++ neg r0
++ scale r1
++ scale r0
++ st.w r11[7*SLOTS*4], r1
++ st.w r12[8*SLOTS*4], r0
++ sub r0/*t82*/, r3, r2 << 1
++ scale r3
++ sub r2/*t134*/, r2, r4 << 1
++ sub r4/*t196*/, r4, r5 << 1
++ st.w r11[13*SLOTS*4], r3
++
++/* Live: r0 = t82, r2 = t134,
++ r4 = t196
++ Free: r1, r3, r5, r6, r7, r8, r9, r10, lr */
++
++
++
++/*
++
++ t207 = -(t185 * 2) + t150;
++ t105 = (t150 * 2) + t82;
++ hi[ 9][slot] = SHIFT(-t82);
++ t120 = -(-(t134 * 2) - t105);
++ hi[ 5][slot] = SHIFT(t105);
++ t169 = (t182 * 2) + t134;
++
++ t135 = (t178 * 2) + t120;
++ hi[ 1][slot] = SHIFT(-t120);
++ t197 = -(-(t196 * 2) - t169);
++ t151 = -(t169 * 2) + t135;
++ lo[ 2][slot] = SHIFT(t135); */
++ lddsp r1/*t185*/, sp[25*4]
++ lddsp r3/*t150*/, sp[9*4]
++ lddsp r5/*t182*/, sp[21*4]
++ lddsp r8/*t178*/, sp[17*4]
++
++ sub r6/*t207*/, r3, r1 << 1
++ add r3/*t105*/, r0, r3 << 1
++ neg r0
++ scale r0
++ add r7/*t120*/, r3, r2 << 1
++ scale r3
++ st.w r11[9*SLOTS*4], r0
++ st.w r11[5*SLOTS*4], r3
++ add r2/*t169*/, r2, r5 << 1
++ add r8/*t135*/, r7, r8 << 1
++ neg r7
++ scale r7
++ add r4/*t197*/, r2, r4 << 1
++ sub r2/*t151*/, r8, r2 << 1
++ scale r8
++ st.w r11[1*SLOTS*4], r7
++ st.w r12[2*SLOTS*4], r8
++
++/* Live: r2 = t151, r4 = t197, r6 = t207
++
++ Free: r0, r1, r3, r5, r7, r8, r9, r10, lr */
++
++
++
++/* t170 = -(t207 * 2) + t151;
++ lo[ 6][slot] = SHIFT(-t151);
++
++ t198 = -(-(t197 * 2) - t170);
++ lo[10][slot] = SHIFT(t170);
++ lo[14][slot] = SHIFT(-t198);
++
++ t127 = -(t159 * 2) + t93;
++ hi[11][slot] = SHIFT(t93);
++ t194 = -(t187 * 2) + t159; */
++ lddsp r0/*t159*/, sp[15*4]
++ lddsp r1/*t93*/, sp[7*4]
++ lddsp r3/*t187*/, sp[31*4]
++ sub r5/*t170*/, r2, r6 << 1
++ neg r2
++ scale r2
++ add r4/*t198*/,r5, r4 << 1
++ neg r4
++ scale r5
++ scale r4
++ st.w r12[6*SLOTS*4], r2
++ st.w r12[10*SLOTS*4], r5
++ st.w r12[14*SLOTS*4], r4
++ sub r7/*t127*/, r1, r0 << 1
++ scale r1
++ sub r0/*t194*/, r0, r3 << 1
++ st.w r11[11*SLOTS*4], r1
++
++
++/* Live: r0 = t194, r7 = t127
++ Free: r1, r2, r3, r4, r6, r5, r8, r9, r10, lr */
++
++/* t160 = (t180 * 2) + t127;
++ hi[ 3][slot] = SHIFT(-t127);
++ t195 = -(-(t194 * 2) - t160);
++ lo[ 4][slot] = SHIFT(t160);
++ lo[12][slot] = SHIFT(-t195);
++
++ hi[15][slot] = SHIFT(t191);
++ lo[ 0][slot] = SHIFT(t192); */
++ lddsp r1/*t180*/, sp[23*4]
++ lddsp r2/*t191*/, sp[3*4]
++ lddsp r3/*t192*/, sp[19*4]
++ add r4/*t160*/, r7, r1 << 1
++ neg r7
++ scale r7
++ add r6/*t195*/, r4, r0 << 1
++ scale r4
++ neg r6
++ scale r6
++ st.w r11[3*SLOTS*4], r7
++ st.w r12[4*SLOTS*4], r4
++ st.w r12[12*SLOTS*4], r6
++ scale r2
++ scale r3
++ st.w r11[15*SLOTS*4], r2
++ st.w r12[0*SLOTS*4], r3
++
++ sub sp, -32*4
++ ldm sp++,r0-r7, r9-r11, pc
+diff --git a/fixed.h b/fixed.h
+index 4b58abf..0a1350a 100644
+--- a/fixed.h
++++ b/fixed.h
+@@ -237,6 +237,46 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
+ # define MAD_F_SCALEBITS MAD_F_FRACBITS
+ # endif
+
++/* --- AVR32 ----------------------------------------------------------------- */
++
++# elif defined(FPM_AVR32)
++
++typedef signed short mad_coeff_t;
++
++struct DWstruct {int high, low;};
++
++typedef union {
++ struct DWstruct s;
++ long long ll;
++} DWunion;
++
++# define MAD_F_MLX(hi, lo, x, y) \
++ { register DWunion __res; \
++ __res.ll = (long long)x * (long long)y; \
++ /* asm ("muls.d\t%0, %1, %2" : "=r" (__res.ll) : "r" (x), "r" (y));*/ \
++ hi = __res.s.high; \
++ lo = __res.s.low; }
++
++# define MAD_F_MLA(hi, lo, x, y) \
++ { register DWunion __res; \
++ __res.s.high = hi; \
++ __res.s.low = lo; \
++ __res.ll += (long long)x * (long long)y; \
++/* asm ("macs.d\t%0, %1, %2" : "+r" (__res.ll) : "r" (x), "r" (y));*/ \
++ hi = __res.s.high; \
++ lo = __res.s.low; }
++
++
++# define MAD_F_MLN(hi, lo) \
++ asm ("neg %0\n" \
++ "acr %1\n" \
++ "neg %1" \
++ : "+r" (lo), "+r" (hi) \
++ :: "cc")
++
++
++# define MAD_F_SCALEBITS MAD_F_FRACBITS
++
+ /* --- ARM ----------------------------------------------------------------- */
+
+ # elif defined(FPM_ARM)
+@@ -433,6 +473,8 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
+ *
+ * Pre-rounding is required to stay within the limits of compliance.
+ */
++typedef signed int mad_coeff_t;
++
+ # if defined(OPT_SPEED)
+ # define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16))
+ # else
+diff --git a/imdct_avr32.S b/imdct_avr32.S
+new file mode 100644
+index 0000000..d0ee6b4
+--- /dev/null
++++ b/imdct_avr32.S
+@@ -0,0 +1,789 @@
++/*
++ Optimized 36-point Inverse Modified Cosine Transform (IMDCT)
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen, Atmel Norway
++
++ 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. */
++
++#define MAD_F(x) ((x + (1 << 13)) >> 14)
++
++ .public imdct36_avr32
++
++/*
++ void imdct36(mad_fixed_t const x[18], mad_fixed_t y[36])
++ {
++ mad_fixed_t tmp[18];
++ int i;
++*/
++/* DCT-IV */
++imdct36_avr32:
++ pushm r0-r7,r11,lr
++ sub sp, 4*18
++/*
++ {
++ mad_fixed_t tmp2[18];
++ int i;
++
++ /* scale[i] = 2 * cos(PI * (2 * i + 1) / (4 * 18)) */
++/*
++ static mad_fixed_t const scale[18] = {
++ MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120),
++ MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b),
++ MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4),
++ MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3),
++ MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5),
++ MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c)
++ };
++*/
++
++ /* scaling */
++
++/*
++ for (i = 0; i < 18; i += 3) {
++ tmp2[i + 0] = mad_f_mul(x[i + 0], scale[i + 0]);
++ tmp2[i + 1] = mad_f_mul(x[i + 1], scale[i + 1]);
++ tmp2[i + 2] = mad_f_mul(x[i + 2], scale[i + 2]);
++ }
++*/
++ /* even input butterfly */
++
++/*
++ for (i = 0; i < 9; i += 3) {
++ tmp3[i + 0] = tmp2[i + 0] + tmp2[18 - (i + 0) - 1];
++ tmp3[i + 1] = tmp2[i + 1] + tmp2[18 - (i + 1) - 1];
++ tmp3[i + 2] = tmp2[i + 2] + tmp2[18 - (i + 2) - 1];
++ }
++ for (i = 0; i < 9; i += 3) {
++ tmp4[i + 0] = tmp2[i + 0] - tmp2[18 - (i + 0) - 1];
++ tmp4[i + 1] = tmp2[i + 1] - tmp2[18 - (i + 1) - 1];
++ tmp4[i + 2] = tmp2[i + 2] - tmp2[18 - (i + 2) - 1];
++ }
++*/
++
++ ld.d r8, r12[0] /*r8 = x[1], r9 = x[0]*/
++ ld.d r0, pc[scale_dctIV - .] /*r0 = {scale[2], scale[3]}, r1 = { scale[0], scale[1] }*/
++ ld.d r2, r12[2*4] /*r2 = x[3], r3 = x[2]*/
++ ld.d r4, pc[scale_dctIV - . + 14*2] /*r4 = {scale[16], scale[17]}, r5 = { scale[14], scale[15] }*/
++ mulsatrndwh.w r9/*tmp2[0]*/, r9, r1:t /*tmp2[0] = mad_f_mul(x[0], scale[0]) */
++ ld.d r6, r12[16*4] /*r6 = x[17], r7 = x[16]*/
++ mulsatrndwh.w r8/*tmp2[1]*/, r8, r1:b /*tmp2[1] = mad_f_mul(x[1], scale[1]) */
++ mulsatrndwh.w r3/*tmp2[2]*/, r3, r0:t /*tmp2[2] = mad_f_mul(x[2], scale[2]) */
++ mulsatrndwh.w r2/*tmp2[3]*/, r2, r0:b /*tmp2[3] = mad_f_mul(x[3], scale[3]) */
++ ld.d r0, r12[14*4] /*r0 = x[15], r1 = x[14]*/
++ mulsatrndwh.w r7/*tmp2[16]*/, r7, r4:t /*tmp2[16] = mad_f_mul(x[16], scale[16]) */
++ mulsatrndwh.w r6/*tmp2[17]*/, r6, r4:b /*tmp2[17] = mad_f_mul(x[17], scale[17]) */
++ mulsatrndwh.w r1/*tmp2[14]*/, r1, r5:t /*tmp2[14] = mad_f_mul(x[14], scale[14]) */
++ mulsatrndwh.w r0/*tmp2[15]*/, r0, r5:b /*tmp2[15] = mad_f_mul(x[15], scale[15]) */
++
++ ld.d r4, r12[4*4] /*r4 = x[5], r5 = x[4]*/
++
++ sub lr/*tmp4[0]*/, r9, r6
++ add r6/*tmp3[0]*/, r9, r6
++ sub r10/*tmp4[1]*/, r8, r7
++ add r7/*tmp3[1]*/, r8, r7
++ sub r9/*tmp4[2]*/, r3, r0
++ add r0/*tmp3[2]*/, r3, r0
++ sub r8/*tmp4[3]*/, r2, r1
++ add r1/*tmp3[3]*/, r2, r1
++
++ ld.d r2, pc[scale_dctIV - . + 4*2] /*r2 = {scale[6], scale[7]}, r3 = { scale[4], scale[5] }*/
++
++ stm --sp, r8-r10, lr /*sp[0] = tmp4[0],sp[1] = tmp4[1],
++ sp[2] = tmp4[2],sp[3] = tmp4[3] */
++
++ /* Registers used: r0 = tmp3[2], r1 = tmp3[3], r6 = tmp3[0], r7 = tmp3[1], r12 = x
++ Free registers: r2-r5, r8-r11, lr
++ */
++ ld.d r8, r12[6*4] /*r8 = x[7], r9 = x[6]*/
++ ld.d r10, pc[scale_dctIV - . + 10*2] /*r10 = {scale[12], scale[13]}, r11 = { scale[10], scale[11] }*/
++ mulsatrndwh.w r5/*tmp2[4]*/, r5, r3:t /*tmp2[4] = mad_f_mul(x[4], scale[4]) */
++ mulsatrndwh.w r4/*tmp2[5]*/, r4, r3:b /*tmp2[5] = mad_f_mul(x[5], scale[5]) */
++ mulsatrndwh.w r9/*tmp2[6]*/, r9, r2:t /*tmp2[6] = mad_f_mul(x[6], scale[6]) */
++ mulsatrndwh.w r8/*tmp2[7]*/, r8, r2:b /*tmp2[7] = mad_f_mul(x[7], scale[7]) */
++
++ ld.d r2, r12[12*4] /*r2 = x[13], r3 = x[12]*/
++ ld.w lr, r12[11*4] /*lr = x[11] */
++ mulsatrndwh.w r3/*tmp2[12]*/, r3, r10:t /*tmp2[12] = mad_f_mul(x[12], scale[12]) */
++ mulsatrndwh.w r2/*tmp2[13]*/, r2, r10:b /*tmp2[13] = mad_f_mul(x[13], scale[13]) */
++ ld.w r10, r12[10*4] /*r10 = x[10] */
++ mulsatrndwh.w lr/*tmp2[11]*/, lr, r11:b /*tmp2[11] = mad_f_mul(x[11], scale[11]) */
++ mulsatrndwh.w r10/*tmp2[10]*/, r10, r11:t /*tmp2[10] = mad_f_mul(x[10], scale[10]) */
++
++ sub r11/*tmp4[4]*/, r5, r2
++ add r2/*tmp3[4]*/, r5, r2
++ sub r5/*tmp4[5]*/, r4, r3
++ add r3/*tmp3[5]*/, r4, r3
++ sub r4/*tmp4[6]*/, r9, lr
++ add lr/*tmp3[6]*/, r9, lr
++ sub r9/*tmp4[7]*/, r8, r10
++ add r10/*tmp3[7]*/, r8, r10
++ lddpc r8, scale_dctIV + 8*2 /*r8 = {scale[8], scale[9]} */
++
++ stm --sp, r4, r5, r9, r11 /*sp[0] = tmp4[4],sp[1] = tmp4[7],
++ sp[2] = tmp4[5],sp[3] = tmp4[6] */
++ ld.d r4, r12[8*4] /*r4 = x[9], r5 = x[8]*/
++ mulsatrndwh.w r5/*tmp2[8]*/, r5, r8:t /*tmp2[8] = mad_f_mul(x[8], scale[8]) */
++ mulsatrndwh.w r4/*tmp2[9]*/, r4, r8:b /*tmp2[9] = mad_f_mul(x[9], scale[9]) */
++ sub r9/*tmp4[8]*/, r5, r4
++ add r5/*tmp3[8]*/, r5, r4
++
++ st.w --sp, r9 /* sp[0] = tmp4[8] */
++
++ /* Registers used:
++
++ r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r10=tmp3[7], lr=tmp3[6]
++ Free registers:
++ r4, r8, r9, r11, r12
++ */
++
++
++ /* SDCT-II */
++/*
++
++ {
++ mad_fixed_t tmp3[9];
++ int i;
++*/
++ /* scale[i] = 2 * cos(PI * (2 * i + 1) / (2 * 18)) */
++/*
++ static mad_fixed_t const scale[9] = {
++ MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930),
++ MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8),
++ MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7)
++ };
++*/
++ /* divide the 18-point SDCT-II into two 9-point SDCT-IIs */
++
++
++ /* fastdct */
++
++/*
++ {
++ mad_fixed_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12;
++ mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25;
++ mad_fixed_t m0, m1, m2, m3, m4, m5, m6, m7;
++*/
++// enum {
++// c0 = MAD_F(0x1f838b8d), /* 2 * cos( 1 * PI / 18) */
++// c1 = MAD_F(0x1bb67ae8), /* 2 * cos( 3 * PI / 18) */
++// c2 = MAD_F(0x18836fa3), /* 2 * cos( 4 * PI / 18) */
++// c3 = MAD_F(0x1491b752), /* 2 * cos( 5 * PI / 18) */
++// c4 = MAD_F(0x0af1d43a), /* 2 * cos( 7 * PI / 18) */
++// c5 = MAD_F(0x058e86a0), /* 2 * cos( 8 * PI / 18) */
++// c6 = -MAD_F(0x1e11f642) /* 2 * cos(16 * PI / 18) */
++// };
++
++/*
++ a2 = tmp3[6] + tmp3[2];
++ a6 = tmp3[8] + tmp3[0];
++ a11 = a2 - a6;
++ m5 = mad_f_mul(a11, -c6) ;
++ a4 = tmp3[1] + tmp3[7];
++
++ a18 = tmp3[4] + a4;
++ a19 = -2 * tmp3[4] + a4;
++
++ a0 = tmp3[3] + tmp3[5];
++
++*/
++ add r11/*a4*/, r7, r10
++ add r12/*a18*/, r2, r11
++ sub r11/*a19*/, r11, r2<<1
++
++ add r4/*a2*/, lr, r0
++ add r8/*a6*/, r5, r6
++ sub r9/*a11*/, r4, r8
++
++ st.d --sp, r0 /* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/
++
++ mov r2, MAD_F(0x1e11f642)
++ mulsatrndwh.w r9/*m5*/, r9, r2:b
++
++ add r2/*a0*/, r1, r3
++
++ /* Registers used:
++
++ r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r8=a6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6]
++ Free registers:
++ r0, r1
++ */
++
++/*
++ a8 = a0 + a2;
++ a12 = a8 + a6;
++ a10 = a0 - a6;
++ a9 = a0 - a2;
++ m7 = mad_f_mul(a9, -c2) ;
++ m6 = mad_f_mul(a10, -c5) ;
++*/
++
++ add r0/*a8*/, r2, r4
++ add r0/*a12*/, r8
++ rsub r8/*a10*/, r2
++ sub r2/*a9*/, r4
++ mov r1, -MAD_F(0x18836fa3)
++ mulsatrndwh.w r2/*m7*/, r2, r1:b
++ mov r1, -MAD_F(0x058e86a0)
++ mulsatrndwh.w r8/*m6*/, r8, r1:b
++
++ /* Registers used:
++
++ r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r8=m6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6]
++ Free registers:
++ r1, r4
++ */
++
++
++/*
++ a21 = -a19 - (m5 << 1);
++ tmp[ 8] = a21 - (m6 << 1);
++
++ a20 = a19 - (m5 << 1);
++ tmp[ 4] = (m7 << 1) + a20;
++ a22 = -a19 + (m6 << 1);
++ tmp[16] = a22 + (m7 << 1);
++ tmp[ 0] = a18 + a12;
++ tmp[12] = a12 - 2 * a18;
++*/
++ add r1/*a21*/, r11, r9 << 1
++ neg r1
++ sub r1/*tmp[8]*/, r1, r8 << 1
++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 8*4], r1
++ sub r4/*a20*/, r11, r9 << 1
++ add r4/*tmp[4]*/, r4, r2 << 1
++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 4*4], r4
++ neg r11
++ add r1/*a22*/, r11, r8 << 1
++ add r1/*tmp[16]*/, r1, r2 << 1
++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 16*4], r1
++ add r4, r12, r0
++ sub r1, r0, r12 << 1
++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 0*4], r4
++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 12*4], r1
++
++ ld.d r0, sp++
++
++ /* Registers used:
++
++ r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r10=tmp3[7], r11=a19, lr=tmp3[6]
++ Free registers:
++ r2,r4,r8,r9,r12
++ */
++
++/*
++ a5 = tmp3[1] - tmp3[7];
++ a7 = tmp3[8] - tmp3[0];
++ a3 = tmp3[6] - tmp3[2];
++ a1 = tmp3[3] - tmp3[5];
++ a13 = a1 - a3;
++ a14 = a13 + a7;
++ m3 = mad_f_mul(a14, -c1) ;
++ m4 = mad_f_mul(a5, -c1) ;
++ tmp[ 6] = m3 << 1;
++*/
++ sub r7/*a5*/, r10
++ sub r2/*a7*/, r5, r6
++ sub r4/*a3*/, lr, r0
++ sub r8/*a1*/, r1, r3
++ sub r9/*a13*/, r8, r4
++ add r12/*a14*/, r9, r2
++ mov r0, -MAD_F(0x1bb67ae8)
++ mulsatrndwh.w r12/*m3*/, r12, r0:b
++ mulsatrndwh.w r7/*m4*/, r7, r0:b
++ lsl r12, 1
++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 6*4], r12
++
++ /* Registers used:
++ r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3
++
++ Free registers:
++ r0, r1, r3, r5, r6, r10, r9, r11, lr
++ */
++
++
++/*
++ a15 = a3 + a7;
++ m2 = mad_f_mul(a15, -c4) ;
++ a17 = a1 + a3;
++ m0 = mad_f_mul(a17, -c3) ;
++ a23 = (m4 << 1) + (m2 << 1);
++ tmp[14] = a23 + (m0 << 1); */
++ add r0/*a15*/, r4, r2
++ mov r1, -MAD_F(0x0af1d43a)
++ mulsatrndwh.w r0/*m2*/, r0, r1:b
++ mov r3, -MAD_F(0x1491b752)
++ add r5/*a17*/, r8, r4
++ mulsatrndwh.w r5/*m0*/, r5, r3:b
++ lsl r7, 1
++ add r6/*a23*/, r7, r0 << 1
++ add r6/*tmp[14]*/, r6, r5 << 1
++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 14*4], r6
++
++ /* Registers used:
++ r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1
++
++ Free registers:
++ r1, r3, r4, r6, r10, r9, r11, lr
++ */
++
++/*
++ a16 = a1 - a7;
++ m1 = mad_f_mul(a16, -c0) ;
++ a24 = (m4 << 1) - (m2 << 1);
++ tmp[10] = a24 - (m1 << 1);
++
++ a25 = (m4 << 1) + (m1 << 1);
++ tmp[ 2] = (m0 << 1) - a25;
++*/
++ sub r3/*a16*/, r8, r2
++ mov r4, -MAD_F(0x1f838b8d)
++ mulsatrndwh.w r3/*m1*/, r3, r4:b
++ sub r1/*a24*/, r7, r0 << 1
++ sub r1/*tmp[10]*/, r1, r3 << 1
++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 10*4], r1
++ add r7/*a25*/, r7, r3 << 1
++ sub r7, r7, r5 << 1
++ neg r7
++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 2*4], r7
++
++
++
++
++ /* output to every other slot for convenience */
++
++ /*} */
++ /* End fastdct */
++
++ /* odd input butterfly and scaling */
++
++
++ /* On the stack:
++ sp[0] = tmp4[8], sp[1] = tmp4[4],sp[2] = tmp4[7], sp[3] = tmp4[5],sp[4] = tmp4[6]
++ sp[5] = tmp4[0], sp[6] = tmp4[1],sp[7] = tmp4[2],sp[8] = tmp4[3]
++ */
++
++ /*
++ tmp3[0] = mad_f_mul(tmp4[0], scale[0]);
++ tmp3[1] = mad_f_mul(tmp4[1], scale[1]) << 1;
++ tmp3[2] = mad_f_mul(tmp4[2], scale[2]);
++ tmp3[3] = mad_f_mul(tmp4[3], scale[3]) << 1;
++ tmp3[4] = mad_f_mul(tmp4[4], scale[4]);
++ tmp3[5] = mad_f_mul(tmp4[5], scale[5]);
++ tmp3[6] = mad_f_mul(tmp4[6], scale[6]) << 1;
++ tmp3[7] = mad_f_mul(tmp4[7], scale[7]);
++ tmp3[8] = mad_f_mul(tmp4[8], scale[8]) << 1;
++ */
++ /* Registers used:
++ r1 = tmp4[3], r2 = tmp4[2], r3 = tmp4[1], r4 = tmp4[0], r7 = tmp4[6]
++ r10 = tmp4[5], r11 = tmp4[7], r12 = tmp4[4], lr = tmp4[8]
++
++ Free registers:
++ r0, r5, r6, r8, r9
++ */
++ ld.d r8, pc[ scale_sdctII - . + 4*2] /* r8 = { scale[6], scale[7] }, r9 = { scale[4], scale[5]} */
++ ldm sp++, r1, r2, r3, r4, r7, r10, r11, r12, lr
++ mov r5, MAD_F(0x02c9fad7) /* r3 = scale[8] */
++ mulsatrndwh.w r5/*tmp3[8]*/, lr, r5:b
++ mulsatrndwh.w lr/*tmp3[6]*/, r7, r8:t
++ ld.d r6, pc[ scale_sdctII - . + 0*2] /* r6 = { scale[2], scale[3] }, r7 = { scale[0], scale[1]} */
++ lsl lr, 1
++ lsl r5, 1
++ mulsatrndwh.w r0/*tmp3[2]*/, r2, r6:t
++ mulsatrndwh.w r1/*tmp3[3]*/, r1, r6:b
++ mulsatrndwh.w r6/*tmp3[0]*/, r4, r7:t
++ mulsatrndwh.w r7/*tmp3[1]*/, r3, r7:b
++ mulsatrndwh.w r3/*tmp3[5]*/, r10, r9:b
++ mulsatrndwh.w r2/*tmp3[4]*/, r12, r9:t
++ mulsatrndwh.w r9/*tmp3[7]*/, r11, r8:b
++ lsl r1, 1
++ lsl r7, 1
++
++
++ /* fastdct */
++
++/*
++ {
++ mad_fixed_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12;
++ mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25;
++ mad_fixed_t m0, m1, m2, m3, m4, m5, m6, m7;
++*/
++// enum {
++// c0 = MAD_F(0x1f838b8d), /* 2 * cos( 1 * PI / 18) */
++// c1 = MAD_F(0x1bb67ae8), /* 2 * cos( 3 * PI / 18) */
++// c2 = MAD_F(0x18836fa3), /* 2 * cos( 4 * PI / 18) */
++// c3 = MAD_F(0x1491b752), /* 2 * cos( 5 * PI / 18) */
++// c4 = MAD_F(0x0af1d43a), /* 2 * cos( 7 * PI / 18) */
++// c5 = MAD_F(0x058e86a0), /* 2 * cos( 8 * PI / 18) */
++// c6 = -MAD_F(0x1e11f642) /* 2 * cos(16 * PI / 18) */
++// };
++
++ /* Registers used:
++
++ r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r9=tmp3[7], lr=tmp3[6]
++ Free registers:
++ r4, r8, r10, r11, r12
++ */
++
++/*
++ a2 = tmp3[6] + (tmp3[2] << 1);
++ a6 = tmp3[8] + (tmp3[0] << 1);
++ a11 = a2 - a6;
++ m5 = mad_f_mul(a11, c6) ;
++ a4 = tmp3[1] + (tmp3[7] << 1);
++
++ a18 = (tmp3[4] << 1) + a4;
++ a19 = -2 * (tmp3[4] << 1) + a4;
++
++ a0 = tmp3[3] + (tmp3[5] << 1);
++
++*/
++ add r11/*a4*/, r7, r9 << 1
++ add r12/*a18*/, r11, r2 << 1
++ sub r11/*a19*/, r11, r2 << 2
++
++ add r4/*a2*/, lr, r0 << 1
++ add r8/*a6*/, r5, r6 << 1
++ sub r10/*a11*/, r4, r8
++
++ st.d --sp, r0 /* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/
++
++ mov r2, -MAD_F(0x1e11f642)
++ mulsatrndwh.w r10/*m5*/, r10, r2:b
++
++ add r2/*a0*/, r1, r3 << 1
++
++ /* Registers used:
++
++ r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r8=a6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6]
++ Free registers:
++ r0, r1
++ */
++
++/*
++ a8 = a0 + a2;
++ a12 = a8 + a6;
++ a10 = a0 - a6;
++ a9 = a0 - a2;
++ m7 = mad_f_mul(a9, -c2) ;
++ m6 = mad_f_mul(a10, -c5) ;
++*/
++
++ add r0/*a8*/, r2, r4
++ add r0/*a12*/, r8
++ rsub r8/*a10*/, r2
++ sub r2/*a9*/, r4
++ mov r1, -MAD_F(0x18836fa3)
++ mulsatrndwh.w r2/*m7*/, r2, r1:b
++ mov r1, -MAD_F(0x058e86a0)
++ mulsatrndwh.w r8/*m6*/, r8, r1:b
++
++ /* Registers used:
++
++ r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r8=m6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6]
++ Free registers:
++ r1, r4
++ */
++
++
++/*
++ a21 = -a19 + (m5 << 1);
++ tmp[ 9] = a21 - (m6 << 1);
++
++ a20 = -(-a19 - (m5 << 1));
++ tmp[ 5] = (m7 << 1) + a20;
++ a22 = -a19 + (m6 << 1);
++ tmp[17] = a22 + (m7 << 1);
++ tmp[ 1] = a18 + a12;
++ tmp[13] = a12 - 2 * a18;
++*/
++ sub r1/*a21*/, r11, r10 << 1
++ neg r1
++ sub r1/*tmp[9]*/, r1, r8 << 1
++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 9*4], r1
++ add r4/*a20*/, r11, r10 << 1
++ add r4/*tmp[5]*/, r4, r2 << 1
++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 5*4], r4
++ neg r11
++ add r1/*a22*/, r11, r8 << 1
++ add r1/*tmp[17]*/, r1, r2 << 1
++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 17*4], r1
++ add r4, r12, r0
++ sub r1, r0, r12 << 1
++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 1*4], r4
++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 13*4], r1
++
++ ld.d r0, sp++
++
++ /* Registers used:
++
++ r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
++ r7 = tmp3[1], r9=tmp3[7], r11=a19, lr=tmp3[6]
++ Free registers:
++ r2,r4,r8,r10,r12
++ */
++
++/*
++ a5 = tmp3[1] - (tmp3[7] << 1);
++ a7 = tmp3[8] - (tmp3[0] << 1);
++ a3 = tmp3[6] - (tmp3[2] << 1);
++ a1 = tmp3[3] - (tmp3[5] << 1);
++ a13 = a1 - a3;
++ a14 = a13 + a7;
++ m3 = mad_f_mul(a14, -c1) ;
++ m4 = mad_f_mul(a5, -c1) ;
++ tmp[ 7] = m3 << 1;
++*/
++ sub r7/*a5*/, r7, r9 << 1
++ sub r2/*a7*/, r5, r6 << 1
++ sub r4/*a3*/, lr, r0 << 1
++ sub r8/*a1*/, r1, r3 << 1
++ sub r10/*a13*/, r8, r4
++ add r12/*a14*/, r10, r2
++ mov r0, -MAD_F(0x1bb67ae8)
++ mulsatrndwh.w r12/*m3*/, r12, r0:b
++ mulsatrndwh.w r7/*m4*/, r7, r0:b
++ lsl r12, 1
++ stdsp sp[7*4], r12
++
++ /* Registers used:
++ r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3
++
++ Free registers:
++ r0, r1, r3, r5, r6, r9, r10, r11, lr
++ */
++
++
++/*
++ a15 = a3 + a7;
++ m2 = mad_f_mul(a15, -c4) ;
++ a17 = a1 + a3;
++ m0 = mad_f_mul(a17, -c3) ;
++ a23 = (m4 << 1) + (m2 << 1);
++ tmp[15] = a23 + (m0 << 1); */
++ add r0/*a15*/, r4, r2
++ mov r1, -MAD_F(0x0af1d43a)
++ mulsatrndwh.w r0/*m2*/, r0, r1:b
++ mov r3, -MAD_F(0x1491b752)
++ add r5/*a17*/, r8, r4
++ mulsatrndwh.w r5/*m0*/, r5, r3:b
++ lsl r7, 1
++ add r6/*a23*/, r7, r0 << 1
++ add r6/*tmp[15]*/, r6, r5 << 1
++ stdsp sp[15*4], r6
++
++ /* Registers used:
++ r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1
++
++ Free registers:
++ r1, r3, r4, r6, r9, r10, r11, lr
++ */
++
++/*
++ a16 = a1 - a7;
++ m1 = mad_f_mul(a16, -c0) ;
++ a24 = (m4 << 1) - (m2 << 1);
++ tmp[11] = a24 - (m1 << 1);
++
++ a25 = (m4 << 1) + (m1 << 1);
++ tmp[ 3] = (m0 << 1) - a25;
++*/
++ sub r3/*a16*/, r8, r2
++ mov r4, -MAD_F(0x1f838b8d)
++ mulsatrndwh.w r3/*m1*/, r3, r4:b
++ sub r1/*a24*/, r7, r0 << 1
++ sub r1/*tmp[11]*/, r1, r3 << 1
++ stdsp sp[11*4], r1
++ add r7/*a25*/, r7, r3 << 1
++ sub r7, r7, r5 << 1
++ neg r7
++ lddsp r12, sp[4*18+4] /* Get y from stack */
++ stdsp sp[3*4], r7
++
++
++ /* output to every other slot for convenience */
++
++ /* End fastdct */
++
++ /* output accumulation */
++
++/* for (i = 3; i < 18; i += 8) {
++ tmp[i + 0] -= tmp[(i + 0) - 2];
++ tmp[i + 2] -= tmp[(i + 2) - 2];
++ tmp[i + 4] -= tmp[(i + 4) - 2];
++ tmp[i + 6] -= tmp[(i + 6) - 2];
++ }
++ }
++*/
++
++/* End SDCT-II */
++
++
++
++ /* scale reduction and output accumulation */
++
++/*
++ for (i = 1; i < 17; i += 4) {
++ tmp[i + 0] = tmp[i + 0] - tmp[(i + 0) - 1];
++ tmp[i + 1] = tmp[i + 1] - tmp[(i + 1) - 1];
++ tmp[i + 2] = tmp[i + 2] - tmp[(i + 2) - 1];
++ tmp[i + 3] = tmp[i + 3] - tmp[(i + 3) - 1];
++ }
++ tmp[17] = tmp[17] - tmp[16];
++ }
++*/
++/* End DCT-IV */
++
++
++ /* convert 18-point DCT-IV to 36-point IMDCT */
++
++/*
++ for (i = 0; i < 9; i += 3) {
++ y[i + 0] = tmp[9 + (i + 0)];
++ y[i + 1] = tmp[9 + (i + 1)];
++ y[i + 2] = tmp[9 + (i + 2)];
++ }
++ for (i = 9; i < 27; i += 3) {
++ y[i + 0] = -tmp[36 - (9 + (i + 0)) - 1];
++ y[i + 1] = -tmp[36 - (9 + (i + 1)) - 1];
++ y[i + 2] = -tmp[36 - (9 + (i + 2)) - 1];
++ }
++ for (i = 27; i < 36; i += 3) {
++ y[i + 0] = -tmp[(i + 0) - 27];
++ y[i + 1] = -tmp[(i + 1) - 27];
++ y[i + 2] = -tmp[(i + 2) - 27];
++ }
++ }
++*/
++
++ /* Registers used:
++ r0 = tmp[8], r1 = tmp[7], r2 = tmp[6], r3 = tmp[5], r4 = tmp[4]
++ r5 = tmp[3], r6 = tmp[2], r7 = tmp[1], r8 = tmp[0], r12 = y
++
++ Free registers:
++ r9, r10, r11, lr
++ */
++
++ ldm sp++, r0-r8 /* Get tmp[0]-tmp[8] from stack */
++ sub r5, r7 /* tmp[3] -= tmp[1]*/
++ sub r3, r5 /* tmp[5] -= tmp[3]*/
++ sub r1, r3 /* tmp[7] -= tmp[5]*/
++
++ sub r7, r8 /* tmp[1] -= tmp[0]*/
++ sub r6, r7 /* tmp[2] -= tmp[1]*/
++ sub r5, r6 /* tmp[3] -= tmp[2]*/
++ neg r8
++ st.w r12[26*4], r8 /* y[26] = -tmp[0] */
++ st.w r12[27*4], r8 /* y[27] = -tmp[0] */
++ neg r7
++ neg r6
++ st.w r12[25*4], r7 /* y[25] = -tmp[1] */
++ st.w r12[24*4], r6 /* y[24] = -tmp[2] */
++ st.d r12[28*4], r6 /* y[28] = -tmp[1], y[29] = -tmp[2]*/
++
++ sub r4, r5 /* tmp[4] -= tmp[3]*/
++ sub r3, r4 /* tmp[5] -= tmp[4]*/
++ neg r5
++ neg r4
++ st.w r12[23*4], r5 /* y[23] = -tmp[3] */
++ st.w r12[22*4], r4 /* y[22] = -tmp[4] */
++ st.d r12[30*4], r4 /* y[30] = -tmp[3], y[31] = -tmp[4]*/
++
++ ldm sp++, r4-r11,lr /* Get tmp[9]-tmp[17] from stack */
++
++ sub r2, r3 /* tmp[6] -= tmp[5]*/
++
++ sub lr, r1 /* tmp[9] -= tmp[7]*/
++ sub r10, lr /* tmp[11] -= tmp[9]*/
++ sub r8, r10 /* tmp[13] -= tmp[11]*/
++ sub r6, r8 /* tmp[15] -= tmp[13]*/
++ sub r4, r6 /* tmp[17] -= tmp[15]*/
++
++ sub r1, r2 /* tmp[7] -= tmp[6]*/
++ sub r0, r1 /* tmp[8] -= tmp[7]*/
++ neg r3
++ neg r2
++ st.w r12[21*4], r3 /* y[21] = -tmp[5] */
++ st.w r12[20*4], r2 /* y[20] = -tmp[6] */
++ st.d r12[32*4], r2 /* y[32] = -tmp[5], y[33] = -tmp[6]*/
++
++ sub lr, r0 /* tmp[9] -= tmp[8]*/
++ sub r11, lr /* tmp[10] -= tmp[9]*/
++ neg r1
++ neg r0
++ st.w r12[19*4], r1 /* y[19] = -tmp[7] */
++ st.w r12[18*4], r0 /* y[18] = -tmp[8] */
++ st.d r12[34*4], r0 /* y[34] = -tmp[7], y[35] = -tmp[8]*/
++
++ sub r10, r11 /* tmp[11] -= tmp[10]*/
++ sub r9, r10 /* tmp[12] -= tmp[11]*/
++
++ st.w r12[0*4], lr /* y[0] = tmp[9]*/
++ neg lr
++ st.w r12[17*4], lr /* y[17] = -tmp[9]*/
++ st.d r12[1*4], r10 /* y[1] = tmp[10], y[2] = tmp[11] */
++ neg r11
++ neg r10
++ st.w r12[16*4], r11 /* y[16] = -tmp[10] */
++ st.w r12[15*4], r10 /* y[15] = -tmp[11] */
++
++
++ sub r8, r9 /* tmp[13] -= tmp[12]*/
++ sub r7, r8 /* tmp[14] -= tmp[13]*/
++ st.d r12[3*4], r8 /* y[3] = tmp[12], y[4] = tmp[13] */
++ neg r9
++ neg r8
++ st.w r12[14*4], r9 /* y[14] = -tmp[12] */
++ st.w r12[13*4], r8 /* y[13] = -tmp[13] */
++
++ sub r6, r7 /* tmp[15] -= tmp[14]*/
++ sub r5, r6 /* tmp[16] -= tmp[15]*/
++ sub r4, r5 /* tmp[17] -= tmp[16]*/
++
++ st.d r12[5*4], r6 /* y[5] = tmp[14], y[6] = tmp[15] */
++ neg r7
++ neg r6
++ st.w r12[12*4], r7 /* y[12] = -tmp[14] */
++ st.w r12[11*4], r6 /* y[11] = -tmp[15] */
++
++ st.d r12[7*4], r4 /* y[7] = tmp[16], y[8] = tmp[17] */
++ neg r5
++ neg r4
++ st.w r12[10*4], r5 /* y[10] = -tmp[16] */
++ st.w r12[9*4], r4 /* y[9] = -tmp[17] */
++
++ popm r0-r7,r11,pc
++
++ .align 2
++scale_dctIV:
++ .short MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120)
++ .short MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b)
++ .short MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4)
++ .short MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3)
++ .short MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5)
++ .short MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c)
++
++ .align 2
++scale_sdctII:
++ .short MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930)
++ .short MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8)
++ .short MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7)
+diff --git a/layer3.c b/layer3.c
+index 4e5d3fa..dffdab3 100644
+--- a/layer3.c
++++ b/layer3.c
+@@ -378,6 +378,11 @@ mad_fixed_t const ca[8] = {
+ -MAD_F(0x003a2847) /* -0.014198569 */, -MAD_F(0x000f27b4) /* -0.003699975 */
+ };
+
++#ifdef FPM_AVR32
++# undef MAD_F
++# define MAD_F(x) ((x + (1 << 12)) >> 13)
++#endif
++
+ /*
+ * IMDCT coefficients for short blocks
+ * derived from section 2.4.3.4.10.2 of ISO/IEC 11172-3
+@@ -386,7 +391,7 @@ mad_fixed_t const ca[8] = {
+ * imdct_s[i /odd][k] = cos((PI / 24) * (2 * (6 + (i-1)/2) + 7) * (2 * k + 1))
+ */
+ static
+-mad_fixed_t const imdct_s[6][6] = {
++mad_coeff_t const imdct_s[6][6] = {
+ # include "imdct_s.dat"
+ };
+
+@@ -398,7 +403,7 @@ mad_fixed_t const imdct_s[6][6] = {
+ * window_l[i] = sin((PI / 36) * (i + 1/2))
+ */
+ static
+-mad_fixed_t const window_l[36] = {
++mad_coeff_t const window_l[36] = {
+ MAD_F(0x00b2aa3e) /* 0.043619387 */, MAD_F(0x0216a2a2) /* 0.130526192 */,
+ MAD_F(0x03768962) /* 0.216439614 */, MAD_F(0x04cfb0e2) /* 0.300705800 */,
+ MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x07635284) /* 0.461748613 */,
+@@ -429,7 +434,7 @@ mad_fixed_t const window_l[36] = {
+ * window_s[i] = sin((PI / 12) * (i + 1/2))
+ */
+ static
+-mad_fixed_t const window_s[12] = {
++mad_coeff_t const window_s[12] = {
+ MAD_F(0x0216a2a2) /* 0.130526192 */, MAD_F(0x061f78aa) /* 0.382683432 */,
+ MAD_F(0x09bd7ca0) /* 0.608761429 */, MAD_F(0x0cb19346) /* 0.793353340 */,
+ MAD_F(0x0ec835e8) /* 0.923879533 */, MAD_F(0x0fdcf549) /* 0.991444861 */,
+@@ -438,6 +443,11 @@ mad_fixed_t const window_s[12] = {
+ MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x0216a2a2) /* 0.130526192 */,
+ };
+
++#ifdef FPM_AVR32
++# undef MAD_F
++# define MAD_F(x) ((mad_fixed_t) (x##L))
++#endif
++
+ /*
+ * coefficients for intensity stereo processing
+ * derived from section 2.4.3.4.9.3 of ISO/IEC 11172-3
+@@ -879,6 +889,42 @@ void III_exponents(struct channel const *channel,
+ * NAME: III_requantize()
+ * DESCRIPTION: requantize one (positive) value
+ */
++
++#if 0
++/*static*/
++mad_fixed_t III_requantize(unsigned int value, signed int exp)
++{
++ register mad_fixed_t tmp2, tmp3;
++ long long tmp_d;
++
++ asm ("asr\t%0, %1, 2\n"
++ "ld.w\t%2, %4[%5 << 2]\n"
++ "sub\t%1, %1, %0 << 2\n"
++ "asr\t%3, %2, 7\n"
++ "andl\t%2, 0x7f, COH\n"
++ "add\t%0, %2\n"
++ "lsl\t%m0,%3,%0\n"
++ "neg\t%0\n"
++ "asr\t%3,%3,%0\n"
++ "add\t%2, %6, %1 << 2\n"
++ "ld.w\t%2, %2[12]\n"
++ "cp.w\t%0, 0\n"
++ "movlt\t%3, %m0\n"
++ "muls.d\t%0, %3, %2\n"
++ "cp.w\t%1, 0\n"
++ "breq\t0f\n"
++ "lsr\t%0, %0, 28\n"
++ "or\t%3, %0, %m0 << 4\n"
++ "0:\n"
++ : "=&r"(tmp_d), "+r"(exp), "=&r"(tmp2), "=&r"(tmp3)
++ : "r"(&rq_table), "r"(value), "r"(root_table));
++
++
++ return tmp3;
++}
++
++#else
++
+ static
+ mad_fixed_t III_requantize(unsigned int value, signed int exp)
+ {
+@@ -918,6 +964,7 @@ mad_fixed_t III_requantize(unsigned int value, signed int exp)
+
+ return frac ? mad_f_mul(requantized, root_table[3 + frac]) : requantized;
+ }
++#endif
+
+ /* we must take care that sz >= bits and sz < sizeof(long) lest bits == 0 */
+ # define MASK(cache, sz, bits) \
+@@ -2054,27 +2101,42 @@ void imdct36(mad_fixed_t const X[18], mad_fixed_t x[36])
+ }
+ # endif
+
++
++#ifdef FPM_AVR32
++# undef mad_f_mul
++# define mad_f_mul(x, y) __builtin_mulsatrndwh_w(x, y)
++#endif
++
+ /*
+ * NAME: III_imdct_l()
+ * DESCRIPTION: perform IMDCT and windowing for long blocks
+ */
+ static
+-void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
++void III_imdct_l(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36],
+ unsigned int block_type)
+ {
+ unsigned int i;
++ mad_fixed_t *z_ptr;
++ mad_coeff_t *w_ptr;
+
+ /* IMDCT */
+
++#ifdef FPM_AVR32
++ imdct36_avr32(X, z);
++#else
+ imdct36(X, z);
++#endif
+
+ /* windowing */
+
++ z_ptr = &z[0];
++ w_ptr = &window_l[0];
++
+ switch (block_type) {
+ case 0: /* normal window */
+ # if defined(ASO_INTERLEAVE1)
+ {
+- register mad_fixed_t tmp1, tmp2;
++ register mad_coeff_t tmp1, tmp2;
+
+ tmp1 = window_l[0];
+ tmp2 = window_l[1];
+@@ -2091,15 +2153,16 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
+ }
+ # elif defined(ASO_INTERLEAVE2)
+ {
+- register mad_fixed_t tmp1, tmp2;
++ register mad_fixed_t tmp1;
++ register mad_coeff_t tmp2;
+
+- tmp1 = z[0];
+- tmp2 = window_l[0];
++ tmp1 = *z_ptr;
++ tmp2 = *w_ptr++;
+
+ for (i = 0; i < 35; ++i) {
+- z[i] = mad_f_mul(tmp1, tmp2);
+- tmp1 = z[i + 1];
+- tmp2 = window_l[i + 1];
++ *z_ptr++ = mad_f_mul(tmp1, tmp2);
++ tmp1 = *z_ptr;
++ tmp2 = *w_ptr++;
+ }
+
+ z[35] = mad_f_mul(tmp1, tmp2);
+@@ -2118,23 +2181,28 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
+
+ case 1: /* start block */
+ for (i = 0; i < 18; i += 3) {
+- z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]);
+- z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]);
+- z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]);
++ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++);
++ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++);
++ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++);
+ }
++ z_ptr += 6;
++ w_ptr = &window_s[6];
+ /* (i = 18; i < 24; ++i) z[i] unchanged */
+- for (i = 24; i < 30; ++i) z[i] = mad_f_mul(z[i], window_s[i - 18]);
+- for (i = 30; i < 36; ++i) z[i] = 0;
++ for (i = 24; i < 30; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
++ for (i = 30; i < 36; ++i) *z_ptr++ = 0;
+ break;
+
+ case 3: /* stop block */
+- for (i = 0; i < 6; ++i) z[i] = 0;
+- for (i = 6; i < 12; ++i) z[i] = mad_f_mul(z[i], window_s[i - 6]);
++ w_ptr = &window_s[0];
++ for (i = 0; i < 6; ++i) *z_ptr++ = 0;
++ for (i = 6; i < 12; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
+ /* (i = 12; i < 18; ++i) z[i] unchanged */
++ w_ptr = &window_l[18];
++ z_ptr += 6;
+ for (i = 18; i < 36; i += 3) {
+- z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]);
+- z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]);
+- z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]);
++ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++ );
++ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
++ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
+ }
+ break;
+ }
+@@ -2146,10 +2214,10 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
+ * DESCRIPTION: perform IMDCT and windowing for short blocks
+ */
+ static
+-void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
++void III_imdct_s(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36])
+ {
+ mad_fixed_t y[36], *yptr;
+- mad_fixed_t const *wptr;
++ mad_coeff_t const *wptr;
+ int w, i;
+ register mad_fixed64hi_t hi;
+ register mad_fixed64lo_t lo;
+@@ -2159,11 +2227,56 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
+ yptr = &y[0];
+
+ for (w = 0; w < 3; ++w) {
+- register mad_fixed_t const (*s)[6];
++ register mad_coeff_t const (*s)[6];
+
+ s = imdct_s;
+
+ for (i = 0; i < 3; ++i) {
++#ifdef FPM_AVR32
++ register long long int acc, tmp1, tmp2, tmp3, tmp4;
++ asm volatile ("ld.d\t%0, %5++\n"
++ "ld.d\t%1, %6[0]\n"
++ "ld.d\t%2, %6[2*4]\n"
++ "ld.d\t%3, %6[4*4]\n"
++ "mulwh.d\t%4, %m1, %m0:t\n"
++ "macwh.d\t%4, %1, %m0:b\n"
++ "ld.w\t%m0, %5++\n"
++ "macwh.d\t%4, %m2, %0:t\n"
++ "macwh.d\t%4, %2, %0:b\n"
++ "macwh.d\t%4, %m3, %m0:t\n"
++ "macwh.d\t%4, %3, %m0:b\n"
++ "ld.d\t%0, %5++\n"
++ "rol\t%4\n"
++ "rol\t%m4\n"
++ : "=&r"(tmp1), "=&r"(tmp2), "=&r"(tmp3), "=&r"(tmp4),
++ "=&r"(acc), "+r"(s)
++ : "r"(X));
++
++ asm volatile ("st.w\t%1[0], %m0\n"
++ "neg\t%m0\n"
++ "st.w\t%2[5*4], %m0\n"
++ : "+r"(acc)
++ : "r"(&yptr[i]), "r"(&yptr[-i]));
++
++ asm volatile ("mulwh.d\t%4, %m1, %m0:t\n"
++ "macwh.d\t%4, %1, %m0:b\n"
++ "ld.w\t%m0, %5++\n"
++ "macwh.d\t%4, %m2, %0:t\n"
++ "macwh.d\t%4, %2, %0:b\n"
++ "macwh.d\t%4, %m3, %m0:t\n"
++ "macwh.d\t%4, %3, %m0:b\n"
++ "rol\t%4\n"
++ "rol\t%m4\n"
++ : "+r"(tmp1), "+r"(tmp2), "+r"(tmp3), "+r"(tmp4),
++ "=&r"(acc), "+r"(s)
++ : "r"(X));
++
++ asm volatile ( "st.w\t%1[6*4], %m0\n"
++ "st.w\t%2[11*4], %m0\n"
++ :: "r"(acc), "r"(&yptr[i]), "r"(&yptr[-i]));
++
++
++#else
+ MAD_F_ML0(hi, lo, X[0], (*s)[0]);
+ MAD_F_MLA(hi, lo, X[1], (*s)[1]);
+ MAD_F_MLA(hi, lo, X[2], (*s)[2]);
+@@ -2187,6 +2300,7 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
+ yptr[11 - i] = yptr[i + 6];
+
+ ++s;
++#endif
+ }
+
+ yptr += 12;
+@@ -2198,6 +2312,196 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
+ yptr = &y[0];
+ wptr = &window_s[0];
+
++#ifdef FPM_AVR32
++ /* z[0] = 0;
++ z[1] = 0;
++ z[2] = 0;
++ z[3] = 0;
++ z[4] = 0;
++ z[5] = 0;
++ z[30] = 0;
++ z[31] = 0;
++ z[32] = 0;
++ z[33] = 0;
++ z[34] = 0;
++ z[35] = 0;
++ */
++ {
++ register long long int tmp, tmp2, tmp3, w0123, w4567, w891011;
++ asm volatile ("mov\t%m0, 0\n"
++ "mov\t%0, %m0\n"
++ "st.d\t%1[0], %0\n"
++ "st.d\t%1[2*4], %0\n"
++ "st.d\t%1[4*4], %0\n"
++ "st.d\t%1[30*4], %0\n"
++ "st.d\t%1[32*4], %0\n"
++ "st.d\t%1[34*4], %0\n"
++ : "=&r"(tmp) : "r"(z));
++
++
++
++ /*
++ z[6] = mad_f_mul(yptr [0], wptr[0]);
++ z[7] = mad_f_mul(yptr [1], wptr[1]);
++ z[8] = mad_f_mul(yptr [2], wptr[2]);
++ z[9] = mad_f_mul(yptr [3], wptr[3]);
++ z[10] = mad_f_mul(yptr[4], wptr[4]);
++ z[11] = mad_f_mul(yptr[5], wptr[5]);
++ z[24] = mad_f_mul(yptr [30], wptr[6]);
++ z[25] = mad_f_mul(yptr [31], wptr[7]);
++ z[26] = mad_f_mul(yptr [32], wptr[8]);
++ z[27] = mad_f_mul(yptr [33], wptr[9]);
++ z[28] = mad_f_mul(yptr[34], wptr[10]);
++ z[29] = mad_f_mul(yptr[35], wptr[11]);
++ */
++
++
++ asm volatile ("ld.d\t%0, %5[0*4]\n"
++ "ld.d\t%3, %6[0*4]\n"
++ "ld.d\t%1, %5[2*4]\n"
++ "ld.d\t%2, %5[4*4]\n"
++ "mulsatrndwh.w\t%m3, %m3, %m0:t\n"
++ "mulsatrndwh.w\t%3, %3, %m0:b\n"
++ "ld.d\t%4, %6[2*4]\n"
++ "st.d\t%7[6*4], %3\n"
++
++ "mulsatrndwh.w\t%m4, %m4, %0:t\n"
++ "mulsatrndwh.w\t%4, %4, %0:b\n"
++ "ld.d\t%3, %6[4*4]\n"
++ "st.d\t%7[8*4], %4\n"
++
++ "mulsatrndwh.w\t%m3, %m3, %m1:t\n"
++ "mulsatrndwh.w\t%3, %3, %m1:b\n"
++ "ld.d\t%4, %6[30*4]\n"
++ "st.d\t%7[10*4], %3\n"
++
++ "mulsatrndwh.w\t%m4, %m4, %1:t\n"
++ "mulsatrndwh.w\t%4, %4, %1:b\n"
++ "ld.d\t%3, %6[32*4]\n"
++ "st.d\t%7[24*4], %4\n"
++
++ "mulsatrndwh.w\t%m3, %m3, %m2:t\n"
++ "mulsatrndwh.w\t%3, %3, %m2:b\n"
++ "ld.d\t%4, %6[34*4]\n"
++ "st.d\t%7[26*4], %3\n"
++
++ "mulsatrndwh.w\t%m4, %m4, %2:t\n"
++ "mulsatrndwh.w\t%4, %4, %2:b\n"
++ "st.d\t%7[28*4], %4\n"
++
++ : "=&r"(w0123), "=&r"(w4567), "=&r"(w891011), "=&r"(tmp), "=&r"(tmp2)
++ : "r"(wptr), "r"(yptr), "r"(z));
++ /*
++ MAD_F_ML0(hi, lo, yptr[6], wptr[6]);
++ MAD_F_MLA(hi, lo, yptr[12], wptr[0]);
++ z[12] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[7], wptr[7]);
++ MAD_F_MLA(hi, lo, yptr[13], wptr[1]);
++ z[13] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[8], wptr[8]);
++ MAD_F_MLA(hi, lo, yptr[14], wptr[2]);
++ z[14] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[9], wptr[9]);
++ MAD_F_MLA(hi, lo, yptr[15], wptr[3]);
++ z[15] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[10], wptr[10]);
++ MAD_F_MLA(hi, lo, yptr[16], wptr[4]);
++ z[16] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[11], wptr[11]);
++ MAD_F_MLA(hi, lo, yptr[17], wptr[5]);
++ z[17] = MAD_F_MLZ(hi, lo);
++
++ MAD_F_ML0(hi, lo, yptr[18], wptr[6]);
++ MAD_F_MLA(hi, lo, yptr[24], wptr[0]);
++ z[18] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[19], wptr[7]);
++ MAD_F_MLA(hi, lo, yptr[25], wptr[1]);
++ z[19] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[20], wptr[8]);
++ MAD_F_MLA(hi, lo, yptr[26], wptr[2]);
++ z[20] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[21], wptr[9]);
++ MAD_F_MLA(hi, lo, yptr[27], wptr[3]);
++ z[21] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[22], wptr[10]);
++ MAD_F_MLA(hi, lo, yptr[28], wptr[4]);
++ z[22] = MAD_F_MLZ(hi, lo);
++ MAD_F_ML0(hi, lo, yptr[23], wptr[11]);
++ MAD_F_MLA(hi, lo, yptr[29], wptr[5]);
++ z[23] = MAD_F_MLZ(hi, lo);*/
++
++
++ asm volatile ("ld.d\t%0, %3[6*4]\n"
++ "ld.d\t%1, %3[12*4]\n"
++ "mulwh.d\t%2, %m0, %5:t\n"
++ "macwh.d\t%2, %m1, %m4:t\n"
++ "mulwh.d\t%0, %0, %5:b\n"
++ "macwh.d\t%0, %1, %m4:b\n"
++ "lsl\t%m2, 1\n"
++ "lsl\t%2, %m0, 1\n"
++ "st.d\t%6[12*4], %2\n"
++
++ "ld.d\t%0, %3[18*4]\n"
++ "ld.d\t%1, %3[24*4]\n"
++ "mulwh.d\t%2, %m0, %5:t\n"
++ "macwh.d\t%2, %m1, %m4:t\n"
++ "mulwh.d\t%0, %0, %5:b\n"
++ "macwh.d\t%0, %1, %m4:b\n"
++ "lsl\t%m2, 1\n"
++ "lsl\t%2, %m0, 1\n"
++ "st.d\t%6[18*4], %2\n"
++
++ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3)
++ : "r"(yptr), "r"(w0123), "r"(w4567), "r"(z));
++
++ asm volatile ("ld.d\t%0, %3[8*4]\n"
++ "ld.d\t%1, %3[14*4]\n"
++ "mulwh.d\t%2, %m0, %m5:t\n"
++ "macwh.d\t%2, %m1, %4:t\n"
++ "mulwh.d\t%0, %0, %m5:b\n"
++ "macwh.d\t%0, %1, %4:b\n"
++ "lsl\t%m2, 1\n"
++ "lsl\t%2, %m0, 1\n"
++ "st.d\t%6[14*4], %2\n"
++
++ "ld.d\t%0, %3[20*4]\n"
++ "ld.d\t%1, %3[26*4]\n"
++ "mulwh.d\t%2, %m0, %m5:t\n"
++ "macwh.d\t%2, %m1, %4:t\n"
++ "mulwh.d\t%0, %0, %m5:b\n"
++ "macwh.d\t%0, %1, %4:b\n"
++ "lsl\t%m2, 1\n"
++ "lsl\t%2, %m0, 1\n"
++ "st.d\t%6[20*4], %2\n"
++
++ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3)
++ : "r"(yptr), "r"(w0123), "r"(w891011), "r"(z));
++
++ asm volatile ("ld.d\t%0, %3[10*4]\n"
++ "ld.d\t%1, %3[16*4]\n"
++ "mulwh.d\t%2, %m0, %5:t\n"
++ "macwh.d\t%2, %m1, %m4:t\n"
++ "mulwh.d\t%0, %0, %5:b\n"
++ "macwh.d\t%0, %1, %m4:b\n"
++ "lsl\t%m2, 1\n"
++ "lsl\t%2, %m0, 1\n"
++ "st.d\t%6[16*4], %2\n"
++
++ "ld.d\t%0, %3[22*4]\n"
++ "ld.d\t%1, %3[28*4]\n"
++ "mulwh.d\t%2, %m0, %5:t\n"
++ "macwh.d\t%2, %m1, %m4:t\n"
++ "mulwh.d\t%0, %0, %5:b\n"
++ "macwh.d\t%0, %1, %m4:b\n"
++ "lsl\t%m2, 1\n"
++ "lsl\t%2, %m0, 1\n"
++ "st.d\t%6[22*4], %2\n"
++
++ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3)
++ : "r"(yptr), "r"(w4567), "r"(w891011), "r"(z));
++
++ }
++#else
+ for (i = 0; i < 6; ++i) {
+ z[i + 0] = 0;
+ z[i + 6] = mad_f_mul(yptr[ 0 + 0], wptr[0]);
+@@ -2218,8 +2522,15 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
+ ++yptr;
+ ++wptr;
+ }
++#endif
+ }
+
++#ifdef FPM_AVR32
++# undef mad_f_mul
++# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \
++ (((y) + (1L << 15)) >> 16))
++#endif
++
+ /*
+ * NAME: III_overlap()
+ * DESCRIPTION: perform overlap-add of windowed IMDCT outputs
+diff --git a/synth.c b/synth.c
+index 1d28d43..f42d49b 100644
+--- a/synth.c
++++ b/synth.c
+@@ -29,20 +29,6 @@
+ # include "frame.h"
+ # include "synth.h"
+
+-/*
+- * NAME: synth->init()
+- * DESCRIPTION: initialize synth struct
+- */
+-void mad_synth_init(struct mad_synth *synth)
+-{
+- mad_synth_mute(synth);
+-
+- synth->phase = 0;
+-
+- synth->pcm.samplerate = 0;
+- synth->pcm.channels = 0;
+- synth->pcm.length = 0;
+-}
+
+ /*
+ * NAME: synth->mute()
+@@ -88,6 +74,10 @@ void mad_synth_mute(struct mad_synth *synth)
+
+ /* FPM_DEFAULT without OPT_SSO will actually lose accuracy and performance */
+
++# if defined(FPM_AVR32)
++# define OPT_SSO
++# endif
++
+ # if defined(FPM_DEFAULT) && !defined(OPT_SSO)
+ # define OPT_SSO
+ # endif
+@@ -522,9 +512,15 @@ void dct32(mad_fixed_t const in[32], unsigned int slot,
+ # endif
+ # define ML0(hi, lo, x, y) ((lo) = (x) * (y))
+ # define MLA(hi, lo, x, y) ((lo) += (x) * (y))
+-# define MLN(hi, lo) ((lo) = -(lo))
+-# define MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo))
+-# define SHIFT(x) ((x) >> 2)
++# if defined(FPM_AVR32)
++# define MLN(hi, lo) MAD_F_MLN((hi), (lo))
++# define MLZ(hi, lo) (hi)
++# define SHIFT(x) ((x) << 2)
++# else
++# define MLN(hi, lo) ((lo) = -(lo))
++# define MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo))
++# define SHIFT(x) ((x) >> 2)
++# endif
+ # define PRESHIFT(x) ((MAD_F(x) + (1L << 13)) >> 14)
+ # else
+ # define ML0(hi, lo, x, y) MAD_F_ML0((hi), (lo), (x), (y))
+@@ -541,11 +537,54 @@ void dct32(mad_fixed_t const in[32], unsigned int slot,
+ # endif
+ # endif
+
++/*
++ * NAME: synth->init()
++ * DESCRIPTION: initialize synth struct
++ */
++
++#ifdef FPM_AVR32
++short Dmod[17][33];
++#endif
++
+ static
++#ifdef FPM_AVR32
++short const D[17][32] = {
++#else
+ mad_fixed_t const D[17][32] = {
++#endif
+ # include "D.dat"
+ };
+
++void mad_synth_init(struct mad_synth *synth)
++{
++
++ mad_synth_mute(synth);
++
++ synth->phase = 0;
++
++ synth->pcm.samplerate = 0;
++ synth->pcm.channels = 0;
++ synth->pcm.length = 0;
++
++#ifdef FPM_AVR32
++ {
++ int i, j;
++ for ( i = 0; i < 17; i++ ){
++ for ( j = 0; j < 32; j++ ){
++ if ( j & 1 ){
++ Dmod[i][17 + (j >> 1)]= D[i][j];
++ } else {
++ Dmod[i][(j >> 1)]= D[i][j];
++ }
++ }
++
++ Dmod[i][16]= Dmod[i][16+8];
++ }
++ }
++#endif
++
++}
++
+ # if defined(ASO_SYNTH)
+ void synth_full(struct mad_synth *, struct mad_frame const *,
+ unsigned int, unsigned int);
+@@ -560,9 +599,13 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
+ {
+ unsigned int phase, ch, s, sb, pe, po;
+ mad_fixed_t *pcm1, *pcm2, (*filter)[2][2][16][8];
+- mad_fixed_t const (*sbsample)[36][32];
++ mad_fixed_t /*const*/ (*sbsample)[36][32];
+ register mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8];
++#ifdef FPM_AVR32
++ register short const (*Dptr)[32], *ptr;
++#else
+ register mad_fixed_t const (*Dptr)[32], *ptr;
++#endif
+ register mad_fixed64hi_t hi;
+ register mad_fixed64lo_t lo;
+
+@@ -573,6 +616,20 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
+ pcm1 = synth->pcm.samples[ch];
+
+ for (s = 0; s < ns; ++s) {
++# ifdef FPM_AVR32
++/*
++ int i;
++ for ( i = 0; i < 32; i++ ){
++ (*sbsample)[s][i] = ((*sbsample)[s][i] + (1 << 13)) & 0xFFFFC000;
++ }
++*/
++ dct32_avr32((*sbsample)[s], phase >> 1,
++ (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
++ /* printf("dct32: %d\n", GET_CYCLES);*/
++ pcm1 = synth_avr32(phase, (mad_fixed_t *)filter, \
++ pcm1, (short *)&Dmod[0]);
++ /* printf("synth_window: %d\n", GET_CYCLES);*/
++# else
+ dct32((*sbsample)[s], phase >> 1,
+ (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
+
+@@ -679,6 +736,7 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
+ MLA(hi, lo, (*fo)[7], ptr[ 2]);
+
+ *pcm1 = SHIFT(-MLZ(hi, lo));
++# endif
+ pcm1 += 16;
+
+ phase = (phase + 1) % 16;
+diff --git a/synth_avr32.S b/synth_avr32.S
+new file mode 100644
+index 0000000..701077b
+--- /dev/null
++++ b/synth_avr32.S
+@@ -0,0 +1,394 @@
++/*
++ Optimized function for speeding up synthesis filter
++ in MPEG Audio Decoding.
++ Copyright 2003-2006 Atmel Corporation.
++
++ Written by Ronny Pedersen and Lars Even Almås, Atmel Norway
++
++ 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. */
++
++
++/* *****************
++ Defining macros
++ ***************** */
++
++ .macro window_1 f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi
++ ld.d \tmp1_lo, \f[0*4] /* tmp1 = { f[0], f[1] } */
++ ld.w \tmp2_lo, \ptr[0*2+\ptr_offset*2] /* tmp2_lo = { ptr[0], ptr[1] }*/
++ ld.d \tmp3_lo, \f[6*4] /* tmp3 = { f[6], f[7] } */
++ ld.w \tmp2_hi, \ptr[6*2+\ptr_offset*2] /* tmp2_hi = { ptr[6], ptr[7] }*/
++ .if \mul
++ mulwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[0]*/
++ .else
++ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[0]*/
++ .endif
++ macwh.d \acc, \tmp3_lo, \tmp2_lo:b /* f[7] * ptr[1]*/
++ ld.w \tmp2_lo, \ptr[2*2+\ptr_offset*2] /* tmp2_lo = { ptr[2], ptr[3] }*/
++ macwh.d \acc, \tmp1_lo, \tmp2_hi:b /* f[1] * ptr[7]*/
++ ld.d \tmp1_lo, \f[2*4] /* tmp1 = { f[2], f[3] } */
++
++ macwh.d \acc, \tmp3_hi, \tmp2_lo:t /* f[6] * ptr[2]*/
++ macwh.d \acc, \tmp1_hi, \tmp2_hi:t /* f[2] * ptr[6]*/
++ ld.d \tmp3_lo, \f[4*4] /* tmp3 = { f[4], f[5] } */
++ ld.w \tmp2_hi, \ptr[4*2+\ptr_offset*2] /* tmp2_hi = { ptr[4], ptr[5] }*/
++ macwh.d \acc, \tmp3_lo, \tmp2_lo:b /* f[5] * ptr[3]*/
++
++ macwh.d \acc, \tmp1_lo, \tmp2_hi:b /* f[3] * ptr[5]*/
++ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[4] * ptr[4]*/
++ .endm
++
++ .macro window_2 f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi
++ ld.d \tmp1_lo, \f[0*4] /* tmp1 = { f[0], f[1] } */
++ ld.w \tmp2_lo, \ptr[7*2+\ptr_offset*2] /* tmp2_lo = { ptr[7], ptr[8] }*/
++ ld.d \tmp3_lo, \f[2*4] /* tmp3 = { f[2], f[3] } */
++ ld.w \tmp2_hi, \ptr[9*2+\ptr_offset*2] /* tmp2_hi = { ptr[9], ptr[10] }*/
++ .if \mul
++ mulwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[7]*/
++ .else
++ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[7]*/
++ .endif
++ macwh.d \acc, \tmp1_lo, \tmp2_lo:b /* f[1] * ptr[8]*/
++
++ ld.d \tmp1_lo, \f[4*4] /* tmp1 = { f[4], f[5] } */
++ ld.w \tmp2_lo, \ptr[11*2+\ptr_offset*2] /* tmp2_lo = { ptr[11], ptr[12] }*/
++
++ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[2] * ptr[9]*/
++ macwh.d \acc, \tmp3_lo, \tmp2_hi:b /* f[3] * ptr[10]*/
++
++ ld.d \tmp3_lo, \f[6*4] /* tmp3 = { f[6], f[7] } */
++ ld.w \tmp2_hi, \ptr[13*2+\ptr_offset*2] /* tmp2_hi = { ptr[13], ptr[14] }*/
++
++ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[4] * ptr[11]*/
++ macwh.d \acc, \tmp1_lo, \tmp2_lo:b /* f[5] * ptr[12]*/
++ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[6] * ptr[13]*/
++ macwh.d \acc, \tmp3_lo, \tmp2_hi:b /* f[7] * ptr[14]*/
++ .endm
++
++ .macro scale res, d_lo, d_hi
++ lsl \d_hi, 2
++ .endm
++
++/* **********************
++ Starting main function
++ ********************** */
++
++/* Function synth_avr32 is called from synth.c with arguments:
++ phase, filter, *pcm1, &D[0] */
++
++ .global synth_avr32
++synth_avr32:
++ pushm r0-r7, lr
++ sub sp, 8
++
++ /* R12 = phase, R11 = filter, R10 = pcm1, r9 = D*/
++ bld r12, 0
++ brcc synth_even
++
++ /* Filter for odd phases */
++
++ /* fe = &(*filter)[0][1][0];
++ fx = &(*filter)[0][0][0];
++ fo = &(*filter)[1][0][0]; */
++ sub lr /*fe*/, r11, -16*8*4
++ sub r8 /*fo*/, r11, -16*8*4*2
++
++ /* pe = phase >> 1; */
++ lsr r12, 1
++ stdsp sp[4], r12
++ /* ptr = (short const *)Dmod + pe; */
++ add r12, r9, r12 << 1
++
++ /* ML0(hi, lo, (*fx)[0], ptr[0 + 17]);
++ MLA(hi, lo, (*fx)[1], ptr[7 + 17]);
++ MLA(hi, lo, (*fx)[2], ptr[6 + 17]);
++ MLA(hi, lo, (*fx)[3], ptr[5 + 17]);
++ MLA(hi, lo, (*fx)[4], ptr[4 + 17]);
++ MLA(hi, lo, (*fx)[5], ptr[3 + 17]);
++ MLA(hi, lo, (*fx)[6], ptr[2 + 17]);
++ MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */
++ window_1 r11/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++
++ /* MLN(hi, lo); */
++ neg r0
++ acr r1
++ neg r1
++
++ /* MLA(hi, lo, (*fe)[0], ptr[0]);
++ MLA(hi, lo, (*fe)[1], ptr[7]);
++ MLA(hi, lo, (*fe)[2], ptr[6]);
++ MLA(hi, lo, (*fe)[3], ptr[5]);
++ MLA(hi, lo, (*fe)[4], ptr[4]);
++ MLA(hi, lo, (*fe)[5], ptr[3]);
++ MLA(hi, lo, (*fe)[6], ptr[2]);
++ MLA(hi, lo, (*fe)[7], ptr[1]); */
++ window_1 lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
++
++ /* *pcm1++ = SHIFT(MLZ(hi, lo));
++
++ pcm2 = pcm1 + 31; */
++ scale r1, r0, r1
++ st.w r10/*pcm_1*/++, r1
++ sub r11/*pcm2*/, r10, -4*31
++
++ /* for (sb = 1; sb < 16; ++sb) { */
++ mov r2, 15
++ stdsp sp[0], r2
++odd_loop:
++ /* ++fe;
++ ptr += 33; */
++ sub lr /*fe*/, -8*4
++ sub r12, -33*2
++
++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++ /* MLN(hi, lo); */
++
++ neg r0
++ acr r1
++ neg r1
++
++ /* MLA(hi, lo, (*fe)[7], ptr[1]);
++ MLA(hi, lo, (*fe)[6], ptr[2]);
++ MLA(hi, lo, (*fe)[5], ptr[3]);
++ MLA(hi, lo, (*fe)[4], ptr[4]);
++ MLA(hi, lo, (*fe)[3], ptr[5]);
++ MLA(hi, lo, (*fe)[2], ptr[6]);
++ MLA(hi, lo, (*fe)[1], ptr[7]);
++ MLA(hi, lo, (*fe)[0], ptr[0]); */
++ window_1 lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
++
++ /* ptr -= 2*pe; */
++ lddsp r2, sp[4]
++
++ /* *pcm1++ = SHIFT(MLZ(hi, lo)); */
++
++ scale r1, r0, r1
++ sub r12/*ptr*/, r12, r2/*pe*/<< 2
++ st.w r10/*pcm_1*/++, r1
++
++
++ /* ML0(hi, lo, (*fe)[0], ptr[7 + 17]);
++ MLA(hi, lo, (*fe)[1], ptr[8 + 17]);
++ MLA(hi, lo, (*fe)[2], ptr[9 + 17]);
++ MLA(hi, lo, (*fe)[3], ptr[10 + 17]);
++ MLA(hi, lo, (*fe)[4], ptr[11 + 17]);
++ MLA(hi, lo, (*fe)[5], ptr[12 + 17]);
++ MLA(hi, lo, (*fe)[6], ptr[13 + 17]);
++ MLA(hi, lo, (*fe)[7], ptr[14 + 17]); */
++ window_2 lr/*fe*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++ /* MLA(hi, lo, (*fo)[7], ptr[14]);
++ MLA(hi, lo, (*fo)[6], ptr[13]);
++ MLA(hi, lo, (*fo)[5], ptr[12]);
++ MLA(hi, lo, (*fo)[4], ptr[11]);
++ MLA(hi, lo, (*fo)[3], ptr[10]);
++ MLA(hi, lo, (*fo)[2], ptr[9]);
++ MLA(hi, lo, (*fo)[1], ptr[8]);
++ MLA(hi, lo, (*fo)[0], ptr[7]); */
++ window_2 r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
++
++
++ /* *pcm2-- = SHIFT(MLZ(hi, lo)); */
++ lddsp r3, sp[4]
++ lddsp r2, sp[0]
++ scale r1, r0, r1
++ st.w --r11/*pcm_2*/, r1
++
++ /* ptr += 2*pe; */
++ add r12/*ptr*/, r12, r3/*pe*/<< 2
++
++ /* ++fo;
++ } */
++ sub r8/*fo*/, -8*4
++
++ sub r2, 1
++ stdsp sp[0], r2
++ brne odd_loop
++
++ /* ptr += 33; */
++ sub r12/*ptr*/, -33*2
++
++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++
++ rjmp synth_end
++synth_even:
++ /* Filter for even phases */
++
++ /* fe = &(*filter)[0][0][0];
++ fx = &(*filter)[0][1][0];
++ fo = &(*filter)[1][1][0]; */
++ sub lr /*fx*/, r11, -16*8*4
++ sub r8 /*fo*/, r11, -(16*8*4*2 + 16*8*4)
++
++ /* po = ((phase - 1) & 0xF) >> 1; */
++ sub r12, 1
++ andl r12, 0xe, COH
++ stdsp sp[4], r12
++ /* ptr = (short const *)Dmod + po; */
++ add r12, r9, r12
++
++ /* ML0(hi, lo, (*fx)[0], ptr[0 + 17]);
++ MLA(hi, lo, (*fx)[1], ptr[7 + 17]);
++ MLA(hi, lo, (*fx)[2], ptr[6 + 17]);
++ MLA(hi, lo, (*fx)[3], ptr[5 + 17]);
++ MLA(hi, lo, (*fx)[4], ptr[4 + 17]);
++ MLA(hi, lo, (*fx)[5], ptr[3 + 17]);
++ MLA(hi, lo, (*fx)[6], ptr[2 + 17]);
++ MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */
++ window_1 lr/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++
++ /* MLN(hi, lo); */
++ neg r0
++ acr r1
++ neg r1
++
++ /* MLA(hi, lo, (*fe)[0], ptr[0 + 1]);
++ MLA(hi, lo, (*fe)[1], ptr[7 + 1]);
++ MLA(hi, lo, (*fe)[2], ptr[6 + 1]);
++ MLA(hi, lo, (*fe)[3], ptr[5 + 1]);
++ MLA(hi, lo, (*fe)[4], ptr[4 + 1]);
++ MLA(hi, lo, (*fe)[5], ptr[3 + 1]);
++ MLA(hi, lo, (*fe)[6], ptr[2 + 1]);
++ MLA(hi, lo, (*fe)[7], ptr[1 + 1]); */
++ window_1 r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
++
++ /* *pcm1++ = SHIFT(MLZ(hi, lo));
++
++ pcm2 = pcm1 + 31; */
++ scale r1, r0, r1
++ st.w r10/*pcm_1*/++, r1
++ sub lr/*pcm2*/, r10, -4*31
++
++ /* for (sb = 1; sb < 16; ++sb) { */
++ mov r2, 15
++ stdsp sp[0], r2
++even_loop:
++ /* ++fe;
++ ptr += 33; */
++ sub r11 /*fe*/, -8*4
++ sub r12, -33*2
++
++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++ /* MLN(hi, lo); */
++ neg r0
++ acr r1
++ neg r1
++
++ /* MLA(hi, lo, (*fe)[7], ptr[1 + 1]);
++ MLA(hi, lo, (*fe)[6], ptr[2 + 1]);
++ MLA(hi, lo, (*fe)[5], ptr[3 + 1]);
++ MLA(hi, lo, (*fe)[4], ptr[4 + 1]);
++ MLA(hi, lo, (*fe)[3], ptr[5 + 1]);
++ MLA(hi, lo, (*fe)[2], ptr[6 + 1]);
++ MLA(hi, lo, (*fe)[1], ptr[7 + 1]);
++ MLA(hi, lo, (*fe)[0], ptr[0 + 1]); */
++ window_1 r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
++
++ /* *pcm1++ = SHIFT(MLZ(hi, lo)); */
++ lddsp r2, sp[4]
++ scale r1, r0, r1
++ /* ptr -= 2*po; */
++ sub r12/*ptr*/, r12, r2/*po*/<< 1
++ st.w r10/*pcm_1*/++, r1
++
++
++ /* ML0(hi, lo, (*fe)[0], ptr[7 + 17 - 1]);
++ MLA(hi, lo, (*fe)[1], ptr[8 + 17 - 1]);
++ MLA(hi, lo, (*fe)[2], ptr[9 + 17 - 1]);
++ MLA(hi, lo, (*fe)[3], ptr[10 + 17 - 1]);
++ MLA(hi, lo, (*fe)[4], ptr[11 + 17 - 1]);
++ MLA(hi, lo, (*fe)[5], ptr[12 + 17 - 1]);
++ MLA(hi, lo, (*fe)[6], ptr[13 + 17 - 1]);
++ MLA(hi, lo, (*fe)[7], ptr[14 + 17 - 1]); */
++ window_2 r11/*fe*/,r12/*ptr*/,r0/*acc*/,16/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++ /* MLA(hi, lo, (*fo)[7], ptr[14]);
++ MLA(hi, lo, (*fo)[6], ptr[13]);
++ MLA(hi, lo, (*fo)[5], ptr[12]);
++ MLA(hi, lo, (*fo)[4], ptr[11]);
++ MLA(hi, lo, (*fo)[3], ptr[10]);
++ MLA(hi, lo, (*fo)[2], ptr[9]);
++ MLA(hi, lo, (*fo)[1], ptr[8]);
++ MLA(hi, lo, (*fo)[0], ptr[7]); */
++ window_2 r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
++
++
++ /* *pcm2-- = SHIFT(MLZ(hi, lo)); */
++ lddsp r3, sp[4]
++ lddsp r2, sp[0]
++ scale r1, r0, r1
++ st.w --lr/*pcm_2*/, r1
++
++ /* ptr += 2*po; */
++ add r12/*ptr*/, r12, r3/*po*/<< 1
++
++ /* ++fo;
++ } */
++ sub r8/*fo*/, -8*4
++
++ sub r2, 1
++ stdsp sp[0], r2
++ brne even_loop
++
++ /* ptr += 33; */
++ sub r12/*ptr*/, -33*2
++
++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
++
++
++
++synth_end:
++ /* *pcm1 = SHIFT(-MLZ(hi, lo)); */
++ scale r1, r0, r1
++ neg r1
++ st.w r10/*pcm_1*/, r1
++
++ mov r12, r10
++ sub sp, -8
++ popm r0-r7, pc
++
++
++
++
++
diff --git a/packages/libmad/libmad_0.15.1b.bb b/packages/libmad/libmad_0.15.1b.bb
index 4e486236cd..1f341b9957 100644
--- a/packages/libmad/libmad_0.15.1b.bb
+++ b/packages/libmad/libmad_0.15.1b.bb
@@ -4,9 +4,13 @@ PRIORITY = "optional"
DEPENDS = "libid3tag"
LICENSE = "GPL"
+PR = "r2"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/mad/libmad-${PV}.tar.gz"
S = "${WORKDIR}/libmad-${PV}"
+SRC_URI_append_avr32 = " file://libmad-0.15.1b-avr32-optimization.patch;patch=1"
+
inherit autotools
EXTRA_OECONF = "-enable-speed --enable-shared"
diff --git a/packages/e17/expedite/.mtn2git_empty b/packages/libmatthew/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/e17/expedite/.mtn2git_empty
+++ b/packages/libmatthew/.mtn2git_empty
diff --git a/packages/libmatthew/libmatthew_0.5.bb b/packages/libmatthew/libmatthew_0.5.bb
new file mode 100644
index 0000000000..7a1b05478b
--- /dev/null
+++ b/packages/libmatthew/libmatthew_0.5.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "Unix socket, debug and hexdump libraries"
+LICENSE = "LGPL"
+SECTION = "libs"
+HOMEPAGE = "http://jalimo.org"
+AUTHOR = "Matthew Johnson <web@matthew.ath.cx>"
+
+inherit java-library
+
+DEPENDS = "classpath-native classpath"
+
+SRC_URI = "http://www.matthew.ath.cx/projects/java/libmatthew-java-${PV}.tar.gz"
+
+S = "${WORKDIR}/libmatthew-java-${PV}"
+
+do_compile() {
+ oe_runmake \
+ JCFLAGS="-source 1.5" \
+ JAVAC="javac" \
+ JAR="fastjar" \
+ JAVAH="gjavah" \
+ INCLUDES="-I${STAGING_INCDIR}/classpath" \
+ LDFLAGS="-fpic -shared -lc ${LDFLAGS}" \
+ LD="${CC}"
+}
+
+do_stage() {
+ oe_jarinstall -s cgi-0.5.jar cgi.jar
+ oe_jarinstall -s debug-disable-1.1.jar debug-disable.jar
+ oe_jarinstall -s debug-enable-1.1.jar debug-enable.jar
+ oe_jarinstall -s hexdump-0.1.jar hexdump.jar
+ oe_jarinstall -s io-0.1.jar io.jar
+ oe_jarinstall -s unix-0.2.jar unix.jar
+}
+
+do_install() {
+ oe_jarinstall cgi-0.5.jar cgi.jar
+ oe_jarinstall debug-disable-1.1.jar debug-disable.jar
+ oe_jarinstall debug-enable-1.1.jar debug-enable.jar
+ oe_jarinstall hexdump-0.1.jar hexdump.jar
+ oe_jarinstall io-0.1.jar io.jar
+ oe_jarinstall unix-0.2.jar unix.jar
+
+ oe_libinstall -so libcgi-java ${D}${libdir}/jni
+ oe_libinstall -so libunix-java ${D}${libdir}/jni
+}
+
+PACKAGES += "${PN}-jni ${PN}-jni-dbg"
+
+RDEPENDS_${JPN} = "${PN}-jni"
+
+FILES_${PN}-jni = "${libdir}/jni/lib*.so"
+FILES_${PN}-jni-dbg = "${libdir}/jni/.debug/lib*.so"
+
diff --git a/packages/libmimedir/libmimedir_0.3.1.bb b/packages/libmimedir/libmimedir_0.3.1.bb
index ff7ec3ec45..2429b798c2 100644
--- a/packages/libmimedir/libmimedir_0.3.1.bb
+++ b/packages/libmimedir/libmimedir_0.3.1.bb
@@ -3,9 +3,12 @@ SECTION = "libs"
PRIORITY = "optional"
LICENSE = "LGPL"
DEPENDS = "intltool-native"
-PR = "r3"
+PR = "r4"
-DEFAULT_PREFERENCE = "1"
+# 0.3.1 has at least 2 known bugs which may lead to data corruption/loss:
+# 1. Arbitrary cutting off of NOTE field during parsing.
+# 2. Parsing only one value from CATEGORIES field.
+DEFAULT_PREFERENCE = "-1"
SRC_URI = "http://www.rittau.org/mimedir/${P}.tar.gz \
file://mimedir-duration.diff;patch=1"
diff --git a/packages/libmrss/files/better-parse-url-r0.patch b/packages/libmrss/files/better-parse-url-r0.patch
index 94a78110a2..72fa3688a7 100644
--- a/packages/libmrss/files/better-parse-url-r0.patch
+++ b/packages/libmrss/files/better-parse-url-r0.patch
@@ -1,3 +1,10 @@
+upstream: mailed to bakunin_at_autistici_dot_org by Laibsch
+status: pending
+comment: API addition to not manually setup the CURL connection and still
+be able to get the transfered feed and save it to secondary storage. done
+by zecke for the OpenMoko RSS reader.
+
+
Index: libmrss-0.17.2/src/mrss.h
===================================================================
--- libmrss-0.17.2.orig/src/mrss.h 2007-04-02 14:42:55.000000000 +0200
diff --git a/packages/libnet/libnet_1.1.2.1.bb b/packages/libnet/libnet_1.1.2.1.bb
index 2dc6e713f9..b5fada0148 100644
--- a/packages/libnet/libnet_1.1.2.1.bb
+++ b/packages/libnet/libnet_1.1.2.1.bb
@@ -33,7 +33,7 @@ do_stage () {
}
#static build
-PACKAGES = "${PN}-dev ${PN}-doc"
+PACKAGES = "${PN}-dbg ${PN}-dev ${PN}-doc"
FILES_${PN}-dev += "${bindir}/libnet-config"
diff --git a/packages/libogg/libtheora_0.9+1.0alpha7.bb b/packages/libogg/libtheora_0.9+1.0alpha7.bb
index 67ec27b560..5a372b65a1 100644
--- a/packages/libogg/libtheora_0.9+1.0alpha7.bb
+++ b/packages/libogg/libtheora_0.9+1.0alpha7.bb
@@ -1,5 +1,5 @@
-DEPENDS = "libogg libsdl-x11"
+DEPENDS = "libogg libvorbis libsdl-x11"
SRC_URI = "http://downloads.xiph.org/releases/theora/libtheora-1.0alpha7.tar.gz"
diff --git a/packages/efl1/etk-native/.mtn2git_empty b/packages/libpcap/libpcap-0.9.8/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl1/etk-native/.mtn2git_empty
+++ b/packages/libpcap/libpcap-0.9.8/.mtn2git_empty
diff --git a/packages/libpcap/libpcap-0.9.6/shared.patch b/packages/libpcap/libpcap-0.9.8/shared.patch
index 159389bb87..159389bb87 100644
--- a/packages/libpcap/libpcap-0.9.6/shared.patch
+++ b/packages/libpcap/libpcap-0.9.8/shared.patch
diff --git a/packages/libpcap/libpcap.inc b/packages/libpcap/libpcap.inc
new file mode 100644
index 0000000000..f2e5d3072b
--- /dev/null
+++ b/packages/libpcap/libpcap.inc
@@ -0,0 +1,33 @@
+DESCRIPTION = "Network Packet Capture Library"
+HOMEPAGE = "http://www.tcpdump.org/"
+SECTION = "libs/network"
+LICENSE = "BSD"
+DEPENDS = "flex-native bison-native"
+
+# Don't forget to edit shared.patch to have the correct version number inside
+SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \
+ file://shared.patch;patch=1"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-pcap=linux"
+
+CPPFLAGS_prepend = "-I${S} "
+CFLAGS_prepend = "-I${S} "
+CXXFLAGS_prepend = "-I${S} "
+
+do_configure_prepend () {
+ if [ ! -e acinclude.m4 ]; then
+ cat aclocal.m4 > acinclude.m4
+ fi
+}
+
+do_stage () {
+ install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h
+ install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h
+ install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h
+ oe_libinstall -a -so libpcap ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/net
+ ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h
+ install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4
+}
diff --git a/packages/libpcap/libpcap_0.9.3.bb b/packages/libpcap/libpcap_0.9.3.bb
index 5d66687482..865e57ab93 100644
--- a/packages/libpcap/libpcap_0.9.3.bb
+++ b/packages/libpcap/libpcap_0.9.3.bb
@@ -1,32 +1,3 @@
-DESCRIPTION = "Network Packet Capture Library"
-HOMEPAGE = "http://www.tcpdump.org/"
-LICENSE = "BSD"
-SECTION = "libs/network"
-PR = "r1"
+require libpcap.inc
-SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \
- file://shared.patch;patch=1"
-
-inherit autotools
-
-EXTRA_OECONF = "--with-pcap=linux"
-
-CPPFLAGS_prepend = "-I${S} "
-CFLAGS_prepend = "-I${S} "
-CXXFLAGS_prepend = "-I${S} "
-
-do_configure_prepend () {
- if [ ! -e acinclude.m4 ]; then
- cat aclocal.m4 > acinclude.m4
- fi
-}
-
-do_stage () {
- install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h
- install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h
- install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h
- oe_libinstall -a -so libpcap ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/net
- ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h
- install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4
-}
+PR = "r2"
diff --git a/packages/libpcap/libpcap_0.9.5.bb b/packages/libpcap/libpcap_0.9.5.bb
index 5d66687482..865e57ab93 100644
--- a/packages/libpcap/libpcap_0.9.5.bb
+++ b/packages/libpcap/libpcap_0.9.5.bb
@@ -1,32 +1,3 @@
-DESCRIPTION = "Network Packet Capture Library"
-HOMEPAGE = "http://www.tcpdump.org/"
-LICENSE = "BSD"
-SECTION = "libs/network"
-PR = "r1"
+require libpcap.inc
-SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \
- file://shared.patch;patch=1"
-
-inherit autotools
-
-EXTRA_OECONF = "--with-pcap=linux"
-
-CPPFLAGS_prepend = "-I${S} "
-CFLAGS_prepend = "-I${S} "
-CXXFLAGS_prepend = "-I${S} "
-
-do_configure_prepend () {
- if [ ! -e acinclude.m4 ]; then
- cat aclocal.m4 > acinclude.m4
- fi
-}
-
-do_stage () {
- install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h
- install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h
- install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h
- oe_libinstall -a -so libpcap ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/net
- ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h
- install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4
-}
+PR = "r2"
diff --git a/packages/libpcap/libpcap_0.9.6.bb b/packages/libpcap/libpcap_0.9.6.bb
deleted file mode 100644
index 9822f38ada..0000000000
--- a/packages/libpcap/libpcap_0.9.6.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-DESCRIPTION = "Network Packet Capture Library"
-HOMEPAGE = "http://www.tcpdump.org/"
-LICENSE = "BSD"
-SECTION = "libs/network"
-PR = "r1"
-
-
-# Don't forget to edit shared.patch to have the correct version number inside
-SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \
- file://shared.patch;patch=1"
-
-inherit autotools
-
-EXTRA_OECONF = "--with-pcap=linux"
-
-CPPFLAGS_prepend = "-I${S} "
-CFLAGS_prepend = "-I${S} "
-CXXFLAGS_prepend = "-I${S} "
-
-do_configure_prepend () {
- if [ ! -e acinclude.m4 ]; then
- cat aclocal.m4 > acinclude.m4
- fi
-}
-
-do_stage () {
- install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h
- install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h
- install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h
- oe_libinstall -a -so libpcap ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/net
- ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h
- install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4
-}
diff --git a/packages/libpcap/libpcap_0.9.8.bb b/packages/libpcap/libpcap_0.9.8.bb
new file mode 100644
index 0000000000..865e57ab93
--- /dev/null
+++ b/packages/libpcap/libpcap_0.9.8.bb
@@ -0,0 +1,3 @@
+require libpcap.inc
+
+PR = "r2"
diff --git a/packages/libpng/libpng-native_1.2.19.bb b/packages/libpng/libpng-native_1.2.19.bb
deleted file mode 100644
index 231b956678..0000000000
--- a/packages/libpng/libpng-native_1.2.19.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require libpng_${PV}.bb
-inherit native
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libpng-${PV}"
-DEPENDS = "zlib-native"
-
-INHIBIT_NATIVE_STAGE_INSTALL = "1"
-
-do_stage_append() {
- cp libpng.pc libpng12.pc
- install -m 644 png.h ${STAGING_INCDIR}/png.h
- install -m 644 pngconf.h ${STAGING_INCDIR}/pngconf.h
- oe_libinstall -so libpng12 ${STAGING_LIBDIR}/
- ln -sf libpng12.so ${STAGING_LIBDIR}/libpng.so
-}
diff --git a/packages/libpng/libpng_1.2.12.bb b/packages/libpng/libpng_1.2.12.bb
index c26d5e5d87..b05bc84856 100644
--- a/packages/libpng/libpng_1.2.12.bb
+++ b/packages/libpng/libpng_1.2.12.bb
@@ -9,7 +9,7 @@ DEPENDS = "zlib"
PACKAGES =+ "${PN}12-dbg ${PN}12 ${PN}12-dev"
-FILES_${PN}12-dbg = "${libdir}/libpng12*.dbg"
+FILES_${PN}12-dbg += "${libdir}/libpng12*.dbg"
FILES_${PN}12 = "${libdir}/libpng12.so.*"
FILES_${PN}12-dev = "${libdir}/libpng12.* ${includedir}/libpng12 ${libdir}/pkgconfig/libpng12.pc"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libpng/libpng_1.2.19.bb b/packages/libpng/libpng_1.2.19.bb
deleted file mode 100644
index c6c296cae4..0000000000
--- a/packages/libpng/libpng_1.2.19.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-DESCRIPTION = "PNG Library"
-HOMEPAGE = "http://www.libpng.org/"
-LICENSE = "libpng"
-SECTION = "libs"
-DEPENDS = "zlib"
-PRIORITY = "required"
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/libpng-${PV}.tar.bz2"
-S = "${WORKDIR}/libpng-${PV}"
-
-inherit autotools binconfig pkgconfig
-
-do_stage() {
- cp libpng.pc libpng12.pc
- install -m 644 png.h ${STAGING_INCDIR}/png.h
- install -m 644 pngconf.h ${STAGING_INCDIR}/pngconf.h
- oe_libinstall -so libpng ${STAGING_LIBDIR}/
- oe_libinstall -so libpng12 ${STAGING_LIBDIR}/
- ln -sf libpng12.so ${STAGING_LIBDIR}/libpng.so
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -d ${D}${mandir}
- install -d ${D}${libdir}
- install -d ${D}${includedir}
- unset LDFLAGS
- oe_runmake 'prefix=${prefix}' 'DESTDIR=${D}' \
- 'DB=${D}${bindir}' 'DI=${D}${includedir}' \
- 'DL=${D}${libdir}' 'DM=${D}${mandir}' \
- install
-}
-
-python do_package() {
- if bb.data.getVar('DEBIAN_NAMES', d, 1):
- bb.data.setVar('PKG_${PN}', 'libpng12', d)
- bb.build.exec_func('package_do_package', d)
-}
-
-PACKAGES =+ "${PN}12-dbg ${PN}12 ${PN}12-dev"
-
-FILES_${PN}12-dbg = "${libdir}/libpng12*.dbg"
-FILES_${PN}12 = "${libdir}/libpng12.so.*"
-FILES_${PN}12-dev = "${libdir}/libpng12.* ${includedir}/libpng12 ${libdir}/pkgconfig/libpng12.pc"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
- ${libdir}/*.a ${libdir}/pkgconfig \
- ${datadir}/aclocal ${bindir} ${sbindir}"
-
diff --git a/packages/libpng/libpng_1.2.20.bb b/packages/libpng/libpng_1.2.20.bb
index c6c296cae4..3730f3d727 100644
--- a/packages/libpng/libpng_1.2.20.bb
+++ b/packages/libpng/libpng_1.2.20.bb
@@ -40,7 +40,7 @@ python do_package() {
PACKAGES =+ "${PN}12-dbg ${PN}12 ${PN}12-dev"
-FILES_${PN}12-dbg = "${libdir}/libpng12*.dbg"
+FILES_${PN}12-dbg += "${libdir}/libpng12*.dbg"
FILES_${PN}12 = "${libdir}/libpng12.so.*"
FILES_${PN}12-dev = "${libdir}/libpng12.* ${includedir}/libpng12 ${libdir}/pkgconfig/libpng12.pc"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libpng/libpng_1.2.8.bb b/packages/libpng/libpng_1.2.8.bb
index 76a86f6d28..cddc400375 100644
--- a/packages/libpng/libpng_1.2.8.bb
+++ b/packages/libpng/libpng_1.2.8.bb
@@ -8,7 +8,7 @@ DEPENDS = "zlib"
PACKAGES =+ "${PN}12-dbg ${PN}12 ${PN}12-dev"
-FILES_${PN}12-dbg = "${libdir}/libpng12*.dbg"
+FILES_${PN}12-dbg += "${libdir}/libpng12*.dbg"
FILES_${PN}12 = "${libdir}/libpng12.so.*"
FILES_${PN}12-dev = "${libdir}/libpng12.* ${includedir}/libpng12 ${libdir}/pkgconfig/libpng12.pc"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libqanava/libqanava_0.0.7.bb b/packages/libqanava/libqanava_0.0.7.bb
index 5edf1417c1..af1e8616f5 100644
--- a/packages/libqanava/libqanava_0.0.7.bb
+++ b/packages/libqanava/libqanava_0.0.7.bb
@@ -41,7 +41,7 @@ do_install() {
done
}
-PACKAGES = "libqanava-can libqanava-la libqanava-utl qanava-examples"
+PACKAGES = "${PN}-dbg libqanava-can libqanava-la libqanava-utl qanava-examples"
FILES_libqanava-can = "${libdir}/libqanava_can*.so*"
FILES_libqanava-la = "${libdir}/libqanava_la*.so*"
FILES_libqanava-utl = "${libdir}/libqanava_utl*.so*"
diff --git a/packages/librcf/librcf_0.4.bb b/packages/librcf/librcf_0.4.bb
index d18d2d8241..7d767750c8 100644
--- a/packages/librcf/librcf_0.4.bb
+++ b/packages/librcf/librcf_0.4.bb
@@ -36,7 +36,7 @@ do_stage() {
tar -C include --exclude='*.diff' -cvf - . | tar -C ${STAGING_INCDIR} -xvf -
}
-PACKAGES = "${PN}-mt ${PN}-st ${PN}-dev"
+PACKAGES = "${PN}-dbg ${PN}-mt ${PN}-st ${PN}-dev"
FILES_${PN}-mt = "/usr/lib/libRCFmt.so*"
FILES_${PN}-st = "/usr/lib/libRCFst.so*"
FILES_${PN}-dev = "/usr/lib/libRCF[sm]t.a /usr/include"
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/explicit-extern-C.patch b/packages/libsdl/files/explicit-extern-C.patch
index 3dd44bea27..3dd44bea27 100644
--- a/packages/libsdl/libsdl-qpe-1.2.9/explicit-extern-C.patch
+++ b/packages/libsdl/files/explicit-extern-C.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch b/packages/libsdl/files/fixlibs-1.2.9.patch
index ebc6ec7769..ebc6ec7769 100644
--- a/packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch
+++ b/packages/libsdl/files/fixlibs-1.2.9.patch
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch b/packages/libsdl/files/kill-stdc++-1.2.9.patch
index 884cb2191c..884cb2191c 100644
--- a/packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch
+++ b/packages/libsdl/files/kill-stdc++-1.2.9.patch
diff --git a/packages/libsdl/files/pagesize.patch b/packages/libsdl/files/pagesize.patch
new file mode 100644
index 0000000000..ea9ea9849b
--- /dev/null
+++ b/packages/libsdl/files/pagesize.patch
@@ -0,0 +1,15 @@
+Remove obsolete non-portable macro.
+
+Index: SDL-1.2.9/src/video/fbcon/SDL_fbvideo.c
+===================================================================
+--- SDL-1.2.9.orig/src/video/fbcon/SDL_fbvideo.c
++++ SDL-1.2.9/src/video/fbcon/SDL_fbvideo.c
+@@ -405,7 +405,7 @@ static int FB_VideoInit(_THIS, SDL_Pixel
+
+ /* Memory map the device, compensating for buggy PPC mmap() */
+ mapped_offset = (((long)finfo.smem_start) -
+- (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
++ (((long)finfo.smem_start)&~(getpagesize()-1)));
+ mapped_memlen = finfo.smem_len+mapped_offset;
+ mapped_mem = mmap(NULL, mapped_memlen,
+ PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch b/packages/libsdl/files/pygame-1.2.9.patch
index 4073de25bf..4073de25bf 100644
--- a/packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch
+++ b/packages/libsdl/files/pygame-1.2.9.patch
diff --git a/packages/libsdl/libsdl-directfb_1.2.9.bb b/packages/libsdl/libsdl-directfb_1.2.9.bb
index 73e94e9d22..7a9bd88ee2 100644
--- a/packages/libsdl/libsdl-directfb_1.2.9.bb
+++ b/packages/libsdl/libsdl-directfb_1.2.9.bb
@@ -1,28 +1,13 @@
-DESCRIPTION = "Simple DirectMedia Layer - DirectFB Edition"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "alsa-lib directfb"
-PROVIDES = "virtual/libsdl"
-LICENSE = "LGPL"
+require libsdl.inc
-PR = "r3"
+DEPENDS = "alsa-lib directfb"
DEFAULT_PREFERENCE = "-1"
-SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
- file://agawa-piro-mickey-1.2.9.patch;patch=1 \
- file://pygame-1.2.9.patch;patch=1 \
- file://mouse-1.2.9.patch;patch=1 \
- file://kill-stdc++-1.2.9.patch;patch=1 \
- file://ipaq-1.2.9.patch;patch=1 \
- file://SDL-Akita-1.2.9.patch;patch=1 \
- file://fixlibs-1.2.9.patch;patch=1 \
- file://no-PAGE_SIZE.patch;patch=1 \
- file://explicit-extern-C.patch;patch=1 \
- file://acinclude.m4 \
- file://directfb_obsolete_calls.patch;patch=1"
-S = "${WORKDIR}/SDL-${PV}"
-
-inherit autotools binconfig
+SRC_URI += "\
+ file://explicit-extern-C.patch;patch=1 \
+ file://acinclude.m4 \
+ file://directfb_obsolete_calls.patch;patch=1 \
+"
CFLAGS_append += " -I${STAGING_INCDIR}/directfb -I${STAGING_INCDIR}/directfb-internal"
@@ -30,44 +15,7 @@ EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads
--enable-file --enable-oss --enable-alsa --disable-esd --disable-arts \
--disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
--disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga \
- --disable-video-fbcon --enable-video-directfb --disable-video-ps2gs \
+ --enable-video-fbcon --enable-video-directfb --disable-video-ps2gs \
--disable-video-xbios --disable-video-gem --disable-video-dummy \
--disable-video-opengl --enable-input-events --enable-pthreads \
--disable-video-picogui --disable-video-qtopia --enable-dlopen"
-
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${bindir}/*config"
-
-do_configure_prepend() {
- rm -f ${S}/acinclude.m4
- cp ${WORKDIR}/acinclude.m4 ${S}/
- if [ "${PALMTOP_USE_MULTITHREADED_QT}" == "yes" ]
- then
- sed -i s,-lqte,-lqte-mt, src/Makefile
- fi
-}
-do_configure_append () {
- cd ${S}
-
- # prevent libtool from linking libs against libstdc++, libgcc, ...
- cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
- mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
- find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
-
-}
-
-do_stage() {
- oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
- rm ${STAGING_LIBDIR}/libSDL.la
- ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
- #oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
- install -m 0644 src/main/libSDLmain.a ${STAGING_LIBDIR}
-
- install -d ${STAGING_INCDIR}/SDL
- for f in include/*.h
- do
- install -m 0644 $f ${STAGING_INCDIR}/SDL/
- done
-
- install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
-}
diff --git a/packages/libsdl/libsdl-qpe_1.2.9.bb b/packages/libsdl/libsdl-qpe_1.2.9.bb
index 2fbf66b5d8..3583f20cf0 100644
--- a/packages/libsdl/libsdl-qpe_1.2.9.bb
+++ b/packages/libsdl/libsdl-qpe_1.2.9.bb
@@ -1,69 +1,31 @@
-DESCRIPTION = "Simple DirectMedia Layer - QtE-based Palmtop Environments Edition"
+require libsdl.inc
+
SECTION = "opie/libs"
-PRIORITY = "optional"
DEPENDS = "virtual/libqpe1 libopie2"
-PROVIDES = "virtual/libsdl"
-LICENSE = "LGPL"
-
-# NOTE: make sure to keep PR in sync with libsdl-x11
-PR = "r1"
-
-SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
- file://agawa-piro-mickey-1.2.9.patch;patch=1 \
- file://pygame-1.2.9.patch;patch=1 \
- file://mouse-1.2.9.patch;patch=1 \
- file://kill-stdc++-1.2.9.patch;patch=1 \
- file://ipaq-1.2.9.patch;patch=1 \
- file://SDL-Akita-1.2.9.patch;patch=1 \
- file://fixlibs-1.2.9.patch;patch=1 \
- file://no-PAGE_SIZE.patch;patch=1 \
- file://explicit-extern-C.patch;patch=1 \
- file://acinclude.m4"
-S = "${WORKDIR}/SDL-${PV}"
-inherit autotools binconfig
+SRC_URI += "\
+ file://agawa-piro-mickey-1.2.9.patch;patch=1 \
+ file://pygame-1.2.9.patch;patch=1 \
+ file://mouse-1.2.9.patch;patch=1 \
+ file://kill-stdc++-1.2.9.patch;patch=1 \
+ file://ipaq-1.2.9.patch;patch=1 \
+ file://SDL-Akita-1.2.9.patch;patch=1 \
+ file://fixlibs-1.2.9.patch;patch=1 \
+ file://explicit-extern-C.patch;patch=1 \
+"
EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
--enable-file --enable-oss --disable-alsa --disable-esd --disable-arts \
--disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
--disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga \
- --disable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
+ --enable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
--disable-video-xbios --disable-video-gem --disable-video-dummy \
--disable-video-opengl --enable-input-events --enable-pthreads \
--disable-video-picogui --enable-video-qtopia --enable-dlopen"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${bindir}/*config"
-
do_compile_prepend() {
- rm -f ${S}/acinclude.m4
- cp ${WORKDIR}/acinclude.m4 ${S}/
if [ "${PALMTOP_USE_MULTITHREADED_QT}" == "yes" ]
then
sed -i s,-lqte,-lqte-mt, src/Makefile
fi
}
-
-do_configure_append () {
- cd ${S}
-
- # prevent libtool from linking libs against libstdc++, libgcc, ...
- cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
- mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
-}
-
-do_stage() {
- oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
- rm ${STAGING_LIBDIR}/libSDL.la
- ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
- install -m 0655 src/main/libSDLmain.a src/main/.libs/
- oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
-
- install -d ${STAGING_INCDIR}/SDL
- for f in include/*.h
- do
- install -m 0644 $f ${STAGING_INCDIR}/SDL/
- done
-
- install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
-}
diff --git a/packages/libsdl/libsdl-x11_1.2.7.bb b/packages/libsdl/libsdl-x11_1.2.7.bb
deleted file mode 100644
index 125aec5f36..0000000000
--- a/packages/libsdl/libsdl-x11_1.2.7.bb
+++ /dev/null
@@ -1,57 +0,0 @@
-DESCRIPTION = "Simple DirectMedia Layer - X11 Edition"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "virtual/libx11 libxext"
-PROVIDES = "virtual/libsdl"
-LICENSE = "LGPL"
-
-# NOTE: make sure to keep PR in sync with libsdl-qpe
-PR = "r9"
-
-SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
- file://extra-keys.patch;patch=1 \
- file://acinclude.m4"
-S = "${WORKDIR}/SDL-${PV}"
-
-inherit autotools binconfig
-
-EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
- --enable-file --enable-oss --enable-alsa --disable-esd --disable-arts \
- --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
- --disable-mintaudio --disable-nasm --enable-video-x11 --disable-video-dga \
- --disable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
- --disable-video-xbios --disable-video-gem --disable-video-dummy \
- --disable-video-opengl --enable-input-events --enable-pthreads \
- --disable-video-picogui --disable-video-qtopia --enable-dlopen"
-
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${bindir}/*config"
-
-do_configure_prepend() {
- rm -f ${S}/acinclude.m4
- cp ${WORKDIR}/acinclude.m4 ${S}/
-}
-
-do_configure_append () {
- cd ${S}
-
- # prevent libtool from linking libs against libstdc++, libgcc, ...
- cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
- mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
-}
-
-do_stage() {
- oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
- rm ${STAGING_LIBDIR}/libSDL.la
- ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
- #oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
- install -m 0644 src/main/libSDLmain.a ${STAGING_LIBDIR}
-
- install -d ${STAGING_INCDIR}/SDL
- for f in include/*.h
- do
- install -m 0644 $f ${STAGING_INCDIR}/SDL/
- done
-
- install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
-}
diff --git a/packages/libsdl/libsdl-x11_1.2.9.bb b/packages/libsdl/libsdl-x11_1.2.9.bb
index 42c0ad3579..43148d4b00 100644
--- a/packages/libsdl/libsdl-x11_1.2.9.bb
+++ b/packages/libsdl/libsdl-x11_1.2.9.bb
@@ -1,56 +1,11 @@
-DESCRIPTION = "Simple DirectMedia Layer - X11 Edition"
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "alsa-lib mesa virtual/libx11 libxext"
-PROVIDES = "virtual/libsdl"
-LICENSE = "LGPL"
-
-PR = "r2"
-
-SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
- file://extra-keys.patch;patch=1 \
- file://acinclude.m4"
-S = "${WORKDIR}/SDL-${PV}"
-
-inherit autotools binconfig
+require libsdl.inc
EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
--enable-file --enable-oss --enable-alsa --disable-esd --disable-arts \
--disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
--disable-mintaudio --disable-nasm --enable-video-x11 --disable-video-dga \
- --disable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
+ --enable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
--disable-video-xbios --disable-video-gem --disable-video-dummy \
--enable-video-opengl --enable-input-events --enable-pthreads \
--disable-video-picogui --disable-video-qtopia --enable-dlopen"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${bindir}/*config"
-
-do_configure_prepend() {
- rm -f ${S}/acinclude.m4
- cp ${WORKDIR}/acinclude.m4 ${S}/
-}
-
-do_configure_append () {
- cd ${S}
-
- # prevent libtool from linking libs against libstdc++, libgcc, ...
- cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
- mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
-}
-
-do_stage() {
- oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
- rm ${STAGING_LIBDIR}/libSDL.la
- ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
- #oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
- install -m 0644 src/main/libSDLmain.a ${STAGING_LIBDIR}
-
- install -d ${STAGING_INCDIR}/SDL
- for f in include/*.h
- do
- install -m 0644 $f ${STAGING_INCDIR}/SDL/
- done
-
- install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
-}
diff --git a/packages/libsdl/libsdl.inc b/packages/libsdl/libsdl.inc
new file mode 100644
index 0000000000..a65efb51be
--- /dev/null
+++ b/packages/libsdl/libsdl.inc
@@ -0,0 +1,50 @@
+DESCRIPTION = "Simple DirectMedia Layer - X11 Edition"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "alsa-lib mesa virtual/libx11 libxext"
+PROVIDES = "virtual/libsdl"
+LICENSE = "LGPL"
+PR = "r3"
+
+SRC_URI = "\
+ http://www.libsdl.org/release/SDL-${PV}.tar.gz \
+ file://extra-keys.patch;patch=1 \
+ file://pagesize.patch;patch=1 \
+ file://acinclude.m4"
+S = "${WORKDIR}/SDL-${PV}"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "<overwrite me>"
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/*config"
+
+do_configure_prepend() {
+ rm -f ${S}/acinclude.m4
+ cp ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+do_configure_append () {
+ cd ${S}
+
+ # prevent libtool from linking libs against libstdc++, libgcc, ...
+ cat ${TARGET_PREFIX}libtool | sed -e 's/postdeps=".*"/postdeps=""/' > ${TARGET_PREFIX}libtool.tmp
+ mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
+}
+
+do_stage() {
+ oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
+ rm ${STAGING_LIBDIR}/libSDL.la
+ ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
+ #oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
+ install -m 0644 src/main/libSDLmain.a ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/SDL
+ for f in include/*.h
+ do
+ install -m 0644 $f ${STAGING_INCDIR}/SDL/
+ done
+
+ install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
+}
diff --git a/packages/fakeroot/fakeroot-1.8.3/.mtn2git_empty b/packages/libshout/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/fakeroot/fakeroot-1.8.3/.mtn2git_empty
+++ b/packages/libshout/.mtn2git_empty
diff --git a/packages/fakeroot/fakeroot-native-1.8.3/.mtn2git_empty b/packages/libshout/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/fakeroot/fakeroot-native-1.8.3/.mtn2git_empty
+++ b/packages/libshout/files/.mtn2git_empty
diff --git a/packages/libshout/files/no-host-includes.ac b/packages/libshout/files/no-host-includes.ac
new file mode 100644
index 0000000000..f5255359b0
--- /dev/null
+++ b/packages/libshout/files/no-host-includes.ac
@@ -0,0 +1,13 @@
+diff --git a/configure.ac b/configure.ac
+index 52fc51d..e93fc52 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -179,7 +179,7 @@ eval shout_includedir="$includedir"
+ prefix="$save_prefix"
+
+ SHOUT_VERSION="$VERSION"
+-SHOUT_CPPFLAGS="-I$shout_includedir $VORBIS_CFLAGS $PTHREAD_CPPFLAGS"
++SHOUT_CPPFLAGS="$VORBIS_CFLAGS $PTHREAD_CPPFLAGS"
+ SHOUT_CFLAGS="$PTHREAD_CFLAGS"
+ SHOUT_LIBS="-lshout"
+
diff --git a/packages/libshout/libshout.inc b/packages/libshout/libshout.inc
new file mode 100644
index 0000000000..3037eb0f46
--- /dev/null
+++ b/packages/libshout/libshout.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "Library which can be used to write a source client like ices"
+HOMEPAGE = "http://www.icecast.org"
+DEPENDS = "speex libtheora libvorbis libogg"
+LICENSE = "LGPL"
+
+SRC_URI = "http://downloads.us.xiph.org/releases/libshout/libshout-${PV}.tar.gz \
+ file://no-host-includes.ac;patch=1 "
+
+inherit autotools
+
+do_configure_prepend() {
+ # Use the staged m4 files
+ rm -f ${S}/m4/speex.m4
+ rm -f ${S}/m4/ogg.m4
+ rm -f ${S}/m4/vorbis.m4
+}
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/libshout/libshout_2.2.2.bb b/packages/libshout/libshout_2.2.2.bb
new file mode 100644
index 0000000000..bd54419686
--- /dev/null
+++ b/packages/libshout/libshout_2.2.2.bb
@@ -0,0 +1 @@
+require ${PN}.inc
diff --git a/packages/libtiff/tiff_3.7.2.bb b/packages/libtiff/tiff_3.7.2.bb
index e11028ed8d..1f28e718bc 100644
--- a/packages/libtiff/tiff_3.7.2.bb
+++ b/packages/libtiff/tiff_3.7.2.bb
@@ -20,6 +20,6 @@ do_stage() {
PACKAGES =+ "tiffxx tiffxx-dbg tiffxx-dev tiff-utils tiff-utils-dbg"
FILES_tiffxx = "${libdir}/libtiffxx.so.*"
FILES_tiffxx-dev = "${libdir}/libtiffxx.so ${libdir}/libtiffxx.*a"
-FILES_tiffxx-dbg = "${libdir}/.debug/libtiffxx.so*"
+FILES_tiffxx-dbg += "${libdir}/.debug/libtiffxx.so*"
FILES_tiff-utils = "${bindir}/*"
-FILES_tiff-utils-dbg = "${bindir}/.debug/"
+FILES_tiff-utils-dbg += "${bindir}/.debug/"
diff --git a/packages/libtool/libtool_1.5.10.bb b/packages/libtool/libtool_1.5.10.bb
index 35cebfa5c2..3a9ff7ef59 100644
--- a/packages/libtool/libtool_1.5.10.bb
+++ b/packages/libtool/libtool_1.5.10.bb
@@ -17,7 +17,7 @@ PACKAGES =+ "libltdl libltdl-dev libltdl-dbg"
FILES_${PN} += "${datadir}/aclocal*"
FILES_libltdl = "${libdir}/libltdl.so.*"
FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
-FILES_libltdl-dbg = "${libdir}/.debug/"
+FILES_libltdl-dbg += "${libdir}/.debug/"
inherit autotools
diff --git a/packages/libtool/libtool_1.5.22.bb b/packages/libtool/libtool_1.5.22.bb
index d470d30cda..66182cb57e 100644
--- a/packages/libtool/libtool_1.5.22.bb
+++ b/packages/libtool/libtool_1.5.22.bb
@@ -15,7 +15,7 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
# file://3figures.patch;patch=1"
S = "${WORKDIR}/libtool-${PV}"
-PACKAGES = "libltdl libltdl-dev ${PN}"
+PACKAGES = "${PN}-dbg libltdl libltdl-dev ${PN}"
FILES_${PN} += "${datadir}/aclocal*"
FILES_libltdl = "${libdir}/libltdl.so.*"
FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
diff --git a/packages/libtool/libtool_1.5.24.bb b/packages/libtool/libtool_1.5.24.bb
index de91370ac5..f40613f3ee 100644
--- a/packages/libtool/libtool_1.5.24.bb
+++ b/packages/libtool/libtool_1.5.24.bb
@@ -16,7 +16,7 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
S = "${WORKDIR}/libtool-${PV}"
-PACKAGES = "libltdl libltdl-dev ${PN}"
+PACKAGES = "${PN}-dbg libltdl libltdl-dev ${PN}"
FILES_${PN} += "${datadir}/aclocal*"
FILES_libltdl = "${libdir}/libltdl.so.*"
FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
diff --git a/packages/libtool/libtool_1.5.6.bb b/packages/libtool/libtool_1.5.6.bb
index 2deb7df15c..7c02c4ba97 100644
--- a/packages/libtool/libtool_1.5.6.bb
+++ b/packages/libtool/libtool_1.5.6.bb
@@ -19,7 +19,7 @@ PACKAGES = "libltdl libltdl-dbg libltdl-dev ${PN} ${PN}-doc"
FILES_${PN} += "${datadir}/aclocal*"
FILES_libltdl = "${libdir}/libltdl.so.*"
FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
-FILES_libltdl-dbg = "${libdir}/.debug/"
+FILES_libltdl-dbg += "${libdir}/.debug/"
inherit autotools
diff --git a/packages/fbvncserver/.mtn2git_empty b/packages/libtorrent/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/fbvncserver/.mtn2git_empty
+++ b/packages/libtorrent/.mtn2git_empty
diff --git a/packages/fbvncserver/files/.mtn2git_empty b/packages/libtorrent/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/fbvncserver/files/.mtn2git_empty
+++ b/packages/libtorrent/files/.mtn2git_empty
diff --git a/packages/libtorrent/files/autoconf-cross-fix.patch b/packages/libtorrent/files/autoconf-cross-fix.patch
new file mode 100644
index 0000000000..a8dd3a5b76
--- /dev/null
+++ b/packages/libtorrent/files/autoconf-cross-fix.patch
@@ -0,0 +1,14 @@
+Index: rtorrent-0.8.0/scripts/common.m4
+===================================================================
+--- rtorrent-0.8.0.orig/scripts/common.m4 2008-01-13 15:02:03.000000000 +0000
++++ rtorrent-0.8.0/scripts/common.m4 2008-02-04 13:12:01.000000000 +0000
+@@ -192,6 +192,9 @@
+ AC_DEFINE(USE_EXECINFO, 1, Use execinfo.h)
+ ], [
+ AC_MSG_RESULT(no)
++ ], [
++ AC_MSG_RESULT(yes)
++ AC_DEFINE(USE_EXECINFO, 1, Use execinfo.h)
+ ])
+ ])
+
diff --git a/packages/libtorrent/libtorrent_0.12.0.bb b/packages/libtorrent/libtorrent_0.12.0.bb
new file mode 100644
index 0000000000..5d711578ed
--- /dev/null
+++ b/packages/libtorrent/libtorrent_0.12.0.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "library implementing the bittorrent protocol"
+HOMEPAGE = "http://libtorrent.rakshasa.no"
+SECTION = "libs/network"
+LICENSE = "GPL"
+DEPENDS = "libsigc++-2.0 openssl"
+
+SRC_URI = "http://libtorrent.rakshasa.no/downloads/libtorrent-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-aligned"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/libtorrent/rtorrent_0.8.0.bb b/packages/libtorrent/rtorrent_0.8.0.bb
new file mode 100644
index 0000000000..9ae0eed011
--- /dev/null
+++ b/packages/libtorrent/rtorrent_0.8.0.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Console bittorrent client using libtorrent"
+HOMEPAGE = "http://libtorrent.rakshasa.no"
+SECTION = "libs/network"
+LICENSE = "GPL"
+DEPENDS = "libtorrent curl ncurses gnutls libgpg-error"
+
+SRC_URI = "http://libtorrent.rakshasa.no/downloads/rtorrent-${PV}.tar.gz \
+ file://autoconf-cross-fix.patch;patch=1"
+
+inherit autotools
+
diff --git a/packages/libvncserver/libvncserver_0.8.2.bb b/packages/libvncserver/libvncserver_0.8.2.bb
deleted file mode 100644
index 188b22a14e..0000000000
--- a/packages/libvncserver/libvncserver_0.8.2.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-DESCRIPTION = "A library to support implementations of RDP/VNC servers"
-LICENSE = "GPLv2"
-HOMEPAGE = "http://sourceforge.net/projects/libvncserver"
-AUTHOR = "Johannes Schindelin <dscho@users.sourceforge.net>"
-SECTION = "libs"
-PRIORITY = "optional"
-PROVIDES = "x11vnc"
-DEPENDS = "virtual/libsdl virtual/libx11 zlib jpeg libxext"
-PR = "r2"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/LibVNCServer-${PV}.tar.gz;md5sum=17a18e398af6c1730f72068022a152aa"
-S = "${WORKDIR}/LibVNCServer-${PV}"
-
-inherit autotools
-
-do_stage() {
- autotools_stage_all
-}
-
-do_install_append() {
- install -d ${D}${bindir}
- install -m 0755 examples/storepasswd ${D}${bindir}
- install -d ${D}${datadir}/fbvncserver/classes
- install -m 0644 classes/index.vnc ${D}${datadir}/fbvncserver/classes/
- install -m 0644 classes/VncViewer.jar ${D}${datadir}/fbvncserver/classes/
-}
-
-PACKAGES =+ "x11vnc libvncserver-storepasswd libvncserver-javaapplet"
-FILES_x11vnc = "${bindir}/x11vnc ${bindir}/LinuxVNC"
-FILES_libvncserver-storepasswd = "${bindir}/storepasswd"
-FILES_libvncserver-javaapplet = "${datadir}/fbvncserver/classes/index.vnc \
- ${datadir}/fbvncserver/classes/VncViewer.jar"
diff --git a/packages/libxine/libxine-fb_1.0.bb b/packages/libxine/libxine-fb_1.0.bb
index d0f58303fa..a51dc83896 100644
--- a/packages/libxine/libxine-fb_1.0.bb
+++ b/packages/libxine/libxine-fb_1.0.bb
@@ -26,10 +26,10 @@ S = "${WORKDIR}/xine-lib-${PV}"
SOV = "1.0.7"
-EXTRA_OECONF="-with-zlib-path=${STAGING_DIR}/${HOST_SYS} \
- --with-vorbis-prefix=${STAGING_DIR}/${HOST_SYS} \
+EXTRA_OECONF="-with-zlib-path=${STAGING_EXECPREFIXDIR} \
+ --with-vorbis-prefix=${STAGING_EXECPREFIXDIR} \
--disable-oggtest \
- --with-ogg-prefix=${STAGING_DIR}/${HOST_SYS} \
+ --with-ogg-prefix=${STAGING_EXECPREFIXDIR} \
--disable-altivec --disable-vis --disable-mlib \
--enable-shared --disable-static \
--disable-fb --disable-alsa --disable-vcd \
diff --git a/packages/libxine/libxine-x11_1.0.bb b/packages/libxine/libxine-x11_1.0.bb
index 28d3be1b3d..806f8fd4b7 100644
--- a/packages/libxine/libxine-x11_1.0.bb
+++ b/packages/libxine/libxine-x11_1.0.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound virtual/libx11 libxext libpng"
PROVIDES = "virtual/libxine"
-PR = "r0"
+PR = "r1"
inherit autotools pkgconfig gettext binconfig
@@ -17,7 +17,7 @@ SRC_URI = "http://heanet.dl.sourceforge.net/sourceforge/xine/xine-lib-${PV}.tar.
file://libxine-ffmpeg-enable-arm.patch;patch=1 \
file://no-caca-no-aalib.patch;patch=1 \
file://dont-have-xv.patch;patch=1 \
- file://restore-esd.patch;patch=1 \
+# file://restore-esd.patch;patch=1 \
file://fix-syntax-xine-vorbis-decoder.patch;patch=1 \
file://libxine-cut-memusage.patch;patch=1 \
file://mpegvideo-static-inlinine.patch;patch=1 \
@@ -27,10 +27,10 @@ S = "${WORKDIR}/xine-lib-${PV}"
SOV = "1.0.7"
-EXTRA_OECONF="-with-zlib-path=${STAGING_DIR}/${HOST_SYS} \
- --with-vorbis-prefix=${STAGING_DIR}/${HOST_SYS} \
+EXTRA_OECONF="-with-zlib-path=${STAGING_EXECPREFIXDIR} \
+ --with-vorbis-prefix=${STAGING_EXECPREFIXDIR} \
--disable-oggtest \
- --with-ogg-prefix=${STAGING_DIR}/${HOST_SYS} \
+ --with-ogg-prefix=${STAGING_EXECPREFIXDIR} \
--disable-altivec --disable-vis --disable-mlib \
--disable-fb --disable-alsa --disable-vcd \
--disable-asf --disable-faad --disable-iconv \
diff --git a/packages/libxine/libxine_1.1.0.bb b/packages/libxine/libxine_1.1.0.bb
index 7732eb813e..9219e5fdcd 100644
--- a/packages/libxine/libxine_1.1.0.bb
+++ b/packages/libxine/libxine_1.1.0.bb
@@ -31,10 +31,10 @@ S = "${WORKDIR}/xine-lib-${PV}"
SOV = "1.0.7"
-EXTRA_OECONF="-with-zlib-path=${STAGING_DIR}/${HOST_SYS} \
- --with-vorbis-prefix=${STAGING_DIR}/${HOST_SYS} \
+EXTRA_OECONF="-with-zlib-path=${STAGING_EXECPREFIXDIR} \
+ --with-vorbis-prefix=${STAGING_EXECPREFIXDIR} \
--disable-oggtest \
- --with-ogg-prefix=${STAGING_DIR}/${HOST_SYS} \
+ --with-ogg-prefix=${STAGING_EXECPREFIXDIR} \
--disable-altivec --disable-vis --disable-mlib \
--disable-fb --disable-alsa --disable-vcd \
--disable-asf --disable-faad --disable-iconv \
diff --git a/packages/libxml/libxml++_2.14.0.bb b/packages/libxml/libxml++_2.14.0.bb
index 4a5af16ea3..71a4de2bdb 100644
--- a/packages/libxml/libxml++_2.14.0.bb
+++ b/packages/libxml/libxml++_2.14.0.bb
@@ -1,6 +1,6 @@
LICENSE = "GPL"
-DEPENDS = "gtk+"
+DEPENDS = "gtk+ glibmm"
inherit gnome pkgconfig
diff --git a/packages/libxml/libxml2.inc b/packages/libxml/libxml2.inc
new file mode 100644
index 0000000000..3f83f76ed5
--- /dev/null
+++ b/packages/libxml/libxml2.inc
@@ -0,0 +1,29 @@
+DESCRIPTION = "GNOME XML Parser library"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "MIT"
+
+SRC_URI = "ftp://xmlsoft.org/libxml2/libxml2-${PV}.tar.gz"
+
+inherit autotools pkgconfig binconfig
+
+EXTRA_OECONF = "--without-python --without-debug --without-legacy --without-catalog --without-docbook --with-c14n"
+
+export LDFLAGS += "-ldl"
+
+do_stage() {
+ autotools_stage_all
+ install -d ${STAGING_DATADIR}/aclocal/
+ install -d ${STAGING_BINDIR_CROSS}
+
+ install -m 0644 libxml.m4 ${STAGING_DATADIR}/aclocal/
+ #this is need it by php during its install
+ install -m 0755 xml2-config ${STAGING_BINDIR_CROSS}
+}
+
+DEBIANNAME_${PN} = "libxml2"
+
+PACKAGES = "${PN}-dbg ${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
+
+FILES_${PN}-dev += "${bindir}/*-config"
+FILES_${PN}-utils += "${bindir}/*"
diff --git a/packages/libxml/libxml2_2.6.27.bb b/packages/libxml/libxml2_2.6.27.bb
new file mode 100644
index 0000000000..2a85ce8956
--- /dev/null
+++ b/packages/libxml/libxml2_2.6.27.bb
@@ -0,0 +1,3 @@
+# You want this old version for compatibility with Maemo OS2008.
+require libxml2.inc
+
diff --git a/packages/libxml/libxml2_2.6.29.bb b/packages/libxml/libxml2_2.6.29.bb
index 521ba16d9b..b366a8278c 100644
--- a/packages/libxml/libxml2_2.6.29.bb
+++ b/packages/libxml/libxml2_2.6.29.bb
@@ -1,34 +1,4 @@
-DESCRIPTION = "GNOME XML Parser library"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "MIT"
-PR = "r5"
-
-SRC_URI = "ftp://xmlsoft.org/libxml2/libxml2-${PV}.tar.gz"
-
-inherit autotools pkgconfig binconfig
-
-EXTRA_OECONF = "--without-python --without-debug --without-legacy --without-catalog --without-docbook --with-c14n"
-
-export LDFLAGS += "-ldl"
+require libxml2.inc
-do_stage() {
- autotools_stage_all
- install -d ${STAGING_DATADIR}/aclocal/
- install -d ${STAGING_BINDIR_CROSS}
-
- install -m 0644 libxml.m4 ${STAGING_DATADIR}/aclocal/
- #this is need it by php during its install
- install -m 0755 xml2-config ${STAGING_BINDIR_CROSS}
-}
-
-python populate_packages_prepend () {
- # autonamer would call this libxml2-2, but we don't want that
- if bb.data.getVar('DEBIAN_NAMES', d, 1):
- bb.data.setVar('PKG_libxml2', 'libxml2', d)
-}
-
-PACKAGES = "${PN}-dbg ${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
+PR = "r5"
-FILES_${PN}-dev += "${bindir}/*-config"
-FILES_${PN}-utils += "${bindir}/*"
diff --git a/packages/libxosd/libxosd_svn.bb b/packages/libxosd/libxosd_svn.bb
index bb16f7f09a..377f55dc2a 100644
--- a/packages/libxosd/libxosd_svn.bb
+++ b/packages/libxosd/libxosd_svn.bb
@@ -19,6 +19,6 @@ do_stage() {
PACKAGES =+ "${PN}-examples-dbg ${PN}-examples"
FILES_${PN}-examples = "${bindir}/osd_cat"
-FILES_${PN}-examples-dbg = "${bindir}/.debug/"
+FILES_${PN}-examples-dbg += "${bindir}/.debug/"
FILES_${PN}-dev += "${bindir}/xosd-config"
FILES_${PN} = "${libdir}/libxosd.so.*"
diff --git a/packages/libzvbi/libzvbi_0.2.22.bb b/packages/libzvbi/libzvbi_0.2.22.bb
index 74e16c6239..a4ce1e55d5 100644
--- a/packages/libzvbi/libzvbi_0.2.22.bb
+++ b/packages/libzvbi/libzvbi_0.2.22.bb
@@ -5,11 +5,12 @@ HOMEPAGE = "http://zapping.sourceforge.net/ZVBI/index.html"
LICENSE = "GPL"
SECTION = "libs/multimedia"
DEPENDS = "libpng"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/zapping/zvbi-${PV}.tar.bz2"
S = "${WORKDIR}/zvbi-${PV}"
-inherit autotools
+inherit autotools pkgconfig
do_stage() {
autotools_stage_all
diff --git a/packages/libzvbi/libzvbi_0.2.25.bb b/packages/libzvbi/libzvbi_0.2.25.bb
index fe9fd1495c..9be7a7d42e 100644
--- a/packages/libzvbi/libzvbi_0.2.25.bb
+++ b/packages/libzvbi/libzvbi_0.2.25.bb
@@ -5,17 +5,16 @@ HOMEPAGE = "http://zapping.sourceforge.net/ZVBI/index.html"
LICENSE = "GPL"
SECTION = "libs/multimedia"
DEPENDS = "libpng"
-PR = "r0"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/zapping/zvbi-${PV}.tar.bz2"
S = "${WORKDIR}/zvbi-${PV}"
EXTRA_OECONF = "--without-x"
-inherit autotools
+inherit autotools pkgconfig
do_stage() {
autotools_stage_all
}
-
diff --git a/packages/ffmpeg/ffmpeg/.mtn2git_empty b/packages/lightmediascanner/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ffmpeg/ffmpeg/.mtn2git_empty
+++ b/packages/lightmediascanner/.mtn2git_empty
diff --git a/packages/lightmediascanner/lightmediascanner_svn.bb b/packages/lightmediascanner/lightmediascanner_svn.bb
new file mode 100644
index 0000000000..702dcbe3f3
--- /dev/null
+++ b/packages/lightmediascanner/lightmediascanner_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Lightweight media scanner meant to be used in not-so-powerful devices"
+SECTION = "libs/multimedia"
+HOMEPAGE = "http://lms.garage.maemo.org/"
+AUTHOR = "Gustavo Barbieri"
+LICENSE = "LGPL"
+DEPENDS = "sqlite3"
+PV = "0.1.0+svn${SRCREV}"
+
+SRC_URI = "svn://garage.maemo.org/svn/lms/;module=lightmediascanner;proto=https"
+S = "${WORKDIR}/lightmediascanner"
+
+inherit autotools pkgconfig
+
+FILES_${PN}-dbg += "${libdir}/${PN}/plugins/.debug"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/lighttpd/lighttpd/src-server.c.patch b/packages/lighttpd/lighttpd/src-server.c.patch
index 6ca0c9ea40..dbf614b2bd 100644
--- a/packages/lighttpd/lighttpd/src-server.c.patch
+++ b/packages/lighttpd/lighttpd/src-server.c.patch
@@ -1,3 +1,6 @@
+upstream: http://trac.lighttpd.net/trac/ticket/1402
+status: pending
+
--- lighttpd/src/server.c.orig 2006-03-04 09:12:17.000000000 -0800
+++ lighttpd/src/server.c 2006-07-11 09:16:28.000000000 -0700
@@ -1174,8 +1174,8 @@
diff --git a/packages/fixesext/.mtn2git_empty b/packages/linux/gumstix-kernel-2.6.21/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/fixesext/.mtn2git_empty
+++ b/packages/linux/gumstix-kernel-2.6.21/.mtn2git_empty
diff --git a/packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch b/packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch
new file mode 100644
index 0000000000..630d188ea0
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/270-usb-gadget-udc.patch
@@ -0,0 +1,2739 @@
+Index: linux-2.6.21gum/drivers/usb/gadget/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/Kconfig
++++ linux-2.6.21gum/drivers/usb/gadget/Kconfig
+@@ -129,6 +129,28 @@ config USB_PXA2XX_SMALL
+ default y if USB_ETH
+ default y if USB_G_SERIAL
+
++config USB_GADGET_PXA27X
++ boolean "PXA 27x"
++ depends on ARCH_PXA && PXA27x
++ help
++ Intel's PXA 27x series XScale ARM-5TE processors include
++ an integrated full speed USB 1.1 device controller.
++
++ Say "y" to link the driver statically, or "m" to build a
++ dynamically linked module called "pxa27x_udc" and force all
++ gadget drivers to also be dynamically linked.
++
++config USB_PXA27X
++ tristate
++ depends on USB_GADGET_PXA27X
++ default USB_GADGET
++ select USB_GADGET_SELECTED
++
++config USB_PXA27X_DMA
++ bool # "Use DMA support"
++ depends on USB_GADGET_PXA27X
++ default n
++
+ config USB_GADGET_GOKU
+ boolean "Toshiba TC86C001 'Goku-S'"
+ depends on PCI
+Index: linux-2.6.21gum/drivers/usb/gadget/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/Makefile
++++ linux-2.6.21gum/drivers/usb/gadget/Makefile
+@@ -7,6 +7,7 @@ obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
+ obj-$(CONFIG_USB_GOKU) += goku_udc.o
+ obj-$(CONFIG_USB_OMAP) += omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
++obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o
+ obj-$(CONFIG_USB_AT91) += at91_udc.o
+ obj-$(CONFIG_USB_GADGET_GUMSTIX) += gumstix_gadget.o
+
+Index: linux-2.6.21gum/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/usb/gadget/pxa27x_udc.c
+@@ -0,0 +1,2352 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.c
++ * Intel PXA2xx and IXP4xx on-chip full speed USB device controllers
++ *
++ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker)
++ * Copyright (C) 2003 Robert Schwebel, Pengutronix
++ * Copyright (C) 2003 Benedikt Spranger, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2003 Joshua Wise
++ * Copyright (C) 2004 Intel Corporation
++ * Copyright (C) 2005 SDG Systems, LLC (Aric Blumer)
++ *
++ * 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
++ *
++ */
++
++#undef DEBUG
++ // #define DEBUG 1
++ //#define VERBOSE DBG_VERBOSE
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/types.h>
++#include <linux/version.h>
++#include <linux/errno.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/list.h>
++#include <linux/interrupt.h>
++#include <linux/proc_fs.h>
++#include <linux/mm.h>
++#include <linux/platform_device.h>
++#include <linux/dma-mapping.h>
++#include <linux/irq.h>
++
++#include <asm/byteorder.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++#include <asm/unaligned.h>
++#include <asm/hardware.h>
++#include <asm/mach/irq.h>
++#include <asm/arch/pxa-regs.h>
++
++#include <linux/usb/ch9.h>
++#include <linux/usb_gadget.h>
++
++#include <asm/arch/udc.h>
++
++
++/*
++ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27777777x
++ * series processors.
++ * Such controller drivers work with a gadget driver. The gadget driver
++ * returns descriptors, implements configuration and data protocols used
++ * by the host to interact with this device, and allocates endpoints to
++ * the different protocol interfaces. The controller driver virtualizes
++ * usb hardware so that the gadget drivers will be more portable.
++ *
++ * This UDC hardware wants to implement a bit too much USB protocol, so
++ * it constrains the sorts of USB configuration change events that work.
++ * The errata for these chips are misleading; some "fixed" bugs from
++ * pxa250 a0/a1 b0/b1/b2 sure act like they're still there.
++ */
++
++#define DRIVER_VERSION "21-Jul-2005"
++#define DRIVER_DESC "PXA 27x USB Device Controller driver"
++
++
++static const char driver_name [] = "pxa27x_udc";
++
++static const char ep0name [] = "ep0";
++
++
++#define USE_DMA
++//#define DISABLE_TEST_MODE
++
++#ifdef CONFIG_PROC_FS
++#define UDC_PROC_FILE
++#endif
++
++#include "pxa27x_udc.h"
++
++#if 0
++#ifdef CONFIG_EMBEDDED
++/* few strings, and little code to use them */
++#undef DEBUG
++#undef UDC_PROC_FILE
++#endif
++#endif
++
++#ifdef USE_DMA
++static int use_dma = 1;
++module_param(use_dma, bool, 0);
++MODULE_PARM_DESC (use_dma, "true to use dma");
++
++static void dma_nodesc_handler (int dmach, void *_ep);
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req);
++
++#define DMASTR " (dma support)"
++
++#else /* !USE_DMA */
++#define DMASTR " (pio only)"
++#endif
++
++#ifdef CONFIG_USB_PXA27X_SMALL
++#define SIZE_STR " (small)"
++#else
++#define SIZE_STR ""
++#endif
++
++#ifdef DISABLE_TEST_MODE
++/* (mode == 0) == no undocumented chip tweaks
++ * (mode & 1) == double buffer bulk IN
++ * (mode & 2) == double buffer bulk OUT
++ * ... so mode = 3 (or 7, 15, etc) does it for both
++ */
++static ushort fifo_mode = 0;
++module_param(fifo_mode, ushort, 0);
++MODULE_PARM_DESC (fifo_mode, "pxa27x udc fifo mode");
++#endif
++
++#define UDCISR0_IR0 0x3
++#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP)
++#define UDCICR_INT_MASK UDCISR_INT_MASK
++
++#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME)
++/* ---------------------------------------------------------------------------
++ * endpoint related parts of the api to the usb controller hardware,
++ * used by gadget driver; and the inner talker-to-hardware core.
++ * ---------------------------------------------------------------------------
++ */
++
++static void pxa27x_ep_fifo_flush (struct usb_ep *ep);
++static void nuke (struct pxa27x_ep *, int status);
++
++static void pio_irq_enable(int ep_num)
++{
++ if (ep_num < 16)
++ UDCICR0 |= 3 << (ep_num * 2);
++ else {
++ ep_num -= 16;
++ UDCICR1 |= 3 << (ep_num * 2);
++ }
++}
++
++static void pio_irq_disable(int ep_num)
++{
++ ep_num &= 0xf;
++ if (ep_num < 16)
++ UDCICR0 &= ~(3 << (ep_num * 2));
++ else {
++ ep_num -= 16;
++ UDCICR1 &= ~(3 << (ep_num * 2));
++ }
++}
++
++/* The UDCCR reg contains mask and interrupt status bits,
++ * so using '|=' isn't safe as it may ack an interrupt.
++ */
++#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE)
++
++static inline void udc_set_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_clear_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_ack_int_UDCCR(int mask)
++{
++ /* udccr contains the bits we dont want to change */
++ __u32 udccr = UDCCR & UDCCR_MASK_BITS;
++
++ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS);
++}
++
++/*
++ * endpoint enable/disable
++ *
++ * we need to verify the descriptors used to enable endpoints. since pxa27x
++ * endpoint configurations are fixed, and are pretty much always enabled,
++ * there's not a lot to manage here.
++ *
++ * because pxa27x can't selectively initialize bulk (or interrupt) endpoints,
++ * (resetting endpoint halt and toggle), SET_INTERFACE is unusable except
++ * for a single interface (with only the default altsetting) and for gadget
++ * drivers that don't halt endpoints (not reset by set_interface). that also
++ * means that if you use ISO, you must violate the USB spec rule that all
++ * iso endpoints must be in non-default altsettings.
++ */
++static int pxa27x_ep_enable (struct usb_ep *_ep,
++ const struct usb_endpoint_descriptor *desc)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_udc *dev;
++
++ ep = container_of (_ep, struct pxa27x_ep, ep);
++ if (!_ep || !desc || _ep->name == ep0name
++ || desc->bDescriptorType != USB_DT_ENDPOINT
++ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) {
++ DMSG("%s, bad ep or descriptor\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* xfer types must match, except that interrupt ~= bulk */
++ if( ep->ep_type != USB_ENDPOINT_XFER_BULK
++ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
++ DMSG("%s, %s type mismatch\n", __FUNCTION__, _ep->name);
++ return -EINVAL;
++ }
++
++ /* hardware _could_ do smaller, but driver doesn't */
++ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
++ && le16_to_cpu (desc->wMaxPacketSize)
++ != BULK_FIFO_SIZE)
++ || !desc->wMaxPacketSize) {
++ DMSG("%s, bad %s maxpacket\n", __FUNCTION__, _ep->name);
++ return -ERANGE;
++ }
++
++ dev = ep->dev;
++ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ ep->desc = desc;
++ ep->dma = -1;
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ ep->ep.maxpacket = le16_to_cpu (desc->wMaxPacketSize);
++
++ /* flush fifo (mostly for OUT buffers) */
++ pxa27x_ep_fifo_flush (_ep);
++
++ /* ... reset halt state too, if we could ... */
++
++#ifdef USE_DMA
++ /* for (some) bulk and ISO endpoints, try to get a DMA channel and
++ * bind it to the endpoint. otherwise use PIO.
++ */
++ DMSG("%s: called attributes=%d\n", __FUNCTION__, ep->ep_type);
++ switch (ep->ep_type) {
++ case USB_ENDPOINT_XFER_ISOC:
++ if (le16_to_cpu(desc->wMaxPacketSize) % 32)
++ break;
++ // fall through
++ case USB_ENDPOINT_XFER_BULK:
++ if (!use_dma || !ep->reg_drcmr)
++ break;
++ ep->dma = pxa_request_dma ((char *)_ep->name,
++ (le16_to_cpu (desc->wMaxPacketSize) > 64)
++ ? DMA_PRIO_MEDIUM /* some iso */
++ : DMA_PRIO_LOW,
++ dma_nodesc_handler, ep);
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma;
++ DMSG("%s using dma%d\n", _ep->name, ep->dma);
++ }
++ default:
++ break;
++ }
++#endif
++ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_disable (struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of (_ep, struct pxa27x_ep, ep);
++ if (!_ep || !ep->desc) {
++ DMSG("%s, %s not enabled\n", __FUNCTION__,
++ _ep ? ep->ep.name : NULL);
++ return -EINVAL;
++ }
++ nuke (ep, -ESHUTDOWN);
++
++#ifdef USE_DMA
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = 0;
++ pxa_free_dma (ep->dma);
++ ep->dma = -1;
++ }
++#endif
++
++ /* flush fifo (mostly for IN buffers) */
++ pxa27x_ep_fifo_flush (_ep);
++
++ ep->desc = 0;
++ ep->stopped = 1;
++
++ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers
++ * must still pass correctly initialized endpoints, since other controller
++ * drivers may care about how it's currently set up (dma issues etc).
++ */
++
++/*
++ * pxa27x_ep_alloc_request - allocate a request data structure
++ */
++static struct usb_request *
++pxa27x_ep_alloc_request (struct usb_ep *_ep, unsigned gfp_flags)
++{
++ struct pxa27x_request *req;
++
++ req = kmalloc (sizeof *req, gfp_flags);
++ if (!req)
++ return 0;
++
++ memset (req, 0, sizeof *req);
++ INIT_LIST_HEAD (&req->queue);
++ return &req->req;
++}
++
++
++/*
++ * pxa27x_ep_free_request - deallocate a request data structure
++ */
++static void
++pxa27x_ep_free_request (struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_request *req;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ WARN_ON (!list_empty (&req->queue));
++ kfree(req);
++}
++
++
++/* PXA cache needs flushing with DMA I/O (it's dma-incoherent), but there's
++ * no device-affinity and the heap works perfectly well for i/o buffers.
++ * It wastes much less memory than dma_alloc_coherent() would, and even
++ * prevents cacheline (32 bytes wide) sharing problems.
++ */
++static void *
++pxa27x_ep_alloc_buffer(struct usb_ep *_ep, unsigned bytes,
++ dma_addr_t *dma, unsigned gfp_flags)
++{
++ char *retval;
++
++ retval = kmalloc (bytes, gfp_flags & ~(__GFP_DMA|__GFP_HIGHMEM));
++ if (retval)
++ *dma = virt_to_bus (retval);
++ return retval;
++}
++
++static void
++pxa27x_ep_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma,
++ unsigned bytes)
++{
++ kfree (buf);
++}
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * done - retire a request; caller blocked irqs
++ */
++static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status)
++{
++ list_del_init(&req->queue);
++ if (likely (req->req.status == -EINPROGRESS))
++ req->req.status = status;
++ else
++ status = req->req.status;
++
++ if (status && status != -ESHUTDOWN)
++ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n",
++ ep->ep.name, &req->req, status,
++ req->req.actual, req->req.length);
++
++ /* don't modify queue heads during completion callback */
++ req->req.complete(&ep->ep, &req->req);
++}
++
++
++static inline void ep0_idle (struct pxa27x_udc *dev)
++{
++ dev->ep0state = EP0_IDLE;
++ LED_EP0_OFF;
++}
++
++static int
++write_packet(volatile u32 *uddr, struct pxa27x_request *req, unsigned max)
++{
++ u32 *buf;
++ int length, count, remain;
++
++ buf = (u32*)(req->req.buf + req->req.actual);
++ prefetch(buf);
++
++ /* how big will this packet be? */
++ length = min(req->req.length - req->req.actual, max);
++ req->req.actual += length;
++
++ remain = length & 0x3;
++ count = length & ~(0x3);
++
++ while (likely(count)) {
++ *uddr = *buf++;
++ count -= 4;
++ }
++
++ if (remain) {
++ volatile u8* reg=(u8*)uddr;
++ char *rd =(u8*)buf;
++
++ while (remain--) {
++ *reg=*rd++;
++ }
++ }
++
++ return length;
++}
++
++/*
++ * write to an IN endpoint fifo, as many packets as possible.
++ * irqs will use this to write the rest later.
++ * caller guarantees at least one packet buffer is ready (or a zlp).
++ */
++static int
++write_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned max;
++
++ max = le16_to_cpu(ep->desc->wMaxPacketSize);
++ do {
++ int count;
++ int is_last, is_short;
++
++ count = write_packet(ep->reg_udcdr, req, max);
++
++ /* last packet is usually short (or a zlp) */
++ if (unlikely (count != max))
++ is_last = is_short = 1;
++ else {
++ if (likely(req->req.length != req->req.actual)
++ || req->req.zero)
++ is_last = 0;
++ else
++ is_last = 1;
++ /* interrupt/iso maxpacket may not fill the fifo */
++ is_short = unlikely (max < ep->fifo_size);
++ }
++
++ DMSG("wrote %s count:%d bytes%s%s %d left %p\n",
++ ep->ep.name, count,
++ is_last ? "/L" : "", is_short ? "/S" : "",
++ req->req.length - req->req.actual, &req->req);
++
++ /* let loose that packet. maybe try writing another one,
++ * double buffering might work. TSP, TPC, and TFS
++ * bit values are the same for all normal IN endpoints.
++ */
++ *ep->reg_udccsr = UDCCSR_PC;
++ if (is_short)
++ *ep->reg_udccsr = UDCCSR_SP;
++
++ /* requests complete when all IN data is in the FIFO */
++ if (is_last) {
++ done (ep, req, 0);
++ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) {
++ pio_irq_disable (ep->ep_num);
++#ifdef USE_DMA
++ /* unaligned data and zlps couldn't use dma */
++ if (unlikely(!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep,req);
++ return 0;
++ }
++#endif
++ }
++ return 1;
++ }
++
++ // TODO experiment: how robust can fifo mode tweaking be?
++ // double buffering is off in the default fifo mode, which
++ // prevents TFS from being set here.
++
++ } while (*ep->reg_udccsr & UDCCSR_FS);
++ return 0;
++}
++
++/* caller asserts req->pending (ep0 irq status nyet cleared); starts
++ * ep0 data stage. these chips want very simple state transitions.
++ */
++static inline
++void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag)
++{
++ UDCCSR0 = flags|UDCCSR0_SA|UDCCSR0_OPC;
++ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP);
++ dev->req_pending = 0;
++ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n",
++ __FUNCTION__, tag, UDCCSR0, flags);
++}
++
++static int
++write_ep0_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned count;
++ int is_short;
++
++ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE);
++ ep->dev->stats.write.bytes += count;
++
++ /* last packet "must be" short (or a zlp) */
++ is_short = (count != EP0_FIFO_SIZE);
++
++ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count,
++ req->req.length - req->req.actual, &req->req);
++
++ if (unlikely (is_short)) {
++ if (ep->dev->req_pending)
++ ep0start(ep->dev, UDCCSR0_IPR, "short IN");
++ else
++ UDCCSR0 = UDCCSR0_IPR;
++
++ count = req->req.length;
++ done (ep, req, 0);
++ ep0_idle(ep->dev);
++#if 0
++ /* This seems to get rid of lost status irqs in some cases:
++ * host responds quickly, or next request involves config
++ * change automagic, or should have been hidden, or ...
++ *
++ * FIXME get rid of all udelays possible...
++ */
++ if (count >= EP0_FIFO_SIZE) {
++ count = 100;
++ do {
++ if ((UDCCSR0 & UDCCSR0_OPC) != 0) {
++ /* clear OPC, generate ack */
++ UDCCSR0 = UDCCSR0_OPC;
++ break;
++ }
++ count--;
++ udelay(1);
++ } while (count);
++ }
++#endif
++ } else if (ep->dev->req_pending)
++ ep0start(ep->dev, 0, "IN");
++ return is_short;
++}
++
++
++/*
++ * read_fifo - unload packet(s) from the fifo we use for usb OUT
++ * transfers and put them into the request. caller should have made
++ * sure there's at least one packet ready.
++ *
++ * returns true if the request completed because of short packet or the
++ * request buffer having filled (and maybe overran till end-of-packet).
++ */
++static int
++read_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ for (;;) {
++ u32 *buf;
++ int bufferspace, count, is_short;
++
++ /* make sure there's a packet in the FIFO.*/
++ if (unlikely ((*ep->reg_udccsr & UDCCSR_PC) == 0))
++ break;
++ buf =(u32*) (req->req.buf + req->req.actual);
++ prefetchw(buf);
++ bufferspace = req->req.length - req->req.actual;
++
++ /* read all bytes from this packet */
++ if (likely (*ep->reg_udccsr & UDCCSR_BNE)) {
++ count = 0x3ff & *ep->reg_udcbcr;
++ req->req.actual += min (count, bufferspace);
++ } else /* zlp */
++ count = 0;
++
++ is_short = (count < ep->ep.maxpacket);
++ DMSG("read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n",
++ ep->ep.name, *ep->reg_udccsr, count,
++ is_short ? "/S" : "",
++ &req->req, req->req.actual, req->req.length);
++
++// dump_regs(ep->ep_num );
++ count = min(count, bufferspace);
++ while (likely (count > 0)) {
++ *buf++ = *ep->reg_udcdr;
++ count -= 4;
++ }
++ DMSG("Buf:0x%p\n", req->req.buf);
++
++ *ep->reg_udccsr = UDCCSR_PC;
++ /* RPC/RSP/RNE could now reflect the other packet buffer */
++
++ /* completion */
++ if (is_short || req->req.actual == req->req.length) {
++ done (ep, req, 0);
++ if (list_empty(&ep->queue))
++ pio_irq_disable (ep->ep_num);
++ return 1;
++ }
++
++ /* finished that packet. the next one may be waiting... */
++ }
++ return 0;
++}
++
++/*
++ * special ep0 version of the above. no UBCR0 or double buffering; status
++ * handshaking is magic. most device protocols don't need control-OUT.
++ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other
++ * protocols do use them.
++ */
++static int
++read_ep0_fifo (struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 *buf, word;
++ unsigned bufferspace;
++
++ buf = (u32*) (req->req.buf + req->req.actual);
++ bufferspace = req->req.length - req->req.actual;
++
++ while (UDCCSR0 & UDCCSR0_RNE) {
++ word = UDCDR0;
++
++ if (unlikely (bufferspace == 0)) {
++ /* this happens when the driver's buffer
++ * is smaller than what the host sent.
++ * discard the extra data.
++ */
++ if (req->req.status != -EOVERFLOW)
++ DMSG("%s overflow\n", ep->ep.name);
++ req->req.status = -EOVERFLOW;
++ } else {
++ *buf++ = word;
++ req->req.actual += 4;
++ bufferspace -= 4;
++ }
++ }
++
++ UDCCSR0 = UDCCSR0_OPC ;
++
++ /* completion */
++ if (req->req.actual >= req->req.length)
++ return 1;
++
++ /* finished that packet. the next one may be waiting... */
++ return 0;
++}
++
++#ifdef USE_DMA
++
++#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE)
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 dcmd = 0;
++ u32 len = req->req.length;
++ u32 buf = req->req.dma;
++ u32 fifo = io_v2p ((u32)ep->reg_udcdr);
++
++ buf += req->req.actual;
++ len -= req->req.actual;
++ ep->dma_con = 0;
++
++ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n",
++ __FUNCTION__, &req->req, req->req.length,
++ req->req.actual,ep->dma);
++
++ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */
++ DCSR(ep->dma) = DCSR_NODESC;
++ if (buf & 0x3)
++ DALGN |= 1 << ep->dma;
++ else
++ DALGN &= ~(1 << ep->dma);
++
++ if (ep->dir_in) {
++ DSADR(ep->dma) = buf;
++ DTADR(ep->dma) = fifo;
++ if (len > MAX_IN_DMA) {
++ len= MAX_IN_DMA;
++ ep->dma_con =1 ;
++ } else if (len >= ep->ep.maxpacket) {
++ if ((ep->dma_con = (len % ep->ep.maxpacket) != 0))
++ len = ep->ep.maxpacket;
++ }
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWTRG | DCMD_INCSRCADDR;
++ } else {
++ DSADR(ep->dma) = fifo;
++ DTADR(ep->dma) = buf;
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWSRC | DCMD_INCTRGADDR;
++ }
++ *ep->reg_udccsr = UDCCSR_DME;
++ DCMD(ep->dma) = dcmd;
++ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN \
++ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0);
++ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD;
++ DCSR(ep->dma) |= DCSR_RUN;
++}
++
++static void cancel_dma(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ u32 tmp;
++
++ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue))
++ return;
++
++ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma));
++ DCSR(ep->dma) = 0;
++ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0)
++ cpu_relax();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ tmp = DCMD(ep->dma) & DCMD_LENGTH;
++ req->req.actual = req->req.length - tmp;
++
++ /* the last tx packet may be incomplete, so flush the fifo.
++ * FIXME correct req.actual if we can
++ */
++ *ep->reg_udccsr = UDCCSR_FEF;
++}
++
++static void dma_nodesc_handler(int dmach, void *_ep)
++{
++ struct pxa27x_ep *ep = _ep;
++ struct pxa27x_request *req, *req_next;
++ u32 dcsr, tmp, completed;
++
++ local_irq_disable();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ DMSG("%s, buf:0x%p\n",__FUNCTION__, req->req.buf);
++
++ ep->dma_irqs++;
++ ep->dev->stats.irqs++;
++ HEX_DISPLAY(ep->dev->stats.irqs);
++
++ completed = 0;
++
++ dcsr = DCSR(dmach);
++ DCSR(ep->dma) &= ~DCSR_RUN;
++
++ if (dcsr & DCSR_BUSERR) {
++ DCSR(dmach) = DCSR_BUSERR;
++ printk(KERN_ERR " Buss Error\n");
++ req->req.status = -EIO;
++ completed = 1;
++ } else if (dcsr & DCSR_ENDINTR) {
++ DCSR(dmach) = DCSR_ENDINTR;
++ if (ep->dir_in) {
++ tmp = req->req.length - req->req.actual;
++ /* Last packet is a short one*/
++ if ( tmp < ep->ep.maxpacket) {
++ int count = 0;
++
++ *ep->reg_udccsr = UDCCSR_SP | \
++ (*ep->reg_udccsr & UDCCSR_MASK);
++ /*Wait for packet out */
++ while( (count++ < 10000) && \
++ !(*ep->reg_udccsr & UDCCSR_FS));
++ if (count >= 10000)
++ DMSG("Failed to send packet\n");
++ else
++ DMSG("%s: short packet sent len:%d,"
++ "length:%d,actual:%d\n", __FUNCTION__,
++ tmp, req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ /* There are still packets to transfer */
++ } else if ( ep->dma_con) {
++ DMSG("%s: more packets,length:%d,actual:%d\n",
++ __FUNCTION__,req->req.length,
++ req->req.actual);
++ req->req.actual += ep->ep.maxpacket;
++ completed = 0;
++ } else {
++ DMSG("%s: no more packets,length:%d,"
++ "actual:%d\n", __FUNCTION__,
++ req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else {
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else if (dcsr & DCSR_EORINTR) { //Only happened in OUT DMA
++ int remain,udccsr ;
++
++ DCSR(dmach) = DCSR_EORINTR;
++ remain = DCMD(dmach) & DCMD_LENGTH;
++ req->req.actual = req->req.length - remain;
++
++ udccsr = *ep->reg_udccsr;
++ if (udccsr & UDCCSR_SP) {
++ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK);
++ completed = 1;
++ }
++ DMSG("%s: length:%d actual:%d\n",
++ __FUNCTION__, req->req.length, req->req.actual);
++ } else
++ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n",
++ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach));
++
++ if (likely(completed)) {
++ if (req->queue.next != &ep->queue) {
++ req_next = list_entry(req->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req_next);
++ }
++ done(ep, req, 0);
++ } else {
++ kick_dma(ep, req);
++ }
++
++ local_irq_enable();
++}
++
++#endif
++/*-------------------------------------------------------------------------*/
++
++static int
++pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req, unsigned gfp_flags)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ struct pxa27x_udc *dev;
++ unsigned long flags;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ if (unlikely (!_req || !_req->complete || !_req->buf||
++ !list_empty(&req->queue))) {
++ DMSG("%s, bad params\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (unlikely (!_ep || (!ep->desc && ep->ep.name != ep0name))) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num);
++
++ dev = ep->dev;
++ if (unlikely (!dev->driver
++ || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ /* iso is always one packet per request, that's the only way
++ * we can report per-packet status. that also helps with dma.
++ */
++ if (unlikely (ep->ep_type == USB_ENDPOINT_XFER_ISOC
++ && req->req.length > le16_to_cpu
++ (ep->desc->wMaxPacketSize)))
++ return -EMSGSIZE;
++
++#ifdef USE_DMA
++ // FIXME caller may already have done the dma mapping
++ if (ep->dma >= 0) {
++ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length,
++ (ep->dir_in) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
++ }
++#endif
++
++ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n",
++ _ep->name, _req, _req->length, _req->buf);
++
++ local_irq_save(flags);
++
++ _req->status = -EINPROGRESS;
++ _req->actual = 0;
++
++ /* kickstart this i/o queue? */
++ if (list_empty(&ep->queue) && !ep->stopped) {
++ if (ep->desc == 0 /* ep0 */) {
++ unsigned length = _req->length;
++
++ switch (dev->ep0state) {
++ case EP0_IN_DATA_PHASE:
++ dev->stats.write.ops++;
++ if (write_ep0_fifo(ep, req))
++ req = 0;
++ break;
++
++ case EP0_OUT_DATA_PHASE:
++ dev->stats.read.ops++;
++ if (dev->req_pending)
++ ep0start(dev, UDCCSR0_IPR, "OUT");
++ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0
++ && read_ep0_fifo(ep, req))) {
++ ep0_idle(dev);
++ done(ep, req, 0);
++ req = 0;
++ }
++ break;
++ case EP0_NO_ACTION:
++ ep0_idle(dev);
++ req=0;
++ break;
++ default:
++ DMSG("ep0 i/o, odd state %d\n", dev->ep0state);
++ local_irq_restore (flags);
++ return -EL2HLT;
++ }
++#ifdef USE_DMA
++ /* either start dma or prime pio pump */
++ } else if (ep->dma >= 0) {
++ kick_dma(ep, req);
++#endif
++ /* can the FIFO can satisfy the request immediately? */
++ } else if (ep->dir_in
++ && (*ep->reg_udccsr & UDCCSR_FS) != 0
++ && write_fifo(ep, req)) {
++ req = 0;
++ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0
++ && read_fifo(ep, req)) {
++ req = 0;
++ }
++ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma);
++ if (likely (req && ep->desc) && ep->dma < 0)
++ pio_irq_enable(ep->ep_num);
++ }
++
++ /* pio or dma irq handler advances the queue. */
++ if (likely (req != 0))
++ list_add_tail(&req->queue, &ep->queue);
++ local_irq_restore(flags);
++
++ return 0;
++}
++
++
++/*
++ * nuke - dequeue ALL requests
++ */
++static void nuke(struct pxa27x_ep *ep, int status)
++{
++ struct pxa27x_request *req;
++
++ /* called with irqs blocked */
++#ifdef USE_DMA
++ if (ep->dma >= 0 && !ep->stopped)
++ cancel_dma(ep);
++#endif
++ while (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ done(ep, req, status);
++ }
++ if (ep->desc)
++ pio_irq_disable (ep->ep_num);
++}
++
++
++/* dequeue JUST ONE request */
++static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ unsigned long flags;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || ep->ep.name == ep0name)
++ return -EINVAL;
++
++ local_irq_save(flags);
++
++ /* make sure it's actually queued on this endpoint */
++ list_for_each_entry (req, &ep->queue, queue) {
++ if (&req->req == _req)
++ break;
++ }
++ if (&req->req != _req) {
++ local_irq_restore(flags);
++ return -EINVAL;
++ }
++
++#ifdef USE_DMA
++ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) {
++ cancel_dma(ep);
++ done(ep, req, -ECONNRESET);
++ /* restart i/o */
++ if (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req);
++ }
++ } else
++#endif
++ done(ep, req, -ECONNRESET);
++
++ local_irq_restore(flags);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value)
++{
++ struct pxa27x_ep *ep;
++ unsigned long flags;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (unlikely (!_ep
++ || (!ep->desc && ep->ep.name != ep0name))
++ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ if (value == 0) {
++ /* this path (reset toggle+halt) is needed to implement
++ * SET_INTERFACE on normal hardware. but it can't be
++ * done from software on the PXA UDC, and the hardware
++ * forgets to do it as part of SET_INTERFACE automagic.
++ */
++ DMSG("only host can clear %s halt\n", _ep->name);
++ return -EROFS;
++ }
++
++ local_irq_save(flags);
++
++ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0
++ || !list_empty(&ep->queue))) {
++ local_irq_restore(flags);
++ return -EAGAIN;
++ }
++
++ /* FST bit is the same for control, bulk in, bulk out, interrupt in */
++ *ep->reg_udccsr = UDCCSR_FST|UDCCSR_FEF;
++
++ /* ep0 needs special care */
++ if (!ep->desc) {
++ start_watchdog(ep->dev);
++ ep->dev->req_pending = 0;
++ ep->dev->ep0state = EP0_STALL;
++ LED_EP0_OFF;
++
++ /* and bulk/intr endpoints like dropping stalls too */
++ } else {
++ unsigned i;
++ for (i = 0; i < 1000; i += 20) {
++ if (*ep->reg_udccsr & UDCCSR_SST)
++ break;
++ udelay(20);
++ }
++ }
++ local_irq_restore(flags);
++
++ DBG(DBG_VERBOSE, "%s halt\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_fifo_status(struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -ENODEV;
++ }
++ /* pxa can't report unclaimed bytes from IN fifos */
++ if (ep->dir_in)
++ return -EOPNOTSUPP;
++ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN
++ || (*ep->reg_udccsr & UDCCSR_FS) == 0)
++ return 0;
++ else
++ return (*ep->reg_udcbcr & 0xfff) + 1;
++}
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || ep->ep.name == ep0name || !list_empty(&ep->queue)) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return;
++ }
++
++ /* toggle and halt bits stay unchanged */
++
++ /* for OUT, just read and discard the FIFO contents. */
++ if (!ep->dir_in) {
++ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0)
++ (void) *ep->reg_udcdr;
++ return;
++ }
++
++ /* most IN status is the same, but ISO can't stall */
++ *ep->reg_udccsr = UDCCSR_PC|UDCCSR_FST|UDCCSR_TRN
++ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC)
++ ? 0 : UDCCSR_SST;
++}
++
++
++static struct usb_ep_ops pxa27x_ep_ops = {
++ .enable = pxa27x_ep_enable,
++ .disable = pxa27x_ep_disable,
++
++ .alloc_request = pxa27x_ep_alloc_request,
++ .free_request = pxa27x_ep_free_request,
++
++ .alloc_buffer = pxa27x_ep_alloc_buffer,
++ .free_buffer = pxa27x_ep_free_buffer,
++
++ .queue = pxa27x_ep_queue,
++ .dequeue = pxa27x_ep_dequeue,
++
++ .set_halt = pxa27x_ep_set_halt,
++ .fifo_status = pxa27x_ep_fifo_status,
++ .fifo_flush = pxa27x_ep_fifo_flush,
++};
++
++
++/* ---------------------------------------------------------------------------
++ * device-scoped parts of the api to the usb controller hardware
++ * ---------------------------------------------------------------------------
++ */
++
++static int pxa27x_udc_get_frame(struct usb_gadget *_gadget)
++{
++ return (UDCFNR & 0x3FF);
++}
++
++static int pxa27x_udc_wakeup(struct usb_gadget *_gadget)
++{
++ /* host may not have enabled remote wakeup */
++ if ((UDCCR & UDCCR_DWRE) == 0)
++ return -EHOSTUNREACH;
++ udc_set_mask_UDCCR(UDCCR_UDR);
++ return 0;
++}
++
++static const struct usb_gadget_ops pxa27x_udc_ops = {
++ .get_frame = pxa27x_udc_get_frame,
++ .wakeup = pxa27x_udc_wakeup,
++ // current versions must always be self-powered
++};
++
++
++/*-------------------------------------------------------------------------*/
++
++#ifdef UDC_PROC_FILE
++
++static const char proc_node_name [] = "driver/udc";
++
++static int
++udc_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *_dev)
++{
++ char *buf = page;
++ struct pxa27x_udc *dev = _dev;
++ char *next = buf;
++ unsigned size = count;
++ unsigned long flags;
++ int i, t;
++ u32 tmp;
++
++ if (off != 0)
++ return 0;
++
++ local_irq_save(flags);
++
++ /* basic device status */
++ t = scnprintf(next, size, DRIVER_DESC "\n"
++ "%s version: %s\nGadget driver: %s\n",
++ driver_name, DRIVER_VERSION SIZE_STR DMASTR,
++ dev->driver ? dev->driver->driver.name : "(none)");
++ size -= t;
++ next += t;
++
++ /* registers for device and ep0 */
++ t = scnprintf(next, size,
++ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n",
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ size -= t;
++ next += t;
++
++ tmp = UDCCR;
++ t = scnprintf(next, size,"udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", tmp,
++ (tmp & UDCCR_OEN) ? " oen":"",
++ (tmp & UDCCR_AALTHNP) ? " aalthnp":"",
++ (tmp & UDCCR_AHNP) ? " rem" : "",
++ (tmp & UDCCR_BHNP) ? " rstir" : "",
++ (tmp & UDCCR_DWRE) ? " dwre" : "",
++ (tmp & UDCCR_SMAC) ? " smac" : "",
++ (tmp & UDCCR_EMCE) ? " emce" : "",
++ (tmp & UDCCR_UDR) ? " udr" : "",
++ (tmp & UDCCR_UDA) ? " uda" : "",
++ (tmp & UDCCR_UDE) ? " ude" : "",
++ (tmp & UDCCR_ACN) >> UDCCR_ACN_S,
++ (tmp & UDCCR_AIN) >> UDCCR_AIN_S,
++ (tmp & UDCCR_AAISN)>> UDCCR_AAISN_S );
++
++ size -= t;
++ next += t;
++
++ tmp = UDCCSR0;
++ t = scnprintf(next, size,
++ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp,
++ (tmp & UDCCSR0_SA) ? " sa" : "",
++ (tmp & UDCCSR0_RNE) ? " rne" : "",
++ (tmp & UDCCSR0_FST) ? " fst" : "",
++ (tmp & UDCCSR0_SST) ? " sst" : "",
++ (tmp & UDCCSR0_DME) ? " dme" : "",
++ (tmp & UDCCSR0_IPR) ? " ipr" : "",
++ (tmp & UDCCSR0_OPC) ? " opc" : "");
++ size -= t;
++ next += t;
++
++ if (!dev->driver)
++ goto done;
++
++ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops,
++ dev->stats.irqs);
++ size -= t;
++ next += t;
++
++ /* dump endpoint queues */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep [i];
++ struct pxa27x_request *req;
++ int t;
++
++ if (i != 0) {
++ const struct usb_endpoint_descriptor *d;
++
++ d = ep->desc;
++ if (!d)
++ continue;
++ tmp = *dev->ep [i].reg_udccsr;
++ t = scnprintf(next, size,
++ "%s max %d %s udccs %02x udccr:0x%x\n",
++ ep->ep.name, le16_to_cpu (d->wMaxPacketSize),
++ (ep->dma >= 0) ? "dma" : "pio", tmp,
++ *dev->ep[i].reg_udccr);
++ /* TODO translate all five groups of udccs bits! */
++
++ } else /* ep0 should only have one transfer queued */
++ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n",
++ ep->pio_irqs);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++
++ if (list_empty(&ep->queue)) {
++ t = scnprintf(next, size, "\t(nothing queued)\n");
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ continue;
++ }
++ list_for_each_entry(req, &ep->queue, queue) {
++#ifdef USE_DMA
++ if (ep->dma >= 0 && req->queue.prev == &ep->queue)
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d "
++ "buf %p (dma%d dcmd %08x)\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf,
++ ep->dma, DCMD(ep->dma)
++ // low 13 bits == bytes-to-go
++ );
++ else
++#endif
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d buf %p\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ }
++ }
++
++done:
++ local_irq_restore(flags);
++ *eof = 1;
++ return count - size;
++}
++
++#define create_proc_files() \
++ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev)
++#define remove_proc_files() \
++ remove_proc_entry(proc_node_name, NULL)
++
++#else /* !UDC_PROC_FILE */
++#define create_proc_files() do {} while (0)
++#define remove_proc_files() do {} while (0)
++
++#endif /* UDC_PROC_FILE */
++
++/* "function" sysfs attribute */
++static ssize_t
++show_function (struct device *_dev, struct device_attribute *attr, char *buf)
++{
++ struct pxa27x_udc *dev = dev_get_drvdata (_dev);
++
++ if (!dev->driver
++ || !dev->driver->function
++ || strlen (dev->driver->function) > PAGE_SIZE)
++ return 0;
++ return scnprintf (buf, PAGE_SIZE, "%s\n", dev->driver->function);
++}
++static DEVICE_ATTR (function, S_IRUGO, show_function, NULL);
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * udc_disable - disable USB device controller
++ */
++static void udc_disable(struct pxa27x_udc *dev)
++{
++ UDCICR0 = UDCICR1 = 0x00000000;
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Disable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 0);
++
++ ep0_idle (dev);
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++ LED_CONNECTED_OFF;
++ if (dev->mach->udc_command)
++ dev->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
++}
++
++
++/*
++ * udc_reinit - initialize software state
++ */
++static void udc_reinit(struct pxa27x_udc *dev)
++{
++ u32 i;
++
++ dev->ep0state = EP0_IDLE;
++
++ /* basic endpoint records init */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ }
++ dev->configuration = 0;
++ dev->interface = 0;
++ dev->alternate = 0;
++ /* the rest was statically initialized, and is read-only */
++}
++
++/* until it's enabled, this UDC should be completely invisible
++ * to any USB host.
++ */
++static void udc_enable (struct pxa27x_udc *dev)
++{
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ // MST_MSCWR2 &= ~(MST_MSCWR2_nUSBC_SC);
++
++ /* Enable clock for USB device */
++ pxa_set_cken(CKEN11_USB, 1);
++
++ UDCICR0 = UDCICR1 = 0;
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_FULL;
++ dev->stats.irqs = 0;
++
++ udc_set_mask_UDCCR(UDCCR_UDE);
++ udelay (2);
++ if (UDCCR & UDCCR_EMCE)
++ {
++ printk(KERN_ERR ": There are error in configuration, udc disabled\n");
++ }
++
++ /* caller must be able to sleep in order to cope
++ * with startup transients.
++ */
++ msleep(100);
++
++ /* enable suspend/resume and reset irqs */
++ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS;
++
++ /* enable ep0 irqs */
++ UDCICR0 = UDCICR_INT(0,UDCICR_INT_MASK);
++#if 0
++ for(i=1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned)
++ pio_irq_enable(i);
++ }
++#endif
++ if (dev->mach->udc_command)
++ dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++
++
++/* when a driver is successfully registered, it will receive
++ * control requests including set_configuration(), which enables
++ * non-control requests. then usb traffic follows until a
++ * disconnect is reported. then a host may connect again, or
++ * the driver might get unbound.
++ */
++int usb_gadget_register_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++ int retval;
++#if 0
++ DMSG("dev=0x%x, driver=0x%x, speed=%d,"
++ "bind=0x%x, unbind=0x%x, disconnect=0x%x, setup=0x%x\n",
++ (unsigned)dev, (unsigned)driver, driver->speed,
++ (unsigned)driver->bind, (unsigned)driver->unbind,
++ (unsigned)driver->disconnect, (unsigned)driver->setup);
++#endif
++ if (!driver || driver->speed != USB_SPEED_FULL
++ || !driver->bind
++ || !driver->unbind
++ || !driver->disconnect
++ || !driver->setup)
++ return -EINVAL;
++ if (!dev)
++ return -ENODEV;
++ if (dev->driver)
++ return -EBUSY;
++
++ /* first hook up the driver ... */
++ dev->driver = driver;
++ dev->gadget.dev.driver = &driver->driver;
++
++ device_add (&dev->gadget.dev);
++ retval = driver->bind(&dev->gadget);
++ if (retval) {
++ DMSG("bind to driver %s --> error %d\n",
++ driver->driver.name, retval);
++ device_del (&dev->gadget.dev);
++
++ dev->driver = 0;
++ dev->gadget.dev.driver = 0;
++ return retval;
++ }
++ device_create_file(dev->dev, &dev_attr_function);
++
++ /* ... then enable host detection and ep0; and we're ready
++ * for set_configuration as well as eventual disconnect.
++ * NOTE: this shouldn't power up until later.
++ */
++ DMSG("registered gadget driver '%s'\n", driver->driver.name);
++ udc_enable(dev);
++ dump_state(dev);
++ return 0;
++}
++EXPORT_SYMBOL(usb_gadget_register_driver);
++
++static void
++stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver)
++{
++ int i;
++
++ DMSG("Trace path 1\n");
++ /* don't disconnect drivers more than once */
++ if (dev->gadget.speed == USB_SPEED_UNKNOWN)
++ driver = 0;
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++
++ /* prevent new request submissions, kill any outstanding requests */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 1;
++ nuke(ep, -ESHUTDOWN);
++ }
++ del_timer_sync(&dev->timer);
++
++ /* report disconnect; the driver is already quiesced */
++ if (driver)
++ driver->disconnect(&dev->gadget);
++
++ /* re-init driver-visible data structures */
++ udc_reinit(dev);
++}
++
++int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++
++ if (!dev)
++ return -ENODEV;
++ if (!driver || driver != dev->driver)
++ return -EINVAL;
++
++ local_irq_disable();
++ udc_disable(dev);
++ stop_activity(dev, driver);
++ local_irq_enable();
++
++ driver->unbind(&dev->gadget);
++ dev->driver = 0;
++
++ device_del (&dev->gadget.dev);
++ device_remove_file(dev->dev, &dev_attr_function);
++
++ DMSG("unregistered gadget driver '%s'\n", driver->driver.name);
++ dump_state(dev);
++ return 0;
++}
++EXPORT_SYMBOL(usb_gadget_unregister_driver);
++
++#ifndef enable_disconnect_irq
++#define enable_disconnect_irq() do {} while (0)
++#define disable_disconnect_irq() do {} while (0)
++#endif
++
++
++/*-------------------------------------------------------------------------*/
++
++static inline void clear_ep_state (struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint
++ * fifos, and pending transactions mustn't be continued in any case.
++ */
++ for (i = 1; i < UDC_EP_NUM; i++)
++ nuke(&dev->ep[i], -ECONNABORTED);
++}
++
++static void udc_watchdog(unsigned long _dev)
++{
++ struct pxa27x_udc *dev = (void *)_dev;
++
++ local_irq_disable();
++ if (dev->ep0state == EP0_STALL
++ && (UDCCSR0 & UDCCSR0_FST) == 0
++ && (UDCCSR0 & UDCCSR0_SST) == 0) {
++ UDCCSR0 = UDCCSR0_FST|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0 re-stall\n");
++ start_watchdog(dev);
++ }
++ local_irq_enable();
++}
++
++static void handle_ep0 (struct pxa27x_udc *dev)
++{
++ u32 udccsr0 = UDCCSR0;
++ struct pxa27x_ep *ep = &dev->ep [0];
++ struct pxa27x_request *req;
++ union {
++ struct usb_ctrlrequest r;
++ u8 raw [8];
++ u32 word [2];
++ } u;
++
++ if (list_empty(&ep->queue))
++ req = 0;
++ else
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ /* clear stall status */
++ if (udccsr0 & UDCCSR0_SST) {
++ nuke(ep, -EPIPE);
++ UDCCSR0 = UDCCSR0_SST;
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ /* previous request unfinished? non-error iff back-to-back ... */
++ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) {
++ nuke(ep, 0);
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ switch (dev->ep0state) {
++ case EP0_NO_ACTION:
++ printk(KERN_INFO"%s: Busy\n", __FUNCTION__);
++ /*Fall through */
++ case EP0_IDLE:
++ /* late-breaking status? */
++ udccsr0 = UDCCSR0;
++
++ /* start control request? */
++ if (likely((udccsr0 & (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))
++ == (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))) {
++ int i;
++
++ nuke (ep, -EPROTO);
++ /* read SETUP packet */
++ for (i = 0; i < 2; i++) {
++ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) {
++bad_setup:
++ DMSG("SETUP %d!\n", i);
++ goto stall;
++ }
++ u.word [i] = UDCDR0;
++ }
++ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0))
++ goto bad_setup;
++
++ le16_to_cpus (&u.r.wValue);
++ le16_to_cpus (&u.r.wIndex);
++ le16_to_cpus (&u.r.wLength);
++
++ LED_EP0_ON;
++
++ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n",
++ u.r.bRequestType, u.r.bRequest,
++ u.r.wValue, u.r.wIndex, u.r.wLength);
++ /* cope with automagic for some standard requests. */
++ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK)
++ == USB_TYPE_STANDARD;
++ dev->req_config = 0;
++ dev->req_pending = 1;
++#if 0
++ switch (u.r.bRequest) {
++ /* hardware was supposed to hide this */
++ case USB_REQ_SET_CONFIGURATION:
++ case USB_REQ_SET_INTERFACE:
++ case USB_REQ_SET_ADDRESS:
++ printk(KERN_ERR "Should not come here\n");
++ break;
++ }
++
++#endif
++ if (u.r.bRequestType & USB_DIR_IN)
++ dev->ep0state = EP0_IN_DATA_PHASE;
++ else
++ dev->ep0state = EP0_OUT_DATA_PHASE;
++ i = dev->driver->setup(&dev->gadget, &u.r);
++
++ if (i < 0) {
++ /* hardware automagic preventing STALL... */
++ if (dev->req_config) {
++ /* hardware sometimes neglects to tell
++ * tell us about config change events,
++ * so later ones may fail...
++ */
++ WARN("config change %02x fail %d?\n",
++ u.r.bRequest, i);
++ return;
++ /* TODO experiment: if has_cfr,
++ * hardware didn't ACK; maybe we
++ * could actually STALL!
++ */
++ }
++ DBG(DBG_VERBOSE, "protocol STALL, "
++ "%02x err %d\n", UDCCSR0, i);
++stall:
++ /* the watchdog timer helps deal with cases
++ * where udc seems to clear FST wrongly, and
++ * then NAKs instead of STALLing.
++ */
++ ep0start(dev, UDCCSR0_FST|UDCCSR0_FTF, "stall");
++ start_watchdog(dev);
++ dev->ep0state = EP0_STALL;
++ LED_EP0_OFF;
++
++ /* deferred i/o == no response yet */
++ } else if (dev->req_pending) {
++ if (likely(dev->ep0state == EP0_IN_DATA_PHASE
++ || dev->req_std || u.r.wLength))
++ ep0start(dev, 0, "defer");
++ else
++ ep0start(dev, UDCCSR0_IPR, "defer/IPR");
++ }
++
++ /* expect at least one data or status stage irq */
++ return;
++
++ } else {
++ /* some random early IRQ:
++ * - we acked FST
++ * - IPR cleared
++ * - OPC got set, without SA (likely status stage)
++ */
++ UDCCSR0 = udccsr0 & (UDCCSR0_SA|UDCCSR0_OPC);
++ }
++ break;
++ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ UDCCSR0 = UDCCSR0_OPC|UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0in premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ } else /* irq was IPR clearing */ {
++ if (req) {
++ /* this IN packet might finish the request */
++ (void) write_ep0_fifo(ep, req);
++ } /* else IN token before response was written */
++ }
++ break;
++ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ if (req) {
++ /* this OUT packet might finish the request */
++ if (read_ep0_fifo(ep, req))
++ done(ep, req, 0);
++ /* else more OUT packets expected */
++ } /* else OUT token before read was issued */
++ } else /* irq was IPR clearing */ {
++ DBG(DBG_VERBOSE, "ep0out premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ }
++ break;
++ case EP0_STALL:
++ UDCCSR0 = UDCCSR0_FST;
++ break;
++ }
++ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK);
++}
++
++
++static void handle_ep(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ int completed;
++ u32 udccsr=0;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ do {
++ completed = 0;
++ if (likely (!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ } else
++ req = 0;
++
++// udccsr = *ep->reg_udccsr;
++ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__,
++ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr);
++ if (unlikely(ep->dir_in)) {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely (udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ if (req && likely ((*ep->reg_udccsr & UDCCSR_FS) != 0))
++ completed = write_fifo(ep, req);
++
++ } else {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely(udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ /* fifos can hold packets, ready for reading... */
++ if (likely(req)) {
++ completed = read_fifo(ep, req);
++ } else {
++ pio_irq_disable (ep->ep_num);
++ *ep->reg_udccsr = UDCCSR_FEF;
++ DMSG("%s: no req for out data\n",
++ __FUNCTION__);
++ }
++ }
++ ep->pio_irqs++;
++ } while (completed);
++}
++
++static void pxa27x_change_configuration (struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req ;
++
++ req.bRequestType = 0;
++ req.bRequest = USB_REQ_SET_CONFIGURATION;
++ req.wValue = dev->configuration;
++ req.wIndex = 0;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++
++}
++
++static void pxa27x_change_interface (struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req;
++
++ req.bRequestType = USB_RECIP_INTERFACE;
++ req.bRequest = USB_REQ_SET_INTERFACE;
++ req.wValue = dev->alternate;
++ req.wIndex = dev->interface;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++}
++
++/*
++ * pxa27x_udc_irq - interrupt handler
++ *
++ * avoid delays in ep0 processing. the control handshaking isn't always
++ * under software control (pxa250c0 and the pxa255 are better), and delays
++ * could cause usb protocol errors.
++ */
++static irqreturn_t
++pxa27x_udc_irq(int irq, void *_dev)
++{
++ struct pxa27x_udc *dev = _dev;
++ int handled;
++
++ dev->stats.irqs++;
++ HEX_DISPLAY(dev->stats.irqs);
++
++// printk("\n");
++ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, "
++ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR);
++ do {
++ u32 udcir = UDCISR1 & 0xF8000000;
++
++ handled = 0;
++
++ /* SUSpend Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRSU)) {
++ UDCISR1 = UDCISR1_IRSU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB suspend\n");
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->suspend)
++ dev->driver->suspend(&dev->gadget);
++ ep0_idle (dev);
++ }
++
++ /* RESume Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRRU)) {
++ UDCISR1 = UDCISR1_IRRU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB resume\n");
++
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver
++ && dev->driver->resume)
++ dev->driver->resume(&dev->gadget);
++ }
++
++ if (unlikely(udcir & UDCISR1_IRCC)) {
++ unsigned config, interface, alternate;
++
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or "
++ "SET_INTERFACE command received\n");
++
++ UDCCR |= UDCCR_SMAC;
++
++ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S;
++
++ if (dev->configuration != config) {
++ dev->configuration = config;
++ pxa27x_change_configuration(dev) ;
++ }
++
++ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S;
++ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S;
++
++ if ( (dev->configuration != interface) || \
++ (dev->alternate != alternate)){
++ dev->interface = config;
++ dev->alternate = alternate;
++ pxa27x_change_interface(dev);
++ }
++
++ UDCISR1 = UDCISR1_IRCC;
++ DMSG("%s: con:%d,inter:%d,alt:%d\n",
++ __FUNCTION__, config,interface, alternate);
++ }
++
++ /* ReSeT Interrupt Request - USB reset */
++ if (unlikely(udcir & UDCISR1_IRRS)) {
++ UDCISR1 = UDCISR1_IRRS;
++ handled = 1;
++
++ if ((UDCCR & UDCCR_UDA) == 0) {
++ DBG(DBG_VERBOSE, "USB reset start\n");
++
++ /* reset driver and endpoints,
++ * in case that's not yet done
++ */
++ stop_activity (dev, dev->driver);
++
++ }
++ INFO("USB reset\n");
++ dev->gadget.speed = USB_SPEED_FULL;
++ memset(&dev->stats, 0, sizeof dev->stats);
++
++ } else {
++ u32 udcisr0 = UDCISR0 ;
++ u32 udcisr1 = UDCISR1 & 0xFFFF;
++ int i;
++
++ if (unlikely (!udcisr0 && !udcisr1))
++ continue;
++
++ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,udcisr0);
++
++ /* control traffic */
++ if (udcisr0 & UDCISR0_IR0) {
++ dev->ep[0].pio_irqs++;
++ handle_ep0(dev);
++ handled = 1;
++ }
++
++ udcisr0 >>= 2;
++ /* endpoint data transfers */
++ for (i = 1; udcisr0!=0 && i < 16; udcisr0>>=2,i++) {
++ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr0 & UDC_INT_FIFOERROR)
++ printk(KERN_ERR" Endpoint %d Fifo error\n", i);
++ if (udcisr0 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i]);
++ handled = 1;
++ }
++
++ }
++
++ for (i = 0; udcisr1!=0 && i < 8; udcisr1 >>= 2, i++) {
++ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr1 & UDC_INT_FIFOERROR) {
++ printk(KERN_ERR" Endpoint %d fifo error\n", (i+16));
++ }
++
++ if (udcisr1 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i+16]);
++ handled = 1;
++ }
++ }
++ }
++
++ /* we could also ask for 1 msec SOF (SIR) interrupts */
++
++ } while (handled);
++ return IRQ_HANDLED;
++}
++
++static inline void validate_fifo_size(struct pxa27x_ep *pxa_ep, u8 bmAttributes)
++{
++ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ pxa_ep->fifo_size = EP0_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ pxa_ep->fifo_size = ISO_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_BULK:
++ pxa_ep->fifo_size = BULK_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ pxa_ep->fifo_size = INT_FIFO_SIZE;
++ break;
++ default:
++ break;
++ }
++}
++
++static void udc_init_ep(struct pxa27x_udc *dev)
++{
++ int i;
++
++ INIT_LIST_HEAD (&dev->gadget.ep_list);
++ INIT_LIST_HEAD (&dev->gadget.ep0->ep_list);
++
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->dma = -1;
++ if (i != 0) {
++ memset(ep, 0, sizeof(*ep));
++ }
++ INIT_LIST_HEAD (&ep->queue);
++ }
++}
++#define NAME_SIZE 18
++
++struct usb_ep* pxa27x_ep_config(
++ struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc,
++ int config, int interface, int alt
++)
++{
++ u32 tmp ;
++ unsigned i;
++ char* name;
++ struct usb_ep * ep = NULL;
++ struct pxa27x_ep *pxa_ep = NULL;
++ struct pxa27x_udc *dev = the_controller;
++
++ DMSG("pxa27x_config_ep is called\n");
++ DMSG(" usb endpoint descriptor is:\n"
++ " bLength:%d\n"
++ " bDescriptorType:%x\n"
++ " bEndpointAddress:%x\n"
++ " bmAttributes:%x\n"
++ " wMaxPacketSize:%d\n",
++ desc->bLength,
++ desc->bDescriptorType,desc->bEndpointAddress,
++ desc->bmAttributes,desc->wMaxPacketSize);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if(!dev->ep[i].assigned) {
++ pxa_ep = &dev->ep[i];
++ pxa_ep->assigned = 1;
++ pxa_ep->ep_num = i;
++ break;
++ }
++ }
++ if (unlikely(i == UDC_EP_NUM)) {
++ printk(KERN_ERR __FILE__ ": Failed to find a spare endpoint\n");
++ return ep;
++ }
++
++
++ ep = &pxa_ep->ep;
++
++ pxa_ep->dev = dev;
++ pxa_ep->desc = desc;
++ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0;
++ pxa_ep->dma = -1;
++
++ if (!(desc->bEndpointAddress & 0xF))
++ desc->bEndpointAddress |= i;
++
++ if (!(desc->wMaxPacketSize)) {
++ validate_fifo_size(pxa_ep, desc->bmAttributes);
++ desc->wMaxPacketSize = pxa_ep->fifo_size;
++ } else
++ pxa_ep->fifo_size = desc->wMaxPacketSize;
++
++ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0;
++ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
++ pxa_ep->stopped = 1;
++ pxa_ep->dma_con = 0;
++ pxa_ep->config = config;
++ pxa_ep->interface = interface;
++ pxa_ep->aisn = alt;
++
++ pxa_ep->reg_udccsr = &UDCCSR0 + i;
++ pxa_ep->reg_udcbcr = &UDCBCR0 + i;
++ pxa_ep->reg_udcdr = &UDCDR0 + i ;
++ pxa_ep->reg_udccr = &UDCCRA - 1 + i;
++#ifdef USE_DMA
++ pxa_ep->reg_drcmr = &DRCMR24 + i;
++#endif
++
++#if 0
++ DMSG("udccsr=0x%8x, udcbcr=0x%8x, udcdr=0x%8x,"
++ "udccr0=0x%8x\n",
++ (unsigned)pxa_ep->reg_udccsr,
++ (unsigned)pxa_ep->reg_udcbcr,
++ (unsigned)pxa_ep->reg_udcdr,
++ (unsigned)pxa_ep->reg_udccr);
++#endif
++ /* Configure UDCCR */
++ tmp = 0;
++ tmp |= (pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN;
++ tmp |= (pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN;
++ tmp |= (pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN;
++ tmp |= (desc->bEndpointAddress << UDCCONR_EN_S) & UDCCONR_EN;
++ tmp |= (pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET;
++ tmp |= (pxa_ep->dir_in) ? UDCCONR_ED : 0;
++ tmp |= (min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize) \
++ << UDCCONR_MPS_S ) & UDCCONR_MPS;
++ tmp |= UDCCONR_DE | UDCCONR_EE;
++// tmp |= UDCCONR_EE;
++
++ *pxa_ep->reg_udccr = tmp;
++
++#ifdef USE_DMA
++ /* Only BULK use DMA */
++ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)\
++ == USB_ENDPOINT_XFER_BULK)
++ *pxa_ep->reg_udccsr = UDCCSR_DME;
++#endif
++
++ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr,*pxa_ep->reg_udccr);
++
++ /* Fill ep name*/
++ name = kmalloc(NAME_SIZE, GFP_KERNEL);
++ if (!name) {
++ printk(KERN_ERR "%s: Error\n", __FUNCTION__);
++ return NULL;
++ }
++
++ switch (pxa_ep->ep_type) {
++ case USB_ENDPOINT_XFER_BULK:
++ sprintf(name, "Bulk-%s-%d", (pxa_ep->dir_in ? "in":"out"), i);
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ sprintf(name, "Interrupt-%s-%d", (pxa_ep->dir_in ? \
++ "in":"out"), i);
++ break;
++ default:
++ sprintf(name, "endpoint-%s-%d", (pxa_ep->dir_in ? \
++ "in":"out"), i);
++ break;
++ }
++ ep->name = name;
++
++ ep->ops = &pxa27x_ep_ops;
++ ep->maxpacket = min((ushort)pxa_ep->fifo_size, desc->wMaxPacketSize);
++
++ list_add_tail (&ep->ep_list, &gadget->ep_list);
++ return ep;
++}
++
++EXPORT_SYMBOL(pxa27x_ep_config);
++
++/*-------------------------------------------------------------------------*/
++
++static void nop_release (struct device *dev)
++{
++ DMSG("%s %s\n", __FUNCTION__, dev->bus_id);
++}
++
++/* this uses load-time allocation and initialization (instead of
++ * doing it at run-time) to save code, eliminate fault paths, and
++ * be more obviously correct.
++ */
++static struct pxa27x_udc memory = {
++ .gadget = {
++ .ops = &pxa27x_udc_ops,
++ .ep0 = &memory.ep[0].ep,
++ .name = driver_name,
++ .dev = {
++ .bus_id = "gadget",
++ .release = nop_release,
++ },
++ },
++
++ /* control endpoint */
++ .ep[0] = {
++ .ep = {
++ .name = ep0name,
++ .ops = &pxa27x_ep_ops,
++ .maxpacket = EP0_FIFO_SIZE,
++ },
++ .dev = &memory,
++ .reg_udccsr = &UDCCSR0,
++ .reg_udcdr = &UDCDR0,
++ }
++};
++
++#define CP15R0_VENDOR_MASK 0xffffe000
++
++#define CP15R0_XSCALE_VALUE 0x69054000 /* intel/arm/xscale */
++
++/*
++ * probe - binds to the platform device
++ */
++static int __init pxa27x_udc_probe(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = &memory;
++ int retval;
++ u32 chiprev;
++
++ /* insist on Intel/ARM/XScale */
++ asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev));
++ if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) {
++ printk(KERN_ERR "%s: not XScale!\n", driver_name);
++ return -ENODEV;
++ }
++ /* other non-static parts of init */
++ dev->dev = &_dev->dev;
++ dev->mach = _dev->dev.platform_data;
++
++ init_timer(&dev->timer);
++ dev->timer.function = udc_watchdog;
++ dev->timer.data = (unsigned long) dev;
++
++ device_initialize(&dev->gadget.dev);
++ dev->gadget.dev.parent = &_dev->dev;
++ dev->gadget.dev.dma_mask = _dev->dev.dma_mask;
++
++ the_controller = dev;
++ platform_set_drvdata(_dev, dev);
++
++ udc_disable(dev);
++ udc_init_ep(dev);
++ udc_reinit(dev);
++
++ /* irq setup after old hardware state is cleaned up */
++ retval = request_irq(IRQ_USB, pxa27x_udc_irq,
++ SA_INTERRUPT, driver_name, dev);
++ if (retval != 0) {
++ printk(KERN_ERR "%s: can't get irq %i, err %d\n",
++ driver_name, IRQ_USB, retval);
++ return -EBUSY;
++ }
++ dev->got_irq = 1;
++
++ create_proc_files();
++
++ return 0;
++}
++
++static int __exit pxa27x_udc_remove(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = (struct pxa27x_udc*)platform_get_drvdata(_dev);
++
++ udc_disable(dev);
++ remove_proc_files();
++ usb_gadget_unregister_driver(dev->driver);
++
++ if (dev->got_irq) {
++ free_irq(IRQ_USB, dev);
++ dev->got_irq = 0;
++ }
++ if (machine_is_lubbock() && dev->got_disc) {
++ free_irq(LUBBOCK_USB_DISC_IRQ, dev);
++ dev->got_disc = 0;
++ }
++ platform_set_drvdata(_dev, 0);
++ the_controller = 0;
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static void pxa27x_udc_shutdown(struct platform_device *_dev)
++{
++ struct pxa27x_udc *dev = (struct pxa27x_udc*)platform_get_drvdata(_dev);
++
++ udc_disable(dev);
++}
++
++static int pxa27x_udc_suspend(struct platform_device *_dev, pm_message_t state)
++{
++ int i;
++ struct pxa27x_udc *dev = (struct pxa27x_udc*)platform_get_drvdata(_dev);
++
++ DMSG("%s is called\n", __FUNCTION__);
++ dev->udccsr0 = UDCCSR0;
++ for(i=1; (i<UDC_EP_NUM); i++) {
++ if (dev->ep[i].assigned) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->udccsr_value = *ep->reg_udccsr;
++ ep->udccr_value = *ep->reg_udccr;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++ pxa_set_cken(CKEN11_USB, 0);
++ // MST_MSCWR2 |= MST_MSCWR2_nUSBC_SC;
++
++ return 0;
++}
++
++static int pxa27x_udc_resume(struct platform_device *_dev)
++{
++ int i;
++ struct pxa27x_udc *dev = (struct pxa27x_udc*)platform_get_drvdata(_dev);
++
++ DMSG("%s is called\n", __FUNCTION__);
++
++ UDCCSR0 = dev->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME);
++ for (i=1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ *ep->reg_udccsr = ep->udccsr_value;
++ *ep->reg_udccr = ep->udccr_value;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++ udc_enable(dev);
++ /* OTGPH bit is set when sleep mode is entered.
++ * it indicates that OTG pad is retaining its state.
++ * Upon exit from sleep mode and before clearing OTGPH,
++ * Software must configure the USB OTG pad, UDC, and UHC
++ * to the state they were in before entering sleep mode.*/
++ PSSR |= PSSR_OTGPH;
++ return 0;
++}
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++static struct platform_driver udc_driver = {
++ .driver = {
++ .name = "pxa2xx-udc",
++ },
++ .probe = pxa27x_udc_probe,
++ .remove = __exit_p(pxa27x_udc_remove),
++
++#ifdef CONFIG_PM
++ // FIXME power management support
++ .shutdown = pxa27x_udc_shutdown,
++ .suspend = pxa27x_udc_suspend,
++ .resume = pxa27x_udc_resume
++#endif
++};
++
++static int __init udc_init(void)
++{
++ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
++ return platform_driver_register(&udc_driver);
++}
++module_init(udc_init);
++
++static void __exit udc_exit(void)
++{
++ platform_driver_unregister(&udc_driver);
++}
++module_exit(udc_exit);
++
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell");
++MODULE_LICENSE("GPL");
++
+Index: linux-2.6.21gum/drivers/usb/gadget/pxa27x_udc.h
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/usb/gadget/pxa27x_udc.h
+@@ -0,0 +1,332 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.h
++ * Intel PXA27x on-chip full speed USB device controller
++ *
++ * Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2004 Intel Corporation
++ *
++ * 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
++ */
++
++#ifndef __LINUX_USB_GADGET_PXA27X_H
++#define __LINUX_USB_GADGET_PXA27X_H
++
++#include <linux/types.h>
++
++struct pxa27x_udc;
++
++struct pxa27x_ep {
++ struct usb_ep ep;
++ struct pxa27x_udc *dev;
++
++ const struct usb_endpoint_descriptor *desc;
++ struct list_head queue;
++ unsigned long pio_irqs;
++ unsigned long dma_irqs;
++
++ int dma;
++ unsigned fifo_size;
++ unsigned ep_num;
++ unsigned ep_type;
++
++ unsigned stopped : 1;
++ unsigned dma_con : 1;
++ unsigned dir_in : 1;
++ unsigned assigned : 1;
++
++ unsigned config;
++ unsigned interface;
++ unsigned aisn;
++ /* UDCCSR = UDC Control/Status Register for this EP
++ * UBCR = UDC Byte Count Remaining (contents of OUT fifo)
++ * UDCDR = UDC Endpoint Data Register (the fifo)
++ * UDCCR = UDC Endpoint Configuration Registers
++ * DRCM = DMA Request Channel Map
++ */
++ volatile u32 *reg_udccsr;
++ volatile u32 *reg_udcbcr;
++ volatile u32 *reg_udcdr;
++ volatile u32 *reg_udccr;
++#ifdef USE_DMA
++ volatile u32 *reg_drcmr;
++#define drcmr(n) .reg_drcmr = & DRCMR ## n ,
++#else
++#define drcmr(n)
++#endif
++
++#ifdef CONFIG_PM
++ unsigned udccsr_value;
++ unsigned udccr_value;
++#endif
++};
++
++struct pxa27x_request {
++ struct usb_request req;
++ struct list_head queue;
++};
++
++enum ep0_state {
++ EP0_IDLE,
++ EP0_IN_DATA_PHASE,
++ EP0_OUT_DATA_PHASE,
++// EP0_END_XFER,
++ EP0_STALL,
++ EP0_NO_ACTION
++};
++
++#define EP0_FIFO_SIZE ((unsigned)16)
++#define BULK_FIFO_SIZE ((unsigned)64)
++#define ISO_FIFO_SIZE ((unsigned)256)
++#define INT_FIFO_SIZE ((unsigned)8)
++
++struct udc_stats {
++ struct ep0stats {
++ unsigned long ops;
++ unsigned long bytes;
++ } read, write;
++ unsigned long irqs;
++};
++
++#ifdef CONFIG_USB_PXA27X_SMALL
++/* when memory's tight, SMALL config saves code+data. */
++//#undef USE_DMA
++//#define UDC_EP_NUM 3
++#endif
++
++#ifndef UDC_EP_NUM
++#define UDC_EP_NUM 24
++#endif
++
++struct pxa27x_udc {
++ struct usb_gadget gadget;
++ struct usb_gadget_driver *driver;
++
++ enum ep0_state ep0state;
++ struct udc_stats stats;
++ unsigned got_irq : 1,
++ got_disc : 1,
++ has_cfr : 1,
++ req_pending : 1,
++ req_std : 1,
++ req_config : 1;
++
++#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200))
++ struct timer_list timer;
++
++ struct device *dev;
++ struct pxa2xx_udc_mach_info *mach;
++ u64 dma_mask;
++ struct pxa27x_ep ep [UDC_EP_NUM];
++
++ unsigned configuration,
++ interface,
++ alternate;
++#ifdef CONFIG_PM
++ unsigned udccsr0;
++#endif
++};
++
++/*-------------------------------------------------------------------------*/
++#if 0
++#ifdef DEBUG
++#define HEX_DISPLAY(n) do { \
++ if (machine_is_mainstone())\
++ { MST_LEDDAT1 = (n); } \
++ } while(0)
++
++#define HEX_DISPLAY1(n) HEX_DISPLAY(n)
++
++#define HEX_DISPLAY2(n) do { \
++ if (machine_is_mainstone()) \
++ { MST_LEDDAT2 = (n); } \
++ } while(0)
++
++#endif /* DEBUG */
++#endif
++/*-------------------------------------------------------------------------*/
++
++/* LEDs are only for debug */
++#ifndef HEX_DISPLAY
++#define HEX_DISPLAY(n) do {} while(0)
++#endif
++
++#ifndef LED_CONNECTED_ON
++#define LED_CONNECTED_ON do {} while(0)
++#define LED_CONNECTED_OFF do {} while(0)
++#endif
++#ifndef LED_EP0_ON
++#define LED_EP0_ON do {} while (0)
++#define LED_EP0_OFF do {} while (0)
++#endif
++
++static struct pxa27x_udc *the_controller;
++
++#if 0
++/*-------------------------------------------------------------------------*/
++
++
++/* one GPIO should be used to detect host disconnect */
++static inline int is_usb_connected(void)
++{
++ if (!the_controller->mach->udc_is_connected)
++ return 1;
++ return the_controller->mach->udc_is_connected();
++}
++
++/* one GPIO should force the host to see this device (or not) */
++static inline void make_usb_disappear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA27X_UDC_CMD_DISCONNECT);
++}
++
++static inline void let_usb_appear(void)
++{
++ if (!the_controller->mach->udc_command)
++ return;
++ the_controller->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be
++ * mostly silent during normal use/testing, with no timing side-effects.
++ */
++#define DBG_NORMAL 1 /* error paths, device state transitions */
++#define DBG_VERBOSE 2 /* add some success path trace info */
++#define DBG_NOISY 3 /* ... even more: request level */
++#define DBG_VERY_NOISY 4 /* ... even more: packet level */
++
++#ifdef DEBUG
++
++static const char *state_name[] = {
++ "EP0_IDLE",
++ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE",
++ "EP0_END_XFER", "EP0_STALL"
++};
++
++#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff)
++
++#ifdef VERBOSE
++# define UDC_DEBUG DBG_VERBOSE
++#else
++# define UDC_DEBUG DBG_NORMAL
++#endif
++
++static void __attribute__ ((__unused__))
++dump_udccr(const char *label)
++{
++ u32 udccr = UDCCR;
++ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n",
++ label, udccr,
++ (udccr & UDCCR_OEN) ? " oen":"",
++ (udccr & UDCCR_AALTHNP) ? " aalthnp":"",
++ (udccr & UDCCR_AHNP) ? " rem" : "",
++ (udccr & UDCCR_BHNP) ? " rstir" : "",
++ (udccr & UDCCR_DWRE) ? " dwre" : "",
++ (udccr & UDCCR_SMAC) ? " smac" : "",
++ (udccr & UDCCR_EMCE) ? " emce" : "",
++ (udccr & UDCCR_UDR) ? " udr" : "",
++ (udccr & UDCCR_UDA) ? " uda" : "",
++ (udccr & UDCCR_UDE) ? " ude" : "",
++ (udccr & UDCCR_ACN) >> UDCCR_ACN_S,
++ (udccr & UDCCR_AIN) >> UDCCR_AIN_S,
++ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S );
++}
++
++static void __attribute__ ((__unused__))
++dump_udccsr0(const char *label)
++{
++ u32 udccsr0 = UDCCSR0;
++
++ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n",
++ label, state_name[the_controller->ep0state], udccsr0,
++ (udccsr0 & UDCCSR0_SA) ? " sa" : "",
++ (udccsr0 & UDCCSR0_RNE) ? " rne" : "",
++ (udccsr0 & UDCCSR0_FST) ? " fst" : "",
++ (udccsr0 & UDCCSR0_SST) ? " sst" : "",
++ (udccsr0 & UDCCSR0_DME) ? " dme" : "",
++ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "",
++ (udccsr0 & UDCCSR0_OPC) ? " opr" : "");
++}
++
++static void __attribute__ ((__unused__))
++dump_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n",
++ state_name[dev->ep0state],
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ dump_udccr("udccr");
++
++ if (!dev->driver) {
++ DMSG("no gadget driver bound\n");
++ return;
++ } else
++ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
++
++
++ dump_udccsr0 ("udccsr0");
++ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep [i].desc == 0)
++ continue;
++ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr);
++ }
++}
++
++#if 0
++static void dump_regs(u8 ep)
++{
++ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n",
++ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep));
++}
++static void dump_req (struct pxa27x_request *req)
++{
++ struct usb_request *r = &req->req;
++
++ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n",
++ __FUNCTION__, (unsigned)r->buf, r->length,
++ r->dma, r->actual);
++}
++#endif
++
++#else
++
++#define DMSG(stuff...) do{}while(0)
++
++#define dump_udccr(x) do{}while(0)
++#define dump_udccsr0(x) do{}while(0)
++#define dump_state(x) do{}while(0)
++
++#define UDC_DEBUG ((unsigned)0)
++
++#endif
++
++#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0)
++
++#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
++#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++
++
++#endif /* __LINUX_USB_GADGET_PXA27X_H */
diff --git a/packages/linux/gumstix-kernel-2.6.21/arch-config.patch b/packages/linux/gumstix-kernel-2.6.21/arch-config.patch
new file mode 100644
index 0000000000..19a83101d8
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/arch-config.patch
@@ -0,0 +1,62 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.21gum/arch/arm/mach-pxa/Kconfig
+@@ -5,6 +5,10 @@ menu "Intel PXA2xx Implementations"
+ choice
+ prompt "Select target board"
+
++config ARCH_GUMSTIX
++ bool "Gumstix Platform"
++ depends on ARCH_PXA
++
+ config ARCH_LUBBOCK
+ bool "Intel DBPXA250 Development Platform"
+ select PXA25x
+@@ -116,6 +120,34 @@ config MACH_TOSA
+ bool "Enable Sharp SL-6000x (Tosa) Support"
+ depends on PXA_SHARPSL_25x
+
++choice
++ depends on ARCH_GUMSTIX
++ prompt "Gumstix Platform Version"
++ default ARCH_GUMSTIX_F
++
++config ARCH_GUMSTIX_ORIG
++ bool "Original Gumstix"
++ select PXA25x
++ help
++ The original gumstix platform, including the gs-200x and gs-400x and the waysmall
++ systems using these boards. (Almost nobody has one of these)
++
++config ARCH_GUMSTIX_F
++ bool "Gumstix-F"
++ select PXA25x
++ help
++ The updated Gumstix basix and connex boards with 60-pin connector, and
++ waysmall systems using these boards, including ws-200ax and ws-400ax.
++
++config ARCH_GUMSTIX_VERDEX
++ bool "Gumstix Verdex"
++ select PXA27x
++ help
++ The Gumstix verdex boards with 24, 60, and 120-pin connectors, and
++ computer systems using these boards.
++
++endchoice
++
+ config PXA25x
+ bool
+ help
+Index: linux-2.6.21gum/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.21gum/arch/arm/mach-pxa/Makefile
+@@ -8,6 +8,7 @@ obj-$(CONFIG_PXA25x) += pxa25x.o
+ obj-$(CONFIG_PXA27x) += pxa27x.o
+
+ # Specific board support
++obj-$(CONFIG_ARCH_GUMSTIX) += gumstix.o
+ obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o
+ obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o
+ obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o
diff --git a/packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpu.patch b/packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpu.patch
new file mode 100644
index 0000000000..6621fd0f51
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpu.patch
@@ -0,0 +1,117 @@
+Status: WORKS
+PXA CPU enhancements
+
+from patch 1667:
+- 64K PTEs
+from hh.org-cvs:
+- support in pxa_gpio_mode for active low
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: linux-2.6.21gum/arch/arm/mm/proc-xscale.S
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mm/proc-xscale.S
++++ linux-2.6.21gum/arch/arm/mm/proc-xscale.S
+@@ -474,11 +474,62 @@ ENTRY(cpu_xscale_set_pte_ext)
+ movne r2, #0 @ no -> fault
+
+ str r2, [r0] @ hardware version
++
++ @ We try to map 64K page entries when possible.
++ @ We do that for kernel space only since the usage pattern from
++ @ the setting of VM area is quite simple. User space is not worth
++ @ the implied complexity because of ever randomly changing PTEs
++ @ (page aging, swapout, etc) requiring constant coherency checks.
++ @ Since PTEs are usually set in increasing order, we test the
++ @ possibility for a large page only when given the last PTE of a
++ @ 64K boundary.
++ tsteq r1, #L_PTE_USER
++ andeq r1, r0, #(15 << 2)
++ teqeq r1, #(15 << 2)
++ beq 1f
++
+ mov ip, #0
+ mcr p15, 0, r0, c7, c10, 1 @ Clean D cache line
+ mcr p15, 0, ip, c7, c10, 4 @ Drain Write (& Fill) Buffer
+ mov pc, lr
+
++ @ See if we have 16 identical PTEs but with consecutive base addresses
++1: bic r3, r2, #0x0000f000
++ mov r1, #0x0000f000
++2: eor r2, r2, r3
++ teq r2, r1
++ bne 4f
++ subs r1, r1, #0x00001000
++ ldr r2, [r0, #-4]!
++ bne 2b
++ eors r2, r2, r3
++ bne 4f
++
++ @ Now create our LARGE PTE from the current EXT one.
++ bic r3, r3, #PTE_TYPE_MASK
++ orr r3, r3, #PTE_TYPE_LARGE
++ and r2, r3, #0x30 @ EXT_AP --> LARGE_AP0
++ orr r2, r2, r2, lsl #2 @ add LARGE_AP1
++ orr r2, r2, r2, lsl #4 @ add LARGE_AP3 + LARGE_AP2
++ and r1, r3, #0x3c0 @ EXT_TEX
++ bic r3, r3, #0x3c0
++ orr r2, r2, r1, lsl #(12 - 6) @ --> LARGE_TEX
++ orr r2, r2, r3 @ add remaining bits
++
++ @ then put it in the pagetable
++ mov r3, r2
++3: strd r2, [r0], #8
++ tst r0, #(15 << 2)
++ bne 3b
++
++ @ Then sync the 2 corresponding cache lines
++ sub r0, r0, #(16 << 2)
++ mcr p15, 0, r0, c7, c10, 1 @ Clean D cache line
++4: orr r0, r0, #(15 << 2)
++ mcr p15, 0, r0, c7, c10, 1 @ Clean D cache line
++ mov ip, #0
++ mcr p15, 0, ip, c7, c10, 4 @ Drain Write (& Fill) Buffer
++ mov pc, lr
+
+ .ltorg
+
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.21gum.orig/include/asm-arm/arch-pxa/pxa-regs.h
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -1345,6 +1345,7 @@
+ #define GPIO_ALT_FN_2_OUT 0x280
+ #define GPIO_ALT_FN_3_IN 0x300
+ #define GPIO_ALT_FN_3_OUT 0x380
++#define GPIO_ACTIVE_LOW 0x1000
+ #define GPIO_MD_MASK_NR 0x07f
+ #define GPIO_MD_MASK_DIR 0x080
+ #define GPIO_MD_MASK_FN 0x300
+@@ -1597,6 +1598,25 @@
+ #define PWER_GPIO15 PWER_GPIO (15) /* GPIO [15] wake-up enable */
+ #define PWER_RTC 0x80000000 /* RTC alarm wake-up enable */
+
++#define PWER_GPIO(Nb) (1 << Nb) /* GPIO [0..15] wake-up enable */
++#define PWER_GPIO0 PWER_GPIO (0) /* GPIO [0] wake-up enable */
++#define PWER_GPIO1 PWER_GPIO (1) /* GPIO [1] wake-up enable */
++#define PWER_GPIO2 PWER_GPIO (2) /* GPIO [2] wake-up enable */
++#define PWER_GPIO3 PWER_GPIO (3) /* GPIO [3] wake-up enable */
++#define PWER_GPIO4 PWER_GPIO (4) /* GPIO [4] wake-up enable */
++#define PWER_GPIO5 PWER_GPIO (5) /* GPIO [5] wake-up enable */
++#define PWER_GPIO6 PWER_GPIO (6) /* GPIO [6] wake-up enable */
++#define PWER_GPIO7 PWER_GPIO (7) /* GPIO [7] wake-up enable */
++#define PWER_GPIO8 PWER_GPIO (8) /* GPIO [8] wake-up enable */
++#define PWER_GPIO9 PWER_GPIO (9) /* GPIO [9] wake-up enable */
++#define PWER_GPIO10 PWER_GPIO (10) /* GPIO [10] wake-up enable */
++#define PWER_GPIO11 PWER_GPIO (11) /* GPIO [11] wake-up enable */
++#define PWER_GPIO12 PWER_GPIO (12) /* GPIO [12] wake-up enable */
++#define PWER_GPIO13 PWER_GPIO (13) /* GPIO [13] wake-up enable */
++#define PWER_GPIO14 PWER_GPIO (14) /* GPIO [14] wake-up enable */
++#define PWER_GPIO15 PWER_GPIO (15) /* GPIO [15] wake-up enable */
++#define PWER_RTC 0x80000000 /* RTC alarm wake-up enable */
++
+
+ /*
+ * SSP Serial Port Registers
diff --git a/packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpufreq.patch b/packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpufreq.patch
new file mode 100644
index 0000000000..f3d8396a61
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/bkpxa-pxa-cpufreq.patch
@@ -0,0 +1,403 @@
+Status: WORKS
+PXA CPU frequency change support
+added mods from Stefan Eletzhofer and Lothar Weissmann
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: linux-2.6.21gum/arch/arm/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/Kconfig
++++ linux-2.6.21gum/arch/arm/Kconfig
+@@ -800,7 +800,7 @@ config KEXEC
+
+ endmenu
+
+-if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX )
++if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA )
+
+ menu "CPU Frequency scaling"
+
+@@ -838,6 +838,12 @@ config CPU_FREQ_IMX
+
+ endmenu
+
++config CPU_FREQ_PXA
++ bool
++ depends on CPU_FREQ && ARCH_PXA
++ default y
++ select CPU_FREQ_DEFAULT_GOV_USERSPACE
++
+ endif
+
+ menu "Floating point emulation"
+Index: linux-2.6.21gum/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.21gum/arch/arm/mach-pxa/Makefile
+@@ -32,6 +32,7 @@ obj-$(CONFIG_LEDS) += $(led-y)
+ # Misc features
+ obj-$(CONFIG_PM) += pm.o sleep.o
+ obj-$(CONFIG_PXA_SSP) += ssp.o
++obj-$(CONFIG_CPU_FREQ) += cpu-pxa.o
+
+ ifeq ($(CONFIG_PXA27x),y)
+ obj-$(CONFIG_PM) += standby.o
+Index: linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+@@ -0,0 +1,321 @@
++/*
++ * linux/arch/arm/mach-pxa/cpu-pxa.c
++ *
++ * Copyright (C) 2002,2003 Intrinsyc Software
++ *
++ * 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
++ *
++ * History:
++ * 31-Jul-2002 : Initial version [FB]
++ * 29-Jan-2003 : added PXA255 support [FB]
++ * 20-Apr-2003 : ported to v2.5 (Dustin McIntire, Sensoria Corp.)
++ *
++ * Note:
++ * This driver may change the memory bus clock rate, but will not do any
++ * platform specific access timing changes... for example if you have flash
++ * memory connected to CS0, you will need to register a platform specific
++ * notifier which will adjust the memory access strobes to maintain a
++ * minimum strobe width.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/sched.h>
++#include <linux/init.h>
++#include <linux/cpufreq.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#define DEBUG 0
++
++#ifdef DEBUG
++ static unsigned int freq_debug = DEBUG;
++ MODULE_PARM(freq_debug, "i");
++ MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0");
++#else
++ #define freq_debug 0
++#endif
++
++typedef struct
++{
++ unsigned int khz;
++ unsigned int membus;
++ unsigned int cccr;
++ unsigned int div2;
++} pxa_freqs_t;
++
++/* Define the refresh period in mSec for the SDRAM and the number of rows */
++#define SDRAM_TREF 64 /* standard 64ms SDRAM */
++#define SDRAM_ROWS 4096 /* 64MB=8192 32MB=4096 */
++#define MDREFR_DRI(x) ((x*SDRAM_TREF)/(SDRAM_ROWS*32))
++
++#define CCLKCFG_TURBO 0x1
++#define CCLKCFG_FCS 0x2
++#define PXA25x_MIN_FREQ 99500
++#define PXA25x_MAX_FREQ 398100
++#define MDREFR_DB2_MASK (MDREFR_K2DB2 | MDREFR_K1DB2)
++#define MDREFR_DRI_MASK 0xFFF
++
++
++/* Use the run mode frequencies for the CPUFREQ_POLICY_PERFORMANCE policy */
++static pxa_freqs_t pxa255_run_freqs[] =
++{
++ /* CPU MEMBUS CCCR DIV2*/
++ { 99500, 99500, 0x121, 1}, /* run= 99, turbo= 99, PXbus=50, SDRAM=50 */
++ {132700, 132700, 0x123, 1}, /* run=133, turbo=133, PXbus=66, SDRAM=66 */
++ {199100, 99500, 0x141, 0}, /* run=199, turbo=199, PXbus=99, SDRAM=99 */
++ {265400, 132700, 0x143, 1}, /* run=265, turbo=265, PXbus=133, SDRAM=66 */
++ {331800, 165900, 0x145, 1}, /* run=331, turbo=331, PXbus=166, SDRAM=83 */
++ {398100, 99500, 0x161, 0}, /* run=398, turbo=398, PXbus=196, SDRAM=99 */
++ {0,}
++};
++#define NUM_RUN_FREQS (sizeof(pxa255_run_freqs)/sizeof(pxa_freqs_t))
++
++static struct cpufreq_frequency_table pxa255_run_freq_table[NUM_RUN_FREQS+1];
++
++/* Use the turbo mode frequencies for the CPUFREQ_POLICY_POWERSAVE policy */
++static pxa_freqs_t pxa255_turbo_freqs[] =
++{
++ /* CPU MEMBUS CCCR DIV2*/
++ { 99500, 99500, 0x121, 1}, /* run=99, turbo= 99, PXbus=50, SDRAM=50 */
++ {199100, 99500, 0x221, 0}, /* run=99, turbo=199, PXbus=50, SDRAM=99 */
++ {298500, 99500, 0x321, 0}, /* run=99, turbo=287, PXbus=50, SDRAM=99 */
++ {298600, 99500, 0x1c1, 0}, /* run=199, turbo=287, PXbus=99, SDRAM=99 */
++ {398100, 99500, 0x241, 0}, /* run=199, turbo=398, PXbus=99, SDRAM=99 */
++ {0,}
++};
++#define NUM_TURBO_FREQS (sizeof(pxa255_turbo_freqs)/sizeof(pxa_freqs_t))
++
++static struct cpufreq_frequency_table pxa255_turbo_freq_table[NUM_TURBO_FREQS+1];
++
++extern unsigned get_clk_frequency_khz(int info);
++
++/* find a valid frequency point */
++static int pxa_verify_policy(struct cpufreq_policy *policy)
++{
++ int ret;
++ struct cpufreq_frequency_table *pxa_freqs_table;
++
++ if(policy->policy == CPUFREQ_POLICY_PERFORMANCE) {
++ pxa_freqs_table = pxa255_run_freq_table;
++ } else if (policy->policy == CPUFREQ_POLICY_POWERSAVE) {
++ pxa_freqs_table = pxa255_turbo_freq_table;
++ } else {
++ printk("CPU PXA: Unknown policy found. "
++ "Using CPUFREQ_POLICY_PERFORMANCE\n");
++ pxa_freqs_table = pxa255_run_freq_table;
++ }
++ ret=cpufreq_frequency_table_verify(policy, pxa_freqs_table);
++
++ if(freq_debug) {
++ printk("Verified CPU policy: %dKhz min to %dKhz max\n",
++ policy->min, policy->max);
++ }
++
++ return ret;
++}
++
++static int pxa_set_target(struct cpufreq_policy *policy,
++ unsigned int target_freq,
++ unsigned int relation)
++{
++ int idx;
++ unsigned long cpus_allowed;
++ int cpu = policy->cpu;
++ struct cpufreq_freqs freqs;
++ pxa_freqs_t *pxa_freq_settings;
++ struct cpufreq_frequency_table *pxa_freqs_table;
++ unsigned long flags;
++ unsigned int unused;
++ unsigned int preset_mdrefr, postset_mdrefr;
++
++ /*
++ * Save this threads cpus_allowed mask.
++ */
++ cpus_allowed = current->cpus_allowed;
++
++ /*
++ * Bind to the specified CPU. When this call returns,
++ * we should be running on the right CPU.
++ */
++ set_cpus_allowed(current, 1 << cpu);
++ BUG_ON(cpu != smp_processor_id());
++
++ /* Get the current policy */
++ if(policy->policy == CPUFREQ_POLICY_PERFORMANCE) {
++ pxa_freq_settings = pxa255_run_freqs;
++ pxa_freqs_table = pxa255_run_freq_table;
++ }else if (policy->policy == CPUFREQ_POLICY_POWERSAVE) {
++ pxa_freq_settings = pxa255_turbo_freqs;
++ pxa_freqs_table = pxa255_turbo_freq_table;
++ }else {
++ printk("CPU PXA: Unknown policy found. "
++ "Using CPUFREQ_POLICY_PERFORMANCE\n");
++ pxa_freq_settings = pxa255_run_freqs;
++ pxa_freqs_table = pxa255_run_freq_table;
++ }
++
++ /* Lookup the next frequency */
++ if (cpufreq_frequency_table_target(policy, pxa_freqs_table,
++ target_freq, relation, &idx)) {
++ return -EINVAL;
++ }
++
++ freqs.old = policy->cur;
++ freqs.new = pxa_freq_settings[idx].khz;
++ freqs.cpu = policy->cpu;
++ if(freq_debug) {
++ printk(KERN_INFO "Changing CPU frequency to %d Mhz, (SDRAM %d Mhz)\n",
++ freqs.new/1000, (pxa_freq_settings[idx].div2) ?
++ (pxa_freq_settings[idx].membus/2000) :
++ (pxa_freq_settings[idx].membus/1000));
++ }
++
++ void *ramstart = phys_to_virt(0xa0000000);
++
++ /*
++ * Tell everyone what we're about to do...
++ * you should add a notify client with any platform specific
++ * Vcc changing capability
++ */
++ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
++
++ /* Calculate the next MDREFR. If we're slowing down the SDRAM clock
++ * we need to preset the smaller DRI before the change. If we're speeding
++ * up we need to set the larger DRI value after the change.
++ */
++ preset_mdrefr = postset_mdrefr = MDREFR;
++ if((MDREFR & MDREFR_DRI_MASK) > MDREFR_DRI(pxa_freq_settings[idx].membus)) {
++ preset_mdrefr = (preset_mdrefr & ~MDREFR_DRI_MASK) |
++ MDREFR_DRI(pxa_freq_settings[idx].membus);
++ }
++ postset_mdrefr = (postset_mdrefr & ~MDREFR_DRI_MASK) |
++ MDREFR_DRI(pxa_freq_settings[idx].membus);
++
++ /* If we're dividing the memory clock by two for the SDRAM clock, this
++ * must be set prior to the change. Clearing the divide must be done
++ * after the change.
++ */
++ if(pxa_freq_settings[idx].div2) {
++ preset_mdrefr |= MDREFR_DB2_MASK;
++ postset_mdrefr |= MDREFR_DB2_MASK;
++ } else {
++ postset_mdrefr &= ~MDREFR_DB2_MASK;
++ }
++
++ local_irq_save(flags);
++
++ /* Set new the CCCR */
++ CCCR = pxa_freq_settings[idx].cccr;
++
++ __asm__ __volatile__(" \
++ ldr r4, [%1] ; /* load MDREFR */ \
++ b 2f ; \
++ .align 5 ; \
++1: \
++ str %4, [%1] ; /* preset the MDREFR */ \
++ mcr p14, 0, %2, c6, c0, 0 ; /* set CCLKCFG[FCS] */ \
++ str %5, [%1] ; /* postset the MDREFR */ \
++ \
++ b 3f ; \
++2: b 1b ; \
++3: nop ; \
++ "
++ : "=&r" (unused)
++ : "r" (&MDREFR), "r" (CCLKCFG_TURBO|CCLKCFG_FCS), "r" (ramstart), \
++ "r" (preset_mdrefr), "r" (postset_mdrefr)
++ : "r4", "r5");
++ local_irq_restore(flags);
++
++ /*
++ * Restore the CPUs allowed mask.
++ */
++ set_cpus_allowed(current, cpus_allowed);
++
++ /*
++ * Tell everyone what we've just done...
++ * you should add a notify client with any platform specific
++ * SDRAM refresh timer adjustments
++ */
++ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
++
++ return 0;
++}
++
++static int pxa_cpufreq_init(struct cpufreq_policy *policy)
++{
++ unsigned long cpus_allowed;
++ unsigned int cpu = policy->cpu;
++ int i;
++
++ cpus_allowed = current->cpus_allowed;
++
++ set_cpus_allowed(current, 1 << cpu);
++ BUG_ON(cpu != smp_processor_id());
++
++ /* set default policy and cpuinfo */
++ policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
++ policy->policy = CPUFREQ_POLICY_PERFORMANCE;
++ policy->cpuinfo.max_freq = PXA25x_MAX_FREQ;
++ policy->cpuinfo.min_freq = PXA25x_MIN_FREQ;
++ policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */
++ policy->cur = get_clk_frequency_khz(0); /* current freq */
++ policy->min = policy->max = policy->cur;
++
++ /* Generate the run cpufreq_frequency_table struct */
++ for(i=0;i<NUM_RUN_FREQS;i++) {
++ pxa255_run_freq_table[i].frequency = pxa255_run_freqs[i].khz;
++ pxa255_run_freq_table[i].index = i;
++ }
++ pxa255_run_freq_table[i].frequency = CPUFREQ_TABLE_END;
++ /* Generate the turbo cpufreq_frequency_table struct */
++ for(i=0;i<NUM_TURBO_FREQS;i++) {
++ pxa255_turbo_freq_table[i].frequency = pxa255_turbo_freqs[i].khz;
++ pxa255_turbo_freq_table[i].index = i;
++ }
++ pxa255_turbo_freq_table[i].frequency = CPUFREQ_TABLE_END;
++
++ set_cpus_allowed(current, cpus_allowed);
++ printk(KERN_INFO "PXA CPU frequency change support initialized\n");
++
++ return 0;
++}
++
++static struct cpufreq_driver pxa_cpufreq_driver = {
++ .verify = pxa_verify_policy,
++ .target = pxa_set_target,
++ .init = pxa_cpufreq_init,
++ .name = "PXA25x",
++};
++
++static int __init pxa_cpu_init(void)
++{
++ return cpufreq_register_driver(&pxa_cpufreq_driver);
++}
++
++static void __exit pxa_cpu_exit(void)
++{
++ cpufreq_unregister_driver(&pxa_cpufreq_driver);
++}
++
++
++MODULE_AUTHOR ("Intrinsyc Software Inc.");
++MODULE_DESCRIPTION ("CPU frequency changing driver for the PXA architecture");
++MODULE_LICENSE("GPL");
++module_init(pxa_cpu_init);
++module_exit(pxa_cpu_exit);
++
+Index: linux-2.6.21gum/Documentation/cpu-freq/user-guide.txt
+===================================================================
+--- linux-2.6.21gum.orig/Documentation/cpu-freq/user-guide.txt
++++ linux-2.6.21gum/Documentation/cpu-freq/user-guide.txt
+@@ -18,7 +18,7 @@
+ Contents:
+ ---------
+ 1. Supported Architectures and Processors
+-1.1 ARM
++1.1 ARM, PXA
+ 1.2 x86
+ 1.3 sparc64
+ 1.4 ppc
+@@ -37,14 +37,15 @@ Contents:
+ 1. Supported Architectures and Processors
+ =========================================
+
+-1.1 ARM
+--------
++1.1 ARM, PXA
++------------
+
+ The following ARM processors are supported by cpufreq:
+
+ ARM Integrator
+ ARM-SA1100
+ ARM-SA1110
++Intel PXA
+
+
+ 1.2 x86
diff --git a/packages/linux/gumstix-kernel-2.6.21/board-init.patch b/packages/linux/gumstix-kernel-2.6.21/board-init.patch
new file mode 100644
index 0000000000..5a15881208
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/board-init.patch
@@ -0,0 +1,81 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+@@ -0,0 +1,76 @@
++/*
++ * linux/arch/arm/mach-pxa/gumstix.c
++ *
++ * Support for the Gumstix computer platform
++ *
++ * Author: Craig Hughes
++ * Created: December 8 2004
++ * Copyright: (C) 2004, Craig Hughes
++ *
++ * 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 <asm/types.h>
++
++#include <linux/init.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/mach/irq.h>
++#include <asm/arch/udc.h>
++#include <asm/arch/mmc.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/gumstix.h>
++
++#include "generic.h"
++
++static int gumstix_mci_init(struct device *dev, irqreturn_t (*lubbock_detect_int)(int, void *, struct pt_regs *), void *data)
++{
++ // Set up MMC controller
++ pxa_gpio_mode(GPIO6_MMCCLK_MD);
++ pxa_gpio_mode(GPIO53_MMCCLK_MD);
++ pxa_gpio_mode(GPIO8_MMCCS0_MD);
++
++ return 0;
++}
++
++static struct pxamci_platform_data gumstix_mci_platform_data = {
++ .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
++ .init = &gumstix_mci_init,
++};
++
++static struct pxa2xx_udc_mach_info gumstix_udc_info __initdata = {
++ .gpio_vbus = GPIO_GUMSTIX_USB_GPIOn,
++ .gpio_pullup = GPIO_GUMSTIX_USB_GPIOx,
++};
++
++static struct platform_device gum_audio_device = {
++ .name = "pxa2xx-ac97",
++ .id = -1,
++};
++
++static struct platform_device *devices[] __initdata = {
++ &gum_audio_device,
++};
++
++static void __init gumstix_init(void)
++{
++ pxa_set_mci_info(&gumstix_mci_platform_data);
++ pxa_set_udc_info(&gumstix_udc_info);
++ (void) platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(GUMSTIX, "The Gumstix Platform")
++ .phys_io = 0x40000000,
++ .boot_params = 0xa0000100,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .timer = &pxa_timer,
++ .map_io = pxa_map_io,
++ .init_irq = pxa_init_irq,
++ .init_machine = gumstix_init,
++MACHINE_END
diff --git a/packages/linux/gumstix-kernel-2.6.21/bugfix-i2c-include.patch b/packages/linux/gumstix-kernel-2.6.21/bugfix-i2c-include.patch
new file mode 100644
index 0000000000..cb0036929a
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/bugfix-i2c-include.patch
@@ -0,0 +1,12 @@
+Index: linux-2.6.21gum/drivers/i2c/busses/i2c-pxa.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/i2c/busses/i2c-pxa.c
++++ linux-2.6.21gum/drivers/i2c/busses/i2c-pxa.c
+@@ -32,6 +32,7 @@
+ #include <linux/i2c-pxa.h>
+ #include <linux/platform_device.h>
+
++#include <asm/arch/pxa-regs.h>
+ #include <asm/hardware.h>
+ #include <asm/irq.h>
+ #include <asm/io.h>
diff --git a/packages/linux/gumstix-kernel-2.6.21/bugfix-mmc-clock.patch b/packages/linux/gumstix-kernel-2.6.21/bugfix-mmc-clock.patch
new file mode 100644
index 0000000000..cac8d735cf
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/bugfix-mmc-clock.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.21gum/drivers/mmc/pxamci.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/mmc/pxamci.c
++++ linux-2.6.21gum/drivers/mmc/pxamci.c
+@@ -366,8 +366,7 @@ static void pxamci_set_ios(struct mmc_ho
+
+ if (ios->clock) {
+ unsigned int clk = CLOCKRATE / ios->clock;
+- if (CLOCKRATE / clk > ios->clock)
+- clk <<= 1;
++ if(clk > (1<<6)) clk = (1<<6);
+ host->clkrt = fls(clk) - 1;
+ pxa_set_cken(CKEN12_MMC, 1);
+
diff --git a/packages/linux/gumstix-kernel-2.6.21/bugfix-pxa-cpufreq.patch b/packages/linux/gumstix-kernel-2.6.21/bugfix-pxa-cpufreq.patch
new file mode 100644
index 0000000000..27388ca9ef
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/bugfix-pxa-cpufreq.patch
@@ -0,0 +1,64 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/cpu-pxa.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+@@ -60,7 +60,7 @@ typedef struct
+
+ /* Define the refresh period in mSec for the SDRAM and the number of rows */
+ #define SDRAM_TREF 64 /* standard 64ms SDRAM */
+-#define SDRAM_ROWS 4096 /* 64MB=8192 32MB=4096 */
++#define SDRAM_ROWS 8192 /* 64MB=8192 32MB=4096 */
+ #define MDREFR_DRI(x) ((x*SDRAM_TREF)/(SDRAM_ROWS*32))
+
+ #define CCLKCFG_TURBO 0x1
+@@ -136,7 +136,7 @@ static int pxa_set_target(struct cpufreq
+ unsigned int relation)
+ {
+ int idx;
+- unsigned long cpus_allowed;
++ cpumask_t cpus_allowed;
+ int cpu = policy->cpu;
+ struct cpufreq_freqs freqs;
+ pxa_freqs_t *pxa_freq_settings;
+@@ -144,6 +144,7 @@ static int pxa_set_target(struct cpufreq
+ unsigned long flags;
+ unsigned int unused;
+ unsigned int preset_mdrefr, postset_mdrefr;
++ void *ramstart;
+
+ /*
+ * Save this threads cpus_allowed mask.
+@@ -154,7 +155,7 @@ static int pxa_set_target(struct cpufreq
+ * Bind to the specified CPU. When this call returns,
+ * we should be running on the right CPU.
+ */
+- set_cpus_allowed(current, 1 << cpu);
++ set_cpus_allowed(current, cpumask_of_cpu(cpu));
+ BUG_ON(cpu != smp_processor_id());
+
+ /* Get the current policy */
+@@ -187,7 +188,7 @@ static int pxa_set_target(struct cpufreq
+ (pxa_freq_settings[idx].membus/1000));
+ }
+
+- void *ramstart = phys_to_virt(0xa0000000);
++ ramstart = phys_to_virt(0xa0000000);
+
+ /*
+ * Tell everyone what we're about to do...
+@@ -260,13 +261,13 @@ static int pxa_set_target(struct cpufreq
+
+ static int pxa_cpufreq_init(struct cpufreq_policy *policy)
+ {
+- unsigned long cpus_allowed;
++ cpumask_t cpus_allowed;
+ unsigned int cpu = policy->cpu;
+ int i;
+
+ cpus_allowed = current->cpus_allowed;
+
+- set_cpus_allowed(current, 1 << cpu);
++ set_cpus_allowed(current, cpumask_of_cpu(cpu));
+ BUG_ON(cpu != smp_processor_id());
+
+ /* set default policy and cpuinfo */
diff --git a/packages/linux/gumstix-kernel-2.6.21/bugfix-serial-interrupt.patch b/packages/linux/gumstix-kernel-2.6.21/bugfix-serial-interrupt.patch
new file mode 100644
index 0000000000..7f2487ec00
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/bugfix-serial-interrupt.patch
@@ -0,0 +1,25 @@
+Index: linux-2.6.21gum/drivers/serial/pxa.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/serial/pxa.c
++++ linux-2.6.21gum/drivers/serial/pxa.c
+@@ -235,15 +235,19 @@ static inline irqreturn_t serial_pxa_irq
+ struct uart_pxa_port *up = dev_id;
+ unsigned int iir, lsr;
+
++ serial_out(up, UART_MCR, serial_in(up, UART_MCR) & ~UART_MCR_RTS); // Clear RTS
+ iir = serial_in(up, UART_IIR);
+ if (iir & UART_IIR_NO_INT)
+- return IRQ_NONE;
++ {
++ //printk(KERN_WARNING "serial_pxa_irq: odd -- interrupt triggered, but no interrupt in IIR: %08x\n",iir);
++ }
+ lsr = serial_in(up, UART_LSR);
+ if (lsr & UART_LSR_DR)
+ receive_chars(up, &lsr);
+ check_modem_status(up);
+ if (lsr & UART_LSR_THRE)
+ transmit_chars(up);
++ serial_out(up, UART_MCR, serial_in(up, UART_MCR) | UART_MCR_RTS); // Assert RTS
+ return IRQ_HANDLED;
+ }
+
diff --git a/packages/linux/gumstix-kernel-2.6.21/bugfix-serial-register-status.patch b/packages/linux/gumstix-kernel-2.6.21/bugfix-serial-register-status.patch
new file mode 100644
index 0000000000..e25436b8ee
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/bugfix-serial-register-status.patch
@@ -0,0 +1,69 @@
+Index: linux-2.6.21gum/drivers/serial/pxa.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/serial/pxa.c
++++ linux-2.6.21gum/drivers/serial/pxa.c
+@@ -57,6 +57,8 @@ struct uart_pxa_port {
+ unsigned int lsr_break_flag;
+ unsigned int cken;
+ char *name;
++ unsigned int msr;
++ unsigned int lsr;
+ };
+
+ static inline unsigned int serial_in(struct uart_pxa_port *up, int offset)
+@@ -159,6 +161,7 @@ static inline void receive_chars(struct
+
+ ignore_char:
+ *status = serial_in(up, UART_LSR);
++ up->lsr = *status;
+ } while ((*status & UART_LSR_DR) && (max_count-- > 0));
+ tty_flip_buffer_push(tty);
+ }
+@@ -211,7 +214,7 @@ static inline void check_modem_status(st
+ int status;
+
+ status = serial_in(up, UART_MSR);
+-
++ up->msr = status;
+ if ((status & UART_MSR_ANY_DELTA) == 0)
+ return;
+
+@@ -242,6 +245,7 @@ static inline irqreturn_t serial_pxa_irq
+ //printk(KERN_WARNING "serial_pxa_irq: odd -- interrupt triggered, but no interrupt in IIR: %08x\n",iir);
+ }
+ lsr = serial_in(up, UART_LSR);
++ up->lsr = lsr;
+ if (lsr & UART_LSR_DR)
+ receive_chars(up, &lsr);
+ check_modem_status(up);
+@@ -258,7 +262,7 @@ static unsigned int serial_pxa_tx_empty(
+ unsigned int ret;
+
+ spin_lock_irqsave(&up->port.lock, flags);
+- ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0;
++ ret = up->lsr & UART_LSR_TEMT ? TIOCSER_TEMT : 0;
+ spin_unlock_irqrestore(&up->port.lock, flags);
+
+ return ret;
+@@ -270,7 +274,7 @@ static unsigned int serial_pxa_get_mctrl
+ unsigned char status;
+ unsigned int ret;
+
+- status = serial_in(up, UART_MSR);
++ status = up->msr;
+
+ ret = 0;
+ if (status & UART_MSR_DCD)
+@@ -400,10 +404,10 @@ static int serial_pxa_startup(struct uar
+ /*
+ * And clear the interrupt registers again for luck.
+ */
+- (void) serial_in(up, UART_LSR);
++ up->lsr = serial_in(up, UART_LSR);
+ (void) serial_in(up, UART_RX);
+ (void) serial_in(up, UART_IIR);
+- (void) serial_in(up, UART_MSR);
++ up->msr = serial_in(up, UART_MSR);
+
+ return 0;
+ }
diff --git a/packages/linux/gumstix-kernel-2.6.21/compact-flash.patch b/packages/linux/gumstix-kernel-2.6.21/compact-flash.patch
new file mode 100644
index 0000000000..e3bce37c85
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/compact-flash.patch
@@ -0,0 +1,287 @@
+Index: linux-2.6.21gum/drivers/pcmcia/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/pcmcia/Makefile
++++ linux-2.6.21gum/drivers/pcmcia/Makefile
+@@ -69,4 +69,4 @@ sa1100_cs-$(CONFIG_SA1100_SIMPAD) += sa
+ pxa2xx_cs-$(CONFIG_ARCH_LUBBOCK) += pxa2xx_lubbock.o sa1111_generic.o
+ pxa2xx_cs-$(CONFIG_MACH_MAINSTONE) += pxa2xx_mainstone.o
+ pxa2xx_cs-$(CONFIG_PXA_SHARPSL) += pxa2xx_sharpsl.o
+-
++pxa2xx_cs-$(CONFIG_ARCH_GUMSTIX) += pxa2xx_gumstix.o
+Index: linux-2.6.21gum/drivers/pcmcia/pxa2xx_gumstix.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/pcmcia/pxa2xx_gumstix.c
+@@ -0,0 +1,272 @@
++/*
++ * linux/drivers/pcmcia/pxa2xx_gumstix.c
++ *
++ * Gumstix PCMCIA specific routines. Based on Mainstone
++ *
++ * Copyright 2004, Craig Hughes <craig@gumstix.com>
++ *
++ * 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/init.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/interrupt.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++
++#include <pcmcia/ss.h>
++
++#include <asm/hardware.h>
++#include <asm/delay.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/irq.h>
++#include <asm/io.h>
++
++#include <asm/arch/gumstix.h>
++
++#include "soc_common.h"
++
++static struct pcmcia_irqs gumstix_pcmcia_irqs0[] = {
++ { 0, GUMSTIX_S0_nCD_IRQ, "CF0 nCD" },
++ { 0, GUMSTIX_S0_nSTSCHG_IRQ, "CF0 nSTSCHG" },
++};
++
++static struct pcmcia_irqs gumstix_pcmcia_irqs1[] = {
++ { 1, GUMSTIX_S1_nCD_IRQ, "CF1 nCD" },
++ { 1, GUMSTIX_S1_nSTSCHG_IRQ, "CF1 nSTSCHG" },
++};
++
++static int net_cf_vx_mode = 0;
++
++static int gumstix_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
++{
++ if(skt->nr == 0)
++ {
++ pxa_gpio_mode(GPIO_GUMSTIX_nSTSCHG_0_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nCD_0_MD);
++ if(net_cf_vx_mode)
++ pxa_gpio_mode(GPIO_GUMSTIX_PRDY_nBSY_0_OLD_MD);
++ else
++ pxa_gpio_mode(GPIO_GUMSTIX_PRDY_nBSY_0_MD);
++ } else {
++ pxa_gpio_mode(GPIO_GUMSTIX_nSTSCHG_1_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nCD_1_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_PRDY_nBSY_1_MD);
++ }
++
++ pxa_gpio_mode(GPIO_GUMSTIX_nPOE_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPWE_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPIOR_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPIOW_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPCE_1_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPCE_2_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_pSKTSEL_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPREG_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPWAIT_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_nIOIS16_MD);
++
++ skt->irq = (skt->nr == 0) ? ((net_cf_vx_mode == 0) ? GUMSTIX_S0_PRDY_nBSY_IRQ : GUMSTIX_S0_PRDY_nBSY_OLD_IRQ) : GUMSTIX_S1_PRDY_nBSY_IRQ;
++
++ return (skt->nr == 0) ? soc_pcmcia_request_irqs(skt, gumstix_pcmcia_irqs0, ARRAY_SIZE(gumstix_pcmcia_irqs0)) :
++ soc_pcmcia_request_irqs(skt, gumstix_pcmcia_irqs1, ARRAY_SIZE(gumstix_pcmcia_irqs1));
++}
++
++static void gumstix_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
++{
++ if(skt->nr == 0)
++ {
++ soc_pcmcia_free_irqs(skt, gumstix_pcmcia_irqs0, ARRAY_SIZE(gumstix_pcmcia_irqs0));
++ } else {
++ soc_pcmcia_free_irqs(skt, gumstix_pcmcia_irqs1, ARRAY_SIZE(gumstix_pcmcia_irqs1));
++ }
++}
++
++static void gumstix_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
++ struct pcmcia_state *state)
++{
++ unsigned int cd, prdy_nbsy, nbvd1;
++ if(skt->nr == 0)
++ {
++ cd = GPIO_GUMSTIX_nCD_0;
++ if(net_cf_vx_mode)
++ prdy_nbsy = GPIO_GUMSTIX_PRDY_nBSY_0_OLD;
++ else
++ prdy_nbsy = GPIO_GUMSTIX_PRDY_nBSY_0;
++ nbvd1 = GPIO_GUMSTIX_nBVD1_0;
++ } else {
++ cd = GPIO_GUMSTIX_nCD_1;
++ prdy_nbsy = GPIO_GUMSTIX_PRDY_nBSY_1;
++ nbvd1 = GPIO_GUMSTIX_nBVD1_1;
++ }
++ state->detect = !(GPLR(cd) & GPIO_bit(cd));
++ state->ready = !!(GPLR(prdy_nbsy) & GPIO_bit(prdy_nbsy));
++ state->bvd1 = !!(GPLR(nbvd1) & GPIO_bit(nbvd1));
++ state->bvd2 = 1;
++ state->vs_3v = 0;
++ state->vs_Xv = 0;
++ state->wrprot = 0;
++}
++
++static int gumstix_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
++ const socket_state_t *state)
++{
++ return 0;
++}
++
++static void gumstix_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
++{
++ if(skt->nr) {
++ soc_pcmcia_enable_irqs(skt, gumstix_pcmcia_irqs0, ARRAY_SIZE(gumstix_pcmcia_irqs0));
++ } else {
++ soc_pcmcia_enable_irqs(skt, gumstix_pcmcia_irqs1, ARRAY_SIZE(gumstix_pcmcia_irqs1));
++ }
++}
++
++static void gumstix_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
++{
++ if(skt->nr) {
++ soc_pcmcia_disable_irqs(skt, gumstix_pcmcia_irqs0, ARRAY_SIZE(gumstix_pcmcia_irqs0));
++ } else {
++ soc_pcmcia_disable_irqs(skt, gumstix_pcmcia_irqs1, ARRAY_SIZE(gumstix_pcmcia_irqs1));
++ }
++}
++
++static struct pcmcia_low_level gumstix_pcmcia_ops = {
++ .owner = THIS_MODULE,
++ .hw_init = gumstix_pcmcia_hw_init,
++ .hw_shutdown = gumstix_pcmcia_hw_shutdown,
++ .socket_state = gumstix_pcmcia_socket_state,
++ .configure_socket = gumstix_pcmcia_configure_socket,
++ .socket_init = gumstix_pcmcia_socket_init,
++ .socket_suspend = gumstix_pcmcia_socket_suspend,
++ .nr = 2,
++};
++
++static struct platform_device *gumstix_pcmcia_device;
++
++inline void __init gumstix_pcmcia_cpld_clk(void)
++{
++ GPCR(GPIO_GUMSTIX_nPOE) = GPIO_bit(GPIO_GUMSTIX_nPOE);
++ GPSR(GPIO_GUMSTIX_nPOE) = GPIO_bit(GPIO_GUMSTIX_nPOE);
++}
++
++inline unsigned char __init gumstix_pcmcia_cpld_read_bits(int bits)
++{
++ unsigned char result = 0;
++ unsigned int shift = 0;
++ while(bits--)
++ {
++ result |= !!(GPLR(GPIO_GUMSTIX_nCD_0) & GPIO_bit(GPIO_GUMSTIX_nCD_0)) << shift;
++ shift ++;
++ gumstix_pcmcia_cpld_clk();
++ }
++ printk("CPLD responded with: %02x\n",result);
++ return result;
++}
++
++/* We use the CPLD on the CF-CF card to read a value from a shift register. If we can read that
++ * magic sequence, then we have 2 CF cards; otherwise we assume just one
++ * The CPLD will send the value of the shift register on GPIO11 (the CD line for slot 0)
++ * when RESET is held in reset. We use GPIO48 (nPOE) as a clock signal,
++ * GPIO52/53 (card enable for both cards) to control read/write to the shift register
++ */
++static void __init gumstix_count_cards(void)
++{
++ pxa_gpio_mode(GPIO_GUMSTIX_nPOE | GPIO_OUT);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPCE_1 | GPIO_OUT);
++ pxa_gpio_mode(GPIO_GUMSTIX_nPCE_2 | GPIO_OUT);
++ pxa_gpio_mode(GPIO_GUMSTIX_nCD_0 | GPIO_IN);
++ if(net_cf_vx_mode)
++ pxa_gpio_mode(GPIO_GUMSTIX_CF_OLD_RESET | GPIO_OUT);
++ else
++ pxa_gpio_mode(GPIO_GUMSTIX_CF_RESET | GPIO_OUT);
++
++ // Enter reset
++ if(net_cf_vx_mode)
++ GPSR(GPIO_GUMSTIX_CF_OLD_RESET) = GPIO_bit(GPIO_GUMSTIX_CF_OLD_RESET);
++ else
++ GPSR(GPIO_GUMSTIX_CF_RESET) = GPIO_bit(GPIO_GUMSTIX_CF_RESET);
++
++ // Setup the shift register
++ GPSR(GPIO_GUMSTIX_nPCE_1) = GPIO_bit(GPIO_GUMSTIX_nPCE_1);
++ GPCR(GPIO_GUMSTIX_nPCE_2) = GPIO_bit(GPIO_GUMSTIX_nPCE_2);
++
++ // Tick the clock to program the shift register
++ gumstix_pcmcia_cpld_clk();
++
++ // Now set shift register into read mode
++ GPCR(GPIO_GUMSTIX_nPCE_1) = GPIO_bit(GPIO_GUMSTIX_nPCE_1);
++ GPSR(GPIO_GUMSTIX_nPCE_2) = GPIO_bit(GPIO_GUMSTIX_nPCE_2);
++
++ // We can read the bits now -- 0xC2 means "Dual compact flash"
++ if(gumstix_pcmcia_cpld_read_bits(8) != 0xC2)
++ {
++ // We do not have 2 CF slots
++ gumstix_pcmcia_ops.nr = 1;
++ }
++}
++
++#ifdef CONFIG_ARCH_GUMSTIX_VERDEX
++static void __init gumstix_check_if_netCF_vx(void)
++{
++ void *network_controller_memory = ioremap(0x04000300,16);
++ // Look for the special 91c111 value in the bank select register
++ if((0xff00 & readw(network_controller_memory+0x0e)) == 0x3300) {
++ printk("Detected netCF-vx board: using older GPIO configuration\n");
++ net_cf_vx_mode = 1;
++ } else {
++ printk("Not netCF-vx board: using newer GPIO configuration\n");
++ net_cf_vx_mode = 0;
++ }
++ iounmap(network_controller_memory);
++}
++#endif
++
++static int __init gumstix_pcmcia_init(void)
++{
++ int ret;
++
++#ifdef CONFIG_ARCH_GUMSTIX_VERDEX
++ gumstix_check_if_netCF_vx();
++#endif
++
++ gumstix_count_cards();
++
++ udelay(50);
++ if(net_cf_vx_mode)
++ GPCR(GPIO_GUMSTIX_CF_OLD_RESET) = GPIO_bit(GPIO_GUMSTIX_CF_OLD_RESET);
++ else
++ GPCR(GPIO_GUMSTIX_CF_RESET) = GPIO_bit(GPIO_GUMSTIX_CF_RESET);
++
++ gumstix_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
++ if (!gumstix_pcmcia_device)
++ return -ENOMEM;
++
++ gumstix_pcmcia_device->dev.platform_data = &gumstix_pcmcia_ops;
++
++ ret = platform_device_add(gumstix_pcmcia_device);
++ if (ret)
++ platform_device_put(gumstix_pcmcia_device);
++
++ return ret;
++}
++
++static void __exit gumstix_pcmcia_exit(void)
++{
++ /*
++ * This call is supposed to free our gumstix_pcmcia_device.
++ * Unfortunately platform_device don't have a free method, and
++ * we can't assume it's free of any reference at this point so we
++ * can't free it either.
++ */
++ platform_device_unregister(gumstix_pcmcia_device);
++}
++
++fs_initcall(gumstix_pcmcia_init);
++module_exit(gumstix_pcmcia_exit);
++
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/gumstix-kernel-2.6.21/compile-fix-pxa_cpufreq.patch b/packages/linux/gumstix-kernel-2.6.21/compile-fix-pxa_cpufreq.patch
new file mode 100644
index 0000000000..a8fc94bc9c
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/compile-fix-pxa_cpufreq.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/cpu-pxa.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+@@ -42,7 +42,7 @@
+
+ #define DEBUG 0
+
+-#ifdef DEBUG
++#if defined (DEBUG) && DEBUG > 0
+ static unsigned int freq_debug = DEBUG;
+ MODULE_PARM(freq_debug, "i");
+ MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0");
diff --git a/packages/linux/gumstix-kernel-2.6.21/cpufreq-better-freqs.patch b/packages/linux/gumstix-kernel-2.6.21/cpufreq-better-freqs.patch
new file mode 100644
index 0000000000..90bc021d85
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/cpufreq-better-freqs.patch
@@ -0,0 +1,53 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/cpu-pxa.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/cpu-pxa.c
+@@ -65,8 +65,8 @@ typedef struct
+
+ #define CCLKCFG_TURBO 0x1
+ #define CCLKCFG_FCS 0x2
+-#define PXA25x_MIN_FREQ 99500
+-#define PXA25x_MAX_FREQ 398100
++#define PXA25x_MIN_FREQ 99533
++#define PXA25x_MAX_FREQ 530842
+ #define MDREFR_DB2_MASK (MDREFR_K2DB2 | MDREFR_K1DB2)
+ #define MDREFR_DRI_MASK 0xFFF
+
+@@ -75,12 +75,14 @@ typedef struct
+ static pxa_freqs_t pxa255_run_freqs[] =
+ {
+ /* CPU MEMBUS CCCR DIV2*/
+- { 99500, 99500, 0x121, 1}, /* run= 99, turbo= 99, PXbus=50, SDRAM=50 */
+- {132700, 132700, 0x123, 1}, /* run=133, turbo=133, PXbus=66, SDRAM=66 */
+- {199100, 99500, 0x141, 0}, /* run=199, turbo=199, PXbus=99, SDRAM=99 */
+- {265400, 132700, 0x143, 1}, /* run=265, turbo=265, PXbus=133, SDRAM=66 */
+- {331800, 165900, 0x145, 1}, /* run=331, turbo=331, PXbus=166, SDRAM=83 */
+- {398100, 99500, 0x161, 0}, /* run=398, turbo=398, PXbus=196, SDRAM=99 */
++ { 99533, 99533, 0x121, 1}, /* run= 99, turbo= 99, PXbus=50, SDRAM=50 */
++ {132710, 132710, 0x123, 1}, /* run=133, turbo=133, PXbus=66, SDRAM=66 */
++ {199066, 99533, 0x141, 0}, /* run=199, turbo=199, PXbus=99, SDRAM=99 */
++ {265421, 132710, 0x143, 0}, /* run=265, turbo=265, PXbus=133, SDRAM=133 */
++ {331776, 165888, 0x145, 1}, /* run=331, turbo=331, PXbus=166, SDRAM=83 */
++ {398131, 99533, 0x161, 0}, /* run=398, turbo=398, PXbus=99, SDRAM=99 */
++ {398131, 132710, 0x1c3, 0}, /* run=265, turbo=398, PXbus=133, SDRAM=133 */
++ {530842, 132710, 0x163, 0}, /* run=531, turbo=531, PXbus=133, SDRAM=133 */
+ {0,}
+ };
+ #define NUM_RUN_FREQS (sizeof(pxa255_run_freqs)/sizeof(pxa_freqs_t))
+@@ -91,11 +93,11 @@ static struct cpufreq_frequency_table px
+ static pxa_freqs_t pxa255_turbo_freqs[] =
+ {
+ /* CPU MEMBUS CCCR DIV2*/
+- { 99500, 99500, 0x121, 1}, /* run=99, turbo= 99, PXbus=50, SDRAM=50 */
+- {199100, 99500, 0x221, 0}, /* run=99, turbo=199, PXbus=50, SDRAM=99 */
+- {298500, 99500, 0x321, 0}, /* run=99, turbo=287, PXbus=50, SDRAM=99 */
+- {298600, 99500, 0x1c1, 0}, /* run=199, turbo=287, PXbus=99, SDRAM=99 */
+- {398100, 99500, 0x241, 0}, /* run=199, turbo=398, PXbus=99, SDRAM=99 */
++ { 99533, 99533, 0x121, 1}, /* run=99, turbo= 99, PXbus=99, SDRAM=50 */
++ {149299, 99533, 0x1a1, 0}, /* run=99, turbo=149, PXbus=99, SDRAM=99 */
++ {199066, 99533, 0x221, 0}, /* run=99, turbo=199, PXbus=99, SDRAM=99 */
++ {298598, 99533, 0x321, 0}, /* run=99, turbo=299, PXbus=99, SDRAM=99 */
++ {398131, 99533, 0x241, 1}, /* run=199, turbo=398, PXbus=99, SDRAM=50 */
+ {0,}
+ };
+ #define NUM_TURBO_FREQS (sizeof(pxa255_turbo_freqs)/sizeof(pxa_freqs_t))
diff --git a/packages/linux/gumstix-kernel-2.6.21/cpufreq-fixup.patch b/packages/linux/gumstix-kernel-2.6.21/cpufreq-fixup.patch
new file mode 100644
index 0000000000..8a64098167
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/cpufreq-fixup.patch
@@ -0,0 +1,26 @@
+Index: linux-2.6.21gum/drivers/cpufreq/cpufreq_ondemand.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/cpufreq/cpufreq_ondemand.c
++++ linux-2.6.21gum/drivers/cpufreq/cpufreq_ondemand.c
+@@ -573,7 +573,7 @@ static int cpufreq_governor_dbs(struct c
+ return 0;
+ }
+
+-static struct cpufreq_governor cpufreq_gov_dbs = {
++struct cpufreq_governor cpufreq_gov_dbs = {
+ .name = "ondemand",
+ .governor = cpufreq_governor_dbs,
+ .owner = THIS_MODULE,
+Index: linux-2.6.21gum/drivers/cpufreq/cpufreq_conservative.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/cpufreq/cpufreq_conservative.c
++++ linux-2.6.21gum/drivers/cpufreq/cpufreq_conservative.c
+@@ -551,7 +551,7 @@ static int cpufreq_governor_dbs(struct c
+ return 0;
+ }
+
+-static struct cpufreq_governor cpufreq_gov_dbs = {
++struct cpufreq_governor cpufreq_gov_dbs = {
+ .name = "conservative",
+ .governor = cpufreq_governor_dbs,
+ .owner = THIS_MODULE,
diff --git a/packages/linux/gumstix-kernel-2.6.21/cpufreq-ondemand-by-default.patch b/packages/linux/gumstix-kernel-2.6.21/cpufreq-ondemand-by-default.patch
new file mode 100644
index 0000000000..bb5443cdef
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/cpufreq-ondemand-by-default.patch
@@ -0,0 +1,42 @@
+Index: linux-2.6.21gum/drivers/cpufreq/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/cpufreq/Kconfig
++++ linux-2.6.21gum/drivers/cpufreq/Kconfig
+@@ -52,7 +52,7 @@ config CPU_FREQ_STAT_DETAILS
+
+ choice
+ prompt "Default CPUFreq governor"
+- default CPU_FREQ_DEFAULT_GOV_USERSPACE if CPU_FREQ_SA1100 || CPU_FREQ_SA1110
++ default CPU_FREQ_DEFAULT_GOV_USERSPACE if CPU_FREQ_SA1100 || CPU_FREQ_SA1110 || CPU_FREQ_PXA
+ default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
+ help
+ This option sets which CPUFreq governor shall be loaded at
+@@ -75,6 +75,14 @@ config CPU_FREQ_DEFAULT_GOV_USERSPACE
+ program shall be able to set the CPU dynamically without having
+ to enable the userspace governor manually.
+
++config CPU_FREQ_DEFAULT_GOV_ONDEMAND
++ bool "ondemand"
++ select CPU_FREQ_GOV_ONDEMAND
++ help
++ Use the CPUFreq governor 'ondemand' as default. This sets
++ the frequency dynamically based on CPU load, throttling up
++ and down as necessary.
++
+ endchoice
+
+ config CPU_FREQ_GOV_PERFORMANCE
+Index: linux-2.6.21gum/include/linux/cpufreq.h
+===================================================================
+--- linux-2.6.21gum.orig/include/linux/cpufreq.h
++++ linux-2.6.21gum/include/linux/cpufreq.h
+@@ -286,6 +286,9 @@ extern struct cpufreq_governor cpufreq_g
+ #elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE)
+ extern struct cpufreq_governor cpufreq_gov_userspace;
+ #define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_userspace
++#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
++extern struct cpufreq_governor cpufreq_gov_dbs;
++#define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_dbs;
+ #endif
+
+
diff --git a/packages/linux/gumstix-kernel-2.6.21/disable-uncompress-message.patch b/packages/linux/gumstix-kernel-2.6.21/disable-uncompress-message.patch
new file mode 100644
index 0000000000..4d3d8cec3c
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/disable-uncompress-message.patch
@@ -0,0 +1,32 @@
+Index: linux-2.6.21gum/arch/arm/boot/compressed/misc.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/boot/compressed/misc.c
++++ linux-2.6.21gum/arch/arm/boot/compressed/misc.c
+@@ -322,7 +322,6 @@ void flush_window(void)
+ bytes_out += (ulg)outcnt;
+ output_ptr += (ulg)outcnt;
+ outcnt = 0;
+- putstr(".");
+ }
+
+ #ifndef arch_error
+@@ -354,9 +353,7 @@ decompress_kernel(ulg output_start, ulg
+ arch_decomp_setup();
+
+ makecrc();
+- putstr("Uncompressing Linux...");
+ gunzip();
+- putstr(" done, booting the kernel.\n");
+ return output_ptr;
+ }
+ #else
+@@ -368,9 +365,7 @@ int main()
+ output_data = output_buffer;
+
+ makecrc();
+- putstr("Uncompressing Linux...");
+ gunzip();
+- putstr("done.\n");
+ return 0;
+ }
+ #endif
diff --git a/packages/linux/gumstix-kernel-2.6.21/ethernet-config.patch b/packages/linux/gumstix-kernel-2.6.21/ethernet-config.patch
new file mode 100644
index 0000000000..baf4871504
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/ethernet-config.patch
@@ -0,0 +1,26 @@
+Index: linux-2.6.21gum/drivers/net/smc91x.h
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/smc91x.h
++++ linux-2.6.21gum/drivers/net/smc91x.h
+@@ -55,6 +55,21 @@
+ #define SMC_insw(a, r, p, l) readsw((a) + (r), p, l)
+ #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l)
+
++#elif defined(CONFIG_ARCH_GUMSTIX)
++#define SMC_CAN_USE_8BIT 0
++#define SMC_CAN_USE_16BIT 1
++#define SMC_CAN_USE_32BIT 0
++#define SMC_NOWAIT 1
++#define SMC_USE_PXA_DMA 1
++#define SMC_IO_SHIFT 0
++#define SMC_inw(a, r) readw((a) + (r))
++#define SMC_outw(v, a, r) writew(v, (a) + (r))
++#define SMC_insw(a, r, p, l) readsw((a) + (r), p, l)
++#define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l)
++#define RPC_LSA_DEFAULT RPC_LED_100_10
++#define RPC_LSB_DEFAULT RPC_LED_TX_RX
++
++
+ #elif defined(CONFIG_REDWOOD_5) || defined(CONFIG_REDWOOD_6)
+
+ /* We can only do 16-bit reads and writes in the static memory space. */
diff --git a/packages/linux/gumstix-kernel-2.6.21/flash.patch b/packages/linux/gumstix-kernel-2.6.21/flash.patch
new file mode 100644
index 0000000000..a50a382f7a
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/flash.patch
@@ -0,0 +1,171 @@
+Index: linux-2.6.21gum/drivers/mtd/maps/gumstix-flash.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/mtd/maps/gumstix-flash.c
+@@ -0,0 +1,136 @@
++/*
++ * Map driver for the Gumstix platform
++ *
++ * Author: Craig Hughes
++ *
++ * 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/types.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/mtd/partitions.h>
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/arch/gumstix.h>
++
++
++#define ROM_ADDR 0x00000000
++#define FLASH_ADDR 0x00000000
++
++#define WINDOW_SIZE 64*1024*1024
++
++static struct map_info gumstix_flash_maps[1] = { {
++ .name = "Gumstix Flash ROM",
++ .size = WINDOW_SIZE,
++ .phys = FLASH_ADDR,
++ .bankwidth = 2,
++} };
++
++static struct mtd_partition gumstix_flash_partitions[] = {
++ {
++ .name = "Bootloader",
++ .size = 0x00040000,
++ .offset = FLASH_ADDR
++ },{
++ .name = "RootFS",
++ .size = MTDPART_SIZ_FULL,
++ .offset = MTDPART_OFS_APPEND
++ }
++};
++
++static struct mtd_info *mymtds[1];
++static struct mtd_partition *parsed_parts[1];
++static int nr_parsed_parts[1];
++
++static const char *probes[] = { NULL };
++
++static int __init gumstix_flashmap_init(void)
++{
++ int ret = 0, i;
++
++ for (i = 0; i < 1; i++) {
++ gumstix_flash_maps[i].virt = ioremap(gumstix_flash_maps[i].phys, WINDOW_SIZE);
++ if (!gumstix_flash_maps[i].virt) {
++ printk(KERN_WARNING "Failed to ioremap %s\n", gumstix_flash_maps[i].name);
++ if (!ret)
++ ret = -ENOMEM;
++ continue;
++ }
++ simple_map_init(&gumstix_flash_maps[i]);
++
++ printk(KERN_NOTICE "Probing %s at physical address 0x%08lx (%d-bit bankwidth)\n",
++ gumstix_flash_maps[i].name, gumstix_flash_maps[i].phys,
++ gumstix_flash_maps[i].bankwidth * 8);
++
++ mymtds[i] = do_map_probe("cfi_probe", &gumstix_flash_maps[i]);
++
++ if (!mymtds[i]) {
++ iounmap((void *)gumstix_flash_maps[i].virt);
++ if (gumstix_flash_maps[i].cached)
++ iounmap(gumstix_flash_maps[i].cached);
++ if (!ret)
++ ret = -EIO;
++ continue;
++ }
++ mymtds[i]->owner = THIS_MODULE;
++
++ ret = parse_mtd_partitions(mymtds[i], probes,
++ &parsed_parts[i], 0);
++
++ if (ret > 0)
++ nr_parsed_parts[i] = ret;
++ }
++
++ if (!mymtds[0])
++ return ret;
++
++ for (i = 0; i < 1; i++) {
++ if (!mymtds[i]) {
++ printk(KERN_WARNING "%s is absent. Skipping\n", gumstix_flash_maps[i].name);
++ } else if (nr_parsed_parts[i]) {
++ add_mtd_partitions(mymtds[i], parsed_parts[i], nr_parsed_parts[i]);
++ } else if (!i) {
++ printk("Using static partitions on %s\n", gumstix_flash_maps[i].name);
++ add_mtd_partitions(mymtds[i], gumstix_flash_partitions, ARRAY_SIZE(gumstix_flash_partitions));
++ } else {
++ printk("Registering %s as whole device\n", gumstix_flash_maps[i].name);
++ add_mtd_device(mymtds[i]);
++ }
++ }
++ return 0;
++}
++
++static void __exit gumstix_flashmap_cleanup(void)
++{
++ int i;
++ for (i = 0; i < 1; i++) {
++ if (!mymtds[i])
++ continue;
++
++ if (nr_parsed_parts[i] || !i)
++ del_mtd_partitions(mymtds[i]);
++ else
++ del_mtd_device(mymtds[i]);
++
++ map_destroy(mymtds[i]);
++ iounmap((void *)gumstix_flash_maps[i].virt);
++ if (gumstix_flash_maps[i].cached)
++ iounmap(gumstix_flash_maps[i].cached);
++
++ if (parsed_parts[i])
++ kfree(parsed_parts[i]);
++ }
++}
++
++module_init(gumstix_flashmap_init);
++module_exit(gumstix_flashmap_cleanup);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Gumstix, Inc. <gumstix-users@lists.sf.net>");
++MODULE_DESCRIPTION("MTD map driver for the Gumstix Platform");
+Index: linux-2.6.21gum/drivers/mtd/maps/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/mtd/maps/Kconfig
++++ linux-2.6.21gum/drivers/mtd/maps/Kconfig
+@@ -131,6 +131,13 @@ config MTD_SBC_GXX
+ More info at
+ <http://www.arcomcontrols.com/products/icp/pc104/processors/SBC_GX1.htm>.
+
++config MTD_GUMSTIX
++ tristate "CFI Flash device mapped on Gumstix"
++ depends on ARCH_GUMSTIX && MTD_CFI_INTELEXT && MTD_PARTITIONS
++ help
++ This provides a driver for the on-board flash of the Gumstix
++ single board computers.
++
+ config MTD_LUBBOCK
+ tristate "CFI Flash device mapped on Intel Lubbock XScale eval board"
+ depends on ARCH_LUBBOCK && MTD_CFI_INTELEXT && MTD_PARTITIONS
+Index: linux-2.6.21gum/drivers/mtd/maps/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/mtd/maps/Makefile
++++ linux-2.6.21gum/drivers/mtd/maps/Makefile
+@@ -21,6 +21,7 @@ obj-$(CONFIG_MTD_ICHXROM) += ichxrom.o
+ obj-$(CONFIG_MTD_CK804XROM) += ck804xrom.o
+ obj-$(CONFIG_MTD_TSUNAMI) += tsunami_flash.o
+ obj-$(CONFIG_MTD_LUBBOCK) += lubbock-flash.o
++obj-$(CONFIG_MTD_GUMSTIX) += gumstix-flash.o
+ obj-$(CONFIG_MTD_MAINSTONE) += mainstone-flash.o
+ obj-$(CONFIG_MTD_MBX860) += mbx860.o
+ obj-$(CONFIG_MTD_CEIVA) += ceiva.o
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-asoc.patch b/packages/linux/gumstix-kernel-2.6.21/gumstix-asoc.patch
new file mode 100644
index 0000000000..48e64b5764
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-asoc.patch
@@ -0,0 +1,224 @@
+Index: linux-2.6.21gum/sound/soc/pxa/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/sound/soc/pxa/Kconfig
++++ linux-2.6.21gum/sound/soc/pxa/Kconfig
+@@ -16,6 +16,7 @@ config SND_PXA2XX_SOC_AC97
+ tristate
+ select AC97_BUS
+ select SND_SOC_AC97_BUS
++ select SND_PXA2XX_AC97
+
+ config SND_PXA2XX_SOC_I2S
+ tristate
+@@ -56,4 +57,12 @@ config SND_PXA2XX_SOC_TOSA
+ Say Y if you want to add support for SoC audio on Sharp
+ Zaurus SL-C6000x models (Tosa).
+
++config SND_PXA2XX_SOC_GUMSTIX
++ tristate "SoC AC97 Audio support for Gumstix"
++ depends on SND_PXA2XX_SOC && ARCH_GUMSTIX
++ select SND_PXA2XX_SOC_AC97
++ select SND_SOC_AC97_CODEC
++ help
++ Say Y if you want to add support for SoC audio on Gumstix
++
+ endmenu
+Index: linux-2.6.21gum/sound/soc/pxa/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/sound/soc/pxa/Makefile
++++ linux-2.6.21gum/sound/soc/pxa/Makefile
+@@ -12,9 +12,11 @@ snd-soc-corgi-objs := corgi.o
+ snd-soc-poodle-objs := poodle.o
+ snd-soc-tosa-objs := tosa.o
+ snd-soc-spitz-objs := spitz.o
++snd-soc-gumstix-objs := gumstix.o
+
+ obj-$(CONFIG_SND_PXA2XX_SOC_CORGI) += snd-soc-corgi.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_POODLE) += snd-soc-poodle.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_TOSA) += snd-soc-tosa.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_SPITZ) += snd-soc-spitz.o
++obj-$(CONFIG_SND_PXA2XX_SOC_GUMSTIX) += snd-soc-gumstix.o
+
+Index: linux-2.6.21gum/sound/soc/pxa/gumstix.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/sound/soc/pxa/gumstix.c
+@@ -0,0 +1,109 @@
++/*
++ * gumstix.c -- SoC audio for Gumstix
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Copyright 2005 Openedhand Ltd.
++ * Copyright 2007 Gumstix Inc.
++ *
++ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
++ * Richard Purdie <richard@openedhand.com>
++ * Craig Hughes <craig@gumstix.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.
++ *
++ * Revision history
++ * 26 April 2007 - Initial revision forked from tosa.c
++ *
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/device.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/mach-types.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/audio.h>
++#include <asm/arch/gumstix.h>
++
++#include "pxa2xx-pcm.h"
++#include "pxa2xx-ac97.h"
++#include "../codecs/ac97.h"
++
++static struct snd_soc_machine gumstix;
++
++static int gumstix_ac97_init(struct snd_soc_codec *codec)
++{
++ // For now, do nothing -- should move the ucb1400 patch stuff here
++ return 0;
++}
++
++/* For right now, just add UCB1400 -- once that's working, we can also add
++ * PCM channels via SPI to bluetooth module, GSM module, or whatnot */
++static struct snd_soc_dai_link gumstix_dai[] = {
++{
++ .name = "ucb1400",
++ .stream_name = "UCB1400",
++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
++ .codec_dai = &ac97_dai,
++ .init = gumstix_ac97_init,
++},
++};
++
++static struct snd_soc_machine snd_soc_machine_gumstix = {
++ .name = "Gumstix",
++ .dai_link = gumstix_dai,
++ .num_links = ARRAY_SIZE(gumstix_dai),
++};
++
++static struct snd_soc_device gumstix_snd_devdata = {
++ .machine = &snd_soc_machine_gumstix,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_ac97,
++};
++
++static struct platform_device *gumstix_snd_device;
++
++static int __init gumstix_init(void)
++{
++ int ret;
++
++ if (!machine_is_gumstix())
++ return -ENODEV;
++
++ gumstix_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!gumstix_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(gumstix_snd_device, &gumstix_snd_devdata);
++ gumstix_snd_devdata.dev = &gumstix_snd_device->dev;
++ ret = platform_device_add(gumstix_snd_device);
++
++ if (ret)
++ platform_device_put(gumstix_snd_device);
++
++ return ret;
++}
++
++static void __exit gumstix_exit(void)
++{
++ platform_device_unregister(gumstix_snd_device);
++}
++
++module_init(gumstix_init);
++module_exit(gumstix_exit);
++
++/* Module information */
++MODULE_AUTHOR("Craig Hughes <craig@gumstix.com>");
++MODULE_DESCRIPTION("ALSA SoC Gumstix");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.21gum/sound/soc/codecs/ac97.c
+===================================================================
+--- linux-2.6.21gum.orig/sound/soc/codecs/ac97.c
++++ linux-2.6.21gum/sound/soc/codecs/ac97.c
+@@ -43,7 +43,7 @@ static int ac97_prepare(struct snd_pcm_s
+ #define STD_AC97_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
+
+-static struct snd_soc_codec_dai ac97_dai = {
++struct snd_soc_codec_dai ac97_dai = {
+ .name = "AC97 HiFi",
+ .playback = {
+ .stream_name = "AC97 Playback",
+@@ -61,6 +61,8 @@ static struct snd_soc_codec_dai ac97_dai
+ .prepare = ac97_prepare,},
+ };
+
++EXPORT_SYMBOL_GPL(ac97_dai);
++
+ static unsigned int ac97_read(struct snd_soc_codec *codec,
+ unsigned int reg)
+ {
+Index: linux-2.6.21gum/sound/soc/codecs/ac97.h
+===================================================================
+--- linux-2.6.21gum.orig/sound/soc/codecs/ac97.h
++++ linux-2.6.21gum/sound/soc/codecs/ac97.h
+@@ -14,5 +14,6 @@
+ #define __LINUX_SND_SOC_AC97_H
+
+ extern struct snd_soc_codec_device soc_codec_dev_ac97;
++extern struct snd_soc_codec_dai ac97_dai;
+
+ #endif
+Index: linux-2.6.21gum/sound/soc/pxa/pxa2xx-ac97.c
+===================================================================
+--- linux-2.6.21gum.orig/sound/soc/pxa/pxa2xx-ac97.c
++++ linux-2.6.21gum/sound/soc/pxa/pxa2xx-ac97.c
+@@ -154,18 +154,26 @@ static void pxa2xx_ac97_warm_reset(struc
+
+ static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97)
+ {
+- GCR &= GCR_COLD_RST; /* clear everything but nCRST */
+- GCR &= ~GCR_COLD_RST; /* then assert nCRST */
+-
+- gsr_bits = 0;
+ #ifdef CONFIG_PXA27x
+ /* PXA27x Developers Manual section 13.5.2.2.1 */
++ GCR |= GCR_ACLINK_OFF;
++ udelay(5);
++ GCR &= GCR_COLD_RST; /* Mask all interrupts */
++ GCR &= ~GCR_COLD_RST; /* cold reset */
++ udelay(5);
+ pxa_set_cken(1 << 31, 1);
+ udelay(5);
+- pxa_set_cken(1 << 31, 0);
++ GCR |= GCR_PRIRDY_IEN|GCR_SECRDY_IEN; /* unmask the interrupts */
++ pxa_set_cken(1 << 31, 0); /* clear CKEN31 */
++ udelay(5);
+ GCR = GCR_COLD_RST;
+ udelay(50);
++ wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
+ #else
++ GCR &= GCR_COLD_RST; /* clear everything but nCRST */
++ GCR &= ~GCR_COLD_RST; /* then assert nCRST */
++
++ gsr_bits = 0;
+ GCR = GCR_COLD_RST;
+ GCR |= GCR_CDONE_IE|GCR_SDONE_IE;
+ wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
diff --git a/packages/gaim/.mtn2git_empty b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gaim/.mtn2git_empty
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/.mtn2git_empty
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig
new file mode 100644
index 0000000000..418a1b4402
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig
@@ -0,0 +1,1619 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Thu Jan 31 10:02:15 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+# CONFIG_EPOLL is not set
+# CONFIG_SHMEM is not set
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+CONFIG_ARCH_GUMSTIX=y
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_ARCH_GUMSTIX_ORIG is not set
+CONFIG_ARCH_GUMSTIX_F=y
+# CONFIG_ARCH_GUMSTIX_VERDEX is not set
+CONFIG_PXA25x=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PROC_GPIO=m
+# CONFIG_PROC_GPIO_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+# CONFIG_PCMCIA_IOCTL is not set
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ALIGNMENT_HANDLING=0x2
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE 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=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=y
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_BRIDGE_NETFILTER is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+CONFIG_NF_NAT_FTP=m
+# CONFIG_NF_NAT_IRC is not set
+CONFIG_NF_NAT_TFTP=m
+# CONFIG_NF_NAT_AMANDA is not set
+# CONFIG_NF_NAT_PPTP is not set
+# CONFIG_NF_NAT_H323 is not set
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+# CONFIG_IP6_NF_RAW is not set
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_PEDIT=m
+# CONFIG_NET_ACT_SIMP is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_GUMSTIX=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_GUMSTIX=y
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=2
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_PATA_PCMCIA=m
+# CONFIG_PATA_PLATFORM is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_SMC91X=m
+CONFIG_SMC91X_GUMSTIX=m
+# CONFIG_DM9000 is not set
+CONFIG_SMC911X=m
+CONFIG_SMC911X_GUMSTIX=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_UCB1400=m
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SA1100_WATCHDOG=m
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSC2003 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_ALPS_CDOLLAR is not set
+# CONFIG_FB_PXA_SHARP_LQ043_PSP is not set
+CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C=y
+# CONFIG_FB_PXA_NONEOFTHEABOVE is not set
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+CONFIG_FONT_7x14=y
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_AC97=m
+CONFIG_SND_PXA2XX_SOC_GUMSTIX=m
+CONFIG_SND_SOC_AC97_CODEC=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+CONFIG_USB_GADGET_GUMSTIX=m
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=m
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_PXA=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY 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_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_CRC32C is not set
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig-nofb b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig-nofb
new file mode 100644
index 0000000000..22e0ef0413
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-connex/defconfig-nofb
@@ -0,0 +1,1619 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Thu Jan 31 10:02:15 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+# CONFIG_EPOLL is not set
+# CONFIG_SHMEM is not set
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+CONFIG_ARCH_GUMSTIX=y
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_ARCH_GUMSTIX_ORIG is not set
+CONFIG_ARCH_GUMSTIX_F=y
+# CONFIG_ARCH_GUMSTIX_VERDEX is not set
+CONFIG_PXA25x=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PROC_GPIO=m
+# CONFIG_PROC_GPIO_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+# CONFIG_PCMCIA_IOCTL is not set
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ALIGNMENT_HANDLING=0x2
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE 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=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=y
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_BRIDGE_NETFILTER is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+CONFIG_NF_NAT_FTP=m
+# CONFIG_NF_NAT_IRC is not set
+CONFIG_NF_NAT_TFTP=m
+# CONFIG_NF_NAT_AMANDA is not set
+# CONFIG_NF_NAT_PPTP is not set
+# CONFIG_NF_NAT_H323 is not set
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+# CONFIG_IP6_NF_RAW is not set
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_PEDIT=m
+# CONFIG_NET_ACT_SIMP is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_GUMSTIX=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_GUMSTIX=y
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=2
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_PATA_PCMCIA=m
+# CONFIG_PATA_PLATFORM is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_SMC91X=m
+CONFIG_SMC91X_GUMSTIX=m
+# CONFIG_DM9000 is not set
+CONFIG_SMC911X=m
+CONFIG_SMC911X_GUMSTIX=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_UCB1400=m
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SA1100_WATCHDOG=m
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSC2003 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+#CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+#CONFIG_FB_CFB_FILLRECT=y
+#CONFIG_FB_CFB_COPYAREA=y
+#CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+#CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_ALPS_CDOLLAR is not set
+# CONFIG_FB_PXA_SHARP_LQ043_PSP is not set
+#CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C=y
+# CONFIG_FB_PXA_NONEOFTHEABOVE is not set
+#CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+#CONFIG_DUMMY_CONSOLE=y
+#CONFIG_FRAMEBUFFER_CONSOLE=y
+#CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+#CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+#CONFIG_FONT_7x14=y
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+#CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+#CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_AC97=m
+CONFIG_SND_PXA2XX_SOC_GUMSTIX=m
+CONFIG_SND_SOC_AC97_CODEC=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+CONFIG_USB_GADGET_GUMSTIX=m
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=m
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_PXA=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY 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_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_CRC32C is not set
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/gaim/files/.mtn2git_empty b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gaim/files/.mtn2git_empty
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/.mtn2git_empty
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig
new file mode 100644
index 0000000000..5a8728d26a
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig
@@ -0,0 +1,1791 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Thu Jan 31 08:45:53 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+# CONFIG_EPOLL is not set
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+CONFIG_ARCH_GUMSTIX=y
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_ARCH_GUMSTIX_ORIG is not set
+# CONFIG_ARCH_GUMSTIX_F is not set
+CONFIG_ARCH_GUMSTIX_VERDEX=y
+CONFIG_PXA27x=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PROC_GPIO=m
+# CONFIG_PROC_GPIO_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+# CONFIG_PCMCIA_IOCTL is not set
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ALIGNMENT_HANDLING=0x2
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE 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=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=y
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_BRIDGE_NETFILTER is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+CONFIG_NF_NAT_FTP=m
+# CONFIG_NF_NAT_IRC is not set
+CONFIG_NF_NAT_TFTP=m
+# CONFIG_NF_NAT_AMANDA is not set
+# CONFIG_NF_NAT_PPTP is not set
+# CONFIG_NF_NAT_H323 is not set
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+# CONFIG_IP6_NF_RAW is not set
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_PEDIT=m
+# CONFIG_NET_ACT_SIMP is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_GUMSTIX=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_GUMSTIX=y
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_PATA_PCMCIA=m
+# CONFIG_PATA_PLATFORM is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_SMC91X=m
+CONFIG_SMC91X_GUMSTIX=m
+# CONFIG_DM9000 is not set
+CONFIG_SMC911X=m
+CONFIG_SMC911X_GUMSTIX=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=480
+CONFIG_INPUT_TSDEV_SCREEN_Y=272
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_UCB1400=m
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_LIBPS2=m
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SA1100_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+CONFIG_SENSORS_TSC2003=m
+CONFIG_SENSORS_TSC2003_SYSFS=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_ALPS_CDOLLAR is not set
+# CONFIG_FB_PXA_SHARP_LQ043_PSP is not set
+CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C=y
+# CONFIG_FB_PXA_NONEOFTHEABOVE is not set
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+CONFIG_FONT_7x14=y
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_AC97=m
+CONFIG_SND_PXA2XX_SOC_GUMSTIX=m
+CONFIG_SND_SOC_AC97_CODEC=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+CONFIG_USB_SERIAL_CP2101=m
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_PXA=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY 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_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_CRC32C is not set
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig-nofb b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig-nofb
new file mode 100644
index 0000000000..0634a90a94
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-custom-verdex/defconfig-nofb
@@ -0,0 +1,1791 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Thu Jan 31 08:45:53 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+# CONFIG_EPOLL is not set
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+CONFIG_ARCH_GUMSTIX=y
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_ARCH_GUMSTIX_ORIG is not set
+# CONFIG_ARCH_GUMSTIX_F is not set
+CONFIG_ARCH_GUMSTIX_VERDEX=y
+CONFIG_PXA27x=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PROC_GPIO=m
+# CONFIG_PROC_GPIO_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+# CONFIG_PCMCIA_IOCTL is not set
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ALIGNMENT_HANDLING=0x2
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE 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=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=y
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_BRIDGE_NETFILTER is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_FTP=m
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+CONFIG_NF_NAT_FTP=m
+# CONFIG_NF_NAT_IRC is not set
+CONFIG_NF_NAT_TFTP=m
+# CONFIG_NF_NAT_AMANDA is not set
+# CONFIG_NF_NAT_PPTP is not set
+# CONFIG_NF_NAT_H323 is not set
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+# CONFIG_IP6_NF_RAW is not set
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_PEDIT=m
+# CONFIG_NET_ACT_SIMP is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_GUMSTIX=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_GUMSTIX=y
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_PATA_PCMCIA=m
+# CONFIG_PATA_PLATFORM is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_SMC91X=m
+CONFIG_SMC91X_GUMSTIX=m
+# CONFIG_DM9000 is not set
+CONFIG_SMC911X=m
+CONFIG_SMC911X_GUMSTIX=m
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=480
+CONFIG_INPUT_TSDEV_SCREEN_Y=272
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_UCB1400=m
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_LIBPS2=m
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SA1100_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+CONFIG_SENSORS_TSC2003=m
+CONFIG_SENSORS_TSC2003_SYSFS=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+#CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+#CONFIG_FB_CFB_FILLRECT=y
+#CONFIG_FB_CFB_COPYAREA=y
+#CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+#CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+#CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_ALPS_CDOLLAR is not set
+# CONFIG_FB_PXA_SHARP_LQ043_PSP is not set
+#CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C=y
+# CONFIG_FB_PXA_NONEOFTHEABOVE is not set
+#CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+#CONFIG_DUMMY_CONSOLE=y
+#CONFIG_FRAMEBUFFER_CONSOLE=y
+#CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+#CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+#CONFIG_FONT_7x14=y
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+#CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+#CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_AC97=m
+CONFIG_SND_PXA2XX_SOC_GUMSTIX=m
+CONFIG_SND_SOC_AC97_CODEC=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+CONFIG_USB_SERIAL_CP2101=m
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_PXA=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY 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_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_CRC32C is not set
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-fb-logo.patch b/packages/linux/gumstix-kernel-2.6.21/gumstix-fb-logo.patch
new file mode 100644
index 0000000000..436b3b2e08
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-fb-logo.patch
@@ -0,0 +1,10455 @@
+Index: linux-2.6.21gum/drivers/video/logo/logo_linux_clut224.ppm
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/logo/logo_linux_clut224.ppm
++++ linux-2.6.21gum/drivers/video/logo/logo_linux_clut224.ppm
+@@ -1,1604 +1,8848 @@
+ P3
+-# Standard 224-color Linux logo
+-80 80
++480 145
+ 255
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 6 6 6 10 10 10 10 10 10
+- 10 10 10 6 6 6 6 6 6 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 10 10 10 14 14 14
+- 22 22 22 26 26 26 30 30 30 34 34 34
+- 30 30 30 30 30 30 26 26 26 18 18 18
+- 14 14 14 10 10 10 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 14 14 14 26 26 26 42 42 42
+- 54 54 54 66 66 66 78 78 78 78 78 78
+- 78 78 78 74 74 74 66 66 66 54 54 54
+- 42 42 42 26 26 26 18 18 18 10 10 10
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 22 22 22 42 42 42 66 66 66 86 86 86
+- 66 66 66 38 38 38 38 38 38 22 22 22
+- 26 26 26 34 34 34 54 54 54 66 66 66
+- 86 86 86 70 70 70 46 46 46 26 26 26
+- 14 14 14 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 10 10 10 26 26 26
+- 50 50 50 82 82 82 58 58 58 6 6 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 6 6 6 54 54 54 86 86 86 66 66 66
+- 38 38 38 18 18 18 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 22 22 22 50 50 50
+- 78 78 78 34 34 34 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 6 6 6 70 70 70
+- 78 78 78 46 46 46 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 18 18 18 42 42 42 82 82 82
+- 26 26 26 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 14 14 14
+- 46 46 46 34 34 34 6 6 6 2 2 6
+- 42 42 42 78 78 78 42 42 42 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 0 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 10 10 10 30 30 30 66 66 66 58 58 58
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 26 26 26
+- 86 86 86 101 101 101 46 46 46 10 10 10
+- 2 2 6 58 58 58 70 70 70 34 34 34
+- 10 10 10 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 14 14 14 42 42 42 86 86 86 10 10 10
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 30 30 30
+- 94 94 94 94 94 94 58 58 58 26 26 26
+- 2 2 6 6 6 6 78 78 78 54 54 54
+- 22 22 22 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 22 22 22 62 62 62 62 62 62 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 26 26 26
+- 54 54 54 38 38 38 18 18 18 10 10 10
+- 2 2 6 2 2 6 34 34 34 82 82 82
+- 38 38 38 14 14 14 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 30 30 30 78 78 78 30 30 30 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 10 10 10
+- 10 10 10 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 78 78 78
+- 50 50 50 18 18 18 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 38 38 38 86 86 86 14 14 14 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 54 54 54
+- 66 66 66 26 26 26 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 42 42 42 82 82 82 2 2 6 2 2 6
+- 2 2 6 6 6 6 10 10 10 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 6 6 6
+- 14 14 14 10 10 10 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 18 18 18
+- 82 82 82 34 34 34 10 10 10 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 46 46 46 86 86 86 2 2 6 2 2 6
+- 6 6 6 6 6 6 22 22 22 34 34 34
+- 6 6 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 18 18 18 34 34 34
+- 10 10 10 50 50 50 22 22 22 2 2 6
+- 2 2 6 2 2 6 2 2 6 10 10 10
+- 86 86 86 42 42 42 14 14 14 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 1 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 46 46 46 86 86 86 2 2 6 2 2 6
+- 38 38 38 116 116 116 94 94 94 22 22 22
+- 22 22 22 2 2 6 2 2 6 2 2 6
+- 14 14 14 86 86 86 138 138 138 162 162 162
+-154 154 154 38 38 38 26 26 26 6 6 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 86 86 86 46 46 46 14 14 14 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 46 46 46 86 86 86 2 2 6 14 14 14
+-134 134 134 198 198 198 195 195 195 116 116 116
+- 10 10 10 2 2 6 2 2 6 6 6 6
+-101 98 89 187 187 187 210 210 210 218 218 218
+-214 214 214 134 134 134 14 14 14 6 6 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 86 86 86 50 50 50 18 18 18 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 1 0 0 0
+- 0 0 1 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 46 46 46 86 86 86 2 2 6 54 54 54
+-218 218 218 195 195 195 226 226 226 246 246 246
+- 58 58 58 2 2 6 2 2 6 30 30 30
+-210 210 210 253 253 253 174 174 174 123 123 123
+-221 221 221 234 234 234 74 74 74 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 70 70 70 58 58 58 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 46 46 46 82 82 82 2 2 6 106 106 106
+-170 170 170 26 26 26 86 86 86 226 226 226
+-123 123 123 10 10 10 14 14 14 46 46 46
+-231 231 231 190 190 190 6 6 6 70 70 70
+- 90 90 90 238 238 238 158 158 158 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 70 70 70 58 58 58 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 1 0 0 0
+- 0 0 1 0 0 1 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 42 42 42 86 86 86 6 6 6 116 116 116
+-106 106 106 6 6 6 70 70 70 149 149 149
+-128 128 128 18 18 18 38 38 38 54 54 54
+-221 221 221 106 106 106 2 2 6 14 14 14
+- 46 46 46 190 190 190 198 198 198 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 74 74 74 62 62 62 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 1 0 0 0
+- 0 0 1 0 0 0 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 42 42 42 94 94 94 14 14 14 101 101 101
+-128 128 128 2 2 6 18 18 18 116 116 116
+-118 98 46 121 92 8 121 92 8 98 78 10
+-162 162 162 106 106 106 2 2 6 2 2 6
+- 2 2 6 195 195 195 195 195 195 6 6 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 74 74 74 62 62 62 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 1 0 0 1
+- 0 0 1 0 0 0 0 0 1 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 38 38 38 90 90 90 14 14 14 58 58 58
+-210 210 210 26 26 26 54 38 6 154 114 10
+-226 170 11 236 186 11 225 175 15 184 144 12
+-215 174 15 175 146 61 37 26 9 2 2 6
+- 70 70 70 246 246 246 138 138 138 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 70 70 70 66 66 66 26 26 26 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 38 38 38 86 86 86 14 14 14 10 10 10
+-195 195 195 188 164 115 192 133 9 225 175 15
+-239 182 13 234 190 10 232 195 16 232 200 30
+-245 207 45 241 208 19 232 195 16 184 144 12
+-218 194 134 211 206 186 42 42 42 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 50 50 50 74 74 74 30 30 30 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 34 34 34 86 86 86 14 14 14 2 2 6
+-121 87 25 192 133 9 219 162 10 239 182 13
+-236 186 11 232 195 16 241 208 19 244 214 54
+-246 218 60 246 218 38 246 215 20 241 208 19
+-241 208 19 226 184 13 121 87 25 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 50 50 50 82 82 82 34 34 34 10 10 10
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 34 34 34 82 82 82 30 30 30 61 42 6
+-180 123 7 206 145 10 230 174 11 239 182 13
+-234 190 10 238 202 15 241 208 19 246 218 74
+-246 218 38 246 215 20 246 215 20 246 215 20
+-226 184 13 215 174 15 184 144 12 6 6 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 26 26 26 94 94 94 42 42 42 14 14 14
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 30 30 30 78 78 78 50 50 50 104 69 6
+-192 133 9 216 158 10 236 178 12 236 186 11
+-232 195 16 241 208 19 244 214 54 245 215 43
+-246 215 20 246 215 20 241 208 19 198 155 10
+-200 144 11 216 158 10 156 118 10 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 6 6 6 90 90 90 54 54 54 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 30 30 30 78 78 78 46 46 46 22 22 22
+-137 92 6 210 162 10 239 182 13 238 190 10
+-238 202 15 241 208 19 246 215 20 246 215 20
+-241 208 19 203 166 17 185 133 11 210 150 10
+-216 158 10 210 150 10 102 78 10 2 2 6
+- 6 6 6 54 54 54 14 14 14 2 2 6
+- 2 2 6 62 62 62 74 74 74 30 30 30
+- 10 10 10 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 34 34 34 78 78 78 50 50 50 6 6 6
+- 94 70 30 139 102 15 190 146 13 226 184 13
+-232 200 30 232 195 16 215 174 15 190 146 13
+-168 122 10 192 133 9 210 150 10 213 154 11
+-202 150 34 182 157 106 101 98 89 2 2 6
+- 2 2 6 78 78 78 116 116 116 58 58 58
+- 2 2 6 22 22 22 90 90 90 46 46 46
+- 18 18 18 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 38 38 38 86 86 86 50 50 50 6 6 6
+-128 128 128 174 154 114 156 107 11 168 122 10
+-198 155 10 184 144 12 197 138 11 200 144 11
+-206 145 10 206 145 10 197 138 11 188 164 115
+-195 195 195 198 198 198 174 174 174 14 14 14
+- 2 2 6 22 22 22 116 116 116 116 116 116
+- 22 22 22 2 2 6 74 74 74 70 70 70
+- 30 30 30 10 10 10 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 18 18 18
+- 50 50 50 101 101 101 26 26 26 10 10 10
+-138 138 138 190 190 190 174 154 114 156 107 11
+-197 138 11 200 144 11 197 138 11 192 133 9
+-180 123 7 190 142 34 190 178 144 187 187 187
+-202 202 202 221 221 221 214 214 214 66 66 66
+- 2 2 6 2 2 6 50 50 50 62 62 62
+- 6 6 6 2 2 6 10 10 10 90 90 90
+- 50 50 50 18 18 18 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 10 10 10 34 34 34
+- 74 74 74 74 74 74 2 2 6 6 6 6
+-144 144 144 198 198 198 190 190 190 178 166 146
+-154 121 60 156 107 11 156 107 11 168 124 44
+-174 154 114 187 187 187 190 190 190 210 210 210
+-246 246 246 253 253 253 253 253 253 182 182 182
+- 6 6 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 62 62 62
+- 74 74 74 34 34 34 14 14 14 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 10 10 10 22 22 22 54 54 54
+- 94 94 94 18 18 18 2 2 6 46 46 46
+-234 234 234 221 221 221 190 190 190 190 190 190
+-190 190 190 187 187 187 187 187 187 190 190 190
+-190 190 190 195 195 195 214 214 214 242 242 242
+-253 253 253 253 253 253 253 253 253 253 253 253
+- 82 82 82 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 14 14 14
+- 86 86 86 54 54 54 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 18 18 18 46 46 46 90 90 90
+- 46 46 46 18 18 18 6 6 6 182 182 182
+-253 253 253 246 246 246 206 206 206 190 190 190
+-190 190 190 190 190 190 190 190 190 190 190 190
+-206 206 206 231 231 231 250 250 250 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-202 202 202 14 14 14 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 42 42 42 86 86 86 42 42 42 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 14 14 14 38 38 38 74 74 74 66 66 66
+- 2 2 6 6 6 6 90 90 90 250 250 250
+-253 253 253 253 253 253 238 238 238 198 198 198
+-190 190 190 190 190 190 195 195 195 221 221 221
+-246 246 246 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 82 82 82 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 78 78 78 70 70 70 34 34 34
+- 14 14 14 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 34 34 34 66 66 66 78 78 78 6 6 6
+- 2 2 6 18 18 18 218 218 218 253 253 253
+-253 253 253 253 253 253 253 253 253 246 246 246
+-226 226 226 231 231 231 246 246 246 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 178 178 178 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 18 18 18 90 90 90 62 62 62
+- 30 30 30 10 10 10 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 10 10 10 26 26 26
+- 58 58 58 90 90 90 18 18 18 2 2 6
+- 2 2 6 110 110 110 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-250 250 250 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 231 231 231 18 18 18 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 18 18 18 94 94 94
+- 54 54 54 26 26 26 10 10 10 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 22 22 22 50 50 50
+- 90 90 90 26 26 26 2 2 6 2 2 6
+- 14 14 14 195 195 195 250 250 250 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-250 250 250 242 242 242 54 54 54 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 38 38 38
+- 86 86 86 50 50 50 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 14 14 14 38 38 38 82 82 82
+- 34 34 34 2 2 6 2 2 6 2 2 6
+- 42 42 42 195 195 195 246 246 246 253 253 253
+-253 253 253 253 253 253 253 253 253 250 250 250
+-242 242 242 242 242 242 250 250 250 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 250 250 250 246 246 246 238 238 238
+-226 226 226 231 231 231 101 101 101 6 6 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 38 38 38 82 82 82 42 42 42 14 14 14
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 10 10 10 26 26 26 62 62 62 66 66 66
+- 2 2 6 2 2 6 2 2 6 6 6 6
+- 70 70 70 170 170 170 206 206 206 234 234 234
+-246 246 246 250 250 250 250 250 250 238 238 238
+-226 226 226 231 231 231 238 238 238 250 250 250
+-250 250 250 250 250 250 246 246 246 231 231 231
+-214 214 214 206 206 206 202 202 202 202 202 202
+-198 198 198 202 202 202 182 182 182 18 18 18
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 62 62 62 66 66 66 30 30 30
+- 10 10 10 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 14 14 14 42 42 42 82 82 82 18 18 18
+- 2 2 6 2 2 6 2 2 6 10 10 10
+- 94 94 94 182 182 182 218 218 218 242 242 242
+-250 250 250 253 253 253 253 253 253 250 250 250
+-234 234 234 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 246 246 246
+-238 238 238 226 226 226 210 210 210 202 202 202
+-195 195 195 195 195 195 210 210 210 158 158 158
+- 6 6 6 14 14 14 50 50 50 14 14 14
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 6 6 6 86 86 86 46 46 46
+- 18 18 18 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 22 22 22 54 54 54 70 70 70 2 2 6
+- 2 2 6 10 10 10 2 2 6 22 22 22
+-166 166 166 231 231 231 250 250 250 253 253 253
+-253 253 253 253 253 253 253 253 253 250 250 250
+-242 242 242 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 246 246 246
+-231 231 231 206 206 206 198 198 198 226 226 226
+- 94 94 94 2 2 6 6 6 6 38 38 38
+- 30 30 30 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 62 62 62 66 66 66
+- 26 26 26 10 10 10 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 30 30 30 74 74 74 50 50 50 2 2 6
+- 26 26 26 26 26 26 2 2 6 106 106 106
+-238 238 238 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 246 246 246 218 218 218 202 202 202
+-210 210 210 14 14 14 2 2 6 2 2 6
+- 30 30 30 22 22 22 2 2 6 2 2 6
+- 2 2 6 2 2 6 18 18 18 86 86 86
+- 42 42 42 14 14 14 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 42 42 42 90 90 90 22 22 22 2 2 6
+- 42 42 42 2 2 6 18 18 18 218 218 218
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 250 250 250 221 221 221
+-218 218 218 101 101 101 2 2 6 14 14 14
+- 18 18 18 38 38 38 10 10 10 2 2 6
+- 2 2 6 2 2 6 2 2 6 78 78 78
+- 58 58 58 22 22 22 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 18 18 18
+- 54 54 54 82 82 82 2 2 6 26 26 26
+- 22 22 22 2 2 6 123 123 123 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 250 250 250
+-238 238 238 198 198 198 6 6 6 38 38 38
+- 58 58 58 26 26 26 38 38 38 2 2 6
+- 2 2 6 2 2 6 2 2 6 46 46 46
+- 78 78 78 30 30 30 10 10 10 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 10 10 10 30 30 30
+- 74 74 74 58 58 58 2 2 6 42 42 42
+- 2 2 6 22 22 22 231 231 231 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 250 250 250
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 246 246 246 46 46 46 38 38 38
+- 42 42 42 14 14 14 38 38 38 14 14 14
+- 2 2 6 2 2 6 2 2 6 6 6 6
+- 86 86 86 46 46 46 14 14 14 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 14 14 14 42 42 42
+- 90 90 90 18 18 18 18 18 18 26 26 26
+- 2 2 6 116 116 116 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 250 250 250 238 238 238
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 94 94 94 6 6 6
+- 2 2 6 2 2 6 10 10 10 34 34 34
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 74 74 74 58 58 58 22 22 22 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 10 10 10 26 26 26 66 66 66
+- 82 82 82 2 2 6 38 38 38 6 6 6
+- 14 14 14 210 210 210 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 246 246 246 242 242 242
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 144 144 144 2 2 6
+- 2 2 6 2 2 6 2 2 6 46 46 46
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 42 42 42 74 74 74 30 30 30 10 10 10
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 14 14 14 42 42 42 90 90 90
+- 26 26 26 6 6 6 42 42 42 2 2 6
+- 74 74 74 250 250 250 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 242 242 242 242 242 242
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 182 182 182 2 2 6
+- 2 2 6 2 2 6 2 2 6 46 46 46
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 10 10 10 86 86 86 38 38 38 10 10 10
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 10 10 10 26 26 26 66 66 66 82 82 82
+- 2 2 6 22 22 22 18 18 18 2 2 6
+-149 149 149 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 234 234 234 242 242 242
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 206 206 206 2 2 6
+- 2 2 6 2 2 6 2 2 6 38 38 38
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 6 6 6 86 86 86 46 46 46 14 14 14
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 18 18 18 46 46 46 86 86 86 18 18 18
+- 2 2 6 34 34 34 10 10 10 6 6 6
+-210 210 210 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 234 234 234 242 242 242
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 221 221 221 6 6 6
+- 2 2 6 2 2 6 6 6 6 30 30 30
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 82 82 82 54 54 54 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 26 26 26 66 66 66 62 62 62 2 2 6
+- 2 2 6 38 38 38 10 10 10 26 26 26
+-238 238 238 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 238 238 238
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 6 6 6
+- 2 2 6 2 2 6 10 10 10 30 30 30
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 66 66 66 58 58 58 22 22 22
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 38 38 38 78 78 78 6 6 6 2 2 6
+- 2 2 6 46 46 46 14 14 14 42 42 42
+-246 246 246 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 242 242 242
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 234 234 234 10 10 10
+- 2 2 6 2 2 6 22 22 22 14 14 14
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 66 66 66 62 62 62 22 22 22
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 18 18 18
+- 50 50 50 74 74 74 2 2 6 2 2 6
+- 14 14 14 70 70 70 34 34 34 62 62 62
+-250 250 250 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 246 246 246
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 234 234 234 14 14 14
+- 2 2 6 2 2 6 30 30 30 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 66 66 66 62 62 62 22 22 22
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 18 18 18
+- 54 54 54 62 62 62 2 2 6 2 2 6
+- 2 2 6 30 30 30 46 46 46 70 70 70
+-250 250 250 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 246 246 246
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 226 226 226 10 10 10
+- 2 2 6 6 6 6 30 30 30 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 66 66 66 58 58 58 22 22 22
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 22 22 22
+- 58 58 58 62 62 62 2 2 6 2 2 6
+- 2 2 6 2 2 6 30 30 30 78 78 78
+-250 250 250 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 246 246 246
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 206 206 206 2 2 6
+- 22 22 22 34 34 34 18 14 6 22 22 22
+- 26 26 26 18 18 18 6 6 6 2 2 6
+- 2 2 6 82 82 82 54 54 54 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 26 26 26
+- 62 62 62 106 106 106 74 54 14 185 133 11
+-210 162 10 121 92 8 6 6 6 62 62 62
+-238 238 238 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 246 246 246
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 158 158 158 18 18 18
+- 14 14 14 2 2 6 2 2 6 2 2 6
+- 6 6 6 18 18 18 66 66 66 38 38 38
+- 6 6 6 94 94 94 50 50 50 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 10 10 10 10 10 10 18 18 18 38 38 38
+- 78 78 78 142 134 106 216 158 10 242 186 14
+-246 190 14 246 190 14 156 118 10 10 10 10
+- 90 90 90 238 238 238 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 250 250 250
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 246 230 190
+-238 204 91 238 204 91 181 142 44 37 26 9
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 38 38 38 46 46 46
+- 26 26 26 106 106 106 54 54 54 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 14 14 14 22 22 22
+- 30 30 30 38 38 38 50 50 50 70 70 70
+-106 106 106 190 142 34 226 170 11 242 186 14
+-246 190 14 246 190 14 246 190 14 154 114 10
+- 6 6 6 74 74 74 226 226 226 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 231 231 231 250 250 250
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 228 184 62
+-241 196 14 241 208 19 232 195 16 38 30 10
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 6 6 6 30 30 30 26 26 26
+-203 166 17 154 142 90 66 66 66 26 26 26
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 18 18 18 38 38 38 58 58 58
+- 78 78 78 86 86 86 101 101 101 123 123 123
+-175 146 61 210 150 10 234 174 13 246 186 14
+-246 190 14 246 190 14 246 190 14 238 190 10
+-102 78 10 2 2 6 46 46 46 198 198 198
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 234 234 234 242 242 242
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 224 178 62
+-242 186 14 241 196 14 210 166 10 22 18 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 6 6 6 121 92 8
+-238 202 15 232 195 16 82 82 82 34 34 34
+- 10 10 10 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 14 14 14 38 38 38 70 70 70 154 122 46
+-190 142 34 200 144 11 197 138 11 197 138 11
+-213 154 11 226 170 11 242 186 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-225 175 15 46 32 6 2 2 6 22 22 22
+-158 158 158 250 250 250 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 250 250 250 242 242 242 224 178 62
+-239 182 13 236 186 11 213 154 11 46 32 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 61 42 6 225 175 15
+-238 190 10 236 186 11 112 100 78 42 42 42
+- 14 14 14 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 22 22 22 54 54 54 154 122 46 213 154 11
+-226 170 11 230 174 11 226 170 11 226 170 11
+-236 178 12 242 186 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-241 196 14 184 144 12 10 10 10 2 2 6
+- 6 6 6 116 116 116 242 242 242 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 231 231 231 198 198 198 214 170 54
+-236 178 12 236 178 12 210 150 10 137 92 6
+- 18 14 6 2 2 6 2 2 6 2 2 6
+- 6 6 6 70 47 6 200 144 11 236 178 12
+-239 182 13 239 182 13 124 112 88 58 58 58
+- 22 22 22 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 30 30 30 70 70 70 180 133 36 226 170 11
+-239 182 13 242 186 14 242 186 14 246 186 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 232 195 16 98 70 6 2 2 6
+- 2 2 6 2 2 6 66 66 66 221 221 221
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 206 206 206 198 198 198 214 166 58
+-230 174 11 230 174 11 216 158 10 192 133 9
+-163 110 8 116 81 8 102 78 10 116 81 8
+-167 114 7 197 138 11 226 170 11 239 182 13
+-242 186 14 242 186 14 162 146 94 78 78 78
+- 34 34 34 14 14 14 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 30 30 30 78 78 78 190 142 34 226 170 11
+-239 182 13 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 241 196 14 203 166 17 22 18 6
+- 2 2 6 2 2 6 2 2 6 38 38 38
+-218 218 218 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-250 250 250 206 206 206 198 198 198 202 162 69
+-226 170 11 236 178 12 224 166 10 210 150 10
+-200 144 11 197 138 11 192 133 9 197 138 11
+-210 150 10 226 170 11 242 186 14 246 190 14
+-246 190 14 246 186 14 225 175 15 124 112 88
+- 62 62 62 30 30 30 14 14 14 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 30 30 30 78 78 78 174 135 50 224 166 10
+-239 182 13 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 241 196 14 139 102 15
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 78 78 78 250 250 250 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-250 250 250 214 214 214 198 198 198 190 150 46
+-219 162 10 236 178 12 234 174 13 224 166 10
+-216 158 10 213 154 11 213 154 11 216 158 10
+-226 170 11 239 182 13 246 190 14 246 190 14
+-246 190 14 246 190 14 242 186 14 206 162 42
+-101 101 101 58 58 58 30 30 30 14 14 14
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 30 30 30 74 74 74 174 135 50 216 158 10
+-236 178 12 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 241 196 14 226 184 13
+- 61 42 6 2 2 6 2 2 6 2 2 6
+- 22 22 22 238 238 238 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 226 226 226 187 187 187 180 133 36
+-216 158 10 236 178 12 239 182 13 236 178 12
+-230 174 11 226 170 11 226 170 11 230 174 11
+-236 178 12 242 186 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 186 14 239 182 13
+-206 162 42 106 106 106 66 66 66 34 34 34
+- 14 14 14 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 26 26 26 70 70 70 163 133 67 213 154 11
+-236 178 12 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 241 196 14
+-190 146 13 18 14 6 2 2 6 2 2 6
+- 46 46 46 246 246 246 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 221 221 221 86 86 86 156 107 11
+-216 158 10 236 178 12 242 186 14 246 186 14
+-242 186 14 239 182 13 239 182 13 242 186 14
+-242 186 14 246 186 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-242 186 14 225 175 15 142 122 72 66 66 66
+- 30 30 30 10 10 10 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 26 26 26 70 70 70 163 133 67 210 150 10
+-236 178 12 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-232 195 16 121 92 8 34 34 34 106 106 106
+-221 221 221 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-242 242 242 82 82 82 18 14 6 163 110 8
+-216 158 10 236 178 12 242 186 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 242 186 14 163 133 67
+- 46 46 46 18 18 18 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 10 10 10
+- 30 30 30 78 78 78 163 133 67 210 150 10
+-236 178 12 246 186 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-241 196 14 215 174 15 190 178 144 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 218 218 218
+- 58 58 58 2 2 6 22 18 6 167 114 7
+-216 158 10 236 178 12 246 186 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 186 14 242 186 14 190 150 46
+- 54 54 54 22 22 22 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 38 38 38 86 86 86 180 133 36 213 154 11
+-236 178 12 246 186 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 232 195 16 190 146 13 214 214 214
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 250 250 250 170 170 170 26 26 26
+- 2 2 6 2 2 6 37 26 9 163 110 8
+-219 162 10 239 182 13 246 186 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 186 14 236 178 12 224 166 10 142 122 72
+- 46 46 46 18 18 18 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 18 18 18
+- 50 50 50 109 106 95 192 133 9 224 166 10
+-242 186 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-242 186 14 226 184 13 210 162 10 142 110 46
+-226 226 226 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-253 253 253 253 253 253 253 253 253 253 253 253
+-198 198 198 66 66 66 2 2 6 2 2 6
+- 2 2 6 2 2 6 50 34 6 156 107 11
+-219 162 10 239 182 13 246 186 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 242 186 14
+-234 174 13 213 154 11 154 122 46 66 66 66
+- 30 30 30 10 10 10 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 22 22 22
+- 58 58 58 154 121 60 206 145 10 234 174 13
+-242 186 14 246 186 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 186 14 236 178 12 210 162 10 163 110 8
+- 61 42 6 138 138 138 218 218 218 250 250 250
+-253 253 253 253 253 253 253 253 253 250 250 250
+-242 242 242 210 210 210 144 144 144 66 66 66
+- 6 6 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 61 42 6 163 110 8
+-216 158 10 236 178 12 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 239 182 13 230 174 11 216 158 10
+-190 142 34 124 112 88 70 70 70 38 38 38
+- 18 18 18 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 22 22 22
+- 62 62 62 168 124 44 206 145 10 224 166 10
+-236 178 12 239 182 13 242 186 14 242 186 14
+-246 186 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 236 178 12 216 158 10 175 118 6
+- 80 54 7 2 2 6 6 6 6 30 30 30
+- 54 54 54 62 62 62 50 50 50 38 38 38
+- 14 14 14 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 6 6 6 80 54 7 167 114 7
+-213 154 11 236 178 12 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 190 14 242 186 14 239 182 13 239 182 13
+-230 174 11 210 150 10 174 135 50 124 112 88
+- 82 82 82 54 54 54 34 34 34 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 18 18 18
+- 50 50 50 158 118 36 192 133 9 200 144 11
+-216 158 10 219 162 10 224 166 10 226 170 11
+-230 174 11 236 178 12 239 182 13 239 182 13
+-242 186 14 246 186 14 246 190 14 246 190 14
+-246 190 14 246 190 14 246 190 14 246 190 14
+-246 186 14 230 174 11 210 150 10 163 110 8
+-104 69 6 10 10 10 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 6 6 6 91 60 6 167 114 7
+-206 145 10 230 174 11 242 186 14 246 190 14
+-246 190 14 246 190 14 246 186 14 242 186 14
+-239 182 13 230 174 11 224 166 10 213 154 11
+-180 133 36 124 112 88 86 86 86 58 58 58
+- 38 38 38 22 22 22 10 10 10 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 14 14 14
+- 34 34 34 70 70 70 138 110 50 158 118 36
+-167 114 7 180 123 7 192 133 9 197 138 11
+-200 144 11 206 145 10 213 154 11 219 162 10
+-224 166 10 230 174 11 239 182 13 242 186 14
+-246 186 14 246 186 14 246 186 14 246 186 14
+-239 182 13 216 158 10 185 133 11 152 99 6
+-104 69 6 18 14 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 2 2 6 2 2 6 2 2 6
+- 2 2 6 6 6 6 80 54 7 152 99 6
+-192 133 9 219 162 10 236 178 12 239 182 13
+-246 186 14 242 186 14 239 182 13 236 178 12
+-224 166 10 206 145 10 192 133 9 154 121 60
+- 94 94 94 62 62 62 42 42 42 22 22 22
+- 14 14 14 6 6 6 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 18 18 18 34 34 34 58 58 58 78 78 78
+-101 98 89 124 112 88 142 110 46 156 107 11
+-163 110 8 167 114 7 175 118 6 180 123 7
+-185 133 11 197 138 11 210 150 10 219 162 10
+-226 170 11 236 178 12 236 178 12 234 174 13
+-219 162 10 197 138 11 163 110 8 130 83 6
+- 91 60 6 10 10 10 2 2 6 2 2 6
+- 18 18 18 38 38 38 38 38 38 38 38 38
+- 38 38 38 38 38 38 38 38 38 38 38 38
+- 38 38 38 38 38 38 26 26 26 2 2 6
+- 2 2 6 6 6 6 70 47 6 137 92 6
+-175 118 6 200 144 11 219 162 10 230 174 11
+-234 174 13 230 174 11 219 162 10 210 150 10
+-192 133 9 163 110 8 124 112 88 82 82 82
+- 50 50 50 30 30 30 14 14 14 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 14 14 14 22 22 22 34 34 34
+- 42 42 42 58 58 58 74 74 74 86 86 86
+-101 98 89 122 102 70 130 98 46 121 87 25
+-137 92 6 152 99 6 163 110 8 180 123 7
+-185 133 11 197 138 11 206 145 10 200 144 11
+-180 123 7 156 107 11 130 83 6 104 69 6
+- 50 34 6 54 54 54 110 110 110 101 98 89
+- 86 86 86 82 82 82 78 78 78 78 78 78
+- 78 78 78 78 78 78 78 78 78 78 78 78
+- 78 78 78 82 82 82 86 86 86 94 94 94
+-106 106 106 101 101 101 86 66 34 124 80 6
+-156 107 11 180 123 7 192 133 9 200 144 11
+-206 145 10 200 144 11 192 133 9 175 118 6
+-139 102 15 109 106 95 70 70 70 42 42 42
+- 22 22 22 10 10 10 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 6 6 6 10 10 10
+- 14 14 14 22 22 22 30 30 30 38 38 38
+- 50 50 50 62 62 62 74 74 74 90 90 90
+-101 98 89 112 100 78 121 87 25 124 80 6
+-137 92 6 152 99 6 152 99 6 152 99 6
+-138 86 6 124 80 6 98 70 6 86 66 30
+-101 98 89 82 82 82 58 58 58 46 46 46
+- 38 38 38 34 34 34 34 34 34 34 34 34
+- 34 34 34 34 34 34 34 34 34 34 34 34
+- 34 34 34 34 34 34 38 38 38 42 42 42
+- 54 54 54 82 82 82 94 86 76 91 60 6
+-134 86 6 156 107 11 167 114 7 175 118 6
+-175 118 6 167 114 7 152 99 6 121 87 25
+-101 98 89 62 62 62 34 34 34 18 18 18
+- 6 6 6 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 6 6 6 10 10 10
+- 18 18 18 22 22 22 30 30 30 42 42 42
+- 50 50 50 66 66 66 86 86 86 101 98 89
+-106 86 58 98 70 6 104 69 6 104 69 6
+-104 69 6 91 60 6 82 62 34 90 90 90
+- 62 62 62 38 38 38 22 22 22 14 14 14
+- 10 10 10 10 10 10 10 10 10 10 10 10
+- 10 10 10 10 10 10 6 6 6 10 10 10
+- 10 10 10 10 10 10 10 10 10 14 14 14
+- 22 22 22 42 42 42 70 70 70 89 81 66
+- 80 54 7 104 69 6 124 80 6 137 92 6
+-134 86 6 116 81 8 100 82 52 86 86 86
+- 58 58 58 30 30 30 14 14 14 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 10 10 10 14 14 14
+- 18 18 18 26 26 26 38 38 38 54 54 54
+- 70 70 70 86 86 86 94 86 76 89 81 66
+- 89 81 66 86 86 86 74 74 74 50 50 50
+- 30 30 30 14 14 14 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 18 18 18 34 34 34 58 58 58
+- 82 82 82 89 81 66 89 81 66 89 81 66
+- 94 86 66 94 86 76 74 74 74 50 50 50
+- 26 26 26 14 14 14 6 6 6 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 6 6 6 6 6 6 14 14 14 18 18 18
+- 30 30 30 38 38 38 46 46 46 54 54 54
+- 50 50 50 42 42 42 30 30 30 18 18 18
+- 10 10 10 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 6 6 6 14 14 14 26 26 26
+- 38 38 38 50 50 50 58 58 58 58 58 58
+- 54 54 54 42 42 42 30 30 30 18 18 18
+- 10 10 10 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 6 6 6 10 10 10 14 14 14 18 18 18
+- 18 18 18 14 14 14 10 10 10 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 6 6 6
+- 14 14 14 18 18 18 22 22 22 22 22 22
+- 18 18 18 14 14 14 10 10 10 6 6 6
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
+- 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++8 8 8 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 17 17 17 44 44 44
++17 17 17 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 27 27 27 45 45 45
++28 28 28 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 16 16 16 49 49 49
++38 38 38 3 3 3 0 0 0 6 6 6 3 3 3 0 0 0 16 16 16 49 49 49
++50 50 50 13 13 13 0 0 0 4 4 4 3 3 3 0 0 0 14 14 14 44 44 44
++56 56 56 21 21 21 0 0 0 0 0 0 8 8 8 0 0 0 8 8 8 45 45 45
++57 57 57 29 29 29 0 0 0 0 0 0 6 6 6 0 0 0 11 11 11 46 46 46
++59 59 59 29 29 29 0 0 0 0 0 0 4 4 4 0 0 0 8 8 8 42 42 42
++59 59 59 37 37 37 8 8 8 0 0 0 3 3 3 0 0 0 0 0 0 28 28 28
++63 63 63 36 36 36 10 10 10 3 3 3 0 0 0 3 3 3 8 8 8 10 10 10
++56 56 56 43 43 43 20 20 20 8 8 8 11 11 11 10 10 10 4 4 4 10 10 10
++52 52 52 38 38 38 13 13 13 0 0 0 10 10 10 10 10 10 3 3 3 8 8 8
++43 43 43 40 40 40 19 19 19 13 13 13 32 32 32 25 25 25 4 4 4 11 11 11
++29 29 29 43 43 43 25 25 25 0 0 0 11 11 11 13 13 13 3 3 3 13 13 13
++14 14 14 11 11 11 8 8 8 8 8 8 10 10 10 11 11 11 11 11 11 13 13 13
++13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 16 16 16 16 16 16 17 17 17
++17 17 17 16 16 16 19 19 19 23 23 23 19 19 19 11 11 11 14 14 14 23 23 23
++14 14 14 32 32 32 38 38 38 37 37 37 40 40 40 43 43 43 43 43 43 46 46 46
++45 45 45 40 40 40 44 44 44 49 49 49 42 42 42 27 27 27 21 21 21 28 28 28
++25 25 25 28 28 28 25 25 25 45 45 45 70 70 70 58 58 58 31 31 31 29 29 29
++29 29 29 34 34 34 70 70 70 51 51 51 42 42 42 56 56 56 29 29 29 42 42 42
++70 70 70 36 36 36 28 28 28 28 28 28 27 27 27 62 62 62 76 76 76 39 39 39
++32 32 32 25 25 25 33 33 33 49 49 49 68 68 68 52 52 52 49 49 49 50 50 50
++49 49 49 52 52 52 49 49 49 43 43 43 28 28 28 33 33 33 62 62 62 73 73 73
++76 76 76 63 63 63 33 33 33 28 28 28 65 65 65 71 71 71 66 66 66 34 34 34
++32 32 32 54 54 54 65 65 65 54 54 54 37 37 37 27 27 27 40 40 40 65 65 65
++39 39 39 44 44 44 54 54 54 70 70 70 73 73 73 53 53 53 42 42 42 53 53 53
++59 59 59 58 58 58 36 36 36 29 29 29 27 27 27 42 42 42 49 49 49 68 68 68
++43 43 43 20 20 20 42 42 42 54 54 54 42 42 42 33 33 33 27 27 27 31 31 31
++32 32 32 34 34 34 48 48 48 52 52 52 38 38 38 25 25 25 27 27 27 31 31 31
++28 28 28 28 28 28 27 27 27 27 27 27 27 27 27 27 27 27 25 25 25 24 24 24
++42 42 42 39 39 39 27 27 27 25 25 25 19 19 19 27 27 27 17 17 17 27 27 27
++19 19 19 23 23 23 20 20 20 27 27 27 23 23 23 28 28 28 48 48 48 39 39 39
++27 27 27 24 24 24 21 21 21 20 20 20 21 21 21 24 24 24 24 24 24 24 24 24
++33 33 33 46 46 46 49 49 49 43 43 43 44 44 44 43 43 43 42 42 42 46 46 46
++43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 42 42 42 42 42 42 42 42 42
++37 37 37 42 42 42 45 45 45 45 45 45 39 39 39 33 33 33 31 31 31 29 29 29
++31 31 31 29 29 29 27 27 27 25 25 25 25 25 25 28 28 28 29 29 29 31 31 31
++23 23 23 21 21 21 28 28 28 25 25 25 31 31 31 42 42 42 33 33 33 24 24 24
++23 23 23 16 16 16 31 31 31 27 27 27 14 14 14 23 23 23 28 28 28 36 36 36
++27 27 27 29 29 29 31 31 31 32 32 32 32 32 32 31 31 31 29 29 29 28 28 28
++29 29 29 24 24 24 27 27 27 27 27 27 27 27 27 29 29 29 27 27 27 25 25 25
++32 32 32 29 29 29 27 27 27 27 27 27 29 29 29 31 31 31 29 29 29 27 27 27
++29 29 29 27 27 27 27 27 27 29 29 29 32 32 32 32 32 32 28 28 28 23 23 23
++23 23 23 21 21 21 21 21 21 25 25 25 24 24 24 21 21 21 23 23 23 28 28 28
++21 21 21 28 28 28 40 40 40 43 43 43 29 29 29 21 21 21 29 29 29 32 32 32
++27 27 27 29 29 29 32 32 32 27 27 27 27 27 27 32 32 32 28 28 28 24 24 24
++36 36 36 38 38 38 36 36 36 23 23 23 28 28 28 28 28 28 28 28 28 24 24 24
++31 31 31 25 25 25 27 27 27 25 25 25 23 23 23 25 25 25 31 31 31 40 40 40
++42 42 42 28 28 28 24 24 24 28 28 28 27 27 27 28 28 28 29 29 29 23 23 23
++23 23 23 16 16 16 11 11 11 11 11 11 14 14 14 25 25 25 37 37 37 40 40 40
++17 17 17 11 11 11 23 23 23 33 33 33 31 31 31 31 31 31 32 32 32 28 28 28
++29 29 29 25 25 25 24 24 24 33 33 33 21 21 21 14 14 14 36 36 36 36 36 36
++4 4 4 19 19 19 17 17 17 21 21 21 20 20 20 11 11 11 16 16 16 14 14 14
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 6 6 6 4 4 4 0 0 0 3 3 3 19 19 19
++43 43 43 32 32 32 4 4 4 0 0 0 10 10 10 0 0 0 0 0 0 17 17 17
++39 39 39 29 29 29 11 11 11 0 0 0 6 6 6 0 0 0 0 0 0 20 20 20
++42 42 42 39 39 39 16 16 16 0 0 0 4 4 4 0 0 0 0 0 0 17 17 17
++45 45 45 43 43 43 19 19 19 0 0 0 6 6 6 0 0 0 0 0 0 20 20 20
++43 43 43 46 46 46 29 29 29 0 0 0 0 0 0 4 4 4 8 8 8 6 6 6
++49 49 49 51 51 51 33 33 33 4 4 4 0 0 0 4 4 4 8 8 8 8 8 8
++46 46 46 54 54 54 39 39 39 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0
++40 40 40 54 54 54 39 39 39 0 0 0 0 0 0 6 6 6 10 10 10 0 0 0
++27 27 27 56 56 56 42 42 42 6 6 6 6 6 6 0 0 0 0 0 0 19 19 19
++29 29 29 57 57 57 43 43 43 8 8 8 6 6 6 3 3 3 0 0 0 11 11 11
++21 21 21 40 40 40 38 38 38 13 13 13 0 0 0 6 6 6 6 6 6 3 3 3
++16 16 16 36 36 36 39 39 39 16 16 16 4 4 4 27 27 27 32 32 32 13 13 13
++13 13 13 36 36 36 44 44 44 24 24 24 0 0 0 8 8 8 16 16 16 8 8 8
++6 6 6 10 10 10 11 11 11 13 13 13 14 14 14 16 16 16 14 14 14 13 13 13
++13 13 13 13 13 13 14 14 14 14 14 14 16 16 16 16 16 16 17 17 17 17 17 17
++20 20 20 20 20 20 19 19 19 17 17 17 19 19 19 23 23 23 21 21 21 17 17 17
++25 25 25 34 34 34 36 36 36 37 37 37 45 45 45 46 46 46 43 43 43 43 43 43
++49 49 49 46 46 46 43 43 43 42 42 42 38 38 38 34 34 34 36 36 36 38 38 38
++37 37 37 36 36 36 36 36 36 46 46 46 59 59 59 56 56 56 42 42 42 33 33 33
++40 40 40 51 51 51 45 45 45 53 53 53 56 56 56 50 50 50 51 51 51 37 37 37
++50 50 50 52 52 52 46 46 46 43 43 43 51 51 51 58 58 58 57 57 57 52 52 52
++45 45 45 44 44 44 48 48 48 50 50 50 61 61 61 51 51 51 51 51 51 54 54 54
++50 50 50 54 54 54 54 54 54 57 57 57 50 50 50 45 45 45 56 56 56 58 58 58
++49 49 49 54 54 54 54 54 54 49 49 49 59 59 59 51 51 51 53 53 53 50 50 50
++44 44 44 54 54 54 57 57 57 52 52 52 52 52 52 52 52 52 54 54 54 60 60 60
++50 50 50 52 52 52 51 51 51 52 52 52 57 57 57 58 58 58 53 53 53 51 51 51
++54 54 54 54 54 54 44 44 44 52 52 52 46 46 46 48 48 48 46 46 46 50 50 50
++53 53 53 40 40 40 49 49 49 54 54 54 48 48 48 45 45 45 45 45 45 48 48 48
++43 43 43 42 42 42 45 45 45 46 46 46 43 43 43 46 46 46 50 50 50 48 48 48
++44 44 44 45 45 45 45 45 45 44 44 44 40 40 40 39 39 39 40 40 40 42 42 42
++44 44 44 48 48 48 38 38 38 43 43 43 40 40 40 45 45 45 37 37 37 43 43 43
++37 37 37 42 42 42 38 38 38 39 39 39 40 40 40 37 37 37 39 39 39 39 39 39
++39 39 39 39 39 39 39 39 39 39 39 39 38 38 38 37 37 37 34 34 34 32 32 32
++36 36 36 38 38 38 34 34 34 32 32 32 34 34 34 32 32 32 29 29 29 37 37 37
++32 32 32 33 33 33 33 33 33 32 32 32 31 31 31 31 31 31 31 31 31 32 32 32
++34 34 34 34 34 34 34 34 34 36 36 36 36 36 36 33 33 33 29 29 29 27 27 27
++29 29 29 33 33 33 32 32 32 25 25 25 25 25 25 32 32 32 36 36 36 33 33 33
++37 37 37 28 28 28 25 25 25 24 24 24 31 31 31 31 31 31 21 21 21 32 32 32
++24 24 24 37 37 37 32 32 32 25 25 25 32 32 32 31 31 31 24 24 24 27 27 27
++25 25 25 28 28 28 31 31 31 31 31 31 31 31 31 31 31 31 28 28 28 25 25 25
++29 29 29 25 25 25 28 28 28 33 33 33 34 34 34 33 33 33 31 31 31 33 33 33
++32 32 32 28 28 28 28 28 28 31 31 31 32 32 32 29 29 29 28 28 28 29 29 29
++31 31 31 29 29 29 28 28 28 31 31 31 34 34 34 34 34 34 31 31 31 27 27 27
++29 29 29 27 27 27 27 27 27 28 28 28 28 28 28 28 28 28 29 29 29 32 32 32
++34 34 34 38 38 38 40 40 40 36 36 36 25 25 25 25 25 25 29 29 29 23 23 23
++29 29 29 28 28 28 28 28 28 28 28 28 29 29 29 31 31 31 33 33 33 37 37 37
++39 39 39 31 31 31 32 32 32 32 32 32 25 25 25 31 31 31 28 28 28 29 29 29
++19 19 19 33 33 33 28 28 28 32 32 32 32 32 32 27 27 27 39 39 39 45 45 45
++34 34 34 28 28 28 32 32 32 34 34 34 28 28 28 27 27 27 32 32 32 33 33 33
++25 25 25 21 21 21 8 8 8 8 8 8 25 25 25 29 29 29 21 21 21 21 21 21
++13 13 13 10 10 10 19 19 19 29 29 29 27 27 27 25 25 25 25 25 25 21 21 21
++24 24 24 39 39 39 25 25 25 21 21 21 37 37 37 39 39 39 32 32 32 16 16 16
++13 13 13 11 11 11 10 10 10 20 20 20 24 24 24 19 19 19 13 13 13 6 6 6
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 0 0 0 0 0 0 4 4 4 6 6 6 0 0 0 0 0 0 0 0 0
++21 21 21 38 38 38 25 25 25 0 0 0 3 3 3 8 8 8 0 0 0 0 0 0
++21 21 21 40 40 40 32 32 32 0 0 0 0 0 0 8 8 8 0 0 0 0 0 0
++19 19 19 49 49 49 40 40 40 4 4 4 0 0 0 8 8 8 0 0 0 0 0 0
++16 16 16 50 50 50 45 45 45 11 11 11 0 0 0 6 6 6 0 0 0 0 0 0
++13 13 13 48 48 48 52 52 52 23 23 23 0 0 0 4 4 4 3 3 3 0 0 0
++16 16 16 49 49 49 57 57 57 32 32 32 4 4 4 0 0 0 0 0 0 0 0 0
++8 8 8 45 45 45 58 58 58 34 34 34 6 6 6 0 0 0 0 0 0 0 0 0
++0 0 0 45 45 45 57 57 57 31 31 31 3 3 3 0 0 0 4 4 4 0 0 0
++0 0 0 34 34 34 52 52 52 38 38 38 11 11 11 3 3 3 13 13 13 20 20 20
++11 11 11 31 31 31 49 49 49 39 39 39 8 8 8 0 0 0 10 10 10 3 3 3
++0 0 0 28 28 28 42 42 42 32 32 32 17 17 17 6 6 6 3 3 3 6 6 6
++3 3 3 21 21 21 40 40 40 39 39 39 16 16 16 4 4 4 17 17 17 27 27 27
++14 14 14 14 14 14 32 32 32 44 44 44 28 28 28 6 6 6 8 8 8 20 20 20
++4 4 4 11 11 11 14 14 14 13 13 13 13 13 13 17 17 17 17 17 17 13 13 13
++14 14 14 14 14 14 16 16 16 16 16 16 17 17 17 17 17 17 19 19 19 19 19 19
++21 21 21 21 21 21 19 19 19 17 17 17 20 20 20 24 24 24 25 25 25 24 24 24
++40 40 40 37 37 37 28 28 28 32 32 32 44 44 44 48 48 48 44 44 44 46 46 46
++45 45 45 49 49 49 49 49 49 45 45 45 45 45 45 50 50 50 51 51 51 50 50 50
++45 45 45 48 48 48 54 54 54 54 54 54 48 48 48 51 51 51 57 57 57 54 54 54
++56 56 56 51 51 51 53 53 53 50 50 50 51 51 51 57 57 57 53 53 53 57 57 57
++56 56 56 51 51 51 54 54 54 54 54 54 48 48 48 51 51 51 58 58 58 54 54 54
++60 60 60 56 56 56 51 51 51 46 46 46 59 59 59 57 57 57 53 53 53 53 53 53
++49 49 49 53 53 53 51 51 51 58 58 58 57 57 57 48 48 48 51 51 51 53 53 53
++54 54 54 51 51 51 56 56 56 48 48 48 53 53 53 46 46 46 51 51 51 60 60 60
++53 53 53 57 57 57 51 51 51 48 48 48 56 56 56 58 58 58 52 52 52 48 48 48
++54 54 54 53 53 53 54 54 54 53 53 53 49 49 49 50 50 50 53 53 53 51 51 51
++49 49 49 51 51 51 44 44 44 57 57 57 53 53 53 51 51 51 54 54 54 51 51 51
++54 54 54 54 54 54 50 50 50 50 50 50 51 51 51 51 51 51 51 51 51 42 42 42
++50 50 50 50 50 50 51 51 51 46 46 46 43 43 43 48 48 48 49 49 49 39 39 39
++43 43 43 45 45 45 48 48 48 48 48 48 45 45 45 43 43 43 44 44 44 45 45 45
++43 43 43 50 50 50 38 38 38 42 42 42 40 40 40 45 45 45 37 37 37 42 42 42
++42 42 42 43 43 43 39 39 39 34 34 34 44 44 44 44 44 44 33 33 33 42 42 42
++34 34 34 36 36 36 37 37 37 37 37 37 37 37 37 36 36 36 34 34 34 34 34 34
++37 37 37 32 32 32 27 27 27 32 32 32 39 39 39 37 37 37 33 33 33 37 37 37
++31 31 31 32 32 32 33 33 33 33 33 33 31 31 31 29 29 29 31 31 31 32 32 32
++33 33 33 29 29 29 25 25 25 27 27 27 31 31 31 32 32 32 31 31 31 27 27 27
++37 37 37 27 27 27 27 27 27 37 37 37 37 37 37 24 24 24 23 23 23 32 32 32
++17 17 17 34 34 34 37 37 37 25 25 25 32 32 32 34 34 34 24 24 24 37 37 37
++38 38 38 27 27 27 21 21 21 20 20 20 16 16 16 37 37 37 45 45 45 13 13 13
++23 23 23 24 24 24 24 24 24 23 23 23 21 21 21 24 24 24 32 32 32 39 39 39
++36 36 36 34 34 34 32 32 32 33 33 33 33 33 33 28 28 28 29 29 29 34 34 34
++27 27 27 25 25 25 29 29 29 36 36 36 36 36 36 32 32 32 31 31 31 34 34 34
++37 37 37 36 36 36 36 36 36 38 38 38 40 40 40 42 42 42 38 38 38 36 36 36
++40 40 40 40 40 40 39 39 39 39 39 39 39 39 39 42 42 42 42 42 42 40 40 40
++39 39 39 42 42 42 44 44 44 37 37 37 34 34 34 43 43 43 40 40 40 27 27 27
++24 24 24 24 24 24 17 17 17 13 13 13 16 16 16 27 27 27 39 39 39 44 44 44
++37 37 37 19 19 19 27 27 27 44 44 44 27 27 27 45 45 45 40 40 40 44 44 44
++38 38 38 40 40 40 8 8 8 21 21 21 42 42 42 42 42 42 53 53 53 44 44 44
++44 44 44 44 44 44 48 48 48 42 42 42 21 21 21 3 3 3 0 0 0 0 0 0
++11 11 11 19 19 19 8 8 8 13 13 13 37 37 37 37 37 37 21 21 21 24 24 24
++16 16 16 10 10 10 14 14 14 20 20 20 16 16 16 14 14 14 16 16 16 17 17 17
++0 0 0 8 8 8 0 0 0 11 11 11 36 36 36 36 36 36 21 21 21 4 4 4
++19 19 19 3 3 3 3 3 3 13 13 13 23 23 23 27 27 27 21 21 21 17 17 17
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 0 0 0
++0 0 0 23 23 23 39 39 39 24 24 24 0 0 0 0 0 0 10 10 10 0 0 0
++0 0 0 16 16 16 37 37 37 28 28 28 3 3 3 0 0 0 6 6 6 0 0 0
++0 0 0 17 17 17 39 39 39 37 37 37 11 11 11 0 0 0 4 4 4 4 4 4
++0 0 0 19 19 19 44 44 44 43 43 43 16 16 16 0 0 0 4 4 4 4 4 4
++0 0 0 20 20 20 45 45 45 49 49 49 28 28 28 0 0 0 0 0 0 8 8 8
++0 0 0 19 19 19 46 46 46 53 53 53 32 32 32 0 0 0 0 0 0 14 14 14
++0 0 0 8 8 8 36 36 36 56 56 56 43 43 43 4 4 4 0 0 0 14 14 14
++0 0 0 8 8 8 38 38 38 58 58 58 44 44 44 6 6 6 0 0 0 10 10 10
++3 3 3 0 0 0 32 32 32 51 51 51 36 36 36 20 20 20 19 19 19 14 14 14
++11 11 11 0 0 0 27 27 27 53 53 53 36 36 36 16 16 16 11 11 11 0 0 0
++8 8 8 8 8 8 24 24 24 44 44 44 42 42 42 16 16 16 0 0 0 4 4 4
++4 4 4 0 0 0 11 11 11 42 42 42 50 50 50 19 19 19 0 0 0 31 31 31
++28 28 28 13 13 13 10 10 10 37 37 37 52 52 52 24 24 24 0 0 0 17 17 17
++11 11 11 16 16 16 16 16 16 10 10 10 8 8 8 14 14 14 17 17 17 14 14 14
++16 16 16 16 16 16 17 17 17 17 17 17 19 19 19 19 19 19 20 20 20 20 20 20
++21 21 21 20 20 20 21 21 21 23 23 23 20 20 20 20 20 20 28 28 28 39 39 39
++39 39 39 32 32 32 24 24 24 32 32 32 46 46 46 49 49 49 45 45 45 49 49 49
++42 42 42 49 49 49 53 53 53 51 51 51 48 48 48 46 46 46 46 46 46 45 45 45
++57 57 57 53 53 53 52 52 52 49 49 49 43 43 43 45 45 45 52 52 52 54 54 54
++52 52 52 48 48 48 54 54 54 46 46 46 46 46 46 56 56 56 50 50 50 53 53 53
++51 51 51 50 50 50 57 57 57 58 58 58 48 48 48 51 51 51 54 54 54 44 44 44
++52 52 52 54 54 54 58 58 58 53 53 53 54 54 54 50 50 50 49 49 49 60 60 60
++58 58 58 53 53 53 42 42 42 51 51 51 61 61 61 57 57 57 58 58 58 58 58 58
++62 62 62 53 53 53 65 65 65 57 57 57 62 62 62 57 57 57 50 50 50 53 53 53
++53 53 53 59 59 59 59 59 59 57 57 57 56 56 56 49 49 49 45 45 45 51 51 51
++56 56 56 53 53 53 53 53 53 49 49 49 45 45 45 54 54 54 57 57 57 44 44 44
++52 52 52 65 65 65 52 52 52 50 50 50 44 44 44 39 39 39 46 46 46 43 43 43
++45 45 45 57 57 57 42 42 42 36 36 36 45 45 45 51 51 51 56 56 56 45 45 45
++36 36 36 38 38 38 42 42 42 40 40 40 37 37 37 44 44 44 52 52 52 51 51 51
++38 38 38 37 37 37 37 37 37 36 36 36 36 36 36 34 34 34 32 32 32 31 31 31
++43 43 43 51 51 51 31 31 31 28 28 28 25 25 25 28 28 28 21 21 21 27 27 27
++27 27 27 24 24 24 27 27 27 21 21 21 37 37 37 46 46 46 28 28 28 24 24 24
++21 21 21 21 21 21 21 21 21 20 20 20 19 19 19 20 20 20 21 21 21 24 24 24
++25 25 25 21 21 21 21 21 21 33 33 33 49 49 49 54 54 54 51 51 51 46 46 46
++51 51 51 53 53 53 57 57 57 57 57 57 54 54 54 52 52 52 51 51 51 52 52 52
++59 59 59 56 56 56 52 52 52 51 51 51 53 53 53 56 56 56 57 57 57 57 57 57
++48 48 48 25 25 25 14 14 14 29 29 29 42 42 42 34 34 34 17 17 17 6 6 6
++0 0 0 28 28 28 40 40 40 37 37 37 40 40 40 31 31 31 20 20 20 45 45 45
++50 50 50 17 17 17 13 13 13 0 0 0 3 3 3 48 48 48 56 56 56 28 28 28
++4 4 4 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 16 16 16 32 32 32
++39 39 39 51 51 51 50 50 50 49 49 49 50 50 50 46 46 46 45 45 45 42 42 42
++27 27 27 34 34 34 43 43 43 45 45 45 45 45 45 46 46 46 48 48 48 48 48 48
++43 43 43 43 43 43 43 43 43 45 45 45 48 48 48 49 49 49 46 46 46 45 45 45
++44 44 44 46 46 46 46 46 46 45 45 45 46 46 46 49 49 49 46 46 46 44 44 44
++42 42 42 44 44 44 50 50 50 45 45 45 45 45 45 51 51 51 42 42 42 33 33 33
++24 24 24 25 25 25 8 8 8 0 0 0 4 4 4 29 29 29 49 49 49 48 48 48
++19 19 19 0 0 0 16 16 16 40 40 40 11 11 11 44 44 44 32 32 32 34 34 34
++54 54 54 46 46 46 31 31 31 33 33 33 33 33 33 31 31 31 45 45 45 46 46 46
++50 50 50 51 51 51 54 54 54 52 52 52 38 38 38 21 21 21 13 13 13 11 11 11
++28 28 28 38 38 38 33 33 33 28 28 28 32 32 32 23 23 23 13 13 13 20 20 20
++23 23 23 16 16 16 11 11 11 10 10 10 4 4 4 3 3 3 8 8 8 14 14 14
++11 11 11 0 0 0 8 8 8 34 34 34 28 28 28 8 8 8 11 11 11 16 16 16
++42 42 42 27 27 27 25 25 25 16 16 16 8 8 8 19 19 19 21 21 21 19 19 19
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4
++6 6 6 0 0 0 20 20 20 39 39 39 21 21 21 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 17 17 17 44 44 44 29 29 29 0 0 0 0 0 0 6 6 6
++6 6 6 0 0 0 16 16 16 49 49 49 37 37 37 0 0 0 0 0 0 6 6 6
++8 8 8 0 0 0 16 16 16 52 52 52 42 42 42 8 8 8 0 0 0 3 3 3
++0 0 0 0 0 0 19 19 19 48 48 48 46 46 46 19 19 19 0 0 0 0 0 0
++3 3 3 0 0 0 13 13 13 43 43 43 51 51 51 31 31 31 6 6 6 0 0 0
++13 13 13 0 0 0 4 4 4 43 43 43 56 56 56 37 37 37 8 8 8 0 0 0
++10 10 10 0 0 0 4 4 4 44 44 44 58 58 58 38 38 38 8 8 8 0 0 0
++0 0 0 8 8 8 8 8 8 28 28 28 53 53 53 45 45 45 16 16 16 8 8 8
++0 0 0 8 8 8 3 3 3 24 24 24 53 53 53 39 39 39 6 6 6 10 10 10
++20 20 20 6 6 6 10 10 10 33 33 33 44 44 44 34 34 34 16 16 16 0 0 0
++13 13 13 10 10 10 0 0 0 14 14 14 45 45 45 50 50 50 25 25 25 0 0 0
++23 23 23 31 31 31 20 20 20 14 14 14 36 36 36 45 45 45 27 27 27 4 4 4
++10 10 10 14 14 14 14 14 14 10 10 10 11 11 11 16 16 16 17 17 17 14 14 14
++17 17 17 17 17 17 19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21
++20 20 20 23 23 23 23 23 23 20 20 20 21 21 21 29 29 29 37 37 37 42 42 42
++25 25 25 24 24 24 24 24 24 36 36 36 50 50 50 50 50 50 45 45 45 48 48 48
++49 49 49 50 50 50 50 50 50 45 45 45 34 34 34 28 28 28 32 32 32 40 40 40
++61 61 61 46 46 46 31 31 31 31 31 31 39 39 39 36 36 36 32 32 32 36 36 36
++72 72 72 76 76 76 37 37 37 38 38 38 42 42 42 42 42 42 71 71 71 54 54 54
++33 33 33 63 63 63 60 60 60 51 51 51 68 68 68 61 61 61 37 37 37 38 38 38
++36 36 36 52 52 52 73 73 73 71 71 71 50 50 50 34 34 34 39 39 39 74 74 74
++69 69 69 61 61 61 50 50 50 57 57 57 66 66 66 66 66 66 69 69 69 66 66 66
++72 72 72 68 68 68 78 78 78 65 65 65 65 65 65 61 61 61 58 58 58 57 57 57
++68 68 68 75 75 75 81 81 81 81 81 81 68 68 68 44 44 44 36 36 36 46 46 46
++58 58 58 50 50 50 39 39 39 33 33 33 46 46 46 71 71 71 69 69 69 40 40 40
++44 44 44 70 70 70 62 62 62 44 44 44 39 39 39 32 32 32 34 34 34 33 33 33
++45 45 45 66 66 66 49 49 49 28 28 28 27 27 27 37 37 37 54 54 54 58 58 58
++39 39 39 29 29 29 28 28 28 31 31 31 29 29 29 39 39 39 56 56 56 65 65 65
++40 40 40 32 32 32 23 23 23 21 21 21 27 27 27 32 32 32 32 32 32 29 29 29
++43 43 43 53 53 53 27 27 27 23 23 23 21 21 21 23 23 23 19 19 19 21 21 21
++19 19 19 11 11 11 23 23 23 21 21 21 32 32 32 50 50 50 33 33 33 4 4 4
++19 19 19 17 17 17 16 16 16 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13
++8 8 8 10 10 10 13 13 13 23 23 23 42 42 42 60 60 60 62 62 62 51 51 51
++48 48 48 51 51 51 54 54 54 56 56 56 53 53 53 51 51 51 49 49 49 49 49 49
++53 53 53 53 53 53 52 52 52 50 50 50 48 48 48 48 48 48 51 51 51 54 54 54
++57 57 57 45 45 45 16 16 16 0 0 0 24 24 24 51 51 51 37 37 37 0 0 0
++13 13 13 3 3 3 21 21 21 49 49 49 52 52 52 16 16 16 0 0 0 44 44 44
++45 45 45 38 38 38 27 27 27 0 0 0 29 29 29 54 54 54 29 29 29 49 49 49
++17 17 17 0 0 0 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 10 10 10
++13 13 13 43 43 43 44 44 44 43 43 43 49 49 49 49 49 49 46 46 46 33 33 33
++24 24 24 39 39 39 48 48 48 45 45 45 45 45 45 50 50 50 51 51 51 45 45 45
++45 45 45 45 45 45 45 45 45 46 46 46 49 49 49 49 49 49 49 49 49 48 48 48
++43 43 43 44 44 44 46 46 46 46 46 46 46 46 46 46 46 46 44 44 44 42 42 42
++48 48 48 46 46 46 52 52 52 44 44 44 36 36 36 32 32 32 20 20 20 25 25 25
++32 32 32 27 27 27 6 6 6 8 8 8 19 19 19 32 32 32 50 50 50 52 52 52
++11 11 11 0 0 0 24 24 24 37 37 37 3 3 3 40 40 40 17 17 17 16 16 16
++45 45 45 21 21 21 37 37 37 43 43 43 33 33 33 34 34 34 40 40 40 51 51 51
++51 51 51 49 49 49 48 48 48 51 51 51 53 53 53 50 50 50 46 46 46 46 46 46
++48 48 48 49 49 49 45 45 45 33 33 33 17 17 17 6 6 6 6 6 6 11 11 11
++23 23 23 20 20 20 16 16 16 11 11 11 6 6 6 0 0 0 3 3 3 11 11 11
++24 24 24 16 16 16 29 29 29 36 36 36 14 14 14 0 0 0 10 10 10 27 27 27
++49 49 49 45 45 45 48 48 48 31 31 31 0 0 0 13 13 13 31 31 31 25 25 25
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 19 19 19 36 36 36 24 24 24 3 3 3 0 0 0
++3 3 3 4 4 4 0 0 0 20 20 20 38 38 38 29 29 29 11 11 11 0 0 0
++3 3 3 3 3 3 0 0 0 16 16 16 38 38 38 38 38 38 14 14 14 0 0 0
++0 0 0 0 0 0 0 0 0 16 16 16 44 44 44 46 46 46 20 20 20 0 0 0
++8 8 8 0 0 0 0 0 0 19 19 19 43 43 43 50 50 50 28 28 28 0 0 0
++3 3 3 0 0 0 0 0 0 16 16 16 39 39 39 52 52 52 34 34 34 0 0 0
++0 0 0 3 3 3 3 3 3 8 8 8 33 33 33 58 58 58 43 43 43 0 0 0
++3 3 3 0 0 0 0 0 0 6 6 6 32 32 32 54 54 54 43 43 43 3 3 3
++0 0 0 3 3 3 4 4 4 8 8 8 34 34 34 56 56 56 44 44 44 11 11 11
++0 0 0 11 11 11 0 0 0 0 0 0 28 28 28 49 49 49 42 42 42 27 27 27
++3 3 3 10 10 10 11 11 11 10 10 10 25 25 25 48 48 48 45 45 45 21 21 21
++11 11 11 13 13 13 16 16 16 4 4 4 10 10 10 45 45 45 51 51 51 16 16 16
++10 10 10 23 23 23 31 31 31 16 16 16 8 8 8 40 40 40 52 52 52 27 27 27
++13 13 13 11 11 11 13 13 13 16 16 16 20 20 20 20 20 20 19 19 19 16 16 16
++19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21 23 23 23 23 23 23
++20 20 20 27 27 27 25 25 25 17 17 17 28 28 28 45 45 45 44 44 44 29 29 29
++25 25 25 25 25 25 23 23 23 29 29 29 43 43 43 48 48 48 48 48 48 52 52 52
++54 54 54 49 49 49 42 42 42 34 34 34 28 28 28 29 29 29 43 43 43 57 57 57
++44 44 44 38 38 38 29 29 29 32 32 32 36 36 36 29 29 29 33 33 33 50 50 50
++78 78 78 77 77 77 51 51 51 38 38 38 31 31 31 34 34 34 62 62 62 68 68 68
++62 62 62 67 67 67 48 48 48 37 37 37 59 59 59 70 70 70 56 56 56 44 44 44
++45 45 45 53 53 53 72 72 72 73 73 73 57 57 57 44 44 44 39 39 39 72 72 72
++69 69 69 72 72 72 70 70 70 63 63 63 46 46 46 46 46 46 69 69 69 77 77 77
++77 77 77 60 60 60 58 58 58 54 54 54 75 75 75 87 87 87 87 87 87 72 72 72
++56 56 56 62 62 62 71 71 71 82 82 82 83 83 83 66 66 66 52 52 52 56 56 56
++51 51 51 34 34 34 33 33 33 51 51 51 60 60 60 60 60 60 59 59 59 61 61 61
++43 43 43 66 66 66 67 67 67 40 40 40 36 36 36 33 33 33 34 34 34 38 38 38
++34 34 34 61 61 61 60 60 60 39 39 39 27 27 27 31 31 31 50 50 50 63 63 63
++49 49 49 32 32 32 25 25 25 29 29 29 28 28 28 31 31 31 37 37 37 39 39 39
++62 62 62 49 49 49 31 31 31 21 21 21 23 23 23 25 25 25 25 25 25 23 23 23
++37 37 37 54 54 54 27 27 27 25 25 25 28 28 28 28 28 28 24 24 24 25 25 25
++27 27 27 19 19 19 21 21 21 19 19 19 27 27 27 50 50 50 51 51 51 32 32 32
++16 16 16 14 14 14 16 16 16 17 17 17 20 20 20 20 20 20 17 17 17 14 14 14
++10 10 10 11 11 11 11 11 11 11 11 11 28 28 28 54 54 54 65 65 65 57 57 57
++54 54 54 56 56 56 57 57 57 57 57 57 58 58 58 56 56 56 54 54 54 52 52 52
++51 51 51 53 53 53 54 54 54 52 52 52 48 48 48 46 46 46 49 49 49 52 52 52
++59 59 59 57 57 57 37 37 37 4 4 4 0 0 0 29 29 29 40 40 40 36 36 36
++10 10 10 0 0 0 16 16 16 46 46 46 50 50 50 28 28 28 6 6 6 20 20 20
++39 39 39 32 32 32 40 40 40 28 28 28 40 40 40 39 39 39 0 0 0 32 32 32
++50 50 50 28 28 28 4 4 4 3 3 3 8 8 8 3 3 3 0 0 0 0 0 0
++28 28 28 51 51 51 37 37 37 28 28 28 34 34 34 39 39 39 46 46 46 38 38 38
++25 25 25 40 40 40 48 48 48 45 45 45 43 43 43 48 48 48 46 46 46 40 40 40
++43 43 43 43 43 43 44 44 44 44 44 44 45 45 45 45 45 45 45 45 45 45 45 45
++46 46 46 46 46 46 48 48 48 50 50 50 49 49 49 44 44 44 44 44 44 48 48 48
++44 44 44 39 39 39 42 42 42 24 24 24 10 10 10 4 4 4 0 0 0 20 20 20
++32 32 32 21 21 21 4 4 4 24 24 24 28 28 28 17 17 17 37 37 37 50 50 50
++8 8 8 4 4 4 37 37 37 34 34 34 14 14 14 44 44 44 13 13 13 23 23 23
++39 39 39 0 0 0 21 21 21 27 27 27 24 24 24 38 38 38 37 37 37 50 50 50
++58 58 58 53 53 53 48 48 48 48 48 48 53 53 53 52 52 52 51 51 51 54 54 54
++48 48 48 37 37 37 28 28 28 19 19 19 8 8 8 10 10 10 16 16 16 16 16 16
++16 16 16 19 19 19 20 20 20 20 20 20 17 17 17 6 6 6 0 0 0 8 8 8
++17 17 17 36 36 36 33 33 33 3 3 3 0 0 0 3 3 3 3 3 3 16 16 16
++40 40 40 46 46 46 54 54 54 46 46 46 14 14 14 17 17 17 44 44 44 36 36 36
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 4 4 4 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0
++4 4 4 10 10 10 0 0 0 0 0 0 19 19 19 34 34 34 24 24 24 3 3 3
++0 0 0 16 16 16 0 0 0 0 0 0 20 20 20 40 40 40 37 37 37 0 0 0
++0 0 0 14 14 14 4 4 4 0 0 0 17 17 17 49 49 49 40 40 40 6 6 6
++0 0 0 13 13 13 3 3 3 0 0 0 20 20 20 53 53 53 45 45 45 14 14 14
++6 6 6 0 0 0 0 0 0 0 0 0 23 23 23 49 49 49 48 48 48 23 23 23
++3 3 3 8 8 8 8 8 8 3 3 3 14 14 14 40 40 40 48 48 48 33 33 33
++0 0 0 4 4 4 6 6 6 0 0 0 4 4 4 42 42 42 54 54 54 39 39 39
++6 6 6 8 8 8 4 4 4 0 0 0 3 3 3 34 34 34 49 49 49 40 40 40
++11 11 11 0 0 0 6 6 6 16 16 16 10 10 10 38 38 38 54 54 54 34 34 34
++13 13 13 0 0 0 6 6 6 6 6 6 0 0 0 33 33 33 57 57 57 42 42 42
++8 8 8 10 10 10 10 10 10 0 0 0 6 6 6 32 32 32 48 48 48 44 44 44
++19 19 19 6 6 6 14 14 14 14 14 14 0 0 0 20 20 20 49 49 49 53 53 53
++25 25 25 13 13 13 24 24 24 29 29 29 13 13 13 20 20 20 43 43 43 48 48 48
++31 31 31 20 20 20 13 13 13 17 17 17 21 21 21 19 19 19 19 19 19 20 20 20
++20 20 20 20 20 20 21 21 21 21 21 21 23 23 23 23 23 23 24 24 24 24 24 24
++24 24 24 24 24 24 25 25 25 31 31 31 42 42 42 48 48 48 38 38 38 23 23 23
++31 31 31 31 31 31 23 23 23 24 24 24 39 39 39 49 49 49 48 48 48 48 48 48
++46 46 46 43 43 43 36 36 36 32 32 32 36 36 36 46 46 46 56 56 56 59 59 59
++32 32 32 33 33 33 40 40 40 42 42 42 34 34 34 36 36 36 52 52 52 68 68 68
++43 43 43 43 43 43 68 68 68 58 58 58 40 40 40 37 37 37 33 33 33 63 63 63
++84 84 84 63 63 63 44 44 44 33 33 33 37 37 37 61 61 61 72 72 72 61 61 61
++66 66 66 52 52 52 52 52 52 57 57 57 61 61 61 69 69 69 48 48 48 60 60 60
++71 71 71 74 74 74 74 74 74 63 63 63 36 36 36 39 39 39 68 68 68 70 70 70
++85 85 85 68 68 68 63 63 63 69 69 69 84 84 84 78 78 78 75 75 75 54 54 54
++58 58 58 56 56 56 51 51 51 61 61 61 78 78 78 78 78 78 62 62 62 49 49 49
++40 40 40 36 36 36 50 50 50 69 69 69 61 61 61 34 34 34 43 43 43 78 78 78
++67 67 67 60 60 60 71 71 71 46 46 46 33 33 33 34 34 34 39 39 39 42 42 42
++29 29 29 50 50 50 66 66 66 59 59 59 51 51 51 52 52 52 57 57 57 66 66 66
++69 69 69 63 63 63 63 63 63 66 66 66 62 62 62 61 61 61 60 60 60 54 54 54
++77 77 77 69 69 69 57 57 57 46 46 46 39 39 39 33 33 33 28 28 28 23 23 23
++42 42 42 60 60 60 28 28 28 25 25 25 27 27 27 27 27 27 24 24 24 25 25 25
++29 29 29 28 28 28 19 19 19 17 17 17 21 21 21 34 34 34 51 51 51 53 53 53
++31 31 31 24 24 24 17 17 17 16 16 16 19 19 19 21 21 21 19 19 19 16 16 16
++19 19 19 16 16 16 14 14 14 11 11 11 20 20 20 44 44 44 60 60 60 58 58 58
++57 57 57 53 53 53 50 50 50 50 50 50 51 51 51 53 53 53 53 53 53 52 52 52
++50 50 50 52 52 52 53 53 53 54 54 54 53 53 53 51 51 51 49 49 49 49 49 49
++54 54 54 54 54 54 52 52 52 39 39 39 13 13 13 0 0 0 20 20 20 52 52 52
++20 20 20 13 13 13 33 33 33 33 33 33 25 25 25 42 42 42 37 37 37 8 8 8
++43 43 43 11 11 11 25 25 25 51 51 51 45 45 45 21 21 21 0 0 0 0 0 0
++39 39 39 36 36 36 23 23 23 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0
++44 44 44 51 51 51 16 16 16 0 0 0 3 3 3 6 6 6 25 25 25 29 29 29
++33 33 33 38 38 38 45 45 45 50 50 50 50 50 50 49 49 49 48 48 48 49 49 49
++44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 45 45 45 45 45 45
++50 50 50 44 44 44 44 44 44 48 48 48 44 44 44 36 36 36 40 40 40 52 52 52
++32 32 32 31 31 31 34 34 34 8 8 8 0 0 0 0 0 0 0 0 0 23 23 23
++25 25 25 27 27 27 14 14 14 24 24 24 14 14 14 0 0 0 29 29 29 45 45 45
++0 0 0 0 0 0 34 34 34 21 21 21 21 21 21 38 38 38 3 3 3 32 32 32
++36 36 36 28 28 28 28 28 28 8 8 8 0 0 0 0 0 0 10 10 10 33 33 33
++43 43 43 51 51 51 53 53 53 53 53 53 52 52 52 45 45 45 45 45 45 56 56 56
++48 48 48 36 36 36 16 16 16 3 3 3 8 8 8 13 13 13 11 11 11 13 13 13
++10 10 10 16 16 16 19 19 19 20 20 20 21 21 21 11 11 11 8 8 8 17 17 17
++32 32 32 37 37 37 29 29 29 3 3 3 0 0 0 4 4 4 0 0 0 6 6 6
++50 50 50 49 49 49 49 49 49 56 56 56 25 25 25 14 14 14 46 46 46 31 31 31
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++11 11 11 4 4 4 0 0 0 4 4 4 8 8 8 8 8 8 8 8 8 13 13 13
++3 3 3 0 0 0 8 8 8 6 6 6 0 0 0 23 23 23 42 42 42 29 29 29
++8 8 8 3 3 3 3 3 3 10 10 10 0 0 0 20 20 20 44 44 44 27 27 27
++13 13 13 0 0 0 8 8 8 13 13 13 0 0 0 21 21 21 44 44 44 42 42 42
++16 16 16 3 3 3 13 13 13 13 13 13 0 0 0 19 19 19 46 46 46 48 48 48
++8 8 8 10 10 10 14 14 14 8 8 8 0 0 0 20 20 20 46 46 46 57 57 57
++24 24 24 14 14 14 11 11 11 6 6 6 0 0 0 16 16 16 43 43 43 57 57 57
++29 29 29 3 3 3 0 0 0 3 3 3 0 0 0 6 6 6 37 37 37 59 59 59
++36 36 36 3 3 3 0 0 0 10 10 10 3 3 3 0 0 0 29 29 29 58 58 58
++37 37 37 13 13 13 0 0 0 19 19 19 21 21 21 4 4 4 21 21 21 58 58 58
++36 36 36 10 10 10 4 4 4 19 19 19 13 13 13 3 3 3 27 27 27 53 53 53
++39 39 39 11 11 11 4 4 4 16 16 16 3 3 3 0 0 0 23 23 23 52 52 52
++56 56 56 29 29 29 10 10 10 16 16 16 16 16 16 3 3 3 14 14 14 43 43 43
++49 49 49 31 31 31 20 20 20 28 28 28 25 25 25 6 6 6 14 14 14 42 42 42
++50 50 50 31 31 31 14 14 14 14 14 14 17 17 17 14 14 14 16 16 16 24 24 24
++20 20 20 21 21 21 21 21 21 23 23 23 23 23 23 24 24 24 24 24 24 24 24 24
++28 28 28 17 17 17 25 25 25 48 48 48 53 53 53 37 37 37 24 24 24 27 27 27
++27 27 27 31 31 31 29 29 29 34 34 34 51 51 51 54 54 54 42 42 42 29 29 29
++32 32 32 36 36 36 33 33 33 32 32 32 42 42 42 53 53 53 49 49 49 34 34 34
++44 44 44 33 33 33 38 38 38 40 40 40 33 33 33 46 46 46 61 61 61 56 56 56
++36 36 36 46 46 46 54 54 54 75 75 75 65 65 65 38 38 38 54 54 54 72 72 72
++56 56 56 70 70 70 62 62 62 45 45 45 44 44 44 43 43 43 53 53 53 78 78 78
++71 71 71 51 51 51 39 39 39 42 42 42 58 58 58 78 78 78 56 56 56 58 58 58
++82 82 82 69 69 69 63 63 63 65 65 65 58 58 58 68 68 68 74 74 74 43 43 43
++66 66 66 73 73 73 85 85 85 84 84 84 66 66 66 40 40 40 69 69 69 81 81 81
++70 70 70 60 60 60 40 40 40 40 40 40 68 68 68 84 84 84 69 69 69 45 45 45
++38 38 38 60 60 60 68 68 68 56 56 56 40 40 40 32 32 32 48 48 48 73 73 73
++72 72 72 43 43 43 69 69 69 57 57 57 40 40 40 46 46 46 52 52 52 50 50 50
++68 68 68 68 68 68 78 78 78 73 73 73 69 69 69 69 69 69 57 57 57 57 57 57
++62 62 62 66 66 66 69 69 69 63 63 63 52 52 52 53 53 53 57 57 57 51 51 51
++56 56 56 60 60 60 67 67 67 70 70 70 70 70 70 67 67 67 63 63 63 62 62 62
++57 57 57 73 73 73 34 34 34 24 24 24 24 24 24 23 23 23 23 23 23 25 25 25
++20 20 20 31 31 31 20 20 20 24 24 24 24 24 24 11 11 11 28 28 28 45 45 45
++59 59 59 46 46 46 28 28 28 17 17 17 14 14 14 16 16 16 16 16 16 13 13 13
++14 14 14 10 10 10 11 11 11 13 13 13 16 16 16 33 33 33 50 50 50 52 52 52
++65 65 65 58 58 58 51 51 51 50 50 50 52 52 52 57 57 57 58 58 58 58 58 58
++50 50 50 50 50 50 51 51 51 56 56 56 58 58 58 57 57 57 51 51 51 45 45 45
++50 50 50 51 51 51 56 56 56 53 53 53 32 32 32 4 4 4 3 3 3 21 21 21
++57 57 57 39 39 39 46 46 46 25 25 25 0 0 0 29 29 29 51 51 51 31 31 31
++48 48 48 21 21 21 0 0 0 44 44 44 65 65 65 24 24 24 3 3 3 3 3 3
++0 0 0 33 33 33 45 45 45 21 21 21 0 0 0 3 3 3 11 11 11 6 6 6
++48 48 48 48 48 48 8 8 8 0 0 0 6 6 6 0 0 0 17 17 17 28 28 28
++20 20 20 17 17 17 27 27 27 42 42 42 44 44 44 37 37 37 37 37 37 45 45 45
++49 49 49 49 49 49 48 48 48 48 48 48 46 46 46 46 46 46 48 48 48 48 48 48
++44 44 44 34 34 34 33 33 33 37 37 37 31 31 31 21 21 21 31 31 31 49 49 49
++28 28 28 33 33 33 38 38 38 6 6 6 0 0 0 13 13 13 3 3 3 21 21 21
++24 24 24 45 45 45 32 32 32 17 17 17 0 0 0 0 0 0 37 37 37 49 49 49
++6 6 6 0 0 0 40 40 40 19 19 19 31 31 31 33 33 33 0 0 0 39 39 39
++28 28 28 36 36 36 8 8 8 0 0 0 0 0 0 3 3 3 0 0 0 3 3 3
++4 4 4 32 32 32 49 49 49 51 51 51 43 43 43 27 27 27 25 25 25 40 40 40
++44 44 44 39 39 39 11 11 11 0 0 0 13 13 13 14 14 14 6 6 6 17 17 17
++10 10 10 16 16 16 14 14 14 14 14 14 17 17 17 13 13 13 14 14 14 28 28 28
++36 36 36 0 0 0 4 4 4 23 23 23 13 13 13 0 0 0 0 0 0 23 23 23
++54 54 54 42 42 42 32 32 32 54 54 54 32 32 32 16 16 16 52 52 52 36 36 36
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++4 4 4 8 8 8 13 13 13 17 17 17 20 20 20 20 20 20 19 19 19 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++19 19 19 19 19 19 20 20 20 21 21 21 19 19 19 17 17 17 28 28 28 40 40 40
++34 34 34 21 21 21 17 17 17 19 19 19 16 16 16 17 17 17 32 32 32 48 48 48
++37 37 37 24 24 24 10 10 10 14 14 14 20 20 20 11 11 11 23 23 23 49 49 49
++43 43 43 27 27 27 10 10 10 17 17 17 24 24 24 17 17 17 23 23 23 46 46 46
++46 46 46 31 31 31 14 14 14 16 16 16 20 20 20 11 11 11 21 21 21 50 50 50
++57 57 57 25 25 25 10 10 10 21 21 21 21 21 21 13 13 13 23 23 23 42 42 42
++57 57 57 39 39 39 14 14 14 3 3 3 3 3 3 0 0 0 10 10 10 36 36 36
++58 58 58 43 43 43 10 10 10 0 0 0 8 8 8 0 0 0 0 0 0 29 29 29
++63 63 63 36 36 36 10 10 10 19 19 19 13 13 13 0 0 0 13 13 13 8 8 8
++56 56 56 38 38 38 21 21 21 11 11 11 0 0 0 4 4 4 14 14 14 17 17 17
++52 52 52 44 44 44 13 13 13 0 0 0 19 19 19 19 19 19 8 8 8 21 21 21
++54 54 54 52 52 52 32 32 32 11 11 11 13 13 13 13 13 13 6 6 6 14 14 14
++48 48 48 50 50 50 31 31 31 28 28 28 28 28 28 16 16 16 16 16 16 14 14 14
++33 33 33 56 56 56 34 34 34 14 14 14 23 23 23 23 23 23 23 23 23 21 21 21
++27 27 27 21 21 21 21 21 21 27 27 27 28 28 28 24 24 24 23 23 23 25 25 25
++25 25 25 32 32 32 49 49 49 52 52 52 36 36 36 27 27 27 32 32 32 31 31 31
++36 36 36 23 23 23 34 34 34 53 53 53 49 49 49 34 34 34 32 32 32 33 33 33
++38 38 38 32 32 32 33 33 33 44 44 44 52 52 52 50 50 50 42 42 42 37 37 37
++39 39 39 40 40 40 37 37 37 37 37 37 50 50 50 63 63 63 57 57 57 39 39 39
++38 38 38 38 38 38 43 43 43 52 52 52 80 80 80 73 73 73 73 73 73 46 46 46
++44 44 44 61 61 61 74 74 74 65 65 65 43 43 43 42 42 42 60 60 60 74 74 74
++76 76 76 71 71 71 44 44 44 45 45 45 46 46 46 54 54 54 83 83 83 77 77 77
++81 81 81 63 63 63 42 42 42 59 59 59 81 81 81 80 80 80 44 44 44 50 50 50
++71 71 71 78 78 78 90 90 90 85 85 85 59 59 59 48 48 48 61 61 61 76 76 76
++80 80 80 61 61 61 39 39 39 58 58 58 72 72 72 81 81 81 87 87 87 57 57 57
++53 53 53 70 70 70 52 52 52 48 48 48 43 43 43 44 44 44 68 68 68 59 59 59
++74 74 74 71 71 71 71 71 71 74 74 74 71 71 71 62 62 62 59 59 59 61 61 61
++60 60 60 58 58 58 51 51 51 68 68 68 68 68 68 42 42 42 33 33 33 36 36 36
++39 39 39 45 45 45 67 67 67 70 70 70 43 43 43 31 31 31 37 37 37 33 33 33
++39 39 39 33 33 33 31 31 31 43 43 43 60 60 60 71 71 71 70 70 70 63 63 63
++52 52 52 73 73 73 69 69 69 67 67 67 54 54 54 51 51 51 34 34 34 29 29 29
++29 29 29 25 25 25 21 21 21 21 21 21 24 24 24 25 25 25 23 23 23 19 19 19
++32 32 32 49 49 49 58 58 58 48 48 48 28 28 28 17 17 17 17 17 17 21 21 21
++19 19 19 10 10 10 11 11 11 19 19 19 44 44 44 60 60 60 50 50 50 52 52 52
++53 53 53 60 60 60 59 59 59 54 54 54 53 53 53 50 50 50 50 50 50 60 60 60
++61 61 61 54 54 54 49 49 49 50 50 50 56 56 56 59 59 59 56 56 56 51 51 51
++46 46 46 46 46 46 51 51 51 57 57 57 51 51 51 32 32 32 8 8 8 0 0 0
++16 16 16 56 56 56 50 50 50 4 4 4 0 0 0 8 8 8 13 13 13 57 57 57
++49 49 49 38 38 38 23 23 23 48 48 48 32 32 32 52 52 52 32 32 32 13 13 13
++16 16 16 17 17 17 40 40 40 46 46 46 34 34 34 32 32 32 33 33 33 39 39 39
++54 54 54 42 42 42 31 31 31 29 29 29 29 29 29 28 28 28 27 27 27 29 29 29
++32 32 32 32 32 32 42 42 42 45 45 45 33 33 33 31 31 31 44 44 44 53 53 53
++28 28 28 40 40 40 45 45 45 25 25 25 10 10 10 0 0 0 4 4 4 50 50 50
++24 24 24 0 0 0 23 23 23 36 36 36 42 42 42 0 0 0 37 37 37 51 51 51
++28 28 28 32 32 32 34 34 34 6 6 6 0 0 0 3 3 3 0 0 0 23 23 23
++36 36 36 33 33 33 10 10 10 3 3 3 0 0 0 0 0 0 28 28 28 51 51 51
++28 28 28 0 0 0 57 57 57 13 13 13 44 44 44 29 29 29 0 0 0 40 40 40
++25 25 25 6 6 6 6 6 6 3 3 3 0 0 0 4 4 4 3 3 3 6 6 6
++11 11 11 0 0 0 11 11 11 44 44 44 54 54 54 44 44 44 39 39 39 45 45 45
++45 45 45 52 52 52 44 44 44 0 0 0 10 10 10 31 31 31 6 6 6 20 20 20
++16 16 16 10 10 10 13 13 13 14 14 14 13 13 13 28 28 28 40 40 40 36 36 36
++11 11 11 4 4 4 0 0 0 10 10 10 17 17 17 6 6 6 6 6 6 29 29 29
++49 49 49 50 50 50 21 21 21 24 24 24 44 44 44 43 43 43 43 43 43 44 44 44
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 6 6 6 10 10 10 13 13 13 14 14 14
++21 21 21 21 21 21 21 21 21 20 20 20 19 19 19 17 17 17 16 16 16 14 14 14
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++16 16 16 16 16 16 17 17 17 20 20 20 17 17 17 14 14 14 21 21 21 29 29 29
++46 46 46 39 39 39 17 17 17 14 14 14 27 27 27 16 16 16 8 8 8 32 32 32
++49 49 49 40 40 40 27 27 27 20 20 20 21 21 21 16 16 16 14 14 14 25 25 25
++46 46 46 42 42 42 27 27 27 16 16 16 17 17 17 20 20 20 23 23 23 32 32 32
++54 54 54 45 45 45 27 27 27 17 17 17 23 23 23 23 23 23 19 19 19 20 20 20
++38 38 38 57 57 57 37 37 37 10 10 10 23 23 23 23 23 23 13 13 13 27 27 27
++46 46 46 54 54 54 42 42 42 13 13 13 0 0 0 3 3 3 4 4 4 4 4 4
++43 43 43 50 50 50 38 38 38 11 11 11 0 0 0 3 3 3 3 3 3 0 0 0
++21 21 21 59 59 59 45 45 45 16 16 16 10 10 10 0 0 0 3 3 3 8 8 8
++27 27 27 57 57 57 42 42 42 10 10 10 13 13 13 10 10 10 0 0 0 11 11 11
++20 20 20 45 45 45 51 51 51 23 23 23 0 0 0 11 11 11 20 20 20 4 4 4
++27 27 27 44 44 44 54 54 54 32 32 32 0 0 0 8 8 8 21 21 21 8 8 8
++13 13 13 46 46 46 49 49 49 38 38 38 28 28 28 23 23 23 25 25 25 17 17 17
++20 20 20 46 46 46 51 51 51 37 37 37 16 16 16 14 14 14 28 28 28 17 17 17
++20 20 20 23 23 23 24 24 24 21 21 21 21 21 21 25 25 25 28 28 28 27 27 27
++27 27 27 45 45 45 51 51 51 38 38 38 25 25 25 25 25 25 31 31 31 36 36 36
++25 25 25 37 37 37 50 50 50 51 51 51 39 39 39 32 32 32 37 37 37 42 42 42
++38 38 38 38 38 38 44 44 44 54 54 54 53 53 53 44 44 44 37 37 37 37 37 37
++43 43 43 38 38 38 42 42 42 54 54 54 62 62 62 56 56 56 45 45 45 39 39 39
++45 45 45 51 51 51 38 38 38 48 48 48 61 61 61 77 77 77 69 69 69 43 43 43
++46 46 46 34 34 34 68 68 68 83 83 83 58 58 58 69 69 69 85 85 85 56 56 56
++66 66 66 77 77 77 67 67 67 51 51 51 39 39 39 54 54 54 85 85 85 84 84 84
++89 89 89 61 61 61 50 50 50 68 68 68 69 69 69 83 83 83 78 78 78 70 70 70
++87 87 87 87 87 87 87 87 87 83 83 83 74 74 74 67 67 67 62 62 62 58 58 58
++75 75 75 75 75 75 67 67 67 69 69 69 60 60 60 65 65 65 89 89 89 82 82 82
++70 70 70 57 57 57 39 39 39 44 44 44 54 54 54 61 61 61 69 69 69 70 70 70
++77 77 77 76 76 76 72 72 72 67 67 67 63 63 63 61 61 61 60 60 60 60 60 60
++63 63 63 59 59 59 50 50 50 63 63 63 68 68 68 50 50 50 44 44 44 45 45 45
++36 36 36 32 32 32 46 46 46 66 66 66 62 62 62 46 46 46 39 39 39 40 40 40
++37 37 37 33 33 33 31 31 31 32 32 32 42 42 42 53 53 53 65 65 65 71 71 71
++54 54 54 62 62 62 51 51 51 48 48 48 45 45 45 59 59 59 63 63 63 72 72 72
++52 52 52 44 44 44 33 33 33 24 24 24 20 20 20 21 21 21 23 23 23 23 23 23
++8 8 8 24 24 24 40 40 40 52 52 52 53 53 53 45 45 45 28 28 28 13 13 13
++27 27 27 39 39 39 53 53 53 52 52 52 56 56 56 59 59 59 52 52 52 59 59 59
++50 50 50 58 58 58 59 59 59 56 56 56 56 56 56 53 53 53 52 52 52 58 58 58
++56 56 56 52 52 52 50 50 50 49 49 49 50 50 50 51 51 51 52 52 52 51 51 51
++49 49 49 48 48 48 49 49 49 53 53 53 52 52 52 43 43 43 27 27 27 16 16 16
++44 44 44 58 58 58 54 54 54 25 25 25 13 13 13 6 6 6 0 0 0 23 23 23
++56 56 56 57 57 57 52 52 52 57 57 57 39 39 39 56 56 56 53 53 53 50 50 50
++48 48 48 38 38 38 43 43 43 45 45 45 45 45 45 40 40 40 37 37 37 52 52 52
++39 39 39 36 36 36 29 29 29 25 25 25 25 25 25 27 27 27 28 28 28 28 28 28
++43 43 43 42 42 42 49 49 49 51 51 51 46 46 46 48 48 48 51 51 51 49 49 49
++51 51 51 59 59 59 57 57 57 32 32 32 20 20 20 19 19 19 11 11 11 27 27 27
++37 37 37 19 19 19 36 36 36 31 31 31 31 31 31 17 17 17 42 42 42 45 45 45
++28 28 28 28 28 28 36 36 36 17 17 17 11 11 11 14 14 14 6 6 6 28 28 28
++38 38 38 32 32 32 6 6 6 3 3 3 10 10 10 10 10 10 29 29 29 43 43 43
++25 25 25 10 10 10 50 50 50 19 19 19 31 31 31 33 33 33 31 31 31 42 42 42
++21 21 21 8 8 8 16 16 16 14 14 14 11 11 11 14 14 14 10 10 10 8 8 8
++8 8 8 17 17 17 24 24 24 32 32 32 44 44 44 48 48 48 40 40 40 31 31 31
++21 21 21 29 29 29 38 38 38 28 28 28 20 20 20 28 28 28 23 23 23 10 10 10
++11 11 11 17 17 17 11 11 11 6 6 6 21 21 21 37 37 37 36 36 36 25 25 25
++16 16 16 8 8 8 8 8 8 20 20 20 29 29 29 24 24 24 21 21 21 31 31 31
++36 36 36 40 40 40 29 29 29 24 24 24 32 32 32 40 40 40 43 43 43 36 36 36
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 8 8 8 13 13 13 17 17 17 20 20 20 21 21 21
++19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 21 21 21 23 23 23 24 24 24
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++16 16 16 16 16 16 19 19 19 20 20 20 19 19 19 14 14 14 16 16 16 20 20 20
++29 29 29 48 48 48 37 37 37 14 14 14 20 20 20 24 24 24 16 16 16 17 17 17
++27 27 27 46 46 46 44 44 44 23 23 23 16 16 16 24 24 24 23 23 23 11 11 11
++27 27 27 49 49 49 48 48 48 21 21 21 10 10 10 17 17 17 19 19 19 11 11 11
++23 23 23 48 48 48 50 50 50 25 25 25 13 13 13 17 17 17 17 17 17 10 10 10
++19 19 19 43 43 43 50 50 50 31 31 31 14 14 14 17 17 17 19 19 19 11 11 11
++21 21 21 46 46 46 53 53 53 36 36 36 19 19 19 10 10 10 0 0 0 0 0 0
++10 10 10 38 38 38 57 57 57 42 42 42 8 8 8 0 0 0 3 3 3 0 0 0
++0 0 0 36 36 36 57 57 57 45 45 45 13 13 13 0 0 0 11 11 11 8 8 8
++0 0 0 36 36 36 54 54 54 42 42 42 16 16 16 0 0 0 4 4 4 11 11 11
++0 0 0 24 24 24 49 49 49 49 49 49 24 24 24 4 4 4 10 10 10 14 14 14
++10 10 10 20 20 20 45 45 45 52 52 52 28 28 28 8 8 8 14 14 14 19 19 19
++11 11 11 29 29 29 42 42 42 56 56 56 49 49 49 23 23 23 14 14 14 19 19 19
++16 16 16 24 24 24 40 40 40 53 53 53 38 38 38 16 16 16 21 21 21 27 27 27
++17 17 17 23 23 23 28 28 28 29 29 29 28 28 28 28 28 28 28 28 28 29 29 29
++42 42 42 48 48 48 37 37 37 25 25 25 32 32 32 33 33 33 29 29 29 33 33 33
++31 31 31 50 50 50 54 54 54 42 42 42 33 33 33 36 36 36 39 39 39 42 42 42
++32 32 32 49 49 49 61 61 61 57 57 57 44 44 44 36 36 36 39 39 39 46 46 46
++42 42 42 44 44 44 54 54 54 65 65 65 61 61 61 48 48 48 42 42 42 45 45 45
++48 48 48 39 39 39 52 52 52 49 49 49 75 75 75 58 58 58 75 75 75 69 69 69
++43 43 43 53 53 53 45 45 45 58 58 58 90 90 90 82 82 82 49 49 49 42 42 42
++48 48 48 65 65 65 77 77 77 72 72 72 62 62 62 67 67 67 72 72 72 66 66 66
++81 81 81 84 84 84 67 67 67 68 68 68 70 70 70 82 82 82 84 84 84 92 92 92
++78 78 78 65 65 65 73 73 73 90 90 90 87 87 87 77 77 77 65 65 65 44 44 44
++50 50 50 70 70 70 80 80 80 76 76 76 52 52 52 50 50 50 83 83 83 93 93 93
++87 87 87 62 62 62 54 54 54 60 60 60 76 76 76 87 87 87 81 81 81 85 85 85
++84 84 84 84 84 84 76 76 76 66 66 66 62 62 62 67 67 67 68 68 68 65 65 65
++67 67 67 65 65 65 60 60 60 71 71 71 82 82 82 75 75 75 72 72 72 73 73 73
++82 82 82 74 74 74 69 69 69 76 76 76 82 82 82 67 67 67 52 52 52 56 56 56
++40 40 40 43 43 43 44 44 44 40 40 40 37 37 37 38 38 38 43 43 43 48 48 48
++63 63 63 62 62 62 51 51 51 43 43 43 38 38 38 44 44 44 43 43 43 50 50 50
++61 61 61 57 57 57 50 50 50 44 44 44 40 40 40 38 38 38 38 38 38 38 38 38
++40 40 40 33 33 33 29 29 29 36 36 36 46 46 46 51 51 51 48 48 48 43 43 43
++46 46 46 52 52 52 57 57 57 50 50 50 48 48 48 46 46 46 37 37 37 38 38 38
++44 44 44 52 52 52 51 51 51 45 45 45 43 43 43 42 42 42 37 37 37 34 34 34
++39 39 39 40 40 40 42 42 42 39 39 39 36 36 36 36 36 36 38 38 38 42 42 42
++40 40 40 38 38 38 36 36 36 37 37 37 42 42 42 42 42 42 34 34 34 24 24 24
++32 32 32 29 29 29 39 39 39 34 34 34 23 23 23 24 24 24 28 28 28 34 34 34
++36 36 36 39 39 39 39 39 39 34 34 34 25 25 25 33 33 33 34 34 34 29 29 29
++32 32 32 25 25 25 24 24 24 28 28 28 38 38 38 29 29 29 14 14 14 31 31 31
++31 31 31 32 32 32 32 32 32 29 29 29 28 28 28 28 28 28 28 28 28 27 27 27
++24 24 24 29 29 29 37 37 37 38 38 38 32 32 32 31 31 31 32 32 32 29 29 29
++24 24 24 28 28 28 31 31 31 20 20 20 20 20 20 28 28 28 25 25 25 28 28 28
++44 44 44 32 32 32 36 36 36 25 25 25 21 21 21 23 23 23 32 32 32 29 29 29
++29 29 29 25 25 25 34 34 34 25 25 25 24 24 24 31 31 31 25 25 25 42 42 42
++33 33 33 36 36 36 25 25 25 28 28 28 33 33 33 25 25 25 23 23 23 23 23 23
++32 32 32 16 16 16 27 27 27 24 24 24 29 29 29 42 42 42 43 43 43 28 28 28
++31 31 31 24 24 24 33 33 33 31 31 31 28 28 28 33 33 33 29 29 29 25 25 25
++24 24 24 31 31 31 28 28 28 29 29 29 39 39 39 38 38 38 31 31 31 33 33 33
++21 21 21 29 29 29 32 32 32 36 36 36 28 28 28 25 25 25 27 27 27 3 3 3
++8 8 8 17 17 17 14 14 14 17 17 17 33 33 33 33 33 33 21 21 21 20 20 20
++23 23 23 13 13 13 13 13 13 23 23 23 29 29 29 32 32 32 33 33 33 31 31 31
++32 32 32 27 27 27 31 31 31 31 31 31 33 33 33 42 42 42 38 38 38 28 28 28
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++6 6 6 8 8 8 11 11 11 16 16 16 17 17 17 19 19 19 19 19 19 19 19 19
++20 20 20 19 19 19 19 19 19 17 17 17 17 17 17 19 19 19 19 19 19 20 20 20
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 19 19 19 17 17 17 17 17 17
++8 8 8 32 32 32 49 49 49 37 37 37 14 14 14 21 21 21 29 29 29 17 17 17
++11 11 11 37 37 37 49 49 49 37 37 37 20 20 20 13 13 13 11 11 11 10 10 10
++0 0 0 24 24 24 43 43 43 42 42 42 24 24 24 3 3 3 0 0 0 6 6 6
++0 0 0 21 21 21 44 44 44 42 42 42 21 21 21 0 0 0 0 0 0 17 17 17
++4 4 4 6 6 6 36 36 36 50 50 50 25 25 25 3 3 3 6 6 6 6 6 6
++0 0 0 16 16 16 38 38 38 53 53 53 44 44 44 16 16 16 0 0 0 10 10 10
++0 0 0 11 11 11 42 42 42 57 57 57 38 38 38 8 8 8 0 0 0 8 8 8
++10 10 10 0 0 0 33 33 33 63 63 63 39 39 39 8 8 8 8 8 8 8 8 8
++11 11 11 3 3 3 33 33 33 54 54 54 37 37 37 13 13 13 10 10 10 8 8 8
++10 10 10 3 3 3 17 17 17 49 49 49 58 58 58 23 23 23 0 0 0 20 20 20
++17 17 17 11 11 11 17 17 17 44 44 44 56 56 56 29 29 29 4 4 4 17 17 17
++21 21 21 4 4 4 16 16 16 51 51 51 62 62 62 39 39 39 20 20 20 19 19 19
++20 20 20 19 19 19 20 20 20 42 42 42 58 58 58 39 39 39 20 20 20 27 27 27
++29 29 29 27 27 27 28 28 28 33 33 33 32 32 32 27 27 27 32 32 32 42 42 42
++48 48 48 36 36 36 25 25 25 32 32 32 40 40 40 34 34 34 29 29 29 39 39 39
++49 49 49 53 53 53 43 43 43 33 33 33 39 39 39 44 44 44 39 39 39 37 37 37
++45 45 45 61 61 61 62 62 62 44 44 44 33 33 33 40 40 40 46 46 46 44 44 44
++43 43 43 58 58 58 66 66 66 57 57 57 46 46 46 45 45 45 49 49 49 50 50 50
++43 43 43 57 57 57 58 58 58 81 81 81 54 54 54 54 54 54 53 53 53 78 78 78
++70 70 70 49 49 49 49 49 49 69 69 69 82 82 82 84 84 84 72 72 72 53 53 53
++57 57 57 46 46 46 63 63 63 80 80 80 83 83 83 76 76 76 59 59 59 52 52 52
++67 67 67 94 94 94 84 84 84 76 76 76 72 72 72 76 76 76 77 77 77 91 91 91
++74 74 74 48 48 48 61 61 61 91 91 91 92 92 92 83 83 83 72 72 72 52 52 52
++62 62 62 72 72 72 80 80 80 82 82 82 65 65 65 56 56 56 76 76 76 85 85 85
++89 89 89 83 83 83 85 85 85 83 83 83 87 87 87 92 92 92 85 85 85 83 83 83
++85 85 85 84 84 84 77 77 77 69 69 69 66 66 66 66 66 66 63 63 63 60 60 60
++61 61 61 62 62 62 60 60 60 63 63 63 69 69 69 63 63 63 59 59 59 61 61 61
++60 60 60 61 61 61 58 58 58 56 56 56 60 60 60 60 60 60 57 57 57 57 57 57
++53 53 53 57 57 57 59 59 59 59 59 59 57 57 57 54 54 54 54 54 54 57 57 57
++51 51 51 49 49 49 50 50 50 50 50 50 50 50 50 52 52 52 48 48 48 53 53 53
++48 48 48 49 49 49 49 49 49 49 49 49 48 48 48 45 45 45 44 44 44 43 43 43
++48 48 48 44 44 44 42 42 42 44 44 44 45 45 45 44 44 44 44 44 44 44 44 44
++43 43 43 36 36 36 32 32 32 37 37 37 42 42 42 42 42 42 37 37 37 37 37 37
++33 33 33 38 38 38 38 38 38 33 33 33 34 34 34 39 39 39 38 38 38 34 34 34
++32 32 32 34 34 34 37 37 37 36 36 36 33 33 33 31 31 31 32 32 32 33 33 33
++31 31 31 33 33 33 31 31 31 28 28 28 31 31 31 36 36 36 36 36 36 29 29 29
++36 36 36 24 24 24 28 28 28 32 32 32 28 28 28 34 34 34 36 36 36 24 24 24
++32 32 32 28 28 28 32 32 32 31 31 31 34 34 34 29 29 29 31 31 31 25 25 25
++24 24 24 28 28 28 31 31 31 21 21 21 27 27 27 33 33 33 28 28 28 33 33 33
++25 25 25 23 23 23 23 23 23 27 27 27 29 29 29 29 29 29 29 29 29 29 29 29
++27 27 27 28 28 28 32 32 32 34 34 34 31 31 31 24 24 24 21 21 21 21 21 21
++32 32 32 27 27 27 31 31 31 33 33 33 28 28 28 24 24 24 29 29 29 39 39 39
++36 36 36 37 37 37 21 21 21 25 25 25 34 34 34 21 21 21 25 25 25 32 32 32
++32 32 32 25 25 25 32 32 32 20 20 20 23 23 23 36 36 36 32 32 32 43 43 43
++25 25 25 32 32 32 31 31 31 31 31 31 32 32 32 27 27 27 28 28 28 34 34 34
++34 34 34 28 28 28 23 23 23 38 38 38 39 39 39 45 45 45 27 27 27 27 27 27
++25 25 25 17 17 17 24 24 24 19 19 19 14 14 14 23 23 23 21 21 21 20 20 20
++28 28 28 23 23 23 23 23 23 42 42 42 49 49 49 21 21 21 11 11 11 42 42 42
++33 33 33 38 38 38 25 25 25 17 17 17 29 29 29 38 38 38 38 38 38 36 36 36
++17 17 17 14 14 14 20 20 20 36 36 36 38 38 38 16 16 16 4 4 4 21 21 21
++24 24 24 14 14 14 14 14 14 16 16 16 14 14 14 23 23 23 31 31 31 25 25 25
++39 39 39 19 19 19 27 27 27 39 39 39 49 49 49 45 45 45 24 24 24 24 24 24
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 6 6 6
++16 16 16 17 17 17 19 19 19 19 19 19 19 19 19 17 17 17 16 16 16 16 16 16
++19 19 19 19 19 19 20 20 20 20 20 20 19 19 19 19 19 19 17 17 17 16 16 16
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++19 19 19 19 19 19 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19 17 17 17
++19 19 19 10 10 10 32 32 32 51 51 51 36 36 36 16 16 16 17 17 17 23 23 23
++21 21 21 11 11 11 24 24 24 48 48 48 43 43 43 16 16 16 4 4 4 20 20 20
++8 8 8 0 0 0 16 16 16 46 46 46 44 44 44 11 11 11 0 0 0 0 0 0
++8 8 8 0 0 0 6 6 6 40 40 40 44 44 44 14 14 14 0 0 0 0 0 0
++0 0 0 3 3 3 13 13 13 34 34 34 46 46 46 20 20 20 0 0 0 0 0 0
++0 0 0 0 0 0 17 17 17 45 45 45 52 52 52 36 36 36 13 13 13 0 0 0
++8 8 8 0 0 0 8 8 8 38 38 38 57 57 57 42 42 42 11 11 11 0 0 0
++10 10 10 4 4 4 14 14 14 39 39 39 56 56 56 37 37 37 6 6 6 6 6 6
++20 20 20 10 10 10 0 0 0 24 24 24 56 56 56 48 48 48 14 14 14 3 3 3
++8 8 8 11 11 11 10 10 10 23 23 23 48 48 48 49 49 49 27 27 27 6 6 6
++14 14 14 21 21 21 16 16 16 20 20 20 45 45 45 51 51 51 29 29 29 6 6 6
++19 19 19 16 16 16 17 17 17 24 24 24 43 43 43 56 56 56 40 40 40 11 11 11
++19 19 19 29 29 29 25 25 25 21 21 21 44 44 44 57 57 57 39 39 39 19 19 19
++34 34 34 29 29 29 25 25 25 23 23 23 25 25 25 32 32 32 43 43 43 51 51 51
++39 39 39 28 28 28 33 33 33 40 40 40 34 34 34 29 29 29 40 40 40 52 52 52
++54 54 54 46 46 46 33 33 33 34 34 34 45 45 45 43 43 43 39 39 39 49 49 49
++68 68 68 61 61 61 48 48 48 36 36 36 39 39 39 49 49 49 46 46 46 37 37 37
++57 57 57 66 66 66 62 62 62 46 46 46 40 40 40 50 50 50 53 53 53 46 46 46
++45 45 45 59 59 59 80 80 80 52 52 52 54 54 54 43 43 43 59 59 59 54 54 54
++85 85 85 66 66 66 81 81 81 82 82 82 52 52 52 67 67 67 89 89 89 68 68 68
++66 66 66 44 44 44 61 61 61 82 82 82 88 88 88 80 80 80 57 57 57 54 54 54
++74 74 74 84 84 84 93 93 93 94 94 94 68 68 68 76 76 76 81 81 81 69 69 69
++85 85 85 75 75 75 68 68 68 78 78 78 92 92 92 91 91 91 81 81 81 76 76 76
++82 82 82 65 65 65 56 56 56 72 72 72 80 80 80 78 78 78 84 84 84 85 85 85
++85 85 85 92 92 92 92 92 92 90 90 90 81 81 81 70 70 70 69 69 69 63 63 63
++56 56 56 54 54 54 58 58 58 66 66 66 71 71 71 70 70 70 69 69 69 70 70 70
++70 70 70 71 71 71 69 69 69 65 65 65 63 63 63 61 61 61 61 61 61 69 69 69
++65 65 65 66 66 66 68 68 68 66 66 66 61 61 61 63 63 63 63 63 63 58 58 58
++65 65 65 65 65 65 63 63 63 59 59 59 56 56 56 56 56 56 60 60 60 65 65 65
++59 59 59 53 53 53 59 59 59 53 53 53 51 51 51 51 51 51 48 48 48 52 52 52
++53 53 53 54 54 54 54 54 54 54 54 54 54 54 54 56 56 56 57 57 57 58 58 58
++46 46 46 50 50 50 52 52 52 51 51 51 45 45 45 43 43 43 44 44 44 49 49 49
++53 53 53 46 46 46 49 49 49 56 56 56 48 48 48 29 29 29 28 28 28 37 37 37
++45 45 45 45 45 45 45 45 45 42 42 42 43 43 43 49 49 49 52 52 52 49 49 49
++44 44 44 44 44 44 45 45 45 46 46 46 48 48 48 46 46 46 43 43 43 39 39 39
++38 38 38 44 44 44 46 46 46 40 40 40 38 38 38 42 42 42 43 43 43 43 43 43
++50 50 50 36 36 36 19 19 19 16 16 16 25 25 25 38 38 38 37 37 37 17 17 17
++40 40 40 28 28 28 33 33 33 39 39 39 34 34 34 11 11 11 10 10 10 14 14 14
++25 25 25 37 37 37 40 40 40 11 11 11 0 0 0 33 33 33 48 48 48 43 43 43
++29 29 29 14 14 14 4 4 4 14 14 14 25 25 25 29 29 29 34 34 34 42 42 42
++49 49 49 43 43 43 42 42 42 48 48 48 45 45 45 31 31 31 17 17 17 14 14 14
++4 4 4 0 0 0 4 4 4 13 13 13 10 10 10 8 8 8 21 21 21 32 32 32
++19 19 19 44 44 44 13 13 13 21 21 21 50 50 50 24 24 24 38 38 38 51 51 51
++49 49 49 43 43 43 45 45 45 25 25 25 19 19 19 29 29 29 16 16 16 11 11 11
++29 29 29 24 24 24 8 8 8 0 0 0 0 0 0 0 0 0 17 17 17 39 39 39
++21 21 21 46 46 46 46 46 46 43 43 43 37 37 37 42 42 42 4 4 4 45 45 45
++14 14 14 0 0 0 6 6 6 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 14 14 14 38 38 38 43 43 43 11 11 11 0 0 0 36 36 36
++49 49 49 42 42 42 42 42 42 19 19 19 23 23 23 46 46 46 45 45 45 53 53 53
++37 37 37 21 21 21 27 27 27 38 38 38 25 25 25 4 4 4 6 6 6 19 19 19
++20 20 20 16 16 16 19 19 19 14 14 14 3 3 3 10 10 10 20 20 20 16 16 16
++36 36 36 27 27 27 29 29 29 38 38 38 52 52 52 42 42 42 10 10 10 19 19 19
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6 10 10 10 11 11 11
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17
++17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 16 16 16 16 16 16
++14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++10 10 10 11 11 11 10 10 10 6 6 6 8 8 8 11 11 11 13 13 13 10 10 10
++19 19 19 6 6 6 4 4 4 28 28 28 45 45 45 34 34 34 17 17 17 17 17 17
++24 24 24 6 6 6 8 8 8 32 32 32 46 46 46 46 46 46 32 32 32 16 16 16
++20 20 20 10 10 10 6 6 6 19 19 19 37 37 37 44 44 44 25 25 25 0 0 0
++6 6 6 0 0 0 0 0 0 14 14 14 36 36 36 46 46 46 28 28 28 0 0 0
++0 0 0 0 0 0 0 0 0 14 14 14 36 36 36 45 45 45 28 28 28 0 0 0
++0 0 0 0 0 0 0 0 0 17 17 17 40 40 40 57 57 57 39 39 39 0 0 0
++0 0 0 3 3 3 0 0 0 8 8 8 42 42 42 57 57 57 38 38 38 10 10 10
++0 0 0 8 8 8 20 20 20 13 13 13 27 27 27 56 56 56 45 45 45 10 10 10
++8 8 8 8 8 8 0 0 0 0 0 0 32 32 32 56 56 56 48 48 48 19 19 19
++0 0 0 10 10 10 17 17 17 10 10 10 16 16 16 51 51 51 57 57 57 23 23 23
++8 8 8 13 13 13 19 19 19 14 14 14 21 21 21 49 49 49 54 54 54 32 32 32
++13 13 13 20 20 20 25 25 25 11 11 11 21 21 21 52 52 52 52 52 52 34 34 34
++24 24 24 17 17 17 29 29 29 27 27 27 25 25 25 46 46 46 52 52 52 39 39 39
++23 23 23 28 28 28 28 28 28 24 24 24 31 31 31 43 43 43 46 46 46 40 40 40
++36 36 36 32 32 32 37 37 37 36 36 36 29 29 29 42 42 42 56 56 56 52 52 52
++43 43 43 39 39 39 38 38 38 44 44 44 44 44 44 39 39 39 48 48 48 66 66 66
++60 60 60 46 46 46 40 40 40 46 46 46 50 50 50 48 48 48 50 50 50 58 58 58
++71 71 71 61 61 61 51 51 51 48 48 48 51 51 51 53 53 53 51 51 51 48 48 48
++66 66 66 69 69 69 53 53 53 60 60 60 43 43 43 68 68 68 50 50 50 53 53 53
++53 53 53 94 94 94 91 91 91 59 59 59 53 53 53 54 54 54 61 61 61 84 84 84
++68 68 68 66 66 66 80 80 80 81 81 81 76 76 76 78 78 78 72 72 72 73 73 73
++91 91 91 90 90 90 93 93 93 91 91 91 77 77 77 84 84 84 67 67 67 54 54 54
++70 70 70 99 99 99 90 90 90 72 72 72 88 88 88 92 92 92 84 84 84 93 93 93
++82 82 82 56 56 56 45 45 45 69 69 69 92 92 92 96 96 96 92 92 92 88 88 88
++92 92 92 91 91 91 84 84 84 87 87 87 76 76 76 54 54 54 53 53 53 52 52 52
++54 54 54 52 52 52 57 57 57 69 69 69 73 73 73 70 70 70 66 66 66 67 67 67
++69 69 69 66 66 66 62 62 62 53 53 53 53 53 53 56 56 56 60 60 60 75 75 75
++62 62 62 48 48 48 44 44 44 49 49 49 44 44 44 42 42 42 44 44 44 44 44 44
++53 53 53 61 61 61 68 68 68 66 66 66 54 54 54 43 43 43 38 38 38 37 37 37
++61 61 61 59 59 59 76 76 76 66 66 66 57 57 57 49 49 49 37 37 37 34 34 34
++48 48 48 48 48 48 50 50 50 52 52 52 54 54 54 56 56 56 56 56 56 54 54 54
++67 67 67 69 69 69 68 68 68 65 65 65 65 65 65 68 68 68 67 67 67 63 63 63
++59 59 59 50 50 50 50 50 50 59 59 59 48 48 48 28 28 28 31 31 31 38 38 38
++56 56 56 52 52 52 52 52 52 53 53 53 52 52 52 54 54 54 57 57 57 54 54 54
++56 56 56 53 53 53 52 52 52 54 54 54 58 58 58 58 58 58 53 53 53 49 49 49
++49 49 49 54 54 54 58 58 58 56 56 56 51 51 51 49 49 49 50 50 50 50 50 50
++52 52 52 49 49 49 28 28 28 6 6 6 0 0 0 21 21 21 46 46 46 52 52 52
++52 52 52 25 25 25 31 31 31 56 56 56 48 48 48 28 28 28 8 8 8 0 0 0
++0 0 0 21 21 21 40 40 40 20 20 20 6 6 6 33 33 33 36 36 36 13 13 13
++44 44 44 28 28 28 14 14 14 16 16 16 24 24 24 32 32 32 42 42 42 51 51 51
++45 45 45 51 51 51 54 54 54 49 49 49 33 33 33 6 6 6 0 0 0 4 4 4
++0 0 0 8 8 8 0 0 0 0 0 0 6 6 6 16 16 16 20 20 20 13 13 13
++6 6 6 48 48 48 23 23 23 10 10 10 48 48 48 13 13 13 36 36 36 52 52 52
++49 49 49 43 43 43 52 52 52 42 42 42 37 37 37 44 44 44 27 27 27 19 19 19
++32 32 32 24 24 24 19 19 19 14 14 14 19 19 19 20 20 20 24 24 24 44 44 44
++14 14 14 50 50 50 52 52 52 25 25 25 21 21 21 43 43 43 3 3 3 43 43 43
++21 21 21 3 3 3 4 4 4 4 4 4 0 0 0 3 3 3 0 0 0 0 0 0
++4 4 4 28 28 28 34 34 34 29 29 29 34 34 34 38 38 38 40 40 40 50 50 50
++54 54 54 33 33 33 58 58 58 45 45 45 23 23 23 45 45 45 50 50 50 50 50 50
++50 50 50 38 38 38 33 33 33 24 24 24 8 8 8 13 13 13 20 20 20 11 11 11
++14 14 14 19 19 19 24 24 24 21 21 21 11 11 11 8 8 8 11 11 11 11 11 11
++21 21 21 38 38 38 37 37 37 28 28 28 37 37 37 29 29 29 4 4 4 10 10 10
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 3 3 3 6 6 6 10 10 10 14 14 14 17 17 17
++19 19 19 17 17 17 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19
++21 21 21 20 20 20 16 16 16 11 11 11 8 8 8 4 4 4 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 6 6 6 6 6 6 0 0 0 0 0 0 3 3 3 4 4 4 0 0 0
++3 3 3 8 8 8 0 0 0 0 0 0 23 23 23 40 40 40 34 34 34 19 19 19
++20 20 20 23 23 23 21 21 21 16 16 16 27 27 27 49 49 49 44 44 44 14 14 14
++20 20 20 24 24 24 19 19 19 0 0 0 14 14 14 46 46 46 44 44 44 8 8 8
++0 0 0 6 6 6 8 8 8 0 0 0 8 8 8 44 44 44 49 49 49 23 23 23
++6 6 6 0 0 0 0 0 0 4 4 4 4 4 4 40 40 40 54 54 54 23 23 23
++6 6 6 0 0 0 0 0 0 3 3 3 25 25 25 50 50 50 51 51 51 29 29 29
++0 0 0 3 3 3 3 3 3 0 0 0 11 11 11 38 38 38 50 50 50 43 43 43
++11 11 11 0 0 0 23 23 23 13 13 13 0 0 0 40 40 40 59 59 59 36 36 36
++14 14 14 0 0 0 14 14 14 13 13 13 0 0 0 31 31 31 58 58 58 45 45 45
++23 23 23 6 6 6 11 11 11 14 14 14 6 6 6 27 27 27 50 50 50 50 50 50
++27 27 27 10 10 10 13 13 13 20 20 20 19 19 19 29 29 29 49 49 49 56 56 56
++24 24 24 10 10 10 16 16 16 19 19 19 24 24 24 42 42 42 51 51 51 59 59 59
++43 43 43 11 11 11 24 24 24 34 34 34 25 25 25 29 29 29 43 43 43 56 56 56
++33 33 33 29 29 29 31 31 31 39 39 39 46 46 46 46 46 46 38 38 38 32 32 32
++38 38 38 37 37 37 34 34 34 33 33 33 42 42 42 56 56 56 56 56 56 44 44 44
++39 39 39 40 40 40 44 44 44 45 45 45 43 43 43 50 50 50 60 60 60 63 63 63
++43 43 43 42 42 42 46 46 46 53 53 53 51 51 51 48 48 48 59 59 59 75 75 75
++66 66 66 53 53 53 48 48 48 53 53 53 57 57 57 53 53 53 57 57 57 66 66 66
++87 87 87 62 62 62 58 58 58 56 56 56 62 62 62 57 57 57 52 52 52 60 60 60
++73 73 73 89 89 89 90 90 90 75 75 75 63 63 63 52 52 52 53 53 53 67 67 67
++87 87 87 88 88 88 85 85 85 65 65 65 54 54 54 74 74 74 92 92 92 96 97 98
++92 92 92 89 89 89 88 88 88 84 84 84 87 87 87 91 91 91 56 56 56 62 62 62
++66 66 66 88 88 88 93 93 93 83 83 83 83 83 83 91 91 91 89 89 89 84 84 84
++90 90 90 81 81 81 78 78 78 84 84 84 90 90 90 89 89 89 85 85 85 87 87 87
++99 99 99 90 90 90 88 88 88 84 84 84 78 78 78 70 70 70 58 58 58 57 57 57
++58 58 58 58 58 58 59 59 59 66 66 66 72 72 72 74 74 74 73 73 73 72 72 72
++77 77 77 68 68 68 60 60 60 51 51 51 51 51 51 52 52 52 49 49 49 65 65 65
++78 78 78 67 67 67 51 51 51 46 46 46 48 48 48 43 43 43 43 43 43 49 49 49
++40 40 40 51 51 51 63 63 63 71 71 71 69 69 69 60 60 60 50 50 50 44 44 44
++34 34 34 42 42 42 75 75 75 68 68 68 65 65 65 65 65 65 61 61 61 61 61 61
++37 37 37 34 34 34 32 32 32 32 32 32 33 33 33 32 32 32 29 29 29 25 25 25
++27 27 27 37 37 37 45 45 45 52 52 52 61 61 61 65 65 65 49 49 49 25 25 25
++27 27 27 21 21 21 24 24 24 45 45 45 53 53 53 52 52 52 59 59 59 53 53 53
++32 32 32 28 28 28 40 40 40 54 54 54 56 56 56 57 57 57 60 60 60 61 61 61
++60 60 60 57 57 57 53 53 53 53 53 53 56 56 56 57 57 57 56 56 56 54 54 54
++51 51 51 52 52 52 54 54 54 58 58 58 57 57 57 52 52 52 49 49 49 49 49 49
++60 60 60 63 63 63 53 53 53 34 34 34 0 0 0 0 0 0 39 39 39 57 57 57
++43 43 43 4 4 4 0 0 0 50 50 50 42 42 42 44 44 44 27 27 27 10 10 10
++0 0 0 11 11 11 36 36 36 42 42 42 48 48 48 49 49 49 23 23 23 0 0 0
++34 34 34 36 36 36 32 32 32 27 27 27 29 29 29 39 39 39 46 46 46 49 49 49
++42 42 42 56 56 56 53 53 53 32 32 32 8 8 8 0 0 0 0 0 0 4 4 4
++0 0 0 10 10 10 0 0 0 0 0 0 19 19 19 19 19 19 13 13 13 0 0 0
++4 4 4 29 29 29 40 40 40 16 16 16 46 46 46 0 0 0 19 19 19 46 46 46
++33 33 33 21 21 21 42 42 42 49 49 49 51 51 51 56 56 56 43 43 43 44 44 44
++27 27 27 29 29 29 45 45 45 56 56 56 57 57 57 48 48 48 40 40 40 60 60 60
++31 31 31 42 42 42 44 44 44 23 23 23 14 14 14 43 43 43 21 21 21 28 28 28
++29 29 29 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0 3 3 3
++21 21 21 27 27 27 16 16 16 0 0 0 0 0 0 21 21 21 31 31 31 31 31 31
++44 44 44 14 14 14 40 40 40 54 54 54 40 40 40 49 49 49 57 57 57 51 51 51
++48 48 48 49 49 49 39 39 39 21 21 21 10 10 10 17 17 17 20 20 20 10 10 10
++13 13 13 17 17 17 20 20 20 21 21 21 20 20 20 14 14 14 11 11 11 16 16 16
++24 24 24 39 39 39 33 33 33 21 21 21 20 20 20 16 16 16 13 13 13 8 8 8
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 4 4 4 8 8 8 13 13 13 17 17 17 20 20 20
++20 20 20 19 19 19 17 17 17 16 16 16 16 16 16 16 16 16 17 17 17 19 19 19
++6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++0 0 0 6 6 6 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 4 4 4 0 0 0 0 0 0 17 17 17 39 39 39 29 29 29
++3 3 3 8 8 8 20 20 20 20 20 20 16 16 16 28 28 28 44 44 44 48 48 48
++20 20 20 13 13 13 19 19 19 23 23 23 11 11 11 11 11 11 33 33 33 51 51 51
++11 11 11 0 0 0 0 0 0 4 4 4 0 0 0 10 10 10 38 38 38 57 57 57
++11 11 11 10 10 10 0 0 0 0 0 0 0 0 0 11 11 11 34 34 34 56 56 56
++21 21 21 0 0 0 3 3 3 16 16 16 16 16 16 21 21 21 43 43 43 59 59 59
++29 29 29 0 0 0 0 0 0 8 8 8 0 0 0 10 10 10 43 43 43 58 58 58
++39 39 39 10 10 10 11 11 11 17 17 17 8 8 8 3 3 3 24 24 24 65 65 65
++40 40 40 19 19 19 3 3 3 11 11 11 13 13 13 3 3 3 27 27 27 62 62 62
++49 49 49 24 24 24 4 4 4 13 13 13 14 14 14 4 4 4 24 24 24 54 54 54
++50 50 50 34 34 34 13 13 13 13 13 13 24 24 24 19 19 19 25 25 25 52 52 52
++59 59 59 28 28 28 21 21 21 24 24 24 25 25 25 33 33 33 33 33 33 40 40 40
++59 59 59 34 34 34 25 25 25 24 24 24 29 29 29 29 29 29 25 25 25 44 44 44
++63 63 63 36 36 36 27 27 27 48 48 48 54 54 54 38 38 38 31 31 31 40 40 40
++33 33 33 39 39 39 39 39 39 43 43 43 54 54 54 52 52 52 43 43 43 45 45 45
++46 46 46 45 45 45 44 44 44 39 39 39 46 46 46 67 67 67 69 69 69 49 49 49
++48 48 48 51 51 51 50 50 50 45 45 45 49 49 49 60 60 60 67 67 67 67 67 67
++51 51 51 50 50 50 52 52 52 56 56 56 52 52 52 52 52 52 68 68 68 88 88 88
++60 60 60 58 58 58 57 57 57 61 61 61 49 49 49 63 63 63 58 58 58 75 75 75
++90 90 90 62 62 62 66 66 66 88 88 88 84 84 84 65 65 65 59 59 59 62 62 62
++93 93 93 91 91 91 81 81 81 63 63 63 58 58 58 78 78 78 96 97 98 96 97 98
++83 83 83 60 60 60 85 85 85 93 93 93 80 80 80 93 93 93 72 72 72 73 73 73
++99 99 99 66 66 66 76 76 76 93 93 93 82 82 82 96 96 96 101 101 101 61 61 61
++88 88 88 96 96 96 96 97 98 82 82 82 66 66 66 63 63 63 74 74 74 88 88 88
++93 93 93 89 89 89 99 99 99 82 82 82 80 80 80 91 91 91 68 68 68 62 62 62
++60 60 60 61 61 61 59 59 59 58 58 58 63 63 63 73 73 73 75 75 75 71 71 71
++73 73 73 59 59 59 54 54 54 51 51 51 57 57 57 56 56 56 45 45 45 57 57 57
++73 73 73 82 82 82 67 67 67 50 50 50 54 54 54 52 52 52 44 44 44 49 49 49
++51 51 51 46 46 46 44 44 44 51 51 51 62 62 62 71 71 71 72 72 72 70 70 70
++53 53 53 51 51 51 72 72 72 46 46 46 36 36 36 43 43 43 52 52 52 60 60 60
++75 75 75 65 65 65 50 50 50 38 38 38 33 33 33 32 32 32 32 32 32 32 32 32
++28 28 28 29 29 29 24 24 24 23 23 23 42 42 42 62 62 62 62 62 62 48 48 48
++25 25 25 33 33 33 40 40 40 58 58 58 62 62 62 60 60 60 58 58 58 36 36 36
++14 14 14 11 11 11 32 32 32 54 54 54 57 57 57 53 53 53 56 56 56 57 57 57
++62 62 62 59 59 59 56 56 56 52 52 52 52 52 52 54 54 54 58 58 58 60 60 60
++53 53 53 48 48 48 49 49 49 56 56 56 60 60 60 56 56 56 49 49 49 46 46 46
++44 44 44 46 46 46 54 54 54 62 62 62 38 38 38 24 24 24 45 45 45 46 46 46
++59 59 59 23 23 23 8 8 8 44 44 44 16 16 16 37 37 37 38 38 38 34 34 34
++6 6 6 0 0 0 0 0 0 24 24 24 49 49 49 42 42 42 6 6 6 0 0 0
++0 0 0 20 20 20 34 34 34 29 29 29 31 31 31 44 44 44 48 48 48 42 42 42
++52 52 52 54 54 54 32 32 32 0 0 0 0 0 0 8 8 8 6 6 6 0 0 0
++0 0 0 8 8 8 0 0 0 13 13 13 31 31 31 13 13 13 0 0 0 0 0 0
++4 4 4 0 0 0 53 53 53 34 34 34 58 58 58 0 0 0 11 11 11 54 54 54
++51 51 51 27 27 27 39 39 39 46 46 46 39 39 39 29 29 29 11 11 11 20 20 20
++31 31 31 31 31 31 46 46 46 48 48 48 34 34 34 13 13 13 10 10 10 44 44 44
++49 49 49 38 38 38 51 51 51 46 46 46 21 21 21 37 37 37 38 38 38 28 28 28
++40 40 40 6 6 6 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 16 16 16
++39 39 39 16 16 16 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 4 4 4
++46 46 46 19 19 19 16 16 16 48 48 48 56 56 56 48 48 48 50 50 50 46 46 46
++38 38 38 50 50 50 46 46 46 32 32 32 24 24 24 14 14 14 8 8 8 16 16 16
++14 14 14 16 16 16 11 11 11 14 14 14 23 23 23 19 19 19 14 14 14 23 23 23
++39 39 39 36 36 36 21 21 21 21 21 21 16 16 16 8 8 8 20 20 20 11 11 11
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 10 10 10 17 17 17 17 17 17 17 17 17 20 20 20
++16 16 16 17 17 17 17 17 17 19 19 19 19 19 19 14 14 14 8 8 8 3 3 3
++0 0 0 4 4 4 8 8 8 13 13 13 16 16 16 19 19 19 21 21 21 21 21 21
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++19 19 19 14 14 14 13 13 13 13 13 13 4 4 4 0 0 0 19 19 19 42 42 42
++23 23 23 8 8 8 0 0 0 8 8 8 21 21 21 16 16 16 21 21 21 44 44 44
++44 44 44 24 24 24 8 8 8 19 19 19 24 24 24 6 6 6 10 10 10 37 37 37
++50 50 50 14 14 14 0 0 0 3 3 3 3 3 3 0 0 0 11 11 11 34 34 34
++56 56 56 17 17 17 0 0 0 3 3 3 6 6 6 0 0 0 13 13 13 33 33 33
++54 54 54 28 28 28 0 0 0 3 3 3 23 23 23 21 21 21 21 21 21 36 36 36
++62 62 62 37 37 37 6 6 6 0 0 0 4 4 4 0 0 0 10 10 10 42 42 42
++62 62 62 48 48 48 23 23 23 8 8 8 8 8 8 4 4 4 10 10 10 28 28 28
++67 67 67 49 49 49 19 19 19 0 0 0 11 11 11 14 14 14 13 13 13 20 20 20
++65 65 65 52 52 52 23 23 23 0 0 0 11 11 11 19 19 19 13 13 13 11 11 11
++54 54 54 51 51 51 25 25 25 11 11 11 29 29 29 29 29 29 17 17 17 21 21 21
++53 53 53 52 52 52 38 38 38 20 20 20 23 23 23 39 39 39 37 37 37 21 21 21
++42 42 42 63 63 63 40 40 40 19 19 19 31 31 31 38 38 38 38 38 38 29 29 29
++44 44 44 59 59 59 56 56 56 57 57 57 42 42 42 33 33 33 36 36 36 34 34 34
++38 38 38 34 34 34 44 44 44 60 60 60 62 62 62 49 49 49 39 39 39 39 39 39
++48 48 48 37 37 37 37 37 37 56 56 56 69 69 69 67 67 67 56 56 56 49 49 49
++49 49 49 52 52 52 51 51 51 50 50 50 61 61 61 73 73 73 68 68 68 51 51 51
++57 57 57 54 54 54 58 58 58 57 57 57 57 57 57 72 72 72 82 82 82 72 72 72
++62 62 62 61 61 61 56 56 56 59 59 59 66 66 66 61 61 61 71 71 71 96 96 96
++59 59 59 68 68 68 62 62 62 65 65 65 94 94 94 90 90 90 66 66 66 87 87 87
++89 89 89 74 74 74 88 88 88 85 85 85 85 85 85 101 101 101 88 88 88 75 75 75
++87 87 87 91 91 91 92 92 92 92 92 92 74 74 74 68 68 68 91 91 91 99 99 99
++72 72 72 69 69 69 61 61 61 81 81 81 99 99 99 99 99 99 101 101 101 96 97 98
++96 96 96 93 93 93 96 97 98 87 87 87 60 60 60 62 62 62 80 80 80 81 81 81
++93 93 93 99 99 99 72 72 72 89 89 89 90 90 90 74 74 74 93 93 93 75 75 75
++60 60 60 65 65 65 66 66 66 58 58 58 60 60 60 62 62 62 67 67 67 89 89 89
++88 88 88 67 67 67 58 58 58 67 67 67 71 71 71 71 71 71 73 73 73 74 74 74
++82 82 82 87 87 87 87 87 87 77 77 77 72 72 72 75 75 75 77 77 77 75 75 75
++76 76 76 73 73 73 68 68 68 63 63 63 59 59 59 59 59 59 67 67 67 76 76 76
++81 81 81 78 78 78 81 81 81 59 59 59 56 56 56 39 39 39 42 42 42 40 40 40
++39 39 39 53 53 53 69 69 69 70 70 70 56 56 56 38 38 38 29 29 29 32 32 32
++28 28 28 29 29 29 31 31 31 27 27 27 24 24 24 32 32 32 52 52 52 70 70 70
++67 67 67 68 68 68 59 59 59 44 44 44 31 31 31 25 25 25 40 40 40 63 63 63
++50 50 50 17 17 17 6 6 6 38 38 38 61 61 61 59 59 59 52 52 52 56 56 56
++57 57 57 58 58 58 58 58 58 56 56 56 51 51 51 51 51 51 54 54 54 59 59 59
++59 59 59 52 52 52 50 50 50 49 49 49 51 51 51 59 59 59 60 60 60 51 51 51
++50 50 50 44 44 44 52 52 52 57 57 57 51 51 51 53 53 53 45 45 45 19 19 19
++8 8 8 50 50 50 32 32 32 21 21 21 42 42 42 19 19 19 10 10 10 56 56 56
++31 31 31 0 0 0 6 6 6 31 31 31 44 44 44 52 52 52 33 33 33 0 0 0
++4 4 4 19 19 19 20 20 20 31 31 31 49 49 49 39 39 39 32 32 32 52 52 52
++54 54 54 31 31 31 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6
++0 0 0 3 3 3 17 17 17 24 24 24 14 14 14 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 28 28 28 57 57 57 50 50 50 13 13 13 13 13 13 50 50 50
++50 50 50 31 31 31 50 50 50 21 21 21 0 0 0 3 3 3 0 0 0 20 20 20
++24 24 24 25 25 25 11 11 11 19 19 19 48 48 48 52 52 52 40 40 40 42 42 42
++38 38 38 19 19 19 33 33 33 46 46 46 51 51 51 54 54 54 50 50 50 53 53 53
++44 44 44 17 17 17 0 0 0 3 3 3 0 0 0 0 0 0 19 19 19 40 40 40
++10 10 10 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++13 13 13 39 39 39 32 32 32 21 21 21 42 42 42 50 50 50 42 42 42 45 45 45
++31 31 31 28 28 28 48 48 48 59 59 59 45 45 45 36 36 36 28 28 28 6 6 6
++17 17 17 17 17 17 13 13 13 14 14 14 19 19 19 19 19 19 27 27 27 42 42 42
++32 32 32 20 20 20 13 13 13 19 19 19 23 23 23 19 19 19 11 11 11 10 10 10
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0
++0 0 0 0 0 0 4 4 4 14 14 14 20 20 20 19 19 19 17 17 17 20 20 20
++14 14 14 19 19 19 20 20 20 16 16 16 10 10 10 6 6 6 8 8 8 11 11 11
++13 13 13 14 14 14 17 17 17 19 19 19 20 20 20 20 20 20 19 19 19 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++21 21 21 19 19 19 20 20 20 23 23 23 19 19 19 11 11 11 14 14 14 23 23 23
++42 42 42 36 36 36 13 13 13 0 0 0 0 0 0 6 6 6 16 16 16 24 24 24
++44 44 44 43 43 43 28 28 28 14 14 14 17 17 17 19 19 19 13 13 13 10 10 10
++33 33 33 49 49 49 23 23 23 0 0 0 0 0 0 3 3 3 0 0 0 11 11 11
++33 33 33 51 51 51 28 28 28 0 0 0 4 4 4 3 3 3 0 0 0 11 11 11
++38 38 38 49 49 49 37 37 37 11 11 11 13 13 13 24 24 24 20 20 20 8 8 8
++40 40 40 53 53 53 42 42 42 8 8 8 0 0 0 8 8 8 11 11 11 4 4 4
++42 42 42 56 56 56 49 49 49 23 23 23 6 6 6 4 4 4 4 4 4 8 8 8
++37 37 37 56 56 56 51 51 51 23 23 23 4 4 4 6 6 6 11 11 11 13 13 13
++24 24 24 49 49 49 51 51 51 27 27 27 8 8 8 8 8 8 16 16 16 21 21 21
++28 28 28 53 53 53 60 60 60 32 32 32 8 8 8 23 23 23 28 28 28 10 10 10
++19 19 19 52 52 52 58 58 58 33 33 33 21 21 21 39 39 39 44 44 44 28 28 28
++29 29 29 49 49 49 53 53 53 45 45 45 27 27 27 21 21 21 34 34 34 28 28 28
++25 25 25 59 59 59 74 74 74 49 49 49 39 39 39 32 32 32 53 53 53 43 43 43
++36 36 36 51 51 51 61 61 61 58 58 58 50 50 50 43 43 43 42 42 42 46 46 46
++45 45 45 46 46 46 57 57 57 69 69 69 67 67 67 52 52 52 46 46 46 51 51 51
++54 54 54 50 50 50 53 53 53 63 63 63 69 69 69 65 65 65 58 58 58 56 56 56
++58 58 58 65 65 65 54 54 54 53 53 53 74 74 74 85 85 85 72 72 72 58 58 58
++63 63 63 58 58 58 65 65 65 65 65 65 60 60 60 81 81 81 90 90 90 70 70 70
++66 66 66 65 65 65 69 69 69 63 63 63 74 74 74 93 93 93 92 92 92 89 89 89
++67 67 67 54 54 54 82 82 82 96 96 96 94 94 94 90 90 90 72 72 72 68 68 68
++89 89 89 91 91 91 90 90 90 89 89 89 83 83 83 85 85 85 99 99 99 103 103 102
++83 83 83 69 69 69 70 70 70 95 95 94 103 103 102 96 96 96 99 99 99 95 95 94
++95 95 94 88 88 88 83 83 83 88 88 88 91 91 91 80 80 80 70 70 70 73 73 73
++80 80 80 99 99 99 91 91 91 72 72 72 82 82 82 87 87 87 77 77 77 87 87 87
++76 76 76 63 63 63 60 60 60 60 60 60 67 67 67 70 70 70 74 74 74 91 91 91
++94 94 94 95 95 94 94 94 94 87 87 87 77 77 77 82 82 82 85 85 85 77 77 77
++74 74 74 62 62 62 66 66 66 85 85 85 87 87 87 69 69 69 58 58 58 62 62 62
++67 67 67 68 68 68 70 70 70 74 74 74 75 75 75 76 76 76 81 81 81 87 87 87
++82 82 82 81 81 81 87 87 87 81 81 81 77 77 77 69 69 69 68 68 68 65 65 65
++63 63 63 53 53 53 52 52 52 68 68 68 78 78 78 71 71 71 56 56 56 44 44 44
++45 45 45 48 48 48 51 51 51 56 56 56 63 63 63 70 70 70 66 66 66 58 58 58
++44 44 44 65 65 65 65 65 65 39 39 39 20 20 20 17 17 17 24 24 24 32 32 32
++49 49 49 45 45 45 37 37 37 33 33 33 45 45 45 60 60 60 60 60 60 50 50 50
++53 53 53 58 58 58 62 62 62 61 61 61 56 56 56 51 51 51 51 51 51 52 52 52
++61 61 61 56 56 56 53 53 53 50 50 50 46 46 46 52 52 52 58 58 58 56 56 56
++52 52 52 46 46 46 51 51 51 52 52 52 46 46 46 45 45 45 38 38 38 21 21 21
++8 8 8 32 32 32 39 39 39 32 32 32 43 43 43 32 32 32 0 0 0 20 20 20
++43 43 43 42 42 42 17 17 17 40 40 40 36 36 36 17 17 17 45 45 45 28 28 28
++8 8 8 36 36 36 29 29 29 31 31 31 53 53 53 39 39 39 21 21 21 49 49 49
++34 34 34 14 14 14 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0
++4 4 4 17 17 17 23 23 23 14 14 14 4 4 4 4 4 4 4 4 4 0 0 0
++4 4 4 8 8 8 19 19 19 38 38 38 52 52 52 48 48 48 43 43 43 50 50 50
++42 42 42 19 19 19 33 33 33 21 21 21 8 8 8 24 24 24 20 20 20 27 27 27
++28 28 28 34 34 34 34 34 34 40 40 40 54 54 54 54 54 54 45 45 45 46 46 46
++49 49 49 31 31 31 44 44 44 49 49 49 23 23 23 14 14 14 36 36 36 54 54 54
++53 53 53 11 11 11 0 0 0 3 3 3 0 0 0 21 21 21 37 37 37 8 8 8
++8 8 8 4 4 4 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0
++6 6 6 28 28 28 28 28 28 28 28 28 46 46 46 49 49 49 40 40 40 43 43 43
++44 44 44 20 20 20 24 24 24 45 45 45 48 48 48 38 38 38 36 36 36 36 36 36
++8 8 8 11 11 11 6 6 6 10 10 10 24 24 24 32 32 32 32 32 32 34 34 34
++14 14 14 13 13 13 14 14 14 16 16 16 16 16 16 16 16 16 20 20 20 27 27 27
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 3 3 3 11 11 11 19 19 19 21 21 21 19 19 19 19 19 19 20 20 20
++17 17 17 17 17 17 14 14 14 8 8 8 4 4 4 6 6 6 11 11 11 16 16 16
++17 17 17 19 19 19 20 20 20 21 21 21 23 23 23 21 21 21 20 20 20 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++19 19 19 19 19 19 20 20 20 23 23 23 24 24 24 21 21 21 17 17 17 13 13 13
++33 33 33 40 40 40 31 31 31 6 6 6 0 0 0 0 0 0 4 4 4 4 4 4
++23 23 23 42 42 42 42 42 42 23 23 23 17 17 17 24 24 24 20 20 20 8 8 8
++19 19 19 39 39 39 40 40 40 16 16 16 0 0 0 0 0 0 3 3 3 0 0 0
++10 10 10 38 38 38 48 48 48 25 25 25 0 0 0 0 0 0 3 3 3 0 0 0
++6 6 6 44 44 44 53 53 53 33 33 33 20 20 20 24 24 24 17 17 17 0 0 0
++0 0 0 46 46 46 61 61 61 38 38 38 11 11 11 3 3 3 0 0 0 0 0 0
++4 4 4 42 42 42 60 60 60 49 49 49 23 23 23 0 0 0 0 0 0 11 11 11
++3 3 3 42 42 42 60 60 60 48 48 48 24 24 24 8 8 8 8 8 8 16 16 16
++0 0 0 37 37 37 59 59 59 52 52 52 28 28 28 3 3 3 4 4 4 20 20 20
++16 16 16 32 32 32 54 54 54 57 57 57 33 33 33 16 16 16 19 19 19 23 23 23
++17 17 17 37 37 37 54 54 54 56 56 56 45 45 45 34 34 34 31 31 31 32 32 32
++23 23 23 34 34 34 50 50 50 60 60 60 44 44 44 24 24 24 29 29 29 34 34 34
++44 44 44 61 61 61 56 56 56 69 69 69 43 43 43 42 42 42 33 33 33 42 42 42
++40 40 40 62 62 62 65 65 65 49 49 49 43 43 43 45 45 45 48 48 48 51 51 51
++44 44 44 57 57 57 69 69 69 70 70 70 59 59 59 49 49 49 50 50 50 57 57 57
++53 53 53 56 56 56 65 65 65 73 73 73 69 69 69 58 58 58 56 56 56 61 61 61
++65 65 65 59 59 59 56 56 56 72 72 72 89 89 89 77 77 77 59 59 59 60 60 60
++61 61 61 67 67 67 65 65 65 65 65 65 81 81 81 91 91 91 80 80 80 62 62 62
++70 70 70 65 65 65 71 71 71 68 68 68 71 71 71 93 93 93 103 103 102 94 94 94
++67 67 67 61 61 61 90 90 90 105 105 105 99 99 99 91 91 91 76 76 76 75 75 75
++91 91 91 87 87 87 90 90 90 96 96 96 99 99 99 89 89 89 76 76 76 78 78 78
++101 101 101 89 89 89 95 95 94 109 110 110 101 101 101 96 96 96 105 105 105 103 103 102
++93 93 93 71 71 71 62 62 62 87 87 87 105 105 105 94 94 94 74 74 74 69 69 69
++67 67 67 78 78 78 103 103 102 91 91 91 78 78 78 88 88 88 81 81 81 75 75 75
++95 95 94 82 82 82 84 84 84 87 87 87 87 87 87 88 88 88 87 87 87 89 89 89
++76 76 76 87 87 87 91 91 91 74 74 74 56 56 56 56 56 56 61 61 61 54 54 54
++57 57 57 54 54 54 58 58 58 71 71 71 82 82 82 78 78 78 65 65 65 51 51 51
++51 51 51 49 49 49 49 49 49 51 51 51 51 51 51 49 49 49 50 50 50 53 53 53
++65 65 65 66 66 66 73 73 73 87 87 87 78 78 78 82 82 82 83 83 83 80 80 80
++76 76 76 66 66 66 63 63 63 74 74 74 77 77 77 70 70 70 67 67 67 72 72 72
++73 73 73 73 73 73 65 65 65 49 49 49 42 42 42 42 42 42 34 34 34 20 20 20
++28 28 28 32 32 32 45 45 45 63 63 63 59 59 59 28 28 28 11 11 11 27 27 27
++45 45 45 59 59 59 63 63 63 52 52 52 44 44 44 50 50 50 57 57 57 57 57 57
++51 51 51 53 53 53 57 57 57 60 60 60 60 60 60 58 58 58 54 54 54 51 51 51
++59 59 59 57 57 57 59 59 59 57 57 57 48 48 48 46 46 46 53 53 53 57 57 57
++63 63 63 52 52 52 40 40 40 34 34 34 27 27 27 20 20 20 17 17 17 16 16 16
++20 20 20 3 3 3 23 23 23 16 16 16 27 27 27 45 45 45 14 14 14 0 0 0
++23 23 23 40 40 40 48 48 48 33 33 33 6 6 6 0 0 0 24 24 24 43 43 43
++27 27 27 24 24 24 33 33 33 43 43 43 43 43 43 49 49 49 54 54 54 49 49 49
++8 8 8 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 3 3 3
++19 19 19 21 21 21 16 16 16 3 3 3 0 0 0 4 4 4 8 8 8 3 3 3
++4 4 4 0 0 0 4 4 4 34 34 34 53 53 53 45 45 45 32 32 32 36 36 36
++45 45 45 37 37 37 53 53 53 56 56 56 44 44 44 39 39 39 36 36 36 38 38 38
++28 28 28 28 28 28 27 27 27 27 27 27 31 31 31 34 34 34 36 36 36 37 37 37
++51 51 51 48 48 48 50 50 50 52 52 52 31 31 31 0 0 0 19 19 19 46 46 46
++52 52 52 36 36 36 6 6 6 0 0 0 23 23 23 36 36 36 20 20 20 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3
++0 0 0 10 10 10 21 21 21 32 32 32 42 42 42 39 39 39 31 31 31 32 32 32
++48 48 48 23 23 23 17 17 17 40 40 40 57 57 57 49 49 49 38 38 38 36 36 36
++33 33 33 20 20 20 3 3 3 8 8 8 29 29 29 34 34 34 28 28 28 25 25 25
++10 10 10 13 13 13 13 13 13 10 10 10 11 11 11 21 21 21 32 32 32 38 38 38
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 10 10 10 17 17 17 21 21 21 21 21 21 19 19 19 19 19 19 20 20 20
++21 21 21 13 13 13 4 4 4 3 3 3 11 11 11 17 17 17 17 17 17 16 16 16
++20 20 20 20 20 20 20 20 20 19 19 19 17 17 17 16 16 16 14 14 14 13 13 13
++14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++6 6 6 10 10 10 10 10 10 10 10 10 16 16 16 23 23 23 23 23 23 19 19 19
++14 14 14 27 27 27 37 37 37 37 37 37 23 23 23 3 3 3 0 0 0 3 3 3
++0 0 0 21 21 21 39 39 39 39 39 39 28 28 28 17 17 17 19 19 19 27 27 27
++14 14 14 10 10 10 32 32 32 43 43 43 19 19 19 0 0 0 3 3 3 0 0 0
++0 0 0 4 4 4 37 37 37 50 50 50 23 23 23 0 0 0 3 3 3 3 3 3
++0 0 0 16 16 16 39 39 39 51 51 51 43 43 43 23 23 23 11 11 11 14 14 14
++0 0 0 13 13 13 42 42 42 60 60 60 45 45 45 4 4 4 0 0 0 13 13 13
++0 0 0 11 11 11 38 38 38 58 58 58 50 50 50 19 19 19 3 3 3 16 16 16
++6 6 6 16 16 16 38 38 38 59 59 59 52 52 52 24 24 24 6 6 6 14 14 14
++8 8 8 8 8 8 29 29 29 56 56 56 56 56 56 29 29 29 11 11 11 19 19 19
++25 25 25 14 14 14 23 23 23 57 57 57 68 68 68 32 32 32 6 6 6 31 31 31
++27 27 27 16 16 16 28 28 28 56 56 56 66 66 66 49 49 49 32 32 32 29 29 29
++32 32 32 34 34 34 32 32 32 50 50 50 66 66 66 48 48 48 32 32 32 45 45 45
++62 62 62 32 32 32 40 40 40 51 51 51 78 78 78 46 46 46 46 46 46 40 40 40
++59 59 59 63 63 63 52 52 52 40 40 40 46 46 46 51 51 51 46 46 46 46 46 46
++57 57 57 67 67 67 67 67 67 56 56 56 50 50 50 57 57 57 60 60 60 56 56 56
++52 52 52 69 69 69 77 77 77 70 70 70 60 60 60 59 59 59 62 62 62 62 62 62
++63 63 63 58 58 58 74 74 74 90 90 90 77 77 77 62 62 62 65 65 65 70 70 70
++66 66 66 69 69 69 67 67 67 80 80 80 94 94 94 80 80 80 62 62 62 71 71 71
++69 69 69 70 70 70 69 69 69 76 76 76 90 90 90 87 87 87 84 84 84 96 96 96
++96 97 98 94 94 94 99 99 99 87 87 87 80 80 80 92 92 92 96 97 98 99 99 99
++77 77 77 70 70 70 83 83 83 101 101 101 112 112 113 95 95 94 70 70 70 80 80 80
++103 103 102 105 105 105 109 110 110 99 99 99 82 82 82 87 87 87 103 103 102 101 101 101
++105 105 105 75 75 75 70 70 70 87 87 87 91 91 91 92 92 92 88 88 88 72 72 72
++71 71 71 67 67 67 85 85 85 103 103 102 87 87 87 84 84 84 99 99 99 87 87 87
++101 101 101 94 94 94 103 103 102 93 93 93 75 75 75 73 73 73 69 69 69 61 61 61
++69 69 69 74 74 74 87 87 87 87 87 87 72 72 72 63 63 63 65 65 65 67 67 67
++57 57 57 66 66 66 63 63 63 53 53 53 63 63 63 83 83 83 82 82 82 63 63 63
++65 65 65 58 58 58 54 54 54 54 54 54 53 53 53 50 50 50 49 49 49 50 50 50
++49 49 49 50 50 50 54 54 54 76 76 76 60 60 60 66 66 66 71 71 71 70 70 70
++81 81 81 61 61 61 44 44 44 43 43 43 46 46 46 43 43 43 40 40 40 42 42 42
++58 58 58 68 68 68 66 66 66 44 44 44 23 23 23 19 19 19 28 28 28 34 34 34
++33 33 33 31 31 31 31 31 31 43 43 43 59 59 59 60 60 60 49 49 49 44 44 44
++57 57 57 52 52 52 56 56 56 59 59 59 43 43 43 23 23 23 37 37 37 65 65 65
++59 59 59 54 54 54 51 51 51 52 52 52 58 58 58 60 60 60 58 58 58 53 53 53
++52 52 52 52 52 52 59 59 59 62 62 62 54 54 54 50 50 50 52 52 52 52 52 52
++62 62 62 44 44 44 23 23 23 14 14 14 16 16 16 16 16 16 23 23 23 34 34 34
++40 40 40 16 16 16 23 23 23 13 13 13 11 11 11 33 33 33 23 23 23 4 4 4
++0 0 0 37 37 37 65 65 65 36 36 36 6 6 6 8 8 8 10 10 10 34 34 34
++36 36 36 25 25 25 37 37 37 34 34 34 8 8 8 23 23 23 45 45 45 38 38 38
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 4 4 4 16 16 16
++23 23 23 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 3 3 3 21 21 21 45 45 45 53 53 53 42 42 42 37 37 37 50 50 50
++51 51 51 40 40 40 38 38 38 37 37 37 19 19 19 3 3 3 10 10 10 16 16 16
++27 27 27 23 23 23 25 25 25 28 28 28 24 24 24 24 24 24 19 19 19 0 0 0
++31 31 31 46 46 46 25 25 25 36 36 36 59 59 59 39 39 39 31 31 31 53 53 53
++50 50 50 52 52 52 31 31 31 19 19 19 34 34 34 21 21 21 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 17 17 17 36 36 36 43 43 43 40 40 40 36 36 36 32 32 32 31 31 31
++27 27 27 24 24 24 16 16 16 24 24 24 46 46 46 50 50 50 31 31 31 11 11 11
++48 48 48 29 29 29 14 14 14 24 24 24 39 39 39 32 32 32 17 17 17 16 16 16
++25 25 25 20 20 20 11 11 11 8 8 8 19 19 19 32 32 32 37 37 37 33 33 33
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++11 11 11 16 16 16 20 20 20 20 20 20 19 19 19 19 19 19 20 20 20 20 20 20
++16 16 16 11 11 11 6 6 6 10 10 10 17 17 17 23 23 23 21 21 21 19 19 19
++21 21 21 19 19 19 16 16 16 11 11 11 8 8 8 6 6 6 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 6 6 6 6 6 6 0 0 0 0 0 0 11 11 11 17 17 17 16 16 16
++19 19 19 20 20 20 32 32 32 42 42 42 34 34 34 14 14 14 4 4 4 6 6 6
++0 0 0 0 0 0 21 21 21 42 42 42 39 39 39 23 23 23 16 16 16 21 21 21
++14 14 14 16 16 16 14 14 14 32 32 32 44 44 44 19 19 19 0 0 0 3 3 3
++0 0 0 6 6 6 13 13 13 34 34 34 50 50 50 24 24 24 0 0 0 0 0 0
++4 4 4 0 0 0 14 14 14 44 44 44 53 53 53 38 38 38 16 16 16 0 0 0
++11 11 11 0 0 0 8 8 8 44 44 44 57 57 57 38 38 38 13 13 13 0 0 0
++14 14 14 0 0 0 4 4 4 38 38 38 58 58 58 51 51 51 25 25 25 0 0 0
++14 14 14 4 4 4 17 17 17 44 44 44 58 58 58 48 48 48 25 25 25 8 8 8
++20 20 20 4 4 4 10 10 10 37 37 37 56 56 56 53 53 53 32 32 32 11 11 11
++23 23 23 21 21 21 19 19 19 36 36 36 60 60 60 58 58 58 33 33 33 17 17 17
++24 24 24 25 25 25 25 25 25 34 34 34 54 54 54 67 67 67 49 49 49 19 19 19
++28 28 28 33 33 33 25 25 25 29 29 29 59 59 59 68 68 68 58 58 58 59 59 59
++44 44 44 42 42 42 25 25 25 51 51 51 51 51 51 76 76 76 59 59 59 57 57 57
++65 65 65 56 56 56 43 43 43 44 44 44 51 51 51 49 49 49 45 45 45 53 53 53
++73 73 73 69 69 69 59 59 59 51 51 51 51 51 51 57 57 57 58 58 58 56 56 56
++68 68 68 77 77 77 76 76 76 62 62 62 58 58 58 66 66 66 67 67 67 60 60 60
++62 62 62 78 78 78 91 91 91 78 78 78 59 59 59 66 66 66 75 75 75 68 68 68
++72 72 72 66 66 66 84 84 84 96 96 96 78 78 78 66 66 66 70 70 70 72 72 72
++71 71 71 76 76 76 72 72 72 84 84 84 99 99 99 82 82 82 70 70 70 88 88 88
++99 99 99 99 99 99 94 94 94 75 75 75 71 71 71 90 90 90 96 97 98 93 93 93
++76 76 76 73 73 73 84 84 84 94 94 94 105 105 105 105 105 105 94 94 94 105 105 105
++101 101 101 105 105 105 105 105 105 93 93 93 85 85 85 87 87 87 88 88 88 88 88 88
++105 105 105 93 93 93 91 91 91 87 87 87 76 76 76 88 88 88 101 101 101 93 93 93
++74 74 74 75 75 75 76 76 76 94 94 94 109 110 110 101 101 101 95 95 94 101 101 101
++93 93 93 84 84 84 93 93 93 87 87 87 67 67 67 66 66 66 68 68 68 67 67 67
++72 72 72 69 69 69 82 82 82 94 94 94 89 89 89 75 75 75 67 67 67 63 63 63
++65 65 65 63 63 63 60 60 60 57 57 57 60 60 60 69 69 69 78 78 78 85 85 85
++63 63 63 57 57 57 53 53 53 53 53 53 54 54 54 52 52 52 52 52 52 53 53 53
++51 51 51 52 52 52 54 54 54 76 76 76 52 52 52 48 48 48 52 52 52 52 52 52
++56 56 56 69 69 69 78 78 78 72 72 72 53 53 53 38 38 38 37 37 37 42 42 42
++39 39 39 51 51 51 62 62 62 63 63 63 52 52 52 39 39 39 32 32 32 29 29 29
++29 29 29 25 25 25 21 21 21 33 33 33 54 54 54 63 63 63 65 65 65 69 69 69
++42 42 42 20 20 20 20 20 20 43 43 43 50 50 50 37 37 37 38 38 38 54 54 54
++60 60 60 58 58 58 54 54 54 53 53 53 54 54 54 54 54 54 56 56 56 56 56 56
++51 51 51 49 49 49 53 53 53 59 59 59 58 58 58 57 57 57 54 54 54 46 46 46
++37 37 37 21 21 21 11 11 11 21 21 21 36 36 36 42 42 42 48 48 48 58 58 58
++49 49 49 48 48 48 49 49 49 40 40 40 21 21 21 11 11 11 13 13 13 6 6 6
++17 17 17 56 56 56 42 42 42 44 44 44 37 37 37 16 16 16 32 32 32 24 24 24
++17 17 17 46 46 46 40 40 40 14 14 14 3 3 3 0 0 0 14 14 14 46 46 46
++19 19 19 11 11 11 3 3 3 0 0 0 0 0 0 6 6 6 16 16 16 24 24 24
++14 14 14 3 3 3 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 3 3 3
++3 3 3 29 29 29 39 39 39 34 34 34 36 36 36 40 40 40 43 43 43 44 44 44
++52 52 52 38 38 38 27 27 27 37 37 37 39 39 39 37 37 37 44 44 44 44 44 44
++29 29 29 29 29 29 40 40 40 46 46 46 44 44 44 49 49 49 49 49 49 36 36 36
++32 32 32 46 46 46 13 13 13 16 16 16 56 56 56 52 52 52 43 43 43 53 53 53
++48 48 48 46 46 46 49 49 49 39 39 39 14 14 14 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++11 11 11 28 28 28 43 43 43 39 39 39 28 28 28 25 25 25 27 27 27 23 23 23
++25 25 25 34 34 34 24 24 24 19 19 19 38 38 38 50 50 50 39 39 39 25 25 25
++20 20 20 29 29 29 36 36 36 39 39 39 40 40 40 28 28 28 13 13 13 11 11 11
++24 24 24 21 21 21 17 17 17 19 19 19 28 28 28 36 36 36 31 31 31 17 17 17
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6
++16 16 16 19 19 19 20 20 20 19 19 19 17 17 17 19 19 19 19 19 19 17 17 17
++4 4 4 11 11 11 17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20
++10 10 10 10 10 10 8 8 8 8 8 8 8 8 8 10 10 10 11 11 11 13 13 13
++21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
++13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
++13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
++4 4 4 13 13 13 14 14 14 6 6 6 0 0 0 3 3 3 4 4 4 3 3 3
++14 14 14 13 13 13 20 20 20 29 29 29 34 34 34 36 36 36 25 25 25 8 8 8
++13 13 13 0 0 0 0 0 0 20 20 20 38 38 38 42 42 42 29 29 29 10 10 10
++19 19 19 16 16 16 11 11 11 16 16 16 32 32 32 40 40 40 24 24 24 0 0 0
++6 6 6 0 0 0 0 0 0 11 11 11 36 36 36 46 46 46 28 28 28 0 0 0
++10 10 10 0 0 0 0 0 0 14 14 14 42 42 42 58 58 58 38 38 38 0 0 0
++0 0 0 0 0 0 4 4 4 10 10 10 34 34 34 58 58 58 45 45 45 6 6 6
++4 4 4 6 6 6 6 6 6 10 10 10 36 36 36 61 61 61 52 52 52 16 16 16
++6 6 6 10 10 10 11 11 11 17 17 17 38 38 38 60 60 60 52 52 52 23 23 23
++10 10 10 19 19 19 17 17 17 13 13 13 32 32 32 60 60 60 57 57 57 25 25 25
++13 13 13 20 20 20 29 29 29 25 25 25 31 31 31 59 59 59 63 63 63 31 31 31
++19 19 19 29 29 29 29 29 29 25 25 25 40 40 40 61 61 61 59 59 59 40 40 40
++33 33 33 39 39 39 42 42 42 27 27 27 34 34 34 65 65 65 69 69 69 57 57 57
++37 37 37 38 38 38 53 53 53 29 29 29 48 48 48 56 56 56 77 77 77 80 80 80
++53 53 53 43 43 43 44 44 44 52 52 52 53 53 53 50 50 50 59 59 59 75 75 75
++71 71 71 58 58 58 52 52 52 60 60 60 61 61 61 54 54 54 58 58 58 70 70 70
++87 87 87 76 76 76 65 65 65 61 61 61 65 65 65 68 68 68 67 67 67 62 62 62
++78 78 78 90 90 90 82 82 82 65 65 65 67 67 67 73 73 73 70 70 70 69 69 69
++69 69 69 87 87 87 96 96 96 85 85 85 69 69 69 71 71 71 77 77 77 74 74 74
++78 78 78 82 82 82 80 80 80 85 85 85 87 87 87 82 82 82 82 82 82 80 80 80
++82 82 82 83 83 83 85 85 85 85 85 85 84 84 84 87 87 87 84 84 84 81 81 81
++83 83 83 90 90 90 93 93 93 87 87 87 94 94 94 105 105 105 109 110 110 109 110 110
++101 101 101 96 97 98 96 97 98 101 101 101 105 105 105 99 99 99 80 80 80 77 77 77
++92 92 92 105 105 105 105 104 105 85 85 85 74 74 74 80 80 80 91 91 91 101 101 101
++95 95 94 82 82 82 96 97 98 94 94 94 105 105 105 117 117 117 93 93 93 93 93 93
++99 99 99 83 83 83 93 93 93 101 101 101 94 94 94 92 92 92 92 92 92 93 93 93
++101 101 101 96 96 96 96 97 98 101 101 101 101 101 101 103 103 102 101 101 101 92 92 92
++96 96 96 92 92 92 90 90 90 88 88 88 83 83 83 78 78 78 85 85 85 95 95 94
++92 92 92 81 81 81 69 69 69 61 61 61 56 56 56 52 52 52 52 52 52 54 54 54
++52 52 52 53 53 53 57 57 57 78 78 78 63 63 63 46 46 46 50 50 50 46 46 46
++49 49 49 49 49 49 51 51 51 59 59 59 72 72 72 76 76 76 62 62 62 43 43 43
++39 39 39 33 33 33 37 37 37 52 52 52 66 66 66 62 62 62 46 46 46 31 31 31
++28 28 28 29 29 29 43 43 43 61 61 61 63 63 63 44 44 44 40 40 40 61 61 61
++56 56 56 38 38 38 20 20 20 24 24 24 43 43 43 54 54 54 44 44 44 24 24 24
++45 45 45 53 53 53 60 60 60 59 59 59 54 54 54 52 52 52 58 58 58 63 63 63
++57 57 57 51 51 51 50 50 50 51 51 51 54 54 54 59 59 59 56 56 56 42 42 42
++17 17 17 13 13 13 24 24 24 43 43 43 50 50 50 48 48 48 44 44 44 44 44 44
++42 42 42 48 48 48 42 42 42 43 43 43 38 38 38 23 23 23 17 17 17 6 6 6
++51 51 51 38 38 38 8 8 8 21 21 21 37 37 37 28 28 28 31 31 31 32 32 32
++31 31 31 45 45 45 37 37 37 17 17 17 11 11 11 6 6 6 8 8 8 24 24 24
++33 33 33 17 17 17 0 0 0 0 0 0 13 13 13 23 23 23 23 23 23 20 20 20
++4 4 4 11 11 11 11 11 11 6 6 6 8 8 8 14 14 14 11 11 11 3 3 3
++14 14 14 25 25 25 25 25 25 23 23 23 27 27 27 25 25 25 17 17 17 11 11 11
++23 23 23 16 16 16 14 14 14 24 24 24 25 25 25 19 19 19 19 19 19 16 16 16
++20 20 20 25 25 25 33 33 33 27 27 27 13 13 13 17 17 17 25 25 25 20 20 20
++20 20 20 24 24 24 6 6 6 0 0 0 6 6 6 10 10 10 11 11 11 10 10 10
++13 13 13 32 32 32 34 34 34 19 19 19 10 10 10 13 13 13 17 17 17 17 17 17
++11 11 11 11 11 11 13 13 13 11 11 11 10 10 10 8 8 8 10 10 10 11 11 11
++17 17 17 29 29 29 34 34 34 24 24 24 10 10 10 10 10 10 13 13 13 11 11 11
++13 13 13 16 16 16 8 8 8 4 4 4 16 16 16 17 17 17 11 11 11 13 13 13
++0 0 0 36 36 36 48 48 48 32 32 32 17 17 17 16 16 16 13 13 13 11 11 11
++4 4 4 16 16 16 27 27 27 32 32 32 33 33 33 28 28 28 17 17 17 6 6 6
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 8 8 8 13 13 13
++16 16 16 19 19 19 20 20 20 17 17 17 19 19 19 20 20 20 16 16 16 10 10 10
++3 3 3 11 11 11 20 20 20 23 23 23 20 20 20 16 16 16 14 14 14 14 14 14
++4 4 4 6 6 6 10 10 10 14 14 14 17 17 17 19 19 19 20 20 20 20 20 20
++16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++13 13 13 16 16 16 19 19 19 16 16 16 13 13 13 10 10 10 6 6 6 3 3 3
++0 0 0 0 0 0 8 8 8 14 14 14 24 24 24 39 39 39 38 38 38 20 20 20
++16 16 16 0 0 0 0 0 0 0 0 0 20 20 20 42 42 42 43 43 43 24 24 24
++21 21 21 8 8 8 17 17 17 16 16 16 4 4 4 36 36 36 48 48 48 14 14 14
++10 10 10 0 0 0 0 0 0 4 4 4 3 3 3 38 38 38 52 52 52 20 20 20
++8 8 8 0 0 0 0 0 0 0 0 0 23 23 23 51 51 51 52 52 52 28 28 28
++0 0 0 8 8 8 11 11 11 0 0 0 6 6 6 38 38 38 51 51 51 39 39 39
++6 6 6 11 11 11 13 13 13 3 3 3 11 11 11 40 40 40 57 57 57 50 50 50
++19 19 19 14 14 14 10 10 10 6 6 6 17 17 17 44 44 44 56 56 56 49 49 49
++16 16 16 17 17 17 16 16 16 11 11 11 19 19 19 44 44 44 60 60 60 56 56 56
++29 29 29 20 20 20 28 28 28 29 29 29 20 20 20 37 37 37 59 59 59 57 57 57
++29 29 29 21 21 21 21 21 21 33 33 33 43 43 43 48 48 48 58 58 58 71 71 71
++38 38 38 29 29 29 36 36 36 36 36 36 44 44 44 63 63 63 69 69 69 72 72 72
++49 49 49 44 44 44 39 39 39 49 49 49 43 43 43 65 65 65 68 68 68 89 89 89
++57 57 57 48 48 48 50 50 50 54 54 54 53 53 53 62 62 62 74 74 74 76 76 76
++59 59 59 52 52 52 54 54 54 63 63 63 65 65 65 60 60 60 69 69 69 84 84 84
++83 83 83 69 69 69 60 60 60 66 66 66 70 70 70 67 67 67 70 70 70 77 77 77
++91 91 91 81 81 81 67 67 67 70 70 70 78 78 78 71 71 71 66 66 66 78 78 78
++78 78 78 96 97 98 88 88 88 71 71 71 78 78 78 83 83 83 77 77 77 83 83 83
++84 84 84 87 87 87 83 83 83 84 84 84 82 82 82 87 87 87 96 96 96 83 83 83
++87 87 87 84 84 84 84 84 84 89 89 89 88 88 88 84 84 84 87 87 87 92 92 92
++84 84 84 90 90 90 89 89 89 87 87 87 89 89 89 103 103 102 115 116 115 109 110 110
++99 99 99 84 84 84 89 89 89 99 99 99 103 103 102 101 101 101 85 85 85 80 80 80
++94 94 94 109 110 110 112 112 113 96 97 98 82 82 82 74 74 74 81 81 81 94 94 94
++117 117 117 99 99 99 105 105 105 92 92 92 88 88 88 112 112 113 109 110 110 99 99 99
++105 105 105 99 99 99 103 103 102 103 103 102 101 101 101 103 103 102 94 94 94 82 82 82
++81 81 81 76 76 76 73 73 73 71 71 71 74 74 74 90 90 90 103 103 102 103 103 102
++81 81 81 80 80 80 77 77 77 75 75 75 77 77 77 83 83 83 87 87 87 85 85 85
++99 99 99 92 92 92 84 84 84 77 77 77 71 71 71 65 65 65 61 61 61 61 61 61
++54 54 54 51 51 51 52 52 52 72 72 72 76 76 76 52 52 52 56 56 56 48 48 48
++48 48 48 45 45 45 42 42 42 40 40 40 46 46 46 58 58 58 68 68 68 74 74 74
++62 62 62 52 52 52 39 39 39 37 37 37 48 48 48 59 59 59 60 60 60 56 56 56
++52 52 52 68 68 68 66 66 66 46 46 46 37 37 37 34 34 34 29 29 29 25 25 25
++59 59 59 57 57 57 40 40 40 20 20 20 21 21 21 42 42 42 53 53 53 50 50 50
++44 44 44 51 51 51 58 58 58 59 59 59 57 57 57 54 54 54 58 58 58 62 62 62
++60 60 60 57 57 57 53 53 53 49 49 49 50 50 50 58 58 58 52 52 52 31 31 31
++17 17 17 20 20 20 40 40 40 53 53 53 44 44 44 34 34 34 31 31 31 25 25 25
++39 39 39 37 37 37 33 33 33 31 31 31 40 40 40 45 45 45 28 28 28 13 13 13
++51 51 51 19 19 19 11 11 11 6 6 6 24 24 24 34 34 34 19 19 19 32 32 32
++23 23 23 6 6 6 10 10 10 14 14 14 8 8 8 17 17 17 23 23 23 4 4 4
++23 23 23 14 14 14 6 6 6 11 11 11 24 24 24 28 28 28 21 21 21 11 11 11
++6 6 6 14 14 14 17 17 17 11 11 11 11 11 11 16 16 16 16 16 16 11 11 11
++11 11 11 13 13 13 17 17 17 28 28 28 32 32 32 19 19 19 6 6 6 13 13 13
++14 14 14 14 14 14 17 17 17 13 13 13 8 8 8 8 8 8 11 11 11 21 21 21
++13 13 13 24 24 24 32 32 32 24 24 24 13 13 13 13 13 13 14 14 14 8 8 8
++14 14 14 13 13 13 21 21 21 17 17 17 8 8 8 13 13 13 16 16 16 17 17 17
++27 27 27 42 42 42 23 23 23 0 0 0 14 14 14 13 13 13 0 0 0 10 10 10
++14 14 14 14 14 14 16 16 16 14 14 14 13 13 13 13 13 13 16 16 16 19 19 19
++36 36 36 34 34 34 25 25 25 16 16 16 14 14 14 13 13 13 13 13 13 14 14 14
++13 13 13 10 10 10 11 11 11 16 16 16 16 16 16 4 4 4 0 0 0 11 11 11
++23 23 23 39 39 39 34 34 34 13 13 13 3 3 3 6 6 6 11 11 11 16 16 16
++3 3 3 17 17 17 32 32 32 37 37 37 29 29 29 16 16 16 10 10 10 11 11 11
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 10 10 10 16 16 16
++14 14 14 19 19 19 20 20 20 19 19 19 20 20 20 20 20 20 14 14 14 4 4 4
++10 10 10 13 13 13 17 17 17 21 21 21 21 21 21 17 17 17 10 10 10 3 3 3
++17 17 17 19 19 19 21 21 21 23 23 23 23 23 23 20 20 20 16 16 16 13 13 13
++14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++17 17 17 16 16 16 16 16 16 19 19 19 21 21 21 21 21 21 19 19 19 17 17 17
++4 4 4 0 0 0 3 3 3 3 3 3 4 4 4 23 23 23 37 37 37 37 37 37
++17 17 17 14 14 14 11 11 11 0 0 0 0 0 0 21 21 21 43 43 43 44 44 44
++19 19 19 24 24 24 21 21 21 13 13 13 6 6 6 10 10 10 29 29 29 51 51 51
++4 4 4 10 10 10 4 4 4 0 0 0 0 0 0 10 10 10 34 34 34 59 59 59
++13 13 13 4 4 4 8 8 8 11 11 11 8 8 8 23 23 23 46 46 46 59 59 59
++32 32 32 4 4 4 0 0 0 11 11 11 4 4 4 3 3 3 32 32 32 58 58 58
++40 40 40 10 10 10 0 0 0 11 11 11 11 11 11 16 16 16 42 42 42 65 65 65
++49 49 49 19 19 19 8 8 8 19 19 19 11 11 11 8 8 8 36 36 36 63 63 63
++59 59 59 25 25 25 14 14 14 28 28 28 20 20 20 6 6 6 29 29 29 58 58 58
++53 53 53 38 38 38 27 27 27 27 27 27 24 24 24 17 17 17 34 34 34 63 63 63
++62 62 62 39 39 39 28 28 28 39 39 39 42 42 42 33 33 33 40 40 40 59 59 59
++77 77 77 48 48 48 33 33 33 50 50 50 69 69 69 52 52 52 31 31 31 60 60 60
++82 82 82 54 54 54 45 45 45 43 43 43 62 62 62 69 69 69 58 58 58 53 53 53
++81 81 81 65 65 65 57 57 57 52 52 52 54 54 54 74 74 74 77 77 77 53 53 53
++56 56 56 60 60 60 62 62 62 59 59 59 59 59 59 67 67 67 77 77 77 84 84 84
++65 65 65 62 62 62 66 66 66 70 70 70 68 68 68 66 66 66 76 76 76 92 92 92
++84 84 84 70 70 70 71 71 71 77 77 77 72 72 72 71 71 71 78 78 78 81 81 81
++105 104 105 80 80 80 73 73 73 83 83 83 84 84 84 84 84 84 87 87 87 85 85 85
++85 85 85 89 89 89 81 81 81 84 84 84 88 88 88 92 92 92 101 101 101 94 94 94
++81 81 81 88 88 88 95 95 94 101 101 101 99 99 99 89 89 89 88 88 88 90 90 90
++99 99 99 91 91 91 84 84 84 92 92 92 91 91 91 93 93 93 112 112 113 112 112 113
++103 103 102 88 88 88 96 97 98 96 97 98 93 93 93 105 105 105 105 105 105 96 97 98
++93 93 93 90 90 90 105 105 105 115 116 115 96 96 96 88 88 88 103 103 102 109 110 110
++99 99 99 117 117 117 96 96 96 92 92 92 105 105 105 105 105 105 112 112 113 115 116 115
++99 99 99 105 104 105 103 103 102 84 84 84 84 84 84 103 103 102 96 96 96 73 73 73
++77 77 77 74 74 74 75 75 75 74 74 74 72 72 72 80 80 80 93 93 93 99 99 99
++96 97 98 82 82 82 68 68 68 66 66 66 69 69 69 68 68 68 65 65 65 62 62 62
++59 59 59 66 66 66 80 80 80 92 92 92 95 95 94 89 89 89 81 81 81 77 77 77
++69 69 69 58 58 58 50 50 50 65 65 65 83 83 83 53 53 53 57 57 57 46 46 46
++51 51 51 48 48 48 48 48 48 49 49 49 46 46 46 42 42 42 42 42 42 45 45 45
++67 67 67 72 72 72 65 65 65 42 42 42 29 29 29 42 42 42 63 63 63 75 75 75
++72 72 72 58 58 58 37 37 37 27 27 27 29 29 29 28 28 28 27 27 27 32 32 32
++25 25 25 49 49 49 65 65 65 52 52 52 23 23 23 10 10 10 34 34 34 63 63 63
++61 61 61 59 59 59 56 56 56 56 56 56 56 56 56 56 56 56 52 52 52 49 49 49
++60 60 60 60 60 60 59 59 59 52 52 52 50 50 50 57 57 57 45 45 45 19 19 19
++20 20 20 25 25 25 46 46 46 53 53 53 34 34 34 29 29 29 40 40 40 42 42 42
++49 49 49 48 48 48 59 59 59 39 39 39 36 36 36 49 49 49 28 28 28 19 19 19
++37 37 37 50 50 50 33 33 33 36 36 36 32 32 32 24 24 24 37 37 37 19 19 19
++16 16 16 21 21 21 16 16 16 10 10 10 14 14 14 10 10 10 6 6 6 16 16 16
++0 0 0 6 6 6 16 16 16 23 23 23 27 27 27 25 25 25 17 17 17 8 8 8
++13 13 13 11 11 11 13 13 13 17 17 17 14 14 14 6 6 6 10 10 10 20 20 20
++10 10 10 31 31 31 33 33 33 21 21 21 11 11 11 8 8 8 8 8 8 14 14 14
++13 13 13 6 6 6 11 11 11 8 8 8 14 14 14 20 20 20 8 8 8 8 8 8
++28 28 28 31 31 31 23 23 23 10 10 10 6 6 6 14 14 14 16 16 16 11 11 11
++13 13 13 6 6 6 13 13 13 8 8 8 17 17 17 20 20 20 8 8 8 25 25 25
++46 46 46 20 20 20 11 11 11 16 16 16 10 10 10 13 13 13 19 19 19 11 11 11
++11 11 11 13 13 13 13 13 13 11 11 11 11 11 11 13 13 13 17 17 17 21 21 21
++42 42 42 28 28 28 8 8 8 6 6 6 17 17 17 13 13 13 6 6 6 14 14 14
++10 10 10 8 8 8 11 11 11 14 14 14 13 13 13 13 13 13 19 19 19 25 25 25
++45 45 45 29 29 29 10 10 10 8 8 8 19 19 19 14 14 14 10 10 10 17 17 17
++19 19 19 24 24 24 33 33 33 36 36 36 24 24 24 10 10 10 10 10 10 20 20 20
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 10 10 10 20 20 20
++19 19 19 20 20 20 16 16 16 17 17 17 23 23 23 14 14 14 3 3 3 11 11 11
++17 17 17 17 17 17 20 20 20 21 21 21 16 16 16 6 6 6 10 10 10 20 20 20
++23 23 23 20 20 20 17 17 17 13 13 13 8 8 8 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 4 4 4 8 8 8 11 11 11 13 13 13 14 14 14
++17 17 17 14 14 14 11 11 11 6 6 6 0 0 0 0 0 0 20 20 20 39 39 39
++44 44 44 28 28 28 8 8 8 6 6 6 6 6 6 0 0 0 11 11 11 43 43 43
++46 46 46 23 23 23 8 8 8 21 21 21 23 23 23 0 0 0 0 0 0 37 37 37
++48 48 48 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 14 14 14 37 37 37
++58 58 58 19 19 19 0 0 0 11 11 11 17 17 17 13 13 13 24 24 24 42 42 42
++60 60 60 29 29 29 4 4 4 3 3 3 3 3 3 3 3 3 14 14 14 28 28 28
++63 63 63 36 36 36 13 13 13 10 10 10 6 6 6 6 6 6 20 20 20 34 34 34
++66 66 66 50 50 50 23 23 23 6 6 6 13 13 13 16 16 16 16 16 16 24 24 24
++63 63 63 54 54 54 29 29 29 8 8 8 13 13 13 20 20 20 21 21 21 27 27 27
++66 66 66 58 58 58 31 31 31 16 16 16 32 32 32 31 31 31 23 23 23 37 37 37
++65 65 65 66 66 66 38 38 38 36 36 36 48 48 48 39 39 39 33 33 33 34 34 34
++66 66 66 70 70 70 62 62 62 62 62 62 52 52 52 38 38 38 40 40 40 37 37 37
++58 58 58 78 78 78 56 56 56 60 60 60 74 74 74 52 52 52 45 45 45 57 57 57
++65 65 65 80 80 80 66 66 66 58 58 58 70 70 70 76 76 76 60 60 60 58 58 58
++61 61 61 65 65 65 62 62 62 60 60 60 71 71 71 85 85 85 82 82 82 70 70 70
++68 68 68 68 68 68 72 72 72 69 69 69 67 67 67 82 82 82 92 92 92 84 84 84
++75 75 75 76 76 76 74 74 74 78 78 78 82 82 82 75 75 75 83 83 83 105 105 105
++84 84 84 78 78 78 81 81 81 89 89 89 90 90 90 85 85 85 89 89 89 99 99 99
++103 103 102 90 90 90 78 78 78 83 83 83 101 101 101 112 112 113 103 103 102 87 87 87
++92 85 93 105 101 107 105 101 107 101 96 101 115 116 115 103 103 102 84 86 80 112 115 112
++115 116 115 105 105 105 99 100 97 96 95 96 92 90 91 92 85 93 101 96 101 112 112 113
++115 116 115 109 110 110 94 94 94 93 93 93 87 87 87 88 88 88 112 112 113 112 112 113
++91 91 91 85 85 85 99 99 99 115 116 115 115 116 115 115 116 115 112 112 113 105 104 105
++101 101 101 109 110 110 117 117 117 112 112 113 96 97 98 91 91 91 101 101 101 115 116 115
++109 110 110 96 96 96 96 96 96 105 105 105 93 93 93 87 87 87 103 103 102 99 99 99
++80 80 80 76 76 76 78 78 78 83 83 83 80 80 80 75 75 75 83 83 83 96 97 98
++101 101 101 101 101 101 94 94 94 81 81 81 70 70 70 68 68 68 68 68 68 67 67 67
++69 69 69 67 67 67 67 67 67 71 71 71 80 80 80 88 88 88 92 92 92 94 94 94
++88 88 88 87 87 87 76 76 76 75 75 75 81 81 81 63 63 63 48 48 48 57 57 57
++53 53 53 52 52 52 51 51 51 50 50 50 49 49 49 48 48 48 45 45 45 44 44 44
++48 48 48 46 46 46 66 66 66 74 74 74 62 62 62 68 68 68 73 73 73 57 57 57
++58 58 58 68 68 68 56 56 56 31 31 31 28 28 28 36 36 36 32 32 32 27 27 27
++29 29 29 25 25 25 34 34 34 59 59 59 59 59 59 48 48 48 59 59 59 62 62 62
++63 63 63 61 61 61 44 44 44 51 51 51 61 61 61 56 56 56 56 56 56 51 51 51
++57 57 57 60 60 60 58 58 58 58 58 58 51 51 51 50 50 50 25 25 25 28 28 28
++14 14 14 45 45 45 46 46 46 34 34 34 32 32 32 42 42 42 42 42 42 49 49 49
++54 54 54 45 45 45 52 52 52 52 52 52 36 36 36 38 38 38 40 40 40 19 19 19
++20 20 20 31 31 31 23 23 23 40 40 40 42 42 42 36 36 36 20 20 20 17 17 17
++19 19 19 13 13 13 14 14 14 6 6 6 13 13 13 17 17 17 3 3 3 13 13 13
++10 10 10 11 11 11 25 25 25 33 33 33 23 23 23 14 14 14 13 13 13 8 8 8
++6 6 6 10 10 10 14 14 14 14 14 14 13 13 13 11 11 11 11 11 11 13 13 13
++23 23 23 29 29 29 27 27 27 14 14 14 8 8 8 13 13 13 14 14 14 11 11 11
++10 10 10 14 14 14 16 16 16 8 8 8 13 13 13 6 6 6 3 3 3 29 29 29
++28 28 28 16 16 16 8 8 8 14 14 14 16 16 16 11 11 11 10 10 10 16 16 16
++13 13 13 11 11 11 11 11 11 11 11 11 8 8 8 11 11 11 25 25 25 42 42 42
++21 21 21 11 11 11 8 8 8 14 14 14 16 16 16 10 10 10 10 10 10 16 16 16
++8 8 8 16 16 16 17 17 17 10 10 10 6 6 6 17 17 17 32 32 32 39 39 39
++20 20 20 14 14 14 10 10 10 8 8 8 11 11 11 11 11 11 10 10 10 6 6 6
++14 14 14 13 13 13 6 6 6 10 10 10 17 17 17 13 13 13 20 20 20 42 42 42
++28 28 28 16 16 16 11 11 11 14 14 14 16 16 16 11 11 11 13 13 13 17 17 17
++31 31 31 39 39 39 34 34 34 14 14 14 10 10 10 24 24 24 25 25 25 13 13 13
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 11 11 11 20 20 20
++17 17 17 20 20 20 17 17 17 17 17 17 20 20 20 11 11 11 4 4 4 13 13 13
++20 20 20 19 19 19 19 19 19 17 17 17 13 13 13 10 10 10 14 14 14 20 20 20
++19 19 19 16 16 16 11 11 11 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 8 8 8
++19 19 19 19 19 19 19 19 19 14 14 14 4 4 4 0 0 0 4 4 4 13 13 13
++39 39 39 43 43 43 32 32 32 11 11 11 0 0 0 0 0 0 3 3 3 16 16 16
++38 38 38 45 45 45 36 36 36 16 16 16 10 10 10 10 10 10 4 4 4 3 3 3
++31 31 31 46 46 46 21 21 21 0 0 0 3 3 3 6 6 6 0 0 0 11 11 11
++39 39 39 51 51 51 21 21 21 0 0 0 16 16 16 25 25 25 14 14 14 24 24 24
++25 25 25 57 57 57 40 40 40 0 0 0 3 3 3 10 10 10 0 0 0 11 11 11
++32 32 32 60 60 60 43 43 43 6 6 6 11 11 11 13 13 13 3 3 3 17 17 17
++39 39 39 59 59 59 54 54 54 27 27 27 8 8 8 8 8 8 13 13 13 16 16 16
++32 32 32 56 56 56 56 56 56 32 32 32 14 14 14 16 16 16 23 23 23 31 31 31
++36 36 36 59 59 59 65 65 65 37 37 37 13 13 13 25 25 25 34 34 34 23 23 23
++33 33 33 54 54 54 61 61 61 54 54 54 38 38 38 34 34 34 44 44 44 34 34 34
++38 38 38 71 71 71 77 77 77 60 60 60 42 42 42 42 42 42 54 54 54 49 49 49
++46 46 46 66 66 66 81 81 81 81 81 81 48 48 48 40 40 40 65 65 65 45 45 45
++59 59 59 62 62 62 82 82 82 77 77 77 72 72 72 50 50 50 59 59 59 61 61 61
++62 62 62 58 58 58 61 61 61 73 73 73 81 81 81 77 77 77 71 71 71 68 68 68
++70 70 70 74 74 74 69 69 69 70 70 70 85 85 85 88 88 88 80 80 80 78 78 78
++80 80 80 74 74 74 81 81 81 81 81 81 75 75 75 93 93 93 103 103 102 84 84 84
++80 80 80 87 87 87 90 90 90 88 88 88 85 85 85 89 89 89 96 97 98 103 103 102
++99 99 99 82 82 82 80 80 80 101 101 101 112 112 113 103 103 102 89 89 89 87 87 87
++91 93 92 109 110 110 107 112 107 83 83 83 91 92 87 121 121 119 121 121 119 107 112 107
++99 100 97 95 95 94 99 100 97 105 105 105 105 105 105 101 96 101 96 91 95 96 95 96
++121 121 119 112 112 113 115 116 115 99 99 99 91 91 91 103 103 102 105 105 105 115 116 115
++105 105 105 99 99 99 105 105 105 117 117 117 115 116 115 117 117 117 117 117 117 109 110 110
++105 105 105 99 99 99 101 101 101 105 105 105 103 103 102 90 90 90 91 91 91 101 101 101
++105 104 105 117 117 117 105 105 105 99 99 99 101 101 101 91 91 91 93 93 93 103 103 102
++94 94 94 84 84 84 75 75 75 76 76 76 78 78 78 77 77 77 78 78 78 83 83 83
++99 99 99 103 103 102 105 105 105 101 101 101 91 91 91 83 83 83 75 75 75 70 70 70
++69 69 69 69 69 69 67 67 67 62 62 62 61 61 61 68 68 68 81 81 81 91 91 91
++95 95 94 96 96 96 91 91 91 92 92 92 93 93 93 76 76 76 58 58 58 58 58 58
++53 53 53 50 50 50 48 48 48 48 48 48 50 50 50 50 50 50 46 46 46 43 43 43
++40 40 40 36 36 36 52 52 52 69 69 69 71 71 71 75 75 75 68 68 68 40 40 40
++34 34 34 56 56 56 66 66 66 57 57 57 43 43 43 27 27 27 20 20 20 25 25 25
++24 24 24 27 27 27 37 37 37 60 60 60 66 66 66 62 62 62 67 67 67 60 60 60
++49 49 49 60 60 60 57 57 57 54 54 54 56 56 56 53 53 53 56 56 56 57 57 57
++51 51 51 57 57 57 58 58 58 61 61 61 53 53 53 50 50 50 23 23 23 23 23 23
++27 27 27 54 54 54 53 53 53 28 28 28 28 28 28 34 34 34 44 44 44 53 53 53
++49 49 49 40 40 40 51 51 51 54 54 54 38 38 38 36 36 36 37 37 37 20 20 20
++23 23 23 38 38 38 34 34 34 46 46 46 38 38 38 25 25 25 11 11 11 13 13 13
++8 8 8 13 13 13 20 20 20 13 13 13 14 14 14 16 16 16 8 8 8 20 20 20
++17 17 17 23 23 23 28 28 28 21 21 21 8 8 8 13 13 13 19 19 19 11 11 11
++17 17 17 13 13 13 10 10 10 11 11 11 16 16 16 17 17 17 14 14 14 11 11 11
++39 39 39 25 25 25 11 11 11 8 8 8 13 13 13 14 14 14 11 11 11 10 10 10
++14 14 14 8 8 8 17 17 17 13 13 13 11 11 11 23 23 23 27 27 27 31 31 31
++25 25 25 13 13 13 6 6 6 11 11 11 14 14 14 10 10 10 8 8 8 13 13 13
++21 21 21 19 19 19 13 13 13 8 8 8 17 17 17 29 29 29 34 34 34 33 33 33
++19 19 19 17 17 17 14 14 14 11 11 11 11 11 11 14 14 14 13 13 13 8 8 8
++8 8 8 19 19 19 25 25 25 25 25 25 25 25 25 31 31 31 37 37 37 39 39 39
++19 19 19 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 23 23 23
++14 14 14 23 23 23 24 24 24 21 21 21 23 23 23 27 27 27 34 34 34 44 44 44
++28 28 28 11 11 11 4 4 4 19 19 19 23 23 23 11 11 11 10 10 10 25 25 25
++37 37 37 37 37 37 36 36 36 32 32 32 25 25 25 19 19 19 14 14 14 14 14 14
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6 13 13 13 20 20 20
++17 17 17 20 20 20 19 19 19 16 16 16 16 16 16 10 10 10 8 8 8 17 17 17
++21 21 21 21 21 21 17 17 17 11 11 11 11 11 11 16 16 16 19 19 19 19 19 19
++14 14 14 10 10 10 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 11 11 11 17 17 17 17 17 17 14 14 14 10 10 10 3 3 3 0 0 0
++17 17 17 39 39 39 43 43 43 25 25 25 8 8 8 0 0 0 0 0 0 0 0 0
++20 20 20 44 44 44 48 48 48 25 25 25 14 14 14 16 16 16 8 8 8 0 0 0
++11 11 11 37 37 37 43 43 43 21 21 21 0 0 0 0 0 0 3 3 3 0 0 0
++10 10 10 40 40 40 48 48 48 23 23 23 3 3 3 16 16 16 24 24 24 19 19 19
++3 3 3 38 38 38 51 51 51 33 33 33 8 8 8 4 4 4 6 6 6 0 0 0
++0 0 0 40 40 40 59 59 59 44 44 44 17 17 17 4 4 4 8 8 8 11 11 11
++10 10 10 44 44 44 61 61 61 49 49 49 27 27 27 13 13 13 13 13 13 20 20 20
++10 10 10 40 40 40 59 59 59 54 54 54 38 38 38 23 23 23 23 23 23 33 33 33
++19 19 19 38 38 38 60 60 60 60 60 60 37 37 37 21 21 21 25 25 25 31 31 31
++16 16 16 45 45 45 67 67 67 69 69 69 50 50 50 34 34 34 39 39 39 37 37 37
++49 49 49 63 63 63 71 71 71 70 70 70 56 56 56 42 42 42 44 44 44 46 46 46
++42 42 42 63 63 63 74 74 74 82 82 82 66 66 66 46 46 46 56 56 56 56 56 56
++49 49 49 65 65 65 76 76 76 96 97 98 67 67 67 63 63 63 56 56 56 68 68 68
++62 62 62 63 63 63 72 72 72 83 83 83 82 82 82 72 72 72 67 67 67 70 70 70
++72 72 72 74 74 74 73 73 73 81 81 81 94 94 94 89 89 89 76 76 76 76 76 76
++81 81 81 84 84 84 80 80 80 78 78 78 94 94 94 105 105 105 96 96 96 80 80 80
++83 83 83 92 92 92 93 93 93 87 87 87 89 89 89 101 101 101 105 105 105 99 99 99
++87 87 87 87 87 87 96 97 98 112 112 113 109 110 110 91 91 91 87 87 87 99 99 99
++113 122 108 94 99 95 91 96 86 88 90 87 99 100 97 115 116 115 121 121 119 128 121 122
++101 101 101 103 103 102 109 110 110 115 116 115 112 112 113 105 104 105 101 96 101 101 96 101
++103 103 102 103 103 102 115 116 115 105 105 105 103 103 102 101 101 101 90 90 90 101 101 101
++121 121 119 112 112 113 115 116 115 117 117 117 115 116 115 115 116 115 117 117 117 112 112 113
++99 99 99 88 88 88 87 87 87 101 101 101 109 110 110 103 103 102 93 93 93 91 91 91
++112 112 113 115 116 115 105 105 105 101 101 101 103 103 102 105 105 105 105 105 105 92 92 92
++109 110 110 99 99 99 87 87 87 81 81 81 82 82 82 83 83 83 81 81 81 78 78 78
++83 83 83 90 90 90 101 101 101 109 110 110 105 105 105 96 96 96 87 87 87 84 84 84
++72 72 72 70 70 70 67 67 67 66 66 66 66 66 66 68 68 68 69 69 69 69 69 69
++83 83 83 85 85 85 89 89 89 94 94 94 96 96 96 91 91 91 82 82 82 75 75 75
++62 62 62 57 57 57 50 50 50 46 46 46 49 49 49 50 50 50 49 49 49 46 46 46
++53 53 53 63 63 63 76 76 76 73 73 73 58 58 58 56 56 56 65 65 65 68 68 68
++42 42 42 40 40 40 45 45 45 57 57 57 59 59 59 45 45 45 37 37 37 43 43 43
++59 59 59 63 63 63 66 66 66 71 71 71 67 67 67 61 61 61 60 60 60 49 49 49
++21 21 21 33 33 33 50 50 50 58 58 58 62 62 62 57 57 57 51 51 51 61 61 61
++53 53 53 56 56 56 56 56 56 62 62 62 59 59 59 57 57 57 24 24 24 16 16 16
++29 29 29 57 57 57 59 59 59 21 21 21 36 36 36 36 36 36 51 51 51 61 61 61
++56 56 56 45 45 45 49 49 49 49 49 49 31 31 31 25 25 25 27 27 27 16 16 16
++23 23 23 44 44 44 44 44 44 52 52 52 33 33 33 16 16 16 6 6 6 14 14 14
++8 8 8 25 25 25 39 39 39 36 36 36 32 32 32 29 29 29 27 27 27 39 39 39
++43 43 43 34 34 34 17 17 17 3 3 3 14 14 14 37 37 37 36 36 36 10 10 10
++6 6 6 0 0 0 0 0 0 13 13 13 32 32 32 40 40 40 37 37 37 29 29 29
++19 19 19 0 0 0 3 3 3 29 29 29 45 45 45 44 44 44 39 39 39 42 42 42
++43 43 43 27 27 27 38 38 38 33 33 33 21 21 21 38 38 38 44 44 44 28 28 28
++17 17 17 4 4 4 0 0 0 4 4 4 6 6 6 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 3 3 3 24 24 24 39 39 39 45 45 45 45 45 45
++46 46 46 34 34 34 11 11 11 0 0 0 21 21 21 51 51 51 58 58 58 48 48 48
++54 54 54 56 56 56 52 52 52 45 45 45 42 42 42 43 43 43 44 44 44 44 44 44
++24 24 24 29 29 29 33 33 33 34 34 34 31 31 31 28 28 28 31 31 31 33 33 33
++32 32 32 32 32 32 39 39 39 45 45 45 44 44 44 45 45 45 50 50 50 51 51 51
++51 51 51 40 40 40 29 29 29 33 33 33 42 42 42 34 34 34 31 31 31 40 40 40
++31 31 31 29 29 29 39 39 39 53 53 53 46 46 46 23 23 23 11 11 11 19 19 19
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 10 10 10 14 14 14 20 20 20
++17 17 17 20 20 20 20 20 20 16 16 16 10 10 10 6 6 6 11 11 11 20 20 20
++21 21 21 21 21 21 16 16 16 10 10 10 13 13 13 20 20 20 20 20 20 14 14 14
++6 6 6 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 8 8 8 11 11 11 17 17 17 20 20 20 14 14 14 3 3 3
++0 0 0 19 19 19 38 38 38 42 42 42 27 27 27 4 4 4 0 0 0 6 6 6
++6 6 6 21 21 21 38 38 38 44 44 44 36 36 36 16 16 16 4 4 4 8 8 8
++0 0 0 4 4 4 38 38 38 50 50 50 20 20 20 0 0 0 3 3 3 10 10 10
++0 0 0 8 8 8 43 43 43 51 51 51 24 24 24 10 10 10 21 21 21 24 24 24
++16 16 16 0 0 0 29 29 29 56 56 56 37 37 37 4 4 4 0 0 0 8 8 8
++8 8 8 0 0 0 34 34 34 63 63 63 45 45 45 13 13 13 8 8 8 14 14 14
++8 8 8 14 14 14 37 37 37 58 58 58 56 56 56 32 32 32 19 19 19 25 25 25
++25 25 25 20 20 20 34 34 34 60 60 60 63 63 63 39 39 39 21 21 21 24 24 24
++27 27 27 20 20 20 28 28 28 59 59 59 70 70 70 39 39 39 16 16 16 36 36 36
++32 32 32 43 43 43 48 48 48 62 62 62 72 72 72 49 49 49 32 32 32 44 44 44
++59 59 59 43 43 43 42 42 42 66 66 66 75 75 75 61 61 61 48 48 48 45 45 45
++59 59 59 70 70 70 53 53 53 65 65 65 89 89 89 70 70 70 51 51 51 58 58 58
++60 60 60 70 70 70 83 83 83 66 66 66 92 92 92 76 76 76 74 74 74 61 61 61
++65 65 65 80 80 80 89 89 89 81 81 81 71 71 71 71 71 71 74 74 74 75 75 75
++72 72 72 73 73 73 87 87 87 95 95 94 87 87 87 83 83 83 84 84 84 80 80 80
++84 84 84 84 84 84 81 81 81 92 92 92 109 110 110 96 97 98 82 82 82 90 90 90
++94 94 94 92 92 92 88 88 88 90 90 90 101 101 101 109 110 110 103 103 102 88 88 88
++85 85 85 105 105 105 121 121 119 112 112 113 95 95 94 92 92 92 103 103 102 115 116 115
++99 100 97 91 93 92 88 90 87 99 99 99 117 117 117 121 113 124 111 104 112 124 112 115
++115 116 115 112 115 112 105 105 105 101 101 101 99 99 99 100 101 103 105 104 105 103 103 102
++99 99 99 112 112 113 109 110 110 121 121 119 122 121 126 101 101 101 101 101 101 101 101 101
++112 112 113 105 105 105 109 110 110 112 112 113 112 112 113 117 117 117 125 122 126 122 121 126
++105 105 105 99 99 99 91 91 91 93 93 93 103 103 102 109 110 110 105 105 105 96 96 96
++96 97 98 109 110 110 117 117 117 112 112 113 99 99 99 101 101 101 109 110 110 103 103 102
++105 105 105 105 105 105 96 97 98 87 87 87 81 81 81 82 82 82 83 83 83 82 82 82
++78 78 78 83 83 83 94 94 94 105 104 105 105 105 105 103 103 102 99 99 99 101 101 101
++96 96 96 89 89 89 78 78 78 72 72 72 70 70 70 70 70 70 68 68 68 65 65 65
++63 63 63 63 63 63 71 71 71 77 77 77 83 83 83 92 92 92 96 97 98 90 90 90
++90 90 90 83 83 83 71 71 71 60 60 60 53 53 53 52 52 52 53 53 53 54 54 54
++74 74 74 71 71 71 61 61 61 45 45 45 36 36 36 38 38 38 51 51 51 62 62 62
++71 71 71 48 48 48 34 34 34 51 51 51 70 70 70 71 71 71 65 65 65 66 66 66
++66 66 66 70 70 70 69 69 69 62 62 62 52 52 52 49 49 49 53 53 53 56 56 56
++40 40 40 24 24 24 36 36 36 56 56 56 68 68 68 57 57 57 38 38 38 53 53 53
++60 60 60 57 57 57 51 51 51 59 59 59 61 61 61 61 61 61 27 27 27 13 13 13
++28 28 28 54 54 54 59 59 59 20 20 20 44 44 44 36 36 36 49 49 49 52 52 52
++50 50 50 40 40 40 37 37 37 32 32 32 24 24 24 28 28 28 33 33 33 25 25 25
++25 25 25 45 45 45 46 46 46 51 51 51 28 28 28 14 14 14 11 11 11 19 19 19
++16 16 16 38 38 38 53 53 53 52 52 52 50 50 50 44 44 44 42 42 42 49 49 49
++44 44 44 46 46 46 39 39 39 24 24 24 25 25 25 42 42 42 48 48 48 39 39 39
++11 11 11 6 6 6 8 8 8 21 21 21 36 36 36 40 40 40 33 33 33 23 23 23
++4 4 4 3 3 3 21 21 21 46 46 46 54 54 54 45 45 45 39 39 39 44 44 44
++54 54 54 38 38 38 48 48 48 42 42 42 25 25 25 34 34 34 36 36 36 20 20 20
++10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++8 8 8 0 0 0 0 0 0 23 23 23 31 31 31 27 27 27 34 34 34 50 50 50
++51 51 51 52 52 52 37 37 37 10 10 10 3 3 3 25 25 25 44 44 44 49 49 49
++48 48 48 50 50 50 51 51 51 48 48 48 40 40 40 27 27 27 8 8 8 0 0 0
++16 16 16 19 19 19 23 23 23 24 24 24 24 24 24 24 24 24 25 25 25 28 28 28
++29 29 29 13 13 13 25 25 25 46 46 46 45 45 45 33 33 33 32 32 32 33 33 33
++24 24 24 27 27 27 11 11 11 6 6 6 28 28 28 40 40 40 37 37 37 33 33 33
++10 10 10 0 0 0 6 6 6 17 17 17 13 13 13 0 0 0 4 4 4 23 23 23
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 13 13 13 17 17 17 20 20 20
++17 17 17 20 20 20 21 21 21 16 16 16 6 6 6 6 6 6 14 14 14 20 20 20
++19 19 19 19 19 19 16 16 16 11 11 11 16 16 16 21 21 21 17 17 17 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 3 3 3 10 10 10 19 19 19 17 17 17 10 10 10
++0 0 0 4 4 4 24 24 24 42 42 42 39 39 39 20 20 20 0 0 0 0 0 0
++6 6 6 6 6 6 24 24 24 45 45 45 46 46 46 28 28 28 11 11 11 3 3 3
++0 0 0 4 4 4 13 13 13 34 34 34 48 48 48 23 23 23 0 0 0 8 8 8
++3 3 3 6 6 6 8 8 8 29 29 29 51 51 51 37 37 37 14 14 14 20 20 20
++21 21 21 8 8 8 3 3 3 36 36 36 56 56 56 29 29 29 0 0 0 10 10 10
++14 14 14 4 4 4 0 0 0 33 33 33 63 63 63 49 49 49 13 13 13 6 6 6
++16 16 16 3 3 3 14 14 14 44 44 44 61 61 61 54 54 54 36 36 36 20 20 20
++31 31 31 17 17 17 20 20 20 42 42 42 59 59 59 56 56 56 36 36 36 16 16 16
++24 24 24 27 27 27 23 23 23 36 36 36 61 61 61 65 65 65 43 43 43 25 25 25
++34 34 34 39 39 39 36 36 36 43 43 43 68 68 68 71 71 71 57 57 57 60 60 60
++46 46 46 42 42 42 39 39 39 46 46 46 65 65 65 77 77 77 69 69 69 54 54 54
++68 68 68 60 60 60 52 52 52 58 58 58 69 69 69 81 81 81 77 77 77 51 51 51
++74 74 74 85 85 85 62 62 62 70 70 70 71 71 71 96 97 98 75 75 75 67 67 67
++72 72 72 87 87 87 88 88 88 75 75 75 68 68 68 75 75 75 80 80 80 75 75 75
++78 78 78 84 84 84 95 95 94 94 94 94 81 81 81 80 80 80 87 87 87 85 85 85
++87 87 87 80 80 80 96 96 96 109 110 110 95 95 94 87 87 87 91 91 91 92 92 92
++96 97 98 92 92 92 93 93 93 103 103 102 109 110 110 101 101 101 93 93 93 90 90 90
++103 103 102 121 121 119 121 121 119 99 99 99 92 92 92 105 105 105 115 116 115 112 112 113
++96 91 95 101 96 101 111 104 112 121 113 124 122 121 126 105 104 105 94 94 95 96 97 98
++127 127 127 121 121 119 105 105 105 93 93 93 96 97 98 109 110 110 109 110 110 100 101 103
++109 110 110 121 121 119 109 110 110 121 121 119 125 125 127 115 116 115 117 117 117 115 116 115
++112 112 113 109 110 110 109 110 110 109 110 110 109 110 110 115 116 115 121 121 119 117 117 117
++127 127 127 117 117 117 103 103 102 92 92 92 93 93 93 103 103 102 109 110 110 112 112 113
++89 89 89 112 112 113 112 112 113 105 105 105 112 112 113 105 104 105 94 94 94 109 110 110
++105 105 105 109 110 110 109 110 110 99 99 99 92 92 92 92 92 92 95 95 94 95 95 94
++96 96 96 96 96 96 101 101 101 105 105 105 105 105 105 103 103 102 103 103 102 105 105 105
++105 104 105 105 104 105 101 101 101 91 91 91 80 80 80 72 72 72 71 71 71 72 72 72
++68 68 68 63 63 63 67 67 67 69 69 69 70 70 70 83 83 83 91 91 91 83 83 83
++90 90 90 89 89 89 85 85 85 76 76 76 69 69 69 68 68 68 72 72 72 77 77 77
++80 80 80 69 69 69 51 51 51 44 44 44 50 50 50 54 54 54 54 54 54 56 56 56
++85 85 85 73 73 73 69 69 69 74 74 74 78 78 78 77 77 77 76 76 76 77 77 77
++67 67 67 63 63 63 57 57 57 43 43 43 31 31 31 24 24 24 28 28 28 39 39 39
++65 65 65 36 36 36 28 28 28 40 40 40 58 58 58 56 56 56 40 40 40 53 53 53
++57 57 57 54 54 54 48 48 48 51 51 51 51 51 51 53 53 53 24 24 24 17 17 17
++29 29 29 48 48 48 52 52 52 16 16 16 42 42 42 28 28 28 33 33 33 31 31 31
++36 36 36 34 34 34 31 31 31 27 27 27 29 29 29 37 37 37 33 33 33 19 19 19
++34 34 34 49 49 49 45 45 45 48 48 48 24 24 24 16 16 16 16 16 16 19 19 19
++19 19 19 40 40 40 52 52 52 54 54 54 54 54 54 49 49 49 43 43 43 43 43 43
++43 43 43 51 51 51 53 53 53 46 46 46 42 42 42 43 43 43 49 49 49 53 53 53
++50 50 50 46 46 46 45 45 45 48 48 48 50 50 50 49 49 49 43 43 43 37 37 37
++34 34 34 37 37 37 44 44 44 50 50 50 46 46 46 38 38 38 37 37 37 42 42 42
++50 50 50 40 40 40 49 49 49 45 45 45 33 33 33 31 31 31 28 28 28 32 32 32
++43 43 43 39 39 39 37 37 37 38 38 38 38 38 38 37 37 37 37 37 37 38 38 38
++37 37 37 29 29 29 34 34 34 45 45 45 42 42 42 29 29 29 33 33 33 50 50 50
++39 39 39 51 51 51 57 57 57 50 50 50 43 43 43 43 43 43 49 49 49 52 52 52
++46 46 46 43 43 43 40 40 40 43 43 43 46 46 46 48 48 48 46 46 46 45 45 45
++43 43 43 39 39 39 33 33 33 29 29 29 27 27 27 23 23 23 19 19 19 14 14 14
++13 13 13 0 0 0 19 19 19 38 38 38 29 29 29 11 11 11 8 8 8 10 10 10
++13 13 13 17 17 17 8 8 8 8 8 8 32 32 32 44 44 44 34 34 34 21 21 21
++13 13 13 16 16 16 13 13 13 8 8 8 10 10 10 20 20 20 32 32 32 39 39 39
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 6 6 6 14 14 14 20 20 20 20 20 20
++17 17 17 19 19 19 21 21 21 14 14 14 4 4 4 8 8 8 17 17 17 20 20 20
++17 17 17 16 16 16 14 14 14 14 14 14 19 19 19 20 20 20 13 13 13 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 4 4 4 0 0 0 0 0 0 3 3 3 13 13 13 17 17 17 19 19 19
++10 10 10 0 0 0 6 6 6 24 24 24 38 38 38 40 40 40 23 23 23 0 0 0
++0 0 0 6 6 6 14 14 14 25 25 25 39 39 39 49 49 49 33 33 33 0 0 0
++4 4 4 0 0 0 0 0 0 10 10 10 38 38 38 51 51 51 31 31 31 0 0 0
++10 10 10 0 0 0 0 0 0 3 3 3 32 32 32 51 51 51 43 43 43 20 20 20
++19 19 19 17 17 17 8 8 8 6 6 6 31 31 31 51 51 51 39 39 39 4 4 4
++0 0 0 13 13 13 10 10 10 4 4 4 33 33 33 61 61 61 50 50 50 11 11 11
++10 10 10 11 11 11 13 13 13 17 17 17 40 40 40 65 65 65 58 58 58 29 29 29
++11 11 11 23 23 23 23 23 23 17 17 17 33 33 33 62 62 62 62 62 62 36 36 36
++19 19 19 24 24 24 31 31 31 25 25 25 33 33 33 67 67 67 73 73 73 42 42 42
++46 46 46 53 53 53 53 53 53 34 34 34 39 39 39 70 70 70 74 74 74 58 58 58
++39 39 39 46 46 46 50 50 50 40 40 40 45 45 45 68 68 68 77 77 77 81 81 81
++58 58 58 48 48 48 52 52 52 59 59 59 54 54 54 70 70 70 88 88 88 81 81 81
++83 83 83 61 61 61 70 70 70 60 60 60 72 72 72 72 72 72 93 93 93 83 83 83
++85 85 85 81 81 81 75 75 75 74 74 74 75 75 75 77 77 77 77 77 77 76 76 76
++88 88 88 96 97 98 93 93 93 84 84 84 87 87 87 84 84 84 82 82 82 88 88 88
++83 83 83 99 99 99 109 110 110 99 99 99 87 87 87 90 90 90 96 97 98 95 95 94
++95 95 94 99 99 99 109 110 110 115 116 115 105 104 105 89 89 89 93 93 93 109 110 110
++127 127 127 117 117 117 103 103 102 96 96 96 105 105 105 115 116 115 109 110 110 96 97 98
++111 104 112 111 104 112 121 121 119 118 122 119 94 99 95 91 96 86 86 124 83 86 124 83
++112 115 112 118 122 119 121 121 119 115 116 115 112 112 113 112 112 113 112 112 113 109 110 110
++105 105 105 112 112 113 121 121 119 112 112 113 115 116 115 128 128 128 117 117 117 115 116 115
++109 110 110 109 110 110 112 112 113 112 112 113 112 112 113 117 117 117 121 121 119 121 121 119
++127 127 127 117 117 117 109 110 110 105 105 105 101 101 101 99 99 99 109 110 110 121 121 119
++109 110 110 103 103 102 103 103 102 105 105 105 115 116 115 115 116 115 99 99 99 99 99 99
++112 112 113 115 116 115 115 116 115 109 110 110 109 110 110 109 110 110 109 110 110 105 105 105
++105 104 105 103 103 102 103 103 102 105 104 105 105 104 105 103 103 102 101 101 101 103 103 102
++96 96 96 99 99 99 99 99 99 99 99 99 95 95 94 89 89 89 83 83 83 80 80 80
++82 82 82 77 77 77 77 77 77 75 75 75 73 73 73 80 80 80 83 83 83 73 73 73
++70 70 70 75 75 75 81 81 81 81 81 81 77 77 77 76 76 76 80 80 80 84 84 84
++77 77 77 75 75 75 72 72 72 70 70 70 68 68 68 65 65 65 66 66 66 69 69 69
++59 59 59 62 62 62 67 67 67 63 63 63 54 54 54 52 52 52 56 56 56 54 54 54
++58 58 58 51 51 51 46 46 46 38 38 38 38 38 38 39 39 39 36 36 36 43 43 43
++51 51 51 43 43 43 32 32 32 28 28 28 43 43 43 51 51 51 45 45 45 45 45 45
++43 43 43 46 46 46 43 43 43 44 44 44 38 38 38 40 40 40 20 20 20 24 24 24
++24 24 24 36 36 36 39 39 39 16 16 16 32 32 32 23 23 23 27 27 27 27 27 27
++27 27 27 34 34 34 37 37 37 37 37 37 40 40 40 39 39 39 24 24 24 8 8 8
++45 45 45 53 53 53 48 48 48 46 46 46 20 20 20 16 16 16 16 16 16 14 14 14
++27 27 27 45 45 45 49 49 49 50 50 50 53 53 53 50 50 50 46 46 46 40 40 40
++48 48 48 51 51 51 52 52 52 54 54 54 54 54 54 48 48 48 43 43 43 46 46 46
++51 51 51 49 49 49 46 46 46 43 43 43 42 42 42 42 42 42 44 44 44 45 45 45
++46 46 46 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 50 50 50 50 50 50
++48 48 48 45 45 45 50 50 50 45 45 45 37 37 37 29 29 29 28 28 28 43 43 43
++48 48 48 46 46 46 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 46 46 46
++43 43 43 45 45 45 46 46 46 46 46 46 46 46 46 48 48 48 48 48 48 48 48 48
++48 48 48 45 45 45 44 44 44 49 49 49 53 53 53 52 52 52 46 46 46 40 40 40
++48 48 48 45 45 45 45 45 45 49 49 49 49 49 49 42 42 42 32 32 32 27 27 27
++20 20 20 14 14 14 10 10 10 10 10 10 13 13 13 16 16 16 14 14 14 11 11 11
++11 11 11 25 25 25 38 38 38 34 34 34 19 19 19 11 11 11 13 13 13 11 11 11
++16 16 16 10 10 10 14 14 14 28 28 28 36 36 36 28 28 28 13 13 13 0 0 0
++6 6 6 17 17 17 19 19 19 11 11 11 17 17 17 31 31 31 33 33 33 25 25 25
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 6 6 6 17 17 17 21 21 21 20 20 20
++17 17 17 17 17 17 21 21 21 14 14 14 3 3 3 10 10 10 20 20 20 17 17 17
++19 19 19 14 14 14 13 13 13 17 17 17 20 20 20 16 16 16 6 6 6 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 13 13 13 21 21 21
++13 13 13 3 3 3 0 0 0 6 6 6 24 24 24 43 43 43 39 39 39 16 16 16
++0 0 0 0 0 0 10 10 10 14 14 14 25 25 25 45 45 45 45 45 45 24 24 24
++8 8 8 0 0 0 0 0 0 3 3 3 6 6 6 42 42 42 52 52 52 16 16 16
++10 10 10 0 0 0 4 4 4 6 6 6 0 0 0 31 31 31 56 56 56 40 40 40
++24 24 24 14 14 14 19 19 19 6 6 6 0 0 0 39 39 39 58 58 58 29 29 29
++10 10 10 6 6 6 20 20 20 10 10 10 0 0 0 38 38 38 63 63 63 42 42 42
++19 19 19 16 16 16 13 13 13 10 10 10 20 20 20 46 46 46 59 59 59 53 53 53
++20 20 20 23 23 23 21 21 21 14 14 14 19 19 19 45 45 45 63 63 63 60 60 60
++36 36 36 23 23 23 28 28 28 31 31 31 25 25 25 45 45 45 69 69 69 70 70 70
++50 50 50 45 45 45 46 46 46 37 37 37 42 42 42 66 66 66 74 74 74 75 75 75
++53 53 53 44 44 44 46 46 46 46 46 46 51 51 51 62 62 62 74 74 74 94 94 94
++63 63 63 56 56 56 51 51 51 57 57 57 62 62 62 66 66 66 78 78 78 99 99 99
++82 82 82 66 66 66 60 60 60 76 76 76 60 60 60 74 74 74 88 88 88 99 99 99
++94 94 94 80 80 80 72 72 72 76 76 76 80 80 80 77 77 77 81 81 81 89 89 89
++95 95 94 95 95 94 87 87 87 83 83 83 90 90 90 87 87 87 84 84 84 91 91 91
++94 94 94 112 112 113 103 103 102 87 87 87 94 94 94 99 99 99 94 94 94 101 101 101
++101 101 101 109 110 110 112 112 113 109 110 110 96 97 98 94 94 94 109 110 110 125 122 126
++128 128 128 109 110 110 99 99 99 105 105 105 115 116 115 112 112 113 103 103 102 99 99 99
++105 101 107 125 122 126 116 129 109 86 124 83 86 124 83 83 172 72 83 172 115 83 172 72
++94 99 95 107 112 107 118 122 119 128 129 128 118 122 119 105 105 105 105 104 105 112 112 113
++105 105 105 112 112 113 129 129 130 125 122 126 121 121 119 128 128 128 117 117 117 115 116 115
++117 117 117 121 121 119 121 121 119 115 116 115 115 116 115 117 117 117 117 117 117 115 116 115
++115 116 115 112 112 113 115 116 115 117 117 117 115 116 115 109 110 110 112 112 113 117 117 117
++115 116 115 101 101 101 115 116 115 117 117 117 103 103 102 105 105 105 109 110 110 105 104 105
++109 110 110 109 110 110 105 105 105 105 105 105 109 110 110 109 110 110 105 105 105 103 103 102
++101 101 101 101 101 101 101 101 101 99 99 99 99 99 99 99 99 99 99 99 99 96 96 96
++99 99 99 94 94 94 89 89 89 89 89 89 93 93 93 95 95 94 93 93 93 90 90 90
++87 87 87 84 84 84 83 83 83 83 83 83 83 83 83 85 85 85 83 83 83 77 77 77
++74 74 74 77 77 77 80 80 80 78 78 78 75 75 75 72 72 72 69 69 69 68 68 68
++75 75 75 67 67 67 65 65 65 67 67 67 67 67 67 66 66 66 62 62 62 60 60 60
++60 60 60 58 58 58 59 59 59 57 57 57 53 53 53 59 59 59 60 60 60 51 51 51
++52 52 52 53 53 53 53 53 53 43 43 43 49 49 49 56 56 56 46 46 46 48 48 48
++38 38 38 52 52 52 48 48 48 39 39 39 42 42 42 44 44 44 42 42 42 33 33 33
++34 34 34 37 37 37 34 34 34 39 39 39 38 38 38 43 43 43 23 23 23 27 27 27
++17 17 17 28 28 28 36 36 36 32 32 32 31 31 31 25 25 25 32 32 32 38 38 38
++29 29 29 34 34 34 38 38 38 42 42 42 43 43 43 33 33 33 27 27 27 33 33 33
++48 48 48 57 57 57 50 50 50 48 48 48 19 19 19 13 13 13 16 16 16 11 11 11
++37 37 37 53 53 53 49 49 49 46 46 46 50 50 50 50 50 50 53 53 53 49 49 49
++40 40 40 51 51 51 56 56 56 56 56 56 52 52 52 42 42 42 39 39 39 50 50 50
++53 53 53 52 52 52 49 49 49 45 45 45 43 43 43 43 43 43 45 45 45 48 48 48
++44 44 44 43 43 43 44 44 44 45 45 45 48 48 48 48 48 48 44 44 44 42 42 42
++44 44 44 42 42 42 44 44 44 34 34 34 25 25 25 25 25 25 28 28 28 40 40 40
++48 48 48 48 48 48 48 48 48 48 48 48 46 46 46 46 46 46 48 48 48 48 48 48
++46 46 46 48 48 48 46 46 46 43 43 43 45 45 45 49 49 49 46 46 46 40 40 40
++50 50 50 50 50 50 49 49 49 44 44 44 40 40 40 40 40 40 46 46 46 51 51 51
++50 50 50 38 38 38 27 27 27 21 21 21 17 17 17 11 11 11 10 10 10 11 11 11
++11 11 11 11 11 11 11 11 11 11 11 11 13 13 13 14 14 14 16 16 16 14 14 14
++21 21 21 34 34 34 34 34 34 20 20 20 11 11 11 11 11 11 13 13 13 14 14 14
++13 13 13 10 10 10 27 27 27 42 42 42 32 32 32 20 20 20 19 19 19 14 14 14
++17 17 17 17 17 17 13 13 13 11 11 11 19 19 19 28 28 28 28 28 28 20 20 20
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 6 6 6 17 17 17 21 21 21 20 20 20
++17 17 17 17 17 17 20 20 20 14 14 14 3 3 3 11 11 11 20 20 20 16 16 16
++21 21 21 13 13 13 11 11 11 17 17 17 19 19 19 11 11 11 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 13 13 13
++19 19 19 8 8 8 3 3 3 4 4 4 10 10 10 29 29 29 40 40 40 36 36 36
++3 3 3 0 0 0 8 8 8 21 21 21 19 19 19 21 21 21 38 38 38 50 50 50
++0 0 0 8 8 8 10 10 10 0 0 0 0 0 0 4 4 4 31 31 31 57 57 57
++14 14 14 10 10 10 6 6 6 8 8 8 4 4 4 3 3 3 28 28 28 59 59 59
++36 36 36 25 25 25 17 17 17 13 13 13 6 6 6 3 3 3 29 29 29 62 62 62
++39 39 39 14 14 14 0 0 0 10 10 10 16 16 16 10 10 10 32 32 32 67 67 67
++44 44 44 16 16 16 10 10 10 21 21 21 14 14 14 11 11 11 40 40 40 70 70 70
++58 58 58 23 23 23 11 11 11 28 28 28 24 24 24 16 16 16 40 40 40 69 69 69
++59 59 59 38 38 38 24 24 24 31 31 31 32 32 32 27 27 27 45 45 45 76 76 76
++80 80 80 49 49 49 33 33 33 46 46 46 63 63 63 48 48 48 37 37 37 74 74 74
++84 84 84 57 57 57 48 48 48 50 50 50 61 61 61 68 68 68 61 61 61 67 67 67
++89 89 89 73 73 73 62 62 62 54 54 54 59 59 59 76 76 76 82 82 82 74 74 74
++91 91 91 78 78 78 70 70 70 68 68 68 74 74 74 72 72 72 81 81 81 92 92 92
++99 99 99 88 88 88 80 80 80 78 78 78 76 76 76 77 77 77 89 89 89 103 103 102
++99 99 99 83 83 83 83 83 83 91 91 91 88 88 88 87 87 87 94 94 94 95 95 94
++121 121 119 96 97 98 90 90 90 96 97 98 96 96 96 96 96 96 101 101 101 103 103 102
++112 112 113 115 116 115 109 110 110 96 96 96 95 95 94 112 112 113 125 125 127 128 128 128
++117 117 117 105 105 105 109 110 110 121 121 119 115 116 115 103 103 102 103 103 102 115 116 115
++127 127 127 116 129 109 86 124 83 86 124 83 83 172 115 83 172 72 83 172 72 83 172 72
++112 115 112 105 105 105 112 115 112 129 129 130 128 129 128 112 112 113 105 105 105 115 116 115
++112 112 113 115 116 115 121 121 119 137 137 137 127 127 127 109 110 110 121 121 119 121 121 119
++115 116 115 121 121 119 121 121 119 115 116 115 115 116 115 121 121 119 121 121 119 117 117 117
++115 116 115 121 121 119 117 117 117 112 112 113 112 112 113 117 117 117 117 117 117 112 112 113
++115 116 115 112 112 113 112 112 113 109 110 110 112 112 113 115 116 115 109 110 110 112 112 113
++109 110 110 109 110 110 105 105 105 105 105 105 105 105 105 105 104 105 103 103 102 103 103 102
++103 103 102 105 104 105 101 101 101 95 95 94 94 94 94 96 97 98 96 97 98 94 94 94
++96 97 98 99 99 99 101 101 101 96 97 98 91 91 91 87 87 87 85 85 85 85 85 85
++85 85 85 84 84 84 82 82 82 84 84 84 87 87 87 87 87 87 85 85 85 84 84 84
++84 84 84 82 82 82 78 78 78 78 78 78 81 81 81 80 80 80 76 76 76 74 74 74
++75 75 75 69 69 69 71 71 71 76 76 76 74 74 74 72 72 72 72 72 72 70 70 70
++61 61 61 53 53 53 51 51 51 52 52 52 54 54 54 62 62 62 60 60 60 45 45 45
++45 45 45 57 57 57 59 59 59 38 38 38 38 38 38 48 48 48 37 37 37 37 37 37
++37 37 37 54 54 54 51 51 51 52 52 52 53 53 53 49 49 49 54 54 54 52 52 52
++34 34 34 31 31 31 27 27 27 38 38 38 48 48 48 56 56 56 29 29 29 24 24 24
++20 20 20 32 32 32 45 45 45 52 52 52 36 36 36 31 31 31 34 34 34 43 43 43
++52 52 52 49 49 49 42 42 42 39 39 39 32 32 32 14 14 14 21 21 21 50 50 50
++44 44 44 56 56 56 53 53 53 50 50 50 19 19 19 13 13 13 17 17 17 13 13 13
++39 39 39 56 56 56 46 46 46 42 42 42 43 43 43 45 45 45 56 56 56 54 54 54
++50 50 50 48 48 48 40 40 40 44 44 44 57 57 57 58 58 58 46 46 46 43 43 43
++44 44 44 44 44 44 46 46 46 48 48 48 48 48 48 48 48 48 46 46 46 45 45 45
++51 51 51 48 48 48 46 46 46 49 49 49 48 48 48 44 44 44 44 44 44 48 48 48
++46 46 46 42 42 42 44 44 44 32 32 32 23 23 23 37 37 37 44 44 44 48 48 48
++45 45 45 46 46 46 46 46 46 45 45 45 45 45 45 45 45 45 46 46 46 46 46 46
++44 44 44 40 40 40 42 42 42 46 46 46 48 48 48 45 45 45 45 45 45 49 49 49
++48 48 48 48 48 48 46 46 46 45 45 45 49 49 49 51 51 51 45 45 45 37 37 37
++37 37 37 27 27 27 17 17 17 16 16 16 14 14 14 10 10 10 11 11 11 14 14 14
++10 10 10 14 14 14 19 19 19 19 19 19 14 14 14 13 13 13 14 14 14 17 17 17
++37 37 37 34 34 34 19 19 19 8 8 8 14 14 14 13 13 13 10 10 10 16 16 16
++13 13 13 19 19 19 38 38 38 37 37 37 10 10 10 4 4 4 17 17 17 11 11 11
++17 17 17 10 10 10 11 11 11 27 27 27 36 36 36 31 31 31 19 19 19 11 11 11
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++10 10 10 23 23 23 8 8 8 0 0 0 10 10 10 19 19 19 23 23 23 38 38 38
++39 39 39 10 10 10 0 0 0 17 17 17 25 25 25 17 17 17 21 21 21 40 40 40
++56 56 56 4 4 4 0 0 0 11 11 11 6 6 6 0 0 0 6 6 6 28 28 28
++59 59 59 14 14 14 0 0 0 3 3 3 8 8 8 6 6 6 4 4 4 27 27 27
++60 60 60 37 37 37 21 21 21 20 20 20 14 14 14 6 6 6 13 13 13 24 24 24
++67 67 67 36 36 36 11 11 11 11 11 11 13 13 13 13 13 13 19 19 19 25 25 25
++62 62 62 51 51 51 28 28 28 11 11 11 14 14 14 19 19 19 24 24 24 37 37 37
++73 73 73 54 54 54 28 28 28 20 20 20 27 27 27 25 25 25 25 25 25 37 37 37
++68 68 68 74 74 74 44 44 44 27 27 27 37 37 37 39 39 39 46 46 46 52 52 52
++71 71 71 74 74 74 59 59 59 65 65 65 50 50 50 43 43 43 42 42 42 43 43 43
++74 74 74 83 83 83 63 63 63 61 61 61 71 71 71 59 59 59 53 53 53 57 57 57
++75 75 75 85 85 85 68 68 68 61 61 61 83 83 83 83 83 83 67 67 67 70 70 70
++77 77 77 94 94 94 87 87 87 69 69 69 76 76 76 94 94 94 91 91 91 75 75 75
++87 87 87 96 97 98 90 90 90 83 83 83 82 82 82 91 91 91 105 105 105 99 99 99
++90 90 90 88 88 88 89 89 89 91 91 91 90 90 90 92 92 92 103 103 102 117 117 117
++99 99 99 95 95 94 93 93 93 96 96 96 101 101 101 105 104 105 105 104 105 105 104 105
++121 121 119 105 104 105 103 103 102 105 105 105 109 110 110 121 121 119 129 129 130 122 121 126
++109 108 122 122 111 100 113 122 108 98 114 115 124 112 115 124 112 115 112 115 112 122 111 100
++105 107 94 86 124 83 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72
++83 172 72 86 124 83 118 122 119 143 136 140 143 136 140 105 107 94 109 108 122 91 96 86
++99 99 99 112 112 113 129 129 130 134 134 134 131 131 131 115 116 115 121 121 119 121 121 119
++125 125 127 122 121 126 125 125 127 118 122 119 78 79 82 40 42 44 50 51 53 46 47 50
++43 44 47 43 44 47 43 44 47 43 44 47 43 44 47 43 44 47 43 44 47 43 44 47
++46 47 50 46 47 50 46 47 50 42 43 45 35 36 38 43 44 47 122 121 126 118 122 119
++121 121 119 115 116 115 103 103 102 96 97 98 105 105 105 121 121 119 121 121 119 109 110 110
++92 92 92 91 91 91 91 91 91 92 92 92 94 94 94 93 93 93 87 87 87 82 82 82
++85 85 85 90 90 90 101 101 101 105 105 105 109 110 110 103 103 102 92 92 92 83 83 83
++80 80 80 75 75 75 71 71 71 72 72 72 74 74 74 80 80 80 91 91 91 103 103 102
++101 101 101 91 91 91 99 99 99 96 96 96 87 87 87 85 85 85 80 80 80 82 82 82
++83 83 83 89 89 89 88 88 88 76 76 76 65 65 65 58 58 58 51 51 51 45 45 45
++44 44 44 44 44 44 43 43 43 43 43 43 44 44 44 51 51 51 60 60 60 68 68 68
++38 38 38 46 46 46 63 63 63 56 56 56 34 34 34 27 27 27 31 31 31 48 48 48
++63 63 63 59 59 59 56 56 56 66 66 66 67 67 67 66 66 66 48 48 48 60 60 60
++42 42 42 20 20 20 10 10 10 20 20 20 38 38 38 53 53 53 49 49 49 25 25 25
++21 21 21 23 23 23 40 40 40 56 56 56 52 52 52 42 42 42 32 32 32 21 21 21
++10 10 10 19 19 19 21 21 21 17 17 17 24 24 24 39 39 39 49 49 49 50 50 50
++44 44 44 51 51 51 49 49 49 32 32 32 16 16 16 11 11 11 11 11 11 10 10 10
++48 48 48 50 50 50 50 50 50 46 46 46 43 43 43 43 43 43 48 48 48 52 52 52
++53 53 53 48 48 48 43 43 43 44 44 44 50 50 50 53 53 53 52 52 52 50 50 50
++45 45 45 46 46 46 49 49 49 51 51 51 52 52 52 52 52 52 50 50 50 48 48 48
++45 45 45 48 48 48 46 46 46 43 43 43 45 45 45 49 49 49 46 46 46 40 40 40
++48 48 48 40 40 40 29 29 29 24 24 24 27 27 27 36 36 36 44 44 44 50 50 50
++45 45 45 46 46 46 46 46 46 46 46 46 46 46 46 45 45 45 44 44 44 43 43 43
++42 42 42 45 45 45 48 48 48 48 48 48 45 45 45 45 45 45 48 48 48 51 51 51
++48 48 48 46 46 46 48 48 48 45 45 45 36 36 36 25 25 25 32 32 32 43 43 43
++16 16 16 14 14 14 14 14 14 13 13 13 11 11 11 11 11 11 11 11 11 13 13 13
++20 20 20 8 8 8 6 6 6 16 16 16 16 16 16 11 11 11 24 24 24 42 42 42
++29 29 29 23 23 23 13 13 13 10 10 10 13 13 13 17 17 17 16 16 16 11 11 11
++32 32 32 33 33 33 27 27 27 16 16 16 11 11 11 16 16 16 16 16 16 11 11 11
++14 14 14 8 8 8 20 20 20 38 38 38 34 34 34 13 13 13 3 3 3 17 17 17
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 10 10 10 11 11 11 13 13 13 13 13 13 13 13 13
++13 13 13 13 13 13 10 10 10 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++6 6 6 20 20 20 13 13 13 0 0 0 6 6 6 14 14 14 19 19 19 29 29 29
++38 38 38 36 36 36 23 23 23 4 4 4 6 6 6 21 21 21 24 24 24 17 17 17
++39 39 39 43 43 43 25 25 25 0 0 0 4 4 4 10 10 10 0 0 0 6 6 6
++23 23 23 56 56 56 20 20 20 0 0 0 11 11 11 0 0 0 4 4 4 10 10 10
++31 31 31 57 57 57 43 43 43 16 16 16 21 21 21 16 16 16 3 3 3 17 17 17
++31 31 31 59 59 59 46 46 46 14 14 14 14 14 14 8 8 8 0 0 0 21 21 21
++39 39 39 60 60 60 57 57 57 31 31 31 13 13 13 14 14 14 19 19 19 23 23 23
++39 39 39 69 69 69 68 68 68 33 33 33 16 16 16 25 25 25 29 29 29 24 24 24
++48 48 48 68 68 68 68 68 68 54 54 54 38 38 38 42 42 42 53 53 53 42 42 42
++39 39 39 81 81 81 82 82 82 62 62 62 32 32 32 43 43 43 52 52 52 44 44 44
++50 50 50 73 73 73 85 85 85 81 81 81 59 59 59 48 48 48 59 59 59 60 60 60
++61 61 61 77 77 77 91 91 91 90 90 90 80 80 80 68 68 68 66 66 66 70 70 70
++67 67 67 84 84 84 91 91 91 87 87 87 87 87 87 87 87 87 83 83 83 82 82 82
++80 80 80 85 85 85 105 105 105 91 91 91 94 94 94 109 110 110 92 92 92 87 87 87
++90 90 90 92 92 92 92 92 92 90 90 90 95 95 94 105 105 105 109 110 110 105 105 105
++96 97 98 101 101 101 101 101 101 99 99 99 99 99 99 103 103 102 105 105 105 109 110 110
++109 110 110 103 103 102 105 105 105 112 112 113 117 117 117 125 122 126 125 125 127 115 116 115
++115 116 115 122 111 100 109 110 110 98 114 115 109 108 122 109 108 122 98 114 115 83 172 72
++146 184 30 83 172 72 83 172 72 83 172 115 83 172 72 83 172 72 83 172 72 83 172 72
++83 172 72 86 124 83 238 240 244 254 249 251 255 255 255 255 255 255 252 251 251 252 251 251
++252 251 251 200 220 210 200 220 210 200 220 210 200 220 210 180 183 185 180 183 185 169 175 167
++112 112 113 118 122 119 122 121 126 115 116 115 26 29 32 1 3 7 11 13 16 14 16 19
++11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16
++11 13 16 6 8 11 11 13 16 20 21 24 6 8 11 58 59 61 109 110 110 117 117 117
++121 121 119 121 121 119 115 116 115 103 103 102 95 95 94 103 103 102 115 116 115 125 125 127
++117 117 117 105 105 105 94 94 94 89 89 89 88 88 88 89 89 89 92 92 92 96 97 98
++88 88 88 87 87 87 83 83 83 84 84 84 90 90 90 99 99 99 105 105 105 112 112 113
++96 97 98 95 95 94 88 88 88 76 76 76 67 67 67 69 69 69 82 82 82 94 94 94
++93 93 93 89 89 89 95 95 94 84 84 84 63 63 63 57 57 57 58 58 58 68 68 68
++58 58 58 69 69 69 78 78 78 75 75 75 59 59 59 46 46 46 45 45 45 52 52 52
++43 43 43 43 43 43 42 42 42 39 39 39 40 40 40 45 45 45 52 52 52 57 57 57
++71 71 71 31 31 31 48 48 48 70 70 70 59 59 59 60 60 60 63 63 63 52 52 52
++40 40 40 38 38 38 45 45 45 63 63 63 65 65 65 57 57 57 34 34 34 45 45 45
++60 60 60 42 42 42 20 20 20 10 10 10 19 19 19 37 37 37 44 44 44 38 38 38
++24 24 24 19 19 19 27 27 27 40 40 40 48 48 48 51 51 51 49 49 49 39 39 39
++40 40 40 46 46 46 45 45 45 38 38 38 39 39 39 49 49 49 57 57 57 58 58 58
++56 56 56 45 45 45 31 31 31 19 19 19 11 11 11 8 8 8 16 16 16 23 23 23
++46 46 46 49 49 49 51 51 51 51 51 51 50 50 50 49 49 49 49 49 49 50 50 50
++54 54 54 53 53 53 50 50 50 48 48 48 48 48 48 50 50 50 52 52 52 53 53 53
++43 43 43 43 43 43 44 44 44 49 49 49 52 52 52 52 52 52 49 49 49 44 44 44
++45 45 45 45 45 45 45 45 45 45 45 45 48 48 48 49 49 49 48 48 48 44 44 44
++40 40 40 33 33 33 27 27 27 27 27 27 34 34 34 42 42 42 45 45 45 46 46 46
++46 46 46 46 46 46 46 46 46 46 46 46 45 45 45 45 45 45 44 44 44 44 44 44
++48 48 48 46 46 46 45 45 45 44 44 44 45 45 45 46 46 46 48 48 48 48 48 48
++50 50 50 46 46 46 34 34 34 23 23 23 23 23 23 32 32 32 33 33 33 28 28 28
++14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14
++10 10 10 17 17 17 17 17 17 10 10 10 14 14 14 27 27 27 34 34 34 32 32 32
++23 23 23 14 14 14 13 13 13 19 19 19 17 17 17 11 11 11 16 16 16 27 27 27
++33 33 33 28 28 28 20 20 20 11 11 11 10 10 10 13 13 13 13 13 13 11 11 11
++4 4 4 24 24 24 37 37 37 31 31 31 19 19 19 13 13 13 13 13 13 13 13 13
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++10 10 10 11 11 11 16 16 16 19 19 19 20 20 20 19 19 19 17 17 17 17 17 17
++20 20 20 19 19 19 17 17 17 14 14 14 11 11 11 8 8 8 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 14 14 14 17 17 17 6 6 6 0 0 0 8 8 8 16 16 16 17 17 17
++23 23 23 37 37 37 34 34 34 14 14 14 6 6 6 20 20 20 24 24 24 14 14 14
++24 24 24 33 33 33 39 39 39 19 19 19 0 0 0 6 6 6 3 3 3 0 0 0
++4 4 4 25 25 25 54 54 54 23 23 23 0 0 0 13 13 13 0 0 0 6 6 6
++4 4 4 36 36 36 50 50 50 39 39 39 24 24 24 21 21 21 20 20 20 14 14 14
++3 3 3 40 40 40 59 59 59 43 43 43 16 16 16 4 4 4 11 11 11 14 14 14
++11 11 11 45 45 45 61 61 61 50 50 50 31 31 31 17 17 17 14 14 14 19 19 19
++19 19 19 50 50 50 68 68 68 59 59 59 39 39 39 24 24 24 24 24 24 32 32 32
++25 25 25 50 50 50 69 69 69 73 73 73 57 57 57 44 44 44 46 46 46 39 39 39
++40 40 40 67 67 67 74 74 74 76 76 76 52 52 52 45 45 45 45 45 45 50 50 50
++46 46 46 68 68 68 88 88 88 91 91 91 69 69 69 51 51 51 58 58 58 59 59 59
++49 49 49 70 70 70 94 94 94 99 99 99 81 81 81 66 66 66 66 66 66 72 72 72
++70 70 70 71 71 71 87 87 87 105 105 105 105 104 105 78 78 78 71 71 71 87 87 87
++81 81 81 90 90 90 87 87 87 112 112 113 115 116 115 96 96 96 99 99 99 85 85 85
++92 92 92 94 94 94 94 94 94 96 97 98 105 105 105 112 112 113 109 110 110 99 99 99
++101 101 101 103 103 102 105 104 105 103 103 102 103 103 102 105 105 105 109 110 110 109 110 110
++103 103 102 105 105 105 115 116 115 121 121 119 125 122 126 127 127 127 121 121 119 112 112 113
++98 114 115 109 108 122 109 108 122 121 113 124 113 122 108 86 124 83 141 180 99 146 184 30
++146 184 30 83 172 72 83 172 72 83 172 115 83 172 72 83 172 72 83 172 72 83 172 72
++83 172 72 83 172 115 238 240 244 255 255 255 252 251 251 255 255 255 255 255 255 252 251 251
++255 255 255 252 251 251 255 255 255 255 255 255 255 255 255 252 251 251 246 251 251 200 220 210
++134 134 134 122 121 126 129 129 130 87 87 87 1 3 7 11 13 16 6 8 11 10 11 14
++8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13
++11 13 16 1 3 7 6 8 11 11 13 16 8 10 13 96 97 98 109 110 110 112 112 113
++121 121 119 128 128 128 131 131 131 121 121 119 105 105 105 96 96 96 99 99 99 103 103 102
++127 127 127 122 121 126 115 116 115 105 105 105 101 101 101 95 95 94 91 91 91 88 88 88
++94 94 94 91 91 91 87 87 87 84 84 84 83 83 83 85 85 85 90 90 90 93 93 93
++105 105 105 105 105 105 103 103 102 93 93 93 85 85 85 85 85 85 93 93 93 101 101 101
++82 82 82 70 70 70 75 75 75 87 87 87 94 94 94 92 92 92 72 72 72 54 54 54
++57 57 57 60 60 60 71 71 71 81 81 81 76 76 76 61 61 61 52 52 52 52 52 52
++50 50 50 50 50 50 48 48 48 45 45 45 43 43 43 42 42 42 43 43 43 44 44 44
++76 76 76 66 66 66 72 72 72 75 75 75 72 72 72 65 65 65 48 48 48 42 42 42
++50 50 50 67 67 67 59 59 59 32 32 32 28 28 28 56 56 56 49 49 49 37 37 37
++62 62 62 51 51 51 28 28 28 6 6 6 8 8 8 19 19 19 25 25 25 29 29 29
++24 24 24 19 19 19 20 20 20 27 27 27 37 37 37 50 50 50 56 56 56 51 51 51
++50 50 50 56 56 56 56 56 56 49 49 49 45 45 45 49 49 49 51 51 51 50 50 50
++54 54 54 37 37 37 23 23 23 21 21 21 17 17 17 11 11 11 20 20 20 36 36 36
++42 42 42 43 43 43 46 46 46 50 50 50 52 52 52 51 51 51 46 46 46 43 43 43
++48 48 48 51 51 51 52 52 52 49 49 49 44 44 44 42 42 42 44 44 44 48 48 48
++49 49 49 46 46 46 44 44 44 48 48 48 52 52 52 54 54 54 53 53 53 50 50 50
++46 46 46 45 45 45 45 45 45 48 48 48 48 48 48 46 46 46 44 44 44 44 44 44
++31 31 31 28 28 28 27 27 27 33 33 33 43 43 43 48 48 48 46 46 46 43 43 43
++46 46 46 46 46 46 45 45 45 45 45 45 44 44 44 44 44 44 45 45 45 45 45 45
++49 49 49 45 45 45 44 44 44 45 45 45 48 48 48 48 48 48 43 43 43 38 38 38
++37 37 37 28 28 28 14 14 14 11 11 11 25 25 25 37 37 37 32 32 32 17 17 17
++11 11 11 11 11 11 11 11 11 11 11 11 13 13 13 14 14 14 16 16 16 16 16 16
++10 10 10 17 17 17 17 17 17 13 13 13 24 24 24 39 39 39 37 37 37 20 20 20
++13 13 13 11 11 11 13 13 13 16 16 16 14 14 14 14 14 14 25 25 25 38 38 38
++27 27 27 20 20 20 13 13 13 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11
++14 14 14 34 34 34 38 38 38 19 19 19 4 4 4 11 11 11 17 17 17 13 13 13
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 6 6 6 10 10 10
++19 19 19 19 19 19 19 19 19 17 17 17 16 16 16 14 14 14 11 11 11 10 10 10
++14 14 14 14 14 14 17 17 17 19 19 19 19 19 19 16 16 16 8 8 8 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 10 10 10 20 20 20 13 13 13 0 0 0 4 4 4 17 17 17 14 14 14
++11 11 11 14 14 14 27 27 27 37 37 37 31 31 31 16 16 16 14 14 14 25 25 25
++19 19 19 4 4 4 27 27 27 40 40 40 20 20 20 0 0 0 4 4 4 6 6 6
++0 0 0 6 6 6 27 27 27 48 48 48 27 27 27 0 0 0 11 11 11 0 0 0
++6 6 6 0 0 0 32 32 32 54 54 54 42 42 42 27 27 27 25 25 25 20 20 20
++14 14 14 11 11 11 39 39 39 58 58 58 39 39 39 19 19 19 16 16 16 11 11 11
++11 11 11 17 17 17 37 37 37 59 59 59 57 57 57 32 32 32 17 17 17 23 23 23
++25 25 25 20 20 20 37 37 37 67 67 67 69 69 69 42 42 42 27 27 27 38 38 38
++42 42 42 50 50 50 56 56 56 72 72 72 80 80 80 50 50 50 28 28 28 42 42 42
++62 62 62 45 45 45 45 45 45 83 83 83 83 83 83 62 62 62 42 42 42 50 50 50
++68 68 68 69 69 69 67 67 67 80 80 80 90 90 90 74 74 74 56 56 56 56 56 56
++63 63 63 77 77 77 80 80 80 81 81 81 89 89 89 84 84 84 71 71 71 71 71 71
++78 78 78 77 77 77 87 87 87 103 103 102 105 104 105 90 90 90 80 80 80 82 82 82
++89 89 89 82 82 82 96 96 96 109 110 110 112 112 113 105 105 105 92 92 92 96 97 98
++95 95 94 93 93 93 96 97 98 109 110 110 115 116 115 109 110 110 103 103 102 101 101 101
++105 105 105 103 103 102 103 103 102 109 110 110 115 116 115 115 116 115 112 112 113 109 110 110
++109 110 110 121 121 119 125 122 126 122 121 126 127 127 127 127 127 127 122 121 126 121 121 119
++125 128 138 122 111 100 105 107 94 86 124 83 83 172 72 83 172 72 83 172 72 146 184 30
++146 184 30 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72 83 172 115
++83 172 72 83 172 115 200 220 210 248 249 239 255 255 255 255 255 255 252 251 251 255 255 255
++255 255 255 252 251 251 255 255 255 255 255 255 252 251 251 252 251 251 255 255 255 238 240 244
++166 167 167 127 127 127 122 121 126 14 16 19 0 0 4 10 11 14 8 10 13 14 16 19
++11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16
++11 13 16 14 16 19 11 13 16 8 10 13 49 50 52 131 131 131 125 125 127 117 117 117
++112 112 113 121 121 119 128 128 128 129 129 130 121 121 119 112 112 113 105 104 105 103 103 102
++105 105 105 117 117 117 125 125 127 121 121 119 112 112 113 109 110 110 101 101 101 91 91 91
++89 89 89 92 92 92 94 94 94 94 94 94 91 91 91 87 87 87 85 85 85 84 84 84
++87 87 87 87 87 87 92 92 92 101 101 101 105 104 105 103 103 102 103 103 102 105 105 105
++90 90 90 76 76 76 68 68 68 68 68 68 77 77 77 87 87 87 87 87 87 83 83 83
++70 70 70 54 54 54 49 49 49 63 63 63 80 80 80 78 78 78 62 62 62 48 48 48
++46 46 46 46 46 46 46 46 46 50 50 50 56 56 56 62 62 62 68 68 68 71 71 71
++69 69 69 80 80 80 67 67 67 39 39 39 49 49 49 67 67 67 60 60 60 58 58 58
++54 54 54 45 45 45 32 32 32 14 14 14 14 14 14 37 37 37 49 49 49 63 63 63
++66 66 66 63 63 63 45 45 45 23 23 23 17 17 17 14 14 14 11 11 11 17 17 17
++20 20 20 23 23 23 21 21 21 17 17 17 17 17 17 28 28 28 36 36 36 36 36 36
++44 44 44 52 52 52 56 56 56 52 52 52 46 46 46 44 44 44 43 43 43 40 40 40
++29 29 29 17 17 17 13 13 13 20 20 20 20 20 20 19 19 19 34 34 34 54 54 54
++46 46 46 46 46 46 46 46 46 51 51 51 56 56 56 56 56 56 51 51 51 46 46 46
++44 44 44 49 49 49 54 54 54 53 53 53 49 49 49 44 44 44 43 43 43 43 43 43
++54 54 54 51 51 51 48 48 48 46 46 46 48 48 48 51 51 51 54 54 54 57 57 57
++51 51 51 46 46 46 45 45 45 48 48 48 45 45 45 38 38 38 34 34 34 37 37 37
++25 25 25 28 28 28 34 34 34 42 42 42 48 48 48 50 50 50 48 48 48 45 45 45
++46 46 46 46 46 46 45 45 45 44 44 44 44 44 44 44 44 44 45 45 45 46 46 46
++43 43 43 44 44 44 48 48 48 50 50 50 49 49 49 43 43 43 33 33 33 25 25 25
++16 16 16 8 8 8 13 13 13 29 29 29 37 37 37 31 31 31 17 17 17 10 10 10
++13 13 13 13 13 13 13 13 13 11 11 11 13 13 13 13 13 13 14 14 14 16 16 16
++17 17 17 10 10 10 11 11 11 25 25 25 37 37 37 37 37 37 24 24 24 13 13 13
++8 8 8 17 17 17 14 14 14 3 3 3 10 10 10 28 28 28 37 37 37 32 32 32
++16 16 16 11 11 11 10 10 10 14 14 14 14 14 14 10 10 10 13 13 13 20 20 20
++36 36 36 31 31 31 20 20 20 8 8 8 6 6 6 11 11 11 14 14 14 14 14 14
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 4 4 4 8 8 8 13 13 13 17 17 17
++17 17 17 16 16 16 13 13 13 10 10 10 6 6 6 4 4 4 3 3 3 3 3 3
++4 4 4 4 4 4 8 8 8 11 11 11 16 16 16 17 17 17 14 14 14 11 11 11
++4 4 4 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 6 6 6 19 19 19 16 16 16 0 0 0 3 3 3 19 19 19 19 19 19
++16 16 16 4 4 4 14 14 14 34 34 34 39 39 39 23 23 23 14 14 14 20 20 20
++17 17 17 13 13 13 4 4 4 28 28 28 44 44 44 19 19 19 0 0 0 8 8 8
++4 4 4 10 10 10 0 0 0 29 29 29 50 50 50 24 24 24 0 0 0 0 0 0
++8 8 8 10 10 10 10 10 10 33 33 33 56 56 56 42 42 42 19 19 19 23 23 23
++25 25 25 25 25 25 23 23 23 43 43 43 62 62 62 45 45 45 17 17 17 17 17 17
++24 24 24 16 16 16 25 25 25 50 50 50 62 62 62 53 53 53 37 37 37 25 25 25
++31 31 31 27 27 27 33 33 33 51 51 51 67 67 67 68 68 68 53 53 53 34 34 34
++39 39 39 40 40 40 38 38 38 52 52 52 77 77 77 74 74 74 58 58 58 63 63 63
++52 52 52 42 42 42 37 37 37 61 61 61 75 75 75 84 84 84 66 66 66 57 57 57
++72 72 72 62 62 62 52 52 52 61 61 61 85 85 85 89 89 89 73 73 73 66 66 66
++87 87 87 85 85 85 72 72 72 70 70 70 88 88 88 96 97 98 87 87 87 73 73 73
++82 82 82 94 94 94 94 94 94 82 82 82 87 87 87 105 105 105 103 103 102 82 82 82
++82 82 82 96 96 96 109 110 110 99 99 99 99 99 99 115 116 115 105 105 105 96 97 98
++95 95 94 99 99 99 105 105 105 115 116 115 112 112 113 105 104 105 101 101 101 105 105 105
++105 105 105 103 103 102 105 105 105 121 121 119 125 122 126 117 117 117 115 116 115 115 116 115
++125 122 126 125 122 126 121 121 119 121 121 119 128 128 128 131 131 131 125 122 126 115 116 115
++109 108 122 86 124 83 83 172 72 83 172 72 83 172 115 83 172 72 83 172 72 83 172 72
++141 180 99 83 172 72 83 172 115 83 172 72 83 172 72 83 172 72 83 172 72 83 172 115
++83 172 72 83 172 72 136 172 147 248 249 239 255 255 255 255 255 255 248 249 239 255 255 255
++255 255 255 255 255 255 252 251 251 255 255 255 255 255 255 255 255 255 252 251 251 200 220 210
++125 125 127 117 117 117 87 88 90 1 3 7 26 29 32 8 10 13 10 11 14 6 8 11
++8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13
++6 8 11 14 16 19 1 3 7 11 13 16 78 79 82 122 121 126 125 125 127 122 121 126
++112 112 113 117 117 117 127 127 127 133 133 133 133 133 133 127 127 127 121 121 119 117 117 117
++117 117 117 127 127 127 131 131 131 129 129 130 125 125 127 122 121 126 122 121 126 122 121 126
++115 116 115 115 116 115 112 112 113 105 105 105 99 99 99 93 93 93 90 90 90 90 90 90
++83 83 83 78 78 78 87 87 87 101 101 101 105 105 105 101 101 101 99 99 99 105 105 105
++101 101 101 103 103 102 99 99 99 93 93 93 90 90 90 89 89 89 94 94 94 99 99 99
++91 91 91 76 76 76 63 63 63 67 67 67 80 80 80 88 88 88 84 84 84 76 76 76
++82 82 82 81 81 81 78 78 78 76 76 76 73 73 73 66 66 66 57 57 57 50 50 50
++28 28 28 45 45 45 74 74 74 72 72 72 61 61 61 71 71 71 70 70 70 56 56 56
++29 29 29 13 13 13 21 21 21 29 29 29 36 36 36 37 37 37 42 42 42 58 58 58
++63 63 63 70 70 70 58 58 58 34 34 34 19 19 19 10 10 10 13 13 13 28 28 28
++46 46 46 46 46 46 37 37 37 21 21 21 14 14 14 17 17 17 20 20 20 21 21 21
++23 23 23 28 28 28 31 31 31 27 27 27 21 21 21 19 19 19 17 17 17 14 14 14
++20 20 20 11 11 11 6 6 6 10 10 10 14 14 14 24 24 24 39 39 39 54 54 54
++51 51 51 48 48 48 45 45 45 48 48 48 51 51 51 54 54 54 53 53 53 50 50 50
++45 45 45 46 46 46 48 48 48 49 49 49 49 49 49 46 46 46 44 44 44 42 42 42
++50 50 50 52 52 52 52 52 52 49 49 49 44 44 44 44 44 44 49 49 49 53 53 53
++54 54 54 49 49 49 45 45 45 45 45 45 39 39 39 29 29 29 27 27 27 29 29 29
++29 29 29 36 36 36 43 43 43 48 48 48 48 48 48 46 46 46 48 48 48 49 49 49
++46 46 46 45 45 45 44 44 44 44 44 44 44 44 44 45 45 45 46 46 46 46 46 46
++45 45 45 48 48 48 50 50 50 46 46 46 38 38 38 28 28 28 20 20 20 16 16 16
++8 8 8 19 19 19 32 32 32 39 39 39 31 31 31 13 13 13 4 4 4 10 10 10
++16 16 16 14 14 14 13 13 13 13 13 13 11 11 11 13 13 13 13 13 13 13 13 13
++14 14 14 13 13 13 21 21 21 36 36 36 36 36 36 20 20 20 11 11 11 13 13 13
++10 10 10 14 14 14 11 11 11 8 8 8 21 21 21 37 37 37 33 33 33 17 17 17
++13 13 13 10 10 10 11 11 11 14 14 14 13 13 13 11 11 11 21 21 21 33 33 33
++37 37 37 21 21 21 8 8 8 8 8 8 13 13 13 11 11 11 10 10 10 10 10 10
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 6 6 6 11 11 11 14 14 14 16 16 16 17 17 17
++8 8 8 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 11 11 11 17 17 17 21 21 21
++11 11 11 6 6 6 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0
++3 3 3 3 3 3 14 14 14 17 17 17 3 3 3 0 0 0 16 16 16 23 23 23
++19 19 19 13 13 13 4 4 4 6 6 6 25 25 25 40 40 40 33 33 33 13 13 13
++19 19 19 14 14 14 0 0 0 8 8 8 33 33 33 38 38 38 24 24 24 0 0 0
++8 8 8 0 0 0 8 8 8 3 3 3 28 28 28 52 52 52 23 23 23 8 8 8
++6 6 6 8 8 8 4 4 4 10 10 10 33 33 33 52 52 52 44 44 44 21 21 21
++25 25 25 29 29 29 28 28 28 31 31 31 46 46 46 61 61 61 51 51 51 28 28 28
++25 25 25 31 31 31 32 32 32 33 33 33 48 48 48 68 68 68 63 63 63 40 40 40
++29 29 29 38 38 38 42 42 42 38 38 38 49 49 49 71 71 71 73 73 73 53 53 53
++36 36 36 37 37 37 38 38 38 29 29 29 45 45 45 77 77 77 80 80 80 62 62 62
++33 33 33 44 44 44 44 44 44 43 43 43 49 49 49 82 82 82 84 84 84 83 83 83
++59 59 59 52 52 52 59 59 59 54 54 54 58 58 58 85 85 85 95 95 94 84 84 84
++85 85 85 69 69 69 70 70 70 72 72 72 71 71 71 90 90 90 101 101 101 85 85 85
++93 93 93 92 92 92 88 88 88 81 81 81 83 83 83 99 99 99 105 105 105 103 103 102
++93 93 93 112 112 113 99 99 99 95 95 94 94 94 94 99 99 99 121 121 119 105 105 105
++99 99 99 109 110 110 115 116 115 112 112 113 105 104 105 105 104 105 105 105 105 105 105 105
++105 105 105 109 110 110 117 117 117 127 127 127 122 121 126 115 116 115 115 116 115 121 121 119
++129 129 130 121 121 119 117 117 117 125 125 127 134 134 134 134 134 134 121 121 119 105 105 105
++146 184 30 146 184 30 141 180 99 136 172 147 136 172 147 83 172 115 83 172 72 83 172 72
++83 172 72 83 172 72 83 172 115 83 172 115 83 172 72 83 172 115 83 172 115 83 172 115
++83 172 115 83 172 72 141 180 99 248 249 239 255 255 255 252 251 251 255 255 255 255 255 255
++252 251 251 255 255 255 255 255 255 252 251 251 255 255 255 252 251 251 255 255 255 231 224 220
++137 137 137 137 138 139 35 36 38 11 13 16 14 16 19 0 0 4 16 20 21 14 16 19
++11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16
++11 13 16 14 16 19 1 3 7 51 52 54 109 110 110 105 105 105 122 121 126 133 133 133
++131 131 131 128 128 128 125 125 127 128 128 128 133 133 133 134 134 134 128 128 128 121 121 119
++112 112 113 109 110 110 112 112 113 121 121 119 121 121 119 105 105 105 105 105 105 112 112 113
++117 117 117 117 117 117 121 121 119 121 121 119 117 117 117 112 112 113 112 112 113 109 110 110
++105 105 105 99 99 99 99 99 99 101 101 101 94 94 94 83 83 83 85 85 85 96 96 96
++105 105 105 103 103 102 87 87 87 78 78 78 80 80 80 81 81 81 85 85 85 85 85 85
++87 87 87 93 93 93 96 96 96 91 91 91 83 83 83 77 77 77 81 81 81 87 87 87
++80 80 80 72 72 72 61 61 61 53 53 53 50 50 50 46 46 46 42 42 42 38 38 38
++59 59 59 60 60 60 73 73 73 75 75 75 66 66 66 49 49 49 46 46 46 70 70 70
++38 38 38 31 31 31 44 44 44 44 44 44 48 48 48 45 45 45 43 43 43 43 43 43
++46 46 46 62 62 62 66 66 66 51 51 51 33 33 33 28 28 28 40 40 40 56 56 56
++68 68 68 59 59 59 39 39 39 21 21 21 19 19 19 19 19 19 19 19 19 20 20 20
++31 31 31 29 29 29 25 25 25 19 19 19 14 14 14 14 14 14 16 16 16 17 17 17
++23 23 23 19 19 19 16 16 16 23 23 23 34 34 34 43 43 43 45 45 45 44 44 44
++54 54 54 52 52 52 49 49 49 48 48 48 50 50 50 52 52 52 54 54 54 56 56 56
++52 52 52 48 48 48 44 44 44 44 44 44 48 48 48 50 50 50 50 50 50 49 49 49
++45 45 45 52 52 52 58 58 58 56 56 56 50 50 50 44 44 44 44 44 44 48 48 48
++51 51 51 48 48 48 44 44 44 39 39 39 33 33 33 28 28 28 27 27 27 29 29 29
++37 37 37 43 43 43 49 49 49 49 49 49 46 46 46 45 45 45 46 46 46 50 50 50
++45 45 45 45 45 45 44 44 44 44 44 44 45 45 45 45 45 45 46 46 46 46 46 46
++51 51 51 49 49 49 44 44 44 33 33 33 20 20 20 11 11 11 10 10 10 13 13 13
++14 14 14 32 32 32 39 39 39 28 28 28 11 11 11 8 8 8 16 16 16 20 20 20
++16 16 16 16 16 16 14 14 14 13 13 13 11 11 11 11 11 11 11 11 11 11 11 11
++10 10 10 24 24 24 36 36 36 33 33 33 20 20 20 6 6 6 8 8 8 14 14 14
++14 14 14 8 8 8 13 13 13 27 27 27 36 36 36 31 31 31 17 17 17 6 6 6
++16 16 16 13 13 13 11 11 11 10 10 10 11 11 11 17 17 17 28 28 28 38 38 38
++17 17 17 17 17 17 16 16 16 13 13 13 13 13 13 14 14 14 13 13 13 10 10 10
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 4 4 4 11 11 11 17 17 17 17 17 17 13 13 13 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 11 11 11 16 16 16
++17 17 17 11 11 11 3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
++3 3 3 0 0 0 10 10 10 19 19 19 10 10 10 0 0 0 6 6 6 21 21 21
++16 16 16 16 16 16 0 0 0 0 0 0 10 10 10 38 38 38 42 42 42 28 28 28
++20 20 20 6 6 6 0 0 0 6 6 6 6 6 6 31 31 31 46 46 46 16 16 16
++0 0 0 3 3 3 0 0 0 11 11 11 3 3 3 25 25 25 59 59 59 21 21 21
++13 13 13 0 0 0 8 8 8 10 10 10 3 3 3 38 38 38 58 58 58 36 36 36
++24 24 24 14 14 14 27 27 27 28 28 28 19 19 19 48 48 48 67 67 67 48 48 48
++33 33 33 32 32 32 32 32 32 28 28 28 33 33 33 53 53 53 66 66 66 59 59 59
++43 43 43 36 36 36 36 36 36 36 36 36 36 36 36 49 49 49 66 66 66 73 73 73
++42 42 42 32 32 32 33 33 33 28 28 28 42 42 42 68 68 68 74 74 74 72 72 72
++52 52 52 48 48 48 45 45 45 46 46 46 48 48 48 72 72 72 80 80 80 94 94 94
++66 66 66 54 54 54 63 63 63 57 57 57 52 52 52 77 77 77 95 95 94 95 95 94
++83 83 83 63 63 63 68 68 68 74 74 74 65 65 65 77 77 77 101 101 101 99 99 99
++105 105 105 85 85 85 80 80 80 89 89 89 88 88 88 84 84 84 99 99 99 115 116 115
++121 121 119 99 99 99 103 103 102 92 92 92 91 91 91 103 103 102 101 101 101 121 121 119
++115 116 115 117 117 117 115 116 115 105 105 105 105 104 105 105 105 105 109 110 110 105 105 105
++112 112 113 121 121 119 125 125 127 122 121 126 115 116 115 115 116 115 117 117 117 125 122 126
++125 125 127 117 117 117 125 125 127 137 137 137 137 137 137 129 129 130 121 121 119 109 110 110
++146 184 30 146 184 30 146 184 30 136 172 147 136 172 147 83 172 115 83 172 72 83 172 72
++83 172 72 83 172 72 83 172 72 83 172 72 187 210 182 187 210 182 83 172 72 83 172 72
++83 172 72 83 172 72 83 172 72 231 246 232 255 255 255 252 251 251 255 255 255 248 249 239
++255 255 255 255 255 255 252 251 251 255 255 255 255 255 255 246 251 251 255 255 255 231 224 220
++133 133 133 100 101 103 0 0 4 16 20 21 8 10 13 8 10 13 16 20 21 10 11 14
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++8 10 13 8 10 13 11 13 16 100 101 103 129 129 130 122 121 126 129 129 130 137 138 139
++139 139 139 133 133 133 121 121 119 112 112 113 117 117 117 129 129 130 133 133 133 131 131 131
++109 110 110 103 103 102 103 103 102 115 116 115 121 121 119 117 117 117 105 105 105 103 103 102
++103 103 102 105 105 105 112 112 113 117 117 117 121 121 119 121 121 119 121 121 119 115 116 115
++115 116 115 112 112 113 109 110 110 103 103 102 91 91 91 81 81 81 78 78 78 81 81 81
++95 95 94 105 104 105 94 94 94 85 85 85 76 76 76 66 66 66 69 69 69 69 69 69
++62 62 62 72 72 72 87 87 87 90 90 90 77 77 77 59 59 59 53 53 53 58 58 58
++84 84 84 71 71 71 54 54 54 48 48 48 52 52 52 63 63 63 73 73 73 78 78 78
++75 75 75 69 69 69 45 45 45 40 40 40 68 68 68 59 59 59 34 34 34 59 59 59
++65 65 65 32 32 32 39 39 39 50 50 50 52 52 52 36 36 36 38 38 38 54 54 54
++42 42 42 53 53 53 66 66 66 63 63 63 53 53 53 53 53 53 60 60 60 65 65 65
++53 53 53 45 45 45 27 27 27 14 14 14 17 17 17 17 17 17 19 19 19 28 28 28
++29 29 29 25 25 25 19 19 19 14 14 14 14 14 14 14 14 14 16 16 16 17 17 17
++16 16 16 16 16 16 24 24 24 38 38 38 51 51 51 56 56 56 51 51 51 44 44 44
++51 51 51 51 51 51 51 51 51 49 49 49 48 48 48 49 49 49 51 51 51 54 54 54
++51 51 51 49 49 49 46 46 46 46 46 46 48 48 48 50 50 50 50 50 50 50 50 50
++40 40 40 44 44 44 48 48 48 49 49 49 46 46 46 42 42 42 39 39 39 38 38 38
++40 40 40 40 40 40 39 39 39 33 33 33 32 32 32 34 34 34 38 38 38 39 39 39
++45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
++44 44 44 44 44 44 45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 46 46 46
++45 45 45 39 39 39 28 28 28 17 17 17 8 8 8 8 8 8 13 13 13 17 17 17
++27 27 27 32 32 32 29 29 29 16 16 16 8 8 8 14 14 14 20 20 20 21 21 21
++14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14
++23 23 23 32 32 32 33 33 33 23 23 23 10 10 10 8 8 8 13 13 13 14 14 14
++11 11 11 13 13 13 23 23 23 34 34 34 32 32 32 17 17 17 8 8 8 10 10 10
++16 16 16 13 13 13 11 11 11 13 13 13 21 21 21 28 28 28 29 29 29 25 25 25
++6 6 6 16 16 16 20 20 20 16 16 16 11 11 11 14 14 14 20 20 20 24 24 24
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 20 20 20 21 21 21 17 17 17
++20 20 20 17 17 17 20 20 20 10 10 10 10 10 10 20 20 20 17 17 17 20 20 20
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 6 6 6 14 14 14 20 20 20 17 17 17 8 8 8 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
++0 0 0 3 3 3 4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 3 3 3
++20 20 20 13 13 13 4 4 4 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
++3 3 3 0 0 0 6 6 6 19 19 19 14 14 14 0 0 0 0 0 0 20 20 20
++19 19 19 13 13 13 4 4 4 3 3 3 4 4 4 16 16 16 32 32 32 44 44 44
++16 16 16 24 24 24 3 3 3 0 0 0 6 6 6 0 0 0 27 27 27 50 50 50
++10 10 10 10 10 10 16 16 16 0 0 0 0 0 0 10 10 10 25 25 25 53 53 53
++20 20 20 11 11 11 4 4 4 8 8 8 8 8 8 8 8 8 31 31 31 60 60 60
++24 24 24 17 17 17 13 13 13 17 17 17 20 20 20 20 20 20 39 39 39 67 67 67
++53 53 53 27 27 27 23 23 23 34 34 34 28 28 28 23 23 23 43 43 43 67 67 67
++60 60 60 36 36 36 27 27 27 31 31 31 25 25 25 25 25 25 49 49 49 70 70 70
++74 74 74 46 46 46 34 34 34 49 49 49 67 67 67 53 53 53 45 45 45 82 82 82
++82 82 82 57 57 57 43 43 43 53 53 53 61 61 61 76 76 76 70 70 70 82 82 82
++89 89 89 67 67 67 58 58 58 59 59 59 70 70 70 78 78 78 80 80 80 96 96 96
++99 99 99 81 81 81 73 73 73 76 76 76 75 75 75 75 75 75 92 92 92 109 110 110
++109 110 110 90 90 90 83 83 83 87 87 87 85 85 85 85 85 85 96 96 96 105 105 105
++117 117 117 109 110 110 96 96 96 99 99 99 101 101 101 96 97 98 105 105 105 109 110 110
++129 129 130 117 117 117 105 105 105 105 105 105 109 110 110 109 110 110 109 110 110 109 110 110
++121 121 119 128 128 128 127 127 127 115 116 115 112 112 113 117 117 117 121 121 119 121 121 119
++121 121 119 117 117 117 137 137 137 147 147 148 134 134 134 121 121 119 122 121 126 121 121 119
++86 124 83 141 180 99 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72
++83 172 72 83 172 72 83 172 72 83 172 72 136 172 147 136 172 147 83 172 72 83 172 72
++83 172 72 83 172 72 141 180 99 187 210 182 254 249 251 252 251 251 246 251 251 252 251 251
++252 251 251 255 255 255 255 255 255 252 251 251 252 251 251 255 255 255 252 251 251 161 161 162
++122 121 126 37 39 42 11 13 16 11 13 16 8 10 13 14 16 19 8 10 13 10 11 14
++11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16
++8 10 13 11 13 16 24 25 28 133 133 133 137 137 137 137 138 139 125 125 127 115 116 115
++121 121 119 129 129 130 133 133 133 121 121 119 112 112 113 115 116 115 125 122 126 128 128 128
++129 129 130 121 121 119 109 110 110 103 103 102 115 116 115 128 128 128 121 121 119 103 103 102
++105 104 105 101 101 101 96 97 98 99 99 99 103 103 102 109 110 110 115 116 115 121 121 119
++112 112 113 117 117 117 121 121 119 115 116 115 109 110 110 105 105 105 94 94 94 81 81 81
++89 89 89 105 105 105 101 101 101 96 97 98 91 91 91 77 77 77 73 73 73 68 68 68
++68 68 68 60 60 60 66 66 66 84 84 84 89 89 89 75 75 75 62 62 62 59 59 59
++82 82 82 81 81 81 81 81 81 83 83 83 84 84 84 76 76 76 63 63 63 52 52 52
++38 38 38 43 43 43 43 43 43 33 33 33 48 48 48 66 66 66 53 53 53 37 37 37
++63 63 63 51 51 51 57 57 57 44 44 44 46 46 46 48 48 48 50 50 50 40 40 40
++45 45 45 42 42 42 46 46 46 48 48 48 43 43 43 46 46 46 46 46 46 37 37 37
++38 38 38 37 37 37 29 29 29 27 27 27 28 28 28 27 27 27 34 34 34 51 51 51
++29 29 29 27 27 27 25 25 25 28 28 28 31 31 31 31 31 31 28 28 28 25 25 25
++28 28 28 28 28 28 32 32 32 39 39 39 42 42 42 37 37 37 32 32 32 31 31 31
++27 27 27 31 31 31 33 33 33 32 32 32 28 28 28 25 25 25 28 28 28 32 32 32
++27 27 27 29 29 29 33 33 33 34 34 34 33 33 33 31 31 31 28 28 28 27 27 27
++33 33 33 29 29 29 27 27 27 28 28 28 29 29 29 31 31 31 28 28 28 24 24 24
++31 31 31 36 36 36 34 34 34 31 31 31 32 32 32 40 40 40 48 48 48 50 50 50
++50 50 50 45 45 45 42 42 42 43 43 43 48 48 48 49 49 49 46 46 46 43 43 43
++43 43 43 44 44 44 45 45 45 46 46 46 46 46 46 46 46 46 46 46 46 45 45 45
++33 33 33 24 24 24 13 13 13 6 6 6 10 10 10 16 16 16 20 20 20 21 21 21
++43 43 43 28 28 28 16 16 16 19 19 19 21 21 21 17 17 17 10 10 10 6 6 6
++13 13 13 13 13 13 11 11 11 11 11 11 13 13 13 14 14 14 16 16 16 16 16 16
++43 43 43 32 32 32 19 19 19 13 13 13 14 14 14 17 17 17 16 16 16 14 14 14
++6 6 6 24 24 24 36 36 36 31 31 31 16 16 16 4 4 4 10 10 10 19 19 19
++11 11 11 11 11 11 11 11 11 20 20 20 33 33 33 38 38 38 25 25 25 4 4 4
++16 16 16 13 13 13 11 11 11 13 13 13 11 11 11 11 11 11 24 24 24 39 39 39
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 4 4 4 3 3 3 0 0 0
++0 0 0 13 13 13 19 19 19 14 14 14 10 10 10 6 6 6 4 4 4 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0
++6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6 4 4 4
++4 4 4 21 21 21 19 19 19 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 6 6 6 17 17 17 13 13 13 0 0 0 3 3 3 19 19 19
++17 17 17 17 17 17 3 3 3 3 3 3 0 0 0 16 16 16 21 21 21 28 28 28
++51 51 51 20 20 20 0 0 0 6 6 6 3 3 3 0 0 0 4 4 4 24 24 24
++51 51 51 6 6 6 0 0 0 4 4 4 3 3 3 8 8 8 14 14 14 27 27 27
++57 57 57 21 21 21 6 6 6 3 3 3 8 8 8 16 16 16 17 17 17 31 31 31
++63 63 63 31 31 31 8 8 8 14 14 14 14 14 14 10 10 10 21 21 21 38 38 38
++69 69 69 46 46 46 25 25 25 17 17 17 19 19 19 25 25 25 28 28 28 25 25 25
++69 69 69 61 61 61 34 34 34 28 28 28 31 31 31 27 27 27 36 36 36 39 39 39
++80 80 80 70 70 70 51 51 51 65 65 65 54 54 54 43 43 43 39 39 39 44 44 44
++78 78 78 91 91 91 60 60 60 54 54 54 78 78 78 65 65 65 49 49 49 57 57 57
++82 82 82 95 95 94 75 75 75 56 56 56 77 77 77 89 89 89 74 74 74 66 66 66
++94 94 94 99 99 99 89 89 89 73 73 73 77 77 77 94 94 94 95 95 94 81 81 81
++99 99 99 109 110 110 105 105 105 88 88 88 84 84 84 99 99 99 109 110 110 105 105 105
++99 99 99 127 127 127 112 112 113 91 91 91 101 101 101 105 105 105 105 105 105 127 127 127
++109 110 110 127 127 127 121 121 119 112 112 113 109 110 110 105 105 105 117 117 117 125 125 127
++134 134 134 125 125 127 115 116 115 115 116 115 125 125 127 134 134 134 131 131 131 125 122 126
++121 121 119 131 131 131 142 143 144 134 134 134 127 127 127 125 125 127 125 125 127 137 137 137
++116 129 109 83 172 115 83 172 72 83 172 72 83 172 72 83 172 115 83 172 72 83 172 72
++83 172 72 83 172 115 83 172 115 83 172 72 83 172 72 83 172 115 83 172 115 83 172 72
++83 172 72 83 172 72 141 180 99 141 180 99 252 251 251 255 255 255 248 249 239 252 251 251
++255 255 255 252 251 251 255 255 255 252 251 251 255 255 255 255 255 255 252 251 251 231 246 232
++83 84 85 20 21 24 8 10 13 11 13 16 6 8 11 11 13 16 8 10 13 14 16 19
++10 11 14 14 16 19 6 8 11 6 8 11 14 16 19 11 13 16 8 10 13 10 11 14
++13 13 13 14 14 14 92 92 92 117 117 117 121 121 119 133 133 133 134 134 134 121 121 119
++117 117 117 121 121 119 129 129 130 134 134 134 122 121 126 112 112 113 115 116 115 115 116 115
++133 133 133 134 134 134 125 122 126 109 110 110 109 110 110 115 116 115 121 121 119 127 127 127
++105 105 105 101 101 101 103 103 102 105 104 105 101 101 101 95 95 94 105 104 105 117 117 117
++109 110 110 109 110 110 109 110 110 112 112 113 112 112 113 112 112 113 112 112 113 109 110 110
++105 105 105 103 103 102 103 103 102 105 105 105 105 105 105 101 101 101 90 90 90 85 85 85
++87 87 87 77 77 77 80 80 80 90 90 90 91 91 91 91 91 91 92 92 92 92 92 92
++83 83 83 77 77 77 84 84 84 78 78 78 53 53 53 44 44 44 50 50 50 44 44 44
++46 46 46 40 40 40 36 36 36 39 39 39 44 44 44 48 48 48 52 52 52 57 57 57
++42 42 42 57 57 57 53 53 53 43 43 43 48 48 48 51 51 51 46 46 46 46 46 46
++46 46 46 42 42 42 44 44 44 45 45 45 39 39 39 38 38 38 40 40 40 39 39 39
++36 36 36 45 45 45 39 39 39 31 31 31 39 39 39 49 49 49 43 43 43 37 37 37
++34 34 34 29 29 29 34 34 34 34 34 34 27 27 27 29 29 29 34 34 34 28 28 28
++33 33 33 29 29 29 34 34 34 43 43 43 38 38 38 31 31 31 32 32 32 28 28 28
++31 31 31 29 29 29 28 28 28 29 29 29 31 31 31 27 27 27 25 25 25 29 29 29
++28 28 28 44 44 44 31 31 31 24 24 24 29 29 29 29 29 29 32 32 32 23 23 23
++25 25 25 29 29 29 24 24 24 23 23 23 29 29 29 29 29 29 27 27 27 32 32 32
++40 40 40 42 42 42 43 43 43 46 46 46 49 49 49 50 50 50 46 46 46 44 44 44
++46 46 46 50 50 50 46 46 46 45 45 45 50 50 50 48 48 48 42 42 42 44 44 44
++45 45 45 48 48 48 49 49 49 46 46 46 46 46 46 46 46 46 40 40 40 33 33 33
++16 16 16 13 13 13 14 14 14 16 16 16 13 13 13 13 13 13 27 27 27 43 43 43
++28 28 28 21 21 21 13 13 13 10 10 10 11 11 11 14 14 14 13 13 13 11 11 11
++14 14 14 8 8 8 13 13 13 20 20 20 14 14 14 6 6 6 21 21 21 43 43 43
++32 32 32 20 20 20 10 10 10 13 13 13 19 19 19 16 16 16 11 11 11 11 11 11
++23 23 23 39 39 39 44 44 44 29 29 29 17 17 17 21 21 21 28 28 28 29 29 29
++27 27 27 28 28 28 31 31 31 36 36 36 37 37 37 34 34 34 29 29 29 27 27 27
++28 28 28 31 31 31 29 29 29 24 24 24 27 27 27 36 36 36 38 38 38 36 36 36
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4 0 0 0
++4 4 4 14 14 14 19 19 19 13 13 13 6 6 6 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 3 3 3 8 8 8 11 11 11 13 13 13 11 11 11 10 10 10
++14 14 14 14 14 14 11 11 11 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 20 20 20 19 19 19 4 4 4 3 3 3 3 3 3 0 0 0 0 0 0
++3 3 3 0 0 0 4 4 4 16 16 16 13 13 13 0 0 0 3 3 3 17 17 17
++17 17 17 19 19 19 3 3 3 3 3 3 0 0 0 16 16 16 20 20 20 27 27 27
++29 29 29 49 49 49 25 25 25 0 0 0 3 3 3 8 8 8 0 0 0 10 10 10
++27 27 27 52 52 52 17 17 17 3 3 3 11 11 11 0 0 0 8 8 8 4 4 4
++21 21 21 59 59 59 25 25 25 6 6 6 14 14 14 0 0 0 13 13 13 16 16 16
++36 36 36 59 59 59 38 38 38 0 0 0 16 16 16 21 21 21 10 10 10 14 14 14
++32 32 32 63 63 63 52 52 52 21 21 21 24 24 24 21 21 21 13 13 13 29 29 29
++37 37 37 71 71 71 62 62 62 37 37 37 29 29 29 28 28 28 32 32 32 32 32 32
++42 42 42 78 78 78 78 78 78 62 62 62 33 33 33 40 40 40 49 49 49 45 45 45
++54 54 54 77 77 77 85 85 85 78 78 78 59 59 59 45 45 45 56 56 56 58 58 58
++60 60 60 78 78 78 92 92 92 89 89 89 77 77 77 69 69 69 65 65 65 65 65 65
++76 76 76 91 91 91 96 96 96 88 88 88 85 85 85 92 92 92 91 91 91 83 83 83
++81 81 81 103 103 102 112 112 113 103 103 102 99 99 99 105 105 105 105 105 105 96 96 96
++99 99 99 99 99 99 121 121 119 121 121 119 101 101 101 109 110 110 122 121 126 112 112 113
++112 112 113 105 105 105 133 133 133 121 121 119 105 105 105 121 121 119 121 121 119 131 131 131
++128 128 128 117 117 117 115 116 115 128 128 128 134 134 134 128 128 128 122 121 126 127 127 127
++131 131 131 140 140 140 137 137 137 125 125 127 125 125 127 133 133 133 137 137 137 145 146 147
++140 140 140 86 124 83 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72 83 172 72
++83 172 72 83 172 115 136 172 147 83 172 72 83 172 72 83 172 72 83 172 72 141 180 99
++83 172 72 83 172 72 83 172 72 141 180 99 246 251 251 255 255 255 255 255 255 255 255 255
++255 255 255 255 255 255 252 251 251 255 255 255 255 255 255 246 251 251 231 224 220 109 110 110
++49 50 52 6 8 11 10 11 14 11 13 16 6 8 11 14 16 19 8 10 13 10 11 14
++8 10 13 11 13 16 10 11 14 8 10 13 11 13 16 11 13 16 11 13 16 11 13 16
++4 4 4 42 42 42 109 110 110 121 121 119 117 117 117 127 127 127 137 137 137 137 138 139
++125 125 127 127 127 127 129 129 130 131 131 131 127 127 127 121 121 119 121 121 119 117 117 117
++125 122 126 137 137 137 142 143 144 134 134 134 125 122 126 115 116 115 117 117 117 125 125 127
++125 122 126 112 112 113 101 101 101 96 97 98 103 103 102 109 110 110 112 112 113 112 112 113
++96 96 96 94 94 94 92 92 92 92 92 92 92 92 92 93 93 93 93 93 93 92 92 92
++109 110 110 105 105 105 105 105 105 105 104 105 99 99 99 96 96 96 101 101 101 105 105 105
++94 94 94 83 83 83 83 83 83 82 82 82 70 70 70 74 74 74 87 87 87 87 87 87
++67 67 67 54 54 54 60 60 60 77 77 77 73 73 73 52 52 52 44 44 44 50 50 50
++42 42 42 43 43 43 43 43 43 39 39 39 33 33 33 37 37 37 53 53 53 70 70 70
++38 38 38 45 45 45 53 53 53 53 53 53 48 48 48 44 44 44 45 45 45 46 46 46
++45 45 45 43 43 43 44 44 44 44 44 44 40 40 40 43 43 43 40 40 40 29 29 29
++37 37 37 36 36 36 28 28 28 31 31 31 42 42 42 43 43 43 33 33 33 28 28 28
++32 32 32 31 31 31 34 34 34 43 43 43 45 45 45 37 37 37 32 32 32 38 38 38
++36 36 36 37 37 37 44 44 44 48 48 48 39 39 39 34 34 34 37 37 37 36 36 36
++39 39 39 32 32 32 29 29 29 37 37 37 39 39 39 37 37 37 37 37 37 42 42 42
++37 37 37 49 49 49 42 42 42 40 40 40 40 40 40 34 34 34 39 39 39 40 40 40
++38 38 38 44 44 44 42 42 42 38 38 38 39 39 39 38 38 38 39 39 39 48 48 48
++46 46 46 45 45 45 46 46 46 50 50 50 54 54 54 54 54 54 50 50 50 45 45 45
++43 43 43 49 49 49 48 48 48 46 46 46 48 48 48 44 44 44 40 40 40 45 45 45
++44 44 44 46 46 46 49 49 49 48 48 48 45 45 45 39 39 39 25 25 25 11 11 11
++10 10 10 11 11 11 10 10 10 4 4 4 14 14 14 29 29 29 37 37 37 36 36 36
++16 16 16 14 14 14 11 11 11 13 13 13 16 16 16 16 16 16 14 14 14 11 11 11
++11 11 11 16 16 16 11 11 11 4 4 4 13 13 13 29 29 29 38 38 38 37 37 37
++13 13 13 11 11 11 14 14 14 20 20 20 24 24 24 29 29 29 36 36 36 40 40 40
++40 40 40 36 36 36 29 29 29 25 25 25 27 27 27 28 28 28 27 27 27 24 24 24
++16 16 16 29 29 29 37 37 37 32 32 32 24 24 24 21 21 21 20 20 20 20 20 20
++23 23 23 20 20 20 20 20 20 27 27 27 33 33 33 33 33 33 28 28 28 23 23 23
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3
++13 13 13 17 17 17 17 17 17 11 11 11 4 4 4 0 0 0 0 0 0 0 0 0
++0 0 0 4 4 4 10 10 10 13 13 13 11 11 11 8 8 8 4 4 4 3 3 3
++4 4 4 10 10 10 14 14 14 13 13 13 6 6 6 0 0 0 0 0 0 4 4 4
++0 0 0 16 16 16 17 17 17 8 8 8 4 4 4 3 3 3 0 0 0 0 0 0
++4 4 4 0 0 0 3 3 3 16 16 16 14 14 14 0 0 0 3 3 3 16 16 16
++19 19 19 19 19 19 4 4 4 3 3 3 0 0 0 16 16 16 19 19 19 24 24 24
++19 19 19 40 40 40 42 42 42 16 16 16 0 0 0 4 4 4 8 8 8 0 0 0
++17 17 17 24 24 24 50 50 50 24 24 24 0 0 0 11 11 11 0 0 0 8 8 8
++8 8 8 27 27 27 56 56 56 28 28 28 3 3 3 14 14 14 0 0 0 16 16 16
++6 6 6 44 44 44 59 59 59 38 38 38 13 13 13 11 11 11 16 16 16 10 10 10
++10 10 10 40 40 40 59 59 59 50 50 50 28 28 28 19 19 19 23 23 23 28 28 28
++20 20 20 46 46 46 67 67 67 63 63 63 39 39 39 28 28 28 38 38 38 33 33 33
++37 37 37 66 66 66 75 75 75 76 76 76 50 50 50 39 39 39 40 40 40 48 48 48
++42 42 42 62 62 62 87 87 87 91 91 91 63 63 63 48 48 48 60 60 60 60 60 60
++53 53 53 70 70 70 92 92 92 99 99 99 82 82 82 62 62 62 65 65 65 77 77 77
++73 73 73 75 75 75 91 91 91 109 110 110 105 105 105 87 87 87 80 80 80 89 89 89
++85 85 85 90 90 90 103 103 102 115 116 115 117 117 117 105 105 105 99 99 99 96 97 98
++99 99 99 99 99 99 112 112 113 121 121 119 121 121 119 121 121 119 117 117 117 109 110 110
++105 105 105 115 116 115 115 116 115 131 131 131 127 127 127 117 117 117 137 137 137 125 122 126
++121 121 119 117 117 117 125 125 127 137 137 137 134 134 134 122 121 126 122 121 126 133 133 133
++133 133 133 139 139 139 129 129 130 127 127 127 129 129 130 137 138 139 142 143 144 144 145 144
++124 112 115 116 129 109 83 172 115 83 172 115 83 172 72 83 172 72 83 172 72 83 172 72
++83 172 115 83 172 115 141 180 99 83 172 72 83 172 115 83 172 72 146 184 30 146 184 30
++141 180 99 83 172 72 83 172 72 83 172 72 231 246 232 252 251 251 255 255 255 252 251 251
++255 255 255 255 255 255 255 255 255 252 251 251 255 255 255 255 255 255 252 251 251 180 183 185
++14 16 19 1 3 7 14 16 19 11 13 16 6 8 11 16 20 21 8 10 13 10 11 14
++8 10 13 11 13 16 14 16 19 10 11 14 6 8 11 11 13 16 11 13 16 11 13 16
++17 17 17 78 78 78 121 121 119 117 117 117 112 112 113 109 110 110 125 122 126 133 133 133
++137 137 137 137 138 139 134 134 134 133 133 133 134 134 134 133 133 133 127 127 127 121 121 119
++121 121 119 121 121 119 128 128 128 133 133 133 131 131 131 128 128 128 125 122 126 121 121 119
++127 127 127 121 121 119 109 110 110 103 103 102 112 112 113 121 121 119 117 117 117 103 103 102
++99 99 99 96 96 96 93 93 93 92 92 92 92 92 92 92 92 92 91 91 91 90 90 90
++85 85 85 95 95 94 112 112 113 109 110 110 88 88 88 75 75 75 87 87 87 99 99 99
++94 94 94 73 73 73 62 62 62 66 66 66 65 65 65 61 61 61 70 70 70 81 81 81
++87 87 87 68 68 68 52 52 52 65 65 65 82 82 82 73 73 73 52 52 52 44 44 44
++44 44 44 45 45 45 48 48 48 48 48 48 43 43 43 39 39 39 44 44 44 52 52 52
++66 66 66 43 43 43 39 39 39 49 49 49 50 50 50 51 51 51 51 51 51 42 42 42
++49 49 49 52 52 52 57 57 57 59 59 59 62 62 62 67 67 67 54 54 54 29 29 29
++16 16 16 19 19 19 24 24 24 34 34 34 36 36 36 20 20 20 6 6 6 11 11 11
++17 17 17 43 43 43 57 57 57 59 59 59 50 50 50 23 23 23 6 6 6 19 19 19
++42 42 42 43 43 43 52 52 52 54 54 54 46 46 46 46 46 46 53 53 53 58 58 58
++54 54 54 50 50 50 46 46 46 46 46 46 48 48 48 51 51 51 52 52 52 50 50 50
++45 45 45 50 50 50 48 48 48 53 53 53 53 53 53 45 45 45 45 45 45 49 49 49
++46 46 46 53 53 53 54 54 54 50 50 50 46 46 46 43 43 43 46 46 46 56 56 56
++52 52 52 50 50 50 48 48 48 50 50 50 53 53 53 56 56 56 53 53 53 50 50 50
++43 43 43 49 49 49 49 49 49 46 46 46 45 45 45 43 43 43 42 42 42 46 46 46
++44 44 44 49 49 49 50 50 50 45 45 45 36 36 36 25 25 25 13 13 13 3 3 3
++11 11 11 13 13 13 10 10 10 13 13 13 24 24 24 34 34 34 31 31 31 17 17 17
++14 14 14 13 13 13 10 10 10 10 10 10 11 11 11 13 13 13 14 14 14 14 14 14
++14 14 14 19 19 19 14 14 14 6 6 6 21 21 21 42 42 42 40 40 40 25 25 25
++34 34 34 37 37 37 34 34 34 24 24 24 16 16 16 16 16 16 24 24 24 29 29 29
++37 37 37 20 20 20 8 8 8 17 17 17 24 24 24 19 19 19 13 13 13 11 11 11
++20 20 20 33 33 33 36 36 36 21 21 21 11 11 11 13 13 13 16 16 16 13 13 13
++11 11 11 10 10 10 20 20 20 32 32 32 34 34 34 24 24 24 14 14 14 11 11 11
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6
++19 19 19 19 19 19 14 14 14 8 8 8 0 0 0 0 0 0 0 0 0 3 3 3
++11 11 11 11 11 11 11 11 11 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 6 6 6 8 8 8 6 6 6 4 4 4 4 4 4 6 6 6
++0 0 0 11 11 11 17 17 17 11 11 11 6 6 6 3 3 3 0 0 0 0 0 0
++6 6 6 0 0 0 0 0 0 14 14 14 14 14 14 3 3 3 3 3 3 14 14 14
++19 19 19 19 19 19 3 3 3 3 3 3 0 0 0 16 16 16 17 17 17 21 21 21
++20 20 20 13 13 13 32 32 32 40 40 40 17 17 17 0 0 0 6 6 6 4 4 4
++3 3 3 4 4 4 28 28 28 51 51 51 27 27 27 0 0 0 13 13 13 11 11 11
++6 6 6 8 8 8 29 29 29 52 52 52 33 33 33 6 6 6 17 17 17 11 11 11
++10 10 10 6 6 6 40 40 40 61 61 61 37 37 37 6 6 6 11 11 11 23 23 23
++19 19 19 10 10 10 38 38 38 62 62 62 49 49 49 31 31 31 27 27 27 24 24 24
++28 28 28 23 23 23 42 42 42 70 70 70 67 67 67 39 39 39 32 32 32 46 46 46
++58 58 58 45 45 45 48 48 48 82 82 82 80 80 80 60 60 60 39 39 39 44 44 44
++59 59 59 60 60 60 63 63 63 80 80 80 88 88 88 73 73 73 58 58 58 57 57 57
++59 59 59 75 75 75 82 82 82 91 91 91 101 101 101 87 87 87 68 68 68 74 74 74
++80 80 80 75 75 75 87 87 87 109 110 110 112 112 113 93 93 93 84 84 84 89 89 89
++93 93 93 89 89 89 96 97 98 115 116 115 121 121 119 112 112 113 101 101 101 99 99 99
++103 103 102 109 110 110 103 103 102 112 112 113 134 134 134 133 133 133 112 112 113 105 105 105
++117 117 117 112 112 113 115 116 115 121 121 119 140 140 140 142 143 144 122 121 126 125 122 126
++117 117 117 128 128 128 134 134 134 129 129 130 125 122 126 127 127 127 133 133 133 140 140 140
++133 133 133 133 133 133 128 128 128 137 138 139 139 139 139 142 143 144 139 139 139 134 134 134
++128 121 122 231 224 220 231 246 232 136 172 147 83 172 115 83 172 72 83 172 72 83 172 72
++83 172 72 83 172 72 83 172 72 83 172 115 141 180 99 146 184 30 141 180 99 146 184 30
++141 180 99 83 172 72 83 172 72 83 172 72 200 220 210 252 251 251 252 251 251 255 255 255
++252 251 251 246 251 251 255 255 255 255 255 255 255 255 255 252 251 251 180 183 185 88 88 88
++10 11 14 11 13 16 20 21 24 8 10 13 6 8 11 14 16 19 8 10 13 14 16 19
++10 11 14 8 10 13 14 16 19 10 11 14 6 8 11 11 13 16 10 11 14 6 8 11
++28 28 28 93 93 93 115 116 115 115 116 115 121 121 119 117 117 117 122 121 126 134 134 134
++137 138 139 142 143 144 139 139 139 137 137 137 142 143 144 142 143 144 137 137 137 133 133 133
++129 129 130 128 128 128 134 134 134 140 140 140 133 133 133 128 128 128 129 129 130 129 129 130
++127 127 127 128 128 128 125 125 127 117 117 117 117 117 117 117 117 117 109 110 110 96 97 98
++99 99 99 99 99 99 99 99 99 96 97 98 96 97 98 95 95 94 92 92 92 89 89 89
++87 87 87 85 85 85 99 99 99 112 112 113 105 105 105 95 95 94 88 88 88 78 78 78
++96 96 96 91 91 91 75 75 75 68 68 68 74 74 74 65 65 65 57 57 57 70 70 70
++85 85 85 84 84 84 67 67 67 50 50 50 63 63 63 77 77 77 65 65 65 39 39 39
++51 51 51 46 46 46 42 42 42 42 42 42 39 39 39 37 37 37 37 37 37 39 39 39
++69 69 69 57 57 57 57 57 57 60 60 60 51 51 51 48 48 48 51 51 51 48 48 48
++52 52 52 49 49 49 43 43 43 38 38 38 48 48 48 67 67 67 67 67 67 45 45 45
++6 6 6 17 17 17 29 29 29 33 33 33 20 20 20 0 0 0 6 6 6 27 27 27
++48 48 48 57 57 57 51 51 51 40 40 40 43 43 43 43 43 43 25 25 25 8 8 8
++36 36 36 33 33 33 49 49 49 56 56 56 51 51 51 48 48 48 46 46 46 50 50 50
++54 54 54 58 58 58 58 58 58 49 49 49 43 43 43 50 50 50 51 51 51 42 42 42
++51 51 51 49 49 49 46 46 46 52 52 52 58 58 58 54 54 54 49 49 49 44 44 44
++45 45 45 50 50 50 52 52 52 50 50 50 45 45 45 43 43 43 44 44 44 49 49 49
++53 53 53 51 51 51 48 48 48 45 45 45 45 45 45 49 49 49 52 52 52 56 56 56
++49 49 49 49 49 49 46 46 46 44 44 44 45 45 45 44 44 44 45 45 45 46 46 46
++48 48 48 50 50 50 48 48 48 36 36 36 20 20 20 11 11 11 13 13 13 17 17 17
++13 13 13 10 10 10 17 17 17 32 32 32 37 37 37 27 27 27 13 13 13 6 6 6
++13 13 13 13 13 13 13 13 13 11 11 11 10 10 10 10 10 10 11 11 11 13 13 13
++10 10 10 11 11 11 17 17 17 28 28 28 38 38 38 39 39 39 34 34 34 27 27 27
++16 16 16 19 19 19 17 17 17 11 11 11 14 14 14 28 28 28 38 38 38 42 42 42
++16 16 16 6 6 6 4 4 4 14 14 14 13 13 13 4 4 4 4 4 4 14 14 14
++36 36 36 32 32 32 21 21 21 10 10 10 8 8 8 16 16 16 16 16 16 11 11 11
++6 6 6 16 16 16 28 28 28 32 32 32 24 24 24 11 11 11 6 6 6 13 13 13
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 10 10 10
++21 21 21 17 17 17 11 11 11 4 4 4 0 0 0 0 0 0 3 3 3 8 8 8
++11 11 11 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6
++8 8 8 4 4 4 4 4 4 4 4 4 6 6 6 4 4 4 0 0 0 0 0 0
++0 0 0 6 6 6 16 16 16 13 13 13 6 6 6 3 3 3 3 3 3 0 0 0
++6 6 6 0 0 0 0 0 0 14 14 14 14 14 14 3 3 3 3 3 3 14 14 14
++19 19 19 19 19 19 3 3 3 3 3 3 0 0 0 16 16 16 17 17 17 20 20 20
++17 17 17 13 13 13 8 8 8 27 27 27 43 43 43 21 21 21 0 0 0 10 10 10
++0 0 0 13 13 13 6 6 6 32 32 32 50 50 50 27 27 27 4 4 4 6 6 6
++10 10 10 17 17 17 8 8 8 34 34 34 54 54 54 33 33 33 13 13 13 11 11 11
++19 19 19 10 10 10 6 6 6 36 36 36 58 58 58 39 39 39 11 11 11 19 19 19
++21 21 21 20 20 20 16 16 16 38 38 38 63 63 63 53 53 53 27 27 27 24 24 24
++27 27 27 36 36 36 24 24 24 40 40 40 75 75 75 63 63 63 36 36 36 53 53 53
++50 50 50 43 43 43 37 37 37 58 58 58 73 73 73 85 85 85 66 66 66 50 50 50
++69 69 69 61 61 61 50 50 50 60 60 60 88 88 88 89 89 89 68 68 68 59 59 59
++78 78 78 83 83 83 73 73 73 74 74 74 95 95 94 99 99 99 83 83 83 75 75 75
++80 80 80 91 91 91 93 93 93 88 88 88 95 95 94 109 110 110 105 105 105 89 89 89
++85 85 85 101 101 101 109 110 110 105 104 105 109 110 110 121 121 119 115 116 115 96 97 98
++105 104 105 103 103 102 115 116 115 125 122 126 125 122 126 129 129 130 127 127 127 105 105 105
++117 117 117 115 116 115 117 117 117 125 125 127 140 140 140 140 140 140 125 125 127 128 128 128
++129 129 130 137 137 137 134 134 134 125 125 127 125 122 126 137 137 137 144 145 144 144 145 144
++142 143 144 137 138 139 131 131 131 142 143 144 137 138 139 147 147 148 137 138 139 121 121 119
++180 183 185 238 240 244 255 255 255 248 249 239 136 172 147 83 172 72 83 172 72 83 172 115
++83 172 72 83 172 72 146 184 30 146 184 30 146 184 30 146 184 30 141 180 99 83 172 72
++83 172 72 83 172 72 83 172 72 83 172 72 136 172 147 255 255 255 252 251 251 252 251 251
++255 255 255 255 255 255 252 251 251 252 251 251 252 251 251 255 255 255 200 220 210 16 16 16
++14 16 19 14 16 19 11 13 16 6 8 11 10 11 14 11 13 16 6 8 11 14 16 19
++11 13 16 6 8 11 11 13 16 8 10 13 10 11 14 14 16 19 6 8 11 8 10 13
++54 54 54 101 101 101 105 105 105 115 116 115 129 129 130 127 127 127 129 129 130 140 140 140
++131 131 131 140 140 140 137 138 139 133 133 133 139 139 139 142 143 144 144 145 144 147 147 148
++140 140 140 133 133 133 134 134 134 140 140 140 137 137 137 134 134 134 137 137 137 137 137 137
++134 134 134 137 138 139 137 137 137 129 129 130 121 121 119 109 110 110 105 104 105 103 103 102
++101 101 101 99 99 99 96 97 98 95 95 94 95 95 94 94 94 94 91 91 91 90 90 90
++92 92 92 84 84 84 90 90 90 105 105 105 105 105 105 103 103 102 99 99 99 92 92 92
++83 83 83 99 99 99 99 99 99 78 78 78 67 67 67 65 65 65 63 63 63 63 63 63
++56 56 56 74 74 74 84 84 84 69 69 69 58 58 58 68 68 68 74 74 74 66 66 66
++44 44 44 44 44 44 44 44 44 44 44 44 40 40 40 36 36 36 38 38 38 44 44 44
++67 67 67 69 69 69 67 67 67 59 59 59 51 51 51 50 50 50 51 51 51 50 50 50
++40 40 40 33 33 33 23 23 23 16 16 16 29 29 29 57 57 57 67 67 67 54 54 54
++33 33 33 31 31 31 27 27 27 20 20 20 13 13 13 21 21 21 42 42 42 57 57 57
++63 63 63 46 46 46 21 21 21 0 0 0 6 6 6 37 37 37 52 52 52 44 44 44
++19 19 19 13 13 13 40 40 40 58 58 58 61 61 61 59 59 59 48 48 48 48 48 48
++48 48 48 46 46 46 53 53 53 54 54 54 46 46 46 44 44 44 49 49 49 49 49 49
++56 56 56 50 50 50 46 46 46 44 44 44 48 48 48 54 54 54 52 52 52 46 46 46
++46 46 46 45 45 45 46 46 46 48 48 48 46 46 46 46 46 46 44 44 44 42 42 42
++50 50 50 51 51 51 52 52 52 49 49 49 44 44 44 44 44 44 49 49 49 54 54 54
++56 56 56 49 49 49 44 44 44 43 43 43 45 45 45 49 49 49 49 49 49 46 46 46
++50 50 50 44 44 44 34 34 34 21 21 21 11 11 11 6 6 6 13 13 13 19 19 19
++6 6 6 13 13 13 27 27 27 37 37 37 32 32 32 17 17 17 10 10 10 13 13 13
++8 8 8 11 11 11 14 14 14 16 16 16 16 16 16 14 14 14 13 13 13 11 11 11
++21 21 21 25 25 25 34 34 34 40 40 40 34 34 34 21 21 21 14 14 14 16 16 16
++11 11 11 11 11 11 10 10 10 11 11 11 23 23 23 34 34 34 33 33 33 25 25 25
++8 8 8 13 13 13 17 17 17 16 16 16 10 10 10 11 11 11 23 23 23 34 34 34
++37 37 37 21 21 21 6 6 6 8 8 8 14 14 14 16 16 16 13 13 13 13 13 13
++17 17 17 27 27 27 31 31 31 23 23 23 13 13 13 10 10 10 11 11 11 14 14 14
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 13 13 13
++23 23 23 16 16 16 8 8 8 3 3 3 0 0 0 0 0 0 4 4 4 11 11 11
++13 13 13 8 8 8 0 0 0 0 0 0 3 3 3 8 8 8 11 11 11 13 13 13
++14 14 14 10 10 10 6 6 6 6 6 6 10 10 10 8 8 8 3 3 3 0 0 0
++0 0 0 4 4 4 14 14 14 14 14 14 4 4 4 0 0 0 3 3 3 0 0 0
++4 4 4 0 0 0 3 3 3 16 16 16 14 14 14 0 0 0 3 3 3 16 16 16
++17 17 17 17 17 17 0 0 0 3 3 3 0 0 0 17 17 17 17 17 17 19 19 19
++24 24 24 13 13 13 0 0 0 8 8 8 29 29 29 39 39 39 23 23 23 0 0 0
++8 8 8 0 0 0 13 13 13 0 0 0 32 32 32 59 59 59 24 24 24 0 0 0
++14 14 14 0 0 0 17 17 17 10 10 10 34 34 34 61 61 61 33 33 33 16 16 16
++8 8 8 14 14 14 10 10 10 10 10 10 33 33 33 57 57 57 48 48 48 17 17 17
++16 16 16 20 20 20 17 17 17 19 19 19 42 42 42 63 63 63 57 57 57 31 31 31
++20 20 20 32 32 32 33 33 33 21 21 21 44 44 44 81 81 81 77 77 77 52 52 52
++29 29 29 43 43 43 42 42 42 38 38 38 46 46 46 84 84 84 84 84 84 77 77 77
++56 56 56 51 51 51 56 56 56 52 52 52 61 61 61 87 87 87 91 91 91 80 80 80
++87 87 87 75 75 75 68 68 68 63 63 63 70 70 70 91 91 91 103 103 102 95 95 94
++87 87 87 95 95 94 91 91 91 81 81 81 85 85 85 105 104 105 112 112 113 105 105 105
++93 93 93 105 105 105 109 110 110 99 99 99 96 97 98 109 110 110 117 117 117 117 117 117
++105 105 105 109 110 110 127 127 127 125 122 126 109 110 110 115 116 115 129 129 130 127 127 127
++115 116 115 125 125 127 125 122 126 137 137 137 128 128 128 121 121 119 142 143 144 137 137 137
++144 145 144 134 134 134 127 127 127 128 128 128 137 137 137 144 145 144 144 145 144 144 145 144
++140 140 140 140 140 140 134 134 134 137 138 139 134 134 134 147 147 148 129 129 130 125 125 127
++238 240 244 255 255 255 255 255 255 255 255 255 248 249 239 136 172 147 83 172 115 83 172 115
++83 172 115 141 180 99 146 184 30 146 184 30 146 184 30 83 172 72 83 172 72 83 172 72
++83 172 72 83 172 72 83 172 72 83 172 72 112 122 122 255 255 255 252 251 251 248 249 239
++252 251 251 255 255 255 255 255 255 252 251 251 255 255 255 255 255 255 200 220 210 40 40 40
++11 13 16 8 10 13 6 8 11 8 10 13 11 13 16 10 11 14 6 8 11 10 11 14
++14 16 19 6 8 11 11 13 16 6 8 11 11 13 16 14 16 19 6 8 11 26 29 32
++83 83 83 103 103 102 99 99 99 109 110 110 121 121 119 121 121 119 125 125 127 134 134 134
++134 134 134 140 140 140 139 139 139 133 133 133 131 131 131 133 133 133 137 138 139 144 145 144
++142 143 144 129 129 130 121 121 119 125 122 126 129 129 130 137 137 137 137 137 137 134 134 134
++134 134 134 134 134 134 137 137 137 137 137 137 131 131 131 121 121 119 115 116 115 115 116 115
++109 110 110 105 105 105 101 101 101 96 96 96 95 95 94 95 95 94 95 95 94 95 95 94
++87 87 87 88 88 88 94 94 94 99 99 99 93 93 93 85 85 85 89 89 89 103 103 102
++89 89 89 80 80 80 89 89 89 91 91 91 70 70 70 62 62 62 69 69 69 65 65 65
++59 59 59 61 61 61 77 77 77 87 87 87 70 70 70 58 58 58 69 69 69 84 84 84
++53 53 53 46 46 46 42 42 42 46 46 46 53 53 53 60 60 60 68 68 68 74 74 74
++57 57 57 65 65 65 63 63 63 59 59 59 60 60 60 62 62 62 51 51 51 33 33 33
++28 28 28 24 24 24 23 23 23 24 24 24 32 32 32 51 51 51 62 62 62 59 59 59
++51 51 51 34 34 34 19 19 19 17 17 17 32 32 32 53 53 53 62 62 62 56 56 56
++44 44 44 25 25 25 17 17 17 11 11 11 0 0 0 14 14 14 40 40 40 51 51 51
++50 50 50 39 39 39 51 51 51 49 49 49 48 48 48 53 53 53 43 43 43 39 39 39
++36 36 36 16 16 16 29 29 29 53 53 53 50 50 50 37 37 37 44 44 44 58 58 58
++54 54 54 50 50 50 51 51 51 42 42 42 38 38 38 49 49 49 54 54 54 57 57 57
++52 52 52 45 45 45 44 44 44 48 48 48 50 50 50 53 53 53 51 51 51 44 44 44
++45 45 45 50 50 50 54 54 54 54 54 54 51 51 51 46 46 46 46 46 46 48 48 48
++56 56 56 48 48 48 44 44 44 44 44 44 45 45 45 49 49 49 50 50 50 44 44 44
++44 44 44 31 31 31 16 16 16 11 11 11 11 11 11 11 11 11 10 10 10 8 8 8
++17 17 17 31 31 31 34 34 34 25 25 25 13 13 13 10 10 10 13 13 13 11 11 11
++14 14 14 11 11 11 10 10 10 10 10 10 13 13 13 19 19 19 24 24 24 27 27 27
++29 29 29 42 42 42 45 45 45 33 33 33 16 16 16 8 8 8 8 8 8 8 8 8
++11 11 11 13 13 13 17 17 17 25 25 25 33 33 33 33 33 33 21 21 21 4 4 4
++14 14 14 17 17 17 14 14 14 10 10 10 13 13 13 24 24 24 34 34 34 38 38 38
++19 19 19 8 8 8 6 6 6 14 14 14 16 16 16 8 8 8 10 10 10 17 17 17
++31 31 31 31 31 31 23 23 23 11 11 11 10 10 10 17 17 17 17 17 17 13 13 13
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 4 4 4 16 16 16
++20 20 20 13 13 13 4 4 4 0 0 0 0 0 0 0 0 0 8 8 8 16 16 16
++11 11 11 6 6 6 0 0 0 0 0 0 6 6 6 10 10 10 8 8 8 3 3 3
++6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 4 4 4 3 3 3
++0 0 0 4 4 4 14 14 14 16 16 16 3 3 3 0 0 0 3 3 3 0 0 0
++3 3 3 0 0 0 4 4 4 16 16 16 13 13 13 0 0 0 3 3 3 17 17 17
++16 16 16 14 14 14 0 0 0 0 0 0 0 0 0 19 19 19 17 17 17 20 20 20
++28 28 28 4 4 4 6 6 6 6 6 6 0 0 0 29 29 29 42 42 42 10 10 10
++0 0 0 8 8 8 0 0 0 8 8 8 10 10 10 31 31 31 58 58 58 20 20 20
++8 8 8 6 6 6 0 0 0 17 17 17 13 13 13 32 32 32 65 65 65 28 28 28
++8 8 8 6 6 6 23 23 23 16 16 16 0 0 0 38 38 38 62 62 62 42 42 42
++27 27 27 11 11 11 23 23 23 24 24 24 16 16 16 45 45 45 68 68 68 51 51 51
++34 34 34 21 21 21 36 36 36 31 31 31 31 31 31 69 69 69 84 84 84 65 65 65
++44 44 44 43 43 43 40 40 40 40 40 40 42 42 42 69 69 69 77 77 77 92 92 92
++60 60 60 48 48 48 60 60 60 54 54 54 48 48 48 76 76 76 96 97 98 96 97 98
++81 81 81 67 67 67 68 68 68 72 72 72 72 72 72 83 83 83 101 101 101 105 105 105
++103 103 102 89 89 89 83 83 83 87 87 87 88 88 88 88 88 88 103 103 102 121 121 119
++115 116 115 105 105 105 99 99 99 101 101 101 99 99 99 99 99 99 112 112 113 129 129 130
++117 117 117 127 127 127 121 121 119 109 110 110 109 110 110 112 112 113 121 121 119 137 137 137
++128 128 128 121 121 119 142 143 144 129 129 130 117 117 117 131 131 131 133 133 133 147 147 148
++144 145 144 133 133 133 128 128 128 137 137 137 144 145 144 142 143 144 142 143 144 145 146 147
++139 139 139 142 143 144 137 137 137 140 140 140 137 137 137 137 137 137 125 122 126 180 183 185
++252 251 251 252 251 251 238 240 244 255 255 255 254 249 251 248 249 239 187 210 182 83 172 115
++83 172 72 83 172 72 146 184 30 146 184 30 83 172 72 83 172 72 83 172 72 83 172 72
++83 172 115 83 172 115 86 124 83 86 124 83 109 110 110 238 240 244 252 251 251 255 255 255
++255 255 255 252 251 251 255 255 255 255 255 255 255 255 255 238 240 244 142 143 144 0 0 0
++6 8 11 6 8 11 8 10 13 11 13 16 10 11 14 10 11 14 11 13 16 6 8 11
++11 13 16 8 10 13 14 16 19 6 8 11 11 13 16 11 13 16 10 11 14 53 54 57
++88 88 88 91 91 91 91 91 91 105 105 105 105 105 105 121 121 119 128 128 128 128 128 128
++139 139 139 140 140 140 144 145 144 144 145 144 134 134 134 128 128 128 131 131 131 134 134 134
++140 140 140 144 145 144 142 143 144 133 133 133 127 127 127 125 125 127 129 129 130 139 139 139
++129 129 130 128 128 128 128 128 128 133 133 133 137 137 137 134 134 134 129 129 130 127 127 127
++117 117 117 115 116 115 109 110 110 105 104 105 101 101 101 99 99 99 96 96 96 94 94 94
++96 97 98 93 93 93 89 89 89 96 96 96 105 104 105 93 93 93 82 82 82 88 88 88
++105 105 105 87 87 87 85 85 85 96 96 96 92 92 92 75 75 75 67 67 67 66 66 66
++70 70 70 59 59 59 58 58 58 73 73 73 77 77 77 65 65 65 62 62 62 78 78 78
++70 70 70 68 68 68 70 70 70 76 76 76 77 77 77 68 68 68 52 52 52 42 42 42
++42 42 42 56 56 56 74 74 74 75 75 75 62 62 62 58 58 58 48 48 48 23 23 23
++32 32 32 21 21 21 20 20 20 21 21 21 19 19 19 31 31 31 51 51 51 63 63 63
++53 53 53 39 39 39 32 32 32 39 39 39 52 52 52 63 63 63 57 57 57 38 38 38
++16 16 16 6 6 6 16 16 16 37 37 37 46 46 46 46 46 46 46 46 46 46 46 46
++52 52 52 46 46 46 48 48 48 20 20 20 16 16 16 46 46 46 49 49 49 44 44 44
++28 28 28 0 0 0 6 6 6 40 40 40 42 42 42 33 33 33 39 39 39 48 48 48
++46 46 46 39 39 39 50 50 50 48 48 48 42 42 42 48 48 48 51 51 51 58 58 58
++54 54 54 45 45 45 43 43 43 45 45 45 46 46 46 53 53 53 57 57 57 51 51 51
++46 46 46 46 46 46 48 48 48 50 50 50 51 51 51 49 49 49 43 43 43 38 38 38
++49 49 49 45 45 45 48 48 48 49 49 49 44 44 44 45 45 45 46 46 46 43 43 43
++29 29 29 19 19 19 10 10 10 10 10 10 14 14 14 14 14 14 14 14 14 16 16 16
++36 36 36 37 37 37 29 29 29 14 14 14 4 4 4 10 10 10 11 11 11 10 10 10
++16 16 16 13 13 13 10 10 10 13 13 13 19 19 19 24 24 24 28 28 28 28 28 28
++24 24 24 36 36 36 34 34 34 17 17 17 6 6 6 16 16 16 21 21 21 19 19 19
++8 8 8 14 14 14 25 25 25 33 33 33 33 33 33 24 24 24 16 16 16 13 13 13
++17 17 17 13 13 13 6 6 6 8 8 8 21 21 21 32 32 32 31 31 31 23 23 23
++8 8 8 8 8 8 13 13 13 16 16 16 11 11 11 8 8 8 16 16 16 28 28 28
++32 32 32 24 24 24 14 14 14 8 8 8 11 11 11 17 17 17 17 17 17 14 14 14
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 20 20 20 21 21 21 17 17 17
++17 17 17 19 19 19 17 17 17 11 11 11 11 11 11 17 17 17 19 19 19 17 17 17
++20 20 20 3 3 3 21 21 21 19 19 19 20 20 20 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 6 6 6 17 17 17
++19 19 19 10 10 10 0 0 0 0 0 0 0 0 0 3 3 3 10 10 10 19 19 19
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 11 11 11 4 4 4 0 0 0
++0 0 0 3 3 3 8 8 8 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0
++4 4 4 3 3 3 14 14 14 16 16 16 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 6 6 6 17 17 17 13 13 13 0 0 0 3 3 3 19 19 19
++14 14 14 14 14 14 0 0 0 0 0 0 0 0 0 19 19 19 19 19 19 20 20 20
++19 19 19 13 13 13 4 4 4 0 0 0 0 0 0 4 4 4 27 27 27 51 51 51
++4 4 4 8 8 8 13 13 13 0 0 0 0 0 0 8 8 8 24 24 24 65 65 65
++19 19 19 6 6 6 11 11 11 10 10 10 10 10 10 13 13 13 27 27 27 60 60 60
++29 29 29 17 17 17 11 11 11 19 19 19 16 16 16 8 8 8 32 32 32 66 66 66
++45 45 45 28 28 28 19 19 19 27 27 27 25 25 25 16 16 16 37 37 37 72 72 72
++57 57 57 37 37 37 23 23 23 36 36 36 60 60 60 43 43 43 36 36 36 87 87 87
++71 71 71 49 49 49 38 38 38 48 48 48 51 51 51 67 67 67 66 66 66 83 83 83
++88 88 88 59 59 59 58 58 58 59 59 59 56 56 56 69 69 69 84 84 84 96 97 98
++95 95 94 80 80 80 65 65 65 70 70 70 78 78 78 74 74 74 85 85 85 112 112 113
++112 112 113 92 92 92 82 82 82 88 88 88 88 88 88 84 84 84 95 95 94 115 116 115
++122 121 126 109 110 110 99 99 99 103 103 102 105 105 105 105 104 105 105 105 105 115 116 115
++137 137 137 127 127 127 112 112 113 112 112 113 117 117 117 117 117 117 115 116 115 121 121 119
++137 138 139 144 145 144 128 128 128 121 121 119 128 128 128 129 129 130 137 138 139 140 140 140
++139 139 139 137 137 137 137 138 139 142 143 144 140 140 140 137 137 137 142 143 144 149 151 153
++149 149 149 145 146 147 139 139 139 145 146 147 140 140 140 125 122 126 128 128 128 238 240 244
++254 249 251 252 251 251 246 251 251 255 255 255 254 249 251 254 249 251 248 249 239 187 210 182
++83 172 72 83 172 72 83 172 72 83 172 115 83 172 115 83 172 72 83 172 72 83 172 115
++86 124 83 98 114 115 112 115 112 128 121 122 124 112 115 200 220 210 252 251 251 255 255 255
++252 251 251 255 255 255 252 251 251 252 251 251 255 255 255 252 251 251 200 220 210 27 27 27
++10 11 14 14 16 19 16 20 21 11 13 16 1 3 7 10 11 14 20 21 24 10 11 14
++11 13 16 11 13 16 16 20 21 6 8 11 11 13 16 8 10 13 14 16 19 73 74 76
++91 91 91 84 84 84 90 90 90 105 105 105 105 105 105 128 128 128 133 133 133 125 122 126
++134 134 134 137 137 137 149 149 149 155 156 156 144 145 144 134 134 134 133 133 133 129 129 130
++131 131 131 144 145 144 145 146 147 142 143 144 140 140 140 137 137 137 131 131 131 133 133 133
++137 137 137 129 129 130 121 121 119 121 121 119 127 127 127 133 133 133 134 134 134 133 133 133
++127 127 127 125 125 127 122 121 126 121 121 119 117 117 117 109 110 110 103 103 102 96 96 96
++93 93 93 92 92 92 87 87 87 96 96 96 109 110 110 95 95 94 78 78 78 85 85 85
++81 81 81 103 103 102 93 93 93 81 81 81 96 96 96 92 92 92 70 70 70 67 67 67
++60 60 60 67 67 67 60 60 60 66 66 66 87 87 87 88 88 88 78 78 78 84 84 84
++87 87 87 78 78 78 67 67 67 54 54 54 44 44 44 43 43 43 53 53 53 67 67 67
++75 75 75 59 59 59 59 59 59 58 58 58 48 48 48 58 58 58 58 58 58 29 29 29
++32 32 32 23 23 23 28 28 28 33 33 33 23 23 23 20 20 20 39 39 39 58 58 58
++60 60 60 53 53 53 57 57 57 61 61 61 60 60 60 57 57 57 49 49 49 36 36 36
++44 44 44 54 54 54 53 53 53 48 48 48 43 43 43 27 27 27 8 8 8 4 4 4
++38 38 38 46 46 46 52 52 52 11 11 11 6 6 6 54 54 54 60 60 60 52 52 52
++43 43 43 19 19 19 21 21 21 40 40 40 46 46 46 50 50 50 52 52 52 44 44 44
++37 37 37 24 24 24 43 43 43 54 54 54 53 53 53 52 52 52 44 44 44 48 48 48
++51 51 51 42 42 42 38 38 38 39 39 39 39 39 39 48 48 48 56 56 56 53 53 53
++51 51 51 43 43 43 37 37 37 38 38 38 45 45 45 48 48 48 40 40 40 33 33 33
++40 40 40 42 42 42 51 51 51 53 53 53 43 43 43 40 40 40 43 43 43 40 40 40
++13 13 13 11 11 11 13 13 13 16 16 16 14 14 14 14 14 14 24 24 24 36 36 36
++43 43 43 27 27 27 13 13 13 13 13 13 16 16 16 14 14 14 13 13 13 16 16 16
++4 4 4 11 11 11 20 20 20 31 31 31 36 36 36 32 32 32 21 21 21 11 11 11
++37 37 37 37 37 37 28 28 28 13 13 13 8 8 8 13 13 13 13 13 13 6 6 6
++14 14 14 23 23 23 33 33 33 34 34 34 21 21 21 4 4 4 6 6 6 17 17 17
++16 16 16 8 8 8 8 8 8 21 21 21 34 34 34 36 36 36 23 23 23 6 6 6
++13 13 13 16 16 16 17 17 17 11 11 11 8 8 8 14 14 14 27 27 27 37 37 37
++24 24 24 16 16 16 11 11 11 14 14 14 14 14 14 11 11 11 13 13 13 19 19 19
++
++3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 14 14 14 19 19 19 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++19 19 19 14 14 14 14 14 14 17 17 17 17 17 17 10 10 10 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++21 21 21 8 8 8 0 0 0 6 6 6 0 0 0 0 0 0 17 17 17 0 0 0
++0 0 0 0 0 0 0 0 0 4 4 4 8 8 8 8 8 8 4 4 4 0 0 0
++0 0 0 3 3 3 4 4 4 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 10 10 10 17 17 17 11 11 11 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 4 4 4 11 11 11 11 11 11 4 4 4 0 0 0 8 8 8 17 17 17
++19 19 19 10 10 10 0 0 0 0 0 0 8 8 8 17 17 17 20 20 20 20 20 20
++20 20 20 8 8 8 0 0 0 4 4 4 4 4 4 0 0 0 10 10 10 21 21 21
++52 52 52 11 11 11 3 3 3 8 8 8 0 0 0 0 0 0 10 10 10 27 27 27
++60 60 60 19 19 19 11 11 11 4 4 4 6 6 6 10 10 10 14 14 14 20 20 20
++63 63 63 31 31 31 17 17 17 13 13 13 16 16 16 20 20 20 17 17 17 29 29 29
++66 66 66 46 46 46 24 24 24 20 20 20 29 29 29 28 28 28 28 28 28 38 38 38
++71 71 71 63 63 63 39 39 39 52 52 52 50 50 50 40 40 40 36 36 36 46 46 46
++75 75 75 81 81 81 49 49 49 46 46 46 73 73 73 61 61 61 44 44 44 59 59 59
++87 87 87 95 95 94 65 65 65 46 46 46 80 80 80 91 91 91 71 71 71 68 68 68
++95 95 94 101 101 101 90 90 90 71 71 71 74 74 74 94 94 94 96 97 98 83 83 83
++105 105 105 109 110 110 101 101 101 87 87 87 84 84 84 96 97 98 109 110 110 109 110 110
++109 110 110 125 122 126 115 116 115 99 99 99 103 103 102 105 105 105 112 112 113 128 128 128
++121 121 119 137 137 137 125 125 127 117 117 117 121 121 119 115 116 115 121 121 119 129 129 130
++137 137 137 142 143 144 137 137 137 128 128 128 131 131 131 144 145 144 142 143 144 128 128 128
++133 133 133 142 143 144 152 153 154 144 145 144 134 134 134 140 140 140 152 153 154 157 157 157
++144 145 144 142 143 144 139 139 139 155 156 156 142 143 144 134 134 134 180 183 185 252 251 251
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++187 210 182 83 172 115 83 172 72 83 172 72 83 172 72 83 172 72 86 124 83 107 112 107
++117 117 117 122 121 126 127 127 127 118 122 119 125 125 127 166 165 167 255 255 255 255 255 255
++255 255 255 255 255 255 252 251 251 252 251 251 255 255 255 169 175 167 57 57 57 0 0 0
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++8 10 13 14 16 19 8 10 13 14 16 19 10 11 14 6 8 11 43 44 47 69 70 72
++84 84 84 94 94 94 96 96 96 96 97 98 105 105 105 117 117 117 131 131 131 144 145 144
++129 129 130 133 133 133 142 143 144 149 149 149 155 156 156 149 151 153 140 140 140 129 129 130
++131 131 131 133 133 133 140 140 140 142 143 144 134 134 134 134 134 134 140 140 140 142 143 144
++142 143 144 134 134 134 125 122 126 117 117 117 117 117 117 122 121 126 128 128 128 133 133 133
++127 127 127 115 116 115 105 105 105 105 105 105 112 112 113 117 117 117 121 121 119 122 121 126
++121 121 119 112 112 113 109 110 110 109 110 110 112 112 113 109 110 110 99 99 99 89 89 89
++87 87 87 99 99 99 105 104 105 99 99 99 96 96 96 99 99 99 93 93 93 82 82 82
++90 90 90 91 91 91 93 93 93 88 88 88 83 83 83 87 87 87 85 85 85 71 71 71
++70 70 70 80 80 80 59 59 59 60 60 60 63 63 63 73 73 73 71 71 71 65 65 65
++37 37 37 43 43 43 37 37 37 56 56 56 61 61 61 50 50 50 56 56 56 45 45 45
++24 24 24 29 29 29 23 23 23 17 17 17 25 25 25 34 34 34 45 45 45 60 60 60
++60 60 60 60 60 60 61 61 61 61 61 61 59 59 59 56 56 56 54 54 54 54 54 54
++36 36 36 20 20 20 17 17 17 31 31 31 27 27 27 8 8 8 0 0 0 16 16 16
++13 13 13 31 31 31 49 49 49 28 28 28 19 19 19 39 39 39 34 34 34 24 24 24
++39 39 39 42 42 42 32 32 32 38 38 38 43 43 43 40 40 40 37 37 37 13 13 13
++37 37 37 48 48 48 46 46 46 44 44 44 50 50 50 42 42 42 21 21 21 11 11 11
++38 38 38 44 44 44 42 42 42 49 49 49 29 29 29 40 40 40 38 38 38 33 33 33
++27 27 27 11 11 11 16 16 16 3 3 3 8 8 8 33 33 33 34 34 34 37 37 37
++27 27 27 13 13 13 23 23 23 34 34 34 23 23 23 4 4 4 8 8 8 17 17 17
++19 19 19 10 10 10 13 13 13 16 16 16 4 4 4 10 10 10 31 31 31 43 43 43
++32 32 32 16 16 16 13 13 13 4 4 4 11 11 11 21 21 21 8 8 8 8 8 8
++21 21 21 10 10 10 11 11 11 23 23 23 17 17 17 4 4 4 17 17 17 42 42 42
++39 39 39 21 21 21 8 8 8 14 14 14 21 21 21 16 16 16 11 11 11 13 13 13
++16 16 16 36 36 36 38 38 38 19 19 19 8 8 8 19 19 19 20 20 20 10 10 10
++13 13 13 10 10 10 14 14 14 39 39 39 33 33 33 13 13 13 19 19 19 10 10 10
++8 8 8 16 16 16 11 11 11 11 11 11 19 19 19 31 31 31 36 36 36 20 20 20
++8 8 8 16 16 16 6 6 6 4 4 4 13 13 13 21 21 21 0 0 0 19 19 19
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 14 14 14 19 19 19 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++19 19 19 14 14 14 14 14 14 19 19 19 17 17 17 10 10 10 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++20 20 20 8 8 8 0 0 0 4 4 4 0 0 0 3 3 3 19 19 19 4 4 4
++4 4 4 0 0 0 0 0 0 3 3 3 10 10 10 11 11 11 4 4 4 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 13 13 13 16 16 16 11 11 11 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 8 8 8 17 17 17 11 11 11 0 0 0 0 0 0 10 10 10 20 20 20
++17 17 17 8 8 8 0 0 0 0 0 0 10 10 10 17 17 17 20 20 20 20 20 20
++21 21 21 10 10 10 0 0 0 4 4 4 4 4 4 0 0 0 4 4 4 16 16 16
++20 20 20 51 51 51 17 17 17 0 0 0 8 8 8 0 0 0 14 14 14 6 6 6
++27 27 27 59 59 59 19 19 19 13 13 13 6 6 6 6 6 6 10 10 10 8 8 8
++27 27 27 63 63 63 32 32 32 16 16 16 24 24 24 8 8 8 17 17 17 19 19 19
++31 31 31 61 61 61 56 56 56 27 27 27 23 23 23 29 29 29 28 28 28 28 28 28
++34 34 34 76 76 76 71 71 71 50 50 50 25 25 25 36 36 36 43 43 43 40 40 40
++53 53 53 72 72 72 76 76 76 70 70 70 54 54 54 45 45 45 53 53 53 52 52 52
++66 66 66 83 83 83 90 90 90 87 87 87 81 81 81 70 70 70 63 63 63 68 68 68
++73 73 73 95 95 94 105 104 105 93 93 93 85 85 85 89 89 89 87 87 87 75 75 75
++81 81 81 105 105 105 115 116 115 101 101 101 96 96 96 109 110 110 112 112 113 99 99 99
++96 97 98 112 112 113 127 127 127 121 121 119 109 110 110 115 116 115 122 121 126 121 121 119
++115 116 115 115 116 115 139 139 139 127 127 127 115 116 115 125 125 127 122 121 126 137 138 139
++129 129 130 128 128 128 133 133 133 140 140 140 140 140 140 134 134 134 133 133 133 134 134 134
++137 137 137 144 145 144 149 149 149 147 147 148 142 143 144 149 149 149 157 157 157 157 157 157
++147 147 148 139 139 139 152 153 154 149 151 153 149 149 149 134 134 134 231 246 232 255 255 255
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++254 249 251 200 220 210 141 180 99 146 184 30 146 184 30 83 172 72 86 124 83 121 113 124
++118 122 119 118 122 119 118 122 119 113 122 108 118 122 119 134 134 134 255 255 255 255 255 255
++255 255 255 255 255 255 252 251 251 255 255 255 255 255 255 255 255 255 92 92 92 27 27 27
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++10 11 14 8 10 13 11 13 16 14 16 19 6 8 11 20 21 24 53 54 57 71 72 74
++78 78 78 92 92 92 101 101 101 105 105 105 115 116 115 122 121 126 128 128 128 134 134 134
++142 143 144 140 140 140 142 143 144 144 145 144 147 147 148 147 147 148 144 145 144 142 143 144
++137 137 137 134 134 134 137 138 139 139 139 139 134 134 134 134 134 134 137 137 137 133 133 133
++133 133 133 134 134 134 134 134 134 128 128 128 117 117 117 115 116 115 121 121 119 127 127 127
++128 128 128 115 116 115 109 110 110 109 110 110 109 110 110 103 103 102 99 99 99 103 103 102
++103 103 102 105 105 105 105 104 105 101 101 101 96 97 98 99 99 99 99 99 99 96 97 98
++92 92 92 90 90 90 90 90 90 91 91 91 89 89 89 83 83 83 81 81 81 82 82 82
++76 76 76 75 75 75 76 76 76 70 70 70 63 63 63 67 67 67 69 69 69 61 61 61
++61 61 61 63 63 63 51 51 51 58 58 58 52 52 52 56 56 56 54 54 54 45 45 45
++48 48 48 48 48 48 34 34 34 44 44 44 45 45 45 36 36 36 44 44 44 37 37 37
++34 34 34 37 37 37 37 37 37 38 38 38 40 40 40 37 37 37 32 32 32 33 33 33
++25 25 25 33 33 33 32 32 32 24 24 24 25 25 25 28 28 28 25 25 25 21 21 21
++20 20 20 29 29 29 33 33 33 27 27 27 20 20 20 19 19 19 19 19 19 16 16 16
++20 20 20 11 11 11 23 23 23 17 17 17 10 10 10 16 16 16 13 13 13 17 17 17
++39 39 39 28 28 28 14 14 14 17 17 17 17 17 17 11 11 11 14 14 14 14 14 14
++19 19 19 8 8 8 8 8 8 13 13 13 10 10 10 14 14 14 25 25 25 32 32 32
++23 23 23 17 17 17 6 6 6 13 13 13 8 8 8 14 14 14 11 11 11 11 11 11
++16 16 16 3 3 3 10 10 10 20 20 20 13 13 13 19 19 19 34 34 34 28 28 28
++16 16 16 8 8 8 13 13 13 21 21 21 17 17 17 8 8 8 11 11 11 17 17 17
++14 14 14 11 11 11 11 11 11 10 10 10 13 13 13 28 28 28 36 36 36 28 28 28
++13 13 13 10 10 10 17 17 17 13 13 13 11 11 11 16 16 16 10 10 10 17 17 17
++8 8 8 14 14 14 14 14 14 11 11 11 13 13 13 23 23 23 32 32 32 37 37 37
++21 21 21 17 17 17 14 14 14 14 14 14 11 11 11 8 8 8 13 13 13 20 20 20
++39 39 39 29 29 29 17 17 17 11 11 11 10 10 10 10 10 10 10 10 10 10 10 10
++13 13 13 24 24 24 32 32 32 29 29 29 19 19 19 16 16 16 14 14 14 8 8 8
++14 14 14 10 10 10 3 3 3 14 14 14 27 27 27 33 33 33 28 28 28 14 14 14
++14 14 14 19 19 19 17 17 17 13 13 13 6 6 6 21 21 21 16 16 16 31 31 31
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 3 3 3 16 16 16 19 19 19 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++19 19 19 14 14 14 14 14 14 19 19 19 17 17 17 10 10 10 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++19 19 19 8 8 8 0 0 0 4 4 4 0 0 0 3 3 3 19 19 19 8 8 8
++8 8 8 3 3 3 0 0 0 3 3 3 11 11 11 13 13 13 6 6 6 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++11 11 11 14 14 14 14 14 14 8 8 8 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 13 13 13 20 20 20 10 10 10 0 0 0 0 0 0 14 14 14 21 21 21
++13 13 13 6 6 6 0 0 0 3 3 3 11 11 11 19 19 19 21 21 21 21 21 21
++21 21 21 10 10 10 0 0 0 4 4 4 6 6 6 0 0 0 0 0 0 6 6 6
++11 11 11 25 25 25 51 51 51 19 19 19 0 0 0 17 17 17 0 0 0 3 3 3
++16 16 16 17 17 17 57 57 57 16 16 16 14 14 14 11 11 11 10 10 10 8 8 8
++10 10 10 28 28 28 59 59 59 36 36 36 17 17 17 27 27 27 10 10 10 21 21 21
++14 14 14 44 44 44 67 67 67 56 56 56 28 28 28 25 25 25 31 31 31 21 21 21
++31 31 31 65 65 65 71 71 71 67 67 67 40 40 40 32 32 32 33 33 33 40 40 40
++34 34 34 65 65 65 91 91 91 89 89 89 54 54 54 39 39 39 57 57 57 56 56 56
++50 50 50 72 72 72 92 92 92 95 95 94 80 80 80 60 60 60 60 60 60 75 75 75
++68 68 68 78 78 78 99 99 99 112 112 113 103 103 102 82 82 82 76 76 76 87 87 87
++80 80 80 92 92 92 109 110 110 117 117 117 115 116 115 109 110 110 101 101 101 99 99 99
++99 99 99 103 103 102 121 121 119 127 127 127 121 121 119 121 121 119 125 125 127 112 112 113
++109 110 110 121 121 119 121 121 119 137 137 137 133 133 133 121 121 119 139 139 139 131 131 131
++125 125 127 125 125 127 134 134 134 149 149 149 145 146 147 133 133 133 129 129 130 139 139 139
++147 147 148 144 145 144 144 145 144 145 146 147 149 151 153 157 157 157 155 156 156 144 145 144
++142 143 144 144 145 144 157 157 157 147 147 148 134 134 134 169 175 167 255 255 255 252 251 251
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++254 249 251 255 255 255 231 224 220 146 184 30 146 184 30 146 184 30 83 172 72 112 122 122
++116 129 109 116 129 109 118 122 119 118 122 119 113 122 108 107 112 107 238 240 244 252 251 251
++255 255 255 246 251 251 255 255 255 255 255 255 246 251 251 157 157 157 10 10 10 13 13 13
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++11 13 16 1 3 7 14 16 19 11 13 16 6 8 11 37 39 42 66 69 71 76 76 76
++83 83 83 94 94 94 103 103 102 109 110 110 121 121 119 127 127 127 129 129 130 134 134 134
++140 140 140 140 140 140 142 143 144 142 143 144 142 143 144 142 143 144 142 143 144 140 140 140
++140 140 140 137 137 137 134 134 134 134 134 134 133 133 133 133 133 133 129 129 130 127 127 127
++131 131 131 128 128 128 125 122 126 122 121 126 125 122 126 125 122 126 121 121 119 121 121 119
++121 121 119 112 112 113 109 110 110 115 116 115 115 116 115 105 105 105 105 104 105 105 105 105
++103 103 102 103 103 102 99 99 99 93 93 93 93 93 93 95 95 94 94 94 94 89 89 89
++92 92 92 84 84 84 82 82 82 85 85 85 82 82 82 73 73 73 72 72 72 77 77 77
++74 74 74 72 72 72 72 72 72 69 69 69 63 63 63 63 63 63 67 67 67 65 65 65
++62 62 62 56 56 56 52 52 52 62 62 62 52 52 52 50 50 50 52 52 52 46 46 46
++45 45 45 46 46 46 36 36 36 43 43 43 44 44 44 37 37 37 43 43 43 36 36 36
++39 39 39 32 32 32 33 33 33 40 40 40 40 40 40 36 36 36 29 29 29 24 24 24
++24 24 24 32 32 32 25 25 25 17 17 17 23 23 23 24 24 24 21 21 21 24 24 24
++20 20 20 36 36 36 37 37 37 21 21 21 14 14 14 24 24 24 27 27 27 17 17 17
++27 27 27 11 11 11 17 17 17 20 20 20 13 13 13 13 13 13 21 21 21 32 32 32
++31 31 31 20 20 20 10 10 10 0 0 0 10 10 10 19 19 19 14 14 14 13 13 13
++19 19 19 14 14 14 13 13 13 16 16 16 17 17 17 23 23 23 29 29 29 31 31 31
++17 17 17 6 6 6 14 14 14 16 16 16 16 16 16 6 6 6 11 11 11 13 13 13
++13 13 13 17 17 17 3 3 3 14 14 14 20 20 20 25 25 25 38 38 38 16 16 16
++8 8 8 13 13 13 11 11 11 10 10 10 13 13 13 14 14 14 13 13 13 14 14 14
++14 14 14 10 10 10 10 10 10 14 14 14 25 25 25 37 37 37 32 32 32 14 14 14
++10 10 10 11 11 11 19 19 19 16 16 16 11 11 11 11 11 11 8 8 8 14 14 14
++10 10 10 14 14 14 11 11 11 8 8 8 20 20 20 37 37 37 37 37 37 25 25 25
++6 6 6 17 17 17 20 20 20 13 13 13 3 3 3 8 8 8 21 21 21 31 31 31
++38 38 38 23 23 23 11 11 11 16 16 16 21 21 21 17 17 17 13 13 13 14 14 14
++19 19 19 31 31 31 36 36 36 19 19 19 10 10 10 14 14 14 11 11 11 14 14 14
++17 17 17 14 14 14 14 14 14 27 27 27 32 32 32 31 31 31 11 11 11 8 8 8
++10 10 10 8 8 8 14 14 14 13 13 13 3 3 3 24 24 24 29 29 29 32 32 32
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 3 3 3 17 17 17 20 20 20 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++17 17 17 14 14 14 16 16 16 19 19 19 16 16 16 8 8 8 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++17 17 17 10 10 10 0 0 0 3 3 3 0 0 0 3 3 3 19 19 19 11 11 11
++3 3 3 3 3 3 3 3 3 4 4 4 10 10 10 10 10 10 8 8 8 4 4 4
++6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++14 14 14 13 13 13 10 10 10 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 16 16 16 16 16 16 0 0 0 0 0 0 8 8 8 19 19 19 20 20 20
++8 8 8 3 3 3 0 0 0 4 4 4 14 14 14 20 20 20 21 21 21 20 20 20
++17 17 17 6 6 6 0 0 0 4 4 4 6 6 6 3 3 3 0 0 0 0 0 0
++0 0 0 8 8 8 31 31 31 46 46 46 20 20 20 0 0 0 13 13 13 8 8 8
++6 6 6 11 11 11 16 16 16 57 57 57 21 21 21 17 17 17 11 11 11 11 11 11
++8 8 8 10 10 10 31 31 31 57 57 57 40 40 40 19 19 19 25 25 25 19 19 19
++23 23 23 21 21 21 40 40 40 63 63 63 58 58 58 31 31 31 23 23 23 37 37 37
++51 51 51 39 39 39 40 40 40 75 75 75 73 73 73 51 51 51 31 31 31 40 40 40
++51 51 51 65 65 65 70 70 70 82 82 82 82 82 82 62 62 62 53 53 53 53 53 53
++51 51 51 73 73 73 81 81 81 87 87 87 96 97 98 84 84 84 63 63 63 67 67 67
++74 74 74 74 74 74 89 89 89 109 110 110 109 110 110 92 92 92 84 84 84 88 88 88
++89 89 89 85 85 85 96 97 98 121 121 119 125 125 127 109 110 110 96 97 98 99 99 99
++105 104 105 101 101 101 105 105 105 121 121 119 133 133 133 129 129 130 117 117 117 109 110 110
++117 117 117 115 116 115 121 121 119 128 128 128 144 145 144 144 145 144 127 127 127 128 128 128
++127 127 127 137 137 137 144 145 144 144 145 144 142 143 144 142 143 144 142 143 144 140 140 140
++149 149 149 142 143 144 139 139 139 144 145 144 157 157 157 161 161 162 152 153 154 137 138 139
++145 146 147 161 161 162 155 156 156 145 146 147 128 128 128 238 240 244 255 255 255 252 251 251
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++252 251 251 252 251 251 248 249 239 231 224 220 141 180 99 146 184 30 83 172 72 83 172 72
++113 122 108 118 122 119 125 125 127 122 121 126 118 122 119 107 112 107 200 220 210 252 251 251
++252 251 251 255 255 255 246 251 251 255 255 255 255 255 255 200 220 210 48 48 48 4 4 4
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++11 13 16 6 8 11 14 16 19 6 8 11 14 16 19 53 54 57 72 73 75 78 79 82
++88 88 88 99 99 99 105 104 105 109 110 110 122 121 126 131 131 131 134 134 134 139 139 139
++140 140 140 142 143 144 144 145 144 144 145 144 142 143 144 140 140 140 139 139 139 139 139 139
++142 143 144 139 139 139 137 138 139 137 137 137 134 134 134 134 134 134 133 133 133 129 129 130
++129 129 130 129 129 130 129 129 130 127 127 127 125 122 126 121 121 119 117 117 117 117 117 117
++117 117 117 115 116 115 115 116 115 112 112 113 109 110 110 109 110 110 105 105 105 105 105 105
++105 105 105 103 103 102 99 99 99 99 99 99 99 99 99 95 95 94 90 90 90 87 87 87
++89 89 89 87 87 87 84 84 84 83 83 83 82 82 82 78 78 78 76 76 76 76 76 76
++75 75 75 71 71 71 69 69 69 68 68 68 67 67 67 65 65 65 63 63 63 62 62 62
++59 59 59 57 57 57 54 54 54 57 57 57 52 52 52 50 50 50 52 52 52 53 53 53
++50 50 50 50 50 50 42 42 42 44 44 44 44 44 44 38 38 38 40 40 40 34 34 34
++43 43 43 32 32 32 36 36 36 44 44 44 39 39 39 36 36 36 36 36 36 32 32 32
++28 28 28 31 31 31 24 24 24 23 23 23 28 28 28 23 23 23 19 19 19 29 29 29
++36 36 36 31 31 31 23 23 23 16 16 16 16 16 16 20 20 20 20 20 20 17 17 17
++14 14 14 16 16 16 21 21 21 19 19 19 8 8 8 17 17 17 36 36 36 32 32 32
++16 16 16 13 13 13 23 23 23 19 19 19 23 23 23 24 24 24 8 8 8 16 16 16
++8 8 8 23 23 23 17 17 17 8 8 8 25 25 25 38 38 38 25 25 25 8 8 8
++19 19 19 4 4 4 21 21 21 8 8 8 16 16 16 8 8 8 19 19 19 14 14 14
++11 11 11 19 19 19 4 4 4 17 17 17 34 34 34 27 27 27 17 17 17 11 11 11
++8 8 8 25 25 25 23 23 23 10 10 10 13 13 13 17 17 17 13 13 13 13 13 13
++17 17 17 8 8 8 13 13 13 28 28 28 34 34 34 29 29 29 19 19 19 13 13 13
++19 19 19 13 13 13 11 11 11 11 11 11 17 17 17 19 19 19 14 14 14 10 10 10
++20 20 20 10 10 10 8 8 8 21 21 21 34 34 34 34 34 34 24 24 24 14 14 14
++11 11 11 19 19 19 19 19 19 10 10 10 10 10 10 23 23 23 32 32 32 33 33 33
++8 8 8 14 14 14 14 14 14 10 10 10 8 8 8 13 13 13 14 14 14 11 11 11
++31 31 31 33 33 33 19 19 19 11 11 11 13 13 13 6 6 6 8 8 8 19 19 19
++4 4 4 19 19 19 31 31 31 34 34 34 29 29 29 27 27 27 3 3 3 20 20 20
++14 14 14 13 13 13 16 16 16 14 14 14 14 14 14 28 28 28 28 28 28 20 20 20
++
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 3 3 3 0 0 0 4 4 4 17 17 17 20 20 20 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++17 17 17 14 14 14 16 16 16 19 19 19 16 16 16 6 6 6 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++17 17 17 13 13 13 0 0 0 0 0 0 0 0 0 3 3 3 19 19 19 14 14 14
++0 0 0 0 0 0 6 6 6 8 8 8 6 6 6 6 6 6 10 10 10 13 13 13
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6 10 10 10 13 13 13
++13 13 13 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++13 13 13 16 16 16 8 8 8 0 0 0 0 0 0 16 16 16 21 21 21 16 16 16
++3 3 3 0 0 0 3 3 3 8 8 8 16 16 16 20 20 20 21 21 21 20 20 20
++11 11 11 3 3 3 0 0 0 3 3 3 6 6 6 6 6 6 3 3 3 0 0 0
++0 0 0 11 11 11 4 4 4 31 31 31 44 44 44 16 16 16 0 0 0 16 16 16
++8 8 8 10 10 10 16 16 16 21 21 21 58 58 58 17 17 17 13 13 13 6 6 6
++14 14 14 19 19 19 8 8 8 34 34 34 57 57 57 38 38 38 20 20 20 17 17 17
++17 17 17 27 27 27 16 16 16 36 36 36 70 70 70 54 54 54 29 29 29 51 51 51
++44 44 44 31 31 31 28 28 28 57 57 57 69 69 69 74 74 74 56 56 56 46 46 46
++69 69 69 60 60 60 40 40 40 59 59 59 90 90 90 87 87 87 65 65 65 50 50 50
++72 72 72 78 78 78 70 70 70 71 71 71 95 95 94 103 103 102 84 84 84 69 69 69
++74 74 74 89 89 89 93 93 93 88 88 88 96 97 98 112 112 113 103 103 102 78 78 78
++84 84 84 96 96 96 105 105 105 109 110 110 115 116 115 121 121 119 112 112 113 96 96 96
++101 101 101 105 104 105 109 110 110 121 121 119 133 133 133 131 131 131 121 121 119 112 112 113
++121 121 119 115 116 115 121 121 119 128 128 128 144 145 144 147 147 148 129 129 130 129 129 130
++134 134 134 144 145 144 144 145 144 134 134 134 137 137 137 149 151 153 155 156 156 144 145 144
++137 138 139 137 138 139 140 140 140 149 149 149 158 159 161 160 161 160 155 156 156 149 149 149
++157 157 157 160 161 160 142 143 144 137 137 137 180 183 185 255 255 255 252 251 251 255 255 255
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++246 251 251 246 251 251 255 255 255 254 249 251 238 240 244 136 172 147 83 172 72 83 172 72
++113 122 108 118 122 119 122 121 126 122 121 126 122 121 126 126 132 129 157 157 157 255 255 255
++255 255 255 246 251 251 255 255 255 252 251 251 252 251 251 200 220 210 42 42 42 14 14 14
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++10 11 14 11 13 16 14 16 19 6 8 11 33 34 37 66 69 71 73 74 76 83 84 85
++91 91 91 103 103 102 109 110 110 117 117 117 129 129 130 137 137 137 140 140 140 142 143 144
++147 147 148 147 147 148 147 147 148 147 147 148 145 146 147 144 145 144 144 145 144 144 145 144
++134 134 134 137 138 139 140 140 140 137 138 139 137 137 137 134 134 134 134 134 134 137 138 139
++133 133 133 129 129 130 128 128 128 128 128 128 129 129 130 128 128 128 122 121 126 121 121 119
++121 121 119 117 117 117 115 116 115 117 117 117 115 116 115 112 112 113 109 110 110 112 112 113
++103 103 102 101 101 101 101 101 101 103 103 102 99 99 99 90 90 90 93 93 93 103 103 102
++93 93 93 88 88 88 84 84 84 83 83 83 83 83 83 82 82 82 82 82 82 84 84 84
++87 87 87 81 81 81 71 71 71 67 67 67 67 67 67 63 63 63 59 59 59 58 58 58
++59 59 59 69 69 69 66 66 66 56 56 56 59 59 59 52 52 52 44 44 44 51 51 51
++45 45 45 45 45 45 37 37 37 38 38 38 40 40 40 44 44 44 53 53 53 53 53 53
++54 54 54 50 50 50 57 57 57 59 59 59 46 46 46 36 36 36 32 32 32 25 25 25
++27 27 27 38 38 38 42 42 42 42 42 42 44 44 44 38 38 38 28 28 28 28 28 28
++31 31 31 20 20 20 13 13 13 14 14 14 16 16 16 13 13 13 11 11 11 13 13 13
++10 10 10 19 19 19 21 21 21 27 27 27 20 20 20 28 28 28 46 46 46 31 31 31
++33 33 33 33 33 33 46 46 46 46 46 46 42 42 42 25 25 25 13 13 13 37 37 37
++43 43 43 44 44 44 39 39 39 29 29 29 33 33 33 48 48 48 43 43 43 20 20 20
++43 43 43 44 44 44 39 39 39 6 6 6 37 37 37 39 39 39 38 38 38 46 46 46
++16 16 16 0 0 0 16 16 16 39 39 39 40 40 40 20 20 20 0 0 0 3 3 3
++3 3 3 28 28 28 31 31 31 16 16 16 13 13 13 14 14 14 11 11 11 13 13 13
++14 14 14 19 19 19 25 25 25 33 33 33 31 31 31 17 17 17 10 10 10 13 13 13
++14 14 14 10 10 10 4 4 4 14 14 14 25 25 25 28 28 28 21 21 21 11 11 11
++17 17 17 14 14 14 23 23 23 36 36 36 36 36 36 23 23 23 11 11 11 13 13 13
++17 17 17 14 14 14 11 11 11 11 11 11 24 24 24 36 36 36 32 32 32 20 20 20
++4 4 4 14 14 14 19 19 19 13 13 13 8 8 8 16 16 16 23 23 23 27 27 27
++44 44 44 43 43 43 6 6 6 3 3 3 11 11 11 0 0 0 8 8 8 0 0 0
++3 3 3 24 24 24 33 33 33 25 25 25 19 19 19 31 31 31 10 10 10 39 39 39
++48 48 48 54 54 54 52 52 52 46 46 46 49 49 49 46 46 46 45 45 45 43 43 43
++
++13 13 13 10 10 10 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 4 4 4 0 0 0 6 6 6 19 19 19 21 21 21 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++16 16 16 16 16 16 17 17 17 20 20 20 16 16 16 6 6 6 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++17 17 17 16 16 16 0 0 0 0 0 0 0 0 0 0 0 0 16 16 16 16 16 16
++0 0 0 0 0 0 6 6 6 6 6 6 3 3 3 3 3 3 8 8 8 14 14 14
++8 8 8 8 8 8 8 8 8 10 10 10 13 13 13 14 14 14 16 16 16 17 17 17
++8 8 8 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6
++16 16 16 11 11 11 0 0 0 0 0 0 8 8 8 20 20 20 20 20 20 10 10 10
++0 0 0 0 0 0 4 4 4 11 11 11 17 17 17 20 20 20 20 20 20 17 17 17
++6 6 6 0 0 0 0 0 0 3 3 3 6 6 6 6 6 6 6 6 6 4 4 4
++11 11 11 0 0 0 13 13 13 4 4 4 27 27 27 45 45 45 13 13 13 4 4 4
++4 4 4 6 6 6 11 11 11 16 16 16 19 19 19 58 58 58 19 19 19 16 16 16
++21 21 21 4 4 4 19 19 19 8 8 8 33 33 33 62 62 62 36 36 36 21 21 21
++14 14 14 27 27 27 25 25 25 20 20 20 40 40 40 69 69 69 68 68 68 45 45 45
++25 25 25 31 31 31 33 33 33 37 37 37 42 42 42 72 72 72 73 73 73 70 70 70
++52 52 52 46 46 46 40 40 40 51 51 51 63 63 63 80 80 80 88 88 88 72 72 72
++80 80 80 66 66 66 60 60 60 59 59 59 68 68 68 92 92 92 103 103 102 88 88 88
++83 83 83 90 90 90 85 85 85 74 74 74 87 87 87 109 110 110 112 112 113 101 101 101
++92 92 92 105 105 105 109 110 110 99 99 99 101 101 101 117 117 117 125 122 126 115 116 115
++103 103 102 112 112 113 127 127 127 121 121 119 112 112 113 125 122 126 137 137 137 129 129 130
++117 117 117 125 122 126 125 122 126 140 140 140 133 133 133 128 128 128 147 147 148 137 137 137
++142 143 144 140 140 140 134 134 134 133 133 133 139 139 139 149 149 149 155 156 156 152 153 154
++139 139 139 144 145 144 152 153 154 157 157 157 157 157 157 152 153 154 155 156 156 163 163 163
++163 163 163 145 146 147 144 145 144 137 138 139 248 249 239 252 251 251 255 255 255 255 255 255
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++246 251 251 255 255 255 254 249 251 255 255 255 255 255 255 231 246 232 83 172 115 83 172 72
++86 124 83 113 122 108 122 121 126 125 122 126 113 122 108 116 129 109 116 129 109 255 255 255
++255 255 255 255 255 255 252 251 251 252 251 251 231 224 220 231 224 220 128 128 128 11 11 11
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++10 11 14 14 16 19 11 13 16 16 20 21 53 54 57 73 74 76 75 78 80 87 88 90
++101 101 101 112 112 113 117 117 117 121 121 119 129 129 130 139 139 139 144 145 144 152 153 154
++147 147 148 147 147 148 149 149 149 149 151 153 152 153 154 149 149 149 144 145 144 140 140 140
++144 145 144 152 153 154 155 156 156 152 153 154 149 149 149 147 147 148 147 147 148 152 153 154
++144 145 144 133 133 133 122 121 126 122 121 126 131 131 131 137 138 139 137 137 137 131 131 131
++122 121 126 112 112 113 112 112 113 125 122 126 128 128 128 121 121 119 115 116 115 122 121 126
++112 112 113 103 103 102 99 99 99 99 99 99 95 95 94 91 91 91 95 95 94 105 104 105
++105 104 105 88 88 88 78 78 78 83 83 83 83 83 83 76 76 76 80 80 80 90 90 90
++103 103 102 99 99 99 85 85 85 72 72 72 68 68 68 63 63 63 60 60 60 60 60 60
++59 59 59 75 75 75 76 76 76 62 62 62 71 71 71 58 58 58 38 38 38 45 45 45
++39 39 39 43 43 43 46 46 46 50 50 50 58 58 58 66 66 66 72 72 72 72 72 72
++63 63 63 63 63 63 62 62 62 56 56 56 40 40 40 29 29 29 24 24 24 19 19 19
++21 21 21 46 46 46 63 63 63 62 62 62 59 59 59 57 57 57 48 48 48 31 31 31
++8 8 8 13 13 13 16 16 16 13 13 13 11 11 11 10 10 10 10 10 10 8 8 8
++16 16 16 13 13 13 14 14 14 44 44 44 44 44 44 43 43 43 63 63 63 49 49 49
++53 53 53 61 61 61 54 54 54 38 38 38 45 45 45 52 52 52 44 44 44 43 43 43
++19 19 19 6 6 6 31 31 31 46 46 46 37 37 37 44 44 44 52 52 52 36 36 36
++23 23 23 54 54 54 49 49 49 11 11 11 37 37 37 38 38 38 23 23 23 53 53 53
++40 40 40 6 6 6 28 28 28 33 33 33 23 23 23 39 39 39 28 28 28 0 0 0
++0 0 0 17 17 17 24 24 24 17 17 17 11 11 11 10 10 10 11 11 11 13 13 13
++13 13 13 31 31 31 36 36 36 27 27 27 17 17 17 13 13 13 10 10 10 11 11 11
++10 10 10 16 16 16 16 16 16 24 24 24 27 27 27 21 21 21 19 19 19 8 8 8
++4 4 4 24 24 24 39 39 39 37 37 37 23 23 23 13 13 13 13 13 13 16 16 16
++14 14 14 8 8 8 10 10 10 23 23 23 34 34 34 34 34 34 23 23 23 11 11 11
++16 16 16 8 8 8 16 16 16 36 36 36 42 42 42 33 33 33 36 36 36 49 49 49
++51 51 51 51 51 51 19 19 19 0 0 0 0 0 0 0 0 0 6 6 6 0 0 0
++27 27 27 31 31 31 24 24 24 4 4 4 8 8 8 37 37 37 6 6 6 42 42 42
++29 29 29 44 44 44 46 46 46 38 38 38 34 34 34 23 23 23 36 36 36 48 48 48
++
++21 21 21 17 17 17 10 10 10 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 4 4 4 0 0 0 6 6 6 19 19 19 21 21 21 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++16 16 16 16 16 16 17 17 17 20 20 20 16 16 16 4 4 4 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++19 19 19 19 19 19 3 3 3 0 0 0 0 0 0 0 0 0 14 14 14 16 16 16
++3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 6 6 6 6 6 6
++16 16 16 16 16 16 16 16 16 16 16 16 14 14 14 13 13 13 11 11 11 10 10 10
++4 4 4 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 6 6 6 13 13 13
++11 11 11 6 6 6 0 0 0 6 6 6 14 14 14 20 20 20 14 14 14 6 6 6
++0 0 0 0 0 0 6 6 6 14 14 14 19 19 19 20 20 20 19 19 19 16 16 16
++4 4 4 3 3 3 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 6 6 6
++6 6 6 10 10 10 0 0 0 11 11 11 6 6 6 19 19 19 46 46 46 8 8 8
++3 3 3 6 6 6 6 6 6 10 10 10 16 16 16 20 20 20 60 60 60 25 25 25
++16 16 16 16 16 16 6 6 6 20 20 20 13 13 13 32 32 32 68 68 68 36 36 36
++28 28 28 20 20 20 29 29 29 29 29 29 25 25 25 58 58 58 74 74 74 51 51 51
++36 36 36 31 31 31 33 33 33 36 36 36 34 34 34 62 62 62 72 72 72 82 82 82
++48 48 48 44 44 44 50 50 50 52 52 52 42 42 42 62 62 62 95 95 94 92 92 92
++72 72 72 54 54 54 58 58 58 67 67 67 63 63 63 75 75 75 96 96 96 99 99 99
++101 101 101 84 84 84 73 73 73 75 75 75 83 83 83 90 90 90 105 105 105 121 121 119
++112 112 113 105 105 105 99 99 99 96 96 96 96 96 96 101 101 101 115 116 115 129 129 130
++117 117 117 121 121 119 125 125 127 115 116 115 105 105 105 115 116 115 133 133 133 139 139 139
++131 131 131 121 121 119 144 145 144 134 134 134 121 121 119 134 134 134 140 140 140 149 149 149
++147 147 148 137 137 137 133 133 133 140 140 140 144 145 144 144 145 144 145 146 147 149 151 153
++152 153 154 155 156 156 155 156 156 157 157 157 157 157 157 149 151 153 152 153 154 166 167 167
++166 167 167 152 153 154 152 153 154 149 149 149 231 246 232 255 255 255 252 251 251 255 255 255
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++255 255 255 254 249 251 254 249 251 255 255 255 252 251 251 255 255 255 246 251 251 136 172 147
++83 172 115 116 129 109 113 122 108 113 122 108 116 129 109 86 124 83 116 129 109 231 246 232
++252 251 251 255 255 255 255 255 255 252 251 251 246 251 251 200 220 210 200 220 210 42 42 42
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++11 13 16 11 13 16 11 13 16 35 36 38 69 70 72 81 81 81 87 87 87 90 91 93
++109 110 110 121 121 119 127 127 127 127 127 127 131 131 131 139 139 139 149 149 149 160 161 160
++149 151 153 147 147 148 147 147 148 149 151 153 155 156 156 152 153 154 145 146 147 140 140 140
++140 140 140 149 149 149 149 151 153 147 147 148 144 145 144 139 139 139 137 137 137 142 143 144
++145 146 147 145 146 147 144 145 144 134 134 134 128 128 128 128 128 128 134 134 134 142 143 144
++129 129 130 121 121 119 115 116 115 117 117 117 121 121 119 121 121 119 115 116 115 112 112 113
++121 121 119 112 112 113 101 101 101 93 93 93 93 93 93 95 95 94 94 94 94 91 91 91
++109 110 110 93 93 93 82 82 82 81 81 81 80 80 80 73 73 73 75 75 75 84 84 84
++95 95 94 101 101 101 93 93 93 75 75 75 65 65 65 59 59 59 56 56 56 59 59 59
++54 54 54 62 62 62 74 74 74 68 68 68 77 77 77 62 62 62 46 46 46 53 53 53
++58 58 58 63 63 63 70 70 70 72 72 72 73 73 73 75 75 75 71 71 71 67 67 67
++68 68 68 67 67 67 52 52 52 33 33 33 24 24 24 23 23 23 23 23 23 21 21 21
++11 11 11 25 25 25 51 51 51 61 61 61 51 51 51 45 45 45 43 43 43 33 33 33
++6 6 6 11 11 11 13 13 13 10 10 10 8 8 8 10 10 10 11 11 11 8 8 8
++4 4 4 3 3 3 10 10 10 48 48 48 42 42 42 32 32 32 62 62 62 57 57 57
++54 54 54 62 62 62 38 38 38 19 19 19 37 37 37 52 52 52 48 48 48 33 33 33
++8 8 8 6 6 6 27 27 27 43 43 43 42 42 42 39 39 39 40 40 40 36 36 36
++8 8 8 32 32 32 50 50 50 38 38 38 27 27 27 34 34 34 19 19 19 33 33 33
++54 54 54 37 37 37 27 27 27 6 6 6 0 0 0 39 39 39 49 49 49 20 20 20
++4 4 4 6 6 6 14 14 14 17 17 17 11 11 11 10 10 10 13 13 13 13 13 13
++24 24 24 34 34 34 29 29 29 16 16 16 11 11 11 11 11 11 10 10 10 13 13 13
++16 16 16 24 24 24 21 21 21 25 25 25 20 20 20 8 8 8 13 13 13 8 8 8
++17 17 17 33 33 33 38 38 38 25 25 25 11 11 11 11 11 11 16 16 16 14 14 14
++11 11 11 10 10 10 20 20 20 33 33 33 31 31 31 19 19 19 19 19 19 29 29 29
++23 23 23 0 0 0 13 13 13 48 48 48 56 56 56 36 36 36 32 32 32 50 50 50
++44 44 44 37 37 37 36 36 36 11 11 11 0 0 0 0 0 0 4 4 4 14 14 14
++34 34 34 24 24 24 10 10 10 0 0 0 13 13 13 43 43 43 0 0 0 38 38 38
++10 10 10 23 23 23 38 38 38 37 37 37 25 25 25 3 3 3 33 33 33 45 45 45
++
++27 27 27 21 21 21 13 13 13 4 4 4 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 4 4 4 3 3 3 6 6 6 20 20 20 21 21 21 17 17 17 20 20 20
++17 17 17 21 21 21 14 14 14 8 8 8 16 16 16 19 19 19 17 17 17 19 19 19
++16 16 16 16 16 16 19 19 19 20 20 20 14 14 14 4 4 4 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 19 19 19
++20 20 20 20 20 20 4 4 4 0 0 0 0 0 0 0 0 0 13 13 13 16 16 16
++11 11 11 4 4 4 0 0 0 0 0 0 4 4 4 8 8 8 3 3 3 0 0 0
++0 0 0 3 3 3 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 10 10 10 19 19 19
++3 3 3 3 3 3 6 6 6 14 14 14 20 20 20 17 17 17 10 10 10 3 3 3
++0 0 0 0 0 0 8 8 8 16 16 16 20 20 20 20 20 20 17 17 17 14 14 14
++4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6
++0 0 0 3 3 3 10 10 10 0 0 0 4 4 4 10 10 10 17 17 17 51 51 51
++14 14 14 11 11 11 11 11 11 10 10 10 10 10 10 14 14 14 20 20 20 60 60 60
++24 24 24 16 16 16 23 23 23 17 17 17 11 11 11 14 14 14 32 32 32 68 68 68
++38 38 38 29 29 29 11 11 11 31 31 31 57 57 57 39 39 39 36 36 36 77 77 77
++56 56 56 37 37 37 31 31 31 38 38 38 42 42 42 68 68 68 68 68 68 72 72 72
++75 75 75 56 56 56 44 44 44 50 50 50 48 48 48 59 59 59 83 83 83 85 85 85
++92 92 92 70 70 70 60 60 60 69 69 69 70 70 70 65 65 65 82 82 82 112 112 113
++109 110 110 90 90 90 78 78 78 82 82 82 83 83 83 82 82 82 93 93 93 112 112 113
++121 121 119 103 103 102 93 93 93 99 99 99 99 99 99 96 96 96 105 104 105 121 121 119
++131 131 131 127 127 127 109 110 110 109 110 110 121 121 119 115 116 115 112 112 113 133 133 133
++140 140 140 144 145 144 133 133 133 128 128 128 128 128 128 129 129 130 144 145 144 144 145 144
++152 153 154 140 140 140 139 139 139 147 147 148 149 151 153 142 143 144 140 140 140 144 145 144
++161 161 162 155 156 156 147 147 148 149 151 153 157 157 157 157 157 157 155 156 156 166 165 167
++157 157 157 161 161 162 142 143 144 140 140 140 147 147 148 255 255 255 231 246 232 252 251 251
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
++252 251 251 252 251 251 254 249 251 255 255 255 252 251 251 248 249 239 252 251 251 255 255 255
++141 180 99 83 172 115 86 124 83 86 124 83 83 172 115 83 172 115 141 180 99 187 210 182
++255 255 255 255 255 255 252 251 251 255 255 255 200 220 210 200 220 210 238 240 244 169 175 167
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++14 16 19 8 10 13 11 13 16 50 51 53 76 76 76 83 84 85 94 94 95 91 92 94
++105 105 105 125 122 126 134 134 134 137 137 137 139 139 139 142 143 144 147 147 148 157 157 157
++166 165 167 155 156 156 147 147 148 145 146 147 152 153 154 157 157 157 155 156 156 149 151 153
++147 147 148 152 153 154 152 153 154 149 149 149 147 147 148 140 140 140 134 134 134 137 137 137
++139 139 139 144 145 144 147 147 148 147 147 148 144 145 144 137 138 139 137 137 137 137 137 137
++139 139 139 137 138 139 127 127 127 112 112 113 117 117 117 131 131 131 128 128 128 112 112 113
++115 116 115 121 121 119 112 112 113 99 99 99 91 91 91 94 94 94 94 94 94 88 88 88
++105 105 105 101 101 101 91 91 91 81 81 81 77 77 77 77 77 77 75 75 75 71 71 71
++82 82 82 99 99 99 101 101 101 83 83 83 69 69 69 60 60 60 57 57 57 60 60 60
++58 58 58 54 54 54 75 75 75 78 78 78 89 89 89 77 77 77 71 71 71 81 81 81
++70 70 70 73 73 73 77 77 77 73 73 73 72 72 72 74 74 74 70 70 70 67 67 67
++71 71 71 70 70 70 49 49 49 24 24 24 23 23 23 28 28 28 24 24 24 23 23 23
++27 27 27 14 14 14 40 40 40 66 66 66 52 52 52 36 36 36 44 44 44 54 54 54
++27 27 27 13 13 13 0 0 0 6 6 6 11 11 11 10 10 10 8 8 8 11 11 11
++0 0 0 17 17 17 25 25 25 50 50 50 27 27 27 10 10 10 53 53 53 52 52 52
++59 59 59 54 54 54 34 34 34 42 42 42 45 45 45 20 20 20 24 24 24 44 44 44
++21 21 21 37 37 37 16 16 16 3 3 3 34 34 34 40 40 40 34 34 34 51 51 51
++33 33 33 0 0 0 32 32 32 51 51 51 13 13 13 43 43 43 34 34 34 0 0 0
++42 42 42 45 45 45 14 14 14 0 0 0 0 0 0 0 0 0 25 25 25 54 54 54
++19 19 19 4 4 4 8 8 8 17 17 17 14 14 14 11 11 11 14 14 14 11 11 11
++38 38 38 29 29 29 16 16 16 11 11 11 16 16 16 10 10 10 6 6 6 19 19 19
++19 19 19 24 24 24 14 14 14 16 16 16 11 11 11 4 4 4 20 20 20 19 19 19
++39 39 39 36 36 36 25 25 25 14 14 14 10 10 10 13 13 13 13 13 13 10 10 10
++14 14 14 17 17 17 32 32 32 40 40 40 23 23 23 0 0 0 20 20 20 53 53 53
++46 46 46 25 25 25 27 27 27 51 51 51 52 52 52 29 29 29 28 28 28 49 49 49
++33 33 33 10 10 10 42 42 42 24 24 24 0 0 0 4 4 4 4 4 4 49 49 49
++20 20 20 4 4 4 0 0 0 0 0 0 25 25 25 50 50 50 0 0 0 43 43 43
++21 21 21 21 21 21 44 44 44 51 51 51 33 33 33 6 6 6 36 36 36 37 37 37
++
++0 0 0 11 11 11 23 23 23 19 19 19 4 4 4 0 0 0 0 0 0 4 4 4
++4 4 4 0 0 0 4 4 4 19 19 19 17 17 17 19 19 19 20 20 20 16 16 16
++17 17 17 16 16 16 14 14 14 14 14 14 17 17 17 19 19 19 17 17 17 17 17 17
++10 10 10 16 16 16 21 21 21 19 19 19 10 10 10 3 3 3 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6
++19 19 19 16 16 16 11 11 11 4 4 4 0 0 0 0 0 0 6 6 6 10 10 10
++16 16 16 6 6 6 0 0 0 0 0 0 4 4 4 10 10 10 4 4 4 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 3 3 3 3 3 3 6 6 6 10 10 10 11 11 11 8 8 8 4 4 4
++0 0 0 4 4 4 14 14 14 19 19 19 14 14 14 8 8 8 3 3 3 3 3 3
++0 0 0 4 4 4 11 11 11 16 16 16 19 19 19 17 17 17 13 13 13 10 10 10
++4 4 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6
++4 4 4 6 6 6 6 6 6 8 8 8 10 10 10 11 11 11 13 13 13 13 13 13
++49 49 49 16 16 16 10 10 10 6 6 6 13 13 13 13 13 13 11 11 11 23 23 23
++59 59 59 29 29 29 16 16 16 21 21 21 17 17 17 16 16 16 24 24 24 25 25 25
++69 69 69 40 40 40 29 29 29 51 51 51 46 46 46 29 29 29 37 37 37 37 37 37
++69 69 69 68 68 68 39 39 39 43 43 43 67 67 67 53 53 53 39 39 39 50 50 50
++82 82 82 80 80 80 57 57 57 42 42 42 62 62 62 77 77 77 67 67 67 52 52 52
++90 90 90 88 88 88 74 74 74 59 59 59 66 66 66 87 87 87 91 91 91 82 82 82
++105 105 105 103 103 102 95 95 94 84 84 84 77 77 77 82 82 82 96 96 96 109 110 110
++109 110 110 121 121 119 109 110 110 93 93 93 99 99 99 105 104 105 105 105 105 121 121 119
++122 121 126 131 131 131 121 121 119 112 112 113 121 121 119 115 116 115 115 116 115 128 128 128
++140 140 140 144 145 144 137 137 137 127 127 127 133 133 133 144 145 144 142 143 144 133 133 133
++137 138 139 152 153 154 161 161 162 152 153 154 140 140 140 137 137 137 144 145 144 152 153 154
++157 157 157 155 156 156 161 161 162 166 165 167 157 157 157 155 156 156 158 159 161 163 163 163
++145 146 147 160 161 160 163 163 163 134 134 134 142 143 144 157 157 157 109 110 110 252 251 251
++231 224 220 255 255 255 255 255 255 255 255 255 252 251 251 255 255 255 252 251 251 255 255 255
++255 255 255 252 251 251 255 255 255 255 255 255 255 255 255 252 251 251 255 255 255 255 255 255
++252 251 251 169 175 167 83 172 115 83 172 72 83 172 72 83 172 72 83 172 115 136 172 147
++246 251 251 255 255 255 252 251 251 252 251 251 252 251 251 200 220 210 238 240 244 238 240 244
++89 90 92 8 10 13 11 13 16 6 8 11 22 23 26 0 0 4 8 10 13 14 16 19
++16 16 16 0 0 0 29 29 29 71 71 71 84 84 84 89 89 89 101 101 101 105 105 105
++115 116 115 121 121 119 137 137 137 147 147 148 149 149 149 145 146 147 145 146 147 149 151 153
++157 157 157 166 167 167 160 161 160 149 149 149 149 149 149 152 153 154 155 156 156 161 161 162
++160 161 160 152 153 154 142 143 144 140 140 140 147 147 148 152 153 154 144 145 144 133 133 133
++129 129 130 134 134 134 140 140 140 144 145 144 137 138 139 133 133 133 137 137 137 144 145 144
++140 140 140 140 140 140 137 138 139 133 133 133 125 125 127 117 117 117 121 121 119 127 127 127
++112 112 113 109 110 110 125 122 126 115 116 115 94 94 94 93 93 93 93 93 93 90 90 90
++91 91 91 112 112 113 99 99 99 81 81 81 83 83 83 82 82 82 77 77 77 74 74 74
++73 73 73 88 88 88 101 101 101 95 95 94 77 77 77 62 62 62 62 62 62 70 70 70
++80 80 80 78 78 78 80 80 80 84 84 84 90 90 90 88 88 88 71 71 71 52 52 52
++48 48 48 71 71 71 77 77 77 70 70 70 70 70 70 69 69 69 57 57 57 45 45 45
++63 63 63 74 74 74 61 61 61 34 34 34 24 24 24 27 27 27 25 25 25 23 23 23
++20 20 20 6 6 6 28 28 28 52 52 52 58 58 58 37 37 37 17 17 17 37 37 37
++52 52 52 16 16 16 4 4 4 13 13 13 4 4 4 13 13 13 20 20 20 0 0 0
++4 4 4 36 36 36 42 42 42 45 45 45 45 45 45 42 42 42 51 51 51 52 52 52
++19 19 19 46 46 46 59 59 59 42 42 42 14 14 14 0 0 0 8 8 8 19 19 19
++45 45 45 36 36 36 4 4 4 0 0 0 0 0 0 23 23 23 58 58 58 48 48 48
++51 51 51 33 33 33 10 10 10 40 40 40 49 49 49 27 27 27 37 37 37 46 46 46
++31 31 31 53 53 53 59 59 59 21 21 21 0 0 0 0 0 0 11 11 11 20 20 20
++24 24 24 19 19 19 14 14 14 14 14 14 10 10 10 10 10 10 25 25 25 43 43 43
++31 31 31 20 20 20 11 11 11 13 13 13 16 16 16 14 14 14 11 11 11 11 11 11
++31 31 31 36 36 36 21 21 21 6 6 6 10 10 10 13 13 13 19 19 19 33 33 33
++42 42 42 19 19 19 10 10 10 17 17 17 14 14 14 11 11 11 13 13 13 10 10 10
++14 14 14 36 36 36 43 43 43 40 40 40 29 29 29 0 0 0 8 8 8 48 48 48
++25 25 25 49 49 49 54 54 54 51 51 51 39 39 39 34 34 34 52 52 52 57 57 57
++39 39 39 0 0 0 32 32 32 34 34 34 0 0 0 19 19 19 36 36 36 14 14 14
++0 0 0 0 0 0 0 0 0 3 3 3 32 32 32 29 29 29 0 0 0 39 39 39
++38 38 38 32 32 32 38 38 38 52 52 52 52 52 52 37 37 37 37 37 37 52 52 52
++
++0 0 0 0 0 0 13 13 13 25 25 25 24 24 24 8 8 8 0 0 0 0 0 0
++3 3 3 0 0 0 6 6 6 19 19 19 19 19 19 17 17 17 20 20 20 17 17 17
++17 17 17 16 16 16 13 13 13 14 14 14 17 17 17 19 19 19 17 17 17 16 16 16
++11 11 11 16 16 16 20 20 20 17 17 17 8 8 8 0 0 0 0 0 0 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 8 8 8 10 10 10
++17 17 17 16 16 16 10 10 10 3 3 3 0 0 0 0 0 0 0 0 0 6 6 6
++17 17 17 13 13 13 8 8 8 4 4 4 4 4 4 8 8 8 11 11 11 13 13 13
++10 10 10 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 4 4 4 8 8 8 11 11 11 13 13 13 10 10 10 4 4 4 0 0 0
++0 0 0 10 10 10 17 17 17 20 20 20 16 16 16 10 10 10 6 6 6 4 4 4
++6 6 6 13 13 13 19 19 19 23 23 23 21 21 21 17 17 17 11 11 11 6 6 6
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 4 4 4 6 6 6 8 8 8 8 8 8 10 10 10
++20 20 20 59 59 59 17 17 17 10 10 10 8 8 8 6 6 6 6 6 6 13 13 13
++27 27 27 48 48 48 36 36 36 11 11 11 19 19 19 20 20 20 16 16 16 28 28 28
++29 29 29 65 65 65 58 58 58 42 42 42 36 36 36 23 23 23 23 23 23 33 33 33
++53 53 53 62 62 62 66 66 66 65 65 65 50 50 50 40 40 40 46 46 46 39 39 39
++56 56 56 89 89 89 72 72 72 58 58 58 80 80 80 63 63 63 40 40 40 69 69 69
++67 67 67 91 91 91 99 99 99 83 83 83 76 76 76 87 87 87 84 84 84 69 69 69
++78 78 78 105 105 105 115 116 115 95 95 94 88 88 88 103 103 102 105 105 105 93 93 93
++96 96 96 109 110 110 121 121 119 109 110 110 96 97 98 105 105 105 117 117 117 115 116 115
++112 112 113 121 121 119 129 129 130 128 128 128 115 116 115 115 116 115 127 127 127 134 134 134
++131 131 131 137 137 137 137 137 137 137 137 137 140 140 140 137 138 139 133 133 133 133 133 133
++142 143 144 149 149 149 155 156 156 149 151 153 144 145 144 144 145 144 149 151 153 157 157 157
++149 149 149 149 151 153 158 159 161 163 163 163 158 159 161 157 157 157 160 161 160 161 161 162
++158 159 161 152 153 154 152 153 154 152 153 154 122 121 126 128 128 128 115 116 115 144 145 144
++83 83 83 238 240 244 231 224 220 231 224 220 255 255 255 246 251 251 255 255 255 252 251 251
++252 251 251 255 255 255 255 255 255 252 251 251 255 255 255 255 255 255 255 255 255 255 255 255
++252 251 251 252 251 251 187 210 182 83 172 115 83 172 72 83 172 72 83 172 115 83 172 115
++252 251 251 252 251 251 252 251 251 255 255 255 200 220 210 180 183 185 246 251 251 238 240 244
++187 210 182 14 16 19 11 13 16 16 20 21 1 3 7 26 29 32 0 0 4 20 21 24
++10 10 10 14 14 14 46 46 46 77 77 77 87 87 87 91 91 91 105 104 105 112 112 113
++121 121 119 125 125 127 137 137 137 149 149 149 157 157 157 157 157 157 152 153 154 149 149 149
++155 156 156 160 161 160 161 161 162 157 157 157 149 151 153 145 146 147 147 147 148 157 157 157
++157 157 157 152 153 154 144 145 144 140 140 140 144 145 144 147 147 148 145 146 147 144 145 144
++131 131 131 133 133 133 137 137 137 140 140 140 140 140 140 133 133 133 127 127 127 121 121 119
++129 129 130 133 133 133 137 138 139 140 140 140 134 134 134 129 129 130 131 131 131 137 137 137
++128 128 128 125 125 127 128 128 128 115 116 115 105 105 105 103 103 102 96 96 96 94 94 94
++95 95 94 105 105 105 101 101 101 92 92 92 89 89 89 87 87 87 88 88 88 83 83 83
++84 84 84 91 91 91 99 99 99 103 103 102 101 101 101 96 96 96 93 93 93 92 92 92
++73 73 73 73 73 73 73 73 73 74 74 74 77 77 77 76 76 76 67 67 67 54 54 54
++52 52 52 56 56 56 50 50 50 45 45 45 51 51 51 53 53 53 44 44 44 38 38 38
++34 34 34 44 44 44 42 42 42 33 33 33 33 33 33 32 32 32 25 25 25 21 21 21
++20 20 20 27 27 27 40 40 40 52 52 52 62 62 62 46 46 46 14 14 14 23 23 23
++44 44 44 48 48 48 28 28 28 8 8 8 14 14 14 16 16 16 6 6 6 10 10 10
++37 37 37 43 43 43 23 23 23 24 24 24 51 51 51 59 59 59 54 54 54 56 56 56
++57 57 57 46 46 46 56 56 56 50 50 50 27 27 27 8 8 8 10 10 10 32 32 32
++25 25 25 54 54 54 29 29 29 0 0 0 0 0 0 4 4 4 31 31 31 48 48 48
++51 51 51 54 54 54 27 27 27 33 33 33 54 54 54 50 50 50 46 46 46 37 37 37
++20 20 20 24 24 24 48 48 48 49 49 49 23 23 23 0 0 0 0 0 0 11 11 11
++14 14 14 19 19 19 14 14 14 6 6 6 14 14 14 29 29 29 34 34 34 28 28 28
++11 11 11 8 8 8 8 8 8 11 11 11 13 13 13 13 13 13 13 13 13 14 14 14
++34 34 34 11 11 11 10 10 10 20 20 20 13 13 13 14 14 14 29 29 29 37 37 37
++24 24 24 14 14 14 13 13 13 16 16 16 10 10 10 6 6 6 11 11 11 17 17 17
++43 43 43 43 43 43 40 40 40 48 48 48 56 56 56 48 48 48 44 44 44 59 59 59
++32 32 32 40 40 40 38 38 38 40 40 40 39 39 39 38 38 38 48 48 48 45 45 45
++53 53 53 4 4 4 19 19 19 43 43 43 28 28 28 23 23 23 27 27 27 13 13 13
++3 3 3 4 4 4 0 0 0 0 0 0 27 27 27 29 29 29 8 8 8 40 40 40
++34 34 34 25 25 25 37 37 37 48 48 48 46 46 46 54 54 54 58 58 58 44 44 44
++
++0 0 0 0 0 0 0 0 0 14 14 14 24 24 24 19 19 19 4 4 4 0 0 0
++0 0 0 0 0 0 10 10 10 19 19 19 19 19 19 19 19 19 20 20 20 19 19 19
++19 19 19 14 14 14 13 13 13 14 14 14 19 19 19 20 20 20 19 19 19 14 14 14
++13 13 13 17 17 17 20 20 20 16 16 16 6 6 6 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6
++17 17 17 17 17 17 14 14 14 6 6 6 0 0 0 0 0 0 0 0 0 6 6 6
++11 11 11 14 14 14 13 13 13 6 6 6 0 0 0 0 0 0 3 3 3 11 11 11
++14 14 14 11 11 11 8 8 8 4 4 4 4 4 4 6 6 6 8 8 8 10 10 10
++10 10 10 11 11 11 11 11 11 10 10 10 6 6 6 3 3 3 0 0 0 0 0 0
++10 10 10 13 13 13 16 16 16 14 14 14 8 8 8 0 0 0 0 0 0 0 0 0
++6 6 6 13 13 13 20 20 20 23 23 23 19 19 19 11 11 11 4 4 4 0 0 0
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 6 6 6 8 8 8 10 10 10 10 10 10 11 11 11 11 11 11
++19 19 19 23 23 23 59 59 59 19 19 19 19 19 19 14 14 14 11 11 11 16 16 16
++16 16 16 36 36 36 51 51 51 42 42 42 21 21 21 17 17 17 24 24 24 24 24 24
++27 27 27 58 58 58 69 69 69 52 52 52 25 25 25 23 23 23 37 37 37 32 32 32
++29 29 29 52 52 52 77 77 77 78 78 78 44 44 44 27 27 27 45 45 45 42 42 42
++45 45 45 49 49 49 82 82 82 95 95 94 66 66 66 49 49 49 58 58 58 59 59 59
++54 54 54 70 70 70 90 90 90 101 101 101 92 92 92 75 75 75 70 70 70 74 74 74
++72 72 72 88 88 88 103 103 102 109 110 110 105 105 105 101 101 101 95 95 94 90 90 90
++89 89 89 99 99 99 117 117 117 121 121 119 112 112 113 112 112 113 117 117 117 109 110 110
++105 105 105 115 116 115 128 128 128 133 133 133 125 125 127 125 125 127 133 133 133 137 137 137
++125 122 126 128 128 128 137 137 137 145 146 147 147 147 148 134 134 134 129 129 130 139 139 139
++149 151 153 147 147 148 145 146 147 149 149 149 155 156 156 155 156 156 152 153 154 149 149 149
++144 145 144 149 151 153 161 161 162 166 167 167 161 161 162 161 161 162 161 161 162 157 157 157
++157 157 157 152 153 154 142 143 144 149 149 149 131 131 131 129 129 130 128 128 128 96 96 96
++94 94 94 131 131 131 73 73 73 180 183 185 231 224 220 180 183 185 255 255 255 255 255 255
++255 255 255 252 251 251 252 251 251 255 255 255 246 251 251 255 255 255 255 255 255 252 251 251
++246 251 251 252 251 251 252 251 251 187 210 182 83 172 115 83 172 72 83 172 72 83 172 72
++252 251 251 248 249 239 255 255 255 231 224 220 200 220 210 238 240 244 246 251 251 246 251 251
++246 251 251 117 117 117 11 13 16 6 8 11 10 11 14 6 8 11 14 16 19 6 8 11
++4 4 4 33 33 33 65 65 65 84 84 84 89 89 89 94 94 94 109 110 110 121 121 119
++129 129 130 131 131 131 137 137 137 147 147 148 157 157 157 166 165 167 161 161 162 155 156 156
++152 153 154 155 156 156 163 163 163 166 167 167 158 159 161 149 151 153 152 153 154 160 161 160
++157 157 157 155 156 156 149 149 149 144 145 144 140 140 140 140 140 140 144 145 144 152 153 154
++137 138 139 134 134 134 133 133 133 134 134 134 142 143 144 142 143 144 133 133 133 121 121 119
++121 121 119 125 125 127 129 129 130 137 137 137 134 134 134 131 131 131 128 128 128 128 128 128
++133 133 133 129 129 130 127 127 127 121 121 119 127 127 127 129 129 130 121 121 119 121 121 119
++109 110 110 112 112 113 112 112 113 117 117 117 109 110 110 103 103 102 109 110 110 103 103 102
++96 97 98 93 93 93 91 91 91 94 94 94 96 96 96 89 89 89 71 71 71 54 54 54
++61 61 61 61 61 61 60 60 60 58 58 58 58 58 58 58 58 58 54 54 54 51 51 51
++56 56 56 53 53 53 49 49 49 50 50 50 56 56 56 52 52 52 43 43 43 39 39 39
++39 39 39 38 38 38 32 32 32 31 31 31 34 34 34 33 33 33 29 29 29 32 32 32
++28 28 28 43 43 43 42 42 42 42 42 42 63 63 63 58 58 58 21 21 21 10 10 10
++23 23 23 51 51 51 44 44 44 20 20 20 14 14 14 3 3 3 3 3 3 31 31 31
++49 49 49 24 24 24 13 13 13 36 36 36 56 56 56 45 45 45 32 32 32 50 50 50
++59 59 59 33 33 33 44 44 44 52 52 52 43 43 43 38 38 38 32 32 32 29 29 29
++0 0 0 29 29 29 46 46 46 38 38 38 6 6 6 0 0 0 10 10 10 19 19 19
++46 46 46 63 63 63 43 43 43 42 42 42 56 56 56 45 45 45 42 42 42 48 48 48
++44 44 44 17 17 17 32 32 32 56 56 56 51 51 51 24 24 24 0 0 0 4 4 4
++10 10 10 14 14 14 11 11 11 10 10 10 24 24 24 39 39 39 32 32 32 13 13 13
++6 6 6 11 11 11 14 14 14 14 14 14 14 14 14 16 16 16 20 20 20 23 23 23
++24 24 24 10 10 10 8 8 8 13 13 13 19 19 19 33 33 33 38 38 38 23 23 23
++8 8 8 14 14 14 14 14 14 10 10 10 8 8 8 10 10 10 19 19 19 31 31 31
++45 45 45 39 39 39 40 40 40 48 48 48 48 48 48 38 38 38 36 36 36 40 40 40
++50 50 50 48 48 48 42 42 42 49 49 49 53 53 53 51 51 51 52 52 52 49 49 49
++53 53 53 16 16 16 10 10 10 43 43 43 40 40 40 16 16 16 3 3 3 0 0 0
++0 0 0 3 3 3 8 8 8 11 11 11 38 38 38 42 42 42 24 24 24 46 46 46
++54 54 54 51 51 51 44 44 44 32 32 32 34 34 34 50 50 50 44 44 44 16 16 16
++
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 23 23 23 20 20 20 6 6 6
++0 0 0 4 4 4 13 13 13 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20
++19 19 19 14 14 14 13 13 13 14 14 14 20 20 20 21 21 21 17 17 17 13 13 13
++16 16 16 17 17 17 19 19 19 13 13 13 4 4 4 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++14 14 14 19 19 19 20 20 20 14 14 14 4 4 4 0 0 0 0 0 0 4 4 4
++6 6 6 13 13 13 16 16 16 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0
++6 6 6 8 8 8 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++8 8 8 8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 6 6 6 13 13 13
++19 19 19 17 17 17 14 14 14 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0
++10 10 10 16 16 16 20 20 20 20 20 20 14 14 14 8 8 8 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0
++3 3 3 3 3 3 4 4 4 4 4 4 6 6 6 8 8 8 8 8 8 8 8 8
++3 3 3 11 11 11 16 16 16 57 57 57 21 21 21 16 16 16 8 8 8 8 8 8
++16 16 16 4 4 4 34 34 34 58 58 58 38 38 38 14 14 14 19 19 19 23 23 23
++48 48 48 33 33 33 44 44 44 58 58 58 44 44 44 33 33 33 34 34 34 24 24 24
++37 37 37 51 51 51 59 59 59 71 71 71 67 67 67 44 44 44 39 39 39 45 45 45
++40 40 40 58 58 58 70 70 70 78 78 78 81 81 81 65 65 65 51 51 51 59 59 59
++60 60 60 57 57 57 73 73 73 99 99 99 101 101 101 80 80 80 70 70 70 77 77 77
++83 83 83 72 72 72 85 85 85 112 112 113 121 121 119 101 101 101 87 87 87 92 92 92
++93 93 93 94 94 94 101 101 101 117 117 117 129 129 130 125 125 127 112 112 113 105 104 105
++109 110 110 115 116 115 115 116 115 125 122 126 140 140 140 140 140 140 129 129 130 128 128 128
++125 122 126 129 129 130 137 138 139 144 145 144 147 147 148 140 140 140 139 139 139 147 147 148
++149 149 149 142 143 144 140 140 140 149 151 153 161 161 162 161 161 162 152 153 154 144 145 144
++152 153 154 157 157 157 166 165 167 166 167 167 163 163 163 166 165 167 166 165 167 157 157 157
++152 153 154 144 145 144 142 143 144 137 137 137 137 137 137 129 129 130 115 116 115 101 101 101
++83 83 83 87 87 87 74 74 74 96 96 96 78 78 78 101 101 101 200 220 210 157 157 157
++255 255 255 252 251 251 252 251 251 255 255 255 255 255 255 252 251 251 255 255 255 255 255 255
++238 240 244 255 255 255 254 249 251 252 251 251 187 210 182 83 172 115 83 172 72 83 172 72
++200 220 210 246 251 251 255 255 255 246 251 251 180 183 185 238 240 244 238 240 244 238 240 244
++238 240 244 231 224 220 42 43 45 10 11 14 16 20 21 8 10 13 14 16 19 10 11 14
++10 10 10 49 49 49 77 77 77 87 87 87 93 93 93 101 101 101 112 112 113 127 127 127
++139 139 139 142 143 144 144 145 144 145 146 147 155 156 156 163 163 163 166 167 167 163 163 163
++157 157 157 152 153 154 160 161 160 166 167 167 161 161 162 161 161 162 163 163 163 160 161 160
++155 156 156 155 156 156 155 156 156 152 153 154 144 145 144 137 137 137 140 140 140 145 146 147
++149 149 149 142 143 144 131 131 131 125 125 127 129 129 130 137 137 137 134 134 134 129 129 130
++121 121 119 121 121 119 125 125 127 131 131 131 137 138 139 140 140 140 137 137 137 134 134 134
++131 131 131 127 127 127 121 121 119 112 112 113 112 112 113 112 112 113 103 103 102 93 93 93
++101 101 101 96 97 98 96 97 98 105 105 105 99 99 99 83 83 83 82 82 82 78 78 78
++74 74 74 73 73 73 76 76 76 87 87 87 96 97 98 94 94 94 76 76 76 60 60 60
++66 66 66 65 65 65 61 61 61 59 59 59 58 58 58 57 57 57 57 57 57 54 54 54
++45 45 45 51 51 51 57 57 57 59 59 59 54 54 54 45 45 45 38 38 38 39 39 39
++44 44 44 43 43 43 40 40 40 39 39 39 39 39 39 34 34 34 31 31 31 32 32 32
++40 40 40 44 44 44 29 29 29 25 25 25 51 51 51 60 60 60 34 34 34 10 10 10
++6 6 6 24 24 24 45 45 45 44 44 44 19 19 19 3 3 3 25 25 25 50 50 50
++21 21 21 8 8 8 39 39 39 58 58 58 52 52 52 40 40 40 39 39 39 61 61 61
++43 43 43 29 29 29 25 25 25 34 34 34 32 32 32 40 40 40 39 39 39 0 0 0
++0 0 0 0 0 0 29 29 29 46 46 46 25 25 25 3 3 3 0 0 0 3 3 3
++23 23 23 51 51 51 46 46 46 44 44 44 49 49 49 39 39 39 44 44 44 57 57 57
++49 49 49 28 28 28 28 28 28 43 43 43 56 56 56 48 48 48 20 20 20 13 13 13
++14 14 14 10 10 10 14 14 14 27 27 27 34 34 34 28 28 28 17 17 17 10 10 10
++17 17 17 17 17 17 16 16 16 11 11 11 11 11 11 17 17 17 23 23 23 24 24 24
++13 13 13 19 19 19 10 10 10 11 11 11 34 34 34 40 40 40 24 24 24 11 11 11
++10 10 10 19 19 19 13 13 13 4 4 4 16 16 16 25 25 25 32 32 32 40 40 40
++33 33 33 34 34 34 50 50 50 58 58 58 51 51 51 44 44 44 49 49 49 51 51 51
++43 43 43 42 42 42 44 44 44 54 54 54 56 56 56 48 48 48 48 48 48 51 51 51
++59 59 59 50 50 50 34 34 34 46 46 46 51 51 51 38 38 38 40 40 40 39 39 39
++44 44 44 42 42 42 43 43 43 46 46 46 60 60 60 53 53 53 36 36 36 51 51 51
++23 23 23 42 42 42 31 31 31 21 21 21 48 48 48 62 62 62 54 54 54 51 51 51
++
++0 0 0 8 8 8 8 8 8 0 0 0 3 3 3 16 16 16 24 24 24 24 24 24
++6 6 6 13 13 13 17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20
++17 17 17 14 14 14 13 13 13 16 16 16 20 20 20 20 20 20 17 17 17 14 14 14
++17 17 17 19 19 19 17 17 17 11 11 11 4 4 4 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
++8 8 8 14 14 14 20 20 20 19 19 19 10 10 10 0 0 0 0 0 0 0 0 0
++3 3 3 10 10 10 16 16 16 17 17 17 13 13 13 8 8 8 3 3 3 0 0 0
++0 0 0 0 0 0 3 3 3 4 4 4 6 6 6 4 4 4 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 17 17 17 24 24 24
++19 19 19 16 16 16 10 10 10 3 3 3 0 0 0 3 3 3 10 10 10 14 14 14
++19 19 19 21 21 21 23 23 23 19 19 19 11 11 11 4 4 4 4 4 4 6 6 6
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 10 10 10 10 10 10 10 10 10
++10 10 10 10 10 10 16 16 16 21 21 21 58 58 58 19 19 19 16 16 16 8 8 8
++13 13 13 13 13 13 14 14 14 37 37 37 58 58 58 42 42 42 24 24 24 39 39 39
++44 44 44 33 33 33 24 24 24 44 44 44 69 69 69 57 57 57 29 29 29 34 34 34
++58 58 58 51 51 51 32 32 32 51 51 51 78 78 78 69 69 69 49 49 49 40 40 40
++54 54 54 76 76 76 58 58 58 52 52 52 87 87 87 84 84 84 57 57 57 62 62 62
++65 65 65 76 76 76 82 82 82 82 82 82 91 91 91 101 101 101 90 90 90 69 69 69
++75 75 75 85 85 85 94 94 94 103 103 102 112 112 113 115 116 115 105 105 105 91 91 91
++94 94 94 96 96 96 101 101 101 112 112 113 127 127 127 128 128 128 117 117 117 109 110 110
++112 112 113 112 112 113 112 112 113 121 121 119 142 143 144 144 145 144 133 133 133 127 127 127
++128 128 128 137 137 137 134 134 134 133 133 133 140 140 140 149 149 149 149 151 153 152 153 154
++140 140 140 137 137 137 140 140 140 149 151 153 158 159 161 158 159 161 155 156 156 152 153 154
++157 157 157 158 159 161 163 163 163 163 163 163 161 161 162 166 165 167 166 167 167 161 161 162
++152 153 154 137 137 137 149 149 149 140 140 140 127 127 127 121 121 119 109 110 110 95 95 94
++91 91 91 84 84 84 77 77 77 54 54 54 58 58 58 63 63 63 78 78 78 52 52 52
++231 224 220 128 128 128 200 220 210 238 240 244 246 251 251 255 255 255 255 255 255 255 255 255
++255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 200 220 210 141 180 99 83 172 72
++169 175 167 252 251 251 238 240 244 180 183 185 231 224 220 238 240 244 238 240 244 246 251 251
++238 240 244 252 251 251 152 153 154 6 8 11 26 29 32 14 16 19 6 8 11 14 16 19
++25 25 25 60 60 60 82 82 82 89 89 89 99 99 99 109 110 110 115 116 115 128 128 128
++140 140 140 147 147 148 152 153 154 152 153 154 152 153 154 157 157 157 166 165 167 166 167 167
++166 167 167 157 157 157 155 156 156 155 156 156 157 157 157 166 165 167 163 163 163 149 151 153
++149 149 149 149 149 149 155 156 156 157 157 157 152 153 154 142 143 144 137 137 137 137 138 139
++149 149 149 147 147 148 140 140 140 129 129 130 128 128 128 134 134 134 142 143 144 144 145 144
++128 128 128 122 121 126 121 121 119 121 121 119 129 129 130 137 137 137 134 134 134 129 129 130
++133 133 133 127 127 127 127 127 127 125 125 127 115 116 115 112 112 113 109 110 110 93 93 93
++90 90 90 91 91 91 89 89 89 101 101 101 101 101 101 85 85 85 78 78 78 81 81 81
++71 71 71 73 73 73 78 78 78 85 85 85 88 88 88 85 85 85 75 75 75 67 67 67
++69 69 69 66 66 66 62 62 62 61 61 61 61 61 61 60 60 60 57 57 57 54 54 54
++49 49 49 54 54 54 58 58 58 52 52 52 42 42 42 37 37 37 40 40 40 43 43 43
++37 37 37 38 38 38 39 39 39 34 34 34 31 31 31 33 33 33 39 39 39 42 42 42
++43 43 43 36 36 36 23 23 23 21 21 21 34 34 34 45 45 45 38 38 38 16 16 16
++13 13 13 4 4 4 29 29 29 45 45 45 36 36 36 34 34 34 45 45 45 42 42 42
++4 4 4 36 36 36 58 58 58 39 39 39 33 33 33 49 49 49 45 45 45 42 42 42
++58 58 58 51 51 51 25 25 25 39 39 39 36 36 36 31 31 31 54 54 54 28 28 28
++6 6 6 0 0 0 0 0 0 20 20 20 48 48 48 34 34 34 0 0 0 0 0 0
++0 0 0 38 38 38 48 48 48 40 40 40 43 43 43 51 51 51 52 52 52 39 39 39
++51 51 51 56 56 56 53 53 53 48 48 48 56 56 56 46 46 46 17 17 17 17 17 17
++13 13 13 13 13 13 25 25 25 37 37 37 32 32 32 14 14 14 8 8 8 16 16 16
++17 17 17 13 13 13 8 8 8 8 8 8 13 13 13 17 17 17 17 17 17 14 14 14
++13 13 13 11 11 11 14 14 14 34 34 34 43 43 43 21 21 21 3 3 3 19 19 19
++11 11 11 19 19 19 10 10 10 8 8 8 28 28 28 38 38 38 36 36 36 34 34 34
++17 17 17 13 13 13 27 27 27 40 40 40 43 43 43 48 48 48 51 51 51 45 45 45
++40 40 40 38 38 38 43 43 43 46 46 46 38 38 38 19 19 19 8 8 8 14 14 14
++39 39 39 50 50 50 42 42 42 45 45 45 49 49 49 36 36 36 31 31 31 25 25 25
++21 21 21 10 10 10 11 11 11 24 24 24 37 37 37 32 32 32 29 29 29 51 51 51
++39 39 39 54 54 54 49 49 49 42 42 42 50 50 50 42 42 42 28 28 28 37 37 37
++
++4 4 4 0 0 0 0 0 0 8 8 8 3 3 3 0 0 0 6 6 6 27 27 27
++16 16 16 23 23 23 21 21 21 17 17 17 20 20 20 20 20 20 17 17 17 19 19 19
++14 14 14 14 14 14 16 16 16 17 17 17 19 19 19 19 19 19 17 17 17 14 14 14
++19 19 19 19 19 19 16 16 16 10 10 10 4 4 4 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 10 10 10 17 17 17 19 19 19 11 11 11 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 6 6 6 14 14 14 19 19 19 17 17 17 11 11 11 4 4 4
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 11 11 11 13 13 13 13 13 13 14 14 14 14 14 14
++6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 13 13 13 19 19 19
++21 21 21 20 20 20 17 17 17 11 11 11 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8
++14 14 14 8 8 8 11 11 11 14 14 14 16 16 16 59 59 59 24 24 24 21 21 21
++14 14 14 19 19 19 11 11 11 13 13 13 39 39 39 60 60 60 57 57 57 42 42 42
++25 25 25 24 24 24 23 23 23 23 23 23 44 44 44 65 65 65 60 60 60 56 56 56
++45 45 45 38 38 38 29 29 29 40 40 40 56 56 56 66 66 66 69 69 69 54 54 54
++70 70 70 48 48 48 51 51 51 58 58 58 56 56 56 82 82 82 92 92 92 62 62 62
++71 71 71 84 84 84 81 81 81 66 66 66 74 74 74 99 99 99 103 103 102 84 84 84
++75 75 75 96 96 96 101 101 101 87 87 87 91 91 91 115 116 115 121 121 119 105 104 105
++93 93 93 101 101 101 115 116 115 115 116 115 105 105 105 121 121 119 131 131 131 121 121 119
++115 116 115 112 112 113 122 121 126 131 131 131 128 128 128 134 134 134 140 140 140 134 134 134
++134 134 134 139 139 139 133 133 133 127 127 127 137 137 137 149 151 153 152 153 154 152 153 154
++140 140 140 144 145 144 149 149 149 149 149 149 149 149 149 149 149 149 157 157 157 166 165 167
++158 159 161 157 157 157 160 161 160 161 161 162 160 161 160 163 163 163 166 167 167 161 161 162
++147 147 148 147 147 148 144 145 144 137 137 137 125 122 126 117 117 117 115 116 115 99 99 99
++89 89 89 78 78 78 76 76 76 65 65 65 67 67 67 56 56 56 46 46 46 56 56 56
++62 62 62 46 46 46 127 127 127 78 78 78 180 183 185 252 251 251 231 224 220 255 255 255
++254 249 251 255 255 255 246 251 251 255 255 255 254 249 251 248 249 239 200 220 210 83 172 115
++152 153 154 246 251 251 255 255 255 231 246 232 180 183 185 246 251 251 246 251 251 231 246 232
++246 251 251 238 240 244 238 240 244 78 79 82 0 0 4 8 10 13 14 16 19 1 3 7
++48 48 48 69 69 69 84 84 84 93 93 93 105 105 105 115 116 115 121 121 119 129 129 130
++139 139 139 149 151 153 161 161 162 163 163 163 157 157 157 157 157 157 161 161 162 166 167 167
++166 167 167 163 163 163 155 156 156 152 153 154 158 159 161 166 167 167 166 167 167 155 156 156
++147 147 148 147 147 148 149 149 149 155 156 156 157 157 157 149 151 153 142 143 144 137 137 137
++139 139 139 144 145 144 149 149 149 145 146 147 142 143 144 140 140 140 144 145 144 147 147 148
++147 147 148 142 143 144 134 134 134 129 129 130 133 133 133 137 137 137 137 137 137 134 134 134
++133 133 133 128 128 128 129 129 130 131 131 131 121 121 119 117 117 117 121 121 119 103 103 102
++96 96 96 99 99 99 94 94 94 105 104 105 112 112 113 103 103 102 96 96 96 96 96 96
++103 103 102 103 103 102 99 99 99 91 91 91 81 81 81 71 71 71 66 66 66 63 63 63
++66 66 66 61 61 61 59 59 59 59 59 59 59 59 59 57 57 57 54 54 54 54 54 54
++63 63 63 59 59 59 54 54 54 48 48 48 42 42 42 43 43 43 45 45 45 42 42 42
++37 37 37 37 37 37 39 39 39 36 36 36 29 29 29 36 36 36 46 46 46 51 51 51
++34 34 34 31 31 31 29 29 29 31 31 31 23 23 23 24 24 24 32 32 32 19 19 19
++20 20 20 10 10 10 4 4 4 20 20 20 48 48 48 60 60 60 43 43 43 13 13 13
++32 32 32 52 52 52 43 43 43 20 20 20 37 37 37 50 50 50 25 25 25 0 0 0
++52 52 52 48 48 48 19 19 19 44 44 44 38 38 38 0 0 0 33 33 33 45 45 45
++25 25 25 14 14 14 0 0 0 3 3 3 33 33 33 44 44 44 28 28 28 0 0 0
++0 0 0 19 19 19 39 39 39 50 50 50 52 52 52 52 52 52 51 51 51 49 49 49
++56 56 56 56 56 56 51 51 51 45 45 45 48 48 48 32 32 32 3 3 3 13 13 13
++8 8 8 25 25 25 37 37 37 32 32 32 19 19 19 13 13 13 14 14 14 17 17 17
++14 14 14 10 10 10 11 11 11 23 23 23 28 28 28 24 24 24 16 16 16 10 10 10
++8 8 8 11 11 11 33 33 33 43 43 43 24 24 24 6 6 6 13 13 13 17 17 17
++6 6 6 13 13 13 14 14 14 20 20 20 34 34 34 38 38 38 29 29 29 17 17 17
++25 25 25 19 19 19 23 23 23 29 29 29 32 32 32 42 42 42 46 46 46 38 38 38
++42 42 42 37 37 37 44 44 44 49 49 49 45 45 45 36 36 36 24 24 24 29 29 29
++42 42 42 44 44 44 40 40 40 46 46 46 45 45 45 27 27 27 10 10 10 0 0 0
++10 10 10 3 3 3 8 8 8 23 23 23 28 28 28 20 20 20 20 20 20 36 36 36
++38 38 38 32 32 32 36 36 36 37 37 37 25 25 25 21 21 21 28 28 28 33 33 33
++
++21 21 21 3 3 3 0 0 0 6 6 6 4 4 4 0 0 0 0 0 0 16 16 16
++25 25 25 31 31 31 24 24 24 16 16 16 20 20 20 20 20 20 16 16 16 16 16 16
++13 13 13 14 14 14 19 19 19 19 19 19 19 19 19 17 17 17 16 16 16 16 16 16
++20 20 20 19 19 19 14 14 14 10 10 10 4 4 4 3 3 3 4 4 4 6 6 6
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 10 10 10 17 17 17 19 19 19 16 16 16 11 11 11 6 6 6 4 4 4
++0 0 0 0 0 0 0 0 0 8 8 8 14 14 14 17 17 17 16 16 16 13 13 13
++13 13 13 10 10 10 6 6 6 3 3 3 0 0 0 3 3 3 6 6 6 8 8 8
++13 13 13 14 14 14 17 17 17 20 20 20 20 20 20 17 17 17 13 13 13 8 8 8
++3 3 3 3 3 3 0 0 0 3 3 3 6 6 6 10 10 10 14 14 14 16 16 16
++19 19 19 17 17 17 14 14 14 10 10 10 4 4 4 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 6 6 6 6 6 6
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 10 10 10
++11 11 11 8 8 8 10 10 10 13 13 13 16 16 16 21 21 21 62 62 62 23 23 23
++21 21 21 16 16 16 20 20 20 16 16 16 17 17 17 51 51 51 66 66 66 42 42 42
++25 25 25 16 16 16 29 29 29 20 20 20 17 17 17 56 56 56 74 74 74 66 66 66
++39 39 39 38 38 38 42 42 42 48 48 48 42 42 42 54 54 54 80 80 80 77 77 77
++68 68 68 51 51 51 51 51 51 58 58 58 58 58 58 72 72 72 88 88 88 85 85 85
++87 87 87 77 77 77 70 70 70 69 69 69 74 74 74 83 83 83 96 96 96 105 105 105
++96 97 98 96 97 98 93 93 93 87 87 87 89 89 89 101 101 101 112 112 113 121 121 119
++105 105 105 112 112 113 121 121 119 115 116 115 105 105 105 115 116 115 128 128 128 129 129 130
++125 122 126 121 121 119 133 133 133 134 134 134 121 121 119 127 127 127 142 143 144 144 145 144
++144 145 144 140 140 140 133 133 133 134 134 134 144 145 144 149 149 149 149 149 149 152 153 154
++152 153 154 155 156 156 155 156 156 149 149 149 147 147 148 149 149 149 157 157 157 163 163 163
++163 163 163 157 157 157 160 161 160 163 163 163 163 163 163 163 163 163 163 163 163 160 161 160
++152 153 154 160 161 160 140 140 140 128 128 128 121 121 119 117 117 117 105 104 105 99 99 99
++92 92 92 70 70 70 67 67 67 70 70 70 50 50 50 63 63 63 71 71 71 53 53 53
++49 49 49 66 66 66 57 57 57 54 54 54 128 128 128 105 105 105 169 175 167 255 255 255
++200 220 210 252 251 251 252 251 251 246 251 251 254 249 251 255 255 255 246 251 251 231 246 232
++126 132 129 246 251 251 231 224 220 187 210 182 246 251 251 238 240 244 238 240 244 246 251 251
++238 240 244 246 251 251 246 251 251 180 183 185 14 16 19 16 20 21 11 13 16 14 16 19
++69 69 69 76 76 76 88 88 88 101 101 101 112 112 113 121 121 119 128 128 128 137 137 137
++144 145 144 149 151 153 161 161 162 166 167 167 166 167 167 161 161 162 160 161 160 161 161 162
++163 163 163 166 167 167 163 163 163 163 163 163 166 165 167 166 167 167 163 163 163 166 165 167
++155 156 156 152 153 154 147 147 148 147 147 148 152 153 154 155 156 156 149 149 149 142 143 144
++137 137 137 142 143 144 149 149 149 149 151 153 144 145 144 134 134 134 128 128 128 128 128 128
++134 134 134 137 137 137 134 134 134 129 129 130 125 125 127 127 127 127 129 129 130 133 133 133
++133 133 133 131 131 131 128 128 128 128 128 128 125 125 127 125 125 127 129 129 130 117 117 117
++117 117 117 112 112 113 105 104 105 105 105 105 109 110 110 105 105 105 105 105 105 92 92 92
++81 81 81 82 82 82 80 80 80 75 75 75 70 70 70 68 68 68 70 70 70 72 72 72
++68 68 68 66 66 66 63 63 63 62 62 62 60 60 60 58 58 58 62 62 62 69 69 69
++70 70 70 52 52 52 43 43 43 44 44 44 42 42 42 39 39 39 38 38 38 33 33 33
++32 32 32 34 34 34 50 50 50 62 62 62 57 57 57 45 45 45 38 38 38 33 33 33
++27 27 27 33 33 33 31 31 31 32 32 32 25 25 25 19 19 19 27 27 27 20 20 20
++19 19 19 17 17 17 6 6 6 17 17 17 49 49 49 58 58 58 39 39 39 19 19 19
++51 51 51 37 37 37 25 25 25 38 38 38 49 49 49 45 45 45 32 32 32 10 10 10
++45 45 45 54 54 54 38 38 38 44 44 44 45 45 45 10 10 10 4 4 4 25 25 25
++44 44 44 32 32 32 11 11 11 0 0 0 0 0 0 23 23 23 52 52 52 31 31 31
++37 37 37 32 32 32 36 36 36 52 52 52 57 57 57 34 34 34 25 25 25 46 46 46
++45 45 45 28 28 28 29 29 29 34 34 34 32 32 32 21 21 21 6 6 6 14 14 14
++20 20 20 37 37 37 39 39 39 21 21 21 8 8 8 16 16 16 19 19 19 11 11 11
++16 16 16 11 11 11 20 20 20 34 34 34 37 37 37 25 25 25 14 14 14 14 14 14
++13 13 13 29 29 29 40 40 40 27 27 27 3 3 3 13 13 13 23 23 23 6 6 6
++6 6 6 14 14 14 25 25 25 32 32 32 29 29 29 27 27 27 21 21 21 13 13 13
++16 16 16 16 16 16 19 19 19 20 20 20 24 24 24 33 33 33 36 36 36 31 31 31
++23 23 23 14 14 14 21 21 21 21 21 21 20 20 20 20 20 20 13 13 13 23 23 23
++40 40 40 25 25 25 23 23 23 20 20 20 17 17 17 21 21 21 20 20 20 19 19 19
++13 13 13 21 21 21 31 31 31 37 37 37 31 31 31 21 21 21 17 17 17 17 17 17
++21 21 21 8 8 8 13 13 13 14 14 14 6 6 6 21 21 21 33 33 33 25 25 25
++
++42 42 42 24 24 24 6 6 6 4 4 4 10 10 10 8 8 8 8 8 8 13 13 13
++31 31 31 34 34 34 25 25 25 16 16 16 20 20 20 20 20 20 14 14 14 14 14 14
++11 11 11 16 16 16 20 20 20 20 20 20 17 17 17 16 16 16 16 16 16 17 17 17
++20 20 20 17 17 17 14 14 14 10 10 10 4 4 4 4 4 4 6 6 6 8 8 8
++16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
++16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 14 14 14
++11 11 11 14 14 14 20 20 20 23 23 23 21 21 21 20 20 20 17 17 17 16 16 16
++16 16 16 14 14 14 11 11 11 13 13 13 14 14 14 19 19 19 21 21 21 24 24 24
++14 14 14 16 16 16 17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++17 17 17 17 17 17 17 17 17 20 20 20 23 23 23 24 24 24 21 21 21 19 19 19
++20 20 20 20 20 20 20 20 20 21 21 21 23 23 23 21 21 21 20 20 20 19 19 19
++21 21 21 21 21 21 20 20 20 21 21 21 21 21 21 23 23 23 23 23 23 23 23 23
++23 23 23 23 23 23 24 24 24 25 25 25 28 28 28 29 29 29 31 31 31 31 31 31
++31 31 31 31 31 31 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
++36 36 36 29 29 29 36 36 36 39 39 39 34 34 34 34 34 34 36 36 36 62 62 62
++38 38 38 44 44 44 40 40 40 39 39 39 48 48 48 48 48 48 52 52 52 68 68 68
++51 51 51 50 50 50 49 49 49 44 44 44 56 56 56 62 62 62 58 58 58 74 74 74
++70 70 70 58 58 58 50 50 50 60 60 60 60 60 60 62 62 62 81 81 81 88 88 88
++81 81 81 71 71 71 66 66 66 71 71 71 72 72 72 67 67 67 77 77 77 101 101 101
++96 97 98 80 80 80 75 75 75 87 87 87 88 88 88 78 78 78 88 88 88 109 110 110
++115 116 115 99 99 99 93 93 93 103 103 102 105 105 105 101 101 101 105 105 105 121 121 119
++127 127 127 125 122 126 112 112 113 112 112 113 121 121 119 115 116 115 112 112 113 134 134 134
++137 137 137 137 138 139 134 134 134 129 129 130 128 128 128 129 129 130 137 137 137 145 146 147
++149 149 149 140 140 140 137 137 137 147 147 148 155 156 156 145 146 147 144 145 144 152 153 154
++157 157 157 157 157 157 152 153 154 149 149 149 155 156 156 161 161 162 163 163 163 160 161 160
++166 167 167 163 163 163 166 165 167 166 167 167 166 167 167 163 163 163 161 161 162 157 157 157
++166 167 167 149 149 149 147 147 148 142 143 144 121 121 119 125 125 127 101 101 101 99 99 99
++89 89 89 85 85 85 72 72 72 75 75 75 59 59 59 59 59 59 50 50 50 63 63 63
++61 61 61 50 50 50 65 65 65 50 50 50 57 57 57 40 40 40 103 103 102 200 220 210
++180 183 185 248 249 239 231 224 220 231 224 220 255 255 255 252 251 251 254 249 251 254 249 251
++238 240 244 200 220 210 180 183 185 238 240 244 246 251 251 246 251 251 246 251 251 238 240 244
++246 251 251 238 240 244 238 240 244 238 240 244 127 127 127 0 0 4 14 16 19 37 39 42
++82 82 82 82 82 82 92 92 92 109 110 110 117 117 117 121 121 119 131 131 131 142 143 144
++149 151 153 149 151 153 157 157 157 166 167 167 166 167 167 166 167 167 161 161 162 160 161 160
++157 157 157 166 167 167 166 167 167 166 167 167 166 165 167 152 153 154 152 153 154 163 163 163
++163 163 163 157 157 157 147 147 148 142 143 144 145 146 147 152 153 154 152 153 154 147 147 148
++140 140 140 140 140 140 144 145 144 149 149 149 147 147 148 137 138 139 128 128 128 127 127 127
++127 127 127 137 137 137 140 140 140 131 131 131 121 121 119 115 116 115 121 121 119 122 121 126
++134 134 134 134 134 134 121 121 119 121 121 119 125 122 126 125 122 126 127 127 127 121 121 119
++105 105 105 94 94 94 87 87 87 90 90 90 87 87 87 95 95 94 103 103 102 82 82 82
++83 83 83 82 82 82 80 80 80 77 77 77 75 75 75 73 73 73 71 71 71 69 69 69
++63 63 63 63 63 63 62 62 62 60 60 60 53 53 53 52 52 52 63 63 63 76 76 76
++77 77 77 50 50 50 37 37 37 42 42 42 38 38 38 32 32 32 34 34 34 38 38 38
++34 34 34 29 29 29 48 48 48 70 70 70 67 67 67 46 46 46 32 32 32 24 24 24
++24 24 24 36 36 36 24 24 24 24 24 24 32 32 32 27 27 27 27 27 27 21 21 21
++17 17 17 19 19 19 31 31 31 44 44 44 49 49 49 46 46 46 48 48 48 52 52 52
++53 53 53 20 20 20 28 28 28 49 49 49 21 21 21 23 23 23 46 46 46 11 11 11
++20 20 20 51 51 51 42 42 42 16 16 16 38 38 38 40 40 40 0 0 0 0 0 0
++29 29 29 52 52 52 29 29 29 8 8 8 0 0 0 0 0 0 40 40 40 57 57 57
++46 46 46 33 33 33 11 11 11 23 23 23 56 56 56 54 54 54 39 39 39 53 53 53
++54 54 54 38 38 38 53 53 53 57 57 57 32 32 32 17 17 17 14 14 14 16 16 16
++38 38 38 43 43 43 36 36 36 16 16 16 8 8 8 14 14 14 14 14 14 3 3 3
++17 17 17 11 11 11 20 20 20 34 34 34 32 32 32 13 13 13 6 6 6 14 14 14
++33 33 33 40 40 40 27 27 27 6 6 6 11 11 11 16 16 16 8 8 8 8 8 8
++11 11 11 20 20 20 37 37 37 38 38 38 21 21 21 13 13 13 20 20 20 20 20 20
++19 19 19 20 20 20 19 19 19 21 21 21 32 32 32 37 37 37 28 28 28 14 14 14
++20 20 20 14 14 14 23 23 23 17 17 17 14 14 14 21 21 21 24 24 24 40 40 40
++27 27 27 16 16 16 28 28 28 19 19 19 8 8 8 27 27 27 28 28 28 19 19 19
++13 13 13 29 29 29 38 38 38 34 34 34 24 24 24 23 23 23 25 25 25 16 16 16
++8 8 8 17 17 17 14 14 14 10 10 10 24 24 24 37 37 37 27 27 27 3 3 3
++
++33 33 33 43 43 43 43 43 43 31 31 31 24 24 24 27 27 27 27 27 27 21 21 21
++11 11 11 29 29 29 39 39 39 32 32 32 20 20 20 17 17 17 21 21 21 24 24 24
++25 25 25 20 20 20 14 14 14 14 14 14 20 20 20 24 24 24 23 23 23 19 19 19
++19 19 19 21 21 21 27 27 27 29 29 29 31 31 31 29 29 29 28 28 28 27 27 27
++29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
++29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
++28 28 28 27 27 27 25 25 25 23 23 23 21 21 21 20 20 20 19 19 19 17 17 17
++27 27 27 27 27 27 28 28 28 28 28 28 28 28 28 29 29 29 29 29 29 29 29 29
++24 24 24 23 23 23 23 23 23 21 21 21 20 20 20 20 20 20 19 19 19 19 19 19
++25 25 25 27 27 27 28 28 28 29 29 29 31 31 31 29 29 29 29 29 29 28 28 28
++31 31 31 28 28 28 24 24 24 19 19 19 17 17 17 16 16 16 16 16 16 17 17 17
++25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 27 27 27 27 27 27 27 27 27
++28 28 28 28 28 28 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 31 31
++31 31 31 31 31 31 31 31 31 31 31 31 32 32 32 32 32 32 32 32 32 32 32 32
++34 34 34 32 32 32 34 34 34 38 38 38 37 37 37 34 34 34 37 37 37 42 42 42
++57 57 57 46 46 46 43 43 43 50 50 50 49 49 49 40 40 40 42 42 42 52 52 52
++66 66 66 57 57 57 43 43 43 54 54 54 65 65 65 54 54 54 51 51 51 53 53 53
++73 73 73 71 71 71 61 61 61 56 56 56 66 66 66 76 76 76 71 71 71 59 59 59
++87 87 87 82 82 82 72 72 72 65 65 65 69 69 69 80 80 80 80 80 80 73 73 73
++96 96 96 91 91 91 84 84 84 80 80 80 80 80 80 85 85 85 93 93 93 101 101 101
++109 110 110 105 105 105 99 99 99 94 94 94 91 91 91 95 95 94 105 105 105 115 116 115
++125 122 126 125 122 126 117 117 117 112 112 113 109 110 110 115 116 115 121 121 119 121 121 119
++134 134 134 137 137 137 134 134 134 122 121 126 129 129 130 142 143 144 137 137 137 134 134 134
++139 139 139 147 147 148 152 153 154 144 145 144 137 138 139 139 139 139 145 146 147 152 153 154
++152 153 154 157 157 157 157 157 157 152 153 154 152 153 154 157 157 157 157 157 157 155 156 156
++158 159 161 166 167 167 166 167 167 166 167 167 161 161 162 160 161 160 160 161 160 160 161 160
++155 156 156 152 153 154 149 149 149 140 140 140 128 128 128 115 116 115 105 105 105 103 103 102
++91 91 91 85 85 85 77 77 77 72 72 72 69 69 69 67 67 67 63 63 63 60 60 60
++58 58 58 61 61 61 59 59 59 57 57 57 61 61 61 50 50 50 71 71 71 180 183 185
++246 251 251 180 183 185 231 224 220 200 220 210 231 224 220 166 167 167 255 255 255 231 224 220
++255 255 255 180 183 185 231 246 232 238 240 244 238 240 244 238 240 244 238 240 244 238 240 244
++238 240 244 238 240 244 246 251 251 238 240 244 231 246 232 37 39 42 16 20 21 66 69 71
++77 77 77 88 88 88 94 94 94 109 110 110 125 125 127 129 129 130 134 134 134 144 145 144
++149 149 149 157 157 157 161 161 162 160 161 160 166 167 167 169 175 167 169 175 167 160 161 160
++158 159 161 161 161 162 166 167 167 166 167 167 163 163 163 155 156 156 152 153 154 157 157 157
++157 157 157 161 161 162 157 157 157 147 147 148 142 143 144 144 145 144 152 153 154 155 156 156
++139 139 139 140 140 140 149 151 153 140 140 140 139 139 139 149 149 149 133 133 133 125 125 127
++127 127 127 127 127 127 131 131 131 137 137 137 131 131 131 117 117 117 112 112 113 115 116 115
++117 117 117 133 133 133 129 129 130 115 116 115 115 116 115 121 121 119 121 121 119 121 121 119
++117 117 117 101 101 101 89 89 89 84 84 84 83 83 83 90 90 90 93 93 93 87 87 87
++83 83 83 83 83 83 75 75 75 73 73 73 78 78 78 77 77 77 69 69 69 67 67 67
++69 69 69 60 60 60 61 61 61 53 53 53 52 52 52 61 61 61 66 66 66 80 80 80
++80 80 80 60 60 60 43 43 43 39 39 39 39 39 39 37 37 37 34 34 34 38 38 38
++34 34 34 27 27 27 32 32 32 58 58 58 70 70 70 49 49 49 24 24 24 25 25 25
++25 25 25 23 23 23 21 21 21 25 25 25 28 28 28 28 28 28 25 25 25 23 23 23
++19 19 19 43 43 43 39 39 39 36 36 36 46 46 46 14 14 14 24 24 24 52 52 52
++44 44 44 37 37 37 44 44 44 19 19 19 17 17 17 8 8 8 38 38 38 40 40 40
++36 36 36 44 44 44 58 58 58 33 33 33 28 28 28 45 45 45 23 23 23 0 0 0
++0 0 0 20 20 20 46 46 46 43 43 43 19 19 19 34 34 34 56 56 56 45 45 45
++45 45 45 46 46 46 48 48 48 50 50 50 52 52 52 54 54 54 54 54 54 54 54 54
++39 39 39 36 36 36 60 60 60 49 49 49 4 4 4 4 4 4 25 25 25 36 36 36
++33 33 33 28 28 28 19 19 19 13 13 13 11 11 11 14 14 14 14 14 14 13 13 13
++6 6 6 25 25 25 37 37 37 31 31 31 14 14 14 8 8 8 20 20 20 32 32 32
++43 43 43 25 25 25 13 13 13 14 14 14 16 16 16 10 10 10 11 11 11 19 19 19
++13 13 13 21 21 21 45 45 45 42 42 42 6 6 6 6 6 6 24 24 24 17 17 17
++21 21 21 14 14 14 17 17 17 33 33 33 46 46 46 50 50 50 50 50 50 51 51 51
++44 44 44 56 56 56 42 42 42 0 0 0 0 0 0 23 23 23 33 33 33 19 19 19
++0 0 0 3 3 3 45 45 45 21 21 21 8 8 8 48 48 48 48 48 48 48 48 48
++34 34 34 29 29 29 31 31 31 39 39 39 44 44 44 37 37 37 20 20 20 8 8 8
++16 16 16 8 8 8 13 13 13 28 28 28 31 31 31 19 19 19 10 10 10 13 13 13
++
++19 19 19 33 33 33 43 43 43 39 39 39 28 28 28 21 21 21 20 20 20 21 21 21
++17 17 17 19 19 19 27 27 27 36 36 36 34 34 34 24 24 24 17 17 17 19 19 19
++20 20 20 19 19 19 17 17 17 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20
++20 20 20 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 19 19 19 19 19 19
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
++20 20 20 17 17 17 16 16 16 14 14 14 14 14 14 16 16 16 19 19 19 20 20 20
++23 23 23 21 21 21 20 20 20 17 17 17 16 16 16 14 14 14 14 14 14 14 14 14
++19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 17 17 17 17 17
++17 17 17 17 17 17 16 16 16 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++21 21 21 21 21 21 21 21 21 21 21 21 20 20 20 19 19 19 17 17 17 16 16 16
++8 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11
++8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 11 11 11 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
++17 17 17 13 13 13 10 10 10 11 11 11 13 13 13 10 10 10 11 11 11 16 16 16
++31 31 31 51 51 51 56 56 56 34 34 34 17 17 17 21 21 21 27 27 27 23 23 23
++42 42 42 59 59 59 56 56 56 45 45 45 37 37 37 29 29 29 32 32 32 29 29 29
++43 43 43 69 69 69 60 60 60 49 49 49 62 62 62 51 51 51 36 36 36 56 56 56
++58 58 58 80 80 80 83 83 83 66 66 66 61 61 61 75 75 75 76 76 76 61 61 61
++68 68 68 96 97 98 101 101 101 76 76 76 72 72 72 96 96 96 101 101 101 82 82 82
++87 87 87 103 103 102 112 112 113 101 101 101 92 92 92 96 97 98 109 110 110 115 116 115
++101 101 101 115 116 115 127 127 127 121 121 119 103 103 102 101 101 101 115 116 115 129 129 130
++125 125 127 128 128 128 137 137 137 137 137 137 137 137 137 133 133 133 122 121 126 129 129 130
++129 129 130 142 143 144 152 153 154 147 147 148 137 137 137 134 134 134 145 146 147 157 157 157
++147 147 148 152 153 154 157 157 157 160 161 160 157 157 157 152 153 154 149 149 149 149 149 149
++157 157 157 166 167 167 169 175 167 166 167 167 166 167 167 163 163 163 161 161 162 158 159 161
++152 153 154 149 149 149 144 145 144 139 139 139 131 131 131 121 121 119 109 110 110 103 103 102
++92 92 92 87 87 87 81 81 81 76 76 76 73 73 73 71 71 71 67 67 67 63 63 63
++67 67 67 65 65 65 57 57 57 51 51 51 59 59 59 59 59 59 43 43 43 92 92 92
++238 240 244 238 240 244 238 240 244 231 224 220 231 224 220 200 220 210 200 220 210 200 220 210
++180 183 185 180 183 185 238 240 244 238 240 244 246 251 251 238 240 244 238 240 244 238 240 244
++238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 149 151 153 26 29 32 83 84 85
++85 85 85 95 95 94 103 103 102 117 117 117 129 129 130 133 133 133 142 143 144 149 149 149
++152 153 154 160 161 160 163 163 163 158 159 161 161 161 162 166 167 167 169 175 167 166 167 167
++163 163 163 166 167 167 166 167 167 166 167 167 163 163 163 161 161 162 157 157 157 152 153 154
++155 156 156 157 157 157 157 157 157 152 153 154 147 147 148 144 145 144 145 146 147 147 147 148
++155 156 156 152 153 154 152 153 154 137 137 137 134 134 134 145 146 147 142 143 144 144 145 144
++128 128 128 127 127 127 128 128 128 131 131 131 129 129 130 121 121 119 115 116 115 115 116 115
++115 116 115 127 127 127 131 131 131 125 125 127 115 116 115 115 116 115 115 116 115 112 112 113
++121 121 119 105 105 105 94 94 94 87 87 87 87 87 87 88 88 88 88 88 88 83 83 83
++80 80 80 83 83 83 80 80 80 76 76 76 75 75 75 70 70 70 70 70 70 80 80 80
++78 78 78 60 60 60 54 54 54 56 56 56 61 61 61 65 65 65 60 60 60 68 68 68
++84 84 84 65 65 65 46 46 46 42 42 42 42 42 42 37 37 37 33 33 33 33 33 33
++32 32 32 34 34 34 42 42 42 60 60 60 71 71 71 56 56 56 32 32 32 23 23 23
++23 23 23 21 21 21 20 20 20 19 19 19 19 19 19 20 20 20 23 23 23 25 25 25
++36 36 36 36 36 36 24 24 24 19 19 19 32 32 32 24 24 24 39 39 39 45 45 45
++48 48 48 45 45 45 49 49 49 11 11 11 0 0 0 0 0 0 37 37 37 42 42 42
++34 34 34 25 25 25 52 52 52 43 43 43 21 21 21 38 38 38 33 33 33 11 11 11
++11 11 11 23 23 23 46 46 46 53 53 53 45 45 45 51 51 51 52 52 52 32 32 32
++36 36 36 46 46 46 54 54 54 51 51 51 42 42 42 38 38 38 46 46 46 56 56 56
++31 31 31 20 20 20 34 34 34 27 27 27 8 8 8 23 23 23 33 33 33 33 33 33
++20 20 20 17 17 17 13 13 13 13 13 13 14 14 14 16 16 16 16 16 16 14 14 14
++11 11 11 32 32 32 37 37 37 20 20 20 8 8 8 19 19 19 33 33 33 37 37 37
++24 24 24 16 16 16 10 10 10 11 11 11 10 10 10 10 10 10 16 16 16 24 24 24
++49 49 49 44 44 44 54 54 54 52 52 52 27 27 27 19 19 19 27 27 27 20 20 20
++14 14 14 24 24 24 36 36 36 40 40 40 44 44 44 48 48 48 52 52 52 54 54 54
++53 53 53 53 53 53 40 40 40 21 21 21 20 20 20 31 31 31 24 24 24 4 4 4
++10 10 10 11 11 11 40 40 40 23 23 23 6 6 6 36 36 36 42 42 42 45 45 45
++42 42 42 45 45 45 48 48 48 43 43 43 28 28 28 11 11 11 10 10 10 17 17 17
++8 8 8 19 19 19 28 28 28 29 29 29 21 21 21 11 11 11 10 10 10 11 11 11
++
++0 0 0 3 3 3 17 17 17 28 28 28 28 28 28 21 21 21 17 17 17 17 17 17
++21 21 21 14 14 14 16 16 16 31 31 31 38 38 38 32 32 32 21 21 21 14 14 14
++17 17 17 16 16 16 19 19 19 23 23 23 20 20 20 16 16 16 16 16 16 23 23 23
++20 20 20 14 14 14 6 6 6 3 3 3 4 4 4 6 6 6 6 6 6 6 6 6
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++8 8 8 4 4 4 3 3 3 0 0 0 4 4 4 11 11 11 17 17 17 21 21 21
++21 21 21 19 19 19 14 14 14 10 10 10 6 6 6 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 11 11 11 14 14 14
++16 16 16 17 17 17 21 21 21 23 23 23 21 21 21 17 17 17 13 13 13 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6
++16 16 16 11 11 11 8 8 8 10 10 10 10 10 10 8 8 8 8 8 8 10 10 10
++16 16 16 44 44 44 53 53 53 36 36 36 16 16 16 19 19 19 24 24 24 21 21 21
++14 14 14 52 52 52 61 61 61 51 51 51 37 37 37 27 27 27 29 29 29 27 27 27
++27 27 27 50 50 50 68 68 68 72 72 72 61 61 61 40 40 40 34 34 34 44 44 44
++42 42 42 60 60 60 78 78 78 85 85 85 77 77 77 67 67 67 59 59 59 57 57 57
++54 54 54 78 78 78 95 95 94 93 93 93 91 91 91 93 93 93 87 87 87 73 73 73
++75 75 75 92 92 92 105 105 105 109 110 110 109 110 110 109 110 110 105 105 105 96 97 98
++94 94 94 109 110 110 125 125 127 129 129 130 121 121 119 115 116 115 117 117 117 127 127 127
++115 116 115 117 117 117 133 133 133 144 145 144 144 145 144 131 131 131 121 121 119 133 133 133
++137 137 137 139 139 139 144 145 144 149 151 153 152 153 154 149 151 153 149 149 149 149 149 149
++142 143 144 144 145 144 155 156 156 163 163 163 163 163 163 155 156 156 152 153 154 155 156 156
++158 159 161 166 167 167 169 175 167 169 175 167 166 167 167 166 167 167 161 161 162 155 156 156
++152 153 154 147 147 148 142 143 144 140 140 140 137 137 137 128 128 128 117 117 117 105 105 105
++99 99 99 94 94 94 89 89 89 85 85 85 83 83 83 80 80 80 75 75 75 71 71 71
++70 70 70 70 70 70 67 67 67 61 61 61 60 60 60 70 70 70 56 56 56 51 51 51
++139 140 142 252 251 251 238 240 244 238 240 244 238 240 244 255 255 255 238 240 244 246 251 251
++200 220 210 231 224 220 231 246 232 252 251 251 231 246 232 255 255 255 231 246 232 238 240 244
++238 240 244 246 251 251 238 240 244 238 240 244 246 251 251 238 240 244 96 98 100 75 78 80
++87 87 87 99 99 99 105 105 105 121 121 119 133 133 133 139 139 139 149 151 153 155 156 156
++157 157 157 161 161 162 166 167 167 163 163 163 161 161 162 163 163 163 166 167 167 169 175 167
++166 167 167 166 167 167 166 167 167 158 159 161 161 161 162 166 167 167 163 163 163 152 153 154
++152 153 154 152 153 154 155 156 156 157 157 157 152 153 154 145 146 147 142 143 144 142 143 144
++155 156 156 149 149 149 149 149 149 137 137 137 133 133 133 140 140 140 137 138 139 144 145 144
++131 131 131 127 127 127 122 121 126 125 125 127 128 128 128 127 127 127 121 121 119 115 116 115
++109 110 110 115 116 115 128 128 128 133 133 133 121 121 119 112 112 113 115 116 115 109 110 110
++115 116 115 109 110 110 96 97 98 90 90 90 90 90 90 89 89 89 85 85 85 84 84 84
++77 77 77 78 78 78 78 78 78 76 76 76 74 74 74 70 70 70 75 75 75 88 88 88
++84 84 84 62 62 62 56 56 56 61 61 61 67 67 67 61 61 61 51 51 51 56 56 56
++85 85 85 67 67 67 49 49 49 42 42 42 40 40 40 36 36 36 33 33 33 33 33 33
++32 32 32 40 40 40 46 46 46 54 54 54 61 61 61 54 54 54 32 32 32 14 14 14
++23 23 23 24 24 24 23 23 23 17 17 17 14 14 14 20 20 20 28 28 28 34 34 34
++45 45 45 31 31 31 19 19 19 13 13 13 17 17 17 25 25 25 39 39 39 23 23 23
++37 37 37 38 38 38 42 42 42 8 8 8 6 6 6 13 13 13 42 42 42 40 40 40
++24 24 24 11 11 11 42 42 42 44 44 44 29 29 29 39 39 39 43 43 43 39 39 39
++46 46 46 37 37 37 34 34 34 36 36 36 37 37 37 39 39 39 32 32 32 13 13 13
++11 11 11 27 27 27 38 38 38 32 32 32 16 16 16 8 8 8 20 20 20 34 34 34
++28 28 28 14 14 14 14 14 14 14 14 14 23 23 23 38 38 38 33 33 33 20 20 20
++10 10 10 8 8 8 10 10 10 13 13 13 14 14 14 14 14 14 13 13 13 13 13 13
++14 14 14 28 28 28 28 28 28 11 11 11 13 13 13 32 32 32 38 38 38 29 29 29
++10 10 10 11 11 11 13 13 13 10 10 10 8 8 8 11 11 11 23 23 23 31 31 31
++37 37 37 25 25 25 25 25 25 29 29 29 21 21 21 16 16 16 17 17 17 17 17 17
++16 16 16 29 29 29 34 34 34 28 28 28 20 20 20 23 23 23 27 27 27 28 28 28
++24 24 24 19 19 19 19 19 19 27 27 27 33 33 33 29 29 29 17 17 17 6 6 6
++8 8 8 4 4 4 21 21 21 11 11 11 0 0 0 17 17 17 28 28 28 32 32 32
++17 17 17 19 19 19 20 20 20 17 17 17 10 10 10 3 3 3 8 8 8 16 16 16
++14 14 14 28 28 28 32 32 32 20 20 20 8 8 8 10 10 10 13 13 13 11 11 11
++
++0 0 0 0 0 0 0 0 0 6 6 6 27 27 27 31 31 31 23 23 23 13 13 13
++19 19 19 19 19 19 17 17 17 16 16 16 25 25 25 34 34 34 32 32 32 21 21 21
++21 21 21 16 16 16 17 17 17 21 21 21 21 21 21 16 16 16 16 16 16 21 21 21
++17 17 17 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 11 11 11 16 16 16
++21 21 21 20 20 20 17 17 17 14 14 14 11 11 11 8 8 8 4 4 4 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 13 13 13 17 17 17 20 20 20
++19 19 19 20 20 20 21 21 21 20 20 20 16 16 16 10 10 10 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8
++8 8 8 8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11
++10 10 10 11 11 11 13 13 13 14 14 14 13 13 13 11 11 11 13 13 13 16 16 16
++39 39 39 32 32 32 37 37 37 49 49 49 43 43 43 21 21 21 14 14 14 27 27 27
++31 31 31 49 49 49 52 52 52 56 56 56 50 50 50 32 32 32 31 31 31 34 34 34
++34 34 34 43 43 43 66 66 66 75 75 75 63 63 63 52 52 52 49 49 49 44 44 44
++51 51 51 48 48 48 65 65 65 89 89 89 88 88 88 65 65 65 53 53 53 62 62 62
++66 66 66 58 58 58 73 73 73 101 101 101 105 105 105 84 84 84 71 71 71 78 78 78
++84 84 84 83 83 83 90 90 90 105 105 105 115 116 115 112 112 113 99 99 99 89 89 89
++99 99 99 99 99 99 105 105 105 121 121 119 128 128 128 127 127 127 117 117 117 112 112 113
++115 116 115 117 117 117 127 127 127 137 137 137 142 143 144 134 134 134 128 128 128 134 134 134
++140 140 140 133 133 133 131 131 131 142 143 144 152 153 154 152 153 154 144 145 144 137 137 137
++144 145 144 144 145 144 152 153 154 158 159 161 158 159 161 155 156 156 157 157 157 163 163 163
++158 159 161 166 165 167 166 167 167 166 167 167 166 167 167 166 165 167 158 159 161 152 153 154
++155 156 156 149 151 153 145 146 147 144 145 144 142 143 144 134 134 134 125 125 127 117 117 117
++109 110 110 105 104 105 99 99 99 95 95 94 92 92 92 89 89 89 84 84 84 80 80 80
++75 75 75 73 73 73 73 73 73 71 71 71 59 59 59 59 59 59 65 65 65 62 62 62
++56 57 59 180 183 185 238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244
++180 183 185 187 210 182 200 220 210 246 251 251 238 240 244 238 240 244 246 251 251 246 251 251
++246 251 251 238 240 244 238 240 244 238 240 244 246 251 251 252 251 251 180 183 185 78 79 82
++90 90 90 105 105 105 112 112 113 121 121 119 137 137 137 144 145 144 152 153 154 155 156 156
++158 159 161 163 163 163 166 167 167 166 167 167 166 167 167 163 163 163 166 167 167 166 167 167
++166 167 167 166 167 167 163 163 163 157 157 157 160 161 160 166 167 167 163 163 163 155 156 156
++152 153 154 149 151 153 152 153 154 157 157 157 155 156 156 147 147 148 142 143 144 142 143 144
++144 145 144 142 143 144 145 146 147 140 140 140 134 134 134 134 134 134 129 129 130 134 134 134
++133 133 133 128 128 128 122 121 126 121 121 119 125 125 127 127 127 127 122 121 126 117 117 117
++112 112 113 109 110 110 112 112 113 115 116 115 109 110 110 105 105 105 105 105 105 109 110 110
++103 103 102 105 104 105 96 96 96 91 91 91 94 94 94 90 90 90 85 85 85 87 87 87
++88 88 88 84 84 84 77 77 77 74 74 74 74 74 74 72 72 72 71 71 71 72 72 72
++72 72 72 65 65 65 63 63 63 67 67 67 65 65 65 57 57 57 52 52 52 57 57 57
++54 54 54 50 50 50 48 48 48 50 50 50 50 50 50 45 45 45 42 42 42 42 42 42
++51 51 51 49 49 49 40 40 40 33 33 33 37 37 37 40 40 40 37 37 37 29 29 29
++32 32 32 33 33 33 31 31 31 27 27 27 27 27 27 33 33 33 40 40 40 44 44 44
++32 32 32 21 21 21 23 23 23 24 24 24 17 17 17 21 21 21 27 27 27 8 8 8
++19 19 19 17 17 17 23 23 23 11 11 11 28 28 28 31 31 31 36 36 36 20 20 20
++8 8 8 6 6 6 19 19 19 16 16 16 16 16 16 14 14 14 6 6 6 20 20 20
++19 19 19 10 10 10 8 8 8 20 20 20 33 33 33 32 32 32 20 20 20 11 11 11
++10 10 10 13 13 13 14 14 14 11 11 11 6 6 6 4 4 4 8 8 8 11 11 11
++19 19 19 11 11 11 10 10 10 20 20 20 33 33 33 33 33 33 20 20 20 10 10 10
++10 10 10 10 10 10 11 11 11 14 14 14 14 14 14 10 10 10 10 10 10 11 11 11
++14 14 14 16 16 16 14 14 14 19 19 19 31 31 31 38 38 38 28 28 28 10 10 10
++11 11 11 16 16 16 17 17 17 11 11 11 11 11 11 21 21 21 29 29 29 33 33 33
++24 24 24 16 16 16 8 8 8 10 10 10 14 14 14 13 13 13 13 13 13 16 16 16
++37 37 37 34 34 34 27 27 27 14 14 14 10 10 10 13 13 13 13 13 13 10 10 10
++14 14 14 16 16 16 27 27 27 38 38 38 34 34 34 20 20 20 11 11 11 14 14 14
++14 14 14 14 14 14 16 16 16 16 16 16 14 14 14 25 25 25 34 34 34 27 27 27
++13 13 13 8 8 8 6 6 6 8 8 8 13 13 13 16 16 16 14 14 14 13 13 13
++28 28 28 29 29 29 20 20 20 6 6 6 4 4 4 16 16 16 17 17 17 10 10 10
++
++8 8 8 4 4 4 0 0 0 10 10 10 24 24 24 33 33 33 31 31 31 23 23 23
++14 14 14 21 21 21 20 20 20 14 14 14 16 16 16 25 25 25 33 33 33 33 33 33
++28 28 28 19 19 19 14 14 14 17 17 17 20 20 20 19 19 19 17 17 17 17 17 17
++11 11 11 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++16 16 16 17 17 17 19 19 19 20 20 20 20 20 20 19 19 19 16 16 16 14 14 14
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++14 14 14 14 14 14 14 14 14 16 16 16 17 17 17 17 17 17 19 19 19 19 19 19
++23 23 23 20 20 20 16 16 16 11 11 11 6 6 6 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8
++3 3 3 10 10 10 13 13 13 11 11 11 8 8 8 11 11 11 21 21 21 29 29 29
++37 37 37 13 13 13 13 13 13 42 42 42 49 49 49 28 28 28 17 17 17 28 28 28
++40 40 40 39 39 39 32 32 32 42 42 42 46 46 46 33 33 33 34 34 34 42 42 42
++37 37 37 54 54 54 49 49 49 45 45 45 60 60 60 57 57 57 44 44 44 52 52 52
++56 56 56 58 58 58 62 62 62 67 67 67 71 71 71 70 70 70 67 67 67 63 63 63
++70 70 70 65 65 65 70 70 70 84 84 84 89 89 89 82 82 82 78 78 78 83 83 83
++87 87 87 84 84 84 87 87 87 96 97 98 101 101 101 99 99 99 96 97 98 101 101 101
++103 103 102 99 99 99 101 101 101 112 112 113 117 117 117 117 117 117 115 116 115 117 117 117
++117 117 117 125 125 127 125 125 127 127 127 127 129 129 130 131 131 131 129 129 130 129 129 130
++137 137 137 133 133 133 133 133 133 137 138 139 142 143 144 140 140 140 142 143 144 144 145 144
++147 147 148 149 149 149 152 153 154 152 153 154 152 153 154 152 153 154 155 156 156 158 159 161
++157 157 157 158 159 161 161 161 162 161 161 162 163 163 163 163 163 163 160 161 160 155 156 156
++157 157 157 155 156 156 152 153 154 147 147 148 142 143 144 137 137 137 131 131 131 127 127 127
++117 117 117 115 116 115 109 110 110 103 103 102 101 101 101 96 96 96 90 90 90 87 87 87
++83 83 83 76 76 76 71 71 71 75 75 75 73 73 73 63 63 63 65 65 65 63 63 63
++51 52 54 90 91 93 231 224 220 238 240 244 246 251 251 238 240 244 255 255 255 238 240 244
++246 251 251 238 240 244 187 210 182 238 240 244 238 240 244 238 240 244 246 251 251 238 240 244
++238 240 244 238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244 137 138 139
++94 94 94 112 112 113 122 121 126 128 128 128 142 143 144 149 149 149 149 151 153 158 159 161
++166 165 167 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 166 165 167 166 167 167
++166 167 167 166 165 167 161 161 162 160 161 160 160 161 160 160 161 160 158 159 161 157 157 157
++157 157 157 152 153 154 149 151 153 152 153 154 152 153 154 147 147 148 147 147 148 149 149 149
++144 145 144 142 143 144 144 145 144 140 140 140 137 138 139 134 134 134 131 131 131 134 134 134
++131 131 131 129 129 130 127 127 127 125 122 126 122 121 126 121 121 119 121 121 119 121 121 119
++121 121 119 117 117 117 109 110 110 109 110 110 112 112 113 105 105 105 101 101 101 101 101 101
++96 96 96 101 101 101 95 95 94 92 92 92 94 94 94 90 90 90 85 85 85 88 88 88
++84 84 84 82 82 82 77 77 77 74 74 74 74 74 74 77 77 77 73 73 73 65 65 65
++62 62 62 68 68 68 69 69 69 67 67 67 61 61 61 57 57 57 58 58 58 59 59 59
++49 49 49 49 49 49 50 50 50 49 49 49 45 45 45 42 42 42 45 45 45 51 51 51
++53 53 53 44 44 44 37 37 37 34 34 34 34 34 34 36 36 36 36 36 36 34 34 34
++31 31 31 31 31 31 28 28 28 25 25 25 28 28 28 34 34 34 36 36 36 32 32 32
++19 19 19 16 16 16 20 20 20 25 25 25 21 21 21 20 20 20 19 19 19 20 20 20
++24 24 24 14 14 14 17 17 17 20 20 20 38 38 38 33 33 33 23 23 23 6 6 6
++19 19 19 20 20 20 19 19 19 13 13 13 17 17 17 17 17 17 8 8 8 14 14 14
++11 11 11 13 13 13 19 19 19 29 29 29 34 34 34 21 21 21 6 6 6 8 8 8
++21 21 21 13 13 13 6 6 6 8 8 8 17 17 17 21 21 21 17 17 17 10 10 10
++10 10 10 13 13 13 16 16 16 28 28 28 31 31 31 16 16 16 10 10 10 17 17 17
++14 14 14 13 13 13 13 13 13 16 16 16 13 13 13 8 8 8 11 11 11 19 19 19
++17 17 17 10 10 10 16 16 16 34 34 34 40 40 40 28 28 28 11 11 11 4 4 4
++14 14 14 17 17 17 14 14 14 11 11 11 19 19 19 31 31 31 36 36 36 33 33 33
++13 13 13 17 17 17 14 14 14 6 6 6 11 11 11 17 17 17 19 19 19 21 21 21
++34 34 34 23 23 23 11 11 11 10 10 10 13 13 13 14 14 14 13 13 13 14 14 14
++16 16 16 21 21 21 31 31 31 32 32 32 23 23 23 8 8 8 6 6 6 14 14 14
++14 14 14 17 17 17 13 13 13 17 17 17 24 24 24 32 32 32 31 31 31 6 6 6
++11 11 11 17 17 17 20 20 20 17 17 17 13 13 13 13 13 13 20 20 20 25 25 25
++31 31 31 21 21 21 8 8 8 4 4 4 13 13 13 19 19 19 16 16 16 10 10 10
++
++0 0 0 8 8 8 20 20 20 19 19 19 17 17 17 23 23 23 32 32 32 37 37 37
++20 20 20 17 17 17 20 20 20 23 23 23 19 19 19 14 14 14 24 24 24 37 37 37
++32 32 32 24 24 24 17 17 17 14 14 14 19 19 19 21 21 21 17 17 17 13 13 13
++4 4 4 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++6 6 6 10 10 10 14 14 14 17 17 17 20 20 20 20 20 20 20 20 20 20 20 20
++23 23 23 23 23 23 21 21 21 21 21 21 20 20 20 19 19 19 17 17 17 17 17 17
++16 16 16 17 17 17 20 20 20 21 21 21 21 21 21 20 20 20 19 19 19 17 17 17
++17 17 17 13 13 13 8 8 8 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 6 6 6
++8 8 8 13 13 13 13 13 13 10 10 10 10 10 10 19 19 19 31 31 31 38 38 38
++11 11 11 10 10 10 14 14 14 27 27 27 36 36 36 38 38 38 34 34 34 31 31 31
++27 27 27 34 34 34 28 28 28 34 34 34 42 42 42 38 38 38 40 40 40 40 40 40
++39 39 39 48 48 48 48 48 48 44 44 44 49 49 49 51 51 51 48 48 48 48 48 48
++50 50 50 59 59 59 62 62 62 59 59 59 60 60 60 67 67 67 68 68 68 63 63 63
++65 65 65 72 72 72 77 77 77 76 76 76 76 76 76 81 81 81 83 83 83 82 82 82
++82 82 82 87 87 87 90 90 90 91 91 91 93 93 93 99 99 99 101 101 101 101 101 101
++101 101 101 103 103 102 109 110 110 112 112 113 112 112 113 112 112 113 115 116 115 117 117 117
++112 112 113 127 127 127 125 122 126 121 121 119 125 122 126 127 127 127 129 129 130 129 129 130
++131 131 131 134 134 134 139 139 139 142 143 144 142 143 144 142 143 144 144 145 144 147 147 148
++145 146 147 147 147 148 149 149 149 149 149 149 149 149 149 152 153 154 152 153 154 152 153 154
++155 156 156 157 157 157 157 157 157 157 157 157 158 159 161 163 163 163 163 163 163 161 161 162
++158 159 161 157 157 157 155 156 156 149 149 149 144 145 144 140 140 140 137 137 137 134 134 134
++128 128 128 125 122 126 117 117 117 112 112 113 109 110 110 105 105 105 101 101 101 96 96 96
++91 91 91 90 90 90 83 83 83 78 78 78 87 87 87 80 80 80 73 73 73 67 67 67
++69 70 72 58 59 61 152 153 154 238 240 244 238 240 244 238 240 244 238 240 244 238 240 244
++238 240 244 238 240 244 158 159 161 180 183 185 200 220 210 246 251 251 238 240 244 238 240 244
++238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244 246 251 251 200 220 210
++109 110 110 105 105 105 125 125 127 134 134 134 144 145 144 152 153 154 152 153 154 166 165 167
++166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167
++166 165 167 161 161 162 161 161 162 163 163 163 161 161 162 157 157 157 155 156 156 158 159 161
++157 157 157 155 156 156 152 153 154 149 151 153 149 149 149 147 147 148 149 149 149 152 153 154
++145 146 147 142 143 144 140 140 140 140 140 140 142 143 144 140 140 140 134 134 134 133 133 133
++129 129 130 129 129 130 129 129 130 128 128 128 125 125 127 121 121 119 117 117 117 117 117 117
++115 116 115 117 117 117 105 105 105 101 101 101 109 110 110 109 110 110 101 101 101 96 97 98
++96 96 96 99 99 99 96 96 96 93 93 93 92 92 92 89 89 89 85 85 85 87 87 87
++76 76 76 78 78 78 82 82 82 81 81 81 75 75 75 74 74 74 73 73 73 67 67 67
++73 73 73 77 77 77 70 70 70 63 63 63 59 59 59 56 56 56 57 57 57 50 50 50
++54 54 54 54 54 54 53 53 53 49 49 49 44 44 44 44 44 44 51 51 51 58 58 58
++44 44 44 36 36 36 36 36 36 40 40 40 38 38 38 33 33 33 31 31 31 29 29 29
++36 36 36 39 39 39 38 38 38 36 36 36 39 39 39 44 44 44 39 39 39 29 29 29
++37 37 37 31 31 31 24 24 24 21 21 21 17 17 17 21 21 21 14 14 14 27 27 27
++39 39 39 34 34 34 33 33 33 37 37 37 45 45 45 38 38 38 34 34 34 36 36 36
++32 32 32 23 23 23 29 29 29 29 29 29 24 24 24 32 32 32 37 37 37 25 25 25
++33 33 33 33 33 33 36 36 36 39 39 39 37 37 37 28 28 28 29 29 29 39 39 39
++36 36 36 29 29 29 25 25 25 27 27 27 32 32 32 36 36 36 33 33 33 31 31 31
++32 32 32 33 33 33 31 31 31 33 33 33 23 23 23 4 4 4 16 16 16 29 29 29
++14 14 14 11 11 11 13 13 13 16 16 16 14 14 14 11 11 11 20 20 20 32 32 32
++24 24 24 20 20 20 28 28 28 40 40 40 34 34 34 13 13 13 6 6 6 19 19 19
++11 11 11 11 11 11 11 11 11 16 16 16 28 28 28 39 39 39 40 40 40 34 34 34
++34 34 34 44 44 44 46 46 46 39 39 39 36 36 36 39 39 39 43 43 43 44 44 44
++43 43 43 37 37 37 37 37 37 42 42 42 42 42 42 38 38 38 38 38 38 43 43 43
++36 36 36 39 39 39 40 40 40 39 39 39 37 37 37 37 37 37 39 39 39 42 42 42
++36 36 36 39 39 39 37 37 37 38 38 38 43 43 43 45 45 45 34 34 34 10 10 10
++4 4 4 10 10 10 13 13 13 8 8 8 6 6 6 14 14 14 24 24 24 31 31 31
++19 19 19 11 11 11 10 10 10 16 16 16 19 19 19 14 14 14 11 11 11 11 11 11
++
++3 3 3 10 10 10 17 17 17 19 19 19 16 16 16 16 16 16 25 25 25 36 36 36
++31 31 31 23 23 23 19 19 19 20 20 20 19 19 19 14 14 14 19 19 19 27 27 27
++29 29 29 29 29 29 25 25 25 17 17 17 17 17 17 20 20 20 17 17 17 10 10 10
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 10 10 10 13 13 13 16 16 16 19 19 19 20 20 20
++20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 17 17 17 17 17 17 17 17 17
++14 14 14 16 16 16 17 17 17 19 19 19 19 19 19 17 17 17 14 14 14 13 13 13
++8 8 8 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8
++6 6 6 8 8 8 8 8 8 8 8 8 16 16 16 25 25 25 27 27 27 23 23 23
++16 16 16 24 24 24 29 29 29 27 27 27 27 27 27 32 32 32 33 33 33 29 29 29
++28 28 28 40 40 40 36 36 36 36 36 36 39 39 39 38 38 38 42 42 42 38 38 38
++46 46 46 36 36 36 48 48 48 56 56 56 42 42 42 46 46 46 59 59 59 52 52 52
++56 56 56 52 52 52 56 56 56 63 63 63 63 63 63 58 58 58 62 62 62 71 71 71
++73 73 73 70 70 70 73 73 73 78 78 78 78 78 78 75 75 75 78 78 78 87 87 87
++89 89 89 89 89 89 89 89 89 90 90 90 94 94 94 99 99 99 99 99 99 96 97 98
++103 103 102 105 105 105 109 110 110 105 105 105 105 105 105 109 110 110 112 112 113 115 116 115
++121 121 119 125 122 126 117 117 117 125 122 126 129 129 130 127 127 127 129 129 130 134 134 134
++134 134 134 134 134 134 134 134 134 137 137 137 140 140 140 144 145 144 142 143 144 140 140 140
++149 149 149 145 146 147 147 147 148 152 153 154 155 156 156 152 153 154 152 153 154 155 156 156
++158 159 161 161 161 162 161 161 162 157 157 157 157 157 157 161 161 162 163 163 163 161 161 162
++166 165 167 161 161 162 157 157 157 155 156 156 155 156 156 149 151 153 144 145 144 140 140 140
++140 140 140 134 134 134 128 128 128 125 125 127 121 121 119 121 121 119 115 116 115 112 112 113
++105 105 105 105 105 105 101 101 101 83 83 83 87 87 87 80 80 80 73 73 73 69 69 69
++58 59 61 69 70 72 60 61 64 200 220 210 238 240 244 246 251 251 238 240 244 238 240 244
++238 240 244 255 255 255 231 246 232 200 220 210 238 240 244 246 251 251 246 251 251 238 240 244
++238 240 244 246 251 251 238 240 244 238 240 244 246 251 251 246 251 251 238 240 244 246 251 251
++166 167 167 109 110 110 121 121 119 140 140 140 144 145 144 158 159 161 157 157 157 166 167 167
++166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167
++163 163 163 158 159 161 160 161 160 166 167 167 166 167 167 158 159 161 155 156 156 155 156 156
++155 156 156 157 157 157 157 157 157 152 153 154 147 147 148 145 146 147 147 147 148 149 149 149
++147 147 148 142 143 144 137 138 139 140 140 140 145 146 147 147 147 148 139 139 139 128 128 128
++128 128 128 127 127 127 128 128 128 133 133 133 129 129 130 121 121 119 115 116 115 115 116 115
++128 128 128 129 129 130 121 121 119 105 105 105 109 110 110 125 122 126 128 128 128 121 121 119
++99 99 99 96 97 98 96 96 96 95 95 94 91 91 91 89 89 89 88 88 88 85 85 85
++83 83 83 80 80 80 88 88 88 91 91 91 78 78 78 66 66 66 66 66 66 68 68 68
++81 81 81 80 80 80 66 66 66 62 62 62 58 58 58 54 54 54 58 58 58 52 52 52
++48 48 48 50 50 50 54 54 54 58 58 58 61 61 61 63 63 63 63 63 63 62 62 62
++60 60 60 49 49 49 45 45 45 43 43 43 34 34 34 33 33 33 36 36 36 34 34 34
++43 43 43 51 51 51 56 56 56 54 54 54 57 57 57 61 61 61 58 58 58 49 49 49
++53 53 53 49 49 49 43 43 43 32 32 32 14 14 14 23 23 23 13 13 13 20 20 20
++37 37 37 45 45 45 49 49 49 49 49 49 51 51 51 46 46 46 48 48 48 57 57 57
++56 56 56 50 50 50 52 52 52 54 54 54 45 45 45 46 46 46 51 51 51 45 45 45
++44 44 44 42 42 42 46 46 46 51 51 51 48 48 48 43 43 43 44 44 44 48 48 48
++50 50 50 51 51 51 50 50 50 49 49 49 48 48 48 48 48 48 51 51 51 53 53 53
++48 48 48 46 46 46 33 33 33 25 25 25 14 14 14 11 11 11 27 27 27 25 25 25
++13 13 13 10 10 10 11 11 11 16 16 16 14 14 14 13 13 13 24 24 24 38 38 38
++29 29 29 33 33 33 34 34 34 29 29 29 17 17 17 10 10 10 13 13 13 19 19 19
++8 8 8 11 11 11 17 17 17 28 28 28 39 39 39 45 45 45 43 43 43 37 37 37
++44 44 44 49 49 49 53 53 53 50 50 50 39 39 39 34 34 34 36 36 36 36 36 36
++39 39 39 40 40 40 43 43 43 44 44 44 42 42 42 39 39 39 39 39 39 42 42 42
++43 43 43 42 42 42 39 39 39 37 37 37 38 38 38 40 40 40 42 42 42 39 39 39
++38 38 38 39 39 39 42 42 42 40 40 40 38 38 38 32 32 32 19 19 19 10 10 10
++19 19 19 16 16 16 10 10 10 10 10 10 19 19 19 27 27 27 25 25 25 19 19 19
++10 10 10 10 10 10 13 13 13 17 17 17 16 16 16 11 11 11 10 10 10 13 13 13
++
++44 44 44 25 25 25 11 11 11 17 17 17 23 23 23 19 19 19 16 16 16 20 20 20
++39 39 39 33 33 33 19 19 19 6 6 6 11 11 11 21 21 21 21 21 21 13 13 13
++24 24 24 33 33 33 32 32 32 21 21 21 16 16 16 19 19 19 17 17 17 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++3 3 3 0 0 0 0 0 0 3 3 3 6 6 6 13 13 13 17 17 17 20 20 20
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20
++21 21 21 21 21 21 20 20 20 17 17 17 14 14 14 10 10 10 4 4 4 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 6 6 6
++6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8
++8 8 8 10 10 10 11 11 11 20 20 20 32 32 32 36 36 36 24 24 24 4 4 4
++21 21 21 17 17 17 23 23 23 32 32 32 31 31 31 23 23 23 28 28 28 40 40 40
++33 33 33 36 36 36 23 23 23 24 24 24 33 33 33 37 37 37 51 51 51 60 60 60
++50 50 50 45 45 45 34 34 34 36 36 36 44 44 44 44 44 44 53 53 53 76 76 76
++69 69 69 58 58 58 51 51 51 53 53 53 57 57 57 58 58 58 68 68 68 81 81 81
++90 90 90 72 72 72 62 62 62 69 69 69 74 74 74 73 73 73 81 81 81 94 94 94
++105 105 105 94 94 94 88 88 88 89 89 89 89 89 89 87 87 87 95 95 94 109 110 110
++121 121 119 121 121 119 115 116 115 105 104 105 103 103 102 112 112 113 125 125 127 133 133 133
++140 140 140 128 128 128 112 112 113 128 128 128 137 138 139 127 127 127 128 128 128 133 133 133
++149 151 153 147 147 148 139 139 139 131 131 131 133 133 133 142 143 144 149 149 149 149 149 149
++161 161 162 152 153 154 149 149 149 157 157 157 157 157 157 149 151 153 149 149 149 155 156 156
++166 167 167 166 167 167 166 167 167 161 161 162 157 157 157 158 159 161 160 161 160 158 159 161
++169 175 167 166 167 167 161 161 162 161 161 162 166 165 167 161 161 162 152 153 154 144 145 144
++149 149 149 144 145 144 139 139 139 134 134 134 133 133 133 133 133 133 129 129 130 128 128 128
++115 116 115 109 110 110 112 112 113 92 92 92 95 95 94 89 89 89 82 82 82 78 78 78
++76 76 76 63 65 67 16 20 21 71 72 74 246 251 251 238 240 244 246 251 251 246 251 251
++238 240 244 238 240 244 231 224 220 180 183 185 180 183 185 238 240 244 238 240 244 246 251 251
++238 240 244 238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 246 251 251 238 240 244
++238 240 244 131 131 131 127 127 127 147 147 148 147 147 148 166 167 167 163 163 163 166 165 167
++161 161 162 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 169 175 167 169 175 167
++163 163 163 158 159 161 160 161 160 166 167 167 166 167 167 163 163 163 157 157 157 152 153 154
++149 151 153 157 157 157 161 161 162 155 156 156 147 147 148 144 145 144 144 145 144 144 145 144
++157 157 157 147 147 148 137 137 137 137 137 137 147 147 148 152 153 154 147 147 148 134 134 134
++128 128 128 125 122 126 127 127 127 134 134 134 134 134 134 125 122 126 115 116 115 112 112 113
++109 110 110 121 121 119 127 127 127 115 116 115 109 110 110 121 121 119 121 121 119 101 101 101
++101 101 101 95 95 94 96 96 96 96 96 96 90 90 90 91 91 91 93 93 93 87 87 87
++76 76 76 68 68 68 78 78 78 95 95 94 87 87 87 72 72 72 74 74 74 85 85 85
++73 73 73 70 70 70 58 58 58 61 61 61 60 60 60 56 56 56 68 68 68 71 71 71
++77 77 77 67 67 67 54 54 54 50 50 50 54 54 54 63 63 63 69 69 69 69 69 69
++69 69 69 67 67 67 70 70 70 68 68 68 57 57 57 49 49 49 40 40 40 27 27 27
++23 23 23 38 38 38 49 49 49 50 50 50 51 51 51 57 57 57 57 57 57 52 52 52
++51 51 51 54 54 54 60 60 60 46 46 46 17 17 17 28 28 28 19 19 19 14 14 14
++21 21 21 42 42 42 51 51 51 50 50 50 50 50 50 48 48 48 44 44 44 48 48 48
++42 42 42 50 50 50 45 45 45 46 46 46 50 50 50 40 40 40 40 40 40 56 56 56
++50 50 50 42 42 42 44 44 44 50 50 50 49 49 49 48 48 48 49 49 49 44 44 44
++50 50 50 52 52 52 53 53 53 50 50 50 45 45 45 45 45 45 50 50 50 54 54 54
++40 40 40 36 36 36 16 16 16 4 4 4 4 4 4 20 20 20 33 33 33 14 14 14
++14 14 14 10 10 10 13 13 13 17 17 17 14 14 14 11 11 11 23 23 23 38 38 38
++31 31 31 39 39 39 32 32 32 11 11 11 4 4 4 17 17 17 17 17 17 4 4 4
++11 11 11 17 17 17 28 28 28 42 42 42 49 49 49 49 49 49 44 44 44 39 39 39
++39 39 39 38 38 38 49 49 49 56 56 56 46 46 46 39 39 39 43 43 43 44 44 44
++36 36 36 39 39 39 39 39 39 34 34 34 34 34 34 40 40 40 43 43 43 39 39 39
++42 42 42 40 40 40 39 39 39 40 40 40 40 40 40 40 40 40 42 42 42 43 43 43
++40 40 40 37 37 37 45 45 45 44 44 44 36 36 36 23 23 23 8 8 8 20 20 20
++10 10 10 11 11 11 13 13 13 16 16 16 25 25 25 31 31 31 24 24 24 13 13 13
++13 13 13 13 13 13 11 11 11 10 10 10 10 10 10 11 11 11 13 13 13 13 13 13
++
++36 36 36 36 36 36 29 29 29 20 20 20 16 16 16 17 17 17 17 17 17 16 16 16
++20 20 20 32 32 32 33 33 33 20 20 20 13 13 13 19 19 19 21 21 21 14 14 14
++19 19 19 25 25 25 31 31 31 31 31 31 25 25 25 17 17 17 6 6 6 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 4 4 4 8 8 8 10 10 10 11 11 11 8 8 8 6 6 6 4 4 4
++4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 6 6 6 6 6 6
++10 10 10 3 3 3 14 14 14 34 34 34 34 34 34 17 17 17 10 10 10 19 19 19
++27 27 27 23 23 23 19 19 19 32 32 32 46 46 46 38 38 38 21 21 21 23 23 23
++57 57 57 43 43 43 24 24 24 23 23 23 40 40 40 52 52 52 46 46 46 33 33 33
++73 73 73 48 48 48 42 42 42 34 34 34 36 36 36 56 56 56 73 73 73 59 59 59
++88 88 88 68 68 68 59 59 59 51 51 51 49 49 49 54 54 54 66 66 66 90 90 90
++96 96 96 88 88 88 72 72 72 68 68 68 73 73 73 70 70 70 73 73 73 90 90 90
++105 105 105 112 112 113 93 93 93 80 80 80 89 89 89 92 92 92 89 89 89 99 99 99
++115 116 115 127 127 127 121 121 119 99 99 99 105 105 105 128 128 128 125 122 126 115 116 115
++129 129 130 137 137 137 140 140 140 134 134 134 127 127 127 121 121 119 127 127 127 134 134 134
++144 145 144 149 149 149 147 147 148 140 140 140 137 138 139 144 145 144 145 146 147 142 143 144
++144 145 144 161 161 162 163 163 163 149 149 149 144 145 144 147 147 148 152 153 154 161 161 162
++163 163 163 169 175 167 166 167 167 160 161 160 158 159 161 157 157 157 161 161 162 158 159 161
++163 163 163 166 167 167 166 167 167 166 167 167 169 175 167 161 161 162 155 156 156 152 153 154
++152 153 154 152 153 154 155 156 156 149 149 149 142 143 144 144 145 144 142 143 144 131 131 131
++125 125 127 127 127 127 121 121 119 115 116 115 103 103 102 94 94 94 94 94 94 87 87 87
++71 72 74 60 61 64 8 10 13 8 10 13 147 147 148 238 240 244 238 240 244 238 240 244
++238 240 244 238 240 244 238 240 244 238 240 244 200 220 210 238 240 244 238 240 244 246 251 251
++238 240 244 246 251 251 238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244
++238 240 244 187 210 182 134 134 134 142 143 144 155 156 156 158 159 161 169 175 167 161 161 162
++166 167 167 166 167 167 166 167 167 163 163 163 163 163 163 169 175 167 169 175 167 161 161 162
++158 159 161 160 161 160 158 159 161 158 159 161 163 163 163 166 167 167 161 161 162 155 156 156
++149 151 153 149 151 153 155 156 156 158 159 161 157 157 157 147 147 148 142 143 144 142 143 144
++139 139 139 155 156 156 149 149 149 134 134 134 137 138 139 147 147 148 145 146 147 144 145 144
++137 137 137 129 129 130 121 121 119 121 121 119 128 128 128 133 133 133 127 127 127 115 116 115
++109 110 110 109 110 110 121 121 119 125 125 127 117 117 117 115 116 115 109 110 110 101 101 101
++99 99 99 96 97 98 96 97 98 95 95 94 91 91 91 90 90 90 96 97 98 105 105 105
++84 84 84 78 78 78 76 76 76 85 85 85 96 96 96 99 99 99 87 87 87 75 75 75
++66 66 66 65 65 65 61 61 61 62 62 62 70 70 70 80 80 80 82 82 82 77 77 77
++61 61 61 53 53 53 54 54 54 63 63 63 61 61 61 51 51 51 56 56 56 70 70 70
++68 68 68 66 66 66 63 63 63 65 65 65 66 66 66 65 65 65 60 60 60 56 56 56
++32 32 32 42 42 42 44 44 44 40 40 40 45 45 45 57 57 57 59 59 59 52 52 52
++52 52 52 58 58 58 50 50 50 51 51 51 42 42 42 14 14 14 13 13 13 25 25 25
++36 36 36 40 40 40 46 46 46 49 49 49 50 50 50 50 50 50 49 49 49 48 48 48
++50 50 50 49 49 49 46 46 46 42 42 42 38 38 38 39 39 39 43 43 43 46 46 46
++40 40 40 40 40 40 40 40 40 39 39 39 39 39 39 38 38 38 38 38 38 38 38 38
++36 36 36 42 42 42 44 44 44 49 49 49 39 39 39 34 34 34 45 45 45 44 44 44
++32 32 32 21 21 21 17 17 17 11 11 11 20 20 20 8 8 8 32 32 32 19 19 19
++14 14 14 13 13 13 14 14 14 17 17 17 14 14 14 13 13 13 25 25 25 38 38 38
++38 38 38 25 25 25 14 14 14 11 11 11 13 13 13 14 14 14 14 14 14 14 14 14
++11 11 11 32 32 32 44 44 44 39 39 39 36 36 36 44 44 44 51 51 51 50 50 50
++33 33 33 40 40 40 44 44 44 43 43 43 42 42 42 44 44 44 42 42 42 38 38 38
++39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
++39 39 39 39 39 39 38 38 38 38 38 38 38 38 38 38 38 38 39 39 39 42 42 42
++36 36 36 44 44 44 44 44 44 32 32 32 17 17 17 11 11 11 11 11 11 10 10 10
++16 16 16 8 8 8 13 13 13 28 28 28 31 31 31 20 20 20 13 13 13 16 16 16
++14 14 14 11 11 11 11 11 11 16 16 16 13 13 13 13 13 13 24 24 24 38 38 38
++
++21 21 21 34 34 34 37 37 37 24 24 24 14 14 14 17 17 17 21 21 21 20 20 20
++16 16 16 19 19 19 27 27 27 33 33 33 28 28 28 17 17 17 16 16 16 23 23 23
++16 16 16 14 14 14 21 21 21 33 33 33 32 32 32 14 14 14 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 8 8 8 10 10 10
++13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++10 10 10 6 6 6 0 0 0 0 0 0 6 6 6 10 10 10 11 11 11 11 11 11
++0 0 0 17 17 17 34 34 34 37 37 37 23 23 23 8 8 8 14 14 14 28 28 28
++24 24 24 24 24 24 36 36 36 46 46 46 38 38 38 20 20 20 16 16 16 24 24 24
++32 32 32 60 60 60 48 48 48 32 32 32 51 51 51 46 46 46 27 27 27 38 38 38
++33 33 33 71 71 71 59 59 59 43 43 43 45 45 45 72 72 72 57 57 57 44 44 44
++45 45 45 87 87 87 75 75 75 58 58 58 53 53 53 68 68 68 88 88 88 61 61 61
++62 62 62 93 93 93 94 94 94 74 74 74 70 70 70 76 76 76 85 85 85 96 97 98
++88 88 88 101 101 101 112 112 113 103 103 102 87 87 87 87 87 87 99 99 99 109 110 110
++115 116 115 121 121 119 125 122 126 117 117 117 121 121 119 121 121 119 109 110 110 112 112 113
++117 117 117 129 129 130 139 139 139 134 134 134 125 122 126 121 121 119 129 129 130 140 140 140
++134 134 134 140 140 140 144 145 144 147 147 148 144 145 144 139 139 139 137 138 139 139 139 139
++149 149 149 157 157 157 160 161 160 157 157 157 152 153 154 152 153 154 152 153 154 157 157 157
++157 157 157 169 175 167 166 167 167 166 165 167 161 161 162 157 157 157 160 161 160 158 159 161
++157 157 157 166 167 167 166 167 167 169 175 167 169 175 167 161 161 162 157 157 157 157 157 157
++155 156 156 157 157 157 158 159 161 157 157 157 152 153 154 155 156 156 149 151 153 140 140 140
++137 137 137 128 128 128 125 125 127 128 128 128 115 116 115 105 105 105 103 103 102 85 85 85
++87 88 90 20 21 24 14 16 19 11 13 16 25 27 29 200 220 210 246 251 251 238 240 244
++238 240 244 246 251 251 246 251 251 238 240 244 180 183 185 180 183 185 231 224 220 238 240 244
++246 251 251 246 251 251 238 240 244 238 240 244 238 240 244 246 251 251 238 240 244 246 251 251
++238 240 244 238 240 244 149 151 153 142 143 144 157 157 157 152 153 154 180 183 185 161 161 162
++166 167 167 166 167 167 166 165 167 166 165 167 166 167 167 169 175 167 166 167 167 161 161 162
++161 161 162 161 161 162 158 159 161 157 157 157 157 157 157 158 159 161 161 161 162 163 163 163
++152 153 154 149 151 153 149 149 149 155 156 156 157 157 157 152 153 154 145 146 147 140 140 140
++144 145 144 140 140 140 149 149 149 144 145 144 131 131 131 139 139 139 147 147 148 137 137 137
++140 140 140 134 134 134 125 122 126 117 117 117 121 121 119 127 127 127 128 128 128 122 121 126
++109 110 110 105 105 105 109 110 110 117 117 117 115 116 115 109 110 110 105 104 105 99 99 99
++101 101 101 96 96 96 94 94 94 92 92 92 87 87 87 82 82 82 85 85 85 91 91 91
++103 103 102 99 99 99 95 95 94 92 92 92 90 90 90 84 84 84 74 74 74 67 67 67
++68 68 68 72 72 72 76 76 76 77 77 77 81 81 81 83 83 83 80 80 80 75 75 75
++59 59 59 59 59 59 61 61 61 63 63 63 59 59 59 52 52 52 50 50 50 52 52 52
++49 49 49 44 44 44 39 39 39 37 37 37 37 37 37 38 38 38 37 37 37 36 36 36
++46 46 46 43 43 43 34 34 34 27 27 27 27 27 27 32 32 32 31 31 31 25 25 25
++28 28 28 32 32 32 27 27 27 32 32 32 29 29 29 19 19 19 27 27 27 34 34 34
++28 28 28 25 25 25 23 23 23 23 23 23 23 23 23 21 21 21 23 23 23 25 25 25
++21 21 21 21 21 21 21 21 21 20 20 20 21 21 21 25 25 25 32 32 32 37 37 37
++20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 17 17 17
++21 21 21 20 20 20 17 17 17 21 21 21 19 19 19 21 21 21 36 36 36 33 33 33
++23 23 23 14 14 14 13 13 13 10 10 10 13 13 13 13 13 13 23 23 23 10 10 10
++11 11 11 11 11 11 13 13 13 13 13 13 11 11 11 20 20 20 33 33 33 39 39 39
++25 25 25 14 14 14 8 8 8 13 13 13 16 16 16 11 11 11 10 10 10 14 14 14
++34 34 34 32 32 32 29 29 29 28 28 28 31 31 31 38 38 38 46 46 46 52 52 52
++52 52 52 45 45 45 37 37 37 36 36 36 44 44 44 52 52 52 48 48 48 38 38 38
++39 39 39 39 39 39 38 38 38 39 39 39 40 40 40 40 40 40 39 39 39 39 39 39
++40 40 40 40 40 40 39 39 39 38 38 38 38 38 38 38 38 38 39 39 39 40 40 40
++42 42 42 37 37 37 28 28 28 19 19 19 14 14 14 14 14 14 14 14 14 13 13 13
++8 8 8 19 19 19 29 29 29 31 31 31 23 23 23 14 14 14 11 11 11 13 13 13
++8 8 8 14 14 14 16 16 16 13 13 13 16 16 16 24 24 24 25 25 25 20 20 20
++
++14 14 14 27 27 27 36 36 36 34 34 34 27 27 27 20 20 20 17 17 17 17 17 17
++11 11 11 11 11 11 21 21 21 36 36 36 38 38 38 27 27 27 17 17 17 19 19 19
++14 14 14 13 13 13 17 17 17 25 25 25 27 27 27 17 17 17 4 4 4 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 8 8 8 11 11 11 13 13 13
++10 10 10 8 8 8 6 6 6 4 4 4 4 4 4 6 6 6 10 10 10 11 11 11
++13 13 13 10 10 10 4 4 4 0 0 0 4 4 4 10 10 10 11 11 11 10 10 10
++13 13 13 31 31 31 39 39 39 27 27 27 10 10 10 8 8 8 20 20 20 28 28 28
++19 19 19 25 25 25 43 43 43 44 44 44 23 23 23 14 14 14 24 24 24 25 25 25
++19 19 19 45 45 45 61 61 61 59 59 59 48 48 48 32 32 32 25 25 25 32 32 32
++32 32 32 45 45 45 70 70 70 58 58 58 66 66 66 48 48 48 51 51 51 39 39 39
++45 45 45 57 57 57 84 84 84 69 69 69 67 67 67 82 82 82 63 63 63 61 61 61
++59 59 59 67 67 67 99 99 99 99 99 99 69 69 69 82 82 82 101 101 101 80 80 80
++71 71 71 88 88 88 105 105 105 109 110 110 96 96 96 95 95 94 105 105 105 112 112 113
++96 96 96 99 99 99 115 116 115 127 127 127 127 127 127 112 112 113 99 99 99 112 112 113
++125 122 126 129 129 130 137 138 139 139 139 139 133 133 133 129 129 130 133 133 133 137 137 137
++125 122 126 129 129 130 142 143 144 152 153 154 149 151 153 140 140 140 137 138 139 142 143 144
++152 153 154 147 147 148 152 153 154 158 159 161 161 161 162 157 157 157 152 153 154 149 149 149
++157 157 157 166 167 167 166 167 167 166 165 167 166 165 167 161 161 162 161 161 162 157 157 157
++155 156 156 163 163 163 166 167 167 169 175 167 169 175 167 166 167 167 163 163 163 161 161 162
++158 159 161 161 161 162 163 163 163 163 163 163 163 163 163 163 163 163 158 159 161 147 147 148
++144 145 144 139 139 139 133 133 133 137 137 137 128 128 128 117 117 117 109 110 110 96 96 96
++71 72 74 8 10 13 20 21 24 0 0 4 0 0 4 73 74 76 246 251 251 238 240 244
++238 240 244 238 240 244 246 251 251 246 251 251 238 240 244 200 220 210 238 240 244 238 240 244
++238 240 244 238 240 244 238 240 244 238 240 244 238 240 244 246 251 251 238 240 244 238 240 244
++238 240 244 246 251 251 200 220 210 139 140 142 152 153 154 166 165 167 166 167 167 169 175 167
++166 165 167 166 167 167 166 165 167 166 167 167 169 175 167 166 167 167 166 165 167 161 161 162
++161 161 162 160 161 160 158 159 161 157 157 157 152 153 154 152 153 154 158 159 161 166 167 167
++157 157 157 152 153 154 145 146 147 147 147 148 152 153 154 157 157 157 149 151 153 144 145 144
++137 137 137 140 140 140 142 143 144 144 145 144 142 143 144 137 137 137 134 134 134 137 138 139
++137 138 139 137 137 137 129 129 130 121 121 119 115 116 115 117 117 117 125 122 126 128 128 128
++121 121 119 109 110 110 103 103 102 105 105 105 112 112 113 105 105 105 99 99 99 101 101 101
++99 99 99 94 94 94 93 93 93 96 97 98 96 97 98 91 91 91 91 91 91 95 95 94
++109 110 110 105 105 105 103 103 102 93 93 93 83 83 83 74 74 74 71 71 71 71 71 71
++81 81 81 83 83 83 84 84 84 84 84 84 84 84 84 84 84 84 82 82 82 77 77 77
++58 58 58 62 62 62 61 61 61 54 54 54 51 51 51 51 51 51 48 48 48 40 40 40
++43 43 43 44 44 44 45 45 45 46 46 46 46 46 46 46 46 46 44 44 44 43 43 43
++49 49 49 40 40 40 33 33 33 29 29 29 25 25 25 24 24 24 29 29 29 38 38 38
++33 33 33 34 34 34 29 29 29 33 33 33 32 32 32 31 31 31 37 37 37 31 31 31
++19 19 19 14 14 14 16 16 16 24 24 24 31 31 31 29 29 29 28 28 28 29 29 29
++28 28 28 28 28 28 28 28 28 27 27 27 27 27 27 29 29 29 34 34 34 38 38 38
++27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 25 25 25 25 25 25 25 25 25
++31 31 31 28 28 28 24 24 24 31 31 31 32 32 32 33 33 33 40 40 40 31 31 31
++16 16 16 11 11 11 10 10 10 11 11 11 10 10 10 24 24 24 16 16 16 6 6 6
++14 14 14 10 10 10 10 10 10 10 10 10 17 17 17 33 33 33 38 38 38 28 28 28
++14 14 14 8 8 8 10 10 10 14 14 14 13 13 13 8 8 8 14 14 14 28 28 28
++43 43 43 31 31 31 23 23 23 24 24 24 25 25 25 20 20 20 24 24 24 34 34 34
++51 51 51 49 49 49 43 43 43 39 39 39 40 40 40 46 46 46 49 49 49 49 49 49
++42 42 42 39 39 39 38 38 38 38 38 38 40 40 40 42 42 42 40 40 40 39 39 39
++42 42 42 42 42 42 39 39 39 39 39 39 39 39 39 39 39 39 40 40 40 40 40 40
++43 43 43 28 28 28 13 13 13 8 8 8 14 14 14 16 16 16 13 13 13 10 10 10
++13 13 13 29 29 29 34 34 34 23 23 23 11 11 11 11 11 11 13 13 13 10 10 10
++8 8 8 13 13 13 14 14 14 14 14 14 21 21 21 28 28 28 24 24 24 13 13 13
++
++21 21 21 16 16 16 23 23 23 38 38 38 42 42 42 28 28 28 13 13 13 8 8 8
++11 11 11 19 19 19 21 21 21 24 24 24 32 32 32 38 38 38 29 29 29 10 10 10
++14 14 14 23 23 23 21 21 21 10 10 10 11 11 11 21 21 21 21 21 21 10 10 10
++0 0 0 0 0 0 4 4 4 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 6 6 6 11 11 11 11 11 11 10 10 10
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4
++11 11 11 14 14 14 14 14 14 10 10 10 6 6 6 8 8 8 10 10 10 8 8 8
++37 37 37 33 33 33 21 21 21 6 6 6 6 6 6 20 20 20 25 25 25 20 20 20
++25 25 25 32 32 32 33 33 33 21 21 21 11 11 11 23 23 23 29 29 29 19 19 19
++23 23 23 27 27 27 51 51 51 65 65 65 49 49 49 31 31 31 29 29 29 29 29 29
++38 38 38 34 34 34 44 44 44 87 87 87 61 61 61 51 51 51 33 33 33 48 48 48
++53 53 53 45 45 45 52 52 52 87 87 87 91 91 91 63 63 63 56 56 56 60 60 60
++65 65 65 67 67 67 71 71 71 89 89 89 105 105 105 94 94 94 74 74 74 72 72 72
++76 76 76 83 83 83 83 83 83 93 93 93 112 112 113 112 112 113 101 101 101 99 99 99
++92 92 92 99 99 99 115 116 115 125 125 127 128 128 128 121 121 119 112 112 113 121 121 119
++128 128 128 121 121 119 121 121 119 129 129 130 139 139 139 140 140 140 133 133 133 121 121 119
++125 125 127 131 131 131 142 143 144 149 149 149 149 149 149 147 147 148 145 146 147 145 146 147
++147 147 148 139 139 139 142 143 144 155 156 156 161 161 162 163 163 163 157 157 157 144 145 144
++161 161 162 166 167 167 157 157 157 158 159 161 166 167 167 166 167 167 166 167 167 157 157 157
++161 161 162 161 161 162 160 161 160 169 175 167 180 183 185 169 175 167 166 167 167 163 163 163
++163 163 163 163 163 163 163 163 163 166 165 167 166 167 167 166 167 167 163 163 163 152 153 154
++149 149 149 152 153 154 142 143 144 137 137 137 134 134 134 127 127 127 117 117 117 109 110 110
++35 36 38 11 13 16 14 16 19 14 16 19 14 16 19 1 3 7 142 143 144 246 251 251
++246 251 251 238 240 244 238 240 244 238 240 244 238 240 244 180 183 185 180 183 185 200 220 210
++238 240 244 238 240 244 238 240 244 238 240 244 238 240 244 246 251 251 246 251 251 246 251 251
++238 240 244 246 251 251 238 240 244 180 183 185 149 149 149 161 161 162 169 175 167 169 175 167
++163 163 163 166 167 167 166 165 167 166 167 167 169 175 167 166 167 167 158 159 161 161 161 162
++158 159 161 157 157 157 157 157 157 158 159 161 155 156 156 149 151 153 152 153 154 160 161 160
++161 161 162 157 157 157 149 149 149 142 143 144 144 145 144 149 151 153 152 153 154 149 149 149
++133 133 133 140 140 140 137 137 137 139 139 139 147 147 148 140 140 140 133 133 133 142 143 144
++129 129 130 131 131 131 134 134 134 133 133 133 121 121 119 112 112 113 115 116 115 125 122 126
++128 128 128 121 121 119 105 105 105 103 103 102 109 110 110 105 104 105 99 99 99 105 104 105
++96 96 96 93 93 93 96 96 96 105 105 105 109 110 110 105 105 105 105 104 105 105 105 105
++101 101 101 99 99 99 93 93 93 85 85 85 75 75 75 73 73 73 77 77 77 83 83 83
++90 90 90 87 87 87 84 84 84 83 83 83 83 83 83 83 83 83 80 80 80 76 76 76
++68 68 68 67 67 67 58 58 58 45 45 45 42 42 42 46 46 46 48 48 48 42 42 42
++45 45 45 49 49 49 52 52 52 56 56 56 58 58 58 59 59 59 59 59 59 59 59 59
++59 59 59 54 54 54 52 52 52 49 49 49 36 36 36 21 21 21 31 31 31 48 48 48
++54 54 54 54 54 54 52 52 52 51 51 51 45 45 45 44 44 44 43 43 43 19 19 19
++20 20 20 16 16 16 21 21 21 38 38 38 50 50 50 51 51 51 49 49 49 49 49 49
++51 51 51 50 50 50 48 48 48 45 45 45 44 44 44 44 44 44 45 45 45 46 46 46
++49 49 49 48 48 48 48 48 48 46 46 46 46 46 46 45 45 45 44 44 44 44 44 44
++39 39 39 40 40 40 38 38 38 44 44 44 43 43 43 44 44 44 49 49 49 37 37 37
++16 16 16 13 13 13 11 11 11 17 17 17 11 11 11 36 36 36 14 14 14 10 10 10
++20 20 20 10 10 10 8 8 8 19 19 19 32 32 32 40 40 40 32 32 32 10 10 10
++11 11 11 13 13 13 14 14 14 14 14 14 11 11 11 16 16 16 28 28 28 39 39 39
++28 28 28 29 29 29 33 33 33 39 39 39 37 37 37 20 20 20 11 11 11 21 21 21
++37 37 37 42 42 42 45 45 45 42 42 42 38 38 38 39 39 39 45 45 45 51 51 51
++45 45 45 43 43 43 38 38 38 38 38 38 39 39 39 40 40 40 40 40 40 39 39 39
++42 42 42 40 40 40 39 39 39 39 39 39 40 40 40 40 40 40 40 40 40 40 40 40
++36 36 36 23 23 23 11 11 11 13 13 13 16 16 16 13 13 13 10 10 10 11 11 11
++31 31 31 31 31 31 23 23 23 8 8 8 6 6 6 17 17 17 17 17 17 8 8 8
++16 16 16 10 10 10 11 11 11 23 23 23 28 28 28 27 27 27 24 24 24 27 27 27
++
++21 21 21 13 13 13 13 13 13 27 27 27 37 37 37 36 36 36 24 24 24 13 13 13
++13 13 13 23 23 23 23 23 23 13 13 13 20 20 20 36 36 36 37 37 37 23 23 23
++16 16 16 24 24 24 19 19 19 0 0 0 0 0 0 14 14 14 24 24 24 20 20 20
++11 11 11 0 0 0 0 0 0 4 4 4 6 6 6 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 3 3 3 8 8 8 11 11 11 11 11 11 8 8 8 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 6 6 6
++4 4 4 14 14 14 19 19 19 10 10 10 3 3 3 6 6 6 14 14 14 19 19 19
++36 36 36 23 23 23 4 4 4 0 0 0 13 13 13 25 25 25 25 25 25 20 20 20
++38 38 38 34 34 34 20 20 20 8 8 8 17 17 17 21 21 21 16 16 16 13 13 13
++31 31 31 40 40 40 32 32 32 37 37 37 57 57 57 48 48 48 28 28 28 36 36 36
++28 28 28 48 48 48 59 59 59 44 44 44 82 82 82 60 60 60 49 49 49 42 42 42
++42 42 42 52 52 52 59 59 59 80 80 80 87 87 87 75 75 75 68 68 68 54 54 54
++65 65 65 63 63 63 65 65 65 85 85 85 105 105 105 99 99 99 77 77 77 72 72 72
++83 83 83 81 81 81 76 76 76 91 91 91 115 116 115 117 117 117 101 101 101 88 88 88
++99 99 99 105 105 105 112 112 113 109 110 110 117 117 117 128 128 128 125 122 126 125 125 127
++117 117 117 109 110 110 112 112 113 127 127 127 137 138 139 144 145 144 140 140 140 127 127 127
++134 134 134 140 140 140 139 139 139 134 134 134 140 140 140 152 153 154 152 153 154 145 146 147
++139 139 139 137 138 139 144 145 144 149 151 153 152 153 154 157 157 157 158 159 161 149 151 153
++163 163 163 163 163 163 152 153 154 152 153 154 163 163 163 166 167 167 166 167 167 163 163 163
++163 163 163 158 159 161 157 157 157 166 167 167 169 175 167 166 167 167 169 175 167 166 167 167
++166 167 167 166 165 167 161 161 162 163 163 163 166 167 167 169 175 167 166 167 167 161 161 162
++155 156 156 157 157 157 149 149 149 142 143 144 137 137 137 137 137 137 127 127 127 93 93 93
++10 11 14 11 13 16 6 8 11 20 21 24 6 8 11 24 25 28 20 21 24 200 220 210
++238 240 244 238 240 244 246 251 251 246 251 251 252 251 251 238 240 244 200 220 210 238 240 244
++238 240 244 252 251 251 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244 238 240 244
++238 240 244 238 240 244 238 240 244 231 246 232 152 153 154 160 161 160 163 163 163 169 175 167
++163 163 163 166 167 167 166 165 167 166 167 167 169 175 167 163 163 163 157 157 157 161 161 162
++160 161 160 157 157 157 157 157 157 157 157 157 157 157 157 152 153 154 149 149 149 152 153 154
++155 156 156 157 157 157 155 156 156 145 146 147 140 140 140 144 145 144 149 149 149 149 151 153
++147 147 148 134 134 134 137 137 137 139 139 139 133 133 133 140 140 140 147 147 148 137 138 139
++133 133 133 127 127 127 128 128 128 137 137 137 133 133 133 117 117 117 109 110 110 112 112 113
++122 121 126 127 127 127 115 116 115 105 105 105 105 105 105 105 105 105 101 101 101 103 103 102
++96 96 96 96 96 96 101 101 101 109 110 110 112 112 113 109 110 110 105 105 105 105 104 105
++99 99 99 93 93 93 85 85 85 78 78 78 75 75 75 77 77 77 84 84 84 88 88 88
++87 87 87 87 87 87 87 87 87 84 84 84 78 78 78 72 72 72 69 69 69 68 68 68
++63 63 63 59 59 59 50 50 50 45 45 45 50 50 50 59 59 59 67 67 67 70 70 70
++58 58 58 56 56 56 52 52 52 50 50 50 50 50 50 53 53 53 58 58 58 61 61 61
++62 62 62 60 60 60 61 61 61 59 59 59 44 44 44 24 24 24 24 24 24 36 36 36
++53 53 53 57 57 57 56 56 56 54 54 54 49 49 49 51 51 51 49 49 49 23 23 23
++24 24 24 16 16 16 16 16 16 28 28 28 43 43 43 49 49 49 50 50 50 50 50 50
++49 49 49 49 49 49 48 48 48 46 46 46 46 46 46 48 48 48 48 48 48 48 48 48
++49 49 49 49 49 49 48 48 48 46 46 46 44 44 44 43 43 43 42 42 42 42 42 42
++39 39 39 42 42 42 39 39 39 40 40 40 39 39 39 44 44 44 54 54 54 48 48 48
++16 16 16 14 14 14 11 11 11 19 19 19 16 16 16 37 37 37 14 14 14 14 14 14
++13 13 13 10 10 10 16 16 16 33 33 33 45 45 45 39 39 39 21 21 21 4 4 4
++13 13 13 16 16 16 13 13 13 11 11 11 20 20 20 31 31 31 34 34 34 32 32 32
++20 20 20 33 33 33 43 43 43 49 49 49 52 52 52 44 44 44 33 33 33 33 33 33
++36 36 36 29 29 29 24 24 24 29 29 29 38 38 38 44 44 44 43 43 43 39 39 39
++50 50 50 45 45 45 40 40 40 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39
++39 39 39 38 38 38 38 38 38 39 39 39 42 42 42 42 42 42 39 39 39 37 37 37
++21 21 21 17 17 17 16 16 16 17 17 17 14 14 14 10 10 10 16 16 16 25 25 25
++36 36 36 24 24 24 10 10 10 4 4 4 11 11 11 19 19 19 17 17 17 11 11 11
++13 13 13 14 14 14 21 21 21 32 32 32 34 34 34 31 31 31 32 32 32 39 39 39
++
++13 13 13 19 19 19 16 16 16 8 8 8 17 17 17 34 34 34 37 37 37 29 29 29
++17 17 17 19 19 19 20 20 20 17 17 17 16 16 16 21 21 21 32 32 32 42 42 42
++23 23 23 16 16 16 8 8 8 4 4 4 0 0 0 0 0 0 8 8 8 20 20 20
++28 28 28 6 6 6 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 8 8 8 11 11 11 11 11 11 8 8 8 3 3 3 0 0 0
++3 3 3 4 4 4 6 6 6 8 8 8 8 8 8 8 8 8 6 6 6 6 6 6
++0 0 0 13 13 13 14 14 14 6 6 6 3 3 3 13 13 13 24 24 24 28 28 28
++11 11 11 8 8 8 8 8 8 13 13 13 17 17 17 20 20 20 24 24 24 27 27 27
++32 32 32 21 21 21 8 8 8 16 16 16 28 28 28 16 16 16 10 10 10 31 31 31
++44 44 44 43 43 43 29 29 29 23 23 23 42 42 42 56 56 56 49 49 49 36 36 36
++39 39 39 62 62 62 45 45 45 43 43 43 44 44 44 81 81 81 66 66 66 51 51 51
++44 44 44 59 59 59 81 81 81 56 56 56 58 58 58 90 90 90 80 80 80 72 72 72
++59 59 59 60 60 60 87 87 87 91 91 91 72 72 72 91 91 91 105 105 105 81 81 81
++76 76 76 73 73 73 90 90 90 105 104 105 103 103 102 105 105 105 112 112 113 105 104 105
++103 103 102 105 105 105 105 104 105 94 94 94 105 105 105 128 128 128 128 128 128 127 127 127
++112 112 113 112 112 113 122 121 126 129 129 130 128 128 128 134 134 134 142 143 144 140 140 140
++137 137 137 137 137 137 131 131 131 125 125 127 133 133 133 149 151 153 155 156 156 149 149 149
++137 138 139 144 145 144 152 153 154 149 151 153 145 146 147 149 149 149 158 159 161 161 161 162
++161 161 162 163 163 163 152 153 154 149 151 153 155 156 156 157 157 157 166 167 167 166 167 167
++161 161 162 157 157 157 160 161 160 169 175 167 166 167 167 163 163 163 169 175 167 169 175 167
++166 167 167 166 167 167 163 163 163 166 165 167 169 175 167 180 183 185 169 175 167 169 175 167
++166 165 167 152 153 154 152 153 154 152 153 154 139 139 139 144 145 144 125 125 127 52 52 52
++8 10 13 11 13 16 14 16 19 0 0 4 14 16 19 8 10 13 6 8 11 96 97 98
++238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244 180 183 185 200 220 210
++200 220 210 231 246 232 238 240 244 238 240 244 246 251 251 238 240 244 246 251 251 238 240 244
++246 251 251 238 240 244 246 251 251 238 240 244 200 220 210 152 153 154 157 157 157 169 175 167
++166 167 167 166 167 167 166 167 167 166 167 167 166 167 167 161 161 162 157 157 157 160 161 160
++161 161 162 157 157 157 152 153 154 152 153 154 152 153 154 152 153 154 149 149 149 147 147 148
++145 146 147 152 153 154 157 157 157 152 153 154 144 145 144 142 143 144 142 143 144 144 145 144
++155 156 156 147 147 148 137 137 137 128 128 128 128 128 128 137 137 137 144 145 144 140 140 140
++142 143 144 127 127 127 121 121 119 128 128 128 133 133 133 127 127 127 112 112 113 105 105 105
++105 105 105 117 117 117 117 117 117 109 110 110 105 105 105 105 105 105 103 103 102 99 99 99
++96 97 98 103 103 102 105 105 105 109 110 110 112 112 113 112 112 113 105 105 105 103 103 102
++96 96 96 89 89 89 82 82 82 80 80 80 83 83 83 88 88 88 91 91 91 91 91 91
++87 87 87 87 87 87 85 85 85 77 77 77 67 67 67 60 60 60 63 63 63 71 71 71
++78 78 78 72 72 72 66 66 66 62 62 62 63 63 63 65 65 65 67 67 67 69 69 69
++71 71 71 68 68 68 62 62 62 58 58 58 54 54 54 53 53 53 52 52 52 51 51 51
++57 57 57 54 54 54 56 56 56 59 59 59 56 56 56 43 43 43 32 32 32 25 25 25
++42 42 42 52 52 52 51 51 51 49 49 49 48 48 48 52 52 52 56 56 56 40 40 40
++21 21 21 16 16 16 14 14 14 24 24 24 39 39 39 49 49 49 49 49 49 45 45 45
++48 48 48 46 46 46 45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 45 45 45
++43 43 43 43 43 43 42 42 42 40 40 40 38 38 38 37 37 37 36 36 36 36 36 36
++38 38 38 43 43 43 42 42 42 43 43 43 39 39 39 42 42 42 48 48 48 36 36 36
++14 14 14 13 13 13 8 8 8 16 16 16 20 20 20 27 27 27 13 13 13 14 14 14
++0 0 0 17 17 17 27 27 27 39 39 39 48 48 48 32 32 32 13 13 13 16 16 16
++14 14 14 11 11 11 8 8 8 16 16 16 31 31 31 39 39 39 29 29 29 10 10 10
++34 34 34 43 43 43 40 40 40 39 39 39 51 51 51 53 53 53 45 45 45 44 44 44
++39 39 39 27 27 27 14 14 14 19 19 19 31 31 31 38 38 38 38 38 38 37 37 37
++48 48 48 46 46 46 44 44 44 40 40 40 39 39 39 38 38 38 38 38 38 39 39 39
++38 38 38 37 37 37 38 38 38 39 39 39 42 42 42 39 39 39 34 34 34 29 29 29
++13 13 13 14 14 14 14 14 14 14 14 14 11 11 11 14 14 14 25 25 25 37 37 37
++24 24 24 16 16 16 10 10 10 14 14 14 16 16 16 14 14 14 13 13 13 16 16 16
++8 8 8 25 25 25 38 38 38 38 38 38 37 37 37 39 39 39 40 40 40 39 39 39
++
++14 14 14 17 17 17 14 14 14 10 10 10 11 11 11 23 23 23 34 34 34 38 38 38
++28 28 28 19 19 19 16 16 16 21 21 21 20 20 20 14 14 14 23 23 23 38 38 38
++34 34 34 17 17 17 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 8 8 8
++24 24 24 17 17 17 6 6 6 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 4 4 4 8 8 8 11 11 11 10 10 10 6 6 6 3 3 3 0 0 0
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3
++3 3 3 10 10 10 11 11 11 6 6 6 13 13 13 23 23 23 25 25 25 20 20 20
++0 0 0 6 6 6 13 13 13 16 16 16 16 16 16 19 19 19 21 21 21 24 24 24
++19 19 19 8 8 8 8 8 8 20 20 20 24 24 24 19 19 19 28 28 28 46 46 46
++43 43 43 27 27 27 29 29 29 29 29 29 21 21 21 42 42 42 60 60 60 51 51 51
++65 65 65 37 37 37 43 43 43 36 36 36 37 37 37 48 48 48 76 76 76 66 66 66
++61 61 61 74 74 74 53 53 53 52 52 52 53 53 53 60 60 60 90 90 90 87 87 87
++61 61 61 88 88 88 87 87 87 68 68 68 70 70 70 81 81 81 89 89 89 99 99 99
++84 84 84 82 82 82 96 97 98 103 103 102 89 89 89 93 93 93 112 112 113 121 121 119
++112 112 113 105 104 105 99 99 99 101 101 101 115 116 115 125 125 127 125 122 126 133 133 133
++121 121 119 121 121 119 125 125 127 122 121 126 112 112 113 121 121 119 134 134 134 140 140 140
++140 140 140 133 133 133 127 127 127 128 128 128 134 134 134 142 143 144 147 147 148 149 151 153
++147 147 148 149 149 149 149 149 149 145 146 147 144 145 144 144 145 144 152 153 154 161 161 162
++161 161 162 163 163 163 155 156 156 149 151 153 152 153 154 152 153 154 160 161 160 166 167 167
++166 167 167 161 161 162 161 161 162 169 175 167 166 167 167 158 159 161 166 167 167 169 175 167
++166 167 167 166 167 167 166 165 167 166 167 167 169 175 167 169 175 167 169 175 167 169 175 167
++169 175 167 157 157 157 157 157 157 157 157 157 147 147 148 142 143 144 105 105 105 14 14 14
++14 16 19 6 8 11 22 23 26 8 10 13 0 0 4 20 21 24 6 8 11 6 8 11
++161 161 162 238 240 244 246 251 251 238 240 244 238 240 244 246 251 251 238 240 244 231 224 220
++200 220 210 200 220 210 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244 238 240 244
++238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 158 159 161 166 167 167 166 167 167
++166 167 167 166 167 167 166 167 167 166 167 167 161 161 162 158 159 161 158 159 161 157 157 157
++157 157 157 155 156 156 152 153 154 149 151 153 149 151 153 152 153 154 149 149 149 147 147 148
++144 145 144 147 147 148 149 151 153 152 153 154 149 151 153 144 145 144 140 140 140 137 138 139
++144 145 144 152 153 154 140 140 140 127 127 127 133 133 133 131 131 131 128 128 128 140 140 140
++145 146 147 134 134 134 121 121 119 117 117 117 125 122 126 128 128 128 122 121 126 112 112 113
++105 104 105 109 110 110 112 112 113 109 110 110 105 104 105 105 104 105 103 103 102 96 96 96
++99 99 99 109 110 110 115 116 115 109 110 110 109 110 110 109 110 110 109 110 110 101 101 101
++87 87 87 83 83 83 80 80 80 84 84 84 91 91 91 96 97 98 96 96 96 93 93 93
++89 89 89 81 81 81 73 73 73 68 68 68 65 65 65 66 66 66 71 71 71 78 78 78
++77 77 77 76 76 76 74 74 74 72 72 72 71 71 71 70 70 70 69 69 69 68 68 68
++69 69 69 67 67 67 66 66 66 65 65 65 62 62 62 57 57 57 50 50 50 44 44 44
++56 56 56 57 57 57 57 57 57 58 58 58 60 60 60 56 56 56 39 39 39 20 20 20
++31 31 31 50 50 50 51 51 51 50 50 50 50 50 50 52 52 52 56 56 56 51 51 51
++21 21 21 21 21 21 20 20 20 24 24 24 39 39 39 53 53 53 54 54 54 48 48 48
++51 51 51 50 50 50 49 49 49 49 49 49 49 49 49 49 49 49 45 45 45 43 43 43
++42 42 42 42 42 42 42 42 42 40 40 40 40 40 40 40 40 40 39 39 39 39 39 39
++36 36 36 40 40 40 39 39 39 42 42 42 39 39 39 38 38 38 34 34 34 10 10 10
++13 13 13 13 13 13 10 10 10 16 16 16 29 29 29 16 16 16 14 14 14 13 13 13
++10 10 10 32 32 32 31 31 31 31 31 31 43 43 43 29 29 29 8 8 8 20 20 20
++14 14 14 10 10 10 14 14 14 28 28 28 34 34 34 29 29 29 17 17 17 8 8 8
++46 46 46 51 51 51 39 39 39 32 32 32 42 42 42 45 45 45 43 43 43 48 48 48
++42 42 42 36 36 36 29 29 29 24 24 24 21 21 21 23 23 23 32 32 32 42 42 42
++42 42 42 44 44 44 46 46 46 45 45 45 43 43 43 39 39 39 39 39 39 39 39 39
++39 39 39 38 38 38 39 39 39 40 40 40 40 40 40 37 37 37 27 27 27 19 19 19
++13 13 13 13 13 13 11 11 11 11 11 11 17 17 17 25 25 25 28 28 28 28 28 28
++13 13 13 11 11 11 13 13 13 16 16 16 14 14 14 11 11 11 13 13 13 17 17 17
++21 21 21 36 36 36 44 44 44 42 42 42 38 38 38 40 40 40 40 40 40 38 38 38
++
++24 24 24 10 10 10 10 10 10 23 23 23 23 23 23 11 11 11 19 19 19 38 38 38
++39 39 39 24 24 24 14 14 14 20 20 20 24 24 24 19 19 19 16 16 16 17 17 17
++45 45 45 29 29 29 8 8 8 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0
++6 6 6 24 24 24 28 28 28 11 11 11 0 0 0 0 0 0 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 8 8 8 10 10 10 6 6 6 4 4 4 3 3 3 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6
++4 4 4 10 10 10 13 13 13 14 14 14 24 24 24 31 31 31 20 20 20 0 0 0
++16 16 16 14 14 14 8 8 8 6 6 6 14 14 14 24 24 24 21 21 21 13 13 13
++17 17 17 14 14 14 17 17 17 14 14 14 8 8 8 24 24 24 44 44 44 48 48 48
++23 23 23 23 23 23 21 21 21 27 27 27 27 27 27 20 20 20 40 40 40 77 77 77
++57 57 57 38 38 38 25 25 25 40 40 40 39 39 39 36 36 36 49 49 49 78 78 78
++82 82 82 54 54 54 49 49 49 51 51 51 54 54 54 57 57 57 63 63 63 89 89 89
++93 93 93 85 85 85 70 70 70 65 65 65 69 69 69 68 68 68 75 75 75 95 95 94
++105 105 105 103 103 102 94 94 94 87 87 87 83 83 83 87 87 87 99 99 99 115 116 115
++121 121 119 96 97 98 94 94 94 109 110 110 117 117 117 109 110 110 103 103 102 122 121 126
++137 137 137 127 127 127 125 122 126 121 121 119 112 112 113 121 121 119 139 139 139 142 143 144
++149 151 153 137 137 137 131 131 131 140 140 140 140 140 140 129 129 130 133 133 133 144 145 144
++160 161 160 149 151 153 139 139 139 140 140 140 145 146 147 144 145 144 144 145 144 152 153 154
++163 163 163 163 163 163 152 153 154 149 151 153 152 153 154 152 153 154 157 157 157 158 159 161
++169 175 167 166 167 167 161 161 162 169 175 167 166 167 167 157 157 157 161 161 162 161 161 162
++169 175 167 169 175 167 166 167 167 166 167 167 169 175 167 166 167 167 163 163 163 166 165 167
++169 175 167 169 175 167 160 161 160 155 156 156 157 157 157 134 134 134 80 80 80 0 0 0
++11 13 16 6 8 11 11 13 16 8 10 13 20 21 24 0 0 4 20 21 24 14 16 19
++37 39 42 200 220 210 238 240 244 238 240 244 246 251 251 238 240 244 246 251 251 231 246 232
++187 210 182 180 183 185 238 240 244 246 251 251 238 240 244 246 251 251 238 240 244 238 240 244
++238 240 244 238 240 244 238 240 244 252 251 251 238 240 244 231 224 220 140 140 140 169 175 167
++166 167 167 166 167 167 166 167 167 166 167 167 157 157 157 157 157 157 161 161 162 157 157 157
++149 149 149 152 153 154 155 156 156 152 153 154 149 151 153 152 153 154 149 149 149 147 147 148
++149 149 149 144 145 144 142 143 144 147 147 148 152 153 154 149 149 149 140 140 140 137 137 137
++137 137 137 137 137 137 144 145 144 144 145 144 129 129 130 127 127 127 129 129 130 129 129 130
++144 145 144 144 145 144 133 133 133 115 116 115 112 112 113 127 127 127 129 129 130 121 121 119
++112 112 113 105 105 105 105 105 105 105 105 105 101 101 101 101 101 101 103 103 102 99 99 99
++101 101 101 115 116 115 121 121 119 109 110 110 101 101 101 103 103 102 101 101 101 92 92 92
++81 81 81 80 80 80 81 81 81 88 88 88 95 95 94 99 99 99 94 94 94 90 90 90
++84 84 84 70 70 70 60 60 60 66 66 66 77 77 77 83 83 83 81 81 81 77 77 77
++73 73 73 76 76 76 76 76 76 72 72 72 70 70 70 71 71 71 70 70 70 65 65 65
++67 67 67 63 63 63 61 61 61 61 61 61 63 63 63 62 62 62 59 59 59 54 54 54
++44 44 44 53 53 53 57 57 57 56 56 56 59 59 59 60 60 60 48 48 48 28 28 28
++17 17 17 45 45 45 51 51 51 51 51 51 53 53 53 50 50 50 51 51 51 51 51 51
++31 31 31 28 28 28 17 17 17 10 10 10 23 23 23 45 45 45 52 52 52 48 48 48
++44 44 44 43 43 43 43 43 43 44 44 44 46 46 46 46 46 46 44 44 44 42 42 42
++38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 40 40 40 40 40 40 40 40 40
++43 43 43 42 42 42 36 36 36 37 37 37 40 40 40 44 44 44 42 42 42 17 17 17
++14 14 14 14 14 14 13 13 13 19 19 19 38 38 38 10 10 10 17 17 17 14 14 14
++27 27 27 45 45 45 27 27 27 14 14 14 38 38 38 33 33 33 8 8 8 16 16 16
++14 14 14 14 14 14 28 28 28 39 39 39 32 32 32 10 10 10 8 8 8 24 24 24
++45 45 45 53 53 53 46 46 46 39 39 39 44 44 44 43 43 43 44 44 44 59 59 59
++46 46 46 43 43 43 38 38 38 32 32 32 23 23 23 19 19 19 27 27 27 39 39 39
++34 34 34 42 42 42 48 48 48 50 50 50 45 45 45 42 42 42 39 39 39 39 39 39
++40 40 40 40 40 40 40 40 40 42 42 42 40 40 40 33 33 33 21 21 21 11 11 11
++17 17 17 13 13 13 10 10 10 13 13 13 25 25 25 33 33 33 24 24 24 8 8 8
++13 13 13 13 13 13 11 11 11 10 10 10 10 10 10 13 13 13 16 16 16 17 17 17
++42 42 42 38 38 38 39 39 39 43 43 43 40 40 40 34 34 34 36 36 36 43 43 43
++
++48 48 48 24 24 24 17 17 17 20 20 20 14 14 14 17 17 17 21 21 21 16 16 16
++36 36 36 33 33 33 25 25 25 17 17 17 16 16 16 19 19 19 19 19 19 14 14 14
++0 0 0 33 33 33 33 33 33 8 8 8 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 8 8 8 23 23 23 25 25 25 13 13 13 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 6 6 6 4 4 4 0 0 0 0 0 0 6 6 6
++4 4 4 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 14 14 14 11 11 11 0 0 0 0 0 0 8 8 8 3 3 3
++0 0 0 10 10 10 8 8 8 0 0 0 3 3 3 13 13 13 11 11 11 0 0 0
++3 3 3 0 0 0 11 11 11 28 28 28 29 29 29 16 16 16 4 4 4 4 4 4
++8 8 8 14 14 14 13 13 13 8 8 8 14 14 14 24 24 24 23 23 23 11 11 11
++16 16 16 8 8 8 13 13 13 16 16 16 24 24 24 44 44 44 44 44 44 19 19 19
++20 20 20 21 21 21 28 28 28 25 25 25 23 23 23 42 42 42 56 56 56 50 50 50
++72 72 72 48 48 48 39 39 39 34 34 34 38 38 38 45 45 45 51 51 51 71 71 71
++82 82 82 67 67 67 48 48 48 48 48 48 56 56 56 52 52 52 57 57 57 77 77 77
++95 95 94 87 87 87 75 75 75 68 68 68 67 67 67 70 70 70 73 73 73 76 76 76
++105 105 105 112 112 113 93 93 93 76 76 76 81 81 81 101 101 101 109 110 110 93 93 93
++112 112 113 121 121 119 115 116 115 112 112 113 101 101 101 105 105 105 105 105 105 112 112 113
++128 128 128 137 138 139 127 127 127 112 112 113 121 121 119 129 129 130 125 125 127 121 121 119
++134 134 134 147 147 148 144 145 144 129 129 130 127 127 127 129 129 130 134 134 134 140 140 140
++147 147 148 155 156 156 152 153 154 142 143 144 137 137 137 142 143 144 144 145 144 144 145 144
++158 159 161 166 167 167 157 157 157 152 153 154 152 153 154 152 153 154 155 156 156 155 156 156
++157 157 157 166 165 167 169 175 167 166 167 167 158 159 161 158 159 161 163 163 163 160 161 160
++158 159 161 169 175 167 180 183 185 166 167 167 166 167 167 166 167 167 166 167 167 166 167 167
++166 165 167 166 167 167 166 167 167 160 161 160 149 149 149 126 132 129 2 8 7 6 13 11
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++10 11 14 89 90 92 238 240 244 238 240 244 246 251 251 238 240 244 246 251 251 238 240 244
++169 175 167 200 220 210 200 220 210 238 240 244 238 240 244 246 251 251 246 251 251 238 240 244
++246 251 251 238 240 244 246 251 251 238 240 244 246 251 251 238 240 244 180 183 185 149 151 153
++169 175 167 166 167 167 169 175 167 155 156 156 166 167 167 149 151 153 157 157 157 155 156 156
++152 153 154 152 153 154 152 153 154 149 151 153 149 149 149 149 149 149 147 147 148 147 147 148
++142 143 144 145 146 147 144 145 144 137 138 139 144 145 144 157 157 157 152 153 154 137 138 139
++131 131 131 133 133 133 139 139 139 142 143 144 139 139 139 129 129 130 122 121 126 122 121 126
++125 122 126 137 137 137 142 143 144 122 121 126 109 110 110 109 110 110 115 116 115 133 133 133
++128 128 128 115 116 115 105 105 105 103 103 102 105 105 105 103 103 102 91 91 91 101 101 101
++109 110 110 109 110 110 112 112 113 112 112 113 112 112 113 103 103 102 94 94 94 87 87 87
++76 76 76 81 81 81 93 93 93 99 99 99 93 93 93 94 94 94 94 94 94 85 85 85
++58 58 58 73 73 73 81 81 81 76 76 76 73 73 73 77 77 77 80 80 80 80 80 80
++75 75 75 75 75 75 73 73 73 70 70 70 68 68 68 69 69 69 68 68 68 67 67 67
++62 62 62 61 61 61 62 62 62 61 61 61 63 63 63 65 65 65 59 59 59 58 58 58
++46 46 46 40 40 40 57 57 57 61 61 61 50 50 50 58 58 58 60 60 60 39 39 39
++40 40 40 44 44 44 52 52 52 57 57 57 51 51 51 50 50 50 53 53 53 53 53 53
++42 42 42 20 20 20 14 14 14 13 13 13 19 19 19 43 43 43 54 54 54 44 44 44
++46 46 46 48 48 48 48 48 48 44 44 44 42 42 42 40 40 40 40 40 40 42 42 42
++42 42 42 38 38 38 38 38 38 42 42 42 43 43 43 40 40 40 40 40 40 45 45 45
++42 42 42 39 39 39 40 40 40 39 39 39 38 38 38 43 43 43 36 36 36 13 13 13
++19 19 19 14 14 14 6 6 6 21 21 21 34 34 34 16 16 16 4 4 4 31 31 31
++40 40 40 29 29 29 16 16 16 19 19 19 37 37 37 17 17 17 16 16 16 11 11 11
++10 10 10 33 33 33 38 38 38 27 27 27 17 17 17 11 11 11 13 13 13 23 23 23
++38 38 38 40 40 40 46 46 46 51 51 51 48 48 48 40 40 40 39 39 39 45 45 45
++56 56 56 49 49 49 40 40 40 37 37 37 36 36 36 34 34 34 33 33 33 34 34 34
++20 20 20 42 42 42 42 42 42 38 38 38 54 54 54 54 54 54 40 40 40 37 37 37
++46 46 46 38 38 38 37 37 37 43 43 43 40 40 40 27 27 27 14 14 14 13 13 13
++14 14 14 4 4 4 10 10 10 28 28 28 33 33 33 23 23 23 14 14 14 16 16 16
++19 19 19 14 14 14 14 14 14 16 16 16 13 13 13 13 13 13 24 24 24 39 39 39
++39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
++
++27 27 27 43 43 43 29 29 29 11 11 11 23 23 23 20 20 20 10 10 10 20 20 20
++20 20 20 36 36 36 39 39 39 24 24 24 13 13 13 16 16 16 11 11 11 0 0 0
++6 6 6 0 0 0 24 24 24 33 33 33 10 10 10 0 0 0 8 8 8 0 0 0
++3 3 3 0 0 0 4 4 4 23 23 23 29 29 29 19 19 19 4 4 4 0 0 0
++6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 14 14 14 11 11 11 0 0 0 0 0 0 8 8 8 3 3 3
++0 0 0 8 8 8 6 6 6 0 0 0 0 0 0 8 8 8 11 11 11 8 8 8
++3 3 3 10 10 10 19 19 19 20 20 20 13 13 13 4 4 4 4 4 4 11 11 11
++4 4 4 6 6 6 13 13 13 23 23 23 29 29 29 27 27 27 19 19 19 13 13 13
++14 14 14 19 19 19 8 8 8 20 20 20 46 46 46 39 39 39 17 17 17 23 23 23
++19 19 19 29 29 29 21 21 21 19 19 19 42 42 42 53 53 53 43 43 43 31 31 31
++39 39 39 69 69 69 52 52 52 40 40 40 39 39 39 51 51 51 72 72 72 49 49 49
++46 46 46 75 75 75 74 74 74 51 51 51 49 49 49 58 58 58 69 69 69 82 82 82
++65 65 65 82 82 82 85 85 85 74 74 74 65 65 65 59 59 59 70 70 70 92 92 92
++93 93 93 95 95 94 109 110 110 91 91 91 91 91 91 109 110 110 94 94 94 91 91 91
++95 95 94 112 112 113 121 121 119 117 117 117 99 99 99 101 101 101 109 110 110 122 121 126
++112 112 113 125 125 127 127 127 127 125 125 127 128 128 128 125 122 126 117 117 117 121 121 119
++129 129 130 140 140 140 145 146 147 140 140 140 133 133 133 129 129 130 134 134 134 144 145 144
++137 138 139 145 146 147 152 153 154 149 149 149 144 145 144 142 143 144 144 145 144 144 145 144
++155 156 156 163 163 163 158 159 161 158 159 161 157 157 157 149 149 149 149 149 149 152 153 154
++152 153 154 157 157 157 166 167 167 169 175 167 163 163 163 157 157 157 160 161 160 161 161 162
++161 161 162 166 165 167 166 167 167 166 167 167 169 175 167 166 167 167 163 163 163 166 165 167
++166 165 167 163 163 163 169 175 167 157 157 157 157 157 157 66 69 71 10 16 15 6 13 11
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++11 13 16 1 3 7 166 167 167 238 240 244 238 240 244 246 251 251 238 240 244 238 240 244
++246 251 251 238 240 244 200 220 210 238 240 244 238 240 244 238 240 244 238 240 244 238 240 244
++238 240 244 238 240 244 246 251 251 246 251 251 238 240 244 238 240 244 231 224 220 149 151 153
++166 167 167 169 175 167 161 161 162 157 157 157 152 153 154 166 167 167 145 146 147 157 157 157
++152 153 154 152 153 154 152 153 154 149 151 153 149 149 149 147 147 148 147 147 148 145 146 147
++142 143 144 144 145 144 144 145 144 139 139 139 137 137 137 142 143 144 145 146 147 147 147 148
++134 134 134 129 129 130 129 129 130 133 133 133 137 137 137 134 134 134 127 127 127 121 121 119
++117 117 117 127 127 127 134 134 134 125 125 127 115 116 115 109 110 110 109 110 110 127 127 127
++125 122 126 112 112 113 105 105 105 101 101 101 105 104 105 103 103 102 95 95 94 105 105 105
++112 112 113 112 112 113 109 110 110 109 110 110 105 105 105 99 99 99 89 89 89 80 80 80
++78 78 78 92 92 92 99 99 99 95 95 94 94 94 94 93 93 93 83 83 83 70 70 70
++72 72 72 78 78 78 82 82 82 81 81 81 81 81 81 82 82 82 80 80 80 74 74 74
++75 75 75 74 74 74 74 74 74 76 76 76 76 76 76 71 71 71 65 65 65 61 61 61
++63 63 63 59 59 59 58 58 58 58 58 58 59 59 59 60 60 60 59 59 59 61 61 61
++57 57 57 45 45 45 50 50 50 60 60 60 59 59 59 56 56 56 54 54 54 53 53 53
++42 42 42 33 33 33 43 43 43 56 56 56 52 52 52 48 48 48 50 50 50 52 52 52
++50 50 50 31 31 31 23 23 23 20 20 20 20 20 20 37 37 37 48 48 48 40 40 40
++48 48 48 46 46 46 44 44 44 39 39 39 37 37 37 37 37 37 40 40 40 44 44 44
++43 43 43 39 39 39 38 38 38 39 39 39 39 39 39 38 38 38 39 39 39 43 43 43
++39 39 39 38 38 38 39 39 39 38 38 38 37 37 37 42 42 42 33 33 33 13 13 13
++10 10 10 11 11 11 11 11 11 21 21 21 31 31 31 23 23 23 21 21 21 38 38 38
++29 29 29 17 17 17 11 11 11 24 24 24 39 39 39 13 13 13 10 10 10 13 13 13
++25 25 25 33 33 33 28 28 28 16 16 16 10 10 10 10 10 10 20 20 20 37 37 37
++38 38 38 38 38 38 40 40 40 44 44 44 44 44 44 40 40 40 37 37 37 36 36 36
++42 42 42 51 51 51 52 52 52 43 43 43 38 38 38 39 39 39 33 33 33 21 21 21
++21 21 21 33 33 33 37 37 37 38 38 38 45 45 45 50 50 50 46 46 46 42 42 42
++40 40 40 39 39 39 43 43 43 43 43 43 32 32 32 14 14 14 6 6 6 13 13 13
++4 4 4 17 17 17 28 28 28 31 31 31 24 24 24 16 16 16 11 11 11 13 13 13
++4 4 4 11 11 11 11 11 11 8 8 8 16 16 16 31 31 31 39 39 39 39 39 39
++38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
++
++21 21 21 32 32 32 39 39 39 32 32 32 17 17 17 16 16 16 19 19 19 14 14 14
++14 14 14 20 20 20 31 31 31 37 37 37 28 28 28 10 10 10 0 0 0 0 0 0
++0 0 0 0 0 0 4 4 4 24 24 24 31 31 31 16 16 16 0 0 0 0 0 0
++8 8 8 0 0 0 0 0 0 11 11 11 27 27 27 32 32 32 17 17 17 0 0 0
++0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 13 13 13 11 11 11 0 0 0 0 0 0 6 6 6 3 3 3
++3 3 3 6 6 6 8 8 8 6 6 6 3 3 3 3 3 3 6 6 6 8 8 8
++0 0 0 11 11 11 17 17 17 11 11 11 3 3 3 4 4 4 10 10 10 14 14 14
++3 3 3 20 20 20 33 33 33 33 33 33 24 24 24 16 16 16 14 14 14 16 16 16
++13 13 13 13 13 13 27 27 27 40 40 40 37 37 37 24 24 24 19 19 19 19 19 19
++23 23 23 19 19 19 19 19 19 38 38 38 56 56 56 43 43 43 24 24 24 28 28 28
++27 27 27 44 44 44 71 71 71 49 49 49 49 49 49 72 72 72 52 52 52 42 42 42
++40 40 40 51 51 51 81 81 81 74 74 74 45 45 45 67 67 67 89 89 89 65 65 65
++56 56 56 65 65 65 88 88 88 92 92 92 73 73 73 74 74 74 92 92 92 96 96 96
++75 75 75 87 87 87 88 88 88 117 117 117 115 116 115 85 85 85 90 90 90 88 88 88
++101 101 101 109 110 110 115 116 115 121 121 119 112 112 113 112 112 113 115 116 115 121 121 119
++103 103 102 117 117 117 128 128 128 134 134 134 134 134 134 121 121 119 112 112 113 121 121 119
++128 128 128 129 129 130 139 139 139 144 145 144 142 143 144 137 137 137 137 137 137 137 137 137
++131 131 131 137 137 137 147 147 148 152 153 154 152 153 154 144 145 144 142 143 144 142 143 144
++155 156 156 157 157 157 152 153 154 161 161 162 163 163 163 152 153 154 147 147 148 147 147 148
++152 153 154 152 153 154 161 161 162 169 175 167 166 167 167 161 161 162 157 157 157 157 157 157
++161 161 162 160 161 160 160 161 160 166 167 167 169 175 167 169 175 167 161 161 162 158 159 161
++161 161 162 158 159 161 166 167 167 158 159 161 144 145 144 2 8 7 14 20 19 6 13 11
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++6 8 11 8 10 13 26 29 32 231 224 220 238 240 244 238 240 244 246 251 251 238 240 244
++238 240 244 231 224 220 180 183 185 200 220 210 246 251 251 238 240 244 238 240 244 238 240 244
++238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 246 251 251 238 240 244 180 183 185
++157 157 157 169 175 167 147 147 148 163 163 163 149 149 149 157 157 157 152 153 154 152 153 154
++152 153 154 149 151 153 149 149 149 149 149 149 147 147 148 145 146 147 144 145 144 144 145 144
++142 143 144 140 140 140 142 143 144 140 140 140 134 134 134 131 131 131 137 138 139 149 149 149
++142 143 144 133 133 133 125 122 126 125 122 126 133 133 133 137 138 139 133 133 133 125 125 127
++117 117 117 117 117 117 127 127 127 129 129 130 127 127 127 117 117 117 112 112 113 128 128 128
++117 117 117 109 110 110 103 103 102 101 101 101 103 103 102 99 99 99 99 99 99 115 116 115
++115 116 115 112 112 113 109 110 110 105 104 105 101 101 101 92 92 92 83 83 83 74 74 74
++87 87 87 99 99 99 99 99 99 96 96 96 96 96 96 85 85 85 69 69 69 65 65 65
++84 84 84 84 84 84 85 85 85 84 84 84 82 82 82 81 81 81 77 77 77 73 73 73
++75 75 75 74 74 74 72 72 72 66 66 66 51 51 51 38 38 38 38 38 38 46 46 46
++52 52 52 43 43 43 36 36 36 38 38 38 42 42 42 46 46 46 57 57 57 65 65 65
++58 58 58 50 50 50 40 40 40 49 49 49 58 58 58 51 51 51 46 46 46 53 53 53
++39 39 39 16 16 16 28 28 28 52 52 52 51 51 51 44 44 44 48 48 48 50 50 50
++48 48 48 25 25 25 11 11 11 16 16 16 20 20 20 34 34 34 46 46 46 42 42 42
++42 42 42 42 42 42 43 43 43 44 44 44 42 42 42 39 39 39 38 38 38 39 39 39
++44 44 44 40 40 40 38 38 38 39 39 39 38 38 38 37 37 37 38 38 38 42 42 42
++38 38 38 38 38 38 39 39 39 38 38 38 38 38 38 40 40 40 31 31 31 11 11 11
++10 10 10 10 10 10 14 14 14 23 23 23 31 31 31 33 33 33 33 33 33 34 34 34
++16 16 16 10 10 10 14 14 14 33 33 33 38 38 38 8 8 8 14 14 14 28 28 28
++34 34 34 28 28 28 16 16 16 10 10 10 8 8 8 10 10 10 25 25 25 48 48 48
++42 42 42 40 40 40 39 39 39 42 42 42 45 45 45 48 48 48 43 43 43 37 37 37
++39 39 39 50 50 50 53 53 53 46 46 46 40 40 40 42 42 42 39 39 39 32 32 32
++23 23 23 23 23 23 34 34 34 44 44 44 44 44 44 49 49 49 51 51 51 45 45 45
++37 37 37 38 38 38 40 40 40 38 38 38 24 24 24 8 8 8 6 6 6 16 16 16
++11 11 11 28 28 28 34 34 34 24 24 24 13 13 13 13 13 13 13 13 13 10 10 10
++13 13 13 16 16 16 16 16 16 19 19 19 29 29 29 43 43 43 45 45 45 39 39 39
++40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
++
++24 24 24 16 16 16 33 33 33 43 43 43 25 25 25 17 17 17 21 21 21 14 14 14
++21 21 21 11 11 11 14 14 14 31 31 31 33 33 33 17 17 17 0 0 0 0 0 0
++0 0 0 10 10 10 0 0 0 0 0 0 27 27 27 28 28 28 6 6 6 0 0 0
++0 0 0 8 8 8 4 4 4 0 0 0 6 6 6 28 28 28 29 29 29 14 14 14
++0 0 0 0 0 0 4 4 4 8 8 8 4 4 4 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 11 11 11 13 13 13 3 3 3 0 0 0 6 6 6 3 3 3
++3 3 3 6 6 6 11 11 11 13 13 13 8 8 8 0 0 0 0 0 0 3 3 3
++6 6 6 10 10 10 11 11 11 8 8 8 6 6 6 8 8 8 8 8 8 4 4 4
++6 6 6 31 31 31 37 37 37 20 20 20 10 10 10 19 19 19 24 24 24 19 19 19
++4 4 4 21 21 21 46 46 46 42 42 42 13 13 13 13 13 13 27 27 27 17 17 17
++19 19 19 14 14 14 38 38 38 56 56 56 42 42 42 23 23 23 25 25 25 34 34 34
++28 28 28 32 32 32 42 42 42 71 71 71 76 76 76 54 54 54 45 45 45 38 38 38
++46 46 46 50 50 50 52 52 52 68 68 68 87 87 87 80 80 80 61 61 61 57 57 57
++60 60 60 54 54 54 66 66 66 82 82 82 89 89 89 94 94 94 89 89 89 73 73 73
++75 75 75 70 70 70 92 92 92 109 110 110 109 110 110 94 94 94 84 84 84 99 99 99
++105 105 105 94 94 94 93 93 93 112 112 113 122 121 126 125 125 127 112 112 113 99 99 99
++99 99 99 112 112 113 122 121 126 129 129 130 134 134 134 129 129 130 125 125 127 127 127 127
++127 127 127 121 121 119 125 125 127 137 138 139 144 145 144 145 146 147 139 139 139 125 125 127
++133 133 133 131 131 131 137 137 137 147 147 148 155 156 156 152 153 154 144 145 144 139 139 139
++157 157 157 155 156 156 144 145 144 152 153 154 163 163 163 160 161 160 152 153 154 147 147 148
++155 156 156 149 149 149 155 156 156 166 167 167 166 167 167 166 167 167 158 159 161 152 153 154
++157 157 157 161 161 162 161 161 162 161 161 162 169 175 167 169 175 167 166 165 167 155 156 156
++158 159 161 157 157 157 155 156 156 157 157 157 95 95 94 0 3 0 10 16 15 6 13 11
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++22 23 26 6 8 11 10 11 14 99 99 99 246 251 251 238 240 244 238 240 244 246 251 251
++238 240 244 238 240 244 238 240 244 200 220 210 246 251 251 238 240 244 246 251 251 238 240 244
++246 251 251 238 240 244 238 240 244 246 251 251 246 251 251 238 240 244 238 240 244 246 251 251
++166 165 167 149 149 149 149 151 153 157 157 157 149 151 153 149 149 149 157 157 157 147 147 148
++149 149 149 149 149 149 147 147 148 147 147 148 145 146 147 144 145 144 144 145 144 144 145 144
++142 143 144 137 137 137 137 137 137 140 140 140 139 139 139 133 133 133 133 133 133 137 138 139
++145 146 147 140 140 140 129 129 130 122 121 126 125 125 127 133 133 133 134 134 134 133 133 133
++121 121 119 115 116 115 115 116 115 125 122 126 129 129 130 128 128 128 125 125 127 129 129 130
++112 112 113 105 104 105 103 103 102 103 103 102 101 101 101 96 97 98 103 103 102 117 117 117
++115 116 115 112 112 113 109 110 110 101 101 101 92 92 92 84 84 84 80 80 80 77 77 77
++95 95 94 94 94 94 94 94 94 99 99 99 93 93 93 74 74 74 67 67 67 78 78 78
++85 85 85 84 84 84 87 87 87 87 87 87 78 78 78 75 75 75 77 77 77 78 78 78
++75 75 75 67 67 67 57 57 57 51 51 51 42 42 42 37 37 37 49 49 49 66 66 66
++68 68 68 58 58 58 48 48 48 48 48 48 42 42 42 37 37 37 46 46 46 48 48 48
++57 57 57 57 57 57 45 45 45 46 46 46 56 56 56 58 58 58 54 54 54 48 48 48
++48 48 48 21 21 21 31 31 31 56 56 56 56 56 56 51 51 51 56 56 56 53 53 53
++57 57 57 36 36 36 17 17 17 24 24 24 29 29 29 37 37 37 48 48 48 43 43 43
++42 42 42 40 40 40 40 40 40 42 42 42 40 40 40 38 38 38 38 38 38 40 40 40
++43 43 43 42 42 42 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
++40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 39 39 28 28 28 13 13 13
++20 20 20 8 8 8 13 13 13 27 27 27 34 34 34 38 38 38 32 32 32 17 17 17
++13 13 13 14 14 14 20 20 20 36 36 36 34 34 34 14 14 14 25 25 25 42 42 42
++27 27 27 17 17 17 11 11 11 13 13 13 11 11 11 8 8 8 25 25 25 49 49 49
++43 43 43 44 44 44 42 42 42 40 40 40 45 45 45 51 51 51 51 51 51 46 46 46
++38 38 38 37 37 37 39 39 39 45 45 45 45 45 45 39 39 39 38 38 38 42 42 42
++25 25 25 17 17 17 20 20 20 32 32 32 37 37 37 40 40 40 44 44 44 43 43 43
++48 48 48 43 43 43 37 37 37 28 28 28 17 17 17 10 10 10 11 11 11 17 17 17
++28 28 28 31 31 31 24 24 24 10 10 10 6 6 6 16 16 16 17 17 17 10 10 10
++16 16 16 10 10 10 16 16 16 31 31 31 39 39 39 39 39 39 37 37 37 38 38 38
++38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
++
++16 16 16 23 23 23 19 19 19 27 27 27 43 43 43 32 32 32 13 13 13 21 21 21
++20 20 20 21 21 21 14 14 14 6 6 6 16 16 16 28 28 28 20 20 20 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 20 20 20 31 31 31 10 10 10
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 14 14 28 28 28 32 32 32
++8 8 8 0 0 0 0 0 0 6 6 6 8 8 8 0 0 0 0 0 0 6 6 6
++3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 4 4 4 8 8 8 10 10 10 10 10 10 8 8 8 6 6 6
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 10 10 10 13 13 13 4 4 4 0 0 0 4 4 4 3 3 3
++3 3 3 4 4 4 8 8 8 10 10 10 8 8 8 4 4 4 6 6 6 10 10 10
++16 16 16 11 11 11 8 8 8 8 8 8 6 6 6 3 3 3 3 3 3 6 6 6
++34 34 34 33 33 33 20 20 20 3 3 3 10 10 10 27 27 27 23 23 23 0 0 0
++16 16 16 44 44 44 38 38 38 14 14 14 14 14 14 17 17 17 14 14 14 21 21 21
++16 16 16 38 38 38 54 54 54 42 42 42 19 19 19 25 25 25 37 37 37 28 28 28
++32 32 32 33 33 33 40 40 40 70 70 70 75 75 75 53 53 53 45 45 45 42 42 42
++48 48 48 43 43 43 45 45 45 69 69 69 90 90 90 78 78 78 54 54 54 51 51 51
++59 59 59 63 63 63 56 56 56 68 68 68 99 99 99 99 99 99 73 73 73 66 66 66
++77 77 77 87 87 87 96 96 96 87 87 87 91 91 91 109 110 110 109 110 110 103 103 102
++99 99 99 84 84 84 87 87 87 105 105 105 121 121 119 125 122 126 115 116 115 99 99 99
++112 112 113 117 117 117 115 116 115 112 112 113 125 125 127 137 137 137 134 134 134 128 128 128
++121 121 119 115 116 115 121 121 119 131 131 131 139 139 139 145 146 147 144 145 144 131 131 131
++131 131 131 129 129 130 129 129 130 137 137 137 145 146 147 152 153 154 149 151 153 144 145 144
++157 157 157 155 156 156 140 140 140 142 143 144 155 156 156 161 161 162 161 161 162 152 153 154
++149 151 153 149 149 149 157 157 157 163 163 163 166 165 167 166 167 167 163 163 163 157 157 157
++152 153 154 158 159 161 157 157 157 158 159 161 166 167 167 169 175 167 166 167 167 163 163 163
++157 157 157 157 157 157 157 157 157 134 134 134 38 40 39 10 16 15 6 13 11 6 13 11
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++1 3 7 20 21 24 14 16 19 6 8 11 180 183 185 238 240 244 238 240 244 238 240 244
++238 240 244 238 240 244 231 224 220 180 183 185 180 183 185 200 220 210 238 240 244 238 240 244
++238 240 244 238 240 244 246 251 251 238 240 244 238 240 244 246 251 251 246 251 251 238 240 244
++180 183 185 147 147 148 157 157 157 147 147 148 149 149 149 157 157 157 142 143 144 152 153 154
++147 147 148 147 147 148 145 146 147 144 145 144 144 145 144 142 143 144 142 143 144 142 143 144
++140 140 140 137 137 137 137 137 137 137 138 139 139 139 139 137 137 137 131 131 131 129 129 130
++137 137 137 142 143 144 142 143 144 129 129 130 121 121 119 121 121 119 128 128 128 133 133 133
++128 128 128 117 117 117 109 110 110 112 112 113 125 122 126 129 129 130 129 129 130 122 121 126
++105 105 105 103 103 102 103 103 102 105 104 105 101 101 101 96 97 98 105 105 105 115 116 115
++109 110 110 112 112 113 109 110 110 99 99 99 85 85 85 78 78 78 82 82 82 87 87 87
++103 103 102 93 93 93 93 93 93 93 93 93 78 78 78 69 69 69 78 78 78 92 92 92
++82 82 82 80 80 80 87 87 87 88 88 88 82 82 82 78 78 78 81 81 81 77 77 77
++71 71 71 53 53 53 42 42 42 50 50 50 60 60 60 63 63 63 62 62 62 65 65 65
++65 65 65 60 60 60 54 54 54 58 58 58 46 46 46 33 33 33 38 38 38 29 29 29
++43 43 43 42 42 42 38 38 38 45 45 45 45 45 45 51 51 51 57 57 57 36 36 36
++42 42 42 24 24 24 29 29 29 42 42 42 40 40 40 40 40 40 43 43 43 36 36 36
++39 39 39 32 32 32 23 23 23 32 32 32 33 33 33 32 32 32 44 44 44 43 43 43
++48 48 48 38 38 38 28 28 28 25 25 25 25 25 25 28 28 28 36 36 36 45 45 45
++39 39 39 40 40 40 42 42 42 43 43 43 43 43 43 43 43 43 42 42 42 39 39 39
++42 42 42 43 43 43 42 42 42 40 40 40 40 40 40 37 37 37 25 25 25 14 14 14
++21 21 21 8 8 8 17 17 17 34 34 34 37 37 37 32 32 32 23 23 23 4 4 4
++13 13 13 16 16 16 17 17 17 34 34 34 36 36 36 31 31 31 33 33 33 33 33 33
++14 14 14 10 10 10 11 11 11 17 17 17 11 11 11 10 10 10 25 25 25 45 45 45
++42 42 42 45 45 45 44 44 44 38 38 38 37 37 37 44 44 44 49 49 49 50 50 50
++43 43 43 37 37 37 39 39 39 50 50 50 54 54 54 49 49 49 43 43 43 42 42 42
++40 40 40 29 29 29 19 19 19 24 24 24 38 38 38 42 42 42 42 42 42 49 49 49
++54 54 54 49 49 49 37 37 37 21 21 21 10 10 10 10 10 10 16 16 16 21 21 21
++33 33 33 24 24 24 13 13 13 6 6 6 11 11 11 16 16 16 16 16 16 11 11 11
++13 13 13 14 14 14 25 25 25 39 39 39 44 44 44 40 40 40 38 38 38 42 42 42
++39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
++
++14 14 14 20 20 20 17 17 17 19 19 19 33 33 33 39 39 39 29 29 29 19 19 19
++11 11 11 11 11 11 4 4 4 0 0 0 6 6 6 20 20 20 27 27 27 24 24 24
++0 0 0 0 0 0 4 4 4 8 8 8 0 0 0 3 3 3 19 19 19 28 28 28
++13 13 13 0 0 0 0 0 0 4 4 4 3 3 3 0 0 0 4 4 4 23 23 23
++28 28 28 10 10 10 0 0 0 0 0 0 4 4 4 3 3 3 0 0 0 0 0 0
++4 4 4 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++10 10 10 11 11 11 14 14 14 17 17 17 17 17 17 17 17 17 16 16 16 14 14 14
++16 16 16 13 13 13 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 8 8 8 13 13 13 4 4 4 0 0 0 4 4 4 3 3 3
++4 4 4 0 0 0 0 0 0 0 0 0 6 6 6 14 14 14 19 19 19 19 19 19
++8 8 8 6 6 6 4 4 4 4 4 4 3 3 3 4 4 4 17 17 17 29 29 29
++34 34 34 20 20 20 8 8 8 10 10 10 19 19 19 21 21 21 19 19 19 14 14 14
++45 45 45 33 33 33 14 14 14 6 6 6 17 17 17 21 21 21 17 17 17 16 16 16
++36 36 36 50 50 50 40 40 40 21 21 21 24 24 24 31 31 31 28 28 28 27 27 27
++34 34 34 45 45 45 68 68 68 46 46 46 46 46 46 69 69 69 52 52 52 49 49 49
++42 42 42 38 38 38 68 68 68 75 75 75 53 53 53 65 65 65 80 80 80 54 54 54
++56 56 56 53 53 53 71 71 71 85 85 85 82 82 82 87 87 87 91 91 91 81 81 81
++84 84 84 101 101 101 80 80 80 75 75 75 85 85 85 99 99 99 121 121 119 101 101 101
++85 85 85 87 87 87 103 103 102 109 110 110 109 110 110 109 110 110 121 121 119 121 121 119
++117 117 117 115 116 115 105 105 105 101 101 101 115 116 115 133 133 133 137 137 137 128 128 128
++112 112 113 121 121 119 128 128 128 128 128 128 128 128 128 134 134 134 144 145 144 147 147 148
++131 131 131 131 131 131 129 129 130 129 129 130 134 134 134 144 145 144 152 153 154 155 156 156
++155 156 156 157 157 157 142 143 144 137 138 139 144 145 144 152 153 154 161 161 162 161 161 162
++145 146 147 149 151 153 161 161 162 163 163 163 157 157 157 158 159 161 166 165 167 166 167 167
++157 157 157 152 153 154 152 153 154 161 161 162 166 167 167 166 167 167 166 165 167 169 175 167
++160 161 160 152 153 154 161 161 162 85 85 85 2 8 7 14 20 19 10 16 15 2 8 7
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++6 8 11 6 8 11 14 16 19 10 11 14 46 47 50 231 224 220 238 240 244 246 251 251
++246 251 251 246 251 251 238 240 244 238 240 244 200 220 210 231 224 220 246 251 251 238 240 244
++238 240 244 252 251 251 238 240 244 238 240 244 246 251 251 238 240 244 238 240 244 200 220 210
++231 224 220 200 220 210 147 147 148 145 146 147 152 153 154 152 153 154 142 143 144 152 153 154
++145 146 147 144 145 144 144 145 144 144 145 144 142 143 144 140 140 140 140 140 140 140 140 140
++137 138 139 139 139 139 137 137 137 134 134 134 133 133 133 133 133 133 131 131 131 129 129 130
++125 122 126 134 134 134 142 143 144 137 137 137 125 122 126 115 116 115 117 117 117 121 121 119
++133 133 133 127 127 127 115 116 115 115 116 115 121 121 119 129 129 130 129 129 130 115 116 115
++105 104 105 103 103 102 101 101 101 103 103 102 99 99 99 99 99 99 109 110 110 109 110 110
++105 105 105 109 110 110 105 105 105 94 94 94 80 80 80 76 76 76 85 85 85 96 96 96
++101 101 101 99 99 99 96 96 96 82 82 82 65 65 65 73 73 73 91 91 91 91 91 91
++83 83 83 77 77 77 83 83 83 88 88 88 85 85 85 85 85 85 80 80 80 65 65 65
++53 53 53 49 49 49 53 53 53 65 65 65 69 69 69 59 59 59 43 43 43 32 32 32
++33 33 33 32 32 32 27 27 27 34 34 34 28 28 28 27 27 27 45 45 45 36 36 36
++25 25 25 16 16 16 23 23 23 40 40 40 32 32 32 33 33 33 50 50 50 24 24 24
++24 24 24 17 17 17 16 16 16 16 16 16 11 11 11 11 11 11 13 13 13 8 8 8
++6 6 6 23 23 23 25 25 25 33 33 33 25 25 25 17 17 17 38 38 38 43 43 43
++42 42 42 29 29 29 19 19 19 17 17 17 17 17 17 19 19 19 27 27 27 36 36 36
++37 37 37 39 39 39 40 40 40 38 38 38 38 38 38 39 39 39 38 38 38 34 34 34
++37 37 37 39 39 39 36 36 36 34 34 34 37 37 37 32 32 32 21 21 21 16 16 16
++14 14 14 13 13 13 28 28 28 38 38 38 29 29 29 19 19 19 16 16 16 10 10 10
++13 13 13 11 11 11 8 8 8 33 33 33 38 38 38 38 38 38 29 29 29 10 10 10
++10 10 10 8 8 8 13 13 13 13 13 13 8 8 8 14 14 14 31 31 31 39 39 39
++46 46 46 51 51 51 51 51 51 44 44 44 39 39 39 40 40 40 48 48 48 53 53 53
++49 49 49 45 45 45 39 39 39 37 37 37 43 43 43 48 48 48 43 43 43 34 34 34
++37 37 37 33 33 33 27 27 27 32 32 32 43 43 43 40 40 40 33 33 33 37 37 37
++39 39 39 40 40 40 33 33 33 17 17 17 8 8 8 16 16 16 28 28 28 33 33 33
++23 23 23 16 16 16 13 13 13 16 16 16 16 16 16 13 13 13 11 11 11 14 14 14
++14 14 14 27 27 27 36 36 36 34 34 34 33 33 33 36 36 36 34 34 34 29 29 29
++34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
++
++20 20 20 10 10 10 21 21 21 25 25 25 14 14 14 29 29 29 40 40 40 23 23 23
++10 10 10 0 0 0 0 0 0 4 4 4 6 6 6 0 0 0 17 17 17 38 38 38
++8 8 8 16 16 16 0 0 0 0 0 0 11 11 11 0 0 0 0 0 0 24 24 24
++28 28 28 13 13 13 3 3 3 6 6 6 4 4 4 0 0 0 0 0 0 3 3 3
++23 23 23 20 20 20 10 10 10 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 8 8 8 10 10 10
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++20 20 20 19 19 19 16 16 16 13 13 13 8 8 8 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 6 6 6 13 13 13 6 6 6 0 0 0 4 4 4 3 3 3
++6 6 6 3 3 3 0 0 0 0 0 0 10 10 10 23 23 23 23 23 23 13 13 13
++0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 19 19 19 31 31 31 36 36 36
++3 3 3 0 0 0 4 4 4 17 17 17 20 20 20 20 20 20 29 29 29 44 44 44
++44 44 44 10 10 10 6 6 6 19 19 19 11 11 11 16 16 16 31 31 31 25 25 25
++48 48 48 36 36 36 19 19 19 23 23 23 33 33 33 25 25 25 20 20 20 34 34 34
++42 42 42 65 65 65 46 46 46 38 38 38 37 37 37 45 45 45 69 69 69 52 52 52
++40 40 40 69 69 69 70 70 70 52 52 52 52 52 52 61 61 61 69 69 69 82 82 82
++63 63 63 52 52 52 84 84 84 96 96 96 67 67 67 77 77 77 105 104 105 92 92 92
++103 103 102 82 82 82 88 88 88 82 82 82 90 90 90 105 105 105 96 97 98 112 112 113
++90 90 90 93 93 93 109 110 110 101 101 101 91 91 91 94 94 94 117 117 117 125 125 127
++115 116 115 105 104 105 99 99 99 105 105 105 117 117 117 125 122 126 129 129 130 137 137 137
++127 127 127 128 128 128 127 127 127 121 121 119 121 121 119 125 125 127 134 134 134 147 147 148
++140 140 140 134 134 134 131 131 131 129 129 130 131 131 131 137 137 137 144 145 144 152 153 154
++155 156 156 157 157 157 144 145 144 139 139 139 140 140 140 142 143 144 152 153 154 157 157 157
++152 153 154 152 153 154 158 159 161 163 163 163 157 157 157 152 153 154 157 157 157 161 161 162
++161 161 162 155 156 156 149 151 153 158 159 161 166 167 167 166 165 167 160 161 160 166 165 167
++161 161 162 155 156 156 139 139 139 32 34 33 4 4 4 10 16 15 6 13 11 6 13 11
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++10 11 14 16 20 21 0 0 4 14 16 19 24 25 28 118 122 119 238 240 244 238 240 244
++238 240 244 238 240 244 238 240 244 246 251 251 200 220 210 180 183 185 200 220 210 238 240 244
++238 240 244 246 251 251 238 240 244 246 251 251 238 240 244 200 220 210 200 220 210 238 240 244
++238 240 244 246 251 251 169 175 167 142 143 144 152 153 154 140 140 140 149 149 149 147 147 148
++144 145 144 144 145 144 144 145 144 142 143 144 140 140 140 140 140 140 139 139 139 137 138 139
++137 137 137 137 137 137 134 134 134 133 133 133 129 129 130 128 128 128 128 128 128 129 129 130
++122 121 126 125 125 127 129 129 130 133 133 133 129 129 130 122 121 126 117 117 117 115 116 115
++127 127 127 128 128 128 127 127 127 128 128 128 127 127 127 127 127 127 127 127 127 109 110 110
++103 103 102 105 104 105 99 99 99 99 99 99 96 96 96 103 103 102 115 116 115 105 105 105
++105 105 105 105 105 105 101 101 101 88 88 88 77 77 77 77 77 77 88 88 88 99 99 99
++96 97 98 101 101 101 92 92 92 71 71 71 66 66 66 82 82 82 92 92 92 87 87 87
++87 87 87 80 80 80 81 81 81 80 80 80 73 73 73 76 76 76 72 72 72 52 52 52
++44 44 44 58 58 58 72 72 72 75 75 75 63 63 63 45 45 45 32 32 32 28 28 28
++25 25 25 28 28 28 19 19 19 23 23 23 16 16 16 25 25 25 52 52 52 42 42 42
++25 25 25 25 25 25 29 29 29 39 39 39 24 24 24 29 29 29 50 50 50 23 23 23
++17 17 17 21 21 21 19 19 19 11 11 11 8 8 8 6 6 6 10 10 10 20 20 20
++27 27 27 43 43 43 37 37 37 34 34 34 21 21 21 13 13 13 38 38 38 43 43 43
++33 33 33 23 23 23 17 17 17 21 21 21 21 21 21 17 17 17 17 17 17 24 24 24
++34 34 34 37 37 37 34 34 34 29 29 29 27 27 27 29 29 29 29 29 29 25 25 25
++27 27 27 29 29 29 25 25 25 25 25 25 31 31 31 25 25 25 16 16 16 14 14 14
++16 16 16 25 25 25 36 36 36 31 31 31 17 17 17 11 11 11 13 13 13 14 14 14
++13 13 13 13 13 13 13 13 13 38 38 38 33 33 33 28 28 28 19 19 19 4 4 4
++11 11 11 11 11 11 14 14 14 10 10 10 10 10 10 27 27 27 37 37 37 29 29 29
++14 14 14 17 17 17 19 19 19 19 19 19 13 13 13 11 11 11 17 17 17 24 24 24
++42 42 42 34 34 34 23 23 23 16 16 16 17 17 17 24 24 24 27 27 27 24 24 24
++17 17 17 19 19 19 28 28 28 33 33 33 29 29 29 24 24 24 20 20 20 14 14 14
++20 20 20 25 25 25 21 21 21 13 13 13 14 14 14 25 25 25 32 32 32 32 32 32
++14 14 14 11 11 11 13 13 13 17 17 17 16 16 16 11 11 11 11 11 11 14 14 14
++21 21 21 28 28 28 28 28 28 21 21 21 17 17 17 20 20 20 20 20 20 14 14 14
++21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
++
++14 14 14 23 23 23 19 19 19 19 19 19 23 23 23 17 17 17 21 21 21 44 44 44
++11 11 11 8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 6 6 6 19 19 19
++40 40 40 13 13 13 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0
++21 21 21 19 19 19 8 8 8 0 0 0 0 0 0 4 4 4 6 6 6 0 0 0
++0 0 0 23 23 23 28 28 28 10 10 10 0 0 0 0 0 0 6 6 6 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 13 13 13 16 16 16
++21 21 21 19 19 19 16 16 16 13 13 13 11 11 11 11 11 11 13 13 13 14 14 14
++19 19 19 19 19 19 20 20 20 19 19 19 16 16 16 10 10 10 4 4 4 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 4 4 4 13 13 13 6 6 6 0 0 0 4 4 4 3 3 3
++6 6 6 6 6 6 3 3 3 3 3 3 17 17 17 28 28 28 19 19 19 0 0 0
++3 3 3 8 8 8 6 6 6 3 3 3 14 14 14 31 31 31 31 31 31 19 19 19
++10 10 10 13 13 13 14 14 14 13 13 13 13 13 13 20 20 20 29 29 29 37 37 37
++4 4 4 14 14 14 14 14 14 14 14 14 17 17 17 11 11 11 23 23 23 52 52 52
++39 39 39 20 20 20 20 20 20 28 28 28 23 23 23 23 23 23 32 32 32 36 36 36
++70 70 70 39 39 39 29 29 29 32 32 32 36 36 36 37 37 37 43 43 43 69 69 69
++71 71 71 69 69 69 57 57 57 49 49 49 54 54 54 59 59 59 70 70 70 89 89 89
++85 85 85 94 94 94 93 93 93 90 90 90 91 91 91 90 90 90 93 93 93 105 104 105
++105 104 105 101 101 101 92 92 92 103 103 102 105 105 105 103 103 102 109 110 110 109 110 110
++117 117 117 109 110 110 109 110 110 96 96 96 91 91 91 99 99 99 121 121 119 117 117 117
++129 129 130 112 112 113 109 110 110 122 121 126 121 121 119 105 105 105 109 110 110 127 127 127
++144 145 144 131 131 131 115 116 115 112 112 113 121 121 119 121 121 119 122 121 126 134 134 134
++152 153 154 139 139 139 129 129 130 131 131 131 133 133 133 131 131 131 134 134 134 144 145 144
++157 157 157 155 156 156 140 140 140 140 140 140 142 143 144 139 139 139 144 145 144 149 149 149
++166 167 167 155 156 156 155 156 156 163 163 163 157 157 157 149 149 149 147 147 148 149 149 149
++166 167 167 163 163 163 155 156 156 155 156 156 166 165 167 166 167 167 157 157 157 149 151 153
++161 161 162 158 159 161 103 103 102 0 3 0 10 13 11 20 21 24 2 8 7 10 16 15
++10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14 10 11 14
++14 16 19 6 8 11 16 20 21 8 10 13 43 44 47 43 44 47 180 183 185 238 240 244
++246 251 251 246 251 251 246 251 251 238 240 244 238 240 244 180 183 185 187 210 182 231 246 232
++238 240 244 238 240 244 246 251 251 231 224 220 200 220 210 238 240 244 238 240 244 238 240 244
++246 251 251 238 240 244 231 224 220 129 129 130 144 145 144 144 145 144 142 143 144 149 149 149
++144 145 144 144 145 144 142 143 144 140 140 140 140 140 140 139 139 139 137 138 139 137 137 137
++137 137 137 133 133 133 129 129 130 133 133 133 133 133 133 128 128 128 127 127 127 127 127 127
++129 129 130 121 121 119 117 117 117 127 127 127 134 134 134 133 133 133 121 121 119 112 112 113
++109 110 110 121 121 119 128 128 128 134 134 134 127 127 127 117 117 117 121 121 119 105 105 105
++103 103 102 105 104 105 96 97 98 94 94 94 94 94 94 105 104 105 117 117 117 105 105 105
++109 110 110 103 103 102 94 94 94 84 84 84 77 77 77 80 80 80 90 90 90 99 99 99
++93 93 93 96 97 98 83 83 83 68 68 68 75 75 75 87 87 87 87 87 87 87 87 87
++90 90 90 83 83 83 80 80 80 68 68 68 53 53 53 59 59 59 63 63 63 49 49 49
++58 58 58 68 68 68 74 74 74 66 66 66 48 48 48 33 33 33 28 28 28 28 28 28
++21 21 21 31 31 31 27 27 27 31 31 31 23 23 23 29 29 29 52 52 52 34 34 34
++25 25 25 42 42 42 39 39 39 29 29 29 10 10 10 25 25 25 48 48 48 10 10 10
++10 10 10 21 21 21 19 19 19 14 14 14 14 14 14 11 11 11 17 17 17 38 38 38
++40 40 40 48 48 48 25 25 25 17 17 17 13 13 13 17 17 17 45 45 45 46 46 46
++37 37 37 25 25 25 19 19 19 21 21 21 23 23 23 17 17 17 19 19 19 25 25 25
++34 34 34 34 34 34 29 29 29 20 20 20 17 17 17 20 20 20 21 21 21 19 19 19
++17 17 17 20 20 20 16 16 16 16 16 16 24 24 24 20 20 20 11 11 11 14 14 14
++25 25 25 38 38 38 38 38 38 21 21 21 8 8 8 11 11 11 13 13 13 10 10 10
++13 13 13 17 17 17 24 24 24 45 45 45 24 24 24 10 10 10 13 13 13 20 20 20
++11 11 11 13 13 13 14 14 14 10 10 10 17 17 17 38 38 38 40 40 40 19 19 19
++16 16 16 16 16 16 20 20 20 27 27 27 28 28 28 24 24 24 27 27 27 33 33 33
++38 38 38 27 27 27 23 23 23 28 28 28 27 27 27 19 19 19 20 20 20 31 31 31
++29 29 29 25 25 25 38 38 38 37 37 37 16 16 16 17 17 17 32 32 32 27 27 27
++20 20 20 20 20 20 14 14 14 10 10 10 20 20 20 31 31 31 24 24 24 10 10 10
++16 16 16 13 13 13 10 10 10 10 10 10 11 11 11 14 14 14 14 14 14 13 13 13
++42 42 42 33 33 33 28 28 28 31 31 31 31 31 31 28 28 28 29 29 29 36 36 36
++29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
++
++28 28 28 14 14 14 17 17 17 20 20 20 6 6 6 4 4 4 13 13 13 13 13 13
++48 48 48 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++14 14 14 37 37 37 21 21 21 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0
++0 0 0 21 21 21 27 27 27 11 11 11 0 0 0 0 0 0 6 6 6 4 4 4
++3 3 3 4 4 4 16 16 16 25 25 25 16 16 16 0 0 0 0 0 0 8 8 8
++0 0 0 3 3 3 3 3 3 0 0 0 3 3 3 11 11 11 17 17 17 17 17 17
++19 19 19 11 11 11 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0
++6 6 6 0 0 0 0 0 0 11 11 11 23 23 23 20 20 20 6 6 6 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++6 6 6 0 0 0 0 0 0 11 11 11 14 14 14 8 8 8 3 3 3 3 3 3
++6 6 6 0 0 0 6 6 6 29 29 29 25 25 25 8 8 8 3 3 3 3 3 3
++10 10 10 10 10 10 0 0 0 11 11 11 33 33 33 33 33 33 11 11 11 0 0 0
++8 8 8 3 3 3 8 8 8 17 17 17 21 21 21 19 19 19 14 14 14 14 14 14
++16 16 16 6 6 6 16 16 16 17 17 17 11 11 11 34 34 34 53 53 53 43 43 43
++21 21 21 28 28 28 24 24 24 21 21 21 27 27 27 28 28 28 39 39 39 65 65 65
++36 36 36 36 36 36 34 34 34 32 32 32 33 33 33 37 37 37 43 43 43 48 48 48
++76 76 76 74 74 74 72 72 72 73 73 73 76 76 76 81 81 81 82 82 82 83 83 83
++93 93 93 89 89 89 87 87 87 88 88 88 91 91 91 95 95 94 96 97 98 96 96 96
++105 104 105 105 105 105 105 104 105 103 103 102 101 101 101 101 101 101 105 104 105 105 105 105
++109 110 110 121 121 119 115 116 115 109 110 110 112 112 113 117 117 117 112 112 113 109 110 110
++115 116 115 127 127 127 127 127 127 112 112 113 103 103 102 105 104 105 112 112 113 117 117 117
++127 127 127 134 134 134 131 131 131 117 117 117 112 112 113 122 121 126 127 127 127 121 121 119
++133 133 133 147 147 148 147 147 148 133 133 133 122 121 126 129 129 130 137 137 137 137 137 137
++149 151 153 157 157 157 152 153 154 137 137 137 140 140 140 134 134 134 142 143 144 142 143 144
++145 146 147 152 153 154 163 163 163 161 161 162 161 161 162 144 145 144 145 146 147 147 147 148
++149 149 149 158 159 161 166 167 167 157 157 157 163 163 163 166 165 167 161 161 162 149 149 149
++145 146 147 152 153 154 37 39 42 6 8 11 14 16 19 14 16 19 10 11 14 6 8 11
++10 11 14 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 14 16 19
++11 11 11 11 11 11 8 8 8 24 24 24 48 48 48 52 52 52 73 73 73 231 224 220
++238 240 244 246 251 251 238 240 244 238 240 244 238 240 244 238 240 244 200 220 210 238 240 244
++246 251 251 231 224 220 200 220 210 231 224 220 238 240 244 238 240 244 238 240 244 238 240 244
++252 251 251 200 220 210 160 161 160 147 147 148 144 145 144 137 137 137 144 145 144 144 145 144
++142 143 144 140 140 140 140 140 140 140 140 140 137 138 139 137 137 137 137 137 137 137 137 137
++134 134 134 133 133 133 129 129 130 129 129 130 128 128 128 127 127 127 125 125 127 122 121 126
++121 121 119 121 121 119 121 121 119 121 121 119 121 121 119 133 133 133 131 131 131 115 116 115
++115 116 115 125 125 127 127 127 127 127 127 127 128 128 128 125 122 126 112 112 113 105 105 105
++101 101 101 101 101 101 99 99 99 96 97 98 101 101 101 109 110 110 112 112 113 109 110 110
++109 110 110 105 105 105 87 87 87 81 81 81 81 81 81 83 83 83 96 97 98 101 101 101
++96 97 98 87 87 87 72 72 72 73 73 73 87 87 87 85 85 85 77 77 77 81 81 81
++66 66 66 82 82 82 90 90 90 57 57 57 46 46 46 46 46 46 50 50 50 48 48 48
++68 68 68 57 57 57 68 68 68 75 75 75 69 69 69 56 56 56 32 32 32 21 21 21
++27 27 27 23 23 23 25 25 25 27 27 27 19 19 19 16 16 16 51 51 51 33 33 33
++37 37 37 43 43 43 20 20 20 13 13 13 21 21 21 36 36 36 46 46 46 16 16 16
++13 13 13 20 20 20 21 21 21 14 14 14 16 16 16 29 29 29 42 42 42 45 45 45
++49 49 49 43 43 43 17 17 17 19 19 19 17 17 17 20 20 20 45 45 45 40 40 40
++38 38 38 25 25 25 17 17 17 21 21 21 23 23 23 20 20 20 23 23 23 32 32 32
++36 36 36 36 36 36 34 34 34 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32
++36 36 36 32 32 32 36 36 36 38 38 38 44 44 44 38 38 38 20 20 20 24 24 24
++45 45 45 25 25 25 17 17 17 29 29 29 13 13 13 16 16 16 11 11 11 4 4 4
++13 13 13 28 28 28 44 44 44 50 50 50 17 17 17 11 11 11 10 10 10 8 8 8
++14 14 14 10 10 10 8 8 8 27 27 27 33 33 33 38 38 38 51 51 51 50 50 50
++40 40 40 34 34 34 34 34 34 44 44 44 52 52 52 49 49 49 40 40 40 34 34 34
++37 37 37 42 42 42 50 50 50 53 53 53 45 45 45 36 36 36 37 37 37 44 44 44
++44 44 44 44 44 44 39 39 39 28 28 28 20 20 20 25 25 25 42 42 42 54 54 54
++42 42 42 21 21 21 11 11 11 25 25 25 33 33 33 24 24 24 13 13 13 13 13 13
++11 11 11 10 10 10 13 13 13 14 14 14 8 8 8 4 4 4 19 19 19 36 36 36
++38 38 38 39 39 39 39 39 39 40 40 40 40 40 40 40 40 40 40 40 40 39 39 39
++40 40 40 39 39 39 38 38 38 37 37 37 37 37 37 37 37 37 38 38 38 38 38 38
++
++46 46 46 36 36 36 13 13 13 4 4 4 10 10 10 0 0 0 0 0 0 8 8 8
++10 10 10 48 48 48 4 4 4 3 3 3 0 0 0 0 0 0 3 3 3 0 0 0
++0 0 0 21 21 21 36 36 36 19 19 19 0 0 0 0 0 0 8 8 8 3 3 3
++0 0 0 0 0 0 16 16 16 24 24 24 19 19 19 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 8 8 8 19 19 19 24 24 24 20 20 20 8 8 8 0 0 0
++3 3 3 4 4 4 0 0 0 0 0 0 3 3 3 19 19 19 23 23 23 17 17 17
++10 10 10 4 4 4 0 0 0 0 0 0 6 6 6 11 11 11 13 13 13 11 11 11
++8 8 8 10 10 10 6 6 6 6 6 6 14 14 14 19 19 19 11 11 11 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 0 0 0 8 8 8 13 13 13 11 11 11 10 10 10
++0 0 0 4 4 4 24 24 24 31 31 31 17 17 17 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 10 10 10 28 28 28 31 31 31 20 20 20 10 10 10 6 6 6
++13 13 13 10 10 10 10 10 10 16 16 16 20 20 20 19 19 19 11 11 11 6 6 6
++8 8 8 21 21 21 14 14 14 3 3 3 25 25 25 49 49 49 42 42 42 20 20 20
++27 27 27 14 14 14 23 23 23 25 25 25 17 17 17 36 36 36 53 53 53 42 42 42
++32 32 32 31 31 31 29 29 29 32 32 32 40 40 40 54 54 54 69 69 69 80 80 80
++76 76 76 77 77 77 78 78 78 78 78 78 78 78 78 81 81 81 83 83 83 85 85 85
++87 87 87 89 89 89 89 89 89 87 87 87 89 89 89 96 96 96 96 96 96 92 92 92
++92 92 92 96 97 98 103 103 102 103 103 102 101 101 101 101 101 101 105 105 105 112 112 113
++109 110 110 115 116 115 115 116 115 112 112 113 117 117 117 117 117 117 112 112 113 115 116 115
++121 121 119 128 128 128 127 127 127 115 116 115 103 103 102 105 105 105 115 116 115 121 121 119
++112 112 113 122 121 126 133 133 133 129 129 130 121 121 119 115 116 115 117 117 117 122 121 126
++125 125 127 134 134 134 144 145 144 140 140 140 131 131 131 128 128 128 131 131 131 137 138 139
++149 149 149 149 149 149 152 153 154 147 147 148 147 147 148 131 131 131 134 134 134 144 145 144
++140 140 140 145 146 147 157 157 157 160 161 160 160 161 160 145 146 147 145 146 147 144 145 144
++147 147 148 149 151 153 161 161 162 157 157 157 163 163 163 160 161 160 155 156 156 144 145 144
++145 146 147 96 98 100 11 13 16 8 10 13 8 10 13 8 10 13 1 3 7 11 13 16
++8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13 8 10 13
++16 16 16 16 16 16 16 16 16 43 43 43 52 52 52 44 44 44 36 36 36 125 125 127
++252 251 251 238 240 244 238 240 244 238 240 244 238 240 244 252 251 251 169 175 167 180 183 185
++180 183 185 231 224 220 246 251 251 238 240 244 238 240 244 246 251 251 238 240 244 246 251 251
++161 161 162 140 140 140 133 133 133 144 145 144 144 145 144 137 138 139 144 145 144 140 140 140
++140 140 140 139 139 139 137 138 139 137 137 137 137 137 137 134 134 134 134 134 134 134 134 134
++129 129 130 129 129 130 129 129 130 129 129 130 129 129 130 128 128 128 125 125 127 121 121 119
++121 121 119 121 121 119 117 117 117 115 116 115 112 112 113 121 121 119 128 128 128 122 121 126
++125 122 126 128 128 128 127 127 127 125 125 127 128 128 128 125 125 127 109 110 110 101 101 101
++101 101 101 96 97 98 92 92 92 90 90 90 96 96 96 105 105 105 109 110 110 105 105 105
++112 112 113 103 103 102 83 83 83 80 80 80 83 83 83 88 88 88 99 99 99 99 99 99
++93 93 93 88 88 88 82 82 82 83 83 83 88 88 88 84 84 84 66 66 66 46 46 46
++61 61 61 58 58 58 85 85 85 70 70 70 42 42 42 40 40 40 57 57 57 46 46 46
++76 76 76 68 68 68 65 65 65 52 52 52 49 49 49 60 60 60 53 53 53 40 40 40
++28 28 28 31 31 31 36 36 36 32 32 32 21 21 21 23 23 23 59 59 59 46 46 46
++38 38 38 38 38 38 17 17 17 10 10 10 11 11 11 37 37 37 52 52 52 8 8 8
++8 8 8 11 11 11 16 16 16 25 25 25 37 37 37 44 44 44 44 44 44 43 43 43
++42 42 42 37 37 37 16 16 16 20 20 20 17 17 17 19 19 19 40 40 40 34 34 34
++44 44 44 34 34 34 24 24 24 20 20 20 23 23 23 28 28 28 36 36 36 42 42 42
++43 43 43 42 42 42 40 40 40 39 39 39 39 39 39 38 38 38 38 38 38 39 39 39
++36 36 36 38 38 38 40 40 40 36 36 36 39 39 39 42 42 42 36 36 36 42 42 42
++33 33 33 16 16 16 16 16 16 34 34 34 17 17 17 16 16 16 11 11 11 11 11 11
++31 31 31 33 33 33 38 38 38 44 44 44 16 16 16 13 13 13 13 13 13 13 13 13
++14 14 14 16 16 16 24 24 24 38 38 38 28 28 28 19 19 19 39 39 39 53 53 53
++50 50 50 43 43 43 37 37 37 40 40 40 44 44 44 45 45 45 46 46 46 48 48 48
++36 36 36 39 39 39 46 46 46 52 52 52 51 51 51 44 44 44 38 38 38 37 37 37
++45 45 45 50 50 50 50 50 50 42 42 42 28 28 28 23 23 23 33 33 33 45 45 45
++39 39 39 25 25 25 19 19 19 25 25 25 27 27 27 17 17 17 10 10 10 13 13 13
++11 11 11 17 17 17 14 14 14 6 6 6 10 10 10 24 24 24 37 37 37 42 42 42
++39 39 39 40 40 40 40 40 40 42 42 42 42 42 42 42 42 42 40 40 40 40 40 40
++42 42 42 40 40 40 39 39 39 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39
++
++28 28 28 43 43 43 28 28 28 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
++8 8 8 10 10 10 49 49 49 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 21 21 21 38 38 38 21 21 21 0 0 0 0 0 0 8 8 8
++0 0 0 0 0 0 4 4 4 24 24 24 31 31 31 19 19 19 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 14 14 14 23 23 23 10 10 10 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 6 6 6 21 21 21 24 24 24 16 16 16
++3 3 3 0 0 0 0 0 0 6 6 6 13 13 13 16 16 16 17 17 17 16 16 16
++11 11 11 16 16 16 13 13 13 3 3 3 4 4 4 17 17 17 16 16 16 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 13 13 13 14 14 14 10 10 10
++0 0 0 24 24 24 31 31 31 17 17 17 0 0 0 0 0 0 3 3 3 11 11 11
++3 3 3 6 6 6 27 27 27 33 33 33 16 16 16 3 3 3 8 8 8 4 4 4
++8 8 8 11 11 11 14 14 14 16 16 16 17 17 17 16 16 16 13 13 13 10 10 10
++17 17 17 6 6 6 3 3 3 25 25 25 44 44 44 38 38 38 20 20 20 14 14 14
++17 17 17 19 19 19 19 19 19 25 25 25 40 40 40 45 45 45 37 37 37 29 29 29
++28 28 28 37 37 37 49 49 49 60 60 60 67 67 67 71 71 71 74 74 74 75 75 75
++73 73 73 76 76 76 81 81 81 82 82 82 80 80 80 80 80 80 82 82 82 84 84 84
++82 82 82 88 88 88 91 91 91 91 91 91 93 93 93 94 94 94 94 94 94 93 93 93
++101 101 101 103 103 102 105 105 105 105 105 105 105 104 105 103 103 102 105 105 105 105 105 105
++109 110 110 109 110 110 112 112 113 115 116 115 121 121 119 115 116 115 115 116 115 117 117 117
++117 117 117 125 122 126 127 127 127 121 121 119 117 117 117 117 117 117 115 116 115 109 110 110
++105 104 105 109 110 110 122 121 126 134 134 134 133 133 133 121 121 119 115 116 115 121 121 119
++121 121 119 121 121 119 133 133 133 144 145 144 142 143 144 129 129 130 128 128 128 133 133 133
++149 149 149 144 145 144 149 149 149 149 149 149 152 153 154 137 137 137 133 133 133 139 139 139
++137 137 137 140 140 140 152 153 154 157 157 157 157 157 157 147 147 148 144 145 144 142 143 144
++147 147 148 142 143 144 149 151 153 157 157 157 163 163 163 157 157 157 155 156 156 142 143 144
++137 137 137 37 39 42 1 3 7 16 20 21 11 13 16 14 16 19 14 16 19 20 21 24
++11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 11 13 16 10 11 14 10 11 14
++10 10 10 13 13 13 21 21 21 52 52 52 52 52 52 52 52 52 39 39 39 53 53 53
++180 183 185 238 240 244 246 251 251 252 251 251 238 240 244 238 240 244 200 220 210 200 220 210
++246 251 251 238 240 244 231 246 232 246 251 251 246 251 251 238 240 244 200 220 210 112 122 122
++117 117 117 117 117 117 129 129 130 147 147 148 142 143 144 134 134 134 139 139 139 137 137 137
++137 137 137 137 137 137 134 134 134 134 134 134 133 133 133 133 133 133 131 131 131 131 131 131
++129 129 130 129 129 130 129 129 130 129 129 130 129 129 130 127 127 127 121 121 119 121 121 119
++121 121 119 115 116 115 115 116 115 112 112 113 109 110 110 115 116 115 127 127 127 129 129 130
++131 131 131 129 129 130 122 121 126 121 121 119 128 128 128 125 122 126 109 110 110 99 99 99
++101 101 101 99 99 99 94 94 94 95 95 94 103 103 102 109 110 110 109 110 110 105 105 105
++105 105 105 96 96 96 80 80 80 78 78 78 84 84 84 91 91 91 99 99 99 96 96 96
++92 92 92 82 82 82 76 76 76 73 73 73 73 73 73 82 82 82 75 75 75 50 50 50
++42 42 42 57 57 57 87 87 87 83 83 83 73 73 73 52 52 52 48 48 48 52 52 52
++62 62 62 69 69 69 73 73 73 51 51 51 32 32 32 44 44 44 54 54 54 58 58 58
++33 33 33 25 25 25 20 20 20 17 17 17 21 21 21 32 32 32 60 60 60 42 42 42
++25 25 25 24 24 24 14 14 14 10 10 10 11 11 11 42 42 42 57 57 57 10 10 10
++42 42 42 27 27 27 21 21 21 34 34 34 46 46 46 48 48 48 43 43 43 42 42 42
++45 45 45 38 38 38 19 19 19 17 17 17 14 14 14 19 19 19 43 43 43 40 40 40
++40 40 40 37 37 37 29 29 29 23 23 23 25 25 25 34 34 34 40 40 40 43 43 43
++42 42 42 40 40 40 39 39 39 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
++38 38 38 42 42 42 43 43 43 32 32 32 37 37 37 44 44 44 36 36 36 38 38 38
++17 17 17 10 10 10 16 16 16 34 34 34 14 14 14 13 13 13 17 17 17 27 27 27
++39 39 39 31 31 31 29 29 29 37 37 37 13 13 13 14 14 14 13 13 13 13 13 13
++3 3 3 31 31 31 40 40 40 32 32 32 13 13 13 17 17 17 40 40 40 42 42 42
++52 52 52 46 46 46 42 42 42 39 39 39 39 39 39 40 40 40 46 46 46 53 53 53
++40 40 40 39 39 39 37 37 37 39 39 39 45 45 45 49 49 49 44 44 44 37 37 37
++39 39 39 45 45 45 52 52 52 49 49 49 34 34 34 20 20 20 24 24 24 36 36 36
++37 37 37 31 31 31 25 25 25 23 23 23 17 17 17 10 10 10 8 8 8 13 13 13
++13 13 13 16 16 16 14 14 14 11 11 11 19 19 19 33 33 33 40 40 40 39 39 39
++38 38 38 39 39 39 39 39 39 40 40 40 40 40 40 39 39 39 39 39 39 38 38 38
++39 39 39 39 39 39 38 38 38 37 37 37 37 37 37 37 37 37 38 38 38 38 38 38
++
++0 0 0 21 21 21 40 40 40 24 24 24 0 0 0 0 0 0 11 11 11 0 0 0
++3 3 3 6 6 6 4 4 4 46 46 46 4 4 4 0 0 0 0 0 0 0 0 0
++6 6 6 0 0 0 0 0 0 23 23 23 39 39 39 14 14 14 0 0 0 0 0 0
++4 4 4 6 6 6 3 3 3 4 4 4 20 20 20 31 31 31 20 20 20 0 0 0
++0 0 0 6 6 6 4 4 4 0 0 0 6 6 6 20 20 20 23 23 23 16 16 16
++0 0 0 0 0 0 0 0 0 4 4 4 13 13 13 19 19 19 19 19 19 16 16 16
++4 4 4 6 6 6 8 8 8 11 11 11 13 13 13 13 13 13 11 11 11 8 8 8
++11 11 11 13 13 13 13 13 13 4 4 4 0 0 0 13 13 13 19 19 19 10 10 10
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 6 6 6 11 11 11
++13 13 13 28 28 28 21 21 21 4 4 4 0 0 0 4 4 4 6 6 6 11 11 11
++10 10 10 24 24 24 33 33 33 20 20 20 0 0 0 4 4 4 13 13 13 4 4 4
++13 13 13 20 20 20 23 23 23 19 19 19 10 10 10 6 6 6 6 6 6 8 8 8
++20 20 20 0 0 0 14 14 14 48 48 48 40 40 40 16 16 16 13 13 13 21 21 21
++19 19 19 21 21 21 17 17 17 34 34 34 53 53 53 42 42 42 27 27 27 40 40 40
++53 53 53 59 59 59 66 66 66 70 70 70 71 71 71 70 70 70 69 69 69 68 68 68
++69 69 69 72 72 72 76 76 76 78 78 78 80 80 80 80 80 80 80 80 80 81 81 81
++82 82 82 84 84 84 87 87 87 93 93 93 95 95 94 89 89 89 88 88 88 96 96 96
++99 99 99 95 95 94 93 93 93 96 96 96 103 103 102 105 105 105 105 104 105 101 101 101
++105 104 105 105 105 105 109 110 110 112 112 113 115 116 115 112 112 113 115 116 115 117 117 117
++115 116 115 121 121 119 121 121 119 125 122 126 128 128 128 128 128 128 121 121 119 109 110 110
++112 112 113 105 105 105 109 110 110 122 121 126 133 133 133 129 129 130 121 121 119 115 116 115
++121 121 119 117 117 117 122 121 126 134 134 134 142 143 144 139 139 139 131 131 131 128 128 128
++147 147 148 144 145 144 147 147 148 137 138 139 147 147 148 147 147 148 142 143 144 129 129 130
++137 137 137 137 137 137 149 149 149 152 153 154 152 153 154 149 149 149 144 145 144 140 140 140
++144 145 144 137 137 137 142 143 144 149 151 153 160 161 160 157 157 157 158 159 161 144 145 144
++105 105 105 6 8 11 14 16 19 11 13 16 1 3 7 10 11 14 11 13 16 1 3 7
++10 11 14 8 10 13 8 10 13 10 11 14 10 11 14 10 11 14 8 10 13 6 8 11
++11 11 11 20 20 20 38 38 38 56 56 56 43 43 43 57 57 57 53 53 53 43 43 43
++78 79 82 231 224 220 246 251 251 231 224 220 231 224 220 200 220 210 238 240 244 238 240 244
++238 240 244 238 240 244 252 251 251 238 240 244 200 220 210 143 144 144 87 88 90 94 94 95
++112 112 113 117 117 117 127 127 127 137 137 137 137 138 139 131 131 131 133 133 133 137 137 137
++134 134 134 134 134 134 133 133 133 133 133 133 131 131 131 129 129 130 129 129 130 129 129 130
++133 133 133 131 131 131 129 129 130 129 129 130 128 128 128 125 125 127 121 121 119 117 117 117
++115 116 115 115 116 115 117 117 117 115 116 115 112 112 113 117 117 117 127 127 127 128 128 128
++129 129 130 127 127 127 121 121 119 117 117 117 122 121 126 121 121 119 105 105 105 99 99 99
++99 99 99 99 99 99 99 99 99 103 103 102 105 105 105 109 110 110 105 105 105 103 103 102
++99 99 99 88 88 88 78 78 78 78 78 78 81 81 81 88 88 88 93 93 93 90 90 90
++101 101 101 82 82 82 71 71 71 61 61 61 52 52 52 70 70 70 82 82 82 69 69 69
++49 49 49 65 65 65 81 81 81 73 73 73 78 78 78 59 59 59 50 50 50 65 65 65
++45 45 45 52 52 52 70 70 70 60 60 60 33 33 33 25 25 25 37 37 37 57 57 57
++59 59 59 39 39 39 27 27 27 23 23 23 29 29 29 32 32 32 49 49 49 27 27 27
++19 19 19 21 21 21 17 17 17 19 19 19 20 20 20 39 39 39 48 48 48 14 14 14
++49 49 49 28 28 28 19 19 19 34 34 34 46 46 46 43 43 43 40 40 40 44 44 44
++42 42 42 34 34 34 19 19 19 17 17 17 13 13 13 17 17 17 38 38 38 37 37 37
++34 34 34 36 36 36 37 37 37 38 38 38 38 38 38 38 38 38 37 37 37 36 36 36
++36 36 36 34 34 34 33 33 33 33 33 33 32 32 32 32 32 32 33 33 33 33 33 33
++32 32 32 32 32 32 33 33 33 31 31 31 40 40 40 44 44 44 24 24 24 16 16 16
++8 8 8 13 13 13 17 17 17 27 27 27 6 6 6 16 16 16 27 27 27 39 39 39
++28 28 28 19 19 19 19 19 19 31 31 31 10 10 10 11 11 11 11 11 11 11 11 11
++19 19 19 37 37 37 36 36 36 20 20 20 6 6 6 20 20 20 36 36 36 21 21 21
++32 32 32 36 36 36 38 38 38 37 37 37 32 32 32 29 29 29 33 33 33 38 38 38
++33 33 33 31 31 31 24 24 24 21 21 21 29 29 29 39 39 39 38 38 38 31 31 31
++21 21 21 25 25 25 32 32 32 34 34 34 25 25 25 14 14 14 16 16 16 25 25 25
++34 34 34 31 31 31 24 24 24 16 16 16 10 10 10 10 10 10 10 10 10 11 11 11
++13 13 13 8 8 8 14 14 14 25 25 25 29 29 29 25 25 25 23 23 23 27 27 27
++20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 20 20 20 19 19 19
++21 21 21 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19
++
++0 0 0 0 0 0 23 23 23 44 44 44 25 25 25 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 4 4 4 45 45 45 4 4 4 4 4 4 0 0 0
++0 0 0 8 8 8 0 0 0 0 0 0 23 23 23 33 33 33 16 16 16 0 0 0
++0 0 0 8 8 8 4 4 4 0 0 0 0 0 0 24 24 24 28 28 28 17 17 17
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 11 11 23 23 23 29 29 29
++10 10 10 0 0 0 0 0 0 6 6 6 17 17 17 17 17 17 14 14 14 14 14 14
++4 4 4 8 8 8 13 13 13 13 13 13 11 11 11 6 6 6 0 0 0 0 0 0
++10 10 10 4 4 4 10 10 10 13 13 13 6 6 6 10 10 10 17 17 17 14 14 14
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 6 6 6 3 3 3 0 0 0 6 6 6 21 21 21
++10 10 10 19 19 19 13 13 13 10 10 10 16 16 16 14 14 14 4 4 4 6 6 6
++11 11 11 25 25 25 21 21 21 6 6 6 10 10 10 19 19 19 19 19 19 16 16 16
++16 16 16 17 17 17 16 16 16 13 13 13 11 11 11 10 10 10 11 11 11 11 11 11
++10 10 10 21 21 21 38 38 38 36 36 36 17 17 17 14 14 14 20 20 20 16 16 16
++28 28 28 14 14 14 32 32 32 49 49 49 40 40 40 39 39 39 53 53 53 57 57 57
++66 66 66 67 67 67 68 68 68 68 68 68 67 67 67 68 68 68 70 70 70 72 72 72
++69 69 69 69 69 69 72 72 72 76 76 76 81 81 81 83 83 83 81 81 81 78 78 78
++80 80 80 84 84 84 85 85 85 87 87 87 91 91 91 88 88 88 88 88 88 95 95 94
++92 92 92 90 90 90 90 90 90 96 96 96 103 103 102 105 105 105 105 104 105 101 101 101
++105 104 105 105 105 105 109 110 110 109 110 110 109 110 110 115 116 115 115 116 115 115 116 115
++115 116 115 115 116 115 117 117 117 121 121 119 122 121 126 127 127 127 127 127 127 121 121 119
++121 121 119 115 116 115 109 110 110 109 110 110 121 121 119 131 131 131 129 129 130 121 121 119
++117 117 117 117 117 117 117 117 117 121 121 119 133 133 133 142 143 144 140 140 140 133 133 133
++144 145 144 140 140 140 142 143 144 127 127 127 137 137 137 149 149 149 147 147 148 137 137 137
++137 137 137 133 133 133 144 145 144 147 147 148 145 146 147 152 153 154 149 149 149 145 146 147
++140 140 140 137 137 137 139 139 139 145 146 147 157 157 157 152 153 154 155 156 156 137 137 137
++50 51 53 0 0 4 14 16 19 6 8 11 11 13 16 10 11 14 16 20 21 10 11 14
++11 13 16 10 11 14 8 10 13 10 11 14 11 13 16 11 13 16 11 13 16 10 11 14
++4 4 4 20 20 20 51 51 51 56 56 56 40 40 40 54 54 54 50 50 50 49 49 49
++43 44 47 139 140 142 231 224 220 200 220 210 231 224 220 238 240 244 238 240 244 238 240 244
++238 240 244 246 251 251 238 240 244 161 161 162 87 88 90 81 81 81 94 94 95 96 97 98
++101 101 101 112 112 113 117 117 117 125 122 126 140 140 140 137 138 139 128 128 128 134 134 134
++133 133 133 133 133 133 131 131 131 129 129 130 129 129 130 128 128 128 128 128 128 128 128 128
++131 131 131 129 129 130 128 128 128 128 128 128 127 127 127 125 125 127 121 121 119 121 121 119
++115 116 115 117 117 117 117 117 117 115 116 115 112 112 113 121 121 119 122 121 126 117 117 117
++117 117 117 117 117 117 112 112 113 109 110 110 112 112 113 109 110 110 101 101 101 99 99 99
++94 94 94 96 96 96 99 99 99 99 99 99 96 97 98 94 94 94 92 92 92 91 91 91
++90 90 90 81 81 81 80 80 80 78 78 78 75 75 75 81 81 81 85 85 85 82 82 82
++88 88 88 71 71 71 68 68 68 67 67 67 56 56 56 60 60 60 72 72 72 70 70 70
++59 59 59 50 50 50 69 69 69 63 63 63 57 57 57 56 56 56 62 62 62 56 56 56
++49 49 49 39 39 39 49 49 49 50 50 50 40 40 40 37 37 37 36 36 36 42 42 42
++45 45 45 32 32 32 36 36 36 39 39 39 43 43 43 34 34 34 45 45 45 36 36 36
++27 27 27 32 32 32 25 25 25 25 25 25 28 28 28 28 28 28 28 28 28 20 20 20
++28 28 28 16 16 16 20 20 20 38 38 38 43 43 43 31 31 31 23 23 23 27 27 27
++24 24 24 20 20 20 16 16 16 20 20 20 16 16 16 16 16 16 23 23 23 16 16 16
++23 23 23 21 21 21 28 28 28 38 38 38 37 37 37 25 25 25 19 19 19 21 21 21
++20 20 20 20 20 20 19 19 19 19 19 19 17 17 17 19 19 19 19 19 19 19 19 19
++20 20 20 17 17 17 24 24 24 32 32 32 43 43 43 39 39 39 14 14 14 10 10 10
++11 11 11 17 17 17 14 14 14 19 19 19 11 11 11 31 31 31 34 34 34 33 33 33
++16 16 16 10 10 10 14 14 14 27 27 27 4 4 4 13 13 13 17 17 17 21 21 21
++43 43 43 28 28 28 14 14 14 20 20 20 16 16 16 8 8 8 20 20 20 19 19 19
++13 13 13 21 21 21 31 31 31 32 32 32 27 27 27 21 21 21 19 19 19 19 19 19
++14 14 14 20 20 20 21 21 21 21 21 21 24 24 24 29 29 29 28 28 28 20 20 20
++17 17 17 13 13 13 11 11 11 16 16 16 19 19 19 16 16 16 17 17 17 21 21 21
++29 29 29 25 25 25 17 17 17 10 10 10 10 10 10 14 14 14 13 13 13 10 10 10
++11 11 11 11 11 11 20 20 20 31 31 31 31 31 31 21 21 21 16 16 16 19 19 19
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 16 16 16 16 16 16
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16
++
++10 10 10 0 0 0 0 0 0 25 25 25 43 43 43 24 24 24 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 6 6 6 8 8 8 50 50 50 10 10 10 8 8 8
++0 0 0 0 0 0 8 8 8 4 4 4 0 0 0 21 21 21 34 34 34 17 17 17
++0 0 0 0 0 0 6 6 6 3 3 3 0 0 0 4 4 4 21 21 21 33 33 33
++13 13 13 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 11 11 11
++28 28 28 10 10 10 0 0 0 0 0 0 17 17 17 20 20 20 16 16 16 11 11 11
++0 0 0 6 6 6 13 13 13 14 14 14 10 10 10 4 4 4 0 0 0 0 0 0
++6 6 6 0 0 0 8 8 8 16 16 16 8 8 8 10 10 10 17 17 17 14 14 14
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 16 16 31 31 31
++8 8 8 10 10 10 8 8 8 10 10 10 14 14 14 11 11 11 11 11 11 17 17 17
++16 16 16 19 19 19 10 10 10 11 11 11 23 23 23 19 19 19 11 11 11 23 23 23
++25 25 25 13 13 13 4 4 4 8 8 8 14 14 14 14 14 14 13 13 13 13 13 13
++14 14 14 43 43 43 38 38 38 13 13 13 13 13 13 17 17 17 13 13 13 14 14 14
++14 14 14 33 33 33 50 50 50 52 52 52 49 49 49 54 54 54 63 63 63 65 65 65
++58 58 58 62 62 62 68 68 68 71 71 71 71 71 71 70 70 70 69 69 69 68 68 68
++71 71 71 71 71 71 72 72 72 76 76 76 81 81 81 83 83 83 83 83 83 82 82 82
++82 82 82 90 90 90 87 87 87 81 81 81 89 89 89 95 95 94 93 93 93 95 95 94
++87 87 87 91 91 91 96 97 98 99 99 99 101 101 101 101 101 101 103 103 102 105 104 105
++105 105 105 105 105 105 105 105 105 105 105 105 109 110 110 115 116 115 117 117 117 112 112 113
++109 110 110 115 116 115 121 121 119 121 121 119 121 121 119 121 121 119 125 125 127 128 128 128
++121 121 119 125 125 127 121 121 119 109 110 110 109 110 110 121 121 119 129 129 130 131 131 131
++115 116 115 121 121 119 117 117 117 115 116 115 121 121 119 134 134 134 142 143 144 140 140 140
++140 140 140 129 129 130 139 139 139 127 127 127 129 129 130 137 137 137 144 145 144 149 149 149
++137 137 137 129 129 130 140 140 140 142 143 144 139 139 139 152 153 154 149 151 153 149 151 153
++139 139 139 140 140 140 137 138 139 142 143 144 152 153 154 144 145 144 142 143 144 127 127 127
++14 16 19 6 8 11 10 11 14 1 3 7 16 20 21 1 3 7 11 13 16 11 13 16
++14 16 19 10 11 14 6 8 11 6 8 11 10 11 14 11 13 16 10 11 14 6 8 11
++14 14 14 29 29 29 51 51 51 53 53 53 49 49 49 54 54 54 49 49 49 57 57 57
++51 52 54 49 50 52 180 183 185 238 240 244 238 240 244 246 251 251 246 251 251 238 240 244
++246 251 251 180 183 185 83 83 83 54 54 54 83 83 83 74 74 74 80 80 80 92 92 92
++99 99 99 109 110 110 112 112 113 115 116 115 134 134 134 140 140 140 127 127 127 128 128 128
++129 129 130 129 129 130 129 129 130 128 128 128 128 128 128 127 127 127 127 127 127 125 125 127
++128 128 128 127 127 127 125 125 127 125 125 127 125 125 127 125 125 127 122 121 126 121 121 119
++117 117 117 117 117 117 117 117 117 112 112 113 109 110 110 115 116 115 117 117 117 109 110 110
++105 105 105 109 110 110 105 105 105 105 105 105 105 105 105 101 101 101 94 94 94 96 96 96
++99 99 99 96 97 98 95 95 94 93 93 93 89 89 89 85 85 85 85 85 85 88 88 88
++87 87 87 76 76 76 80 80 80 77 77 77 71 71 71 77 77 77 80 80 80 78 78 78
++68 68 68 60 60 60 65 65 65 74 74 74 70 70 70 58 58 58 57 57 57 63 63 63
++59 59 59 56 56 56 63 63 63 51 51 51 57 57 57 58 58 58 57 57 57 52 52 52
++50 50 50 44 44 44 46 46 46 40 40 40 43 43 43 56 56 56 46 46 46 31 31 31
++36 36 36 27 27 27 40 40 40 49 49 49 53 53 53 40 40 40 38 38 38 24 24 24
++31 31 31 33 33 33 24 24 24 24 24 24 32 32 32 28 28 28 25 25 25 34 34 34
++17 17 17 20 20 20 32 32 32 43 43 43 40 40 40 28 28 28 20 20 20 23 23 23
++25 25 25 17 17 17 16 16 16 19 19 19 19 19 19 23 23 23 27 27 27 20 20 20
++24 24 24 20 20 20 24 24 24 34 34 34 32 32 32 20 20 20 16 16 16 23 23 23
++20 20 20 19 19 19 19 19 19 17 17 17 17 17 17 19 19 19 19 19 19 20 20 20
++25 25 25 24 24 24 32 32 32 37 37 37 39 39 39 29 29 29 10 10 10 16 16 16
++14 14 14 17 17 17 11 11 11 21 21 21 27 27 27 43 43 43 31 31 31 14 14 14
++14 14 14 13 13 13 17 17 17 25 25 25 4 4 4 20 20 20 29 29 29 33 33 33
++31 31 31 19 19 19 6 6 6 14 14 14 11 11 11 13 13 13 29 29 29 33 33 33
++24 24 24 31 31 31 34 34 34 36 36 36 34 34 34 33 33 33 31 31 31 27 27 27
++27 27 27 32 32 32 34 34 34 33 33 33 32 32 32 33 33 33 34 34 34 34 34 34
++39 39 39 32 32 32 25 25 25 24 24 24 29 29 29 33 33 33 32 32 32 28 28 28
++24 24 24 17 17 17 10 10 10 8 8 8 13 13 13 16 16 16 14 14 14 10 10 10
++13 13 13 23 23 23 28 28 28 25 25 25 25 25 25 31 31 31 31 31 31 25 25 25
++34 34 34 36 36 36 36 36 36 36 36 36 34 34 34 33 33 33 32 32 32 32 32 32
++33 33 33 34 34 34 34 34 34 34 34 34 34 34 34 33 33 33 32 32 32 32 32 32
++
++11 11 11 16 16 16 4 4 4 4 4 4 31 31 31 40 40 40 27 27 27 13 13 13
++8 8 8 13 13 13 11 11 11 13 13 13 16 16 16 16 16 16 53 53 53 16 16 16
++19 19 19 0 0 0 11 11 11 23 23 23 4 4 4 6 6 6 28 28 28 34 34 34
++19 19 19 11 11 11 11 11 11 17 17 17 13 13 13 4 4 4 14 14 14 31 31 31
++34 34 34 25 25 25 19 19 19 16 16 16 16 16 16 11 11 11 8 8 8 10 10 10
++28 28 28 24 24 24 17 17 17 11 11 11 14 14 14 21 21 21 17 17 17 10 10 10
++0 0 0 6 6 6 13 13 13 14 14 14 10 10 10 4 4 4 0 0 0 3 3 3
++4 4 4 0 0 0 11 11 11 14 14 14 4 4 4 11 11 11 19 19 19 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 17 17 17 21 21 21 20 20 20
++10 10 10 4 4 4 4 4 4 4 4 4 3 3 3 11 11 11 20 20 20 23 23 23
++16 16 16 10 10 10 8 8 8 13 13 13 14 14 14 10 10 10 14 14 14 28 28 28
++33 33 33 19 19 19 8 8 8 11 11 11 10 10 10 3 3 3 4 4 4 16 16 16
++31 31 31 33 33 33 17 17 17 8 8 8 20 20 20 14 14 14 6 6 6 23 23 23
++21 21 21 54 54 54 58 58 58 51 51 51 62 62 62 65 65 65 58 58 58 62 62 62
++65 65 65 66 66 66 67 67 67 67 67 67 67 67 67 67 67 67 68 68 68 69 69 69
++71 71 71 73 73 73 75 75 75 75 75 75 74 74 74 75 75 75 80 80 80 83 83 83
++81 81 81 78 78 78 70 70 70 73 73 73 87 87 87 87 87 87 83 83 83 92 92 92
++75 75 75 78 78 78 82 82 82 82 82 82 81 81 81 87 87 87 96 96 96 105 105 105
++105 105 105 99 99 99 99 99 99 103 103 102 105 105 105 109 110 110 115 116 115 112 112 113
++109 110 110 112 112 113 121 121 119 121 121 119 117 117 117 117 117 117 121 121 119 122 121 126
++122 121 126 125 125 127 125 125 127 121 121 119 115 116 115 112 112 113 121 121 119 129 129 130
++125 122 126 121 121 119 117 117 117 115 116 115 115 116 115 122 121 126 131 131 131 139 139 139
++142 143 144 128 128 128 140 140 140 128 128 128 127 127 127 127 127 127 133 133 133 147 147 148
++142 143 144 133 133 133 140 140 140 140 140 140 131 131 131 149 149 149 144 145 144 145 146 147
++144 145 144 144 145 144 134 134 134 140 140 140 152 153 154 133 133 133 134 134 134 128 128 128
++109 110 110 105 104 105 91 92 94 85 85 85 81 81 81 71 72 74 66 67 69 60 61 64
++51 52 54 46 47 50 42 43 45 39 40 43 40 42 44 42 43 45 40 42 44 37 39 42
++45 45 45 54 54 54 52 52 52 57 57 57 58 58 58 50 50 50 51 51 51 53 53 53
++51 52 54 50 51 53 134 134 134 246 251 251 238 240 244 238 240 244 238 240 244 231 224 220
++112 112 113 56 56 56 50 50 50 57 57 57 66 66 66 76 76 76 71 71 71 90 90 90
++92 92 92 96 97 98 105 104 105 105 105 105 121 121 119 133 133 133 128 128 128 127 127 127
++128 128 128 128 128 128 127 127 127 127 127 127 125 125 127 125 122 126 122 121 126 121 121 119
++125 125 127 125 122 126 122 121 126 122 121 126 122 121 126 121 121 119 121 121 119 117 117 117
++115 116 115 115 116 115 117 117 117 117 117 117 115 116 115 115 116 115 115 116 115 112 112 113
++109 110 110 112 112 113 109 110 110 109 110 110 109 110 110 103 103 102 94 94 94 95 95 94
++103 103 102 96 96 96 91 91 91 92 92 92 93 93 93 92 92 92 92 92 92 94 94 94
++91 91 91 74 74 74 78 78 78 75 75 75 71 71 71 81 81 81 83 83 83 78 78 78
++68 68 68 66 66 66 62 62 62 70 70 70 76 76 76 60 60 60 50 50 50 63 63 63
++73 73 73 78 78 78 68 68 68 43 43 43 61 61 61 56 56 56 46 46 46 62 62 62
++52 52 52 58 58 58 60 60 60 40 40 40 36 36 36 56 56 56 50 50 50 31 31 31
++29 29 29 28 28 28 44 44 44 45 45 45 56 56 56 52 52 52 46 46 46 27 27 27
++20 20 20 19 19 19 19 19 19 25 25 25 36 36 36 39 39 39 37 37 37 38 38 38
++19 19 19 29 29 29 40 40 40 44 44 44 42 42 42 40 40 40 42 42 42 43 43 43
++37 37 37 23 23 23 14 14 14 14 14 14 19 19 19 32 32 32 40 40 40 39 39 39
++40 40 40 38 38 38 39 39 39 43 43 43 40 40 40 36 36 36 37 37 37 42 42 42
++38 38 38 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 38 38 38 38 38 38
++37 37 37 38 38 38 43 43 43 38 38 38 36 36 36 28 28 28 11 11 11 14 14 14
++13 13 13 17 17 17 17 17 17 33 33 33 33 33 33 34 34 34 16 16 16 6 6 6
++14 14 14 17 17 17 21 21 21 28 28 28 11 11 11 29 29 29 36 36 36 29 29 29
++6 6 6 14 14 14 11 11 11 8 8 8 6 6 6 23 23 23 46 46 46 45 45 45
++42 42 42 42 42 42 40 40 40 40 40 40 44 44 44 49 49 49 45 45 45 39 39 39
++43 43 43 43 43 43 43 43 43 43 43 43 42 42 42 39 39 39 42 42 42 45 45 45
++51 51 51 50 50 50 44 44 44 39 39 39 40 40 40 44 44 44 38 38 38 28 28 28
++17 17 17 11 11 11 8 8 8 11 11 11 14 14 14 14 14 14 11 11 11 11 11 11
++23 23 23 25 25 25 25 25 25 24 24 24 31 31 31 40 40 40 40 40 40 34 34 34
++37 37 37 38 38 38 38 38 38 37 37 37 37 37 37 36 36 36 34 34 34 33 33 33
++36 36 36 36 36 36 37 37 37 37 37 37 37 37 37 36 36 36 34 34 34 34 34 34
++
++21 21 21 16 16 16 20 20 20 20 20 20 16 16 16 27 27 27 37 37 37 28 28 28
++19 19 19 17 17 17 20 20 20 21 21 21 20 20 20 20 20 20 21 21 21 59 59 59
++25 25 25 21 21 21 16 16 16 16 16 16 17 17 17 16 16 16 20 20 20 29 29 29
++46 46 46 29 29 29 16 16 16 20 20 20 24 24 24 20 20 20 16 16 16 17 17 17
++34 34 34 31 31 31 25 25 25 19 19 19 16 16 16 17 17 17 20 20 20 23 23 23
++16 16 16 36 36 36 40 40 40 25 25 25 13 13 13 17 17 17 17 17 17 8 8 8
++0 0 0 8 8 8 16 16 16 16 16 16 11 11 11 4 4 4 3 3 3 3 3 3
++4 4 4 4 4 4 14 14 14 11 11 11 0 0 0 13 13 13 20 20 20 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 4 4 4 3 3 3 0 0 0 11 11 11 29 29 29 21 21 21 0 0 0
++4 4 4 0 0 0 4 4 4 6 6 6 6 6 6 19 19 19 24 24 24 13 13 13
++0 0 0 0 0 0 10 10 10 6 6 6 0 0 0 6 6 6 31 31 31 38 38 38
++8 8 8 0 0 0 3 3 3 13 13 13 8 8 8 0 0 0 20 20 20 44 44 44
++34 34 34 14 14 14 4 4 4 13 13 13 16 16 16 13 13 13 19 19 19 25 25 25
++61 61 61 54 54 54 58 58 58 57 57 57 51 51 51 59 59 59 66 66 66 58 58 58
++67 67 67 68 68 68 68 68 68 68 68 68 66 66 66 66 66 66 66 66 66 68 68 68
++68 68 68 73 73 73 77 77 77 74 74 74 67 67 67 67 67 67 74 74 74 83 83 83
++73 73 73 53 53 53 42 42 42 63 63 63 80 80 80 63 63 63 58 58 58 82 82 82
++90 90 90 84 84 84 74 74 74 66 66 66 66 66 66 74 74 74 88 88 88 99 99 99
++103 103 102 89 89 89 88 88 88 99 99 99 103 103 102 105 104 105 109 110 110 109 110 110
++121 121 119 115 116 115 112 112 113 112 112 113 115 116 115 117 117 117 121 121 119 121 121 119
++128 128 128 121 121 119 121 121 119 128 128 128 128 128 128 115 116 115 112 112 113 121 121 119
++137 137 137 121 121 119 112 112 113 117 117 117 117 117 117 112 112 113 117 117 117 129 129 130
++145 146 147 131 131 131 142 143 144 129 129 130 125 122 126 122 121 126 125 125 127 133 133 133
++149 149 149 139 139 139 144 145 144 140 140 140 127 127 127 144 145 144 137 138 139 137 138 139
++152 153 154 149 149 149 133 133 133 137 137 137 149 149 149 128 128 128 133 133 133 139 139 139
++133 133 133 125 125 127 109 110 110 94 94 95 83 84 85 87 88 90 76 76 76 58 59 61
++63 65 67 58 59 61 51 52 54 49 50 52 49 50 52 49 50 52 46 47 50 46 47 50
++51 51 51 65 65 65 48 48 48 61 61 61 65 65 65 49 49 49 59 59 59 50 50 50
++51 52 54 56 57 59 49 50 52 200 220 210 238 240 244 246 251 251 149 151 153 60 61 64
++44 44 44 48 48 48 49 49 49 62 62 62 65 65 65 67 67 67 81 81 81 81 81 81
++93 93 93 94 94 94 112 112 113 112 112 113 112 112 113 129 129 130 133 133 133 127 127 127
++127 127 127 125 125 127 125 125 127 125 122 126 121 121 119 121 121 119 121 121 119 121 121 119
++125 125 127 125 122 126 122 121 126 122 121 126 121 121 119 117 117 117 112 112 113 109 110 110
++109 110 110 109 110 110 117 117 117 127 127 127 122 121 126 117 117 117 121 121 119 121 121 119
++121 121 119 117 117 117 115 116 115 115 116 115 117 117 117 109 110 110 99 99 99 96 97 98
++96 96 96 88 88 88 84 84 84 91 91 91 101 101 101 103 103 102 101 101 101 99 99 99
++96 96 96 75 75 75 76 76 76 73 73 73 72 72 72 87 87 87 87 87 87 82 82 82
++60 60 60 63 63 63 53 53 53 62 62 62 84 84 84 75 75 75 63 63 63 82 82 82
++83 83 83 74 74 74 81 81 81 67 67 67 60 60 60 49 49 49 45 45 45 43 43 43
++70 70 70 69 69 69 62 62 62 34 34 34 25 25 25 48 48 48 49 49 49 34 34 34
++24 24 24 37 37 37 51 51 51 33 33 33 31 31 31 31 31 31 34 34 34 19 19 19
++14 14 14 8 8 8 20 20 20 31 31 31 39 39 39 48 48 48 42 42 42 25 25 25
++28 28 28 42 42 42 50 50 50 45 45 45 40 40 40 42 42 42 40 40 40 38 38 38
++34 34 34 17 17 17 13 13 13 14 14 14 21 21 21 37 37 37 44 44 44 42 42 42
++38 38 38 40 40 40 42 42 42 39 39 39 38 38 38 40 40 40 43 43 43 44 44 44
++38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39
++37 37 37 40 40 40 42 42 42 34 34 34 38 38 38 39 39 39 20 20 20 13 13 13
++6 6 6 19 19 19 27 27 27 43 43 43 29 29 29 16 16 16 0 0 0 16 16 16
++11 11 11 19 19 19 24 24 24 32 32 32 19 19 19 36 36 36 33 33 33 17 17 17
++14 14 14 11 11 11 11 11 11 20 20 20 14 14 14 17 17 17 40 40 40 50 50 50
++44 44 44 40 40 40 37 37 37 37 37 37 44 44 44 51 51 51 46 46 46 38 38 38
++38 38 38 37 37 37 42 42 42 48 48 48 46 46 46 38 38 38 34 34 34 34 34 34
++43 43 43 49 49 49 48 48 48 39 39 39 37 37 37 38 38 38 29 29 29 14 14 14
++13 13 13 10 10 10 10 10 10 14 14 14 14 14 14 10 10 10 8 8 8 13 13 13
++32 32 32 20 20 20 17 17 17 29 29 29 40 40 40 42 42 42 39 39 39 38 38 38
++38 38 38 38 38 38 38 38 38 38 38 38 37 37 37 36 36 36 34 34 34 33 33 33
++37 37 37 37 37 37 38 38 38 38 38 38 38 38 38 37 37 37 36 36 36 34 34 34
++
++16 16 16 21 21 21 17 17 17 17 17 17 21 21 21 13 13 13 21 21 21 46 46 46
++29 29 29 17 17 17 16 16 16 21 21 21 17 17 17 13 13 13 20 20 20 29 29 29
++52 52 52 20 20 20 20 20 20 23 23 23 17 17 17 19 19 19 16 16 16 23 23 23
++37 37 37 33 33 33 25 25 25 19 19 19 19 19 19 23 23 23 21 21 21 17 17 17
++16 16 16 36 36 36 42 42 42 29 29 29 16 16 16 19 19 19 23 23 23 21 21 21
++27 27 27 17 17 17 27 27 27 36 36 36 25 25 25 16 16 16 11 11 11 0 0 0
++3 3 3 0 0 0 11 11 11 14 14 14 6 6 6 6 6 6 11 11 11 4 4 4
++16 16 16 8 8 8 0 0 0 3 3 3 10 10 10 13 13 13 10 10 10 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 13 13 13 36 36 36 16 16 16 0 0 0 4 4 4
++8 8 8 3 3 3 0 0 0 6 6 6 19 19 19 23 23 23 13 13 13 0 0 0
++0 0 0 6 6 6 10 10 10 0 0 0 3 3 3 34 34 34 38 38 38 6 6 6
++4 4 4 4 4 4 10 10 10 4 4 4 0 0 0 21 21 21 37 37 37 31 31 31
++8 8 8 16 16 16 19 19 19 13 13 13 8 8 8 20 20 20 43 43 43 61 61 61
++54 54 54 54 54 54 56 56 56 58 58 58 60 60 60 62 62 62 62 62 62 61 61 61
++72 72 72 65 65 65 60 60 60 62 62 62 66 66 66 66 66 66 65 65 65 66 66 66
++69 69 69 71 71 71 56 56 56 43 43 43 38 38 38 54 54 54 70 70 70 54 54 54
++76 76 76 66 66 66 59 59 59 77 77 77 62 62 62 57 57 57 59 59 59 60 60 60
++92 92 92 84 84 84 69 69 69 59 59 59 69 69 69 88 88 88 87 87 87 67 67 67
++90 90 90 103 103 102 96 97 98 85 85 85 81 81 81 81 81 81 88 88 88 103 103 102
++105 105 105 112 112 113 115 116 115 112 112 113 109 110 110 112 112 113 117 117 117 121 121 119
++121 121 119 125 125 127 125 122 126 121 121 119 121 121 119 127 127 127 121 121 119 112 112 113
++117 117 117 129 129 130 129 129 130 115 116 115 105 105 105 115 116 115 117 117 117 112 112 113
++133 133 133 139 139 139 142 143 144 137 138 139 121 121 119 115 116 115 127 127 127 127 127 127
++127 127 127 142 143 144 152 153 154 140 140 140 121 121 119 134 134 134 149 149 149 127 127 127
++133 133 133 144 145 144 152 153 154 137 138 139 142 143 144 133 133 133 125 122 126 127 127 127
++115 116 115 115 116 115 112 112 113 96 96 96 77 77 77 73 73 73 70 70 70 59 59 59
++53 53 53 54 54 54 52 52 52 46 46 46 46 46 46 50 50 50 50 50 50 46 46 46
++57 57 57 59 59 59 57 57 57 58 58 58 63 63 63 60 60 60 53 53 53 54 54 54
++53 53 53 51 51 51 61 61 61 69 69 69 160 161 160 78 78 78 43 43 43 45 45 45
++45 45 45 44 44 44 49 49 49 58 58 58 62 62 62 66 66 66 71 71 71 77 77 77
++87 87 87 92 92 92 96 97 98 103 103 102 112 112 113 125 122 126 128 128 128 127 127 127
++121 121 119 121 121 119 121 121 119 117 117 117 121 121 119 121 121 119 117 117 117 117 117 117
++121 121 119 115 116 115 115 116 115 121 121 119 117 117 117 112 112 113 105 105 105 105 105 105
++112 112 113 117 117 117 122 121 126 125 122 126 121 121 119 117 117 117 117 117 117 117 117 117
++115 116 115 115 116 115 115 116 115 109 110 110 112 112 113 109 110 110 95 95 94 95 95 94
++88 88 88 84 84 84 87 87 87 87 87 87 103 103 102 99 99 99 99 99 99 101 101 101
++89 89 89 73 73 73 68 68 68 74 74 74 81 81 81 69 69 69 62 62 62 88 88 88
++71 71 71 60 60 60 54 54 54 50 50 50 57 57 57 83 83 83 87 87 87 59 59 59
++68 68 68 77 77 77 65 65 65 70 70 70 67 67 67 44 44 44 42 42 42 37 37 37
++32 32 32 72 72 72 63 63 63 27 27 27 19 19 19 27 27 27 34 34 34 44 44 44
++52 52 52 42 42 42 28 28 28 16 16 16 36 36 36 58 58 58 57 57 57 57 57 57
++23 23 23 24 24 24 34 34 34 46 46 46 50 50 50 40 40 40 28 28 28 21 21 21
++45 45 45 44 44 44 42 42 42 42 42 42 43 43 43 43 43 43 42 42 42 39 39 39
++20 20 20 24 24 24 19 19 19 20 20 20 34 34 34 39 39 39 39 39 39 45 45 45
++39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
++39 39 39 37 37 37 37 37 37 39 39 39 38 38 38 34 34 34 36 36 36 40 40 40
++42 42 42 40 40 40 45 45 45 38 38 38 39 39 39 34 34 34 13 13 13 14 14 14
++6 6 6 29 29 29 44 44 44 40 40 40 4 4 4 11 11 11 16 16 16 10 10 10
++13 13 13 14 14 14 24 24 24 38 38 38 40 40 40 25 25 25 13 13 13 13 13 13
++13 13 13 17 17 17 14 14 14 14 14 14 11 11 11 21 21 21 42 42 42 43 43 43
++48 48 48 50 50 50 48 48 48 40 40 40 34 34 34 38 38 38 49 49 49 57 57 57
++45 45 45 40 40 40 36 36 36 39 39 39 49 49 49 50 50 50 42 42 42 33 33 33
++36 36 36 39 39 39 46 46 46 44 44 44 37 37 37 39 39 39 34 34 34 17 17 17
++14 14 14 11 11 11 13 13 13 16 16 16 13 13 13 11 11 11 23 23 23 37 37 37
++25 25 25 14 14 14 0 0 0 43 43 43 51 51 51 49 49 49 36 36 36 39 39 39
++40 40 40 38 38 38 40 40 40 39 39 39 34 34 34 37 37 37 40 40 40 36 36 36
++38 38 38 38 38 38 39 39 39 38 38 38 36 36 36 34 34 34 34 34 34 36 36 36
++
++40 40 40 10 10 10 13 13 13 24 24 24 10 10 10 10 10 10 21 21 21 16 16 16
++42 42 42 34 34 34 14 14 14 16 16 16 31 31 31 19 19 19 6 6 6 27 27 27
++14 14 14 51 51 51 25 25 25 14 14 14 21 21 21 8 8 8 20 20 20 14 14 14
++6 6 6 31 31 31 39 39 39 25 25 25 11 11 11 16 16 16 20 20 20 16 16 16
++6 6 6 13 13 13 24 24 24 33 33 33 27 27 27 13 13 13 8 8 8 13 13 13
++3 3 3 24 24 24 19 19 19 17 17 17 33 33 33 21 21 21 0 0 0 0 0 0
++6 6 6 0 0 0 6 6 6 14 14 14 13 13 13 11 11 11 8 8 8 0 0 0
++6 6 6 4 4 4 6 6 6 13 13 13 17 17 17 17 17 17 10 10 10 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 21 21 21 27 27 27 4 4 4 0 0 0 6 6 6 0 0 0
++0 0 0 0 0 0 10 10 10 24 24 24 25 25 25 11 11 11 0 0 0 4 4 4
++4 4 4 10 10 10 0 0 0 6 6 6 37 37 37 29 29 29 6 6 6 11 11 11
++0 0 0 16 16 16 6 6 6 0 0 0 23 23 23 38 38 38 27 27 27 10 10 10
++14 14 14 10 10 10 8 8 8 16 16 16 29 29 29 43 43 43 52 52 52 57 57 57
++56 56 56 54 54 54 53 53 53 53 53 53 54 54 54 58 58 58 63 63 63 67 67 67
++61 61 61 60 60 60 62 62 62 66 66 66 62 62 62 57 57 57 60 60 60 70 70 70
++68 68 68 37 37 37 43 43 43 38 38 38 52 52 52 72 72 72 53 53 53 49 49 49
++44 44 44 80 80 80 72 72 72 63 63 63 54 54 54 51 51 51 56 56 56 76 76 76
++65 65 65 89 89 89 81 81 81 67 67 67 81 81 81 80 80 80 63 63 63 68 68 68
++69 69 69 94 94 94 96 96 96 83 83 83 78 78 78 77 77 77 85 85 85 101 101 101
++84 84 84 101 101 101 115 116 115 115 116 115 112 112 113 112 112 113 115 116 115 112 112 113
++112 112 113 117 117 117 121 121 119 121 121 119 122 121 126 122 121 126 121 121 119 121 121 119
++121 121 119 121 121 119 125 122 126 125 122 126 117 117 117 109 110 110 109 110 110 115 116 115
++128 128 128 131 131 131 134 134 134 139 139 139 127 127 127 115 116 115 121 121 119 121 121 119
++122 121 126 128 128 128 140 140 140 144 145 144 129 129 130 128 128 128 140 140 140 131 131 131
++128 128 128 131 131 131 142 143 144 139 139 139 144 145 144 129 129 130 117 117 117 122 121 126
++121 121 119 105 105 105 99 99 99 99 99 99 87 87 87 69 69 69 61 61 61 59 59 59
++51 51 51 53 53 53 52 52 52 49 49 49 49 49 49 52 52 52 52 52 52 50 50 50
++56 56 56 60 60 60 60 60 60 62 62 62 69 69 69 66 66 66 58 58 58 57 57 57
++59 59 59 52 52 52 49 49 49 43 43 43 73 73 73 37 37 37 43 43 43 51 51 51
++44 44 44 45 45 45 50 50 50 58 58 58 61 61 61 65 65 65 70 70 70 77 77 77
++85 85 85 91 91 91 99 99 99 103 103 102 109 110 110 117 117 117 125 125 127 129 129 130
++117 117 117 115 116 115 117 117 117 121 121 119 115 116 115 115 116 115 115 116 115 115 116 115
++115 116 115 112 112 113 112 112 113 112 112 113 112 112 113 105 105 105 105 105 105 105 105 105
++117 117 117 121 121 119 121 121 119 121 121 119 121 121 119 117 117 117 115 116 115 117 117 117
++115 116 115 112 112 113 112 112 113 109 110 110 109 110 110 105 105 105 92 92 92 92 92 92
++87 87 87 85 85 85 84 84 84 81 81 81 103 103 102 105 104 105 101 101 101 90 90 90
++92 92 92 70 70 70 78 78 78 83 83 83 65 65 65 59 59 59 61 61 61 61 61 61
++61 61 61 58 58 58 53 53 53 58 58 58 70 70 70 75 75 75 72 72 72 71 71 71
++67 67 67 69 69 69 49 49 49 53 53 53 58 58 58 45 45 45 43 43 43 33 33 33
++46 46 46 75 75 75 68 68 68 53 53 53 39 39 39 16 16 16 23 23 23 44 44 44
++52 52 52 46 46 46 31 31 31 14 14 14 37 37 37 56 56 56 43 43 43 33 33 33
++49 49 49 50 50 50 52 52 52 50 50 50 42 42 42 34 34 34 37 37 37 44 44 44
++44 44 44 42 42 42 40 40 40 42 42 42 43 43 43 43 43 43 39 39 39 37 37 37
++20 20 20 16 16 16 11 11 11 19 19 19 33 33 33 38 38 38 38 38 38 39 39 39
++38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
++39 39 39 37 37 37 37 37 37 39 39 39 38 38 38 36 36 36 37 37 37 39 39 39
++37 37 37 34 34 34 37 37 37 36 36 36 43 43 43 39 39 39 14 14 14 8 8 8
++27 27 27 29 29 29 33 33 33 33 33 33 4 4 4 14 14 14 17 17 17 13 13 13
++10 10 10 14 14 14 28 28 28 37 37 37 31 31 31 16 16 16 10 10 10 11 11 11
++10 10 10 10 10 10 4 4 4 13 13 13 19 19 19 29 29 29 44 44 44 37 37 37
++37 37 37 40 40 40 43 43 43 44 44 44 40 40 40 37 37 37 39 39 39 43 43 43
++39 39 39 43 43 43 39 39 39 34 34 34 40 40 40 51 51 51 50 50 50 39 39 39
++36 36 36 40 40 40 50 50 50 50 50 50 45 45 45 43 43 43 33 33 33 11 11 11
++11 11 11 16 16 16 14 14 14 8 8 8 11 11 11 23 23 23 27 27 27 25 25 25
++13 13 13 20 20 20 21 21 21 44 44 44 50 50 50 53 53 53 52 52 52 45 45 45
++45 45 45 43 43 43 46 46 46 48 48 48 36 36 36 28 28 28 33 33 33 37 37 37
++50 50 50 50 50 50 48 48 48 44 44 44 39 39 39 36 36 36 33 33 33 33 33 33
++
++38 38 38 29 29 29 13 13 13 4 4 4 10 10 10 8 8 8 0 0 0 0 0 0
++16 16 16 33 33 33 20 20 20 0 0 0 0 0 0 6 6 6 0 0 0 0 0 0
++0 0 0 10 10 10 42 42 42 16 16 16 0 0 0 10 10 10 0 0 0 0 0 0
++0 0 0 3 3 3 20 20 20 27 27 27 16 16 16 0 0 0 0 0 0 4 4 4
++4 4 4 0 0 0 4 4 4 24 24 24 31 31 31 20 20 20 4 4 4 0 0 0
++4 4 4 0 0 0 3 3 3 10 10 10 20 20 20 29 29 29 20 20 20 0 0 0
++3 3 3 0 0 0 3 3 3 14 14 14 14 14 14 11 11 11 8 8 8 4 4 4
++6 6 6 8 8 8 13 13 13 16 16 16 17 17 17 14 14 14 6 6 6 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 3 3 3 6 6 6 0 0 0 0 0 0 0 0 0
++0 0 0 21 21 21 27 27 27 10 10 10 0 0 0 0 0 0 3 3 3 10 10 10
++0 0 0 6 6 6 23 23 23 28 28 28 19 19 19 0 0 0 0 0 0 4 4 4
++10 10 10 0 0 0 8 8 8 33 33 33 33 33 33 14 14 14 3 3 3 6 6 6
++13 13 13 4 4 4 0 0 0 16 16 16 37 37 37 29 29 29 10 10 10 10 10 10
++11 11 11 10 10 10 16 16 16 32 32 32 51 51 51 60 60 60 58 58 58 52 52 52
++52 52 52 53 53 53 54 54 54 56 56 56 57 57 57 59 59 59 62 62 62 65 65 65
++60 60 60 62 62 62 60 60 60 53 53 53 48 48 48 49 49 49 54 54 54 59 59 59
++45 45 45 38 38 38 24 24 24 58 58 58 67 67 67 46 46 46 52 52 52 37 37 37
++46 46 46 71 71 71 75 75 75 69 69 69 51 51 51 59 59 59 73 73 73 72 72 72
++57 57 57 57 57 57 83 83 83 99 99 99 80 80 80 61 61 61 66 66 66 70 70 70
++84 84 84 74 74 74 96 96 96 101 101 101 74 74 74 78 78 78 93 93 93 75 75 75
++80 80 80 78 78 78 92 92 92 112 112 113 115 116 115 105 105 105 105 105 105 115 116 115
++112 112 113 112 112 113 115 116 115 121 121 119 122 121 126 121 121 119 121 121 119 121 121 119
++121 121 119 115 116 115 121 121 119 127 127 127 127 127 127 115 116 115 109 110 110 109 110 110
++127 127 127 122 121 126 125 122 126 134 134 134 133 133 133 121 121 119 117 117 117 115 116 115
++121 121 119 115 116 115 128 128 128 144 145 144 137 138 139 128 128 128 134 134 134 131 131 131
++121 121 119 125 122 126 133 133 133 133 133 133 142 143 144 129 129 130 112 112 113 112 112 113
++121 121 119 99 99 99 89 89 89 93 93 93 87 87 87 69 69 69 58 58 58 54 54 54
++50 50 50 52 52 52 52 52 52 51 51 51 51 51 51 54 54 54 57 57 57 57 57 57
++58 58 58 63 63 63 63 63 63 68 68 68 75 75 75 74 74 74 66 66 66 63 63 63
++57 57 57 59 59 59 54 54 54 57 57 57 43 43 43 48 48 48 49 49 49 38 38 38
++44 44 44 48 48 48 53 53 53 58 58 58 60 60 60 63 63 63 70 70 70 76 76 76
++83 83 83 90 90 90 99 99 99 103 103 102 105 105 105 109 110 110 121 121 119 129 129 130
++117 117 117 112 112 113 115 116 115 121 121 119 112 112 113 112 112 113 112 112 113 112 112 113
++109 110 110 109 110 110 105 105 105 105 105 105 103 103 102 103 103 102 105 105 105 112 112 113
++121 121 119 121 121 119 121 121 119 117 117 117 115 116 115 115 116 115 115 116 115 115 116 115
++112 112 113 109 110 110 109 110 110 105 105 105 105 105 105 103 103 102 88 88 88 87 87 87
++87 87 87 82 82 82 81 81 81 81 81 81 101 101 101 99 99 99 95 95 94 88 88 88
++78 78 78 75 75 75 76 76 76 71 71 71 71 71 71 68 68 68 56 56 56 57 57 57
++60 60 60 60 60 60 66 66 66 75 75 75 72 72 72 54 54 54 53 53 53 71 71 71
++73 73 73 67 67 67 38 38 38 36 36 36 44 44 44 43 43 43 45 45 45 33 33 33
++48 48 48 65 65 65 49 49 49 57 57 57 58 58 58 33 33 33 39 39 39 51 51 51
++43 43 43 49 49 49 39 39 39 23 23 23 42 42 42 54 54 54 33 33 33 21 21 21
++49 49 49 46 46 46 43 43 43 34 34 34 24 24 24 23 23 23 34 34 34 48 48 48
++43 43 43 42 42 42 40 40 40 43 43 43 44 44 44 43 43 43 37 37 37 31 31 31
++27 27 27 16 16 16 17 17 17 31 31 31 40 40 40 45 45 45 45 45 45 42 42 42
++40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
++40 40 40 38 38 38 38 38 38 40 40 40 40 40 40 39 39 39 39 39 39 40 40 40
++44 44 44 42 42 42 42 42 42 38 38 38 43 43 43 38 38 38 17 17 17 13 13 13
++37 37 37 25 25 25 23 23 23 32 32 32 11 11 11 16 16 16 14 14 14 11 11 11
++14 14 14 20 20 20 36 36 36 38 38 38 19 19 19 8 8 8 13 13 13 10 10 10
++14 14 14 13 13 13 8 8 8 19 19 19 27 27 27 36 36 36 44 44 44 31 31 31
++37 37 37 44 44 44 52 52 52 51 51 51 38 38 38 25 25 25 31 31 31 45 45 45
++42 42 42 50 50 50 42 42 42 13 13 13 0 0 0 28 28 28 49 49 49 51 51 51
++25 25 25 27 27 27 33 33 33 42 42 42 49 49 49 51 51 51 36 36 36 10 10 10
++13 13 13 14 14 14 13 13 13 10 10 10 17 17 17 27 27 27 25 25 25 16 16 16
++11 11 11 3 3 3 21 21 21 44 44 44 46 46 46 32 32 32 46 46 46 50 50 50
++17 17 17 4 4 4 8 8 8 14 14 14 3 3 3 0 0 0 0 0 0 6 6 6
++0 0 0 0 0 0 8 8 8 13 13 13 17 17 17 21 21 21 25 25 25 28 28 28
++
++13 13 13 38 38 38 27 27 27 0 0 0 0 0 0 4 4 4 0 0 0 4 4 4
++0 0 0 19 19 19 34 34 34 19 19 19 0 0 0 0 0 0 8 8 8 0 0 0
++4 4 4 0 0 0 13 13 13 38 38 38 20 20 20 0 0 0 8 8 8 0 0 0
++11 11 11 0 0 0 0 0 0 20 20 20 28 28 28 16 16 16 0 0 0 0 0 0
++8 8 8 6 6 6 0 0 0 0 0 0 19 19 19 29 29 29 19 19 19 0 0 0
++6 6 6 0 0 0 0 0 0 4 4 4 3 3 3 23 23 23 34 34 34 19 19 19
++3 3 3 0 0 0 0 0 0 10 10 10 10 10 10 6 6 6 11 11 11 17 17 17
++17 17 17 16 16 16 13 13 13 11 11 11 8 8 8 4 4 4 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 8 8 8 6 6 6 0 0 0 0 0 0 0 0 0
++13 13 13 27 27 27 10 10 10 0 0 0 10 10 10 8 8 8 0 0 0 0 0 0
++4 4 4 23 23 23 28 28 28 13 13 13 0 0 0 3 3 3 4 4 4 0 0 0
++0 0 0 4 4 4 33 33 33 37 37 37 10 10 10 0 0 0 11 11 11 6 6 6
++10 10 10 0 0 0 13 13 13 37 37 37 29 29 29 10 10 10 8 8 8 11 11 11
++8 8 8 21 21 21 39 39 39 53 53 53 61 61 61 60 60 60 56 56 56 51 51 51
++53 53 53 53 53 53 54 54 54 58 58 58 61 61 61 62 62 62 61 61 61 59 59 59
++59 59 59 58 58 58 44 44 44 28 28 28 34 34 34 52 52 52 52 52 52 38 38 38
++27 27 27 32 32 32 59 59 59 65 65 65 51 51 51 37 37 37 34 34 34 54 54 54
++67 67 67 53 53 53 51 51 51 68 68 68 70 70 70 75 75 75 75 75 75 51 51 51
++48 48 48 63 63 63 75 75 75 87 87 87 87 87 87 67 67 67 60 60 60 81 81 81
++78 78 78 74 74 74 72 72 72 87 87 87 105 104 105 96 96 96 78 78 78 77 77 77
++84 84 84 71 71 71 76 76 76 99 99 99 109 110 110 103 103 102 99 99 99 105 105 105
++115 116 115 112 112 113 112 112 113 117 117 117 121 121 119 121 121 119 117 117 117 117 117 117
++121 121 119 117 117 117 117 117 117 121 121 119 125 125 127 127 127 127 115 116 115 105 104 105
++127 127 127 121 121 119 112 112 113 127 127 127 137 137 137 128 128 128 121 121 119 112 112 113
++121 121 119 117 117 117 121 121 119 137 137 137 137 138 139 137 137 137 139 139 139 129 129 130
++117 117 117 122 121 126 127 127 127 121 121 119 131 131 131 133 133 133 115 116 115 105 105 105
++109 110 110 99 99 99 88 88 88 81 81 81 77 77 77 73 73 73 63 63 63 52 52 52
++51 51 51 51 51 51 51 51 51 51 51 51 52 52 52 57 57 57 61 61 61 65 65 65
++63 63 63 69 69 69 68 68 68 69 69 69 76 76 76 78 78 78 74 74 74 73 73 73
++59 59 59 67 67 67 54 54 54 57 57 57 51 51 51 63 63 63 51 51 51 43 43 43
++46 46 46 51 51 51 57 57 57 60 60 60 61 61 61 63 63 63 70 70 70 77 77 77
++83 83 83 87 87 87 96 96 96 103 103 102 105 104 105 105 105 105 115 116 115 125 125 127
++125 122 126 112 112 113 109 110 110 115 116 115 109 110 110 109 110 110 112 112 113 105 105 105
++105 105 105 105 105 105 105 105 105 103 103 102 101 101 101 103 103 102 109 110 110 117 117 117
++121 121 119 121 121 119 115 116 115 115 116 115 115 116 115 115 116 115 112 112 113 112 112 113
++109 110 110 109 110 110 109 110 110 103 103 102 105 104 105 99 99 99 85 85 85 84 84 84
++87 87 87 76 76 76 80 80 80 84 84 84 95 95 94 82 82 82 87 87 87 96 97 98
++85 85 85 83 83 83 71 71 71 63 63 63 78 78 78 76 76 76 54 54 54 56 56 56
++62 62 62 57 57 57 76 76 76 87 87 87 59 59 59 40 40 40 53 53 53 63 63 63
++78 78 78 72 72 72 45 45 45 32 32 32 33 33 33 37 37 37 45 45 45 39 39 39
++60 60 60 65 65 65 28 28 28 37 37 37 58 58 58 50 50 50 51 51 51 34 34 34
++24 24 24 40 40 40 44 44 44 38 38 38 54 54 54 60 60 60 45 45 45 46 46 46
++40 40 40 36 36 36 32 32 32 32 32 32 34 34 34 39 39 39 44 44 44 48 48 48
++44 44 44 42 42 42 42 42 42 43 43 43 44 44 44 40 40 40 32 32 32 24 24 24
++19 19 19 8 8 8 20 20 20 37 37 37 40 40 40 42 42 42 43 43 43 39 39 39
++37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
++34 34 34 33 33 33 34 34 34 36 36 36 37 37 37 36 36 36 36 36 36 36 36 36
++32 32 32 37 37 37 37 37 37 34 34 34 36 36 36 33 33 33 29 29 29 36 36 36
++29 29 29 17 17 17 20 20 20 37 37 37 17 17 17 14 14 14 11 11 11 13 13 13
++27 27 27 28 28 28 40 40 40 39 39 39 16 16 16 10 10 10 17 17 17 10 10 10
++13 13 13 19 19 19 20 20 20 29 29 29 31 31 31 37 37 37 45 45 45 36 36 36
++13 13 13 24 24 24 42 42 42 52 52 52 44 44 44 24 24 24 19 19 19 25 25 25
++43 43 43 50 50 50 43 43 43 20 20 20 10 10 10 33 33 33 51 51 51 50 50 50
++45 45 45 46 46 46 48 48 48 46 46 46 44 44 44 42 42 42 29 29 29 13 13 13
++16 16 16 8 8 8 10 10 10 21 21 21 27 27 27 21 21 21 14 14 14 14 14 14
++16 16 16 0 0 0 29 29 29 50 50 50 50 50 50 20 20 20 39 39 39 42 42 42
++34 34 34 16 16 16 6 6 6 11 11 11 8 8 8 6 6 6 8 8 8 8 8 8
++13 13 13 14 14 14 13 13 13 10 10 10 4 4 4 0 0 0 0 0 0 0 0 0
++
++0 0 0 13 13 13 34 34 34 28 28 28 0 0 0 0 0 0 13 13 13 0 0 0
++4 4 4 0 0 0 20 20 20 39 39 39 23 23 23 0 0 0 3 3 3 8 8 8
++0 0 0 6 6 6 0 0 0 17 17 17 40 40 40 19 19 19 0 0 0 4 4 4
++6 6 6 6 6 6 0 0 0 0 0 0 16 16 16 33 33 33 27 27 27 3 3 3
++0 0 0 8 8 8 3 3 3 0 0 0 3 3 3 24 24 24 27 27 27 11 11 11
++0 0 0 11 11 11 0 0 0 0 0 0 4 4 4 0 0 0 11 11 11 42 42 42
++16 16 16 6 6 6 0 0 0 0 0 0 4 4 4 6 6 6 10 10 10 16 16 16
++16 16 16 13 13 13 10 10 10 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 3 3 3 4 4 4 0 0 0 0 0 0 3 3 3 13 13 13
++36 36 36 4 4 4 0 0 0 10 10 10 0 0 0 0 0 0 4 4 4 0 0 0
++24 24 24 28 28 28 19 19 19 0 0 0 0 0 0 4 4 4 6 6 6 0 0 0
++0 0 0 34 34 34 32 32 32 8 8 8 4 4 4 3 3 3 0 0 0 10 10 10
++0 0 0 13 13 13 36 36 36 33 33 33 10 10 10 6 6 6 14 14 14 4 4 4
++23 23 23 39 39 39 56 56 56 61 61 61 57 57 57 51 51 51 51 51 51 54 54 54
++59 59 59 56 56 56 53 53 53 57 57 57 61 61 61 62 62 62 57 57 57 50 50 50
++40 40 40 34 34 34 25 25 25 27 27 27 42 42 42 53 53 53 45 45 45 27 27 27
++27 27 27 43 43 43 63 63 63 52 52 52 38 38 38 39 39 39 48 48 48 68 68 68
++53 53 53 50 50 50 33 33 33 52 52 52 85 85 85 77 77 77 57 57 57 44 44 44
++50 50 50 75 75 75 70 70 70 54 54 54 71 71 71 89 89 89 85 85 85 76 76 76
++67 67 67 66 66 66 62 62 62 76 76 76 99 99 99 96 97 98 82 82 82 76 76 76
++75 75 75 82 82 82 83 83 83 84 84 84 94 94 94 105 105 105 101 101 101 87 87 87
++103 103 102 105 105 105 112 112 113 115 116 115 115 116 115 117 117 117 117 117 117 115 116 115
++117 117 117 121 121 119 121 121 119 115 116 115 121 121 119 127 127 127 121 121 119 112 112 113
++121 121 119 121 121 119 109 110 110 115 116 115 131 131 131 131 131 131 128 128 128 121 121 119
++115 116 115 115 116 115 117 117 117 127 127 127 131 131 131 133 133 133 140 140 140 137 137 137
++121 121 119 121 121 119 121 121 119 115 116 115 122 121 126 133 133 133 121 121 119 112 112 113
++101 101 101 101 101 101 90 90 90 73 73 73 69 69 69 72 72 72 68 68 68 59 59 59
++54 54 54 53 53 53 52 52 52 52 52 52 52 52 52 57 57 57 65 65 65 70 70 70
++71 71 71 76 76 76 73 73 73 70 70 70 75 75 75 81 81 81 81 81 81 82 82 82
++68 68 68 67 67 67 60 60 60 50 50 50 54 54 54 51 51 51 52 52 52 65 65 65
++51 51 51 57 57 57 62 62 62 63 63 63 63 63 63 67 67 67 73 73 73 78 78 78
++85 85 85 87 87 87 93 93 93 103 103 102 105 105 105 105 105 105 109 110 110 115 116 115
++128 128 128 115 116 115 105 105 105 109 110 110 109 110 110 109 110 110 105 105 105 103 103 102
++105 105 105 105 105 105 103 103 102 101 101 101 99 99 99 105 105 105 112 112 113 121 121 119
++117 117 117 115 116 115 112 112 113 112 112 113 112 112 113 112 112 113 109 110 110 109 110 110
++105 105 105 105 105 105 105 105 105 103 103 102 103 103 102 99 99 99 83 83 83 82 82 82
++84 84 84 76 76 76 78 78 78 80 80 80 87 87 87 73 73 73 83 83 83 101 101 101
++94 94 94 67 67 67 67 67 67 70 70 70 67 67 67 74 74 74 71 71 71 59 59 59
++56 56 56 53 53 53 69 69 69 72 72 72 54 54 54 52 52 52 63 63 63 61 61 61
++68 68 68 69 69 69 58 58 58 44 44 44 33 33 33 33 33 33 42 42 42 40 40 40
++61 61 61 65 65 65 24 24 24 29 29 29 51 51 51 50 50 50 53 53 53 29 29 29
++13 13 13 21 21 21 28 28 28 28 28 28 38 38 38 33 33 33 17 17 17 27 27 27
++29 29 29 27 27 27 27 27 27 32 32 32 42 42 42 46 46 46 43 43 43 38 38 38
++44 44 44 43 43 43 42 42 42 42 42 42 40 40 40 36 36 36 25 25 25 17 17 17
++11 11 11 13 13 13 31 31 31 44 44 44 40 40 40 38 38 38 40 40 40 39 39 39
++39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
++37 37 37 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 38 38 38 37 37 37
++33 33 33 40 40 40 38 38 38 38 38 38 40 40 40 37 37 37 36 36 36 40 40 40
++13 13 13 10 10 10 21 21 21 38 38 38 14 14 14 8 8 8 11 11 11 21 21 21
++34 34 34 29 29 29 37 37 37 34 34 34 14 14 14 11 11 11 19 19 19 6 6 6
++4 4 4 20 20 20 28 28 28 33 33 33 25 25 25 27 27 27 43 43 43 42 42 42
++11 11 11 0 0 0 8 8 8 32 32 32 48 48 48 43 43 43 31 31 31 23 23 23
++50 50 50 48 48 48 50 50 50 50 50 50 50 50 50 53 53 53 45 45 45 23 23 23
++39 39 39 48 48 48 46 46 46 32 32 32 13 13 13 0 0 0 3 3 3 11 11 11
++11 11 11 10 10 10 17 17 17 27 27 27 25 25 25 16 16 16 10 10 10 11 11 11
++11 11 11 20 20 20 49 49 49 53 53 53 52 52 52 37 37 37 46 46 46 23 23 23
++40 40 40 25 25 25 13 13 13 4 4 4 0 0 0 4 4 4 8 8 8 0 0 0
++6 6 6 6 6 6 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++
++0 0 0 0 0 0 21 21 21 36 36 36 28 28 28 10 10 10 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 17 17 17 33 33 33 19 19 19 0 0 0 0 0 0
++0 0 0 0 0 0 4 4 4 0 0 0 14 14 14 42 42 42 11 11 11 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 25 25 25 25 25 25
++0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 4 4 4 16 16 16 25 25 25
++13 13 13 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17
++25 25 25 17 17 17 0 0 0 0 0 0 4 4 4 8 8 8 3 3 3 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 17 17 17 27 27 27
++16 16 16 0 0 0 0 0 0 8 8 8 0 0 0 0 0 0 6 6 6 20 20 20
++29 29 29 17 17 17 4 4 4 3 3 3 4 4 4 3 3 3 3 3 3 6 6 6
++32 32 32 27 27 27 11 11 11 0 0 0 3 3 3 8 8 8 4 4 4 0 0 0
++17 17 17 32 32 32 25 25 25 8 8 8 4 4 4 4 4 4 11 11 11 28 28 28
++46 46 46 52 52 52 57 57 57 54 54 54 50 50 50 46 46 46 50 50 50 54 54 54
++52 52 52 53 53 53 57 57 57 61 61 61 61 61 61 54 54 54 40 40 40 29 29 29
++23 23 23 19 19 19 29 29 29 48 48 48 52 52 52 40 40 40 28 28 28 25 25 25
++49 49 49 62 62 62 36 36 36 33 33 33 40 40 40 45 45 45 66 66 66 52 52 52
++33 33 33 48 48 48 53 53 53 56 56 56 67 67 67 63 63 63 66 66 66 57 57 57
++78 78 78 70 70 70 63 63 63 53 53 53 56 56 56 83 83 83 90 90 90 65 65 65
++67 67 67 59 59 59 80 80 80 85 85 85 66 66 66 83 83 83 101 101 101 76 76 76
++73 73 73 77 77 77 77 77 77 74 74 74 81 81 81 95 95 94 103 103 102 101 101 101
++84 84 84 96 96 96 105 105 105 109 110 110 112 112 113 115 116 115 121 121 119 121 121 119
++115 116 115 117 117 117 121 121 119 121 121 119 115 116 115 115 116 115 121 121 119 125 122 126
++112 112 113 121 121 119 109 110 110 109 110 110 122 121 126 127 127 127 128 128 128 131 131 131
++112 112 113 112 112 113 109 110 110 121 121 119 125 125 127 121 121 119 129 129 130 142 143 144
++127 127 127 117 117 117 109 110 110 112 112 113 117 117 117 128 128 128 121 121 119 121 121 119
++101 101 101 101 101 101 89 89 89 75 75 75 69 69 69 67 67 67 66 66 66 69 69 69
++61 61 61 59 59 59 58 58 58 57 57 57 57 57 57 59 59 59 67 67 67 74 74 74
++77 77 77 85 85 85 81 81 81 74 74 74 77 77 77 82 82 82 84 84 84 87 87 87
++80 80 80 62 62 62 70 70 70 62 62 62 65 65 65 49 49 49 54 54 54 61 61 61
++58 58 58 63 63 63 68 68 68 68 68 68 68 68 68 72 72 72 77 77 77 81 81 81
++87 87 87 89 89 89 94 94 94 101 101 101 105 104 105 105 104 105 105 105 105 105 105 105
++125 125 127 117 117 117 105 105 105 103 103 102 105 105 105 105 105 105 103 103 102 99 99 99
++101 101 101 101 101 101 99 99 99 96 97 98 99 99 99 105 105 105 112 112 113 115 116 115
++112 112 113 112 112 113 112 112 113 112 112 113 112 112 113 112 112 113 109 110 110 105 105 105
++105 105 105 105 104 105 105 105 105 101 101 101 103 103 102 96 97 98 81 81 81 80 80 80
++80 80 80 78 78 78 76 76 76 69 69 69 81 81 81 80 80 80 87 87 87 90 90 90
++84 84 84 65 65 65 61 61 61 62 62 62 65 65 65 68 68 68 69 69 69 77 77 77
++54 54 54 58 58 58 53 53 53 52 52 52 61 61 61 66 66 66 61 61 61 56 56 56
++49 49 49 54 54 54 60 60 60 54 54 54 40 40 40 34 34 34 38 38 38 38 38 38
++40 40 40 52 52 52 36 36 36 43 43 43 49 49 49 39 39 39 50 50 50 48 48 48
++25 25 25 17 17 17 24 24 24 33 33 33 45 45 45 44 44 44 33 33 33 40 40 40
++40 40 40 43 43 43 45 45 45 45 45 45 45 45 45 46 46 46 45 45 45 42 42 42
++39 39 39 38 38 38 38 38 38 37 37 37 33 33 33 27 27 27 20 20 20 14 14 14
++13 13 13 24 24 24 39 39 39 44 44 44 38 38 38 34 34 34 37 37 37 38 38 38
++36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
++33 33 33 38 38 38 40 40 40 38 38 38 36 36 36 36 36 36 36 36 36 34 34 34
++36 36 36 40 40 40 33 33 33 38 38 38 44 44 44 36 36 36 24 24 24 14 14 14
++6 6 6 8 8 8 20 20 20 32 32 32 4 4 4 10 10 10 20 20 20 28 28 28
++29 29 29 21 21 21 25 25 25 24 24 24 13 13 13 10 10 10 14 14 14 8 8 8
++14 14 14 27 27 27 31 31 31 28 28 28 11 11 11 10 10 10 29 29 29 32 32 32
++28 28 28 11 11 11 0 0 0 16 16 16 33 33 33 39 39 39 38 38 38 36 36 36
++37 37 37 32 32 32 39 39 39 44 44 44 37 37 37 34 34 34 32 32 32 19 19 19
++31 31 31 34 34 34 29 29 29 20 20 20 16 16 16 13 13 13 16 16 16 24 24 24
++8 8 8 20 20 20 25 25 25 20 20 20 16 16 16 16 16 16 13 13 13 6 6 6
++10 10 10 19 19 19 33 33 33 37 37 37 34 34 34 28 28 28 37 37 37 20 20 20
++31 31 31 24 24 24 20 20 20 11 11 11 0 0 0 6 6 6 16 16 16 13 13 13
++17 17 17 17 17 17 16 16 16 13 13 13 11 11 11 13 13 13 17 17 17 21 21 21
++
++0 0 0 6 6 6 0 0 0 14 14 14 39 39 39 27 27 27 0 0 0 6 6 6
++0 0 0 6 6 6 0 0 0 0 0 0 17 17 17 32 32 32 24 24 24 4 4 4
++3 3 3 10 10 10 0 0 0 10 10 10 0 0 0 16 16 16 46 46 46 11 11 11
++11 11 11 0 0 0 0 0 0 11 11 11 8 8 8 0 0 0 14 14 14 36 36 36
++16 16 16 0 0 0 0 0 0 6 6 6 4 4 4 0 0 0 3 3 3 17 17 17
++29 29 29 3 3 3 3 3 3 10 10 10 0 0 0 3 3 3 10 10 10 0 0 0
++16 16 16 21 21 21 14 14 14 0 0 0 3 3 3 4 4 4 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 16 16 21 21 21 19 19 19
++0 0 0 6 6 6 3 3 3 0 0 0 4 4 4 6 6 6 14 14 14 34 34 34
++16 16 16 4 4 4 0 0 0 6 6 6 6 6 6 3 3 3 11 11 11 24 24 24
++34 34 34 0 0 0 0 0 0 10 10 10 0 0 0 3 3 3 17 17 17 8 8 8
++37 37 37 25 25 25 3 3 3 0 0 0 11 11 11 11 11 11 24 24 24 51 51 51
++56 56 56 53 53 53 51 51 51 48 48 48 48 48 48 49 49 49 51 51 51 52 52 52
++48 48 48 52 52 52 57 57 57 56 56 56 46 46 46 34 34 34 23 23 23 17 17 17
++19 19 19 29 29 29 45 45 45 53 53 53 42 42 42 25 25 25 27 27 27 40 40 40
++61 61 61 42 42 42 39 39 39 24 24 24 44 44 44 66 66 66 40 40 40 42 42 42
++36 36 36 49 49 49 68 68 68 59 59 59 43 43 43 49 49 49 80 80 80 70 70 70
++63 63 63 59 59 59 40 40 40 51 51 51 80 80 80 74 74 74 67 67 67 92 92 92
++63 63 63 78 78 78 75 75 75 67 67 67 70 70 70 74 74 74 82 82 82 99 99 99
++87 87 87 71 71 71 66 66 66 74 74 74 77 77 77 78 78 78 92 92 92 109 110 110
++91 91 91 90 90 90 92 92 92 99 99 99 105 104 105 109 110 110 112 112 113 117 117 117
++117 117 117 112 112 113 115 116 115 121 121 119 115 116 115 109 110 110 115 116 115 121 121 119
++117 117 117 121 121 119 105 105 105 105 104 105 117 117 117 115 116 115 115 116 115 125 125 127
++121 121 119 115 116 115 105 105 105 117 117 117 121 121 119 109 110 110 115 116 115 129 129 130
++129 129 130 121 121 119 112 112 113 109 110 110 109 110 110 121 121 119 112 112 113 112 112 113
++105 104 105 103 103 102 91 91 91 80 80 80 73 73 73 66 66 66 65 65 65 71 71 71
++68 68 68 66 66 66 66 66 66 66 66 66 63 63 63 62 62 62 68 68 68 75 75 75
++82 82 82 92 92 92 91 91 91 83 83 83 83 83 83 85 85 85 85 85 85 87 87 87
++90 90 90 72 72 72 70 70 70 63 63 63 62 62 62 59 59 59 53 53 53 57 57 57
++65 65 65 70 70 70 72 72 72 72 72 72 73 73 73 78 78 78 82 82 82 83 83 83
++88 88 88 93 93 93 96 97 98 99 99 99 101 101 101 103 103 102 103 103 102 103 103 102
++112 112 113 117 117 117 109 110 110 101 101 101 103 103 102 103 103 102 99 99 99 99 99 99
++99 99 99 99 99 99 96 96 96 95 95 94 101 101 101 109 110 110 112 112 113 112 112 113
++112 112 113 109 110 110 109 110 110 109 110 110 109 110 110 105 105 105 105 105 105 105 104 105
++101 101 101 101 101 101 103 103 102 99 99 99 101 101 101 95 95 94 80 80 80 78 78 78
++75 75 75 74 74 74 73 73 73 67 67 67 84 84 84 87 87 87 87 87 87 81 81 81
++77 77 77 74 74 74 62 62 62 54 54 54 68 68 68 67 67 67 59 59 59 81 81 81
++60 60 60 57 57 57 51 51 51 54 54 54 62 62 62 60 60 60 51 51 51 49 49 49
++44 44 44 43 43 43 51 51 51 53 53 53 44 44 44 39 39 39 38 38 38 36 36 36
++34 34 34 49 49 49 48 48 48 50 50 50 44 44 44 29 29 29 37 37 37 44 44 44
++37 37 37 23 23 23 29 29 29 36 36 36 38 38 38 40 40 40 34 34 34 34 34 34
++33 33 33 39 39 39 40 40 40 34 34 34 28 28 28 27 27 27 29 29 29 29 29 29
++31 31 31 31 31 31 31 31 31 28 28 28 23 23 23 19 19 19 16 16 16 14 14 14
++14 14 14 29 29 29 34 34 34 28 28 28 23 23 23 23 23 23 21 21 21 21 21 21
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++19 19 19 27 27 27 31 31 31 27 27 27 21 21 21 20 20 20 20 20 20 20 20 20
++14 14 14 21 21 21 14 14 14 25 25 25 36 36 36 27 27 27 16 16 16 0 0 0
++10 10 10 11 11 11 16 16 16 23 23 23 4 4 4 24 24 24 29 29 29 25 25 25
++17 17 17 11 11 11 14 14 14 17 17 17 11 11 11 6 6 6 11 11 11 19 19 19
++31 31 31 31 31 31 24 24 24 17 17 17 3 3 3 6 6 6 24 24 24 20 20 20
++20 20 20 21 21 21 23 23 23 25 25 25 24 24 24 21 21 21 20 20 20 20 20 20
++16 16 16 10 10 10 19 19 19 21 21 21 11 11 11 20 20 20 36 36 36 36 36 36
++19 19 19 20 20 20 14 14 14 13 13 13 21 21 21 19 19 19 8 8 8 6 6 6
++17 17 17 23 23 23 23 23 23 14 14 14 10 10 10 14 14 14 14 14 14 10 10 10
++11 11 11 19 19 19 14 14 14 24 24 24 13 13 13 13 13 13 21 21 21 24 24 24
++16 16 16 13 13 13 19 19 19 24 24 24 19 19 19 19 19 19 23 23 23 23 23 23
++21 21 21 20 20 20 16 16 16 13 13 13 11 11 11 13 13 13 19 19 19 24 24 24
++
++6 6 6 0 0 0 0 0 0 3 3 3 16 16 16 36 36 36 32 32 32 0 0 0
++0 0 0 0 0 0 6 6 6 3 3 3 0 0 0 17 17 17 39 39 39 29 29 29
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 45 45 45
++11 11 11 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6
++40 40 40 17 17 17 0 0 0 0 0 0 10 10 10 4 4 4 0 0 0 0 0 0
++16 16 16 28 28 28 19 19 19 0 0 0 3 3 3 3 3 3 0 0 0 8 8 8
++0 0 0 21 21 21 28 28 28 11 11 11 0 0 0 0 0 0 0 0 0 6 6 6
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 3 3 3 3 3 3 14 14 14 25 25 25 17 17 17 0 0 0
++4 4 4 0 0 0 10 10 10 0 0 0 0 0 0 20 20 20 34 34 34 13 13 13
++0 0 0 3 3 3 6 6 6 0 0 0 0 0 0 6 6 6 24 24 24 37 37 37
++0 0 0 6 6 6 3 3 3 3 3 3 8 8 8 0 0 0 8 8 8 36 36 36
++25 25 25 11 11 11 8 8 8 11 11 11 13 13 13 32 32 32 49 49 49 46 46 46
++52 52 52 50 50 50 48 48 48 49 49 49 50 50 50 52 52 52 51 51 51 50 50 50
++56 56 56 57 57 57 52 52 52 37 37 37 19 19 19 10 10 10 16 16 16 25 25 25
++20 20 20 43 43 43 53 53 53 39 39 39 21 21 21 24 24 24 44 44 44 61 61 61
++36 36 36 37 37 37 28 28 28 44 44 44 59 59 59 49 49 49 42 42 42 34 34 34
++43 43 43 60 60 60 57 57 57 38 38 38 44 44 44 42 42 42 65 65 65 76 76 76
++71 71 71 52 52 52 54 54 54 72 72 72 70 70 70 53 53 53 56 56 56 71 71 71
++90 90 90 78 78 78 65 65 65 63 63 63 65 65 65 56 56 56 62 62 62 87 87 87
++95 95 94 80 80 80 71 71 71 75 75 75 77 77 77 74 74 74 78 78 78 89 89 89
++112 112 113 90 90 90 76 76 76 84 84 84 96 97 98 105 104 105 105 105 105 109 110 110
++117 117 117 112 112 113 109 110 110 115 116 115 117 117 117 115 116 115 112 112 113 112 112 113
++129 129 130 125 122 126 99 99 99 101 101 101 121 121 119 109 110 110 103 103 102 109 110 110
++133 133 133 125 122 126 105 105 105 112 112 113 122 121 126 112 112 113 109 110 110 112 112 113
++129 129 130 128 128 128 117 117 117 105 105 105 101 101 101 117 117 117 105 105 105 96 97 98
++105 105 105 105 105 105 95 95 94 78 78 78 73 73 73 70 70 70 66 66 66 67 67 67
++71 71 71 70 70 70 71 71 71 72 72 72 69 69 69 66 66 66 69 69 69 75 75 75
++83 83 83 96 96 96 99 99 99 91 91 91 88 88 88 87 87 87 85 85 85 87 87 87
++91 91 91 94 94 94 78 78 78 70 70 70 65 65 65 73 73 73 54 54 54 69 69 69
++69 69 69 73 73 73 75 75 75 74 74 74 76 76 76 82 82 82 85 85 85 85 85 85
++89 89 89 96 96 96 101 101 101 99 99 99 96 96 96 99 99 99 103 103 102 103 103 102
++101 101 101 117 117 117 112 112 113 99 99 99 101 101 101 101 101 101 95 95 94 101 101 101
++99 99 99 99 99 99 96 96 96 96 97 98 105 105 105 115 116 115 115 116 115 109 110 110
++112 112 113 109 110 110 109 110 110 105 105 105 105 105 105 105 104 105 103 103 102 103 103 102
++99 99 99 99 99 99 101 101 101 96 97 98 99 99 99 94 94 94 78 78 78 76 76 76
++73 73 73 69 69 69 71 71 71 73 73 73 90 90 90 84 84 84 81 81 81 80 80 80
++75 75 75 57 57 57 59 59 59 61 61 61 62 62 62 75 75 75 81 81 81 81 81 81
++61 61 61 45 45 45 56 56 56 70 70 70 57 57 57 46 46 46 51 51 51 50 50 50
++53 53 53 40 40 40 43 43 43 48 48 48 44 44 44 43 43 43 40 40 40 37 37 37
++33 33 33 46 46 46 46 46 46 42 42 42 38 38 38 33 33 33 32 32 32 31 31 31
++33 33 33 25 25 25 36 36 36 34 34 34 24 24 24 29 29 29 29 29 29 27 27 27
++32 32 32 37 37 37 37 37 37 31 31 31 24 24 24 25 25 25 28 28 28 28 28 28
++23 23 23 24 24 24 24 24 24 21 21 21 16 16 16 13 13 13 14 14 14 16 16 16
++25 25 25 39 39 39 36 36 36 20 20 20 20 20 20 21 21 21 16 16 16 16 16 16
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++21 21 21 32 32 32 36 36 36 31 31 31 23 23 23 21 21 21 23 23 23 23 23 23
++21 21 21 32 32 32 25 25 25 32 32 32 36 36 36 24 24 24 20 20 20 13 13 13
++13 13 13 13 13 13 11 11 11 20 20 20 13 13 13 37 37 37 34 34 34 14 14 14
++6 6 6 6 6 6 10 10 10 16 16 16 14 14 14 6 6 6 13 13 13 31 31 31
++33 33 33 25 25 25 10 10 10 6 6 6 8 8 8 20 20 20 33 33 33 25 25 25
++31 31 31 33 33 33 32 32 32 29 29 29 25 25 25 24 24 24 23 23 23 21 21 21
++33 33 33 21 21 21 27 27 27 33 33 33 32 32 32 38 38 38 36 36 36 13 13 13
++6 6 6 25 25 25 33 33 33 34 34 34 31 31 31 17 17 17 6 6 6 13 13 13
++31 31 31 20 20 20 11 11 11 13 13 13 11 11 11 8 8 8 10 10 10 17 17 17
++3 3 3 42 42 42 36 36 36 32 32 32 14 14 14 32 32 32 29 29 29 17 17 17
++11 11 11 0 0 0 11 11 11 29 29 29 29 29 29 21 21 21 17 17 17 13 13 13
++3 3 3 3 3 3 4 4 4 6 6 6 13 13 13 21 21 21 32 32 32 39 39 39
++
++8 8 8 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 32 32 32 31 31 31
++0 0 0 0 0 0 8 8 8 11 11 11 0 0 0 0 0 0 13 13 13 37 37 37
++23 23 23 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 3 3 3 0 0 0
++44 44 44 10 10 10 0 0 0 6 6 6 3 3 3 0 0 0 3 3 3 0 0 0
++14 14 14 29 29 29 28 28 28 3 3 3 0 0 0 0 0 0 6 6 6 0 0 0
++0 0 0 16 16 16 24 24 24 16 16 16 0 0 0 0 0 0 4 4 4 8 8 8
++0 0 0 0 0 0 13 13 13 31 31 31 11 11 11 0 0 0 6 6 6 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 8 8 8 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 13 13 13 25 25 25 10 10 10 0 0 0 6 6 6
++4 4 4 0 0 0 0 0 0 0 0 0 21 21 21 32 32 32 20 20 20 0 0 0
++0 0 0 6 6 6 4 4 4 0 0 0 10 10 10 29 29 29 27 27 27 8 8 8
++10 10 10 0 0 0 4 4 4 6 6 6 0 0 0 16 16 16 38 38 38 31 31 31
++4 4 4 3 3 3 4 4 4 19 19 19 34 34 34 46 46 46 49 49 49 48 48 48
++51 51 51 45 45 45 42 42 42 46 46 46 49 49 49 46 46 46 48 48 48 51 51 51
++60 60 60 42 42 42 21 21 21 14 14 14 19 19 19 21 21 21 17 17 17 14 14 14
++34 34 34 56 56 56 34 34 34 20 20 20 23 23 23 42 42 42 61 61 61 37 37 37
++28 28 28 31 31 31 39 39 39 57 57 57 46 46 46 28 28 28 37 37 37 38 38 38
++57 57 57 53 53 53 43 43 43 36 36 36 45 45 45 60 60 60 58 58 58 44 44 44
++57 57 57 75 75 75 71 71 71 60 60 60 62 62 62 54 54 54 49 49 49 65 65 65
++80 80 80 82 82 82 69 69 69 57 57 57 62 62 62 70 70 70 66 66 66 62 62 62
++80 80 80 90 90 90 82 82 82 67 67 67 70 70 70 81 81 81 80 80 80 74 74 74
++87 87 87 103 103 102 99 99 99 80 80 80 80 80 80 92 92 92 101 101 101 105 105 105
++112 112 113 115 116 115 115 116 115 112 112 113 109 110 110 112 112 113 112 112 113 109 110 110
++99 99 99 115 116 115 122 121 126 96 97 98 99 99 99 121 121 119 105 105 105 99 99 99
++101 101 101 122 121 126 125 125 127 115 116 115 117 117 117 115 116 115 103 103 102 103 103 102
++112 112 113 128 128 128 127 127 127 112 112 113 99 99 99 105 105 105 115 116 115 94 94 94
++89 89 89 103 103 102 105 105 105 90 90 90 76 76 76 75 75 75 74 74 74 70 70 70
++66 66 66 76 76 76 85 85 85 82 82 82 75 75 75 74 74 74 76 76 76 77 77 77
++87 87 87 91 91 91 96 96 96 95 95 94 94 94 94 93 93 93 91 91 91 88 88 88
++85 85 85 83 83 83 78 78 78 74 74 74 71 71 71 70 70 70 70 70 70 71 71 71
++73 73 73 72 72 72 74 74 74 81 81 81 83 83 83 84 84 84 88 88 88 95 95 94
++94 94 94 96 96 96 99 99 99 101 101 101 103 103 102 101 101 101 99 99 99 96 96 96
++94 94 94 105 105 105 115 116 115 105 105 105 92 92 92 94 94 94 96 97 98 91 91 91
++96 96 96 89 89 89 91 91 91 105 104 105 112 112 113 109 110 110 105 105 105 109 110 110
++105 105 105 105 105 105 105 105 105 105 104 105 103 103 102 101 101 101 99 99 99 99 99 99
++96 97 98 101 101 101 96 97 98 93 93 93 96 96 96 91 91 91 77 77 77 71 71 71
++71 71 71 70 70 70 72 72 72 72 72 72 74 74 74 85 85 85 88 88 88 76 76 76
++53 53 53 58 58 58 58 58 58 52 52 52 59 59 59 71 71 71 75 75 75 77 77 77
++54 54 54 54 54 54 61 61 61 60 60 60 49 49 49 45 45 45 49 49 49 48 48 48
++48 48 48 45 45 45 33 33 33 31 31 31 38 38 38 56 56 56 67 67 67 53 53 53
++44 44 44 44 44 44 44 44 44 48 48 48 48 48 48 31 31 31 16 16 16 23 23 23
++27 27 27 45 45 45 50 50 50 43 43 43 39 39 39 39 39 39 40 40 40 49 49 49
++49 49 49 45 45 45 40 40 40 38 38 38 39 39 39 42 42 42 43 43 43 43 43 43
++36 36 36 34 34 34 29 29 29 20 20 20 11 11 11 11 11 11 21 21 21 29 29 29
++38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 37 37 37 37 37 37 37 37 37
++38 38 38 38 38 38 38 38 38 37 37 37 37 37 37 37 37 37 37 37 37 36 36 36
++36 36 36 38 38 38 39 39 39 38 38 38 36 36 36 33 33 33 33 33 33 34 34 34
++31 31 31 40 40 40 43 43 43 36 36 36 32 32 32 33 33 33 25 25 25 13 13 13
++14 14 14 8 8 8 0 0 0 14 14 14 31 31 31 27 27 27 14 14 14 14 14 14
++8 8 8 6 6 6 11 11 11 8 8 8 0 0 0 16 16 16 32 32 32 34 34 34
++23 23 23 8 8 8 8 8 8 14 14 14 14 14 14 23 23 23 33 33 33 36 36 36
++21 21 21 32 32 32 38 38 38 43 43 43 43 43 43 27 27 27 8 8 8 6 6 6
++34 34 34 50 50 50 46 46 46 43 43 43 38 38 38 51 51 51 43 43 43 43 43 43
++27 27 27 49 49 49 32 32 32 14 14 14 36 36 36 34 34 34 16 16 16 25 25 25
++20 20 20 17 17 17 11 11 11 10 10 10 11 11 11 11 11 11 11 11 11 10 10 10
++6 6 6 43 43 43 49 49 49 39 39 39 10 10 10 10 10 10 44 44 44 38 38 38
++0 0 0 8 8 8 0 0 0 6 6 6 39 39 39 34 34 34 4 4 4 0 0 0
++0 0 0 3 3 3 11 11 11 10 10 10 13 13 13 32 32 32 34 34 34 13 13 13
++
++6 6 6 0 0 0 0 0 0 10 10 10 0 0 0 0 0 0 17 17 17 37 37 37
++31 31 31 10 10 10 0 0 0 0 0 0 6 6 6 0 0 0 4 4 4 14 14 14
++40 40 40 25 25 25 0 0 0 0 0 0 11 11 11 0 0 0 0 0 0 6 6 6
++8 8 8 33 33 33 20 20 20 0 0 0 4 4 4 6 6 6 0 0 0 0 0 0
++0 0 0 17 17 17 28 28 28 23 23 23 4 4 4 0 0 0 0 0 0 11 11 11
++0 0 0 3 3 3 16 16 16 21 21 21 16 16 16 0 0 0 0 0 0 0 0 0
++3 3 3 10 10 10 3 3 3 8 8 8 24 24 24 17 17 17 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6 0 0 0
++0 0 0 0 0 0 21 21 21 29 29 29 6 6 6 3 3 3 13 13 13 0 0 0
++4 4 4 0 0 0 4 4 4 23 23 23 27 27 27 13 13 13 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 10 10 10 23 23 23 25 25 25 14 14 14 0 0 0
++3 3 3 6 6 6 0 0 0 0 0 0 19 19 19 33 33 33 25 25 25 14 14 14
++0 0 0 4 4 4 16 16 16 29 29 29 42 42 42 48 48 48 49 49 49 46 46 46
++48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 50 50 50 49 49 49 48 48 48
++38 38 38 21 21 21 13 13 13 19 19 19 19 19 19 13 13 13 21 21 21 36 36 36
++53 53 53 32 32 32 28 28 28 21 21 21 36 36 36 51 51 51 32 32 32 25 25 25
++29 29 29 29 29 29 60 60 60 44 44 44 27 27 27 38 38 38 38 38 38 59 59 59
++51 51 51 39 39 39 33 33 33 42 42 42 54 54 54 57 57 57 49 49 49 40 40 40
++49 49 49 65 65 65 74 74 74 62 62 62 45 45 45 52 52 52 67 67 67 68 68 68
++59 59 59 77 77 77 80 80 80 66 66 66 60 60 60 61 61 61 62 62 62 63 63 63
++69 69 69 83 83 83 88 88 88 82 82 82 73 73 73 66 66 66 68 68 68 77 77 77
++78 78 78 94 94 94 99 99 99 93 93 93 84 84 84 78 78 78 85 85 85 99 99 99
++105 104 105 109 110 110 112 112 113 112 112 113 109 110 110 112 112 113 112 112 113 109 110 110
++105 104 105 109 110 110 121 121 119 109 110 110 105 105 105 112 112 113 99 99 99 101 101 101
++96 97 98 109 110 110 115 116 115 121 121 119 122 121 126 109 110 110 96 97 98 105 105 105
++105 105 105 121 121 119 122 121 126 117 117 117 105 105 105 103 103 102 105 105 105 99 99 99
++91 91 91 91 91 91 94 94 94 96 96 96 88 88 88 75 75 75 71 71 71 76 76 76
++73 73 73 81 81 81 87 87 87 87 87 87 83 83 83 81 81 81 83 83 83 85 85 85
++87 87 87 91 91 91 93 93 93 92 92 92 92 92 92 94 94 94 95 95 94 94 94 94
++88 88 88 85 85 85 80 80 80 75 75 75 73 73 73 73 73 73 73 73 73 74 74 74
++75 75 75 78 78 78 82 82 82 84 84 84 87 87 87 89 89 89 91 91 91 91 91 91
++99 99 99 96 97 98 96 97 98 96 97 98 96 97 98 99 99 99 99 99 99 99 99 99
++95 95 94 99 99 99 109 110 110 105 105 105 96 97 98 91 91 91 92 92 92 89 89 89
++90 90 90 89 89 89 94 94 94 105 104 105 109 110 110 105 105 105 105 104 105 105 105 105
++103 103 102 103 103 102 103 103 102 101 101 101 101 101 101 99 99 99 96 97 98 96 97 98
++95 95 94 99 99 99 94 94 94 91 91 91 94 94 94 89 89 89 76 76 76 70 70 70
++63 63 63 69 69 69 74 74 74 71 71 71 67 67 67 75 75 75 84 84 84 82 82 82
++62 62 62 61 61 61 61 61 61 56 56 56 54 54 54 70 70 70 73 73 73 60 60 60
++67 67 67 59 59 59 58 58 58 57 57 57 50 50 50 49 49 49 49 49 49 44 44 44
++51 51 51 54 54 54 43 43 43 29 29 29 23 23 23 40 40 40 63 63 63 61 61 61
++46 46 46 38 38 38 29 29 29 37 37 37 49 49 49 44 44 44 28 28 28 24 24 24
++40 40 40 53 53 53 57 57 57 52 52 52 49 49 49 42 42 42 38 38 38 43 43 43
++49 49 49 48 48 48 45 45 45 43 43 43 42 42 42 40 40 40 38 38 38 37 37 37
++33 33 33 28 28 28 19 19 19 11 11 11 13 13 13 20 20 20 29 29 29 36 36 36
++38 38 38 38 38 38 38 38 38 38 38 38 37 37 37 37 37 37 37 37 37 37 37 37
++38 38 38 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 36 36 36 36 36 36
++37 37 37 37 37 37 36 36 36 36 36 36 36 36 36 34 34 34 34 34 34 33 33 33
++36 36 36 34 34 34 33 33 33 34 34 34 34 34 34 31 31 31 20 20 20 10 10 10
++6 6 6 16 16 16 20 20 20 25 25 25 29 29 29 21 21 21 10 10 10 10 10 10
++6 6 6 10 10 10 8 8 8 0 0 0 6 6 6 27 27 27 32 32 32 19 19 19
++16 16 16 10 10 10 11 11 11 11 11 11 4 4 4 3 3 3 8 8 8 13 13 13
++33 33 33 16 16 16 19 19 19 49 49 49 54 54 54 19 19 19 0 0 0 0 0 0
++11 11 11 44 44 44 49 49 49 36 36 36 23 23 23 40 40 40 46 46 46 56 56 56
++49 49 49 44 44 44 10 10 10 0 0 0 10 10 10 25 25 25 21 21 21 25 25 25
++17 17 17 14 14 14 11 11 11 10 10 10 11 11 11 13 13 13 13 13 13 11 11 11
++16 16 16 49 49 49 49 49 49 40 40 40 23 23 23 14 14 14 42 42 42 48 48 48
++37 37 37 3 3 3 0 0 0 14 14 14 14 14 14 34 34 34 38 38 38 0 0 0
++0 0 0 16 16 16 31 31 31 34 34 34 34 34 34 42 42 42 46 46 46 43 43 43
++
++34 34 34 10 10 10 0 0 0 6 6 6 3 3 3 0 0 0 0 0 0 14 14 14
++39 39 39 23 23 23 3 3 3 0 0 0 0 0 0 6 6 6 0 0 0 0 0 0
++21 21 21 37 37 37 25 25 25 0 0 0 0 0 0 6 6 6 4 4 4 6 6 6
++0 0 0 19 19 19 32 32 32 19 19 19 0 0 0 0 0 0 4 4 4 0 0 0
++0 0 0 0 0 0 19 19 19 31 31 31 23 23 23 0 0 0 0 0 0 10 10 10
++0 0 0 0 0 0 4 4 4 16 16 16 21 21 21 16 16 16 0 0 0 0 0 0
++10 10 10 0 0 0 0 0 0 6 6 6 11 11 11 21 21 21 19 19 19 0 0 0
++4 4 4 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 6 6 6 4 4 4 0 0 0
++0 0 0 20 20 20 27 27 27 16 16 16 4 4 4 3 3 3 3 3 3 3 3 3
++0 0 0 4 4 4 17 17 17 28 28 28 19 19 19 0 0 0 0 0 0 4 4 4
++4 4 4 0 0 0 4 4 4 24 24 24 28 28 28 14 14 14 0 0 0 0 0 0
++0 0 0 6 6 6 0 0 0 3 3 3 33 33 33 33 33 33 11 11 11 0 0 0
++0 0 0 13 13 13 28 28 28 42 42 42 48 48 48 49 49 49 46 46 46 44 44 44
++45 45 45 49 49 49 49 49 49 46 46 46 49 49 49 51 51 51 44 44 44 32 32 32
++14 14 14 10 10 10 10 10 10 16 16 16 14 14 14 17 17 17 32 32 32 50 50 50
++33 33 33 27 27 27 0 0 0 42 42 42 54 54 54 29 29 29 37 37 37 24 24 24
++37 37 37 58 58 58 44 44 44 38 38 38 25 25 25 28 28 28 59 59 59 49 49 49
++37 37 37 31 31 31 36 36 36 51 51 51 53 53 53 43 43 43 40 40 40 48 48 48
++61 61 61 62 62 62 71 71 71 67 67 67 51 51 51 57 57 57 66 66 66 57 57 57
++50 50 50 57 57 57 69 69 69 78 78 78 73 73 73 56 56 56 54 54 54 69 69 69
++59 59 59 67 67 67 80 80 80 88 88 88 82 82 82 66 66 66 65 65 65 77 77 77
++69 69 69 76 76 76 88 88 88 96 97 98 93 93 93 78 78 78 75 75 75 87 87 87
++94 94 94 101 101 101 109 110 110 109 110 110 109 110 110 109 110 110 109 110 110 109 110 110
++109 110 110 105 104 105 115 116 115 109 110 110 109 110 110 115 116 115 101 101 101 95 95 94
++93 93 93 95 95 94 101 101 101 115 116 115 125 122 126 109 110 110 96 96 96 101 101 101
++99 99 99 112 112 113 115 116 115 117 117 117 112 112 113 105 105 105 105 104 105 101 101 101
++92 92 92 85 85 85 87 87 87 99 99 99 99 99 99 87 87 87 78 78 78 83 83 83
++78 78 78 81 81 81 85 85 85 87 87 87 85 85 85 83 83 83 84 84 84 87 87 87
++91 91 91 94 94 94 95 95 94 93 93 93 94 94 94 96 96 96 95 95 94 92 92 92
++89 89 89 87 87 87 82 82 82 81 81 81 81 81 81 81 81 81 80 80 80 77 77 77
++81 81 81 87 87 87 87 87 87 87 87 87 89 89 89 95 95 94 95 95 94 90 90 90
++96 97 98 96 97 98 96 96 96 96 96 96 96 96 96 96 96 96 96 97 98 99 99 99
++95 95 94 92 92 92 99 99 99 105 105 105 101 101 101 90 90 90 87 87 87 87 87 87
++84 84 84 90 90 90 99 99 99 105 105 105 105 105 105 105 104 105 101 101 101 101 101 101
++101 101 101 99 99 99 99 99 99 96 97 98 96 96 96 95 95 94 95 95 94 95 95 94
++92 92 92 95 95 94 91 91 91 89 89 89 91 91 91 87 87 87 76 76 76 68 68 68
++65 65 65 72 72 72 78 78 78 74 74 74 68 68 68 71 71 71 76 76 76 75 75 75
++73 73 73 60 60 60 57 57 57 56 56 56 51 51 51 63 63 63 71 71 71 56 56 56
++68 68 68 54 54 54 50 50 50 54 54 54 59 59 59 57 57 57 48 48 48 36 36 36
++38 38 38 54 54 54 56 56 56 43 43 43 27 27 27 37 37 37 59 59 59 57 57 57
++50 50 50 38 38 38 23 23 23 25 25 25 40 40 40 44 44 44 37 37 37 31 31 31
++40 40 40 46 46 46 49 49 49 51 51 51 52 52 52 46 46 46 43 43 43 48 48 48
++49 49 49 49 49 49 49 49 49 46 46 46 42 42 42 37 37 37 32 32 32 29 29 29
++25 25 25 17 17 17 10 10 10 13 13 13 21 21 21 32 32 32 37 37 37 38 38 38
++38 38 38 38 38 38 37 37 37 37 37 37 37 37 37 37 37 37 36 36 36 36 36 36
++37 37 37 37 37 37 37 37 37 37 37 37 36 36 36 36 36 36 36 36 36 36 36 36
++36 36 36 34 34 34 33 33 33 33 33 33 34 34 34 36 36 36 34 34 34 33 33 33
++38 38 38 40 40 40 37 37 37 25 25 25 11 11 11 3 3 3 4 4 4 6 6 6
++8 8 8 24 24 24 31 31 31 28 28 28 21 21 21 13 13 13 6 6 6 10 10 10
++11 11 11 8 8 8 0 0 0 0 0 0 20 20 20 31 31 31 23 23 23 6 6 6
++8 8 8 13 13 13 13 13 13 13 13 13 13 13 13 10 10 10 16 16 16 29 29 29
++21 21 21 37 37 37 31 31 31 13 13 13 24 24 24 40 40 40 29 29 29 0 0 0
++34 34 34 50 50 50 44 44 44 37 37 37 33 33 33 39 39 39 37 37 37 36 36 36
++53 53 53 40 40 40 13 13 13 0 0 0 10 10 10 24 24 24 21 21 21 17 17 17
++11 11 11 11 11 11 10 10 10 10 10 10 13 13 13 13 13 13 13 13 13 13 13 13
++8 8 8 38 38 38 34 34 34 36 36 36 37 37 37 31 31 31 43 43 43 50 50 50
++48 48 48 33 33 33 27 27 27 13 13 13 0 0 0 17 17 17 40 40 40 39 39 39
++37 37 37 38 38 38 36 36 36 33 33 33 31 31 31 23 23 23 17 17 17 19 19 19
++
++43 43 43 32 32 32 14 14 14 0 0 0 0 0 0 6 6 6 3 3 3 0 0 0
++13 13 13 28 28 28 28 28 28 6 6 6 0 0 0 0 0 0 4 4 4 0 0 0
++0 0 0 16 16 16 37 37 37 24 24 24 0 0 0 0 0 0 14 14 14 0 0 0
++4 4 4 0 0 0 17 17 17 34 34 34 14 14 14 0 0 0 0 0 0 0 0 0
++8 8 8 0 0 0 0 0 0 17 17 17 28 28 28 23 23 23 6 6 6 0 0 0
++4 4 4 6 6 6 0 0 0 0 0 0 14 14 14 31 31 31 23 23 23 0 0 0
++3 3 3 0 0 0 3 3 3 10 10 10 0 0 0 13 13 13 27 27 27 13 13 13
++3 3 3 0 0 0 0 0 0 6 6 6 6 6 6 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 3 3 3 6 6 6 4 4 4 0 0 0 0 0 0 0 0 0
++16 16 16 32 32 32 19 19 19 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 17 17 17 23 23 23 11 11 11 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 3 3 3 17 17 17 25 25 25 19 19 19 0 0 0 0 0 0 6 6 6
++0 0 0 0 0 0 11 11 11 28 28 28 27 27 27 13 13 13 0 0 0 0 0 0
++13 13 13 25 25 25 39 39 39 48 48 48 49 49 49 46 46 46 44 44 44 44 44 44
++44 44 44 44 44 44 43 43 43 45 45 45 49 49 49 45 45 45 29 29 29 11 11 11
++10 10 10 16 16 16 14 14 14 8 8 8 16 16 16 32 32 32 40 40 40 39 39 39
++19 19 19 20 20 20 40 40 40 48 48 48 38 38 38 24 24 24 19 19 19 38 38 38
++54 54 54 42 42 42 36 36 36 25 25 25 34 34 34 51 51 51 43 43 43 34 34 34
++27 27 27 37 37 37 51 51 51 53 53 53 40 40 40 31 31 31 42 42 42 60 60 60
++59 59 59 49 49 49 46 46 46 61 61 61 74 74 74 70 70 70 57 57 57 50 50 50
++57 57 57 48 48 48 53 53 53 73 73 73 80 80 80 67 67 67 56 56 56 58 58 58
++61 61 61 58 58 58 63 63 63 77 77 77 87 87 87 81 81 81 70 70 70 66 66 66
++71 71 71 67 67 67 71 71 71 87 87 87 96 97 98 91 91 91 78 78 78 72 72 72
++83 83 83 92 92 92 103 103 102 105 105 105 105 105 105 105 105 105 105 104 105 105 104 105
++105 105 105 105 104 105 109 110 110 99 99 99 101 101 101 121 121 119 112 112 113 92 92 92
++90 90 90 91 91 91 92 92 92 101 101 101 115 116 115 117 117 117 105 104 105 92 92 92
++92 92 92 105 104 105 105 105 105 109 110 110 109 110 110 112 112 113 112 112 113 101 101 101
++89 89 89 88 88 88 88 88 88 92 92 92 99 99 99 101 101 101 94 94 94 84 84 84
++85 85 85 84 84 84 84 84 84 87 87 87 87 87 87 87 87 87 88 88 88 90 90 90
++92 92 92 93 93 93 93 93 93 96 96 96 103 103 102 105 105 105 99 99 99 91 91 91
++87 87 87 84 84 84 84 84 84 87 87 87 89 89 89 89 89 89 87 87 87 83 83 83
++87 87 87 88 88 88 87 87 87 85 85 85 89 89 89 95 95 94 99 99 99 96 96 96
++92 92 92 93 93 93 95 95 94 96 96 96 96 96 96 96 96 96 95 95 94 94 94 94
++94 94 94 89 89 89 92 92 92 101 101 101 99 99 99 90 90 90 84 84 84 84 84 84
++82 82 82 93 93 93 103 103 102 105 104 105 103 103 102 101 101 101 99 99 99 96 97 98
++99 99 99 96 97 98 95 95 94 94 94 94 93 93 93 93 93 93 93 93 93 93 93 93
++90 90 90 91 91 91 89 89 89 87 87 87 88 88 88 87 87 87 76 76 76 68 68 68
++67 67 67 66 66 66 63 63 63 60 60 60 61 61 61 67 67 67 67 67 67 62 62 62
++82 82 82 66 66 66 52 52 52 53 53 53 51 51 51 53 53 53 65 65 65 63 63 63
++58 58 58 45 45 45 40 40 40 54 54 54 67 67 67 65 65 65 48 48 48 29 29 29
++21 21 21 43 43 43 52 52 52 51 51 51 46 46 46 51 51 51 59 59 59 44 44 44
++46 46 46 43 43 43 34 34 34 27 27 27 25 25 25 28 28 28 32 32 32 33 33 33
++44 44 44 42 42 42 43 43 43 48 48 48 49 49 49 44 44 44 43 43 43 46 46 46
++43 43 43 45 45 45 45 45 45 42 42 42 36 36 36 28 28 28 23 23 23 21 21 21
++14 14 14 14 14 14 17 17 17 25 25 25 34 34 34 39 39 39 38 38 38 34 34 34
++37 37 37 37 37 37 37 37 37 36 36 36 36 36 36 36 36 36 36 36 36 34 34 34
++37 37 37 37 37 37 36 36 36 36 36 36 36 36 36 36 36 36 34 34 34 34 34 34
++33 33 33 34 34 34 34 34 34 34 34 34 33 33 33 33 33 33 34 34 34 37 37 37
++36 36 36 34 34 34 21 21 21 0 0 0 0 0 0 0 0 0 13 13 13 13 13 13
++21 21 21 28 28 28 27 27 27 16 16 16 8 8 8 10 10 10 11 11 11 11 11 11
++16 16 16 4 4 4 3 3 3 20 20 20 31 31 31 20 20 20 8 8 8 11 11 11
++13 13 13 16 16 16 10 10 10 6 6 6 13 13 13 14 14 14 23 23 23 39 39 39
++42 42 42 38 38 38 20 20 20 0 0 0 3 3 3 29 29 29 43 43 43 43 43 43
++40 40 40 37 37 37 25 25 25 36 36 36 48 48 48 39 39 39 20 20 20 0 0 0
++39 39 39 40 40 40 32 32 32 24 24 24 25 25 25 21 21 21 11 11 11 11 11 11
++10 10 10 10 10 10 10 10 10 11 11 11 13 13 13 13 13 13 11 11 11 11 11 11
++24 24 24 38 38 38 32 32 32 36 36 36 46 46 46 44 44 44 39 39 39 25 25 25
++42 42 42 33 33 33 24 24 24 20 20 20 25 25 25 32 32 32 39 39 39 45 45 45
++44 44 44 34 34 34 11 11 11 0 0 0 10 10 10 4 4 4 0 0 0 0 0 0
++
++11 11 11 29 29 29 32 32 32 14 14 14 0 0 0 0 0 0 4 4 4 3 3 3
++0 0 0 19 19 19 33 33 33 23 23 23 4 4 4 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 17 17 17 38 38 38 24 24 24 0 0 0 0 0 0 0 0 0
++4 4 4 3 3 3 0 0 0 11 11 11 32 32 32 16 16 16 0 0 0 8 8 8
++6 6 6 0 0 0 0 0 0 0 0 0 16 16 16 28 28 28 21 21 21 3 3 3
++0 0 0 6 6 6 0 0 0 0 0 0 0 0 0 21 21 21 27 27 27 20 20 20
++0 0 0 10 10 10 0 0 0 0 0 0 10 10 10 4 4 4 3 3 3 27 27 27
++14 14 14 3 3 3 0 0 0 0 0 0 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 3 3 3 10 10 10 4 4 4 0 0 0 0 0 0 13 13 13
++31 31 31 11 11 11 8 8 8 4 4 4 0 0 0 0 0 0 8 8 8 0 0 0
++13 13 13 23 23 23 17 17 17 0 0 0 0 0 0 6 6 6 8 8 8 0 0 0
++0 0 0 16 16 16 23 23 23 14 14 14 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 11 11 11 25 25 25 28 28 28 14 14 14 0 0 0 0 0 0 10 10 10
++29 29 29 37 37 37 45 45 45 48 48 48 45 45 45 42 42 42 42 42 42 44 44 44
++43 43 43 42 42 42 44 44 44 48 48 48 43 43 43 29 29 29 13 13 13 4 4 4
++13 13 13 13 13 13 10 10 10 14 14 14 31 31 31 42 42 42 34 34 34 16 16 16
++11 11 11 32 32 32 53 53 53 34 34 34 17 17 17 25 25 25 32 32 32 49 49 49
++44 44 44 23 23 23 21 21 21 32 32 32 49 49 49 52 52 52 32 32 32 28 28 28
++36 36 36 50 50 50 54 54 54 42 42 42 32 32 32 38 38 38 51 51 51 60 60 60
++46 46 46 37 37 37 37 37 37 54 54 54 71 71 71 68 68 68 54 54 54 46 46 46
++51 51 51 57 57 57 56 56 56 53 53 53 65 65 65 78 78 78 71 71 71 48 48 48
++63 63 63 60 60 60 59 59 59 65 65 65 77 77 77 87 87 87 78 78 78 61 61 61
++72 72 72 70 70 70 69 69 69 74 74 74 87 87 87 94 94 94 87 87 87 71 71 71
++72 72 72 81 81 81 92 92 92 101 101 101 105 104 105 103 103 102 103 103 102 105 104 105
++103 103 102 105 104 105 105 105 105 91 91 91 89 89 89 109 110 110 112 112 113 101 101 101
++87 87 87 88 88 88 88 88 88 90 90 90 101 101 101 112 112 113 112 112 113 101 101 101
++91 91 91 93 93 93 99 99 99 105 105 105 101 101 101 103 103 102 115 116 115 105 105 105
++90 90 90 90 90 90 87 87 87 85 85 85 94 94 94 105 104 105 99 99 99 85 85 85
++89 89 89 87 87 87 87 87 87 88 88 88 92 92 92 96 96 96 99 99 99 101 101 101
++92 92 92 88 88 88 87 87 87 92 92 92 105 105 105 115 116 115 109 110 110 101 101 101
++88 88 88 85 85 85 83 83 83 84 84 84 88 88 88 92 92 92 92 92 92 91 91 91
++94 94 94 87 87 87 82 82 82 83 83 83 87 87 87 91 91 91 96 97 98 103 103 102
++90 90 90 90 90 90 91 91 91 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92
++91 91 91 90 90 90 89 89 89 91 91 91 93 93 93 90 90 90 84 84 84 82 82 82
++85 85 85 95 95 94 103 103 102 101 101 101 96 97 98 96 97 98 99 99 99 96 96 96
++95 95 94 94 94 94 93 93 93 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91
++89 89 89 88 88 88 87 87 87 87 87 87 87 87 87 85 85 85 78 78 78 68 68 68
++80 80 80 72 72 72 62 62 62 58 58 58 65 65 65 73 73 73 73 73 73 71 71 71
++74 74 74 75 75 75 56 56 56 50 50 50 52 52 52 51 51 51 59 59 59 63 63 63
++59 59 59 49 49 49 39 39 39 46 46 46 62 62 62 67 67 67 54 54 54 42 42 42
++27 27 27 32 32 32 33 33 33 43 43 43 52 52 52 61 61 61 58 58 58 31 31 31
++34 34 34 40 40 40 45 45 45 38 38 38 25 25 25 20 20 20 24 24 24 28 28 28
++29 29 29 27 27 27 33 33 33 44 44 44 48 48 48 46 46 46 46 46 46 48 48 48
++32 32 32 32 32 32 32 32 32 27 27 27 21 21 21 16 16 16 14 14 14 14 14 14
++16 16 16 21 21 21 29 29 29 37 37 37 39 39 39 39 39 39 36 36 36 34 34 34
++36 36 36 36 36 36 36 36 36 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
++36 36 36 36 36 36 36 36 36 36 36 36 34 34 34 34 34 34 34 34 34 34 34 34
++31 31 31 34 34 34 37 37 37 36 36 36 32 32 32 31 31 31 34 34 34 38 38 38
++16 16 16 25 25 25 32 32 32 24 24 24 8 8 8 0 0 0 0 0 0 10 10 10
++29 29 29 24 24 24 13 13 13 3 3 3 3 3 3 13 13 13 16 16 16 8 8 8
++13 13 13 13 13 13 23 23 23 34 34 34 29 29 29 10 10 10 4 4 4 17 17 17
++16 16 16 16 16 16 6 6 6 8 8 8 21 21 21 27 27 27 32 32 32 45 45 45
++42 42 42 17 17 17 0 0 0 0 0 0 3 3 3 10 10 10 31 31 31 51 51 51
++34 34 34 43 43 43 36 36 36 40 40 40 50 50 50 38 38 38 23 23 23 0 0 0
++34 34 34 44 44 44 36 36 36 27 27 27 29 29 29 14 14 14 0 0 0 16 16 16
++11 11 11 11 11 11 13 13 13 13 13 13 11 11 11 10 10 10 10 10 10 10 10 10
++20 20 20 27 27 27 27 27 27 28 28 28 33 33 33 44 44 44 40 40 40 10 10 10
++37 37 37 21 21 21 37 37 37 52 52 52 40 40 40 29 29 29 25 25 25 10 10 10
++27 27 27 25 25 25 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0 11 11 11
++
++0 0 0 11 11 11 27 27 27 27 27 27 16 16 16 0 0 0 0 0 0 8 8 8
++0 0 0 0 0 0 13 13 13 25 25 25 24 24 24 8 8 8 0 0 0 0 0 0
++14 14 14 0 0 0 0 0 0 16 16 16 38 38 38 25 25 25 0 0 0 0 0 0
++3 3 3 8 8 8 0 0 0 0 0 0 13 13 13 29 29 29 20 20 20 0 0 0
++0 0 0 4 4 4 6 6 6 0 0 0 0 0 0 14 14 14 24 24 24 23 23 23
++0 0 0 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 11 11 11 29 29 29
++13 13 13 11 11 11 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 13 13 13
++24 24 24 16 16 16 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 10 10 10 28 28 28
++13 13 13 3 3 3 0 0 0 6 6 6 3 3 3 0 0 0 4 4 4 6 6 6
++20 20 20 16 16 16 6 6 6 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0
++17 17 17 21 21 21 16 16 16 0 0 0 0 0 0 6 6 6 6 6 6 0 0 0
++0 0 0 29 29 29 25 25 25 6 6 6 6 6 6 8 8 8 8 8 8 20 20 20
++42 42 42 43 43 43 45 45 45 43 43 43 40 40 40 39 39 39 40 40 40 43 43 43
++42 42 42 44 44 44 49 49 49 46 46 46 32 32 32 11 11 11 6 6 6 14 14 14
++13 13 13 0 0 0 8 8 8 29 29 29 40 40 40 34 34 34 19 19 19 8 8 8
++19 19 19 44 44 44 28 28 28 16 16 16 17 17 17 33 33 33 57 57 57 43 43 43
++21 21 21 33 33 33 23 23 23 48 48 48 49 49 49 21 21 21 32 32 32 31 31 31
++50 50 50 50 50 50 40 40 40 29 29 29 36 36 36 53 53 53 56 56 56 46 46 46
++40 40 40 43 43 43 56 56 56 56 56 56 48 48 48 57 57 57 66 66 66 56 56 56
++40 40 40 49 49 49 53 53 53 50 50 50 52 52 52 69 69 69 76 76 76 69 69 69
++54 54 54 59 59 59 60 60 60 58 58 58 62 62 62 77 77 77 84 84 84 76 76 76
++63 63 63 70 70 70 72 72 72 68 68 68 69 69 69 84 84 84 92 92 92 88 88 88
++70 70 70 72 72 72 80 80 80 90 90 90 96 97 98 101 101 101 103 103 102 105 104 105
++99 99 99 101 101 101 101 101 101 93 93 93 84 84 84 89 89 89 101 101 101 109 110 110
++89 89 89 83 83 83 85 85 85 88 88 88 88 88 88 99 99 99 112 112 113 112 112 113
++95 95 94 88 88 88 93 93 93 105 105 105 96 97 98 88 88 88 105 104 105 115 116 115
++96 96 96 89 89 89 82 82 82 83 83 83 91 91 91 95 95 94 92 92 92 87 87 87
++87 87 87 87 87 87 87 87 87 85 85 85 90 90 90 99 99 99 103 103 102 103 103 102
++101 101 101 93 93 93 87 87 87 87 87 87 99 99 99 109 110 110 112 112 113 105 105 105
++96 96 96 90 90 90 83 83 83 78 78 78 82 82 82 88 88 88 94 94 94 96 97 98
++99 99 99 90 90 90 83 83 83 83 83 83 84 84 84 87 87 87 92 92 92 101 101 101
++93 93 93 90 90 90 87 87 87 85 85 85 84 84 84 87 87 87 89 89 89 91 91 91
++87 87 87 89 89 89 87 87 87 83 83 83 87 87 87 88 88 88 83 83 83 80 80 80
++89 89 89 96 96 96 99 99 99 96 96 96 93 93 93 94 94 94 95 95 94 94 94 94
++91 91 91 91 91 91 90 90 90 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89
++87 87 87 85 85 85 85 85 85 85 85 85 84 84 84 84 84 84 78 78 78 68 68 68
++61 61 61 62 62 62 57 57 57 53 53 53 54 54 54 53 53 53 50 50 50 49 49 49
++52 52 52 74 74 74 58 58 58 46 46 46 54 54 54 58 58 58 62 62 62 59 59 59
++69 69 69 62 62 62 46 46 46 37 37 37 46 46 46 60 60 60 62 62 62 59 59 59
++39 39 39 31 31 31 21 21 21 38 38 38 54 54 54 61 61 61 52 52 52 20 20 20
++21 21 21 28 28 28 42 42 42 48 48 48 40 40 40 32 32 32 27 27 27 21 21 21
++25 25 25 25 25 25 33 33 33 39 39 39 36 36 36 29 29 29 24 24 24 17 17 17
++20 20 20 19 19 19 17 17 17 14 14 14 13 13 13 13 13 13 14 14 14 17 17 17
++27 27 27 32 32 32 37 37 37 38 38 38 37 37 37 34 34 34 36 36 36 37 37 37
++34 34 34 34 34 34 34 34 34 34 34 34 33 33 33 33 33 33 33 33 33 33 33 33
++36 36 36 36 36 36 34 34 34 34 34 34 34 34 34 34 34 34 33 33 33 33 33 33
++31 31 31 32 32 32 34 34 34 34 34 34 32 32 32 31 31 31 31 31 31 32 32 32
++6 6 6 8 8 8 23 23 23 36 36 36 32 32 32 19 19 19 20 20 20 34 34 34
++25 25 25 16 16 16 8 8 8 6 6 6 10 10 10 16 16 16 16 16 16 3 3 3
++10 10 10 23 23 23 39 39 39 37 37 37 17 17 17 8 8 8 13 13 13 13 13 13
++11 11 11 11 11 11 11 11 11 20 20 20 29 29 29 32 32 32 31 31 31 36 36 36
++43 43 43 43 43 43 39 39 39 32 32 32 31 31 31 39 39 39 39 39 39 25 25 25
++34 34 34 56 56 56 48 48 48 37 37 37 44 44 44 43 43 43 44 44 44 20 20 20
++42 42 42 46 46 46 33 33 33 28 28 28 37 37 37 23 23 23 4 4 4 20 20 20
++13 13 13 13 13 13 13 13 13 13 13 13 10 10 10 10 10 10 11 11 11 11 11 11
++10 10 10 23 23 23 32 32 32 27 27 27 23 23 23 40 40 40 48 48 48 27 27 27
++33 33 33 37 37 37 39 39 39 43 43 43 40 40 40 19 19 19 0 0 0 4 4 4
++14 14 14 29 29 29 34 34 34 20 20 20 0 0 0 0 0 0 4 4 4 24 24 24
++
++6 6 6 3 3 3 6 6 6 23 23 23 31 31 31 14 14 14 0 0 0 0 0 0
++8 8 8 0 0 0 0 0 0 11 11 11 24 24 24 20 20 20 8 8 8 0 0 0
++0 0 0 10 10 10 0 0 0 0 0 0 20 20 20 36 36 36 23 23 23 6 6 6
++4 4 4 0 0 0 4 4 4 0 0 0 0 0 0 19 19 19 34 34 34 11 11 11
++0 0 0 3 3 3 4 4 4 0 0 0 0 0 0 0 0 0 13 13 13 25 25 25
++14 14 14 3 3 3 0 0 0 8 8 8 0 0 0 0 0 0 0 0 0 19 19 19
++27 27 27 11 11 11 10 10 10 6 6 6 0 0 0 3 3 3 10 10 10 0 0 0
++16 16 16 20 20 20 14 14 14 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 11 11 11 17 17 17 21 21 21
++0 0 0 10 10 10 0 0 0 0 0 0 14 14 14 6 6 6 0 0 0 23 23 23
++13 13 13 3 3 3 0 0 0 4 4 4 4 4 4 0 0 0 3 3 3 14 14 14
++23 23 23 13 13 13 0 0 0 0 0 0 0 0 0 6 6 6 4 4 4 3 3 3
++20 20 20 24 24 24 13 13 13 0 0 0 0 0 0 11 11 11 21 21 21 33 33 33
++45 45 45 44 44 44 42 42 42 40 40 40 39 39 39 38 38 38 39 39 39 39 39 39
++44 44 44 45 45 45 43 43 43 32 32 32 16 16 16 4 4 4 8 8 8 19 19 19
++10 10 10 11 11 11 23 23 23 36 36 36 32 32 32 16 16 16 14 14 14 25 25 25
++44 44 44 23 23 23 33 33 33 10 10 10 23 23 23 53 53 53 27 27 27 27 27 27
++23 23 23 28 28 28 52 52 52 38 38 38 27 27 27 28 28 28 16 16 16 46 46 46
++46 46 46 38 38 38 31 31 31 32 32 32 43 43 43 51 51 51 45 45 45 36 36 36
++36 36 36 50 50 50 59 59 59 50 50 50 38 38 38 51 51 51 68 68 68 68 68 68
++51 51 51 40 40 40 44 44 44 53 53 53 51 51 51 51 51 51 67 67 67 80 80 80
++60 60 60 56 56 56 57 57 57 57 57 57 54 54 54 63 63 63 77 77 77 83 83 83
++70 70 70 66 66 66 68 68 68 67 67 67 62 62 62 70 70 70 85 85 85 91 91 91
++81 81 81 74 74 74 72 72 72 78 78 78 88 88 88 94 94 94 99 99 99 101 101 101
++99 99 99 96 97 98 96 96 96 95 95 94 87 87 87 76 76 76 84 84 84 103 103 102
++101 101 101 85 85 85 83 83 83 85 85 85 82 82 82 90 90 90 105 104 105 105 105 105
++103 103 102 95 95 94 87 87 87 99 99 99 101 101 101 83 83 83 88 88 88 105 105 105
++103 103 102 93 93 93 85 85 85 87 87 87 89 89 89 88 88 88 88 88 88 89 89 89
++88 88 88 91 91 91 87 87 87 81 81 81 84 84 84 95 95 94 101 101 101 96 97 98
++105 105 105 101 101 101 92 92 92 87 87 87 89 89 89 99 99 99 103 103 102 105 104 105
++103 103 102 96 96 96 87 87 87 78 78 78 77 77 77 81 81 81 87 87 87 92 92 92
++101 101 101 96 96 96 90 90 90 85 85 85 82 82 82 82 82 82 87 87 87 90 90 90
++94 94 94 91 91 91 87 87 87 82 82 82 80 80 80 80 80 80 82 82 82 84 84 84
++80 80 80 85 85 85 83 83 83 78 78 78 82 82 82 82 82 82 78 78 78 78 78 78
++91 91 91 93 93 93 94 94 94 92 92 92 90 90 90 90 90 90 90 90 90 90 90 90
++87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 85 85 85 85 85 85
++84 84 84 81 81 81 82 82 82 82 82 82 81 81 81 82 82 82 77 77 77 66 66 66
++53 53 53 60 60 60 60 60 60 58 58 58 56 56 56 49 49 49 42 42 42 45 45 45
++51 51 51 66 66 66 50 50 50 50 50 50 57 57 57 54 54 54 59 59 59 50 50 50
++62 62 62 69 69 69 56 56 56 34 34 34 37 37 37 51 51 51 61 61 61 65 65 65
++51 51 51 40 40 40 33 33 33 49 49 49 58 58 58 57 57 57 50 50 50 29 29 29
++20 20 20 16 16 16 31 31 31 49 49 49 51 51 51 46 46 46 38 38 38 28 28 28
++23 23 23 25 25 25 33 33 33 33 33 33 23 23 23 19 19 19 17 17 17 8 8 8
++19 19 19 17 17 17 16 16 16 16 16 16 20 20 20 25 25 25 31 31 31 33 33 33
++34 34 34 36 36 36 37 37 37 36 36 36 34 34 34 33 33 33 34 34 34 37 37 37
++34 34 34 34 34 34 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32
++34 34 34 34 34 34 34 34 34 34 34 34 33 33 33 33 33 33 33 33 33 33 33 33
++32 32 32 28 28 28 25 25 25 28 28 28 33 33 33 33 33 33 27 27 27 20 20 20
++45 45 45 25 25 25 4 4 4 8 8 8 25 25 25 36 36 36 34 34 34 28 28 28
++16 16 16 10 10 10 16 16 16 20 20 20 14 14 14 11 11 11 13 13 13 8 8 8
++20 20 20 24 24 24 40 40 40 37 37 37 13 13 13 10 10 10 17 17 17 4 4 4
++11 11 11 10 10 10 17 17 17 24 24 24 19 19 19 8 8 8 3 3 3 0 0 0
++3 3 3 4 4 4 24 24 24 38 38 38 38 38 38 37 37 37 37 37 37 32 32 32
++25 25 25 44 44 44 36 36 36 25 25 25 34 34 34 31 31 31 49 49 49 39 39 39
++44 44 44 39 39 39 32 32 32 37 37 37 43 43 43 29 29 29 11 11 11 13 13 13
++11 11 11 13 13 13 13 13 13 11 11 11 10 10 10 11 11 11 14 14 14 17 17 17
++27 27 27 42 42 42 51 51 51 42 42 42 34 34 34 40 40 40 43 43 43 36 36 36
++38 38 38 40 40 40 4 4 4 0 0 0 38 38 38 37 37 37 10 10 10 17 17 17
++0 0 0 13 13 13 29 29 29 33 33 33 16 16 16 3 3 3 19 19 19 37 37 37
++
++19 19 19 8 8 8 0 0 0 13 13 13 33 33 33 25 25 25 6 6 6 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 27 27 27 23 23 23 4 4 4
++0 0 0 0 0 0 10 10 10 3 3 3 0 0 0 13 13 13 27 27 27 19 19 19
++0 0 0 3 3 3 0 0 0 3 3 3 6 6 6 0 0 0 10 10 10 44 44 44
++21 21 21 0 0 0 0 0 0 8 8 8 10 10 10 0 0 0 0 0 0 11 11 11
++32 32 32 17 17 17 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0
++16 16 16 32 32 32 16 16 16 0 0 0 8 8 8 11 11 11 0 0 0 0 0 0
++0 0 0 16 16 16 23 23 23 11 11 11 0 0 0 4 4 4 8 8 8 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 8 8 8 6 6 6 0 0 0 8 8 8 21 21 21 17 17 17 0 0 0
++10 10 10 0 0 0 0 0 0 3 3 3 0 0 0 10 10 10 23 23 23 19 19 19
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 16 16 32 32 32
++19 19 19 0 0 0 0 0 0 4 4 4 10 10 10 0 0 0 4 4 4 21 21 21
++38 38 38 0 0 0 0 0 0 11 11 11 0 0 0 3 3 3 32 32 32 44 44 44
++44 44 44 42 42 42 39 39 39 39 39 39 39 39 39 39 39 39 38 38 38 37 37 37
++46 46 46 43 43 43 29 29 29 10 10 10 0 0 0 8 8 8 13 13 13 13 13 13
++11 11 11 29 29 29 43 43 43 34 34 34 11 11 11 0 0 0 20 20 20 44 44 44
++32 32 32 16 16 16 11 11 11 31 31 31 45 45 45 42 42 42 27 27 27 14 14 14
++17 17 17 45 45 45 40 40 40 28 28 28 21 21 21 24 24 24 43 43 43 50 50 50
++29 29 29 25 25 25 32 32 32 45 45 45 46 46 46 36 36 36 32 32 32 37 37 37
++45 45 45 59 59 59 48 48 48 36 36 36 43 43 43 39 39 39 37 37 37 53 53 53
++70 70 70 52 52 52 45 45 45 49 49 49 45 45 45 46 46 46 53 53 53 58 58 58
++81 81 81 58 58 58 51 51 51 58 58 58 56 56 56 52 52 52 61 61 61 71 71 71
++92 92 92 68 68 68 60 60 60 67 67 67 65 65 65 60 60 60 67 67 67 74 74 74
++93 93 93 80 80 80 69 69 69 71 71 71 81 81 81 88 88 88 92 92 92 94 94 94
++99 99 99 99 99 99 92 92 92 93 93 93 91 91 91 76 76 76 74 74 74 87 87 87
++112 112 113 91 91 91 82 82 82 80 80 80 77 77 77 90 90 90 99 99 99 90 90 90
++105 105 105 105 105 105 83 83 83 87 87 87 105 105 105 91 91 91 78 78 78 89 89 89
++105 105 105 101 101 101 93 93 93 88 88 88 88 88 88 89 89 89 89 89 89 88 88 88
++96 97 98 101 101 101 95 95 94 83 83 83 83 83 83 95 95 94 99 99 99 93 93 93
++99 99 99 101 101 101 96 96 96 88 88 88 85 85 85 91 91 91 99 99 99 105 104 105
++105 105 105 101 101 101 91 91 91 83 83 83 77 77 77 77 77 77 80 80 80 83 83 83
++103 103 102 103 103 102 99 99 99 87 87 87 81 81 81 81 81 81 82 82 82 80 80 80
++93 93 93 91 91 91 87 87 87 83 83 83 80 80 80 76 76 76 75 75 75 75 75 75
++75 75 75 81 81 81 80 80 80 77 77 77 81 81 81 77 77 77 73 73 73 77 77 77
++92 92 92 91 91 91 90 90 90 90 90 90 89 89 89 88 88 88 87 87 87 87 87 87
++84 84 84 84 84 84 85 85 85 85 85 85 85 85 85 84 84 84 83 83 83 82 82 82
++82 82 82 77 77 77 80 80 80 81 81 81 77 77 77 80 80 80 76 76 76 65 65 65
++53 53 53 57 57 57 52 52 52 49 49 49 52 52 52 52 52 52 54 54 54 63 63 63
++73 73 73 62 62 62 44 44 44 57 57 57 56 56 56 38 38 38 44 44 44 38 38 38
++43 43 43 63 63 63 61 61 61 40 40 40 36 36 36 48 48 48 56 56 56 58 58 58
++63 63 63 53 53 53 46 46 46 56 56 56 56 56 56 51 51 51 57 57 57 51 51 51
++28 28 28 13 13 13 23 23 23 44 44 44 52 52 52 51 51 51 48 48 48 40 40 40
++42 42 42 43 43 43 44 44 44 34 34 34 19 19 19 19 19 19 23 23 23 17 17 17
++24 24 24 23 23 23 21 21 21 25 25 25 33 33 33 40 40 40 45 45 45 48 48 48
++36 36 36 34 34 34 34 34 34 34 34 34 36 36 36 36 36 36 34 34 34 33 33 33
++33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32
++34 34 34 34 34 34 34 34 34 34 34 34 33 33 33 33 33 33 33 33 33 33 33 33
++33 33 33 23 23 23 16 16 16 23 23 23 34 34 34 37 37 37 24 24 24 8 8 8
++6 6 6 34 34 34 43 43 43 27 27 27 19 19 19 31 31 31 31 31 31 16 16 16
++8 8 8 10 10 10 24 24 24 28 28 28 13 13 13 3 3 3 11 11 11 17 17 17
++33 33 33 17 17 17 32 32 32 39 39 39 16 16 16 8 8 8 16 16 16 3 3 3
++10 10 10 10 10 10 24 24 24 29 29 29 16 16 16 4 4 4 3 3 3 0 0 0
++0 0 0 16 16 16 33 33 33 34 34 34 21 21 21 23 23 23 32 32 32 31 31 31
++37 37 37 46 46 46 39 39 39 36 36 36 31 31 31 0 0 0 33 33 33 49 49 49
++38 38 38 27 27 27 28 28 28 38 38 38 34 34 34 21 21 21 11 11 11 3 3 3
++10 10 10 11 11 11 13 13 13 11 11 11 10 10 10 11 11 11 17 17 17 21 21 21
++14 14 14 34 34 34 43 43 43 39 39 39 40 40 40 37 37 37 25 25 25 27 27 27
++46 46 46 33 33 33 16 16 16 0 0 0 8 8 8 27 27 27 25 25 25 3 3 3
++4 4 4 0 0 0 6 6 6 31 31 31 31 31 31 25 25 25 34 34 34 43 43 43
++
++32 32 32 21 21 21 13 13 13 0 0 0 6 6 6 33 33 33 23 23 23 6 6 6
++0 0 0 4 4 4 3 3 3 0 0 0 0 0 0 10 10 10 23 23 23 29 29 29
++10 10 10 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 6 6 6 31 31 31
++25 25 25 10 10 10 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0
++34 34 34 17 17 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4
++13 13 13 24 24 24 23 23 23 6 6 6 0 0 0 0 0 0 3 3 3 0 0 0
++0 0 0 14 14 14 25 25 25 14 14 14 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 13 13 13 20 20 20 14 14 14 0 0 0 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 14 14 14 20 20 20 14 14 14 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 14 14 14 21 21 21 13 13 13 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 3 3 3 20 20 20 21 21 21 13 13 13
++3 3 3 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 17 17 17 36 36 36
++3 3 3 4 4 4 0 0 0 0 0 0 8 8 8 28 28 28 40 40 40 44 44 44
++43 43 43 38 38 38 37 37 37 40 40 40 40 40 40 37 37 37 38 38 38 44 44 44
++43 43 43 28 28 28 10 10 10 3 3 3 6 6 6 10 10 10 10 10 10 10 10 10
++24 24 24 43 43 43 29 29 29 6 6 6 8 8 8 29 29 29 43 43 43 24 24 24
++13 13 13 10 10 10 23 23 23 42 42 42 39 39 39 19 19 19 11 11 11 23 23 23
++38 38 38 39 39 39 31 31 31 20 20 20 25 25 25 39 39 39 40 40 40 32 32 32
++24 24 24 32 32 32 42 42 42 45 45 45 38 38 38 29 29 29 34 34 34 46 46 46
++51 51 51 44 44 44 37 37 37 34 34 34 38 38 38 42 42 42 42 42 42 40 40 40
++59 59 59 63 63 63 58 58 58 44 44 44 39 39 39 48 48 48 50 50 50 46 46 46
++66 66 66 72 72 72 63 63 63 50 50 50 52 52 52 57 57 57 54 54 54 52 52 52
++68 68 68 78 78 78 73 73 73 60 60 60 61 61 61 65 65 65 63 63 63 62 62 62
++67 67 67 87 87 87 87 87 87 65 65 65 61 61 61 84 84 84 93 93 93 84 84 84
++94 94 94 92 92 92 95 95 94 96 97 98 88 88 88 73 73 73 70 70 70 77 77 77
++95 95 94 101 101 101 96 97 98 82 82 82 74 74 74 83 83 83 90 90 90 88 88 88
++83 83 83 103 103 102 101 101 101 88 88 88 91 91 91 96 96 96 87 87 87 76 76 76
++96 97 98 87 87 87 87 87 87 81 81 81 81 81 81 87 87 87 87 87 87 96 96 96
++92 92 92 99 99 99 105 105 105 95 95 94 77 77 77 82 82 82 94 94 94 96 96 96
++81 81 81 96 96 96 105 105 105 96 96 96 78 78 78 73 73 73 87 87 87 103 103 102
++96 96 96 101 101 101 99 99 99 87 87 87 76 76 76 76 76 76 83 83 83 89 89 89
++93 93 93 82 82 82 94 94 94 105 105 105 91 91 91 80 80 80 78 78 78 72 72 72
++80 80 80 80 80 80 88 88 88 91 91 91 80 80 80 71 71 71 72 72 72 71 71 71
++71 71 71 68 68 68 71 71 71 73 73 73 69 69 69 71 71 71 75 75 75 74 74 74
++75 75 75 85 85 85 90 90 90 88 88 88 85 85 85 87 87 87 87 87 87 84 84 84
++87 87 87 85 85 85 83 83 83 82 82 82 81 81 81 81 81 81 78 78 78 76 76 76
++83 83 83 72 72 72 60 60 60 65 65 65 72 72 72 62 62 62 57 57 57 71 71 71
++50 50 50 50 50 50 52 52 52 53 53 53 50 50 50 49 49 49 59 59 59 72 72 72
++68 68 68 70 70 70 65 65 65 53 53 53 43 43 43 40 40 40 40 40 40 38 38 38
++52 52 52 66 66 66 59 59 59 40 40 40 33 33 33 39 39 39 48 48 48 57 57 57
++52 52 52 50 50 50 51 51 51 59 59 59 53 53 53 28 28 28 21 21 21 43 43 43
++48 48 48 43 43 43 38 38 38 39 39 39 44 44 44 49 49 49 48 48 48 45 45 45
++38 38 38 37 37 37 39 39 39 46 46 46 46 46 46 39 39 39 36 36 36 36 36 36
++38 38 38 42 42 42 44 44 44 40 40 40 34 34 34 32 32 32 37 37 37 42 42 42
++39 39 39 36 36 36 32 32 32 32 32 32 34 34 34 36 36 36 34 34 34 32 32 32
++32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 33 33 33 33 33 33
++33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 33 33 33 33 33 33 34 34 34
++37 37 37 38 38 38 33 33 33 21 21 21 10 10 10 13 13 13 27 27 27 39 39 39
++10 10 10 4 4 4 4 4 4 24 24 24 37 37 37 29 29 29 14 14 14 14 14 14
++6 6 6 13 13 13 29 29 29 33 33 33 14 14 14 4 4 4 19 19 19 32 32 32
++4 4 4 23 23 23 34 34 34 29 29 29 16 16 16 8 8 8 11 11 11 16 16 16
++13 13 13 25 25 25 24 24 24 14 14 14 10 10 10 4 4 4 0 0 0 10 10 10
++31 31 31 36 36 36 24 24 24 17 17 17 27 27 27 19 19 19 0 0 0 3 3 3
++11 11 11 25 25 25 40 40 40 46 46 46 43 43 43 36 36 36 33 33 33 36 36 36
++37 37 37 37 37 37 28 28 28 29 29 29 21 21 21 6 6 6 11 11 11 4 4 4
++13 13 13 11 11 11 8 8 8 8 8 8 11 11 11 14 14 14 14 14 14 13 13 13
++21 21 21 40 40 40 46 46 46 39 39 39 25 25 25 28 28 28 33 33 33 10 10 10
++29 29 29 43 43 43 21 21 21 0 0 0 10 10 10 19 19 19 23 23 23 42 42 42
++0 0 0 0 0 0 13 13 13 23 23 23 28 28 28 40 40 40 34 34 34 0 0 0
++
++11 11 11 37 37 37 17 17 17 8 8 8 0 0 0 0 0 0 33 33 33 24 24 24
++11 11 11 0 0 0 0 0 0 6 6 6 6 6 6 0 0 0 4 4 4 24 24 24
++28 28 28 10 10 10 0 0 0 0 0 0 3 3 3 0 0 0 6 6 6 19 19 19
++31 31 31 27 27 27 19 19 19 13 13 13 13 13 13 16 16 16 16 16 16 14 14 14
++17 17 17 23 23 23 19 19 19 6 6 6 0 0 0 0 0 0 3 3 3 0 0 0
++0 0 0 13 13 13 20 20 20 16 16 16 3 3 3 0 0 0 0 0 0 3 3 3
++0 0 0 3 3 3 13 13 13 21 21 21 19 19 19 4 4 4 0 0 0 0 0 0
++6 6 6 4 4 4 4 4 4 10 10 10 16 16 16 16 16 16 6 6 6 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 6 6 6 16 16 16 16 16 16 10 10 10 4 4 4 3 3 3 3 3 3
++3 3 3 0 0 0 4 4 4 14 14 14 16 16 16 8 8 8 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 6 6 6 16 16 16 20 20 20 13 13 13 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 6 6 6 20 20 20 20 20 20 11 11 11
++6 6 6 0 0 0 0 0 0 4 4 4 20 20 20 36 36 36 40 40 40 40 40 40
++38 38 38 39 39 39 39 39 39 38 38 38 38 38 38 38 38 38 39 39 39 38 38 38
++25 25 25 10 10 10 3 3 3 10 10 10 10 10 10 3 3 3 10 10 10 24 24 24
++34 34 34 27 27 27 4 4 4 8 8 8 25 25 25 36 36 36 33 33 33 8 8 8
++11 11 11 27 27 27 38 38 38 33 33 33 20 20 20 14 14 14 25 25 25 37 37 37
++37 37 37 24 24 24 17 17 17 25 25 25 39 39 39 42 42 42 32 32 32 23 23 23
++29 29 29 37 37 37 40 40 40 37 37 37 29 29 29 31 31 31 38 38 38 45 45 45
++42 42 42 39 39 39 36 36 36 36 36 36 38 38 38 40 40 40 40 40 40 39 39 39
++45 45 45 53 53 53 59 59 59 53 53 53 44 44 44 42 42 42 45 45 45 50 50 50
++48 48 48 63 63 63 69 69 69 62 62 62 54 54 54 49 49 49 51 51 51 60 60 60
++54 54 54 70 70 70 75 75 75 69 69 69 62 62 62 57 57 57 58 58 58 67 67 67
++61 61 61 71 71 71 81 81 81 80 80 80 70 70 70 67 67 67 77 77 77 92 92 92
++89 89 89 87 87 87 89 89 89 93 93 93 90 90 90 81 81 81 72 72 72 71 71 71
++81 81 81 92 92 92 96 96 96 91 91 91 82 82 82 71 71 71 76 76 76 96 97 98
++78 78 78 87 87 87 96 96 96 95 95 94 90 90 90 91 91 91 89 89 89 80 80 80
++87 87 87 80 80 80 82 82 82 84 84 84 87 87 87 80 80 80 73 73 73 89 89 89
++96 97 98 90 90 90 90 90 90 95 95 94 92 92 92 80 80 80 81 81 81 94 94 94
++85 85 85 82 82 82 87 87 87 96 97 98 94 94 94 82 82 82 82 82 82 92 92 92
++99 99 99 93 93 93 96 96 96 101 101 101 90 90 90 72 72 72 75 75 75 95 95 94
++77 77 77 75 75 75 81 81 81 89 89 89 92 92 92 93 93 93 91 91 91 87 87 87
++76 76 76 70 70 70 75 75 75 85 85 85 80 80 80 72 72 72 71 71 71 71 71 71
++70 70 70 67 67 67 71 71 71 73 73 73 70 70 70 71 71 71 73 73 73 69 69 69
++70 70 70 77 77 77 84 84 84 84 84 84 83 83 83 82 82 82 82 82 82 81 81 81
++81 81 81 80 80 80 78 78 78 78 78 78 80 80 80 80 80 80 77 77 77 76 76 76
++65 65 65 57 57 57 60 60 60 62 62 62 52 52 52 52 52 52 61 61 61 63 63 63
++52 52 52 50 50 50 49 49 49 50 50 50 50 50 50 49 49 49 51 51 51 54 54 54
++48 48 48 49 49 49 48 48 48 44 44 44 42 42 42 42 42 42 40 40 40 38 38 38
++53 53 53 59 59 59 54 54 54 46 46 46 37 37 37 28 28 28 29 29 29 43 43 43
++54 54 54 54 54 54 57 57 57 60 60 60 54 54 54 31 31 31 14 14 14 23 23 23
++45 45 45 44 44 44 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44 44 44 44
++42 42 42 38 38 38 37 37 37 39 39 39 43 43 43 42 42 42 39 39 39 37 37 37
++34 34 34 38 38 38 42 42 42 40 40 40 37 37 37 34 34 34 34 34 34 36 36 36
++38 38 38 38 38 38 37 37 37 34 34 34 31 31 31 31 31 31 32 32 32 33 33 33
++32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
++28 28 28 28 28 28 31 31 31 34 34 34 31 31 31 19 19 19 6 6 6 0 0 0
++20 20 20 28 28 28 37 37 37 38 38 38 33 33 33 28 28 28 31 31 31 36 36 36
++42 42 42 28 28 28 14 14 14 23 23 23 37 37 37 29 29 29 11 11 11 4 4 4
++4 4 4 13 13 13 23 23 23 20 20 20 13 13 13 19 19 19 24 24 24 19 19 19
++6 6 6 3 3 3 3 3 3 4 4 4 10 10 10 8 8 8 3 3 3 0 0 0
++21 21 21 25 25 25 17 17 17 8 8 8 14 14 14 20 20 20 23 23 23 29 29 29
++36 36 36 37 37 37 24 24 24 16 16 16 19 19 19 11 11 11 0 0 0 3 3 3
++0 0 0 8 8 8 27 27 27 34 34 34 36 36 36 36 36 36 36 36 36 36 36 36
++43 43 43 40 40 40 36 36 36 45 45 45 40 40 40 20 20 20 14 14 14 8 8 8
++11 11 11 10 10 10 11 11 11 13 13 13 14 14 14 13 13 13 11 11 11 11 11 11
++6 6 6 25 25 25 28 28 28 25 25 25 24 24 24 34 34 34 40 40 40 24 24 24
++4 4 4 32 32 32 31 31 31 16 16 16 13 13 13 6 6 6 4 4 4 23 23 23
++36 36 36 25 25 25 24 24 24 21 21 21 14 14 14 25 25 25 32 32 32 17 17 17
++
++0 0 0 6 6 6 38 38 38 19 19 19 0 0 0 3 3 3 0 0 0 37 37 37
++27 27 27 6 6 6 0 0 0 6 6 6 8 8 8 0 0 0 0 0 0 11 11 11
++29 29 29 24 24 24 11 11 11 0 0 0 0 0 0 10 10 10 11 11 11 3 3 3
++10 10 10 20 20 20 20 20 20 8 8 8 0 0 0 0 0 0 8 8 8 8 8 8
++3 3 3 19 19 19 27 27 27 17 17 17 6 6 6 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 11 11 11 19 19 19 13 13 13 0 0 0 0 0 0 0 0 0
++8 8 8 0 0 0 0 0 0 16 16 16 25 25 25 19 19 19 3 3 3 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 13 13 13 23 23 23 17 17 17 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0
++0 0 0 16 16 16 23 23 23 13 13 13 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 6 6 6 14 14 14 16 16 16 10 10 10 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 8 8 8 19 19 19 21 21 21 13 13 13 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 3 3 3 17 17 17 25 25 25 14 14 14 0 0 0
++6 6 6 0 0 0 0 0 0 19 19 19 34 34 34 42 42 42 40 40 40 36 36 36
++36 36 36 38 38 38 37 37 37 34 34 34 38 38 38 42 42 42 36 36 36 24 24 24
++6 6 6 0 0 0 0 0 0 8 8 8 10 10 10 8 8 8 20 20 20 34 34 34
++28 28 28 11 11 11 0 0 0 23 23 23 37 37 37 29 29 29 17 17 17 3 3 3
++21 21 21 38 38 38 38 38 38 19 19 19 8 8 8 24 24 24 38 38 38 38 38 38
++27 27 27 14 14 14 17 17 17 36 36 36 43 43 43 32 32 32 23 23 23 24 24 24
++37 37 37 38 38 38 33 33 33 25 25 25 27 27 27 36 36 36 40 40 40 38 38 38
++32 32 32 32 32 32 33 33 33 36 36 36 37 37 37 38 38 38 38 38 38 38 38 38
++37 37 37 44 44 44 54 54 54 58 58 58 51 51 51 42 42 42 40 40 40 46 46 46
++38 38 38 52 52 52 65 65 65 68 68 68 61 61 61 50 50 50 48 48 48 57 57 57
++49 49 49 58 58 58 67 67 67 71 71 71 68 68 68 58 58 58 53 53 53 60 60 60
++59 59 59 57 57 57 69 69 69 84 84 84 78 78 78 62 62 62 66 66 66 84 84 84
++85 85 85 83 83 83 84 84 84 88 88 88 91 91 91 87 87 87 73 73 73 62 62 62
++68 68 68 84 84 84 90 90 90 91 91 91 88 88 88 71 71 71 69 69 69 92 92 92
++78 78 78 69 69 69 83 83 83 95 95 94 89 89 89 90 90 90 91 91 91 77 77 77
++76 76 76 74 74 74 77 77 77 84 84 84 90 90 90 84 84 84 71 71 71 76 76 76
++89 89 89 87 87 87 81 81 81 88 88 88 96 96 96 87 87 87 75 75 75 84 84 84
++93 93 93 77 77 77 73 73 73 88 88 88 96 96 96 89 89 89 77 77 77 74 74 74
++92 92 92 83 83 83 83 83 83 94 94 94 96 96 96 87 87 87 84 84 84 91 91 91
++72 72 72 75 75 75 72 72 72 74 74 74 87 87 87 92 92 92 87 87 87 82 82 82
++83 83 83 75 75 75 73 73 73 76 76 76 75 75 75 73 73 73 70 70 70 63 63 63
++67 67 67 62 62 62 62 62 62 63 63 63 65 65 65 68 68 68 69 69 69 65 65 65
++63 63 63 68 68 68 74 74 74 80 80 80 80 80 80 76 76 76 76 76 76 77 77 77
++75 75 75 75 75 75 75 75 75 75 75 75 76 76 76 75 75 75 73 73 73 71 71 71
++54 54 54 51 51 51 57 57 57 59 59 59 56 56 56 62 62 62 65 65 65 52 52 52
++48 48 48 49 49 49 48 48 48 46 46 46 45 45 45 46 46 46 45 45 45 42 42 42
++46 46 46 40 40 40 37 37 37 38 38 38 40 40 40 40 40 40 38 38 38 37 37 37
++49 49 49 53 53 53 53 53 53 49 49 49 42 42 42 34 34 34 34 34 34 44 44 44
++42 42 42 49 49 49 51 51 51 50 50 50 46 46 46 34 34 34 20 20 20 17 17 17
++42 42 42 45 45 45 49 49 49 46 46 46 40 40 40 37 37 37 39 39 39 42 42 42
++44 44 44 40 40 40 36 36 36 33 33 33 37 37 37 43 43 43 43 43 43 39 39 39
++32 32 32 34 34 34 37 37 37 39 39 39 39 39 39 37 37 37 33 33 33 31 31 31
++34 34 34 39 39 39 40 40 40 37 37 37 29 29 29 25 25 25 29 29 29 34 34 34
++32 32 32 32 32 32 31 31 31 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29
++28 28 28 25 25 25 25 25 25 24 24 24 16 16 16 0 0 0 0 0 0 0 0 0
++24 24 24 24 24 24 29 29 29 37 37 37 39 39 39 36 36 36 33 33 33 36 36 36
++37 37 37 36 36 36 32 32 32 34 34 34 36 36 36 23 23 23 8 8 8 8 8 8
++8 8 8 10 10 10 13 13 13 14 14 14 17 17 17 25 25 25 21 21 21 6 6 6
++13 13 13 13 13 13 14 14 14 14 14 14 13 13 13 11 11 11 16 16 16 20 20 20
++24 24 24 21 21 21 8 8 8 0 0 0 14 14 14 27 27 27 29 29 29 31 31 31
++21 21 21 28 28 28 34 34 34 38 38 38 37 37 37 27 27 27 11 11 11 0 0 0
++0 0 0 13 13 13 24 24 24 28 28 28 31 31 31 36 36 36 38 38 38 37 37 37
++32 32 32 25 25 25 24 24 24 39 39 39 43 43 43 24 24 24 13 13 13 10 10 10
++8 8 8 11 11 11 14 14 14 16 16 16 14 14 14 11 11 11 10 10 10 8 8 8
++17 17 17 32 32 32 24 24 24 19 19 19 27 27 27 36 36 36 38 38 38 27 27 27
++3 3 3 24 24 24 29 29 29 23 23 23 13 13 13 3 3 3 4 4 4 19 19 19
++40 40 40 29 29 29 23 23 23 14 14 14 0 0 0 10 10 10 28 28 28 29 29 29
++
++0 0 0 0 0 0 6 6 6 32 32 32 27 27 27 0 0 0 0 0 0 10 10 10
++29 29 29 23 23 23 10 10 10 0 0 0 0 0 0 8 8 8 6 6 6 0 0 0
++6 6 6 27 27 27 28 28 28 8 8 8 0 0 0 13 13 13 14 14 14 0 0 0
++0 0 0 11 11 11 21 21 21 16 16 16 3 3 3 0 0 0 0 0 0 4 4 4
++3 3 3 6 6 6 16 16 16 24 24 24 19 19 19 4 4 4 0 0 0 3 3 3
++3 3 3 0 0 0 0 0 0 10 10 10 17 17 17 13 13 13 3 3 3 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 11 11 11 21 21 21 16 16 16 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 14 14 14 20 20 20 20 20 20
++0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0 0 0 0 0 0 0
++11 11 11 14 14 14 13 13 13 6 6 6 0 0 0 3 3 3 0 0 0 0 0 0
++0 0 0 16 16 16 20 20 20 6 6 6 0 0 0 6 6 6 6 6 6 0 0 0
++0 0 0 6 6 6 19 19 19 23 23 23 14 14 14 3 3 3 0 0 0 4 4 4
++0 0 0 0 0 0 10 10 10 20 20 20 20 20 20 8 8 8 0 0 0 0 0 0
++3 3 3 0 0 0 11 11 11 31 31 31 42 42 42 42 42 42 37 37 37 34 34 34
++38 38 38 34 34 34 32 32 32 33 33 33 40 40 40 40 40 40 25 25 25 6 6 6
++0 0 0 8 8 8 8 8 8 3 3 3 10 10 10 25 25 25 32 32 32 28 28 28
++6 6 6 13 13 13 24 24 24 36 36 36 29 29 29 13 13 13 10 10 10 17 17 17
++33 33 33 31 31 31 19 19 19 10 10 10 21 21 21 39 39 39 37 37 37 20 20 20
++14 14 14 21 21 21 33 33 33 38 38 38 29 29 29 17 17 17 23 23 23 37 37 37
++39 39 39 32 32 32 24 24 24 23 23 23 33 33 33 42 42 42 38 38 38 29 29 29
++27 27 27 29 29 29 33 33 33 34 34 34 34 34 34 34 34 34 36 36 36 37 37 37
++39 39 39 39 39 39 44 44 44 52 52 52 56 56 56 50 50 50 42 42 42 37 37 37
++44 44 44 44 44 44 48 48 48 58 58 58 67 67 67 62 62 62 51 51 51 43 43 43
++53 53 53 50 50 50 51 51 51 61 61 61 71 71 71 69 69 69 57 57 57 49 49 49
++59 59 59 54 54 54 56 56 56 68 68 68 76 76 76 74 74 74 68 68 68 63 63 63
++82 82 82 82 82 82 82 82 82 84 84 84 88 88 88 87 87 87 75 75 75 61 61 61
++66 66 66 77 77 77 80 80 80 78 78 78 85 85 85 85 85 85 77 77 77 74 74 74
++84 84 84 65 65 65 67 67 67 82 82 82 85 85 85 90 90 90 88 88 88 71 71 71
++73 73 73 74 74 74 77 77 77 80 80 80 87 87 87 93 93 93 85 85 85 71 71 71
++71 71 71 87 87 87 87 87 87 76 76 76 83 83 83 93 93 93 87 87 87 73 73 73
++90 90 90 84 84 84 73 73 73 71 71 71 81 81 81 89 89 89 83 83 83 70 70 70
++82 82 82 85 85 85 81 81 81 74 74 74 82 82 82 94 94 94 92 92 92 77 77 77
++69 69 69 70 70 70 66 66 66 67 67 67 76 76 76 81 81 81 76 76 76 72 72 72
++83 83 83 85 85 85 84 84 84 80 80 80 82 82 82 87 87 87 80 80 80 66 66 66
++65 65 65 63 63 63 63 63 63 65 65 65 69 69 69 71 71 71 68 68 68 61 61 61
++60 60 60 60 60 60 67 67 67 75 75 75 77 77 77 73 73 73 73 73 73 76 76 76
++74 74 74 74 74 74 73 73 73 73 73 73 73 73 73 70 70 70 67 67 67 63 63 63
++48 48 48 57 57 57 54 54 54 54 54 54 66 66 66 65 65 65 50 50 50 43 43 43
++40 40 40 46 46 46 49 49 49 43 43 43 40 40 40 43 43 43 46 46 46 46 46 46
++52 52 52 39 39 39 29 29 29 32 32 32 37 37 37 37 37 37 36 36 36 36 36 36
++32 32 32 44 44 44 45 45 45 34 34 34 31 31 31 38 38 38 40 40 40 38 38 38
++42 42 42 53 53 53 56 56 56 49 49 49 45 45 45 48 48 48 46 46 46 42 42 42
++39 39 39 44 44 44 48 48 48 46 46 46 42 42 42 37 37 37 37 37 37 38 38 38
++43 43 43 43 43 43 39 39 39 32 32 32 32 32 32 38 38 38 42 42 42 39 39 39
++34 34 34 33 33 33 33 33 33 36 36 36 38 38 38 38 38 38 36 36 36 32 32 32
++32 32 32 37 37 37 39 39 39 38 38 38 33 33 33 28 28 28 29 29 29 32 32 32
++31 31 31 31 31 31 31 31 31 31 31 31 29 29 29 28 28 28 28 28 28 27 27 27
++23 23 23 25 25 25 23 23 23 14 14 14 4 4 4 6 6 6 19 19 19 28 28 28
++29 29 29 16 16 16 8 8 8 16 16 16 24 24 24 24 24 24 21 21 21 21 21 21
++21 21 21 31 31 31 34 34 34 32 32 32 28 28 28 16 16 16 6 6 6 11 11 11
++13 13 13 6 6 6 10 10 10 21 21 21 24 24 24 17 17 17 10 10 10 8 8 8
++6 6 6 21 21 21 29 29 29 20 20 20 8 8 8 10 10 10 20 20 20 28 28 28
++19 19 19 14 14 14 6 6 6 3 3 3 11 11 11 20 20 20 19 19 19 14 14 14
++17 17 17 19 19 19 24 24 24 27 27 27 24 24 24 23 23 23 23 23 23 20 20 20
++13 13 13 19 19 19 20 20 20 17 17 17 19 19 19 27 27 27 28 28 28 25 25 25
++21 21 21 16 16 16 8 8 8 17 17 17 28 28 28 20 20 20 10 10 10 6 6 6
++8 8 8 11 11 11 16 16 16 16 16 16 13 13 13 10 10 10 8 8 8 8 8 8
++13 13 13 29 29 29 19 19 19 11 11 11 19 19 19 21 21 21 24 24 24 19 19 19
++16 16 16 14 14 14 17 17 17 20 20 20 19 19 19 17 17 17 19 19 19 20 20 20
++25 25 25 17 17 17 19 19 19 20 20 20 10 10 10 11 11 11 23 23 23 28 28 28
++
++13 13 13 0 0 0 0 0 0 19 19 19 32 32 32 19 19 19 8 8 8 0 0 0
++14 14 14 25 25 25 23 23 23 6 6 6 0 0 0 6 6 6 8 8 8 0 0 0
++0 0 0 13 13 13 25 25 25 24 24 24 16 16 16 10 10 10 4 4 4 0 0 0
++0 0 0 3 3 3 13 13 13 21 21 21 21 21 21 11 11 11 3 3 3 0 0 0
++6 6 6 0 0 0 3 3 3 16 16 16 21 21 21 16 16 16 6 6 6 3 3 3
++4 4 4 0 0 0 0 0 0 0 0 0 10 10 10 17 17 17 14 14 14 6 6 6
++0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 11 11 11 17 17 17 14 14 14
++0 0 0 0 0 0 3 3 3 4 4 4 0 0 0 0 0 0 11 11 11 24 24 24
++16 16 16 6 6 6 0 0 0 6 6 6 4 4 4 0 0 0 0 0 0 11 11 11
++19 19 19 8 8 8 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0
++11 11 11 19 19 19 14 14 14 0 0 0 0 0 0 6 6 6 6 6 6 0 0 0
++3 3 3 16 16 16 21 21 21 14 14 14 3 3 3 0 0 0 0 0 0 4 4 4
++0 0 0 6 6 6 19 19 19 23 23 23 11 11 11 0 0 0 0 0 0 8 8 8
++0 0 0 6 6 6 23 23 23 37 37 37 42 42 42 36 36 36 33 33 33 34 34 34
++36 36 36 33 33 33 33 33 33 38 38 38 37 37 37 25 25 25 10 10 10 0 0 0
++4 4 4 8 8 8 8 8 8 10 10 10 21 21 21 31 31 31 25 25 25 10 10 10
++3 3 3 24 24 24 38 38 38 28 28 28 11 11 11 8 8 8 19 19 19 29 29 29
++29 29 29 14 14 14 6 6 6 20 20 20 36 36 36 38 38 38 24 24 24 8 8 8
++20 20 20 34 34 34 39 39 39 27 27 27 16 16 16 20 20 20 32 32 32 38 38 38
++31 31 31 24 24 24 24 24 24 32 32 32 38 38 38 37 37 37 31 31 31 27 27 27
++28 28 28 31 31 31 33 33 33 33 33 33 32 32 32 32 32 32 34 34 34 37 37 37
++38 38 38 37 37 37 36 36 36 42 42 42 51 51 51 56 56 56 49 49 49 39 39 39
++45 45 45 39 39 39 37 37 37 45 45 45 59 59 59 66 66 66 57 57 57 42 42 42
++51 51 51 45 45 45 44 44 44 50 50 50 62 62 62 70 70 70 65 65 65 53 53 53
++53 53 53 53 53 53 51 51 51 53 53 53 66 66 66 77 77 77 73 73 73 61 61 61
++75 75 75 78 78 78 81 81 81 80 80 80 82 82 82 84 84 84 78 78 78 69 69 69
++63 63 63 67 67 67 73 73 73 73 73 73 74 74 74 85 85 85 87 87 87 72 72 72
++85 85 85 73 73 73 62 62 62 65 65 65 75 75 75 83 83 83 77 77 77 68 68 68
++73 73 73 71 71 71 77 77 77 80 80 80 76 76 76 87 87 87 93 93 93 78 78 78
++63 63 63 76 76 76 84 84 84 76 76 76 72 72 72 87 87 87 90 90 90 77 77 77
++75 75 75 83 83 83 78 78 78 65 65 65 66 66 66 82 82 82 87 87 87 81 81 81
++65 65 65 77 77 77 81 81 81 72 72 72 73 73 73 85 85 85 90 90 90 87 87 87
++69 69 69 61 61 61 61 61 61 63 63 63 65 65 65 69 69 69 75 75 75 77 77 77
++58 58 58 63 63 63 68 68 68 71 71 71 77 77 77 83 83 83 82 82 82 78 78 78
++71 71 71 73 73 73 74 74 74 75 75 75 81 81 81 81 81 81 71 71 71 60 60 60
++60 60 60 58 58 58 61 61 61 70 70 70 73 73 73 72 72 72 72 72 72 75 75 75
++72 72 72 71 71 71 71 71 71 71 71 71 70 70 70 68 68 68 65 65 65 61 61 61
++54 54 54 63 63 63 62 62 62 60 60 60 59 59 59 46 46 46 34 34 34 40 40 40
++43 43 43 46 46 46 46 46 46 40 40 40 38 38 38 44 44 44 49 49 49 49 49 49
++42 42 42 29 29 29 23 23 23 29 29 29 37 37 37 38 38 38 36 36 36 34 34 34
++32 32 32 40 40 40 43 43 43 34 34 34 31 31 31 37 37 37 36 36 36 28 28 28
++32 32 32 45 45 45 49 49 49 37 37 37 29 29 29 37 37 37 44 44 44 40 40 40
++39 39 39 40 40 40 42 42 42 43 43 43 43 43 43 40 40 40 38 38 38 36 36 36
++37 37 37 43 43 43 44 44 44 36 36 36 31 31 31 33 33 33 37 37 37 37 37 37
++39 39 39 36 36 36 32 32 32 32 32 32 34 34 34 37 37 37 37 37 37 37 37 37
++31 31 31 32 32 32 34 34 34 37 37 37 37 37 37 36 36 36 32 32 32 29 29 29
++31 31 31 31 31 31 31 31 31 29 29 29 28 28 28 27 27 27 24 24 24 24 24 24
++16 16 16 23 23 23 21 21 21 14 14 14 16 16 16 27 27 27 32 32 32 28 28 28
++25 25 25 17 17 17 13 13 13 17 17 17 20 20 20 19 19 19 17 17 17 17 17 17
++31 31 31 33 33 33 24 24 24 16 16 16 17 17 17 13 13 13 6 6 6 6 6 6
++11 11 11 14 14 14 23 23 23 27 27 27 21 21 21 6 6 6 3 3 3 11 11 11
++10 10 10 23 23 23 24 24 24 13 13 13 11 11 11 21 21 21 21 21 21 10 10 10
++10 10 10 10 10 10 10 10 10 8 8 8 11 11 11 17 17 17 20 20 20 16 16 16
++34 34 34 31 31 31 27 27 27 21 21 21 14 14 14 17 17 17 25 25 25 29 29 29
++23 23 23 24 24 24 24 24 24 21 21 21 24 24 24 28 28 28 24 24 24 16 16 16
++29 29 29 31 31 31 20 20 20 11 11 11 23 23 23 25 25 25 13 13 13 4 4 4
++11 11 11 13 13 13 14 14 14 13 13 13 10 10 10 8 8 8 8 8 8 11 11 11
++0 0 0 24 24 24 21 21 21 19 19 19 23 23 23 20 20 20 27 27 27 29 29 29
++17 17 17 11 11 11 17 17 17 27 27 27 29 29 29 29 29 29 23 23 23 13 13 13
++19 19 19 13 13 13 19 19 19 29 29 29 27 27 27 20 20 20 16 16 16 13 13 13
++
++27 27 27 10 10 10 16 16 16 0 0 0 6 6 6 37 37 37 14 14 14 6 6 6
++0 0 0 11 11 11 23 23 23 23 23 23 8 8 8 0 0 0 0 0 0 3 3 3
++3 3 3 0 0 0 8 8 8 29 29 29 31 31 31 10 10 10 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 13 13 13 25 25 25 20 20 20 4 4 4 0 0 0
++3 3 3 4 4 4 0 0 0 0 0 0 11 11 11 21 21 21 17 17 17 4 4 4
++0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 11 11 11 19 19 19 21 21 21
++0 0 0 0 0 0 0 0 0 6 6 6 0 0 0 0 0 0 4 4 4 19 19 19
++13 13 13 4 4 4 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0 11 11 11
++24 24 24 13 13 13 3 3 3 0 0 0 0 0 0 0 0 0 8 8 8 19 19 19
++13 13 13 3 3 3 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 11 11 11
++24 24 24 13 13 13 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 4 4 4
++20 20 20 20 20 20 13 13 13 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 16 16 16 19 19 19 10 10 10 0 0 0 0 0 0 3 3 3 0 0 0
++3 3 3 17 17 17 32 32 32 39 39 39 37 37 37 31 31 31 31 31 31 34 34 34
++31 31 31 33 33 33 39 39 39 39 39 39 25 25 25 4 4 4 0 0 0 6 6 6
++10 10 10 0 0 0 6 6 6 23 23 23 31 31 31 21 21 21 6 6 6 0 0 0
++24 24 24 28 28 28 28 28 28 8 8 8 3 3 3 23 23 23 28 28 28 28 28 28
++13 13 13 10 10 10 19 19 19 33 33 33 32 32 32 19 19 19 13 13 13 19 19 19
++34 34 34 36 36 36 25 25 25 11 11 11 19 19 19 36 36 36 37 37 37 25 25 25
++20 20 20 23 23 23 32 32 32 39 39 39 36 36 36 25 25 25 24 24 24 31 31 31
++29 29 29 31 31 31 32 32 32 31 31 31 29 29 29 29 29 29 32 32 32 34 34 34
++31 31 31 33 33 33 33 33 33 34 34 34 42 42 42 50 50 50 52 52 52 50 50 50
++39 39 39 38 38 38 40 40 40 40 40 40 44 44 44 53 53 53 58 58 58 53 53 53
++43 43 43 44 44 44 48 48 48 46 46 46 46 46 46 57 57 57 67 67 67 67 67 67
++48 48 48 50 50 50 52 52 52 51 51 51 54 54 54 61 61 61 69 69 69 73 73 73
++68 68 68 73 73 73 75 75 75 74 74 74 75 75 75 80 80 80 81 81 81 78 78 78
++62 62 62 57 57 57 69 69 69 77 77 77 66 66 66 67 67 67 81 81 81 84 84 84
++81 81 81 82 82 82 67 67 67 56 56 56 65 65 65 70 70 70 66 66 66 68 68 68
++72 72 72 67 67 67 72 72 72 81 81 81 69 69 69 66 66 66 83 83 83 87 87 87
++74 74 74 63 63 63 71 71 71 81 81 81 73 73 73 70 70 70 80 80 80 85 85 85
++71 71 71 78 78 78 80 80 80 71 71 71 63 63 63 67 67 67 75 75 75 81 81 81
++71 71 71 65 65 65 69 69 69 83 83 83 84 84 84 75 75 75 74 74 74 84 84 84
++82 82 82 72 72 72 69 69 69 66 66 66 58 58 58 58 58 58 68 68 68 73 73 73
++71 71 71 62 62 62 54 54 54 56 56 56 58 58 58 54 54 54 60 60 60 74 74 74
++78 78 78 80 80 80 73 73 73 67 67 67 72 72 72 75 75 75 70 70 70 63 63 63
++60 60 60 58 58 58 57 57 57 61 61 61 67 67 67 69 69 69 70 70 70 72 72 72
++67 67 67 67 67 67 66 66 66 67 67 67 68 68 68 67 67 67 65 65 65 62 62 62
++72 72 72 59 59 59 62 62 62 70 70 70 65 65 65 62 62 62 68 68 68 68 68 68
++50 50 50 45 45 45 39 39 39 37 37 37 42 42 42 48 48 48 46 46 46 42 42 42
++34 34 34 32 32 32 34 34 34 43 43 43 49 49 49 46 46 46 38 38 38 31 31 31
++34 34 34 33 33 33 40 40 40 48 48 48 44 44 44 38 38 38 33 33 33 27 27 27
++28 28 28 39 39 39 45 45 45 38 38 38 31 31 31 38 38 38 46 46 46 43 43 43
++39 39 39 38 38 38 37 37 37 38 38 38 42 42 42 42 42 42 39 39 39 36 36 36
++32 32 32 39 39 39 44 44 44 39 39 39 33 33 33 31 31 31 32 32 32 34 34 34
++39 39 39 37 37 37 33 33 33 31 31 31 31 31 31 33 33 33 37 37 37 39 39 39
++32 32 32 31 31 31 29 29 29 33 33 33 38 38 38 38 38 38 33 33 33 28 28 28
++29 29 29 29 29 29 29 29 29 29 29 29 28 28 28 25 25 25 21 21 21 20 20 20
++23 23 23 21 21 21 13 13 13 10 10 10 21 21 21 33 33 33 25 25 25 8 8 8
++13 13 13 17 17 17 20 20 20 17 17 17 13 13 13 13 13 13 21 21 21 29 29 29
++23 23 23 33 33 33 31 31 31 19 19 19 13 13 13 10 10 10 6 6 6 11 11 11
++8 8 8 27 27 27 32 32 32 21 21 21 11 11 11 6 6 6 4 4 4 8 8 8
++13 13 13 24 24 24 25 25 25 17 17 17 19 19 19 27 27 27 21 21 21 3 3 3
++8 8 8 8 8 8 11 11 11 11 11 11 13 13 13 24 24 24 32 32 32 31 31 31
++24 24 24 28 28 28 29 29 29 29 29 29 31 31 31 31 31 31 31 31 31 34 34 34
++36 36 36 32 32 32 31 31 31 34 34 34 37 37 37 32 32 32 19 19 19 4 4 4
++27 27 27 37 37 37 34 34 34 20 20 20 31 31 31 37 37 37 19 19 19 10 10 10
++13 13 13 13 13 13 11 11 11 8 8 8 6 6 6 8 8 8 10 10 10 13 13 13
++14 14 14 34 34 34 37 37 37 34 34 34 27 27 27 17 17 17 25 25 25 29 29 29
++27 27 27 29 29 29 33 33 33 36 36 36 34 34 34 32 32 32 27 27 27 20 20 20
++11 11 11 4 4 4 10 10 10 23 23 23 27 27 27 21 21 21 11 11 11 0 0 0
++
++8 8 8 32 32 32 8 8 8 0 0 0 0 0 0 6 6 6 34 34 34 16 16 16
++0 0 0 0 0 0 10 10 10 23 23 23 21 21 21 3 3 3 0 0 0 3 3 3
++8 8 8 0 0 0 0 0 0 16 16 16 27 27 27 21 21 21 8 8 8 0 0 0
++4 4 4 0 0 0 0 0 0 8 8 8 19 19 19 21 21 21 17 17 17 13 13 13
++0 0 0 8 8 8 8 8 8 0 0 0 0 0 0 10 10 10 16 16 16 16 16 16
++4 4 4 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 11 11 11 21 21 21
++13 13 13 4 4 4 3 3 3 6 6 6 3 3 3 0 0 0 0 0 0 10 10 10
++17 17 17 11 11 11 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++13 13 13 14 14 14 10 10 10 0 0 0 0 0 0 10 10 10 14 14 14 14 14 14
++3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 3 3 3 13 13 13 21 21 21
++19 19 19 3 3 3 0 0 0 6 6 6 4 4 4 0 0 0 0 0 0 17 17 17
++21 21 21 13 13 13 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++16 16 16 17 17 17 10 10 10 0 0 0 0 0 0 6 6 6 4 4 4 0 0 0
++14 14 14 27 27 27 37 37 37 37 37 37 32 32 32 29 29 29 32 32 32 34 34 34
++31 31 31 36 36 36 37 37 37 29 29 29 13 13 13 0 0 0 0 0 0 8 8 8
++8 8 8 4 4 4 16 16 16 28 28 28 25 25 25 8 8 8 3 3 3 14 14 14
++32 32 32 19 19 19 13 13 13 3 3 3 14 14 14 29 29 29 23 23 23 17 17 17
++8 8 8 19 19 19 29 29 29 31 31 31 19 19 19 8 8 8 17 17 17 32 32 32
++33 33 33 23 23 23 13 13 13 16 16 16 29 29 29 37 37 37 31 31 31 17 17 17
++23 23 23 28 28 28 34 34 34 33 33 33 27 27 27 21 21 21 23 23 23 28 28 28
++27 27 27 27 27 27 28 28 28 28 28 28 28 28 28 29 29 29 31 31 31 32 32 32
++28 28 28 29 29 29 32 32 32 34 34 34 34 34 34 37 37 37 45 45 45 53 53 53
++44 44 44 39 39 39 40 40 40 42 42 42 36 36 36 39 39 39 51 51 51 56 56 56
++49 49 49 44 44 44 45 45 45 45 45 45 39 39 39 44 44 44 58 58 58 63 63 63
++53 53 53 50 50 50 49 49 49 50 50 50 49 49 49 49 49 49 58 58 58 70 70 70
++67 67 67 69 69 69 70 70 70 70 70 70 71 71 71 74 74 74 77 77 77 77 77 77
++71 71 71 57 57 57 62 62 62 74 74 74 66 66 66 56 56 56 66 66 66 78 78 78
++77 77 77 81 81 81 68 68 68 56 56 56 60 60 60 61 61 61 59 59 59 66 66 66
++72 72 72 72 72 72 68 68 68 75 75 75 70 70 70 57 57 57 67 67 67 77 77 77
++83 83 83 67 67 67 61 61 61 71 71 71 72 72 72 66 66 66 67 67 67 75 75 75
++76 76 76 76 76 76 75 75 75 72 72 72 65 65 65 59 59 59 61 61 61 68 68 68
++84 84 84 67 67 67 63 63 63 80 80 80 84 84 84 69 69 69 57 57 57 59 59 59
++82 82 82 84 84 84 76 76 76 67 67 67 62 62 62 59 59 59 57 57 57 58 58 58
++71 71 71 66 66 66 56 56 56 53 53 53 60 60 60 65 65 65 69 69 69 80 80 80
++70 70 70 72 72 72 61 61 61 51 51 51 59 59 59 68 68 68 68 68 68 67 67 67
++60 60 60 57 57 57 52 52 52 51 51 51 57 57 57 65 65 65 67 67 67 67 67 67
++65 65 65 63 63 63 62 62 62 62 62 62 63 63 63 63 63 63 61 61 61 60 60 60
++63 63 63 43 43 43 38 38 38 43 43 43 38 38 38 37 37 37 39 39 39 33 33 33
++45 45 45 39 39 39 36 36 36 39 39 39 45 45 45 45 45 45 39 39 39 34 34 34
++36 36 36 42 42 42 49 49 49 54 54 54 56 56 56 52 52 52 39 39 39 28 28 28
++25 25 25 23 23 23 32 32 32 43 43 43 42 42 42 38 38 38 33 33 33 25 25 25
++17 17 17 19 19 19 25 25 25 27 27 27 25 25 25 33 33 33 40 40 40 37 37 37
++40 40 40 38 38 38 36 36 36 36 36 36 38 38 38 39 39 39 39 39 39 38 38 38
++31 31 31 32 32 32 37 37 37 39 39 39 38 38 38 33 33 33 31 31 31 32 32 32
++34 34 34 36 36 36 36 36 36 33 33 33 29 29 29 29 29 29 32 32 32 36 36 36
++36 36 36 33 33 33 29 29 29 31 31 31 33 33 33 36 36 36 33 33 33 31 31 31
++29 29 29 29 29 29 29 29 29 29 29 29 27 27 27 23 23 23 20 20 20 17 17 17
++25 25 25 14 14 14 6 6 6 10 10 10 20 20 20 20 20 20 11 11 11 0 0 0
++0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 4 4 4 20 20 20 25 25 25
++8 8 8 31 31 31 37 37 37 23 23 23 11 11 11 6 6 6 10 10 10 16 16 16
++17 17 17 28 28 28 24 24 24 10 10 10 8 8 8 8 8 8 6 6 6 10 10 10
++3 3 3 13 13 13 20 20 20 19 19 19 14 14 14 11 11 11 8 8 8 4 4 4
++10 10 10 6 6 6 8 8 8 10 10 10 11 11 11 24 24 24 32 32 32 25 25 25
++33 33 33 34 34 34 23 23 23 11 11 11 13 13 13 8 8 8 4 4 4 16 16 16
++36 36 36 24 24 24 19 19 19 27 27 27 32 32 32 24 24 24 11 11 11 3 3 3
++19 19 19 33 33 33 38 38 38 28 28 28 37 37 37 39 39 39 19 19 19 17 17 17
++13 13 13 10 10 10 8 8 8 6 6 6 8 8 8 10 10 10 11 11 11 13 13 13
++16 16 16 28 28 28 33 33 33 33 33 33 17 17 17 0 0 0 11 11 11 11 11 11
++32 32 32 39 39 39 38 38 38 29 29 29 27 27 27 27 27 27 25 25 25 24 24 24
++3 3 3 0 0 0 0 0 0 10 10 10 19 19 19 17 17 17 11 11 11 3 3 3
++
++0 0 0 6 6 6 25 25 25 13 13 13 0 0 0 3 3 3 8 8 8 28 28 28
++21 21 21 0 0 0 0 0 0 11 11 11 27 27 27 24 24 24 10 10 10 0 0 0
++0 0 0 6 6 6 0 0 0 0 0 0 11 11 11 33 33 33 28 28 28 3 3 3
++0 0 0 6 6 6 11 11 11 3 3 3 0 0 0 8 8 8 21 21 21 28 28 28
++0 0 0 4 4 4 11 11 11 10 10 10 0 0 0 0 0 0 6 6 6 28 28 28
++17 17 17 3 3 3 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0 10 10 10
++23 23 23 19 19 19 6 6 6 0 0 0 0 0 0 6 6 6 6 6 6 0 0 0
++10 10 10 16 16 16 14 14 14 3 3 3 0 0 0 3 3 3 4 4 4 0 0 0
++0 0 0 11 11 11 16 16 16 4 4 4 6 6 6 20 20 20 17 17 17 0 0 0
++0 0 0 4 4 4 4 4 4 0 0 0 0 0 0 13 13 13 21 21 21 23 23 23
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 14 14 14 25 25 25
++13 13 13 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0 4 4 4 19 19 19
++27 27 27 11 11 11 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 3 3 3
++24 24 24 33 33 33 38 38 38 34 34 34 29 29 29 32 32 32 34 34 34 33 33 33
++34 34 34 36 36 36 29 29 29 16 16 16 6 6 6 6 6 6 8 8 8 4 4 4
++4 4 4 19 19 19 29 29 29 25 25 25 10 10 10 0 0 0 16 16 16 33 33 33
++25 25 25 4 4 4 8 8 8 16 16 16 25 25 25 27 27 27 10 10 10 10 10 10
++17 17 17 28 28 28 31 31 31 17 17 17 6 6 6 13 13 13 28 28 28 36 36 36
++20 20 20 10 10 10 13 13 13 29 29 29 36 36 36 25 25 25 19 19 19 20 20 20
++33 33 33 34 34 34 29 29 29 21 21 21 20 20 20 25 25 25 25 25 25 21 21 21
++23 23 23 24 24 24 25 25 25 27 27 27 28 28 28 29 29 29 29 29 29 29 29 29
++34 34 34 28 28 28 29 29 29 36 36 36 34 34 34 28 28 28 34 34 34 48 48 48
++59 59 59 40 40 40 36 36 36 40 40 40 38 38 38 36 36 36 43 43 43 46 46 46
++66 66 66 44 44 44 36 36 36 42 42 42 42 42 42 42 42 42 46 46 46 49 49 49
++66 66 66 53 53 53 43 43 43 43 43 43 48 48 48 50 50 50 50 50 50 50 50 50
++71 71 71 69 69 69 68 68 68 68 68 68 69 69 69 70 70 70 70 70 70 71 71 71
++83 83 83 63 63 63 54 54 54 65 65 65 69 69 69 59 59 59 52 52 52 59 59 59
++78 78 78 74 74 74 63 63 63 58 58 58 61 61 61 60 60 60 57 57 57 60 60 60
++73 73 73 83 83 83 67 67 67 66 66 66 75 75 75 62 62 62 57 57 57 61 61 61
++82 82 82 78 78 78 62 62 62 53 53 53 68 68 68 74 74 74 65 65 65 56 56 56
++77 77 77 73 73 73 68 68 68 65 65 65 65 65 65 63 63 63 61 61 61 60 60 60
++61 61 61 63 63 63 63 63 63 66 66 66 70 70 70 72 72 72 67 67 67 58 58 58
++59 59 59 77 77 77 73 73 73 65 65 65 73 73 73 71 71 71 57 57 57 54 54 54
++54 54 54 69 69 69 68 68 68 59 59 59 67 67 67 73 73 73 61 61 61 46 46 46
++52 52 52 60 60 60 57 57 57 53 53 53 63 63 63 71 71 71 69 69 69 66 66 66
++59 59 59 56 56 56 49 49 49 44 44 44 50 50 50 60 60 60 65 65 65 62 62 62
++67 67 67 65 65 65 61 61 61 60 60 60 60 60 60 59 59 59 57 57 57 56 56 56
++39 39 39 43 43 43 37 37 37 34 34 34 39 39 39 34 34 34 32 32 32 43 43 43
++33 33 33 32 32 32 37 37 37 44 44 44 46 46 46 39 39 39 34 34 34 33 33 33
++31 31 31 40 40 40 49 49 49 51 51 51 52 52 52 50 50 50 40 40 40 29 29 29
++29 29 29 33 33 33 38 38 38 38 38 38 37 37 37 45 45 45 44 44 44 27 27 27
++29 29 29 19 19 19 19 19 19 24 24 24 27 27 27 34 34 34 40 40 40 37 37 37
++40 40 40 39 39 39 38 38 38 36 36 36 34 34 34 34 34 34 38 38 38 40 40 40
++31 31 31 27 27 27 29 29 29 38 38 38 42 42 42 37 37 37 31 31 31 29 29 29
++28 28 28 34 34 34 38 38 38 36 36 36 29 29 29 27 27 27 28 28 28 32 32 32
++39 39 39 36 36 36 31 31 31 28 28 28 28 28 28 31 31 31 33 33 33 34 34 34
++28 28 28 29 29 29 29 29 29 28 28 28 27 27 27 23 23 23 19 19 19 16 16 16
++13 13 13 4 4 4 8 8 8 21 21 21 23 23 23 6 6 6 0 0 0 0 0 0
++0 0 0 4 4 4 0 0 0 0 0 0 4 4 4 23 23 23 27 27 27 20 20 20
++24 24 24 34 34 34 28 28 28 10 10 10 6 6 6 10 10 10 10 10 10 10 10 10
++31 31 31 23 23 23 6 6 6 3 3 3 11 11 11 6 6 6 3 3 3 16 16 16
++6 6 6 4 4 4 11 11 11 20 20 20 19 19 19 8 8 8 3 3 3 6 6 6
++11 11 11 3 3 3 4 4 4 6 6 6 8 8 8 16 16 16 17 17 17 0 0 0
++23 23 23 27 27 27 8 8 8 0 0 0 6 6 6 8 8 8 10 10 10 25 25 25
++36 36 36 17 17 17 4 4 4 19 19 19 31 31 31 29 29 29 27 27 27 28 28 28
++25 25 25 37 37 37 43 43 43 34 34 34 40 40 40 37 37 37 13 13 13 20 20 20
++11 11 11 8 8 8 6 6 6 6 6 6 10 10 10 13 13 13 13 13 13 11 11 11
++3 3 3 11 11 11 21 21 21 29 29 29 16 16 16 8 8 8 23 23 23 20 20 20
++20 20 20 32 32 32 27 27 27 14 14 14 16 16 16 17 17 17 13 13 13 10 10 10
++13 13 13 11 11 11 8 8 8 10 10 10 16 16 16 17 17 17 13 13 13 8 8 8
++
++0 0 0 0 0 0 11 11 11 24 24 24 19 19 19 0 0 0 0 0 0 8 8 8
++24 24 24 19 19 19 0 0 0 0 0 0 6 6 6 25 25 25 24 24 24 6 6 6
++0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 8 8 8 20 20 20 31 31 31
++0 0 0 0 0 0 3 3 3 6 6 6 3 3 3 0 0 0 10 10 10 23 23 23
++27 27 27 11 11 11 3 3 3 8 8 8 4 4 4 0 0 0 0 0 0 11 11 11
++25 25 25 14 14 14 4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 6 6 6
++10 10 10 20 20 20 20 20 20 4 4 4 0 0 0 3 3 3 3 3 3 0 0 0
++0 0 0 10 10 10 17 17 17 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0
++10 10 10 0 0 0 0 0 0 25 25 25 29 29 29 6 6 6 0 0 0 4 4 4
++4 4 4 0 0 0 0 0 0 0 0 0 16 16 16 21 21 21 13 13 13 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 19 19 19 20 20 20 10 10 10
++3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 14 14 14 29 29 29
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 11 11 24 24 24
++34 34 34 31 31 31 29 29 29 32 32 32 32 32 32 31 31 31 33 33 33 38 38 38
++39 39 39 32 32 32 20 20 20 6 6 6 3 3 3 4 4 4 4 4 4 0 0 0
++17 17 17 28 28 28 24 24 24 6 6 6 3 3 3 20 20 20 27 27 27 20 20 20
++10 10 10 4 4 4 11 11 11 24 24 24 24 24 24 11 11 11 8 8 8 16 16 16
++31 31 31 27 27 27 17 17 17 10 10 10 17 17 17 27 27 27 27 27 27 19 19 19
++6 6 6 17 17 17 31 31 31 36 36 36 27 27 27 14 14 14 17 17 17 28 28 28
++32 32 32 28 28 28 24 24 24 21 21 21 21 21 21 21 21 21 21 21 21 20 20 20
++23 23 23 24 24 24 24 24 24 24 24 24 25 25 25 27 27 27 27 27 27 27 27 27
++28 28 28 28 28 28 28 28 28 28 28 28 29 29 29 31 31 31 31 31 31 32 32 32
++40 40 40 45 45 45 43 43 43 34 34 34 31 31 31 34 34 34 37 37 37 37 37 37
++46 46 46 54 54 54 53 53 53 40 40 40 36 36 36 42 42 42 44 44 44 40 40 40
++51 51 51 60 60 60 59 59 59 46 46 46 38 38 38 43 43 43 45 45 45 43 43 43
++52 52 52 65 65 65 73 73 73 71 71 71 67 67 67 68 68 68 68 68 68 67 67 67
++69 69 69 63 63 63 71 71 71 63 63 63 57 57 57 63 63 63 56 56 56 49 49 49
++58 58 58 67 67 67 73 73 73 61 61 61 54 54 54 57 57 57 52 52 52 54 54 54
++52 52 52 72 72 72 76 76 76 67 67 67 66 66 66 63 63 63 57 57 57 54 54 54
++54 54 54 63 63 63 76 76 76 69 69 69 52 52 52 60 60 60 70 70 70 61 61 61
++58 58 58 58 58 58 59 59 59 60 60 60 61 61 61 60 60 60 56 56 56 52 52 52
++68 68 68 63 63 63 59 59 59 56 56 56 53 53 53 54 54 54 59 59 59 63 63 63
++51 51 51 58 58 58 68 68 68 63 63 63 52 52 52 59 59 59 70 70 70 69 69 69
++60 60 60 58 58 58 67 67 67 72 72 72 62 62 62 52 52 52 48 48 48 42 42 42
++43 43 43 50 50 50 58 58 58 63 63 63 65 65 65 63 63 63 62 62 62 61 61 61
++65 65 65 50 50 50 45 45 45 48 48 48 44 44 44 50 50 50 59 59 59 60 60 60
++62 62 62 59 59 59 57 57 57 58 58 58 53 53 53 44 44 44 37 37 37 36 36 36
++43 43 43 43 43 43 44 44 44 45 45 45 46 46 46 46 46 46 45 45 45 45 45 45
++40 40 40 50 50 50 53 53 53 45 45 45 37 37 37 33 33 33 32 32 32 31 31 31
++34 34 34 33 33 33 39 39 39 49 49 49 46 46 46 37 37 37 34 34 34 39 39 39
++33 33 33 38 38 38 34 34 34 24 24 24 27 27 27 42 42 42 48 48 48 42 42 42
++32 32 32 20 20 20 23 23 23 24 24 24 17 17 17 29 29 29 39 39 39 32 32 32
++33 33 33 38 38 38 40 40 40 38 38 38 33 33 33 31 31 31 32 32 32 34 34 34
++38 38 38 36 36 36 31 31 31 27 27 27 31 31 31 36 36 36 36 36 36 32 32 32
++32 32 32 29 29 29 29 29 29 32 32 32 36 36 36 36 36 36 31 31 31 25 25 25
++31 31 31 34 34 34 37 37 37 33 33 33 27 27 27 24 24 24 29 29 29 34 34 34
++28 28 28 25 25 25 27 27 27 31 31 31 28 28 28 24 24 24 28 28 28 36 36 36
++3 3 3 13 13 13 20 20 20 19 19 19 10 10 10 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 3 3 3 16 16 16 25 25 25 31 31 31 32 32 32
++33 33 33 28 28 28 19 19 19 10 10 10 4 4 4 10 10 10 20 20 20 28 28 28
++25 25 25 13 13 13 3 3 3 6 6 6 10 10 10 6 6 6 4 4 4 4 4 4
++10 10 10 19 19 19 21 21 21 14 14 14 8 8 8 8 8 8 8 8 8 4 4 4
++6 6 6 8 8 8 6 6 6 14 14 14 21 21 21 13 13 13 0 0 0 4 4 4
++17 17 17 27 27 27 20 20 20 3 3 3 0 0 0 0 0 0 11 11 11 33 33 33
++17 17 17 0 0 0 23 23 23 29 29 29 3 3 3 13 13 13 32 32 32 33 33 33
++25 25 25 19 19 19 28 28 28 39 39 39 31 31 31 17 17 17 13 13 13 11 11 11
++11 11 11 11 11 11 4 4 4 14 14 14 11 11 11 8 8 8 17 17 17 3 3 3
++6 6 6 8 8 8 8 8 8 10 10 10 14 14 14 17 17 17 16 16 16 13 13 13
++13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 17 17 17 17 17 17 14 14 14
++11 11 11 11 11 11 11 11 11 13 13 13 16 16 16 17 17 17 14 14 14 10 10 10
++
++10 10 10 3 3 3 0 0 0 10 10 10 19 19 19 19 19 19 6 6 6 0 0 0
++11 11 11 16 16 16 16 16 16 10 10 10 0 0 0 4 4 4 16 16 16 24 24 24
++11 11 11 0 0 0 0 0 0 8 8 8 11 11 11 3 3 3 4 4 4 17 17 17
++20 20 20 14 14 14 4 4 4 0 0 0 0 0 0 6 6 6 6 6 6 3 3 3
++19 19 19 21 21 21 14 14 14 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0
++10 10 10 17 17 17 16 16 16 4 4 4 0 0 0 3 3 3 3 3 3 0 0 0
++0 0 0 11 11 11 19 19 19 16 16 16 6 6 6 0 0 0 0 0 0 3 3 3
++3 3 3 0 0 0 6 6 6 14 14 14 13 13 13 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 11 11 11 20 20 20 20 20 20 11 11 11 4 4 4 4 4 4
++0 0 0 0 0 0 3 3 3 10 10 10 14 14 14 13 13 13 4 4 4 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 14 14 14 19 19 19 13 13 13 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 6 6 6 17 17 17 19 19 19 11 11 11
++0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 3 3 3 17 17 17 31 31 31
++32 32 32 28 28 28 28 28 28 31 31 31 31 31 31 29 29 29 32 32 32 36 36 36
++36 36 36 21 21 21 11 11 11 11 11 11 8 8 8 0 0 0 3 3 3 16 16 16
++24 24 24 19 19 19 8 8 8 4 4 4 16 16 16 24 24 24 20 20 20 10 10 10
++6 6 6 16 16 16 24 24 24 23 23 23 14 14 14 8 8 8 13 13 13 21 21 21
++27 27 27 17 17 17 10 10 10 14 14 14 24 24 24 25 25 25 19 19 19 11 11 11
++16 16 16 24 24 24 31 31 31 27 27 27 19 19 19 16 16 16 21 21 21 28 28 28
++19 19 19 17 17 17 16 16 16 16 16 16 19 19 19 21 21 21 23 23 23 23 23 23
++23 23 23 24 24 24 24 24 24 25 25 25 25 25 25 27 27 27 27 27 27 27 27 27
++25 25 25 25 25 25 25 25 25 27 27 27 27 27 27 27 27 27 28 28 28 28 28 28
++33 33 33 38 38 38 44 44 44 43 43 43 34 34 34 28 28 28 31 31 31 36 36 36
++34 34 34 44 44 44 50 50 50 46 46 46 39 39 39 37 37 37 39 39 39 43 43 43
++39 39 39 49 49 49 56 56 56 51 51 51 43 43 43 39 39 39 42 42 42 45 45 45
++43 43 43 52 52 52 62 62 62 65 65 65 65 65 65 63 63 63 65 65 65 65 65 65
++63 63 63 58 58 58 63 63 63 63 63 63 60 60 60 62 62 62 57 57 57 49 49 49
++49 49 49 56 56 56 65 65 65 56 56 56 51 51 51 54 54 54 49 49 49 48 48 48
++51 51 51 57 57 57 65 65 65 72 72 72 75 75 75 67 67 67 56 56 56 52 52 52
++53 53 53 51 51 51 63 63 63 70 70 70 58 58 58 53 53 53 58 58 58 56 56 56
++54 54 54 54 54 54 60 60 60 68 68 68 69 69 69 65 65 65 62 62 62 63 63 63
++62 62 62 54 54 54 58 58 58 68 68 68 67 67 67 53 53 53 50 50 50 58 58 58
++50 50 50 52 52 52 56 56 56 61 61 61 61 61 61 52 52 52 48 48 48 53 53 53
++67 67 67 65 65 65 70 70 70 70 70 70 58 58 58 49 49 49 50 50 50 50 50 50
++49 49 49 53 53 53 59 59 59 61 61 61 60 60 60 58 58 58 57 57 57 56 56 56
++60 60 60 50 50 50 44 44 44 43 43 43 42 42 42 46 46 46 54 54 54 59 59 59
++57 57 57 56 56 56 57 57 57 60 60 60 60 60 60 56 56 56 54 54 54 57 57 57
++49 49 49 50 50 50 49 49 49 48 48 48 45 45 45 42 42 42 40 40 40 39 39 39
++49 49 49 46 46 46 40 40 40 33 33 33 28 28 28 29 29 29 31 31 31 31 31 31
++33 33 33 31 31 31 33 33 33 37 37 37 33 33 33 24 24 24 19 19 19 21 21 21
++31 31 31 28 28 28 25 25 25 24 24 24 23 23 23 25 25 25 36 36 36 48 48 48
++33 33 33 11 11 11 13 13 13 23 23 23 17 17 17 16 16 16 27 27 27 29 29 29
++31 31 31 34 34 34 39 39 39 39 39 39 37 37 37 32 32 32 31 31 31 31 31 31
++33 33 33 36 36 36 34 34 34 29 29 29 28 28 28 32 32 32 32 32 32 31 31 31
++32 32 32 29 29 29 28 28 28 29 29 29 32 32 32 33 33 33 31 31 31 28 28 28
++25 25 25 29 29 29 34 34 34 36 36 36 32 32 32 28 28 28 27 27 27 27 27 27
++31 31 31 29 29 29 31 31 31 33 33 33 32 32 32 28 28 28 25 25 25 25 25 25
++20 20 20 20 20 20 14 14 14 4 4 4 0 0 0 3 3 3 3 3 3 0 0 0
++6 6 6 3 3 3 6 6 6 17 17 17 29 29 29 33 33 33 28 28 28 21 21 21
++23 23 23 16 16 16 6 6 6 4 4 4 11 11 11 20 20 20 27 27 27 29 29 29
++17 17 17 11 11 11 6 6 6 6 6 6 6 6 6 6 6 6 10 10 10 13 13 13
++19 19 19 17 17 17 13 13 13 6 6 6 6 6 6 8 8 8 10 10 10 8 8 8
++4 4 4 10 10 10 11 11 11 17 17 17 20 20 20 11 11 11 0 0 0 3 3 3
++0 0 0 19 19 19 21 21 21 0 0 0 0 0 0 20 20 20 27 27 27 23 23 23
++0 0 0 14 14 14 25 25 25 31 31 31 25 25 25 28 28 28 27 27 27 0 0 0
++32 32 32 21 21 21 20 20 20 23 23 23 16 16 16 14 14 14 13 13 13 4 4 4
++6 6 6 10 10 10 0 0 0 6 6 6 14 14 14 10 10 10 14 14 14 11 11 11
++10 10 10 13 13 13 17 17 17 19 19 19 17 17 17 17 17 17 21 21 21 27 27 27
++24 24 24 16 16 16 10 10 10 13 13 13 20 20 20 23 23 23 20 20 20 16 16 16
++8 8 8 11 11 11 17 17 17 19 19 19 10 10 10 0 0 0 0 0 0 11 11 11
++
++16 16 16 11 11 11 0 0 0 0 0 0 10 10 10 23 23 23 16 16 16 0 0 0
++0 0 0 6 6 6 20 20 20 23 23 23 6 6 6 0 0 0 0 0 0 24 24 24
++23 23 23 8 8 8 0 0 0 6 6 6 10 10 10 3 3 3 0 0 0 3 3 3
++25 25 25 23 23 23 13 13 13 0 0 0 0 0 0 8 8 8 4 4 4 0 0 0
++10 10 10 23 23 23 23 23 23 4 4 4 0 0 0 4 4 4 4 4 4 0 0 0
++0 0 0 11 11 11 17 17 17 11 11 11 6 6 6 6 6 6 3 3 3 0 0 0
++0 0 0 0 0 0 11 11 11 20 20 20 17 17 17 6 6 6 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 11 11 11 16 16 16 8 8 8 0 0 0 0 0 0
++0 0 0 14 14 14 21 21 21 11 11 11 6 6 6 16 16 16 16 16 16 4 4 4
++0 0 0 4 4 4 13 13 13 16 16 16 13 13 13 6 6 6 0 0 0 0 0 0
++0 0 0 0 0 0 4 4 4 16 16 16 19 19 19 13 13 13 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 16 16 16 23 23 23 13 13 13 0 0 0
++0 0 0 0 0 0 0 0 0 4 4 4 10 10 10 14 14 14 24 24 24 33 33 33
++29 29 29 27 27 27 27 27 27 29 29 29 31 31 31 29 29 29 31 31 31 33 33 33
++28 28 28 13 13 13 0 0 0 4 4 4 4 4 4 0 0 0 11 11 11 25 25 25
++20 20 20 6 6 6 0 0 0 14 14 14 25 25 25 23 23 23 11 11 11 3 3 3
++14 14 14 24 24 24 25 25 25 11 11 11 4 4 4 13 13 13 21 21 21 23 23 23
++16 16 16 8 8 8 10 10 10 21 21 21 24 24 24 17 17 17 11 11 11 11 11 11
++28 28 28 29 29 29 24 24 24 14 14 14 14 14 14 23 23 23 27 27 27 23 23 23
++17 17 17 16 16 16 14 14 14 16 16 16 17 17 17 19 19 19 19 19 19 17 17 17
++20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 23 23 23 23 23 23 24 24 24
++24 24 24 24 24 24 25 25 25 25 25 25 27 27 27 27 27 27 27 27 27 25 25 25
++28 28 28 29 29 29 37 37 37 45 45 45 42 42 42 31 31 31 27 27 27 29 29 29
++27 27 27 33 33 33 43 43 43 49 49 49 45 45 45 37 37 37 34 34 34 37 37 37
++33 33 33 37 37 37 46 46 46 52 52 52 50 50 50 42 42 42 38 38 38 40 40 40
++37 37 37 40 40 40 50 50 50 60 60 60 62 62 62 60 60 60 59 59 59 60 60 60
++57 57 57 52 52 52 51 51 51 60 60 60 62 62 62 60 60 60 59 59 59 50 50 50
++42 42 42 43 43 43 52 52 52 48 48 48 48 48 48 54 54 54 46 46 46 42 42 42
++46 46 46 43 43 43 51 51 51 66 66 66 73 73 73 70 70 70 61 61 61 51 51 51
++49 49 49 40 40 40 51 51 51 63 63 63 58 58 58 51 51 51 51 51 51 48 48 48
++62 62 62 59 59 59 56 56 56 58 58 58 65 65 65 69 69 69 67 67 67 65 65 65
++50 50 50 42 42 42 45 45 45 61 61 61 66 66 66 53 53 53 44 44 44 44 44 44
++45 45 45 46 46 46 42 42 42 49 49 49 62 62 62 59 59 59 52 52 52 60 60 60
++54 54 54 46 46 46 46 46 46 54 54 54 59 59 59 60 60 60 60 60 60 56 56 56
++54 54 54 57 57 57 59 59 59 60 60 60 59 59 59 58 58 58 58 58 58 58 58 58
++54 54 54 51 51 51 43 43 43 38 38 38 39 39 39 40 40 40 48 48 48 58 58 58
++54 54 54 53 53 53 52 52 52 49 49 49 43 43 43 36 36 36 34 34 34 37 37 37
++31 31 31 32 32 32 33 33 33 31 31 31 28 28 28 27 27 27 28 28 28 29 29 29
++49 49 49 38 38 38 27 27 27 24 24 24 25 25 25 28 28 28 29 29 29 29 29 29
++27 27 27 27 27 27 29 29 29 33 33 33 37 37 37 38 38 38 38 38 38 38 38 38
++36 36 36 25 25 25 20 20 20 21 21 21 19 19 19 17 17 17 27 27 27 40 40 40
++39 39 39 21 21 21 23 23 23 31 31 31 23 23 23 20 20 20 25 25 25 27 27 27
++21 21 21 27 27 27 32 32 32 37 37 37 37 37 37 34 34 34 31 31 31 28 28 28
++27 27 27 34 34 34 37 37 37 33 33 33 28 28 28 28 28 28 29 29 29 29 29 29
++34 34 34 33 33 33 31 31 31 29 29 29 29 29 29 31 31 31 33 33 33 34 34 34
++27 27 27 28 28 28 32 32 32 34 34 34 34 34 34 32 32 32 28 28 28 25 25 25
++28 28 28 32 32 32 34 34 34 36 36 36 34 34 34 32 32 32 24 24 24 16 16 16
++28 28 28 25 25 25 16 16 16 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0
++0 0 0 6 6 6 16 16 16 25 25 25 29 29 29 25 25 25 14 14 14 3 3 3
++13 13 13 3 3 3 0 0 0 6 6 6 20 20 20 28 28 28 28 28 28 24 24 24
++6 6 6 10 10 10 10 10 10 6 6 6 4 4 4 10 10 10 16 16 16 19 19 19
++20 20 20 13 13 13 4 4 4 4 4 4 10 10 10 10 10 10 8 8 8 8 8 8
++4 4 4 13 13 13 16 16 16 19 19 19 20 20 20 8 8 8 0 0 0 0 0 0
++0 0 0 13 13 13 23 23 23 14 14 14 11 11 11 24 24 24 23 23 23 3 3 3
++11 11 11 27 27 27 28 28 28 37 37 37 24 24 24 0 0 0 0 0 0 10 10 10
++21 21 21 14 14 14 10 10 10 10 10 10 13 13 13 23 23 23 24 24 24 16 16 16
++0 0 0 8 8 8 13 13 13 19 19 19 14 14 14 3 3 3 3 3 3 0 0 0
++4 4 4 8 8 8 16 16 16 21 21 21 16 16 16 10 10 10 19 19 19 32 32 32
++38 38 38 27 27 27 20 20 20 27 27 27 32 32 32 32 32 32 31 31 31 31 31 31
++4 4 4 4 4 4 14 14 14 21 21 21 13 13 13 0 0 0 4 4 4 20 20 20
++
++14 14 14 19 19 19 14 14 14 0 0 0 0 0 0 11 11 11 19 19 19 17 17 17
++0 0 0 0 0 0 8 8 8 21 21 21 19 19 19 3 3 3 0 0 0 6 6 6
++23 23 23 25 25 25 19 19 19 4 4 4 0 0 0 6 6 6 8 8 8 0 0 0
++10 10 10 19 19 19 21 21 21 13 13 13 3 3 3 0 0 0 3 3 3 3 3 3
++4 4 4 13 13 13 21 21 21 20 20 20 10 10 10 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 6 6 6 17 17 17 17 17 17 6 6 6 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 11 11 11 20 20 20 16 16 16 3 3 3 0 0 0
++0 0 0 3 3 3 4 4 4 0 0 0 6 6 6 14 14 14 14 14 14 4 4 4
++6 6 6 19 19 19 17 17 17 0 0 0 0 0 0 11 11 11 16 16 16 8 8 8
++0 0 0 8 8 8 13 13 13 13 13 13 8 8 8 0 0 0 0 0 0 0 0 0
++0 0 0 6 6 6 17 17 17 20 20 20 11 11 11 0 0 0 0 0 0 4 4 4
++3 3 3 0 0 0 0 0 0 16 16 16 21 21 21 13 13 13 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 6 6 6 16 16 16 23 23 23 27 27 27 27 27 27
++28 28 28 27 27 27 27 27 27 28 28 28 31 31 31 31 31 31 31 31 31 31 31 31
++19 19 19 11 11 11 0 0 0 0 0 0 0 0 0 14 14 14 20 20 20 21 21 21
++3 3 3 6 6 6 16 16 16 24 24 24 21 21 21 11 11 11 6 6 6 11 11 11
++27 27 27 24 24 24 13 13 13 0 0 0 4 4 4 21 21 21 24 24 24 16 16 16
++6 6 6 13 13 13 20 20 20 23 23 23 16 16 16 8 8 8 13 13 13 21 21 21
++31 31 31 23 23 23 13 13 13 10 10 10 20 20 20 28 28 28 24 24 24 13 13 13
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17
++21 21 21 23 23 23 23 23 23 24 24 24 24 24 24 25 25 25 25 25 25 25 25 25
++23 23 23 23 23 23 25 25 25 27 27 27 27 27 27 28 28 28 28 28 28 28 28 28
++28 28 28 24 24 24 27 27 27 37 37 37 44 44 44 40 40 40 31 31 31 24 24 24
++31 31 31 28 28 28 32 32 32 40 40 40 45 45 45 42 42 42 34 34 34 29 29 29
++36 36 36 32 32 32 34 34 34 44 44 44 51 51 51 49 49 49 39 39 39 33 33 33
++38 38 38 36 36 36 43 43 43 57 57 57 62 62 62 59 59 59 56 56 56 58 58 58
++56 56 56 50 50 50 39 39 39 52 52 52 59 59 59 57 57 57 61 61 61 54 54 54
++42 42 42 38 38 38 45 45 45 44 44 44 48 48 48 57 57 57 51 51 51 43 43 43
++44 44 44 40 40 40 44 44 44 49 49 49 54 54 54 68 68 68 70 70 70 54 54 54
++46 46 46 40 40 40 44 44 44 49 49 49 50 50 50 54 54 54 54 54 54 45 45 45
++52 52 52 58 58 58 57 57 57 50 50 50 53 53 53 63 63 63 66 66 66 59 59 59
++49 49 49 42 42 42 36 36 36 40 40 40 52 52 52 58 58 58 51 51 51 40 40 40
++44 44 44 49 49 49 44 44 44 40 40 40 52 52 52 61 61 61 59 59 59 57 57 57
++45 45 45 37 37 37 36 36 36 46 46 46 58 58 58 60 60 60 57 57 57 52 52 52
++45 45 45 48 48 48 51 51 51 54 54 54 57 57 57 58 58 58 58 58 58 58 58 58
++52 52 52 53 53 53 43 43 43 34 34 34 36 36 36 36 36 36 40 40 40 53 53 53
++51 51 51 50 50 50 48 48 48 42 42 42 33 33 33 27 27 27 27 27 27 29 29 29
++24 24 24 27 27 27 27 27 27 25 25 25 23 23 23 25 25 25 32 32 32 37 37 37
++38 38 38 28 28 28 23 23 23 28 28 28 33 33 33 31 31 31 27 27 27 27 27 27
++25 25 25 25 25 25 25 25 25 25 25 25 29 29 29 34 34 34 34 34 34 33 33 33
++43 43 43 34 34 34 23 23 23 17 17 17 20 20 20 24 24 24 24 24 24 21 21 21
++38 38 38 37 37 37 39 39 39 36 36 36 28 28 28 32 32 32 32 32 32 21 21 21
++16 16 16 17 17 17 21 21 21 27 27 27 32 32 32 33 33 33 31 31 31 29 29 29
++23 23 23 31 31 31 36 36 36 33 33 33 29 29 29 29 29 29 28 28 28 27 27 27
++28 28 28 28 28 28 28 28 28 25 25 25 24 24 24 25 25 25 28 28 28 31 31 31
++28 28 28 25 25 25 21 21 21 21 21 21 25 25 25 27 27 27 27 27 27 25 25 25
++20 20 20 31 31 31 37 37 37 36 36 36 33 33 33 32 32 32 25 25 25 17 17 17
++21 21 21 23 23 23 23 23 23 17 17 17 6 6 6 0 0 0 0 0 0 4 4 4
++0 0 0 14 14 14 27 27 27 29 29 29 20 20 20 10 10 10 3 3 3 0 0 0
++8 8 8 4 4 4 6 6 6 14 14 14 24 24 24 27 27 27 20 20 20 13 13 13
++4 4 4 10 10 10 10 10 10 4 4 4 6 6 6 14 14 14 19 19 19 17 17 17
++13 13 13 6 6 6 4 4 4 11 11 11 14 14 14 8 8 8 4 4 4 6 6 6
++11 11 11 16 16 16 14 14 14 14 14 14 19 19 19 11 11 11 0 0 0 0 0 0
++4 4 4 3 3 3 20 20 20 29 29 29 20 20 20 11 11 11 10 10 10 0 0 0
++20 20 20 33 33 33 31 31 31 17 17 17 3 3 3 0 0 0 11 11 11 19 19 19
++8 8 8 8 8 8 13 13 13 20 20 20 27 27 27 31 31 31 32 32 32 28 28 28
++16 16 16 11 11 11 6 6 6 4 4 4 3 3 3 14 14 14 20 20 20 10 10 10
++14 14 14 14 14 14 19 19 19 24 24 24 17 17 17 3 3 3 6 6 6 21 21 21
++31 31 31 24 24 24 23 23 23 29 29 29 28 28 28 21 21 21 24 24 24 33 33 33
++17 17 17 11 11 11 10 10 10 16 16 16 20 20 20 19 19 19 19 19 19 20 20 20
++
++10 10 10 19 19 19 23 23 23 14 14 14 3 3 3 0 0 0 14 14 14 25 25 25
++16 16 16 4 4 4 0 0 0 10 10 10 21 21 21 23 23 23 11 11 11 0 0 0
++11 11 11 24 24 24 28 28 28 14 14 14 0 0 0 0 0 0 4 4 4 4 4 4
++0 0 0 6 6 6 20 20 20 23 23 23 13 13 13 0 0 0 0 0 0 10 10 10
++3 3 3 0 0 0 10 10 10 21 21 21 19 19 19 3 3 3 0 0 0 6 6 6
++4 4 4 0 0 0 0 0 0 11 11 11 17 17 17 11 11 11 4 4 4 3 3 3
++4 4 4 0 0 0 0 0 0 0 0 0 11 11 11 19 19 19 13 13 13 0 0 0
++0 0 0 3 3 3 4 4 4 0 0 0 0 0 0 11 11 11 19 19 19 17 17 17
++23 23 23 14 14 14 3 3 3 0 0 0 0 0 0 3 3 3 6 6 6 11 11 11
++16 16 16 13 13 13 10 10 10 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 13 13 13 19 19 19 13 13 13 0 0 0 0 0 0 0 0 0 6 6 6
++0 0 0 3 3 3 11 11 11 19 19 19 13 13 13 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 6 6 6 11 11 11 16 16 16 20 20 20 23 23 23 24 24 24
++27 27 27 27 27 27 27 27 27 28 28 28 31 31 31 32 32 32 29 29 29 25 25 25
++10 10 10 4 4 4 0 0 0 0 0 0 13 13 13 20 20 20 16 16 16 6 6 6
++0 0 0 16 16 16 25 25 25 20 20 20 6 6 6 3 3 3 13 13 13 23 23 23
++24 24 24 14 14 14 4 4 4 4 4 4 16 16 16 23 23 23 16 16 16 4 4 4
++11 11 11 21 21 21 24 24 24 16 16 16 6 6 6 10 10 10 21 21 21 28 28 28
++20 20 20 13 13 13 10 10 10 19 19 19 24 24 24 21 21 21 14 14 14 11 11 11
++11 11 11 13 13 13 14 14 14 17 17 17 19 19 19 19 19 19 20 20 20 21 21 21
++16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19
++20 20 20 20 20 20 21 21 21 23 23 23 24 24 24 25 25 25 25 25 25 27 27 27
++25 25 25 24 24 24 23 23 23 27 27 27 37 37 37 43 43 43 38 38 38 28 28 28
++29 29 29 28 28 28 27 27 27 29 29 29 38 38 38 43 43 43 40 40 40 33 33 33
++34 34 34 32 32 32 29 29 29 33 33 33 43 43 43 50 50 50 45 45 45 37 37 37
++37 37 37 29 29 29 34 34 34 50 50 50 60 60 60 57 57 57 54 54 54 58 58 58
++57 57 57 50 50 50 33 33 33 42 42 42 51 51 51 50 50 50 59 59 59 59 59 59
++49 49 49 38 38 38 43 43 43 43 43 43 46 46 46 59 59 59 57 57 57 50 50 50
++44 44 44 38 38 38 38 38 38 38 38 38 40 40 40 56 56 56 66 66 66 60 60 60
++52 52 52 44 44 44 39 39 39 39 39 39 43 43 43 52 52 52 58 58 58 54 54 54
++31 31 31 44 44 44 57 57 57 59 59 59 56 56 56 53 53 53 57 57 57 59 59 59
++57 57 57 51 51 51 40 40 40 36 36 36 42 42 42 52 52 52 54 54 54 52 52 52
++38 38 38 40 40 40 45 45 45 45 45 45 44 44 44 52 52 52 57 57 57 49 49 49
++42 42 42 44 44 44 48 48 48 50 50 50 49 49 49 45 45 45 50 50 50 58 58 58
++34 34 34 37 37 37 42 42 42 46 46 46 50 50 50 52 52 52 52 52 52 52 52 52
++50 50 50 53 53 53 44 44 44 33 33 33 33 33 33 33 33 33 37 37 37 48 48 48
++48 48 48 48 48 48 45 45 45 38 38 38 31 31 31 28 28 28 31 31 31 33 33 33
++31 31 31 31 31 31 29 29 29 27 27 27 25 25 25 29 29 29 37 37 37 44 44 44
++33 33 33 28 28 28 29 29 29 36 36 36 36 36 36 29 29 29 25 25 25 25 25 25
++27 27 27 25 25 25 23 23 23 21 21 21 23 23 23 25 25 25 25 25 25 23 23 23
++39 39 39 33 33 33 25 25 25 21 21 21 23 23 23 24 24 24 20 20 20 14 14 14
++25 25 25 31 31 31 37 37 37 33 33 33 29 29 29 32 32 32 31 31 31 19 19 19
++19 19 19 16 16 16 14 14 14 16 16 16 20 20 20 24 24 24 25 25 25 25 25 25
++20 20 20 25 25 25 29 29 29 29 29 29 31 31 31 32 32 32 28 28 28 23 23 23
++29 29 29 31 31 31 32 32 32 32 32 32 29 29 29 28 28 28 31 31 31 33 33 33
++34 34 34 29 29 29 25 25 25 24 24 24 27 27 27 31 31 31 32 32 32 32 32 32
++8 8 8 24 24 24 34 34 34 32 32 32 28 28 28 27 27 27 27 27 27 24 24 24
++19 19 19 16 16 16 20 20 20 25 25 25 19 19 19 0 0 0 0 0 0 10 10 10
++14 14 14 23 23 23 29 29 29 25 25 25 14 14 14 4 4 4 6 6 6 11 11 11
++6 6 6 11 11 11 19 19 19 24 24 24 24 24 24 20 20 20 13 13 13 6 6 6
++8 8 8 10 10 10 6 6 6 4 4 4 11 11 11 19 19 19 17 17 17 10 10 10
++6 6 6 4 4 4 8 8 8 14 14 14 11 11 11 4 4 4 4 4 4 13 13 13
++17 17 17 17 17 17 8 8 8 8 8 8 17 17 17 16 16 16 4 4 4 0 0 0
++4 4 4 0 0 0 16 16 16 31 31 31 20 20 20 4 4 4 11 11 11 20 20 20
++32 32 32 6 6 6 0 0 0 0 0 0 4 4 4 24 24 24 17 17 17 14 14 14
++11 11 11 13 13 13 21 21 21 32 32 32 32 32 32 23 23 23 21 21 21 28 28 28
++0 0 0 19 19 19 19 19 19 4 4 4 10 10 10 11 11 11 3 3 3 8 8 8
++6 6 6 3 3 3 10 10 10 24 24 24 28 28 28 23 23 23 24 24 24 31 31 31
++23 23 23 17 17 17 20 20 20 28 28 28 25 25 25 16 16 16 16 16 16 25 25 25
++28 28 28 23 23 23 14 14 14 10 10 10 17 17 17 25 25 25 21 21 21 11 11 11
++
++8 8 8 11 11 11 19 19 19 23 23 23 19 19 19 10 10 10 10 10 10 16 16 16
++24 24 24 19 19 19 10 10 10 6 6 6 14 14 14 24 24 24 23 23 23 14 14 14
++0 0 0 6 6 6 19 19 19 24 24 24 13 13 13 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 10 10 10 20 20 20 20 20 20 8 8 8 0 0 0 3 3 3
++3 3 3 0 0 0 0 0 0 8 8 8 19 19 19 20 20 20 10 10 10 0 0 0
++0 0 0 3 3 3 0 0 0 0 0 0 6 6 6 16 16 16 14 14 14 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 17 17 17 17 17 17
++6 6 6 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 13 13 13 25 25 25
++28 28 28 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 13 13 13
++23 23 23 17 17 17 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++13 13 13 13 13 13 8 8 8 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3
++0 0 0 13 13 13 20 20 20 10 10 10 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 8 8 8 17 17 17 14 14 14 10 10 10 13 13 13 20 20 20 25 25 25
++27 27 27 27 27 27 27 27 27 27 27 27 29 29 29 31 31 31 27 27 27 20 20 20
++4 4 4 0 0 0 0 0 0 20 20 20 27 27 27 16 16 16 3 3 3 0 0 0
++11 11 11 20 20 20 19 19 19 4 4 4 0 0 0 10 10 10 21 21 21 25 25 25
++10 10 10 6 6 6 11 11 11 20 20 20 21 21 21 14 14 14 6 6 6 4 4 4
++21 21 21 23 23 23 17 17 17 6 6 6 8 8 8 19 19 19 24 24 24 21 21 21
++6 6 6 10 10 10 19 19 19 25 25 25 21 21 21 10 10 10 8 8 8 16 16 16
++10 10 10 11 11 11 13 13 13 13 13 13 13 13 13 14 14 14 16 16 16 17 17 17
++16 16 16 16 16 16 17 17 17 17 17 17 19 19 19 19 19 19 20 20 20 20 20 20
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 21 21 21 23 23 23
++20 20 20 25 25 25 25 25 25 21 21 21 24 24 24 34 34 34 38 38 38 36 36 36
++25 25 25 28 28 28 27 27 27 24 24 24 28 28 28 37 37 37 43 43 43 43 43 43
++31 31 31 32 32 32 29 29 29 27 27 27 32 32 32 40 40 40 45 45 45 45 45 45
++34 34 34 25 25 25 25 25 25 40 40 40 51 51 51 52 52 52 52 52 52 56 56 56
++57 57 57 51 51 51 34 34 34 33 33 33 39 39 39 43 43 43 50 50 50 56 56 56
++53 53 53 39 39 39 42 42 42 42 42 42 43 43 43 56 56 56 58 58 58 53 53 53
++46 46 46 36 36 36 34 34 34 39 39 39 39 39 39 39 39 39 49 49 49 58 58 58
++56 56 56 43 43 43 34 34 34 38 38 38 40 40 40 42 42 42 50 50 50 59 59 59
++46 46 46 39 39 39 43 43 43 56 56 56 58 58 58 48 48 48 45 45 45 53 53 53
++56 56 56 50 50 50 45 45 45 43 43 43 37 37 37 32 32 32 40 40 40 53 53 53
++45 45 45 37 37 37 43 43 43 49 49 49 40 40 40 40 40 40 52 52 52 56 56 56
++48 48 48 48 48 48 43 43 43 38 38 38 37 37 37 33 33 33 38 38 38 49 49 49
++39 39 39 40 40 40 43 43 43 46 46 46 49 49 49 50 50 50 49 49 49 46 46 46
++45 45 45 49 49 49 43 43 43 33 33 33 29 29 29 31 31 31 36 36 36 42 42 42
++44 44 44 45 45 45 40 40 40 32 32 32 25 25 25 23 23 23 24 24 24 24 24 24
++23 23 23 23 23 23 23 23 23 21 21 21 23 23 23 29 29 29 37 37 37 44 44 44
++36 36 36 34 34 34 34 34 34 34 34 34 32 32 32 27 27 27 23 23 23 24 24 24
++24 24 24 23 23 23 24 24 24 27 27 27 29 29 29 31 31 31 32 32 32 33 33 33
++27 27 27 21 21 21 23 23 23 28 28 28 24 24 24 13 13 13 13 13 13 20 20 20
++17 17 17 17 17 17 25 25 25 33 33 33 32 32 32 28 28 28 27 27 27 27 27 27
++25 25 25 20 20 20 14 14 14 11 11 11 13 13 13 14 14 14 16 16 16 17 17 17
++17 17 17 21 21 21 24 24 24 24 24 24 25 25 25 28 28 28 25 25 25 19 19 19
++24 24 24 27 27 27 29 29 29 29 29 29 27 27 27 25 25 25 27 27 27 27 27 27
++27 27 27 27 27 27 28 28 28 28 28 28 28 28 28 28 28 28 27 27 27 27 27 27
++3 3 3 16 16 16 27 27 27 27 27 27 21 21 21 20 20 20 23 23 23 24 24 24
++20 20 20 10 10 10 8 8 8 17 17 17 20 20 20 13 13 13 10 10 10 14 14 14
++21 21 21 19 19 19 14 14 14 10 10 10 8 8 8 6 6 6 8 8 8 8 8 8
++8 8 8 14 14 14 21 21 21 24 24 24 20 20 20 14 14 14 10 10 10 8 8 8
++11 11 11 10 10 10 6 6 6 10 10 10 16 16 16 20 20 20 14 14 14 4 4 4
++6 6 6 6 6 6 8 8 8 8 8 8 4 4 4 3 3 3 11 11 11 20 20 20
++17 17 17 16 16 16 6 6 6 4 4 4 16 16 16 19 19 19 10 10 10 3 3 3
++3 3 3 10 10 10 19 19 19 20 20 20 11 11 11 10 10 10 17 17 17 23 23 23
++16 16 16 6 6 6 11 11 11 8 8 8 13 13 13 21 21 21 13 13 13 8 8 8
++14 14 14 16 16 16 20 20 20 27 27 27 25 25 25 11 11 11 11 11 11 27 27 27
++13 13 13 20 20 20 6 6 6 0 0 0 17 17 17 20 20 20 0 0 0 14 14 14
++14 14 14 8 8 8 10 10 10 19 19 19 23 23 23 17 17 17 13 13 13 14 14 14
++24 24 24 17 17 17 16 16 16 24 24 24 27 27 27 21 21 21 17 17 17 16 16 16
++20 20 20 23 23 23 17 17 17 6 6 6 10 10 10 20 20 20 20 20 20 11 11 11
++
++13 13 13 8 8 8 8 8 8 16 16 16 21 21 21 17 17 17 10 10 10 4 4 4
++13 13 13 19 19 19 20 20 20 11 11 11 6 6 6 11 11 11 19 19 19 24 24 24
++8 8 8 0 0 0 0 0 0 19 19 19 20 20 20 4 4 4 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 6 6 6 16 16 16 14 14 14 6 6 6 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 8 8 8 19 19 19 16 16 16 4 4 4
++0 0 0 4 4 4 3 3 3 0 0 0 0 0 0 10 10 10 14 14 14 13 13 13
++6 6 6 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 8 8 8 19 19 19
++16 16 16 4 4 4 0 0 0 0 0 0 3 3 3 3 3 3 10 10 10 19 19 19
++17 17 17 11 11 11 4 4 4 0 0 0 0 0 0 3 3 3 8 8 8 11 11 11
++14 14 14 13 13 13 10 10 10 3 3 3 0 0 0 0 0 0 0 0 0 6 6 6
++16 16 16 8 8 8 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 4 4 4
++6 6 6 14 14 14 14 14 14 3 3 3 0 0 0 0 0 0 4 4 4 3 3 3
++6 6 6 13 13 13 14 14 14 10 10 10 10 10 10 16 16 16 23 23 23 25 25 25
++24 24 24 27 27 27 25 25 25 24 24 24 27 27 27 28 28 28 21 21 21 13 13 13
++3 3 3 0 0 0 8 8 8 21 21 21 20 20 20 6 6 6 0 0 0 6 6 6
++19 19 19 16 16 16 6 6 6 0 0 0 8 8 8 21 21 21 21 21 21 14 14 14
++0 0 0 8 8 8 19 19 19 21 21 21 14 14 14 6 6 6 6 6 6 14 14 14
++21 21 21 16 16 16 10 10 10 8 8 8 14 14 14 19 19 19 16 16 16 11 11 11
++8 8 8 16 16 16 21 21 21 21 21 21 14 14 14 6 6 6 10 10 10 14 14 14
++13 13 13 14 14 14 14 14 14 13 13 13 11 11 11 13 13 13 16 16 16 19 19 19
++32 32 32 32 32 32 33 33 33 33 33 33 34 34 34 34 34 34 36 36 36 36 36 36
++28 28 28 25 25 25 23 23 23 19 19 19 17 17 17 19 19 19 20 20 20 20 20 20
++20 20 20 23 23 23 23 23 23 20 20 20 19 19 19 23 23 23 31 31 31 34 34 34
++32 32 32 27 27 27 23 23 23 23 23 23 25 25 25 28 28 28 34 34 34 40 40 40
++34 34 34 31 31 31 28 28 28 27 27 27 27 27 27 29 29 29 36 36 36 43 43 43
++40 40 40 31 31 31 25 25 25 34 34 34 43 43 43 46 46 46 48 48 48 50 50 50
++51 51 51 49 49 49 40 40 40 28 28 28 29 29 29 36 36 36 37 37 37 45 45 45
++51 51 51 34 34 34 39 39 39 37 37 37 34 34 34 46 46 46 51 51 51 49 49 49
++49 49 49 40 40 40 34 34 34 37 37 37 37 37 37 31 31 31 34 34 34 48 48 48
++48 48 48 43 43 43 39 39 39 37 37 37 34 34 34 33 33 33 39 39 39 48 48 48
++59 59 59 45 45 45 36 36 36 39 39 39 44 44 44 43 43 43 42 42 42 44 44 44
++45 45 45 43 43 43 42 42 42 40 40 40 32 32 32 25 25 25 29 29 29 40 40 40
++56 56 56 48 48 48 44 44 44 43 43 43 36 36 36 31 31 31 39 39 39 49 49 49
++53 53 53 46 46 46 33 33 33 28 28 28 32 32 32 28 28 28 24 24 24 29 29 29
++45 45 45 44 44 44 43 43 43 43 43 43 44 44 44 44 44 44 43 43 43 40 40 40
++39 39 39 39 39 39 38 38 38 32 32 32 27 27 27 31 31 31 37 37 37 37 37 37
++38 38 38 39 39 39 37 37 37 31 31 31 28 28 28 31 31 31 32 32 32 31 31 31
++21 21 21 23 23 23 24 24 24 27 27 27 29 29 29 34 34 34 39 39 39 42 42 42
++36 36 36 34 34 34 31 31 31 27 27 27 25 25 25 27 27 27 25 25 25 21 21 21
++24 24 24 21 21 21 23 23 23 28 28 28 27 27 27 21 21 21 20 20 20 24 24 24
++19 19 19 20 20 20 24 24 24 27 27 27 21 21 21 14 14 14 14 14 14 20 20 20
++16 16 16 19 19 19 23 23 23 28 28 28 28 28 28 24 24 24 24 24 24 27 27 27
++25 25 25 21 21 21 17 17 17 14 14 14 13 13 13 13 13 13 13 13 13 11 11 11
++13 13 13 20 20 20 21 21 21 19 19 19 14 14 14 16 16 16 17 17 17 14 14 14
++6 6 6 8 8 8 10 10 10 10 10 10 8 8 8 8 8 8 8 8 8 8 8 8
++6 6 6 11 11 11 17 17 17 17 17 17 13 13 13 8 8 8 6 6 6 8 8 8
++6 6 6 10 10 10 16 16 16 20 20 20 20 20 20 16 16 16 14 14 14 14 14 14
++13 13 13 10 10 10 4 4 4 4 4 4 11 11 11 16 16 16 16 16 16 14 14 14
++14 14 14 8 8 8 0 0 0 0 0 0 3 3 3 6 6 6 6 6 6 3 3 3
++16 16 16 17 17 17 17 17 17 16 16 16 11 11 11 8 8 8 8 8 8 10 10 10
++10 10 10 8 8 8 10 10 10 16 16 16 19 19 19 16 16 16 10 10 10 6 6 6
++6 6 6 8 8 8 6 6 6 3 3 3 4 4 4 11 11 11 16 16 16 17 17 17
++8 8 8 16 16 16 11 11 11 6 6 6 14 14 14 16 16 16 11 11 11 11 11 11
++11 11 11 23 23 23 21 21 21 11 11 11 10 10 10 14 14 14 16 16 16 16 16 16
++3 3 3 25 25 25 6 6 6 8 8 8 14 14 14 3 3 3 14 14 14 11 11 11
++11 11 11 14 14 14 13 13 13 14 14 14 17 17 17 11 11 11 11 11 11 23 23 23
++27 27 27 0 0 0 6 6 6 23 23 23 0 0 0 3 3 3 11 11 11 8 8 8
++4 4 4 3 3 3 3 3 3 8 8 8 11 11 11 13 13 13 11 11 11 11 11 11
++17 17 17 14 14 14 13 13 13 16 16 16 19 19 19 16 16 16 13 13 13 10 10 10
++11 11 11 17 17 17 17 17 17 11 11 11 10 10 10 14 14 14 17 17 17 14 14 14
++
++19 19 19 8 8 8 0 0 0 0 0 0 13 13 13 19 19 19 13 13 13 3 3 3
++0 0 0 10 10 10 21 21 21 19 19 19 4 4 4 0 0 0 6 6 6 20 20 20
++20 20 20 3 3 3 0 0 0 3 3 3 19 19 19 21 21 21 11 11 11 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 17 17 17 14 14 14 3 3 3
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 13 13 13 21 21 21
++4 4 4 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 8 8 8 24 24 24
++20 20 20 6 6 6 0 0 0 6 6 6 4 4 4 0 0 0 0 0 0 8 8 8
++19 19 19 14 14 14 3 3 3 0 0 0 0 0 0 11 11 11 11 11 11 0 0 0
++3 3 3 16 16 16 16 16 16 0 0 0 0 0 0 10 10 10 16 16 16 11 11 11
++0 0 0 4 4 4 10 10 10 8 8 8 3 3 3 0 0 0 8 8 8 16 16 16
++13 13 13 0 0 0 0 0 0 8 8 8 4 4 4 0 0 0 0 0 0 10 10 10
++20 20 20 6 6 6 0 0 0 0 0 0 6 6 6 0 0 0 0 0 0 3 3 3
++20 20 20 14 14 14 4 4 4 0 0 0 13 13 13 25 25 25 28 28 28 23 23 23
++23 23 23 24 24 24 24 24 24 23 23 23 24 24 24 25 25 25 17 17 17 6 6 6
++0 0 0 13 13 13 17 17 17 10 10 10 0 0 0 0 0 0 10 10 10 17 17 17
++14 14 14 6 6 6 0 0 0 6 6 6 20 20 20 27 27 27 17 17 17 0 0 0
++8 8 8 14 14 14 17 17 17 13 13 13 3 3 3 3 3 3 14 14 14 24 24 24
++13 13 13 6 6 6 8 8 8 17 17 17 19 19 19 11 11 11 4 4 4 4 4 4
++20 20 20 21 21 21 19 19 19 10 10 10 10 10 10 14 14 14 14 14 14 10 10 10
++10 10 10 11 11 11 14 14 14 14 14 14 16 16 16 20 20 20 25 25 25 31 31 31
++31 31 31 31 31 31 32 32 32 32 32 32 33 33 33 33 33 33 34 34 34 34 34 34
++37 37 37 34 34 34 29 29 29 24 24 24 21 21 21 20 20 20 21 21 21 23 23 23
++25 25 25 19 19 19 14 14 14 19 19 19 21 21 21 20 20 20 23 23 23 28 28 28
++43 43 43 27 27 27 17 17 17 24 24 24 28 28 28 24 24 24 24 24 24 29 29 29
++45 45 45 32 32 32 23 23 23 27 27 27 28 28 28 23 23 23 24 24 24 31 31 31
++51 51 51 40 40 40 32 32 32 33 33 33 39 39 39 43 43 43 44 44 44 44 44 44
++45 45 45 46 46 46 45 45 45 27 27 27 25 25 25 32 32 32 25 25 25 37 37 37
++46 46 46 29 29 29 34 34 34 33 33 33 27 27 27 38 38 38 44 44 44 42 42 42
++49 49 49 50 50 50 38 38 38 27 27 27 31 31 31 32 32 32 31 31 31 36 36 36
++33 33 33 46 46 46 46 46 46 33 33 33 25 25 25 31 31 31 33 33 33 29 29 29
++34 34 34 48 48 48 49 49 49 34 34 34 25 25 25 34 34 34 43 43 43 43 43 43
++39 39 39 42 42 42 39 39 39 33 33 33 34 34 34 39 39 39 38 38 38 31 31 31
++31 31 31 43 43 43 39 39 39 31 31 31 34 34 34 37 37 37 33 33 33 37 37 37
++34 34 34 37 37 37 33 33 33 33 33 33 37 37 37 34 34 34 34 34 34 44 44 44
++42 42 42 38 38 38 34 34 34 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32
++33 33 33 31 31 31 34 34 34 31 31 31 24 24 24 31 31 31 39 39 39 34 34 34
++36 36 36 37 37 37 33 33 33 27 27 27 25 25 25 29 29 29 29 29 29 25 25 25
++28 28 28 28 28 28 29 29 29 31 31 31 31 31 31 31 31 31 29 29 29 29 29 29
++28 28 28 27 27 27 24 24 24 20 20 20 25 25 25 32 32 32 28 28 28 20 20 20
++23 23 23 19 19 19 23 23 23 29 29 29 27 27 27 16 16 16 14 14 14 21 21 21
++19 19 19 28 28 28 28 28 28 19 19 19 19 19 19 25 25 25 21 21 21 8 8 8
++13 13 13 25 25 25 25 25 25 14 14 14 13 13 13 20 20 20 20 20 20 13 13 13
++19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 16 16 16 14 14 14 13 13 13
++10 10 10 19 19 19 23 23 23 14 14 14 4 4 4 3 3 3 8 8 8 13 13 13
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++8 8 8 16 16 16 20 20 20 19 19 19 11 11 11 6 6 6 8 8 8 13 13 13
++14 14 14 6 6 6 8 8 8 17 17 17 20 20 20 14 14 14 4 4 4 3 3 3
++0 0 0 11 11 11 13 13 13 0 0 0 0 0 0 13 13 13 19 19 19 13 13 13
++6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 10 10 10 11 11 11
++24 24 24 20 20 20 13 13 13 6 6 6 3 3 3 4 4 4 6 6 6 8 8 8
++4 4 4 6 6 6 13 13 13 21 21 21 20 20 20 11 11 11 6 6 6 11 11 11
++3 3 3 6 6 6 6 6 6 4 4 4 11 11 11 19 19 19 17 17 17 8 8 8
++0 0 0 14 14 14 16 16 16 11 11 11 13 13 13 13 13 13 13 13 13 16 16 16
++16 16 16 23 23 23 16 16 16 10 10 10 16 16 16 17 17 17 14 14 14 17 17 17
++21 21 21 8 8 8 24 24 24 149 149 149 180 183 185 75 75 75 10 10 10 10 10 10
++11 11 11 17 17 17 11 11 11 6 6 6 14 14 14 16 16 16 10 10 10 13 13 13
++3 3 3 21 21 21 144 145 144 180 183 185 71 71 71 0 0 0 23 23 23 8 8 8
++4 4 4 6 6 6 8 8 8 6 6 6 8 8 8 14 14 14 17 17 17 19 19 19
++19 19 19 23 23 23 25 25 25 21 21 21 17 17 17 16 16 16 19 19 19 20 20 20
++20 20 20 19 19 19 19 19 19 19 19 19 16 16 16 11 11 11 8 8 8 6 6 6
++
++14 14 14 14 14 14 8 8 8 0 0 0 0 0 0 11 11 11 14 14 14 13 13 13
++0 0 0 0 0 0 6 6 6 21 21 21 17 17 17 0 0 0 0 0 0 3 3 3
++17 17 17 19 19 19 11 11 11 0 0 0 0 0 0 17 17 17 20 20 20 11 11 11
++0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 3 3 3 11 11 11 17 17 17
++10 10 10 3 3 3 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 10 10 10
++19 19 19 8 8 8 0 0 0 0 0 0 0 0 0 4 4 4 3 3 3 0 0 0
++20 20 20 14 14 14 4 4 4 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
++6 6 6 6 6 6 6 6 6 10 10 10 13 13 13 11 11 11 4 4 4 0 0 0
++0 0 0 8 8 8 13 13 13 10 10 10 10 10 10 14 14 14 11 11 11 0 0 0
++0 0 0 3 3 3 8 8 8 10 10 10 10 10 10 10 10 10 11 11 11 13 13 13
++0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 0 0 0 13 13 13 21 21 21
++0 0 0 4 4 4 8 8 8 4 4 4 0 0 0 0 0 0 8 8 8 16 16 16
++11 11 11 4 4 4 0 0 0 3 3 3 14 14 14 23 23 23 24 24 24 21 21 21
++27 27 27 23 23 23 20 20 20 23 23 23 24 24 24 20 20 20 8 8 8 0 0 0
++8 8 8 19 19 19 19 19 19 4 4 4 0 0 0 13 13 13 17 17 17 13 13 13
++3 3 3 0 0 0 4 4 4 21 21 21 23 23 23 8 8 8 0 0 0 3 3 3
++20 20 20 17 17 17 10 10 10 3 3 3 8 8 8 19 19 19 20 20 20 13 13 13
++6 6 6 8 8 8 13 13 13 19 19 19 14 14 14 6 6 6 8 8 8 19 19 19
++23 23 23 19 19 19 13 13 13 10 10 10 10 10 10 11 11 11 11 11 11 10 10 10
++8 8 8 10 10 10 14 14 14 21 21 21 29 29 29 33 33 33 33 33 33 32 32 32
++31 31 31 29 29 29 29 29 29 28 28 28 27 27 27 25 25 25 24 24 24 24 24 24
++29 29 29 32 32 32 34 34 34 34 34 34 32 32 32 25 25 25 19 19 19 14 14 14
++14 14 14 17 17 17 20 20 20 20 20 20 19 19 19 17 17 17 19 19 19 21 21 21
++28 28 28 32 32 32 29 29 29 23 23 23 20 20 20 24 24 24 25 25 25 21 21 21
++32 32 32 36 36 36 33 33 33 24 24 24 21 21 21 24 24 24 24 24 24 21 21 21
++25 25 25 39 39 39 42 42 42 29 29 29 28 28 28 39 39 39 45 45 45 40 40 40
++39 39 39 46 46 46 45 45 45 33 33 33 25 25 25 29 29 29 32 32 32 28 28 28
++31 31 31 25 25 25 27 27 27 33 33 33 31 31 31 25 25 25 31 31 31 44 44 44
++27 27 27 44 44 44 49 49 49 36 36 36 25 25 25 29 29 29 33 33 33 31 31 31
++31 31 31 42 42 42 48 48 48 42 42 42 32 32 32 28 28 28 28 28 28 28 28 28
++44 44 44 46 46 46 44 44 44 36 36 36 31 31 31 33 33 33 36 36 36 34 34 34
++36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
++34 34 34 34 34 34 36 36 36 37 37 37 37 37 37 36 36 36 32 32 32 28 28 28
++32 32 32 34 34 34 37 37 37 36 36 36 33 33 33 32 32 32 33 33 33 37 37 37
++34 34 34 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
++28 28 28 31 31 31 32 32 32 31 31 31 29 29 29 28 28 28 27 27 27 28 28 28
++28 28 28 29 29 29 29 29 29 31 31 31 29 29 29 29 29 29 29 29 29 31 31 31
++31 31 31 31 31 31 31 31 31 32 32 32 31 31 31 31 31 31 29 29 29 29 29 29
++28 28 28 28 28 28 29 29 29 28 28 28 27 27 27 24 24 24 20 20 20 19 19 19
++21 21 21 23 23 23 24 24 24 20 20 20 16 16 16 13 13 13 14 14 14 19 19 19
++17 17 17 19 19 19 19 19 19 17 17 17 14 14 14 13 13 13 16 16 16 17 17 17
++21 21 21 20 20 20 17 17 17 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13
++19 19 19 21 21 21 23 23 23 24 24 24 24 24 24 23 23 23 21 21 21 20 20 20
++20 20 20 20 20 20 19 19 19 17 17 17 14 14 14 11 11 11 10 10 10 8 8 8
++8 8 8 10 10 10 11 11 11 10 10 10 8 8 8 8 8 8 10 10 10 13 13 13
++19 19 19 19 19 19 11 11 11 0 0 0 3 3 3 14 14 14 14 14 14 4 4 4
++6 6 6 6 6 6 14 14 14 21 21 21 14 14 14 0 0 0 0 0 0 11 11 11
++11 11 11 4 4 4 0 0 0 4 4 4 13 13 13 16 16 16 14 14 14 10 10 10
++0 0 0 0 0 0 8 8 8 13 13 13 14 14 14 14 14 14 16 16 16 16 16 16
++6 6 6 14 14 14 0 0 0 6 6 6 10 10 10 4 4 4 13 13 13 0 0 0
++10 10 10 10 10 10 14 14 14 3 3 3 8 8 8 0 0 0 4 4 4 0 0 0
++0 0 0 20 20 20 0 0 0 11 11 11 14 14 14 16 16 16 10 10 10 0 0 0
++0 0 0 8 8 8 4 4 4 0 0 0 20 20 20 20 20 20 27 27 27 25 25 25
++21 21 21 0 0 0 27 27 27 19 19 19 29 29 29 42 42 42 112 112 113 149 151 153
++36 36 36 13 13 13 17 17 17 180 183 185 180 183 185 101 101 101 0 0 0 19 19 19
++0 0 0 4 4 4 0 0 0 17 17 17 23 23 23 0 0 0 24 24 24 21 21 21
++3 3 3 19 19 19 166 167 167 200 220 210 88 88 88 8 8 8 16 16 16 0 0 0
++6 6 6 10 10 10 3 3 3 0 0 0 17 17 17 0 0 0 13 13 13 27 27 27
++28 28 28 17 17 17 21 21 21 14 14 14 11 11 11 29 29 29 27 27 27 0 0 0
++21 21 21 17 17 17 14 14 14 17 17 17 21 21 21 20 20 20 13 13 13 3 3 3
++
++0 0 0 8 8 8 14 14 14 11 11 11 3 3 3 0 0 0 4 4 4 14 14 14
++10 10 10 3 3 3 0 0 0 6 6 6 14 14 14 14 14 14 6 6 6 0 0 0
++6 6 6 13 13 13 14 14 14 10 10 10 0 0 0 0 0 0 10 10 10 17 17 17
++8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 3 3 3 8 8 8 11 11 11
++16 16 16 10 10 10 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0
++11 11 11 8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++10 10 10 11 11 11 11 11 11 8 8 8 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 6 6 6 13 13 13 14 14 14 11 11 11 4 4 4 0 0 0 0 0 0
++3 3 3 0 0 0 6 6 6 17 17 17 17 17 17 8 8 8 3 3 3 6 6 6
++3 3 3 0 0 0 0 0 0 6 6 6 16 16 16 19 19 19 13 13 13 4 4 4
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 8 8 8 10 10 10 11 11 11
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 10 10 10 11 11 11
++10 10 10 3 3 3 0 0 0 4 4 4 16 16 16 23 23 23 23 23 23 21 21 21
++21 21 21 21 21 21 21 21 21 21 21 21 20 20 20 16 16 16 11 11 11 6 6 6
++19 19 19 10 10 10 0 0 0 0 0 0 8 8 8 14 14 14 13 13 13 8 8 8
++0 0 0 10 10 10 17 17 17 17 17 17 10 10 10 4 4 4 8 8 8 14 14 14
++19 19 19 10 10 10 0 0 0 8 8 8 17 17 17 19 19 19 13 13 13 4 4 4
++0 0 0 13 13 13 19 19 19 14 14 14 4 4 4 3 3 3 11 11 11 20 20 20
++16 16 16 14 14 14 11 11 11 10 10 10 10 10 10 10 10 10 10 10 10 8 8 8
++11 11 11 14 14 14 19 19 19 24 24 24 28 28 28 28 28 28 25 25 25 24 24 24
++17 17 17 16 16 16 16 16 16 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13
++20 20 20 21 21 21 24 24 24 25 25 25 27 27 27 27 27 27 25 25 25 24 24 24
++16 16 16 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 17 17 17 19 19 19
++20 20 20 24 24 24 29 29 29 28 28 28 21 21 21 16 16 16 19 19 19 24 24 24
++23 23 23 28 28 28 33 33 33 33 33 33 25 25 25 19 19 19 19 19 19 24 24 24
++23 23 23 31 31 31 34 34 34 32 32 32 32 32 32 37 37 37 40 40 40 39 39 39
++39 39 39 42 42 42 40 40 40 36 36 36 31 31 31 28 28 28 25 25 25 23 23 23
++28 28 28 25 25 25 28 28 28 34 34 34 33 33 33 28 28 28 29 29 29 34 34 34
++36 36 36 33 33 33 37 37 37 40 40 40 37 37 37 27 27 27 25 25 25 33 33 33
++23 23 23 34 34 34 40 40 40 38 38 38 32 32 32 31 31 31 31 31 31 31 31 31
++32 32 32 36 36 36 36 36 36 33 33 33 33 33 33 36 36 36 36 36 36 33 33 33
++33 33 33 33 33 33 34 34 34 36 36 36 37 37 37 36 36 36 32 32 32 29 29 29
++33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32 27 27 27 24 24 24
++21 21 21 23 23 23 27 27 27 31 31 31 33 33 33 34 34 34 34 34 34 33 33 33
++32 32 32 34 34 34 36 36 36 37 37 37 37 37 37 36 36 36 34 34 34 33 33 33
++31 31 31 32 32 32 32 32 32 29 29 29 27 27 27 24 24 24 24 24 24 25 25 25
++34 34 34 34 34 34 34 34 34 34 34 34 36 36 36 34 34 34 34 34 34 33 33 33
++34 34 34 32 32 32 29 29 29 28 28 28 29 29 29 32 32 32 33 33 33 34 34 34
++31 31 31 28 28 28 27 27 27 27 27 27 28 28 28 28 28 28 28 28 28 27 27 27
++29 29 29 27 27 27 21 21 21 17 17 17 16 16 16 16 16 16 14 14 14 14 14 14
++16 16 16 16 16 16 14 14 14 14 14 14 14 14 14 16 16 16 20 20 20 23 23 23
++20 20 20 19 19 19 16 16 16 14 14 14 13 13 13 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 14 14 14 17 17 17 21 21 21 24 24 24 25 25 25 25 25 25
++20 20 20 21 21 21 23 23 23 23 23 23 23 23 23 20 20 20 17 17 17 14 14 14
++17 17 17 19 19 19 19 19 19 17 17 17 16 16 16 16 16 16 16 16 16 17 17 17
++17 17 17 21 21 21 19 19 19 13 13 13 16 16 16 23 23 23 19 19 19 8 8 8
++11 11 11 10 10 10 16 16 16 21 21 21 14 14 14 0 0 0 0 0 0 10 10 10
++17 17 17 17 17 17 17 17 17 17 17 17 19 19 19 20 20 20 20 20 20 21 21 21
++20 20 20 17 17 17 17 17 17 19 19 19 21 21 21 21 21 21 19 19 19 14 14 14
++10 10 10 3 3 3 4 4 4 10 10 10 13 13 13 0 0 0 0 0 0 20 20 20
++10 10 10 3 3 3 24 24 24 0 0 0 0 0 0 4 4 4 14 14 14 13 13 13
++6 6 6 6 6 6 0 0 0 19 19 19 3 3 3 10 10 10 17 17 17 0 0 0
++19 19 19 8 8 8 27 27 27 28 28 28 16 16 16 13 13 13 28 28 28 14 14 14
++24 24 24 21 21 21 31 31 31 21 21 21 24 24 24 73 73 73 200 220 210 187 210 182
++10 10 10 40 40 40 0 0 0 36 36 36 57 57 57 6 6 6 0 0 0 0 0 0
++14 14 14 0 0 0 10 10 10 21 21 21 11 11 11 11 11 11 0 0 0 24 24 24
++28 28 28 0 0 0 49 49 49 49 49 49 19 19 19 0 0 0 6 6 6 14 14 14
++0 0 0 14 14 14 10 10 10 16 16 16 0 0 0 10 10 10 8 8 8 0 0 0
++23 23 23 20 20 20 19 19 19 6 6 6 29 29 29 4 4 4 32 32 32 16 16 16
++19 19 19 16 16 16 14 14 14 17 17 17 21 21 21 23 23 23 19 19 19 13 13 13
++
++0 0 0 0 0 0 10 10 10 16 16 16 8 8 8 0 0 0 0 0 0 10 10 10
++14 14 14 13 13 13 3 3 3 0 0 0 4 4 4 19 19 19 16 16 16 0 0 0
++0 0 0 3 3 3 11 11 11 17 17 17 8 8 8 0 0 0 0 0 0 16 16 16
++16 16 16 10 10 10 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4
++14 14 14 14 14 14 8 8 8 0 0 0 0 0 0 6 6 6 4 4 4 0 0 0
++0 0 0 8 8 8 11 11 11 8 8 8 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 6 6 6 11 11 11 11 11 11 6 6 6 0 0 0 0 0 0 0 0 0
++0 0 0 4 4 4 13 13 13 14 14 14 10 10 10 4 4 4 0 0 0 0 0 0
++3 3 3 0 0 0 6 6 6 16 16 16 17 17 17 8 8 8 0 0 0 4 4 4
++3 3 3 0 0 0 0 0 0 4 4 4 17 17 17 20 20 20 13 13 13 3 3 3
++3 3 3 0 0 0 0 0 0 4 4 4 11 11 11 13 13 13 6 6 6 0 0 0
++6 6 6 0 0 0 0 0 0 0 0 0 6 6 6 11 11 11 10 10 10 6 6 6
++4 4 4 0 0 0 0 0 0 8 8 8 17 17 17 23 23 23 23 23 23 20 20 20
++16 16 16 19 19 19 21 21 21 19 19 19 14 14 14 11 11 11 13 13 13 14 14 14
++17 17 17 0 0 0 0 0 0 6 6 6 16 16 16 10 10 10 3 3 3 3 3 3
++3 3 3 17 17 17 20 20 20 8 8 8 0 0 0 8 8 8 17 17 17 19 19 19
++11 11 11 3 3 3 3 3 3 14 14 14 19 19 19 13 13 13 4 4 4 3 3 3
++4 4 4 14 14 14 16 16 16 6 6 6 3 3 3 10 10 10 14 14 14 14 14 14
++8 8 8 10 10 10 10 10 10 10 10 10 8 8 8 8 8 8 8 8 8 10 10 10
++16 16 16 20 20 20 24 24 24 25 25 25 24 24 24 20 20 20 16 16 16 14 14 14
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 13 13 13 14 14 14 19 19 19 24 24 24 28 28 28 31 31 31
++19 19 19 17 17 17 14 14 14 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14
++14 14 14 14 14 14 21 21 21 28 28 28 25 25 25 14 14 14 13 13 13 20 20 20
++16 16 16 19 19 19 27 27 27 34 34 34 31 31 31 20 20 20 16 16 16 20 20 20
++19 19 19 21 21 21 25 25 25 31 31 31 33 33 33 34 34 34 36 36 36 36 36 36
++38 38 38 34 34 34 34 34 34 37 37 37 34 34 34 28 28 28 21 21 21 19 19 19
++24 24 24 25 25 25 29 29 29 33 33 33 34 34 34 32 32 32 28 28 28 24 24 24
++37 37 37 25 25 25 27 27 27 39 39 39 40 40 40 28 28 28 23 23 23 29 29 29
++20 20 20 27 27 27 33 33 33 33 33 33 31 31 31 31 31 31 31 31 31 29 29 29
++27 27 27 28 28 28 28 28 28 29 29 29 32 32 32 33 33 33 29 29 29 23 23 23
++24 24 24 27 27 27 29 29 29 34 34 34 38 38 38 37 37 37 32 32 32 28 28 28
++32 32 32 31 31 31 29 29 29 29 29 29 29 29 29 28 28 28 24 24 24 20 20 20
++21 21 21 21 21 21 23 23 23 28 28 28 33 33 33 34 34 34 29 29 29 24 24 24
++27 27 27 31 31 31 36 36 36 38 38 38 37 37 37 34 34 34 33 33 33 33 33 33
++33 33 33 33 33 33 31 31 31 27 27 27 23 23 23 20 20 20 20 20 20 21 21 21
++36 36 36 33 33 33 31 31 31 31 31 31 33 33 33 33 33 33 32 32 32 29 29 29
++25 25 25 24 24 24 21 21 21 21 21 21 24 24 24 27 27 27 27 27 27 27 27 27
++21 21 21 19 19 19 14 14 14 14 14 14 19 19 19 23 23 23 24 24 24 25 25 25
++28 28 28 21 21 21 14 14 14 11 11 11 14 14 14 16 16 16 14 14 14 11 11 11
++14 14 14 13 13 13 10 10 10 11 11 11 14 14 14 19 19 19 23 23 23 25 25 25
++19 19 19 19 19 19 16 16 16 14 14 14 11 11 11 11 11 11 10 10 10 10 10 10
++11 11 11 10 10 10 8 8 8 11 11 11 17 17 17 20 20 20 21 21 21 20 20 20
++16 16 16 19 19 19 21 21 21 24 24 24 24 24 24 23 23 23 20 20 20 17 17 17
++21 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 20 19 19 19 17 17 17
++17 17 17 20 20 20 20 20 20 17 17 17 20 20 20 24 24 24 21 21 21 11 11 11
++14 14 14 11 11 11 14 14 14 19 19 19 14 14 14 3 3 3 0 0 0 6 6 6
++13 13 13 17 17 17 20 20 20 17 17 17 13 13 13 11 11 11 16 16 16 21 21 21
++21 21 21 16 16 16 11 11 11 13 13 13 17 17 17 17 17 17 11 11 11 4 4 4
++10 10 10 0 0 0 58 58 58 137 138 139 180 183 185 166 167 167 144 145 144 180 183 185
++109 110 110 23 23 23 137 138 139 187 210 182 112 112 113 17 17 17 96 97 98 200 220 210
++149 149 149 0 0 0 78 78 78 187 210 182 152 153 154 129 129 130 180 183 185 180 183 185
++69 69 69 112 112 113 180 183 185 180 183 185 112 112 113 27 27 27 13 13 13 29 29 29
++142 143 144 180 183 185 180 183 185 133 133 133 16 16 16 180 183 185 200 220 210 200 220 210
++200 220 210 112 112 113 14 14 14 187 210 182 187 210 182 70 70 70 56 56 56 180 183 185
++180 183 185 81 81 81 10 10 10 180 183 185 200 220 210 83 83 83 14 14 14 21 21 21
++16 16 16 19 19 19 180 183 185 180 183 185 66 66 66 20 20 20 144 145 144 180 183 185
++105 105 105 163 163 163 180 183 185 144 145 144 34 34 34 0 0 0 0 0 0 29 29 29
++117 117 117 180 183 185 180 183 185 169 175 167 8 8 8 0 0 0 17 17 17 21 21 21
++13 13 13 11 11 11 11 11 11 13 13 13 16 16 16 17 17 17 17 17 17 16 16 16
++
++6 6 6 0 0 0 0 0 0 6 6 6 11 11 11 8 8 8 0 0 0 0 0 0
++6 6 6 14 14 14 13 13 13 0 0 0 0 0 0 10 10 10 14 14 14 10 10 10
++8 8 8 0 0 0 0 0 0 13 13 13 14 14 14 3 3 3 0 0 0 6 6 6
++13 13 13 11 11 11 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 13 13 13 16 16 16 8 8 8 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 4 4 4 11 11 11 10 10 10 3 3 3 0 0 0 0 0 0 3 3 3
++3 3 3 0 0 0 3 3 3 8 8 8 11 11 11 11 11 11 4 4 4 0 0 0
++4 4 4 3 3 3 3 3 3 6 6 6 10 10 10 10 10 10 4 4 4 0 0 0
++0 0 0 8 8 8 11 11 11 6 6 6 6 6 6 11 11 11 8 8 8 0 0 0
++0 0 0 3 3 3 8 8 8 10 10 10 8 8 8 6 6 6 8 8 8 10 10 10
++4 4 4 3 3 3 3 3 3 6 6 6 11 11 11 11 11 11 3 3 3 0 0 0
++3 3 3 0 0 0 0 0 0 3 3 3 10 10 10 13 13 13 8 8 8 3 3 3
++0 0 0 0 0 0 4 4 4 11 11 11 17 17 17 21 21 21 20 20 20 19 19 19
++14 14 14 16 16 16 17 17 17 17 17 17 14 14 14 11 11 11 11 11 11 11 11 11
++3 3 3 0 0 0 4 4 4 17 17 17 16 16 16 0 0 0 0 0 0 4 4 4
++13 13 13 16 16 16 10 10 10 0 0 0 4 4 4 17 17 17 19 19 19 10 10 10
++0 0 0 4 4 4 13 13 13 17 17 17 11 11 11 0 0 0 3 3 3 11 11 11
++13 13 13 10 10 10 4 4 4 3 3 3 10 10 10 16 16 16 13 13 13 4 4 4
++4 4 4 6 6 6 10 10 10 8 8 8 8 8 8 8 8 8 11 11 11 14 14 14
++19 19 19 21 21 21 24 24 24 21 21 21 17 17 17 13 13 13 10 10 10 8 8 8
++13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 16 16 16
++13 13 13 11 11 11 10 10 10 10 10 10 13 13 13 19 19 19 23 23 23 27 27 27
++23 23 23 19 19 19 14 14 14 11 11 11 13 13 13 14 14 14 14 14 14 13 13 13
++16 16 16 10 10 10 11 11 11 21 21 21 27 27 27 23 23 23 16 16 16 11 11 11
++16 16 16 13 13 13 16 16 16 25 25 25 31 31 31 27 27 27 19 19 19 14 14 14
++14 14 14 16 16 16 19 19 19 24 24 24 29 29 29 33 33 33 33 33 33 32 32 32
++33 33 33 32 32 32 29 29 29 32 32 32 33 33 33 32 32 32 24 24 24 17 17 17
++23 23 23 24 24 24 25 25 25 25 25 25 31 31 31 34 34 34 28 28 28 19 19 19
++28 28 28 29 29 29 29 29 29 28 28 28 31 31 31 32 32 32 28 28 28 23 23 23
++24 24 24 25 25 25 28 28 28 28 28 28 28 28 28 29 29 29 29 29 29 28 28 28
++27 27 27 24 24 24 21 21 21 23 23 23 28 28 28 31 31 31 27 27 27 21 21 21
++17 17 17 19 19 19 24 24 24 31 31 31 37 37 37 38 38 38 36 36 36 32 32 32
++31 31 31 29 29 29 28 28 28 28 28 28 28 28 28 28 28 28 25 25 25 23 23 23
++24 24 24 24 24 24 25 25 25 28 28 28 31 31 31 29 29 29 25 25 25 21 21 21
++20 20 20 25 25 25 32 32 32 33 33 33 31 31 31 28 28 28 28 28 28 31 31 31
++33 33 33 32 32 32 28 28 28 23 23 23 19 19 19 17 17 17 19 19 19 21 21 21
++27 27 27 23 23 23 17 17 17 17 17 17 20 20 20 24 24 24 23 23 23 21 21 21
++19 19 19 17 17 17 20 20 20 23 23 23 25 25 25 24 24 24 20 20 20 16 16 16
++14 14 14 10 10 10 6 6 6 6 6 6 11 11 11 17 17 17 19 19 19 19 19 19
++17 17 17 13 13 13 10 10 10 8 8 8 11 11 11 14 14 14 14 14 14 13 13 13
++13 13 13 10 10 10 8 8 8 11 11 11 16 16 16 20 20 20 23 23 23 23 23 23
++19 19 19 19 19 19 17 17 17 16 16 16 13 13 13 11 11 11 11 11 11 10 10 10
++11 11 11 8 8 8 6 6 6 8 8 8 14 14 14 16 16 16 14 14 14 11 11 11
++10 10 10 11 11 11 14 14 14 16 16 16 16 16 16 16 16 16 14 14 14 13 13 13
++16 16 16 14 14 14 13 13 13 14 14 14 17 17 17 17 17 17 16 16 16 13 13 13
++16 16 16 16 16 16 11 11 11 4 4 4 8 8 8 16 16 16 19 19 19 14 14 14
++13 13 13 8 8 8 10 10 10 13 13 13 13 13 13 4 4 4 3 3 3 6 6 6
++6 6 6 11 11 11 13 13 13 10 10 10 4 4 4 3 3 3 6 6 6 11 11 11
++6 6 6 4 4 4 4 4 4 6 6 6 10 10 10 10 10 10 4 4 4 0 0 0
++0 0 0 23 23 23 157 157 157 200 220 210 149 149 149 134 134 134 180 183 185 200 220 210
++105 105 105 0 0 0 152 153 154 200 220 210 88 88 88 0 0 0 105 105 105 187 210 182
++157 157 157 6 6 6 65 65 65 187 210 182 200 220 210 157 157 157 180 183 185 187 210 182
++180 183 185 180 183 185 166 167 167 180 183 185 180 183 185 65 65 65 4 4 4 166 165 167
++187 210 182 145 146 147 121 121 119 127 127 127 16 16 16 144 145 144 180 183 185 187 210 182
++115 116 115 62 62 62 14 14 14 180 183 185 200 220 210 60 60 60 29 29 29 105 105 105
++200 220 210 166 167 167 92 92 92 187 210 182 144 145 144 21 21 21 19 19 19 4 4 4
++21 21 21 3 3 3 187 210 182 200 220 210 66 66 66 0 0 0 155 156 156 200 220 210
++187 210 182 163 163 163 180 183 185 200 220 210 129 129 130 10 10 10 23 23 23 157 157 157
++187 210 182 169 175 167 121 121 119 101 101 101 13 13 13 8 8 8 0 0 0 17 17 17
++8 8 8 8 8 8 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 10 10 10
++
++13 13 13 6 6 6 0 0 0 0 0 0 6 6 6 16 16 16 10 10 10 0 0 0
++0 0 0 8 8 8 13 13 13 8 8 8 0 0 0 0 0 0 4 4 4 11 11 11
++11 11 11 4 4 4 0 0 0 4 4 4 13 13 13 13 13 13 6 6 6 0 0 0
++4 4 4 8 8 8 11 11 11 8 8 8 3 3 3 0 0 0 0 0 0 3 3 3
++0 0 0 4 4 4 11 11 11 14 14 14 8 8 8 0 0 0 0 0 0 8 8 8
++0 0 0 0 0 0 4 4 4 8 8 8 8 8 8 4 4 4 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 4 4 4 10 10 10 11 11 11 6 6 6 3 3 3
++8 8 8 3 3 3 0 0 0 0 0 0 4 4 4 8 8 8 6 6 6 3 3 3
++3 3 3 10 10 10 8 8 8 0 0 0 0 0 0 8 8 8 10 10 10 3 3 3
++0 0 0 10 10 10 14 14 14 8 8 8 0 0 0 0 0 0 3 3 3 13 13 13
++4 4 4 6 6 6 8 8 8 8 8 8 6 6 6 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 6 6 6 10 10 10 10 10 10 8 8 8 4 4 4 0 0 0
++0 0 0 0 0 0 6 6 6 13 13 13 17 17 17 19 19 19 19 19 19 17 17 17
++16 16 16 14 14 14 14 14 14 14 14 14 16 16 16 13 13 13 8 8 8 3 3 3
++0 0 0 4 4 4 14 14 14 14 14 14 8 8 8 0 0 0 3 3 3 10 10 10
++13 13 13 6 6 6 0 0 0 0 0 0 13 13 13 17 17 17 11 11 11 0 0 0
++3 3 3 13 13 13 17 17 17 10 10 10 3 3 3 4 4 4 10 10 10 13 13 13
++14 14 14 4 4 4 0 0 0 8 8 8 14 14 14 13 13 13 6 6 6 3 3 3
++6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 10 10 10 16 16 16 20 20 20
++20 20 20 20 20 20 19 19 19 16 16 16 10 10 10 8 8 8 8 8 8 10 10 10
++8 8 8 8 8 8 8 8 8 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11
++13 13 13 13 13 13 11 11 11 11 11 11 11 11 11 14 14 14 17 17 17 19 19 19
++24 24 24 20 20 20 16 16 16 13 13 13 14 14 14 14 14 14 14 14 14 13 13 13
++13 13 13 13 13 13 11 11 11 13 13 13 21 21 21 25 25 25 20 20 20 11 11 11
++16 16 16 14 14 14 11 11 11 13 13 13 20 20 20 27 27 27 23 23 23 14 14 14
++11 11 11 16 16 16 16 16 16 14 14 14 20 20 20 31 31 31 32 32 32 27 27 27
++28 28 28 31 31 31 28 28 28 23 23 23 27 27 27 34 34 34 31 31 31 20 20 20
++20 20 20 21 21 21 19 19 19 16 16 16 23 23 23 31 31 31 29 29 29 23 23 23
++20 20 20 29 29 29 31 31 31 21 21 21 20 20 20 28 28 28 29 29 29 23 23 23
++28 28 28 25 25 25 23 23 23 23 23 23 25 25 25 27 27 27 28 28 28 29 29 29
++24 24 24 19 19 19 14 14 14 16 16 16 23 23 23 28 28 28 31 31 31 31 31 31
++19 19 19 20 20 20 23 23 23 27 27 27 32 32 32 34 34 34 34 34 34 33 33 33
++29 29 29 27 27 27 25 25 25 27 27 27 28 28 28 29 29 29 29 29 29 28 28 28
++17 17 17 20 20 20 23 23 23 23 23 23 21 21 21 23 23 23 25 25 25 28 28 28
++20 20 20 24 24 24 28 28 28 28 28 28 25 25 25 24 24 24 27 27 27 29 29 29
++29 29 29 28 28 28 24 24 24 20 20 20 16 16 16 16 16 16 19 19 19 21 21 21
++23 23 23 16 16 16 10 10 10 8 8 8 13 13 13 19 19 19 20 20 20 20 20 20
++23 23 23 24 24 24 24 24 24 27 27 27 27 27 27 25 25 25 20 20 20 16 16 16
++20 20 20 17 17 17 16 16 16 17 17 17 19 19 19 21 21 21 21 21 21 21 21 21
++10 10 10 13 13 13 14 14 14 14 14 14 13 13 13 11 11 11 13 13 13 16 16 16
++11 11 11 11 11 11 11 11 11 13 13 13 17 17 17 19 19 19 19 19 19 16 16 16
++19 19 19 19 19 19 17 17 17 17 17 17 16 16 16 14 14 14 13 13 13 13 13 13
++4 4 4 3 3 3 3 3 3 8 8 8 14 14 14 17 17 17 14 14 14 10 10 10
++8 8 8 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 10 10 10 13 13 13 14 14 14 13 13 13 10 10 10
++11 11 11 10 10 10 3 3 3 0 0 0 0 0 0 8 8 8 13 13 13 13 13 13
++6 6 6 3 3 3 3 3 3 6 6 6 8 8 8 6 6 6 4 4 4 6 6 6
++13 13 13 11 11 11 10 10 10 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++0 0 0 4 4 4 11 11 11 13 13 13 10 10 10 6 6 6 6 6 6 8 8 8
++11 11 11 78 78 78 187 210 182 169 175 167 10 10 10 13 13 13 166 167 167 200 220 210
++101 101 101 6 6 6 152 153 154 187 210 182 105 105 105 14 14 14 103 103 102 187 210 182
++149 149 149 25 25 25 70 70 70 200 220 210 187 210 182 32 32 32 33 33 33 187 210 182
++187 210 182 78 78 78 24 24 24 161 161 162 200 220 210 90 90 90 29 29 29 180 183 185
++187 210 182 133 133 133 48 48 48 11 11 11 19 19 19 70 70 70 180 183 185 200 220 210
++6 6 6 17 17 17 14 14 14 180 183 185 187 210 182 74 74 74 14 14 14 14 14 14
++149 151 153 187 210 182 200 220 210 180 183 185 33 33 33 0 0 0 27 27 27 16 16 16
++0 0 0 14 14 14 200 220 210 180 183 185 71 71 71 6 6 6 149 149 149 180 183 185
++125 122 126 3 3 3 69 69 69 200 220 210 187 210 182 13 13 13 67 67 67 200 220 210
++180 183 185 19 19 19 0 0 0 11 11 11 0 0 0 14 14 14 17 17 17 0 0 0
++6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4 8 8 8 11 11 11
++
++10 10 10 11 11 11 6 6 6 0 0 0 0 0 0 10 10 10 13 13 13 6 6 6
++3 3 3 0 0 0 3 3 3 10 10 10 10 10 10 3 3 3 0 0 0 3 3 3
++6 6 6 10 10 10 10 10 10 4 4 4 4 4 4 10 10 10 10 10 10 4 4 4
++0 0 0 4 4 4 11 11 11 11 11 11 4 4 4 0 0 0 0 0 0 3 3 3
++3 3 3 0 0 0 0 0 0 11 11 11 16 16 16 8 8 8 3 3 3 4 4 4
++3 3 3 0 0 0 0 0 0 3 3 3 8 8 8 8 8 8 4 4 4 0 0 0
++0 0 0 0 0 0 4 4 4 4 4 4 0 0 0 3 3 3 8 8 8 11 11 11
++3 3 3 4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 4 4 4 11 11 11
++13 13 13 4 4 4 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 11 11 11
++11 11 11 11 11 11 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0 6 6 6
++6 6 6 10 10 10 10 10 10 6 6 6 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 3 3 3 10 10 10 11 11 11 8 8 8 3 3 3 0 0 0 3 3 3
++0 0 0 3 3 3 10 10 10 14 14 14 16 16 16 16 16 16 16 16 16 16 16 16
++16 16 16 13 13 13 11 11 11 13 13 13 14 14 14 11 11 11 4 4 4 0 0 0
++10 10 10 11 11 11 8 8 8 0 0 0 0 0 0 8 8 8 11 11 11 10 10 10
++4 4 4 0 0 0 3 3 3 10 10 10 11 11 11 6 6 6 3 3 3 4 4 4
++11 11 11 14 14 14 10 10 10 0 0 0 3 3 3 13 13 13 14 14 14 8 8 8
++6 6 6 3 3 3 6 6 6 13 13 13 11 11 11 0 0 0 0 0 0 8 8 8
++10 10 10 8 8 8 8 8 8 6 6 6 8 8 8 13 13 13 19 19 19 23 23 23
++17 17 17 16 16 16 13 13 13 8 8 8 6 6 6 6 6 6 8 8 8 11 11 11
++8 8 8 8 8 8 8 8 8 8 8 8 10 10 10 10 10 10 11 11 11 11 11 11
++10 10 10 10 10 10 11 11 11 11 11 11 13 13 13 13 13 13 14 14 14 14 14 14
++21 21 21 19 19 19 16 16 16 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13
++8 8 8 16 16 16 17 17 17 11 11 11 11 11 11 19 19 19 21 21 21 17 17 17
++11 11 11 17 17 17 16 16 16 8 8 8 8 8 8 17 17 17 23 23 23 20 20 20
++11 11 11 16 16 16 14 14 14 8 8 8 14 14 14 25 25 25 29 29 29 23 23 23
++25 25 25 29 29 29 27 27 27 17 17 17 19 19 19 31 31 31 32 32 32 24 24 24
++17 17 17 19 19 19 16 16 16 11 11 11 14 14 14 24 24 24 27 27 27 25 25 25
++21 21 21 24 24 24 24 24 24 21 21 21 19 19 19 19 19 19 21 21 21 25 25 25
++27 27 27 21 21 21 19 19 19 20 20 20 23 23 23 24 24 24 27 27 27 29 29 29
++28 28 28 23 23 23 17 17 17 16 16 16 17 17 17 20 20 20 25 25 25 31 31 31
++25 25 25 25 25 25 25 25 25 24 24 24 24 24 24 24 24 24 24 24 24 25 25 25
++27 27 27 24 24 24 23 23 23 23 23 23 25 25 25 28 28 28 29 29 29 29 29 29
++17 17 17 19 19 19 20 20 20 16 16 16 11 11 11 11 11 11 17 17 17 23 23 23
++23 23 23 25 25 25 27 27 27 25 25 25 23 23 23 24 24 24 27 27 27 29 29 29
++24 24 24 24 24 24 21 21 21 17 17 17 14 14 14 14 14 14 17 17 17 20 20 20
++25 25 25 20 20 20 16 16 16 14 14 14 17 17 17 21 21 21 23 23 23 23 23 23
++25 25 25 24 24 24 21 21 21 19 19 19 17 17 17 17 17 17 17 17 17 19 19 19
++21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 20 20 20 20 20 20 20 20 20
++14 14 14 19 19 19 23 23 23 21 21 21 16 16 16 11 11 11 11 11 11 14 14 14
++11 11 11 11 11 11 13 13 13 14 14 14 16 16 16 14 14 14 13 13 13 10 10 10
++16 16 16 16 16 16 16 16 16 17 17 17 16 16 16 16 16 16 14 14 14 14 14 14
++10 10 10 10 10 10 10 10 10 13 13 13 14 14 14 14 14 14 8 8 8 3 3 3
++10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 4 4 4 6 6 6 6 6 6
++4 4 4 4 4 4 6 6 6 10 10 10 13 13 13 13 13 13 11 11 11 10 10 10
++4 4 4 6 6 6 6 6 6 4 4 4 6 6 6 8 8 8 10 10 10 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 6 6 6 8 8 8
++13 13 13 10 10 10 4 4 4 4 4 4 8 8 8 10 10 10 8 8 8 4 4 4
++0 0 0 10 10 10 14 14 14 14 14 14 6 6 6 0 0 0 3 3 3 8 8 8
++0 0 0 105 105 105 187 210 182 152 153 154 11 11 11 0 0 0 147 147 148 200 220 210
++105 104 105 6 6 6 145 146 147 180 183 185 109 110 110 6 6 6 105 105 105 180 183 185
++157 157 157 0 0 0 62 62 62 200 220 210 180 183 185 14 14 14 24 24 24 187 210 182
++200 220 210 72 72 72 10 10 10 147 147 148 187 210 182 109 110 110 4 4 4 93 93 93
++180 183 185 180 183 185 187 210 182 117 117 117 0 0 0 78 78 78 200 220 210 180 183 185
++10 10 10 19 19 19 0 0 0 200 220 210 180 183 185 78 78 78 0 0 0 13 13 13
++82 82 82 187 210 182 180 183 185 112 112 113 4 4 4 33 33 33 0 0 0 10 10 10
++16 16 16 4 4 4 200 220 210 200 220 210 63 63 63 0 0 0 157 157 157 180 183 185
++99 99 99 10 10 10 69 69 69 200 220 210 187 210 182 0 0 0 112 112 113 187 210 182
++149 151 153 4 4 4 19 19 19 19 19 19 19 19 19 0 0 0 11 11 11 10 10 10
++6 6 6 6 6 6 8 8 8 8 8 8 10 10 10 13 13 13 16 16 16 17 17 17
++
++3 3 3 8 8 8 11 11 11 6 6 6 0 0 0 0 0 0 6 6 6 13 13 13
++8 8 8 0 0 0 0 0 0 4 4 4 11 11 11 8 8 8 3 3 3 0 0 0
++0 0 0 10 10 10 13 13 13 6 6 6 0 0 0 0 0 0 8 8 8 10 10 10
++4 4 4 4 4 4 4 4 4 6 6 6 8 8 8 8 8 8 3 3 3 0 0 0
++3 3 3 0 0 0 0 0 0 4 4 4 11 11 11 11 11 11 6 6 6 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6 6 6 6 4 4 4
++0 0 0 0 0 0 4 4 4 3 3 3 0 0 0 0 0 0 8 8 8 13 13 13
++3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 11 11 11
++13 13 13 3 3 3 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 10 10 10
++13 13 13 10 10 10 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++10 10 10 10 10 10 8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 3 3 3
++6 6 6 8 8 8 8 8 8 6 6 6 3 3 3 0 0 0 0 0 0 3 3 3
++0 0 0 6 6 6 11 11 11 14 14 14 14 14 14 13 13 13 13 13 13 14 14 14
++11 11 11 13 13 13 13 13 13 11 11 11 8 8 8 4 4 4 3 3 3 3 3 3
++14 14 14 10 10 10 0 0 0 0 0 0 0 0 0 11 11 11 11 11 11 4 4 4
++0 0 0 3 3 3 10 10 10 13 13 13 6 6 6 0 0 0 3 3 3 11 11 11
++13 13 13 10 10 10 3 3 3 3 3 3 10 10 10 13 13 13 11 11 11 4 4 4
++3 3 3 6 6 6 11 11 11 10 10 10 3 3 3 0 0 0 3 3 3 8 8 8
++8 8 8 6 6 6 6 6 6 8 8 8 11 11 11 14 14 14 17 17 17 19 19 19
++13 13 13 10 10 10 6 6 6 4 4 4 6 6 6 6 6 6 8 8 8 8 8 8
++10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++8 8 8 8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11
++16 16 16 17 17 17 16 16 16 14 14 14 13 13 13 11 11 11 11 11 11 13 13 13
++10 10 10 13 13 13 13 13 13 11 11 11 10 10 10 13 13 13 17 17 17 20 20 20
++14 14 14 16 16 16 14 14 14 10 10 10 8 8 8 11 11 11 17 17 17 20 20 20
++16 16 16 14 14 14 13 13 13 11 11 11 14 14 14 19 19 19 21 21 21 23 23 23
++24 24 24 27 27 27 23 23 23 14 14 14 13 13 13 19 19 19 24 24 24 25 25 25
++13 13 13 16 16 16 16 16 16 13 13 13 13 13 13 16 16 16 20 20 20 23 23 23
++23 23 23 19 19 19 19 19 19 21 21 21 20 20 20 16 16 16 16 16 16 23 23 23
++25 25 25 20 20 20 17 17 17 20 20 20 21 21 21 19 19 19 19 19 19 21 21 21
++29 29 29 27 27 27 24 24 24 21 21 21 16 16 16 11 11 11 14 14 14 23 23 23
++25 25 25 27 27 27 27 27 27 23 23 23 17 17 17 14 14 14 14 14 14 17 17 17
++23 23 23 20 20 20 17 17 17 17 17 17 20 20 20 23 23 23 24 24 24 25 25 25
++21 21 21 20 20 20 16 16 16 13 13 13 10 10 10 11 11 11 14 14 14 16 16 16
++23 23 23 23 23 23 23 23 23 21 21 21 21 21 21 21 21 21 23 23 23 25 25 25
++23 23 23 21 21 21 20 20 20 16 16 16 13 13 13 13 13 13 14 14 14 17 17 17
++23 23 23 23 23 23 21 21 21 20 20 20 20 20 20 19 19 19 17 17 17 17 17 17
++17 17 17 19 19 19 17 17 17 13 13 13 8 8 8 8 8 8 13 13 13 16 16 16
++16 16 16 17 17 17 19 19 19 17 17 17 14 14 14 13 13 13 14 14 14 16 16 16
++17 17 17 19 19 19 19 19 19 17 17 17 14 14 14 13 13 13 11 11 11 11 11 11
++11 11 11 13 13 13 13 13 13 13 13 13 11 11 11 10 10 10 10 10 10 10 10 10
++10 10 10 11 11 11 13 13 13 14 14 14 16 16 16 14 14 14 14 14 14 13 13 13
++17 17 17 16 16 16 16 16 16 14 14 14 13 13 13 10 10 10 6 6 6 4 4 4
++8 8 8 8 8 8 6 6 6 6 6 6 4 4 4 6 6 6 6 6 6 6 6 6
++4 4 4 8 8 8 11 11 11 11 11 11 11 11 11 8 8 8 6 6 6 6 6 6
++0 0 0 4 4 4 8 8 8 10 10 10 10 10 10 8 8 8 6 6 6 4 4 4
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6 10 10 10
++6 6 6 3 3 3 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0
++6 6 6 8 8 8 8 8 8 6 6 6 0 0 0 0 0 0 0 0 0 4 4 4
++3 3 3 89 89 89 200 220 210 163 163 163 14 14 14 23 23 23 166 167 167 180 183 185
++109 110 110 6 6 6 147 147 148 200 220 210 115 116 115 0 0 0 125 125 127 200 220 210
++152 153 154 6 6 6 68 68 68 180 183 185 187 210 182 6 6 6 8 8 8 200 220 210
++187 210 182 63 63 63 25 25 25 157 157 157 180 183 185 125 125 127 8 8 8 10 10 10
++6 6 6 92 92 92 200 220 210 187 210 182 75 75 75 51 51 51 180 183 185 200 220 210
++3 3 3 4 4 4 17 17 17 187 210 182 200 220 210 65 65 65 6 6 6 21 21 21
++169 175 167 180 183 185 180 183 185 187 210 182 66 66 66 0 0 0 19 19 19 10 10 10
++13 13 13 10 10 10 180 183 185 187 210 182 75 75 75 6 6 6 147 147 148 200 220 210
++105 105 105 0 0 0 57 57 57 180 183 185 187 210 182 14 14 14 96 96 96 180 183 185
++180 183 185 25 25 25 0 0 0 0 0 0 6 6 6 39 39 39 112 112 113 42 42 42
++10 10 10 10 10 10 10 10 10 10 10 10 13 13 13 14 14 14 16 16 16 17 17 17
++
++0 0 0 3 3 3 8 8 8 11 11 11 4 4 4 0 0 0 0 0 0 11 11 11
++10 10 10 4 4 4 0 0 0 0 0 0 6 6 6 10 10 10 6 6 6 3 3 3
++0 0 0 6 6 6 8 8 8 6 6 6 0 0 0 0 0 0 3 3 3 10 10 10
++13 13 13 4 4 4 0 0 0 0 0 0 10 10 10 13 13 13 4 4 4 0 0 0
++0 0 0 4 4 4 6 6 6 0 0 0 0 0 0 6 6 6 8 8 8 4 4 4
++0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 3 3 3 6 6 6 10 10 10
++4 4 4 0 0 0 0 0 0 0 0 0 4 4 4 8 8 8 8 8 8 6 6 6
++6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 4 4 4
++4 4 4 10 10 10 6 6 6 0 0 0 0 0 0 4 4 4 6 6 6 0 0 0
++8 8 8 6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++11 11 11 8 8 8 4 4 4 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++14 14 14 10 10 10 4 4 4 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 8 8 8 13 13 13 14 14 14 13 13 13 11 11 11 11 11 11 14 14 14
++8 8 8 13 13 13 14 14 14 10 10 10 0 0 0 0 0 0 4 4 4 11 11 11
++8 8 8 3 3 3 0 0 0 3 3 3 6 6 6 8 8 8 4 4 4 0 0 0
++0 0 0 8 8 8 11 11 11 8 8 8 0 0 0 0 0 0 6 6 6 14 14 14
++8 8 8 3 3 3 4 4 4 11 11 11 13 13 13 4 4 4 3 3 3 8 8 8
++6 6 6 11 11 11 8 8 8 0 0 0 0 0 0 6 6 6 6 6 6 3 3 3
++6 6 6 4 4 4 4 4 4 8 8 8 13 13 13 16 16 16 16 16 16 14 14 14
++10 10 10 6 6 6 4 4 4 4 4 4 6 6 6 8 8 8 6 6 6 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++10 10 10 10 10 10 8 8 8 8 8 8 6 6 6 6 6 6 6 6 6 6 6 6
++11 11 11 14 14 14 16 16 16 14 14 14 11 11 11 10 10 10 10 10 10 11 11 11
++16 16 16 6 6 6 0 0 0 10 10 10 14 14 14 13 13 13 13 13 13 16 16 16
++20 20 20 11 11 11 6 6 6 13 13 13 16 16 16 13 13 13 13 13 13 16 16 16
++20 20 20 13 13 13 11 11 11 16 16 16 17 17 17 13 13 13 16 16 16 23 23 23
++24 24 24 23 23 23 20 20 20 16 16 16 10 10 10 8 8 8 16 16 16 24 24 24
++10 10 10 13 13 13 17 17 17 17 17 17 13 13 13 10 10 10 14 14 14 19 19 19
++20 20 20 20 20 20 19 19 19 19 19 19 20 20 20 20 20 20 17 17 17 13 13 13
++27 27 27 23 23 23 20 20 20 21 21 21 20 20 20 13 13 13 8 8 8 11 11 11
++21 21 21 23 23 23 25 25 25 25 25 25 17 17 17 10 10 10 13 13 13 23 23 23
++20 20 20 24 24 24 25 25 25 21 21 21 14 14 14 10 10 10 10 10 10 13 13 13
++20 20 20 17 17 17 14 14 14 13 13 13 14 14 14 17 17 17 19 19 19 20 20 20
++20 20 20 14 14 14 11 11 11 11 11 11 17 17 17 21 21 21 23 23 23 21 21 21
++19 19 19 19 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++21 21 21 21 21 21 20 20 20 16 16 16 11 11 11 11 11 11 13 13 13 14 14 14
++17 17 17 19 19 19 20 20 20 20 20 20 17 17 17 13 13 13 8 8 8 4 4 4
++13 13 13 17 17 17 21 21 21 20 20 20 14 14 14 11 11 11 14 14 14 17 17 17
++13 13 13 17 17 17 19 19 19 16 16 16 10 10 10 8 8 8 13 13 13 17 17 17
++16 16 16 11 11 11 6 6 6 8 8 8 11 11 11 13 13 13 11 11 11 6 6 6
++11 11 11 13 13 13 13 13 13 11 11 11 8 8 8 6 6 6 10 10 10 11 11 11
++6 6 6 6 6 6 10 10 10 11 11 11 13 13 13 13 13 13 13 13 13 13 13 13
++14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 14 14 14 14 14 14 16 16 16
++3 3 3 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 4 4 4
++4 4 4 10 10 10 13 13 13 11 11 11 8 8 8 3 3 3 0 0 0 0 0 0
++3 3 3 4 4 4 6 6 6 8 8 8 6 6 6 4 4 4 4 4 4 4 4 4
++4 4 4 6 6 6 6 6 6 3 3 3 0 0 0 3 3 3 6 6 6 10 10 10
++4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 4 4 4 6 6 6
++13 13 13 10 10 10 4 4 4 3 3 3 4 4 4 6 6 6 10 10 10 11 11 11
++10 10 10 34 34 34 180 183 185 200 220 210 140 140 140 129 129 130 180 183 185 187 210 182
++101 101 101 3 3 3 112 112 113 180 183 185 187 210 182 149 149 149 187 210 182 180 183 185
++149 149 149 3 3 3 71 71 71 187 210 182 200 220 210 14 14 14 10 10 10 187 210 182
++187 210 182 74 74 74 8 8 8 152 153 154 187 210 182 101 101 101 10 10 10 152 153 154
++117 117 117 127 127 127 180 183 185 180 183 185 17 17 17 40 40 40 187 210 182 180 183 185
++166 167 167 91 91 91 0 0 0 187 210 182 187 210 182 69 69 69 17 17 17 96 97 98
++180 183 185 137 137 137 101 101 101 200 220 210 142 143 144 19 19 19 3 3 3 16 16 16
++8 8 8 16 16 16 200 220 210 187 210 182 63 63 63 14 14 14 155 156 156 180 183 185
++105 105 105 0 0 0 74 74 74 187 210 182 187 210 182 8 8 8 17 17 17 180 183 185
++180 183 185 169 175 167 105 105 105 121 121 119 11 11 11 139 139 139 200 220 210 140 140 140
++13 13 13 11 11 11 10 10 10 10 10 10 11 11 11 11 11 11 10 10 10 8 8 8
++
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++6 6 6 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6
++0 0 0 0 0 0 3 3 3 6 6 6 6 6 6 3 3 3 0 0 0 0 0 0
++8 8 8 6 6 6 3 3 3 0 0 0 0 0 0 3 3 3 6 6 6 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6 8 8 8
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++14 14 14 6 6 6 0 0 0 0 0 0 4 4 4 8 8 8 3 3 3 0 0 0
++6 6 6 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 6 6 6
++6 6 6 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 6 6 6
++0 0 0 4 4 4 6 6 6 4 4 4 0 0 0 0 0 0 6 6 6 11 11 11
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 6 6 6 8 8 8 8 8 8
++8 8 8 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++8 8 8 8 8 8 10 10 10 10 10 10 11 11 11 11 11 11 10 10 10 10 10 10
++14 14 14 11 11 11 8 8 8 4 4 4 3 3 3 3 3 3 4 4 4 6 6 6
++0 0 0 3 3 3 8 8 8 10 10 10 6 6 6 3 3 3 3 3 3 3 3 3
++10 10 10 6 6 6 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 6 6 6
++0 0 0 4 4 4 8 8 8 10 10 10 10 10 10 8 8 8 4 4 4 0 0 0
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++8 8 8 6 6 6 4 4 4 8 8 8 11 11 11 13 13 13 13 13 13 10 10 10
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++10 10 10 13 13 13 14 14 14 14 14 14 11 11 11 10 10 10 10 10 10 11 11 11
++10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
++14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 11 11 11 11 11 11 11 11 11
++14 14 14 14 14 14 13 13 13 13 13 13 14 14 14 14 14 14 16 16 16 17 17 17
++19 19 19 19 19 19 17 17 17 13 13 13 8 8 8 8 8 8 11 11 11 14 14 14
++14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++13 13 13 14 14 14 16 16 16 16 16 16 16 16 16 14 14 14 13 13 13 13 13 13
++13 13 13 16 16 16 17 17 17 16 16 16 13 13 13 8 8 8 8 8 8 8 8 8
++11 11 11 16 16 16 20 20 20 21 21 21 20 20 20 19 19 19 19 19 19 19 19 19
++19 19 19 17 17 17 16 16 16 14 14 14 13 13 13 11 11 11 10 10 10 10 10 10
++8 8 8 10 10 10 13 13 13 16 16 16 17 17 17 17 17 17 16 16 16 14 14 14
++10 10 10 11 11 11 14 14 14 16 16 16 17 17 17 17 17 17 16 16 16 16 16 16
++19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
++19 19 19 19 19 19 17 17 17 16 16 16 14 14 14 13 13 13 11 11 11 11 11 11
++4 4 4 6 6 6 10 10 10 13 13 13 13 13 13 11 11 11 10 10 10 6 6 6
++14 14 14 16 16 16 19 19 19 19 19 19 19 19 19 16 16 16 13 13 13 11 11 11
++11 11 11 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++11 11 11 11 11 11 10 10 10 8 8 8 8 8 8 6 6 6 6 6 6 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++8 8 8 10 10 10 10 10 10 10 10 10 8 8 8 6 6 6 3 3 3 0 0 0
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++4 4 4 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 6 6 6 4 4 4
++0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 4 4 4 6 6 6 10 10 10
++8 8 8 8 8 8 6 6 6 4 4 4 4 4 4 6 6 6 8 8 8 8 8 8
++0 0 0 16 16 16 59 59 59 158 159 161 200 220 210 144 145 144 166 167 167 180 183 185
++103 103 102 0 0 0 28 28 28 127 127 127 200 220 210 166 167 167 112 112 113 180 183 185
++152 153 154 6 6 6 60 60 60 200 220 210 180 183 185 4 4 4 16 16 16 187 210 182
++187 210 182 63 63 63 14 14 14 149 149 149 200 220 210 95 95 94 44 44 44 139 139 139
++169 175 167 180 183 185 157 157 157 80 80 80 6 6 6 4 4 4 95 95 94 180 183 185
++187 210 182 94 94 94 25 25 25 180 183 185 187 210 182 68 68 68 60 60 60 180 183 185
++180 183 185 42 42 42 34 34 34 180 183 185 200 220 210 101 101 101 14 14 14 16 16 16
++3 3 3 25 25 25 180 183 185 200 220 210 67 67 67 13 13 13 152 153 154 187 210 182
++96 97 98 11 11 11 68 68 68 187 210 182 180 183 185 25 25 25 0 0 0 40 40 40
++131 131 131 169 175 167 200 220 210 155 156 156 16 16 16 105 105 105 187 210 182 112 112 113
++8 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
++
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++8 8 8 6 6 6 6 6 6 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 4 4 4 3 3 3 3 3 3
++3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 4 4 4 3 3 3 3 3 3
++4 4 4 3 3 3 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 6 6 6
++0 0 0 0 0 0 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 8 8 8
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++6 6 6 8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
++11 11 11 10 10 10 8 8 8 6 6 6 4 4 4 4 4 4 3 3 3 3 3 3
++3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 4 4 4 4 4 4
++6 6 6 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 4 4 4 6 6 6 8 8 8 11 11 11 13 13 13 11 11 11 8 8 8
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++8 8 8 11 11 11 13 13 13 13 13 13 10 10 10 8 8 8 8 8 8 10 10 10
++10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
++13 13 13 13 13 13 13 13 13 11 11 11 11 11 11 10 10 10 10 10 10 10 10 10
++13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 16 16 16 17 17 17 19 19 19
++17 17 17 17 17 17 17 17 17 16 16 16 11 11 11 10 10 10 11 11 11 13 13 13
++13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
++13 13 13 14 14 14 16 16 16 16 16 16 16 16 16 16 16 16 14 14 14 14 14 14
++13 13 13 14 14 14 17 17 17 17 17 17 14 14 14 11 11 11 10 10 10 8 8 8
++10 10 10 13 13 13 16 16 16 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17
++17 17 17 17 17 17 16 16 16 16 16 16 14 14 14 13 13 13 11 11 11 11 11 11
++8 8 8 10 10 10 13 13 13 14 14 14 16 16 16 16 16 16 14 14 14 13 13 13
++11 11 11 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13
++17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
++17 17 17 16 16 16 16 16 16 14 14 14 13 13 13 11 11 11 10 10 10 10 10 10
++11 11 11 13 13 13 14 14 14 16 16 16 16 16 16 16 16 16 14 14 14 13 13 13
++14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13
++13 13 13 13 13 13 13 13 13 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++11 11 11 10 10 10 10 10 10 8 8 8 8 8 8 6 6 6 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
++10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
++8 8 8 8 8 8 8 8 8 8 8 8 6 6 6 4 4 4 4 4 4 3 3 3
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 6 6 6 6 6 6 6 6 6
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 4 4 4 6 6 6 8 8 8
++8 8 8 8 8 8 6 6 6 4 4 4 4 4 4 6 6 6 8 8 8 8 8 8
++14 14 14 0 0 0 24 24 24 13 13 13 0 0 0 42 42 42 166 167 167 200 220 210
++68 68 68 8 8 8 0 0 0 0 0 0 16 16 16 11 11 11 0 0 0 11 11 11
++0 0 0 0 0 0 19 19 19 0 0 0 4 4 4 8 8 8 10 10 10 10 10 10
++8 8 8 6 6 6 0 0 0 6 6 6 20 20 20 6 6 6 0 0 0 8 8 8
++11 11 11 21 21 21 10 10 10 0 0 0 13 13 13 8 8 8 0 0 0 14 14 14
++13 13 13 21 21 21 0 0 0 14 14 14 11 11 11 13 13 13 3 3 3 19 19 19
++19 19 19 0 0 0 0 0 0 17 17 17 10 10 10 4 4 4 3 3 3 0 0 0
++16 16 16 0 0 0 16 16 16 0 0 0 19 19 19 0 0 0 8 8 8 3 3 3
++13 13 13 0 0 0 0 0 0 8 8 8 11 11 11 0 0 0 21 21 21 0 0 0
++0 0 0 19 19 19 0 0 0 14 14 14 0 0 0 0 0 0 16 16 16 6 6 6
++6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 10 10 10 10 10 10
++
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 4 4 4 6 6 6 6 6 6 4 4 4 0 0 0 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 3 3 3 4 4 4 6 6 6 6 6 6 4 4 4 3 3 3 0 0 0
++6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 6 6 6 11 11 11 8 8 8 0 0 0 0 0 0 0 0 0 6 6 6
++0 0 0 3 3 3 6 6 6 8 8 8 8 8 8 6 6 6 3 3 3 0 0 0
++0 0 0 3 3 3 6 6 6 8 8 8 8 8 8 6 6 6 3 3 3 0 0 0
++6 6 6 0 0 0 0 0 0 0 0 0 8 8 8 10 10 10 6 6 6 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 4 4 4 4 4 4 6 6 6 6 6 6
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 6 6 6
++6 6 6 6 6 6 8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 8 8 8
++8 8 8 8 8 8 8 8 8 8 8 8 6 6 6 4 4 4 3 3 3 0 0 0
++8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6 6 6 6
++0 0 0 4 4 4 6 6 6 8 8 8 6 6 6 4 4 4 3 3 3 3 3 3
++8 8 8 6 6 6 3 3 3 0 0 0 0 0 0 3 3 3 6 6 6 8 8 8
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 4 4 4 6 6 6 10 10 10 11 11 11 11 11 11 10 10 10 6 6 6
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 10 10 10 11 11 11 10 10 10 8 8 8 6 6 6 6 6 6 8 8 8
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++10 10 10 10 10 10 10 10 10 10 10 10 8 8 8 8 8 8 8 8 8 8 8 8
++10 10 10 10 10 10 11 11 11 11 11 11 13 13 13 16 16 16 17 17 17 19 19 19
++14 14 14 16 16 16 17 17 17 16 16 16 13 13 13 11 11 11 10 10 10 11 11 11
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++13 13 13 13 13 13 14 14 14 16 16 16 16 16 16 14 14 14 11 11 11 8 8 8
++8 8 8 10 10 10 11 11 11 14 14 14 17 17 17 17 17 17 16 16 16 14 14 14
++16 16 16 16 16 16 16 16 16 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13
++8 8 8 8 8 8 11 11 11 13 13 13 14 14 14 14 14 14 13 13 13 11 11 11
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 10 10 10 10 10 10 8 8 8
++14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++14 14 14 14 14 14 13 13 13 11 11 11 11 11 11 10 10 10 8 8 8 8 8 8
++13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
++14 14 14 13 13 13 10 10 10 8 8 8 10 10 10 11 11 11 13 13 13 16 16 16
++13 13 13 11 11 11 11 11 11 11 11 11 10 10 10 10 10 10 8 8 8 8 8 8
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++10 10 10 10 10 10 8 8 8 8 8 8 6 6 6 6 6 6 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++10 10 10 8 8 8 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6
++0 0 0 0 0 0 3 3 3 4 4 4 6 6 6 6 6 6 4 4 4 3 3 3
++6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6
++4 4 4 19 19 19 129 129 130 166 167 167 155 156 156 180 183 185 200 220 210 155 156 156
++0 0 0 0 0 0 6 6 6 0 0 0 0 0 0 3 3 3 17 17 17 0 0 0
++19 19 19 0 0 0 3 3 3 6 6 6 16 16 16 6 6 6 3 3 3 11 11 11
++0 0 0 6 6 6 11 11 11 0 0 0 0 0 0 13 13 13 17 17 17 0 0 0
++6 6 6 6 6 6 0 0 0 0 0 0 13 13 13 16 16 16 13 13 13 14 14 14
++0 0 0 6 6 6 11 11 11 4 4 4 0 0 0 19 19 19 13 13 13 8 8 8
++8 8 8 16 16 16 11 11 11 0 0 0 3 3 3 8 8 8 13 13 13 17 17 17
++11 11 11 17 17 17 10 10 10 0 0 0 16 16 16 17 17 17 4 4 4 3 3 3
++0 0 0 0 0 0 10 10 10 0 0 0 10 10 10 0 0 0 16 16 16 0 0 0
++0 0 0 16 16 16 0 0 0 4 4 4 3 3 3 6 6 6 0 0 0 3 3 3
++4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 8 8 8
++
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 3 3 3 4 4 4 6 6 6 6 6 6 4 4 4 3 3 3 0 0 0
++6 6 6 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 4 4 4 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 4 4 4 10 10 10 8 8 8 3 3 3 0 0 0 0 0 0 4 4 4
++0 0 0 3 3 3 4 4 4 6 6 6 6 6 6 4 4 4 3 3 3 0 0 0
++0 0 0 3 3 3 4 4 4 6 6 6 6 6 6 4 4 4 3 3 3 0 0 0
++3 3 3 0 0 0 0 0 0 4 4 4 6 6 6 6 6 6 3 3 3 0 0 0
++0 0 0 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 6 6 6
++4 4 4 6 6 6 8 8 8 8 8 8 10 10 10 8 8 8 8 8 8 8 8 8
++8 8 8 8 8 8 6 6 6 6 6 6 4 4 4 3 3 3 3 3 3 3 3 3
++8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4
++0 0 0 3 3 3 6 6 6 6 6 6 4 4 4 0 0 0 3 3 3 4 4 4
++6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4 6 6 6
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 10 10 10 11 11 11 10 10 10 6 6 6 3 3 3
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 6 6 6 8 8 8 8 8 8 6 6 6 3 3 3 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++4 4 4 6 6 6 6 6 6 8 8 8 10 10 10 13 13 13 14 14 14 16 16 16
++13 13 13 13 13 13 13 13 13 11 11 11 10 10 10 10 10 10 8 8 8 8 8 8
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++6 6 6 6 6 6 8 8 8 10 10 10 11 11 11 11 11 11 11 11 11 13 13 13
++13 13 13 11 11 11 8 8 8 10 10 10 11 11 11 13 13 13 11 11 11 8 8 8
++6 6 6 4 4 4 6 6 6 10 10 10 14 14 14 16 16 16 14 14 14 11 11 11
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 13 13 13
++6 6 6 8 8 8 10 10 10 11 11 11 11 11 11 11 11 11 10 10 10 10 10 10
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 6 6 6 6 6
++11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
++11 11 11 11 11 11 10 10 10 10 10 10 8 8 8 6 6 6 6 6 6 6 6 6
++8 8 8 6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 10 10 10 10 10 10
++10 10 10 8 8 8 6 6 6 4 4 4 6 6 6 8 8 8 11 11 11 13 13 13
++11 11 11 11 11 11 10 10 10 10 10 10 8 8 8 6 6 6 6 6 6 4 4 4
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++8 8 8 8 8 8 8 8 8 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++8 8 8 6 6 6 4 4 4 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 4 4 4 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6
++0 0 0 0 0 0 0 0 0 4 4 4 8 8 8 8 8 8 4 4 4 0 0 0
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 0 0 0 87 87 87 144 145 144 152 153 154 139 139 139 101 101 101 23 23 23
++0 0 0 8 8 8 6 6 6 19 19 19 17 17 17 0 0 0 3 3 3 6 6 6
++0 0 0 8 8 8 14 14 14 6 6 6 4 4 4 6 6 6 3 3 3 0 0 0
++10 10 10 0 0 0 0 0 0 10 10 10 3 3 3 0 0 0 4 4 4 10 10 10
++0 0 0 3 3 3 10 10 10 10 10 10 3 3 3 0 0 0 0 0 0 0 0 0
++11 11 11 0 0 0 8 8 8 13 13 13 4 4 4 0 0 0 0 0 0 11 11 11
++8 8 8 3 3 3 0 0 0 0 0 0 11 11 11 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 19 19 19 23 23 23 0 0 0 0 0 0 13 13 13 0 0 0
++10 10 10 0 0 0 6 6 6 0 0 0 11 11 11 0 0 0 0 0 0 6 6 6
++14 14 14 0 0 0 3 3 3 20 20 20 0 0 0 6 6 6 14 14 14 0 0 0
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 3 3 3 6 6 6 6 6 6 3 3 3 0 0 0 0 0 0 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 4 4 4 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 6 6 6
++8 8 8 6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 3 3 3 4 4 4
++6 6 6 3 3 3 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 0 0 0
++3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 3 3 3 6 6 6
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 10 10 10 10 10 10 6 6 6 4 4 4 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 4 4 4 6 6 6 6 6 6 3 3 3 0 0 0 0 0 0 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 8 8 8 10 10 10 11 11 11
++11 11 11 8 8 8 6 6 6 3 3 3 3 3 3 4 4 4 4 4 4 6 6 6
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 6 6 6 8 8 8 8 8 8
++11 11 11 8 8 8 3 3 3 0 0 0 4 4 4 6 6 6 8 8 8 8 8 8
++4 4 4 3 3 3 3 3 3 6 6 6 10 10 10 11 11 11 10 10 10 8 8 8
++6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 8 8 8
++8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
++8 8 8 8 8 8 8 8 8 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 6 6 6
++4 4 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 8 8 8 8 8 8
++10 10 10 8 8 8 8 8 8 6 6 6 4 4 4 4 4 4 3 3 3 3 3 3
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 6 6 6 4 4 4 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++6 6 6 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 6 6 6
++0 0 0 0 0 0 0 0 0 4 4 4 8 8 8 6 6 6 3 3 3 0 0 0
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++10 10 10 0 0 0 0 0 0 0 0 0 4 4 4 0 0 0 10 10 10 10 10 10
++0 0 0 4 4 4 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 14 14 14
++13 13 13 4 4 4 0 0 0 10 10 10 10 10 10 3 3 3 0 0 0 6 6 6
++3 3 3 10 10 10 8 8 8 4 4 4 4 4 4 6 6 6 4 4 4 6 6 6
++10 10 10 0 0 0 0 0 0 0 0 0 3 3 3 8 8 8 10 10 10 3 3 3
++0 0 0 13 13 13 13 13 13 0 0 0 0 0 0 0 0 0 6 6 6 0 0 0
++0 0 0 8 8 8 13 13 13 0 0 0 0 0 0 4 4 4 14 14 14 10 10 10
++10 10 10 0 0 0 0 0 0 3 3 3 6 6 6 17 17 17 11 11 11 3 3 3
++0 0 0 0 0 0 11 11 11 0 0 0 4 4 4 8 8 8 3 3 3 0 0 0
++8 8 8 0 0 0 0 0 0 11 11 11 3 3 3 8 8 8 0 0 0 6 6 6
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++4 4 4 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6 3 3 3 0 0 0
++4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4
++4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4
++0 0 0 4 4 4 8 8 8 6 6 6 0 0 0 0 0 0 0 0 0 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 4 4 4 6 6 6 6 6 6 8 8 8 6 6 6 6 6 6 6 6 6
++8 8 8 6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6
++0 0 0 0 0 0 3 3 3 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 8 8 8 6 6 6 4 4 4 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 6 6 6 8 8 8
++8 8 8 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4
++10 10 10 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 6 6 6 8 8 8
++6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
++6 6 6 6 6 6 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3
++4 4 4 3 3 3 3 3 3 0 0 0 3 3 3 4 4 4 6 6 6 6 6 6
++0 0 0 3 3 3 4 4 4 4 4 4 6 6 6 4 4 4 4 4 4 3 3 3
++6 6 6 6 6 6 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 0 0 0
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 4 4 4 3 3 3 0 0 0
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3
++0 0 0 17 17 17 13 13 13 10 10 10 13 13 13 0 0 0 4 4 4 4 4 4
++4 4 4 0 0 0 8 8 8 3 3 3 3 3 3 8 8 8 0 0 0 3 3 3
++3 3 3 4 4 4 0 0 0 8 8 8 3 3 3 0 0 0 0 0 0 4 4 4
++4 4 4 0 0 0 0 0 0 0 0 0 14 14 14 6 6 6 0 0 0 0 0 0
++0 0 0 3 3 3 8 8 8 8 8 8 0 0 0 0 0 0 0 0 0 3 3 3
++4 4 4 10 10 10 0 0 0 3 3 3 16 16 16 0 0 0 0 0 0 6 6 6
++10 10 10 0 0 0 0 0 0 11 11 11 6 6 6 0 0 0 0 0 0 0 0 0
++0 0 0 17 17 17 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4
++13 13 13 3 3 3 4 4 4 4 4 4 8 8 8 0 0 0 0 0 0 8 8 8
++0 0 0 14 14 14 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 3 3 3
++4 4 4 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 3 3 3
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++4 4 4 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 3 3 3 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 4 4 4
++4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 0 0 0 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 6 6 6 6 6 6 3 3 3 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 6 6 6
++6 6 6 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 4 4 4
++6 6 6 6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++3 3 3 3 3 3 4 4 4 3 3 3 3 3 3 0 0 0 3 3 3 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 6 6 6
++3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0
++0 0 0 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++11 11 11 8 8 8 0 0 0 0 0 0 13 13 13 10 10 10 6 6 6 0 0 0
++3 3 3 0 0 0 0 0 0 6 6 6 3 3 3 0 0 0 6 6 6 3 3 3
++0 0 0 16 16 16 10 10 10 17 17 17 4 4 4 6 6 6 10 10 10 4 4 4
++0 0 0 10 10 10 10 10 10 3 3 3 4 4 4 6 6 6 4 4 4 8 8 8
++4 4 4 6 6 6 6 6 6 6 6 6 11 11 11 10 10 10 8 8 8 10 10 10
++0 0 0 8 8 8 0 0 0 11 11 11 10 10 10 4 4 4 0 0 0 10 10 10
++4 4 4 0 0 0 4 4 4 6 6 6 0 0 0 4 4 4 10 10 10 3 3 3
++4 4 4 6 6 6 8 8 8 8 8 8 11 11 11 6 6 6 17 17 17 0 0 0
++0 0 0 3 3 3 3 3 3 4 4 4 3 3 3 4 4 4 11 11 11 6 6 6
++16 16 16 0 0 0 0 0 0 4 4 4 6 6 6 3 3 3 8 8 8 8 8 8
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4
++0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 6 6 6
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4
++10 10 10 4 4 4 0 0 0 0 0 0 3 3 3 4 4 4 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++3 3 3 3 3 3 4 4 4 6 6 6 6 6 6 6 6 6 4 4 4 4 4 4
++0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 6 6 6 6 6 6
++4 4 4 3 3 3 0 0 0 3 3 3 4 4 4 6 6 6 3 3 3 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++6 6 6 4 4 4 3 3 3 3 3 3 0 0 0 3 3 3 4 4 4 4 4 4
++4 4 4 8 8 8 10 10 10 8 8 8 3 3 3 0 0 0 0 0 0 0 0 0
++3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4
++6 6 6 6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
++4 4 4 4 4 4 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 3 3 3 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 4 4 4
++0 0 0 0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 6 6 6 0 0 0 4 4 4
++0 0 0 17 17 17 0 0 0 0 0 0 8 8 8 3 3 3 8 8 8 0 0 0
++3 3 3 11 11 11 0 0 0 8 8 8 0 0 0 4 4 4 4 4 4 0 0 0
++14 14 14 0 0 0 0 0 0 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0
++0 0 0 8 8 8 3 3 3 0 0 0 4 4 4 0 0 0 0 0 0 3 3 3
++0 0 0 4 4 4 6 6 6 11 11 11 0 0 0 11 11 11 0 0 0 0 0 0
++6 6 6 3 3 3 0 0 0 0 0 0 6 6 6 4 4 4 0 0 0 4 4 4
++4 4 4 0 0 0 6 6 6 4 4 4 10 10 10 0 0 0 8 8 8 3 3 3
++6 6 6 3 3 3 0 0 0 10 10 10 3 3 3 0 0 0 6 6 6 0 0 0
++0 0 0 10 10 10 6 6 6 3 3 3 0 0 0 0 0 0 10 10 10 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 4 4 4
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++4 4 4 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 4 4 4
++3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 4 4 4 6 6 6 3 3 3 3 3 3 6 6 6 4 4 4 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 4 4 4 3 3 3 0 0 0 3 3 3 4 4 4
++3 3 3 4 4 4 6 6 6 4 4 4 3 3 3 0 0 0 0 0 0 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0
++3 3 3 0 0 0 0 0 0 0 0 0 3 3 3 4 4 4 3 3 3 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 3 3 3 4 4 4 3 3 3 0 0 0 0 0 0 0 0 0 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
++4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
++0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3
++
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-mmc.patch b/packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-mmc.patch
new file mode 100644
index 0000000000..59d97809d1
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-mmc.patch
@@ -0,0 +1,33 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/gumstix.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+@@ -33,8 +33,9 @@
+
+ static struct pxamci_platform_data gumstix_mci_platform_data;
+
+-static int gumstix_mci_init(struct device *dev, irqreturn_t (*gumstix_detect_int)(int, void *, struct pt_regs *), void *data)
++static int gumstix_mci_init(struct device *dev, irq_handler_t gumstix_detect_int, void *data)
+ {
++#ifndef CONFIG_ARCH_GUMSTIX_VERDEX
+ int err;
+
+ pxa_gpio_mode(GPIO6_MMCCLK_MD);
+@@ -55,6 +56,17 @@ static int gumstix_mci_init(struct devic
+ }
+
+ err = set_irq_type(GUMSTIX_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE);
++#else
++ // Setup GPIOs for MMC on the 120-pin connector
++ // There is no card detect on a uSD connector so no interrupt to register
++ // There is no WP detect GPIO line either
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++#endif
+
+ return 0;
+ }
diff --git a/packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-usb-host.patch b/packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-usb-host.patch
new file mode 100644
index 0000000000..f5da12fdef
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/gumstix-pxa270-usb-host.patch
@@ -0,0 +1,366 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/gumstix.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+@@ -22,6 +22,7 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/irq.h>
++#include <asm/arch/ohci.h>
+ #include <asm/arch/udc.h>
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/pxa-regs.h>
+@@ -178,9 +179,34 @@ static struct platform_device *devices[]
+ &gum_audio_device,
+ };
+
++#ifdef CONFIG_ARCH_GUMSTIX_VERDEX
++static int gumstix_ohci_init(struct device *dev)
++{
++ /* setup Port1 GPIO pin. */
++ //pxa_gpio_mode( 88 | GPIO_ALT_FN_1_IN); /* USBHPWR1 */
++ //pxa_gpio_mode( 89 | GPIO_ALT_FN_2_OUT); /* USBHPEN1 */
++
++ // Turn on port 2 in host mode
++ UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE;
++
++ UHCHR = (UHCHR) &
++ ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
++
++ return 0;
++}
++
++static struct pxaohci_platform_data gumstix_ohci_platform_data = {
++ .port_mode = PMM_PERPORT_MODE,
++ .init = gumstix_ohci_init,
++};
++#endif
++
+ static void __init gumstix_init(void)
+ {
+ pxa_set_mci_info(&gumstix_mci_platform_data);
++#ifdef CONFIG_ARCH_GUMSTIX_VERDEX
++ pxa_set_ohci_info(&gumstix_ohci_platform_data);
++#endif
+ pxa_set_udc_info(&gumstix_udc_info);
+ #if defined(CONFIG_FB_PXA_ALPS_CDOLLAR) | defined(CONFIG_FB_PXA_SHARP_LQ043_PSP) | defined(CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C)
+ set_pxa_fb_info(&gumstix_fb_info);
+Index: linux-2.6.21gum/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/ether.c
++++ linux-2.6.21gum/drivers/usb/gadget/ether.c
+@@ -260,6 +260,8 @@ MODULE_PARM_DESC(host_addr, "Host Ethern
+
+ #ifdef CONFIG_USB_GADGET_PXA27X
+ #define DEV_CONFIG_CDC
++extern struct usb_ep* pxa27x_ep_config(struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc,int config,int interface,int alt);
+ #endif
+
+ #ifdef CONFIG_USB_GADGET_S3C2410
+@@ -482,15 +484,15 @@ eth_config = {
+ #ifdef CONFIG_USB_ETH_RNDIS
+ static struct usb_config_descriptor
+ rndis_config = {
+- .bLength = sizeof rndis_config,
++ .bLength = sizeof rndis_config,
+ .bDescriptorType = USB_DT_CONFIG,
+
+ /* compute wTotalLength on the fly */
+- .bNumInterfaces = 2,
++ .bNumInterfaces = 2,
+ .bConfigurationValue = DEV_RNDIS_CONFIG_VALUE,
+- .iConfiguration = STRING_RNDIS,
++ .iConfiguration = STRING_RNDIS,
+ .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
+- .bMaxPower = 50,
++ .bMaxPower = 50,
+ };
+ #endif
+
+@@ -532,15 +534,15 @@ control_intf = {
+ #ifdef CONFIG_USB_ETH_RNDIS
+ static const struct usb_interface_descriptor
+ rndis_control_intf = {
+- .bLength = sizeof rndis_control_intf,
++ .bLength = sizeof rndis_control_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+ .bInterfaceNumber = 0,
+- .bNumEndpoints = 1,
++ .bNumEndpoints = 1,
+ .bInterfaceClass = USB_CLASS_COMM,
+ .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM,
+ .bInterfaceProtocol = USB_CDC_ACM_PROTO_VENDOR,
+- .iInterface = STRING_RNDIS_CONTROL,
++ .iInterface = STRING_RNDIS_CONTROL,
+ };
+ #endif
+
+@@ -1342,7 +1344,7 @@ static void rndis_response_complete (str
+
+ static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req)
+ {
+- struct eth_dev *dev = ep->driver_data;
++ struct eth_dev *dev = ep->driver_data;
+ int status;
+
+ /* received RNDIS command from USB_CDC_SEND_ENCAPSULATED_COMMAND */
+@@ -1578,7 +1580,7 @@ done_set_intf:
+
+ /* return the result */
+ buf = rndis_get_next_response (dev->rndis_config,
+- &value);
++ &value);
+ if (buf) {
+ memcpy (req->buf, buf, value);
+ req->complete = rndis_response_complete;
+@@ -2064,7 +2066,7 @@ static void eth_req_free (struct usb_ep
+ static void
+ rndis_control_ack_complete (struct usb_ep *ep, struct usb_request *req)
+ {
+- struct eth_dev *dev = ep->driver_data;
++ struct eth_dev *dev = ep->driver_data;
+
+ if (req->status || req->actual != req->length)
+ DEBUG (dev,
+@@ -2415,7 +2417,27 @@ eth_bind (struct usb_gadget *gadget)
+
+ /* all we really need is bulk IN/OUT */
+ usb_ep_autoconfig_reset (gadget);
++#ifdef CONFIG_USB_GADGET_PXA27X
++#ifdef CONFIG_USB_ETH_RNDIS
++ in_ep = pxa27x_ep_config (gadget, &fs_source_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_data_intf.bInterfaceNumber,
++ (int)rndis_data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ in_ep = pxa27x_ep_config (gadget, &fs_source_desc,
++ DEV_CONFIG_VALUE,
++ (int)data_intf.bInterfaceNumber,
++ (int)data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_SUBSET)
++ in_ep = pxa27x_ep_config (gadget, &fs_source_desc,
++ DEV_CONFIG_VALUE,
++ (int)subset_data_intf.bInterfaceNumber,
++ (int)subset_data_intf.bAlternateSetting);
++
++#endif //CONFIG_USB_ETH_RNDIS
++#else
+ in_ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++#endif //CONFIG_USB_GADGET_PXA27X
+ if (!in_ep) {
+ autoconf_fail:
+ dev_err (&gadget->dev,
+@@ -2425,7 +2447,26 @@ autoconf_fail:
+ }
+ in_ep->driver_data = in_ep; /* claim */
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++#ifdef CONFIG_USB_ETH_RNDIS
++ out_ep = pxa27x_ep_config (gadget, &fs_sink_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_data_intf.bInterfaceNumber,
++ (int)rndis_data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ out_ep = pxa27x_ep_config (gadget, &fs_sink_desc,
++ DEV_CONFIG_VALUE,
++ (int)data_intf.bInterfaceNumber,
++ (int)data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_SUBSET)
++ out_ep = pxa27x_ep_config (gadget, &fs_sink_desc,
++ DEV_CONFIG_VALUE,
++ (int)subset_data_intf.bInterfaceNumber,
++ (int)subset_data_intf.bAlternateSetting);
++#endif //CONFIG_USB_ETH_RNDIS
++#else
+ out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++#endif //CONFIG_USB_GADGET_PXA27X
+ if (!out_ep)
+ goto autoconf_fail;
+ out_ep->driver_data = out_ep; /* claim */
+@@ -2435,7 +2476,22 @@ autoconf_fail:
+ * Since some hosts expect one, try to allocate one anyway.
+ */
+ if (cdc || rndis) {
++#ifdef CONFIG_USB_GADGET_PXA27X
++#ifdef CONFIG_USB_ETH_RNDIS
++ status_ep = pxa27x_ep_config (gadget, &fs_status_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_control_intf.bInterfaceNumber,
++ (int)rndis_control_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ status_ep = pxa27x_ep_config (gadget, &fs_status_desc,
++ DEV_CONFIG_VALUE,
++ (int)control_intf.bInterfaceNumber,
++ (int)control_intf.bAlternateSetting);
++
++#endif //CONFIG_USB_ETH_RNDIS
++#else
+ status_ep = usb_ep_autoconfig (gadget, &fs_status_desc);
++#endif //CONFIG_USB_GADGET_PXA27X
+ if (status_ep) {
+ status_ep->driver_data = status_ep; /* claim */
+ } else if (rndis) {
+@@ -2444,11 +2500,13 @@ autoconf_fail:
+ gadget->name);
+ return -ENODEV;
+ #ifdef DEV_CONFIG_CDC
++#ifndef CONFIG_USB_GADGET_PXA27X
+ /* pxa25x only does CDC subset; often used with RNDIS */
+ } else if (cdc) {
+ control_intf.bNumEndpoints = 0;
+ /* FIXME remove endpoint from descriptor list */
+ #endif
++#endif
+ }
+ }
+ #endif
+Index: linux-2.6.21gum/drivers/usb/gadget/file_storage.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/file_storage.c
++++ linux-2.6.21gum/drivers/usb/gadget/file_storage.c
+@@ -280,6 +280,12 @@ MODULE_LICENSE("Dual BSD/GPL");
+ #define DRIVER_PRODUCT_ID 0xa4a5 // Linux-USB File-backed Storage Gadget
+
+
++
++#ifdef CONFIG_USB_GADGET_PXA27X
++extern struct usb_ep* pxa27x_ep_config(struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc,int config,int interface,int alt);
++#endif
++
+ /*
+ * This driver assumes self-powered hardware and has no way for users to
+ * trigger remote wakeup. It uses autoconfiguration to select endpoints
+@@ -3920,20 +3926,32 @@ static int __init fsg_bind(struct usb_ga
+
+ /* Find all the endpoints we will use */
+ usb_ep_autoconfig_reset(gadget);
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &fs_bulk_in_desc, CONFIG_VALUE, 0, 0);
++#else
+ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc);
++#endif
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_in = ep;
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &fs_bulk_out_desc, CONFIG_VALUE, 0, 0);
++#else
+ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc);
++#endif
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_out = ep;
+
+ if (transport_is_cbi()) {
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &fs_intr_in_desc, CONFIG_VALUE, 0, 0);
++#else
+ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc);
++#endif
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+@@ -4063,6 +4081,7 @@ autoconf_fail:
+ rc = -ENOTSUPP;
+
+ out:
++ ERROR(fsg, "cleaning up on the way out\n");
+ fsg->state = FSG_STATE_TERMINATED; // The thread is dead
+ fsg_unbind(gadget);
+ close_all_backing_files(fsg);
+Index: linux-2.6.21gum/drivers/usb/gadget/serial.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/serial.c
++++ linux-2.6.21gum/drivers/usb/gadget/serial.c
+@@ -126,6 +126,10 @@ static int debug = 1;
+ #define GS_LOG2_NOTIFY_INTERVAL 5 /* 1 << 5 == 32 msec */
+ #define GS_NOTIFY_MAXPACKET 8
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++extern struct usb_ep* pxa27x_ep_config(struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc,int config,int interface,int alt);
++#endif
+
+ /* Structures */
+
+@@ -1378,20 +1382,32 @@ static int __init gs_bind(struct usb_gad
+
+ usb_ep_autoconfig_reset(gadget);
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &gs_fullspeed_in_desc, use_acm ? GS_ACM_CONFIG_ID : GS_BULK_CONFIG_ID, gs_bulk_interface_desc.bInterfaceNumber, gs_bulk_interface_desc.bAlternateSetting);
++#else
+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc);
++#endif
+ if (!ep)
+ goto autoconf_fail;
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &gs_fullspeed_out_desc, use_acm ? GS_ACM_CONFIG_ID : GS_BULK_CONFIG_ID, gs_bulk_interface_desc.bInterfaceNumber, gs_bulk_interface_desc.bAlternateSetting);
++#else
+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc);
++#endif
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+ if (use_acm) {
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &gs_fullspeed_notify_desc, GS_BULK_CONFIG_ID, gs_control_interface_desc.bInterfaceNumber, gs_control_interface_desc.bAlternateSetting);
++#else
+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc);
++#endif
+ if (!ep) {
+ printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name);
+ goto autoconf_fail;
+Index: linux-2.6.21gum/drivers/usb/gadget/zero.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/zero.c
++++ linux-2.6.21gum/drivers/usb/gadget/zero.c
+@@ -212,6 +212,11 @@ module_param (loopdefault, bool, S_IRUGO
+ #define STRING_SOURCE_SINK 250
+ #define STRING_LOOPBACK 251
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++extern struct usb_ep* pxa27x_ep_config(struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc,int config,int interface,int alt);
++#endif
++
+ /*
+ * This device advertises two configurations; these numbers work
+ * on a pxa250 as well as more flexible hardware.
+@@ -1155,7 +1160,11 @@ zero_bind (struct usb_gadget *gadget)
+ * but there may also be important quirks to address.
+ */
+ usb_ep_autoconfig_reset (gadget);
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &fs_source_desc, CONFIG_SOURCE_SINK, source_sink_intf.bInterfaceNumber, source_sink_intf.bAlternateSetting);
++#else
+ ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++#endif
+ if (!ep) {
+ autoconf_fail:
+ printk (KERN_ERR "%s: can't autoconfigure on %s\n",
+@@ -1164,8 +1173,12 @@ autoconf_fail:
+ }
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim */
+-
++
++#ifdef CONFIG_USB_GADGET_PXA27X
++ ep = pxa27x_ep_config(gadget, &fs_sink_desc, CONFIG_SOURCE_SINK, source_sink_intf.bInterfaceNumber, source_sink_intf.bAlternateSetting);
++#else
+ ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++#endif
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
diff --git a/packages/linux/gumstix-kernel-2.6.21/header.patch b/packages/linux/gumstix-kernel-2.6.21/header.patch
new file mode 100644
index 0000000000..6086f69c9f
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/header.patch
@@ -0,0 +1,170 @@
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/gumstix.h
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/gumstix.h
+@@ -0,0 +1,165 @@
++/*
++ * linux/include/asm-arm/arch-pxa/gumstix.h
++ *
++ * 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.
++ */
++
++
++/* BTRESET - Reset line to Bluetooth module, active low signal. */
++#define GPIO_GUMSTIX_BTRESET 7
++#define GPIO_GUMSTIX_BTRESET_MD (GPIO_GUMSTIX_BTRESET | GPIO_OUT)
++
++
++/* GPIOn - Input from MAX823 (or equiv), normalizing USB +5V
++ into a clean interrupt signal for determining cable presence
++ On the original gumstix, this is GPIO81, and GPIO83 needs to be defined as well.
++ On the gumstix F, this moves to GPIO17 and GPIO37 */
++/* GPIOx - Connects to USB D+ and used as a pull-up after GPIOn
++ has detected a cable insertion; driven low otherwise. */
++
++#ifdef CONFIG_ARCH_GUMSTIX_ORIG
++
++#define GPIO_GUMSTIX_USB_GPIOn 81
++#define GPIO_GUMSTIX_USB_GPIOx 83
++
++#else
++
++#define GPIO_GUMSTIX_USB_GPIOn 35
++#define GPIO_GUMSTIX_USB_GPIOx 41
++
++#endif
++
++#define GUMSTIX_USB_INTR_IRQ IRQ_GPIO(GPIO_GUMSTIX_USB_GPIOn) /* usb state change */
++#define GPIO_GUMSTIX_USB_GPIOn_MD (GPIO_GUMSTIX_USB_GPIOn | GPIO_IN)
++#define GPIO_GUMSTIX_USB_GPIOx_CON_MD (GPIO_GUMSTIX_USB_GPIOx | GPIO_OUT)
++#define GPIO_GUMSTIX_USB_GPIOx_DIS_MD (GPIO_GUMSTIX_USB_GPIOx | GPIO_IN)
++
++
++/*
++ * SMC Ethernet definitions
++ * ETH_RST provides a hardware reset line to the ethernet chip
++ * ETH is the IRQ line in from the ethernet chip to the PXA
++ */
++#ifndef CONFIG_ARCH_GUMSTIX_VERDEX
++#define GPIO_GUMSTIX_ETH0_RST 80
++#define GPIO_GUMSTIX_ETH0 36
++#else
++#define GPIO_GUMSTIX_ETH0_RST 32
++#define GPIO_GUMSTIX_ETH0 99
++#endif
++#define GPIO_GUMSTIX_ETH1_RST 52
++#define GPIO_GUMSTIX_ETH1 27
++
++#define GPIO_GUMSTIX_ETH0_RST_MD (GPIO_GUMSTIX_ETH0_RST | GPIO_OUT)
++#define GPIO_GUMSTIX_ETH1_RST_MD (GPIO_GUMSTIX_ETH1_RST | GPIO_OUT)
++#define GPIO_GUMSTIX_ETH0_MD (GPIO_GUMSTIX_ETH0 | GPIO_IN)
++#define GPIO_GUMSTIX_ETH1_MD (GPIO_GUMSTIX_ETH1 | GPIO_IN)
++
++#define GUMSTIX_ETH0_IRQ IRQ_GPIO(GPIO_GUMSTIX_ETH0)
++#define GUMSTIX_ETH1_IRQ IRQ_GPIO(GPIO_GUMSTIX_ETH1)
++
++
++/* CF reset line */
++#define GPIO8_CF_RESET 8
++#define GPIO97_CF_RESET 97
++#define GPIO110_CF_RESET 110
++#ifndef CONFIG_ARCH_GUMSTIX_VERDEX
++#define GPIO_GUMSTIX_CF_RESET GPIO8_CF_RESET
++#else
++#define GPIO_GUMSTIX_CF_RESET GPIO97_CF_RESET
++#endif
++#define GPIO_GUMSTIX_CF_OLD_RESET GPIO110_CF_RESET
++
++
++/* CF signals shared by both sockets */
++#define GPIO_GUMSTIX_nPOE GPIO48_nPOE
++#define GPIO_GUMSTIX_nPWE GPIO49_nPWE
++#define GPIO_GUMSTIX_nPIOR GPIO50_nPIOR
++#define GPIO_GUMSTIX_nPIOW GPIO51_nPIOW
++#ifndef CONFIG_ARCH_GUMSTIX_VERDEX
++#define GPIO_GUMSTIX_nPCE_1 GPIO52_nPCE_1
++#define GPIO_GUMSTIX_nPCE_2 GPIO53_nPCE_2
++#define GPIO_GUMSTIX_pSKTSEL GPIO54_pSKTSEL
++#else
++#define GPIO_GUMSTIX_nPCE_1 GPIO102_nPCE_1
++#define GPIO_GUMSTIX_nPCE_2 GPIO105_nPCE_2
++#define GPIO_GUMSTIX_pSKTSEL GPIO79_pSKTSEL
++#endif
++#define GPIO_GUMSTIX_nPREG GPIO55_nPREG
++#define GPIO_GUMSTIX_nPWAIT GPIO56_nPWAIT
++#define GPIO_GUMSTIX_nIOIS16 GPIO57_nIOIS16
++
++#define GPIO_GUMSTIX_nPOE_MD GPIO48_nPOE_MD
++#define GPIO_GUMSTIX_nPWE_MD GPIO49_nPWE_MD
++#define GPIO_GUMSTIX_nPIOR_MD GPIO50_nPIOR_MD
++#define GPIO_GUMSTIX_nPIOW_MD GPIO51_nPIOW_MD
++#ifndef CONFIG_ARCH_GUMSTIX_VERDEX
++#define GPIO_GUMSTIX_nPCE_1_MD GPIO52_nPCE_1_MD
++#define GPIO_GUMSTIX_nPCE_2_MD GPIO53_nPCE_2_MD
++#define GPIO_GUMSTIX_pSKTSEL_MD GPIO54_pSKTSEL_MD
++#else
++#define GPIO_GUMSTIX_nPCE_1_MD GPIO102_nPCE_1_MD
++#define GPIO_GUMSTIX_nPCE_2_MD GPIO105_nPCE_2_MD
++#define GPIO_GUMSTIX_pSKTSEL_MD GPIO79_pSKTSEL_MD
++#endif
++#define GPIO_GUMSTIX_nPREG_MD GPIO55_nPREG_MD
++#define GPIO_GUMSTIX_nPWAIT_MD GPIO56_nPWAIT_MD
++#define GPIO_GUMSTIX_nIOIS16_MD GPIO57_nIOIS16_MD
++
++/* CF slot 0 */
++#define GPIO4_nBVD1_0 4
++#define GPIO4_nSTSCHG_0 GPIO4_nBVD1_0
++#define GPIO11_nCD_0 11
++#define GPIO26_PRDY_nBSY_0 26
++
++#define GPIO111_nBVD1_0 111
++#define GPIO111_nSTSCHG_0 GPIO111_nBVD1_0
++#define GPIO104_nCD_0 104
++#define GPIO96_PRDY_nBSY_0 96
++#define GPIO109_PRDY_nBSY_0 109
++
++#ifndef CONFIG_ARCH_GUMSTIX_VERDEX
++#define GPIO_GUMSTIX_nBVD1_0 GPIO4_nBVD1_0
++#define GPIO_GUMSTIX_nSTSCHG_0 GPIO4_nSTSCHG_0
++#define GPIO_GUMSTIX_nCD_0 GPIO11_nCD_0
++#define GPIO_GUMSTIX_PRDY_nBSY_0 GPIO26_PRDY_nBSY_0
++#else
++#define GPIO_GUMSTIX_nBVD1_0 GPIO111_nBVD1_0
++#define GPIO_GUMSTIX_nSTSCHG_0 GPIO111_nSTSCHG_0
++#define GPIO_GUMSTIX_nCD_0 GPIO104_nCD_0
++#define GPIO_GUMSTIX_PRDY_nBSY_0 GPIO96_PRDY_nBSY_0
++#endif
++#define GPIO_GUMSTIX_PRDY_nBSY_0_OLD GPIO109_PRDY_nBSY_0
++
++#define GUMSTIX_S0_nSTSCHG_IRQ IRQ_GPIO(GPIO_GUMSTIX_nSTSCHG_0)
++#define GUMSTIX_S0_nCD_IRQ IRQ_GPIO(GPIO_GUMSTIX_nCD_0)
++#define GUMSTIX_S0_PRDY_nBSY_IRQ IRQ_GPIO(GPIO_GUMSTIX_PRDY_nBSY_0)
++#define GUMSTIX_S0_PRDY_nBSY_OLD_IRQ IRQ_GPIO(GPIO_GUMSTIX_PRDY_nBSY_0_OLD)
++
++/* CF slot 1 */
++#define GPIO18_nBVD1_1 18
++#define GPIO18_nSTSCHG_1 GPIO18_nBVD1_1
++#define GPIO36_nCD_1 36
++#define GPIO27_PRDY_nBSY_1 27
++
++#define GPIO_GUMSTIX_nBVD1_1 GPIO18_nBVD1_1
++#define GPIO_GUMSTIX_nSTSCHG_1 GPIO18_nSTSCHG_1
++#define GPIO_GUMSTIX_nCD_1 GPIO36_nCD_1
++#define GPIO_GUMSTIX_PRDY_nBSY_1 GPIO27_PRDY_nBSY_1
++
++#define GUMSTIX_S1_nSTSCHG_IRQ IRQ_GPIO(GPIO_GUMSTIX_nSTSCHG_1)
++#define GUMSTIX_S1_nCD_IRQ IRQ_GPIO(GPIO_GUMSTIX_nCD_1)
++#define GUMSTIX_S1_PRDY_nBSY_IRQ IRQ_GPIO(GPIO_GUMSTIX_PRDY_nBSY_1)
++
++/* CF GPIO line modes */
++#define GPIO_GUMSTIX_CF_RESET_MD ( GPIO_GUMSTIX_CF_RESET | GPIO_OUT )
++#define GPIO_GUMSTIX_CF_OLD_RESET_MD ( GPIO_GUMSTIX_CF_OLD_RESET | GPIO_OUT )
++#define GPIO_GUMSTIX_nSTSCHG_0_MD ( GPIO_GUMSTIX_nSTSCHG_0 | GPIO_IN )
++#define GPIO_GUMSTIX_nCD_0_MD ( GPIO_GUMSTIX_nCD_0 | GPIO_IN )
++#define GPIO_GUMSTIX_PRDY_nBSY_0_MD ( GPIO_GUMSTIX_PRDY_nBSY_0 | GPIO_IN )
++#define GPIO_GUMSTIX_PRDY_nBSY_0_OLD_MD ( GPIO_GUMSTIX_PRDY_nBSY_0_OLD | GPIO_IN )
++#define GPIO_GUMSTIX_nSTSCHG_1_MD ( GPIO_GUMSTIX_nSTSCHG_1 | GPIO_IN )
++#define GPIO_GUMSTIX_nCD_1_MD ( GPIO_GUMSTIX_nCD_1 | GPIO_IN )
++#define GPIO_GUMSTIX_PRDY_nBSY_1_MD ( GPIO_GUMSTIX_PRDY_nBSY_1 | GPIO_IN )
diff --git a/packages/linux/gumstix-kernel-2.6.21/mach-types-fix.patch b/packages/linux/gumstix-kernel-2.6.21/mach-types-fix.patch
new file mode 100644
index 0000000000..550eb529ed
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/mach-types-fix.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.21gum/arch/arm/tools/mach-types
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/tools/mach-types
++++ linux-2.6.21gum/arch/arm/tools/mach-types
+@@ -387,7 +387,7 @@ s5c7375 ARCH_S5C7375 S5C7375 369
+ spearhead ARCH_SPEARHEAD SPEARHEAD 370
+ pantera ARCH_PANTERA PANTERA 371
+ prayoglite ARCH_PRAYOGLITE PRAYOGLITE 372
+-gumstix ARCH_GUMSTIK GUMSTIK 373
++gumstix ARCH_GUMSTIX GUMSTIX 373
+ rcube ARCH_RCUBE RCUBE 374
+ rea_olv ARCH_REA_OLV REA_OLV 375
+ pxa_iphone ARCH_PXA_IPHONE PXA_IPHONE 376
diff --git a/packages/linux/gumstix-kernel-2.6.21/misalignment-handling.patch b/packages/linux/gumstix-kernel-2.6.21/misalignment-handling.patch
new file mode 100644
index 0000000000..e6aefb997c
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/misalignment-handling.patch
@@ -0,0 +1,38 @@
+Change the default alingment handling to not be silent failure
+Index: linux-2.6.21gum/arch/arm/mm/alignment.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mm/alignment.c
++++ linux-2.6.21gum/arch/arm/mm/alignment.c
+@@ -797,6 +797,8 @@ static int __init alignment_init(void)
+ res->write_proc = proc_alignment_write;
+ #endif
+
++ ai_usermode = CONFIG_ALIGNMENT_HANDLING;
++
+ hook_fault_code(1, do_alignment, SIGILL, "alignment exception");
+ hook_fault_code(3, do_alignment, SIGILL, "alignment exception");
+
+Index: linux-2.6.21gum/arch/arm/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/Kconfig
++++ linux-2.6.21gum/arch/arm/Kconfig
+@@ -709,6 +709,19 @@ config ALIGNMENT_TRAP
+ correct operation of some network protocols. With an IP-only
+ configuration it is safe to say N, otherwise say Y.
+
++config ALIGNMENT_HANDLING
++ hex "Userspace alignment trap handling"
++ default "0x3"
++ depends on ALIGNMENT_TRAP
++ help
++ How should we handle alignment errors in userspace by default? This is a bitfield where:
++ 0 - silently ignore alignment errors (will lead to unexpected results)
++ 1 - report alignment errors through printk (will lead to unexpected results, but you'll know about them)
++ 2 - fix the alignment and make things work properly (performance degradation for un-aligned code)
++ 4 - raise SIGBUS on alignment traps
++ A good number to choose is probably either 3 (work slowly but log message) or 5 (log message and SIGBUS).
++ You can change the behavior at runtime through /proc/cpu/alignment if you have PROC_FS enabled.
++
+ endmenu
+
+ menu "Boot options"
diff --git a/packages/linux/gumstix-kernel-2.6.21/mmc-card-detect.patch b/packages/linux/gumstix-kernel-2.6.21/mmc-card-detect.patch
new file mode 100644
index 0000000000..26dd970e3b
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/mmc-card-detect.patch
@@ -0,0 +1,80 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/gumstix.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+@@ -29,19 +29,55 @@
+
+ #include "generic.h"
+
+-static int gumstix_mci_init(struct device *dev, irqreturn_t (*lubbock_detect_int)(int, void *, struct pt_regs *), void *data)
++static struct pxamci_platform_data gumstix_mci_platform_data;
++
++static int gumstix_mci_init(struct device *dev, irqreturn_t (*gumstix_detect_int)(int, void *, struct pt_regs *), void *data)
+ {
+- // Set up MMC controller
++ int err;
++
+ pxa_gpio_mode(GPIO6_MMCCLK_MD);
+ pxa_gpio_mode(GPIO53_MMCCLK_MD);
+ pxa_gpio_mode(GPIO8_MMCCS0_MD);
+
++ pxa_gpio_mode(GUMSTIX_GPIO_nSD_DETECT | GPIO_IN);
++ set_irq_type(GUMSTIX_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE);
++ pxa_gpio_mode(GUMSTIX_GPIO_nSD_WP | GPIO_IN);
++
++ gumstix_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(GUMSTIX_IRQ_GPIO_nSD_DETECT, gumstix_detect_int, SA_INTERRUPT,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "gumstix_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
++ return -1;
++ }
++
++ err = set_irq_type(GUMSTIX_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE);
++
+ return 0;
+ }
+
++static int gumstix_mci_get_ro(struct device *dev)
++{
++#ifdef CONFIG_ARCH_GUMSTIX_VERDEX
++ return 0; // microSD is always writable on verdex
++#else
++ int ro;
++ ro = GPLR(GUMSTIX_GPIO_nSD_WP) & GPIO_bit(GUMSTIX_GPIO_nSD_WP);
++ return ro;
++#endif
++}
++
++static void gumstix_mci_exit(struct device *dev, void *data)
++{
++ free_irq(GUMSTIX_IRQ_GPIO_nSD_DETECT, data);
++}
++
+ static struct pxamci_platform_data gumstix_mci_platform_data = {
+ .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
+- .init = &gumstix_mci_init,
++ .init = gumstix_mci_init,
++ .get_ro = gumstix_mci_get_ro,
++ .exit = gumstix_mci_exit,
+ };
+
+ static struct pxa2xx_udc_mach_info gumstix_udc_info __initdata = {
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/gumstix.h
+===================================================================
+--- linux-2.6.21gum.orig/include/asm-arm/arch-pxa/gumstix.h
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/gumstix.h
+@@ -36,6 +36,12 @@
+ #define GPIO_GUMSTIX_USB_GPIOx_CON_MD (GPIO_GUMSTIX_USB_GPIOx | GPIO_OUT)
+ #define GPIO_GUMSTIX_USB_GPIOx_DIS_MD (GPIO_GUMSTIX_USB_GPIOx | GPIO_IN)
+
++/*
++ * SD/MMC definitions
++ */
++#define GUMSTIX_GPIO_nSD_WP 22 /* SD Write Protect */
++#define GUMSTIX_GPIO_nSD_DETECT 11 /* MMC/SD Card Detect */
++#define GUMSTIX_IRQ_GPIO_nSD_DETECT IRQ_GPIO(GUMSTIX_GPIO_nSD_DETECT)
+
+ /*
+ * SMC Ethernet definitions
diff --git a/packages/linux/gumstix-kernel-2.6.21/modular-init-bluetooth.patch b/packages/linux/gumstix-kernel-2.6.21/modular-init-bluetooth.patch
new file mode 100644
index 0000000000..62fd919661
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/modular-init-bluetooth.patch
@@ -0,0 +1,108 @@
+Index: linux-2.6.21gum/net/bluetooth/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/net/bluetooth/Kconfig
++++ linux-2.6.21gum/net/bluetooth/Kconfig
+@@ -30,6 +30,12 @@ menuconfig BT
+ Bluetooth kernel modules are provided in the BlueZ packages.
+ For more information, see <http://www.bluez.org/>.
+
++config BT_GUMSTIX
++ tristate
++ default m if BT=m
++ default y if BT=y
++ depends on BT && ARCH_GUMSTIX
++
+ config BT_L2CAP
+ tristate "L2CAP protocol support"
+ depends on BT
+Index: linux-2.6.21gum/net/bluetooth/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/net/bluetooth/Makefile
++++ linux-2.6.21gum/net/bluetooth/Makefile
+@@ -9,5 +9,6 @@ obj-$(CONFIG_BT_RFCOMM) += rfcomm/
+ obj-$(CONFIG_BT_BNEP) += bnep/
+ obj-$(CONFIG_BT_CMTP) += cmtp/
+ obj-$(CONFIG_BT_HIDP) += hidp/
++obj-$(CONFIG_BT_GUMSTIX)+= gumstix_bluetooth.o
+
+ bluetooth-objs := af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o hci_sysfs.o lib.o
+Index: linux-2.6.21gum/net/bluetooth/af_bluetooth.c
+===================================================================
+--- linux-2.6.21gum.orig/net/bluetooth/af_bluetooth.c
++++ linux-2.6.21gum/net/bluetooth/af_bluetooth.c
+@@ -327,12 +327,20 @@ static struct net_proto_family bt_sock_f
+ .create = bt_sock_create,
+ };
+
++#ifdef CONFIG_ARCH_GUMSTIX
++extern void gumstix_bluetooth_load(void);
++#endif
++
+ static int __init bt_init(void)
+ {
+ int err;
+
+ BT_INFO("Core ver %s", VERSION);
+
++#ifdef CONFIG_ARCH_GUMSTIX
++ gumstix_bluetooth_load();
++#endif
++
+ err = bt_sysfs_init();
+ if (err < 0)
+ return err;
+Index: linux-2.6.21gum/net/bluetooth/gumstix_bluetooth.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/net/bluetooth/gumstix_bluetooth.c
+@@ -0,0 +1,50 @@
++/*
++ * Gumstix bluetooth module intialization driver
++ *
++ * Author: Craig Hughes
++ * Created: December 9, 2004
++ * Copyright: (C) 2004 Craig Hughes
++ *
++ * 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 <linux/module.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/delay.h>
++
++#include <asm/arch/gumstix.h>
++
++static void gumstix_bluetooth_load(void)
++{
++}
++
++EXPORT_SYMBOL(gumstix_bluetooth_load);
++
++int __init gumstix_bluetooth_init(void)
++{
++ /* Set up GPIOs to use the BTUART */
++ pxa_gpio_mode(GPIO42_HWRXD_MD);
++ pxa_gpio_mode(GPIO43_HWTXD_MD);
++ pxa_gpio_mode(GPIO44_HWCTS_MD);
++ pxa_gpio_mode(GPIO45_HWRTS_MD);
++
++ return 0;
++}
++
++void __exit gumstix_bluetooth_exit(void)
++{
++}
++
++module_init(gumstix_bluetooth_init);
++module_exit(gumstix_bluetooth_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Craig Hughes <craig@gumstix.com>");
++MODULE_DESCRIPTION("Gumstix board bluetooth module initialization driver");
++MODULE_VERSION("1:0.1");
diff --git a/packages/linux/gumstix-kernel-2.6.21/modular-init-smc91x.patch b/packages/linux/gumstix-kernel-2.6.21/modular-init-smc91x.patch
new file mode 100644
index 0000000000..98fdd4ca38
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/modular-init-smc91x.patch
@@ -0,0 +1,203 @@
+Index: linux-2.6.21gum/drivers/net/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/Kconfig
++++ linux-2.6.21gum/drivers/net/Kconfig
+@@ -836,6 +836,12 @@ config SMC91X
+ module, say M here and read <file:Documentation/modules.txt> as well
+ as <file:Documentation/networking/net-modules.txt>.
+
++config SMC91X_GUMSTIX
++ tristate
++ default m if SMC91X=m
++ default y if SMC91X=y
++ depends on SMC91X && ARCH_GUMSTIX
++
+ config SMC9194
+ tristate "SMC 9194 support"
+ depends on NET_VENDOR_SMC && (ISA || MAC && BROKEN)
+Index: linux-2.6.21gum/drivers/net/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/Makefile
++++ linux-2.6.21gum/drivers/net/Makefile
+@@ -200,6 +200,7 @@ obj-$(CONFIG_PASEMI_MAC) += pasemi_mac.o
+
+ obj-$(CONFIG_MACB) += macb.o
+
++obj-$(CONFIG_SMC91X_GUMSTIX) += gumstix-smc91x.o
+ obj-$(CONFIG_ARM) += arm/
+ obj-$(CONFIG_DEV_APPLETALK) += appletalk/
+ obj-$(CONFIG_TR) += tokenring/
+Index: linux-2.6.21gum/drivers/net/smc91x.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/smc91x.c
++++ linux-2.6.21gum/drivers/net/smc91x.c
+@@ -2373,6 +2373,10 @@ static struct platform_driver smc_driver
+ },
+ };
+
++#ifdef CONFIG_ARCH_GUMSTIX
++extern void gumstix_smc91x_load(void);
++#endif
++
+ static int __init smc_init(void)
+ {
+ #ifdef MODULE
+@@ -2384,6 +2388,10 @@ static int __init smc_init(void)
+ #endif
+ #endif
+
++#ifdef CONFIG_ARCH_GUMSTIX
++ gumstix_smc91x_load();
++#endif
++
+ return platform_driver_register(&smc_driver);
+ }
+
+Index: linux-2.6.21gum/drivers/net/gumstix-smc91x.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/net/gumstix-smc91x.c
+@@ -0,0 +1,143 @@
++/*
++ * Gumstix SMC91C111 chip intialization driver
++ *
++ * Author: Craig Hughes
++ * Created: December 9, 2004
++ * Copyright: (C) 2004 Craig Hughes
++ *
++ * 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 <linux/module.h>
++#include <linux/ioport.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/delay.h>
++
++#include <asm/arch/gumstix.h>
++
++#define SMC_DEBUG 0
++#include <asm/io.h>
++#include "smc91x.h"
++
++static struct resource gumstix_smc91x0_resources[] = {
++ [0] = {
++ .name = "smc91x-regs",
++ .start = PXA_CS1_PHYS + 0x00000300,
++ .end = PXA_CS1_PHYS + 0x000fffff,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = GUMSTIX_ETH0_IRQ,
++ .end = GUMSTIX_ETH0_IRQ,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct resource gumstix_smc91x1_resources[] = {
++ [0] = {
++ .name = "smc91x-regs",
++ .start = PXA_CS2_PHYS + 0x00000300,
++ .end = PXA_CS2_PHYS + 0x000fffff,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = GUMSTIX_ETH1_IRQ,
++ .end = GUMSTIX_ETH1_IRQ,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct platform_device gumstix_smc91x0_device = {
++ .name = "smc91x",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(gumstix_smc91x0_resources),
++ .resource = gumstix_smc91x0_resources,
++};
++
++static struct platform_device gumstix_smc91x1_device = {
++ .name = "smc91x",
++ .id = 1,
++ .num_resources = ARRAY_SIZE(gumstix_smc91x1_resources),
++ .resource = gumstix_smc91x1_resources,
++};
++
++static struct platform_device *smc91x_devices[] = {
++ &gumstix_smc91x0_device,
++ &gumstix_smc91x1_device,
++};
++
++/* First we're going to test if there's a 2nd SMC91C111, and if not, then we'll free up those resources and the GPIO lines
++ * that it would otherwise use. We have no choice but to probe by doing:
++ * Set nCS2 to CS2 mode
++ * Set the reset line to GPIO out mode, and pull it high, then drop it low (to trigger reset)
++ * Read from the memory space to check for the sentinel sequence identifying a likely SMC91C111 device
++ */
++int __init gumstix_smc91x_init(void)
++{
++ unsigned int val, num_devices=ARRAY_SIZE(smc91x_devices);
++ void *ioaddr;
++
++ /* Set up nPWE */
++ pxa_gpio_mode(GPIO49_nPWE_MD);
++
++ pxa_gpio_mode(GPIO78_nCS_2_MD);
++ // If either if statement fails, then we'll drop out and turn_off_eth1,
++ // if both succeed, then we'll skip that and just proceed with 2 cards
++ if(request_mem_region(gumstix_smc91x1_resources[0].start, SMC_IO_EXTENT, "smc91x probe"))
++ {
++ ioaddr = ioremap(gumstix_smc91x1_resources[0].start, SMC_IO_EXTENT);
++ val = ioread16(ioaddr + BANK_SELECT);
++ iounmap(ioaddr);
++ release_mem_region(gumstix_smc91x1_resources[0].start, SMC_IO_EXTENT);
++ if ((val & 0xFF00) == 0x3300) {
++ goto proceed;
++ }
++ }
++
++turn_off_eth1:
++ // This is apparently not an SMC91C111
++ // So, let's decrement the number of devices to request, and reset the GPIO lines to GPIO IN mode
++ num_devices--;
++ smc91x_devices[1] = NULL;
++ pxa_gpio_mode(78 | GPIO_IN);
++
++proceed:
++ pxa_gpio_mode(GPIO15_nCS_1_MD);
++
++ if(smc91x_devices[1]) pxa_gpio_mode(GPIO_GUMSTIX_ETH1_RST_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_ETH0_RST_MD);
++ if(smc91x_devices[1]) GPSR(GPIO_GUMSTIX_ETH1_RST) = GPIO_bit(GPIO_GUMSTIX_ETH1_RST);
++ GPSR(GPIO_GUMSTIX_ETH0_RST) = GPIO_bit(GPIO_GUMSTIX_ETH0_RST);
++ udelay(1); // Hold RESET for at least 100ns
++ if(smc91x_devices[1]) GPCR(GPIO_GUMSTIX_ETH1_RST) = GPIO_bit(GPIO_GUMSTIX_ETH1_RST);
++ GPCR(GPIO_GUMSTIX_ETH0_RST) = GPIO_bit(GPIO_GUMSTIX_ETH0_RST);
++ msleep(50);
++
++ return platform_add_devices(smc91x_devices, num_devices);
++}
++
++void __exit gumstix_smc91x_exit(void)
++{
++ if(smc91x_devices[1] != NULL) platform_device_unregister(&gumstix_smc91x1_device);
++ platform_device_unregister(&gumstix_smc91x0_device);
++}
++
++void gumstix_smc91x_load(void) {}
++EXPORT_SYMBOL(gumstix_smc91x_load);
++
++module_init(gumstix_smc91x_init);
++module_exit(gumstix_smc91x_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Craig Hughes <craig@gumstix.com>");
++MODULE_DESCRIPTION("Gumstix board SMC91C111 chip initialization driver");
++MODULE_VERSION("1:0.1");
diff --git a/packages/linux/gumstix-kernel-2.6.21/modular-init-usb-gadget.patch b/packages/linux/gumstix-kernel-2.6.21/modular-init-usb-gadget.patch
new file mode 100644
index 0000000000..e3ee0d6a7d
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/modular-init-usb-gadget.patch
@@ -0,0 +1,106 @@
+Index: linux-2.6.21gum/drivers/usb/gadget/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/Kconfig
++++ linux-2.6.21gum/drivers/usb/gadget/Kconfig
+@@ -56,6 +56,14 @@ config USB_GADGET_DEBUG_FILES
+ config USB_GADGET_SELECTED
+ boolean
+
++config USB_GADGET_GUMSTIX
++ tristate
++ default m if USB_GADGET=m
++ default y if USB_GADGET=y
++ depends on USB_GADGET && ARCH_GUMSTIX
++ help
++ USB Gadget support for the Gumstix platform
++
+ #
+ # USB Peripheral Controller Support
+ #
+Index: linux-2.6.21gum/drivers/usb/gadget/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/Makefile
++++ linux-2.6.21gum/drivers/usb/gadget/Makefile
+@@ -8,6 +8,7 @@ obj-$(CONFIG_USB_GOKU) += goku_udc.o
+ obj-$(CONFIG_USB_OMAP) += omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
+ obj-$(CONFIG_USB_AT91) += at91_udc.o
++obj-$(CONFIG_USB_GADGET_GUMSTIX) += gumstix_gadget.o
+
+ #
+ # USB gadget drivers
+Index: linux-2.6.21gum/drivers/usb/gadget/pxa2xx_udc.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/pxa2xx_udc.c
++++ linux-2.6.21gum/drivers/usb/gadget/pxa2xx_udc.c
+@@ -2752,8 +2752,16 @@ static struct platform_driver udc_driver
+ },
+ };
+
++#ifdef CONFIG_ARCH_GUMSTIX
++extern void gumstix_usb_gadget_load(void);
++#endif
++
+ static int __init udc_init(void)
+ {
++#ifdef CONFIG_ARCH_GUMSTIX
++ gumstix_usb_gadget_load();
++#endif
++
+ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
+ return platform_driver_register(&udc_driver);
+ }
+Index: linux-2.6.21gum/drivers/usb/gadget/gumstix_gadget.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/usb/gadget/gumstix_gadget.c
+@@ -0,0 +1,49 @@
++/*
++ * Gumstix USB gadget intialization driver
++ *
++ * Author: Craig Hughes
++ * Created: December 9, 2004
++ * Copyright: (C) 2004 Craig Hughes
++ *
++ * 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 <linux/module.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/delay.h>
++#include <asm/irq.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/gumstix.h>
++#include <asm/arch/udc.h>
++
++int __init gumstix_usb_gadget_init(void)
++{
++ pxa_gpio_mode(GPIO_GUMSTIX_USB_GPIOx_DIS_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_USB_GPIOn_MD);
++
++ set_irq_type(GUMSTIX_USB_INTR_IRQ, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++void __exit gumstix_usb_gadget_exit(void)
++{
++}
++
++void gumstix_usb_gadget_load(void) {}
++EXPORT_SYMBOL(gumstix_usb_gadget_load);
++
++module_init(gumstix_usb_gadget_init);
++module_exit(gumstix_usb_gadget_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Craig Hughes <craig@gumstix.com>");
++MODULE_DESCRIPTION("Gumstix board USB gadget initialization driver");
++MODULE_VERSION("1:0.1");
diff --git a/packages/linux/gumstix-kernel-2.6.21/pcm-gcc-411-bugfix.patch b/packages/linux/gumstix-kernel-2.6.21/pcm-gcc-411-bugfix.patch
new file mode 100644
index 0000000000..50a26cbdf5
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/pcm-gcc-411-bugfix.patch
@@ -0,0 +1,60 @@
+Index: linux-2.6.21gum/include/sound/pcm_params.h
+===================================================================
+--- linux-2.6.21gum.orig/include/sound/pcm_params.h
++++ linux-2.6.21gum/include/sound/pcm_params.h
+@@ -179,16 +179,8 @@ static inline int snd_mask_single(const
+ return 1;
+ }
+
+-static inline int snd_mask_refine(struct snd_mask *mask,
+- const struct snd_mask *v)
+-{
+- struct snd_mask old;
+- snd_mask_copy(&old, mask);
+- snd_mask_intersect(mask, v);
+- if (snd_mask_empty(mask))
+- return -EINVAL;
+- return !snd_mask_eq(mask, &old);
+-}
++void snd_mask_print( const struct snd_mask *m1, const struct snd_mask *m2 );
++int snd_mask_refine(struct snd_mask *mask, const struct snd_mask *v);
+
+ static inline int snd_mask_refine_first(struct snd_mask *mask)
+ {
+Index: linux-2.6.21gum/sound/core/pcm_lib.c
+===================================================================
+--- linux-2.6.21gum.orig/sound/core/pcm_lib.c
++++ linux-2.6.21gum/sound/core/pcm_lib.c
+@@ -2128,3 +2128,18 @@ snd_pcm_sframes_t snd_pcm_lib_readv(stru
+ }
+
+ EXPORT_SYMBOL(snd_pcm_lib_readv);
++
++int snd_mask_refine(struct snd_mask *mask,
++ const struct snd_mask *v)
++{
++ struct snd_mask old;
++ snd_mask_copy(&old, mask);
++ snd_mask_print(mask, v);
++ snd_mask_intersect(mask, v);
++ snd_mask_print(mask, v);
++ if (snd_mask_empty(mask))
++ return -EINVAL;
++ return !snd_mask_eq(mask, &old);
++}
++
++EXPORT_SYMBOL(snd_mask_refine);
+Index: linux-2.6.21gum/sound/core/pcm_native.c
+===================================================================
+--- linux-2.6.21gum.orig/sound/core/pcm_native.c
++++ linux-2.6.21gum/sound/core/pcm_native.c
+@@ -3450,3 +3450,9 @@ const struct file_operations snd_pcm_f_o
+ .fasync = snd_pcm_fasync,
+ }
+ };
++
++void snd_mask_print( const struct snd_mask *m1, const struct snd_mask *m2 )
++{
++// printk( "0x%08x %08x v: 0x%08x %08x\n", m1->bits[1], m1->bits[0], m2->bits[1], m2->bits[0] );
++}
++
diff --git a/packages/linux/gumstix-kernel-2.6.21/proc-gpio.patch b/packages/linux/gumstix-kernel-2.6.21/proc-gpio.patch
new file mode 100644
index 0000000000..51c5c7242b
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/proc-gpio.patch
@@ -0,0 +1,348 @@
+Index: linux-2.6.21gum/arch/arm/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/Kconfig
++++ linux-2.6.21gum/arch/arm/Kconfig
+@@ -505,6 +505,8 @@ config PCI_HOST_VIA82C505
+ depends on PCI && ARCH_SHARK
+ default y
+
++source "drivers/gpio/Kconfig"
++
+ source "drivers/pci/Kconfig"
+
+ source "drivers/pcmcia/Kconfig"
+Index: linux-2.6.21gum/drivers/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/Makefile
++++ linux-2.6.21gum/drivers/Makefile
+@@ -81,3 +81,4 @@ obj-$(CONFIG_GENERIC_TIME) += clocksourc
+ obj-$(CONFIG_DMA_ENGINE) += dma/
+ obj-$(CONFIG_HID) += hid/
+ obj-$(CONFIG_PPC_PS3) += ps3/
++obj-$(CONFIG_PROC_GPIO) += gpio/
+Index: linux-2.6.21gum/drivers/gpio/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/gpio/Kconfig
+@@ -0,0 +1,12 @@
++config PROC_GPIO
++ tristate "GPIO /proc interface"
++ depends on PXA25x || PXA27x
++ help
++ This enables an interface under /proc/gpio which allows reading or setting
++ of any GPIO, and also changing the GPIO alt function mode of any line.
++
++config PROC_GPIO_DEBUG
++ boolean "Enable /proc/gpio debug logging"
++ depends on PROC_GPIO
++ help
++ This enables printk logging of activity done through /proc/gpio
+Index: linux-2.6.21gum/drivers/gpio/Makefile
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/gpio/Makefile
+@@ -0,0 +1,3 @@
++# Expose GPIOs under /proc
++obj-$(CONFIG_PROC_GPIO) += proc_gpio.o
++
+Index: linux-2.6.21gum/drivers/gpio/proc_gpio.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/gpio/proc_gpio.c
+@@ -0,0 +1,296 @@
++/*
++ *
++ * PXA25x GPIOs exposed under /proc for reading and writing
++ * They will show up under /proc/gpio/NN
++ *
++ * Based on patch 1773/1 in the arm kernel patch repository at arm.linux.co.uk
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/proc_fs.h>
++#include <linux/string.h>
++#include <linux/ctype.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/uaccess.h>
++
++static struct proc_dir_entry *proc_gpio_parent;
++static struct proc_dir_entry *proc_gpios[PXA_LAST_GPIO + 1];
++
++typedef struct
++{
++ int gpio;
++ char name[32];
++} gpio_summary_type;
++
++static gpio_summary_type gpio_summaries[PXA_LAST_GPIO + 1];
++
++static int proc_gpio_write(struct file *file, const char __user *buf,
++ unsigned long count, void *data)
++{
++ char *cur, lbuf[count + 1];
++ gpio_summary_type *summary = data;
++ u32 altfn, direction, setclear, gafr;
++
++ if (!capable(CAP_SYS_ADMIN))
++ return -EACCES;
++
++ memset(lbuf, 0, count + 1);
++
++ if (copy_from_user(lbuf, buf, count))
++ return -EFAULT;
++
++ cur = lbuf;
++
++ // Initialize to current state
++ altfn = ((GAFR(summary->gpio) >> ((summary->gpio & 0x0f) << 0x01)) & 0x03);
++ direction = GPDR(summary->gpio) & GPIO_bit(summary->gpio);
++ setclear = GPLR(summary->gpio) & GPIO_bit(summary->gpio);
++ while(1)
++ {
++ // We accept options: {GPIO|AF1|AF2|AF3}, {set|clear}, {in|out}
++ // Anything else is an error
++ while(cur[0] && (isspace(cur[0]) || ispunct(cur[0]))) cur = &(cur[1]);
++
++ if('\0' == cur[0]) break;
++
++ // Ok, so now we're pointing at the start of something
++ switch(cur[0])
++ {
++ case 'G':
++ // Check that next is "PIO" -- '\0' will cause safe short-circuit if end of buf
++ if(!(cur[1] == 'P' && cur[2] == 'I' && cur[3] == 'O')) goto parse_error;
++ // Ok, so set this GPIO to GPIO (non-ALT) function
++ altfn = 0;
++ cur = &(cur[4]);
++ break;
++ case 'A':
++ if(!(cur[1] == 'F' && cur[2] >= '1' && cur[2] <= '3')) goto parse_error;
++ altfn = cur[2] - '0';
++ cur = &(cur[3]);
++ break;
++ case 's':
++ if(!(cur[1] == 'e' && cur[2] == 't')) goto parse_error;
++ setclear = 1;
++ cur = &(cur[3]);
++ break;
++ case 'c':
++ if(!(cur[1] == 'l' && cur[2] == 'e' && cur[3] == 'a' && cur[4] == 'r')) goto parse_error;
++ setclear = 0;
++ cur = &(cur[5]);
++ break;
++ case 'i':
++ if(!(cur[1] == 'n')) goto parse_error;
++ direction = 0;
++ cur = &(cur[2]);
++ break;
++ case 'o':
++ if(!(cur[1] == 'u' && cur[2] == 't')) goto parse_error;
++ direction = 1;
++ cur = &(cur[3]);
++ break;
++ default: goto parse_error;
++ }
++ }
++ // Ok, now set gpio mode and value
++ if(direction)
++ GPDR(summary->gpio) |= GPIO_bit(summary->gpio);
++ else
++ GPDR(summary->gpio) &= ~GPIO_bit(summary->gpio);
++
++ gafr = GAFR(summary->gpio) & ~(0x3 << (((summary->gpio) & 0xf)*2));
++ GAFR(summary->gpio) = gafr | (altfn << (((summary->gpio) & 0xf)*2));
++
++ if(direction && !altfn)
++ {
++ if(setclear) GPSR(summary->gpio) = GPIO_bit(summary->gpio);
++ else GPCR(summary->gpio) = GPIO_bit(summary->gpio);
++ }
++
++#ifdef CONFIG_PROC_GPIO_DEBUG
++ printk(KERN_INFO "Set (%s,%s,%s) via /proc/gpio/%s\n",altfn ? (altfn == 1 ? "AF1" : (altfn == 2 ? "AF2" : "AF3")) : "GPIO",
++ direction ? "out" : "in",
++ setclear ? "set" : "clear",
++ summary->name);
++#endif
++
++ return count;
++
++parse_error:
++ printk(KERN_CRIT "Parse error: Expect \"[GPIO|AF1|AF2|AF3]|[set|clear]|[in|out] ...\"\n");
++ return -EINVAL;
++}
++
++static int proc_gpio_read(char *page, char **start, off_t off,
++ int count, int *eof, void *data)
++{
++ char *p = page;
++ gpio_summary_type *summary = data;
++ int len, i, af;
++ i = summary->gpio;
++
++ p += sprintf(p, "%d\t%s\t%s\t%s\n", i,
++ (af = ((GAFR(i) >> ((i & 0x0f) << 0x01)) & 0x03)) ? (af == 1 ? "AF1" : (af == 2 ? "AF2" : "AF3")) : "GPIO",
++ (GPDR(i) & GPIO_bit(i)) ? "out" : "in",
++ (GPLR(i) & GPIO_bit(i)) ? "set" : "clear");
++
++ len = (p - page) - off;
++
++ if(len < 0)
++ {
++ len = 0;
++ }
++
++ *eof = (len <= count) ? 1 : 0;
++ *start = page + off;
++
++ return len;
++}
++
++
++#ifdef CONFIG_PXA25x
++static const char const *GAFR_DESC[] = { "GAFR0_L", "GAFR0_U", "GAFR1_L", "GAFR1_U", "GAFR2_L", "GAFR2_U" };
++#elif defined(CONFIG_PXA27x)
++static const char const *GAFR_DESC[] = { "GAFR0_L", "GAFR0_U", "GAFR1_L", "GAFR1_U", "GAFR2_L", "GAFR2_U", "GAFR3_L", "GAFR3_U" };
++#endif
++
++static int proc_gafr_read(char *page, char **start, off_t off,
++ int count, int *eof, void *data)
++{
++ char *p = page;
++ int i, len;
++
++ for(i=0; i<ARRAY_SIZE(GAFR_DESC); i++)
++ {
++ p += sprintf(p, "%s: %08x\n", GAFR_DESC[i], GAFR(i*16));
++ }
++
++ len = (p - page) - off;
++
++ if(len < 0)
++ {
++ len = 0;
++ }
++
++ *eof = (len <= count) ? 1 : 0;
++ *start = page + off;
++
++ return len;
++}
++
++static int proc_gpdr_read(char *page, char **start, off_t off,
++ int count, int *eof, void *data)
++{
++ char *p = page;
++ int i, len;
++
++ for(i=0; i<=2; i++)
++ {
++ p += sprintf(p, "GPDR%d: %08x\n", i, GPDR(i * 32));
++ }
++
++ len = (p - page) - off;
++
++ if(len < 0)
++ {
++ len = 0;
++ }
++
++ *eof = (len <= count) ? 1 : 0;
++ *start = page + off;
++
++ return len;
++}
++
++static int proc_gplr_read(char *page, char **start, off_t off,
++ int count, int *eof, void *data)
++{
++ char *p = page;
++ int i, len;
++
++ for(i=0; i<=2; i++)
++ {
++ p += sprintf(p, "GPLR%d: %08x\n", i, GPLR(i * 32));
++ }
++
++ len = (p - page) - off;
++
++ if(len < 0)
++ {
++ len = 0;
++ }
++
++ *eof = (len <= count) ? 1 : 0;
++ *start = page + off;
++
++ return len;
++}
++
++static int __init gpio_init(void)
++{
++ int i;
++
++ proc_gpio_parent = NULL;
++ for (proc_gpio_parent = proc_root.subdir; proc_gpio_parent; proc_gpio_parent = proc_gpio_parent->next) {
++ if (( proc_gpio_parent->namelen == 4 ) && ( memcmp(proc_gpio_parent->name, "gpio", 4 ) == 0 ))
++ break;
++ }
++
++ // proc_gpio_parent will be non-NULL if the directory already exists
++
++ if (!proc_gpio_parent) {
++ proc_gpio_parent = proc_gpio_parent = create_proc_entry("gpio", S_IFDIR | S_IRUGO | S_IXUGO, NULL);
++ }
++
++ if(!proc_gpio_parent) return 0;
++
++ for(i=0; i < (PXA_LAST_GPIO+1); i++)
++ {
++ gpio_summaries[i].gpio = i;
++ sprintf(gpio_summaries[i].name, "GPIO%d", i);
++ proc_gpios[i] = create_proc_entry(gpio_summaries[i].name, 0644, proc_gpio_parent);
++ if(proc_gpios[i])
++ {
++ proc_gpios[i]->data = &gpio_summaries[i];
++ proc_gpios[i]->read_proc = proc_gpio_read;
++ proc_gpios[i]->write_proc = proc_gpio_write;
++ }
++ }
++
++ create_proc_read_entry("GAFR", 0444, proc_gpio_parent, proc_gafr_read, NULL);
++ create_proc_read_entry("GPDR", 0444, proc_gpio_parent, proc_gpdr_read, NULL);
++ create_proc_read_entry("GPLR", 0444, proc_gpio_parent, proc_gplr_read, NULL);
++
++ return 0;
++}
++
++static void gpio_exit(void)
++{
++ int i;
++
++ remove_proc_entry("GAFR", proc_gpio_parent);
++ remove_proc_entry("GPDR", proc_gpio_parent);
++ remove_proc_entry("GPLR", proc_gpio_parent);
++
++ for(i=0; i < (PXA_LAST_GPIO+1); i++)
++ {
++ if(proc_gpios[i]) remove_proc_entry(gpio_summaries[i].name, proc_gpio_parent);
++ }
++
++ if (proc_gpio_parent)
++ {
++ if (!proc_gpio_parent->subdir)
++ {
++ // Only remove /proc/gpio if it's empty.
++ remove_proc_entry( "gpio", NULL );
++ }
++ }
++
++}
++
++module_init(gpio_init);
++module_exit(gpio_exit);
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/gumstix-kernel-2.6.21/pxa-regs-additions.patch b/packages/linux/gumstix-kernel-2.6.21/pxa-regs-additions.patch
new file mode 100644
index 0000000000..3d32a188bb
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/pxa-regs-additions.patch
@@ -0,0 +1,28 @@
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.21gum.orig/include/asm-arm/arch-pxa/pxa-regs.h
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -1316,6 +1316,7 @@
+ #define GPIO77_LCD_ACBIAS 77 /* LCD AC Bias */
+ #define GPIO78_nCS_2 78 /* chip select 2 */
+ #define GPIO79_nCS_3 79 /* chip select 3 */
++#define GPIO79_pSKTSEL 79 /* Socket Select for Card Space (PXA27x) */
+ #define GPIO80_nCS_4 80 /* chip select 4 */
+ #define GPIO81_NSCLK 81 /* NSSP clock */
+ #define GPIO82_NSFRM 82 /* NSSP Frame */
+@@ -1324,6 +1325,7 @@
+ #define GPIO85_nPCE_1 85 /* Card Enable for Card Space (PXA27x) */
+ #define GPIO92_MMCDAT0 92 /* MMC DAT0 (PXA27x) */
+ #define GPIO102_nPCE_1 102 /* PCMCIA (PXA27x) */
++#define GPIO105_nPCE_2 105 /* Card Enable for Card Space (PXA27x) */
+ #define GPIO109_MMCDAT1 109 /* MMC DAT1 (PXA27x) */
+ #define GPIO110_MMCDAT2 110 /* MMC DAT2 (PXA27x) */
+ #define GPIO110_MMCCS0 110 /* MMC Chip Select 0 (PXA27x) */
+@@ -1468,6 +1470,7 @@
+ #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT)
+ #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT)
+ #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT)
++#define GPIO105_nPCE_2_MD (105 | GPIO_ALT_FN_1_OUT)
+ #define GPIO109_MMCDAT1_MD (109 | GPIO_ALT_FN_1_OUT)
+ #define GPIO110_MMCDAT2_MD (110 | GPIO_ALT_FN_1_OUT)
+ #define GPIO110_MMCCS0_MD (110 | GPIO_ALT_FN_1_OUT)
diff --git a/packages/linux/gumstix-kernel-2.6.21/pxa-regs-fixup.patch b/packages/linux/gumstix-kernel-2.6.21/pxa-regs-fixup.patch
new file mode 100644
index 0000000000..6ab30c0e41
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/pxa-regs-fixup.patch
@@ -0,0 +1,12 @@
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/udc.h
+===================================================================
+--- linux-2.6.21gum.orig/include/asm-arm/arch-pxa/udc.h
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/udc.h
+@@ -5,6 +5,7 @@
+ * USB Device Controller (UDC) is wired.
+ *
+ */
++#include <asm/arch/pxa-regs.h>
+ #include <asm/mach/udc_pxa2xx.h>
+
+ extern void pxa_set_udc_info(struct pxa2xx_udc_mach_info *info);
diff --git a/packages/linux/gumstix-kernel-2.6.21/pxa2xx_udc.patch b/packages/linux/gumstix-kernel-2.6.21/pxa2xx_udc.patch
new file mode 100644
index 0000000000..4489e701bf
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/pxa2xx_udc.patch
@@ -0,0 +1,65 @@
+Index: linux-2.6.21gum/drivers/usb/gadget/pxa2xx_udc.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/pxa2xx_udc.c
++++ linux-2.6.21gum/drivers/usb/gadget/pxa2xx_udc.c
+@@ -51,6 +51,7 @@
+ #include <asm/mach-types.h>
+ #include <asm/unaligned.h>
+ #include <asm/hardware.h>
++#include <asm/mach/irq.h>
+ #ifdef CONFIG_ARCH_PXA
+ #include <asm/arch/pxa-regs.h>
+ #endif
+@@ -101,6 +102,10 @@ static const char ep0name [] = "ep0";
+
+ #endif
+
++#ifdef CONFIG_ARCH_GUMSTIX
++#undef CONFIG_USB_PXA2XX_SMALL
++#endif
++
+ #include "pxa2xx_udc.h"
+
+
+@@ -2541,6 +2546,41 @@ static int __init pxa2xx_udc_probe(struc
+ }
+ #endif
+
++ /* Reset UDCCS register to be able to recover from whatever
++ * state UDC was previously in. */
++ *dev->ep[ 2].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
++#ifndef CONFIG_USB_PXA2XX_SMALL
++ *dev->ep[ 7].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
++ *dev->ep[12].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
++#endif
++
++ *dev->ep[ 1].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
++ UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
++#ifndef CONFIG_USB_PXA2XX_SMALL
++ *dev->ep[ 6].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
++ UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
++ *dev->ep[11].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
++ UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
++
++ *dev->ep[ 3].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
++ UDCCS_II_TUR | UDCCS_II_TSP;
++ *dev->ep[ 8].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
++ UDCCS_II_TUR | UDCCS_II_TSP;
++ *dev->ep[13].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
++ UDCCS_II_TUR | UDCCS_II_TSP;
++
++ *dev->ep[ 4].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
++ *dev->ep[ 9].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
++ *dev->ep[11].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
++
++ *dev->ep[ 5].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
++ UDCCS_INT_TUR | UDCCS_INT_SST;
++ *dev->ep[10].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
++ UDCCS_INT_TUR | UDCCS_INT_SST;
++ *dev->ep[15].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
++ UDCCS_INT_TUR | UDCCS_INT_SST;
++#endif
++
+ /* other non-static parts of init */
+ dev->dev = &pdev->dev;
+ dev->mach = pdev->dev.platform_data;
diff --git a/packages/linux/gumstix-kernel-2.6.21/pxafb-18bpp-mode.patch b/packages/linux/gumstix-kernel-2.6.21/pxafb-18bpp-mode.patch
new file mode 100644
index 0000000000..e39564bdb5
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/pxafb-18bpp-mode.patch
@@ -0,0 +1,433 @@
+Index: linux-2.6.21gum/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/pxafb.c
++++ linux-2.6.21gum/drivers/video/pxafb.c
+@@ -191,6 +191,10 @@ static int pxafb_bpp_to_lccr3(struct fb_
+ case 4: ret = LCCR3_4BPP; break;
+ case 8: ret = LCCR3_8BPP; break;
+ case 16: ret = LCCR3_16BPP; break;
++ case 18: ret = (var->nonstd == 24 ? LCCR3_18BPP_PACKED : LCCR3_18BPP); break;
++ case 19: ret = (var->nonstd == 24 ? LCCR3_19BPP_PACKED : LCCR3_19BPP); break;
++ case 24: ret = LCCR3_24BPP; break;
++ case 25: ret = LCCR3_25BPP; break;
+ }
+ return ret;
+ }
+@@ -204,11 +208,12 @@ static int pxafb_bpp_to_lccr3(struct fb_
+ */
+ static unsigned int pxafb_display_dma_period(struct fb_var_screeninfo *var)
+ {
+- /*
+- * Period = pixclock * bits_per_byte * bytes_per_transfer
+- * / memory_bits_per_pixel;
+- */
+- return var->pixclock * 8 * 16 / var->bits_per_pixel;
++ /*
++ * Period = pixclock * bits_per_byte * bytes_per_transfer
++ * / memory_bits_per_pixel;
++ */
++ struct pxafb_mach_info *inf = fbi->dev->platform_data;
++ return var->pixclock * 8 * 16 / (var->nonstd ? var->nonstd : var->bits_per_pixel);
+ }
+
+ extern unsigned int get_clk_frequency_khz(int info);
+@@ -307,6 +312,26 @@ static int pxafb_check_var(struct fb_var
+ var->green.offset = 5; var->green.length = 6;
+ var->blue.offset = 0; var->blue.length = 5;
+ var->transp.offset = var->transp.length = 0;
++ } else if (var->bits_per_pixel == 18) {
++ var->transp.offset = var->transp.length = 0;
++ var->red.offset = 12; var->red.length=6;
++ var->green.offset = 6; var->green.length=6;
++ var->blue.offset = 0; var->blue.length=6;
++ } else if (var->bits_per_pixel == 19) {
++ var->transp.offset = 18; var->transp.length = 1;
++ var->red.offset = 12; var->red.length=6;
++ var->green.offset = 6; var->green.length=6;
++ var->blue.offset = 0; var->blue.length=6;
++ } else if (var->bits_per_pixel == 24) {
++ var->transp.offset = var->transp.length = 0;
++ var->red.offset = 16; var->red.length=8;
++ var->green.offset = 8; var->green.length=8;
++ var->blue.offset = 0; var->blue.length=8;
++ } else if (var->bits_per_pixel == 25) {
++ var->transp.offset = 18; var->transp.length = 1;
++ var->red.offset = 16; var->red.length=8;
++ var->green.offset = 8; var->green.length=8;
++ var->blue.offset = 0; var->blue.length=8;
+ } else {
+ var->red.offset = var->green.offset = var->blue.offset = var->transp.offset = 0;
+ var->red.length = 8;
+@@ -342,7 +367,7 @@ static int pxafb_set_par(struct fb_info
+
+ pr_debug("pxafb: set_par\n");
+
+- if (var->bits_per_pixel == 16)
++ if (var->bits_per_pixel >= 16)
+ fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR;
+ else if (!fbi->cmap_static)
+ fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;
+@@ -355,9 +380,10 @@ static int pxafb_set_par(struct fb_info
+ fbi->fb.fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR;
+ }
+
+- fbi->fb.fix.line_length = var->xres_virtual *
+- var->bits_per_pixel / 8;
+- if (var->bits_per_pixel == 16)
++ fbi->fb.fix.line_length = var->xres_virtual *
++ (var->nonstd ? var->nonstd : var->bits_per_pixel) / 8;
++
++ if (var->bits_per_pixel >= 16)
+ fbi->palette_size = 0;
+ else
+ fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
+@@ -374,7 +400,7 @@ static int pxafb_set_par(struct fb_info
+ */
+ pxafb_set_truecolor(fbi->fb.fix.visual == FB_VISUAL_TRUECOLOR);
+
+- if (fbi->fb.var.bits_per_pixel == 16)
++ if (fbi->fb.var.bits_per_pixel >= 16)
+ fb_dealloc_cmap(&fbi->fb.cmap);
+ else
+ fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0);
+@@ -584,6 +610,14 @@ static int pxafb_activate_var(struct fb_
+ case 8:
+ case 16:
+ break;
++ case 18:
++ case 19:
++ case 24:
++ case 25:
++ if(var->nonstd) break;
++ printk(KERN_ERR "%s: must specify nonstd when bit depth==%d\n",
++ fbi->fb.fix.id, var->bits_per_pixel);
++ break;
+ default:
+ printk(KERN_ERR "%s: invalid bit depth %d\n",
+ fbi->fb.fix.id, var->bits_per_pixel);
+@@ -679,7 +713,7 @@ static int pxafb_activate_var(struct fb_
+ fbi->dmadesc_palette_cpu->fidr = 0;
+ fbi->dmadesc_palette_cpu->ldcmd = (fbi->palette_size * 2) | LDCMD_PAL;
+
+- if (var->bits_per_pixel == 16) {
++ if (var->bits_per_pixel >= 16) {
+ /* palette shouldn't be loaded in true-color mode */
+ fbi->dmadesc_fbhigh_cpu->fdadr = fbi->dmadesc_fbhigh_dma;
+ fbi->fdadr0 = fbi->dmadesc_fbhigh_dma; /* no pal just fbhigh */
+@@ -785,8 +819,19 @@ static void pxafb_setup_gpio(struct pxaf
+ return;
+ }
+
+- for (gpio = 58; ldd_bits; gpio++, ldd_bits--)
++ for (gpio = 58; min(ldd_bits,16); gpio++, ldd_bits--)
+ pxa_gpio_mode(gpio | GPIO_ALT_FN_2_OUT);
++
++ switch(fbi->fb.var.bits_per_pixel)
++ {
++ case 25:
++ case 24:
++ case 19:
++ case 18:
++ pxa_gpio_mode(GPIO86_LDD_16_MD);
++ pxa_gpio_mode(GPIO87_LDD_17_MD);
++ default: break;
++ }
+ pxa_gpio_mode(GPIO74_LCD_FCLK_MD);
+ pxa_gpio_mode(GPIO75_LCD_LCLK_MD);
+ pxa_gpio_mode(GPIO76_LCD_PCLK_MD);
+@@ -1135,7 +1180,7 @@ static struct pxafb_info * __init pxafb_
+ fbi->fb.fix.ywrapstep = 0;
+ fbi->fb.fix.accel = FB_ACCEL_NONE;
+
+- fbi->fb.var.nonstd = 0;
++ fbi->fb.var.nonstd = mode->nonstd;
+ fbi->fb.var.activate = FB_ACTIVATE_NOW;
+ fbi->fb.var.height = -1;
+ fbi->fb.var.width = -1;
+@@ -1161,7 +1206,7 @@ static struct pxafb_info * __init pxafb_
+ fbi->task_state = (u_char)-1;
+
+ for (i = 0; i < inf->num_modes; i++) {
+- smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8;
++ smemlen = mode[i].xres * mode[i].yres * (mode[i].nonstd ? mode[i].nonstd : mode[i].bpp) / 8;
+ if (smemlen > fbi->fb.fix.smem_len)
+ fbi->fb.fix.smem_len = smemlen;
+ }
+@@ -1189,12 +1234,19 @@ static int __init pxafb_parse_options(st
+ if (!strncmp(this_opt, "mode:", 5)) {
+ const char *name = this_opt+5;
+ unsigned int namelen = strlen(name);
+- int res_specified = 0, bpp_specified = 0;
+- unsigned int xres = 0, yres = 0, bpp = 0;
++ int res_specified = 0, bpp_specified = 0, nonstd_specified = 0;
++ unsigned int xres = 0, yres = 0, bpp = 0, nonstd = 0;
+ int yres_specified = 0;
+ int i;
+ for (i = namelen-1; i >= 0; i--) {
+ switch (name[i]) {
++ case '/':
++ if (!nonstd_specified) {
++ nonstd = simple_strtoul(&name[i+1], NULL, 0);
++ nonstd_specified = 1;
++ } else
++ goto done;
++ break;
+ case '-':
+ namelen = i;
+ if (!bpp_specified && !yres_specified) {
+@@ -1227,12 +1279,29 @@ static int __init pxafb_parse_options(st
+ }
+ if (bpp_specified)
+ switch (bpp) {
++ case 18:
++ case 19:
++ case 24:
++ case 25:
++ if(nonstd_specified && (((bpp == 18 || bpp == 19) && nonstd == 24) || nonstd == 32))
++ {
++ inf->modes[0].nonstd = nonstd;
++ dev_info(dev, "overriding nonstd pixel packing: %d\n",nonstd);
++ } else {
++ dev_err(dev, "Depth %d requires nonstd to be specified\n",bpp);
++ break;
++ }
+ case 1:
+ case 2:
+ case 4:
+ case 8:
+ case 16:
+ inf->modes[0].bpp = bpp;
++ if(nonstd_specified) {
++ dev_err(dev, "Depth %d requires nonstd to *not* be specified\n",bpp);
++ } else {
++ inf->modes[0].nonstd = 0;
++ }
+ dev_info(dev, "overriding bit depth: %d\n", bpp);
+ break;
+ default:
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.21gum.orig/include/asm-arm/arch-pxa/pxa-regs.h
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -1323,6 +1323,8 @@
+ #define GPIO83_NSTXD 83 /* NSSP transmit */
+ #define GPIO84_NSRXD 84 /* NSSP receive */
+ #define GPIO85_nPCE_1 85 /* Card Enable for Card Space (PXA27x) */
++#define GPIO86_LDD_16 86 /* LCD data pin 16 */
++#define GPIO87_LDD_17 87 /* LCD data pin 17 */
+ #define GPIO92_MMCDAT0 92 /* MMC DAT0 (PXA27x) */
+ #define GPIO102_nPCE_1 102 /* PCMCIA (PXA27x) */
+ #define GPIO105_nPCE_2 105 /* Card Enable for Card Space (PXA27x) */
+@@ -1468,6 +1470,8 @@
+ #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT)
+ #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN)
+ #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT)
++#define GPIO86_LDD_16_MD (86 | GPIO_ALT_FN_2_OUT)
++#define GPIO87_LDD_17_MD (87 | GPIO_ALT_FN_2_OUT)
+ #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT)
+ #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT)
+ #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT)
+@@ -1878,6 +1882,12 @@
+ #define LCCR3_4BPP (2 << 24)
+ #define LCCR3_8BPP (3 << 24)
+ #define LCCR3_16BPP (4 << 24)
++#define LCCR3_18BPP (5 << 24)
++#define LCCR3_18BPP_PACKED (6 << 24)
++#define LCCR3_19BPP (7 << 24)
++#define LCCR3_19BPP_PACKED (1 << 29)
++#define LCCR3_24BPP ((1 << 29) | (1 << 24))
++#define LCCR3_25BPP ((1 << 29) | (2 << 24))
+
+ #define FDADR0 __REG(0x44000200) /* DMA Channel 0 Frame Descriptor Address Register */
+ #define FSADR0 __REG(0x44000204) /* DMA Channel 0 Frame Source Address Register */
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/pxafb.h
+===================================================================
+--- linux-2.6.21gum.orig/include/asm-arm/arch-pxa/pxafb.h
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/pxafb.h
+@@ -25,6 +25,7 @@ struct pxafb_mode_info {
+ u_short xres;
+ u_short yres;
+
++ /* bpp is the path-to-screen bits per pixel, not the in-memory storage required */
+ u_char bpp;
+ u_char hsync_len;
+ u_char left_margin;
+@@ -36,7 +37,9 @@ struct pxafb_mode_info {
+ u_char sync;
+
+ u_int cmap_greyscale:1,
+- unused:31;
++ nonstd:8, /* nonstd represents the in-memory bits per pixel
++ ie 24 or 32 for 18/19bpp mode, or 32 for 24/25bpp mode */
++ unused:23;
+ };
+
+ struct pxafb_mach_info {
+Index: linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/gumstix.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+@@ -146,7 +146,8 @@ static struct pxafb_mode_info gumstix_fb
+ .pixclock = 110000,
+ .xres = 480,
+ .yres = 272,
+- .bpp = 16,
++ .bpp = 18,
++ .nonstd = 24,
+ .hsync_len = 41,
+ .left_margin = 2,
+ .right_margin = 2,
+@@ -174,7 +175,8 @@ static struct pxafb_mode_info gumstix_fb
+ .vsync_len = 10, // VLW from datasheet: 10 typ
+ .upper_margin = 2, // VBP - VLW from datasheet: 12 - 10 = 2
+ .lower_margin = 4, // VFP from datasheet: 4 typ
+- .bpp = 16,
++ .bpp = 18,
++ .nonstd = 24,
+ .sync = 0, // Hsync and Vsync both active low
+ };
+
+Index: linux-2.6.21gum/drivers/video/cfbfillrect.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/cfbfillrect.c
++++ linux-2.6.21gum/drivers/video/cfbfillrect.c
+@@ -62,7 +62,10 @@ pixel_to_pat( u32 bpp, u32 pixel)
+ return 0x0001001001001001ul*pixel;
+ case 16:
+ return 0x0001000100010001ul*pixel;
++ case 18:
++ case 19:
+ case 24:
++ case 25:
+ return 0x0000000001000001ul*pixel;
+ case 32:
+ return 0x0000000100000001ul*pixel;
+@@ -87,7 +90,10 @@ pixel_to_pat( u32 bpp, u32 pixel)
+ return 0x00001001ul*pixel;
+ case 16:
+ return 0x00010001ul*pixel;
++ case 18:
++ case 19:
+ case 24:
++ case 25:
+ return 0x00000001ul*pixel;
+ case 32:
+ return 0x00000001ul*pixel;
+@@ -346,7 +352,7 @@ void cfb_fillrect(struct fb_info *p, con
+ unsigned long pat, fg;
+ unsigned long width = rect->width, height = rect->height;
+ int bits = BITS_PER_LONG, bytes = bits >> 3;
+- u32 bpp = p->var.bits_per_pixel;
++ u32 bpp = (p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel);
+ unsigned long __iomem *dst;
+ int dst_idx, left;
+
+Index: linux-2.6.21gum/drivers/video/cfbimgblt.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/cfbimgblt.c
++++ linux-2.6.21gum/drivers/video/cfbimgblt.c
+@@ -83,7 +83,7 @@ static inline void color_imageblit(const
+ /* Draw the penguin */
+ u32 __iomem *dst, *dst2;
+ u32 color = 0, val, shift;
+- int i, n, bpp = p->var.bits_per_pixel;
++ int i, n, bpp = (p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel);
+ u32 null_bits = 32 - bpp;
+ u32 *palette = (u32 *) p->pseudo_palette;
+ const u8 *src = image->data;
+@@ -140,7 +140,7 @@ static inline void slow_imageblit(const
+ u32 start_index,
+ u32 pitch_index)
+ {
+- u32 shift, color = 0, bpp = p->var.bits_per_pixel;
++ u32 shift, color = 0, bpp = (p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel);
+ u32 __iomem *dst, *dst2;
+ u32 val, pitch = p->fix.line_length;
+ u32 null_bits = 32 - bpp;
+@@ -213,7 +213,7 @@ static inline void fast_imageblit(const
+ u8 __iomem *dst1, u32 fgcolor,
+ u32 bgcolor)
+ {
+- u32 fgx = fgcolor, bgx = bgcolor, bpp = p->var.bits_per_pixel;
++ u32 fgx = fgcolor, bgx = bgcolor, bpp = (p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel);
+ u32 ppw = 32/bpp, spitch = (image->width + 7)/8;
+ u32 bit_mask, end_mask, eorx, shift;
+ const char *s = image->data, *src;
+@@ -262,7 +262,7 @@ static inline void fast_imageblit(const
+ void cfb_imageblit(struct fb_info *p, const struct fb_image *image)
+ {
+ u32 fgcolor, bgcolor, start_index, bitstart, pitch_index = 0;
+- u32 bpl = sizeof(u32), bpp = p->var.bits_per_pixel;
++ u32 bpl = sizeof(u32), bpp = (p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel);
+ u32 width = image->width;
+ u32 dx = image->dx, dy = image->dy;
+ u8 __iomem *dst1;
+Index: linux-2.6.21gum/drivers/video/cfbcopyarea.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/cfbcopyarea.c
++++ linux-2.6.21gum/drivers/video/cfbcopyarea.c
+@@ -365,8 +365,8 @@ void cfb_copyarea(struct fb_info *p, con
+ dst = src = (unsigned long __iomem *)((unsigned long)p->screen_base & ~(bytes-1));
+ dst_idx = src_idx = 8*((unsigned long)p->screen_base & (bytes-1));
+ // add offset of source and target area
+- dst_idx += dy*bits_per_line + dx*p->var.bits_per_pixel;
+- src_idx += sy*bits_per_line + sx*p->var.bits_per_pixel;
++ dst_idx += dy*bits_per_line + dx*(p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel);
++ src_idx += sy*bits_per_line + sx*(p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel);
+
+ if (p->fbops->fb_sync)
+ p->fbops->fb_sync(p);
+@@ -380,7 +380,7 @@ void cfb_copyarea(struct fb_info *p, con
+ src += src_idx >> (ffs(bits) - 1);
+ src_idx &= (bytes - 1);
+ bitcpy_rev(dst, dst_idx, src, src_idx, bits,
+- width*p->var.bits_per_pixel);
++ width*(p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel));
+ }
+ } else {
+ while (height--) {
+@@ -389,7 +389,7 @@ void cfb_copyarea(struct fb_info *p, con
+ src += src_idx >> (ffs(bits) - 1);
+ src_idx &= (bytes - 1);
+ bitcpy(dst, dst_idx, src, src_idx, bits,
+- width*p->var.bits_per_pixel);
++ width*(p->var.nonstd ? p->var.nonstd : p->var.bits_per_pixel));
+ dst_idx += bits_per_line;
+ src_idx += bits_per_line;
+ }
+Index: linux-2.6.21gum/drivers/video/console/fbcon.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/console/fbcon.c
++++ linux-2.6.21gum/drivers/video/console/fbcon.c
+@@ -983,9 +983,10 @@ static const char *fbcon_startup(void)
+
+ DPRINTK("mode: %s\n", info->fix.id);
+ DPRINTK("visual: %d\n", info->fix.visual);
+- DPRINTK("res: %dx%d-%d\n", info->var.xres,
++ DPRINTK("res: %dx%d-%d(%d)\n", info->var.xres,
+ info->var.yres,
+- info->var.bits_per_pixel);
++ info->var.bits_per_pixel,
++ info->var.nonstd ? info->var.nonstd : info->var.bits_per_pixel);
+
+ #ifdef CONFIG_ATARI
+ if (MACH_IS_ATARI) {
+Index: linux-2.6.21gum/Documentation/fb/pxafb.txt
+===================================================================
+--- linux-2.6.21gum.orig/Documentation/fb/pxafb.txt
++++ linux-2.6.21gum/Documentation/fb/pxafb.txt
+@@ -9,11 +9,13 @@ For example:
+ or on the kernel command line
+ video=pxafb:mode:640x480-8,passive
+
+-mode:XRESxYRES[-BPP]
++mode:XRESxYRES[-BPP[/PACKING]]
+ XRES == LCCR1_PPL + 1
+ YRES == LLCR2_LPP + 1
+ The resolution of the display in pixels
+ BPP == The bit depth. Valid values are 1, 2, 4, 8 and 16.
++ PACKING == The in-memory bits per pixel. Valid values are 24, 32 when
++ BPP == 18,19,24,25
+
+ pixclock:PIXCLOCK
+ Pixel clock in picoseconds
diff --git a/packages/linux/gumstix-kernel-2.6.21/pxafb-definition.patch b/packages/linux/gumstix-kernel-2.6.21/pxafb-definition.patch
new file mode 100644
index 0000000000..f8d5b1ecb1
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/pxafb-definition.patch
@@ -0,0 +1,180 @@
+Index: linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+===================================================================
+--- linux-2.6.21gum.orig/arch/arm/mach-pxa/gumstix.c
++++ linux-2.6.21gum/arch/arm/mach-pxa/gumstix.c
+@@ -25,6 +25,7 @@
+ #include <asm/arch/udc.h>
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
+ #include <asm/arch/gumstix.h>
+
+ #include "generic.h"
+@@ -90,6 +91,89 @@ static struct platform_device gum_audio_
+ .id = -1,
+ };
+
++
++#if defined(CONFIG_FB_PXA_SHARP_LQ043_PSP) || defined(CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C)
++static void gumstix_lcd_backlight(int on_or_off)
++{
++ if(on_or_off)
++ {
++ pxa_gpio_mode(17 | GPIO_IN);
++ } else {
++ GPCR(17) = GPIO_bit(17);
++ pxa_gpio_mode(17 | GPIO_OUT);
++ GPCR(17) = GPIO_bit(17);
++ }
++}
++#endif
++
++
++#ifdef CONFIG_FB_PXA_ALPS_CDOLLAR
++static struct pxafb_mode_info gumstix_fb_mode = {
++ .pixclock = 300000,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
++ .hsync_len = 2,
++ .left_margin = 1,
++ .right_margin = 1,
++ .vsync_len = 3,
++ .upper_margin = 0,
++ .lower_margin = 0,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info gumstix_fb_info = {
++ .modes = &gumstix_fb_mode,
++ .num_modes = 1,
++ .lccr0 = LCCR0_Pas | LCCR0_Sngl | LCCR0_Color,
++ .lccr3 = LCCR3_PixFlEdg,
++};
++#elif defined(CONFIG_FB_PXA_SHARP_LQ043_PSP)
++static struct pxafb_mode_info gumstix_fb_mode = {
++ .pixclock = 110000,
++ .xres = 480,
++ .yres = 272,
++ .bpp = 16,
++ .hsync_len = 41,
++ .left_margin = 2,
++ .right_margin = 2,
++ .vsync_len = 10,
++ .upper_margin = 2,
++ .lower_margin = 2,
++ .sync = 0, // Hsync and Vsync both active low
++};
++
++static struct pxafb_mach_info gumstix_fb_info = {
++ .modes = &gumstix_fb_mode,
++ .num_modes = 1,
++ .lccr0 = LCCR0_Act | LCCR0_Sngl | LCCR0_Color,
++ .lccr3 = LCCR3_OutEnH | LCCR3_PixFlEdg | (3 << 30),
++ .pxafb_backlight_power = &gumstix_lcd_backlight,
++};
++#elif defined(CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C)
++static struct pxafb_mode_info gumstix_fb_mode = {
++ .pixclock = 108696, // 9.2MHz typical DOTCLK from datasheet
++ .xres = 480,
++ .hsync_len = 41, // HLW from datasheet: 41 typ
++ .left_margin = 4, // HBP - HLW from datasheet: 45 - 41 = 4
++ .right_margin = 8, // HFP from datasheet: 8 typ
++ .yres = 272,
++ .vsync_len = 10, // VLW from datasheet: 10 typ
++ .upper_margin = 2, // VBP - VLW from datasheet: 12 - 10 = 2
++ .lower_margin = 4, // VFP from datasheet: 4 typ
++ .bpp = 16,
++ .sync = 0, // Hsync and Vsync both active low
++};
++
++static struct pxafb_mach_info gumstix_fb_info = {
++ .modes = &gumstix_fb_mode,
++ .num_modes = 1,
++ .lccr0 = LCCR0_Act | LCCR0_Sngl | LCCR0_Color,
++ .lccr3 = LCCR3_OutEnH | LCCR3_PixFlEdg | (3 << 30),
++ .pxafb_backlight_power = &gumstix_lcd_backlight,
++};
++#endif
++
+ static struct platform_device *devices[] __initdata = {
+ &gum_audio_device,
+ };
+@@ -98,6 +182,9 @@ static void __init gumstix_init(void)
+ {
+ pxa_set_mci_info(&gumstix_mci_platform_data);
+ pxa_set_udc_info(&gumstix_udc_info);
++#if defined(CONFIG_FB_PXA_ALPS_CDOLLAR) | defined(CONFIG_FB_PXA_SHARP_LQ043_PSP) | defined(CONFIG_FB_PXA_SAMSUNG_LTE430WQ_F0C)
++ set_pxa_fb_info(&gumstix_fb_info);
++#endif
+ (void) platform_add_devices(devices, ARRAY_SIZE(devices));
+ }
+
+Index: linux-2.6.21gum/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/Kconfig
++++ linux-2.6.21gum/drivers/video/Kconfig
+@@ -1495,6 +1495,37 @@ config FB_PXA
+
+ If unsure, say N.
+
++choice
++ depends on FB_PXA
++ prompt "LCD Panel"
++ default FB_PXA_SAMSUNG_LTE430WQ_F0C
++
++config FB_PXA_ALPS_CDOLLAR
++ boolean "Chris Dollar's ALPS screen"
++ ---help---
++ Enable definitions (over-ridable on the kernel command line if
++ "PXA LCD command line parameters" is also selected) for an ALPS
++ screen which Chris Dollar uses
++
++config FB_PXA_SHARP_LQ043_PSP
++ boolean "SHARP LQ043... series"
++ ---help---
++ Enable definitions (over-ridable on the kernel command line if
++ "PXA LCD command line parameters" is also selected) for a SHARP
++ LQ043... screen, such as the one used by the PSP. These screens are
++ the ones normally sold by gumstix with its boards.
++
++config FB_PXA_SAMSUNG_LTE430WQ_F0C
++ boolean "Samsung LTE430WQ-F0C (standard gumstix LCD)"
++ ---help---
++ Enable definitions for a Samsung LTE430WQ-F0C LCD panel, such as the ones resold
++ by gumstix for use with their "LCD-Ready" boards.
++
++config FB_PXA_NONEOFTHEABOVE
++ boolean "None of the above"
++
++endchoice
++
+ config FB_PXA_PARAMETERS
+ bool "PXA LCD command line parameters"
+ default n
+Index: linux-2.6.21gum/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/video/pxafb.c
++++ linux-2.6.21gum/drivers/video/pxafb.c
+@@ -22,6 +22,7 @@
+ *
+ */
+
++#include <linux/autoconf.h>
+ #include <linux/module.h>
+ #include <linux/moduleparam.h>
+ #include <linux/kernel.h>
+@@ -789,7 +790,13 @@ static void pxafb_setup_gpio(struct pxaf
+ pxa_gpio_mode(GPIO74_LCD_FCLK_MD);
+ pxa_gpio_mode(GPIO75_LCD_LCLK_MD);
+ pxa_gpio_mode(GPIO76_LCD_PCLK_MD);
++#ifdef CONFIG_FB_PXA_SHARP_LQ043_PSP
++ /* DISP must be always high while screen is on */
++ pxa_gpio_mode(GPIO77_LCD_ACBIAS | GPIO_OUT);
++ GPSR(GPIO77_LCD_ACBIAS) = GPIO_bit(GPIO77_LCD_ACBIAS);
++#else
+ pxa_gpio_mode(GPIO77_LCD_ACBIAS_MD);
++#endif
+ }
+
+ static void pxafb_enable_controller(struct pxafb_info *fbi)
diff --git a/packages/linux/gumstix-kernel-2.6.21/serial-divisor.patch b/packages/linux/gumstix-kernel-2.6.21/serial-divisor.patch
new file mode 100644
index 0000000000..efce5a51ef
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/serial-divisor.patch
@@ -0,0 +1,31 @@
+Index: linux-2.6.21gum/drivers/serial/pxa.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/serial/pxa.c
++++ linux-2.6.21gum/drivers/serial/pxa.c
+@@ -41,6 +41,7 @@
+ #include <linux/platform_device.h>
+ #include <linux/tty.h>
+ #include <linux/tty_flip.h>
++#include <linux/serial.h>
+ #include <linux/serial_core.h>
+
+ #include <asm/io.h>
+@@ -577,8 +578,16 @@ static void serial_pxa_config_port(struc
+ static int
+ serial_pxa_verify_port(struct uart_port *port, struct serial_struct *ser)
+ {
+- /* we don't want the core code to modify any port params */
+- return -EINVAL;
++ struct uart_pxa_port *up = (struct uart_pxa_port *)port;
++ int ret = 0;
++
++ if (up->port.uartclk / 16 != ser->baud_base)
++ ret = -EINVAL;
++ else if (((up->port.line & 1) == 0) && ser->baud_base > 230400) /* Max baud rate for STUART and FFUART */
++ ret = -EINVAL;
++ else if (((up->port.line & 1) != 0) && ser->baud_base > 921600) /* Max baud rate for HWUART and BTUART */
++ ret = -EINVAL;
++ return ret;
+ }
+
+ static const char *
diff --git a/packages/linux/gumstix-kernel-2.6.21/serial-ether-addr.patch b/packages/linux/gumstix-kernel-2.6.21/serial-ether-addr.patch
new file mode 100644
index 0000000000..3161472e90
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/serial-ether-addr.patch
@@ -0,0 +1,62 @@
+Index: linux-2.6.21gum/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/usb/gadget/ether.c
++++ linux-2.6.21gum/drivers/usb/gadget/ether.c
+@@ -2249,6 +2249,38 @@ static u8 __devinit nibble (unsigned cha
+ return 0;
+ }
+
++static inline unsigned int is_gumstix_oui(u8 *addr)
++{
++ return (addr[0] == 0x00 && addr[1] == 0x15 && addr[2] == 0xC9);
++}
++
++/**
++ * gen_serial_ether_addr - Generate software assigned Ethernet address
++ * based on the system_serial number
++ * @addr: Pointer to a six-byte array containing the Ethernet address
++ *
++ * Generate an Ethernet address (MAC) that is not multicast
++ * and has the local assigned bit set, keyed on the system_serial
++ */
++static inline void gen_serial_ether_addr(u8 *addr)
++{
++ static u8 ether_serial_digit = 0;
++ addr [0] = system_serial_high >> 8;
++ addr [1] = system_serial_high;
++ addr [2] = system_serial_low >> 24;
++ addr [3] = system_serial_low >> 16;
++ addr [4] = system_serial_low >> 8;
++ addr [5] = (system_serial_low & 0xc0) | /* top bits are from system serial */
++ (2 << 4) | /* 2 bits identify interface type 1=ether, 2=usb, 3&4 undef */
++ ((ether_serial_digit++) & 0x0f); /* 15 possible interfaces of each type */
++
++ if(!is_gumstix_oui(addr))
++ {
++ addr [0] &= 0xfe; /* clear multicast bit */
++ addr [0] |= 0x02; /* set local assignment bit (IEEE802) */
++ }
++}
++
+ static int __devinit get_ether_addr(const char *str, u8 *dev_addr)
+ {
+ if (str) {
+@@ -2266,8 +2298,16 @@ static int __devinit get_ether_addr(cons
+ if (is_valid_ether_addr (dev_addr))
+ return 0;
+ }
+- random_ether_addr(dev_addr);
+- return 1;
++ if(system_serial_high | system_serial_low)
++ {
++ gen_serial_ether_addr(dev_addr);
++ return 0;
++ }
++ else
++ {
++ random_ether_addr(dev_addr);
++ return 1;
++ }
+ }
+
+ static int __devinit
diff --git a/packages/linux/gumstix-kernel-2.6.21/smc-ether-addr.patch b/packages/linux/gumstix-kernel-2.6.21/smc-ether-addr.patch
new file mode 100644
index 0000000000..b4957b7a0d
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/smc-ether-addr.patch
@@ -0,0 +1,62 @@
+Index: linux-2.6.21gum/drivers/net/smc91x.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/smc91x.c
++++ linux-2.6.21gum/drivers/net/smc91x.c
+@@ -1815,6 +1815,39 @@ static int __init smc_findirq(void __iom
+ return probe_irq_off(cookie);
+ }
+
++static inline unsigned int is_gumstix_oui(u8 *addr)
++{
++ return (addr[0] == 0x00 && addr[1] == 0x15 && addr[2] == 0xC9);
++}
++
++/**
++ * gen_serial_ether_addr - Generate software assigned Ethernet address
++ * based on the system_serial number
++ * @addr: Pointer to a six-byte array containing the Ethernet address
++ *
++ * Generate an Ethernet address (MAC) that is not multicast
++ * and has the local assigned bit set, keyed on the system_serial
++ */
++static inline void gen_serial_ether_addr(u8 *addr)
++{
++ static u8 ether_serial_digit = 0;
++ addr [0] = system_serial_high >> 8;
++ addr [1] = system_serial_high;
++ addr [2] = system_serial_low >> 24;
++ addr [3] = system_serial_low >> 16;
++ addr [4] = system_serial_low >> 8;
++ addr [5] = (system_serial_low & 0xc0) | /* top bits are from system serial */
++ (1 << 4) | /* 2 bits identify interface type 1=ether, 2=usb, 3&4 undef */
++ ((ether_serial_digit++) & 0x0f); /* 15 possible interfaces of each type */
++
++ if(!is_gumstix_oui(addr))
++ {
++ addr [0] &= 0xfe; /* clear multicast bit */
++ addr [0] |= 0x02; /* set local assignment bit (IEEE802) */
++ }
++}
++
++
+ /*
+ * Function: smc_probe(unsigned long ioaddr)
+ *
+@@ -2032,15 +2065,13 @@ static int __init smc_probe(struct net_d
+ THROTTLE_TX_PKTS ? " [throttle_tx]" : "");
+
+ if (!is_valid_ether_addr(dev->dev_addr)) {
+- printk("%s: Invalid ethernet MAC address. Please "
+- "set using ifconfig\n", dev->name);
+- } else {
++ gen_serial_ether_addr(dev->dev_addr);
++ }
+ /* Print the Ethernet address */
+ printk("%s: Ethernet addr: ", dev->name);
+ for (i = 0; i < 5; i++)
+ printk("%2.2x:", dev->dev_addr[i]);
+ printk("%2.2x\n", dev->dev_addr[5]);
+- }
+
+ if (lp->phy_type == 0) {
+ PRINTK("%s: No PHY found\n", dev->name);
diff --git a/packages/linux/gumstix-kernel-2.6.21/smc911x-fixup.patch b/packages/linux/gumstix-kernel-2.6.21/smc911x-fixup.patch
new file mode 100644
index 0000000000..7e051f9fb6
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/smc911x-fixup.patch
@@ -0,0 +1,392 @@
+Index: linux-2.6.21gum/drivers/net/smc911x.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/smc911x.c
++++ linux-2.6.21gum/drivers/net/smc911x.c
+@@ -76,6 +76,7 @@ static const char version[] =
+ #include <linux/etherdevice.h>
+ #include <linux/skbuff.h>
+
++#include <linux/irq.h>
+ #include <asm/io.h>
+ #include <asm/irq.h>
+
+@@ -303,14 +304,14 @@ static void smc911x_reset(struct net_dev
+ SMC_SET_AFC_CFG(lp->afc_cfg);
+
+
+- /* Set to LED outputs */
+- SMC_SET_GPIO_CFG(0x70070000);
++ /* Set to LED outputs and configure EEPROM pins as GP outputs */
++ SMC_SET_GPIO_CFG(GPIO_CFG_LED1_EN_ | GPIO_CFG_LED2_EN_ | 1 << 20);
+
+ /*
+- * Deassert IRQ for 1*10us for edge type interrupts
++ * Deassert IRQ for 22*10us for edge type interrupts
+ * and drive IRQ pin push-pull
+ */
+- SMC_SET_IRQ_CFG( (1 << 24) | INT_CFG_IRQ_EN_ | INT_CFG_IRQ_TYPE_ );
++ SMC_SET_IRQ_CFG( (22 << 24) | INT_CFG_IRQ_EN_ | INT_CFG_IRQ_TYPE_ );
+
+ /* clear anything saved */
+ if (lp->pending_tx_skb != NULL) {
+@@ -413,7 +414,7 @@ static inline void smc911x_drop_pkt(stru
+ if (fifo_count <= 4) {
+ /* Manually dump the packet data */
+ while (fifo_count--)
+- SMC_GET_RX_FIFO();
++ (void)SMC_GET_RX_FIFO();
+ } else {
+ /* Fast forward through the bad packet */
+ SMC_SET_RX_DP_CTRL(RX_DP_CTRL_FFWD_BUSY_);
+@@ -499,7 +500,7 @@ static inline void smc911x_rcv(struct n
+ SMC_SET_RX_CFG(RX_CFG_RX_END_ALGN4_ | ((2<<8) & RX_CFG_RXDOFF_));
+ SMC_PULL_DATA(data, pkt_len+2+3);
+
+- DBG(SMC_DEBUG_PKTS, "%s: Received packet\n", dev->name,);
++ DBG(SMC_DEBUG_PKTS, "%s: Received packet\n", dev->name);
+ PRINT_PKT(data, ((pkt_len - 4) <= 64) ? pkt_len - 4 : 64);
+ dev->last_rx = jiffies;
+ skb->dev = dev;
+@@ -900,6 +901,7 @@ static void smc911x_phy_powerdown(struct
+ unsigned long ioaddr = dev->base_addr;
+ unsigned int bmcr;
+
++ DBG(SMC_DEBUG_FUNC, "%s: --> %s\n", dev->name, __FUNCTION__);
+ /* Enter Link Disable state */
+ SMC_GET_PHY_BMCR(phy, bmcr);
+ bmcr |= BMCR_PDOWN;
+@@ -925,6 +927,7 @@ static void smc911x_phy_check_media(stru
+
+ if (mii_check_media(&lp->mii, netif_msg_link(lp), init)) {
+ /* duplex state has changed */
++ DBG(SMC_DEBUG_MISC, "%s: duplex state has changed\n", dev->name);
+ SMC_GET_PHY_BMCR(phyaddr, bmcr);
+ SMC_GET_MAC_CR(cr);
+ if (lp->mii.full_duplex) {
+@@ -960,6 +963,7 @@ static void smc911x_phy_configure(struct
+ int my_phy_caps; /* My PHY capabilities */
+ int my_ad_caps; /* My Advertised capabilities */
+ int status;
++ int bmcr;
+ unsigned long flags;
+
+ DBG(SMC_DEBUG_FUNC, "%s: --> %s()\n", dev->name, __FUNCTION__);
+@@ -1033,9 +1037,12 @@ static void smc911x_phy_configure(struct
+
+ DBG(SMC_DEBUG_MISC, "%s: phy caps=0x%04x\n", dev->name, my_phy_caps);
+ DBG(SMC_DEBUG_MISC, "%s: phy advertised caps=0x%04x\n", dev->name, my_ad_caps);
++ DBG(SMC_DEBUG_MISC, "%s: phy advertised readback caps=0x%04x\n", dev->name, status);
+
+ /* Restart auto-negotiation process in order to advertise my caps */
+- SMC_SET_PHY_BMCR(phyaddr, BMCR_ANENABLE | BMCR_ANRESTART);
++ SMC_GET_PHY_BMCR(phyaddr, bmcr);
++ bmcr |= BMCR_ANENABLE | BMCR_ANRESTART;
++ SMC_SET_PHY_BMCR(phyaddr, bmcr);
+
+ smc911x_phy_check_media(dev, 1);
+
+@@ -1888,6 +1895,39 @@ static int __init smc911x_findirq(unsign
+ return probe_irq_off(cookie);
+ }
+
++static inline unsigned int is_gumstix_oui(u8 *addr)
++{
++ return (addr[0] == 0x00 && addr[1] == 0x15 && addr[2] == 0xC9);
++}
++
++/**
++ * gen_serial_ether_addr - Generate software assigned Ethernet address
++ * based on the system_serial number
++ * @addr: Pointer to a six-byte array containing the Ethernet address
++ *
++ * Generate an Ethernet address (MAC) that is not multicast
++ * and has the local assigned bit set, keyed on the system_serial
++ */
++static inline void gen_serial_ether_addr(u8 *addr)
++{
++ static u8 ether_serial_digit = 0;
++ addr [0] = system_serial_high >> 8;
++ addr [1] = system_serial_high;
++ addr [2] = system_serial_low >> 24;
++ addr [3] = system_serial_low >> 16;
++ addr [4] = system_serial_low >> 8;
++ addr [5] = (system_serial_low & 0xc0) | /* top bits are from system serial */
++ (1 << 4) | /* 2 bits identify interface type 1=ether, 2=usb, 3&4 undef */
++ ((ether_serial_digit++) & 0x0f); /* 15 possible interfaces of each type */
++
++ if(!is_gumstix_oui(addr))
++ {
++ addr [0] &= 0xfe; /* clear multicast bit */
++ addr [0] |= 0x02; /* set local assignment bit (IEEE802) */
++ }
++}
++
++
+ /*
+ * Function: smc911x_probe(unsigned long ioaddr)
+ *
+@@ -2116,15 +2156,13 @@ static int __init smc911x_probe(struct n
+ #endif
+ printk("\n");
+ if (!is_valid_ether_addr(dev->dev_addr)) {
+- printk("%s: Invalid ethernet MAC address. Please "
+- "set using ifconfig\n", dev->name);
+- } else {
+- /* Print the Ethernet address */
+- printk("%s: Ethernet addr: ", dev->name);
+- for (i = 0; i < 5; i++)
+- printk("%2.2x:", dev->dev_addr[i]);
+- printk("%2.2x\n", dev->dev_addr[5]);
++ gen_serial_ether_addr(dev->dev_addr);
+ }
++ /* Print the Ethernet address */
++ printk("%s: Ethernet addr: ", dev->name);
++ for (i = 0; i < 5; i++)
++ printk("%2.2x:", dev->dev_addr[i]);
++ printk("%2.2x\n", dev->dev_addr[5]);
+
+ if (lp->phy_type == 0) {
+ PRINTK("%s: No PHY found\n", dev->name);
+@@ -2300,8 +2338,15 @@ static struct platform_driver smc911x_dr
+ },
+ };
+
++#ifdef CONFIG_ARCH_GUMSTIX
++extern void gumstix_smc911x_load(void);
++#endif
++
+ static int __init smc911x_init(void)
+ {
++#ifdef CONFIG_ARCH_GUMSTIX
++ gumstix_smc911x_load();
++#endif
+ return platform_driver_register(&smc911x_driver);
+ }
+
+Index: linux-2.6.21gum/drivers/net/gumstix-smc911x.c
+===================================================================
+--- /dev/null
++++ linux-2.6.21gum/drivers/net/gumstix-smc911x.c
+@@ -0,0 +1,148 @@
++/*
++ * Gumstix SMC911x chip intialization driver
++ *
++ * Author: Craig Hughes
++ * Created: December 9, 2004
++ * Copyright: (C) 2004 Craig Hughes
++ *
++ * 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 <linux/module.h>
++#include <linux/ioport.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/delay.h>
++
++#include <asm/arch/gumstix.h>
++
++#define SMC_DEBUG 9
++#include <asm/io.h>
++#include "smc911x.h"
++
++static struct resource gumstix_smc911x0_resources[] = {
++ [0] = {
++ .name = "smc911x-regs",
++ .start = PXA_CS1_PHYS,
++ .end = PXA_CS1_PHYS + 0x000fffff,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = GUMSTIX_ETH0_IRQ,
++ .end = GUMSTIX_ETH0_IRQ,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct resource gumstix_smc911x1_resources[] = {
++ [0] = {
++ .name = "smc911x-regs",
++ .start = PXA_CS2_PHYS,
++ .end = PXA_CS2_PHYS + 0x000fffff,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = GUMSTIX_ETH1_IRQ,
++ .end = GUMSTIX_ETH1_IRQ,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct platform_device gumstix_smc911x0_device = {
++ .name = "smc911x",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(gumstix_smc911x0_resources),
++ .resource = gumstix_smc911x0_resources,
++};
++
++static struct platform_device gumstix_smc911x1_device = {
++ .name = "smc911x",
++ .id = 1,
++ .num_resources = ARRAY_SIZE(gumstix_smc911x1_resources),
++ .resource = gumstix_smc911x1_resources,
++};
++
++static struct platform_device *smc911x_devices[] = {
++ &gumstix_smc911x0_device,
++ &gumstix_smc911x1_device,
++};
++
++/* First we're going to test if there's a 2nd SMC911x, and if not, then we'll free up those resources and the GPIO lines
++ * that it would otherwise use. We have no choice but to probe by doing:
++ * Set nCS2 to CS2 mode
++ * Set the reset line to GPIO out mode, and pull it high, then drop it low (to trigger reset)
++ * Read from the memory space to check for the sentinel sequence identifying a likely SMC911x device
++ */
++int __init gumstix_smc911x_init(void)
++{
++ unsigned int val, num_devices=ARRAY_SIZE(smc911x_devices);
++ void *ioaddr;
++
++ /* Set up nPWE */
++ pxa_gpio_mode(GPIO49_nPWE_MD);
++
++ pxa_gpio_mode(GPIO78_nCS_2_MD);
++ // If either if statement fails, then we'll drop out and turn_off_eth1,
++ // if both succeed, then we'll skip that and just proceed with 2 cards
++ if(request_mem_region(gumstix_smc911x1_resources[1].start, SMC911X_IO_EXTENT, "smc911x probe"))
++ {
++ ioaddr = ioremap(gumstix_smc911x1_resources[1].start, SMC911X_IO_EXTENT);
++ val = SMC_GET_PN();
++ iounmap(ioaddr);
++ release_mem_region(gumstix_smc911x1_resources[1].start, SMC911X_IO_EXTENT);
++ if (CHIP_9115 == val ||
++ CHIP_9116 == val ||
++ CHIP_9117 == val ||
++ CHIP_9118 == val ) {
++ goto proceed;
++ }
++ }
++
++turn_off_eth1:
++ // This is apparently not an SMC911x
++ // So, let's decrement the number of devices to request, and reset the GPIO lines to GPIO IN mode
++ num_devices--;
++ smc911x_devices[1] = NULL;
++ pxa_gpio_mode(78 | GPIO_IN);
++
++proceed:
++ pxa_gpio_mode(GPIO15_nCS_1_MD);
++
++ if(smc911x_devices[1]) pxa_gpio_mode(GPIO_GUMSTIX_ETH1_RST_MD);
++ pxa_gpio_mode(GPIO_GUMSTIX_ETH0_RST_MD);
++
++ if(smc911x_devices[1]) GPCR(GPIO_GUMSTIX_ETH1_RST) = GPIO_bit(GPIO_GUMSTIX_ETH1_RST);
++ GPCR(GPIO_GUMSTIX_ETH0_RST) = GPIO_bit(GPIO_GUMSTIX_ETH0_RST);
++ msleep(500); // Hold RESET for at least 200µ
++
++ if(smc911x_devices[1]) GPSR(GPIO_GUMSTIX_ETH1_RST) = GPIO_bit(GPIO_GUMSTIX_ETH1_RST);
++ GPSR(GPIO_GUMSTIX_ETH0_RST) = GPIO_bit(GPIO_GUMSTIX_ETH0_RST);
++ msleep(50);
++
++ return platform_add_devices(smc911x_devices, num_devices);
++}
++
++void __exit gumstix_smc911x_exit(void)
++{
++ if(smc911x_devices[1] != NULL) platform_device_unregister(&gumstix_smc911x1_device);
++ platform_device_unregister(&gumstix_smc911x0_device);
++}
++
++void gumstix_smc911x_load(void) {}
++EXPORT_SYMBOL(gumstix_smc911x_load);
++
++module_init(gumstix_smc911x_init);
++module_exit(gumstix_smc911x_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Craig Hughes <craig@gumstix.com>");
++MODULE_DESCRIPTION("Gumstix board SMC911x chip initialization driver");
++MODULE_VERSION("1:0.1");
+Index: linux-2.6.21gum/drivers/net/Kconfig
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/Kconfig
++++ linux-2.6.21gum/drivers/net/Kconfig
+@@ -897,6 +897,13 @@ config SMC911X
+ called smc911x. If you want to compile it as a module, say M
+ here and read <file:Documentation/modules.txt>
+
++config SMC911X_GUMSTIX
++ tristate
++ default m if SMC911X=m
++ default y if SMC911X=y
++ depends on SMC911X && ARCH_GUMSTIX
++
++
+ config NET_VENDOR_RACAL
+ bool "Racal-Interlan (Micom) NI cards"
+ depends on NET_ETHERNET && ISA
+Index: linux-2.6.21gum/drivers/net/Makefile
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/Makefile
++++ linux-2.6.21gum/drivers/net/Makefile
+@@ -201,6 +201,7 @@ obj-$(CONFIG_PASEMI_MAC) += pasemi_mac.o
+ obj-$(CONFIG_MACB) += macb.o
+
+ obj-$(CONFIG_SMC91X_GUMSTIX) += gumstix-smc91x.o
++obj-$(CONFIG_SMC911X_GUMSTIX) += gumstix-smc911x.o
+ obj-$(CONFIG_ARM) += arm/
+ obj-$(CONFIG_DEV_APPLETALK) += appletalk/
+ obj-$(CONFIG_TR) += tokenring/
+Index: linux-2.6.21gum/include/asm-arm/arch-pxa/gumstix.h
+===================================================================
+--- linux-2.6.21gum.orig/include/asm-arm/arch-pxa/gumstix.h
++++ linux-2.6.21gum/include/asm-arm/arch-pxa/gumstix.h
+@@ -52,7 +52,7 @@
+ #define GPIO_GUMSTIX_ETH0_RST 80
+ #define GPIO_GUMSTIX_ETH0 36
+ #else
+-#define GPIO_GUMSTIX_ETH0_RST 32
++#define GPIO_GUMSTIX_ETH0_RST 107
+ #define GPIO_GUMSTIX_ETH0 99
+ #endif
+ #define GPIO_GUMSTIX_ETH1_RST 52
+Index: linux-2.6.21gum/drivers/net/smc911x.h
+===================================================================
+--- linux-2.6.21gum.orig/drivers/net/smc911x.h
++++ linux-2.6.21gum/drivers/net/smc911x.h
+@@ -33,7 +33,9 @@
+ * Use the DMA feature on PXA chips
+ */
+ #ifdef CONFIG_ARCH_PXA
++#if !defined( CONFIG_SMC911X_GUMSTIX ) && !defined( CONFIG_SMC911X_GUMSTIX_MODULE )
+ #define SMC_USE_PXA_DMA 1
++#endif
+ #define SMC_USE_16BIT 0
+ #define SMC_USE_32BIT 1
+ #endif
+@@ -46,13 +48,13 @@
+ #if SMC_USE_16BIT
+ #define SMC_inb(a, r) readb((a) + (r))
+ #define SMC_inw(a, r) readw((a) + (r))
+-#define SMC_inl(a, r) ((SMC_inw(a, r) & 0xFFFF)+(SMC_inw(a+2, r)<<16))
++#define SMC_inl(a, r) ((SMC_inw(a, r) & 0xFFFF)+(SMC_inw((a)+2, r)<<16))
+ #define SMC_outb(v, a, r) writeb(v, (a) + (r))
+ #define SMC_outw(v, a, r) writew(v, (a) + (r))
+ #define SMC_outl(v, a, r) \
+ do{ \
+- writel(v & 0xFFFF, (a) + (r)); \
+- writel(v >> 16, (a) + (r) + 2); \
++ writel((v) & 0xFFFF, (a) + (r)); \
++ writel((v) >> 16, (a) + (r) + 2); \
+ } while (0)
+ #define SMC_insl(a, r, p, l) readsw((short*)((a) + (r)), p, l*2)
+ #define SMC_outsl(a, r, p, l) writesw((short*)((a) + (r)), p, l*2)
diff --git a/packages/linux/gumstix-kernel-2.6.21/tsc2003-config.diff b/packages/linux/gumstix-kernel-2.6.21/tsc2003-config.diff
new file mode 100644
index 0000000000..ccad5ed696
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/tsc2003-config.diff
@@ -0,0 +1,31 @@
+--- /tmp/Kconfig 2007-10-07 14:13:14.000000000 +0200
++++ linux-2.6.21/drivers/i2c/chips/Kconfig 2007-10-07 14:13:56.902045000 +0200
+@@ -125,4 +125,18 @@
+ This driver can also be built as a module. If so, the module
+ will be called max6875.
+
++config SENSORS_TSC2003
++ tristate "TI TSC2003"
++ depends on I2C && EXPERIMENTAL
++ default n
++ help
++ Driver for TI tsc2003 touchscreen and sensor chip/
++
++config SENSORS_TSC2003_SYSFS
++ tristate "TI TSC2003 sysfs interface
++ depends on SENSORS_TSC2003
++ default n
++ help
++ Enabled the sysfs interface for tsc2003
++
+ endmenu
+--- /tmp/Makefile 2007-10-07 14:14:14.000000000 +0200
++++ linux-2.6.21/drivers/i2c/chips/Makefile 2007-10-07 14:14:20.072045000 +0200
+@@ -12,6 +12,7 @@
+ obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
+ obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o
+ obj-$(CONFIG_TPS65010) += tps65010.o
++obj-$(CONFIG_SENSORS_TSC2003) += tsc2003.o
+
+ ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)
+ EXTRA_CFLAGS += -DDEBUG
diff --git a/packages/linux/gumstix-kernel-2.6.21/tsc2003.c b/packages/linux/gumstix-kernel-2.6.21/tsc2003.c
new file mode 100644
index 0000000000..d0f496617e
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/tsc2003.c
@@ -0,0 +1,699 @@
+/*
+ * linux/drivers/i2c/chips/tsc2003.c
+ *
+ * Copyright (C) 2005 Bill Gatliff <bgat at billgatliff.com>
+ * Changes for 2.6.20 kernel by Nicholas Chen <nchen at cs.umd.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.
+ *
+ * Driver for TI's TSC2003 I2C Touch Screen Controller
+ */
+
+//#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/i2c.h>
+#include <linux/string.h>
+#include <linux/bcd.h>
+#include <linux/list.h>
+#include <linux/device.h>
+#include <linux/interrupt.h>
+#include <linux/input.h>
+#include <linux/delay.h>
+#include <asm-arm/arch-pxa/irqs.h>
+
+static unsigned short normal_i2c[]
+= {0x48, I2C_CLIENT_END };
+
+I2C_CLIENT_INSMOD_1(tsc2003);
+
+#define DRIVER_NAME "tsc2003"
+
+enum tsc2003_pd {
+ PD_POWERDOWN = 0, /* penirq */
+ PD_IREFOFF_ADCON = 1, /* no penirq */
+ PD_IREFON_ADCOFF = 2, /* penirq */
+ PD_IREFON_ADCON = 3, /* no penirq */
+ PD_PENIRQ_ARM = PD_IREFON_ADCOFF,
+ PD_PENIRQ_DISARM = PD_IREFON_ADCON,
+};
+
+enum tsc2003_m {
+ M_12BIT = 0,
+ M_8BIT = 1
+};
+
+enum tsc2003_cmd {
+ MEAS_TEMP0 = 0,
+ MEAS_VBAT1 = 1,
+ MEAS_IN1 = 2,
+ MEAS_TEMP1 = 4,
+ MEAS_VBAT2 = 5,
+ MEAS_IN2 = 6,
+ ACTIVATE_NX_DRIVERS = 8,
+ ACTIVATE_NY_DRIVERS = 9,
+ ACTIVATE_YNX_DRIVERS = 10,
+ MEAS_XPOS = 12,
+ MEAS_YPOS = 13,
+ MEAS_Z1POS = 14,
+ MEAS_Z2POS = 15
+};
+
+#define TSC2003_CMD(cn,pdn,m) (((cn) << 4) | ((pdn) << 2) | ((m) << 1))
+
+#define ADC_MAX ((1 << 12) - 1)
+
+struct tsc2003_data {
+ struct i2c_client client;
+ struct device_driver driver;
+ struct input_dev *idev;
+ struct timer_list penirq_timer;
+ struct semaphore sem;
+ struct task_struct *tstask;
+ struct completion tstask_completion;
+ struct completion penirq_completion;
+ enum tsc2003_pd pd;
+ enum tsc2003_m m;
+ int penirq;
+
+ int vbat1;
+ int vbat2;
+ int temp0;
+ int temp1;
+ int in1;
+ int in2;
+};
+
+static int tsc2003_i2c_detect (struct i2c_adapter *adapter, int address,
+int kind);
+
+static inline int tsc2003_command (struct tsc2003_data *data,
+ enum tsc2003_cmd cmd,
+ enum tsc2003_pd pd)
+{
+ char c;
+ int ret;
+ down(&data->sem);
+ c = TSC2003_CMD(cmd, pd, data->m);
+ ret = i2c_master_send(&data->client, &c, 1);
+ up(&data->sem);
+ return ret;
+}
+
+static int tsc2003_read (struct tsc2003_data *data,
+ enum tsc2003_cmd cmd,
+ enum tsc2003_pd pd,
+ int *val)
+{
+ char c;
+ char d[2];
+ int ret;
+
+ c = TSC2003_CMD(cmd, pd, data->m);
+ ret = i2c_master_send(&data->client, &c, 1);
+ if (ret <= 0) goto err;
+
+ udelay(20);
+ ret = i2c_master_recv(&data->client, d, data->m == M_12BIT ? 2 : 1);
+ if (ret <= 0) goto err;
+
+ if (val)
+ {
+ *val = d[0];
+ *val <<= 4;
+ if (data->m == M_12BIT)
+ *val += (d[1] >> 4);
+ }
+
+#if defined(CONFIG_I2C_DEBUG_CHIP)
+ printk(KERN_ERR "%s: val[%x] = %d\n",
+ __FUNCTION__, cmd, (((int)d[0]) << 8) + d[1]);
+#endif
+
+ return 0;
+ err:
+ if (!ret) ret = -ENODEV;
+ return ret;
+}
+
+static inline int tsc2003_read_temp0 (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *t)
+{
+ return tsc2003_read(d, MEAS_TEMP0, pd, t);
+}
+
+static inline int tsc2003_read_temp1 (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *t)
+{
+ return tsc2003_read(d, MEAS_TEMP1, pd, t);
+}
+
+static inline int tsc2003_read_xpos (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *x)
+{
+ return tsc2003_read(d, MEAS_XPOS, pd, x);
+}
+
+static inline int tsc2003_read_ypos (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *y)
+{
+ return tsc2003_read(d, MEAS_YPOS, pd, y);
+}
+
+static inline int tsc2003_read_pressure (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *p)
+{
+ return tsc2003_read(d, MEAS_Z1POS, pd, p);
+}
+
+static inline int tsc2003_read_in1 (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *t)
+{
+ return tsc2003_read(d, MEAS_IN1, pd, t);
+}
+
+static inline int tsc2003_read_in2 (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *t)
+{
+ return tsc2003_read(d, MEAS_IN2, pd, t);
+}
+
+static inline int tsc2003_read_vbat1 (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *t)
+{
+ return tsc2003_read(d, MEAS_VBAT1, pd, t);
+}
+
+static inline int tsc2003_read_vbat2 (struct tsc2003_data *d, enum
+tsc2003_pd pd, int *t)
+{
+ return tsc2003_read(d, MEAS_VBAT2, pd, t);
+}
+
+static inline int tsc2003_powerdown (struct tsc2003_data *d)
+{
+ /* we don't have a distinct powerdown command,
+ so do a benign read with the PD bits cleared */
+ return tsc2003_read(d, MEAS_IN1, PD_POWERDOWN, 0);
+}
+
+void tsc2003_init_client (struct i2c_client *client)
+{
+ struct tsc2003_data *data = i2c_get_clientdata(client);
+
+ data->pd = PD_PENIRQ_DISARM;
+ data->m = M_8BIT;
+ return;
+}
+
+#define PENUP_TIMEOUT 50 /* msec */
+
+static irqreturn_t tsc2003_penirq (int irq, void *v)
+{
+ struct tsc2003_data *d = v;
+ complete(&d->penirq_completion);
+ return IRQ_HANDLED;
+}
+
+/*
+static int tsc2003_remove (struct device *dev)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct tsc2003_data, driver);
+ free_irq(d->penirq,d);
+ input_unregister_device(d->idev);
+ return 0;
+}
+*/
+
+static void tsc2003_pen_up (unsigned long v)
+{
+ struct tsc2003_data *d = (struct tsc2003_data *)v;
+ input_report_abs(d->idev, ABS_PRESSURE, 0);
+ input_sync(d->idev);
+ return;
+}
+
+static inline void tsc2003_restart_pen_up_timer (struct tsc2003_data *d)
+{
+ mod_timer(&d->penirq_timer, jiffies + (PENUP_TIMEOUT * HZ) / 1000);
+}
+
+static int tsc2003ts_thread (void *v)
+{
+ struct tsc2003_data *d = v;
+ struct task_struct *tsk = current;
+ int ret;
+
+ d->tstask = tsk;
+
+ daemonize(DRIVER_NAME "tsd");
+ allow_signal(SIGKILL);
+
+ complete(&d->tstask_completion);
+
+#if defined(CONFIG_I2C_DEBUG_CHIP)
+ printk(KERN_INFO "%s: address 0x%x\n",
+ __FUNCTION__, d->client.addr);
+#endif
+
+ while (!signal_pending(tsk))
+ {
+ unsigned int x, y, p;
+
+ if (!down_interruptible(&d->sem))
+ {
+ d->pd = PD_PENIRQ_DISARM;
+ disable_irq(d->penirq);
+ tsc2003_read_xpos(d, PD_PENIRQ_DISARM, &x);
+ tsc2003_read_ypos(d, PD_PENIRQ_DISARM, &y);
+ tsc2003_read_pressure(d, PD_PENIRQ_DISARM, &p);
+
+ /* non-X-Y driver read to avoid glitch in penirq (errata?) */
+ tsc2003_read_vbat1(d, PD_PENIRQ_DISARM, 0);
+ enable_irq(d->penirq);
+
+
+ input_report_abs(d->idev, ABS_X, 4096 - x);
+ input_report_abs(d->idev, ABS_Y, 4096 - y);
+ input_report_abs(d->idev, ABS_PRESSURE, p);
+ input_sync(d->idev);
+
+
+ do
+ {
+ ret = wait_for_completion_interruptible_timeout(&d->penirq_completion, HZ / 100);
+ if (ret)
+ {
+ if (d->pd == PD_PENIRQ_DISARM)
+ {
+ /* fake penirq, avoid glitch and then start watching for real now */
+ d->pd = PD_PENIRQ_ARM;
+ tsc2003_read_vbat1(d, PD_PENIRQ_ARM, 0);
+ up(&d->sem);
+ }
+ else
+ {
+ /* pen down event, (re)start the pen up timer */
+ tsc2003_restart_pen_up_timer(d);
+ }
+ }
+ else
+ {
+ if (d->pd != PD_PENIRQ_ARM)
+ {
+ /* fake penirq never arrived, which would be the case
+ for a level-triggered irq line */
+ tsc2003_read_vbat1(d, PD_PENIRQ_ARM, 0);
+ d->pd = PD_PENIRQ_ARM;
+ up(&d->sem);
+ }
+ if (timer_pending(&d->penirq_timer))
+ {
+ /* pen is down, time to send (another) sample */
+ break;
+ }
+ else
+ {
+ /* pen is up, nothing to do but wait for it to
+ come down */
+ wait_for_completion_interruptible(&d->penirq_completion);
+ /* pen is down, (re)start the pen up timer */
+ tsc2003_restart_pen_up_timer(d);
+ break;
+ }
+ }
+ }
+ while (!signal_pending(tsk));
+ }
+ }
+
+ d->tstask = NULL;
+ complete_and_exit(&d->tstask_completion, 0);
+}
+
+static int tsc2003_idev_open (struct input_dev *idev)
+{
+ struct tsc2003_data *d = idev->private;
+ int ret = 0;
+
+ if (down_interruptible(&d->sem))
+ return -EINTR;
+
+ if (d->tstask)
+ panic(DRIVER_NAME "tsd already running (!). abort.");
+
+ d->penirq_timer.data = (unsigned long)d;
+ d->penirq_timer.function = tsc2003_pen_up;
+
+ ret = kernel_thread(tsc2003ts_thread, d, CLONE_KERNEL);
+ if (ret >= 0)
+ {
+ wait_for_completion(&d->tstask_completion);
+ ret = 0;
+ }
+
+
+
+ up(&d->sem);
+ return ret;
+}
+
+static void tsc2003_idev_close (struct input_dev *idev)
+{
+ struct tsc2003_data *d = idev->private;
+ down_interruptible(&d->sem);
+ if (d->tstask)
+ {
+ send_sig(SIGKILL, d->tstask, 1);
+ wait_for_completion(&d->tstask_completion);
+ }
+
+ if (timer_pending(&d->penirq_timer))
+ del_timer(&d->penirq_timer);
+ up(&d->sem);
+ return;
+}
+
+#if defined(CONFIG_SYSFS) && defined(CONFIG_SENSORS_TSC2003_SYSFS)
+static ssize_t show_addr (struct device *dev, char *buf)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct
+tsc2003_data, driver);
+ return sprintf(buf, "%d\n", d->client.addr);
+}
+static DEVICE_ATTR(addr, S_IRUGO, show_addr, NULL);
+
+static ssize_t show_vbat1 (struct device *dev, char *buf)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct
+tsc2003_data, driver);
+ return sprintf(buf, "%d\n", d->vbat1);
+}
+static DEVICE_ATTR(vbat1, S_IRUGO, show_vbat1, NULL);
+
+static ssize_t show_vbat2 (struct device *dev, char *buf)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct
+tsc2003_data, driver);
+ return sprintf(buf, "%d\n", d->vbat2);
+}
+static DEVICE_ATTR(vbat2, S_IRUGO, show_vbat2, NULL);
+
+static ssize_t show_in1 (struct device *dev, char *buf)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct
+tsc2003_data, driver);
+ return sprintf(buf, "%d\n", d->in1);
+}
+static DEVICE_ATTR(in1, S_IRUGO, show_in1, NULL);
+
+static ssize_t show_in2 (struct device *dev, char *buf)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct
+tsc2003_data, driver);
+ return sprintf(buf, "%d\n", d->in2);
+}
+static DEVICE_ATTR(in2, S_IRUGO, show_in2, NULL);
+
+static ssize_t show_temp0 (struct device *dev, char *buf)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct
+tsc2003_data, driver);
+ return sprintf(buf, "%d\n", d->temp0);
+}
+static DEVICE_ATTR(temp0, S_IRUGO, show_temp0, NULL);
+
+static ssize_t show_temp1 (struct device *dev, char *buf)
+{
+ struct tsc2003_data *d = container_of(dev->driver, struct
+tsc2003_data, driver);
+ return sprintf(buf, "%d\n", d->temp1);
+}
+static DEVICE_ATTR(temp1, S_IRUGO, show_temp1, NULL);
+
+#warning "TODO: this daemon sometimes hangs the touchscreen daemon"
+#warning "TODO: under periods of heavy touch screen activity."
+#warning "TODO: Use with caution until the bug is squashed."
+static int tsc2003s_thread (void *v)
+{
+ struct tsc2003_data *d = v;
+
+ daemonize(DRIVER_NAME "sd");
+ allow_signal(SIGKILL);
+
+ printk(KERN_INFO "%s: address 0x%x\n",
+ __FUNCTION__, d->client.addr);
+
+ while (!signal_pending(current))
+ {
+ if (!down_interruptible(&d->sem))
+ {
+ if (!timer_pending(&d->penirq_timer))
+ {
+ tsc2003_read_vbat1(d, d->pd, &d->vbat1);
+ tsc2003_read_vbat2(d, d->pd, &d->vbat2);
+ tsc2003_read_in1(d, d->pd, &d->in1);
+ tsc2003_read_in2(d, d->pd, &d->in2);
+ tsc2003_read_temp0(d, d->pd, &d->temp0);
+ tsc2003_read_temp1(d, d->pd, &d->temp1);
+ }
+ up(&d->sem);
+ }
+ set_task_state(current, TASK_INTERRUPTIBLE);
+ schedule_timeout(5 * HZ);
+ }
+ do_exit(0);
+}
+#endif
+
+static int tsc2003_detect_irq (struct tsc2003_data *d)
+{
+ d->penirq = IRQ_GPIO(16); //PWM0 GPIO
+ return 0;
+}
+
+/*
+static int tsc2003_probe (struct device *dev)
+{
+ //struct platform_device *p = to_platform_device(dev);
+ struct tsc2003_data *d = container_of(dev->driver, struct tsc2003_data, driver);
+ int ret = 0;
+ int error;
+
+ printk(KERN_ERR "TSC2003: tsc2003_probe probing...\n");
+
+ error = tsc2003_detect_irq(d);
+ if(error)
+ {
+ printk(KERN_ERR "TSC2003: IRQ probe failed\n");
+ }
+
+ if (d->penirq)
+ {
+ ret = request_irq(d->penirq, tsc2003_penirq, IRQF_TRIGGER_FALLING, DRIVER_NAME, d);
+ if (!ret)
+ {
+ printk(KERN_INFO "%s: irq %d\n", __FUNCTION__, d->penirq);
+ }
+ else
+ {
+ printk(KERN_INFO "%s: cannot grab irq %d\n", __FUNCTION__, d->penirq);
+ }
+ }
+
+#if defined(CONFIG_SYSFS) && defined(CONFIG_SENSORS_TSC2003_SYSFS)
+ ret = kernel_thread(tsc2003s_thread, d, CLONE_KERNEL);
+ if (ret >= 0)
+ ret = 0;
+
+ device_create_file(dev, &dev_attr_addr);
+ device_create_file(dev, &dev_attr_vbat1);
+ device_create_file(dev, &dev_attr_vbat2);
+ device_create_file(dev, &dev_attr_in1);
+ device_create_file(dev, &dev_attr_in2);
+ device_create_file(dev, &dev_attr_temp0);
+ device_create_file(dev, &dev_attr_temp1);
+#endif
+
+
+ return ret;
+}
+*/
+
+static int tsc2003_driver_register (struct tsc2003_data *data)
+{
+ struct input_dev *idev;
+ int ret = 0;
+ int error;
+
+ init_MUTEX(&data->sem);
+
+ init_timer(&data->penirq_timer);
+ data->penirq_timer.data = (unsigned long)data;
+ data->penirq_timer.function = tsc2003_pen_up;
+
+ error = tsc2003_detect_irq(data);
+ if(error)
+ {
+ printk(KERN_ERR "TSC2003: IRQ probe failed\n");
+ }
+
+ if (data->penirq)
+ {
+ ret = request_irq(data->penirq, tsc2003_penirq, IRQF_TRIGGER_FALLING, DRIVER_NAME, data);
+ if (!ret)
+ {
+ printk(KERN_INFO "%s: irq %d\n", __FUNCTION__, data->penirq);
+ init_completion(&data->tstask_completion);
+ init_completion(&data->penirq_completion);
+ }
+ else
+ {
+ printk(KERN_ERR "%s: cannot grab irq %d\n", __FUNCTION__, data->penirq);
+ }
+ }
+
+ idev = input_allocate_device();
+ data->idev = idev;
+
+ idev->private = data;
+ idev->name = DRIVER_NAME;
+ idev->evbit[0] = BIT(EV_ABS);
+ idev->open = tsc2003_idev_open;
+ idev->close = tsc2003_idev_close;
+ idev->absbit[LONG(ABS_X)] = BIT(ABS_X);
+ idev->absbit[LONG(ABS_Y)] = BIT(ABS_Y);
+ idev->absbit[LONG(ABS_PRESSURE)] = BIT(ABS_PRESSURE);
+ input_set_abs_params(idev, ABS_X, 0, ADC_MAX, 0, 0);
+ input_set_abs_params(idev, ABS_Y, 0, ADC_MAX, 0, 0);
+ input_set_abs_params(idev, ABS_PRESSURE, 0, 0, 0, 0);
+
+ if (!ret)
+ {
+ input_register_device(idev);
+ printk(KERN_INFO "tsc2003 - registering input device\n");
+ }
+
+ return ret;
+}
+
+static int tsc2003_i2c_attach_adapter(struct i2c_adapter *adapter)
+{
+ printk(KERN_INFO "tsc2003 i2c touch screen controller\n");
+ printk(KERN_INFO "Bill Gatliff <bgat at billgatliff.com\n");
+ printk(KERN_INFO "Nicholas Chen <nchen at cs.umd.edu>\n");
+
+ return i2c_probe(adapter, &addr_data, tsc2003_i2c_detect);
+}
+
+static int tsc2003_i2c_detach_client(struct i2c_client *client)
+{
+ int err;
+ struct tsc2003_data *d = i2c_get_clientdata(client);
+
+ free_irq(d->penirq,d);
+ input_unregister_device(d->idev);
+
+ if ((err = i2c_detach_client(client))) {
+ dev_err(&client->dev, "Client deregistration failed, "
+ "client not detached.\n");
+ return err;
+ }
+
+ return 0;
+}
+
+static struct i2c_driver tsc2003_driver = {
+ .driver = {
+ .owner = THIS_MODULE,
+ .name = DRIVER_NAME,
+ },
+ .attach_adapter = tsc2003_i2c_attach_adapter,
+ .detach_client = tsc2003_i2c_detach_client,
+ // .command = tsc2003_command,
+};
+
+static int tsc2003_i2c_detect (struct i2c_adapter *adapter, int address,
+int kind)
+{
+ struct i2c_client *new_client;
+ struct tsc2003_data *data;
+
+ int err = 0;
+ const char *name = "";
+
+ if (!i2c_check_functionality(adapter,
+ I2C_FUNC_SMBUS_BYTE_DATA
+ | I2C_FUNC_I2C
+ | I2C_FUNC_SMBUS_WORD_DATA))
+ goto exit;
+
+ data = kcalloc(1, sizeof(*data), GFP_KERNEL);
+ if (!data) {
+ err = -ENOMEM;
+ goto exit;
+ }
+
+ new_client = &data->client;
+ i2c_set_clientdata(new_client, data);
+ new_client->addr = address;
+ new_client->adapter = adapter;
+ new_client->driver = &tsc2003_driver;
+ new_client->flags = 0;
+
+ /* TODO: I'm pretty sure I'm not dealing with kind correctly */
+ if (kind == 0 /* identification */ || kind < 0 /* detection */)
+ kind = tsc2003;
+
+ if (kind == tsc2003)
+ name = DRIVER_NAME;
+
+ /* try a command, see if we get an ack;
+ if we do, assume it's our device */
+ printk(KERN_INFO "%s: probing address 0x%x\n",
+ __FUNCTION__, address);
+ err = tsc2003_powerdown(data);
+ if (err >= 0)
+ {
+ strlcpy(new_client->name, name, I2C_NAME_SIZE);
+ err = i2c_attach_client(new_client);
+ if (err) goto exit_free;
+
+ tsc2003_init_client(new_client);
+
+ err = tsc2003_driver_register(data);
+ if (err < 0) goto exit_free;
+
+ printk(KERN_INFO "%s: device address 0x%x attached.\n",
+ __FUNCTION__, address);
+ return 0;
+ }
+ /* failure to detect when everything else is ok isn't an error */
+ else err = 0;
+
+ exit_free:
+ kfree(new_client);
+ exit:
+ return err;
+}
+
+static int __init tsc2003_init(void)
+{
+ return i2c_add_driver(&tsc2003_driver);
+}
+
+static void __exit tsc2003_exit(void)
+{
+ i2c_del_driver(&tsc2003_driver);
+}
+
+MODULE_AUTHOR("Bill Gatliff <bgat at billgatliff.com>");
+MODULE_DESCRIPTION("TSC2003 Touch Screen Controller driver");
+MODULE_LICENSE("GPL");
+
+module_init(tsc2003_init);
+module_exit(tsc2003_exit);
+
diff --git a/packages/linux/gumstix-kernel-2.6.21/uImage-in-own-partition.patch b/packages/linux/gumstix-kernel-2.6.21/uImage-in-own-partition.patch
new file mode 100644
index 0000000000..f9a9df46dc
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/uImage-in-own-partition.patch
@@ -0,0 +1,56 @@
+Index: linux-2.6.21gum/drivers/mtd/maps/gumstix-flash.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/mtd/maps/gumstix-flash.c
++++ linux-2.6.21gum/drivers/mtd/maps/gumstix-flash.c
+@@ -39,8 +39,12 @@ static struct mtd_partition gumstix_flas
+ .offset = FLASH_ADDR
+ },{
+ .name = "RootFS",
+- .size = MTDPART_SIZ_FULL,
+- .offset = MTDPART_OFS_APPEND
++ .size = MTDPART_SIZ_REMAINDER,
++ .offset = MTDPART_OFS_NXTBLK
++ },{
++ .name = "Kernel",
++ .size = 0x00100000,
++ .offset = MTDPART_OFS_NXTBLK
+ }
+ };
+
+Index: linux-2.6.21gum/drivers/mtd/mtdpart.c
+===================================================================
+--- linux-2.6.21gum.orig/drivers/mtd/mtdpart.c
++++ linux-2.6.21gum/drivers/mtd/mtdpart.c
+@@ -321,7 +321,7 @@ int add_mtd_partitions(struct mtd_info *
+ {
+ struct mtd_part *slave;
+ u_int32_t cur_offset = 0;
+- int i;
++ int i,j;
+
+ printk (KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
+
+@@ -409,6 +409,11 @@ int add_mtd_partitions(struct mtd_info *
+ }
+ if (slave->mtd.size == MTDPART_SIZ_FULL)
+ slave->mtd.size = master->size - slave->offset;
++ if (slave->mtd.size == MTDPART_SIZ_REMAINDER)
++ {
++ slave->mtd.size = master->size - slave->offset;
++ for(j=i+1; j<nbparts; j++) slave->mtd.size -= parts[j].size;
++ }
+ cur_offset = slave->offset + slave->mtd.size;
+
+ printk (KERN_NOTICE "0x%08x-0x%08x : \"%s\"\n", slave->offset,
+Index: linux-2.6.21gum/include/linux/mtd/partitions.h
+===================================================================
+--- linux-2.6.21gum.orig/include/linux/mtd/partitions.h
++++ linux-2.6.21gum/include/linux/mtd/partitions.h
+@@ -47,6 +47,7 @@ struct mtd_partition {
+
+ #define MTDPART_OFS_NXTBLK (-2)
+ #define MTDPART_OFS_APPEND (-1)
++#define MTDPART_SIZ_REMAINDER (-1)
+ #define MTDPART_SIZ_FULL (0)
+
+
diff --git a/packages/linux/gumstix-kernel-2.6.21/ucb1400-ac97-audio.patch b/packages/linux/gumstix-kernel-2.6.21/ucb1400-ac97-audio.patch
new file mode 100644
index 0000000000..eb40bd714a
--- /dev/null
+++ b/packages/linux/gumstix-kernel-2.6.21/ucb1400-ac97-audio.patch
@@ -0,0 +1,309 @@
+Index: linux-2.6.21gum/sound/pci/ac97/ac97_codec.c
+===================================================================
+--- linux-2.6.21gum.orig/sound/pci/ac97/ac97_codec.c
++++ linux-2.6.21gum/sound/pci/ac97/ac97_codec.c
+@@ -158,7 +158,7 @@ static const struct ac97_codec_id snd_ac
+ { 0x4e534300, 0xffffffff, "LM4540,43,45,46,48", NULL, NULL }, // only guess --jk
+ { 0x4e534331, 0xffffffff, "LM4549", NULL, NULL },
+ { 0x4e534350, 0xffffffff, "LM4550", patch_lm4550, NULL }, // volume wrap fix
+-{ 0x50534304, 0xffffffff, "UCB1400", patch_ucb1400, NULL },
++{ 0x50534304, 0xffffffff, "UCB1400", patch_ucb1400, NULL, AC97_HAS_NO_STD_PCM },
+ { 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH },
+ { 0x54524102, 0xffffffff, "TR28022", NULL, NULL },
+ { 0x54524106, 0xffffffff, "TR28026", NULL, NULL },
+Index: linux-2.6.21gum/sound/pci/ac97/ac97_patch.c
+===================================================================
+--- linux-2.6.21gum.orig/sound/pci/ac97/ac97_patch.c
++++ linux-2.6.21gum/sound/pci/ac97/ac97_patch.c
+@@ -29,6 +29,10 @@
+ #include <linux/slab.h>
+ #include <linux/mutex.h>
+
++#include <linux/proc_fs.h>
++#include <linux/string.h>
++#include <linux/ctype.h>
++
+ #include <sound/core.h>
+ #include <sound/pcm.h>
+ #include <sound/control.h>
+@@ -406,6 +410,238 @@
+ }
+
+ /*
++ * UCB1400 codec
++ */
++
++#define AC97_UCB1400_FCSR1 0x6a
++#define AC97_UCB1400_FCSR2 0x6c
++
++static const struct snd_kcontrol_new ucb1400_snd_ac97_controls[] = {
++ AC97_SINGLE("Tone Control - Bass", AC97_UCB1400_FCSR1, 11, 4, 0),
++ AC97_SINGLE("Tone Control - Treble", AC97_UCB1400_FCSR1, 9, 2, 0),
++ AC97_SINGLE("Headphone Playback Switch", AC97_UCB1400_FCSR1, 6, 1, 0),
++ AC97_SINGLE("De-emphasis", AC97_UCB1400_FCSR1, 5, 1, 0),
++ AC97_SINGLE("DC Filter", AC97_UCB1400_FCSR1, 4, 1, 0),
++ AC97_SINGLE("Hi-pass Filter", AC97_UCB1400_FCSR1, 3, 1, 0),
++ AC97_SINGLE("ADC Filter", AC97_UCB1400_FCSR2, 12, 1, 0),
++};
++
++#define NUM_GPIO_LINES 10
++
++static struct proc_dir_entry *proc_gpio_parent;
++static struct proc_dir_entry *proc_gpios[NUM_GPIO_LINES];
++
++typedef struct
++{
++ int gpio;
++ char name[32];
++ struct snd_ac97 *ac97;
++} gpio_summary_type;
++
++static gpio_summary_type gpio_summaries[NUM_GPIO_LINES] =
++{
++ { 0, "UCB1400-0-0" },
++ { 1, "UCB1400-0-1" },
++ { 2, "UCB1400-0-2" },
++ { 3, "UCB1400-0-3" },
++ { 4, "UCB1400-0-4" },
++ { 5, "UCB1400-0-5" },
++ { 6, "UCB1400-0-6" },
++ { 7, "UCB1400-0-7" },
++ { 8, "UCB1400-0-8" },
++ { 9, "UCB1400-0-9" }
++};
++
++
++static int proc_ucb1400_ac97_gpio_write(struct file *file, const char __user *buf,
++ unsigned long count, void *data)
++{
++ char *cur, lbuf[count + 1];
++ gpio_summary_type *summary = data;
++ u32 direction_is_out, operation_is_set;
++ int i = summary->gpio;
++ u16 dir, value;
++
++ if (!capable(CAP_SYS_ADMIN))
++ return -EACCES;
++
++ memset(lbuf, 0, count + 1);
++
++ if (copy_from_user(lbuf, buf, count))
++ return -EFAULT;
++
++ cur = lbuf;
++
++ // Get current values
++ direction_is_out = !!(snd_ac97_read(summary->ac97, 0x5c) & (0x0001 << i));
++ operation_is_set = !!(snd_ac97_read(summary->ac97, 0x5a) & (0x0001 << i));
++ while(1)
++ {
++ // We accept options: {GPIO|AF1|AF2|AF3}, {set|clear}, {in|out}
++ // Anything else is an error
++ while(cur[0] && (isspace(cur[0]) || ispunct(cur[0]))) cur = &(cur[1]);
++
++ if('\0' == cur[0]) break;
++
++ // Ok, so now we're pointing at the start of something
++ switch(cur[0])
++ {
++ case 'G':
++ // Check that next is "PIO" -- '\0' will cause safe short-circuit if end of buf
++ if(!(cur[1] == 'P' && cur[2] == 'I' && cur[3] == 'O')) goto parse_error;
++ cur = &(cur[4]);
++ break;
++ case 's':
++ if(!(cur[1] == 'e' && cur[2] == 't')) goto parse_error;
++ operation_is_set = 1;
++ cur = &(cur[3]);
++ break;
++ case 'c':
++ if(!(cur[1] == 'l' && cur[2] == 'e' && cur[3] == 'a' && cur[4] == 'r')) goto
++parse_error;
++ operation_is_set = 0;
++ cur = &(cur[5]);
++ break;
++ case 'i':
++ if(!(cur[1] == 'n')) goto parse_error;
++ direction_is_out = 0;
++ cur = &(cur[2]);
++ break;
++ case 'o':
++ if(!(cur[1] == 'u' && cur[2] == 't')) goto parse_error;
++ direction_is_out = 1;
++ cur = &(cur[3]);
++ break;
++ default: goto parse_error;
++ }
++ }
++
++ // set/get value
++ dir = snd_ac97_read(summary->ac97, 0x5c);
++ value = snd_ac97_read(summary->ac97, 0x5a);
++ if (direction_is_out)
++ {
++ dir |= 0x0001 << i;
++ if (operation_is_set)
++ {
++ value |= 0x0001 << i;
++ }
++ else
++ {
++ value &= ~(0x0001 << i);
++ }
++
++ snd_ac97_write(summary->ac97, 0x5c, dir);
++ snd_ac97_write(summary->ac97, 0x5a, value);
++ }
++ else // direction in
++ {
++ dir &= ~(0x0001 << i);
++ snd_ac97_write(summary->ac97, 0x5c, dir);
++ operation_is_set = snd_ac97_read(summary->ac97, 0x5a) & ~(0x0001 << i);
++ }
++
++#ifdef CONFIG_PROC_GPIO_DEBUG
++ printk(KERN_INFO "Set (%s,%s,%s) via /proc/gpio/%s\n",
++ "GPIO",
++ direction_is_out ? "out" : "in",
++ operation_is_set ? "set" : "clear",
++ summary->name);
++#endif
++
++ return count;
++
++parse_error:
++ printk(KERN_CRIT "Parse error: Expect \"GPIO|[set|clear]|[in|out] ...\"\n");
++ return -EINVAL;
++}
++
++static int proc_ucb1400_ac97_gpio_read(char *page, char **start, off_t off,
++ int count, int *eof, void *data)
++{
++ char *p = page;
++ gpio_summary_type *summary = data;
++ int len, i; /*, af;*/
++ i = summary->gpio;
++
++ p += sprintf(p, "%d\t%s\t%s\t%s\n", i,
++ "GPIO",
++ (snd_ac97_read(summary->ac97, 0x5c) & (0x0001 << i)) ? "out" : "in",
++ (snd_ac97_read(summary->ac97, 0x5a) & (0x0001 << i)) ? "set" : "clear");
++
++ len = (p - page) - off;
++
++ if(len < 0)
++ {
++ len = 0;
++ }
++
++ *eof = (len <= count) ? 1 : 0;
++ *start = page + off;
++
++ return len;
++}
++
++int patch_ucb1400(struct snd_ac97 * ac97)
++{
++ int err, i;
++
++ proc_gpio_parent = NULL;
++ for (proc_gpio_parent = proc_root.subdir; proc_gpio_parent; proc_gpio_parent = proc_gpio_parent->next) {
++ if (( proc_gpio_parent->namelen == 4 ) && ( memcmp(proc_gpio_parent->name, "gpio", 4 ) == 0 ))
++ break;
++ }
++
++ // proc_gpio_parent will be non-NULL if the directory already exists
++
++ if (!proc_gpio_parent) {
++ proc_gpio_parent = proc_mkdir("gpio", NULL);
++ }
++
++ if(!proc_gpio_parent) return 0;
++
++ for(i=0; i < NUM_GPIO_LINES; i++)
++ {
++ proc_gpios[i] = create_proc_entry(gpio_summaries[i].name, 0644, proc_gpio_parent);
++ if(proc_gpios[i])
++ {
++ gpio_summaries[i].ac97 = ac97;
++ proc_gpios[i]->data = &gpio_summaries[i];
++ proc_gpios[i]->read_proc = proc_ucb1400_ac97_gpio_read;
++ proc_gpios[i]->write_proc = proc_ucb1400_ac97_gpio_write;
++ }
++ }
++
++ for(i = 0; i < ARRAY_SIZE(ucb1400_snd_ac97_controls); i++) {
++ if((err = snd_ctl_add(ac97->bus->card, snd_ac97_cnew(&ucb1400_snd_ac97_controls[i], ac97))) < 0)
++ return err;
++ }
++
++ snd_ac97_write_cache(ac97, AC97_UCB1400_FCSR1,
++ (0 << 11) | // 0 base boost
++ (0 << 9) | // 0 treble boost
++ (0 << 7) | // Mode = flat
++ (1 << 6) | // Headphones enable
++ (0 << 5) | // De-emphasis disabled
++ (1 << 4) | // DC filter enabled
++ (1 << 3) | // Hi-pass filter enabled
++ (0 << 2) | // disable interrupt signalling via GPIO_INT
++ (1 << 0) // clear ADC overflow status if set
++ );
++
++ snd_ac97_write_cache(ac97, AC97_UCB1400_FCSR2,
++ (0 << 15) | // must be 0
++ (0 << 13) | // must be 0
++ (1 << 12) | // ADC filter enabled
++ (0 << 10) | // must be 0
++ (0 << 4) | // Smart low power mode on neither Codec nor PLL
++ (0 << 0) // must be 0
++ );
++
++ return 0;
++}
++
++/*
+ * May 2, 2003 Liam Girdwood <liam.girdwood@wolfsonmicro.com>
+ * removed broken wolfson00 patch.
+ * added support for WM9705,WM9708,WM9709,WM9710,WM9711,WM9712 and WM9717.
+@@ -3408,41 +3644,3 @@
+ ac97->res_table = lm4550_restbl;
+ return 0;
+ }
+-
+-/*
+- * UCB1400 codec (http://www.semiconductors.philips.com/acrobat_download/datasheets/UCB1400-02.pdf)
+- */
+-static const struct snd_kcontrol_new snd_ac97_controls_ucb1400[] = {
+-/* enable/disable headphone driver which allows direct connection to
+- stereo headphone without the use of external DC blocking
+- capacitors */
+-AC97_SINGLE("Headphone Driver", 0x6a, 6, 1, 0),
+-/* Filter used to compensate the DC offset is added in the ADC to remove idle
+- tones from the audio band. */
+-AC97_SINGLE("DC Filter", 0x6a, 4, 1, 0),
+-/* Control smart-low-power mode feature. Allows automatic power down
+- of unused blocks in the ADC analog front end and the PLL. */
+-AC97_SINGLE("Smart Low Power Mode", 0x6c, 4, 3, 0),
+-};
+-
+-static int patch_ucb1400_specific(struct snd_ac97 * ac97)
+-{
+- int idx, err;
+- for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_ucb1400); idx++)
+- if ((err = snd_ctl_add(ac97->bus->card, snd_ctl_new1(&snd_ac97_controls_ucb1400[idx], ac97))) < 0)
+- return err;
+- return 0;
+-}
+-
+-static struct snd_ac97_build_ops patch_ucb1400_ops = {
+- .build_specific = patch_ucb1400_specific,
+-};
+-
+-int patch_ucb1400(struct snd_ac97 * ac97)
+-{
+- ac97->build_ops = &patch_ucb1400_ops;
+- /* enable headphone driver and smart low power mode by default */
+- snd_ac97_write(ac97, 0x6a, 0x0050);
+- snd_ac97_write(ac97, 0x6c, 0x0030);
+- return 0;
+-}
diff --git a/packages/linux/gumstix-kernel_2.6.21.bb b/packages/linux/gumstix-kernel_2.6.21.bb
new file mode 100644
index 0000000000..3bc7df238a
--- /dev/null
+++ b/packages/linux/gumstix-kernel_2.6.21.bb
@@ -0,0 +1,54 @@
+require gumstix-linux.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ ${@base_contains('MACHINE_FEATURES', 'lcd','file://defconfig', 'file://defconfig-nofb',d)} \
+ file://tsc2003.c \
+ file://tsc2003-config.diff;patch=1 \
+ file://pxa-regs-additions.patch;patch=1 \
+ file://header.patch;patch=1 \
+ file://arch-config.patch;patch=1 \
+ file://board-init.patch;patch=1 \
+ file://compact-flash.patch;patch=1 \
+ file://flash.patch;patch=1 \
+ file://pxa2xx_udc.patch;patch=1 \
+ file://bkpxa-pxa-cpu.patch;patch=1 \
+ file://bkpxa-pxa-cpufreq.patch;patch=1 \
+ file://proc-gpio.patch;patch=1 \
+ file://serial-ether-addr.patch;patch=1 \
+ file://cpufreq-better-freqs.patch;patch=1 \
+ file://ethernet-config.patch;patch=1 \
+ file://smc-ether-addr.patch;patch=1 \
+ file://cpufreq-ondemand-by-default.patch;patch=1 \
+ file://modular-init-bluetooth.patch;patch=1 \
+ file://modular-init-smc91x.patch;patch=1 \
+ file://modular-init-usb-gadget.patch;patch=1 \
+ file://bugfix-i2c-include.patch;patch=1 \
+ file://bugfix-mmc-clock.patch;patch=1 \
+ file://bugfix-pxa-cpufreq.patch;patch=1 \
+ file://bugfix-serial-interrupt.patch;patch=1 \
+ file://bugfix-serial-register-status.patch;patch=1 \
+ file://mach-types-fix.patch;patch=1 \
+ file://pcm-gcc-411-bugfix.patch;patch=1 \
+ file://ucb1400-ac97-audio.patch;patch=1 \
+ file://gumstix-asoc.patch;patch=1 \
+ file://disable-uncompress-message.patch;patch=1 \
+ file://serial-divisor.patch;patch=1 \
+ file://mmc-card-detect.patch;patch=1 \
+ file://misalignment-handling.patch;patch=1 \
+ file://compile-fix-pxa_cpufreq.patch;patch=1 \
+ file://pxafb-definition.patch;patch=1 \
+ file://270-usb-gadget-udc.patch;patch=1 \
+ file://gumstix-pxa270-usb-host.patch;patch=1 \
+ file://cpufreq-fixup.patch;patch=1 \
+ file://uImage-in-own-partition.patch;patch=1 \
+ file://pxa-regs-fixup.patch;patch=1 \
+ file://gumstix-fb-logo.patch;patch=1 \
+ file://gumstix-pxa270-mmc.patch;patch=1 \
+ file://pxafb-18bpp-mode.patch;patch=1 \
+ file://smc911x-fixup.patch;patch=1 \
+ "
+
+do_configure_prepend() {
+ ${@base_contains('MACHINE_FEATURES', 'lcd','','mv ${WORKDIR}/defconfig-nofb ${WORKDIR}/defconfig',d)}
+ cp ${WORKDIR}/tsc2003.c ${S}/drivers/i2c/chips/
+}
diff --git a/packages/linux/gumstix-linux.inc b/packages/linux/gumstix-linux.inc
new file mode 100644
index 0000000000..50111cb545
--- /dev/null
+++ b/packages/linux/gumstix-linux.inc
@@ -0,0 +1,74 @@
+DESCRIPTION = "Linux kernel for custom configurations"
+SECTION = "kernel"
+LICENSE = "GPL"
+PR = "r1"
+
+inherit kernel
+
+DEPENDS += " \
+ u-boot-mkimage-openmoko-native \
+ "
+
+KERNEL_IMAGE_BASE_NAME = ${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}
+
+S = "${WORKDIR}/linux-${PV}"
+do_deploy[dirs] = "${S}"
+
+do_configure_prepend() {
+ echo "" > ${S}/.config
+
+ if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ echo "CONFIG_AEABI=y" >> ${S}/.config
+ echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
+ else
+ echo "# CONFIG_AEABI is not set" >> ${S}/.config
+ echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
+ fi
+
+ echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+ sed -e '/CONFIG_AEABI/d' \
+ -e '/CONFIG_OABI_COMPAT=/d' \
+ -e '/CONFIG_CMDLINE=/d' \
+ < '${WORKDIR}/defconfig' >>'${S}/.config'
+
+ yes '' | oe_runmake oldconfig
+}
+
+do_sizecheck() {
+ if [ ! -z "${KERNEL_IMAGE_MAXSIZE}" ]; then
+ size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'`
+ if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then
+ rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
+ die "This kernel (size=$size) is too big for your device. Please reduce the size of the kernel by making more of it modular."
+ fi
+ fi
+}
+
+do_install_prepend() {
+ if test -e arch/${ARCH}/boot/Image ; then
+ ln -f arch/${ARCH}/boot/Image arch/${ARCH}/boot/uImage
+ fi
+
+ if test -e arch/${ARCH}/boot/images/uImage ; then
+ ln -f arch/${ARCH}/boot/images/uImage arch/${ARCH}/boot/uImage
+ fi
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
+
+ if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
+ ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
+ uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin
+ rm -f linux.bin
+
+ fi
+}
+
+addtask sizecheck before do_install after do_compile
+addtask deploy before do_package after do_install
+
+
diff --git a/packages/linux/ixp4xx-kernel/2.6.18/defconfig b/packages/linux/ixp4xx-kernel/2.6.18/defconfig
deleted file mode 100644
index 7189609472..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.18/defconfig
+++ /dev/null
@@ -1,1840 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.18
-# Tue Oct 31 07:57:52 2006
-#
-CONFIG_ARM=y
-CONFIG_GENERIC_TIME=y
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP3XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-CONFIG_ARCH_AVILA=y
-CONFIG_MACH_LOFT=y
-# CONFIG_ARCH_ADI_COYOTE is not set
-CONFIG_ARCH_IXDP425=y
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-CONFIG_ARCH_IXCDP1100=y
-# CONFIG_ARCH_PRPMC1100 is not set
-CONFIG_MACH_NAS100D=y
-CONFIG_ARCH_IXDP4XX=y
-CONFIG_MACH_FSG=y
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_DMABOUNCE=y
-# CONFIG_IXP4XX_INDIRECT_PCI is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_PCI=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-# CONFIG_NO_IDLE_HZ is not set
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-# CONFIG_APM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER 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=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_H323=m
-CONFIG_IP_NF_SIP=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# Bridge: Netfilter Configuration
-#
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-# CONFIG_BT_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-# CONFIG_BT_HCIUART is not set
-CONFIG_BT_HCIBCM203X=m
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-CONFIG_NFTL=y
-CONFIG_NFTL_RW=y
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL 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=y
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# 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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IXP4XX=y
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# 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
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-CONFIG_ISCSI_TCP=m
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-CONFIG_SCSI_SATA=m
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-# CONFIG_SCSI_ATA_PIIX is not set
-# CONFIG_SCSI_SATA_MV is not set
-# CONFIG_SCSI_SATA_NV is not set
-# CONFIG_SCSI_PDC_ADMA is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_SATA_QSTOR is not set
-# CONFIG_SCSI_SATA_PROMISE is not set
-# CONFIG_SCSI_SATA_SX4 is not set
-# CONFIG_SCSI_SATA_SIL is not set
-# CONFIG_SCSI_SATA_SIL24 is not set
-# CONFIG_SCSI_SATA_SIS is not set
-# CONFIG_SCSI_SATA_ULI is not set
-CONFIG_SCSI_SATA_VIA=m
-# CONFIG_SCSI_SATA_VITESSE is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-# CONFIG_MD_RAID456 is not set
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_CRYPT is not set
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-CONFIG_IXP4XX_QMGR=m
-CONFIG_IXP4XX_NPE=m
-CONFIG_IXP4XX_FW_LOAD=y
-CONFIG_IXP4XX_MAC=m
-CONFIG_IXP4XX_CRYPTO=m
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-CONFIG_R8169=m
-# CONFIG_R8169_NAPI is not set
-CONFIG_R8169_VLAN=y
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_BCM43XX is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_IXP4XX_BEEPER=y
-# CONFIG_INPUT_UINPUT 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_SERIAL_NONSTANDARD=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=m
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_IXP4XX_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_IXP4XX=m
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=m
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_IOP3XX is not set
-CONFIG_I2C_ISA=m
-CONFIG_I2C_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-CONFIG_SENSORS_EEPROM=y
-CONFIG_SENSORS_PCF8574=m
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT8231 is not set
-CONFIG_SENSORS_W83781D=m
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-CONFIG_SENSORS_AD7418=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_IXP4XX=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_VIVI=m
-# CONFIG_VIDEO_BT848 is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_TUNER_3036=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
-CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_ALSA is not set
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_DPC=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-# CONFIG_VIDEO_CX88_BLACKBIRD is not set
-
-#
-# Encoders and Decoders
-#
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS53L32A=m
-# CONFIG_VIDEO_TLV320AIC23B is not set
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_WM8739=m
-# CONFIG_VIDEO_CX2341X is not set
-CONFIG_VIDEO_CX25840=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_SAA7127=m
-CONFIG_VIDEO_UPD64031A=m
-CONFIG_VIDEO_UPD64083=m
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_VIDEOBUF=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-CONFIG_USB_STORAGE_ONETOUCH=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-CONFIG_USB_YEALINK=m
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-CONFIG_RTC_DRV_X1205=y
-CONFIG_RTC_DRV_DS1307=y
-# CONFIG_RTC_DRV_DS1553 is not set
-CONFIG_RTC_DRV_ISL1208=y
-CONFIG_RTC_DRV_DS1672=y
-# CONFIG_RTC_DRV_DS1742 is not set
-CONFIG_RTC_DRV_PCF8563=y
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=m
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_JFFS2_NATIVE_ENDIAN is not set
-# CONFIG_JFFS2_BIG_ENDIAN is not set
-CONFIG_JFFS2_LITTLE_ENDIAN=y
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-CONFIG_NFS_DIRECTIO=y
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_FS is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
diff --git a/packages/linux/ixp4xx-kernel/2.6.19/defconfig b/packages/linux/ixp4xx-kernel/2.6.19/defconfig
deleted file mode 100644
index 58d6a39c8d..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.19/defconfig
+++ /dev/null
@@ -1,1950 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.19
-# Sun Jan 14 08:22:40 2007
-#
-CONFIG_ARM=y
-CONFIG_GENERIC_TIME=y
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=m
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-# CONFIG_KALLSYMS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-CONFIG_MACH_AVILA=y
-CONFIG_MACH_LOFT=y
-# CONFIG_ARCH_ADI_COYOTE is not set
-CONFIG_ARCH_IXDP425=y
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-CONFIG_ARCH_IXCDP1100=y
-# CONFIG_ARCH_PRPMC1100 is not set
-CONFIG_MACH_NAS100D=y
-CONFIG_MACH_DSMG600=y
-CONFIG_ARCH_IXDP4XX=y
-CONFIG_MACH_FSG=y
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_DMABOUNCE=y
-# CONFIG_IXP4XX_INDIRECT_PCI is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-
-#
-# Bus support
-#
-CONFIG_PCI=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-# CONFIG_NO_IDLE_HZ is not set
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-# CONFIG_APM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY 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=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=m
-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"
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_H323=m
-CONFIG_IP_NF_SIP=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# Bridge: Netfilter Configuration
-#
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-# CONFIG_BT_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-# CONFIG_BT_HCIUART is not set
-CONFIG_BT_HCIBCM203X=m
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-CONFIG_NFTL=y
-CONFIG_NFTL_RW=y
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC 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=y
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# 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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IXP4XX=y
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# 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
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-CONFIG_ISCSI_TCP=m
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-CONFIG_ATA=m
-# CONFIG_SATA_AHCI is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_ATA_PIIX is not set
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SX4 is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIL24 is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_ULI is not set
-CONFIG_SATA_VIA=m
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-CONFIG_PATA_ARTOP=m
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_ATA_GENERIC is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RZ1000 is not set
-# CONFIG_PATA_SC1200 is not set
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-CONFIG_PATA_IXP4XX_CF=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-# CONFIG_DM_CRYPT is not set
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-CONFIG_IXP4XX_QMGR=y
-CONFIG_IXP4XX_NPE=y
-CONFIG_IXP4XX_NPE_FW_LOAD=y
-CONFIG_IXP4XX_NPE_FW_MTD=y
-CONFIG_IXP4XX_MAC=y
-CONFIG_IXP4XX_CRYPTO=m
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-CONFIG_R8169=m
-# CONFIG_R8169_NAPI is not set
-CONFIG_R8169_VLAN=y
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-CONFIG_VIA_VELOCITY=m
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-# CONFIG_QLA3XXX is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_BCM43XX is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=y
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_IXP4XX_BEEPER=y
-# CONFIG_INPUT_UINPUT 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_SERIAL_NONSTANDARD=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=m
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_IXP4XX_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_IXP4XX=y
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_IOP3XX is not set
-CONFIG_I2C_ISA=m
-CONFIG_I2C_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-CONFIG_SENSORS_EEPROM=y
-CONFIG_SENSORS_PCF8574=m
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-CONFIG_W1=m
-
-#
-# 1-wire Bus Masters
-#
-# CONFIG_W1_MASTER_MATROX is not set
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-CONFIG_SENSORS_W83781D=m
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-CONFIG_SENSORS_AD7418=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_IXP4XX=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA7111=m
-CONFIG_VIDEO_SAA7114=m
-CONFIG_VIDEO_VPX3220=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-CONFIG_VIDEO_VIVI=m
-# CONFIG_VIDEO_BT848 is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_TUNER_3036=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
-CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_ALSA is not set
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_DPC=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-# CONFIG_VIDEO_CX88_BLACKBIRD is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_VIDEOBUF=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-CONFIG_USB_YEALINK=m
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-CONFIG_USB_NET_MCS7830=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-CONFIG_USB_ADUTUX=m
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-CONFIG_RTC_DRV_X1205=y
-CONFIG_RTC_DRV_DS1307=y
-# CONFIG_RTC_DRV_DS1553 is not set
-CONFIG_RTC_DRV_ISL1208=y
-CONFIG_RTC_DRV_DS1672=y
-# CONFIG_RTC_DRV_DS1742 is not set
-CONFIG_RTC_DRV_PCF8563=y
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=m
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_FS is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
diff --git a/packages/linux/ixp4xx-kernel/2.6.20/defconfig b/packages/linux/ixp4xx-kernel/2.6.20/defconfig
deleted file mode 100644
index 27fab8ab73..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.20/defconfig
+++ /dev/null
@@ -1,2031 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20-rc5-git2
-# Wed Jan 24 01:08:16 2007
-#
-CONFIG_ARM=y
-CONFIG_GENERIC_TIME=y
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=m
-CONFIG_IKCONFIG_PROC=y
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-# CONFIG_KALLSYMS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-CONFIG_MACH_AVILA=y
-CONFIG_MACH_LOFT=y
-# CONFIG_ARCH_ADI_COYOTE is not set
-CONFIG_ARCH_IXDP425=y
-# CONFIG_MACH_IXDPG425 is not set
-# CONFIG_MACH_IXDP465 is not set
-CONFIG_ARCH_IXCDP1100=y
-# CONFIG_ARCH_PRPMC1100 is not set
-CONFIG_MACH_NAS100D=y
-CONFIG_MACH_DSMG600=y
-CONFIG_ARCH_IXDP4XX=y
-CONFIG_MACH_FSG=y
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_DMABOUNCE=y
-# CONFIG_IXP4XX_INDIRECT_PCI is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_IWMMXT is not set
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-
-#
-# Bus support
-#
-CONFIG_PCI=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-# CONFIG_NO_IDLE_HZ is not set
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-# CONFIG_APM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY 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=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=m
-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
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK_SUPPORT=y
-# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_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=y
-CONFIG_NFTL_RW=y
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC 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=y
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# 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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IXP4XX=y
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# 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
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_NAND_CAFE is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-CONFIG_ISCSI_TCP=m
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-# CONFIG_SATA_AHCI is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_ATA_PIIX is not set
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SX4 is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIL24 is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_ULI is not set
-CONFIG_SATA_VIA=m
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-CONFIG_PATA_ARTOP=m
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_ATA_GENERIC is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RZ1000 is not set
-# CONFIG_PATA_SC1200 is not set
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-# CONFIG_PATA_PLATFORM is not set
-CONFIG_PATA_IXP4XX_CF=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-# CONFIG_DM_CRYPT is not set
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-CONFIG_IXP4XX_QMGR=y
-CONFIG_IXP4XX_NPE=y
-CONFIG_IXP4XX_NPE_FW_LOAD=y
-CONFIG_IXP4XX_NPE_FW_MTD=y
-CONFIG_IXP4XX_MAC=y
-CONFIG_IXP4XX_CRYPTO=m
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-CONFIG_R8169=m
-# CONFIG_R8169_NAPI is not set
-CONFIG_R8169_VLAN=y
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-CONFIG_VIA_VELOCITY=m
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-# CONFIG_QLA3XXX is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_BCM43XX is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_RX is not set
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_IXP4XX_BEEPER=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_MOXA_SMARTIO_NEW is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=m
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_IXP4XX_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_IXP4XX=y
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_IOP3XX is not set
-CONFIG_I2C_ISA=m
-CONFIG_I2C_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-CONFIG_SENSORS_EEPROM=y
-CONFIG_SENSORS_PCF8574=m
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-CONFIG_W1=m
-
-#
-# 1-wire Bus Masters
-#
-# CONFIG_W1_MASTER_MATROX is not set
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-CONFIG_SENSORS_W83781D=m
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-CONFIG_SENSORS_AD7418=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_IXP4XX=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA7111=m
-CONFIG_VIDEO_SAA7114=m
-CONFIG_VIDEO_VPX3220=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-CONFIG_VIDEO_VIVI=m
-# CONFIG_VIDEO_BT848 is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_TUNER_3036=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
-CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_ALSA is not set
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_DPC=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-# CONFIG_VIDEO_CX88_BLACKBIRD is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_USB_DSBR is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_VIDEOBUF=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# HID Devices
-#
-CONFIG_HID=m
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-CONFIG_USB_YEALINK=m
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-CONFIG_USB_NET_MCS7830=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-CONFIG_USB_ADUTUX=m
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-CONFIG_RTC_DRV_X1205=y
-CONFIG_RTC_DRV_DS1307=y
-# CONFIG_RTC_DRV_DS1553 is not set
-CONFIG_RTC_DRV_ISL1208=y
-CONFIG_RTC_DRV_DS1672=y
-# CONFIG_RTC_DRV_DS1742 is not set
-CONFIG_RTC_DRV_PCF8563=y
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=m
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-# CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/ixp4xx-kernel/2.6.21/defconfig b/packages/linux/ixp4xx-kernel/2.6.21/defconfig
deleted file mode 100644
index 42527b3dfc..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.21/defconfig
+++ /dev/null
@@ -1,2088 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21
-# Thu Nov 22 23:05:47 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-# CONFIG_GENERIC_GPIO is not set
-CONFIG_GENERIC_TIME=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=m
-CONFIG_IKCONFIG_PROC=y
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-# CONFIG_KALLSYMS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-CONFIG_MACH_AVILA=y
-CONFIG_MACH_LOFT=y
-# CONFIG_ARCH_ADI_COYOTE is not set
-CONFIG_ARCH_IXDP425=y
-CONFIG_MACH_IXDPG425=y
-# CONFIG_MACH_IXDP465 is not set
-CONFIG_ARCH_IXCDP1100=y
-# CONFIG_ARCH_PRPMC1100 is not set
-CONFIG_MACH_NAS100D=y
-CONFIG_MACH_DSMG600=y
-CONFIG_ARCH_IXDP4XX=y
-CONFIG_MACH_FSG=y
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_DMABOUNCE=y
-# CONFIG_IXP4XX_INDIRECT_PCI is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-# CONFIG_IWMMXT is not set
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_PCI=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-# CONFIG_NO_IDLE_HZ is not set
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-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_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=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=m
-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
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK_SUPPORT=y
-# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-# CONFIG_NET_SCH_CLK_JIFFIES is not set
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# CONFIG_NET_SCH_CLK_CPU is not set
-CONFIG_NET_CLS_ROUTE=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_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=y
-CONFIG_NFTL_RW=y
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC 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=y
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# 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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IXP4XX=y
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# 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
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNPACPI is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-CONFIG_ISCSI_TCP=m
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-# CONFIG_SATA_AHCI is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_ATA_PIIX is not set
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SX4 is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIL24 is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_ULI is not set
-CONFIG_SATA_VIA=m
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_SATA_INIC162X is not set
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-CONFIG_PATA_ARTOP=m
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_ATA_GENERIC is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_IT8213 is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RZ1000 is not set
-# CONFIG_PATA_SC1200 is not set
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-# CONFIG_PATA_PLATFORM is not set
-CONFIG_PATA_IXP4XX_CF=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-# CONFIG_DM_MULTIPATH_EMC is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-CONFIG_IXP4XX_QMGR=m
-CONFIG_IXP4XX_NPE=y
-CONFIG_IXP4XX_NPE_FW_LOAD=y
-CONFIG_IXP4XX_NPE_FW_MTD=y
-CONFIG_IXP4XX_MAC=m
-CONFIG_IXP4XX_CRYPTO=m
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_SC92031 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-CONFIG_R8169=m
-# CONFIG_R8169_NAPI is not set
-CONFIG_R8169_VLAN=y
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-CONFIG_VIA_VELOCITY=m
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-# CONFIG_QLA3XXX is not set
-# CONFIG_ATL1 is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_BCM43XX is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_IXP4XX_BEEPER=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_MOXA_SMARTIO_NEW is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=m
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_IXP4XX_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_IXP4XX=y
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_IOP3XX is not set
-CONFIG_I2C_ISA=m
-CONFIG_I2C_IXP4XX=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-CONFIG_SENSORS_EEPROM=y
-CONFIG_SENSORS_PCF8574=m
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-CONFIG_W1=m
-
-#
-# 1-wire Bus Masters
-#
-# CONFIG_W1_MASTER_MATROX is not set
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-CONFIG_SENSORS_W83781D=m
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-CONFIG_SENSORS_AD7418=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_IXP4XX=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_TDA9840=m
-CONFIG_VIDEO_TEA6415C=m
-CONFIG_VIDEO_TEA6420=m
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_BT819=m
-CONFIG_VIDEO_BT856=m
-CONFIG_VIDEO_KS0127=m
-CONFIG_VIDEO_OV7670=m
-CONFIG_VIDEO_SAA7110=m
-CONFIG_VIDEO_SAA7111=m
-CONFIG_VIDEO_SAA7114=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_VPX3220=m
-CONFIG_VIDEO_CX25840=m
-CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_SAA7185=m
-CONFIG_VIDEO_ADV7170=m
-CONFIG_VIDEO_ADV7175=m
-CONFIG_VIDEO_VIVI=m
-# CONFIG_VIDEO_BT848 is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_USB=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_TUNER_3036=m
-CONFIG_VIDEO_STRADIS=m
-CONFIG_VIDEO_ZORAN_ZR36060=m
-CONFIG_VIDEO_ZORAN=m
-CONFIG_VIDEO_ZORAN_BUZ=m
-CONFIG_VIDEO_ZORAN_DC10=m
-CONFIG_VIDEO_ZORAN_DC30=m
-CONFIG_VIDEO_ZORAN_LML33=m
-CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_ZORAN_AVS6EYES=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_ALSA=m
-CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_DPC=m
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-CONFIG_VIDEO_CX88_BLACKBIRD=m
-CONFIG_VIDEO_CAFE_CCIC=m
-
-#
-# V4L USB devices
-#
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_29XXX=y
-CONFIG_VIDEO_PVRUSB2_24XXX=y
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_QUICKCAM_MESSENGER=m
-CONFIG_USB_ET61X251=m
-CONFIG_VIDEO_OVCAMCHIP=m
-CONFIG_USB_W9968CF=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-CONFIG_USB_ZC0301=m
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-CONFIG_USB_DSBR=m
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-# CONFIG_FB is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# HID Devices
-#
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-CONFIG_USB_STORAGE_FREECOM=y
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-CONFIG_USB_YEALINK=m
-# CONFIG_USB_XPAD is not set
-CONFIG_USB_ATI_REMOTE=m
-CONFIG_USB_ATI_REMOTE2=m
-CONFIG_USB_KEYSPAN_REMOTE=m
-# CONFIG_USB_APPLETOUCH is not set
-# CONFIG_USB_GTCO is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-CONFIG_USB_ADUTUX=m
-# CONFIG_USB_AUERSWALD is not set
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-CONFIG_RTC_DRV_X1205=y
-CONFIG_RTC_DRV_DS1307=y
-# CONFIG_RTC_DRV_DS1553 is not set
-CONFIG_RTC_DRV_ISL1208=y
-CONFIG_RTC_DRV_DS1672=y
-# CONFIG_RTC_DRV_DS1742 is not set
-CONFIG_RTC_DRV_PCF8563=y
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-# CONFIG_CRYPTO_CAMELLIA is not set
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/ixp4xx-kernel/2.6.22/defconfig b/packages/linux/ixp4xx-kernel/2.6.22/defconfig
deleted file mode 100644
index 6eaf4df545..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.22/defconfig
+++ /dev/null
@@ -1,1984 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.22-rc5
-# Sun Jun 24 12:06:23 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=m
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-# CONFIG_KALLSYMS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-CONFIG_MACH_AVILA=y
-CONFIG_MACH_LOFT=y
-# CONFIG_ARCH_ADI_COYOTE is not set
-CONFIG_ARCH_IXDP425=y
-CONFIG_MACH_IXDPG425=y
-# CONFIG_MACH_IXDP465 is not set
-# CONFIG_MACH_KIXRP435 is not set
-CONFIG_ARCH_IXCDP1100=y
-# CONFIG_ARCH_PRPMC1100 is not set
-CONFIG_MACH_NAS100D=y
-CONFIG_MACH_DSMG600=y
-CONFIG_ARCH_IXDP4XX=y
-CONFIG_MACH_FSG=y
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_DMABOUNCE=y
-# CONFIG_IXP4XX_INDIRECT_PCI is not set
-CONFIG_IXP4XX_QMGR=y
-CONFIG_IXP4XX_NPE=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-# CONFIG_IWMMXT is not set
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_PCI=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-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_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=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=m
-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_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-# CONFIG_BT_CMTP is not set
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_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=y
-CONFIG_NFTL_RW=y
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC 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=y
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# 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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IXP4XX=y
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# 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
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNPACPI is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-CONFIG_ISCSI_TCP=m
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-# CONFIG_SATA_AHCI is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_ATA_PIIX is not set
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SX4 is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIL24 is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_ULI is not set
-CONFIG_SATA_VIA=m
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_SATA_INIC162X is not set
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-CONFIG_PATA_ARTOP=m
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_CMD640_PCI is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_ATA_GENERIC is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_IT8213 is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RZ1000 is not set
-# CONFIG_PATA_SC1200 is not set
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-# CONFIG_PATA_PLATFORM is not set
-CONFIG_PATA_IXP4XX_CF=m
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-# CONFIG_DM_CRYPT is not set
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-# CONFIG_DM_DELAY is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-CONFIG_IXP4XX_ETH=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_SC92031 is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-CONFIG_VIA_VELOCITY=m
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-# CONFIG_QLA3XXX is not set
-# CONFIG_ATL1 is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-# CONFIG_LIBERTAS_DEBUG is not set
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-# CONFIG_HOSTAP is not set
-# CONFIG_BCM43XX is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-CONFIG_USB_NET_MCS7830=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-
-#
-# ISDN subsystem
-#
-CONFIG_ISDN=m
-
-#
-# Old ISDN4Linux
-#
-# CONFIG_ISDN_I4L is not set
-
-#
-# CAPI subsystem
-#
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
-CONFIG_ISDN_CAPI_CAPI20=m
-
-#
-# CAPI hardware drivers
-#
-
-#
-# Active AVM cards
-#
-# CONFIG_CAPI_AVM is not set
-
-#
-# Active Eicon DIVA Server cards
-#
-# CONFIG_CAPI_EICON is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_IXP4XX_BEEPER=y
-CONFIG_INPUT_ATI_REMOTE=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-# CONFIG_INPUT_POWERMATE is not set
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_MOXA_SMARTIO_NEW is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=m
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_IXP4XX_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_IXP4XX=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-CONFIG_DEVPORT=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-CONFIG_I2C_GPIO=y
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_IOP3XX is not set
-# CONFIG_I2C_IXP4XX is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_STUB is not set
-CONFIG_I2C_TINY_USB=m
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-CONFIG_SENSORS_EEPROM=y
-CONFIG_SENSORS_PCF8574=m
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-CONFIG_W1=m
-
-#
-# 1-wire Bus Masters
-#
-# CONFIG_W1_MASTER_MATROX is not set
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-# CONFIG_W1_MASTER_DS1WM is not set
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_SENSORS_ABITUGURU is not set
-CONFIG_SENSORS_AD7418=m
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-CONFIG_SENSORS_W83781D=m
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-# CONFIG_PHANTOM is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_BLINK is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_IXP4XX=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-# CONFIG_VIDEO_V4L1 is not set
-# CONFIG_VIDEO_V4L1_COMPAT is not set
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_ALSA is not set
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-# CONFIG_VIDEO_CX88_BLACKBIRD is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_SN9C102 is not set
-CONFIG_USB_ZR364XX=m
-# CONFIG_RADIO_ADAPTERS is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-# CONFIG_DAB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_FB is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# HID Devices
-#
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-# CONFIG_USB_MOUSE is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-CONFIG_USB_ADUTUX=m
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=y
-CONFIG_RTC_DRV_DS1672=y
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_ISL1208=y
-CONFIG_RTC_DRV_X1205=y
-CONFIG_RTC_DRV_PCF8563=y
-# CONFIG_RTC_DRV_PCF8583 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/ixp4xx-kernel/2.6.23/defconfig b/packages/linux/ixp4xx-kernel/2.6.23/defconfig
deleted file mode 100644
index efbd55195d..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.23/defconfig
+++ /dev/null
@@ -1,1940 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23.8
-# Wed Nov 21 22:15:10 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=m
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-# CONFIG_KALLSYMS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-CONFIG_ARCH_IXP4XX=y
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-
-#
-# Intel IXP4xx Implementation Options
-#
-
-#
-# IXP4xx Platforms
-#
-CONFIG_MACH_NSLU2=y
-CONFIG_MACH_AVILA=y
-CONFIG_MACH_LOFT=y
-# CONFIG_ARCH_ADI_COYOTE is not set
-# CONFIG_MACH_GATEWAY7001 is not set
-# CONFIG_MACH_WG302V2 is not set
-CONFIG_ARCH_IXDP425=y
-CONFIG_MACH_IXDPG425=y
-# CONFIG_MACH_IXDP465 is not set
-# CONFIG_MACH_KIXRP435 is not set
-CONFIG_ARCH_IXCDP1100=y
-# CONFIG_ARCH_PRPMC1100 is not set
-CONFIG_MACH_NAS100D=y
-CONFIG_MACH_DSMG600=y
-CONFIG_ARCH_IXDP4XX=y
-CONFIG_MACH_FSG=y
-# CONFIG_MACH_GTWX5715 is not set
-
-#
-# IXP4xx Options
-#
-CONFIG_DMABOUNCE=y
-# CONFIG_IXP4XX_INDIRECT_PCI is not set
-CONFIG_IXP4XX_QMGR=y
-CONFIG_IXP4XX_NPE=y
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-# CONFIG_IWMMXT is not set
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_PCI=y
-CONFIG_PCI_SYSCALL=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-CONFIG_SUSPEND_UP_POSSIBLE=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-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_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=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=m
-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_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-# CONFIG_NF_CT_PROTO_UDPLITE is not set
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-CONFIG_TIPC=m
-# CONFIG_TIPC_ADVANCED is not set
-# CONFIG_TIPC_DEBUG is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_CMTP=m
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-CONFIG_RFKILL=m
-# CONFIG_RFKILL_INPUT is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_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=y
-CONFIG_NFTL_RW=y
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC 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=y
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# 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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IXP4XX=y
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# 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
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-CONFIG_ATA_OVER_ETH=m
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-CONFIG_SCSI_ISCSI_ATTRS=m
-# CONFIG_SCSI_SAS_LIBSAS is not set
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-# CONFIG_SATA_AHCI is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_ATA_PIIX is not set
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SX4 is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIL24 is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_ULI is not set
-CONFIG_SATA_VIA=m
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_SATA_INIC162X is not set
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-CONFIG_PATA_ARTOP=m
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_CMD640_PCI is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_ATA_GENERIC is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_IT8213 is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RZ1000 is not set
-# CONFIG_PATA_SC1200 is not set
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-# CONFIG_PATA_PLATFORM is not set
-CONFIG_PATA_IXP4XX_CF=m
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-# CONFIG_DM_DELAY is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-CONFIG_IXP4XX_ETH=y
-# CONFIG_AX88796 is not set
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_SC92031 is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-CONFIG_VIA_VELOCITY=m
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-# CONFIG_QLA3XXX is not set
-# CONFIG_ATL1 is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-# CONFIG_LIBERTAS_DEBUG is not set
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-# CONFIG_HOSTAP is not set
-# CONFIG_BCM43XX is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_ISDN=m
-# CONFIG_ISDN_I4L is not set
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
-CONFIG_ISDN_CAPI_CAPI20=m
-
-#
-# CAPI hardware drivers
-#
-# CONFIG_CAPI_AVM is not set
-# CONFIG_CAPI_EICON is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_IXP4XX_BEEPER=y
-CONFIG_INPUT_ATI_REMOTE=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-# CONFIG_INPUT_POWERMATE is not set
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_MOXA_SMARTIO_NEW is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINKMP is not set
-# CONFIG_SYNCLINK_GT is not set
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=m
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_IXP4XX_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_IXP4XX=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_DEVPORT=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-CONFIG_I2C_GPIO=y
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_IOP3XX is not set
-# CONFIG_I2C_IXP4XX is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-CONFIG_I2C_TINY_USB=m
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-CONFIG_SENSORS_EEPROM=y
-CONFIG_SENSORS_PCF8574=m
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-CONFIG_W1=m
-
-#
-# 1-wire Bus Masters
-#
-# CONFIG_W1_MASTER_MATROX is not set
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-# CONFIG_W1_MASTER_DS1WM is not set
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-# CONFIG_W1_SLAVE_DS2760 is not set
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ABITUGURU3 is not set
-CONFIG_SENSORS_AD7418=m
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-CONFIG_SENSORS_W83781D=m
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_IXP4XX=y
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-# CONFIG_VIDEO_V4L1 is not set
-# CONFIG_VIDEO_V4L1_COMPAT is not set
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_VIVI=m
-CONFIG_VIDEO_SAA5246A=m
-CONFIG_VIDEO_SAA5249=m
-# CONFIG_TUNER_TEA5761 is not set
-CONFIG_VIDEO_SAA7134=m
-# CONFIG_VIDEO_SAA7134_ALSA is not set
-CONFIG_VIDEO_HEXIUM_ORION=m
-CONFIG_VIDEO_HEXIUM_GEMINI=m
-CONFIG_VIDEO_CX88=m
-CONFIG_VIDEO_CX88_ALSA=m
-# CONFIG_VIDEO_CX88_BLACKBIRD is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_ZC0301 is not set
-CONFIG_USB_ZR364XX=m
-# CONFIG_RADIO_ADAPTERS is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_VIDEO_SAA7146=m
-CONFIG_VIDEO_SAA7146_VV=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_BUF=m
-CONFIG_VIDEO_BTCX=m
-CONFIG_VIDEO_IR_I2C=m
-CONFIG_VIDEO_IR=m
-CONFIG_VIDEO_TVEEPROM=m
-# CONFIG_DAB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-# CONFIG_FB is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_U132_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-CONFIG_USB_STORAGE_FREECOM=y
-# CONFIG_USB_STORAGE_DPCM is not set
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_ONETOUCH=y
-CONFIG_USB_STORAGE_KARMA=y
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-CONFIG_USB_ADUTUX=m
-# CONFIG_USB_AUERSWALD is not set
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=y
-CONFIG_RTC_DRV_DS1672=y
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_ISL1208=y
-CONFIG_RTC_DRV_X1205=y
-CONFIG_RTC_DRV_PCF8563=y
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_SUNRPC_BIND34=y
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_LRW=m
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-# CONFIG_CRYPTO_TEST is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/gaim/pidgin/.mtn2git_empty b/packages/linux/linux-2.6.18/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gaim/pidgin/.mtn2git_empty
+++ b/packages/linux/linux-2.6.18/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.18/0001-AVR32-Fix-compile-error-with-gcc-4.1.patch b/packages/linux/linux-2.6.18/0001-AVR32-Fix-compile-error-with-gcc-4.1.patch
new file mode 100755
index 0000000000..2b430450d9
--- /dev/null
+++ b/packages/linux/linux-2.6.18/0001-AVR32-Fix-compile-error-with-gcc-4.1.patch
@@ -0,0 +1,71 @@
+From 8224ca195874525533665bbcd23b6da1e575aa4d Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Fri, 27 Apr 2007 14:21:47 +0200
+Subject: [AVR32] Fix compile error with gcc 4.1
+
+gcc 4.1 doesn't seem to like const variables as inline assembly
+outputs. Drop support for reading 64-bit values using get_user() so
+that we can use an unsigned long to hold the result regardless of the
+actual size. This should be safe since many architectures, including
+i386, doesn't support reading 64-bit values with get_user().
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ include/asm-avr32/uaccess.h | 13 ++++---------
+ 1 files changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/include/asm-avr32/uaccess.h b/include/asm-avr32/uaccess.h
+index 74a679e..ed09239 100644
+--- a/include/asm-avr32/uaccess.h
++++ b/include/asm-avr32/uaccess.h
+@@ -181,24 +181,23 @@ extern int __put_user_bad(void);
+
+ #define __get_user_nocheck(x, ptr, size) \
+ ({ \
+- typeof(*(ptr)) __gu_val = (typeof(*(ptr)) __force)0; \
++ unsigned long __gu_val = 0; \
+ int __gu_err = 0; \
+ \
+ switch (size) { \
+ case 1: __get_user_asm("ub", __gu_val, ptr, __gu_err); break; \
+ case 2: __get_user_asm("uh", __gu_val, ptr, __gu_err); break; \
+ case 4: __get_user_asm("w", __gu_val, ptr, __gu_err); break; \
+- case 8: __get_user_asm("d", __gu_val, ptr, __gu_err); break; \
+ default: __gu_err = __get_user_bad(); break; \
+ } \
+ \
+- x = __gu_val; \
++ x = (typeof(*(ptr)))__gu_val; \
+ __gu_err; \
+ })
+
+ #define __get_user_check(x, ptr, size) \
+ ({ \
+- typeof(*(ptr)) __gu_val = (typeof(*(ptr)) __force)0; \
++ unsigned long __gu_val = 0; \
+ const typeof(*(ptr)) __user * __gu_addr = (ptr); \
+ int __gu_err = 0; \
+ \
+@@ -216,10 +215,6 @@ extern int __put_user_bad(void);
+ __get_user_asm("w", __gu_val, __gu_addr, \
+ __gu_err); \
+ break; \
+- case 8: \
+- __get_user_asm("d", __gu_val, __gu_addr, \
+- __gu_err); \
+- break; \
+ default: \
+ __gu_err = __get_user_bad(); \
+ break; \
+@@ -227,7 +222,7 @@ extern int __put_user_bad(void);
+ } else { \
+ __gu_err = -EFAULT; \
+ } \
+- x = __gu_val; \
++ x = (typeof(*(ptr)))__gu_val; \
+ __gu_err; \
+ })
+
+--
+1.4.4.4
+
diff --git a/packages/linux/linux-2.6.18/add-all-parameters-to-smc-driver.patch b/packages/linux/linux-2.6.18/add-all-parameters-to-smc-driver.patch
new file mode 100644
index 0000000000..ec4de30cc8
--- /dev/null
+++ b/packages/linux/linux-2.6.18/add-all-parameters-to-smc-driver.patch
@@ -0,0 +1,73 @@
+--- linux-2.6.18-orig/arch/avr32/mach-at32ap/hsmc.c 2006-09-26 15:01:28.000000000 +0200
++++ linux-2.6.18/arch/avr32/mach-at32ap/hsmc.c 2006-10-18 14:03:35.000000000 +0200
+@@ -75,12 +75,35 @@ int smc_set_configuration(int cs, const
+ return -EINVAL;
+ }
+
++ switch (config->nwait_mode) {
++ case 0:
++ mode |= HSMC_BF(EXNW_MODE, HSMC_EXNW_MODE_DISABLED);
++ break;
++ case 1:
++ mode |= HSMC_BF(EXNW_MODE, HSMC_EXNW_MODE_RESERVED);
++ break;
++ case 2:
++ mode |= HSMC_BF(EXNW_MODE, HSMC_EXNW_MODE_FROZEN);
++ break;
++ case 3:
++ mode |= HSMC_BF(EXNW_MODE, HSMC_EXNW_MODE_READY);
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ if (config->tdf_cycles) {
++ mode |= HSMC_BF(TDF_CYCLES, config->tdf_cycles);
++ }
++
+ if (config->nrd_controlled)
+ mode |= HSMC_BIT(READ_MODE);
+ if (config->nwe_controlled)
+ mode |= HSMC_BIT(WRITE_MODE);
+ if (config->byte_write)
+ mode |= HSMC_BIT(BAT);
++ if (config->tdf_mode)
++ mode |= HSMC_BIT(TDF_MODE);
+
+ pr_debug("smc cs%d: setup/%08x pulse/%08x cycle/%08x mode/%08x\n",
+ cs, setup, pulse, cycle, mode);
+--- linux-2.6.18-orig/include/asm-avr32/arch-at32ap/smc.h 2006-09-26 15:01:30.000000000 +0200
++++ linux-2.6.18/include/asm-avr32/arch-at32ap/smc.h 2006-10-18 13:36:06.000000000 +0200
+@@ -48,10 +48,32 @@ struct smc_config {
+ unsigned int nwe_controlled:1;
+
+ /*
++ * 0: NWAIT is disabled
++ * 1: Reserved
++ * 2: NWAIT is frozen mode
++ * 3: NWAIT in ready mode
++ */
++ unsigned int nwait_mode:2;
++
++ /*
+ * 0: Byte select access type
+ * 1: Byte write access type
+ */
+ unsigned int byte_write:1;
++
++ /*
++ * Number of clock cycles before data is released after
++ * the rising edge of the read controlling signal
++ *
++ * Total cycles from SMC is tdf_cycles + 1
++ */
++ unsigned int tdf_cycles:4;
++
++ /*
++ * 0: TDF optimization disabled
++ * 1: TDF optimization enabled
++ */
++ unsigned int tdf_mode:1;
+ };
+
+ extern int smc_set_configuration(int cs, const struct smc_config *config);
diff --git a/packages/linux/linux-2.6.18/add-default-atngw-defconfig.patch b/packages/linux/linux-2.6.18/add-default-atngw-defconfig.patch
new file mode 100644
index 0000000000..233416e0ca
--- /dev/null
+++ b/packages/linux/linux-2.6.18/add-default-atngw-defconfig.patch
@@ -0,0 +1,975 @@
+Index: linux-2.6.18/arch/avr32/configs/atngw_defconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18/arch/avr32/configs/atngw_defconfig 2007-01-10 10:15:54.000000000 +0100
+@@ -0,0 +1,970 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.18-at0
++# Wed Jan 10 10:13:31 2007
++#
++CONFIG_AVR32=y
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_HARDIRQS_SW_RESEND=y
++CONFIG_GENERIC_IRQ_PROBE=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++CONFIG_GENERIC_TIME=y
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++
++#
++# Code maturity level options
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION=""
++# CONFIG_LOCALVERSION_AUTO is not set
++CONFIG_SWAP=y
++CONFIG_SYSVIPC=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
++# CONFIG_IKCONFIG is not set
++# CONFIG_RELAY is not set
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_EMBEDDED=y
++CONFIG_SYSCTL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++# CONFIG_BASE_FULL is not set
++CONFIG_FUTEX=y
++CONFIG_EPOLL=y
++CONFIG_SHMEM=y
++CONFIG_SLAB=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_RT_MUTEXES=y
++# CONFIG_TINY_SHMEM is not set
++CONFIG_BASE_SMALL=1
++# CONFIG_SLOB is not set
++
++#
++# Loadable module support
++#
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++CONFIG_MODULE_FORCE_UNLOAD=y
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++CONFIG_KMOD=y
++
++#
++# Block layer
++#
++# CONFIG_BLK_DEV_IO_TRACE is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++# CONFIG_IOSCHED_AS is not set
++# CONFIG_IOSCHED_DEADLINE is not set
++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"
++
++#
++# System Type and features
++#
++CONFIG_SUBARCH_AVR32B=y
++CONFIG_MMU=y
++CONFIG_PERFORMANCE_COUNTERS=y
++CONFIG_PLATFORM_AT32AP=y
++CONFIG_CPU_AT32AP7000=y
++# CONFIG_BOARD_ATSTK1000 is not set
++CONFIG_BOARD_ATNGW=y
++CONFIG_LOADER_U_BOOT=y
++
++#
++# Atmel AVR32 AP options
++#
++CONFIG_PIO_DEV=y
++CONFIG_LOAD_ADDRESS=0x10000000
++CONFIG_ENTRY_ADDRESS=0x90000000
++CONFIG_PHYS_OFFSET=0x10000000
++CONFIG_PREEMPT_NONE=y
++# CONFIG_PREEMPT_VOLUNTARY is not set
++# CONFIG_PREEMPT is not set
++# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
++# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
++# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
++CONFIG_ARCH_FLATMEM_ENABLE=y
++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
++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_SPARSEMEM_STATIC is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4
++# CONFIG_RESOURCES_64BIT is not set
++# CONFIG_OWNERSHIP_TRACE is not set
++CONFIG_DW_DMAC=y
++# CONFIG_HZ_100 is not set
++CONFIG_HZ_250=y
++# CONFIG_HZ_1000 is not set
++CONFIG_HZ=250
++CONFIG_CMDLINE=""
++
++#
++# Bus options
++#
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# Executable file formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_MISC is not set
++
++#
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++# CONFIG_NETDEBUG is not set
++CONFIG_PACKET=y
++CONFIG_PACKET_MMAP=y
++CONFIG_UNIX=y
++# CONFIG_NET_KEY is not set
++CONFIG_INET=y
++# CONFIG_IP_MULTICAST is not set
++CONFIG_IP_ADVANCED_ROUTER=y
++CONFIG_ASK_IP_FIB_HASH=y
++# CONFIG_IP_FIB_TRIE is not set
++CONFIG_IP_FIB_HASH=y
++# CONFIG_IP_MULTIPLE_TABLES is not set
++# CONFIG_IP_ROUTE_MULTIPATH is not set
++# CONFIG_IP_ROUTE_VERBOSE is not set
++CONFIG_IP_PNP=y
++CONFIG_IP_PNP_DHCP=y
++# CONFIG_IP_PNP_BOOTP is not set
++# CONFIG_IP_PNP_RARP 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 is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# CONFIG_TCP_CONG_ADVANCED is not set
++CONFIG_TCP_CONG_BIC=y
++
++#
++# IP: Virtual Server Configuration
++#
++# CONFIG_IP_VS is not set
++# CONFIG_IPV6 is not set
++# CONFIG_INET6_XFRM_TUNNEL is not set
++# CONFIG_INET6_TUNNEL is not set
++# CONFIG_NETWORK_SECMARK is not set
++CONFIG_NETFILTER=y
++# CONFIG_NETFILTER_DEBUG is not set
++
++#
++# Core Netfilter Configuration
++#
++# CONFIG_NETFILTER_NETLINK is not set
++CONFIG_NETFILTER_XTABLES=y
++# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
++# CONFIG_NETFILTER_XT_TARGET_MARK is not set
++# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
++# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
++# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
++# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
++# CONFIG_NETFILTER_XT_MATCH_ESP is not set
++# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
++# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
++# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
++# CONFIG_NETFILTER_XT_MATCH_MAC is not set
++# CONFIG_NETFILTER_XT_MATCH_MARK is not set
++# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
++# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
++# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
++# CONFIG_NETFILTER_XT_MATCH_REALM is not set
++# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
++CONFIG_NETFILTER_XT_MATCH_STATE=y
++# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
++# CONFIG_NETFILTER_XT_MATCH_STRING is not set
++# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
++
++#
++# IP: Netfilter Configuration
++#
++CONFIG_IP_NF_CONNTRACK=y
++# CONFIG_IP_NF_CT_ACCT is not set
++# CONFIG_IP_NF_CONNTRACK_MARK is not set
++# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
++# CONFIG_IP_NF_CT_PROTO_SCTP is not set
++# CONFIG_IP_NF_FTP is not set
++# CONFIG_IP_NF_IRC is not set
++# CONFIG_IP_NF_NETBIOS_NS is not set
++# CONFIG_IP_NF_TFTP is not set
++# CONFIG_IP_NF_AMANDA is not set
++# CONFIG_IP_NF_PPTP is not set
++# CONFIG_IP_NF_H323 is not set
++# CONFIG_IP_NF_SIP is not set
++# CONFIG_IP_NF_QUEUE is not set
++CONFIG_IP_NF_IPTABLES=y
++# CONFIG_IP_NF_MATCH_IPRANGE is not set
++# CONFIG_IP_NF_MATCH_TOS is not set
++# CONFIG_IP_NF_MATCH_RECENT is not set
++# CONFIG_IP_NF_MATCH_ECN is not set
++# CONFIG_IP_NF_MATCH_DSCP is not set
++# CONFIG_IP_NF_MATCH_AH is not set
++# CONFIG_IP_NF_MATCH_TTL is not set
++# CONFIG_IP_NF_MATCH_OWNER is not set
++# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
++# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
++CONFIG_IP_NF_FILTER=y
++CONFIG_IP_NF_TARGET_REJECT=y
++CONFIG_IP_NF_TARGET_LOG=y
++# CONFIG_IP_NF_TARGET_ULOG is not set
++# CONFIG_IP_NF_TARGET_TCPMSS is not set
++CONFIG_IP_NF_NAT=y
++CONFIG_IP_NF_NAT_NEEDED=y
++CONFIG_IP_NF_TARGET_MASQUERADE=y
++CONFIG_IP_NF_TARGET_REDIRECT=y
++# CONFIG_IP_NF_TARGET_NETMAP is not set
++# CONFIG_IP_NF_TARGET_SAME is not set
++# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
++# CONFIG_IP_NF_MANGLE is not set
++# CONFIG_IP_NF_RAW is not set
++# CONFIG_IP_NF_ARPTABLES is not set
++
++#
++# DCCP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_DCCP is not set
++
++#
++# SCTP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_SCTP is not set
++
++#
++# TIPC Configuration (EXPERIMENTAL)
++#
++# CONFIG_TIPC is not set
++# CONFIG_ATM is not set
++# CONFIG_BRIDGE 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
++
++#
++# QoS and/or fair queueing
++#
++# CONFIG_NET_SCHED is not set
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++# CONFIG_IEEE80211 is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++# CONFIG_PREVENT_FIRMWARE_BUILD is not set
++# CONFIG_FW_LOADER is not set
++# CONFIG_DEBUG_DRIVER is not set
++# CONFIG_SYS_HYPERVISOR is not set
++
++#
++# Connector - unified userspace <-> kernelspace linker
++#
++# CONFIG_CONNECTOR is not set
++
++#
++# Memory Technology Devices (MTD)
++#
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++# CONFIG_MTD_CONCAT is not set
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_REDBOOT_PARTS is not set
++# CONFIG_MTD_CMDLINE_PARTS is not set
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=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
++
++#
++# 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 is not set
++CONFIG_MTD_CFI_AMDSTD=y
++# CONFIG_MTD_CFI_STAA is not set
++CONFIG_MTD_CFI_UTIL=y
++# CONFIG_MTD_RAM is not set
++# CONFIG_MTD_ROM is not set
++# CONFIG_MTD_ABSENT is not set
++# CONFIG_MTD_OBSOLETE_CHIPS is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++CONFIG_MTD_PHYSMAP=y
++CONFIG_MTD_PHYSMAP_START=0x80000000
++CONFIG_MTD_PHYSMAP_LEN=0x0
++CONFIG_MTD_PHYSMAP_BANKWIDTH=2
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++CONFIG_MTD_DATAFLASH=y
++# CONFIG_MTD_M25P80 is not set
++# 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
++
++#
++# NAND Flash Device Drivers
++#
++# CONFIG_MTD_NAND is not set
++
++#
++# OneNAND Flash Device Drivers
++#
++# CONFIG_MTD_ONENAND is not set
++
++#
++# Parallel port support
++#
++# CONFIG_PARPORT is not set
++
++#
++# Plug and Play support
++#
++
++#
++# Block devices
++#
++# CONFIG_BLK_DEV_COW_COMMON is not set
++CONFIG_BLK_DEV_LOOP=y
++# CONFIG_BLK_DEV_CRYPTOLOOP is not set
++CONFIG_BLK_DEV_NBD=m
++CONFIG_BLK_DEV_RAM=m
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=4096
++CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++
++#
++# ATA/ATAPI/MFM/RLL support
++#
++# CONFIG_IDE is not set
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++# CONFIG_SCSI is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD is not set
++
++#
++# Fusion MPT device support
++#
++# CONFIG_FUSION is not set
++
++#
++# IEEE 1394 (FireWire) support
++#
++
++#
++# I2O device support
++#
++
++#
++# Network device support
++#
++CONFIG_NETDEVICES=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++
++#
++# PHY device support
++#
++# CONFIG_PHYLIB is not set
++
++#
++# Ethernet (10 or 100Mbit)
++#
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_MACB=y
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++
++#
++# Token Ring devices
++#
++
++#
++# Wireless LAN (non-hamradio)
++#
++# CONFIG_NET_RADIO is not set
++
++#
++# Wan interfaces
++#
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_SHAPER is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++
++#
++# ISDN subsystem
++#
++# CONFIG_ISDN is not set
++
++#
++# Telephony Support
++#
++# 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_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++# CONFIG_LEGACY_PTYS is not set
++
++#
++# IPMI
++#
++# CONFIG_IPMI_HANDLER is not set
++
++#
++# Watchdog Cards
++#
++# CONFIG_WATCHDOG is not set
++# CONFIG_HW_RANDOM is not set
++# CONFIG_RTC is not set
++# CONFIG_GEN_RTC is not set
++# CONFIG_DTLK is not set
++# CONFIG_R3964 is not set
++
++#
++# Ftape, the floppy tape device driver
++#
++# CONFIG_RAW_DRIVER is not set
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++# CONFIG_TELCLOCK is not set
++
++#
++# I2C support
++#
++CONFIG_I2C=m
++CONFIG_I2C_CHARDEV=m
++
++#
++# I2C Algorithms
++#
++# CONFIG_I2C_ALGOBIT is not set
++# CONFIG_I2C_ALGOPCF is not set
++# CONFIG_I2C_ALGOPCA is not set
++
++#
++# I2C Hardware Bus support
++#
++CONFIG_I2C_ATMELTWI=m
++CONFIG_I2C_ATMELTWI_BAUDRATE=100000
++# CONFIG_I2C_OCORES is not set
++# CONFIG_I2C_PARPORT_LIGHT is not set
++# CONFIG_I2C_STUB is not set
++# CONFIG_I2C_PCA_ISA is not set
++
++#
++# Miscellaneous I2C Chip support
++#
++# CONFIG_SENSORS_DS1337 is not set
++# CONFIG_SENSORS_DS1374 is not set
++# CONFIG_SENSORS_EEPROM is not set
++# CONFIG_SENSORS_PCF8574 is not set
++# CONFIG_SENSORS_PCA9539 is not set
++# CONFIG_SENSORS_PCF8591 is not set
++# CONFIG_SENSORS_MAX6875 is not set
++# CONFIG_I2C_DEBUG_CORE is not set
++# CONFIG_I2C_DEBUG_ALGO is not set
++# CONFIG_I2C_DEBUG_BUS is not set
++# CONFIG_I2C_DEBUG_CHIP is not set
++
++#
++# SPI support
++#
++CONFIG_SPI=y
++# CONFIG_SPI_DEBUG is not set
++CONFIG_SPI_MASTER=y
++
++#
++# SPI Master Controller Drivers
++#
++CONFIG_SPI_ATMEL=y
++# CONFIG_SPI_BITBANG is not set
++
++#
++# SPI Protocol Masters
++#
++
++#
++# Dallas's 1-wire bus
++#
++
++#
++# Hardware Monitoring support
++#
++# CONFIG_HWMON is not set
++# CONFIG_HWMON_VID is not set
++
++#
++# Misc devices
++#
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++CONFIG_VIDEO_V4L2=y
++
++#
++# Digital Video Broadcasting Devices
++#
++# CONFIG_DVB is not set
++
++#
++# Graphics support
++#
++# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_FB is not set
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++
++#
++# USB support
++#
++# CONFIG_USB_ARCH_HAS_HCD is not set
++# CONFIG_USB_ARCH_HAS_OHCI is not set
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# USB Gadget Support
++#
++CONFIG_USB_GADGET=m
++# CONFIG_USB_GADGET_DEBUG_FILES is not set
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_PXA2XX is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++CONFIG_USB_GADGET_HUSB2DEV=y
++CONFIG_USB_HUSB2DEV=m
++# CONFIG_USB_GADGET_OMAP is not set
++# CONFIG_USB_GADGET_AT91 is not set
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++CONFIG_USB_GADGET_DUALSPEED=y
++# CONFIG_USB_ZERO is not set
++# CONFIG_USB_ETH is not set
++# CONFIG_USB_GADGETFS is not set
++CONFIG_USB_FILE_STORAGE=m
++# CONFIG_USB_FILE_STORAGE_TEST is not set
++# CONFIG_USB_G_SERIAL is not set
++
++#
++# MMC/SD Card support
++#
++CONFIG_MMC=m
++# CONFIG_MMC_DEBUG is not set
++CONFIG_MMC_BLOCK=m
++CONFIG_MMC_ATMELMCI=m
++
++#
++# LED devices
++#
++# CONFIG_NEW_LEDS is not set
++
++#
++# LED drivers
++#
++
++#
++# LED Triggers
++#
++
++#
++# InfiniBand support
++#
++
++#
++# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
++#
++
++#
++# Real Time Clock
++#
++# CONFIG_RTC_CLASS is not set
++
++#
++# DMA Engine support
++#
++# CONFIG_DMA_ENGINE is not set
++
++#
++# DMA Clients
++#
++
++#
++# DMA Devices
++#
++
++#
++# File systems
++#
++CONFIG_EXT2_FS=y
++# CONFIG_EXT2_FS_XATTR is not set
++# CONFIG_EXT2_FS_XIP is not set
++CONFIG_EXT3_FS=y
++# CONFIG_EXT3_FS_XATTR is not set
++CONFIG_JBD=y
++# CONFIG_JBD_DEBUG is not set
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_MINIX_FS is not set
++# CONFIG_ROMFS_FS is not set
++# CONFIG_INOTIFY is not set
++# CONFIG_QUOTA is not set
++# CONFIG_DNOTIFY is not set
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++CONFIG_FUSE_FS=m
++
++#
++# CD-ROM/DVD Filesystems
++#
++# CONFIG_ISO9660_FS is not set
++# CONFIG_UDF_FS is not set
++
++#
++# DOS/FAT/NT Filesystems
++#
++CONFIG_FAT_FS=m
++CONFIG_MSDOS_FS=m
++CONFIG_VFAT_FS=m
++CONFIG_FAT_DEFAULT_CODEPAGE=850
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++# CONFIG_PROC_KCORE is not set
++CONFIG_SYSFS=y
++CONFIG_TMPFS=y
++# CONFIG_HUGETLB_PAGE is not set
++CONFIG_RAMFS=y
++CONFIG_CONFIGFS_FS=y
++
++#
++# Miscellaneous filesystems
++#
++# 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_JFFS_FS is not set
++CONFIG_JFFS2_FS=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_SUMMARY is not set
++# CONFIG_JFFS2_FS_XATTR is not set
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
++CONFIG_JFFS2_ZLIB=y
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++# CONFIG_CRAMFS is not set
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++
++#
++# Network File Systems
++#
++CONFIG_NFS_FS=y
++# CONFIG_NFS_V3 is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFS_DIRECTIO is not set
++# CONFIG_NFSD is not set
++CONFIG_ROOT_NFS=y
++CONFIG_LOCKD=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++CONFIG_SMB_FS=m
++# CONFIG_SMB_NLS_DEFAULT is not set
++CONFIG_CIFS=m
++# CONFIG_CIFS_STATS is not set
++# CONFIG_CIFS_WEAK_PW_HASH is not set
++# CONFIG_CIFS_XATTR is not set
++# CONFIG_CIFS_DEBUG2 is not set
++# CONFIG_CIFS_EXPERIMENTAL is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++# CONFIG_PARTITION_ADVANCED is not set
++CONFIG_MSDOS_PARTITION=y
++
++#
++# Native Language Support
++#
++CONFIG_NLS=y
++CONFIG_NLS_DEFAULT="iso8859-1"
++# CONFIG_NLS_CODEPAGE_437 is not set
++# CONFIG_NLS_CODEPAGE_737 is not set
++# CONFIG_NLS_CODEPAGE_775 is not set
++CONFIG_NLS_CODEPAGE_850=y
++# CONFIG_NLS_CODEPAGE_852 is not set
++# CONFIG_NLS_CODEPAGE_855 is not set
++# CONFIG_NLS_CODEPAGE_857 is not set
++# CONFIG_NLS_CODEPAGE_860 is not set
++# CONFIG_NLS_CODEPAGE_861 is not set
++# CONFIG_NLS_CODEPAGE_862 is not set
++# CONFIG_NLS_CODEPAGE_863 is not set
++# CONFIG_NLS_CODEPAGE_864 is not set
++# CONFIG_NLS_CODEPAGE_865 is not set
++# CONFIG_NLS_CODEPAGE_866 is not set
++# CONFIG_NLS_CODEPAGE_869 is not set
++# CONFIG_NLS_CODEPAGE_936 is not set
++# CONFIG_NLS_CODEPAGE_950 is not set
++# CONFIG_NLS_CODEPAGE_932 is not set
++# CONFIG_NLS_CODEPAGE_949 is not set
++# CONFIG_NLS_CODEPAGE_874 is not set
++# CONFIG_NLS_ISO8859_8 is not set
++# CONFIG_NLS_CODEPAGE_1250 is not set
++# CONFIG_NLS_CODEPAGE_1251 is not set
++# CONFIG_NLS_ASCII is not set
++CONFIG_NLS_ISO8859_1=y
++# CONFIG_NLS_ISO8859_2 is not set
++# CONFIG_NLS_ISO8859_3 is not set
++# CONFIG_NLS_ISO8859_4 is not set
++# CONFIG_NLS_ISO8859_5 is not set
++# CONFIG_NLS_ISO8859_6 is not set
++# CONFIG_NLS_ISO8859_7 is not set
++# CONFIG_NLS_ISO8859_9 is not set
++# CONFIG_NLS_ISO8859_13 is not set
++# CONFIG_NLS_ISO8859_14 is not set
++# CONFIG_NLS_ISO8859_15 is not set
++# CONFIG_NLS_KOI8_R is not set
++# CONFIG_NLS_KOI8_U is not set
++CONFIG_NLS_UTF8=y
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
++# CONFIG_PRINTK_TIME is not set
++CONFIG_MAGIC_SYSRQ=y
++# CONFIG_UNUSED_SYMBOLS is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_LOG_BUF_SHIFT=14
++CONFIG_DETECT_SOFTLOCKUP=y
++# CONFIG_SCHEDSTATS is not set
++# 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_RWSEMS 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_BUGVERBOSE=y
++# CONFIG_DEBUG_INFO is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_DEBUG_VM is not set
++CONFIG_FRAME_POINTER=y
++# CONFIG_UNWIND_INFO is not set
++# CONFIG_FORCED_INLINING is not set
++# CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_KPROBES is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++
++#
++# Cryptographic options
++#
++# CONFIG_CRYPTO is not set
++
++#
++# Hardware crypto devices
++#
++
++#
++# Library routines
++#
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++CONFIG_CRC32=y
++# CONFIG_LIBCRC32C is not set
++CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
++CONFIG_PLIST=y
diff --git a/packages/linux/linux-2.6.18/add-flush_buffer-operation-to-uart_ops.patch b/packages/linux/linux-2.6.18/add-flush_buffer-operation-to-uart_ops.patch
new file mode 100644
index 0000000000..0c9b919900
--- /dev/null
+++ b/packages/linux/linux-2.6.18/add-flush_buffer-operation-to-uart_ops.patch
@@ -0,0 +1,71 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Thu Feb 2 15:48:50 2006 +0100
+Subject: [PATCH] Add flush_buffer() operation to uart_ops
+
+Serial drivers using DMA (like the Atmel USART3 driver) tend to get
+very confused when the xmit buffer is flushed and nobody told them.
+They also tend to spew a lot of garbage since the DMA engine keeps
+running after the buffer is flushed and possibly refilled with
+unrelated data.
+
+This patch adds a new flush_buffer operation to the uart_ops struct,
+along with a call to it from uart_flush_buffer() right after the xmit
+buffer has been cleared. The driver can implement this in order to
+syncronize its internal DMA state with the xmit buffer when the buffer
+is flushed.
+
+---
+
+ Documentation/serial/driver | 11 +++++++++++
+ drivers/serial/serial_core.c | 2 ++
+ include/linux/serial_core.h | 1 +
+ 3 files changed, 14 insertions(+)
+
+Index: linux-2.6.16-avr32/Documentation/serial/driver
+===================================================================
+--- linux-2.6.16-avr32.orig/Documentation/serial/driver 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16-avr32/Documentation/serial/driver 2006-04-03 18:57:11.000000000 +0200
+@@ -186,6 +186,17 @@ hardware.
+ Locking: port_sem taken.
+ Interrupts: caller dependent.
+
++ flush_buffer(port)
++ Flush any write buffers, reset any DMA state and stop any
++ ongoing DMA transfers.
++
++ This will be called whenever the port->info->xmit circular
++ buffer is cleared.
++
++ Locking: port->lock taken.
++ Interrupts: locally disabled.
++ This call must not sleep
++
+ set_termios(port,termios,oldtermios)
+ Change the port parameters, including word length, parity, stop
+ bits. Update read_status_mask and ignore_status_mask to indicate
+Index: linux-2.6.16-avr32/drivers/serial/serial_core.c
+===================================================================
+--- linux-2.6.16-avr32.orig/drivers/serial/serial_core.c 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16-avr32/drivers/serial/serial_core.c 2006-04-03 18:57:11.000000000 +0200
+@@ -556,6 +556,8 @@ static void uart_flush_buffer(struct tty
+
+ spin_lock_irqsave(&port->lock, flags);
+ uart_circ_clear(&state->info->xmit);
++ if (port->ops->flush_buffer)
++ port->ops->flush_buffer(port);
+ spin_unlock_irqrestore(&port->lock, flags);
+ tty_wakeup(tty);
+ }
+Index: linux-2.6.16-avr32/include/linux/serial_core.h
+===================================================================
+--- linux-2.6.16-avr32.orig/include/linux/serial_core.h 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16-avr32/include/linux/serial_core.h 2006-04-03 18:57:11.000000000 +0200
+@@ -164,6 +164,7 @@ struct uart_ops {
+ void (*break_ctl)(struct uart_port *, int ctl);
+ int (*startup)(struct uart_port *);
+ void (*shutdown)(struct uart_port *);
++ void (*flush_buffer)(struct uart_port *);
+ void (*set_termios)(struct uart_port *, struct termios *new,
+ struct termios *old);
+ void (*pm)(struct uart_port *, unsigned int state,
diff --git a/packages/linux/linux-2.6.18/add-hmatrix-support.patch b/packages/linux/linux-2.6.18/add-hmatrix-support.patch
new file mode 100644
index 0000000000..4387cac0b8
--- /dev/null
+++ b/packages/linux/linux-2.6.18/add-hmatrix-support.patch
@@ -0,0 +1,414 @@
+---
+ arch/avr32/mach-at32ap/hmatrix2.h | 377 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 377 insertions(+)
+
+Index: linux-2.6.18/arch/avr32/mach-at32ap/hmatrix2.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18/arch/avr32/mach-at32ap/hmatrix2.h 2006-11-03 14:57:10.000000000 +0100
+@@ -0,0 +1,377 @@
++/*
++ * Register definitions for HMATRIX2
++ *
++ * AHB Matrix
++ */
++#ifndef __ASM_AVR32_HMATRIX2_H__
++#define __ASM_AVR32_HMATRIX2_H__
++
++/* HMATRIX2 base address */
++#define HMATRIX2_BASE (void *)0xfff00800
++
++/* HMATRIX2 register offsets */
++#define HMATRIX2_MCFG0 0x0000
++#define HMATRIX2_MCFG1 0x0004
++#define HMATRIX2_MCFG2 0x0008
++#define HMATRIX2_MCFG3 0x000c
++#define HMATRIX2_MCFG4 0x0010
++#define HMATRIX2_MCFG5 0x0014
++#define HMATRIX2_MCFG6 0x0018
++#define HMATRIX2_MCFG7 0x001c
++#define HMATRIX2_MCFG8 0x0020
++#define HMATRIX2_MCFG9 0x0024
++#define HMATRIX2_MCFG10 0x0028
++#define HMATRIX2_MCFG11 0x002c
++#define HMATRIX2_MCFG12 0x0030
++#define HMATRIX2_MCFG13 0x0034
++#define HMATRIX2_MCFG14 0x0038
++#define HMATRIX2_MCFG15 0x003c
++#define HMATRIX2_SCFG0 0x0040
++#define HMATRIX2_SCFG1 0x0044
++#define HMATRIX2_SCFG2 0x0048
++#define HMATRIX2_SCFG3 0x004c
++#define HMATRIX2_SCFG4 0x0050
++#define HMATRIX2_SCFG5 0x0054
++#define HMATRIX2_SCFG6 0x0058
++#define HMATRIX2_SCFG7 0x005c
++#define HMATRIX2_SCFG8 0x0060
++#define HMATRIX2_SCFG9 0x0064
++#define HMATRIX2_SCFG10 0x0068
++#define HMATRIX2_SCFG11 0x006c
++#define HMATRIX2_SCFG12 0x0070
++#define HMATRIX2_SCFG13 0x0074
++#define HMATRIX2_SCFG14 0x0078
++#define HMATRIX2_SCFG15 0x007c
++#define HMATRIX2_PRAS 0x0080
++#define HMATRIX2_PRBS 0x0084
++#define HMATRIX2_PRAS1 0x0088
++#define HMATRIX2_PRBS1 0x008c
++#define HMATRIX2_PRAS2 0x0090
++#define HMATRIX2_PRBS2 0x0094
++#define HMATRIX2_PRAS3 0x0098
++#define HMATRIX2_PRBS3 0x009c
++#define HMATRIX2_PRAS4 0x00a0
++#define HMATRIX2_PRBS4 0x00a4
++#define HMATRIX2_PRAS5 0x00a8
++#define HMATRIX2_PRBS5 0x00ac
++#define HMATRIX2_PRAS6 0x00b0
++#define HMATRIX2_PRBS6 0x00b4
++#define HMATRIX2_PRAS7 0x00b8
++#define HMATRIX2_PRBS7 0x00bc
++#define HMATRIX2_PRAS8 0x00c0
++#define HMATRIX2_PRBS8 0x00c4
++#define HMATRIX2_PRAS9 0x00c8
++#define HMATRIX2_PRBS9 0x00cc
++#define HMATRIX2_PRAS10 0x00d0
++#define HMATRIX2_PRBS10 0x00d4
++#define HMATRIX2_PRAS11 0x00d8
++#define HMATRIX2_PRBS11 0x00dc
++#define HMATRIX2_PRAS12 0x00e0
++#define HMATRIX2_PRBS12 0x00e4
++#define HMATRIX2_PRAS13 0x00e8
++#define HMATRIX2_PRBS13 0x00ec
++#define HMATRIX2_PRAS14 0x00f0
++#define HMATRIX2_PRBS14 0x00f4
++#define HMATRIX2_PRAS15 0x00f8
++#define HMATRIX2_PRBS15 0x00fc
++#define HMATRIX2_MRCR 0x0100
++#define HMATRIX2_SFR0 0x0110
++#define HMATRIX2_SFR1 0x0114
++#define HMATRIX2_SFR2 0x0118
++#define HMATRIX2_SFR3 0x011c
++#define HMATRIX2_SFR4 0x0120
++#define HMATRIX2_SFR5 0x0124
++#define HMATRIX2_SFR6 0x0128
++#define HMATRIX2_SFR7 0x012c
++#define HMATRIX2_SFR8 0x0130
++#define HMATRIX2_SFR9 0x0134
++#define HMATRIX2_SFR10 0x0138
++#define HMATRIX2_SFR11 0x013c
++#define HMATRIX2_SFR12 0x0140
++#define HMATRIX2_SFR13 0x0144
++#define HMATRIX2_SFR14 0x0148
++#define HMATRIX2_SFR15 0x014c
++#define HMATRIX2_VERSION 0x01fc
++
++/* Bitfields in MCFG0 */
++#define HMATRIX2_ULBT_OFFSET 0
++#define HMATRIX2_ULBT_SIZE 3
++
++/* Bitfields in MCFG1 */
++
++/* Bitfields in MCFG2 */
++
++/* Bitfields in MCFG3 */
++
++/* Bitfields in MCFG4 */
++
++/* Bitfields in MCFG5 */
++
++/* Bitfields in MCFG6 */
++
++/* Bitfields in MCFG7 */
++
++/* Bitfields in MCFG8 */
++
++/* Bitfields in MCFG9 */
++
++/* Bitfields in MCFG10 */
++
++/* Bitfields in MCFG11 */
++
++/* Bitfields in MCFG12 */
++
++/* Bitfields in MCFG13 */
++
++/* Bitfields in MCFG14 */
++
++/* Bitfields in MCFG15 */
++
++/* Bitfields in SCFG0 */
++#define HMATRIX2_SLOT_CYCLE_OFFSET 0
++#define HMATRIX2_SLOT_CYCLE_SIZE 8
++#define HMATRIX2_DEFMSTR_TYPE_OFFSET 16
++#define HMATRIX2_DEFMSTR_TYPE_SIZE 2
++#define HMATRIX2_FIXED_DEFMSTR_OFFSET 18
++#define HMATRIX2_FIXED_DEFMSTR_SIZE 4
++#define HMATRIX2_ARBT_OFFSET 24
++#define HMATRIX2_ARBT_SIZE 2
++
++/* Bitfields in SCFG1 */
++
++/* Bitfields in SCFG2 */
++
++/* Bitfields in SCFG3 */
++
++/* Bitfields in SCFG4 */
++
++/* Bitfields in SCFG5 */
++
++/* Bitfields in SCFG6 */
++
++/* Bitfields in SCFG7 */
++
++/* Bitfields in SCFG8 */
++
++/* Bitfields in SCFG9 */
++
++/* Bitfields in SCFG10 */
++
++/* Bitfields in SCFG11 */
++
++/* Bitfields in SCFG12 */
++
++/* Bitfields in SCFG13 */
++
++/* Bitfields in SCFG14 */
++
++/* Bitfields in SCFG15 */
++
++/* Bitfields in PRAS */
++#define HMATRIX2_M0PR_OFFSET 0
++#define HMATRIX2_M0PR_SIZE 4
++#define HMATRIX2_M1PR_OFFSET 4
++#define HMATRIX2_M1PR_SIZE 4
++#define HMATRIX2_M2PR_OFFSET 8
++#define HMATRIX2_M2PR_SIZE 4
++#define HMATRIX2_M3PR_OFFSET 12
++#define HMATRIX2_M3PR_SIZE 4
++#define HMATRIX2_M4PR_OFFSET 16
++#define HMATRIX2_M4PR_SIZE 4
++#define HMATRIX2_M5PR_OFFSET 20
++#define HMATRIX2_M5PR_SIZE 4
++#define HMATRIX2_M6PR_OFFSET 24
++#define HMATRIX2_M6PR_SIZE 4
++#define HMATRIX2_M7PR_OFFSET 28
++#define HMATRIX2_M7PR_SIZE 4
++
++/* Bitfields in PRBS */
++#define HMATRIX2_M8PR_OFFSET 0
++#define HMATRIX2_M8PR_SIZE 4
++#define HMATRIX2_M9PR_OFFSET 4
++#define HMATRIX2_M9PR_SIZE 4
++#define HMATRIX2_M10PR_OFFSET 8
++#define HMATRIX2_M10PR_SIZE 4
++#define HMATRIX2_M11PR_OFFSET 12
++#define HMATRIX2_M11PR_SIZE 4
++#define HMATRIX2_M12PR_OFFSET 16
++#define HMATRIX2_M12PR_SIZE 4
++#define HMATRIX2_M13PR_OFFSET 20
++#define HMATRIX2_M13PR_SIZE 4
++#define HMATRIX2_M14PR_OFFSET 24
++#define HMATRIX2_M14PR_SIZE 4
++#define HMATRIX2_M15PR_OFFSET 28
++#define HMATRIX2_M15PR_SIZE 4
++
++/* Bitfields in PRAS1 */
++
++/* Bitfields in PRBS1 */
++
++/* Bitfields in PRAS2 */
++
++/* Bitfields in PRBS2 */
++
++/* Bitfields in PRAS3 */
++
++/* Bitfields in PRBS3 */
++
++/* Bitfields in PRAS4 */
++
++/* Bitfields in PRBS4 */
++
++/* Bitfields in PRAS5 */
++
++/* Bitfields in PRBS5 */
++
++/* Bitfields in PRAS6 */
++
++/* Bitfields in PRBS6 */
++
++/* Bitfields in PRAS7 */
++
++/* Bitfields in PRBS7 */
++
++/* Bitfields in PRAS8 */
++
++/* Bitfields in PRBS8 */
++
++/* Bitfields in PRAS9 */
++
++/* Bitfields in PRBS9 */
++
++/* Bitfields in PRAS10 */
++
++/* Bitfields in PRBS10 */
++
++/* Bitfields in PRAS11 */
++
++/* Bitfields in PRBS11 */
++
++/* Bitfields in PRAS12 */
++
++/* Bitfields in PRBS12 */
++
++/* Bitfields in PRAS13 */
++
++/* Bitfields in PRBS13 */
++
++/* Bitfields in PRAS14 */
++
++/* Bitfields in PRBS14 */
++
++/* Bitfields in PRAS15 */
++
++/* Bitfields in PRBS15 */
++
++/* Bitfields in MRCR */
++#define HMATRIX2_RBC0_OFFSET 0
++#define HMATRIX2_RBC0_SIZE 1
++#define HMATRIX2_RBC1_OFFSET 1
++#define HMATRIX2_RBC1_SIZE 1
++#define HMATRIX2_RBC2_OFFSET 2
++#define HMATRIX2_RBC2_SIZE 1
++#define HMATRIX2_RBC3_OFFSET 3
++#define HMATRIX2_RBC3_SIZE 1
++#define HMATRIX2_RBC4_OFFSET 4
++#define HMATRIX2_RBC4_SIZE 1
++#define HMATRIX2_RBC5_OFFSET 5
++#define HMATRIX2_RBC5_SIZE 1
++#define HMATRIX2_RBC6_OFFSET 6
++#define HMATRIX2_RBC6_SIZE 1
++#define HMATRIX2_RBC7_OFFSET 7
++#define HMATRIX2_RBC7_SIZE 1
++#define HMATRIX2_RBC8_OFFSET 8
++#define HMATRIX2_RBC8_SIZE 1
++#define HMATRIX2_RBC9_OFFSET 9
++#define HMATRIX2_RBC9_SIZE 1
++#define HMATRIX2_RBC10_OFFSET 10
++#define HMATRIX2_RBC10_SIZE 1
++#define HMATRIX2_RBC11_OFFSET 11
++#define HMATRIX2_RBC11_SIZE 1
++#define HMATRIX2_RBC12_OFFSET 12
++#define HMATRIX2_RBC12_SIZE 1
++#define HMATRIX2_RBC13_OFFSET 13
++#define HMATRIX2_RBC13_SIZE 1
++#define HMATRIX2_RBC14_OFFSET 14
++#define HMATRIX2_RBC14_SIZE 1
++#define HMATRIX2_RBC15_OFFSET 15
++#define HMATRIX2_RBC15_SIZE 1
++
++/* Bitfields in SFR0 */
++#define HMATRIX2_SFR_OFFSET 0
++#define HMATRIX2_SFR_SIZE 32
++
++/* Bitfields in SFR1 */
++
++/* Bitfields in SFR2 */
++
++/* Bitfields in SFR3 */
++
++/* Bitfields in SFR4 */
++#define HMATRIX2_CS1A_OFFSET 1
++#define HMATRIX2_CS1A_SIZE 1
++#define HMATRIX2_CS3A_OFFSET 3
++#define HMATRIX2_CS3A_SIZE 1
++#define HMATRIX2_CS4A_OFFSET 4
++#define HMATRIX2_CS4A_SIZE 1
++#define HMATRIX2_CS5A_OFFSET 5
++#define HMATRIX2_CS5A_SIZE 1
++#define HMATRIX2_DBPUC_OFFSET 8
++#define HMATRIX2_DBPUC_SIZE 1
++
++/* Bitfields in SFR5 */
++
++/* Bitfields in SFR6 */
++
++/* Bitfields in SFR7 */
++
++/* Bitfields in SFR8 */
++
++/* Bitfields in SFR9 */
++
++/* Bitfields in SFR10 */
++
++/* Bitfields in SFR11 */
++
++/* Bitfields in SFR12 */
++
++/* Bitfields in SFR13 */
++
++/* Bitfields in SFR14 */
++
++/* Bitfields in SFR15 */
++
++/* Bitfields in VERSION */
++#define HMATRIX2_VERSION_OFFSET 0
++#define HMATRIX2_VERSION_SIZE 12
++#define HMATRIX2_MFN_OFFSET 16
++#define HMATRIX2_MFN_SIZE 3
++
++/* Constants for ULBT */
++#define HMATRIX2_ULBT_INFINITE 0
++#define HMATRIX2_ULBT_SINGLE 1
++#define HMATRIX2_ULBT_FOUR_BEAT 2
++#define HMATRIX2_ULBT_SIXTEEN_BEAT 4
++
++/* Constants for DEFMSTR_TYPE */
++#define HMATRIX2_DEFMSTR_TYPE_NO_DEFAULT 0
++#define HMATRIX2_DEFMSTR_TYPE_LAST_DEFAULT 1
++#define HMATRIX2_DEFMSTR_TYPE_FIXED_DEFAULT 2
++
++/* Constants for ARBT */
++#define HMATRIX2_ARBT_ROUND_ROBIN 0
++#define HMATRIX2_ARBT_FIXED_PRIORITY 1
++
++/* Bit manipulation macros */
++#define HMATRIX2_BIT(name) (1 << HMATRIX2_##name##_OFFSET)
++#define HMATRIX2_BF(name,value) (((value) & ((1 << HMATRIX2_##name##_SIZE) - 1)) << HMATRIX2_##name##_OFFSET)
++#define HMATRIX2_BFEXT(name,value) (((value) >> HMATRIX2_##name##_OFFSET) & ((1 << HMATRIX2_##name##_SIZE) - 1))
++#define HMATRIX2_BFINS(name,value,old) (((old) & ~(((1 << HMATRIX2_##name##_SIZE) - 1) << HMATRIX2_##name##_OFFSET)) | HMATRIX2_BF(name,value))
++
++/* Register access macros */
++#define hmatrix2_readl(base,reg) \
++ __raw_readl(base + HMATRIX2_##reg)
++#define hmatrix2_writel(base,reg,value) \
++ __raw_writel((value), base + HMATRIX2_##reg)
++
++#endif /* __ASM_AVR32_HMATRIX2_H__ */
+Index: linux-2.6.18/arch/avr32/mach-at32ap/at32ap7000.c
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/mach-at32ap/at32ap7000.c 2006-11-03 14:57:26.000000000 +0100
++++ linux-2.6.18/arch/avr32/mach-at32ap/at32ap7000.c 2006-11-03 15:25:01.000000000 +0100
+@@ -466,6 +466,15 @@
+ .users = 1,
+ };
+
++static struct clk hmatrix2_clk = {
++ .name = "hmatrix2",
++ .parent = &pbb_clk,
++ .mode = pbb_clk_mode,
++ .get_rate = pbb_clk_get_rate,
++ .users = 1,
++ .index = 2,
++};
++
+ static struct resource dmac0_resource[] = {
+ {
+ .start = 0xff200000,
+@@ -1096,6 +1096,7 @@
+ &pdc_pclk,
+ &dmac0_hclk,
+ &pico_clk,
++ &hmatrix2_clk,
+ &pio0_mck,
+ &pio1_mck,
+ &pio2_mck,
diff --git a/packages/linux/linux-2.6.18/add-ide-header.patch b/packages/linux/linux-2.6.18/add-ide-header.patch
new file mode 100644
index 0000000000..76bd35bfac
--- /dev/null
+++ b/packages/linux/linux-2.6.18/add-ide-header.patch
@@ -0,0 +1,41 @@
+Index: linux-2.6.18/include/asm-avr32/ide.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18/include/asm-avr32/ide.h 2006-10-24 15:12:02.000000000 +0200
+@@ -0,0 +1,36 @@
++/*
++ * linux/include/asm-arm/ide.h
++ *
++ * Copyright (C) 1994-1996 Linus Torvalds & authors
++ */
++
++/*
++ * This file contains the ARM architecture specific IDE code.
++ */
++
++#ifndef __ASMAVR32_IDE_H
++#define __ASMAVR32_IDE_H
++
++#ifdef __KERNEL__
++
++#ifndef MAX_HWIFS
++#define MAX_HWIFS 4
++#endif
++
++#if !defined(CONFIG_ARCH_L7200)
++# define IDE_ARCH_OBSOLETE_INIT
++# ifdef CONFIG_ARCH_CLPS7500
++# define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */
++# else
++# define ide_default_io_ctl(base) (0)
++# endif
++#endif /* !ARCH_L7200 */
++
++#define __ide_mm_insw(port,addr,len) readsw(port,addr,len)
++#define __ide_mm_insl(port,addr,len) readsl(port,addr,len)
++#define __ide_mm_outsw(port,addr,len) writesw(port,addr,len)
++#define __ide_mm_outsl(port,addr,len) writesl(port,addr,len)
++
++#endif /* __KERNEL__ */
++
++#endif /* __ASMAVR32_IDE_H */
diff --git a/packages/linux/linux-2.6.18/add-intc_pending_irq-to-intc.patch b/packages/linux/linux-2.6.18/add-intc_pending_irq-to-intc.patch
new file mode 100644
index 0000000000..6d99de84b1
--- /dev/null
+++ b/packages/linux/linux-2.6.18/add-intc_pending_irq-to-intc.patch
@@ -0,0 +1,10 @@
+--- linux-2.6.18.orig/arch/avr32/mach-at32ap/intc.c 2006-11-06 14:36:50.000000000 +0100
++++ linux-2.6.18/arch/avr32/mach-at32ap/intc.c 2006-11-06 15:09:39.000000000 +0100
+@@ -131,3 +131,7 @@
+ panic("Interrupt controller initialization failed!\n");
+ }
+
++unsigned long intc_get_pending(int group)
++{
++ return intc_readl(&intc0, INTREQ0 + 4 * group);
++}
diff --git a/packages/linux/linux-2.6.18/add-mach-specific-kconfig.patch b/packages/linux/linux-2.6.18/add-mach-specific-kconfig.patch
new file mode 100644
index 0000000000..6f6e8f4833
--- /dev/null
+++ b/packages/linux/linux-2.6.18/add-mach-specific-kconfig.patch
@@ -0,0 +1,30 @@
+---
+ arch/avr32/Kconfig | 2 ++
+ arch/avr32/mach-at32ap/Kconfig | 7 +++++++
+ 2 files changed, 9 insertions(+)
+
+Index: linux-2.6.18-avr32/arch/avr32/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/Kconfig 2006-10-24 13:30:29.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/Kconfig 2006-10-24 13:32:07.000000000 +0200
+@@ -107,6 +107,8 @@ config LOADER_U_BOOT
+ bool "U-Boot (or similar) bootloader"
+ endchoice
+
++source "arch/avr32/mach-at32ap/Kconfig"
++
+ config LOAD_ADDRESS
+ hex
+ default 0x10000000 if LOADER_U_BOOT=y && CPU_AT32AP7000=y
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/Kconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/Kconfig 2006-10-24 13:46:51.000000000 +0200
+@@ -0,0 +1,7 @@
++if PLATFORM_AT32AP
++
++menu "Atmel AVR32 AP options"
++
++endmenu
++
++endif
diff --git a/packages/linux/linux-2.6.18/at32-dac-oss-driver-clk-fix.patch b/packages/linux/linux-2.6.18/at32-dac-oss-driver-clk-fix.patch
new file mode 100644
index 0000000000..927cdc5ece
--- /dev/null
+++ b/packages/linux/linux-2.6.18/at32-dac-oss-driver-clk-fix.patch
@@ -0,0 +1,175 @@
+---
+ sound/oss/at32dac.c | 72 +++++++++++++++++++++++++++++++---------------------
+ 1 file changed, 43 insertions(+), 29 deletions(-)
+
+Index: linux-2.6.18-avr32/sound/oss/at32dac.c
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/oss/at32dac.c 2006-11-01 14:30:47.000000000 +0100
++++ linux-2.6.18-avr32/sound/oss/at32dac.c 2006-11-01 14:32:05.000000000 +0100
+@@ -71,6 +71,7 @@ struct at32_dac {
+ struct dma_request_cyclic req;
+
+ struct clk *mck;
++ struct clk *sample_clk;
+ struct platform_device *pdev;
+ int busy;
+ int playing;
+@@ -116,24 +117,6 @@ static void at32dac_update_dma_tail(stru
+ }
+ }
+
+-static int at32dac_start_genclock(struct at32_dac *dac)
+-{
+- unsigned int div;
+-
+- div = ((clk_get_rate(boot_cpu_data.clk) + 256 * dac->dsp_settings.sample_rate)
+- / (512 * dac->dsp_settings.sample_rate) - 1);
+- pr_debug("Real sample rate: %llu (div=%u)\n",
+- boot_cpu_data.cpu_hz / (512 * (div + 1)), div);
+- writel((div << 8) | 0x16, (void __iomem *)(0xfff00060 + 4 * 6));
+-
+- return 0;
+-}
+-
+-static void at32dac_stop_genclock(struct at32_dac *dac)
+-{
+- writel(0, (void __iomem *)(0xfff00060 + 4 * 6));
+-}
+-
+ static int at32dac_start(struct at32_dac *dac)
+ {
+ int ret;
+@@ -143,13 +126,11 @@ static int at32dac_start(struct at32_dac
+
+ memset(dac->dma.buf, 0, DMA_BUFFER_SIZE);
+
+- ret = at32dac_start_genclock(dac);
+- if (ret)
+- return ret;
++ clk_enable(dac->sample_clk);
+
+ ret = dma_prepare_request_cyclic(dac->req.req.dmac, &dac->req);
+ if (ret)
+- goto out_stop_genclock;
++ goto out_stop_clock;
+
+ pr_debug("Starting DMA...\n");
+ ret = dma_start_request(dac->req.req.dmac, dac->req.req.channel);
+@@ -164,8 +145,8 @@ static int at32dac_start(struct at32_dac
+ out_stop_request:
+ dma_stop_request(dac->req.req.dmac,
+ dac->req.req.channel);
+-out_stop_genclock:
+- at32dac_stop_genclock(dac);
++out_stop_clock:
++ clk_disable(dac->sample_clk);
+ return ret;
+ }
+
+@@ -176,7 +157,7 @@ static int at32dac_stop(struct at32_dac
+ dac_writel(dac, DATA, 0);
+ dac_writel(dac, CTRL, 0);
+ dac->playing = 0;
+- at32dac_stop_genclock(dac);
++ clk_disable(dac->sample_clk);
+ }
+
+ return 0;
+@@ -360,6 +341,26 @@ static int at32dac_set_format(struct at3
+ return 0;
+ }
+
++static int at32dac_set_sample_rate(struct at32_dac *dac, unsigned long rate)
++{
++ unsigned long new_rate;
++ int ret;
++
++ ret = clk_set_rate(dac->sample_clk, 256 * rate);
++ if (ret < 0)
++ return ret;
++
++ /* TODO: mplayer seems to have a problem with this */
++#if 0
++ new_rate = clk_get_rate(dac->sample_clk);
++ dac->dsp_settings.sample_rate = new_rate / 256;
++#else
++ dac->dsp_settings.sample_rate = rate;
++#endif
++
++ return 0;
++}
++
+ static ssize_t at32dac_dsp_write(struct file *file,
+ const char __user *buffer,
+ size_t count, loff_t *ppos)
+@@ -449,7 +450,9 @@ static int at32dac_dsp_ioctl(struct inod
+ return -EFAULT;
+ if (val >= 0) {
+ at32dac_stop(dac);
+- dac->dsp_settings.sample_rate = val;
++ ret = at32dac_set_sample_rate(dac, val);
++ if (ret)
++ return ret;
+ }
+ return put_user(dac->dsp_settings.sample_rate, up);
+
+@@ -534,10 +537,11 @@ static int at32dac_dsp_open(struct inode
+ dac->dma.head = dac->dma.tail = 0;
+
+ /* FIXME: What are the correct defaults? */
+- dac->dsp_settings.format = AFMT_S16_BE;
+ dac->dsp_settings.channels = 2;
+- dac->dsp_settings.sample_rate = 8000;
+- dac->dsp_settings.input_order = 2;
++ at32dac_set_format(dac, AFMT_S16_BE);
++ ret = at32dac_set_sample_rate(dac, 8000);
++ if (ret)
++ goto out;
+
+ file->private_data = dac;
+ dac->busy = 1;
+@@ -578,6 +582,7 @@ static int __devinit at32dac_probe(struc
+ struct at32_dac *dac;
+ struct resource *regs;
+ struct clk *mck;
++ struct clk *sample_clk;
+ int irq;
+ int ret;
+
+@@ -594,6 +599,11 @@ static int __devinit at32dac_probe(struc
+ mck = clk_get(&pdev->dev, "mck");
+ if (IS_ERR(mck))
+ return PTR_ERR(mck);
++ sample_clk = clk_get(&pdev->dev, "sample_clk");
++ if (IS_ERR(sample_clk)) {
++ ret = PTR_ERR(sample_clk);
++ goto out_put_mck;
++ }
+ clk_enable(mck);
+
+ ret = -ENOMEM;
+@@ -606,6 +616,7 @@ static int __devinit at32dac_probe(struc
+ init_waitqueue_head(&dac->write_wait);
+ dac->pdev = pdev;
+ dac->mck = mck;
++ dac->sample_clk = sample_clk;
+
+ dac->regs = ioremap(regs->start, regs->end - regs->start + 1);
+ if (!dac->regs)
+@@ -658,6 +669,8 @@ out_free_dac:
+ kfree(dac);
+ out_disable_clk:
+ clk_disable(mck);
++ clk_put(sample_clk);
++out_put_mck:
+ clk_put(mck);
+ return ret;
+ }
+@@ -673,6 +686,7 @@ static int __devexit at32dac_remove(stru
+ free_irq(platform_get_irq(pdev, 0), dac);
+ iounmap(dac->regs);
+ clk_disable(dac->mck);
++ clk_put(dac->sample_clk);
+ clk_put(dac->mck);
+ kfree(dac);
+ platform_set_drvdata(pdev, NULL);
diff --git a/packages/linux/linux-2.6.18/at32-dac-oss-driver.patch b/packages/linux/linux-2.6.18/at32-dac-oss-driver.patch
new file mode 100644
index 0000000000..92a17f9af3
--- /dev/null
+++ b/packages/linux/linux-2.6.18/at32-dac-oss-driver.patch
@@ -0,0 +1,819 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Mon Apr 3 17:38:29 2006 +0200
+Subject: [PATCH] OSS driver for the AT32 on-chip digital DAC
+
+---
+
+ sound/oss/Kconfig | 4
+ sound/oss/Makefile | 1
+ sound/oss/at32dac.c | 707 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ sound/oss/at32dac.h | 65 ++++
+ 4 files changed, 777 insertions(+)
+
+Index: linux-2.6.18-avr32/sound/oss/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/oss/Kconfig 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/sound/oss/Kconfig 2006-11-02 15:56:20.000000000 +0100
+@@ -869,3 +869,7 @@ config SOUND_SH_DAC_AUDIO_CHANNEL
+ int "DAC channel"
+ default "1"
+ depends on SOUND_SH_DAC_AUDIO
++
++config SOUND_AT32_DAC
++ tristate "Atmel AT32 On-chip DAC support"
++ depends on SOUND_PRIME && AVR32
+Index: linux-2.6.18-avr32/sound/oss/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/oss/Makefile 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/sound/oss/Makefile 2006-11-02 15:56:20.000000000 +0100
+@@ -10,6 +10,7 @@ obj-$(CONFIG_SOUND_CS4232) += cs4232.o a
+
+ # Please leave it as is, cause the link order is significant !
+
++obj-$(CONFIG_SOUND_AT32_DAC) += at32dac.o
+ obj-$(CONFIG_SOUND_SH_DAC_AUDIO) += sh_dac_audio.o
+ obj-$(CONFIG_SOUND_HAL2) += hal2.o
+ obj-$(CONFIG_SOUND_AEDSP16) += aedsp16.o
+Index: linux-2.6.18-avr32/sound/oss/at32dac.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/oss/at32dac.c 2006-11-02 15:56:20.000000000 +0100
+@@ -0,0 +1,707 @@
++/*
++ * OSS Sound Driver for the Atmel AT32 on-chip DAC.
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/dma-mapping.h>
++#include <linux/fs.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/sound.h>
++#include <linux/soundcard.h>
++
++#include <asm/byteorder.h>
++#include <asm/dma-controller.h>
++#include <asm/io.h>
++#include <asm/uaccess.h>
++
++/* We want to use the "bizarre" swap-bytes-in-each-halfword macro */
++#include <linux/byteorder/swabb.h>
++
++#include "at32dac.h"
++
++#define DMA_BUFFER_SIZE 32768
++#define DMA_PERIOD_SHIFT 10
++#define DMA_PERIOD_SIZE (1 << DMA_PERIOD_SHIFT)
++#define DMA_WRITE_THRESHOLD DMA_PERIOD_SIZE
++
++struct sound_settings {
++ unsigned int format;
++ unsigned int channels;
++ unsigned int sample_rate;
++ /* log2(bytes per sample) */
++ unsigned int input_order;
++};
++
++struct at32_dac {
++ spinlock_t lock;
++ void __iomem *regs;
++
++ /* head and tail refer to number of words */
++ struct {
++ u32 *buf;
++ int head;
++ int tail;
++ } dma;
++
++ struct semaphore sem;
++ wait_queue_head_t write_wait;
++
++ /*
++ * Read at most ucount bytes from ubuf, translate to 2-channel
++ * signed 16-bit big endian format and write to the DMA buffer
++ * as long as there is room left. Return the number of bytes
++ * successfully copied from ubuf, or -EFAULT if the first
++ * sample from ubuf couldn't be read. This function is not
++ * called unless there is room for at least one sample (4
++ * bytes) in the DMA buffer.
++ */
++ int (*trans)(struct at32_dac *dac, const char __user *ubuf,
++ size_t ucount);
++
++ struct sound_settings dsp_settings;
++ struct dma_request_cyclic req;
++
++ struct clk *mck;
++ struct platform_device *pdev;
++ int busy;
++ int playing;
++ int dev_dsp;
++};
++static struct at32_dac *the_dac;
++
++static inline unsigned int at32dac_get_head(struct at32_dac *dac)
++{
++ return dac->dma.head & ((DMA_BUFFER_SIZE / 4) - 1);
++}
++
++static inline unsigned int at32dac_get_tail(struct at32_dac *dac)
++{
++ return dac->dma.tail & ((DMA_BUFFER_SIZE / 4) - 1);
++}
++
++static inline unsigned int at32dac_dma_space(struct at32_dac *dac)
++{
++ unsigned int space;
++
++ space = ((dac->dma.tail - dac->dma.head - 1)
++ & ((DMA_BUFFER_SIZE / 4) - 1));
++ return space;
++}
++
++static void at32dac_update_dma_tail(struct at32_dac *dac)
++{
++ dma_addr_t dma_addr;
++ unsigned int new_tail;
++
++ if (dac->playing) {
++ dma_addr = dma_get_current_pos(dac->req.req.dmac,
++ dac->req.req.channel);
++ new_tail = (dma_addr - dac->req.buffer_start) / 4;
++ if (new_tail >= dac->dma.head
++ && (dac->dma.tail < dac->dma.head
++ || dac->dma.tail > new_tail))
++ printk(KERN_NOTICE "at32dac: underrun\n");
++ dac->dma.tail = new_tail;
++ pr_debug("update tail: 0x%x - 0x%x = %u\n",
++ dma_addr, dac->req.buffer_start, dac->dma.tail);
++ }
++}
++
++static int at32dac_start_genclock(struct at32_dac *dac)
++{
++ unsigned int div;
++
++ div = ((clk_get_rate(boot_cpu_data.clk) + 256 * dac->dsp_settings.sample_rate)
++ / (512 * dac->dsp_settings.sample_rate) - 1);
++ pr_debug("Real sample rate: %llu (div=%u)\n",
++ boot_cpu_data.cpu_hz / (512 * (div + 1)), div);
++ writel((div << 8) | 0x16, (void __iomem *)(0xfff00060 + 4 * 6));
++
++ return 0;
++}
++
++static void at32dac_stop_genclock(struct at32_dac *dac)
++{
++ writel(0, (void __iomem *)(0xfff00060 + 4 * 6));
++}
++
++static int at32dac_start(struct at32_dac *dac)
++{
++ int ret;
++
++ if (dac->playing)
++ return 0;
++
++ memset(dac->dma.buf, 0, DMA_BUFFER_SIZE);
++
++ ret = at32dac_start_genclock(dac);
++ if (ret)
++ return ret;
++
++ ret = dma_prepare_request_cyclic(dac->req.req.dmac, &dac->req);
++ if (ret)
++ goto out_stop_genclock;
++
++ pr_debug("Starting DMA...\n");
++ ret = dma_start_request(dac->req.req.dmac, dac->req.req.channel);
++ if (ret)
++ goto out_stop_request;
++
++ dac_writel(dac, CTRL, DAC_BIT(EN));
++ dac->playing = 1;
++
++ return 0;
++
++out_stop_request:
++ dma_stop_request(dac->req.req.dmac,
++ dac->req.req.channel);
++out_stop_genclock:
++ at32dac_stop_genclock(dac);
++ return ret;
++}
++
++static int at32dac_stop(struct at32_dac *dac)
++{
++ if (dac->playing) {
++ dma_stop_request(dac->req.req.dmac, dac->req.req.channel);
++ dac_writel(dac, DATA, 0);
++ dac_writel(dac, CTRL, 0);
++ dac->playing = 0;
++ at32dac_stop_genclock(dac);
++ }
++
++ return 0;
++}
++
++static int at32dac_dma_prepare(struct at32_dac *dac)
++{
++ dac->dma.buf = dma_alloc_coherent(&dac->pdev->dev, DMA_BUFFER_SIZE,
++ &dac->req.buffer_start, GFP_KERNEL);
++ if (!dac->dma.buf)
++ return -ENOMEM;
++
++ dac->dma.head = dac->dma.tail = 0;
++ dac->req.periods = DMA_BUFFER_SIZE / DMA_PERIOD_SIZE;
++ dac->req.buffer_size = DMA_BUFFER_SIZE;
++
++ return 0;
++}
++
++static void at32dac_dma_cleanup(struct at32_dac *dac)
++{
++ if (dac->dma.buf)
++ dma_free_coherent(&dac->pdev->dev, DMA_BUFFER_SIZE,
++ dac->dma.buf, dac->req.buffer_start);
++ dac->dma.buf = NULL;
++}
++
++static void at32dac_dma_block_complete(struct dma_request *req)
++{
++ struct dma_request_cyclic *creq = to_dma_request_cyclic(req);
++ struct at32_dac *dac = container_of(creq, struct at32_dac, req);
++
++ wake_up(&dac->write_wait);
++}
++
++static void at32dac_dma_error(struct dma_request *req)
++{
++ printk(KERN_ERR "at32dac: DMA error\n");
++}
++
++static irqreturn_t at32dac_interrupt(int irq, void *dev_id,
++ struct pt_regs *regs)
++{
++ struct at32_dac *dac = dev_id;
++ u32 status;
++
++ status = dac_readl(dac, INT_STATUS);
++ if (status & DAC_BIT(UNDERRUN)) {
++ printk(KERN_ERR "at32dac: Underrun detected\n");
++ dac_writel(dac, INT_CLR, DAC_BIT(UNDERRUN));
++ } else {
++ printk(KERN_ERR "at32dac: Spurious interrupt: status=0x%x\n",
++ status);
++ dac_writel(dac, INT_CLR, status);
++ }
++
++ return IRQ_HANDLED;
++}
++
++static ssize_t trans_s16be(struct at32_dac *dac, const char __user *ubuf,
++ size_t ucount)
++{
++ ssize_t ret;
++
++ if (dac->dsp_settings.channels == 2) {
++ const u32 __user *up = (const u32 __user *)ubuf;
++ u32 sample;
++
++ for (ret = 0; ret < (ssize_t)(ucount - 3); ret += 4) {
++ if (!at32dac_dma_space(dac))
++ break;
++
++ if (unlikely(__get_user(sample, up++))) {
++ if (ret == 0)
++ ret = -EFAULT;
++ break;
++ }
++ dac->dma.buf[at32dac_get_head(dac)] = sample;
++ dac->dma.head++;
++ }
++ } else {
++ const u16 __user *up = (const u16 __user *)ubuf;
++ u16 sample;
++
++ for (ret = 0; ret < (ssize_t)(ucount - 1); ret += 2) {
++ if (!at32dac_dma_space(dac))
++ break;
++
++ if (unlikely(__get_user(sample, up++))) {
++ if (ret == 0)
++ ret = -EFAULT;
++ break;
++ }
++ dac->dma.buf[at32dac_get_head(dac)]
++ = (sample << 16) | sample;
++ dac->dma.head++;
++ }
++ }
++
++ return ret;
++}
++
++static ssize_t trans_s16le(struct at32_dac *dac, const char __user *ubuf,
++ size_t ucount)
++{
++ ssize_t ret;
++
++ if (dac->dsp_settings.channels == 2) {
++ const u32 __user *up = (const u32 __user *)ubuf;
++ u32 sample;
++
++ for (ret = 0; ret < (ssize_t)(ucount - 3); ret += 4) {
++ if (!at32dac_dma_space(dac))
++ break;
++
++ if (unlikely(__get_user(sample, up++))) {
++ if (ret == 0)
++ ret = -EFAULT;
++ break;
++ }
++ /* Swap bytes in each halfword */
++ dac->dma.buf[at32dac_get_head(dac)] = swahb32(sample);
++ dac->dma.head++;
++ }
++ } else {
++ const u16 __user *up = (const u16 __user *)ubuf;
++ u16 sample;
++
++ for (ret = 0; ret < (ssize_t)(ucount - 1); ret += 2) {
++ if (!at32dac_dma_space(dac))
++ break;
++
++ if (unlikely(__get_user(sample, up++))) {
++ if (ret == 0)
++ ret = -EFAULT;
++ break;
++ }
++ sample = swab16(sample);
++ dac->dma.buf[at32dac_get_head(dac)]
++ = (sample << 16) | sample;
++ dac->dma.head++;
++ }
++ }
++
++ return ret;
++}
++
++static ssize_t at32dac_dma_translate_from_user(struct at32_dac *dac,
++ const char __user *buffer,
++ size_t count)
++{
++ /* At least one buffer must be available at this point */
++ pr_debug("at32dac: Copying %zu bytes from user...\n", count);
++
++ return dac->trans(dac, buffer, count);
++}
++
++static int at32dac_set_format(struct at32_dac *dac, int format)
++{
++ unsigned int order;
++
++ switch (format) {
++ case AFMT_S16_BE:
++ order = 1;
++ dac->trans = trans_s16be;
++ break;
++ case AFMT_S16_LE:
++ order = 1;
++ dac->trans = trans_s16le;
++ break;
++ default:
++ printk("at32dac: Unsupported format: %d\n", format);
++ return -EINVAL;
++ }
++
++ if (dac->dsp_settings.channels == 2)
++ order++;
++
++ dac->dsp_settings.input_order = order;
++ dac->dsp_settings.format = format;
++ return 0;
++}
++
++static ssize_t at32dac_dsp_write(struct file *file,
++ const char __user *buffer,
++ size_t count, loff_t *ppos)
++{
++ struct at32_dac *dac = file->private_data;
++ DECLARE_WAITQUEUE(wait, current);
++ unsigned int avail;
++ ssize_t copied;
++ ssize_t ret;
++
++ /* Avoid address space checking in the translation functions */
++ if (!access_ok(buffer, count, VERIFY_READ))
++ return -EFAULT;
++
++ down(&dac->sem);
++
++ if (!dac->dma.buf) {
++ ret = at32dac_dma_prepare(dac);
++ if (ret)
++ goto out;
++ }
++
++ add_wait_queue(&dac->write_wait, &wait);
++ ret = 0;
++ while (count > 0) {
++ do {
++ at32dac_update_dma_tail(dac);
++ avail = at32dac_dma_space(dac);
++ set_current_state(TASK_INTERRUPTIBLE);
++ if (avail >= DMA_WRITE_THRESHOLD)
++ break;
++
++ if (file->f_flags & O_NONBLOCK) {
++ if (!ret)
++ ret = -EAGAIN;
++ goto out;
++ }
++
++ pr_debug("Going to wait (avail = %u, count = %zu)\n",
++ avail, count);
++
++ up(&dac->sem);
++ schedule();
++ if (signal_pending(current)) {
++ if (!ret)
++ ret = -ERESTARTSYS;
++ goto out_nosem;
++ }
++ down(&dac->sem);
++ } while (1);
++
++ copied = at32dac_dma_translate_from_user(dac, buffer, count);
++ if (copied < 0) {
++ if (!ret)
++ ret = -EFAULT;
++ goto out;
++ }
++
++ at32dac_start(dac);
++
++ count -= copied;
++ ret += copied;
++ }
++
++out:
++ up(&dac->sem);
++out_nosem:
++ remove_wait_queue(&dac->write_wait, &wait);
++ set_current_state(TASK_RUNNING);
++ return ret;
++}
++
++static int at32dac_dsp_ioctl(struct inode *inode, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ struct at32_dac *dac = file->private_data;
++ int __user *up = (int __user *)arg;
++ struct audio_buf_info abinfo;
++ int val, ret;
++
++ switch (cmd) {
++ case OSS_GETVERSION:
++ return put_user(SOUND_VERSION, up);
++
++ case SNDCTL_DSP_SPEED:
++ if (get_user(val, up))
++ return -EFAULT;
++ if (val >= 0) {
++ at32dac_stop(dac);
++ dac->dsp_settings.sample_rate = val;
++ }
++ return put_user(dac->dsp_settings.sample_rate, up);
++
++ case SNDCTL_DSP_STEREO:
++ if (get_user(val, up))
++ return -EFAULT;
++ at32dac_stop(dac);
++ if (val && dac->dsp_settings.channels == 1)
++ dac->dsp_settings.input_order++;
++ else if (!val && dac->dsp_settings.channels != 1)
++ dac->dsp_settings.input_order--;
++ dac->dsp_settings.channels = val ? 2 : 1;
++ return 0;
++
++ case SNDCTL_DSP_CHANNELS:
++ if (get_user(val, up))
++ return -EFAULT;
++
++ if (val) {
++ if (val < 0 || val > 2)
++ return -EINVAL;
++
++ at32dac_stop(dac);
++ dac->dsp_settings.input_order
++ += val - dac->dsp_settings.channels;
++ dac->dsp_settings.channels = val;
++ }
++ return put_user(val, (int *)arg);
++
++ case SNDCTL_DSP_GETFMTS:
++ return put_user(AFMT_S16_BE | AFMT_S16_BE, up);
++
++ case SNDCTL_DSP_SETFMT:
++ if (get_user(val, up))
++ return -EFAULT;
++
++ if (val == AFMT_QUERY) {
++ val = dac->dsp_settings.format;
++ } else {
++ ret = at32dac_set_format(dac, val);
++ if (ret)
++ return ret;
++ }
++ return put_user(val, up);
++
++ case SNDCTL_DSP_GETOSPACE:
++ at32dac_update_dma_tail(dac);
++ abinfo.fragsize = ((1 << dac->dsp_settings.input_order)
++ * (DMA_PERIOD_SIZE / 4));
++ abinfo.bytes = (at32dac_dma_space(dac)
++ << dac->dsp_settings.input_order);
++ abinfo.fragstotal = ((DMA_BUFFER_SIZE * 4)
++ >> (DMA_PERIOD_SHIFT
++ + dac->dsp_settings.input_order));
++ abinfo.fragments = ((abinfo.bytes
++ >> dac->dsp_settings.input_order)
++ / (DMA_PERIOD_SIZE / 4));
++ pr_debug("fragments=%d fragstotal=%d fragsize=%d bytes=%d\n",
++ abinfo.fragments, abinfo.fragstotal, abinfo.fragsize,
++ abinfo.bytes);
++ return copy_to_user(up, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;
++
++ default:
++ printk("at32dac: Unimplemented ioctl cmd: 0x%x\n", cmd);
++ return -EINVAL;
++ }
++}
++
++static int at32dac_dsp_open(struct inode *inode, struct file *file)
++{
++ struct at32_dac *dac = the_dac;
++ int ret;
++
++ if (file->f_mode & FMODE_READ)
++ return -ENXIO;
++
++ down(&dac->sem);
++ ret = -EBUSY;
++ if (dac->busy)
++ goto out;
++
++ dac->dma.head = dac->dma.tail = 0;
++
++ /* FIXME: What are the correct defaults? */
++ dac->dsp_settings.format = AFMT_S16_BE;
++ dac->dsp_settings.channels = 2;
++ dac->dsp_settings.sample_rate = 8000;
++ dac->dsp_settings.input_order = 2;
++
++ file->private_data = dac;
++ dac->busy = 1;
++
++ ret = 0;
++
++out:
++ up(&dac->sem);
++ return ret;
++}
++
++static int at32dac_dsp_release(struct inode *inode, struct file *file)
++{
++ struct at32_dac *dac = file->private_data;
++
++ down(&dac->sem);
++
++ at32dac_stop(dac);
++ at32dac_dma_cleanup(dac);
++ dac->busy = 0;
++
++ up(&dac->sem);
++
++ return 0;
++}
++
++static struct file_operations at32dac_dsp_fops = {
++ .owner = THIS_MODULE,
++ .llseek = no_llseek,
++ .write = at32dac_dsp_write,
++ .ioctl = at32dac_dsp_ioctl,
++ .open = at32dac_dsp_open,
++ .release = at32dac_dsp_release,
++};
++
++static int __devinit at32dac_probe(struct platform_device *pdev)
++{
++ struct at32_dac *dac;
++ struct resource *regs;
++ struct clk *mck;
++ int irq;
++ int ret;
++
++ if (the_dac)
++ return -EBUSY;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++ irq = platform_get_irq(pdev, 0);
++ if (irq < 0)
++ return irq;
++
++ mck = clk_get(&pdev->dev, "mck");
++ if (IS_ERR(mck))
++ return PTR_ERR(mck);
++ clk_enable(mck);
++
++ ret = -ENOMEM;
++ dac = kzalloc(sizeof(struct at32_dac), GFP_KERNEL);
++ if (!dac)
++ goto out_disable_clk;
++
++ spin_lock_init(&dac->lock);
++ init_MUTEX(&dac->sem);
++ init_waitqueue_head(&dac->write_wait);
++ dac->pdev = pdev;
++ dac->mck = mck;
++
++ dac->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!dac->regs)
++ goto out_free_dac;
++
++ ret = request_irq(irq, at32dac_interrupt, 0, "dac", dac);
++ if (ret)
++ goto out_unmap_regs;
++
++ /* FIXME */
++ dac->req.req.dmac = find_dma_controller(0);
++ if (!dac->req.req.dmac)
++ goto out_free_irq;
++
++ ret = dma_alloc_channel(dac->req.req.dmac);
++ if (ret < 0)
++ goto out_free_irq;
++
++ dac->req.req.channel = ret;
++ dac->req.req.block_complete = at32dac_dma_block_complete;
++ dac->req.req.error = at32dac_dma_error;
++ dac->req.data_reg = regs->start + DAC_DATA;
++ dac->req.periph_id = 2; /* FIXME */
++ dac->req.direction = DMA_DIR_MEM_TO_PERIPH;
++ dac->req.width = DMA_WIDTH_32BIT;
++
++ /* Make sure the DAC is silent and disabled */
++ dac_writel(dac, DATA, 0);
++ dac_writel(dac, CTRL, 0);
++
++ ret = register_sound_dsp(&at32dac_dsp_fops, -1);
++ if (ret < 0)
++ goto out_free_dma;
++ dac->dev_dsp = ret;
++
++ /* TODO: Register mixer */
++
++ the_dac = dac;
++ platform_set_drvdata(pdev, dac);
++
++ return 0;
++
++out_free_dma:
++ dma_release_channel(dac->req.req.dmac, dac->req.req.channel);
++out_free_irq:
++ free_irq(irq, dac);
++out_unmap_regs:
++ iounmap(dac->regs);
++out_free_dac:
++ kfree(dac);
++out_disable_clk:
++ clk_disable(mck);
++ clk_put(mck);
++ return ret;
++}
++
++static int __devexit at32dac_remove(struct platform_device *pdev)
++{
++ struct at32_dac *dac;
++
++ dac = platform_get_drvdata(pdev);
++ if (dac) {
++ unregister_sound_dsp(dac->dev_dsp);
++ dma_release_channel(dac->req.req.dmac, dac->req.req.channel);
++ free_irq(platform_get_irq(pdev, 0), dac);
++ iounmap(dac->regs);
++ clk_disable(dac->mck);
++ clk_put(dac->mck);
++ kfree(dac);
++ platform_set_drvdata(pdev, NULL);
++ the_dac = NULL;
++ }
++
++ return 0;
++}
++
++static struct platform_driver at32dac_driver = {
++ .probe = at32dac_probe,
++ .remove = __devexit_p(at32dac_remove),
++ .driver = {
++ .name = "dac",
++ },
++};
++
++static int __init at32dac_init(void)
++{
++ return platform_driver_register(&at32dac_driver);
++}
++module_init(at32dac_init);
++
++static void __exit at32dac_exit(void)
++{
++ platform_driver_unregister(&at32dac_driver);
++}
++module_exit(at32dac_exit);
++
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
++MODULE_DESCRIPTION("DMA Sound Driver for the Atmel AT32 on-chip DAC");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.18-avr32/sound/oss/at32dac.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/oss/at32dac.h 2006-11-02 15:57:01.000000000 +0100
+@@ -0,0 +1,65 @@
++/*
++ * Register definitions for the Atmel AT32 on-chip DAC.
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_DAC_H__
++#define __ASM_AVR32_DAC_H__
++
++/* DAC register offsets */
++#define DAC_DATA 0x0000
++#define DAC_CTRL 0x0008
++#define DAC_INT_MASK 0x000c
++#define DAC_INT_EN 0x0010
++#define DAC_INT_DIS 0x0014
++#define DAC_INT_CLR 0x0018
++#define DAC_INT_STATUS 0x001c
++#define DAC_PDC_DATA 0x0020
++
++/* Bitfields in DATA */
++#define DAC_DATA_OFFSET 0
++#define DAC_DATA_SIZE 32
++
++/* Bitfields in CTRL */
++#define DAC_SWAP_OFFSET 30
++#define DAC_SWAP_SIZE 1
++#define DAC_EN_OFFSET 31
++#define DAC_EN_SIZE 1
++
++/* Bitfields in INT_MASK */
++
++/* Bitfields in INT_EN */
++
++/* Bitfields in INT_DIS */
++#define DAC_TX_READY_OFFSET 29
++#define DAC_TX_READY_SIZE 1
++#define DAC_TX_BUFFER_EMPTY_OFFSET 30
++#define DAC_TX_BUFFER_EMPTY_SIZE 1
++#define DAC_CHANNEL_TX_END_OFFSET 31
++#define DAC_CHANNEL_TX_END_SIZE 1
++
++/* Bitfields in INT_CLR */
++#define DAC_UNDERRUN_OFFSET 28
++#define DAC_UNDERRUN_SIZE 1
++
++/* Bitfields in INT_STATUS */
++
++/* Bitfields in PDC_DATA */
++
++/* Bit manipulation macros */
++#define DAC_BIT(name) (1 << DAC_##name##_OFFSET)
++#define DAC_BF(name,value) (((value) & ((1 << DAC_##name##_SIZE) - 1)) << DAC_##name##_OFFSET)
++#define DAC_BFEXT(name,value) (((value) >> DAC_##name##_OFFSET) & ((1 << DAC_##name##_SIZE) - 1))
++#define DAC_BFINS(name,value,old) (((old) & ~(((1 << DAC_##name##_SIZE) - 1) << DAC_##name##_OFFSET)) | DAC_BF(name,value))
++
++/* Register access macros */
++#define dac_readl(port,reg) \
++ __raw_readl((port)->regs + DAC_##reg)
++#define dac_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + DAC_##reg)
++
++#endif /* __ASM_AVR32_DAC_H__ */
diff --git a/packages/linux/linux-2.6.18/at32ap7000-dmac-driver.patch b/packages/linux/linux-2.6.18/at32ap7000-dmac-driver.patch
new file mode 100644
index 0000000000..dfe5f6abd5
--- /dev/null
+++ b/packages/linux/linux-2.6.18/at32ap7000-dmac-driver.patch
@@ -0,0 +1,855 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Håvard Skinnemoen <hskinnemoen@atmel.com>
+Date: Fri Dec 2 13:24:24 2005 +0100
+Subject: [PATCH] AVR32: DesignWare DMA Controller
+
+This patch adds a driver for the Synopsys DesignWare DMA Controller.
+
+---
+
+ arch/avr32/Kconfig | 4
+ arch/avr32/Makefile | 1
+ arch/avr32/drivers/Makefile | 1
+ arch/avr32/drivers/dw-dmac.c | 754 +++++++++++++++++++++++++++++++++++++++++++
+ arch/avr32/drivers/dw-dmac.h | 42 ++
+ 5 files changed, 802 insertions(+)
+
+Index: linux-2.6.18-avr32/arch/avr32/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/Makefile 2006-11-02 14:17:29.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/Makefile 2006-11-02 15:53:13.000000000 +0100
+@@ -30,6 +30,7 @@ core-$(CONFIG_BOARD_ATSTK1000) += arch/
+ core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
+ core-y += arch/avr32/kernel/
+ core-y += arch/avr32/mm/
++drivers-y += arch/avr32/drivers/
+ drivers-$(CONFIG_OPROFILE) += arch/avr32/oprofile/
+ libs-y += arch/avr32/lib/
+
+Index: linux-2.6.18-avr32/arch/avr32/drivers/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/drivers/Makefile 2006-11-02 14:17:29.000000000 +0100
+@@ -0,0 +1 @@
++obj-$(CONFIG_DW_DMAC) += dw-dmac.o
+Index: linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.c 2006-11-02 15:55:35.000000000 +0100
+@@ -0,0 +1,754 @@
++/*
++ * Driver for the Synopsys DesignWare DMA Controller
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++#include <linux/dmapool.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <asm/dma-controller.h>
++#include <asm/io.h>
++
++#include "dw-dmac.h"
++
++#define DMAC_NR_CHANNELS 3
++#define DMAC_MAX_BLOCKSIZE 4095
++
++enum {
++ CH_STATE_FREE = 0,
++ CH_STATE_ALLOCATED,
++ CH_STATE_BUSY,
++};
++
++struct dw_dma_lli {
++ dma_addr_t sar;
++ dma_addr_t dar;
++ dma_addr_t llp;
++ u32 ctllo;
++ u32 ctlhi;
++ u32 sstat;
++ u32 dstat;
++};
++
++struct dw_dma_block {
++ struct dw_dma_lli *lli_vaddr;
++ dma_addr_t lli_dma_addr;
++};
++
++struct dw_dma_channel {
++ unsigned int state;
++ int is_cyclic;
++ struct dma_request_sg *req_sg;
++ struct dma_request_cyclic *req_cyclic;
++ unsigned int nr_blocks;
++ int direction;
++ struct dw_dma_block *block;
++};
++
++struct dw_dma_controller {
++ spinlock_t lock;
++ void * __iomem regs;
++ struct dma_pool *lli_pool;
++ struct clk *hclk;
++ struct dma_controller dma;
++ struct dw_dma_channel channel[DMAC_NR_CHANNELS];
++};
++#define to_dw_dmac(dmac) container_of(dmac, struct dw_dma_controller, dma)
++
++#define dmac_writel_hi(dmac, reg, value) \
++ __raw_writel((value), (dmac)->regs + DW_DMAC_##reg + 4)
++#define dmac_readl_hi(dmac, reg) \
++ __raw_readl((dmac)->regs + DW_DMAC_##reg + 4)
++#define dmac_writel_lo(dmac, reg, value) \
++ __raw_writel((value), (dmac)->regs + DW_DMAC_##reg)
++#define dmac_readl_lo(dmac, reg) \
++ __raw_readl((dmac)->regs + DW_DMAC_##reg)
++#define dmac_chan_writel_hi(dmac, chan, reg, value) \
++ __raw_writel((value), ((dmac)->regs + 0x58 * (chan) \
++ + DW_DMAC_CHAN_##reg + 4))
++#define dmac_chan_readl_hi(dmac, chan, reg) \
++ __raw_readl((dmac)->regs + 0x58 * (chan) + DW_DMAC_CHAN_##reg + 4)
++#define dmac_chan_writel_lo(dmac, chan, reg, value) \
++ __raw_writel((value), (dmac)->regs + 0x58 * (chan) + DW_DMAC_CHAN_##reg)
++#define dmac_chan_readl_lo(dmac, chan, reg) \
++ __raw_readl((dmac)->regs + 0x58 * (chan) + DW_DMAC_CHAN_##reg)
++#define set_channel_bit(dmac, reg, chan) \
++ dmac_writel_lo(dmac, reg, (1 << (chan)) | (1 << ((chan) + 8)))
++#define clear_channel_bit(dmac, reg, chan) \
++ dmac_writel_lo(dmac, reg, (0 << (chan)) | (1 << ((chan) + 8)))
++
++static int dmac_alloc_channel(struct dma_controller *_dmac)
++{
++ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++ struct dw_dma_channel *chan;
++ unsigned long flags;
++ int i;
++
++ spin_lock_irqsave(&dmac->lock, flags);
++ for (i = 0; i < DMAC_NR_CHANNELS; i++)
++ if (dmac->channel[i].state == CH_STATE_FREE)
++ break;
++
++ if (i < DMAC_NR_CHANNELS) {
++ chan = &dmac->channel[i];
++ chan->state = CH_STATE_ALLOCATED;
++ } else {
++ i = -EBUSY;
++ }
++
++ spin_unlock_irqrestore(&dmac->lock, flags);
++
++ return i;
++}
++
++static void dmac_release_channel(struct dma_controller *_dmac, int channel)
++{
++ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++
++ BUG_ON(channel >= DMAC_NR_CHANNELS
++ || dmac->channel[channel].state != CH_STATE_ALLOCATED);
++
++ dmac->channel[channel].state = CH_STATE_FREE;
++}
++
++static struct dw_dma_block *allocate_blocks(struct dw_dma_controller *dmac,
++ unsigned int nr_blocks)
++{
++ struct dw_dma_block *block;
++ void *p;
++ unsigned int i;
++
++ block = kmalloc(nr_blocks * sizeof(*block),
++ GFP_KERNEL);
++ if (unlikely(!block))
++ return NULL;
++
++ for (i = 0; i < nr_blocks; i++) {
++ p = dma_pool_alloc(dmac->lli_pool, GFP_KERNEL,
++ &block[i].lli_dma_addr);
++ block[i].lli_vaddr = p;
++ if (unlikely(!p))
++ goto fail;
++ }
++
++ return block;
++
++fail:
++ for (i = 0; i < nr_blocks; i++) {
++ if (!block[i].lli_vaddr)
++ break;
++ dma_pool_free(dmac->lli_pool, block[i].lli_vaddr,
++ block[i].lli_dma_addr);
++ }
++ kfree(block);
++ return NULL;
++}
++
++static int dmac_prepare_request_sg(struct dma_controller *_dmac,
++ struct dma_request_sg *req)
++{
++ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++ struct dw_dma_channel *chan;
++ unsigned long ctlhi, ctllo, cfghi, cfglo;
++ unsigned long block_size;
++ int ret, i, nr_blocks, direction;
++ unsigned long flags;
++
++ spin_lock_irqsave(&dmac->lock, flags);
++
++ ret = -EINVAL;
++ if (req->req.channel >= DMAC_NR_CHANNELS
++ || dmac->channel[req->req.channel].state != CH_STATE_ALLOCATED
++ || req->block_size > DMAC_MAX_BLOCKSIZE) {
++ spin_unlock_irqrestore(&dmac->lock, flags);
++ return -EINVAL;
++ }
++
++ chan = &dmac->channel[req->req.channel];
++ chan->state = CH_STATE_BUSY;
++ chan->req_sg = req;
++ chan->is_cyclic = 0;
++
++ /*
++ * We have marked the channel as busy, so no need to keep the
++ * lock as long as we only touch the channel-specific
++ * registers
++ */
++ spin_unlock_irqrestore(&dmac->lock, flags);
++
++ /*
++ * There may be limitations in the driver and/or the DMA
++ * controller that prevents us from sending a whole
++ * scatterlist item in one go. Taking this into account,
++ * calculate the number of block transfers we need to set up.
++ *
++ * FIXME: Let the peripheral driver know about the maximum
++ * block size we support. We really don't want to use a
++ * different block size than what was suggested by the
++ * peripheral.
++ *
++ * Each block will get its own Linked List Item (LLI) below.
++ */
++ block_size = req->block_size;
++ pr_debug("block_size = %lu, nr_sg = %u\n", block_size, req->nr_sg);
++ for (i = 0, nr_blocks = 0; i < req->nr_sg; i++) {
++ pr_debug("sg[i].length = %u\n", req->sg[i].length);
++ BUG_ON(req->sg[i].length % block_size);
++ nr_blocks += req->sg[i].length / block_size;
++ }
++
++ BUG_ON(nr_blocks == 0);
++ chan->nr_blocks = nr_blocks;
++
++ ret = -EINVAL;
++ cfglo = cfghi = 0;
++ switch (req->direction) {
++ case DMA_DIR_MEM_TO_PERIPH:
++ direction = DMA_TO_DEVICE;
++ cfghi = req->periph_id << (43 - 32);
++ break;
++
++ case DMA_DIR_PERIPH_TO_MEM:
++ direction = DMA_FROM_DEVICE;
++ cfghi = req->periph_id << (39 - 32);
++ break;
++ default:
++ goto out_unclaim_channel;
++ }
++
++ chan->direction = direction;
++
++ dmac_chan_writel_hi(dmac, req->req.channel, CFG, cfghi);
++ dmac_chan_writel_lo(dmac, req->req.channel, CFG, cfglo);
++
++ ctlhi = block_size >> req->width;
++ ctllo = ((req->direction << 20)
++ // | (1 << 14) | (1 << 11) // source/dest burst trans len
++ | (req->width << 4) | (req->width << 1)
++ | (1 << 0)); // interrupt enable
++
++ if (nr_blocks == 1) {
++ /* Only one block: No need to use block chaining */
++ if (direction == DMA_TO_DEVICE) {
++ dmac_chan_writel_lo(dmac, req->req.channel, SAR,
++ req->sg->dma_address);
++ dmac_chan_writel_lo(dmac, req->req.channel, DAR,
++ req->data_reg);
++ ctllo |= 2 << 7; // no dst increment
++ } else {
++ dmac_chan_writel_lo(dmac, req->req.channel, SAR,
++ req->data_reg);
++ dmac_chan_writel_lo(dmac, req->req.channel, DAR,
++ req->sg->dma_address);
++ ctllo |= 2 << 9; // no src increment
++ }
++ dmac_chan_writel_lo(dmac, req->req.channel, CTL, ctllo);
++ dmac_chan_writel_hi(dmac, req->req.channel, CTL, ctlhi);
++ } else {
++ struct dw_dma_lli *lli, *lli_prev = NULL;
++ int j = 0, offset = 0;
++
++ ret = -ENOMEM;
++ chan->block = allocate_blocks(dmac, nr_blocks);
++ if (!chan->block)
++ goto out_unclaim_channel;
++
++ if (direction == DMA_TO_DEVICE)
++ ctllo |= 1 << 28 | 1 << 27 | 2 << 7;
++ else
++ ctllo |= 1 << 28 | 1 << 27 | 2 << 9;
++
++ /*
++ * Map scatterlist items to blocks. One scatterlist
++ * item may need more than one block for the reasons
++ * mentioned above.
++ */
++ for (i = 0; i < nr_blocks; i++) {
++ lli = chan->block[i].lli_vaddr;
++ if (lli_prev) {
++ lli_prev->llp = chan->block[i].lli_dma_addr;
++ pr_debug("lli[%d] (0x%p/0x%x): 0x%x 0x%x 0x%x 0x%x 0x%x\n",
++ i - 1, chan->block[i - 1].lli_vaddr,
++ chan->block[i - 1].lli_dma_addr,
++ lli_prev->sar, lli_prev->dar, lli_prev->llp,
++ lli_prev->ctllo, lli_prev->ctlhi);
++ }
++ lli->llp = 0;
++ lli->ctllo = ctllo;
++ lli->ctlhi = ctlhi;
++ if (direction == DMA_TO_DEVICE) {
++ lli->sar = req->sg[j].dma_address + offset;
++ lli->dar = req->data_reg;
++ } else {
++ lli->sar = req->data_reg;
++ lli->dar = req->sg[j].dma_address + offset;
++ }
++ lli_prev = lli;
++
++ offset += block_size;
++ if (offset > req->sg[j].length) {
++ j++;
++ offset = 0;
++ }
++ }
++
++ pr_debug("lli[%d] (0x%p/0x%x): 0x%x 0x%x 0x%x 0x%x 0x%x\n",
++ i - 1, chan->block[i - 1].lli_vaddr,
++ chan->block[i - 1].lli_dma_addr, lli_prev->sar,
++ lli_prev->dar, lli_prev->llp,
++ lli_prev->ctllo, lli_prev->ctlhi);
++
++ /*
++ * SAR, DAR and CTL are initialized from the LLI. We
++ * only have to enable the LLI bits in CTL.
++ */
++ dmac_chan_writel_lo(dmac, req->req.channel, LLP,
++ chan->block[0].lli_dma_addr);
++ dmac_chan_writel_lo(dmac, req->req.channel, CTL, 1 << 28 | 1 << 27);
++ }
++
++ set_channel_bit(dmac, MASK_XFER, req->req.channel);
++ set_channel_bit(dmac, MASK_ERROR, req->req.channel);
++ if (req->req.block_complete)
++ set_channel_bit(dmac, MASK_BLOCK, req->req.channel);
++ else
++ clear_channel_bit(dmac, MASK_BLOCK, req->req.channel);
++
++ return 0;
++
++out_unclaim_channel:
++ chan->state = CH_STATE_ALLOCATED;
++ return ret;
++}
++
++static int dmac_prepare_request_cyclic(struct dma_controller *_dmac,
++ struct dma_request_cyclic *req)
++{
++ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++ struct dw_dma_channel *chan;
++ unsigned long ctlhi, ctllo, cfghi, cfglo;
++ unsigned long block_size;
++ int ret, i, direction;
++ unsigned long flags;
++
++ spin_lock_irqsave(&dmac->lock, flags);
++
++ block_size = (req->buffer_size/req->periods) >> req->width;
++
++ ret = -EINVAL;
++ if (req->req.channel >= DMAC_NR_CHANNELS
++ || dmac->channel[req->req.channel].state != CH_STATE_ALLOCATED
++ || (req->periods == 0)
++ || block_size > DMAC_MAX_BLOCKSIZE) {
++ spin_unlock_irqrestore(&dmac->lock, flags);
++ return -EINVAL;
++ }
++
++ chan = &dmac->channel[req->req.channel];
++ chan->state = CH_STATE_BUSY;
++ chan->is_cyclic = 1;
++ chan->req_cyclic = req;
++
++ /*
++ * We have marked the channel as busy, so no need to keep the
++ * lock as long as we only touch the channel-specific
++ * registers
++ */
++ spin_unlock_irqrestore(&dmac->lock, flags);
++
++ /*
++ Setup
++ */
++ BUG_ON(req->buffer_size % req->periods);
++ /* printk(KERN_INFO "block_size = %lu, periods = %u\n", block_size, req->periods); */
++
++ chan->nr_blocks = req->periods;
++
++ ret = -EINVAL;
++ cfglo = cfghi = 0;
++ switch (req->direction) {
++ case DMA_DIR_MEM_TO_PERIPH:
++ direction = DMA_TO_DEVICE;
++ cfghi = req->periph_id << (43 - 32);
++ break;
++
++ case DMA_DIR_PERIPH_TO_MEM:
++ direction = DMA_FROM_DEVICE;
++ cfghi = req->periph_id << (39 - 32);
++ break;
++ default:
++ goto out_unclaim_channel;
++ }
++
++ chan->direction = direction;
++
++ dmac_chan_writel_hi(dmac, req->req.channel, CFG, cfghi);
++ dmac_chan_writel_lo(dmac, req->req.channel, CFG, cfglo);
++
++ ctlhi = block_size;
++ ctllo = ((req->direction << 20)
++ | (req->width << 4) | (req->width << 1)
++ | (1 << 0)); // interrupt enable
++
++ {
++ struct dw_dma_lli *lli = NULL, *lli_prev = NULL;
++
++ ret = -ENOMEM;
++ chan->block = allocate_blocks(dmac, req->periods);
++ if (!chan->block)
++ goto out_unclaim_channel;
++
++ if (direction == DMA_TO_DEVICE)
++ ctllo |= 1 << 28 | 1 << 27 | 2 << 7;
++ else
++ ctllo |= 1 << 28 | 1 << 27 | 2 << 9;
++
++ /*
++ * Set up a linked list items where each period gets
++ * an item. The linked list item for the last period
++ * points back to the star of the buffer making a
++ * cyclic buffer.
++ */
++ for (i = 0; i < req->periods; i++) {
++ lli = chan->block[i].lli_vaddr;
++ if (lli_prev) {
++ lli_prev->llp = chan->block[i].lli_dma_addr;
++ /* printk(KERN_INFO "lli[%d] (0x%p/0x%x): 0x%x 0x%x 0x%x 0x%x 0x%x\n",
++ i - 1, chan->block[i - 1].lli_vaddr,
++ chan->block[i - 1].lli_dma_addr,
++ lli_prev->sar, lli_prev->dar, lli_prev->llp,
++ lli_prev->ctllo, lli_prev->ctlhi);*/
++ }
++ lli->llp = 0;
++ lli->ctllo = ctllo;
++ lli->ctlhi = ctlhi;
++ if (direction == DMA_TO_DEVICE) {
++ lli->sar = req->buffer_start + i*(block_size << req->width);
++ lli->dar = req->data_reg;
++ } else {
++ lli->sar = req->data_reg;
++ lli->dar = req->buffer_start + i*(block_size << req->width);
++ }
++ lli_prev = lli;
++ }
++ lli->llp = chan->block[0].lli_dma_addr;
++
++ /*printk(KERN_INFO "lli[%d] (0x%p/0x%x): 0x%x 0x%x 0x%x 0x%x 0x%x\n",
++ i - 1, chan->block[i - 1].lli_vaddr,
++ chan->block[i - 1].lli_dma_addr, lli_prev->sar,
++ lli_prev->dar, lli_prev->llp,
++ lli_prev->ctllo, lli_prev->ctlhi); */
++
++ /*
++ * SAR, DAR and CTL are initialized from the LLI. We
++ * only have to enable the LLI bits in CTL.
++ */
++ dmac_chan_writel_lo(dmac, req->req.channel, LLP,
++ chan->block[0].lli_dma_addr);
++ dmac_chan_writel_lo(dmac, req->req.channel, CTL, 1 << 28 | 1 << 27);
++ }
++
++ clear_channel_bit(dmac, MASK_XFER, req->req.channel);
++ set_channel_bit(dmac, MASK_ERROR, req->req.channel);
++ if (req->req.block_complete)
++ set_channel_bit(dmac, MASK_BLOCK, req->req.channel);
++ else
++ clear_channel_bit(dmac, MASK_BLOCK, req->req.channel);
++
++ return 0;
++
++out_unclaim_channel:
++ chan->state = CH_STATE_ALLOCATED;
++ return ret;
++}
++
++static int dmac_start_request(struct dma_controller *_dmac,
++ unsigned int channel)
++{
++ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++
++ BUG_ON(channel >= DMAC_NR_CHANNELS);
++
++ set_channel_bit(dmac, CH_EN, channel);
++
++ return 0;
++}
++
++static dma_addr_t dmac_get_current_pos(struct dma_controller *_dmac,
++ unsigned int channel)
++{
++ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++ struct dw_dma_channel *chan;
++ dma_addr_t current_pos;
++
++ BUG_ON(channel >= DMAC_NR_CHANNELS);
++
++ chan = &dmac->channel[channel];
++
++ switch (chan->direction) {
++ case DMA_TO_DEVICE:
++ current_pos = dmac_chan_readl_lo(dmac, channel, SAR);
++ break;
++ case DMA_FROM_DEVICE:
++ current_pos = dmac_chan_readl_lo(dmac, channel, DAR);
++ break;
++ default:
++ return 0;
++ }
++
++
++ if (!current_pos) {
++ if (chan->is_cyclic) {
++ current_pos = chan->req_cyclic->buffer_start;
++ } else {
++ current_pos = chan->req_sg->sg->dma_address;
++ }
++ }
++
++ return current_pos;
++}
++
++
++static void cleanup_channel(struct dw_dma_controller *dmac,
++ struct dw_dma_channel *chan)
++{
++ unsigned int i;
++
++ if (chan->nr_blocks > 1) {
++ for (i = 0; i < chan->nr_blocks; i++)
++ dma_pool_free(dmac->lli_pool, chan->block[i].lli_vaddr,
++ chan->block[i].lli_dma_addr);
++ kfree(chan->block);
++ }
++
++ chan->state = CH_STATE_ALLOCATED;
++}
++
++static int dmac_stop_request(struct dma_controller *_dmac,
++ unsigned int channel)
++{
++ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++
++ BUG_ON(channel >= DMAC_NR_CHANNELS);
++
++ BUG_ON(dmac->channel[channel].state != CH_STATE_BUSY);
++
++ clear_channel_bit(dmac, CH_EN, channel);
++
++ cleanup_channel(dmac, &dmac->channel[channel]);
++
++ return 0;
++}
++
++
++static void dmac_block_complete(struct dw_dma_controller *dmac)
++{
++ struct dw_dma_channel *chan;
++ unsigned long status, chanid;
++
++ status = dmac_readl_lo(dmac, STATUS_BLOCK);
++
++ while (status) {
++ struct dma_request *req;
++ chanid = __ffs(status);
++ chan = &dmac->channel[chanid];
++
++ if (chan->is_cyclic) {
++ BUG_ON(!chan->req_cyclic
++ || !chan->req_cyclic->req.block_complete);
++ req = &chan->req_cyclic->req;
++ } else {
++ BUG_ON(!chan->req_sg || !chan->req_sg->req.block_complete);
++ req = &chan->req_sg->req;
++ }
++ dmac_writel_lo(dmac, CLEAR_BLOCK, 1 << chanid);
++ req->block_complete(req);
++ status = dmac_readl_lo(dmac, STATUS_BLOCK);
++ }
++}
++
++static void dmac_xfer_complete(struct dw_dma_controller *dmac)
++{
++ struct dw_dma_channel *chan;
++ struct dma_request *req;
++ unsigned long status, chanid;
++
++ status = dmac_readl_lo(dmac, STATUS_XFER);
++
++ while (status) {
++ chanid = __ffs(status);
++ chan = &dmac->channel[chanid];
++
++ dmac_writel_lo(dmac, CLEAR_XFER, 1 << chanid);
++
++ req = &chan->req_sg->req;
++ BUG_ON(!req);
++ cleanup_channel(dmac, chan);
++ if (req->xfer_complete)
++ req->xfer_complete(req);
++
++ status = dmac_readl_lo(dmac, STATUS_XFER);
++ }
++}
++
++static void dmac_error(struct dw_dma_controller *dmac)
++{
++ struct dw_dma_channel *chan;
++ unsigned long status, chanid;
++
++ status = dmac_readl_lo(dmac, STATUS_ERROR);
++
++ while (status) {
++ struct dma_request *req;
++
++ chanid = __ffs(status);
++ chan = &dmac->channel[chanid];
++
++ dmac_writel_lo(dmac, CLEAR_ERROR, 1 << chanid);
++ clear_channel_bit(dmac, CH_EN, chanid);
++
++ if (chan->is_cyclic) {
++ BUG_ON(!chan->req_cyclic);
++ req = &chan->req_cyclic->req;
++ } else {
++ BUG_ON(!chan->req_sg);
++ req = &chan->req_sg->req;
++ }
++
++ cleanup_channel(dmac, chan);
++ if (req->error)
++ req->error(req);
++
++ status = dmac_readl_lo(dmac, STATUS_XFER);
++ }
++}
++
++static irqreturn_t dmac_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct dw_dma_controller *dmac = dev_id;
++ unsigned long status;
++ int ret = IRQ_NONE;
++
++ spin_lock(&dmac->lock);
++
++ status = dmac_readl_lo(dmac, STATUS_INT);
++
++ while (status) {
++ ret = IRQ_HANDLED;
++ if (status & 0x10)
++ dmac_error(dmac);
++ if (status & 0x02)
++ dmac_block_complete(dmac);
++ if (status & 0x01)
++ dmac_xfer_complete(dmac);
++
++ status = dmac_readl_lo(dmac, STATUS_INT);
++ }
++
++ spin_unlock(&dmac->lock);
++ return ret;
++}
++
++static int __devinit dmac_probe(struct platform_device *pdev)
++{
++ struct dw_dma_controller *dmac;
++ struct resource *regs;
++ int ret;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++
++ dmac = kmalloc(sizeof(*dmac), GFP_KERNEL);
++ if (!dmac)
++ return -ENOMEM;
++ memset(dmac, 0, sizeof(*dmac));
++
++ dmac->hclk = clk_get(&pdev->dev, "hclk");
++ if (IS_ERR(dmac->hclk)) {
++ ret = PTR_ERR(dmac->hclk);
++ goto out_free_dmac;
++ }
++ clk_enable(dmac->hclk);
++
++ ret = -ENOMEM;
++ dmac->lli_pool = dma_pool_create("dmac", &pdev->dev,
++ sizeof(struct dw_dma_lli), 4, 0);
++ if (!dmac->lli_pool)
++ goto out_disable_clk;
++
++ spin_lock_init(&dmac->lock);
++ dmac->dma.dev = &pdev->dev;
++ dmac->dma.alloc_channel = dmac_alloc_channel;
++ dmac->dma.release_channel = dmac_release_channel;
++ dmac->dma.prepare_request_sg = dmac_prepare_request_sg;
++ dmac->dma.prepare_request_cyclic = dmac_prepare_request_cyclic;
++ dmac->dma.start_request = dmac_start_request;
++ dmac->dma.stop_request = dmac_stop_request;
++ dmac->dma.get_current_pos = dmac_get_current_pos;
++
++ dmac->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!dmac->regs)
++ goto out_free_pool;
++
++ ret = request_irq(platform_get_irq(pdev, 0), dmac_interrupt,
++ SA_SAMPLE_RANDOM, pdev->name, dmac);
++ if (ret)
++ goto out_unmap_regs;
++
++ /* Enable the DMA controller */
++ dmac_writel_lo(dmac, CFG, 1);
++
++ register_dma_controller(&dmac->dma);
++
++ printk(KERN_INFO
++ "dmac%d: DesignWare DMA controller at 0x%p irq %d\n",
++ dmac->dma.id, dmac->regs, platform_get_irq(pdev, 0));
++
++ return 0;
++
++out_unmap_regs:
++ iounmap(dmac->regs);
++out_free_pool:
++ dma_pool_destroy(dmac->lli_pool);
++out_disable_clk:
++ clk_disable(dmac->hclk);
++ clk_put(dmac->hclk);
++out_free_dmac:
++ kfree(dmac);
++ return ret;
++}
++
++static struct platform_driver dmac_driver = {
++ .probe = dmac_probe,
++ .driver = {
++ .name = "dmac",
++ },
++};
++
++static int __init dmac_init(void)
++{
++ return platform_driver_register(&dmac_driver);
++}
++subsys_initcall(dmac_init);
++
++static void __exit dmac_exit(void)
++{
++ platform_driver_unregister(&dmac_driver);
++}
++module_exit(dmac_exit);
++
++MODULE_DESCRIPTION("Synopsys DesignWare DMA Controller driver");
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.h 2006-11-02 14:17:29.000000000 +0100
+@@ -0,0 +1,42 @@
++/*
++ * Driver for the Synopsys DesignWare DMA Controller
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __AVR32_DW_DMAC_H__
++#define __AVR32_DW_DMAC_H__
++
++#define DW_DMAC_CFG 0x398
++#define DW_DMAC_CH_EN 0x3a0
++
++#define DW_DMAC_STATUS_XFER 0x2e8
++#define DW_DMAC_STATUS_BLOCK 0x2f0
++#define DW_DMAC_STATUS_ERROR 0x308
++
++#define DW_DMAC_MASK_XFER 0x310
++#define DW_DMAC_MASK_BLOCK 0x318
++#define DW_DMAC_MASK_ERROR 0x330
++
++#define DW_DMAC_CLEAR_XFER 0x338
++#define DW_DMAC_CLEAR_BLOCK 0x340
++#define DW_DMAC_CLEAR_ERROR 0x358
++
++#define DW_DMAC_STATUS_INT 0x360
++
++#define DW_DMAC_CHAN_SAR 0x000
++#define DW_DMAC_CHAN_DAR 0x008
++#define DW_DMAC_CHAN_LLP 0x010
++#define DW_DMAC_CHAN_CTL 0x018
++#define DW_DMAC_CHAN_SSTAT 0x020
++#define DW_DMAC_CHAN_DSTAT 0x028
++#define DW_DMAC_CHAN_SSTATAR 0x030
++#define DW_DMAC_CHAN_DSTATAR 0x038
++#define DW_DMAC_CHAN_CFG 0x040
++#define DW_DMAC_CHAN_SGR 0x048
++#define DW_DMAC_CHAN_DSR 0x050
++
++#endif /* __AVR32_DW_DMAC_H__ */
+Index: linux-2.6.18-avr32/arch/avr32/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/Kconfig 2006-11-02 14:17:29.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/Kconfig 2006-11-02 15:53:13.000000000 +0100
+@@ -157,6 +157,10 @@ config OWNERSHIP_TRACE
+ enabling Nexus-compliant debuggers to keep track of the PID of the
+ currently executing task.
+
++config DW_DMAC
++ tristate "Synopsys DesignWare DMA Controller support"
++ default y if CPU_AT32AP7000
++
+ # FPU emulation goes here
+
+ source "kernel/Kconfig.hz"
diff --git a/packages/linux/linux-2.6.18/at32ap7000-platform_device-definitions.patch b/packages/linux/linux-2.6.18/at32ap7000-platform_device-definitions.patch
new file mode 100644
index 0000000000..6f1e98a70c
--- /dev/null
+++ b/packages/linux/linux-2.6.18/at32ap7000-platform_device-definitions.patch
@@ -0,0 +1,445 @@
+---
+ arch/avr32/mach-at32ap/at32ap7000.c | 325 ++++++++++++++++++++++++++++++++--
+ include/asm-avr32/arch-at32ap/board.h | 6
+ 2 files changed, 313 insertions(+), 18 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/at32ap7000.c 2006-11-29 16:31:03.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c 2006-11-29 16:44:49.000000000 +0100
+@@ -9,6 +9,8 @@
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+
++#include <linux/spi/spi.h>
++
+ #include <asm/io.h>
+
+ #include <asm/arch/at32ap7000.h>
+@@ -464,6 +466,17 @@ static struct clk pico_clk = {
+ .users = 1,
+ };
+
++static struct resource dmac0_resource[] = {
++ {
++ .start = 0xff200000,
++ .end = 0xff20ffff,
++ .flags = IORESOURCE_MEM,
++ },
++ IRQ(2),
++};
++DEFINE_DEV(dmac, 0);
++DEV_CLK(hclk, dmac0, hsb, 10);
++
+ /* --------------------------------------------------------------------
+ * PIO
+ * -------------------------------------------------------------------- */
+@@ -504,6 +517,7 @@ void __init at32_add_system_devices(void
+ platform_device_register(&at32_intc0_device);
+ platform_device_register(&smc0_device);
+ platform_device_register(&pdc_device);
++ platform_device_register(&dmac0_device);
+
+ platform_device_register(&pio0_device);
+ platform_device_register(&pio1_device);
+@@ -644,6 +658,15 @@ DEFINE_DEV_DATA(macb, 0);
+ DEV_CLK(hclk, macb0, hsb, 8);
+ DEV_CLK(pclk, macb0, pbb, 6);
+
++static struct eth_platform_data macb1_data;
++static struct resource macb1_resource[] = {
++ PBMEM(0xfff01c00),
++ IRQ(26),
++};
++DEFINE_DEV_DATA(macb, 1);
++DEV_CLK(hclk, macb1, hsb, 9);
++DEV_CLK(pclk, macb1, pbb, 7);
++
+ struct platform_device *__init
+ at32_add_device_eth(unsigned int id, struct eth_platform_data *data)
+ {
+@@ -677,6 +700,33 @@ at32_add_device_eth(unsigned int id, str
+ }
+ break;
+
++ case 1:
++ pdev = &macb1_device;
++
++ select_peripheral(PD(13), PERIPH_B, 0); /* TXD0 */
++ select_peripheral(PD(14), PERIPH_B, 0); /* TXD1 */
++ select_peripheral(PD(11), PERIPH_B, 0); /* TXEN */
++ select_peripheral(PD(12), PERIPH_B, 0); /* TXCK */
++ select_peripheral(PD(10), PERIPH_B, 0); /* RXD0 */
++ select_peripheral(PD(6), PERIPH_B, 0); /* RXD1 */
++ select_peripheral(PD(5), PERIPH_B, 0); /* RXER */
++ select_peripheral(PD(4), PERIPH_B, 0); /* RXDV */
++ select_peripheral(PD(3), PERIPH_B, 0); /* MDC */
++ select_peripheral(PD(2), PERIPH_B, 0); /* MDIO */
++
++ if (!data->is_rmii) {
++ select_peripheral(PC(19), PERIPH_B, 0); /* COL */
++ select_peripheral(PC(23), PERIPH_B, 0); /* CRS */
++ select_peripheral(PC(26), PERIPH_B, 0); /* TXER */
++ select_peripheral(PC(27), PERIPH_B, 0); /* TXD2 */
++ select_peripheral(PC(28), PERIPH_B, 0); /* TXD3 */
++ select_peripheral(PC(29), PERIPH_B, 0); /* RXD2 */
++ select_peripheral(PC(30), PERIPH_B, 0); /* RXD3 */
++ select_peripheral(PC(24), PERIPH_B, 0); /* RXCK */
++ select_peripheral(PD(15), PERIPH_B, 0); /* SPD */
++ }
++ break;
++
+ default:
+ return NULL;
+ }
+@@ -688,14 +738,53 @@ at32_add_device_eth(unsigned int id, str
+ }
+
+ /* --------------------------------------------------------------------
++ * MMC
++ * -------------------------------------------------------------------- */
++static struct resource mmci0_resource[] = {
++ PBMEM(0xfff02400),
++ IRQ(28),
++};
++DEFINE_DEV(mmci, 0);
++DEV_CLK(mck, mmci0, pbb, 9);
++
++struct platform_device *__init at32_add_device_mmci(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &mmci0_device;
++ select_peripheral(PA(10), PERIPH_A, 0); /* CLK */
++ select_peripheral(PA(11), PERIPH_A, 0); /* CMD */
++ select_peripheral(PA(12), PERIPH_A, 0); /* DATA0 */
++ select_peripheral(PA(13), PERIPH_A, 0); /* DATA1 */
++ select_peripheral(PA(14), PERIPH_A, 0); /* DATA2 */
++ select_peripheral(PA(15), PERIPH_A, 0); /* DATA3 */
++ break;
++ default:
++ return NULL;
++ }
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
++/* --------------------------------------------------------------------
+ * SPI
+ * -------------------------------------------------------------------- */
+-static struct resource spi0_resource[] = {
++static struct resource atmel_spi0_resource[] = {
+ PBMEM(0xffe00000),
+ IRQ(3),
+ };
+-DEFINE_DEV(spi, 0);
+-DEV_CLK(mck, spi0, pba, 0);
++DEFINE_DEV(atmel_spi, 0);
++DEV_CLK(pclk, atmel_spi0, pba, 0);
++
++static struct resource atmel_spi1_resource[] = {
++ PBMEM(0xffe00400),
++ IRQ(4),
++};
++DEFINE_DEV(atmel_spi, 1);
++DEV_CLK(pclk, atmel_spi1, pba, 1);
+
+ struct platform_device *__init at32_add_device_spi(unsigned int id)
+ {
+@@ -703,13 +792,96 @@ struct platform_device *__init at32_add_
+
+ switch (id) {
+ case 0:
+- pdev = &spi0_device;
++ pdev = &atmel_spi0_device;
+ select_peripheral(PA(0), PERIPH_A, 0); /* MISO */
+ select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */
+ select_peripheral(PA(2), PERIPH_A, 0); /* SCK */
+- select_peripheral(PA(3), PERIPH_A, 0); /* NPCS0 */
+- select_peripheral(PA(4), PERIPH_A, 0); /* NPCS1 */
+- select_peripheral(PA(5), PERIPH_A, 0); /* NPCS2 */
++
++ /* NPCS[2:0] */
++ at32_select_gpio(GPIO_PIN_PA(3),
++ AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
++ at32_select_gpio(GPIO_PIN_PA(4),
++ AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
++ at32_select_gpio(GPIO_PIN_PA(5),
++ AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
++ break;
++
++ case 1:
++ pdev = &atmel_spi1_device;
++ select_peripheral(PB(0), PERIPH_B, 0); /* MISO */
++ select_peripheral(PB(1), PERIPH_B, 0); /* MOSI */
++ select_peripheral(PB(5), PERIPH_B, 0); /* SCK */
++
++ /* NPCS[2:0] */
++ at32_select_gpio(GPIO_PIN_PA(2),
++ AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
++ at32_select_gpio(GPIO_PIN_PA(3),
++ AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
++ at32_select_gpio(GPIO_PIN_PA(4),
++ AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
++
++ default:
++ return NULL;
++ }
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
++/* --------------------------------------------------------------------
++ * USB Device Controller
++ * -------------------------------------------------------------------- */
++static struct resource usb0_resource[] = {
++ {
++ .start = 0xff300000,
++ .end = 0xff3fffff,
++ .flags = IORESOURCE_MEM,
++ },
++ PBMEM(0xfff03000),
++ IRQ(31),
++};
++DEFINE_DEV(usb, 0);
++DEV_CLK(pclk, usb0, pbb, 12);
++DEV_CLK(hclk, usb0, hsb, 6);
++
++struct platform_device *__init at32_add_device_usb(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &usb0_device;
++ /* USB pads are not multiplexed */
++ break;
++ default:
++ return NULL;
++ }
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
++/* --------------------------------------------------------------------
++ * TWI
++ * -------------------------------------------------------------------- */
++
++static struct resource atmel_twi0_resource[] = {
++ PBMEM(0xffe00800),
++ IRQ(5),
++};
++DEFINE_DEV(atmel_twi, 0);
++DEV_CLK(pclk,atmel_twi0,pba,2);
++
++struct platform_device *__init
++at32_add_device_twi(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &atmel_twi0_device;
++ select_peripheral(PA(6), PERIPH_A, 0); /* SDA */
++ select_peripheral(PA(7), PERIPH_A, 0); /* SCL */
+ break;
+
+ default:
+@@ -765,16 +937,16 @@ at32_add_device_lcdc(unsigned int id, st
+ select_peripheral(PC(29), PERIPH_A, 0); /* DATA3 */
+ select_peripheral(PC(30), PERIPH_A, 0); /* DATA4 */
+ select_peripheral(PC(31), PERIPH_A, 0); /* DATA5 */
+- select_peripheral(PD(0), PERIPH_A, 0); /* DATA6 */
+- select_peripheral(PD(1), PERIPH_A, 0); /* DATA7 */
+- select_peripheral(PD(2), PERIPH_A, 0); /* DATA8 */
+- select_peripheral(PD(3), PERIPH_A, 0); /* DATA9 */
+- select_peripheral(PD(4), PERIPH_A, 0); /* DATA10 */
+- select_peripheral(PD(5), PERIPH_A, 0); /* DATA11 */
+- select_peripheral(PD(6), PERIPH_A, 0); /* DATA12 */
+- select_peripheral(PD(7), PERIPH_A, 0); /* DATA13 */
+- select_peripheral(PD(8), PERIPH_A, 0); /* DATA14 */
+- select_peripheral(PD(9), PERIPH_A, 0); /* DATA15 */
++ select_peripheral(PD(0), PERIPH_A, 0); /* DATA6 */
++ select_peripheral(PD(1), PERIPH_A, 0); /* DATA7 */
++ select_peripheral(PD(2), PERIPH_A, 0); /* DATA8 */
++ select_peripheral(PD(3), PERIPH_A, 0); /* DATA9 */
++ select_peripheral(PD(4), PERIPH_A, 0); /* DATA10 */
++ select_peripheral(PD(5), PERIPH_A, 0); /* DATA11 */
++ select_peripheral(PD(6), PERIPH_A, 0); /* DATA12 */
++ select_peripheral(PD(7), PERIPH_A, 0); /* DATA13 */
++ select_peripheral(PD(8), PERIPH_A, 0); /* DATA14 */
++ select_peripheral(PD(9), PERIPH_A, 0); /* DATA15 */
+ select_peripheral(PD(10), PERIPH_A, 0); /* DATA16 */
+ select_peripheral(PD(11), PERIPH_A, 0); /* DATA17 */
+ select_peripheral(PD(12), PERIPH_A, 0); /* DATA18 */
+@@ -799,6 +971,111 @@ at32_add_device_lcdc(unsigned int id, st
+ return pdev;
+ }
+
++/* --------------------------------------------------------------------
++ * Sound
++ * -------------------------------------------------------------------- */
++static struct resource ac97c0_resource[] = {
++ PBMEM(0xfff02800),
++ IRQ(29),
++};
++DEFINE_DEV(ac97c, 0);
++DEV_CLK(mck, ac97c0, pbb, 10);
++
++struct platform_device *__init
++at32_add_device_ac97c(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &ac97c0_device;
++ select_peripheral(PB(20), PERIPH_B, 0); /* SYNC */
++ select_peripheral(PB(21), PERIPH_B, 0); /* SDO */
++ select_peripheral(PB(22), PERIPH_B, 0); /* SDI */
++ select_peripheral(PB(23), PERIPH_B, 0); /* SCLK */
++ break;
++ default:
++ return NULL;
++ }
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
++static struct spi_board_info at73c2130_data = {
++ .max_speed_hz = 200000,
++ .controller_data = (void *)GPIO_PIN_PA(3),
++ .modalias = "at73c213",
++ .bus_num = 0,
++ .chip_select = 0,
++};
++static struct resource at73c2130_resource[] = {
++ PBMEM(0xffe01c00),
++ IRQ(10),
++};
++DEFINE_DEV_DATA(at73c213, 0);
++DEV_CLK(mck, at73c2130, pba, 7);
++
++struct platform_device *__init
++at32_add_device_at73c213(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &at73c2130_device;
++ select_peripheral(PA(21), PERIPH_A, 0); /* RX_FSYNC */
++ select_peripheral(PA(22), PERIPH_A, 0); /* RX_CLOCK */
++ select_peripheral(PA(23), PERIPH_A, 0); /* TX_CLOCK */
++ select_peripheral(PA(24), PERIPH_A, 0); /* TX_FSYNC */
++ select_peripheral(PA(25), PERIPH_A, 0); /* TX_DATA */
++ select_peripheral(PA(26), PERIPH_A, 0); /* RX_DATA */
++ break;
++ default:
++ return NULL;
++ }
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
++static struct resource dac0_resource[] = {
++ PBMEM(0xfff02000),
++ IRQ(27),
++};
++DEFINE_DEV(dac, 0);
++DEV_CLK(mck, dac0, pbb, 8);
++static struct clk dac0_sample_clk = {
++ .name = "sample_clk",
++ .dev = &dac0_device.dev,
++ .mode = genclk_mode,
++ .get_rate = genclk_get_rate,
++ .set_rate = genclk_set_rate,
++ .set_parent = genclk_set_parent,
++ .index = 6,
++};
++
++struct platform_device *__init
++at32_add_device_dac(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &dac0_device;
++ select_peripheral(PB(20), PERIPH_A, 0); /* DATA1 */
++ select_peripheral(PB(21), PERIPH_A, 0); /* DATA0 */
++ select_peripheral(PB(22), PERIPH_A, 0); /* DATAN1 */
++ select_peripheral(PB(23), PERIPH_A, 0); /* DATAN0 */
++ break;
++ default:
++ return NULL;
++ }
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
+ struct clk *at32_clock_list[] = {
+ &osc32k,
+ &osc0,
+@@ -817,6 +1094,7 @@ struct clk *at32_clock_list[] = {
+ &smc0_mck,
+ &pdc_hclk,
+ &pdc_pclk,
++ &dmac0_hclk,
+ &pico_clk,
+ &pio0_mck,
+ &pio1_mck,
+@@ -828,9 +1106,20 @@ struct clk *at32_clock_list[] = {
+ &usart3_usart,
+ &macb0_hclk,
+ &macb0_pclk,
+- &spi0_mck,
++ &macb1_hclk,
++ &macb1_pclk,
++ &atmel_spi0_pclk,
++ &atmel_spi1_pclk,
++ &atmel_twi0_pclk,
++ &mmci0_mck,
++ &usb0_pclk,
++ &usb0_hclk,
+ &lcdc0_hclk,
+ &lcdc0_pixclk,
++ &ac97c0_mck,
++ &at73c2130_mck,
++ &dac0_mck,
++ &dac0_sample_clk,
+ };
+ unsigned int at32_nr_clocks = ARRAY_SIZE(at32_clock_list);
+
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/arch-at32ap/board.h 2006-11-29 16:31:03.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h 2006-11-29 16:31:42.000000000 +0100
+@@ -24,13 +24,19 @@ struct eth_platform_data {
+ struct platform_device *
+ at32_add_device_eth(unsigned int id, struct eth_platform_data *data);
+
++struct platform_device *at32_add_device_mmci(unsigned int id);
+ struct platform_device *at32_add_device_spi(unsigned int id);
++struct platform_device *at32_add_device_twi(unsigned int id);
+
+ struct lcdc_platform_data {
+ unsigned long fbmem_start;
+ unsigned long fbmem_size;
+ };
++struct platform_device *__init at32_add_device_usb(unsigned int id);
+ struct platform_device *
+ at32_add_device_lcdc(unsigned int id, struct lcdc_platform_data *data);
++struct platform_device *__init at32_add_device_dac(unsigned int id);
++struct platform_device *__init at32_add_device_at73c213(unsigned int id);
++struct platform_device *__init at32_add_device_ac97c(unsigned int id);
+
+ #endif /* __ASM_ARCH_BOARD_H */
diff --git a/packages/glibc/eglibc-svn/.mtn2git_empty b/packages/linux/linux-2.6.18/at32stk1000/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/glibc/eglibc-svn/.mtn2git_empty
+++ b/packages/linux/linux-2.6.18/at32stk1000/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.18/at32stk1000/defconfig b/packages/linux/linux-2.6.18/at32stk1000/defconfig
new file mode 100644
index 0000000000..b4aced9f16
--- /dev/null
+++ b/packages/linux/linux-2.6.18/at32stk1000/defconfig
@@ -0,0 +1,990 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18-at0
+# Thu Jan 11 15:37:42 2007
+#
+CONFIG_AVR32=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=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
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# System Type and features
+#
+CONFIG_SUBARCH_AVR32B=y
+CONFIG_MMU=y
+CONFIG_PERFORMANCE_COUNTERS=y
+CONFIG_PLATFORM_AT32AP=y
+CONFIG_CPU_AT32AP7000=y
+CONFIG_BOARD_ATSTK1002=y
+CONFIG_BOARD_ATSTK1000=y
+# CONFIG_BOARD_ATNGW is not set
+CONFIG_LOADER_U_BOOT=y
+
+#
+# Atmel AVR32 AP options
+#
+CONFIG_PIO_DEV=y
+CONFIG_LOAD_ADDRESS=0x10000000
+CONFIG_ENTRY_ADDRESS=0x90000000
+CONFIG_PHYS_OFFSET=0x10000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
+# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
+# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_OWNERSHIP_TRACE is not set
+CONFIG_DW_DMAC=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_CMDLINE=""
+
+#
+# Bus options
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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
+
+#
+# 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_DATAFLASH=m
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_MACB=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPP_MPPE is not set
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ATMELTWI=m
+CONFIG_I2C_ATMELTWI_BAUDRATE=100000
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=m
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+CONFIG_FB_SIDSA=y
+CONFIG_FB_SIDSA_DEFAULT_BPP=24
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_LCD_LTV350QV=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_AC97_BUS=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA AVR32 devices
+#
+CONFIG_SND_ATMEL_AC97=m
+# CONFIG_SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS is not set
+# CONFIG_SND_ATMEL_AC97C_USE_PDC is not set
+CONFIG_SND_AT73C213=m
+# CONFIG_SND_AT73C213_USE_ALSA_MALLOC_CALLS is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=m
+# CONFIG_OSS_OBSOLETE_DRIVER is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+CONFIG_SOUND_AT32_DAC=m
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+CONFIG_USB_GADGET_HUSB2DEV=y
+CONFIG_USB_HUSB2DEV=m
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_ATMELMCI=y
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=y
+
+#
+# Miscellaneous filesystems
+#
+# 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_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# 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_RWSEMS 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_KPROBES is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-2.6.18/at73c213-alsa-driver.patch b/packages/linux/linux-2.6.18/at73c213-alsa-driver.patch
new file mode 100644
index 0000000000..ceb12cc950
--- /dev/null
+++ b/packages/linux/linux-2.6.18/at73c213-alsa-driver.patch
@@ -0,0 +1,1485 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
+Date: Fri Apr 28 15:30:44 2006 +0200
+Subject: [PATCH] at73c213 ALSA driver
+
+This driver uses the SSC and SPI modules to communicate with an at73c213
+sound chip on the AT32STK1000.
+
+---
+
+ sound/avr32/Kconfig | 20
+ sound/avr32/Makefile | 3
+ sound/avr32/at73c213.c | 1296 +++++++++++++++++++++++++++++++++++++++++++++++++
+ sound/avr32/at73c213.h | 120 ++++
+ 4 files changed, 1439 insertions(+)
+ create mode 100644 sound/avr32/at73c213.c
+ create mode 100644 sound/avr32/at73c213.h
+
+859730d5cbe00b7935c4e30d179c5c5b096deb3c
+Index: linux-2.6.18-avr32/sound/avr32/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/avr32/Kconfig 2006-11-02 15:56:20.000000000 +0100
++++ linux-2.6.18-avr32/sound/avr32/Kconfig 2006-11-02 15:56:20.000000000 +0100
+@@ -28,4 +28,24 @@ config SND_ATMEL_AC97C_USE_PDC
+ Say Y if PDC (Peripheral DMA Controller) is used for DMA transfers
+ to/from the Atmel AC97C instead of using the generic DMA framework.
+
++config SND_AT73C213
++ tristate "Atmel AT73C213 DAC driver"
++ depends on SND && SPI_ATMEL
++ select SND_PCM
++ help
++ Say Y here if you want to use the Atmel AT73C213 external
++ DAC on the ATSTK1000 development board.
++
++ To compile this driver as a module, choose M here: the
++ module will be called snd-at73c213.
++
++config SND_AT73C213_USE_ALSA_MALLOC_CALLS
++ bool "Use the built-in malloc calls in the alsa driver"
++ default n
++ depends on SND_AT73C213
++ help
++ Say Y if the built-in malloc calls in the alsa driver should be
++ used instead of the native dma_alloc_coherent and dma_free_coherent
++ function calls. Enabling this feature may brake the rmmod feature.
++
+ endmenu
+Index: linux-2.6.18-avr32/sound/avr32/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/avr32/Makefile 2006-11-02 15:56:20.000000000 +0100
++++ linux-2.6.18-avr32/sound/avr32/Makefile 2006-11-02 15:56:20.000000000 +0100
+@@ -4,3 +4,6 @@
+
+ snd-atmel-ac97-objs := ac97c.o
+ obj-$(CONFIG_SND_ATMEL_AC97) += snd-atmel-ac97.o
++
++snd-at73c213-objs := at73c213.o
++obj-$(CONFIG_SND_AT73C213) += snd-at73c213.o
+Index: linux-2.6.18-avr32/sound/avr32/at73c213.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/avr32/at73c213.c 2006-11-02 16:01:55.000000000 +0100
+@@ -0,0 +1,1296 @@
++/*
++ * Driver for the at73c213 16-bit stereo DAC on Atmel ATSTK1000
++ *
++ * Copyright (C) 2006 Atmel Norway
++ *
++ * 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.
++ *
++ * The full GNU General Public License is included in this
++ * distribution in the file called COPYING.
++ */
++#undef DEBUG
++#include <linux/clk.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/kmod.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <sound/initval.h>
++#include <sound/driver.h>
++#include <sound/control.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#ifndef SND_AT73C213_USE_ALSA_MALLOC_CALLS
++#include <sound/memalloc.h>
++#endif
++
++#include <linux/spi/spi.h>
++
++#include <asm/io.h>
++#include <asm/processor.h>
++
++#include "at73c213.h"
++
++/* module parameters */
++static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
++static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
++static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
++
++/* Register defines */
++#define PIOA_BASE 0xFFE02800
++#define SSC0_BASE 0xFFE01C00
++#define PM_BASE 0xFFF00000
++
++#define PM_CKSEL 0x04
++#define PM_APBAMASK 0x10
++#define PM_GCCTRL 0x60
++
++#define PIO_PER 0x00
++#define PIO_PDR 0x04
++#define PIO_PUER 0x64
++#define PIO_ASR 0x70
++#define PIO_BSR 0x74
++
++#define SSC_CMR 0x04
++#define SSC_CR 0x00
++#define SSC_TCMR 0x18
++#define SSC_TFMR 0x1C
++
++/* SSC register definitions */
++#define SSC_CR 0x00
++#define SSC_CMR 0x04
++#define SSC_TCMR 0x18
++#define SSC_TFMR 0x1C
++#define SSC_THR 0x24
++#define SSC_SR 0x40
++#define SSC_IER 0x44
++#define SSC_IDR 0x48
++#define SSC_IMR 0x4C
++
++/* SSC fields definitions */
++#define SSC_CR_TXEN 0x00000100
++#define SSC_CR_TXDIS 0x00000200
++#define SSC_CR_SWRST 0x00008000
++
++/* SSC interrupt definitions */
++#define SSC0_IRQ 10
++#define SSC_INT_ENDTX 0x00000004
++#define SSC_INT_TXBUFE 0x00000008
++
++/* PDC register definitions */
++#define PDC_RPR 0x100
++#define PDC_RCR 0x104
++#define PDC_TPR 0x108
++#define PDC_TCR 0x10c
++#define PDC_RNPR 0x110
++#define PDC_RNCR 0x114
++#define PDC_TNPR 0x118
++#define PDC_TNCR 0x11c
++#define PDC_PTCR 0x120
++#define PDC_PTSR 0x124
++
++/* PDC fields definitions */
++#define PDC_PTCR_RXTEN 0x0001
++#define PDC_PTCR_RXTDIS 0x0002
++#define PDC_PTCR_TXTEN 0x0100
++#define PDC_PTCR_TXTDIS 0x0200
++
++static int bitrate;
++static int gclk_div;
++static int ssc_div;
++static int spi = 0;
++static int ssc = 1;
++
++module_param(spi, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
++MODULE_PARM_DESC(spi, "Which SPI interface to use to communicate with the at73c213");
++module_param(ssc, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
++MODULE_PARM_DESC(ssc, "Which SSC interface to use to communicate with the at73c213");
++
++/* Initial AT73C213 register values */
++static unsigned char snd_at73c213_original_image[18] =
++{
++ 0x00, /* 00 - CTRL */
++ 0x05, /* 01 - LLIG */
++ 0x05, /* 02 - RLIG */
++ 0x08, /* 03 - LPMG */
++ 0x08, /* 04 - RPMG */
++ 0x00, /* 05 - LLOG */
++ 0x00, /* 06 - RLOG */
++ 0x22, /* 07 - OLC */
++ 0x09, /* 08 - MC */
++ 0x00, /* 09 - CSFC */
++ 0x00, /* 0A - MISC */
++ 0x00, /* 0B - */
++ 0x00, /* 0C - PRECH */
++ 0x05, /* 0D - AUXG */
++ 0x00, /* 0E - */
++ 0x00, /* 0F - */
++ 0x00, /* 10 - RST */
++ 0x00, /* 11 - PA_CTRL */
++};
++
++/* chip-specific data */
++struct snd_at73c213 {
++ snd_card_t *card;
++ snd_pcm_t *pcm;
++ snd_pcm_substream_t *substream;
++ int irq;
++ int period;
++ void __iomem *regs;
++ struct clk *ssc_clk;
++ struct spi_device *spi;
++ u8 spi_wbuffer[2];
++ u8 spi_rbuffer[2];
++ /* image of the SPI registers in AT73C213 */
++ u8 image[18];
++ spinlock_t lock;
++ struct platform_device *pdev;
++};
++
++#define get_chip(card) ((struct snd_at73c213 *)card->private_data)
++
++static int
++snd_at73c213_write_reg(struct snd_at73c213 *chip, u8 reg, u8 val)
++{
++ struct spi_message msg;
++ struct spi_transfer msg_xfer = {
++ .len = 2,
++ .cs_change = 0,
++ };
++
++ spi_message_init(&msg);
++
++ chip->spi_wbuffer[0] = reg;
++ chip->spi_wbuffer[1] = val;
++
++ msg_xfer.tx_buf = chip->spi_wbuffer;
++ msg_xfer.rx_buf = chip->spi_rbuffer;
++ spi_message_add_tail(&msg_xfer, &msg);
++
++ return spi_sync(chip->spi, &msg);
++}
++
++#define write_reg(_spi, reg, val) \
++ do { \
++ retval = snd_at73c213_write_reg(_spi, reg, val); \
++ if (retval) \
++ goto out; \
++ } while (0)
++
++static snd_pcm_hardware_t snd_at73c213_playback_hw = {
++ .info = SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_BLOCK_TRANSFER,
++ .formats = SNDRV_PCM_FMTBIT_S16_BE,
++ .rates = SNDRV_PCM_RATE_CONTINUOUS,
++ .rate_min = 8000, /* This will be overwritten with bitrate */
++ .rate_max = 50000, /* This will be overwritten with bitrate */
++ .channels_min = 2,
++ .channels_max = 2,
++ .buffer_bytes_max = 64 * 1024 - 1,
++ .period_bytes_min = 512,
++ .period_bytes_max = 64 * 1024 - 1,
++ .periods_min = 4,
++ .periods_max = 1024,
++};
++
++/* calculate and set bitrate and divisions */
++static int snd_at73c213_set_bitrate_and_div(void)
++{
++ extern struct avr32_cpuinfo boot_cpu_data;
++ unsigned long pll0_hz, apba_hz;
++ unsigned long apba_realdiv, gclk_realdiv, ssc_realdiv, wanted_bitrate;
++ char cpusel, ahbsel, apbasel;
++ int regval;
++
++ regval = __raw_readl((void __iomem *)PM_BASE + PM_CKSEL);
++ wanted_bitrate = 48000;
++
++ cpusel = regval & 0x07;
++ ahbsel = (regval>>8) & 0x07;
++ apbasel = (regval>>16) & 0x07;
++
++ /* FIXME: Use the clk framework for this */
++ if ((regval&(1<<7)) != 0) {
++ pll0_hz = clk_get_rate(boot_cpu_data.clk)/(1<<(cpusel+1));
++ } else {
++ pll0_hz = clk_get_rate(boot_cpu_data.clk);
++ }
++
++ if ((regval&(1<<23)) != 0) {
++ apba_hz = pll0_hz/(1<<(apbasel+1));
++ apba_realdiv = (1<<(apbasel+1));
++ } else {
++ apba_hz = pll0_hz;
++ apba_realdiv = 1;
++ }
++
++calculate:
++ /* Adjust bitrate as close as possible to 48000 Hz */
++ gclk_realdiv = pll0_hz/(wanted_bitrate*256);
++ ssc_realdiv = 2 * apba_realdiv * gclk_realdiv;
++
++ if ((gclk_realdiv % 2) == 0)
++ goto setbitrates;
++
++ if(wanted_bitrate >= 22050 && wanted_bitrate <= 48000)
++ wanted_bitrate -= 50;
++ else if (wanted_bitrate < 22050)
++ wanted_bitrate = 48050;
++ else if (wanted_bitrate <= 50000)
++ wanted_bitrate += 50;
++ else {
++ printk(KERN_ERR "at73c213 could not set dividers for a valid bitrate\n");
++ return -EINVAL;
++ }
++
++ goto calculate;
++
++setbitrates:
++ bitrate = pll0_hz/(gclk_realdiv*256);
++ gclk_div = (gclk_realdiv/2)-1;
++ ssc_realdiv = 2*apba_realdiv*gclk_realdiv;
++ ssc_div = ssc_realdiv/(2*apba_realdiv);
++
++ printk(KERN_INFO "at73c213: bitrate is %d Hz\n", bitrate);
++
++ return 0;
++}
++
++/* open callback */
++static int snd_at73c213_pcm_open(snd_pcm_substream_t *substream)
++{
++ struct snd_at73c213 *chip = snd_pcm_substream_chip(substream);
++ snd_pcm_runtime_t *runtime = substream->runtime;
++
++ snd_at73c213_playback_hw.rate_min = bitrate;
++ snd_at73c213_playback_hw.rate_max = bitrate;
++ runtime->hw = snd_at73c213_playback_hw;
++ chip->substream = substream;
++
++ return 0;
++}
++
++/* close callback */
++static int snd_at73c213_pcm_close(snd_pcm_substream_t *substream)
++{
++ struct snd_at73c213 *chip = snd_pcm_substream_chip(substream);
++ chip->substream = NULL;
++ return 0;
++}
++
++/* hw_params callback */
++static int snd_at73c213_pcm_hw_params(snd_pcm_substream_t *substream,
++ snd_pcm_hw_params_t *hw_params)
++{
++#ifdef SND_AT73C213_USE_ALSA_MALLOC_CALLS
++ return snd_pcm_lib_malloc_pages(substream,
++ params_buffer_bytes(hw_params));
++#else
++ int pg;
++ size_t size = params_buffer_bytes(hw_params);
++ struct snd_pcm_runtime *runtime;
++ struct snd_dma_buffer *dmab = NULL;
++
++ substream->dma_buffer.dev.type = SNDRV_DMA_TYPE_DEV;
++ snd_assert(substream != NULL, return -EINVAL);
++ runtime = substream->runtime;
++ snd_assert(runtime != NULL, return -EINVAL);
++
++ /* check if buffer is already allocated */
++ if (runtime->dma_buffer_p) {
++ size_t size_previouse;
++ int pg_previouse;
++
++ /* new buffer is smaler than previouse allocated buffer */
++ if (runtime->dma_buffer_p->bytes >= size) {
++ runtime->dma_bytes = size;
++ return 0; /* don't change buffer size */
++ }
++
++ size_previouse = runtime->dma_buffer_p->bytes;
++ pg_previouse = get_order(size_previouse);
++
++ dma_free_coherent(runtime->dma_buffer_p->dev.dev,
++ PAGE_SIZE << pg_previouse,
++ runtime->dma_buffer_p->area,
++ runtime->dma_buffer_p->addr);
++
++ kfree(runtime->dma_buffer_p);
++ }
++
++ dmab = kzalloc(sizeof(*dmab), GFP_KERNEL);
++ if (!dmab)
++ return -ENOMEM;
++
++ dmab->dev = substream->dma_buffer.dev;
++ dmab->bytes = 0;
++
++ pg = get_order(size);
++
++ dmab->area = dma_alloc_coherent(
++ substream->dma_buffer.dev.dev,
++ PAGE_SIZE << pg,
++ (dma_addr_t *)&dmab->addr,
++ GFP_KERNEL);
++
++ if (!dmab->area) {
++ kfree(dmab);
++ return -ENOMEM;
++ }
++
++ dmab->bytes = size;
++ snd_pcm_set_runtime_buffer(substream, dmab);
++ runtime->dma_bytes = size;
++ return 1;
++#endif
++}
++
++/* hw_free callback */
++static int snd_at73c213_pcm_hw_free(snd_pcm_substream_t *substream)
++{
++#ifdef SND_AT73C213_USE_ALSA_MALLOC_CALLS
++ return snd_pcm_lib_free_pages(substream);
++#else
++ int pg;
++ struct snd_pcm_runtime *runtime;
++ struct snd_dma_buffer *dmab = NULL;
++
++ snd_assert(substream != NULL, return -EINVAL);
++ runtime = substream->runtime;
++ snd_assert(runtime != NULL, return -EINVAL);
++ dmab = runtime->dma_buffer_p;
++
++ if (!dmab)
++ return 0;
++
++ if (!dmab->area)
++ return 0;
++
++ pg = get_order(dmab->bytes);
++ dma_free_coherent(dmab->dev.dev, PAGE_SIZE << pg, dmab->area, dmab->addr);
++ kfree(runtime->dma_buffer_p);
++ snd_pcm_set_runtime_buffer(substream, NULL);
++ return 0;
++#endif
++}
++
++/* prepare callback */
++static int snd_at73c213_pcm_prepare(snd_pcm_substream_t *substream)
++{
++ struct snd_at73c213 *chip = snd_pcm_substream_chip(substream);
++ struct platform_device *pdev = chip->pdev;
++ snd_pcm_runtime_t *runtime = substream->runtime;
++ int block_size;
++
++ block_size = frames_to_bytes(runtime, runtime->period_size);
++
++ chip->period = 0;
++
++ /* Make sure that our data are actually readable by the SSC */
++ dma_sync_single_for_device(&pdev->dev, runtime->dma_addr,
++ block_size, DMA_TO_DEVICE);
++ dma_sync_single_for_device(&pdev->dev, runtime->dma_addr + block_size,
++ block_size, DMA_TO_DEVICE);
++
++ __raw_writel(runtime->dma_addr, chip->regs + PDC_TPR);
++ __raw_writel(runtime->period_size * 2, chip->regs + PDC_TCR);
++ __raw_writel(runtime->dma_addr + block_size, chip->regs + PDC_TNPR);
++ __raw_writel(runtime->period_size * 2, chip->regs + PDC_TNCR);
++
++ return 0;
++}
++
++/* trigger callback */
++static int snd_at73c213_pcm_trigger(snd_pcm_substream_t *substream,
++ int cmd)
++{
++ struct snd_at73c213 *chip = snd_pcm_substream_chip(substream);
++ int retval = 0;
++ int flags = 0;
++
++ spin_lock_irqsave(&chip->lock, flags);
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ __raw_writel(SSC_INT_ENDTX, chip->regs + SSC_IER);
++ __raw_writel(PDC_PTCR_TXTEN, chip->regs + PDC_PTCR);
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ __raw_writel(PDC_PTCR_TXTDIS, chip->regs + PDC_PTCR);
++ __raw_writel(SSC_INT_ENDTX, chip->regs + SSC_IDR);
++ break;
++ default:
++ printk(KERN_WARNING "at73c213: spuriouse command %x\n", cmd);
++ retval = -EINVAL;
++ break;
++ }
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++
++ return retval;
++}
++
++/* pointer callback */
++static snd_pcm_uframes_t snd_at73c213_pcm_pointer(snd_pcm_substream_t *substream)
++{
++ struct snd_at73c213 *chip = snd_pcm_substream_chip(substream);
++ snd_pcm_runtime_t *runtime = substream->runtime;
++ snd_pcm_uframes_t pos;
++ unsigned long bytes;
++
++ bytes = __raw_readl(chip->regs + PDC_TPR) - runtime->dma_addr;
++
++ pos = bytes_to_frames(runtime, bytes);
++ if (pos >= runtime->buffer_size)
++ pos -= runtime->buffer_size;
++
++ return pos;
++}
++
++/* operators */
++static snd_pcm_ops_t at73c213_playback_ops = {
++ .open = snd_at73c213_pcm_open,
++ .close = snd_at73c213_pcm_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = snd_at73c213_pcm_hw_params,
++ .hw_free = snd_at73c213_pcm_hw_free,
++ .prepare = snd_at73c213_pcm_prepare,
++ .trigger = snd_at73c213_pcm_trigger,
++ .pointer = snd_at73c213_pcm_pointer,
++};
++
++/* free a pcm device */
++static void snd_at73c213_pcm_free(snd_pcm_t *pcm)
++{
++ struct snd_at73c213 *chip = snd_pcm_chip(pcm);
++ if (chip->pcm != 0 ) {
++#ifdef SND_AT73C213_USE_ALSA_MALLOC_CALLS
++ snd_pcm_lib_preallocate_free_for_all(chip->pcm);
++#endif
++ chip->pcm = NULL;
++ }
++}
++
++/* create a new pcm device */
++static int __devinit snd_at73c213_new_pcm(struct snd_at73c213 *chip, int device)
++{
++ snd_pcm_t *pcm;
++ int retval;
++
++ retval = snd_pcm_new(chip->card, chip->card->shortname, device, 1, 0, &pcm);
++ if (retval < 0)
++ return retval;
++
++ pcm->private_data = chip;
++ pcm->private_free = snd_at73c213_pcm_free;
++ pcm->info_flags = SNDRV_PCM_INFO_BLOCK_TRANSFER;
++ strcpy(pcm->name, "at73c213");
++ chip->pcm = pcm;
++
++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &at73c213_playback_ops);
++
++#ifdef SND_AT73C213_USE_ALSA_MALLOC_CALLS
++ snd_pcm_lib_preallocate_pages_for_all(chip->pcm, SNDRV_DMA_TYPE_DEV,
++ &chip->pdev->dev, 64 * 1024, 64 * 1024);
++#endif
++
++ return 0;
++}
++
++static irqreturn_t snd_at73c213_interrupt(int irq, void *dev_id,
++ struct pt_regs *regs)
++{
++ struct snd_at73c213 *chip = dev_id;
++ struct platform_device *pdev = chip->pdev;
++ snd_pcm_runtime_t *runtime = chip->substream->runtime;
++ u32 status;
++ int offset, next_period, block_size;
++
++ spin_lock(&chip->lock);
++
++ block_size = frames_to_bytes(runtime, runtime->period_size);
++
++ status = __raw_readl(chip->regs + SSC_IMR);
++
++ if (status & SSC_INT_ENDTX) {
++ chip->period++;
++ if (chip->period == runtime->periods)
++ chip->period = 0;
++ next_period = chip->period + 1;
++ if (next_period == runtime->periods)
++ next_period = 0;
++
++ offset = block_size * next_period;
++
++ /* Make sure that our data are actually readable by the SSC */
++ dma_sync_single_for_device(&pdev->dev, runtime->dma_addr + offset,
++ block_size, DMA_TO_DEVICE);
++ __raw_writel(runtime->dma_addr + offset, chip->regs + PDC_TNPR);
++ __raw_writel(runtime->period_size * 2, chip->regs + PDC_TNCR);
++
++ if (next_period == 0) {
++ (void)__raw_readl(chip->regs + PDC_TPR);
++ (void)__raw_readl(chip->regs + PDC_TCR);
++ }
++ } else {
++ printk(KERN_WARNING
++ "Spurious SSC interrupt, status = 0x%08lx\n",
++ (unsigned long)status);
++ __raw_writel(status, chip->regs + SSC_IDR);
++ }
++
++ (void)__raw_readl(chip->regs + SSC_IMR);
++ spin_unlock(&chip->lock);
++
++ if (status & SSC_INT_ENDTX)
++ snd_pcm_period_elapsed(chip->substream);
++
++ return IRQ_HANDLED;
++}
++
++/*
++ * Mixer functions
++ */
++#if 0 /* Function not in use */
++static int snd_at73c213_mono_info(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ unsigned long mask = (kcontrol->private_value >> 16) & 0xff;
++
++ uinfo->type = (mask == 1) ?
++ SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = 1;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = mask;
++
++ return 0;
++}
++#endif
++
++static int snd_at73c213_mono_get(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_at73c213 *chip = snd_kcontrol_chip(kcontrol);
++ unsigned long flags;
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0xff;
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0xff;
++
++ spin_lock_irqsave(&chip->lock, flags);
++
++ ucontrol->value.integer.value[0] = (chip->image[reg] >> shift) & mask;
++
++ if (invert)
++ ucontrol->value.integer.value[0] =
++ (mask - ucontrol->value.integer.value[0]);
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++
++ return 0;
++}
++
++static int snd_at73c213_mono_put(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_at73c213 *chip = snd_kcontrol_chip(kcontrol);
++ unsigned long flags;
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0xff;
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0xff;
++ int change, retval;
++ unsigned short val;
++
++ val = (ucontrol->value.integer.value[0] & mask);
++ if (invert)
++ val = mask - val;
++ val <<= shift;
++
++ spin_lock_irqsave(&chip->lock, flags);
++
++ val = (chip->image[reg] & ~(mask << shift)) | val;
++ change = val != chip->image[reg];
++ write_reg(chip, reg, val);
++
++ chip->image[reg] = val;
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++
++ return change;
++
++out:
++ return retval;
++}
++
++static int snd_at73c213_stereo_info(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ int mask = (kcontrol->private_value >> 24) & 0xFF;
++
++ uinfo->type = mask == 1 ?
++ SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = 2;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = mask;
++
++ return 0;
++}
++
++static int snd_at73c213_stereo_get(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_at73c213 *chip = snd_kcontrol_chip(kcontrol);
++ unsigned long flags;
++ int left_reg = kcontrol->private_value & 0xff;
++ int right_reg = (kcontrol->private_value >> 8) & 0xff;
++ int shift_left = (kcontrol->private_value >> 16) & 0x07;
++ int shift_right = (kcontrol->private_value >> 19) & 0x07;
++ int mask = (kcontrol->private_value >> 24) & 0xff;
++ int invert = (kcontrol->private_value >> 22) & 1;
++
++ spin_lock_irqsave(&chip->lock, flags);
++
++ ucontrol->value.integer.value[0] =
++ (chip->image[left_reg] >> shift_left) & mask;
++ ucontrol->value.integer.value[1] =
++ (chip->image[right_reg] >> shift_right) & mask;
++
++ if (invert) {
++ ucontrol->value.integer.value[0] =
++ (mask - ucontrol->value.integer.value[0]);
++ ucontrol->value.integer.value[1] =
++ (mask - ucontrol->value.integer.value[1]);
++ }
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++
++ return 0;
++}
++
++static int snd_at73c213_stereo_put(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_at73c213 *chip = snd_kcontrol_chip(kcontrol);
++ unsigned long flags;
++ int left_reg = kcontrol->private_value & 0xff;
++ int right_reg = (kcontrol->private_value >> 8) & 0xff;
++ int shift_left = (kcontrol->private_value >> 16) & 0x07;
++ int shift_right = (kcontrol->private_value >> 19) & 0x07;
++ int mask = (kcontrol->private_value >> 24) & 0xff;
++ int invert = (kcontrol->private_value >> 22) & 1;
++ int change, retval;
++ unsigned short val1, val2;
++
++ val1 = ucontrol->value.integer.value[0] & mask;
++ val2 = ucontrol->value.integer.value[1] & mask;
++ if (invert) {
++ val1 = mask - val1;
++ val2 = mask - val2;
++ }
++ val1 <<= shift_left;
++ val2 <<= shift_right;
++
++ spin_lock_irqsave(&chip->lock, flags);
++
++ val1 = (chip->image[left_reg] & ~(mask << shift_left)) | val1;
++ val2 = (chip->image[right_reg] & ~(mask << shift_right)) | val2;
++ change = val1 != chip->image[left_reg] || val2 != chip->image[right_reg];
++ write_reg(chip, left_reg, val1);
++ write_reg(chip, right_reg, val2);
++
++ chip->image[left_reg] = val1;
++ chip->image[right_reg] = val2;
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++
++ return change;
++
++out:
++ return retval;
++}
++
++static int snd_at73c213_mono_switch_info(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
++ uinfo->count = 1;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = 1;
++
++ return 0;
++}
++
++static int snd_at73c213_mono_switch_get(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_at73c213 *chip = snd_kcontrol_chip(kcontrol);
++ unsigned long flags;
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0xff;
++
++ spin_lock_irqsave(&chip->lock, flags);
++
++ ucontrol->value.integer.value[0] = (chip->image[reg] >> shift) & 0x01;
++
++ if (invert)
++ ucontrol->value.integer.value[0] =
++ (0x01 - ucontrol->value.integer.value[0]);
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++
++ return 0;
++}
++
++static int snd_at73c213_mono_switch_put(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_value *ucontrol)
++{
++ struct snd_at73c213 *chip = snd_kcontrol_chip(kcontrol);
++ unsigned long flags;
++ int reg = kcontrol->private_value & 0xff;
++ int shift = (kcontrol->private_value >> 8) & 0xff;
++ int mask = (kcontrol->private_value >> 16) & 0xff;
++ int invert = (kcontrol->private_value >> 24) & 0xff;
++ int change, retval;
++ unsigned short val;
++
++ if (ucontrol->value.integer.value[0])
++ val = mask;
++ else
++ val = 0;
++
++ if (invert)
++ val = mask - val;
++ val <<= shift;
++
++ spin_lock_irqsave(&chip->lock, flags);
++
++ val |= (chip->image[reg] & ~(mask << shift));
++ change = val != chip->image[reg];
++
++ write_reg(chip, reg, val);
++
++ chip->image[reg] = val;
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++
++ return change;
++
++out:
++ return retval;
++}
++
++static int snd_at73c213_pa_volume_info(struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = 1;
++ uinfo->value.integer.min = 0;
++ uinfo->value.integer.max = ((kcontrol->private_value >> 16) & 0xFF) - 1;
++
++ return 0;
++}
++
++static int snd_at73c213_line_capture_volume_info(
++ struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = 2;
++ uinfo->value.integer.min = 14;
++ uinfo->value.integer.max = 31;
++
++ return 0;
++}
++
++static int snd_at73c213_aux_capture_volume_info(
++ struct snd_kcontrol *kcontrol,
++ struct snd_ctl_elem_info *uinfo)
++{
++ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
++ uinfo->count = 1;
++ uinfo->value.integer.min = 14;
++ uinfo->value.integer.max = 31;
++
++ return 0;
++}
++
++#define AT73C213_MONO(xname, xindex, reg, shift, mask, invert) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xindex, \
++ .info = snd_at73c213_mono_info, \
++ .get = snd_at73c213_mono_get, .put = snd_at73c213_mono_put, \
++ .private_value = reg | (shift << 8) | (mask << 16) | (invert << 24) }
++
++#define AT73C213_MONO_SWITCH(xname, xindex, reg, shift, mask, invert) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xindex, \
++ .info = snd_at73c213_mono_switch_info, \
++ .get = snd_at73c213_mono_switch_get, .put = snd_at73c213_mono_switch_put, \
++ .private_value = reg | (shift << 8) | (mask << 16) | (invert << 24) }
++
++#define AT73C213_STEREO(xname, xindex, left_reg, right_reg, shift_left, shift_right, mask, invert) \
++{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = xindex, \
++ .info = snd_at73c213_stereo_info, \
++ .get = snd_at73c213_stereo_get, .put = snd_at73c213_stereo_put, \
++ .private_value = left_reg | (right_reg << 8) | (shift_left << 16) | (shift_right << 19) | (mask << 24) | (invert << 22) }
++
++static struct snd_kcontrol_new snd_at73c213_controls[] __devinitdata = {
++AT73C213_STEREO("Master Playback Volume", 0, DAC_LMPG, DAC_RMPG, 0, 0, 0x1F, 1),
++AT73C213_STEREO("Master Playback Switch", 0, DAC_LMPG, DAC_RMPG, 5, 5, 1, 1),
++AT73C213_STEREO("PCM Playback Volume", 0, DAC_LLOG, DAC_RLOG, 0, 0, 0x1F, 1),
++AT73C213_STEREO("PCM Playback Switch", 0, DAC_LLOG, DAC_RLOG, 5, 5, 1, 1),
++AT73C213_MONO_SWITCH("Mono PA Playback Switch", 0, DAC_CTRL, DAC_CTRL_ONPADRV, 0x01, 0),
++{
++ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
++ .name = "PA Playback Volume",
++ .index = 0,
++ .info = snd_at73c213_pa_volume_info,
++ .get = snd_at73c213_mono_get,
++ .put = snd_at73c213_mono_put,
++ .private_value = PA_CTRL|(PA_CTRL_APAGAIN<<8)|(0x0F<<16)|(1<<24),
++},
++AT73C213_MONO_SWITCH("PA High Gain Playback Switch", 0, PA_CTRL, PA_CTRL_APALP, 0x01, 1),
++AT73C213_MONO_SWITCH("PA Playback Switch", 0, PA_CTRL, PA_CTRL_APAON, 0x01, 0),
++{
++ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
++ .name = "Aux Capture Volume",
++ .index = 0,
++ .info = snd_at73c213_aux_capture_volume_info,
++ .get = snd_at73c213_mono_get,
++ .put = snd_at73c213_mono_put,
++ .private_value = DAC_AUXG|(0<<8)|(0x1F<<16)|(1<<24),
++},
++AT73C213_MONO_SWITCH("Aux Capture Switch", 0, DAC_CTRL, DAC_CTRL_ONAUXIN, 0x01, 0),
++{
++ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
++ .name = "Line Capture Volume",
++ .index = 0,
++ .info = snd_at73c213_line_capture_volume_info,
++ .get = snd_at73c213_stereo_get,
++ .put = snd_at73c213_stereo_put,
++ .private_value = DAC_LLIG|(DAC_RLIG<<8)|(0<<16)|(0<<19)|(0x1F<<24)|(1<<22),
++},
++AT73C213_MONO_SWITCH("Line Capture Switch", 0, DAC_CTRL, 0, 0x03, 0),
++};
++
++static int __devinit snd_at73c213_mixer(struct snd_at73c213 *chip)
++{
++ struct snd_card *card;
++ int errval, idx;
++
++ if (chip == NULL || chip->pcm == NULL)
++ return -EINVAL;
++
++ card = chip->card;
++
++ strcpy(card->mixername, chip->pcm->name);
++
++ for (idx = 0; idx < ARRAY_SIZE(snd_at73c213_controls); idx++) {
++ if ((errval = snd_ctl_add(card,
++ snd_ctl_new1(&snd_at73c213_controls[idx],
++ chip))) < 0)
++ return errval;
++ }
++
++ return 0;
++}
++
++/*
++ * Device functions
++ */
++static int snd_at73c213_chip_init(struct snd_at73c213 *chip)
++{
++ int retval;
++ unsigned char dac_ctrl = 0;
++
++ /* XXX: Unmask the APB clock for SSC0 */
++ __raw_writel(__raw_readl((void __iomem *)PM_BASE + PM_APBAMASK)|(1<<7),
++ (void __iomem *)PM_BASE + PM_APBAMASK);
++
++ /* Wait for clock to be stable */
++ msleep(10);
++
++ retval = snd_at73c213_set_bitrate_and_div();
++ if (retval)
++ goto out;
++
++ /* Reset the SSC */
++ __raw_writel(SSC_CR_SWRST, chip->regs + SSC_CR);
++
++ /* Enable GCLK0 */
++ __raw_writel((1<<30), (void __iomem *)(PIOA_BASE + PIO_PDR));
++ __raw_writel((1<<30), (void __iomem *)(PIOA_BASE + PIO_ASR));
++ __raw_writel(((gclk_div<<8)|0x10|0x04|0x02), (void __iomem *)(PM_BASE + PM_GCCTRL));
++
++ /* Enable SSC and setup for I2S */
++ __raw_writel(ssc_div, chip->regs + SSC_CMR);
++
++ /* CKO, START, STTDLY, PERIOD */
++ __raw_writel((1<<2)|(4<<8)|(1<<16)|(15<<24), chip->regs + SSC_TCMR);
++
++ /* DATLEN, MSBF, DATNB, FSLEN, FSOS */
++ __raw_writel((15<<0)|(1<<7)|(1<<8)|(15<<16)|(1<<20), chip->regs + SSC_TFMR);
++
++ /* Initialize at73c213 on SPI bus */
++ /* Reset the device */
++ write_reg(chip, DAC_RST, 0x04);
++ msleep(1);
++ write_reg(chip, DAC_RST, 0x03);
++
++ /* Turn on precharge */
++ write_reg(chip, DAC_PRECH, 0xFF);
++ write_reg(chip, PA_CTRL, (1<<PA_CTRL_APAPRECH));
++ write_reg(chip, DAC_CTRL, (1<<DAC_CTRL_ONLNOL)|(1<<DAC_CTRL_ONLNOR));
++
++ msleep(50);
++
++ /* Stop precharging PA */
++ write_reg(chip, PA_CTRL, (1<<PA_CTRL_APALP)|0x0F);
++ chip->image[PA_CTRL] = (1<<PA_CTRL_APALP)|0x0F;
++
++ msleep(450);
++
++ /* Stop precharging, turn on master power */
++ write_reg(chip, DAC_PRECH, (1<<DAC_PRECH_ONMSTR));
++ chip->image[DAC_PRECH] = (1<<DAC_PRECH_ONMSTR);
++
++ msleep(1);
++
++ /* Turn on DAC */
++ dac_ctrl = (1<<DAC_CTRL_ONDACL)|(1<<DAC_CTRL_ONDACR)|
++ (1<<DAC_CTRL_ONLNOL)|(1<<DAC_CTRL_ONLNOR);
++
++ write_reg(chip, DAC_CTRL, dac_ctrl);
++ chip->image[DAC_CTRL] = dac_ctrl;
++
++ /* Mute sound */
++ write_reg(chip, DAC_LMPG, 0x3F);
++ chip->image[DAC_LMPG] = 0x3F;
++ write_reg(chip, DAC_RMPG, 0x3F);
++ chip->image[DAC_RMPG] = 0x3F;
++ write_reg(chip, DAC_LLOG, 0x3F);
++ chip->image[DAC_LLOG] = 0x3F;
++ write_reg(chip, DAC_RLOG, 0x3F);
++ chip->image[DAC_RLOG] = 0x3F;
++ write_reg(chip, DAC_LLIG, 0x11);
++ chip->image[DAC_LLIG] = 0x11;
++ write_reg(chip, DAC_RLIG, 0x11);
++ chip->image[DAC_RLIG] = 0x11;
++ write_reg(chip, DAC_AUXG, 0x11);
++ chip->image[DAC_AUXG] = 0x11;
++
++ /* Turn on SSC transmitter */
++ __raw_writel(SSC_CR_TXEN, chip->regs + SSC_CR);
++
++out:
++ return retval;
++}
++
++static int snd_at73c213_dev_free(snd_device_t *device)
++{
++ struct snd_at73c213 *chip = device->device_data;
++
++ if (chip->regs) {
++ __raw_writel(SSC_CR_TXDIS, chip->regs + SSC_CR);
++ iounmap(chip->regs);
++ }
++
++ if (chip->irq >= 0)
++ free_irq(chip->irq, chip);
++
++ if (chip->ssc_clk) {
++ clk_disable(chip->ssc_clk);
++ clk_put(chip->ssc_clk);
++ }
++
++ return 0;
++}
++
++static int __devinit snd_at73c213_create(snd_card_t *card,
++ struct platform_device *pdev)
++{
++ static snd_device_ops_t ops = {
++ .dev_free = snd_at73c213_dev_free,
++ };
++ struct snd_at73c213 *chip = get_chip(card);
++ struct resource *regs;
++ struct clk *ssc_clk;
++ int irq, retval;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++ irq = platform_get_irq(pdev, 0);
++ if (irq < 0)
++ return irq;
++
++ ssc_clk = clk_get(&pdev->dev, "mck");
++ if (IS_ERR(ssc_clk))
++ return PTR_ERR(ssc_clk);
++ clk_enable(ssc_clk);
++ chip->ssc_clk = ssc_clk;
++
++ spin_lock_init(&chip->lock);
++ chip->card = card;
++ chip->pdev = pdev;
++ chip->irq = -1;
++
++ retval = -ENOMEM;
++
++ retval = spi_setup(chip->spi);
++ if (retval)
++ goto out;
++
++ chip->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!chip->regs)
++ goto out;
++
++ retval = request_irq(irq, snd_at73c213_interrupt, 0, "at73c213", chip);
++ if (retval) {
++ snd_printk("unable to request IRQ%d\n", irq);
++ goto out;
++ }
++ chip->irq = irq;
++
++ memcpy(&chip->image, &snd_at73c213_original_image,
++ sizeof(snd_at73c213_original_image));
++
++ retval = snd_at73c213_chip_init(chip);
++ if (retval)
++ goto out;
++
++ retval = snd_at73c213_new_pcm(chip, 0);
++ if (retval)
++ goto out;
++
++ retval = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
++ if (retval)
++ goto out;
++
++ retval = snd_at73c213_mixer(chip);
++ if (retval)
++ goto out;
++
++ snd_card_set_dev(card, &pdev->dev);
++
++out:
++ return retval;
++}
++
++static int __devinit snd_at73c213_probe(struct platform_device *pdev)
++{
++ static int dev;
++ struct spi_board_info *binfo;
++ struct spi_master *smaster;
++ struct snd_at73c213 *chip;
++ snd_card_t *card;
++ int retval;
++
++ if (dev >= SNDRV_CARDS)
++ return -ENODEV;
++ if (!enable[dev]) {
++ dev++;
++ return -ENOENT;
++ }
++
++ if (spi < 0 || ssc < 0)
++ return -ENODEV;
++
++ retval = -ENOMEM;
++ card = snd_card_new(index[dev], id[dev], THIS_MODULE,
++ sizeof(struct snd_at73c213));
++ if (!card)
++ goto out;
++
++ chip = card->private_data;
++
++ retval = -ENODEV;
++
++ /* Get the SPI bus */
++ binfo = pdev->dev.platform_data;
++ if (!binfo) {
++ printk(KERN_WARNING "at73c213: could not get platform data\n");
++ goto out;
++ }
++
++ smaster = spi_busnum_to_master(spi);
++ if (!smaster) {
++ request_module("spi1");
++ smaster = spi_busnum_to_master(spi);
++ if (!smaster) {
++ printk(KERN_WARNING
++ "at73c213: could not get "
++ "SPI bus %d, remembered to load "
++ "the spi_atmel module?\n", spi);
++ goto out;
++ }
++ }
++
++ chip->spi = spi_new_device(smaster, binfo);
++ if (!chip->spi) {
++ printk(KERN_WARNING "at73c213: could not get SPI device %d\n", spi);
++ goto out;
++ }
++
++ chip->spi->mode = SPI_MODE_1;
++ chip->spi->bits_per_word = 8;
++
++ retval = snd_at73c213_create(card, pdev);
++ if (retval)
++ goto out_free_card;
++
++ strcpy(card->driver, "at73c213");
++ strcpy(card->shortname, "at73c213 (AVR32 STK1000)");
++ sprintf(card->longname, "%s at %p (irq %i)", card->shortname, chip->regs, chip->irq);
++
++ retval = snd_card_register(card);
++ if (retval)
++ goto out_free_card;
++
++ platform_set_drvdata(pdev, card);
++ dev++;
++ return 0;
++
++out_free_card:
++ snd_card_free(card);
++out:
++ return retval;
++}
++
++static int __devexit snd_at73c213_remove(struct platform_device *pdev)
++{
++ struct snd_card *card = platform_get_drvdata(pdev);
++ struct snd_at73c213 *chip = card->private_data;
++ int retval;
++
++ /* Stop playback */
++ __raw_writel(SSC_CR_TXDIS, chip->regs + SSC_CR);
++
++ /* Stop GLCK0 */
++ __raw_writel(0, (void __iomem *)PM_BASE + PM_GCCTRL);
++
++ /* Mute sound */
++ write_reg(chip, DAC_LMPG, 0x3F);
++ chip->image[DAC_LMPG] = 0x3F;
++ write_reg(chip, DAC_RMPG, 0x3F);
++ chip->image[DAC_RMPG] = 0x3F;
++ write_reg(chip, DAC_LLOG, 0x3F);
++ chip->image[DAC_LLOG] = 0x3F;
++ write_reg(chip, DAC_RLOG, 0x3F);
++ chip->image[DAC_RLOG] = 0x3F;
++ write_reg(chip, DAC_LLIG, 0x11);
++ chip->image[DAC_LLIG] = 0x11;
++ write_reg(chip, DAC_RLIG, 0x11);
++ chip->image[DAC_RLIG] = 0x11;
++ write_reg(chip, DAC_AUXG, 0x11);
++ chip->image[DAC_AUXG] = 0x11;
++
++ /* Turn off PA */
++ write_reg(chip, PA_CTRL, (chip->image[PA_CTRL]|0x0F));
++ chip->image[PA_CTRL] |= 0x0F;
++ msleep(10);
++ write_reg(chip, PA_CTRL, (1<<PA_CTRL_APALP)|0x0F);
++ chip->image[PA_CTRL] = (1<<PA_CTRL_APALP)|0x0F;
++
++ /* Turn off external DAC */
++ write_reg(chip, DAC_CTRL, 0x0C);
++ chip->image[DAC_CTRL] = 0x0C;
++ msleep(2);
++ write_reg(chip, DAC_CTRL, 0x00);
++ chip->image[DAC_CTRL] = 0x00;
++
++ /* Turn off master power */
++ write_reg(chip, DAC_PRECH, 0x00);
++ chip->image[DAC_PRECH] = 0x00;
++
++ msleep(10);
++
++out:
++ if (chip->spi)
++ spi_unregister_device(chip->spi);
++
++ if (card) {
++ snd_card_free(card);
++ platform_set_drvdata(pdev, NULL);
++ }
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int snd_at73c213_suspend(struct platform_device *pdev, pm_message_t state, u32 level)
++{
++ struct snd_card *card = at32_get_drvdata(pdev);
++ struct snd_at73c213 *chip = card->private_data;
++
++ printk(KERN_DEBUG "at73c213: suspending\n");
++
++ /* Stop SSC and GCLK0 */
++
++ spi_suspend(chip->spi, state);
++
++ return 0;
++}
++
++static int snd_at73c213_resume(struct platform_device *pdev, u32 level)
++{
++ struct snd_card *card = at32_get_drvdata(pdev);
++ struct snd_at73c213 *chip = card->private_data;
++
++ printk(KERN_DEBUG "at73c213: resuming\n");
++
++ /* Start GLCK0 and SSC */
++
++ spi_resume(chip->spi);
++
++ return 0;
++}
++#endif /* CONFIG_PM */
++
++/* Driver core initialization */
++static struct platform_driver at73c213_driver = {
++ .probe = snd_at73c213_probe,
++ .remove = __devexit_p(snd_at73c213_remove),
++ .driver = {
++ .name = "at73c213",
++ }
++#ifdef CONFIG_PM
++ .resume = snd_at73c213_resume,
++ .suspend = snd_at73c213_suspend,
++#endif
++};
++
++static int __init at73c213_init(void)
++{
++ return platform_driver_register(&at73c213_driver);
++}
++
++static void __exit at73c213_exit(void)
++{
++ platform_driver_unregister(&at73c213_driver);
++}
++
++MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>");
++MODULE_DESCRIPTION("Sound driver for at73c213 on STK1000");
++MODULE_LICENSE("GPL");
++
++module_init(at73c213_init);
++module_exit(at73c213_exit);
++
+Index: linux-2.6.18-avr32/sound/avr32/at73c213.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/avr32/at73c213.h 2006-11-02 15:56:20.000000000 +0100
+@@ -0,0 +1,120 @@
++/*
++ * Driver for the AT73C213 16-bit stereo DAC on Atmel ATSTK1000
++ *
++ * Copyright (C) 2006 Atmel Norway
++ *
++ * 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.
++ *
++ * The full GNU General Public License is included in this
++ * distribution in the file called COPYING.
++ */
++
++#ifndef _SND_AT73C213_MIXER_H_
++#define _SND_AT73C213_MIXER_H_
++
++/* DAC control register */
++#define DAC_CTRL 0x00
++#define DAC_CTRL_ONPADRV 7
++#define DAC_CTRL_ONAUXIN 6
++#define DAC_CTRL_ONDACR 5
++#define DAC_CTRL_ONDACL 4
++#define DAC_CTRL_ONLNOR 3
++#define DAC_CTRL_ONLNOL 2
++#define DAC_CTRL_ONLNIR 1
++#define DAC_CTRL_ONLNIL 0
++
++/* DAC left line in gain register */
++#define DAC_LLIG 0x01
++#define DAC_LLIG_LLIG 0
++
++/* DAC right line in gain register */
++#define DAC_RLIG 0x02
++#define DAC_RLIG_RLIG 0
++
++/* DAC Left Master Playback Gain Register */
++#define DAC_LMPG 0x03
++#define DAC_LMPG_LMPG 0
++
++/* DAC Right Master Playback Gain Register */
++#define DAC_RMPG 0x04
++#define DAC_RMPG_RMPG 0
++
++/* DAC Left Line Out Gain Register */
++#define DAC_LLOG 0x05
++#define DAC_LLOG_LLOG 0
++
++/* DAC Right Line Out Gain Register */
++#define DAC_RLOG 0x06
++#define DAC_RLOG_RLOG 0
++
++/* DAC Output Level Control Register */
++#define DAC_OLC 0x07
++#define DAC_OLC_RSHORT 7
++#define DAC_OLC_ROLC 4
++#define DAC_OLC_LSHORT 3
++#define DAC_OLC_LOLC 0
++
++/* DAC Mixer Control Register */
++#define DAC_MC 0x08
++#define DAC_MC_INVR 5
++#define DAC_MC_INVL 4
++#define DAC_MC_RMSMIN2 3
++#define DAC_MC_RMSMIN1 2
++#define DAC_MC_LMSMIN2 1
++#define DAC_MC_LMSMIN1 0
++
++/* DAC Clock and Sampling Frequency Control Register */
++#define DAC_CSFC 0x09
++#define DAC_CSFC_OVRSEL 4
++
++/* DAC Miscellaneous Register */
++#define DAC_MISC 0x0A
++#define DAC_MISC_VCMCAPSEL 7
++#define DAC_MISC_DINTSEL 4
++#define DAC_MISC_DITHEN 3
++#define DAC_MISC_DEEMPEN 2
++#define DAC_MISC_NBITS 0
++
++/* DAC Precharge Control Register */
++#define DAC_PRECH 0x0C
++#define DAC_PRECH_PRCHGPDRV 7
++#define DAC_PRECH_PRCHGAUX1 6
++#define DAC_PRECH_PRCHGLNOR 5
++#define DAC_PRECH_PRCHGLNOL 4
++#define DAC_PRECH_PRCHGLNIR 3
++#define DAC_PRECH_PRCHGLNIL 2
++#define DAC_PRECH_PRCHG 1
++#define DAC_PRECH_ONMSTR 0
++
++/* DAC Auxiliary Input Gain Control Register */
++#define DAC_AUXG 0x0D
++#define DAC_AUXG_AUXG 0
++
++/* DAC Reset Register */
++#define DAC_RST 0x10
++#define DAC_RST_RESMASK 2
++#define DAC_RST_RESFILZ 1
++#define DAC_RST_RSTZ 0
++
++/* Power Amplifier Control Register */
++#define PA_CTRL 0x11
++#define PA_CTRL_APAON 6
++#define PA_CTRL_APAPRECH 5
++#define PA_CTRL_APALP 4
++#define PA_CTRL_APAGAIN 0
++
++#endif
++
diff --git a/packages/linux/linux-2.6.18/atmel-ac97c-alsa-driver.patch b/packages/linux/linux-2.6.18/atmel-ac97c-alsa-driver.patch
new file mode 100644
index 0000000000..fe3d2ee209
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-ac97c-alsa-driver.patch
@@ -0,0 +1,1383 @@
+---
+ sound/avr32/Kconfig | 25 +
+ sound/avr32/Makefile | 3
+ sound/avr32/ac97c.c | 1250 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ sound/avr32/ac97c.h | 71 ++
+ 4 files changed, 1349 insertions(+)
+
+Index: linux-2.6.18-avr32/sound/avr32/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/avr32/Kconfig 2006-11-02 15:56:20.000000000 +0100
++++ linux-2.6.18-avr32/sound/avr32/Kconfig 2006-11-02 16:02:29.000000000 +0100
+@@ -3,4 +3,29 @@
+ menu "ALSA AVR32 devices"
+ depends on SND != n && AVR32
+
++config SND_ATMEL_AC97
++ tristate "Atmel AC97 Controller Driver"
++ depends on SND
++ select SND_PCM
++ select SND_AC97_CODEC
++ help
++ ALSA sound driver for the Atmel AC97 controller.
++
++config SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS
++ bool "Use the built-in malloc calls in the alsa driver"
++ default n
++ depends on SND_ATMEL_AC97
++ help
++ Say Y if the built-in malloc calls in the alsa driver should be
++ used instead of the native dma_alloc_coherent and dma_free_coherent
++ function calls. Enabling this feature may break the rmmod feature.
++
++config SND_ATMEL_AC97C_USE_PDC
++ bool "Use PDC for DMA transfers to/from the Atmel AC97 Controller"
++ default n
++ depends on SND_ATMEL_AC97
++ help
++ Say Y if PDC (Peripheral DMA Controller) is used for DMA transfers
++ to/from the Atmel AC97C instead of using the generic DMA framework.
++
+ endmenu
+Index: linux-2.6.18-avr32/sound/avr32/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/avr32/Makefile 2006-11-02 15:56:20.000000000 +0100
++++ linux-2.6.18-avr32/sound/avr32/Makefile 2006-11-02 16:02:29.000000000 +0100
+@@ -1,3 +1,6 @@
+ #
+ # Makefile for ALSA
+ #
++
++snd-atmel-ac97-objs := ac97c.o
++obj-$(CONFIG_SND_ATMEL_AC97) += snd-atmel-ac97.o
+Index: linux-2.6.18-avr32/sound/avr32/ac97c.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/avr32/ac97c.c 2006-11-02 16:02:56.000000000 +0100
+@@ -0,0 +1,1250 @@
++/*
++ * Driver for the Atmel AC97 Controller
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/delay.h>
++#include <linux/dma-mapping.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/mutex.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/initval.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/ac97_codec.h>
++#ifndef SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS
++#include <sound/memalloc.h>
++#endif
++
++#include <asm/io.h>
++
++#include "ac97c.h"
++
++static DEFINE_MUTEX(opened_mutex);
++
++/* module parameters */
++static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
++static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
++static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
++
++module_param_array(index, int, NULL, 0444);
++MODULE_PARM_DESC(index, "Index value for AC97 controller");
++module_param_array(id, charp, NULL, 0444);
++MODULE_PARM_DESC(id, "ID string for AC97 controller");
++module_param_array(enable, bool, NULL, 0444);
++MODULE_PARM_DESC(enable, "Enable AC97 controller");
++
++#ifndef CONFIG_SND_ATMEL_AC97C_USE_PDC
++#include <asm/dma-controller.h>
++
++struct atmel_ac97_dma_info {
++ struct dma_request_cyclic req_tx;
++ struct dma_request_cyclic req_rx;
++ unsigned short rx_periph_id;
++ unsigned short tx_periph_id;
++};
++#endif
++
++
++typedef struct atmel_ac97 {
++ spinlock_t lock;
++ void __iomem *regs;
++ int period;
++
++ snd_pcm_substream_t *playback_substream;
++ snd_pcm_substream_t *capture_substream;
++ snd_card_t *card;
++ snd_pcm_t *pcm;
++ ac97_t *ac97;
++ ac97_bus_t *ac97_bus;
++ int irq;
++ int opened;
++ u64 cur_format;
++ unsigned int cur_rate;
++ struct clk *mck;
++ struct platform_device *pdev;
++ struct atmel_ac97_dma_info dma;
++} atmel_ac97_t;
++#define get_chip(card) ((atmel_ac97_t *)(card)->private_data)
++
++#define ac97c_writel(chip, reg, val) \
++ __raw_writel((val), (chip)->regs + AC97C_##reg)
++#define ac97c_readl(chip, reg) \
++ __raw_readl((chip)->regs + AC97C_##reg)
++
++/* PCM part */
++
++static snd_pcm_hardware_t snd_atmel_ac97_playback_hw = {
++ .info = (SNDRV_PCM_INFO_INTERLEAVED
++ |SNDRV_PCM_INFO_MMAP
++ |SNDRV_PCM_INFO_MMAP_VALID
++ |SNDRV_PCM_INFO_BLOCK_TRANSFER
++ |SNDRV_PCM_INFO_JOINT_DUPLEX),
++ .formats = (SNDRV_PCM_FMTBIT_S16_BE|SNDRV_PCM_FMTBIT_S16_LE),
++ .rates = (SNDRV_PCM_RATE_CONTINUOUS),
++ .rate_min = 4000,
++ .rate_max = 48000,
++ .channels_min = 1,
++ .channels_max = 6,
++ .buffer_bytes_max = 64*1024,
++ .period_bytes_min = 512,
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ .period_bytes_max = 64*1024,
++#else
++ .period_bytes_max = 4095,
++#endif
++ .periods_min = 8,
++ .periods_max = 1024,
++};
++
++static snd_pcm_hardware_t snd_atmel_ac97_capture_hw = {
++ .info = (SNDRV_PCM_INFO_INTERLEAVED
++ |SNDRV_PCM_INFO_MMAP
++ |SNDRV_PCM_INFO_MMAP_VALID
++ |SNDRV_PCM_INFO_BLOCK_TRANSFER
++ |SNDRV_PCM_INFO_JOINT_DUPLEX),
++ .formats = (SNDRV_PCM_FMTBIT_S16_BE|SNDRV_PCM_FMTBIT_S16_LE),
++ .rates = (SNDRV_PCM_RATE_CONTINUOUS),
++ .rate_min = 4000,
++ .rate_max = 48000,
++ .channels_min = 1,
++ .channels_max = 2,
++ .buffer_bytes_max = 64*1024,
++ .period_bytes_min = 512,
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ .period_bytes_max = 64*1024,
++#else
++ .period_bytes_max = 4095,
++#endif
++ .periods_min = 8,
++ .periods_max = 1024,
++};
++
++/* Joint full duplex variables */
++unsigned int hw_rates[1];
++unsigned int hw_formats[1];
++struct snd_pcm_hw_constraint_list hw_constraint_rates;
++struct snd_pcm_hw_constraint_list hw_constraint_formats;
++
++/*
++ * PCM functions
++ */
++static int
++snd_atmel_ac97_playback_open(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ snd_pcm_runtime_t *runtime = substream->runtime;
++
++ mutex_lock(&opened_mutex);
++ chip->opened++;
++ runtime->hw = snd_atmel_ac97_playback_hw;
++ if (chip->cur_rate) {
++ runtime->hw.rate_min = chip->cur_rate;
++ runtime->hw.rate_max = chip->cur_rate;
++ }
++ if (chip->cur_format)
++ runtime->hw.formats = (1ULL<<chip->cur_format);
++ mutex_unlock(&opened_mutex);
++ chip->playback_substream = substream;
++ chip->period = 0;
++ return 0;
++}
++
++static int
++snd_atmel_ac97_capture_open(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ snd_pcm_runtime_t *runtime = substream->runtime;
++
++ mutex_lock(&opened_mutex);
++ chip->opened++;
++ runtime->hw = snd_atmel_ac97_capture_hw;
++ if (chip->cur_rate) {
++ runtime->hw.rate_min = chip->cur_rate;
++ runtime->hw.rate_max = chip->cur_rate;
++ }
++ if (chip->cur_format)
++ runtime->hw.formats = (1ULL<<chip->cur_format);
++ mutex_unlock(&opened_mutex);
++ chip->capture_substream = substream;
++ chip->period = 0;
++ return 0;
++}
++
++static int snd_atmel_ac97_playback_close(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ mutex_lock(&opened_mutex);
++ chip->opened--;
++ if (!chip->opened) {
++ chip->cur_rate = 0;
++ chip->cur_format = 0;
++ }
++ mutex_unlock(&opened_mutex);
++ return 0;
++}
++
++static int snd_atmel_ac97_capture_close(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ mutex_lock(&opened_mutex);
++ chip->opened--;
++ if (!chip->opened) {
++ chip->cur_rate = 0;
++ chip->cur_format = 0;
++ }
++ mutex_unlock(&opened_mutex);
++ return 0;
++}
++
++static int snd_atmel_ac97_playback_hw_params(snd_pcm_substream_t *substream,
++ snd_pcm_hw_params_t *hw_params)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++#ifdef SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS
++ int err;
++ err = snd_pcm_lib_malloc_pages(substream,
++ params_buffer_bytes(hw_params));
++
++ if (err < 0)
++ return err;
++
++ /* Set restrictions to params */
++ mutex_lock(&opened_mutex);
++ chip->cur_rate = params_rate(hw_params);
++ chip->cur_format = params_format(hw_params);
++ mutex_unlock(&opened_mutex);
++
++ return err;
++#else
++ int pg;
++ size_t size = params_buffer_bytes(hw_params);
++ struct snd_pcm_runtime *runtime;
++ struct snd_dma_buffer *dmab = NULL;
++
++ substream->dma_buffer.dev.type = SNDRV_DMA_TYPE_DEV;
++ snd_assert(substream != NULL, return -EINVAL);
++ runtime = substream->runtime;
++ snd_assert(runtime != NULL, return -EINVAL);
++
++ /* Set restrictions to params */
++ mutex_lock(&opened_mutex);
++ chip->cur_rate = params_rate(hw_params);
++ chip->cur_format = params_format(hw_params);
++ mutex_unlock(&opened_mutex);
++
++ /* check if buffer is already allocated */
++ if (runtime->dma_buffer_p) {
++ size_t size_previouse;
++ int pg_previouse;
++
++ /* new buffer is smaler than previouse allocated buffer */
++ if (runtime->dma_buffer_p->bytes >= size) {
++ runtime->dma_bytes = size;
++ return 0; /* don't change buffer size */
++ }
++
++ size_previouse = runtime->dma_buffer_p->bytes;
++ pg_previouse = get_order(size_previouse);
++
++ dma_free_coherent(runtime->dma_buffer_p->dev.dev,
++ PAGE_SIZE << pg_previouse,
++ runtime->dma_buffer_p->area,
++ runtime->dma_buffer_p->addr);
++
++ kfree(runtime->dma_buffer_p);
++ }
++
++ dmab = kzalloc(sizeof(*dmab), GFP_KERNEL);
++ if (!dmab)
++ return -ENOMEM;
++
++ dmab->dev = substream->dma_buffer.dev;
++ dmab->bytes = 0;
++
++ pg = get_order(size);
++
++ dmab->area = dma_alloc_coherent(
++ substream->dma_buffer.dev.dev,
++ PAGE_SIZE << pg,
++ (dma_addr_t *)&dmab->addr,
++ GFP_KERNEL);
++
++ if (!dmab->area) {
++ kfree(dmab);
++ return -ENOMEM;
++ }
++
++ dmab->bytes = size;
++
++ snd_pcm_set_runtime_buffer(substream, dmab);
++ runtime->dma_bytes = size;
++ return 1;
++#endif
++}
++
++static int snd_atmel_ac97_capture_hw_params(snd_pcm_substream_t *substream,
++ snd_pcm_hw_params_t *hw_params)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++#ifdef SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS
++ int err;
++ err = snd_pcm_lib_malloc_pages(substream,
++ params_buffer_bytes(hw_params));
++
++ if (err < 0)
++ return err;
++
++ /* Set restrictions to params */
++ mutex_lock(&opened_mutex);
++ chip->cur_rate = params_rate(hw_params);
++ chip->cur_format = params_format(hw_params);
++ mutex_unlock(&opened_mutex);
++
++ return err;
++#else
++ int pg;
++ size_t size = params_buffer_bytes(hw_params);
++ struct snd_pcm_runtime *runtime;
++ struct snd_dma_buffer *dmab = NULL;
++
++ substream->dma_buffer.dev.type = SNDRV_DMA_TYPE_DEV;
++ snd_assert(substream != NULL, return -EINVAL);
++ runtime = substream->runtime;
++ snd_assert(runtime != NULL, return -EINVAL);
++
++ /* Set restrictions to params */
++ mutex_lock(&opened_mutex);
++ chip->cur_rate = params_rate(hw_params);
++ chip->cur_format = params_format(hw_params);
++ mutex_unlock(&opened_mutex);
++
++ /* check if buffer is already allocated */
++ if (runtime->dma_buffer_p) {
++ size_t size_previouse;
++ int pg_previouse;
++
++ /* new buffer is smaler than previouse allocated buffer */
++ if (runtime->dma_buffer_p->bytes >= size) {
++ runtime->dma_bytes = size;
++ return 0; /* don't change buffer size */
++ }
++
++ size_previouse = runtime->dma_buffer_p->bytes;
++ pg_previouse = get_order(size_previouse);
++
++ dma_free_coherent(runtime->dma_buffer_p->dev.dev,
++ PAGE_SIZE << pg_previouse,
++ runtime->dma_buffer_p->area,
++ runtime->dma_buffer_p->addr);
++
++ kfree(runtime->dma_buffer_p);
++ }
++
++ dmab = kzalloc(sizeof(*dmab), GFP_KERNEL);
++ if (!dmab)
++ return -ENOMEM;
++
++ dmab->dev = substream->dma_buffer.dev;
++ dmab->bytes = 0;
++
++ pg = get_order(size);
++
++ dmab->area = dma_alloc_coherent(
++ substream->dma_buffer.dev.dev,
++ PAGE_SIZE << pg,
++ (dma_addr_t *)&dmab->addr,
++ GFP_KERNEL);
++
++ if (!dmab->area) {
++ kfree(dmab);
++ return -ENOMEM;
++ }
++
++ dmab->bytes = size;
++
++ snd_pcm_set_runtime_buffer(substream, dmab);
++ runtime->dma_bytes = size;
++ return 1;
++#endif
++}
++
++static int snd_atmel_ac97_playback_hw_free(snd_pcm_substream_t *substream)
++{
++#ifdef SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS
++ return snd_pcm_lib_free_pages(substream);
++#else
++ int pg;
++ struct snd_pcm_runtime *runtime;
++ struct snd_dma_buffer *dmab = NULL;
++
++ snd_assert(substream != NULL, return -EINVAL);
++ runtime = substream->runtime;
++ snd_assert(runtime != NULL, return -EINVAL);
++ dmab = runtime->dma_buffer_p;
++
++ if (!dmab)
++ return 0;
++
++ if (!dmab->area)
++ return 0;
++
++ pg = get_order(dmab->bytes);
++ dma_free_coherent(dmab->dev.dev, PAGE_SIZE << pg, dmab->area, dmab->addr);
++ kfree(runtime->dma_buffer_p);
++ snd_pcm_set_runtime_buffer(substream, NULL);
++ return 0;
++#endif
++}
++
++static int snd_atmel_ac97_capture_hw_free(snd_pcm_substream_t *substream)
++{
++
++#ifdef SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS
++ return snd_pcm_lib_free_pages(substream);
++#else
++ int pg;
++ struct snd_pcm_runtime *runtime;
++ struct snd_dma_buffer *dmab = NULL;
++
++ snd_assert(substream != NULL, return -EINVAL);
++ runtime = substream->runtime;
++ snd_assert(runtime != NULL, return -EINVAL);
++ dmab = runtime->dma_buffer_p;
++
++ if (!dmab)
++ return 0;
++
++ if (!dmab->area)
++ return 0;
++
++ pg = get_order(dmab->bytes);
++ dma_free_coherent(dmab->dev.dev, PAGE_SIZE << pg, dmab->area, dmab->addr);
++ kfree(runtime->dma_buffer_p);
++ snd_pcm_set_runtime_buffer(substream, NULL);
++ return 0;
++#endif
++}
++
++static int snd_atmel_ac97_playback_prepare(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ struct platform_device *pdev = chip->pdev;
++ snd_pcm_runtime_t *runtime = substream->runtime;
++ int block_size = frames_to_bytes(runtime, runtime->period_size);
++ unsigned long word = 0;
++ unsigned long buffer_size = 0;
++
++ dma_sync_single_for_device(&pdev->dev, runtime->dma_addr,
++ block_size * 2, DMA_TO_DEVICE);
++
++ /* Assign slots to channels */
++ switch (substream->runtime->channels) {
++ case 1:
++ word |= AC97C_CH_ASSIGN(PCM_LEFT, A);
++ break;
++ case 2:
++ /* Assign Left and Right slot to Channel A */
++ word |= AC97C_CH_ASSIGN(PCM_LEFT, A)
++ | AC97C_CH_ASSIGN(PCM_RIGHT, A);
++ break;
++ default:
++ /* TODO: support more than two channels */
++ return -EINVAL;
++ break;
++ }
++ ac97c_writel(chip, OCA, word);
++
++ /* Configure sample format and size */
++ word = AC97C_CMR_PDCEN | AC97C_CMR_SIZE_16;
++
++ switch (runtime->format){
++ case SNDRV_PCM_FORMAT_S16_LE:
++ word |= AC97C_CMR_CEM_LITTLE;
++ break;
++ case SNDRV_PCM_FORMAT_S16_BE:
++ default:
++ word &= ~AC97C_CMR_CEM_LITTLE;
++ break;
++ }
++
++ ac97c_writel(chip, CAMR, word);
++
++ /* Set variable rate if needed */
++ if (runtime->rate != 48000) {
++ word = ac97c_readl(chip, MR);
++ word |= AC97C_MR_VRA;
++ ac97c_writel(chip, MR, word);
++ } else {
++ /* Clear Variable Rate Bit */
++ word = ac97c_readl(chip, MR);
++ word &= ~AC97C_MR_VRA;
++ ac97c_writel(chip, MR, word);
++ }
++
++ /* Set rate */
++ snd_ac97_set_rate(chip->ac97, AC97_PCM_FRONT_DAC_RATE, runtime->rate);
++
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ /* Initialize and start the PDC */
++ ac97c_writel(chip, CATPR, runtime->dma_addr);
++ ac97c_writel(chip, CATCR, block_size / 4);
++ ac97c_writel(chip, CATNPR, runtime->dma_addr + block_size);
++ ac97c_writel(chip, CATNCR, block_size / 4);
++ ac97c_writel(chip, PTCR, PDC_PTCR_TXTEN);
++ /* Enable Channel A interrupts */
++ ac97c_writel(chip, IER, AC97C_SR_CAEVT);
++#else
++ buffer_size = frames_to_bytes(runtime, runtime->period_size) *
++ runtime->periods;
++
++ chip->dma.req_tx.buffer_size = buffer_size;
++ chip->dma.req_tx.periods = runtime->periods;
++
++ BUG_ON(chip->dma.req_tx.buffer_size !=
++ (chip->dma.req_tx.periods *
++ frames_to_bytes(runtime, runtime->period_size)));
++
++ chip->dma.req_tx.buffer_start = runtime->dma_addr;
++ chip->dma.req_tx.data_reg = (dma_addr_t)(chip->regs + AC97C_CATHR + 2);
++ chip->dma.req_tx.periph_id = chip->dma.tx_periph_id;
++ chip->dma.req_tx.direction = DMA_DIR_MEM_TO_PERIPH;
++ chip->dma.req_tx.width = DMA_WIDTH_16BIT;
++ chip->dma.req_tx.dev_id = chip;
++#endif
++
++ return 0;
++}
++
++static int snd_atmel_ac97_capture_prepare(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ struct platform_device *pdev = chip->pdev;
++ snd_pcm_runtime_t *runtime = substream->runtime;
++ int block_size = frames_to_bytes(runtime, runtime->period_size);
++ unsigned long word = 0;
++ unsigned long buffer_size = 0;
++
++ dma_sync_single_for_device(&pdev->dev, runtime->dma_addr,
++ block_size * 2, DMA_FROM_DEVICE);
++
++ /* Assign slots to channels */
++ switch (substream->runtime->channels) {
++ case 1:
++ word |= AC97C_CH_ASSIGN(PCM_LEFT, A);
++ break;
++ case 2:
++ /* Assign Left and Right slot to Channel A */
++ word |= AC97C_CH_ASSIGN(PCM_LEFT, A)
++ | AC97C_CH_ASSIGN(PCM_RIGHT, A);
++ break;
++ default:
++ /* TODO: support more than two channels */
++ return -EINVAL;
++ break;
++ }
++ ac97c_writel(chip, ICA, word);
++
++ /* Configure sample format and size */
++ word = AC97C_CMR_PDCEN | AC97C_CMR_SIZE_16;
++
++ switch (runtime->format) {
++ case SNDRV_PCM_FORMAT_S16_LE:
++ word |= AC97C_CMR_CEM_LITTLE;
++ break;
++ case SNDRV_PCM_FORMAT_S16_BE:
++ default:
++ word &= ~(AC97C_CMR_CEM_LITTLE);
++ break;
++ }
++
++ ac97c_writel(chip, CAMR, word);
++
++ /* Set variable rate if needed */
++ if (runtime->rate != 48000) {
++ word = ac97c_readl(chip, MR);
++ word |= AC97C_MR_VRA;
++ ac97c_writel(chip, MR, word);
++ } else {
++ /* Clear Variable Rate Bit */
++ word = ac97c_readl(chip, MR);
++ word &= ~(AC97C_MR_VRA);
++ ac97c_writel(chip, MR, word);
++ }
++
++ /* Set rate */
++ snd_ac97_set_rate(chip->ac97, AC97_PCM_LR_ADC_RATE, runtime->rate);
++
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ /* Initialize and start the PDC */
++ ac97c_writel(chip, CARPR, runtime->dma_addr);
++ ac97c_writel(chip, CARCR, block_size / 4);
++ ac97c_writel(chip, CARNPR, runtime->dma_addr + block_size);
++ ac97c_writel(chip, CARNCR, block_size / 4);
++ ac97c_writel(chip, PTCR, PDC_PTCR_RXEN);
++ /* Enable Channel A interrupts */
++ ac97c_writel(chip, IER, AC97C_SR_CAEVT);
++#else
++ buffer_size = frames_to_bytes(runtime, runtime->period_size) *
++ runtime->periods;
++
++ chip->dma.req_rx.buffer_size = buffer_size;
++ chip->dma.req_rx.periods = runtime->periods;
++
++ BUG_ON(chip->dma.req_rx.buffer_size !=
++ (chip->dma.req_rx.periods *
++ frames_to_bytes(runtime, runtime->period_size)));
++
++ chip->dma.req_rx.buffer_start = runtime->dma_addr;
++ chip->dma.req_rx.data_reg = (dma_addr_t)(chip->regs + AC97C_CARHR + 2);
++ chip->dma.req_rx.periph_id = chip->dma.rx_periph_id;
++ chip->dma.req_rx.direction = DMA_DIR_PERIPH_TO_MEM;
++ chip->dma.req_rx.width = DMA_WIDTH_16BIT;
++ chip->dma.req_rx.dev_id = chip;
++#endif
++
++ return 0;
++}
++
++static int snd_atmel_ac97_playback_trigger(snd_pcm_substream_t *substream, int cmd)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ unsigned long camr;
++ int flags, err = 0;
++
++ spin_lock_irqsave(&chip->lock, flags);
++ camr = ac97c_readl(chip, CAMR);
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ err = dma_prepare_request_cyclic(chip->dma.req_tx.req.dmac,
++ &chip->dma.req_tx);
++ dma_start_request(chip->dma.req_tx.req.dmac,
++ chip->dma.req_tx.req.channel);
++ camr |= (AC97C_CMR_CENA
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ |AC97C_CMR_TXRDY
++#endif
++ );
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ err = dma_stop_request(chip->dma.req_tx.req.dmac,
++ chip->dma.req_tx.req.channel);
++ if (chip->opened <= 1) {
++ camr &= ~(AC97C_CMR_CENA
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ |AC97C_CMR_TXRDY
++#endif
++ );
++ }
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ else {
++ camr &= ~(AC97C_CMR_TXRDY);
++ }
++#endif
++ break;
++ default:
++ err = -EINVAL;
++ break;
++ }
++
++ ac97c_writel(chip, CAMR, camr);
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++ return err;
++}
++
++static int snd_atmel_ac97_capture_trigger(snd_pcm_substream_t *substream, int cmd)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ unsigned long camr;
++ int flags, err = 0;
++
++ spin_lock_irqsave(&chip->lock, flags);
++ camr = ac97c_readl(chip, CAMR);
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_START:
++ err = dma_prepare_request_cyclic(chip->dma.req_rx.req.dmac,
++ &chip->dma.req_rx);
++ dma_start_request(chip->dma.req_rx.req.dmac,
++ chip->dma.req_rx.req.channel);
++ camr |= (AC97C_CMR_CENA
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ | AC97C_CMR_RXRDY
++#endif
++ );
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ err = dma_stop_request(chip->dma.req_rx.req.dmac,
++ chip->dma.req_rx.req.channel);
++ mutex_lock(&opened_mutex);
++ if (chip->opened <= 1) {
++ camr &= ~(AC97C_CMR_CENA
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ | AC97C_CMR_RXRDY
++#endif
++ );
++ }
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ else {
++ camr &= ~(AC97C_CSR_RXRDY);
++ }
++#endif
++ mutex_unlock(&opened_mutex);
++ break;
++ default:
++ err = -EINVAL;
++ break;
++ }
++
++ ac97c_writel(chip, CAMR, camr);
++
++ spin_unlock_irqrestore(&chip->lock, flags);
++ return err;
++}
++
++static snd_pcm_uframes_t snd_atmel_ac97_playback_pointer(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ snd_pcm_runtime_t *runtime = substream->runtime;
++ snd_pcm_uframes_t pos;
++ unsigned long bytes;
++
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ bytes = ac97c_readl(chip, CATPR) - runtime->dma_addr;
++#else
++ bytes = (dma_get_current_pos
++ (chip->dma.req_tx.req.dmac,
++ chip->dma.req_tx.req.channel) - runtime->dma_addr);
++#endif
++ pos = bytes_to_frames(runtime, bytes);
++ if (pos >= runtime->buffer_size)
++ pos -= runtime->buffer_size;
++
++ return pos;
++}
++
++static snd_pcm_uframes_t snd_atmel_ac97_capture_pointer(snd_pcm_substream_t *substream)
++{
++ atmel_ac97_t *chip = snd_pcm_substream_chip(substream);
++ snd_pcm_runtime_t *runtime = substream->runtime;
++ snd_pcm_uframes_t pos;
++ unsigned long bytes;
++
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ bytes = ac97c_readl(chip, CARPR) - runtime->dma_addr;
++#else
++ bytes = (dma_get_current_pos
++ (chip->dma.req_rx.req.dmac,chip->dma.req_rx.req.channel) -
++ runtime->dma_addr);
++#endif
++ pos = bytes_to_frames(runtime, bytes);
++ if (pos >= runtime->buffer_size)
++ pos -= runtime->buffer_size;
++
++
++ return pos;
++}
++
++static snd_pcm_ops_t atmel_ac97_playback_ops = {
++ .open = snd_atmel_ac97_playback_open,
++ .close = snd_atmel_ac97_playback_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = snd_atmel_ac97_playback_hw_params,
++ .hw_free = snd_atmel_ac97_playback_hw_free,
++ .prepare = snd_atmel_ac97_playback_prepare,
++ .trigger = snd_atmel_ac97_playback_trigger,
++ .pointer = snd_atmel_ac97_playback_pointer,
++};
++
++static snd_pcm_ops_t atmel_ac97_capture_ops = {
++ .open = snd_atmel_ac97_capture_open,
++ .close = snd_atmel_ac97_capture_close,
++ .ioctl = snd_pcm_lib_ioctl,
++ .hw_params = snd_atmel_ac97_capture_hw_params,
++ .hw_free = snd_atmel_ac97_capture_hw_free,
++ .prepare = snd_atmel_ac97_capture_prepare,
++ .trigger = snd_atmel_ac97_capture_trigger,
++ .pointer = snd_atmel_ac97_capture_pointer,
++};
++
++static struct ac97_pcm atmel_ac97_pcm_defs[] __devinitdata = {
++ /* Playback */
++ {
++ .exclusive = 1,
++ .r = { {
++ .slots = ((1 << AC97_SLOT_PCM_LEFT)
++ | (1 << AC97_SLOT_PCM_RIGHT)
++ | (1 << AC97_SLOT_PCM_CENTER)
++ | (1 << AC97_SLOT_PCM_SLEFT)
++ | (1 << AC97_SLOT_PCM_SRIGHT)
++ | (1 << AC97_SLOT_LFE)),
++ } }
++ },
++ /* PCM in */
++ {
++ .stream = 1,
++ .exclusive = 1,
++ .r = { {
++ .slots = ((1 << AC97_SLOT_PCM_LEFT)
++ | (1 << AC97_SLOT_PCM_RIGHT)),
++ } }
++ },
++ /* Mic in */
++ {
++ .stream = 1,
++ .exclusive = 1,
++ .r = { {
++ .slots = (1<<AC97_SLOT_MIC),
++ } }
++ },
++};
++
++static int __devinit snd_atmel_ac97_pcm_new(atmel_ac97_t *chip)
++{
++ snd_pcm_t *pcm;
++ int err;
++
++ err = snd_ac97_pcm_assign(chip->ac97_bus,
++ ARRAY_SIZE(atmel_ac97_pcm_defs),
++ atmel_ac97_pcm_defs);
++ if (err)
++ return err;
++
++ err = snd_pcm_new(chip->card, "Atmel-AC97", 0, 1, 1, &pcm);
++ if (err)
++ return err;
++
++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK,
++ &atmel_ac97_playback_ops);
++
++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE,
++ &atmel_ac97_capture_ops);
++
++#ifdef SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS
++ snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
++ &chip->pdev->dev,
++ 128 * 1024, 128 * 1024);
++#endif
++
++ pcm->private_data = chip;
++ pcm->info_flags = 0;
++ strcpy(pcm->name, "Atmel-AC97");
++ chip->pcm = pcm;
++
++ return 0;
++}
++
++/* Mixer part */
++static int snd_atmel_ac97_mixer_new(atmel_ac97_t *chip)
++{
++ int err;
++ ac97_template_t template;
++
++ memset(&template, 0, sizeof(template));
++ template.private_data = chip;
++ err = snd_ac97_mixer(chip->ac97_bus, &template, &chip->ac97);
++
++ return err;
++}
++
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++static irqreturn_t snd_atmel_ac97_interrupt(int irq, void *dev_id,
++ struct pt_regs *regs)
++{
++ atmel_ac97_t *chip = dev_id;
++ unsigned long status;
++
++ status = ac97c_readl(chip, SR);
++
++ if (status & AC97C_SR_CAEVT) {
++ snd_pcm_runtime_t *runtime;
++ int offset, next_period, block_size;
++ unsigned long casr;
++
++ /* FIXME: separate playback from capture */
++ runtime = chip->playback_substream->runtime;
++ block_size = frames_to_bytes(runtime, runtime->period_size);
++
++ casr = ac97c_readl(chip, CASR);
++
++ if (casr & AC97C_CSR_ENDTX) {
++ chip->period++;
++ if (chip->period == runtime->periods)
++ chip->period = 0;
++ next_period = chip->period + 1;
++ if (next_period == runtime->periods)
++ next_period = 0;
++
++ offset = block_size * next_period;
++
++ ac97c_writel(chip, CATNPR,
++ runtime->dma_addr + offset);
++ ac97c_writel(chip, CATNCR, block_size / 4);
++
++ snd_pcm_period_elapsed(chip->playback_substream);
++ }
++ else if (casr & AC97C_CSR_ENDRX) {
++ chip->period++;
++ if (chip->period == runtime->periods)
++ chip->period = 0;
++ next_period = chip->period + 1;
++ if (next_period == runtime->periods)
++ next_period = 0;
++
++ offset = block_size * next_period;
++
++ ac97c_writel(chip, CARNPR,
++ runtime->dma_addr + offset);
++ ac97c_writel(chip, CARNCR, block_size / 4);
++
++ snd_pcm_period_elapsed(chip->capture_substream);
++ } else {
++ snd_printk(KERN_INFO
++ "atmel-ac97: spurious interrupt, status = 0x%08lx\n",
++ (unsigned long)casr);
++ }
++ } else {
++ snd_printk(KERN_INFO
++ "atmel-ac97: spurious interrupt, status = 0x%08lx\n",
++ status);
++ }
++
++ (volatile int)ac97c_readl(chip, SR);
++
++ return IRQ_HANDLED;
++}
++
++#else
++
++static void atmel_ac97_error(struct dma_request *_req)
++{
++ struct dma_request_cyclic *req = to_dma_request_cyclic(_req);
++
++ printk(KERN_WARNING
++ "DMA Controller error, channel %d (AC97C)\n",
++ req->req.channel);
++}
++
++static void atmel_ac97_block_complete(struct dma_request *_req)
++{
++ struct dma_request_cyclic *req = to_dma_request_cyclic(_req);
++ atmel_ac97_t *chip = req->dev_id;
++ if (req->periph_id == chip->dma.tx_periph_id)
++ snd_pcm_period_elapsed(chip->playback_substream);
++ else
++ snd_pcm_period_elapsed(chip->capture_substream);
++}
++
++#endif
++
++/* CODEC part */
++
++static void snd_atmel_ac97_write(ac97_t *ac97, unsigned short reg,
++ unsigned short val)
++{
++ atmel_ac97_t *chip = ac97->private_data;
++ unsigned long word;
++ int timeout = 40;
++
++ word = (reg & 0x7f) << 16 | val;
++
++ do {
++ if (ac97c_readl(chip, COSR) & AC97C_CSR_TXRDY) {
++ ac97c_writel(chip, COTHR, word);
++ return;
++ }
++ udelay(1);
++ } while (--timeout);
++
++ snd_printk(KERN_WARNING "atmel-ac97: codec write timeout\n");
++}
++
++static unsigned short snd_atmel_ac97_read(ac97_t *ac97,
++ unsigned short reg)
++{
++ atmel_ac97_t *chip = ac97->private_data;
++ unsigned long word;
++ int timeout = 40;
++ int write = 10;
++
++ word = (0x80 | (reg & 0x7f)) << 16;
++
++ if ((ac97c_readl(chip, COSR) & AC97C_CSR_RXRDY) != 0)
++ ac97c_readl(chip, CORHR);
++
++retry_write:
++ timeout = 40;
++
++ do {
++ if ((ac97c_readl(chip, COSR) & AC97C_CSR_TXRDY) != 0) {
++ ac97c_writel(chip, COTHR, word);
++ goto read_reg;
++ }
++ mdelay(10);
++ } while (--timeout);
++
++ if (!--write)
++ goto timed_out;
++ goto retry_write;
++
++read_reg:
++ do {
++ if ((ac97c_readl(chip, COSR) & AC97C_CSR_RXRDY) != 0){
++ unsigned short val = ac97c_readl(chip, CORHR);
++ return val;
++ }
++ mdelay(10);
++ } while (--timeout);
++
++ if (!--write)
++ goto timed_out;
++ goto retry_write;
++
++timed_out:
++ snd_printk(KERN_INFO "atmel-ac97: codec read timeout\n");
++ return 0xffff;
++}
++
++static void snd_atmel_ac97_reset(atmel_ac97_t *chip)
++{
++ /* TODO: Perform hard reset of codec as well */
++ ac97c_writel(chip, MR, AC97C_MR_WRST);
++ mdelay(1);
++ ac97c_writel(chip, MR, AC97C_MR_ENA);
++}
++
++static void snd_atmel_ac97_destroy(snd_card_t *card)
++{
++ atmel_ac97_t *chip = get_chip(card);
++
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ if (chip->irq != -1)
++ free_irq(chip->irq, chip);
++#endif
++ if (chip->regs)
++ iounmap(chip->regs);
++
++ if (chip->mck) {
++ clk_disable(chip->mck);
++ clk_put(chip->mck);
++ }
++
++#ifndef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ if (chip->dma.req_tx.req.dmac){
++ dma_release_channel(chip->dma.req_tx.req.dmac,
++ chip->dma.req_tx.req.channel);
++ }
++ if (chip->dma.req_rx.req.dmac) {
++ dma_release_channel(chip->dma.req_rx.req.dmac,
++ chip->dma.req_rx.req.channel);
++ }
++#endif
++}
++
++static int __devinit snd_atmel_ac97_create(snd_card_t *card,
++ struct platform_device *pdev)
++{
++ static ac97_bus_ops_t ops = {
++ .write = snd_atmel_ac97_write,
++ .read = snd_atmel_ac97_read,
++ };
++ atmel_ac97_t *chip = get_chip(card);
++ struct resource *regs;
++ struct clk *mck;
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ int irq;
++#endif
++ int err;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ irq = platform_get_irq(pdev, 0);
++ if (irq < 0)
++ return irq;
++#endif
++
++ mck = clk_get(&pdev->dev, "mck");
++ if (IS_ERR(mck))
++ return PTR_ERR(mck);
++ clk_enable(mck);
++ chip->mck = mck;
++
++ card->private_free = snd_atmel_ac97_destroy;
++
++ spin_lock_init(&chip->lock);
++ chip->card = card;
++ chip->pdev = pdev;
++ chip->irq = -1;
++
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ err = request_irq(irq, snd_atmel_ac97_interrupt, 0,
++ "ac97", chip);
++ if (err) {
++ snd_printk("unable to request IRQ%d\n", irq);
++ return err;
++ }
++ chip->irq = irq;
++#endif
++
++ chip->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!chip->regs)
++ return -ENOMEM;
++
++ snd_card_set_dev(card, &pdev->dev);
++
++ err = snd_ac97_bus(card, 0, &ops, chip, &chip->ac97_bus);
++
++ return err;
++}
++
++static int __devinit snd_atmel_ac97_probe(struct platform_device *pdev)
++{
++ static int dev;
++ snd_card_t *card;
++ atmel_ac97_t *chip;
++ int err;
++ int ch;
++
++ if (dev >= SNDRV_CARDS)
++ return -ENODEV;
++ if (!enable[dev]) {
++ dev++;
++ return -ENOENT;
++ }
++
++ err = -ENOMEM;
++
++ mutex_init(&opened_mutex);
++
++ card = snd_card_new(index[dev], id[dev], THIS_MODULE,
++ sizeof(atmel_ac97_t));
++ if (!card)
++ goto out;
++ chip = get_chip(card);
++
++ err = snd_atmel_ac97_create(card, pdev);
++ if (err)
++ goto out_free_card;
++
++ snd_atmel_ac97_reset(chip);
++
++ err = snd_atmel_ac97_mixer_new(chip);
++ if (err)
++ goto out_free_card;
++
++ err = snd_atmel_ac97_pcm_new(chip);
++ if (err)
++ goto out_free_card;
++
++#ifndef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ /* TODO: Get this information from the platform device */
++ chip->dma.req_tx.req.dmac = find_dma_controller(0);
++ if (!chip->dma.req_tx.req.dmac) {
++ printk(KERN_ERR
++ "atmel-ac97c: No DMA controller for TX, aborting\n");
++ goto out_free_card;
++ }
++ chip->dma.req_rx.req.dmac = find_dma_controller(0);
++ if (!chip->dma.req_rx.req.dmac) {
++ snd_printk(KERN_ERR
++ "atmel-ac97c: No DMA controller available for RX, aborting\n");
++ goto out_free_card;
++ }
++
++ chip->dma.rx_periph_id = 3;
++ chip->dma.tx_periph_id = 4;
++
++ ch = dma_alloc_channel(chip->dma.req_tx.req.dmac);
++ if (ch < 0) {
++ printk(KERN_ERR
++ "atmel-ac97c: Unable to allocate TX DMA channel, aborting\n");
++ goto out_free_card;
++ }
++ chip->dma.req_tx.req.channel = ch;
++ chip->dma.req_tx.width = DMA_WIDTH_16BIT;
++ chip->dma.req_tx.req.block_complete = atmel_ac97_block_complete;
++ chip->dma.req_tx.req.error = atmel_ac97_error;
++
++ ch = dma_alloc_channel(chip->dma.req_rx.req.dmac);
++ if (ch < 0) {
++ snd_printk(KERN_ERR
++ "atmel-ac97c: Unable to allocate RX DMA channel, aborting\n");
++ goto out_free_card;
++ }
++ chip->dma.req_rx.req.channel = ch;
++ chip->dma.req_rx.width = DMA_WIDTH_16BIT;
++ chip->dma.req_rx.req.block_complete = atmel_ac97_block_complete;
++ chip->dma.req_rx.req.error = atmel_ac97_error;
++#endif
++
++ strcpy(card->driver, "ac97c");
++ strcpy(card->shortname, "Atmel-AC97");
++#ifdef CONFIG_SND_ATMEL_AC97C_USE_PDC
++ sprintf(card->longname, "Atmel AVR32 AC97 Controller at 0x%p, irq %i",
++ chip->regs, chip->irq);
++#else
++ sprintf(card->longname, "Atmel AVR32 AC97 Controller at 0x%p, dma rx %i and tx %i",
++ chip->regs, chip->dma.rx_periph_id, chip->dma.tx_periph_id);
++#endif
++
++ err = snd_card_register(card);
++ if (err)
++ goto out_free_card;
++
++ platform_set_drvdata(pdev, card);
++ dev++;
++ return 0;
++
++out_free_card:
++ snd_card_free(card);
++out:
++ return err;
++}
++
++static int __devexit snd_atmel_ac97_remove(struct platform_device *pdev)
++{
++ snd_card_t *card = platform_get_drvdata(pdev);
++
++ snd_card_free(card);
++ platform_set_drvdata(pdev, NULL);
++ return 0;
++}
++
++static struct platform_driver atmel_ac97_driver = {
++ .probe = snd_atmel_ac97_probe,
++ .remove = __devexit_p(snd_atmel_ac97_remove),
++ .driver = {
++ .name = "ac97c",
++ },
++};
++
++static int __init atmel_ac97_init(void)
++{
++ return platform_driver_register(&atmel_ac97_driver);
++}
++
++static void __exit atmel_ac97_exit(void)
++{
++ platform_driver_unregister(&atmel_ac97_driver);
++}
++
++module_init(atmel_ac97_init);
++module_exit(atmel_ac97_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("Driver for Atmel AC97 Controller");
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
+Index: linux-2.6.18-avr32/sound/avr32/ac97c.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/avr32/ac97c.h 2006-11-02 15:56:20.000000000 +0100
+@@ -0,0 +1,71 @@
++/*
++ * Register definitions for the Atmel AC97 Controller.
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __SOUND_AVR32_AC97C_H
++#define __SOUND_AVR32_AC97C_H
++
++#define AC97C_MR 0x08
++#define AC97C_ICA 0x10
++#define AC97C_OCA 0x14
++#define AC97C_CARHR 0x20
++#define AC97C_CATHR 0x24
++#define AC97C_CASR 0x28
++#define AC97C_CAMR 0x2c
++#define AC97C_CBRHR 0x30
++#define AC97C_CBTHR 0x34
++#define AC97C_CBSR 0x38
++#define AC97C_CBMR 0x3c
++#define AC97C_CORHR 0x40
++#define AC97C_COTHR 0x44
++#define AC97C_COSR 0x48
++#define AC97C_COMR 0x4c
++#define AC97C_SR 0x50
++#define AC97C_IER 0x54
++#define AC97C_IDR 0x58
++#define AC97C_IMR 0x5c
++#define AC97C_VERSION 0xfc
++
++#define AC97C_CATPR PDC_TPR
++#define AC97C_CATCR PDC_TCR
++#define AC97C_CATNPR PDC_TNPR
++#define AC97C_CATNCR PDC_TNCR
++#define AC97C_CARPR PDC_RPR
++#define AC97C_CARCR PDC_RCR
++#define AC97C_CARNPR PDC_RNPR
++#define AC97C_CARNCR PDC_RNCR
++#define AC97C_PTCR PDC_PTCR
++
++#define AC97C_MR_ENA (1 << 0)
++#define AC97C_MR_WRST (1 << 1)
++#define AC97C_MR_VRA (1 << 2)
++
++#define AC97C_CSR_TXRDY (1 << 0)
++#define AC97C_CSR_UNRUN (1 << 2)
++#define AC97C_CSR_RXRDY (1 << 4)
++#define AC97C_CSR_ENDTX (1 << 10)
++#define AC97C_CSR_ENDRX (1 << 14)
++
++#define AC97C_CMR_SIZE_20 (0 << 16)
++#define AC97C_CMR_SIZE_18 (1 << 16)
++#define AC97C_CMR_SIZE_16 (2 << 16)
++#define AC97C_CMR_SIZE_10 (3 << 16)
++#define AC97C_CMR_CEM_LITTLE (1 << 18)
++#define AC97C_CMR_CEM_BIG (0 << 18)
++#define AC97C_CMR_CENA (1 << 21)
++#define AC97C_CMR_PDCEN (1 << 22)
++
++#define AC97C_SR_CAEVT (1 << 3)
++
++#define AC97C_CH_ASSIGN(slot, channel) \
++ (AC97C_CHANNEL_##channel << (3 * (AC97_SLOT_##slot - 3)))
++#define AC97C_CHANNEL_NONE 0x0
++#define AC97C_CHANNEL_A 0x1
++#define AC97C_CHANNEL_B 0x2
++
++#endif /* __SOUND_AVR32_AC97C_H */
diff --git a/packages/linux/linux-2.6.18/atmel-husb2-udc-driver.patch b/packages/linux/linux-2.6.18/atmel-husb2-udc-driver.patch
new file mode 100644
index 0000000000..f46a8f1dd8
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-husb2-udc-driver.patch
@@ -0,0 +1,2488 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Fri Nov 18 18:13:25 2005 +0100
+Subject: [PATCH] Driver for the Atmel HUSB2 Device Controller
+
+This adds the driver for the Atmel HUSB2 Device Controller.
+
+---
+
+ drivers/usb/gadget/Kconfig | 10
+ drivers/usb/gadget/Makefile | 1
+ drivers/usb/gadget/gadget_chips.h | 8
+ drivers/usb/gadget/husb2_udc.c | 1998 ++++++++++++++++++++++++++++++++++++++
+ drivers/usb/gadget/husb2_udc.h | 406 +++++++
+ 5 files changed, 2423 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/usb/gadget/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/Kconfig 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/drivers/usb/gadget/Kconfig 2006-11-02 15:56:20.000000000 +0100
+@@ -154,6 +154,16 @@ config USB_LH7A40X
+ default USB_GADGET
+ select USB_GADGET_SELECTED
+
++config USB_GADGET_HUSB2DEV
++ boolean "Atmel HUSB2DEVICE"
++ select USB_GADGET_DUALSPEED
++ depends on AVR32
++
++config USB_HUSB2DEV
++ tristate
++ depends on USB_GADGET_HUSB2DEV
++ default USB_GADGET
++ select USB_GADGET_SELECTED
+
+ config USB_GADGET_OMAP
+ boolean "OMAP USB Device Controller"
+Index: linux-2.6.18-avr32/drivers/usb/gadget/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/Makefile 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/drivers/usb/gadget/Makefile 2006-11-02 15:56:20.000000000 +0100
+@@ -8,6 +8,7 @@ obj-$(CONFIG_USB_GOKU) += goku_udc.o
+ obj-$(CONFIG_USB_OMAP) += omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
+ obj-$(CONFIG_USB_AT91) += at91_udc.o
++obj-$(CONFIG_USB_HUSB2DEV) += husb2_udc.o
+
+ #
+ # USB gadget drivers
+Index: linux-2.6.18-avr32/drivers/usb/gadget/gadget_chips.h
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/gadget_chips.h 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/drivers/usb/gadget/gadget_chips.h 2006-11-02 15:56:20.000000000 +0100
+@@ -75,6 +75,12 @@
+ #define gadget_is_pxa27x(g) 0
+ #endif
+
++#ifdef CONFIG_USB_GADGET_HUSB2DEV
++#define gadget_is_husb2dev(g) !strcmp("husb2_udc", (g)->name)
++#else
++#define gadget_is_husb2dev(g) 0
++#endif
++
+ #ifdef CONFIG_USB_GADGET_S3C2410
+ #define gadget_is_s3c2410(g) !strcmp("s3c2410_udc", (g)->name)
+ #else
+@@ -169,5 +175,7 @@ static inline int usb_gadget_controller_
+ return 0x16;
+ else if (gadget_is_mpc8272(gadget))
+ return 0x17;
++ else if (gadget_is_husb2dev(gadget))
++ return 0x80;
+ return -ENOENT;
+ }
+Index: linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.c 2006-11-02 16:06:40.000000000 +0100
+@@ -0,0 +1,1998 @@
++/*
++ * Driver for the Atmel HUSB2device high speed USB device controller
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#undef DEBUG
++
++#include <linux/config.h>
++#include <linux/clk.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++#include <linux/list.h>
++#include <linux/platform_device.h>
++#include <linux/usb_ch9.h>
++#include <linux/usb_gadget.h>
++#include <linux/dmapool.h>
++#include <linux/delay.h>
++
++#include <asm/io.h>
++
++#include "husb2_udc.h"
++
++#define DRIVER_VERSION "0.9"
++
++#define DMA_ADDR_INVALID (~(dma_addr_t)0)
++
++#define FIFO_IOMEM_ID 0
++#define CTRL_IOMEM_ID 1
++
++#ifdef DEBUG
++#define DBG_ERR 0x0001 /* report all error returns */
++#define DBG_HW 0x0002 /* debug hardware initialization */
++#define DBG_GADGET 0x0004 /* calls to/from gadget driver */
++#define DBG_INT 0x0008 /* interrupts */
++#define DBG_BUS 0x0010 /* report changes in bus state */
++#define DBG_QUEUE 0x0020 /* debug request queue processing */
++#define DBG_FIFO 0x0040 /* debug FIFO contents */
++#define DBG_DMA 0x0080 /* debug DMA handling */
++#define DBG_REQ 0x0100 /* print out queued request length */
++#define DBG_ALL 0xffff
++#define DBG_NONE 0x0000
++
++#define DEBUG_LEVEL (DBG_ERR|DBG_REQ)
++#define DBG(level, fmt, ...) \
++ do { \
++ if ((level) & DEBUG_LEVEL) \
++ printk(KERN_DEBUG "udc: " fmt, ## __VA_ARGS__); \
++ } while (0)
++#else
++#define DBG(level, fmt...)
++#endif
++
++static struct husb2_udc the_udc;
++
++#ifdef CONFIG_DEBUG_FS
++#include <linux/debugfs.h>
++#include <asm/uaccess.h>
++
++static int queue_dbg_open(struct inode *inode, struct file *file)
++{
++ struct husb2_ep *ep = inode->u.generic_ip;
++ struct husb2_request *req, *req_copy;
++ struct list_head *queue_data;
++
++ queue_data = kmalloc(sizeof(*queue_data), GFP_KERNEL);
++ if (!queue_data)
++ return -ENOMEM;
++ INIT_LIST_HEAD(queue_data);
++
++ spin_lock_irq(&ep->udc->lock);
++ list_for_each_entry(req, &ep->queue, queue) {
++ req_copy = kmalloc(sizeof(*req_copy), GFP_ATOMIC);
++ if (!req_copy)
++ goto fail;
++ memcpy(req_copy, req, sizeof(*req_copy));
++ list_add_tail(&req_copy->queue, queue_data);
++ }
++ spin_unlock_irq(&ep->udc->lock);
++
++ file->private_data = queue_data;
++ return 0;
++
++fail:
++ spin_unlock_irq(&ep->udc->lock);
++ list_for_each_entry_safe(req, req_copy, queue_data, queue) {
++ list_del(&req->queue);
++ kfree(req);
++ }
++ kfree(queue_data);
++ return -ENOMEM;
++}
++
++/*
++ * bbbbbbbb llllllll IZS sssss nnnn FDL\n\0
++ *
++ * b: buffer address
++ * l: buffer length
++ * I/i: interrupt/no interrupt
++ * Z/z: zero/no zero
++ * S/s: short ok/short not ok
++ * s: status
++ * n: nr_packets
++ * F/f: submitted/not submitted to FIFO
++ * D/d: using/not using DMA
++ * L/l: last transaction/not last transaction
++ */
++static ssize_t queue_dbg_read(struct file *file, char __user *buf,
++ size_t nbytes, loff_t *ppos)
++{
++ struct list_head *queue = file->private_data;
++ struct husb2_request *req, *tmp_req;
++ size_t len, remaining, actual = 0;
++ char tmpbuf[38];
++
++ if (!access_ok(VERIFY_WRITE, buf, nbytes))
++ return -EFAULT;
++
++ mutex_lock(&file->f_dentry->d_inode->i_mutex);
++ list_for_each_entry_safe(req, tmp_req, queue, queue) {
++ len = snprintf(tmpbuf, sizeof(tmpbuf),
++ "%8p %08x %c%c%c %5d %4u %c%c%c\n",
++ req->req.buf, req->req.length,
++ req->req.no_interrupt ? 'i' : 'I',
++ req->req.zero ? 'Z' : 'z',
++ req->req.short_not_ok ? 's' : 'S',
++ req->req.status,
++ req->nr_pkts,
++ req->submitted ? 'F' : 'f',
++ req->using_dma ? 'D' : 'd',
++ req->last_transaction ? 'L' : 'l');
++ len = min(len, sizeof(tmpbuf));
++ if (len > nbytes)
++ break;
++
++ list_del(&req->queue);
++ kfree(req);
++
++ remaining = __copy_to_user(buf, tmpbuf, len);
++ actual += len - remaining;
++ if (remaining)
++ break;
++
++ nbytes -= len;
++ buf += len;
++ }
++ mutex_unlock(&file->f_dentry->d_inode->i_mutex);
++
++ return actual;
++}
++
++static int queue_dbg_release(struct inode *inode, struct file *file)
++{
++ struct list_head *queue_data = file->private_data;
++ struct husb2_request *req, *tmp_req;
++
++ list_for_each_entry_safe(req, tmp_req, queue_data, queue) {
++ list_del(&req->queue);
++ kfree(req);
++ }
++ kfree(queue_data);
++ return 0;
++}
++
++static int regs_dbg_open(struct inode *inode, struct file *file)
++{
++ struct husb2_udc *udc;
++ unsigned int i;
++ u32 *data;
++ int ret = -ENOMEM;
++
++ mutex_lock(&inode->i_mutex);
++ udc = inode->u.generic_ip;
++ data = kmalloc(inode->i_size, GFP_KERNEL);
++ if (!data)
++ goto out;
++
++ spin_lock_irq(&udc->lock);
++ for (i = 0; i < inode->i_size / 4; i++)
++ data[i] = __raw_readl(udc->regs + i * 4);
++ spin_unlock_irq(&udc->lock);
++
++ file->private_data = data;
++ ret = 0;
++
++out:
++ mutex_unlock(&inode->i_mutex);
++
++ return ret;
++}
++
++static ssize_t regs_dbg_read(struct file *file, char __user *buf,
++ size_t nbytes, loff_t *ppos)
++{
++ struct inode *inode = file->f_dentry->d_inode;
++ int ret;
++
++ mutex_lock(&inode->i_mutex);
++ ret = simple_read_from_buffer(buf, nbytes, ppos,
++ file->private_data,
++ file->f_dentry->d_inode->i_size);
++ mutex_unlock(&inode->i_mutex);
++
++ return ret;
++}
++
++static int regs_dbg_release(struct inode *inode, struct file *file)
++{
++ kfree(file->private_data);
++ return 0;
++}
++
++const struct file_operations queue_dbg_fops = {
++ .owner = THIS_MODULE,
++ .open = queue_dbg_open,
++ .llseek = no_llseek,
++ .read = queue_dbg_read,
++ .release = queue_dbg_release,
++};
++
++const struct file_operations regs_dbg_fops = {
++ .owner = THIS_MODULE,
++ .open = regs_dbg_open,
++ .llseek = generic_file_llseek,
++ .read = regs_dbg_read,
++ .release = regs_dbg_release,
++};
++
++static void husb2_ep_init_debugfs(struct husb2_udc *udc,
++ struct husb2_ep *ep)
++{
++ struct dentry *ep_root;
++
++ ep_root = debugfs_create_dir(ep_name(ep), udc->debugfs_root);
++ if (!ep_root)
++ goto err_root;
++ ep->debugfs_dir = ep_root;
++
++ ep->debugfs_queue = debugfs_create_file("queue", 0400, ep_root,
++ ep, &queue_dbg_fops);
++ if (!ep->debugfs_queue)
++ goto err_queue;
++
++ if (ep_can_dma(ep)) {
++ ep->debugfs_dma_status
++ = debugfs_create_u32("dma_status", 0400, ep_root,
++ &ep->last_dma_status);
++ if (!ep->debugfs_dma_status)
++ goto err_dma_status;
++ }
++
++ return;
++
++err_dma_status:
++ debugfs_remove(ep->debugfs_queue);
++err_queue:
++ debugfs_remove(ep_root);
++err_root:
++ dev_err(&ep->udc->pdev->dev,
++ "failed to create debugfs directory for %s\n", ep_name(ep));
++}
++
++static void husb2_ep_cleanup_debugfs(struct husb2_ep *ep)
++{
++ debugfs_remove(ep->debugfs_queue);
++ debugfs_remove(ep->debugfs_dma_status);
++ debugfs_remove(ep->debugfs_dir);
++ ep->debugfs_dma_status = NULL;
++ ep->debugfs_dir = NULL;
++}
++
++static void husb2_init_debugfs(struct husb2_udc *udc)
++{
++ struct dentry *root, *regs;
++ struct resource *regs_resource;
++
++ root = debugfs_create_dir(udc->gadget.name, NULL);
++ if (IS_ERR(root) || !root)
++ goto err_root;
++ udc->debugfs_root = root;
++
++ regs = debugfs_create_file("regs", 0400, root, udc, &regs_dbg_fops);
++ if (!regs)
++ goto err_regs;
++
++ regs_resource = platform_get_resource(udc->pdev, IORESOURCE_MEM,
++ CTRL_IOMEM_ID);
++ regs->d_inode->i_size = regs_resource->end - regs_resource->start + 1;
++ udc->debugfs_regs = regs;
++
++ husb2_ep_init_debugfs(udc, to_husb2_ep(udc->gadget.ep0));
++
++ return;
++
++err_regs:
++ debugfs_remove(root);
++err_root:
++ udc->debugfs_root = NULL;
++ dev_err(&udc->pdev->dev, "debugfs is not available\n");
++}
++
++static void husb2_cleanup_debugfs(struct husb2_udc *udc)
++{
++ husb2_ep_cleanup_debugfs(to_husb2_ep(udc->gadget.ep0));
++ debugfs_remove(udc->debugfs_regs);
++ debugfs_remove(udc->debugfs_root);
++ udc->debugfs_regs = NULL;
++ udc->debugfs_root = NULL;
++}
++#else
++static inline void husb2_ep_init_debugfs(struct husb2_udc *udc,
++ struct husb2_ep *ep)
++{
++
++}
++
++static inline void husb2_ep_cleanup_debugfs(struct husb2_ep *ep)
++{
++
++}
++
++static inline void husb2_init_debugfs(struct husb2_udc *udc)
++{
++
++}
++
++static inline void husb2_cleanup_debugfs(struct husb2_udc *udc)
++{
++
++}
++#endif
++
++static void copy_to_fifo(void __iomem *fifo, void *buf, int len)
++{
++ unsigned long tmp;
++
++ DBG(DBG_FIFO, "copy to FIFO (len %d):\n", len);
++ for (; len > 0; len -= 4, buf += 4, fifo += 4) {
++ tmp = *(unsigned long *)buf;
++ if (len >= 4) {
++ DBG(DBG_FIFO, " -> %08lx\n", tmp);
++ __raw_writel(tmp, fifo);
++ } else {
++ do {
++ DBG(DBG_FIFO, " -> %02lx\n", tmp >> 24);
++ __raw_writeb(tmp >> 24, fifo);
++ fifo++;
++ tmp <<= 8;
++ } while (--len);
++ break;
++ }
++ }
++}
++
++static void copy_from_fifo(void *buf, void __iomem *fifo, int len)
++{
++ union {
++ unsigned long *w;
++ unsigned char *b;
++ } p;
++ unsigned long tmp;
++
++ DBG(DBG_FIFO, "copy from FIFO (len %d):\n", len);
++ for (p.w = buf; len > 0; len -= 4, p.w++, fifo += 4) {
++ if (len >= 4) {
++ tmp = __raw_readl(fifo);
++ *p.w = tmp;
++ DBG(DBG_FIFO, " -> %08lx\n", tmp);
++ } else {
++ do {
++ tmp = __raw_readb(fifo);
++ *p.b = tmp;
++ DBG(DBG_FIFO, " -> %02lx\n", tmp);
++ fifo++, p.b++;
++ } while (--len);
++ }
++ }
++}
++
++static void next_fifo_transaction(struct husb2_ep *ep,
++ struct husb2_request *req)
++{
++ unsigned int transaction_len;
++
++ transaction_len = req->req.length - req->req.actual;
++ req->last_transaction = 1;
++ if (transaction_len > ep->ep.maxpacket) {
++ transaction_len = ep->ep.maxpacket;
++ req->last_transaction = 0;
++ } else if (transaction_len == ep->ep.maxpacket
++ && req->req.zero) {
++ req->last_transaction = 0;
++ }
++ DBG(DBG_QUEUE, "%s: submit_transaction, req %p (length %d)%s\n",
++ ep_name(ep), req, transaction_len,
++ req->last_transaction ? ", done" : "");
++
++ copy_to_fifo(ep->fifo, req->req.buf + req->req.actual, transaction_len);
++ husb2_ep_writel(ep, SET_STA, HUSB2_BIT(TX_PK_RDY));
++ req->req.actual += transaction_len;
++}
++
++static void submit_request(struct husb2_ep *ep, struct husb2_request *req)
++{
++ DBG(DBG_QUEUE, "%s: submit_request: req %p (length %d)\n",
++ ep_name(ep), req, req->req.length);
++
++ req->req.actual = 0;
++ req->submitted = 1;
++
++ if (req->using_dma) {
++ if (req->req.length == 0) {
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_PK_RDY));
++ } else {
++ husb2_ep_writel(ep, CTL_DIS, HUSB2_BIT(TX_PK_RDY));
++ husb2_dma_writel(ep, NXT_DSC,
++ req->packet[0].desc_dma);
++ husb2_dma_writel(ep, CONTROL, HUSB2_BIT(DMA_LINK));
++ }
++ } else {
++ next_fifo_transaction(ep, req);
++ if (req->last_transaction)
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_COMPLETE));
++ else
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_PK_RDY));
++ }
++}
++
++static void submit_next_request(struct husb2_ep *ep)
++{
++ struct husb2_request *req;
++
++ if (list_empty(&ep->queue)) {
++ husb2_ep_writel(ep, CTL_DIS, (HUSB2_BIT(TX_PK_RDY)
++ | HUSB2_BIT(RX_BK_RDY)));
++ return;
++ }
++
++ req = list_entry(ep->queue.next, struct husb2_request, queue);
++ if (!req->submitted)
++ submit_request(ep, req);
++}
++
++static void send_status(struct husb2_udc *udc, struct husb2_ep *ep)
++{
++ ep->state = STATUS_STAGE_IN;
++ husb2_ep_writel(ep, SET_STA, HUSB2_BIT(TX_PK_RDY));
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_COMPLETE));
++}
++
++static void receive_data(struct husb2_ep *ep)
++{
++ struct husb2_udc *udc = ep->udc;
++ struct husb2_request *req;
++ unsigned long status;
++ unsigned int bytecount, nr_busy;
++ int is_complete = 0;
++
++ status = husb2_ep_readl(ep, STA);
++ nr_busy = HUSB2_BFEXT(BUSY_BANKS, status);
++
++ DBG(DBG_QUEUE, "receive data: nr_busy=%u\n", nr_busy);
++
++ while (nr_busy > 0) {
++ if (list_empty(&ep->queue)) {
++ husb2_ep_writel(ep, CTL_DIS, HUSB2_BIT(RX_BK_RDY));
++ break;
++ }
++ req = list_entry(ep->queue.next,
++ struct husb2_request, queue);
++
++ bytecount = HUSB2_BFEXT(BYTE_COUNT, status);
++
++ if (status & (1 << 31))
++ is_complete = 1;
++ if (req->req.actual + bytecount >= req->req.length) {
++ is_complete = 1;
++ bytecount = req->req.length - req->req.actual;
++ }
++
++ copy_from_fifo(req->req.buf + req->req.actual,
++ ep->fifo, bytecount);
++ req->req.actual += bytecount;
++
++ husb2_ep_writel(ep, CLR_STA, HUSB2_BIT(RX_BK_RDY));
++
++ if (is_complete) {
++ DBG(DBG_QUEUE, "%s: request done\n", ep_name(ep));
++ req->req.status = 0;
++ list_del_init(&req->queue);
++ req->req.complete(&ep->ep, &req->req);
++ }
++
++ status = husb2_ep_readl(ep, STA);
++ nr_busy = HUSB2_BFEXT(BUSY_BANKS, status);
++
++ if (is_complete && ep_is_control(ep)) {
++ BUG_ON(nr_busy != 0);
++ send_status(udc, ep);
++ break;
++ }
++ }
++}
++
++static void request_complete(struct husb2_ep *ep,
++ struct husb2_request *req,
++ int status)
++{
++ struct husb2_udc *udc = ep->udc;
++ int i;
++
++ BUG_ON(!list_empty(&req->queue));
++
++ if (req->req.status == -EINPROGRESS)
++ req->req.status = status;
++
++ if (req->packet) {
++ for (i = 0; i < req->nr_pkts; i++)
++ dma_pool_free(udc->desc_pool, req->packet[i].desc,
++ req->packet[i].desc_dma);
++ kfree(req->packet);
++ req->packet = NULL;
++ dma_unmap_single(&udc->pdev->dev,
++ req->req.dma, req->req.length,
++ (ep_is_in(ep)
++ ? DMA_TO_DEVICE : DMA_FROM_DEVICE));
++ req->req.dma = DMA_ADDR_INVALID;
++ }
++
++ DBG(DBG_GADGET | DBG_REQ,
++ "%s: req %p complete: status %d, actual %u\n",
++ ep_name(ep), req, req->req.status, req->req.actual);
++ req->req.complete(&ep->ep, &req->req);
++}
++
++static void request_complete_list(struct husb2_ep *ep,
++ struct list_head *list,
++ int status)
++{
++ struct husb2_request *req, *tmp_req;
++
++ list_for_each_entry_safe(req, tmp_req, list, queue) {
++ list_del_init(&req->queue);
++ request_complete(ep, req, status);
++ }
++}
++
++static int husb2_ep_enable(struct usb_ep *_ep,
++ const struct usb_endpoint_descriptor *desc)
++{
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++ struct husb2_udc *udc = ep->udc;
++ unsigned long flags, ept_cfg, maxpacket;
++
++ DBG(DBG_GADGET, "%s: ep_enable: desc=%p\n", ep_name(ep), desc);
++
++ maxpacket = le16_to_cpu(desc->wMaxPacketSize);
++
++ if (ep->index == 0
++ || desc->bDescriptorType != USB_DT_ENDPOINT
++ || ((desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK)
++ != ep->index)
++ || maxpacket == 0
++ || maxpacket > ep->fifo_size) {
++ DBG(DBG_ERR, "ep_enable: Invalid argument");
++ return -EINVAL;
++ }
++
++ if (((desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
++ == USB_ENDPOINT_XFER_ISOC)
++ && !(ep->capabilities & HUSB2_EP_CAP_ISOC)) {
++ DBG(DBG_ERR, "ep_enable: %s is not isoc capable\n",
++ ep_name(ep));
++ return -EINVAL;
++ }
++
++ if (maxpacket <= 8)
++ ept_cfg = HUSB2_BF(EPT_SIZE, HUSB2_EPT_SIZE_8);
++ else
++ /* LSB is bit 1, not 0 */
++ ept_cfg = HUSB2_BF(EPT_SIZE, fls(maxpacket - 1) - 3);
++ DBG(DBG_HW, "%s: EPT_SIZE = %lu (maxpacket = %lu)\n",
++ ep_name(ep), ept_cfg, maxpacket);
++
++ if ((desc->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
++ ept_cfg |= HUSB2_BIT(EPT_DIR);
++
++ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ ept_cfg |= HUSB2_BF(EPT_TYPE, HUSB2_EPT_TYPE_CONTROL);
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ ept_cfg |= HUSB2_BF(EPT_TYPE, HUSB2_EPT_TYPE_ISO);
++ break;
++ case USB_ENDPOINT_XFER_BULK:
++ ept_cfg |= HUSB2_BF(EPT_TYPE, HUSB2_EPT_TYPE_BULK);
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ ept_cfg |= HUSB2_BF(EPT_TYPE, HUSB2_EPT_TYPE_INT);
++ break;
++ }
++ ept_cfg |= HUSB2_BF(BK_NUMBER, ep->nr_banks);
++
++ spin_lock_irqsave(&ep->udc->lock, flags);
++
++ if (ep->desc) {
++ spin_unlock_irqrestore(&ep->udc->lock, flags);
++ DBG(DBG_ERR, "ep%d already enabled\n", ep->index);
++ return -EBUSY;
++ }
++
++ ep->desc = desc;
++ ep->ep.maxpacket = maxpacket;
++
++ husb2_ep_writel(ep, CFG, ept_cfg);
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(EPT_ENABLE));
++
++ if (ep_can_dma(ep)) {
++ husb2_writel(udc, INT_ENB,
++ (husb2_readl(udc, INT_ENB)
++ | HUSB2_BF(EPT_INT, 1 << ep->index)
++ | HUSB2_BF(DMA_INT, 1 << ep->index)));
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(AUTO_VALID));
++ } else {
++ husb2_writel(udc, INT_ENB,
++ (husb2_readl(udc, INT_ENB)
++ | HUSB2_BF(EPT_INT, 1 << ep->index)));
++ }
++
++ spin_unlock_irqrestore(&udc->lock, flags);
++
++ DBG(DBG_HW, "EPT_CFG%d after init: %#08lx\n", ep->index,
++ (unsigned long)husb2_ep_readl(ep, CFG));
++ DBG(DBG_HW, "INT_ENB after init: %#08lx\n",
++ (unsigned long)husb2_readl(udc, INT_ENB));
++
++ husb2_ep_init_debugfs(udc, ep);
++
++ return 0;
++}
++
++static int husb2_ep_disable(struct usb_ep *_ep)
++{
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++ struct husb2_udc *udc = ep->udc;
++ LIST_HEAD(req_list);
++ unsigned long flags;
++
++ DBG(DBG_GADGET, "ep_disable: %s\n", ep_name(ep));
++
++ husb2_ep_cleanup_debugfs(ep);
++
++ spin_lock_irqsave(&udc->lock, flags);
++
++ if (!ep->desc) {
++ spin_unlock_irqrestore(&udc->lock, flags);
++ DBG(DBG_ERR, "ep_disable: %s not enabled\n",
++ ep_name(ep));
++ return -EINVAL;
++ }
++ ep->desc = NULL;
++
++ list_splice_init(&ep->queue, &req_list);
++ if (ep_can_dma(ep)) {
++ husb2_dma_writel(ep, CONTROL, 0);
++ husb2_dma_writel(ep, ADDRESS, 0);
++ husb2_dma_readl(ep, STATUS);
++ }
++ husb2_ep_writel(ep, CTL_DIS, HUSB2_BIT(EPT_ENABLE));
++ husb2_writel(udc, INT_ENB, (husb2_readl(udc, INT_ENB)
++ & ~HUSB2_BF(EPT_INT, 1 << ep->index)));
++
++ spin_unlock_irqrestore(&udc->lock, flags);
++
++ request_complete_list(ep, &req_list, -ESHUTDOWN);
++
++ return 0;
++}
++
++static struct usb_request *
++husb2_ep_alloc_request(struct usb_ep *_ep, unsigned gfp_flags)
++{
++ struct husb2_request *req;
++
++ DBG(DBG_GADGET, "ep_alloc_request: %p, 0x%x\n", _ep, gfp_flags);
++
++ req = kzalloc(sizeof(*req), gfp_flags);
++ if (!req)
++ return NULL;
++
++ INIT_LIST_HEAD(&req->queue);
++ req->req.dma = DMA_ADDR_INVALID;
++
++ return &req->req;
++}
++
++static void
++husb2_ep_free_request(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct husb2_request *req = to_husb2_req(_req);
++
++ DBG(DBG_GADGET, "ep_free_request: %p, %p\n", _ep, _req);
++
++ kfree(req);
++}
++
++static void *husb2_ep_alloc_buffer(struct usb_ep *_ep, unsigned bytes,
++ dma_addr_t *dma, unsigned gfp_flags)
++{
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++ void *buf;
++
++ /*
++ * We depend on kmalloc() returning cache-aligned memory. This
++ * is normally guaranteed as long as we allocate a whole
++ * cacheline or more.
++ *
++ * When CONFIG_DEBUG_SLAB is enabled, however, the slab
++ * allocator inserts red zones and ownership information,
++ * causing the slab objects to be misaligned.
++ *
++ * One alternative would be to use dma_alloc_coherent, but
++ * that would make us unable to allocate anything less than a
++ * page at a time.
++ */
++#ifdef CONFIG_DEBUG_SLAB
++# error The HUSB2 UDC driver breaks with SLAB debugging enabled
++#endif
++
++ if (bytes < L1_CACHE_BYTES)
++ bytes = L1_CACHE_BYTES;
++
++ buf = kmalloc(bytes, gfp_flags);
++
++ /*
++ * Seems like we have to map the buffer any chance we get.
++ * ether.c wants us to initialize the dma member of a
++ * different request than the one receiving the buffer, so one
++ * never knows...
++ *
++ * Ah, screw it. The ether driver is probably wrong, and this
++ * is not the right place to do the mapping. The driver
++ * shouldn't mess with our DMA mappings anyway.
++ */
++ *dma = DMA_ADDR_INVALID;
++
++ DBG(DBG_GADGET, "ep_alloc_buffer: %s, %u, 0x%x -> %p\n",
++ ep_name(ep), bytes, gfp_flags, buf);
++
++ return buf;
++}
++
++static void husb2_ep_free_buffer(struct usb_ep *_ep, void *buf,
++ dma_addr_t dma, unsigned bytes)
++{
++ DBG(DBG_GADGET, "ep_free_buffer: %s, buf %p (size %u)\n",
++ _ep->name, buf, bytes);
++ kfree(buf);
++}
++
++static int queue_dma(struct husb2_udc *udc, struct husb2_ep *ep,
++ struct husb2_request *req, unsigned int direction,
++ gfp_t gfp_flags)
++{
++ struct husb2_packet *pkt, *prev_pkt;
++ unsigned int pkt_size, nr_pkts, i;
++ unsigned int residue;
++ dma_addr_t addr;
++ unsigned long flags;
++ u32 ctrl;
++
++ req->using_dma = 1;
++
++ if (req->req.length == 0) {
++ if (!req->req.zero)
++ return -EINVAL;
++ req->send_zlp = 1;
++
++ spin_lock_irqsave(&udc->lock, flags);
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_PK_RDY));
++ list_add_tail(&req->queue, &ep->queue);
++ spin_unlock_irqrestore(&udc->lock, flags);
++
++ return 0;
++ }
++
++ if (req->req.dma == DMA_ADDR_INVALID)
++ req->req.dma = dma_map_single(&udc->pdev->dev,
++ req->req.buf,
++ req->req.length,
++ direction);
++ else
++ dma_sync_single_for_device(&udc->pdev->dev,
++ req->req.dma,
++ req->req.length,
++ direction);
++
++ pkt_size = ep->ep.maxpacket;
++ nr_pkts = req->req.length / pkt_size;
++ residue = req->req.length % pkt_size;
++ if (residue != 0)
++ nr_pkts++;
++ else if (req->req.zero && ep_is_in(ep))
++ /* ensure last packet is short */
++ req->send_zlp = 1;
++
++ req->nr_pkts = nr_pkts;
++
++ req->packet = kzalloc(sizeof(*req->packet) * nr_pkts, gfp_flags);
++ if (!req->packet)
++ goto out_of_memory;
++
++ addr = req->req.dma;
++ ctrl = (HUSB2_BF(DMA_BUF_LEN, pkt_size)
++ | HUSB2_BIT(DMA_CH_EN) | HUSB2_BIT(DMA_LINK)
++ | HUSB2_BIT(DMA_END_TR_EN) | HUSB2_BIT(DMA_END_TR_IE));
++ prev_pkt = NULL;
++ pkt = NULL;
++ DBG(DBG_DMA, "DMA descriptors:\n");
++ for (i = 0; i < nr_pkts; i++) {
++ pkt = &req->packet[i];
++ pkt->desc = dma_pool_alloc(udc->desc_pool, gfp_flags,
++ &pkt->desc_dma);
++ if (!pkt->desc)
++ goto out_of_memory;
++
++ if (prev_pkt) {
++ prev_pkt->desc->next = pkt->desc_dma;
++ DBG(DBG_DMA, "[%d] n%08x a%08x c%08x\n",
++ i - 1, prev_pkt->desc->next, prev_pkt->desc->addr,
++ prev_pkt->desc->ctrl);
++ }
++ prev_pkt = pkt;
++
++ pkt->desc->addr = addr;
++ pkt->desc->ctrl = ctrl;
++ addr += pkt_size;
++ }
++
++ /* special care is needed for the last packet... */
++ ctrl = (HUSB2_BIT(DMA_CH_EN)
++ | HUSB2_BIT(DMA_END_TR_EN) | HUSB2_BIT(DMA_END_TR_IE)
++ | HUSB2_BIT(DMA_END_BUF_IE));
++ if (ep_is_in(ep))
++ ctrl |= HUSB2_BIT(DMA_END_BUF_EN);
++ if (req->req.zero || residue)
++ ctrl |= HUSB2_BF(DMA_BUF_LEN, residue);
++ else
++ ctrl |= HUSB2_BF(DMA_BUF_LEN, pkt_size);
++ pkt->desc->ctrl = ctrl;
++
++ DBG(DBG_DMA, "[%d] n%08x a%08x c%08x\n",
++ i - 1, prev_pkt->desc->next, prev_pkt->desc->addr,
++ prev_pkt->desc->ctrl);
++
++ /* Add this request to the queue and try to chain the DMA descriptors */
++ spin_lock_irqsave(&udc->lock, flags);
++
++ /* If the DMA controller is idle, start it */
++ if (list_empty(&ep->queue)) {
++ husb2_dma_writel(ep, NXT_DSC, req->packet[0].desc_dma);
++ husb2_dma_writel(ep, CONTROL, HUSB2_BIT(DMA_LINK));
++ }
++
++ list_add_tail(&req->queue, &ep->queue);
++
++ spin_unlock_irqrestore(&udc->lock, flags);
++
++ return 0;
++
++out_of_memory:
++ printk(KERN_ERR "ERROR: Could not allocate DMA memory for endpoint %s\n",
++ ep_name(ep));
++ if (req->packet) {
++ for (i = 0; i < nr_pkts; i++)
++ if (req->packet[i].desc)
++ dma_pool_free(udc->desc_pool,
++ req->packet[i].desc,
++ req->packet[i].desc_dma);
++ kfree(req->packet);
++ }
++
++ return -ENOMEM;
++}
++
++static int husb2_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
++ gfp_t gfp_flags)
++{
++ struct husb2_request *req = to_husb2_req(_req);
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++ struct husb2_udc *udc = ep->udc;
++ unsigned long flags;
++ int direction_in = 0;
++
++ DBG(DBG_GADGET | DBG_QUEUE | DBG_REQ,
++ "%s: queue req %p, len %u\n", ep_name(ep), req, _req->length);
++
++ if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN)
++ return -ESHUTDOWN;
++ if (!ep->desc)
++ return -ENODEV;
++
++ req->nr_pkts = 0;
++ req->submitted = 0;
++ req->using_dma = 0;
++ req->last_transaction = 0;
++ req->send_zlp = 0;
++
++ BUG_ON(req->packet);
++
++ if (ep_is_in(ep)
++ || (ep_is_control(ep) && (ep->state == DATA_STAGE_IN
++ || ep->state == STATUS_STAGE_IN)))
++ direction_in = 1;
++
++ _req->status = -EINPROGRESS;
++ _req->actual = 0;
++
++ if (ep_can_dma(ep)) {
++ return queue_dma(udc, ep, req, (direction_in
++ ? DMA_TO_DEVICE
++ : DMA_FROM_DEVICE),
++ gfp_flags);
++ } else {
++ spin_lock_irqsave(&udc->lock, flags);
++ list_add_tail(&req->queue, &ep->queue);
++
++ if (direction_in)
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_PK_RDY));
++ else
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(RX_BK_RDY));
++ spin_unlock_irqrestore(&udc->lock, flags);
++ }
++
++ return 0;
++}
++
++static void husb2_update_req(struct husb2_ep *ep, struct husb2_request *req,
++ u32 status)
++{
++ struct husb2_dma_desc *desc;
++ dma_addr_t from;
++ dma_addr_t addr;
++ size_t size;
++ unsigned int i;
++
++ addr = husb2_dma_readl(ep, ADDRESS);
++ req->req.actual = 0;
++
++ for (i = 0; i < req->nr_pkts; i++) {
++ desc = req->packet[i].desc;
++ from = desc->addr;
++ size = HUSB2_BFEXT(DMA_BUF_LEN, desc->ctrl);
++
++ req->req.actual += size;
++
++ DBG(DBG_DMA, " from=%#08x, size=%#zx\n", from, size);
++
++ if (from <= addr && (from + size) >= addr)
++ break;
++ }
++
++ req->req.actual -= HUSB2_BFEXT(DMA_BUF_LEN, status);
++}
++
++static int stop_dma(struct husb2_ep *ep, u32 *pstatus)
++{
++ unsigned int timeout;
++ u32 status;
++
++ /*
++ * Stop the DMA controller. When writing both CH_EN
++ * and LINK to 0, the other bits are not affected.
++ */
++ husb2_dma_writel(ep, CONTROL, 0);
++
++ /* Wait for the FIFO to empty */
++ for (timeout = 40; timeout; --timeout) {
++ status = husb2_dma_readl(ep, STATUS);
++ if (!(status & HUSB2_BIT(DMA_CH_EN)))
++ break;
++ udelay(1);
++ }
++
++ if (pstatus)
++ *pstatus = status;
++
++ if (timeout == 0) {
++ dev_err(&ep->udc->pdev->dev,
++ "%s: timed out waiting for DMA FIFO to empty\n",
++ ep_name(ep));
++ return -ETIMEDOUT;
++ }
++
++ return 0;
++}
++
++static int husb2_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++ struct husb2_udc *udc = ep->udc;
++ struct husb2_request *req = to_husb2_req(_req);
++ unsigned long flags;
++ u32 status;
++
++ DBG(DBG_GADGET | DBG_QUEUE, "ep_dequeue: %s, req %p\n", ep_name(ep), req);
++
++ spin_lock_irqsave(&udc->lock, flags);
++
++ if (req->using_dma) {
++ /*
++ * If this request is currently being transferred,
++ * stop the DMA controller and reset the FIFO.
++ */
++ if (ep->queue.next == &req->queue) {
++ status = husb2_dma_readl(ep, STATUS);
++ if (status & HUSB2_BIT(DMA_CH_EN))
++ stop_dma(ep, &status);
++
++#ifdef CONFIG_DEBUG_FS
++ ep->last_dma_status = status;
++#endif
++
++ husb2_writel(udc, EPT_RST,
++ 1 << ep_index(ep));
++
++ husb2_update_req(ep, req, status);
++ }
++ }
++
++ /*
++ * Errors should stop the queue from advancing until the
++ * completion function returns.
++ */
++ list_del_init(&req->queue);
++ spin_unlock_irqrestore(&udc->lock, flags);
++
++ request_complete(ep, req, -ECONNRESET);
++
++ /* Process the next request if any */
++ spin_lock_irqsave(&udc->lock, flags);
++ submit_next_request(ep);
++ spin_unlock_irqrestore(&udc->lock, flags);
++
++ return 0;
++}
++
++static int husb2_ep_set_halt(struct usb_ep *_ep, int value)
++{
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++ struct husb2_udc *udc = ep->udc;
++ unsigned long flags;
++ int ret = 0;
++
++ DBG(DBG_GADGET, "endpoint %s: %s HALT\n", ep_name(ep),
++ value ? "set" : "clear");
++
++ if (!ep->desc) {
++ DBG(DBG_ERR, "Attempted to halt uninitialized ep %s\n",
++ ep_name(ep));
++ return -ENODEV;
++ }
++ if (ep_is_isochronous(ep)) {
++ DBG(DBG_ERR, "Attempted to halt isochronous ep %s\n",
++ ep_name(ep));
++ return -ENOTTY;
++ }
++
++ spin_lock_irqsave(&udc->lock, flags);
++
++ /*
++ * We can't halt IN endpoints while there are still data to be
++ * transferred
++ */
++ if (!list_empty(&ep->queue)
++ || ((value && ep_is_in(ep)
++ && (husb2_ep_readl(ep, STA)
++ & HUSB2_BF(BUSY_BANKS, -1L))))) {
++ ret = -EAGAIN;
++ } else {
++ if (value)
++ husb2_ep_writel(ep, SET_STA, HUSB2_BIT(FORCE_STALL));
++ else
++ husb2_ep_writel(ep, CLR_STA, (HUSB2_BIT(FORCE_STALL)
++ | HUSB2_BIT(TOGGLE_SEQ)));
++ husb2_ep_readl(ep, STA);
++ }
++
++ spin_unlock_irqrestore(&udc->lock, flags);
++
++ return ret;
++}
++
++static int husb2_ep_fifo_status(struct usb_ep *_ep)
++{
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++
++ return HUSB2_BFEXT(BYTE_COUNT, husb2_ep_readl(ep, STA));
++}
++
++static void husb2_ep_fifo_flush(struct usb_ep *_ep)
++{
++ struct husb2_ep *ep = to_husb2_ep(_ep);
++ struct husb2_udc *udc = ep->udc;
++
++ husb2_writel(udc, EPT_RST, 1 << ep->index);
++}
++
++struct usb_ep_ops husb2_ep_ops = {
++ .enable = husb2_ep_enable,
++ .disable = husb2_ep_disable,
++ .alloc_request = husb2_ep_alloc_request,
++ .free_request = husb2_ep_free_request,
++ .alloc_buffer = husb2_ep_alloc_buffer,
++ .free_buffer = husb2_ep_free_buffer,
++ .queue = husb2_ep_queue,
++ .dequeue = husb2_ep_dequeue,
++ .set_halt = husb2_ep_set_halt,
++ .fifo_status = husb2_ep_fifo_status,
++ .fifo_flush = husb2_ep_fifo_flush,
++};
++
++static int husb2_udc_get_frame(struct usb_gadget *gadget)
++{
++ struct husb2_udc *udc = to_husb2_udc(gadget);
++
++ return HUSB2_BFEXT(FRAME_NUMBER, husb2_readl(udc, FNUM));
++}
++
++struct usb_gadget_ops husb2_udc_ops = {
++ .get_frame = husb2_udc_get_frame,
++};
++
++#define EP(nam, type, idx, caps) { \
++ .ep = { \
++ .ops = &husb2_ep_ops, \
++ .name = nam, \
++ .maxpacket = type##_FIFO_SIZE, \
++ }, \
++ .udc = &the_udc, \
++ .queue = LIST_HEAD_INIT(husb2_ep[idx].queue), \
++ .fifo_size = type##_FIFO_SIZE, \
++ .nr_banks = type##_NR_BANKS, \
++ .index = idx, \
++ .capabilities = caps, \
++}
++
++static struct husb2_ep husb2_ep[] = {
++ EP("ep0", EP0, 0, 0),
++ EP("ep1in-bulk", BULK, 1, HUSB2_EP_CAP_DMA),
++ EP("ep2out-bulk", BULK, 2, HUSB2_EP_CAP_DMA),
++ EP("ep3in-iso", ISO, 3, HUSB2_EP_CAP_DMA | HUSB2_EP_CAP_ISOC),
++ EP("ep4out-iso", ISO, 4, HUSB2_EP_CAP_DMA | HUSB2_EP_CAP_ISOC),
++ EP("ep5in-int", INT, 5, HUSB2_EP_CAP_DMA),
++ EP("ep6out-int", INT, 6, HUSB2_EP_CAP_DMA),
++};
++#undef EP
++
++static struct usb_endpoint_descriptor husb2_ep0_desc = {
++ .bLength = USB_DT_ENDPOINT_SIZE,
++ .bDescriptorType = USB_DT_ENDPOINT,
++ .bEndpointAddress = 0,
++ .bmAttributes = USB_ENDPOINT_XFER_CONTROL,
++ .wMaxPacketSize = __constant_cpu_to_le16(64),
++ /* FIXME: I have no idea what to put here */
++ .bInterval = 1,
++};
++
++static void nop_release(struct device *dev)
++{
++
++}
++
++static struct husb2_udc the_udc = {
++ .gadget = {
++ .ops = &husb2_udc_ops,
++ .ep0 = &husb2_ep[0].ep,
++ .ep_list = LIST_HEAD_INIT(the_udc.gadget.ep_list),
++ .is_dualspeed = 1,
++ .name = "husb2_udc",
++ .dev = {
++ .bus_id = "gadget",
++ .release = nop_release,
++ },
++ },
++
++ .lock = SPIN_LOCK_UNLOCKED,
++};
++
++static void udc_enable(struct husb2_udc *udc)
++{
++ struct husb2_ep *ep0 = &husb2_ep[0];
++
++ /* Enable the controller */
++ husb2_writel(udc, CTRL, HUSB2_BIT(EN_HUSB2));
++
++ /* Reset all endpoints and enable basic interrupts */
++ husb2_writel(udc, EPT_RST, ~0UL);
++ husb2_writel(udc, INT_ENB, (HUSB2_BIT(DET_SUSPEND)
++ | HUSB2_BIT(END_OF_RESET)
++ | HUSB2_BIT(END_OF_RESUME)));
++
++ /* Configure endpoint 0 */
++ ep0->desc = &husb2_ep0_desc;
++
++ husb2_writel(udc, EPT_RST, 1 << 0);
++ husb2_ep_writel(ep0, CTL_ENB, HUSB2_BIT(EPT_ENABLE));
++ husb2_ep_writel(ep0, CFG, (HUSB2_BF(EPT_SIZE, EP0_EPT_SIZE)
++ | HUSB2_BF(EPT_TYPE, HUSB2_EPT_TYPE_CONTROL)
++ | HUSB2_BF(BK_NUMBER, HUSB2_BK_NUMBER_ONE)));
++
++ husb2_ep_writel(ep0, CTL_ENB, HUSB2_BIT(RX_SETUP));
++ husb2_writel(udc, INT_ENB, (husb2_readl(udc, INT_ENB)
++ | HUSB2_BF(EPT_INT, 1)));
++
++ if (!(husb2_ep_readl(ep0, CFG) & HUSB2_BIT(EPT_MAPPED)))
++ dev_warn(&udc->pdev->dev,
++ "WARNING: EP0 configuration is invalid!\n");
++}
++
++static void udc_disable(struct husb2_udc *udc)
++{
++ udc->gadget.speed = USB_SPEED_UNKNOWN;
++
++ husb2_writel(udc, CTRL, 0);
++}
++
++/*
++ * Called with interrupts disabled and udc->lock held.
++ */
++static void reset_all_endpoints(struct husb2_udc *udc)
++{
++ struct husb2_ep *ep;
++ struct husb2_request *req, *tmp_req;
++
++ husb2_writel(udc, EPT_RST, ~0UL);
++
++ ep = to_husb2_ep(udc->gadget.ep0);
++ list_for_each_entry_safe(req, tmp_req, &ep->queue, queue) {
++ list_del_init(&req->queue);
++ request_complete(ep, req, -ECONNRESET);
++ }
++ BUG_ON(!list_empty(&ep->queue));
++
++ list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
++ if (ep->desc)
++ husb2_ep_disable(&ep->ep);
++ }
++}
++
++static struct husb2_ep *get_ep_by_addr(struct husb2_udc *udc, u16 wIndex)
++{
++ struct husb2_ep *ep;
++
++ if ((wIndex & USB_ENDPOINT_NUMBER_MASK) == 0)
++ return to_husb2_ep(udc->gadget.ep0);
++
++ list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) {
++ u8 bEndpointAddress;
++
++ if (!ep->desc)
++ continue;
++ bEndpointAddress = ep->desc->bEndpointAddress;
++ if ((wIndex ^ bEndpointAddress) & USB_DIR_IN)
++ continue;
++ if ((wIndex & USB_ENDPOINT_NUMBER_MASK)
++ == (bEndpointAddress & USB_ENDPOINT_NUMBER_MASK))
++ return ep;
++ }
++
++ return NULL;
++}
++
++/* Called with interrupts disabled and udc->lock held */
++static inline void set_protocol_stall(struct husb2_udc *udc,
++ struct husb2_ep *ep)
++{
++ husb2_ep_writel(ep, SET_STA, HUSB2_BIT(FORCE_STALL));
++ ep->state = WAIT_FOR_SETUP;
++}
++
++static inline int is_stalled(struct husb2_udc *udc, struct husb2_ep *ep)
++{
++ if (husb2_ep_readl(ep, STA) & HUSB2_BIT(FORCE_STALL))
++ return 1;
++ return 0;
++}
++
++static inline void set_address(struct husb2_udc *udc, unsigned int addr)
++{
++ u32 regval;
++
++ DBG(DBG_BUS, "setting address %u...\n", addr);
++ regval = husb2_readl(udc, CTRL);
++ regval = HUSB2_BFINS(DEV_ADDR, addr, regval);
++ husb2_writel(udc, CTRL, regval);
++}
++
++static int handle_ep0_setup(struct husb2_udc *udc, struct husb2_ep *ep,
++ struct usb_ctrlrequest *crq)
++{
++ switch (crq->bRequest) {
++ case USB_REQ_GET_STATUS: {
++ u16 status;
++
++ if (crq->bRequestType == (USB_DIR_IN | USB_RECIP_DEVICE)) {
++ /* Self-powered, no remote wakeup */
++ status = __constant_cpu_to_le16(1 << 0);
++ } else if (crq->bRequestType
++ == (USB_DIR_IN | USB_RECIP_INTERFACE)) {
++ status = __constant_cpu_to_le16(0);
++ } else if (crq->bRequestType
++ == (USB_DIR_IN | USB_RECIP_ENDPOINT)) {
++ struct husb2_ep *target;
++
++ target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
++ if (!target)
++ goto stall;
++
++ status = 0;
++ if (is_stalled(udc, target))
++ status |= __constant_cpu_to_le16(1);
++ } else {
++ goto delegate;
++ }
++
++ /* Write directly to the FIFO. No queueing is done. */
++ if(crq->wLength != __constant_cpu_to_le16(sizeof(status)))
++ goto stall;
++ ep->state = DATA_STAGE_IN;
++ __raw_writew(status, ep->fifo);
++ husb2_ep_writel(ep, SET_STA, HUSB2_BIT(TX_PK_RDY));
++ break;
++ }
++
++ case USB_REQ_CLEAR_FEATURE: {
++ if (crq->bRequestType == USB_RECIP_DEVICE) {
++ /* We don't support TEST_MODE */
++ goto stall;
++ } else if (crq->bRequestType == USB_RECIP_ENDPOINT) {
++ struct husb2_ep *target;
++
++ if (crq->wValue != __constant_cpu_to_le16(USB_ENDPOINT_HALT)
++ || crq->wLength != __constant_cpu_to_le16(0))
++ goto stall;
++ target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
++ if (!target)
++ goto stall;
++
++ husb2_ep_writel(target, CLR_STA, (HUSB2_BIT(FORCE_STALL)
++ | HUSB2_BIT(TOGGLE_SEQ)));
++ } else {
++ goto delegate;
++ }
++
++ send_status(udc, ep);
++ break;
++ }
++
++ case USB_REQ_SET_FEATURE: {
++ if (crq->bRequestType == USB_RECIP_DEVICE) {
++ /* We don't support TEST_MODE */
++ goto stall;
++ } else if (crq->bRequestType == USB_RECIP_ENDPOINT) {
++ struct husb2_ep *target;
++
++ if (crq->wValue != __constant_cpu_to_le16(USB_ENDPOINT_HALT)
++ || crq->wLength != __constant_cpu_to_le16(0))
++ goto stall;
++
++ target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
++ if (!target)
++ goto stall;
++
++ husb2_ep_writel(target, SET_STA, HUSB2_BIT(FORCE_STALL));
++ } else
++ goto delegate;
++
++ send_status(udc, ep);
++ break;
++ }
++
++ case USB_REQ_SET_ADDRESS:
++ if (crq->bRequestType != (USB_DIR_OUT | USB_RECIP_DEVICE))
++ goto delegate;
++
++ set_address(udc, le16_to_cpu(crq->wValue));
++ send_status(udc, ep);
++ ep->state = STATUS_STAGE_ADDR;
++ break;
++
++ default:
++ delegate:
++ return udc->driver->setup(&udc->gadget, crq);
++ }
++
++ return 0;
++
++stall:
++ printk(KERN_ERR
++ "udc: %s: Invalid setup request: %02x.%02x v%04x i%04x l%d, "
++ "halting endpoint...\n",
++ ep_name(ep), crq->bRequestType, crq->bRequest,
++ le16_to_cpu(crq->wValue), le16_to_cpu(crq->wIndex),
++ le16_to_cpu(crq->wLength));
++ set_protocol_stall(udc, ep);
++ return -1;
++}
++
++static void husb2_control_irq(struct husb2_udc *udc, struct husb2_ep *ep)
++{
++ struct husb2_request *req;
++ u32 epstatus;
++ u32 epctrl;
++
++restart:
++ epstatus = husb2_ep_readl(ep, STA);
++ epctrl = husb2_ep_readl(ep, CTL);
++
++ DBG(DBG_INT, "%s: interrupt, status: 0x%08x\n",
++ ep_name(ep), epstatus);
++
++ req = NULL;
++ if (!list_empty(&ep->queue))
++ req = list_entry(ep->queue.next,
++ struct husb2_request, queue);
++
++ if ((epctrl & HUSB2_BIT(TX_PK_RDY))
++ && !(epstatus & HUSB2_BIT(TX_PK_RDY))) {
++ DBG(DBG_BUS, "tx pk rdy: %d\n", ep->state);
++
++ if (req->submitted)
++ next_fifo_transaction(ep, req);
++ else
++ submit_request(ep, req);
++
++ if (req->last_transaction) {
++ husb2_ep_writel(ep, CTL_DIS, HUSB2_BIT(TX_PK_RDY));
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_COMPLETE));
++ }
++ goto restart;
++ }
++ if ((epstatus & epctrl) & HUSB2_BIT(TX_COMPLETE)) {
++ husb2_ep_writel(ep, CLR_STA, HUSB2_BIT(TX_COMPLETE));
++ DBG(DBG_BUS, "txc: %d\n", ep->state);
++
++ switch (ep->state) {
++ case DATA_STAGE_IN:
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(RX_BK_RDY));
++ husb2_ep_writel(ep, CTL_DIS,
++ HUSB2_BIT(TX_COMPLETE));
++ ep->state = STATUS_STAGE_OUT;
++ break;
++ case STATUS_STAGE_ADDR:
++ /* Activate our new address */
++ husb2_writel(udc, CTRL, (husb2_readl(udc, CTRL)
++ | HUSB2_BIT(FADDR_EN)));
++ husb2_ep_writel(ep, CTL_DIS,
++ HUSB2_BIT(TX_COMPLETE));
++ ep->state = WAIT_FOR_SETUP;
++ break;
++ case STATUS_STAGE_IN:
++ if (req) {
++ list_del_init(&req->queue);
++ request_complete(ep, req, 0);
++ submit_next_request(ep);
++ }
++ BUG_ON(!list_empty(&ep->queue));
++ husb2_ep_writel(ep, CTL_DIS,
++ HUSB2_BIT(TX_COMPLETE));
++ ep->state = WAIT_FOR_SETUP;
++ break;
++ default:
++ printk(KERN_ERR
++ "udc: %s: TXCOMP: Invalid endpoint state %d, "
++ "halting endpoint...\n",
++ ep_name(ep), ep->state);
++ set_protocol_stall(udc, ep);
++ break;
++ }
++
++ goto restart;
++ }
++ if ((epstatus & epctrl) & HUSB2_BIT(RX_BK_RDY)) {
++ DBG(DBG_BUS, "rxc: %d\n", ep->state);
++
++ switch (ep->state) {
++ case STATUS_STAGE_OUT:
++ husb2_ep_writel(ep, CLR_STA, HUSB2_BIT(RX_BK_RDY));
++
++ if (req) {
++ list_del_init(&req->queue);
++ request_complete(ep, req, 0);
++ }
++ husb2_ep_writel(ep, CTL_DIS, HUSB2_BIT(RX_BK_RDY));
++ ep->state = WAIT_FOR_SETUP;
++ break;
++
++ case DATA_STAGE_OUT:
++ receive_data(ep);
++ break;
++
++ default:
++ husb2_ep_writel(ep, CLR_STA, HUSB2_BIT(RX_BK_RDY));
++ set_protocol_stall(udc, ep);
++ printk(KERN_ERR
++ "udc: %s: RXRDY: Invalid endpoint state %d, "
++ "halting endpoint...\n",
++ ep_name(ep), ep->state);
++ break;
++ }
++
++ goto restart;
++ }
++ if (epstatus & HUSB2_BIT(RX_SETUP)) {
++ union {
++ struct usb_ctrlrequest crq;
++ unsigned long data[2];
++ } crq;
++ unsigned int pkt_len;
++ int ret;
++
++ if (ep->state != WAIT_FOR_SETUP) {
++ /*
++ * Didn't expect a SETUP packet at this
++ * point. Clean up any pending requests (which
++ * may be successful).
++ */
++ int status = -EPROTO;
++
++ /*
++ * RXRDY is dropped when SETUP packets arrive.
++ * Just pretend we received the status packet.
++ */
++ if (ep->state == STATUS_STAGE_OUT)
++ status = 0;
++
++ if (req) {
++ list_del_init(&req->queue);
++ request_complete(ep, req, status);
++ }
++ BUG_ON(!list_empty(&ep->queue));
++ }
++
++ pkt_len = HUSB2_BFEXT(BYTE_COUNT, husb2_ep_readl(ep, STA));
++ DBG(DBG_HW, "Packet length: %u\n", pkt_len);
++ BUG_ON(pkt_len != sizeof(crq));
++
++ DBG(DBG_FIFO, "Copying ctrl request from 0x%p:\n", ep->fifo);
++ copy_from_fifo(crq.data, ep->fifo, sizeof(crq));
++
++ /* Free up one bank in the FIFO so that we can
++ * generate or receive a reply right away. */
++ husb2_ep_writel(ep, CLR_STA, HUSB2_BIT(RX_SETUP));
++
++ /* printk(KERN_DEBUG "setup: %d: %02x.%02x\n",
++ ep->state, crq.crq.bRequestType,
++ crq.crq.bRequest); */
++
++ if (crq.crq.bRequestType & USB_DIR_IN) {
++ /*
++ * The USB 2.0 spec states that "if wLength is
++ * zero, there is no data transfer phase."
++ * However, testusb #14 seems to actually
++ * expect a data phase even if wLength = 0...
++ */
++ ep->state = DATA_STAGE_IN;
++ } else {
++ if (crq.crq.wLength != __constant_cpu_to_le16(0))
++ ep->state = DATA_STAGE_OUT;
++ else
++ ep->state = STATUS_STAGE_IN;
++ }
++
++ ret = -1;
++ if (ep->index == 0)
++ ret = handle_ep0_setup(udc, ep, &crq.crq);
++ else
++ ret = udc->driver->setup(&udc->gadget, &crq.crq);
++
++ DBG(DBG_BUS, "req %02x.%02x, length %d, state %d, ret %d\n",
++ crq.crq.bRequestType, crq.crq.bRequest,
++ le16_to_cpu(crq.crq.wLength), ep->state, ret);
++
++ if (ret < 0) {
++ /* Let the host know that we failed */
++ set_protocol_stall(udc, ep);
++ }
++ }
++}
++
++static void husb2_ep_irq(struct husb2_udc *udc, struct husb2_ep *ep)
++{
++ struct husb2_request *req;
++ u32 epstatus;
++ u32 epctrl;
++
++ epstatus = husb2_ep_readl(ep, STA);
++ epctrl = husb2_ep_readl(ep, CTL);
++
++ DBG(DBG_INT, "%s: interrupt, status: 0x%08x\n",
++ ep_name(ep), epstatus);
++
++ while ((epctrl & HUSB2_BIT(TX_PK_RDY))
++ && !(epstatus & HUSB2_BIT(TX_PK_RDY))) {
++ BUG_ON(!ep_is_in(ep));
++
++ DBG(DBG_BUS, "%s: TX PK ready\n", ep_name(ep));
++
++ if (list_empty(&ep->queue)) {
++ dev_warn(&udc->pdev->dev, "ep_irq: queue empty\n");
++ husb2_ep_writel(ep, CTL_DIS, HUSB2_BIT(TX_PK_RDY));
++ return;
++ }
++
++ req = list_entry(ep->queue.next, struct husb2_request, queue);
++
++ if (req->using_dma) {
++ BUG_ON(!req->send_zlp);
++
++ /* Send a zero-length packet */
++ husb2_ep_writel(ep, SET_STA,
++ HUSB2_BIT(TX_PK_RDY));
++ husb2_ep_writel(ep, CTL_DIS,
++ HUSB2_BIT(TX_PK_RDY));
++ list_del_init(&req->queue);
++ submit_next_request(ep);
++ request_complete(ep, req, 0);
++ } else {
++ if (req->submitted)
++ next_fifo_transaction(ep, req);
++ else
++ submit_request(ep, req);
++
++ if (req->last_transaction) {
++ list_del_init(&req->queue);
++ submit_next_request(ep);
++ request_complete(ep, req, 0);
++ }
++ }
++
++ epstatus = husb2_ep_readl(ep, STA);
++ epctrl = husb2_ep_readl(ep, CTL);
++ }
++ if ((epstatus & epctrl) & HUSB2_BIT(RX_BK_RDY)) {
++ BUG_ON(ep_is_in(ep));
++
++ DBG(DBG_BUS, "%s: RX data ready\n", ep_name(ep));
++ receive_data(ep);
++ husb2_ep_writel(ep, CLR_STA, HUSB2_BIT(RX_BK_RDY));
++ }
++}
++
++static void husb2_dma_irq(struct husb2_udc *udc, struct husb2_ep *ep)
++{
++ struct husb2_request *req;
++ u32 status, control, pending;
++
++ status = husb2_dma_readl(ep, STATUS);
++ control = husb2_dma_readl(ep, CONTROL);
++#ifdef CONFIG_DEBUG_FS
++ ep->last_dma_status = status;
++#endif
++ pending = status & control;
++ DBG(DBG_INT, "dma irq, status=%#08x, pending=%#08x, control=%#08x\n",
++ status, pending, control);
++
++ BUG_ON(status & HUSB2_BIT(DMA_CH_EN));
++
++ if (list_empty(&ep->queue))
++ /* Might happen if a reset comes along at the right moment */
++ return;
++
++ if (pending & (HUSB2_BIT(DMA_END_TR_ST) | HUSB2_BIT(DMA_END_BUF_ST))) {
++ req = list_entry(ep->queue.next, struct husb2_request, queue);
++ husb2_update_req(ep, req, status);
++
++ if (req->send_zlp) {
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(TX_PK_RDY));
++ } else {
++ list_del_init(&req->queue);
++ submit_next_request(ep);
++ request_complete(ep, req, 0);
++ }
++ }
++}
++
++static irqreturn_t husb2_udc_irq(int irq, void *devid, struct pt_regs *regs)
++{
++ struct husb2_udc *udc = devid;
++ u32 status;
++ u32 dma_status;
++ u32 ep_status;
++
++ spin_lock(&udc->lock);
++
++ status = husb2_readl(udc, INT_STA);
++ DBG(DBG_INT, "irq, status=%#08x\n", status);
++
++ if (status & HUSB2_BIT(DET_SUSPEND)) {
++ husb2_writel(udc, INT_CLR, HUSB2_BIT(DET_SUSPEND));
++ //DBG(DBG_BUS, "Suspend detected\n");
++ if (udc->gadget.speed != USB_SPEED_UNKNOWN
++ && udc->driver && udc->driver->suspend)
++ udc->driver->suspend(&udc->gadget);
++ }
++
++ if (status & HUSB2_BIT(WAKE_UP)) {
++ husb2_writel(udc, INT_CLR, HUSB2_BIT(WAKE_UP));
++ //DBG(DBG_BUS, "Wake Up CPU detected\n");
++ }
++
++ if (status & HUSB2_BIT(END_OF_RESUME)) {
++ husb2_writel(udc, INT_CLR, HUSB2_BIT(END_OF_RESUME));
++ DBG(DBG_BUS, "Resume detected\n");
++ if (udc->gadget.speed != USB_SPEED_UNKNOWN
++ && udc->driver && udc->driver->resume)
++ udc->driver->resume(&udc->gadget);
++ }
++
++ dma_status = HUSB2_BFEXT(DMA_INT, status);
++ if (dma_status) {
++ int i;
++
++ for (i = 1; i < HUSB2_NR_ENDPOINTS; i++)
++ if (dma_status & (1 << i))
++ husb2_dma_irq(udc, &husb2_ep[i]);
++ }
++
++ ep_status = HUSB2_BFEXT(EPT_INT, status);
++ if (ep_status) {
++ int i;
++
++ for (i = 0; i < HUSB2_NR_ENDPOINTS; i++)
++ if (ep_status & (1 << i)) {
++ if (ep_is_control(&husb2_ep[i]))
++ husb2_control_irq(udc, &husb2_ep[i]);
++ else
++ husb2_ep_irq(udc, &husb2_ep[i]);
++ }
++ }
++
++ if (status & HUSB2_BIT(END_OF_RESET)) {
++ husb2_writel(udc, INT_CLR, HUSB2_BIT(END_OF_RESET));
++ if (status & HUSB2_BIT(HIGH_SPEED)) {
++ DBG(DBG_BUS, "High-speed bus reset detected\n");
++ udc->gadget.speed = USB_SPEED_HIGH;
++ } else {
++ DBG(DBG_BUS, "Full-speed bus reset detected\n");
++ udc->gadget.speed = USB_SPEED_FULL;
++ }
++ /* Better start from scratch... */
++ reset_all_endpoints(udc);
++ husb2_ep[0].state = WAIT_FOR_SETUP;
++ udc_enable(udc);
++ }
++
++ spin_unlock(&udc->lock);
++
++ return IRQ_HANDLED;
++}
++
++int usb_gadget_register_driver(struct usb_gadget_driver *driver)
++{
++ struct husb2_udc *udc = &the_udc;
++ int ret;
++
++ spin_lock(&udc->lock);
++
++ ret = -ENODEV;
++ if (!udc->pdev)
++ goto out;
++ ret = -EBUSY;
++ if (udc->driver)
++ goto out;
++
++ udc->driver = driver;
++ udc->gadget.dev.driver = &driver->driver;
++
++ device_add(&udc->gadget.dev);
++ ret = driver->bind(&udc->gadget);
++ if (ret) {
++ DBG(DBG_ERR, "Could not bind to driver %s: error %d\n",
++ driver->driver.name, ret);
++ device_del(&udc->gadget.dev);
++
++ udc->driver = NULL;
++ udc->gadget.dev.driver = NULL;
++ goto out;
++ }
++
++ /* TODO: Create sysfs files */
++
++ DBG(DBG_GADGET, "registered driver `%s'\n", driver->driver.name);
++ udc_enable(udc);
++
++out:
++ spin_unlock(&udc->lock);
++ return ret;
++}
++EXPORT_SYMBOL(usb_gadget_register_driver);
++
++int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
++{
++ struct husb2_udc *udc = &the_udc;
++ int ret;
++
++ spin_lock(&udc->lock);
++
++ ret = -ENODEV;
++ if (!udc->pdev)
++ goto out;
++ ret = -EINVAL;
++ if (driver != udc->driver)
++ goto out;
++
++ local_irq_disable();
++ udc_disable(udc);
++ local_irq_enable();
++
++ driver->unbind(&udc->gadget);
++ udc->driver = NULL;
++
++ device_del(&udc->gadget.dev);
++
++ /* TODO: Remove sysfs files */
++
++ DBG(DBG_GADGET, "unregistered driver `%s'\n", driver->driver.name);
++
++out:
++ spin_unlock(&udc->lock);
++ return ret;
++}
++EXPORT_SYMBOL(usb_gadget_unregister_driver);
++
++static int __devinit husb2_udc_probe(struct platform_device *pdev)
++{
++ struct resource *regs, *fifo;
++ struct clk *pclk, *hclk;
++ struct husb2_udc *udc = &the_udc;
++ int irq, ret, i;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, CTRL_IOMEM_ID);
++ fifo = platform_get_resource(pdev, IORESOURCE_MEM, FIFO_IOMEM_ID);
++ if (!regs || !fifo)
++ return -ENXIO;
++
++ irq = platform_get_irq(pdev, 0);
++ if (irq < 0)
++ return irq;
++
++ pclk = clk_get(&pdev->dev, "pclk");
++ if (IS_ERR(pclk))
++ return PTR_ERR(pclk);
++ hclk = clk_get(&pdev->dev, "hclk");
++ if (IS_ERR(hclk)) {
++ ret = PTR_ERR(hclk);
++ goto out_put_pclk;
++ }
++
++ clk_enable(pclk);
++ clk_enable(hclk);
++
++ udc->pdev = pdev;
++ udc->pclk = pclk;
++ udc->hclk = hclk;
++
++ ret = -ENOMEM;
++ udc->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!udc->regs) {
++ dev_err(&pdev->dev, "Unable to map I/O memory, aborting.\n");
++ goto out_disable_clocks;
++ }
++ dev_info(&pdev->dev, "MMIO registers at 0x%08lx mapped at %p\n",
++ (unsigned long)regs->start, udc->regs);
++ udc->fifo = ioremap(fifo->start, fifo->end - fifo->start + 1);
++ if (!udc->fifo) {
++ dev_err(&pdev->dev, "Unable to map FIFO, aborting.\n");
++ goto out_unmap_regs;
++ }
++ dev_info(&pdev->dev, "FIFO at 0x%08lx mapped at %p\n",
++ (unsigned long)fifo->start, udc->fifo);
++
++ device_initialize(&udc->gadget.dev);
++ udc->gadget.dev.parent = &pdev->dev;
++ udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
++
++ /* The 3-word descriptors must be 4-word aligned... */
++ udc->desc_pool = dma_pool_create("husb2-desc", &pdev->dev,
++ sizeof(struct husb2_dma_desc),
++ 16, 0);
++ if (!udc->desc_pool) {
++ dev_err(&pdev->dev, "Cannot create descriptor DMA pool\n");
++ goto out_unmap_fifo;
++ }
++
++ platform_set_drvdata(pdev, udc);
++
++ udc_disable(udc);
++
++ INIT_LIST_HEAD(&husb2_ep[0].ep.ep_list);
++ husb2_ep[0].ep_regs = udc->regs + HUSB2_EPT_BASE(0);
++ husb2_ep[0].dma_regs = udc->regs + HUSB2_DMA_BASE(0);
++ husb2_ep[0].fifo = udc->fifo + HUSB2_FIFO_BASE(0);
++ for (i = 1; i < ARRAY_SIZE(husb2_ep); i++) {
++ struct husb2_ep *ep = &husb2_ep[i];
++
++ ep->ep_regs = udc->regs + HUSB2_EPT_BASE(i);
++ ep->dma_regs = udc->regs + HUSB2_DMA_BASE(i);
++ ep->fifo = udc->fifo + HUSB2_FIFO_BASE(i);
++
++ list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
++ }
++
++ ret = request_irq(irq, husb2_udc_irq, SA_SAMPLE_RANDOM,
++ "husb2_udc", udc);
++ if (ret) {
++ dev_err(&pdev->dev, "Cannot request irq %d (error %d)\n",
++ irq, ret);
++ goto out_free_pool;
++ }
++ udc->irq = irq;
++
++ husb2_init_debugfs(udc);
++
++ return 0;
++
++out_free_pool:
++ dma_pool_destroy(udc->desc_pool);
++out_unmap_fifo:
++ iounmap(udc->fifo);
++out_unmap_regs:
++ iounmap(udc->regs);
++out_disable_clocks:
++ clk_disable(hclk);
++ clk_disable(pclk);
++ clk_put(hclk);
++out_put_pclk:
++ clk_put(pclk);
++
++ platform_set_drvdata(pdev, NULL);
++
++ return ret;
++}
++
++static int __devexit husb2_udc_remove(struct platform_device *pdev)
++{
++ struct husb2_udc *udc;
++
++ udc = platform_get_drvdata(pdev);
++ if (!udc)
++ return 0;
++
++ husb2_cleanup_debugfs(udc);
++
++ free_irq(udc->irq, udc);
++ dma_pool_destroy(udc->desc_pool);
++ iounmap(udc->fifo);
++ iounmap(udc->regs);
++ clk_disable(udc->hclk);
++ clk_disable(udc->pclk);
++ clk_put(udc->hclk);
++ clk_put(udc->pclk);
++ platform_set_drvdata(pdev, NULL);
++
++ return 0;
++}
++
++static struct platform_driver udc_driver = {
++ .probe = husb2_udc_probe,
++ .remove = __devexit_p(husb2_udc_remove),
++ .driver = {
++ .name = "usb",
++ },
++};
++
++static int __init udc_init(void)
++{
++ printk(KERN_INFO "husb2device: Driver version %s\n", DRIVER_VERSION);
++ return platform_driver_register(&udc_driver);
++}
++module_init(udc_init);
++
++static void __exit udc_exit(void)
++{
++ platform_driver_unregister(&udc_driver);
++}
++module_exit(udc_exit);
++
++MODULE_DESCRIPTION("Atmel HUSB2 Device Controller driver");
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.h 2006-11-02 16:03:44.000000000 +0100
+@@ -0,0 +1,406 @@
++/*
++ * Driver for the Atmel HUSB2device high speed USB device controller
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __LINUX_USB_GADGET_HUSB2_UDC_H__
++#define __LINUX_USB_GADGET_HUSB2_UDC_H__
++
++/* USB register offsets */
++#define HUSB2_CTRL 0x0000
++#define HUSB2_FNUM 0x0004
++#define HUSB2_INT_ENB 0x0010
++#define HUSB2_INT_STA 0x0014
++#define HUSB2_INT_CLR 0x0018
++#define HUSB2_EPT_RST 0x001c
++#define HUSB2_TST_SOF_CNT 0x00d0
++#define HUSB2_TST_CNT_A 0x00d4
++#define HUSB2_TST_CNT_B 0x00d8
++#define HUSB2_TST_MODE_REG 0x00dc
++#define HUSB2_TST 0x00f0
++
++/* USB endpoint register offsets */
++#define HUSB2_EPT_CFG 0x0000
++#define HUSB2_EPT_CTL_ENB 0x0004
++#define HUSB2_EPT_CTL_DIS 0x0008
++#define HUSB2_EPT_CTL 0x000c
++#define HUSB2_EPT_SET_STA 0x0014
++#define HUSB2_EPT_CLR_STA 0x0018
++#define HUSB2_EPT_STA 0x001c
++
++/* USB DMA register offsets */
++#define HUSB2_DMA_NXT_DSC 0x0000
++#define HUSB2_DMA_ADDRESS 0x0004
++#define HUSB2_DMA_CONTROL 0x0008
++#define HUSB2_DMA_STATUS 0x000c
++
++/* Bitfields in CTRL */
++#define HUSB2_DEV_ADDR_OFFSET 0
++#define HUSB2_DEV_ADDR_SIZE 7
++#define HUSB2_FADDR_EN_OFFSET 7
++#define HUSB2_FADDR_EN_SIZE 1
++#define HUSB2_EN_HUSB2_OFFSET 8
++#define HUSB2_EN_HUSB2_SIZE 1
++#define HUSB2_DETACH_OFFSET 9
++#define HUSB2_DETACH_SIZE 1
++#define HUSB2_REMOTE_WAKE_UP_OFFSET 10
++#define HUSB2_REMOTE_WAKE_UP_SIZE 1
++
++/* Bitfields in FNUM */
++#define HUSB2_MICRO_FRAME_NUM_OFFSET 0
++#define HUSB2_MICRO_FRAME_NUM_SIZE 3
++#define HUSB2_FRAME_NUMBER_OFFSET 3
++#define HUSB2_FRAME_NUMBER_SIZE 11
++#define HUSB2_FRAME_NUM_ERROR_OFFSET 31
++#define HUSB2_FRAME_NUM_ERROR_SIZE 1
++
++/* Bitfields in INT_ENB/INT_STA/INT_CLR */
++#define HUSB2_HIGH_SPEED_OFFSET 0
++#define HUSB2_HIGH_SPEED_SIZE 1
++#define HUSB2_DET_SUSPEND_OFFSET 1
++#define HUSB2_DET_SUSPEND_SIZE 1
++#define HUSB2_MICRO_SOF_OFFSET 2
++#define HUSB2_MICRO_SOF_SIZE 1
++#define HUSB2_SOF_OFFSET 3
++#define HUSB2_SOF_SIZE 1
++#define HUSB2_END_OF_RESET_OFFSET 4
++#define HUSB2_END_OF_RESET_SIZE 1
++#define HUSB2_WAKE_UP_OFFSET 5
++#define HUSB2_WAKE_UP_SIZE 1
++#define HUSB2_END_OF_RESUME_OFFSET 6
++#define HUSB2_END_OF_RESUME_SIZE 1
++#define HUSB2_UPSTREAM_RESUME_OFFSET 7
++#define HUSB2_UPSTREAM_RESUME_SIZE 1
++#define HUSB2_EPT_INT_OFFSET 8
++#define HUSB2_EPT_INT_SIZE 16
++#define HUSB2_DMA_INT_OFFSET 24
++#define HUSB2_DMA_INT_SIZE 8
++
++/* Bitfields in EPT_RST */
++#define HUSB2_RST_OFFSET 0
++#define HUSB2_RST_SIZE 16
++
++/* Bitfields in TST_SOF_CNT */
++#define HUSB2_SOF_CNT_MAX_OFFSET 0
++#define HUSB2_SOF_CNT_MAX_SIZE 7
++#define HUSB2_SOF_CNT_LOAD_OFFSET 7
++#define HUSB2_SOF_CNT_LOAD_SIZE 1
++
++/* Bitfields in TST_CNT_A */
++#define HUSB2_CNT_A_MAX_OFFSET 0
++#define HUSB2_CNT_A_MAX_SIZE 7
++#define HUSB2_CNT_A_LOAD_OFFSET 7
++#define HUSB2_CNT_A_LOAD_SIZE 1
++
++/* Bitfields in TST_CNT_B */
++#define HUSB2_CNT_B_MAX_OFFSET 0
++#define HUSB2_CNT_B_MAX_SIZE 7
++#define HUSB2_CNT_B_LOAD_OFFSET 7
++#define HUSB2_CNT_B_LOAD_SIZE 1
++
++/* Bitfields in TST_MODE_REG */
++#define HUSB2_TST_MODE_OFFSET 0
++#define HUSB2_TST_MODE_SIZE 6
++
++/* Bitfields in HUSB2_TST */
++#define HUSB2_SPEED_CFG_OFFSET 0
++#define HUSB2_SPEED_CFG_SIZE 2
++#define HUSB2_TST_J_MODE_OFFSET 2
++#define HUSB2_TST_J_MODE_SIZE 1
++#define HUSB2_TST_K_MODE_OFFSET 3
++#define HUSB2_TST_K_MODE_SIZE 1
++#define HUSB2_TST_PKT_MODE_OFFSE 4
++#define HUSB2_TST_PKT_MODE_SIZE 1
++#define HUSB2_OPMODE2_OFFSET 5
++#define HUSB2_OPMODE2_SIZE 1
++
++/* Bitfields in EPT_CFG */
++#define HUSB2_EPT_SIZE_OFFSET 0
++#define HUSB2_EPT_SIZE_SIZE 3
++#define HUSB2_EPT_DIR_OFFSET 3
++#define HUSB2_EPT_DIR_SIZE 1
++#define HUSB2_EPT_TYPE_OFFSET 4
++#define HUSB2_EPT_TYPE_SIZE 2
++#define HUSB2_BK_NUMBER_OFFSET 6
++#define HUSB2_BK_NUMBER_SIZE 2
++#define HUSB2_NB_TRANS_OFFSET 8
++#define HUSB2_NB_TRANS_SIZE 2
++#define HUSB2_EPT_MAPPED_OFFSET 31
++#define HUSB2_EPT_MAPPED_SIZE 1
++
++/* Bitfields in EPT_CTL/EPT_CTL_ENB/EPT_CTL_DIS */
++#define HUSB2_EPT_ENABLE_OFFSET 0
++#define HUSB2_EPT_ENABLE_SIZE 1
++#define HUSB2_AUTO_VALID_OFFSET 1
++#define HUSB2_AUTO_VALID_SIZE 1
++#define HUSB2_INT_DIS_DMA_OFFSET 3
++#define HUSB2_INT_DIS_DMA_SIZE 1
++#define HUSB2_NYET_DIS_OFFSET 4
++#define HUSB2_NYET_DIS_SIZE 1
++#define HUSB2_DATAX_RX_OFFSET 6
++#define HUSB2_DATAX_RX_SIZE 1
++#define HUSB2_MDATA_RX_OFFSET 7
++#define HUSB2_MDATA_RX_SIZE 1
++/* Bits 8-15 and 31 enable interrupts for respective bits in EPT_STA */
++#define HUSB2_BUSY_BANK_IE_OFFSET 18
++#define HUSB2_BUSY_BANK_IE_SIZE 1
++
++/* Bitfields in EPT_SET_STA/EPT_CLR_STA/EPT_STA */
++#define HUSB2_FORCE_STALL_OFFSET 5
++#define HUSB2_FORCE_STALL_SIZE 1
++#define HUSB2_TOGGLE_SEQ_OFFSET 6
++#define HUSB2_TOGGLE_SEQ_SIZE 2
++#define HUSB2_ERR_OVFLW_OFFSET 8
++#define HUSB2_ERR_OVFLW_SIZE 1
++#define HUSB2_RX_BK_RDY_OFFSET 9
++#define HUSB2_RX_BK_RDY_SIZE 1
++#define HUSB2_KILL_BANK_OFFSET 9
++#define HUSB2_KILL_BANK_SIZE 1
++#define HUSB2_TX_COMPLETE_OFFSET 10
++#define HUSB2_TX_COMPLETE_SIZE 1
++#define HUSB2_TX_PK_RDY_OFFSET 11
++#define HUSB2_TX_PK_RDY_SIZE 1
++#define HUSB2_ISO_ERR_TRANS_OFFSET 11
++#define HUSB2_ISO_ERR_TRANS_SIZE 1
++#define HUSB2_RX_SETUP_OFFSET 12
++#define HUSB2_RX_SETUP_SIZE 1
++#define HUSB2_ISO_ERR_FLOW_OFFSET 12
++#define HUSB2_ISO_ERR_FLOW_SIZE 1
++#define HUSB2_STALL_SENT_OFFSET 13
++#define HUSB2_STALL_SENT_SIZE 1
++#define HUSB2_ISO_ERR_CRC_OFFSET 13
++#define HUSB2_ISO_ERR_CRC_SIZE 1
++#define HUSB2_ISO_ERR_NBTRANS_OFFSET 13
++#define HUSB2_ISO_ERR_NBTRANS_SIZE 1
++#define HUSB2_NAK_IN_OFFSET 14
++#define HUSB2_NAK_IN_SIZE 1
++#define HUSB2_ISO_ERR_FLUSH_OFFSET 14
++#define HUSB2_ISO_ERR_FLUSH_SIZE 1
++#define HUSB2_NAK_OUT_OFFSET 15
++#define HUSB2_NAK_OUT_SIZE 1
++#define HUSB2_CURRENT_BANK_OFFSET 16
++#define HUSB2_CURRENT_BANK_SIZE 2
++#define HUSB2_BUSY_BANKS_OFFSET 18
++#define HUSB2_BUSY_BANKS_SIZE 2
++#define HUSB2_BYTE_COUNT_OFFSET 20
++#define HUSB2_BYTE_COUNT_SIZE 11
++#define HUSB2_SHORT_PACKET_OFFSET 31
++#define HUSB2_SHORT_PACKET_SIZE 1
++
++/* Bitfields in DMA_CONTROL */
++#define HUSB2_DMA_CH_EN_OFFSET 0
++#define HUSB2_DMA_CH_EN_SIZE 1
++#define HUSB2_DMA_LINK_OFFSET 1
++#define HUSB2_DMA_LINK_SIZE 1
++#define HUSB2_DMA_END_TR_EN_OFFSET 2
++#define HUSB2_DMA_END_TR_EN_SIZE 1
++#define HUSB2_DMA_END_BUF_EN_OFFSET 3
++#define HUSB2_DMA_END_BUF_EN_SIZE 1
++#define HUSB2_DMA_END_TR_IE_OFFSET 4
++#define HUSB2_DMA_END_TR_IE_SIZE 1
++#define HUSB2_DMA_END_BUF_IE_OFFSET 5
++#define HUSB2_DMA_END_BUF_IE_SIZE 1
++#define HUSB2_DMA_DESC_LOAD_IE_OFFSET 6
++#define HUSB2_DMA_DESC_LOAD_IE_SIZE 1
++#define HUSB2_DMA_BURST_LOCK_OFFSET 7
++#define HUSB2_DMA_BURST_LOCK_SIZE 1
++#define HUSB2_DMA_BUF_LEN_OFFSET 16
++#define HUSB2_DMA_BUF_LEN_SIZE 16
++
++/* Bitfields in DMA_STATUS */
++#define HUSB2_DMA_CH_ACTIVE_OFFSET 1
++#define HUSB2_DMA_CH_ACTIVE_SIZE 1
++#define HUSB2_DMA_END_TR_ST_OFFSET 4
++#define HUSB2_DMA_END_TR_ST_SIZE 1
++#define HUSB2_DMA_END_BUF_ST_OFFSET 5
++#define HUSB2_DMA_END_BUF_ST_SIZE 1
++#define HUSB2_DMA_DESC_LOAD_ST_OFFSET 6
++#define HUSB2_DMA_DESC_LOAD_ST_SIZE 1
++
++/* Constants for SPEED_CFG */
++#define HUSB2_SPEED_CFG_NORMAL 0
++#define HUSB2_SPEED_CFG_FORCE_HIGH 2
++#define HUSB2_SPEED_CFG_FORCE_FULL 3
++
++/* Constants for EPT_SIZE */
++#define HUSB2_EPT_SIZE_8 0
++#define HUSB2_EPT_SIZE_16 1
++#define HUSB2_EPT_SIZE_32 2
++#define HUSB2_EPT_SIZE_64 3
++#define HUSB2_EPT_SIZE_128 4
++#define HUSB2_EPT_SIZE_256 5
++#define HUSB2_EPT_SIZE_512 6
++#define HUSB2_EPT_SIZE_1024 7
++
++/* Constants for EPT_TYPE */
++#define HUSB2_EPT_TYPE_CONTROL 0
++#define HUSB2_EPT_TYPE_ISO 1
++#define HUSB2_EPT_TYPE_BULK 2
++#define HUSB2_EPT_TYPE_INT 3
++
++/* Constants for BK_NUMBER */
++#define HUSB2_BK_NUMBER_ZERO 0
++#define HUSB2_BK_NUMBER_ONE 1
++#define HUSB2_BK_NUMBER_DOUBLE 2
++#define HUSB2_BK_NUMBER_TRIPLE 3
++
++/* Bit manipulation macros */
++#define HUSB2_BIT(name) \
++ (1 << HUSB2_##name##_OFFSET)
++#define HUSB2_BF(name,value) \
++ (((value) & ((1 << HUSB2_##name##_SIZE) - 1)) \
++ << HUSB2_##name##_OFFSET)
++#define HUSB2_BFEXT(name,value) \
++ (((value) >> HUSB2_##name##_OFFSET) \
++ & ((1 << HUSB2_##name##_SIZE) - 1))
++#define HUSB2_BFINS(name,value,old) \
++ (((old) & ~(((1 << HUSB2_##name##_SIZE) - 1) \
++ << HUSB2_##name##_OFFSET)) \
++ | HUSB2_BF(name,value))
++
++/* Register access macros */
++#define husb2_readl(udc,reg) \
++ __raw_readl((udc)->regs + HUSB2_##reg)
++#define husb2_writel(udc,reg,value) \
++ __raw_writel((value), (udc)->regs + HUSB2_##reg)
++#define husb2_ep_readl(ep,reg) \
++ __raw_readl((ep)->ep_regs + HUSB2_EPT_##reg)
++#define husb2_ep_writel(ep,reg,value) \
++ __raw_writel((value), (ep)->ep_regs + HUSB2_EPT_##reg)
++#define husb2_dma_readl(ep,reg) \
++ __raw_readl((ep)->dma_regs + HUSB2_DMA_##reg)
++#define husb2_dma_writel(ep,reg,value) \
++ __raw_writel((value), (ep)->dma_regs + HUSB2_DMA_##reg)
++
++/* Calculate base address for a given endpoint or DMA controller */
++#define HUSB2_EPT_BASE(x) (0x100 + (x) * 0x20)
++#define HUSB2_DMA_BASE(x) (0x300 + (x) * 0x10)
++#define HUSB2_FIFO_BASE(x) ((x) << 16)
++
++/* Synth parameters */
++#define HUSB2_NR_ENDPOINTS 7
++
++#define EP0_FIFO_SIZE 64
++#define EP0_EPT_SIZE HUSB2_EPT_SIZE_64
++#define EP0_NR_BANKS 1
++#define BULK_FIFO_SIZE 512
++#define BULK_EPT_SIZE HUSB2_EPT_SIZE_512
++#define BULK_NR_BANKS 2
++#define ISO_FIFO_SIZE 1024
++#define ISO_EPT_SIZE HUSB2_EPT_SIZE_1024
++#define ISO_NR_BANKS 3
++#define INT_FIFO_SIZE 64
++#define INT_EPT_SIZE HUSB2_EPT_SIZE_64
++#define INT_NR_BANKS 3
++
++enum husb2_ctrl_state {
++ WAIT_FOR_SETUP,
++ DATA_STAGE_IN,
++ DATA_STAGE_OUT,
++ STATUS_STAGE_IN,
++ STATUS_STAGE_OUT,
++ STATUS_STAGE_ADDR,
++};
++/*
++ EP_STATE_IDLE,
++ EP_STATE_SETUP,
++ EP_STATE_IN_DATA,
++ EP_STATE_OUT_DATA,
++ EP_STATE_SET_ADDR_STATUS,
++ EP_STATE_RX_STATUS,
++ EP_STATE_TX_STATUS,
++ EP_STATE_HALT,
++*/
++
++struct husb2_dma_desc {
++ dma_addr_t next;
++ dma_addr_t addr;
++ u32 ctrl;
++};
++
++struct husb2_ep {
++ int state;
++ void __iomem *ep_regs;
++ void __iomem *dma_regs;
++ void __iomem *fifo;
++ struct usb_ep ep;
++ struct husb2_udc *udc;
++
++ struct list_head queue;
++ const struct usb_endpoint_descriptor *desc;
++
++ u16 fifo_size;
++ u8 nr_banks;
++ u8 index;
++ u8 capabilities;
++
++#ifdef CONFIG_DEBUG_FS
++ u32 last_dma_status;
++ struct dentry *debugfs_dir;
++ struct dentry *debugfs_queue;
++ struct dentry *debugfs_dma_status;
++#endif
++};
++#define HUSB2_EP_CAP_ISOC 0x0001
++#define HUSB2_EP_CAP_DMA 0x0002
++
++struct husb2_packet {
++ struct husb2_dma_desc *desc;
++ dma_addr_t desc_dma;
++};
++
++struct husb2_request {
++ struct usb_request req;
++ struct list_head queue;
++
++ struct husb2_packet *packet;
++ unsigned int nr_pkts;
++
++ unsigned int submitted:1;
++ unsigned int using_dma:1;
++ unsigned int last_transaction:1;
++ unsigned int send_zlp:1;
++};
++
++struct husb2_udc {
++ spinlock_t lock;
++
++ void __iomem *regs;
++ void __iomem *fifo;
++
++ struct dma_pool *desc_pool;
++
++ struct usb_gadget gadget;
++ struct usb_gadget_driver *driver;
++ struct platform_device *pdev;
++ int irq;
++ struct clk *pclk;
++ struct clk *hclk;
++
++#ifdef CONFIG_DEBUG_FS
++ struct dentry *debugfs_root;
++ struct dentry *debugfs_regs;
++#endif
++};
++
++#define to_husb2_ep(x) container_of((x), struct husb2_ep, ep)
++#define to_husb2_req(x) container_of((x), struct husb2_request, req)
++#define to_husb2_udc(x) container_of((x), struct husb2_udc, gadget)
++
++#define ep_index(ep) ((ep)->index)
++#define ep_can_dma(ep) ((ep)->capabilities & HUSB2_EP_CAP_DMA)
++#define ep_is_in(ep) (((ep)->desc->bEndpointAddress \
++ & USB_ENDPOINT_DIR_MASK) \
++ == USB_DIR_IN)
++#define ep_is_isochronous(ep) \
++ (((ep)->desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) \
++ == USB_ENDPOINT_XFER_ISOC)
++#define ep_is_control(ep) (ep_index(ep) == 0)
++#define ep_name(ep) ((ep)->ep.name)
++#define ep_is_idle(ep) ((ep)->state == EP_STATE_IDLE)
++
++#endif /* __LINUX_USB_GADGET_HUSB2_H */
diff --git a/packages/linux/linux-2.6.18/atmel-lcdc-framebuffer-driver.patch b/packages/linux/linux-2.6.18/atmel-lcdc-framebuffer-driver.patch
new file mode 100644
index 0000000000..d4c9204059
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-lcdc-framebuffer-driver.patch
@@ -0,0 +1,1192 @@
+---
+ drivers/video/Kconfig | 22 +
+ drivers/video/Makefile | 1
+ drivers/video/fbmem.c | 6
+ drivers/video/sidsafb.c | 805 ++++++++++++++++++++++++++++++++++++++++
+ include/asm-avr32/periph/lcdc.h | 271 +++++++++++++
+ include/linux/fb.h | 3
+ 6 files changed, 1107 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.18-avr32/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/video/Kconfig 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/drivers/video/Kconfig 2006-11-02 15:56:20.000000000 +0100
+@@ -271,6 +271,28 @@ config FB_SA1100
+ If you plan to use the LCD display with your SA-1100 system, say
+ Y here.
+
++config FB_SIDSA
++ tristate "SIDSA LCDC support"
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
++ depends on FB && AVR32
++ help
++ This enables support for the SIDSA LCD Controller.
++
++config FB_SIDSA_DEFAULT_BPP
++ int "SIDSA LCDC default color depth"
++ default 24
++ depends on FB_SIDSA
++ help
++ Specify the maximum color depth you want to be able to
++ support. This, together with the resolution of the LCD
++ panel, determines the amount of framebuffer memory allocated
++ when the driver is initialized.
++
++ Allowable values are 1, 2, 4, 8, 16, 24 and 32. If unsure,
++ say 24.
++
+ config FB_IMX
+ tristate "Motorola i.MX LCD support"
+ depends on FB && ARM && ARCH_IMX
+Index: linux-2.6.18-avr32/drivers/video/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/video/Makefile 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/drivers/video/Makefile 2006-11-02 15:56:20.000000000 +0100
+@@ -75,6 +75,7 @@ obj-$(CONFIG_FB_HP300) += hpf
+ obj-$(CONFIG_FB_G364) += g364fb.o
+ obj-$(CONFIG_FB_SA1100) += sa1100fb.o
+ obj-$(CONFIG_FB_SUN3) += sun3fb.o
++obj-$(CONFIG_FB_SIDSA) += sidsafb.o
+ obj-$(CONFIG_FB_HIT) += hitfb.o
+ obj-$(CONFIG_FB_EPSON1355) += epson1355fb.o
+ obj-$(CONFIG_FB_PVR2) += pvr2fb.o
+Index: linux-2.6.18-avr32/drivers/video/fbmem.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/video/fbmem.c 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/drivers/video/fbmem.c 2006-11-02 15:56:20.000000000 +0100
+@@ -1153,6 +1153,7 @@ fb_mmap(struct file *file, struct vm_are
+ /* frame buffer memory */
+ start = info->fix.smem_start;
+ len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len);
++ pr_debug("fb_mmap: start = 0x%08lx, len = 0x%08lx\n", start, len);
+ if (off >= len) {
+ /* memory mapped io */
+ off -= len;
+@@ -1168,6 +1169,7 @@ fb_mmap(struct file *file, struct vm_are
+ if ((vma->vm_end - vma->vm_start + off) > len)
+ return -EINVAL;
+ off += start;
++ pr_debug("fb_mmap: off = 0x%08lx\n", off);
+ vma->vm_pgoff = off >> PAGE_SHIFT;
+ /* This is an IO map - tell maydump to skip this VMA */
+ vma->vm_flags |= VM_IO | VM_RESERVED;
+@@ -1198,6 +1200,10 @@ fb_mmap(struct file *file, struct vm_are
+ pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE;
+ #elif defined(__arm__) || defined(__sh__) || defined(__m32r__)
+ vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
++#elif defined(__avr32__)
++ vma->vm_page_prot = __pgprot((pgprot_val(vma->vm_page_prot)
++ & ~_PAGE_CACHABLE)
++ | (_PAGE_BUFFER | _PAGE_DIRTY));
+ #elif defined(__ia64__)
+ if (efi_range_is_wc(vma->vm_start, vma->vm_end - vma->vm_start))
+ vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
+Index: linux-2.6.18-avr32/drivers/video/sidsafb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/video/sidsafb.c 2006-11-02 16:07:55.000000000 +0100
+@@ -0,0 +1,805 @@
++/*
++ * Framebuffer Driver for Atmel/SIDSA LCD Controller
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#undef DEBUG
++
++#include <linux/config.h>
++#include <linux/clk.h>
++#include <linux/kernel.h>
++#include <linux/dma-mapping.h>
++#include <linux/interrupt.h>
++#include <linux/fb.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/board.h>
++
++#include <asm/periph/lcdc.h>
++
++/* More or less configurable parameters */
++#define SIDSAFB_FIFO_SIZE 512
++#define SIDSAFB_DMA_BURST_LEN 8
++
++/* TODO: These should be autogenerated from part description file */
++#define LCDC_DISTYPE_STN_MONO 0
++#define LCDC_DISTYPE_STN_COLOR 1
++#define LCDC_DISTYPE_TFT 2
++#define LCDC_LUT 0xc00
++
++struct sidsafb_info {
++ spinlock_t lock;
++ struct fb_info * info;
++ void __iomem * regs;
++ unsigned long irq_base;
++ wait_queue_head_t vsync_wait;
++ unsigned int guard_time;
++ struct clk *hclk;
++ struct clk *pixclk;
++ struct platform_device *pdev;
++ u32 pseudo_palette[16];
++};
++
++/*
++ * How large framebuffer to allocate if none was provided by the
++ * platform. This default is the smallest we can possibly get away
++ * with.
++ */
++static unsigned long fb_size = (320 * 240);
++
++#if 0
++static struct fb_videomode sony_modes[] = {
++ {
++ .refresh = 48,
++ .xres = 240, .yres = 160,
++ .pixclock = 520833,
++
++ .left_margin = 7, .right_margin = 9,
++ .upper_margin = 19, .lower_margin = 20,
++ .hsync_len = 9, .vsync_len = 2,
++
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++#endif
++
++#if 0
++static struct fb_videomode vga_modes[] = {
++ {
++ .refresh = 122,
++ .xres = 320, .yres = 240,
++ .pixclock = 80000,
++
++ .left_margin = 10, .right_margin = 20,
++ .upper_margin = 30, .lower_margin = 5,
++ .hsync_len = 20, .vsync_len = 3,
++
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++ {
++ .refresh = 70,
++ .xres = 640, .yres = 480,
++ .pixclock = 40000,
++
++ .left_margin = 10, .right_margin = 20,
++ .upper_margin = 30, .lower_margin = 5,
++ .hsync_len = 20, .vsync_len = 3,
++
++ .sync = 0,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++#else
++static struct fb_videomode samsung_modes[] = {
++ {
++ .refresh = 75,
++ .xres = 320, .yres = 240,
++ .pixclock = 145111,
++
++ .left_margin = 17, .right_margin = 33,
++ .upper_margin = 8, .lower_margin = 10,
++ .hsync_len = 16, .vsync_len = 1,
++
++ .sync = FB_SYNC_PCLK_RISING,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++#endif
++
++#if 1
++static struct fb_monspecs default_monspecs = {
++ .modedb = samsung_modes,
++ .manufacturer = "SNG",
++ .monitor = "LCD panel",
++ .serial_no = "xxxx",
++ .ascii = "yyyy",
++ .modedb_len = ARRAY_SIZE(samsung_modes),
++ .hfmin = 14820,
++ .hfmax = 22230,
++ .vfmin = 60,
++ .vfmax = 90,
++ .dclkmax = 30000000,
++};
++#endif
++
++#if 0
++static struct fb_monspecs default_monspecs = {
++ .modedb = sony_modes,
++ .manufacturer = "SNY", /* 4 chars?!? */
++ .monitor = "LCD panel",
++ .serial_no = "xxxx",
++ .ascii = "yyyy",
++ .modedb_len = ARRAY_SIZE(sony_modes),
++ .hfmin = 7000,
++ .hfmax = 8000,
++ .vfmin = 45,
++ .vfmax = 50,
++};
++// #else
++static struct fb_monspecs default_monspecs = {
++ .modedb = vga_modes,
++ .manufacturer = "VGA",
++ .monitor = "Generic VGA",
++ .serial_no = "xxxx",
++ .ascii = "yyyy",
++ .modedb_len = ARRAY_SIZE(vga_modes),
++ .hfmin = 30000,
++ .hfmax = 64000,
++ .vfmin = 50,
++ .vfmax = 150,
++};
++#endif
++
++/* Driver defaults */
++static struct fb_fix_screeninfo sidsafb_fix __devinitdata = {
++ .id = "sidsafb",
++ .type = FB_TYPE_PACKED_PIXELS,
++ .visual = FB_VISUAL_TRUECOLOR,
++ .xpanstep = 1,
++ .ypanstep = 1,
++ .ywrapstep = 0,
++ .accel = FB_ACCEL_NONE,
++};
++
++static void sidsafb_update_dma(struct fb_info *info,
++ struct fb_var_screeninfo *var)
++{
++ struct sidsafb_info *sinfo = info->par;
++ struct fb_fix_screeninfo *fix = &info->fix;
++ unsigned long dma_addr;
++ unsigned long pixeloff;
++ unsigned long dma2dcfg;
++
++ dma_addr = (fix->smem_start + var->yoffset * fix->line_length
++ + var->xoffset * var->bits_per_pixel / 8);
++
++ dma_addr &= ~3UL;
++ pixeloff = LCDC_MKBF(DMA2DCFG_PIXELOFF, var->xoffset * var->bits_per_pixel);
++
++ /* Set framebuffer DMA base address and pixel offset */
++ lcdc_writel(sinfo, DMABADDR1, dma_addr);
++ dma2dcfg = lcdc_readl(sinfo, DMA2DCFG);
++ dma2dcfg = LCDC_INSBF(DMA2DCFG_PIXELOFF, pixeloff, dma2dcfg);
++ lcdc_writel(sinfo, DMA2DCFG, dma2dcfg);
++
++ /* Update configuration */
++ lcdc_writel(sinfo, DMACON, (lcdc_readl(sinfo, DMACON)
++ | LCDC_BIT(DMACON_DMAUPDT)));
++}
++
++/**
++ * sidsafb_check_var - Validates a var passed in.
++ * @var: frame buffer variable screen structure
++ * @info: frame buffer structure that represents a single frame buffer
++ *
++ * Checks to see if the hardware supports the state requested by
++ * var passed in. This function does not alter the hardware
++ * state!!! This means the data stored in struct fb_info and
++ * struct sidsafb_info do not change. This includes the var
++ * inside of struct fb_info. Do NOT change these. This function
++ * can be called on its own if we intent to only test a mode and
++ * not actually set it. The stuff in modedb.c is a example of
++ * this. If the var passed in is slightly off by what the
++ * hardware can support then we alter the var PASSED in to what
++ * we can do. If the hardware doesn't support mode change a
++ * -EINVAL will be returned by the upper layers. You don't need
++ * to implement this function then. If you hardware doesn't
++ * support changing the resolution then this function is not
++ * needed. In this case the driver would just provide a var that
++ * represents the static state the screen is in.
++ *
++ * Returns negative errno on error, or zero on success.
++ */
++static int sidsafb_check_var(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ unsigned long new_fb_size;
++
++ pr_debug("sidsafb_check_var:\n");
++ pr_debug(" resolution: %ux%u\n", var->xres, var->yres);
++ pr_debug(" pixclk: %llu Hz\n", 1000000000000ULL / var->pixclock);
++ pr_debug(" bpp: %u\n", var->bits_per_pixel);
++
++ new_fb_size = (var->xres_virtual * var->yres_virtual
++ * ((var->bits_per_pixel + 7) / 8));
++ if (new_fb_size > info->fix.smem_len) {
++ printk(KERN_NOTICE
++ "sidsafb: %uB framebuffer too small for %ux%ux%u\n",
++ info->fix.smem_len, var->xres_virtual,
++ var->yres_virtual, var->bits_per_pixel);
++ return -EINVAL;
++ }
++
++ /* Force same alignment for each line */
++ var->xres = (var->xres + 3) & ~3UL;
++ var->xres_virtual = (var->xres_virtual + 3) & ~3UL;
++
++ var->red.msb_right = var->green.msb_right = var->blue.msb_right = 0;
++ var->transp.offset = var->transp.length = 0;
++
++ switch (var->bits_per_pixel) {
++ case 2:
++ case 4:
++ case 8:
++ var->red.offset = var->green.offset = var->blue.offset = 0;
++ var->red.length = var->green.length = var->blue.length
++ = var->bits_per_pixel;
++ break;
++ case 15:
++ case 16:
++ /*
++ * Bit 16 is the "intensity" bit, I think. Not sure
++ * what we're going to use that for...
++ */
++ var->red.offset = 0;
++ var->green.offset = 5;
++ var->blue.offset = 10;
++ var->red.length = 5;
++ var->green.length = 5;
++ var->blue.length = 5;
++ break;
++ case 24:
++ case 32:
++ var->red.offset = 16;
++ var->green.offset = 8;
++ var->blue.offset = 0;
++ var->red.length = var->green.length = var->blue.length = 8;
++ break;
++ default:
++ printk(KERN_NOTICE "sidsafb: color depth %d not supported\n",
++ var->bits_per_pixel);
++ return -EINVAL;
++ }
++
++ var->xoffset = var->yoffset = 0;
++ var->red.msb_right = var->green.msb_right = var->blue.msb_right =
++ var->transp.msb_right = 0;
++
++ return 0;
++}
++
++/**
++ * sidsafb_set_par - Alters the hardware state.
++ * @info: frame buffer structure that represents a single frame buffer
++ *
++ * Using the fb_var_screeninfo in fb_info we set the resolution
++ * of the this particular framebuffer. This function alters the
++ * par AND the fb_fix_screeninfo stored in fb_info. It doesn't
++ * not alter var in fb_info since we are using that data. This
++ * means we depend on the data in var inside fb_info to be
++ * supported by the hardware. sidsafb_check_var is always called
++ * before sidsafb_set_par to ensure this. Again if you can't
++ * change the resolution you don't need this function.
++ *
++ */
++static int sidsafb_set_par(struct fb_info *info)
++{
++ struct sidsafb_info *sinfo = info->par;
++ unsigned long value;
++
++ pr_debug("sidsafb_set_par:\n");
++ pr_debug(" * resolution: %ux%u (%ux%u virtual)\n",
++ info->var.xres, info->var.yres,
++ info->var.xres_virtual, info->var.yres_virtual);
++
++ /* Turn off the LCD controller and the DMA controller */
++ pr_debug("writing 0x%08x to %p\n",
++ LCDC_MKBF(PWRCON_GUARD_TIME, sinfo->guard_time),
++ sinfo->regs + LCDC_PWRCON);
++ lcdc_writel(sinfo, PWRCON,
++ LCDC_MKBF(PWRCON_GUARD_TIME, sinfo->guard_time));
++ pr_debug("writing 0 to %p\n", sinfo->regs + LCDC_DMACON);
++ lcdc_writel(sinfo, DMACON, 0);
++
++ info->fix.line_length = (info->var.xres_virtual
++ * (info->var.bits_per_pixel / 8));
++
++ if (info->var.bits_per_pixel <= 8)
++ info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
++ else
++ info->fix.visual = FB_VISUAL_TRUECOLOR;
++
++ /* Re-initialize the DMA engine... */
++ pr_debug(" * update DMA engine\n");
++ sidsafb_update_dma(info, &info->var);
++
++ /* ...set frame size and burst length = 8 words (?) */
++ value = LCDC_MKBF(DMAFRMCFG_FRMSIZE,
++ (info->var.yres * info->fix.line_length + 3) / 4);
++ value |= LCDC_MKBF(DMAFRMCFG_BRSTLEN, (SIDSAFB_DMA_BURST_LEN - 1));
++ lcdc_writel(sinfo, DMAFRMCFG, value);
++
++ /* ...set 2D configuration (necessary for xres_virtual != xres) */
++ value = LCDC_MKBF(DMA2DCFG_ADDRINC,
++ info->var.xres_virtual - info->var.xres);
++ lcdc_writel(sinfo, DMA2DCFG, value);
++
++ /* ...wait for DMA engine to become idle... */
++ while (lcdc_readl(sinfo, DMACON) & LCDC_BIT(DMACON_DMABUSY))
++ msleep(10);
++
++ pr_debug(" * re-enable DMA engine\n");
++ /* ...and enable it with updated configuration */
++ lcdc_writel(sinfo, DMACON, (LCDC_BIT(DMACON_DMAEN)
++ | LCDC_BIT(DMACON_DMAUPDT)
++ | LCDC_BIT(DMACON_DMA2DEN)));
++
++ /* Now, the LCD core... */
++
++ /* Set pixel clock. */
++ value = (clk_get_rate(sinfo->pixclk) / 100000) * info->var.pixclock;
++ value /= 10000000;
++ value = (value + 1) / 2;
++ if (value == 0) {
++ printk("sidsafb: Bypassing lcdc_pclk divider\n");
++ lcdc_writel(sinfo, LCDCON1, LCDC_BIT(LCDCON1_BYPASS));
++ } else {
++ lcdc_writel(sinfo, LCDCON1, LCDC_MKBF(LCDCON1_CLKVAL, value - 1));
++ }
++
++ /* Initialize control register 2 */
++ value = (LCDC_BIT(LCDCON2_CLKMOD)
++ | LCDC_MKBF(LCDCON2_DISTYPE, LCDC_DISTYPE_TFT));
++ if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
++ value |= LCDC_BIT(LCDCON2_INVLINE);
++ if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT))
++ value |= LCDC_BIT(LCDCON2_INVFRAME);
++ if (info->var.sync & FB_SYNC_PCLK_RISING)
++ value |= LCDC_BIT(LCDCON2_INVCLK);
++
++ switch (info->var.bits_per_pixel) {
++ case 1: value |= LCDC_MKBF(LCDCON2_PIXELSIZE, 0); break;
++ case 2: value |= LCDC_MKBF(LCDCON2_PIXELSIZE, 1); break;
++ case 4: value |= LCDC_MKBF(LCDCON2_PIXELSIZE, 2); break;
++ case 8: value |= LCDC_MKBF(LCDCON2_PIXELSIZE, 3); break;
++ case 15: /* fall through */
++ case 16: value |= LCDC_MKBF(LCDCON2_PIXELSIZE, 4); break;
++ case 24: value |= LCDC_MKBF(LCDCON2_PIXELSIZE, 5); break;
++ case 32: value |= LCDC_MKBF(LCDCON2_PIXELSIZE, 6); break;
++ default: BUG(); break;
++ }
++ pr_debug(" * LCDCON2 = %08lx\n", value);
++ lcdc_writel(sinfo, LCDCON2, value);
++
++ /* Vertical timing */
++ value = LCDC_MKBF(LCDTIM1_VPW, info->var.vsync_len - 1);
++ value |= LCDC_MKBF(LCDTIM1_VBP, info->var.upper_margin);
++ value |= LCDC_MKBF(LCDTIM1_VFP, info->var.lower_margin);
++ pr_debug(" * LCDTIM1 = %08lx\n", value);
++ lcdc_writel(sinfo, LCDTIM1, value);
++
++ /* Horizontal timing */
++ value = LCDC_MKBF(LCDTIM2_HFP, info->var.right_margin - 1);
++ value |= LCDC_MKBF(LCDTIM2_HPW, info->var.hsync_len - 1);
++ value |= LCDC_MKBF(LCDTIM2_HBP, info->var.left_margin - 1);
++ pr_debug(" * LCDTIM2 = %08lx\n", value);
++ lcdc_writel(sinfo, LCDTIM2, value);
++
++ /* Display size */
++ value = LCDC_MKBF(LCDFRMCFG_LINESIZE, info->var.xres - 1);
++ value |= LCDC_MKBF(LCDFRMCFG_LINEVAL, info->var.yres - 1);
++ lcdc_writel(sinfo, LCDFRMCFG, value);
++
++ /* FIFO Threshold: Use formula from data sheet */
++ value = SIDSAFB_FIFO_SIZE - (2 * SIDSAFB_DMA_BURST_LEN + 3);
++ lcdc_writel(sinfo, LCDFIFO, value);
++
++ /* Toggle LCD_MODE every frame */
++ lcdc_writel(sinfo, LCDMVAL, 0);
++
++ /* Disable all interrupts */
++ lcdc_writel(sinfo, LCD_IDR, ~0UL);
++
++ /* Wait for the LCDC core to become idle and enable it */
++ while(lcdc_readl(sinfo, PWRCON) & LCDC_BIT(PWRCON_LCD_BUSY))
++ msleep(10);
++
++ pr_debug(" * re-enable LCD core\n");
++ lcdc_writel(sinfo, PWRCON,
++ LCDC_MKBF(PWRCON_GUARD_TIME, sinfo->guard_time)
++ | LCDC_BIT(PWRCON_LCD_PWR));
++
++ pr_debug(" * DONE\n");
++ return 0;
++}
++
++static inline u_int chan_to_field(u_int chan, const struct fb_bitfield *bf)
++{
++ chan &= 0xffff;
++ chan >>= 16 - bf->length;
++ return chan << bf->offset;
++}
++
++/**
++ * sidsafb_setcolreg - Optional function. Sets a color register.
++ * @regno: Which register in the CLUT we are programming
++ * @red: The red value which can be up to 16 bits wide
++ * @green: The green value which can be up to 16 bits wide
++ * @blue: The blue value which can be up to 16 bits wide.
++ * @transp: If supported the alpha value which can be up to 16 bits wide.
++ * @info: frame buffer info structure
++ *
++ * Set a single color register. The values supplied have a 16 bit
++ * magnitude which needs to be scaled in this function for the hardware.
++ * Things to take into consideration are how many color registers, if
++ * any, are supported with the current color visual. With truecolor mode
++ * no color palettes are supported. Here a psuedo palette is created
++ * which we store the value in pseudo_palette in struct fb_info. For
++ * pseudocolor mode we have a limited color palette. To deal with this
++ * we can program what color is displayed for a particular pixel value.
++ * DirectColor is similar in that we can program each color field. If
++ * we have a static colormap we don't need to implement this function.
++ *
++ * Returns negative errno on error, or zero on success. In an
++ * ideal world, this would have been the case, but as it turns
++ * out, the other drivers return 1 on failure, so that's what
++ * we're going to do.
++ */
++static int sidsafb_setcolreg(unsigned int regno, unsigned int red,
++ unsigned int green, unsigned int blue,
++ unsigned int transp, struct fb_info *info)
++{
++ struct sidsafb_info *sinfo = info->par;
++ unsigned int val;
++ u32 *pal;
++ int ret = 1;
++
++ if (info->var.grayscale)
++ red = green = blue = (19595 * red + 38470 * green
++ + 7471 * blue) >> 16;
++
++ switch (info->fix.visual) {
++ case FB_VISUAL_TRUECOLOR:
++ if (regno < 16) {
++ pal = info->pseudo_palette;
++
++ val = chan_to_field(red, &info->var.red);
++ val |= chan_to_field(green, &info->var.green);
++ val |= chan_to_field(blue, &info->var.blue);
++
++ pal[regno] = val;
++ ret = 0;
++ }
++ break;
++
++ case FB_VISUAL_PSEUDOCOLOR:
++ if (regno < 256) {
++ val = ((red >> 11) & 0x001f);
++ val |= ((green >> 6) & 0x03e0);
++ val |= ((blue >> 1) & 0x7c00);
++
++ /*
++ * TODO: intensity bit. Maybe something like
++ * ~(red[10] ^ green[10] ^ blue[10]) & 1
++ */
++
++ lcdc_writel(sinfo, LUT + regno * 4, val);
++ ret = 0;
++ }
++ break;
++ }
++
++ return ret;
++}
++
++static int sidsafb_pan_display(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ pr_debug("sidsafb_pan_display\n");
++
++ sidsafb_update_dma(info, var);
++
++ return 0;
++}
++
++static struct fb_ops sidsafb_ops = {
++ .owner = THIS_MODULE,
++ .fb_check_var = sidsafb_check_var,
++ .fb_set_par = sidsafb_set_par,
++ .fb_setcolreg = sidsafb_setcolreg,
++ .fb_pan_display = sidsafb_pan_display,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++};
++
++static irqreturn_t sidsafb_interrupt(int irq, void *dev_id,
++ struct pt_regs *regs)
++{
++ struct fb_info *info = dev_id;
++ struct sidsafb_info *sinfo = info->par;
++ u32 status;
++
++ status = lcdc_readl(sinfo, LCD_ISR);
++ while (status) {
++ if (status & LCDC_BIT(LCD_ISR_EOFIS)) {
++ pr_debug("sidsafb: DMA End Of Frame interrupt\n");
++
++ lcdc_writel(sinfo, LCD_ICR, LCDC_BIT(LCD_ICR_EOFIC));
++ status &= ~LCDC_BIT(LCD_ISR_EOFIS);
++ wake_up(&sinfo->vsync_wait);
++ }
++
++ if (status) {
++ printk(KERN_ERR
++ "LCDC: Interrupts still pending: 0x%x\n",
++ status);
++ lcdc_writel(sinfo, LCD_IDR, status);
++ }
++
++ status = lcdc_readl(sinfo, LCD_ISR);
++ }
++
++ return IRQ_HANDLED;
++}
++
++static void __devinit init_pseudo_palette(u32 *palette)
++{
++ static const u32 init_palette[16] = {
++ 0x000000,
++ 0xaa0000,
++ 0x00aa00,
++ 0xaa5500,
++ 0x0000aa,
++ 0xaa00aa,
++ 0x00aaaa,
++ 0xaaaaaa,
++ 0x555555,
++ 0xff5555,
++ 0x55ff55,
++ 0xffff55,
++ 0x5555ff,
++ 0xff55ff,
++ 0x55ffff,
++ 0xffffff
++ };
++
++ memcpy(palette, init_palette, sizeof(init_palette));
++}
++
++static int __devinit sidsafb_set_fbinfo(struct sidsafb_info *sinfo)
++{
++ struct fb_info *info = sinfo->info;
++
++ init_pseudo_palette(sinfo->pseudo_palette);
++
++ info->flags = (FBINFO_DEFAULT
++ | FBINFO_PARTIAL_PAN_OK
++ | FBINFO_HWACCEL_XPAN
++ | FBINFO_HWACCEL_YPAN);
++ memcpy(&info->fix, &sidsafb_fix, sizeof(info->fix));
++ memcpy(&info->monspecs, &default_monspecs, sizeof(info->monspecs));
++ info->fbops = &sidsafb_ops;
++ info->pseudo_palette = sinfo->pseudo_palette;
++
++ init_waitqueue_head(&sinfo->vsync_wait);
++
++ return 0;
++}
++
++static int __devinit sidsafb_probe(struct platform_device *pdev)
++{
++ struct lcdc_platform_data *fb_data = pdev->dev.platform_data;
++ struct fb_info *info;
++ struct sidsafb_info *sinfo;
++ const struct resource *mmio_resource;
++ int ret;
++
++ pr_debug("sidsafb_probe BEGIN\n");
++
++ mmio_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!mmio_resource) {
++ dev_err(&pdev->dev, "no MMIO resource found\n");
++ return -ENXIO;
++ }
++
++ ret = -ENOMEM;
++ info = framebuffer_alloc(sizeof(struct sidsafb_info), &pdev->dev);
++ if (!info) {
++ dev_err(&pdev->dev, "failed to allocate memory\n");
++ goto out;
++ }
++
++ sinfo = info->par;
++ sinfo->info = info;
++ sinfo->pdev = pdev;
++ sinfo->guard_time = 1;
++
++ spin_lock_init(&sinfo->lock);
++ sidsafb_set_fbinfo(sinfo);
++ info->fix.mmio_start = mmio_resource->start;
++ info->fix.mmio_len = mmio_resource->end - mmio_resource->start + 1;
++ sinfo->irq_base = platform_get_irq(pdev, 0);
++
++ sinfo->hclk = clk_get(&pdev->dev, "hclk");
++ if (IS_ERR(sinfo->hclk)) {
++ dev_err(&pdev->dev, "failed to get hclk\n");
++ ret = PTR_ERR(sinfo->hclk);
++ goto free_info;
++ }
++ sinfo->pixclk = clk_get(&pdev->dev, "pixclk");
++ if (IS_ERR(sinfo->pixclk)) {
++ dev_err(&pdev->dev, "failed to get pixel clock\n");
++ ret = PTR_ERR(sinfo->hclk);
++ goto put_hclk;
++ }
++
++ clk_enable(sinfo->hclk);
++ clk_enable(sinfo->pixclk);
++
++ /* Use platform-supplied framebuffer memory if available */
++ if (fb_data && fb_data->fbmem_size != 0) {
++ info->fix.smem_start = fb_data->fbmem_start;
++ info->fix.smem_len = fb_data->fbmem_size;
++ info->screen_base = ioremap(info->fix.smem_start,
++ info->fix.smem_len);
++ } else {
++ dma_addr_t paddr;
++
++ info->fix.smem_len = fb_size;
++ info->screen_base = dma_alloc_coherent(&pdev->dev, fb_size,
++ &paddr, GFP_KERNEL);
++ info->fix.smem_start = paddr;
++ }
++
++ if (!info->screen_base) {
++ printk(KERN_ERR "sidsafb: Could not allocate framebuffer\n");
++ goto disable_clocks;
++ }
++
++ sinfo->regs = ioremap(info->fix.mmio_start, info->fix.mmio_len);
++ if (!sinfo->regs) {
++ printk(KERN_ERR "sidsafb: Could not map LCDC registers\n");
++ goto free_fb;
++ }
++
++ ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb,
++ info->monspecs.modedb_len, info->monspecs.modedb,
++ CONFIG_FB_SIDSA_DEFAULT_BPP);
++ if (!ret) {
++ printk(KERN_ERR "sidsafb: No suitable video mode found\n");
++ goto unmap_regs;
++ }
++
++ ret = request_irq(sinfo->irq_base, sidsafb_interrupt, 0,
++ "sidsafb", info);
++ if (ret)
++ goto unmap_regs;
++
++ /* Allocate colormap */
++ if (fb_alloc_cmap(&info->cmap, 256, 0)) {
++ ret = -ENOMEM;
++ goto unregister_irqs;
++ }
++
++ /*
++ * Tell the world that we're ready to go
++ */
++ ret = register_framebuffer(info);
++ if (ret)
++ goto free_cmap;
++
++ printk("fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %lu\n",
++ info->node, info->fix.mmio_start, sinfo->regs, sinfo->irq_base);
++
++ platform_set_drvdata(pdev, info);
++
++ memset_io(info->screen_base, 0, info->fix.smem_len);
++ info->var.activate |= FB_ACTIVATE_FORCE | FB_ACTIVATE_NOW;
++ ret = fb_set_var(info, &info->var);
++ if (ret)
++ printk(KERN_WARNING
++ "sidsafb: Unable to set display parameters\n");
++ info->var.activate &= ~(FB_ACTIVATE_FORCE | FB_ACTIVATE_NOW);
++
++ pr_debug("sidsafb_probe SUCCESS\n");
++ return 0;
++
++
++free_cmap:
++ fb_dealloc_cmap(&info->cmap);
++unregister_irqs:
++ free_irq(sinfo->irq_base, info);
++unmap_regs:
++ iounmap(sinfo->regs);
++free_fb:
++ if (!fb_data || fb_data->fbmem_size == 0)
++ dma_free_coherent(&pdev->dev, info->fix.smem_len,
++ (void __force *)info->screen_base,
++ info->fix.smem_start);
++disable_clocks:
++ clk_disable(sinfo->pixclk);
++ clk_disable(sinfo->hclk);
++ clk_put(sinfo->pixclk);
++put_hclk:
++ clk_put(sinfo->hclk);
++free_info:
++ framebuffer_release(info);
++out:
++ pr_debug("sidsafb_probe FAILED\n");
++ return ret;
++}
++
++static int __devexit sidsafb_remove(struct platform_device *pdev)
++{
++ struct lcdc_platform_data *fb_data = pdev->dev.platform_data;
++ struct fb_info *info = platform_get_drvdata(pdev);
++ struct sidsafb_info *sinfo;
++
++ if (!info)
++ return 0;
++ sinfo = info->par;
++
++ /* TODO: Restore original state */
++ unregister_framebuffer(info);
++
++ fb_dealloc_cmap(&info->cmap);
++ free_irq(sinfo->irq_base, info);
++ iounmap(sinfo->regs);
++ if (!fb_data || fb_data->fbmem_size == 0)
++ dma_free_coherent(&pdev->dev, info->fix.smem_len,
++ (void __force *)info->screen_base,
++ info->fix.smem_start);
++ clk_disable(sinfo->hclk);
++ clk_put(sinfo->hclk);
++ platform_set_drvdata(pdev, NULL);
++ framebuffer_release(info);
++
++ return 0;
++}
++
++static struct platform_driver sidsafb_driver = {
++ .probe = sidsafb_probe,
++ .remove = __devexit_p(sidsafb_remove),
++ .driver = {
++ .name = "lcdc",
++ },
++};
++
++int __init sidsafb_init(void)
++{
++ return platform_driver_register(&sidsafb_driver);
++}
++
++static void __exit sidsafb_exit(void)
++{
++ platform_driver_unregister(&sidsafb_driver);
++}
++
++module_init(sidsafb_init);
++module_exit(sidsafb_exit);
++
++module_param(fb_size, ulong, 0644);
++MODULE_PARM_DESC(fb_size, "Minimum framebuffer size to allocate");
++
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
++MODULE_DESCRIPTION("Atmel/SIDSA LCD Controller framebuffer driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.18-avr32/include/asm-avr32/periph/lcdc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/periph/lcdc.h 2006-11-02 16:08:35.000000000 +0100
+@@ -0,0 +1,271 @@
++/*
++ * Register definitions for Atmel/SIDSA LCD Controller
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_PERIPH_LCDC_H__
++#define __ASM_AVR32_PERIPH_LCDC_H__
++
++#define LCDC_CONTRAST_CTR 0x00000840
++# define LCDC_CONTRAST_CTR_ENA_OFFSET 3
++# define LCDC_CONTRAST_CTR_ENA_SIZE 1
++# define LCDC_CONTRAST_CTR_POL_OFFSET 2
++# define LCDC_CONTRAST_CTR_POL_SIZE 1
++# define LCDC_CONTRAST_CTR_PS_OFFSET 0
++# define LCDC_CONTRAST_CTR_PS_SIZE 2
++#define LCDC_CONTRAST_VAL 0x00000844
++# define LCDC_CONTRAST_VAL_CVAL_OFFSET 0
++# define LCDC_CONTRAST_VAL_CVAL_SIZE 8
++#define LCDC_DMABADDR1 0x00000000
++# define LCDC_DMABADDR1_BADDR_U_OFFSET 0
++# define LCDC_DMABADDR1_BADDR_U_SIZE 32
++#define LCDC_DMABADDR2 0x00000004
++# define LCDC_DMABADDR2_BADDR_L_OFFSET 0
++# define LCDC_DMABADDR2_BADDR_L_SIZE 32
++#define LCDC_DMACON 0x0000001C
++# define LCDC_DMACON_DMABUSY_OFFSET 2
++# define LCDC_DMACON_DMABUSY_SIZE 1
++# define LCDC_DMACON_DMAEN_OFFSET 0
++# define LCDC_DMACON_DMAEN_SIZE 1
++# define LCDC_DMACON_DMARST_OFFSET 1
++# define LCDC_DMACON_DMARST_SIZE 1
++# define LCDC_DMACON_DMAUPDT_OFFSET 3
++# define LCDC_DMACON_DMAUPDT_SIZE 1
++# define LCDC_DMACON_DMA2DEN_OFFSET 4
++# define LCDC_DMACON_DMA2DEN_SIZE 1
++#define LCDC_DMAFRMADD1 0x00000010
++# define LCDC_DMAFRMADD1_FRMADD_U_OFFSET 0
++# define LCDC_DMAFRMADD1_FRMADD_U_SIZE 32
++#define LCDC_DMAFRMADD2 0x00000014
++# define LCDC_DMAFRMADD2_FRMADD_L_OFFSET 0
++# define LCDC_DMAFRMADD2_FRMADD_L_SIZE 32
++#define LCDC_DMAFRMCFG 0x00000018
++# define LCDC_DMAFRMCFG_BRSTLEN_OFFSET 24
++# define LCDC_DMAFRMCFG_BRSTLEN_SIZE 7
++# define LCDC_DMAFRMCFG_FRMSIZE_OFFSET 0
++# define LCDC_DMAFRMCFG_FRMSIZE_SIZE 23
++#define LCDC_DMAFRMPT1 0x00000008
++# define LCDC_DMAFRMPT1_FRMPT_U_OFFSET 0
++# define LCDC_DMAFRMPT1_FRMPT_U_SIZE 23
++#define LCDC_DMAFRMPT2 0x0000000C
++# define LCDC_DMAFRMPT2_FRMPT_L_OFFSET 0
++# define LCDC_DMAFRMPT2_FRMPT_L_SIZE 23
++#define LCDC_DMA2DCFG 0x00000020
++# define LCDC_DMA2DCFG_ADDRINC_OFFSET 0
++# define LCDC_DMA2DCFG_ADDRINC_SIZE 16
++# define LCDC_DMA2DCFG_PIXELOFF_OFFSET 24
++# define LCDC_DMA2DCFG_PIXELOFF_SIZE 5
++#define LCDC_DP1_2 0x0000081C
++# define LCDC_DP1_2_DP1_2_OFFSET 0
++# define LCDC_DP1_2_DP1_2_SIZE 8
++#define LCDC_DP2_3 0x00000828
++# define LCDC_DP2_3_DP2_3_OFFSET 0
++# define LCDC_DP2_3_DP2_3_SIZE 12
++#define LCDC_DP3_4 0x00000830
++# define LCDC_DP3_4_DP3_4_OFFSET 0
++# define LCDC_DP3_4_DP3_4_SIZE 16
++#define LCDC_DP3_5 0x00000824
++# define LCDC_DP3_5_DP3_5_OFFSET 0
++# define LCDC_DP3_5_DP3_5_SIZE 20
++#define LCDC_DP4_5 0x00000834
++# define LCDC_DP4_5_DP4_5_OFFSET 0
++# define LCDC_DP4_5_DP4_5_SIZE 20
++#define LCDC_DP4_7 0x00000820
++# define LCDC_DP4_7_DP4_7_OFFSET 0
++# define LCDC_DP4_7_DP4_7_SIZE 28
++#define LCDC_DP5_7 0x0000082C
++# define LCDC_DP5_7_DP5_7_OFFSET 0
++# define LCDC_DP5_7_DP5_7_SIZE 28
++#define LCDC_DP6_7 0x00000838
++# define LCDC_DP6_7_DP6_7_OFFSET 0
++# define LCDC_DP6_7_DP6_7_SIZE 28
++#define LCDC_LCDCON1 0x00000800
++# define LCDC_LCDCON1_BYPASS_OFFSET 0
++# define LCDC_LCDCON1_BYPASS_SIZE 1
++# define LCDC_LCDCON1_CLKVAL_OFFSET 12
++# define LCDC_LCDCON1_CLKVAL_SIZE 9
++# define LCDC_LCDCON1_LINECNT_OFFSET 21
++# define LCDC_LCDCON1_LINECNT_SIZE 11
++#define LCDC_LCDCON2 0x00000804
++# define LCDC_LCDCON2_CLKMOD_OFFSET 15
++# define LCDC_LCDCON2_CLKMOD_SIZE 1
++# define LCDC_LCDCON2_DISTYPE_OFFSET 0
++# define LCDC_LCDCON2_DISTYPE_SIZE 2
++# define LCDC_LCDCON2_IFWIDTH_OFFSET 3
++# define LCDC_LCDCON2_IFWIDTH_SIZE 2
++# define LCDC_LCDCON2_INVCLK_OFFSET 11
++# define LCDC_LCDCON2_INVCLK_SIZE 1
++# define LCDC_LCDCON2_INVDVAL_OFFSET 12
++# define LCDC_LCDCON2_INVDVAL_SIZE 1
++# define LCDC_LCDCON2_INVFRAME_OFFSET 9
++# define LCDC_LCDCON2_INVFRAME_SIZE 1
++# define LCDC_LCDCON2_INVLINE_OFFSET 10
++# define LCDC_LCDCON2_INVLINE_SIZE 1
++# define LCDC_LCDCON2_INVVD_OFFSET 8
++# define LCDC_LCDCON2_INVVD_SIZE 1
++# define LCDC_LCDCON2_MEMOR_OFFSET 30
++# define LCDC_LCDCON2_MEMOR_SIZE 2
++# define LCDC_LCDCON2_PIXELSIZE_OFFSET 5
++# define LCDC_LCDCON2_PIXELSIZE_SIZE 3
++# define LCDC_LCDCON2_SCANMOD_OFFSET 2
++# define LCDC_LCDCON2_SCANMOD_SIZE 1
++#define LCDC_LCDFIFO 0x00000814
++# define LCDC_LCDFIFO_FIFOTH_OFFSET 0
++# define LCDC_LCDFIFO_FIFOTH_SIZE 16
++#define LCDC_LCDFRMCFG 0x00000810
++# define LCDC_LCDFRMCFG_LINESIZE_OFFSET 21
++# define LCDC_LCDFRMCFG_LINESIZE_SIZE 11
++# define LCDC_LCDFRMCFG_LINEVAL_OFFSET 0
++# define LCDC_LCDFRMCFG_LINEVAL_SIZE 11
++#define LCDC_LCDMVAL 0x00000818
++# define LCDC_LCDMVAL_MMODE_OFFSET 31
++# define LCDC_LCDMVAL_MMODE_SIZE 1
++# define LCDC_LCDMVAL_MVAL_OFFSET 0
++# define LCDC_LCDMVAL_MVAL_SIZE 8
++#define LCDC_LCDTIM1 0x00000808
++# define LCDC_LCDTIM1_VBP_OFFSET 8
++# define LCDC_LCDTIM1_VBP_SIZE 8
++# define LCDC_LCDTIM1_VFP_OFFSET 0
++# define LCDC_LCDTIM1_VFP_SIZE 8
++# define LCDC_LCDTIM1_VHDLY_OFFSET 24
++# define LCDC_LCDTIM1_VHDLY_SIZE 4
++# define LCDC_LCDTIM1_VPW_OFFSET 16
++# define LCDC_LCDTIM1_VPW_SIZE 6
++#define LCDC_LCDTIM2 0x0000080C
++# define LCDC_LCDTIM2_HBP_OFFSET 0
++# define LCDC_LCDTIM2_HBP_SIZE 8
++# define LCDC_LCDTIM2_HFP_OFFSET 21
++# define LCDC_LCDTIM2_HFP_SIZE 11
++# define LCDC_LCDTIM2_HPW_OFFSET 8
++# define LCDC_LCDTIM2_HPW_SIZE 6
++#define LCDC_LCD_GPR 0x0000085C
++# define LCDC_LCD_GPR_GPRB0_OFFSET 0
++# define LCDC_LCD_GPR_GPRB0_SIZE 1
++# define LCDC_LCD_GPR_GPRB1_OFFSET 1
++# define LCDC_LCD_GPR_GPRB1_SIZE 1
++# define LCDC_LCD_GPR_GPRB2_OFFSET 2
++# define LCDC_LCD_GPR_GPRB2_SIZE 1
++# define LCDC_LCD_GPR_GPRB3_OFFSET 3
++# define LCDC_LCD_GPR_GPRB3_SIZE 1
++# define LCDC_LCD_GPR_GPRB4_OFFSET 4
++# define LCDC_LCD_GPR_GPRB4_SIZE 1
++# define LCDC_LCD_GPR_GPRB5_OFFSET 5
++# define LCDC_LCD_GPR_GPRB5_SIZE 1
++# define LCDC_LCD_GPR_GPRB6_OFFSET 6
++# define LCDC_LCD_GPR_GPRB6_SIZE 1
++# define LCDC_LCD_GPR_GPRB7_OFFSET 7
++# define LCDC_LCD_GPR_GPRB7_SIZE 1
++#define LCDC_LCD_ICR 0x00000858
++# define LCDC_LCD_ICR_EOFIC_OFFSET 2
++# define LCDC_LCD_ICR_EOFIC_SIZE 1
++# define LCDC_LCD_ICR_LNIC_OFFSET 0
++# define LCDC_LCD_ICR_LNIC_SIZE 1
++# define LCDC_LCD_ICR_LSTLNIC_OFFSET 1
++# define LCDC_LCD_ICR_LSTLNIC_SIZE 1
++# define LCDC_LCD_ICR_MERIC_OFFSET 6
++# define LCDC_LCD_ICR_MERIC_SIZE 1
++# define LCDC_LCD_ICR_OWRIC_OFFSET 5
++# define LCDC_LCD_ICR_OWRIC_SIZE 1
++# define LCDC_LCD_ICR_UFLWIC_OFFSET 4
++# define LCDC_LCD_ICR_UFLWIC_SIZE 1
++#define LCDC_LCD_IDR 0x0000084C
++# define LCDC_LCD_IDR_EOFID_OFFSET 2
++# define LCDC_LCD_IDR_EOFID_SIZE 1
++# define LCDC_LCD_IDR_LNID_OFFSET 0
++# define LCDC_LCD_IDR_LNID_SIZE 1
++# define LCDC_LCD_IDR_LSTLNID_OFFSET 1
++# define LCDC_LCD_IDR_LSTLNID_SIZE 1
++# define LCDC_LCD_IDR_MERID_OFFSET 6
++# define LCDC_LCD_IDR_MERID_SIZE 1
++# define LCDC_LCD_IDR_OWRID_OFFSET 5
++# define LCDC_LCD_IDR_OWRID_SIZE 1
++# define LCDC_LCD_IDR_UFLWID_OFFSET 4
++# define LCDC_LCD_IDR_UFLWID_SIZE 1
++#define LCDC_LCD_IER 0x00000848
++# define LCDC_LCD_IER_EOFIE_OFFSET 2
++# define LCDC_LCD_IER_EOFIE_SIZE 1
++# define LCDC_LCD_IER_LNIE_OFFSET 0
++# define LCDC_LCD_IER_LNIE_SIZE 1
++# define LCDC_LCD_IER_LSTLNIE_OFFSET 1
++# define LCDC_LCD_IER_LSTLNIE_SIZE 1
++# define LCDC_LCD_IER_MERIE_OFFSET 6
++# define LCDC_LCD_IER_MERIE_SIZE 1
++# define LCDC_LCD_IER_OWRIE_OFFSET 5
++# define LCDC_LCD_IER_OWRIE_SIZE 1
++# define LCDC_LCD_IER_UFLWIE_OFFSET 4
++# define LCDC_LCD_IER_UFLWIE_SIZE 1
++#define LCDC_LCD_IMR 0x00000850
++# define LCDC_LCD_IMR_EOFIM_OFFSET 2
++# define LCDC_LCD_IMR_EOFIM_SIZE 1
++# define LCDC_LCD_IMR_LNIM_OFFSET 0
++# define LCDC_LCD_IMR_LNIM_SIZE 1
++# define LCDC_LCD_IMR_LSTLNIM_OFFSET 1
++# define LCDC_LCD_IMR_LSTLNIM_SIZE 1
++# define LCDC_LCD_IMR_MERIM_OFFSET 6
++# define LCDC_LCD_IMR_MERIM_SIZE 1
++# define LCDC_LCD_IMR_OWRIM_OFFSET 5
++# define LCDC_LCD_IMR_OWRIM_SIZE 1
++# define LCDC_LCD_IMR_UFLWIM_OFFSET 4
++# define LCDC_LCD_IMR_UFLWIM_SIZE 1
++#define LCDC_LCD_IRR 0x00000864
++# define LCDC_LCD_IRR_EOFIR_OFFSET 2
++# define LCDC_LCD_IRR_EOFIR_SIZE 1
++# define LCDC_LCD_IRR_LNIR_OFFSET 0
++# define LCDC_LCD_IRR_LNIR_SIZE 1
++# define LCDC_LCD_IRR_LSTLNIR_OFFSET 1
++# define LCDC_LCD_IRR_LSTLNIR_SIZE 1
++# define LCDC_LCD_IRR_MERIR_OFFSET 6
++# define LCDC_LCD_IRR_MERIR_SIZE 1
++# define LCDC_LCD_IRR_OWRIR_OFFSET 5
++# define LCDC_LCD_IRR_OWRIR_SIZE 1
++# define LCDC_LCD_IRR_UFLWIR_OFFSET 4
++# define LCDC_LCD_IRR_UFLWIR_SIZE 1
++#define LCDC_LCD_ISR 0x00000854
++# define LCDC_LCD_ISR_EOFIS_OFFSET 2
++# define LCDC_LCD_ISR_EOFIS_SIZE 1
++# define LCDC_LCD_ISR_LNIS_OFFSET 0
++# define LCDC_LCD_ISR_LNIS_SIZE 1
++# define LCDC_LCD_ISR_LSTLNIS_OFFSET 1
++# define LCDC_LCD_ISR_LSTLNIS_SIZE 1
++# define LCDC_LCD_ISR_MERIS_OFFSET 6
++# define LCDC_LCD_ISR_MERIS_SIZE 1
++# define LCDC_LCD_ISR_OWRIS_OFFSET 5
++# define LCDC_LCD_ISR_OWRIS_SIZE 1
++# define LCDC_LCD_ISR_UFLWIS_OFFSET 4
++# define LCDC_LCD_ISR_UFLWIS_SIZE 1
++#define LCDC_LCD_ITR 0x00000860
++# define LCDC_LCD_ITR_EOFIT_OFFSET 2
++# define LCDC_LCD_ITR_EOFIT_SIZE 1
++# define LCDC_LCD_ITR_LNIT_OFFSET 0
++# define LCDC_LCD_ITR_LNIT_SIZE 1
++# define LCDC_LCD_ITR_LSTLNIT_OFFSET 1
++# define LCDC_LCD_ITR_LSTLNIT_SIZE 1
++# define LCDC_LCD_ITR_MERIT_OFFSET 6
++# define LCDC_LCD_ITR_MERIT_SIZE 1
++# define LCDC_LCD_ITR_OWRIT_OFFSET 5
++# define LCDC_LCD_ITR_OWRIT_SIZE 1
++# define LCDC_LCD_ITR_UFLWIT_OFFSET 4
++# define LCDC_LCD_ITR_UFLWIT_SIZE 1
++#define LCDC_PWRCON 0x0000083C
++# define LCDC_PWRCON_GUARD_TIME_OFFSET 1
++# define LCDC_PWRCON_GUARD_TIME_SIZE 7
++# define LCDC_PWRCON_LCD_BUSY_OFFSET 31
++# define LCDC_PWRCON_LCD_BUSY_SIZE 1
++# define LCDC_PWRCON_LCD_PWR_OFFSET 0
++# define LCDC_PWRCON_LCD_PWR_SIZE 1
++
++#define LCDC_BIT(name) (1 << LCDC_##name##_OFFSET)
++#define LCDC_MKBF(name,value) (((value) & ((1 << LCDC_##name##_SIZE) - 1)) << LCDC_##name##_OFFSET)
++#define LCDC_GETBF(name,value) (((value) >> LCDC_##name##_OFFSET) & ((1 << LCDC_##name##_SIZE) - 1))
++#define LCDC_INSBF(name,value,old) (((old) & ~(((1 << LCDC_##name##_SIZE) - 1) << LCDC_##name##_OFFSET)) | LCDC_MKBF(name, value))
++
++#define lcdc_readl(port,reg) \
++ __raw_readl((port)->regs + LCDC_##reg)
++#define lcdc_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + LCDC_##reg)
++
++#endif /* __ASM_AVR32_PERIPH_LCDC_H__ */
+Index: linux-2.6.18-avr32/include/linux/fb.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/linux/fb.h 2006-11-02 15:54:18.000000000 +0100
++++ linux-2.6.18-avr32/include/linux/fb.h 2006-11-02 15:56:20.000000000 +0100
+@@ -191,6 +191,7 @@ struct fb_bitfield {
+ /* vtotal = 144d/288n/576i => PAL */
+ /* vtotal = 121d/242n/484i => NTSC */
+ #define FB_SYNC_ON_GREEN 32 /* sync on green */
++#define FB_SYNC_PCLK_RISING 64 /* pixel data sampled on rising pclk */
+
+ #define FB_VMODE_NONINTERLACED 0 /* non interlaced */
+ #define FB_VMODE_INTERLACED 1 /* interlaced */
+@@ -825,7 +826,7 @@ struct fb_info {
+ #define fb_writeq sbus_writeq
+ #define fb_memset sbus_memset_io
+
+-#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || (defined(__sh__) && !defined(__SH5__)) || defined(__powerpc__)
++#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || (defined(__sh__) && !defined(__SH5__)) || defined(__powerpc__) || defined(__avr32__)
+
+ #define fb_readb __raw_readb
+ #define fb_readw __raw_readw
diff --git a/packages/linux/linux-2.6.18/atmel-macb-ethernet-driver.patch b/packages/linux/linux-2.6.18/atmel-macb-ethernet-driver.patch
new file mode 100644
index 0000000000..e8c54e141b
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-macb-ethernet-driver.patch
@@ -0,0 +1,1614 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Thu, 29 Jun 2006 15:02:49 +0200
+Subject: [PATCH] Atmel MACB ethernet driver
+
+This is a network device driver for the Atmel MACB interface, which
+is present on the AT32AP7000 device from Atmel. I think it's basically
+the same as the EMAC interface on AT91, so it should possibly be
+merged with the at91_ether driver some time in the future. At the
+moment, however, the at91_ether driver has quite a lot of at91-
+specific dependencies so it's hard to reuse on AVR32.
+
+This is basically the same patch as the one distributed with the
+AT32STK1000 BSP version 1.0, converted to use platform_device and
+struct clk instead of at32_device.
+
+---
+ drivers/net/Kconfig | 11
+ drivers/net/Makefile | 2
+ drivers/net/macb.c | 1159 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ drivers/net/macb.h | 387 +++++++++++++++++
+ 4 files changed, 1559 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/net/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/net/Kconfig 2006-11-02 14:16:07.000000000 +0100
++++ linux-2.6.18-avr32/drivers/net/Kconfig 2006-11-02 14:17:29.000000000 +0100
+@@ -185,6 +185,17 @@ config MII
+ or internal device. It is safe to say Y or M here even if your
+ ethernet card lack MII.
+
++config MACB
++ tristate "Atmel MACB support"
++ depends on NET_ETHERNET && AVR32
++ select MII
++ help
++ The Atmel MACB ethernet interface is found on many AT32 and AT91
++ parts. Say Y to include support for the MACB chip.
++
++ To compile this driver as a module, choose M here: the module
++ will be called macb.
++
+ source "drivers/net/arm/Kconfig"
+
+ config MACE
+Index: linux-2.6.18-avr32/drivers/net/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/net/Makefile 2006-11-02 14:16:07.000000000 +0100
++++ linux-2.6.18-avr32/drivers/net/Makefile 2006-11-02 14:17:29.000000000 +0100
+@@ -202,6 +202,8 @@ obj-$(CONFIG_SMC911X) += smc911x.o
+ obj-$(CONFIG_DM9000) += dm9000.o
+ obj-$(CONFIG_FEC_8XX) += fec_8xx/
+
++obj-$(CONFIG_MACB) += macb.o
++
+ obj-$(CONFIG_ARM) += arm/
+ obj-$(CONFIG_DEV_APPLETALK) += appletalk/
+ obj-$(CONFIG_TR) += tokenring/
+Index: linux-2.6.18-avr32/drivers/net/macb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/net/macb.c 2006-11-02 16:33:48.000000000 +0100
+@@ -0,0 +1,1159 @@
++/*
++ * Atmel MACB Ethernet Controller driver
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/kernel.h>
++#include <linux/types.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/mii.h>
++#include <linux/mutex.h>
++#include <linux/dma-mapping.h>
++#include <linux/ethtool.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/board.h>
++
++#include "macb.h"
++
++#define to_net_dev(class) container_of(class, struct net_device, class_dev)
++
++#define RX_BUFFER_SIZE 128
++#define RX_RING_SIZE 512
++#define RX_RING_BYTES (sizeof(struct dma_desc) * RX_RING_SIZE)
++
++/* Make the IP header word-aligned (the ethernet header is 14 bytes) */
++#define RX_OFFSET 2
++
++#define TX_RING_SIZE 128
++#define DEF_TX_RING_PENDING (TX_RING_SIZE - 1)
++#define TX_RING_BYTES (sizeof(struct dma_desc) * TX_RING_SIZE)
++
++#define TX_RING_GAP(bp) \
++ (TX_RING_SIZE - (bp)->tx_pending)
++#define TX_BUFFS_AVAIL(bp) \
++ (((bp)->tx_tail <= (bp)->tx_head) ? \
++ (bp)->tx_tail + (bp)->tx_pending - (bp)->tx_head : \
++ (bp)->tx_tail - (bp)->tx_head - TX_RING_GAP(bp))
++#define NEXT_TX(n) (((n) + 1) & (TX_RING_SIZE - 1))
++
++#define NEXT_RX(n) (((n) + 1) & (RX_RING_SIZE - 1))
++
++/* minimum number of free TX descriptors before waking up TX process */
++#define MACB_TX_WAKEUP_THRESH (TX_RING_SIZE / 4)
++
++#define MACB_RX_INT_FLAGS (MACB_BIT(RCOMP) | MACB_BIT(RXUBR) \
++ | MACB_BIT(ISR_ROVR))
++
++static void __macb_set_hwaddr(struct macb *bp)
++{
++ u32 bottom;
++ u16 top;
++
++ bottom = cpu_to_le32(*((u32 *)bp->dev->dev_addr));
++ macb_writel(bp, SA1B, bottom);
++ top = cpu_to_le16(*((u16 *)(bp->dev->dev_addr + 4)));
++ macb_writel(bp, SA1T, top);
++}
++
++static void macb_enable_mdio(struct macb *bp)
++{
++ unsigned long flags;
++ u32 reg;
++
++ spin_lock_irqsave(&bp->lock, flags);
++ reg = macb_readl(bp, NCR);
++ reg |= MACB_BIT(MPE);
++ macb_writel(bp, NCR, reg);
++ macb_writel(bp, IER, MACB_BIT(MFD));
++ spin_unlock_irqrestore(&bp->lock, flags);
++}
++
++static void macb_disable_mdio(struct macb *bp)
++{
++ unsigned long flags;
++ u32 reg;
++
++ spin_lock_irqsave(&bp->lock, flags);
++ reg = macb_readl(bp, NCR);
++ reg &= ~MACB_BIT(MPE);
++ macb_writel(bp, NCR, reg);
++ macb_writel(bp, IDR, MACB_BIT(MFD));
++ spin_unlock_irqrestore(&bp->lock, flags);
++}
++
++static int macb_mdio_read(struct net_device *dev, int phy_id, int location)
++{
++ struct macb *bp = netdev_priv(dev);
++ int value;
++
++ mutex_lock(&bp->mdio_mutex);
++
++ macb_enable_mdio(bp);
++ macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_SOF)
++ | MACB_BF(RW, MACB_MAN_READ)
++ | MACB_BF(PHYA, phy_id)
++ | MACB_BF(REGA, location)
++ | MACB_BF(CODE, MACB_MAN_CODE)));
++
++ wait_for_completion(&bp->mdio_complete);
++
++ value = MACB_BFEXT(DATA, macb_readl(bp, MAN));
++ macb_disable_mdio(bp);
++ mutex_unlock(&bp->mdio_mutex);
++
++ return value;
++}
++
++static void macb_mdio_write(struct net_device *dev, int phy_id,
++ int location, int val)
++{
++ struct macb *bp = netdev_priv(dev);
++
++ dev_dbg(&bp->pdev->dev, "mdio_write %02x:%02x <- %04x\n",
++ phy_id, location, val);
++
++ mutex_lock(&bp->mdio_mutex);
++ macb_enable_mdio(bp);
++
++ macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_SOF)
++ | MACB_BF(RW, MACB_MAN_WRITE)
++ | MACB_BF(PHYA, phy_id)
++ | MACB_BF(REGA, location)
++ | MACB_BF(CODE, MACB_MAN_CODE)
++ | MACB_BF(DATA, val)));
++
++ wait_for_completion(&bp->mdio_complete);
++
++ macb_disable_mdio(bp);
++ mutex_unlock(&bp->mdio_mutex);
++}
++
++static void macb_set_media(struct macb *bp, int media)
++{
++ u32 reg;
++
++ spin_lock_irq(&bp->lock);
++ reg = macb_readl(bp, NCFGR);
++ reg &= ~(MACB_BIT(SPD) | MACB_BIT(FD));
++ if (media & (ADVERTISE_100HALF | ADVERTISE_100FULL))
++ reg |= MACB_BIT(SPD);
++ if (media & ADVERTISE_FULL)
++ reg |= MACB_BIT(FD);
++ macb_writel(bp, NCFGR, reg);
++ spin_unlock_irq(&bp->lock);
++}
++
++static void macb_check_media(struct macb *bp, int ok_to_print, int init_media)
++{
++ struct mii_if_info *mii = &bp->mii;
++ unsigned int old_carrier, new_carrier;
++ int advertise, lpa, media, duplex;
++
++ /* if forced media, go no further */
++ if (mii->force_media)
++ return;
++
++ /* check current and old link status */
++ old_carrier = netif_carrier_ok(mii->dev) ? 1 : 0;
++ new_carrier = (unsigned int) mii_link_ok(mii);
++
++ /* if carrier state did not change, assume nothing else did */
++ if (!init_media && old_carrier == new_carrier)
++ return;
++
++ /* no carrier, nothing much to do */
++ if (!new_carrier) {
++ netif_carrier_off(mii->dev);
++ printk(KERN_INFO "%s: link down\n", mii->dev->name);
++ return;
++ }
++
++ /*
++ * we have carrier, see who's on the other end
++ */
++ netif_carrier_on(mii->dev);
++
++ /* get MII advertise and LPA values */
++ if (!init_media && mii->advertising) {
++ advertise = mii->advertising;
++ } else {
++ advertise = mii->mdio_read(mii->dev, mii->phy_id, MII_ADVERTISE);
++ mii->advertising = advertise;
++ }
++ lpa = mii->mdio_read(mii->dev, mii->phy_id, MII_LPA);
++
++ /* figure out media and duplex from advertise and LPA values */
++ media = mii_nway_result(lpa & advertise);
++ duplex = (media & ADVERTISE_FULL) ? 1 : 0;
++
++ if (ok_to_print)
++ printk(KERN_INFO "%s: link up, %sMbps, %s-duplex, lpa 0x%04X\n",
++ mii->dev->name,
++ media & (ADVERTISE_100FULL | ADVERTISE_100HALF) ? "100" : "10",
++ duplex ? "full" : "half", lpa);
++
++ mii->full_duplex = duplex;
++
++ /* Let the MAC know about the new link state */
++ macb_set_media(bp, media);
++}
++
++static void macb_update_stats(struct macb *bp)
++{
++ u32 __iomem *reg = bp->regs + MACB_PFR;
++ u32 *p = &bp->hw_stats.rx_pause_frames;
++ u32 *end = &bp->hw_stats.tx_pause_frames + 1;
++
++ WARN_ON((unsigned long)(end - p - 1) != (MACB_TPF - MACB_PFR) / 4);
++
++ for(; p < end; p++, reg++)
++ *p += __raw_readl(reg);
++}
++
++static void macb_periodic_task(void *arg)
++{
++ struct macb *bp = arg;
++
++ macb_update_stats(bp);
++ macb_check_media(bp, 1, 0);
++
++ schedule_delayed_work(&bp->periodic_task, HZ);
++}
++
++static void macb_tx(struct macb *bp)
++{
++ unsigned int tail;
++ unsigned int head;
++ u32 status;
++
++ status = macb_readl(bp, TSR);
++ macb_writel(bp, TSR, status);
++
++ dev_dbg(&bp->pdev->dev, "macb_tx status = %02lx\n",
++ (unsigned long)status);
++
++ if (status & MACB_BIT(UND)) {
++ printk(KERN_ERR "%s: TX underrun, resetting buffers\n",
++ bp->dev->name);
++ bp->tx_head = bp->tx_tail = 0;
++ }
++
++ if (!(status & MACB_BIT(COMP)))
++ /*
++ * This may happen when a buffer becomes complete
++ * between reading the ISR and scanning the
++ * descriptors. Nothing to worry about.
++ */
++ return;
++
++ head = bp->tx_head;
++ for (tail = bp->tx_tail; tail != head; tail = NEXT_TX(tail)) {
++ struct ring_info *rp = &bp->tx_skb[tail];
++ struct sk_buff *skb = rp->skb;
++ u32 bufstat;
++
++ BUG_ON(skb == NULL);
++
++ rmb();
++ bufstat = bp->tx_ring[tail].ctrl;
++
++ if (!(bufstat & MACB_BIT(TX_USED)))
++ break;
++
++ dev_dbg(&bp->pdev->dev, "skb %u (data %p) TX complete\n",
++ tail, skb->data);
++ dma_unmap_single(&bp->pdev->dev, rp->mapping, skb->len,
++ DMA_TO_DEVICE);
++ bp->stats.tx_packets++;
++ bp->stats.tx_bytes += skb->len;
++ rp->skb = NULL;
++ dev_kfree_skb_irq(skb);
++ }
++
++ bp->tx_tail = tail;
++ if (netif_queue_stopped(bp->dev) &&
++ TX_BUFFS_AVAIL(bp) > MACB_TX_WAKEUP_THRESH)
++ netif_wake_queue(bp->dev);
++}
++
++static int macb_rx_frame(struct macb *bp, unsigned int first_frag,
++ unsigned int last_frag)
++{
++ unsigned int len;
++ unsigned int frag;
++ unsigned int offset = 0;
++ struct sk_buff *skb;
++
++ len = MACB_BFEXT(RX_FRMLEN, bp->rx_ring[last_frag].ctrl);
++
++ dev_dbg(&bp->pdev->dev, "macb_rx_frame frags %u - %u (len %u)\n",
++ first_frag, last_frag, len);
++
++ skb = dev_alloc_skb(len + RX_OFFSET);
++ if (!skb) {
++ bp->stats.rx_dropped++;
++ for (frag = first_frag; ; frag = NEXT_RX(frag)) {
++ bp->rx_ring[frag].addr &= ~MACB_BIT(RX_USED);
++ if (frag == last_frag)
++ break;
++ }
++ wmb();
++ return 1;
++ }
++
++ skb_reserve(skb, RX_OFFSET);
++ skb->dev = bp->dev;
++ skb->ip_summed = CHECKSUM_NONE;
++ skb_put(skb, len);
++
++ for (frag = first_frag; ; frag = NEXT_RX(frag)) {
++ unsigned int frag_len = RX_BUFFER_SIZE;
++
++ if (offset + frag_len > len) {
++ BUG_ON(frag != last_frag);
++ frag_len = len - offset;
++ }
++ memcpy(skb->data + offset,
++ bp->rx_buffers + (RX_BUFFER_SIZE * frag),
++ frag_len);
++ offset += RX_BUFFER_SIZE;
++ bp->rx_ring[frag].addr &= ~MACB_BIT(RX_USED);
++ wmb();
++
++ if (frag == last_frag)
++ break;
++ }
++
++ skb->protocol = eth_type_trans(skb, bp->dev);
++
++ bp->stats.rx_packets++;
++ bp->stats.rx_bytes += len;
++ bp->dev->last_rx = jiffies;
++ dev_dbg(&bp->pdev->dev, "received skb of length %u, csum: %08x\n",
++ skb->len, skb->csum);
++ netif_receive_skb(skb);
++
++ return 0;
++}
++
++/* Mark DMA descriptors from begin up to and not including end as unused */
++static void discard_partial_frame(struct macb *bp, unsigned int begin,
++ unsigned int end)
++{
++ unsigned int frag;
++
++ for (frag = begin; frag != end; frag = NEXT_RX(frag))
++ bp->rx_ring[frag].addr &= ~MACB_BIT(RX_USED);
++ wmb();
++
++ /*
++ * When this happens, the hardware stats registers for
++ * whatever caused this is updated, so we don't have to record
++ * anything.
++ */
++}
++
++static int macb_rx(struct macb *bp, int budget)
++{
++ int received = 0;
++ unsigned int tail = bp->rx_tail;
++ int first_frag = -1;
++
++ for (; budget > 0; tail = NEXT_RX(tail)) {
++ u32 addr, ctrl;
++
++ rmb();
++ addr = bp->rx_ring[tail].addr;
++ ctrl = bp->rx_ring[tail].ctrl;
++
++ if (!(addr & MACB_BIT(RX_USED)))
++ break;
++
++ if (ctrl & MACB_BIT(RX_SOF)) {
++ if (first_frag != -1)
++ discard_partial_frame(bp, first_frag, tail);
++ first_frag = tail;
++ }
++
++ if (ctrl & MACB_BIT(RX_EOF)) {
++ int dropped;
++ BUG_ON(first_frag == -1);
++
++ dropped = macb_rx_frame(bp, first_frag, tail);
++ first_frag = -1;
++ if (!dropped) {
++ received++;
++ budget--;
++ }
++ }
++ }
++
++ if (first_frag != -1)
++ bp->rx_tail = first_frag;
++ else
++ bp->rx_tail = tail;
++
++ return received;
++}
++
++static int macb_poll(struct net_device *dev, int *budget)
++{
++ struct macb *bp = netdev_priv(dev);
++ int orig_budget, work_done, retval = 0;
++ u32 status;
++
++ status = macb_readl(bp, RSR);
++ macb_writel(bp, RSR, status);
++
++ if (!status) {
++ /*
++ * This may happen if an interrupt was pending before
++ * this function was called last time, and no packets
++ * have been received since.
++ */
++ netif_rx_complete(dev);
++ goto out;
++ }
++
++ dev_dbg(&bp->pdev->dev, "poll: status = %08lx, budget = %d\n",
++ (unsigned long)status, *budget);
++
++ if (!(status & MACB_BIT(REC))) {
++ dev_warn(&bp->pdev->dev,
++ "No RX buffers complete, status = %02lx\n",
++ (unsigned long)status);
++ netif_rx_complete(dev);
++ goto out;
++ }
++
++ orig_budget = *budget;
++ if (orig_budget > dev->quota)
++ orig_budget = dev->quota;
++
++ work_done = macb_rx(bp, orig_budget);
++ if (work_done < orig_budget) {
++ netif_rx_complete(dev);
++ retval = 0;
++ } else {
++ retval = 1;
++ }
++
++ /*
++ * We've done what we can to clean the buffers. Make sure we
++ * get notified when new packets arrive.
++ */
++out:
++ macb_writel(bp, IER, MACB_RX_INT_FLAGS);
++
++ /* TODO: Handle errors */
++
++ return retval;
++}
++
++static irqreturn_t macb_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct net_device *dev = dev_id;
++ struct macb *bp = netdev_priv(dev);
++ u32 status;
++
++ status = macb_readl(bp, ISR);
++
++ if (unlikely(!status))
++ return IRQ_NONE;
++
++ spin_lock(&bp->lock);
++
++ /* close possible race with dev_close */
++ if (unlikely(!netif_running(dev))) {
++ macb_writel(bp, IDR, ~0UL);
++ spin_unlock(&bp->lock);
++ return IRQ_HANDLED;
++ }
++
++ while (status) {
++ if (status & MACB_BIT(MFD))
++ complete(&bp->mdio_complete);
++
++ if (status & MACB_RX_INT_FLAGS) {
++ if (netif_rx_schedule_prep(dev)) {
++ /*
++ * There's no point taking any more interrupts
++ * until we have processed the buffers
++ */
++ macb_writel(bp, IDR, MACB_RX_INT_FLAGS);
++ dev_dbg(&bp->pdev->dev, "scheduling RX softirq\n");
++ __netif_rx_schedule(dev);
++ }
++ }
++
++ if (status & (MACB_BIT(TCOMP) | MACB_BIT(ISR_TUND)))
++ macb_tx(bp);
++
++ /*
++ * Link change detection isn't possible with RMII, so we'll
++ * add that if/when we get our hands on a full-blown MII PHY.
++ */
++
++ if (status & MACB_BIT(HRESP)) {
++ /*
++ * TODO: Reset the hardware, and maybe move the printk
++ * to a lower-priority context as well (work queue?)
++ */
++ printk(KERN_ERR "%s: DMA bus error: HRESP not OK\n",
++ dev->name);
++ }
++
++ status = macb_readl(bp, ISR);
++ }
++
++ spin_unlock(&bp->lock);
++
++ return IRQ_HANDLED;
++}
++
++static int macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++ struct macb *bp = netdev_priv(dev);
++ dma_addr_t mapping;
++ unsigned int len, entry;
++ u32 ctrl;
++
++#ifdef DEBUG
++ int i;
++ dev_dbg(&bp->pdev->dev,
++ "start_xmit: len %u head %p data %p tail %p end %p\n",
++ skb->len, skb->head, skb->data, skb->tail, skb->end);
++ dev_dbg(&bp->pdev->dev,
++ "data:");
++ for (i = 0; i < 16; i++)
++ printk(" %02x", (unsigned int)skb->data[i]);
++ printk("\n");
++#endif
++
++ len = skb->len;
++ spin_lock_irq(&bp->lock);
++
++ /* This is a hard error, log it. */
++ if (TX_BUFFS_AVAIL(bp) < 1) {
++ netif_stop_queue(dev);
++ spin_unlock_irq(&bp->lock);
++ dev_err(&bp->pdev->dev,
++ "BUG! Tx Ring full when queue awake!\n");
++ dev_dbg(&bp->pdev->dev, "tx_head = %u, tx_tail = %u\n",
++ bp->tx_head, bp->tx_tail);
++ return 1;
++ }
++
++ entry = bp->tx_head;
++ dev_dbg(&bp->pdev->dev, "Allocated ring entry %u\n", entry);
++ mapping = dma_map_single(&bp->pdev->dev, skb->data,
++ len, DMA_TO_DEVICE);
++ bp->tx_skb[entry].skb = skb;
++ bp->tx_skb[entry].mapping = mapping;
++ dev_dbg(&bp->pdev->dev, "Mapped skb data %p to DMA addr %08lx\n",
++ skb->data, (unsigned long)mapping);
++
++ ctrl = MACB_BF(TX_FRMLEN, len);
++ ctrl |= MACB_BIT(TX_LAST);
++ if (entry == (TX_RING_SIZE - 1))
++ ctrl |= MACB_BIT(TX_WRAP);
++
++ bp->tx_ring[entry].addr = mapping;
++ bp->tx_ring[entry].ctrl = ctrl;
++ wmb();
++
++ entry = NEXT_TX(entry);
++ bp->tx_head = entry;
++
++ macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
++
++ if (TX_BUFFS_AVAIL(bp) < 1)
++ netif_stop_queue(dev);
++
++ spin_unlock_irq(&bp->lock);
++
++ dev->trans_start = jiffies;
++
++ return 0;
++}
++
++static void macb_free_consistent(struct macb *bp)
++{
++ if (bp->tx_skb) {
++ kfree(bp->tx_skb);
++ bp->tx_skb = NULL;
++ }
++ if (bp->rx_ring) {
++ dma_free_coherent(&bp->pdev->dev, RX_RING_BYTES,
++ bp->rx_ring, bp->rx_ring_dma);
++ bp->rx_ring = NULL;
++ }
++ if (bp->tx_ring) {
++ dma_free_coherent(&bp->pdev->dev, TX_RING_BYTES,
++ bp->tx_ring, bp->tx_ring_dma);
++ bp->tx_ring = NULL;
++ }
++ if (bp->rx_buffers) {
++ dma_free_coherent(&bp->pdev->dev,
++ RX_RING_SIZE * RX_BUFFER_SIZE,
++ bp->rx_buffers, bp->rx_buffers_dma);
++ bp->rx_buffers = NULL;
++ }
++}
++
++static int macb_alloc_consistent(struct macb *bp)
++{
++ int size;
++
++ size = TX_RING_SIZE * sizeof(struct ring_info);
++ bp->tx_skb = kmalloc(size, GFP_KERNEL);
++ if (!bp->tx_skb)
++ goto out_err;
++
++ size = RX_RING_BYTES;
++ bp->rx_ring = dma_alloc_coherent(&bp->pdev->dev, size,
++ &bp->rx_ring_dma, GFP_KERNEL);
++ if (!bp->rx_ring)
++ goto out_err;
++ dev_dbg(&bp->pdev->dev,
++ "Allocated RX ring of %d bytes at %08lx (mapped %p)\n",
++ size, (unsigned long)bp->rx_ring_dma, bp->rx_ring);
++
++ size = TX_RING_BYTES;
++ bp->tx_ring = dma_alloc_coherent(&bp->pdev->dev, size,
++ &bp->tx_ring_dma, GFP_KERNEL);
++ if (!bp->tx_ring)
++ goto out_err;
++ dev_dbg(&bp->pdev->dev,
++ "Allocated TX ring of %d bytes at %08lx (mapped %p)\n",
++ size, (unsigned long)bp->tx_ring_dma, bp->tx_ring);
++
++ size = RX_RING_SIZE * RX_BUFFER_SIZE;
++ bp->rx_buffers = dma_alloc_coherent(&bp->pdev->dev, size,
++ &bp->rx_buffers_dma, GFP_KERNEL);
++ if (!bp->rx_buffers)
++ goto out_err;
++ dev_dbg(&bp->pdev->dev,
++ "Allocated RX buffers of %d bytes at %08lx (mapped %p)\n",
++ size, (unsigned long)bp->rx_buffers_dma, bp->rx_buffers);
++
++ return 0;
++
++out_err:
++ macb_free_consistent(bp);
++ return -ENOMEM;
++}
++
++static void macb_init_rings(struct macb *bp)
++{
++ int i;
++ dma_addr_t addr;
++
++ addr = bp->rx_buffers_dma;
++ for (i = 0; i < RX_RING_SIZE; i++) {
++ bp->rx_ring[i].addr = addr;
++ bp->rx_ring[i].ctrl = 0;
++ addr += RX_BUFFER_SIZE;
++ }
++ bp->rx_ring[RX_RING_SIZE - 1].addr |= MACB_BIT(RX_WRAP);
++
++ for (i = 0; i < TX_RING_SIZE; i++) {
++ bp->tx_ring[i].addr = 0;
++ bp->tx_ring[i].ctrl = MACB_BIT(TX_USED);
++ }
++ bp->tx_ring[TX_RING_SIZE - 1].ctrl |= MACB_BIT(TX_WRAP);
++
++ bp->rx_tail = bp->tx_head = bp->tx_tail = 0;
++}
++
++static void macb_reset_hw(struct macb *bp)
++{
++ /* Make sure we have the write buffer for ourselves */
++ wmb();
++
++ /*
++ * Disable RX and TX (XXX: Should we halt the transmission
++ * more gracefully?)
++ */
++ macb_writel(bp, NCR, 0);
++
++ /* Clear the stats registers (XXX: Update stats first?) */
++ macb_writel(bp, NCR, MACB_BIT(CLRSTAT));
++
++ /* Clear all status flags */
++ macb_writel(bp, TSR, ~0UL);
++ macb_writel(bp, RSR, ~0UL);
++
++ /* Disable all interrupts */
++ macb_writel(bp, IDR, ~0UL);
++ macb_readl(bp, ISR);
++}
++
++static void macb_init_hw(struct macb *bp)
++{
++ unsigned long pclk_hz;
++ u32 config;
++
++ macb_reset_hw(bp);
++ __macb_set_hwaddr(bp);
++
++ /* Set RMII mode */
++ macb_writel(bp, USRIO, MACB_BIT(RMII));
++
++ /* Initialize Network Configuration Register */
++ pclk_hz = clk_get_rate(bp->pclk);
++ if (pclk_hz <= 20000000)
++ config = MACB_BF(CLK, MACB_CLK_DIV8);
++ else if (pclk_hz <= 40000000)
++ config = MACB_BF(CLK, MACB_CLK_DIV16);
++ else if (pclk_hz <= 80000000)
++ config = MACB_BF(CLK, MACB_CLK_DIV32);
++ else
++ config = MACB_BF(CLK, MACB_CLK_DIV64);
++
++ config |= MACB_BIT(PAE); /* PAuse Enable */
++ config |= MACB_BIT(DRFCS); /* Discard Rx FCS */
++ if (bp->dev->flags & IFF_PROMISC)
++ config |= MACB_BIT(CAF); /* Copy All Frames */
++ if (!(bp->dev->flags & IFF_BROADCAST))
++ config |= MACB_BIT(NBC); /* No BroadCast */
++ macb_writel(bp, NCFGR, config);
++
++ /* Initialize TX and RX buffers */
++ macb_writel(bp, RBQP, bp->rx_ring_dma);
++ macb_writel(bp, TBQP, bp->tx_ring_dma);
++
++ /* Enable TX and RX */
++ macb_writel(bp, NCR, MACB_BIT(RE) | MACB_BIT(TE));
++
++ /* Enable interrupts */
++ macb_writel(bp, IER, (MACB_BIT(RCOMP)
++ | MACB_BIT(RXUBR)
++ | MACB_BIT(ISR_TUND)
++ | MACB_BIT(ISR_RLE)
++ | MACB_BIT(TXERR)
++ | MACB_BIT(TCOMP)
++ | MACB_BIT(ISR_ROVR)
++ | MACB_BIT(HRESP)));
++}
++
++static void macb_init_phy(struct net_device *dev)
++{
++ struct macb *bp = netdev_priv(dev);
++
++ /* Set some reasonable default settings */
++ macb_mdio_write(dev, bp->mii.phy_id, MII_ADVERTISE,
++ ADVERTISE_CSMA | ADVERTISE_ALL);
++ macb_mdio_write(dev, bp->mii.phy_id, MII_BMCR,
++ (BMCR_SPEED100 | BMCR_ANENABLE
++ | BMCR_ANRESTART | BMCR_FULLDPLX));
++}
++
++static int macb_open(struct net_device *dev)
++{
++ struct macb *bp = netdev_priv(dev);
++ int err;
++
++ dev_dbg(&bp->pdev->dev, "open\n");
++
++ err = macb_alloc_consistent(bp);
++ if (err) {
++ printk(KERN_ERR
++ "%s: Unable to allocate DMA memory (error %d)\n",
++ dev->name, err);
++ return err;
++ }
++
++ macb_init_rings(bp);
++ macb_init_hw(bp);
++ macb_init_phy(dev);
++
++ macb_check_media(bp, 1, 1);
++ netif_start_queue(dev);
++
++ schedule_delayed_work(&bp->periodic_task, HZ);
++
++ return 0;
++}
++
++static int macb_close(struct net_device *dev)
++{
++ struct macb *bp = netdev_priv(dev);
++ unsigned long flags;
++
++ cancel_rearming_delayed_work(&bp->periodic_task);
++
++ netif_stop_queue(dev);
++
++ spin_lock_irqsave(&bp->lock, flags);
++ macb_reset_hw(bp);
++ netif_carrier_off(dev);
++ spin_unlock_irqrestore(&bp->lock, flags);
++
++ macb_free_consistent(bp);
++
++ return 0;
++}
++
++static struct net_device_stats *macb_get_stats(struct net_device *dev)
++{
++ struct macb *bp = netdev_priv(dev);
++ struct net_device_stats *nstat = &bp->stats;
++ struct macb_stats *hwstat = &bp->hw_stats;
++
++ /* Convert HW stats into netdevice stats */
++ nstat->rx_errors = (hwstat->rx_fcs_errors +
++ hwstat->rx_align_errors +
++ hwstat->rx_resource_errors +
++ hwstat->rx_overruns +
++ hwstat->rx_oversize_pkts +
++ hwstat->rx_jabbers +
++ hwstat->rx_undersize_pkts +
++ hwstat->sqe_test_errors +
++ hwstat->rx_length_mismatch);
++ nstat->tx_errors = (hwstat->tx_late_cols +
++ hwstat->tx_excessive_cols +
++ hwstat->tx_underruns +
++ hwstat->tx_carrier_errors);
++ nstat->collisions = (hwstat->tx_single_cols +
++ hwstat->tx_multiple_cols +
++ hwstat->tx_excessive_cols);
++ nstat->rx_length_errors = (hwstat->rx_oversize_pkts +
++ hwstat->rx_jabbers +
++ hwstat->rx_undersize_pkts +
++ hwstat->rx_length_mismatch);
++ nstat->rx_over_errors = hwstat->rx_resource_errors;
++ nstat->rx_crc_errors = hwstat->rx_fcs_errors;
++ nstat->rx_frame_errors = hwstat->rx_align_errors;
++ nstat->rx_fifo_errors = hwstat->rx_overruns;
++ /* XXX: What does "missed" mean? */
++ nstat->tx_aborted_errors = hwstat->tx_excessive_cols;
++ nstat->tx_carrier_errors = hwstat->tx_carrier_errors;
++ nstat->tx_fifo_errors = hwstat->tx_underruns;
++ /* Don't know about heartbeat or window errors... */
++
++ return nstat;
++}
++
++static int macb_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
++{
++ struct macb *bp = netdev_priv(dev);
++ int ret;
++ unsigned long flags;
++
++ spin_lock_irqsave(&bp->lock, flags);
++ ret = mii_ethtool_gset(&bp->mii, cmd);
++ spin_unlock_irqrestore(&bp->lock, flags);
++
++ return ret;
++}
++
++static int macb_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
++{
++ struct macb *bp = netdev_priv(dev);
++ int ret;
++ unsigned long flags;
++
++ spin_lock_irqsave(&bp->lock, flags);
++ ret = mii_ethtool_sset(&bp->mii, cmd);
++ spin_unlock_irqrestore(&bp->lock, flags);
++
++ return ret;
++}
++
++static void macb_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
++{
++ struct macb *bp = netdev_priv(dev);
++
++ strcpy(info->driver, bp->pdev->dev.driver->name);
++ strcpy(info->version, "$Revision: 1.14 $");
++ strcpy(info->bus_info, bp->pdev->dev.bus_id);
++}
++
++static int macb_nway_reset(struct net_device *dev)
++{
++ struct macb *bp = netdev_priv(dev);
++ return mii_nway_restart(&bp->mii);
++}
++
++static struct ethtool_ops macb_ethtool_ops = {
++ .get_settings = macb_get_settings,
++ .set_settings = macb_set_settings,
++ .get_drvinfo = macb_get_drvinfo,
++ .nway_reset = macb_nway_reset,
++ .get_link = ethtool_op_get_link,
++};
++
++static int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
++{
++ struct macb *bp = netdev_priv(dev);
++ int ret;
++ unsigned long flags;
++
++ if (!netif_running(dev))
++ return -EINVAL;
++
++ spin_lock_irqsave(&bp->lock, flags);
++ ret = generic_mii_ioctl(&bp->mii, if_mii(rq), cmd, NULL);
++ spin_unlock_irqrestore(&bp->lock, flags);
++
++ return ret;
++}
++
++static ssize_t macb_mii_show(const struct class_device *cd, char *buf,
++ unsigned long addr)
++{
++ struct net_device *dev = to_net_dev(cd);
++ struct macb *bp = netdev_priv(dev);
++ ssize_t ret = -EINVAL;
++
++ if (netif_running(dev)) {
++ int value;
++ value = macb_mdio_read(dev, bp->mii.phy_id, addr);
++ ret = sprintf(buf, "0x%04x\n", (uint16_t)value);
++ }
++
++ return ret;
++}
++
++#define MII_ENTRY(name, addr) \
++static ssize_t show_##name(struct class_device *cd, char *buf) \
++{ \
++ return macb_mii_show(cd, buf, addr); \
++} \
++static CLASS_DEVICE_ATTR(name, S_IRUGO, show_##name, NULL)
++
++MII_ENTRY(bmcr, MII_BMCR);
++MII_ENTRY(bmsr, MII_BMSR);
++MII_ENTRY(physid1, MII_PHYSID1);
++MII_ENTRY(physid2, MII_PHYSID2);
++MII_ENTRY(advertise, MII_ADVERTISE);
++MII_ENTRY(lpa, MII_LPA);
++MII_ENTRY(expansion, MII_EXPANSION);
++
++static struct attribute *macb_mii_attrs[] = {
++ &class_device_attr_bmcr.attr,
++ &class_device_attr_bmsr.attr,
++ &class_device_attr_physid1.attr,
++ &class_device_attr_physid2.attr,
++ &class_device_attr_advertise.attr,
++ &class_device_attr_lpa.attr,
++ &class_device_attr_expansion.attr,
++ NULL,
++};
++
++static struct attribute_group macb_mii_group = {
++ .name = "mii",
++ .attrs = macb_mii_attrs,
++};
++
++static void macb_unregister_sysfs(struct net_device *net)
++{
++ struct class_device *class_dev = &net->class_dev;
++
++ sysfs_remove_group(&class_dev->kobj, &macb_mii_group);
++}
++
++static int macb_register_sysfs(struct net_device *net)
++{
++ struct class_device *class_dev = &net->class_dev;
++ int ret;
++
++ ret = sysfs_create_group(&class_dev->kobj, &macb_mii_group);
++ if (ret)
++ printk(KERN_WARNING
++ "%s: sysfs mii attribute registration failed: %d\n",
++ net->name, ret);
++ return ret;
++}
++static int __devinit macb_probe(struct platform_device *pdev)
++{
++ struct eth_platform_data *pdata;
++ struct resource *regs;
++ struct net_device *dev;
++ struct macb *bp;
++ int err = -ENXIO;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs) {
++ dev_err(&pdev->dev, "no mmio resource defined\n");
++ goto err_out;
++ }
++
++ err = -ENOMEM;
++ dev = alloc_etherdev(sizeof(*bp));
++ if (!dev) {
++ dev_err(&pdev->dev, "etherdev alloc failed, aborting.\n");
++ goto err_out;
++ }
++
++ SET_MODULE_OWNER(dev);
++ SET_NETDEV_DEV(dev, &pdev->dev);
++
++ /* TODO: Actually, we have some interesting features... */
++ dev->features |= 0;
++
++ bp = netdev_priv(dev);
++ bp->pdev = pdev;
++ bp->dev = dev;
++
++ spin_lock_init(&bp->lock);
++
++ bp->pclk = clk_get(&pdev->dev, "pclk");
++ if (IS_ERR(bp->pclk)) {
++ dev_err(&pdev->dev, "failed to get pclk\n");
++ goto err_out_free_dev;
++ }
++ bp->hclk = clk_get(&pdev->dev, "hclk");
++ if (IS_ERR(bp->hclk)) {
++ dev_err(&pdev->dev, "failed to get hclk\n");
++ goto err_out_put_pclk;
++ }
++
++ clk_enable(bp->pclk);
++ clk_enable(bp->hclk);
++
++ bp->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!bp->regs) {
++ dev_err(&pdev->dev, "failed to map registers, aborting.\n");
++ err = -ENOMEM;
++ goto err_out_disable_clocks;
++ }
++
++ dev->irq = platform_get_irq(pdev, 0);
++ err = request_irq(dev->irq, macb_interrupt, SA_SAMPLE_RANDOM,
++ dev->name, dev);
++ if (err) {
++ printk(KERN_ERR
++ "%s: Unable to request IRQ %d (error %d)\n",
++ dev->name, dev->irq, err);
++ goto err_out_iounmap;
++ }
++
++ dev->open = macb_open;
++ dev->stop = macb_close;
++ dev->hard_start_xmit = macb_start_xmit;
++ dev->get_stats = macb_get_stats;
++ dev->do_ioctl = macb_ioctl;
++ dev->poll = macb_poll;
++ dev->weight = 64;
++ dev->ethtool_ops = &macb_ethtool_ops;
++
++ dev->base_addr = regs->start;
++
++ INIT_WORK(&bp->periodic_task, macb_periodic_task, bp);
++ mutex_init(&bp->mdio_mutex);
++ init_completion(&bp->mdio_complete);
++
++ bp->mii.dev = dev;
++ bp->mii.mdio_read = macb_mdio_read;
++ bp->mii.mdio_write = macb_mdio_write;
++
++ pdata = pdev->dev.platform_data;
++ if (!pdata) {
++ dev_err(&pdev->dev, "Cannot determine hw address\n");
++ goto err_out_free_irq;
++ }
++
++ memcpy(dev->dev_addr, pdata->hw_addr, dev->addr_len);
++ bp->mii.phy_id = pdata->mii_phy_addr;
++ bp->mii.phy_id_mask = 0x1f;
++ bp->mii.reg_num_mask = 0x1f;
++
++ bp->tx_pending = DEF_TX_RING_PENDING;
++
++ err = register_netdev(dev);
++ if (err) {
++ dev_err(&pdev->dev, "Cannot register net device, aborting.\n");
++ goto err_out_free_irq;
++ }
++
++ platform_set_drvdata(pdev, dev);
++
++ macb_register_sysfs(dev);
++
++ printk(KERN_INFO "%s: Atmel MACB at 0x%08lx irq %d "
++ "(%02x:%02x:%02x:%02x:%02x:%02x)\n",
++ dev->name, dev->base_addr, dev->irq,
++ dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
++ dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
++
++ return 0;
++
++err_out_free_irq:
++ free_irq(dev->irq, dev);
++err_out_iounmap:
++ iounmap(bp->regs);
++err_out_disable_clocks:
++ clk_disable(bp->hclk);
++ clk_disable(bp->pclk);
++ clk_put(bp->hclk);
++err_out_put_pclk:
++ clk_put(bp->pclk);
++err_out_free_dev:
++ free_netdev(dev);
++err_out:
++ platform_set_drvdata(pdev, NULL);
++ return err;
++}
++
++static int __devexit macb_remove(struct platform_device *pdev)
++{
++ struct net_device *dev;
++ struct macb *bp;
++
++ dev = platform_get_drvdata(pdev);
++
++ if (dev) {
++ bp = netdev_priv(dev);
++ macb_unregister_sysfs(dev);
++ unregister_netdev(dev);
++ free_irq(dev->irq, dev);
++ iounmap(bp->regs);
++ clk_disable(bp->hclk);
++ clk_disable(bp->pclk);
++ clk_put(bp->hclk);
++ clk_put(bp->pclk);
++ free_netdev(dev);
++ platform_set_drvdata(pdev, NULL);
++ }
++
++ return 0;
++}
++
++static struct platform_driver macb_driver = {
++ .probe = macb_probe,
++ .remove = __devexit_p(macb_remove),
++ .driver = {
++ .name = "macb",
++ },
++};
++
++static int __init macb_init(void)
++{
++ return platform_driver_register(&macb_driver);
++}
++
++static void __exit macb_exit(void)
++{
++ platform_driver_unregister(&macb_driver);
++}
++
++module_init(macb_init);
++module_exit(macb_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("Atmel MACB Ethernet driver");
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
+Index: linux-2.6.18-avr32/drivers/net/macb.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/net/macb.h 2006-11-02 16:33:26.000000000 +0100
+@@ -0,0 +1,387 @@
++/*
++ * Atmel MACB Ethernet Controller driver
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef _MACB_H
++#define _MACB_H
++
++/* MACB register offsets */
++#define MACB_NCR 0x0000
++#define MACB_NCFGR 0x0004
++#define MACB_NSR 0x0008
++#define MACB_TSR 0x0014
++#define MACB_RBQP 0x0018
++#define MACB_TBQP 0x001c
++#define MACB_RSR 0x0020
++#define MACB_ISR 0x0024
++#define MACB_IER 0x0028
++#define MACB_IDR 0x002c
++#define MACB_IMR 0x0030
++#define MACB_MAN 0x0034
++#define MACB_PTR 0x0038
++#define MACB_PFR 0x003c
++#define MACB_FTO 0x0040
++#define MACB_SCF 0x0044
++#define MACB_MCF 0x0048
++#define MACB_FRO 0x004c
++#define MACB_FCSE 0x0050
++#define MACB_ALE 0x0054
++#define MACB_DTF 0x0058
++#define MACB_LCOL 0x005c
++#define MACB_EXCOL 0x0060
++#define MACB_TUND 0x0064
++#define MACB_CSE 0x0068
++#define MACB_RRE 0x006c
++#define MACB_ROVR 0x0070
++#define MACB_RSE 0x0074
++#define MACB_ELE 0x0078
++#define MACB_RJA 0x007c
++#define MACB_USF 0x0080
++#define MACB_STE 0x0084
++#define MACB_RLE 0x0088
++#define MACB_TPF 0x008c
++#define MACB_HRB 0x0090
++#define MACB_HRT 0x0094
++#define MACB_SA1B 0x0098
++#define MACB_SA1T 0x009c
++#define MACB_SA2B 0x00a0
++#define MACB_SA2T 0x00a4
++#define MACB_SA3B 0x00a8
++#define MACB_SA3T 0x00ac
++#define MACB_SA4B 0x00b0
++#define MACB_SA4T 0x00b4
++#define MACB_TID 0x00b8
++#define MACB_TPQ 0x00bc
++#define MACB_USRIO 0x00c0
++#define MACB_WOL 0x00c4
++
++/* Bitfields in NCR */
++#define MACB_LB_OFFSET 0
++#define MACB_LB_SIZE 1
++#define MACB_LLB_OFFSET 1
++#define MACB_LLB_SIZE 1
++#define MACB_RE_OFFSET 2
++#define MACB_RE_SIZE 1
++#define MACB_TE_OFFSET 3
++#define MACB_TE_SIZE 1
++#define MACB_MPE_OFFSET 4
++#define MACB_MPE_SIZE 1
++#define MACB_CLRSTAT_OFFSET 5
++#define MACB_CLRSTAT_SIZE 1
++#define MACB_INCSTAT_OFFSET 6
++#define MACB_INCSTAT_SIZE 1
++#define MACB_WESTAT_OFFSET 7
++#define MACB_WESTAT_SIZE 1
++#define MACB_BP_OFFSET 8
++#define MACB_BP_SIZE 1
++#define MACB_TSTART_OFFSET 9
++#define MACB_TSTART_SIZE 1
++#define MACB_THALT_OFFSET 10
++#define MACB_THALT_SIZE 1
++#define MACB_NCR_TPF_OFFSET 11
++#define MACB_NCR_TPF_SIZE 1
++#define MACB_TZQ_OFFSET 12
++#define MACB_TZQ_SIZE 1
++
++/* Bitfields in NCFGR */
++#define MACB_SPD_OFFSET 0
++#define MACB_SPD_SIZE 1
++#define MACB_FD_OFFSET 1
++#define MACB_FD_SIZE 1
++#define MACB_BIT_RATE_OFFSET 2
++#define MACB_BIT_RATE_SIZE 1
++#define MACB_JFRAME_OFFSET 3
++#define MACB_JFRAME_SIZE 1
++#define MACB_CAF_OFFSET 4
++#define MACB_CAF_SIZE 1
++#define MACB_NBC_OFFSET 5
++#define MACB_NBC_SIZE 1
++#define MACB_NCFGR_MTI_OFFSET 6
++#define MACB_NCFGR_MTI_SIZE 1
++#define MACB_UNI_OFFSET 7
++#define MACB_UNI_SIZE 1
++#define MACB_BIG_OFFSET 8
++#define MACB_BIG_SIZE 1
++#define MACB_EAE_OFFSET 9
++#define MACB_EAE_SIZE 1
++#define MACB_CLK_OFFSET 10
++#define MACB_CLK_SIZE 2
++#define MACB_RTY_OFFSET 12
++#define MACB_RTY_SIZE 1
++#define MACB_PAE_OFFSET 13
++#define MACB_PAE_SIZE 1
++#define MACB_RBOF_OFFSET 14
++#define MACB_RBOF_SIZE 2
++#define MACB_RLCE_OFFSET 16
++#define MACB_RLCE_SIZE 1
++#define MACB_DRFCS_OFFSET 17
++#define MACB_DRFCS_SIZE 1
++#define MACB_EFRHD_OFFSET 18
++#define MACB_EFRHD_SIZE 1
++#define MACB_IRXFCS_OFFSET 19
++#define MACB_IRXFCS_SIZE 1
++
++/* Bitfields in NSR */
++#define MACB_NSR_LINK_OFFSET 0
++#define MACB_NSR_LINK_SIZE 1
++#define MACB_MDIO_OFFSET 1
++#define MACB_MDIO_SIZE 1
++#define MACB_IDLE_OFFSET 2
++#define MACB_IDLE_SIZE 1
++
++/* Bitfields in TSR */
++#define MACB_UBR_OFFSET 0
++#define MACB_UBR_SIZE 1
++#define MACB_COL_OFFSET 1
++#define MACB_COL_SIZE 1
++#define MACB_TSR_RLE_OFFSET 2
++#define MACB_TSR_RLE_SIZE 1
++#define MACB_TGO_OFFSET 3
++#define MACB_TGO_SIZE 1
++#define MACB_BEX_OFFSET 4
++#define MACB_BEX_SIZE 1
++#define MACB_COMP_OFFSET 5
++#define MACB_COMP_SIZE 1
++#define MACB_UND_OFFSET 6
++#define MACB_UND_SIZE 1
++
++/* Bitfields in RSR */
++#define MACB_BNA_OFFSET 0
++#define MACB_BNA_SIZE 1
++#define MACB_REC_OFFSET 1
++#define MACB_REC_SIZE 1
++#define MACB_OVR_OFFSET 2
++#define MACB_OVR_SIZE 1
++
++/* Bitfields in ISR/IER/IDR/IMR */
++#define MACB_MFD_OFFSET 0
++#define MACB_MFD_SIZE 1
++#define MACB_RCOMP_OFFSET 1
++#define MACB_RCOMP_SIZE 1
++#define MACB_RXUBR_OFFSET 2
++#define MACB_RXUBR_SIZE 1
++#define MACB_TXUBR_OFFSET 3
++#define MACB_TXUBR_SIZE 1
++#define MACB_ISR_TUND_OFFSET 4
++#define MACB_ISR_TUND_SIZE 1
++#define MACB_ISR_RLE_OFFSET 5
++#define MACB_ISR_RLE_SIZE 1
++#define MACB_TXERR_OFFSET 6
++#define MACB_TXERR_SIZE 1
++#define MACB_TCOMP_OFFSET 7
++#define MACB_TCOMP_SIZE 1
++#define MACB_ISR_LINK_OFFSET 9
++#define MACB_ISR_LINK_SIZE 1
++#define MACB_ISR_ROVR_OFFSET 10
++#define MACB_ISR_ROVR_SIZE 1
++#define MACB_HRESP_OFFSET 11
++#define MACB_HRESP_SIZE 1
++#define MACB_PFR_OFFSET 12
++#define MACB_PFR_SIZE 1
++#define MACB_PTZ_OFFSET 13
++#define MACB_PTZ_SIZE 1
++
++/* Bitfields in MAN */
++#define MACB_DATA_OFFSET 0
++#define MACB_DATA_SIZE 16
++#define MACB_CODE_OFFSET 16
++#define MACB_CODE_SIZE 2
++#define MACB_REGA_OFFSET 18
++#define MACB_REGA_SIZE 5
++#define MACB_PHYA_OFFSET 23
++#define MACB_PHYA_SIZE 5
++#define MACB_RW_OFFSET 28
++#define MACB_RW_SIZE 2
++#define MACB_SOF_OFFSET 30
++#define MACB_SOF_SIZE 2
++
++/* Bitfields in USRIO */
++#define MACB_RMII_OFFSET 0
++#define MACB_RMII_SIZE 1
++#define MACB_EAM_OFFSET 1
++#define MACB_EAM_SIZE 1
++#define MACB_TX_PAUSE_OFFSET 2
++#define MACB_TX_PAUSE_SIZE 1
++#define MACB_TX_PAUSE_ZERO_OFFSET 3
++#define MACB_TX_PAUSE_ZERO_SIZE 1
++
++/* Bitfields in WOL */
++#define MACB_IP_OFFSET 0
++#define MACB_IP_SIZE 16
++#define MACB_MAG_OFFSET 16
++#define MACB_MAG_SIZE 1
++#define MACB_ARP_OFFSET 17
++#define MACB_ARP_SIZE 1
++#define MACB_SA1_OFFSET 18
++#define MACB_SA1_SIZE 1
++#define MACB_WOL_MTI_OFFSET 19
++#define MACB_WOL_MTI_SIZE 1
++
++/* Constants for CLK */
++#define MACB_CLK_DIV8 0
++#define MACB_CLK_DIV16 1
++#define MACB_CLK_DIV32 2
++#define MACB_CLK_DIV64 3
++
++/* Constants for MAN register */
++#define MACB_MAN_SOF 1
++#define MACB_MAN_WRITE 1
++#define MACB_MAN_READ 2
++#define MACB_MAN_CODE 2
++
++/* Bit manipulation macros */
++#define MACB_BIT(name) \
++ (1 << MACB_##name##_OFFSET)
++#define MACB_BF(name,value) \
++ (((value) & ((1 << MACB_##name##_SIZE) - 1)) \
++ << MACB_##name##_OFFSET)
++#define MACB_BFEXT(name,value)\
++ (((value) >> MACB_##name##_OFFSET) \
++ & ((1 << MACB_##name##_SIZE) - 1))
++#define MACB_BFINS(name,value,old) \
++ (((old) & ~(((1 << MACB_##name##_SIZE) - 1) \
++ << MACB_##name##_OFFSET)) \
++ | MACB_BF(name,value))
++
++/* Register access macros */
++#define macb_readl(port,reg) \
++ __raw_readl((port)->regs + MACB_##reg)
++#define macb_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + MACB_##reg)
++
++struct dma_desc {
++ u32 addr;
++ u32 ctrl;
++};
++
++/* DMA descriptor bitfields */
++#define MACB_RX_USED_OFFSET 0
++#define MACB_RX_USED_SIZE 1
++#define MACB_RX_WRAP_OFFSET 1
++#define MACB_RX_WRAP_SIZE 1
++#define MACB_RX_WADDR_OFFSET 2
++#define MACB_RX_WADDR_SIZE 30
++
++#define MACB_RX_FRMLEN_OFFSET 0
++#define MACB_RX_FRMLEN_SIZE 12
++#define MACB_RX_OFFSET_OFFSET 12
++#define MACB_RX_OFFSET_SIZE 2
++#define MACB_RX_SOF_OFFSET 14
++#define MACB_RX_SOF_SIZE 1
++#define MACB_RX_EOF_OFFSET 15
++#define MACB_RX_EOF_SIZE 1
++#define MACB_RX_CFI_OFFSET 16
++#define MACB_RX_CFI_SIZE 1
++#define MACB_RX_VLAN_PRI_OFFSET 17
++#define MACB_RX_VLAN_PRI_SIZE 3
++#define MACB_RX_PRI_TAG_OFFSET 20
++#define MACB_RX_PRI_TAG_SIZE 1
++#define MACB_RX_VLAN_TAG_OFFSET 21
++#define MACB_RX_VLAN_TAG_SIZE 1
++#define MACB_RX_TYPEID_MATCH_OFFSET 22
++#define MACB_RX_TYPEID_MATCH_SIZE 1
++#define MACB_RX_SA4_MATCH_OFFSET 23
++#define MACB_RX_SA4_MATCH_SIZE 1
++#define MACB_RX_SA3_MATCH_OFFSET 24
++#define MACB_RX_SA3_MATCH_SIZE 1
++#define MACB_RX_SA2_MATCH_OFFSET 25
++#define MACB_RX_SA2_MATCH_SIZE 1
++#define MACB_RX_SA1_MATCH_OFFSET 26
++#define MACB_RX_SA1_MATCH_SIZE 1
++#define MACB_RX_EXT_MATCH_OFFSET 28
++#define MACB_RX_EXT_MATCH_SIZE 1
++#define MACB_RX_UHASH_MATCH_OFFSET 29
++#define MACB_RX_UHASH_MATCH_SIZE 1
++#define MACB_RX_MHASH_MATCH_OFFSET 30
++#define MACB_RX_MHASH_MATCH_SIZE 1
++#define MACB_RX_BROADCAST_OFFSET 31
++#define MACB_RX_BROADCAST_SIZE 1
++
++#define MACB_TX_FRMLEN_OFFSET 0
++#define MACB_TX_FRMLEN_SIZE 11
++#define MACB_TX_LAST_OFFSET 15
++#define MACB_TX_LAST_SIZE 1
++#define MACB_TX_NOCRC_OFFSET 16
++#define MACB_TX_NOCRC_SIZE 1
++#define MACB_TX_BUF_EXHAUSTED_OFFSET 27
++#define MACB_TX_BUF_EXHAUSTED_SIZE 1
++#define MACB_TX_UNDERRUN_OFFSET 28
++#define MACB_TX_UNDERRUN_SIZE 1
++#define MACB_TX_ERROR_OFFSET 29
++#define MACB_TX_ERROR_SIZE 1
++#define MACB_TX_WRAP_OFFSET 30
++#define MACB_TX_WRAP_SIZE 1
++#define MACB_TX_USED_OFFSET 31
++#define MACB_TX_USED_SIZE 1
++
++struct ring_info {
++ struct sk_buff *skb;
++ dma_addr_t mapping;
++};
++
++/*
++ * Hardware-collected statistics. Used when updating the network
++ * device stats by a periodic timer.
++ */
++struct macb_stats {
++ u32 rx_pause_frames;
++ u32 tx_ok;
++ u32 tx_single_cols;
++ u32 tx_multiple_cols;
++ u32 rx_ok;
++ u32 rx_fcs_errors;
++ u32 rx_align_errors;
++ u32 tx_deferred;
++ u32 tx_late_cols;
++ u32 tx_excessive_cols;
++ u32 tx_underruns;
++ u32 tx_carrier_errors;
++ u32 rx_resource_errors;
++ u32 rx_overruns;
++ u32 rx_symbol_errors;
++ u32 rx_oversize_pkts;
++ u32 rx_jabbers;
++ u32 rx_undersize_pkts;
++ u32 sqe_test_errors;
++ u32 rx_length_mismatch;
++ u32 tx_pause_frames;
++};
++
++struct macb {
++ void __iomem *regs;
++
++ unsigned int rx_tail;
++ struct dma_desc *rx_ring;
++ void *rx_buffers;
++
++ unsigned int tx_head, tx_tail;
++ struct dma_desc *tx_ring;
++ struct ring_info *tx_skb;
++
++ spinlock_t lock;
++ struct platform_device *pdev;
++ struct clk *pclk;
++ struct clk *hclk;
++ struct net_device *dev;
++ struct net_device_stats stats;
++ struct macb_stats hw_stats;
++
++ dma_addr_t rx_ring_dma;
++ dma_addr_t tx_ring_dma;
++ dma_addr_t rx_buffers_dma;
++
++ unsigned int rx_pending, tx_pending;
++
++ struct work_struct periodic_task;
++
++ struct mutex mdio_mutex;
++ struct completion mdio_complete;
++ struct mii_if_info mii;
++};
++
++#endif /* _MACB_H */
diff --git a/packages/linux/linux-2.6.18/atmel-mci-debugfs.patch b/packages/linux/linux-2.6.18/atmel-mci-debugfs.patch
new file mode 100644
index 0000000000..4570bd8e93
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-mci-debugfs.patch
@@ -0,0 +1,278 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Sun, 14 Jan 2007 19:07:06 +0100
+Subject: [ATMEL MCI] Add debugfs support
+
+Export some of the atmel-mci driver state through debugfs. More
+specifically:
+ * The MCI hardware registers
+ * The request currently being processed
+ * Pending and processed event masks
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ drivers/mmc/atmel-mci.c | 230 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 230 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/mmc/atmel-mci.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/mmc/atmel-mci.c 2007-01-15 15:35:45.000000000 +0100
++++ linux-2.6.18-avr32/drivers/mmc/atmel-mci.c 2007-01-15 15:38:05.000000000 +0100
+@@ -79,6 +79,14 @@ struct atmel_mci {
+ struct clk *mck;
+ struct mmci_platform_data *board;
+ struct platform_device *pdev;
++
++#ifdef CONFIG_DEBUG_FS
++ struct dentry *debugfs_root;
++ struct dentry *debugfs_regs;
++ struct dentry *debugfs_req;
++ struct dentry *debugfs_pending_events;
++ struct dentry *debugfs_completed_events;
++#endif
+ };
+
+ /* Those printks take an awful lot of time... */
+@@ -90,6 +98,224 @@ static unsigned int fmax = 1000000U;
+ module_param(fmax, uint, 0444);
+ MODULE_PARM_DESC(fmax, "Max frequency in Hz of the MMC bus clock");
+
++#ifdef CONFIG_DEBUG_FS
++#include <linux/debugfs.h>
++
++#define DBG_REQ_BUF_SIZE (4096 - sizeof(unsigned int))
++
++struct req_dbg_data {
++ unsigned int nbytes;
++ char str[DBG_REQ_BUF_SIZE];
++};
++
++static int req_dbg_open(struct inode *inode, struct file *file)
++{
++ struct atmel_mci *host;
++ struct mmc_request *mrq;
++ struct mmc_command *cmd, *stop;
++ struct mmc_data *data;
++ struct req_dbg_data *priv;
++ char *str;
++ unsigned long n = 0;
++
++ priv = kzalloc(DBG_REQ_BUF_SIZE, GFP_KERNEL);
++ if (!priv)
++ return -ENOMEM;
++ str = priv->str;
++
++ mutex_lock(&inode->i_mutex);
++ host = inode->u.generic_ip;
++
++ spin_lock_irq(&host->mmc->lock);
++ mrq = host->mrq;
++ if (mrq) {
++ cmd = mrq->cmd;
++ data = mrq->data;
++ stop = mrq->stop;
++ n = snprintf(str, DBG_REQ_BUF_SIZE,
++ "CMD%u(0x%x) %x %x %x %x %x (err %u)\n",
++ cmd->opcode, cmd->arg, cmd->flags,
++ cmd->resp[0], cmd->resp[1], cmd->resp[2],
++ cmd->resp[3], cmd->error);
++ if (n < DBG_REQ_BUF_SIZE && data)
++ n += snprintf(str + n, DBG_REQ_BUF_SIZE - n,
++ "DATA %u * %u (%u) %x (err %u)\n",
++ data->blocks, data->blksz,
++ data->bytes_xfered, data->flags,
++ data->error);
++ if (n < DBG_REQ_BUF_SIZE && stop)
++ n += snprintf(str + n, DBG_REQ_BUF_SIZE - n,
++ "CMD%u(0x%x) %x %x %x %x %x (err %u)\n",
++ stop->opcode, stop->arg, stop->flags,
++ stop->resp[0], stop->resp[1],
++ stop->resp[2], stop->resp[3],
++ stop->error);
++ }
++ spin_unlock_irq(&host->mmc->lock);
++ mutex_unlock(&inode->i_mutex);
++
++ priv->nbytes = min(n, DBG_REQ_BUF_SIZE);
++ file->private_data = priv;
++
++ return 0;
++}
++
++static int req_dbg_read(struct file *file, char __user *buf,
++ size_t nbytes, loff_t *ppos)
++{
++ struct req_dbg_data *priv = file->private_data;
++
++ return simple_read_from_buffer(buf, nbytes, ppos,
++ priv->str, priv->nbytes);
++}
++
++static int req_dbg_release(struct inode *inode, struct file *file)
++{
++ kfree(file->private_data);
++ return 0;
++}
++
++static const struct file_operations req_dbg_fops = {
++ .owner = THIS_MODULE,
++ .open = req_dbg_open,
++ .llseek = no_llseek,
++ .read = req_dbg_read,
++ .release = req_dbg_release,
++};
++
++static int regs_dbg_open(struct inode *inode, struct file *file)
++{
++ struct atmel_mci *host;
++ unsigned int i;
++ u32 *data;
++ int ret = -ENOMEM;
++
++ mutex_lock(&inode->i_mutex);
++ host = inode->u.generic_ip;
++ data = kmalloc(inode->i_size, GFP_KERNEL);
++ if (!data)
++ goto out;
++
++ spin_lock_irq(&host->mmc->lock);
++ for (i = 0; i < inode->i_size / 4; i++)
++ data[i] = __raw_readl(host->regs + i * 4);
++ spin_unlock_irq(&host->mmc->lock);
++
++ file->private_data = data;
++ ret = 0;
++
++out:
++ mutex_unlock(&inode->i_mutex);
++
++ return ret;
++}
++
++static ssize_t regs_dbg_read(struct file *file, char __user *buf,
++ size_t nbytes, loff_t *ppos)
++{
++ struct inode *inode = file->f_dentry->d_inode;
++ int ret;
++
++ mutex_lock(&inode->i_mutex);
++ ret = simple_read_from_buffer(buf, nbytes, ppos,
++ file->private_data,
++ file->f_dentry->d_inode->i_size);
++ mutex_unlock(&inode->i_mutex);
++
++ return ret;
++}
++
++static int regs_dbg_release(struct inode *inode, struct file *file)
++{
++ kfree(file->private_data);
++ return 0;
++}
++
++static const struct file_operations regs_dbg_fops = {
++ .owner = THIS_MODULE,
++ .open = regs_dbg_open,
++ .llseek = generic_file_llseek,
++ .read = regs_dbg_read,
++ .release = regs_dbg_release,
++};
++
++static void atmci_init_debugfs(struct atmel_mci *host)
++{
++ struct mmc_host *mmc;
++ struct dentry *root, *regs;
++ struct resource *res;
++
++ mmc = host->mmc;
++ root = debugfs_create_dir(mmc_hostname(mmc), NULL);
++ if (IS_ERR(root) || !root)
++ goto err_root;
++ host->debugfs_root = root;
++
++ regs = debugfs_create_file("regs", 0400, root, host, &regs_dbg_fops);
++ if (!regs)
++ goto err_regs;
++
++ res = platform_get_resource(host->pdev, IORESOURCE_MEM, 0);
++ regs->d_inode->i_size = res->end - res->start + 1;
++ host->debugfs_regs = regs;
++
++ host->debugfs_req = debugfs_create_file("req", 0400, root,
++ host, &req_dbg_fops);
++ if (!host->debugfs_req)
++ goto err_req;
++
++ host->debugfs_pending_events
++ = debugfs_create_u32("pending_events", 0400, root,
++ (u32 *)&host->pending_events);
++ if (!host->debugfs_pending_events)
++ goto err_pending_events;
++
++ host->debugfs_completed_events
++ = debugfs_create_u32("completed_events", 0400, root,
++ (u32 *)&host->completed_events);
++ if (!host->debugfs_completed_events)
++ goto err_completed_events;
++
++ return;
++
++err_completed_events:
++ debugfs_remove(host->debugfs_pending_events);
++err_pending_events:
++ debugfs_remove(host->debugfs_req);
++err_req:
++ debugfs_remove(host->debugfs_regs);
++err_regs:
++ debugfs_remove(host->debugfs_root);
++err_root:
++ host->debugfs_root = NULL;
++ dev_err(&host->pdev->dev,
++ "failed to initialize debugfs for %s\n",
++ mmc_hostname(mmc));
++}
++
++static void atmci_cleanup_debugfs(struct atmel_mci *host)
++{
++ if (host->debugfs_root) {
++ debugfs_remove(host->debugfs_completed_events);
++ debugfs_remove(host->debugfs_pending_events);
++ debugfs_remove(host->debugfs_req);
++ debugfs_remove(host->debugfs_regs);
++ debugfs_remove(host->debugfs_root);
++ host->debugfs_root = NULL;
++ }
++}
++#else
++static inline void atmci_init_debugfs(struct atmel_mci *host)
++{
++
++}
++
++static inline void atmci_cleanup_debugfs(struct atmel_mci *host)
++{
++
++}
++#endif /* CONFIG_DEBUG_FS */
++
+ static inline unsigned int ns_to_clocks(struct atmel_mci *host,
+ unsigned int ns)
+ {
+@@ -709,6 +935,8 @@ static int __devinit atmci_probe(struct
+ printk(KERN_INFO "%s: Atmel MCI controller at 0x%08lx irq %d\n",
+ mmc_hostname(mmc), host->mapbase, irq);
+
++ atmci_init_debugfs(host);
++
+ return 0;
+
+ out_free_irq:
+@@ -734,6 +962,8 @@ static int __devexit atmci_remove(struct
+ platform_set_drvdata(pdev, NULL);
+
+ if (host) {
++ atmci_cleanup_debugfs(host);
++
+ mmc_remove_host(host->mmc);
+
+ mci_writel(host, IDR, ~0UL);
diff --git a/packages/linux/linux-2.6.18/atmel-mci-init-nr_blocks-in-dma-request.patch b/packages/linux/linux-2.6.18/atmel-mci-init-nr_blocks-in-dma-request.patch
new file mode 100644
index 0000000000..d6d91ae0e8
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-mci-init-nr_blocks-in-dma-request.patch
@@ -0,0 +1,47 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Sun, 14 Jan 2007 19:07:06 +0100
+Subject: [ATMEL MCI] Initialize the nr_blocks member of the dma request
+
+It seems like the mmc driver might get asked to write less data
+than what is available in the associated scatterlist. Previously,
+the dmac driver assumed that an sg request should transfer all
+the data in the scatterlist, which would break in this case.
+
+Resolve this by passing the number of blocks to transfer explicitly.
+This will probably fix a number of cases where the mmc controller
+seemed to be out of sync with the dma controller.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ drivers/mmc/atmel-mci.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/mmc/atmel-mci.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/mmc/atmel-mci.c 2007-01-15 15:39:13.000000000 +0100
++++ linux-2.6.18-avr32/drivers/mmc/atmel-mci.c 2007-01-15 15:39:25.000000000 +0100
+@@ -51,7 +51,6 @@ struct atmel_mci_dma {
+ struct dma_request_sg req;
+ unsigned short rx_periph_id;
+ unsigned short tx_periph_id;
+- int blocks_left;
+ };
+
+ struct atmel_mci {
+@@ -428,6 +427,7 @@ static u32 atmci_prepare_data(struct mmc
+ mci_writel(host, BLKR, (MCI_BF(BCNT, data->blocks)
+ | MCI_BF(BLKLEN, data->blksz)));
+ host->dma.req.block_size = data->blksz;
++ host->dma.req.nr_blocks = data->blocks;
+
+ cmd_flags = MCI_BF(TRCMD, MCI_TRCMD_START_TRANS);
+ if (data->flags & MMC_DATA_STREAM)
+@@ -454,7 +454,6 @@ static u32 atmci_prepare_data(struct mmc
+ host->dma.req.data_reg = host->mapbase + MCI_TDR;
+ }
+ host->dma.req.sg = data->sg;
+- host->dma.blocks_left = data->blocks;
+
+ dma_prepare_request_sg(host->dma.req.req.dmac, &host->dma.req);
+
diff --git a/packages/linux/linux-2.6.18/atmel-mmc-host-driver.patch b/packages/linux/linux-2.6.18/atmel-mmc-host-driver.patch
new file mode 100644
index 0000000000..b7d7e8ae3f
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-mmc-host-driver.patch
@@ -0,0 +1,986 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Fri Nov 18 17:20:29 2005 +0100
+Subject: [PATCH] AVR32: MMC Host Driver
+
+---
+
+ drivers/mmc/Kconfig | 10
+ drivers/mmc/Makefile | 1
+ drivers/mmc/atmel-mci.c | 738 ++++++++++++++++++++++++++++++++++++++++++++++++
+ drivers/mmc/atmel-mci.h | 192 ++++++++++++
+ 4 files changed, 941 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/mmc/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/mmc/Kconfig 2007-01-15 10:14:40.000000000 +0100
++++ linux-2.6.18-avr32/drivers/mmc/Kconfig 2007-01-15 10:14:46.000000000 +0100
+@@ -71,6 +71,16 @@ config MMC_OMAP
+
+ If unsure, say N.
+
++config MMC_ATMELMCI
++ tristate "Atmel Multimedia Card Interface support"
++ depends on AVR32 && MMC
++ help
++ This selects the Atmel Multimedia Card Interface. If you have
++ a AT91 (ARM) or AT32 (AVR32) platform with a Multimedia Card
++ slot, say Y or M here.
++
++ If unsure, say N.
++
+ config MMC_WBSD
+ tristate "Winbond W83L51xD SD/MMC Card Interface support"
+ depends on MMC && ISA_DMA_API
+Index: linux-2.6.18-avr32/drivers/mmc/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/mmc/Makefile 2007-01-15 10:14:40.000000000 +0100
++++ linux-2.6.18-avr32/drivers/mmc/Makefile 2007-01-15 10:14:46.000000000 +0100
+@@ -23,6 +23,7 @@ obj-$(CONFIG_MMC_WBSD) += wbsd.o
+ obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
+ obj-$(CONFIG_MMC_OMAP) += omap.o
+ obj-$(CONFIG_MMC_AT91RM9200) += at91_mci.o
++obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o
+
+ mmc_core-y := mmc.o mmc_queue.o mmc_sysfs.o
+
+Index: linux-2.6.18-avr32/drivers/mmc/atmel-mci.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/mmc/atmel-mci.c 2007-01-15 10:31:55.000000000 +0100
+@@ -0,0 +1,738 @@
++/*
++ * Atmel MultiMedia Card Interface driver
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/blkdev.h>
++#include <linux/clk.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/ioport.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <linux/mmc/host.h>
++#include <linux/mmc/protocol.h>
++
++#include <asm/dma-controller.h>
++#include <asm/io.h>
++
++#include "atmel-mci.h"
++
++#define DRIVER_NAME "mmci"
++
++#define MCI_CMD_ERROR_FLAGS (MCI_BIT(RINDE) | MCI_BIT(RDIRE) | \
++ MCI_BIT(RCRCE) | MCI_BIT(RENDE) | \
++ MCI_BIT(RTOE))
++#define MCI_DATA_ERROR_FLAGS (MCI_BIT(DCRCE) | MCI_BIT(DTOE) | \
++ MCI_BIT(OVRE) | MCI_BIT(UNRE))
++
++enum {
++ EVENT_CMD_COMPLETE = 0,
++ EVENT_CMD_ERROR,
++ EVENT_DATA_COMPLETE,
++ EVENT_DATA_ERROR,
++ EVENT_STOP_SENT,
++ EVENT_STOP_COMPLETE,
++ EVENT_STOP_ERROR,
++ EVENT_DMA_ERROR,
++};
++
++struct atmel_mci_dma {
++ struct dma_request_sg req;
++ unsigned short rx_periph_id;
++ unsigned short tx_periph_id;
++ int blocks_left;
++};
++
++struct atmel_mci {
++ struct mmc_host *mmc;
++ void __iomem *regs;
++ struct atmel_mci_dma dma;
++
++ struct mmc_request *mrq;
++ struct mmc_command *cmd;
++ struct mmc_data *data;
++
++ u32 stop_cmdr;
++ u32 stop_iflags;
++
++ struct tasklet_struct tasklet;
++ unsigned long pending_events;
++ unsigned long completed_events;
++ u32 error_status;
++
++ unsigned long bus_hz;
++ unsigned long mapbase;
++ struct clk *mck;
++ struct platform_device *pdev;
++};
++
++/* Those printks take an awful lot of time... */
++#ifndef DEBUG
++static unsigned int fmax = 15000000U;
++#else
++static unsigned int fmax = 1000000U;
++#endif
++module_param(fmax, uint, 0444);
++MODULE_PARM_DESC(fmax, "Max frequency in Hz of the MMC bus clock");
++
++static inline unsigned int ns_to_clocks(struct atmel_mci *host,
++ unsigned int ns)
++{
++ return (ns * (host->bus_hz / 1000000) + 999) / 1000;
++}
++
++static void atmci_set_timeout(struct atmel_mci *host,
++ struct mmc_data *data)
++{
++ static unsigned dtomul_to_shift[] = {
++ 0, 4, 7, 8, 10, 12, 16, 20
++ };
++ unsigned timeout;
++ unsigned dtocyc, dtomul;
++
++ timeout = ns_to_clocks(host, data->timeout_ns) + data->timeout_clks;
++
++ for (dtomul = 0; dtomul < 8; dtomul++) {
++ unsigned shift = dtomul_to_shift[dtomul];
++ dtocyc = (timeout + (1 << shift) - 1) >> shift;
++ if (dtocyc < 15)
++ break;
++ }
++
++ if (dtomul >= 8) {
++ dtomul = 7;
++ dtocyc = 15;
++ }
++
++ pr_debug("%s: setting timeout to %u cycles\n",
++ mmc_hostname(host->mmc),
++ dtocyc << dtomul_to_shift[dtomul]);
++ mci_writel(host, DTOR, (MCI_BF(DTOMUL, dtomul)
++ | MCI_BF(DTOCYC, dtocyc)));
++}
++
++/*
++ * Return mask with interrupt flags to be handled for this command.
++ */
++static u32 atmci_prepare_command(struct mmc_host *mmc,
++ struct mmc_command *cmd,
++ u32 *cmd_flags)
++{
++ u32 cmdr;
++ u32 iflags;
++
++ cmd->error = MMC_ERR_NONE;
++
++ cmdr = 0;
++ BUG_ON(MCI_BFEXT(CMDNB, cmdr) != 0);
++ cmdr = MCI_BFINS(CMDNB, cmd->opcode, cmdr);
++
++ if (cmd->flags & MMC_RSP_PRESENT) {
++ if (cmd->flags & MMC_RSP_136)
++ cmdr |= MCI_BF(RSPTYP, MCI_RSPTYP_136_BIT);
++ else
++ cmdr |= MCI_BF(RSPTYP, MCI_RSPTYP_48_BIT);
++ }
++
++ /*
++ * This should really be MAXLAT_5 for CMD2 and ACMD41, but
++ * it's too difficult to determine whether this is an ACMD or
++ * not. Better make it 64.
++ */
++ cmdr |= MCI_BIT(MAXLAT);
++
++ if (mmc->ios.bus_mode == MMC_BUSMODE_OPENDRAIN)
++ cmdr |= MCI_BIT(OPDCMD);
++
++ iflags = MCI_BIT(CMDRDY) | MCI_CMD_ERROR_FLAGS;
++ if (!(cmd->flags & MMC_RSP_CRC))
++ iflags &= ~MCI_BIT(RCRCE);
++
++ pr_debug("%s: cmd: op %02x arg %08x flags %08x, cmdflags %08lx\n",
++ mmc_hostname(mmc), cmd->opcode, cmd->arg, cmd->flags,
++ (unsigned long)cmdr);
++
++ *cmd_flags = cmdr;
++ return iflags;
++}
++
++static void atmci_start_command(struct atmel_mci *host,
++ struct mmc_command *cmd,
++ u32 cmd_flags)
++{
++ WARN_ON(host->cmd);
++ host->cmd = cmd;
++
++ mci_writel(host, ARGR, cmd->arg);
++ mci_writel(host, CMDR, cmd_flags);
++
++ if (cmd->data)
++ dma_start_request(host->dma.req.req.dmac,
++ host->dma.req.req.channel);
++}
++
++/*
++ * Returns a mask of flags to be set in the command register when the
++ * command to start the transfer is to be sent.
++ */
++static u32 atmci_prepare_data(struct mmc_host *mmc, struct mmc_data *data)
++{
++ struct atmel_mci *host = mmc_priv(mmc);
++ u32 cmd_flags;
++
++ WARN_ON(host->data);
++ host->data = data;
++
++ atmci_set_timeout(host, data);
++ mci_writel(host, BLKR, (MCI_BF(BCNT, data->blocks)
++ | MCI_BF(BLKLEN, data->blksz)));
++ host->dma.req.block_size = data->blksz;
++
++ cmd_flags = MCI_BF(TRCMD, MCI_TRCMD_START_TRANS);
++ if (data->flags & MMC_DATA_STREAM)
++ cmd_flags |= MCI_BF(TRTYP, MCI_TRTYP_STREAM);
++ else if (data->blocks > 1)
++ cmd_flags |= MCI_BF(TRTYP, MCI_TRTYP_MULTI_BLOCK);
++ else
++ cmd_flags |= MCI_BF(TRTYP, MCI_TRTYP_BLOCK);
++
++ if (data->flags & MMC_DATA_READ) {
++ cmd_flags |= MCI_BIT(TRDIR);
++ host->dma.req.nr_sg
++ = dma_map_sg(&host->pdev->dev, data->sg,
++ data->sg_len, DMA_FROM_DEVICE);
++ host->dma.req.periph_id = host->dma.rx_periph_id;
++ host->dma.req.direction = DMA_DIR_PERIPH_TO_MEM;
++ host->dma.req.data_reg = host->mapbase + MCI_RDR;
++ } else {
++ host->dma.req.nr_sg
++ = dma_map_sg(&host->pdev->dev, data->sg,
++ data->sg_len, DMA_TO_DEVICE);
++ host->dma.req.periph_id = host->dma.tx_periph_id;
++ host->dma.req.direction = DMA_DIR_MEM_TO_PERIPH;
++ host->dma.req.data_reg = host->mapbase + MCI_TDR;
++ }
++ host->dma.req.sg = data->sg;
++ host->dma.blocks_left = data->blocks;
++
++ dma_prepare_request_sg(host->dma.req.req.dmac, &host->dma.req);
++
++ return cmd_flags;
++}
++
++static void atmci_request(struct mmc_host *mmc, struct mmc_request *mrq)
++{
++ struct atmel_mci *host = mmc_priv(mmc);
++ struct mmc_data *data = mrq->data;
++ u32 iflags;
++ u32 cmdflags = 0;
++
++ iflags = mci_readl(host, IMR);
++ if (iflags)
++ printk("WARNING: IMR=0x%08x\n", mci_readl(host, IMR));
++
++ WARN_ON(host->mrq != NULL);
++ host->mrq = mrq;
++ host->pending_events = 0;
++ host->completed_events = 0;
++
++ iflags = atmci_prepare_command(mmc, mrq->cmd, &cmdflags);
++
++ if (mrq->stop) {
++ BUG_ON(!data);
++
++ host->stop_iflags = atmci_prepare_command(mmc, mrq->stop,
++ &host->stop_cmdr);
++ host->stop_cmdr |= MCI_BF(TRCMD, MCI_TRCMD_STOP_TRANS);
++ if (!(data->flags & MMC_DATA_WRITE))
++ host->stop_cmdr |= MCI_BIT(TRDIR);
++ if (data->flags & MMC_DATA_STREAM)
++ host->stop_cmdr |= MCI_BF(TRTYP, MCI_TRTYP_STREAM);
++ else
++ host->stop_cmdr |= MCI_BF(TRTYP, MCI_TRTYP_MULTI_BLOCK);
++ }
++ if (data) {
++ cmdflags |= atmci_prepare_data(mmc, data);
++ iflags |= MCI_DATA_ERROR_FLAGS;
++ }
++
++ atmci_start_command(host, mrq->cmd, cmdflags);
++ mci_writel(host, IER, iflags);
++}
++
++static void atmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
++{
++ struct atmel_mci *host = mmc_priv(mmc);
++
++ if (ios->clock) {
++ u32 clkdiv;
++
++ clkdiv = host->bus_hz / (2 * ios->clock) - 1;
++ if (clkdiv > 255)
++ clkdiv = 255;
++ mci_writel(host, MR, (clkdiv
++ | MCI_BIT(WRPROOF)
++ | MCI_BIT(RDPROOF)));
++ }
++
++ switch (ios->bus_width) {
++ case MMC_BUS_WIDTH_1:
++ mci_writel(host, SDCR, 0);
++ break;
++ case MMC_BUS_WIDTH_4:
++ mci_writel(host, SDCR, MCI_BIT(SDCBUS));
++ break;
++ }
++
++ switch (ios->power_mode) {
++ case MMC_POWER_OFF:
++ mci_writel(host, CR, MCI_BIT(MCIDIS));
++ break;
++ case MMC_POWER_UP:
++ mci_writel(host, CR, MCI_BIT(SWRST));
++ break;
++ case MMC_POWER_ON:
++ mci_writel(host, CR, MCI_BIT(MCIEN));
++ break;
++ }
++}
++
++static struct mmc_host_ops atmci_ops = {
++ .request = atmci_request,
++ .set_ios = atmci_set_ios,
++};
++
++static void atmci_request_end(struct mmc_host *mmc, struct mmc_request *mrq)
++{
++ struct atmel_mci *host = mmc_priv(mmc);
++
++ WARN_ON(host->cmd || host->data);
++ host->mrq = NULL;
++
++ mmc_request_done(mmc, mrq);
++}
++
++static void send_stop_cmd(struct mmc_host *mmc, struct mmc_data *data,
++ u32 flags)
++{
++ struct atmel_mci *host = mmc_priv(mmc);
++
++ atmci_start_command(host, data->stop, host->stop_cmdr | flags);
++ mci_writel(host, IER, host->stop_iflags);
++}
++
++static void atmci_data_complete(struct atmel_mci *host, struct mmc_data *data)
++{
++ host->data = NULL;
++ dma_unmap_sg(&host->pdev->dev, data->sg, host->dma.req.nr_sg,
++ ((data->flags & MMC_DATA_WRITE)
++ ? DMA_TO_DEVICE : DMA_FROM_DEVICE));
++
++ /*
++ * Data might complete before command for very short transfers
++ * (like READ_SCR)
++ */
++ if (test_bit(EVENT_CMD_COMPLETE, &host->completed_events)
++ && (!data->stop
++ || test_bit(EVENT_STOP_COMPLETE, &host->completed_events)))
++ atmci_request_end(host->mmc, data->mrq);
++}
++
++static void atmci_command_error(struct mmc_host *mmc,
++ struct mmc_command *cmd,
++ u32 status)
++{
++ pr_debug("%s: command error: status=0x%08x\n",
++ mmc_hostname(mmc), status);
++
++ if (status & MCI_BIT(RTOE))
++ cmd->error = MMC_ERR_TIMEOUT;
++ else if (status & MCI_BIT(RCRCE))
++ cmd->error = MMC_ERR_BADCRC;
++ else
++ cmd->error = MMC_ERR_FAILED;
++}
++
++static void atmci_tasklet_func(unsigned long priv)
++{
++ struct mmc_host *mmc = (struct mmc_host *)priv;
++ struct atmel_mci *host = mmc_priv(mmc);
++ struct mmc_request *mrq = host->mrq;
++ struct mmc_data *data = host->data;
++
++ pr_debug("atmci_tasklet: pending/completed/mask %lx/%lx/%x\n",
++ host->pending_events, host->completed_events,
++ mci_readl(host, IMR));
++
++ if (test_and_clear_bit(EVENT_CMD_ERROR, &host->pending_events)) {
++ struct mmc_command *cmd;
++
++ set_bit(EVENT_CMD_ERROR, &host->completed_events);
++ clear_bit(EVENT_CMD_COMPLETE, &host->pending_events);
++ cmd = host->mrq->cmd;
++
++ if (cmd->data) {
++ dma_stop_request(host->dma.req.req.dmac,
++ host->dma.req.req.channel);
++ host->data = NULL;
++ }
++
++ atmci_command_error(mmc, cmd, host->error_status);
++ atmci_request_end(mmc, cmd->mrq);
++ }
++ if (test_and_clear_bit(EVENT_STOP_ERROR, &host->pending_events)) {
++ set_bit(EVENT_STOP_ERROR, &host->completed_events);
++ clear_bit(EVENT_STOP_COMPLETE, &host->pending_events);
++ atmci_command_error(mmc, host->mrq->stop,
++ host->error_status);
++ if (!host->data)
++ atmci_request_end(mmc, host->mrq);
++ }
++ if (test_and_clear_bit(EVENT_CMD_COMPLETE, &host->pending_events)) {
++ set_bit(EVENT_CMD_COMPLETE, &host->completed_events);
++ if (!mrq->data
++ || test_bit(EVENT_DATA_COMPLETE, &host->completed_events))
++ atmci_request_end(mmc, mrq);
++ }
++ if (test_and_clear_bit(EVENT_STOP_COMPLETE, &host->pending_events)) {
++ set_bit(EVENT_STOP_COMPLETE, &host->completed_events);
++ if (test_bit(EVENT_DATA_COMPLETE, &host->completed_events))
++ atmci_request_end(mmc, mrq);
++ }
++ if (test_and_clear_bit(EVENT_DMA_ERROR, &host->pending_events)) {
++ set_bit(EVENT_DMA_ERROR, &host->completed_events);
++ clear_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++
++ /* DMA controller got bus error => invalid address */
++ data->error = MMC_ERR_INVALID;
++
++ printk(KERN_DEBUG "%s: dma error after %u bytes xfered\n",
++ mmc_hostname(mmc), host->data->bytes_xfered);
++
++ if (data->stop
++ && !test_and_set_bit(EVENT_STOP_SENT,
++ &host->completed_events))
++ /* TODO: Check if card is still present */
++ send_stop_cmd(host->mmc, data, 0);
++
++ atmci_data_complete(host, data);
++ }
++ if (test_and_clear_bit(EVENT_DATA_ERROR, &host->pending_events)) {
++ u32 status = host->error_status;
++
++ set_bit(EVENT_DATA_ERROR, &host->completed_events);
++ clear_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++
++ dma_stop_request(host->dma.req.req.dmac,
++ host->dma.req.req.channel);
++
++ printk(KERN_DEBUG "%s: data error: status=0x%08x\n",
++ mmc_hostname(host->mmc), status);
++
++ if (status & MCI_BIT(DCRCE)) {
++ printk(KERN_DEBUG "%s: Data CRC error\n",
++ mmc_hostname(host->mmc));
++ data->error = MMC_ERR_BADCRC;
++ } else if (status & MCI_BIT(DTOE)) {
++ printk(KERN_DEBUG "%s: Data Timeout error\n",
++ mmc_hostname(host->mmc));
++ data->error = MMC_ERR_TIMEOUT;
++ } else {
++ printk(KERN_DEBUG "%s: Data FIFO error\n",
++ mmc_hostname(host->mmc));
++ data->error = MMC_ERR_FIFO;
++ }
++ printk(KERN_DEBUG "%s: Bytes xfered: %u\n",
++ mmc_hostname(host->mmc), data->bytes_xfered);
++
++ if (data->stop
++ && !test_and_set_bit(EVENT_STOP_SENT, &host->completed_events))
++ /* TODO: Check if card is still present */
++ send_stop_cmd(host->mmc, data, 0);
++
++ atmci_data_complete(host, data);
++ }
++ if (test_and_clear_bit(EVENT_DATA_COMPLETE, &host->pending_events)) {
++ set_bit(EVENT_DATA_COMPLETE, &host->completed_events);
++ data->bytes_xfered = data->blocks * data->blksz;
++ atmci_data_complete(host, data);
++ }
++}
++
++static void atmci_cmd_interrupt(struct mmc_host *mmc, u32 status)
++{
++ struct atmel_mci *host = mmc_priv(mmc);
++ struct mmc_command *cmd = host->cmd;
++
++ /*
++ * Read the response now so that we're free to send a new
++ * command immediately.
++ */
++ cmd->resp[0] = mci_readl(host, RSPR);
++ cmd->resp[1] = mci_readl(host, RSPR);
++ cmd->resp[2] = mci_readl(host, RSPR);
++ cmd->resp[3] = mci_readl(host, RSPR);
++
++ mci_writel(host, IDR, MCI_BIT(CMDRDY) | MCI_CMD_ERROR_FLAGS);
++ host->cmd = NULL;
++
++ if (test_bit(EVENT_STOP_SENT, &host->completed_events))
++ set_bit(EVENT_STOP_COMPLETE, &host->pending_events);
++ else
++ set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
++
++ tasklet_schedule(&host->tasklet);
++}
++
++static void atmci_xfer_complete(struct dma_request *_req)
++{
++ struct dma_request_sg *req = to_dma_request_sg(_req);
++ struct atmel_mci_dma *dma;
++ struct atmel_mci *host;
++ struct mmc_data *data;
++
++ dma = container_of(req, struct atmel_mci_dma, req);
++ host = container_of(dma, struct atmel_mci, dma);
++ data = host->data;
++
++ if (data->stop && !test_and_set_bit(EVENT_STOP_SENT,
++ &host->completed_events))
++ send_stop_cmd(host->mmc, data, 0);
++
++ if (data->flags & MMC_DATA_READ) {
++ mci_writel(host, IDR, MCI_DATA_ERROR_FLAGS);
++ set_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++ tasklet_schedule(&host->tasklet);
++ } else {
++ /*
++ * For the WRITE case, wait for NOTBUSY. This function
++ * is called when everything has been written to the
++ * controller, not when the card is done programming.
++ */
++ mci_writel(host, IER, MCI_BIT(NOTBUSY));
++ }
++}
++
++static void atmci_dma_error(struct dma_request *_req)
++{
++ struct dma_request_sg *req = to_dma_request_sg(_req);
++ struct atmel_mci_dma *dma;
++ struct atmel_mci *host;
++
++ dma = container_of(req, struct atmel_mci_dma, req);
++ host = container_of(dma, struct atmel_mci, dma);
++
++ mci_writel(host, IDR, (MCI_BIT(NOTBUSY)
++ | MCI_DATA_ERROR_FLAGS));
++
++ set_bit(EVENT_DMA_ERROR, &host->pending_events);
++ tasklet_schedule(&host->tasklet);
++}
++
++static irqreturn_t atmci_interrupt(int irq, void *dev_id,
++ struct pt_regs *regs)
++{
++ struct mmc_host *mmc = dev_id;
++ struct atmel_mci *host = mmc_priv(mmc);
++ u32 status, mask, pending;
++
++ spin_lock(&mmc->lock);
++
++ status = mci_readl(host, SR);
++ mask = mci_readl(host, IMR);
++ pending = status & mask;
++
++ do {
++ if (pending & MCI_CMD_ERROR_FLAGS) {
++ mci_writel(host, IDR, (MCI_BIT(CMDRDY)
++ | MCI_BIT(NOTBUSY)
++ | MCI_CMD_ERROR_FLAGS
++ | MCI_DATA_ERROR_FLAGS));
++ host->error_status = status;
++ host->cmd = NULL;
++ if (test_bit(EVENT_STOP_SENT, &host->completed_events))
++ set_bit(EVENT_STOP_ERROR, &host->pending_events);
++ else
++ set_bit(EVENT_CMD_ERROR, &host->pending_events);
++ tasklet_schedule(&host->tasklet);
++ break;
++ }
++ if (pending & MCI_DATA_ERROR_FLAGS) {
++ mci_writel(host, IDR, (MCI_BIT(NOTBUSY)
++ | MCI_DATA_ERROR_FLAGS));
++ host->error_status = status;
++ set_bit(EVENT_DATA_ERROR, &host->pending_events);
++ tasklet_schedule(&host->tasklet);
++ break;
++ }
++ if (pending & MCI_BIT(CMDRDY))
++ atmci_cmd_interrupt(mmc, status);
++ if (pending & MCI_BIT(NOTBUSY)) {
++ mci_writel(host, IDR, (MCI_BIT(NOTBUSY)
++ | MCI_DATA_ERROR_FLAGS));
++ set_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++ tasklet_schedule(&host->tasklet);
++ }
++
++ status = mci_readl(host, SR);
++ mask = mci_readl(host, IMR);
++ pending = status & mask;
++ } while (pending);
++
++ spin_unlock(&mmc->lock);
++
++ return IRQ_HANDLED;
++}
++
++static int __devinit atmci_probe(struct platform_device *pdev)
++{
++ struct atmel_mci *host;
++ struct mmc_host *mmc;
++ struct resource *regs;
++ int irq;
++ int ret;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++ irq = platform_get_irq(pdev, 0);
++ if (irq < 0)
++ return irq;
++
++ mmc = mmc_alloc_host(sizeof(struct atmel_mci), &pdev->dev);
++ if (!mmc)
++ return -ENOMEM;
++
++ host = mmc_priv(mmc);
++ host->pdev = pdev;
++ host->mmc = mmc;
++
++ host->mck = clk_get(&pdev->dev, "mck");
++ if (IS_ERR(host->mck)) {
++ ret = PTR_ERR(host->mck);
++ goto out_free_host;
++ }
++ clk_enable(host->mck);
++
++ ret = -ENOMEM;
++ host->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!host->regs)
++ goto out_disable_clk;
++
++ host->bus_hz = clk_get_rate(host->mck);
++ host->mapbase = regs->start;
++
++ mmc->ops = &atmci_ops;
++ mmc->f_min = (host->bus_hz + 511) / 512;
++ mmc->f_max = min((unsigned int)(host->bus_hz / 2), fmax);
++ mmc->ocr_avail = 0x00100000;
++ mmc->caps |= MMC_CAP_4_BIT_DATA;
++
++ tasklet_init(&host->tasklet, atmci_tasklet_func, (unsigned long)mmc);
++
++ ret = request_irq(irq, atmci_interrupt, 0, "mmci", mmc);
++ if (ret)
++ goto out_unmap;
++
++ /* TODO: Get this information from platform data */
++ ret = -ENOMEM;
++ host->dma.req.req.dmac = find_dma_controller(0);
++ if (!host->dma.req.req.dmac) {
++ printk(KERN_ERR
++ "mmci: No DMA controller available, aborting\n");
++ goto out_free_irq;
++ }
++ ret = dma_alloc_channel(host->dma.req.req.dmac);
++ if (ret < 0) {
++ printk(KERN_ERR
++ "mmci: Unable to allocate DMA channel, aborting\n");
++ goto out_free_irq;
++ }
++ host->dma.req.req.channel = ret;
++ host->dma.req.width = DMA_WIDTH_32BIT;
++ host->dma.req.req.xfer_complete = atmci_xfer_complete;
++ host->dma.req.req.block_complete = NULL; // atmci_block_complete;
++ host->dma.req.req.error = atmci_dma_error;
++ host->dma.rx_periph_id = 0;
++ host->dma.tx_periph_id = 1;
++
++ mci_writel(host, CR, MCI_BIT(SWRST));
++ mci_writel(host, IDR, ~0UL);
++ mci_writel(host, CR, MCI_BIT(MCIEN));
++
++ platform_set_drvdata(pdev, host);
++
++ mmc_add_host(mmc);
++
++ printk(KERN_INFO "%s: Atmel MCI controller at 0x%08lx irq %d\n",
++ mmc_hostname(mmc), host->mapbase, irq);
++
++ return 0;
++
++out_free_irq:
++ free_irq(irq, mmc);
++out_unmap:
++ iounmap(host->regs);
++out_disable_clk:
++ clk_disable(host->mck);
++ clk_put(host->mck);
++out_free_host:
++ mmc_free_host(mmc);
++ return ret;
++}
++
++static int __devexit atmci_remove(struct platform_device *pdev)
++{
++ struct atmel_mci *host = platform_get_drvdata(pdev);
++
++ platform_set_drvdata(pdev, NULL);
++
++ if (host) {
++ mmc_remove_host(host->mmc);
++
++ mci_writel(host, IDR, ~0UL);
++ mci_writel(host, CR, MCI_BIT(MCIDIS));
++ mci_readl(host, SR);
++
++ free_irq(platform_get_irq(pdev, 0), host->mmc);
++ iounmap(host->regs);
++
++ clk_disable(host->mck);
++ clk_put(host->mck);
++
++ mmc_free_host(host->mmc);
++ }
++ return 0;
++}
++
++static struct platform_driver atmci_driver = {
++ .probe = atmci_probe,
++ .remove = __devexit_p(atmci_remove),
++ .driver = {
++ .name = DRIVER_NAME,
++ },
++};
++
++static int __init atmci_init(void)
++{
++ return platform_driver_register(&atmci_driver);
++}
++
++static void __exit atmci_exit(void)
++{
++ platform_driver_unregister(&atmci_driver);
++}
++
++module_init(atmci_init);
++module_exit(atmci_exit);
++
++MODULE_DESCRIPTION("Atmel Multimedia Card Interface driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.18-avr32/drivers/mmc/atmel-mci.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/mmc/atmel-mci.h 2007-01-15 10:31:36.000000000 +0100
+@@ -0,0 +1,192 @@
++/*
++ * Atmel MultiMedia Card Interface driver
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __DRIVERS_MMC_ATMEL_MCI_H__
++#define __DRIVERS_MMC_ATMEL_MCI_H__
++
++/* MCI register offsets */
++#define MCI_CR 0x0000
++#define MCI_MR 0x0004
++#define MCI_DTOR 0x0008
++#define MCI_SDCR 0x000c
++#define MCI_ARGR 0x0010
++#define MCI_CMDR 0x0014
++#define MCI_BLKR 0x0018
++#define MCI_RSPR 0x0020
++#define MCI_RSPR1 0x0024
++#define MCI_RSPR2 0x0028
++#define MCI_RSPR3 0x002c
++#define MCI_RDR 0x0030
++#define MCI_TDR 0x0034
++#define MCI_SR 0x0040
++#define MCI_IER 0x0044
++#define MCI_IDR 0x0048
++#define MCI_IMR 0x004c
++
++/* Bitfields in CR */
++#define MCI_MCIEN_OFFSET 0
++#define MCI_MCIEN_SIZE 1
++#define MCI_MCIDIS_OFFSET 1
++#define MCI_MCIDIS_SIZE 1
++#define MCI_PWSEN_OFFSET 2
++#define MCI_PWSEN_SIZE 1
++#define MCI_PWSDIS_OFFSET 3
++#define MCI_PWSDIS_SIZE 1
++#define MCI_SWRST_OFFSET 7
++#define MCI_SWRST_SIZE 1
++
++/* Bitfields in MR */
++#define MCI_CLKDIV_OFFSET 0
++#define MCI_CLKDIV_SIZE 8
++#define MCI_PWSDIV_OFFSET 8
++#define MCI_PWSDIV_SIZE 3
++#define MCI_RDPROOF_OFFSET 11
++#define MCI_RDPROOF_SIZE 1
++#define MCI_WRPROOF_OFFSET 12
++#define MCI_WRPROOF_SIZE 1
++#define MCI_DMAPADV_OFFSET 14
++#define MCI_DMAPADV_SIZE 1
++#define MCI_BLKLEN_OFFSET 16
++#define MCI_BLKLEN_SIZE 16
++
++/* Bitfields in DTOR */
++#define MCI_DTOCYC_OFFSET 0
++#define MCI_DTOCYC_SIZE 4
++#define MCI_DTOMUL_OFFSET 4
++#define MCI_DTOMUL_SIZE 3
++
++/* Bitfields in SDCR */
++#define MCI_SDCSEL_OFFSET 0
++#define MCI_SDCSEL_SIZE 4
++#define MCI_SDCBUS_OFFSET 7
++#define MCI_SDCBUS_SIZE 1
++
++/* Bitfields in ARGR */
++#define MCI_ARG_OFFSET 0
++#define MCI_ARG_SIZE 32
++
++/* Bitfields in CMDR */
++#define MCI_CMDNB_OFFSET 0
++#define MCI_CMDNB_SIZE 6
++#define MCI_RSPTYP_OFFSET 6
++#define MCI_RSPTYP_SIZE 2
++#define MCI_SPCMD_OFFSET 8
++#define MCI_SPCMD_SIZE 3
++#define MCI_OPDCMD_OFFSET 11
++#define MCI_OPDCMD_SIZE 1
++#define MCI_MAXLAT_OFFSET 12
++#define MCI_MAXLAT_SIZE 1
++#define MCI_TRCMD_OFFSET 16
++#define MCI_TRCMD_SIZE 2
++#define MCI_TRDIR_OFFSET 18
++#define MCI_TRDIR_SIZE 1
++#define MCI_TRTYP_OFFSET 19
++#define MCI_TRTYP_SIZE 2
++
++/* Bitfields in BLKR */
++#define MCI_BCNT_OFFSET 0
++#define MCI_BCNT_SIZE 16
++
++/* Bitfields in RSPRn */
++#define MCI_RSP_OFFSET 0
++#define MCI_RSP_SIZE 32
++
++/* Bitfields in SR/IER/IDR/IMR */
++#define MCI_CMDRDY_OFFSET 0
++#define MCI_CMDRDY_SIZE 1
++#define MCI_RXRDY_OFFSET 1
++#define MCI_RXRDY_SIZE 1
++#define MCI_TXRDY_OFFSET 2
++#define MCI_TXRDY_SIZE 1
++#define MCI_BLKE_OFFSET 3
++#define MCI_BLKE_SIZE 1
++#define MCI_DTIP_OFFSET 4
++#define MCI_DTIP_SIZE 1
++#define MCI_NOTBUSY_OFFSET 5
++#define MCI_NOTBUSY_SIZE 1
++#define MCI_ENDRX_OFFSET 6
++#define MCI_ENDRX_SIZE 1
++#define MCI_ENDTX_OFFSET 7
++#define MCI_ENDTX_SIZE 1
++#define MCI_RXBUFF_OFFSET 14
++#define MCI_RXBUFF_SIZE 1
++#define MCI_TXBUFE_OFFSET 15
++#define MCI_TXBUFE_SIZE 1
++#define MCI_RINDE_OFFSET 16
++#define MCI_RINDE_SIZE 1
++#define MCI_RDIRE_OFFSET 17
++#define MCI_RDIRE_SIZE 1
++#define MCI_RCRCE_OFFSET 18
++#define MCI_RCRCE_SIZE 1
++#define MCI_RENDE_OFFSET 19
++#define MCI_RENDE_SIZE 1
++#define MCI_RTOE_OFFSET 20
++#define MCI_RTOE_SIZE 1
++#define MCI_DCRCE_OFFSET 21
++#define MCI_DCRCE_SIZE 1
++#define MCI_DTOE_OFFSET 22
++#define MCI_DTOE_SIZE 1
++#define MCI_OVRE_OFFSET 30
++#define MCI_OVRE_SIZE 1
++#define MCI_UNRE_OFFSET 31
++#define MCI_UNRE_SIZE 1
++
++/* Constants for DTOMUL */
++#define MCI_DTOMUL_1_CYCLE 0
++#define MCI_DTOMUL_16_CYCLES 1
++#define MCI_DTOMUL_128_CYCLES 2
++#define MCI_DTOMUL_256_CYCLES 3
++#define MCI_DTOMUL_1024_CYCLES 4
++#define MCI_DTOMUL_4096_CYCLES 5
++#define MCI_DTOMUL_65536_CYCLES 6
++#define MCI_DTOMUL_1048576_CYCLES 7
++
++/* Constants for RSPTYP */
++#define MCI_RSPTYP_NO_RESP 0
++#define MCI_RSPTYP_48_BIT 1
++#define MCI_RSPTYP_136_BIT 2
++
++/* Constants for SPCMD */
++#define MCI_SPCMD_NO_SPEC_CMD 0
++#define MCI_SPCMD_INIT_CMD 1
++#define MCI_SPCMD_SYNC_CMD 2
++#define MCI_SPCMD_INT_CMD 4
++#define MCI_SPCMD_INT_RESP 5
++
++/* Constants for TRCMD */
++#define MCI_TRCMD_NO_TRANS 0
++#define MCI_TRCMD_START_TRANS 1
++#define MCI_TRCMD_STOP_TRANS 2
++
++/* Constants for TRTYP */
++#define MCI_TRTYP_BLOCK 0
++#define MCI_TRTYP_MULTI_BLOCK 1
++#define MCI_TRTYP_STREAM 2
++
++/* Bit manipulation macros */
++#define MCI_BIT(name) \
++ (1 << MCI_##name##_OFFSET)
++#define MCI_BF(name,value) \
++ (((value) & ((1 << MCI_##name##_SIZE) - 1)) \
++ << MCI_##name##_OFFSET)
++#define MCI_BFEXT(name,value) \
++ (((value) >> MCI_##name##_OFFSET) \
++ & ((1 << MCI_##name##_SIZE) - 1))
++#define MCI_BFINS(name,value,old) \
++ (((old) & ~(((1 << MCI_##name##_SIZE) - 1) \
++ << MCI_##name##_OFFSET)) \
++ | MCI_BF(name,value))
++
++/* Register access macros */
++#define mci_readl(port,reg) \
++ __raw_readl((port)->regs + MCI_##reg)
++#define mci_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + MCI_##reg)
++
++#endif /* __DRIVERS_MMC_ATMEL_MCI_H__ */
diff --git a/packages/linux/linux-2.6.18/atmel-spi-master-driver.patch b/packages/linux/linux-2.6.18/atmel-spi-master-driver.patch
new file mode 100644
index 0000000000..d45f3c50c9
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-spi-master-driver.patch
@@ -0,0 +1,990 @@
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+
+On Mon, 5 Jun 2006 06:49:52 -0700
+David Brownell <david-b@pacbell.net> wrote:
+
+> Here's an updated version that compiles and partially runs
+> in the at91 world. If the avr32 code would switch to standard
+> APIs like <linux/platform_device.h> and <linux/clk.h> it should
+> behave there too, somewhat. Ignore the extra debug crap.
+
+Here's another update which includes most of the fixes in Dave's
+version and which has been verified on my STK1000 board.
+
+I had some trouble getting your version to turn on the display
+correctly, so I've reworked it as a series of smaller changes to figure
+out what broke it. You should probably verify that I didn't leave out
+anything important.
+
+Also, I didn't find CONFIG_SPI_AT91_MANUAL_CS defined anywhere, nor did
+I find cpu_is_at91sam9261() so I left out those changes.
+
+Can any of you test this on AT91 somehow? I'm not completely up to
+speed on my AT91RM9200-EK yet. Anyone else I should Cc?
+
+I can send you individual patches if you want. Here's the shortlog:
+
+Atmel SPI Driver
+spi_atmel: convert to platform_device framework
+spi_atmel: fix broken parameter validation in setup() and transfer()
+spi_atmel: Revert core workaround for max_speed_hz=0
+spi_atmel: Divide len by two if bits_per_word > 8
+spi_atmel: Enable ENDRX interrupt when rx_buf is set
+spi_atmel: Fix incorrect locking in interrupt routine
+spi_atmel: Line up variable declarations
+spi_atmel: Add some FIXMEs from David Brownell's patch
+spi_atmel: Header file cleanup
+spi_atmel: Introduce new_1 flag and use in sck speed setting
+spi_atmel: Move SPI_ATMEL above SPI_BITBANG
+Make SPI_ATMEL available to AT91
+
+
+>>From nobody Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Thu Apr 6 10:33:21 2006 +0200
+Subject: [PATCH] Atmel SPI Driver
+
+SPI master driver for the Atmel AT32/AT91 SPI Controller.
+
+UPDATED:
+ - against 2.6.17 + latest kernel.org GIT
+ - "at32_device" stuff removed from core of driver
+ - add platform_device glue, so at91 compiles
+ - use clock framework
+ - understand "old" (rm9200) vs "new" (sam9261, ap7000) silicon
+ (only different scbr definition, not csaat etc.)
+ - remove bogus spi core tweaks
+ - various fixes and cleanups
+
+The following changes from atmel-spi-driver-3.patch have been dropped:
+ - CONFIG_SPI_AT91_MANUAL_CS stuff. I can't find the symbol
+ anywhere
+ - DMA IRQ optimization by unmasking TXEMPTY when starting xfer
+ - All the code setting CSAAT.
+
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+
+On Mon, 5 Jun 2006 06:49:52 -0700
+David Brownell <david-b@pacbell.net> wrote:
+
+> Here's an updated version that compiles and partially runs
+> in the at91 world. If the avr32 code would switch to standard
+> APIs like <linux/platform_device.h> and <linux/clk.h> it should
+> behave there too, somewhat. Ignore the extra debug crap.
+
+Here's another update which includes most of the fixes in Dave's
+version and which has been verified on my STK1000 board.
+
+I had some trouble getting your version to turn on the display
+correctly, so I've reworked it as a series of smaller changes to figure
+out what broke it. You should probably verify that I didn't leave out
+anything important.
+
+Also, I didn't find CONFIG_SPI_AT91_MANUAL_CS defined anywhere, nor did
+I find cpu_is_at91sam9261() so I left out those changes.
+
+Can any of you test this on AT91 somehow? I'm not completely up to
+speed on my AT91RM9200-EK yet. Anyone else I should Cc?
+
+I can send you individual patches if you want. Here's the shortlog:
+
+Atmel SPI Driver
+spi_atmel: convert to platform_device framework
+spi_atmel: fix broken parameter validation in setup() and transfer()
+spi_atmel: Revert core workaround for max_speed_hz=0
+spi_atmel: Divide len by two if bits_per_word > 8
+spi_atmel: Enable ENDRX interrupt when rx_buf is set
+spi_atmel: Fix incorrect locking in interrupt routine
+spi_atmel: Line up variable declarations
+spi_atmel: Add some FIXMEs from David Brownell's patch
+spi_atmel: Header file cleanup
+spi_atmel: Introduce new_1 flag and use in sck speed setting
+spi_atmel: Move SPI_ATMEL above SPI_BITBANG
+Make SPI_ATMEL available to AT91
+
+
+>>From nobody Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Thu Apr 6 10:33:21 2006 +0200
+Subject: [PATCH] Atmel SPI Driver
+
+SPI master driver for the Atmel AT32/AT91 SPI Controller.
+
+UPDATED:
+ - against 2.6.17 + latest kernel.org GIT
+ - "at32_device" stuff removed from core of driver
+ - add platform_device glue, so at91 compiles
+ - use clock framework
+ - understand "old" (rm9200) vs "new" (sam9261, ap7000) silicon
+ (only different scbr definition, not csaat etc.)
+ - remove bogus spi core tweaks
+ - various fixes and cleanups
+
+The following changes from atmel-spi-driver-3.patch have been dropped:
+ - CONFIG_SPI_AT91_MANUAL_CS stuff. I can't find the symbol
+ anywhere
+ - DMA IRQ optimization by unmasking TXEMPTY when starting xfer
+ - All the code setting CSAAT.
+
+---
+ drivers/spi/Kconfig | 7
+ drivers/spi/Makefile | 1
+ drivers/spi/atmel_spi.c | 648 ++++++++++++++++++++++++++++++++++++++++++++++++
+ drivers/spi/atmel_spi.h | 167 ++++++++++++
+ 4 files changed, 823 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/spi/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/spi/Kconfig 2006-11-29 16:55:10.000000000 +0100
++++ linux-2.6.18-avr32/drivers/spi/Kconfig 2006-11-29 16:55:59.000000000 +0100
+@@ -51,6 +51,13 @@ config SPI_MASTER
+ comment "SPI Master Controller Drivers"
+ depends on SPI_MASTER
+
++config SPI_ATMEL
++ tristate "Atmel SPI Controller"
++ depends on (ARCH_AT91 || AVR32) && SPI_MASTER
++ help
++ This selects a driver for the Atmel SPI Controller, present on
++ many AT32 (AVR32) and AT91 (ARM) chips.
++
+ config SPI_BITBANG
+ tristate "Bitbanging SPI master"
+ depends on SPI_MASTER && EXPERIMENTAL
+Index: linux-2.6.18-avr32/drivers/spi/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/spi/Makefile 2006-11-29 16:55:10.000000000 +0100
++++ linux-2.6.18-avr32/drivers/spi/Makefile 2006-11-29 16:55:59.000000000 +0100
+@@ -12,6 +12,7 @@ obj-$(CONFIG_SPI_MASTER) += spi.o
+
+ # SPI master controller drivers (bus)
+ obj-$(CONFIG_SPI_BITBANG) += spi_bitbang.o
++obj-$(CONFIG_SPI_ATMEL) += atmel_spi.o
+ obj-$(CONFIG_SPI_BUTTERFLY) += spi_butterfly.o
+ obj-$(CONFIG_SPI_PXA2XX) += pxa2xx_spi.o
+ obj-$(CONFIG_SPI_MPC83xx) += spi_mpc83xx.o
+Index: linux-2.6.18-avr32/drivers/spi/atmel_spi.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/spi/atmel_spi.c 2006-11-29 17:10:19.000000000 +0100
+@@ -0,0 +1,648 @@
++/*
++ * Driver for Atmel AT32 and AT91 SPI Controllers
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/clk.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++#include <linux/dma-mapping.h>
++#include <linux/err.h>
++#include <linux/interrupt.h>
++#include <linux/spi/spi.h>
++
++#include <asm/io.h>
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++
++#include "atmel_spi.h"
++
++/*
++ * The core SPI transfer engine just talks to a register bank to set up
++ * DMA transfers; transfer queue progress is driven by IRQs. The clock
++ * framework provides the base clock, subdivided for each spi_device.
++ *
++ * Newer controllers, marked with "new_1" flag, have:
++ * - CR.LASTXFER
++ * - SPI_MR.DIV32 may become FDIV or must-be-zero (here: always zero)
++ * - SPI_SR.TXEMPTY, SPI_SR.NSSR (and corresponding irqs)
++ * - SPI_CSRx.CSAAT
++ * - SPI_CSRx.SBCR allows faster clocking
++ */
++struct atmel_spi {
++ spinlock_t lock;
++
++ void __iomem *regs;
++ int irq;
++ struct clk *clk;
++ struct platform_device *pdev;
++ unsigned new_1:1;
++
++ u8 stopping;
++ struct list_head queue;
++ struct spi_transfer *current_transfer;
++ unsigned long remaining_bytes;
++
++ void *buffer;
++ dma_addr_t buffer_dma;
++};
++
++#define BUFFER_SIZE PAGE_SIZE
++#define INVALID_DMA_ADDRESS 0xffffffff
++
++/*
++ * Earlier SPI controllers (e.g. on at91rm9200) have a design bug whereby
++ * they assume that spi slave device state will not change on deselect, so
++ * that automagic deselection is OK. Not so! Workaround uses nCSx pins
++ * as GPIOs; or newer controllers have CSAAT and friends.
++ *
++ * Since the CSAAT functionality is a bit weird on newer controllers
++ * as well, we use GPIO to control nCSx pins on all controllers.
++ */
++
++static inline void cs_activate(struct spi_device *spi)
++{
++ unsigned gpio = (unsigned) spi->controller_data;
++
++ dev_dbg(&spi->dev, "activate %u\n", gpio);
++ gpio_set_value(gpio, 0);
++}
++
++static inline void cs_deactivate(struct spi_device *spi)
++{
++ unsigned gpio = (unsigned) spi->controller_data;
++
++ dev_dbg(&spi->dev, "DEactivate %u\n", gpio);
++ gpio_set_value(gpio, 1);
++}
++
++/*
++ * Submit next transfer for DMA.
++ * lock is held, spi irq is blocked
++ */
++static void atmel_spi_next_xfer(struct spi_master *master,
++ struct spi_message *msg)
++{
++ struct atmel_spi *as = spi_master_get_devdata(master);
++ struct spi_transfer *xfer;
++ u32 imr = 0;
++ u32 len;
++ dma_addr_t tx_dma, rx_dma;
++
++ xfer = as->current_transfer;
++ if (!xfer || as->remaining_bytes == 0) {
++ if (xfer)
++ xfer = list_entry(xfer->transfer_list.next,
++ struct spi_transfer, transfer_list);
++ else
++ xfer = list_entry(msg->transfers.next, struct spi_transfer,
++ transfer_list);
++ as->remaining_bytes = xfer->len;
++ as->current_transfer = xfer;
++ }
++
++ len = as->remaining_bytes;
++
++ tx_dma = xfer->tx_dma;
++ rx_dma = xfer->rx_dma;
++
++ if (rx_dma == INVALID_DMA_ADDRESS) {
++ rx_dma = as->buffer_dma;
++ if (len > BUFFER_SIZE)
++ len = BUFFER_SIZE;
++ }
++ if (tx_dma == INVALID_DMA_ADDRESS) {
++ if (xfer->tx_buf) {
++ tx_dma = as->buffer_dma;
++ if (len > BUFFER_SIZE)
++ len = BUFFER_SIZE;
++ memcpy(as->buffer, xfer->tx_buf, len);
++ dma_sync_single_for_device(&as->pdev->dev,
++ as->buffer_dma, len,
++ DMA_TO_DEVICE);
++ } else {
++ /* Send undefined data; rx_dma is handy */
++ tx_dma = rx_dma;
++ }
++ }
++
++ spi_writel(as, RPR, rx_dma);
++ spi_writel(as, TPR, tx_dma);
++
++ as->remaining_bytes -= len;
++ if (msg->spi->bits_per_word > 8)
++ len >>= 1;
++
++ /* REVISIT: when xfer->delay_usecs == 0, the PDC "next transfer"
++ * mechanism might help avoid the IRQ latency between transfers
++ *
++ * We're also waiting for ENDRX before we start the next
++ * transfer because we need to handle some difficult timing
++ * issues otherwise. If we wait for ENDTX in one transfer and
++ * then starts waiting for ENDRX in the next, it's difficult
++ * to tell the difference between the ENDRX interrupt we're
++ * actually waiting for and the ENDRX interrupt of the
++ * previous transfer.
++ *
++ * It should be doable, though. Just not now...
++ */
++ spi_writel(as, TNCR, 0);
++ spi_writel(as, RNCR, 0);
++ imr = SPI_BIT(ENDRX);
++
++ dev_dbg(&msg->spi->dev,
++ "start xfer %p: len %u tx %p/%08x rx %p/%08x imr %08x\n",
++ xfer, xfer->len, xfer->tx_buf, xfer->tx_dma,
++ xfer->rx_buf, xfer->rx_dma, imr);
++
++ wmb();
++ spi_writel(as, TCR, len);
++ spi_writel(as, RCR, len);
++ spi_writel(as, PTCR, SPI_BIT(TXTEN) | SPI_BIT(RXTEN));
++ spi_writel(as, IER, imr);
++}
++
++static void atmel_spi_next_message(struct spi_master *master)
++{
++ struct atmel_spi *as = spi_master_get_devdata(master);
++ struct spi_message *msg;
++ u32 mr;
++
++ BUG_ON(as->current_transfer);
++
++ msg = list_entry(as->queue.next, struct spi_message, queue);
++
++ /* Select the chip */
++ mr = spi_readl(as, MR);
++ mr = SPI_BFINS(PCS, ~(1 << msg->spi->chip_select), mr);
++ spi_writel(as, MR, mr);
++ cs_activate(msg->spi);
++
++ atmel_spi_next_xfer(master, msg);
++}
++
++static void atmel_spi_dma_map_xfer(struct atmel_spi *as,
++ struct spi_transfer *xfer)
++{
++ xfer->tx_dma = xfer->rx_dma = INVALID_DMA_ADDRESS;
++ if (!(xfer->len & (L1_CACHE_BYTES - 1))) {
++ if (xfer->tx_buf
++ && !((unsigned long)xfer->tx_buf & (L1_CACHE_BYTES - 1)))
++ xfer->tx_dma = dma_map_single(&as->pdev->dev,
++ xfer->tx_buf,
++ xfer->len,
++ DMA_TO_DEVICE);
++ if (xfer->rx_buf
++ && !((unsigned long)xfer->rx_buf & (L1_CACHE_BYTES - 1)))
++ xfer->rx_dma = dma_map_single(&as->pdev->dev,
++ xfer->rx_buf,
++ xfer->len,
++ DMA_FROM_DEVICE);
++ }
++}
++
++static irqreturn_t
++atmel_spi_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct spi_master *master = dev_id;
++ struct atmel_spi *as = spi_master_get_devdata(master);
++ struct spi_message *msg;
++ struct spi_transfer *xfer;
++ u32 status, pending, imr;
++ int ret = IRQ_NONE;
++
++ imr = spi_readl(as, IMR);
++ status = spi_readl(as, SR);
++ pending = status & imr;
++pr_debug("spi irq: stat %05x imr %05x pend %05x\n", status, imr, pending);
++
++ if (pending & (SPI_BIT(ENDTX) | SPI_BIT(ENDRX))) {
++ ret = IRQ_HANDLED;
++
++ spi_writel(as, IDR, pending);
++ spin_lock(&as->lock);
++
++ xfer = as->current_transfer;
++ msg = list_entry(as->queue.next, struct spi_message, queue);
++
++ /*
++ * If the rx buffer wasn't aligned, we used a bounce
++ * buffer for the transfer. Copy the data back and
++ * make the bounce buffer ready for re-use.
++ */
++ if (xfer->rx_buf && xfer->rx_dma == INVALID_DMA_ADDRESS) {
++ unsigned int len = xfer->len;
++ if (len > BUFFER_SIZE)
++ len = BUFFER_SIZE;
++
++ dma_sync_single_for_cpu(&as->pdev->dev, as->buffer_dma,
++ len, DMA_FROM_DEVICE);
++ memcpy((xfer->rx_buf + xfer->len
++ - len - as->remaining_bytes),
++ as->buffer, len);
++ }
++
++
++ if (as->remaining_bytes == 0) {
++ msg->actual_length += xfer->len;
++
++ if (!msg->is_dma_mapped) {
++ if (xfer->tx_dma != INVALID_DMA_ADDRESS)
++ dma_unmap_single(master->cdev.dev,
++ xfer->tx_dma,
++ xfer->len,
++ DMA_TO_DEVICE);
++ if (xfer->rx_dma != INVALID_DMA_ADDRESS)
++ dma_unmap_single(master->cdev.dev,
++ xfer->rx_dma,
++ xfer->len,
++ DMA_FROM_DEVICE);
++ }
++
++ /* REVISIT: udelay in irq is unfriendly */
++ if (xfer->delay_usecs)
++ udelay(xfer->delay_usecs);
++
++ if (msg->transfers.prev == &xfer->transfer_list) {
++
++ /* report completed message */
++ cs_deactivate(msg->spi);
++ list_del(&msg->queue);
++ msg->status = 0;
++
++ dev_dbg(master->cdev.dev,
++ "xfer complete: %u bytes transferred\n",
++ msg->actual_length);
++
++ spin_unlock(&as->lock);
++ msg->complete(msg->context);
++ spin_lock(&as->lock);
++
++ as->current_transfer = NULL;
++
++ /* continue; complete() may have queued requests */
++ if (list_empty(&as->queue) || as->stopping)
++ spi_writel(as, PTCR, SPI_BIT(RXTDIS)
++ | SPI_BIT(TXTDIS));
++ else
++ atmel_spi_next_message(master);
++ } else {
++ if (xfer->cs_change) {
++ cs_deactivate(msg->spi);
++ udelay(1);
++ cs_activate(msg->spi);
++ }
++
++ /*
++ * Not done yet. Submit the next transfer.
++ *
++ * FIXME handle protocol options for xfer
++ */
++ atmel_spi_next_xfer(master, msg);
++ }
++ } else {
++ /*
++ * Keep going, we still have data to send in
++ * the current transfer.
++ */
++ atmel_spi_next_xfer(master, msg);
++ }
++ spin_unlock(&as->lock);
++ }
++
++ return ret;
++}
++
++static int atmel_spi_setup(struct spi_device *spi)
++{
++ struct atmel_spi *as;
++ u32 scbr, csr;
++ unsigned int bits = spi->bits_per_word;
++ unsigned long bus_hz, sck_hz;
++ unsigned int npcs_pin;
++ int ret;
++
++ as = spi_master_get_devdata(spi->master);
++
++ if (as->stopping)
++ return -ESHUTDOWN;
++
++ if (spi->chip_select > spi->master->num_chipselect) {
++ dev_dbg(&spi->dev,
++ "setup: invalid chipselect %u (%u defined)\n",
++ spi->chip_select, spi->master->num_chipselect);
++ return -EINVAL;
++ }
++
++ if (bits == 0)
++ bits = 8;
++ if (bits < 8 || bits > 16) {
++ dev_dbg(&spi->dev,
++ "setup: invalid bits_per_word %u (8 to 16)\n",
++ bits);
++ return -EINVAL;
++ }
++
++ if (spi->mode & (SPI_CS_HIGH | SPI_LSB_FIRST)) {
++ dev_dbg(&spi->dev, "setup: unsupported mode %u\n", spi->mode);
++ return -EINVAL;
++ }
++
++ /* speed zero convention is used by some upper layers */
++ bus_hz = clk_get_rate(as->clk);
++ if (spi->max_speed_hz) {
++ /* assume div32/fdiv/mbz == 0 */
++ if (!as->new_1)
++ bus_hz /= 2;
++ scbr = ((bus_hz + spi->max_speed_hz - 1)
++ / spi->max_speed_hz);
++ if (scbr >= (1 << SPI_SCBR_SIZE)) {
++ dev_dbg(&spi->dev, "setup: %d Hz too slow, scbr %u\n",
++ spi->max_speed_hz, scbr);
++ return -EINVAL;
++ }
++ } else
++ scbr = 0xff;
++ sck_hz = bus_hz / scbr;
++
++ csr = SPI_BF(SCBR, scbr) | SPI_BF(BITS, bits - 8);
++ if (spi->mode & SPI_CPOL)
++ csr |= SPI_BIT(CPOL);
++ if (!(spi->mode & SPI_CPHA))
++ csr |= SPI_BIT(NCPHA);
++
++ /* TODO: DLYBS and DLYBCT */
++ csr |= SPI_BF(DLYBS, 10);
++ csr |= SPI_BF(DLYBCT, 10);
++
++ npcs_pin = (unsigned int)spi->controller_data;
++ if (!spi->controller_state) {
++ ret = gpio_request(npcs_pin, "spi_npcs");
++ if (ret)
++ return ret;
++ spi->controller_state = (void *)npcs_pin;
++ }
++
++ gpio_set_value(npcs_pin, 1);
++
++ dev_dbg(&spi->dev,
++ "setup: %lu Hz bpw %u mode 0x%x -> csr%d %08x\n",
++ sck_hz, bits, spi->mode, spi->chip_select, csr);
++
++ spi_writel(as, CSR0 + 4 * spi->chip_select, csr);
++
++ return 0;
++}
++
++static int atmel_spi_transfer(struct spi_device *spi, struct spi_message *msg)
++{
++ struct atmel_spi *as;
++ struct spi_transfer *xfer;
++ unsigned long flags;
++ struct device *controller = spi->master->cdev.dev;
++
++ as = spi_master_get_devdata(spi->master);
++
++ dev_dbg(controller, "new message %p submitted for %s\n",
++ msg, spi->dev.bus_id);
++
++ if (unlikely(list_empty(&msg->transfers)
++ || !spi->max_speed_hz))
++ return -EINVAL;
++
++ if (as->stopping)
++ return -ESHUTDOWN;
++
++ list_for_each_entry(xfer, &msg->transfers, transfer_list) {
++ if (!(xfer->tx_buf || xfer->rx_buf)) {
++ dev_dbg(&spi->dev, "missing rx or tx buf\n");
++ return -EINVAL;
++ }
++
++ /* FIXME implement these protocol options!! */
++ if (xfer->bits_per_word || xfer->speed_hz) {
++ dev_dbg(&spi->dev, "no protocol options yet\n");
++ return -ENOPROTOOPT;
++ }
++ }
++
++ /* scrub dcache "early" */
++ if (!msg->is_dma_mapped) {
++ list_for_each_entry(xfer, &msg->transfers, transfer_list)
++ atmel_spi_dma_map_xfer(as, xfer);
++ }
++
++ list_for_each_entry(xfer, &msg->transfers, transfer_list) {
++ dev_dbg(controller,
++ " xfer %p: len %u tx %p/%08x rx %p/%08x\n",
++ xfer, xfer->len,
++ xfer->tx_buf, xfer->tx_dma,
++ xfer->rx_buf, xfer->rx_dma);
++ }
++
++ msg->status = -EINPROGRESS;
++ msg->actual_length = 0;
++
++ spin_lock_irqsave(&as->lock, flags);
++ list_add_tail(&msg->queue, &as->queue);
++ if (!as->current_transfer)
++ atmel_spi_next_message(spi->master);
++ spin_unlock_irqrestore(&as->lock, flags);
++
++ return 0;
++}
++
++static void atmel_spi_cleanup(const struct spi_device *spi)
++{
++ if (spi->controller_state)
++ gpio_free((unsigned int)spi->controller_data);
++}
++
++/*-------------------------------------------------------------------------*/
++
++static int __devinit atmel_spi_probe(struct platform_device *pdev)
++{
++ struct resource *regs;
++ int irq;
++ struct clk *clk;
++ int ret;
++ struct spi_master *master;
++ struct atmel_spi *as;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++
++ irq = platform_get_irq(pdev, 0);
++ if (irq < 0)
++ return irq;
++
++ clk = clk_get(&pdev->dev, "pclk");
++ if (IS_ERR(clk))
++ return PTR_ERR(clk);
++
++ /* setup spi core then atmel-specific driver state */
++ ret = -ENOMEM;
++ master = spi_alloc_master(&pdev->dev, sizeof *as);
++ if (!master)
++ goto out_free;
++
++ master->bus_num = pdev->id;
++ master->num_chipselect = 4;
++ master->setup = atmel_spi_setup;
++ master->transfer = atmel_spi_transfer;
++ master->cleanup = atmel_spi_cleanup;
++ platform_set_drvdata(pdev, master);
++
++ as = spi_master_get_devdata(master);
++
++ as->buffer = dma_alloc_coherent(&pdev->dev, BUFFER_SIZE,
++ &as->buffer_dma, GFP_KERNEL);
++ if (!as->buffer)
++ goto out_free;
++
++ spin_lock_init(&as->lock);
++ INIT_LIST_HEAD(&as->queue);
++ as->pdev = pdev;
++ as->regs = ioremap(regs->start, (regs->end - regs->start) + 1);
++ if (!as->regs)
++ goto out_free_buffer;
++ as->irq = irq;
++ as->clk = clk;
++#if !defined(CONFIG_ARCH_AT91RM9200)
++ /* if (!cpu_is_at91rm9200()) */
++ as->new_1 = 1;
++#endif
++
++ ret = request_irq(irq, atmel_spi_interrupt, 0,
++ pdev->dev.bus_id, master);
++ if (ret)
++ goto out_unmap_regs;
++
++ /* Initialize the hardware */
++ clk_enable(clk);
++ spi_writel(as, CR, SPI_BIT(SWRST));
++ spi_writel(as, MR, SPI_BIT(MSTR) | SPI_BIT(MODFDIS));
++ spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS));
++ spi_writel(as, CR, SPI_BIT(SPIEN));
++
++ /* go! */
++ dev_info(&pdev->dev, "Atmel SPI Controller at 0x%08lx (irq %d)\n",
++ (unsigned long)regs->start, irq);
++
++ ret = spi_register_master(master);
++ if (ret)
++ goto out_reset_hw;
++
++ return 0;
++
++out_reset_hw:
++ spi_writel(as, CR, SPI_BIT(SWRST));
++ clk_disable(clk);
++ free_irq(irq, master);
++out_unmap_regs:
++ iounmap(as->regs);
++out_free_buffer:
++ dma_free_coherent(&pdev->dev, BUFFER_SIZE, as->buffer,
++ as->buffer_dma);
++out_free:
++ clk_put(clk);
++ spi_master_put(master);
++ return ret;
++}
++
++static int __devexit atmel_spi_remove(struct platform_device *pdev)
++{
++ struct spi_master *master = platform_get_drvdata(pdev);
++ struct atmel_spi *as = spi_master_get_devdata(master);
++ struct spi_message *msg;
++
++ /* reset the hardware and block queue progress */
++ spin_lock_irq(&as->lock);
++ as->stopping = 1;
++ spi_writel(as, CR, SPI_BIT(SWRST));
++ spi_readl(as, SR);
++ spin_unlock_irq(&as->lock);
++
++ /* Terminate remaining queued transfers */
++ list_for_each_entry(msg, &as->queue, queue) {
++ /* REVISIT unmapping the dma is sort of a NOP on ARM,
++ * but we shouldn't depend on that...
++ */
++ msg->status = -ESHUTDOWN;
++ msg->complete(msg->context);
++ }
++
++ dma_free_coherent(&pdev->dev, BUFFER_SIZE, as->buffer,
++ as->buffer_dma);
++
++ clk_disable(as->clk);
++ clk_put(as->clk);
++ free_irq(as->irq, master);
++ iounmap(as->regs);
++
++ spi_unregister_master(master);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++
++static int atmel_spi_suspend(struct platform_device *pdev, pm_message_t mesg)
++{
++ struct spi_master *master = platform_get_drvdata(pdev);
++ struct atmel_spi *as = spi_master_get_devdata(master);
++
++ clk_disable(as->clk);
++ return 0;
++}
++
++static int atmel_spi_resume(struct platform_device *pdev)
++{
++ struct spi_master *master = platform_get_drvdata(pdev);
++ struct atmel_spi *as = spi_master_get_devdata(master);
++
++ clk_enable(as->clk);
++ return 0;
++}
++
++#else
++#define atmel_spi_suspend NULL
++#define atmel_spi_resume NULL
++#endif
++
++
++static struct platform_driver atmel_spi_driver = {
++ .driver = {
++ .name = "atmel_spi",
++ .owner = THIS_MODULE,
++ },
++ .probe = atmel_spi_probe,
++ .suspend = atmel_spi_suspend,
++ .resume = atmel_spi_resume,
++ .remove = __devexit_p(atmel_spi_remove),
++};
++
++static int __init atmel_spi_init(void)
++{
++ return platform_driver_register(&atmel_spi_driver);
++}
++module_init(atmel_spi_init);
++
++static void __exit atmel_spi_exit(void)
++{
++ platform_driver_unregister(&atmel_spi_driver);
++}
++module_exit(atmel_spi_exit);
++
++MODULE_DESCRIPTION("Atmel AT32/AT91 SPI Controller driver");
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.18-avr32/drivers/spi/atmel_spi.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/spi/atmel_spi.h 2006-11-29 16:55:59.000000000 +0100
+@@ -0,0 +1,167 @@
++/*
++ * Register definitions for Atmel Serial Peripheral Interface (SPI)
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ATMEL_SPI_H__
++#define __ATMEL_SPI_H__
++
++/* SPI register offsets */
++#define SPI_CR 0x0000
++#define SPI_MR 0x0004
++#define SPI_RDR 0x0008
++#define SPI_TDR 0x000c
++#define SPI_SR 0x0010
++#define SPI_IER 0x0014
++#define SPI_IDR 0x0018
++#define SPI_IMR 0x001c
++#define SPI_CSR0 0x0030
++#define SPI_CSR1 0x0034
++#define SPI_CSR2 0x0038
++#define SPI_CSR3 0x003c
++#define SPI_RPR 0x0100
++#define SPI_RCR 0x0104
++#define SPI_TPR 0x0108
++#define SPI_TCR 0x010c
++#define SPI_RNPR 0x0110
++#define SPI_RNCR 0x0114
++#define SPI_TNPR 0x0118
++#define SPI_TNCR 0x011c
++#define SPI_PTCR 0x0120
++#define SPI_PTSR 0x0124
++
++/* Bitfields in CR */
++#define SPI_SPIEN_OFFSET 0
++#define SPI_SPIEN_SIZE 1
++#define SPI_SPIDIS_OFFSET 1
++#define SPI_SPIDIS_SIZE 1
++#define SPI_SWRST_OFFSET 7
++#define SPI_SWRST_SIZE 1
++#define SPI_LASTXFER_OFFSET 24
++#define SPI_LASTXFER_SIZE 1
++
++/* Bitfields in MR */
++#define SPI_MSTR_OFFSET 0
++#define SPI_MSTR_SIZE 1
++#define SPI_PS_OFFSET 1
++#define SPI_PS_SIZE 1
++#define SPI_PCSDEC_OFFSET 2
++#define SPI_PCSDEC_SIZE 1
++#define SPI_FDIV_OFFSET 3
++#define SPI_FDIV_SIZE 1
++#define SPI_MODFDIS_OFFSET 4
++#define SPI_MODFDIS_SIZE 1
++#define SPI_LLB_OFFSET 7
++#define SPI_LLB_SIZE 1
++#define SPI_PCS_OFFSET 16
++#define SPI_PCS_SIZE 4
++#define SPI_DLYBCS_OFFSET 24
++#define SPI_DLYBCS_SIZE 8
++
++/* Bitfields in RDR */
++#define SPI_RD_OFFSET 0
++#define SPI_RD_SIZE 16
++
++/* Bitfields in TDR */
++#define SPI_TD_OFFSET 0
++#define SPI_TD_SIZE 16
++
++/* Bitfields in SR */
++#define SPI_RDRF_OFFSET 0
++#define SPI_RDRF_SIZE 1
++#define SPI_TDRE_OFFSET 1
++#define SPI_TDRE_SIZE 1
++#define SPI_MODF_OFFSET 2
++#define SPI_MODF_SIZE 1
++#define SPI_OVRES_OFFSET 3
++#define SPI_OVRES_SIZE 1
++#define SPI_ENDRX_OFFSET 4
++#define SPI_ENDRX_SIZE 1
++#define SPI_ENDTX_OFFSET 5
++#define SPI_ENDTX_SIZE 1
++#define SPI_RXBUFF_OFFSET 6
++#define SPI_RXBUFF_SIZE 1
++#define SPI_TXBUFE_OFFSET 7
++#define SPI_TXBUFE_SIZE 1
++#define SPI_NSSR_OFFSET 8
++#define SPI_NSSR_SIZE 1
++#define SPI_TXEMPTY_OFFSET 9
++#define SPI_TXEMPTY_SIZE 1
++#define SPI_SPIENS_OFFSET 16
++#define SPI_SPIENS_SIZE 1
++
++/* Bitfields in CSR0 */
++#define SPI_CPOL_OFFSET 0
++#define SPI_CPOL_SIZE 1
++#define SPI_NCPHA_OFFSET 1
++#define SPI_NCPHA_SIZE 1
++#define SPI_CSAAT_OFFSET 3
++#define SPI_CSAAT_SIZE 1
++#define SPI_BITS_OFFSET 4
++#define SPI_BITS_SIZE 4
++#define SPI_SCBR_OFFSET 8
++#define SPI_SCBR_SIZE 8
++#define SPI_DLYBS_OFFSET 16
++#define SPI_DLYBS_SIZE 8
++#define SPI_DLYBCT_OFFSET 24
++#define SPI_DLYBCT_SIZE 8
++
++/* Bitfields in RCR */
++#define SPI_RXCTR_OFFSET 0
++#define SPI_RXCTR_SIZE 16
++
++/* Bitfields in TCR */
++#define SPI_TXCTR_OFFSET 0
++#define SPI_TXCTR_SIZE 16
++
++/* Bitfields in RNCR */
++#define SPI_RXNCR_OFFSET 0
++#define SPI_RXNCR_SIZE 16
++
++/* Bitfields in TNCR */
++#define SPI_TXNCR_OFFSET 0
++#define SPI_TXNCR_SIZE 16
++
++/* Bitfields in PTCR */
++#define SPI_RXTEN_OFFSET 0
++#define SPI_RXTEN_SIZE 1
++#define SPI_RXTDIS_OFFSET 1
++#define SPI_RXTDIS_SIZE 1
++#define SPI_TXTEN_OFFSET 8
++#define SPI_TXTEN_SIZE 1
++#define SPI_TXTDIS_OFFSET 9
++#define SPI_TXTDIS_SIZE 1
++
++/* Constants for BITS */
++#define SPI_BITS_8_BPT 0
++#define SPI_BITS_9_BPT 1
++#define SPI_BITS_10_BPT 2
++#define SPI_BITS_11_BPT 3
++#define SPI_BITS_12_BPT 4
++#define SPI_BITS_13_BPT 5
++#define SPI_BITS_14_BPT 6
++#define SPI_BITS_15_BPT 7
++#define SPI_BITS_16_BPT 8
++
++/* Bit manipulation macros */
++#define SPI_BIT(name) \
++ (1 << SPI_##name##_OFFSET)
++#define SPI_BF(name,value) \
++ (((value) & ((1 << SPI_##name##_SIZE) - 1)) << SPI_##name##_OFFSET)
++#define SPI_BFEXT(name,value) \
++ (((value) >> SPI_##name##_OFFSET) & ((1 << SPI_##name##_SIZE) - 1))
++#define SPI_BFINS(name,value,old) \
++ ( ((old) & ~(((1 << SPI_##name##_SIZE) - 1) << SPI_##name##_OFFSET)) \
++ | SPI_BF(name,value))
++
++/* Register access macros */
++#define spi_readl(port,reg) \
++ __raw_readl((port)->regs + SPI_##reg)
++#define spi_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + SPI_##reg)
++
++#endif /* __ATMEL_SPI_H__ */
diff --git a/packages/linux/linux-2.6.18/atmel-twi-driver.patch b/packages/linux/linux-2.6.18/atmel-twi-driver.patch
new file mode 100644
index 0000000000..97ede9b65f
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-twi-driver.patch
@@ -0,0 +1,521 @@
+rom: Espen Krangnes <ekrangnes at atmel.com>
+
+This patch will add support for Atmel TWI for the AVR32 architecture. Atmel's TWI is compatible with Philips' I2C protocol. It supports Master read and write, and has support for different baudrates that can be set by the user. It uses the Linux I2C framework. The driver is based on the main principles of the TWI driver for the Atmel AT91 series.
+
+Signed-off-by: Espen Krangnes <ekrangnes at atmel.com>
+
+
+diff -Naur linux-2.6.18.orig/drivers/i2c/busses/atmeltwi.h linux-2.6.18/drivers/i2c/busses/atmeltwi.h
+--- linux-2.6.18.orig/drivers/i2c/busses/atmeltwi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18/drivers/i2c/busses/atmeltwi.h 2006-12-20 12:42:48.000000000 +0100
+@@ -0,0 +1,117 @@
++/*
++ * Register definitions for the Atmel Two-Wire Interface
++ */
++
++#ifndef __ASM_AVR32_TWI_H__
++#define __ASM_AVR32_TWI_H__
++
++/* TWI register offsets */
++#define TWI_CR 0x0000
++#define TWI_MMR 0x0004
++#define TWI_SMR 0x0008
++#define TWI_IADR 0x000c
++#define TWI_CWGR 0x0010
++#define TWI_SR 0x0020
++#define TWI_IER 0x0024
++#define TWI_IDR 0x0028
++#define TWI_IMR 0x002c
++#define TWI_RHR 0x0030
++#define TWI_THR 0x0034
++
++/* Bitfields in CR */
++#define TWI_START_OFFSET 0
++#define TWI_START_SIZE 1
++#define TWI_STOP_OFFSET 1
++#define TWI_STOP_SIZE 1
++#define TWI_MSEN_OFFSET 2
++#define TWI_MSEN_SIZE 1
++#define TWI_MSDIS_OFFSET 3
++#define TWI_MSDIS_SIZE 1
++#define TWI_SVEN_OFFSET 4
++#define TWI_SVEN_SIZE 1
++#define TWI_SVDIS_OFFSET 5
++#define TWI_SVDIS_SIZE 1
++#define TWI_SWRST_OFFSET 7
++#define TWI_SWRST_SIZE 1
++
++/* Bitfields in MMR */
++#define TWI_IADRSZ_OFFSET 8
++#define TWI_IADRSZ_SIZE 2
++#define TWI_MREAD_OFFSET 12
++#define TWI_MREAD_SIZE 1
++#define TWI_DADR_OFFSET 16
++#define TWI_DADR_SIZE 7
++
++/* Bitfields in SMR */
++#define TWI_SADR_OFFSET 16
++#define TWI_SADR_SIZE 7
++
++/* Bitfields in IADR */
++#define TWI_IADR_OFFSET 0
++#define TWI_IADR_SIZE 24
++
++/* Bitfields in CWGR */
++#define TWI_CLDIV_OFFSET 0
++#define TWI_CLDIV_SIZE 8
++#define TWI_CHDIV_OFFSET 8
++#define TWI_CHDIV_SIZE 8
++#define TWI_CKDIV_OFFSET 16
++#define TWI_CKDIV_SIZE 3
++
++/* Bitfields in SR */
++#define TWI_TXCOMP_OFFSET 0
++#define TWI_TXCOMP_SIZE 1
++#define TWI_RXRDY_OFFSET 1
++#define TWI_RXRDY_SIZE 1
++#define TWI_TXRDY_OFFSET 2
++#define TWI_TXRDY_SIZE 1
++#define TWI_SVDIR_OFFSET 3
++#define TWI_SVDIR_SIZE 1
++#define TWI_SVACC_OFFSET 4
++#define TWI_SVACC_SIZE 1
++#define TWI_GCACC_OFFSET 5
++#define TWI_GCACC_SIZE 1
++#define TWI_OVRE_OFFSET 6
++#define TWI_OVRE_SIZE 1
++#define TWI_UNRE_OFFSET 7
++#define TWI_UNRE_SIZE 1
++#define TWI_NACK_OFFSET 8
++#define TWI_NACK_SIZE 1
++#define TWI_ARBLST_OFFSET 9
++#define TWI_ARBLST_SIZE 1
++
++/* Bitfields in RHR */
++#define TWI_RXDATA_OFFSET 0
++#define TWI_RXDATA_SIZE 8
++
++/* Bitfields in THR */
++#define TWI_TXDATA_OFFSET 0
++#define TWI_TXDATA_SIZE 8
++
++/* Constants for IADRSZ */
++#define TWI_IADRSZ_NO_ADDR 0
++#define TWI_IADRSZ_ONE_BYTE 1
++#define TWI_IADRSZ_TWO_BYTES 2
++#define TWI_IADRSZ_THREE_BYTES 3
++
++/* Bit manipulation macros */
++#define TWI_BIT(name) \
++ (1 << TWI_##name##_OFFSET)
++#define TWI_BF(name,value) \
++ (((value) & ((1 << TWI_##name##_SIZE) - 1)) \
++ << TWI_##name##_OFFSET)
++#define TWI_BFEXT(name,value) \
++ (((value) >> TWI_##name##_OFFSET) \
++ & ((1 << TWI_##name##_SIZE) - 1))
++#define TWI_BFINS(name,value,old) \
++ (((old) & ~(((1 << TWI_##name##_SIZE) - 1) \
++ << TWI_##name##_OFFSET)) \
++ | TWI_BF(name,value))
++
++/* Register access macros */
++#define twi_readl(port,reg) \
++ __raw_readl((port)->regs + TWI_##reg)
++#define twi_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + TWI_##reg)
++
++#endif /* __ASM_AVR32_TWI_H__ */
+diff -Naur linux-2.6.18.orig/drivers/i2c/busses/i2c-atmeltwi.c linux-2.6.18/drivers/i2c/busses/i2c-atmeltwi.c
+--- linux-2.6.18.orig/drivers/i2c/busses/i2c-atmeltwi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18/drivers/i2c/busses/i2c-atmeltwi.c 2006-12-20 13:30:49.000000000 +0100
+@@ -0,0 +1,348 @@
++/*
++ * i2c Support for Atmel's Two-Wire Interface (TWI)
++ *
++ * Based on the work of Copyright (C) 2004 Rick Bronson
++ * Converted to 2.6 by Andrew Victor <andrew at sanpeople.com>
++ * Ported to AVR32 and heavily modified by Espen Krangnes <ekrangnes at atmel.com>
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * Borrowed heavily from the original work by:
++ * Copyright (C) 2000 Philip Edelbrock <phil at stimpy.netroedge.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 <linux/err.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/slab.h>
++#include <linux/types.h>
++#include <linux/delay.h>
++#include <linux/i2c.h>
++#include <linux/init.h>
++#include <linux/clk.h>
++#include <linux/interrupt.h>
++#include <linux/irq.h>
++#include <linux/platform_device.h>
++#include <linux/completion.h>
++#include <asm/io.h>
++#include <linux/time.h>
++#include "atmeltwi.h"
++
++static unsigned int baudrate = CONFIG_I2C_ATMELTWI_BAUDRATE;
++module_param(baudrate, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
++MODULE_PARM_DESC(baudrate, "The TWI baudrate");
++
++
++struct atmel_twi {
++ void __iomem *regs;
++ struct i2c_adapter adapter;
++ struct clk *pclk;
++ spinlock_t lock;
++ struct completion comp;
++ u32 intmask;
++ u8 *buf;
++ u8 len;
++ u8 acks_left;
++ unsigned int irq;
++
++};
++#define to_atmel_twi(adap) container_of(adap, struct atmel_twi, adapter)
++
++/*
++ * Initialize the TWI hardware registers.
++ */
++static int __devinit twi_hwinit(struct atmel_twi *twi)
++{
++ unsigned long cdiv, ckdiv=0;
++
++ twi_writel(twi, IDR, ~0UL);
++ twi_writel(twi, CR, TWI_BIT(SWRST)); /*Reset peripheral*/
++ twi_readl(twi, SR);
++
++ cdiv = (clk_get_rate(twi->pclk) / (2 * baudrate)) - 4;
++
++ while (cdiv > 255) {
++ ckdiv++;
++ cdiv = cdiv >> 1;
++ }
++
++ if (ckdiv > 7)
++ return -EINVAL;
++ else
++ twi_writel(twi, CWGR, (TWI_BF(CKDIV, ckdiv)
++ | TWI_BF(CHDIV, cdiv)
++ | TWI_BF(CLDIV, cdiv)));
++ return 0;
++}
++
++/*
++ * Waits for the i2c status register to set the specified bitmask
++ * Returns 0 if timed out (~100ms).
++ */
++static short twi_wait_for_completion(struct atmel_twi *twi,
++ u32 mask)
++{
++ int timeout = msecs_to_jiffies(100);
++
++ twi->intmask = mask;
++ init_completion(&twi->comp);
++
++ twi_writel(twi, IER, mask);
++
++ if(!wait_for_completion_timeout(&twi->comp, timeout))
++ return -ETIMEDOUT;
++
++ return 0;
++}
++
++/*
++ * Generic i2c master transfer entrypoint.
++ */
++static int twi_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
++{
++ struct atmel_twi *twi = to_atmel_twi(adap);
++ struct i2c_msg *pmsg;
++ int i;
++
++ /* get first message */
++ pmsg = msgs;
++
++ dev_dbg(&adap->dev, "twi_xfer: processing %d messages:\n", num);
++
++ for (i = 0; i < num; i++, pmsg++) {
++
++ twi->len = pmsg->len;
++ twi->buf = pmsg->buf;
++ twi->acks_left = pmsg->len;
++ twi_writel(twi, MMR, TWI_BF(DADR, pmsg->addr) |
++ (pmsg->flags & I2C_M_RD ? TWI_BIT(MREAD) : 0));
++ twi_writel(twi, IADR, TWI_BF(IADR, pmsg->addr));
++
++ dev_dbg(&adap->dev,"#%d: internal addr %d %s byte%s %s 0x%02x\n",
++ i,pmsg->len, pmsg->flags & I2C_M_RD ? "reading" : "writing",
++ pmsg->len > 1 ? "s" : "",
++ pmsg->flags & I2C_M_RD ? "from" : "to", pmsg->addr);
++
++ /* enable */
++ twi_writel(twi, CR, TWI_BIT(MSEN));
++
++ if (pmsg->flags & I2C_M_RD) {
++ twi_writel(twi, CR, TWI_BIT(START));
++ if ( twi_wait_for_completion(twi,TWI_BIT(RXRDY))==-ETIMEDOUT ) {
++ dev_dbg(&adap->dev, "RXRDY timeout. Stopped with %d bytes left\n",
++ twi->acks_left);
++ return -ETIMEDOUT;
++ }
++
++ /* Send Stop, and Wait until transfer is finished */
++ if ( twi_wait_for_completion(twi,TWI_BIT(TXCOMP))==-ETIMEDOUT ) {
++ dev_dbg(&adap->dev, "TXCOMP timeout\n");
++ return -ETIMEDOUT;
++ }
++
++ } else {
++ twi_writel(twi, THR, twi->buf[0]);
++ if ( twi_wait_for_completion(twi,TWI_BIT(TXRDY))==-ETIMEDOUT ) {
++ dev_dbg(&adap->dev, "TXRDY timeout. Stopped with %d bytes left\n",
++ twi->acks_left);
++ return -ETIMEDOUT;
++ }
++ }
++
++ /* Disable TWI interface */
++ twi_writel(twi, CR, TWI_BIT(MSDIS));
++
++ } /* end cur msg */
++
++ return i;
++}
++
++
++static irqreturn_t twi_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct atmel_twi *twi = dev_id;
++ int status = twi_readl(twi, SR);
++
++ if (twi->intmask & status){
++ if (twi->intmask & TWI_BIT(NACK)) {
++ goto nack;
++ } else if (twi->intmask & TWI_BIT(RXRDY)){
++ twi->buf[twi->len - twi->acks_left] = twi_readl(twi,RHR);
++ if(--twi->acks_left==1)
++ twi_writel(twi, CR, TWI_BIT(STOP));
++ if (twi->acks_left==0)
++ goto complete;
++ } else if (twi->intmask & TWI_BIT(TXRDY)) {
++ twi->acks_left--;
++ if (twi->acks_left==0) {
++ twi->intmask = TWI_BIT(TXCOMP);
++ twi_writel(twi, IER, TWI_BIT(TXCOMP));
++ } else
++ twi_writel(twi, THR, twi->buf[twi->len - twi->acks_left]);
++ } else if (twi->intmask & TWI_BIT(TXCOMP)) {
++ goto complete;
++ }
++ }
++
++ return IRQ_HANDLED;
++
++nack:
++ printk(KERN_INFO "NACK received!\n");
++
++complete:
++ twi_writel(twi, IDR, ~0UL);
++ complete(&twi->comp);
++
++ return IRQ_HANDLED;
++
++}
++
++
++/*
++ * Return list of supported functionality.
++ */
++static u32 twi_func(struct i2c_adapter *adapter)
++{
++ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
++}
++
++/* For now, we only handle combined mode (smbus) */
++static struct i2c_algorithm twi_algorithm = {
++ .master_xfer = twi_xfer,
++ .functionality = twi_func,
++};
++
++/*
++ * Main initialization routine.
++ */
++static int __devinit twi_probe(struct platform_device *pdev)
++{
++ struct atmel_twi *twi;
++ struct resource *regs;
++ struct clk *pclk;
++ struct i2c_adapter *adapter;
++ int rc, irq;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++
++ pclk = clk_get(&pdev->dev, "pclk");
++ if (IS_ERR(pclk))
++ return PTR_ERR(pclk);
++ clk_enable(pclk);
++
++ rc = -ENOMEM;
++ twi = kzalloc(sizeof(struct atmel_twi), GFP_KERNEL);
++ if (!twi) {
++ dev_err(&pdev->dev, "can't allocate interface!\n");
++ goto err_alloc_twi;
++ }
++
++ twi->pclk = pclk;
++ twi->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!twi->regs)
++ goto err_ioremap;
++
++ irq = platform_get_irq(pdev,0);
++ rc = request_irq(irq, twi_interrupt, 0, "twi", twi);
++ if (rc) {
++ dev_err(&pdev->dev, "can't bind irq!\n");
++ goto err_irq;
++ }
++ twi->irq = irq;
++
++ rc = twi_hwinit(twi);
++ if (rc) {
++ dev_err(&pdev->dev, "Unable to set baudrate\n");
++ goto err_hw_init;
++ }
++
++ adapter = &twi->adapter;
++ sprintf(adapter->name, "TWI");
++ adapter->algo = &twi_algorithm;
++ adapter->class = I2C_CLASS_HWMON;
++ adapter->dev.parent = &pdev->dev;
++
++ platform_set_drvdata(pdev, twi);
++
++ rc = i2c_add_adapter(adapter);
++ if (rc) {
++ dev_err(&pdev->dev, "Adapter %s registration failed\n",
++ adapter->name);
++ goto err_register;
++ }
++
++ dev_info(&pdev->dev, "Atmel TWI i2c bus device (baudrate %dk) at 0x%08lx.\n",
++ baudrate/1000, (unsigned long)regs->start);
++
++ return 0;
++
++
++err_register:
++ platform_set_drvdata(pdev, NULL);
++
++err_hw_init:
++ free_irq(irq, twi);
++
++err_irq:
++ iounmap(twi->regs);
++
++err_ioremap:
++ kfree(twi);
++
++err_alloc_twi:
++ clk_disable(pclk);
++ clk_put(pclk);
++
++ return rc;
++}
++
++static int __devexit twi_remove(struct platform_device *pdev)
++{
++ struct atmel_twi *twi = platform_get_drvdata(pdev);
++ int res;
++
++ platform_set_drvdata(pdev, NULL);
++ res = i2c_del_adapter(&twi->adapter);
++ twi_writel(twi, CR, TWI_BIT(MSDIS));
++ iounmap(twi->regs);
++ clk_disable(twi->pclk);
++ clk_put(twi->pclk);
++ free_irq(twi->irq, twi);
++ kfree(twi);
++
++ return res;
++}
++
++static struct platform_driver twi_driver = {
++ .probe = twi_probe,
++ .remove = __devexit_p(twi_remove),
++ .driver = {
++ .name = "atmel_twi",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init atmel_twi_init(void)
++{
++ return platform_driver_register(&twi_driver);
++}
++
++static void __exit atmel_twi_exit(void)
++{
++ platform_driver_unregister(&twi_driver);
++}
++
++module_init(atmel_twi_init);
++module_exit(atmel_twi_exit);
++
++MODULE_AUTHOR("Espen Krangnes");
++MODULE_DESCRIPTION("I2C driver for Atmel TWI");
++MODULE_LICENSE("GPL");
+diff -Naur linux-2.6.18.orig/drivers/i2c/busses/Kconfig linux-2.6.18/drivers/i2c/busses/Kconfig
+--- linux-2.6.18.orig/drivers/i2c/busses/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18/drivers/i2c/busses/Kconfig 2006-12-18 22:41:58.000000000 +0100
+@@ -5,6 +5,26 @@
+ menu "I2C Hardware Bus support"
+ depends on I2C
+
++config I2C_ATMELTWI
++ tristate "Atmel TWI/I2C"
++ depends on I2C
++ help
++ Atmel on-chip TWI controller. Say Y if you have an AT32 or
++ AT91-based device and want to use its built-in TWI
++ functionality. Atmel's TWI is compatible with Philips' I2C
++ protocol. If in doubt, say NO
++
++config I2C_ATMELTWI_BAUDRATE
++ prompt "Atmel TWI baudrate"
++ depends on I2C_ATMELTWI
++ int
++ default 100000
++ help
++ Set the TWI/I2C baudrate. This will alter the default value. A
++ different baudrate can be set by using a module parameter as well. If
++ no parameter is provided when loading, this is the value that will be
++ used.
++
+ config I2C_ALI1535
+ tristate "ALI 1535"
+ depends on I2C && PCI
+diff -Naur linux-2.6.18.orig/drivers/i2c/busses/Makefile linux-2.6.18/drivers/i2c/busses/Makefile
+--- linux-2.6.18.orig/drivers/i2c/busses/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18/drivers/i2c/busses/Makefile 2006-12-18 22:42:14.000000000 +0100
+@@ -43,6 +43,7 @@
+ obj-$(CONFIG_I2C_VOODOO3) += i2c-voodoo3.o
+ obj-$(CONFIG_SCx200_ACB) += scx200_acb.o
+ obj-$(CONFIG_SCx200_I2C) += scx200_i2c.o
++obj-$(CONFIG_I2C_ATMELTWI) += i2c-atmeltwi.o
+
+ ifeq ($(CONFIG_I2C_DEBUG_BUS),y)
+ EXTRA_CFLAGS += -DDEBUG
diff --git a/packages/linux/linux-2.6.18/atmel-usart3-driver.patch b/packages/linux/linux-2.6.18/atmel-usart3-driver.patch
new file mode 100644
index 0000000000..2f1b1cf137
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-usart3-driver.patch
@@ -0,0 +1,1443 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Fri Nov 18 16:31:34 2005 +0100
+Subject: [PATCH] AVR32: USART3 Serial Driver
+
+---
+
+ drivers/serial/Kconfig | 21
+ drivers/serial/Makefile | 1
+ drivers/serial/atmel_usart.c | 1086 +++++++++++++++++++++++++++++++++++++++++++
+ drivers/serial/atmel_usart.h | 290 +++++++++++
+ 4 files changed, 1398 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/serial/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/serial/Kconfig 2006-11-02 14:16:07.000000000 +0100
++++ linux-2.6.18-avr32/drivers/serial/Kconfig 2006-11-02 15:54:18.000000000 +0100
+@@ -246,6 +246,27 @@ config SERIAL_8250_AU1X00
+
+ comment "Non-8250 serial port support"
+
++config SERIAL_ATMEL
++ tristate "Atmel USART3 serial port support"
++ depends on AVR32
++ select SERIAL_CORE
++ default y
++ help
++ Support for the Atmel USART3 on-chip USART found in most
++ AT32 and AT91 parts from Atmel.
++
++ If unsure, say Y.
++
++config SERIAL_ATMEL_CONSOLE
++ bool "Support for console on Atmel USART3 serial port"
++ depends on SERIAL_ATMEL=y
++ select SERIAL_CORE_CONSOLE
++ help
++ Say Y here if you wish to use an Atmel USART3 serial port as
++ the system console (the system console is the device which
++ receives all kernel messages and warnings and which allows
++ logins in single user mode).
++
+ config SERIAL_AMBA_PL010
+ tristate "ARM AMBA PL010 serial port support"
+ depends on ARM_AMBA && (BROKEN || !ARCH_VERSATILE)
+Index: linux-2.6.18-avr32/drivers/serial/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/serial/Makefile 2006-11-02 14:16:07.000000000 +0100
++++ linux-2.6.18-avr32/drivers/serial/Makefile 2006-11-02 14:17:29.000000000 +0100
+@@ -20,6 +20,7 @@ obj-$(CONFIG_SERIAL_8250_BOCA) += 8250_b
+ obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o
+ obj-$(CONFIG_SERIAL_8250_MCA) += 8250_mca.o
+ obj-$(CONFIG_SERIAL_8250_AU1X00) += 8250_au1x00.o
++obj-$(CONFIG_SERIAL_ATMEL) += atmel_usart.o
+ obj-$(CONFIG_SERIAL_AMBA_PL010) += amba-pl010.o
+ obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o
+ obj-$(CONFIG_SERIAL_CLPS711X) += clps711x.o
+Index: linux-2.6.18-avr32/drivers/serial/atmel_usart.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/serial/atmel_usart.c 2006-11-02 15:54:18.000000000 +0100
+@@ -0,0 +1,1086 @@
++/*
++ * Driver for Atmel USART3 Serial ports
++ *
++ * Based on AT91RM9200 serial driver by Rick Bronson
++ * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o.
++ * Based on drivers/serial/sa1100.c by Deep Blue Solutions Ltd.
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/console.h>
++#include <linux/dma-mapping.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/ioport.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/sched.h>
++#include <linux/serial.h>
++#include <linux/tty.h>
++
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/board.h>
++
++#if defined(CONFIG_SERIAL_ATMEL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
++#define SUPPORT_SYSRQ
++#include <linux/sysrq.h>
++#endif
++
++#include <linux/serial_core.h>
++
++#include "atmel_usart.h"
++
++/*
++ * TODO: Move this definition into linux/serial_core.h
++ */
++#define PORT_USART3 60
++
++/*
++ * Use the same major/minor numbers as the AT91 USART, which is
++ * actually the same chip
++ */
++#define SERIAL_USART3_MAJOR TTY_MAJOR
++#define MINOR_START 64
++#define NR_PORTS 4
++
++#define ERROR_FLAGS (USART3_BIT(CSR_PARE) \
++ | USART3_BIT(CSR_FRAME) \
++ | USART3_BIT(CSR_OVRE))
++
++/* Must be a power of two, or everything will break */
++#define RX_BUFFER_SIZE 32
++struct usart3_port {
++ void __iomem *regs;
++ int break_active;
++ unsigned int tx_dma_head;
++ int rx_tail;
++ char *rx_buffer;
++ dma_addr_t rx_dma;
++ dma_addr_t tx_dma;
++ struct clk *mck;
++ unsigned long mapsize;
++ struct uart_port uart;
++};
++#define to_usart3_port(port) container_of(port, struct usart3_port, uart)
++
++static void tx_dma_sync(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ struct circ_buf *xmit = &port->info->xmit;
++
++ if (xmit->head < up->tx_dma_head) {
++ dma_sync_single_for_device(port->dev,
++ up->tx_dma + up->tx_dma_head,
++ UART_XMIT_SIZE - up->tx_dma_head,
++ DMA_TO_DEVICE);
++ dma_sync_single_for_device(port->dev, up->tx_dma,
++ xmit->head, DMA_TO_DEVICE);
++ } else {
++ dma_sync_single_for_device(port->dev,
++ up->tx_dma + up->tx_dma_head,
++ xmit->head - up->tx_dma_head,
++ DMA_TO_DEVICE);
++ }
++}
++
++static void tx_dma_update_tail(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ struct circ_buf *xmit = &port->info->xmit;
++ unsigned long status, remaining;
++ unsigned int new_tail;
++
++ /* Account for the characters DMA'ed since last update */
++ remaining = usart3_readl(up, TCR);
++
++ if (up->tx_dma_head < xmit->tail) {
++ /*
++ * We have wrapped around, and there's a chunk at the
++ * beginning of the buffer that has been submitted for
++ * DMA. If the ENDTX bit is set, it means that the
++ * DMA controller also has wrapped around and copied
++ * TNPR/TNCR into TPR/TCR.
++ */
++ status = usart3_readl(up, CSR);
++ BUG_ON((up->tx_dma_head != 0)
++ && (usart3_readl(up, TNCR) == 0)
++ && !(status & USART3_BIT(ENDTX)));
++ if (status & USART3_BIT(ENDTX)) {
++ BUG_ON(usart3_readl(up, TNCR) != 0);
++
++ /* The ENDTX bit might be set after we read TCR */
++ remaining = usart3_readl(up, TCR);
++
++ usart3_writel(up, TNCR, 0);
++ port->icount.tx += UART_XMIT_SIZE - xmit->tail;
++ xmit->tail = 0;
++
++ BUG_ON(remaining > up->tx_dma_head);
++ new_tail = up->tx_dma_head - remaining;
++ } else {
++ /*
++ * The DMA controller hasn't switched yet, so
++ * TCR indicates the number of bytes left
++ * until this happens.
++ */
++ new_tail = UART_XMIT_SIZE - remaining;
++ }
++ } else {
++ /* No wraparound, move the tail closer to dma_head. */
++ BUG_ON(remaining > up->tx_dma_head);
++ new_tail = up->tx_dma_head - remaining;
++ }
++
++ BUG_ON(new_tail < xmit->tail);
++ port->icount.tx += new_tail - xmit->tail;
++ xmit->tail = new_tail;
++}
++
++static inline void tx_dma_start(struct usart3_port *up)
++{
++ /* Start the PDC and enable interrupts */
++ usart3_writel(up, PTCR, USART3_BIT(TXTEN));
++ usart3_writel(up, IER, USART3_BIT(ENDTX));
++}
++
++static inline void tx_dma_stop(struct usart3_port *up)
++{
++ usart3_writel(up, PTCR, USART3_BIT(TXTDIS));
++ usart3_writel(up, IDR, USART3_BIT(ENDTX));
++}
++
++static inline unsigned int rx_dma_get_head(struct usart3_port *up)
++{
++ unsigned int head;
++ u32 status;
++
++ head = RX_BUFFER_SIZE - usart3_readl(up, RCR);
++ status = usart3_readl(up, CSR);
++ if (status & USART3_BIT(ENDRX))
++ head = RX_BUFFER_SIZE;
++
++ return head;
++}
++
++static inline int rx_dma_update_tail(struct usart3_port *up,
++ unsigned int tail)
++{
++ int again = 0;
++
++ if (!(tail & (RX_BUFFER_SIZE - 1))) {
++ u32 rnpr = up->rx_dma;
++
++ tail &= RX_BUFFER_SIZE;
++ if (!tail)
++ rnpr += RX_BUFFER_SIZE;
++
++ usart3_writel(up, RNPR, rnpr);
++ usart3_writel(up, RNCR, RX_BUFFER_SIZE);
++
++ again = 1;
++ } else
++ BUG_ON(usart3_readl(up, CSR) & USART3_BIT(ENDRX));
++
++ up->rx_tail = tail;
++
++ return again;
++}
++
++static void usart3_stop_tx(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++
++ tx_dma_stop(up);
++ tx_dma_update_tail(port);
++}
++
++static void usart3_start_tx(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ struct circ_buf *xmit = &port->info->xmit;
++
++ BUG_ON(!irqs_disabled());
++
++ /*
++ * Stop the DMA engine so that we don't have to worry about race
++ * conditions when updating the various pointers and counters.
++ */
++ tx_dma_stop(up);
++
++ tx_dma_sync(port);
++ tx_dma_update_tail(port);
++
++ if (uart_circ_empty(xmit))
++ return;
++
++ usart3_writel(up, TPR, up->tx_dma + xmit->tail);
++
++ if (xmit->head > xmit->tail) {
++ usart3_writel(up, TCR, xmit->head - xmit->tail);
++ } else {
++ usart3_writel(up, TCR, UART_XMIT_SIZE - xmit->tail);
++ usart3_writel(up, TNPR, up->tx_dma);
++ usart3_writel(up, TNCR, xmit->head);
++ }
++
++ /* Keep track of what we've submitted for DMA */
++ up->tx_dma_head = xmit->head;
++
++ /* Resume operation of DMA engine. */
++ tx_dma_start(up);
++}
++
++static void usart3_stop_rx(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++
++ pr_debug("usart3: stop_rx\n");
++
++ usart3_writel(up, PTCR, USART3_BIT(RXTDIS));
++ usart3_writel(up, IDR, (USART3_BIT(TIMEOUT)
++ | USART3_BIT(ENDRX)
++ | USART3_BIT(RXBRK)
++ | USART3_BIT(OVRE)
++ | USART3_BIT(FRAME)
++ | USART3_BIT(PARE)));
++}
++
++static void usart3_flush_buffer(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++
++ /*
++ * Reset TX DMA state. Note that we must _always_ update TNCR
++ * before TCR, since the value in TNCR will automatically move
++ * to TCR when TCR is 0.
++ */
++ usart3_writel(up, TNCR, 0);
++ usart3_writel(up, TCR, 0);
++ up->tx_dma_head = port->info->xmit.tail;
++}
++
++/*
++ * Enable modem status interrupts
++ */
++static void usart3_enable_ms(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++
++ pr_debug("usart3: enable_ms\n");
++ usart3_writel(up, IER, (USART3_BIT(RIIC)
++ | USART3_BIT(DSRIC)
++ | USART3_BIT(DCDIC)
++ | USART3_BIT(CTSIC)));
++}
++
++static inline void handle_rx_error(struct uart_port *port, u32 status)
++{
++ /*
++ * FIXME: Errors should affect the flag buffer, but due to the
++ * PDC, we don't really know which char they belong to...
++ */
++ if (status & USART3_BIT(PARE)) {
++ printk(KERN_NOTICE "usart%u: Parity error\n", port->line);
++ port->icount.parity++;
++ } else if (status & USART3_BIT(FRAME)) {
++ printk(KERN_NOTICE "usart%u: Frame error\n", port->line);
++ port->icount.frame++;
++ }
++ if (status & USART3_BIT(OVRE)) {
++ printk(KERN_NOTICE "usart%u: Overrun\n", port->line);
++ port->icount.overrun++;
++ }
++
++#ifdef SUPPORT_SYSRQ
++ port->sysrq = 0;
++#endif
++}
++
++static inline void handle_pdc_endtx(struct uart_port *port, unsigned long status)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ struct circ_buf *xmit = &port->info->xmit;
++
++ tx_dma_update_tail(port);
++
++ if (uart_tx_stopped(port)) {
++ usart3_stop_tx(port);
++ printk("usart3: stopped\n");
++ return;
++ }
++
++ if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
++ uart_write_wakeup(port);
++
++ if (uart_circ_empty(xmit))
++ usart3_stop_tx(port);
++
++ /*
++ * It could be that xmit is being updated right now. If so,
++ * start_tx() will be called shortly.
++ */
++ if (status & USART3_BIT(TXBUFE))
++ usart3_writel(up, IDR, USART3_BIT(ENDTX));
++}
++
++static void consume_rx_buffer(struct uart_port *port, struct pt_regs *regs)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ struct tty_struct *tty = port->info->tty;
++ unsigned long head, tail;
++ int len;
++ int again;
++
++ do {
++ /*
++ * Re-arm the timeout before we decide how many
++ * characters to read.
++ */
++ usart3_writel(up, CR, USART3_BIT(STTTO));
++
++ head = rx_dma_get_head(up);
++
++ tail = up->rx_tail;
++ if (tail & RX_BUFFER_SIZE)
++ head += RX_BUFFER_SIZE;
++
++ if (head == tail)
++ break;
++
++ dma_sync_single_for_cpu(port->dev, up->rx_dma + tail,
++ head - tail, DMA_FROM_DEVICE);
++
++ if (uart_handle_sysrq_char(port, up->rx_buffer[tail],
++ regs)) {
++ tail++;
++ if (head == tail)
++ goto update_tail;
++ }
++
++ len = tty_insert_flip_string(tty, up->rx_buffer + tail,
++ head - tail);
++ port->icount.rx += len;
++ tail += len;
++ if (!(head & (RX_BUFFER_SIZE - 1)) && tail != head) {
++ /*
++ * head has wrapped, but there isn't enough
++ * room in the buffer to handle all the
++ * characters. We must recycle this buffer in
++ * order to clear the interrupt.
++ */
++ tty_insert_flip_char(tty, 0, TTY_OVERRUN);
++ tail = head;
++ }
++
++ update_tail:
++ again = rx_dma_update_tail(up, tail);
++ } while (again);
++
++ tty_flip_buffer_push(tty);
++}
++
++/*
++ * This is the serial driver's interrupt routine
++ */
++static irqreturn_t usart3_interrupt(int irq, void *dev_id,
++ struct pt_regs *regs)
++{
++ struct uart_port *port = dev_id;
++ struct usart3_port *up = to_usart3_port(port);
++ u32 status, mask, pending;
++ irqreturn_t ret = IRQ_NONE;
++
++ spin_lock(&port->lock);
++
++ status = usart3_readl(up, CSR);
++ mask = usart3_readl(up, IMR);
++ pending = status & mask;
++ if (unlikely(!pending))
++ goto out;
++
++ ret = IRQ_HANDLED;
++
++ do {
++ /*
++ * Consume the buffer and flip buffers if necessary.
++ */
++ consume_rx_buffer(port, regs);
++
++ /* Clear any break and error flags */
++ usart3_writel(up, CR, USART3_BIT(RSTSTA));
++
++ if (pending & (USART3_BIT(OVRE)
++ | USART3_BIT(FRAME)
++ | USART3_BIT(PARE)))
++ handle_rx_error(port, status);
++
++ if (pending & USART3_BIT(RXBRK)) {
++ if (up->break_active) {
++ up->break_active = 0;
++ } else {
++ up->break_active = 1;
++ port->icount.brk++;
++ uart_handle_break(port);
++ }
++ }
++
++ if (pending & USART3_BIT(RIIC))
++ port->icount.rng++;
++ if (pending & USART3_BIT(DSRIC))
++ port->icount.dsr++;
++ if (pending & USART3_BIT(DCDIC)) {
++ port->icount.dcd++;
++ uart_handle_dcd_change
++ (port, status & USART3_BIT(DCD));
++ }
++ if (pending & USART3_BIT(CTSIC)) {
++ port->icount.cts++;
++ uart_handle_cts_change
++ (port, status & USART3_BIT(CTS));
++ }
++ if (pending & (USART3_BIT(RIIC)
++ | USART3_BIT(DSRIC)
++ | USART3_BIT(DCDIC)
++ | USART3_BIT(CTSIC)))
++ wake_up_interruptible(&port->info->delta_msr_wait);
++
++ if (pending & USART3_BIT(ENDTX))
++ handle_pdc_endtx(port, status);
++
++ status = usart3_readl(up, CSR);
++ pending = status & usart3_readl(up, IMR);
++ } while (pending);
++
++out:
++ spin_unlock(&port->lock);
++ return ret;
++}
++
++/*
++ * Return TIOCSER_TEMT when transmitter is not busy
++ */
++static unsigned int usart3_tx_empty(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ unsigned int ret = 0;
++
++ if (usart3_readl(up, CSR) & USART3_BIT(TXEMPTY))
++ ret = TIOCSER_TEMT;
++
++ pr_debug("usart3: tx_empty returned %x\n", ret);
++
++ return ret;
++}
++
++static unsigned int usart3_get_mctrl(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ unsigned int ret = 0;
++ unsigned int status;
++
++ status = usart3_readl(up, CSR);
++ if (status & USART3_BIT(DCD))
++ ret |= TIOCM_CD;
++ if (status & USART3_BIT(CTS))
++ ret |= TIOCM_CTS;
++ if (status & USART3_BIT(DSR))
++ ret |= TIOCM_DSR;
++ if (status & USART3_BIT(RI))
++ ret |= TIOCM_RI;
++
++ pr_debug("usart3: get_mctrl returned %x\n", ret);
++
++ return ret;
++}
++
++static void usart3_set_mctrl(struct uart_port *port, unsigned int mctrl)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ unsigned int control = 0;
++
++ pr_debug("usart3: set_mctrl %x\n", mctrl);
++
++ if (mctrl & TIOCM_RTS)
++ control |= USART3_BIT(RTSEN);
++ else
++ control |= USART3_BIT(RTSDIS);
++
++ if (mctrl & TIOCM_DTR)
++ control |= USART3_BIT(DTREN);
++ else
++ control |= USART3_BIT(DTRDIS);
++
++ usart3_writel(up, CR, control);
++}
++
++static void usart3_break_ctl(struct uart_port *port, int break_state)
++{
++ struct usart3_port *up = to_usart3_port(port);
++
++ pr_debug("usart3: break_ctl %u\n", break_state);
++ if (break_state != 0)
++ usart3_writel(up, CR, USART3_BIT(STTBRK));
++ else
++ usart3_writel(up, CR, USART3_BIT(STPBRK));
++}
++
++static int usart3_startup(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ int ret;
++
++ pr_debug("usart3: startup\n");
++
++ up->break_active = 0;
++
++ /* Set up interrupt handler */
++ ret = request_irq(port->irq, usart3_interrupt, 0,
++ port->info->tty->name, port);
++ if (ret) {
++ printk(KERN_ERR "usart3: Unable to request irq %d\n",
++ port->irq);
++ return ret;
++ }
++
++ up->rx_dma = dma_map_single(port->dev, up->rx_buffer,
++ 2 * RX_BUFFER_SIZE, DMA_FROM_DEVICE);
++ up->tx_dma = dma_map_single(port->dev, port->info->xmit.buf,
++ UART_XMIT_SIZE, DMA_TO_DEVICE);
++
++ /* Initialize the PDC for RX (TX is done in start_tx) */
++ up->rx_tail = 0;
++ usart3_writel(up, RPR, up->rx_dma);
++ usart3_writel(up, RCR, RX_BUFFER_SIZE);
++ usart3_writel(up, RNPR, up->rx_dma + RX_BUFFER_SIZE);
++ usart3_writel(up, RNCR, RX_BUFFER_SIZE);
++ usart3_writel(up, PTCR, USART3_BIT(RXTEN));
++
++ /* Reset DMA state */
++ usart3_writel(up, TNCR, 0);
++ usart3_writel(up, TCR, 0);
++ up->tx_dma_head = port->info->xmit.tail;
++
++ /*
++ * Set a suitable timeout. 2000 bit periods corresponds to
++ * about 17 ms at 115200 bps
++ */
++ usart3_writel(up, RTOR, 2000);
++
++ /* Reset and enable receiver and transmitter */
++ usart3_writel(up, CR, (USART3_BIT(RSTRX)
++ | USART3_BIT(RSTTX)
++ | USART3_BIT(RSTSTA)));
++ usart3_writel(up, CR, (USART3_BIT(RXEN)
++ | USART3_BIT(TXEN)));
++
++ /* Enable timeout, end of rx, break and error interrupts */
++ usart3_writel(up, IER, (USART3_BIT(TIMEOUT)
++ | USART3_BIT(ENDRX)
++ | USART3_BIT(RXBRK)
++ | USART3_BIT(OVRE)
++ | USART3_BIT(FRAME)
++ | USART3_BIT(PARE)));
++
++ /* Arm the timeout counter */
++ usart3_writel(up, CR, USART3_BIT(STTTO));
++
++ return 0;
++}
++
++static void usart3_shutdown(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++
++ pr_debug("usart3: shutdown\n");
++
++ /* Disable all interrupts and reset any error flags */
++ usart3_writel(up, IDR, -1L);
++ usart3_writel(up, CR, USART3_BIT(RSTSTA));
++
++ dma_unmap_single(port->dev, up->rx_dma, 2 * RX_BUFFER_SIZE,
++ DMA_FROM_DEVICE);
++ dma_unmap_single(port->dev, up->tx_dma, UART_XMIT_SIZE,
++ DMA_TO_DEVICE);
++
++ free_irq(port->irq, port);
++}
++
++static void usart3_set_termios(struct uart_port *port, struct termios *termios,
++ struct termios *old)
++{
++ struct usart3_port *up = to_usart3_port(port);
++ unsigned int baud, quot, mode = 0;
++ unsigned int imr, flags;
++
++ pr_debug("usart3: set_termios\n");
++
++ switch (termios->c_cflag & CSIZE) {
++ case CS5:
++ mode |= USART3_BF(CHRL, USART3_CHRL_5);
++ break;
++ case CS6:
++ mode |= USART3_BF(CHRL, USART3_CHRL_6);
++ break;
++ case CS7:
++ mode |= USART3_BF(CHRL, USART3_CHRL_7);
++ break;
++ default:
++ mode |= USART3_BF(CHRL, USART3_CHRL_8);
++ break;
++ }
++
++ if (termios->c_cflag & CSTOPB)
++ mode |= USART3_BF(NBSTOP, USART3_NBSTOP_2);
++
++ if (termios->c_cflag & PARENB) {
++ if (termios->c_cflag & PARODD)
++ mode |= USART3_BF(PAR, USART3_PAR_ODD);
++ else
++ mode |= USART3_BF(PAR, USART3_PAR_EVEN);
++ } else {
++ mode |= USART3_BF(PAR, USART3_PAR_NONE);
++ }
++
++ /*
++ * Ask the core to calculate the divisor for us.
++ */
++ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk / 16);
++ quot = uart_get_divisor(port, baud);
++
++ /* Bits to ignore, timeout, etc. TBD */
++
++ /*
++ * Save and disable interrupts
++ */
++ spin_lock_irqsave(&port->lock, flags);
++ imr = usart3_readl(up, IMR);
++ usart3_writel(up, IDR, -1L);
++ spin_unlock_irqrestore(&port->lock, flags);
++
++ /*
++ * Make sure transmitter is empty. If BRGR == 0, it is safest
++ * to do a reset, since waiting for the transmitter to be
++ * empty will take forever.
++ */
++ if (usart3_readl(up, BRGR) != 0) {
++ while (!(usart3_readl(up, CSR) & USART3_BIT(TXRDY)))
++ barrier();
++ } else {
++ usart3_writel(up, CR, (USART3_BIT(RSTTX)
++ | USART3_BIT(RSTRX)));
++ }
++
++ pr_debug("usart3: Setting BRGR to %u (baud rate %u)...\n", quot, baud);
++
++ /* Disable receiver and transmitter */
++ usart3_writel(up, CR, (USART3_BIT(TXDIS)
++ | USART3_BIT(RXDIS)));
++
++ /* Set the parity, stop bits and data size */
++ usart3_writel(up, MR, mode);
++
++ /* Set the baud rate and enable receiver and transmitter */
++ usart3_writel(up, BRGR, quot);
++ usart3_writel(up, CR, (USART3_BIT(TXEN)
++ | USART3_BIT(RXEN)));
++
++ /* Restore interrupts */
++ usart3_writel(up, IER, imr);
++}
++
++static const char *usart3_type(struct uart_port *port)
++{
++ return "USART3";
++}
++
++static void usart3_release_port(struct uart_port *port)
++{
++ pr_debug("usart3: release_port\n");
++ iounmap(port->membase);
++ port->flags |= UPF_IOREMAP;
++}
++
++static int usart3_request_port(struct uart_port *port)
++{
++ struct usart3_port *up = to_usart3_port(port);
++
++ /* TODO: remove this */
++ pr_debug("usart3: request_port\n");
++ if (port->flags & UPF_IOREMAP) {
++ port->membase = ioremap(port->mapbase, up->mapsize);
++ up->regs = port->membase;
++ port->flags &= ~UPF_IOREMAP;
++ }
++ return 0;
++}
++
++static void usart3_config_port(struct uart_port *port, int flags)
++{
++ pr_debug("usart3: config_port\n");
++ if (flags & UART_CONFIG_TYPE) {
++ if (usart3_request_port(port) == 0)
++ port->type = PORT_USART3;
++ }
++}
++
++static int usart3_verify_port(struct uart_port *port, struct serial_struct *ser)
++{
++ int ret = 0;
++
++ if (ser->type != PORT_UNKNOWN && ser->type != PORT_USART3)
++ ret = -EINVAL;
++ if (port->irq != ser->irq)
++ ret = -EINVAL;
++ if (ser->io_type != SERIAL_IO_MEM)
++ ret = -EINVAL;
++ if (port->uartclk / 16 != ser->baud_base)
++ ret = -EINVAL;
++ if ((void *)port->mapbase != ser->iomem_base)
++ ret = -EINVAL;
++ if (ser->hub6 != 0)
++ ret = -EINVAL;
++
++ pr_debug("usart3_verify_port returned %d\n", ret);
++
++ return ret;
++}
++
++static struct uart_ops usart3_pops = {
++ .tx_empty = usart3_tx_empty,
++ .set_mctrl = usart3_set_mctrl,
++ .get_mctrl = usart3_get_mctrl,
++ .stop_tx = usart3_stop_tx,
++ .start_tx = usart3_start_tx,
++ .stop_rx = usart3_stop_rx,
++ .enable_ms = usart3_enable_ms,
++ .break_ctl = usart3_break_ctl,
++ .startup = usart3_startup,
++ .shutdown = usart3_shutdown,
++ .flush_buffer = usart3_flush_buffer,
++ .set_termios = usart3_set_termios,
++ .type = usart3_type,
++ .release_port = usart3_release_port,
++ .request_port = usart3_request_port,
++ .config_port = usart3_config_port,
++ .verify_port = usart3_verify_port,
++};
++
++static int __devinit initialize_port(struct usart3_port *up,
++ struct platform_device *pdev)
++{
++ struct uart_port *port = &up->uart;
++ struct resource *regs;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++
++ spin_lock_init(&port->lock);
++
++ up->mck = clk_get(&pdev->dev, "usart");
++ if (IS_ERR(up->mck))
++ return PTR_ERR(up->mck);
++ clk_enable(up->mck);
++
++ port->mapbase = regs->start;
++ up->mapsize = regs->end - regs->start + 1;
++ port->irq = platform_get_irq(pdev, 0);
++
++ port->uartclk = clk_get_rate(up->mck);
++ port->iotype = SERIAL_IO_MEM;
++ port->flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP;
++ port->ops = &usart3_pops;
++ port->line = pdev->id;
++ port->dev = &pdev->dev;
++
++ return 0;
++}
++
++static struct usart3_port usart3_ports[NR_PORTS];
++
++#ifdef CONFIG_SERIAL_ATMEL_CONSOLE
++
++static void usart3_console_write(struct console *console, const char *string,
++ unsigned int len)
++{
++ struct usart3_port *up = &usart3_ports[console->index];
++ unsigned int imr, i;
++ unsigned long flags, ptsr;
++
++ /*
++ * Save IMR, then disable interrupts
++ */
++ local_irq_save(flags);
++ imr = usart3_readl(up, IMR);
++ usart3_writel(up, IDR, ~0UL);
++ local_irq_restore(flags);
++
++ /*
++ * Save PDC state and disable PDC transmission
++ */
++ ptsr = usart3_readl(up, PTSR);
++ usart3_writel(up, PTCR, USART3_BIT(TXTDIS));
++
++ /*
++ * Now, do each character
++ */
++ for (i = 0; i < len; i++, string++) {
++ char c = *string;
++
++ /*
++ * If we're sending LF, send CR first...
++ */
++ if (c == '\n') {
++ while (!(usart3_readl(up, CSR)
++ & USART3_BIT(TXRDY)))
++ ;
++ usart3_writel(up, THR, '\r');
++ }
++ while (!(usart3_readl(up, CSR) & USART3_BIT(TXRDY)))
++ ;
++ usart3_writel(up, THR, c);
++ }
++
++ /*
++ * Wait for transmitter to become empty and restore the IMR
++ * and PDC state.
++ */
++ while (!(usart3_readl(up, CSR) & USART3_BIT(TXRDY)))
++ ;
++
++ usart3_writel(up, PTCR, ptsr & USART3_BIT(TXTEN));
++ usart3_writel(up, IER, imr);
++}
++
++static int __init usart3_console_setup(struct console *console,
++ char *options)
++{
++ struct platform_device *pdev;
++ struct usart3_port *up;
++ struct uart_port *port;
++ int baud = 115200;
++ int bits = 8;
++ int parity = 'n';
++ int flow = 'n';
++ int ret;
++
++ if (console->index >= NR_PORTS) {
++ printk(KERN_ERR
++ "Can't use USART%u for console: index >= NR_PORTS\n",
++ console->index);
++ return -ENODEV;
++ }
++
++ pdev = at91_default_console_device;
++ if (!pdev)
++ return -ENXIO;
++
++ up = &usart3_ports[console->index];
++ port = &up->uart;
++
++ ret = initialize_port(up, pdev);
++ if (ret)
++ return ret;
++
++ port->membase = ioremap(port->mapbase, up->mapsize);
++ ret = -ENOMEM;
++ if (!port->membase)
++ goto out_disable_clk;
++
++ up->regs = port->membase;
++
++ /* Set a fixed baud rate for now */
++ usart3_writel(up, BRGR, 2);
++
++ /* Make sure all interrupts are disabled and reset/enable the USART */
++ usart3_writel(up, IDR, -1L);
++ usart3_writel(up, CR, (USART3_BIT(RSTRX)
++ | USART3_BIT(RSTTX)
++ | USART3_BIT(RSTSTA)));
++ usart3_writel(up, CR, (USART3_BIT(RXEN)
++ | USART3_BIT(TXEN)));
++
++ if (options)
++ uart_parse_options(options, &baud, &parity, &bits, &flow);
++
++ return uart_set_options(port, console, baud, parity, bits, flow);
++
++out_disable_clk:
++ clk_disable(up->mck);
++ clk_put(up->mck);
++ return ret;
++}
++
++static struct uart_driver usart3_reg;
++static struct console usart3_console = {
++ .name = "ttyUS",
++ .write = usart3_console_write,
++ .device = uart_console_device,
++ .setup = usart3_console_setup,
++ .flags = CON_PRINTBUFFER,
++ .index = -1,
++ .data = &usart3_reg,
++};
++
++static int __init usart3_console_init(void)
++{
++ register_console(&usart3_console);
++ return 0;
++}
++console_initcall(usart3_console_init);
++
++#define USART3_CONSOLE &usart3_console
++
++#else
++#define USART3_CONSOLE NULL
++#endif
++
++static struct uart_driver usart3_reg = {
++ .owner = THIS_MODULE,
++ .driver_name = "serial",
++ .dev_name = "ttyUS",
++ .major = SERIAL_USART3_MAJOR,
++ .minor = MINOR_START,
++ .nr = NR_PORTS,
++ .cons = USART3_CONSOLE,
++};
++
++static int usart3_serial_suspend(struct platform_device *pdev,
++ pm_message_t state)
++{
++ struct usart3_port *port = platform_get_drvdata(pdev);
++ int retval = 0;
++
++ if (port)
++ retval = uart_suspend_port(&usart3_reg, &port->uart);
++
++ return retval;
++}
++
++static int usart3_serial_resume(struct platform_device *pdev)
++{
++ struct usart3_port *port = platform_get_drvdata(pdev);
++ int retval = 0;
++
++ if (port)
++ retval = uart_resume_port(&usart3_reg, &port->uart);
++
++ return retval;
++}
++
++static int __devinit usart3_serial_probe(struct platform_device *pdev)
++{
++ struct usart3_port *up;
++ int ret;
++
++ if (pdev->id >= NR_PORTS) {
++ printk(KERN_WARNING
++ "Ignoring USART%u, as NR_PORTS is only %u\n",
++ pdev->id, NR_PORTS);
++ return -ENOMEM;
++ }
++
++ up = &usart3_ports[pdev->id];
++
++ /*
++ * If the port has already been set up as a console, we
++ * shouldn't enable it again.
++ */
++ if (!up->uart.uartclk) {
++ ret = initialize_port(up, pdev);
++ if (ret)
++ goto out;
++ }
++
++ /*
++ * The RX buffer must be cacheline aligned. If it's not,
++ * invalidating the cache could be disastrous...
++ *
++ * Fortunately, kmalloc() always returns cache-aligned memory.
++ */
++ ret = -ENOMEM;
++ up->rx_buffer = kmalloc(2 * RX_BUFFER_SIZE, GFP_KERNEL);
++ if (!up->rx_buffer)
++ goto out_disable_clk;
++
++ ret = uart_add_one_port(&usart3_reg, &up->uart);
++ if (ret)
++ goto out_free_rx_buffer;
++
++ platform_set_drvdata(pdev, up);
++
++ return 0;
++
++out_free_rx_buffer:
++ kfree(up->rx_buffer);
++out_disable_clk:
++ clk_disable(up->mck);
++ clk_put(up->mck);
++out:
++ return ret;
++}
++
++static int __devexit usart3_serial_remove(struct platform_device *pdev)
++{
++ struct usart3_port *port = platform_get_drvdata(pdev);
++ int retval = 0;
++
++ platform_set_drvdata(pdev, NULL);
++
++ if (port) {
++ retval = uart_remove_one_port(&usart3_reg, &port->uart);
++ clk_disable(port->mck);
++ clk_put(port->mck);
++ kfree(port->rx_buffer);
++ kfree(port);
++ }
++
++ return retval;
++}
++
++static struct platform_driver usart3_serial_driver = {
++ .probe = usart3_serial_probe,
++ .remove = __devexit_p(usart3_serial_remove),
++ .suspend = usart3_serial_suspend,
++ .resume = usart3_serial_resume,
++ .driver = {
++ .name = "usart",
++ },
++};
++
++static int __init usart3_init(void)
++{
++ int ret;
++
++ printk(KERN_INFO "Serial: Atmel USART3 driver\n");
++
++ ret = uart_register_driver(&usart3_reg);
++ if (ret)
++ return ret;
++
++ ret = platform_driver_register(&usart3_serial_driver);
++ if (ret)
++ uart_unregister_driver(&usart3_reg);
++
++ return ret;
++}
++
++static void __exit usart3_exit(void)
++{
++ platform_driver_unregister(&usart3_serial_driver);
++ uart_unregister_driver(&usart3_reg);
++}
++
++module_init(usart3_init);
++module_exit(usart3_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("Atmel USART3 serial driver");
++MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
+Index: linux-2.6.18-avr32/drivers/serial/atmel_usart.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/serial/atmel_usart.h 2006-11-02 16:37:02.000000000 +0100
+@@ -0,0 +1,290 @@
++/*
++ * Register definitions for USART3
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_USART3_H__
++#define __ASM_AVR32_USART3_H__
++
++/* USART3 register offsets */
++#define USART3_CR 0x0000
++#define USART3_MR 0x0004
++#define USART3_IER 0x0008
++#define USART3_IDR 0x000c
++#define USART3_IMR 0x0010
++#define USART3_CSR 0x0014
++#define USART3_RHR 0x0018
++#define USART3_THR 0x001c
++#define USART3_BRGR 0x0020
++#define USART3_RTOR 0x0024
++#define USART3_TTGR 0x0028
++#define USART3_FIDI 0x0040
++#define USART3_NER 0x0044
++#define USART3_XXR 0x0048
++#define USART3_IFR 0x004c
++
++/* PDC register offsets */
++#define USART3_RPR 0x100
++#define USART3_RCR 0x104
++#define USART3_TPR 0x108
++#define USART3_TCR 0x10c
++#define USART3_RNPR 0x110
++#define USART3_RNCR 0x114
++#define USART3_TNPR 0x118
++#define USART3_TNCR 0x11c
++#define USART3_PTCR 0x120
++#define USART3_PTSR 0x124
++
++/* Bitfields in CR */
++#define USART3_RSTRX_OFFSET 2
++#define USART3_RSTRX_SIZE 1
++#define USART3_RSTTX_OFFSET 3
++#define USART3_RSTTX_SIZE 1
++#define USART3_RXEN_OFFSET 4
++#define USART3_RXEN_SIZE 1
++#define USART3_RXDIS_OFFSET 5
++#define USART3_RXDIS_SIZE 1
++#define USART3_TXEN_OFFSET 6
++#define USART3_TXEN_SIZE 1
++#define USART3_TXDIS_OFFSET 7
++#define USART3_TXDIS_SIZE 1
++#define USART3_RSTSTA_OFFSET 8
++#define USART3_RSTSTA_SIZE 1
++#define USART3_STTBRK_OFFSET 9
++#define USART3_STTBRK_SIZE 1
++#define USART3_STPBRK_OFFSET 10
++#define USART3_STPBRK_SIZE 1
++#define USART3_STTTO_OFFSET 11
++#define USART3_STTTO_SIZE 1
++#define USART3_SENDA_OFFSET 12
++#define USART3_SENDA_SIZE 1
++#define USART3_RSTIT_OFFSET 13
++#define USART3_RSTIT_SIZE 1
++#define USART3_RSTNACK_OFFSET 14
++#define USART3_RSTNACK_SIZE 1
++#define USART3_RETTO_OFFSET 15
++#define USART3_RETTO_SIZE 1
++#define USART3_DTREN_OFFSET 16
++#define USART3_DTREN_SIZE 1
++#define USART3_DTRDIS_OFFSET 17
++#define USART3_DTRDIS_SIZE 1
++#define USART3_RTSEN_OFFSET 18
++#define USART3_RTSEN_SIZE 1
++#define USART3_RTSDIS_OFFSET 19
++#define USART3_RTSDIS_SIZE 1
++#define USART3_COMM_TX_OFFSET 30
++#define USART3_COMM_TX_SIZE 1
++#define USART3_COMM_RX_OFFSET 31
++#define USART3_COMM_RX_SIZE 1
++
++/* Bitfields in MR */
++#define USART3_USART_MODE_OFFSET 0
++#define USART3_USART_MODE_SIZE 4
++#define USART3_USCLKS_OFFSET 4
++#define USART3_USCLKS_SIZE 2
++#define USART3_CHRL_OFFSET 6
++#define USART3_CHRL_SIZE 2
++#define USART3_SYNC_OFFSET 8
++#define USART3_SYNC_SIZE 1
++#define USART3_PAR_OFFSET 9
++#define USART3_PAR_SIZE 3
++#define USART3_NBSTOP_OFFSET 12
++#define USART3_NBSTOP_SIZE 2
++#define USART3_CHMODE_OFFSET 14
++#define USART3_CHMODE_SIZE 2
++#define USART3_MSBF_OFFSET 16
++#define USART3_MSBF_SIZE 1
++#define USART3_MODE9_OFFSET 17
++#define USART3_MODE9_SIZE 1
++#define USART3_CLKO_OFFSET 18
++#define USART3_CLKO_SIZE 1
++#define USART3_OVER_OFFSET 19
++#define USART3_OVER_SIZE 1
++#define USART3_INACK_OFFSET 20
++#define USART3_INACK_SIZE 1
++#define USART3_DSNACK_OFFSET 21
++#define USART3_DSNACK_SIZE 1
++#define USART3_MAX_ITERATION_OFFSET 24
++#define USART3_MAX_ITERATION_SIZE 3
++#define USART3_FILTER_OFFSET 28
++#define USART3_FILTER_SIZE 1
++
++/* Bitfields in CSR */
++#define USART3_RXRDY_OFFSET 0
++#define USART3_RXRDY_SIZE 1
++#define USART3_TXRDY_OFFSET 1
++#define USART3_TXRDY_SIZE 1
++#define USART3_RXBRK_OFFSET 2
++#define USART3_RXBRK_SIZE 1
++#define USART3_ENDRX_OFFSET 3
++#define USART3_ENDRX_SIZE 1
++#define USART3_ENDTX_OFFSET 4
++#define USART3_ENDTX_SIZE 1
++#define USART3_OVRE_OFFSET 5
++#define USART3_OVRE_SIZE 1
++#define USART3_FRAME_OFFSET 6
++#define USART3_FRAME_SIZE 1
++#define USART3_PARE_OFFSET 7
++#define USART3_PARE_SIZE 1
++#define USART3_TIMEOUT_OFFSET 8
++#define USART3_TIMEOUT_SIZE 1
++#define USART3_TXEMPTY_OFFSET 9
++#define USART3_TXEMPTY_SIZE 1
++#define USART3_ITERATION_OFFSET 10
++#define USART3_ITERATION_SIZE 1
++#define USART3_TXBUFE_OFFSET 11
++#define USART3_TXBUFE_SIZE 1
++#define USART3_RXBUFF_OFFSET 12
++#define USART3_RXBUFF_SIZE 1
++#define USART3_NACK_OFFSET 13
++#define USART3_NACK_SIZE 1
++#define USART3_RIIC_OFFSET 16
++#define USART3_RIIC_SIZE 1
++#define USART3_DSRIC_OFFSET 17
++#define USART3_DSRIC_SIZE 1
++#define USART3_DCDIC_OFFSET 18
++#define USART3_DCDIC_SIZE 1
++#define USART3_CTSIC_OFFSET 19
++#define USART3_CTSIC_SIZE 1
++#define USART3_RI_OFFSET 20
++#define USART3_RI_SIZE 1
++#define USART3_DSR_OFFSET 21
++#define USART3_DSR_SIZE 1
++#define USART3_DCD_OFFSET 22
++#define USART3_DCD_SIZE 1
++#define USART3_CTS_OFFSET 23
++#define USART3_CTS_SIZE 1
++
++/* Bitfields in RHR */
++#define USART3_RXCHR_OFFSET 0
++#define USART3_RXCHR_SIZE 9
++
++/* Bitfields in THR */
++#define USART3_TXCHR_OFFSET 0
++#define USART3_TXCHR_SIZE 9
++
++/* Bitfields in BRGR */
++#define USART3_CD_OFFSET 0
++#define USART3_CD_SIZE 16
++
++/* Bitfields in RTOR */
++#define USART3_TO_OFFSET 0
++#define USART3_TO_SIZE 16
++
++/* Bitfields in TTGR */
++#define USART3_TG_OFFSET 0
++#define USART3_TG_SIZE 8
++
++/* Bitfields in FIDI */
++#define USART3_FI_DI_RATIO_OFFSET 0
++#define USART3_FI_DI_RATIO_SIZE 11
++
++/* Bitfields in NER */
++#define USART3_NB_ERRORS_OFFSET 0
++#define USART3_NB_ERRORS_SIZE 8
++
++/* Bitfields in XXR */
++#define USART3_XOFF_OFFSET 0
++#define USART3_XOFF_SIZE 8
++#define USART3_XON_OFFSET 8
++#define USART3_XON_SIZE 8
++
++/* Bitfields in IFR */
++#define USART3_IRDA_FILTER_OFFSET 0
++#define USART3_IRDA_FILTER_SIZE 8
++
++/* Bitfields in PTCR/PTSR (PDC) */
++#define USART3_RXTEN_OFFSET 0
++#define USART3_RXTEN_SIZE 1
++#define USART3_RXTDIS_OFFSET 1
++#define USART3_RXTDIS_SIZE 1
++#define USART3_TXTEN_OFFSET 8
++#define USART3_TXTEN_SIZE 1
++#define USART3_TXTDIS_OFFSET 9
++#define USART3_TXTDIS_SIZE 1
++
++/* Constants for USART_MODE */
++#define USART3_USART_MODE_NORMAL 0
++#define USART3_USART_MODE_RS485 1
++#define USART3_USART_MODE_HARDWARE 2
++#define USART3_USART_MODE_MODEM 3
++#define USART3_USART_MODE_ISO7816_T0 4
++#define USART3_USART_MODE_ISO7816_T1 6
++#define USART3_USART_MODE_IRDA 8
++
++/* Constants for USCLKS */
++#define USART3_USCLKS_MCK 0
++#define USART3_USCLKS_MCK_DIV 1
++#define USART3_USCLKS_SCK 3
++
++/* Constants for CHRL */
++#define USART3_CHRL_5 0
++#define USART3_CHRL_6 1
++#define USART3_CHRL_7 2
++#define USART3_CHRL_8 3
++
++/* Constants for PAR */
++#define USART3_PAR_EVEN 0
++#define USART3_PAR_ODD 1
++#define USART3_PAR_SPACE 2
++#define USART3_PAR_MARK 3
++#define USART3_PAR_NONE 4
++#define USART3_PAR_MULTI 6
++
++/* Constants for NBSTOP */
++#define USART3_NBSTOP_1 0
++#define USART3_NBSTOP_1_5 1
++#define USART3_NBSTOP_2 2
++
++/* Constants for CHMODE */
++#define USART3_CHMODE_NORMAL 0
++#define USART3_CHMODE_ECHO 1
++#define USART3_CHMODE_LOCAL_LOOP 2
++#define USART3_CHMODE_REMOTE_LOOP 3
++
++/* Constants for MSBF */
++#define USART3_MSBF_LSBF 0
++#define USART3_MSBF_MSBF 1
++
++/* Constants for OVER */
++#define USART3_OVER_X16 0
++#define USART3_OVER_X8 1
++
++/* Constants for CD */
++#define USART3_CD_DISABLE 0
++#define USART3_CD_BYPASS 1
++
++/* Constants for TO */
++#define USART3_TO_DISABLE 0
++
++/* Constants for TG */
++#define USART3_TG_DISABLE 0
++
++/* Constants for FI_DI_RATIO */
++#define USART3_FI_DI_RATIO_DISABLE 0
++
++/* Bit manipulation macros */
++#define USART3_BIT(name) \
++ (1 << USART3_##name##_OFFSET)
++#define USART3_BF(name,value) \
++ (((value) & ((1 << USART3_##name##_SIZE) - 1)) \
++ << USART3_##name##_OFFSET)
++#define USART3_BFEXT(name,value) \
++ (((value) >> USART3_##name##_OFFSET) \
++ & ((1 << USART3_##name##_SIZE) - 1))
++#define USART3_BFINS(name,value,old) \
++ (((old) & ~(((1 << USART3_##name##_SIZE) - 1) \
++ << USART3_##name##_OFFSET)) \
++ | USART3_BF(name,value))
++
++/* Register access macros */
++#define usart3_readl(port,reg) \
++ __raw_readl((port)->regs + USART3_##reg)
++#define usart3_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + USART3_##reg)
++
++#endif /* __ASM_AVR32_USART3_H__ */
diff --git a/packages/linux/linux-2.6.18/atmel-version.patch b/packages/linux/linux-2.6.18/atmel-version.patch
new file mode 100644
index 0000000000..e72ff55d27
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel-version.patch
@@ -0,0 +1,17 @@
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-2.6.18-avr32/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-avr32/Makefile 2006-09-20 13:30:33.000000000 +0200
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 6
+ SUBLEVEL = 18
+-EXTRAVERSION =
++EXTRAVERSION = -at0
+ NAME=Avast! A bilge rat!
+
+ # *DOCUMENTATION*
diff --git a/packages/linux/linux-2.6.18/atmel_spi-handle-rx-overrun.patch b/packages/linux/linux-2.6.18/atmel_spi-handle-rx-overrun.patch
new file mode 100644
index 0000000000..3bfbbee9aa
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel_spi-handle-rx-overrun.patch
@@ -0,0 +1,200 @@
+---
+ drivers/spi/atmel_spi.c | 140 ++++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 100 insertions(+), 40 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/spi/atmel_spi.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/spi/atmel_spi.c 2007-01-15 15:35:38.000000000 +0100
++++ linux-2.6.18-avr32/drivers/spi/atmel_spi.c 2007-01-16 13:26:32.000000000 +0100
+@@ -156,7 +156,7 @@ static void atmel_spi_next_xfer(struct s
+ */
+ spi_writel(as, TNCR, 0);
+ spi_writel(as, RNCR, 0);
+- imr = SPI_BIT(ENDRX);
++ imr = SPI_BIT(ENDRX) | SPI_BIT(OVRES);
+
+ dev_dbg(&msg->spi->dev,
+ "start xfer %p: len %u tx %p/%08x rx %p/%08x imr %08x\n",
+@@ -209,6 +209,43 @@ static void atmel_spi_dma_map_xfer(struc
+ }
+ }
+
++static void atmel_spi_dma_unmap_xfer(struct spi_master *master,
++ struct spi_transfer *xfer)
++{
++ if (xfer->tx_dma != INVALID_DMA_ADDRESS)
++ dma_unmap_single(master->cdev.dev, xfer->tx_dma,
++ xfer->len, DMA_TO_DEVICE);
++ if (xfer->rx_dma != INVALID_DMA_ADDRESS)
++ dma_unmap_single(master->cdev.dev, xfer->rx_dma,
++ xfer->len, DMA_FROM_DEVICE);
++}
++
++static void atmel_spi_msg_done(struct spi_master *master,
++ struct atmel_spi *as,
++ struct spi_message *msg,
++ int status)
++{
++ cs_deactivate(msg->spi);
++ list_del(&msg->queue);
++ msg->status = status;
++
++ dev_dbg(master->cdev.dev,
++ "xfer complete: %u bytes transferred\n",
++ msg->actual_length);
++
++ spin_unlock(&as->lock);
++ msg->complete(msg->context);
++ spin_lock(&as->lock);
++
++ as->current_transfer = NULL;
++
++ /* continue; complete() may have queued requests */
++ if (list_empty(&as->queue) || as->stopping)
++ spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS));
++ else
++ atmel_spi_next_message(master);
++}
++
+ static irqreturn_t
+ atmel_spi_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ {
+@@ -219,19 +256,71 @@ atmel_spi_interrupt(int irq, void *dev_i
+ u32 status, pending, imr;
+ int ret = IRQ_NONE;
+
++ spin_lock(&as->lock);
++
++ xfer = as->current_transfer;
++ msg = list_entry(as->queue.next, struct spi_message, queue);
++
+ imr = spi_readl(as, IMR);
+ status = spi_readl(as, SR);
+ pending = status & imr;
+ pr_debug("spi irq: stat %05x imr %05x pend %05x\n", status, imr, pending);
+
+- if (pending & (SPI_BIT(ENDTX) | SPI_BIT(ENDRX))) {
++ if (pending & SPI_BIT(OVRES)) {
++ int timeout;
++
+ ret = IRQ_HANDLED;
+
+- spi_writel(as, IDR, pending);
+- spin_lock(&as->lock);
++ spi_writel(as, IDR, (SPI_BIT(ENDTX) | SPI_BIT(ENDRX)
++ | SPI_BIT(OVRES)));
++
++ /*
++ * When we get an overrun, we disregard the current
++ * transfer. Data will not be copied back from any
++ * bounce buffer and msg->actual_len will not be
++ * updated with the last xfer.
++ *
++ * We will also not process any remaning transfers in
++ * the message.
++ *
++ * First, stop the transfer and unmap the DMA buffers.
++ */
++ spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS));
++ if (!msg->is_dma_mapped)
++ atmel_spi_dma_unmap_xfer(master, xfer);
++
++ /* REVISIT: udelay in irq is unfriendly */
++ if (xfer->delay_usecs)
++ udelay(xfer->delay_usecs);
+
+- xfer = as->current_transfer;
+- msg = list_entry(as->queue.next, struct spi_message, queue);
++ dev_warn(master->cdev.dev, "fifo overrun (%u/%u remaining)\n",
++ spi_readl(as, TCR), spi_readl(as, RCR));
++
++ /*
++ * Clean up DMA registers and make sure the data
++ * registers are empty.
++ */
++ spi_writel(as, RNCR, 0);
++ spi_writel(as, TNCR, 0);
++ spi_writel(as, RCR, 0);
++ spi_writel(as, TCR, 0);
++ for (timeout = 1000; timeout; timeout--)
++ if (spi_readl(as, SR) & SPI_BIT(TXEMPTY))
++ break;
++ if (!timeout)
++ dev_warn(master->cdev.dev,
++ "timeout waiting for TXEMPTY");
++ while (spi_readl(as, SR) & SPI_BIT(RDRF))
++ spi_readl(as, RDR);
++
++ /* Clear any overrun happening while cleaning up */
++ spi_readl(as, SR);
++
++ atmel_spi_msg_done(master, as, msg, -EIO);
++ } else if (pending & (SPI_BIT(ENDTX) | SPI_BIT(ENDRX))) {
++ ret = IRQ_HANDLED;
++
++ spi_writel(as, IDR, pending);
+
+ /*
+ * If the rx buffer wasn't aligned, we used a bounce
+@@ -254,46 +343,16 @@ pr_debug("spi irq: stat %05x imr %05x pe
+ if (as->remaining_bytes == 0) {
+ msg->actual_length += xfer->len;
+
+- if (!msg->is_dma_mapped) {
+- if (xfer->tx_dma != INVALID_DMA_ADDRESS)
+- dma_unmap_single(master->cdev.dev,
+- xfer->tx_dma,
+- xfer->len,
+- DMA_TO_DEVICE);
+- if (xfer->rx_dma != INVALID_DMA_ADDRESS)
+- dma_unmap_single(master->cdev.dev,
+- xfer->rx_dma,
+- xfer->len,
+- DMA_FROM_DEVICE);
+- }
++ if (!msg->is_dma_mapped)
++ atmel_spi_dma_unmap_xfer(master, xfer);
+
+ /* REVISIT: udelay in irq is unfriendly */
+ if (xfer->delay_usecs)
+ udelay(xfer->delay_usecs);
+
+ if (msg->transfers.prev == &xfer->transfer_list) {
+-
+ /* report completed message */
+- cs_deactivate(msg->spi);
+- list_del(&msg->queue);
+- msg->status = 0;
+-
+- dev_dbg(master->cdev.dev,
+- "xfer complete: %u bytes transferred\n",
+- msg->actual_length);
+-
+- spin_unlock(&as->lock);
+- msg->complete(msg->context);
+- spin_lock(&as->lock);
+-
+- as->current_transfer = NULL;
+-
+- /* continue; complete() may have queued requests */
+- if (list_empty(&as->queue) || as->stopping)
+- spi_writel(as, PTCR, SPI_BIT(RXTDIS)
+- | SPI_BIT(TXTDIS));
+- else
+- atmel_spi_next_message(master);
++ atmel_spi_msg_done(master, as, msg, 0);
+ } else {
+ if (xfer->cs_change) {
+ cs_deactivate(msg->spi);
+@@ -315,9 +374,10 @@ pr_debug("spi irq: stat %05x imr %05x pe
+ */
+ atmel_spi_next_xfer(master, msg);
+ }
+- spin_unlock(&as->lock);
+ }
+
++ spin_unlock(&as->lock);
++
+ return ret;
+ }
+
diff --git a/packages/linux/linux-2.6.18/atmel_spi-send-zeroes-when-tx_buf-is-not-set.patch b/packages/linux/linux-2.6.18/atmel_spi-send-zeroes-when-tx_buf-is-not-set.patch
new file mode 100644
index 0000000000..0cf703d3df
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atmel_spi-send-zeroes-when-tx_buf-is-not-set.patch
@@ -0,0 +1,48 @@
+From e9bce56d6d8913505049cde45d800bb69943f166 Mon Sep 17 00:00:00 2001
+From: Nicolas Ferre <nicolas.ferre@rfo.atmel.com>
+Date: Tue, 16 Jan 2007 15:15:36 +0100
+Subject: [ATMEL SPI] Send zeroes when tx_buf is not set
+
+send zeros when tx_buf is not set (according to the new spi
+specification by D.Brownell) cf.
+ http://lkml.org/lkml/2006/12/22/171
+ http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4b1badf5d9ddfc46ad075ca5bfc465972c85cc7c
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ drivers/spi/atmel_spi.c | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/spi/atmel_spi.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/spi/atmel_spi.c 2007-01-16 18:20:06.000000000 +0100
++++ linux-2.6.18-avr32/drivers/spi/atmel_spi.c 2007-01-16 18:20:57.000000000 +0100
+@@ -120,18 +120,17 @@ static void atmel_spi_next_xfer(struct s
+ len = BUFFER_SIZE;
+ }
+ if (tx_dma == INVALID_DMA_ADDRESS) {
+- if (xfer->tx_buf) {
+- tx_dma = as->buffer_dma;
+- if (len > BUFFER_SIZE)
+- len = BUFFER_SIZE;
++ tx_dma = as->buffer_dma;
++ if (len > BUFFER_SIZE)
++ len = BUFFER_SIZE;
++ if (xfer->tx_buf)
+ memcpy(as->buffer, xfer->tx_buf, len);
+- dma_sync_single_for_device(&as->pdev->dev,
+- as->buffer_dma, len,
+- DMA_TO_DEVICE);
+- } else {
+- /* Send undefined data; rx_dma is handy */
+- tx_dma = rx_dma;
+- }
++ else
++ /* no tx data: send zeros */
++ memset(as->buffer, 0, len);
++ dma_sync_single_for_device(&as->pdev->dev,
++ as->buffer_dma, len,
++ DMA_TO_DEVICE);
+ }
+
+ spi_writel(as, RPR, rx_dma);
diff --git a/packages/gnuplot/gnuplot-4.2.0/.mtn2git_empty b/packages/linux/linux-2.6.18/atngw100/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnuplot/gnuplot-4.2.0/.mtn2git_empty
+++ b/packages/linux/linux-2.6.18/atngw100/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.18/atngw100/defconfig b/packages/linux/linux-2.6.18/atngw100/defconfig
new file mode 100644
index 0000000000..b70408bc72
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atngw100/defconfig
@@ -0,0 +1,970 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18-at0
+# Wed Jan 10 10:13:31 2007
+#
+CONFIG_AVR32=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=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
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type and features
+#
+CONFIG_SUBARCH_AVR32B=y
+CONFIG_MMU=y
+CONFIG_PERFORMANCE_COUNTERS=y
+CONFIG_PLATFORM_AT32AP=y
+CONFIG_CPU_AT32AP7000=y
+# CONFIG_BOARD_ATSTK1000 is not set
+CONFIG_BOARD_ATNGW=y
+CONFIG_LOADER_U_BOOT=y
+
+#
+# Atmel AVR32 AP options
+#
+CONFIG_PIO_DEV=y
+CONFIG_LOAD_ADDRESS=0x10000000
+CONFIG_ENTRY_ADDRESS=0x90000000
+CONFIG_PHYS_OFFSET=0x10000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
+# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
+# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_OWNERSHIP_TRACE is not set
+CONFIG_DW_DMAC=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_CMDLINE=""
+
+#
+# Bus options
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+CONFIG_NETFILTER_XTABLES=y
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=y
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=y
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+# CONFIG_IP_NF_CT_PROTO_SCTP is not set
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+# CONFIG_IP_NF_H323 is not set
+# CONFIG_IP_NF_SIP is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=y
+# CONFIG_IP_NF_MATCH_IPRANGE is not set
+# CONFIG_IP_NF_MATCH_TOS is not set
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_MATCH_OWNER is not set
+# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
+# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_TARGET_REJECT=y
+CONFIG_IP_NF_TARGET_LOG=y
+# CONFIG_IP_NF_TARGET_ULOG is not set
+# CONFIG_IP_NF_TARGET_TCPMSS is not set
+CONFIG_IP_NF_NAT=y
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=y
+CONFIG_IP_NF_TARGET_REDIRECT=y
+# CONFIG_IP_NF_TARGET_NETMAP is not set
+# CONFIG_IP_NF_TARGET_SAME is not set
+# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=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
+
+#
+# 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x80000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_DATAFLASH=y
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_MACB=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ATMELTWI=m
+CONFIG_I2C_ATMELTWI_BAUDRATE=100000
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+CONFIG_USB_GADGET_HUSB2DEV=y
+CONFIG_USB_HUSB2DEV=m
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_ATMELMCI=m
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=850
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_PROC_KCORE is not set
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=y
+
+#
+# Miscellaneous filesystems
+#
+# 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_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# 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_RWSEMS 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_KPROBES is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/linux-2.6.18/atstk1000-add-platform-data-for-mmc.patch b/packages/linux/linux-2.6.18/atstk1000-add-platform-data-for-mmc.patch
new file mode 100644
index 0000000000..ed9e0f6c8c
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atstk1000-add-platform-data-for-mmc.patch
@@ -0,0 +1,25 @@
+Index: linux-2.6.18/arch/avr32/boards/atstk1000/atstk1002.c
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/boards/atstk1000/atstk1002.c 2006-12-20 12:25:25.000000000 +0100
++++ linux-2.6.18/arch/avr32/boards/atstk1000/atstk1002.c 2006-12-20 12:26:09.000000000 +0100
+@@ -33,6 +33,11 @@
+ },
+ };
+
++static struct mmci_platform_data __initdata mmci0_data = {
++ .detect_pin = GPIO_PIO_NONE,
++ .wp_pin = GPIO_PIO_NONE,
++};
++
+ static int __init parse_tag_ethernet(struct tag *tag)
+ {
+ int i;
+@@ -72,7 +77,7 @@
+
+ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
+
+- at32_add_device_mmci(0);
++ at32_add_device_mmci(0, &mmci0_data);
+ at32_add_device_spi(0);
+ at32_add_device_twi(0);
+ at32_add_device_usb(0);
diff --git a/packages/linux/linux-2.6.18/atstk1000-board-fix-fbmem-setup.patch b/packages/linux/linux-2.6.18/atstk1000-board-fix-fbmem-setup.patch
new file mode 100644
index 0000000000..185f7deb93
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atstk1000-board-fix-fbmem-setup.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.18/arch/avr32/boards/atstk1000/setup.c
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/boards/atstk1000/setup.c 2007-01-11 11:30:42.000000000 +0100
++++ linux-2.6.18/arch/avr32/boards/atstk1000/setup.c 2007-01-11 13:27:00.000000000 +0100
+@@ -37,7 +37,8 @@
+
+ for_each_online_pgdat(pgdat) {
+ if (fbmem_start >= pgdat->bdata->node_boot_start
+- && fbmem_start <= pgdat->bdata->node_low_pfn)
++ && fbmem_start <= (pgdat->bdata->node_low_pfn
++ * PAGE_SIZE))
+ reserve_bootmem_node(pgdat, fbmem_start,
+ fbmem_size);
+ }
diff --git a/packages/linux/linux-2.6.18/atstk1000-instantiate-devices.patch b/packages/linux/linux-2.6.18/atstk1000-instantiate-devices.patch
new file mode 100644
index 0000000000..9de779bc14
--- /dev/null
+++ b/packages/linux/linux-2.6.18/atstk1000-instantiate-devices.patch
@@ -0,0 +1,103 @@
+---
+ arch/avr32/boards/atstk1000/Makefile | 2 +-
+ arch/avr32/boards/atstk1000/atstk1002.c | 24 +++++++++++++++++++++++-
+ arch/avr32/boards/atstk1000/spi.c | 27 ---------------------------
+ 3 files changed, 24 insertions(+), 29 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atstk1000/atstk1002.c 2006-11-29 16:31:03.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c 2006-11-29 16:45:43.000000000 +0100
+@@ -7,12 +7,15 @@
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
++#include <linux/device.h>
+ #include <linux/init.h>
+ #include <linux/kernel.h>
+ #include <linux/string.h>
+ #include <linux/types.h>
++#include <linux/spi/spi.h>
+
+ #include <asm/setup.h>
++#include <asm/arch/at32ap7000.h>
+ #include <asm/arch/board.h>
+ #include <asm/arch/init.h>
+
+@@ -20,6 +23,16 @@ static struct eth_platform_data __initda
+
+ extern struct lcdc_platform_data atstk1000_fb0_data;
+
++static struct spi_board_info spi_board_info[] __initdata = {
++ {
++ .modalias = "ltv350qv",
++ .controller_data = (void *)GPIO_PIN_PA(4),
++ .max_speed_hz = 16000000,
++ .bus_num = 0,
++ .chip_select = 1,
++ },
++};
++
+ static int __init parse_tag_ethernet(struct tag *tag)
+ {
+ int i;
+@@ -54,9 +67,18 @@ static int __init atstk1002_init(void)
+ at32_add_device_usart(2); /* /dev/ttyS1 */
+ at32_add_device_usart(3); /* /dev/ttyS2 */
+
+- at32_add_device_eth(0, &eth0_data);
++ if (eth_data[0].valid)
++ at32_add_device_eth(0, &eth_data[0]);
++
++ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
++
++ at32_add_device_mmci(0);
+ at32_add_device_spi(0);
++ at32_add_device_twi(0);
++ at32_add_device_usb(0);
+ at32_add_device_lcdc(0, &atstk1000_fb0_data);
++ at32_add_device_dac(0);
++ at32_add_device_at73c213(0);
+
+ return 0;
+ }
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atstk1000/Makefile 2006-11-29 16:21:05.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/Makefile 2006-11-29 16:45:07.000000000 +0100
+@@ -1,2 +1,2 @@
+-obj-y += setup.o spi.o flash.o
++obj-y += setup.o flash.o
+ obj-$(CONFIG_BOARD_ATSTK1002) += atstk1002.o
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/spi.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atstk1000/spi.c 2006-11-29 16:21:05.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,27 +0,0 @@
+-/*
+- * ATSTK1000 SPI devices
+- *
+- * Copyright (C) 2005 Atmel Norway
+- *
+- * 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/device.h>
+-#include <linux/spi/spi.h>
+-
+-static struct spi_board_info spi_board_info[] __initdata = {
+- {
+- .modalias = "ltv350qv",
+- .max_speed_hz = 16000000,
+- .bus_num = 0,
+- .chip_select = 1,
+- },
+-};
+-
+-static int board_init_spi(void)
+-{
+- spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
+- return 0;
+-}
+-arch_initcall(board_init_spi);
diff --git a/packages/linux/linux-2.6.18/avr32-arch-neutral-gpio-api.patch b/packages/linux/linux-2.6.18/avr32-arch-neutral-gpio-api.patch
new file mode 100644
index 0000000000..049d5e3a94
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-arch-neutral-gpio-api.patch
@@ -0,0 +1,598 @@
+From 05ac6cbfecf9e9b0ab46ba5f30eec8ea91b2987c Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Mon, 13 Nov 2006 10:23:15 +0100
+Subject: [AVR32] Implement arch-neutral GPIO API
+
+AVR32 implementation of the arch-neutral GPIO API described by
+Documentation/gpio.txt.
+
+This also contains a few related changes to the irq handling and
+pin configuration code, to make this actually usable.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ arch/avr32/mach-at32ap/at32ap7000.c | 144 ++++++++++------------
+ arch/avr32/mach-at32ap/pio.c | 186 +++++++++++++++++++++++++++--
+ include/asm-avr32/arch-at32ap/at32ap7000.h | 26 ++++
+ include/asm-avr32/arch-at32ap/gpio.h | 39 ++++++
+ include/asm-avr32/arch-at32ap/irq.h | 11 +
+ include/asm-avr32/arch-at32ap/portmux.h | 16 --
+ include/asm-avr32/gpio.h | 6
+ include/asm-avr32/irq.h | 8 -
+ 8 files changed, 333 insertions(+), 103 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/at32ap7000.c 2006-11-29 16:21:12.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c 2006-11-29 16:22:14.000000000 +0100
+@@ -11,8 +11,9 @@
+
+ #include <asm/io.h>
+
++#include <asm/arch/at32ap7000.h>
+ #include <asm/arch/board.h>
+-#include <asm/arch/portmux.h>
++#include <asm/arch/gpio.h>
+ #include <asm/arch/sm.h>
+
+ #include "clock.h"
+@@ -67,17 +68,8 @@ static struct clk devname##_##_name = {
+ .index = _index, \
+ }
+
+-enum {
+- PIOA,
+- PIOB,
+- PIOC,
+- PIOD,
+-};
+-
+-enum {
+- FUNC_A,
+- FUNC_B,
+-};
++#define select_peripheral(pin, periph, pullup) \
++ at32_select_periph(GPIO_PIN_##pin, GPIO_##periph, pullup)
+
+ unsigned long at32ap7000_osc_rates[3] = {
+ [0] = 32768,
+@@ -553,26 +545,26 @@ DEV_CLK(usart, usart3, pba, 6);
+
+ static inline void configure_usart0_pins(void)
+ {
+- portmux_set_func(PIOA, 8, FUNC_B); /* RXD */
+- portmux_set_func(PIOA, 9, FUNC_B); /* TXD */
++ select_peripheral(PA(8), PERIPH_B, 0); /* RXD */
++ select_peripheral(PA(9), PERIPH_B, 0); /* TXD */
+ }
+
+ static inline void configure_usart1_pins(void)
+ {
+- portmux_set_func(PIOA, 17, FUNC_A); /* RXD */
+- portmux_set_func(PIOA, 18, FUNC_A); /* TXD */
++ select_peripheral(PA(17), PERIPH_A, 0); /* RXD */
++ select_peripheral(PA(18), PERIPH_A, 0); /* TXD */
+ }
+
+ static inline void configure_usart2_pins(void)
+ {
+- portmux_set_func(PIOB, 26, FUNC_B); /* RXD */
+- portmux_set_func(PIOB, 27, FUNC_B); /* TXD */
++ select_peripheral(PB(26), PERIPH_B, 0); /* RXD */
++ select_peripheral(PB(27), PERIPH_B, 0); /* TXD */
+ }
+
+ static inline void configure_usart3_pins(void)
+ {
+- portmux_set_func(PIOB, 18, FUNC_B); /* RXD */
+- portmux_set_func(PIOB, 17, FUNC_B); /* TXD */
++ select_peripheral(PB(18), PERIPH_B, 0); /* RXD */
++ select_peripheral(PB(17), PERIPH_B, 0); /* TXD */
+ }
+
+ static struct platform_device *setup_usart(unsigned int id)
+@@ -644,27 +636,27 @@ at32_add_device_eth(unsigned int id, str
+ case 0:
+ pdev = &macb0_device;
+
+- portmux_set_func(PIOC, 3, FUNC_A); /* TXD0 */
+- portmux_set_func(PIOC, 4, FUNC_A); /* TXD1 */
+- portmux_set_func(PIOC, 7, FUNC_A); /* TXEN */
+- portmux_set_func(PIOC, 8, FUNC_A); /* TXCK */
+- portmux_set_func(PIOC, 9, FUNC_A); /* RXD0 */
+- portmux_set_func(PIOC, 10, FUNC_A); /* RXD1 */
+- portmux_set_func(PIOC, 13, FUNC_A); /* RXER */
+- portmux_set_func(PIOC, 15, FUNC_A); /* RXDV */
+- portmux_set_func(PIOC, 16, FUNC_A); /* MDC */
+- portmux_set_func(PIOC, 17, FUNC_A); /* MDIO */
++ select_peripheral(PC(3), PERIPH_A, 0); /* TXD0 */
++ select_peripheral(PC(4), PERIPH_A, 0); /* TXD1 */
++ select_peripheral(PC(7), PERIPH_A, 0); /* TXEN */
++ select_peripheral(PC(8), PERIPH_A, 0); /* TXCK */
++ select_peripheral(PC(9), PERIPH_A, 0); /* RXD0 */
++ select_peripheral(PC(10), PERIPH_A, 0); /* RXD1 */
++ select_peripheral(PC(13), PERIPH_A, 0); /* RXER */
++ select_peripheral(PC(15), PERIPH_A, 0); /* RXDV */
++ select_peripheral(PC(16), PERIPH_A, 0); /* MDC */
++ select_peripheral(PC(17), PERIPH_A, 0); /* MDIO */
+
+ if (!data->is_rmii) {
+- portmux_set_func(PIOC, 0, FUNC_A); /* COL */
+- portmux_set_func(PIOC, 1, FUNC_A); /* CRS */
+- portmux_set_func(PIOC, 2, FUNC_A); /* TXER */
+- portmux_set_func(PIOC, 5, FUNC_A); /* TXD2 */
+- portmux_set_func(PIOC, 6, FUNC_A); /* TXD3 */
+- portmux_set_func(PIOC, 11, FUNC_A); /* RXD2 */
+- portmux_set_func(PIOC, 12, FUNC_A); /* RXD3 */
+- portmux_set_func(PIOC, 14, FUNC_A); /* RXCK */
+- portmux_set_func(PIOC, 18, FUNC_A); /* SPD */
++ select_peripheral(PC(0), PERIPH_A, 0); /* COL */
++ select_peripheral(PC(1), PERIPH_A, 0); /* CRS */
++ select_peripheral(PC(2), PERIPH_A, 0); /* TXER */
++ select_peripheral(PC(5), PERIPH_A, 0); /* TXD2 */
++ select_peripheral(PC(6), PERIPH_A, 0); /* TXD3 */
++ select_peripheral(PC(11), PERIPH_A, 0); /* RXD2 */
++ select_peripheral(PC(12), PERIPH_A, 0); /* RXD3 */
++ select_peripheral(PC(14), PERIPH_A, 0); /* RXCK */
++ select_peripheral(PC(18), PERIPH_A, 0); /* SPD */
+ }
+ break;
+
+@@ -695,12 +687,12 @@ struct platform_device *__init at32_add_
+ switch (id) {
+ case 0:
+ pdev = &spi0_device;
+- portmux_set_func(PIOA, 0, FUNC_A); /* MISO */
+- portmux_set_func(PIOA, 1, FUNC_A); /* MOSI */
+- portmux_set_func(PIOA, 2, FUNC_A); /* SCK */
+- portmux_set_func(PIOA, 3, FUNC_A); /* NPCS0 */
+- portmux_set_func(PIOA, 4, FUNC_A); /* NPCS1 */
+- portmux_set_func(PIOA, 5, FUNC_A); /* NPCS2 */
++ select_peripheral(PA(0), PERIPH_A, 0); /* MISO */
++ select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */
++ select_peripheral(PA(2), PERIPH_A, 0); /* SCK */
++ select_peripheral(PA(3), PERIPH_A, 0); /* NPCS0 */
++ select_peripheral(PA(4), PERIPH_A, 0); /* NPCS1 */
++ select_peripheral(PA(5), PERIPH_A, 0); /* NPCS2 */
+ break;
+
+ default:
+@@ -743,37 +735,37 @@ at32_add_device_lcdc(unsigned int id, st
+ switch (id) {
+ case 0:
+ pdev = &lcdc0_device;
+- portmux_set_func(PIOC, 19, FUNC_A); /* CC */
+- portmux_set_func(PIOC, 20, FUNC_A); /* HSYNC */
+- portmux_set_func(PIOC, 21, FUNC_A); /* PCLK */
+- portmux_set_func(PIOC, 22, FUNC_A); /* VSYNC */
+- portmux_set_func(PIOC, 23, FUNC_A); /* DVAL */
+- portmux_set_func(PIOC, 24, FUNC_A); /* MODE */
+- portmux_set_func(PIOC, 25, FUNC_A); /* PWR */
+- portmux_set_func(PIOC, 26, FUNC_A); /* DATA0 */
+- portmux_set_func(PIOC, 27, FUNC_A); /* DATA1 */
+- portmux_set_func(PIOC, 28, FUNC_A); /* DATA2 */
+- portmux_set_func(PIOC, 29, FUNC_A); /* DATA3 */
+- portmux_set_func(PIOC, 30, FUNC_A); /* DATA4 */
+- portmux_set_func(PIOC, 31, FUNC_A); /* DATA5 */
+- portmux_set_func(PIOD, 0, FUNC_A); /* DATA6 */
+- portmux_set_func(PIOD, 1, FUNC_A); /* DATA7 */
+- portmux_set_func(PIOD, 2, FUNC_A); /* DATA8 */
+- portmux_set_func(PIOD, 3, FUNC_A); /* DATA9 */
+- portmux_set_func(PIOD, 4, FUNC_A); /* DATA10 */
+- portmux_set_func(PIOD, 5, FUNC_A); /* DATA11 */
+- portmux_set_func(PIOD, 6, FUNC_A); /* DATA12 */
+- portmux_set_func(PIOD, 7, FUNC_A); /* DATA13 */
+- portmux_set_func(PIOD, 8, FUNC_A); /* DATA14 */
+- portmux_set_func(PIOD, 9, FUNC_A); /* DATA15 */
+- portmux_set_func(PIOD, 10, FUNC_A); /* DATA16 */
+- portmux_set_func(PIOD, 11, FUNC_A); /* DATA17 */
+- portmux_set_func(PIOD, 12, FUNC_A); /* DATA18 */
+- portmux_set_func(PIOD, 13, FUNC_A); /* DATA19 */
+- portmux_set_func(PIOD, 14, FUNC_A); /* DATA20 */
+- portmux_set_func(PIOD, 15, FUNC_A); /* DATA21 */
+- portmux_set_func(PIOD, 16, FUNC_A); /* DATA22 */
+- portmux_set_func(PIOD, 17, FUNC_A); /* DATA23 */
++ select_peripheral(PC(19), PERIPH_A, 0); /* CC */
++ select_peripheral(PC(20), PERIPH_A, 0); /* HSYNC */
++ select_peripheral(PC(21), PERIPH_A, 0); /* PCLK */
++ select_peripheral(PC(22), PERIPH_A, 0); /* VSYNC */
++ select_peripheral(PC(23), PERIPH_A, 0); /* DVAL */
++ select_peripheral(PC(24), PERIPH_A, 0); /* MODE */
++ select_peripheral(PC(25), PERIPH_A, 0); /* PWR */
++ select_peripheral(PC(26), PERIPH_A, 0); /* DATA0 */
++ select_peripheral(PC(27), PERIPH_A, 0); /* DATA1 */
++ select_peripheral(PC(28), PERIPH_A, 0); /* DATA2 */
++ select_peripheral(PC(29), PERIPH_A, 0); /* DATA3 */
++ select_peripheral(PC(30), PERIPH_A, 0); /* DATA4 */
++ select_peripheral(PC(31), PERIPH_A, 0); /* DATA5 */
++ select_peripheral(PD(0), PERIPH_A, 0); /* DATA6 */
++ select_peripheral(PD(1), PERIPH_A, 0); /* DATA7 */
++ select_peripheral(PD(2), PERIPH_A, 0); /* DATA8 */
++ select_peripheral(PD(3), PERIPH_A, 0); /* DATA9 */
++ select_peripheral(PD(4), PERIPH_A, 0); /* DATA10 */
++ select_peripheral(PD(5), PERIPH_A, 0); /* DATA11 */
++ select_peripheral(PD(6), PERIPH_A, 0); /* DATA12 */
++ select_peripheral(PD(7), PERIPH_A, 0); /* DATA13 */
++ select_peripheral(PD(8), PERIPH_A, 0); /* DATA14 */
++ select_peripheral(PD(9), PERIPH_A, 0); /* DATA15 */
++ select_peripheral(PD(10), PERIPH_A, 0); /* DATA16 */
++ select_peripheral(PD(11), PERIPH_A, 0); /* DATA17 */
++ select_peripheral(PD(12), PERIPH_A, 0); /* DATA18 */
++ select_peripheral(PD(13), PERIPH_A, 0); /* DATA19 */
++ select_peripheral(PD(14), PERIPH_A, 0); /* DATA20 */
++ select_peripheral(PD(15), PERIPH_A, 0); /* DATA21 */
++ select_peripheral(PD(16), PERIPH_A, 0); /* DATA22 */
++ select_peripheral(PD(17), PERIPH_A, 0); /* DATA23 */
+
+ clk_set_parent(&lcdc0_pixclk, &pll0);
+ clk_set_rate(&lcdc0_pixclk, clk_get_rate(&pll0));
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/pio.c 2006-11-29 16:21:12.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-11-29 16:22:14.000000000 +0100
+@@ -13,10 +13,9 @@
+ #include <linux/fs.h>
+ #include <linux/platform_device.h>
+
++#include <asm/gpio.h>
+ #include <asm/io.h>
+
+-#include <asm/arch/portmux.h>
+-
+ #include "pio.h"
+
+ #define MAX_NR_PIO_DEVICES 8
+@@ -25,28 +24,191 @@ struct pio_device {
+ void __iomem *regs;
+ const struct platform_device *pdev;
+ struct clk *clk;
+- u32 alloc_mask;
++ u32 pinmux_mask;
++ u32 gpio_mask;
+ char name[32];
+ };
+
+ static struct pio_device pio_dev[MAX_NR_PIO_DEVICES];
+
+-void portmux_set_func(unsigned int portmux_id, unsigned int pin_id,
+- unsigned int function_id)
++static struct pio_device *gpio_to_pio(unsigned int gpio)
+ {
+ struct pio_device *pio;
+- u32 mask = 1 << pin_id;
++ unsigned int index;
++
++ index = gpio >> 5;
++ if (index >= MAX_NR_PIO_DEVICES)
++ return NULL;
++ pio = &pio_dev[index];
++ if (!pio->regs)
++ return NULL;
++
++ return pio;
++}
++
++/* Pin multiplexing API */
+
+- BUG_ON(portmux_id >= MAX_NR_PIO_DEVICES);
++void __init at32_select_periph(unsigned int pin, unsigned int periph,
++ int use_pullup)
++{
++ struct pio_device *pio;
++ unsigned int pin_index = pin & 0x1f;
++ u32 mask = 1 << pin_index;
++
++ pio = gpio_to_pio(pin);
++ if (unlikely(!pio)) {
++ printk("pio: invalid pin %u\n", pin);
++ goto fail;
++ }
+
+- pio = &pio_dev[portmux_id];
++ if (unlikely(test_and_set_bit(pin_index, &pio->pinmux_mask))) {
++ printk("%s: pin %u is busy\n", pio->name, pin_index);
++ goto fail;
++ }
+
+- if (function_id)
++ pio_writel(pio, PUER, mask);
++ if (periph)
+ pio_writel(pio, BSR, mask);
+ else
+ pio_writel(pio, ASR, mask);
++
+ pio_writel(pio, PDR, mask);
++ if (!use_pullup)
++ pio_writel(pio, PUDR, mask);
++
++ return;
++
++fail:
++ dump_stack();
++}
++
++void __init at32_select_gpio(unsigned int pin, int enable_output,
++ int use_pullup)
++{
++ struct pio_device *pio;
++ unsigned int pin_index = pin & 0x1f;
++ u32 mask = 1 << pin_index;
++
++ pio = gpio_to_pio(pin);
++ if (unlikely(!pio)) {
++ printk("pio: invalid pin %u\n", pin);
++ goto fail;
++ }
++
++ if (unlikely(test_and_set_bit(pin_index, &pio->pinmux_mask))) {
++ printk("%s: pin %u is busy\n", pio->name, pin_index);
++ goto fail;
++ }
++
++ pio_writel(pio, PUER, mask);
++ if (enable_output)
++ pio_writel(pio, OER, mask);
++ else
++ pio_writel(pio, ODR, mask);
++
++ pio_writel(pio, PER, mask);
++ if (!use_pullup)
++ pio_writel(pio, PUDR, mask);
++
++ /* It's now allowed to use request_gpio on this pin */
++ clear_bit(pin_index, &pio->gpio_mask);
++
++ return;
++
++fail:
++ dump_stack();
++}
++
++/* GPIO API */
++
++int gpio_request(unsigned int gpio, const char *label)
++{
++ struct pio_device *pio;
++ unsigned int pin;
++
++ pio = gpio_to_pio(gpio);
++ if (!pio)
++ return -ENODEV;
++
++ pin = gpio & 0x1f;
++ if (test_and_set_bit(pin, &pio->gpio_mask))
++ return -EBUSY;
++
++ return 0;
+ }
++EXPORT_SYMBOL(gpio_request);
++
++void gpio_free(unsigned int gpio)
++{
++ struct pio_device *pio;
++ unsigned int pin;
++
++ pio = gpio_to_pio(gpio);
++ if (!pio) {
++ printk(KERN_ERR
++ "gpio: attempted to free invalid pin %u\n", gpio);
++ return;
++ }
++
++ pin = gpio & 0x1f;
++ if (!test_and_clear_bit(pin, &pio->gpio_mask))
++ printk(KERN_ERR "gpio: freeing already-free pin %s[%u]\n",
++ pio->name, pin);
++}
++EXPORT_SYMBOL(gpio_free);
++
++int gpio_direction_input(unsigned int gpio)
++{
++ struct pio_device *pio;
++ unsigned int pin;
++
++ pio = gpio_to_pio(gpio);
++ if (!pio)
++ return -ENODEV;
++
++ pin = gpio & 0x1f;
++ pio_writel(pio, ODR, 1 << pin);
++
++ return 0;
++}
++EXPORT_SYMBOL(gpio_direction_input);
++
++int gpio_direction_output(unsigned int gpio)
++{
++ struct pio_device *pio;
++ unsigned int pin;
++
++ pio = gpio_to_pio(gpio);
++ if (!pio)
++ return -ENODEV;
++
++ pin = gpio & 0x1f;
++ pio_writel(pio, OER, 1 << pin);
++
++ return 0;
++}
++EXPORT_SYMBOL(gpio_direction_output);
++
++int gpio_get_value(unsigned int gpio)
++{
++ struct pio_device *pio = &pio_dev[gpio >> 5];
++
++ return (pio_readl(pio, PDSR) >> (gpio & 0x1f)) & 1;
++}
++EXPORT_SYMBOL(gpio_get_value);
++
++void gpio_set_value(unsigned int gpio, int value)
++{
++ struct pio_device *pio = &pio_dev[gpio >> 5];
++ u32 mask;
++
++ mask = 1 << (gpio & 0x1f);
++ if (value)
++ pio_writel(pio, SODR, mask);
++ else
++ pio_writel(pio, CODR, mask);
++}
++EXPORT_SYMBOL(gpio_set_value);
+
+ static int __init pio_probe(struct platform_device *pdev)
+ {
+@@ -113,6 +275,12 @@ void __init at32_init_pio(struct platfor
+ pio->pdev = pdev;
+ pio->regs = ioremap(regs->start, regs->end - regs->start + 1);
+
++ /*
++ * request_gpio() is only valid for pins that have been
++ * configured as GPIO.
++ */
++ pio->gpio_mask = ~0UL;
++
+ pio_writel(pio, ODR, ~0UL);
+ pio_writel(pio, PER, ~0UL);
+ }
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/at32ap7000.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/at32ap7000.h 2006-11-29 16:22:14.000000000 +0100
+@@ -0,0 +1,26 @@
++#ifndef __ASM_ARCH_AT32AP7000_H
++#define __ASM_ARCH_AT32AP7000_H
++
++#define GPIO_PERIPH_A 0
++#define GPIO_PERIPH_B 1
++
++#define NR_GPIO_CONTROLLERS 4
++
++/*
++ * Pin numbers identifying specific GPIO pins on the chip. They can
++ * also be converted to IRQ numbers by passing them through
++ * gpio_to_irq().
++ */
++#define GPIO_PIOA_BASE (0)
++#define GPIO_PIOB_BASE (GPIO_PIOA_BASE + 32)
++#define GPIO_PIOC_BASE (GPIO_PIOB_BASE + 32)
++#define GPIO_PIOD_BASE (GPIO_PIOC_BASE + 32)
++#define GPIO_PIOE_BASE (GPIO_PIOD_BASE + 32)
++
++#define GPIO_PIN_PA(N) (GPIO_PIOA_BASE + (N))
++#define GPIO_PIN_PB(N) (GPIO_PIOB_BASE + (N))
++#define GPIO_PIN_PC(N) (GPIO_PIOC_BASE + (N))
++#define GPIO_PIN_PD(N) (GPIO_PIOD_BASE + (N))
++#define GPIO_PIN_PE(N) (GPIO_PIOE_BASE + (N))
++
++#endif /* __ASM_ARCH_AT32AP7000_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/gpio.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/gpio.h 2006-11-29 16:22:14.000000000 +0100
+@@ -0,0 +1,39 @@
++#ifndef __ASM_AVR32_GPIO_H
++#define __ASM_AVR32_GPIO_H
++
++#include <linux/compiler.h>
++#include <asm/irq.h>
++
++/*
++ * Set up pin multiplexing, called from board init only.
++ *
++ * The following flags determine the initial state of the pin.
++ */
++#define AT32_GPIOF_PULLUP 0x00000001 /* Enable pull-up */
++#define AT32_GPIOF_OUTPUT 0x00000002 /* Enable output driver */
++#define AT32_GPIOF_HIGH 0x00000004 /* Set output high */
++
++void at32_select_periph(unsigned int pin, unsigned int periph,
++ unsigned long flags);
++void at32_select_gpio(unsigned int pin, unsigned long flags);
++
++/* Arch-neutral GPIO API */
++int __must_check gpio_request(unsigned int gpio, const char *label);
++void gpio_free(unsigned int gpio);
++
++int gpio_direction_input(unsigned int gpio);
++int gpio_direction_output(unsigned int gpio);
++int gpio_get_value(unsigned int gpio);
++void gpio_set_value(unsigned int gpio, int value);
++
++static inline int gpio_to_irq(unsigned int gpio)
++{
++ return gpio + GPIO_IRQ_BASE;
++}
++
++static inline int irq_to_gpio(unsigned int irq)
++{
++ return irq - GPIO_IRQ_BASE;
++}
++
++#endif /* __ASM_AVR32_GPIO_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/irq.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/irq.h 2006-11-29 16:22:14.000000000 +0100
+@@ -0,0 +1,11 @@
++#ifndef __ASM_AVR32_ARCH_IRQ_H
++#define __ASM_AVR32_ARCH_IRQ_H
++
++#define EIM_IRQ_BASE NR_INTERNAL_IRQS
++#define NR_EIM_IRQS 32
++#define GPIO_IRQ_BASE (EIM_IRQ_BASE + NR_EIM_IRQS)
++#define NR_GPIO_IRQS (4 * 32)
++
++#define NR_IRQS (GPIO_IRQ_BASE + NR_GPIO_IRQS)
++
++#endif /* __ASM_AVR32_ARCH_IRQ_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/portmux.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/arch-at32ap/portmux.h 2006-11-29 16:21:12.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,16 +0,0 @@
+-/*
+- * AT32 portmux interface.
+- *
+- * Copyright (C) 2006 Atmel Corporation
+- *
+- * 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.
+- */
+-#ifndef __ASM_AVR32_AT32_PORTMUX_H__
+-#define __ASM_AVR32_AT32_PORTMUX_H__
+-
+-void portmux_set_func(unsigned int portmux_id, unsigned int pin_id,
+- unsigned int function_id);
+-
+-#endif /* __ASM_AVR32_AT32_PORTMUX_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/gpio.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/gpio.h 2006-11-29 16:22:14.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_GPIO_H
++#define __ASM_AVR32_GPIO_H
++
++#include <asm/arch/gpio.h>
++
++#endif /* __ASM_AVR32_GPIO_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/irq.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/irq.h 2006-11-29 16:21:12.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/irq.h 2006-11-29 16:22:14.000000000 +0100
+@@ -2,8 +2,12 @@
+ #define __ASM_AVR32_IRQ_H
+
+ #define NR_INTERNAL_IRQS 64
+-#define NR_EXTERNAL_IRQS 64
+-#define NR_IRQS (NR_INTERNAL_IRQS + NR_EXTERNAL_IRQS)
++
++#include <asm/arch/irq.h>
++
++#ifndef NR_IRQS
++#define NR_IRQS (NR_INTERNAL_IRQS)
++#endif
+
+ #define irq_canonicalize(i) (i)
+
diff --git a/packages/linux/linux-2.6.18/avr32-arch.patch b/packages/linux/linux-2.6.18/avr32-arch.patch
new file mode 100644
index 0000000000..76e2b9f492
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-arch.patch
@@ -0,0 +1,19628 @@
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+
+This adds support for the Atmel AVR32 architecture as well as the AT32AP7000
+CPU and the AT32STK1000 development board.
+
+AVR32 is a new high-performance 32-bit RISC microprocessor core, designed for
+cost-sensitive embedded applications, with particular emphasis on low power
+consumption and high code density. The AVR32 architecture is not binary
+compatible with earlier 8-bit AVR architectures.
+
+The AVR32 architecture, including the instruction set, is described by the
+AVR32 Architecture Manual, available from
+
+http://www.atmel.com/dyn/resources/prod_documents/doc32000.pdf
+
+The Atmel AT32AP7000 is the first CPU implementing the AVR32 architecture. It
+features a 7-stage pipeline, 16KB instruction and data caches and a full
+Memory Management Unit. It also comes with a large set of integrated
+peripherals, many of which are shared with the AT91 ARM-based controllers from
+Atmel.
+
+Full data sheet is available from
+
+http://www.atmel.com/dyn/resources/prod_documents/doc32003.pdf
+
+while the CPU core implementation including caches and MMU is documented by
+the AVR32 AP Technical Reference, available from
+
+http://www.atmel.com/dyn/resources/prod_documents/doc32001.pdf
+
+Information about the AT32STK1000 development board can be found at
+
+http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3918
+
+including a BSP CD image with an earlier version of this patch, development
+tools (binaries and source/patches) and a root filesystem image suitable for
+booting from SD card.
+
+Alternatively, there's a preliminary "getting started" guide available at
+http://avr32linux.org/twiki/bin/view/Main/GettingStarted which provides links
+to the sources and patches you will need in order to set up a cross-compiling
+environment for avr32-linux.
+
+This patch, as well as the other patches included with the BSP and the
+toolchain patches, is actively supported by Atmel Corporation.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+---
+
+ MAINTAINERS | 17
+ arch/avr32/Kconfig | 199 +++++
+ arch/avr32/Kconfig.debug | 19
+ arch/avr32/Makefile | 89 ++
+ arch/avr32/boards/atstk1000/Makefile | 2
+ arch/avr32/boards/atstk1000/atstk1002.c | 37
+ arch/avr32/boards/atstk1000/flash.c | 95 ++
+ arch/avr32/boards/atstk1000/setup.c | 50 +
+ arch/avr32/boards/atstk1000/spi.c | 27
+ arch/avr32/boot/images/Makefile | 60 +
+ arch/avr32/boot/u-boot/Makefile | 3
+ arch/avr32/boot/u-boot/empty.S | 1
+ arch/avr32/boot/u-boot/head.S | 60 +
+ arch/avr32/configs/atstk1002_defconfig | 754 +++++++++++++++++++
+ arch/avr32/kernel/Makefile | 18
+ arch/avr32/kernel/asm-offsets.c | 25
+ arch/avr32/kernel/avr32_ksyms.c | 64 +
+ arch/avr32/kernel/cpu.c | 327 ++++++++
+ arch/avr32/kernel/entry-avr32b.S | 678 +++++++++++++++++
+ arch/avr32/kernel/head.S | 42 +
+ arch/avr32/kernel/init_task.c | 38
+ arch/avr32/kernel/irq.c | 71 +
+ arch/avr32/kernel/kprobes.c | 270 +++++++
+ arch/avr32/kernel/module.c | 324 ++++++++
+ arch/avr32/kernel/process.c | 283 +++++++
+ arch/avr32/kernel/ptrace.c | 371 +++++++++
+ arch/avr32/kernel/semaphore.c | 148 +++
+ arch/avr32/kernel/setup.c | 335 ++++++++
+ arch/avr32/kernel/signal.c | 328 ++++++++
+ arch/avr32/kernel/switch_to.S | 35
+ arch/avr32/kernel/sys_avr32.c | 51 +
+ arch/avr32/kernel/syscall-stubs.S | 102 ++
+ arch/avr32/kernel/syscall_table.S | 289 +++++++
+ arch/avr32/kernel/time.c | 238 ++++++
+ arch/avr32/kernel/traps.c | 425 +++++++++++
+ arch/avr32/kernel/vmlinux.lds.c | 139 +++
+ arch/avr32/lib/Makefile | 11
+ arch/avr32/lib/__avr32_asr64.S | 31
+ arch/avr32/lib/__avr32_lsl64.S | 31
+ arch/avr32/lib/__avr32_lsr64.S | 31
+ arch/avr32/lib/clear_user.S | 76 +
+ arch/avr32/lib/copy_user.S | 119 +++
+ arch/avr32/lib/csum_partial.S | 47 +
+ arch/avr32/lib/csum_partial_copy_generic.S | 99 ++
+ arch/avr32/lib/delay.c | 55 +
+ arch/avr32/lib/findbit.S | 155 ++++
+ arch/avr32/lib/io-readsb.S | 49 +
+ arch/avr32/lib/io-readsl.S | 24
+ arch/avr32/lib/io-readsw.S | 43 +
+ arch/avr32/lib/io-writesb.S | 52 +
+ arch/avr32/lib/io-writesl.S | 20
+ arch/avr32/lib/io-writesw.S | 38
+ arch/avr32/lib/libgcc.h | 33
+ arch/avr32/lib/longlong.h | 98 ++
+ arch/avr32/lib/memcpy.S | 62 +
+ arch/avr32/lib/memset.S | 72 +
+ arch/avr32/lib/strncpy_from_user.S | 60 +
+ arch/avr32/lib/strnlen_user.S | 67 +
+ arch/avr32/mach-at32ap/Makefile | 2
+ arch/avr32/mach-at32ap/at32ap.c | 90 ++
+ arch/avr32/mach-at32ap/at32ap7000.c | 876 +++++++++++++++++++++++
+ arch/avr32/mach-at32ap/clock.c | 148 +++
+ arch/avr32/mach-at32ap/clock.h | 30
+ arch/avr32/mach-at32ap/extint.c | 189 ++++
+ arch/avr32/mach-at32ap/hsmc.c | 164 ++++
+ arch/avr32/mach-at32ap/hsmc.h | 127 +++
+ arch/avr32/mach-at32ap/intc.c | 133 +++
+ arch/avr32/mach-at32ap/intc.h | 329 ++++++++
+ arch/avr32/mach-at32ap/pio.c | 118 +++
+ arch/avr32/mach-at32ap/pio.h | 180 ++++
+ arch/avr32/mach-at32ap/sm.h | 242 ++++++
+ arch/avr32/mm/Makefile | 6
+ arch/avr32/mm/cache.c | 150 +++
+ arch/avr32/mm/clear_page.S | 25
+ arch/avr32/mm/copy_page.S | 28
+ arch/avr32/mm/dma-coherent.c | 139 +++
+ arch/avr32/mm/fault.c | 315 ++++++++
+ arch/avr32/mm/init.c | 481 ++++++++++++
+ arch/avr32/mm/ioremap.c | 199 +++++
+ arch/avr32/mm/tlb.c | 378 +++++++++
+ include/asm-avr32/Kbuild | 3
+ include/asm-avr32/a.out.h | 26
+ include/asm-avr32/addrspace.h | 43 +
+ include/asm-avr32/arch-at32ap/at91rm9200_pdc.h | 36
+ include/asm-avr32/arch-at32ap/at91rm9200_usart.h | 123 +++
+ include/asm-avr32/arch-at32ap/board.h | 35
+ include/asm-avr32/arch-at32ap/init.h | 21
+ include/asm-avr32/arch-at32ap/portmux.h | 16
+ include/asm-avr32/arch-at32ap/sm.h | 27
+ include/asm-avr32/arch-at32ap/smc.h | 60 +
+ include/asm-avr32/asm.h | 102 ++
+ include/asm-avr32/atomic.h | 201 +++++
+ include/asm-avr32/auxvec.h | 4
+ include/asm-avr32/bitops.h | 296 +++++++
+ include/asm-avr32/bug.h | 47 +
+ include/asm-avr32/bugs.h | 15
+ include/asm-avr32/byteorder.h | 25
+ include/asm-avr32/cache.h | 29
+ include/asm-avr32/cachectl.h | 11
+ include/asm-avr32/cacheflush.h | 129 +++
+ include/asm-avr32/checksum.h | 156 ++++
+ include/asm-avr32/cputime.h | 6
+ include/asm-avr32/current.h | 15
+ include/asm-avr32/delay.h | 26
+ include/asm-avr32/div64.h | 6
+ include/asm-avr32/dma-mapping.h | 320 ++++++++
+ include/asm-avr32/dma.h | 8
+ include/asm-avr32/elf.h | 110 ++
+ include/asm-avr32/emergency-restart.h | 6
+ include/asm-avr32/errno.h | 6
+ include/asm-avr32/fcntl.h | 6
+ include/asm-avr32/futex.h | 6
+ include/asm-avr32/hardirq.h | 34
+ include/asm-avr32/hw_irq.h | 9
+ include/asm-avr32/intc.h | 128 +++
+ include/asm-avr32/io.h | 286 +++++++
+ include/asm-avr32/ioctl.h | 6
+ include/asm-avr32/ioctls.h | 83 ++
+ include/asm-avr32/ipcbuf.h | 29
+ include/asm-avr32/irq.h | 10
+ include/asm-avr32/irqflags.h | 68 +
+ include/asm-avr32/kdebug.h | 38
+ include/asm-avr32/kmap_types.h | 30
+ include/asm-avr32/kprobes.h | 34
+ include/asm-avr32/linkage.h | 7
+ include/asm-avr32/local.h | 6
+ include/asm-avr32/mach/serial_at91.h | 33
+ include/asm-avr32/mman.h | 17
+ include/asm-avr32/mmu.h | 10
+ include/asm-avr32/mmu_context.h | 148 +++
+ include/asm-avr32/module.h | 28
+ include/asm-avr32/msgbuf.h | 31
+ include/asm-avr32/mutex.h | 9
+ include/asm-avr32/namei.h | 7
+ include/asm-avr32/numnodes.h | 7
+ include/asm-avr32/ocd.h | 78 ++
+ include/asm-avr32/page.h | 112 ++
+ include/asm-avr32/param.h | 23
+ include/asm-avr32/pci.h | 8
+ include/asm-avr32/percpu.h | 6
+ include/asm-avr32/pgalloc.h | 96 ++
+ include/asm-avr32/pgtable-2level.h | 47 +
+ include/asm-avr32/pgtable.h | 408 ++++++++++
+ include/asm-avr32/poll.h | 27
+ include/asm-avr32/posix_types.h | 129 +++
+ include/asm-avr32/processor.h | 147 +++
+ include/asm-avr32/ptrace.h | 154 ++++
+ include/asm-avr32/resource.h | 6
+ include/asm-avr32/scatterlist.h | 21
+ include/asm-avr32/sections.h | 6
+ include/asm-avr32/semaphore.h | 109 ++
+ include/asm-avr32/sembuf.h | 25
+ include/asm-avr32/setup.h | 141 +++
+ include/asm-avr32/shmbuf.h | 42 +
+ include/asm-avr32/shmparam.h | 6
+ include/asm-avr32/sigcontext.h | 34
+ include/asm-avr32/siginfo.h | 6
+ include/asm-avr32/signal.h | 168 ++++
+ include/asm-avr32/socket.h | 53 +
+ include/asm-avr32/sockios.h | 12
+ include/asm-avr32/stat.h | 79 ++
+ include/asm-avr32/statfs.h | 6
+ include/asm-avr32/string.h | 17
+ include/asm-avr32/sysreg.h | 332 ++++++++
+ include/asm-avr32/system.h | 155 ++++
+ include/asm-avr32/termbits.h | 173 ++++
+ include/asm-avr32/termios.h | 80 ++
+ include/asm-avr32/thread_info.h | 106 ++
+ include/asm-avr32/timex.h | 40 +
+ include/asm-avr32/tlb.h | 32
+ include/asm-avr32/tlbflush.h | 40 +
+ include/asm-avr32/topology.h | 6
+ include/asm-avr32/traps.h | 23
+ include/asm-avr32/types.h | 70 +
+ include/asm-avr32/uaccess.h | 335 ++++++++
+ include/asm-avr32/ucontext.h | 12
+ include/asm-avr32/unaligned.h | 25
+ include/asm-avr32/unistd.h | 387 ++++++++++
+ include/asm-avr32/user.h | 64 +
+ include/linux/elf-em.h | 1
+ lib/Kconfig.debug | 4
+ 181 files changed, 18463 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.18-avr32/MAINTAINERS
+===================================================================
+--- linux-2.6.18-avr32.orig/MAINTAINERS 2006-12-04 09:32:57.000000000 +0100
++++ linux-2.6.18-avr32/MAINTAINERS 2006-12-04 09:33:12.000000000 +0100
+@@ -435,6 +435,23 @@ W: http://people.redhat.com/sgrubb/audit
+ T: git kernel.org:/pub/scm/linux/kernel/git/dwmw2/audit-2.6.git
+ S: Maintained
+
++AVR32 ARCHITECTURE
++P: Atmel AVR32 Support Team
++M: avr32@atmel.com
++P: Haavard Skinnemoen
++M: hskinnemoen@atmel.com
++W: http://www.atmel.com/products/AVR32/
++W: http://avr32linux.org/
++W: http://avrfreaks.net/
++S: Supported
++
++AVR32/AT32AP MACHINE SUPPORT
++P: Atmel AVR32 Support Team
++M: avr32@atmel.com
++P: Haavard Skinnemoen
++M: hskinnemoen@atmel.com
++S: Supported
++
+ AX.25 NETWORK LAYER
+ P: Ralf Baechle
+ M: ralf@linux-mips.org
+Index: linux-2.6.18-avr32/arch/avr32/Kconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/Kconfig 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,199 @@
++#
++# For a description of the syntax of this configuration file,
++# see Documentation/kbuild/kconfig-language.txt.
++#
++
++mainmenu "Linux Kernel Configuration"
++
++config AVR32
++ bool
++ default y
++ # With EMBEDDED=n, we get lots of stuff automatically selected
++ # that we usually don't need on AVR32.
++ select EMBEDDED
++ help
++ AVR32 is a high-performance 32-bit RISC microprocessor core,
++ designed for cost-sensitive embedded applications, with particular
++ emphasis on low power consumption and high code density.
++
++ There is an AVR32 Linux project with a web page at
++ http://avr32linux.org/.
++
++config UID16
++ bool
++
++config GENERIC_HARDIRQS
++ bool
++ default y
++
++config HARDIRQS_SW_RESEND
++ bool
++ default y
++
++config GENERIC_IRQ_PROBE
++ bool
++ default y
++
++config RWSEM_GENERIC_SPINLOCK
++ bool
++ default y
++
++config GENERIC_TIME
++ bool
++ default y
++
++config RWSEM_XCHGADD_ALGORITHM
++ bool
++
++config GENERIC_BUST_SPINLOCK
++ bool
++
++config GENERIC_ISA_DMA
++ bool
++
++config GENERIC_HWEIGHT
++ bool
++ default y
++
++config GENERIC_CALIBRATE_DELAY
++ bool
++ default y
++
++source "init/Kconfig"
++
++menu "System Type and features"
++
++config SUBARCH_AVR32B
++ bool
++config MMU
++ bool
++config PERFORMANCE_COUNTERS
++ bool
++
++config PLATFORM_AT32AP
++ bool
++ select SUBARCH_AVR32B
++ select MMU
++ select PERFORMANCE_COUNTERS
++
++choice
++ prompt "AVR32 CPU type"
++ default CPU_AT32AP7000
++
++config CPU_AT32AP7000
++ bool "AT32AP7000"
++ select PLATFORM_AT32AP
++endchoice
++
++#
++# CPU Daughterboards for ATSTK1000
++config BOARD_ATSTK1002
++ bool
++
++choice
++ prompt "AVR32 board type"
++ default BOARD_ATSTK1000
++
++config BOARD_ATSTK1000
++ bool "ATSTK1000 evaluation board"
++ select BOARD_ATSTK1002 if CPU_AT32AP7000
++endchoice
++
++choice
++ prompt "Boot loader type"
++ default LOADER_U_BOOT
++
++config LOADER_U_BOOT
++ bool "U-Boot (or similar) bootloader"
++endchoice
++
++config LOAD_ADDRESS
++ hex
++ default 0x10000000 if LOADER_U_BOOT=y && CPU_AT32AP7000=y
++
++config ENTRY_ADDRESS
++ hex
++ default 0x90000000 if LOADER_U_BOOT=y && CPU_AT32AP7000=y
++
++config PHYS_OFFSET
++ hex
++ default 0x10000000 if CPU_AT32AP7000=y
++
++source "kernel/Kconfig.preempt"
++
++config HAVE_ARCH_BOOTMEM_NODE
++ bool
++ default n
++
++config ARCH_HAVE_MEMORY_PRESENT
++ bool
++ default n
++
++config NEED_NODE_MEMMAP_SIZE
++ bool
++ default n
++
++config ARCH_FLATMEM_ENABLE
++ bool
++ default y
++
++config ARCH_DISCONTIGMEM_ENABLE
++ bool
++ default n
++
++config ARCH_SPARSEMEM_ENABLE
++ bool
++ default n
++
++source "mm/Kconfig"
++
++config OWNERSHIP_TRACE
++ bool "Ownership trace support"
++ default y
++ help
++ Say Y to generate an Ownership Trace message on every context switch,
++ enabling Nexus-compliant debuggers to keep track of the PID of the
++ currently executing task.
++
++# FPU emulation goes here
++
++source "kernel/Kconfig.hz"
++
++config CMDLINE
++ string "Default kernel command line"
++ default ""
++ help
++ If you don't have a boot loader capable of passing a command line string
++ to the kernel, you may specify one here. As a minimum, you should specify
++ the memory size and the root device (e.g., mem=8M, root=/dev/nfs).
++
++endmenu
++
++menu "Bus options"
++
++config PCI
++ bool
++
++source "drivers/pci/Kconfig"
++
++source "drivers/pcmcia/Kconfig"
++
++endmenu
++
++menu "Executable file formats"
++source "fs/Kconfig.binfmt"
++endmenu
++
++source "net/Kconfig"
++
++source "drivers/Kconfig"
++
++source "fs/Kconfig"
++
++source "arch/avr32/Kconfig.debug"
++
++source "security/Kconfig"
++
++source "crypto/Kconfig"
++
++source "lib/Kconfig"
+Index: linux-2.6.18-avr32/arch/avr32/Kconfig.debug
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/Kconfig.debug 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,19 @@
++menu "Kernel hacking"
++
++config TRACE_IRQFLAGS_SUPPORT
++ bool
++ default y
++
++source "lib/Kconfig.debug"
++
++config KPROBES
++ bool "Kprobes"
++ depends on DEBUG_KERNEL
++ help
++ Kprobes allows you to trap at almost any kernel address and
++ execute a callback function. register_kprobe() establishes
++ a probepoint and specifies the callback. Kprobes is useful
++ for kernel debugging, non-intrusive instrumentation and testing.
++ If in doubt, say "N".
++
++endmenu
+Index: linux-2.6.18-avr32/arch/avr32/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/Makefile 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,89 @@
++#
++# 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) 2004-2006 Atmel Corporation.
++
++# Default target when executing plain make
++.PHONY: all
++all: uImage vmlinux.elf
++
++KBUILD_DEFCONFIG := atstk1002_defconfig
++
++CFLAGS += -pipe -fno-builtin -mno-pic
++AFLAGS += -mrelax -mno-pic
++CFLAGS_MODULE += -mno-relax
++LDFLAGS_vmlinux += --relax
++
++cpuflags-$(CONFIG_CPU_AP7000) += -mcpu=ap7000
++
++CFLAGS += $(cpuflags-y)
++AFLAGS += $(cpuflags-y)
++
++CHECKFLAGS += -D__avr32__ -D__BIG_ENDIAN
++
++head-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/head.o
++head-y += arch/avr32/kernel/head.o
++core-$(CONFIG_PLATFORM_AT32AP) += arch/avr32/mach-at32ap/
++core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/
++core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
++core-y += arch/avr32/kernel/
++core-y += arch/avr32/mm/
++libs-y += arch/avr32/lib/
++
++archincdir-$(CONFIG_PLATFORM_AT32AP) := arch-at32ap
++
++include/asm-avr32/.arch: $(wildcard include/config/platform/*.h) include/config/auto.conf
++ @echo ' SYMLINK include/asm-avr32/arch -> include/asm-avr32/$(archincdir-y)'
++ifneq ($(KBUILD_SRC),)
++ $(Q)mkdir -p include/asm-avr32
++ $(Q)ln -fsn $(srctree)/include/asm-avr32/$(archincdir-y) include/asm-avr32/arch
++else
++ $(Q)ln -fsn $(archincdir-y) include/asm-avr32/arch
++endif
++ @touch $@
++
++archprepare: include/asm-avr32/.arch
++
++CLEAN_FILES += include/asm-avr32/.arch include/asm-avr32/arch
++
++BOOT_TARGETS := vmlinux.elf vmlinux.bin uImage uImage.srec
++
++.PHONY: $(BOOT_TARGETS) install
++
++boot := arch/$(ARCH)/boot/images
++
++ KBUILD_IMAGE := $(boot)/uImage
++vmlinux.elf: KBUILD_IMAGE := $(boot)/vmlinux.elf
++vmlinux.cso: KBUILD_IMAGE := $(boot)/vmlinux.cso
++uImage.srec: KBUILD_IMAGE := $(boot)/uImage.srec
++uImage: KBUILD_IMAGE := $(boot)/uImage
++
++quiet_cmd_listing = LST $@
++ cmd_listing = avr32-linux-objdump $(OBJDUMPFLAGS) -lS $< > $@
++quiet_cmd_disasm = DIS $@
++ cmd_disasm = avr32-linux-objdump $(OBJDUMPFLAGS) -d $< > $@
++
++vmlinux.elf vmlinux.bin uImage.srec uImage vmlinux.cso: vmlinux
++ $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
++
++install: vmlinux
++ $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
++
++vmlinux.s: vmlinux
++ $(call if_changed,disasm)
++
++vmlinux.lst: vmlinux
++ $(call if_changed,listing)
++
++CLEAN_FILES += vmlinux.s vmlinux.lst
++
++archclean:
++ $(Q)$(MAKE) $(clean)=$(boot)
++
++define archhelp
++ @echo '* vmlinux.elf - ELF image with load address 0'
++ @echo ' vmlinux.cso - PathFinder CSO image'
++ @echo '* uImage - Create a bootable image for U-Boot'
++endef
+Index: linux-2.6.18-avr32/arch/avr32/boot/images/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boot/images/Makefile 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,60 @@
++#
++# Copyright (C) 2004-2006 Atmel Corporation
++#
++# 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.
++#
++
++MKIMAGE := $(srctree)/scripts/mkuboot.sh
++
++extra-y := vmlinux.bin vmlinux.gz
++
++OBJCOPYFLAGS_vmlinux.bin := -O binary
++$(obj)/vmlinux.bin: vmlinux FORCE
++ $(call if_changed,objcopy)
++
++$(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE
++ $(call if_changed,gzip)
++
++quiet_cmd_uimage = UIMAGE $@
++ cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A avr32 -O linux -T kernel \
++ -C gzip -a $(CONFIG_LOAD_ADDRESS) -e $(CONFIG_ENTRY_ADDRESS) \
++ -n 'Linux-$(KERNELRELEASE)' -d $< $@
++
++targets += uImage uImage.srec
++$(obj)/uImage: $(obj)/vmlinux.gz
++ $(call if_changed,uimage)
++ @echo ' Image $@ is ready'
++
++OBJCOPYFLAGS_uImage.srec := -I binary -O srec
++$(obj)/uImage.srec: $(obj)/uImage
++ $(call if_changed,objcopy)
++
++OBJCOPYFLAGS_vmlinux.elf := --change-section-lma .text-0x80000000 \
++ --change-section-lma __ex_table-0x80000000 \
++ --change-section-lma .rodata-0x80000000 \
++ --change-section-lma .data-0x80000000 \
++ --change-section-lma .init-0x80000000 \
++ --change-section-lma .bss-0x80000000 \
++ --change-section-lma __param-0x80000000 \
++ --change-section-lma __ksymtab-0x80000000 \
++ --change-section-lma __ksymtab_gpl-0x80000000 \
++ --change-section-lma __kcrctab-0x80000000 \
++ --change-section-lma __kcrctab_gpl-0x80000000 \
++ --change-section-lma __ksymtab_strings-0x80000000 \
++ --set-start 0xa0000000
++$(obj)/vmlinux.elf: vmlinux FORCE
++ $(call if_changed,objcopy)
++
++quiet_cmd_sfdwarf = SFDWARF $@
++ cmd_sfdwarf = sfdwarf $< TO $@ GNUAVR IW $(SFDWARF_FLAGS) > $(obj)/sfdwarf.log
++
++$(obj)/vmlinux.cso: $(obj)/vmlinux.elf FORCE
++ $(call if_changed,sfdwarf)
++
++install: $(BOOTIMAGE)
++ sh $(srctree)/install-kernel.sh $<
++
++# Generated files to be removed upon make clean
++clean-files := vmlinux.elf vmlinux.bin vmlinux.gz uImage uImage.srec
+Index: linux-2.6.18-avr32/arch/avr32/boot/u-boot/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boot/u-boot/Makefile 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,3 @@
++extra-y := head.o
++
++obj-y := empty.o
+Index: linux-2.6.18-avr32/arch/avr32/boot/u-boot/empty.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boot/u-boot/empty.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1 @@
++/* Empty file */
+Index: linux-2.6.18-avr32/arch/avr32/boot/u-boot/head.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boot/u-boot/head.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,60 @@
++/*
++ * Startup code for use with the u-boot bootloader.
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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 <asm/setup.h>
++
++ /*
++ * The kernel is loaded where we want it to be and all caches
++ * have just been flushed. We get two parameters from u-boot:
++ *
++ * r12 contains a magic number (ATAG_MAGIC)
++ * r11 points to a tag table providing information about
++ * the system.
++ */
++ .section .init.text,"ax"
++ .global _start
++_start:
++ /* Check if the boot loader actually provided a tag table */
++ lddpc r0, magic_number
++ cp.w r12, r0
++ brne no_tag_table
++
++ /* Initialize .bss */
++ lddpc r2, bss_start_addr
++ lddpc r3, end_addr
++ mov r0, 0
++ mov r1, 0
++1: st.d r2++, r0
++ cp r2, r3
++ brlo 1b
++
++ /*
++ * Save the tag table address for later use. This must be done
++ * _after_ .bss has been initialized...
++ */
++ lddpc r0, tag_table_addr
++ st.w r0[0], r11
++
++ /* Jump to loader-independent setup code */
++ rjmp kernel_entry
++
++ .align 2
++magic_number:
++ .long ATAG_MAGIC
++tag_table_addr:
++ .long bootloader_tags
++bss_start_addr:
++ .long __bss_start
++end_addr:
++ .long _end
++
++no_tag_table:
++ sub r12, pc, (. - 2f)
++ bral panic
++2: .asciz "Boot loader didn't provide correct magic number\n"
+Index: linux-2.6.18-avr32/arch/avr32/kernel/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/Makefile 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,18 @@
++#
++# Makefile for the Linux/AVR32 kernel.
++#
++
++extra-y := head.o vmlinux.lds
++
++obj-$(CONFIG_SUBARCH_AVR32B) += entry-avr32b.o
++obj-y += syscall_table.o syscall-stubs.o irq.o
++obj-y += setup.o traps.o semaphore.o ptrace.o
++obj-y += signal.o sys_avr32.o process.o time.o
++obj-y += init_task.o switch_to.o cpu.o
++obj-$(CONFIG_MODULES) += module.o avr32_ksyms.o
++obj-$(CONFIG_KPROBES) += kprobes.o
++
++USE_STANDARD_AS_RULE := true
++
++%.lds: %.lds.c FORCE
++ $(call if_changed_dep,cpp_lds_S)
+Index: linux-2.6.18-avr32/arch/avr32/kernel/asm-offsets.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/asm-offsets.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,25 @@
++/*
++ * Generate definitions needed by assembly language modules.
++ * This code generates raw asm output which is post-processed
++ * to extract and format the required data.
++ */
++
++#include <linux/thread_info.h>
++
++#define DEFINE(sym, val) \
++ asm volatile("\n->" #sym " %0 " #val : : "i" (val))
++
++#define BLANK() asm volatile("\n->" : : )
++
++#define OFFSET(sym, str, mem) \
++ DEFINE(sym, offsetof(struct str, mem));
++
++void foo(void)
++{
++ OFFSET(TI_task, thread_info, task);
++ OFFSET(TI_exec_domain, thread_info, exec_domain);
++ OFFSET(TI_flags, thread_info, flags);
++ OFFSET(TI_cpu, thread_info, cpu);
++ OFFSET(TI_preempt_count, thread_info, preempt_count);
++ OFFSET(TI_restart_block, thread_info, restart_block);
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/avr32_ksyms.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/avr32_ksyms.c 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,64 @@
++/*
++ * Export AVR32-specific functions for loadable modules.
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/io.h>
++#include <linux/module.h>
++
++#include <asm/checksum.h>
++#include <asm/uaccess.h>
++#include <asm/delay.h>
++
++/*
++ * GCC functions
++ */
++extern unsigned long long __avr32_lsl64(unsigned long long u, unsigned long b);
++extern unsigned long long __avr32_lsr64(unsigned long long u, unsigned long b);
++extern unsigned long long __avr32_asr64(unsigned long long u, unsigned long b);
++EXPORT_SYMBOL(__avr32_lsl64);
++EXPORT_SYMBOL(__avr32_lsr64);
++EXPORT_SYMBOL(__avr32_asr64);
++
++/*
++ * String functions
++ */
++EXPORT_SYMBOL(memset);
++EXPORT_SYMBOL(memcpy);
++
++/*
++ * Userspace access stuff.
++ */
++EXPORT_SYMBOL(copy_from_user);
++EXPORT_SYMBOL(copy_to_user);
++EXPORT_SYMBOL(__copy_user);
++EXPORT_SYMBOL(strncpy_from_user);
++EXPORT_SYMBOL(__strncpy_from_user);
++EXPORT_SYMBOL(clear_user);
++EXPORT_SYMBOL(__clear_user);
++EXPORT_SYMBOL(csum_partial);
++EXPORT_SYMBOL(csum_partial_copy_generic);
++
++/* Delay loops (lib/delay.S) */
++EXPORT_SYMBOL(__ndelay);
++EXPORT_SYMBOL(__udelay);
++EXPORT_SYMBOL(__const_udelay);
++
++/* Bit operations (lib/findbit.S) */
++EXPORT_SYMBOL(find_first_zero_bit);
++EXPORT_SYMBOL(find_next_zero_bit);
++EXPORT_SYMBOL(find_first_bit);
++EXPORT_SYMBOL(find_next_bit);
++EXPORT_SYMBOL(generic_find_next_zero_le_bit);
++
++/* I/O primitives (lib/io-*.S) */
++EXPORT_SYMBOL(__raw_readsb);
++EXPORT_SYMBOL(__raw_readsw);
++EXPORT_SYMBOL(__raw_readsl);
++EXPORT_SYMBOL(__raw_writesb);
++EXPORT_SYMBOL(__raw_writesw);
++EXPORT_SYMBOL(__raw_writesl);
+Index: linux-2.6.18-avr32/arch/avr32/kernel/cpu.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/cpu.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,327 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/init.h>
++#include <linux/sysdev.h>
++#include <linux/seq_file.h>
++#include <linux/cpu.h>
++#include <linux/percpu.h>
++#include <linux/param.h>
++#include <linux/errno.h>
++
++#include <asm/setup.h>
++#include <asm/sysreg.h>
++
++static DEFINE_PER_CPU(struct cpu, cpu_devices);
++
++#ifdef CONFIG_PERFORMANCE_COUNTERS
++
++/*
++ * XXX: If/when a SMP-capable implementation of AVR32 will ever be
++ * made, we must make sure that the code executes on the correct CPU.
++ */
++static ssize_t show_pc0event(struct sys_device *dev, char *buf)
++{
++ unsigned long pccr;
++
++ pccr = sysreg_read(PCCR);
++ return sprintf(buf, "0x%lx\n", (pccr >> 12) & 0x3f);
++}
++static ssize_t store_pc0event(struct sys_device *dev, const char *buf,
++ size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (endp == buf || val > 0x3f)
++ return -EINVAL;
++ val = (val << 12) | (sysreg_read(PCCR) & 0xfffc0fff);
++ sysreg_write(PCCR, val);
++ return count;
++}
++static ssize_t show_pc0count(struct sys_device *dev, char *buf)
++{
++ unsigned long pcnt0;
++
++ pcnt0 = sysreg_read(PCNT0);
++ return sprintf(buf, "%lu\n", pcnt0);
++}
++static ssize_t store_pc0count(struct sys_device *dev, const char *buf,
++ size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (endp == buf)
++ return -EINVAL;
++ sysreg_write(PCNT0, val);
++
++ return count;
++}
++
++static ssize_t show_pc1event(struct sys_device *dev, char *buf)
++{
++ unsigned long pccr;
++
++ pccr = sysreg_read(PCCR);
++ return sprintf(buf, "0x%lx\n", (pccr >> 18) & 0x3f);
++}
++static ssize_t store_pc1event(struct sys_device *dev, const char *buf,
++ size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (endp == buf || val > 0x3f)
++ return -EINVAL;
++ val = (val << 18) | (sysreg_read(PCCR) & 0xff03ffff);
++ sysreg_write(PCCR, val);
++ return count;
++}
++static ssize_t show_pc1count(struct sys_device *dev, char *buf)
++{
++ unsigned long pcnt1;
++
++ pcnt1 = sysreg_read(PCNT1);
++ return sprintf(buf, "%lu\n", pcnt1);
++}
++static ssize_t store_pc1count(struct sys_device *dev, const char *buf,
++ size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (endp == buf)
++ return -EINVAL;
++ sysreg_write(PCNT1, val);
++
++ return count;
++}
++
++static ssize_t show_pccycles(struct sys_device *dev, char *buf)
++{
++ unsigned long pccnt;
++
++ pccnt = sysreg_read(PCCNT);
++ return sprintf(buf, "%lu\n", pccnt);
++}
++static ssize_t store_pccycles(struct sys_device *dev, const char *buf,
++ size_t count)
++{
++ unsigned long val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (endp == buf)
++ return -EINVAL;
++ sysreg_write(PCCNT, val);
++
++ return count;
++}
++
++static ssize_t show_pcenable(struct sys_device *dev, char *buf)
++{
++ unsigned long pccr;
++
++ pccr = sysreg_read(PCCR);
++ return sprintf(buf, "%c\n", (pccr & 1)?'1':'0');
++}
++static ssize_t store_pcenable(struct sys_device *dev, const char *buf,
++ size_t count)
++{
++ unsigned long pccr, val;
++ char *endp;
++
++ val = simple_strtoul(buf, &endp, 0);
++ if (endp == buf)
++ return -EINVAL;
++ if (val)
++ val = 1;
++
++ pccr = sysreg_read(PCCR);
++ pccr = (pccr & ~1UL) | val;
++ sysreg_write(PCCR, pccr);
++
++ return count;
++}
++
++static SYSDEV_ATTR(pc0event, 0600, show_pc0event, store_pc0event);
++static SYSDEV_ATTR(pc0count, 0600, show_pc0count, store_pc0count);
++static SYSDEV_ATTR(pc1event, 0600, show_pc1event, store_pc1event);
++static SYSDEV_ATTR(pc1count, 0600, show_pc1count, store_pc1count);
++static SYSDEV_ATTR(pccycles, 0600, show_pccycles, store_pccycles);
++static SYSDEV_ATTR(pcenable, 0600, show_pcenable, store_pcenable);
++
++#endif /* CONFIG_PERFORMANCE_COUNTERS */
++
++static int __init topology_init(void)
++{
++ int cpu;
++
++ for_each_possible_cpu(cpu) {
++ struct cpu *c = &per_cpu(cpu_devices, cpu);
++
++ register_cpu(c, cpu);
++
++#ifdef CONFIG_PERFORMANCE_COUNTERS
++ sysdev_create_file(&c->sysdev, &attr_pc0event);
++ sysdev_create_file(&c->sysdev, &attr_pc0count);
++ sysdev_create_file(&c->sysdev, &attr_pc1event);
++ sysdev_create_file(&c->sysdev, &attr_pc1count);
++ sysdev_create_file(&c->sysdev, &attr_pccycles);
++ sysdev_create_file(&c->sysdev, &attr_pcenable);
++#endif
++ }
++
++ return 0;
++}
++
++subsys_initcall(topology_init);
++
++static const char *cpu_names[] = {
++ "Morgan",
++ "AP7000",
++};
++#define NR_CPU_NAMES ARRAY_SIZE(cpu_names)
++
++static const char *arch_names[] = {
++ "AVR32A",
++ "AVR32B",
++};
++#define NR_ARCH_NAMES ARRAY_SIZE(arch_names)
++
++static const char *mmu_types[] = {
++ "No MMU",
++ "ITLB and DTLB",
++ "Shared TLB",
++ "MPU"
++};
++
++void __init setup_processor(void)
++{
++ unsigned long config0, config1;
++ unsigned cpu_id, cpu_rev, arch_id, arch_rev, mmu_type;
++ unsigned tmp;
++
++ config0 = sysreg_read(CONFIG0); /* 0x0000013e; */
++ config1 = sysreg_read(CONFIG1); /* 0x01f689a2; */
++ cpu_id = config0 >> 24;
++ cpu_rev = (config0 >> 16) & 0xff;
++ arch_id = (config0 >> 13) & 0x07;
++ arch_rev = (config0 >> 10) & 0x07;
++ mmu_type = (config0 >> 7) & 0x03;
++
++ boot_cpu_data.arch_type = arch_id;
++ boot_cpu_data.cpu_type = cpu_id;
++ boot_cpu_data.arch_revision = arch_rev;
++ boot_cpu_data.cpu_revision = cpu_rev;
++ boot_cpu_data.tlb_config = mmu_type;
++
++ tmp = (config1 >> 13) & 0x07;
++ if (tmp) {
++ boot_cpu_data.icache.ways = 1 << ((config1 >> 10) & 0x07);
++ boot_cpu_data.icache.sets = 1 << ((config1 >> 16) & 0x0f);
++ boot_cpu_data.icache.linesz = 1 << (tmp + 1);
++ }
++ tmp = (config1 >> 3) & 0x07;
++ if (tmp) {
++ boot_cpu_data.dcache.ways = 1 << (config1 & 0x07);
++ boot_cpu_data.dcache.sets = 1 << ((config1 >> 6) & 0x0f);
++ boot_cpu_data.dcache.linesz = 1 << (tmp + 1);
++ }
++
++ if ((cpu_id >= NR_CPU_NAMES) || (arch_id >= NR_ARCH_NAMES)) {
++ printk ("Unknown CPU configuration (ID %02x, arch %02x), "
++ "continuing anyway...\n",
++ cpu_id, arch_id);
++ return;
++ }
++
++ printk ("CPU: %s [%02x] revision %d (%s revision %d)\n",
++ cpu_names[cpu_id], cpu_id, cpu_rev,
++ arch_names[arch_id], arch_rev);
++ printk ("CPU: MMU configuration: %s\n", mmu_types[mmu_type]);
++ printk ("CPU: features:");
++ if (config0 & (1 << 6))
++ printk(" fpu");
++ if (config0 & (1 << 5))
++ printk(" java");
++ if (config0 & (1 << 4))
++ printk(" perfctr");
++ if (config0 & (1 << 3))
++ printk(" ocd");
++ printk("\n");
++}
++
++#ifdef CONFIG_PROC_FS
++static int c_show(struct seq_file *m, void *v)
++{
++ unsigned int icache_size, dcache_size;
++ unsigned int cpu = smp_processor_id();
++
++ icache_size = boot_cpu_data.icache.ways *
++ boot_cpu_data.icache.sets *
++ boot_cpu_data.icache.linesz;
++ dcache_size = boot_cpu_data.dcache.ways *
++ boot_cpu_data.dcache.sets *
++ boot_cpu_data.dcache.linesz;
++
++ seq_printf(m, "processor\t: %d\n", cpu);
++
++ if (boot_cpu_data.arch_type < NR_ARCH_NAMES)
++ seq_printf(m, "cpu family\t: %s revision %d\n",
++ arch_names[boot_cpu_data.arch_type],
++ boot_cpu_data.arch_revision);
++ if (boot_cpu_data.cpu_type < NR_CPU_NAMES)
++ seq_printf(m, "cpu type\t: %s revision %d\n",
++ cpu_names[boot_cpu_data.cpu_type],
++ boot_cpu_data.cpu_revision);
++
++ seq_printf(m, "i-cache\t\t: %dK (%u ways x %u sets x %u)\n",
++ icache_size >> 10,
++ boot_cpu_data.icache.ways,
++ boot_cpu_data.icache.sets,
++ boot_cpu_data.icache.linesz);
++ seq_printf(m, "d-cache\t\t: %dK (%u ways x %u sets x %u)\n",
++ dcache_size >> 10,
++ boot_cpu_data.dcache.ways,
++ boot_cpu_data.dcache.sets,
++ boot_cpu_data.dcache.linesz);
++ seq_printf(m, "bogomips\t: %lu.%02lu\n",
++ boot_cpu_data.loops_per_jiffy / (500000/HZ),
++ (boot_cpu_data.loops_per_jiffy / (5000/HZ)) % 100);
++
++ return 0;
++}
++
++static void *c_start(struct seq_file *m, loff_t *pos)
++{
++ return *pos < 1 ? (void *)1 : NULL;
++}
++
++static void *c_next(struct seq_file *m, void *v, loff_t *pos)
++{
++ ++*pos;
++ return NULL;
++}
++
++static void c_stop(struct seq_file *m, void *v)
++{
++
++}
++
++struct seq_operations cpuinfo_op = {
++ .start = c_start,
++ .next = c_next,
++ .stop = c_stop,
++ .show = c_show
++};
++#endif /* CONFIG_PROC_FS */
+Index: linux-2.6.18-avr32/arch/avr32/kernel/entry-avr32b.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/entry-avr32b.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,678 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++/*
++ * This file contains the low-level entry-points into the kernel, that is,
++ * exception handlers, debug trap handlers, interrupt handlers and the
++ * system call handler.
++ */
++#include <linux/errno.h>
++
++#include <asm/asm.h>
++#include <asm/hardirq.h>
++#include <asm/irq.h>
++#include <asm/ocd.h>
++#include <asm/page.h>
++#include <asm/pgtable.h>
++#include <asm/ptrace.h>
++#include <asm/sysreg.h>
++#include <asm/thread_info.h>
++#include <asm/unistd.h>
++
++#ifdef CONFIG_PREEMPT
++# define preempt_stop mask_interrupts
++#else
++# define preempt_stop
++# define fault_resume_kernel fault_restore_all
++#endif
++
++#define __MASK(x) ((1 << (x)) - 1)
++#define IRQ_MASK ((__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) | \
++ (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT))
++
++ .section .ex.text,"ax",@progbits
++ .align 2
++exception_vectors:
++ bral handle_critical
++ .align 2
++ bral handle_critical
++ .align 2
++ bral do_bus_error_write
++ .align 2
++ bral do_bus_error_read
++ .align 2
++ bral do_nmi_ll
++ .align 2
++ bral handle_address_fault
++ .align 2
++ bral handle_protection_fault
++ .align 2
++ bral handle_debug
++ .align 2
++ bral do_illegal_opcode_ll
++ .align 2
++ bral do_illegal_opcode_ll
++ .align 2
++ bral do_illegal_opcode_ll
++ .align 2
++ bral do_fpe_ll
++ .align 2
++ bral do_illegal_opcode_ll
++ .align 2
++ bral handle_address_fault
++ .align 2
++ bral handle_address_fault
++ .align 2
++ bral handle_protection_fault
++ .align 2
++ bral handle_protection_fault
++ .align 2
++ bral do_dtlb_modified
++
++ /*
++ * r0 : PGD/PT/PTE
++ * r1 : Offending address
++ * r2 : Scratch register
++ * r3 : Cause (5, 12 or 13)
++ */
++#define tlbmiss_save pushm r0-r3
++#define tlbmiss_restore popm r0-r3
++
++ .section .tlbx.ex.text,"ax",@progbits
++ .global itlb_miss
++itlb_miss:
++ tlbmiss_save
++ rjmp tlb_miss_common
++
++ .section .tlbr.ex.text,"ax",@progbits
++dtlb_miss_read:
++ tlbmiss_save
++ rjmp tlb_miss_common
++
++ .section .tlbw.ex.text,"ax",@progbits
++dtlb_miss_write:
++ tlbmiss_save
++
++ .global tlb_miss_common
++tlb_miss_common:
++ mfsr r0, SYSREG_PTBR
++ mfsr r1, SYSREG_TLBEAR
++
++ /* Is it the vmalloc space? */
++ bld r1, 31
++ brcs handle_vmalloc_miss
++
++ /* First level lookup */
++pgtbl_lookup:
++ lsr r2, r1, PGDIR_SHIFT
++ ld.w r0, r0[r2 << 2]
++ bld r0, _PAGE_BIT_PRESENT
++ brcc page_table_not_present
++
++ /* TODO: Check access rights on page table if necessary */
++
++ /* Translate to virtual address in P1. */
++ andl r0, 0xf000
++ sbr r0, 31
++
++ /* Second level lookup */
++ lsl r1, (32 - PGDIR_SHIFT)
++ lsr r1, (32 - PGDIR_SHIFT) + PAGE_SHIFT
++ add r2, r0, r1 << 2
++ ld.w r1, r2[0]
++ bld r1, _PAGE_BIT_PRESENT
++ brcc page_not_present
++
++ /* Mark the page as accessed */
++ sbr r1, _PAGE_BIT_ACCESSED
++ st.w r2[0], r1
++
++ /* Drop software flags */
++ andl r1, _PAGE_FLAGS_HARDWARE_MASK & 0xffff
++ mtsr SYSREG_TLBELO, r1
++
++ /* Figure out which entry we want to replace */
++ mfsr r0, SYSREG_TLBARLO
++ clz r2, r0
++ brcc 1f
++ mov r1, -1 /* All entries have been accessed, */
++ mtsr SYSREG_TLBARLO, r1 /* so reset TLBAR */
++ mov r2, 0 /* and start at 0 */
++1: mfsr r1, SYSREG_MMUCR
++ lsl r2, 14
++ andl r1, 0x3fff, COH
++ or r1, r2
++ mtsr SYSREG_MMUCR, r1
++
++ tlbw
++
++ tlbmiss_restore
++ rete
++
++handle_vmalloc_miss:
++ /* Simply do the lookup in init's page table */
++ mov r0, lo(swapper_pg_dir)
++ orh r0, hi(swapper_pg_dir)
++ rjmp pgtbl_lookup
++
++
++ /* --- System Call --- */
++
++ .section .scall.text,"ax",@progbits
++system_call:
++ pushm r12 /* r12_orig */
++ stmts --sp, r0-lr
++ zero_fp
++ mfsr r0, SYSREG_RAR_SUP
++ mfsr r1, SYSREG_RSR_SUP
++ stm --sp, r0-r1
++
++ /* check for syscall tracing */
++ get_thread_info r0
++ ld.w r1, r0[TI_flags]
++ bld r1, TIF_SYSCALL_TRACE
++ brcs syscall_trace_enter
++
++syscall_trace_cont:
++ cp.w r8, NR_syscalls
++ brhs syscall_badsys
++
++ lddpc lr, syscall_table_addr
++ ld.w lr, lr[r8 << 2]
++ mov r8, r5 /* 5th argument (6th is pushed by stub) */
++ icall lr
++
++ .global syscall_return
++syscall_return:
++ get_thread_info r0
++ mask_interrupts /* make sure we don't miss an interrupt
++ setting need_resched or sigpending
++ between sampling and the rets */
++
++ /* Store the return value so that the correct value is loaded below */
++ stdsp sp[REG_R12], r12
++
++ ld.w r1, r0[TI_flags]
++ andl r1, _TIF_ALLWORK_MASK, COH
++ brne syscall_exit_work
++
++syscall_exit_cont:
++ popm r8-r9
++ mtsr SYSREG_RAR_SUP, r8
++ mtsr SYSREG_RSR_SUP, r9
++ ldmts sp++, r0-lr
++ sub sp, -4 /* r12_orig */
++ rets
++
++ .align 2
++syscall_table_addr:
++ .long sys_call_table
++
++syscall_badsys:
++ mov r12, -ENOSYS
++ rjmp syscall_return
++
++ .global ret_from_fork
++ret_from_fork:
++ rcall schedule_tail
++
++ /* check for syscall tracing */
++ get_thread_info r0
++ ld.w r1, r0[TI_flags]
++ andl r1, _TIF_ALLWORK_MASK, COH
++ brne syscall_exit_work
++ rjmp syscall_exit_cont
++
++syscall_trace_enter:
++ pushm r8-r12
++ rcall syscall_trace
++ popm r8-r12
++ rjmp syscall_trace_cont
++
++syscall_exit_work:
++ bld r1, TIF_SYSCALL_TRACE
++ brcc 1f
++ unmask_interrupts
++ rcall syscall_trace
++ mask_interrupts
++ ld.w r1, r0[TI_flags]
++
++1: bld r1, TIF_NEED_RESCHED
++ brcc 2f
++ unmask_interrupts
++ rcall schedule
++ mask_interrupts
++ ld.w r1, r0[TI_flags]
++ rjmp 1b
++
++2: mov r2, _TIF_SIGPENDING | _TIF_RESTORE_SIGMASK
++ tst r1, r2
++ breq 3f
++ unmask_interrupts
++ mov r12, sp
++ mov r11, r0
++ rcall do_notify_resume
++ mask_interrupts
++ ld.w r1, r0[TI_flags]
++ rjmp 1b
++
++3: bld r1, TIF_BREAKPOINT
++ brcc syscall_exit_cont
++ mfsr r3, SYSREG_TLBEHI
++ lddsp r2, sp[REG_PC]
++ andl r3, 0xff, COH
++ lsl r3, 1
++ sbr r3, 30
++ sbr r3, 0
++ mtdr DBGREG_BWA2A, r2
++ mtdr DBGREG_BWC2A, r3
++ rjmp syscall_exit_cont
++
++
++ /* The slow path of the TLB miss handler */
++page_table_not_present:
++page_not_present:
++ tlbmiss_restore
++ sub sp, 4
++ stmts --sp, r0-lr
++ rcall save_full_context_ex
++ mfsr r12, SYSREG_ECR
++ mov r11, sp
++ rcall do_page_fault
++ rjmp ret_from_exception
++
++ /* This function expects to find offending PC in SYSREG_RAR_EX */
++save_full_context_ex:
++ mfsr r8, SYSREG_RSR_EX
++ mov r12, r8
++ andh r8, (MODE_MASK >> 16), COH
++ mfsr r11, SYSREG_RAR_EX
++ brne 2f
++
++1: pushm r11, r12 /* PC and SR */
++ unmask_exceptions
++ ret r12
++
++2: sub r10, sp, -(FRAME_SIZE_FULL - REG_LR)
++ stdsp sp[4], r10 /* replace saved SP */
++ rjmp 1b
++
++ /* Low-level exception handlers */
++handle_critical:
++ pushm r12
++ pushm r0-r12
++ rcall save_full_context_ex
++ mfsr r12, SYSREG_ECR
++ mov r11, sp
++ rcall do_critical_exception
++
++ /* We should never get here... */
++bad_return:
++ sub r12, pc, (. - 1f)
++ bral panic
++ .align 2
++1: .asciz "Return from critical exception!"
++
++ .align 1
++do_bus_error_write:
++ sub sp, 4
++ stmts --sp, r0-lr
++ rcall save_full_context_ex
++ mov r11, 1
++ rjmp 1f
++
++do_bus_error_read:
++ sub sp, 4
++ stmts --sp, r0-lr
++ rcall save_full_context_ex
++ mov r11, 0
++1: mfsr r12, SYSREG_BEAR
++ mov r10, sp
++ rcall do_bus_error
++ rjmp ret_from_exception
++
++ .align 1
++do_nmi_ll:
++ sub sp, 4
++ stmts --sp, r0-lr
++ /* FIXME: Make sure RAR_NMI and RSR_NMI are pushed instead of *_EX */
++ rcall save_full_context_ex
++ mfsr r12, SYSREG_ECR
++ mov r11, sp
++ rcall do_nmi
++ rjmp bad_return
++
++handle_address_fault:
++ sub sp, 4
++ stmts --sp, r0-lr
++ rcall save_full_context_ex
++ mfsr r12, SYSREG_ECR
++ mov r11, sp
++ rcall do_address_exception
++ rjmp ret_from_exception
++
++handle_protection_fault:
++ sub sp, 4
++ stmts --sp, r0-lr
++ rcall save_full_context_ex
++ mfsr r12, SYSREG_ECR
++ mov r11, sp
++ rcall do_page_fault
++ rjmp ret_from_exception
++
++ .align 1
++do_illegal_opcode_ll:
++ sub sp, 4
++ stmts --sp, r0-lr
++ rcall save_full_context_ex
++ mfsr r12, SYSREG_ECR
++ mov r11, sp
++ rcall do_illegal_opcode
++ rjmp ret_from_exception
++
++do_dtlb_modified:
++ pushm r0-r3
++ mfsr r1, SYSREG_TLBEAR
++ mfsr r0, SYSREG_PTBR
++ lsr r2, r1, PGDIR_SHIFT
++ ld.w r0, r0[r2 << 2]
++ lsl r1, (32 - PGDIR_SHIFT)
++ lsr r1, (32 - PGDIR_SHIFT) + PAGE_SHIFT
++
++ /* Translate to virtual address in P1 */
++ andl r0, 0xf000
++ sbr r0, 31
++ add r2, r0, r1 << 2
++ ld.w r3, r2[0]
++ sbr r3, _PAGE_BIT_DIRTY
++ mov r0, r3
++ st.w r2[0], r3
++
++ /* The page table is up-to-date. Update the TLB entry as well */
++ andl r0, lo(_PAGE_FLAGS_HARDWARE_MASK)
++ mtsr SYSREG_TLBELO, r0
++
++ /* MMUCR[DRP] is updated automatically, so let's go... */
++ tlbw
++
++ popm r0-r3
++ rete
++
++do_fpe_ll:
++ sub sp, 4
++ stmts --sp, r0-lr
++ rcall save_full_context_ex
++ unmask_interrupts
++ mov r12, 26
++ mov r11, sp
++ rcall do_fpe
++ rjmp ret_from_exception
++
++ret_from_exception:
++ mask_interrupts
++ lddsp r4, sp[REG_SR]
++ andh r4, (MODE_MASK >> 16), COH
++ brne fault_resume_kernel
++
++ get_thread_info r0
++ ld.w r1, r0[TI_flags]
++ andl r1, _TIF_WORK_MASK, COH
++ brne fault_exit_work
++
++fault_resume_user:
++ popm r8-r9
++ mask_exceptions
++ mtsr SYSREG_RAR_EX, r8
++ mtsr SYSREG_RSR_EX, r9
++ ldmts sp++, r0-lr
++ sub sp, -4
++ rete
++
++fault_resume_kernel:
++#ifdef CONFIG_PREEMPT
++ get_thread_info r0
++ ld.w r2, r0[TI_preempt_count]
++ cp.w r2, 0
++ brne 1f
++ ld.w r1, r0[TI_flags]
++ bld r1, TIF_NEED_RESCHED
++ brcc 1f
++ lddsp r4, sp[REG_SR]
++ bld r4, SYSREG_GM_OFFSET
++ brcs 1f
++ rcall preempt_schedule_irq
++1:
++#endif
++
++ popm r8-r9
++ mask_exceptions
++ mfsr r1, SYSREG_SR
++ mtsr SYSREG_RAR_EX, r8
++ mtsr SYSREG_RSR_EX, r9
++ popm lr
++ sub sp, -4 /* ignore SP */
++ popm r0-r12
++ sub sp, -4 /* ignore r12_orig */
++ rete
++
++irq_exit_work:
++ /* Switch to exception mode so that we can share the same code. */
++ mfsr r8, SYSREG_SR
++ cbr r8, SYSREG_M0_OFFSET
++ orh r8, hi(SYSREG_BIT(M1) | SYSREG_BIT(M2))
++ mtsr SYSREG_SR, r8
++ sub pc, -2
++ get_thread_info r0
++ ld.w r1, r0[TI_flags]
++
++fault_exit_work:
++ bld r1, TIF_NEED_RESCHED
++ brcc 1f
++ unmask_interrupts
++ rcall schedule
++ mask_interrupts
++ ld.w r1, r0[TI_flags]
++ rjmp fault_exit_work
++
++1: mov r2, _TIF_SIGPENDING | _TIF_RESTORE_SIGMASK
++ tst r1, r2
++ breq 2f
++ unmask_interrupts
++ mov r12, sp
++ mov r11, r0
++ rcall do_notify_resume
++ mask_interrupts
++ ld.w r1, r0[TI_flags]
++ rjmp fault_exit_work
++
++2: bld r1, TIF_BREAKPOINT
++ brcc fault_resume_user
++ mfsr r3, SYSREG_TLBEHI
++ lddsp r2, sp[REG_PC]
++ andl r3, 0xff, COH
++ lsl r3, 1
++ sbr r3, 30
++ sbr r3, 0
++ mtdr DBGREG_BWA2A, r2
++ mtdr DBGREG_BWC2A, r3
++ rjmp fault_resume_user
++
++ /* If we get a debug trap from privileged context we end up here */
++handle_debug_priv:
++ /* Fix up LR and SP in regs. r11 contains the mode we came from */
++ mfsr r8, SYSREG_SR
++ mov r9, r8
++ andh r8, hi(~MODE_MASK)
++ or r8, r11
++ mtsr SYSREG_SR, r8
++ sub pc, -2
++ stdsp sp[REG_LR], lr
++ mtsr SYSREG_SR, r9
++ sub pc, -2
++ sub r10, sp, -FRAME_SIZE_FULL
++ stdsp sp[REG_SP], r10
++ mov r12, sp
++ rcall do_debug_priv
++
++ /* Now, put everything back */
++ ssrf SR_EM_BIT
++ popm r10, r11
++ mtsr SYSREG_RAR_DBG, r10
++ mtsr SYSREG_RSR_DBG, r11
++ mfsr r8, SYSREG_SR
++ mov r9, r8
++ andh r8, hi(~MODE_MASK)
++ andh r11, hi(MODE_MASK)
++ or r8, r11
++ mtsr SYSREG_SR, r8
++ sub pc, -2
++ popm lr
++ mtsr SYSREG_SR, r9
++ sub pc, -2
++ sub sp, -4 /* skip SP */
++ popm r0-r12
++ sub sp, -4
++ retd
++
++ /*
++ * At this point, everything is masked, that is, interrupts,
++ * exceptions and debugging traps. We might get called from
++ * interrupt or exception context in some rare cases, but this
++ * will be taken care of by do_debug(), so we're not going to
++ * do a 100% correct context save here.
++ */
++handle_debug:
++ sub sp, 4 /* r12_orig */
++ stmts --sp, r0-lr
++ mfsr r10, SYSREG_RAR_DBG
++ mfsr r11, SYSREG_RSR_DBG
++ unmask_exceptions
++ pushm r10,r11
++ andh r11, (MODE_MASK >> 16), COH
++ brne handle_debug_priv
++
++ mov r12, sp
++ rcall do_debug
++
++ lddsp r10, sp[REG_SR]
++ andh r10, (MODE_MASK >> 16), COH
++ breq debug_resume_user
++
++debug_restore_all:
++ popm r10,r11
++ mask_exceptions
++ mtsr SYSREG_RSR_DBG, r11
++ mtsr SYSREG_RAR_DBG, r10
++ ldmts sp++, r0-lr
++ sub sp, -4
++ retd
++
++debug_resume_user:
++ get_thread_info r0
++ mask_interrupts
++
++ ld.w r1, r0[TI_flags]
++ andl r1, _TIF_DBGWORK_MASK, COH
++ breq debug_restore_all
++
++1: bld r1, TIF_NEED_RESCHED
++ brcc 2f
++ unmask_interrupts
++ rcall schedule
++ mask_interrupts
++ ld.w r1, r0[TI_flags]
++ rjmp 1b
++
++2: mov r2, _TIF_SIGPENDING | _TIF_RESTORE_SIGMASK
++ tst r1, r2
++ breq 3f
++ unmask_interrupts
++ mov r12, sp
++ mov r11, r0
++ rcall do_notify_resume
++ mask_interrupts
++ ld.w r1, r0[TI_flags]
++ rjmp 1b
++
++3: bld r1, TIF_SINGLE_STEP
++ brcc debug_restore_all
++ mfdr r2, DBGREG_DC
++ sbr r2, DC_SS_BIT
++ mtdr DBGREG_DC, r2
++ rjmp debug_restore_all
++
++ .set rsr_int0, SYSREG_RSR_INT0
++ .set rsr_int1, SYSREG_RSR_INT1
++ .set rsr_int2, SYSREG_RSR_INT2
++ .set rsr_int3, SYSREG_RSR_INT3
++ .set rar_int0, SYSREG_RAR_INT0
++ .set rar_int1, SYSREG_RAR_INT1
++ .set rar_int2, SYSREG_RAR_INT2
++ .set rar_int3, SYSREG_RAR_INT3
++
++ .macro IRQ_LEVEL level
++ .type irq_level\level, @function
++irq_level\level:
++ sub sp, 4 /* r12_orig */
++ stmts --sp,r0-lr
++ mfsr r8, rar_int\level
++ mfsr r9, rsr_int\level
++ pushm r8-r9
++
++ mov r11, sp
++ mov r12, \level
++
++ rcall do_IRQ
++
++ lddsp r4, sp[REG_SR]
++ andh r4, (MODE_MASK >> 16), COH
++#ifdef CONFIG_PREEMPT
++ brne 2f
++#else
++ brne 1f
++#endif
++
++ get_thread_info r0
++ ld.w r1, r0[TI_flags]
++ andl r1, _TIF_WORK_MASK, COH
++ brne irq_exit_work
++
++1: popm r8-r9
++ mtsr rar_int\level, r8
++ mtsr rsr_int\level, r9
++ ldmts sp++,r0-lr
++ sub sp, -4 /* ignore r12_orig */
++ rete
++
++#ifdef CONFIG_PREEMPT
++2:
++ get_thread_info r0
++ ld.w r2, r0[TI_preempt_count]
++ cp.w r2, 0
++ brne 1b
++ ld.w r1, r0[TI_flags]
++ bld r1, TIF_NEED_RESCHED
++ brcc 1b
++ lddsp r4, sp[REG_SR]
++ bld r4, SYSREG_GM_OFFSET
++ brcs 1b
++ rcall preempt_schedule_irq
++ rjmp 1b
++#endif
++ .endm
++
++ .section .irq.text,"ax",@progbits
++
++ .global irq_level0
++ .global irq_level1
++ .global irq_level2
++ .global irq_level3
++ IRQ_LEVEL 0
++ IRQ_LEVEL 1
++ IRQ_LEVEL 2
++ IRQ_LEVEL 3
+Index: linux-2.6.18-avr32/arch/avr32/kernel/head.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/head.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,42 @@
++/*
++ * Non-board-specific low-level startup code
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/linkage.h>
++
++#include <asm/page.h>
++#include <asm/thread_info.h>
++#include <asm/sysreg.h>
++
++ .section .init.text,"ax"
++ .global kernel_entry
++kernel_entry:
++ /* Initialize status register */
++ lddpc r0, init_sr
++ mtsr SYSREG_SR, r0
++
++ /* Set initial stack pointer */
++ lddpc sp, stack_addr
++ sub sp, -THREAD_SIZE
++
++#ifdef CONFIG_FRAME_POINTER
++ /* Mark last stack frame */
++ mov lr, 0
++ mov r7, 0
++#endif
++
++ /* Start the show */
++ lddpc pc, kernel_start_addr
++
++ .align 2
++init_sr:
++ .long 0x007f0000 /* Supervisor mode, everything masked */
++stack_addr:
++ .long init_thread_union
++kernel_start_addr:
++ .long start_kernel
+Index: linux-2.6.18-avr32/arch/avr32/kernel/init_task.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/init_task.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,38 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/fs.h>
++#include <linux/sched.h>
++#include <linux/init_task.h>
++#include <linux/mqueue.h>
++
++#include <asm/pgtable.h>
++
++static struct fs_struct init_fs = INIT_FS;
++static struct files_struct init_files = INIT_FILES;
++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);
++
++/*
++ * Initial thread structure. Must be aligned on an 8192-byte boundary.
++ */
++union thread_union init_thread_union
++ __attribute__((__section__(".data.init_task"))) =
++ { INIT_THREAD_INFO(init_task) };
++
++/*
++ * Initial task structure.
++ *
++ * All other task structs will be allocated on slabs in fork.c
++ */
++struct task_struct init_task = INIT_TASK(init_task);
++
++EXPORT_SYMBOL(init_task);
+Index: linux-2.6.18-avr32/arch/avr32/kernel/irq.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/irq.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,71 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * Based on arch/i386/kernel/irq.c
++ * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar
++ *
++ * 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.
++ *
++ * This file contains the code used by various IRQ handling routines:
++ * asking for different IRQ's should be done through these routines
++ * instead of just grabbing them. Thus setups with different IRQ numbers
++ * shouldn't result in any weird surprises, and installing new handlers
++ * should be easier.
++ *
++ * IRQ's are in fact implemented a bit like signal handlers for the kernel.
++ * Naturally it's not a 1:1 relation, but there are similarities.
++ */
++
++#include <linux/interrupt.h>
++#include <linux/irq.h>
++#include <linux/kernel_stat.h>
++#include <linux/proc_fs.h>
++#include <linux/seq_file.h>
++#include <linux/sysdev.h>
++
++/*
++ * '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("unexpected IRQ %u\n", irq);
++}
++
++#ifdef CONFIG_PROC_FS
++int show_interrupts(struct seq_file *p, void *v)
++{
++ int i = *(loff_t *)v, cpu;
++ struct irqaction *action;
++ unsigned long flags;
++
++ if (i == 0) {
++ seq_puts(p, " ");
++ for_each_online_cpu(cpu)
++ seq_printf(p, "CPU%d ", cpu);
++ seq_putc(p, '\n');
++ }
++
++ if (i < NR_IRQS) {
++ spin_lock_irqsave(&irq_desc[i].lock, flags);
++ action = irq_desc[i].action;
++ if (!action)
++ goto unlock;
++
++ seq_printf(p, "%3d: ", i);
++ for_each_online_cpu(cpu)
++ seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]);
++ seq_printf(p, " %s", action->name);
++ for (action = action->next; action; action = action->next)
++ seq_printf(p, ", %s", action->name);
++
++ seq_putc(p, '\n');
++ unlock:
++ spin_unlock_irqrestore(&irq_desc[i].lock, flags);
++ }
++
++ return 0;
++}
++#endif
+Index: linux-2.6.18-avr32/arch/avr32/kernel/kprobes.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/kprobes.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,270 @@
++/*
++ * Kernel Probes (KProbes)
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * Based on arch/ppc64/kernel/kprobes.c
++ * Copyright (C) IBM Corporation, 2002, 2004
++ *
++ * 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/kprobes.h>
++#include <linux/ptrace.h>
++
++#include <asm/cacheflush.h>
++#include <asm/kdebug.h>
++#include <asm/ocd.h>
++
++DEFINE_PER_CPU(struct kprobe *, current_kprobe);
++static unsigned long kprobe_status;
++static struct pt_regs jprobe_saved_regs;
++
++int __kprobes arch_prepare_kprobe(struct kprobe *p)
++{
++ int ret = 0;
++
++ if ((unsigned long)p->addr & 0x01) {
++ printk("Attempt to register kprobe at an unaligned address\n");
++ ret = -EINVAL;
++ }
++
++ /* XXX: Might be a good idea to check if p->addr is a valid
++ * kernel address as well... */
++
++ if (!ret) {
++ pr_debug("copy kprobe at %p\n", p->addr);
++ memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t));
++ p->opcode = *p->addr;
++ }
++
++ return ret;
++}
++
++void __kprobes arch_arm_kprobe(struct kprobe *p)
++{
++ pr_debug("arming kprobe at %p\n", p->addr);
++ *p->addr = BREAKPOINT_INSTRUCTION;
++ flush_icache_range((unsigned long)p->addr,
++ (unsigned long)p->addr + sizeof(kprobe_opcode_t));
++}
++
++void __kprobes arch_disarm_kprobe(struct kprobe *p)
++{
++ pr_debug("disarming kprobe at %p\n", p->addr);
++ *p->addr = p->opcode;
++ flush_icache_range((unsigned long)p->addr,
++ (unsigned long)p->addr + sizeof(kprobe_opcode_t));
++}
++
++static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
++{
++ unsigned long dc;
++
++ pr_debug("preparing to singlestep over %p (PC=%08lx)\n",
++ p->addr, regs->pc);
++
++ BUG_ON(!(sysreg_read(SR) & SYSREG_BIT(SR_D)));
++
++ dc = __mfdr(DBGREG_DC);
++ dc |= DC_SS;
++ __mtdr(DBGREG_DC, dc);
++
++ /*
++ * We must run the instruction from its original location
++ * since it may actually reference PC.
++ *
++ * TODO: Do the instruction replacement directly in icache.
++ */
++ *p->addr = p->opcode;
++ flush_icache_range((unsigned long)p->addr,
++ (unsigned long)p->addr + sizeof(kprobe_opcode_t));
++}
++
++static void __kprobes resume_execution(struct kprobe *p, struct pt_regs *regs)
++{
++ unsigned long dc;
++
++ pr_debug("resuming execution at PC=%08lx\n", regs->pc);
++
++ dc = __mfdr(DBGREG_DC);
++ dc &= ~DC_SS;
++ __mtdr(DBGREG_DC, dc);
++
++ *p->addr = BREAKPOINT_INSTRUCTION;
++ flush_icache_range((unsigned long)p->addr,
++ (unsigned long)p->addr + sizeof(kprobe_opcode_t));
++}
++
++static void __kprobes set_current_kprobe(struct kprobe *p)
++{
++ __get_cpu_var(current_kprobe) = p;
++}
++
++static int __kprobes kprobe_handler(struct pt_regs *regs)
++{
++ struct kprobe *p;
++ void *addr = (void *)regs->pc;
++ int ret = 0;
++
++ pr_debug("kprobe_handler: kprobe_running=%p\n",
++ kprobe_running());
++
++ /*
++ * We don't want to be preempted for the entire
++ * duration of kprobe processing
++ */
++ preempt_disable();
++
++ /* Check that we're not recursing */
++ if (kprobe_running()) {
++ p = get_kprobe(addr);
++ if (p) {
++ if (kprobe_status == KPROBE_HIT_SS) {
++ printk("FIXME: kprobe hit while single-stepping!\n");
++ goto no_kprobe;
++ }
++
++ printk("FIXME: kprobe hit while handling another kprobe\n");
++ goto no_kprobe;
++ } else {
++ p = kprobe_running();
++ if (p->break_handler && p->break_handler(p, regs))
++ goto ss_probe;
++ }
++ /* If it's not ours, can't be delete race, (we hold lock). */
++ goto no_kprobe;
++ }
++
++ p = get_kprobe(addr);
++ if (!p)
++ goto no_kprobe;
++
++ kprobe_status = KPROBE_HIT_ACTIVE;
++ set_current_kprobe(p);
++ if (p->pre_handler && p->pre_handler(p, regs))
++ /* handler has already set things up, so skip ss setup */
++ return 1;
++
++ss_probe:
++ prepare_singlestep(p, regs);
++ kprobe_status = KPROBE_HIT_SS;
++ return 1;
++
++no_kprobe:
++ return ret;
++}
++
++static int __kprobes post_kprobe_handler(struct pt_regs *regs)
++{
++ struct kprobe *cur = kprobe_running();
++
++ pr_debug("post_kprobe_handler, cur=%p\n", cur);
++
++ if (!cur)
++ return 0;
++
++ if (cur->post_handler) {
++ kprobe_status = KPROBE_HIT_SSDONE;
++ cur->post_handler(cur, regs, 0);
++ }
++
++ resume_execution(cur, regs);
++ reset_current_kprobe();
++ preempt_enable_no_resched();
++
++ return 1;
++}
++
++static int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
++{
++ struct kprobe *cur = kprobe_running();
++
++ pr_debug("kprobe_fault_handler: trapnr=%d\n", trapnr);
++
++ if (cur->fault_handler && cur->fault_handler(cur, regs, trapnr))
++ return 1;
++
++ if (kprobe_status & KPROBE_HIT_SS) {
++ resume_execution(cur, regs);
++ preempt_enable_no_resched();
++ }
++ return 0;
++}
++
++/*
++ * Wrapper routine to for handling exceptions.
++ */
++int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
++ unsigned long val, void *data)
++{
++ struct die_args *args = (struct die_args *)data;
++ int ret = NOTIFY_DONE;
++
++ pr_debug("kprobe_exceptions_notify: val=%lu, data=%p\n",
++ val, data);
++
++ switch (val) {
++ case DIE_BREAKPOINT:
++ if (kprobe_handler(args->regs))
++ ret = NOTIFY_STOP;
++ break;
++ case DIE_SSTEP:
++ if (post_kprobe_handler(args->regs))
++ ret = NOTIFY_STOP;
++ break;
++ case DIE_FAULT:
++ if (kprobe_running()
++ && kprobe_fault_handler(args->regs, args->trapnr))
++ ret = NOTIFY_STOP;
++ break;
++ default:
++ break;
++ }
++
++ return ret;
++}
++
++int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs)
++{
++ struct jprobe *jp = container_of(p, struct jprobe, kp);
++
++ memcpy(&jprobe_saved_regs, regs, sizeof(struct pt_regs));
++
++ /*
++ * TODO: We should probably save some of the stack here as
++ * well, since gcc may pass arguments on the stack for certain
++ * functions (lots of arguments, large aggregates, varargs)
++ */
++
++ /* setup return addr to the jprobe handler routine */
++ regs->pc = (unsigned long)jp->entry;
++ return 1;
++}
++
++void __kprobes jprobe_return(void)
++{
++ asm volatile("breakpoint" ::: "memory");
++}
++
++int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
++{
++ /*
++ * FIXME - we should ideally be validating that we got here 'cos
++ * of the "trap" in jprobe_return() above, before restoring the
++ * saved regs...
++ */
++ memcpy(regs, &jprobe_saved_regs, sizeof(struct pt_regs));
++ return 1;
++}
++
++int __init arch_init_kprobes(void)
++{
++ printk("KPROBES: Enabling monitor mode (MM|DBE)...\n");
++ __mtdr(DBGREG_DC, DC_MM | DC_DBE);
++
++ /* TODO: Register kretprobe trampoline */
++ return 0;
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/module.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/module.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,324 @@
++/*
++ * AVR32-specific kernel module loader
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * GOT initialization parts are based on the s390 version
++ * Copyright (C) 2002, 2003 IBM Deutschland Entwicklung GmbH,
++ * IBM Corporation
++ *
++ * 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/moduleloader.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/elf.h>
++#include <linux/vmalloc.h>
++
++void *module_alloc(unsigned long size)
++{
++ if (size == 0)
++ return NULL;
++ return vmalloc(size);
++}
++
++void module_free(struct module *mod, void *module_region)
++{
++ vfree(mod->arch.syminfo);
++ mod->arch.syminfo = NULL;
++
++ vfree(module_region);
++ /* FIXME: if module_region == mod->init_region, trim exception
++ * table entries. */
++}
++
++static inline int check_rela(Elf32_Rela *rela, struct module *module,
++ char *strings, Elf32_Sym *symbols)
++{
++ struct mod_arch_syminfo *info;
++
++ info = module->arch.syminfo + ELF32_R_SYM(rela->r_info);
++ switch (ELF32_R_TYPE(rela->r_info)) {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW: /* mcall */
++ case R_AVR32_GOT16S: /* ld.w */
++ if (rela->r_addend != 0) {
++ printk(KERN_ERR
++ "GOT relocation against %s at offset %u with addend\n",
++ strings + symbols[ELF32_R_SYM(rela->r_info)].st_name,
++ rela->r_offset);
++ return -ENOEXEC;
++ }
++ if (info->got_offset == -1UL) {
++ info->got_offset = module->arch.got_size;
++ module->arch.got_size += sizeof(void *);
++ }
++ pr_debug("GOT[%3lu] %s\n", info->got_offset,
++ strings + symbols[ELF32_R_SYM(rela->r_info)].st_name);
++ break;
++ }
++
++ return 0;
++}
++
++int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs,
++ char *secstrings, struct module *module)
++{
++ Elf32_Shdr *symtab;
++ Elf32_Sym *symbols;
++ Elf32_Rela *rela;
++ char *strings;
++ int nrela, i, j;
++ int ret;
++
++ /* Find the symbol table */
++ symtab = NULL;
++ for (i = 0; i < hdr->e_shnum; i++)
++ switch (sechdrs[i].sh_type) {
++ case SHT_SYMTAB:
++ symtab = &sechdrs[i];
++ break;
++ }
++ if (!symtab) {
++ printk(KERN_ERR "module %s: no symbol table\n", module->name);
++ return -ENOEXEC;
++ }
++
++ /* Allocate room for one syminfo structure per symbol. */
++ module->arch.nsyms = symtab->sh_size / sizeof(Elf_Sym);
++ module->arch.syminfo = vmalloc(module->arch.nsyms
++ * sizeof(struct mod_arch_syminfo));
++ if (!module->arch.syminfo)
++ return -ENOMEM;
++
++ symbols = (void *)hdr + symtab->sh_offset;
++ strings = (void *)hdr + sechdrs[symtab->sh_link].sh_offset;
++ for (i = 0; i < module->arch.nsyms; i++) {
++ if (symbols[i].st_shndx == SHN_UNDEF &&
++ strcmp(strings + symbols[i].st_name,
++ "_GLOBAL_OFFSET_TABLE_") == 0)
++ /* "Define" it as absolute. */
++ symbols[i].st_shndx = SHN_ABS;
++ module->arch.syminfo[i].got_offset = -1UL;
++ module->arch.syminfo[i].got_initialized = 0;
++ }
++
++ /* Allocate GOT entries for symbols that need it. */
++ module->arch.got_size = 0;
++ for (i = 0; i < hdr->e_shnum; i++) {
++ if (sechdrs[i].sh_type != SHT_RELA)
++ continue;
++ nrela = sechdrs[i].sh_size / sizeof(Elf32_Rela);
++ rela = (void *)hdr + sechdrs[i].sh_offset;
++ for (j = 0; j < nrela; j++) {
++ ret = check_rela(rela + j, module,
++ strings, symbols);
++ if (ret)
++ goto out_free_syminfo;
++ }
++ }
++
++ /*
++ * Increase core size to make room for GOT and set start
++ * offset for GOT.
++ */
++ module->core_size = ALIGN(module->core_size, 4);
++ module->arch.got_offset = module->core_size;
++ module->core_size += module->arch.got_size;
++
++ return 0;
++
++out_free_syminfo:
++ vfree(module->arch.syminfo);
++ module->arch.syminfo = NULL;
++
++ return ret;
++}
++
++static inline int reloc_overflow(struct module *module, const char *reloc_name,
++ Elf32_Addr relocation)
++{
++ printk(KERN_ERR "module %s: Value %lx does not fit relocation %s\n",
++ module->name, (unsigned long)relocation, reloc_name);
++ return -ENOEXEC;
++}
++
++#define get_u16(loc) (*((uint16_t *)loc))
++#define put_u16(loc, val) (*((uint16_t *)loc) = (val))
++
++int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
++ unsigned int symindex, unsigned int relindex,
++ struct module *module)
++{
++ Elf32_Shdr *symsec = sechdrs + symindex;
++ Elf32_Shdr *relsec = sechdrs + relindex;
++ Elf32_Shdr *dstsec = sechdrs + relsec->sh_info;
++ Elf32_Rela *rel = (void *)relsec->sh_addr;
++ unsigned int i;
++ int ret = 0;
++
++ for (i = 0; i < relsec->sh_size / sizeof(Elf32_Rela); i++, rel++) {
++ struct mod_arch_syminfo *info;
++ Elf32_Sym *sym;
++ Elf32_Addr relocation;
++ uint32_t *location;
++ uint32_t value;
++
++ location = (void *)dstsec->sh_addr + rel->r_offset;
++ sym = (Elf32_Sym *)symsec->sh_addr + ELF32_R_SYM(rel->r_info);
++ relocation = sym->st_value + rel->r_addend;
++
++ info = module->arch.syminfo + ELF32_R_SYM(rel->r_info);
++
++ /* Initialize GOT entry if necessary */
++ switch (ELF32_R_TYPE(rel->r_info)) {
++ case R_AVR32_GOT32:
++ case R_AVR32_GOT16:
++ case R_AVR32_GOT8:
++ case R_AVR32_GOT21S:
++ case R_AVR32_GOT18SW:
++ case R_AVR32_GOT16S:
++ if (!info->got_initialized) {
++ Elf32_Addr *gotent;
++
++ gotent = (module->module_core
++ + module->arch.got_offset
++ + info->got_offset);
++ *gotent = relocation;
++ info->got_initialized = 1;
++ }
++
++ relocation = info->got_offset;
++ break;
++ }
++
++ switch (ELF32_R_TYPE(rel->r_info)) {
++ case R_AVR32_32:
++ case R_AVR32_32_CPENT:
++ *location = relocation;
++ break;
++ case R_AVR32_22H_PCREL:
++ relocation -= (Elf32_Addr)location;
++ if ((relocation & 0xffe00001) != 0
++ && (relocation & 0xffc00001) != 0xffc00000)
++ return reloc_overflow(module,
++ "R_AVR32_22H_PCREL",
++ relocation);
++ relocation >>= 1;
++
++ value = *location;
++ value = ((value & 0xe1ef0000)
++ | (relocation & 0xffff)
++ | ((relocation & 0x10000) << 4)
++ | ((relocation & 0x1e0000) << 8));
++ *location = value;
++ break;
++ case R_AVR32_11H_PCREL:
++ relocation -= (Elf32_Addr)location;
++ if ((relocation & 0xfffffc01) != 0
++ && (relocation & 0xfffff801) != 0xfffff800)
++ return reloc_overflow(module,
++ "R_AVR32_11H_PCREL",
++ relocation);
++ value = get_u16(location);
++ value = ((value & 0xf00c)
++ | ((relocation & 0x1fe) << 3)
++ | ((relocation & 0x600) >> 9));
++ put_u16(location, value);
++ break;
++ case R_AVR32_9H_PCREL:
++ relocation -= (Elf32_Addr)location;
++ if ((relocation & 0xffffff01) != 0
++ && (relocation & 0xfffffe01) != 0xfffffe00)
++ return reloc_overflow(module,
++ "R_AVR32_9H_PCREL",
++ relocation);
++ value = get_u16(location);
++ value = ((value & 0xf00f)
++ | ((relocation & 0x1fe) << 3));
++ put_u16(location, value);
++ break;
++ case R_AVR32_9UW_PCREL:
++ relocation -= ((Elf32_Addr)location) & 0xfffffffc;
++ if ((relocation & 0xfffffc03) != 0)
++ return reloc_overflow(module,
++ "R_AVR32_9UW_PCREL",
++ relocation);
++ value = get_u16(location);
++ value = ((value & 0xf80f)
++ | ((relocation & 0x1fc) << 2));
++ put_u16(location, value);
++ break;
++ case R_AVR32_GOTPC:
++ /*
++ * R6 = PC - (PC - GOT)
++ *
++ * At this point, relocation contains the
++ * value of PC. Just subtract the value of
++ * GOT, and we're done.
++ */
++ pr_debug("GOTPC: PC=0x%x, got_offset=0x%lx, core=0x%p\n",
++ relocation, module->arch.got_offset,
++ module->module_core);
++ relocation -= ((unsigned long)module->module_core
++ + module->arch.got_offset);
++ *location = relocation;
++ break;
++ case R_AVR32_GOT18SW:
++ if ((relocation & 0xfffe0003) != 0
++ && (relocation & 0xfffc0003) != 0xffff0000)
++ return reloc_overflow(module, "R_AVR32_GOT18SW",
++ relocation);
++ relocation >>= 2;
++ /* fall through */
++ case R_AVR32_GOT16S:
++ if ((relocation & 0xffff8000) != 0
++ && (relocation & 0xffff0000) != 0xffff0000)
++ return reloc_overflow(module, "R_AVR32_GOT16S",
++ relocation);
++ pr_debug("GOT reloc @ 0x%x -> %u\n",
++ rel->r_offset, relocation);
++ value = *location;
++ value = ((value & 0xffff0000)
++ | (relocation & 0xffff));
++ *location = value;
++ break;
++
++ default:
++ printk(KERN_ERR "module %s: Unknown relocation: %u\n",
++ module->name, ELF32_R_TYPE(rel->r_info));
++ return -ENOEXEC;
++ }
++ }
++
++ return ret;
++}
++
++int apply_relocate(Elf32_Shdr *sechdrs, const char *strtab,
++ unsigned int symindex, unsigned int relindex,
++ struct module *module)
++{
++ printk(KERN_ERR "module %s: REL relocations are not supported\n",
++ module->name);
++ return -ENOEXEC;
++}
++
++int module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs,
++ struct module *module)
++{
++ vfree(module->arch.syminfo);
++ module->arch.syminfo = NULL;
++
++ return 0;
++}
++
++void module_arch_cleanup(struct module *module)
++{
++
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/process.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/process.c 2006-12-04 12:05:20.000000000 +0100
+@@ -0,0 +1,283 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/sched.h>
++#include <linux/module.h>
++#include <linux/kallsyms.h>
++#include <linux/fs.h>
++#include <linux/ptrace.h>
++#include <linux/reboot.h>
++#include <linux/unistd.h>
++
++#include <asm/sysreg.h>
++#include <asm/ocd.h>
++
++void (*pm_power_off)(void) = NULL;
++EXPORT_SYMBOL(pm_power_off);
++
++/*
++ * This file handles the architecture-dependent parts of process handling..
++ */
++
++void cpu_idle(void)
++{
++ /* endless idle loop with no priority at all */
++ while (1) {
++ /* TODO: Enter sleep mode */
++ while (!need_resched())
++ cpu_relax();
++ preempt_enable_no_resched();
++ schedule();
++ preempt_disable();
++ }
++}
++
++void machine_halt(void)
++{
++ /*
++ * Enter Stop mode. The 32 kHz oscillator will keep running so
++ * the RTC will keep the time properly and the system will
++ * boot quickly.
++ */
++ asm volatile("sleep 3\n\t"
++ "sub pc, -2");
++}
++
++void machine_power_off(void)
++{
++}
++
++void machine_restart(char *cmd)
++{
++ __mtdr(DBGREG_DC, DC_DBE);
++ __mtdr(DBGREG_DC, DC_RES);
++ while (1) ;
++}
++
++/*
++ * PC is actually discarded when returning from a system call -- the
++ * return address must be stored in LR. This function will make sure
++ * LR points to do_exit before starting the thread.
++ *
++ * Also, when returning from fork(), r12 is 0, so we must copy the
++ * argument as well.
++ *
++ * r0 : The argument to the main thread function
++ * r1 : The address of do_exit
++ * r2 : The address of the main thread function
++ */
++asmlinkage extern void kernel_thread_helper(void);
++__asm__(" .type kernel_thread_helper, @function\n"
++ "kernel_thread_helper:\n"
++ " mov r12, r0\n"
++ " mov lr, r2\n"
++ " mov pc, r1\n"
++ " .size kernel_thread_helper, . - kernel_thread_helper");
++
++int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
++{
++ struct pt_regs regs;
++
++ memset(&regs, 0, sizeof(regs));
++
++ regs.r0 = (unsigned long)arg;
++ regs.r1 = (unsigned long)fn;
++ regs.r2 = (unsigned long)do_exit;
++ regs.lr = (unsigned long)kernel_thread_helper;
++ regs.pc = (unsigned long)kernel_thread_helper;
++ regs.sr = MODE_SUPERVISOR;
++
++ return do_fork(flags | CLONE_VM | CLONE_UNTRACED,
++ 0, &regs, 0, NULL, NULL);
++}
++EXPORT_SYMBOL(kernel_thread);
++
++/*
++ * Free current thread data structures etc
++ */
++void exit_thread(void)
++{
++ /* nothing to do */
++}
++
++void flush_thread(void)
++{
++ /* nothing to do */
++}
++
++void release_thread(struct task_struct *dead_task)
++{
++ /* do nothing */
++}
++
++static const char *cpu_modes[] = {
++ "Application", "Supervisor", "Interrupt level 0", "Interrupt level 1",
++ "Interrupt level 2", "Interrupt level 3", "Exception", "NMI"
++};
++
++void show_regs(struct pt_regs *regs)
++{
++ unsigned long sp = regs->sp;
++ unsigned long lr = regs->lr;
++ unsigned long mode = (regs->sr & MODE_MASK) >> MODE_SHIFT;
++
++ if (!user_mode(regs))
++ sp = (unsigned long)regs + FRAME_SIZE_FULL;
++
++ print_symbol("PC is at %s\n", instruction_pointer(regs));
++ print_symbol("LR is at %s\n", lr);
++ printk("pc : [<%08lx>] lr : [<%08lx>] %s\n"
++ "sp : %08lx r12: %08lx r11: %08lx\n",
++ instruction_pointer(regs),
++ lr, print_tainted(), sp, regs->r12, regs->r11);
++ printk("r10: %08lx r9 : %08lx r8 : %08lx\n",
++ regs->r10, regs->r9, regs->r8);
++ printk("r7 : %08lx r6 : %08lx r5 : %08lx r4 : %08lx\n",
++ regs->r7, regs->r6, regs->r5, regs->r4);
++ printk("r3 : %08lx r2 : %08lx r1 : %08lx r0 : %08lx\n",
++ regs->r3, regs->r2, regs->r1, regs->r0);
++ printk("Flags: %c%c%c%c%c\n",
++ regs->sr & SR_Q ? 'Q' : 'q',
++ regs->sr & SR_V ? 'V' : 'v',
++ regs->sr & SR_N ? 'N' : 'n',
++ regs->sr & SR_Z ? 'Z' : 'z',
++ regs->sr & SR_C ? 'C' : 'c');
++ printk("Mode bits: %c%c%c%c%c%c%c%c%c\n",
++ regs->sr & SR_H ? 'H' : 'h',
++ regs->sr & SR_R ? 'R' : 'r',
++ regs->sr & SR_J ? 'J' : 'j',
++ regs->sr & SR_EM ? 'E' : 'e',
++ regs->sr & SR_I3M ? '3' : '.',
++ regs->sr & SR_I2M ? '2' : '.',
++ regs->sr & SR_I1M ? '1' : '.',
++ regs->sr & SR_I0M ? '0' : '.',
++ regs->sr & SR_GM ? 'G' : 'g');
++ printk("CPU Mode: %s\n", cpu_modes[mode]);
++
++ show_trace(NULL, (unsigned long *)sp, regs);
++}
++EXPORT_SYMBOL(show_regs);
++
++/* Fill in the fpu structure for a core dump. This is easy -- we don't have any */
++int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
++{
++ /* Not valid */
++ return 0;
++}
++
++asmlinkage void ret_from_fork(void);
++
++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;
++
++ childregs = ((struct pt_regs *)(THREAD_SIZE + (unsigned long)p->thread_info)) - 1;
++ *childregs = *regs;
++
++ if (user_mode(regs))
++ childregs->sp = usp;
++ else
++ childregs->sp = (unsigned long)p->thread_info + THREAD_SIZE;
++
++ childregs->r12 = 0; /* Set return value for child */
++
++ p->thread.cpu_context.sr = MODE_SUPERVISOR | SR_GM;
++ p->thread.cpu_context.ksp = (unsigned long)childregs;
++ p->thread.cpu_context.pc = (unsigned long)ret_from_fork;
++
++ return 0;
++}
++
++/* r12-r8 are dummy parameters to force the compiler to use the stack */
++asmlinkage int sys_fork(struct pt_regs *regs)
++{
++ return do_fork(SIGCHLD, regs->sp, regs, 0, NULL, NULL);
++}
++
++asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp,
++ unsigned long parent_tidptr,
++ unsigned long child_tidptr, struct pt_regs *regs)
++{
++ if (!newsp)
++ newsp = regs->sp;
++ return do_fork(clone_flags, newsp, regs, 0,
++ (int __user *)parent_tidptr,
++ (int __user *)child_tidptr);
++}
++
++asmlinkage int sys_vfork(struct pt_regs *regs)
++{
++ return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->sp, regs,
++ 0, NULL, NULL);
++}
++
++asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv,
++ char __user *__user *uenvp, struct pt_regs *regs)
++{
++ int error;
++ char *filename;
++
++ filename = getname(ufilename);
++ error = PTR_ERR(filename);
++ if (IS_ERR(filename))
++ goto out;
++
++ error = do_execve(filename, uargv, uenvp, regs);
++ if (error == 0)
++ current->ptrace &= ~PT_DTRACE;
++ putname(filename);
++
++out:
++ return error;
++}
++
++
++/*
++ * This function is supposed to answer the question "who called
++ * schedule()?"
++ */
++unsigned long get_wchan(struct task_struct *p)
++{
++ unsigned long pc;
++ unsigned long stack_page;
++
++ if (!p || p == current || p->state == TASK_RUNNING)
++ return 0;
++
++ stack_page = (unsigned long)p->thread_info;
++ BUG_ON(!stack_page);
++
++ /*
++ * The stored value of PC is either the address right after
++ * the call to __switch_to() or ret_from_fork.
++ */
++ pc = thread_saved_pc(p);
++ if (in_sched_functions(pc)) {
++#ifdef CONFIG_FRAME_POINTER
++ unsigned long fp = p->thread.cpu_context.r7;
++ BUG_ON(fp < stack_page || fp > (THREAD_SIZE + stack_page));
++ pc = *(unsigned long *)fp;
++#else
++ /*
++ * We depend on the frame size of schedule here, which
++ * is actually quite ugly. It might be possible to
++ * determine the frame size automatically at build
++ * time by doing this:
++ * - compile sched.c
++ * - disassemble the resulting sched.o
++ * - look for 'sub sp,??' shortly after '<schedule>:'
++ */
++ unsigned long sp = p->thread.cpu_context.ksp + 16;
++ BUG_ON(sp < stack_page || sp > (THREAD_SIZE + stack_page));
++ pc = *(unsigned long *)sp;
++#endif
++ }
++
++ return pc;
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/ptrace.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/ptrace.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,371 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#undef DEBUG
++#include <linux/kernel.h>
++#include <linux/sched.h>
++#include <linux/mm.h>
++#include <linux/smp_lock.h>
++#include <linux/ptrace.h>
++#include <linux/errno.h>
++#include <linux/user.h>
++#include <linux/security.h>
++#include <linux/unistd.h>
++#include <linux/notifier.h>
++
++#include <asm/traps.h>
++#include <asm/uaccess.h>
++#include <asm/ocd.h>
++#include <asm/mmu_context.h>
++#include <asm/kdebug.h>
++
++static struct pt_regs *get_user_regs(struct task_struct *tsk)
++{
++ return (struct pt_regs *)((unsigned long) tsk->thread_info +
++ THREAD_SIZE - sizeof(struct pt_regs));
++}
++
++static void ptrace_single_step(struct task_struct *tsk)
++{
++ pr_debug("ptrace_single_step: pid=%u, SR=0x%08lx\n",
++ tsk->pid, tsk->thread.cpu_context.sr);
++ if (!(tsk->thread.cpu_context.sr & SR_D)) {
++ /*
++ * Set a breakpoint at the current pc to force the
++ * process into debug mode. The syscall/exception
++ * exit code will set a breakpoint at the return
++ * address when this flag is set.
++ */
++ pr_debug("ptrace_single_step: Setting TIF_BREAKPOINT\n");
++ set_tsk_thread_flag(tsk, TIF_BREAKPOINT);
++ }
++
++ /* The monitor code will do the actual step for us */
++ set_tsk_thread_flag(tsk, TIF_SINGLE_STEP);
++}
++
++/*
++ * Called by kernel/ptrace.c when detaching
++ *
++ * Make sure any single step bits, etc. are not set
++ */
++void ptrace_disable(struct task_struct *child)
++{
++ clear_tsk_thread_flag(child, TIF_SINGLE_STEP);
++}
++
++/*
++ * Handle hitting a breakpoint
++ */
++static void ptrace_break(struct task_struct *tsk, struct pt_regs *regs)
++{
++ siginfo_t info;
++
++ info.si_signo = SIGTRAP;
++ info.si_errno = 0;
++ info.si_code = TRAP_BRKPT;
++ info.si_addr = (void __user *)instruction_pointer(regs);
++
++ pr_debug("ptrace_break: Sending SIGTRAP to PID %u (pc = 0x%p)\n",
++ tsk->pid, info.si_addr);
++ force_sig_info(SIGTRAP, &info, tsk);
++}
++
++/*
++ * Read the word at offset "offset" into the task's "struct user". We
++ * actually access the pt_regs struct stored on the kernel stack.
++ */
++static int ptrace_read_user(struct task_struct *tsk, unsigned long offset,
++ unsigned long __user *data)
++{
++ unsigned long *regs;
++ unsigned long value;
++
++ pr_debug("ptrace_read_user(%p, %#lx, %p)\n",
++ tsk, offset, data);
++
++ if (offset & 3 || offset >= sizeof(struct user)) {
++ printk("ptrace_read_user: invalid offset 0x%08lx\n", offset);
++ return -EIO;
++ }
++
++ regs = (unsigned long *)get_user_regs(tsk);
++
++ value = 0;
++ if (offset < sizeof(struct pt_regs))
++ value = regs[offset / sizeof(regs[0])];
++
++ return put_user(value, data);
++}
++
++/*
++ * Write the word "value" to offset "offset" into the task's "struct
++ * user". We actually access the pt_regs struct stored on the kernel
++ * stack.
++ */
++static int ptrace_write_user(struct task_struct *tsk, unsigned long offset,
++ unsigned long value)
++{
++ unsigned long *regs;
++
++ if (offset & 3 || offset >= sizeof(struct user)) {
++ printk("ptrace_write_user: invalid offset 0x%08lx\n", offset);
++ return -EIO;
++ }
++
++ if (offset >= sizeof(struct pt_regs))
++ return 0;
++
++ regs = (unsigned long *)get_user_regs(tsk);
++ regs[offset / sizeof(regs[0])] = value;
++
++ return 0;
++}
++
++static int ptrace_getregs(struct task_struct *tsk, void __user *uregs)
++{
++ struct pt_regs *regs = get_user_regs(tsk);
++
++ return copy_to_user(uregs, regs, sizeof(*regs)) ? -EFAULT : 0;
++}
++
++static int ptrace_setregs(struct task_struct *tsk, const void __user *uregs)
++{
++ struct pt_regs newregs;
++ int ret;
++
++ ret = -EFAULT;
++ if (copy_from_user(&newregs, uregs, sizeof(newregs)) == 0) {
++ struct pt_regs *regs = get_user_regs(tsk);
++
++ ret = -EINVAL;
++ if (valid_user_regs(&newregs)) {
++ *regs = newregs;
++ ret = 0;
++ }
++ }
++
++ return ret;
++}
++
++long arch_ptrace(struct task_struct *child, long request, long addr, long data)
++{
++ unsigned long tmp;
++ int ret;
++
++ pr_debug("arch_ptrace(%ld, %d, %#lx, %#lx)\n",
++ request, child->pid, addr, data);
++
++ pr_debug("ptrace: Enabling monitor mode...\n");
++ __mtdr(DBGREG_DC, __mfdr(DBGREG_DC) | DC_MM | DC_DBE);
++
++ switch (request) {
++ /* Read the word at location addr in the child process */
++ case PTRACE_PEEKTEXT:
++ case PTRACE_PEEKDATA:
++ ret = access_process_vm(child, addr, &tmp, sizeof(tmp), 0);
++ if (ret == sizeof(tmp))
++ ret = put_user(tmp, (unsigned long __user *)data);
++ else
++ ret = -EIO;
++ break;
++
++ case PTRACE_PEEKUSR:
++ ret = ptrace_read_user(child, addr,
++ (unsigned long __user *)data);
++ break;
++
++ /* Write the word in data at location addr */
++ case PTRACE_POKETEXT:
++ case PTRACE_POKEDATA:
++ ret = access_process_vm(child, addr, &data, sizeof(data), 1);
++ if (ret == sizeof(data))
++ ret = 0;
++ else
++ ret = -EIO;
++ break;
++
++ case PTRACE_POKEUSR:
++ ret = ptrace_write_user(child, addr, data);
++ break;
++
++ /* continue and stop at next (return from) syscall */
++ case PTRACE_SYSCALL:
++ /* restart after signal */
++ case PTRACE_CONT:
++ ret = -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;
++ /* XXX: Are we sure no breakpoints are active here? */
++ wake_up_process(child);
++ ret = 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:
++ ret = 0;
++ if (child->exit_state == EXIT_ZOMBIE)
++ break;
++ child->exit_code = SIGKILL;
++ wake_up_process(child);
++ break;
++
++ /*
++ * execute single instruction.
++ */
++ case PTRACE_SINGLESTEP:
++ ret = -EIO;
++ if (!valid_signal(data))
++ break;
++ clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
++ ptrace_single_step(child);
++ child->exit_code = data;
++ wake_up_process(child);
++ ret = 0;
++ break;
++
++ /* Detach a process that was attached */
++ case PTRACE_DETACH:
++ ret = ptrace_detach(child, data);
++ break;
++
++ case PTRACE_GETREGS:
++ ret = ptrace_getregs(child, (void __user *)data);
++ break;
++
++ case PTRACE_SETREGS:
++ ret = ptrace_setregs(child, (const void __user *)data);
++ break;
++
++ default:
++ ret = ptrace_request(child, request, addr, data);
++ break;
++ }
++
++ pr_debug("sys_ptrace returning %d (DC = 0x%08lx)\n", ret, __mfdr(DBGREG_DC));
++ return ret;
++}
++
++asmlinkage void syscall_trace(void)
++{
++ pr_debug("syscall_trace called\n");
++ if (!test_thread_flag(TIF_SYSCALL_TRACE))
++ return;
++ if (!(current->ptrace & PT_PTRACED))
++ return;
++
++ pr_debug("syscall_trace: notifying parent\n");
++ /* The 0x80 provides a way for the tracing parent to
++ * distinguish between a syscall stop and SIGTRAP delivery */
++ ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
++ ? 0x80 : 0));
++
++ /*
++ * this isn't the same as continuing with a signal, but it
++ * will do for normal use. strace only continues with a
++ * signal if the stopping signal is not SIGTRAP. -brl
++ */
++ if (current->exit_code) {
++ pr_debug("syscall_trace: sending signal %d to PID %u\n",
++ current->exit_code, current->pid);
++ send_sig(current->exit_code, current, 1);
++ current->exit_code = 0;
++ }
++}
++
++asmlinkage void do_debug_priv(struct pt_regs *regs)
++{
++ unsigned long dc, ds;
++ unsigned long die_val;
++
++ ds = __mfdr(DBGREG_DS);
++
++ pr_debug("do_debug_priv: pc = %08lx, ds = %08lx\n", regs->pc, ds);
++
++ if (ds & DS_SSS)
++ die_val = DIE_SSTEP;
++ else
++ die_val = DIE_BREAKPOINT;
++
++ if (notify_die(die_val, regs, 0, SIGTRAP) == NOTIFY_STOP)
++ return;
++
++ if (likely(ds & DS_SSS)) {
++ extern void itlb_miss(void);
++ extern void tlb_miss_common(void);
++ struct thread_info *ti;
++
++ dc = __mfdr(DBGREG_DC);
++ dc &= ~DC_SS;
++ __mtdr(DBGREG_DC, dc);
++
++ ti = current_thread_info();
++ ti->flags |= _TIF_BREAKPOINT;
++
++ /* The TLB miss handlers don't check thread flags */
++ if ((regs->pc >= (unsigned long)&itlb_miss)
++ && (regs->pc <= (unsigned long)&tlb_miss_common)) {
++ __mtdr(DBGREG_BWA2A, sysreg_read(RAR_EX));
++ __mtdr(DBGREG_BWC2A, 0x40000001 | (get_asid() << 1));
++ }
++
++ /*
++ * If we're running in supervisor mode, the breakpoint
++ * will take us where we want directly, no need to
++ * single step.
++ */
++ if ((regs->sr & MODE_MASK) != MODE_SUPERVISOR)
++ ti->flags |= TIF_SINGLE_STEP;
++ } else {
++ panic("Unable to handle debug trap at pc = %08lx\n",
++ regs->pc);
++ }
++}
++
++/*
++ * Handle breakpoints, single steps and other debuggy things. To keep
++ * things simple initially, we run with interrupts and exceptions
++ * disabled all the time.
++ */
++asmlinkage void do_debug(struct pt_regs *regs)
++{
++ unsigned long dc, ds;
++
++ ds = __mfdr(DBGREG_DS);
++ pr_debug("do_debug: pc = %08lx, ds = %08lx\n", regs->pc, ds);
++
++ if (test_thread_flag(TIF_BREAKPOINT)) {
++ pr_debug("TIF_BREAKPOINT set\n");
++ /* We're taking care of it */
++ clear_thread_flag(TIF_BREAKPOINT);
++ __mtdr(DBGREG_BWC2A, 0);
++ }
++
++ if (test_thread_flag(TIF_SINGLE_STEP)) {
++ pr_debug("TIF_SINGLE_STEP set, ds = 0x%08lx\n", ds);
++ if (ds & DS_SSS) {
++ dc = __mfdr(DBGREG_DC);
++ dc &= ~DC_SS;
++ __mtdr(DBGREG_DC, dc);
++
++ clear_thread_flag(TIF_SINGLE_STEP);
++ ptrace_break(current, regs);
++ }
++ } else {
++ /* regular breakpoint */
++ ptrace_break(current, regs);
++ }
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/semaphore.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/semaphore.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,148 @@
++/*
++ * AVR32 sempahore implementation.
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * Based on linux/arch/i386/kernel/semaphore.c
++ * Copyright (C) 1999 Linus Torvalds
++ *
++ * 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/sched.h>
++#include <linux/errno.h>
++#include <linux/module.h>
++
++#include <asm/semaphore.h>
++#include <asm/atomic.h>
++
++/*
++ * Semaphores are implemented using a two-way counter:
++ * The "count" variable is decremented for each process
++ * that tries to acquire the semaphore, while the "sleeping"
++ * variable is a count of such acquires.
++ *
++ * Notably, the inline "up()" and "down()" functions can
++ * efficiently test if they need to do any extra work (up
++ * needs to do something only if count was negative before
++ * the increment operation.
++ *
++ * "sleeping" and the contention routine ordering is protected
++ * by the spinlock in the semaphore's waitqueue head.
++ *
++ * Note that these functions are only called when there is
++ * contention on the lock, and as such all this is the
++ * "non-critical" part of the whole semaphore business. The
++ * critical part is the inline stuff in <asm/semaphore.h>
++ * where we want to avoid any extra jumps and calls.
++ */
++
++/*
++ * Logic:
++ * - only on a boundary condition do we need to care. When we go
++ * from a negative count to a non-negative, we wake people up.
++ * - when we go from a non-negative count to a negative do we
++ * (a) synchronize with the "sleeper" count and (b) make sure
++ * that we're on the wakeup list before we synchronize so that
++ * we cannot lose wakeup events.
++ */
++
++void __up(struct semaphore *sem)
++{
++ wake_up(&sem->wait);
++}
++EXPORT_SYMBOL(__up);
++
++void __sched __down(struct semaphore *sem)
++{
++ struct task_struct *tsk = current;
++ DECLARE_WAITQUEUE(wait, tsk);
++ unsigned long flags;
++
++ tsk->state = TASK_UNINTERRUPTIBLE;
++ spin_lock_irqsave(&sem->wait.lock, flags);
++ add_wait_queue_exclusive_locked(&sem->wait, &wait);
++
++ sem->sleepers++;
++ for (;;) {
++ int sleepers = sem->sleepers;
++
++ /*
++ * Add "everybody else" into it. They aren't
++ * playing, because we own the spinlock in
++ * the wait_queue_head.
++ */
++ if (atomic_add_return(sleepers - 1, &sem->count) >= 0) {
++ sem->sleepers = 0;
++ break;
++ }
++ sem->sleepers = 1; /* us - see -1 above */
++ spin_unlock_irqrestore(&sem->wait.lock, flags);
++
++ schedule();
++
++ spin_lock_irqsave(&sem->wait.lock, flags);
++ tsk->state = TASK_UNINTERRUPTIBLE;
++ }
++ remove_wait_queue_locked(&sem->wait, &wait);
++ wake_up_locked(&sem->wait);
++ spin_unlock_irqrestore(&sem->wait.lock, flags);
++ tsk->state = TASK_RUNNING;
++}
++EXPORT_SYMBOL(__down);
++
++int __sched __down_interruptible(struct semaphore *sem)
++{
++ int retval = 0;
++ struct task_struct *tsk = current;
++ DECLARE_WAITQUEUE(wait, tsk);
++ unsigned long flags;
++
++ tsk->state = TASK_INTERRUPTIBLE;
++ spin_lock_irqsave(&sem->wait.lock, flags);
++ add_wait_queue_exclusive_locked(&sem->wait, &wait);
++
++ sem->sleepers++;
++ for (;;) {
++ int sleepers = sem->sleepers;
++
++ /*
++ * With signals pending, this turns into the trylock
++ * failure case - we won't be sleeping, and we can't
++ * get the lock as it has contention. Just correct the
++ * count and exit.
++ */
++ if (signal_pending(current)) {
++ retval = -EINTR;
++ sem->sleepers = 0;
++ atomic_add(sleepers, &sem->count);
++ break;
++ }
++
++ /*
++ * Add "everybody else" into it. They aren't
++ * playing, because we own the spinlock in
++ * the wait_queue_head.
++ */
++ if (atomic_add_return(sleepers - 1, &sem->count) >= 0) {
++ sem->sleepers = 0;
++ break;
++ }
++ sem->sleepers = 1; /* us - see -1 above */
++ spin_unlock_irqrestore(&sem->wait.lock, flags);
++
++ schedule();
++
++ spin_lock_irqsave(&sem->wait.lock, flags);
++ tsk->state = TASK_INTERRUPTIBLE;
++ }
++ remove_wait_queue_locked(&sem->wait, &wait);
++ wake_up_locked(&sem->wait);
++ spin_unlock_irqrestore(&sem->wait.lock, flags);
++
++ tsk->state = TASK_RUNNING;
++ return retval;
++}
++EXPORT_SYMBOL(__down_interruptible);
+Index: linux-2.6.18-avr32/arch/avr32/kernel/setup.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/setup.c 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,335 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/init.h>
++#include <linux/sched.h>
++#include <linux/console.h>
++#include <linux/ioport.h>
++#include <linux/bootmem.h>
++#include <linux/fs.h>
++#include <linux/module.h>
++#include <linux/root_dev.h>
++#include <linux/cpu.h>
++
++#include <asm/sections.h>
++#include <asm/processor.h>
++#include <asm/pgtable.h>
++#include <asm/setup.h>
++#include <asm/sysreg.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/init.h>
++
++extern int root_mountflags;
++
++/*
++ * Bootloader-provided information about physical memory
++ */
++struct tag_mem_range *mem_phys;
++struct tag_mem_range *mem_reserved;
++struct tag_mem_range *mem_ramdisk;
++
++/*
++ * Initialize loops_per_jiffy as 5000000 (500MIPS).
++ * Better make it too large than too small...
++ */
++struct avr32_cpuinfo boot_cpu_data = {
++ .loops_per_jiffy = 5000000
++};
++EXPORT_SYMBOL(boot_cpu_data);
++
++static char command_line[COMMAND_LINE_SIZE];
++
++/*
++ * Should be more than enough, but if you have a _really_ complex
++ * setup, you might need to increase the size of this...
++ */
++static struct tag_mem_range __initdata mem_range_cache[32];
++static unsigned mem_range_next_free;
++
++/*
++ * Standard memory resources
++ */
++static struct resource mem_res[] = {
++ {
++ .name = "Kernel code",
++ .start = 0,
++ .end = 0,
++ .flags = IORESOURCE_MEM
++ },
++ {
++ .name = "Kernel data",
++ .start = 0,
++ .end = 0,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++#define kernel_code mem_res[0]
++#define kernel_data mem_res[1]
++
++/*
++ * Early framebuffer allocation. Works as follows:
++ * - If fbmem_size is zero, nothing will be allocated or reserved.
++ * - If fbmem_start is zero when setup_bootmem() is called,
++ * fbmem_size bytes will be allocated from the bootmem allocator.
++ * - If fbmem_start is nonzero, an area of size fbmem_size will be
++ * reserved at the physical address fbmem_start if necessary. If
++ * the area isn't in a memory region known to the kernel, it will
++ * be left alone.
++ *
++ * Board-specific code may use these variables to set up platform data
++ * for the framebuffer driver if fbmem_size is nonzero.
++ */
++static unsigned long __initdata fbmem_start;
++static unsigned long __initdata fbmem_size;
++
++/*
++ * "fbmem=xxx[kKmM]" allocates the specified amount of boot memory for
++ * use as framebuffer.
++ *
++ * "fbmem=xxx[kKmM]@yyy[kKmM]" defines a memory region of size xxx and
++ * starting at yyy to be reserved for use as framebuffer.
++ *
++ * The kernel won't verify that the memory region starting at yyy
++ * actually contains usable RAM.
++ */
++static int __init early_parse_fbmem(char *p)
++{
++ fbmem_size = memparse(p, &p);
++ if (*p == '@')
++ fbmem_start = memparse(p, &p);
++ return 0;
++}
++early_param("fbmem", early_parse_fbmem);
++
++static inline void __init resource_init(void)
++{
++ struct tag_mem_range *region;
++
++ kernel_code.start = __pa(init_mm.start_code);
++ kernel_code.end = __pa(init_mm.end_code - 1);
++ kernel_data.start = __pa(init_mm.end_code);
++ kernel_data.end = __pa(init_mm.brk - 1);
++
++ for (region = mem_phys; region; region = region->next) {
++ struct resource *res;
++ unsigned long phys_start, phys_end;
++
++ if (region->size == 0)
++ continue;
++
++ phys_start = region->addr;
++ phys_end = phys_start + region->size - 1;
++
++ res = alloc_bootmem_low(sizeof(*res));
++ res->name = "System RAM";
++ res->start = phys_start;
++ res->end = phys_end;
++ res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
++
++ request_resource (&iomem_resource, res);
++
++ if (kernel_code.start >= res->start &&
++ kernel_code.end <= res->end)
++ request_resource (res, &kernel_code);
++ if (kernel_data.start >= res->start &&
++ kernel_data.end <= res->end)
++ request_resource (res, &kernel_data);
++ }
++}
++
++static int __init parse_tag_core(struct tag *tag)
++{
++ if (tag->hdr.size > 2) {
++ if ((tag->u.core.flags & 1) == 0)
++ root_mountflags &= ~MS_RDONLY;
++ ROOT_DEV = new_decode_dev(tag->u.core.rootdev);
++ }
++ return 0;
++}
++__tagtable(ATAG_CORE, parse_tag_core);
++
++static int __init parse_tag_mem_range(struct tag *tag,
++ struct tag_mem_range **root)
++{
++ struct tag_mem_range *cur, **pprev;
++ struct tag_mem_range *new;
++
++ /*
++ * Ignore zero-sized entries. If we're running standalone, the
++ * SDRAM code may emit such entries if something goes
++ * wrong...
++ */
++ if (tag->u.mem_range.size == 0)
++ return 0;
++
++ /*
++ * Copy the data so the bootmem init code doesn't need to care
++ * about it.
++ */
++ if (mem_range_next_free >=
++ (sizeof(mem_range_cache) / sizeof(mem_range_cache[0])))
++ panic("Physical memory map too complex!\n");
++
++ new = &mem_range_cache[mem_range_next_free++];
++ *new = tag->u.mem_range;
++
++ pprev = root;
++ cur = *root;
++ while (cur) {
++ pprev = &cur->next;
++ cur = cur->next;
++ }
++
++ *pprev = new;
++ new->next = NULL;
++
++ return 0;
++}
++
++static int __init parse_tag_mem(struct tag *tag)
++{
++ return parse_tag_mem_range(tag, &mem_phys);
++}
++__tagtable(ATAG_MEM, parse_tag_mem);
++
++static int __init parse_tag_cmdline(struct tag *tag)
++{
++ strlcpy(saved_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);
++ return 0;
++}
++__tagtable(ATAG_CMDLINE, parse_tag_cmdline);
++
++static int __init parse_tag_rdimg(struct tag *tag)
++{
++ return parse_tag_mem_range(tag, &mem_ramdisk);
++}
++__tagtable(ATAG_RDIMG, parse_tag_rdimg);
++
++static int __init parse_tag_clock(struct tag *tag)
++{
++ /*
++ * We'll figure out the clocks by peeking at the system
++ * manager regs directly.
++ */
++ return 0;
++}
++__tagtable(ATAG_CLOCK, parse_tag_clock);
++
++static int __init parse_tag_rsvd_mem(struct tag *tag)
++{
++ return parse_tag_mem_range(tag, &mem_reserved);
++}
++__tagtable(ATAG_RSVD_MEM, parse_tag_rsvd_mem);
++
++static int __init parse_tag_ethernet(struct tag *tag)
++{
++#if 0
++ const struct platform_device *pdev;
++
++ /*
++ * We really need a bus type that supports "classes"...this
++ * will do for now (until we must handle other kinds of
++ * ethernet controllers)
++ */
++ pdev = platform_get_device("macb", tag->u.ethernet.mac_index);
++ if (pdev && pdev->dev.platform_data) {
++ struct eth_platform_data *data = pdev->dev.platform_data;
++
++ data->valid = 1;
++ data->mii_phy_addr = tag->u.ethernet.mii_phy_addr;
++ memcpy(data->hw_addr, tag->u.ethernet.hw_address,
++ sizeof(data->hw_addr));
++ }
++#endif
++ return 0;
++}
++__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
++
++/*
++ * Scan the tag table for this tag, and call its parse function. The
++ * tag table is built by the linker from all the __tagtable
++ * declarations.
++ */
++static int __init parse_tag(struct tag *tag)
++{
++ extern struct tagtable __tagtable_begin, __tagtable_end;
++ struct tagtable *t;
++
++ for (t = &__tagtable_begin; t < &__tagtable_end; t++)
++ if (tag->hdr.tag == t->tag) {
++ t->parse(tag);
++ break;
++ }
++
++ return t < &__tagtable_end;
++}
++
++/*
++ * Parse all tags in the list we got from the boot loader
++ */
++static void __init parse_tags(struct tag *t)
++{
++ for (; t->hdr.tag != ATAG_NONE; t = tag_next(t))
++ if (!parse_tag(t))
++ printk(KERN_WARNING
++ "Ignoring unrecognised tag 0x%08x\n",
++ t->hdr.tag);
++}
++
++void __init setup_arch (char **cmdline_p)
++{
++ struct clk *cpu_clk;
++
++ parse_tags(bootloader_tags);
++
++ setup_processor();
++ setup_platform();
++
++ cpu_clk = clk_get(NULL, "cpu");
++ if (IS_ERR(cpu_clk)) {
++ printk(KERN_WARNING "Warning: Unable to get CPU clock\n");
++ } else {
++ unsigned long cpu_hz = clk_get_rate(cpu_clk);
++
++ /*
++ * Well, duh, but it's probably a good idea to
++ * increment the use count.
++ */
++ clk_enable(cpu_clk);
++
++ boot_cpu_data.clk = cpu_clk;
++ boot_cpu_data.loops_per_jiffy = cpu_hz * 4;
++ printk("CPU: Running at %lu.%03lu MHz\n",
++ ((cpu_hz + 500) / 1000) / 1000,
++ ((cpu_hz + 500) / 1000) % 1000);
++ }
++
++ init_mm.start_code = (unsigned long) &_text;
++ init_mm.end_code = (unsigned long) &_etext;
++ init_mm.end_data = (unsigned long) &_edata;
++ init_mm.brk = (unsigned long) &_end;
++
++ strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE);
++ *cmdline_p = command_line;
++ parse_early_param();
++
++ setup_bootmem();
++
++ board_setup_fbmem(fbmem_start, fbmem_size);
++
++#ifdef CONFIG_VT
++ conswitchp = &dummy_con;
++#endif
++
++ paging_init();
++
++ resource_init();
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/signal.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/signal.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,328 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * Based on linux/arch/sh/kernel/signal.c
++ * Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima
++ * Copyright (C) 1991, 1992 Linus Torvalds
++ *
++ * 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/sched.h>
++#include <linux/mm.h>
++#include <linux/errno.h>
++#include <linux/ptrace.h>
++#include <linux/unistd.h>
++#include <linux/suspend.h>
++
++#include <asm/uaccess.h>
++#include <asm/ucontext.h>
++
++#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
++
++asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
++ struct pt_regs *regs)
++{
++ return do_sigaltstack(uss, uoss, regs->sp);
++}
++
++struct rt_sigframe
++{
++ struct siginfo info;
++ struct ucontext uc;
++ unsigned long retcode;
++};
++
++static int
++restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
++{
++ int err = 0;
++
++#define COPY(x) err |= __get_user(regs->x, &sc->x)
++ COPY(sr);
++ COPY(pc);
++ COPY(lr);
++ COPY(sp);
++ COPY(r12);
++ COPY(r11);
++ COPY(r10);
++ COPY(r9);
++ COPY(r8);
++ COPY(r7);
++ COPY(r6);
++ COPY(r5);
++ COPY(r4);
++ COPY(r3);
++ COPY(r2);
++ COPY(r1);
++ COPY(r0);
++#undef COPY
++
++ /*
++ * Don't allow anyone to pretend they're running in supervisor
++ * mode or something...
++ */
++ err |= !valid_user_regs(regs);
++
++ return err;
++}
++
++
++asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
++{
++ struct rt_sigframe __user *frame;
++ sigset_t set;
++
++ frame = (struct rt_sigframe __user *)regs->sp;
++ pr_debug("SIG return: frame = %p\n", frame);
++
++ 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))
++ goto badframe;
++
++ pr_debug("Context restored: pc = %08lx, lr = %08lx, sp = %08lx\n",
++ regs->pc, regs->lr, regs->sp);
++
++ return regs->r12;
++
++badframe:
++ force_sig(SIGSEGV, current);
++ return 0;
++}
++
++static int
++setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs)
++{
++ int err = 0;
++
++#define COPY(x) err |= __put_user(regs->x, &sc->x)
++ COPY(sr);
++ COPY(pc);
++ COPY(lr);
++ COPY(sp);
++ COPY(r12);
++ COPY(r11);
++ COPY(r10);
++ COPY(r9);
++ COPY(r8);
++ COPY(r7);
++ COPY(r6);
++ COPY(r5);
++ COPY(r4);
++ COPY(r3);
++ COPY(r2);
++ COPY(r1);
++ COPY(r0);
++#undef COPY
++
++ return err;
++}
++
++static inline void __user *
++get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, int framesize)
++{
++ unsigned long sp = regs->sp;
++
++ if ((ka->sa.sa_flags & SA_ONSTACK) && !sas_ss_flags(sp))
++ sp = current->sas_ss_sp + current->sas_ss_size;
++
++ return (void __user *)((sp - framesize) & ~3);
++}
++
++static int
++setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
++ sigset_t *set, struct pt_regs *regs)
++{
++ struct rt_sigframe __user *frame;
++ int err = 0;
++
++ frame = get_sigframe(ka, regs, sizeof(*frame));
++ err = -EFAULT;
++ if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
++ goto out;
++
++ /*
++ * Set up the return code:
++ *
++ * mov r8, __NR_rt_sigreturn
++ * scall
++ *
++ * Note: This will blow up since we're using a non-executable
++ * stack. Better use SA_RESTORER.
++ */
++#if __NR_rt_sigreturn > 127
++# error __NR_rt_sigreturn must be < 127 to fit in a short mov
++#endif
++ err = __put_user(0x3008d733 | (__NR_rt_sigreturn << 20),
++ &frame->retcode);
++
++ err |= copy_siginfo_to_user(&frame->info, info);
++
++ /* Set up the ucontext */
++ err |= __put_user(0, &frame->uc.uc_flags);
++ err |= __put_user(NULL, &frame->uc.uc_link);
++ err |= __put_user((void __user *)current->sas_ss_sp,
++ &frame->uc.uc_stack.ss_sp);
++ err |= __put_user(sas_ss_flags(regs->sp),
++ &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);
++ err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
++
++ if (err)
++ goto out;
++
++ regs->r12 = sig;
++ regs->r11 = (unsigned long) &frame->info;
++ regs->r10 = (unsigned long) &frame->uc;
++ regs->sp = (unsigned long) frame;
++ if (ka->sa.sa_flags & SA_RESTORER)
++ regs->lr = (unsigned long)ka->sa.sa_restorer;
++ else {
++ printk(KERN_NOTICE "[%s:%d] did not set SA_RESTORER\n",
++ current->comm, current->pid);
++ regs->lr = (unsigned long) &frame->retcode;
++ }
++
++ pr_debug("SIG deliver [%s:%d]: sig=%d sp=0x%lx pc=0x%lx->0x%p lr=0x%lx\n",
++ current->comm, current->pid, sig, regs->sp,
++ regs->pc, ka->sa.sa_handler, regs->lr);
++
++ regs->pc = (unsigned long) ka->sa.sa_handler;
++
++out:
++ return err;
++}
++
++static inline void restart_syscall(struct pt_regs *regs)
++{
++ if (regs->r12 == -ERESTART_RESTARTBLOCK)
++ regs->r8 = __NR_restart_syscall;
++ else
++ regs->r12 = regs->r12_orig;
++ regs->pc -= 2;
++}
++
++static inline void
++handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,
++ sigset_t *oldset, struct pt_regs *regs, int syscall)
++{
++ int ret;
++
++ /*
++ * Set up the stack frame
++ */
++ ret = setup_rt_frame(sig, ka, info, oldset, regs);
++
++ /*
++ * Check that the resulting registers are sane
++ */
++ ret |= !valid_user_regs(regs);
++
++ /*
++ * Block the signal if we were unsuccessful.
++ */
++ if (ret != 0 || !(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);
++ }
++
++ if (ret == 0)
++ return;
++
++ force_sigsegv(sig, current);
++}
++
++/*
++ * 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.
++ */
++int do_signal(struct pt_regs *regs, sigset_t *oldset, int syscall)
++{
++ siginfo_t info;
++ int signr;
++ struct k_sigaction ka;
++
++ /*
++ * 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 (!user_mode(regs))
++ return 0;
++
++ if (try_to_freeze()) {
++ signr = 0;
++ if (!signal_pending(current))
++ goto no_signal;
++ }
++
++ if (test_thread_flag(TIF_RESTORE_SIGMASK))
++ oldset = &current->saved_sigmask;
++ else if (!oldset)
++ oldset = &current->blocked;
++
++ signr = get_signal_to_deliver(&info, &ka, regs, NULL);
++no_signal:
++ if (syscall) {
++ switch (regs->r12) {
++ case -ERESTART_RESTARTBLOCK:
++ case -ERESTARTNOHAND:
++ if (signr > 0) {
++ regs->r12 = -EINTR;
++ break;
++ }
++ /* fall through */
++ case -ERESTARTSYS:
++ if (signr > 0 && !(ka.sa.sa_flags & SA_RESTART)) {
++ regs->r12 = -EINTR;
++ break;
++ }
++ /* fall through */
++ case -ERESTARTNOINTR:
++ restart_syscall(regs);
++ }
++ }
++
++ if (signr == 0) {
++ /* No signal to deliver -- put the saved sigmask back */
++ if (test_thread_flag(TIF_RESTORE_SIGMASK)) {
++ clear_thread_flag(TIF_RESTORE_SIGMASK);
++ sigprocmask(SIG_SETMASK, &current->saved_sigmask, NULL);
++ }
++ return 0;
++ }
++
++ handle_signal(signr, &ka, &info, oldset, regs, syscall);
++ return 1;
++}
++
++asmlinkage void do_notify_resume(struct pt_regs *regs, struct thread_info *ti)
++{
++ int syscall = 0;
++
++ if ((sysreg_read(SR) & MODE_MASK) == MODE_SUPERVISOR)
++ syscall = 1;
++
++ if (ti->flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
++ do_signal(regs, &current->blocked, syscall);
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/switch_to.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/switch_to.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,35 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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 <asm/sysreg.h>
++
++ .text
++ .global __switch_to
++ .type __switch_to, @function
++
++ /* Switch thread context from "prev" to "next", returning "last"
++ * r12 : prev
++ * r11 : &prev->thread + 1
++ * r10 : &next->thread
++ */
++__switch_to:
++ stm --r11, r0,r1,r2,r3,r4,r5,r6,r7,sp,lr
++ mfsr r9, SYSREG_SR
++ st.w --r11, r9
++ ld.w r8, r10++
++ /*
++ * schedule() may have been called from a mode with a different
++ * set of registers. Make sure we don't lose anything here.
++ */
++ pushm r10,r12
++ mtsr SYSREG_SR, r8
++ frs /* flush the return stack */
++ sub pc, -2 /* flush the pipeline */
++ popm r10,r12
++ ldm r10++, r0,r1,r2,r3,r4,r5,r6,r7,sp,pc
++ .size __switch_to, . - __switch_to
+Index: linux-2.6.18-avr32/arch/avr32/kernel/sys_avr32.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/sys_avr32.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,51 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/errno.h>
++#include <linux/fs.h>
++#include <linux/file.h>
++#include <linux/mm.h>
++#include <linux/unistd.h>
++
++#include <asm/mman.h>
++#include <asm/uaccess.h>
++
++asmlinkage int sys_pipe(unsigned long __user *filedes)
++{
++ int fd[2];
++ int error;
++
++ error = do_pipe(fd);
++ if (!error) {
++ if (copy_to_user(filedes, fd, sizeof(fd)))
++ error = -EFAULT;
++ }
++ return error;
++}
++
++asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
++ unsigned long prot, unsigned long flags,
++ unsigned long fd, off_t offset)
++{
++ int error = -EBADF;
++ struct file *file = NULL;
++
++ flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
++ if (!(flags & MAP_ANONYMOUS)) {
++ file = fget(fd);
++ if (!file)
++ return error;
++ }
++
++ down_write(&current->mm->mmap_sem);
++ error = do_mmap_pgoff(file, addr, len, prot, flags, offset);
++ up_write(&current->mm->mmap_sem);
++
++ if (file)
++ fput(file);
++ return error;
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/syscall-stubs.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/syscall-stubs.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,102 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++/*
++ * Stubs for syscalls that require access to pt_regs or that take more
++ * than five parameters.
++ */
++
++#define ARG6 r3
++
++ .text
++ .global __sys_rt_sigsuspend
++ .type __sys_rt_sigsuspend,@function
++__sys_rt_sigsuspend:
++ mov r10, sp
++ rjmp sys_rt_sigsuspend
++
++ .global __sys_sigaltstack
++ .type __sys_sigaltstack,@function
++__sys_sigaltstack:
++ mov r10, sp
++ rjmp sys_sigaltstack
++
++ .global __sys_rt_sigreturn
++ .type __sys_rt_sigreturn,@function
++__sys_rt_sigreturn:
++ mov r12, sp
++ rjmp sys_rt_sigreturn
++
++ .global __sys_fork
++ .type __sys_fork,@function
++__sys_fork:
++ mov r12, sp
++ rjmp sys_fork
++
++ .global __sys_clone
++ .type __sys_clone,@function
++__sys_clone:
++ mov r8, sp
++ rjmp sys_clone
++
++ .global __sys_vfork
++ .type __sys_vfork,@function
++__sys_vfork:
++ mov r12, sp
++ rjmp sys_vfork
++
++ .global __sys_execve
++ .type __sys_execve,@function
++__sys_execve:
++ mov r9, sp
++ rjmp sys_execve
++
++ .global __sys_mmap2
++ .type __sys_mmap2,@function
++__sys_mmap2:
++ pushm lr
++ st.w --sp, ARG6
++ rcall sys_mmap2
++ sub sp, -4
++ popm pc
++
++ .global __sys_sendto
++ .type __sys_sendto,@function
++__sys_sendto:
++ pushm lr
++ st.w --sp, ARG6
++ rcall sys_sendto
++ sub sp, -4
++ popm pc
++
++ .global __sys_recvfrom
++ .type __sys_recvfrom,@function
++__sys_recvfrom:
++ pushm lr
++ st.w --sp, ARG6
++ rcall sys_recvfrom
++ sub sp, -4
++ popm pc
++
++ .global __sys_pselect6
++ .type __sys_pselect6,@function
++__sys_pselect6:
++ pushm lr
++ st.w --sp, ARG6
++ rcall sys_pselect6
++ sub sp, -4
++ popm pc
++
++ .global __sys_splice
++ .type __sys_splice,@function
++__sys_splice:
++ pushm lr
++ st.w --sp, ARG6
++ rcall sys_splice
++ sub sp, -4
++ popm pc
+Index: linux-2.6.18-avr32/arch/avr32/kernel/syscall_table.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/syscall_table.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,289 @@
++/*
++ * AVR32 system call table
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++#if !defined(CONFIG_NFSD) && !defined(CONFIG_NFSD_MODULE)
++#define sys_nfsservctl sys_ni_syscall
++#endif
++
++#if !defined(CONFIG_SYSV_IPC)
++# define sys_ipc sys_ni_syscall
++#endif
++
++ .section .rodata,"a",@progbits
++ .type sys_call_table,@object
++ .global sys_call_table
++ .align 2
++sys_call_table:
++ .long sys_restart_syscall
++ .long sys_exit
++ .long __sys_fork
++ .long sys_read
++ .long sys_write
++ .long sys_open /* 5 */
++ .long sys_close
++ .long sys_umask
++ .long sys_creat
++ .long sys_link
++ .long sys_unlink /* 10 */
++ .long __sys_execve
++ .long sys_chdir
++ .long sys_time
++ .long sys_mknod
++ .long sys_chmod /* 15 */
++ .long sys_chown
++ .long sys_lchown
++ .long sys_lseek
++ .long sys_llseek
++ .long sys_getpid /* 20 */
++ .long sys_mount
++ .long sys_umount
++ .long sys_setuid
++ .long sys_getuid
++ .long sys_stime /* 25 */
++ .long sys_ptrace
++ .long sys_alarm
++ .long sys_pause
++ .long sys_utime
++ .long sys_newstat /* 30 */
++ .long sys_newfstat
++ .long sys_newlstat
++ .long sys_access
++ .long sys_chroot
++ .long sys_sync /* 35 */
++ .long sys_fsync
++ .long sys_kill
++ .long sys_rename
++ .long sys_mkdir
++ .long sys_rmdir /* 40 */
++ .long sys_dup
++ .long sys_pipe
++ .long sys_times
++ .long __sys_clone
++ .long sys_brk /* 45 */
++ .long sys_setgid
++ .long sys_getgid
++ .long sys_getcwd
++ .long sys_geteuid
++ .long sys_getegid /* 50 */
++ .long sys_acct
++ .long sys_setfsuid
++ .long sys_setfsgid
++ .long sys_ioctl
++ .long sys_fcntl /* 55 */
++ .long sys_setpgid
++ .long sys_mremap
++ .long sys_setresuid
++ .long sys_getresuid
++ .long sys_setreuid /* 60 */
++ .long sys_setregid
++ .long sys_ustat
++ .long sys_dup2
++ .long sys_getppid
++ .long sys_getpgrp /* 65 */
++ .long sys_setsid
++ .long sys_rt_sigaction
++ .long __sys_rt_sigreturn
++ .long sys_rt_sigprocmask
++ .long sys_rt_sigpending /* 70 */
++ .long sys_rt_sigtimedwait
++ .long sys_rt_sigqueueinfo
++ .long __sys_rt_sigsuspend
++ .long sys_sethostname
++ .long sys_setrlimit /* 75 */
++ .long sys_getrlimit
++ .long sys_getrusage
++ .long sys_gettimeofday
++ .long sys_settimeofday
++ .long sys_getgroups /* 80 */
++ .long sys_setgroups
++ .long sys_select
++ .long sys_symlink
++ .long sys_fchdir
++ .long sys_readlink /* 85 */
++ .long sys_pread64
++ .long sys_pwrite64
++ .long sys_swapon
++ .long sys_reboot
++ .long __sys_mmap2 /* 90 */
++ .long sys_munmap
++ .long sys_truncate
++ .long sys_ftruncate
++ .long sys_fchmod
++ .long sys_fchown /* 95 */
++ .long sys_getpriority
++ .long sys_setpriority
++ .long sys_wait4
++ .long sys_statfs
++ .long sys_fstatfs /* 100 */
++ .long sys_vhangup
++ .long __sys_sigaltstack
++ .long sys_syslog
++ .long sys_setitimer
++ .long sys_getitimer /* 105 */
++ .long sys_swapoff
++ .long sys_sysinfo
++ .long sys_ipc
++ .long sys_sendfile
++ .long sys_setdomainname /* 110 */
++ .long sys_newuname
++ .long sys_adjtimex
++ .long sys_mprotect
++ .long __sys_vfork
++ .long sys_init_module /* 115 */
++ .long sys_delete_module
++ .long sys_quotactl
++ .long sys_getpgid
++ .long sys_bdflush
++ .long sys_sysfs /* 120 */
++ .long sys_personality
++ .long sys_ni_syscall /* reserved for afs_syscall */
++ .long sys_getdents
++ .long sys_flock
++ .long sys_msync /* 125 */
++ .long sys_readv
++ .long sys_writev
++ .long sys_getsid
++ .long sys_fdatasync
++ .long sys_sysctl /* 130 */
++ .long sys_mlock
++ .long sys_munlock
++ .long sys_mlockall
++ .long sys_munlockall
++ .long sys_sched_setparam /* 135 */
++ .long sys_sched_getparam
++ .long sys_sched_setscheduler
++ .long sys_sched_getscheduler
++ .long sys_sched_yield
++ .long sys_sched_get_priority_max /* 140 */
++ .long sys_sched_get_priority_min
++ .long sys_sched_rr_get_interval
++ .long sys_nanosleep
++ .long sys_poll
++ .long sys_nfsservctl /* 145 */
++ .long sys_setresgid
++ .long sys_getresgid
++ .long sys_prctl
++ .long sys_socket
++ .long sys_bind /* 150 */
++ .long sys_connect
++ .long sys_listen
++ .long sys_accept
++ .long sys_getsockname
++ .long sys_getpeername /* 155 */
++ .long sys_socketpair
++ .long sys_send
++ .long sys_recv
++ .long __sys_sendto
++ .long __sys_recvfrom /* 160 */
++ .long sys_shutdown
++ .long sys_setsockopt
++ .long sys_getsockopt
++ .long sys_sendmsg
++ .long sys_recvmsg /* 165 */
++ .long sys_truncate64
++ .long sys_ftruncate64
++ .long sys_stat64
++ .long sys_lstat64
++ .long sys_fstat64 /* 170 */
++ .long sys_pivot_root
++ .long sys_mincore
++ .long sys_madvise
++ .long sys_getdents64
++ .long sys_fcntl64 /* 175 */
++ .long sys_gettid
++ .long sys_readahead
++ .long sys_setxattr
++ .long sys_lsetxattr
++ .long sys_fsetxattr /* 180 */
++ .long sys_getxattr
++ .long sys_lgetxattr
++ .long sys_fgetxattr
++ .long sys_listxattr
++ .long sys_llistxattr /* 185 */
++ .long sys_flistxattr
++ .long sys_removexattr
++ .long sys_lremovexattr
++ .long sys_fremovexattr
++ .long sys_tkill /* 190 */
++ .long sys_sendfile64
++ .long sys_futex
++ .long sys_sched_setaffinity
++ .long sys_sched_getaffinity
++ .long sys_capget /* 195 */
++ .long sys_capset
++ .long sys_io_setup
++ .long sys_io_destroy
++ .long sys_io_getevents
++ .long sys_io_submit /* 200 */
++ .long sys_io_cancel
++ .long sys_fadvise64
++ .long sys_exit_group
++ .long sys_lookup_dcookie
++ .long sys_epoll_create /* 205 */
++ .long sys_epoll_ctl
++ .long sys_epoll_wait
++ .long sys_remap_file_pages
++ .long sys_set_tid_address
++ .long sys_timer_create /* 210 */
++ .long sys_timer_settime
++ .long sys_timer_gettime
++ .long sys_timer_getoverrun
++ .long sys_timer_delete
++ .long sys_clock_settime /* 215 */
++ .long sys_clock_gettime
++ .long sys_clock_getres
++ .long sys_clock_nanosleep
++ .long sys_statfs64
++ .long sys_fstatfs64 /* 220 */
++ .long sys_tgkill
++ .long sys_ni_syscall /* reserved for TUX */
++ .long sys_utimes
++ .long sys_fadvise64_64
++ .long sys_cacheflush /* 225 */
++ .long sys_ni_syscall /* sys_vserver */
++ .long sys_mq_open
++ .long sys_mq_unlink
++ .long sys_mq_timedsend
++ .long sys_mq_timedreceive /* 230 */
++ .long sys_mq_notify
++ .long sys_mq_getsetattr
++ .long sys_kexec_load
++ .long sys_waitid
++ .long sys_add_key /* 235 */
++ .long sys_request_key
++ .long sys_keyctl
++ .long sys_ioprio_set
++ .long sys_ioprio_get
++ .long sys_inotify_init /* 240 */
++ .long sys_inotify_add_watch
++ .long sys_inotify_rm_watch
++ .long sys_openat
++ .long sys_mkdirat
++ .long sys_mknodat /* 245 */
++ .long sys_fchownat
++ .long sys_futimesat
++ .long sys_fstatat64
++ .long sys_unlinkat
++ .long sys_renameat /* 250 */
++ .long sys_linkat
++ .long sys_symlinkat
++ .long sys_readlinkat
++ .long sys_fchmodat
++ .long sys_faccessat /* 255 */
++ .long __sys_pselect6
++ .long sys_ppoll
++ .long sys_unshare
++ .long sys_set_robust_list
++ .long sys_get_robust_list /* 260 */
++ .long __sys_splice
++ .long sys_sync_file_range
++ .long sys_tee
++ .long sys_vmsplice
++ .long sys_ni_syscall /* r8 is saturated at nr_syscalls */
+Index: linux-2.6.18-avr32/arch/avr32/kernel/time.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/time.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,238 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * Based on MIPS implementation arch/mips/kernel/time.c
++ * Copyright 2001 MontaVista Software 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.
++ */
++
++#include <linux/clk.h>
++#include <linux/clocksource.h>
++#include <linux/time.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/irq.h>
++#include <linux/kernel_stat.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/profile.h>
++#include <linux/sysdev.h>
++
++#include <asm/div64.h>
++#include <asm/sysreg.h>
++#include <asm/io.h>
++#include <asm/sections.h>
++
++static cycle_t read_cycle_count(void)
++{
++ return (cycle_t)sysreg_read(COUNT);
++}
++
++static struct clocksource clocksource_avr32 = {
++ .name = "avr32",
++ .rating = 350,
++ .read = read_cycle_count,
++ .mask = CLOCKSOURCE_MASK(32),
++ .shift = 16,
++ .is_continuous = 1,
++};
++
++/*
++ * By default we provide the null RTC ops
++ */
++static unsigned long null_rtc_get_time(void)
++{
++ return mktime(2004, 1, 1, 0, 0, 0);
++}
++
++static int null_rtc_set_time(unsigned long sec)
++{
++ return 0;
++}
++
++static unsigned long (*rtc_get_time)(void) = null_rtc_get_time;
++static int (*rtc_set_time)(unsigned long) = null_rtc_set_time;
++
++/* how many counter cycles in a jiffy? */
++static unsigned long cycles_per_jiffy;
++
++/* cycle counter value at the previous timer interrupt */
++static unsigned int timerhi, timerlo;
++
++/* the count value for the next timer interrupt */
++static unsigned int expirelo;
++
++static void avr32_timer_ack(void)
++{
++ unsigned int count;
++
++ /* Ack this timer interrupt and set the next one */
++ expirelo += cycles_per_jiffy;
++ if (expirelo == 0) {
++ printk(KERN_DEBUG "expirelo == 0\n");
++ sysreg_write(COMPARE, expirelo + 1);
++ } else {
++ sysreg_write(COMPARE, expirelo);
++ }
++
++ /* Check to see if we have missed any timer interrupts */
++ count = sysreg_read(COUNT);
++ if ((count - expirelo) < 0x7fffffff) {
++ expirelo = count + cycles_per_jiffy;
++ sysreg_write(COMPARE, expirelo);
++ }
++}
++
++static unsigned int avr32_hpt_read(void)
++{
++ return sysreg_read(COUNT);
++}
++
++/*
++ * Taken from MIPS c0_hpt_timer_init().
++ *
++ * Why is it so complicated, and what is "count"? My assumption is
++ * that `count' specifies the "reference cycle", i.e. the cycle since
++ * reset that should mean "zero". The reason COUNT is written twice is
++ * probably to make sure we don't get any timer interrupts while we
++ * are messing with the counter.
++ */
++static void avr32_hpt_init(unsigned int count)
++{
++ count = sysreg_read(COUNT) - count;
++ expirelo = (count / cycles_per_jiffy + 1) * cycles_per_jiffy;
++ sysreg_write(COUNT, expirelo - cycles_per_jiffy);
++ sysreg_write(COMPARE, expirelo);
++ sysreg_write(COUNT, count);
++}
++
++/*
++ * Scheduler clock - returns current time in nanosec units.
++ */
++unsigned long long sched_clock(void)
++{
++ /* There must be better ways...? */
++ return (unsigned long long)jiffies * (1000000000 / HZ);
++}
++
++/*
++ * local_timer_interrupt() does profiling and process accounting on a
++ * per-CPU basis.
++ *
++ * In UP mode, it is invoked from the (global) timer_interrupt.
++ */
++static void local_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ if (current->pid)
++ profile_tick(CPU_PROFILING, regs);
++ update_process_times(user_mode(regs));
++}
++
++static irqreturn_t
++timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ unsigned int count;
++
++ /* ack timer interrupt and try to set next interrupt */
++ count = avr32_hpt_read();
++ avr32_timer_ack();
++
++ /* Update timerhi/timerlo for intra-jiffy calibration */
++ timerhi += count < timerlo; /* Wrap around */
++ timerlo = count;
++
++ /*
++ * Call the generic timer interrupt handler
++ */
++ write_seqlock(&xtime_lock);
++ do_timer(regs);
++ write_sequnlock(&xtime_lock);
++
++ /*
++ * In UP mode, we call local_timer_interrupt() to do profiling
++ * and process accounting.
++ *
++ * SMP is not supported yet.
++ */
++ local_timer_interrupt(irq, dev_id, regs);
++
++ return IRQ_HANDLED;
++}
++
++static struct irqaction timer_irqaction = {
++ .handler = timer_interrupt,
++ .flags = IRQF_DISABLED,
++ .name = "timer",
++};
++
++void __init time_init(void)
++{
++ unsigned long mult, shift, count_hz;
++ int ret;
++
++ xtime.tv_sec = rtc_get_time();
++ xtime.tv_nsec = 0;
++
++ set_normalized_timespec(&wall_to_monotonic,
++ -xtime.tv_sec, -xtime.tv_nsec);
++
++ printk("Before time_init: count=%08lx, compare=%08lx\n",
++ (unsigned long)sysreg_read(COUNT),
++ (unsigned long)sysreg_read(COMPARE));
++
++ count_hz = clk_get_rate(boot_cpu_data.clk);
++ shift = clocksource_avr32.shift;
++ mult = clocksource_hz2mult(count_hz, shift);
++ clocksource_avr32.mult = mult;
++
++ printk("Cycle counter: mult=%lu, shift=%lu\n", mult, shift);
++
++ {
++ u64 tmp;
++
++ tmp = TICK_NSEC;
++ tmp <<= shift;
++ tmp += mult / 2;
++ do_div(tmp, mult);
++
++ cycles_per_jiffy = tmp;
++ }
++
++ /* This sets up the high precision timer for the first interrupt. */
++ avr32_hpt_init(avr32_hpt_read());
++
++ printk("After time_init: count=%08lx, compare=%08lx\n",
++ (unsigned long)sysreg_read(COUNT),
++ (unsigned long)sysreg_read(COMPARE));
++
++ ret = clocksource_register(&clocksource_avr32);
++ if (ret)
++ printk(KERN_ERR
++ "timer: could not register clocksource: %d\n", ret);
++
++ ret = setup_irq(0, &timer_irqaction);
++ if (ret)
++ printk("timer: could not request IRQ 0: %d\n", ret);
++}
++
++static struct sysdev_class timer_class = {
++ set_kset_name("timer"),
++};
++
++static struct sys_device timer_device = {
++ .id = 0,
++ .cls = &timer_class,
++};
++
++static int __init init_timer_sysfs(void)
++{
++ int err = sysdev_class_register(&timer_class);
++ if (!err)
++ err = sysdev_register(&timer_device);
++ return err;
++}
++
++device_initcall(init_timer_sysfs);
+Index: linux-2.6.18-avr32/arch/avr32/kernel/traps.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/traps.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,425 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#undef DEBUG
++#include <linux/sched.h>
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/kallsyms.h>
++#include <linux/notifier.h>
++
++#include <asm/traps.h>
++#include <asm/sysreg.h>
++#include <asm/addrspace.h>
++#include <asm/ocd.h>
++#include <asm/mmu_context.h>
++#include <asm/uaccess.h>
++
++static void dump_mem(const char *str, unsigned long bottom, unsigned long top)
++{
++ unsigned long p;
++ int i;
++
++ printk("%s(0x%08lx to 0x%08lx)\n", str, bottom, top);
++
++ for (p = bottom & ~31; p < top; ) {
++ printk("%04lx: ", p & 0xffff);
++
++ for (i = 0; i < 8; i++, p += 4) {
++ unsigned int val;
++
++ if (p < bottom || p >= top)
++ printk(" ");
++ else {
++ if (__get_user(val, (unsigned int __user *)p)) {
++ printk("\n");
++ goto out;
++ }
++ printk("%08x ", val);
++ }
++ }
++ printk("\n");
++ }
++
++out:
++ return;
++}
++
++#ifdef CONFIG_FRAME_POINTER
++static inline void __show_trace(struct task_struct *tsk, unsigned long *sp,
++ struct pt_regs *regs)
++{
++ unsigned long __user *fp;
++ unsigned long __user *last_fp = NULL;
++
++ if (regs) {
++ fp = (unsigned long __user *)regs->r7;
++ } else if (tsk == current) {
++ register unsigned long __user *real_fp __asm__("r7");
++ fp = real_fp;
++ } else {
++ fp = (unsigned long __user *)tsk->thread.cpu_context.r7;
++ }
++
++ /*
++ * Walk the stack until (a) we get an exception, (b) the frame
++ * pointer becomes zero, or (c) the frame pointer gets stuck
++ * at the same value.
++ */
++ while (fp && fp != last_fp) {
++ unsigned long lr, new_fp = 0;
++
++ last_fp = fp;
++ if (__get_user(lr, fp))
++ break;
++ if (fp && __get_user(new_fp, fp + 1))
++ break;
++ fp = (unsigned long __user *)new_fp;
++
++ printk(" [<%08lx>] ", lr);
++ print_symbol("%s\n", lr);
++ }
++ printk("\n");
++}
++#else
++static inline void __show_trace(struct task_struct *tsk, unsigned long *sp,
++ struct pt_regs *regs)
++{
++ unsigned long addr;
++
++ while (!kstack_end(sp)) {
++ addr = *sp++;
++ if (kernel_text_address(addr)) {
++ printk(" [<%08lx>] ", addr);
++ print_symbol("%s\n", addr);
++ }
++ }
++}
++#endif
++
++void show_trace(struct task_struct *tsk, unsigned long *sp,
++ struct pt_regs *regs)
++{
++ if (regs &&
++ (((regs->sr & MODE_MASK) == MODE_EXCEPTION) ||
++ ((regs->sr & MODE_MASK) == MODE_USER)))
++ return;
++
++ printk ("Call trace:");
++#ifdef CONFIG_KALLSYMS
++ printk("\n");
++#endif
++
++ __show_trace(tsk, sp, regs);
++ printk("\n");
++}
++
++void show_stack(struct task_struct *tsk, unsigned long *sp)
++{
++ unsigned long stack;
++
++ if (!tsk)
++ tsk = current;
++ if (sp == 0) {
++ if (tsk == current) {
++ register unsigned long *real_sp __asm__("sp");
++ sp = real_sp;
++ } else {
++ sp = (unsigned long *)tsk->thread.cpu_context.ksp;
++ }
++ }
++
++ stack = (unsigned long)sp;
++ dump_mem("Stack: ", stack,
++ THREAD_SIZE + (unsigned long)tsk->thread_info);
++ show_trace(tsk, sp, NULL);
++}
++
++void dump_stack(void)
++{
++ show_stack(NULL, NULL);
++}
++EXPORT_SYMBOL(dump_stack);
++
++ATOMIC_NOTIFIER_HEAD(avr32_die_chain);
++
++int register_die_notifier(struct notifier_block *nb)
++{
++ pr_debug("register_die_notifier: %p\n", nb);
++
++ return atomic_notifier_chain_register(&avr32_die_chain, nb);
++}
++EXPORT_SYMBOL(register_die_notifier);
++
++int unregister_die_notifier(struct notifier_block *nb)
++{
++ return atomic_notifier_chain_unregister(&avr32_die_chain, nb);
++}
++EXPORT_SYMBOL(unregister_die_notifier);
++
++static DEFINE_SPINLOCK(die_lock);
++
++void __die(const char *str, struct pt_regs *regs, unsigned long err,
++ const char *file, const char *func, unsigned long line)
++{
++ struct task_struct *tsk = current;
++ static int die_counter;
++
++ console_verbose();
++ spin_lock_irq(&die_lock);
++ bust_spinlocks(1);
++
++ printk(KERN_ALERT "%s", str);
++ if (file && func)
++ printk(" in %s:%s, line %ld", file, func, line);
++ printk("[#%d]:\n", ++die_counter);
++ print_modules();
++ show_regs(regs);
++ printk("Process %s (pid: %d, stack limit = 0x%p)\n",
++ tsk->comm, tsk->pid, tsk->thread_info + 1);
++
++ if (!user_mode(regs) || in_interrupt()) {
++ dump_mem("Stack: ", regs->sp,
++ THREAD_SIZE + (unsigned long)tsk->thread_info);
++ }
++
++ bust_spinlocks(0);
++ spin_unlock_irq(&die_lock);
++ do_exit(SIGSEGV);
++}
++
++void __die_if_kernel(const char *str, struct pt_regs *regs, unsigned long err,
++ const char *file, const char *func, unsigned long line)
++{
++ if (!user_mode(regs))
++ __die(str, regs, err, file, func, line);
++}
++
++asmlinkage void do_nmi(unsigned long ecr, struct pt_regs *regs)
++{
++#ifdef CONFIG_SUBARCH_AVR32B
++ /*
++ * The exception entry always saves RSR_EX. For NMI, this is
++ * wrong; it should be RSR_NMI
++ */
++ regs->sr = sysreg_read(RSR_NMI);
++#endif
++
++ printk("NMI taken!!!!\n");
++ die("NMI", regs, ecr);
++ BUG();
++}
++
++asmlinkage void do_critical_exception(unsigned long ecr, struct pt_regs *regs)
++{
++ printk("Unable to handle critical exception %lu at pc = %08lx!\n",
++ ecr, regs->pc);
++ die("Oops", regs, ecr);
++ BUG();
++}
++
++asmlinkage void do_address_exception(unsigned long ecr, struct pt_regs *regs)
++{
++ siginfo_t info;
++
++ die_if_kernel("Oops: Address exception in kernel mode", regs, ecr);
++
++#ifdef DEBUG
++ if (ecr == ECR_ADDR_ALIGN_X)
++ pr_debug("Instruction Address Exception at pc = %08lx\n",
++ regs->pc);
++ else if (ecr == ECR_ADDR_ALIGN_R)
++ pr_debug("Data Address Exception (Read) at pc = %08lx\n",
++ regs->pc);
++ else if (ecr == ECR_ADDR_ALIGN_W)
++ pr_debug("Data Address Exception (Write) at pc = %08lx\n",
++ regs->pc);
++ else
++ BUG();
++
++ show_regs(regs);
++#endif
++
++ info.si_signo = SIGBUS;
++ info.si_errno = 0;
++ info.si_code = BUS_ADRALN;
++ info.si_addr = (void __user *)regs->pc;
++
++ force_sig_info(SIGBUS, &info, current);
++}
++
++/* This way of handling undefined instructions is stolen from ARM */
++static LIST_HEAD(undef_hook);
++static spinlock_t undef_lock = SPIN_LOCK_UNLOCKED;
++
++void register_undef_hook(struct undef_hook *hook)
++{
++ spin_lock_irq(&undef_lock);
++ list_add(&hook->node, &undef_hook);
++ spin_unlock_irq(&undef_lock);
++}
++
++void unregister_undef_hook(struct undef_hook *hook)
++{
++ spin_lock_irq(&undef_lock);
++ list_del(&hook->node);
++ spin_unlock_irq(&undef_lock);
++}
++
++static int do_cop_absent(u32 insn)
++{
++ int cop_nr;
++ u32 cpucr;
++ if ( (insn & 0xfdf00000) == 0xf1900000 )
++ /* LDC0 */
++ cop_nr = 0;
++ else
++ cop_nr = (insn >> 13) & 0x7;
++
++ /* Try enabling the coprocessor */
++ cpucr = sysreg_read(CPUCR);
++ cpucr |= (1 << (24 + cop_nr));
++ sysreg_write(CPUCR, cpucr);
++
++ cpucr = sysreg_read(CPUCR);
++ if ( !(cpucr & (1 << (24 + cop_nr))) ){
++ printk("Coprocessor #%i not found!\n", cop_nr);
++ return -1;
++ }
++
++ return 0;
++}
++
++#ifdef CONFIG_BUG
++#ifdef CONFIG_DEBUG_BUGVERBOSE
++static inline void do_bug_verbose(struct pt_regs *regs, u32 insn)
++{
++ char *file;
++ u16 line;
++ char c;
++
++ if (__get_user(line, (u16 __user *)(regs->pc + 2)))
++ return;
++ if (__get_user(file, (char * __user *)(regs->pc + 4))
++ || (unsigned long)file < PAGE_OFFSET
++ || __get_user(c, file))
++ file = "<bad filename>";
++
++ printk(KERN_ALERT "kernel BUG at %s:%d!\n", file, line);
++}
++#else
++static inline void do_bug_verbose(struct pt_regs *regs, u32 insn)
++{
++
++}
++#endif
++#endif
++
++asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs)
++{
++ u32 insn;
++ struct undef_hook *hook;
++ siginfo_t info;
++ void __user *pc;
++
++ if (!user_mode(regs))
++ goto kernel_trap;
++
++ local_irq_enable();
++
++ pc = (void __user *)instruction_pointer(regs);
++ if (__get_user(insn, (u32 __user *)pc))
++ goto invalid_area;
++
++ if (ecr == ECR_COPROC_ABSENT) {
++ if (do_cop_absent(insn) == 0)
++ return;
++ }
++
++ spin_lock_irq(&undef_lock);
++ list_for_each_entry(hook, &undef_hook, node) {
++ if ((insn & hook->insn_mask) == hook->insn_val) {
++ if (hook->fn(regs, insn) == 0) {
++ spin_unlock_irq(&undef_lock);
++ return;
++ }
++ }
++ }
++ spin_unlock_irq(&undef_lock);
++
++invalid_area:
++
++#ifdef DEBUG
++ printk("Illegal instruction at pc = %08lx\n", regs->pc);
++ if (regs->pc < TASK_SIZE) {
++ unsigned long ptbr, pgd, pte, *p;
++
++ ptbr = sysreg_read(PTBR);
++ p = (unsigned long *)ptbr;
++ pgd = p[regs->pc >> 22];
++ p = (unsigned long *)((pgd & 0x1ffff000) | 0x80000000);
++ pte = p[(regs->pc >> 12) & 0x3ff];
++ printk("page table: 0x%08lx -> 0x%08lx -> 0x%08lx\n", ptbr, pgd, pte);
++ }
++#endif
++
++ info.si_signo = SIGILL;
++ info.si_errno = 0;
++ info.si_addr = (void __user *)regs->pc;
++ switch (ecr) {
++ case ECR_ILLEGAL_OPCODE:
++ case ECR_UNIMPL_INSTRUCTION:
++ info.si_code = ILL_ILLOPC;
++ break;
++ case ECR_PRIVILEGE_VIOLATION:
++ info.si_code = ILL_PRVOPC;
++ break;
++ case ECR_COPROC_ABSENT:
++ info.si_code = ILL_COPROC;
++ break;
++ default:
++ BUG();
++ }
++
++ force_sig_info(SIGILL, &info, current);
++ return;
++
++kernel_trap:
++#ifdef CONFIG_BUG
++ if (__kernel_text_address(instruction_pointer(regs))) {
++ insn = *(u16 *)instruction_pointer(regs);
++ if (insn == AVR32_BUG_OPCODE) {
++ do_bug_verbose(regs, insn);
++ die("Kernel BUG", regs, 0);
++ return;
++ }
++ }
++#endif
++
++ die("Oops: Illegal instruction in kernel code", regs, ecr);
++}
++
++asmlinkage void do_fpe(unsigned long ecr, struct pt_regs *regs)
++{
++ siginfo_t info;
++
++ printk("Floating-point exception at pc = %08lx\n", regs->pc);
++
++ /* We have no FPU... */
++ info.si_signo = SIGILL;
++ info.si_errno = 0;
++ info.si_addr = (void __user *)regs->pc;
++ info.si_code = ILL_COPROC;
++
++ force_sig_info(SIGILL, &info, current);
++}
++
++
++void __init trap_init(void)
++{
++
++}
+Index: linux-2.6.18-avr32/arch/avr32/kernel/vmlinux.lds.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/kernel/vmlinux.lds.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,139 @@
++/*
++ * AVR32 linker script for the Linux kernel
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#define LOAD_OFFSET 0x00000000
++#include <asm-generic/vmlinux.lds.h>
++
++OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
++OUTPUT_ARCH(avr32)
++ENTRY(_start)
++
++/* Big endian */
++jiffies = jiffies_64 + 4;
++
++SECTIONS
++{
++ . = CONFIG_ENTRY_ADDRESS;
++ .init : AT(ADDR(.init) - LOAD_OFFSET) {
++ _stext = .;
++ __init_begin = .;
++ _sinittext = .;
++ *(.text.reset)
++ *(.init.text)
++ _einittext = .;
++ . = ALIGN(4);
++ __tagtable_begin = .;
++ *(.taglist)
++ __tagtable_end = .;
++ *(.init.data)
++ . = ALIGN(16);
++ __setup_start = .;
++ *(.init.setup)
++ __setup_end = .;
++ . = ALIGN(4);
++ __initcall_start = .;
++ *(.initcall1.init)
++ *(.initcall2.init)
++ *(.initcall3.init)
++ *(.initcall4.init)
++ *(.initcall5.init)
++ *(.initcall6.init)
++ *(.initcall7.init)
++ __initcall_end = .;
++ __con_initcall_start = .;
++ *(.con_initcall.init)
++ __con_initcall_end = .;
++ __security_initcall_start = .;
++ *(.security_initcall.init)
++ __security_initcall_end = .;
++ . = ALIGN(32);
++ __initramfs_start = .;
++ *(.init.ramfs)
++ __initramfs_end = .;
++ . = ALIGN(4096);
++ __init_end = .;
++ }
++
++ . = ALIGN(8192);
++ .text : AT(ADDR(.text) - LOAD_OFFSET) {
++ _evba = .;
++ _text = .;
++ *(.ex.text)
++ . = 0x50;
++ *(.tlbx.ex.text)
++ . = 0x60;
++ *(.tlbr.ex.text)
++ . = 0x70;
++ *(.tlbw.ex.text)
++ . = 0x100;
++ *(.scall.text)
++ *(.irq.text)
++ *(.text)
++ SCHED_TEXT
++ LOCK_TEXT
++ KPROBES_TEXT
++ *(.fixup)
++ *(.gnu.warning)
++ _etext = .;
++ } = 0xd703d703
++
++ . = ALIGN(4);
++ __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
++ __start___ex_table = .;
++ *(__ex_table)
++ __stop___ex_table = .;
++ }
++
++ RODATA
++
++ . = ALIGN(8192);
++
++ .data : AT(ADDR(.data) - LOAD_OFFSET) {
++ _data = .;
++ _sdata = .;
++ /*
++ * First, the init task union, aligned to an 8K boundary.
++ */
++ *(.data.init_task)
++
++ /* Then, the cacheline aligned data */
++ . = ALIGN(32);
++ *(.data.cacheline_aligned)
++
++ /* And the rest... */
++ *(.data.rel*)
++ *(.data)
++ CONSTRUCTORS
++
++ _edata = .;
++ }
++
++
++ . = ALIGN(8);
++ .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
++ __bss_start = .;
++ *(.bss)
++ *(COMMON)
++ . = ALIGN(8);
++ __bss_stop = .;
++ _end = .;
++ }
++
++ /* When something in the kernel is NOT compiled as a module, the module
++ * cleanup code and data are put into these segments. Both can then be
++ * thrown away, as cleanup code is never called unless it's a module.
++ */
++ /DISCARD/ : {
++ *(.exit.text)
++ *(.exit.data)
++ *(.exitcall.exit)
++ }
++
++ DWARF_DEBUG
++}
+Index: linux-2.6.18-avr32/arch/avr32/lib/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/Makefile 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,11 @@
++#
++# Makefile for AVR32-specific library files
++#
++
++lib-y := copy_user.o clear_user.o
++lib-y += strncpy_from_user.o strnlen_user.o
++lib-y += delay.o memset.o memcpy.o findbit.o
++lib-y += csum_partial.o csum_partial_copy_generic.o
++lib-y += io-readsw.o io-readsl.o io-writesw.o io-writesl.o
++lib-y += io-readsb.o io-writesb.o
++lib-y += __avr32_lsl64.o __avr32_lsr64.o __avr32_asr64.o
+Index: linux-2.6.18-avr32/arch/avr32/lib/__avr32_asr64.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/__avr32_asr64.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,31 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ /*
++ * DWtype __avr32_asr64(DWtype u, word_type b)
++ */
++ .text
++ .global __avr32_asr64
++ .type __avr32_asr64,@function
++__avr32_asr64:
++ cp.w r12, 0
++ reteq r12
++
++ rsub r9, r12, 32
++ brle 1f
++
++ lsl r8, r11, r9
++ lsr r10, r10, r12
++ asr r11, r11, r12
++ or r10, r8
++ retal r12
++
++1: neg r9
++ asr r10, r11, r9
++ asr r11, 31
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/__avr32_lsl64.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/__avr32_lsl64.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,31 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ /*
++ * DWtype __avr32_lsl64(DWtype u, word_type b)
++ */
++ .text
++ .global __avr32_lsl64
++ .type __avr32_lsl64,@function
++__avr32_lsl64:
++ cp.w r12, 0
++ reteq r12
++
++ rsub r9, r12, 32
++ brle 1f
++
++ lsr r8, r10, r9
++ lsl r10, r10, r12
++ lsl r11, r11, r12
++ or r11, r8
++ retal r12
++
++1: neg r9
++ lsl r11, r10, r9
++ mov r10, 0
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/__avr32_lsr64.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/__avr32_lsr64.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,31 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ /*
++ * DWtype __avr32_lsr64(DWtype u, word_type b)
++ */
++ .text
++ .global __avr32_lsr64
++ .type __avr32_lsr64,@function
++__avr32_lsr64:
++ cp.w r12, 0
++ reteq r12
++
++ rsub r9, r12, 32
++ brle 1f
++
++ lsl r8, r11, r9
++ lsr r11, r11, r12
++ lsr r10, r10, r12
++ or r10, r8
++ retal r12
++
++1: neg r9
++ lsr r10, r11, r9
++ mov r11, 0
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/clear_user.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/clear_user.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,76 @@
++/*
++ * Copyright 2004-2006 Atmel Corporation
++ *
++ * 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 <asm/page.h>
++#include <asm/thread_info.h>
++#include <asm/asm.h>
++
++ .text
++ .align 1
++ .global clear_user
++ .type clear_user, "function"
++clear_user:
++ branch_if_kernel r8, __clear_user
++ ret_if_privileged r8, r12, r11, r11
++
++ .global __clear_user
++ .type __clear_user, "function"
++__clear_user:
++ mov r9, r12
++ mov r8, 0
++ andl r9, 3, COH
++ brne 5f
++
++1: sub r11, 4
++ brlt 2f
++
++10: st.w r12++, r8
++ sub r11, 4
++ brge 10b
++
++2: sub r11, -4
++ reteq 0
++
++ /* Unaligned count or address */
++ bld r11, 1
++ brcc 12f
++11: st.h r12++, r8
++ sub r11, 2
++ reteq 0
++12: st.b r12++, r8
++ retal 0
++
++ /* Unaligned address */
++5: cp.w r11, 4
++ brlt 2b
++
++ lsl r9, 2
++ add pc, pc, r9
++13: st.b r12++, r8
++ sub r11, 1
++14: st.b r12++, r8
++ sub r11, 1
++15: st.b r12++, r8
++ sub r11, 1
++ rjmp 1b
++
++ .size clear_user, . - clear_user
++ .size __clear_user, . - __clear_user
++
++ .section .fixup, "ax"
++ .align 1
++18: sub r11, -4
++19: retal r11
++
++ .section __ex_table, "a"
++ .align 2
++ .long 10b, 18b
++ .long 11b, 19b
++ .long 12b, 19b
++ .long 13b, 19b
++ .long 14b, 19b
++ .long 15b, 19b
+Index: linux-2.6.18-avr32/arch/avr32/lib/copy_user.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/copy_user.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,119 @@
++/*
++ * Copy to/from userspace with optional address space checking.
++ *
++ * Copyright 2004-2006 Atmel Corporation
++ *
++ * 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 <asm/page.h>
++#include <asm/thread_info.h>
++#include <asm/asm.h>
++
++ /*
++ * __kernel_size_t
++ * __copy_user(void *to, const void *from, __kernel_size_t n)
++ *
++ * Returns the number of bytes not copied. Might be off by
++ * max 3 bytes if we get a fault in the main loop.
++ *
++ * The address-space checking functions simply fall through to
++ * the non-checking version.
++ */
++ .text
++ .align 1
++ .global copy_from_user
++ .type copy_from_user, @function
++copy_from_user:
++ branch_if_kernel r8, __copy_user
++ ret_if_privileged r8, r11, r10, r10
++ rjmp __copy_user
++ .size copy_from_user, . - copy_from_user
++
++ .global copy_to_user
++ .type copy_to_user, @function
++copy_to_user:
++ branch_if_kernel r8, __copy_user
++ ret_if_privileged r8, r12, r10, r10
++ .size copy_to_user, . - copy_to_user
++
++ .global __copy_user
++ .type __copy_user, @function
++__copy_user:
++ mov r9, r11
++ andl r9, 3, COH
++ brne 6f
++
++ /* At this point, from is word-aligned */
++1: sub r10, 4
++ brlt 3f
++
++2:
++10: ld.w r8, r11++
++11: st.w r12++, r8
++ sub r10, 4
++ brge 2b
++
++3: sub r10, -4
++ reteq 0
++
++ /*
++ * Handle unaligned count. Need to be careful with r10 here so
++ * that we return the correct value even if we get a fault
++ */
++4:
++20: ld.ub r8, r11++
++21: st.b r12++, r8
++ sub r10, 1
++ reteq 0
++22: ld.ub r8, r11++
++23: st.b r12++, r8
++ sub r10, 1
++ reteq 0
++24: ld.ub r8, r11++
++25: st.b r12++, r8
++ retal 0
++
++ /* Handle unaligned from-pointer */
++6: cp.w r10, 4
++ brlt 4b
++ rsub r9, r9, 4
++
++30: ld.ub r8, r11++
++31: st.b r12++, r8
++ sub r10, 1
++ sub r9, 1
++ breq 1b
++32: ld.ub r8, r11++
++33: st.b r12++, r8
++ sub r10, 1
++ sub r9, 1
++ breq 1b
++34: ld.ub r8, r11++
++35: st.b r12++, r8
++ sub r10, 1
++ rjmp 1b
++ .size __copy_user, . - __copy_user
++
++ .section .fixup,"ax"
++ .align 1
++19: sub r10, -4
++29: retal r10
++
++ .section __ex_table,"a"
++ .align 2
++ .long 10b, 19b
++ .long 11b, 19b
++ .long 20b, 29b
++ .long 21b, 29b
++ .long 22b, 29b
++ .long 23b, 29b
++ .long 24b, 29b
++ .long 25b, 29b
++ .long 30b, 29b
++ .long 31b, 29b
++ .long 32b, 29b
++ .long 33b, 29b
++ .long 34b, 29b
++ .long 35b, 29b
+Index: linux-2.6.18-avr32/arch/avr32/lib/csum_partial.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/csum_partial.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,47 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ /*
++ * unsigned int csum_partial(const unsigned char *buff,
++ * int len, unsigned int sum)
++ */
++ .text
++ .global csum_partial
++ .type csum_partial,"function"
++ .align 1
++csum_partial:
++ /* checksum complete words, aligned or not */
++3: sub r11, 4
++ brlt 5f
++4: ld.w r9, r12++
++ add r10, r9
++ acr r10
++ sub r11, 4
++ brge 4b
++
++ /* return if we had a whole number of words */
++5: sub r11, -4
++ reteq r10
++
++ /* checksum any remaining bytes at the end */
++ mov r9, 0
++ mov r8, 0
++ cp r11, 2
++ brlt 6f
++ ld.uh r9, r12++
++ sub r11, 2
++ breq 7f
++ lsl r9, 16
++6: ld.ub r8, r12++
++ lsl r8, 8
++7: or r9, r8
++ add r10, r9
++ acr r10
++
++ retal r10
++ .size csum_partial, . - csum_partial
+Index: linux-2.6.18-avr32/arch/avr32/lib/csum_partial_copy_generic.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/csum_partial_copy_generic.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,99 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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 <asm/errno.h>
++#include <asm/asm.h>
++
++ /*
++ * unsigned int csum_partial_copy_generic(const char *src, char *dst, int len
++ * int sum, int *src_err_ptr,
++ * int *dst_err_ptr)
++ *
++ * Copy src to dst while checksumming, otherwise like csum_partial.
++ */
++
++ .macro ld_src size, reg, ptr
++9999: ld.\size \reg, \ptr
++ .section __ex_table, "a"
++ .long 9999b, fixup_ld_src
++ .previous
++ .endm
++
++ .macro st_dst size, ptr, reg
++9999: st.\size \ptr, \reg
++ .section __ex_table, "a"
++ .long 9999b, fixup_st_dst
++ .previous
++ .endm
++
++ .text
++ .global csum_partial_copy_generic
++ .type csum_partial_copy_generic,"function"
++ .align 1
++csum_partial_copy_generic:
++ pushm r4-r7,lr
++
++ /* The inner loop */
++1: sub r10, 4
++ brlt 5f
++2: ld_src w, r5, r12++
++ st_dst w, r11++, r5
++ add r9, r5
++ acr r9
++ sub r10, 4
++ brge 2b
++
++ /* return if we had a whole number of words */
++5: sub r10, -4
++ brne 7f
++
++6: mov r12, r9
++ popm r4-r7,pc
++
++ /* handle additional bytes at the tail */
++7: mov r5, 0
++ mov r4, 32
++8: ld_src ub, r6, r12++
++ st_dst b, r11++, r6
++ lsl r5, 8
++ sub r4, 8
++ bfins r5, r6, 0, 8
++ sub r10, 1
++ brne 8b
++
++ lsl r5, r5, r4
++ add r9, r5
++ acr r9
++ rjmp 6b
++
++ /* Exception handler */
++ .section .fixup,"ax"
++ .align 1
++fixup_ld_src:
++ mov r9, -EFAULT
++ cp.w r8, 0
++ breq 1f
++ st.w r8[0], r9
++
++1: /*
++ * TODO: zero the complete destination - computing the rest
++ * is too much work
++ */
++
++ mov r9, 0
++ rjmp 6b
++
++fixup_st_dst:
++ mov r9, -EFAULT
++ lddsp r8, sp[20]
++ cp.w r8, 0
++ breq 1f
++ st.w r8[0], r9
++1: mov r9, 0
++ rjmp 6b
++
++ .previous
+Index: linux-2.6.18-avr32/arch/avr32/lib/delay.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/delay.c 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,55 @@
++/*
++ * Precise Delay Loops for avr32
++ *
++ * Copyright (C) 1993 Linus Torvalds
++ * Copyright (C) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/delay.h>
++#include <linux/module.h>
++#include <linux/types.h>
++
++#include <asm/delay.h>
++#include <asm/processor.h>
++#include <asm/sysreg.h>
++
++int read_current_timer(unsigned long *timer_value)
++{
++ *timer_value = sysreg_read(COUNT);
++ return 0;
++}
++
++void __delay(unsigned long loops)
++{
++ unsigned bclock, now;
++
++ bclock = sysreg_read(COUNT);
++ do {
++ now = sysreg_read(COUNT);
++ } while ((now - bclock) < loops);
++}
++
++inline void __const_udelay(unsigned long xloops)
++{
++ unsigned long long loops;
++
++ asm("mulu.d %0, %1, %2"
++ : "=r"(loops)
++ : "r"(current_cpu_data.loops_per_jiffy * HZ), "r"(xloops));
++ __delay(loops >> 32);
++}
++
++void __udelay(unsigned long usecs)
++{
++ __const_udelay(usecs * 0x000010c7); /* 2**32 / 1000000 (rounded up) */
++}
++
++void __ndelay(unsigned long nsecs)
++{
++ __const_udelay(nsecs * 0x00005); /* 2**32 / 1000000000 (rounded up) */
++}
+Index: linux-2.6.18-avr32/arch/avr32/lib/findbit.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/findbit.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,155 @@
++/*
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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/linkage.h>
++
++ .text
++ /*
++ * unsigned long find_first_zero_bit(const unsigned long *addr,
++ * unsigned long size)
++ */
++ENTRY(find_first_zero_bit)
++ cp.w r11, 0
++ reteq r11
++ mov r9, r11
++1: ld.w r8, r12[0]
++ com r8
++ brne .L_found
++ sub r12, -4
++ sub r9, 32
++ brgt 1b
++ retal r11
++
++ /*
++ * unsigned long find_next_zero_bit(const unsigned long *addr,
++ * unsigned long size,
++ * unsigned long offset)
++ */
++ENTRY(find_next_zero_bit)
++ lsr r8, r10, 5
++ sub r9, r11, r10
++ retle r11
++
++ lsl r8, 2
++ add r12, r8
++ andl r10, 31, COH
++ breq 1f
++
++ /* offset is not word-aligned. Handle the first (32 - r10) bits */
++ ld.w r8, r12[0]
++ com r8
++ sub r12, -4
++ lsr r8, r8, r10
++ brne .L_found
++
++ /* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
++ add r9, r10
++ sub r9, 32
++ retle r11
++
++ /* Main loop. offset must be word-aligned */
++1: ld.w r8, r12[0]
++ com r8
++ brne .L_found
++ sub r12, -4
++ sub r9, 32
++ brgt 1b
++ retal r11
++
++ /* Common return path for when a bit is actually found. */
++.L_found:
++ brev r8
++ clz r10, r8
++ rsub r9, r11
++ add r10, r9
++
++ /* XXX: If we don't have to return exactly "size" when the bit
++ is not found, we may drop this "min" thing */
++ min r12, r11, r10
++ retal r12
++
++ /*
++ * unsigned long find_first_bit(const unsigned long *addr,
++ * unsigned long size)
++ */
++ENTRY(find_first_bit)
++ cp.w r11, 0
++ reteq r11
++ mov r9, r11
++1: ld.w r8, r12[0]
++ cp.w r8, 0
++ brne .L_found
++ sub r12, -4
++ sub r9, 32
++ brgt 1b
++ retal r11
++
++ /*
++ * unsigned long find_next_bit(const unsigned long *addr,
++ * unsigned long size,
++ * unsigned long offset)
++ */
++ENTRY(find_next_bit)
++ lsr r8, r10, 5
++ sub r9, r11, r10
++ retle r11
++
++ lsl r8, 2
++ add r12, r8
++ andl r10, 31, COH
++ breq 1f
++
++ /* offset is not word-aligned. Handle the first (32 - r10) bits */
++ ld.w r8, r12[0]
++ sub r12, -4
++ lsr r8, r8, r10
++ brne .L_found
++
++ /* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
++ add r9, r10
++ sub r9, 32
++ retle r11
++
++ /* Main loop. offset must be word-aligned */
++1: ld.w r8, r12[0]
++ cp.w r8, 0
++ brne .L_found
++ sub r12, -4
++ sub r9, 32
++ brgt 1b
++ retal r11
++
++ENTRY(generic_find_next_zero_le_bit)
++ lsr r8, r10, 5
++ sub r9, r11, r10
++ retle r11
++
++ lsl r8, 2
++ add r12, r8
++ andl r10, 31, COH
++ breq 1f
++
++ /* offset is not word-aligned. Handle the first (32 - r10) bits */
++ ldswp.w r8, r12[0]
++ sub r12, -4
++ com r8
++ lsr r8, r8, r10
++ brne .L_found
++
++ /* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
++ add r9, r10
++ sub r9, 32
++ retle r11
++
++ /* Main loop. offset must be word-aligned */
++1: ldswp.w r8, r12[0]
++ com r8
++ brne .L_found
++ sub r12, -4
++ sub r9, 32
++ brgt 1b
++ retal r11
+Index: linux-2.6.18-avr32/arch/avr32/lib/io-readsl.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/io-readsl.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,24 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ .global __raw_readsl
++ .type __raw_readsl,@function
++__raw_readsl:
++ cp.w r10, 0
++ reteq r12
++
++ /*
++ * If r11 isn't properly aligned, we might get an exception on
++ * some implementations. But there's not much we can do about it.
++ */
++1: ld.w r8, r12[0]
++ sub r10, 1
++ st.w r11++, r8
++ brne 1b
++
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/io-readsw.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/io-readsw.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,43 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++.Lnot_word_aligned:
++ /*
++ * Bad alignment will cause a hardware exception, which is as
++ * good as anything. No need for us to check for proper alignment.
++ */
++ ld.uh r8, r12[0]
++ sub r10, 1
++ st.h r11++, r8
++
++ /* fall through */
++
++ .global __raw_readsw
++ .type __raw_readsw,@function
++__raw_readsw:
++ cp.w r10, 0
++ reteq r12
++ mov r9, 3
++ tst r11, r9
++ brne .Lnot_word_aligned
++
++ sub r10, 2
++ brlt 2f
++
++1: ldins.h r8:t, r12[0]
++ ldins.h r8:b, r12[0]
++ st.w r11++, r8
++ sub r10, 2
++ brge 1b
++
++2: sub r10, -2
++ reteq r12
++
++ ld.uh r8, r12[0]
++ st.h r11++, r8
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/io-writesl.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/io-writesl.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,20 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ .global __raw_writesl
++ .type __raw_writesl,@function
++__raw_writesl:
++ cp.w r10, 0
++ reteq r12
++
++1: ld.w r8, r11++
++ sub r10, 1
++ st.w r12[0], r8
++ brne 1b
++
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/io-writesw.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/io-writesw.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,38 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++.Lnot_word_aligned:
++ ld.uh r8, r11++
++ sub r10, 1
++ st.h r12[0], r8
++
++ .global __raw_writesw
++ .type __raw_writesw,@function
++__raw_writesw:
++ cp.w r10, 0
++ mov r9, 3
++ reteq r12
++ tst r11, r9
++ brne .Lnot_word_aligned
++
++ sub r10, 2
++ brlt 2f
++
++1: ld.w r8, r11++
++ bfextu r9, r8, 16, 16
++ st.h r12[0], r9
++ st.h r12[0], r8
++ sub r10, 2
++ brge 1b
++
++2: sub r10, -2
++ reteq r12
++
++ ld.uh r8, r11++
++ st.h r12[0], r8
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/libgcc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/libgcc.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,33 @@
++/* Definitions for various functions 'borrowed' from gcc-3.4.3 */
++
++#define BITS_PER_UNIT 8
++
++typedef int QItype __attribute__ ((mode (QI)));
++typedef unsigned int UQItype __attribute__ ((mode (QI)));
++typedef int HItype __attribute__ ((mode (HI)));
++typedef unsigned int UHItype __attribute__ ((mode (HI)));
++typedef int SItype __attribute__ ((mode (SI)));
++typedef unsigned int USItype __attribute__ ((mode (SI)));
++typedef int DItype __attribute__ ((mode (DI)));
++typedef unsigned int UDItype __attribute__ ((mode (DI)));
++typedef float SFtype __attribute__ ((mode (SF)));
++typedef float DFtype __attribute__ ((mode (DF)));
++typedef int word_type __attribute__ ((mode (__word__)));
++
++#define W_TYPE_SIZE (4 * BITS_PER_UNIT)
++#define Wtype SItype
++#define UWtype USItype
++#define HWtype SItype
++#define UHWtype USItype
++#define DWtype DItype
++#define UDWtype UDItype
++#define __NW(a,b) __ ## a ## si ## b
++#define __NDW(a,b) __ ## a ## di ## b
++
++struct DWstruct {Wtype high, low;};
++
++typedef union
++{
++ struct DWstruct s;
++ DWtype ll;
++} DWunion;
+Index: linux-2.6.18-avr32/arch/avr32/lib/longlong.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/longlong.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,98 @@
++/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
++ Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000
++ Free Software Foundation, Inc.
++
++ This definition file 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, or (at your option) any later version.
++
++ This definition file 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. */
++
++/* Borrowed from gcc-3.4.3 */
++
++#define __BITS4 (W_TYPE_SIZE / 4)
++#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
++#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1))
++#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2))
++
++#define count_leading_zeros(count, x) ((count) = __builtin_clz(x))
++
++#define __udiv_qrnnd_c(q, r, n1, n0, d) \
++ do { \
++ UWtype __d1, __d0, __q1, __q0; \
++ UWtype __r1, __r0, __m; \
++ __d1 = __ll_highpart (d); \
++ __d0 = __ll_lowpart (d); \
++ \
++ __r1 = (n1) % __d1; \
++ __q1 = (n1) / __d1; \
++ __m = (UWtype) __q1 * __d0; \
++ __r1 = __r1 * __ll_B | __ll_highpart (n0); \
++ if (__r1 < __m) \
++ { \
++ __q1--, __r1 += (d); \
++ if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
++ if (__r1 < __m) \
++ __q1--, __r1 += (d); \
++ } \
++ __r1 -= __m; \
++ \
++ __r0 = __r1 % __d1; \
++ __q0 = __r1 / __d1; \
++ __m = (UWtype) __q0 * __d0; \
++ __r0 = __r0 * __ll_B | __ll_lowpart (n0); \
++ if (__r0 < __m) \
++ { \
++ __q0--, __r0 += (d); \
++ if (__r0 >= (d)) \
++ if (__r0 < __m) \
++ __q0--, __r0 += (d); \
++ } \
++ __r0 -= __m; \
++ \
++ (q) = (UWtype) __q1 * __ll_B | __q0; \
++ (r) = __r0; \
++ } while (0)
++
++#define udiv_qrnnd __udiv_qrnnd_c
++
++#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
++ do { \
++ UWtype __x; \
++ __x = (al) - (bl); \
++ (sh) = (ah) - (bh) - (__x > (al)); \
++ (sl) = __x; \
++ } while (0)
++
++#define umul_ppmm(w1, w0, u, v) \
++ do { \
++ UWtype __x0, __x1, __x2, __x3; \
++ UHWtype __ul, __vl, __uh, __vh; \
++ \
++ __ul = __ll_lowpart (u); \
++ __uh = __ll_highpart (u); \
++ __vl = __ll_lowpart (v); \
++ __vh = __ll_highpart (v); \
++ \
++ __x0 = (UWtype) __ul * __vl; \
++ __x1 = (UWtype) __ul * __vh; \
++ __x2 = (UWtype) __uh * __vl; \
++ __x3 = (UWtype) __uh * __vh; \
++ \
++ __x1 += __ll_highpart (__x0);/* this can't give carry */ \
++ __x1 += __x2; /* but this indeed can */ \
++ if (__x1 < __x2) /* did we get it? */ \
++ __x3 += __ll_B; /* yes, add it in the proper pos. */ \
++ \
++ (w1) = __x3 + __ll_highpart (__x1); \
++ (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \
++ } while (0)
+Index: linux-2.6.18-avr32/arch/avr32/lib/memcpy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/memcpy.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ /*
++ * void *memcpy(void *to, const void *from, unsigned long n)
++ *
++ * This implementation does word-aligned loads in the main loop,
++ * possibly sacrificing alignment of stores.
++ *
++ * Hopefully, in most cases, both "to" and "from" will be
++ * word-aligned to begin with.
++ */
++ .text
++ .global memcpy
++ .type memcpy, @function
++memcpy:
++ mov r9, r11
++ andl r9, 3, COH
++ brne 1f
++
++ /* At this point, "from" is word-aligned */
++2: sub r10, 4
++ mov r9, r12
++ brlt 4f
++
++3: ld.w r8, r11++
++ sub r10, 4
++ st.w r12++, r8
++ brge 3b
++
++4: neg r10
++ reteq r9
++
++ /* Handle unaligned count */
++ lsl r10, 2
++ add pc, pc, r10
++ ld.ub r8, r11++
++ st.b r12++, r8
++ ld.ub r8, r11++
++ st.b r12++, r8
++ ld.ub r8, r11++
++ st.b r12++, r8
++ retal r9
++
++ /* Handle unaligned "from" pointer */
++1: sub r10, 4
++ brlt 4b
++ add r10, r9
++ lsl r9, 2
++ add pc, pc, r9
++ ld.ub r8, r11++
++ st.b r12++, r8
++ ld.ub r8, r11++
++ st.b r12++, r8
++ ld.ub r8, r11++
++ st.b r12++, r8
++ rjmp 2b
+Index: linux-2.6.18-avr32/arch/avr32/lib/memset.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/memset.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * Based on linux/arch/arm/lib/memset.S
++ * Copyright (C) 1995-2000 Russell King
++ *
++ * 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.
++ *
++ * ASM optimised string functions
++ */
++#include <asm/asm.h>
++
++ /*
++ * r12: void *b
++ * r11: int c
++ * r10: size_t len
++ *
++ * Returns b in r12
++ */
++ .text
++ .global memset
++ .type memset, @function
++ .align 5
++memset:
++ mov r9, r12
++ mov r8, r12
++ or r11, r11, r11 << 8
++ andl r9, 3, COH
++ brne 1f
++
++2: or r11, r11, r11 << 16
++ sub r10, 4
++ brlt 5f
++
++ /* Let's do some real work */
++4: st.w r8++, r11
++ sub r10, 4
++ brge 4b
++
++ /*
++ * When we get here, we've got less than 4 bytes to set. r10
++ * might be negative.
++ */
++5: sub r10, -4
++ reteq r12
++
++ /* Fastpath ends here, exactly 32 bytes from memset */
++
++ /* Handle unaligned count or pointer */
++ bld r10, 1
++ brcc 6f
++ st.b r8++, r11
++ st.b r8++, r11
++ bld r10, 0
++ retcc r12
++6: st.b r8++, r11
++ retal r12
++
++ /* Handle unaligned pointer */
++1: sub r10, 4
++ brlt 5b
++ add r10, r9
++ lsl r9, 1
++ add pc, r9
++ st.b r8++, r11
++ st.b r8++, r11
++ st.b r8++, r11
++ rjmp 2b
++
++ .size memset, . - memset
+Index: linux-2.6.18-avr32/arch/avr32/lib/strncpy_from_user.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/strncpy_from_user.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,60 @@
++/*
++ * Copy to/from userspace with optional address space checking.
++ *
++ * Copyright 2004-2006 Atmel Corporation
++ *
++ * 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/errno.h>
++
++#include <asm/page.h>
++#include <asm/thread_info.h>
++#include <asm/asm.h>
++
++ /*
++ * long strncpy_from_user(char *dst, const char *src, long count)
++ *
++ * On success, returns the length of the string, not including
++ * the terminating NUL.
++ *
++ * If the string is longer than count, returns count
++ *
++ * If userspace access fails, returns -EFAULT
++ */
++ .text
++ .align 1
++ .global strncpy_from_user
++ .type strncpy_from_user, "function"
++strncpy_from_user:
++ mov r9, -EFAULT
++ branch_if_kernel r8, __strncpy_from_user
++ ret_if_privileged r8, r11, r10, r9
++
++ .global __strncpy_from_user
++ .type __strncpy_from_user, "function"
++__strncpy_from_user:
++ cp.w r10, 0
++ reteq 0
++
++ mov r9, r10
++
++1: ld.ub r8, r11++
++ st.b r12++, r8
++ cp.w r8, 0
++ breq 2f
++ sub r9, 1
++ brne 1b
++
++2: sub r10, r9
++ retal r10
++
++ .section .fixup, "ax"
++ .align 1
++3: mov r12, -EFAULT
++ retal r12
++
++ .section __ex_table, "a"
++ .align 2
++ .long 1b, 3b
+Index: linux-2.6.18-avr32/arch/avr32/lib/strnlen_user.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/strnlen_user.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,67 @@
++/*
++ * Copy to/from userspace with optional address space checking.
++ *
++ * Copyright 2004-2006 Atmel Corporation
++ *
++ * 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 <asm/page.h>
++#include <asm/thread_info.h>
++#include <asm/processor.h>
++#include <asm/asm.h>
++
++ .text
++ .align 1
++ .global strnlen_user
++ .type strnlen_user, "function"
++strnlen_user:
++ branch_if_kernel r8, __strnlen_user
++ sub r8, r11, 1
++ add r8, r12
++ retcs 0
++ brmi adjust_length /* do a closer inspection */
++
++ .global __strnlen_user
++ .type __strnlen_user, "function"
++__strnlen_user:
++ mov r10, r12
++
++10: ld.ub r8, r12++
++ cp.w r8, 0
++ breq 2f
++ sub r11, 1
++ brne 10b
++
++ sub r12, -1
++2: sub r12, r10
++ retal r12
++
++
++ .type adjust_length, "function"
++adjust_length:
++ cp.w r12, 0 /* addr must always be < TASK_SIZE */
++ retmi 0
++
++ pushm lr
++ lddpc lr, _task_size
++ sub r11, lr, r12
++ mov r9, r11
++ rcall __strnlen_user
++ cp.w r12, r9
++ brgt 1f
++ popm pc
++1: popm pc, r12=0
++
++ .align 2
++_task_size:
++ .long TASK_SIZE
++
++ .section .fixup, "ax"
++ .align 1
++19: retal 0
++
++ .section __ex_table, "a"
++ .align 2
++ .long 10b, 19b
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/Makefile 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,2 @@
++obj-y += at32ap.o clock.o pio.o intc.o extint.o hsmc.o
++obj-$(CONFIG_CPU_AT32AP7000) += at32ap7000.o
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap.c 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,90 @@
++/*
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/err.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++
++#include <asm/io.h>
++
++#include <asm/arch/init.h>
++#include <asm/arch/sm.h>
++
++struct at32_sm system_manager;
++
++static int __init at32_sm_init(void)
++{
++ struct resource *regs;
++ struct at32_sm *sm = &system_manager;
++ int ret = -ENXIO;
++
++ regs = platform_get_resource(&at32_sm_device, IORESOURCE_MEM, 0);
++ if (!regs)
++ goto fail;
++
++ spin_lock_init(&sm->lock);
++ sm->pdev = &at32_sm_device;
++
++ ret = -ENOMEM;
++ sm->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!sm->regs)
++ goto fail;
++
++ return 0;
++
++fail:
++ printk(KERN_ERR "Failed to initialize System Manager: %d\n", ret);
++ return ret;
++}
++
++void __init setup_platform(void)
++{
++ at32_sm_init();
++ at32_clock_init();
++ at32_portmux_init();
++
++ /* FIXME: This doesn't belong here */
++ at32_setup_serial_console(1);
++}
++
++static int __init pdc_probe(struct platform_device *pdev)
++{
++ struct clk *pclk, *hclk;
++
++ pclk = clk_get(&pdev->dev, "pclk");
++ if (IS_ERR(pclk)) {
++ dev_err(&pdev->dev, "no pclk defined\n");
++ return PTR_ERR(pclk);
++ }
++ hclk = clk_get(&pdev->dev, "hclk");
++ if (IS_ERR(hclk)) {
++ dev_err(&pdev->dev, "no hclk defined\n");
++ clk_put(pclk);
++ return PTR_ERR(hclk);
++ }
++
++ clk_enable(pclk);
++ clk_enable(hclk);
++
++ dev_info(&pdev->dev, "Atmel Peripheral DMA Controller enabled\n");
++ return 0;
++}
++
++static struct platform_driver pdc_driver = {
++ .probe = pdc_probe,
++ .driver = {
++ .name = "pdc",
++ },
++};
++
++static int __init pdc_init(void)
++{
++ return platform_driver_register(&pdc_driver);
++}
++arch_initcall(pdc_init);
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,876 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++
++#include <asm/io.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/portmux.h>
++#include <asm/arch/sm.h>
++
++#include "clock.h"
++#include "pio.h"
++#include "sm.h"
++
++#define PBMEM(base) \
++ { \
++ .start = base, \
++ .end = base + 0x3ff, \
++ .flags = IORESOURCE_MEM, \
++ }
++#define IRQ(num) \
++ { \
++ .start = num, \
++ .end = num, \
++ .flags = IORESOURCE_IRQ, \
++ }
++#define NAMED_IRQ(num, _name) \
++ { \
++ .start = num, \
++ .end = num, \
++ .name = _name, \
++ .flags = IORESOURCE_IRQ, \
++ }
++
++#define DEFINE_DEV(_name, _id) \
++static struct platform_device _name##_id##_device = { \
++ .name = #_name, \
++ .id = _id, \
++ .resource = _name##_id##_resource, \
++ .num_resources = ARRAY_SIZE(_name##_id##_resource), \
++}
++#define DEFINE_DEV_DATA(_name, _id) \
++static struct platform_device _name##_id##_device = { \
++ .name = #_name, \
++ .id = _id, \
++ .dev = { \
++ .platform_data = &_name##_id##_data, \
++ }, \
++ .resource = _name##_id##_resource, \
++ .num_resources = ARRAY_SIZE(_name##_id##_resource), \
++}
++
++#define DEV_CLK(_name, devname, bus, _index) \
++static struct clk devname##_##_name = { \
++ .name = #_name, \
++ .dev = &devname##_device.dev, \
++ .parent = &bus##_clk, \
++ .mode = bus##_clk_mode, \
++ .get_rate = bus##_clk_get_rate, \
++ .index = _index, \
++}
++
++enum {
++ PIOA,
++ PIOB,
++ PIOC,
++ PIOD,
++};
++
++enum {
++ FUNC_A,
++ FUNC_B,
++};
++
++unsigned long at32ap7000_osc_rates[3] = {
++ [0] = 32768,
++ /* FIXME: these are ATSTK1002-specific */
++ [1] = 20000000,
++ [2] = 12000000,
++};
++
++static unsigned long osc_get_rate(struct clk *clk)
++{
++ return at32ap7000_osc_rates[clk->index];
++}
++
++static unsigned long pll_get_rate(struct clk *clk, unsigned long control)
++{
++ unsigned long div, mul, rate;
++
++ if (!(control & SM_BIT(PLLEN)))
++ return 0;
++
++ div = SM_BFEXT(PLLDIV, control) + 1;
++ mul = SM_BFEXT(PLLMUL, control) + 1;
++
++ rate = clk->parent->get_rate(clk->parent);
++ rate = (rate + div / 2) / div;
++ rate *= mul;
++
++ return rate;
++}
++
++static unsigned long pll0_get_rate(struct clk *clk)
++{
++ u32 control;
++
++ control = sm_readl(&system_manager, PM_PLL0);
++
++ return pll_get_rate(clk, control);
++}
++
++static unsigned long pll1_get_rate(struct clk *clk)
++{
++ u32 control;
++
++ control = sm_readl(&system_manager, PM_PLL1);
++
++ return pll_get_rate(clk, control);
++}
++
++/*
++ * The AT32AP7000 has five primary clock sources: One 32kHz
++ * oscillator, two crystal oscillators and two PLLs.
++ */
++static struct clk osc32k = {
++ .name = "osc32k",
++ .get_rate = osc_get_rate,
++ .users = 1,
++ .index = 0,
++};
++static struct clk osc0 = {
++ .name = "osc0",
++ .get_rate = osc_get_rate,
++ .users = 1,
++ .index = 1,
++};
++static struct clk osc1 = {
++ .name = "osc1",
++ .get_rate = osc_get_rate,
++ .index = 2,
++};
++static struct clk pll0 = {
++ .name = "pll0",
++ .get_rate = pll0_get_rate,
++ .parent = &osc0,
++};
++static struct clk pll1 = {
++ .name = "pll1",
++ .get_rate = pll1_get_rate,
++ .parent = &osc0,
++};
++
++/*
++ * The main clock can be either osc0 or pll0. The boot loader may
++ * have chosen one for us, so we don't really know which one until we
++ * have a look at the SM.
++ */
++static struct clk *main_clock;
++
++/*
++ * Synchronous clocks are generated from the main clock. The clocks
++ * must satisfy the constraint
++ * fCPU >= fHSB >= fPB
++ * i.e. each clock must not be faster than its parent.
++ */
++static unsigned long bus_clk_get_rate(struct clk *clk, unsigned int shift)
++{
++ return main_clock->get_rate(main_clock) >> shift;
++};
++
++static void cpu_clk_mode(struct clk *clk, int enabled)
++{
++ struct at32_sm *sm = &system_manager;
++ unsigned long flags;
++ u32 mask;
++
++ spin_lock_irqsave(&sm->lock, flags);
++ mask = sm_readl(sm, PM_CPU_MASK);
++ if (enabled)
++ mask |= 1 << clk->index;
++ else
++ mask &= ~(1 << clk->index);
++ sm_writel(sm, PM_CPU_MASK, mask);
++ spin_unlock_irqrestore(&sm->lock, flags);
++}
++
++static unsigned long cpu_clk_get_rate(struct clk *clk)
++{
++ unsigned long cksel, shift = 0;
++
++ cksel = sm_readl(&system_manager, PM_CKSEL);
++ if (cksel & SM_BIT(CPUDIV))
++ shift = SM_BFEXT(CPUSEL, cksel) + 1;
++
++ return bus_clk_get_rate(clk, shift);
++}
++
++static void hsb_clk_mode(struct clk *clk, int enabled)
++{
++ struct at32_sm *sm = &system_manager;
++ unsigned long flags;
++ u32 mask;
++
++ spin_lock_irqsave(&sm->lock, flags);
++ mask = sm_readl(sm, PM_HSB_MASK);
++ if (enabled)
++ mask |= 1 << clk->index;
++ else
++ mask &= ~(1 << clk->index);
++ sm_writel(sm, PM_HSB_MASK, mask);
++ spin_unlock_irqrestore(&sm->lock, flags);
++}
++
++static unsigned long hsb_clk_get_rate(struct clk *clk)
++{
++ unsigned long cksel, shift = 0;
++
++ cksel = sm_readl(&system_manager, PM_CKSEL);
++ if (cksel & SM_BIT(HSBDIV))
++ shift = SM_BFEXT(HSBSEL, cksel) + 1;
++
++ return bus_clk_get_rate(clk, shift);
++}
++
++static void pba_clk_mode(struct clk *clk, int enabled)
++{
++ struct at32_sm *sm = &system_manager;
++ unsigned long flags;
++ u32 mask;
++
++ spin_lock_irqsave(&sm->lock, flags);
++ mask = sm_readl(sm, PM_PBA_MASK);
++ if (enabled)
++ mask |= 1 << clk->index;
++ else
++ mask &= ~(1 << clk->index);
++ sm_writel(sm, PM_PBA_MASK, mask);
++ spin_unlock_irqrestore(&sm->lock, flags);
++}
++
++static unsigned long pba_clk_get_rate(struct clk *clk)
++{
++ unsigned long cksel, shift = 0;
++
++ cksel = sm_readl(&system_manager, PM_CKSEL);
++ if (cksel & SM_BIT(PBADIV))
++ shift = SM_BFEXT(PBASEL, cksel) + 1;
++
++ return bus_clk_get_rate(clk, shift);
++}
++
++static void pbb_clk_mode(struct clk *clk, int enabled)
++{
++ struct at32_sm *sm = &system_manager;
++ unsigned long flags;
++ u32 mask;
++
++ spin_lock_irqsave(&sm->lock, flags);
++ mask = sm_readl(sm, PM_PBB_MASK);
++ if (enabled)
++ mask |= 1 << clk->index;
++ else
++ mask &= ~(1 << clk->index);
++ sm_writel(sm, PM_PBB_MASK, mask);
++ spin_unlock_irqrestore(&sm->lock, flags);
++}
++
++static unsigned long pbb_clk_get_rate(struct clk *clk)
++{
++ unsigned long cksel, shift = 0;
++
++ cksel = sm_readl(&system_manager, PM_CKSEL);
++ if (cksel & SM_BIT(PBBDIV))
++ shift = SM_BFEXT(PBBSEL, cksel) + 1;
++
++ return bus_clk_get_rate(clk, shift);
++}
++
++static struct clk cpu_clk = {
++ .name = "cpu",
++ .get_rate = cpu_clk_get_rate,
++ .users = 1,
++};
++static struct clk hsb_clk = {
++ .name = "hsb",
++ .parent = &cpu_clk,
++ .get_rate = hsb_clk_get_rate,
++};
++static struct clk pba_clk = {
++ .name = "pba",
++ .parent = &hsb_clk,
++ .mode = hsb_clk_mode,
++ .get_rate = pba_clk_get_rate,
++ .index = 1,
++};
++static struct clk pbb_clk = {
++ .name = "pbb",
++ .parent = &hsb_clk,
++ .mode = hsb_clk_mode,
++ .get_rate = pbb_clk_get_rate,
++ .users = 1,
++ .index = 2,
++};
++
++/* --------------------------------------------------------------------
++ * Generic Clock operations
++ * -------------------------------------------------------------------- */
++
++static void genclk_mode(struct clk *clk, int enabled)
++{
++ u32 control;
++
++ BUG_ON(clk->index > 7);
++
++ control = sm_readl(&system_manager, PM_GCCTRL + 4 * clk->index);
++ if (enabled)
++ control |= SM_BIT(CEN);
++ else
++ control &= ~SM_BIT(CEN);
++ sm_writel(&system_manager, PM_GCCTRL + 4 * clk->index, control);
++}
++
++static unsigned long genclk_get_rate(struct clk *clk)
++{
++ u32 control;
++ unsigned long div = 1;
++
++ BUG_ON(clk->index > 7);
++
++ if (!clk->parent)
++ return 0;
++
++ control = sm_readl(&system_manager, PM_GCCTRL + 4 * clk->index);
++ if (control & SM_BIT(DIVEN))
++ div = 2 * (SM_BFEXT(DIV, control) + 1);
++
++ return clk->parent->get_rate(clk->parent) / div;
++}
++
++static long genclk_set_rate(struct clk *clk, unsigned long rate, int apply)
++{
++ u32 control;
++ unsigned long parent_rate, actual_rate, div;
++
++ BUG_ON(clk->index > 7);
++
++ if (!clk->parent)
++ return 0;
++
++ parent_rate = clk->parent->get_rate(clk->parent);
++ control = sm_readl(&system_manager, PM_GCCTRL + 4 * clk->index);
++
++ if (rate > 3 * parent_rate / 4) {
++ actual_rate = parent_rate;
++ control &= ~SM_BIT(DIVEN);
++ } else {
++ div = (parent_rate + rate) / (2 * rate) - 1;
++ control = SM_BFINS(DIV, div, control) | SM_BIT(DIVEN);
++ actual_rate = parent_rate / (2 * (div + 1));
++ }
++
++ printk("clk %s: new rate %lu (actual rate %lu)\n",
++ clk->name, rate, actual_rate);
++
++ if (apply)
++ sm_writel(&system_manager, PM_GCCTRL + 4 * clk->index,
++ control);
++
++ return actual_rate;
++}
++
++int genclk_set_parent(struct clk *clk, struct clk *parent)
++{
++ u32 control;
++
++ BUG_ON(clk->index > 7);
++
++ printk("clk %s: new parent %s (was %s)\n",
++ clk->name, parent->name,
++ clk->parent ? clk->parent->name : "(null)");
++
++ control = sm_readl(&system_manager, PM_GCCTRL + 4 * clk->index);
++
++ if (parent == &osc1 || parent == &pll1)
++ control |= SM_BIT(OSCSEL);
++ else if (parent == &osc0 || parent == &pll0)
++ control &= ~SM_BIT(OSCSEL);
++ else
++ return -EINVAL;
++
++ if (parent == &pll0 || parent == &pll1)
++ control |= SM_BIT(PLLSEL);
++ else
++ control &= ~SM_BIT(PLLSEL);
++
++ sm_writel(&system_manager, PM_GCCTRL + 4 * clk->index, control);
++ clk->parent = parent;
++
++ return 0;
++}
++
++/* --------------------------------------------------------------------
++ * System peripherals
++ * -------------------------------------------------------------------- */
++static struct resource sm_resource[] = {
++ PBMEM(0xfff00000),
++ NAMED_IRQ(19, "eim"),
++ NAMED_IRQ(20, "pm"),
++ NAMED_IRQ(21, "rtc"),
++};
++struct platform_device at32_sm_device = {
++ .name = "sm",
++ .id = 0,
++ .resource = sm_resource,
++ .num_resources = ARRAY_SIZE(sm_resource),
++};
++DEV_CLK(pclk, at32_sm, pbb, 0);
++
++static struct resource intc0_resource[] = {
++ PBMEM(0xfff00400),
++};
++struct platform_device at32_intc0_device = {
++ .name = "intc",
++ .id = 0,
++ .resource = intc0_resource,
++ .num_resources = ARRAY_SIZE(intc0_resource),
++};
++DEV_CLK(pclk, at32_intc0, pbb, 1);
++
++static struct clk ebi_clk = {
++ .name = "ebi",
++ .parent = &hsb_clk,
++ .mode = hsb_clk_mode,
++ .get_rate = hsb_clk_get_rate,
++ .users = 1,
++};
++static struct clk hramc_clk = {
++ .name = "hramc",
++ .parent = &hsb_clk,
++ .mode = hsb_clk_mode,
++ .get_rate = hsb_clk_get_rate,
++ .users = 1,
++};
++
++static struct resource smc0_resource[] = {
++ PBMEM(0xfff03400),
++};
++DEFINE_DEV(smc, 0);
++DEV_CLK(pclk, smc0, pbb, 13);
++DEV_CLK(mck, smc0, hsb, 0);
++
++static struct platform_device pdc_device = {
++ .name = "pdc",
++ .id = 0,
++};
++DEV_CLK(hclk, pdc, hsb, 4);
++DEV_CLK(pclk, pdc, pba, 16);
++
++static struct clk pico_clk = {
++ .name = "pico",
++ .parent = &cpu_clk,
++ .mode = cpu_clk_mode,
++ .get_rate = cpu_clk_get_rate,
++ .users = 1,
++};
++
++/* --------------------------------------------------------------------
++ * PIO
++ * -------------------------------------------------------------------- */
++
++static struct resource pio0_resource[] = {
++ PBMEM(0xffe02800),
++ IRQ(13),
++};
++DEFINE_DEV(pio, 0);
++DEV_CLK(mck, pio0, pba, 10);
++
++static struct resource pio1_resource[] = {
++ PBMEM(0xffe02c00),
++ IRQ(14),
++};
++DEFINE_DEV(pio, 1);
++DEV_CLK(mck, pio1, pba, 11);
++
++static struct resource pio2_resource[] = {
++ PBMEM(0xffe03000),
++ IRQ(15),
++};
++DEFINE_DEV(pio, 2);
++DEV_CLK(mck, pio2, pba, 12);
++
++static struct resource pio3_resource[] = {
++ PBMEM(0xffe03400),
++ IRQ(16),
++};
++DEFINE_DEV(pio, 3);
++DEV_CLK(mck, pio3, pba, 13);
++
++void __init at32_add_system_devices(void)
++{
++ system_manager.eim_first_irq = NR_INTERNAL_IRQS;
++
++ platform_device_register(&at32_sm_device);
++ platform_device_register(&at32_intc0_device);
++ platform_device_register(&smc0_device);
++ platform_device_register(&pdc_device);
++
++ platform_device_register(&pio0_device);
++ platform_device_register(&pio1_device);
++ platform_device_register(&pio2_device);
++ platform_device_register(&pio3_device);
++}
++
++/* --------------------------------------------------------------------
++ * USART
++ * -------------------------------------------------------------------- */
++
++static struct resource usart0_resource[] = {
++ PBMEM(0xffe00c00),
++ IRQ(7),
++};
++DEFINE_DEV(usart, 0);
++DEV_CLK(usart, usart0, pba, 4);
++
++static struct resource usart1_resource[] = {
++ PBMEM(0xffe01000),
++ IRQ(7),
++};
++DEFINE_DEV(usart, 1);
++DEV_CLK(usart, usart1, pba, 4);
++
++static struct resource usart2_resource[] = {
++ PBMEM(0xffe01400),
++ IRQ(8),
++};
++DEFINE_DEV(usart, 2);
++DEV_CLK(usart, usart2, pba, 5);
++
++static struct resource usart3_resource[] = {
++ PBMEM(0xffe01800),
++ IRQ(9),
++};
++DEFINE_DEV(usart, 3);
++DEV_CLK(usart, usart3, pba, 6);
++
++static inline void configure_usart0_pins(void)
++{
++ portmux_set_func(PIOA, 8, FUNC_B); /* RXD */
++ portmux_set_func(PIOA, 9, FUNC_B); /* TXD */
++}
++
++static inline void configure_usart1_pins(void)
++{
++ portmux_set_func(PIOA, 17, FUNC_A); /* RXD */
++ portmux_set_func(PIOA, 18, FUNC_A); /* TXD */
++}
++
++static inline void configure_usart2_pins(void)
++{
++ portmux_set_func(PIOB, 26, FUNC_B); /* RXD */
++ portmux_set_func(PIOB, 27, FUNC_B); /* TXD */
++}
++
++static inline void configure_usart3_pins(void)
++{
++ portmux_set_func(PIOB, 18, FUNC_B); /* RXD */
++ portmux_set_func(PIOB, 17, FUNC_B); /* TXD */
++}
++
++static struct platform_device *setup_usart(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &usart0_device;
++ configure_usart0_pins();
++ break;
++ case 1:
++ pdev = &usart1_device;
++ configure_usart1_pins();
++ break;
++ case 2:
++ pdev = &usart2_device;
++ configure_usart2_pins();
++ break;
++ case 3:
++ pdev = &usart3_device;
++ configure_usart3_pins();
++ break;
++ default:
++ pdev = NULL;
++ break;
++ }
++
++ return pdev;
++}
++
++struct platform_device *__init at32_add_device_usart(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ pdev = setup_usart(id);
++ if (pdev)
++ platform_device_register(pdev);
++
++ return pdev;
++}
++
++struct platform_device *at91_default_console_device;
++
++void __init at32_setup_serial_console(unsigned int usart_id)
++{
++ at91_default_console_device = setup_usart(usart_id);
++}
++
++/* --------------------------------------------------------------------
++ * Ethernet
++ * -------------------------------------------------------------------- */
++
++static struct eth_platform_data macb0_data;
++static struct resource macb0_resource[] = {
++ PBMEM(0xfff01800),
++ IRQ(25),
++};
++DEFINE_DEV_DATA(macb, 0);
++DEV_CLK(hclk, macb0, hsb, 8);
++DEV_CLK(pclk, macb0, pbb, 6);
++
++struct platform_device *__init
++at32_add_device_eth(unsigned int id, struct eth_platform_data *data)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &macb0_device;
++
++ portmux_set_func(PIOC, 3, FUNC_A); /* TXD0 */
++ portmux_set_func(PIOC, 4, FUNC_A); /* TXD1 */
++ portmux_set_func(PIOC, 7, FUNC_A); /* TXEN */
++ portmux_set_func(PIOC, 8, FUNC_A); /* TXCK */
++ portmux_set_func(PIOC, 9, FUNC_A); /* RXD0 */
++ portmux_set_func(PIOC, 10, FUNC_A); /* RXD1 */
++ portmux_set_func(PIOC, 13, FUNC_A); /* RXER */
++ portmux_set_func(PIOC, 15, FUNC_A); /* RXDV */
++ portmux_set_func(PIOC, 16, FUNC_A); /* MDC */
++ portmux_set_func(PIOC, 17, FUNC_A); /* MDIO */
++
++ if (!data->is_rmii) {
++ portmux_set_func(PIOC, 0, FUNC_A); /* COL */
++ portmux_set_func(PIOC, 1, FUNC_A); /* CRS */
++ portmux_set_func(PIOC, 2, FUNC_A); /* TXER */
++ portmux_set_func(PIOC, 5, FUNC_A); /* TXD2 */
++ portmux_set_func(PIOC, 6, FUNC_A); /* TXD3 */
++ portmux_set_func(PIOC, 11, FUNC_A); /* RXD2 */
++ portmux_set_func(PIOC, 12, FUNC_A); /* RXD3 */
++ portmux_set_func(PIOC, 14, FUNC_A); /* RXCK */
++ portmux_set_func(PIOC, 18, FUNC_A); /* SPD */
++ }
++ break;
++
++ default:
++ return NULL;
++ }
++
++ memcpy(pdev->dev.platform_data, data, sizeof(struct eth_platform_data));
++ platform_device_register(pdev);
++
++ return pdev;
++}
++
++/* --------------------------------------------------------------------
++ * SPI
++ * -------------------------------------------------------------------- */
++static struct resource spi0_resource[] = {
++ PBMEM(0xffe00000),
++ IRQ(3),
++};
++DEFINE_DEV(spi, 0);
++DEV_CLK(mck, spi0, pba, 0);
++
++struct platform_device *__init at32_add_device_spi(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &spi0_device;
++ portmux_set_func(PIOA, 0, FUNC_A); /* MISO */
++ portmux_set_func(PIOA, 1, FUNC_A); /* MOSI */
++ portmux_set_func(PIOA, 2, FUNC_A); /* SCK */
++ portmux_set_func(PIOA, 3, FUNC_A); /* NPCS0 */
++ portmux_set_func(PIOA, 4, FUNC_A); /* NPCS1 */
++ portmux_set_func(PIOA, 5, FUNC_A); /* NPCS2 */
++ break;
++
++ default:
++ return NULL;
++ }
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
++/* --------------------------------------------------------------------
++ * LCDC
++ * -------------------------------------------------------------------- */
++static struct lcdc_platform_data lcdc0_data;
++static struct resource lcdc0_resource[] = {
++ {
++ .start = 0xff000000,
++ .end = 0xff000fff,
++ .flags = IORESOURCE_MEM,
++ },
++ IRQ(1),
++};
++DEFINE_DEV_DATA(lcdc, 0);
++DEV_CLK(hclk, lcdc0, hsb, 7);
++static struct clk lcdc0_pixclk = {
++ .name = "pixclk",
++ .dev = &lcdc0_device.dev,
++ .mode = genclk_mode,
++ .get_rate = genclk_get_rate,
++ .set_rate = genclk_set_rate,
++ .set_parent = genclk_set_parent,
++ .index = 7,
++};
++
++struct platform_device *__init
++at32_add_device_lcdc(unsigned int id, struct lcdc_platform_data *data)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &lcdc0_device;
++ portmux_set_func(PIOC, 19, FUNC_A); /* CC */
++ portmux_set_func(PIOC, 20, FUNC_A); /* HSYNC */
++ portmux_set_func(PIOC, 21, FUNC_A); /* PCLK */
++ portmux_set_func(PIOC, 22, FUNC_A); /* VSYNC */
++ portmux_set_func(PIOC, 23, FUNC_A); /* DVAL */
++ portmux_set_func(PIOC, 24, FUNC_A); /* MODE */
++ portmux_set_func(PIOC, 25, FUNC_A); /* PWR */
++ portmux_set_func(PIOC, 26, FUNC_A); /* DATA0 */
++ portmux_set_func(PIOC, 27, FUNC_A); /* DATA1 */
++ portmux_set_func(PIOC, 28, FUNC_A); /* DATA2 */
++ portmux_set_func(PIOC, 29, FUNC_A); /* DATA3 */
++ portmux_set_func(PIOC, 30, FUNC_A); /* DATA4 */
++ portmux_set_func(PIOC, 31, FUNC_A); /* DATA5 */
++ portmux_set_func(PIOD, 0, FUNC_A); /* DATA6 */
++ portmux_set_func(PIOD, 1, FUNC_A); /* DATA7 */
++ portmux_set_func(PIOD, 2, FUNC_A); /* DATA8 */
++ portmux_set_func(PIOD, 3, FUNC_A); /* DATA9 */
++ portmux_set_func(PIOD, 4, FUNC_A); /* DATA10 */
++ portmux_set_func(PIOD, 5, FUNC_A); /* DATA11 */
++ portmux_set_func(PIOD, 6, FUNC_A); /* DATA12 */
++ portmux_set_func(PIOD, 7, FUNC_A); /* DATA13 */
++ portmux_set_func(PIOD, 8, FUNC_A); /* DATA14 */
++ portmux_set_func(PIOD, 9, FUNC_A); /* DATA15 */
++ portmux_set_func(PIOD, 10, FUNC_A); /* DATA16 */
++ portmux_set_func(PIOD, 11, FUNC_A); /* DATA17 */
++ portmux_set_func(PIOD, 12, FUNC_A); /* DATA18 */
++ portmux_set_func(PIOD, 13, FUNC_A); /* DATA19 */
++ portmux_set_func(PIOD, 14, FUNC_A); /* DATA20 */
++ portmux_set_func(PIOD, 15, FUNC_A); /* DATA21 */
++ portmux_set_func(PIOD, 16, FUNC_A); /* DATA22 */
++ portmux_set_func(PIOD, 17, FUNC_A); /* DATA23 */
++
++ clk_set_parent(&lcdc0_pixclk, &pll0);
++ clk_set_rate(&lcdc0_pixclk, clk_get_rate(&pll0));
++ break;
++
++ default:
++ return NULL;
++ }
++
++ memcpy(pdev->dev.platform_data, data,
++ sizeof(struct lcdc_platform_data));
++
++ platform_device_register(pdev);
++ return pdev;
++}
++
++struct clk *at32_clock_list[] = {
++ &osc32k,
++ &osc0,
++ &osc1,
++ &pll0,
++ &pll1,
++ &cpu_clk,
++ &hsb_clk,
++ &pba_clk,
++ &pbb_clk,
++ &at32_sm_pclk,
++ &at32_intc0_pclk,
++ &ebi_clk,
++ &hramc_clk,
++ &smc0_pclk,
++ &smc0_mck,
++ &pdc_hclk,
++ &pdc_pclk,
++ &pico_clk,
++ &pio0_mck,
++ &pio1_mck,
++ &pio2_mck,
++ &pio3_mck,
++ &usart0_usart,
++ &usart1_usart,
++ &usart2_usart,
++ &usart3_usart,
++ &macb0_hclk,
++ &macb0_pclk,
++ &spi0_mck,
++ &lcdc0_hclk,
++ &lcdc0_pixclk,
++};
++unsigned int at32_nr_clocks = ARRAY_SIZE(at32_clock_list);
++
++void __init at32_portmux_init(void)
++{
++ at32_init_pio(&pio0_device);
++ at32_init_pio(&pio1_device);
++ at32_init_pio(&pio2_device);
++ at32_init_pio(&pio3_device);
++}
++
++void __init at32_clock_init(void)
++{
++ struct at32_sm *sm = &system_manager;
++ u32 cpu_mask = 0, hsb_mask = 0, pba_mask = 0, pbb_mask = 0;
++ int i;
++
++ if (sm_readl(sm, PM_MCCTRL) & SM_BIT(PLLSEL))
++ main_clock = &pll0;
++ else
++ main_clock = &osc0;
++
++ if (sm_readl(sm, PM_PLL0) & SM_BIT(PLLOSC))
++ pll0.parent = &osc1;
++ if (sm_readl(sm, PM_PLL1) & SM_BIT(PLLOSC))
++ pll1.parent = &osc1;
++
++ /*
++ * Turn on all clocks that have at least one user already, and
++ * turn off everything else. We only do this for module
++ * clocks, and even though it isn't particularly pretty to
++ * check the address of the mode function, it should do the
++ * trick...
++ */
++ for (i = 0; i < ARRAY_SIZE(at32_clock_list); i++) {
++ struct clk *clk = at32_clock_list[i];
++
++ if (clk->mode == &cpu_clk_mode)
++ cpu_mask |= 1 << clk->index;
++ else if (clk->mode == &hsb_clk_mode)
++ hsb_mask |= 1 << clk->index;
++ else if (clk->mode == &pba_clk_mode)
++ pba_mask |= 1 << clk->index;
++ else if (clk->mode == &pbb_clk_mode)
++ pbb_mask |= 1 << clk->index;
++ }
++
++ sm_writel(sm, PM_CPU_MASK, cpu_mask);
++ sm_writel(sm, PM_HSB_MASK, hsb_mask);
++ sm_writel(sm, PM_PBA_MASK, pba_mask);
++ sm_writel(sm, PM_PBB_MASK, pbb_mask);
++}
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/clock.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/clock.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,148 @@
++/*
++ * Clock management for AT32AP CPUs
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * Based on arch/arm/mach-at91rm9200/clock.c
++ * Copyright (C) 2005 David Brownell
++ * Copyright (C) 2005 Ivan Kokshaysky
++ *
++ * 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/clk.h>
++#include <linux/err.h>
++#include <linux/device.h>
++#include <linux/string.h>
++
++#include "clock.h"
++
++static spinlock_t clk_lock = SPIN_LOCK_UNLOCKED;
++
++struct clk *clk_get(struct device *dev, const char *id)
++{
++ int i;
++
++ for (i = 0; i < at32_nr_clocks; i++) {
++ struct clk *clk = at32_clock_list[i];
++
++ if (clk->dev == dev && strcmp(id, clk->name) == 0)
++ return clk;
++ }
++
++ return ERR_PTR(-ENOENT);
++}
++EXPORT_SYMBOL(clk_get);
++
++void clk_put(struct clk *clk)
++{
++ /* clocks are static for now, we can't free them */
++}
++EXPORT_SYMBOL(clk_put);
++
++static void __clk_enable(struct clk *clk)
++{
++ if (clk->parent)
++ __clk_enable(clk->parent);
++ if (clk->users++ == 0 && clk->mode)
++ clk->mode(clk, 1);
++}
++
++int clk_enable(struct clk *clk)
++{
++ unsigned long flags;
++
++ spin_lock_irqsave(&clk_lock, flags);
++ __clk_enable(clk);
++ spin_unlock_irqrestore(&clk_lock, flags);
++
++ return 0;
++}
++EXPORT_SYMBOL(clk_enable);
++
++static void __clk_disable(struct clk *clk)
++{
++ BUG_ON(clk->users == 0);
++
++ if (--clk->users == 0 && clk->mode)
++ clk->mode(clk, 0);
++ if (clk->parent)
++ __clk_disable(clk->parent);
++}
++
++void clk_disable(struct clk *clk)
++{
++ unsigned long flags;
++
++ spin_lock_irqsave(&clk_lock, flags);
++ __clk_disable(clk);
++ spin_unlock_irqrestore(&clk_lock, flags);
++}
++EXPORT_SYMBOL(clk_disable);
++
++unsigned long clk_get_rate(struct clk *clk)
++{
++ unsigned long flags;
++ unsigned long rate;
++
++ spin_lock_irqsave(&clk_lock, flags);
++ rate = clk->get_rate(clk);
++ spin_unlock_irqrestore(&clk_lock, flags);
++
++ return rate;
++}
++EXPORT_SYMBOL(clk_get_rate);
++
++long clk_round_rate(struct clk *clk, unsigned long rate)
++{
++ unsigned long flags, actual_rate;
++
++ if (!clk->set_rate)
++ return -ENOSYS;
++
++ spin_lock_irqsave(&clk_lock, flags);
++ actual_rate = clk->set_rate(clk, rate, 0);
++ spin_unlock_irqrestore(&clk_lock, flags);
++
++ return actual_rate;
++}
++EXPORT_SYMBOL(clk_round_rate);
++
++int clk_set_rate(struct clk *clk, unsigned long rate)
++{
++ unsigned long flags;
++ long ret;
++
++ if (!clk->set_rate)
++ return -ENOSYS;
++
++ spin_lock_irqsave(&clk_lock, flags);
++ ret = clk->set_rate(clk, rate, 1);
++ spin_unlock_irqrestore(&clk_lock, flags);
++
++ return (ret < 0) ? ret : 0;
++}
++EXPORT_SYMBOL(clk_set_rate);
++
++int clk_set_parent(struct clk *clk, struct clk *parent)
++{
++ unsigned long flags;
++ int ret;
++
++ if (!clk->set_parent)
++ return -ENOSYS;
++
++ spin_lock_irqsave(&clk_lock, flags);
++ ret = clk->set_parent(clk, parent);
++ spin_unlock_irqrestore(&clk_lock, flags);
++
++ return ret;
++}
++EXPORT_SYMBOL(clk_set_parent);
++
++struct clk *clk_get_parent(struct clk *clk)
++{
++ return clk->parent;
++}
++EXPORT_SYMBOL(clk_get_parent);
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/clock.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/clock.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,30 @@
++/*
++ * Clock management for AT32AP CPUs
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * Based on arch/arm/mach-at91rm9200/clock.c
++ * Copyright (C) 2005 David Brownell
++ * Copyright (C) 2005 Ivan Kokshaysky
++ *
++ * 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/clk.h>
++
++struct clk {
++ const char *name; /* Clock name/function */
++ struct device *dev; /* Device the clock is used by */
++ struct clk *parent; /* Parent clock, if any */
++ void (*mode)(struct clk *clk, int enabled);
++ unsigned long (*get_rate)(struct clk *clk);
++ long (*set_rate)(struct clk *clk, unsigned long rate,
++ int apply);
++ int (*set_parent)(struct clk *clk, struct clk *parent);
++ u16 users; /* Enabled if non-zero */
++ u16 index; /* Sibling index */
++};
++
++extern struct clk *at32_clock_list[];
++extern unsigned int at32_nr_clocks;
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/extint.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/extint.c 2006-12-04 12:00:24.000000000 +0100
+@@ -0,0 +1,189 @@
++/*
++ * External interrupt handling for AT32AP CPUs
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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/errno.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/irq.h>
++#include <linux/platform_device.h>
++#include <linux/random.h>
++
++#include <asm/io.h>
++
++#include <asm/arch/sm.h>
++
++#include "sm.h"
++
++static void eim_ack_irq(unsigned int irq)
++{
++ struct at32_sm *sm = get_irq_chip_data(irq);
++ sm_writel(sm, EIM_ICR, 1 << (irq - sm->eim_first_irq));
++}
++
++static void eim_mask_irq(unsigned int irq)
++{
++ struct at32_sm *sm = get_irq_chip_data(irq);
++ sm_writel(sm, EIM_IDR, 1 << (irq - sm->eim_first_irq));
++}
++
++static void eim_mask_ack_irq(unsigned int irq)
++{
++ struct at32_sm *sm = get_irq_chip_data(irq);
++ sm_writel(sm, EIM_ICR, 1 << (irq - sm->eim_first_irq));
++ sm_writel(sm, EIM_IDR, 1 << (irq - sm->eim_first_irq));
++}
++
++static void eim_unmask_irq(unsigned int irq)
++{
++ struct at32_sm *sm = get_irq_chip_data(irq);
++ sm_writel(sm, EIM_IER, 1 << (irq - sm->eim_first_irq));
++}
++
++static int eim_set_irq_type(unsigned int irq, unsigned int flow_type)
++{
++ struct at32_sm *sm = get_irq_chip_data(irq);
++ struct irq_desc *desc;
++ unsigned int i = irq - sm->eim_first_irq;
++ u32 mode, edge, level;
++ unsigned long flags;
++ int ret = 0;
++
++ if (flow_type == IRQ_TYPE_NONE)
++ flow_type = IRQ_TYPE_LEVEL_LOW;
++
++ desc = &irq_desc[irq];
++ desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL);
++ desc->status |= flow_type & IRQ_TYPE_SENSE_MASK;
++
++ if (flow_type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) {
++ desc->status |= IRQ_LEVEL;
++ set_irq_handler(irq, handle_level_irq);
++ } else {
++ set_irq_handler(irq, handle_edge_irq);
++ }
++
++ spin_lock_irqsave(&sm->lock, flags);
++
++ mode = sm_readl(sm, EIM_MODE);
++ edge = sm_readl(sm, EIM_EDGE);
++ level = sm_readl(sm, EIM_LEVEL);
++
++ switch (flow_type) {
++ case IRQ_TYPE_LEVEL_LOW:
++ mode |= 1 << i;
++ level &= ~(1 << i);
++ break;
++ case IRQ_TYPE_LEVEL_HIGH:
++ mode |= 1 << i;
++ level |= 1 << i;
++ break;
++ case IRQ_TYPE_EDGE_RISING:
++ mode &= ~(1 << i);
++ edge |= 1 << i;
++ break;
++ case IRQ_TYPE_EDGE_FALLING:
++ mode &= ~(1 << i);
++ edge &= ~(1 << i);
++ break;
++ default:
++ ret = -EINVAL;
++ break;
++ }
++
++ sm_writel(sm, EIM_MODE, mode);
++ sm_writel(sm, EIM_EDGE, edge);
++ sm_writel(sm, EIM_LEVEL, level);
++
++ spin_unlock_irqrestore(&sm->lock, flags);
++
++ return ret;
++}
++
++struct irq_chip eim_chip = {
++ .name = "eim",
++ .ack = eim_ack_irq,
++ .mask = eim_mask_irq,
++ .mask_ack = eim_mask_ack_irq,
++ .unmask = eim_unmask_irq,
++ .set_type = eim_set_irq_type,
++};
++
++static void demux_eim_irq(unsigned int irq, struct irq_desc *desc,
++ struct pt_regs *regs)
++{
++ struct at32_sm *sm = desc->handler_data;
++ struct irq_desc *ext_desc;
++ unsigned long status, pending;
++ unsigned int i, ext_irq;
++
++ spin_lock(&sm->lock);
++
++ status = sm_readl(sm, EIM_ISR);
++ pending = status & sm_readl(sm, EIM_IMR);
++
++ while (pending) {
++ i = fls(pending) - 1;
++ pending &= ~(1 << i);
++
++ ext_irq = i + sm->eim_first_irq;
++ ext_desc = irq_desc + ext_irq;
++ ext_desc->handle_irq(ext_irq, ext_desc, regs);
++ }
++
++ spin_unlock(&sm->lock);
++}
++
++static int __init eim_init(void)
++{
++ struct at32_sm *sm = &system_manager;
++ unsigned int i;
++ unsigned int nr_irqs;
++ unsigned int int_irq;
++ u32 pattern;
++
++ /*
++ * The EIM is really the same module as SM, so register
++ * mapping, etc. has been taken care of already.
++ */
++
++ /*
++ * Find out how many interrupt lines that are actually
++ * implemented in hardware.
++ */
++ sm_writel(sm, EIM_IDR, ~0UL);
++ sm_writel(sm, EIM_MODE, ~0UL);
++ pattern = sm_readl(sm, EIM_MODE);
++ nr_irqs = fls(pattern);
++
++ /* Trigger on falling edge unless overridden by driver */
++ sm_writel(sm, EIM_MODE, 0UL);
++ sm_writel(sm, EIM_EDGE, 0UL);
++
++ sm->eim_chip = &eim_chip;
++
++ for (i = 0; i < nr_irqs; i++) {
++ set_irq_chip_and_handler(sm->eim_first_irq + i, &eim_chip,
++ handle_edge_irq);
++ set_irq_chip_data(sm->eim_first_irq + i, sm);
++ }
++
++ int_irq = platform_get_irq_byname(sm->pdev, "eim");
++
++ set_irq_chained_handler(int_irq, demux_eim_irq);
++ set_irq_data(int_irq, sm);
++
++ printk("EIM: External Interrupt Module at 0x%p, IRQ %u\n",
++ sm->regs, int_irq);
++ printk("EIM: Handling %u external IRQs, starting with IRQ %u\n",
++ nr_irqs, sm->eim_first_irq);
++
++ return 0;
++}
++arch_initcall(eim_init);
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/intc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/intc.c 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,133 @@
++/*
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/err.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/irq.h>
++#include <linux/platform_device.h>
++
++#include <asm/io.h>
++
++#include "intc.h"
++
++struct intc {
++ void __iomem *regs;
++ struct irq_chip chip;
++};
++
++extern struct platform_device at32_intc0_device;
++
++/*
++ * TODO: We may be able to implement mask/unmask by setting IxM flags
++ * in the status register.
++ */
++static void intc_mask_irq(unsigned int irq)
++{
++
++}
++
++static void intc_unmask_irq(unsigned int irq)
++{
++
++}
++
++static struct intc intc0 = {
++ .chip = {
++ .name = "intc",
++ .mask = intc_mask_irq,
++ .unmask = intc_unmask_irq,
++ },
++};
++
++/*
++ * All interrupts go via intc at some point.
++ */
++asmlinkage void do_IRQ(int level, struct pt_regs *regs)
++{
++ struct irq_desc *desc;
++ unsigned int irq;
++ unsigned long status_reg;
++
++ local_irq_disable();
++
++ irq_enter();
++
++ irq = intc_readl(&intc0, INTCAUSE0 - 4 * level);
++ desc = irq_desc + irq;
++ desc->handle_irq(irq, desc, regs);
++
++ /*
++ * Clear all interrupt level masks so that we may handle
++ * interrupts during softirq processing. If this is a nested
++ * interrupt, interrupts must stay globally disabled until we
++ * return.
++ */
++ status_reg = sysreg_read(SR);
++ status_reg &= ~(SYSREG_BIT(I0M) | SYSREG_BIT(I1M)
++ | SYSREG_BIT(I2M) | SYSREG_BIT(I3M));
++ sysreg_write(SR, status_reg);
++
++ irq_exit();
++}
++
++void __init init_IRQ(void)
++{
++ extern void _evba(void);
++ extern void irq_level0(void);
++ struct resource *regs;
++ struct clk *pclk;
++ unsigned int i;
++ u32 offset, readback;
++
++ regs = platform_get_resource(&at32_intc0_device, IORESOURCE_MEM, 0);
++ if (!regs) {
++ printk(KERN_EMERG "intc: no mmio resource defined\n");
++ goto fail;
++ }
++ pclk = clk_get(&at32_intc0_device.dev, "pclk");
++ if (IS_ERR(pclk)) {
++ printk(KERN_EMERG "intc: no clock defined\n");
++ goto fail;
++ }
++
++ clk_enable(pclk);
++
++ intc0.regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!intc0.regs) {
++ printk(KERN_EMERG "intc: failed to map registers (0x%08lx)\n",
++ (unsigned long)regs->start);
++ goto fail;
++ }
++
++ /*
++ * Initialize all interrupts to level 0 (lowest priority). The
++ * priority level may be changed by calling
++ * irq_set_priority().
++ *
++ */
++ offset = (unsigned long)&irq_level0 - (unsigned long)&_evba;
++ for (i = 0; i < NR_INTERNAL_IRQS; i++) {
++ intc_writel(&intc0, INTPR0 + 4 * i, offset);
++ readback = intc_readl(&intc0, INTPR0 + 4 * i);
++ if (readback == offset)
++ set_irq_chip_and_handler(i, &intc0.chip,
++ handle_simple_irq);
++ }
++
++ /* Unmask all interrupt levels */
++ sysreg_write(SR, (sysreg_read(SR)
++ & ~(SR_I3M | SR_I2M | SR_I1M | SR_I0M)));
++
++ return;
++
++fail:
++ panic("Interrupt controller initialization failed!\n");
++}
++
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/intc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/intc.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,329 @@
++/*
++ * Automatically generated by gen-header.xsl
++ */
++#ifndef __ASM_AVR32_PERIHP_INTC_H__
++#define __ASM_AVR32_PERIHP_INTC_H__
++
++#define INTC_NUM_INT_GRPS 33
++
++#define INTC_INTPR0 0x0
++# define INTC_INTPR0_INTLEV_OFFSET 30
++# define INTC_INTPR0_INTLEV_SIZE 2
++# define INTC_INTPR0_OFFSET_OFFSET 0
++# define INTC_INTPR0_OFFSET_SIZE 24
++#define INTC_INTREQ0 0x100
++# define INTC_INTREQ0_IREQUEST0_OFFSET 0
++# define INTC_INTREQ0_IREQUEST0_SIZE 1
++# define INTC_INTREQ0_IREQUEST1_OFFSET 1
++# define INTC_INTREQ0_IREQUEST1_SIZE 1
++#define INTC_INTPR1 0x4
++# define INTC_INTPR1_INTLEV_OFFSET 30
++# define INTC_INTPR1_INTLEV_SIZE 2
++# define INTC_INTPR1_OFFSET_OFFSET 0
++# define INTC_INTPR1_OFFSET_SIZE 24
++#define INTC_INTREQ1 0x104
++# define INTC_INTREQ1_IREQUEST32_OFFSET 0
++# define INTC_INTREQ1_IREQUEST32_SIZE 1
++# define INTC_INTREQ1_IREQUEST33_OFFSET 1
++# define INTC_INTREQ1_IREQUEST33_SIZE 1
++# define INTC_INTREQ1_IREQUEST34_OFFSET 2
++# define INTC_INTREQ1_IREQUEST34_SIZE 1
++# define INTC_INTREQ1_IREQUEST35_OFFSET 3
++# define INTC_INTREQ1_IREQUEST35_SIZE 1
++# define INTC_INTREQ1_IREQUEST36_OFFSET 4
++# define INTC_INTREQ1_IREQUEST36_SIZE 1
++# define INTC_INTREQ1_IREQUEST37_OFFSET 5
++# define INTC_INTREQ1_IREQUEST37_SIZE 1
++#define INTC_INTPR2 0x8
++# define INTC_INTPR2_INTLEV_OFFSET 30
++# define INTC_INTPR2_INTLEV_SIZE 2
++# define INTC_INTPR2_OFFSET_OFFSET 0
++# define INTC_INTPR2_OFFSET_SIZE 24
++#define INTC_INTREQ2 0x108
++# define INTC_INTREQ2_IREQUEST64_OFFSET 0
++# define INTC_INTREQ2_IREQUEST64_SIZE 1
++# define INTC_INTREQ2_IREQUEST65_OFFSET 1
++# define INTC_INTREQ2_IREQUEST65_SIZE 1
++# define INTC_INTREQ2_IREQUEST66_OFFSET 2
++# define INTC_INTREQ2_IREQUEST66_SIZE 1
++# define INTC_INTREQ2_IREQUEST67_OFFSET 3
++# define INTC_INTREQ2_IREQUEST67_SIZE 1
++# define INTC_INTREQ2_IREQUEST68_OFFSET 4
++# define INTC_INTREQ2_IREQUEST68_SIZE 1
++#define INTC_INTPR3 0xc
++# define INTC_INTPR3_INTLEV_OFFSET 30
++# define INTC_INTPR3_INTLEV_SIZE 2
++# define INTC_INTPR3_OFFSET_OFFSET 0
++# define INTC_INTPR3_OFFSET_SIZE 24
++#define INTC_INTREQ3 0x10c
++# define INTC_INTREQ3_IREQUEST96_OFFSET 0
++# define INTC_INTREQ3_IREQUEST96_SIZE 1
++#define INTC_INTPR4 0x10
++# define INTC_INTPR4_INTLEV_OFFSET 30
++# define INTC_INTPR4_INTLEV_SIZE 2
++# define INTC_INTPR4_OFFSET_OFFSET 0
++# define INTC_INTPR4_OFFSET_SIZE 24
++#define INTC_INTREQ4 0x110
++# define INTC_INTREQ4_IREQUEST128_OFFSET 0
++# define INTC_INTREQ4_IREQUEST128_SIZE 1
++#define INTC_INTPR5 0x14
++# define INTC_INTPR5_INTLEV_OFFSET 30
++# define INTC_INTPR5_INTLEV_SIZE 2
++# define INTC_INTPR5_OFFSET_OFFSET 0
++# define INTC_INTPR5_OFFSET_SIZE 24
++#define INTC_INTREQ5 0x114
++# define INTC_INTREQ5_IREQUEST160_OFFSET 0
++# define INTC_INTREQ5_IREQUEST160_SIZE 1
++#define INTC_INTPR6 0x18
++# define INTC_INTPR6_INTLEV_OFFSET 30
++# define INTC_INTPR6_INTLEV_SIZE 2
++# define INTC_INTPR6_OFFSET_OFFSET 0
++# define INTC_INTPR6_OFFSET_SIZE 24
++#define INTC_INTREQ6 0x118
++# define INTC_INTREQ6_IREQUEST192_OFFSET 0
++# define INTC_INTREQ6_IREQUEST192_SIZE 1
++#define INTC_INTPR7 0x1c
++# define INTC_INTPR7_INTLEV_OFFSET 30
++# define INTC_INTPR7_INTLEV_SIZE 2
++# define INTC_INTPR7_OFFSET_OFFSET 0
++# define INTC_INTPR7_OFFSET_SIZE 24
++#define INTC_INTREQ7 0x11c
++# define INTC_INTREQ7_IREQUEST224_OFFSET 0
++# define INTC_INTREQ7_IREQUEST224_SIZE 1
++#define INTC_INTPR8 0x20
++# define INTC_INTPR8_INTLEV_OFFSET 30
++# define INTC_INTPR8_INTLEV_SIZE 2
++# define INTC_INTPR8_OFFSET_OFFSET 0
++# define INTC_INTPR8_OFFSET_SIZE 24
++#define INTC_INTREQ8 0x120
++# define INTC_INTREQ8_IREQUEST256_OFFSET 0
++# define INTC_INTREQ8_IREQUEST256_SIZE 1
++#define INTC_INTPR9 0x24
++# define INTC_INTPR9_INTLEV_OFFSET 30
++# define INTC_INTPR9_INTLEV_SIZE 2
++# define INTC_INTPR9_OFFSET_OFFSET 0
++# define INTC_INTPR9_OFFSET_SIZE 24
++#define INTC_INTREQ9 0x124
++# define INTC_INTREQ9_IREQUEST288_OFFSET 0
++# define INTC_INTREQ9_IREQUEST288_SIZE 1
++#define INTC_INTPR10 0x28
++# define INTC_INTPR10_INTLEV_OFFSET 30
++# define INTC_INTPR10_INTLEV_SIZE 2
++# define INTC_INTPR10_OFFSET_OFFSET 0
++# define INTC_INTPR10_OFFSET_SIZE 24
++#define INTC_INTREQ10 0x128
++# define INTC_INTREQ10_IREQUEST320_OFFSET 0
++# define INTC_INTREQ10_IREQUEST320_SIZE 1
++#define INTC_INTPR11 0x2c
++# define INTC_INTPR11_INTLEV_OFFSET 30
++# define INTC_INTPR11_INTLEV_SIZE 2
++# define INTC_INTPR11_OFFSET_OFFSET 0
++# define INTC_INTPR11_OFFSET_SIZE 24
++#define INTC_INTREQ11 0x12c
++# define INTC_INTREQ11_IREQUEST352_OFFSET 0
++# define INTC_INTREQ11_IREQUEST352_SIZE 1
++#define INTC_INTPR12 0x30
++# define INTC_INTPR12_INTLEV_OFFSET 30
++# define INTC_INTPR12_INTLEV_SIZE 2
++# define INTC_INTPR12_OFFSET_OFFSET 0
++# define INTC_INTPR12_OFFSET_SIZE 24
++#define INTC_INTREQ12 0x130
++# define INTC_INTREQ12_IREQUEST384_OFFSET 0
++# define INTC_INTREQ12_IREQUEST384_SIZE 1
++#define INTC_INTPR13 0x34
++# define INTC_INTPR13_INTLEV_OFFSET 30
++# define INTC_INTPR13_INTLEV_SIZE 2
++# define INTC_INTPR13_OFFSET_OFFSET 0
++# define INTC_INTPR13_OFFSET_SIZE 24
++#define INTC_INTREQ13 0x134
++# define INTC_INTREQ13_IREQUEST416_OFFSET 0
++# define INTC_INTREQ13_IREQUEST416_SIZE 1
++#define INTC_INTPR14 0x38
++# define INTC_INTPR14_INTLEV_OFFSET 30
++# define INTC_INTPR14_INTLEV_SIZE 2
++# define INTC_INTPR14_OFFSET_OFFSET 0
++# define INTC_INTPR14_OFFSET_SIZE 24
++#define INTC_INTREQ14 0x138
++# define INTC_INTREQ14_IREQUEST448_OFFSET 0
++# define INTC_INTREQ14_IREQUEST448_SIZE 1
++#define INTC_INTPR15 0x3c
++# define INTC_INTPR15_INTLEV_OFFSET 30
++# define INTC_INTPR15_INTLEV_SIZE 2
++# define INTC_INTPR15_OFFSET_OFFSET 0
++# define INTC_INTPR15_OFFSET_SIZE 24
++#define INTC_INTREQ15 0x13c
++# define INTC_INTREQ15_IREQUEST480_OFFSET 0
++# define INTC_INTREQ15_IREQUEST480_SIZE 1
++#define INTC_INTPR16 0x40
++# define INTC_INTPR16_INTLEV_OFFSET 30
++# define INTC_INTPR16_INTLEV_SIZE 2
++# define INTC_INTPR16_OFFSET_OFFSET 0
++# define INTC_INTPR16_OFFSET_SIZE 24
++#define INTC_INTREQ16 0x140
++# define INTC_INTREQ16_IREQUEST512_OFFSET 0
++# define INTC_INTREQ16_IREQUEST512_SIZE 1
++#define INTC_INTPR17 0x44
++# define INTC_INTPR17_INTLEV_OFFSET 30
++# define INTC_INTPR17_INTLEV_SIZE 2
++# define INTC_INTPR17_OFFSET_OFFSET 0
++# define INTC_INTPR17_OFFSET_SIZE 24
++#define INTC_INTREQ17 0x144
++# define INTC_INTREQ17_IREQUEST544_OFFSET 0
++# define INTC_INTREQ17_IREQUEST544_SIZE 1
++#define INTC_INTPR18 0x48
++# define INTC_INTPR18_INTLEV_OFFSET 30
++# define INTC_INTPR18_INTLEV_SIZE 2
++# define INTC_INTPR18_OFFSET_OFFSET 0
++# define INTC_INTPR18_OFFSET_SIZE 24
++#define INTC_INTREQ18 0x148
++# define INTC_INTREQ18_IREQUEST576_OFFSET 0
++# define INTC_INTREQ18_IREQUEST576_SIZE 1
++#define INTC_INTPR19 0x4c
++# define INTC_INTPR19_INTLEV_OFFSET 30
++# define INTC_INTPR19_INTLEV_SIZE 2
++# define INTC_INTPR19_OFFSET_OFFSET 0
++# define INTC_INTPR19_OFFSET_SIZE 24
++#define INTC_INTREQ19 0x14c
++# define INTC_INTREQ19_IREQUEST608_OFFSET 0
++# define INTC_INTREQ19_IREQUEST608_SIZE 1
++# define INTC_INTREQ19_IREQUEST609_OFFSET 1
++# define INTC_INTREQ19_IREQUEST609_SIZE 1
++# define INTC_INTREQ19_IREQUEST610_OFFSET 2
++# define INTC_INTREQ19_IREQUEST610_SIZE 1
++# define INTC_INTREQ19_IREQUEST611_OFFSET 3
++# define INTC_INTREQ19_IREQUEST611_SIZE 1
++#define INTC_INTPR20 0x50
++# define INTC_INTPR20_INTLEV_OFFSET 30
++# define INTC_INTPR20_INTLEV_SIZE 2
++# define INTC_INTPR20_OFFSET_OFFSET 0
++# define INTC_INTPR20_OFFSET_SIZE 24
++#define INTC_INTREQ20 0x150
++# define INTC_INTREQ20_IREQUEST640_OFFSET 0
++# define INTC_INTREQ20_IREQUEST640_SIZE 1
++#define INTC_INTPR21 0x54
++# define INTC_INTPR21_INTLEV_OFFSET 30
++# define INTC_INTPR21_INTLEV_SIZE 2
++# define INTC_INTPR21_OFFSET_OFFSET 0
++# define INTC_INTPR21_OFFSET_SIZE 24
++#define INTC_INTREQ21 0x154
++# define INTC_INTREQ21_IREQUEST672_OFFSET 0
++# define INTC_INTREQ21_IREQUEST672_SIZE 1
++#define INTC_INTPR22 0x58
++# define INTC_INTPR22_INTLEV_OFFSET 30
++# define INTC_INTPR22_INTLEV_SIZE 2
++# define INTC_INTPR22_OFFSET_OFFSET 0
++# define INTC_INTPR22_OFFSET_SIZE 24
++#define INTC_INTREQ22 0x158
++# define INTC_INTREQ22_IREQUEST704_OFFSET 0
++# define INTC_INTREQ22_IREQUEST704_SIZE 1
++# define INTC_INTREQ22_IREQUEST705_OFFSET 1
++# define INTC_INTREQ22_IREQUEST705_SIZE 1
++# define INTC_INTREQ22_IREQUEST706_OFFSET 2
++# define INTC_INTREQ22_IREQUEST706_SIZE 1
++#define INTC_INTPR23 0x5c
++# define INTC_INTPR23_INTLEV_OFFSET 30
++# define INTC_INTPR23_INTLEV_SIZE 2
++# define INTC_INTPR23_OFFSET_OFFSET 0
++# define INTC_INTPR23_OFFSET_SIZE 24
++#define INTC_INTREQ23 0x15c
++# define INTC_INTREQ23_IREQUEST736_OFFSET 0
++# define INTC_INTREQ23_IREQUEST736_SIZE 1
++# define INTC_INTREQ23_IREQUEST737_OFFSET 1
++# define INTC_INTREQ23_IREQUEST737_SIZE 1
++# define INTC_INTREQ23_IREQUEST738_OFFSET 2
++# define INTC_INTREQ23_IREQUEST738_SIZE 1
++#define INTC_INTPR24 0x60
++# define INTC_INTPR24_INTLEV_OFFSET 30
++# define INTC_INTPR24_INTLEV_SIZE 2
++# define INTC_INTPR24_OFFSET_OFFSET 0
++# define INTC_INTPR24_OFFSET_SIZE 24
++#define INTC_INTREQ24 0x160
++# define INTC_INTREQ24_IREQUEST768_OFFSET 0
++# define INTC_INTREQ24_IREQUEST768_SIZE 1
++#define INTC_INTPR25 0x64
++# define INTC_INTPR25_INTLEV_OFFSET 30
++# define INTC_INTPR25_INTLEV_SIZE 2
++# define INTC_INTPR25_OFFSET_OFFSET 0
++# define INTC_INTPR25_OFFSET_SIZE 24
++#define INTC_INTREQ25 0x164
++# define INTC_INTREQ25_IREQUEST800_OFFSET 0
++# define INTC_INTREQ25_IREQUEST800_SIZE 1
++#define INTC_INTPR26 0x68
++# define INTC_INTPR26_INTLEV_OFFSET 30
++# define INTC_INTPR26_INTLEV_SIZE 2
++# define INTC_INTPR26_OFFSET_OFFSET 0
++# define INTC_INTPR26_OFFSET_SIZE 24
++#define INTC_INTREQ26 0x168
++# define INTC_INTREQ26_IREQUEST832_OFFSET 0
++# define INTC_INTREQ26_IREQUEST832_SIZE 1
++#define INTC_INTPR27 0x6c
++# define INTC_INTPR27_INTLEV_OFFSET 30
++# define INTC_INTPR27_INTLEV_SIZE 2
++# define INTC_INTPR27_OFFSET_OFFSET 0
++# define INTC_INTPR27_OFFSET_SIZE 24
++#define INTC_INTREQ27 0x16c
++# define INTC_INTREQ27_IREQUEST864_OFFSET 0
++# define INTC_INTREQ27_IREQUEST864_SIZE 1
++#define INTC_INTPR28 0x70
++# define INTC_INTPR28_INTLEV_OFFSET 30
++# define INTC_INTPR28_INTLEV_SIZE 2
++# define INTC_INTPR28_OFFSET_OFFSET 0
++# define INTC_INTPR28_OFFSET_SIZE 24
++#define INTC_INTREQ28 0x170
++# define INTC_INTREQ28_IREQUEST896_OFFSET 0
++# define INTC_INTREQ28_IREQUEST896_SIZE 1
++#define INTC_INTPR29 0x74
++# define INTC_INTPR29_INTLEV_OFFSET 30
++# define INTC_INTPR29_INTLEV_SIZE 2
++# define INTC_INTPR29_OFFSET_OFFSET 0
++# define INTC_INTPR29_OFFSET_SIZE 24
++#define INTC_INTREQ29 0x174
++# define INTC_INTREQ29_IREQUEST928_OFFSET 0
++# define INTC_INTREQ29_IREQUEST928_SIZE 1
++#define INTC_INTPR30 0x78
++# define INTC_INTPR30_INTLEV_OFFSET 30
++# define INTC_INTPR30_INTLEV_SIZE 2
++# define INTC_INTPR30_OFFSET_OFFSET 0
++# define INTC_INTPR30_OFFSET_SIZE 24
++#define INTC_INTREQ30 0x178
++# define INTC_INTREQ30_IREQUEST960_OFFSET 0
++# define INTC_INTREQ30_IREQUEST960_SIZE 1
++#define INTC_INTPR31 0x7c
++# define INTC_INTPR31_INTLEV_OFFSET 30
++# define INTC_INTPR31_INTLEV_SIZE 2
++# define INTC_INTPR31_OFFSET_OFFSET 0
++# define INTC_INTPR31_OFFSET_SIZE 24
++#define INTC_INTREQ31 0x17c
++# define INTC_INTREQ31_IREQUEST992_OFFSET 0
++# define INTC_INTREQ31_IREQUEST992_SIZE 1
++#define INTC_INTPR32 0x80
++# define INTC_INTPR32_INTLEV_OFFSET 30
++# define INTC_INTPR32_INTLEV_SIZE 2
++# define INTC_INTPR32_OFFSET_OFFSET 0
++# define INTC_INTPR32_OFFSET_SIZE 24
++#define INTC_INTREQ32 0x180
++# define INTC_INTREQ32_IREQUEST1024_OFFSET 0
++# define INTC_INTREQ32_IREQUEST1024_SIZE 1
++#define INTC_INTCAUSE0 0x20c
++# define INTC_INTCAUSE0_CAUSEGRP_OFFSET 0
++# define INTC_INTCAUSE0_CAUSEGRP_SIZE 6
++#define INTC_INTCAUSE1 0x208
++# define INTC_INTCAUSE1_CAUSEGRP_OFFSET 0
++# define INTC_INTCAUSE1_CAUSEGRP_SIZE 6
++#define INTC_INTCAUSE2 0x204
++# define INTC_INTCAUSE2_CAUSEGRP_OFFSET 0
++# define INTC_INTCAUSE2_CAUSEGRP_SIZE 6
++#define INTC_INTCAUSE3 0x200
++# define INTC_INTCAUSE3_CAUSEGRP_OFFSET 0
++# define INTC_INTCAUSE3_CAUSEGRP_SIZE 6
++
++#define INTC_BIT(name) (1 << INTC_##name##_OFFSET)
++#define INTC_MKBF(name, value) (((value) & ((1 << INTC_##name##_SIZE) - 1)) << INTC_##name##_OFFSET)
++#define INTC_GETBF(name, value) (((value) >> INTC_##name##_OFFSET) & ((1 << INTC_##name##_SIZE) - 1))
++
++#define intc_readl(port,reg) \
++ __raw_readl((port)->regs + INTC_##reg)
++#define intc_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + INTC_##reg)
++
++#endif /* __ASM_AVR32_PERIHP_INTC_H__ */
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,118 @@
++/*
++ * Atmel PIO2 Port Multiplexer support
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/clk.h>
++#include <linux/debugfs.h>
++#include <linux/fs.h>
++#include <linux/platform_device.h>
++
++#include <asm/io.h>
++
++#include <asm/arch/portmux.h>
++
++#include "pio.h"
++
++#define MAX_NR_PIO_DEVICES 8
++
++struct pio_device {
++ void __iomem *regs;
++ const struct platform_device *pdev;
++ struct clk *clk;
++ u32 alloc_mask;
++ char name[32];
++};
++
++static struct pio_device pio_dev[MAX_NR_PIO_DEVICES];
++
++void portmux_set_func(unsigned int portmux_id, unsigned int pin_id,
++ unsigned int function_id)
++{
++ struct pio_device *pio;
++ u32 mask = 1 << pin_id;
++
++ BUG_ON(portmux_id >= MAX_NR_PIO_DEVICES);
++
++ pio = &pio_dev[portmux_id];
++
++ if (function_id)
++ pio_writel(pio, BSR, mask);
++ else
++ pio_writel(pio, ASR, mask);
++ pio_writel(pio, PDR, mask);
++}
++
++static int __init pio_probe(struct platform_device *pdev)
++{
++ struct pio_device *pio = NULL;
++
++ BUG_ON(pdev->id >= MAX_NR_PIO_DEVICES);
++ pio = &pio_dev[pdev->id];
++ BUG_ON(!pio->regs);
++
++ /* TODO: Interrupts */
++
++ platform_set_drvdata(pdev, pio);
++
++ printk(KERN_INFO "%s: Atmel Port Multiplexer at 0x%p (irq %d)\n",
++ pio->name, pio->regs, platform_get_irq(pdev, 0));
++
++ return 0;
++}
++
++static struct platform_driver pio_driver = {
++ .probe = pio_probe,
++ .driver = {
++ .name = "pio",
++ },
++};
++
++static int __init pio_init(void)
++{
++ return platform_driver_register(&pio_driver);
++}
++subsys_initcall(pio_init);
++
++void __init at32_init_pio(struct platform_device *pdev)
++{
++ struct resource *regs;
++ struct pio_device *pio;
++
++ if (pdev->id > MAX_NR_PIO_DEVICES) {
++ dev_err(&pdev->dev, "only %d PIO devices supported\n",
++ MAX_NR_PIO_DEVICES);
++ return;
++ }
++
++ pio = &pio_dev[pdev->id];
++ snprintf(pio->name, sizeof(pio->name), "pio%d", pdev->id);
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs) {
++ dev_err(&pdev->dev, "no mmio resource defined\n");
++ return;
++ }
++
++ pio->clk = clk_get(&pdev->dev, "mck");
++ if (IS_ERR(pio->clk))
++ /*
++ * This is a fatal error, but if we continue we might
++ * be so lucky that we manage to initialize the
++ * console and display this message...
++ */
++ dev_err(&pdev->dev, "no mck clock defined\n");
++ else
++ clk_enable(pio->clk);
++
++ pio->pdev = pdev;
++ pio->regs = ioremap(regs->start, regs->end - regs->start + 1);
++
++ pio_writel(pio, ODR, ~0UL);
++ pio_writel(pio, PER, ~0UL);
++}
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,180 @@
++/*
++ * Atmel PIO2 Port Multiplexer support
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ARCH_AVR32_AT32AP_PIO_H__
++#define __ARCH_AVR32_AT32AP_PIO_H__
++
++/* PIO register offsets */
++#define PIO_PER 0x0000
++#define PIO_PDR 0x0004
++#define PIO_PSR 0x0008
++#define PIO_OER 0x0010
++#define PIO_ODR 0x0014
++#define PIO_OSR 0x0018
++#define PIO_IFER 0x0020
++#define PIO_IFDR 0x0024
++#define PIO_ISFR 0x0028
++#define PIO_SODR 0x0030
++#define PIO_CODR 0x0034
++#define PIO_ODSR 0x0038
++#define PIO_PDSR 0x003c
++#define PIO_IER 0x0040
++#define PIO_IDR 0x0044
++#define PIO_IMR 0x0048
++#define PIO_ISR 0x004c
++#define PIO_MDER 0x0050
++#define PIO_MDDR 0x0054
++#define PIO_MDSR 0x0058
++#define PIO_PUDR 0x0060
++#define PIO_PUER 0x0064
++#define PIO_PUSR 0x0068
++#define PIO_ASR 0x0070
++#define PIO_BSR 0x0074
++#define PIO_ABSR 0x0078
++#define PIO_OWER 0x00a0
++#define PIO_OWDR 0x00a4
++#define PIO_OWSR 0x00a8
++
++/* Bitfields in PER */
++
++/* Bitfields in PDR */
++
++/* Bitfields in PSR */
++
++/* Bitfields in OER */
++
++/* Bitfields in ODR */
++
++/* Bitfields in OSR */
++
++/* Bitfields in IFER */
++
++/* Bitfields in IFDR */
++
++/* Bitfields in ISFR */
++
++/* Bitfields in SODR */
++
++/* Bitfields in CODR */
++
++/* Bitfields in ODSR */
++
++/* Bitfields in PDSR */
++
++/* Bitfields in IER */
++
++/* Bitfields in IDR */
++
++/* Bitfields in IMR */
++
++/* Bitfields in ISR */
++
++/* Bitfields in MDER */
++
++/* Bitfields in MDDR */
++
++/* Bitfields in MDSR */
++
++/* Bitfields in PUDR */
++
++/* Bitfields in PUER */
++
++/* Bitfields in PUSR */
++
++/* Bitfields in ASR */
++
++/* Bitfields in BSR */
++
++/* Bitfields in ABSR */
++#define PIO_P0_OFFSET 0
++#define PIO_P0_SIZE 1
++#define PIO_P1_OFFSET 1
++#define PIO_P1_SIZE 1
++#define PIO_P2_OFFSET 2
++#define PIO_P2_SIZE 1
++#define PIO_P3_OFFSET 3
++#define PIO_P3_SIZE 1
++#define PIO_P4_OFFSET 4
++#define PIO_P4_SIZE 1
++#define PIO_P5_OFFSET 5
++#define PIO_P5_SIZE 1
++#define PIO_P6_OFFSET 6
++#define PIO_P6_SIZE 1
++#define PIO_P7_OFFSET 7
++#define PIO_P7_SIZE 1
++#define PIO_P8_OFFSET 8
++#define PIO_P8_SIZE 1
++#define PIO_P9_OFFSET 9
++#define PIO_P9_SIZE 1
++#define PIO_P10_OFFSET 10
++#define PIO_P10_SIZE 1
++#define PIO_P11_OFFSET 11
++#define PIO_P11_SIZE 1
++#define PIO_P12_OFFSET 12
++#define PIO_P12_SIZE 1
++#define PIO_P13_OFFSET 13
++#define PIO_P13_SIZE 1
++#define PIO_P14_OFFSET 14
++#define PIO_P14_SIZE 1
++#define PIO_P15_OFFSET 15
++#define PIO_P15_SIZE 1
++#define PIO_P16_OFFSET 16
++#define PIO_P16_SIZE 1
++#define PIO_P17_OFFSET 17
++#define PIO_P17_SIZE 1
++#define PIO_P18_OFFSET 18
++#define PIO_P18_SIZE 1
++#define PIO_P19_OFFSET 19
++#define PIO_P19_SIZE 1
++#define PIO_P20_OFFSET 20
++#define PIO_P20_SIZE 1
++#define PIO_P21_OFFSET 21
++#define PIO_P21_SIZE 1
++#define PIO_P22_OFFSET 22
++#define PIO_P22_SIZE 1
++#define PIO_P23_OFFSET 23
++#define PIO_P23_SIZE 1
++#define PIO_P24_OFFSET 24
++#define PIO_P24_SIZE 1
++#define PIO_P25_OFFSET 25
++#define PIO_P25_SIZE 1
++#define PIO_P26_OFFSET 26
++#define PIO_P26_SIZE 1
++#define PIO_P27_OFFSET 27
++#define PIO_P27_SIZE 1
++#define PIO_P28_OFFSET 28
++#define PIO_P28_SIZE 1
++#define PIO_P29_OFFSET 29
++#define PIO_P29_SIZE 1
++#define PIO_P30_OFFSET 30
++#define PIO_P30_SIZE 1
++#define PIO_P31_OFFSET 31
++#define PIO_P31_SIZE 1
++
++/* Bitfields in OWER */
++
++/* Bitfields in OWDR */
++
++/* Bitfields in OWSR */
++
++/* Bit manipulation macros */
++#define PIO_BIT(name) (1 << PIO_##name##_OFFSET)
++#define PIO_BF(name,value) (((value) & ((1 << PIO_##name##_SIZE) - 1)) << PIO_##name##_OFFSET)
++#define PIO_BFEXT(name,value) (((value) >> PIO_##name##_OFFSET) & ((1 << PIO_##name##_SIZE) - 1))
++#define PIO_BFINS(name,value,old) (((old) & ~(((1 << PIO_##name##_SIZE) - 1) << PIO_##name##_OFFSET)) | PIO_BF(name,value))
++
++/* Register access macros */
++#define pio_readl(port,reg) \
++ __raw_readl((port)->regs + PIO_##reg)
++#define pio_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + PIO_##reg)
++
++void at32_init_pio(struct platform_device *pdev);
++
++#endif /* __ARCH_AVR32_AT32AP_PIO_H__ */
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/sm.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/sm.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,242 @@
++/*
++ * Register definitions for SM
++ *
++ * System Manager
++ */
++#ifndef __ASM_AVR32_SM_H__
++#define __ASM_AVR32_SM_H__
++
++/* SM register offsets */
++#define SM_PM_MCCTRL 0x0000
++#define SM_PM_CKSEL 0x0004
++#define SM_PM_CPU_MASK 0x0008
++#define SM_PM_HSB_MASK 0x000c
++#define SM_PM_PBA_MASK 0x0010
++#define SM_PM_PBB_MASK 0x0014
++#define SM_PM_PLL0 0x0020
++#define SM_PM_PLL1 0x0024
++#define SM_PM_VCTRL 0x0030
++#define SM_PM_VMREF 0x0034
++#define SM_PM_VMV 0x0038
++#define SM_PM_IER 0x0040
++#define SM_PM_IDR 0x0044
++#define SM_PM_IMR 0x0048
++#define SM_PM_ISR 0x004c
++#define SM_PM_ICR 0x0050
++#define SM_PM_GCCTRL 0x0060
++#define SM_RTC_CTRL 0x0080
++#define SM_RTC_VAL 0x0084
++#define SM_RTC_TOP 0x0088
++#define SM_RTC_IER 0x0090
++#define SM_RTC_IDR 0x0094
++#define SM_RTC_IMR 0x0098
++#define SM_RTC_ISR 0x009c
++#define SM_RTC_ICR 0x00a0
++#define SM_WDT_CTRL 0x00b0
++#define SM_WDT_CLR 0x00b4
++#define SM_WDT_EXT 0x00b8
++#define SM_RC_RCAUSE 0x00c0
++#define SM_EIM_IER 0x0100
++#define SM_EIM_IDR 0x0104
++#define SM_EIM_IMR 0x0108
++#define SM_EIM_ISR 0x010c
++#define SM_EIM_ICR 0x0110
++#define SM_EIM_MODE 0x0114
++#define SM_EIM_EDGE 0x0118
++#define SM_EIM_LEVEL 0x011c
++#define SM_EIM_TEST 0x0120
++#define SM_EIM_NMIC 0x0124
++
++/* Bitfields in PM_MCCTRL */
++
++/* Bitfields in PM_CKSEL */
++#define SM_CPUSEL_OFFSET 0
++#define SM_CPUSEL_SIZE 3
++#define SM_CPUDIV_OFFSET 7
++#define SM_CPUDIV_SIZE 1
++#define SM_HSBSEL_OFFSET 8
++#define SM_HSBSEL_SIZE 3
++#define SM_HSBDIV_OFFSET 15
++#define SM_HSBDIV_SIZE 1
++#define SM_PBASEL_OFFSET 16
++#define SM_PBASEL_SIZE 3
++#define SM_PBADIV_OFFSET 23
++#define SM_PBADIV_SIZE 1
++#define SM_PBBSEL_OFFSET 24
++#define SM_PBBSEL_SIZE 3
++#define SM_PBBDIV_OFFSET 31
++#define SM_PBBDIV_SIZE 1
++
++/* Bitfields in PM_CPU_MASK */
++
++/* Bitfields in PM_HSB_MASK */
++
++/* Bitfields in PM_PBA_MASK */
++
++/* Bitfields in PM_PBB_MASK */
++
++/* Bitfields in PM_PLL0 */
++#define SM_PLLEN_OFFSET 0
++#define SM_PLLEN_SIZE 1
++#define SM_PLLOSC_OFFSET 1
++#define SM_PLLOSC_SIZE 1
++#define SM_PLLOPT_OFFSET 2
++#define SM_PLLOPT_SIZE 3
++#define SM_PLLDIV_OFFSET 8
++#define SM_PLLDIV_SIZE 8
++#define SM_PLLMUL_OFFSET 16
++#define SM_PLLMUL_SIZE 8
++#define SM_PLLCOUNT_OFFSET 24
++#define SM_PLLCOUNT_SIZE 6
++#define SM_PLLTEST_OFFSET 31
++#define SM_PLLTEST_SIZE 1
++
++/* Bitfields in PM_PLL1 */
++
++/* Bitfields in PM_VCTRL */
++#define SM_VAUTO_OFFSET 0
++#define SM_VAUTO_SIZE 1
++#define SM_PM_VCTRL_VAL_OFFSET 8
++#define SM_PM_VCTRL_VAL_SIZE 7
++
++/* Bitfields in PM_VMREF */
++#define SM_REFSEL_OFFSET 0
++#define SM_REFSEL_SIZE 4
++
++/* Bitfields in PM_VMV */
++#define SM_PM_VMV_VAL_OFFSET 0
++#define SM_PM_VMV_VAL_SIZE 8
++
++/* Bitfields in PM_IER */
++
++/* Bitfields in PM_IDR */
++
++/* Bitfields in PM_IMR */
++
++/* Bitfields in PM_ISR */
++
++/* Bitfields in PM_ICR */
++#define SM_LOCK0_OFFSET 0
++#define SM_LOCK0_SIZE 1
++#define SM_LOCK1_OFFSET 1
++#define SM_LOCK1_SIZE 1
++#define SM_WAKE_OFFSET 2
++#define SM_WAKE_SIZE 1
++#define SM_VOK_OFFSET 3
++#define SM_VOK_SIZE 1
++#define SM_VMRDY_OFFSET 4
++#define SM_VMRDY_SIZE 1
++#define SM_CKRDY_OFFSET 5
++#define SM_CKRDY_SIZE 1
++
++/* Bitfields in PM_GCCTRL */
++#define SM_OSCSEL_OFFSET 0
++#define SM_OSCSEL_SIZE 1
++#define SM_PLLSEL_OFFSET 1
++#define SM_PLLSEL_SIZE 1
++#define SM_CEN_OFFSET 2
++#define SM_CEN_SIZE 1
++#define SM_CPC_OFFSET 3
++#define SM_CPC_SIZE 1
++#define SM_DIVEN_OFFSET 4
++#define SM_DIVEN_SIZE 1
++#define SM_DIV_OFFSET 8
++#define SM_DIV_SIZE 8
++
++/* Bitfields in RTC_CTRL */
++#define SM_PCLR_OFFSET 1
++#define SM_PCLR_SIZE 1
++#define SM_TOPEN_OFFSET 2
++#define SM_TOPEN_SIZE 1
++#define SM_CLKEN_OFFSET 3
++#define SM_CLKEN_SIZE 1
++#define SM_PSEL_OFFSET 8
++#define SM_PSEL_SIZE 16
++
++/* Bitfields in RTC_VAL */
++#define SM_RTC_VAL_VAL_OFFSET 0
++#define SM_RTC_VAL_VAL_SIZE 31
++
++/* Bitfields in RTC_TOP */
++#define SM_RTC_TOP_VAL_OFFSET 0
++#define SM_RTC_TOP_VAL_SIZE 32
++
++/* Bitfields in RTC_IER */
++
++/* Bitfields in RTC_IDR */
++
++/* Bitfields in RTC_IMR */
++
++/* Bitfields in RTC_ISR */
++
++/* Bitfields in RTC_ICR */
++#define SM_TOPI_OFFSET 0
++#define SM_TOPI_SIZE 1
++
++/* Bitfields in WDT_CTRL */
++#define SM_KEY_OFFSET 24
++#define SM_KEY_SIZE 8
++
++/* Bitfields in WDT_CLR */
++
++/* Bitfields in WDT_EXT */
++
++/* Bitfields in RC_RCAUSE */
++#define SM_POR_OFFSET 0
++#define SM_POR_SIZE 1
++#define SM_BOD_OFFSET 1
++#define SM_BOD_SIZE 1
++#define SM_EXT_OFFSET 2
++#define SM_EXT_SIZE 1
++#define SM_WDT_OFFSET 3
++#define SM_WDT_SIZE 1
++#define SM_NTAE_OFFSET 4
++#define SM_NTAE_SIZE 1
++#define SM_SERP_OFFSET 5
++#define SM_SERP_SIZE 1
++
++/* Bitfields in EIM_IER */
++
++/* Bitfields in EIM_IDR */
++
++/* Bitfields in EIM_IMR */
++
++/* Bitfields in EIM_ISR */
++
++/* Bitfields in EIM_ICR */
++
++/* Bitfields in EIM_MODE */
++
++/* Bitfields in EIM_EDGE */
++#define SM_INT0_OFFSET 0
++#define SM_INT0_SIZE 1
++#define SM_INT1_OFFSET 1
++#define SM_INT1_SIZE 1
++#define SM_INT2_OFFSET 2
++#define SM_INT2_SIZE 1
++#define SM_INT3_OFFSET 3
++#define SM_INT3_SIZE 1
++
++/* Bitfields in EIM_LEVEL */
++
++/* Bitfields in EIM_TEST */
++#define SM_TESTEN_OFFSET 31
++#define SM_TESTEN_SIZE 1
++
++/* Bitfields in EIM_NMIC */
++#define SM_EN_OFFSET 0
++#define SM_EN_SIZE 1
++
++/* Bit manipulation macros */
++#define SM_BIT(name) (1 << SM_##name##_OFFSET)
++#define SM_BF(name,value) (((value) & ((1 << SM_##name##_SIZE) - 1)) << SM_##name##_OFFSET)
++#define SM_BFEXT(name,value) (((value) >> SM_##name##_OFFSET) & ((1 << SM_##name##_SIZE) - 1))
++#define SM_BFINS(name,value,old) (((old) & ~(((1 << SM_##name##_SIZE) - 1) << SM_##name##_OFFSET)) | SM_BF(name,value))
++
++/* Register access macros */
++#define sm_readl(port,reg) \
++ __raw_readl((port)->regs + SM_##reg)
++#define sm_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + SM_##reg)
++
++#endif /* __ASM_AVR32_SM_H__ */
+Index: linux-2.6.18-avr32/arch/avr32/mm/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/Makefile 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#
++# Makefile for the Linux/AVR32 kernel.
++#
++
++obj-y += init.o clear_page.o copy_page.o dma-coherent.o
++obj-y += ioremap.o cache.o fault.o tlb.o
+Index: linux-2.6.18-avr32/arch/avr32/mm/cache.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/cache.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,150 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/highmem.h>
++#include <linux/unistd.h>
++
++#include <asm/cacheflush.h>
++#include <asm/cachectl.h>
++#include <asm/processor.h>
++#include <asm/uaccess.h>
++
++/*
++ * If you attempt to flush anything more than this, you need superuser
++ * privileges. The value is completely arbitrary.
++ */
++#define CACHEFLUSH_MAX_LEN 1024
++
++void invalidate_dcache_region(void *start, size_t size)
++{
++ unsigned long v, begin, end, linesz;
++
++ linesz = boot_cpu_data.dcache.linesz;
++
++ //printk("invalidate dcache: %p + %u\n", start, size);
++
++ /* You asked for it, you got it */
++ begin = (unsigned long)start & ~(linesz - 1);
++ end = ((unsigned long)start + size + linesz - 1) & ~(linesz - 1);
++
++ for (v = begin; v < end; v += linesz)
++ invalidate_dcache_line((void *)v);
++}
++
++void clean_dcache_region(void *start, size_t size)
++{
++ unsigned long v, begin, end, linesz;
++
++ linesz = boot_cpu_data.dcache.linesz;
++ begin = (unsigned long)start & ~(linesz - 1);
++ end = ((unsigned long)start + size + linesz - 1) & ~(linesz - 1);
++
++ for (v = begin; v < end; v += linesz)
++ clean_dcache_line((void *)v);
++ flush_write_buffer();
++}
++
++void flush_dcache_region(void *start, size_t size)
++{
++ unsigned long v, begin, end, linesz;
++
++ linesz = boot_cpu_data.dcache.linesz;
++ begin = (unsigned long)start & ~(linesz - 1);
++ end = ((unsigned long)start + size + linesz - 1) & ~(linesz - 1);
++
++ for (v = begin; v < end; v += linesz)
++ flush_dcache_line((void *)v);
++ flush_write_buffer();
++}
++
++void invalidate_icache_region(void *start, size_t size)
++{
++ unsigned long v, begin, end, linesz;
++
++ linesz = boot_cpu_data.icache.linesz;
++ begin = (unsigned long)start & ~(linesz - 1);
++ end = ((unsigned long)start + size + linesz - 1) & ~(linesz - 1);
++
++ for (v = begin; v < end; v += linesz)
++ invalidate_icache_line((void *)v);
++}
++
++static inline void __flush_icache_range(unsigned long start, unsigned long end)
++{
++ unsigned long v, linesz;
++
++ linesz = boot_cpu_data.dcache.linesz;
++ for (v = start; v < end; v += linesz) {
++ clean_dcache_line((void *)v);
++ invalidate_icache_line((void *)v);
++ }
++
++ flush_write_buffer();
++}
++
++/*
++ * This one is called after a module has been loaded.
++ */
++void flush_icache_range(unsigned long start, unsigned long end)
++{
++ unsigned long linesz;
++
++ linesz = boot_cpu_data.dcache.linesz;
++ __flush_icache_range(start & ~(linesz - 1),
++ (end + linesz - 1) & ~(linesz - 1));
++}
++
++/*
++ * This one is called from do_no_page(), do_swap_page() and install_page().
++ */
++void flush_icache_page(struct vm_area_struct *vma, struct page *page)
++{
++ if (vma->vm_flags & VM_EXEC) {
++ void *v = kmap(page);
++ __flush_icache_range((unsigned long)v, (unsigned long)v + PAGE_SIZE);
++ kunmap(v);
++ }
++}
++
++/*
++ * This one is used by copy_to_user_page()
++ */
++void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
++ unsigned long addr, int len)
++{
++ if (vma->vm_flags & VM_EXEC)
++ flush_icache_range(addr, addr + len);
++}
++
++asmlinkage int sys_cacheflush(int operation, void __user *addr, size_t len)
++{
++ int ret;
++
++ if (len > CACHEFLUSH_MAX_LEN) {
++ ret = -EPERM;
++ if (!capable(CAP_SYS_ADMIN))
++ goto out;
++ }
++
++ ret = -EFAULT;
++ if (!access_ok(VERIFY_WRITE, addr, len))
++ goto out;
++
++ switch (operation) {
++ case CACHE_IFLUSH:
++ flush_icache_range((unsigned long)addr,
++ (unsigned long)addr + len);
++ ret = 0;
++ break;
++ default:
++ ret = -EINVAL;
++ }
++
++out:
++ return ret;
++}
+Index: linux-2.6.18-avr32/arch/avr32/mm/clear_page.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/clear_page.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,25 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/linkage.h>
++#include <asm/page.h>
++
++/*
++ * clear_page
++ * r12: P1 address (to)
++ */
++ .text
++ .global clear_page
++clear_page:
++ sub r9, r12, -PAGE_SIZE
++ mov r10, 0
++ mov r11, 0
++0: st.d r12++, r10
++ cp r12, r9
++ brne 0b
++ mov pc, lr
+Index: linux-2.6.18-avr32/arch/avr32/mm/copy_page.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/copy_page.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,28 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/linkage.h>
++#include <asm/page.h>
++
++/*
++ * copy_page
++ *
++ * r12 to (P1 address)
++ * r11 from (P1 address)
++ * r8-r10 scratch
++ */
++ .text
++ .global copy_page
++copy_page:
++ sub r10, r11, -(1 << PAGE_SHIFT)
++ /* pref r11[0] */
++1: /* pref r11[8] */
++ ld.d r8, r11++
++ st.d r12++, r8
++ cp r11, r10
++ brlo 1b
++ mov pc, lr
+Index: linux-2.6.18-avr32/arch/avr32/mm/dma-coherent.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/dma-coherent.c 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,139 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/dma-mapping.h>
++
++#include <asm/addrspace.h>
++#include <asm/cacheflush.h>
++
++void dma_cache_sync(void *vaddr, size_t size, int direction)
++{
++ /*
++ * No need to sync an uncached area
++ */
++ if (PXSEG(vaddr) == P2SEG)
++ return;
++
++ switch (direction) {
++ case DMA_FROM_DEVICE: /* invalidate only */
++ dma_cache_inv(vaddr, size);
++ break;
++ case DMA_TO_DEVICE: /* writeback only */
++ dma_cache_wback(vaddr, size);
++ break;
++ case DMA_BIDIRECTIONAL: /* writeback and invalidate */
++ dma_cache_wback_inv(vaddr, size);
++ break;
++ default:
++ BUG();
++ }
++}
++EXPORT_SYMBOL(dma_cache_sync);
++
++static struct page *__dma_alloc(struct device *dev, size_t size,
++ dma_addr_t *handle, gfp_t gfp)
++{
++ struct page *page, *free, *end;
++ int order;
++
++ size = PAGE_ALIGN(size);
++ order = get_order(size);
++
++ page = alloc_pages(gfp, order);
++ if (!page)
++ return NULL;
++ split_page(page, order);
++
++ /*
++ * When accessing physical memory with valid cache data, we
++ * get a cache hit even if the virtual memory region is marked
++ * as uncached.
++ *
++ * Since the memory is newly allocated, there is no point in
++ * doing a writeback. If the previous owner cares, he should
++ * have flushed the cache before releasing the memory.
++ */
++ invalidate_dcache_region(phys_to_virt(page_to_phys(page)), size);
++
++ *handle = page_to_bus(page);
++ free = page + (size >> PAGE_SHIFT);
++ end = page + (1 << order);
++
++ /*
++ * Free any unused pages
++ */
++ while (free < end) {
++ __free_page(free);
++ free++;
++ }
++
++ return page;
++}
++
++static void __dma_free(struct device *dev, size_t size,
++ struct page *page, dma_addr_t handle)
++{
++ struct page *end = page + (PAGE_ALIGN(size) >> PAGE_SHIFT);
++
++ while (page < end)
++ __free_page(page++);
++}
++
++void *dma_alloc_coherent(struct device *dev, size_t size,
++ dma_addr_t *handle, gfp_t gfp)
++{
++ struct page *page;
++ void *ret = NULL;
++
++ page = __dma_alloc(dev, size, handle, gfp);
++ if (page)
++ ret = phys_to_uncached(page_to_phys(page));
++
++ return ret;
++}
++EXPORT_SYMBOL(dma_alloc_coherent);
++
++void dma_free_coherent(struct device *dev, size_t size,
++ void *cpu_addr, dma_addr_t handle)
++{
++ void *addr = phys_to_cached(uncached_to_phys(cpu_addr));
++ struct page *page;
++
++ pr_debug("dma_free_coherent addr %p (phys %08lx) size %u\n",
++ cpu_addr, (unsigned long)handle, (unsigned)size);
++ BUG_ON(!virt_addr_valid(addr));
++ page = virt_to_page(addr);
++ __dma_free(dev, size, page, handle);
++}
++EXPORT_SYMBOL(dma_free_coherent);
++
++#if 0
++void *dma_alloc_writecombine(struct device *dev, size_t size,
++ dma_addr_t *handle, gfp_t gfp)
++{
++ struct page *page;
++
++ page = __dma_alloc(dev, size, handle, gfp);
++
++ /* Now, map the page into P3 with write-combining turned on */
++ return __ioremap(page_to_phys(page), size, _PAGE_BUFFER);
++}
++EXPORT_SYMBOL(dma_alloc_writecombine);
++
++void dma_free_writecombine(struct device *dev, size_t size,
++ void *cpu_addr, dma_addr_t handle)
++{
++ struct page *page;
++
++ iounmap(cpu_addr);
++
++ page = bus_to_page(handle);
++ __dma_free(dev, size, page, handle);
++}
++EXPORT_SYMBOL(dma_free_writecombine);
++#endif
+Index: linux-2.6.18-avr32/arch/avr32/mm/fault.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/fault.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,315 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * Based on linux/arch/sh/mm/fault.c:
++ * Copyright (C) 1999 Niibe Yutaka
++ *
++ * 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/mm.h>
++#include <linux/module.h>
++#include <linux/pagemap.h>
++
++#include <asm/kdebug.h>
++#include <asm/mmu_context.h>
++#include <asm/sysreg.h>
++#include <asm/uaccess.h>
++#include <asm/tlb.h>
++
++#ifdef DEBUG
++static void dump_code(unsigned long pc)
++{
++ char *p = (char *)pc;
++ char val;
++ int i;
++
++
++ printk(KERN_DEBUG "Code:");
++ for (i = 0; i < 16; i++) {
++ if (__get_user(val, p + i))
++ break;
++ printk(" %02x", val);
++ }
++ printk("\n");
++}
++#endif
++
++#ifdef CONFIG_KPROBES
++ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain);
++
++/* Hook to register for page fault notifications */
++int register_page_fault_notifier(struct notifier_block *nb)
++{
++ return atomic_notifier_chain_register(&notify_page_fault_chain, nb);
++}
++
++int unregister_page_fault_notifier(struct notifier_block *nb)
++{
++ return atomic_notifier_chain_unregister(&notify_page_fault_chain, nb);
++}
++
++static inline int notify_page_fault(enum die_val val, struct pt_regs *regs,
++ int trap, int sig)
++{
++ struct die_args args = {
++ .regs = regs,
++ .trapnr = trap,
++ };
++ return atomic_notifier_call_chain(&notify_page_fault_chain, val, &args);
++}
++#else
++static inline int notify_page_fault(enum die_val val, struct pt_regs *regs,
++ int trap, int sig)
++{
++ return NOTIFY_DONE;
++}
++#endif
++
++/*
++ * This routine handles page faults. It determines the address and the
++ * problem, and then passes it off to one of the appropriate routines.
++ *
++ * ecr is the Exception Cause Register. Possible values are:
++ * 5: Page not found (instruction access)
++ * 6: Protection fault (instruction access)
++ * 12: Page not found (read access)
++ * 13: Page not found (write access)
++ * 14: Protection fault (read access)
++ * 15: Protection fault (write access)
++ */
++asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
++{
++ struct task_struct *tsk;
++ struct mm_struct *mm;
++ struct vm_area_struct *vma;
++ const struct exception_table_entry *fixup;
++ unsigned long address;
++ unsigned long page;
++ int writeaccess = 0;
++
++ if (notify_page_fault(DIE_PAGE_FAULT, regs,
++ ecr, SIGSEGV) == NOTIFY_STOP)
++ return;
++
++ address = sysreg_read(TLBEAR);
++
++ tsk = current;
++ mm = tsk->mm;
++
++ /*
++ * If we're in an interrupt or have no user context, we must
++ * not take the fault...
++ */
++ if (in_atomic() || !mm || regs->sr & SYSREG_BIT(GM))
++ goto no_context;
++
++ local_irq_enable();
++
++ down_read(&mm->mmap_sem);
++
++ vma = find_vma(mm, address);
++ if (!vma)
++ goto bad_area;
++ if (vma->vm_start <= address)
++ goto good_area;
++ if (!(vma->vm_flags & VM_GROWSDOWN))
++ goto bad_area;
++ if (expand_stack(vma, address))
++ goto bad_area;
++
++ /*
++ * Ok, we have a good vm_area for this memory access, so we
++ * can handle it...
++ */
++good_area:
++ //pr_debug("good area: vm_flags = 0x%lx\n", vma->vm_flags);
++ switch (ecr) {
++ case ECR_PROTECTION_X:
++ case ECR_TLB_MISS_X:
++ if (!(vma->vm_flags & VM_EXEC))
++ goto bad_area;
++ break;
++ case ECR_PROTECTION_R:
++ case ECR_TLB_MISS_R:
++ if (!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
++ goto bad_area;
++ break;
++ case ECR_PROTECTION_W:
++ case ECR_TLB_MISS_W:
++ if (!(vma->vm_flags & VM_WRITE))
++ goto bad_area;
++ writeaccess = 1;
++ break;
++ default:
++ panic("Unhandled case %lu in do_page_fault!", ecr);
++ }
++
++ /*
++ * If for any reason at all we couldn't handle the fault, make
++ * sure we exit gracefully rather than endlessly redo the
++ * fault.
++ */
++survive:
++ switch (handle_mm_fault(mm, vma, address, writeaccess)) {
++ case VM_FAULT_MINOR:
++ tsk->min_flt++;
++ break;
++ case VM_FAULT_MAJOR:
++ tsk->maj_flt++;
++ break;
++ case VM_FAULT_SIGBUS:
++ goto do_sigbus;
++ case VM_FAULT_OOM:
++ goto out_of_memory;
++ default:
++ BUG();
++ }
++
++ up_read(&mm->mmap_sem);
++ return;
++
++ /*
++ * Something tried to access memory that isn't in our memory
++ * map. Fix it, but check if it's kernel or user first...
++ */
++bad_area:
++ pr_debug("Bad area [%s:%u]: addr %08lx, ecr %lu\n",
++ tsk->comm, tsk->pid, address, ecr);
++
++ up_read(&mm->mmap_sem);
++
++ if (user_mode(regs)) {
++ /* Hmm...we have to pass address and ecr somehow... */
++ /* tsk->thread.address = address;
++ tsk->thread.error_code = ecr; */
++#ifdef DEBUG
++ show_regs(regs);
++ dump_code(regs->pc);
++
++ page = sysreg_read(PTBR);
++ printk("ptbr = %08lx", page);
++ if (page) {
++ page = ((unsigned long *)page)[address >> 22];
++ printk(" pgd = %08lx", page);
++ if (page & _PAGE_PRESENT) {
++ page &= PAGE_MASK;
++ address &= 0x003ff000;
++ page = ((unsigned long *)__va(page))[address >> PAGE_SHIFT];
++ printk(" pte = %08lx\n", page);
++ }
++ }
++#endif
++ pr_debug("Sending SIGSEGV to PID %d...\n",
++ tsk->pid);
++ force_sig(SIGSEGV, tsk);
++ return;
++ }
++
++no_context:
++ pr_debug("No context\n");
++
++ /* Are we prepared to handle this kernel fault? */
++ fixup = search_exception_tables(regs->pc);
++ if (fixup) {
++ regs->pc = fixup->fixup;
++ pr_debug("Found fixup at %08lx\n", fixup->fixup);
++ return;
++ }
++
++ /*
++ * Oops. The kernel tried to access some bad page. We'll have
++ * to terminate things with extreme prejudice.
++ */
++ if (address < PAGE_SIZE)
++ printk(KERN_ALERT
++ "Unable to handle kernel NULL pointer dereference");
++ else
++ printk(KERN_ALERT
++ "Unable to handle kernel paging request");
++ printk(" at virtual address %08lx\n", address);
++ printk(KERN_ALERT "pc = %08lx\n", regs->pc);
++
++ page = sysreg_read(PTBR);
++ printk(KERN_ALERT "ptbr = %08lx", page);
++ if (page) {
++ page = ((unsigned long *)page)[address >> 22];
++ printk(" pgd = %08lx", page);
++ if (page & _PAGE_PRESENT) {
++ page &= PAGE_MASK;
++ address &= 0x003ff000;
++ page = ((unsigned long *)__va(page))[address >> PAGE_SHIFT];
++ printk(" pte = %08lx\n", page);
++ }
++ }
++ die("\nOops", regs, ecr);
++ do_exit(SIGKILL);
++
++ /*
++ * We ran out of memory, or some other thing happened to us
++ * that made us unable to handle the page fault gracefully.
++ */
++out_of_memory:
++ printk("Out of memory\n");
++ up_read(&mm->mmap_sem);
++ if (current->pid == 1) {
++ yield();
++ down_read(&mm->mmap_sem);
++ goto survive;
++ }
++ printk("VM: Killing process %s\n", tsk->comm);
++ if (user_mode(regs))
++ do_exit(SIGKILL);
++ goto no_context;
++
++do_sigbus:
++ up_read(&mm->mmap_sem);
++
++ /*
++ * Send a sigbus, regardless of whether we were in kernel or
++ * user mode.
++ */
++ /* address, error_code, trap_no, ... */
++#ifdef DEBUG
++ show_regs(regs);
++ dump_code(regs->pc);
++#endif
++ pr_debug("Sending SIGBUS to PID %d...\n", tsk->pid);
++ force_sig(SIGBUS, tsk);
++
++ /* Kernel mode? Handle exceptions or die */
++ if (!user_mode(regs))
++ goto no_context;
++}
++
++asmlinkage void do_bus_error(unsigned long addr, int write_access,
++ struct pt_regs *regs)
++{
++ printk(KERN_ALERT
++ "Bus error at physical address 0x%08lx (%s access)\n",
++ addr, write_access ? "write" : "read");
++ printk(KERN_INFO "DTLB dump:\n");
++ dump_dtlb();
++ die("Bus Error", regs, write_access);
++ do_exit(SIGKILL);
++}
++
++/*
++ * This functionality is currently not possible to implement because
++ * we're using segmentation to ensure a fixed mapping of the kernel
++ * virtual address space.
++ *
++ * It would be possible to implement this, but it would require us to
++ * disable segmentation at startup and load the kernel mappings into
++ * the TLB like any other pages. There will be lots of trickery to
++ * avoid recursive invocation of the TLB miss handler, though...
++ */
++#ifdef CONFIG_DEBUG_PAGEALLOC
++void kernel_map_pages(struct page *page, int numpages, int enable)
++{
++
++}
++EXPORT_SYMBOL(kernel_map_pages);
++#endif
+Index: linux-2.6.18-avr32/arch/avr32/mm/init.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/init.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,481 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/kernel.h>
++#include <linux/mm.h>
++#include <linux/swap.h>
++#include <linux/init.h>
++#include <linux/initrd.h>
++#include <linux/mmzone.h>
++#include <linux/bootmem.h>
++#include <linux/pagemap.h>
++#include <linux/pfn.h>
++#include <linux/nodemask.h>
++
++#include <asm/page.h>
++#include <asm/mmu_context.h>
++#include <asm/tlb.h>
++#include <asm/io.h>
++#include <asm/dma.h>
++#include <asm/setup.h>
++#include <asm/sections.h>
++
++DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
++
++pgd_t swapper_pg_dir[PTRS_PER_PGD];
++
++struct page *empty_zero_page;
++
++/*
++ * Cache of MMU context last used.
++ */
++unsigned long mmu_context_cache = NO_CONTEXT;
++
++#define START_PFN (NODE_DATA(0)->bdata->node_boot_start >> PAGE_SHIFT)
++#define MAX_LOW_PFN (NODE_DATA(0)->bdata->node_low_pfn)
++
++void show_mem(void)
++{
++ int total = 0, reserved = 0, cached = 0;
++ int slab = 0, free = 0, shared = 0;
++ pg_data_t *pgdat;
++
++ printk("Mem-info:\n");
++ show_free_areas();
++
++ for_each_online_pgdat(pgdat) {
++ struct page *page, *end;
++
++ page = pgdat->node_mem_map;
++ end = page + pgdat->node_spanned_pages;
++
++ do {
++ total++;
++ if (PageReserved(page))
++ reserved++;
++ else if (PageSwapCache(page))
++ cached++;
++ else if (PageSlab(page))
++ slab++;
++ else if (!page_count(page))
++ free++;
++ else
++ shared += page_count(page) - 1;
++ page++;
++ } while (page < end);
++ }
++
++ printk ("%d pages of RAM\n", total);
++ printk ("%d free pages\n", free);
++ printk ("%d reserved pages\n", reserved);
++ printk ("%d slab pages\n", slab);
++ printk ("%d pages shared\n", shared);
++ printk ("%d pages swap cached\n", cached);
++}
++
++static void __init print_memory_map(const char *what,
++ struct tag_mem_range *mem)
++{
++ printk ("%s:\n", what);
++ for (; mem; mem = mem->next) {
++ printk (" %08lx - %08lx\n",
++ (unsigned long)mem->addr,
++ (unsigned long)(mem->addr + mem->size));
++ }
++}
++
++#define MAX_LOWMEM HIGHMEM_START
++#define MAX_LOWMEM_PFN PFN_DOWN(MAX_LOWMEM)
++
++/*
++ * Sort a list of memory regions in-place by ascending address.
++ *
++ * We're using bubble sort because we only have singly linked lists
++ * with few elements.
++ */
++static void __init sort_mem_list(struct tag_mem_range **pmem)
++{
++ int done;
++ struct tag_mem_range **a, **b;
++
++ if (!*pmem)
++ return;
++
++ do {
++ done = 1;
++ a = pmem, b = &(*pmem)->next;
++ while (*b) {
++ if ((*a)->addr > (*b)->addr) {
++ struct tag_mem_range *tmp;
++ tmp = (*b)->next;
++ (*b)->next = *a;
++ *a = *b;
++ *b = tmp;
++ done = 0;
++ }
++ a = &(*a)->next;
++ b = &(*a)->next;
++ }
++ } while (!done);
++}
++
++/*
++ * Find a free memory region large enough for storing the
++ * bootmem bitmap.
++ */
++static unsigned long __init
++find_bootmap_pfn(const struct tag_mem_range *mem)
++{
++ unsigned long bootmap_pages, bootmap_len;
++ unsigned long node_pages = PFN_UP(mem->size);
++ unsigned long bootmap_addr = mem->addr;
++ struct tag_mem_range *reserved = mem_reserved;
++ struct tag_mem_range *ramdisk = mem_ramdisk;
++ unsigned long kern_start = virt_to_phys(_stext);
++ unsigned long kern_end = virt_to_phys(_end);
++
++ bootmap_pages = bootmem_bootmap_pages(node_pages);
++ bootmap_len = bootmap_pages << PAGE_SHIFT;
++
++ /*
++ * Find a large enough region without reserved pages for
++ * storing the bootmem bitmap. We can take advantage of the
++ * fact that all lists have been sorted.
++ *
++ * We have to check explicitly reserved regions as well as the
++ * kernel image and any RAMDISK images...
++ *
++ * Oh, and we have to make sure we don't overwrite the taglist
++ * since we're going to use it until the bootmem allocator is
++ * fully up and running.
++ */
++ while (1) {
++ if ((bootmap_addr < kern_end) &&
++ ((bootmap_addr + bootmap_len) > kern_start))
++ bootmap_addr = kern_end;
++
++ while (reserved &&
++ (bootmap_addr >= (reserved->addr + reserved->size)))
++ reserved = reserved->next;
++
++ if (reserved &&
++ ((bootmap_addr + bootmap_len) >= reserved->addr)) {
++ bootmap_addr = reserved->addr + reserved->size;
++ continue;
++ }
++
++ while (ramdisk &&
++ (bootmap_addr >= (ramdisk->addr + ramdisk->size)))
++ ramdisk = ramdisk->next;
++
++ if (!ramdisk ||
++ ((bootmap_addr + bootmap_len) < ramdisk->addr))
++ break;
++
++ bootmap_addr = ramdisk->addr + ramdisk->size;
++ }
++
++ if ((PFN_UP(bootmap_addr) + bootmap_len) >= (mem->addr + mem->size))
++ return ~0UL;
++
++ return PFN_UP(bootmap_addr);
++}
++
++void __init setup_bootmem(void)
++{
++ unsigned bootmap_size;
++ unsigned long first_pfn, bootmap_pfn, pages;
++ unsigned long max_pfn, max_low_pfn;
++ unsigned long kern_start = virt_to_phys(_stext);
++ unsigned long kern_end = virt_to_phys(_end);
++ unsigned node = 0;
++ struct tag_mem_range *bank, *res;
++
++ sort_mem_list(&mem_phys);
++ sort_mem_list(&mem_reserved);
++
++ print_memory_map("Physical memory", mem_phys);
++ print_memory_map("Reserved memory", mem_reserved);
++
++ nodes_clear(node_online_map);
++
++ if (mem_ramdisk) {
++#ifdef CONFIG_BLK_DEV_INITRD
++ initrd_start = (unsigned long)__va(mem_ramdisk->addr);
++ initrd_end = initrd_start + mem_ramdisk->size;
++
++ print_memory_map("RAMDISK images", mem_ramdisk);
++ if (mem_ramdisk->next)
++ printk(KERN_WARNING
++ "Warning: Only the first RAMDISK image "
++ "will be used\n");
++ sort_mem_list(&mem_ramdisk);
++#else
++ printk(KERN_WARNING "RAM disk image present, but "
++ "no initrd support in kernel!\n");
++#endif
++ }
++
++ if (mem_phys->next)
++ printk(KERN_WARNING "Only using first memory bank\n");
++
++ for (bank = mem_phys; bank; bank = NULL) {
++ first_pfn = PFN_UP(bank->addr);
++ max_low_pfn = max_pfn = PFN_DOWN(bank->addr + bank->size);
++ bootmap_pfn = find_bootmap_pfn(bank);
++ if (bootmap_pfn > max_pfn)
++ panic("No space for bootmem bitmap!\n");
++
++ if (max_low_pfn > MAX_LOWMEM_PFN) {
++ max_low_pfn = MAX_LOWMEM_PFN;
++#ifndef CONFIG_HIGHMEM
++ /*
++ * Lowmem is memory that can be addressed
++ * directly through P1/P2
++ */
++ printk(KERN_WARNING
++ "Node %u: Only %ld MiB of memory will be used.\n",
++ node, MAX_LOWMEM >> 20);
++ printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n");
++#else
++#error HIGHMEM is not supported by AVR32 yet
++#endif
++ }
++
++ /* Initialize the boot-time allocator with low memory only. */
++ bootmap_size = init_bootmem_node(NODE_DATA(node), bootmap_pfn,
++ first_pfn, max_low_pfn);
++
++ printk("Node %u: bdata = %p, bdata->node_bootmem_map = %p\n",
++ node, NODE_DATA(node)->bdata,
++ NODE_DATA(node)->bdata->node_bootmem_map);
++
++ /*
++ * Register fully available RAM pages with the bootmem
++ * allocator.
++ */
++ pages = max_low_pfn - first_pfn;
++ free_bootmem_node (NODE_DATA(node), PFN_PHYS(first_pfn),
++ PFN_PHYS(pages));
++
++ /*
++ * Reserve space for the kernel image (if present in
++ * this node)...
++ */
++ if ((kern_start >= PFN_PHYS(first_pfn)) &&
++ (kern_start < PFN_PHYS(max_pfn))) {
++ printk("Node %u: Kernel image %08lx - %08lx\n",
++ node, kern_start, kern_end);
++ reserve_bootmem_node(NODE_DATA(node), kern_start,
++ kern_end - kern_start);
++ }
++
++ /* ...the bootmem bitmap... */
++ reserve_bootmem_node(NODE_DATA(node),
++ PFN_PHYS(bootmap_pfn),
++ bootmap_size);
++
++ /* ...any RAMDISK images... */
++ for (res = mem_ramdisk; res; res = res->next) {
++ if (res->addr > PFN_PHYS(max_pfn))
++ break;
++
++ if (res->addr >= PFN_PHYS(first_pfn)) {
++ printk("Node %u: RAMDISK %08lx - %08lx\n",
++ node,
++ (unsigned long)res->addr,
++ (unsigned long)(res->addr + res->size));
++ reserve_bootmem_node(NODE_DATA(node),
++ res->addr, res->size);
++ }
++ }
++
++ /* ...and any other reserved regions. */
++ for (res = mem_reserved; res; res = res->next) {
++ if (res->addr > PFN_PHYS(max_pfn))
++ break;
++
++ if (res->addr >= PFN_PHYS(first_pfn)) {
++ printk("Node %u: Reserved %08lx - %08lx\n",
++ node,
++ (unsigned long)res->addr,
++ (unsigned long)(res->addr + res->size));
++ reserve_bootmem_node(NODE_DATA(node),
++ res->addr, res->size);
++ }
++ }
++
++ node_set_online(node);
++ }
++}
++
++/*
++ * paging_init() sets up the page tables
++ *
++ * This routine also unmaps the page at virtual kernel address 0, so
++ * that we can trap those pesky NULL-reference errors in the kernel.
++ */
++void __init paging_init(void)
++{
++ extern unsigned long _evba;
++ void *zero_page;
++ int nid;
++
++ /*
++ * Make sure we can handle exceptions before enabling
++ * paging. Not that we should ever _get_ any exceptions this
++ * early, but you never know...
++ */
++ printk("Exception vectors start at %p\n", &_evba);
++ sysreg_write(EVBA, (unsigned long)&_evba);
++
++ /*
++ * Since we are ready to handle exceptions now, we should let
++ * the CPU generate them...
++ */
++ __asm__ __volatile__ ("csrf %0" : : "i"(SR_EM_BIT));
++
++ /*
++ * Allocate the zero page. The allocator will panic if it
++ * can't satisfy the request, so no need to check.
++ */
++ zero_page = alloc_bootmem_low_pages_node(NODE_DATA(0),
++ PAGE_SIZE);
++
++ {
++ pgd_t *pg_dir;
++ int i;
++
++ pg_dir = swapper_pg_dir;
++ sysreg_write(PTBR, (unsigned long)pg_dir);
++
++ for (i = 0; i < PTRS_PER_PGD; i++)
++ pgd_val(pg_dir[i]) = 0;
++
++ enable_mmu();
++ printk ("CPU: Paging enabled\n");
++ }
++
++ for_each_online_node(nid) {
++ pg_data_t *pgdat = NODE_DATA(nid);
++ unsigned long zones_size[MAX_NR_ZONES];
++ unsigned long low, start_pfn;
++
++ start_pfn = pgdat->bdata->node_boot_start;
++ start_pfn >>= PAGE_SHIFT;
++ low = pgdat->bdata->node_low_pfn;
++
++ /* All memory is DMA-able */
++ memset(zones_size, 0, sizeof(zones_size));
++ zones_size[ZONE_DMA] = low - start_pfn;
++
++ printk("Node %u: start_pfn = 0x%lx, low = 0x%lx\n",
++ nid, start_pfn, low);
++
++ free_area_init_node(nid, pgdat, zones_size, start_pfn, NULL);
++
++ printk("Node %u: mem_map starts at %p\n",
++ pgdat->node_id, pgdat->node_mem_map);
++ }
++
++ mem_map = NODE_DATA(0)->node_mem_map;
++
++ memset(zero_page, 0, PAGE_SIZE);
++ empty_zero_page = virt_to_page(zero_page);
++ flush_dcache_page(empty_zero_page);
++}
++
++void __init mem_init(void)
++{
++ int codesize, reservedpages, datasize, initsize;
++ int nid, i;
++
++ reservedpages = 0;
++ high_memory = NULL;
++
++ /* this will put all low memory onto the freelists */
++ for_each_online_node(nid) {
++ pg_data_t *pgdat = NODE_DATA(nid);
++ unsigned long node_pages = 0;
++ void *node_high_memory;
++
++ num_physpages += pgdat->node_present_pages;
++
++ if (pgdat->node_spanned_pages != 0)
++ node_pages = free_all_bootmem_node(pgdat);
++
++ totalram_pages += node_pages;
++
++ for (i = 0; i < node_pages; i++)
++ if (PageReserved(pgdat->node_mem_map + i))
++ reservedpages++;
++
++ node_high_memory = (void *)((pgdat->node_start_pfn
++ + pgdat->node_spanned_pages)
++ << PAGE_SHIFT);
++ if (node_high_memory > high_memory)
++ high_memory = node_high_memory;
++ }
++
++ max_mapnr = MAP_NR(high_memory);
++
++ codesize = (unsigned long)_etext - (unsigned long)_text;
++ datasize = (unsigned long)_edata - (unsigned long)_data;
++ initsize = (unsigned long)__init_end - (unsigned long)__init_begin;
++
++ printk ("Memory: %luk/%luk available (%dk kernel code, "
++ "%dk reserved, %dk data, %dk init)\n",
++ (unsigned long)nr_free_pages() << (PAGE_SHIFT - 10),
++ totalram_pages << (PAGE_SHIFT - 10),
++ codesize >> 10,
++ reservedpages << (PAGE_SHIFT - 10),
++ datasize >> 10,
++ initsize >> 10);
++}
++
++static inline void free_area(unsigned long addr, unsigned long end, char *s)
++{
++ unsigned int size = (end - addr) >> 10;
++
++ for (; addr < end; addr += PAGE_SIZE) {
++ struct page *page = virt_to_page(addr);
++ ClearPageReserved(page);
++ init_page_count(page);
++ free_page(addr);
++ totalram_pages++;
++ }
++
++ if (size && s)
++ printk(KERN_INFO "Freeing %s memory: %dK (%lx - %lx)\n",
++ s, size, end - (size << 10), end);
++}
++
++void free_initmem(void)
++{
++ free_area((unsigned long)__init_begin, (unsigned long)__init_end,
++ "init");
++}
++
++#ifdef CONFIG_BLK_DEV_INITRD
++
++static int keep_initrd;
++
++void free_initrd_mem(unsigned long start, unsigned long end)
++{
++ if (!keep_initrd)
++ free_area(start, end, "initrd");
++}
++
++static int __init keepinitrd_setup(char *__unused)
++{
++ keep_initrd = 1;
++ return 1;
++}
++
++__setup("keepinitrd", keepinitrd_setup);
++#endif
+Index: linux-2.6.18-avr32/arch/avr32/mm/ioremap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/ioremap.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,199 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/vmalloc.h>
++#include <linux/module.h>
++
++#include <asm/io.h>
++#include <asm/pgtable.h>
++#include <asm/cacheflush.h>
++#include <asm/tlbflush.h>
++#include <asm/addrspace.h>
++
++static inline int remap_area_pte(pte_t *pte, unsigned long address,
++ unsigned long end, unsigned long phys_addr,
++ pgprot_t prot)
++{
++ unsigned long pfn;
++
++ pfn = phys_addr >> PAGE_SHIFT;
++ do {
++ WARN_ON(!pte_none(*pte));
++
++ set_pte(pte, pfn_pte(pfn, prot));
++ address += PAGE_SIZE;
++ pfn++;
++ pte++;
++ } while (address && (address < end));
++
++ return 0;
++}
++
++static inline int remap_area_pmd(pmd_t *pmd, unsigned long address,
++ unsigned long end, unsigned long phys_addr,
++ pgprot_t prot)
++{
++ unsigned long next;
++
++ phys_addr -= address;
++
++ do {
++ pte_t *pte = pte_alloc_kernel(pmd, address);
++ if (!pte)
++ return -ENOMEM;
++
++ next = (address + PMD_SIZE) & PMD_MASK;
++ if (remap_area_pte(pte, address, next,
++ address + phys_addr, prot))
++ return -ENOMEM;
++
++ address = next;
++ pmd++;
++ } while (address && (address < end));
++ return 0;
++}
++
++static int remap_area_pud(pud_t *pud, unsigned long address,
++ unsigned long end, unsigned long phys_addr,
++ pgprot_t prot)
++{
++ unsigned long next;
++
++ phys_addr -= address;
++
++ do {
++ pmd_t *pmd = pmd_alloc(&init_mm, pud, address);
++ if (!pmd)
++ return -ENOMEM;
++ next = (address + PUD_SIZE) & PUD_MASK;
++ if (remap_area_pmd(pmd, address, next,
++ phys_addr + address, prot))
++ return -ENOMEM;
++
++ address = next;
++ pud++;
++ } while (address && address < end);
++
++ return 0;
++}
++
++static int remap_area_pages(unsigned long address, unsigned long phys_addr,
++ size_t size, pgprot_t prot)
++{
++ unsigned long end = address + size;
++ unsigned long next;
++ pgd_t *pgd;
++ int err = 0;
++
++ phys_addr -= address;
++
++ pgd = pgd_offset_k(address);
++ flush_cache_all();
++ BUG_ON(address >= end);
++
++ spin_lock(&init_mm.page_table_lock);
++ do {
++ pud_t *pud = pud_alloc(&init_mm, pgd, address);
++
++ err = -ENOMEM;
++ if (!pud)
++ break;
++
++ next = (address + PGDIR_SIZE) & PGDIR_MASK;
++ if (next < address || next > end)
++ next = end;
++ err = remap_area_pud(pud, address, next,
++ phys_addr + address, prot);
++ if (err)
++ break;
++
++ address = next;
++ pgd++;
++ } while (address && (address < end));
++
++ spin_unlock(&init_mm.page_table_lock);
++ flush_tlb_all();
++ return err;
++}
++
++/*
++ * Re-map an arbitrary physical address space into the kernel virtual
++ * address space. Needed when the kernel wants to access physical
++ * memory directly.
++ */
++void __iomem *__ioremap(unsigned long phys_addr, size_t size,
++ unsigned long flags)
++{
++ void *addr;
++ struct vm_struct *area;
++ unsigned long offset, last_addr;
++ pgprot_t prot;
++
++ /*
++ * Check if we can simply use the P4 segment. This area is
++ * uncacheable, so if caching/buffering is requested, we can't
++ * use it.
++ */
++ if ((phys_addr >= P4SEG) && (flags == 0))
++ return (void __iomem *)phys_addr;
++
++ /* Don't allow wraparound or zero size */
++ last_addr = phys_addr + size - 1;
++ if (!size || last_addr < phys_addr)
++ return NULL;
++
++ /*
++ * XXX: When mapping regular RAM, we'd better make damn sure
++ * it's never used for anything else. But this is really the
++ * caller's responsibility...
++ */
++ if (PHYSADDR(P2SEGADDR(phys_addr)) == phys_addr)
++ return (void __iomem *)P2SEGADDR(phys_addr);
++
++ /* Mappings have to be page-aligned */
++ offset = phys_addr & ~PAGE_MASK;
++ phys_addr &= PAGE_MASK;
++ size = PAGE_ALIGN(last_addr + 1) - phys_addr;
++
++ prot = __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY
++ | _PAGE_ACCESSED | _PAGE_TYPE_SMALL | flags);
++
++ /*
++ * Ok, go for it..
++ */
++ area = get_vm_area(size, VM_IOREMAP);
++ if (!area)
++ return NULL;
++ area->phys_addr = phys_addr;
++ addr = area->addr;
++ if (remap_area_pages((unsigned long)addr, phys_addr, size, prot)) {
++ vunmap(addr);
++ return NULL;
++ }
++
++ return (void __iomem *)(offset + (char *)addr);
++}
++EXPORT_SYMBOL(__ioremap);
++
++void __iounmap(void __iomem *addr)
++{
++ struct vm_struct *p;
++
++ if ((unsigned long)addr >= P4SEG)
++ return;
++ if (PXSEG(addr) == P2SEG)
++ return;
++
++ p = remove_vm_area((void *)(PAGE_MASK & (unsigned long __force)addr));
++ if (unlikely(!p)) {
++ printk (KERN_ERR "iounmap: bad address %p\n", addr);
++ return;
++ }
++
++ kfree (p);
++}
++EXPORT_SYMBOL(__iounmap);
+Index: linux-2.6.18-avr32/arch/avr32/mm/tlb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mm/tlb.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,378 @@
++/*
++ * AVR32 TLB operations
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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/mm.h>
++
++#include <asm/mmu_context.h>
++
++#define _TLBEHI_I 0x100
++
++void show_dtlb_entry(unsigned int index)
++{
++ unsigned int tlbehi, tlbehi_save, tlbelo, mmucr, mmucr_save, flags;
++
++ local_irq_save(flags);
++ mmucr_save = sysreg_read(MMUCR);
++ tlbehi_save = sysreg_read(TLBEHI);
++ mmucr = mmucr_save & 0x13;
++ mmucr |= index << 14;
++ sysreg_write(MMUCR, mmucr);
++
++ asm volatile("tlbr" : : : "memory");
++ cpu_sync_pipeline();
++
++ tlbehi = sysreg_read(TLBEHI);
++ tlbelo = sysreg_read(TLBELO);
++
++ printk("%2u: %c %c %02x %05x %05x %o %o %c %c %c %c\n",
++ index,
++ (tlbehi & 0x200)?'1':'0',
++ (tlbelo & 0x100)?'1':'0',
++ (tlbehi & 0xff),
++ (tlbehi >> 12), (tlbelo >> 12),
++ (tlbelo >> 4) & 7, (tlbelo >> 2) & 3,
++ (tlbelo & 0x200)?'1':'0',
++ (tlbelo & 0x080)?'1':'0',
++ (tlbelo & 0x001)?'1':'0',
++ (tlbelo & 0x002)?'1':'0');
++
++ sysreg_write(MMUCR, mmucr_save);
++ sysreg_write(TLBEHI, tlbehi_save);
++ cpu_sync_pipeline();
++ local_irq_restore(flags);
++}
++
++void dump_dtlb(void)
++{
++ unsigned int i;
++
++ printk("ID V G ASID VPN PFN AP SZ C B W D\n");
++ for (i = 0; i < 32; i++)
++ show_dtlb_entry(i);
++}
++
++static unsigned long last_mmucr;
++
++static inline void set_replacement_pointer(unsigned shift)
++{
++ unsigned long mmucr, mmucr_save;
++
++ mmucr = mmucr_save = sysreg_read(MMUCR);
++
++ /* Does this mapping already exist? */
++ __asm__ __volatile__(
++ " tlbs\n"
++ " mfsr %0, %1"
++ : "=r"(mmucr)
++ : "i"(SYSREG_MMUCR));
++
++ if (mmucr & SYSREG_BIT(MMUCR_N)) {
++ /* Not found -- pick a not-recently-accessed entry */
++ unsigned long rp;
++ unsigned long tlbar = sysreg_read(TLBARLO);
++
++ rp = 32 - fls(tlbar);
++ if (rp == 32) {
++ rp = 0;
++ sysreg_write(TLBARLO, -1L);
++ }
++
++ mmucr &= 0x13;
++ mmucr |= (rp << shift);
++
++ sysreg_write(MMUCR, mmucr);
++ }
++
++ last_mmucr = mmucr;
++}
++
++static void update_dtlb(unsigned long address, pte_t pte, unsigned long asid)
++{
++ unsigned long vpn;
++
++ vpn = (address & MMU_VPN_MASK) | _TLBEHI_VALID | asid;
++ sysreg_write(TLBEHI, vpn);
++ cpu_sync_pipeline();
++
++ set_replacement_pointer(14);
++
++ sysreg_write(TLBELO, pte_val(pte) & _PAGE_FLAGS_HARDWARE_MASK);
++
++ /* Let's go */
++ asm volatile("nop\n\ttlbw" : : : "memory");
++ cpu_sync_pipeline();
++}
++
++void update_mmu_cache(struct vm_area_struct *vma,
++ unsigned long address, pte_t pte)
++{
++ unsigned long flags;
++
++ /* ptrace may call this routine */
++ if (vma && current->active_mm != vma->vm_mm)
++ return;
++
++ local_irq_save(flags);
++ update_dtlb(address, pte, get_asid());
++ local_irq_restore(flags);
++}
++
++void __flush_tlb_page(unsigned long asid, unsigned long page)
++{
++ unsigned long mmucr, tlbehi;
++
++ page |= asid;
++ sysreg_write(TLBEHI, page);
++ cpu_sync_pipeline();
++ asm volatile("tlbs");
++ mmucr = sysreg_read(MMUCR);
++
++ if (!(mmucr & SYSREG_BIT(MMUCR_N))) {
++ unsigned long tlbarlo;
++ unsigned long entry;
++
++ /* Clear the "valid" bit */
++ tlbehi = sysreg_read(TLBEHI);
++ tlbehi &= ~_TLBEHI_VALID;
++ sysreg_write(TLBEHI, tlbehi);
++ cpu_sync_pipeline();
++
++ /* mark the entry as "not accessed" */
++ entry = (mmucr >> 14) & 0x3f;
++ tlbarlo = sysreg_read(TLBARLO);
++ tlbarlo |= (0x80000000 >> entry);
++ sysreg_write(TLBARLO, tlbarlo);
++
++ /* update the entry with valid bit clear */
++ asm volatile("tlbw");
++ cpu_sync_pipeline();
++ }
++}
++
++void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
++{
++ if (vma->vm_mm && vma->vm_mm->context != NO_CONTEXT) {
++ unsigned long flags, asid;
++ unsigned long saved_asid = MMU_NO_ASID;
++
++ asid = vma->vm_mm->context & MMU_CONTEXT_ASID_MASK;
++ page &= PAGE_MASK;
++
++ local_irq_save(flags);
++ if (vma->vm_mm != current->mm) {
++ saved_asid = get_asid();
++ set_asid(asid);
++ }
++
++ __flush_tlb_page(asid, page);
++
++ if (saved_asid != MMU_NO_ASID)
++ set_asid(saved_asid);
++ local_irq_restore(flags);
++ }
++}
++
++void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
++ unsigned long end)
++{
++ struct mm_struct *mm = vma->vm_mm;
++
++ if (mm->context != NO_CONTEXT) {
++ unsigned long flags;
++ int size;
++
++ local_irq_save(flags);
++ size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
++ if (size > (MMU_DTLB_ENTRIES / 4)) { /* Too many entries to flush */
++ mm->context = NO_CONTEXT;
++ if (mm == current->mm)
++ activate_context(mm);
++ } else {
++ unsigned long asid = mm->context & MMU_CONTEXT_ASID_MASK;
++ unsigned long saved_asid = MMU_NO_ASID;
++
++ start &= PAGE_MASK;
++ end += (PAGE_SIZE - 1);
++ end &= PAGE_MASK;
++ if (mm != current->mm) {
++ saved_asid = get_asid();
++ set_asid(asid);
++ }
++
++ while (start < end) {
++ __flush_tlb_page(asid, start);
++ start += PAGE_SIZE;
++ }
++ if (saved_asid != MMU_NO_ASID)
++ set_asid(saved_asid);
++ }
++ local_irq_restore(flags);
++ }
++}
++
++/*
++ * TODO: If this is only called for addresses > TASK_SIZE, we can probably
++ * skip the ASID stuff and just use the Global bit...
++ */
++void flush_tlb_kernel_range(unsigned long start, unsigned long end)
++{
++ unsigned long flags;
++ int size;
++
++ local_irq_save(flags);
++ size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
++ if (size > (MMU_DTLB_ENTRIES / 4)) { /* Too many entries to flush */
++ flush_tlb_all();
++ } else {
++ unsigned long asid = init_mm.context & MMU_CONTEXT_ASID_MASK;
++ unsigned long saved_asid = get_asid();
++
++ start &= PAGE_MASK;
++ end += (PAGE_SIZE - 1);
++ end &= PAGE_MASK;
++ set_asid(asid);
++ while (start < end) {
++ __flush_tlb_page(asid, start);
++ start += PAGE_SIZE;
++ }
++ set_asid(saved_asid);
++ }
++ local_irq_restore(flags);
++}
++
++void flush_tlb_mm(struct mm_struct *mm)
++{
++ /* Invalidate all TLB entries of this process by getting a new ASID */
++ if (mm->context != NO_CONTEXT) {
++ unsigned long flags;
++
++ local_irq_save(flags);
++ mm->context = NO_CONTEXT;
++ if (mm == current->mm)
++ activate_context(mm);
++ local_irq_restore(flags);
++ }
++}
++
++void flush_tlb_all(void)
++{
++ unsigned long flags;
++
++ local_irq_save(flags);
++ sysreg_write(MMUCR, sysreg_read(MMUCR) | SYSREG_BIT(MMUCR_I));
++ local_irq_restore(flags);
++}
++
++#ifdef CONFIG_PROC_FS
++
++#include <linux/seq_file.h>
++#include <linux/proc_fs.h>
++#include <linux/init.h>
++
++static void *tlb_start(struct seq_file *tlb, loff_t *pos)
++{
++ static unsigned long tlb_index;
++
++ if (*pos >= 32)
++ return NULL;
++
++ tlb_index = 0;
++ return &tlb_index;
++}
++
++static void *tlb_next(struct seq_file *tlb, void *v, loff_t *pos)
++{
++ unsigned long *index = v;
++
++ if (*index >= 31)
++ return NULL;
++
++ ++*pos;
++ ++*index;
++ return index;
++}
++
++static void tlb_stop(struct seq_file *tlb, void *v)
++{
++
++}
++
++static int tlb_show(struct seq_file *tlb, void *v)
++{
++ unsigned int tlbehi, tlbehi_save, tlbelo, mmucr, mmucr_save, flags;
++ unsigned long *index = v;
++
++ if (*index == 0)
++ seq_puts(tlb, "ID V G ASID VPN PFN AP SZ C B W D\n");
++
++ BUG_ON(*index >= 32);
++
++ local_irq_save(flags);
++ mmucr_save = sysreg_read(MMUCR);
++ tlbehi_save = sysreg_read(TLBEHI);
++ mmucr = mmucr_save & 0x13;
++ mmucr |= *index << 14;
++ sysreg_write(MMUCR, mmucr);
++
++ asm volatile("tlbr" : : : "memory");
++ cpu_sync_pipeline();
++
++ tlbehi = sysreg_read(TLBEHI);
++ tlbelo = sysreg_read(TLBELO);
++
++ sysreg_write(MMUCR, mmucr_save);
++ sysreg_write(TLBEHI, tlbehi_save);
++ cpu_sync_pipeline();
++ local_irq_restore(flags);
++
++ seq_printf(tlb, "%2lu: %c %c %02x %05x %05x %o %o %c %c %c %c\n",
++ *index,
++ (tlbehi & 0x200)?'1':'0',
++ (tlbelo & 0x100)?'1':'0',
++ (tlbehi & 0xff),
++ (tlbehi >> 12), (tlbelo >> 12),
++ (tlbelo >> 4) & 7, (tlbelo >> 2) & 3,
++ (tlbelo & 0x200)?'1':'0',
++ (tlbelo & 0x080)?'1':'0',
++ (tlbelo & 0x001)?'1':'0',
++ (tlbelo & 0x002)?'1':'0');
++
++ return 0;
++}
++
++static struct seq_operations tlb_ops = {
++ .start = tlb_start,
++ .next = tlb_next,
++ .stop = tlb_stop,
++ .show = tlb_show,
++};
++
++static int tlb_open(struct inode *inode, struct file *file)
++{
++ return seq_open(file, &tlb_ops);
++}
++
++static struct file_operations proc_tlb_operations = {
++ .open = tlb_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = seq_release,
++};
++
++static int __init proctlb_init(void)
++{
++ struct proc_dir_entry *entry;
++
++ entry = create_proc_entry("tlb", 0, NULL);
++ if (entry)
++ entry->proc_fops = &proc_tlb_operations;
++ return 0;
++}
++late_initcall(proctlb_init);
++#endif /* CONFIG_PROC_FS */
+Index: linux-2.6.18-avr32/include/asm-avr32/Kbuild
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/Kbuild 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,3 @@
++include include/asm-generic/Kbuild.asm
++
++header-y += cachectl.h
+Index: linux-2.6.18-avr32/include/asm-avr32/a.out.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/a.out.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,26 @@
++#ifndef __ASM_AVR32_A_OUT_H
++#define __ASM_AVR32_A_OUT_H
++
++struct exec
++{
++ unsigned long a_info; /* Use macros N_MAGIC, etc for access */
++ unsigned a_text; /* length of text, in bytes */
++ unsigned a_data; /* length of data, in bytes */
++ unsigned a_bss; /* length of uninitialized data area for file, in bytes */
++ unsigned a_syms; /* length of symbol table data in file, in bytes */
++ unsigned a_entry; /* start address */
++ unsigned a_trsize; /* length of relocation info for text, in bytes */
++ unsigned a_drsize; /* length of relocation info for data, in bytes */
++};
++
++#define N_TRSIZE(a) ((a).a_trsize)
++#define N_DRSIZE(a) ((a).a_drsize)
++#define N_SYMSIZE(a) ((a).a_syms)
++
++#ifdef __KERNEL__
++
++#define STACK_TOP TASK_SIZE
++
++#endif
++
++#endif /* __ASM_AVR32_A_OUT_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/addrspace.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/addrspace.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,43 @@
++/*
++ * Defitions for the address spaces of the AVR32 CPUs. Heavily based on
++ * include/asm-sh/addrspace.h
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_ADDRSPACE_H
++#define __ASM_AVR32_ADDRSPACE_H
++
++#ifdef CONFIG_MMU
++
++/* Memory segments when segmentation is enabled */
++#define P0SEG 0x00000000
++#define P1SEG 0x80000000
++#define P2SEG 0xa0000000
++#define P3SEG 0xc0000000
++#define P4SEG 0xe0000000
++
++/* Returns the privileged segment base of a given address */
++#define PXSEG(a) (((unsigned long)(a)) & 0xe0000000)
++
++/* Returns the physical address of a PnSEG (n=1,2) address */
++#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff)
++
++/*
++ * Map an address to a certain privileged segment
++ */
++#define P1SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) \
++ | P1SEG))
++#define P2SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) \
++ | P2SEG))
++#define P3SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) \
++ | P3SEG))
++#define P4SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) \
++ | P4SEG))
++
++#endif /* CONFIG_MMU */
++
++#endif /* __ASM_AVR32_ADDRSPACE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/at91rm9200_pdc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/at91rm9200_pdc.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,36 @@
++/*
++ * include/asm-arm/arch-at91rm9200/at91rm9200_pdc.h
++ *
++ * Copyright (C) 2005 Ivan Kokshaysky
++ * Copyright (C) SAN People
++ *
++ * Peripheral Data Controller (PDC) registers.
++ * Based on AT91RM9200 datasheet revision E.
++ *
++ * 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 AT91RM9200_PDC_H
++#define AT91RM9200_PDC_H
++
++#define AT91_PDC_RPR 0x100 /* Receive Pointer Register */
++#define AT91_PDC_RCR 0x104 /* Receive Counter Register */
++#define AT91_PDC_TPR 0x108 /* Transmit Pointer Register */
++#define AT91_PDC_TCR 0x10c /* Transmit Counter Register */
++#define AT91_PDC_RNPR 0x110 /* Receive Next Pointer Register */
++#define AT91_PDC_RNCR 0x114 /* Receive Next Counter Register */
++#define AT91_PDC_TNPR 0x118 /* Transmit Next Pointer Register */
++#define AT91_PDC_TNCR 0x11c /* Transmit Next Counter Register */
++
++#define AT91_PDC_PTCR 0x120 /* Transfer Control Register */
++#define AT91_PDC_RXTEN (1 << 0) /* Receiver Transfer Enable */
++#define AT91_PDC_RXTDIS (1 << 1) /* Receiver Transfer Disable */
++#define AT91_PDC_TXTEN (1 << 8) /* Transmitter Transfer Enable */
++#define AT91_PDC_TXTDIS (1 << 9) /* Transmitter Transfer Disable */
++
++#define AT91_PDC_PTSR 0x124 /* Transfer Status Register */
++
++#endif
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/at91rm9200_usart.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/at91rm9200_usart.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,123 @@
++/*
++ * include/asm-arm/arch-at91rm9200/at91rm9200_usart.h
++ *
++ * Copyright (C) 2005 Ivan Kokshaysky
++ * Copyright (C) SAN People
++ *
++ * USART registers.
++ * Based on AT91RM9200 datasheet revision E.
++ *
++ * 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 AT91RM9200_USART_H
++#define AT91RM9200_USART_H
++
++#define AT91_US_CR 0x00 /* Control Register */
++#define AT91_US_RSTRX (1 << 2) /* Reset Receiver */
++#define AT91_US_RSTTX (1 << 3) /* Reset Transmitter */
++#define AT91_US_RXEN (1 << 4) /* Receiver Enable */
++#define AT91_US_RXDIS (1 << 5) /* Receiver Disable */
++#define AT91_US_TXEN (1 << 6) /* Transmitter Enable */
++#define AT91_US_TXDIS (1 << 7) /* Transmitter Disable */
++#define AT91_US_RSTSTA (1 << 8) /* Reset Status Bits */
++#define AT91_US_STTBRK (1 << 9) /* Start Break */
++#define AT91_US_STPBRK (1 << 10) /* Stop Break */
++#define AT91_US_STTTO (1 << 11) /* Start Time-out */
++#define AT91_US_SENDA (1 << 12) /* Send Address */
++#define AT91_US_RSTIT (1 << 13) /* Reset Iterations */
++#define AT91_US_RSTNACK (1 << 14) /* Reset Non Acknowledge */
++#define AT91_US_RETTO (1 << 15) /* Rearm Time-out */
++#define AT91_US_DTREN (1 << 16) /* Data Terminal Ready Enable */
++#define AT91_US_DTRDIS (1 << 17) /* Data Terminal Ready Disable */
++#define AT91_US_RTSEN (1 << 18) /* Request To Send Enable */
++#define AT91_US_RTSDIS (1 << 19) /* Request To Send Disable */
++
++#define AT91_US_MR 0x04 /* Mode Register */
++#define AT91_US_USMODE (0xf << 0) /* Mode of the USART */
++#define AT91_US_USMODE_NORMAL 0
++#define AT91_US_USMODE_RS485 1
++#define AT91_US_USMODE_HWHS 2
++#define AT91_US_USMODE_MODEM 3
++#define AT91_US_USMODE_ISO7816_T0 4
++#define AT91_US_USMODE_ISO7816_T1 6
++#define AT91_US_USMODE_IRDA 8
++#define AT91_US_USCLKS (3 << 4) /* Clock Selection */
++#define AT91_US_CHRL (3 << 6) /* Character Length */
++#define AT91_US_CHRL_5 (0 << 6)
++#define AT91_US_CHRL_6 (1 << 6)
++#define AT91_US_CHRL_7 (2 << 6)
++#define AT91_US_CHRL_8 (3 << 6)
++#define AT91_US_SYNC (1 << 8) /* Synchronous Mode Select */
++#define AT91_US_PAR (7 << 9) /* Parity Type */
++#define AT91_US_PAR_EVEN (0 << 9)
++#define AT91_US_PAR_ODD (1 << 9)
++#define AT91_US_PAR_SPACE (2 << 9)
++#define AT91_US_PAR_MARK (3 << 9)
++#define AT91_US_PAR_NONE (4 << 9)
++#define AT91_US_PAR_MULTI_DROP (6 << 9)
++#define AT91_US_NBSTOP (3 << 12) /* Number of Stop Bits */
++#define AT91_US_NBSTOP_1 (0 << 12)
++#define AT91_US_NBSTOP_1_5 (1 << 12)
++#define AT91_US_NBSTOP_2 (2 << 12)
++#define AT91_US_CHMODE (3 << 14) /* Channel Mode */
++#define AT91_US_CHMODE_NORMAL (0 << 14)
++#define AT91_US_CHMODE_ECHO (1 << 14)
++#define AT91_US_CHMODE_LOC_LOOP (2 << 14)
++#define AT91_US_CHMODE_REM_LOOP (3 << 14)
++#define AT91_US_MSBF (1 << 16) /* Bit Order */
++#define AT91_US_MODE9 (1 << 17) /* 9-bit Character Length */
++#define AT91_US_CLKO (1 << 18) /* Clock Output Select */
++#define AT91_US_OVER (1 << 19) /* Oversampling Mode */
++#define AT91_US_INACK (1 << 20) /* Inhibit Non Acknowledge */
++#define AT91_US_DSNACK (1 << 21) /* Disable Successive NACK */
++#define AT91_US_MAX_ITER (7 << 24) /* Max Iterations */
++#define AT91_US_FILTER (1 << 28) /* Infrared Receive Line Filter */
++
++#define AT91_US_IER 0x08 /* Interrupt Enable Register */
++#define AT91_US_RXRDY (1 << 0) /* Receiver Ready */
++#define AT91_US_TXRDY (1 << 1) /* Transmitter Ready */
++#define AT91_US_RXBRK (1 << 2) /* Break Received / End of Break */
++#define AT91_US_ENDRX (1 << 3) /* End of Receiver Transfer */
++#define AT91_US_ENDTX (1 << 4) /* End of Transmitter Transfer */
++#define AT91_US_OVRE (1 << 5) /* Overrun Error */
++#define AT91_US_FRAME (1 << 6) /* Framing Error */
++#define AT91_US_PARE (1 << 7) /* Parity Error */
++#define AT91_US_TIMEOUT (1 << 8) /* Receiver Time-out */
++#define AT91_US_TXEMPTY (1 << 9) /* Transmitter Empty */
++#define AT91_US_ITERATION (1 << 10) /* Max number of Repetitions Reached */
++#define AT91_US_TXBUFE (1 << 11) /* Transmission Buffer Empty */
++#define AT91_US_RXBUFF (1 << 12) /* Reception Buffer Full */
++#define AT91_US_NACK (1 << 13) /* Non Acknowledge */
++#define AT91_US_RIIC (1 << 16) /* Ring Indicator Input Change */
++#define AT91_US_DSRIC (1 << 17) /* Data Set Ready Input Change */
++#define AT91_US_DCDIC (1 << 18) /* Data Carrier Detect Input Change */
++#define AT91_US_CTSIC (1 << 19) /* Clear to Send Input Change */
++#define AT91_US_RI (1 << 20) /* RI */
++#define AT91_US_DSR (1 << 21) /* DSR */
++#define AT91_US_DCD (1 << 22) /* DCD */
++#define AT91_US_CTS (1 << 23) /* CTS */
++
++#define AT91_US_IDR 0x0c /* Interrupt Disable Register */
++#define AT91_US_IMR 0x10 /* Interrupt Mask Register */
++#define AT91_US_CSR 0x14 /* Channel Status Register */
++#define AT91_US_RHR 0x18 /* Receiver Holding Register */
++#define AT91_US_THR 0x1c /* Transmitter Holding Register */
++
++#define AT91_US_BRGR 0x20 /* Baud Rate Generator Register */
++#define AT91_US_CD (0xffff << 0) /* Clock Divider */
++
++#define AT91_US_RTOR 0x24 /* Receiver Time-out Register */
++#define AT91_US_TO (0xffff << 0) /* Time-out Value */
++
++#define AT91_US_TTGR 0x28 /* Transmitter Timeguard Register */
++#define AT91_US_TG (0xff << 0) /* Timeguard Value */
++
++#define AT91_US_FIDI 0x40 /* FI DI Ratio Register */
++#define AT91_US_NER 0x44 /* Number of Errors Register */
++#define AT91_US_IF 0x4c /* IrDA Filter Register */
++
++#endif
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,35 @@
++/*
++ * Platform data definitions.
++ */
++#ifndef __ASM_ARCH_BOARD_H
++#define __ASM_ARCH_BOARD_H
++
++#include <linux/types.h>
++
++/* Add basic devices: system manager, interrupt controller, portmuxes, etc. */
++void at32_add_system_devices(void);
++
++#define AT91_NR_UART 4
++extern struct platform_device *at91_default_console_device;
++
++struct platform_device *at32_add_device_usart(unsigned int id);
++
++struct eth_platform_data {
++ u8 valid;
++ u8 mii_phy_addr;
++ u8 is_rmii;
++ u8 hw_addr[6];
++};
++struct platform_device *
++at32_add_device_eth(unsigned int id, struct eth_platform_data *data);
++
++struct platform_device *at32_add_device_spi(unsigned int id);
++
++struct lcdc_platform_data {
++ unsigned long fbmem_start;
++ unsigned long fbmem_size;
++};
++struct platform_device *
++at32_add_device_lcdc(unsigned int id, struct lcdc_platform_data *data);
++
++#endif /* __ASM_ARCH_BOARD_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/init.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/init.h 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,21 @@
++/*
++ * AT32AP platform initialization calls.
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_AT32AP_INIT_H__
++#define __ASM_AVR32_AT32AP_INIT_H__
++
++void setup_platform(void);
++
++/* Called by setup_platform */
++void at32_clock_init(void);
++void at32_portmux_init(void);
++
++void at32_setup_serial_console(unsigned int usart_id);
++
++#endif /* __ASM_AVR32_AT32AP_INIT_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/portmux.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/portmux.h 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,16 @@
++/*
++ * AT32 portmux interface.
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_AT32_PORTMUX_H__
++#define __ASM_AVR32_AT32_PORTMUX_H__
++
++void portmux_set_func(unsigned int portmux_id, unsigned int pin_id,
++ unsigned int function_id);
++
++#endif /* __ASM_AVR32_AT32_PORTMUX_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/sm.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/sm.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,27 @@
++/*
++ * AT32 System Manager interface.
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_AT32_SM_H__
++#define __ASM_AVR32_AT32_SM_H__
++
++struct irq_chip;
++struct platform_device;
++
++struct at32_sm {
++ spinlock_t lock;
++ void __iomem *regs;
++ struct irq_chip *eim_chip;
++ unsigned int eim_first_irq;
++ struct platform_device *pdev;
++};
++
++extern struct platform_device at32_sm_device;
++extern struct at32_sm system_manager;
++
++#endif /* __ASM_AVR32_AT32_SM_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/asm.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/asm.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,102 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_ASM_H__
++#define __ASM_AVR32_ASM_H__
++
++#include <asm/sysreg.h>
++#include <asm/asm-offsets.h>
++#include <asm/thread_info.h>
++
++#define mask_interrupts ssrf SR_GM_BIT
++#define mask_exceptions ssrf SR_EM_BIT
++#define unmask_interrupts csrf SR_GM_BIT
++#define unmask_exceptions csrf SR_EM_BIT
++
++#ifdef CONFIG_FRAME_POINTER
++ .macro save_fp
++ st.w --sp, r7
++ .endm
++ .macro restore_fp
++ ld.w r7, sp++
++ .endm
++ .macro zero_fp
++ mov r7, 0
++ .endm
++#else
++ .macro save_fp
++ .endm
++ .macro restore_fp
++ .endm
++ .macro zero_fp
++ .endm
++#endif
++ .macro get_thread_info reg
++ mov \reg, sp
++ andl \reg, ~(THREAD_SIZE - 1) & 0xffff
++ .endm
++
++ /* Save and restore registers */
++ .macro save_min sr, tmp=lr
++ pushm lr
++ mfsr \tmp, \sr
++ zero_fp
++ st.w --sp, \tmp
++ .endm
++
++ .macro restore_min sr, tmp=lr
++ ld.w \tmp, sp++
++ mtsr \sr, \tmp
++ popm lr
++ .endm
++
++ .macro save_half sr, tmp=lr
++ save_fp
++ pushm r8-r9,r10,r11,r12,lr
++ zero_fp
++ mfsr \tmp, \sr
++ st.w --sp, \tmp
++ .endm
++
++ .macro restore_half sr, tmp=lr
++ ld.w \tmp, sp++
++ mtsr \sr, \tmp
++ popm r8-r9,r10,r11,r12,lr
++ restore_fp
++ .endm
++
++ .macro save_full_user sr, tmp=lr
++ stmts --sp, r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,sp,lr
++ st.w --sp, lr
++ zero_fp
++ mfsr \tmp, \sr
++ st.w --sp, \tmp
++ .endm
++
++ .macro restore_full_user sr, tmp=lr
++ ld.w \tmp, sp++
++ mtsr \sr, \tmp
++ ld.w lr, sp++
++ ldmts sp++, r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,sp,lr
++ .endm
++
++ /* uaccess macros */
++ .macro branch_if_kernel scratch, label
++ get_thread_info \scratch
++ ld.w \scratch, \scratch[TI_flags]
++ bld \scratch, TIF_USERSPACE
++ brcc \label
++ .endm
++
++ .macro ret_if_privileged scratch, addr, size, ret
++ sub \scratch, \size, 1
++ add \scratch, \addr
++ retcs \ret
++ retmi \ret
++ .endm
++
++#endif /* __ASM_AVR32_ASM_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/atomic.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/atomic.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,201 @@
++/*
++ * Atomic operations that C can't guarantee us. Useful for
++ * resource counting etc.
++ *
++ * But use these as seldom as possible since they are slower than
++ * regular operations.
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_ATOMIC_H
++#define __ASM_AVR32_ATOMIC_H
++
++#include <asm/system.h>
++
++typedef struct { volatile int counter; } atomic_t;
++#define ATOMIC_INIT(i) { (i) }
++
++#define atomic_read(v) ((v)->counter)
++#define atomic_set(v, i) (((v)->counter) = i)
++
++/*
++ * atomic_sub_return - subtract the atomic variable
++ * @i: integer value to subtract
++ * @v: pointer of type atomic_t
++ *
++ * Atomically subtracts @i from @v. Returns the resulting value.
++ */
++static inline int atomic_sub_return(int i, atomic_t *v)
++{
++ int result;
++
++ asm volatile(
++ "/* atomic_sub_return */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " sub %0, %3\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(result), "=o"(v->counter)
++ : "m"(v->counter), "rKs21"(i)
++ : "cc");
++
++ return result;
++}
++
++/*
++ * atomic_add_return - add integer to atomic variable
++ * @i: integer value to add
++ * @v: pointer of type atomic_t
++ *
++ * Atomically adds @i to @v. Returns the resulting value.
++ */
++static inline int atomic_add_return(int i, atomic_t *v)
++{
++ int result;
++
++ if (__builtin_constant_p(i) && (i >= -1048575) && (i <= 1048576))
++ result = atomic_sub_return(-i, v);
++ else
++ asm volatile(
++ "/* atomic_add_return */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %1\n"
++ " add %0, %3\n"
++ " stcond %2, %0\n"
++ " brne 1b"
++ : "=&r"(result), "=o"(v->counter)
++ : "m"(v->counter), "r"(i)
++ : "cc", "memory");
++
++ return result;
++}
++
++/*
++ * atomic_sub_unless - sub unless the number is a given value
++ * @v: pointer of type atomic_t
++ * @a: the amount to add to v...
++ * @u: ...unless v is equal to u.
++ *
++ * If the atomic value v is not equal to u, this function subtracts a
++ * from v, and returns non zero. If v is equal to u then it returns
++ * zero. This is done as an atomic operation.
++*/
++static inline int atomic_sub_unless(atomic_t *v, int a, int u)
++{
++ int tmp, result = 0;
++
++ asm volatile(
++ "/* atomic_sub_unless */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " cp.w %0, %5\n"
++ " breq 1f\n"
++ " sub %0, %4\n"
++ " stcond %2, %0\n"
++ " brne 1b\n"
++ " mov %1, 1\n"
++ "1:"
++ : "=&r"(tmp), "=&r"(result), "=o"(v->counter)
++ : "m"(v->counter), "rKs21"(a), "rKs21"(u)
++ : "cc", "memory");
++
++ return result;
++}
++
++/*
++ * atomic_add_unless - add unless the number is a given value
++ * @v: pointer of type atomic_t
++ * @a: the amount to add to v...
++ * @u: ...unless v is equal to u.
++ *
++ * If the atomic value v is not equal to u, this function adds a to v,
++ * and returns non zero. If v is equal to u then it returns zero. This
++ * is done as an atomic operation.
++*/
++static inline int atomic_add_unless(atomic_t *v, int a, int u)
++{
++ int tmp, result;
++
++ if (__builtin_constant_p(a) && (a >= -1048575) && (a <= 1048576))
++ result = atomic_sub_unless(v, -a, u);
++ else {
++ result = 0;
++ asm volatile(
++ "/* atomic_add_unless */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " cp.w %0, %5\n"
++ " breq 1f\n"
++ " add %0, %4\n"
++ " stcond %2, %0\n"
++ " brne 1b\n"
++ " mov %1, 1\n"
++ "1:"
++ : "=&r"(tmp), "=&r"(result), "=o"(v->counter)
++ : "m"(v->counter), "r"(a), "ir"(u)
++ : "cc", "memory");
++ }
++
++ return result;
++}
++
++/*
++ * atomic_sub_if_positive - conditionally subtract integer from atomic variable
++ * @i: integer value to subtract
++ * @v: pointer of type atomic_t
++ *
++ * Atomically test @v and subtract @i if @v is greater or equal than @i.
++ * The function returns the old value of @v minus @i.
++ */
++static inline int atomic_sub_if_positive(int i, atomic_t *v)
++{
++ int result;
++
++ asm volatile(
++ "/* atomic_sub_if_positive */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " sub %0, %3\n"
++ " brlt 1f\n"
++ " stcond %1, %0\n"
++ " brne 1b\n"
++ "1:"
++ : "=&r"(result), "=o"(v->counter)
++ : "m"(v->counter), "ir"(i)
++ : "cc", "memory");
++
++ return result;
++}
++
++#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
++#define atomic_cmpxchg(v, o, n) ((int)cmpxchg(&((v)->counter), (o), (n)))
++
++#define atomic_sub(i, v) (void)atomic_sub_return(i, v)
++#define atomic_add(i, v) (void)atomic_add_return(i, v)
++#define atomic_dec(v) atomic_sub(1, (v))
++#define atomic_inc(v) atomic_add(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_inc_and_test(v) (atomic_add_return(1, v) == 0)
++#define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0)
++#define atomic_add_negative(i, v) (atomic_add_return(i, v) < 0)
++
++#define atomic_inc_not_zero(v) atomic_add_unless(v, 1, 0)
++#define atomic_dec_if_positive(v) atomic_sub_if_positive(1, v)
++
++#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_AVR32_ATOMIC_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/auxvec.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/auxvec.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,4 @@
++#ifndef __ASM_AVR32_AUXVEC_H
++#define __ASM_AVR32_AUXVEC_H
++
++#endif /* __ASM_AVR32_AUXVEC_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/bitops.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/bitops.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,296 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_BITOPS_H
++#define __ASM_AVR32_BITOPS_H
++
++#include <asm/byteorder.h>
++#include <asm/system.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()
++
++/*
++ * set_bit - Atomically set a bit in memory
++ * @nr: the bit to set
++ * @addr: the address to start counting from
++ *
++ * This function is atomic and may not be reordered. See __set_bit()
++ * if you do not require the atomic guarantees.
++ *
++ * Note that @nr may be almost arbitrarily large; this function is not
++ * restricted to acting on a single-word quantity.
++ */
++static inline void set_bit(int nr, volatile void * addr)
++{
++ unsigned long *p = ((unsigned long *)addr) + nr / BITS_PER_LONG;
++ unsigned long tmp;
++
++ if (__builtin_constant_p(nr)) {
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " sbr %0, %3\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p)
++ : "m"(*p), "i"(nr)
++ : "cc");
++ } else {
++ unsigned long mask = 1UL << (nr % BITS_PER_LONG);
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " or %0, %3\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p)
++ : "m"(*p), "r"(mask)
++ : "cc");
++ }
++}
++
++/*
++ * clear_bit - Clears a bit in memory
++ * @nr: Bit to clear
++ * @addr: Address to start counting from
++ *
++ * clear_bit() is atomic and may not be reordered. However, it does
++ * not contain a memory barrier, so if it is used for locking purposes,
++ * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
++ * in order to ensure changes are visible on other processors.
++ */
++static inline void clear_bit(int nr, volatile void * addr)
++{
++ unsigned long *p = ((unsigned long *)addr) + nr / BITS_PER_LONG;
++ unsigned long tmp;
++
++ if (__builtin_constant_p(nr)) {
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " cbr %0, %3\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p)
++ : "m"(*p), "i"(nr)
++ : "cc");
++ } else {
++ unsigned long mask = 1UL << (nr % BITS_PER_LONG);
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " andn %0, %3\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p)
++ : "m"(*p), "r"(mask)
++ : "cc");
++ }
++}
++
++/*
++ * change_bit - Toggle a bit in memory
++ * @nr: Bit to change
++ * @addr: Address to start counting from
++ *
++ * change_bit() is atomic and may not be reordered.
++ * Note that @nr may be almost arbitrarily large; this function is not
++ * restricted to acting on a single-word quantity.
++ */
++static inline void change_bit(int nr, volatile void * addr)
++{
++ unsigned long *p = ((unsigned long *)addr) + nr / BITS_PER_LONG;
++ unsigned long mask = 1UL << (nr % BITS_PER_LONG);
++ unsigned long tmp;
++
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " eor %0, %3\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p)
++ : "m"(*p), "r"(mask)
++ : "cc");
++}
++
++/*
++ * test_and_set_bit - Set a bit and return its old value
++ * @nr: Bit to set
++ * @addr: Address to count from
++ *
++ * This operation is atomic and cannot be reordered.
++ * It also implies a memory barrier.
++ */
++static inline int test_and_set_bit(int nr, volatile void * addr)
++{
++ unsigned long *p = ((unsigned long *)addr) + nr / BITS_PER_LONG;
++ unsigned long mask = 1UL << (nr % BITS_PER_LONG);
++ unsigned long tmp, old;
++
++ if (__builtin_constant_p(nr)) {
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " mov %2, %0\n"
++ " sbr %0, %4\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p), "=&r"(old)
++ : "m"(*p), "i"(nr)
++ : "memory", "cc");
++ } else {
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %2, %3\n"
++ " or %0, %2, %4\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p), "=&r"(old)
++ : "m"(*p), "r"(mask)
++ : "memory", "cc");
++ }
++
++ return (old & mask) != 0;
++}
++
++/*
++ * test_and_clear_bit - Clear a bit and return its old value
++ * @nr: Bit to clear
++ * @addr: Address to count from
++ *
++ * This operation is atomic and cannot be reordered.
++ * It also implies a memory barrier.
++ */
++static inline int test_and_clear_bit(int nr, volatile void * addr)
++{
++ unsigned long *p = ((unsigned long *)addr) + nr / BITS_PER_LONG;
++ unsigned long mask = 1UL << (nr % BITS_PER_LONG);
++ unsigned long tmp, old;
++
++ if (__builtin_constant_p(nr)) {
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " mov %2, %0\n"
++ " cbr %0, %4\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p), "=&r"(old)
++ : "m"(*p), "i"(nr)
++ : "memory", "cc");
++ } else {
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " mov %2, %0\n"
++ " andn %0, %4\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p), "=&r"(old)
++ : "m"(*p), "r"(mask)
++ : "memory", "cc");
++ }
++
++ return (old & mask) != 0;
++}
++
++/*
++ * test_and_change_bit - Change a bit and return its old value
++ * @nr: Bit to change
++ * @addr: Address to count from
++ *
++ * This operation is atomic and cannot be reordered.
++ * It also implies a memory barrier.
++ */
++static inline int test_and_change_bit(int nr, volatile void * addr)
++{
++ unsigned long *p = ((unsigned long *)addr) + nr / BITS_PER_LONG;
++ unsigned long mask = 1UL << (nr % BITS_PER_LONG);
++ unsigned long tmp, old;
++
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %2, %3\n"
++ " eor %0, %2, %4\n"
++ " stcond %1, %0\n"
++ " brne 1b"
++ : "=&r"(tmp), "=o"(*p), "=&r"(old)
++ : "m"(*p), "r"(mask)
++ : "memory", "cc");
++
++ return (old & mask) != 0;
++}
++
++#include <asm-generic/bitops/non-atomic.h>
++
++/* Find First bit Set */
++static inline unsigned long __ffs(unsigned long word)
++{
++ unsigned long result;
++
++ asm("brev %1\n\t"
++ "clz %0,%1"
++ : "=r"(result), "=&r"(word)
++ : "1"(word));
++ return result;
++}
++
++/* Find First Zero */
++static inline unsigned long ffz(unsigned long word)
++{
++ return __ffs(~word);
++}
++
++/* Find Last bit Set */
++static inline int fls(unsigned long word)
++{
++ unsigned long result;
++
++ asm("clz %0,%1" : "=r"(result) : "r"(word));
++ return 32 - result;
++}
++
++unsigned long find_first_zero_bit(const unsigned long *addr,
++ unsigned long size);
++unsigned long find_next_zero_bit(const unsigned long *addr,
++ unsigned long size,
++ unsigned long offset);
++unsigned long find_first_bit(const unsigned long *addr,
++ unsigned long size);
++unsigned long find_next_bit(const unsigned long *addr,
++ unsigned long size,
++ unsigned long offset);
++
++/*
++ * ffs: find first bit set. This is defined the same way as
++ * the libc and compiler builtin ffs routines, therefore
++ * differs in spirit from the above ffz (man ffs).
++ *
++ * The difference is that bit numbering starts at 1, and if no bit is set,
++ * the function returns 0.
++ */
++static inline int ffs(unsigned long word)
++{
++ if(word == 0)
++ return 0;
++ return __ffs(word) + 1;
++}
++
++#include <asm-generic/bitops/fls64.h>
++#include <asm-generic/bitops/sched.h>
++#include <asm-generic/bitops/hweight.h>
++
++#include <asm-generic/bitops/ext2-non-atomic.h>
++#include <asm-generic/bitops/ext2-atomic.h>
++#include <asm-generic/bitops/minix-le.h>
++
++#endif /* __ASM_AVR32_BITOPS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/bug.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/bug.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,47 @@
++/*
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_BUG_H
++#define __ASM_AVR32_BUG_H
++
++#ifdef CONFIG_BUG
++
++/*
++ * According to our Chief Architect, this compact opcode is very
++ * unlikely to ever be implemented.
++ */
++#define AVR32_BUG_OPCODE 0x5df0
++
++#ifdef CONFIG_DEBUG_BUGVERBOSE
++
++#define BUG() \
++ do { \
++ asm volatile(".hword %0\n\t" \
++ ".hword %1\n\t" \
++ ".long %2" \
++ : \
++ : "n"(AVR32_BUG_OPCODE), \
++ "i"(__LINE__), "X"(__FILE__)); \
++ } while (0)
++
++#else
++
++#define BUG() \
++ do { \
++ asm volatile(".hword %0\n\t" \
++ : : "n"(AVR32_BUG_OPCODE)); \
++ } while (0)
++
++#endif /* CONFIG_DEBUG_BUGVERBOSE */
++
++#define HAVE_ARCH_BUG
++
++#endif /* CONFIG_BUG */
++
++#include <asm-generic/bug.h>
++
++#endif /* __ASM_AVR32_BUG_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/bugs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/bugs.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,15 @@
++/*
++ * This is included by init/main.c to check for architecture-dependent bugs.
++ *
++ * Needs:
++ * void check_bugs(void);
++ */
++#ifndef __ASM_AVR32_BUGS_H
++#define __ASM_AVR32_BUGS_H
++
++static void __init check_bugs(void)
++{
++ cpu_data->loops_per_jiffy = loops_per_jiffy;
++}
++
++#endif /* __ASM_AVR32_BUGS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/byteorder.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/byteorder.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,25 @@
++/*
++ * AVR32 endian-conversion functions.
++ */
++#ifndef __ASM_AVR32_BYTEORDER_H
++#define __ASM_AVR32_BYTEORDER_H
++
++#include <asm/types.h>
++#include <linux/compiler.h>
++
++#ifdef __CHECKER__
++extern unsigned long __builtin_bswap_32(unsigned long x);
++extern unsigned short __builtin_bswap_16(unsigned short x);
++#endif
++
++#define __arch__swab32(x) __builtin_bswap_32(x)
++#define __arch__swab16(x) __builtin_bswap_16(x)
++
++#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
++# define __BYTEORDER_HAS_U64__
++# define __SWAB_64_THRU_32__
++#endif
++
++#include <linux/byteorder/big_endian.h>
++
++#endif /* __ASM_AVR32_BYTEORDER_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/cache.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/cache.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,29 @@
++#ifndef __ASM_AVR32_CACHE_H
++#define __ASM_AVR32_CACHE_H
++
++#define L1_CACHE_SHIFT 5
++#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
++
++#ifndef __ASSEMBLER__
++struct cache_info {
++ unsigned int ways;
++ unsigned int sets;
++ unsigned int linesz;
++};
++#endif /* __ASSEMBLER */
++
++/* Cache operation constants */
++#define ICACHE_FLUSH 0x00
++#define ICACHE_INVALIDATE 0x01
++#define ICACHE_LOCK 0x02
++#define ICACHE_UNLOCK 0x03
++#define ICACHE_PREFETCH 0x04
++
++#define DCACHE_FLUSH 0x08
++#define DCACHE_LOCK 0x09
++#define DCACHE_UNLOCK 0x0a
++#define DCACHE_INVALIDATE 0x0b
++#define DCACHE_CLEAN 0x0c
++#define DCACHE_CLEAN_INVAL 0x0d
++
++#endif /* __ASM_AVR32_CACHE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/cachectl.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/cachectl.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,11 @@
++#ifndef __ASM_AVR32_CACHECTL_H
++#define __ASM_AVR32_CACHECTL_H
++
++/*
++ * Operations that can be performed through the cacheflush system call
++ */
++
++/* Clean the data cache, then invalidate the icache */
++#define CACHE_IFLUSH 0
++
++#endif /* __ASM_AVR32_CACHECTL_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/cacheflush.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/cacheflush.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,129 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_CACHEFLUSH_H
++#define __ASM_AVR32_CACHEFLUSH_H
++
++/* Keep includes the same across arches. */
++#include <linux/mm.h>
++
++#define CACHE_OP_ICACHE_INVALIDATE 0x01
++#define CACHE_OP_DCACHE_INVALIDATE 0x0b
++#define CACHE_OP_DCACHE_CLEAN 0x0c
++#define CACHE_OP_DCACHE_CLEAN_INVAL 0x0d
++
++/*
++ * Invalidate any cacheline containing virtual address vaddr without
++ * writing anything back to memory.
++ *
++ * Note that this function may corrupt unrelated data structures when
++ * applied on buffers that are not cacheline aligned in both ends.
++ */
++static inline void invalidate_dcache_line(void *vaddr)
++{
++ asm volatile("cache %0[0], %1"
++ :
++ : "r"(vaddr), "n"(CACHE_OP_DCACHE_INVALIDATE)
++ : "memory");
++}
++
++/*
++ * Make sure any cacheline containing virtual address vaddr is written
++ * to memory.
++ */
++static inline void clean_dcache_line(void *vaddr)
++{
++ asm volatile("cache %0[0], %1"
++ :
++ : "r"(vaddr), "n"(CACHE_OP_DCACHE_CLEAN)
++ : "memory");
++}
++
++/*
++ * Make sure any cacheline containing virtual address vaddr is written
++ * to memory and then invalidate it.
++ */
++static inline void flush_dcache_line(void *vaddr)
++{
++ asm volatile("cache %0[0], %1"
++ :
++ : "r"(vaddr), "n"(CACHE_OP_DCACHE_CLEAN_INVAL)
++ : "memory");
++}
++
++/*
++ * Invalidate any instruction cacheline containing virtual address
++ * vaddr.
++ */
++static inline void invalidate_icache_line(void *vaddr)
++{
++ asm volatile("cache %0[0], %1"
++ :
++ : "r"(vaddr), "n"(CACHE_OP_ICACHE_INVALIDATE)
++ : "memory");
++}
++
++/*
++ * Applies the above functions on all lines that are touched by the
++ * specified virtual address range.
++ */
++void invalidate_dcache_region(void *start, size_t len);
++void clean_dcache_region(void *start, size_t len);
++void flush_dcache_region(void *start, size_t len);
++void invalidate_icache_region(void *start, size_t len);
++
++/*
++ * Make sure any pending writes are completed before continuing.
++ */
++#define flush_write_buffer() asm volatile("sync 0" : : : "memory")
++
++/*
++ * The following functions are called when a virtual mapping changes.
++ * We do not need to flush anything in this case.
++ */
++#define flush_cache_all() do { } while (0)
++#define flush_cache_mm(mm) do { } while (0)
++#define flush_cache_range(vma, 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)
++
++/*
++ * I think we need to implement this one to be able to reliably
++ * execute pages from RAMDISK. However, if we implement the
++ * flush_dcache_*() functions, it might not be needed anymore.
++ *
++ * #define flush_icache_page(vma, page) do { } while (0)
++ */
++extern void flush_icache_page(struct vm_area_struct *vma, struct page *page);
++
++/*
++ * These are (I think) related to D-cache aliasing. We might need to
++ * do something here, but only for certain configurations. No such
++ * configurations exist at this time.
++ */
++#define flush_dcache_page(page) do { } while (0)
++#define flush_dcache_mmap_lock(page) do { } while (0)
++#define flush_dcache_mmap_unlock(page) do { } while (0)
++
++/*
++ * These are for I/D cache coherency. In this case, we do need to
++ * flush with all configurations.
++ */
++extern void flush_icache_range(unsigned long start, unsigned long end);
++extern void flush_icache_user_range(struct vm_area_struct *vma,
++ struct page *page,
++ unsigned long addr, int len);
++
++#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_AVR32_CACHEFLUSH_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/checksum.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/checksum.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,156 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_CHECKSUM_H
++#define __ASM_AVR32_CHECKSUM_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
++ */
++unsigned int csum_partial(const unsigned char * buff, int len,
++ unsigned int sum);
++
++/*
++ * the same as csum_partial, but copies from src while it
++ * checksums, and handles user-space pointer exceptions correctly, when needed.
++ *
++ * here even more important to align src and dst on a 32-bit (or even
++ * better 64-bit) boundary
++ */
++unsigned int csum_partial_copy_generic(const char *src, char *dst, int len,
++ int sum, int *src_err_ptr,
++ int *dst_err_ptr);
++
++/*
++ * Note: when you get a NULL pointer exception here this means someone
++ * passed in an incorrect kernel address to one of these functions.
++ *
++ * If you use these functions directly please don't forget the
++ * verify_area().
++ */
++static inline
++unsigned int csum_partial_copy_nocheck(const char *src, char *dst,
++ int len, int sum)
++{
++ return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL);
++}
++
++static inline
++unsigned int csum_partial_copy_from_user (const char __user *src, char *dst,
++ int len, int sum, int *err_ptr)
++{
++ return csum_partial_copy_generic((const char __force *)src, dst, len,
++ sum, err_ptr, NULL);
++}
++
++/*
++ * This is a version of ip_compute_csum() optimized for IP headers,
++ * which always checksum on 4 octet boundaries.
++ */
++static inline unsigned short ip_fast_csum(unsigned char *iph,
++ unsigned int ihl)
++{
++ unsigned int sum, tmp;
++
++ __asm__ __volatile__(
++ " ld.w %0, %1++\n"
++ " ld.w %3, %1++\n"
++ " sub %2, 4\n"
++ " add %0, %3\n"
++ " ld.w %3, %1++\n"
++ " adc %0, %0, %3\n"
++ " ld.w %3, %1++\n"
++ " adc %0, %0, %3\n"
++ " acr %0\n"
++ "1: ld.w %3, %1++\n"
++ " add %0, %3\n"
++ " acr %0\n"
++ " sub %2, 1\n"
++ " brne 1b\n"
++ " lsl %3, %0, 16\n"
++ " andl %0, 0\n"
++ " mov %2, 0xffff\n"
++ " add %0, %3\n"
++ " adc %0, %0, %2\n"
++ " com %0\n"
++ " lsr %0, 16\n"
++ : "=r"(sum), "=r"(iph), "=r"(ihl), "=r"(tmp)
++ : "1"(iph), "2"(ihl)
++ : "memory", "cc");
++ return sum;
++}
++
++/*
++ * Fold a partial checksum
++ */
++
++static inline unsigned int csum_fold(unsigned int sum)
++{
++ unsigned int tmp;
++
++ asm(" bfextu %1, %0, 0, 16\n"
++ " lsr %0, 16\n"
++ " add %0, %1\n"
++ " bfextu %1, %0, 16, 16\n"
++ " add %0, %1"
++ : "=&r"(sum), "=&r"(tmp)
++ : "0"(sum));
++
++ return ~sum;
++}
++
++static inline unsigned long csum_tcpudp_nofold(unsigned long saddr,
++ unsigned long daddr,
++ unsigned short len,
++ unsigned short proto,
++ unsigned int sum)
++{
++ asm(" add %0, %1\n"
++ " adc %0, %0, %2\n"
++ " adc %0, %0, %3\n"
++ " acr %0"
++ : "=r"(sum)
++ : "r"(daddr), "r"(saddr), "r"(ntohs(len) | (proto << 16)),
++ "0"(sum)
++ : "cc");
++
++ return sum;
++}
++
++/*
++ * computes the checksum of the TCP/UDP pseudo-header
++ * returns a 16-bit checksum, already complemented
++ */
++static inline unsigned short int csum_tcpudp_magic(unsigned long saddr,
++ unsigned long daddr,
++ unsigned short len,
++ unsigned short proto,
++ unsigned int 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
++ */
++
++static inline unsigned short ip_compute_csum(unsigned char * buff, int len)
++{
++ return csum_fold(csum_partial(buff, len, 0));
++}
++
++#endif /* __ASM_AVR32_CHECKSUM_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/cputime.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/cputime.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_CPUTIME_H
++#define __ASM_AVR32_CPUTIME_H
++
++#include <asm-generic/cputime.h>
++
++#endif /* __ASM_AVR32_CPUTIME_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/current.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/current.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,15 @@
++#ifndef __ASM_AVR32_CURRENT_H
++#define __ASM_AVR32_CURRENT_H
++
++#include <linux/thread_info.h>
++
++struct task_struct;
++
++inline static struct task_struct * get_current(void)
++{
++ return current_thread_info()->task;
++}
++
++#define current get_current()
++
++#endif /* __ASM_AVR32_CURRENT_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/delay.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/delay.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,26 @@
++#ifndef __ASM_AVR32_DELAY_H
++#define __ASM_AVR32_DELAY_H
++
++/*
++ * Copyright (C) 1993 Linus Torvalds
++ *
++ * Delay routines calling functions in arch/avr32/lib/delay.c
++ */
++
++extern void __bad_udelay(void);
++extern void __bad_ndelay(void);
++
++extern void __udelay(unsigned long usecs);
++extern void __ndelay(unsigned long nsecs);
++extern void __const_udelay(unsigned long usecs);
++extern void __delay(unsigned long loops);
++
++#define udelay(n) (__builtin_constant_p(n) ? \
++ ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \
++ __udelay(n))
++
++#define ndelay(n) (__builtin_constant_p(n) ? \
++ ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
++ __ndelay(n))
++
++#endif /* __ASM_AVR32_DELAY_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/div64.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/div64.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_DIV64_H
++#define __ASM_AVR32_DIV64_H
++
++#include <asm-generic/div64.h>
++
++#endif /* __ASM_AVR32_DIV64_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/dma-mapping.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/dma-mapping.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,320 @@
++#ifndef __ASM_AVR32_DMA_MAPPING_H
++#define __ASM_AVR32_DMA_MAPPING_H
++
++#include <linux/mm.h>
++#include <linux/device.h>
++#include <asm/scatterlist.h>
++#include <asm/processor.h>
++#include <asm/cacheflush.h>
++#include <asm/io.h>
++
++extern void dma_cache_sync(void *vaddr, size_t size, int direction);
++
++/*
++ * Return whether the given device DMA address mask can be supported
++ * properly. For example, if your device can only drive the low 24-bits
++ * during bus mastering, then you would pass 0x00ffffff as the mask
++ * to this function.
++ */
++static inline int dma_supported(struct device *dev, u64 mask)
++{
++ /* Fix when needed. I really don't know of any limitations */
++ return 1;
++}
++
++static inline int dma_set_mask(struct device *dev, u64 dma_mask)
++{
++ if (!dev->dma_mask || !dma_supported(dev, dma_mask))
++ return -EIO;
++
++ *dev->dma_mask = dma_mask;
++ return 0;
++}
++
++/**
++ * dma_alloc_coherent - allocate consistent memory for DMA
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @size: required memory size
++ * @handle: bus-specific DMA address
++ *
++ * Allocate some uncached, unbuffered memory for a device for
++ * performing DMA. This function allocates pages, and will
++ * return the CPU-viewed address, and sets @handle to be the
++ * device-viewed address.
++ */
++extern void *dma_alloc_coherent(struct device *dev, size_t size,
++ dma_addr_t *handle, gfp_t gfp);
++
++/**
++ * dma_free_coherent - free memory allocated by dma_alloc_coherent
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @size: size of memory originally requested in dma_alloc_coherent
++ * @cpu_addr: CPU-view address returned from dma_alloc_coherent
++ * @handle: device-view address returned from dma_alloc_coherent
++ *
++ * Free (and unmap) a DMA buffer previously allocated by
++ * dma_alloc_coherent().
++ *
++ * References to memory and mappings associated with cpu_addr/handle
++ * during and after this call executing are illegal.
++ */
++extern void dma_free_coherent(struct device *dev, size_t size,
++ void *cpu_addr, dma_addr_t handle);
++
++/**
++ * dma_alloc_writecombine - allocate write-combining memory for DMA
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @size: required memory size
++ * @handle: bus-specific DMA address
++ *
++ * Allocate some uncached, buffered memory for a device for
++ * performing DMA. This function allocates pages, and will
++ * return the CPU-viewed address, and sets @handle to be the
++ * device-viewed address.
++ */
++extern void *dma_alloc_writecombine(struct device *dev, size_t size,
++ dma_addr_t *handle, gfp_t gfp);
++
++/**
++ * dma_free_coherent - free memory allocated by dma_alloc_writecombine
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @size: size of memory originally requested in dma_alloc_writecombine
++ * @cpu_addr: CPU-view address returned from dma_alloc_writecombine
++ * @handle: device-view address returned from dma_alloc_writecombine
++ *
++ * Free (and unmap) a DMA buffer previously allocated by
++ * dma_alloc_writecombine().
++ *
++ * References to memory and mappings associated with cpu_addr/handle
++ * during and after this call executing are illegal.
++ */
++extern void dma_free_writecombine(struct device *dev, size_t size,
++ void *cpu_addr, dma_addr_t handle);
++
++/**
++ * dma_map_single - map a single buffer for streaming DMA
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @cpu_addr: CPU direct mapped address of buffer
++ * @size: size of buffer to map
++ * @dir: DMA transfer direction
++ *
++ * Ensure that any data held in the cache is appropriately discarded
++ * or written back.
++ *
++ * The device owns this memory once this call has completed. The CPU
++ * can regain ownership by calling dma_unmap_single() or dma_sync_single().
++ */
++static inline dma_addr_t
++dma_map_single(struct device *dev, void *cpu_addr, size_t size,
++ enum dma_data_direction direction)
++{
++ dma_cache_sync(cpu_addr, size, direction);
++ return virt_to_bus(cpu_addr);
++}
++
++/**
++ * dma_unmap_single - unmap a single buffer previously mapped
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @handle: DMA address of buffer
++ * @size: size of buffer to map
++ * @dir: DMA transfer direction
++ *
++ * Unmap a single streaming mode DMA translation. The handle and size
++ * must match what was provided in the previous dma_map_single() call.
++ * All other usages are undefined.
++ *
++ * After this call, reads by the CPU to the buffer are guaranteed 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)
++{
++
++}
++
++/**
++ * dma_map_page - map a portion of a page for streaming DMA
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @page: page that buffer resides in
++ * @offset: offset into page for start of buffer
++ * @size: size of buffer to map
++ * @dir: DMA transfer direction
++ *
++ * Ensure that any data held in the cache is appropriately discarded
++ * or written back.
++ *
++ * The device owns this memory once this call has completed. The CPU
++ * can regain ownership by calling dma_unmap_page() or dma_sync_single().
++ */
++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)
++{
++ return dma_map_single(dev, page_address(page) + offset,
++ size, direction);
++}
++
++/**
++ * dma_unmap_page - unmap a buffer previously mapped through dma_map_page()
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @handle: DMA address of buffer
++ * @size: size of buffer to map
++ * @dir: DMA transfer direction
++ *
++ * Unmap a single streaming mode DMA translation. The handle and size
++ * must match what was provided in the previous dma_map_single() call.
++ * All other usages are undefined.
++ *
++ * After this call, reads by the CPU to the buffer are guaranteed to see
++ * whatever the device wrote there.
++ */
++static inline void
++dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
++ enum dma_data_direction direction)
++{
++ dma_unmap_single(dev, dma_address, size, direction);
++}
++
++/**
++ * dma_map_sg - map a set of SG buffers for streaming mode DMA
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @sg: list of buffers
++ * @nents: number of buffers to map
++ * @dir: DMA transfer direction
++ *
++ * Map a set of buffers described by scatterlist in streaming
++ * mode for DMA. This is the scatter-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 *sg, int nents,
++ enum dma_data_direction direction)
++{
++ int i;
++
++ for (i = 0; i < nents; i++) {
++ char *virt;
++
++ sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset;
++ virt = page_address(sg[i].page) + sg[i].offset;
++ dma_cache_sync(virt, sg[i].length, direction);
++ }
++
++ return nents;
++}
++
++/**
++ * dma_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @sg: list of buffers
++ * @nents: number of buffers to map
++ * @dir: DMA transfer 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)
++{
++
++}
++
++/**
++ * dma_sync_single_for_cpu
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @handle: DMA address of buffer
++ * @size: size of buffer to map
++ * @dir: DMA transfer direction
++ *
++ * Make physical memory consistent for a single streaming mode DMA
++ * translation after a transfer.
++ *
++ * If you perform a dma_map_single() but wish to interrogate the
++ * buffer using the cpu, yet do not wish to teardown the DMA mapping,
++ * you must call this function before doing so. At the next point you
++ * give the DMA address back to the card, you must first perform a
++ * dma_sync_single_for_device, and then 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)
++{
++ dma_cache_sync(bus_to_virt(dma_handle), size, 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)
++{
++ dma_cache_sync(bus_to_virt(dma_handle), size, direction);
++}
++
++/**
++ * dma_sync_sg_for_cpu
++ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
++ * @sg: list of buffers
++ * @nents: number of buffers to map
++ * @dir: DMA transfer direction
++ *
++ * Make physical memory consistent for a set of streaming
++ * mode DMA translations after a transfer.
++ *
++ * The same as dma_sync_single_for_* 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 nents, enum dma_data_direction direction)
++{
++ int i;
++
++ for (i = 0; i < nents; i++) {
++ dma_cache_sync(page_address(sg[i].page) + sg[i].offset,
++ sg[i].length, direction);
++ }
++}
++
++static inline void
++dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
++ int nents, enum dma_data_direction direction)
++{
++ int i;
++
++ for (i = 0; i < nents; i++) {
++ dma_cache_sync(page_address(sg[i].page) + sg[i].offset,
++ sg[i].length, direction);
++ }
++}
++
++/* Now for the API extensions over the pci_ one */
++
++#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)
++
++static inline int dma_is_consistent(dma_addr_t dma_addr)
++{
++ return 1;
++}
++
++static inline int dma_get_cache_alignment(void)
++{
++ return boot_cpu_data.dcache.linesz;
++}
++
++#endif /* __ASM_AVR32_DMA_MAPPING_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/dma.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/dma.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,8 @@
++#ifndef __ASM_AVR32_DMA_H
++#define __ASM_AVR32_DMA_H
++
++/* The maximum address that we can perform a DMA transfer to on this platform.
++ * Not really applicable to AVR32, but some functions need it. */
++#define MAX_DMA_ADDRESS 0xffffffff
++
++#endif /* __ASM_AVR32_DMA_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/elf.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/elf.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,110 @@
++#ifndef __ASM_AVR32_ELF_H
++#define __ASM_AVR32_ELF_H
++
++/* AVR32 relocation numbers */
++#define R_AVR32_NONE 0
++#define R_AVR32_32 1
++#define R_AVR32_16 2
++#define R_AVR32_8 3
++#define R_AVR32_32_PCREL 4
++#define R_AVR32_16_PCREL 5
++#define R_AVR32_8_PCREL 6
++#define R_AVR32_DIFF32 7
++#define R_AVR32_DIFF16 8
++#define R_AVR32_DIFF8 9
++#define R_AVR32_GOT32 10
++#define R_AVR32_GOT16 11
++#define R_AVR32_GOT8 12
++#define R_AVR32_21S 13
++#define R_AVR32_16U 14
++#define R_AVR32_16S 15
++#define R_AVR32_8S 16
++#define R_AVR32_8S_EXT 17
++#define R_AVR32_22H_PCREL 18
++#define R_AVR32_18W_PCREL 19
++#define R_AVR32_16B_PCREL 20
++#define R_AVR32_16N_PCREL 21
++#define R_AVR32_14UW_PCREL 22
++#define R_AVR32_11H_PCREL 23
++#define R_AVR32_10UW_PCREL 24
++#define R_AVR32_9H_PCREL 25
++#define R_AVR32_9UW_PCREL 26
++#define R_AVR32_HI16 27
++#define R_AVR32_LO16 28
++#define R_AVR32_GOTPC 29
++#define R_AVR32_GOTCALL 30
++#define R_AVR32_LDA_GOT 31
++#define R_AVR32_GOT21S 32
++#define R_AVR32_GOT18SW 33
++#define R_AVR32_GOT16S 34
++#define R_AVR32_GOT7UW 35
++#define R_AVR32_32_CPENT 36
++#define R_AVR32_CPCALL 37
++#define R_AVR32_16_CP 38
++#define R_AVR32_9W_CP 39
++#define R_AVR32_RELATIVE 40
++#define R_AVR32_GLOB_DAT 41
++#define R_AVR32_JMP_SLOT 42
++#define R_AVR32_ALIGN 43
++
++/*
++ * ELF register definitions..
++ */
++
++#include <asm/ptrace.h>
++#include <asm/user.h>
++
++typedef unsigned long elf_greg_t;
++
++#define ELF_NGREG (sizeof (struct pt_regs) / sizeof (elf_greg_t))
++typedef elf_greg_t elf_gregset_t[ELF_NGREG];
++
++typedef struct user_fpu_struct 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_AVR32 )
++
++/*
++ * These are used to set parameters in the core dumps.
++ */
++#define ELF_CLASS ELFCLASS32
++#ifdef __LITTLE_ENDIAN__
++#define ELF_DATA ELFDATA2LSB
++#else
++#define ELF_DATA ELFDATA2MSB
++#endif
++#define ELF_ARCH EM_AVR32
++
++#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. */
++
++#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
++
++
++/* 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, ibcs2) set_personality(PER_LINUX_32BIT)
++#endif
++
++#endif /* __ASM_AVR32_ELF_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/emergency-restart.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/emergency-restart.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_EMERGENCY_RESTART_H
++#define __ASM_AVR32_EMERGENCY_RESTART_H
++
++#include <asm-generic/emergency-restart.h>
++
++#endif /* __ASM_AVR32_EMERGENCY_RESTART_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/errno.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/errno.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_ERRNO_H
++#define __ASM_AVR32_ERRNO_H
++
++#include <asm-generic/errno.h>
++
++#endif /* __ASM_AVR32_ERRNO_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/fcntl.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/fcntl.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_FCNTL_H
++#define __ASM_AVR32_FCNTL_H
++
++#include <asm-generic/fcntl.h>
++
++#endif /* __ASM_AVR32_FCNTL_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/futex.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/futex.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_FUTEX_H
++#define __ASM_AVR32_FUTEX_H
++
++#include <asm-generic/futex.h>
++
++#endif /* __ASM_AVR32_FUTEX_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/hardirq.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/hardirq.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,34 @@
++#ifndef __ASM_AVR32_HARDIRQ_H
++#define __ASM_AVR32_HARDIRQ_H
++
++#include <linux/threads.h>
++#include <asm/irq.h>
++
++#ifndef __ASSEMBLY__
++
++#include <linux/cache.h>
++
++/* entry.S is sensitive to the offsets of these fields */
++typedef struct {
++ unsigned int __softirq_pending;
++} ____cacheline_aligned irq_cpustat_t;
++
++void ack_bad_irq(unsigned int irq);
++
++/* Standard mappings for irq_cpustat_t above */
++#include <linux/irq_cpustat.h>
++
++#endif /* __ASSEMBLY__ */
++
++#define HARDIRQ_BITS 12
++
++/*
++ * The hardirq mask has to be large enough to have
++ * space for potentially all IRQ sources in the system
++ * nesting on a single CPU:
++ */
++#if (1 << HARDIRQ_BITS) < NR_IRQS
++# error HARDIRQ_BITS is too low!
++#endif
++
++#endif /* __ASM_AVR32_HARDIRQ_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/hw_irq.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/hw_irq.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,9 @@
++#ifndef __ASM_AVR32_HW_IRQ_H
++#define __ASM_AVR32_HW_IRQ_H
++
++static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i)
++{
++ /* Nothing to do */
++}
++
++#endif /* __ASM_AVR32_HW_IRQ_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/intc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/intc.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,128 @@
++#ifndef __ASM_AVR32_INTC_H
++#define __ASM_AVR32_INTC_H
++
++#include <linux/sysdev.h>
++#include <linux/interrupt.h>
++
++struct irq_controller;
++struct irqaction;
++struct pt_regs;
++
++struct platform_device;
++
++/* Information about the internal interrupt controller */
++struct intc_device {
++ /* ioremapped address of configuration block */
++ void __iomem *regs;
++
++ /* the physical device */
++ struct platform_device *pdev;
++
++ /* Number of interrupt lines per group. */
++ unsigned int irqs_per_group;
++
++ /* The highest group ID + 1 */
++ unsigned int nr_groups;
++
++ /*
++ * Bitfield indicating which groups are actually in use. The
++ * size of the array is
++ * ceil(group_max / (8 * sizeof(unsigned int))).
++ */
++ unsigned int group_mask[];
++};
++
++struct irq_controller_class {
++ /*
++ * A short name identifying this kind of controller.
++ */
++ const char *typename;
++ /*
++ * Handle the IRQ. Must do any necessary acking and masking.
++ */
++ irqreturn_t (*handle)(int irq, void *dev_id, struct pt_regs *regs);
++ /*
++ * Register a new IRQ handler.
++ */
++ int (*setup)(struct irq_controller *ctrl, unsigned int irq,
++ struct irqaction *action);
++ /*
++ * Unregister a IRQ handler.
++ */
++ void (*free)(struct irq_controller *ctrl, unsigned int irq,
++ void *dev_id);
++ /*
++ * Mask the IRQ in the interrupt controller.
++ */
++ void (*mask)(struct irq_controller *ctrl, unsigned int irq);
++ /*
++ * Unmask the IRQ in the interrupt controller.
++ */
++ void (*unmask)(struct irq_controller *ctrl, unsigned int irq);
++ /*
++ * Set the type of the IRQ. See below for possible types.
++ * Return -EINVAL if a given type is not supported
++ */
++ int (*set_type)(struct irq_controller *ctrl, unsigned int irq,
++ unsigned int type);
++ /*
++ * Return the IRQ type currently set
++ */
++ unsigned int (*get_type)(struct irq_controller *ctrl, unsigned int irq);
++};
++
++struct irq_controller {
++ struct irq_controller_class *class;
++ unsigned int irq_group;
++ unsigned int first_irq;
++ unsigned int nr_irqs;
++ struct list_head list;
++};
++
++struct intc_group_desc {
++ struct irq_controller *ctrl;
++ irqreturn_t (*handle)(int, void *, struct pt_regs *);
++ unsigned long flags;
++ void *dev_id;
++ const char *devname;
++};
++
++/*
++ * The internal interrupt controller. Defined in board/part-specific
++ * devices.c.
++ * TODO: Should probably be defined per-cpu.
++ */
++extern struct intc_device intc;
++
++extern int request_internal_irq(unsigned int irq,
++ irqreturn_t (*handler)(int, void *, struct pt_regs *),
++ unsigned long irqflags,
++ const char *devname, void *dev_id);
++extern void free_internal_irq(unsigned int irq);
++
++/* Only used by time_init() */
++extern int setup_internal_irq(unsigned int irq, struct intc_group_desc *desc);
++
++/*
++ * Set interrupt priority for a given group. `group' can be found by
++ * using irq_to_group(irq). Priority can be from 0 (lowest) to 3
++ * (highest). Higher-priority interrupts will preempt lower-priority
++ * interrupts (unless interrupts are masked globally).
++ *
++ * This function does not check for conflicts within a group.
++ */
++extern int intc_set_priority(unsigned int group,
++ unsigned int priority);
++
++/*
++ * Returns a bitmask of pending interrupts in a group.
++ */
++extern unsigned long intc_get_pending(unsigned int group);
++
++/*
++ * Register a new external interrupt controller. Returns the first
++ * external IRQ number that is assigned to the new controller.
++ */
++extern int intc_register_controller(struct irq_controller *ctrl);
++
++#endif /* __ASM_AVR32_INTC_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/io.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/io.h 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,286 @@
++#ifndef __ASM_AVR32_IO_H
++#define __ASM_AVR32_IO_H
++
++#include <linux/string.h>
++
++#ifdef __KERNEL__
++
++#include <asm/addrspace.h>
++#include <asm/byteorder.h>
++
++/* virt_to_phys will only work when address is in P1 or P2 */
++static __inline__ unsigned long virt_to_phys(volatile void *address)
++{
++ return PHYSADDR(address);
++}
++
++static __inline__ void * phys_to_virt(unsigned long address)
++{
++ return (void *)P1SEGADDR(address);
++}
++
++#define cached_to_phys(addr) ((unsigned long)PHYSADDR(addr))
++#define uncached_to_phys(addr) ((unsigned long)PHYSADDR(addr))
++#define phys_to_cached(addr) ((void *)P1SEGADDR(addr))
++#define phys_to_uncached(addr) ((void *)P2SEGADDR(addr))
++
++/*
++ * Generic IO read/write. These perform native-endian accesses. Note
++ * that some architectures will want to re-define __raw_{read,write}w.
++ */
++extern void __raw_writesb(unsigned int addr, const void *data, int bytelen);
++extern void __raw_writesw(unsigned int addr, const void *data, int wordlen);
++extern void __raw_writesl(unsigned int addr, const void *data, int longlen);
++
++extern void __raw_readsb(unsigned int addr, void *data, int bytelen);
++extern void __raw_readsw(unsigned int addr, void *data, int wordlen);
++extern void __raw_readsl(unsigned int addr, void *data, int longlen);
++
++static inline void writeb(unsigned char b, volatile void __iomem *addr)
++{
++ *(volatile unsigned char __force *)addr = b;
++}
++static inline void writew(unsigned short b, volatile void __iomem *addr)
++{
++ *(volatile unsigned short __force *)addr = b;
++}
++static inline void writel(unsigned int b, volatile void __iomem *addr)
++{
++ *(volatile unsigned int __force *)addr = b;
++}
++#define __raw_writeb writeb
++#define __raw_writew writew
++#define __raw_writel writel
++
++static inline unsigned char readb(const volatile void __iomem *addr)
++{
++ return *(const volatile unsigned char __force *)addr;
++}
++static inline unsigned short readw(const volatile void __iomem *addr)
++{
++ return *(const volatile unsigned short __force *)addr;
++}
++static inline unsigned int readl(const volatile void __iomem *addr)
++{
++ return *(const volatile unsigned int __force *)addr;
++}
++#define __raw_readb readb
++#define __raw_readw readw
++#define __raw_readl readl
++
++#define writesb(p, d, l) __raw_writesb((unsigned int)p, d, l)
++#define writesw(p, d, l) __raw_writesw((unsigned int)p, d, l)
++#define writesl(p, d, l) __raw_writesl((unsigned int)p, d, l)
++
++#define readsb(p, d, l) __raw_readsb((unsigned int)p, d, l)
++#define readsw(p, d, l) __raw_readsw((unsigned int)p, d, l)
++#define readsl(p, d, l) __raw_readsl((unsigned int)p, d, l)
++
++
++/*
++ * io{read,write}{8,16,32} macros in both le (for PCI style consumers) and native be
++ */
++#ifndef ioread8
++
++#define ioread8(p) ({ unsigned int __v = __raw_readb(p); __v; })
++
++#define ioread16(p) ({ unsigned int __v = le16_to_cpu(__raw_readw(p)); __v; })
++#define ioread16be(p) ({ unsigned int __v = be16_to_cpu(__raw_readw(p)); __v; })
++
++#define ioread32(p) ({ unsigned int __v = le32_to_cpu(__raw_readl(p)); __v; })
++#define ioread32be(p) ({ unsigned int __v = be32_to_cpu(__raw_readl(p)); __v; })
++
++#define iowrite8(v,p) __raw_writeb(v, p)
++
++#define iowrite16(v,p) __raw_writew(cpu_to_le16(v), p)
++#define iowrite16be(v,p) __raw_writew(cpu_to_be16(v), p)
++
++#define iowrite32(v,p) __raw_writel(cpu_to_le32(v), p)
++#define iowrite32be(v,p) __raw_writel(cpu_to_be32(v), p)
++
++#define ioread8_rep(p,d,c) __raw_readsb(p,d,c)
++#define ioread16_rep(p,d,c) __raw_readsw(p,d,c)
++#define ioread32_rep(p,d,c) __raw_readsl(p,d,c)
++
++#define iowrite8_rep(p,s,c) __raw_writesb(p,s,c)
++#define iowrite16_rep(p,s,c) __raw_writesw(p,s,c)
++#define iowrite32_rep(p,s,c) __raw_writesl(p,s,c)
++
++#endif
++
++
++/*
++ * These two are only here because ALSA _thinks_ it needs them...
++ */
++static inline void memcpy_fromio(void * to, const volatile void __iomem *from,
++ unsigned long count)
++{
++ char *p = to;
++ while (count) {
++ count--;
++ *p = readb(from);
++ p++;
++ from++;
++ }
++}
++
++static inline void memcpy_toio(volatile void __iomem *to, const void * from,
++ unsigned long count)
++{
++ const char *p = from;
++ while (count) {
++ count--;
++ writeb(*p, to);
++ p++;
++ to++;
++ }
++}
++
++static inline void memset_io(volatile void __iomem *addr, unsigned char val,
++ unsigned long count)
++{
++ memset((void __force *)addr, val, count);
++}
++
++/*
++ * Bad read/write accesses...
++ */
++extern void __readwrite_bug(const char *fn);
++
++#define IO_SPACE_LIMIT 0xffffffff
++
++/* Convert I/O port address to virtual address */
++#define __io(p) ((void __iomem *)phys_to_uncached(p))
++
++/*
++ * IO port access primitives
++ * -------------------------
++ *
++ * The AVR32 doesn't have special IO access instructions; all IO is memory
++ * mapped. Note that these are defined to perform little endian accesses
++ * only. Their primary purpose is to access PCI and ISA peripherals.
++ *
++ * Note that for a big endian machine, this implies that the following
++ * big endian mode connectivity is in place.
++ *
++ * The machine specific io.h include defines __io to translate an "IO"
++ * address to a memory address.
++ *
++ * Note that we prevent GCC re-ordering or caching values in expressions
++ * by introducing sequence points into the in*() definitions. Note that
++ * __raw_* do not guarantee this behaviour.
++ *
++ * The {in,out}[bwl] macros are for emulating x86-style PCI/ISA IO space.
++ */
++#define outb(v, p) __raw_writeb(v, __io(p))
++#define outw(v, p) __raw_writew(cpu_to_le16(v), __io(p))
++#define outl(v, p) __raw_writel(cpu_to_le32(v), __io(p))
++
++#define inb(p) __raw_readb(__io(p))
++#define inw(p) le16_to_cpu(__raw_readw(__io(p)))
++#define inl(p) le32_to_cpu(__raw_readl(__io(p)))
++
++static inline void __outsb(unsigned long port, void *addr, unsigned int count)
++{
++ while (count--) {
++ outb(*(u8 *)addr, port);
++ addr++;
++ }
++}
++
++static inline void __insb(unsigned long port, void *addr, unsigned int count)
++{
++ while (count--) {
++ *(u8 *)addr = inb(port);
++ addr++;
++ }
++}
++
++static inline void __outsw(unsigned long port, void *addr, unsigned int count)
++{
++ while (count--) {
++ outw(*(u16 *)addr, port);
++ addr += 2;
++ }
++}
++
++static inline void __insw(unsigned long port, void *addr, unsigned int count)
++{
++ while (count--) {
++ *(u16 *)addr = inw(port);
++ addr += 2;
++ }
++}
++
++static inline void __outsl(unsigned long port, void *addr, unsigned int count)
++{
++ while (count--) {
++ outl(*(u32 *)addr, port);
++ addr += 4;
++ }
++}
++
++static inline void __insl(unsigned long port, void *addr, unsigned int count)
++{
++ while (count--) {
++ *(u32 *)addr = inl(port);
++ addr += 4;
++ }
++}
++
++#define outsb(port, addr, count) __outsb(port, addr, count)
++#define insb(port, addr, count) __insb(port, addr, count)
++#define outsw(port, addr, count) __outsw(port, addr, count)
++#define insw(port, addr, count) __insw(port, addr, count)
++#define outsl(port, addr, count) __outsl(port, addr, count)
++#define insl(port, addr, count) __insl(port, addr, count)
++
++extern void __iomem *__ioremap(unsigned long offset, size_t size,
++ unsigned long flags);
++extern void __iounmap(void __iomem *addr);
++
++/*
++ * ioremap - map bus memory into CPU space
++ * @offset bus address of the memory
++ * @size size of the resource to map
++ *
++ * ioremap performs a platform specific sequence of operations to make
++ * bus memory CPU accessible via the readb/.../writel functions and
++ * the other mmio helpers. The returned address is not guaranteed to
++ * be usable directly as a virtual address.
++ */
++#define ioremap(offset, size) \
++ __ioremap((offset), (size), 0)
++
++#define iounmap(addr) \
++ __iounmap(addr)
++
++#define cached(addr) P1SEGADDR(addr)
++#define uncached(addr) P2SEGADDR(addr)
++
++#define virt_to_bus virt_to_phys
++#define bus_to_virt phys_to_virt
++#define page_to_bus page_to_phys
++#define bus_to_page phys_to_page
++
++#define dma_cache_wback_inv(_start, _size) \
++ flush_dcache_region(_start, _size)
++#define dma_cache_inv(_start, _size) \
++ invalidate_dcache_region(_start, _size)
++#define dma_cache_wback(_start, _size) \
++ clean_dcache_region(_start, _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
++
++#endif /* __KERNEL__ */
++
++#endif /* __ASM_AVR32_IO_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/ioctl.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/ioctl.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_IOCTL_H
++#define __ASM_AVR32_IOCTL_H
++
++#include <asm-generic/ioctl.h>
++
++#endif /* __ASM_AVR32_IOCTL_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/ioctls.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/ioctls.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,83 @@
++#ifndef __ASM_AVR32_IOCTLS_H
++#define __ASM_AVR32_IOCTLS_H
++
++#include <asm/ioctl.h>
++
++/* 0x54 is just a magic number to make these relatively unique ('T') */
++
++#define TCGETS 0x5401
++#define TCSETS 0x5402 /* Clashes with SNDCTL_TMR_START sound ioctl */
++#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 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_AVR32_IOCTLS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/ipcbuf.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/ipcbuf.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,29 @@
++#ifndef __ASM_AVR32_IPCBUF_H
++#define __ASM_AVR32_IPCBUF_H
++
++/*
++* The user_ipc_perm structure for AVR32 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_AVR32_IPCBUF_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/irq.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/irq.h 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,10 @@
++#ifndef __ASM_AVR32_IRQ_H
++#define __ASM_AVR32_IRQ_H
++
++#define NR_INTERNAL_IRQS 64
++#define NR_EXTERNAL_IRQS 64
++#define NR_IRQS (NR_INTERNAL_IRQS + NR_EXTERNAL_IRQS)
++
++#define irq_canonicalize(i) (i)
++
++#endif /* __ASM_AVR32_IOCTLS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/kdebug.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/kdebug.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,38 @@
++#ifndef __ASM_AVR32_KDEBUG_H
++#define __ASM_AVR32_KDEBUG_H
++
++#include <linux/notifier.h>
++
++struct pt_regs;
++
++struct die_args {
++ struct pt_regs *regs;
++ int trapnr;
++};
++
++int register_die_notifier(struct notifier_block *nb);
++int unregister_die_notifier(struct notifier_block *nb);
++int register_page_fault_notifier(struct notifier_block *nb);
++int unregister_page_fault_notifier(struct notifier_block *nb);
++extern struct atomic_notifier_head avr32_die_chain;
++
++/* Grossly misnamed. */
++enum die_val {
++ DIE_FAULT,
++ DIE_BREAKPOINT,
++ DIE_SSTEP,
++ DIE_PAGE_FAULT,
++};
++
++static inline int notify_die(enum die_val val, struct pt_regs *regs,
++ int trap, int sig)
++{
++ struct die_args args = {
++ .regs = regs,
++ .trapnr = trap,
++ };
++
++ return atomic_notifier_call_chain(&avr32_die_chain, val, &args);
++}
++
++#endif /* __ASM_AVR32_KDEBUG_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/kmap_types.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/kmap_types.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,30 @@
++#ifndef __ASM_AVR32_KMAP_TYPES_H
++#define __ASM_AVR32_KMAP_TYPES_H
++
++#ifdef CONFIG_DEBUG_HIGHMEM
++# define D(n) __KM_FENCE_##n ,
++#else
++# define D(n)
++#endif
++
++enum km_type {
++D(0) KM_BOUNCE_READ,
++D(1) KM_SKB_SUNRPC_DATA,
++D(2) KM_SKB_DATA_SOFTIRQ,
++D(3) KM_USER0,
++D(4) KM_USER1,
++D(5) KM_BIO_SRC_IRQ,
++D(6) KM_BIO_DST_IRQ,
++D(7) KM_PTE0,
++D(8) KM_PTE1,
++D(9) KM_PTE2,
++D(10) KM_IRQ0,
++D(11) KM_IRQ1,
++D(12) KM_SOFTIRQ0,
++D(13) KM_SOFTIRQ1,
++D(14) KM_TYPE_NR
++};
++
++#undef D
++
++#endif /* __ASM_AVR32_KMAP_TYPES_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/kprobes.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/kprobes.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,34 @@
++/*
++ * Kernel Probes (KProbes)
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ * Copyright (C) IBM Corporation, 2002, 2004
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_KPROBES_H
++#define __ASM_AVR32_KPROBES_H
++
++#include <linux/types.h>
++
++typedef u16 kprobe_opcode_t;
++#define BREAKPOINT_INSTRUCTION 0xd673 /* breakpoint */
++#define MAX_INSN_SIZE 2
++
++#define ARCH_INACTIVE_KPROBE_COUNT 1
++
++#define arch_remove_kprobe(p) do { } while (0)
++
++/* Architecture specific copy of original instruction */
++struct arch_specific_insn {
++ kprobe_opcode_t insn[MAX_INSN_SIZE];
++};
++
++extern int kprobe_exceptions_notify(struct notifier_block *self,
++ unsigned long val, void *data);
++
++#define flush_insn_slot(p) do { } while (0)
++
++#endif /* __ASM_AVR32_KPROBES_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/linkage.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/linkage.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,7 @@
++#ifndef __ASM_LINKAGE_H
++#define __ASM_LINKAGE_H
++
++#define __ALIGN .balign 2
++#define __ALIGN_STR ".balign 2"
++
++#endif /* __ASM_LINKAGE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/local.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/local.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_LOCAL_H
++#define __ASM_AVR32_LOCAL_H
++
++#include <asm-generic/local.h>
++
++#endif /* __ASM_AVR32_LOCAL_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/mach/serial_at91.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/mach/serial_at91.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,33 @@
++/*
++ * linux/include/asm-arm/mach/serial_at91.h
++ *
++ * Based on serial_sa1100.h by Nicolas Pitre
++ *
++ * Copyright (C) 2002 ATMEL Rousset
++ *
++ * Low level machine dependent UART functions.
++ */
++
++struct uart_port;
++
++/*
++ * This is a temporary structure for registering these
++ * functions; it is intended to be discarded after boot.
++ */
++struct at91_port_fns {
++ void (*set_mctrl)(struct uart_port *, u_int);
++ u_int (*get_mctrl)(struct uart_port *);
++ void (*enable_ms)(struct uart_port *);
++ void (*pm)(struct uart_port *, u_int, u_int);
++ int (*set_wake)(struct uart_port *, u_int);
++ int (*open)(struct uart_port *);
++ void (*close)(struct uart_port *);
++};
++
++#if defined(CONFIG_SERIAL_AT91)
++void at91_register_uart_fns(struct at91_port_fns *fns);
++#else
++#define at91_register_uart_fns(fns) do { } while (0)
++#endif
++
++
+Index: linux-2.6.18-avr32/include/asm-avr32/mman.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/mman.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,17 @@
++#ifndef __ASM_AVR32_MMAN_H__
++#define __ASM_AVR32_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) page tables */
++#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_AVR32_MMAN_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/mmu.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/mmu.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,10 @@
++#ifndef __ASM_AVR32_MMU_H
++#define __ASM_AVR32_MMU_H
++
++/* Default "unsigned long" context */
++typedef unsigned long mm_context_t;
++
++#define MMU_ITLB_ENTRIES 64
++#define MMU_DTLB_ENTRIES 64
++
++#endif /* __ASM_AVR32_MMU_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/mmu_context.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/mmu_context.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,148 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * ASID handling taken from SH implementation.
++ * Copyright (C) 1999 Niibe Yutaka
++ * Copyright (C) 2003 Paul Mundt
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_MMU_CONTEXT_H
++#define __ASM_AVR32_MMU_CONTEXT_H
++
++#include <asm/tlbflush.h>
++#include <asm/pgalloc.h>
++#include <asm/sysreg.h>
++
++/*
++ * The MMU "context" consists of two things:
++ * (a) TLB cache version
++ * (b) ASID (Address Space IDentifier)
++ */
++#define MMU_CONTEXT_ASID_MASK 0x000000ff
++#define MMU_CONTEXT_VERSION_MASK 0xffffff00
++#define MMU_CONTEXT_FIRST_VERSION 0x00000100
++#define NO_CONTEXT 0
++
++#define MMU_NO_ASID 0x100
++
++/* Virtual Page Number mask */
++#define MMU_VPN_MASK 0xfffff000
++
++/* Cache of MMU context last used */
++extern unsigned long mmu_context_cache;
++
++/*
++ * Get MMU context if needed
++ */
++static inline void
++get_mmu_context(struct mm_struct *mm)
++{
++ unsigned long mc = mmu_context_cache;
++
++ if (((mm->context ^ mc) & MMU_CONTEXT_VERSION_MASK) == 0)
++ /* It's up to date, do nothing */
++ return;
++
++ /* It's old, we need to get new context with new version */
++ mc = ++mmu_context_cache;
++ if (!(mc & MMU_CONTEXT_ASID_MASK)) {
++ /*
++ * We have exhausted all ASIDs of this version.
++ * Flush the TLB and start new cycle.
++ */
++ flush_tlb_all();
++ /*
++ * Fix version. Note that we avoid version #0
++ * to distinguish NO_CONTEXT.
++ */
++ if (!mc)
++ mmu_context_cache = mc = MMU_CONTEXT_FIRST_VERSION;
++ }
++ mm->context = mc;
++}
++
++/*
++ * Initialize the context related info for a new mm_struct
++ * instance.
++ */
++static inline int init_new_context(struct task_struct *tsk,
++ struct mm_struct *mm)
++{
++ mm->context = NO_CONTEXT;
++ return 0;
++}
++
++/*
++ * Destroy context related info for an mm_struct that is about
++ * to be put to rest.
++ */
++static inline void destroy_context(struct mm_struct *mm)
++{
++ /* Do nothing */
++}
++
++static inline void set_asid(unsigned long asid)
++{
++ /* XXX: We're destroying TLBEHI[8:31] */
++ sysreg_write(TLBEHI, asid & MMU_CONTEXT_ASID_MASK);
++ cpu_sync_pipeline();
++}
++
++static inline unsigned long get_asid(void)
++{
++ unsigned long asid;
++
++ asid = sysreg_read(TLBEHI);
++ return asid & MMU_CONTEXT_ASID_MASK;
++}
++
++static inline void activate_context(struct mm_struct *mm)
++{
++ get_mmu_context(mm);
++ set_asid(mm->context & MMU_CONTEXT_ASID_MASK);
++}
++
++static inline void switch_mm(struct mm_struct *prev,
++ struct mm_struct *next,
++ struct task_struct *tsk)
++{
++ if (likely(prev != next)) {
++ unsigned long __pgdir = (unsigned long)next->pgd;
++
++ sysreg_write(PTBR, __pgdir);
++ activate_context(next);
++ }
++}
++
++#define deactivate_mm(tsk,mm) do { } while(0)
++
++#define activate_mm(prev, next) switch_mm((prev), (next), NULL)
++
++static inline void
++enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
++{
++}
++
++
++static inline void enable_mmu(void)
++{
++ sysreg_write(MMUCR, (SYSREG_BIT(MMUCR_S)
++ | SYSREG_BIT(E)
++ | SYSREG_BIT(MMUCR_I)));
++ nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
++
++ if (mmu_context_cache == NO_CONTEXT)
++ mmu_context_cache = MMU_CONTEXT_FIRST_VERSION;
++
++ set_asid(mmu_context_cache & MMU_CONTEXT_ASID_MASK);
++}
++
++static inline void disable_mmu(void)
++{
++ sysreg_write(MMUCR, SYSREG_BIT(MMUCR_S));
++}
++
++#endif /* __ASM_AVR32_MMU_CONTEXT_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/module.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/module.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,28 @@
++#ifndef __ASM_AVR32_MODULE_H
++#define __ASM_AVR32_MODULE_H
++
++struct mod_arch_syminfo {
++ unsigned long got_offset;
++ int got_initialized;
++};
++
++struct mod_arch_specific {
++ /* Starting offset of got in the module core memory. */
++ unsigned long got_offset;
++ /* Size of the got. */
++ unsigned long got_size;
++ /* Number of symbols in syminfo. */
++ int nsyms;
++ /* Additional symbol information (got offsets). */
++ struct mod_arch_syminfo *syminfo;
++};
++
++#define Elf_Shdr Elf32_Shdr
++#define Elf_Sym Elf32_Sym
++#define Elf_Ehdr Elf32_Ehdr
++
++#define MODULE_PROC_FAMILY "AVR32v1"
++
++#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
++
++#endif /* __ASM_AVR32_MODULE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/msgbuf.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/msgbuf.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,31 @@
++#ifndef __ASM_AVR32_MSGBUF_H
++#define __ASM_AVR32_MSGBUF_H
++
++/*
++ * The msqid64_ds structure for i386 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_AVR32_MSGBUF_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/mutex.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/mutex.h 2006-12-04 09:33:12.000000000 +0100
+@@ -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>
+Index: linux-2.6.18-avr32/include/asm-avr32/namei.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/namei.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,7 @@
++#ifndef __ASM_AVR32_NAMEI_H
++#define __ASM_AVR32_NAMEI_H
++
++/* This dummy routine may be changed to something useful */
++#define __emul_prefix() NULL
++
++#endif /* __ASM_AVR32_NAMEI_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/numnodes.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/numnodes.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,7 @@
++#ifndef __ASM_AVR32_NUMNODES_H
++#define __ASM_AVR32_NUMNODES_H
++
++/* Max 4 nodes */
++#define NODES_SHIFT 2
++
++#endif /* __ASM_AVR32_NUMNODES_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/ocd.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/ocd.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,78 @@
++/*
++ * AVR32 OCD Registers
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_OCD_H
++#define __ASM_AVR32_OCD_H
++
++/* Debug Registers */
++#define DBGREG_DID 0
++#define DBGREG_DC 8
++#define DBGREG_DS 16
++#define DBGREG_RWCS 28
++#define DBGREG_RWA 36
++#define DBGREG_RWD 40
++#define DBGREG_WT 44
++#define DBGREG_DTC 52
++#define DBGREG_DTSA0 56
++#define DBGREG_DTSA1 60
++#define DBGREG_DTEA0 72
++#define DBGREG_DTEA1 76
++#define DBGREG_BWC0A 88
++#define DBGREG_BWC0B 92
++#define DBGREG_BWC1A 96
++#define DBGREG_BWC1B 100
++#define DBGREG_BWC2A 104
++#define DBGREG_BWC2B 108
++#define DBGREG_BWC3A 112
++#define DBGREG_BWC3B 116
++#define DBGREG_BWA0A 120
++#define DBGREG_BWA0B 124
++#define DBGREG_BWA1A 128
++#define DBGREG_BWA1B 132
++#define DBGREG_BWA2A 136
++#define DBGREG_BWA2B 140
++#define DBGREG_BWA3A 144
++#define DBGREG_BWA3B 148
++#define DBGREG_BWD3A 153
++#define DBGREG_BWD3B 156
++
++#define DBGREG_PID 284
++
++#define SABAH_OCD 0x01
++#define SABAH_ICACHE 0x02
++#define SABAH_MEM_CACHED 0x04
++#define SABAH_MEM_UNCACHED 0x05
++
++/* Fields in the Development Control register */
++#define DC_SS_BIT 8
++
++#define DC_SS (1 << DC_SS_BIT)
++#define DC_DBE (1 << 13)
++#define DC_RID (1 << 27)
++#define DC_ORP (1 << 28)
++#define DC_MM (1 << 29)
++#define DC_RES (1 << 30)
++
++/* Fields in the Development Status register */
++#define DS_SSS (1 << 0)
++#define DS_SWB (1 << 1)
++#define DS_HWB (1 << 2)
++#define DS_BP_SHIFT 8
++#define DS_BP_MASK (0xff << DS_BP_SHIFT)
++
++#define __mfdr(addr) \
++({ \
++ register unsigned long value; \
++ asm volatile("mfdr %0, %1" : "=r"(value) : "i"(addr)); \
++ value; \
++})
++#define __mtdr(addr, value) \
++ asm volatile("mtdr %0, %1" : : "i"(addr), "r"(value))
++
++#endif /* __ASM_AVR32_OCD_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/page.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/page.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,112 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_PAGE_H
++#define __ASM_AVR32_PAGE_H
++
++#ifdef __KERNEL__
++
++/* PAGE_SHIFT determines the page size */
++#define PAGE_SHIFT 12
++#ifdef __ASSEMBLY__
++#define PAGE_SIZE (1 << PAGE_SHIFT)
++#else
++#define PAGE_SIZE (1UL << PAGE_SHIFT)
++#endif
++#define PAGE_MASK (~(PAGE_SIZE-1))
++#define PTE_MASK PAGE_MASK
++
++#ifndef __ASSEMBLY__
++
++#include <asm/addrspace.h>
++
++extern void clear_page(void *to);
++extern void copy_page(void *to, void *from);
++
++#define clear_user_page(page, vaddr, pg) clear_page(page)
++#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
++
++/*
++ * 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;
++
++#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) })
++
++/* FIXME: These should be removed soon */
++extern unsigned long memory_start, memory_end;
++
++/* Pure 2^n version of get_order */
++static inline int get_order(unsigned long size)
++{
++ unsigned lz;
++
++ size = (size - 1) >> PAGE_SHIFT;
++ asm("clz %0, %1" : "=r"(lz) : "r"(size));
++ return 32 - lz;
++}
++
++#endif /* !__ASSEMBLY__ */
++
++/* Align the pointer to the (next) page boundary */
++#define PAGE_ALIGN(addr) (((addr) + PAGE_SIZE - 1) & PAGE_MASK)
++
++/*
++ * The hardware maps the virtual addresses 0x80000000 -> 0x9fffffff
++ * permanently to the physical addresses 0x00000000 -> 0x1fffffff when
++ * segmentation is enabled. We want to make use of this in order to
++ * minimize TLB pressure.
++ */
++#define PAGE_OFFSET (0x80000000UL)
++
++/*
++ * ALSA uses virt_to_page() on DMA pages, which I'm not entirely sure
++ * is a good idea. Anyway, we can't simply subtract PAGE_OFFSET here
++ * in that case, so we'll have to mask out the three most significant
++ * bits of the address instead...
++ *
++ * What's the difference between __pa() and virt_to_phys() anyway?
++ */
++#define __pa(x) PHYSADDR(x)
++#define __va(x) ((void *)(P1SEGADDR(x)))
++
++#define MAP_NR(addr) (((unsigned long)(addr) - PAGE_OFFSET) >> PAGE_SHIFT)
++
++#define phys_to_page(phys) (pfn_to_page(phys >> PAGE_SHIFT))
++#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
++
++#ifndef CONFIG_NEED_MULTIPLE_NODES
++
++#define PHYS_PFN_OFFSET (CONFIG_PHYS_OFFSET >> PAGE_SHIFT)
++
++#define pfn_to_page(pfn) (mem_map + ((pfn) - PHYS_PFN_OFFSET))
++#define page_to_pfn(page) ((unsigned long)((page) - mem_map) + PHYS_PFN_OFFSET)
++#define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))
++#endif /* CONFIG_NEED_MULTIPLE_NODES */
++
++#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
++#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
++
++#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | \
++ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
++
++/*
++ * Memory above this physical address will be considered highmem.
++ */
++#define HIGHMEM_START 0x20000000UL
++
++#endif /* __KERNEL__ */
++
++#endif /* __ASM_AVR32_PAGE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/param.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/param.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,23 @@
++#ifndef __ASM_AVR32_PARAM_H
++#define __ASM_AVR32_PARAM_H
++
++#ifdef __KERNEL__
++# define HZ CONFIG_HZ
++# define USER_HZ 100 /* User interfaces are in "ticks" */
++# define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
++#endif
++
++#ifndef HZ
++# define HZ 100
++#endif
++
++/* TODO: Should be configurable */
++#define EXEC_PAGESIZE 4096
++
++#ifndef NOGROUP
++# define NOGROUP (-1)
++#endif
++
++#define MAXHOSTNAMELEN 64
++
++#endif /* __ASM_AVR32_PARAM_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/pci.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/pci.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,8 @@
++#ifndef __ASM_AVR32_PCI_H__
++#define __ASM_AVR32_PCI_H__
++
++/* We don't support PCI yet, but some drivers require this file anyway */
++
++#define PCI_DMA_BUS_IS_PHYS (1)
++
++#endif /* __ASM_AVR32_PCI_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/percpu.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/percpu.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_PERCPU_H
++#define __ASM_AVR32_PERCPU_H
++
++#include <asm-generic/percpu.h>
++
++#endif /* __ASM_AVR32_PERCPU_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/pgalloc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/pgalloc.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,96 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_PGALLOC_H
++#define __ASM_AVR32_PGALLOC_H
++
++#include <asm/processor.h>
++#include <linux/threads.h>
++#include <linux/slab.h>
++#include <linux/mm.h>
++
++#define pmd_populate_kernel(mm, pmd, pte) \
++ set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte)))
++
++static __inline__ void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
++ struct page *pte)
++{
++ set_pmd(pmd, __pmd(_PAGE_TABLE + page_to_phys(pte)));
++}
++
++/*
++ * Allocate and free page tables
++ */
++static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm)
++{
++ unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t));
++ pgd_t *pgd = (pgd_t *)kmalloc(pgd_size, GFP_KERNEL);
++
++ if (pgd)
++ memset(pgd, 0, pgd_size);
++
++ return pgd;
++}
++
++static inline void pgd_free(pgd_t *pgd)
++{
++ kfree(pgd);
++}
++
++static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
++ unsigned long address)
++{
++ int count = 0;
++ pte_t *pte;
++
++ do {
++ pte = (pte_t *) __get_free_page(GFP_KERNEL | __GFP_REPEAT);
++ if (pte)
++ clear_page(pte);
++ else {
++ current->state = TASK_UNINTERRUPTIBLE;
++ schedule_timeout(HZ);
++ }
++ } while (!pte && (count++ < 10));
++
++ return pte;
++}
++
++static inline struct page *pte_alloc_one(struct mm_struct *mm,
++ unsigned long address)
++{
++ int count = 0;
++ struct page *pte;
++
++ do {
++ pte = alloc_pages(GFP_KERNEL, 0);
++ if (pte)
++ clear_page(page_address(pte));
++ else {
++ current->state = TASK_UNINTERRUPTIBLE;
++ schedule_timeout(HZ);
++ }
++ } while (!pte && (count++ < 10));
++
++ return pte;
++}
++
++static inline void pte_free_kernel(pte_t *pte)
++{
++ free_page((unsigned long)pte);
++}
++
++static inline void pte_free(struct page *pte)
++{
++ __free_page(pte);
++}
++
++#define __pte_free_tlb(tlb,pte) tlb_remove_page((tlb),(pte))
++
++#define check_pgt_cache() do { } while(0)
++
++#endif /* __ASM_AVR32_PGALLOC_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/pgtable-2level.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/pgtable-2level.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,47 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_PGTABLE_2LEVEL_H
++#define __ASM_AVR32_PGTABLE_2LEVEL_H
++
++#include <asm-generic/pgtable-nopmd.h>
++
++/*
++ * Traditional 2-level paging structure
++ */
++#define PGDIR_SHIFT 22
++#define PTRS_PER_PGD 1024
++
++#define PTRS_PER_PTE 1024
++
++#ifndef __ASSEMBLY__
++#define pte_ERROR(e) \
++ printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e))
++#define pgd_ERROR(e) \
++ printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, 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) (*(pteptr) = pteval)
++#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep, 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 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))
++
++#endif /* !__ASSEMBLY__ */
++
++#endif /* __ASM_AVR32_PGTABLE_2LEVEL_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/pgtable.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/pgtable.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,408 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_PGTABLE_H
++#define __ASM_AVR32_PGTABLE_H
++
++#include <asm/addrspace.h>
++
++#ifndef __ASSEMBLY__
++#include <linux/sched.h>
++
++#endif /* !__ASSEMBLY__ */
++
++/*
++ * Use two-level page tables just as the i386 (without PAE)
++ */
++#include <asm/pgtable-2level.h>
++
++/*
++ * The following code might need some cleanup when the values are
++ * final...
++ */
++#define PMD_SIZE (1UL << PMD_SHIFT)
++#define PMD_MASK (~(PMD_SIZE-1))
++#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 PTE_PHYS_MASK 0x1ffff000
++
++#ifndef __ASSEMBLY__
++extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
++extern void paging_init(void);
++
++/*
++ * ZERO_PAGE is a global shared page that is always zero: used for
++ * zero-mapped memory areas etc.
++ */
++extern struct page *empty_zero_page;
++#define ZERO_PAGE(vaddr) (empty_zero_page)
++
++/*
++ * Just any arbitrary offset to the start of the vmalloc VM area: the
++ * current 8 MiB value just means that there will be a 8 MiB "hole"
++ * after the uncached physical memory (P2 segment) until the vmalloc
++ * area starts. That means that any out-of-bounds memory accesses will
++ * hopefully be caught; we don't know if the end of the P1/P2 segments
++ * are actually used for anything, but it is anyway safer to let the
++ * MMU catch these kinds of errors than to rely on the memory bus.
++ *
++ * A "hole" of the same size is added to the end of the P3 segment as
++ * well. It might seem wasteful to use 16 MiB of virtual address space
++ * on this, but we do have 512 MiB of it...
++ *
++ * The vmalloc() routines leave a hole of 4 KiB between each vmalloced
++ * area for the same reason.
++ */
++#define VMALLOC_OFFSET (8 * 1024 * 1024)
++#define VMALLOC_START (P3SEG + VMALLOC_OFFSET)
++#define VMALLOC_END (P4SEG - VMALLOC_OFFSET)
++#endif /* !__ASSEMBLY__ */
++
++/*
++ * Page flags. Some of these flags are not directly supported by
++ * hardware, so we have to emulate them.
++ */
++#define _TLBEHI_BIT_VALID 9
++#define _TLBEHI_VALID (1 << _TLBEHI_BIT_VALID)
++
++#define _PAGE_BIT_WT 0 /* W-bit : write-through */
++#define _PAGE_BIT_DIRTY 1 /* D-bit : page changed */
++#define _PAGE_BIT_SZ0 2 /* SZ0-bit : Size of page */
++#define _PAGE_BIT_SZ1 3 /* SZ1-bit : Size of page */
++#define _PAGE_BIT_EXECUTE 4 /* X-bit : execute access allowed */
++#define _PAGE_BIT_RW 5 /* AP0-bit : write access allowed */
++#define _PAGE_BIT_USER 6 /* AP1-bit : user space access allowed */
++#define _PAGE_BIT_BUFFER 7 /* B-bit : bufferable */
++#define _PAGE_BIT_GLOBAL 8 /* G-bit : global (ignore ASID) */
++#define _PAGE_BIT_CACHABLE 9 /* C-bit : cachable */
++
++/* If we drop support for 1K pages, we get two extra bits */
++#define _PAGE_BIT_PRESENT 10
++#define _PAGE_BIT_ACCESSED 11 /* software: page was accessed */
++
++/* The following flags are only valid when !PRESENT */
++#define _PAGE_BIT_FILE 0 /* software: pagecache or swap? */
++
++#define _PAGE_WT (1 << _PAGE_BIT_WT)
++#define _PAGE_DIRTY (1 << _PAGE_BIT_DIRTY)
++#define _PAGE_EXECUTE (1 << _PAGE_BIT_EXECUTE)
++#define _PAGE_RW (1 << _PAGE_BIT_RW)
++#define _PAGE_USER (1 << _PAGE_BIT_USER)
++#define _PAGE_BUFFER (1 << _PAGE_BIT_BUFFER)
++#define _PAGE_GLOBAL (1 << _PAGE_BIT_GLOBAL)
++#define _PAGE_CACHABLE (1 << _PAGE_BIT_CACHABLE)
++
++/* Software flags */
++#define _PAGE_ACCESSED (1 << _PAGE_BIT_ACCESSED)
++#define _PAGE_PRESENT (1 << _PAGE_BIT_PRESENT)
++#define _PAGE_FILE (1 << _PAGE_BIT_FILE)
++
++/*
++ * Page types, i.e. sizes. _PAGE_TYPE_NONE corresponds to what is
++ * usually called _PAGE_PROTNONE on other architectures.
++ *
++ * XXX: Find out if _PAGE_PROTNONE is equivalent with !_PAGE_USER. If
++ * so, we can encode all possible page sizes (although we can't really
++ * support 1K pages anyway due to the _PAGE_PRESENT and _PAGE_ACCESSED
++ * bits)
++ *
++ */
++#define _PAGE_TYPE_MASK ((1 << _PAGE_BIT_SZ0) | (1 << _PAGE_BIT_SZ1))
++#define _PAGE_TYPE_NONE (0 << _PAGE_BIT_SZ0)
++#define _PAGE_TYPE_SMALL (1 << _PAGE_BIT_SZ0)
++#define _PAGE_TYPE_MEDIUM (2 << _PAGE_BIT_SZ0)
++#define _PAGE_TYPE_LARGE (3 << _PAGE_BIT_SZ0)
++
++/*
++ * Mask which drop software flags. We currently can't handle more than
++ * 512 MiB of physical memory, so we can use bits 29-31 for other
++ * stuff. With a fixed 4K page size, we can use bits 10-11 as well as
++ * bits 2-3 (SZ)
++ */
++#define _PAGE_FLAGS_HARDWARE_MASK 0xfffff3ff
++
++#define _PAGE_FLAGS_CACHE_MASK (_PAGE_CACHABLE | _PAGE_BUFFER | _PAGE_WT)
++
++/* TODO: Check for saneness */
++/* User-mode page table flags (to be set in a pgd or pmd entry) */
++#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_TYPE_SMALL | _PAGE_RW \
++ | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
++/* Kernel-mode page table flags */
++#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_TYPE_SMALL | _PAGE_RW \
++ | _PAGE_ACCESSED | _PAGE_DIRTY)
++/* Flags that may be modified by software */
++#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY \
++ | _PAGE_FLAGS_CACHE_MASK)
++
++#define _PAGE_FLAGS_READ (_PAGE_CACHABLE | _PAGE_BUFFER)
++#define _PAGE_FLAGS_WRITE (_PAGE_FLAGS_READ | _PAGE_RW | _PAGE_DIRTY)
++
++#define _PAGE_NORMAL(x) __pgprot((x) | _PAGE_PRESENT | _PAGE_TYPE_SMALL \
++ | _PAGE_ACCESSED)
++
++#define PAGE_NONE (_PAGE_ACCESSED | _PAGE_TYPE_NONE)
++#define PAGE_READ (_PAGE_FLAGS_READ | _PAGE_USER)
++#define PAGE_EXEC (_PAGE_FLAGS_READ | _PAGE_EXECUTE | _PAGE_USER)
++#define PAGE_WRITE (_PAGE_FLAGS_WRITE | _PAGE_USER)
++#define PAGE_KERNEL _PAGE_NORMAL(_PAGE_FLAGS_WRITE | _PAGE_EXECUTE | _PAGE_GLOBAL)
++#define PAGE_KERNEL_RO _PAGE_NORMAL(_PAGE_FLAGS_READ | _PAGE_EXECUTE | _PAGE_GLOBAL)
++
++#define _PAGE_P(x) _PAGE_NORMAL((x) & ~(_PAGE_RW | _PAGE_DIRTY))
++#define _PAGE_S(x) _PAGE_NORMAL(x)
++
++#define PAGE_COPY _PAGE_P(PAGE_WRITE | PAGE_READ)
++
++#ifndef __ASSEMBLY__
++/*
++ * The hardware supports flags for write- and execute access. Read is
++ * always allowed if the page is loaded into the TLB, so the "-w-",
++ * "--x" and "-wx" mappings are implemented as "rw-", "r-x" and "rwx",
++ * respectively.
++ *
++ * The "---" case is handled by software; the page will simply not be
++ * loaded into the TLB if the page type is _PAGE_TYPE_NONE.
++ */
++
++#define __P000 __pgprot(PAGE_NONE)
++#define __P001 _PAGE_P(PAGE_READ)
++#define __P010 _PAGE_P(PAGE_WRITE)
++#define __P011 _PAGE_P(PAGE_WRITE | PAGE_READ)
++#define __P100 _PAGE_P(PAGE_EXEC)
++#define __P101 _PAGE_P(PAGE_EXEC | PAGE_READ)
++#define __P110 _PAGE_P(PAGE_EXEC | PAGE_WRITE)
++#define __P111 _PAGE_P(PAGE_EXEC | PAGE_WRITE | PAGE_READ)
++
++#define __S000 __pgprot(PAGE_NONE)
++#define __S001 _PAGE_S(PAGE_READ)
++#define __S010 _PAGE_S(PAGE_WRITE)
++#define __S011 _PAGE_S(PAGE_WRITE | PAGE_READ)
++#define __S100 _PAGE_S(PAGE_EXEC)
++#define __S101 _PAGE_S(PAGE_EXEC | PAGE_READ)
++#define __S110 _PAGE_S(PAGE_EXEC | PAGE_WRITE)
++#define __S111 _PAGE_S(PAGE_EXEC | PAGE_WRITE | PAGE_READ)
++
++#define pte_none(x) (!pte_val(x))
++#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)
++
++/*
++ * The following only work if pte_present() is true.
++ * Undefined behaviour if not..
++ */
++static inline int pte_read(pte_t pte)
++{
++ return pte_val(pte) & _PAGE_USER;
++}
++static inline int pte_write(pte_t pte)
++{
++ return pte_val(pte) & _PAGE_RW;
++}
++static inline int pte_exec(pte_t pte)
++{
++ return pte_val(pte) & _PAGE_EXECUTE;
++}
++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;
++}
++
++/*
++ * The following only work if pte_present() is not true.
++ */
++static inline int pte_file(pte_t pte)
++{
++ return pte_val(pte) & _PAGE_FILE;
++}
++
++/* Mutator functions for PTE bits */
++static inline pte_t pte_rdprotect(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_USER));
++ return pte;
++}
++static inline pte_t pte_wrprotect(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_RW));
++ return pte;
++}
++static inline pte_t pte_exprotect(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_EXECUTE));
++ return pte;
++}
++static inline pte_t pte_mkclean(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_DIRTY));
++ return pte;
++}
++static inline pte_t pte_mkold(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_ACCESSED));
++ return pte;
++}
++static inline pte_t pte_mkread(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) | _PAGE_USER));
++ return pte;
++}
++static inline pte_t pte_mkwrite(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) | _PAGE_RW));
++ return pte;
++}
++static inline pte_t pte_mkexec(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) | _PAGE_EXECUTE));
++ return pte;
++}
++static inline pte_t pte_mkdirty(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) | _PAGE_DIRTY));
++ return pte;
++}
++static inline pte_t pte_mkyoung(pte_t pte)
++{
++ set_pte(&pte, __pte(pte_val(pte) | _PAGE_ACCESSED));
++ return pte;
++}
++
++#define pmd_none(x) (!pmd_val(x))
++#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
++#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
++#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) \
++ != _KERNPG_TABLE)
++
++/*
++ * Permanent address of a page. We don't support highmem, so this is
++ * trivial.
++ */
++#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
++#define pte_page(x) phys_to_page(pte_val(x) & PTE_PHYS_MASK)
++
++/*
++ * Mark the prot value as uncacheable and unbufferable
++ */
++#define pgprot_noncached(prot) \
++ __pgprot(pgprot_val(prot) & ~(_PAGE_BUFFER | _PAGE_CACHABLE))
++
++/*
++ * Mark the prot value as uncacheable but bufferable
++ */
++#define pgprot_writecombine(prot) \
++ __pgprot((pgprot_val(prot) & ~_PAGE_CACHABLE) | _PAGE_BUFFER)
++
++/*
++ * Conversion functions: convert a page and protection to a page entry,
++ * and a page entry and page directory to the page they refer to.
++ *
++ * extern pte_t mk_pte(struct page *page, pgprot_t pgprot)
++ */
++#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
++
++static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
++{
++ set_pte(&pte, __pte((pte_val(pte) & _PAGE_CHG_MASK)
++ | 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) (phys_to_page(pmd_val(pmd)))
++
++/* to find an entry in a page-table-directory. */
++#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
++#define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address))
++#define pgd_offset_current(address) \
++ ((pgd_t *)__mfsr(SYSREG_PTBR) + pgd_index(address))
++
++/* to find an entry in a kernel page-table-directory */
++#define pgd_offset_k(address) pgd_offset(&init_mm, address)
++
++/* Find an entry in the third-level page table.. */
++#define pte_index(address) \
++ ((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
++#define pte_offset(dir, address) \
++ ((pte_t *) pmd_page_kernel(*(dir)) + pte_index(address))
++#define pte_offset_kernel(dir, address) \
++ ((pte_t *) pmd_page_kernel(*(dir)) + pte_index(address))
++#define pte_offset_map(dir, address) pte_offset_kernel(dir, address)
++#define pte_offset_map_nested(dir, address) pte_offset_kernel(dir, address)
++#define pte_unmap(pte) do { } while (0)
++#define pte_unmap_nested(pte) do { } while (0)
++
++struct vm_area_struct;
++extern void update_mmu_cache(struct vm_area_struct * vma,
++ unsigned long address, pte_t pte);
++
++/*
++ * Encode and decode a swap entry
++ *
++ * Constraints:
++ * _PAGE_FILE at bit 0
++ * _PAGE_TYPE_* at bits 2-3 (for emulating _PAGE_PROTNONE)
++ * _PAGE_PRESENT at bit 10
++ *
++ * We encode the type into bits 4-9 and offset into bits 11-31. This
++ * gives us a 21 bits offset, or 2**21 * 4K = 8G usable swap space per
++ * device, and 64 possible types.
++ *
++ * NOTE: We should set ZEROs at the position of _PAGE_PRESENT
++ * and _PAGE_PROTNONE bits
++ */
++#define __swp_type(x) (((x).val >> 4) & 0x3f)
++#define __swp_offset(x) ((x).val >> 11)
++#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 4) | ((offset) << 11) })
++#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
++#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
++
++/*
++ * Encode and decode a nonlinear file mapping entry. We have to
++ * preserve _PAGE_FILE and _PAGE_PRESENT here. _PAGE_TYPE_* isn't
++ * necessary, since _PAGE_FILE implies !_PAGE_PROTNONE (?)
++ */
++#define PTE_FILE_MAX_BITS 30
++#define pte_to_pgoff(pte) (((pte_val(pte) >> 1) & 0x1ff) \
++ | ((pte_val(pte) >> 11) << 9))
++#define pgoff_to_pte(off) ((pte_t) { ((((off) & 0x1ff) << 1) \
++ | (((off) >> 9) << 11) \
++ | _PAGE_FILE) })
++
++typedef pte_t *pte_addr_t;
++
++#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)
++
++/* No page table caches to initialize (?) */
++#define pgtable_cache_init() do { } while(0)
++
++#include <asm-generic/pgtable.h>
++
++#endif /* !__ASSEMBLY__ */
++
++#endif /* __ASM_AVR32_PGTABLE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/poll.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/poll.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,27 @@
++#ifndef __ASM_AVR32_POLL_H
++#define __ASM_AVR32_POLL_H
++
++/* These are specified by iBCS2 */
++#define POLLIN 0x0001
++#define POLLPRI 0x0002
++#define POLLOUT 0x0004
++#define POLLERR 0x0008
++#define POLLHUP 0x0010
++#define POLLNVAL 0x0020
++
++/* The rest seem to be more-or-less nonstandard. Check them! */
++#define POLLRDNORM 0x0040
++#define POLLRDBAND 0x0080
++#define POLLWRNORM 0x0100
++#define POLLWRBAND 0x0200
++#define POLLMSG 0x0400
++#define POLLREMOVE 0x1000
++#define POLLRDHUP 0x2000
++
++struct pollfd {
++ int fd;
++ short events;
++ short revents;
++};
++
++#endif /* __ASM_AVR32_POLL_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/posix_types.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/posix_types.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,129 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_POSIX_TYPES_H
++#define __ASM_AVR32_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 int __kernel_uid_t;
++typedef unsigned int __kernel_gid_t;
++typedef unsigned long __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 {
++#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__)
++
++#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__) */
++
++#endif /* __ASM_AVR32_POSIX_TYPES_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/processor.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/processor.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,147 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_PROCESSOR_H
++#define __ASM_AVR32_PROCESSOR_H
++
++#include <asm/page.h>
++#include <asm/cache.h>
++
++#define TASK_SIZE 0x80000000
++
++#ifndef __ASSEMBLY__
++
++static inline void *current_text_addr(void)
++{
++ register void *pc asm("pc");
++ return pc;
++}
++
++enum arch_type {
++ ARCH_AVR32A,
++ ARCH_AVR32B,
++ ARCH_MAX
++};
++
++enum cpu_type {
++ CPU_MORGAN,
++ CPU_AT32AP,
++ CPU_MAX
++};
++
++enum tlb_config {
++ TLB_NONE,
++ TLB_SPLIT,
++ TLB_UNIFIED,
++ TLB_INVALID
++};
++
++struct avr32_cpuinfo {
++ struct clk *clk;
++ unsigned long loops_per_jiffy;
++ enum arch_type arch_type;
++ enum cpu_type cpu_type;
++ unsigned short arch_revision;
++ unsigned short cpu_revision;
++ enum tlb_config tlb_config;
++
++ struct cache_info icache;
++ struct cache_info dcache;
++};
++
++extern struct avr32_cpuinfo boot_cpu_data;
++
++#ifdef CONFIG_SMP
++extern struct avr32_cpuinfo cpu_data[];
++#define current_cpu_data cpu_data[smp_processor_id()]
++#else
++#define cpu_data (&boot_cpu_data)
++#define current_cpu_data boot_cpu_data
++#endif
++
++/* This decides where the kernel will search for a free chunk of vm
++ * space during mmap's
++ */
++#define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
++
++#define cpu_relax() barrier()
++#define cpu_sync_pipeline() asm volatile("sub pc, -2" : : : "memory")
++
++struct cpu_context {
++ unsigned long sr;
++ unsigned long pc;
++ unsigned long ksp; /* Kernel stack pointer */
++ unsigned long r7;
++ unsigned long r6;
++ unsigned long r5;
++ unsigned long r4;
++ unsigned long r3;
++ unsigned long r2;
++ unsigned long r1;
++ unsigned long r0;
++};
++
++/* This struct contains the CPU context as stored by switch_to() */
++struct thread_struct {
++ struct cpu_context cpu_context;
++ unsigned long single_step_addr;
++ u16 single_step_insn;
++};
++
++#define INIT_THREAD { \
++ .cpu_context = { \
++ .ksp = sizeof(init_stack) + (long)&init_stack, \
++ }, \
++}
++
++/*
++ * Do necessary setup to start up a newly executed thread.
++ */
++#define start_thread(regs, new_pc, new_sp) \
++ do { \
++ set_fs(USER_DS); \
++ memset(regs, 0, sizeof(*regs)); \
++ regs->sr = MODE_USER; \
++ regs->pc = new_pc & ~1; \
++ regs->sp = new_sp; \
++ } while(0)
++
++struct task_struct;
++
++/* Free all resources held by a thread */
++extern void release_thread(struct task_struct *);
++
++/* Create a kernel thread without removing it from tasklists */
++extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
++
++/* Prepare to copy thread state - unlazy all lazy status */
++#define prepare_to_copy(tsk) do { } while(0)
++
++/* Return saved PC of a blocked thread */
++#define thread_saved_pc(tsk) ((tsk)->thread.cpu_context.pc)
++
++struct pt_regs;
++void show_trace(struct task_struct *task, unsigned long *stack,
++ struct pt_regs *regs);
++
++extern unsigned long get_wchan(struct task_struct *p);
++
++#define KSTK_EIP(tsk) ((tsk)->thread.cpu_context.pc)
++#define KSTK_ESP(tsk) ((tsk)->thread.cpu_context.ksp)
++
++#define ARCH_HAS_PREFETCH
++
++static inline void prefetch(const void *x)
++{
++ const char *c = x;
++ asm volatile("pref %0" : : "r"(c));
++}
++#define PREFETCH_STRIDE L1_CACHE_BYTES
++
++#endif /* __ASSEMBLY__ */
++
++#endif /* __ASM_AVR32_PROCESSOR_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/ptrace.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/ptrace.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,154 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_PTRACE_H
++#define __ASM_AVR32_PTRACE_H
++
++#define PTRACE_GETREGS 12
++#define PTRACE_SETREGS 13
++
++/*
++ * Status Register bits
++ */
++#define SR_H 0x40000000
++#define SR_R 0x20000000
++#define SR_J 0x10000000
++#define SR_DM 0x08000000
++#define SR_D 0x04000000
++#define MODE_NMI 0x01c00000
++#define MODE_EXCEPTION 0x01800000
++#define MODE_INT3 0x01400000
++#define MODE_INT2 0x01000000
++#define MODE_INT1 0x00c00000
++#define MODE_INT0 0x00800000
++#define MODE_SUPERVISOR 0x00400000
++#define MODE_USER 0x00000000
++#define MODE_MASK 0x01c00000
++#define SR_EM 0x00200000
++#define SR_I3M 0x00100000
++#define SR_I2M 0x00080000
++#define SR_I1M 0x00040000
++#define SR_I0M 0x00020000
++#define SR_GM 0x00010000
++
++#define SR_H_BIT 30
++#define SR_R_BIT 29
++#define SR_J_BIT 28
++#define SR_DM_BIT 27
++#define SR_D_BIT 26
++#define MODE_SHIFT 22
++#define SR_EM_BIT 21
++#define SR_I3M_BIT 20
++#define SR_I2M_BIT 19
++#define SR_I1M_BIT 18
++#define SR_I0M_BIT 17
++#define SR_GM_BIT 16
++
++/* The user-visible part */
++#define SR_L 0x00000020
++#define SR_Q 0x00000010
++#define SR_V 0x00000008
++#define SR_N 0x00000004
++#define SR_Z 0x00000002
++#define SR_C 0x00000001
++
++#define SR_L_BIT 5
++#define SR_Q_BIT 4
++#define SR_V_BIT 3
++#define SR_N_BIT 2
++#define SR_Z_BIT 1
++#define SR_C_BIT 0
++
++/*
++ * The order is defined by the stmts instruction. r0 is stored first,
++ * so it gets the highest address.
++ *
++ * Registers 0-12 are general-purpose registers (r12 is normally used for
++ * the function return value).
++ * Register 13 is the stack pointer
++ * Register 14 is the link register
++ * Register 15 is the program counter (retrieved from the RAR sysreg)
++ */
++#define FRAME_SIZE_FULL 72
++#define REG_R12_ORIG 68
++#define REG_R0 64
++#define REG_R1 60
++#define REG_R2 56
++#define REG_R3 52
++#define REG_R4 48
++#define REG_R5 44
++#define REG_R6 40
++#define REG_R7 36
++#define REG_R8 32
++#define REG_R9 28
++#define REG_R10 24
++#define REG_R11 20
++#define REG_R12 16
++#define REG_SP 12
++#define REG_LR 8
++
++#define FRAME_SIZE_MIN 8
++#define REG_PC 4
++#define REG_SR 0
++
++#ifndef __ASSEMBLY__
++struct pt_regs {
++ /* These are always saved */
++ unsigned long sr;
++ unsigned long pc;
++
++ /* These are sometimes saved */
++ unsigned long lr;
++ unsigned long sp;
++ unsigned long r12;
++ unsigned long r11;
++ unsigned long r10;
++ unsigned long r9;
++ unsigned long r8;
++ unsigned long r7;
++ unsigned long r6;
++ unsigned long r5;
++ unsigned long r4;
++ unsigned long r3;
++ unsigned long r2;
++ unsigned long r1;
++ unsigned long r0;
++
++ /* Only saved on system call */
++ unsigned long r12_orig;
++};
++
++#ifdef __KERNEL__
++# define user_mode(regs) (((regs)->sr & MODE_MASK) == MODE_USER)
++extern void show_regs (struct pt_regs *);
++
++static __inline__ int valid_user_regs(struct pt_regs *regs)
++{
++ /*
++ * Some of the Java bits might be acceptable if/when we
++ * implement some support for that stuff...
++ */
++ if ((regs->sr & 0xffff0000) == 0)
++ return 1;
++
++ /*
++ * Force status register flags to be sane and report this
++ * illegal behaviour...
++ */
++ regs->sr &= 0x0000ffff;
++ return 0;
++}
++
++#define instruction_pointer(regs) ((regs)->pc)
++
++#define profile_pc(regs) instruction_pointer(regs)
++
++#endif /* __KERNEL__ */
++
++#endif /* ! __ASSEMBLY__ */
++
++#endif /* __ASM_AVR32_PTRACE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/resource.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/resource.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_RESOURCE_H
++#define __ASM_AVR32_RESOURCE_H
++
++#include <asm-generic/resource.h>
++
++#endif /* __ASM_AVR32_RESOURCE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/scatterlist.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/scatterlist.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,21 @@
++#ifndef __ASM_AVR32_SCATTERLIST_H
++#define __ASM_AVR32_SCATTERLIST_H
++
++struct scatterlist {
++ struct page *page;
++ unsigned int 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.
++ */
++#define sg_dma_address(sg) ((sg)->dma_address)
++#define sg_dma_len(sg) ((sg)->length)
++
++#define ISA_DMA_THRESHOLD (0xffffffff)
++
++#endif /* __ASM_AVR32_SCATTERLIST_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/sections.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/sections.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_SECTIONS_H
++#define __ASM_AVR32_SECTIONS_H
++
++#include <asm-generic/sections.h>
++
++#endif /* __ASM_AVR32_SECTIONS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/semaphore.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/semaphore.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,109 @@
++/*
++ * SMP- and interrupt-safe semaphores.
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * Based on include/asm-i386/semaphore.h
++ * Copyright (C) 1996 Linus Torvalds
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_SEMAPHORE_H
++#define __ASM_AVR32_SEMAPHORE_H
++
++#include <linux/linkage.h>
++
++#include <asm/system.h>
++#include <asm/atomic.h>
++#include <linux/wait.h>
++#include <linux/rwsem.h>
++
++struct semaphore {
++ atomic_t count;
++ int sleepers;
++ wait_queue_head_t wait;
++};
++
++#define __SEMAPHORE_INITIALIZER(name, n) \
++{ \
++ .count = ATOMIC_INIT(n), \
++ .wait = __WAIT_QUEUE_HEAD_INITIALIZER((name).wait) \
++}
++
++#define __DECLARE_SEMAPHORE_GENERIC(name,count) \
++ struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
++
++#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
++#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
++
++static inline void sema_init (struct semaphore *sem, int val)
++{
++ atomic_set(&sem->count, val);
++ sem->sleepers = 0;
++ init_waitqueue_head(&sem->wait);
++}
++
++static inline void init_MUTEX (struct semaphore *sem)
++{
++ sema_init(sem, 1);
++}
++
++static inline void init_MUTEX_LOCKED (struct semaphore *sem)
++{
++ sema_init(sem, 0);
++}
++
++void __down(struct semaphore * sem);
++int __down_interruptible(struct semaphore * sem);
++void __up(struct semaphore * sem);
++
++/*
++ * This is ugly, but we want the default case to fall through.
++ * "__down_failed" is a special asm handler that calls the C
++ * routine that actually waits. See arch/i386/kernel/semaphore.c
++ */
++static inline void down(struct semaphore * sem)
++{
++ might_sleep();
++ if (unlikely(atomic_dec_return (&sem->count) < 0))
++ __down (sem);
++}
++
++/*
++ * Interruptible try to acquire a semaphore. If we obtained
++ * it, return zero. If we were interrupted, returns -EINTR
++ */
++static inline int down_interruptible(struct semaphore * sem)
++{
++ int ret = 0;
++
++ might_sleep();
++ if (unlikely(atomic_dec_return (&sem->count) < 0))
++ ret = __down_interruptible (sem);
++ return ret;
++}
++
++/*
++ * Non-blockingly attempt to down() a semaphore.
++ * Returns zero if we acquired it
++ */
++static inline int down_trylock(struct semaphore * sem)
++{
++ return atomic_dec_if_positive(&sem->count) < 0;
++}
++
++/*
++ * Note! This is subtle. We jump to wake people up only if
++ * the semaphore was negative (== somebody was waiting on it).
++ * The default case (no contention) will result in NO
++ * jumps for both down() and up().
++ */
++static inline void up(struct semaphore * sem)
++{
++ if (unlikely(atomic_inc_return (&sem->count) <= 0))
++ __up (sem);
++}
++
++#endif /*__ASM_AVR32_SEMAPHORE_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/sembuf.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/sembuf.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,25 @@
++#ifndef __ASM_AVR32_SEMBUF_H
++#define __ASM_AVR32_SEMBUF_H
++
++/*
++* The semid64_ds structure for AVR32 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_AVR32_SEMBUF_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/setup.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/setup.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,141 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * Based on linux/include/asm-arm/setup.h
++ * Copyright (C) 1997-1999 Russel King
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_SETUP_H__
++#define __ASM_AVR32_SETUP_H__
++
++#define COMMAND_LINE_SIZE 256
++
++/* Magic number indicating that a tag table is present */
++#define ATAG_MAGIC 0xa2a25441
++
++#ifndef __ASSEMBLY__
++
++/*
++ * Generic memory range, used by several tags.
++ *
++ * addr is always physical.
++ * size is measured in bytes.
++ * next is for use by the OS, e.g. for grouping regions into
++ * linked lists.
++ */
++struct tag_mem_range {
++ u32 addr;
++ u32 size;
++ struct tag_mem_range * next;
++};
++
++/* The list ends with an ATAG_NONE node. */
++#define ATAG_NONE 0x00000000
++
++struct tag_header {
++ u32 size;
++ u32 tag;
++};
++
++/* The list must start with an ATAG_CORE node */
++#define ATAG_CORE 0x54410001
++
++struct tag_core {
++ u32 flags;
++ u32 pagesize;
++ u32 rootdev;
++};
++
++/* it is allowed to have multiple ATAG_MEM nodes */
++#define ATAG_MEM 0x54410002
++/* ATAG_MEM uses tag_mem_range */
++
++/* command line: \0 terminated string */
++#define ATAG_CMDLINE 0x54410003
++
++struct tag_cmdline {
++ char cmdline[1]; /* this is the minimum size */
++};
++
++/* Ramdisk image (may be compressed) */
++#define ATAG_RDIMG 0x54410004
++/* ATAG_RDIMG uses tag_mem_range */
++
++/* Information about various clocks present in the system */
++#define ATAG_CLOCK 0x54410005
++
++struct tag_clock {
++ u32 clock_id; /* Which clock are we talking about? */
++ u32 clock_flags; /* Special features */
++ u64 clock_hz; /* Clock speed in Hz */
++};
++
++/* The clock types we know about */
++#define CLOCK_BOOTCPU 0
++
++/* Memory reserved for the system (e.g. the bootloader) */
++#define ATAG_RSVD_MEM 0x54410006
++/* ATAG_RSVD_MEM uses tag_mem_range */
++
++/* Ethernet information */
++
++#define ATAG_ETHERNET 0x54410007
++
++struct tag_ethernet {
++ u8 mac_index;
++ u8 mii_phy_addr;
++ u8 hw_address[6];
++};
++
++#define ETH_INVALID_PHY 0xff
++
++struct tag {
++ struct tag_header hdr;
++ union {
++ struct tag_core core;
++ struct tag_mem_range mem_range;
++ struct tag_cmdline cmdline;
++ struct tag_clock clock;
++ struct tag_ethernet ethernet;
++ } u;
++};
++
++struct tagtable {
++ u32 tag;
++ int (*parse)(struct tag *);
++};
++
++#define __tag __attribute_used__ __attribute__((__section__(".taglist")))
++#define __tagtable(tag, fn) \
++ static struct tagtable __tagtable_##fn __tag = { tag, fn }
++
++#define tag_member_present(tag,member) \
++ ((unsigned long)(&((struct tag *)0L)->member + 1) \
++ <= (tag)->hdr.size * 4)
++
++#define tag_next(t) ((struct tag *)((u32 *)(t) + (t)->hdr.size))
++#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
++
++#define for_each_tag(t,base) \
++ for (t = base; t->hdr.size; t = tag_next(t))
++
++extern struct tag_mem_range *mem_phys;
++extern struct tag_mem_range *mem_reserved;
++extern struct tag_mem_range *mem_ramdisk;
++
++extern struct tag *bootloader_tags;
++
++extern void setup_bootmem(void);
++extern void setup_processor(void);
++extern void board_setup_fbmem(unsigned long fbmem_start,
++ unsigned long fbmem_size);
++
++/* Chip-specific hook to enable the use of SDRAM */
++void chip_enable_sdram(void);
++
++#endif /* !__ASSEMBLY__ */
++
++#endif /* __ASM_AVR32_SETUP_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/shmbuf.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/shmbuf.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,42 @@
++#ifndef __ASM_AVR32_SHMBUF_H
++#define __ASM_AVR32_SHMBUF_H
++
++/*
++ * The shmid64_ds structure for i386 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_AVR32_SHMBUF_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/shmparam.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/shmparam.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_SHMPARAM_H
++#define __ASM_AVR32_SHMPARAM_H
++
++#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
++
++#endif /* __ASM_AVR32_SHMPARAM_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/sigcontext.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/sigcontext.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,34 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_SIGCONTEXT_H
++#define __ASM_AVR32_SIGCONTEXT_H
++
++struct sigcontext {
++ unsigned long oldmask;
++
++ /* CPU registers */
++ unsigned long sr;
++ unsigned long pc;
++ unsigned long lr;
++ unsigned long sp;
++ unsigned long r12;
++ unsigned long r11;
++ unsigned long r10;
++ unsigned long r9;
++ unsigned long r8;
++ unsigned long r7;
++ unsigned long r6;
++ unsigned long r5;
++ unsigned long r4;
++ unsigned long r3;
++ unsigned long r2;
++ unsigned long r1;
++ unsigned long r0;
++};
++
++#endif /* __ASM_AVR32_SIGCONTEXT_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/siginfo.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/siginfo.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef _AVR32_SIGINFO_H
++#define _AVR32_SIGINFO_H
++
++#include <asm-generic/siginfo.h>
++
++#endif
+Index: linux-2.6.18-avr32/include/asm-avr32/signal.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/signal.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,168 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_SIGNAL_H
++#define __ASM_AVR32_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_NOCLDSTOP flag to turn off SIGCHLD when children stop.
++ * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
++ * SA_SIGINFO deliver the signal with SIGINFO structs
++ * 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_NODEFER prevents the current signal from being masked in the handler.
++ * SA_RESETHAND clears the handler when the signal is delivered.
++ *
++ * 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_RESTORER 0x04000000
++#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
++
++/*
++ * 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>
++#undef __HAVE_ARCH_SIG_BITOPS
++
++#define ptrace_signal_deliver(regs, cookie) do { } while (0)
++
++#endif /* __KERNEL__ */
++
++#endif
+Index: linux-2.6.18-avr32/include/asm-avr32/socket.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/socket.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,53 @@
++#ifndef __ASM_AVR32_SOCKET_H
++#define __ASM_AVR32_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
++
++#endif /* __ASM_AVR32_SOCKET_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/sockios.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/sockios.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,12 @@
++#ifndef __ASM_AVR32_SOCKIOS_H
++#define __ASM_AVR32_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 */
++
++#endif /* __ASM_AVR32_SOCKIOS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/stat.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/stat.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,79 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_STAT_H
++#define __ASM_AVR32_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;
++};
++
++#define STAT_HAVE_NSEC 1
++
++struct stat64 {
++ unsigned long long st_dev;
++
++ unsigned long long st_ino;
++ unsigned int st_mode;
++ unsigned int st_nlink;
++
++ unsigned long st_uid;
++ unsigned long st_gid;
++
++ unsigned long long st_rdev;
++
++ long long st_size;
++ unsigned long __pad1; /* align 64-bit st_blocks */
++ unsigned long st_blksize;
++
++ unsigned long long st_blocks; /* Number 512-byte blocks allocated. */
++
++ 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 __unused1;
++ unsigned long __unused2;
++};
++
++#endif /* __ASM_AVR32_STAT_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/statfs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/statfs.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_STATFS_H
++#define __ASM_AVR32_STATFS_H
++
++#include <asm-generic/statfs.h>
++
++#endif /* __ASM_AVR32_STATFS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/string.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/string.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,17 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_STRING_H
++#define __ASM_AVR32_STRING_H
++
++#define __HAVE_ARCH_MEMSET
++extern void *memset(void *b, int c, size_t len);
++
++#define __HAVE_ARCH_MEMCPY
++extern void *memcpy(void *to, const void *from, size_t len);
++
++#endif /* __ASM_AVR32_STRING_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/sysreg.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/sysreg.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,332 @@
++/*
++ * AVR32 System Registers
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_SYSREG_H__
++#define __ASM_AVR32_SYSREG_H__
++
++/* sysreg register offsets */
++#define SYSREG_SR 0x0000
++#define SYSREG_EVBA 0x0004
++#define SYSREG_ACBA 0x0008
++#define SYSREG_CPUCR 0x000c
++#define SYSREG_ECR 0x0010
++#define SYSREG_RSR_SUP 0x0014
++#define SYSREG_RSR_INT0 0x0018
++#define SYSREG_RSR_INT1 0x001c
++#define SYSREG_RSR_INT2 0x0020
++#define SYSREG_RSR_INT3 0x0024
++#define SYSREG_RSR_EX 0x0028
++#define SYSREG_RSR_NMI 0x002c
++#define SYSREG_RSR_DBG 0x0030
++#define SYSREG_RAR_SUP 0x0034
++#define SYSREG_RAR_INT0 0x0038
++#define SYSREG_RAR_INT1 0x003c
++#define SYSREG_RAR_INT2 0x0040
++#define SYSREG_RAR_INT3 0x0044
++#define SYSREG_RAR_EX 0x0048
++#define SYSREG_RAR_NMI 0x004c
++#define SYSREG_RAR_DBG 0x0050
++#define SYSREG_JECR 0x0054
++#define SYSREG_JOSP 0x0058
++#define SYSREG_JAVA_LV0 0x005c
++#define SYSREG_JAVA_LV1 0x0060
++#define SYSREG_JAVA_LV2 0x0064
++#define SYSREG_JAVA_LV3 0x0068
++#define SYSREG_JAVA_LV4 0x006c
++#define SYSREG_JAVA_LV5 0x0070
++#define SYSREG_JAVA_LV6 0x0074
++#define SYSREG_JAVA_LV7 0x0078
++#define SYSREG_JTBA 0x007c
++#define SYSREG_JBCR 0x0080
++#define SYSREG_CONFIG0 0x0100
++#define SYSREG_CONFIG1 0x0104
++#define SYSREG_COUNT 0x0108
++#define SYSREG_COMPARE 0x010c
++#define SYSREG_TLBEHI 0x0110
++#define SYSREG_TLBELO 0x0114
++#define SYSREG_PTBR 0x0118
++#define SYSREG_TLBEAR 0x011c
++#define SYSREG_MMUCR 0x0120
++#define SYSREG_TLBARLO 0x0124
++#define SYSREG_TLBARHI 0x0128
++#define SYSREG_PCCNT 0x012c
++#define SYSREG_PCNT0 0x0130
++#define SYSREG_PCNT1 0x0134
++#define SYSREG_PCCR 0x0138
++#define SYSREG_BEAR 0x013c
++
++/* Bitfields in SR */
++#define SYSREG_SR_C_OFFSET 0
++#define SYSREG_SR_C_SIZE 1
++#define SYSREG_Z_OFFSET 1
++#define SYSREG_Z_SIZE 1
++#define SYSREG_SR_N_OFFSET 2
++#define SYSREG_SR_N_SIZE 1
++#define SYSREG_SR_V_OFFSET 3
++#define SYSREG_SR_V_SIZE 1
++#define SYSREG_Q_OFFSET 4
++#define SYSREG_Q_SIZE 1
++#define SYSREG_GM_OFFSET 16
++#define SYSREG_GM_SIZE 1
++#define SYSREG_I0M_OFFSET 17
++#define SYSREG_I0M_SIZE 1
++#define SYSREG_I1M_OFFSET 18
++#define SYSREG_I1M_SIZE 1
++#define SYSREG_I2M_OFFSET 19
++#define SYSREG_I2M_SIZE 1
++#define SYSREG_I3M_OFFSET 20
++#define SYSREG_I3M_SIZE 1
++#define SYSREG_EM_OFFSET 21
++#define SYSREG_EM_SIZE 1
++#define SYSREG_M0_OFFSET 22
++#define SYSREG_M0_SIZE 1
++#define SYSREG_M1_OFFSET 23
++#define SYSREG_M1_SIZE 1
++#define SYSREG_M2_OFFSET 24
++#define SYSREG_M2_SIZE 1
++#define SYSREG_SR_D_OFFSET 26
++#define SYSREG_SR_D_SIZE 1
++#define SYSREG_DM_OFFSET 27
++#define SYSREG_DM_SIZE 1
++#define SYSREG_SR_J_OFFSET 28
++#define SYSREG_SR_J_SIZE 1
++#define SYSREG_R_OFFSET 29
++#define SYSREG_R_SIZE 1
++#define SYSREG_H_OFFSET 30
++#define SYSREG_H_SIZE 1
++
++/* Bitfields in EVBA */
++
++/* Bitfields in ACBA */
++
++/* Bitfields in CPUCR */
++#define SYSREG_BI_OFFSET 0
++#define SYSREG_BI_SIZE 1
++#define SYSREG_BE_OFFSET 1
++#define SYSREG_BE_SIZE 1
++#define SYSREG_FE_OFFSET 2
++#define SYSREG_FE_SIZE 1
++#define SYSREG_RE_OFFSET 3
++#define SYSREG_RE_SIZE 1
++#define SYSREG_IBE_OFFSET 4
++#define SYSREG_IBE_SIZE 1
++#define SYSREG_IEE_OFFSET 5
++#define SYSREG_IEE_SIZE 1
++
++/* Bitfields in ECR */
++#define SYSREG_ECR_OFFSET 0
++#define SYSREG_ECR_SIZE 32
++
++/* Bitfields in RSR_SUP */
++
++/* Bitfields in RSR_INT0 */
++
++/* Bitfields in RSR_INT1 */
++
++/* Bitfields in RSR_INT2 */
++
++/* Bitfields in RSR_INT3 */
++
++/* Bitfields in RSR_EX */
++
++/* Bitfields in RSR_NMI */
++
++/* Bitfields in RSR_DBG */
++
++/* Bitfields in RAR_SUP */
++
++/* Bitfields in RAR_INT0 */
++
++/* Bitfields in RAR_INT1 */
++
++/* Bitfields in RAR_INT2 */
++
++/* Bitfields in RAR_INT3 */
++
++/* Bitfields in RAR_EX */
++
++/* Bitfields in RAR_NMI */
++
++/* Bitfields in RAR_DBG */
++
++/* Bitfields in JECR */
++
++/* Bitfields in JOSP */
++
++/* Bitfields in JAVA_LV0 */
++
++/* Bitfields in JAVA_LV1 */
++
++/* Bitfields in JAVA_LV2 */
++
++/* Bitfields in JAVA_LV3 */
++
++/* Bitfields in JAVA_LV4 */
++
++/* Bitfields in JAVA_LV5 */
++
++/* Bitfields in JAVA_LV6 */
++
++/* Bitfields in JAVA_LV7 */
++
++/* Bitfields in JTBA */
++
++/* Bitfields in JBCR */
++
++/* Bitfields in CONFIG0 */
++#define SYSREG_CONFIG0_D_OFFSET 1
++#define SYSREG_CONFIG0_D_SIZE 1
++#define SYSREG_CONFIG0_S_OFFSET 2
++#define SYSREG_CONFIG0_S_SIZE 1
++#define SYSREG_O_OFFSET 3
++#define SYSREG_O_SIZE 1
++#define SYSREG_P_OFFSET 4
++#define SYSREG_P_SIZE 1
++#define SYSREG_CONFIG0_J_OFFSET 5
++#define SYSREG_CONFIG0_J_SIZE 1
++#define SYSREG_F_OFFSET 6
++#define SYSREG_F_SIZE 1
++#define SYSREG_MMUT_OFFSET 7
++#define SYSREG_MMUT_SIZE 3
++#define SYSREG_AR_OFFSET 10
++#define SYSREG_AR_SIZE 3
++#define SYSREG_AT_OFFSET 13
++#define SYSREG_AT_SIZE 3
++#define SYSREG_PROCESSORREVISION_OFFSET 16
++#define SYSREG_PROCESSORREVISION_SIZE 8
++#define SYSREG_PROCESSORID_OFFSET 24
++#define SYSREG_PROCESSORID_SIZE 8
++
++/* Bitfields in CONFIG1 */
++#define SYSREG_DASS_OFFSET 0
++#define SYSREG_DASS_SIZE 3
++#define SYSREG_DLSZ_OFFSET 3
++#define SYSREG_DLSZ_SIZE 3
++#define SYSREG_DSET_OFFSET 6
++#define SYSREG_DSET_SIZE 4
++#define SYSREG_IASS_OFFSET 10
++#define SYSREG_IASS_SIZE 2
++#define SYSREG_ILSZ_OFFSET 13
++#define SYSREG_ILSZ_SIZE 3
++#define SYSREG_ISET_OFFSET 16
++#define SYSREG_ISET_SIZE 4
++#define SYSREG_DMMUSZ_OFFSET 20
++#define SYSREG_DMMUSZ_SIZE 6
++#define SYSREG_IMMUSZ_OFFSET 26
++#define SYSREG_IMMUSZ_SIZE 6
++
++/* Bitfields in COUNT */
++
++/* Bitfields in COMPARE */
++
++/* Bitfields in TLBEHI */
++#define SYSREG_ASID_OFFSET 0
++#define SYSREG_ASID_SIZE 8
++#define SYSREG_TLBEHI_I_OFFSET 8
++#define SYSREG_TLBEHI_I_SIZE 1
++#define SYSREG_TLBEHI_V_OFFSET 9
++#define SYSREG_TLBEHI_V_SIZE 1
++#define SYSREG_VPN_OFFSET 10
++#define SYSREG_VPN_SIZE 22
++
++/* Bitfields in TLBELO */
++#define SYSREG_W_OFFSET 0
++#define SYSREG_W_SIZE 1
++#define SYSREG_TLBELO_D_OFFSET 1
++#define SYSREG_TLBELO_D_SIZE 1
++#define SYSREG_SZ_OFFSET 2
++#define SYSREG_SZ_SIZE 2
++#define SYSREG_AP_OFFSET 4
++#define SYSREG_AP_SIZE 3
++#define SYSREG_B_OFFSET 7
++#define SYSREG_B_SIZE 1
++#define SYSREG_G_OFFSET 8
++#define SYSREG_G_SIZE 1
++#define SYSREG_TLBELO_C_OFFSET 9
++#define SYSREG_TLBELO_C_SIZE 1
++#define SYSREG_PFN_OFFSET 10
++#define SYSREG_PFN_SIZE 22
++
++/* Bitfields in PTBR */
++
++/* Bitfields in TLBEAR */
++
++/* Bitfields in MMUCR */
++#define SYSREG_E_OFFSET 0
++#define SYSREG_E_SIZE 1
++#define SYSREG_M_OFFSET 1
++#define SYSREG_M_SIZE 1
++#define SYSREG_MMUCR_I_OFFSET 2
++#define SYSREG_MMUCR_I_SIZE 1
++#define SYSREG_MMUCR_N_OFFSET 3
++#define SYSREG_MMUCR_N_SIZE 1
++#define SYSREG_MMUCR_S_OFFSET 4
++#define SYSREG_MMUCR_S_SIZE 1
++#define SYSREG_DLA_OFFSET 8
++#define SYSREG_DLA_SIZE 6
++#define SYSREG_DRP_OFFSET 14
++#define SYSREG_DRP_SIZE 6
++#define SYSREG_ILA_OFFSET 20
++#define SYSREG_ILA_SIZE 6
++#define SYSREG_IRP_OFFSET 26
++#define SYSREG_IRP_SIZE 6
++
++/* Bitfields in TLBARLO */
++
++/* Bitfields in TLBARHI */
++
++/* Bitfields in PCCNT */
++
++/* Bitfields in PCNT0 */
++
++/* Bitfields in PCNT1 */
++
++/* Bitfields in PCCR */
++
++/* Bitfields in BEAR */
++
++/* Constants for ECR */
++#define ECR_UNRECOVERABLE 0
++#define ECR_TLB_MULTIPLE 1
++#define ECR_BUS_ERROR_WRITE 2
++#define ECR_BUS_ERROR_READ 3
++#define ECR_NMI 4
++#define ECR_ADDR_ALIGN_X 5
++#define ECR_PROTECTION_X 6
++#define ECR_DEBUG 7
++#define ECR_ILLEGAL_OPCODE 8
++#define ECR_UNIMPL_INSTRUCTION 9
++#define ECR_PRIVILEGE_VIOLATION 10
++#define ECR_FPE 11
++#define ECR_COPROC_ABSENT 12
++#define ECR_ADDR_ALIGN_R 13
++#define ECR_ADDR_ALIGN_W 14
++#define ECR_PROTECTION_R 15
++#define ECR_PROTECTION_W 16
++#define ECR_DTLB_MODIFIED 17
++#define ECR_TLB_MISS_X 20
++#define ECR_TLB_MISS_R 24
++#define ECR_TLB_MISS_W 28
++
++/* Bit manipulation macros */
++#define SYSREG_BIT(name) (1 << SYSREG_##name##_OFFSET)
++#define SYSREG_BF(name,value) (((value) & ((1 << SYSREG_##name##_SIZE) - 1)) << SYSREG_##name##_OFFSET)
++#define SYSREG_BFEXT(name,value) (((value) >> SYSREG_##name##_OFFSET) & ((1 << SYSREG_##name##_SIZE) - 1))
++#define SYSREG_BFINS(name,value,old) (((old) & ~(((1 << SYSREG_##name##_SIZE) - 1) << SYSREG_##name##_OFFSET)) | SYSREG_BF(name,value))
++
++#ifdef __CHECKER__
++extern unsigned long __builtin_mfsr(unsigned long reg);
++extern void __builtin_mtsr(unsigned long reg, unsigned long value);
++#endif
++
++/* Register access macros */
++#define sysreg_read(reg) __builtin_mfsr(SYSREG_##reg)
++#define sysreg_write(reg, value) __builtin_mtsr(SYSREG_##reg, value)
++
++#endif /* __ASM_AVR32_SYSREG_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/system.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/system.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,155 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_SYSTEM_H
++#define __ASM_AVR32_SYSTEM_H
++
++#include <linux/compiler.h>
++#include <linux/types.h>
++
++#include <asm/ptrace.h>
++#include <asm/sysreg.h>
++
++#define xchg(ptr,x) \
++ ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
++
++#define nop() asm volatile("nop")
++
++#define mb() asm volatile("" : : : "memory")
++#define rmb() mb()
++#define wmb() asm volatile("sync 0" : : : "memory")
++#define read_barrier_depends() do { } while(0)
++#define set_mb(var, value) do { var = value; mb(); } while(0)
++
++/*
++ * Help PathFinder and other Nexus-compliant debuggers keep track of
++ * the current PID by emitting an Ownership Trace Message each time we
++ * switch task.
++ */
++#ifdef CONFIG_OWNERSHIP_TRACE
++#include <asm/ocd.h>
++#define finish_arch_switch(prev) \
++ do { \
++ __mtdr(DBGREG_PID, prev->pid); \
++ __mtdr(DBGREG_PID, current->pid); \
++ } while(0)
++#endif
++
++/*
++ * switch_to(prev, next, last) should switch from task `prev' to task
++ * `next'. `prev' will never be the same as `next'.
++ *
++ * We just delegate everything to the __switch_to assembly function,
++ * which is implemented in arch/avr32/kernel/switch_to.S
++ *
++ * mb() tells GCC not to cache `current' across this call.
++ */
++struct cpu_context;
++struct task_struct;
++extern struct task_struct *__switch_to(struct task_struct *,
++ struct cpu_context *,
++ struct cpu_context *);
++#define switch_to(prev, next, last) \
++ do { \
++ last = __switch_to(prev, &prev->thread.cpu_context + 1, \
++ &next->thread.cpu_context); \
++ } while (0)
++
++#ifdef CONFIG_SMP
++# error "The AVR32 port does not support SMP"
++#else
++# define smp_mb() barrier()
++# define smp_rmb() barrier()
++# define smp_wmb() barrier()
++# define smp_read_barrier_depends() do { } while(0)
++#endif
++
++#include <linux/irqflags.h>
++
++extern void __xchg_called_with_bad_pointer(void);
++
++#ifdef __CHECKER__
++extern unsigned long __builtin_xchg(void *ptr, unsigned long x);
++#endif
++
++#define xchg_u32(val, m) __builtin_xchg((void *)m, val)
++
++static inline unsigned long __xchg(unsigned long x,
++ volatile void *ptr,
++ int size)
++{
++ switch(size) {
++ case 4:
++ return xchg_u32(x, ptr);
++ default:
++ __xchg_called_with_bad_pointer();
++ return x;
++ }
++}
++
++static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old,
++ unsigned long new)
++{
++ __u32 ret;
++
++ asm volatile(
++ "1: ssrf 5\n"
++ " ld.w %[ret], %[m]\n"
++ " cp.w %[ret], %[old]\n"
++ " brne 2f\n"
++ " stcond %[m], %[new]\n"
++ " brne 1b\n"
++ "2:\n"
++ : [ret] "=&r"(ret), [m] "=m"(*m)
++ : "m"(m), [old] "ir"(old), [new] "r"(new)
++ : "memory", "cc");
++ return ret;
++}
++
++extern unsigned long __cmpxchg_u64_unsupported_on_32bit_kernels(
++ volatile int * m, unsigned long old, unsigned long new);
++#define __cmpxchg_u64 __cmpxchg_u64_unsupported_on_32bit_kernels
++
++/* This function doesn't exist, so you'll get a linker error
++ if something tries to do an invalid cmpxchg(). */
++extern void __cmpxchg_called_with_bad_pointer(void);
++
++#define __HAVE_ARCH_CMPXCHG 1
++
++static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
++ unsigned long new, int size)
++{
++ switch (size) {
++ case 4:
++ return __cmpxchg_u32(ptr, old, new);
++ case 8:
++ return __cmpxchg_u64(ptr, old, new);
++ }
++
++ __cmpxchg_called_with_bad_pointer();
++ return old;
++}
++
++#define cmpxchg(ptr, old, new) \
++ ((typeof(*(ptr)))__cmpxchg((ptr), (unsigned long)(old), \
++ (unsigned long)(new), \
++ sizeof(*(ptr))))
++
++struct pt_regs;
++extern void __die(const char *, struct pt_regs *, unsigned long,
++ const char *, const char *, unsigned long);
++extern void __die_if_kernel(const char *, struct pt_regs *, unsigned long,
++ const char *, const char *, unsigned long);
++
++#define die(msg, regs, err) \
++ __die(msg, regs, err, __FILE__ ":", __FUNCTION__, __LINE__)
++#define die_if_kernel(msg, regs, err) \
++ __die_if_kernel(msg, regs, err, __FILE__ ":", __FUNCTION__, __LINE__)
++
++#define arch_align_stack(x) (x)
++
++#endif /* __ASM_AVR32_SYSTEM_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/termbits.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/termbits.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,173 @@
++#ifndef __ASM_AVR32_TERMBITS_H
++#define __ASM_AVR32_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 */
++};
++
++/* 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 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 */
++
++/* 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_AVR32_TERMBITS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/termios.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/termios.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,80 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_TERMIOS_H
++#define __ASM_AVR32_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 */
++};
++
++/* 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 /* synchronous PPP */
++#define N_HCI 15 /* Bluetooth HCI UART */
++
++#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"
++
++#include <asm-generic/termios.h>
++
++#endif /* __KERNEL__ */
++
++#endif /* __ASM_AVR32_TERMIOS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/thread_info.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/thread_info.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,106 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_THREAD_INFO_H
++#define __ASM_AVR32_THREAD_INFO_H
++
++#include <asm/page.h>
++
++#define THREAD_SIZE_ORDER 1
++#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)
++
++#ifndef __ASSEMBLY__
++#include <asm/types.h>
++
++struct task_struct;
++struct exec_domain;
++
++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;
++ __s32 preempt_count; /* 0 => preemptable, <0 => BUG */
++ struct restart_block restart_block;
++ __u8 supervisor_stack[0];
++};
++
++#define INIT_THREAD_INFO(tsk) \
++{ \
++ .task = &tsk, \
++ .exec_domain = &default_exec_domain, \
++ .flags = 0, \
++ .cpu = 0, \
++ .preempt_count = 1, \
++ .restart_block = { \
++ .fn = do_no_restart_syscall \
++ } \
++}
++
++#define init_thread_info (init_thread_union.thread_info)
++#define init_stack (init_thread_union.stack)
++
++/*
++ * Get the thread information struct from C.
++ * We do the usual trick and use the lower end of the stack for this
++ */
++static inline struct thread_info *current_thread_info(void)
++{
++ unsigned long addr = ~(THREAD_SIZE - 1);
++
++ asm("and %0, sp" : "=r"(addr) : "0"(addr));
++ return (struct thread_info *)addr;
++}
++
++/* thread information allocation */
++#define alloc_thread_info(ti) \
++ ((struct thread_info *) __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER))
++#define free_thread_info(ti) free_pages((unsigned long)(ti), 1)
++#define get_thread_info(ti) get_task_struct((ti)->task)
++#define put_thread_info(ti) put_task_struct((ti)->task)
++
++#endif /* !__ASSEMBLY__ */
++
++#define PREEMPT_ACTIVE 0x40000000
++
++/*
++ * 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_POLLING_NRFLAG 4 /* true if poll_idle() is polling
++ TIF_NEED_RESCHED */
++#define TIF_BREAKPOINT 5 /* true if we should break after return */
++#define TIF_SINGLE_STEP 6 /* single step after next break */
++#define TIF_MEMDIE 7
++#define TIF_RESTORE_SIGMASK 8 /* restore signal mask in do_signal */
++#define TIF_USERSPACE 31 /* true if FS sets userspace */
++
++#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_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
++#define _TIF_BREAKPOINT (1 << TIF_BREAKPOINT)
++#define _TIF_SINGLE_STEP (1 << TIF_SINGLE_STEP)
++#define _TIF_MEMDIE (1 << TIF_MEMDIE)
++#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)
++
++/* XXX: These two masks must never span more than 16 bits! */
++/* work to do on interrupt/exception return */
++#define _TIF_WORK_MASK 0x0000013e
++/* work to do on any return to userspace */
++#define _TIF_ALLWORK_MASK 0x0000013f
++/* work to do on return from debug mode */
++#define _TIF_DBGWORK_MASK 0x0000017e
++
++#endif /* __ASM_AVR32_THREAD_INFO_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/timex.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/timex.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,40 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_TIMEX_H
++#define __ASM_AVR32_TIMEX_H
++
++/*
++ * This is the frequency of the timer used for Linux's timer interrupt.
++ * The value should be defined as accurate as possible or under certain
++ * circumstances Linux timekeeping might become inaccurate or fail.
++ *
++ * For many system the exact clockrate of the timer isn't known but due to
++ * the way this value is used we can get away with a wrong value as long
++ * as this value is:
++ *
++ * - a multiple of HZ
++ * - a divisor of the actual rate
++ *
++ * 500000 is a good such cheat value.
++ *
++ * The obscure number 1193182 is the same as used by the original i8254
++ * time in legacy PC hardware; the chip is never found in AVR32 systems.
++ */
++#define CLOCK_TICK_RATE 500000 /* Underlying HZ */
++
++typedef unsigned long cycles_t;
++
++static inline cycles_t get_cycles (void)
++{
++ return 0;
++}
++
++extern int read_current_timer(unsigned long *timer_value);
++#define ARCH_HAS_READ_CURRENT_TIMER 1
++
++#endif /* __ASM_AVR32_TIMEX_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/tlb.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/tlb.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,32 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_TLB_H
++#define __ASM_AVR32_TLB_H
++
++#define tlb_start_vma(tlb, vma) \
++ flush_cache_range(vma, vma->vm_start, vma->vm_end)
++
++#define tlb_end_vma(tlb, vma) \
++ flush_tlb_range(vma, vma->vm_start, vma->vm_end)
++
++#define __tlb_remove_tlb_entry(tlb, pte, address) do { } while(0)
++
++/*
++ * Flush whole TLB for MM
++ */
++#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)
++
++#include <asm-generic/tlb.h>
++
++/*
++ * For debugging purposes
++ */
++extern void show_dtlb_entry(unsigned int index);
++extern void dump_dtlb(void);
++
++#endif /* __ASM_AVR32_TLB_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/tlbflush.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/tlbflush.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,40 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_TLBFLUSH_H
++#define __ASM_AVR32_TLBFLUSH_H
++
++#include <asm/mmu.h>
++
++/*
++ * TLB flushing:
++ *
++ * - flush_tlb() flushes the current mm struct TLBs
++ * - flush_tlb_all() flushes all processes' TLB entries
++ * - flush_tlb_mm(mm) flushes the specified mm context TLBs
++ * - flush_tlb_page(vma, vmaddr) flushes one page
++ * - flush_tlb_range(vma, start, end) flushes a range of pages
++ * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
++ * - flush_tlb_pgtables(mm, start, end) flushes a range of page tables
++ */
++extern void flush_tlb(void);
++extern void flush_tlb_all(void);
++extern void flush_tlb_mm(struct mm_struct *mm);
++extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
++ unsigned long end);
++extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
++extern void __flush_tlb_page(unsigned long asid, unsigned long page);
++
++static inline void flush_tlb_pgtables(struct mm_struct *mm,
++ unsigned long start, unsigned long end)
++{
++ /* Nothing to do */
++}
++
++extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
++
++#endif /* __ASM_AVR32_TLBFLUSH_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/topology.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/topology.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef __ASM_AVR32_TOPOLOGY_H
++#define __ASM_AVR32_TOPOLOGY_H
++
++#include <asm-generic/topology.h>
++
++#endif /* __ASM_AVR32_TOPOLOGY_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/traps.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/traps.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,23 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_TRAPS_H
++#define __ASM_AVR32_TRAPS_H
++
++#include <linux/list.h>
++
++struct undef_hook {
++ struct list_head node;
++ u32 insn_mask;
++ u32 insn_val;
++ int (*fn)(struct pt_regs *regs, u32 insn);
++};
++
++void register_undef_hook(struct undef_hook *hook);
++void unregister_undef_hook(struct undef_hook *hook);
++
++#endif /* __ASM_AVR32_TRAPS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/types.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/types.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,70 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_TYPES_H
++#define __ASM_AVR32_TYPES_H
++
++#ifndef __ASSEMBLY__
++
++typedef unsigned short umode_t;
++
++/*
++ * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
++ * header files exported to user space
++ */
++typedef __signed__ char __s8;
++typedef unsigned char __u8;
++
++typedef __signed__ short __s16;
++typedef unsigned short __u16;
++
++typedef __signed__ int __s32;
++typedef unsigned int __u32;
++
++#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
++typedef __signed__ long long __s64;
++typedef unsigned long long __u64;
++#endif
++
++#endif /* __ASSEMBLY__ */
++
++/*
++ * These aren't exported outside the kernel to avoid name space clashes
++ */
++#ifdef __KERNEL__
++
++#define BITS_PER_LONG 32
++
++#ifndef __ASSEMBLY__
++
++typedef signed char s8;
++typedef unsigned char u8;
++
++typedef signed short s16;
++typedef unsigned short u16;
++
++typedef signed int s32;
++typedef unsigned int u32;
++
++typedef signed long long s64;
++typedef unsigned long long u64;
++
++/* Dma addresses are 32-bits wide. */
++
++typedef u32 dma_addr_t;
++
++#ifdef CONFIG_LBD
++typedef u64 sector_t;
++#define HAVE_SECTOR_T
++#endif
++
++#endif /* __ASSEMBLY__ */
++
++#endif /* __KERNEL__ */
++
++
++#endif /* __ASM_AVR32_TYPES_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/uaccess.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/uaccess.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,335 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_UACCESS_H
++#define __ASM_AVR32_UACCESS_H
++
++#include <linux/errno.h>
++#include <linux/sched.h>
++
++#define VERIFY_READ 0
++#define VERIFY_WRITE 1
++
++typedef struct {
++ unsigned int is_user_space;
++} mm_segment_t;
++
++/*
++ * 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 (Data Segment Register?), these macros are misnamed.
++ */
++#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
++#define segment_eq(a,b) ((a).is_user_space == (b).is_user_space)
++
++#define USER_ADDR_LIMIT 0x80000000
++
++#define KERNEL_DS MAKE_MM_SEG(0)
++#define USER_DS MAKE_MM_SEG(1)
++
++#define get_ds() (KERNEL_DS)
++
++static inline mm_segment_t get_fs(void)
++{
++ return MAKE_MM_SEG(test_thread_flag(TIF_USERSPACE));
++}
++
++static inline void set_fs(mm_segment_t s)
++{
++ if (s.is_user_space)
++ set_thread_flag(TIF_USERSPACE);
++ else
++ clear_thread_flag(TIF_USERSPACE);
++}
++
++/*
++ * Test whether a block of memory is a valid user space address.
++ * Returns 0 if the range is valid, nonzero otherwise.
++ *
++ * We do the following checks:
++ * 1. Is the access from kernel space?
++ * 2. Does (addr + size) set the carry bit?
++ * 3. Is (addr + size) a negative number (i.e. >= 0x80000000)?
++ *
++ * If yes on the first check, access is granted.
++ * If no on any of the others, access is denied.
++ */
++#define __range_ok(addr, size) \
++ (test_thread_flag(TIF_USERSPACE) \
++ && (((unsigned long)(addr) >= 0x80000000) \
++ || ((unsigned long)(size) > 0x80000000) \
++ || (((unsigned long)(addr) + (unsigned long)(size)) > 0x80000000)))
++
++#define access_ok(type, addr, size) (likely(__range_ok(addr, size) == 0))
++
++static inline int
++verify_area(int type, const void __user *addr, unsigned long size)
++{
++ return access_ok(type, addr, size) ? 0 : -EFAULT;
++}
++
++/* Generic arbitrary sized copy. Return the number of bytes NOT copied */
++extern __kernel_size_t __copy_user(void *to, const void *from,
++ __kernel_size_t n);
++
++extern __kernel_size_t copy_to_user(void __user *to, const void *from,
++ __kernel_size_t n);
++extern __kernel_size_t copy_from_user(void *to, const void __user *from,
++ __kernel_size_t n);
++
++static inline __kernel_size_t __copy_to_user(void __user *to, const void *from,
++ __kernel_size_t n)
++{
++ return __copy_user((void __force *)to, from, n);
++}
++static inline __kernel_size_t __copy_from_user(void *to,
++ const void __user *from,
++ __kernel_size_t n)
++{
++ return __copy_user(to, (const void __force *)from, n);
++}
++
++#define __copy_to_user_inatomic __copy_to_user
++#define __copy_from_user_inatomic __copy_from_user
++
++/*
++ * put_user: - Write a simple value into user space.
++ * @x: Value to copy to user space.
++ * @ptr: Destination address, in user space.
++ *
++ * Context: User context only. This function may sleep.
++ *
++ * This macro copies a single simple value from kernel space to user
++ * space. It supports simple types like char and int, but not larger
++ * data types like structures or arrays.
++ *
++ * @ptr must have pointer-to-simple-variable type, and @x must be assignable
++ * to the result of dereferencing @ptr.
++ *
++ * Returns zero on success, or -EFAULT on error.
++ */
++#define put_user(x,ptr) \
++ __put_user_check((x),(ptr),sizeof(*(ptr)))
++
++/*
++ * get_user: - Get a simple variable from user space.
++ * @x: Variable to store result.
++ * @ptr: Source address, in user space.
++ *
++ * Context: User context only. This function may sleep.
++ *
++ * This macro copies a single simple variable from user space to kernel
++ * space. It supports simple types like char and int, but not larger
++ * data types like structures or arrays.
++ *
++ * @ptr must have pointer-to-simple-variable type, and the result of
++ * dereferencing @ptr must be assignable to @x without a cast.
++ *
++ * Returns zero on success, or -EFAULT on error.
++ * On error, the variable @x is set to zero.
++ */
++#define get_user(x,ptr) \
++ __get_user_check((x),(ptr),sizeof(*(ptr)))
++
++/*
++ * __put_user: - Write a simple value into user space, with less checking.
++ * @x: Value to copy to user space.
++ * @ptr: Destination address, in user space.
++ *
++ * Context: User context only. This function may sleep.
++ *
++ * This macro copies a single simple value from kernel space to user
++ * space. It supports simple types like char and int, but not larger
++ * data types like structures or arrays.
++ *
++ * @ptr must have pointer-to-simple-variable type, and @x must be assignable
++ * to the result of dereferencing @ptr.
++ *
++ * Caller must check the pointer with access_ok() before calling this
++ * function.
++ *
++ * Returns zero on success, or -EFAULT on error.
++ */
++#define __put_user(x,ptr) \
++ __put_user_nocheck((x),(ptr),sizeof(*(ptr)))
++
++/*
++ * __get_user: - Get a simple variable from user space, with less checking.
++ * @x: Variable to store result.
++ * @ptr: Source address, in user space.
++ *
++ * Context: User context only. This function may sleep.
++ *
++ * This macro copies a single simple variable from user space to kernel
++ * space. It supports simple types like char and int, but not larger
++ * data types like structures or arrays.
++ *
++ * @ptr must have pointer-to-simple-variable type, and the result of
++ * dereferencing @ptr must be assignable to @x without a cast.
++ *
++ * Caller must check the pointer with access_ok() before calling this
++ * function.
++ *
++ * Returns zero on success, or -EFAULT on error.
++ * On error, the variable @x is set to zero.
++ */
++#define __get_user(x,ptr) \
++ __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
++
++extern int __get_user_bad(void);
++extern int __put_user_bad(void);
++
++#define __get_user_nocheck(x, ptr, size) \
++({ \
++ typeof(*(ptr)) __gu_val = (typeof(*(ptr)) __force)0; \
++ int __gu_err = 0; \
++ \
++ switch (size) { \
++ case 1: __get_user_asm("ub", __gu_val, ptr, __gu_err); break; \
++ case 2: __get_user_asm("uh", __gu_val, ptr, __gu_err); break; \
++ case 4: __get_user_asm("w", __gu_val, ptr, __gu_err); break; \
++ case 8: __get_user_asm("d", __gu_val, ptr, __gu_err); break; \
++ default: __gu_err = __get_user_bad(); break; \
++ } \
++ \
++ x = __gu_val; \
++ __gu_err; \
++})
++
++#define __get_user_check(x, ptr, size) \
++({ \
++ typeof(*(ptr)) __gu_val = (typeof(*(ptr)) __force)0; \
++ const typeof(*(ptr)) __user * __gu_addr = (ptr); \
++ int __gu_err = 0; \
++ \
++ if (access_ok(VERIFY_READ, __gu_addr, size)) { \
++ switch (size) { \
++ case 1: \
++ __get_user_asm("ub", __gu_val, __gu_addr, \
++ __gu_err); \
++ break; \
++ case 2: \
++ __get_user_asm("uh", __gu_val, __gu_addr, \
++ __gu_err); \
++ break; \
++ case 4: \
++ __get_user_asm("w", __gu_val, __gu_addr, \
++ __gu_err); \
++ break; \
++ case 8: \
++ __get_user_asm("d", __gu_val, __gu_addr, \
++ __gu_err); \
++ break; \
++ default: \
++ __gu_err = __get_user_bad(); \
++ break; \
++ } \
++ } else { \
++ __gu_err = -EFAULT; \
++ } \
++ x = __gu_val; \
++ __gu_err; \
++})
++
++#define __get_user_asm(suffix, __gu_val, ptr, __gu_err) \
++ asm volatile( \
++ "1: ld." suffix " %1, %3 \n" \
++ "2: \n" \
++ " .section .fixup, \"ax\" \n" \
++ "3: mov %0, %4 \n" \
++ " rjmp 2b \n" \
++ " .previous \n" \
++ " .section __ex_table, \"a\" \n" \
++ " .long 1b, 3b \n" \
++ " .previous \n" \
++ : "=r"(__gu_err), "=r"(__gu_val) \
++ : "0"(__gu_err), "m"(*(ptr)), "i"(-EFAULT))
++
++#define __put_user_nocheck(x, ptr, size) \
++({ \
++ typeof(*(ptr)) __pu_val; \
++ int __pu_err = 0; \
++ \
++ __pu_val = (x); \
++ switch (size) { \
++ case 1: __put_user_asm("b", ptr, __pu_val, __pu_err); break; \
++ case 2: __put_user_asm("h", ptr, __pu_val, __pu_err); break; \
++ case 4: __put_user_asm("w", ptr, __pu_val, __pu_err); break; \
++ case 8: __put_user_asm("d", ptr, __pu_val, __pu_err); break; \
++ default: __pu_err = __put_user_bad(); break; \
++ } \
++ __pu_err; \
++})
++
++#define __put_user_check(x, ptr, size) \
++({ \
++ typeof(*(ptr)) __pu_val; \
++ typeof(*(ptr)) __user *__pu_addr = (ptr); \
++ int __pu_err = 0; \
++ \
++ __pu_val = (x); \
++ if (access_ok(VERIFY_WRITE, __pu_addr, size)) { \
++ switch (size) { \
++ case 1: \
++ __put_user_asm("b", __pu_addr, __pu_val, \
++ __pu_err); \
++ break; \
++ case 2: \
++ __put_user_asm("h", __pu_addr, __pu_val, \
++ __pu_err); \
++ break; \
++ case 4: \
++ __put_user_asm("w", __pu_addr, __pu_val, \
++ __pu_err); \
++ break; \
++ case 8: \
++ __put_user_asm("d", __pu_addr, __pu_val, \
++ __pu_err); \
++ break; \
++ default: \
++ __pu_err = __put_user_bad(); \
++ break; \
++ } \
++ } else { \
++ __pu_err = -EFAULT; \
++ } \
++ __pu_err; \
++})
++
++#define __put_user_asm(suffix, ptr, __pu_val, __gu_err) \
++ asm volatile( \
++ "1: st." suffix " %1, %3 \n" \
++ "2: \n" \
++ " .section .fixup, \"ax\" \n" \
++ "3: mov %0, %4 \n" \
++ " rjmp 2b \n" \
++ " .previous \n" \
++ " .section __ex_table, \"a\" \n" \
++ " .long 1b, 3b \n" \
++ " .previous \n" \
++ : "=r"(__gu_err), "=m"(*(ptr)) \
++ : "0"(__gu_err), "r"(__pu_val), "i"(-EFAULT))
++
++extern __kernel_size_t clear_user(void __user *addr, __kernel_size_t size);
++extern __kernel_size_t __clear_user(void __user *addr, __kernel_size_t size);
++
++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 *__s, long __n);
++extern long __strnlen_user(const char __user *__s, long __n);
++
++#define strlen_user(s) strnlen_user(s, ~0UL >> 1)
++
++struct exception_table_entry
++{
++ unsigned long insn, fixup;
++};
++
++#endif /* __ASM_AVR32_UACCESS_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/ucontext.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/ucontext.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,12 @@
++#ifndef __ASM_AVR32_UCONTEXT_H
++#define __ASM_AVR32_UCONTEXT_H
++
++struct ucontext {
++ unsigned long uc_flags;
++ struct ucontext * uc_link;
++ stack_t uc_stack;
++ struct sigcontext uc_mcontext;
++ sigset_t uc_sigmask;
++};
++
++#endif /* __ASM_AVR32_UCONTEXT_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/unaligned.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/unaligned.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,25 @@
++#ifndef __ASM_AVR32_UNALIGNED_H
++#define __ASM_AVR32_UNALIGNED_H
++
++/*
++ * AVR32 can handle some unaligned accesses, depending on the
++ * implementation. The AVR32 AP implementation can handle unaligned
++ * words, but halfwords must be halfword-aligned, and doublewords must
++ * be word-aligned.
++ *
++ * TODO: Make all this CPU-specific and optimize.
++ */
++
++#include <linux/string.h>
++
++/* Use memmove here, so gcc does not insert a __builtin_memcpy. */
++
++#define get_unaligned(ptr) \
++ ({ __typeof__(*(ptr)) __tmp; memmove(&__tmp, (ptr), sizeof(*(ptr))); __tmp; })
++
++#define put_unaligned(val, ptr) \
++ ({ __typeof__(*(ptr)) __tmp = (val); \
++ memmove((ptr), &__tmp, sizeof(*(ptr))); \
++ (void)0; })
++
++#endif /* __ASM_AVR32_UNALIGNED_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/unistd.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/unistd.h 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,387 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_UNISTD_H
++#define __ASM_AVR32_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_umask 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_chown 16
++#define __NR_lchown 17
++#define __NR_lseek 18
++#define __NR__llseek 19
++#define __NR_getpid 20
++#define __NR_mount 21
++#define __NR_umount2 22
++#define __NR_setuid 23
++#define __NR_getuid 24
++#define __NR_stime 25
++#define __NR_ptrace 26
++#define __NR_alarm 27
++#define __NR_pause 28
++#define __NR_utime 29
++#define __NR_stat 30
++#define __NR_fstat 31
++#define __NR_lstat 32
++#define __NR_access 33
++#define __NR_chroot 34
++#define __NR_sync 35
++#define __NR_fsync 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_clone 44
++#define __NR_brk 45
++#define __NR_setgid 46
++#define __NR_getgid 47
++#define __NR_getcwd 48
++#define __NR_geteuid 49
++#define __NR_getegid 50
++#define __NR_acct 51
++#define __NR_setfsuid 52
++#define __NR_setfsgid 53
++#define __NR_ioctl 54
++#define __NR_fcntl 55
++#define __NR_setpgid 56
++#define __NR_mremap 57
++#define __NR_setresuid 58
++#define __NR_getresuid 59
++#define __NR_setreuid 60
++#define __NR_setregid 61
++#define __NR_ustat 62
++#define __NR_dup2 63
++#define __NR_getppid 64
++#define __NR_getpgrp 65
++#define __NR_setsid 66
++#define __NR_rt_sigaction 67
++#define __NR_rt_sigreturn 68
++#define __NR_rt_sigprocmask 69
++#define __NR_rt_sigpending 70
++#define __NR_rt_sigtimedwait 71
++#define __NR_rt_sigqueueinfo 72
++#define __NR_rt_sigsuspend 73
++#define __NR_sethostname 74
++#define __NR_setrlimit 75
++#define __NR_getrlimit 76 /* SuS compliant getrlimit */
++#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_fchdir 84
++#define __NR_readlink 85
++#define __NR_pread 86
++#define __NR_pwrite 87
++#define __NR_swapon 88
++#define __NR_reboot 89
++#define __NR_mmap2 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_wait4 98
++#define __NR_statfs 99
++#define __NR_fstatfs 100
++#define __NR_vhangup 101
++#define __NR_sigaltstack 102
++#define __NR_syslog 103
++#define __NR_setitimer 104
++#define __NR_getitimer 105
++#define __NR_swapoff 106
++#define __NR_sysinfo 107
++#define __NR_ipc 108
++#define __NR_sendfile 109
++#define __NR_setdomainname 110
++#define __NR_uname 111
++#define __NR_adjtimex 112
++#define __NR_mprotect 113
++#define __NR_vfork 114
++#define __NR_init_module 115
++#define __NR_delete_module 116
++#define __NR_quotactl 117
++#define __NR_getpgid 118
++#define __NR_bdflush 119
++#define __NR_sysfs 120
++#define __NR_personality 121
++#define __NR_afs_syscall 122 /* Syscall for Andrew File System */
++#define __NR_getdents 123
++#define __NR_flock 124
++#define __NR_msync 125
++#define __NR_readv 126
++#define __NR_writev 127
++#define __NR_getsid 128
++#define __NR_fdatasync 129
++#define __NR__sysctl 130
++#define __NR_mlock 131
++#define __NR_munlock 132
++#define __NR_mlockall 133
++#define __NR_munlockall 134
++#define __NR_sched_setparam 135
++#define __NR_sched_getparam 136
++#define __NR_sched_setscheduler 137
++#define __NR_sched_getscheduler 138
++#define __NR_sched_yield 139
++#define __NR_sched_get_priority_max 140
++#define __NR_sched_get_priority_min 141
++#define __NR_sched_rr_get_interval 142
++#define __NR_nanosleep 143
++#define __NR_poll 144
++#define __NR_nfsservctl 145
++#define __NR_setresgid 146
++#define __NR_getresgid 147
++#define __NR_prctl 148
++#define __NR_socket 149
++#define __NR_bind 150
++#define __NR_connect 151
++#define __NR_listen 152
++#define __NR_accept 153
++#define __NR_getsockname 154
++#define __NR_getpeername 155
++#define __NR_socketpair 156
++#define __NR_send 157
++#define __NR_recv 158
++#define __NR_sendto 159
++#define __NR_recvfrom 160
++#define __NR_shutdown 161
++#define __NR_setsockopt 162
++#define __NR_getsockopt 163
++#define __NR_sendmsg 164
++#define __NR_recvmsg 165
++#define __NR_truncate64 166
++#define __NR_ftruncate64 167
++#define __NR_stat64 168
++#define __NR_lstat64 169
++#define __NR_fstat64 170
++#define __NR_pivot_root 171
++#define __NR_mincore 172
++#define __NR_madvise 173
++#define __NR_getdents64 174
++#define __NR_fcntl64 175
++#define __NR_gettid 176
++#define __NR_readahead 177
++#define __NR_setxattr 178
++#define __NR_lsetxattr 179
++#define __NR_fsetxattr 180
++#define __NR_getxattr 181
++#define __NR_lgetxattr 182
++#define __NR_fgetxattr 183
++#define __NR_listxattr 184
++#define __NR_llistxattr 185
++#define __NR_flistxattr 186
++#define __NR_removexattr 187
++#define __NR_lremovexattr 188
++#define __NR_fremovexattr 189
++#define __NR_tkill 190
++#define __NR_sendfile64 191
++#define __NR_futex 192
++#define __NR_sched_setaffinity 193
++#define __NR_sched_getaffinity 194
++#define __NR_capget 195
++#define __NR_capset 196
++#define __NR_io_setup 197
++#define __NR_io_destroy 198
++#define __NR_io_getevents 199
++#define __NR_io_submit 200
++#define __NR_io_cancel 201
++#define __NR_fadvise64 202
++#define __NR_exit_group 203
++#define __NR_lookup_dcookie 204
++#define __NR_epoll_create 205
++#define __NR_epoll_ctl 206
++#define __NR_epoll_wait 207
++#define __NR_remap_file_pages 208
++#define __NR_set_tid_address 209
++
++#define __NR_timer_create 210
++#define __NR_timer_settime 211
++#define __NR_timer_gettime 212
++#define __NR_timer_getoverrun 213
++#define __NR_timer_delete 214
++#define __NR_clock_settime 215
++#define __NR_clock_gettime 216
++#define __NR_clock_getres 217
++#define __NR_clock_nanosleep 218
++#define __NR_statfs64 219
++#define __NR_fstatfs64 220
++#define __NR_tgkill 221
++ /* 222 reserved for tux */
++#define __NR_utimes 223
++#define __NR_fadvise64_64 224
++
++#define __NR_cacheflush 225
++
++#define __NR_vserver 226
++#define __NR_mq_open 227
++#define __NR_mq_unlink 228
++#define __NR_mq_timedsend 229
++#define __NR_mq_timedreceive 230
++#define __NR_mq_notify 231
++#define __NR_mq_getsetattr 232
++#define __NR_kexec_load 233
++#define __NR_waitid 234
++#define __NR_add_key 235
++#define __NR_request_key 236
++#define __NR_keyctl 237
++#define __NR_ioprio_set 238
++#define __NR_ioprio_get 239
++#define __NR_inotify_init 240
++#define __NR_inotify_add_watch 241
++#define __NR_inotify_rm_watch 242
++#define __NR_openat 243
++#define __NR_mkdirat 244
++#define __NR_mknodat 245
++#define __NR_fchownat 246
++#define __NR_futimesat 247
++#define __NR_fstatat64 248
++#define __NR_unlinkat 249
++#define __NR_renameat 250
++#define __NR_linkat 251
++#define __NR_symlinkat 252
++#define __NR_readlinkat 253
++#define __NR_fchmodat 254
++#define __NR_faccessat 255
++#define __NR_pselect6 256
++#define __NR_ppoll 257
++#define __NR_unshare 258
++#define __NR_set_robust_list 259
++#define __NR_get_robust_list 260
++#define __NR_splice 261
++#define __NR_sync_file_range 262
++#define __NR_tee 263
++#define __NR_vmsplice 264
++
++#define NR_syscalls 265
++
++
++/*
++ * AVR32 calling convention for system calls:
++ * - System call number in r8
++ * - Parameters in r12 and downwards to r9 as well as r6 and r5.
++ * - Return value in r12
++ */
++
++/*
++ * user-visible error numbers are in the range -1 - -124: see
++ * <asm-generic/errno.h>
++ */
++
++#define __syscall_return(type, res) do { \
++ if ((unsigned long)(res) >= (unsigned long)(-125)) { \
++ errno = -(res); \
++ res = -1; \
++ } \
++ return (type) (res); \
++ } while (0)
++
++#ifdef __KERNEL__
++#define __ARCH_WANT_IPC_PARSE_VERSION
++#define __ARCH_WANT_STAT64
++#define __ARCH_WANT_SYS_ALARM
++#define __ARCH_WANT_SYS_GETHOSTNAME
++#define __ARCH_WANT_SYS_PAUSE
++#define __ARCH_WANT_SYS_TIME
++#define __ARCH_WANT_SYS_UTIME
++#define __ARCH_WANT_SYS_WAITPID
++#define __ARCH_WANT_SYS_FADVISE64
++#define __ARCH_WANT_SYS_GETPGRP
++#define __ARCH_WANT_SYS_LLSEEK
++#define __ARCH_WANT_SYS_GETPGRP
++#define __ARCH_WANT_SYS_RT_SIGACTION
++#define __ARCH_WANT_SYS_RT_SIGSUSPEND
++#endif
++
++#if defined(__KERNEL_SYSCALLS__) || defined(__CHECKER__)
++
++#include <linux/types.h>
++#include <linux/linkage.h>
++#include <asm/signal.h>
++
++struct pt_regs;
++
++/*
++ * we need this inline - forking from kernel space will result
++ * in NO COPY ON WRITE (!!!), until an execve is executed. This
++ * is no problem, but for the stack. This is handled by not letting
++ * main() use the stack at all after fork(). Thus, no function
++ * calls - which means inline code for fork too, as otherwise we
++ * would use the stack upon exit from 'fork()'.
++ *
++ * Actually only pause and fork are needed inline, so that there
++ * won't be any messing with the stack from main(), but we define
++ * some others too.
++ */
++static inline int execve(const char *file, char **argv, char **envp)
++{
++ register long scno asm("r8") = __NR_execve;
++ register long sc1 asm("r12") = (long)file;
++ register long sc2 asm("r11") = (long)argv;
++ register long sc3 asm("r10") = (long)envp;
++ int res;
++
++ asm volatile("scall"
++ : "=r"(sc1)
++ : "r"(scno), "0"(sc1), "r"(sc2), "r"(sc3)
++ : "lr", "memory");
++ res = sc1;
++ __syscall_return(int, res);
++}
++
++asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize);
++asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
++ struct pt_regs *regs);
++asmlinkage int sys_rt_sigreturn(struct pt_regs *regs);
++asmlinkage int sys_pipe(unsigned long __user *filedes);
++asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
++ unsigned long prot, unsigned long flags,
++ unsigned long fd, off_t offset);
++asmlinkage int sys_cacheflush(int operation, void __user *addr, size_t len);
++asmlinkage int sys_fork(struct pt_regs *regs);
++asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp,
++ unsigned long parent_tidptr,
++ unsigned long child_tidptr, struct pt_regs *regs);
++asmlinkage int sys_vfork(struct pt_regs *regs);
++asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv,
++ char __user *__user *uenvp, struct pt_regs *regs);
++
++#endif
++
++/*
++ * "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 /* __ASM_AVR32_UNISTD_H */
+Index: linux-2.6.18-avr32/include/asm-avr32/user.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/user.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,64 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ *
++ * Note: We may not need these definitions for AVR32, as we don't
++ * support a.out.
++ */
++#ifndef __ASM_AVR32_USER_H
++#define __ASM_AVR32_USER_H
++
++#include <asm/ptrace.h>
++#include <asm/page.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). The 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 handy at some point. All of the registers
++ * are stored as part of the upage. The upage should always be
++ * only one page long.
++ * data: The data segment follows next. We use current->end_text to
++ * current->brk to pick up all of the user variables, plus any memory
++ * that may have been sbrk'ed. 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 usp to
++ * current->start_stack, so we round each of these in order to be able
++ * to write an integer number of pages.
++ */
++
++struct user_fpu_struct {
++ /* We have no FPU (yet) */
++};
++
++struct user {
++ struct pt_regs regs; /* entire machine state */
++ size_t u_tsize; /* text size (pages) */
++ size_t u_dsize; /* data size (pages) */
++ size_t u_ssize; /* stack size (pages) */
++ unsigned long start_code; /* text starting address */
++ unsigned long start_data; /* data starting address */
++ unsigned long start_stack; /* stack starting address */
++ long int signal; /* signal causing core dump */
++ struct regs * u_ar0; /* help gdb find registers */
++ unsigned long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#define NBPG PAGE_SIZE
++#define UPAGES 1
++#define HOST_TEXT_START_ADDR (u.start_code)
++#define HOST_DATA_START_ADDR (u.start_data)
++#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
++
++#endif /* __ASM_AVR32_USER_H */
+Index: linux-2.6.18-avr32/include/linux/elf-em.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/linux/elf-em.h 2006-12-04 09:32:57.000000000 +0100
++++ linux-2.6.18-avr32/include/linux/elf-em.h 2006-12-04 09:33:12.000000000 +0100
+@@ -31,6 +31,7 @@
+ #define EM_M32R 88 /* Renesas M32R */
+ #define EM_H8_300 46 /* Renesas H8/300,300H,H8S */
+ #define EM_FRV 0x5441 /* Fujitsu FR-V */
++#define EM_AVR32 0x18ad /* Atmel AVR32 */
+
+ /*
+ * This is an interim value that we will use until the committee comes
+Index: linux-2.6.18-avr32/include/asm-avr32/irqflags.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/irqflags.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,68 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_IRQFLAGS_H
++#define __ASM_AVR32_IRQFLAGS_H
++
++#include <asm/sysreg.h>
++
++static inline unsigned long __raw_local_save_flags(void)
++{
++ return sysreg_read(SR);
++}
++
++#define raw_local_save_flags(x) \
++ do { (x) = __raw_local_save_flags(); } while (0)
++
++/*
++ * This will restore ALL status register flags, not only the interrupt
++ * mask flag.
++ *
++ * The empty asm statement informs the compiler of this fact while
++ * also serving as a barrier.
++ */
++static inline void raw_local_irq_restore(unsigned long flags)
++{
++ sysreg_write(SR, flags);
++ asm volatile("" : : : "memory", "cc");
++}
++
++static inline void raw_local_irq_disable(void)
++{
++ asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory");
++}
++
++static inline void raw_local_irq_enable(void)
++{
++ asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory");
++}
++
++static inline int raw_irqs_disabled_flags(unsigned long flags)
++{
++ return (flags & SYSREG_BIT(GM)) != 0;
++}
++
++static inline int raw_irqs_disabled(void)
++{
++ unsigned long flags = __raw_local_save_flags();
++
++ return raw_irqs_disabled_flags(flags);
++}
++
++static inline unsigned long __raw_local_irq_save(void)
++{
++ unsigned long flags = __raw_local_save_flags();
++
++ raw_local_irq_disable();
++
++ return flags;
++}
++
++#define raw_local_irq_save(flags) \
++ do { (flags) = __raw_local_irq_save(); } while (0)
++
++#endif /* __ASM_AVR32_IRQFLAGS_H */
+Index: linux-2.6.18-avr32/lib/Kconfig.debug
+===================================================================
+--- linux-2.6.18-avr32.orig/lib/Kconfig.debug 2006-12-04 09:32:57.000000000 +0100
++++ linux-2.6.18-avr32/lib/Kconfig.debug 2006-12-04 09:33:12.000000000 +0100
+@@ -277,7 +277,7 @@ config DEBUG_HIGHMEM
+ config DEBUG_BUGVERBOSE
+ bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED
+ depends on BUG
+- depends on ARM || ARM26 || M32R || M68K || SPARC32 || SPARC64 || X86_32 || FRV
++ depends on ARM || ARM26 || AVR32 || M32R || M68K || SPARC32 || SPARC64 || X86_32 || FRV
+ default !EMBEDDED
+ help
+ Say Y here to make BUG() panics output the file name and line number
+@@ -315,7 +315,7 @@ config DEBUG_VM
+
+ config FRAME_POINTER
+ bool "Compile the kernel with frame pointers"
+- depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390)
++ depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || S390 || AVR32)
+ default y if DEBUG_INFO && UML
+ help
+ If you say Y here the resulting kernel image will be slightly larger
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/Makefile 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,2 @@
++obj-y += setup.o spi.o flash.o
++obj-$(CONFIG_BOARD_ATSTK1002) += atstk1002.o
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c 2006-12-04 11:50:25.000000000 +0100
+@@ -0,0 +1,37 @@
++/*
++ * ATSTK1002 daughterboard-specific init code
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/init.h>
++
++#include <asm/arch/board.h>
++
++struct eth_platform_data __initdata eth0_data = {
++ .valid = 1,
++ .mii_phy_addr = 0x10,
++ .is_rmii = 0,
++ .hw_addr = { 0x6a, 0x87, 0x71, 0x14, 0xcd, 0xcb },
++};
++
++extern struct lcdc_platform_data atstk1000_fb0_data;
++
++static int __init atstk1002_init(void)
++{
++ at32_add_system_devices();
++
++ at32_add_device_usart(1); /* /dev/ttyS0 */
++ at32_add_device_usart(2); /* /dev/ttyS1 */
++ at32_add_device_usart(3); /* /dev/ttyS2 */
++
++ at32_add_device_eth(0, &eth0_data);
++ at32_add_device_spi(0);
++ at32_add_device_lcdc(0, &atstk1000_fb0_data);
++
++ return 0;
++}
++postcore_initcall(atstk1002_init);
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/setup.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/setup.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,50 @@
++/*
++ * ATSTK1000 board-specific setup code.
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/bootmem.h>
++#include <linux/init.h>
++#include <linux/types.h>
++#include <linux/linkage.h>
++
++#include <asm/setup.h>
++
++#include <asm/arch/board.h>
++
++/* Initialized by bootloader-specific startup code. */
++struct tag *bootloader_tags __initdata;
++
++struct lcdc_platform_data __initdata atstk1000_fb0_data;
++
++void __init board_setup_fbmem(unsigned long fbmem_start,
++ unsigned long fbmem_size)
++{
++ if (!fbmem_size)
++ return;
++
++ if (!fbmem_start) {
++ void *fbmem;
++
++ fbmem = alloc_bootmem_low_pages(fbmem_size);
++ fbmem_start = __pa(fbmem);
++ } else {
++ pg_data_t *pgdat;
++
++ for_each_online_pgdat(pgdat) {
++ if (fbmem_start >= pgdat->bdata->node_boot_start
++ && fbmem_start <= pgdat->bdata->node_low_pfn)
++ reserve_bootmem_node(pgdat, fbmem_start,
++ fbmem_size);
++ }
++ }
++
++ printk("%luKiB framebuffer memory at address 0x%08lx\n",
++ fbmem_size >> 10, fbmem_start);
++ atstk1000_fb0_data.fbmem_start = fbmem_start;
++ atstk1000_fb0_data.fbmem_size = fbmem_size;
++}
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/spi.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/spi.c 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,27 @@
++/*
++ * ATSTK1000 SPI devices
++ *
++ * Copyright (C) 2005 Atmel Norway
++ *
++ * 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/device.h>
++#include <linux/spi/spi.h>
++
++static struct spi_board_info spi_board_info[] __initdata = {
++ {
++ .modalias = "ltv350qv",
++ .max_speed_hz = 16000000,
++ .bus_num = 0,
++ .chip_select = 1,
++ },
++};
++
++static int board_init_spi(void)
++{
++ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
++ return 0;
++}
++arch_initcall(board_init_spi);
+Index: linux-2.6.18-avr32/arch/avr32/configs/atstk1002_defconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/configs/atstk1002_defconfig 2006-12-04 11:50:21.000000000 +0100
+@@ -0,0 +1,754 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.18-rc1
++# Tue Jul 11 12:41:36 2006
++#
++CONFIG_AVR32=y
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_HARDIRQS_SW_RESEND=y
++CONFIG_GENERIC_IRQ_PROBE=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++
++#
++# Code maturity level options
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION=""
++# CONFIG_LOCALVERSION_AUTO is not set
++CONFIG_SWAP=y
++# CONFIG_SYSVIPC is not set
++# CONFIG_POSIX_MQUEUE is not set
++# CONFIG_BSD_PROCESS_ACCT is not set
++CONFIG_SYSCTL=y
++# CONFIG_AUDIT is not set
++# CONFIG_IKCONFIG is not set
++# CONFIG_RELAY is not set
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_EMBEDDED=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++# CONFIG_BASE_FULL is not set
++# CONFIG_FUTEX is not set
++# CONFIG_EPOLL is not set
++CONFIG_SHMEM=y
++# CONFIG_SLAB is not set
++# CONFIG_VM_EVENT_COUNTERS is not set
++# CONFIG_TINY_SHMEM is not set
++CONFIG_BASE_SMALL=1
++CONFIG_SLOB=y
++
++#
++# Loadable module support
++#
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++# CONFIG_MODULE_FORCE_UNLOAD is not set
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++# CONFIG_KMOD is not set
++
++#
++# Block layer
++#
++# CONFIG_BLK_DEV_IO_TRACE is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++# CONFIG_IOSCHED_AS is not set
++# CONFIG_IOSCHED_DEADLINE is not set
++# CONFIG_IOSCHED_CFQ is not set
++# CONFIG_DEFAULT_AS is not set
++# CONFIG_DEFAULT_DEADLINE is not set
++# CONFIG_DEFAULT_CFQ is not set
++CONFIG_DEFAULT_NOOP=y
++CONFIG_DEFAULT_IOSCHED="noop"
++
++#
++# System Type and features
++#
++CONFIG_SUBARCH_AVR32B=y
++CONFIG_MMU=y
++CONFIG_PERFORMANCE_COUNTERS=y
++CONFIG_PLATFORM_AT32AP=y
++CONFIG_CPU_AT32AP7000=y
++CONFIG_BOARD_ATSTK1002=y
++CONFIG_BOARD_ATSTK1000=y
++CONFIG_LOADER_U_BOOT=y
++CONFIG_LOAD_ADDRESS=0x10000000
++CONFIG_ENTRY_ADDRESS=0x90000000
++CONFIG_PHYS_OFFSET=0x10000000
++CONFIG_PREEMPT_NONE=y
++# CONFIG_PREEMPT_VOLUNTARY is not set
++# CONFIG_PREEMPT is not set
++# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
++# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
++# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
++CONFIG_ARCH_FLATMEM_ENABLE=y
++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
++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_SPARSEMEM_STATIC is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4
++# CONFIG_RESOURCES_64BIT is not set
++# CONFIG_OWNERSHIP_TRACE is not set
++# CONFIG_HZ_100 is not set
++CONFIG_HZ_250=y
++# CONFIG_HZ_1000 is not set
++CONFIG_HZ=250
++CONFIG_CMDLINE=""
++
++#
++# Bus options
++#
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# Executable file formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_MISC is not set
++
++#
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++# CONFIG_NETDEBUG is not set
++CONFIG_PACKET=y
++CONFIG_PACKET_MMAP=y
++CONFIG_UNIX=y
++# 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=y
++CONFIG_IP_PNP_DHCP=y
++# CONFIG_IP_PNP_BOOTP is not set
++# CONFIG_IP_PNP_RARP 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 is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# CONFIG_TCP_CONG_ADVANCED is not set
++CONFIG_TCP_CONG_BIC=y
++# CONFIG_IPV6 is not set
++# CONFIG_INET6_XFRM_TUNNEL is not set
++# CONFIG_INET6_TUNNEL is not set
++# CONFIG_NETWORK_SECMARK is not set
++# CONFIG_NETFILTER is not set
++
++#
++# DCCP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_DCCP is not set
++
++#
++# SCTP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_SCTP is not set
++
++#
++# TIPC Configuration (EXPERIMENTAL)
++#
++# CONFIG_TIPC is not set
++# CONFIG_ATM is not set
++# CONFIG_BRIDGE 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_NET_DIVERT is not set
++# CONFIG_ECONET is not set
++# CONFIG_WAN_ROUTER is not set
++
++#
++# QoS and/or fair queueing
++#
++# CONFIG_NET_SCHED is not set
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_NET_TCPPROBE is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++# CONFIG_IEEE80211 is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++# CONFIG_PREVENT_FIRMWARE_BUILD is not set
++# CONFIG_FW_LOADER is not set
++# CONFIG_DEBUG_DRIVER is not set
++# CONFIG_SYS_HYPERVISOR is not set
++
++#
++# Connector - unified userspace <-> kernelspace linker
++#
++# CONFIG_CONNECTOR is not set
++
++#
++# Memory Technology Devices (MTD)
++#
++# CONFIG_MTD is not set
++
++#
++# Parallel port support
++#
++# CONFIG_PARPORT is not set
++
++#
++# Plug and Play support
++#
++
++#
++# Block devices
++#
++# CONFIG_BLK_DEV_COW_COMMON is not set
++CONFIG_BLK_DEV_LOOP=m
++# CONFIG_BLK_DEV_CRYPTOLOOP is not set
++CONFIG_BLK_DEV_NBD=m
++CONFIG_BLK_DEV_RAM=m
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=4096
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++
++#
++# ATA/ATAPI/MFM/RLL support
++#
++# CONFIG_IDE is not set
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++# CONFIG_SCSI is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD is not set
++
++#
++# Fusion MPT device support
++#
++# CONFIG_FUSION is not set
++
++#
++# IEEE 1394 (FireWire) support
++#
++
++#
++# I2O device support
++#
++
++#
++# Network device support
++#
++CONFIG_NETDEVICES=y
++CONFIG_DUMMY=y
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++CONFIG_TUN=m
++
++#
++# PHY device support
++#
++# CONFIG_PHYLIB is not set
++
++#
++# Ethernet (10 or 100Mbit)
++#
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_MACB=y
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++
++#
++# Token Ring devices
++#
++
++#
++# Wireless LAN (non-hamradio)
++#
++# CONFIG_NET_RADIO is not set
++
++#
++# Wan interfaces
++#
++# CONFIG_WAN is not set
++CONFIG_PPP=m
++# CONFIG_PPP_MULTILINK is not set
++# CONFIG_PPP_FILTER is not set
++CONFIG_PPP_ASYNC=m
++# CONFIG_PPP_SYNC_TTY is not set
++CONFIG_PPP_DEFLATE=m
++# CONFIG_PPP_BSDCOMP is not set
++# CONFIG_PPP_MPPE is not set
++# CONFIG_PPPOE is not set
++# CONFIG_SLIP is not set
++# CONFIG_SHAPER is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++
++#
++# ISDN subsystem
++#
++# CONFIG_ISDN is not set
++
++#
++# Telephony Support
++#
++# 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_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_AT91=y
++CONFIG_SERIAL_AT91_CONSOLE=y
++# CONFIG_SERIAL_AT91_TTYAT is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++# CONFIG_LEGACY_PTYS is not set
++
++#
++# IPMI
++#
++# CONFIG_IPMI_HANDLER is not set
++
++#
++# Watchdog Cards
++#
++# CONFIG_WATCHDOG is not set
++# CONFIG_HW_RANDOM is not set
++# CONFIG_RTC is not set
++# CONFIG_GEN_RTC is not set
++# CONFIG_DTLK is not set
++# CONFIG_R3964 is not set
++
++#
++# Ftape, the floppy tape device driver
++#
++# CONFIG_RAW_DRIVER is not set
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++# CONFIG_TELCLOCK is not set
++
++#
++# I2C support
++#
++# CONFIG_I2C is not set
++
++#
++# SPI support
++#
++CONFIG_SPI=y
++# CONFIG_SPI_DEBUG is not set
++CONFIG_SPI_MASTER=y
++
++#
++# SPI Master Controller Drivers
++#
++CONFIG_SPI_ATMEL=m
++# CONFIG_SPI_BITBANG is not set
++
++#
++# SPI Protocol Masters
++#
++
++#
++# Dallas's 1-wire bus
++#
++
++#
++# Hardware Monitoring support
++#
++# CONFIG_HWMON is not set
++# CONFIG_HWMON_VID is not set
++
++#
++# Misc devices
++#
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++CONFIG_VIDEO_V4L2=y
++
++#
++# Digital Video Broadcasting Devices
++#
++# CONFIG_DVB is not set
++
++#
++# Graphics support
++#
++# CONFIG_FIRMWARE_EDID is not set
++CONFIG_FB=m
++CONFIG_FB_CFB_FILLRECT=m
++CONFIG_FB_CFB_COPYAREA=m
++CONFIG_FB_CFB_IMAGEBLIT=m
++# CONFIG_FB_MACMODES is not set
++# CONFIG_FB_BACKLIGHT is not set
++# CONFIG_FB_MODE_HELPERS is not set
++# CONFIG_FB_TILEBLITTING is not set
++CONFIG_FB_SIDSA=m
++CONFIG_FB_SIDSA_DEFAULT_BPP=24
++# CONFIG_FB_S1D13XXX is not set
++# CONFIG_FB_VIRTUAL is not set
++
++#
++# Logo configuration
++#
++# CONFIG_LOGO is not set
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
++# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
++CONFIG_LCD_CLASS_DEVICE=m
++CONFIG_LCD_DEVICE=y
++CONFIG_LCD_LTV350QV=m
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++
++#
++# USB support
++#
++# CONFIG_USB_ARCH_HAS_HCD is not set
++# CONFIG_USB_ARCH_HAS_OHCI is not set
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# USB Gadget Support
++#
++# CONFIG_USB_GADGET is not set
++
++#
++# MMC/SD Card support
++#
++# CONFIG_MMC is not set
++
++#
++# LED devices
++#
++# CONFIG_NEW_LEDS is not set
++
++#
++# LED drivers
++#
++
++#
++# LED Triggers
++#
++
++#
++# InfiniBand support
++#
++
++#
++# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
++#
++
++#
++# Real Time Clock
++#
++# CONFIG_RTC_CLASS is not set
++
++#
++# DMA Engine support
++#
++# CONFIG_DMA_ENGINE is not set
++
++#
++# DMA Clients
++#
++
++#
++# DMA Devices
++#
++
++#
++# File systems
++#
++CONFIG_EXT2_FS=y
++# CONFIG_EXT2_FS_XATTR is not set
++# CONFIG_EXT2_FS_XIP is not set
++# CONFIG_EXT3_FS is not set
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_OCFS2_FS is not set
++CONFIG_MINIX_FS=m
++CONFIG_ROMFS_FS=m
++# CONFIG_INOTIFY is not set
++# CONFIG_QUOTA is not set
++# CONFIG_DNOTIFY 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_FAT_FS=m
++CONFIG_MSDOS_FS=m
++CONFIG_VFAT_FS=m
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_PROC_KCORE=y
++CONFIG_SYSFS=y
++CONFIG_TMPFS=y
++# CONFIG_HUGETLB_PAGE is not set
++CONFIG_RAMFS=y
++CONFIG_CONFIGFS_FS=m
++
++#
++# Miscellaneous filesystems
++#
++# 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_CRAMFS is not set
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++
++#
++# Network File Systems
++#
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++# CONFIG_NFS_V3_ACL is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFS_DIRECTIO is not set
++# CONFIG_NFSD is not set
++CONFIG_ROOT_NFS=y
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++# CONFIG_SMB_FS is not set
++CONFIG_CIFS=m
++# CONFIG_CIFS_STATS is not set
++# CONFIG_CIFS_WEAK_PW_HASH is not set
++# CONFIG_CIFS_XATTR is not set
++# CONFIG_CIFS_DEBUG2 is not set
++# CONFIG_CIFS_EXPERIMENTAL is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++# CONFIG_PARTITION_ADVANCED is not set
++CONFIG_MSDOS_PARTITION=y
++
++#
++# Native Language Support
++#
++CONFIG_NLS=m
++CONFIG_NLS_DEFAULT="iso8859-1"
++CONFIG_NLS_CODEPAGE_437=m
++# CONFIG_NLS_CODEPAGE_737 is not set
++# CONFIG_NLS_CODEPAGE_775 is not set
++CONFIG_NLS_CODEPAGE_850=m
++# CONFIG_NLS_CODEPAGE_852 is not set
++# CONFIG_NLS_CODEPAGE_855 is not set
++# CONFIG_NLS_CODEPAGE_857 is not set
++# CONFIG_NLS_CODEPAGE_860 is not set
++# CONFIG_NLS_CODEPAGE_861 is not set
++# CONFIG_NLS_CODEPAGE_862 is not set
++# CONFIG_NLS_CODEPAGE_863 is not set
++# CONFIG_NLS_CODEPAGE_864 is not set
++# CONFIG_NLS_CODEPAGE_865 is not set
++# CONFIG_NLS_CODEPAGE_866 is not set
++# CONFIG_NLS_CODEPAGE_869 is not set
++# CONFIG_NLS_CODEPAGE_936 is not set
++# CONFIG_NLS_CODEPAGE_950 is not set
++# CONFIG_NLS_CODEPAGE_932 is not set
++# CONFIG_NLS_CODEPAGE_949 is not set
++# CONFIG_NLS_CODEPAGE_874 is not set
++# CONFIG_NLS_ISO8859_8 is not set
++# CONFIG_NLS_CODEPAGE_1250 is not set
++# CONFIG_NLS_CODEPAGE_1251 is not set
++# CONFIG_NLS_ASCII is not set
++CONFIG_NLS_ISO8859_1=m
++# CONFIG_NLS_ISO8859_2 is not set
++# CONFIG_NLS_ISO8859_3 is not set
++# CONFIG_NLS_ISO8859_4 is not set
++# CONFIG_NLS_ISO8859_5 is not set
++# CONFIG_NLS_ISO8859_6 is not set
++# CONFIG_NLS_ISO8859_7 is not set
++# CONFIG_NLS_ISO8859_9 is not set
++# CONFIG_NLS_ISO8859_13 is not set
++# CONFIG_NLS_ISO8859_14 is not set
++# CONFIG_NLS_ISO8859_15 is not set
++# CONFIG_NLS_KOI8_R is not set
++# CONFIG_NLS_KOI8_U is not set
++CONFIG_NLS_UTF8=m
++
++#
++# Kernel hacking
++#
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
++CONFIG_PRINTK_TIME=y
++CONFIG_MAGIC_SYSRQ=y
++# CONFIG_UNUSED_SYMBOLS is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_LOG_BUF_SHIFT=14
++CONFIG_DETECT_SOFTLOCKUP=y
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_MUTEXES is not set
++# CONFIG_DEBUG_RWSEMS 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_BUGVERBOSE=y
++# CONFIG_DEBUG_INFO is not set
++CONFIG_DEBUG_FS=y
++# CONFIG_DEBUG_VM is not set
++CONFIG_FRAME_POINTER=y
++# CONFIG_UNWIND_INFO is not set
++CONFIG_FORCED_INLINING=y
++# CONFIG_RCU_TORTURE_TEST is not set
++CONFIG_KPROBES=y
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++
++#
++# Cryptographic options
++#
++# CONFIG_CRYPTO is not set
++
++#
++# Hardware crypto devices
++#
++
++#
++# Library routines
++#
++CONFIG_CRC_CCITT=m
++# CONFIG_CRC16 is not set
++CONFIG_CRC32=m
++# CONFIG_LIBCRC32C is not set
++CONFIG_ZLIB_INFLATE=m
++CONFIG_ZLIB_DEFLATE=m
+Index: linux-2.6.18-avr32/arch/avr32/lib/io-readsb.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/io-readsb.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,49 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ .text
++.Lnot_word_aligned:
++1: ld.ub r8, r12[0]
++ sub r10, 1
++ st.b r11++, r8
++ reteq r12
++ tst r11, r9
++ brne 1b
++
++ /* fall through */
++
++ .global __raw_readsb
++ .type __raw_readsb,@function
++__raw_readsb:
++ cp.w r10, 0
++ mov r9, 3
++ reteq r12
++
++ tst r11, r9
++ brne .Lnot_word_aligned
++
++ sub r10, 4
++ brlt 2f
++
++1: ldins.b r8:t, r12[0]
++ ldins.b r8:u, r12[0]
++ ldins.b r8:l, r12[0]
++ ldins.b r8:b, r12[0]
++ st.w r11++, r8
++ sub r10, 4
++ brge 1b
++
++2: sub r10, -4
++ reteq r12
++
++3: ld.uh r8, r12[0]
++ sub r10, 1
++ st.b r11++, r8
++ brne 3b
++
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/lib/io-writesb.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/lib/io-writesb.S 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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.
++ */
++
++ .text
++.Lnot_word_aligned:
++1: ld.ub r8, r11++
++ sub r10, 1
++ st.b r12[0], r8
++ reteq r12
++ tst r11, r9
++ brne 1b
++
++ /* fall through */
++
++ .global __raw_writesb
++ .type __raw_writesb,@function
++__raw_writesb:
++ cp.w r10, 0
++ mov r9, 3
++ reteq r12
++
++ tst r11, r9
++ brne .Lnot_word_aligned
++
++ sub r10, 4
++ brlt 2f
++
++1: ld.w r8, r11++
++ bfextu r9, r8, 24, 8
++ st.b r12[0], r9
++ bfextu r9, r8, 16, 8
++ st.b r12[0], r9
++ bfextu r9, r8, 8, 8
++ st.b r12[0], r9
++ st.b r12[0], r8
++ sub r10, 4
++ brge 1b
++
++2: sub r10, -4
++ reteq r12
++
++3: ld.ub r8, r11++
++ sub r10, 1
++ st.b r12[0], r8
++ brne 3b
++
++ retal r12
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/flash.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/flash.c 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,95 @@
++/*
++ * ATSTK1000 board-specific flash initialization
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/mtd/physmap.h>
++
++#include <asm/arch/smc.h>
++
++static struct smc_config flash_config __initdata = {
++ .ncs_read_setup = 0,
++ .nrd_setup = 40,
++ .ncs_write_setup = 0,
++ .nwe_setup = 10,
++
++ .ncs_read_pulse = 80,
++ .nrd_pulse = 40,
++ .ncs_write_pulse = 65,
++ .nwe_pulse = 55,
++
++ .read_cycle = 120,
++ .write_cycle = 120,
++
++ .bus_width = 2,
++ .nrd_controlled = 1,
++ .nwe_controlled = 1,
++ .byte_write = 1,
++};
++
++static struct mtd_partition flash_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0x00000000,
++ .size = 0x00020000, /* 128 KiB */
++ .mask_flags = MTD_WRITEABLE,
++ },
++ {
++ .name = "root",
++ .offset = 0x00020000,
++ .size = 0x007d0000,
++ },
++ {
++ .name = "env",
++ .offset = 0x007f0000,
++ .size = 0x00010000,
++ .mask_flags = MTD_WRITEABLE,
++ },
++};
++
++static struct physmap_flash_data flash_data = {
++ .width = 2,
++ .nr_parts = ARRAY_SIZE(flash_parts),
++ .parts = flash_parts,
++};
++
++static struct resource flash_resource = {
++ .start = 0x00000000,
++ .end = 0x007fffff,
++ .flags = IORESOURCE_MEM,
++};
++
++static struct platform_device flash_device = {
++ .name = "physmap-flash",
++ .id = 0,
++ .resource = &flash_resource,
++ .num_resources = 1,
++ .dev = {
++ .platform_data = &flash_data,
++ },
++};
++
++/* This needs to be called after the SMC has been initialized */
++static int __init atstk1000_flash_init(void)
++{
++ int ret;
++
++ ret = smc_set_configuration(0, &flash_config);
++ if (ret < 0) {
++ printk(KERN_ERR "atstk1000: failed to set NOR flash timing\n");
++ return ret;
++ }
++
++ platform_device_register(&flash_device);
++
++ return 0;
++}
++device_initcall(atstk1000_flash_init);
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/hsmc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/hsmc.c 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,164 @@
++/*
++ * Static Memory Controller for AT32 chips
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#define DEBUG
++#include <linux/clk.h>
++#include <linux/err.h>
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <asm/io.h>
++#include <asm/arch/smc.h>
++
++#include "hsmc.h"
++
++#define NR_CHIP_SELECTS 6
++
++struct hsmc {
++ void __iomem *regs;
++ struct clk *pclk;
++ struct clk *mck;
++};
++
++static struct hsmc *hsmc;
++
++int smc_set_configuration(int cs, const struct smc_config *config)
++{
++ unsigned long mul;
++ unsigned long offset;
++ u32 setup, pulse, cycle, mode;
++
++ if (!hsmc)
++ return -ENODEV;
++ if (cs >= NR_CHIP_SELECTS)
++ return -EINVAL;
++
++ /*
++ * cycles = x / T = x * f
++ * = ((x * 1000000000) * ((f * 65536) / 1000000000)) / 65536
++ * = ((x * 1000000000) * (((f / 10000) * 65536) / 100000)) / 65536
++ */
++ mul = (clk_get_rate(hsmc->mck) / 10000) << 16;
++ mul /= 100000;
++
++#define ns2cyc(x) ((((x) * mul) + 65535) >> 16)
++
++ setup = (HSMC_BF(NWE_SETUP, ns2cyc(config->nwe_setup))
++ | HSMC_BF(NCS_WR_SETUP, ns2cyc(config->ncs_write_setup))
++ | HSMC_BF(NRD_SETUP, ns2cyc(config->nrd_setup))
++ | HSMC_BF(NCS_RD_SETUP, ns2cyc(config->ncs_read_setup)));
++ pulse = (HSMC_BF(NWE_PULSE, ns2cyc(config->nwe_pulse))
++ | HSMC_BF(NCS_WR_PULSE, ns2cyc(config->ncs_write_pulse))
++ | HSMC_BF(NRD_PULSE, ns2cyc(config->nrd_pulse))
++ | HSMC_BF(NCS_RD_PULSE, ns2cyc(config->ncs_read_pulse)));
++ cycle = (HSMC_BF(NWE_CYCLE, ns2cyc(config->write_cycle))
++ | HSMC_BF(NRD_CYCLE, ns2cyc(config->read_cycle)));
++
++ switch (config->bus_width) {
++ case 1:
++ mode = HSMC_BF(DBW, HSMC_DBW_8_BITS);
++ break;
++ case 2:
++ mode = HSMC_BF(DBW, HSMC_DBW_16_BITS);
++ break;
++ case 4:
++ mode = HSMC_BF(DBW, HSMC_DBW_32_BITS);
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ if (config->nrd_controlled)
++ mode |= HSMC_BIT(READ_MODE);
++ if (config->nwe_controlled)
++ mode |= HSMC_BIT(WRITE_MODE);
++ if (config->byte_write)
++ mode |= HSMC_BIT(BAT);
++
++ pr_debug("smc cs%d: setup/%08x pulse/%08x cycle/%08x mode/%08x\n",
++ cs, setup, pulse, cycle, mode);
++
++ offset = cs * 0x10;
++ hsmc_writel(hsmc, SETUP0 + offset, setup);
++ hsmc_writel(hsmc, PULSE0 + offset, pulse);
++ hsmc_writel(hsmc, CYCLE0 + offset, cycle);
++ hsmc_writel(hsmc, MODE0 + offset, mode);
++ hsmc_readl(hsmc, MODE0); /* I/O barrier */
++
++ return 0;
++}
++EXPORT_SYMBOL(smc_set_configuration);
++
++static int hsmc_probe(struct platform_device *pdev)
++{
++ struct resource *regs;
++ struct clk *pclk, *mck;
++ int ret;
++
++ if (hsmc)
++ return -EBUSY;
++
++ regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!regs)
++ return -ENXIO;
++ pclk = clk_get(&pdev->dev, "pclk");
++ if (IS_ERR(pclk))
++ return PTR_ERR(pclk);
++ mck = clk_get(&pdev->dev, "mck");
++ if (IS_ERR(mck)) {
++ ret = PTR_ERR(mck);
++ goto out_put_pclk;
++ }
++
++ ret = -ENOMEM;
++ hsmc = kzalloc(sizeof(struct hsmc), GFP_KERNEL);
++ if (!hsmc)
++ goto out_put_clocks;
++
++ clk_enable(pclk);
++ clk_enable(mck);
++
++ hsmc->pclk = pclk;
++ hsmc->mck = mck;
++ hsmc->regs = ioremap(regs->start, regs->end - regs->start + 1);
++ if (!hsmc->regs)
++ goto out_disable_clocks;
++
++ dev_info(&pdev->dev, "Atmel Static Memory Controller at 0x%08lx\n",
++ (unsigned long)regs->start);
++
++ platform_set_drvdata(pdev, hsmc);
++
++ return 0;
++
++out_disable_clocks:
++ clk_disable(mck);
++ clk_disable(pclk);
++ kfree(hsmc);
++out_put_clocks:
++ clk_put(mck);
++out_put_pclk:
++ clk_put(pclk);
++ hsmc = NULL;
++ return ret;
++}
++
++static struct platform_driver hsmc_driver = {
++ .probe = hsmc_probe,
++ .driver = {
++ .name = "smc",
++ },
++};
++
++static int __init hsmc_init(void)
++{
++ return platform_driver_register(&hsmc_driver);
++}
++arch_initcall(hsmc_init);
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/hsmc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/hsmc.h 2006-12-04 09:33:12.000000000 +0100
+@@ -0,0 +1,127 @@
++/*
++ * Register definitions for Atmel Static Memory Controller (SMC)
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_HSMC_H__
++#define __ASM_AVR32_HSMC_H__
++
++/* HSMC register offsets */
++#define HSMC_SETUP0 0x0000
++#define HSMC_PULSE0 0x0004
++#define HSMC_CYCLE0 0x0008
++#define HSMC_MODE0 0x000c
++#define HSMC_SETUP1 0x0010
++#define HSMC_PULSE1 0x0014
++#define HSMC_CYCLE1 0x0018
++#define HSMC_MODE1 0x001c
++#define HSMC_SETUP2 0x0020
++#define HSMC_PULSE2 0x0024
++#define HSMC_CYCLE2 0x0028
++#define HSMC_MODE2 0x002c
++#define HSMC_SETUP3 0x0030
++#define HSMC_PULSE3 0x0034
++#define HSMC_CYCLE3 0x0038
++#define HSMC_MODE3 0x003c
++#define HSMC_SETUP4 0x0040
++#define HSMC_PULSE4 0x0044
++#define HSMC_CYCLE4 0x0048
++#define HSMC_MODE4 0x004c
++#define HSMC_SETUP5 0x0050
++#define HSMC_PULSE5 0x0054
++#define HSMC_CYCLE5 0x0058
++#define HSMC_MODE5 0x005c
++
++/* Bitfields in SETUP0 */
++#define HSMC_NWE_SETUP_OFFSET 0
++#define HSMC_NWE_SETUP_SIZE 6
++#define HSMC_NCS_WR_SETUP_OFFSET 8
++#define HSMC_NCS_WR_SETUP_SIZE 6
++#define HSMC_NRD_SETUP_OFFSET 16
++#define HSMC_NRD_SETUP_SIZE 6
++#define HSMC_NCS_RD_SETUP_OFFSET 24
++#define HSMC_NCS_RD_SETUP_SIZE 6
++
++/* Bitfields in PULSE0 */
++#define HSMC_NWE_PULSE_OFFSET 0
++#define HSMC_NWE_PULSE_SIZE 7
++#define HSMC_NCS_WR_PULSE_OFFSET 8
++#define HSMC_NCS_WR_PULSE_SIZE 7
++#define HSMC_NRD_PULSE_OFFSET 16
++#define HSMC_NRD_PULSE_SIZE 7
++#define HSMC_NCS_RD_PULSE_OFFSET 24
++#define HSMC_NCS_RD_PULSE_SIZE 7
++
++/* Bitfields in CYCLE0 */
++#define HSMC_NWE_CYCLE_OFFSET 0
++#define HSMC_NWE_CYCLE_SIZE 9
++#define HSMC_NRD_CYCLE_OFFSET 16
++#define HSMC_NRD_CYCLE_SIZE 9
++
++/* Bitfields in MODE0 */
++#define HSMC_READ_MODE_OFFSET 0
++#define HSMC_READ_MODE_SIZE 1
++#define HSMC_WRITE_MODE_OFFSET 1
++#define HSMC_WRITE_MODE_SIZE 1
++#define HSMC_EXNW_MODE_OFFSET 4
++#define HSMC_EXNW_MODE_SIZE 2
++#define HSMC_BAT_OFFSET 8
++#define HSMC_BAT_SIZE 1
++#define HSMC_DBW_OFFSET 12
++#define HSMC_DBW_SIZE 2
++#define HSMC_TDF_CYCLES_OFFSET 16
++#define HSMC_TDF_CYCLES_SIZE 4
++#define HSMC_TDF_MODE_OFFSET 20
++#define HSMC_TDF_MODE_SIZE 1
++#define HSMC_PMEN_OFFSET 24
++#define HSMC_PMEN_SIZE 1
++#define HSMC_PS_OFFSET 28
++#define HSMC_PS_SIZE 2
++
++/* Constants for READ_MODE */
++#define HSMC_READ_MODE_NCS_CONTROLLED 0
++#define HSMC_READ_MODE_NRD_CONTROLLED 1
++
++/* Constants for WRITE_MODE */
++#define HSMC_WRITE_MODE_NCS_CONTROLLED 0
++#define HSMC_WRITE_MODE_NWE_CONTROLLED 1
++
++/* Constants for EXNW_MODE */
++#define HSMC_EXNW_MODE_DISABLED 0
++#define HSMC_EXNW_MODE_RESERVED 1
++#define HSMC_EXNW_MODE_FROZEN 2
++#define HSMC_EXNW_MODE_READY 3
++
++/* Constants for BAT */
++#define HSMC_BAT_BYTE_SELECT 0
++#define HSMC_BAT_BYTE_WRITE 1
++
++/* Constants for DBW */
++#define HSMC_DBW_8_BITS 0
++#define HSMC_DBW_16_BITS 1
++#define HSMC_DBW_32_BITS 2
++
++/* Bit manipulation macros */
++#define HSMC_BIT(name) \
++ (1 << HSMC_##name##_OFFSET)
++#define HSMC_BF(name,value) \
++ (((value) & ((1 << HSMC_##name##_SIZE) - 1)) \
++ << HSMC_##name##_OFFSET)
++#define HSMC_BFEXT(name,value) \
++ (((value) >> HSMC_##name##_OFFSET) \
++ & ((1 << HSMC_##name##_SIZE) - 1))
++#define HSMC_BFINS(name,value,old) \
++ (((old) & ~(((1 << HSMC_##name##_SIZE) - 1) \
++ << HSMC_##name##_OFFSET)) | HSMC_BF(name,value))
++
++/* Register access macros */
++#define hsmc_readl(port,reg) \
++ __raw_readl((port)->regs + HSMC_##reg)
++#define hsmc_writel(port,reg,value) \
++ __raw_writel((value), (port)->regs + HSMC_##reg)
++
++#endif /* __ASM_AVR32_HSMC_H__ */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/smc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/smc.h 2006-12-04 11:50:22.000000000 +0100
+@@ -0,0 +1,60 @@
++/*
++ * Static Memory Controller for AT32 chips
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * Inspired by the OMAP2 General-Purpose Memory Controller interface
++ *
++ * 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.
++ */
++#ifndef __ARCH_AT32AP_SMC_H
++#define __ARCH_AT32AP_SMC_H
++
++/*
++ * All timing parameters are in nanoseconds.
++ */
++struct smc_config {
++ /* Delay from address valid to assertion of given strobe */
++ u16 ncs_read_setup;
++ u16 nrd_setup;
++ u16 ncs_write_setup;
++ u16 nwe_setup;
++
++ /* Pulse length of given strobe */
++ u16 ncs_read_pulse;
++ u16 nrd_pulse;
++ u16 ncs_write_pulse;
++ u16 nwe_pulse;
++
++ /* Total cycle length of given operation */
++ u16 read_cycle;
++ u16 write_cycle;
++
++ /* Bus width in bytes */
++ u8 bus_width;
++
++ /*
++ * 0: Data is sampled on rising edge of NCS
++ * 1: Data is sampled on rising edge of NRD
++ */
++ unsigned int nrd_controlled:1;
++
++ /*
++ * 0: Data is driven on falling edge of NCS
++ * 1: Data is driven on falling edge of NWR
++ */
++ unsigned int nwe_controlled:1;
++
++ /*
++ * 0: Byte select access type
++ * 1: Byte write access type
++ */
++ unsigned int byte_write:1;
++};
++
++extern int smc_set_configuration(int cs, const struct smc_config *config);
++extern struct smc_config *smc_get_configuration(int cs);
++
++#endif /* __ARCH_AT32AP_SMC_H */
diff --git a/packages/linux/linux-2.6.18/avr32-checkstack.patch b/packages/linux/linux-2.6.18/avr32-checkstack.patch
new file mode 100644
index 0000000000..31d24340c5
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-checkstack.patch
@@ -0,0 +1,35 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Wed Jan 4 16:58:49 2006 +0100
+Subject: [PATCH] AVR32 checkstack port
+
+Add regexes to recognize stack frame adjustments in AVR32 code.
+
+---
+
+ scripts/checkstack.pl | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+Index: linux-2.6.16-avr32/scripts/checkstack.pl
+===================================================================
+--- linux-2.6.16-avr32.orig/scripts/checkstack.pl 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16-avr32/scripts/checkstack.pl 2006-04-03 18:57:19.000000000 +0200
+@@ -12,6 +12,7 @@
+ # sh64 port by Paul Mundt
+ # Random bits by Matt Mackall <mpm@selenic.com>
+ # M68k port by Geert Uytterhoeven and Andreas Schwab
++# AVR32 port by Haavard Skinnemoen <hskinnemoen@atmel.com>
+ #
+ # Usage:
+ # objdump -d vmlinux | stackcheck.pl [arch]
+@@ -37,6 +38,10 @@ my (@stack, $re, $x, $xs);
+ if ($arch eq 'arm') {
+ #c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64
+ $re = qr/.*sub.*sp, sp, #(([0-9]{2}|[3-9])[0-9]{2})/o;
++ } elsif ($arch eq 'avr32') {
++ #8000008a: 20 1d sub sp,4
++ #80000ca8: fa cd 05 b0 sub sp,sp,1456
++ $re = qr/^.*sub.*sp.*,([0-9]{1,8})/o;
+ } elsif ($arch =~ /^i[3456]86$/) {
+ #c0105234: 81 ec ac 05 00 00 sub $0x5ac,%esp
+ $re = qr/^.*[as][du][db] \$(0x$x{1,8}),\%esp$/o;
diff --git a/packages/linux/linux-2.6.18/avr32-dma-controller-framework.patch b/packages/linux/linux-2.6.18/avr32-dma-controller-framework.patch
new file mode 100644
index 0000000000..0f6301303b
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-dma-controller-framework.patch
@@ -0,0 +1,241 @@
+From 740c72fe92a5536060ac6debbfe0a26c0b9b8770 Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Mon, 11 Sep 2006 17:59:59 +0200
+Subject: [PATCH] AVR32: DMA controller framework
+
+This patch puts the DMA controller framework used in earlier BSPs back.
+It was removed before the AVR32 patches went into -mm, and it should
+be removed here as well as soon as we have an alternative.
+
+---
+ arch/avr32/kernel/Makefile | 1
+ arch/avr32/kernel/dma-controller.c | 34 +++++++
+ include/asm-avr32/dma-controller.h | 165 ++++++++++++++++++++++++++++++++++++
+ 3 files changed, 200 insertions(+), 0 deletions(-)
+
+diff --git a/arch/avr32/kernel/Makefile b/arch/avr32/kernel/Makefile
+index 90e5aff..b6afc0c 100644
+--- a/arch/avr32/kernel/Makefile
++++ b/arch/avr32/kernel/Makefile
+@@ -9,6 +9,7 @@ obj-y += syscall_table.o syscall-stub
+ obj-y += setup.o traps.o semaphore.o ptrace.o
+ obj-y += signal.o sys_avr32.o process.o time.o
+ obj-y += init_task.o switch_to.o cpu.o
++obj-y += dma-controller.o
+ obj-$(CONFIG_MODULES) += module.o avr32_ksyms.o
+ obj-$(CONFIG_KPROBES) += kprobes.o
+
+diff --git a/arch/avr32/kernel/dma-controller.c b/arch/avr32/kernel/dma-controller.c
+new file mode 100644
+index 0000000..fb654b3
+--- /dev/null
++++ b/arch/avr32/kernel/dma-controller.c
+@@ -0,0 +1,34 @@
++/*
++ * Preliminary DMA controller framework for AVR32
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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 <asm/dma-controller.h>
++
++static LIST_HEAD(controllers);
++
++int register_dma_controller(struct dma_controller *dmac)
++{
++ static int next_id;
++
++ dmac->id = next_id++;
++ list_add_tail(&dmac->list, &controllers);
++
++ return 0;
++}
++EXPORT_SYMBOL(register_dma_controller);
++
++struct dma_controller *find_dma_controller(int id)
++{
++ struct dma_controller *dmac;
++
++ list_for_each_entry(dmac, &controllers, list)
++ if (dmac->id == id)
++ return dmac;
++ return NULL;
++}
++EXPORT_SYMBOL(find_dma_controller);
+diff --git a/include/asm-avr32/dma-controller.h b/include/asm-avr32/dma-controller.h
+new file mode 100644
+index 0000000..8c67601
+--- /dev/null
++++ b/include/asm-avr32/dma-controller.h
+@@ -0,0 +1,165 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ */
++#ifndef __ASM_AVR32_DMA_CONTROLLER_H
++#define __ASM_AVR32_DMA_CONTROLLER_H
++
++#include <linux/device.h>
++
++#define DMA_DIR_MEM_TO_MEM 0x0000
++#define DMA_DIR_MEM_TO_PERIPH 0x0001
++#define DMA_DIR_PERIPH_TO_MEM 0x0002
++#define DMA_DIR_PERIPH_TO_PERIPH 0x0003
++
++#define DMA_WIDTH_8BIT 0
++#define DMA_WIDTH_16BIT 1
++#define DMA_WIDTH_32BIT 2
++
++struct dma_request {
++ struct dma_controller *dmac;
++ struct list_head list;
++
++ unsigned short channel;
++
++ void (*xfer_complete)(struct dma_request *req);
++ void (*block_complete)(struct dma_request *req);
++ void (*error)(struct dma_request *req);
++};
++
++struct dma_request_sg {
++ struct dma_request req;
++
++ int nr_sg;
++ struct scatterlist *sg;
++ unsigned long block_size;
++
++ dma_addr_t data_reg;
++ unsigned short periph_id;
++
++ unsigned char direction;
++ unsigned char width;
++};
++#define to_dma_request_sg(_req) \
++ container_of(_req, struct dma_request_sg, req)
++
++struct dma_request_cyclic {
++ struct dma_request req;
++
++ int periods;
++ unsigned long buffer_size;
++
++ dma_addr_t buffer_start;
++ dma_addr_t data_reg;
++
++ unsigned short periph_id;
++ unsigned char direction;
++ unsigned char width;
++
++ void *dev_id;
++};
++#define to_dma_request_cyclic(_req) \
++ container_of(_req, struct dma_request_cyclic, req)
++
++struct dma_request_memcpy {
++ struct dma_request req;
++
++ dma_addr_t src_addr;
++ unsigned int src_width;
++ unsigned int src_stride;
++
++ dma_addr_t dst_addr;
++ unsigned int dst_width;
++ unsigned int dst_stride;
++
++ size_t length;
++
++ unsigned short src_reverse:1;
++ unsigned short dst_reverse:1;
++};
++#define to_dma_request_memcpy(_req) \
++ container_of(_req, struct dma_request_memcpy, req)
++
++struct dma_controller {
++ struct list_head list;
++ int id;
++ struct device *dev;
++
++ int (*alloc_channel)(struct dma_controller *dmac);
++ void (*release_channel)(struct dma_controller *dmac,
++ int channel);
++ int (*prepare_request_sg)(struct dma_controller *dmac,
++ struct dma_request_sg *req);
++ int (*prepare_request_cyclic)(struct dma_controller *dmac,
++ struct dma_request_cyclic *req);
++ int (*prepare_request_memcpy)(struct dma_controller *dmac,
++ struct dma_request_memcpy *req);
++ int (*start_request)(struct dma_controller *dmac,
++ unsigned int channel);
++ int (*stop_request)(struct dma_controller *dmac,
++ unsigned int channel);
++ dma_addr_t (*get_current_pos)(struct dma_controller *dmac,
++ unsigned int channel);
++};
++
++static inline int
++dma_alloc_channel(struct dma_controller *dmac)
++{
++ return dmac->alloc_channel(dmac);
++}
++
++static inline void
++dma_release_channel(struct dma_controller *dmac, int chan)
++{
++ dmac->release_channel(dmac, chan);
++}
++
++static inline int
++dma_prepare_request_sg(struct dma_controller *dmac,
++ struct dma_request_sg *req)
++{
++ return dmac->prepare_request_sg(dmac, req);
++}
++
++static inline int
++dma_prepare_request_cyclic(struct dma_controller *dmac,
++ struct dma_request_cyclic *req)
++{
++ return dmac->prepare_request_cyclic(dmac, req);
++}
++
++static inline int
++dma_prepare_request_memcpy(struct dma_controller *dmac,
++ struct dma_request_memcpy *req)
++{
++ return dmac->prepare_request_memcpy(dmac, req);
++}
++
++static inline int
++dma_start_request(struct dma_controller *dmac,
++ unsigned int channel)
++{
++ return dmac->start_request(dmac, channel);
++}
++
++static inline int
++dma_stop_request(struct dma_controller *dmac,
++ unsigned int channel)
++{
++ return dmac->stop_request(dmac, channel);
++}
++
++static inline dma_addr_t
++dma_get_current_pos(struct dma_controller *dmac,
++ unsigned int channel)
++{
++ return dmac->get_current_pos(dmac, channel);
++}
++
++extern int register_dma_controller(struct dma_controller *dmac);
++extern struct dma_controller *find_dma_controller(int id);
++
++#endif /* __ASM_AVR32_DMA_CONTROLLER_H */
+--
+1.4.1.1
+
diff --git a/packages/linux/linux-2.6.18/avr32-dont-include-asm-delay-h.patch b/packages/linux/linux-2.6.18/avr32-dont-include-asm-delay-h.patch
new file mode 100644
index 0000000000..b9c5f4d8cf
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-dont-include-asm-delay-h.patch
@@ -0,0 +1,47 @@
+From 53678aca529d43e8fd0443c0c5f7f0807d5fd850 Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Wed, 10 Jan 2007 19:18:06 +0100
+Subject: [PATCH] [AVR32] Don't include asm/delay.h
+
+Remove a couple of asm/delay.h inclusions and replace with
+linux/delay.h where necessary.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ arch/avr32/kernel/avr32_ksyms.c | 2 +-
+ arch/avr32/lib/delay.c | 1 -
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/arch/avr32/kernel/avr32_ksyms.c b/arch/avr32/kernel/avr32_ksyms.c
+index 372e3f8..7c4c761 100644
+--- a/arch/avr32/kernel/avr32_ksyms.c
++++ b/arch/avr32/kernel/avr32_ksyms.c
+@@ -7,12 +7,12 @@
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
++#include <linux/delay.h>
+ #include <linux/io.h>
+ #include <linux/module.h>
+
+ #include <asm/checksum.h>
+ #include <asm/uaccess.h>
+-#include <asm/delay.h>
+
+ /*
+ * GCC functions
+diff --git a/arch/avr32/lib/delay.c b/arch/avr32/lib/delay.c
+index 462c830..76a8474 100644
+--- a/arch/avr32/lib/delay.c
++++ b/arch/avr32/lib/delay.c
+@@ -14,7 +14,6 @@
+ #include <linux/module.h>
+ #include <linux/types.h>
+
+-#include <asm/delay.h>
+ #include <asm/processor.h>
+ #include <asm/sysreg.h>
+
+--
+1.4.4.1
+
diff --git a/packages/linux/linux-2.6.18/avr32-drop-GFP_COMP-for-DMA-memory-allocations.patch b/packages/linux/linux-2.6.18/avr32-drop-GFP_COMP-for-DMA-memory-allocations.patch
new file mode 100644
index 0000000000..eea690268c
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-drop-GFP_COMP-for-DMA-memory-allocations.patch
@@ -0,0 +1,27 @@
+Hack for incompatible __GFP_COMP flag making its way into the AVR32
+DMA consistent memory allocator.
+
+This is essentially the same patch as the one submitted by
+Marc Singer <elf@buici.com> for ARM.
+---
+ arch/avr32/mm/dma-coherent.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+Index: linux-2.6.18-avr32/arch/avr32/mm/dma-coherent.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mm/dma-coherent.c 2006-09-11 18:06:00.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/mm/dma-coherent.c 2006-09-12 13:38:39.000000000 +0200
+@@ -41,6 +41,13 @@ static struct page *__dma_alloc(struct d
+ struct page *page, *free, *end;
+ int order;
+
++ /* Following is a work-around (a.k.a. hack) to prevent pages
++ * with __GFP_COMP being passed to split_page() which cannot
++ * handle them. The real problem is that this flag probably
++ * should be 0 on AVR32 as it is not supported on this
++ * platform--see CONFIG_HUGETLB_PAGE. */
++ gfp &= ~(__GFP_COMP);
++
+ size = PAGE_ALIGN(size);
+ order = get_order(size);
+
diff --git a/packages/linux/linux-2.6.18/avr32-fix-oprofile-interrupts.patch b/packages/linux/linux-2.6.18/avr32-fix-oprofile-interrupts.patch
new file mode 100644
index 0000000000..93f571d206
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-fix-oprofile-interrupts.patch
@@ -0,0 +1,109 @@
+--- linux-2.6.18.orig/arch/avr32/oprofile/op_model_avr32.c 2006-11-06 14:36:51.000000000 +0100
++++ linux-2.6.18/arch/avr32/oprofile/op_model_avr32.c 2006-11-07 10:05:46.000000000 +0100
+@@ -7,7 +7,7 @@
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+- * Author: Ronny Pedersen
++ * Authors: Sondre Garsjoe, Ronny Pedersen
+ */
+
+ #define DEBUG
+@@ -17,6 +17,7 @@
+ #include <linux/sched.h>
+ #include <linux/oprofile.h>
+ #include <linux/interrupt.h>
++#include <asm/intc.h>
+ #include <asm/irq.h>
+ #include <asm/system.h>
+ #include <asm/sysreg.h>
+@@ -49,7 +50,7 @@
+ #define PCNT0_F (1 << 9)
+ #define PCNT1_F (1 << 10)
+
+-#define AVR32_PC_IRQ 1
++#define AVR32_PC_IRQ 0
+
+ static const u32 int_mask[MAX_COUNTERS] = { PCCNT_IE, PCNT0_IE, PCNT1_IE };
+ static const u32 ovf_mask[MAX_COUNTERS] = { PCCNT_F, PCNT0_F, PCNT1_F };
+@@ -58,38 +59,37 @@
+
+ static void write_pccr(u32 val)
+ {
+- __builtin_mtsr(SYSREG_PCCR, val);
++ sysreg_write(PCCR, val);
+ }
+
+ static u32 read_pccr(void)
+ {
+- return __builtin_mfsr(SYSREG_PCCR);
++ return sysreg_read(PCCR);
+ }
+
+ static u32 read_counter(int counter)
+ {
+ switch (counter) {
+ case PCCNT:
+- return __builtin_mfsr(SYSREG_PCCNT);
++ return sysreg_read(PCCNT);
+ case PCNT0:
+- return __builtin_mfsr(SYSREG_PCNT0);
++ return sysreg_read(PCNT0);
+ case PCNT1:
+- return __builtin_mfsr(SYSREG_PCNT0);
++ return sysreg_read(PCNT1);
+ default:
+ return 0;
+ }
+ }
+
+-
+ static void write_counter(int counter, u32 val)
+ {
+ switch (counter) {
+ case PCCNT:
+- __builtin_mtsr(SYSREG_PCCNT, val);
++ sysreg_write(PCCNT, val);
+ case PCNT0:
+- __builtin_mtsr(SYSREG_PCNT0, val);
++ sysreg_write(PCNT0, val);
+ case PCNT1:
+- __builtin_mtsr(SYSREG_PCNT0, val);
++ sysreg_write(PCNT1, val);
+ default:
+ break;
+ }
+@@ -144,12 +144,15 @@
+ }
+ }
+
+-
+ static irqreturn_t avr32_pc_interrupt(int irq, void *arg,
+ struct pt_regs *regs)
+ {
+ int i;
+
++ /* Check if this is a performance counter interrupt */
++ if (!(intc_get_pending(irq) & 2))
++ return IRQ_NONE;
++
+ check_ctrs();
+
+ for (i = PCCNT; i < MAX_COUNTERS; i++) {
+@@ -179,7 +182,7 @@
+ int i, ret;
+ u32 pccr = read_pccr();
+
+- ret = request_irq(AVR32_PC_IRQ, avr32_pc_interrupt, SA_INTERRUPT,
++ ret = request_irq(AVR32_PC_IRQ, avr32_pc_interrupt, IRQF_SHARED | IRQF_DISABLED,
+ "AVR32 Performance Counter", (void *)results);
+
+ if (ret < 0) {
+@@ -214,6 +217,6 @@
+ .start = avr32_pc_start,
+ .stop = avr32_pc_stop,
+ .num_counters = MAX_COUNTERS,
+- .name = "avr32",
++ .name = "avr32/at32ap7000",
+ };
+
diff --git a/packages/linux/linux-2.6.18/avr32-gpio-dev.patch b/packages/linux/linux-2.6.18/avr32-gpio-dev.patch
new file mode 100644
index 0000000000..43971cf4e6
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-gpio-dev.patch
@@ -0,0 +1,548 @@
+---
+ arch/avr32/mach-at32ap/Kconfig | 8
+ arch/avr32/mach-at32ap/pio.c | 499 ++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 506 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/pio.c 2006-11-29 16:22:14.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-11-29 16:29:20.000000000 +0100
+@@ -22,7 +22,7 @@
+
+ struct pio_device {
+ void __iomem *regs;
+- const struct platform_device *pdev;
++ struct platform_device *pdev;
+ struct clk *clk;
+ u32 pinmux_mask;
+ u32 gpio_mask;
+@@ -119,6 +119,34 @@ fail:
+ dump_stack();
+ }
+
++static unsigned int pio_id(struct pio_device *pio)
++{
++ return pio - pio_dev;
++}
++
++static void __enable_gpio(struct pio_device *pio, u32 mask)
++{
++ pio_writel(pio, PUER, mask);
++ pio_writel(pio, ODR, mask);
++ pio_writel(pio, PER, mask);
++}
++
++static void __disable_gpio(struct pio_device *pio, u32 mask)
++{
++ pio_writel(pio, PUER, mask);
++ pio_writel(pio, ODR, mask);
++}
++
++static void pio_dealloc_mask(struct pio_device *pio, u32 mask)
++{
++ u32 old, new;
++
++ do {
++ old = pio->pinmux_mask;
++ new = old & ~mask;
++ } while (cmpxchg(&pio->pinmux_mask, old, new) != old);
++}
++
+ /* GPIO API */
+
+ int gpio_request(unsigned int gpio, const char *label)
+@@ -210,6 +238,475 @@ void gpio_set_value(unsigned int gpio, i
+ }
+ EXPORT_SYMBOL(gpio_set_value);
+
++#ifdef CONFIG_PIO_DEV
++#include <linux/configfs.h>
++#include <linux/cdev.h>
++#include <linux/uaccess.h>
++
++#define GPIO_DEV_MAX 8
++
++static struct class *gpio_dev_class;
++static dev_t gpio_devt;
++
++struct gpio_item {
++ spinlock_t lock;
++
++ /* Too bad we don't have committable items... */
++ int enabled;
++
++ struct pio_device *pio;
++ u32 pin_mask;
++
++ int id;
++ struct class_device *gpio_dev;
++ struct cdev char_dev;
++ struct config_item item;
++};
++
++struct gpio_attribute {
++ struct configfs_attribute attr;
++ ssize_t (*show)(struct gpio_item *, char *);
++ ssize_t (*store)(struct gpio_item *, const char *, size_t);
++};
++
++static int gpio_dev_open(struct inode *inode, struct file *file)
++{
++ struct gpio_item *gpio = container_of(inode->i_cdev,
++ struct gpio_item,
++ char_dev);
++
++ config_item_get(&gpio->item);
++ file->private_data = gpio;
++ return 0;
++}
++
++static int gpio_dev_release(struct inode *inode, struct file *file)
++{
++ struct gpio_item *gpio = file->private_data;
++
++ config_item_put(&gpio->item);
++ return 0;
++}
++
++static ssize_t gpio_dev_read(struct file *file, char __user *buf,
++ size_t count, loff_t *offset)
++{
++ struct gpio_item *gpio = file->private_data;
++ u32 value;
++
++ value = pio_readl(gpio->pio, PDSR) & gpio->pin_mask;
++
++ count = min(count, (size_t)4);
++ if (copy_to_user(buf, &value, count))
++ return -EFAULT;
++ return count;
++}
++
++static ssize_t gpio_dev_write(struct file *file, const char __user *buf,
++ size_t count, loff_t *offset)
++{
++ struct gpio_item *gpio = file->private_data;
++ u32 value = 0;
++ u32 mask = ~0UL;
++
++ count = min(count, (size_t)4);
++ if (copy_from_user(&value, buf, count))
++ return -EFAULT;
++
++ /* Assuming big endian */
++ mask <<= (4 - count) * 8;
++ mask &= gpio->pin_mask;
++
++ pio_writel(gpio->pio, CODR, ~value & mask);
++ pio_writel(gpio->pio, SODR, value & mask);
++
++ return count;
++}
++
++static struct file_operations gpio_dev_fops = {
++ .owner = THIS_MODULE,
++ .llseek = no_llseek,
++ .open = gpio_dev_open,
++ .release = gpio_dev_release,
++ .read = gpio_dev_read,
++ .write = gpio_dev_write,
++};
++
++static struct gpio_item *to_gpio_item(struct config_item *item)
++{
++ return item ? container_of(item, struct gpio_item, item) : NULL;
++}
++
++static ssize_t gpio_show_gpio_id(struct gpio_item *gpio, char *page)
++{
++ if (gpio->pio)
++ return sprintf(page, "%u\n", pio_id(gpio->pio));
++ else
++ return sprintf(page, "-1\n");
++}
++
++static ssize_t gpio_store_gpio_id(struct gpio_item *gpio,
++ const char *page, size_t count)
++{
++ unsigned long id;
++ char *p = (char *)page;
++ ssize_t ret = -EINVAL;
++
++ id = simple_strtoul(p, &p, 0);
++ if (!p || (*p && (*p != '\n')))
++ return -EINVAL;
++
++ /* Switching PIO is not allowed when live... */
++ spin_lock(&gpio->lock);
++ if (!gpio->enabled) {
++ ret = -ENXIO;
++ if ((id < MAX_NR_PIO_DEVICES) && pio_dev[id].regs) {
++ gpio->pio = &pio_dev[id];
++ ret = count;
++ }
++ }
++ spin_unlock(&gpio->lock);
++
++ return ret;
++}
++
++static ssize_t gpio_show_pin_mask(struct gpio_item *gpio, char *page)
++{
++ return sprintf(page, "0x%08x\n", gpio->pin_mask);
++}
++
++static ssize_t gpio_store_pin_mask(struct gpio_item *gpio,
++ const char *page, size_t count)
++{
++ struct pio_device *pio;
++ u32 old_mask, new_mask;
++ u32 old, new;
++ char *p = (char *)page;
++ ssize_t ret = -EINVAL;
++
++ new_mask = simple_strtoul(p, &p, 0);
++ if (!p || (*p && (*p != '\n')))
++ return -EINVAL;
++
++ /*
++ * Must have a PIO before we can start allocating pins, but we
++ * must not be live.
++ */
++ spin_lock(&gpio->lock);
++ pio = gpio->pio;
++ if (!pio || gpio->enabled)
++ goto out;
++
++ ret = -EBUSY;
++ old_mask = gpio->pin_mask;
++ do {
++ old = pio->pinmux_mask;
++ if ((old & ~old_mask) & new_mask)
++ goto out;
++
++ new = (old & ~old_mask) | new_mask;
++ } while (cmpxchg(&pio->pinmux_mask, old, new) != old);
++
++ gpio->pin_mask = new_mask;
++ __disable_gpio(pio, old_mask);
++ __enable_gpio(pio, new_mask);
++ ret = count;
++
++out:
++ spin_unlock(&gpio->lock);
++ return ret;
++}
++
++static ssize_t gpio_show_oe_mask(struct gpio_item *gpio, char *page)
++{
++ u32 mask = 0;
++
++ spin_lock(&gpio->lock);
++ if (gpio->pio) {
++ mask = pio_readl(gpio->pio, OSR);
++ mask &= gpio->pin_mask;
++ }
++ spin_unlock(&gpio->lock);
++
++ return sprintf(page, "0x%08x\n", mask);
++}
++
++static ssize_t gpio_store_oe_mask(struct gpio_item *gpio,
++ const char *page, size_t count)
++{
++ u32 mask;
++ char *p = (char *)page;
++ ssize_t ret = -EINVAL;
++
++ mask = simple_strtoul(p, &p, 0);
++ if (!p || (*p && (*p != '\n')))
++ return -EINVAL;
++
++ spin_lock(&gpio->lock);
++ if (gpio->pio) {
++ mask &= gpio->pin_mask;
++ pio_writel(gpio->pio, ODR, mask ^ gpio->pin_mask);
++ pio_writel(gpio->pio, OER, mask);
++ ret = count;
++ }
++ spin_unlock(&gpio->lock);
++
++ return ret;
++}
++
++static ssize_t gpio_show_enabled(struct gpio_item *gpio, char *page)
++{
++ return sprintf(page, "%d\n", gpio->enabled);
++}
++
++static ssize_t gpio_store_enabled(struct gpio_item *gpio,
++ const char *page, size_t count)
++{
++ char *p = (char *)page;
++ int enabled;
++ int ret;
++
++ enabled = simple_strtoul(p, &p, 0);
++ if (!p || (*p && (*p != '\n')))
++ return -EINVAL;
++
++ /* make it a boolean value */
++ enabled = !!enabled;
++
++ if (gpio->enabled == enabled)
++ /* Already enabled; do nothing. */
++ return count;
++
++ BUG_ON(gpio->id >= GPIO_DEV_MAX);
++
++ if (!enabled) {
++ class_device_unregister(gpio->gpio_dev);
++ cdev_del(&gpio->char_dev);
++ }
++
++ /* Disallow any updates to gpio_id or pin_mask */
++ spin_lock(&gpio->lock);
++ gpio->enabled = enabled;
++ spin_unlock(&gpio->lock);
++
++ if (!enabled)
++ return count;
++
++ cdev_init(&gpio->char_dev, &gpio_dev_fops);
++ gpio->char_dev.owner = THIS_MODULE;
++ ret = cdev_add(&gpio->char_dev, MKDEV(MAJOR(gpio_devt), gpio->id), 1);
++ if (ret < 0)
++ goto err_cdev_add;
++ gpio->gpio_dev = class_device_create(gpio_dev_class, NULL,
++ MKDEV(MAJOR(gpio_devt), gpio->id),
++ &gpio->pio->pdev->dev,
++ "gpio%d", gpio->id);
++ if (IS_ERR(gpio->gpio_dev)) {
++ printk(KERN_ERR "failed to create gpio%d\n", gpio->id);
++ ret = PTR_ERR(gpio->gpio_dev);
++ goto err_class_dev;
++ }
++
++ printk(KERN_INFO "created gpio%d (pio%d/0x%08x) as (%d:%d)\n",
++ gpio->id, pio_id(gpio->pio), gpio->pin_mask,
++ MAJOR(gpio->gpio_dev->devt), MINOR(gpio->gpio_dev->devt));
++
++ return 0;
++
++err_class_dev:
++ cdev_del(&gpio->char_dev);
++err_cdev_add:
++ spin_lock(&gpio->lock);
++ gpio->enabled = 0;
++ spin_unlock(&gpio->lock);
++
++ return ret;
++}
++
++static struct gpio_attribute gpio_item_attr_gpio_id = {
++ .attr = {
++ .ca_owner = THIS_MODULE,
++ .ca_name = "gpio_id",
++ .ca_mode = S_IRUGO | S_IWUSR,
++ },
++ .show = gpio_show_gpio_id,
++ .store = gpio_store_gpio_id,
++};
++static struct gpio_attribute gpio_item_attr_pin_mask = {
++ .attr = {
++ .ca_owner = THIS_MODULE,
++ .ca_name = "pin_mask",
++ .ca_mode = S_IRUGO | S_IWUSR,
++ },
++ .show = gpio_show_pin_mask,
++ .store = gpio_store_pin_mask,
++};
++static struct gpio_attribute gpio_item_attr_oe_mask = {
++ .attr = {
++ .ca_owner = THIS_MODULE,
++ .ca_name = "oe_mask",
++ .ca_mode = S_IRUGO | S_IWUSR,
++ },
++ .show = gpio_show_oe_mask,
++ .store = gpio_store_oe_mask,
++};
++static struct gpio_attribute gpio_item_attr_enabled = {
++ .attr = {
++ .ca_owner = THIS_MODULE,
++ .ca_name = "enabled",
++ .ca_mode = S_IRUGO | S_IWUSR,
++ },
++ .show = gpio_show_enabled,
++ .store = gpio_store_enabled,
++};
++
++static struct configfs_attribute *gpio_item_attrs[] = {
++ &gpio_item_attr_gpio_id.attr,
++ &gpio_item_attr_pin_mask.attr,
++ &gpio_item_attr_oe_mask.attr,
++ &gpio_item_attr_enabled.attr,
++ NULL,
++};
++
++static ssize_t gpio_show_attr(struct config_item *item,
++ struct configfs_attribute *attr,
++ char *page)
++{
++ struct gpio_item *gpio_item = to_gpio_item(item);
++ struct gpio_attribute *gpio_attr
++ = container_of(attr, struct gpio_attribute, attr);
++ ssize_t ret = 0;
++
++ if (gpio_attr->show)
++ ret = gpio_attr->show(gpio_item, page);
++ return ret;
++}
++
++static ssize_t gpio_store_attr(struct config_item *item,
++ struct configfs_attribute *attr,
++ const char *page, size_t count)
++{
++ struct gpio_item *gpio_item = to_gpio_item(item);
++ struct gpio_attribute *gpio_attr
++ = container_of(attr, struct gpio_attribute, attr);
++ ssize_t ret = -EINVAL;
++
++ if (gpio_attr->store)
++ ret = gpio_attr->store(gpio_item, page, count);
++ return ret;
++}
++
++static void gpio_release(struct config_item *item)
++{
++ kfree(to_gpio_item(item));
++}
++
++static struct configfs_item_operations gpio_item_ops = {
++ .release = gpio_release,
++ .show_attribute = gpio_show_attr,
++ .store_attribute = gpio_store_attr,
++};
++
++static struct config_item_type gpio_item_type = {
++ .ct_item_ops = &gpio_item_ops,
++ .ct_attrs = gpio_item_attrs,
++ .ct_owner = THIS_MODULE,
++};
++
++static struct config_item *gpio_make_item(struct config_group *group,
++ const char *name)
++{
++ static int next_id;
++ struct gpio_item *gpio;
++
++ if (next_id >= GPIO_DEV_MAX)
++ return NULL;
++
++ gpio = kzalloc(sizeof(struct gpio_item), GFP_KERNEL);
++ if (!gpio)
++ return NULL;
++
++ gpio->id = next_id++;
++ config_item_init_type_name(&gpio->item, name, &gpio_item_type);
++ spin_lock_init(&gpio->lock);
++
++ return &gpio->item;
++}
++
++static void gpio_drop_item(struct config_group *group,
++ struct config_item *item)
++{
++ struct gpio_item *gpio = to_gpio_item(item);
++ struct pio_device *pio;
++
++ spin_lock(&gpio->lock);
++ if (gpio->enabled) {
++ class_device_unregister(gpio->gpio_dev);
++ cdev_del(&gpio->char_dev);
++ }
++
++ pio = gpio->pio;
++ if (pio) {
++ __disable_gpio(pio, gpio->pin_mask);
++ pio_dealloc_mask(pio, gpio->pin_mask);
++ gpio->pio = NULL;
++ }
++ spin_unlock(&gpio->lock);
++}
++
++static struct configfs_group_operations gpio_group_ops = {
++ .make_item = gpio_make_item,
++ .drop_item = gpio_drop_item,
++};
++
++static struct config_item_type gpio_group_type = {
++ .ct_group_ops = &gpio_group_ops,
++ .ct_owner = THIS_MODULE,
++};
++
++static struct configfs_subsystem gpio_subsys = {
++ .su_group = {
++ .cg_item = {
++ .ci_namebuf = "gpio",
++ .ci_type = &gpio_group_type,
++ },
++ },
++};
++
++static int __init pio_init_dev(void)
++{
++ int err;
++
++ gpio_dev_class = class_create(THIS_MODULE, "gpio-dev");
++ if (IS_ERR(gpio_dev_class)) {
++ err = PTR_ERR(gpio_dev_class);
++ goto err_class_create;
++ }
++
++ err = alloc_chrdev_region(&gpio_devt, 0, GPIO_DEV_MAX, "gpio");
++ if (err < 0)
++ goto err_alloc_chrdev;
++
++ /* Configfs initialization */
++ config_group_init(&gpio_subsys.su_group);
++ init_MUTEX(&gpio_subsys.su_sem);
++ err = configfs_register_subsystem(&gpio_subsys);
++ if (err)
++ goto err_register_subsys;
++
++ return 0;
++
++err_register_subsys:
++ unregister_chrdev_region(gpio_devt, GPIO_DEV_MAX);
++err_alloc_chrdev:
++ class_destroy(gpio_dev_class);
++err_class_create:
++ printk(KERN_WARNING "Failed to initialize gpio /dev interface\n");
++ return err;
++}
++late_initcall(pio_init_dev);
++#endif /* CONFIG_PIO_DEV */
++
+ static int __init pio_probe(struct platform_device *pdev)
+ {
+ struct pio_device *pio = NULL;
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/Kconfig 2006-11-29 16:23:31.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/Kconfig 2006-11-29 16:24:35.000000000 +0100
+@@ -2,6 +2,14 @@ if PLATFORM_AT32AP
+
+ menu "Atmel AVR32 AP options"
+
++config PIO_DEV
++ bool "PIO /dev interface"
++ select CONFIGFS_FS
++ default y
++ help
++ Say `Y' to enable a /dev interface to the Parallel I/O
++ Controller.
++
+ endmenu
+
+ endif
diff --git a/packages/linux/linux-2.6.18/avr32-increment-pointer-when-parsing-for-fbmem_start.patch b/packages/linux/linux-2.6.18/avr32-increment-pointer-when-parsing-for-fbmem_start.patch
new file mode 100644
index 0000000000..e755b47442
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-increment-pointer-when-parsing-for-fbmem_start.patch
@@ -0,0 +1,16 @@
+Index: linux-2.6.18/arch/avr32/kernel/setup.c
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/kernel/setup.c 2006-12-20 12:45:12.000000000 +0100
++++ linux-2.6.18/arch/avr32/kernel/setup.c 2006-12-20 12:45:24.000000000 +0100
+@@ -103,8 +103,10 @@
+ static int __init early_parse_fbmem(char *p)
+ {
+ fbmem_size = memparse(p, &p);
+- if (*p == '@')
++ if (*p == '@') {
++ p++;
+ fbmem_start = memparse(p, &p);
++ }
+ return 0;
+ }
+ early_param("fbmem", early_parse_fbmem);
diff --git a/packages/linux/linux-2.6.18/avr32-little-endian-read-write-bwl.patch b/packages/linux/linux-2.6.18/avr32-little-endian-read-write-bwl.patch
new file mode 100644
index 0000000000..5e9b75219a
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-little-endian-read-write-bwl.patch
@@ -0,0 +1,128 @@
+---
+ include/asm-avr32/io.h | 73 ++++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 49 insertions(+), 24 deletions(-)
+
+Index: linux-2.6.18-avr32/include/asm-avr32/io.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/io.h 2006-11-02 16:40:37.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/io.h 2006-11-03 17:58:06.000000000 +0100
+@@ -5,6 +5,8 @@
+
+ #ifdef __KERNEL__
+
++#include <linux/types.h>
++
+ #include <asm/addrspace.h>
+ #include <asm/byteorder.h>
+
+@@ -36,37 +38,64 @@ extern void __raw_readsb(unsigned int ad
+ extern void __raw_readsw(unsigned int addr, void *data, int wordlen);
+ extern void __raw_readsl(unsigned int addr, void *data, int longlen);
+
+-static inline void writeb(unsigned char b, volatile void __iomem *addr)
++static inline void __raw_writeb(u8 v, volatile void __iomem *addr)
++{
++ *(volatile u8 __force *)addr = v;
++}
++static inline void __raw_writew(u16 v, volatile void __iomem *addr)
++{
++ *(volatile u16 __force *)addr = v;
++}
++static inline void __raw_writel(u32 v, volatile void __iomem *addr)
++{
++ *(volatile u32 __force *)addr = v;
++}
++
++static inline u8 __raw_readb(const volatile void __iomem *addr)
+ {
+- *(volatile unsigned char __force *)addr = b;
++ return *(const volatile u8 __force *)addr;
+ }
+-static inline void writew(unsigned short b, volatile void __iomem *addr)
++static inline u16 __raw_readw(const volatile void __iomem *addr)
+ {
+- *(volatile unsigned short __force *)addr = b;
++ return *(const volatile u16 __force *)addr;
+ }
+-static inline void writel(unsigned int b, volatile void __iomem *addr)
++static inline u32 __raw_readl(const volatile void __iomem *addr)
+ {
+- *(volatile unsigned int __force *)addr = b;
++ return *(const volatile u32 __force *)addr;
+ }
+-#define __raw_writeb writeb
+-#define __raw_writew writew
+-#define __raw_writel writel
+
+-static inline unsigned char readb(const volatile void __iomem *addr)
++#define __swizzle_addr_b(addr) \
++ ((typeof(addr))((unsigned long)(addr) ^ 3UL))
++#define __swizzle_addr_w(addr) \
++ ((typeof(addr))((unsigned long)(addr) ^ 2UL))
++#define __swizzle_addr_l(addr) \
++ (addr)
++
++static inline void writeb(u8 v, volatile void __iomem *addr)
+ {
+- return *(const volatile unsigned char __force *)addr;
++ __raw_writeb(v, __swizzle_addr_b(addr));
+ }
+-static inline unsigned short readw(const volatile void __iomem *addr)
++static inline void writew(u16 v, volatile void __iomem *addr)
+ {
+- return *(const volatile unsigned short __force *)addr;
++ __raw_writew(v, __swizzle_addr_w(addr));
+ }
+-static inline unsigned int readl(const volatile void __iomem *addr)
++static inline void writel(u32 v, volatile void __iomem *addr)
+ {
+- return *(const volatile unsigned int __force *)addr;
++ __raw_writel(v, __swizzle_addr_l(addr));
++}
++
++static inline u8 readb(const volatile void __iomem *addr)
++{
++ return __raw_readb(__swizzle_addr_b(addr));
++}
++static inline u16 readw(const volatile void __iomem *addr)
++{
++ return __raw_readw(__swizzle_addr_w(addr));
++}
++static inline u32 readl(const volatile void __iomem *addr)
++{
++ return __raw_readl(__swizzle_addr_l(addr));
+ }
+-#define __raw_readb readb
+-#define __raw_readw readw
+-#define __raw_readl readl
+
+ #define writesb(p, d, l) __raw_writesb((unsigned int)p, d, l)
+ #define writesw(p, d, l) __raw_writesw((unsigned int)p, d, l)
+@@ -108,17 +137,13 @@ static inline unsigned int readl(const v
+
+ #endif
+
+-
+-/*
+- * These two are only here because ALSA _thinks_ it needs them...
+- */
+ static inline void memcpy_fromio(void * to, const volatile void __iomem *from,
+ unsigned long count)
+ {
+ char *p = to;
+ while (count) {
+ count--;
+- *p = readb(from);
++ *p = __raw_readb(from);
+ p++;
+ from++;
+ }
+@@ -130,7 +155,7 @@ static inline void memcpy_toio(volatile
+ const char *p = from;
+ while (count) {
+ count--;
+- writeb(*p, to);
++ __raw_writeb(*p, to);
+ p++;
+ to++;
+ }
diff --git a/packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch b/packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch
new file mode 100644
index 0000000000..03e08785f0
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-move-ethernet-tag-parsing-to-board-specific-code.patch
@@ -0,0 +1,94 @@
+From 736c9c38e8a681d0ecfc4dafe15fcb955fe66a29 Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Tue, 24 Oct 2006 09:34:48 +0200
+Subject: [PATCH] AVR32: Move ethernet tag parsing to board-specific code
+
+By moving the ethernet tag parsing to the board-specific code we avoid
+the issue of figuring out which device we're supposed to attach the
+information to. The board specific code knows this because it's
+where the actual devices are instantiated.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ arch/avr32/boards/atstk1000/atstk1002.c | 26 ++++++++++++++++++++------
+ arch/avr32/kernel/setup.c | 24 ------------------------
+ 2 files changed, 20 insertions(+), 30 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atstk1000/atstk1002.c 2006-11-01 13:26:19.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c 2006-11-01 13:33:38.000000000 +0100
+@@ -8,18 +8,32 @@
+ * published by the Free Software Foundation.
+ */
+ #include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/types.h>
+
++#include <asm/setup.h>
+ #include <asm/arch/board.h>
+
+-struct eth_platform_data __initdata eth0_data = {
+- .valid = 1,
+- .mii_phy_addr = 0x10,
+- .is_rmii = 0,
+- .hw_addr = { 0x6a, 0x87, 0x71, 0x14, 0xcd, 0xcb },
+-};
++static struct eth_platform_data __initdata eth_data[2];
+
+ extern struct lcdc_platform_data atstk1000_fb0_data;
+
++static int __init parse_tag_ethernet(struct tag *tag)
++{
++ int i;
++
++ i = tag->u.ethernet.mac_index;
++ if (i < ARRAY_SIZE(eth_data)) {
++ eth_data[i].mii_phy_addr = tag->u.ethernet.mii_phy_addr;
++ memcpy(&eth_data[i].hw_addr, tag->u.ethernet.hw_address,
++ sizeof(eth_data[i].hw_addr));
++ eth_data[i].valid = 1;
++ }
++ return 0;
++}
++__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
++
+ static int __init atstk1002_init(void)
+ {
+ at32_add_system_devices();
+Index: linux-2.6.18-avr32/arch/avr32/kernel/setup.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/kernel/setup.c 2006-11-01 13:26:19.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/kernel/setup.c 2006-11-01 13:31:32.000000000 +0100
+@@ -229,30 +229,6 @@ static int __init parse_tag_rsvd_mem(str
+ }
+ __tagtable(ATAG_RSVD_MEM, parse_tag_rsvd_mem);
+
+-static int __init parse_tag_ethernet(struct tag *tag)
+-{
+-#if 0
+- const struct platform_device *pdev;
+-
+- /*
+- * We really need a bus type that supports "classes"...this
+- * will do for now (until we must handle other kinds of
+- * ethernet controllers)
+- */
+- pdev = platform_get_device("macb", tag->u.ethernet.mac_index);
+- if (pdev && pdev->dev.platform_data) {
+- struct eth_platform_data *data = pdev->dev.platform_data;
+-
+- data->valid = 1;
+- data->mii_phy_addr = tag->u.ethernet.mii_phy_addr;
+- memcpy(data->hw_addr, tag->u.ethernet.hw_address,
+- sizeof(data->hw_addr));
+- }
+-#endif
+- return 0;
+-}
+-__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
+-
+ /*
+ * Scan the tag table for this tag, and call its parse function. The
+ * tag table is built by the linker from all the __tagtable
diff --git a/packages/linux/linux-2.6.18/avr32-network-gateway-support.patch b/packages/linux/linux-2.6.18/avr32-network-gateway-support.patch
new file mode 100644
index 0000000000..420e859bd4
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-network-gateway-support.patch
@@ -0,0 +1,233 @@
+From 16655aecb1a151c1f1707c64a571cd06e6a194af Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Mon, 30 Oct 2006 09:35:44 +0100
+Subject: [PATCH] Add support for the AVR32 Network Gateway
+---
+ arch/avr32/Kconfig | 3 +
+ arch/avr32/Makefile | 1
+ arch/avr32/boards/atngw/Makefile | 1
+ arch/avr32/boards/atngw/flash.c | 95 +++++++++++++++++++++++++++++++++++++++
+ arch/avr32/boards/atngw/setup.c | 81 +++++++++++++++++++++++++++++++++
+ 5 files changed, 181 insertions(+)
+
+Index: linux-2.6.18/arch/avr32/Kconfig
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/Kconfig 2006-12-13 09:45:34.000000000 +0100
++++ linux-2.6.18/arch/avr32/Kconfig 2006-12-13 09:45:34.000000000 +0100
+@@ -97,6 +97,9 @@
+ config BOARD_ATSTK1000
+ bool "ATSTK1000 evaluation board"
+ select BOARD_ATSTK1002 if CPU_AT32AP7000
++
++config BOARD_ATNGW
++ bool "AVR32 Network Gateway"
+ endchoice
+
+ choice
+Index: linux-2.6.18/arch/avr32/Makefile
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/Makefile 2006-12-13 09:45:34.000000000 +0100
++++ linux-2.6.18/arch/avr32/Makefile 2006-12-13 09:45:34.000000000 +0100
+@@ -27,6 +27,7 @@
+ head-y += arch/avr32/kernel/head.o
+ core-$(CONFIG_PLATFORM_AT32AP) += arch/avr32/mach-at32ap/
+ core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/
++core-$(CONFIG_BOARD_ATNGW) += arch/avr32/boards/atngw/
+ core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
+ core-y += arch/avr32/kernel/
+ core-y += arch/avr32/mm/
+Index: linux-2.6.18/arch/avr32/boards/atngw/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18/arch/avr32/boards/atngw/Makefile 2006-12-13 09:45:34.000000000 +0100
+@@ -0,0 +1 @@
++obj-y += setup.o flash.o
+Index: linux-2.6.18/arch/avr32/boards/atngw/flash.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18/arch/avr32/boards/atngw/flash.c 2006-12-13 09:45:34.000000000 +0100
+@@ -0,0 +1,95 @@
++/*
++ * ATNGW board-specific flash initialization
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/mtd/physmap.h>
++
++#include <asm/arch/smc.h>
++
++static struct smc_config flash_config __initdata = {
++ .ncs_read_setup = 0,
++ .nrd_setup = 40,
++ .ncs_write_setup = 0,
++ .nwe_setup = 10,
++
++ .ncs_read_pulse = 80,
++ .nrd_pulse = 40,
++ .ncs_write_pulse = 65,
++ .nwe_pulse = 55,
++
++ .read_cycle = 120,
++ .write_cycle = 120,
++
++ .bus_width = 2,
++ .nrd_controlled = 1,
++ .nwe_controlled = 1,
++ .byte_write = 1,
++};
++
++static struct mtd_partition flash_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0x00000000,
++ .size = 0x00020000, /* 128 KiB */
++ .mask_flags = MTD_WRITEABLE,
++ },
++ {
++ .name = "root",
++ .offset = 0x00020000,
++ .size = 0x007d0000,
++ },
++ {
++ .name = "env",
++ .offset = 0x007f0000,
++ .size = 0x00010000,
++ .mask_flags = MTD_WRITEABLE,
++ },
++};
++
++static struct physmap_flash_data flash_data = {
++ .width = 2,
++ .nr_parts = ARRAY_SIZE(flash_parts),
++ .parts = flash_parts,
++};
++
++static struct resource flash_resource = {
++ .start = 0x00000000,
++ .end = 0x007fffff,
++ .flags = IORESOURCE_MEM,
++};
++
++static struct platform_device flash_device = {
++ .name = "physmap-flash",
++ .id = 0,
++ .resource = &flash_resource,
++ .num_resources = 1,
++ .dev = {
++ .platform_data = &flash_data,
++ },
++};
++
++/* This needs to be called after the SMC has been initialized */
++static int __init atngw_flash_init(void)
++{
++ int ret;
++
++ ret = smc_set_configuration(0, &flash_config);
++ if (ret < 0) {
++ printk(KERN_ERR "atngw: failed to set NOR flash timing\n");
++ return ret;
++ }
++
++ platform_device_register(&flash_device);
++
++ return 0;
++}
++device_initcall(atngw_flash_init);
+Index: linux-2.6.18/arch/avr32/boards/atngw/setup.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18/arch/avr32/boards/atngw/setup.c 2006-12-13 09:59:44.000000000 +0100
+@@ -0,0 +1,84 @@
++/*
++ * Board-specific setup code for the Atmel Network Gateway
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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/bootmem.h>
++#include <linux/device.h>
++#include <linux/init.h>
++#include <linux/types.h>
++#include <linux/linkage.h>
++#include <linux/spi/spi.h>
++
++#include <asm/setup.h>
++
++#include <asm/arch/at32ap7000.h>
++#include <asm/arch/board.h>
++#include <asm/arch/init.h>
++
++/* Initialized by bootloader-specific startup code. */
++struct tag *bootloader_tags __initdata;
++
++static struct eth_platform_data __initdata eth_data[2];
++
++static struct spi_board_info spi_board_info[] __initdata = {
++ {
++ .modalias = "mtd_dataflash",
++ .controller_data = (void *)GPIO_PIN_PA(3),
++ .max_speed_hz = 66000000,
++ .bus_num = 0,
++ .chip_select = 0,
++ },
++};
++
++static int __init parse_tag_ethernet(struct tag *tag)
++{
++ int i;
++
++ i = tag->u.ethernet.mac_index;
++ if (i < ARRAY_SIZE(eth_data)) {
++ eth_data[i].mii_phy_addr = tag->u.ethernet.mii_phy_addr;
++ memcpy(&eth_data[i].hw_addr, tag->u.ethernet.hw_address,
++ sizeof(eth_data[i].hw_addr));
++ eth_data[i].valid = 1;
++ }
++ return 0;
++}
++__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
++
++void __init setup_board(void)
++{
++ at32_map_usart(1, 0); /* /dev/ttyS0 */
++
++ at32_setup_serial_console(0);
++}
++
++static int __init atngw_init(void)
++{
++ at32_add_system_devices();
++
++ at32_add_device_usart(0);
++
++ if (eth_data[0].valid)
++ at32_add_device_eth(0, &eth_data[0]);
++ if (eth_data[1].valid)
++ at32_add_device_eth(1, &eth_data[1]);
++
++ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
++
++ at32_add_device_spi(0);
++ at32_add_device_mmci(0);
++ at32_add_device_usb(0);
++
++ return 0;
++}
++postcore_initcall(atngw_init);
++
++void board_setup_fbmem(unsigned long fbmem_start, unsigned long fbmem_size)
++{
++
++}
diff --git a/packages/linux/linux-2.6.18/avr32-oprofile.patch b/packages/linux/linux-2.6.18/avr32-oprofile.patch
new file mode 100644
index 0000000000..5fbc9855aa
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-oprofile.patch
@@ -0,0 +1,610 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Wed Jan 4 17:26:23 2006 +0100
+Subject: [PATCH] AVR32 oprofile implementation
+
+This adds support for oprofile on the AVR32 architecture.
+---
+
+ arch/avr32/Kconfig | 2
+ arch/avr32/Makefile | 1
+ arch/avr32/oprofile/Kconfig | 23 +++
+ arch/avr32/oprofile/Makefile | 10 +
+ arch/avr32/oprofile/common.c | 169 +++++++++++++++++++++++++++
+ arch/avr32/oprofile/init.c | 29 ++++
+ arch/avr32/oprofile/op_avr32_model.h | 25 +++
+ arch/avr32/oprofile/op_counter.h | 29 ++++
+ arch/avr32/oprofile/op_model_avr32.c | 219 +++++++++++++++++++++++++++++++++++
+ arch/avr32/oprofile/op_model_avr32.h | 21 +++
+ 10 files changed, 528 insertions(+)
+
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/Kconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/Kconfig 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,23 @@
++
++menu "Profiling support"
++ depends on EXPERIMENTAL
++
++config PROFILING
++ bool "Profiling support (EXPERIMENTAL)"
++ help
++ Say Y here to enable the extended profiling support mechanisms used
++ by profilers such as OProfile.
++
++
++config OPROFILE
++ tristate "OProfile system profiling (EXPERIMENTAL)"
++ depends on PROFILING
++ help
++ OProfile is a profiling system capable of profiling the
++ whole system, including the kernel, kernel modules, libraries,
++ and applications.
++
++ If unsure, say N.
++
++endmenu
++
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/Makefile 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,10 @@
++obj-$(CONFIG_OPROFILE) += oprofile.o
++
++DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
++ oprof.o cpu_buffer.o buffer_sync.o \
++ event_buffer.o oprofile_files.o \
++ oprofilefs.o oprofile_stats.o \
++ timer_int.o )
++
++oprofile-y := $(DRIVER_OBJS) init.o common.o
++oprofile-y += op_model_avr32.o
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/common.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/common.c 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,169 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ *
++ * Author: Ronny Pedersen
++ */
++
++#define DEBUG
++#include <linux/init.h>
++#include <linux/oprofile.h>
++#include <linux/errno.h>
++#include <asm/semaphore.h>
++#include <linux/sysdev.h>
++
++#include "op_avr32_model.h"
++#include "op_counter.h"
++
++static struct op_avr32_model_spec *pc_model;
++static int pc_enabled = 0;
++static struct semaphore pc_sem;
++
++
++static int pc_start(void);
++static int pc_setup(void);
++static void pc_stop(void);
++static int pc_create_files(struct super_block *, struct dentry *);
++
++
++struct op_counter_config counter_config[OP_MAX_COUNTER];
++
++static int pc_suspend(struct sys_device *dev, u32 state)
++{
++ if (pc_enabled)
++ pc_stop();
++ return 0;
++}
++
++static int pc_resume(struct sys_device *dev)
++{
++ if (pc_enabled)
++ pc_start();
++ return 0;
++}
++
++static struct sysdev_class oprofile_sysclass = {
++ set_kset_name("oprofile"),
++ .resume = pc_resume,
++ .suspend = pc_suspend,
++};
++
++static struct sys_device device_oprofile = {
++ .id = 0,
++ .cls = &oprofile_sysclass,
++};
++
++static int __init init_driverfs(void)
++{
++ int ret;
++
++ if (!(ret = sysdev_class_register(&oprofile_sysclass)))
++ ret = sysdev_register(&device_oprofile);
++
++ return ret;
++}
++
++static void exit_driverfs(void)
++{
++ sysdev_unregister(&device_oprofile);
++ sysdev_class_unregister(&oprofile_sysclass);
++}
++
++static int pc_create_files(struct super_block *sb, struct dentry *root)
++{
++ unsigned int i;
++
++ pr_debug("AVR32 Peformance Counters: create files\n");
++ for (i = 0; i < pc_model->num_counters; i++) {
++ struct dentry *dir;
++ char buf[2];
++
++ snprintf(buf, sizeof buf, "%d", i);
++ dir = oprofilefs_mkdir(sb, root, buf);
++ oprofilefs_create_ulong(sb, dir, "enabled",
++ &counter_config[i].enabled);
++ oprofilefs_create_ulong(sb, dir, "event",
++ &counter_config[i].event);
++ oprofilefs_create_ulong(sb, dir, "count",
++ &counter_config[i].count);
++ oprofilefs_create_ulong(sb, dir, "unit_mask",
++ &counter_config[i].unit_mask);
++ oprofilefs_create_ulong(sb, dir, "kernel",
++ &counter_config[i].kernel);
++ oprofilefs_create_ulong(sb, dir, "user",
++ &counter_config[i].user);
++ }
++
++ return 0;
++}
++
++static int pc_setup(void)
++{
++ int ret;
++
++ spin_lock(&oprofilefs_lock);
++ pr_debug("AVR32 Peformance Counters: setup\n");
++ ret = pc_model->setup_ctrs();
++ spin_unlock(&oprofilefs_lock);
++ return ret;
++}
++
++static int pc_start(void)
++{
++ int ret = -EBUSY;
++
++ down(&pc_sem);
++ if (!pc_enabled) {
++ pr_debug("AVR32 Peformance Counters: start\n");
++ ret = pc_model->start();
++ pc_enabled = !ret;
++ }
++ up(&pc_sem);
++ return ret;
++}
++
++static void pc_stop(void)
++{
++ down(&pc_sem);
++ pr_debug("AVR32 Peformance Counters: stop\n");
++ if (pc_enabled)
++ pc_model->stop();
++ pc_enabled = 0;
++ up(&pc_sem);
++}
++
++int __init pc_init(struct oprofile_operations *ops,
++ struct op_avr32_model_spec *spec)
++{
++ init_MUTEX(&pc_sem);
++
++ if ( spec->init )
++ if (spec->init() < 0)
++ return -ENODEV;
++
++ pc_model = spec;
++ init_driverfs();
++ ops->create_files = pc_create_files;
++ ops->setup = pc_setup;
++ ops->shutdown = pc_stop;
++ ops->start = pc_start;
++ ops->stop = pc_stop;
++ ops->cpu_type = pc_model->name;
++ printk(KERN_INFO "oprofile: using %s Performance Counters\n",
++ spec->name);
++ pr_debug("AVR32 Peformance Counters: pc_init\n");
++
++ return 0;
++}
++
++void pc_exit(void)
++{
++ if (pc_model) {
++ pr_debug("AVR32 Peformance Counters: exit\n");
++ exit_driverfs();
++ pc_model = NULL;
++ }
++}
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/init.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/init.c 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,29 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ *
++ * Author: Ronny Pedersen
++ */
++
++#include <linux/oprofile.h>
++#include <linux/init.h>
++#include <linux/errno.h>
++#include "op_avr32_model.h"
++#include "op_model_avr32.h"
++
++int __init oprofile_arch_init(struct oprofile_operations *ops)
++{
++ int ret = -ENODEV;
++
++ ret = pc_init(ops, &op_avr32_spec);
++
++ return ret;
++}
++
++void oprofile_arch_exit(void)
++{
++ pc_exit();
++}
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/op_avr32_model.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/op_avr32_model.h 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,25 @@
++/*
++ * interface to AVR32 machine specific operations
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ *
++ * Author: Ronny Pedersen
++ */
++
++#ifndef OP_AVR32_MODEL_H
++#define OP_AVR32_MODEL_H
++
++struct op_avr32_model_spec {
++ int (*init)(void);
++ unsigned int num_counters;
++ int (*setup_ctrs)(void);
++ int (*start)(void);
++ void (*stop)(void);
++ char *name;
++};
++
++#endif /* OP_AVR32_MODEL_H */
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/op_counter.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/op_counter.h 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,29 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ *
++ * Author: Ronny Pedersen
++ */
++#ifndef OP_COUNTER_H
++#define OP_COUNTER_H
++
++#define OP_MAX_COUNTER 3
++
++/* Per performance monitor configuration as set via
++ * oprofilefs.
++ */
++struct op_counter_config {
++ unsigned long count;
++ unsigned long enabled;
++ unsigned long event;
++ unsigned long unit_mask;
++ unsigned long kernel;
++ unsigned long user;
++};
++
++extern struct op_counter_config counter_config[];
++
++#endif /* OP_COUNTER_H */
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/op_model_avr32.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/op_model_avr32.c 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,219 @@
++/*
++ * AVR32 Performance Counter Driver
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ *
++ * Author: Ronny Pedersen
++ */
++
++#define DEBUG
++
++#include <linux/types.h>
++#include <linux/errno.h>
++#include <linux/sched.h>
++#include <linux/oprofile.h>
++#include <linux/interrupt.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++#include <asm/sysreg.h>
++
++#include "op_counter.h"
++#include "op_avr32_model.h"
++
++
++#define PC_ENABLE 0x001 /* Enable counters */
++#define PCNT_RESET 0x002 /* Reset event counters */
++#define CCNT_RESET 0x004 /* Reset clock counter */
++#define PC_RESET (CCNT_RESET | PCNT_RESET)
++#define PC_CNT64 0x008 /* Make CCNT count every 64th cycle */
++
++
++#define EVT_UNUSED 0xFF
++
++struct pc_counter {
++ volatile unsigned long ovf;
++ unsigned long reset_counter;
++};
++
++enum { PCCNT, PCNT0, PCNT1, MAX_COUNTERS };
++
++#define PCCNT_IE (1 << 4)
++#define PCNT0_IE (1 << 5)
++#define PCNT1_IE (1 << 6)
++
++#define PCCNT_F (1 << 8)
++#define PCNT0_F (1 << 9)
++#define PCNT1_F (1 << 10)
++
++#define AVR32_PC_IRQ 1
++
++static const u32 int_mask[MAX_COUNTERS] = { PCCNT_IE, PCNT0_IE, PCNT1_IE };
++static const u32 ovf_mask[MAX_COUNTERS] = { PCCNT_F, PCNT0_F, PCNT1_F };
++
++static struct pc_counter results[MAX_COUNTERS];
++
++static void write_pccr(u32 val)
++{
++ __builtin_mtsr(SYSREG_PCCR, val);
++}
++
++static u32 read_pccr(void)
++{
++ return __builtin_mfsr(SYSREG_PCCR);
++}
++
++static u32 read_counter(int counter)
++{
++ switch (counter) {
++ case PCCNT:
++ return __builtin_mfsr(SYSREG_PCCNT);
++ case PCNT0:
++ return __builtin_mfsr(SYSREG_PCNT0);
++ case PCNT1:
++ return __builtin_mfsr(SYSREG_PCNT0);
++ default:
++ return 0;
++ }
++}
++
++
++static void write_counter(int counter, u32 val)
++{
++ switch (counter) {
++ case PCCNT:
++ __builtin_mtsr(SYSREG_PCCNT, val);
++ case PCNT0:
++ __builtin_mtsr(SYSREG_PCNT0, val);
++ case PCNT1:
++ __builtin_mtsr(SYSREG_PCNT0, val);
++ default:
++ break;
++ }
++}
++
++static int avr32_setup_ctrs(void)
++{
++ u32 pccr;
++ int i;
++
++ for (i = PCCNT; i < MAX_COUNTERS; i++) {
++ if (counter_config[i].enabled)
++ continue;
++
++ counter_config[i].event = EVT_UNUSED;
++ }
++
++ pccr = ((counter_config[PCNT1].event << 18)
++ | (counter_config[PCNT0].event << 12));
++ pr_debug("avr32_setup_ctrs: pccr: %#08x\n", pccr);
++ write_pccr(pccr);
++
++ for (i = PCCNT; i < MAX_COUNTERS; i++) {
++ if (counter_config[i].event == EVT_UNUSED) {
++ counter_config[i].event = 0;
++ continue;
++ }
++
++ results[i].reset_counter = counter_config[i].count;
++ write_counter(i, -(u32)counter_config[i].count);
++ pr_debug("avr32_setup_ctrs: counter%d %#08x from %#08lx\n",
++ i, read_counter(i), counter_config[i].count);
++ }
++
++ return 0;
++}
++
++static void inline check_ctrs(void)
++{
++ int i;
++ u32 pccr = read_pccr();
++
++ /* Writeback clears overflow flag */
++ write_pccr(pccr & ~PC_ENABLE);
++
++ for (i = PCCNT; i < MAX_COUNTERS; i++) {
++ if (!(int_mask[i] & pccr))
++ continue;
++
++ if (pccr & ovf_mask[i])
++ results[i].ovf++;
++ }
++}
++
++
++static irqreturn_t avr32_pc_interrupt(int irq, void *arg,
++ struct pt_regs *regs)
++{
++ int i;
++
++ check_ctrs();
++
++ for (i = PCCNT; i < MAX_COUNTERS; i++) {
++ if (!results[i].ovf)
++ continue;
++
++ write_counter(i, -(u32)results[i].reset_counter);
++ oprofile_add_sample(regs, i);
++ results[i].ovf--;
++ }
++
++ /* Enable Performance Counter */
++ write_pccr(read_pccr() | PC_ENABLE);
++
++ return IRQ_HANDLED;
++}
++
++static void avr32_pc_stop(void)
++{
++ write_pccr(read_pccr() & ~PC_ENABLE);
++
++ free_irq(AVR32_PC_IRQ, results);
++}
++
++static int avr32_pc_start(void)
++{
++ int i, ret;
++ u32 pccr = read_pccr();
++
++ ret = request_irq(AVR32_PC_IRQ, avr32_pc_interrupt, SA_INTERRUPT,
++ "AVR32 Performance Counter", (void *)results);
++
++ if (ret < 0) {
++ printk(KERN_ERR
++ "oprofile: unable to request IRQ%d for AVR32"
++ " Performance Counter\n",
++ AVR32_PC_IRQ);
++ return ret;
++ }
++
++ /* Enable interrupts */
++ for (i = PCCNT; i < MAX_COUNTERS; i++) {
++ if (counter_config[i].enabled)
++ pccr |= int_mask[i];
++ }
++
++ /* Disable scaler */
++ pccr &= ~PC_CNT64;
++
++ /* Enable Performance Counter */
++ pccr |= PC_ENABLE;
++
++ write_pccr(pccr);
++ pr_debug("avr32_pc_start: pc: %#08x\n", pccr);
++ return 0;
++}
++
++
++struct op_avr32_model_spec op_avr32_spec = {
++ .init = 0,
++ .setup_ctrs = avr32_setup_ctrs,
++ .start = avr32_pc_start,
++ .stop = avr32_pc_stop,
++ .num_counters = MAX_COUNTERS,
++ .name = "avr32",
++};
++
+Index: linux-2.6.18-avr32/arch/avr32/oprofile/op_model_avr32.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/arch/avr32/oprofile/op_model_avr32.h 2006-10-20 14:08:20.000000000 +0200
+@@ -0,0 +1,21 @@
++/**
++ * AVR32 Machine Specific Operations
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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.
++ *
++ * Author: Ronny Pedersen
++ */
++#ifndef OP_MODEL_AVR32_H
++#define OP_MODEL_AVR32_H
++
++extern struct op_avr32_model_spec op_avr32_spec;
++extern int pc_init(struct oprofile_operations *ops,
++ struct op_avr32_model_spec *spec);
++extern void pc_exit(void);
++
++
++#endif
+Index: linux-2.6.18-avr32/arch/avr32/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/Kconfig 2006-10-20 14:04:43.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/Kconfig 2006-10-20 14:08:20.000000000 +0200
+@@ -190,6 +190,8 @@ source "drivers/Kconfig"
+
+ source "fs/Kconfig"
+
++source "arch/avr32/oprofile/Kconfig"
++
+ source "arch/avr32/Kconfig.debug"
+
+ source "security/Kconfig"
+Index: linux-2.6.18-avr32/arch/avr32/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/Makefile 2006-10-20 14:04:54.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/Makefile 2006-10-20 14:09:10.000000000 +0200
+@@ -30,6 +30,7 @@ core-$(CONFIG_BOARD_ATSTK1000) += arch/
+ core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
+ core-y += arch/avr32/kernel/
+ core-y += arch/avr32/mm/
++drivers-$(CONFIG_OPROFILE) += arch/avr32/oprofile/
+ libs-y += arch/avr32/lib/
+
+ archincdir-$(CONFIG_PLATFORM_AT32AP) := arch-at32ap
diff --git a/packages/linux/linux-2.6.18/avr32-sound.patch b/packages/linux/linux-2.6.18/avr32-sound.patch
new file mode 100644
index 0000000000..597a44de3b
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-sound.patch
@@ -0,0 +1,51 @@
+---
+ sound/Kconfig | 2 ++
+ sound/Makefile | 1 +
+ sound/avr32/Kconfig | 6 ++++++
+ sound/avr32/Makefile | 3 +++
+ 4 files changed, 12 insertions(+)
+
+Index: linux-2.6.18-avr32/sound/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/Kconfig 2006-09-12 10:44:15.000000000 +0200
++++ linux-2.6.18-avr32/sound/Kconfig 2006-09-12 10:45:14.000000000 +0200
+@@ -62,6 +62,8 @@ source "sound/aoa/Kconfig"
+
+ source "sound/arm/Kconfig"
+
++source "sound/avr32/Kconfig"
++
+ source "sound/mips/Kconfig"
+
+ # the following will depenend on the order of config.
+Index: linux-2.6.18-avr32/sound/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/sound/Makefile 2006-09-12 10:44:15.000000000 +0200
++++ linux-2.6.18-avr32/sound/Makefile 2006-09-12 10:44:37.000000000 +0200
+@@ -5,6 +5,7 @@ obj-$(CONFIG_SOUND) += soundcore.o
+ obj-$(CONFIG_SOUND_PRIME) += oss/
+ obj-$(CONFIG_DMASOUND) += oss/
+ obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
++obj-$(CONFIG_SND) += avr32/
+ obj-$(CONFIG_SND_AOA) += aoa/
+
+ ifeq ($(CONFIG_SND),y)
+Index: linux-2.6.18-avr32/sound/avr32/Kconfig
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/avr32/Kconfig 2006-09-12 10:45:52.000000000 +0200
+@@ -0,0 +1,6 @@
++# ALSA AVR32 drivers
++
++menu "ALSA AVR32 devices"
++ depends on SND != n && AVR32
++
++endmenu
+Index: linux-2.6.18-avr32/sound/avr32/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/sound/avr32/Makefile 2006-09-12 10:46:03.000000000 +0200
+@@ -0,0 +1,3 @@
++#
++# Makefile for ALSA
++#
diff --git a/packages/linux/linux-2.6.18/avr32-time-add-shared-interrupts.patch b/packages/linux/linux-2.6.18/avr32-time-add-shared-interrupts.patch
new file mode 100644
index 0000000000..c626016ff4
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-time-add-shared-interrupts.patch
@@ -0,0 +1,30 @@
+--- linux-2.6.18.orig/arch/avr32/kernel/time.c 2006-11-06 14:36:50.000000000 +0100
++++ linux-2.6.18/arch/avr32/kernel/time.c 2006-11-06 14:57:03.000000000 +0100
+@@ -21,6 +21,7 @@
+ #include <linux/profile.h>
+ #include <linux/sysdev.h>
+
++#include <asm/intc.h>
+ #include <asm/div64.h>
+ #include <asm/sysreg.h>
+ #include <asm/io.h>
+@@ -136,6 +137,10 @@
+ {
+ unsigned int count;
+
++ /* Check if interrupt is timer or performance counters */
++ if (!(intc_get_pending(irq) & 1))
++ return IRQ_NONE;
++
+ /* ack timer interrupt and try to set next interrupt */
+ count = avr32_hpt_read();
+ avr32_timer_ack();
+@@ -164,7 +169,7 @@
+
+ static struct irqaction timer_irqaction = {
+ .handler = timer_interrupt,
+- .flags = IRQF_DISABLED,
++ .flags = IRQF_DISABLED|IRQF_SHARED,
+ .name = "timer",
+ };
+
diff --git a/packages/linux/linux-2.6.18/avr32-unistd-h-move-ifdef-kernel.patch b/packages/linux/linux-2.6.18/avr32-unistd-h-move-ifdef-kernel.patch
new file mode 100644
index 0000000000..eb16d80b46
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32-unistd-h-move-ifdef-kernel.patch
@@ -0,0 +1,39 @@
+---
+ include/asm-avr32/unistd.h | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.18-avr32/include/asm-avr32/unistd.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/unistd.h 2006-11-29 16:49:54.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/unistd.h 2006-11-29 16:50:32.000000000 +0100
+@@ -281,6 +281,7 @@
+ #define __NR_tee 263
+ #define __NR_vmsplice 264
+
++#ifdef __KERNEL__
+ #define NR_syscalls 265
+
+
+@@ -304,7 +305,6 @@
+ return (type) (res); \
+ } while (0)
+
+-#ifdef __KERNEL__
+ #define __ARCH_WANT_IPC_PARSE_VERSION
+ #define __ARCH_WANT_STAT64
+ #define __ARCH_WANT_SYS_ALARM
+@@ -319,7 +319,6 @@
+ #define __ARCH_WANT_SYS_GETPGRP
+ #define __ARCH_WANT_SYS_RT_SIGACTION
+ #define __ARCH_WANT_SYS_RT_SIGSUSPEND
+-#endif
+
+ #if defined(__KERNEL_SYSCALLS__) || defined(__CHECKER__)
+
+@@ -384,4 +383,6 @@ asmlinkage int sys_execve(char __user *u
+ */
+ #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
+
++#endif /* __KERNEL__ */
++
+ #endif /* __ASM_AVR32_UNISTD_H */
diff --git a/packages/linux/linux-2.6.18/avr32_defconfig b/packages/linux/linux-2.6.18/avr32_defconfig
new file mode 100644
index 0000000000..bf9615c088
--- /dev/null
+++ b/packages/linux/linux-2.6.18/avr32_defconfig
@@ -0,0 +1,1036 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Mon Mar 5 16:48:58 2007
+#
+CONFIG_AVR32=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_TIME=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+# CONFIG_FUTEX is not set
+# CONFIG_EPOLL is not set
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODULE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# System Type and features
+#
+CONFIG_SUBARCH_AVR32B=y
+CONFIG_MMU=y
+CONFIG_PERFORMANCE_COUNTERS=y
+CONFIG_PLATFORM_AT32AP=y
+CONFIG_CPU_AT32AP7000=y
+CONFIG_BOARD_ATSTK1002=y
+CONFIG_BOARD_ATSTK1000=y
+CONFIG_LOADER_U_BOOT=y
+
+#
+# Atmel AVR32 AP options
+#
+CONFIG_PIO_DEV=y
+# CONFIG_AP7000_32_BIT_SMC is not set
+CONFIG_AP7000_16_BIT_SMC=y
+# CONFIG_AP7000_8_BIT_SMC is not set
+CONFIG_LOAD_ADDRESS=0x10000000
+CONFIG_ENTRY_ADDRESS=0x90000000
+CONFIG_PHYS_OFFSET=0x10000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
+# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
+# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_OWNERSHIP_TRACE is not set
+CONFIG_DW_DMAC=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_CMDLINE=""
+
+#
+# Bus options
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+CONFIG_PCMCIA_DEBUG=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+# CONFIG_PCMCIA_IOCTL is not set
+
+#
+# PC-card bridges
+#
+CONFIG_AT32_CF=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# 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
+
+#
+# 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_PATA_PCMCIA=y
+# CONFIG_PATA_PLATFORM is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_MACB=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ATMELTWI=y
+CONFIG_I2C_ATMELTWI_BAUDRATE=100000
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+CONFIG_FB_SIDSA=y
+CONFIG_FB_SIDSA_DEFAULT_BPP=16
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_LCD_LTV350QV=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA AVR32 devices
+#
+# CONFIG_SND_ATMEL_AC97 is not set
+CONFIG_SND_AT73C213=y
+# CONFIG_SND_AT73C213_USE_ALSA_MALLOC_CALLS is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+CONFIG_USB_GADGET_HUSB2DEV=y
+CONFIG_USB_HUSB2DEV=y
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_ATMELMCI=y
+# CONFIG_MMC_TIFM_SD is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Virtualization
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY 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_FAT_FS=m
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_PROC_KCORE is not set
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=y
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RWSEMS 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_KPROBES is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-2.6.18/dmac-add-explicit-blockcount-to-dma_request_sg.patch b/packages/linux/linux-2.6.18/dmac-add-explicit-blockcount-to-dma_request_sg.patch
new file mode 100644
index 0000000000..54400aeff1
--- /dev/null
+++ b/packages/linux/linux-2.6.18/dmac-add-explicit-blockcount-to-dma_request_sg.patch
@@ -0,0 +1,66 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Sun, 14 Jan 2007 19:07:06 +0100
+Subject: [DW DMAC] Add nr_blocks field to struct dma_request_sg
+
+Allow drivers to specify how many blocks to transfer in a sg request.
+The number of blocks will no longer be automatically calculated based
+on the scatterlist because this doesn't always correspond with the
+desired amount of data to be transferred.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ arch/avr32/drivers/dw-dmac.c | 13 ++++++-------
+ include/asm-avr32/dma-controller.h | 1 +
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+Index: linux-2.6.18-avr32/include/asm-avr32/dma-controller.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/dma-controller.h 2007-01-15 15:34:32.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/dma-controller.h 2007-01-15 15:34:50.000000000 +0100
+@@ -36,6 +36,7 @@ struct dma_request_sg {
+ int nr_sg;
+ struct scatterlist *sg;
+ unsigned long block_size;
++ unsigned int nr_blocks;
+
+ dma_addr_t data_reg;
+ unsigned short periph_id;
+Index: linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/drivers/dw-dmac.c 2007-01-15 15:35:00.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.c 2007-01-15 15:35:03.000000000 +0100
+@@ -176,7 +176,8 @@ static int dmac_prepare_request_sg(struc
+ struct dw_dma_channel *chan;
+ unsigned long ctlhi, ctllo, cfghi, cfglo;
+ unsigned long block_size;
+- int ret, i, nr_blocks, direction;
++ unsigned int nr_blocks;
++ int ret, i, direction;
+ unsigned long flags;
+
+ spin_lock_irqsave(&dmac->lock, flags);
+@@ -215,12 +216,9 @@ static int dmac_prepare_request_sg(struc
+ * Each block will get its own Linked List Item (LLI) below.
+ */
+ block_size = req->block_size;
+- pr_debug("block_size = %lu, nr_sg = %u\n", block_size, req->nr_sg);
+- for (i = 0, nr_blocks = 0; i < req->nr_sg; i++) {
+- pr_debug("sg[i].length = %u\n", req->sg[i].length);
+- BUG_ON(req->sg[i].length % block_size);
+- nr_blocks += req->sg[i].length / block_size;
+- }
++ nr_blocks = req->nr_blocks;
++ pr_debug("block_size %lu, nr_blocks %u nr_sg = %u\n",
++ block_size, nr_blocks, req->nr_sg);
+
+ BUG_ON(nr_blocks == 0);
+ chan->nr_blocks = nr_blocks;
+@@ -269,6 +267,7 @@ static int dmac_prepare_request_sg(struc
+ }
+ dmac_chan_writel_lo(dmac, req->req.channel, CTL, ctllo);
+ dmac_chan_writel_hi(dmac, req->req.channel, CTL, ctlhi);
++ pr_debug("ctl hi:lo 0x%lx:%lx\n", ctlhi, ctllo);
+ } else {
+ struct dw_dma_lli *lli, *lli_prev = NULL;
+ int j = 0, offset = 0;
diff --git a/packages/linux/linux-2.6.18/dmac-stopping-idle-channel-is-not-fatal.patch b/packages/linux/linux-2.6.18/dmac-stopping-idle-channel-is-not-fatal.patch
new file mode 100644
index 0000000000..ed2714d0d7
--- /dev/null
+++ b/packages/linux/linux-2.6.18/dmac-stopping-idle-channel-is-not-fatal.patch
@@ -0,0 +1,93 @@
+---
+ arch/avr32/drivers/dw-dmac.c | 50 ++++++++++++++++++++++++-------------------
+ 1 file changed, 29 insertions(+), 21 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/drivers/dw-dmac.c 2007-01-04 09:56:32.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/drivers/dw-dmac.c 2007-01-04 15:38:13.000000000 +0100
+@@ -7,7 +7,6 @@
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+-
+ #include <linux/clk.h>
+ #include <linux/device.h>
+ #include <linux/dma-mapping.h>
+@@ -155,6 +154,21 @@ fail:
+ return NULL;
+ }
+
++static void cleanup_channel(struct dw_dma_controller *dmac,
++ struct dw_dma_channel *chan)
++{
++ unsigned int i;
++
++ if (chan->nr_blocks > 1) {
++ for (i = 0; i < chan->nr_blocks; i++)
++ dma_pool_free(dmac->lli_pool, chan->block[i].lli_vaddr,
++ chan->block[i].lli_dma_addr);
++ kfree(chan->block);
++ }
++
++ chan->state = CH_STATE_ALLOCATED;
++}
++
+ static int dmac_prepare_request_sg(struct dma_controller *_dmac,
+ struct dma_request_sg *req)
+ {
+@@ -313,6 +327,7 @@ static int dmac_prepare_request_sg(struc
+ * SAR, DAR and CTL are initialized from the LLI. We
+ * only have to enable the LLI bits in CTL.
+ */
++ dmac_chan_writel_hi(dmac, req->req.channel, CTL, 0);
+ dmac_chan_writel_lo(dmac, req->req.channel, LLP,
+ chan->block[0].lli_dma_addr);
+ dmac_chan_writel_lo(dmac, req->req.channel, CTL, 1 << 28 | 1 << 27);
+@@ -520,33 +535,26 @@ static dma_addr_t dmac_get_current_pos(s
+ }
+
+
+-static void cleanup_channel(struct dw_dma_controller *dmac,
+- struct dw_dma_channel *chan)
+-{
+- unsigned int i;
+-
+- if (chan->nr_blocks > 1) {
+- for (i = 0; i < chan->nr_blocks; i++)
+- dma_pool_free(dmac->lli_pool, chan->block[i].lli_vaddr,
+- chan->block[i].lli_dma_addr);
+- kfree(chan->block);
+- }
+-
+- chan->state = CH_STATE_ALLOCATED;
+-}
+-
+ static int dmac_stop_request(struct dma_controller *_dmac,
+ unsigned int channel)
+ {
+ struct dw_dma_controller *dmac = to_dw_dmac(_dmac);
++ struct dw_dma_channel *chan;
+
+ BUG_ON(channel >= DMAC_NR_CHANNELS);
+
+- BUG_ON(dmac->channel[channel].state != CH_STATE_BUSY);
+-
+- clear_channel_bit(dmac, CH_EN, channel);
+-
+- cleanup_channel(dmac, &dmac->channel[channel]);
++ chan = &dmac->channel[channel];
++ pr_debug("stop: st%u s%08x d%08x l%08x ctl0x%08x:0x%08x\n",
++ chan->state, dmac_chan_readl_lo(dmac, channel, SAR),
++ dmac_chan_readl_lo(dmac, channel, DAR),
++ dmac_chan_readl_lo(dmac, channel, LLP),
++ dmac_chan_readl_hi(dmac, channel, CTL),
++ dmac_chan_readl_lo(dmac, channel, CTL));
++
++ if (chan->state == CH_STATE_BUSY) {
++ clear_channel_bit(dmac, CH_EN, channel);
++ cleanup_channel(dmac, &dmac->channel[channel]);
++ }
+
+ return 0;
+ }
diff --git a/packages/linux/linux-2.6.18/dont-include-map-h-from-physmap-h.patch b/packages/linux/linux-2.6.18/dont-include-map-h-from-physmap-h.patch
new file mode 100644
index 0000000000..c7f03f9828
--- /dev/null
+++ b/packages/linux/linux-2.6.18/dont-include-map-h-from-physmap-h.patch
@@ -0,0 +1,33 @@
+From 00424e00aeeecfd17ee71918b183e50d07641c5e Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Wed, 10 Jan 2007 18:55:18 +0100
+Subject: [PATCH] MTD: Don't include map.h from physmap.h
+
+Replace inclusion of <linux/mtd/map.h> with a forward-declaration of
+struct map_info. This is necessary because physmap.h may be included
+in platform code and map.h will give errors if MTD isn't enabled.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ include/linux/mtd/physmap.h | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/include/linux/mtd/physmap.h b/include/linux/mtd/physmap.h
+index 86831e3..0dc07d5 100644
+--- a/include/linux/mtd/physmap.h
++++ b/include/linux/mtd/physmap.h
+@@ -18,9 +18,10 @@
+ #define __LINUX_MTD_PHYSMAP__
+
+ #include <linux/mtd/mtd.h>
+-#include <linux/mtd/map.h>
+ #include <linux/mtd/partitions.h>
+
++struct map_info;
++
+ struct physmap_flash_data {
+ unsigned int width;
+ void (*set_vpp)(struct map_info *, int);
+--
+1.4.4.1
+
diff --git a/packages/linux/linux-2.6.18/fix-alpha-color-bitfield.patch b/packages/linux/linux-2.6.18/fix-alpha-color-bitfield.patch
new file mode 100644
index 0000000000..f563a501a1
--- /dev/null
+++ b/packages/linux/linux-2.6.18/fix-alpha-color-bitfield.patch
@@ -0,0 +1,21 @@
+---
+ drivers/video/sidsafb.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.18-avr32/drivers/video/sidsafb.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/video/sidsafb.c 2006-10-11 15:14:06.000000000 +0200
++++ linux-2.6.18-avr32/drivers/video/sidsafb.c 2006-10-18 14:51:31.000000000 +0200
+@@ -300,8 +300,11 @@ static int sidsafb_check_var(struct fb_v
+ var->green.length = 5;
+ var->blue.length = 5;
+ break;
+- case 24:
+ case 32:
++ var->transp.offset = 24;
++ var->transp.length = 8;
++ /* fall through */
++ case 24:
+ var->red.offset = 16;
+ var->green.offset = 8;
+ var->blue.offset = 0;
diff --git a/packages/linux/linux-2.6.18/fix-gpio-prototypes.patch b/packages/linux/linux-2.6.18/fix-gpio-prototypes.patch
new file mode 100644
index 0000000000..2b5a09620b
--- /dev/null
+++ b/packages/linux/linux-2.6.18/fix-gpio-prototypes.patch
@@ -0,0 +1,75 @@
+---
+ arch/avr32/mach-at32ap/pio.c | 15 +++++++++------
+ include/asm-avr32/arch-at32ap/gpio.h | 6 +++---
+ 2 files changed, 12 insertions(+), 9 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/pio.c 2006-11-29 18:14:54.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-11-29 18:17:15.000000000 +0100
+@@ -49,7 +49,7 @@ static struct pio_device *gpio_to_pio(un
+ /* Pin multiplexing API */
+
+ void __init at32_select_periph(unsigned int pin, unsigned int periph,
+- int use_pullup)
++ unsigned long flags)
+ {
+ struct pio_device *pio;
+ unsigned int pin_index = pin & 0x1f;
+@@ -73,7 +73,7 @@ void __init at32_select_periph(unsigned
+ pio_writel(pio, ASR, mask);
+
+ pio_writel(pio, PDR, mask);
+- if (!use_pullup)
++ if (!(flags & AT32_GPIOF_PULLUP))
+ pio_writel(pio, PUDR, mask);
+
+ return;
+@@ -82,8 +82,7 @@ fail:
+ dump_stack();
+ }
+
+-void __init at32_select_gpio(unsigned int pin, int enable_output,
+- int use_pullup)
++void __init at32_select_gpio(unsigned int pin, unsigned long flags)
+ {
+ struct pio_device *pio;
+ unsigned int pin_index = pin & 0x1f;
+@@ -101,13 +100,17 @@ void __init at32_select_gpio(unsigned in
+ }
+
+ pio_writel(pio, PUER, mask);
+- if (enable_output)
++ if (flags & AT32_GPIOF_HIGH)
++ pio_writel(pio, SODR, mask);
++ else
++ pio_writel(pio, CODR, mask);
++ if (flags & AT32_GPIOF_OUTPUT)
+ pio_writel(pio, OER, mask);
+ else
+ pio_writel(pio, ODR, mask);
+
+ pio_writel(pio, PER, mask);
+- if (!use_pullup)
++ if (!(flags & AT32_GPIOF_PULLUP))
+ pio_writel(pio, PUDR, mask);
+
+ /* It's now allowed to use request_gpio on this pin */
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/gpio.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/arch-at32ap/gpio.h 2006-11-29 18:14:37.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/gpio.h 2006-11-29 18:15:06.000000000 +0100
+@@ -1,5 +1,5 @@
+-#ifndef __ASM_AVR32_GPIO_H
+-#define __ASM_AVR32_GPIO_H
++#ifndef __ASM_AVR32_ARCH_GPIO_H
++#define __ASM_AVR32_ARCH_GPIO_H
+
+ #include <linux/compiler.h>
+ #include <asm/irq.h>
+@@ -36,4 +36,4 @@ static inline int irq_to_gpio(unsigned i
+ return irq - GPIO_IRQ_BASE;
+ }
+
+-#endif /* __ASM_AVR32_GPIO_H */
++#endif /* __ASM_AVR32_ARCH_GPIO_H */
diff --git a/packages/linux/linux-2.6.18/fix-lcd-display-off-by-two-problem.patch b/packages/linux/linux-2.6.18/fix-lcd-display-off-by-two-problem.patch
new file mode 100644
index 0000000000..e99619a876
--- /dev/null
+++ b/packages/linux/linux-2.6.18/fix-lcd-display-off-by-two-problem.patch
@@ -0,0 +1,17 @@
+---
+ drivers/video/sidsafb.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-2.6.18-avr32/drivers/video/sidsafb.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/video/sidsafb.c 2006-11-27 15:47:16.000000000 +0100
++++ linux-2.6.18-avr32/drivers/video/sidsafb.c 2006-11-27 15:47:25.000000000 +0100
+@@ -107,7 +107,7 @@ static struct fb_videomode samsung_modes
+ .pixclock = 145111,
+
+ .left_margin = 17, .right_margin = 33,
+- .upper_margin = 8, .lower_margin = 10,
++ .upper_margin = 10, .lower_margin = 10,
+ .hsync_len = 16, .vsync_len = 1,
+
+ .sync = FB_SYNC_PCLK_RISING,
diff --git a/packages/linux/linux-2.6.18/fix-usart3-rx-BUG.patch b/packages/linux/linux-2.6.18/fix-usart3-rx-BUG.patch
new file mode 100644
index 0000000000..1035f9f010
--- /dev/null
+++ b/packages/linux/linux-2.6.18/fix-usart3-rx-BUG.patch
@@ -0,0 +1,25 @@
+---
+ drivers/serial/atmel_usart.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/serial/atmel_usart.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/serial/atmel_usart.c 2006-11-24 15:59:38.000000000 +0100
++++ linux-2.6.18-avr32/drivers/serial/atmel_usart.c 2006-11-24 15:59:46.000000000 +0100
+@@ -194,8 +194,14 @@ static inline int rx_dma_update_tail(str
+ usart3_writel(up, RNCR, RX_BUFFER_SIZE);
+
+ again = 1;
+- } else
+- BUG_ON(usart3_readl(up, CSR) & USART3_BIT(ENDRX));
++ } else if(usart3_readl(up, CSR) & USART3_BIT(ENDRX)) {
++ /*
++ * The USART hit the end of the buffer after head was
++ * updated. Let's do another pass so that we can
++ * avoid taking another interrupt immediately.
++ */
++ again = 1;
++ }
+
+ up->rx_tail = tail;
+
diff --git a/packages/linux/linux-2.6.18/gpio-define-pio-none.patch b/packages/linux/linux-2.6.18/gpio-define-pio-none.patch
new file mode 100644
index 0000000000..802a535354
--- /dev/null
+++ b/packages/linux/linux-2.6.18/gpio-define-pio-none.patch
@@ -0,0 +1,11 @@
+Index: linux-2.6.18/include/asm-avr32/arch-at32ap/at32ap7000.h
+===================================================================
+--- linux-2.6.18.orig/include/asm-avr32/arch-at32ap/at32ap7000.h 2006-12-11 14:53:54.000000000 +0100
++++ linux-2.6.18/include/asm-avr32/arch-at32ap/at32ap7000.h 2006-12-11 14:56:54.000000000 +0100
+@@ -23,4 +23,6 @@
+ #define GPIO_PIN_PD(N) (GPIO_PIOD_BASE + (N))
+ #define GPIO_PIN_PE(N) (GPIO_PIOE_BASE + (N))
+
++#define GPIO_PIO_NONE (0xFFFFffff)
++
+ #endif /* __ASM_ARCH_AT32AP7000_H */
diff --git a/packages/linux/linux-2.6.18/gpio-dev-blocking-read.patch b/packages/linux/linux-2.6.18/gpio-dev-blocking-read.patch
new file mode 100644
index 0000000000..9508d9e3aa
--- /dev/null
+++ b/packages/linux/linux-2.6.18/gpio-dev-blocking-read.patch
@@ -0,0 +1,187 @@
+---
+ arch/avr32/mach-at32ap/pio.c | 113 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 113 insertions(+)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/pio.c 2006-11-30 13:16:43.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-11-30 17:15:24.000000000 +0100
+@@ -250,7 +250,11 @@ EXPORT_SYMBOL(gpio_set_value);
+ #ifdef CONFIG_PIO_DEV
+ #include <linux/configfs.h>
+ #include <linux/cdev.h>
++#include <linux/fs.h>
++#include <linux/interrupt.h>
++#include <linux/poll.h>
+ #include <linux/uaccess.h>
++#include <linux/wait.h>
+
+ #define GPIO_DEV_MAX 8
+
+@@ -267,6 +271,13 @@ struct gpio_item {
+ u32 pin_mask;
+ u32 oe_mask;
+
++ /* Pin state last time we read it (for blocking reads) */
++ u32 pin_state;
++ int changed;
++
++ wait_queue_head_t change_wq;
++ struct fasync_struct *async_queue;
++
+ int id;
+ struct class_device *gpio_dev;
+ struct cdev char_dev;
+@@ -279,36 +290,135 @@ struct gpio_attribute {
+ ssize_t (*store)(struct gpio_item *, const char *, size_t);
+ };
+
++static irqreturn_t gpio_dev_interrupt(int irq, void *dev_id,
++ struct pt_regs *regs)
++{
++ struct gpio_item *gpio = dev_id;
++ u32 old_state, new_state;
++
++ old_state = gpio->pin_state;
++ new_state = pio_readl(gpio->pio, PDSR);
++ gpio->pin_state = new_state;
++
++ if (new_state != old_state) {
++ gpio->changed = 1;
++ wake_up_interruptible(&gpio->change_wq);
++
++ if (gpio->async_queue)
++ kill_fasync(&gpio->async_queue, SIGIO, POLL_IN);
++ }
++
++ return IRQ_HANDLED;
++}
++
+ static int gpio_dev_open(struct inode *inode, struct file *file)
+ {
+ struct gpio_item *gpio = container_of(inode->i_cdev,
+ struct gpio_item,
+ char_dev);
++ unsigned int irq;
++ unsigned int i;
++ int ret;
+
++ nonseekable_open(inode, file);
+ config_item_get(&gpio->item);
+ file->private_data = gpio;
++
++ gpio->pin_state = pio_readl(gpio->pio, PDSR) & gpio->pin_mask;
++ gpio->changed = 1;
++
++ for (i = 0; i < 32; i++) {
++ if (gpio->pin_mask & (1 << i)) {
++ irq = gpio_to_irq(32 * pio_id(gpio->pio) + i);
++ ret = request_irq(irq, gpio_dev_interrupt, 0,
++ "gpio-dev", gpio);
++ if (ret)
++ goto err_irq;
++ }
++ }
++
+ return 0;
++
++err_irq:
++ while (i--) {
++ if (gpio->pin_mask & (1 << i)) {
++ irq = gpio_to_irq(32 * pio_id(gpio->pio) + i);
++ free_irq(irq, gpio);
++ }
++ }
++
++ config_item_put(&gpio->item);
++
++ return ret;
++}
++
++static int gpio_dev_fasync(int fd, struct file *file, int mode)
++{
++ struct gpio_item *gpio = file->private_data;
++
++ return fasync_helper(fd, file, mode, &gpio->async_queue);
+ }
+
+ static int gpio_dev_release(struct inode *inode, struct file *file)
+ {
+ struct gpio_item *gpio = file->private_data;
++ unsigned int irq;
++ unsigned int i;
++
++ gpio_dev_fasync(-1, file, 0);
++
++ for (i = 0; i < 32; i++) {
++ if (gpio->pin_mask & (1 << i)) {
++ irq = gpio_to_irq(32 * pio_id(gpio->pio) + i);
++ free_irq(irq, gpio);
++ }
++ }
+
+ config_item_put(&gpio->item);
++
+ return 0;
+ }
+
++static unsigned int gpio_dev_poll(struct file *file, poll_table *wait)
++{
++ struct gpio_item *gpio = file->private_data;
++ unsigned int mask = 0;
++
++ poll_wait(file, &gpio->change_wq, wait);
++ if (gpio->changed)
++ mask |= POLLIN | POLLRDNORM;
++
++ return mask;
++}
++
+ static ssize_t gpio_dev_read(struct file *file, char __user *buf,
+ size_t count, loff_t *offset)
+ {
+ struct gpio_item *gpio = file->private_data;
+ u32 value;
+
++ spin_lock_irq(&gpio->lock);
++ while (!gpio->changed) {
++ spin_unlock_irq(&gpio->lock);
++
++ if (file->f_flags & O_NONBLOCK)
++ return -EAGAIN;
++
++ if (wait_event_interruptible(gpio->change_wq, gpio->changed))
++ return -ERESTARTSYS;
++
++ spin_lock_irq(&gpio->lock);
++ }
++
++ gpio->changed = 0;
+ value = pio_readl(gpio->pio, PDSR) & gpio->pin_mask;
+
++ spin_unlock_irq(&gpio->lock);
++
+ count = min(count, (size_t)4);
+ if (copy_to_user(buf, &value, count))
+ return -EFAULT;
++
+ return count;
+ }
+
+@@ -338,6 +448,8 @@ static struct file_operations gpio_dev_f
+ .llseek = no_llseek,
+ .open = gpio_dev_open,
+ .release = gpio_dev_release,
++ .fasync = gpio_dev_fasync,
++ .poll = gpio_dev_poll,
+ .read = gpio_dev_read,
+ .write = gpio_dev_write,
+ };
+@@ -632,6 +744,7 @@ static struct config_item *gpio_make_ite
+ gpio->id = next_id++;
+ config_item_init_type_name(&gpio->item, name, &gpio_item_type);
+ spin_lock_init(&gpio->lock);
++ init_waitqueue_head(&gpio->change_wq);
+
+ return &gpio->item;
+ }
diff --git a/packages/linux/linux-2.6.18/gpio-dev-robustness.patch b/packages/linux/linux-2.6.18/gpio-dev-robustness.patch
new file mode 100644
index 0000000000..56ef0ebc6c
--- /dev/null
+++ b/packages/linux/linux-2.6.18/gpio-dev-robustness.patch
@@ -0,0 +1,204 @@
+Make the GPIO /dev interface a bit more robust
+
+Instead of allocating gpio resources on-the-fly as the files are
+written, defer it until enable is set to 1 and disallow updates to
+any of the other files while enable=1.
+
+Otherwise, the number of checks in each _store function will rapidly
+approach insanity.
+---
+ arch/avr32/mach-at32ap/pio.c | 99 ++++++++++++++++++-------------------------
+ 1 file changed, 43 insertions(+), 56 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/pio.c 2006-11-29 17:10:54.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-11-29 18:11:38.000000000 +0100
+@@ -124,13 +124,6 @@ static unsigned int pio_id(struct pio_de
+ return pio - pio_dev;
+ }
+
+-static void __enable_gpio(struct pio_device *pio, u32 mask)
+-{
+- pio_writel(pio, PUER, mask);
+- pio_writel(pio, ODR, mask);
+- pio_writel(pio, PER, mask);
+-}
+-
+ static void __disable_gpio(struct pio_device *pio, u32 mask)
+ {
+ pio_writel(pio, PUER, mask);
+@@ -251,11 +244,12 @@ static dev_t gpio_devt;
+ struct gpio_item {
+ spinlock_t lock;
+
+- /* Too bad we don't have committable items... */
+- int enabled;
+-
+ struct pio_device *pio;
++
++ int enabled;
++ int pio_id;
+ u32 pin_mask;
++ u32 oe_mask;
+
+ int id;
+ struct class_device *gpio_dev;
+@@ -339,10 +333,7 @@ static struct gpio_item *to_gpio_item(st
+
+ static ssize_t gpio_show_gpio_id(struct gpio_item *gpio, char *page)
+ {
+- if (gpio->pio)
+- return sprintf(page, "%u\n", pio_id(gpio->pio));
+- else
+- return sprintf(page, "-1\n");
++ return sprintf(page, "%d\n", gpio->pio_id);
+ }
+
+ static ssize_t gpio_store_gpio_id(struct gpio_item *gpio,
+@@ -361,7 +352,7 @@ static ssize_t gpio_store_gpio_id(struct
+ if (!gpio->enabled) {
+ ret = -ENXIO;
+ if ((id < MAX_NR_PIO_DEVICES) && pio_dev[id].regs) {
+- gpio->pio = &pio_dev[id];
++ gpio->pio_id = id;
+ ret = count;
+ }
+ }
+@@ -378,9 +369,7 @@ static ssize_t gpio_show_pin_mask(struct
+ static ssize_t gpio_store_pin_mask(struct gpio_item *gpio,
+ const char *page, size_t count)
+ {
+- struct pio_device *pio;
+- u32 old_mask, new_mask;
+- u32 old, new;
++ u32 new_mask;
+ char *p = (char *)page;
+ ssize_t ret = -EINVAL;
+
+@@ -388,47 +377,21 @@ static ssize_t gpio_store_pin_mask(struc
+ if (!p || (*p && (*p != '\n')))
+ return -EINVAL;
+
+- /*
+- * Must have a PIO before we can start allocating pins, but we
+- * must not be live.
+- */
++ /* Can't update the pin mask while live. */
+ spin_lock(&gpio->lock);
+- pio = gpio->pio;
+- if (!pio || gpio->enabled)
+- goto out;
+-
+- ret = -EBUSY;
+- old_mask = gpio->pin_mask;
+- do {
+- old = pio->pinmux_mask;
+- if ((old & ~old_mask) & new_mask)
+- goto out;
+-
+- new = (old & ~old_mask) | new_mask;
+- } while (cmpxchg(&pio->pinmux_mask, old, new) != old);
+-
+- gpio->pin_mask = new_mask;
+- __disable_gpio(pio, old_mask);
+- __enable_gpio(pio, new_mask);
+- ret = count;
+-
+-out:
++ if (!gpio->enabled) {
++ gpio->oe_mask &= new_mask;
++ gpio->pin_mask = new_mask;
++ ret = count;
++ }
+ spin_unlock(&gpio->lock);
++
+ return ret;
+ }
+
+ static ssize_t gpio_show_oe_mask(struct gpio_item *gpio, char *page)
+ {
+- u32 mask = 0;
+-
+- spin_lock(&gpio->lock);
+- if (gpio->pio) {
+- mask = pio_readl(gpio->pio, OSR);
+- mask &= gpio->pin_mask;
+- }
+- spin_unlock(&gpio->lock);
+-
+- return sprintf(page, "0x%08x\n", mask);
++ return sprintf(page, "0x%08x\n", gpio->oe_mask);
+ }
+
+ static ssize_t gpio_store_oe_mask(struct gpio_item *gpio,
+@@ -443,10 +406,8 @@ static ssize_t gpio_store_oe_mask(struct
+ return -EINVAL;
+
+ spin_lock(&gpio->lock);
+- if (gpio->pio) {
+- mask &= gpio->pin_mask;
+- pio_writel(gpio->pio, ODR, mask ^ gpio->pin_mask);
+- pio_writel(gpio->pio, OER, mask);
++ if (!gpio->enabled) {
++ gpio->oe_mask = mask & gpio->pin_mask;
+ ret = count;
+ }
+ spin_unlock(&gpio->lock);
+@@ -462,6 +423,8 @@ static ssize_t gpio_show_enabled(struct
+ static ssize_t gpio_store_enabled(struct gpio_item *gpio,
+ const char *page, size_t count)
+ {
++ struct pio_device *pio;
++ u32 old, new;
+ char *p = (char *)page;
+ int enabled;
+ int ret;
+@@ -482,6 +445,12 @@ static ssize_t gpio_store_enabled(struct
+ if (!enabled) {
+ class_device_unregister(gpio->gpio_dev);
+ cdev_del(&gpio->char_dev);
++ __disable_gpio(gpio->pio, gpio->pin_mask);
++ pio_dealloc_mask(gpio->pio, gpio->pin_mask);
++ gpio->pio = NULL;
++ } else {
++ if (gpio->pio_id < 0 || !gpio->pin_mask)
++ return -ENODEV;
+ }
+
+ /* Disallow any updates to gpio_id or pin_mask */
+@@ -492,6 +461,20 @@ static ssize_t gpio_store_enabled(struct
+ if (!enabled)
+ return count;
+
++ /* Now, try to allocate the pins */
++ ret = -EBUSY;
++ pio = gpio->pio = &pio_dev[gpio->pio_id];
++ do {
++ old = pio->pinmux_mask;
++ if (old & gpio->pin_mask)
++ goto err_alloc_pins;
++
++ new = old | gpio->pin_mask;
++ } while (cmpxchg(&pio->pinmux_mask, old, new) != old);
++
++ pio_writel(pio, OER, gpio->oe_mask);
++ pio_writel(pio, PER, gpio->pin_mask);
++
+ cdev_init(&gpio->char_dev, &gpio_dev_fops);
+ gpio->char_dev.owner = THIS_MODULE;
+ ret = cdev_add(&gpio->char_dev, MKDEV(MAJOR(gpio_devt), gpio->id), 1);
+@@ -516,9 +499,13 @@ static ssize_t gpio_store_enabled(struct
+ err_class_dev:
+ cdev_del(&gpio->char_dev);
+ err_cdev_add:
++ __disable_gpio(pio, gpio->pin_mask);
++ pio_dealloc_mask(pio, gpio->pin_mask);
++err_alloc_pins:
+ spin_lock(&gpio->lock);
+ gpio->enabled = 0;
+ spin_unlock(&gpio->lock);
++ gpio->pio = NULL;
+
+ return ret;
+ }
diff --git a/packages/linux/linux-2.6.18/husb2_udc-test-mode.patch b/packages/linux/linux-2.6.18/husb2_udc-test-mode.patch
new file mode 100644
index 0000000000..f87f71f805
--- /dev/null
+++ b/packages/linux/linux-2.6.18/husb2_udc-test-mode.patch
@@ -0,0 +1,267 @@
+From hskinnemoen@atmel.com Wed Jan 17 10:05:04 2007
+Date: Wed, 17 Jan 2007 10:05:04 +0100
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Subject: [PATCH] Implement USB test modes for husb2_udc
+
+This patch implements the four test modes defined by the USB 2.0
+standard: Test_J, Test_K, Test_SE0_NAK and Test_Packet.
+
+This patch also contains a couple of more or less unrelated bug fixes
+and debug features:
+
+ * Add "state" file to debugfs for control endpoint. This allows us to
+ see which state the control logic got stuck in when things go bad.
+ * REMOTE_WAKEUP requests are ignored instead of stalling the device.
+ * Bad packet length causes warning message + stall instead of BUG().
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ drivers/usb/gadget/husb2_udc.c | 135 +++++++++++++++++++++++++++++++++++++++--
+ drivers/usb/gadget/husb2_udc.h | 8 +-
+ 2 files changed, 135 insertions(+), 8 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/husb2_udc.c 2007-01-16 15:01:42.000000000 +0100
++++ linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.c 2007-01-17 09:56:24.000000000 +0100
+@@ -254,9 +254,20 @@ static void husb2_ep_init_debugfs(struct
+ if (!ep->debugfs_dma_status)
+ goto err_dma_status;
+ }
++ if (ep_is_control(ep)) {
++ ep->debugfs_state
++ = debugfs_create_u32("state", 0400, ep_root,
++ &ep->state);
++ if (!ep->debugfs_state)
++ goto err_state;
++ }
++
+
+ return;
+
++err_state:
++ if (ep_can_dma(ep))
++ debugfs_remove(ep->debugfs_dma_status);
+ err_dma_status:
+ debugfs_remove(ep->debugfs_queue);
+ err_queue:
+@@ -270,6 +281,7 @@ static void husb2_ep_cleanup_debugfs(str
+ {
+ debugfs_remove(ep->debugfs_queue);
+ debugfs_remove(ep->debugfs_dma_status);
++ debugfs_remove(ep->debugfs_state);
+ debugfs_remove(ep->debugfs_dir);
+ ep->debugfs_dma_status = NULL;
+ ep->debugfs_dir = NULL;
+@@ -336,7 +348,7 @@ static inline void husb2_cleanup_debugfs
+ }
+ #endif
+
+-static void copy_to_fifo(void __iomem *fifo, void *buf, int len)
++static void copy_to_fifo(void __iomem *fifo, const void *buf, int len)
+ {
+ unsigned long tmp;
+
+@@ -1302,6 +1314,90 @@ static inline void set_address(struct hu
+ husb2_writel(udc, CTRL, regval);
+ }
+
++static int do_test_mode(struct husb2_udc *udc)
++{
++ static const char test_packet_buffer[] = {
++ /* JKJKJKJK * 9 */
++ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
++ /* JJKKJJKK * 8 */
++ 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
++ /* JJKKJJKK * 8 */
++ 0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,
++ /* JJJJJJJKKKKKKK * 8 */
++ 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
++ /* JJJJJJJK * 8 */
++ 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,
++ /* {JKKKKKKK * 10}, JK */
++ 0xFC,0x7E,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0x7E
++ };
++ struct husb2_ep *ep;
++ int test_mode;
++
++ test_mode = udc->test_mode;
++
++ /* Start from a clean slate */
++ reset_all_endpoints(udc);
++
++ switch (test_mode) {
++ case 0x0100:
++ /* Test_J */
++ husb2_writel(udc, TST, HUSB2_BIT(TST_J_MODE));
++ printk("udc: Entering Test_J mode...\n");
++ break;
++ case 0x0200:
++ /* Test_K */
++ husb2_writel(udc, TST, HUSB2_BIT(TST_K_MODE));
++ printk("udc: Entering Test_K mode...\n");
++ break;
++ case 0x0300:
++ /*
++ * Test_SE0_NAK: Force high-speed mode and set up ep0
++ * for Bulk IN transfers
++ */
++ ep = &husb2_ep[0];
++ husb2_writel(udc, TST,
++ HUSB2_BF(SPEED_CFG, HUSB2_SPEED_CFG_FORCE_HIGH));
++ husb2_ep_writel(ep, CFG,
++ HUSB2_BF(EPT_SIZE, HUSB2_EPT_SIZE_64)
++ | HUSB2_BIT(EPT_DIR)
++ | HUSB2_BF(EPT_TYPE, HUSB2_EPT_TYPE_BULK)
++ | HUSB2_BF(BK_NUMBER, 1));
++ if (!(husb2_ep_readl(ep, CFG) & HUSB2_BIT(EPT_MAPPED))) {
++ set_protocol_stall(udc, ep);
++ printk("udc: Test_SE0_NAK: ep0 not mapped\n");
++ } else {
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(EPT_ENABLE));
++ printk("udc: Entering Test_SE0_NAK mode...\n");
++ }
++ break;
++ case 0x0400:
++ /* Test_Packet */
++ ep = &husb2_ep[0];
++ husb2_ep_writel(ep, CFG,
++ HUSB2_BF(EPT_SIZE, HUSB2_EPT_SIZE_64)
++ | HUSB2_BIT(EPT_DIR)
++ | HUSB2_BF(EPT_TYPE, HUSB2_EPT_TYPE_BULK)
++ | HUSB2_BF(BK_NUMBER, 1));
++ if (!(husb2_ep_readl(ep, CFG) & HUSB2_BIT(EPT_MAPPED))) {
++ set_protocol_stall(udc, ep);
++ printk("udc: Test_Packet: ep0 not mapped\n");
++ } else {
++ husb2_ep_writel(ep, CTL_ENB, HUSB2_BIT(EPT_ENABLE));
++ husb2_writel(udc, TST, HUSB2_BIT(TST_PKT_MODE));
++ copy_to_fifo(ep->fifo, test_packet_buffer,
++ sizeof(test_packet_buffer));
++ husb2_ep_writel(ep, SET_STA, HUSB2_BIT(TX_PK_RDY));
++ printk("udc: Entering Test_Packet mode...\n");
++ }
++ break;
++ default:
++ printk("udc: Invalid test mode: 0x%04x\n", test_mode);
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
+ static int handle_ep0_setup(struct husb2_udc *udc, struct husb2_ep *ep,
+ struct usb_ctrlrequest *crq)
+ {
+@@ -1341,8 +1437,13 @@ static int handle_ep0_setup(struct husb2
+
+ case USB_REQ_CLEAR_FEATURE: {
+ if (crq->bRequestType == USB_RECIP_DEVICE) {
+- /* We don't support TEST_MODE */
+- goto stall;
++ if (crq->wValue
++ == __constant_cpu_to_le16(USB_DEVICE_REMOTE_WAKEUP)) {
++ /* TODO: Handle REMOTE_WAKEUP */
++ } else {
++ /* CLEAR_FEATURE doesn't make sense for TEST_MODE */
++ goto stall;
++ }
+ } else if (crq->bRequestType == USB_RECIP_ENDPOINT) {
+ struct husb2_ep *target;
+
+@@ -1365,8 +1466,18 @@ static int handle_ep0_setup(struct husb2
+
+ case USB_REQ_SET_FEATURE: {
+ if (crq->bRequestType == USB_RECIP_DEVICE) {
+- /* We don't support TEST_MODE */
+- goto stall;
++ if (crq->wValue
++ == __constant_cpu_to_le16(USB_DEVICE_TEST_MODE)) {
++ send_status(udc, ep);
++ ep->state = STATUS_STAGE_TEST;
++ udc->test_mode = le16_to_cpu(crq->wIndex);
++ return 0;
++ } else if (crq->wValue
++ == __constant_cpu_to_le16(USB_DEVICE_REMOTE_WAKEUP)) {
++ /* TODO: Handle REMOTE_WAKEUP */
++ } else {
++ goto stall;
++ }
+ } else if (crq->bRequestType == USB_RECIP_ENDPOINT) {
+ struct husb2_ep *target;
+
+@@ -1476,6 +1587,12 @@ restart:
+ HUSB2_BIT(TX_COMPLETE));
+ ep->state = WAIT_FOR_SETUP;
+ break;
++ case STATUS_STAGE_TEST:
++ husb2_ep_writel(ep, CTL_DIS, HUSB2_BIT(TX_COMPLETE));
++ ep->state = WAIT_FOR_SETUP;
++ if (do_test_mode(udc))
++ set_protocol_stall(udc, ep);
++ break;
+ default:
+ printk(KERN_ERR
+ "udc: %s: TXCOMP: Invalid endpoint state %d, "
+@@ -1550,7 +1667,13 @@ restart:
+
+ pkt_len = HUSB2_BFEXT(BYTE_COUNT, husb2_ep_readl(ep, STA));
+ DBG(DBG_HW, "Packet length: %u\n", pkt_len);
+- BUG_ON(pkt_len != sizeof(crq));
++ if (pkt_len != sizeof(crq)) {
++ printk(KERN_WARNING
++ "udc: Invalid packet length %u (expected %lu)\n",
++ pkt_len, sizeof(crq));
++ set_protocol_stall(udc, ep);
++ return;
++ }
+
+ DBG(DBG_FIFO, "Copying ctrl request from 0x%p:\n", ep->fifo);
+ copy_from_fifo(crq.data, ep->fifo, sizeof(crq));
+Index: linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.h
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/husb2_udc.h 2007-01-16 15:01:42.000000000 +0100
++++ linux-2.6.18-avr32/drivers/usb/gadget/husb2_udc.h 2007-01-17 09:54:03.000000000 +0100
+@@ -21,7 +21,7 @@
+ #define HUSB2_TST_CNT_A 0x00d4
+ #define HUSB2_TST_CNT_B 0x00d8
+ #define HUSB2_TST_MODE_REG 0x00dc
+-#define HUSB2_TST 0x00f0
++#define HUSB2_TST 0x00e0
+
+ /* USB endpoint register offsets */
+ #define HUSB2_EPT_CFG 0x0000
+@@ -113,7 +113,7 @@
+ #define HUSB2_TST_J_MODE_SIZE 1
+ #define HUSB2_TST_K_MODE_OFFSET 3
+ #define HUSB2_TST_K_MODE_SIZE 1
+-#define HUSB2_TST_PKT_MODE_OFFSE 4
++#define HUSB2_TST_PKT_MODE_OFFSET 4
+ #define HUSB2_TST_PKT_MODE_SIZE 1
+ #define HUSB2_OPMODE2_OFFSET 5
+ #define HUSB2_OPMODE2_SIZE 1
+@@ -304,6 +304,7 @@ enum husb2_ctrl_state {
+ STATUS_STAGE_IN,
+ STATUS_STAGE_OUT,
+ STATUS_STAGE_ADDR,
++ STATUS_STAGE_TEST,
+ };
+ /*
+ EP_STATE_IDLE,
+@@ -343,6 +344,7 @@ struct husb2_ep {
+ struct dentry *debugfs_dir;
+ struct dentry *debugfs_queue;
+ struct dentry *debugfs_dma_status;
++ struct dentry *debugfs_state;
+ #endif
+ };
+ #define HUSB2_EP_CAP_ISOC 0x0001
+@@ -381,6 +383,8 @@ struct husb2_udc {
+ struct clk *pclk;
+ struct clk *hclk;
+
++ int test_mode;
++
+ #ifdef CONFIG_DEBUG_FS
+ struct dentry *debugfs_root;
+ struct dentry *debugfs_regs;
diff --git a/packages/linux/linux-2.6.18/jffs2_can_mark_obsolete-should-return-0-for-dataflash.patch b/packages/linux/linux-2.6.18/jffs2_can_mark_obsolete-should-return-0-for-dataflash.patch
new file mode 100644
index 0000000000..8efbd78d7a
--- /dev/null
+++ b/packages/linux/linux-2.6.18/jffs2_can_mark_obsolete-should-return-0-for-dataflash.patch
@@ -0,0 +1,37 @@
+From 686ee9491d8566eff95cf728eb5d6c9921f92bd2 Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Tue, 28 Nov 2006 12:56:51 +0100
+Subject: [PATCH] MTD: jffs2_can_mark_obsolete() should return 0 for dataflash
+
+Attempting to write something to a file on a jffs2 filesystem using
+mtd_dataflash often results in the following BUG:
+
+jffs2_flash_writev(): Non-contiguous write to 00825720
+wbuf was previously 00825300-0082530c
+kernel BUG at /home/hskinnemoen/git/linux-devel/fs/jffs2/wbuf.c:786!
+
+Fix this by returning 0 from jffs2_can_mark_obsolete() when running
+on top of dataflash.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ fs/jffs2/os-linux.h | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/fs/jffs2/os-linux.h b/fs/jffs2/os-linux.h
+index 9f41fc0..a037fa4 100644
+--- a/fs/jffs2/os-linux.h
++++ b/fs/jffs2/os-linux.h
+@@ -106,7 +106,8 @@ static inline void jffs2_init_inode_info
+ #ifdef CONFIG_JFFS2_SUMMARY
+ #define jffs2_can_mark_obsolete(c) (0)
+ #else
+-#define jffs2_can_mark_obsolete(c) (c->mtd->flags & (MTD_BIT_WRITEABLE))
++#define jffs2_can_mark_obsolete(c) (c->mtd->flags & (MTD_BIT_WRITEABLE) \
++ && !jffs2_dataflash(c))
+ #endif
+
+ #define jffs2_cleanmarker_oob(c) (c->mtd->type == MTD_NANDFLASH)
+--
+1.4.3.3
+
diff --git a/packages/linux/linux-2.6.18/kbuild-add-unifdef.patch b/packages/linux/linux-2.6.18/kbuild-add-unifdef.patch
new file mode 100644
index 0000000000..78922a98af
--- /dev/null
+++ b/packages/linux/linux-2.6.18/kbuild-add-unifdef.patch
@@ -0,0 +1,1020 @@
+From 01f1c8799ad8b23c190d59cf1c9e28e6fed390a4 Mon Sep 17 00:00:00 2001
+From: Sam Ravnborg <sam@mars.ravnborg.org>
+Date: Sun, 23 Jul 2006 20:39:59 +0200
+Subject: [PATCH] kbuild: add unifdef
+
+This patch contains a raw copy of unifdef.c
+Next patch will modify it and add infrastructure to use it
+Adding unifdef to the kernel is acked by the author.
+
+The reason to add unifdef as part of the kernel source is that it is not
+yet a common utility on most distributions.
+
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+---
+ scripts/unifdef.c | 998 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 998 insertions(+)
+
+Index: linux-2.6.18-avr32/scripts/unifdef.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/scripts/unifdef.c 2006-10-30 15:59:47.000000000 +0100
+@@ -0,0 +1,998 @@
++/*
++ * Copyright (c) 2002 - 2005 Tony Finch <dot@dotat.at>. All rights reserved.
++ *
++ * This code is derived from software contributed to Berkeley by Dave Yost.
++ * It was rewritten to support ANSI C by Tony Finch. The original version of
++ * unifdef carried the following copyright notice. None of its code remains
++ * in this version (though some of the names remain).
++ *
++ * Copyright (c) 1985, 1993
++ * The Regents of the University of California. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#include <sys/cdefs.h>
++
++#ifndef lint
++#if 0
++static const char copyright[] =
++"@(#) Copyright (c) 1985, 1993\n\
++ The Regents of the University of California. All rights reserved.\n";
++#endif
++#ifdef __IDSTRING
++__IDSTRING(Berkeley, "@(#)unifdef.c 8.1 (Berkeley) 6/6/93");
++__IDSTRING(NetBSD, "$NetBSD: unifdef.c,v 1.8 2000/07/03 02:51:36 matt Exp $");
++__IDSTRING(dotat, "$dotat: things/unifdef.c,v 1.171 2005/03/08 12:38:48 fanf2 Exp $");
++#endif
++#endif /* not lint */
++#ifdef __FBSDID
++__FBSDID("$FreeBSD: /repoman/r/ncvs/src/usr.bin/unifdef/unifdef.c,v 1.20 2005/05/21 09:55:09 ru Exp $");
++#endif
++
++/*
++ * unifdef - remove ifdef'ed lines
++ *
++ * Wishlist:
++ * provide an option which will append the name of the
++ * appropriate symbol after #else's and #endif's
++ * provide an option which will check symbols after
++ * #else's and #endif's to see that they match their
++ * corresponding #ifdef or #ifndef
++ *
++ * The first two items above require better buffer handling, which would
++ * also make it possible to handle all "dodgy" directives correctly.
++ */
++
++#include <ctype.h>
++#include <err.h>
++#include <stdarg.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++
++size_t strlcpy(char *dst, const char *src, size_t siz);
++
++/* types of input lines: */
++typedef enum {
++ LT_TRUEI, /* a true #if with ignore flag */
++ LT_FALSEI, /* a false #if with ignore flag */
++ LT_IF, /* an unknown #if */
++ LT_TRUE, /* a true #if */
++ LT_FALSE, /* a false #if */
++ LT_ELIF, /* an unknown #elif */
++ LT_ELTRUE, /* a true #elif */
++ LT_ELFALSE, /* a false #elif */
++ LT_ELSE, /* #else */
++ LT_ENDIF, /* #endif */
++ LT_DODGY, /* flag: directive is not on one line */
++ LT_DODGY_LAST = LT_DODGY + LT_ENDIF,
++ LT_PLAIN, /* ordinary line */
++ LT_EOF, /* end of file */
++ LT_COUNT
++} Linetype;
++
++static char const * const linetype_name[] = {
++ "TRUEI", "FALSEI", "IF", "TRUE", "FALSE",
++ "ELIF", "ELTRUE", "ELFALSE", "ELSE", "ENDIF",
++ "DODGY TRUEI", "DODGY FALSEI",
++ "DODGY IF", "DODGY TRUE", "DODGY FALSE",
++ "DODGY ELIF", "DODGY ELTRUE", "DODGY ELFALSE",
++ "DODGY ELSE", "DODGY ENDIF",
++ "PLAIN", "EOF"
++};
++
++/* state of #if processing */
++typedef enum {
++ IS_OUTSIDE,
++ IS_FALSE_PREFIX, /* false #if followed by false #elifs */
++ IS_TRUE_PREFIX, /* first non-false #(el)if is true */
++ IS_PASS_MIDDLE, /* first non-false #(el)if is unknown */
++ IS_FALSE_MIDDLE, /* a false #elif after a pass state */
++ IS_TRUE_MIDDLE, /* a true #elif after a pass state */
++ IS_PASS_ELSE, /* an else after a pass state */
++ IS_FALSE_ELSE, /* an else after a true state */
++ IS_TRUE_ELSE, /* an else after only false states */
++ IS_FALSE_TRAILER, /* #elifs after a true are false */
++ IS_COUNT
++} Ifstate;
++
++static char const * const ifstate_name[] = {
++ "OUTSIDE", "FALSE_PREFIX", "TRUE_PREFIX",
++ "PASS_MIDDLE", "FALSE_MIDDLE", "TRUE_MIDDLE",
++ "PASS_ELSE", "FALSE_ELSE", "TRUE_ELSE",
++ "FALSE_TRAILER"
++};
++
++/* state of comment parser */
++typedef enum {
++ NO_COMMENT = false, /* outside a comment */
++ C_COMMENT, /* in a comment like this one */
++ CXX_COMMENT, /* between // and end of line */
++ STARTING_COMMENT, /* just after slash-backslash-newline */
++ FINISHING_COMMENT, /* star-backslash-newline in a C comment */
++ CHAR_LITERAL, /* inside '' */
++ STRING_LITERAL /* inside "" */
++} Comment_state;
++
++static char const * const comment_name[] = {
++ "NO", "C", "CXX", "STARTING", "FINISHING", "CHAR", "STRING"
++};
++
++/* state of preprocessor line parser */
++typedef enum {
++ LS_START, /* only space and comments on this line */
++ LS_HASH, /* only space, comments, and a hash */
++ LS_DIRTY /* this line can't be a preprocessor line */
++} Line_state;
++
++static char const * const linestate_name[] = {
++ "START", "HASH", "DIRTY"
++};
++
++/*
++ * Minimum translation limits from ISO/IEC 9899:1999 5.2.4.1
++ */
++#define MAXDEPTH 64 /* maximum #if nesting */
++#define MAXLINE 4096 /* maximum length of line */
++#define MAXSYMS 4096 /* maximum number of symbols */
++
++/*
++ * Sometimes when editing a keyword the replacement text is longer, so
++ * we leave some space at the end of the tline buffer to accommodate this.
++ */
++#define EDITSLOP 10
++
++/*
++ * Globals.
++ */
++
++static bool complement; /* -c: do the complement */
++static bool debugging; /* -d: debugging reports */
++static bool iocccok; /* -e: fewer IOCCC errors */
++static bool killconsts; /* -k: eval constant #ifs */
++static bool lnblank; /* -l: blank deleted lines */
++static bool lnnum; /* -n: add #line directives */
++static bool symlist; /* -s: output symbol list */
++static bool text; /* -t: this is a text file */
++
++static const char *symname[MAXSYMS]; /* symbol name */
++static const char *value[MAXSYMS]; /* -Dsym=value */
++static bool ignore[MAXSYMS]; /* -iDsym or -iUsym */
++static int nsyms; /* number of symbols */
++
++static FILE *input; /* input file pointer */
++static const char *filename; /* input file name */
++static int linenum; /* current line number */
++
++static char tline[MAXLINE+EDITSLOP];/* input buffer plus space */
++static char *keyword; /* used for editing #elif's */
++
++static Comment_state incomment; /* comment parser state */
++static Line_state linestate; /* #if line parser state */
++static Ifstate ifstate[MAXDEPTH]; /* #if processor state */
++static bool ignoring[MAXDEPTH]; /* ignore comments state */
++static int stifline[MAXDEPTH]; /* start of current #if */
++static int depth; /* current #if nesting */
++static int delcount; /* count of deleted lines */
++static bool keepthis; /* don't delete constant #if */
++
++static int exitstat; /* program exit status */
++
++static void addsym(bool, bool, char *);
++static void debug(const char *, ...);
++static void done(void);
++static void error(const char *);
++static int findsym(const char *);
++static void flushline(bool);
++static Linetype getline(void);
++static Linetype ifeval(const char **);
++static void ignoreoff(void);
++static void ignoreon(void);
++static void keywordedit(const char *);
++static void nest(void);
++static void process(void);
++static const char *skipcomment(const char *);
++static const char *skipsym(const char *);
++static void state(Ifstate);
++static int strlcmp(const char *, const char *, size_t);
++static void unnest(void);
++static void usage(void);
++
++#define endsym(c) (!isalpha((unsigned char)c) && !isdigit((unsigned char)c) && c != '_')
++
++/*
++ * The main program.
++ */
++int
++main(int argc, char *argv[])
++{
++ int opt;
++
++ while ((opt = getopt(argc, argv, "i:D:U:I:cdeklnst")) != -1)
++ switch (opt) {
++ case 'i': /* treat stuff controlled by these symbols as text */
++ /*
++ * For strict backwards-compatibility the U or D
++ * should be immediately after the -i but it doesn't
++ * matter much if we relax that requirement.
++ */
++ opt = *optarg++;
++ if (opt == 'D')
++ addsym(true, true, optarg);
++ else if (opt == 'U')
++ addsym(true, false, optarg);
++ else
++ usage();
++ break;
++ case 'D': /* define a symbol */
++ addsym(false, true, optarg);
++ break;
++ case 'U': /* undef a symbol */
++ addsym(false, false, optarg);
++ break;
++ case 'I':
++ /* no-op for compatibility with cpp */
++ break;
++ case 'c': /* treat -D as -U and vice versa */
++ complement = true;
++ break;
++ case 'd':
++ debugging = true;
++ break;
++ case 'e': /* fewer errors from dodgy lines */
++ iocccok = true;
++ break;
++ case 'k': /* process constant #ifs */
++ killconsts = true;
++ break;
++ case 'l': /* blank deleted lines instead of omitting them */
++ lnblank = true;
++ break;
++ case 'n': /* add #line directive after deleted lines */
++ lnnum = true;
++ break;
++ case 's': /* only output list of symbols that control #ifs */
++ symlist = true;
++ break;
++ case 't': /* don't parse C comments */
++ text = true;
++ break;
++ default:
++ usage();
++ }
++ argc -= optind;
++ argv += optind;
++ if (argc > 1) {
++ errx(2, "can only do one file");
++ } else if (argc == 1 && strcmp(*argv, "-") != 0) {
++ filename = *argv;
++ input = fopen(filename, "r");
++ if (input == NULL)
++ err(2, "can't open %s", filename);
++ } else {
++ filename = "[stdin]";
++ input = stdin;
++ }
++ process();
++ abort(); /* bug */
++}
++
++static void
++usage(void)
++{
++ fprintf(stderr, "usage: unifdef [-cdeklnst] [-Ipath]"
++ " [-Dsym[=val]] [-Usym] [-iDsym[=val]] [-iUsym] ... [file]\n");
++ exit(2);
++}
++
++/*
++ * A state transition function alters the global #if processing state
++ * in a particular way. The table below is indexed by the current
++ * processing state and the type of the current line.
++ *
++ * Nesting is handled by keeping a stack of states; some transition
++ * functions increase or decrease the depth. They also maintain the
++ * ignore state on a stack. In some complicated cases they have to
++ * alter the preprocessor directive, as follows.
++ *
++ * When we have processed a group that starts off with a known-false
++ * #if/#elif sequence (which has therefore been deleted) followed by a
++ * #elif that we don't understand and therefore must keep, we edit the
++ * latter into a #if to keep the nesting correct.
++ *
++ * When we find a true #elif in a group, the following block will
++ * always be kept and the rest of the sequence after the next #elif or
++ * #else will be discarded. We edit the #elif into a #else and the
++ * following directive to #endif since this has the desired behaviour.
++ *
++ * "Dodgy" directives are split across multiple lines, the most common
++ * example being a multi-line comment hanging off the right of the
++ * directive. We can handle them correctly only if there is no change
++ * from printing to dropping (or vice versa) caused by that directive.
++ * If the directive is the first of a group we have a choice between
++ * failing with an error, or passing it through unchanged instead of
++ * evaluating it. The latter is not the default to avoid questions from
++ * users about unifdef unexpectedly leaving behind preprocessor directives.
++ */
++typedef void state_fn(void);
++
++/* report an error */
++static void Eelif (void) { error("Inappropriate #elif"); }
++static void Eelse (void) { error("Inappropriate #else"); }
++static void Eendif(void) { error("Inappropriate #endif"); }
++static void Eeof (void) { error("Premature EOF"); }
++static void Eioccc(void) { error("Obfuscated preprocessor control line"); }
++/* plain line handling */
++static void print (void) { flushline(true); }
++static void drop (void) { flushline(false); }
++/* output lacks group's start line */
++static void Strue (void) { drop(); ignoreoff(); state(IS_TRUE_PREFIX); }
++static void Sfalse(void) { drop(); ignoreoff(); state(IS_FALSE_PREFIX); }
++static void Selse (void) { drop(); state(IS_TRUE_ELSE); }
++/* print/pass this block */
++static void Pelif (void) { print(); ignoreoff(); state(IS_PASS_MIDDLE); }
++static void Pelse (void) { print(); state(IS_PASS_ELSE); }
++static void Pendif(void) { print(); unnest(); }
++/* discard this block */
++static void Dfalse(void) { drop(); ignoreoff(); state(IS_FALSE_TRAILER); }
++static void Delif (void) { drop(); ignoreoff(); state(IS_FALSE_MIDDLE); }
++static void Delse (void) { drop(); state(IS_FALSE_ELSE); }
++static void Dendif(void) { drop(); unnest(); }
++/* first line of group */
++static void Fdrop (void) { nest(); Dfalse(); }
++static void Fpass (void) { nest(); Pelif(); }
++static void Ftrue (void) { nest(); Strue(); }
++static void Ffalse(void) { nest(); Sfalse(); }
++/* variable pedantry for obfuscated lines */
++static void Oiffy (void) { if (!iocccok) Eioccc(); Fpass(); ignoreon(); }
++static void Oif (void) { if (!iocccok) Eioccc(); Fpass(); }
++static void Oelif (void) { if (!iocccok) Eioccc(); Pelif(); }
++/* ignore comments in this block */
++static void Idrop (void) { Fdrop(); ignoreon(); }
++static void Itrue (void) { Ftrue(); ignoreon(); }
++static void Ifalse(void) { Ffalse(); ignoreon(); }
++/* edit this line */
++static void Mpass (void) { strncpy(keyword, "if ", 4); Pelif(); }
++static void Mtrue (void) { keywordedit("else\n"); state(IS_TRUE_MIDDLE); }
++static void Melif (void) { keywordedit("endif\n"); state(IS_FALSE_TRAILER); }
++static void Melse (void) { keywordedit("endif\n"); state(IS_FALSE_ELSE); }
++
++static state_fn * const trans_table[IS_COUNT][LT_COUNT] = {
++/* IS_OUTSIDE */
++{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Eendif,
++ Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eendif,
++ print, done },
++/* IS_FALSE_PREFIX */
++{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Strue, Sfalse,Selse, Dendif,
++ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Eioccc,Eioccc,Eioccc,Eioccc,
++ drop, Eeof },
++/* IS_TRUE_PREFIX */
++{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Dfalse,Dfalse,Dfalse,Delse, Dendif,
++ Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
++ print, Eeof },
++/* IS_PASS_MIDDLE */
++{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Pelif, Mtrue, Delif, Pelse, Pendif,
++ Oiffy, Oiffy, Fpass, Oif, Oif, Pelif, Oelif, Oelif, Pelse, Pendif,
++ print, Eeof },
++/* IS_FALSE_MIDDLE */
++{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Pelif, Mtrue, Delif, Pelse, Pendif,
++ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
++ drop, Eeof },
++/* IS_TRUE_MIDDLE */
++{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Melif, Melif, Melif, Melse, Pendif,
++ Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Pendif,
++ print, Eeof },
++/* IS_PASS_ELSE */
++{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Pendif,
++ Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Pendif,
++ print, Eeof },
++/* IS_FALSE_ELSE */
++{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Dendif,
++ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Eioccc,
++ drop, Eeof },
++/* IS_TRUE_ELSE */
++{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Dendif,
++ Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eioccc,
++ print, Eeof },
++/* IS_FALSE_TRAILER */
++{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Dendif,
++ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Eioccc,
++ drop, Eeof }
++/*TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF
++ TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF (DODGY)
++ PLAIN EOF */
++};
++
++/*
++ * State machine utility functions
++ */
++static void
++done(void)
++{
++ if (incomment)
++ error("EOF in comment");
++ exit(exitstat);
++}
++static void
++ignoreoff(void)
++{
++ if (depth == 0)
++ abort(); /* bug */
++ ignoring[depth] = ignoring[depth-1];
++}
++static void
++ignoreon(void)
++{
++ ignoring[depth] = true;
++}
++static void
++keywordedit(const char *replacement)
++{
++ strlcpy(keyword, replacement, tline + sizeof(tline) - keyword);
++ print();
++}
++static void
++nest(void)
++{
++ depth += 1;
++ if (depth >= MAXDEPTH)
++ error("Too many levels of nesting");
++ stifline[depth] = linenum;
++}
++static void
++unnest(void)
++{
++ if (depth == 0)
++ abort(); /* bug */
++ depth -= 1;
++}
++static void
++state(Ifstate is)
++{
++ ifstate[depth] = is;
++}
++
++/*
++ * Write a line to the output or not, according to command line options.
++ */
++static void
++flushline(bool keep)
++{
++ if (symlist)
++ return;
++ if (keep ^ complement) {
++ if (lnnum && delcount > 0)
++ printf("#line %d\n", linenum);
++ fputs(tline, stdout);
++ delcount = 0;
++ } else {
++ if (lnblank)
++ putc('\n', stdout);
++ exitstat = 1;
++ delcount += 1;
++ }
++}
++
++/*
++ * The driver for the state machine.
++ */
++static void
++process(void)
++{
++ Linetype lineval;
++
++ for (;;) {
++ linenum++;
++ lineval = getline();
++ trans_table[ifstate[depth]][lineval]();
++ debug("process %s -> %s depth %d",
++ linetype_name[lineval],
++ ifstate_name[ifstate[depth]], depth);
++ }
++}
++
++/*
++ * Parse a line and determine its type. We keep the preprocessor line
++ * parser state between calls in the global variable linestate, with
++ * help from skipcomment().
++ */
++static Linetype
++getline(void)
++{
++ const char *cp;
++ int cursym;
++ int kwlen;
++ Linetype retval;
++ Comment_state wascomment;
++
++ if (fgets(tline, MAXLINE, input) == NULL)
++ return (LT_EOF);
++ retval = LT_PLAIN;
++ wascomment = incomment;
++ cp = skipcomment(tline);
++ if (linestate == LS_START) {
++ if (*cp == '#') {
++ linestate = LS_HASH;
++ cp = skipcomment(cp + 1);
++ } else if (*cp != '\0')
++ linestate = LS_DIRTY;
++ }
++ if (!incomment && linestate == LS_HASH) {
++ keyword = tline + (cp - tline);
++ cp = skipsym(cp);
++ kwlen = cp - keyword;
++ /* no way can we deal with a continuation inside a keyword */
++ if (strncmp(cp, "\\\n", 2) == 0)
++ Eioccc();
++ if (strlcmp("ifdef", keyword, kwlen) == 0 ||
++ strlcmp("ifndef", keyword, kwlen) == 0) {
++ cp = skipcomment(cp);
++ if ((cursym = findsym(cp)) < 0)
++ retval = LT_IF;
++ else {
++ retval = (keyword[2] == 'n')
++ ? LT_FALSE : LT_TRUE;
++ if (value[cursym] == NULL)
++ retval = (retval == LT_TRUE)
++ ? LT_FALSE : LT_TRUE;
++ if (ignore[cursym])
++ retval = (retval == LT_TRUE)
++ ? LT_TRUEI : LT_FALSEI;
++ }
++ cp = skipsym(cp);
++ } else if (strlcmp("if", keyword, kwlen) == 0)
++ retval = ifeval(&cp);
++ else if (strlcmp("elif", keyword, kwlen) == 0)
++ retval = ifeval(&cp) - LT_IF + LT_ELIF;
++ else if (strlcmp("else", keyword, kwlen) == 0)
++ retval = LT_ELSE;
++ else if (strlcmp("endif", keyword, kwlen) == 0)
++ retval = LT_ENDIF;
++ else {
++ linestate = LS_DIRTY;
++ retval = LT_PLAIN;
++ }
++ cp = skipcomment(cp);
++ if (*cp != '\0') {
++ linestate = LS_DIRTY;
++ if (retval == LT_TRUE || retval == LT_FALSE ||
++ retval == LT_TRUEI || retval == LT_FALSEI)
++ retval = LT_IF;
++ if (retval == LT_ELTRUE || retval == LT_ELFALSE)
++ retval = LT_ELIF;
++ }
++ if (retval != LT_PLAIN && (wascomment || incomment)) {
++ retval += LT_DODGY;
++ if (incomment)
++ linestate = LS_DIRTY;
++ }
++ /* skipcomment should have changed the state */
++ if (linestate == LS_HASH)
++ abort(); /* bug */
++ }
++ if (linestate == LS_DIRTY) {
++ while (*cp != '\0')
++ cp = skipcomment(cp + 1);
++ }
++ debug("parser %s comment %s line",
++ comment_name[incomment], linestate_name[linestate]);
++ return (retval);
++}
++
++/*
++ * These are the binary operators that are supported by the expression
++ * evaluator. Note that if support for division is added then we also
++ * need short-circuiting booleans because of divide-by-zero.
++ */
++static int op_lt(int a, int b) { return (a < b); }
++static int op_gt(int a, int b) { return (a > b); }
++static int op_le(int a, int b) { return (a <= b); }
++static int op_ge(int a, int b) { return (a >= b); }
++static int op_eq(int a, int b) { return (a == b); }
++static int op_ne(int a, int b) { return (a != b); }
++static int op_or(int a, int b) { return (a || b); }
++static int op_and(int a, int b) { return (a && b); }
++
++/*
++ * An evaluation function takes three arguments, as follows: (1) a pointer to
++ * an element of the precedence table which lists the operators at the current
++ * level of precedence; (2) a pointer to an integer which will receive the
++ * value of the expression; and (3) a pointer to a char* that points to the
++ * expression to be evaluated and that is updated to the end of the expression
++ * when evaluation is complete. The function returns LT_FALSE if the value of
++ * the expression is zero, LT_TRUE if it is non-zero, or LT_IF if the
++ * expression could not be evaluated.
++ */
++struct ops;
++
++typedef Linetype eval_fn(const struct ops *, int *, const char **);
++
++static eval_fn eval_table, eval_unary;
++
++/*
++ * The precedence table. Expressions involving binary operators are evaluated
++ * in a table-driven way by eval_table. When it evaluates a subexpression it
++ * calls the inner function with its first argument pointing to the next
++ * element of the table. Innermost expressions have special non-table-driven
++ * handling.
++ */
++static const struct ops {
++ eval_fn *inner;
++ struct op {
++ const char *str;
++ int (*fn)(int, int);
++ } op[5];
++} eval_ops[] = {
++ { eval_table, { { "||", op_or } } },
++ { eval_table, { { "&&", op_and } } },
++ { eval_table, { { "==", op_eq },
++ { "!=", op_ne } } },
++ { eval_unary, { { "<=", op_le },
++ { ">=", op_ge },
++ { "<", op_lt },
++ { ">", op_gt } } }
++};
++
++/*
++ * Function for evaluating the innermost parts of expressions,
++ * viz. !expr (expr) defined(symbol) symbol number
++ * We reset the keepthis flag when we find a non-constant subexpression.
++ */
++static Linetype
++eval_unary(const struct ops *ops, int *valp, const char **cpp)
++{
++ const char *cp;
++ char *ep;
++ int sym;
++
++ cp = skipcomment(*cpp);
++ if (*cp == '!') {
++ debug("eval%d !", ops - eval_ops);
++ cp++;
++ if (eval_unary(ops, valp, &cp) == LT_IF)
++ return (LT_IF);
++ *valp = !*valp;
++ } else if (*cp == '(') {
++ cp++;
++ debug("eval%d (", ops - eval_ops);
++ if (eval_table(eval_ops, valp, &cp) == LT_IF)
++ return (LT_IF);
++ cp = skipcomment(cp);
++ if (*cp++ != ')')
++ return (LT_IF);
++ } else if (isdigit((unsigned char)*cp)) {
++ debug("eval%d number", ops - eval_ops);
++ *valp = strtol(cp, &ep, 0);
++ cp = skipsym(cp);
++ } else if (strncmp(cp, "defined", 7) == 0 && endsym(cp[7])) {
++ cp = skipcomment(cp+7);
++ debug("eval%d defined", ops - eval_ops);
++ if (*cp++ != '(')
++ return (LT_IF);
++ cp = skipcomment(cp);
++ sym = findsym(cp);
++ if (sym < 0)
++ return (LT_IF);
++ *valp = (value[sym] != NULL);
++ cp = skipsym(cp);
++ cp = skipcomment(cp);
++ if (*cp++ != ')')
++ return (LT_IF);
++ keepthis = false;
++ } else if (!endsym(*cp)) {
++ debug("eval%d symbol", ops - eval_ops);
++ sym = findsym(cp);
++ if (sym < 0)
++ return (LT_IF);
++ if (value[sym] == NULL)
++ *valp = 0;
++ else {
++ *valp = strtol(value[sym], &ep, 0);
++ if (*ep != '\0' || ep == value[sym])
++ return (LT_IF);
++ }
++ cp = skipsym(cp);
++ keepthis = false;
++ } else {
++ debug("eval%d bad expr", ops - eval_ops);
++ return (LT_IF);
++ }
++
++ *cpp = cp;
++ debug("eval%d = %d", ops - eval_ops, *valp);
++ return (*valp ? LT_TRUE : LT_FALSE);
++}
++
++/*
++ * Table-driven evaluation of binary operators.
++ */
++static Linetype
++eval_table(const struct ops *ops, int *valp, const char **cpp)
++{
++ const struct op *op;
++ const char *cp;
++ int val;
++
++ debug("eval%d", ops - eval_ops);
++ cp = *cpp;
++ if (ops->inner(ops+1, valp, &cp) == LT_IF)
++ return (LT_IF);
++ for (;;) {
++ cp = skipcomment(cp);
++ for (op = ops->op; op->str != NULL; op++)
++ if (strncmp(cp, op->str, strlen(op->str)) == 0)
++ break;
++ if (op->str == NULL)
++ break;
++ cp += strlen(op->str);
++ debug("eval%d %s", ops - eval_ops, op->str);
++ if (ops->inner(ops+1, &val, &cp) == LT_IF)
++ return (LT_IF);
++ *valp = op->fn(*valp, val);
++ }
++
++ *cpp = cp;
++ debug("eval%d = %d", ops - eval_ops, *valp);
++ return (*valp ? LT_TRUE : LT_FALSE);
++}
++
++/*
++ * Evaluate the expression on a #if or #elif line. If we can work out
++ * the result we return LT_TRUE or LT_FALSE accordingly, otherwise we
++ * return just a generic LT_IF.
++ */
++static Linetype
++ifeval(const char **cpp)
++{
++ int ret;
++ int val;
++
++ debug("eval %s", *cpp);
++ keepthis = killconsts ? false : true;
++ ret = eval_table(eval_ops, &val, cpp);
++ debug("eval = %d", val);
++ return (keepthis ? LT_IF : ret);
++}
++
++/*
++ * Skip over comments, strings, and character literals and stop at the
++ * next character position that is not whitespace. Between calls we keep
++ * the comment state in the global variable incomment, and we also adjust
++ * the global variable linestate when we see a newline.
++ * XXX: doesn't cope with the buffer splitting inside a state transition.
++ */
++static const char *
++skipcomment(const char *cp)
++{
++ if (text || ignoring[depth]) {
++ for (; isspace((unsigned char)*cp); cp++)
++ if (*cp == '\n')
++ linestate = LS_START;
++ return (cp);
++ }
++ while (*cp != '\0')
++ /* don't reset to LS_START after a line continuation */
++ if (strncmp(cp, "\\\n", 2) == 0)
++ cp += 2;
++ else switch (incomment) {
++ case NO_COMMENT:
++ if (strncmp(cp, "/\\\n", 3) == 0) {
++ incomment = STARTING_COMMENT;
++ cp += 3;
++ } else if (strncmp(cp, "/*", 2) == 0) {
++ incomment = C_COMMENT;
++ cp += 2;
++ } else if (strncmp(cp, "//", 2) == 0) {
++ incomment = CXX_COMMENT;
++ cp += 2;
++ } else if (strncmp(cp, "\'", 1) == 0) {
++ incomment = CHAR_LITERAL;
++ linestate = LS_DIRTY;
++ cp += 1;
++ } else if (strncmp(cp, "\"", 1) == 0) {
++ incomment = STRING_LITERAL;
++ linestate = LS_DIRTY;
++ cp += 1;
++ } else if (strncmp(cp, "\n", 1) == 0) {
++ linestate = LS_START;
++ cp += 1;
++ } else if (strchr(" \t", *cp) != NULL) {
++ cp += 1;
++ } else
++ return (cp);
++ continue;
++ case CXX_COMMENT:
++ if (strncmp(cp, "\n", 1) == 0) {
++ incomment = NO_COMMENT;
++ linestate = LS_START;
++ }
++ cp += 1;
++ continue;
++ case CHAR_LITERAL:
++ case STRING_LITERAL:
++ if ((incomment == CHAR_LITERAL && cp[0] == '\'') ||
++ (incomment == STRING_LITERAL && cp[0] == '\"')) {
++ incomment = NO_COMMENT;
++ cp += 1;
++ } else if (cp[0] == '\\') {
++ if (cp[1] == '\0')
++ cp += 1;
++ else
++ cp += 2;
++ } else if (strncmp(cp, "\n", 1) == 0) {
++ if (incomment == CHAR_LITERAL)
++ error("unterminated char literal");
++ else
++ error("unterminated string literal");
++ } else
++ cp += 1;
++ continue;
++ case C_COMMENT:
++ if (strncmp(cp, "*\\\n", 3) == 0) {
++ incomment = FINISHING_COMMENT;
++ cp += 3;
++ } else if (strncmp(cp, "*/", 2) == 0) {
++ incomment = NO_COMMENT;
++ cp += 2;
++ } else
++ cp += 1;
++ continue;
++ case STARTING_COMMENT:
++ if (*cp == '*') {
++ incomment = C_COMMENT;
++ cp += 1;
++ } else if (*cp == '/') {
++ incomment = CXX_COMMENT;
++ cp += 1;
++ } else {
++ incomment = NO_COMMENT;
++ linestate = LS_DIRTY;
++ }
++ continue;
++ case FINISHING_COMMENT:
++ if (*cp == '/') {
++ incomment = NO_COMMENT;
++ cp += 1;
++ } else
++ incomment = C_COMMENT;
++ continue;
++ default:
++ abort(); /* bug */
++ }
++ return (cp);
++}
++
++/*
++ * Skip over an identifier.
++ */
++static const char *
++skipsym(const char *cp)
++{
++ while (!endsym(*cp))
++ ++cp;
++ return (cp);
++}
++
++/*
++ * Look for the symbol in the symbol table. If is is found, we return
++ * the symbol table index, else we return -1.
++ */
++static int
++findsym(const char *str)
++{
++ const char *cp;
++ int symind;
++
++ cp = skipsym(str);
++ if (cp == str)
++ return (-1);
++ if (symlist) {
++ printf("%.*s\n", (int)(cp-str), str);
++ /* we don't care about the value of the symbol */
++ return (0);
++ }
++ for (symind = 0; symind < nsyms; ++symind) {
++ if (strlcmp(symname[symind], str, cp-str) == 0) {
++ debug("findsym %s %s", symname[symind],
++ value[symind] ? value[symind] : "");
++ return (symind);
++ }
++ }
++ return (-1);
++}
++
++/*
++ * Add a symbol to the symbol table.
++ */
++static void
++addsym(bool ignorethis, bool definethis, char *sym)
++{
++ int symind;
++ char *val;
++
++ symind = findsym(sym);
++ if (symind < 0) {
++ if (nsyms >= MAXSYMS)
++ errx(2, "too many symbols");
++ symind = nsyms++;
++ }
++ symname[symind] = sym;
++ ignore[symind] = ignorethis;
++ val = sym + (skipsym(sym) - sym);
++ if (definethis) {
++ if (*val == '=') {
++ value[symind] = val+1;
++ *val = '\0';
++ } else if (*val == '\0')
++ value[symind] = "";
++ else
++ usage();
++ } else {
++ if (*val != '\0')
++ usage();
++ value[symind] = NULL;
++ }
++}
++
++/*
++ * Compare s with n characters of t.
++ * The same as strncmp() except that it checks that s[n] == '\0'.
++ */
++static int
++strlcmp(const char *s, const char *t, size_t n)
++{
++ while (n-- && *t != '\0')
++ if (*s != *t)
++ return ((unsigned char)*s - (unsigned char)*t);
++ else
++ ++s, ++t;
++ return ((unsigned char)*s);
++}
++
++/*
++ * Diagnostics.
++ */
++static void
++debug(const char *msg, ...)
++{
++ va_list ap;
++
++ if (debugging) {
++ va_start(ap, msg);
++ vwarnx(msg, ap);
++ va_end(ap);
++ }
++}
++
++static void
++error(const char *msg)
++{
++ if (depth == 0)
++ warnx("%s: %d: %s", filename, linenum, msg);
++ else
++ warnx("%s: %d: %s (#if line %d depth %d)",
++ filename, linenum, msg, stifline[depth], depth);
++ errx(2, "output may be truncated");
++}
diff --git a/packages/linux/linux-2.6.18/kbuild-replace-use-of-strlcpy-with-a-dedicated-implmentation-in-unifdef.patch b/packages/linux/linux-2.6.18/kbuild-replace-use-of-strlcpy-with-a-dedicated-implmentation-in-unifdef.patch
new file mode 100644
index 0000000000..a9a67daff3
--- /dev/null
+++ b/packages/linux/linux-2.6.18/kbuild-replace-use-of-strlcpy-with-a-dedicated-implmentation-in-unifdef.patch
@@ -0,0 +1,30 @@
+From 14a036d2dc304797f3624c06bd6d2a1e9b59e45a Mon Sep 17 00:00:00 2001
+From: Sam Ravnborg <sam@mars.ravnborg.org>
+Date: Sun, 23 Jul 2006 20:41:30 +0200
+Subject: [PATCH] kbuild: replace use of strlcpy with a dedicated implmentation in unifdef
+
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+---
+ scripts/unifdef.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.18-avr32/scripts/unifdef.c
+===================================================================
+--- linux-2.6.18-avr32.orig/scripts/unifdef.c 2006-10-30 15:58:53.000000000 +0100
++++ linux-2.6.18-avr32/scripts/unifdef.c 2006-10-30 15:58:59.000000000 +0100
+@@ -450,7 +450,14 @@ ignoreon(void)
+ static void
+ keywordedit(const char *replacement)
+ {
+- strlcpy(keyword, replacement, tline + sizeof(tline) - keyword);
++ size_t size = tline + sizeof(tline) - keyword;
++ char *dst = keyword;
++ const char *src = replacement;
++ if (size != 0) {
++ while ((--size != 0) && (*src != '\0'))
++ *dst++ = *src++;
++ *dst = '\0';
++ }
+ print();
+ }
+ static void
diff --git a/packages/linux/linux-2.6.18/kbuild-use-in-kernel-unifdef.patch b/packages/linux/linux-2.6.18/kbuild-use-in-kernel-unifdef.patch
new file mode 100644
index 0000000000..b2c7930bb7
--- /dev/null
+++ b/packages/linux/linux-2.6.18/kbuild-use-in-kernel-unifdef.patch
@@ -0,0 +1,56 @@
+From 07aea3a71fc6b07744691eec2dfea705a7b30280 Mon Sep 17 00:00:00 2001
+From: Sam Ravnborg <sam@mars.ravnborg.org>
+Date: Sun, 23 Jul 2006 20:47:50 +0200
+Subject: [PATCH] kbuild: use in-kernel unifdef
+
+Let headers_install use in-kernel unifdef
+
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+---
+ Makefile | 4 ++--
+ scripts/Makefile | 3 +++
+ scripts/Makefile.headersinst | 2 +-
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+Index: linux-2.6.18-avr32/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/Makefile 2006-10-26 10:20:21.000000000 +0200
++++ linux-2.6.18-avr32/Makefile 2006-10-30 15:59:06.000000000 +0100
+@@ -893,8 +893,8 @@ INSTALL_HDR_PATH=$(objtree)/usr
+ export INSTALL_HDR_PATH
+
+ PHONY += headers_install
+-headers_install: include/linux/version.h
+- $(Q)unifdef -Ux /dev/null
++headers_install: include/linux/version.h scripts_basic FORCE
++ $(Q)$(MAKE) $(build)=scripts scripts/unifdef
+ $(Q)rm -rf $(INSTALL_HDR_PATH)/include
+ $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include
+
+Index: linux-2.6.18-avr32/scripts/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/scripts/Makefile 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-avr32/scripts/Makefile 2006-10-30 15:59:06.000000000 +0100
+@@ -15,6 +15,9 @@ hostprogs-$(CONFIG_IKCONFIG) += bin2
+
+ always := $(hostprogs-y)
+
++# The following hostprogs-y programs are only build on demand
++hostprogs-y += unifdef
++
+ subdir-$(CONFIG_MODVERSIONS) += genksyms
+ subdir-$(CONFIG_MODULES) += mod
+
+Index: linux-2.6.18-avr32/scripts/Makefile.headersinst
+===================================================================
+--- linux-2.6.18-avr32.orig/scripts/Makefile.headersinst 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-avr32/scripts/Makefile.headersinst 2006-10-30 15:59:06.000000000 +0100
+@@ -7,7 +7,7 @@
+ #
+ # ==========================================================================
+
+-UNIFDEF := unifdef -U__KERNEL__
++UNIFDEF := scripts/unifdef -U__KERNEL__
+
+ # Eliminate the contents of (and inclusions of) compiler.h
+ HDRSED := sed -e "s/ inline / __inline__ /g" \
diff --git a/packages/linux/linux-2.6.18/lcdc-do-not-clear-mem-if-fbmem_start-is-set.patch b/packages/linux/linux-2.6.18/lcdc-do-not-clear-mem-if-fbmem_start-is-set.patch
new file mode 100644
index 0000000000..b354047f60
--- /dev/null
+++ b/packages/linux/linux-2.6.18/lcdc-do-not-clear-mem-if-fbmem_start-is-set.patch
@@ -0,0 +1,16 @@
+Index: linux-2.6.18/drivers/video/sidsafb.c
+===================================================================
+--- linux-2.6.18.orig/drivers/video/sidsafb.c 2006-12-20 13:43:17.000000000 +0100
++++ linux-2.6.18/drivers/video/sidsafb.c 2006-12-20 13:46:44.000000000 +0100
+@@ -765,7 +765,10 @@
+ printk("fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %lu\n",
+ info->node, info->fix.mmio_start, sinfo->regs, sinfo->irq_base);
+
+- memset_io(info->screen_base, 0, info->fix.smem_len);
++ /* Only clear framebuffer if fbmem_start was not declared, assume the
++ * user have filled the framebuffer before the kernel was started. */
++ if (!fb_data->fbmem_start)
++ memset_io(info->screen_base, 0, info->fix.smem_len);
+ info->var.activate |= FB_ACTIVATE_FORCE | FB_ACTIVATE_NOW;
+ ret = fb_set_var(info, &info->var);
+ if (ret)
diff --git a/packages/linux/linux-2.6.18/lcdc-fix-possible-null-pointer-and-match-guard-time-to-uboot.patch b/packages/linux/linux-2.6.18/lcdc-fix-possible-null-pointer-and-match-guard-time-to-uboot.patch
new file mode 100644
index 0000000000..fea5d6cf80
--- /dev/null
+++ b/packages/linux/linux-2.6.18/lcdc-fix-possible-null-pointer-and-match-guard-time-to-uboot.patch
@@ -0,0 +1,38 @@
+Index: linux-2.6.18/drivers/video/sidsafb.c
+===================================================================
+--- linux-2.6.18.orig/drivers/video/sidsafb.c 2007-01-11 13:35:02.000000000 +0100
++++ linux-2.6.18/drivers/video/sidsafb.c 2007-01-11 14:22:56.000000000 +0100
+@@ -661,6 +661,7 @@
+ struct fb_info *info;
+ struct sidsafb_info *sinfo;
+ const struct resource *mmio_resource;
++ int preinitialized = 0;
+ int ret;
+
+ pr_debug("sidsafb_probe BEGIN\n");
+@@ -681,7 +682,7 @@
+ sinfo = info->par;
+ sinfo->info = info;
+ sinfo->pdev = pdev;
+- sinfo->guard_time = 1;
++ sinfo->guard_time = 2;
+
+ spin_lock_init(&sinfo->lock);
+ sidsafb_set_fbinfo(sinfo);
+@@ -711,6 +712,7 @@
+ info->fix.smem_len = fb_data->fbmem_size;
+ info->screen_base = ioremap(info->fix.smem_start,
+ info->fix.smem_len);
++ preinitialized = 1;
+ } else {
+ dma_addr_t paddr;
+
+@@ -767,7 +769,7 @@
+
+ /* Only clear framebuffer if fbmem_start was not declared, assume the
+ * user have filled the framebuffer before the kernel was started. */
+- if (!fb_data->fbmem_start)
++ if (!preinitialized)
+ memset_io(info->screen_base, 0, info->fix.smem_len);
+ info->var.activate |= FB_ACTIVATE_FORCE | FB_ACTIVATE_NOW;
+ ret = fb_set_var(info, &info->var);
diff --git a/packages/linux/linux-2.6.18/lcdc-wait-for-vsync.patch b/packages/linux/linux-2.6.18/lcdc-wait-for-vsync.patch
new file mode 100644
index 0000000000..7c1cd663cb
--- /dev/null
+++ b/packages/linux/linux-2.6.18/lcdc-wait-for-vsync.patch
@@ -0,0 +1,152 @@
+---
+ drivers/video/sidsafb.c | 68 +++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 61 insertions(+), 7 deletions(-)
+
+Index: linux-2.6.18-rc6-mm1/drivers/video/sidsafb.c
+===================================================================
+--- linux-2.6.18-rc6-mm1.orig/drivers/video/sidsafb.c 2006-09-11 13:03:46.000000000 +0200
++++ linux-2.6.18-rc6-mm1/drivers/video/sidsafb.c 2006-09-11 13:38:52.000000000 +0200
+@@ -11,6 +11,7 @@
+
+ #include <linux/config.h>
+ #include <linux/clk.h>
++#include <linux/completion.h>
+ #include <linux/kernel.h>
+ #include <linux/dma-mapping.h>
+ #include <linux/interrupt.h>
+@@ -38,7 +39,8 @@ struct sidsafb_info {
+ struct fb_info * info;
+ void __iomem * regs;
+ unsigned long irq_base;
+- wait_queue_head_t vsync_wait;
++ int wait_for_vsync;
++ struct completion vsync_complete;
+ unsigned int guard_time;
+ struct clk *hclk;
+ struct clk *pixclk;
+@@ -169,6 +171,38 @@ static struct fb_fix_screeninfo sidsafb_
+ .accel = FB_ACCEL_NONE,
+ };
+
++/*
++ * Let the user decide whether FBIOPAN_DISPLAY waits for the next
++ * vsync or not.
++ */
++static ssize_t
++vsync_pan_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ struct fb_info *info = dev_get_drvdata(dev);
++ struct sidsafb_info *sinfo = info->par;
++
++ return sprintf(buf, "%d\n", sinfo->wait_for_vsync);
++}
++
++static ssize_t
++vsync_pan_store(struct device *dev, struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ struct fb_info *info = dev_get_drvdata(dev);
++ struct sidsafb_info *sinfo = info->par;
++ unsigned long val;
++
++ val = simple_strtoul(buf, NULL, 0);
++ if (val)
++ sinfo->wait_for_vsync = 1;
++ else
++ sinfo->wait_for_vsync = 0;
++
++ return count;
++}
++
++static DEVICE_ATTR(vsync_pan, 0644, vsync_pan_show, vsync_pan_store);
++
+ static void sidsafb_update_dma(struct fb_info *info,
+ struct fb_var_screeninfo *var)
+ {
+@@ -513,10 +547,25 @@ static int sidsafb_setcolreg(unsigned in
+ static int sidsafb_pan_display(struct fb_var_screeninfo *var,
+ struct fb_info *info)
+ {
++ struct sidsafb_info *sinfo = info->par;
++
+ pr_debug("sidsafb_pan_display\n");
+
+ sidsafb_update_dma(info, var);
+
++ if (sinfo->wait_for_vsync) {
++ spin_lock_irq(&sinfo->lock);
++ lcdc_writel(sinfo, LCD_ICR, LCDC_BIT(LCD_ICR_EOFIC));
++ lcdc_writel(sinfo, LCD_IER, LCDC_BIT(LCD_IER_EOFIE));
++ init_completion(&sinfo->vsync_complete);
++ lcdc_readl(sinfo, LCD_IMR);
++ spin_unlock_irq(&sinfo->lock);
++
++ wait_for_completion(&sinfo->vsync_complete);
++
++ lcdc_writel(sinfo, LCD_IDR, LCDC_BIT(LCD_IDR_EOFID));
++ }
++
+ return 0;
+ }
+
+@@ -545,7 +594,7 @@ static irqreturn_t sidsafb_interrupt(int
+
+ lcdc_writel(sinfo, LCD_ICR, LCDC_BIT(LCD_ICR_EOFIC));
+ status &= ~LCDC_BIT(LCD_ISR_EOFIS);
+- wake_up(&sinfo->vsync_wait);
++ complete(&sinfo->vsync_complete);
+ }
+
+ if (status) {
+@@ -600,8 +649,6 @@ static int __devinit sidsafb_set_fbinfo(
+ info->fbops = &sidsafb_ops;
+ info->pseudo_palette = sinfo->pseudo_palette;
+
+- init_waitqueue_head(&sinfo->vsync_wait);
+-
+ return 0;
+ }
+
+@@ -700,18 +747,21 @@ static int __devinit sidsafb_probe(struc
+ goto unregister_irqs;
+ }
+
++ platform_set_drvdata(pdev, info);
++ ret = device_create_file(&pdev->dev, &dev_attr_vsync_pan);
++ if (ret)
++ goto free_cmap;
++
+ /*
+ * Tell the world that we're ready to go
+ */
+ ret = register_framebuffer(info);
+ if (ret)
+- goto free_cmap;
++ goto remove_attrs;
+
+ printk("fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %lu\n",
+ info->node, info->fix.mmio_start, sinfo->regs, sinfo->irq_base);
+
+- platform_set_drvdata(pdev, info);
+-
+ memset_io(info->screen_base, 0, info->fix.smem_len);
+ info->var.activate |= FB_ACTIVATE_FORCE | FB_ACTIVATE_NOW;
+ ret = fb_set_var(info, &info->var);
+@@ -724,6 +774,8 @@ static int __devinit sidsafb_probe(struc
+ return 0;
+
+
++remove_attrs:
++ device_remove_file(&pdev->dev, &dev_attr_vsync_pan);
+ free_cmap:
+ fb_dealloc_cmap(&info->cmap);
+ unregister_irqs:
+@@ -761,6 +813,8 @@ static int __devexit sidsafb_remove(stru
+ /* TODO: Restore original state */
+ unregister_framebuffer(info);
+
++ device_remove_file(&pdev->dev, &dev_attr_vsync_pan);
++
+ fb_dealloc_cmap(&info->cmap);
+ free_irq(sinfo->irq_base, info);
+ iounmap(sinfo->regs);
diff --git a/packages/linux/linux-2.6.18/ltv350qv-add-initial_power_state-param.patch b/packages/linux/linux-2.6.18/ltv350qv-add-initial_power_state-param.patch
new file mode 100644
index 0000000000..a877b0ea37
--- /dev/null
+++ b/packages/linux/linux-2.6.18/ltv350qv-add-initial_power_state-param.patch
@@ -0,0 +1,25 @@
+Index: linux-2.6.18/drivers/video/backlight/ltv350qv.c
+===================================================================
+--- linux-2.6.18.orig/drivers/video/backlight/ltv350qv.c 2007-01-11 14:55:39.000000000 +0100
++++ linux-2.6.18/drivers/video/backlight/ltv350qv.c 2007-01-11 14:59:23.000000000 +0100
+@@ -19,6 +19,11 @@
+
+ #define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
+
++static int initial_power_state = FB_BLANK_POWERDOWN;
++
++module_param(initial_power_state, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
++MODULE_PARM_DESC(initial_power_state, "Set initial power state of LCD");
++
+ struct ltv350qv {
+ struct spi_device *spi;
+ u8 *buffer;
+@@ -178,7 +183,7 @@
+ return -ENOMEM;
+
+ lcd->spi = spi;
+- lcd->power = FB_BLANK_POWERDOWN;
++ lcd->power = initial_power_state;
+ init_MUTEX(&lcd->lock);
+ lcd->buffer = kzalloc(8, GFP_KERNEL);
+
diff --git a/packages/linux/linux-2.6.18/ltv350qv-lcd-driver.patch b/packages/linux/linux-2.6.18/ltv350qv-lcd-driver.patch
new file mode 100644
index 0000000000..ce0250e3fd
--- /dev/null
+++ b/packages/linux/linux-2.6.18/ltv350qv-lcd-driver.patch
@@ -0,0 +1,355 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Wed Dec 21 14:52:09 2005 +0100
+Subject: [PATCH] LTV350QV LCD driver
+
+This patch adds support for powering on and off the Samsung LTV350QV
+LCD panel via SPI. The driver responds to framebuffer power management,
+it powers off the panel on reboot/halt/poweroff, and it can also be
+controlled through sysfs. The panel is powered up when the module is
+loaded and off when the module is unloaded.
+
+---
+ drivers/video/backlight/Kconfig | 12 +
+ drivers/video/backlight/Makefile | 1
+ drivers/video/backlight/ltv350qv.c | 301 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 314 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/video/backlight/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/video/backlight/Kconfig 2006-09-11 20:30:16.000000000 +0200
++++ linux-2.6.18-avr32/drivers/video/backlight/Kconfig 2006-09-11 20:31:24.000000000 +0200
+@@ -42,6 +42,18 @@ config LCD_DEVICE
+ depends on LCD_CLASS_DEVICE
+ default y
+
++config LCD_LTV350QV
++ tristate "Samsung LTV350QV LCD Panel"
++ depends on LCD_DEVICE && SPI
++ default n
++ help
++ If you have a Samsung LTV350QV LCD panel, say y to include a
++ power control driver for it. The panel starts up in power
++ off state, so you need this driver in order to see any
++ output.
++
++ The LTV350QV panel is present on most ATSTK1000 boards.
++
+ config BACKLIGHT_CORGI
+ tristate "Sharp Corgi Backlight Driver (SL Series)"
+ depends on BACKLIGHT_DEVICE && PXA_SHARPSL
+Index: linux-2.6.18-avr32/drivers/video/backlight/Makefile
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/video/backlight/Makefile 2006-09-11 20:30:23.000000000 +0200
++++ linux-2.6.18-avr32/drivers/video/backlight/Makefile 2006-09-11 20:31:24.000000000 +0200
+@@ -5,3 +5,4 @@ obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) +=
+ obj-$(CONFIG_BACKLIGHT_CORGI) += corgi_bl.o
+ obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
+ obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
++obj-$(CONFIG_LCD_LTV350QV) += ltv350qv.o
+Index: linux-2.6.18-avr32/drivers/video/backlight/ltv350qv.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.18-avr32/drivers/video/backlight/ltv350qv.c 2006-09-11 20:31:24.000000000 +0200
+@@ -0,0 +1,301 @@
++/*
++ * Power control for Samsung LTV350QV Quarter VGA LCD Panel
++ *
++ * Copyright (C) 2006 Atmel Corporation
++ *
++ * 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/config.h>
++#include <linux/delay.h>
++#include <linux/err.h>
++#include <linux/fb.h>
++#include <linux/init.h>
++#include <linux/lcd.h>
++#include <linux/module.h>
++#include <linux/reboot.h>
++#include <linux/spi/spi.h>
++
++#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
++
++struct ltv350qv {
++ struct spi_device *spi;
++ u8 *buffer;
++ int power;
++ struct semaphore lock;
++ struct lcd_device *ld;
++ struct list_head list;
++ int halt_done;
++};
++
++static LIST_HEAD(lcd_list);
++
++static int ltv350qv_write_reg(struct ltv350qv *lcd, u8 reg, u16 val)
++{
++ struct spi_message msg;
++ struct spi_transfer index_xfer = {
++ .len = 3,
++ .cs_change = 1,
++ };
++ struct spi_transfer value_xfer = {
++ .len = 3,
++ .cs_change = 1,
++ };
++
++ spi_message_init(&msg);
++
++ /* register index */
++ lcd->buffer[0] = 0x74;
++ lcd->buffer[1] = 0x00;
++ lcd->buffer[2] = reg & 0x7f;
++ index_xfer.tx_buf = lcd->buffer;
++ spi_message_add_tail(&index_xfer, &msg);
++
++ /* register value */
++ lcd->buffer[4] = 0x76;
++ lcd->buffer[5] = val >> 8;
++ lcd->buffer[6] = val;
++ value_xfer.tx_buf = lcd->buffer + 4;
++ spi_message_add_tail(&value_xfer, &msg);
++
++ return spi_sync(lcd->spi, &msg);
++}
++
++#define write_reg(_spi, reg, val) \
++ do { \
++ ret = ltv350qv_write_reg(_spi, reg, val); \
++ if (ret) \
++ goto out; \
++ } while (0)
++
++static int ltv350qv_power_on(struct ltv350qv *lcd)
++{
++ int ret;
++
++ write_reg(lcd, 9, 0x0000);
++ msleep(15);
++ write_reg(lcd, 9, 0x4000);
++ write_reg(lcd, 10, 0x2000);
++ write_reg(lcd, 9, 0x4055);
++ msleep(55);
++ write_reg(lcd, 1, 0x409d);
++ write_reg(lcd, 2, 0x0204);
++ write_reg(lcd, 3, 0x0100);
++ write_reg(lcd, 4, 0x3000);
++ write_reg(lcd, 5, 0x4003);
++ write_reg(lcd, 6, 0x000a);
++ write_reg(lcd, 7, 0x0021);
++ write_reg(lcd, 8, 0x0c00);
++ write_reg(lcd, 10, 0x0103);
++ write_reg(lcd, 11, 0x0301);
++ write_reg(lcd, 12, 0x1f0f);
++ write_reg(lcd, 13, 0x1f0f);
++ write_reg(lcd, 14, 0x0707);
++ write_reg(lcd, 15, 0x0307);
++ write_reg(lcd, 16, 0x0707);
++ write_reg(lcd, 17, 0x0000);
++ write_reg(lcd, 18, 0x0004);
++ write_reg(lcd, 19, 0x0000);
++
++ msleep(20);
++ write_reg(lcd, 9, 0x4a55);
++ write_reg(lcd, 5, 0x5003);
++
++out:
++ return ret;
++}
++
++static int ltv350qv_power_off(struct ltv350qv *lcd)
++{
++ int ret;
++
++ /* GON -> 0, POC -> 0 */
++ write_reg(lcd, 9, 0x4055);
++ /* DSC -> 0 */
++ write_reg(lcd, 5, 0x4003);
++ /* VCOMG -> 0 */
++ write_reg(lcd, 10, 0x2103);
++
++ msleep(1);
++
++ /* AP[2:0] -> 000 */
++ write_reg(lcd, 9, 0x4050);
++
++out:
++ return ret;
++}
++
++static int ltv350qv_power(struct ltv350qv *lcd, int power)
++{
++ int ret = 0;
++
++ down(&lcd->lock);
++
++ if (POWER_IS_ON(power) && !POWER_IS_ON(lcd->power))
++ ret = ltv350qv_power_on(lcd);
++ else if (!POWER_IS_ON(power) && POWER_IS_ON(lcd->power))
++ ret = ltv350qv_power_off(lcd);
++
++ if (!ret)
++ lcd->power = power;
++
++ up(&lcd->lock);
++
++ return ret;
++}
++
++static int ltv350qv_set_power(struct lcd_device *ld, int power)
++{
++ struct ltv350qv *lcd;
++
++ lcd = class_get_devdata(&ld->class_dev);
++ return ltv350qv_power(lcd, power);
++}
++
++static int ltv350qv_get_power(struct lcd_device *ld)
++{
++ struct ltv350qv *lcd;
++
++ lcd = class_get_devdata(&ld->class_dev);
++ return lcd->power;
++}
++
++static struct lcd_properties lcd_properties = {
++ .owner = THIS_MODULE,
++ .get_power = ltv350qv_get_power,
++ .set_power = ltv350qv_set_power,
++};
++
++static int __devinit ltv350qv_probe(struct spi_device *spi)
++{
++ struct ltv350qv *lcd;
++ struct lcd_device *ld;
++ int ret;
++
++ lcd = kzalloc(sizeof(struct ltv350qv), GFP_KERNEL);
++ if (!lcd)
++ return -ENOMEM;
++
++ lcd->spi = spi;
++ lcd->power = FB_BLANK_POWERDOWN;
++ init_MUTEX(&lcd->lock);
++ lcd->buffer = kzalloc(8, GFP_KERNEL);
++
++ spi->mode = SPI_MODE_3;
++ spi->bits_per_word = 8;
++ ret = spi_setup(spi);
++ if (ret)
++ goto out_free_lcd;
++
++ ld = lcd_device_register("ltv350qv", lcd, &lcd_properties);
++ if (IS_ERR(ld)) {
++ ret = PTR_ERR(ld);
++ goto out_free_lcd;
++ }
++ lcd->ld = ld;
++
++ list_add(&lcd->list, &lcd_list);
++
++ ret = ltv350qv_power(lcd, FB_BLANK_UNBLANK);
++ if (ret)
++ goto out_unregister;
++
++ dev_set_drvdata(&spi->dev, lcd);
++
++ return 0;
++
++out_unregister:
++ lcd_device_unregister(ld);
++out_free_lcd:
++ kfree(lcd);
++ return ret;
++}
++
++static int __devexit ltv350qv_remove(struct spi_device *spi)
++{
++ struct ltv350qv *lcd = dev_get_drvdata(&spi->dev);
++
++ ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
++ list_del(&lcd->list);
++ lcd_device_unregister(lcd->ld);
++ kfree(lcd);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int ltv350qv_suspend(struct spi_device *spi,
++ pm_message_t state, u32 level)
++{
++ struct ltv350qv *lcd = dev_get_drvdata(&spi->dev);
++
++ if (level == SUSPEND_POWER_DOWN)
++ return ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
++
++ return 0;
++}
++
++static int ltv350qv_resume(struct spi_device *spi, u32 level)
++{
++ struct ltv350qv *lcd = dev_get_drvdata(&spi->dev);
++
++ if (level == RESUME_POWER_ON)
++ return ltv350qv_power(lcd, FB_BLANK_UNBLANK);
++
++ return 0;
++}
++#else
++#define ltv350qv_suspend NULL
++#define ltv350qv_resume NULL
++#endif
++
++/* Power down all displays on reboot, poweroff or halt */
++static int ltv350qv_halt(struct notifier_block *nb, unsigned long event,
++ void *p)
++{
++ struct ltv350qv *lcd;
++
++ list_for_each_entry(lcd, &lcd_list, list) {
++ if (!lcd->halt_done)
++ ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
++ lcd->halt_done = 1;
++ }
++
++ return NOTIFY_OK;
++}
++
++static struct spi_driver ltv350qv_driver = {
++ .driver = {
++ .name = "ltv350qv",
++ .bus = &spi_bus_type,
++ .owner = THIS_MODULE,
++ },
++
++ .probe = ltv350qv_probe,
++ .remove = __devexit_p(ltv350qv_remove),
++ .suspend = ltv350qv_suspend,
++ .resume = ltv350qv_resume,
++};
++
++static struct notifier_block ltv350qv_notifier = {
++ .notifier_call = ltv350qv_halt,
++};
++
++static int __init ltv350qv_init(void)
++{
++ register_reboot_notifier(&ltv350qv_notifier);
++ return spi_register_driver(&ltv350qv_driver);
++}
++
++static void __exit ltv350qv_exit(void)
++{
++ unregister_reboot_notifier(&ltv350qv_notifier);
++ spi_unregister_driver(&ltv350qv_driver);
++}
++module_init(ltv350qv_init);
++module_exit(ltv350qv_exit);
++
++MODULE_AUTHOR("Atmel Norway");
++MODULE_DESCRIPTION("Samsung LTV350QV LCD Driver");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-2.6.18/mmc-add-bit-manipulating-macros.patch b/packages/linux/linux-2.6.18/mmc-add-bit-manipulating-macros.patch
new file mode 100644
index 0000000000..544e447580
--- /dev/null
+++ b/packages/linux/linux-2.6.18/mmc-add-bit-manipulating-macros.patch
@@ -0,0 +1,321 @@
+Index: linux-2.6.18/drivers/mmc/atmel-mci.c
+===================================================================
+--- linux-2.6.18.orig/drivers/mmc/atmel-mci.c 2007-01-15 16:36:59.000000000 +0100
++++ linux-2.6.18/drivers/mmc/atmel-mci.c 2007-01-16 13:18:40.000000000 +0100
+@@ -45,6 +45,7 @@
+ EVENT_STOP_COMPLETE,
+ EVENT_STOP_ERROR,
+ EVENT_DMA_ERROR,
++ EVENT_CARD_DETECT,
+ };
+
+ struct atmel_mci_dma {
+@@ -572,9 +589,8 @@
+ * Data might complete before command for very short transfers
+ * (like READ_SCR)
+ */
+- if (test_bit(EVENT_CMD_COMPLETE, &host->completed_events)
+- && (!data->stop
+- || test_bit(EVENT_STOP_COMPLETE, &host->completed_events)))
++ if (mci_cmd_is_complete(host)
++ && (!data->stop || mci_stop_is_complete(host)))
+ atmci_request_end(host->mmc, data->mrq);
+ }
+
+@@ -604,11 +620,11 @@
+ host->pending_events, host->completed_events,
+ mci_readl(host, IMR));
+
+- if (test_and_clear_bit(EVENT_CMD_ERROR, &host->pending_events)) {
++ if (mci_clear_cmd_error_is_pending(host)) {
+ struct mmc_command *cmd;
+
+- set_bit(EVENT_CMD_ERROR, &host->completed_events);
+- clear_bit(EVENT_CMD_COMPLETE, &host->pending_events);
++ mci_set_cmd_error_complete(host);
++ mci_clear_cmd_pending(host);
+ cmd = host->mrq->cmd;
+
+ if (cmd->data) {
+@@ -620,28 +636,27 @@
+ atmci_command_error(mmc, cmd, host->error_status);
+ atmci_request_end(mmc, cmd->mrq);
+ }
+- if (test_and_clear_bit(EVENT_STOP_ERROR, &host->pending_events)) {
+- set_bit(EVENT_STOP_ERROR, &host->completed_events);
+- clear_bit(EVENT_STOP_COMPLETE, &host->pending_events);
++ if (mci_clear_stop_error_is_pending(host)) {
++ mci_set_stop_error_complete(host);
++ mci_clear_stop_pending(host);
+ atmci_command_error(mmc, host->mrq->stop,
+ host->error_status);
+ if (!host->data)
+ atmci_request_end(mmc, host->mrq);
+ }
+- if (test_and_clear_bit(EVENT_CMD_COMPLETE, &host->pending_events)) {
+- set_bit(EVENT_CMD_COMPLETE, &host->completed_events);
+- if (!mrq->data
+- || test_bit(EVENT_DATA_COMPLETE, &host->completed_events))
++ if (mci_clear_cmd_is_pending(host)) {
++ mci_set_cmd_complete(host);
++ if (!mrq->data || mci_data_is_complete(host))
+ atmci_request_end(mmc, mrq);
+ }
+- if (test_and_clear_bit(EVENT_STOP_COMPLETE, &host->pending_events)) {
+- set_bit(EVENT_STOP_COMPLETE, &host->completed_events);
+- if (test_bit(EVENT_DATA_COMPLETE, &host->completed_events))
++ if (mci_clear_stop_is_pending(host)) {
++ mci_set_stop_complete(host);
++ if (mci_data_is_complete(host))
+ atmci_request_end(mmc, mrq);
+ }
+- if (test_and_clear_bit(EVENT_DMA_ERROR, &host->pending_events)) {
+- set_bit(EVENT_DMA_ERROR, &host->completed_events);
+- clear_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++ if (mci_clear_dma_error_is_pending(host)) {
++ mci_set_dma_error_complete(host);
++ mci_clear_data_pending(host);
+
+ /* DMA controller got bus error => invalid address */
+ data->error = MMC_ERR_INVALID;
+@@ -650,18 +665,17 @@
+ mmc_hostname(mmc), host->data->bytes_xfered);
+
+ if (data->stop
+- && !test_and_set_bit(EVENT_STOP_SENT,
+- &host->completed_events))
++ && !mci_set_stop_sent_is_completed(host))
+ /* TODO: Check if card is still present */
+ send_stop_cmd(host->mmc, data, 0);
+
+ atmci_data_complete(host, data);
+ }
+- if (test_and_clear_bit(EVENT_DATA_ERROR, &host->pending_events)) {
++ if (mci_clear_data_error_is_pending(host)) {
+ u32 status = host->error_status;
+
+- set_bit(EVENT_DATA_ERROR, &host->completed_events);
+- clear_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++ mci_set_data_error_complete(host);
++ mci_clear_data_pending(host);
+
+ dma_stop_request(host->dma.req.req.dmac,
+ host->dma.req.req.channel);
+@@ -686,14 +700,14 @@
+ mmc_hostname(host->mmc), data->bytes_xfered);
+
+ if (data->stop
+- && !test_and_set_bit(EVENT_STOP_SENT, &host->completed_events))
++ && !mci_set_stop_sent_is_completed(host))
+ /* TODO: Check if card is still present */
+ send_stop_cmd(host->mmc, data, 0);
+
+ atmci_data_complete(host, data);
+ }
+- if (test_and_clear_bit(EVENT_DATA_COMPLETE, &host->pending_events)) {
+- set_bit(EVENT_DATA_COMPLETE, &host->completed_events);
++ if (mci_clear_data_is_pending(host)) {
++ mci_set_data_complete(host);
+ data->bytes_xfered = data->blocks * data->blksz;
+ atmci_data_complete(host, data);
+ }
+@@ -716,10 +761,10 @@
+ mci_writel(host, IDR, MCI_BIT(CMDRDY) | MCI_CMD_ERROR_FLAGS);
+ host->cmd = NULL;
+
+- if (test_bit(EVENT_STOP_SENT, &host->completed_events))
+- set_bit(EVENT_STOP_COMPLETE, &host->pending_events);
++ if (mci_stop_sent_is_complete(host))
++ mci_set_stop_pending(host);
+ else
+- set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
++ mci_set_cmd_pending(host);
+
+ tasklet_schedule(&host->tasklet);
+ }
+@@ -735,13 +780,12 @@
+ host = container_of(dma, struct atmel_mci, dma);
+ data = host->data;
+
+- if (data->stop && !test_and_set_bit(EVENT_STOP_SENT,
+- &host->completed_events))
++ if (data->stop && !mci_set_stop_sent_is_completed(host))
+ send_stop_cmd(host->mmc, data, 0);
+
+ if (data->flags & MMC_DATA_READ) {
+ mci_writel(host, IDR, MCI_DATA_ERROR_FLAGS);
+- set_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++ mci_set_data_pending(host);
+ tasklet_schedule(&host->tasklet);
+ } else {
+ /*
+@@ -765,7 +809,7 @@
+ mci_writel(host, IDR, (MCI_BIT(NOTBUSY)
+ | MCI_DATA_ERROR_FLAGS));
+
+- set_bit(EVENT_DMA_ERROR, &host->pending_events);
++ mci_set_dma_error_pending(host);
+ tasklet_schedule(&host->tasklet);
+ }
+
+@@ -790,10 +834,10 @@
+ | MCI_DATA_ERROR_FLAGS));
+ host->error_status = status;
+ host->cmd = NULL;
+- if (test_bit(EVENT_STOP_SENT, &host->completed_events))
+- set_bit(EVENT_STOP_ERROR, &host->pending_events);
++ if (mci_stop_sent_is_complete(host))
++ mci_set_stop_error_pending(host);
+ else
+- set_bit(EVENT_CMD_ERROR, &host->pending_events);
++ mci_set_cmd_error_pending(host);
+ tasklet_schedule(&host->tasklet);
+ break;
+ }
+@@ -801,7 +845,7 @@
+ mci_writel(host, IDR, (MCI_BIT(NOTBUSY)
+ | MCI_DATA_ERROR_FLAGS));
+ host->error_status = status;
+- set_bit(EVENT_DATA_ERROR, &host->pending_events);
++ mci_set_data_error_pending(host);
+ tasklet_schedule(&host->tasklet);
+ break;
+ }
+@@ -810,7 +854,7 @@
+ if (pending & MCI_BIT(NOTBUSY)) {
+ mci_writel(host, IDR, (MCI_BIT(NOTBUSY)
+ | MCI_DATA_ERROR_FLAGS));
+- set_bit(EVENT_DATA_COMPLETE, &host->pending_events);
++ mci_set_data_pending(host);
+ tasklet_schedule(&host->tasklet);
+ }
+
+Index: linux-2.6.18/drivers/mmc/atmel-mci.h
+===================================================================
+--- linux-2.6.18.orig/drivers/mmc/atmel-mci.h 2007-01-16 13:22:59.000000000 +0100
++++ linux-2.6.18/drivers/mmc/atmel-mci.h 2007-01-16 13:24:33.000000000 +0100
+@@ -189,4 +189,124 @@
+ #define mci_writel(port,reg,value) \
+ __raw_writel((value), (port)->regs + MCI_##reg)
+
++/* Test bit macros for completed events */
++#define mci_cmd_is_complete(host) \
++ test_bit(EVENT_CMD_COMPLETE, &host->completed_events)
++#define mci_cmd_error_is_complete(host) \
++ test_bit(EVENT_CMD_ERROR, &host->completed_events)
++#define mci_data_is_complete(host) \
++ test_bit(EVENT_DATA_COMPLETE, &host->completed_events)
++#define mci_data_error_is_complete(host) \
++ test_bit(EVENT_DATA_ERROR, &host->completed_events)
++#define mci_stop_sent_is_complete(host) \
++ test_bit(EVENT_STOP_SENT, &host->completed_events)
++#define mci_stop_is_complete(host) \
++ test_bit(EVENT_STOP_COMPLETE, &host->completed_events)
++#define mci_stop_error_is_complete(host) \
++ test_bit(EVENT_STOP_ERROR, &host->completed_events)
++#define mci_dma_error_is_complete(host) \
++ test_bit(EVENT_DMA_ERROR, &host->completed_events)
++#define mci_card_detect_is_complete(host) \
++ test_bit(EVENT_CARD_DETECT, &host->completed_events)
++
++/* Test and clear bit macros for pending events */
++#define mci_clear_cmd_is_pending(host) \
++ test_and_clear_bit(EVENT_CMD_COMPLETE, &host->pending_events)
++#define mci_clear_cmd_error_is_pending(host) \
++ test_and_clear_bit(EVENT_CMD_ERROR, &host->pending_events)
++#define mci_clear_data_is_pending(host) \
++ test_and_clear_bit(EVENT_DATA_COMPLETE, &host->pending_events)
++#define mci_clear_data_error_is_pending(host) \
++ test_and_clear_bit(EVENT_DATA_ERROR, &host->pending_events)
++#define mci_clear_stop_sent_is_pending(host) \
++ test_and_clear_bit(EVENT_STOP_SENT, &host->pending_events)
++#define mci_clear_stop_is_pending(host) \
++ test_and_clear_bit(EVENT_STOP_COMPLETE, &host->pending_events)
++#define mci_clear_stop_error_is_pending(host) \
++ test_and_clear_bit(EVENT_STOP_ERROR, &host->pending_events)
++#define mci_clear_dma_error_is_pending(host) \
++ test_and_clear_bit(EVENT_DMA_ERROR, &host->pending_events)
++#define mci_clear_card_detect_is_pending(host) \
++ test_and_clear_bit(EVENT_CARD_DETECT, &host->pending_events)
++
++/* Test and set bit macros for completed events */
++#define mci_set_cmd_is_completed(host) \
++ test_and_set_bit(EVENT_CMD_COMPLETE, &host->completed_events)
++#define mci_set_cmd_error_is_completed(host) \
++ test_and_set_bit(EVENT_CMD_ERROR, &host->completed_events)
++#define mci_set_data_is_completed(host) \
++ test_and_set_bit(EVENT_DATA_COMPLETE, &host->completed_events)
++#define mci_set_data_error_is_completed(host) \
++ test_and_set_bit(EVENT_DATA_ERROR, &host->completed_events)
++#define mci_set_stop_sent_is_completed(host) \
++ test_and_set_bit(EVENT_STOP_SENT, &host->completed_events)
++#define mci_set_stop_is_completed(host) \
++ test_and_set_bit(EVENT_STOP_COMPLETE, &host->completed_events)
++#define mci_set_stop_error_is_completed(host) \
++ test_and_set_bit(EVENT_STOP_ERROR, &host->completed_events)
++#define mci_set_dma_error_is_completed(host) \
++ test_and_set_bit(EVENT_DMA_ERROR, &host->completed_events)
++#define mci_set_card_detect_is_completed(host) \
++ test_and_set_bit(EVENT_CARD_DETECT, &host->completed_events)
++
++/* Set bit macros for completed events */
++#define mci_set_cmd_complete(host) \
++ set_bit(EVENT_CMD_COMPLETE, &host->completed_events)
++#define mci_set_cmd_error_complete(host) \
++ set_bit(EVENT_CMD_ERROR, &host->completed_events)
++#define mci_set_data_complete(host) \
++ set_bit(EVENT_DATA_COMPLETE, &host->completed_events)
++#define mci_set_data_error_complete(host) \
++ set_bit(EVENT_DATA_ERROR, &host->completed_events)
++#define mci_set_stop_sent_complete(host) \
++ set_bit(EVENT_STOP_SENT, &host->completed_events)
++#define mci_set_stop_complete(host) \
++ set_bit(EVENT_STOP_COMPLETE, &host->completed_events)
++#define mci_set_stop_error_complete(host) \
++ set_bit(EVENT_STOP_ERROR, &host->completed_events)
++#define mci_set_dma_error_complete(host) \
++ set_bit(EVENT_DMA_ERROR, &host->completed_events)
++#define mci_set_card_detect_complete(host) \
++ set_bit(EVENT_CARD_DETECT, &host->completed_events)
++
++/* Set bit macros for pending events */
++#define mci_set_cmd_pending(host) \
++ set_bit(EVENT_CMD_COMPLETE, &host->pending_events)
++#define mci_set_cmd_error_pending(host) \
++ set_bit(EVENT_CMD_ERROR, &host->pending_events)
++#define mci_set_data_pending(host) \
++ set_bit(EVENT_DATA_COMPLETE, &host->pending_events)
++#define mci_set_data_error_pending(host) \
++ set_bit(EVENT_DATA_ERROR, &host->pending_events)
++#define mci_set_stop_sent_pending(host) \
++ set_bit(EVENT_STOP_SENT, &host->pending_events)
++#define mci_set_stop_pending(host) \
++ set_bit(EVENT_STOP_COMPLETE, &host->pending_events)
++#define mci_set_stop_error_pending(host) \
++ set_bit(EVENT_STOP_ERROR, &host->pending_events)
++#define mci_set_dma_error_pending(host) \
++ set_bit(EVENT_DMA_ERROR, &host->pending_events)
++#define mci_set_card_detect_pending(host) \
++ set_bit(EVENT_CARD_DETECT, &host->pending_events)
++
++/* Clear bit macros for pending events */
++#define mci_clear_cmd_pending(host) \
++ clear_bit(EVENT_CMD_COMPLETE, &host->pending_events)
++#define mci_clear_cmd_error_pending(host) \
++ clear_bit(EVENT_CMD_ERROR, &host->pending_events)
++#define mci_clear_data_pending(host) \
++ clear_bit(EVENT_DATA_COMPLETE, &host->pending_events)
++#define mci_clear_data_error_pending(host) \
++ clear_bit(EVENT_DATA_ERROR, &host->pending_events)
++#define mci_clear_stop_sent_pending(host) \
++ clear_bit(EVENT_STOP_SENT, &host->pending_events)
++#define mci_clear_stop_pending(host) \
++ clear_bit(EVENT_STOP_COMPLETE, &host->pending_events)
++#define mci_clear_stop_error_pending(host) \
++ clear_bit(EVENT_STOP_ERROR, &host->pending_events)
++#define mci_clear_dma_error_pending(host) \
++ clear_bit(EVENT_DMA_ERROR, &host->pending_events)
++#define mci_clear_card_detect_pending(host) \
++ clear_bit(EVENT_CARD_DETECT, &host->pending_events)
++
+ #endif /* __DRIVERS_MMC_ATMEL_MCI_H__ */
diff --git a/packages/linux/linux-2.6.18/mmc-add-detect-card-and-wp-support.patch b/packages/linux/linux-2.6.18/mmc-add-detect-card-and-wp-support.patch
new file mode 100644
index 0000000000..f91ddc239a
--- /dev/null
+++ b/packages/linux/linux-2.6.18/mmc-add-detect-card-and-wp-support.patch
@@ -0,0 +1,159 @@
+Index: linux-2.6.18/drivers/mmc/atmel-mci.c
+===================================================================
+--- linux-2.6.18.orig/drivers/mmc/atmel-mci.c 2007-01-16 14:01:56.000000000 +0100
++++ linux-2.6.18/drivers/mmc/atmel-mci.c 2007-01-16 14:20:23.000000000 +0100
+@@ -72,7 +72,6 @@
+ u32 error_status;
+
+ int present;
+- unsigned int wp_present:1;
+
+ unsigned long bus_hz;
+ unsigned long mapbase;
+@@ -538,9 +537,26 @@
+ }
+ }
+
++int atmci_get_ro(struct mmc_host *mmc)
++{
++ int read_only = 0;
++ struct atmel_mci *host = mmc_priv(mmc);
++
++ if (host->board->wp_pin != GPIO_PIO_NONE) {
++ read_only = gpio_get_value(host->board->wp_pin);
++ pr_debug("%s: card is %s\n", mmc_hostname(mmc),
++ (read_only ? "read-only" : "read-write") );
++ } else {
++ pr_debug("%s: host does not support reading read-only switch."
++ " Assuming write-enable.\n", mmc_hostname(mmc));
++ }
++ return read_only;
++}
++
+ static struct mmc_host_ops atmci_ops = {
+ .request = atmci_request,
+ .set_ios = atmci_set_ios,
++ .get_ro = atmci_get_ro,
+ };
+
+ static void atmci_request_end(struct mmc_host *mmc, struct mmc_request *mrq)
+@@ -695,6 +711,37 @@
+ data->bytes_xfered = data->blocks * data->blksz;
+ atmci_data_complete(host, data);
+ }
++ if (mci_clear_card_detect_is_pending(host)) {
++ /* Reset controller if card is gone */
++ if (!host->present) {
++ mci_writel(host, CR, MCI_BIT(SWRST));
++ mci_writel(host, IDR, ~0UL);
++ mci_writel(host, CR, MCI_BIT(MCIEN));
++ }
++
++ /* Clean up queue if present */
++ if (mrq) {
++ if (!mci_cmd_is_complete(host)
++ && !mci_cmd_error_is_complete(host)) {
++ mrq->cmd->error = MMC_ERR_TIMEOUT;
++ }
++ if (mrq->data && !mci_data_is_complete(host)
++ && !mci_data_error_is_complete(host)) {
++ dma_stop_request(host->dma.req.req.dmac,
++ host->dma.req.req.channel);
++ host->data->error = MMC_ERR_TIMEOUT;
++ atmci_data_complete(host, data);
++ }
++ if (mrq->stop && !mci_stop_is_complete(host)
++ && !mci_stop_error_is_complete(host)) {
++ mrq->stop->error = MMC_ERR_TIMEOUT;
++ }
++
++ host->cmd = NULL;
++ atmci_request_end(mmc, mrq);
++ }
++ mmc_detect_change(host->mmc, msecs_to_jiffies(100));
++ }
+ }
+
+ static void atmci_cmd_interrupt(struct mmc_host *mmc, u32 status)
+@@ -821,6 +868,23 @@
+ return IRQ_HANDLED;
+ }
+
++static irqreturn_t atmci_detect_int(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct mmc_host *mmc = dev_id;
++ struct atmel_mci *host = mmc_priv(mmc);
++
++ int present = !gpio_get_value(irq_to_gpio(irq));
++
++ if (present != host->present) {
++ pr_debug("%s: card %s\n", mmc_hostname(host->mmc),
++ present ? "inserted" : "removed");
++ host->present = present;
++ mci_set_card_detect_pending(host);
++ tasklet_schedule(&host->tasklet);
++ }
++ return IRQ_HANDLED;
++}
++
+ static int __devinit atmci_probe(struct platform_device *pdev)
+ {
+ struct atmel_mci *host;
+@@ -887,15 +951,9 @@
+
+ if (host->board && host->board->wp_pin != GPIO_PIO_NONE) {
+ ret = gpio_request(host->board->wp_pin, "mmc_wp");
+- if (ret) {
++ if (ret)
+ printk(KERN_WARNING "%s: no WP pin available (%d)\n",
+ mmc_hostname(host->mmc), ret);
+- host->wp_present = 0;
+- } else {
+- host->wp_present = 1;
+- }
+- } else {
+- host->wp_present = 0;
+ }
+
+ /* TODO: Get this information from platform data */
+@@ -928,6 +986,19 @@
+
+ mmc_add_host(mmc);
+
++ if (host->present != -1) {
++ ret = request_irq(gpio_to_irq(host->board->detect_pin),
++ atmci_detect_int,
++ IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING,
++ "mmci", mmc);
++ if (ret) {
++ printk(KERN_ERR "%s: could not request IRQ %d "
++ "for detect pin\n",
++ mmc_hostname(mmc),
++ gpio_to_irq(host->board->detect_pin));
++ }
++ }
++
+ printk(KERN_INFO "%s: Atmel MCI controller at 0x%08lx irq %d\n",
+ mmc_hostname(mmc), host->mapbase, irq);
+
+@@ -936,8 +1007,11 @@
+ return 0;
+
+ out_free_irq:
+- if (host->present != -1)
++ if (host->present != -1) {
++ free_irq(gpio_to_irq(host->board->detect_pin), host->mmc);
++ cancel_delayed_work(&host->mmc->detect);
+ gpio_free(host->board->detect_pin);
++ }
+ if (host->board->wp_pin != GPIO_PIO_NONE)
+ gpio_free(host->board->wp_pin);
+ free_irq(irq, mmc);
+@@ -971,6 +1045,7 @@
+ host->dma.req.req.channel);
+
+ if (host->present != -1) {
++ free_irq(gpio_to_irq(host->board->detect_pin), host->mmc);
+ cancel_delayed_work(&host->mmc->detect);
+ gpio_free(host->board->detect_pin);
+ }
diff --git a/packages/linux/linux-2.6.18/mmc-add-platform-data.patch b/packages/linux/linux-2.6.18/mmc-add-platform-data.patch
new file mode 100644
index 0000000000..b0a67b38ca
--- /dev/null
+++ b/packages/linux/linux-2.6.18/mmc-add-platform-data.patch
@@ -0,0 +1,185 @@
+---
+ arch/avr32/boards/atngw/setup.c | 7 ++++
+ arch/avr32/mach-at32ap/at32ap7000.c | 13 +++++++--
+ drivers/mmc/atmel-mci.c | 49 ++++++++++++++++++++++++++++++++++
+ include/asm-avr32/arch-at32ap/board.h | 7 ++++
+ 4 files changed, 72 insertions(+), 4 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/boards/atngw/setup.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atngw/setup.c 2007-01-15 10:24:38.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/boards/atngw/setup.c 2007-01-15 10:25:04.000000000 +0100
+@@ -35,6 +35,11 @@ static struct spi_board_info spi_board_i
+ },
+ };
+
++static struct mmci_platform_data __initdata mmci0_data = {
++ .detect_pin = GPIO_PIN_PC(25),
++ .wp_pin = GPIO_PIN_PE(0),
++};
++
+ static int __init parse_tag_ethernet(struct tag *tag)
+ {
+ int i;
+@@ -72,7 +77,7 @@ static int __init atngw_init(void)
+ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
+
+ at32_add_device_spi(0);
+- at32_add_device_mmci(0);
++ at32_add_device_mmci(0, &mmci0_data);
+ at32_add_device_usb(0);
+
+ return 0;
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/at32ap7000.c 2007-01-15 10:24:38.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c 2007-01-15 10:25:04.000000000 +0100
+@@ -749,14 +749,16 @@ at32_add_device_eth(unsigned int id, str
+ /* --------------------------------------------------------------------
+ * MMC
+ * -------------------------------------------------------------------- */
++static struct mmci_platform_data mmci0_data;
+ static struct resource mmci0_resource[] = {
+ PBMEM(0xfff02400),
+ IRQ(28),
+ };
+-DEFINE_DEV(mmci, 0);
++DEFINE_DEV_DATA(mmci, 0);
+ DEV_CLK(mck, mmci0, pbb, 9);
+
+-struct platform_device *__init at32_add_device_mmci(unsigned int id)
++struct platform_device *__init
++at32_add_device_mmci(unsigned int id, struct mmci_platform_data *data)
+ {
+ struct platform_device *pdev;
+
+@@ -774,6 +776,13 @@ struct platform_device *__init at32_add_
+ return NULL;
+ }
+
++ if (data && data->detect_pin != GPIO_PIO_NONE)
++ at32_select_gpio(data->detect_pin, 0);
++ if (data && data->wp_pin != GPIO_PIO_NONE)
++ at32_select_gpio(data->wp_pin, 0);
++
++ memcpy(pdev->dev.platform_data, data,
++ sizeof(struct mmci_platform_data));
+ platform_device_register(pdev);
+ return pdev;
+ }
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/arch-at32ap/board.h 2007-01-15 10:24:38.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h 2007-01-15 10:25:04.000000000 +0100
+@@ -24,7 +24,12 @@ struct eth_platform_data {
+ struct platform_device *
+ at32_add_device_eth(unsigned int id, struct eth_platform_data *data);
+
+-struct platform_device *at32_add_device_mmci(unsigned int id);
++struct mmci_platform_data {
++ unsigned int detect_pin;
++ unsigned int wp_pin;
++};
++struct platform_device *
++at32_add_device_mmci(unsigned int id, struct mmci_platform_data *data);
+ struct platform_device *at32_add_device_spi(unsigned int id);
+ struct platform_device *at32_add_device_twi(unsigned int id);
+
+Index: linux-2.6.18-avr32/drivers/mmc/atmel-mci.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/mmc/atmel-mci.c 2007-01-15 10:23:19.000000000 +0100
++++ linux-2.6.18-avr32/drivers/mmc/atmel-mci.c 2007-01-15 10:27:37.000000000 +0100
+@@ -22,6 +22,9 @@
+
+ #include <asm/dma-controller.h>
+ #include <asm/io.h>
++#include <asm/arch/at32ap7000.h>
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
+
+ #include "atmel-mci.h"
+
+@@ -68,9 +71,13 @@ struct atmel_mci {
+ unsigned long completed_events;
+ u32 error_status;
+
++ int present;
++ unsigned int wp_present:1;
++
+ unsigned long bus_hz;
+ unsigned long mapbase;
+ struct clk *mck;
++ struct mmci_platform_data *board;
+ struct platform_device *pdev;
+ };
+
+@@ -626,6 +633,7 @@ static int __devinit atmci_probe(struct
+ if (!host->regs)
+ goto out_disable_clk;
+
++ host->board = pdev->dev.platform_data;
+ host->bus_hz = clk_get_rate(host->mck);
+ host->mapbase = regs->start;
+
+@@ -641,6 +649,32 @@ static int __devinit atmci_probe(struct
+ if (ret)
+ goto out_unmap;
+
++ if (host->board && host->board->detect_pin != GPIO_PIO_NONE) {
++ ret = gpio_request(host->board->detect_pin, "mmc_detect");
++ if (ret) {
++ printk(KERN_WARNING "%s: no detect pin available (%d)\n",
++ mmc_hostname(host->mmc), ret);
++ host->present = -1;
++ } else {
++ host->present = !gpio_get_value(host->board->detect_pin);
++ }
++ } else {
++ host->present = -1;
++ }
++
++ if (host->board && host->board->wp_pin != GPIO_PIO_NONE) {
++ ret = gpio_request(host->board->wp_pin, "mmc_wp");
++ if (ret) {
++ printk(KERN_WARNING "%s: no WP pin available (%d)\n",
++ mmc_hostname(host->mmc), ret);
++ host->wp_present = 0;
++ } else {
++ host->wp_present = 1;
++ }
++ } else {
++ host->wp_present = 0;
++ }
++
+ /* TODO: Get this information from platform data */
+ ret = -ENOMEM;
+ host->dma.req.req.dmac = find_dma_controller(0);
+@@ -677,6 +711,10 @@ static int __devinit atmci_probe(struct
+ return 0;
+
+ out_free_irq:
++ if (host->present != -1)
++ gpio_free(host->board->detect_pin);
++ if (host->board->wp_pin != GPIO_PIO_NONE)
++ gpio_free(host->board->wp_pin);
+ free_irq(irq, mmc);
+ out_unmap:
+ iounmap(host->regs);
+@@ -701,6 +739,17 @@ static int __devexit atmci_remove(struct
+ mci_writel(host, CR, MCI_BIT(MCIDIS));
+ mci_readl(host, SR);
+
++ if (host->dma.req.req.channel)
++ dma_release_channel(host->dma.req.req.dmac,
++ host->dma.req.req.channel);
++
++ if (host->present != -1) {
++ cancel_delayed_work(&host->mmc->detect);
++ gpio_free(host->board->detect_pin);
++ }
++ if (host->board->wp_pin != GPIO_PIO_NONE)
++ gpio_free(host->board->wp_pin);
++
+ free_irq(platform_get_irq(pdev, 0), host->mmc);
+ iounmap(host->regs);
+
diff --git a/packages/linux/linux-2.6.18/mmc-core-dma-fix.patch b/packages/linux/linux-2.6.18/mmc-core-dma-fix.patch
new file mode 100644
index 0000000000..4106970035
--- /dev/null
+++ b/packages/linux/linux-2.6.18/mmc-core-dma-fix.patch
@@ -0,0 +1,33 @@
+Index: linux-2.6.18-avr32/drivers/mmc/mmc.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/mmc/mmc.c 2007-01-04 09:54:56.000000000 +0100
++++ linux-2.6.18-avr32/drivers/mmc/mmc.c 2007-01-04 09:58:08.000000000 +0100
+@@ -961,6 +961,7 @@ static void mmc_read_scrs(struct mmc_hos
+ struct mmc_command cmd;
+ struct mmc_data data;
+ struct scatterlist sg;
++ u32 *buf;
+
+ list_for_each_entry(card, &host->cards, node) {
+ if (card->state & (MMC_STATE_DEAD|MMC_STATE_PRESENT))
+@@ -1008,7 +1009,8 @@ static void mmc_read_scrs(struct mmc_hos
+ mrq.cmd = &cmd;
+ mrq.data = &data;
+
+- sg_init_one(&sg, (u8*)card->raw_scr, 8);
++ buf = kmalloc(8, GFP_KERNEL);
++ sg_init_one(&sg, (u8*)buf, 8);
+
+ mmc_wait_for_req(host, &mrq);
+
+@@ -1017,8 +1019,8 @@ static void mmc_read_scrs(struct mmc_hos
+ continue;
+ }
+
+- card->raw_scr[0] = ntohl(card->raw_scr[0]);
+- card->raw_scr[1] = ntohl(card->raw_scr[1]);
++ card->raw_scr[0] = ntohl(buf[0]);
++ card->raw_scr[1] = ntohl(buf[1]);
+
+ mmc_decode_scr(card);
+ }
diff --git a/packages/linux/linux-2.6.18/mtd-fix-atmel-pri-for-cmdset-0001-and-cmdset-0002.patch b/packages/linux/linux-2.6.18/mtd-fix-atmel-pri-for-cmdset-0001-and-cmdset-0002.patch
new file mode 100644
index 0000000000..4884d8a0b3
--- /dev/null
+++ b/packages/linux/linux-2.6.18/mtd-fix-atmel-pri-for-cmdset-0001-and-cmdset-0002.patch
@@ -0,0 +1,99 @@
+Index: linux-2.6.18/drivers/mtd/chips/cfi_cmdset_0001.c
+===================================================================
+--- linux-2.6.18.orig/drivers/mtd/chips/cfi_cmdset_0001.c 2006-12-13 09:58:34.000000000 +0100
++++ linux-2.6.18/drivers/mtd/chips/cfi_cmdset_0001.c 2006-12-13 10:01:35.000000000 +0100
+@@ -47,6 +47,7 @@
+ #define I82802AC 0x00ac
+ #define MANUFACTURER_ST 0x0020
+ #define M50LPW080 0x002F
++#define AT49BV640D 0x02de
+
+ static int cfi_intelext_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
+ static int cfi_intelext_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
+@@ -153,6 +154,47 @@
+ }
+ #endif
+
++/* Atmel chips don't use the same PRI format as Intel chips */
++static void fixup_convert_atmel_pri(struct mtd_info *mtd, void *param)
++{
++ struct map_info *map = mtd->priv;
++ struct cfi_private *cfi = map->fldrv_priv;
++ struct cfi_pri_intelext *extp = cfi->cmdset_priv;
++ struct cfi_pri_atmel atmel_pri;
++ uint32_t features = 0;
++
++ /* Reverse byteswapping */
++ extp->FeatureSupport = cpu_to_le32(extp->FeatureSupport);
++ extp->BlkStatusRegMask = cpu_to_le16(extp->BlkStatusRegMask);
++ extp->ProtRegAddr = cpu_to_le16(extp->ProtRegAddr);
++
++ memcpy(&atmel_pri, extp, sizeof(atmel_pri));
++ memset((char *)extp + 5, 0, sizeof(*extp) - 5);
++
++ printk(KERN_ERR "atmel Features: %02x\n", atmel_pri.Features);
++
++ if (atmel_pri.Features & 0x01) /* chip erase supported */
++ features |= (1<<0);
++ if (atmel_pri.Features & 0x02) /* erase suspend supported */
++ features |= (1<<1);
++ if (atmel_pri.Features & 0x04) /* program suspend supported */
++ features |= (1<<2);
++ if (atmel_pri.Features & 0x08) /* simultaneous operations supported */
++ features |= (1<<9);
++ if (atmel_pri.Features & 0x20) /* page mode read supported */
++ features |= (1<<7);
++ if (atmel_pri.Features & 0x40) /* queued erase supported */
++ features |= (1<<4);
++ if (atmel_pri.Features & 0x80) /* Protection bits supported */
++ features |= (1<<6);
++
++ extp->FeatureSupport = features;
++
++ /* burst write mode not supported */
++ cfi->cfiq->BufWriteTimeoutTyp = 0;
++ cfi->cfiq->BufWriteTimeoutMax = 0;
++}
++
+ #ifdef CMDSET0001_DISABLE_ERASE_SUSPEND_ON_WRITE
+ /* Some Intel Strata Flash prior to FPO revision C has bugs in this area */
+ static void fixup_intel_strataflash(struct mtd_info *mtd, void* param)
+@@ -221,6 +263,7 @@
+ }
+
+ static struct cfi_fixup cfi_fixup_table[] = {
++ { CFI_MFR_ATMEL, CFI_ID_ANY, fixup_convert_atmel_pri, NULL },
+ #ifdef CMDSET0001_DISABLE_ERASE_SUSPEND_ON_WRITE
+ { CFI_MFR_ANY, CFI_ID_ANY, fixup_intel_strataflash, NULL },
+ #endif
+Index: linux-2.6.18/drivers/mtd/chips/cfi_cmdset_0002.c
+===================================================================
+--- linux-2.6.18.orig/drivers/mtd/chips/cfi_cmdset_0002.c 2006-12-13 10:01:34.000000000 +0100
++++ linux-2.6.18/drivers/mtd/chips/cfi_cmdset_0002.c 2006-12-15 10:19:22.000000000 +0100
+@@ -184,6 +184,10 @@
+ extp->TopBottom = 2;
+ else
+ extp->TopBottom = 3;
++
++ /* burst write mode not supported */
++ cfi->cfiq->BufWriteTimeoutTyp = 0;
++ cfi->cfiq->BufWriteTimeoutMax = 0;
+ }
+
+ static void fixup_use_secsi(struct mtd_info *mtd, void *param)
+@@ -216,6 +220,7 @@
+ }
+
+ static struct cfi_fixup cfi_fixup_table[] = {
++ { CFI_MFR_ATMEL, CFI_ID_ANY, fixup_convert_atmel_pri, NULL },
+ #ifdef AMD_BOOTLOC_BUG
+ { CFI_MFR_AMD, CFI_ID_ANY, fixup_amd_bootblock, NULL },
+ #endif
+@@ -228,7 +233,6 @@
+ #if !FORCE_WORD_WRITE
+ { CFI_MFR_ANY, CFI_ID_ANY, fixup_use_write_buffers, NULL, },
+ #endif
+- { CFI_MFR_ATMEL, CFI_ID_ANY, fixup_convert_atmel_pri, NULL },
+ { 0, 0, NULL, NULL }
+ };
+ static struct cfi_fixup jedec_fixup_table[] = {
diff --git a/packages/linux/linux-2.6.18/mtd-unlock-nor-flash-automatically-where-necessary.patch b/packages/linux/linux-2.6.18/mtd-unlock-nor-flash-automatically-where-necessary.patch
new file mode 100644
index 0000000000..1cb1f8e6d3
--- /dev/null
+++ b/packages/linux/linux-2.6.18/mtd-unlock-nor-flash-automatically-where-necessary.patch
@@ -0,0 +1,75 @@
+From 187ef15268e638603dea55a91fdfa29feaed6d13 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?H=C3=A5vard_Skinnemoen?= <hskinnemoen@atmel.com>
+Date: Fri, 22 Sep 2006 10:07:08 +0100
+Subject: [PATCH] [MTD] Unlock NOR flash automatically where necessary
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Introduce the MTD_STUPID_LOCK flag which indicates that the flash chip is
+always locked after power-up, so all sectors need to be unlocked before it
+is usable.
+
+If this flag is set, and the chip provides an unlock() operation,
+mtd_add_device will unlock the whole MTD device if it's writeable. This
+means that non-writeable partitions will stay locked.
+
+Set MTD_STUPID_LOCK in fixup_use_atmel_lock() so that these chips will work
+as expected.
+
+Signed-off-by: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: David Woodhouse <dwmw2@infradead.org>
+---
+ drivers/mtd/chips/cfi_cmdset_0002.c | 1 +
+ drivers/mtd/mtdcore.c | 10 ++++++++++
+ include/mtd/mtd-abi.h | 1 +
+ 3 files changed, 12 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
+index a482e89..702ae4c 100644
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
+@@ -212,6 +212,7 @@ static void fixup_use_atmel_lock(struct mtd_info *mtd, void *param)
+ {
+ mtd->lock = cfi_atmel_lock;
+ mtd->unlock = cfi_atmel_unlock;
++ mtd->flags |= MTD_STUPID_LOCK;
+ }
+
+ static struct cfi_fixup cfi_fixup_table[] = {
+diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
+index 168d3ba..c4d26de 100644
+--- a/drivers/mtd/mtdcore.c
++++ b/drivers/mtd/mtdcore.c
+@@ -57,6 +57,16 @@ int add_mtd_device(struct mtd_info *mtd)
+ mtd->index = i;
+ mtd->usecount = 0;
+
++ /* Some chips always power up locked. Unlock them now */
++ if ((mtd->flags & MTD_WRITEABLE)
++ && (mtd->flags & MTD_STUPID_LOCK) && mtd->unlock) {
++ if (mtd->unlock(mtd, 0, mtd->size))
++ printk(KERN_WARNING
++ "%s: unlock failed, "
++ "writes may not work\n",
++ mtd->name);
++ }
++
+ DEBUG(0, "mtd: Giving out device %d to %s\n",i, mtd->name);
+ /* No need to get a refcount on the module containing
+ the notifier, since we hold the mtd_table_mutex */
+diff --git a/include/mtd/mtd-abi.h b/include/mtd/mtd-abi.h
+index 1da3f7f..b0a67b7 100644
+--- a/include/mtd/mtd-abi.h
++++ b/include/mtd/mtd-abi.h
+@@ -34,6 +34,7 @@ struct mtd_oob_buf {
+ #define MTD_WRITEABLE 0x400 /* Device is writeable */
+ #define MTD_BIT_WRITEABLE 0x800 /* Single bits can be flipped */
+ #define MTD_NO_ERASE 0x1000 /* No erase necessary */
++#define MTD_STUPID_LOCK 0x2000 /* Always locked after reset */
+
+ // Some common devices / combinations of capabilities
+ #define MTD_CAP_ROM 0
+--
+1.4.4.1
+
diff --git a/packages/linux/linux-2.6.18/ngw-fix-usart-initialization.patch b/packages/linux/linux-2.6.18/ngw-fix-usart-initialization.patch
new file mode 100644
index 0000000000..702b9aa240
--- /dev/null
+++ b/packages/linux/linux-2.6.18/ngw-fix-usart-initialization.patch
@@ -0,0 +1,32 @@
+---
+ arch/avr32/boards/atngw/setup.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/boards/atngw/setup.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atngw/setup.c 2006-11-02 14:22:05.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/boards/atngw/setup.c 2006-11-02 14:42:53.000000000 +0100
+@@ -50,18 +50,19 @@ static int __init parse_tag_ethernet(str
+ }
+ __tagtable(ATAG_ETHERNET, parse_tag_ethernet);
+
++struct platform_device *at32_usart_map[1];
++unsigned int at32_nr_usarts = 1;
++
+ void __init setup_board(void)
+ {
+- at32_map_usart(1, 0); /* /dev/ttyS0 */
+-
+- at32_setup_serial_console(0);
++ at32_usart_map[0] = at32_get_usart(1);
+ }
+
+ static int __init atngw_init(void)
+ {
+ at32_add_system_devices();
+
+- at32_add_device_usart(0);
++ at32_add_device_usart(1);
+
+ if (eth_data[0].valid)
+ at32_add_device_eth(0, &eth_data[0]);
diff --git a/packages/linux/linux-2.6.18/ngw100-change-spi-clock-on-dataflash.patch b/packages/linux/linux-2.6.18/ngw100-change-spi-clock-on-dataflash.patch
new file mode 100644
index 0000000000..af1228faa7
--- /dev/null
+++ b/packages/linux/linux-2.6.18/ngw100-change-spi-clock-on-dataflash.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.18/arch/avr32/boards/atngw/setup.c
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/boards/atngw/setup.c 2006-12-19 14:15:02.000000000 +0100
++++ linux-2.6.18/arch/avr32/boards/atngw/setup.c 2006-12-19 14:15:11.000000000 +0100
+@@ -29,7 +29,7 @@
+ {
+ .modalias = "mtd_dataflash",
+ .controller_data = (void *)GPIO_PIN_PA(3),
+- .max_speed_hz = 66000000,
++ .max_speed_hz = 10000000,
+ .bus_num = 0,
+ .chip_select = 0,
+ },
diff --git a/packages/linux/linux-2.6.18/pio-deglitch.patch b/packages/linux/linux-2.6.18/pio-deglitch.patch
new file mode 100644
index 0000000000..3fe9231861
--- /dev/null
+++ b/packages/linux/linux-2.6.18/pio-deglitch.patch
@@ -0,0 +1,40 @@
+---
+ arch/avr32/mach-at32ap/pio.c | 12 ++++++++++++
+ include/asm-avr32/arch-at32ap/gpio.h | 1 +
+ 2 files changed, 13 insertions(+)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/pio.c 2006-11-30 11:55:02.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-11-30 11:57:52.000000000 +0100
+@@ -122,6 +122,18 @@ fail:
+ dump_stack();
+ }
+
++void at32_set_deglitch(unsigned int pin, int enable)
++{
++ struct pio_device *pio;
++ u32 mask = 1 << (pin & 0x1f);
++
++ pio = gpio_to_pio(pin);
++ if (enable)
++ pio_writel(pio, IFER, mask);
++ else
++ pio_writel(pio, IFDR, mask);
++}
++
+ static unsigned int pio_id(struct pio_device *pio)
+ {
+ return pio - pio_dev;
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/gpio.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/arch-at32ap/gpio.h 2006-11-30 11:54:56.000000000 +0100
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/gpio.h 2006-11-30 11:55:56.000000000 +0100
+@@ -16,6 +16,7 @@
+ void at32_select_periph(unsigned int pin, unsigned int periph,
+ unsigned long flags);
+ void at32_select_gpio(unsigned int pin, unsigned long flags);
++void at32_set_deglitch(unsigned int pin, int enable);
+
+ /* Arch-neutral GPIO API */
+ int __must_check gpio_request(unsigned int gpio, const char *label);
diff --git a/packages/linux/linux-2.6.18/pio-interrupt-controller.patch b/packages/linux/linux-2.6.18/pio-interrupt-controller.patch
new file mode 100644
index 0000000000..b4f15c4931
--- /dev/null
+++ b/packages/linux/linux-2.6.18/pio-interrupt-controller.patch
@@ -0,0 +1,108 @@
+---
+ arch/avr32/mach-at32ap/pio.c | 73 ++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 72 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/pio.c 2006-11-29 18:17:15.000000000 +0100
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/pio.c 2006-11-30 11:50:27.000000000 +0100
+@@ -11,6 +11,7 @@
+ #include <linux/clk.h>
+ #include <linux/debugfs.h>
+ #include <linux/fs.h>
++#include <linux/irq.h>
+ #include <linux/platform_device.h>
+
+ #include <asm/gpio.h>
+@@ -709,20 +710,90 @@ err_class_create:
+ late_initcall(pio_init_dev);
+ #endif /* CONFIG_PIO_DEV */
+
++/* Interrupt controller implementation */
++static void pio_mask_irq(unsigned int irq)
++{
++ struct pio_device *pio = get_irq_chip_data(irq);
++
++ pio_writel(pio, IDR, 1 << (irq & 0x1f));
++}
++
++static void pio_unmask_irq(unsigned int irq)
++{
++ struct pio_device *pio = get_irq_chip_data(irq);
++
++ pio_writel(pio, IER, 1 << (irq & 0x1f));
++}
++
++static int pio_set_irq_type(unsigned int irq, unsigned int flow_type)
++{
++ if (flow_type != IRQ_TYPE_NONE && flow_type != IRQ_TYPE_EDGE_BOTH)
++ return -EINVAL;
++
++ return 0;
++}
++
++static struct irq_chip pio_irq_chip = {
++ .name = "pio",
++ .mask = pio_mask_irq,
++ .unmask = pio_unmask_irq,
++ .set_type = pio_set_irq_type,
++};
++
++static void demux_pio_irq(unsigned int irq, struct irq_desc *desc,
++ struct pt_regs *regs)
++{
++ struct pio_device *pio = desc->handler_data;
++ struct irq_desc *ext_desc;
++ u32 status, pending;
++ unsigned int ext_irq;
++ unsigned int i;
++
++ status = pio_readl(pio, ISR);
++ pending = status & pio_readl(pio, IMR);
++
++ while (pending) {
++ i = fls(pending) - 1;
++ pending &= ~(1 << i);
++
++ ext_irq = gpio_to_irq(32 * pio_id(pio) + i);
++ ext_desc = irq_desc + ext_irq;
++ ext_desc->handle_irq(ext_irq, ext_desc, regs);
++ }
++}
++
+ static int __init pio_probe(struct platform_device *pdev)
+ {
+ struct pio_device *pio = NULL;
++ unsigned int i;
++ int int_irq, ext_irq;
+
+ BUG_ON(pdev->id >= MAX_NR_PIO_DEVICES);
+ pio = &pio_dev[pdev->id];
+ BUG_ON(!pio->regs);
+
+- /* TODO: Interrupts */
++ /* Set up interrupts */
++ pio_writel(pio, IDR, ~0UL);
++ pio_readl(pio, ISR);
++
++ ext_irq = gpio_to_irq(32 * pdev->id);
++ for (i = 0; i < 32; i++, ext_irq++) {
++ set_irq_chip_and_handler(ext_irq, &pio_irq_chip,
++ handle_simple_irq);
++ set_irq_chip_data(ext_irq, pio);
++ }
++
++ int_irq = platform_get_irq(pdev, 0);
++ set_irq_chained_handler(int_irq, demux_pio_irq);
++ set_irq_data(int_irq, pio);
+
+ platform_set_drvdata(pdev, pio);
+
+ printk(KERN_INFO "%s: Atmel Port Multiplexer at 0x%p (irq %d)\n",
+ pio->name, pio->regs, platform_get_irq(pdev, 0));
++ printk(KERN_INFO
++ "%s: Handling 32 external IRQs, starting with IRQ %d\n",
++ pio->name, ext_irq - 32);
+
+ return 0;
+ }
diff --git a/packages/linux/linux-2.6.18/rename-ttyUS-to-ttyS-or-ttyAT.patch b/packages/linux/linux-2.6.18/rename-ttyUS-to-ttyS-or-ttyAT.patch
new file mode 100644
index 0000000000..b2a020f809
--- /dev/null
+++ b/packages/linux/linux-2.6.18/rename-ttyUS-to-ttyS-or-ttyAT.patch
@@ -0,0 +1,74 @@
+---
+ drivers/serial/Kconfig | 18 ++++++++++++++++++
+ drivers/serial/atmel_usart.c | 13 +++++++++++--
+ 2 files changed, 29 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/serial/Kconfig
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/serial/Kconfig 2006-09-14 12:51:15.000000000 +0200
++++ linux-2.6.18-avr32/drivers/serial/Kconfig 2006-09-14 13:07:37.000000000 +0200
+@@ -267,6 +267,24 @@ config SERIAL_ATMEL_CONSOLE
+ receives all kernel messages and warnings and which allows
+ logins in single user mode).
+
++config SERIAL_ATMEL_TTYAT
++ bool "Install as device ttyAT0-N instead of ttyS0-N"
++ depends on SERIAL_ATMEL=y
++ help
++ Say Y here if you wish to have the internal UARTs appear as
++ /dev/ttyAT0-N (major 204, minor 154-169) instead of the
++ normal /dev/ttyS0-4 (major 4, minor 64-255). This is
++ necessary if you also want other UARTs, such as external
++ 8250/16C550 compatible UARTs.
++
++ The ttySn nodes are legally reserved for the 8250 serial driver
++ but are often misused by other serial drivers.
++
++ To use this, you should create suitable ttyATn device nodes in
++ /dev/, and pass "console=ttyATn" to the kernel.
++
++ Say Y if you have an external 8250/16C550 UART. If unsure, say N.
++
+ config SERIAL_AMBA_PL010
+ tristate "ARM AMBA PL010 serial port support"
+ depends on ARM_AMBA && (BROKEN || !ARCH_VERSATILE)
+Index: linux-2.6.18-avr32/drivers/serial/atmel_usart.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/serial/atmel_usart.c 2006-09-14 12:51:15.000000000 +0200
++++ linux-2.6.18-avr32/drivers/serial/atmel_usart.c 2006-09-14 12:51:16.000000000 +0200
+@@ -46,8 +46,17 @@
+ * Use the same major/minor numbers as the AT91 USART, which is
+ * actually the same chip
+ */
++
++#ifdef CONFIG_SERIAL_ATMEL_TTYAT
++#define SERIAL_USART3_MAJOR 204
++#define MINOR_START 154
++#define DEVICE_NAME "ttyAT"
++#else
+ #define SERIAL_USART3_MAJOR TTY_MAJOR
+ #define MINOR_START 64
++#define DEVICE_NAME "ttyS"
++#endif
++
+ #define NR_PORTS 4
+
+ #define ERROR_FLAGS (USART3_BIT(CSR_PARE) \
+@@ -923,7 +932,7 @@ out_disable_clk:
+
+ static struct uart_driver usart3_reg;
+ static struct console usart3_console = {
+- .name = "ttyUS",
++ .name = DEVICE_NAME,
+ .write = usart3_console_write,
+ .device = uart_console_device,
+ .setup = usart3_console_setup,
+@@ -948,7 +957,7 @@ console_initcall(usart3_console_init);
+ static struct uart_driver usart3_reg = {
+ .owner = THIS_MODULE,
+ .driver_name = "serial",
+- .dev_name = "ttyUS",
++ .dev_name = DEVICE_NAME,
+ .major = SERIAL_USART3_MAJOR,
+ .minor = MINOR_START,
+ .nr = NR_PORTS,
diff --git a/packages/linux/linux-2.6.18/renumber-usart-devices.patch b/packages/linux/linux-2.6.18/renumber-usart-devices.patch
new file mode 100644
index 0000000000..74f59916e4
--- /dev/null
+++ b/packages/linux/linux-2.6.18/renumber-usart-devices.patch
@@ -0,0 +1,228 @@
+---
+ arch/avr32/boards/atstk1000/atstk1002.c | 12 ++++++++++++
+ arch/avr32/kernel/setup.c | 1 +
+ arch/avr32/mach-at32ap/at32ap.c | 3 ---
+ arch/avr32/mach-at32ap/at32ap7000.c | 31 ++++++++++++++++++++++++-------
+ drivers/serial/atmel_usart.c | 24 ++++++++++++++++++------
+ include/asm-avr32/arch-at32ap/board.h | 7 ++++---
+ include/asm-avr32/arch-at32ap/init.h | 3 +--
+ 7 files changed, 60 insertions(+), 21 deletions(-)
+
+Index: linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/boards/atstk1000/atstk1002.c 2006-09-13 14:30:31.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/boards/atstk1000/atstk1002.c 2006-09-13 14:50:59.000000000 +0200
+@@ -14,6 +14,7 @@
+
+ #include <asm/setup.h>
+ #include <asm/arch/board.h>
++#include <asm/arch/init.h>
+
+ static struct eth_platform_data __initdata eth_data[2];
+
+@@ -34,6 +34,17 @@ struct platform_device flash_device = {
+ }
+ __tagtable(ATAG_ETHERNET, parse_tag_ethernet);
+
++struct platform_device *at32_usart_map[3];
++unsigned int at32_nr_usarts = 3;
++
++void __init setup_board(void)
++{
++ /* These need to be in place before initializing the console */
++ at32_usart_map[0] = at32_get_usart(1);
++ at32_usart_map[1] = at32_get_usart(2);
++ at32_usart_map[2] = at32_get_usart(3);
++}
++
+ static int __init atstk1002_init(void)
+ {
+ at32_add_system_devices();
+Index: linux-2.6.18-avr32/arch/avr32/kernel/setup.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/kernel/setup.c 2006-09-13 14:42:11.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/kernel/setup.c 2006-09-13 14:43:36.000000000 +0200
+@@ -268,6 +268,7 @@ void __init setup_arch (char **cmdline_p
+
+ setup_processor();
+ setup_platform();
++ setup_board();
+
+ cpu_clk = clk_get(NULL, "cpu");
+ if (IS_ERR(cpu_clk)) {
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/at32ap.c 2006-09-13 14:38:24.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap.c 2006-09-13 14:38:28.000000000 +0200
+@@ -48,9 +48,6 @@ void __init setup_platform(void)
+ at32_sm_init();
+ at32_clock_init();
+ at32_portmux_init();
+-
+- /* FIXME: This doesn't belong here */
+- at32_setup_serial_console(1);
+ }
+
+ static int __init pdc_probe(struct platform_device *pdev)
+Index: linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c
+===================================================================
+--- linux-2.6.18-avr32.orig/arch/avr32/mach-at32ap/at32ap7000.c 2006-09-13 13:40:02.000000000 +0200
++++ linux-2.6.18-avr32/arch/avr32/mach-at32ap/at32ap7000.c 2006-09-13 14:39:08.000000000 +0200
+@@ -543,6 +543,30 @@ static struct resource usart3_resource[]
+ DEFINE_DEV(usart, 3);
+ DEV_CLK(usart, usart3, pba, 6);
+
++struct platform_device *at32_get_usart(unsigned int id)
++{
++ struct platform_device *pdev;
++
++ switch (id) {
++ case 0:
++ pdev = &usart0_device;
++ break;
++ case 1:
++ pdev = &usart1_device;
++ break;
++ case 2:
++ pdev = &usart2_device;
++ break;
++ case 3:
++ pdev = &usart3_device;
++ break;
++ default:
++ return NULL;
++ }
++
++ return pdev;
++}
++
+ static inline void configure_usart0_pins(void)
+ {
+ select_peripheral(PA(8), PERIPH_B, 0); /* RXD */
+@@ -607,13 +607,6 @@ struct platform_device *__init at32_add_
+ return pdev;
+ }
+
+-struct platform_device *at91_default_console_device;
+-
+-void __init at32_setup_serial_console(unsigned int usart_id)
+-{
+- at91_default_console_device = setup_usart(usart_id);
+-}
+-
+ /* --------------------------------------------------------------------
+ * Ethernet
+ * -------------------------------------------------------------------- */
+Index: linux-2.6.18-avr32/drivers/serial/atmel_usart.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/serial/atmel_usart.c 2006-09-13 14:30:42.000000000 +0200
++++ linux-2.6.18-avr32/drivers/serial/atmel_usart.c 2006-09-13 14:48:47.000000000 +0200
+@@ -773,7 +773,8 @@ static struct uart_ops usart3_pops = {
+ };
+
+ static int __devinit initialize_port(struct usart3_port *up,
+- struct platform_device *pdev)
++ struct platform_device *pdev,
++ unsigned int line)
+ {
+ struct uart_port *port = &up->uart;
+ struct resource *regs;
+@@ -797,7 +798,7 @@ static int __devinit initialize_port(str
+ port->iotype = SERIAL_IO_MEM;
+ port->flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP;
+ port->ops = &usart3_pops;
+- port->line = pdev->id;
++ port->line = line;
+ port->dev = &pdev->dev;
+
+ return 0;
+@@ -877,15 +878,17 @@ static int __init usart3_console_setup(s
+ console->index);
+ return -ENODEV;
+ }
++ if (console->index >= at32_nr_usarts)
++ return -ENXIO;
+
+- pdev = at91_default_console_device;
++ pdev = at32_usart_map[console->index];
+ if (!pdev)
+ return -ENXIO;
+
+ up = &usart3_ports[console->index];
+ port = &up->uart;
+
+- ret = initialize_port(up, pdev);
++ ret = initialize_port(up, pdev, console->index);
+ if (ret)
+ return ret;
+
+@@ -978,6 +981,7 @@ static int usart3_serial_resume(struct p
+ static int __devinit usart3_serial_probe(struct platform_device *pdev)
+ {
+ struct usart3_port *up;
++ int line;
+ int ret;
+
+ if (pdev->id >= NR_PORTS) {
+@@ -987,14 +991,22 @@ static int __devinit usart3_serial_probe
+ return -ENOMEM;
+ }
+
+- up = &usart3_ports[pdev->id];
++ for (line = 0; line < at32_nr_usarts; line++) {
++ if (at32_usart_map[line]->id == pdev->id)
++ break;
++ }
++
++ if (line >= at32_nr_usarts)
++ return -ENXIO;
++
++ up = &usart3_ports[line];
+
+ /*
+ * If the port has already been set up as a console, we
+ * shouldn't enable it again.
+ */
+ if (!up->uart.uartclk) {
+- ret = initialize_port(up, pdev);
++ ret = initialize_port(up, pdev, line);
+ if (ret)
+ goto out;
+ }
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/arch-at32ap/board.h 2006-09-13 14:30:13.000000000 +0200
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/board.h 2006-09-13 15:19:56.000000000 +0200
+@@ -9,11 +9,12 @@ struct flash_platform_data {
+ /* Add basic devices: system manager, interrupt controller, portmuxes, etc. */
+ void at32_add_system_devices(void);
+
+-#define AT91_NR_UART 4
+-extern struct platform_device *at91_default_console_device;
+-
++struct platform_device *at32_get_usart(unsigned int id);
+ struct platform_device *at32_add_device_usart(unsigned int id);
+
++extern struct platform_device *at32_usart_map[];
++extern unsigned int at32_nr_usarts;
++
+ struct eth_platform_data {
+ u8 valid;
+ u8 mii_phy_addr;
+Index: linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/init.h
+===================================================================
+--- linux-2.6.18-avr32.orig/include/asm-avr32/arch-at32ap/init.h 2006-09-13 13:43:20.000000000 +0200
++++ linux-2.6.18-avr32/include/asm-avr32/arch-at32ap/init.h 2006-09-13 14:50:26.000000000 +0200
+@@ -11,11 +11,10 @@
+ #define __ASM_AVR32_AT32AP_INIT_H__
+
+ void setup_platform(void);
++void setup_board(void);
+
+ /* Called by setup_platform */
+ void at32_clock_init(void);
+ void at32_portmux_init(void);
+
+-void at32_setup_serial_console(unsigned int usart_id);
+-
+ #endif /* __ASM_AVR32_AT32AP_INIT_H__ */
diff --git a/packages/linux/linux-2.6.18/spi-fix-spi-busnum-to-master-buffer-and-bus_num-0.patch b/packages/linux/linux-2.6.18/spi-fix-spi-busnum-to-master-buffer-and-bus_num-0.patch
new file mode 100644
index 0000000000..e5e040bc32
--- /dev/null
+++ b/packages/linux/linux-2.6.18/spi-fix-spi-busnum-to-master-buffer-and-bus_num-0.patch
@@ -0,0 +1,50 @@
+From 4740d387f3cb9e63f48f2488815b38a2c92755c8 Mon Sep 17 00:00:00 2001
+From: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
+Date: Wed, 6 Dec 2006 20:36:17 -0800
+Subject: [PATCH] [PATCH] spi: correct bus_num and buffer bug in spi core
+
+Correct the following in driver/spi/spi.c in function spi_busnum_to_master:
+
+ * must allow bus_num 0, the if is really not needed.
+ * correct the name buffer which is too small for bus_num >= 10000. It
+
+should be 9 bytes big, not 8.
+
+Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
+Cc: David Brownell <david-b@pacbell.net>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+---
+ drivers/spi/spi.c | 16 +++++++---------
+ 1 files changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
+index 1a3c963..7d215ea 100644
+--- a/drivers/spi/spi.c
++++ b/drivers/spi/spi.c
+@@ -465,15 +465,13 @@ EXPORT_SYMBOL_GPL(spi_unregister_master);
+ */
+ struct spi_master *spi_busnum_to_master(u16 bus_num)
+ {
+- if (bus_num) {
+- char name[8];
+- struct kobject *bus;
+-
+- snprintf(name, sizeof name, "spi%u", bus_num);
+- bus = kset_find_obj(&spi_master_class.subsys.kset, name);
+- if (bus)
+- return container_of(bus, struct spi_master, cdev.kobj);
+- }
++ char name[9];
++ struct kobject *bus;
++
++ snprintf(name, sizeof name, "spi%u", bus_num);
++ bus = kset_find_obj(&spi_master_class.subsys.kset, name);
++ if (bus)
++ return container_of(bus, struct spi_master, cdev.kobj);
+ return NULL;
+ }
+ EXPORT_SYMBOL_GPL(spi_busnum_to_master);
+--
+1.4.4.1
+
diff --git a/packages/linux/linux-2.6.18/spi-reduce-dlybs-and-dlybct.patch b/packages/linux/linux-2.6.18/spi-reduce-dlybs-and-dlybct.patch
new file mode 100644
index 0000000000..ca4989fa68
--- /dev/null
+++ b/packages/linux/linux-2.6.18/spi-reduce-dlybs-and-dlybct.patch
@@ -0,0 +1,19 @@
+---
+ drivers/spi/atmel_spi.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/spi/atmel_spi.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/spi/atmel_spi.c 2006-12-18 12:31:32.000000000 +0100
++++ linux-2.6.18-avr32/drivers/spi/atmel_spi.c 2006-12-18 12:31:37.000000000 +0100
+@@ -380,8 +380,8 @@ static int atmel_spi_setup(struct spi_de
+ csr |= SPI_BIT(NCPHA);
+
+ /* TODO: DLYBS and DLYBCT */
+- csr |= SPI_BF(DLYBS, 10);
+- csr |= SPI_BF(DLYBCT, 10);
++ csr |= SPI_BF(DLYBS, 0);
++ csr |= SPI_BF(DLYBCT, 0);
+
+ npcs_pin = (unsigned int)spi->controller_data;
+ if (!spi->controller_state) {
diff --git a/packages/linux/linux-2.6.18/spi-set-kset-of-master-class-dev-explicitly.patch b/packages/linux/linux-2.6.18/spi-set-kset-of-master-class-dev-explicitly.patch
new file mode 100644
index 0000000000..4a6ed65d8b
--- /dev/null
+++ b/packages/linux/linux-2.6.18/spi-set-kset-of-master-class-dev-explicitly.patch
@@ -0,0 +1,34 @@
+From 3bd0f6943520e459659d10f3282285e43d3990f1 Mon Sep 17 00:00:00 2001
+From: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
+Date: Wed, 6 Dec 2006 20:36:19 -0800
+Subject: [PATCH] [PATCH] spi: set kset of master class dev explicitly
+
+<quote Imre Deak from Thu, 12 Jan 2006 21:18:54 +0200>
+ In order for spi_busnum_to_master to work spi master devices must be linked
+ into the spi_master_class.subsys.kset list. At the moment the default
+ class_obj_subsys.kset is used and we can't enumerate the master devices.
+</quote>
+
+Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
+Cc: David Brownell <david-b@pacbell.net>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+---
+ drivers/spi/spi.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
+index 7d215ea..270e621 100644
+--- a/drivers/spi/spi.c
++++ b/drivers/spi/spi.c
+@@ -366,6 +366,7 @@ spi_alloc_master(struct device *dev, unsigned size)
+
+ class_device_initialize(&master->cdev);
+ master->cdev.class = &spi_master_class;
++ kobj_set_kset_s(&master->cdev, spi_master_class.subsys);
+ master->cdev.dev = get_device(dev);
+ spi_master_set_devdata(master, &master[1]);
+
+--
+1.4.4.1
+
diff --git a/packages/linux/linux-2.6.18/update-atstk1002_defconfig.patch b/packages/linux/linux-2.6.18/update-atstk1002_defconfig.patch
new file mode 100644
index 0000000000..fef3f8bf5b
--- /dev/null
+++ b/packages/linux/linux-2.6.18/update-atstk1002_defconfig.patch
@@ -0,0 +1,563 @@
+---
+ arch/avr32/configs/atstk1002_defconfig | 293 ++++++++++++++++++++++++++++-----
+ 1 file changed, 250 insertions(+), 43 deletions(-)
+
+Index: linux-2.6.18/arch/avr32/configs/atstk1002_defconfig
+===================================================================
+--- linux-2.6.18.orig/arch/avr32/configs/atstk1002_defconfig 2007-01-11 14:30:26.000000000 +0100
++++ linux-2.6.18/arch/avr32/configs/atstk1002_defconfig 2007-01-11 15:44:49.000000000 +0100
+@@ -1,13 +1,14 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.18-rc1
+-# Tue Jul 11 12:41:36 2006
++# Linux kernel version: 2.6.18-at0
++# Thu Jan 11 15:37:42 2007
+ #
+ CONFIG_AVR32=y
+ CONFIG_GENERIC_HARDIRQS=y
+ CONFIG_HARDIRQS_SW_RESEND=y
+ CONFIG_GENERIC_IRQ_PROBE=y
+ CONFIG_RWSEM_GENERIC_SPINLOCK=y
++CONFIG_GENERIC_TIME=y
+ CONFIG_GENERIC_HWEIGHT=y
+ CONFIG_GENERIC_CALIBRATE_DELAY=y
+ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+@@ -25,16 +26,18 @@
+ CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SWAP=y
+-# CONFIG_SYSVIPC is not set
+-# CONFIG_POSIX_MQUEUE is not set
+-# CONFIG_BSD_PROCESS_ACCT is not set
+-CONFIG_SYSCTL=y
++CONFIG_SYSVIPC=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
+ # CONFIG_IKCONFIG is not set
+ # CONFIG_RELAY is not set
+ CONFIG_INITRAMFS_SOURCE=""
+ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+ CONFIG_EMBEDDED=y
++CONFIG_SYSCTL=y
+ CONFIG_KALLSYMS=y
+ # CONFIG_KALLSYMS_ALL is not set
+ # CONFIG_KALLSYMS_EXTRA_PASS is not set
+@@ -43,14 +46,15 @@
+ CONFIG_BUG=y
+ CONFIG_ELF_CORE=y
+ # CONFIG_BASE_FULL is not set
+-# CONFIG_FUTEX is not set
+-# CONFIG_EPOLL is not set
++CONFIG_FUTEX=y
++CONFIG_EPOLL=y
+ CONFIG_SHMEM=y
+-# CONFIG_SLAB is not set
+-# CONFIG_VM_EVENT_COUNTERS is not set
++CONFIG_SLAB=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_RT_MUTEXES=y
+ # CONFIG_TINY_SHMEM is not set
+ CONFIG_BASE_SMALL=1
+-CONFIG_SLOB=y
++# CONFIG_SLOB is not set
+
+ #
+ # Loadable module support
+@@ -60,7 +64,7 @@
+ # CONFIG_MODULE_FORCE_UNLOAD is not set
+ # CONFIG_MODVERSIONS is not set
+ # CONFIG_MODULE_SRCVERSION_ALL is not set
+-# CONFIG_KMOD is not set
++CONFIG_KMOD=y
+
+ #
+ # Block layer
+@@ -90,7 +94,13 @@
+ CONFIG_CPU_AT32AP7000=y
+ CONFIG_BOARD_ATSTK1002=y
+ CONFIG_BOARD_ATSTK1000=y
++# CONFIG_BOARD_ATNGW is not set
+ CONFIG_LOADER_U_BOOT=y
++
++#
++# Atmel AVR32 AP options
++#
++CONFIG_PIO_DEV=y
+ CONFIG_LOAD_ADDRESS=0x10000000
+ CONFIG_ENTRY_ADDRESS=0x90000000
+ CONFIG_PHYS_OFFSET=0x10000000
+@@ -113,6 +123,7 @@
+ CONFIG_SPLIT_PTLOCK_CPUS=4
+ # CONFIG_RESOURCES_64BIT is not set
+ # CONFIG_OWNERSHIP_TRACE is not set
++CONFIG_DW_DMAC=y
+ # CONFIG_HZ_100 is not set
+ CONFIG_HZ_250=y
+ # CONFIG_HZ_1000 is not set
+@@ -199,7 +210,6 @@
+ # CONFIG_ATALK is not set
+ # CONFIG_X25 is not set
+ # CONFIG_LAPB is not set
+-# CONFIG_NET_DIVERT is not set
+ # CONFIG_ECONET is not set
+ # CONFIG_WAN_ROUTER is not set
+
+@@ -212,7 +222,6 @@
+ # Network testing
+ #
+ # CONFIG_NET_PKTGEN is not set
+-# CONFIG_NET_TCPPROBE is not set
+ # CONFIG_HAMRADIO is not set
+ # CONFIG_IRDA is not set
+ # CONFIG_BT is not set
+@@ -239,7 +248,85 @@
+ #
+ # Memory Technology Devices (MTD)
+ #
+-# CONFIG_MTD is not set
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++# CONFIG_MTD_CONCAT is not set
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=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
++
++#
++# 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 is not set
++CONFIG_MTD_CFI_AMDSTD=y
++# CONFIG_MTD_CFI_STAA is not set
++CONFIG_MTD_CFI_UTIL=y
++# CONFIG_MTD_RAM is not set
++# CONFIG_MTD_ROM is not set
++# CONFIG_MTD_ABSENT is not set
++# CONFIG_MTD_OBSOLETE_CHIPS is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++CONFIG_MTD_PHYSMAP=y
++CONFIG_MTD_PHYSMAP_START=0x8000000
++CONFIG_MTD_PHYSMAP_LEN=0x0
++CONFIG_MTD_PHYSMAP_BANKWIDTH=2
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++CONFIG_MTD_DATAFLASH=m
++# CONFIG_MTD_M25P80 is not set
++# 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
++
++#
++# NAND Flash Device Drivers
++#
++# CONFIG_MTD_NAND is not set
++
++#
++# OneNAND Flash Device Drivers
++#
++# CONFIG_MTD_ONENAND is not set
+
+ #
+ # Parallel port support
+@@ -260,6 +347,7 @@
+ CONFIG_BLK_DEV_RAM=m
+ CONFIG_BLK_DEV_RAM_COUNT=16
+ CONFIG_BLK_DEV_RAM_SIZE=4096
++CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+ CONFIG_BLK_DEV_INITRD=y
+ # CONFIG_CDROM_PKTCDVD is not set
+ # CONFIG_ATA_OVER_ETH is not set
+@@ -343,7 +431,7 @@
+ CONFIG_PPP_DEFLATE=m
+ # CONFIG_PPP_BSDCOMP is not set
+ # CONFIG_PPP_MPPE is not set
+-# CONFIG_PPPOE is not set
++CONFIG_PPPOE=m
+ # CONFIG_SLIP is not set
+ # CONFIG_SHAPER is not set
+ # CONFIG_NETCONSOLE is not set
+@@ -363,7 +451,25 @@
+ #
+ # Input device support
+ #
+-# CONFIG_INPUT is not set
++CONFIG_INPUT=y
++
++#
++# Userland interfaces
++#
++# CONFIG_INPUT_MOUSEDEV is not set
++# CONFIG_INPUT_JOYDEV is not set
++# CONFIG_INPUT_TSDEV is not set
++# CONFIG_INPUT_EVDEV is not set
++# CONFIG_INPUT_EVBUG is not set
++
++#
++# Input Device Drivers
++#
++# CONFIG_INPUT_KEYBOARD is not set
++# CONFIG_INPUT_MOUSE is not set
++# CONFIG_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TOUCHSCREEN is not set
++# CONFIG_INPUT_MISC is not set
+
+ #
+ # Hardware I/O ports
+@@ -374,7 +480,10 @@
+ #
+ # Character devices
+ #
+-# CONFIG_VT is not set
++CONFIG_VT=y
++CONFIG_VT_CONSOLE=y
++CONFIG_HW_CONSOLE=y
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
+ # CONFIG_SERIAL_NONSTANDARD is not set
+
+ #
+@@ -385,9 +494,9 @@
+ #
+ # Non-8250 serial port support
+ #
+-CONFIG_SERIAL_AT91=y
+-CONFIG_SERIAL_AT91_CONSOLE=y
+-# CONFIG_SERIAL_AT91_TTYAT is not set
++CONFIG_SERIAL_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
+ CONFIG_SERIAL_CORE=y
+ CONFIG_SERIAL_CORE_CONSOLE=y
+ CONFIG_UNIX98_PTYS=y
+@@ -422,7 +531,40 @@
+ #
+ # I2C support
+ #
+-# CONFIG_I2C is not set
++CONFIG_I2C=m
++CONFIG_I2C_CHARDEV=m
++
++#
++# I2C Algorithms
++#
++# CONFIG_I2C_ALGOBIT is not set
++# CONFIG_I2C_ALGOPCF is not set
++# CONFIG_I2C_ALGOPCA is not set
++
++#
++# I2C Hardware Bus support
++#
++CONFIG_I2C_ATMELTWI=m
++CONFIG_I2C_ATMELTWI_BAUDRATE=100000
++# CONFIG_I2C_OCORES is not set
++# CONFIG_I2C_PARPORT_LIGHT is not set
++# CONFIG_I2C_STUB is not set
++# CONFIG_I2C_PCA_ISA is not set
++
++#
++# Miscellaneous I2C Chip support
++#
++# CONFIG_SENSORS_DS1337 is not set
++# CONFIG_SENSORS_DS1374 is not set
++CONFIG_SENSORS_EEPROM=m
++# CONFIG_SENSORS_PCF8574 is not set
++# CONFIG_SENSORS_PCA9539 is not set
++# CONFIG_SENSORS_PCF8591 is not set
++# CONFIG_SENSORS_MAX6875 is not set
++# CONFIG_I2C_DEBUG_CORE is not set
++# CONFIG_I2C_DEBUG_ALGO is not set
++# CONFIG_I2C_DEBUG_BUS is not set
++# CONFIG_I2C_DEBUG_CHIP is not set
+
+ #
+ # SPI support
+@@ -434,7 +576,7 @@
+ #
+ # SPI Master Controller Drivers
+ #
+-CONFIG_SPI_ATMEL=m
++CONFIG_SPI_ATMEL=y
+ # CONFIG_SPI_BITBANG is not set
+
+ #
+@@ -470,33 +612,85 @@
+ # Graphics support
+ #
+ # CONFIG_FIRMWARE_EDID is not set
+-CONFIG_FB=m
+-CONFIG_FB_CFB_FILLRECT=m
+-CONFIG_FB_CFB_COPYAREA=m
+-CONFIG_FB_CFB_IMAGEBLIT=m
++CONFIG_FB=y
++CONFIG_FB_CFB_FILLRECT=y
++CONFIG_FB_CFB_COPYAREA=y
++CONFIG_FB_CFB_IMAGEBLIT=y
+ # CONFIG_FB_MACMODES is not set
+ # CONFIG_FB_BACKLIGHT is not set
+ # CONFIG_FB_MODE_HELPERS is not set
+ # CONFIG_FB_TILEBLITTING is not set
+-CONFIG_FB_SIDSA=m
++CONFIG_FB_SIDSA=y
+ CONFIG_FB_SIDSA_DEFAULT_BPP=24
+ # CONFIG_FB_S1D13XXX is not set
+ # CONFIG_FB_VIRTUAL is not set
+
+ #
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=y
++# CONFIG_FRAMEBUFFER_CONSOLE is not set
++
++#
+ # Logo configuration
+ #
+ # CONFIG_LOGO is not set
+ CONFIG_BACKLIGHT_LCD_SUPPORT=y
+ # CONFIG_BACKLIGHT_CLASS_DEVICE is not set
+-CONFIG_LCD_CLASS_DEVICE=m
++CONFIG_LCD_CLASS_DEVICE=y
+ CONFIG_LCD_DEVICE=y
+-CONFIG_LCD_LTV350QV=m
++CONFIG_LCD_LTV350QV=y
+
+ #
+ # Sound
+ #
+-# CONFIG_SOUND is not set
++CONFIG_SOUND=m
++
++#
++# Advanced Linux Sound Architecture
++#
++CONFIG_SND=m
++CONFIG_SND_TIMER=m
++CONFIG_SND_PCM=m
++# CONFIG_SND_SEQUENCER is not set
++CONFIG_SND_OSSEMUL=y
++CONFIG_SND_MIXER_OSS=m
++CONFIG_SND_PCM_OSS=m
++CONFIG_SND_PCM_OSS_PLUGINS=y
++# CONFIG_SND_DYNAMIC_MINORS is not set
++# CONFIG_SND_SUPPORT_OLD_API is not set
++# CONFIG_SND_VERBOSE_PROCFS is not set
++# CONFIG_SND_VERBOSE_PRINTK is not set
++# CONFIG_SND_DEBUG is not set
++
++#
++# Generic devices
++#
++CONFIG_SND_AC97_CODEC=m
++CONFIG_SND_AC97_BUS=m
++# CONFIG_SND_DUMMY is not set
++# CONFIG_SND_MTPAV is not set
++# CONFIG_SND_SERIAL_U16550 is not set
++# CONFIG_SND_MPU401 is not set
++
++#
++# ALSA AVR32 devices
++#
++CONFIG_SND_ATMEL_AC97=m
++# CONFIG_SND_ATMEL_AC97_USE_ALSA_MALLOC_CALLS is not set
++# CONFIG_SND_ATMEL_AC97C_USE_PDC is not set
++CONFIG_SND_AT73C213=m
++# CONFIG_SND_AT73C213_USE_ALSA_MALLOC_CALLS is not set
++
++#
++# Open Sound System
++#
++CONFIG_SOUND_PRIME=m
++# CONFIG_OSS_OBSOLETE_DRIVER is not set
++# CONFIG_SOUND_MSNDCLAS is not set
++# CONFIG_SOUND_MSNDPIN is not set
++CONFIG_SOUND_AT32_DAC=m
+
+ #
+ # USB support
+@@ -512,12 +706,34 @@
+ #
+ # USB Gadget Support
+ #
+-# CONFIG_USB_GADGET is not set
++CONFIG_USB_GADGET=m
++CONFIG_USB_GADGET_DEBUG_FILES=y
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_PXA2XX is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++CONFIG_USB_GADGET_HUSB2DEV=y
++CONFIG_USB_HUSB2DEV=m
++# CONFIG_USB_GADGET_OMAP is not set
++# CONFIG_USB_GADGET_AT91 is not set
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++CONFIG_USB_GADGET_DUALSPEED=y
++CONFIG_USB_ZERO=m
++CONFIG_USB_ETH=m
++CONFIG_USB_ETH_RNDIS=y
++CONFIG_USB_GADGETFS=m
++CONFIG_USB_FILE_STORAGE=m
++# CONFIG_USB_FILE_STORAGE_TEST is not set
++CONFIG_USB_G_SERIAL=m
+
+ #
+ # MMC/SD Card support
+ #
+-# CONFIG_MMC is not set
++CONFIG_MMC=y
++# CONFIG_MMC_DEBUG is not set
++CONFIG_MMC_BLOCK=y
++CONFIG_MMC_ATMELMCI=y
+
+ #
+ # LED devices
+@@ -570,14 +786,14 @@
+ # CONFIG_FS_POSIX_ACL is not set
+ # CONFIG_XFS_FS is not set
+ # CONFIG_OCFS2_FS is not set
+-CONFIG_MINIX_FS=m
+-CONFIG_ROMFS_FS=m
++# CONFIG_MINIX_FS is not set
++CONFIG_ROMFS_FS=y
+ # CONFIG_INOTIFY is not set
+ # CONFIG_QUOTA is not set
+ # CONFIG_DNOTIFY is not set
+ # CONFIG_AUTOFS_FS is not set
+ # CONFIG_AUTOFS4_FS is not set
+-# CONFIG_FUSE_FS is not set
++CONFIG_FUSE_FS=m
+
+ #
+ # CD-ROM/DVD Filesystems
+@@ -604,7 +820,7 @@
+ CONFIG_TMPFS=y
+ # CONFIG_HUGETLB_PAGE is not set
+ CONFIG_RAMFS=y
+-CONFIG_CONFIGFS_FS=m
++CONFIG_CONFIGFS_FS=y
+
+ #
+ # Miscellaneous filesystems
+@@ -616,6 +832,16 @@
+ # CONFIG_BEFS_FS is not set
+ # CONFIG_BFS_FS is not set
+ # CONFIG_EFS_FS is not set
++# CONFIG_JFFS_FS is not set
++CONFIG_JFFS2_FS=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_SUMMARY is not set
++# CONFIG_JFFS2_FS_XATTR is not set
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
++CONFIG_JFFS2_ZLIB=y
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
+ # CONFIG_CRAMFS is not set
+ # CONFIG_VXFS_FS is not set
+ # CONFIG_HPFS_FS is not set
+@@ -639,7 +865,8 @@
+ CONFIG_SUNRPC=y
+ # CONFIG_RPCSEC_GSS_KRB5 is not set
+ # CONFIG_RPCSEC_GSS_SPKM3 is not set
+-# CONFIG_SMB_FS is not set
++CONFIG_SMB_FS=m
++# CONFIG_SMB_NLS_DEFAULT is not set
+ CONFIG_CIFS=m
+ # CONFIG_CIFS_STATS is not set
+ # CONFIG_CIFS_WEAK_PW_HASH is not set
+@@ -702,16 +929,24 @@
+ CONFIG_NLS_UTF8=m
+
+ #
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
+ # Kernel hacking
+ #
+ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+-CONFIG_PRINTK_TIME=y
++# CONFIG_PRINTK_TIME is not set
+ CONFIG_MAGIC_SYSRQ=y
+ # CONFIG_UNUSED_SYMBOLS is not set
+ CONFIG_DEBUG_KERNEL=y
+ CONFIG_LOG_BUF_SHIFT=14
+ CONFIG_DETECT_SOFTLOCKUP=y
+ # CONFIG_SCHEDSTATS is not set
++# 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_RWSEMS is not set
+@@ -720,13 +955,13 @@
+ # CONFIG_DEBUG_KOBJECT is not set
+ CONFIG_DEBUG_BUGVERBOSE=y
+ # CONFIG_DEBUG_INFO is not set
+-CONFIG_DEBUG_FS=y
++# CONFIG_DEBUG_FS is not set
+ # CONFIG_DEBUG_VM is not set
+ CONFIG_FRAME_POINTER=y
+ # CONFIG_UNWIND_INFO is not set
+-CONFIG_FORCED_INLINING=y
++# CONFIG_FORCED_INLINING is not set
+ # CONFIG_RCU_TORTURE_TEST is not set
+-CONFIG_KPROBES=y
++# CONFIG_KPROBES is not set
+
+ #
+ # Security options
+@@ -748,7 +983,8 @@
+ #
+ CONFIG_CRC_CCITT=m
+ # CONFIG_CRC16 is not set
+-CONFIG_CRC32=m
++CONFIG_CRC32=y
+ # CONFIG_LIBCRC32C is not set
+-CONFIG_ZLIB_INFLATE=m
+-CONFIG_ZLIB_DEFLATE=m
++CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
++CONFIG_PLIST=y
diff --git a/packages/linux/linux-2.6.18/usart-make-rx-timeout-baudrate-independent.patch b/packages/linux/linux-2.6.18/usart-make-rx-timeout-baudrate-independent.patch
new file mode 100644
index 0000000000..9da06670ea
--- /dev/null
+++ b/packages/linux/linux-2.6.18/usart-make-rx-timeout-baudrate-independent.patch
@@ -0,0 +1,83 @@
+---
+ drivers/serial/atmel_usart.c | 33 ++++++++++++++++++++++++++-------
+ 1 file changed, 26 insertions(+), 7 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/serial/atmel_usart.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/serial/atmel_usart.c 2006-12-18 14:59:00.000000000 +0100
++++ linux-2.6.18-avr32/drivers/serial/atmel_usart.c 2006-12-18 16:51:33.000000000 +0100
+@@ -76,6 +76,14 @@ struct usart3_port {
+ struct clk *mck;
+ unsigned long mapsize;
+ struct uart_port uart;
++
++ /*
++ * If no data is received within rx_timeout_us microseconds or
++ * rx_timeout_cycles cycles, whichever is longest, we get an
++ * interrupt.
++ */
++ unsigned int rx_timeout_us;
++ unsigned int rx_timeout_cycles;
+ };
+ #define to_usart3_port(port) container_of(port, struct usart3_port, uart)
+
+@@ -582,12 +590,6 @@ static int usart3_startup(struct uart_po
+ usart3_writel(up, TCR, 0);
+ up->tx_dma_head = port->info->xmit.tail;
+
+- /*
+- * Set a suitable timeout. 2000 bit periods corresponds to
+- * about 17 ms at 115200 bps
+- */
+- usart3_writel(up, RTOR, 2000);
+-
+ /* Reset and enable receiver and transmitter */
+ usart3_writel(up, CR, (USART3_BIT(RSTRX)
+ | USART3_BIT(RSTTX)
+@@ -633,6 +635,7 @@ static void usart3_set_termios(struct ua
+ struct usart3_port *up = to_usart3_port(port);
+ unsigned int baud, quot, mode = 0;
+ unsigned int imr, flags;
++ unsigned long long timeout_cycles;
+
+ pr_debug("usart3: set_termios\n");
+
+@@ -692,6 +695,13 @@ static void usart3_set_termios(struct ua
+ | USART3_BIT(RSTRX)));
+ }
+
++ timeout_cycles = up->rx_timeout_us;
++ timeout_cycles *= baud;
++ do_div(timeout_cycles, 1000000);
++ if (timeout_cycles < up->rx_timeout_cycles)
++ timeout_cycles = up->rx_timeout_cycles;
++
++ pr_debug("usart3: Setting RTOR to %llu...\n", timeout_cycles);
+ pr_debug("usart3: Setting BRGR to %u (baud rate %u)...\n", quot, baud);
+
+ /* Disable receiver and transmitter */
+@@ -701,7 +711,12 @@ static void usart3_set_termios(struct ua
+ /* Set the parity, stop bits and data size */
+ usart3_writel(up, MR, mode);
+
+- /* Set the baud rate and enable receiver and transmitter */
++ /*
++ * Set the baud rate and RX timeout, and enable receiver and
++ * transmitter.
++ */
++ usart3_writel(up, RTOR, timeout_cycles);
++
+ usart3_writel(up, BRGR, quot);
+ usart3_writel(up, CR, (USART3_BIT(TXEN)
+ | USART3_BIT(RXEN)));
+@@ -805,6 +820,10 @@ static int __devinit initialize_port(str
+ return PTR_ERR(up->mck);
+ clk_enable(up->mck);
+
++ /* Default RX timeout after 10 ms, but no less than 10 cycles */
++ up->rx_timeout_us = 10000;
++ up->rx_timeout_cycles = 10;
++
+ port->mapbase = regs->start;
+ up->mapsize = regs->end - regs->start + 1;
+ port->irq = platform_get_irq(pdev, 0);
diff --git a/packages/linux/linux-2.6.18/usb-ethernet-align-all-descriptors-on-a-word-boundary.patch b/packages/linux/linux-2.6.18/usb-ethernet-align-all-descriptors-on-a-word-boundary.patch
new file mode 100644
index 0000000000..65aa9a4b7c
--- /dev/null
+++ b/packages/linux/linux-2.6.18/usb-ethernet-align-all-descriptors-on-a-word-boundary.patch
@@ -0,0 +1,171 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Tue Feb 28 08:51:18 2006 +0100
+Subject: [PATCH] USB Ethernet: Align all descriptors on a word boundary
+
+Seems like gcc has problems with packed structs, so we'll just align
+them explicitly.
+
+---
+
+ drivers/usb/gadget/ether.c | 35 ++++++++++++++++++-----------------
+ 1 file changed, 18 insertions(+), 17 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/ether.c 2006-09-11 14:36:02.000000000 +0200
++++ linux-2.6.18-avr32/drivers/usb/gadget/ether.c 2006-09-12 10:14:19.000000000 +0200
+@@ -428,7 +428,7 @@ static inline int BITRATE(struct usb_gad
+ #define DEV_RNDIS_CONFIG_VALUE 2 /* rndis; optional */
+
+ static struct usb_device_descriptor
+-device_desc = {
++device_desc __attribute__((aligned(2))) = {
+ .bLength = sizeof device_desc,
+ .bDescriptorType = USB_DT_DEVICE,
+
+@@ -454,7 +454,7 @@ otg_descriptor = {
+ };
+
+ static struct usb_config_descriptor
+-eth_config = {
++eth_config __attribute__((aligned(2))) = {
+ .bLength = sizeof eth_config,
+ .bDescriptorType = USB_DT_CONFIG,
+
+@@ -468,7 +468,7 @@ eth_config = {
+
+ #ifdef CONFIG_USB_ETH_RNDIS
+ static struct usb_config_descriptor
+-rndis_config = {
++rndis_config __attribute__((aligned(2))) = {
+ .bLength = sizeof rndis_config,
+ .bDescriptorType = USB_DT_CONFIG,
+
+@@ -493,7 +493,7 @@ rndis_config = {
+
+ #ifdef DEV_CONFIG_CDC
+ static struct usb_interface_descriptor
+-control_intf = {
++control_intf __attribute__((aligned(2))) = {
+ .bLength = sizeof control_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -509,7 +509,7 @@ control_intf = {
+
+ #ifdef CONFIG_USB_ETH_RNDIS
+ static const struct usb_interface_descriptor
+-rndis_control_intf = {
++rndis_control_intf __attribute__((aligned(2))) = {
+ .bLength = sizeof rndis_control_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -524,7 +524,7 @@ rndis_control_intf = {
+
+ #if defined(DEV_CONFIG_CDC) || defined(CONFIG_USB_ETH_RNDIS)
+
+-static const struct usb_cdc_header_desc header_desc = {
++static const struct usb_cdc_header_desc __attribute__((aligned(2))) header_desc = {
+ .bLength = sizeof header_desc,
+ .bDescriptorType = USB_DT_CS_INTERFACE,
+ .bDescriptorSubType = USB_CDC_HEADER_TYPE,
+@@ -566,7 +566,8 @@ static const struct usb_cdc_acm_descript
+
+ #ifdef DEV_CONFIG_CDC
+
+-static const struct usb_cdc_ether_desc ether_desc = {
++static const struct usb_cdc_ether_desc
++ether_desc __attribute__((aligned(2))) = {
+ .bLength = sizeof ether_desc,
+ .bDescriptorType = USB_DT_CS_INTERFACE,
+ .bDescriptorSubType = USB_CDC_ETHERNET_TYPE,
+@@ -601,7 +602,7 @@ static const struct usb_cdc_ether_desc e
+ #define STATUS_BYTECOUNT 16 /* 8 byte header + data */
+
+ static struct usb_endpoint_descriptor
+-fs_status_desc = {
++fs_status_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -632,7 +633,7 @@ data_nop_intf = {
+ /* ... but the "real" data interface has two bulk endpoints */
+
+ static const struct usb_interface_descriptor
+-data_intf = {
++data_intf __attribute__((aligned(2))) = {
+ .bLength = sizeof data_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -652,7 +653,7 @@ data_intf = {
+ /* RNDIS doesn't activate by changing to the "real" altsetting */
+
+ static const struct usb_interface_descriptor
+-rndis_data_intf = {
++rndis_data_intf __attribute__((aligned(2))) = {
+ .bLength = sizeof rndis_data_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -675,7 +676,7 @@ rndis_data_intf = {
+ */
+
+ static const struct usb_interface_descriptor
+-subset_data_intf = {
++subset_data_intf __attribute__((aligned(2))) = {
+ .bLength = sizeof subset_data_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -692,7 +693,7 @@ subset_data_intf = {
+
+
+ static struct usb_endpoint_descriptor
+-fs_source_desc = {
++fs_source_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -701,7 +702,7 @@ fs_source_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-fs_sink_desc = {
++fs_sink_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -767,7 +768,7 @@ static const struct usb_descriptor_heade
+
+ #if defined(DEV_CONFIG_CDC) || defined(CONFIG_USB_ETH_RNDIS)
+ static struct usb_endpoint_descriptor
+-hs_status_desc = {
++hs_status_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -778,7 +779,7 @@ hs_status_desc = {
+ #endif /* DEV_CONFIG_CDC */
+
+ static struct usb_endpoint_descriptor
+-hs_source_desc = {
++hs_source_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -787,7 +788,7 @@ hs_source_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-hs_sink_desc = {
++hs_sink_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -796,7 +797,7 @@ hs_sink_desc = {
+ };
+
+ static struct usb_qualifier_descriptor
+-dev_qualifier = {
++dev_qualifier __attribute__((aligned(2))) = {
+ .bLength = sizeof dev_qualifier,
+ .bDescriptorType = USB_DT_DEVICE_QUALIFIER,
+
diff --git a/packages/linux/linux-2.6.18/usb-ethernet-define-cdc-capability-for-husb2.patch b/packages/linux/linux-2.6.18/usb-ethernet-define-cdc-capability-for-husb2.patch
new file mode 100644
index 0000000000..1e3295e5d9
--- /dev/null
+++ b/packages/linux/linux-2.6.18/usb-ethernet-define-cdc-capability-for-husb2.patch
@@ -0,0 +1,27 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Mon Feb 27 18:15:04 2006 +0100
+Subject: [PATCH] USB: Define CDC capability for HUSB2
+
+Define DEV_CONFIG_CDC when compiling for HUSB2DEV.
+
+---
+
+ drivers/usb/gadget/ether.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+Index: linux-2.6.18-avr32/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/ether.c 2006-09-12 10:14:19.000000000 +0200
++++ linux-2.6.18-avr32/drivers/usb/gadget/ether.c 2006-09-12 10:14:40.000000000 +0200
+@@ -266,6 +266,10 @@ MODULE_PARM_DESC(host_addr, "Host Ethern
+ #define DEV_CONFIG_CDC
+ #endif
+
++#ifdef CONFIG_USB_GADGET_HUSB2DEV
++#define DEV_CONFIG_CDC
++#endif
++
+
+ /* For CDC-incapable hardware, choose the simple cdc subset.
+ * Anything that talks bulk (without notable bugs) can do this.
diff --git a/packages/linux/linux-2.6.18/usb-file-storage-align-all-descriptors-on-a-word-boundary.patch b/packages/linux/linux-2.6.18/usb-file-storage-align-all-descriptors-on-a-word-boundary.patch
new file mode 100644
index 0000000000..10778d5903
--- /dev/null
+++ b/packages/linux/linux-2.6.18/usb-file-storage-align-all-descriptors-on-a-word-boundary.patch
@@ -0,0 +1,107 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Tue Feb 28 08:51:18 2006 +0100
+Subject: [PATCH] USB File Storage: Align all descriptors on a word boundary
+
+Seems like gcc has problems with packed structs, so we'll just align
+them explicitly.
+
+---
+
+ drivers/usb/gadget/file_storage.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/usb/gadget/file_storage.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/file_storage.c 2006-09-11 14:36:02.000000000 +0200
++++ linux-2.6.18-avr32/drivers/usb/gadget/file_storage.c 2006-09-12 10:16:30.000000000 +0200
+@@ -853,7 +853,7 @@ static void inline put_be32(u8 *buf, u32
+ #define CONFIG_VALUE 1
+
+ static struct usb_device_descriptor
+-device_desc = {
++device_desc __attribute__((aligned(2))) = {
+ .bLength = sizeof device_desc,
+ .bDescriptorType = USB_DT_DEVICE,
+
+@@ -872,7 +872,7 @@ device_desc = {
+ };
+
+ static struct usb_config_descriptor
+-config_desc = {
++config_desc __attribute__((aligned(2))) = {
+ .bLength = sizeof config_desc,
+ .bDescriptorType = USB_DT_CONFIG,
+
+@@ -895,7 +895,7 @@ otg_desc = {
+ /* There is only one interface. */
+
+ static struct usb_interface_descriptor
+-intf_desc = {
++intf_desc __attribute__((aligned(2))) = {
+ .bLength = sizeof intf_desc,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -910,7 +910,7 @@ intf_desc = {
+ * and interrupt-in. */
+
+ static struct usb_endpoint_descriptor
+-fs_bulk_in_desc = {
++fs_bulk_in_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -920,7 +920,7 @@ fs_bulk_in_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-fs_bulk_out_desc = {
++fs_bulk_out_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -930,7 +930,7 @@ fs_bulk_out_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-fs_intr_in_desc = {
++fs_intr_in_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -962,7 +962,7 @@ static const struct usb_descriptor_heade
+ * for the config descriptor.
+ */
+ static struct usb_qualifier_descriptor
+-dev_qualifier = {
++dev_qualifier __attribute__((aligned(2))) = {
+ .bLength = sizeof dev_qualifier,
+ .bDescriptorType = USB_DT_DEVICE_QUALIFIER,
+
+@@ -973,7 +973,7 @@ dev_qualifier = {
+ };
+
+ static struct usb_endpoint_descriptor
+-hs_bulk_in_desc = {
++hs_bulk_in_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -983,7 +983,7 @@ hs_bulk_in_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-hs_bulk_out_desc = {
++hs_bulk_out_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -994,7 +994,7 @@ hs_bulk_out_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-hs_intr_in_desc = {
++hs_intr_in_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
diff --git a/packages/linux/linux-2.6.18/usb-serial-align-all-descriptors-on-a-word-boundary.patch b/packages/linux/linux-2.6.18/usb-serial-align-all-descriptors-on-a-word-boundary.patch
new file mode 100644
index 0000000000..f78063c9fb
--- /dev/null
+++ b/packages/linux/linux-2.6.18/usb-serial-align-all-descriptors-on-a-word-boundary.patch
@@ -0,0 +1,140 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Tue Feb 28 08:51:18 2006 +0100
+Subject: [PATCH] USB Serial: Align all descriptors on a word boundary
+
+Seems like gcc has problems with packed structs, so we'll just align
+them explicitly.
+
+---
+
+ drivers/usb/gadget/serial.c | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/usb/gadget/serial.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/serial.c 2006-09-11 14:36:02.000000000 +0200
++++ linux-2.6.18-avr32/drivers/usb/gadget/serial.c 2006-09-12 10:17:52.000000000 +0200
+@@ -333,7 +333,7 @@ static struct usb_gadget_strings gs_stri
+ .strings = gs_strings,
+ };
+
+-static struct usb_device_descriptor gs_device_desc = {
++static struct usb_device_descriptor __attribute__((aligned(2))) gs_device_desc = {
+ .bLength = USB_DT_DEVICE_SIZE,
+ .bDescriptorType = USB_DT_DEVICE,
+ .bcdUSB = __constant_cpu_to_le16(0x0200),
+@@ -353,7 +353,7 @@ static struct usb_otg_descriptor gs_otg_
+ .bmAttributes = USB_OTG_SRP,
+ };
+
+-static struct usb_config_descriptor gs_bulk_config_desc = {
++static struct usb_config_descriptor __attribute__((aligned(2))) gs_bulk_config_desc = {
+ .bLength = USB_DT_CONFIG_SIZE,
+ .bDescriptorType = USB_DT_CONFIG,
+ /* .wTotalLength computed dynamically */
+@@ -364,7 +364,7 @@ static struct usb_config_descriptor gs_b
+ .bMaxPower = 1,
+ };
+
+-static struct usb_config_descriptor gs_acm_config_desc = {
++static struct usb_config_descriptor __attribute__((aligned(2))) gs_acm_config_desc = {
+ .bLength = USB_DT_CONFIG_SIZE,
+ .bDescriptorType = USB_DT_CONFIG,
+ /* .wTotalLength computed dynamically */
+@@ -375,7 +375,7 @@ static struct usb_config_descriptor gs_a
+ .bMaxPower = 1,
+ };
+
+-static const struct usb_interface_descriptor gs_bulk_interface_desc = {
++static const struct usb_interface_descriptor __attribute__((aligned(2))) gs_bulk_interface_desc = {
+ .bLength = USB_DT_INTERFACE_SIZE,
+ .bDescriptorType = USB_DT_INTERFACE,
+ .bInterfaceNumber = GS_BULK_INTERFACE_ID,
+@@ -386,7 +386,7 @@ static const struct usb_interface_descri
+ .iInterface = GS_DATA_STR_ID,
+ };
+
+-static const struct usb_interface_descriptor gs_control_interface_desc = {
++static const struct usb_interface_descriptor __attribute__((aligned(2))) gs_control_interface_desc = {
+ .bLength = USB_DT_INTERFACE_SIZE,
+ .bDescriptorType = USB_DT_INTERFACE,
+ .bInterfaceNumber = GS_CONTROL_INTERFACE_ID,
+@@ -397,7 +397,7 @@ static const struct usb_interface_descri
+ .iInterface = GS_CONTROL_STR_ID,
+ };
+
+-static const struct usb_interface_descriptor gs_data_interface_desc = {
++static const struct usb_interface_descriptor __attribute__((aligned(2))) gs_data_interface_desc = {
+ .bLength = USB_DT_INTERFACE_SIZE,
+ .bDescriptorType = USB_DT_INTERFACE,
+ .bInterfaceNumber = GS_DATA_INTERFACE_ID,
+@@ -408,7 +408,7 @@ static const struct usb_interface_descri
+ .iInterface = GS_DATA_STR_ID,
+ };
+
+-static const struct usb_cdc_header_desc gs_header_desc = {
++static const struct usb_cdc_header_desc __attribute__((aligned(2))) gs_header_desc = {
+ .bLength = sizeof(gs_header_desc),
+ .bDescriptorType = USB_DT_CS_INTERFACE,
+ .bDescriptorSubType = USB_CDC_HEADER_TYPE,
+@@ -438,7 +438,7 @@ static const struct usb_cdc_union_desc g
+ .bSlaveInterface0 = 1, /* index of data interface */
+ };
+
+-static struct usb_endpoint_descriptor gs_fullspeed_notify_desc = {
++static struct usb_endpoint_descriptor __attribute__((aligned(2))) gs_fullspeed_notify_desc = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+ .bEndpointAddress = USB_DIR_IN,
+@@ -447,14 +447,14 @@ static struct usb_endpoint_descriptor gs
+ .bInterval = 1 << GS_LOG2_NOTIFY_INTERVAL,
+ };
+
+-static struct usb_endpoint_descriptor gs_fullspeed_in_desc = {
++static struct usb_endpoint_descriptor __attribute__((aligned(2))) gs_fullspeed_in_desc = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+ .bEndpointAddress = USB_DIR_IN,
+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
+ };
+
+-static struct usb_endpoint_descriptor gs_fullspeed_out_desc = {
++static struct usb_endpoint_descriptor __attribute__((aligned(2))) gs_fullspeed_out_desc = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+ .bEndpointAddress = USB_DIR_OUT,
+@@ -484,7 +484,7 @@ static const struct usb_descriptor_heade
+ };
+
+ #ifdef CONFIG_USB_GADGET_DUALSPEED
+-static struct usb_endpoint_descriptor gs_highspeed_notify_desc = {
++static struct usb_endpoint_descriptor __attribute__((aligned(2))) gs_highspeed_notify_desc = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+ .bEndpointAddress = USB_DIR_IN,
+@@ -493,21 +493,21 @@ static struct usb_endpoint_descriptor gs
+ .bInterval = GS_LOG2_NOTIFY_INTERVAL+4,
+ };
+
+-static struct usb_endpoint_descriptor gs_highspeed_in_desc = {
++static struct usb_endpoint_descriptor __attribute__((aligned(2))) gs_highspeed_in_desc = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
+ .wMaxPacketSize = __constant_cpu_to_le16(512),
+ };
+
+-static struct usb_endpoint_descriptor gs_highspeed_out_desc = {
++static struct usb_endpoint_descriptor __attribute__((aligned(2))) gs_highspeed_out_desc = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
+ .wMaxPacketSize = __constant_cpu_to_le16(512),
+ };
+
+-static struct usb_qualifier_descriptor gs_qualifier_desc = {
++static struct usb_qualifier_descriptor __attribute__((aligned(2))) gs_qualifier_desc = {
+ .bLength = sizeof(struct usb_qualifier_descriptor),
+ .bDescriptorType = USB_DT_DEVICE_QUALIFIER,
+ .bcdUSB = __constant_cpu_to_le16 (0x0200),
diff --git a/packages/linux/linux-2.6.18/usb-zero-align-all-descriptors-on-a-word-boundary.patch b/packages/linux/linux-2.6.18/usb-zero-align-all-descriptors-on-a-word-boundary.patch
new file mode 100644
index 0000000000..e9143eec58
--- /dev/null
+++ b/packages/linux/linux-2.6.18/usb-zero-align-all-descriptors-on-a-word-boundary.patch
@@ -0,0 +1,107 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Tue Feb 28 08:51:18 2006 +0100
+Subject: [PATCH] USB Zero: Align all descriptors on a word boundary
+
+Seems like gcc has problems with packed structs, so we'll just align
+them explicitly.
+
+---
+
+ drivers/usb/gadget/zero.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+Index: linux-2.6.18-avr32/drivers/usb/gadget/zero.c
+===================================================================
+--- linux-2.6.18-avr32.orig/drivers/usb/gadget/zero.c 2006-09-11 14:36:02.000000000 +0200
++++ linux-2.6.18-avr32/drivers/usb/gadget/zero.c 2006-09-12 10:19:02.000000000 +0200
+@@ -221,7 +221,7 @@ module_param (loopdefault, bool, S_IRUGO
+ #define CONFIG_LOOPBACK 2
+
+ static struct usb_device_descriptor
+-device_desc = {
++device_desc __attribute__((aligned(2))) = {
+ .bLength = sizeof device_desc,
+ .bDescriptorType = USB_DT_DEVICE,
+
+@@ -237,7 +237,7 @@ device_desc = {
+ };
+
+ static struct usb_config_descriptor
+-source_sink_config = {
++source_sink_config __attribute__((aligned(2))) = {
+ .bLength = sizeof source_sink_config,
+ .bDescriptorType = USB_DT_CONFIG,
+
+@@ -250,7 +250,7 @@ source_sink_config = {
+ };
+
+ static struct usb_config_descriptor
+-loopback_config = {
++loopback_config __attribute__((aligned(2))) = {
+ .bLength = sizeof loopback_config,
+ .bDescriptorType = USB_DT_CONFIG,
+
+@@ -273,7 +273,7 @@ otg_descriptor = {
+ /* one interface in each configuration */
+
+ static const struct usb_interface_descriptor
+-source_sink_intf = {
++source_sink_intf __attribute__((aligned(2))) = {
+ .bLength = sizeof source_sink_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -283,7 +283,7 @@ source_sink_intf = {
+ };
+
+ static const struct usb_interface_descriptor
+-loopback_intf = {
++loopback_intf __attribute__((aligned(2))) = {
+ .bLength = sizeof loopback_intf,
+ .bDescriptorType = USB_DT_INTERFACE,
+
+@@ -295,7 +295,7 @@ loopback_intf = {
+ /* two full speed bulk endpoints; their use is config-dependent */
+
+ static struct usb_endpoint_descriptor
+-fs_source_desc = {
++fs_source_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -304,7 +304,7 @@ fs_source_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-fs_sink_desc = {
++fs_sink_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -340,7 +340,7 @@ static const struct usb_descriptor_heade
+ */
+
+ static struct usb_endpoint_descriptor
+-hs_source_desc = {
++hs_source_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -349,7 +349,7 @@ hs_source_desc = {
+ };
+
+ static struct usb_endpoint_descriptor
+-hs_sink_desc = {
++hs_sink_desc __attribute__((aligned(2))) = {
+ .bLength = USB_DT_ENDPOINT_SIZE,
+ .bDescriptorType = USB_DT_ENDPOINT,
+
+@@ -358,7 +358,7 @@ hs_sink_desc = {
+ };
+
+ static struct usb_qualifier_descriptor
+-dev_qualifier = {
++dev_qualifier __attribute__((aligned(2))) = {
+ .bLength = sizeof dev_qualifier,
+ .bDescriptorType = USB_DT_DEVICE_QUALIFIER,
+
diff --git a/packages/linux/linux-2.6.22/bd-neon/defconfig b/packages/linux/linux-2.6.22/bd-neon/defconfig
index 9bd82a5e2d..183594674b 100644
--- a/packages/linux/linux-2.6.22/bd-neon/defconfig
+++ b/packages/linux/linux-2.6.22/bd-neon/defconfig
@@ -1,18 +1,27 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.19.2
-# Thu May 24 16:14:49 2007
+# Linux kernel version: 2.6.22
+# Tue Feb 12 16:12:07 2008
#
CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+# CONFIG_GENERIC_CLOCKEVENTS is not set
CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
CONFIG_ARCH_MTD_XIP=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -36,9 +45,11 @@ CONFIG_LOCALVERSION_AUTO=y
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
@@ -54,14 +65,19 @@ CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
CONFIG_SHMEM=y
-CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
#
# Loadable module support
@@ -77,7 +93,9 @@ CONFIG_KMOD=y
# Block layer
#
CONFIG_BLOCK=y
+# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
#
# IO Schedulers
@@ -109,12 +127,15 @@ CONFIG_DEFAULT_IOSCHED="cfq"
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
@@ -122,6 +143,7 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
#
@@ -132,6 +154,7 @@ CONFIG_ARCH_PXA=y
# CONFIG_MACH_MAINSTONE is not set
# CONFIG_MACH_ARGON is not set
CONFIG_MACH_NEON=y
+# CONFIG_MACH_NEON270 is not set
# CONFIG_ARCH_PXA_IDP is not set
# CONFIG_PXA_SHARPSL is not set
# CONFIG_MACH_TRIZEPS4 is not set
@@ -154,11 +177,14 @@ CONFIG_CPU_CP15_MMU=y
#
# CONFIG_ARM_THUMB is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
CONFIG_XSCALE_PMU=y
#
# Bus support
#
+# CONFIG_ARCH_SUPPORTS_MSI is not set
#
# PCCARD (PCMCIA/CardBus) support
@@ -168,6 +194,7 @@ CONFIG_XSCALE_PMU=y
#
# Kernel Features
#
+# CONFIG_TICK_ONESHOT is not set
# CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100
@@ -183,6 +210,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
CONFIG_ALIGNMENT_TRAP=y
#
@@ -190,8 +218,9 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=""
+CONFIG_CMDLINE=" debug "
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
#
# Floating point emulation
@@ -210,13 +239,11 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
#
# Power management options
#
# CONFIG_PM is not set
-# CONFIG_APM is not set
#
# Networking
@@ -226,13 +253,13 @@ CONFIG_NET=y
#
# Networking options
#
-# CONFIG_NETDEBUG is not set
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_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -259,25 +286,14 @@ 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_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
@@ -303,6 +319,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
CONFIG_IEEE80211=y
CONFIG_IEEE80211_DEBUG=y
CONFIG_IEEE80211_CRYPT_WEP=y
@@ -310,7 +334,7 @@ CONFIG_IEEE80211_CRYPT_CCMP=y
CONFIG_IEEE80211_CRYPT_TKIP=y
CONFIG_IEEE80211_SOFTMAC=y
CONFIG_IEEE80211_SOFTMAC_DEBUG=y
-CONFIG_WIRELESS_EXT=y
+# CONFIG_RFKILL is not set
#
# Device Drivers
@@ -323,6 +347,7 @@ CONFIG_WIRELESS_EXT=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
#
@@ -330,10 +355,6 @@ CONFIG_FW_LOADER=y
#
CONFIG_CONNECTOR=y
# CONFIG_PROC_EVENTS is not set
-
-#
-# Memory Technology Devices (MTD)
-#
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
@@ -346,6 +367,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
# CONFIG_MTD_BLOCK is not set
CONFIG_MTD_BLOCK_RO=y
# CONFIG_FTL is not set
@@ -378,7 +400,6 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_XIP is not set
#
@@ -407,16 +428,13 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
#
-# OneNAND Flash Device Drivers
+# UBI - Unsorted block images
#
-# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD_UBI is not set
#
# Parallel port support
@@ -426,6 +444,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
#
# Plug and Play support
#
+# CONFIG_PNPACPI is not set
#
# Block devices
@@ -439,13 +458,8 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
# CONFIG_IDE is not set
#
@@ -453,6 +467,7 @@ CONFIG_BLK_DEV_INITRD=y
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
@@ -472,6 +487,8 @@ CONFIG_BLK_DEV_SD=y
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
@@ -487,10 +504,6 @@ CONFIG_BLK_DEV_SD=y
#
# CONFIG_ISCSI_TCP is not set
# CONFIG_SCSI_DEBUG is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
# CONFIG_ATA is not set
#
@@ -499,19 +512,6 @@ CONFIG_BLK_DEV_SD=y
# CONFIG_MD is not set
#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
# Network device support
#
CONFIG_NETDEVICES=y
@@ -519,10 +519,6 @@ CONFIG_NETDEVICES=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
-
-#
-# PHY device support
-#
# CONFIG_PHYLIB is not set
#
@@ -533,37 +529,24 @@ CONFIG_MII=y
CONFIG_SMC91X=y
# CONFIG_DM9000 is not set
# CONFIG_SMC911X is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_NETDEV_10000 is not set
#
-# Ethernet (1000 Mbit)
+# Wireless LAN
#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-CONFIG_NET_WIRELESS_RTNETLINK=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_HOSTAP is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-
-#
-# Wan interfaces
+# USB Network Adapters
#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+CONFIG_USB_PEGASUS=y
+CONFIG_USB_RTL8150=y
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
@@ -582,6 +565,7 @@ CONFIG_ZD1211RW=m
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
@@ -591,7 +575,9 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=800
+CONFIG_INPUT_TSDEV_SCREEN_Y=480
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
@@ -605,31 +591,37 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_PS2_ALPS is not set
+# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
+# CONFIG_MOUSE_PS2_SYNAPTICS is not set
+# CONFIG_MOUSE_PS2_LIFEBOOK is not set
+# CONFIG_MOUSE_PS2_TRACKPOINT is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_VSXXXAA is not set
-CONFIG_INPUT_JOYSTICK=y
-# CONFIG_JOYSTICK_ANALOG is not set
-# CONFIG_JOYSTICK_A3D is not set
-# CONFIG_JOYSTICK_ADI is not set
-# CONFIG_JOYSTICK_COBRA is not set
-# CONFIG_JOYSTICK_GF2K is not set
-# CONFIG_JOYSTICK_GRIP is not set
-# CONFIG_JOYSTICK_GRIP_MP is not set
-# CONFIG_JOYSTICK_GUILLEMOT is not set
-# CONFIG_JOYSTICK_INTERACT is not set
-# CONFIG_JOYSTICK_SIDEWINDER is not set
-# CONFIG_JOYSTICK_TMDC is not set
-# CONFIG_JOYSTICK_IFORCE is not set
-# CONFIG_JOYSTICK_WARRIOR is not set
-# CONFIG_JOYSTICK_MAGELLAN is not set
-# CONFIG_JOYSTICK_SPACEORB is not set
-# CONFIG_JOYSTICK_SPACEBALL is not set
-# CONFIG_JOYSTICK_STINGER is not set
-# CONFIG_JOYSTICK_TWIDJOY is not set
-# CONFIG_JOYSTICK_JOYDUMP is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_UCB1400=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
# CONFIG_INPUT_MISC is not set
#
@@ -671,10 +663,6 @@ CONFIG_LEGACY_PTY_COUNT=256
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_NOWAYOUT=y
@@ -691,23 +679,49 @@ CONFIG_SA1100_WATCHDOG=y
# CONFIG_USBPCWATCHDOG is not set
CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
# CONFIG_RAW_DRIVER is not set
#
# TPM devices
#
# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
#
-# I2C support
+# I2C Hardware Bus support
#
-# CONFIG_I2C is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_PXA is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
@@ -719,22 +733,61 @@ CONFIG_HW_RANDOM=y
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Misc devices
#
CONFIG_BD_GENTIMER=y
-# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_SM501=y
#
# LED devices
@@ -753,25 +806,39 @@ CONFIG_BD_GENTIMER=y
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
#
-# Digital Video Broadcasting Devices
+# Graphics support
#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
-# Graphics support
+# Display device support
#
-CONFIG_FIRMWARE_EDID=y
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
CONFIG_FB=y
-# CONFIG_FB_CFB_FILLRECT is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_PXA is not set
# CONFIG_FB_MBX is not set
@@ -799,15 +866,10 @@ CONFIG_FONT_8x16=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Sound
@@ -837,7 +899,6 @@ CONFIG_SND_DEBUG=y
# Generic devices
#
CONFIG_SND_AC97_CODEC=y
-CONFIG_SND_AC97_BUS=y
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
@@ -853,6 +914,12 @@ CONFIG_SND_PXA2XX_AC97=y
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
#
# Open Sound System
@@ -863,7 +930,22 @@ CONFIG_SND_PXA2XX_AC97=y
# Multimedia Capabilities Port drivers
#
CONFIG_UCB1400_TS=y
-# CONFIG_UCB1400_TS_FIVE_WIRE is not set
+CONFIG_UCB1400_TS_FIVE_WIRE=y
+CONFIG_AC97_BUS=y
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
#
# USB support
@@ -878,7 +960,7 @@ CONFIG_USB=y
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
+CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
@@ -917,41 +999,10 @@ CONFIG_USB_STORAGE=y
CONFIG_USB_LIBUSUAL=y
#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-CONFIG_USB_HIDDEV=y
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-CONFIG_USB_PEGASUS=y
-CONFIG_USB_RTL8150=y
-# CONFIG_USB_USBNET_MII is not set
-# CONFIG_USB_USBNET is not set
# CONFIG_USB_MON is not set
#
@@ -1010,6 +1061,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA19=y
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OPTION is not set
# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
CONFIG_USB_EZUSB=y
CONFIG_AT91SAM7X=m
CONFIG_AT91SAM7X_SERIAL=m
@@ -1027,6 +1079,7 @@ CONFIG_AT91SAM7X_ETHER=m
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
@@ -1036,6 +1089,7 @@ CONFIG_AT91SAM7X_ETHER=m
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
#
@@ -1048,6 +1102,7 @@ CONFIG_AT91SAM7X_ETHER=m
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
CONFIG_USB_GADGET_PXA2XX=y
CONFIG_USB_PXA2XX=y
@@ -1064,15 +1119,19 @@ CONFIG_USB_PXA2XX_SMALL=y
# CONFIG_USB_FILE_STORAGE is not set
CONFIG_USB_G_SERIAL=y
# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
#
-# MMC/SD Card support
+# MMC/SD Card Drivers
#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
+
+#
+# MMC/SD Host Controller Drivers
+#
CONFIG_MMC_PXA=y
-# CONFIG_MMC_TIFM_SD is not set
#
# Real Time Clock
@@ -1133,6 +1192,7 @@ CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1147,11 +1207,15 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
@@ -1171,6 +1235,7 @@ CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1231,6 +1296,11 @@ CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
CONFIG_PROFILING=y
@@ -1243,30 +1313,32 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_RWSEMS=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
CONFIG_FORCED_INLINING=y
-# CONFIG_HEADERS_CHECK is not set
# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_WAITQ=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_ICEDCC is not set
@@ -1285,6 +1357,7 @@ CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_MANAGER=y
# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
@@ -1293,9 +1366,14 @@ CONFIG_CRYPTO_MANAGER=y
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
@@ -1309,6 +1387,7 @@ CONFIG_CRYPTO_ARC4=y
# CONFIG_CRYPTO_DEFLATE is not set
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
#
@@ -1318,9 +1397,15 @@ CONFIG_CRYPTO_CRC32C=y
#
# Library routines
#
+CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/gpe-login/gpe-login-0.90/.mtn2git_empty b/packages/linux/linux-2.6.23/at32stk1000/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gpe-login/gpe-login-0.90/.mtn2git_empty
+++ b/packages/linux/linux-2.6.23/at32stk1000/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.23/at32stk1000/defconfig b/packages/linux/linux-2.6.23/at32stk1000/defconfig
new file mode 100644
index 0000000000..c3d4c33d21
--- /dev/null
+++ b/packages/linux/linux-2.6.23/at32stk1000/defconfig
@@ -0,0 +1,1078 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.atmel.1
+# Tue Oct 16 12:57:22 2007
+#
+CONFIG_AVR32=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_TIME=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_BUG=y
+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 is not set
+CONFIG_SWAP=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=y
+CONFIG_TASK_DELAY_ACCT=y
+# CONFIG_TASK_XACCT is not set
+# CONFIG_USER_NS is not set
+CONFIG_AUDIT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type and features
+#
+CONFIG_SUBARCH_AVR32B=y
+CONFIG_MMU=y
+CONFIG_PERFORMANCE_COUNTERS=y
+CONFIG_PLATFORM_AT32AP=y
+CONFIG_CPU_AT32AP7000=y
+# CONFIG_CPU_AT32AP7001 is not set
+# CONFIG_CPU_AT32AP7002 is not set
+CONFIG_BOARD_ATSTK1002=y
+CONFIG_BOARD_ATSTK1000=y
+# CONFIG_BOARD_ATNGW100 is not set
+# CONFIG_BOARD_ATSTK1002_CUSTOM is not set
+# CONFIG_BOARD_ATSTK1002_SPI1 is not set
+# CONFIG_BOARD_ATSTK1002_J2_LED is not set
+# CONFIG_BOARD_ATSTK1002_J2_LED8 is not set
+# CONFIG_BOARD_ATSTK1002_J2_RGB is not set
+# CONFIG_BOARD_ATSTK1002_ENABLE_AC97 is not set
+# CONFIG_BOARD_ATSTK1002_CF_HACKS is not set
+CONFIG_LOADER_U_BOOT=y
+
+#
+# Atmel AVR32 AP options
+#
+# CONFIG_AP700X_32_BIT_SMC is not set
+CONFIG_AP700X_16_BIT_SMC=y
+# CONFIG_AP700X_8_BIT_SMC is not set
+CONFIG_GPIO_DEV=y
+CONFIG_LOAD_ADDRESS=0x10000000
+CONFIG_ENTRY_ADDRESS=0x90000000
+CONFIG_PHYS_OFFSET=0x10000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
+# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
+# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_OWNERSHIP_TRACE is not set
+CONFIG_DW_DMAC=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_CMDLINE=""
+
+#
+# Power managment options
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_AT32AP=y
+
+#
+# Bus options
+#
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+# CONFIG_PCMCIA_LOAD_CIS is not set
+# CONFIG_PCMCIA_IOCTL is not set
+
+#
+# PC-card bridges
+#
+CONFIG_AT32_CF=m
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 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_FW_LOADER 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# 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
+
+#
+# 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# 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=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_DATAFLASH=m
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_ATMEL_SSC=m
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+CONFIG_LXT_PHY=y
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_FIXED_PHY is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MII is not set
+CONFIG_MACB=y
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_NET_PCMCIA is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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=m
+# CONFIG_INPUT_FF_MEMLESS is not set
+CONFIG_INPUT_POLLDEV=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_MOUSE_GPIO=m
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_AT32AP700X_WDT=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ATMELTWI=m
+CONFIG_I2C_GPIO=m
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+CONFIG_SPI_SPIDEV=m
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_LTV350QV=y
+# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_ATMEL=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# AVR32 devices
+#
+CONFIG_SND_ATMEL_AC97=m
+
+#
+# SPI devices
+#
+CONFIG_SND_AT73C213=m
+CONFIG_SND_AT73C213_TARGET_BITRATE=48000
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+# CONFIG_HID_SUPPORT is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+CONFIG_USB_GADGET_ATMEL_USBA=y
+CONFIG_USB_ATMEL_USBA=y
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_ATMELMCI=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_GPIO=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_AT32AP700X=y
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_MINIX_FS=m
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=y
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_KPROBES is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/gtk+/gtk+-2.2.4/.mtn2git_empty b/packages/linux/linux-2.6.23/atngw100/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gtk+/gtk+-2.2.4/.mtn2git_empty
+++ b/packages/linux/linux-2.6.23/atngw100/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.23/atngw100/defconfig b/packages/linux/linux-2.6.23/atngw100/defconfig
new file mode 100644
index 0000000000..7b335e3e73
--- /dev/null
+++ b/packages/linux/linux-2.6.23/atngw100/defconfig
@@ -0,0 +1,1130 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.atmel.3
+# Mon Nov 5 19:28:40 2007
+#
+CONFIG_AVR32=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_TIME=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_BUG=y
+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 is not set
+CONFIG_SWAP=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_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# System Type and features
+#
+CONFIG_SUBARCH_AVR32B=y
+CONFIG_MMU=y
+CONFIG_PERFORMANCE_COUNTERS=y
+CONFIG_PLATFORM_AT32AP=y
+CONFIG_CPU_AT32AP700X=y
+CONFIG_CPU_AT32AP7000=y
+# CONFIG_CPU_AT32AP7001 is not set
+# CONFIG_CPU_AT32AP7002 is not set
+# CONFIG_BOARD_ATSTK1000 is not set
+CONFIG_BOARD_ATNGW100=y
+# CONFIG_BOARD_ATNGW100_I2C_GPIO is not set
+CONFIG_LOADER_U_BOOT=y
+
+#
+# Atmel AVR32 AP options
+#
+# CONFIG_AP700X_32_BIT_SMC is not set
+CONFIG_AP700X_16_BIT_SMC=y
+# CONFIG_AP700X_8_BIT_SMC is not set
+CONFIG_GPIO_DEV=y
+CONFIG_LOAD_ADDRESS=0x10000000
+CONFIG_ENTRY_ADDRESS=0x90000000
+CONFIG_PHYS_OFFSET=0x10000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
+# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
+# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_OWNERSHIP_TRACE is not set
+CONFIG_DW_DMAC=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_CMDLINE=""
+
+#
+# Power managment options
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_AT32AP=y
+
+#
+# Bus options
+#
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+# CONFIG_IP_PIMSM_V2 is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=y
+CONFIG_INET_ESP=y
+CONFIG_INET_IPCOMP=y
+CONFIG_INET_XFRM_TUNNEL=y
+CONFIG_INET_TUNNEL=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+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_IP_VS is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=y
+CONFIG_INET6_ESP=y
+CONFIG_INET6_IPCOMP=y
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=y
+CONFIG_INET6_TUNNEL=y
+CONFIG_INET6_XFRM_MODE_TRANSPORT=y
+CONFIG_INET6_XFRM_MODE_TUNNEL=y
+CONFIG_INET6_XFRM_MODE_BEET=y
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_GRE=m
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NETFILTER_XTABLES=y
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES 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=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 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_FW_LOADER 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# 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
+
+#
+# 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# 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=y
+CONFIG_MTD_PHYSMAP_START=0x80000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_DATAFLASH=y
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ATMEL_SSC is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_FIXED_PHY is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MII is not set
+CONFIG_MACB=y
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_AT32AP700X_WDT=y
+# CONFIG_HW_RANDOM is not set
+# 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=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ATMELTWI=m
+CONFIG_I2C_GPIO=m
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+CONFIG_SPI_SPIDEV=m
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# 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
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+CONFIG_USB_GADGET_ATMEL_USBA=y
+CONFIG_USB_ATMEL_USBA=y
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_ATMELMCI=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_GPIO=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_AT32AP700X=y
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=850
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_PROC_KCORE is not set
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=y
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_KPROBES is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig b/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
index be9a93bc54..d842308fc9 100644
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23
-# Wed Dec 5 10:34:37 2007
+# Mon Dec 17 17:18:08 2007
#
# CONFIG_PPC64 is not set
@@ -687,7 +687,7 @@ CONFIG_EEPROM_93CX6=m
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
+CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
@@ -696,11 +696,11 @@ CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
-CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
#
@@ -715,45 +715,11 @@ CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
-CONFIG_SCSI_SPI_ATTRS=y
+CONFIG_SCSI_SPI_ATTRS=m
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
+# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
@@ -796,34 +762,7 @@ CONFIG_CICADA_PHY=y
# CONFIG_BROADCOM_PHY is not set
# CONFIG_ICPLUS_PHY is not set
# CONFIG_FIXED_PHY is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-CONFIG_E100=y
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_SC92031 is not set
+# CONFIG_NET_ETHERNET is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
@@ -843,14 +782,7 @@ CONFIG_GIANFAR=y
CONFIG_GFAR_NAPI=y
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_MLX4_CORE is not set
+# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set
#
@@ -1227,7 +1159,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM75 is not set
+CONFIG_SENSORS_LM75=m
# CONFIG_SENSORS_LM77 is not set
# CONFIG_SENSORS_LM78 is not set
# CONFIG_SENSORS_LM80 is not set
@@ -1289,7 +1221,124 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CS5530 is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA PowerMac devices
+#
+
+#
+# ALSA PowerPC devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
@@ -1323,7 +1372,7 @@ CONFIG_USB_DEVICE_CLASS=y
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_SPLIT_ISO is not set
+CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
CONFIG_USB_EHCI_FSL=y
@@ -1353,7 +1402,7 @@ CONFIG_USB_UHCI_HCD=y
#
# may also be needed; see USB_STORAGE Help for more information
#
-CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
index be322be927..1116ce3998 100644
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
+++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
@@ -20,8 +20,8 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver
@@ -0,0 +1,171 @@
+/*
+ * drivers/leds/leds-mpc8313e-rdb.c
-+ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com>
+ * Copyright (C) 2007 Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.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
@@ -99,21 +99,21 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:green",
++ .name = "mpc8313:led5",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 32,
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:yellow",
++ .name = "mpc8313:led6",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 64,
+ },
+ {
+ .cdev = {
-+ .name = "mpc8313:red",
++ .name = "mpc8313:led7",
+ .brightness_set = mpc8313leds_set,
+ },
+ .bitmask = 128,
@@ -186,7 +186,7 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver
+module_init(mpc8313leds_init);
+module_exit(mpc8313leds_exit);
+
-+MODULE_AUTHOR("Leon Woestenberg <leon@sidebranch.com>");
++MODULE_AUTHOR("Jeremy Laine <jeremy.laine@bolloretelecom.eu>");
+MODULE_DESCRIPTION("MPC8313E-RDB LED driver");
+MODULE_LICENSE("GPL");
diff -urN linux-2.6.23.orig/drivers/leds/Makefile linux-2.6.23/drivers/leds/Makefile
diff --git a/packages/gtk+/gtk+-2.4.13/.mtn2git_empty b/packages/linux/linux-2.6.23/netvista/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gtk+/gtk+-2.4.13/.mtn2git_empty
+++ b/packages/linux/linux-2.6.23/netvista/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.23/netvista/defconfig b/packages/linux/linux-2.6.23/netvista/defconfig
new file mode 100644
index 0000000000..cb069c7887
--- /dev/null
+++ b/packages/linux/linux-2.6.23/netvista/defconfig
@@ -0,0 +1,1614 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23
+# Mon Feb 4 10:38:07 2008
+#
+CONFIG_X86_32=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_QUICKLIST=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+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_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Processor type and features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+# CONFIG_SMP is not set
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_PARAVIRT is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+CONFIG_M586=y
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_X86_XADD=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=4
+CONFIG_HPET_TIMER=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_X86_UP_APIC is not set
+CONFIG_X86_MCE=y
+# CONFIG_X86_MCE_NONFATAL is not set
+CONFIG_VM86=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_X86_REBOOTFIXUPS is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+CONFIG_DMIID=y
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_X86_PAE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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_SPARSEMEM_STATIC=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_NR_QUICK=1
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+CONFIG_COMPAT_VDSO=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_HIBERNATION_UP_POSSIBLE=y
+# CONFIG_HIBERNATION is not set
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+# CONFIG_ACPI_PROCFS is not set
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+# CONFIG_ACPI_CONTAINER is not set
+# CONFIG_ACPI_SBS is not set
+CONFIG_APM=y
+CONFIG_APM_IGNORE_USER_SUSPEND=y
+CONFIG_APM_DO_ENABLE=y
+CONFIG_APM_CPU_IDLE=y
+CONFIG_APM_DISPLAY_BLANK=y
+CONFIG_APM_ALLOW_INTS=y
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+# CONFIG_PCIEPORTBUS is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_ISA_DMA_API=y
+# CONFIG_ISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+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_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# 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_IP_MROUTE 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_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_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=y
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES 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_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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIUART is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG 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=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+# CONFIG_MTD is not set
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_IBM_ASM is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_SONY_LAPTOP is not set
+# CONFIG_THINKPAD_ACPI is not set
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_IDEACPI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_CMD640=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_IDEPCI_PCIBUS_ORDER=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+CONFIG_BLK_DEV_PIIX=y
+# CONFIG_BLK_DEV_IT8213 is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_TC86C001 is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+
+#
+# Controllers
+#
+
+#
+# Texas Instruments PCILynx requires I2C
+#
+CONFIG_IEEE1394_OHCI1394=y
+
+#
+# Protocols
+#
+# CONFIG_IEEE1394_VIDEO1394 is not set
+# CONFIG_IEEE1394_SBP2 is not set
+# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
+# CONFIG_IEEE1394_ETH1394 is not set
+# CONFIG_IEEE1394_DV1394 is not set
+CONFIG_IEEE1394_RAWIO=y
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=m
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_SB1000 is not set
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+# CONFIG_PCNET32_NAPI is not set
+CONFIG_AMD8111_ETH=m
+CONFIG_AMD8111E_NAPI=y
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+CONFIG_SUNDANCE_MMIO=y
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_RHINE_NAPI=y
+# CONFIG_SC92031 is not set
+# CONFIG_NET_POCKET is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+CONFIG_NETDEV_10000=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_IXGB is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_MLX4_CORE is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER 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=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=600
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=800
+CONFIG_INPUT_TSDEV_SCREEN_Y=600
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_MTOUCH=m
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_PENMOUNT=m
+CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
+CONFIG_TOUCHSCREEN_TOUCHWIN=m
+CONFIG_TOUCHSCREEN_UCB1400=m
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+CONFIG_RTC=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+CONFIG_AGP=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+# CONFIG_AGP_AMD64 is not set
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_NVIDIA is not set
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_SWORKS is not set
+# CONFIG_AGP_VIA is not set
+# CONFIG_AGP_EFFICEON is not set
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_I810 is not set
+# CONFIG_DRM_I830 is not set
+# CONFIG_DRM_I915 is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_GPIO is not set
+# CONFIG_NSC_GPIO is not set
+# CONFIG_CS5535_GPIO is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+# CONFIG_HANGCHECK_TIMER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+CONFIG_DEVPORT=y
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+# CONFIG_SENSORS_K8TEMP is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_CORETEMP is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_SENSORS_APPLESMC is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+CONFIG_VGASTATE=y
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+CONFIG_FB_VGA16=y
+CONFIG_FB_VESA=y
+# CONFIG_FB_HECUBA is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_LE80578 is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_CYBLA is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_RTCTIMER is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+# CONFIG_SND_PORTMAN2X4 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CS5530 is not set
+CONFIG_SND_CS5535AUDIO=m
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+CONFIG_SND_INTEL8X0=m
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=m
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+CONFIG_SOUND_OSS=m
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_VMIDI is not set
+# CONFIG_SOUND_TRIX is not set
+# CONFIG_SOUND_MSS is not set
+# CONFIG_SOUND_MPU401 is not set
+# CONFIG_SOUND_PAS is not set
+# CONFIG_SOUND_PSS is not set
+CONFIG_SOUND_SB=m
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_UART6850 is not set
+# CONFIG_SOUND_AEDSP16 is not set
+# CONFIG_SOUND_KAHLUA is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_DEBUG=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=y
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_TEST=m
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_STK17TA8 is not set
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_M48T86=m
+# CONFIG_RTC_DRV_M48T59 is not set
+CONFIG_RTC_DRV_V3020=m
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+# CONFIG_AUXDISPLAY is not set
+CONFIG_VIRTUALIZATION=y
+# CONFIG_KVM is not set
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 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
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+# CONFIG_KPROBES is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+# CONFIG_CRYPTO_TWOFISH_586 is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_AES_586 is not set
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_GEODE=m
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_KTIME_SCALAR=y
diff --git a/packages/kexec/kexec-tools-1.101/.mtn2git_empty b/packages/linux/linux-2.6.24/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/kexec/kexec-tools-1.101/.mtn2git_empty
+++ b/packages/linux/linux-2.6.24/.mtn2git_empty
diff --git a/packages/kphonepi/.mtn2git_empty b/packages/linux/linux-2.6.24/gesbc-9302/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/kphonepi/.mtn2git_empty
+++ b/packages/linux/linux-2.6.24/gesbc-9302/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.24/gesbc-9302/0001-gesbc-nand.patch b/packages/linux/linux-2.6.24/gesbc-9302/0001-gesbc-nand.patch
new file mode 100644
index 0000000000..399bc43d31
--- /dev/null
+++ b/packages/linux/linux-2.6.24/gesbc-9302/0001-gesbc-nand.patch
@@ -0,0 +1,306 @@
+From 30026f5e13ac18daeeea1a3fd4ab06aa2961ef23 Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.(none)>
+Date: Mon, 17 Dec 2007 16:45:47 -0500
+Subject: [PATCH] gesbc-nand
+
+---
+ drivers/mtd/nand/Kconfig | 7 ++
+ drivers/mtd/nand/Makefile | 1 +
+ drivers/mtd/nand/gesbc.c | 255 +++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 263 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/mtd/nand/gesbc.c
+
+diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
+index 246d451..cde3146 100644
+--- a/drivers/mtd/nand/Kconfig
++++ b/drivers/mtd/nand/Kconfig
+@@ -51,6 +51,13 @@ config MTD_NAND_EDB7312
+ This enables the driver for the Cirrus Logic EBD7312 evaluation
+ board to access the onboard NAND Flash.
+
++config MTD_NAND_GESBC
++ tristate "Support for Glomation GESBC-93xx board"
++ depends on MTD_NAND && MACH_EDB9302
++ help
++ This enables the driver for the Glomation GESBC-93xx
++ board to access the onboard NAND Flash.
++
+ config MTD_NAND_H1900
+ tristate "iPAQ H1900 flash"
+ depends on ARCH_PXA && MTD_PARTITIONS
+diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
+index 3ad6c01..58c1961 100644
+--- a/drivers/mtd/nand/Makefile
++++ b/drivers/mtd/nand/Makefile
+@@ -12,6 +12,7 @@ obj-$(CONFIG_MTD_NAND_AMS_DELTA) += ams-delta.o
+ obj-$(CONFIG_MTD_NAND_TOTO) += toto.o
+ obj-$(CONFIG_MTD_NAND_AUTCPU12) += autcpu12.o
+ obj-$(CONFIG_MTD_NAND_EDB7312) += edb7312.o
++obj-$(CONFIG_MTD_NAND_GESBC) += gesbc.o
+ obj-$(CONFIG_MTD_NAND_AU1550) += au1550nd.o
+ obj-$(CONFIG_MTD_NAND_BF5XX) += bf5xx_nand.o
+ obj-$(CONFIG_MTD_NAND_PPCHAMELEONEVB) += ppchameleonevb.o
+diff --git a/drivers/mtd/nand/gesbc.c b/drivers/mtd/nand/gesbc.c
+new file mode 100644
+index 0000000..a5844b1
+--- /dev/null
++++ b/drivers/mtd/nand/gesbc.c
+@@ -0,0 +1,255 @@
++/*
++ * drivers/mtd/nand/gesbc-9302.c
++ *
++ * Copyright (C) 2004 Glomation (support@glomationinc.com)
++ *
++ * Derived from drivers/mtd/nand/edb7312.c
++ * Copyright (C) 2004 Marius Grer (mag@sysgo.de)
++ *
++ * Derived from drivers/mtd/nand/autcpu12.c
++ * Copyright (c) 2001 Thomas Gleixner (gleixner@autronix.de)
++ *
++ * 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.
++ *
++ * Overview:
++ * This is a device driver for the NAND flash device found on the
++ * GESBC-93xx board with Samsung 128/256/512 Mbyte part.
++ */
++
++#include <linux/slab.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/partitions.h>
++#include <asm/io.h>
++#include <asm/arch/hardware.h>
++#include <asm/sizes.h>
++
++#define GESBC_NAND_FLASH_DATA 0x10000000
++
++#define GPIO_PADR EP93XX_GPIO_REG(0x0)
++#define GPIO_PADDR EP93XX_GPIO_REG(0x10)
++#define SMCBCR1 (EP93XX_AHB_VIRT_BASE + 0x00082000 + 0x04)
++
++/*
++ * MTD structure for GESBC-93xx board
++ */
++static struct mtd_info *gesbc_mtd = NULL;
++
++
++/*
++ * Module stuff
++ */
++static unsigned long gesbc_fio_pbase = GESBC_NAND_FLASH_DATA;
++
++#ifdef CONFIG_MTD_PARTITIONS
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info32[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 128*1024*1024 },
++};
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info128[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 128*1024*1024 },
++};
++
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info256[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 256*1024*1024 },
++};
++
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info512[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 512*1024*1024 },
++};
++
++#define NUM_PARTITIONS 1
++#endif
++
++
++/*
++ * hardware specific access to control-lines
++ * NAND_NCE: bit 0 -> bit 3
++ * NAND_CLE: bit 1 -> bit 4
++ * NAND_ALE: bit 2 -> bit 6
++ */
++static void gesbc_hwcontrol(struct mtd_info *mtd, int cmd, int ctrl)
++{
++ unsigned long flags;
++ struct nand_chip *chip = mtd->priv;
++
++ /* Disbale interrupt to avoid race condition */
++ local_irq_save(flags);
++
++ if (ctrl & NAND_CTRL_CHANGE) {
++ unsigned char bits;
++
++ bits = (ctrl & NAND_CLE) << 3;
++ bits |= (ctrl & NAND_ALE) << 4;
++ if (ctrl & NAND_NCE)
++ bits &= ~0x08;
++ else
++ bits |= 0x08;
++
++ __raw_writel( (__raw_readl(GPIO_PADR) & ~0x58 )| bits, GPIO_PADR);
++ }
++ if (cmd != NAND_CMD_NONE)
++ writeb(cmd, chip->IO_ADDR_W);
++ /* Restore interrupt state */
++ local_irq_restore(flags);
++}
++
++/*
++ * read device ready pin
++ */
++static int gesbc_device_ready(struct mtd_info *mtd)
++{
++ return (__raw_readl(GPIO_PADR) & 0x80) >> 7;
++}
++
++#define MTDID "s3c2440-nand"
++
++static const char *probes[] = { "cmdlinepart", NULL };
++
++
++
++/*
++ * Main initialization routine
++ */
++static int __init gesbc_nand_init (void)
++{
++ struct nand_chip *this;
++ const char *part_type = 0;
++ int mtd_parts_nb = 0;
++ struct mtd_partition *mtd_parts = 0;
++ unsigned long flags;
++ void * gesbc_fio_base;
++
++ /* Allocate memory for MTD device structure and private data */
++ gesbc_mtd = kmalloc(sizeof(struct mtd_info) +
++ sizeof(struct nand_chip),
++ GFP_KERNEL);
++ if (!gesbc_mtd) {
++ printk("Unable to allocate GESBC NAND MTD device structure.\n");
++ return -ENOMEM;
++ }
++
++ /* map physical adress */
++ gesbc_fio_base = ioremap(gesbc_fio_pbase, SZ_1K);
++ if(!gesbc_fio_base) {
++ printk("ioremap GESBC-93xx NAND flash failed\n");
++ kfree(gesbc_mtd);
++ return -EIO;
++ }
++
++
++ /* Get pointer to private data */
++ this = (struct nand_chip *) (&gesbc_mtd[1]);
++
++ /* Initialize structures */
++ memset((char *) gesbc_mtd, 0, sizeof(struct mtd_info));
++ memset((char *) this, 0, sizeof(struct nand_chip));
++
++ /* Link the private data with the MTD structure */
++ gesbc_mtd->priv = this;
++
++ /* Disbale interrupt to avoid race condition */
++ local_irq_save(flags);
++
++ /*
++ * Set GPIO Port A control register so that the pins are configured
++ * to be outputs for controlling the NAND flash.
++ */
++ __raw_writel((__raw_readl(GPIO_PADDR) | 0x58) & ~0x80, GPIO_PADDR);
++ /* Clear NCE, clear CLE, clear ALE */
++ __raw_writel( (__raw_readl(GPIO_PADR) | 0x08 ) & ~0x50, GPIO_PADR);
++ /* Set SRAM controller to 32 bit (8 bit just doesn't work, don't know why) bus width and 7 CLK wait state */
++ __raw_writel(0x10003ce0, SMCBCR1);
++ local_irq_restore(flags);
++
++
++ /* insert callbacks */
++ this->IO_ADDR_R = (void *) gesbc_fio_base;
++ this->IO_ADDR_W = (void *) gesbc_fio_base;
++ this->cmd_ctrl = (void *) gesbc_hwcontrol;
++ this->dev_ready = gesbc_device_ready;
++ this->chip_delay = 25;
++ this->ecc.mode = NAND_ECC_SOFT;
++
++ __raw_writel(0xffffffff, gesbc_fio_base);
++ printk("Searching for NAND flash...\n");
++ /* Scan to find existence of the device */
++ if (nand_scan (gesbc_mtd, 1)) {
++ iounmap((void *)gesbc_fio_base);
++ kfree (gesbc_mtd);
++ return -ENXIO;
++ }
++
++#ifdef CONFIG_MTD_CMDLINE_PARTS
++ gesbc_mtd->name="GESBC-NAND";
++ mtd_parts_nb = parse_mtd_partitions(gesbc_mtd, probes, &mtd_parts, 0);
++ if (mtd_parts_nb > 0)
++ part_type = "command line";
++ else
++ mtd_parts_nb = 0;
++#endif
++
++ if (mtd_parts_nb == 0)
++ {
++ mtd_parts_nb = NUM_PARTITIONS;
++ mtd_parts = partition_info32;
++ if (gesbc_mtd->size >= (128 * 0x100000))
++ mtd_parts = partition_info128;
++ if (gesbc_mtd->size >= (256 * 0x100000))
++ mtd_parts = partition_info256;
++ if (gesbc_mtd->size >= (512 * 0x100000))
++ mtd_parts = partition_info512;
++ part_type = "static";
++ }
++
++ /* Register the partitions */
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ add_mtd_partitions(gesbc_mtd, mtd_parts, mtd_parts_nb);
++
++ /* Return happy */
++ return 0;
++}
++module_init(gesbc_nand_init);
++
++/*
++ * Clean up routine
++ */
++static void __exit gesbc_nand_cleanup (void)
++{
++/* struct nand_chip *this = (struct nand_chip *) &gesbc_mtd[1]; */
++
++ /* Unregister the device */
++ del_mtd_device (gesbc_mtd);
++
++ /* Free the MTD device structure */
++ kfree (gesbc_mtd);
++}
++module_exit(gesbc_nand_cleanup);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("zql@glomationinc.com");
++MODULE_DESCRIPTION("MTD map driver for Glomation GESBC-93xx board");
++
+--
+1.5.4.rc4
+
diff --git a/packages/linux/linux-2.6.24/gesbc-9302/0002-gesbc-eth-platform.patch b/packages/linux/linux-2.6.24/gesbc-9302/0002-gesbc-eth-platform.patch
new file mode 100644
index 0000000000..3afda5a225
--- /dev/null
+++ b/packages/linux/linux-2.6.24/gesbc-9302/0002-gesbc-eth-platform.patch
@@ -0,0 +1,54 @@
+From b537e497d5490e7e8d94a49b7fbf2200c13ef200 Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@bec-systems.com>
+Date: Sat, 19 Jan 2008 17:56:56 -0500
+Subject: [PATCH] gesbc-eth-platform
+
+---
+ arch/arm/mach-ep93xx/edb9302.c | 27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/mach-ep93xx/edb9302.c b/arch/arm/mach-ep93xx/edb9302.c
+index 0315615..8dbeb7c 100644
+--- a/arch/arm/mach-ep93xx/edb9302.c
++++ b/arch/arm/mach-ep93xx/edb9302.c
+@@ -43,10 +43,37 @@ static struct platform_device edb9302_flash = {
+ .resource = &edb9302_flash_resource,
+ };
+
++static struct ep93xx_eth_data ep93xx_eth_data = {
++ .phy_id = 1,
++};
++
++static struct resource ep93xx_eth_resource[] = {
++ {
++ .start = EP93XX_ETHERNET_PHYS_BASE,
++ .end = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
++ .flags = IORESOURCE_MEM,
++ }, {
++ .start = IRQ_EP93XX_ETHERNET,
++ .end = IRQ_EP93XX_ETHERNET,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++static struct platform_device ep93xx_eth_device = {
++ .name = "ep93xx-eth",
++ .id = -1,
++ .dev = {
++ .platform_data = &ep93xx_eth_data,
++ },
++ .num_resources = 2,
++ .resource = ep93xx_eth_resource,
++};
++
+ static void __init edb9302_init_machine(void)
+ {
+ ep93xx_init_devices();
+ platform_device_register(&edb9302_flash);
++ platform_device_register(&ep93xx_eth_device);
+ }
+
+ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")
+--
+1.5.4.rc4
+
diff --git a/packages/linux/linux-2.6.24/gesbc-9302/0003-gesbc9302-defconfig.patch b/packages/linux/linux-2.6.24/gesbc-9302/0003-gesbc9302-defconfig.patch
new file mode 100644
index 0000000000..8fca0d5c10
--- /dev/null
+++ b/packages/linux/linux-2.6.24/gesbc-9302/0003-gesbc9302-defconfig.patch
@@ -0,0 +1,1184 @@
+From d0d110243832e82847ea3e0a806bb6e6edaaf71f Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.(none)>
+Date: Mon, 17 Dec 2007 16:46:19 -0500
+Subject: [PATCH] gesbc9302-defconfig
+
+---
+ arch/arm/configs/gesbc9302_defconfig | 1165 ++++++++++++++++++++++++++++++++++
+ 1 files changed, 1165 insertions(+), 0 deletions(-)
+ create mode 100644 arch/arm/configs/gesbc9302_defconfig
+
+diff --git a/arch/arm/configs/gesbc9302_defconfig b/arch/arm/configs/gesbc9302_defconfig
+new file mode 100644
+index 0000000..da4fc81
+--- /dev/null
++++ b/arch/arm/configs/gesbc9302_defconfig
+@@ -0,0 +1,1165 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.24
++# Thu Jan 31 23:28:43 2008
++#
++CONFIG_ARM=y
++CONFIG_SYS_SUPPORTS_APM_EMULATION=y
++# CONFIG_GENERIC_GPIO is not set
++# CONFIG_GENERIC_TIME is not set
++# CONFIG_GENERIC_CLOCKEVENTS is not set
++CONFIG_MMU=y
++# CONFIG_NO_IOPORT is not set
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_STACKTRACE_SUPPORT=y
++CONFIG_LOCKDEP_SUPPORT=y
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
++CONFIG_HARDIRQS_SW_RESEND=y
++CONFIG_GENERIC_IRQ_PROBE=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_ZONE_DMA=y
++CONFIG_VECTORS_BASE=0xffff0000
++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_SWAP=y
++CONFIG_SYSVIPC=y
++CONFIG_SYSVIPC_SYSCTL=y
++# CONFIG_POSIX_MQUEUE is not set
++# CONFIG_BSD_PROCESS_ACCT is not set
++# CONFIG_TASKSTATS is not set
++# CONFIG_USER_NS is not set
++# CONFIG_PID_NS is not set
++# CONFIG_AUDIT is not set
++CONFIG_IKCONFIG=y
++CONFIG_IKCONFIG_PROC=y
++CONFIG_LOG_BUF_SHIFT=14
++# CONFIG_CGROUPS is not set
++# CONFIG_FAIR_GROUP_SCHED is not set
++# CONFIG_SYSFS_DEPRECATED is not set
++# CONFIG_RELAY is not set
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_SYSCTL=y
++CONFIG_EMBEDDED=y
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++CONFIG_BASE_FULL=y
++CONFIG_FUTEX=y
++CONFIG_ANON_INODES=y
++CONFIG_EPOLL=y
++CONFIG_SIGNALFD=y
++CONFIG_EVENTFD=y
++CONFIG_SHMEM=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_SLAB=y
++# CONFIG_SLUB is not set
++# CONFIG_SLOB is not set
++CONFIG_SLABINFO=y
++CONFIG_RT_MUTEXES=y
++# CONFIG_TINY_SHMEM is not set
++CONFIG_BASE_SMALL=0
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++CONFIG_MODULE_FORCE_UNLOAD=y
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++CONFIG_KMOD=y
++CONFIG_BLOCK=y
++# CONFIG_LBD is not set
++# CONFIG_BLK_DEV_IO_TRACE is not set
++# CONFIG_LSF is not set
++# CONFIG_BLK_DEV_BSG is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++# CONFIG_IOSCHED_AS is not set
++CONFIG_IOSCHED_DEADLINE=y
++# CONFIG_IOSCHED_CFQ is not set
++# CONFIG_DEFAULT_AS is not set
++CONFIG_DEFAULT_DEADLINE=y
++# CONFIG_DEFAULT_CFQ is not set
++# CONFIG_DEFAULT_NOOP is not set
++CONFIG_DEFAULT_IOSCHED="deadline"
++
++#
++# System Type
++#
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_VERSATILE is not set
++# CONFIG_ARCH_AT91 is not set
++# CONFIG_ARCH_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++CONFIG_ARCH_EP93XX=y
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_IOP13XX is not set
++# CONFIG_ARCH_IOP32X is not set
++# CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IXP23XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_KS8695 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_MXC is not set
++# CONFIG_ARCH_PNX4008 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_RPC is not set
++# CONFIG_ARCH_SA1100 is not set
++# CONFIG_ARCH_S3C2410 is not set
++# CONFIG_ARCH_SHARK is not set
++# CONFIG_ARCH_LH7A40X is not set
++# CONFIG_ARCH_DAVINCI is not set
++# CONFIG_ARCH_OMAP is not set
++
++#
++# Cirrus EP93xx Implementation Options
++#
++CONFIG_CRUNCH=y
++
++#
++# EP93xx Platforms
++#
++# CONFIG_MACH_ADSSPHERE is not set
++CONFIG_MACH_EDB9302=y
++# CONFIG_MACH_EDB9302A is not set
++# CONFIG_MACH_EDB9307 is not set
++# CONFIG_MACH_EDB9312 is not set
++# CONFIG_MACH_EDB9315 is not set
++# CONFIG_MACH_EDB9315A is not set
++# CONFIG_MACH_GESBC9312 is not set
++# CONFIG_MACH_MICRO9 is not set
++# CONFIG_MACH_MICRO9H is not set
++# CONFIG_MACH_MICRO9M is not set
++# CONFIG_MACH_MICRO9L is not set
++# CONFIG_MACH_TS72XX is not set
++
++#
++# Boot options
++#
++
++#
++# Power management
++#
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM920T=y
++CONFIG_CPU_32v4T=y
++CONFIG_CPU_ABRT_EV4T=y
++CONFIG_CPU_CACHE_V4WT=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=y
++CONFIG_CPU_CP15=y
++CONFIG_CPU_CP15_MMU=y
++
++#
++# Processor Features
++#
++# CONFIG_ARM_THUMB is not set
++# CONFIG_CPU_ICACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
++# CONFIG_OUTER_CACHE is not set
++CONFIG_ARM_VIC=y
++
++#
++# Bus support
++#
++CONFIG_ARM_AMBA=y
++# CONFIG_PCI_SYSCALL is not set
++# CONFIG_ARCH_SUPPORTS_MSI is not set
++# CONFIG_PCCARD is not set
++
++#
++# Kernel Features
++#
++# CONFIG_TICK_ONESHOT is not set
++# CONFIG_PREEMPT is not set
++# CONFIG_NO_IDLE_HZ is not set
++CONFIG_HZ=100
++CONFIG_AEABI=y
++CONFIG_OABI_COMPAT=y
++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++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_SPARSEMEM_STATIC is not set
++# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4096
++# CONFIG_RESOURCES_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=1
++CONFIG_BOUNCE=y
++CONFIG_VIRT_TO_BUS=y
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0x0
++CONFIG_ZBOOT_ROM_BSS=0x0
++CONFIG_CMDLINE="console=ttyAM0 root=mtd5 rootfstype=jffs2 mtdparts=GESBC-NAND:64m(app),-(data)"
++# CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
++
++#
++# Floating point emulation
++#
++
++#
++# At least one emulation must be selected
++#
++CONFIG_FPE_NWFPE=y
++CONFIG_FPE_NWFPE_XP=y
++# CONFIG_FPE_FASTFPE is not set
++
++#
++# Userspace binary formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
++
++#
++# Power management options
++#
++# CONFIG_PM is not set
++CONFIG_SUSPEND_UP_POSSIBLE=y
++
++#
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++CONFIG_PACKET=y
++CONFIG_PACKET_MMAP=y
++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_NET_KEY=y
++# CONFIG_NET_KEY_MIGRATE 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=y
++CONFIG_IP_PNP_DHCP=y
++CONFIG_IP_PNP_BOOTP=y
++# CONFIG_IP_PNP_RARP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_ARPD is not set
++CONFIG_SYN_COOKIES=y
++# 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_INET6_XFRM_TUNNEL is not set
++# CONFIG_INET6_TUNNEL 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_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
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++# CONFIG_AF_RXRPC is not set
++
++#
++# Wireless
++#
++# CONFIG_CFG80211 is not set
++# CONFIG_WIRELESS_EXT is not set
++# CONFIG_MAC80211 is not set
++# CONFIG_IEEE80211 is not set
++# CONFIG_RFKILL is not set
++# CONFIG_NET_9P is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++# CONFIG_FW_LOADER 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_REDBOOT_PARTS=y
++CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
++# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
++# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++# CONFIG_MTD_AFS_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=y
++CONFIG_MTD_CFI_NOSWAP=y
++# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
++# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
++# CONFIG_MTD_CFI_GEOMETRY 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_OTP is not set
++CONFIG_MTD_CFI_INTELEXT=y
++CONFIG_MTD_CFI_AMDSTD=y
++CONFIG_MTD_CFI_STAA=y
++CONFIG_MTD_CFI_UTIL=y
++# CONFIG_MTD_RAM is not set
++CONFIG_MTD_ROM=y
++# CONFIG_MTD_ABSENT is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++CONFIG_MTD_PHYSMAP=y
++CONFIG_MTD_PHYSMAP_START=0x0
++CONFIG_MTD_PHYSMAP_LEN=0x0
++CONFIG_MTD_PHYSMAP_BANKWIDTH=1
++# CONFIG_MTD_ARM_INTEGRATOR is not set
++# 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=y
++CONFIG_MTD_NAND_VERIFY_WRITE=y
++# CONFIG_MTD_NAND_ECC_SMC is not set
++# CONFIG_MTD_NAND_MUSEUM_IDS is not set
++CONFIG_MTD_NAND_GESBC=y
++CONFIG_MTD_NAND_IDS=y
++# CONFIG_MTD_NAND_DISKONCHIP is not set
++# CONFIG_MTD_NAND_NANDSIM is not set
++# CONFIG_MTD_NAND_PLATFORM is not set
++# CONFIG_MTD_ALAUDA is not set
++# CONFIG_MTD_ONENAND 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 is not set
++# CONFIG_BLK_DEV_UB is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=12288
++CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++CONFIG_MISC_DEVICES=y
++# CONFIG_EEPROM_93CX6 is not set
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++CONFIG_SCSI=y
++CONFIG_SCSI_DMA=y
++# CONFIG_SCSI_TGT is not set
++# CONFIG_SCSI_NETLINK is not set
++# CONFIG_SCSI_PROC_FS is not set
++
++#
++# SCSI support type (disk, tape, CD-ROM)
++#
++CONFIG_BLK_DEV_SD=y
++# CONFIG_CHR_DEV_ST is not set
++# CONFIG_CHR_DEV_OSST is not set
++# CONFIG_BLK_DEV_SR is not set
++# CONFIG_CHR_DEV_SG is not set
++# CONFIG_CHR_DEV_SCH is not set
++
++#
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
++#
++# CONFIG_SCSI_MULTI_LUN is not set
++# CONFIG_SCSI_CONSTANTS is not set
++# CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
++CONFIG_SCSI_WAIT_SCAN=m
++
++#
++# SCSI Transports
++#
++# CONFIG_SCSI_SPI_ATTRS is not set
++# CONFIG_SCSI_FC_ATTRS is not set
++# CONFIG_SCSI_ISCSI_ATTRS is not set
++# CONFIG_SCSI_SAS_LIBSAS is not set
++# CONFIG_SCSI_SRP_ATTRS is not set
++CONFIG_SCSI_LOWLEVEL=y
++# CONFIG_ISCSI_TCP is not set
++# CONFIG_SCSI_DEBUG is not set
++# CONFIG_ATA is not set
++# CONFIG_MD is not set
++CONFIG_NETDEVICES=y
++# CONFIG_NETDEVICES_MULTIQUEUE is not set
++# 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=y
++CONFIG_EP93XX_ETH=y
++# CONFIG_AX88796 is not set
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 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_B44 is not set
++# CONFIG_NETDEV_1000 is not set
++# CONFIG_NETDEV_10000 is not set
++
++#
++# Wireless LAN
++#
++# CONFIG_WLAN_PRE80211 is not set
++# CONFIG_WLAN_80211 is not set
++
++#
++# USB Network Adapters
++#
++# CONFIG_USB_CATC is not set
++# CONFIG_USB_KAWETH is not set
++# CONFIG_USB_PEGASUS is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET is not set
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_SHAPER 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
++
++#
++# 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_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_AMBA_PL010=y
++CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
++# CONFIG_SERIAL_AMBA_PL011 is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++# CONFIG_LEGACY_PTYS is not set
++# CONFIG_IPMI_HANDLER is not set
++# CONFIG_HW_RANDOM is not set
++# CONFIG_NVRAM is not set
++# CONFIG_R3964 is not set
++# CONFIG_RAW_DRIVER is not set
++# CONFIG_TCG_TPM is not set
++CONFIG_I2C=y
++CONFIG_I2C_BOARDINFO=y
++CONFIG_I2C_CHARDEV=y
++
++#
++# I2C Algorithms
++#
++CONFIG_I2C_ALGOBIT=y
++# CONFIG_I2C_ALGOPCF is not set
++# CONFIG_I2C_ALGOPCA is not set
++
++#
++# I2C Hardware Bus support
++#
++# CONFIG_I2C_OCORES is not set
++# CONFIG_I2C_PARPORT_LIGHT is not set
++# CONFIG_I2C_SIMTEC is not set
++# CONFIG_I2C_TAOS_EVM is not set
++# CONFIG_I2C_STUB is not set
++# CONFIG_I2C_TINY_USB is not set
++
++#
++# Miscellaneous I2C Chip support
++#
++CONFIG_SENSORS_DS1337=y
++# CONFIG_SENSORS_DS1374 is not set
++# CONFIG_DS1682 is not set
++# CONFIG_SENSORS_EEPROM is not set
++# CONFIG_SENSORS_PCF8574 is not set
++# CONFIG_SENSORS_PCA9539 is not set
++# CONFIG_SENSORS_PCF8591 is not set
++# CONFIG_SENSORS_MAX6875 is not set
++# CONFIG_SENSORS_TSL2550 is not set
++CONFIG_I2C_DEBUG_CORE=y
++CONFIG_I2C_DEBUG_ALGO=y
++CONFIG_I2C_DEBUG_BUS=y
++CONFIG_I2C_DEBUG_CHIP=y
++
++#
++# SPI support
++#
++# CONFIG_SPI is not set
++# CONFIG_SPI_MASTER is not set
++# CONFIG_W1 is not set
++# CONFIG_POWER_SUPPLY is not set
++CONFIG_HWMON=y
++# CONFIG_HWMON_VID is not set
++# CONFIG_SENSORS_AD7418 is not set
++# CONFIG_SENSORS_ADM1021 is not set
++# CONFIG_SENSORS_ADM1025 is not set
++# CONFIG_SENSORS_ADM1026 is not set
++# CONFIG_SENSORS_ADM1029 is not set
++# CONFIG_SENSORS_ADM1031 is not set
++# CONFIG_SENSORS_ADM9240 is not set
++# CONFIG_SENSORS_ADT7470 is not set
++# CONFIG_SENSORS_ATXP1 is not set
++# CONFIG_SENSORS_DS1621 is not set
++# CONFIG_SENSORS_F71805F is not set
++# CONFIG_SENSORS_F71882FG is not set
++# CONFIG_SENSORS_F75375S is not set
++# CONFIG_SENSORS_GL518SM is not set
++# CONFIG_SENSORS_GL520SM is not set
++# CONFIG_SENSORS_IT87 is not set
++# CONFIG_SENSORS_LM63 is not set
++# CONFIG_SENSORS_LM75 is not set
++# CONFIG_SENSORS_LM77 is not set
++# CONFIG_SENSORS_LM78 is not set
++# CONFIG_SENSORS_LM80 is not set
++# CONFIG_SENSORS_LM83 is not set
++# CONFIG_SENSORS_LM85 is not set
++# CONFIG_SENSORS_LM87 is not set
++# CONFIG_SENSORS_LM90 is not set
++# CONFIG_SENSORS_LM92 is not set
++# CONFIG_SENSORS_LM93 is not set
++# CONFIG_SENSORS_MAX1619 is not set
++# CONFIG_SENSORS_MAX6650 is not set
++# CONFIG_SENSORS_PC87360 is not set
++# CONFIG_SENSORS_PC87427 is not set
++# CONFIG_SENSORS_DME1737 is not set
++# CONFIG_SENSORS_SMSC47M1 is not set
++# CONFIG_SENSORS_SMSC47M192 is not set
++# CONFIG_SENSORS_SMSC47B397 is not set
++# CONFIG_SENSORS_THMC50 is not set
++# CONFIG_SENSORS_VT1211 is not set
++# CONFIG_SENSORS_W83781D is not set
++# CONFIG_SENSORS_W83791D is not set
++# CONFIG_SENSORS_W83792D is not set
++# CONFIG_SENSORS_W83793 is not set
++# CONFIG_SENSORS_W83L785TS is not set
++# CONFIG_SENSORS_W83627HF is not set
++# CONFIG_SENSORS_W83627EHF is not set
++# CONFIG_HWMON_DEBUG_CHIP is not set
++CONFIG_WATCHDOG=y
++# CONFIG_WATCHDOG_NOWAYOUT is not set
++
++#
++# Watchdog Device Drivers
++#
++# CONFIG_SOFT_WATCHDOG is not set
++CONFIG_EP93XX_WATCHDOG=y
++
++#
++# USB-based Watchdog Cards
++#
++# CONFIG_USBPCWATCHDOG is not set
++
++#
++# Sonics Silicon Backplane
++#
++CONFIG_SSB_POSSIBLE=y
++# CONFIG_SSB is not set
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++# CONFIG_DVB_CORE is not set
++# CONFIG_DAB is not set
++
++#
++# Graphics support
++#
++# CONFIG_VGASTATE is not set
++# CONFIG_VIDEO_OUTPUT_CONTROL is not set
++# CONFIG_FB is not set
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
++
++#
++# Display device support
++#
++# CONFIG_DISPLAY_SUPPORT is not set
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++CONFIG_USB_SUPPORT=y
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++CONFIG_USB=y
++CONFIG_USB_DEBUG=y
++
++#
++# Miscellaneous USB options
++#
++CONFIG_USB_DEVICEFS=y
++# CONFIG_USB_DEVICE_CLASS is not set
++CONFIG_USB_DYNAMIC_MINORS=y
++# CONFIG_USB_OTG is not set
++
++#
++# USB Host Controller Drivers
++#
++# CONFIG_USB_ISP116X_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_SL811_HCD is not set
++# CONFIG_USB_R8A66597_HCD is not set
++
++#
++# USB Device Class drivers
++#
++# CONFIG_USB_ACM is not set
++# CONFIG_USB_PRINTER is not set
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# may also be needed; see USB_STORAGE Help for more information
++#
++CONFIG_USB_STORAGE=y
++# CONFIG_USB_STORAGE_DEBUG is not set
++# CONFIG_USB_STORAGE_DATAFAB is not set
++# CONFIG_USB_STORAGE_FREECOM is not set
++# CONFIG_USB_STORAGE_ISD200 is not set
++# CONFIG_USB_STORAGE_DPCM is not set
++# CONFIG_USB_STORAGE_USBAT is not set
++# CONFIG_USB_STORAGE_SDDR09 is not set
++# CONFIG_USB_STORAGE_SDDR55 is not set
++# CONFIG_USB_STORAGE_JUMPSHOT is not set
++# CONFIG_USB_STORAGE_ALAUDA is not set
++# CONFIG_USB_STORAGE_KARMA is not set
++# CONFIG_USB_LIBUSUAL is not set
++
++#
++# USB Imaging devices
++#
++# CONFIG_USB_MDC800 is not set
++# CONFIG_USB_MICROTEK is not set
++# CONFIG_USB_MON is not set
++
++#
++# USB port drivers
++#
++
++#
++# USB Serial Converter support
++#
++CONFIG_USB_SERIAL=m
++CONFIG_USB_SERIAL_GENERIC=y
++# CONFIG_USB_SERIAL_AIRCABLE is not set
++# CONFIG_USB_SERIAL_AIRPRIME is not set
++# CONFIG_USB_SERIAL_ARK3116 is not set
++# CONFIG_USB_SERIAL_BELKIN is not set
++# CONFIG_USB_SERIAL_CH341 is not set
++# CONFIG_USB_SERIAL_WHITEHEAT is not set
++# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
++# CONFIG_USB_SERIAL_CP2101 is not set
++# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
++# CONFIG_USB_SERIAL_EMPEG is not set
++CONFIG_USB_SERIAL_FTDI_SIO=m
++# CONFIG_USB_SERIAL_FUNSOFT is not set
++# CONFIG_USB_SERIAL_VISOR is not set
++# CONFIG_USB_SERIAL_IPAQ is not set
++# CONFIG_USB_SERIAL_IR is not set
++# CONFIG_USB_SERIAL_EDGEPORT is not set
++# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
++# CONFIG_USB_SERIAL_GARMIN is not set
++# CONFIG_USB_SERIAL_IPW is not set
++# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
++# CONFIG_USB_SERIAL_KEYSPAN is not set
++# CONFIG_USB_SERIAL_KLSI is not set
++# CONFIG_USB_SERIAL_KOBIL_SCT is not set
++# CONFIG_USB_SERIAL_MCT_U232 is not set
++# CONFIG_USB_SERIAL_MOS7720 is not set
++# CONFIG_USB_SERIAL_MOS7840 is not set
++# CONFIG_USB_SERIAL_NAVMAN is not set
++# CONFIG_USB_SERIAL_PL2303 is not set
++# CONFIG_USB_SERIAL_OTI6858 is not set
++# CONFIG_USB_SERIAL_HP4X is not set
++# CONFIG_USB_SERIAL_SAFE is not set
++# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
++# CONFIG_USB_SERIAL_TI is not set
++# CONFIG_USB_SERIAL_CYBERJACK is not set
++# CONFIG_USB_SERIAL_XIRCOM is not set
++# CONFIG_USB_SERIAL_OPTION is not set
++# CONFIG_USB_SERIAL_OMNINET is not set
++# CONFIG_USB_SERIAL_DEBUG is not set
++
++#
++# USB Miscellaneous drivers
++#
++# CONFIG_USB_EMI62 is not set
++# CONFIG_USB_EMI26 is not set
++# CONFIG_USB_ADUTUX is not set
++# CONFIG_USB_AUERSWALD is not set
++# CONFIG_USB_RIO500 is not set
++# CONFIG_USB_LEGOTOWER is not set
++# CONFIG_USB_LCD is not set
++# CONFIG_USB_BERRY_CHARGE is not set
++# CONFIG_USB_LED is not set
++# CONFIG_USB_CYPRESS_CY7C63 is not set
++# CONFIG_USB_CYTHERM is not set
++# CONFIG_USB_PHIDGET is not set
++# CONFIG_USB_IDMOUSE is not set
++# CONFIG_USB_FTDI_ELAN is not set
++# CONFIG_USB_APPLEDISPLAY is not set
++# CONFIG_USB_LD is not set
++# CONFIG_USB_TRANCEVIBRATOR is not set
++# CONFIG_USB_IOWARRIOR is not set
++# CONFIG_USB_TEST is not set
++
++#
++# USB DSL modem support
++#
++
++#
++# USB Gadget Support
++#
++# CONFIG_USB_GADGET is not set
++# CONFIG_MMC is not set
++# CONFIG_NEW_LEDS is not set
++CONFIG_RTC_LIB=y
++CONFIG_RTC_CLASS=y
++CONFIG_RTC_HCTOSYS=y
++CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
++# CONFIG_RTC_DEBUG is not set
++
++#
++# RTC interfaces
++#
++CONFIG_RTC_INTF_SYSFS=y
++CONFIG_RTC_INTF_PROC=y
++CONFIG_RTC_INTF_DEV=y
++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
++# CONFIG_RTC_DRV_TEST is not set
++
++#
++# I2C RTC drivers
++#
++# CONFIG_RTC_DRV_DS1307 is not set
++# CONFIG_RTC_DRV_DS1374 is not set
++# CONFIG_RTC_DRV_DS1672 is not set
++# CONFIG_RTC_DRV_MAX6900 is not set
++# CONFIG_RTC_DRV_RS5C372 is not set
++# CONFIG_RTC_DRV_ISL1208 is not set
++# CONFIG_RTC_DRV_X1205 is not set
++# CONFIG_RTC_DRV_PCF8563 is not set
++# CONFIG_RTC_DRV_PCF8583 is not set
++# CONFIG_RTC_DRV_M41T80 is not set
++
++#
++# SPI RTC drivers
++#
++
++#
++# Platform RTC drivers
++#
++# CONFIG_RTC_DRV_CMOS is not set
++# CONFIG_RTC_DRV_DS1553 is not set
++# CONFIG_RTC_DRV_STK17TA8 is not set
++# CONFIG_RTC_DRV_DS1742 is not set
++# CONFIG_RTC_DRV_M48T86 is not set
++# CONFIG_RTC_DRV_M48T59 is not set
++# CONFIG_RTC_DRV_V3020 is not set
++
++#
++# on-CPU RTC drivers
++#
++CONFIG_RTC_DRV_EP93XX=y
++# CONFIG_RTC_DRV_PL031 is not set
++
++#
++# File systems
++#
++CONFIG_EXT2_FS=y
++# CONFIG_EXT2_FS_XATTR is not set
++# CONFIG_EXT2_FS_XIP is not set
++CONFIG_EXT3_FS=y
++# CONFIG_EXT3_FS_XATTR is not set
++# CONFIG_EXT4DEV_FS is not set
++CONFIG_JBD=y
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_GFS2_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_MINIX_FS is not set
++# CONFIG_ROMFS_FS is not set
++CONFIG_INOTIFY=y
++CONFIG_INOTIFY_USER=y
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# 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_FAT_FS=y
++# CONFIG_MSDOS_FS is not set
++CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_PROC_SYSCTL=y
++CONFIG_SYSFS=y
++CONFIG_TMPFS=y
++# CONFIG_TMPFS_POSIX_ACL is not set
++# CONFIG_HUGETLB_PAGE is not set
++# CONFIG_CONFIGFS_FS is not set
++
++#
++# Miscellaneous filesystems
++#
++# 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=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
++CONFIG_JFFS2_SUMMARY=y
++# CONFIG_JFFS2_FS_XATTR is not set
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
++CONFIG_JFFS2_ZLIB=y
++# CONFIG_JFFS2_LZO is not set
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++# CONFIG_CRAMFS is not set
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# 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 is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFS_DIRECTIO is not set
++# CONFIG_NFSD is not set
++CONFIG_ROOT_NFS=y
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# CONFIG_SUNRPC_BIND34 is not set
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++CONFIG_SMB_FS=y
++# CONFIG_SMB_NLS_DEFAULT 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=y
++# CONFIG_ACORN_PARTITION is not set
++# CONFIG_OSF_PARTITION is not set
++# CONFIG_AMIGA_PARTITION is not set
++# CONFIG_ATARI_PARTITION is not set
++# CONFIG_MAC_PARTITION is not set
++CONFIG_MSDOS_PARTITION=y
++# CONFIG_BSD_DISKLABEL is not set
++# CONFIG_MINIX_SUBPARTITION is not set
++# CONFIG_SOLARIS_X86_PARTITION is not set
++# CONFIG_UNIXWARE_DISKLABEL is not set
++# CONFIG_LDM_PARTITION is not set
++# CONFIG_SGI_PARTITION is not set
++# CONFIG_ULTRIX_PARTITION is not set
++# CONFIG_SUN_PARTITION is not set
++# CONFIG_KARMA_PARTITION is not set
++# CONFIG_EFI_PARTITION is not set
++# CONFIG_SYSV68_PARTITION is not set
++CONFIG_NLS=y
++CONFIG_NLS_DEFAULT="iso8859-1"
++CONFIG_NLS_CODEPAGE_437=y
++# CONFIG_NLS_CODEPAGE_737 is not set
++# CONFIG_NLS_CODEPAGE_775 is not set
++# CONFIG_NLS_CODEPAGE_850 is not set
++# CONFIG_NLS_CODEPAGE_852 is not set
++# CONFIG_NLS_CODEPAGE_855 is not set
++# CONFIG_NLS_CODEPAGE_857 is not set
++# CONFIG_NLS_CODEPAGE_860 is not set
++# CONFIG_NLS_CODEPAGE_861 is not set
++# CONFIG_NLS_CODEPAGE_862 is not set
++# CONFIG_NLS_CODEPAGE_863 is not set
++# CONFIG_NLS_CODEPAGE_864 is not set
++# CONFIG_NLS_CODEPAGE_865 is not set
++# CONFIG_NLS_CODEPAGE_866 is not set
++# CONFIG_NLS_CODEPAGE_869 is not set
++# CONFIG_NLS_CODEPAGE_936 is not set
++# CONFIG_NLS_CODEPAGE_950 is not set
++# CONFIG_NLS_CODEPAGE_932 is not set
++# CONFIG_NLS_CODEPAGE_949 is not set
++# CONFIG_NLS_CODEPAGE_874 is not set
++# CONFIG_NLS_ISO8859_8 is not set
++# CONFIG_NLS_CODEPAGE_1250 is not set
++# CONFIG_NLS_CODEPAGE_1251 is not set
++# CONFIG_NLS_ASCII is not set
++CONFIG_NLS_ISO8859_1=y
++# CONFIG_NLS_ISO8859_2 is not set
++# CONFIG_NLS_ISO8859_3 is not set
++# CONFIG_NLS_ISO8859_4 is not set
++# CONFIG_NLS_ISO8859_5 is not set
++# CONFIG_NLS_ISO8859_6 is not set
++# CONFIG_NLS_ISO8859_7 is not set
++# CONFIG_NLS_ISO8859_9 is not set
++# CONFIG_NLS_ISO8859_13 is not set
++# CONFIG_NLS_ISO8859_14 is not set
++# CONFIG_NLS_ISO8859_15 is not set
++# CONFIG_NLS_KOI8_R is not set
++# CONFIG_NLS_KOI8_U is not set
++# CONFIG_NLS_UTF8 is not set
++# CONFIG_DLM is not set
++CONFIG_INSTRUMENTATION=y
++# CONFIG_PROFILING is not set
++# CONFIG_MARKERS is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_WARN_DEPRECATED=y
++CONFIG_ENABLE_MUST_CHECK=y
++CONFIG_MAGIC_SYSRQ=y
++# CONFIG_UNUSED_SYMBOLS is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_HEADERS_CHECK is not set
++CONFIG_DEBUG_KERNEL=y
++# CONFIG_DEBUG_SHIRQ is not set
++CONFIG_DETECT_SOFTLOCKUP=y
++CONFIG_SCHED_DEBUG=y
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_TIMER_STATS is not set
++CONFIG_DEBUG_SLAB=y
++# CONFIG_DEBUG_SLAB_LEAK is not set
++# CONFIG_DEBUG_RT_MUTEXES is not set
++# CONFIG_RT_MUTEX_TESTER is not set
++CONFIG_DEBUG_SPINLOCK=y
++CONFIG_DEBUG_MUTEXES=y
++# CONFIG_DEBUG_LOCK_ALLOC is not set
++# CONFIG_PROVE_LOCKING is not set
++# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
++# CONFIG_DEBUG_INFO is not set
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_LIST is not set
++# CONFIG_DEBUG_SG is not set
++CONFIG_FRAME_POINTER=y
++CONFIG_FORCED_INLINING=y
++# CONFIG_BOOT_PRINTK_DELAY is not set
++# CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_FAULT_INJECTION is not set
++# CONFIG_SAMPLES is not set
++CONFIG_DEBUG_USER=y
++CONFIG_DEBUG_ERRORS=y
++CONFIG_DEBUG_LL=y
++# CONFIG_DEBUG_ICEDCC is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++# CONFIG_SECURITY_FILE_CAPABILITIES is not set
++# CONFIG_CRYPTO is not set
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++# CONFIG_CRC_ITU_T is not set
++CONFIG_CRC32=y
++# CONFIG_CRC7 is not set
++CONFIG_LIBCRC32C=y
++CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
++CONFIG_PLIST=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
++CONFIG_HAS_DMA=y
+--
+1.5.4.rc4
+
diff --git a/packages/linux/linux-2.6.24/gesbc-9302/0005-ep93xx-reboot.patch b/packages/linux/linux-2.6.24/gesbc-9302/0005-ep93xx-reboot.patch
new file mode 100644
index 0000000000..fa84a0bbcf
--- /dev/null
+++ b/packages/linux/linux-2.6.24/gesbc-9302/0005-ep93xx-reboot.patch
@@ -0,0 +1,1256 @@
+From 1b16045d453045e93b4f94cc57d3205ae9b9d118 Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@bec-systems.com>
+Date: Thu, 7 Feb 2008 08:47:28 -0500
+Subject: [PATCH] ep93xx-reboot
+
+---
+ include/asm-arm/arch-ep93xx/ep93xx-regs.h | 1047 ++++++++++++++++++++++++++++-
+ include/asm-arm/arch-ep93xx/system.h | 114 +++-
+ 2 files changed, 1148 insertions(+), 13 deletions(-)
+
+diff --git a/include/asm-arm/arch-ep93xx/ep93xx-regs.h b/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+index 625c6f0..6e799d9 100644
+--- a/include/asm-arm/arch-ep93xx/ep93xx-regs.h
++++ b/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+@@ -15,17 +15,898 @@
+ */
+
+ #define EP93XX_AHB_PHYS_BASE 0x80000000
+-#define EP93XX_AHB_VIRT_BASE 0xfef00000
++#define EP93XX_AHB_VIRT_BASE 0xff000000//0xfef00000
+ #define EP93XX_AHB_SIZE 0x00100000
+
++
+ #define EP93XX_APB_PHYS_BASE 0x80800000
+-#define EP93XX_APB_VIRT_BASE 0xfed00000
++#define EP93XX_APB_VIRT_BASE 0xff800000//0xfed00000
+ #define EP93XX_APB_SIZE 0x00200000
+
+
+-/* AHB peripherals */
++#define IO_BASE_PHYS EP93XX_AHB_PHYS_BASE
++#define IO_BASE_VIRT EP93XX_AHB_VIRT_BASE
++/*
++ * We don't map the PCMCIA initially. The PCMCIA driver will use ioremap
++ * to be able to see it. But besides that PCMCIA will not exist in the
++ * memory map.
++ */
++#define PCMCIA_BASE_VIRT 0xD0000000 // Virtual address of PCMCIA
++#define PCMCIA_BASE_PHYS 0x40000000 // Physical address of PCMCIA
++#define PCMCIA_SIZE 0x10000000 // How much?
++
++
++
++/*
++ * We don't map the PCMCIA initially. The PCMCIA driver will use ioremap
++ * to be able to see it. But besides that PCMCIA will not exist in the */
++/* SMC register map */
++/* Address Read Location Write Location */
++/* 0x8000.2000 SMCBCR0(Bank config register 0) SMCBCR0(Bank config register 0) */
++/* 0x8000.2004 SMCBCR1(Bank config register 1) SMCBCR1(Bank config register 1) */
++/* 0x8000.2008 SMCBCR2(Bank config register 2) SMCBCR2(Bank config register 2) */
++/* 0x8000.200C SMCBCR3(Bank config register 3) SMCBCR3(Bank config register 3) */
++/* 0x8000.2010 Reserved, RAZ Reserved, RAZ */
++/* 0x8000.2014 Reserved, RAZ Reserved, RAZ */
++/* 0x8000.2018 SMCBCR6(Bank config register 6) SMCBCR6(Bank config register 6) */
++/* 0x8000.201C SMCBCR7(Bank config register 7) SMCBCR7(Bank config register 7) */
++/* 0x8000.2020 PCAttribute Register PCAttribute Register */
++/* 0x8000.2024 PCCommon Register PCCommon Register */
++/* 0x8000.2028 PCIO Register PCIO Register */
++/* 0x8000.202C Reserved, RAZ Reserved, RAZ */
++/* 0x8000.2030 Reserved, RAZ Reserved, RAZ */
++/* 0x8000.2034 Reserved, RAZ Reserved, RAZ */
++/* 0x8000.2038 Reserved, RAZ Reserved, RAZ */
++/* 0x8000.203C Reserved, RAZ Reserved, RAZ */
++/* 0x8000.2040 PCMCIACtrl Register PCMCIACtrl Register */
++
++#define SRAM_OFFSET 0x080000
++#define SRAM_BASE (EP93XX_AHB_VIRT_BASE|SRAM_OFFSET)
++#define SMCBCR0 (SRAM_BASE+0x00) /* 0x8000.2000 Bank config register 0 */
++#define SMCBCR1 (SRAM_BASE+0x04) /* 0x8000.2004 Bank config register 1 */
++#define SMCBCR2 (SRAM_BASE+0x08) /* 0x8000.2008 Bank config register 2 */
++#define SMCBCR3 (SRAM_BASE+0x0C) /* 0x8000.200C Bank config register 3 */
++ /* 0x8000.2010 Reserved, RAZ */
++ /* 0x8000.2014 Reserved, RAZ */
++#define SMCBCR6 (SRAM_BASE+0x18) /* 0x8000.2018 Bank config register 6 */
++#define SMCBCR7 (SRAM_BASE+0x1C) /* 0x8000.201C Bank config register 7 */
++
++#define SMC_PCAttribute (SRAM_BASE+0x20) /* 0x8000.2020 PCMCIA Attribute Register */
++#define SMC_PCCommon (SRAM_BASE+0x24) /* 0x8000.2024 PCMCIA Common Register */
++#define SMC_PCIO (SRAM_BASE+0x28) /* 0x8000.2028 PCMCIA IO Register */
++ /* 0x8000.202C Reserved, RAZ */
++ /* 0x8000.2030 Reserved, RAZ */
++ /* 0x8000.2034 Reserved, RAZ */
++ /* 0x8000.2038 Reserved, RAZ */
++ /* 0x8000.203C Reserved, RAZ */
++#define SMC_PCMCIACtrl (SRAM_BASE+0x40) /* 0x8000.2040 PCMCIA control register */
++
++
++
++
+ #define EP93XX_DMA_BASE (EP93XX_AHB_VIRT_BASE + 0x00000000)
++//
++/* 8000_0000 - 8000_ffff: DMA */
++#define DMA_OFFSET 0x000000
++#define DMA_BASE (EP93XX_DMA_BASE)
++#define DMAMP_TX_0_CONTROL (DMA_BASE+0x0000)
++#define DMAMP_TX_0_INTERRUPT (DMA_BASE+0x0004)
++#define DMAMP_TX_0_PPALLOC (DMA_BASE+0x0008)
++#define DMAMP_TX_0_STATUS (DMA_BASE+0x000C)
++#define DMAMP_TX_0_REMAIN (DMA_BASE+0x0014)
++#define DMAMP_TX_0_MAXCNT0 (DMA_BASE+0x0020)
++#define DMAMP_TX_0_BASE0 (DMA_BASE+0x0024)
++#define DMAMP_TX_0_CURRENT0 (DMA_BASE+0x0028)
++#define DMAMP_TX_0_MAXCNT1 (DMA_BASE+0x0030)
++#define DMAMP_TX_0_BASE1 (DMA_BASE+0x0034)
++#define DMAMP_TX_0_CURRENT1 (DMA_BASE+0x0038)
++
++#define DMAMP_RX_1_CONTROL (DMA_BASE+0x0040)
++#define DMAMP_RX_1_INTERRUPT (DMA_BASE+0x0044)
++#define DMAMP_RX_1_PPALLOC (DMA_BASE+0x0048)
++#define DMAMP_RX_1_STATUS (DMA_BASE+0x004C)
++#define DMAMP_RX_1_REMAIN (DMA_BASE+0x0054)
++#define DMAMP_RX_1_MAXCNT0 (DMA_BASE+0x0060)
++#define DMAMP_RX_1_BASE0 (DMA_BASE+0x0064)
++#define DMAMP_RX_1_CURRENT0 (DMA_BASE+0x0068)
++#define DMAMP_RX_1_MAXCNT1 (DMA_BASE+0x0070)
++#define DMAMP_RX_1_BASE1 (DMA_BASE+0x0074)
++#define DMAMP_RX_1_CURRENT1 (DMA_BASE+0x0078)
++
++#define DMAMP_TX_2_CONTROL (DMA_BASE+0x0080)
++#define DMAMP_TX_2_INTERRUPT (DMA_BASE+0x0084)
++#define DMAMP_TX_2_PPALLOC (DMA_BASE+0x0088)
++#define DMAMP_TX_2_STATUS (DMA_BASE+0x008C)
++#define DMAMP_TX_2_REMAIN (DMA_BASE+0x0094)
++#define DMAMP_TX_2_MAXCNT0 (DMA_BASE+0x00A0)
++#define DMAMP_TX_2_BASE0 (DMA_BASE+0x00A4)
++#define DMAMP_TX_2_CURRENT0 (DMA_BASE+0x00A8)
++#define DMAMP_TX_2_MAXCNT1 (DMA_BASE+0x00B0)
++#define DMAMP_TX_2_BASE1 (DMA_BASE+0x00B4)
++#define DMAMP_TX_2_CURRENT1 (DMA_BASE+0x00B8)
++
++#define DMAMP_RX_3_CONTROL (DMA_BASE+0x00C0)
++#define DMAMP_RX_3_INTERRUPT (DMA_BASE+0x00C4)
++#define DMAMP_RX_3_PPALLOC (DMA_BASE+0x00C8)
++#define DMAMP_RX_3_STATUS (DMA_BASE+0x00CC)
++#define DMAMP_RX_3_REMAIN (DMA_BASE+0x00D4)
++#define DMAMP_RX_3_MAXCNT0 (DMA_BASE+0x00E0)
++#define DMAMP_RX_3_BASE0 (DMA_BASE+0x00E4)
++#define DMAMP_RX_3_CURRENT0 (DMA_BASE+0x00E8)
++#define DMAMP_RX_3_MAXCNT1 (DMA_BASE+0x00F0)
++#define DMAMP_RX_3_BASE1 (DMA_BASE+0x00F4)
++#define DMAMP_RX_3_CURRENT1 (DMA_BASE+0x00F8)
++
++#define DMAMM_0_CONTROL (DMA_BASE+0x0100)
++#define DMAMM_0_INTERRUPT (DMA_BASE+0x0104)
++#define DMAMM_0_STATUS (DMA_BASE+0x010C)
++#define DMAMM_0_BCR0 (DMA_BASE+0x0110)
++#define DMAMM_0_BCR1 (DMA_BASE+0x0114)
++#define DMAMM_0_SAR_BASE0 (DMA_BASE+0x0118)
++#define DMAMM_0_SAR_BASE1 (DMA_BASE+0x011C)
++#define DMAMM_0_SAR_CURRENT0 (DMA_BASE+0x0124)
++#define DMAMM_0_SAR_CURRENT1 (DMA_BASE+0x0128)
++#define DMAMM_0_DAR_BASE0 (DMA_BASE+0x012C)
++#define DMAMM_0_DAR_BASE1 (DMA_BASE+0x0130)
++#define DMAMM_0_DAR_CURRENT0 (DMA_BASE+0x0134)
++#define DMAMM_0_DAR_CURRENT1 (DMA_BASE+0x013C)
++
++#define DMAMM_1_CONTROL (DMA_BASE+0x0140)
++#define DMAMM_1_INTERRUPT (DMA_BASE+0x0144)
++#define DMAMM_1_STATUS (DMA_BASE+0x014C)
++#define DMAMM_1_BCR0 (DMA_BASE+0x0150)
++#define DMAMM_1_BCR1 (DMA_BASE+0x0154)
++#define DMAMM_1_SAR_BASE0 (DMA_BASE+0x0158)
++#define DMAMM_1_SAR_BASE1 (DMA_BASE+0x015C)
++#define DMAMM_1_SAR_CURRENT0 (DMA_BASE+0x0164)
++#define DMAMM_1_SAR_CURRENT1 (DMA_BASE+0x0168)
++#define DMAMM_1_DAR_BASE0 (DMA_BASE+0x016C)
++#define DMAMM_1_DAR_BASE1 (DMA_BASE+0x0170)
++#define DMAMM_1_DAR_CURRENT0 (DMA_BASE+0x0174)
++#define DMAMM_1_DAR_CURRENT1 (DMA_BASE+0x017C)
++
++#define DMAMP_RX_5_CONTROL (DMA_BASE+0x0200)
++#define DMAMP_RX_5_INTERRUPT (DMA_BASE+0x0204)
++#define DMAMP_RX_5_PPALLOC (DMA_BASE+0x0208)
++#define DMAMP_RX_5_STATUS (DMA_BASE+0x020C)
++#define DMAMP_RX_5_REMAIN (DMA_BASE+0x0214)
++#define DMAMP_RX_5_MAXCNT0 (DMA_BASE+0x0220)
++#define DMAMP_RX_5_BASE0 (DMA_BASE+0x0224)
++#define DMAMP_RX_5_CURRENT0 (DMA_BASE+0x0228)
++#define DMAMP_RX_5_MAXCNT1 (DMA_BASE+0x0230)
++#define DMAMP_RX_5_BASE1 (DMA_BASE+0x0234)
++#define DMAMP_RX_5_CURRENT1 (DMA_BASE+0x0238)
++
++#define DMAMP_TX_4_CONTROL (DMA_BASE+0x0240)
++#define DMAMP_TX_4_INTERRUPT (DMA_BASE+0x0244)
++#define DMAMP_TX_4_PPALLOC (DMA_BASE+0x0248)
++#define DMAMP_TX_4_STATUS (DMA_BASE+0x024C)
++#define DMAMP_TX_4_REMAIN (DMA_BASE+0x0254)
++#define DMAMP_TX_4_MAXCNT0 (DMA_BASE+0x0260)
++#define DMAMP_TX_4_BASE0 (DMA_BASE+0x0264)
++#define DMAMP_TX_4_CURRENT0 (DMA_BASE+0x0268)
++#define DMAMP_TX_4_MAXCNT1 (DMA_BASE+0x0270)
++#define DMAMP_TX_4_BASE1 (DMA_BASE+0x0274)
++#define DMAMP_TX_4_CURRENT1 (DMA_BASE+0x0278)
++
++#define DMAMP_RX_7_CONTROL (DMA_BASE+0x0280)
++#define DMAMP_RX_7_INTERRUPT (DMA_BASE+0x0284)
++#define DMAMP_RX_7_PPALLOC (DMA_BASE+0x0288)
++#define DMAMP_RX_7_STATUS (DMA_BASE+0x028C)
++#define DMAMP_RX_7_REMAIN (DMA_BASE+0x0294)
++#define DMAMP_RX_7_MAXCNT0 (DMA_BASE+0x02A0)
++#define DMAMP_RX_7_BASE0 (DMA_BASE+0x02A4)
++#define DMAMP_RX_7_CURRENT0 (DMA_BASE+0x02A8)
++#define DMAMP_RX_7_MAXCNT1 (DMA_BASE+0x02B0)
++#define DMAMP_RX_7_BASE1 (DMA_BASE+0x02B4)
++#define DMAMP_RX_7_CURRENT1 (DMA_BASE+0x02B8)
++
++#define DMAMP_TX_6_CONTROL (DMA_BASE+0x02C0)
++#define DMAMP_TX_6_INTERRUPT (DMA_BASE+0x02C4)
++#define DMAMP_TX_6_PPALLOC (DMA_BASE+0x02C8)
++#define DMAMP_TX_6_STATUS (DMA_BASE+0x02CC)
++#define DMAMP_TX_6_REMAIN (DMA_BASE+0x02D4)
++#define DMAMP_TX_6_MAXCNT0 (DMA_BASE+0x02E0)
++#define DMAMP_TX_6_BASE0 (DMA_BASE+0x02E4)
++#define DMAMP_TX_6_CURRENT0 (DMA_BASE+0x02E8)
++#define DMAMP_TX_6_MAXCNT1 (DMA_BASE+0x02F0)
++#define DMAMP_TX_6_BASE1 (DMA_BASE+0x02F4)
++#define DMAMP_TX_6_CURRENT1 (DMA_BASE+0x02F8)
++
++#define DMAMP_RX_9_CONTROL (DMA_BASE+0x0300)
++#define DMAMP_RX_9_INTERRUPT (DMA_BASE+0x0304)
++#define DMAMP_RX_9_PPALLOC (DMA_BASE+0x0308)
++#define DMAMP_RX_9_STATUS (DMA_BASE+0x030C)
++#define DMAMP_RX_9_REMAIN (DMA_BASE+0x0314)
++#define DMAMP_RX_9_MAXCNT0 (DMA_BASE+0x0320)
++#define DMAMP_RX_9_BASE0 (DMA_BASE+0x0324)
++#define DMAMP_RX_9_CURRENT0 (DMA_BASE+0x0328)
++#define DMAMP_RX_9_MAXCNT1 (DMA_BASE+0x0330)
++#define DMAMP_RX_9_BASE1 (DMA_BASE+0x0334)
++#define DMAMP_RX_9_CURRENT1 (DMA_BASE+0x0338)
++
++#define DMAMP_TX_8_CONTROL (DMA_BASE+0x0340)
++#define DMAMP_TX_8_INTERRUPT (DMA_BASE+0x0344)
++#define DMAMP_TX_8_PPALLOC (DMA_BASE+0x0348)
++#define DMAMP_TX_8_STATUS (DMA_BASE+0x034C)
++#define DMAMP_TX_8_REMAIN (DMA_BASE+0x0354)
++#define DMAMP_TX_8_MAXCNT0 (DMA_BASE+0x0360)
++#define DMAMP_TX_8_BASE0 (DMA_BASE+0x0364)
++#define DMAMP_TX_8_CURRENT0 (DMA_BASE+0x0368)
++#define DMAMP_TX_8_MAXCNT1 (DMA_BASE+0x0370)
++#define DMAMP_TX_8_BASE1 (DMA_BASE+0x0374)
++#define DMAMP_TX_8_CURRENT1 (DMA_BASE+0x0378)
++
++#define DMA_ARBITRATION (DMA_BASE+0x0380)
++#define DMA_INTERRUPT (DMA_BASE+0x03C0)
++
++
++/*
++ * DMA Register Base addresses and Offsets
++ */
++#define DMA_M2P_TX_0_BASE DMAMP_TX_0_CONTROL
++#define DMA_M2P_RX_1_BASE DMAMP_RX_1_CONTROL
++#define DMA_M2P_TX_2_BASE DMAMP_TX_2_CONTROL
++#define DMA_M2P_RX_3_BASE DMAMP_RX_3_CONTROL
++#define DMA_M2M_0_BASE DMAMM_0_CONTROL
++#define DMA_M2M_1_BASE DMAMM_1_CONTROL
++#define DMA_M2P_RX_5_BASE DMAMP_RX_5_CONTROL
++#define DMA_M2P_TX_4_BASE DMAMP_TX_4_CONTROL
++#define DMA_M2P_RX_7_BASE DMAMP_RX_7_CONTROL
++#define DMA_M2P_TX_6_BASE DMAMP_TX_6_CONTROL
++#define DMA_M2P_RX_9_BASE DMAMP_RX_9_CONTROL
++#define DMA_M2P_TX_8_BASE DMAMP_TX_8_CONTROL
++
++#define M2P_OFFSET_CONTROL 0x0000
++#define M2P_OFFSET_INTERRUPT 0x0004
++#define M2P_OFFSET_PPALLOC 0x0008
++#define M2P_OFFSET_STATUS 0x000C
++#define M2P_OFFSET_REMAIN 0x0014
++#define M2P_OFFSET_MAXCNT0 0x0020
++#define M2P_OFFSET_BASE0 0x0024
++#define M2P_OFFSET_CURRENT0 0x0028
++#define M2P_OFFSET_MAXCNT1 0x0030
++#define M2P_OFFSET_BASE1 0x0034
++#define M2P_OFFSET_CURRENT1 0x0038
++
++#define M2M_OFFSET_CONTROL 0x0000
++#define M2M_OFFSET_INTERRUPT 0x0004
++#define M2M_OFFSET_STATUS 0x000C
++#define M2M_OFFSET_BCR0 0x0010
++#define M2M_OFFSET_BCR1 0x0014
++#define M2M_OFFSET_SAR_BASE0 0x0018
++#define M2M_OFFSET_SAR_BASE1 0x001C
++#define M2M_OFFSET_SAR_CURRENT0 0x0024
++#define M2M_OFFSET_SAR_CURRENT1 0x0028
++#define M2M_OFFSET_DAR_BASE0 0x002C
++#define M2M_OFFSET_DAR_BASE1 0x0030
++#define M2M_OFFSET_DAR_CURRENT0 0x0034
++#define M2M_OFFSET_DAR_CURRENT1 0x003C
++
++
++
++/* 8003_0000 - 8003_ffff: Raster */
++#define RASTER_OFFSET 0x030000
++#define RASTER_BASE (EP93XX_AHB_VIRT_BASE|RASTER_OFFSET)
++#define VLINESTOTAL (RASTER_BASE+0x00)
++#define VSYNCSTRTSTOP (RASTER_BASE+0x04)
++#define VACTIVESTRTSTOP (RASTER_BASE+0x08)
++#define VCLKSTRTSTOP (RASTER_BASE+0x0C)
++#define HCLKSTOTAL (RASTER_BASE+0x10)
++#define HSYNCSTRTSTOP (RASTER_BASE+0x14)
++#define HACTIVESTRTSTOP (RASTER_BASE+0x18)
++#define HCLKSTRTSTOP (RASTER_BASE+0x1C)
++#define BRIGHTNESS (RASTER_BASE+0x20)
++#define VIDEOATTRIBS (RASTER_BASE+0x24)
++#define VIDSCRNPAGE (RASTER_BASE+0x28)
++#define VIDSCRNHPG (RASTER_BASE+0x2C)
++#define SCRNLINES (RASTER_BASE+0x30)
++#define LINELENGTH (RASTER_BASE+0x34)
++#define VLINESTEP (RASTER_BASE+0x38)
++#define LINECARRY (RASTER_BASE+0x3C)
++#define BLINKRATE (RASTER_BASE+0x40)
++#define BLINKMASK (RASTER_BASE+0x44)
++#define BLINKPATTRN (RASTER_BASE+0x48)
++#define PATTRNMASK (RASTER_BASE+0x4C)
++#define BG_OFFSET (RASTER_BASE+0x50)
++#define PIXELMODE (RASTER_BASE+0x54)
++#define PARLLIFOUT (RASTER_BASE+0x58)
++#define PARLLIFIN (RASTER_BASE+0x5C)
++#define CURSOR_ADR_START (RASTER_BASE+0x60)
++#define CURSOR_ADR_RESET (RASTER_BASE+0x64)
++#define CURSORSIZE (RASTER_BASE+0x68)
++#define CURSORCOLOR1 (RASTER_BASE+0x6C)
++#define CURSORCOLOR2 (RASTER_BASE+0x70)
++#define CURSORXYLOC (RASTER_BASE+0x74)
++#define CURSOR_DHSCAN_LH_YLOC (RASTER_BASE+0x78)
++#define RASTER_SWLOCK (RASTER_BASE+0x7C)
++#define GS_LUT (RASTER_BASE+0x80)
++#define RASTER_TCR (RASTER_BASE+0x100)
++#define RASTER_TISRA (RASTER_BASE+0x104)
++#define RASTER_TISRB (RASTER_BASE+0x108)
++#define CURSOR_TISR (RASTER_BASE+0x10C)
++#define RASTER_TOCRA (RASTER_BASE+0x110)
++#define RASTER_TOCRB (RASTER_BASE+0x114)
++#define FIFO_TOCRA (RASTER_BASE+0x118)
++#define FIFO_TOCRB (RASTER_BASE+0x11C)
++#define BLINK_TISR (RASTER_BASE+0x120)
++#define DAC_TISRA (RASTER_BASE+0x124)
++#define DAC_TISRB (RASTER_BASE+0x128)
++#define SHIFT_TISR (RASTER_BASE+0x12C)
++#define DACMUX_TOCRA (RASTER_BASE+0x130)
++#define DACMUX_TOCRB (RASTER_BASE+0x134)
++#define PELMUX_TOCR (RASTER_BASE+0x138)
++#define VIDEO_TOCRA (RASTER_BASE+0x13C)
++#define VIDEO_TOCRB (RASTER_BASE+0x140)
++#define YCRCB_TOCR (RASTER_BASE+0x144)
++#define CURSOR_TOCR (RASTER_BASE+0x148)
++#define VIDEO_TOCRC (RASTER_BASE+0x14C)
++#define SHIFT_TOCR (RASTER_BASE+0x150)
++#define BLINK_TOCR (RASTER_BASE+0x154)
++#define RASTER_TCER (RASTER_BASE+0x180)
++#define SIGVAL (RASTER_BASE+0x200)
++#define SIGCTL (RASTER_BASE+0x204)
++#define VSIGSTRTSTOP (RASTER_BASE+0x208)
++#define HSIGSTRTSTOP (RASTER_BASE+0x20C)
++#define SIGCLR (RASTER_BASE+0x210)
++#define ACRATE (RASTER_BASE+0x214)
++#define LUTCONT (RASTER_BASE+0x218)
++#define VBLANKSTRTSTOP (RASTER_BASE+0x228)
++#define HBLANKSTRTSTOP (RASTER_BASE+0x22C)
++#define LUT (RASTER_BASE+0x400)
++#define CURSORBLINK1 (RASTER_BASE+0x21C)
++#define CURSORBLINK2 (RASTER_BASE+0x220)
++#define CURSORBLINK (RASTER_BASE+0x224)
++#define EOLOFFSET (RASTER_BASE+0x230)
++#define FIFOLEVEL (RASTER_BASE+0x234)
++#define GS_LUT2 (RASTER_BASE+0x280)
++#define GS_LUT3 (RASTER_BASE+0x300)
++#define COLOR_LUT (RASTER_BASE+0x400)
++
++/* 8004_0000 - 8004_ffff: Graphics */
++#define GRAPHICS_OFFSET 0x040000
++#define GRAPHICS_BASE (EP93XX_AHB_VIRT_BASE|GRAPHICS_OFFSET)
++#define SRCPIXELSTRT (GRAPHICS_BASE+0x00)
++#define DESTPIXELSTRT (GRAPHICS_BASE+0x04)
++#define BLKSRCSTRT (GRAPHICS_BASE+0x08)
++#define BLKDSTSTRT (GRAPHICS_BASE+0x0C)
++#define BLKSRCWIDTH (GRAPHICS_BASE+0x10)
++#define SRCLINELENGTH (GRAPHICS_BASE+0x14)
++#define BLKDESTWIDTH (GRAPHICS_BASE+0x18)
++#define BLKDESTHEIGHT (GRAPHICS_BASE+0x1C)
++#define DESTLINELENGTH (GRAPHICS_BASE+0x20)
++#define BLOCKCTRL (GRAPHICS_BASE+0x24)
++#define TRANSPATTRN (GRAPHICS_BASE+0x28)
++#define BLOCKMASK (GRAPHICS_BASE+0x2C)
++#define BACKGROUND (GRAPHICS_BASE+0x30)
++#define LINEINC (GRAPHICS_BASE+0x34)
++#define LINEINIT (GRAPHICS_BASE+0x38)
++#define LINEPATTRN (GRAPHICS_BASE+0x3C)
++
++
++/* 800B_0000 - 800B_FFFF: VIC 0 */
++#define VIC0_OFFSET 0x0B0000
++#define VIC0_BASE (EP93XX_AHB_VIRT_BASE|VIC0_OFFSET)
++#define VIC0 (VIC0_BASE+0x000)
++#define VIC0IRQSTATUS (VIC0_BASE+0x000) /* R IRQ status register */
++#define VIC0FIQSTATUS (VIC0_BASE+0x004) /* R FIQ status register */
++#define VIC0RAWINTR (VIC0_BASE+0x008) /* R Raw interrupt status register */
++#define VIC0INTSELECT (VIC0_BASE+0x00C) /* R/W Interrupt select register */
++#define VIC0INTENABLE (VIC0_BASE+0x010) /* R/W Interrupt enable register */
++#define VIC0INTENCLEAR (VIC0_BASE+0x014) /* W Interrupt enable clear register */
++#define VIC0SOFTINT (VIC0_BASE+0x018) /* R/W Software interrupt register */
++#define VIC0SOFTINTCLEAR (VIC0_BASE+0x01C) /* R/W Software interrupt clear register */
++#define VIC0PROTECTION (VIC0_BASE+0x020) /* R/W Protection enable register */
++#define VIC0VECTADDR (VIC0_BASE+0x030) /* R/W Vector address register */
++#define VIC0DEFVECTADDR (VIC0_BASE+0x034) /* R/W Default vector address register */
++#define VIC0VECTADDR00 (VIC0_BASE+0x100) /* R/W Vector address 00 register */
++#define VIC0VECTADDR01 (VIC0_BASE+0x104) /* R/W Vector address 01 register */
++#define VIC0VECTADDR02 (VIC0_BASE+0x108) /* R/W Vector address 02 register */
++#define VIC0VECTADDR03 (VIC0_BASE+0x10C) /* R/W Vector address 03 register */
++#define VIC0VECTADDR04 (VIC0_BASE+0x110) /* R/W Vector address 04 register */
++#define VIC0VECTADDR05 (VIC0_BASE+0x114) /* R/W Vector address 05 register */
++#define VIC0VECTADDR06 (VIC0_BASE+0x118) /* R/W Vector address 06 register */
++#define VIC0VECTADDR07 (VIC0_BASE+0x11C) /* R/W Vector address 07 register */
++#define VIC0VECTADDR08 (VIC0_BASE+0x120) /* R/W Vector address 08 register */
++#define VIC0VECTADDR09 (VIC0_BASE+0x124) /* R/W Vector address 09 register */
++#define VIC0VECTADDR10 (VIC0_BASE+0x128) /* R/W Vector address 10 register */
++#define VIC0VECTADDR11 (VIC0_BASE+0x12C) /* R/W Vector address 11 register */
++#define VIC0VECTADDR12 (VIC0_BASE+0x130) /* R/W Vector address 12 register */
++#define VIC0VECTADDR13 (VIC0_BASE+0x134) /* R/W Vector address 13 register */
++#define VIC0VECTADDR14 (VIC0_BASE+0x138) /* R/W Vector address 14 register */
++#define VIC0VECTADDR15 (VIC0_BASE+0x13C) /* R/W Vector address 15 register */
++#define VIC0VECTCNTL00 (VIC0_BASE+0x200) /* R/W Vector control 00 register */
++#define VIC0VECTCNTL01 (VIC0_BASE+0x204) /* R/W Vector control 01 register */
++#define VIC0VECTCNTL02 (VIC0_BASE+0x208) /* R/W Vector control 02 register */
++#define VIC0VECTCNTL03 (VIC0_BASE+0x20C) /* R/W Vector control 03 register */
++#define VIC0VECTCNTL04 (VIC0_BASE+0x210) /* R/W Vector control 04 register */
++#define VIC0VECTCNTL05 (VIC0_BASE+0x214) /* R/W Vector control 05 register */
++#define VIC0VECTCNTL06 (VIC0_BASE+0x218) /* R/W Vector control 06 register */
++#define VIC0VECTCNTL07 (VIC0_BASE+0x21C) /* R/W Vector control 07 register */
++#define VIC0VECTCNTL08 (VIC0_BASE+0x220) /* R/W Vector control 08 register */
++#define VIC0VECTCNTL09 (VIC0_BASE+0x224) /* R/W Vector control 09 register */
++#define VIC0VECTCNTL10 (VIC0_BASE+0x228) /* R/W Vector control 10 register */
++#define VIC0VECTCNTL11 (VIC0_BASE+0x22C) /* R/W Vector control 11 register */
++#define VIC0VECTCNTL12 (VIC0_BASE+0x230) /* R/W Vector control 12 register */
++#define VIC0VECTCNTL13 (VIC0_BASE+0x234) /* R/W Vector control 13 register */
++#define VIC0VECTCNTL14 (VIC0_BASE+0x238) /* R/W Vector control 14 register */
++#define VIC0VECTCNTL15 (VIC0_BASE+0x23C) /* R/W Vector control 15 register */
++#define VIC0ITCR (VIC0_BASE+0x300) /* R/W Test control register */
++#define VIC0ITIP1 (VIC0_BASE+0x304) /* R Test input register (nVICIRQIN/nVICFIQIN)*/
++#define VIC0ITIP2 (VIC0_BASE+0x308) /* R Test input register (VICVECTADDRIN) */
++#define VIC0ITOP1 (VIC0_BASE+0x30C) /* R Test output register (nVICIRQ/nVICFIQ) */
++#define VIC0ITOP2 (VIC0_BASE+0x310) /* R Test output register (VICVECTADDROUT) */
++#define VIC0PERIPHID0 (VIC0_BASE+0xFE0) /* R Peripheral ID register bits 7:0 */
++#define VIC0PERIPHID1 (VIC0_BASE+0xFE4) /* R Peripheral ID register bits 15:8 */
++#define VIC0PERIPHID2 (VIC0_BASE+0xFE8) /* R Peripheral ID register bits 23:16 */
++#define VIC0PERIPHID3 (VIC0_BASE+0xFEC) /* R Peripheral ID register bits 31:24 */
++
++
++/* 800C_0000 - 800C_FFFF: VIC 0 */
++#define VIC1_OFFSET 0x0C0000
++#define VIC1_BASE (EP93XX_AHB_VIRT_BASE|VIC1_OFFSET)
++#define VIC1 (VIC1_BASE+0x000)
++#define VIC1IRQSTATUS (VIC1_BASE+0x000) /* R IRQ status register */
++#define VIC1FIQSTATUS (VIC1_BASE+0x004) /* R FIQ status register */
++#define VIC1RAWINTR (VIC1_BASE+0x008) /* R Raw interrupt status register */
++#define VIC1INTSELECT (VIC1_BASE+0x00C) /* R/W Interrupt select register */
++#define VIC1INTENABLE (VIC1_BASE+0x010) /* R/W Interrupt enable register */
++#define VIC1INTENCLEAR (VIC1_BASE+0x014) /* W Interrupt enable clear register */
++#define VIC1SOFTINT (VIC1_BASE+0x018) /* R/W Software interrupt register */
++#define VIC1SOFTINTCLEAR (VIC1_BASE+0x01C) /* R/W Software interrupt clear register */
++#define VIC1PROTECTION (VIC1_BASE+0x020) /* R/W Protection enable register */
++#define VIC1VECTADDR (VIC1_BASE+0x030) /* R/W Vector address register */
++#define VIC1DEFVECTADDR (VIC1_BASE+0x034) /* R/W Default vector address register */
++#define VIC1VECTADDR00 (VIC1_BASE+0x100) /* R/W Vector address 00 register */
++#define VIC1VECTADDR01 (VIC1_BASE+0x104) /* R/W Vector address 01 register */
++#define VIC1VECTADDR02 (VIC1_BASE+0x108) /* R/W Vector address 02 register */
++#define VIC1VECTADDR03 (VIC1_BASE+0x10C) /* R/W Vector address 03 register */
++#define VIC1VECTADDR04 (VIC1_BASE+0x110) /* R/W Vector address 04 register */
++#define VIC1VECTADDR05 (VIC1_BASE+0x114) /* R/W Vector address 05 register */
++#define VIC1VECTADDR06 (VIC1_BASE+0x118) /* R/W Vector address 06 register */
++#define VIC1VECTADDR07 (VIC1_BASE+0x11C) /* R/W Vector address 07 register */
++#define VIC1VECTADDR08 (VIC1_BASE+0x120) /* R/W Vector address 08 register */
++#define VIC1VECTADDR09 (VIC1_BASE+0x124) /* R/W Vector address 09 register */
++#define VIC1VECTADDR10 (VIC1_BASE+0x128) /* R/W Vector address 10 register */
++#define VIC1VECTADDR11 (VIC1_BASE+0x12C) /* R/W Vector address 11 register */
++#define VIC1VECTADDR12 (VIC1_BASE+0x130) /* R/W Vector address 12 register */
++#define VIC1VECTADDR13 (VIC1_BASE+0x134) /* R/W Vector address 13 register */
++#define VIC1VECTADDR14 (VIC1_BASE+0x138) /* R/W Vector address 14 register */
++#define VIC1VECTADDR15 (VIC1_BASE+0x13C) /* R/W Vector address 15 register */
++#define VIC1VECTCNTL00 (VIC1_BASE+0x200) /* R/W Vector control 00 register */
++#define VIC1VECTCNTL01 (VIC1_BASE+0x204) /* R/W Vector control 01 register */
++#define VIC1VECTCNTL02 (VIC1_BASE+0x208) /* R/W Vector control 02 register */
++#define VIC1VECTCNTL03 (VIC1_BASE+0x20C) /* R/W Vector control 03 register */
++#define VIC1VECTCNTL04 (VIC1_BASE+0x210) /* R/W Vector control 04 register */
++#define VIC1VECTCNTL05 (VIC1_BASE+0x214) /* R/W Vector control 05 register */
++#define VIC1VECTCNTL06 (VIC1_BASE+0x218) /* R/W Vector control 06 register */
++#define VIC1VECTCNTL07 (VIC1_BASE+0x21C) /* R/W Vector control 07 register */
++#define VIC1VECTCNTL08 (VIC1_BASE+0x220) /* R/W Vector control 08 register */
++#define VIC1VECTCNTL09 (VIC1_BASE+0x224) /* R/W Vector control 09 register */
++#define VIC1VECTCNTL10 (VIC1_BASE+0x228) /* R/W Vector control 10 register */
++#define VIC1VECTCNTL11 (VIC1_BASE+0x22C) /* R/W Vector control 11 register */
++#define VIC1VECTCNTL12 (VIC1_BASE+0x230) /* R/W Vector control 12 register */
++#define VIC1VECTCNTL13 (VIC1_BASE+0x234) /* R/W Vector control 13 register */
++#define VIC1VECTCNTL14 (VIC1_BASE+0x238) /* R/W Vector control 14 register */
++#define VIC1VECTCNTL15 (VIC1_BASE+0x23C) /* R/W Vector control 15 register */
++#define VIC1ITCR (VIC1_BASE+0x300) /* R/W Test control register */
++#define VIC1ITIP1 (VIC1_BASE+0x304) /* R Test input register (nVICIRQIN/nVICFIQIN)*/
++#define VIC1ITIP2 (VIC1_BASE+0x308) /* R Test input register (VICVECTADDRIN) */
++#define VIC1ITOP1 (VIC1_BASE+0x30C) /* R Test output register (nVICIRQ/nVICFIQ) */
++#define VIC1ITOP2 (VIC1_BASE+0x310) /* R Test output register (VICVECTADDROUT) */
++#define VIC1PERIPHID0 (VIC1_BASE+0xFE0) /* R Peripheral ID register bits 7:0 */
++#define VIC1PERIPHID1 (VIC1_BASE+0xFE4) /* R Peripheral ID register bits 15:8 */
++#define VIC1PERIPHID2 (VIC1_BASE+0xFE8) /* R Peripheral ID register bits 23:16 */
++#define VIC1PERIPHID3 (VIC1_BASE+0xFEC) /* R Peripheral ID register bits 31:24 */
++
++
++///////////////////////////////////////////////////////////////////////////////////////////////////////////
++///////////////////////////////////APB/////////////////////////////////////////////////////////////////////
++///////////////////////////////////////////////////////////////////////////////////////////////////////////
++/* 8081_0000 - 8081_ffff: Timers */
++#define TIMERS_OFFSET 0x010000
++#define TIMERS_BASE (EP93XX_APB_VIRT_BASE|TIMERS_OFFSET)
++
++#define TIMER1LOAD (TIMERS_BASE+0x00)
++#define TIMER1VALUE (TIMERS_BASE+0x04)
++#define TIMER1CONTROL (TIMERS_BASE+0x08)
++#define TIMER1CLEAR (TIMERS_BASE+0x0C)
++#define TIMER1TEST (TIMERS_BASE+0x10)
++
++#define TIMER2LOAD (TIMERS_BASE+0x20)
++#define TIMER2VALUE (TIMERS_BASE+0x24)
++#define TIMER2CONTROL (TIMERS_BASE+0x28)
++#define TIMER2CLEAR (TIMERS_BASE+0x2C)
++#define TIMER2TEST (TIMERS_BASE+0x30)
++
++#define TIMER3LOAD (TIMERS_BASE+0x80)
++#define TIMER3VALUE (TIMERS_BASE+0x84)
++#define TIMER3CONTROL (TIMERS_BASE+0x88)
++#define TIMER3CLEAR (TIMERS_BASE+0x8C)
++#define TIMER3TEST (TIMERS_BASE+0x90)
++
++#define TTIMERBZCONT (TIMERS_BASE+0x40)
++
++#define TIMER4VALUELOW (TIMERS_BASE+0x60)
++#define TIMER4VALUEHIGH (TIMERS_BASE+0x64)
++
++
++/* 8082_0000 - 8082_ffff: I2S */
++#define I2S_OFFSET 0x020000
++#define I2S_BASE (EP93XX_APB_VIRT_BASE|I2S_OFFSET)
++#define I2S_PHYS_BASE (EP93XX_APB_PHYS_BASE + I2S_OFFSET)
++
++
++
++#define I2STxClkCfg (I2S_BASE+0x00) /* 8082.0000 R/W Transmitter clock config register */
++#define I2SRxClkCfg (I2S_BASE+0x04) /* 8082.0004 R/W Receiver clock config register */
++#define I2SGlSts (I2S_BASE+0x08) /* 8082.0008 R/W SAI Global Status register. */
++#define I2SGlCtrl (I2S_BASE+0x0C) /* 8082.000C R/W SAI Global Control register */
++
++#define I2STX0Lft (I2S_BASE+0x10) /* 8082.0010 R/W Left TX data reg for channel 0 */
++#define I2STX0Rt (I2S_BASE+0x14) /* 8082.0014 R/W Right TX data reg for channel 0 */
++#define I2STX1Lft (I2S_BASE+0x18) /* 8082.0018 R/W Left TX data reg for channel 1 */
++#define I2STX1Rt (I2S_BASE+0x1C) /* 8082.001C R/W Right TX data reg for channel 1 */
++#define I2STX2Lft (I2S_BASE+0x20) /* 8082.0020 R/W Left TX data reg for channel 2 */
++#define I2STX2Rt (I2S_BASE+0x24) /* 8082.0024 R/W Right TX data reg for channel 2 */
++
++#define I2STXLinCtrlData (I2S_BASE+0x28) /* 8082.0028 R/W TX Line Control data register */
++#define I2STXCtrl (I2S_BASE+0x2C) /* 8082.002C R/W TX Control register */
++#define I2STXWrdLen (I2S_BASE+0x30) /* 8082.0030 R/W TX Word Length */
++#define I2STX0En (I2S_BASE+0x34) /* 8082.0034 R/W TX0 Channel Enable */
++#define I2STX1En (I2S_BASE+0x38) /* 8082.0038 R/W TX1 Channel Enable */
++#define I2STX2En (I2S_BASE+0x3C) /* 8082.003C R/W TX2 Channel Enable */
++
++#define I2SRX0Lft (I2S_BASE+0x40) /* 8082.0040 R Left RX data reg for channel 0 */
++#define I2SRX0Rt (I2S_BASE+0x44) /* 8082.0044 R Right RX data reg for channel 0 */
++#define I2SRX1Lft (I2S_BASE+0x48) /* 8082.0048 R Left RX data reg for channel 1 */
++#define I2SRX1Rt (I2S_BASE+0x4C) /* 8082.004c R Right RX data reg for channel 1 */
++#define I2SRX2Lft (I2S_BASE+0x50) /* 8082.0050 R Left RX data reg for channel 2 */
++#define I2SRX2Rt (I2S_BASE+0x54) /* 8082.0054 R Right RX data reg for channel 2 */
++
++#define I2SRXLinCtrlData (I2S_BASE+0x58) /* 8082.0058 R/W RX Line Control data register */
++#define I2SRXCtrl (I2S_BASE+0x5C) /* 8082.005C R/W RX Control register */
++#define I2SRXWrdLen (I2S_BASE+0x60) /* 8082.0060 R/W RX Word Length */
++#define I2SRX0En (I2S_BASE+0x64) /* 8082.0064 R/W RX0 Channel Enable */
++#define I2SRX1En (I2S_BASE+0x68) /* 8082.0068 R/W RX1 Channel Enable */
++#define I2SRX2En (I2S_BASE+0x6C) /* 8082.006C R/W RX2 Channel Enable */
++
++
++
++
++/* 8084_0000 - 8084_ffff: GPIO */
++#define GPIO_OFFSET 0x040000
++#define GPIO_BASE (EP93XX_APB_VIRT_BASE|GPIO_OFFSET)
++#define GPIO_PADR (GPIO_BASE+0x00)
++#define GPIO_PBDR (GPIO_BASE+0x04)
++#define GPIO_PCDR (GPIO_BASE+0x08)
++#define GPIO_PDDR (GPIO_BASE+0x0C)
++#define GPIO_PADDR (GPIO_BASE+0x10)
++#define GPIO_PBDDR (GPIO_BASE+0x14)
++#define GPIO_PCDDR (GPIO_BASE+0x18)
++#define GPIO_PDDDR (GPIO_BASE+0x1C)
++#define GPIO_PEDR (GPIO_BASE+0x20)
++#define GPIO_PEDDR (GPIO_BASE+0x24)
++// #define 0x8084.0028 Reserved
++// #define 0x8084.002C Reserved
++#define GPIO_PFDR (GPIO_BASE+0x30)
++#define GPIO_PFDDR (GPIO_BASE+0x34)
++#define GPIO_PGDR (GPIO_BASE+0x38)
++#define GPIO_PGDDR (GPIO_BASE+0x3C)
++#define GPIO_PHDR (GPIO_BASE+0x40)
++#define GPIO_PHDDR (GPIO_BASE+0x44)
++// #define 0x8084.0048 RAZ RAZ
++#define GPIO_FINTTYPE1 (GPIO_BASE+0x4C)
++#define GPIO_FINTTYPE2 (GPIO_BASE+0x50)
++#define GPIO_FEOI (GPIO_BASE+0x54) /* WRITE ONLY - READ UNDEFINED */
++#define GPIO_FINTEN (GPIO_BASE+0x58)
++#define GPIO_INTSTATUSF (GPIO_BASE+0x5C)
++#define GPIO_RAWINTSTASUSF (GPIO_BASE+0x60)
++#define GPIO_FDB (GPIO_BASE+0x64)
++#define GPIO_PAPINDR (GPIO_BASE+0x68)
++#define GPIO_PBPINDR (GPIO_BASE+0x6C)
++#define GPIO_PCPINDR (GPIO_BASE+0x70)
++#define GPIO_PDPINDR (GPIO_BASE+0x74)
++#define GPIO_PEPINDR (GPIO_BASE+0x78)
++#define GPIO_PFPINDR (GPIO_BASE+0x7C)
++#define GPIO_PGPINDR (GPIO_BASE+0x80)
++#define GPIO_PHPINDR (GPIO_BASE+0x84)
++#define GPIO_AINTTYPE1 (GPIO_BASE+0x90)
++#define GPIO_AINTTYPE2 (GPIO_BASE+0x94)
++#define GPIO_AEOI (GPIO_BASE+0x98) /* WRITE ONLY - READ UNDEFINED */
++#define GPIO_AINTEN (GPIO_BASE+0x9C)
++#define GPIO_INTSTATUSA (GPIO_BASE+0xA0)
++#define GPIO_RAWINTSTSTISA (GPIO_BASE+0xA4)
++#define GPIO_ADB (GPIO_BASE+0xA8)
++#define GPIO_BINTTYPE1 (GPIO_BASE+0xAC)
++#define GPIO_BINTTYPE2 (GPIO_BASE+0xB0)
++#define GPIO_BEOI (GPIO_BASE+0xB4) /* WRITE ONLY - READ UNDEFINED */
++#define GPIO_BINTEN (GPIO_BASE+0xB8)
++#define GPIO_INTSTATUSB (GPIO_BASE+0xBC)
++#define GPIO_RAWINTSTSTISB (GPIO_BASE+0xC0)
++#define GPIO_BDB (GPIO_BASE+0xC4)
++#define GPIO_EEDRIVE (GPIO_BASE+0xC8)
++//#define Reserved (GPIO_BASE+0xCC)
++#define GPIO_TCR (GPIO_BASE+0xD0) /* Test Registers */
++#define GPIO_TISRA (GPIO_BASE+0xD4) /* Test Registers */
++#define GPIO_TISRB (GPIO_BASE+0xD8) /* Test Registers */
++#define GPIO_TISRC (GPIO_BASE+0xDC) /* Test Registers */
++#define GPIO_TISRD (GPIO_BASE+0xE0) /* Test Registers */
++#define GPIO_TISRE (GPIO_BASE+0xE4) /* Test Registers */
++#define GPIO_TISRF (GPIO_BASE+0xE8) /* Test Registers */
++#define GPIO_TISRG (GPIO_BASE+0xEC) /* Test Registers */
++#define GPIO_TISRH (GPIO_BASE+0xF0) /* Test Registers */
++#define GPIO_TCER (GPIO_BASE+0xF4) /* Test Registers */
++
++
++/* 8088_0000 - 8088_ffff: Ac97 Controller (AAC) */
++#define AC97_OFFSET 0x080000
++#define AC97_BASE (EP93XX_APB_VIRT_BASE|AC97_OFFSET)
++#define EP93XX_AC97_PHY_BASE (EP93XX_APB_PHYS_BASE|AC97_OFFSET)
++#define AC97DR1 (AC97_BASE+0x00) /* 8088.0000 R/W Data read or written from/to FIFO1 */
++#define AC97RXCR1 (AC97_BASE+0x04) /* 8088.0004 R/W Control register for receive */
++#define AC97TXCR1 (AC97_BASE+0x08) /* 8088.0008 R/W Control register for transmit */
++#define AC97SR1 (AC97_BASE+0x0C) /* 8088.000C R Status register */
++#define AC97RISR1 (AC97_BASE+0x10) /* 8088.0010 R Raw interrupt status register */
++#define AC97ISR1 (AC97_BASE+0x14) /* 8088.0014 R Interrupt Status */
++#define AC97IE1 (AC97_BASE+0x18) /* 8088.0018 R/W Interrupt Enable */
++ /* 8088.001C Reserved - RAZ */
++#define AC97DR2 (AC97_BASE+0x20) /* 8088.0020 R/W Data read or written from/to FIFO2 */
++#define AC97RXCR2 (AC97_BASE+0x24) /* 8088.0024 R/W Control register for receive */
++#define AC97TXCR2 (AC97_BASE+0x28) /* 8088.0028 R/W Control register for transmit */
++#define AC97SR2 (AC97_BASE+0x2C) /* 8088.002C R Status register */
++#define AC97RISR2 (AC97_BASE+0x30) /* 8088.0030 R Raw interrupt status register */
++#define AC97ISR2 (AC97_BASE+0x34) /* 8088.0034 R Interrupt Status */
++#define AC97IE2 (AC97_BASE+0x38) /* 8088.0038 R/W Interrupt Enable */
++ /* 8088.003C Reserved - RAZ */
++#define AC97DR3 (AC97_BASE+0x40) /* 8088.0040 R/W Data read or written from/to FIFO3. */
++#define AC97RXCR3 (AC97_BASE+0x44) /* 8088.0044 R/W Control register for receive */
++#define AC97TXCR3 (AC97_BASE+0x48) /* 8088.0048 R/W Control register for transmit */
++#define AC97SR3 (AC97_BASE+0x4C) /* 8088.004C R Status register */
++#define AC97RISR3 (AC97_BASE+0x50) /* 8088.0050 R Raw interrupt status register */
++#define AC97ISR3 (AC97_BASE+0x54) /* 8088.0054 R Interrupt Status */
++#define AC97IE3 (AC97_BASE+0x58) /* 8088.0058 R/W Interrupt Enable */
++ /* 8088.005C Reserved - RAZ */
++#define AC97DR2 (AC97_BASE+0x20) /* 8088.0020 R/W Data read or written from/to FIFO2 */
++#define AC97RXCR2 (AC97_BASE+0x24) /* 8088.0024 R/W Control register for receive */
++#define AC97TXCR2 (AC97_BASE+0x28) /* 8088.0028 R/W Control register for transmit */
++#define AC97SR2 (AC97_BASE+0x2C) /* 8088.002C R Status register */
++#define AC97RISR2 (AC97_BASE+0x30) /* 8088.0030 R Raw interrupt status register */
++#define AC97ISR2 (AC97_BASE+0x34) /* 8088.0034 R Interrupt Status */
++#define AC97IE2 (AC97_BASE+0x38) /* 8088.0038 R/W Interrupt Enable */
++ /* 8088.003C Reserved - RAZ */
++#define AC97DR3 (AC97_BASE+0x40) /* 8088.0040 R/W Data read or written from/to FIFO3. */
++#define AC97RXCR3 (AC97_BASE+0x44) /* 8088.0044 R/W Control register for receive */
++#define AC97TXCR3 (AC97_BASE+0x48) /* 8088.0048 R/W Control register for transmit */
++#define AC97SR3 (AC97_BASE+0x4C) /* 8088.004C R Status register */
++#define AC97RISR3 (AC97_BASE+0x50) /* 8088.0050 R Raw interrupt status register */
++#define AC97ISR3 (AC97_BASE+0x54) /* 8088.0054 R Interrupt Status */
++#define AC97IE3 (AC97_BASE+0x58) /* 8088.0058 R/W Interrupt Enable */
++ /* 8088.005C Reserved - RAZ */
++#define AC97DR4 (AC97_BASE+0x60) /* 8088.0060 R/W Data read or written from/to FIFO4. */
++#define AC97RXCR4 (AC97_BASE+0x64) /* 8088.0064 R/W Control register for receive */
++#define AC97TXCR4 (AC97_BASE+0x68) /* 8088.0068 R/W Control register for transmit */
++#define AC97SR4 (AC97_BASE+0x6C) /* 8088.006C R Status register */
++#define AC97RISR4 (AC97_BASE+0x70) /* 8088.0070 R Raw interrupt status register */
++#define AC97ISR4 (AC97_BASE+0x74) /* 8088.0074 R Interrupt Status */
++#define AC97IE4 (AC97_BASE+0x78) /* 8088.0078 R/W Interrupt Enable */
++ /* 8088.007C Reserved - RAZ */
++#define AC97S1DATA (AC97_BASE+0x80) /* 8088.0080 R/W Data received/transmitted on SLOT1 */
++#define AC97S2DATA (AC97_BASE+0x84) /* 8088.0084 R/W Data received/transmitted on SLOT2 */
++#define AC97S12DATA (AC97_BASE+0x88) /* 8088.0088 R/W Data received/transmitted on SLOT12 */
++#define AC97RGIS (AC97_BASE+0x8C) /* 8088.008C R/W Raw Global interrupt status register*/
++#define AC97GIS (AC97_BASE+0x90) /* 8088.0090 R Global interrupt status register */
++#define AC97IM (AC97_BASE+0x94) /* 8088.0094 R/W Interrupt mask register */
++#define AC97EOI (AC97_BASE+0x98) /* 8088.0098 W Interrupt clear register */
++#define AC97GCR (AC97_BASE+0x9C) /* 8088.009C R/W Main Control register */
++#define AC97RESET (AC97_BASE+0xA0) /* 8088.00A0 R/W RESET control register. */
++#define AC97SYNC (AC97_BASE+0xA4) /* 8088.00A4 R/W SYNC control register. */
++#define AC97GCIS (AC97_BASE+0xA8) /* 8088.00A8 R Global chan FIFO int status register */
++
++
++/* 808A_0000 - 808A_ffff: SSP - (SPI) */
++#define SSP_OFFSET 0x0A0000
++#define SSP_BASE (EP93XX_APB_VIRT_BASE|SSP_OFFSET)
++#define SSPCR0 (SSP_BASE+0x00)
++#define SSPCR1 (SSP_BASE+0x04)
++#define SSPDR (SSP_BASE+0x08)
++#define SSPSR (SSP_BASE+0x0c)
++#define SSPCPSR (SSP_BASE+0x10)
++#define SSPIIR (SSP_BASE+0x14)
+
++
++/*808B_0000 - 808B_ffff: IrDA */
++#define IRDA_OFFSET 0x0B0000
++#define IRDA_BASE (EP93XX_APB_VIRT_BASE|IRDA_OFFSET)
++#define IrEnable (IRDA_BASE+0x00)
++#define IrCtrl (IRDA_BASE+0x04)
++#define IrAdrMatchVal (IRDA_BASE+0x08)
++#define IrFlag (IRDA_BASE+0x0C)
++#define IrData (IRDA_BASE+0x10)
++#define IrDataTail1 (IRDA_BASE+0x14)
++#define IrDataTail2 (IRDA_BASE+0x18)
++#define IrDataTail3 (IRDA_BASE+0x1c)
++#define IrRIB (IRDA_BASE+0x20)
++#define IrTR0 (IRDA_BASE+0x24)
++#define IrDMACR (IRDA_BASE+0x28)
++#define SIRTR0 (IRDA_BASE+0x30)
++#define MISR (IRDA_BASE+0x80)
++#define MIMR (IRDA_BASE+0x84)
++#define MIIR (IRDA_BASE+0x88)
++#define FISR (IRDA_BASE+0x180)
++#define FIMR (IRDA_BASE+0x184)
++#define FIIR (IRDA_BASE+0x188)
++
++
++/* 808C_0000 - 808C_ffff: UART1 */
++#define UART1_OFFSET 0x0C0000
++#define UART1_BASE (EP93XX_APB_VIRT_BASE|UART1_OFFSET)
++#define UART1_BASE_VIRT (EP93XX_APB_PHYS_BASE|UART1_OFFSET)
++#define UART1DR (UART1_BASE+0x000)
++#define UART1RSR (UART1_BASE+0x004)
++#define UART1ECR (UART1_BASE+0x004)
++#define UART1CR_H (UART1_BASE+0x008)
++#define UART1CR_M (UART1_BASE+0x00C)
++#define UART1CR_L (UART1_BASE+0x010)
++#define UART1CR (UART1_BASE+0x014)
++#define UART1FR (UART1_BASE+0x018)
++#define UART1IIR (UART1_BASE+0x01C)
++#define UART1ICR (UART1_BASE+0x01C)
++#define UART1ILPR (UART1_BASE+0x020)
++#define UART1DMACR (UART1_BASE+0x028)
++#define UART1TMR (UART1_BASE+0x084)
++#define UART1MCR (UART1_BASE+0x100)
++#define UART1MSR (UART1_BASE+0x104)
++#define UART1TCR (UART1_BASE+0x108)
++#define UART1TISR (UART1_BASE+0x10C)
++#define UART1TOCR (UART1_BASE+0x110)
++#define HDLC1CR (UART1_BASE+0x20c)
++#define HDLC1AMV (UART1_BASE+0x210)
++#define HDLC1AMSK (UART1_BASE+0x214)
++#define HDLC1RIB (UART1_BASE+0x218)
++#define HDLC1SR (UART1_BASE+0x21c)
++
++/* Offsets to the various UART registers */
++#define UARTDR 0x0000
++#define UARTRSR 0x0004
++#define UARTECR 0x0004
++#define UARTCR_H 0x0008
++#define UARTCR_M 0x000C
++#define UARTCR_L 0x0010
++#define UARTCR 0x0014
++#define UARTFR 0x0018
++#define UARTIIR 0x001C
++#define UARTICR 0x001C
++#define UARTMCR 0x0100
++#define UARTMSR 0x0104
++
++/* 808d_0000 - 808d_ffff: UART2 */
++#define UART2_OFFSET 0x0D0000
++#define UART2_BASE (EP93XX_APB_VIRT_BASE|UART2_OFFSET)
++#define UART2_BASE_VIRT (EP93XX_APB_PHYS_BASE|UART2_OFFSET)
++#define UART2DR (UART2_BASE+0x00)
++#define UART2RSR (UART2_BASE+0x04) /* Read */
++#define UART2ECR (UART2_BASE+0x04) /* Write */
++#define UART2CR_H (UART2_BASE+0x08)
++#define UART2CR_M (UART2_BASE+0x0C)
++#define UART2CR_L (UART2_BASE+0x10)
++#define UART2CR (UART2_BASE+0x14)
++#define UART2FR (UART2_BASE+0x18)
++#define UART2IIR (UART2_BASE+0x1C) /* Read */
++#define UART2ICR (UART2_BASE+0x1C) /* Write */
++#define UART2ILPR (UART2_BASE+0x20)
++#define UART2DMACR (UART2_BASE+0x28)
++#define UART2TMR (UART2_BASE+0x84)
++
++
++/* 808e_0000 - 808e_ffff: UART3 */
++#define UART3_OFFSET 0x0E0000
++#define UART3_BASE (EP93XX_APB_VIRT_BASE|UART3_OFFSET)
++#define UART3_BASE_VIRT (EP93XX_APB_PHYS_BASE|UART3_OFFSET)
++#define UART3DR (UART3_BASE+0x00)
++#define UART3RSR (UART3_BASE+0x04) /* Read */
++#define UART3ECR (UART3_BASE+0x04) /* Write */
++#define UART3CR_H (UART3_BASE+0x08)
++#define UART3CR_M (UART3_BASE+0x0C)
++#define UART3CR_L (UART3_BASE+0x10)
++#define UART3CR (UART3_BASE+0x14)
++#define UART3FR (UART3_BASE+0x18)
++#define UART3IIR (UART3_BASE+0x1C) /* Read */
++#define UART3ICR (UART3_BASE+0x1C) /* Write */
++#define UART3ILPR (UART3_BASE+0x20)
++#define UART3DMACR (UART3_BASE+0x28)
++#define UART3TCR (UART3_BASE+0x80)
++#define UART3TISR (UART3_BASE+0x88)
++#define UART3TOCR (UART3_BASE+0x8C)
++#define UART3TMR (UART3_BASE+0x84)
++#define UART3MCR (UART3_BASE+0x100) /* Modem Control Reg */
++#define UART3MSR (UART3_BASE+0x104) /* Modem Status Reg */
++
++#define UART3HDLCCR (UART3_BASE+0x20C) /* HDLC Registers */
++#define UART3HDLCAMV (UART3_BASE+0x210) /* HDLC Registers */
++#define UART3HDLCAMSK (UART3_BASE+0x214) /* HDLC Registers */
++#define UART3HDLCCRIB (UART3_BASE+0x218) /* HDLC Registers */
++#define UART3HDLCSR (UART3_BASE+0x21C) /* HDLC Registers */
++
++/* 808f_0000 - 808f_ffff: KEY Matrix */
++#define KEY_OFFSET 0x0F0000
++#define KEY_BASE (EP93XX_APB_VIRT_BASE|KEY_OFFSET)
++#define SCANINIT (KEY_BASE+0x00)
++#define KEY_DIAG (KEY_BASE+0x04)
++#define KEY_REG (KEY_BASE+0x08)
++#define KEY_TCR (KEY_BASE+0x10)
++#define KEY_TISR (KEY_BASE+0x14)
++#define KEY_TOCR (KEY_BASE+0x18)
++
++
++#define TOUCH_OFFSET 0x100000
++#define TOUCH_BASE (EP93XX_APB_VIRT_BASE|TOUCH_OFFSET)
++#define TSSetup (TOUCH_BASE+0x00) /* R/W touchscreen controller setup control register. */
++#define TSXYMaxMin (TOUCH_BASE+0x04) /* R/W touchscreen controller max/min register. */
++#define TSXYResult (TOUCH_BASE+0x08) /* R touchscreen controller result register. */
++#define TSDischarge (TOUCH_BASE+0x0C) /* LOCKED R/W touchscreen Switch Matrix control register. */
++#define TSXSample (TOUCH_BASE+0x10) /* LOCKED R/W touchscreen Switch Matrix control register. */
++#define TSYSample (TOUCH_BASE+0x14) /* LOCKED R/W touchscreen Switch Matrix control register. */
++#define TSDirect (TOUCH_BASE+0x18) /* LOCKED R/W touchscreen Switch Matrix control register. */
++#define TSDetect (TOUCH_BASE+0x1C) /* LOCKED R/W touchscreen Switch Matrix control register. */
++#define TSSWLock (TOUCH_BASE+0x20) /* NA R/W touchscreen software lock register. */
++#define TSSetup2 (TOUCH_BASE+0x24) /* R/W touchscreen setup control register #2. */
++
++
++/* 8093_0000 - 8093_ffff: CSC/Syscon PLL, clock control, & misc. stuff */
++#define SYSCON_OFFSET 0x130000
++#define SYSCON_BASE ((EP93XX_APB_VIRT_BASE)|SYSCON_OFFSET)
++#define SYSCON_PWRSR (SYSCON_BASE+0x0000)
++#define SYSCON_PWRCNT (SYSCON_BASE+0x0004)
++#define SYSCON_HALT (SYSCON_BASE+0x0008)
++#define SYSCON_STBY (SYSCON_BASE+0x000c)
++#define SYSCON_BLEOI (SYSCON_BASE+0x0010)
++#define SYSCON_MCEOI (SYSCON_BASE+0x0014)
++#define SYSCON_TEOI (SYSCON_BASE+0x0018)
++#define SYSCON_STFCLR (SYSCON_BASE+0x001c)
++#define SYSCON_CLKSET1 (SYSCON_BASE+0x0020)
++#define SYSCON_CLKSET2 (SYSCON_BASE+0x0024)
++#define SYSCON_RESV00 (SYSCON_BASE+0x0028)
++#define SYSCON_RESV01 (SYSCON_BASE+0x002c)
++#define SYSCON_RESV02 (SYSCON_BASE+0x0030)
++#define SYSCON_RESV03 (SYSCON_BASE+0x0034)
++#define SYSCON_RESV04 (SYSCON_BASE+0x0038)
++#define SYSCON_RESV05 (SYSCON_BASE+0x003c)
++#define SYSCON_SCRREG0 (SYSCON_BASE+0x0040)
++#define SYSCON_SCRREG1 (SYSCON_BASE+0x0044)
++#define SYSCON_CLKTEST (SYSCON_BASE+0x0048)
++#define SYSCON_USBRESET (SYSCON_BASE+0x004c)
++#define SYSCON_APBWAIT (SYSCON_BASE+0x0050)
++#define SYSCON_BMAR (SYSCON_BASE+0x0054)
++#define SYSCON_BOOTCLR (SYSCON_BASE+0x0058)
++#define SYSCON_DEVCFG (SYSCON_BASE+0x0080)
++#define SYSCON_VIDDIV (SYSCON_BASE+0x0084)
++#define SYSCON_MIRDIV (SYSCON_BASE+0x0088)
++#define SYSCON_I2SDIV (SYSCON_BASE+0x008C)
++#define SYSCON_KTDIV (SYSCON_BASE+0x0090)
++#define SYSCON_CHIPID (SYSCON_BASE+0x0094)
++#define SYSCON_TSTCR (SYSCON_BASE+0x0098)
++#define SYSCON_SYSCFG (SYSCON_BASE+0x009C)
++#define SYSCON_SWLOCK (SYSCON_BASE+0x00C0)
++
++#define SYSCON_DEVCFG_KEYS 0x00000002
++#define SYSCON_DEVCFG_RasOnP3 0x00000010
++#define SYSCON_DEVCFG_GONK 0x08000000
++
++#define SYSCON_KTDIV_KEN 0x00008000
++
++
++
++
++
++
++
++
++
++
++
++
++//
+ #define EP93XX_ETHERNET_BASE (EP93XX_AHB_VIRT_BASE + 0x00010000)
+ #define EP93XX_ETHERNET_PHYS_BASE (EP93XX_AHB_PHYS_BASE + 0x00010000)
+
+@@ -33,8 +914,11 @@
+ #define EP93XX_USB_PHYS_BASE (EP93XX_AHB_PHYS_BASE + 0x00020000)
+
+ #define EP93XX_RASTER_BASE (EP93XX_AHB_VIRT_BASE + 0x00030000)
++#define EP93XX_RASTER_PHYS_BASE (EP93XX_AHB_PHYS_BASE + 0x00030000)
+
+ #define EP93XX_GRAPHICS_ACCEL_BASE (EP93XX_AHB_VIRT_BASE + 0x00040000)
++#define EP93XX_GRAPHICS_ACCEL_PHYS_BASE (EP93XX_AHB_PHYS_BASE + 0x00040000
++
+
+ #define EP93XX_SDRAM_CONTROLLER_BASE (EP93XX_AHB_VIRT_BASE + 0x00060000)
+
+@@ -43,7 +927,141 @@
+ #define EP93XX_BOOT_ROM_BASE (EP93XX_AHB_VIRT_BASE + 0x00090000)
+
+ #define EP93XX_IDE_BASE (EP93XX_AHB_VIRT_BASE + 0x000a0000)
++#define EP93XX_IDE_REG(x) (EP93XX_IDE_BASE + (x))
++#define EP93XX_IDE_CTRL EP93XX_IDE_REG(0x0000)
++#define EP93XX_IDE_CFG EP93XX_IDE_REG(0x0004)
++#define EP93XX_IDE_DATAOUT EP93XX_IDE_REG(0x0010)
++#define EP93XX_IDE_DATAIN EP93XX_IDE_REG(0x0014)
++
++#define EP93XX_IDE_CTRL_CS0n (1L << 0)
++#define EP93XX_IDE_CTRL_CS1n (1L << 1)
++#define EP93XX_IDE_CTRL_DA_MASK 0x1C
++#define EP93XX_IDE_CTRL_DA(x) ((x << 2) & EP93XX_IDE_CTRL_DA_MASK)
++#define EP93XX_IDE_CTRL_DA_CS_MASK (EP93XX_IDE_CTRL_DA_MASK | EP93XX_IDE_CTRL_CS0n | EP93XX_IDE_CTRL_CS1n)
++#define EP93XX_IDE_CTRL_DA_CS(x) (((x)) & EP93XX_IDE_CTRL_DA_CS_MASK)
++#define EP93XX_IDE_CTRL_DIORn (1L << 5)
++#define EP93XX_IDE_CTRL_DIOWn (1L << 6)
++#define EP93XX_IDE_CTRL_DASPn (1L << 7)
++#define EP93XX_IDE_CTRL_DMARQ (1L << 8)
++#define EP93XX_IDE_CTRL_INTRQ (1L << 9)
++#define EP93XX_IDE_CTRL_IORDY (1L << 10)
++
++#define EP93XX_IDE_CFG_IDEEN (1L << 0)
++#define EP93XX_IDE_CFG_PIO (1L << 1)
++#define EP93XX_IDE_CFG_MDMA (1L << 2)
++#define EP93XX_IDE_CFG_UDMA (1L << 3)
++#define EP93XX_IDE_CFG_MODE(x) ((x & 0x0F) << 4)
++#define EP93XX_IDE_CFG_WST(x) ((x & 0x03) << 8)
+
++
++
++/* Olde IDE DMA defines */
++/* 800A_0000 - 800A_ffff: IDE Interface */
++#define IDE_OFFSET 0x0a0000
++#define IDE_BASE (EP93XX_AHB_VIRT_BASE|IDE_OFFSET)
++#define IDECR (IDE_BASE+0x00)
++#define IDECFG (IDE_BASE+0x04)
++#define IDEMDMAOP (IDE_BASE+0x08)
++#define IDEUDMAOP (IDE_BASE+0x0C)
++#define IDEDATAOUT (IDE_BASE+0x10)
++#define IDEDATAIN (IDE_BASE+0x14)
++#define IDEMDMADATAOUT (IDE_BASE+0x18)
++#define IDEMDMADATAIN (IDE_BASE+0x1C)
++#define IDEUDMADATAOUT (IDE_BASE+0x20)
++#define IDEUDMADATAIN (IDE_BASE+0x24)
++#define IDEUDMASTATUS (IDE_BASE+0x28)
++#define IDEUDMADEBUG (IDE_BASE+0x2C)
++#define IDEUDMAWFST (IDE_BASE+0x30)
++#define IDEUDMARFST (IDE_BASE+0x34)
++
++/*****************************************************************************
++ *
++ * Bit definitions for use with assembly code for the ide control register.
++ *
++ ****************************************************************************/
++#define IDECtrl_CS0n 0x00000001
++#define IDECtrl_CS1n 0x00000002
++#define IDECtrl_DA_MASK 0x0000001c
++#define IDECtrl_DA_SHIFT 2
++#define IDECtrl_DIORn 0x00000020
++#define IDECtrl_DIOWn 0x00000040
++#define IDECtrl_DASPn 0x00000080
++#define IDECtrl_DMARQ 0x00000100
++#define IDECtrl_INTRQ 0x00000200
++#define IDECtrl_IORDY 0x00000400
++
++#define IDECfg_IDEEN 0x00000001
++#define IDECfg_PIO 0x00000002
++#define IDECfg_MDMA 0x00000004
++#define IDECfg_UDMA 0x00000008
++#define IDECfg_MODE_MASK 0x000000f0
++#define IDECfg_MODE_SHIFT 4
++#define IDECfg_WST_MASK 0x00000300
++#define IDECfg_WST_SHIFT 8
++
++#define IDEMDMAOp_MEN 0x00000001
++#define IDEMDMAOp_RWOP 0x00000002
++
++#define IDEUDMAOp_UEN 0x00000001
++#define IDEUDMAOp_RWOP 0x00000002
++
++#define IDEUDMASts_CS0n 0x00000001
++#define IDEUDMASts_CS1n 0x00000002
++#define IDEUDMASts_DA_MASK 0x0000001c
++#define IDEUDMASts_DA_SHIFT 2
++#define IDEUDMASts_HSHD 0x00000020
++#define IDEUDMASts_STOP 0x00000040
++#define IDEUDMASts_DM 0x00000080
++#define IDEUDMASts_DDOE 0x00000100
++#define IDEUDMASts_DMARQ 0x00000200
++#define IDEUDMASts_DSDD 0x00000400
++#define IDEUDMASts_DMAide 0x00010000
++#define IDEUDMASts_INTide 0x00020000
++#define IDEUDMASts_SBUSY 0x00040000
++#define IDEUDMASts_NDO 0x01000000
++#define IDEUDMASts_NDI 0x02000000
++#define IDEUDMASts_N4X 0x04000000
++
++#define IDEUDMADebug_RWOE 0x00000001
++#define IDEUDMADebug_RWPTR 0x00000002
++#define IDEUDMADebug_RWDR 0x00000004
++#define IDEUDMADebug_RROE 0x00000008
++#define IDEUDMADebug_RRPTR 0x00000010
++#define IDEUDMADebug_RRDR 0x00000020
++
++#define IDEUDMAWrBufSts_HPTR_MASK 0x0000000f
++#define IDEUDMAWrBufSts_HPTR_SHIFT 0
++#define IDEUDMAWrBufSts_TPTR_MASK 0x000000f0
++#define IDEUDMAWrBufSts_TPTR_SHIFT 4
++#define IDEUDMAWrBufSts_EMPTY 0x00000100
++#define IDEUDMAWrBufSts_HOM 0x00000200
++#define IDEUDMAWrBufSts_NFULL 0x00000400
++#define IDEUDMAWrBufSts_FULL 0x00000800
++#define IDEUDMAWrBufSts_CRC_MASK 0xffff0000
++#define IDEUDMAWrBufSts_CRC_SHIFT 16
++
++#define IDEUDMARdBufSts_HPTR_MASK 0x0000000f
++#define IDEUDMARdBufSts_HPTR_SHIFT 0
++#define IDEUDMARdBufSts_TPTR_MASK 0x000000f0
++#define IDEUDMARdBufSts_TPTR_SHIFT 4
++#define IDEUDMARdBufSts_EMPTY 0x00000100
++#define IDEUDMARdBufSts_HOM 0x00000200
++#define IDEUDMARdBufSts_NFULL 0x00000400
++#define IDEUDMARdBufSts_FULL 0x00000800
++#define IDEUDMARdBufSts_CRC_MASK 0xffff0000
++#define IDEUDMARdBufSts_CRC_SHIFT 16
++
++
++
++
++
++
++
++
++
++
++
++/*----------------------------------old-------------------------------*/
+ #define EP93XX_VIC1_BASE (EP93XX_AHB_VIRT_BASE + 0x000b0000)
+
+ #define EP93XX_VIC2_BASE (EP93XX_AHB_VIRT_BASE + 0x000c0000)
+@@ -73,21 +1091,29 @@
+
+ #define EP93XX_GPIO_BASE (EP93XX_APB_VIRT_BASE + 0x00040000)
+ #define EP93XX_GPIO_REG(x) (EP93XX_GPIO_BASE + (x))
+-#define EP93XX_GPIO_F_INT_TYPE1 EP93XX_GPIO_REG(0x4c)
+-#define EP93XX_GPIO_F_INT_TYPE2 EP93XX_GPIO_REG(0x50)
+-#define EP93XX_GPIO_F_INT_ACK EP93XX_GPIO_REG(0x54)
+-#define EP93XX_GPIO_F_INT_ENABLE EP93XX_GPIO_REG(0x58)
+-#define EP93XX_GPIO_F_INT_STATUS EP93XX_GPIO_REG(0x5c)
++#define EP93XX_GPIO_F_INT_TYPE1 EP93XX_GPIO_REG(0x4c)
++#define EP93XX_GPIO_F_INT_TYPE2 EP93XX_GPIO_REG(0x50)
++#define EP93XX_GPIO_F_INT_ACK EP93XX_GPIO_REG(0x54)
++#define EP93XX_GPIO_F_INT_ENABLE EP93XX_GPIO_REG(0x58)
++#define EP93XX_GPIO_F_INT_STATUS EP93XX_GPIO_REG(0x5c)
+ #define EP93XX_GPIO_A_INT_TYPE1 EP93XX_GPIO_REG(0x90)
+ #define EP93XX_GPIO_A_INT_TYPE2 EP93XX_GPIO_REG(0x94)
+ #define EP93XX_GPIO_A_INT_ACK EP93XX_GPIO_REG(0x98)
+ #define EP93XX_GPIO_A_INT_ENABLE EP93XX_GPIO_REG(0x9c)
+ #define EP93XX_GPIO_A_INT_STATUS EP93XX_GPIO_REG(0xa0)
++#define EP93XX_GPIO_A_INT_DEBOUNCE EP93XX_GPIO_REG(0xa8)
+ #define EP93XX_GPIO_B_INT_TYPE1 EP93XX_GPIO_REG(0xac)
+ #define EP93XX_GPIO_B_INT_TYPE2 EP93XX_GPIO_REG(0xb0)
+ #define EP93XX_GPIO_B_INT_ACK EP93XX_GPIO_REG(0xb4)
+ #define EP93XX_GPIO_B_INT_ENABLE EP93XX_GPIO_REG(0xb8)
+ #define EP93XX_GPIO_B_INT_STATUS EP93XX_GPIO_REG(0xbc)
++#define EP93XX_GPIO_B_INT_DEBOUNCE EP93XX_GPIO_REG(0xc4)
++
++
++
++
++
++
+
+ #define EP93XX_AAC_BASE (EP93XX_APB_VIRT_BASE + 0x00080000)
+
+@@ -121,10 +1147,15 @@
+ #define EP93XX_SYSCON_CLOCK_USH_EN 0x10000000
+ #define EP93XX_SYSCON_HALT EP93XX_SYSCON_REG(0x08)
+ #define EP93XX_SYSCON_STANDBY EP93XX_SYSCON_REG(0x0c)
++#define EP93XX_SYSCON_CLKSET1 EP93XX_SYSCON_REG(0x20)
+ #define EP93XX_SYSCON_CLOCK_SET1 EP93XX_SYSCON_REG(0x20)
++#define EP93XX_SYSCON_CLKSET2 EP93XX_SYSCON_REG(0x24)
+ #define EP93XX_SYSCON_CLOCK_SET2 EP93XX_SYSCON_REG(0x24)
+ #define EP93XX_SYSCON_DEVICE_CONFIG EP93XX_SYSCON_REG(0x80)
+ #define EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE 0x00800000
++
++#define EP93XX_SYSCON_BMAR EP93XX_SYSCON_REG(0x54)
++#define EP93XX_SYSCON_CHIPID EP93XX_SYSCON_REG(0x94)
+ #define EP93XX_SYSCON_SWLOCK EP93XX_SYSCON_REG(0xc0)
+
+ #define EP93XX_WATCHDOG_BASE (EP93XX_APB_VIRT_BASE + 0x00140000)
+diff --git a/include/asm-arm/arch-ep93xx/system.h b/include/asm-arm/arch-ep93xx/system.h
+index 79b7185..d69c15f 100644
+--- a/include/asm-arm/arch-ep93xx/system.h
++++ b/include/asm-arm/arch-ep93xx/system.h
+@@ -3,6 +3,13 @@
+ */
+
+ #include <asm/hardware.h>
++#include <asm-arm/arch-ep93xx/ep93xx-regs.h>
++
++#define MAC_SELFCTL (EP93XX_MAC_BASE+0x20) /* 1-RW Self Control for LED interface */
++#define HCCOMMANDSTATUS (EP93XX_USB_BASE+0x08)
++#define MAC_OFFSET 0x010000
++#define EP93XX_MAC_BASE (EP93XX_AHB_VIRT_BASE|MAC_OFFSET)
++#define SYSCON_SYSCFG_LEECK 0x00000008
+
+ static inline void arch_idle(void)
+ {
+@@ -15,11 +22,108 @@ static inline void arch_reset(char mode)
+
+ local_irq_disable();
+
+- devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++// Modified 6/29/2007
++// by Steve Beaver, MedAvant Healthcare Solutions Inc
++
++// This code was lifted from cirrus-arm-linux-2.4.21 and puts the edb93xx in a known, default
++// state before the restart.
++
++// Disable the peripherals.
++//
++outl(0xffffffff, VIC0INTENCLEAR);
++outl(0xffffffff, VIC1INTENCLEAR);
++outl(0, DMAMP_TX_0_CONTROL);
++outl(0, DMAMP_RX_1_CONTROL);
++outl(0, DMAMP_TX_2_CONTROL);
++outl(0, DMAMP_RX_3_CONTROL);
++outl(0, DMAMM_0_CONTROL);
++outl(0, DMAMM_1_CONTROL);
++outl(0, DMAMP_TX_4_CONTROL);
++outl(0, DMAMP_RX_5_CONTROL);
++outl(0, DMAMP_TX_6_CONTROL);
++outl(0, DMAMP_RX_7_CONTROL);
++outl(0, DMAMP_TX_8_CONTROL);
++outl(0, DMAMP_RX_9_CONTROL);
++outl(1, MAC_SELFCTL);
++while(inl(MAC_SELFCTL) & 1)
++barrier();
++outl(1, HCCOMMANDSTATUS);
++while(inl(HCCOMMANDSTATUS) & 1)
++barrier();
++outl(0, IrEnable);
++outl(0, UART1CR);
++outl(0, UART2CR);
++outl(0, I2STX0En);
++outl(0, I2SRX0En);
++outl(0, AC97GCR);
++outl(0, SSPCR1);
++#ifdef CONFIG_ARCH_EP9315
++outl(0, SMC_PCMCIACtrl);
++outl(0, BLOCKCTRL);
++#endif
++#if defined(CONFIG_ARCH_EP9312) || defined(CONFIG_ARCH_EP9315)
++outl(0, VIDEOATTRIBS);
++outl(0, UART3CR);
++outl(0, I2STX1En);
++outl(0, I2SRX1En);
++outl(0, I2STX2En);
++outl(0, I2SRX2En);
++outl(0, TSSetup);
++outl(0, IDECFG);
++outl(0xaa, SYSCON_SWLOCK);
++outl(0, SYSCON_VIDDIV);
++outl(0xaa, SYSCON_SWLOCK);
++outl(0, SYSCON_KTDIV);
++#endif
++outl(0xaa, SYSCON_SWLOCK);
++outl(0, SYSCON_MIRDIV);
++outl(0xaa, SYSCON_SWLOCK);
++outl(0, SYSCON_I2SDIV);
++outl(0, SYSCON_PWRCNT);
++outl(0xaa, SYSCON_SWLOCK);
++outl(0, SYSCON_DEVCFG);
++outl(0x000398e7, SYSCON_CLKSET1);
++inl(SYSCON_CLKSET1);
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++outl(0x0003c317, SYSCON_CLKSET2);
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++__asm__ __volatile__("nop");
++outl(0, GPIO_PADDR);
++outl(0, GPIO_PBDDR);
++outl(0, GPIO_PCDDR);
++#if defined(CONFIG_ARCH_EP9312) || defined(CONFIG_ARCH_EP9315)
++outl(0, GPIO_PDDDR);
++#endif
++outl(0x3, GPIO_PEDR);
++outl(0x3, GPIO_PEDDR);
++outl(0, GPIO_PFDDR);
++outl(0, GPIO_PGDR);
++outl(0xc, GPIO_PGDDR);
++outl(0, GPIO_PHDDR);
++outl(0, GPIO_PDDDR);
++outl(0, GPIO_PDDDR);
++outl(0, GPIO_AINTEN);
++outl(0, GPIO_BINTEN);
++outl(0, GPIO_FINTEN);
++outl(0, GPIO_EEDRIVE);
++
++
++// devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
++// __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++// __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++// __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++// __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++
++// SYSCON_SYSCFG_LEECK indicates internal or external boot.
++// Jump to internal boot ROM or external boot device.
++cpu_reset((inl(SYSCON_SYSCFG) & SYSCON_SYSCFG_LEECK) ? 0x80090000 : 0x0);
+
+ while (1)
+ ;
+--
+1.5.3
+
diff --git a/packages/linux/linux-2.6.24/gesbc-9302/defconfig b/packages/linux/linux-2.6.24/gesbc-9302/defconfig
new file mode 100644
index 0000000000..c7db3e6da0
--- /dev/null
+++ b/packages/linux/linux-2.6.24/gesbc-9302/defconfig
@@ -0,0 +1,1165 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Mon Feb 4 15:05:53 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_GPIO is not set
+# CONFIG_GENERIC_TIME is not set
+# CONFIG_GENERIC_CLOCKEVENTS is not set
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+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_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_FAIR_GROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+CONFIG_ARCH_EP93XX=y
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Cirrus EP93xx Implementation Options
+#
+CONFIG_CRUNCH=y
+
+#
+# EP93xx Platforms
+#
+# CONFIG_MACH_ADSSPHERE is not set
+CONFIG_MACH_EDB9302=y
+# CONFIG_MACH_EDB9302A is not set
+# CONFIG_MACH_EDB9307 is not set
+# CONFIG_MACH_EDB9312 is not set
+# CONFIG_MACH_EDB9315 is not set
+# CONFIG_MACH_EDB9315A is not set
+# CONFIG_MACH_GESBC9312 is not set
+# CONFIG_MACH_MICRO9 is not set
+# CONFIG_MACH_MICRO9H is not set
+# CONFIG_MACH_MICRO9M is not set
+# CONFIG_MACH_MICRO9L is not set
+# CONFIG_MACH_TS72XX is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_ARM_VIC=y
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyAM0 root=mtd5 rootfstype=jffs2 mtdparts=GESBC-NAND:64m(app),-(data)"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+CONFIG_FPE_NWFPE_XP=y
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE 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=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER 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_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY 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_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=1
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# 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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_GESBC=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND 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 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=12288
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# 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=y
+CONFIG_EP93XX_ETH=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 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_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER 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
+
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_AMBA_PL010=y
+CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
+# CONFIG_SERIAL_AMBA_PL011 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_DS1337=y
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+CONFIG_I2C_DEBUG_CORE=y
+CONFIG_I2C_DEBUG_ALGO=y
+CONFIG_I2C_DEBUG_BUS=y
+CONFIG_I2C_DEBUG_CHIP=y
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_EP93XX_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+CONFIG_USB_DEBUG=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_DYNAMIC_MINORS=y
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_EP93XX=y
+# CONFIG_RTC_DRV_PL031 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+# CONFIG_SMB_NLS_DEFAULT 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+CONFIG_DEBUG_SLAB=y
+# CONFIG_DEBUG_SLAB_LEAK is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/ktimetrackerpi/.mtn2git_empty b/packages/linux/linux-2.6.24/mpc8313e-rdb/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ktimetrackerpi/.mtn2git_empty
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig b/packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig
new file mode 100644
index 0000000000..b87f62acbc
--- /dev/null
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/defconfig
@@ -0,0 +1,1896 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Fri Feb 8 08:56:05 2008
+#
+# CONFIG_PPC64 is not set
+
+#
+# Processor support
+#
+CONFIG_6xx=y
+# CONFIG_PPC_85xx is not set
+# CONFIG_PPC_8xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_E200 is not set
+CONFIG_83xx=y
+CONFIG_PPC_FPU=y
+CONFIG_PPC_STD_MMU=y
+CONFIG_PPC_STD_MMU_32=y
+# CONFIG_PPC_MM_SLICES is not set
+# CONFIG_SMP is not set
+CONFIG_PPC32=y
+CONFIG_WORD_SIZE=32
+CONFIG_PPC_MERGE=y
+CONFIG_MMU=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_IRQ_PER_CPU=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
+CONFIG_PPC=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_PPC_OF=y
+CONFIG_OF=y
+CONFIG_PPC_UDBG_16550=y
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFAULT_UIMAGE=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_DCR_MMIO 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_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+# CONFIG_EPOLL is not set
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Platform support
+#
+# CONFIG_PPC_MULTIPLATFORM is not set
+# CONFIG_PPC_82xx is not set
+CONFIG_PPC_83xx=y
+# CONFIG_PPC_86xx is not set
+# CONFIG_PPC_MPC52xx is not set
+# CONFIG_PPC_MPC5200 is not set
+# CONFIG_PPC_CELL is not set
+# CONFIG_PPC_CELL_NATIVE is not set
+# CONFIG_PQ2ADS is not set
+CONFIG_MPC8313_RDB=y
+# CONFIG_MPC832x_MDS is not set
+# CONFIG_MPC832x_RDB is not set
+# CONFIG_MPC834x_MDS is not set
+# CONFIG_MPC834x_ITX is not set
+# CONFIG_MPC836x_MDS is not set
+CONFIG_PPC_MPC831x=y
+# CONFIG_MPIC is not set
+# CONFIG_MPIC_WEIRD is not set
+# CONFIG_PPC_I8259 is not set
+# CONFIG_PPC_RTAS is not set
+# CONFIG_MMIO_NVRAM is not set
+# CONFIG_PPC_MPC106 is not set
+# CONFIG_PPC_970_NAP is not set
+# CONFIG_PPC_INDIRECT_IO is not set
+# CONFIG_GENERIC_IOMAP is not set
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPM2 is not set
+# CONFIG_FSL_ULI1575 is not set
+
+#
+# Kernel options
+#
+# CONFIG_HIGHMEM is not set
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_CMDLINE_BOOL is not set
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_HIBERNATION_UP_POSSIBLE=y
+CONFIG_SECCOMP=y
+CONFIG_WANT_DEVICE_TREE=y
+CONFIG_DEVICE_TREE=""
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_FSL_SOC=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+# CONFIG_PCI_MSI is not set
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0xc0000000
+CONFIG_BOOT_LOAD=0x00800000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+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_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# 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_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN 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=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RR=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+# CONFIG_NET_ACT_NAT is not set
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+# CONFIG_NET_CLS_POLICE is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
+
+#
+# Wireless
+#
+CONFIG_CFG80211=y
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RCSIMPLE=y
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+CONFIG_RFKILL_INPUT=m
+CONFIG_RFKILL_LEDS=y
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# 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=y
+CONFIG_MTD_PHYSMAP_START=0xfe000000
+CONFIG_MTD_PHYSMAP_LEN=0x0800000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PHYSMAP_OF is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_NAND_FSL_ELBC=y
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+CONFIG_OF_DEVICE=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=32768
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+CONFIG_ATA_OVER_ETH=m
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+CONFIG_EEPROM_93CX6=m
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_IFB is not set
+# 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_ARCNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+CONFIG_CICADA_PHY=y
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_NET_ETHERNET is not set
+CONFIG_E100=y
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_SC92031 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_E1000E is not set
+# CONFIG_IP1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+CONFIG_GIANFAR=y
+CONFIG_GFAR_NAPI=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_SDIO is not set
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_RTL8187=m
+# CONFIG_ADM8211 is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_IWLWIFI is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_BCM43XX=m
+CONFIG_BCM43XX_DEBUG=y
+CONFIG_BCM43XX_DMA=y
+CONFIG_BCM43XX_PIO=y
+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
+# CONFIG_BCM43XX_DMA_MODE is not set
+# CONFIG_BCM43XX_PIO_MODE is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+# CONFIG_RT2X00 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+# CONFIG_ATM_TCP is not set
+# CONFIG_ATM_LANAI is not set
+# CONFIG_ATM_ENI is not set
+# CONFIG_ATM_FIRESTREAM is not set
+# CONFIG_ATM_ZATM is not set
+# CONFIG_ATM_NICSTAR is not set
+# CONFIG_ATM_IDT77252 is not set
+# CONFIG_ATM_AMBASSADOR is not set
+# CONFIG_ATM_HORIZON is not set
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_FORE200E_MAYBE is not set
+# CONFIG_ATM_HE is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+CONFIG_ISDN=m
+CONFIG_ISDN_I4L=m
+# CONFIG_ISDN_PPP is not set
+# CONFIG_ISDN_AUDIO is not set
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DRV_LOOP=m
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+CONFIG_HISAX_HDLC=y
+
+#
+# Active cards
+#
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+CONFIG_GIGASET_M101=m
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_GIGASET_UNDOCREQ=y
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+# CONFIG_ISDN_CAPI_CAPIDRV is not set
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_OF_PLATFORM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+CONFIG_I2C_MPC=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_M41T00 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_MPC83xx=y
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_AT25=m
+CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_TLE62X0=m
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM75=m
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_83xx_WDT=y
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CS5530 is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA PowerMac devices
+#
+
+#
+# ALSA PowerPC devices
+#
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_EHCI_FSL=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PPC_OF=y
+CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
+# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
+CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+# CONFIG_USB_ATM is not set
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=y
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_SPI=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_MPC8313E_RDB=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# Userspace I/O
+#
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# 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_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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 is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+CONFIG_NLS_CODEPAGE_932=y
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+CONFIG_NLS_ISO8859_8=y
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+# CONFIG_UCC_SLOW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_PPC_EARLY_DEBUG is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ABLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_XTS is not set
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_PPC_CLOCK is not set
diff --git a/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch
new file mode 100644
index 0000000000..5336905a66
--- /dev/null
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-leds.patch
@@ -0,0 +1,202 @@
+diff -urN linux-2.6.24.orig/drivers/leds/Kconfig linux-2.6.24/drivers/leds/Kconfig
+--- linux-2.6.24.orig/drivers/leds/Kconfig 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/drivers/leds/Kconfig 2008-02-08 08:12:01.000000000 +0100
+@@ -114,6 +114,12 @@
+ help
+ This option enables support for the CM-X270 LEDs.
+
++config LEDS_MPC8313E_RDB
++ tristate "LED Support for MPC8313E-RDB LEDs"
++ depends on LEDS_CLASS && PPC_83xx
++ help
++ This option enables support for the LEDs on MPC8313E-RDB board.
++
+ comment "LED Triggers"
+
+ config LEDS_TRIGGERS
+diff -urN linux-2.6.24.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.24/drivers/leds/leds-mpc8313e-rdb.c
+--- linux-2.6.24.orig/drivers/leds/leds-mpc8313e-rdb.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24/drivers/leds/leds-mpc8313e-rdb.c 2008-02-08 08:12:01.000000000 +0100
+@@ -0,0 +1,171 @@
++/*
++ * drivers/leds/leds-mpc8313e-rdb.c
++ * Copyright (C) 2007 Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.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.
++ *
++ * MPC8313E-RDB LEDs driver
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/ioport.h>
++#include <linux/leds.h>
++#include <linux/err.h>
++#include <asm/io.h>
++
++#define LEDS_BASE 0xfa000000
++#define LEDS_SIZE 0x2
++
++static struct platform_device *leds_pdev = NULL;
++static struct resource *led_mem = NULL;
++static void *led_io = NULL;
++static u8 led_state = 0xff;
++
++struct mpc8313_led {
++ struct led_classdev cdev;
++ u8 bitmask;
++};
++
++static void mpc8313leds_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ struct mpc8313_led *led_dev = container_of(led_cdev, struct mpc8313_led, cdev);
++ if (value)
++ led_state &= ~led_dev->bitmask;
++ else
++ led_state |= led_dev->bitmask;
++ iowrite8(led_state, led_io);
++}
++
++static struct mpc8313_led mpc8313_leds[] = {
++ {
++ .cdev = {
++ .name = "mpc8313:led0",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 1,
++ },
++ {
++ .cdev = {
++ .name = "mpc8313:led1",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 2,
++ },
++ {
++ .cdev = {
++ .name = "mpc8313:led2",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 4,
++ },
++ {
++ .cdev = {
++ .name = "mpc8313:led3",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 8,
++ },
++ {
++ .cdev = {
++ .name = "mpc8313:led4",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 16,
++ },
++ {
++ .cdev = {
++ .name = "mpc8313:led5",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 32,
++ },
++ {
++ .cdev = {
++ .name = "mpc8313:led6",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 64,
++ },
++ {
++ .cdev = {
++ .name = "mpc8313:led7",
++ .brightness_set = mpc8313leds_set,
++ },
++ .bitmask = 128,
++ },
++};
++
++static int mpc8313leds_probe(struct platform_device *pdev)
++{
++ int i;
++ int ret;
++
++ for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(mpc8313_leds); i++) {
++ ret = led_classdev_register(&pdev->dev,
++ &mpc8313_leds[i].cdev);
++ }
++
++ if (ret < 0 && i > 1) {
++ for (i = i - 2; i >= 0; i--)
++ led_classdev_unregister(&mpc8313_leds[i].cdev);
++ }
++
++ return ret;
++}
++
++static int mpc8313leds_remove(struct platform_device *pdev)
++{
++ int i;
++
++ for (i = ARRAY_SIZE(mpc8313_leds) - 1; i >= 0; i--)
++ led_classdev_unregister(&mpc8313_leds[i].cdev);
++
++ return 0;
++}
++
++static struct platform_driver mpc8313leds_driver = {
++ .driver = {
++ .name = "mpc8313-leds",
++ .owner = THIS_MODULE,
++ },
++ .probe = mpc8313leds_probe,
++ .remove = mpc8313leds_remove,
++};
++
++static int __init mpc8313leds_init(void)
++{
++ if (!(led_mem = request_mem_region(LEDS_BASE, LEDS_SIZE, "mpc8313-leds")))
++ return -ENOMEM;
++ if (!(led_io = ioremap(LEDS_BASE, LEDS_SIZE)))
++ {
++ release_mem_region(LEDS_BASE, LEDS_SIZE);
++ led_mem = NULL;
++ return -ENOMEM;
++ }
++ iowrite8(led_state, led_io);
++
++ leds_pdev = platform_device_register_simple("mpc8313-leds", -1, NULL, 0);
++
++ return platform_driver_register(&mpc8313leds_driver);
++}
++
++static void __exit mpc8313leds_exit(void)
++{
++ if (led_mem) release_mem_region(LEDS_BASE, LEDS_SIZE);
++ led_mem = NULL;
++ platform_driver_unregister(&mpc8313leds_driver);
++
++ platform_device_unregister(leds_pdev);
++}
++
++module_init(mpc8313leds_init);
++module_exit(mpc8313leds_exit);
++
++MODULE_AUTHOR("Jeremy Laine <jeremy.laine@bolloretelecom.eu>");
++MODULE_DESCRIPTION("MPC8313E-RDB LED driver");
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.24.orig/drivers/leds/Makefile linux-2.6.24/drivers/leds/Makefile
+--- linux-2.6.24.orig/drivers/leds/Makefile 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/drivers/leds/Makefile 2008-02-08 08:12:38.000000000 +0100
+@@ -19,6 +19,7 @@
+ obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o
+ obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
+ obj-$(CONFIG_LEDS_CM_X270) += leds-cm-x270.o
++obj-$(CONFIG_LEDS_MPC8313E_RDB) += leds-mpc8313e-rdb.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
diff --git a/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-rtc.patch b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-rtc.patch
new file mode 100644
index 0000000000..0307094675
--- /dev/null
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc8313e-rdb-rtc.patch
@@ -0,0 +1,24 @@
+diff -urN linux-2.6.24.orig/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.24/arch/powerpc/boot/dts/mpc8313erdb.dts
+--- linux-2.6.24.orig/arch/powerpc/boot/dts/mpc8313erdb.dts 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/arch/powerpc/boot/dts/mpc8313erdb.dts 2008-02-08 08:09:07.000000000 +0100
+@@ -52,12 +52,20 @@
+ };
+
+ i2c@3000 {
++ #address-cells = <1>;
++ #size-cells = <0>;
+ device_type = "i2c";
+ compatible = "fsl-i2c";
+ reg = <3000 100>;
+ interrupts = <e 8>;
+ interrupt-parent = < &ipic >;
+ dfsrr;
++
++ rtc@68 {
++ device_type = "rtc";
++ compatible = "dallas,ds1339";
++ reg = <68>;
++ };
+ };
+
+ i2c@3100 {
diff --git a/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch
new file mode 100644
index 0000000000..7c6502d232
--- /dev/null
+++ b/packages/linux/linux-2.6.24/mpc8313e-rdb/mpc831x-nand.patch
@@ -0,0 +1,1807 @@
+diff -urN linux-2.6.24.orig/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.24/arch/powerpc/boot/dts/mpc8313erdb.dts
+--- linux-2.6.24.orig/arch/powerpc/boot/dts/mpc8313erdb.dts 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/arch/powerpc/boot/dts/mpc8313erdb.dts 2008-02-18 16:39:43.000000000 +0100
+@@ -36,6 +36,12 @@
+ device_type = "memory";
+ reg = <00000000 08000000>; // 128MB at 0
+ };
++
++ nand0 {
++ device_type = "nand";
++ compatible = "fsl-nand";
++ reg = <e2800000 00000200>;
++ };
+
+ soc8313@e0000000 {
+ #address-cells = <1>;
+@@ -177,6 +183,16 @@
+ reg = <700 100>;
+ device_type = "ipic";
+ };
++
++ elbc@5000 {
++ device_type = "elbc";
++ compatible = "fsl-elbc";
++ reg = <5000 1000>;
++ interrupts = <4d 8>;
++ interrupt-parent = < &ipic >;
++ allow-direct-device-sleep;
++ };
++
+ };
+
+ pci@e0008500 {
+diff -urN linux-2.6.24.orig/arch/powerpc/sysdev/fsl_soc.c linux-2.6.24/arch/powerpc/sysdev/fsl_soc.c
+--- linux-2.6.24.orig/arch/powerpc/sysdev/fsl_soc.c 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/arch/powerpc/sysdev/fsl_soc.c 2008-02-18 17:07:57.000000000 +0100
+@@ -6,6 +6,12 @@
+ * 2006 (c) MontaVista Software, Inc.
+ * Vitaly Bordug <vbordug@ru.mvista.com>
+ *
++ * Change log:
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ * 2006: Lo Wilson (r43300@freescale.com)
++ * Added support for Enhanced Local Bus Controller
++ * Added support for USB UTMI mode on-chip PHY
++ *
+ * 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
+@@ -28,6 +34,8 @@
+ #include <linux/fsl_devices.h>
+ #include <linux/fs_enet_pd.h>
+ #include <linux/fs_uart_pd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/fsl_elbc.h>
+
+ #include <asm/system.h>
+ #include <asm/atomic.h>
+@@ -671,6 +679,75 @@
+
+ arch_initcall(fsl_usb_of_init);
+
++static int __init fsl_elbc_of_init(void)
++{
++ struct device_node *np;
++ unsigned int i;
++ struct platform_device *elbc_dev = NULL;
++ struct platform_device *nand_dev = NULL;
++ int ret;
++
++ /* find and register the enhanced local bus controller */
++ for (np = NULL, i = 0;
++ (np = of_find_compatible_node(np, "elbc", "fsl-elbc")) != NULL;
++ i++) {
++ struct resource r[2];
++
++ memset(&r, 0, sizeof(r));
++
++ ret = of_address_to_resource(np, 0, &r[0]);
++ if (ret)
++ goto err;
++
++ r[1].start = r[1].end = irq_of_parse_and_map(np, 0);
++ r[1].flags = IORESOURCE_IRQ;
++
++ elbc_dev =
++ platform_device_register_simple("fsl-elbc", i, r, 2);
++ if (IS_ERR(elbc_dev)) {
++ ret = PTR_ERR(elbc_dev);
++ goto err;
++ }
++ }
++
++ /* find and register NAND memories if the eLBC was found */
++ for (np = NULL, i = 0;
++ elbc_dev &&
++ (np = of_find_compatible_node(np, "nand", "fsl-nand")) != NULL;
++ i++) {
++ struct resource r;
++ struct platform_fsl_nand_chip chip_data;
++
++ memset(&r, 0, sizeof(r));
++ memset(&chip_data, 0, sizeof(chip_data));
++
++ ret = of_address_to_resource(np, 0, &r);
++ if (ret)
++ goto err;
++
++ nand_dev =
++ platform_device_register_simple("fsl-nand", i, &r, 1);
++ if (IS_ERR(nand_dev)) {
++ ret = PTR_ERR(nand_dev);
++ goto err;
++ }
++
++ chip_data.name = of_get_property(np, "name", NULL);
++ chip_data.partitions_str = of_get_property(np, "partitions", NULL);
++
++ ret = platform_device_add_data(nand_dev, &chip_data,
++ sizeof(struct platform_fsl_nand_chip));
++ if (ret)
++ goto err;
++ }
++ return 0;
++
++err:
++ return ret;
++}
++
++arch_initcall(fsl_elbc_of_init);
++
+ #ifndef CONFIG_PPC_CPM_NEW_BINDING
+ #ifdef CONFIG_CPM2
+
+diff -urN linux-2.6.24.orig/drivers/mtd/nand/fsl_elbc.c linux-2.6.24/drivers/mtd/nand/fsl_elbc.c
+--- linux-2.6.24.orig/drivers/mtd/nand/fsl_elbc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24/drivers/mtd/nand/fsl_elbc.c 2008-02-18 17:08:08.000000000 +0100
+@@ -0,0 +1,1324 @@
++/* linux/drivers/mtd/nand/fsl_elbc.c
++ *
++ * Copyright (C) 2006 Freescale Semiconductor, Inc.
++ *
++ * Freescale Enhanced Local Bus Controller NAND driver
++ *
++ * Author: Nick Spence <Nick.Spence@freescale.com>
++ * Maintainer: Tony Li <Tony.Li@freescale.com>
++ *
++ * Changelog:
++ * 2006-12 Tony Li <Tony.Li@freescale.com>
++ * Adopt to MPC8313ERDB board
++ *
++ * 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
++*/
++
++//#ifdef CONFIG_MTD_NAND_DEBUG
++//#define DEBUG
++//#endif
++//#define DEBUG
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/ioport.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++#include <linux/err.h>
++#include <linux/slab.h>
++#include <linux/interrupt.h>
++#include <linux/device.h>
++#include <linux/fsl_devices.h>
++
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/nand_ecc.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/io.h>
++#include <linux/mtd/fsl_elbc.h>
++
++#define PFX "fsl-elbc: "
++
++#undef CFG_FCM_DEBUG
++#define CFG_FCM_DEBUG_LVL 3
++#ifdef CFG_FCM_DEBUG
++static int fcm_debug_level = CFG_FCM_DEBUG_LVL;
++#define FCM_DEBUG(n, args...) \
++ do { \
++ if (n <= fcm_debug_level) \
++ printk(args); \
++ } while(0)
++#else /* CONFIG_FCM_DEBUG */
++#define FCM_DEBUG(n, args...) do { } while(0)
++#endif
++
++#define FCM_SIZE (8 * 1024)
++
++#define MAX_BANKS (8)
++
++/* use interrupt instead of busy waiting TODO */
++#define FCM_USE_INTERRUPT
++
++#define MIN(x, y) ((x < y) ? x : y)
++
++#define ERR_BYTE 0xFF /* Value returned for read bytes when read failed */
++
++#define FCM_TIMEOUT_MSECS 100 /* Maximum number of mSecs to wait for FCM */
++
++
++
++struct fsl_elbc_ctrl;
++
++/* mtd information per set */
++
++struct fsl_elbc_mtd {
++ struct mtd_info mtd;
++ struct nand_chip chip;
++ struct platform_fsl_nand_chip pl_chip;
++ struct fsl_elbc_ctrl *ctrl;
++
++ struct device *device;
++// int nr_chips; /* Number of chips in set */
++// int nr_partitions; /* Number of partitions or 0 */
++ char *name; /* Name of set (optional) */
++ int *nr_map; /* Physical chip num (option)*/
++// struct mtd_partition *partitions; /* MTD partition list (option*/
++// struct nand_ecclayout *ecclayout;
++ unsigned int options;
++ struct resource *area;
++ int bank; /* Chip select bank number */
++ unsigned int pbase; /* Chip select base physical address */
++ unsigned int vbase; /* Chip select base virtual address */
++ int pgs; /* NAND page size (0=512, 1=2048) */
++ unsigned int fmr; /* FCM Flash Mode Register value */
++};
++
++/* overview of the fsl elbc controller */
++
++struct fsl_elbc_ctrl {
++ struct nand_hw_control controller;
++ struct fsl_elbc_mtd *nmtd[MAX_BANKS];
++
++ /* device info */
++ atomic_t childs_active;
++ struct device *device;
++ struct resource *area;
++ lbus83xx_t *regs;
++ int irq;
++ wait_queue_head_t irq_wait;
++ unsigned int irq_status; /* status read from LTESR by irq handler */
++ u_char *addr; /* Address of assigned FCM buffer */
++ unsigned int page; /* Last page written to / read from */
++ unsigned int read_bytes; /* Number of bytes read during command */
++ unsigned int index; /* Pointer to next byte to 'read' */
++ unsigned int status; /* status read from LTESR after last op */
++ int oobbuf; /* Pointer to OOB block */
++ unsigned int mdr; /* UPM/FCM Data Register value */
++ unsigned int use_mdr; /* Non zero if the MDR is to be set */
++};
++
++struct fsl_elbc_ctrl elbc_ctrl;
++
++/* These map to the positions used by the FCM hardware ECC generator */
++
++/* Small Page FLASH with FMR[ECCM] = 0 */
++static struct nand_ecclayout fsl_elbc_oob_sp_eccm0 = { /* TODO */
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 3,
++ .eccpos = {6, 7, 8},
++ .oobfree = { {0, 5}, {9, 7} }
++};
++
++/* Small Page FLASH with FMR[ECCM] = 1 */
++static struct nand_ecclayout fsl_elbc_oob_sp_eccm1 = { /* TODO */
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 3,
++ .eccpos = {8, 9, 10},
++ .oobfree = { {0, 5}, {6, 2}, {11, 5} }
++};
++
++/* Large Page FLASH with FMR[ECCM] = 0 */
++static struct nand_ecclayout fsl_elbc_oob_lp_eccm0 = {
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 12,
++ .eccpos = {6, 7, 8, 22, 23, 24, 38, 39, 40, 54, 55, 56},
++ .oobfree = { {1, 5}, {9, 13}, {25, 13}, {41, 13}, {57, 7} }
++};
++
++/* Large Page FLASH with FMR[ECCM] = 1 */
++static struct nand_ecclayout fsl_elbc_oob_lp_eccm1 = {
++//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 12,
++ .eccpos = {8, 9, 10, 24, 25, 26, 40, 41, 42, 56, 57, 58},
++ .oobfree = { {1, 7}, {11, 13}, {27, 13}, {43, 13}, {59, 5} }
++};
++
++/*=================================*/
++
++/*
++ * Set up the FCM hardware block and page address fields, and the fcm
++ * structure addr field to point to the correct FCM buffer in memory
++ */
++static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ int buf_num;
++
++ ctrl->page = page_addr;
++
++ lbc->fbar = page_addr >> (chip->phys_erase_shift - chip->page_shift);
++ if (nmtd->pgs) {
++ lbc->fpar = ((page_addr << FPAR_LP_PI_SHIFT) & FPAR_LP_PI) |
++ ( oob ? FPAR_LP_MS : 0) |
++ column;
++ buf_num = (page_addr & 1) << 2;
++ } else {
++ lbc->fpar = ((page_addr << FPAR_SP_PI_SHIFT) & FPAR_SP_PI) |
++ ( oob ? FPAR_SP_MS : 0) |
++ column;
++ buf_num = page_addr & 7;
++ }
++ ctrl->addr = (unsigned char*)(nmtd->vbase + (buf_num * 1024));
++
++ /* for OOB data point to the second half of the buffer */
++ if (oob) {
++ ctrl->addr += (nmtd->pgs ? 2048 : 512);
++ }
++ FCM_DEBUG(2,"set_addr: bank=%d, ctrl->addr=0x%p (0x%08x)\n", buf_num, ctrl->addr, nmtd->vbase);
++}
++
++/*
++ * execute FCM command and wait for it to complete
++ */
++static int fsl_elbc_run_command(struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ /* Setup the FMR[OP] to execute without write protection */
++ lbc->fmr = nmtd->fmr | 3;
++ if (ctrl->use_mdr)
++ lbc->mdr = ctrl->mdr;
++
++ FCM_DEBUG(5,"fsl_elbc_run_command: fmr= %08X fir= %08X fcr= %08X\n",
++ lbc->fmr, lbc->fir, lbc->fcr);
++ FCM_DEBUG(5,"fsl_elbc_run_command: fbar=%08X fpar=%08X fbcr=%08X bank=%d\n",
++ lbc->fbar, lbc->fpar, lbc->fbcr, nmtd->bank);
++
++ /* clear event registers */
++ lbc->lteatr = 0;
++ lbc->ltesr |= (LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ /* execute special operation */
++ lbc->lsor = nmtd->bank;
++
++ /* wait for FCM complete flag or timeout */
++/* TODO */
++#ifdef FCM_USE_INTERRUPT
++ ctrl->status = ctrl->irq_status = 0;
++ wait_event_timeout(ctrl->irq_wait, ctrl->irq_status, FCM_TIMEOUT_MSECS * HZ/1000);
++ ctrl->status = ctrl->irq_status;
++#else
++ {
++ unsigned long timeout;
++ unsigned long now;
++ now = jiffies_to_msecs(jiffies);
++ timeout = now + FCM_TIMEOUT_MSECS;
++ while (time_before(now, timeout)) {
++ ctrl->status = lbc->ltesr & (LTESR_FCT | LTESR_PAR | LTESR_CC);
++ if (ctrl->status)
++ break;
++ now = jiffies_to_msecs(jiffies);
++ }
++ }
++#endif
++
++ /* store mdr value in case it was needed */
++ if (ctrl->use_mdr)
++ ctrl->mdr = lbc->mdr;
++
++ ctrl->use_mdr = 0;
++
++ FCM_DEBUG(5,"fsl_elbc_run_command: stat=%08X mdr= %08X fmr= %08X\n",
++ ctrl->status, ctrl->mdr, lbc->fmr);
++
++ /* returns 0 on success otherwise non-zero) */
++ return (ctrl->status == LTESR_CC ? 0 : EFAULT);
++}
++
++/* cmdfunc send commands to the FCM */
++static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned command,
++ int column, int page_addr)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++
++ ctrl->use_mdr = 0;
++
++ /* clear the read buffer */
++ ctrl->read_bytes = 0;
++ if (command != NAND_CMD_PAGEPROG) {
++ ctrl->index = 0;
++ ctrl->oobbuf = -1;
++ }
++
++ switch (command) {
++ /* READ0 and READ1 read the entire buffer to use hardware ECC */
++ case NAND_CMD_READ1:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READ1, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ ctrl->index = column + 256;
++ goto read0;
++ case NAND_CMD_READ0:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READ0, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ ctrl->index = column;
++read0:
++ if (nmtd->pgs) {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
++ (FIR_OP_RBW << FIR_OP4_SHIFT);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_RBW << FIR_OP3_SHIFT);
++ }
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
++ lbc->fbcr = 0; /* read entire page to enable ECC */
++ set_addr(mtd, 0, page_addr, 0);
++ ctrl->read_bytes = mtd->writesize + mtd->oobsize;
++ goto write_cmd2;
++ /* READOOB read only the OOB becasue no ECC is performed */
++ case NAND_CMD_READOOB:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READOOB, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ if (nmtd->pgs) {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
++ (FIR_OP_RBW << FIR_OP4_SHIFT);
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_RBW << FIR_OP3_SHIFT);
++ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT);
++ }
++ lbc->fbcr = mtd->oobsize - column;
++ set_addr(mtd, column, page_addr, 1);
++ ctrl->read_bytes = mtd->oobsize;
++ ctrl->index = column;
++ goto write_cmd2;
++ /* READID must read all 5 possible bytes while CEB is active */
++ case NAND_CMD_READID:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READID.\n");
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_UA << FIR_OP1_SHIFT) |
++ (FIR_OP_RBW << FIR_OP2_SHIFT);
++ lbc->fcr = (NAND_CMD_READID << FCR_CMD0_SHIFT);
++ lbc->fbcr = 5; /* 5 bytes for manuf, device and exts */
++ ctrl->use_mdr = 1;
++ ctrl->mdr = 0;
++ goto write_cmd0;
++ /* ERASE1 stores the block and page address */
++ case NAND_CMD_ERASE1:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_ERASE1, page_addr:"
++ " 0x%x.\n", page_addr);
++ set_addr(mtd, 0, page_addr, 0);
++ goto end;
++ /* ERASE2 uses the block and page address from ERASE1 */
++ case NAND_CMD_ERASE2:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_ERASE2.\n");
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_PA << FIR_OP1_SHIFT) |
++ (FIR_OP_CM1 << FIR_OP2_SHIFT);
++ lbc->fcr = (NAND_CMD_ERASE1 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_ERASE2 << FCR_CMD1_SHIFT);
++ lbc->fbcr = 0;
++ goto write_cmd1;
++ /* SEQIN sets up the addr buffer and all registers except the length */
++ case NAND_CMD_SEQIN:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_SEQIN/PAGE_PROG, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ if (column == 0) {
++ lbc->fbcr = 0; /* write entire page to enable ECC */
++ } else {
++ lbc->fbcr = 1; /* mark as partial page so no HW ECC */
++ }
++ if (nmtd->pgs) {
++ /* always use READ0 for large page devices */
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_WB << FIR_OP3_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP4_SHIFT);
++ lbc->fcr = (NAND_CMD_SEQIN << FCR_CMD0_SHIFT) |
++ (NAND_CMD_PAGEPROG << FCR_CMD1_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CM2 << FIR_OP1_SHIFT) |
++ (FIR_OP_CA << FIR_OP2_SHIFT) |
++ (FIR_OP_PA << FIR_OP3_SHIFT) |
++ (FIR_OP_WB << FIR_OP4_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP5_SHIFT);
++ if (column >= mtd->writesize) {
++ /* OOB area --> READOOB */
++ column -= mtd->writesize;
++ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 1);
++ } else if (column < 256) {
++ /* First 256 bytes --> READ0 */
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ } else {
++ /* Second 256 bytes --> READ1 */
++ column -= 256;
++ lbc->fcr = (NAND_CMD_READ1 << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ }
++ }
++ goto end;
++ /* PAGEPROG reuses all of the setup from SEQIN and adds the length */
++ case NAND_CMD_PAGEPROG:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_PAGEPROG"
++ " writing %d bytes.\n",ctrl->index);
++ /* if the write did not start at 0 or is not a full page */
++ /* then set the exact length, otherwise use a full page */
++ /* write so the HW generates the ECC. */
++ if (lbc->fbcr ||
++ (ctrl->index != (mtd->writesize + mtd->oobsize)))
++ lbc->fbcr = ctrl->index;
++ goto write_cmd2;
++ /* CMD_STATUS must read the status byte while CEB is active */
++ /* Note - it does not wait for the ready line */
++ case NAND_CMD_STATUS:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_STATUS.\n");
++ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT) |
++ (FIR_OP_RBW << FIR_OP1_SHIFT);
++ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
++ lbc->fbcr = 1;
++ goto write_cmd0;
++ /* RESET without waiting for the ready line */
++ case NAND_CMD_RESET:
++ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_RESET.\n");
++ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT);
++ lbc->fcr = (NAND_CMD_RESET << FCR_CMD0_SHIFT);
++ lbc->fbcr = 0;
++ goto write_cmd0;
++ default:
++ printk("fsl_elbc_cmdfunc: error, unsupported command.\n");
++ goto end;
++ }
++
++ /* Short cuts fall through to save code */
++ write_cmd0:
++ set_addr(mtd, 0, 0, 0);
++ write_cmd1:
++ ctrl->read_bytes = lbc->fbcr;
++ write_cmd2:
++ fsl_elbc_run_command(mtd);
++
++#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
++ /* if we wrote a page then read back the oob to get the ECC */
++ if ((command == NAND_CMD_PAGEPROG) &&
++ (chip->ecc.mode > NAND_ECC_SOFT) &&
++ (lbc->fbcr == 0) &&
++ (ctrl->oobbuf != 0) &&
++ (ctrl->oobbuf != -1)) {
++ int i;
++ uint *oob_config;
++ unsigned char *oob_buf;
++
++ i = ctrl->page;
++ oob_buf = (unsigned char*) ctrl->oobbuf;
++ oob_config = chip->ecc.layout->eccpos;
++
++ /* wait for the write to complete and check it passed */
++ if (!(chip->waitfunc(mtd, chip) & 0x01)) {
++ /* read back the OOB */
++ fsl_elbc_cmdfunc(mtd, NAND_CMD_READOOB, 0, i);
++ /* if it succeeded then copy the ECC bytes */
++ if (ctrl->status == LTESR_CC) {
++ for (i=0; i < chip->ecc.layout->eccbytes; i++) {
++ oob_buf[oob_config[i]] =
++ ctrl->addr[oob_config[i]];
++ }
++ }
++ }
++ }
++#endif
++
++ end:
++ return;
++}
++
++/* select chip */
++
++static void fsl_elbc_select_chip(struct mtd_info *mtd, int chip)
++{
++}
++
++/* fsl_elbc_cmd_ctrl
++ *
++ * Issue command and address cycles to the chip
++*/
++
++static void fsl_elbc_cmd_ctrl(struct mtd_info *mtd, int dat,
++ unsigned int ctrl)
++{
++}
++
++/* fsl_elbc_dev_ready()
++ *
++ * returns 0 if the nand is busy, 1 if it is ready
++*/
++
++static int fsl_elbc_dev_ready(struct mtd_info *mtd)
++{
++ return 0;
++}
++
++/*
++ * FCM does not support 16 bit data busses
++ */
++static u16 fsl_elbc_read_word(struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_ctrl *ctrl = (struct fsl_elbc_ctrl *) chip->controller;
++
++ dev_err(ctrl->device, "fsl_elbc_read_word: UNIMPLEMENTED.\n");
++ return 0;
++}
++
++/*
++ * Write buf to the FCM Controller Data Buffer
++ */
++static void fsl_elbc_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ FCM_DEBUG(3,"fsl_elbc_write_buf: writing %d bytes starting with 0x%lx"
++ " at %d.\n", len, *((unsigned long*) buf), ctrl->index);
++
++ /* If armed catch the address of the OOB buffer so that it can be */
++ /* updated with the real signature after the program comletes */
++ if (!ctrl->oobbuf)
++ ctrl->oobbuf = (int) buf;
++
++ /* copy the data into the FCM hardware buffer and update the index */
++ memcpy(&(ctrl->addr[ctrl->index]), buf, len);
++ ctrl->index += len;
++ return;
++}
++
++
++/*
++ * read a byte from either the FCM hardware buffer if it has any data left
++ * otherwise issue a command to read a single byte.
++ */
++static u_char fsl_elbc_read_byte(struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ unsigned char byte;
++
++ /* If there are still bytes in the FCM then use the next byte */
++ if(ctrl->index < ctrl->read_bytes) {
++ byte = ctrl->addr[(ctrl->index)++];
++ FCM_DEBUG(4,"fsl_elbc_read_byte: byte %u (%02X): %d of %d.\n",
++ byte, byte, ctrl->index-1, ctrl->read_bytes);
++ } else {
++ /* otherwise issue a command to read 1 byte */
++ lbc->fir = (FIR_OP_RSW << FIR_OP0_SHIFT);
++ ctrl->use_mdr = 1;
++ ctrl->read_bytes = 0;
++ ctrl->index = 0;
++ ctrl->read_bytes = 0;
++ ctrl->index = 0;
++ byte = fsl_elbc_run_command(mtd) ? ERR_BYTE : ctrl->mdr & 0xff;
++ FCM_DEBUG(4,"fsl_elbc_read_byte: byte %u (%02X) from bus.\n",
++ byte, byte);
++ }
++
++ return byte;
++}
++
++/*
++ * Read from the FCM Controller Data Buffer
++ */
++static void fsl_elbc_read_buf(struct mtd_info *mtd, u_char* buf, int len)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ int i;
++ int rest;
++ unsigned long old_status;
++
++ FCM_DEBUG(3,"fsl_elbc_read_buf: reading %d bytes.\n", len);
++
++ /* see how much is still in the FCM buffer */
++ i = min((unsigned int)len, (ctrl->read_bytes - ctrl->index));
++ rest = len - i;
++ len = i;
++
++ /* copying bytes even if there was an error so that the oob works */
++ memcpy(buf, &(ctrl->addr[(ctrl->index)]), len);
++ ctrl->index += len;
++
++ /* If more data is needed then issue another block read */
++ if (rest) {
++ FCM_DEBUG(3,"fsl_elbc_read_buf: getting %d more bytes.\n",
++ rest);
++
++ buf += len;
++
++ /* keep last status in case it was an error */
++ old_status = ctrl->status;
++
++ /* read full next page to use HW ECC if enabled */
++ fsl_elbc_cmdfunc(mtd, NAND_CMD_READ0, 0, ctrl->page + 1);
++
++ /* preserve the worst status code */
++ if (ctrl->status == LTESR_CC)
++ ctrl->status = old_status;
++
++ fsl_elbc_read_buf(mtd, buf, rest);
++ }
++ return;
++}
++
++
++/*
++ * Verify buffer against the FCM Controller Data Buffer
++ */
++static int fsl_elbc_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ int i;
++ int rest;
++
++ FCM_DEBUG(3,"fsl_elbc_verify_buf: checking %d bytes starting with 0x%02lx.\n",
++ len, *((unsigned long*) buf));
++
++ /* If last read failed then return error bytes */
++ if (ctrl->status != LTESR_CC) {
++ return EFAULT;
++ }
++
++ /* see how much is still in the FCM buffer */
++ i = min((unsigned int)len, (ctrl->read_bytes - ctrl->index));
++ rest = len - i;
++ len = i;
++
++ if (memcmp(buf, &(ctrl->addr[(ctrl->index)]), len)) {
++ return EFAULT;
++ }
++
++ ctrl->index += len;
++ if (rest) {
++ FCM_DEBUG(3,"fsl_elbc_verify_buf: getting %d more bytes.\n", rest);
++ buf += len;
++
++ /* read full next page to use HW ECC if enabled */
++ fsl_elbc_cmdfunc(mtd, NAND_CMD_READ0, 0, ctrl->page + 1);
++
++ return fsl_elbc_verify_buf(mtd, buf, rest);
++ }
++ return 0;
++}
++
++/* this function is called after Program and Erase Operations to
++ * check for success or failure */
++static int fsl_elbc_wait(struct mtd_info *mtd, struct nand_chip *this)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++
++ if (ctrl->status != LTESR_CC) {
++ return(0x1); /* Status Read error */
++ }
++
++ /* Use READ_STATUS command, but wait for the device to be ready */
++ ctrl->use_mdr = 0;
++ ctrl->oobbuf = -1;
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_RBW << FIR_OP1_SHIFT);
++ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
++ set_addr(mtd, 0, 0, 0);
++ lbc->fbcr = 1;
++ ctrl->index = 0;
++ ctrl->read_bytes = lbc->fbcr;
++ fsl_elbc_run_command(mtd);
++ if (ctrl->status != LTESR_CC) {
++ return(0x1); /* Status Read error */
++ }
++ return chip->read_byte(mtd);
++}
++
++/* ECC handling functions */
++
++/*
++ * fsl_elbc_enable_hwecc - start ECC generation
++ */
++static void fsl_elbc_enable_hwecc(struct mtd_info *mtd, int mode)
++{
++ return;
++}
++
++/*
++ * fsl_elbc_calculate_ecc - Calculate the ECC bytes
++ * This is done by hardware during the write process, so we use this
++ * to arm the oob buf capture on the next write_buf() call. The ECC bytes
++ * only need to be captured if CONFIG_MTD_NAND_VERIFY_WRITE is defined which
++ * reads back the pages and checks they match the data and oob buffers.
++ */
++static int fsl_elbc_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code)
++{
++#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ /* arm capture of oob buf ptr on next write_buf */
++ ctrl->oobbuf = 0;
++#endif
++ return 0;
++}
++
++/*
++ * fsl_elbc_correct_data - Detect and correct bit error(s)
++ * The detection and correction is done automatically by the hardware,
++ * if the complete page was read. If the status code is okay then there
++ * was no error, otherwise we return an error code indicating an uncorrectable
++ * error.
++ */
++static int fsl_elbc_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ /* No errors */
++ if (ctrl->status == LTESR_CC)
++ return 0;
++
++ return -1; /* uncorrectable error */
++}
++
++/*************************************************************************/
++/* Chip setup and control functions */
++/*************************************************************************/
++
++/*
++ * Dummy scan_bbt to complete setup of the FMR based on NAND size
++ */
++static int fsl_elbc_chip_init_tail (struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct fsl_elbc_mtd *nmtd = chip->priv;
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ unsigned int i;
++ unsigned int al;
++
++ /* calculate FMR Address Length field */
++ al = 0;
++ for (i = chip->pagemask >> 16; i ; i >>= 8) {
++ al++;
++ }
++
++ /* add to ECCM mode set in fsl_elbc_init */
++ nmtd->fmr |= 12 << FMR_CWTO_SHIFT | /* Timeout > 12 mSecs */
++ al << FMR_AL_SHIFT;
++
++ FCM_DEBUG(1,"fsl_elbc_init: nand->options = %08X\n", chip->options);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->numchips = %10d\n", chip->numchips);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->chipsize = %10ld\n", chip->chipsize);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->pagemask = %10X\n", chip->pagemask);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->chip_delay = %8d\n", chip->chip_delay);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->badblockpos = %7d\n", chip->badblockpos);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->chip_shift = %8d\n", chip->chip_shift);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->page_shift = %8d\n", chip->page_shift);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->phys_erase_shift = %2d\n",
++ chip->phys_erase_shift);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->ecclayout= %10p\n", chip->ecclayout);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccmode = %10d\n", chip->ecc.mode );
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccsteps = %10d\n", chip->ecc.steps);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccsize = %10d\n", chip->ecc.size );
++ FCM_DEBUG(1,"fsl_elbc_init: nand->eccbytes = %10d\n", chip->ecc.bytes);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->ecctotal = %10d\n", chip->ecc.total);
++ FCM_DEBUG(1,"fsl_elbc_init: nand->ecclayout= %10p\n", chip->ecc.layout);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->flags = %08X\n", mtd->flags);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->size = %10d\n", mtd->size);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->erasesize = %10d\n", mtd->erasesize);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->writesize = %10d\n", mtd->writesize);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->oobsize = %10d\n", mtd->oobsize);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->ecctype = %10d\n", mtd->ecctype);
++ FCM_DEBUG(1,"fsl_elbc_init: mtd->eccsize = %10d\n", mtd->eccsize);
++
++ /* adjust Option Register and ECC to match Flash page size */
++ if (mtd->writesize == 512)
++ lbc->bank[nmtd->bank].or &= ~(OR_FCM_PGS);
++ else if (mtd->writesize == 2048) {
++ lbc->bank[nmtd->bank].or |= OR_FCM_PGS;
++ /* adjust ecc setup if needed */
++ if ( (lbc->bank[nmtd->bank].br & BR_DECC) == BR_DECC_CHK_GEN) {
++ chip->ecc.size = 2048;
++ chip->ecc.steps = 1;
++//TODO chip->ecc.bytes += 9;
++//TODO chip->ecc.total += 9;
++ chip->ecc.layout = (nmtd->fmr & FMR_ECCM) ?
++ &fsl_elbc_oob_lp_eccm1 : &fsl_elbc_oob_lp_eccm0;
++ mtd->ecclayout = chip->ecc.layout;
++ }
++ }
++ else {
++ printk("fsl_elbc_init: page size %d is not supported\n",
++ mtd->writesize);
++ return -1;
++ }
++ nmtd->pgs = (lbc->bank[nmtd->bank].or>>OR_FCM_PGS_SHIFT) & 1;
++
++ /* fix up the oobavail size in case the layout was changed */
++ chip->ecc.layout->oobavail = 0;
++ for (i = 0; chip->ecc.layout->oobfree[i].length; i++)
++ chip->ecc.layout->oobavail +=
++ chip->ecc.layout->oobfree[i].length;
++
++ /* return to the default bbt_scan_routine */
++ chip->scan_bbt = nand_default_bbt;
++
++ /* restore complete options including the real SKIP_BBTSCAN setting */
++ chip->options = nmtd->options;
++
++ /* Check, if we should skip the bad block table scan */
++ if (chip->options & NAND_SKIP_BBTSCAN)
++ return 0;
++
++ return chip->scan_bbt(mtd);
++}
++/* fsl_elbc_chip_init
++ *
++ * init a single instance of an chip
++*/
++
++static int fsl_elbc_chip_init(struct fsl_elbc_mtd *nmtd)
++{
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ struct nand_chip *chip = &nmtd->chip;
++
++ FCM_DEBUG(1,"eLBC Set Information for bank %d\n", nmtd->bank);
++ FCM_DEBUG(1," name = %s\n",
++ nmtd->pl_chip.name ? nmtd->pl_chip.name : "(NULL)");
++ FCM_DEBUG(1," nr_chips = %d\n", nmtd->pl_chip.nr_chips);
++ FCM_DEBUG(1," partitions = %s\n",
++ nmtd->pl_chip.partitions_str ?
++ nmtd->pl_chip.partitions_str : "(NULL)");
++ dev_dbg(nmtd->device,"eLBC Set Information for bank %d\n", nmtd->bank);
++ dev_dbg(nmtd->device," name = %s\n",
++ nmtd->name ? nmtd->name : "(NULL)");
++ dev_dbg(nmtd->device," nr_chips = %d\n", nmtd->pl_chip.nr_chips);
++ dev_dbg(nmtd->device," partitions = %s\n",
++ nmtd->pl_chip.partitions_str ?
++ nmtd->pl_chip.partitions_str : "(NULL)");
++
++ /* Fill in fsl_elbc_mtd structure */
++ nmtd->name = (char *) nmtd->pl_chip.name;
++ nmtd->mtd.name = nmtd->name;
++ nmtd->mtd.priv = chip;
++ nmtd->mtd.owner = THIS_MODULE;
++ nmtd->pgs = (lbc->bank[nmtd->bank].or>>OR_FCM_PGS_SHIFT) & 1;
++// TODO nmtd->fmr = FMR_ECCM; /* rest filled in later */
++ nmtd->fmr = 0; /* rest filled in later */
++
++ /* fill in nand_chip structure */
++ /* set physical base address from the Base Register */
++ chip->IO_ADDR_W = (void __iomem*) (nmtd->pbase);
++ chip->IO_ADDR_R = chip->IO_ADDR_W;
++
++ /* set up function call table */
++// chip->hwcontrol = fsl_elbc_hwcontrol;
++ chip->read_byte = fsl_elbc_read_byte;
++ chip->read_word = fsl_elbc_read_word;
++ chip->write_buf = fsl_elbc_write_buf;
++ chip->read_buf = fsl_elbc_read_buf;
++ chip->verify_buf = fsl_elbc_verify_buf;
++ chip->select_chip = fsl_elbc_select_chip;
++// TODO chip->block_bad
++// TODO chip->block_markbad
++ chip->cmd_ctrl = fsl_elbc_cmd_ctrl;
++ chip->dev_ready = fsl_elbc_dev_ready;
++ chip->cmdfunc = fsl_elbc_cmdfunc;
++ chip->waitfunc = fsl_elbc_wait;
++ chip->scan_bbt = fsl_elbc_chip_init_tail;
++// TODO chip->errstat
++
++ /* set up nand options */
++ chip->options = NAND_NO_READRDY;
++ chip->chip_delay = 1;
++
++ chip->controller = &ctrl->controller;
++ chip->priv = nmtd;
++
++ /* If CS Base Register selects full hardware ECC then use it */
++ if ( (lbc->bank[nmtd->bank].br & BR_DECC) == BR_DECC_CHK_GEN) {
++ chip->ecc.mode = NAND_ECC_HW;
++ chip->ecc.calculate = fsl_elbc_calculate_ecc;
++ chip->ecc.correct = fsl_elbc_correct_data;
++ chip->ecc.hwctl = fsl_elbc_enable_hwecc;
++ /* put in small page settings and adjust later if needed */
++ chip->ecc.layout = (nmtd->fmr & FMR_ECCM) ?
++ &fsl_elbc_oob_sp_eccm1 : &fsl_elbc_oob_sp_eccm0;
++ chip->ecc.size = 512;
++ chip->ecc.bytes = 3;
++ } else {
++ /* otherwise fall back to default software ECC */
++ chip->ecc.mode = NAND_ECC_SOFT;
++ }
++
++ /* force BBT scan to get to custom scan_bbt for final settings */
++ nmtd->options = chip->options;
++ chip-> options &= ~(NAND_SKIP_BBTSCAN);
++
++ return 0;
++}
++
++
++
++static int fsl_elbc_chip_remove(struct platform_device *pdev)
++{
++ struct fsl_elbc_mtd *nmtd = platform_get_drvdata(pdev);
++ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
++
++ nand_release(&nmtd->mtd);
++
++ if (nmtd->vbase != 0) {
++ iounmap((void __iomem*)nmtd->vbase);
++ nmtd->vbase = 0;
++ }
++
++/* TODO
++ if (nmtd->area != NULL) {
++ release_resource(nmtd->area);
++ kfree(nmtd->area);
++ nmtd->area = NULL;
++ }
++*/
++
++ platform_set_drvdata(pdev, NULL);
++
++ ctrl->nmtd[nmtd->bank] = NULL;
++ atomic_dec(&ctrl->childs_active);
++
++ kfree(nmtd);
++
++ return 0;
++}
++
++#ifdef CONFIG_MTD_PARTITIONS
++const char *part_probes[] = { "cmdlinepart", NULL };
++#endif
++
++static int fsl_elbc_chip_probe(struct platform_device *pdev)
++{
++ struct platform_fsl_nand_chip *pnc = pdev->dev.platform_data;
++ struct fsl_elbc_ctrl *ctrl = &elbc_ctrl;
++ volatile lbus83xx_t *lbc = ctrl->regs;
++ struct fsl_elbc_mtd *nmtd;
++ struct resource *res;
++ int err = 0;
++ int size;
++ int bank;
++ int mtd_parts_nb = 0;
++ struct mtd_partition *mtd_parts = 0;
++
++ dev_dbg(&pdev->dev, "fsl_elbc_chip_probe(%p)\n", pdev);
++
++ /* check that the platform data structure was supplied */
++ if (pnc == NULL) {
++ dev_err(&pdev->dev,"Device needs a platform data structure\n");
++ return -ENOENT;
++ }
++
++ /* check that the device has a name */
++ if (pnc->name == NULL) {
++ dev_err(&pdev->dev,"Device requires a name\n");
++ return -ENOENT;
++ }
++ /* get, allocate and map the memory resource */
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (res == NULL) {
++ dev_err(&pdev->dev,"failed to get memory region resource\n");
++ return -ENOENT;
++ }
++ /* find which chip select it is connected to */
++ for (bank=0; bank < MAX_BANKS; bank++) {
++ if ( (lbc->bank[bank].br & BR_V) &&
++ ((lbc->bank[bank].br & BR_MSEL) == BR_MS_FCM) &&
++ ((lbc->bank[bank].br & lbc->bank[bank].or & BR_BA) ==
++ res->start) ) {
++ break;
++ }
++ }
++
++ if (bank >= MAX_BANKS) {
++ dev_err(&pdev->dev,"address did not match any chip selects\n");
++ return -ENOENT;
++ }
++
++ nmtd = kmalloc (sizeof(*nmtd), GFP_KERNEL);
++ if (!nmtd) {
++ dev_err(ctrl->device, "no memory for nand chip structure\n");
++ return -ENOMEM;
++ }
++ memset(nmtd, 0, sizeof(*nmtd));
++
++ platform_set_drvdata(pdev, nmtd);
++
++ atomic_inc(&ctrl->childs_active);
++ if (pnc)
++ memcpy(&(nmtd->pl_chip), pnc, sizeof(*pnc));
++ ctrl->nmtd[bank] = nmtd;
++ nmtd->bank = bank;
++ nmtd->ctrl = ctrl;
++ nmtd->device = &pdev->dev;
++
++ size = ( res->end - res->start ) + 1;
++/* TODO - already requested by the elbc instance ?????
++ ctrl->area = request_mem_region(res->start, size, pdev->name);
++ if (ctrl->area == NULL) {
++ dev_err(&pdev->dev, "failed to get memory region\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++*/
++ nmtd->pbase = res->start;
++ nmtd->vbase = (unsigned int) ioremap(nmtd->pbase, FCM_SIZE);
++ if (nmtd->vbase == 0) {
++ dev_err(ctrl->device, "failed to ioremap() memory region\n");
++ err = -EIO;
++ goto exit_error;
++ }
++
++ err = fsl_elbc_chip_init(nmtd);
++ if (err != 0)
++ goto exit_error;
++
++ err = nand_scan(&nmtd->mtd,
++ nmtd->pl_chip.nr_chips ? nmtd->pl_chip.nr_chips : 1 );
++ if (err != 0)
++ goto exit_error;
++
++#ifdef CONFIG_MTD_PARTITIONS
++ /* check for command line partition information */
++ if (!(nmtd->pl_chip.options & FSL_ELBC_NO_CMDLINE_PARTITIONS))
++ mtd_parts_nb = parse_mtd_partitions(
++ &nmtd->mtd,
++ part_probes,
++ &mtd_parts,
++ 0);
++#if 0
++ /* otherwise try local partition string */
++ if (mtd_parts_nb <= 0 && nmtd->pl_chip.partitions_str)
++ mtd_parts_nb = parse_mtd_string_partitions(
++ &nmtd->mtd,
++ part_probes,
++ &mtd_parts,
++ 0,
++ nmtd->pl_chip.partitions_str);
++#endif
++ if (mtd_parts_nb > 0)
++ err = add_mtd_partitions(&nmtd->mtd,
++ mtd_parts,
++ mtd_parts_nb);
++ else
++#endif
++ err = add_mtd_device(&nmtd->mtd);
++
++ if (err == 0)
++ return 0;
++
++ exit_error:
++ fsl_elbc_chip_remove(pdev);
++
++ if (err == 0)
++ err = -EINVAL;
++ return err;
++}
++
++
++/**************************************************************************/
++/* Controller setup and control functions */
++/**************************************************************************/
++
++static int fsl_elbc_ctrl_init(struct fsl_elbc_ctrl *ctrl,
++ struct platform_device *pdev)
++{
++ volatile lbus83xx_t *lbc= (lbus83xx_t*) ctrl->regs;
++
++ /* Enable only FCM detection of timeouts, ECC errors and completion */
++ lbc->ltedr = ~(LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ /* clear event registers */
++ lbc->lteatr = 0;
++ lbc->ltesr |= (LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ /* Enable interrupts for any detected events */
++ lbc->lteir = ~0;
++
++ ctrl->read_bytes = 0;
++ ctrl->index = 0;
++ ctrl->addr = (unsigned char*) (NULL);
++ ctrl->oobbuf = -1;
++
++ return 0;
++}
++
++static int fsl_elbc_ctrl_remove(struct platform_device *pdev)
++{
++ struct fsl_elbc_ctrl *ctrl = platform_get_drvdata(pdev);
++
++ if (atomic_read(&ctrl->childs_active))
++ return -EBUSY;
++
++ if (ctrl->regs != NULL) {
++ iounmap(ctrl->regs);
++ ctrl->regs = NULL;
++ }
++
++/* TODO
++ if (ctrl->area != NULL) {
++ release_resource(ctrl->area);
++ kfree(ctrl->area);
++ ctrl->area = NULL;
++ }
++*/
++ if (ctrl->irq) {
++ free_irq(ctrl->irq, pdev);
++ ctrl->irq = 0;
++ }
++
++ platform_set_drvdata(pdev, NULL);
++ memset(ctrl, 0, sizeof(*ctrl));
++
++ return 0;
++}
++
++
++/* interrupt handler code */
++
++static irqreturn_t fsl_elbc_ctrl_irq(int irqno, void *param)
++{
++ struct fsl_elbc_ctrl *ctrl = platform_get_drvdata((struct platform_device*)param);
++ volatile lbus83xx_t *lbc= (lbus83xx_t*) ctrl->regs;
++
++ ctrl->irq_status = lbc->ltesr & (LTESR_FCT | LTESR_PAR | LTESR_CC);
++ if (ctrl->irq_status)
++ wake_up(&ctrl->irq_wait);
++
++ /* clear event registers */
++ lbc->lteatr = 0;
++ lbc->ltesr |= ctrl->irq_status;
++
++ return IRQ_HANDLED;
++}
++
++
++/* fsl_elbc_ctrl_probe
++ *
++ * called by device layer when it finds a device matching
++ * one our driver can handled. This code allocates all of
++ * the resources needed for the controller only. The
++ * resources for the NAND banks themselves are allocated
++ * in the chip probe function.
++*/
++
++static int fsl_elbc_ctrl_probe(struct platform_device *pdev)
++{
++ struct fsl_elbc_ctrl *ctrl;
++ struct resource *res;
++ int err = 0;
++ int size;
++ int ret;
++
++ dev_dbg(&pdev->dev, "fsl_elbc_ctrl_probe(%p)\n", pdev);
++ ctrl = &elbc_ctrl;
++
++ memset(ctrl, 0, sizeof(*ctrl));
++ platform_set_drvdata(pdev, ctrl);
++
++ spin_lock_init(&ctrl->controller.lock);
++ init_waitqueue_head(&ctrl->controller.wq);
++ init_waitqueue_head(&ctrl->irq_wait);
++
++ /* get, allocate and map the memory resource */
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (res == NULL) {
++ dev_err(&pdev->dev,"failed to get memory region resouce\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++
++ size = ( res->end - res->start ) + 1;
++/* TODO - already requested by the elbc instance ?????
++ ctrl->area = request_mem_region(res->start, size, pdev->name);
++ if (ctrl->area == NULL) {
++ dev_err(&pdev->dev, "failed to get memory region\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++*/
++ ctrl->regs = ioremap(res->start, size);
++ if (ctrl->regs == 0) {
++ dev_err(&pdev->dev, "failed to ioremap() region\n");
++ err = -EIO;
++ goto exit_error;
++ }
++
++ /* get and allocate the irq resource */
++ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
++ if (res == NULL) {
++ dev_err(&pdev->dev, "failed to get irq resource\n");
++ err = -ENOENT;
++ goto exit_error;
++ }
++
++ ret = request_irq(res->start, fsl_elbc_ctrl_irq, 0, pdev->name, pdev);
++ if (ret != 0) {
++ dev_err(&pdev->dev, "failed to install irq (%d)\n", ret);
++ err = -EIO;
++ goto exit_error;
++ }
++
++ ctrl->irq = res->start;
++ ctrl->device = &pdev->dev;
++ dev_dbg(&pdev->dev, "mapped registers at %p\n", ctrl->regs);
++
++ /* initialise the hardware */
++
++ err = fsl_elbc_ctrl_init(ctrl, pdev);
++ if (err == 0)
++ return 0;
++
++ exit_error:
++ fsl_elbc_ctrl_remove(pdev);
++
++ if (err == 0)
++ err = -EINVAL;
++ return err;
++}
++
++/* PM Support */
++#ifdef CONFIG_PM
++
++static int fsl_elbc_ctrl_suspend(struct platform_device *dev, pm_message_t pm)
++{
++ return 0;
++}
++
++static int fsl_elbc_ctrl_resume(struct platform_device *dev)
++{
++ return 0;
++}
++
++#else
++#define fsl_elbc_ctrl_suspend NULL
++#define fsl_elbc_ctrl_resume NULL
++#endif
++
++/*************************************************************************/
++/* device driver registration */
++/*************************************************************************/
++
++
++static struct platform_driver fsl_elbc_ctrl_driver = {
++ .probe = fsl_elbc_ctrl_probe,
++ .remove = fsl_elbc_ctrl_remove,
++ .suspend = fsl_elbc_ctrl_suspend,
++ .resume = fsl_elbc_ctrl_resume,
++ .driver = {
++ .name = "fsl-elbc",
++ .owner = THIS_MODULE,
++ },
++};
++
++static struct platform_driver fsl_elbc_chip_driver = {
++ .probe = fsl_elbc_chip_probe,
++ .remove = fsl_elbc_chip_remove,
++ .driver = {
++ .name = "fsl-nand",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init fsl_elbc_init(void)
++{
++ int ret;
++
++ printk("Freescale eLBC NAND Driver (C) 2006 Freescale\n");
++
++ ret = platform_driver_register(&fsl_elbc_ctrl_driver);
++ if (!ret)
++ ret = platform_driver_register(&fsl_elbc_chip_driver);
++
++ return ret;
++}
++
++static void __exit fsl_elbc_exit(void)
++{
++ platform_driver_unregister(&fsl_elbc_chip_driver);
++ platform_driver_unregister(&fsl_elbc_ctrl_driver);
++}
++
++module_init(fsl_elbc_init);
++module_exit(fsl_elbc_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Nick Spence");
++MODULE_DESCRIPTION("Freescale Enhanced Local Bus Controller MTD NAND driver");
+diff -urN linux-2.6.24.orig/drivers/mtd/nand/Kconfig linux-2.6.24/drivers/mtd/nand/Kconfig
+--- linux-2.6.24.orig/drivers/mtd/nand/Kconfig 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/drivers/mtd/nand/Kconfig 2008-02-18 16:39:43.000000000 +0100
+@@ -284,6 +284,14 @@
+ depends on MTD_NAND && MACH_ARMCORE
+
+
++config MTD_NAND_FSL_ELBC
++ tristate "NAND support for MPC831x"
++ depends on MTD_NAND && PPC_MPC831x
++ help
++ The MPC831x includes a NAND FLASH Controller Module with built-in hardware
++ ECC capabilities. Enabling this This option will enable you to use these to
++ control external NAND device.
++
+ config MTD_NAND_NANDSIM
+ tristate "Support for NAND Flash Simulator"
+ depends on MTD_PARTITIONS
+diff -urN linux-2.6.24.orig/drivers/mtd/nand/Makefile linux-2.6.24/drivers/mtd/nand/Makefile
+--- linux-2.6.24.orig/drivers/mtd/nand/Makefile 2008-01-24 23:58:37.000000000 +0100
++++ linux-2.6.24/drivers/mtd/nand/Makefile 2008-02-18 16:40:08.000000000 +0100
+@@ -29,5 +29,6 @@
+ obj-$(CONFIG_MTD_NAND_BASLER_EXCITE) += excite_nandflash.o
+ obj-$(CONFIG_MTD_NAND_PLATFORM) += plat_nand.o
+ obj-$(CONFIG_MTD_ALAUDA) += alauda.o
++obj-$(CONFIG_MTD_NAND_FSL_ELBC) += fsl_elbc.o
+
+ nand-objs := nand_base.o nand_bbt.o
+diff -urN linux-2.6.24.orig/include/linux/mtd/fsl_elbc.h linux-2.6.24/include/linux/mtd/fsl_elbc.h
+--- linux-2.6.24.orig/include/linux/mtd/fsl_elbc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24/include/linux/mtd/fsl_elbc.h 2008-02-18 16:39:43.000000000 +0100
+@@ -0,0 +1,313 @@
++/*
++ * (C) Copyright 2004-2006 Freescale Semiconductor, Inc.
++ *
++ * Freescale Enhanced Local Bus Controller Internal Memory Map
++ *
++ * History :
++ * 20061010 : Extracted fomr immap_83xx.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.
++ *
++ * 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
++ *
++ */
++#ifdef __KERNEL__
++#ifndef __FSL_ELBC__
++#define __FSL_ELBC__
++
++/*
++ * Local Bus Controller Registers
++ */
++typedef struct lbus_bank{
++ u32 br; /**< Base Register */
++#define BR0 0x5000
++#define BR1 0x5008
++#define BR2 0x5010
++#define BR3 0x5018
++#define BR4 0x5020
++#define BR5 0x5028
++#define BR6 0x5030
++#define BR7 0x5038
++
++#define BR_BA 0xFFFF8000
++#define BR_BA_SHIFT 15
++#define BR_PS 0x00001800
++#define BR_PS_SHIFT 11
++#define BR_PS_8 0x00000800 /* Port Size 8 bit */
++#define BR_PS_16 0x00001000 /* Port Size 16 bit */
++#define BR_PS_32 0x00001800 /* Port Size 32 bit */
++#define BR_DECC 0x00000600
++#define BR_DECC_SHIFT 9
++#define BR_DECC_OFF 0x00000000 /* HW ECC checking and generation off */
++#define BR_DECC_CHK 0x00000200 /* HW ECC checking on, generation off */
++#define BR_DECC_CHK_GEN 0x00000400 /* HW ECC checking and generation on */
++#define BR_WP 0x00000100
++#define BR_WP_SHIFT 8
++#define BR_MSEL 0x000000E0
++#define BR_MSEL_SHIFT 5
++#define BR_MS_GPCM 0x00000000 /* GPCM */
++#define BR_MS_FCM 0x00000020 /* FCM */
++#define BR_MS_SDRAM 0x00000060 /* SDRAM */
++#define BR_MS_UPMA 0x00000080 /* UPMA */
++#define BR_MS_UPMB 0x000000A0 /* UPMB */
++#define BR_MS_UPMC 0x000000C0 /* UPMC */
++#define BR_V 0x00000001
++#define BR_V_SHIFT 0
++#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V)
++
++ u32 or; /**< Base Register */
++#define OR0 0x5004
++#define OR1 0x500C
++#define OR2 0x5014
++#define OR3 0x501C
++#define OR4 0x5024
++#define OR5 0x502C
++#define OR6 0x5034
++#define OR7 0x503C
++
++#define OR_GPCM_AM 0xFFFF8000
++#define OR_GPCM_AM_SHIFT 15
++#define OR_GPCM_BCTLD 0x00001000
++#define OR_GPCM_BCTLD_SHIFT 12
++#define OR_GPCM_CSNT 0x00000800
++#define OR_GPCM_CSNT_SHIFT 11
++#define OR_GPCM_ACS 0x00000600
++#define OR_GPCM_ACS_SHIFT 9
++#define OR_GPCM_ACS_0b10 0x00000400
++#define OR_GPCM_ACS_0b11 0x00000600
++#define OR_GPCM_XACS 0x00000100
++#define OR_GPCM_XACS_SHIFT 8
++#define OR_GPCM_SCY 0x000000F0
++#define OR_GPCM_SCY_SHIFT 4
++#define OR_GPCM_SCY_1 0x00000010
++#define OR_GPCM_SCY_2 0x00000020
++#define OR_GPCM_SCY_3 0x00000030
++#define OR_GPCM_SCY_4 0x00000040
++#define OR_GPCM_SCY_5 0x00000050
++#define OR_GPCM_SCY_6 0x00000060
++#define OR_GPCM_SCY_7 0x00000070
++#define OR_GPCM_SCY_8 0x00000080
++#define OR_GPCM_SCY_9 0x00000090
++#define OR_GPCM_SCY_10 0x000000a0
++#define OR_GPCM_SCY_11 0x000000b0
++#define OR_GPCM_SCY_12 0x000000c0
++#define OR_GPCM_SCY_13 0x000000d0
++#define OR_GPCM_SCY_14 0x000000e0
++#define OR_GPCM_SCY_15 0x000000f0
++#define OR_GPCM_SETA 0x00000008
++#define OR_GPCM_SETA_SHIFT 3
++#define OR_GPCM_TRLX 0x00000004
++#define OR_GPCM_TRLX_SHIFT 2
++#define OR_GPCM_EHTR 0x00000002
++#define OR_GPCM_EHTR_SHIFT 1
++#define OR_GPCM_EAD 0x00000001
++#define OR_GPCM_EAD_SHIFT 0
++
++#define OR_UPM_AM 0xFFFF8000
++#define OR_UPM_AM_SHIFT 15
++#define OR_UPM_XAM 0x00006000
++#define OR_UPM_XAM_SHIFT 13
++#define OR_UPM_BCTLD 0x00001000
++#define OR_UPM_BCTLD_SHIFT 12
++#define OR_UPM_BI 0x00000100
++#define OR_UPM_BI_SHIFT 8
++#define OR_UPM_TRLX 0x00000004
++#define OR_UPM_TRLX_SHIFT 2
++#define OR_UPM_EHTR 0x00000002
++#define OR_UPM_EHTR_SHIFT 1
++#define OR_UPM_EAD 0x00000001
++#define OR_UPM_EAD_SHIFT 0
++
++#define OR_SDRAM_AM 0xFFFF8000
++#define OR_SDRAM_AM_SHIFT 15
++#define OR_SDRAM_XAM 0x00006000
++#define OR_SDRAM_XAM_SHIFT 13
++#define OR_SDRAM_COLS 0x00001C00
++#define OR_SDRAM_COLS_SHIFT 10
++#define OR_SDRAM_ROWS 0x000001C0
++#define OR_SDRAM_ROWS_SHIFT 6
++#define OR_SDRAM_PMSEL 0x00000020
++#define OR_SDRAM_PMSEL_SHIFT 5
++#define OR_SDRAM_EAD 0x00000001
++#define OR_SDRAM_EAD_SHIFT 0
++
++#define OR_FCM_AM 0xFFFF8000
++#define OR_FCM_AM_SHIFT 15
++#define OR_FCM_BCTLD 0x00001000
++#define OR_FCM_BCTLD_SHIFT 12
++#define OR_FCM_PGS 0x00000400
++#define OR_FCM_PGS_SHIFT 10
++#define OR_FCM_CSCT 0x00000200
++#define OR_FCM_CSCT_SHIFT 9
++#define OR_FCM_CST 0x00000100
++#define OR_FCM_CST_SHIFT 8
++#define OR_FCM_CHT 0x00000080
++#define OR_FCM_CHT_SHIFT 7
++#define OR_FCM_SCY 0x00000070
++#define OR_FCM_SCY_SHIFT 4
++#define OR_FCM_SCY_1 0x00000010
++#define OR_FCM_SCY_2 0x00000020
++#define OR_FCM_SCY_3 0x00000030
++#define OR_FCM_SCY_4 0x00000040
++#define OR_FCM_SCY_5 0x00000050
++#define OR_FCM_SCY_6 0x00000060
++#define OR_FCM_SCY_7 0x00000070
++#define OR_FCM_RST 0x00000008
++#define OR_FCM_RST_SHIFT 3
++#define OR_FCM_TRLX 0x00000004
++#define OR_FCM_TRLX_SHIFT 2
++#define OR_FCM_EHTR 0x00000002
++#define OR_FCM_EHTR_SHIFT 1
++} lbus_bank_t;
++
++typedef struct lbus83xx {
++ lbus_bank_t bank[8];
++ u8 res0[0x28];
++ u32 mar; /**< UPM Address Register */
++ u8 res1[0x4];
++ u32 mamr; /**< UPMA Mode Register */
++ u32 mbmr; /**< UPMB Mode Register */
++ u32 mcmr; /**< UPMC Mode Register */
++ u8 res2[0x8];
++ u32 mrtpr; /**< Memory Refresh Timer Prescaler Register */
++ u32 mdr; /**< UPM Data Register */
++ u8 res3[0x4];
++ u32 lsor; /**< Special Operation Initiation Register */
++ u32 lsdmr; /**< SDRAM Mode Register */
++ u8 res4[0x8];
++ u32 lurt; /**< UPM Refresh Timer */
++ u32 lsrt; /**< SDRAM Refresh Timer */
++ u8 res5[0x8];
++ u32 ltesr; /**< Transfer Error Status Register */
++#define LTESR_BM 0x80000000
++#define LTESR_FCT 0x40000000
++#define LTESR_PAR 0x20000000
++#define LTESR_WP 0x04000000
++#define LTESR_ATMW 0x00800000
++#define LTESR_ATMR 0x00400000
++#define LTESR_CS 0x00080000
++#define LTESR_CC 0x00000001
++ u32 ltedr; /**< Transfer Error Disable Register */
++ u32 lteir; /**< Transfer Error Interrupt Register */
++ u32 lteatr; /**< Transfer Error Attributes Register */
++ u32 ltear; /**< Transfer Error Address Register */
++ u8 res6[0xC];
++ u32 lbcr; /**< Configuration Register */
++#define LBCR_LDIS 0x80000000
++#define LBCR_LDIS_SHIFT 31
++#define LBCR_BCTLC 0x00C00000
++#define LBCR_BCTLC_SHIFT 22
++#define LBCR_AHD 0x00200000
++#define LBCR_LPBSE 0x00020000
++#define LBCR_LPBSE_SHIFT 17
++#define LBCR_EPAR 0x00010000
++#define LBCR_EPAR_SHIFT 16
++#define LBCR_BMT 0x0000FF00
++#define LBCR_BMT_SHIFT 8
++#define LBCR_INIT 0x00040000
++ u32 lcrr; /**< Clock Ratio Register */
++#define LCRR_DBYP 0x80000000
++#define LCRR_DBYP_SHIFT 31
++#define LCRR_BUFCMDC 0x30000000
++#define LCRR_BUFCMDC_SHIFT 28
++#define LCRR_ECL 0x03000000
++#define LCRR_ECL_SHIFT 24
++#define LCRR_EADC 0x00030000
++#define LCRR_EADC_SHIFT 16
++#define LCRR_CLKDIV 0x0000000F
++#define LCRR_CLKDIV_SHIFT 0
++ u8 res7[0x8];
++ u32 fmr; /**< Flash Mode Register */
++#define FMR_CWTO 0x0000F000
++#define FMR_CWTO_SHIFT 12
++#define FMR_BOOT 0x00000800
++#define FMR_ECCM 0x00000100
++#define FMR_AL 0x00000030
++#define FMR_AL_SHIFT 4
++#define FMR_OP 0x00000003
++#define FMR_OP_SHIFT 0
++ u32 fir; /**< Flash Instruction Register */
++#define FIR_OP0 0xF0000000
++#define FIR_OP0_SHIFT 28
++#define FIR_OP1 0x0F000000
++#define FIR_OP1_SHIFT 24
++#define FIR_OP2 0x00F00000
++#define FIR_OP2_SHIFT 20
++#define FIR_OP3 0x000F0000
++#define FIR_OP3_SHIFT 16
++#define FIR_OP4 0x0000F000
++#define FIR_OP4_SHIFT 12
++#define FIR_OP5 0x00000F00
++#define FIR_OP5_SHIFT 8
++#define FIR_OP6 0x000000F0
++#define FIR_OP6_SHIFT 4
++#define FIR_OP7 0x0000000F
++#define FIR_OP7_SHIFT 0
++#define FIR_OP_NOP 0x0 /* No operation and end of sequence */
++#define FIR_OP_CA 0x1 /* Issue current column address */
++#define FIR_OP_PA 0x2 /* Issue current block+page address */
++#define FIR_OP_UA 0x3 /* Issue user defined address */
++#define FIR_OP_CM0 0x4 /* Issue command from FCR[CMD0] */
++#define FIR_OP_CM1 0x5 /* Issue command from FCR[CMD1] */
++#define FIR_OP_CM2 0x6 /* Issue command from FCR[CMD2] */
++#define FIR_OP_CM3 0x7 /* Issue command from FCR[CMD3] */
++#define FIR_OP_WB 0x8 /* Write FBCR bytes from FCM buffer */
++#define FIR_OP_WS 0x9 /* Write 1 or 2 bytes from MDR[AS] */
++#define FIR_OP_RB 0xA /* Read FBCR bytes to FCM buffer */
++#define FIR_OP_RS 0xB /* Read 1 or 2 bytes to MDR[AS] */
++#define FIR_OP_CW0 0xC /* Wait then issue FCR[CMD0] */
++#define FIR_OP_CW1 0xD /* Wait then issue FCR[CMD1] */
++#define FIR_OP_RBW 0xE /* Wait then read FBCR bytes */
++#define FIR_OP_RSW 0xE /* Wait then read 1 or 2 bytes */
++ u32 fcr; /**< Flash Command Register */
++#define FCR_CMD0 0xFF000000
++#define FCR_CMD0_SHIFT 24
++#define FCR_CMD1 0x00FF0000
++#define FCR_CMD1_SHIFT 16
++#define FCR_CMD2 0x0000FF00
++#define FCR_CMD2_SHIFT 8
++#define FCR_CMD3 0x000000FF
++#define FCR_CMD3_SHIFT 0
++ u32 fbar; /**< Flash Block Address Register */
++#define FBAR_BLK 0x00FFFFFF
++ u32 fpar; /**< Flash Page Address Register */
++#define FPAR_SP_PI 0x00007C00
++#define FPAR_SP_PI_SHIFT 10
++#define FPAR_SP_MS 0x00000200
++#define FPAR_SP_CI 0x000001FF
++#define FPAR_SP_CI_SHIFT 0
++#define FPAR_LP_PI 0x0003F000
++#define FPAR_LP_PI_SHIFT 12
++#define FPAR_LP_MS 0x00000800
++#define FPAR_LP_CI 0x000007FF
++#define FPAR_LP_CI_SHIFT 0
++ u32 fbcr; /**< Flash Byte Count Register */
++#define FBCR_BC 0x00000FFF
++ u8 res11[0x8];
++ u8 res8[0xF00];
++} lbus83xx_t;
++
++struct platform_fsl_nand_chip {
++ const char *name;
++ int nr_chips;
++ const char *partitions_str;
++ unsigned int options;
++};
++
++/* Setting this option prevents the command line from being parsed
++ * for MTD partitions. */
++#define FSL_ELBC_NO_CMDLINE_PARTITIONS 0x10000000
++
++#endif /* __FSL_ELBC__ */
++#endif /* __KERNEL__ */
diff --git a/packages/linux/linux-2.6.24/powerpc-clockres.patch b/packages/linux/linux-2.6.24/powerpc-clockres.patch
new file mode 100644
index 0000000000..a0cf05b44e
--- /dev/null
+++ b/packages/linux/linux-2.6.24/powerpc-clockres.patch
@@ -0,0 +1,47 @@
+Index: linux-2.6.24/arch/powerpc/kernel/asm-offsets.c
+===================================================================
+--- linux-2.6.24.orig/arch/powerpc/kernel/asm-offsets.c 2008-02-16 13:54:09.000000000 +0100
++++ linux-2.6.24/arch/powerpc/kernel/asm-offsets.c 2008-02-16 13:54:30.000000000 +0100
+@@ -312,7 +312,7 @@
+ DEFINE(CLOCK_REALTIME, CLOCK_REALTIME);
+ DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
+ DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
+- DEFINE(CLOCK_REALTIME_RES, TICK_NSEC);
++ DEFINE(CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);
+
+ #ifdef CONFIG_BUG
+ DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
+Index: linux-2.6.24/include/linux/hrtimer.h
+===================================================================
+--- linux-2.6.24.orig/include/linux/hrtimer.h 2008-02-16 13:54:09.000000000 +0100
++++ linux-2.6.24/include/linux/hrtimer.h 2008-02-16 13:54:33.000000000 +0100
+@@ -223,11 +223,13 @@
+ * idea of the (in)accuracy of timers. Timer values are rounded up to
+ * this resolution values.
+ */
+-# define KTIME_HIGH_RES (ktime_t) { .tv64 = 1 }
++# define HIGH_RES_NSEC 1
++# define KTIME_HIGH_RES (ktime_t) { .tv64 = HIGH_RES_NSEC }
++# define MONOTONIC_RES_NSEC HIGH_RES_NSEC
+ # define KTIME_MONOTONIC_RES KTIME_HIGH_RES
+
+ #else
+-
++# define MONOTONIC_RES_NSEC LOW_RES_NSEC
+ # define KTIME_MONOTONIC_RES KTIME_LOW_RES
+
+ /*
+Index: linux-2.6.24/include/linux/ktime.h
+===================================================================
+--- linux-2.6.24.orig/include/linux/ktime.h 2008-02-16 13:54:09.000000000 +0100
++++ linux-2.6.24/include/linux/ktime.h 2008-02-16 13:54:36.000000000 +0100
+@@ -316,7 +316,8 @@
+ * idea of the (in)accuracy of timers. Timer values are rounded up to
+ * this resolution values.
+ */
+-#define KTIME_LOW_RES (ktime_t){ .tv64 = TICK_NSEC }
++#define LOW_RES_NSEC TICK_NSEC
++#define KTIME_LOW_RES (ktime_t){ .tv64 = LOW_RES_NSEC }
+
+ /* Get the monotonic time in timespec format: */
+ extern void ktime_get_ts(struct timespec *ts);
diff --git a/packages/linux/linux-davinci/davinci-nand.patch b/packages/linux/linux-davinci/davinci-nand.patch
new file mode 100644
index 0000000000..33e53cf095
--- /dev/null
+++ b/packages/linux/linux-davinci/davinci-nand.patch
@@ -0,0 +1,905 @@
+Index: linux-davinci/drivers/mtd/nand/davinci_nand.c
+===================================================================
+--- /dev/null
++++ linux-davinci/drivers/mtd/nand/davinci_nand.c
+@@ -0,0 +1,638 @@
++/*
++ * linux/drivers/mtd/nand/davinci_nand.c
++ *
++ * NAND Flash Driver
++ *
++ * Copyright (C) 2006 Texas Instruments.
++ *
++ * ported to 2.6.23 (C) 2008 by
++ * Sander Huijsen <Shuijsen@optelecom-nkf.com>
++ * Troy Kisky <troy.kisky@boundarydevices.com>
++ * Dirk Behme <Dirk.Behme@gmail.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 program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ * --------------------------------------------------------------------------
++ *
++ * Overview:
++ * This is a device driver for the NAND flash device found on the
++ * DaVinci board which utilizes the Samsung k9k2g08 part.
++ *
++ * Modifications:
++ * ver. 1.0: Feb 2005, Vinod/Sudhakar
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/err.h>
++#include <linux/clk.h>
++#include <linux/io.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/nand.h>
++#include <asm/arch/mux.h>
++
++#include <asm/mach/flash.h>
++
++#ifdef CONFIG_NAND_FLASH_HW_ECC
++#define DAVINCI_NAND_ECC_MODE NAND_ECC_HW3_512
++#else
++#define DAVINCI_NAND_ECC_MODE NAND_ECC_SOFT
++#endif
++
++#define DRIVER_NAME "davinci_nand"
++
++static struct clk *nand_clock;
++static void __iomem *nand_vaddr;
++
++/*
++ * MTD structure for DaVinici board
++ */
++static struct mtd_info *nand_davinci_mtd;
++
++#ifdef CONFIG_MTD_PARTITIONS
++const char *part_probes[] = { "cmdlinepart", NULL };
++#endif
++
++static uint8_t scan_ff_pattern[] = { 0xff, 0xff };
++
++/* BB marker is byte 5 in OOB of page 0 */
++static struct nand_bbt_descr davinci_memorybased_small = {
++ .options = NAND_BBT_SCAN2NDPAGE,
++ .offs = 5,
++ .len = 1,
++ .pattern = scan_ff_pattern
++};
++
++/* BB marker is bytes 0-1 in OOB of page 0 */
++static struct nand_bbt_descr davinci_memorybased_large = {
++ .options = 0,
++ .offs = 0,
++ .len = 2,
++ .pattern = scan_ff_pattern
++};
++
++inline unsigned int davinci_nand_readl(int offset)
++{
++ return davinci_readl(DAVINCI_ASYNC_EMIF_CNTRL_BASE + offset);
++}
++
++inline void davinci_nand_writel(unsigned long value, int offset)
++{
++ davinci_writel(value, DAVINCI_ASYNC_EMIF_CNTRL_BASE + offset);
++}
++
++/*
++ * Hardware specific access to control-lines
++ */
++static void nand_davinci_hwcontrol(struct mtd_info *mtd, int cmd,
++ unsigned int ctrl)
++{
++ struct nand_chip *chip = mtd->priv;
++ u32 IO_ADDR_W = (u32)chip->IO_ADDR_W;
++
++ /* Did the control lines change? */
++ if (ctrl & NAND_CTRL_CHANGE) {
++ IO_ADDR_W &= ~(MASK_ALE|MASK_CLE);
++
++ if ((ctrl & NAND_CTRL_CLE) == NAND_CTRL_CLE)
++ IO_ADDR_W |= MASK_CLE;
++ else if ((ctrl & NAND_CTRL_ALE) == NAND_CTRL_ALE)
++ IO_ADDR_W |= MASK_ALE;
++
++ chip->IO_ADDR_W = (void __iomem *)IO_ADDR_W;
++ }
++
++ if (cmd != NAND_CMD_NONE)
++ writeb(cmd, chip->IO_ADDR_W);
++}
++
++static void nand_davinci_select_chip(struct mtd_info *mtd, int chip)
++{
++ /* do nothing */
++}
++
++#ifdef CONFIG_NAND_FLASH_HW_ECC
++static void nand_davinci_enable_hwecc(struct mtd_info *mtd, int mode)
++{
++ u32 retval;
++
++ /* Reset ECC hardware */
++ retval = davinci_nand_readl(NANDF1ECC_OFFSET);
++
++ /* Restart ECC hardware */
++ retval = davinci_nand_readl(NANDFCR_OFFSET);
++ retval |= (1 << 8);
++ davinci_nand_writel(retval, NANDFCR_OFFSET);
++}
++
++/*
++ * Read DaVinci ECC register
++ */
++static u32 nand_davinci_readecc(struct mtd_info *mtd)
++{
++ /* Read register ECC and clear it */
++ return davinci_nand_readl(NANDF1ECC_OFFSET);
++}
++
++/*
++ * Read DaVinci ECC registers and rework into MTD format
++ */
++static int nand_davinci_calculate_ecc(struct mtd_info *mtd,
++ const u_char *dat, u_char *ecc_code)
++{
++ unsigned int ecc_val = nand_davinci_readecc(mtd);
++ /* squeeze 0 middle bits out so that it fits in 3 bytes */
++ unsigned int tmp = (ecc_val&0x0fff)|((ecc_val&0x0fff0000)>>4);
++ /* invert so that erased block ecc is correct */
++ tmp = ~tmp;
++ ecc_code[0] = (u_char)(tmp);
++ ecc_code[1] = (u_char)(tmp >> 8);
++ ecc_code[2] = (u_char)(tmp >> 16);
++
++ return 0;
++}
++
++static int nand_davinci_correct_data(struct mtd_info *mtd, u_char *dat,
++ u_char *read_ecc, u_char *calc_ecc)
++{
++ struct nand_chip *chip = mtd->priv;
++ u_int32_t eccNand = read_ecc[0] | (read_ecc[1] << 8) |
++ (read_ecc[2] << 16);
++ u_int32_t eccCalc = calc_ecc[0] | (calc_ecc[1] << 8) |
++ (calc_ecc[2] << 16);
++ u_int32_t diff = eccCalc ^ eccNand;
++
++ if (diff) {
++ if ((((diff>>12)^diff) & 0xfff) == 0xfff) {
++ /* Correctable error */
++ if ((diff>>(12+3)) < chip->ecc.size) {
++ dat[diff>>(12+3)] ^= (1 << ((diff>>12)&7));
++ return 1;
++ } else {
++ return -1;
++ }
++ } else if (!(diff & (diff-1))) {
++ /* Single bit ECC error in the ECC itself,
++ nothing to fix */
++ return 1;
++ } else {
++ /* Uncorrectable error */
++ return -1;
++ }
++
++ }
++ return 0;
++}
++#endif
++
++/*
++ * Read OOB data from flash.
++ */
++static int read_oob_and_check(struct mtd_info *mtd, loff_t offs, uint8_t *buf,
++ struct nand_bbt_descr *bd)
++{
++ int i, ret;
++ int page;
++ struct nand_chip *chip = mtd->priv;
++
++ /* Calculate page address from offset */
++ page = (int)(offs >> chip->page_shift);
++ page &= chip->pagemask;
++
++ /* Read OOB data from flash */
++ ret = chip->ecc.read_oob(mtd, chip, page, 1);
++ if (ret < 0)
++ return ret;
++
++ /* Copy read OOB data to the buffer*/
++ memcpy(buf, chip->oob_poi, mtd->oobsize);
++
++ /* Check pattern against BBM in OOB area */
++ for (i = 0; i < bd->len; i++) {
++ if (buf[bd->offs + i] != bd->pattern[i])
++ return 1;
++ }
++ return 0;
++}
++
++/*
++ * Fill in the memory based Bad Block Table (BBT).
++ */
++static int nand_davinci_memory_bbt(struct mtd_info *mtd,
++ struct nand_bbt_descr *bd)
++{
++ int i, numblocks;
++ int startblock = 0;
++ loff_t from = 0;
++ struct nand_chip *chip = mtd->priv;
++ int blocksize = 1 << chip->bbt_erase_shift;
++ uint8_t *buf = chip->buffers->databuf;
++ int len = bd->options & NAND_BBT_SCAN2NDPAGE ? 2 : 1;
++
++ /* -numblocks- is 2 times the actual number of eraseblocks */
++ numblocks = mtd->size >> (chip->bbt_erase_shift - 1);
++
++ /* Now loop through all eraseblocks in the flash */
++ for (i = startblock; i < numblocks; i += 2) {
++ int j, ret;
++ int offs = from;
++
++ /* If NAND_BBT_SCAN2NDPAGE flag is set in bd->options,
++ * also each 2nd page of an eraseblock is checked
++ * for a Bad Block Marker. In that case, len equals 2.
++ */
++ for (j = 0; j < len; j++) {
++ /* Read OOB data and check pattern */
++ ret = read_oob_and_check(mtd, from, buf, bd);
++ if (ret < 0)
++ return ret;
++
++ /* Check pattern for bad block markers */
++ if (ret) {
++ /* Mark bad block by writing 0b11 in the
++ table */
++ chip->bbt[i >> 3] |= 0x03 << (i & 0x6);
++
++ printk(KERN_WARNING "Bad eraseblock %d at " \
++ "0x%08x\n", i >> 1,
++ (unsigned int)from);
++
++ mtd->ecc_stats.badblocks++;
++ break;
++ }
++ offs += mtd->writesize;
++ }
++
++ /* Make -from- point to next eraseblock */
++ from += blocksize;
++ }
++
++ printk(KERN_NOTICE "Bad block scan: %d out of %d blocks are bad.\n",
++ mtd->ecc_stats.badblocks, numblocks>>1);
++
++ return 0;
++}
++
++/*
++ * This function creates a memory based bad block table (BBT).
++ * It is largely based on the standard BBT function, but all
++ * unnecessary junk is thrown out to speed up.
++ */
++static int nand_davinci_scan_bbt(struct mtd_info *mtd)
++{
++ struct nand_chip *chip = mtd->priv;
++ struct nand_bbt_descr *bd;
++ int len, ret = 0;
++
++ chip->bbt_td = NULL;
++ chip->bbt_md = NULL;
++
++ /* pagesize determines location of BBM */
++ if (mtd->writesize > 512)
++ bd = &davinci_memorybased_large;
++ else
++ bd = &davinci_memorybased_small;
++
++ chip->badblock_pattern = bd;
++
++ /* Use 2 bits per page meaning 4 page markers per byte */
++ len = mtd->size >> (chip->bbt_erase_shift + 2);
++
++ /* Allocate memory (2bit per block) and clear the memory bad block
++ table */
++ chip->bbt = kzalloc(len, GFP_KERNEL);
++ if (!chip->bbt) {
++ printk(KERN_ERR "nand_davinci_scan_bbt: Out of memory\n");
++ return -ENOMEM;
++ }
++
++ /* Now try to fill in the BBT */
++ ret = nand_davinci_memory_bbt(mtd, bd);
++ if (ret) {
++ printk(KERN_ERR "nand_davinci_scan_bbt: "
++ "Can't scan flash and build the RAM-based BBT\n");
++
++ kfree(chip->bbt);
++ chip->bbt = NULL;
++ }
++
++ return ret;
++}
++
++/*
++ * Read from memory register: we can read 4 bytes at a time.
++ * The hardware takes care of actually reading the NAND flash.
++ */
++static void nand_davinci_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
++{
++ int i;
++ int num_words = len >> 2;
++ u32 *p = (u32 *)buf;
++ struct nand_chip *chip = mtd->priv;
++
++ for (i = 0; i < num_words; i++)
++ p[i] = readl(chip->IO_ADDR_R);
++}
++
++/*
++ * Check hardware register for wait status. Returns 1 if device is ready,
++ * 0 if it is still busy.
++ */
++static int nand_davinci_dev_ready(struct mtd_info *mtd)
++{
++ return (davinci_nand_readl(NANDFSR_OFFSET) & NAND_BUSY_FLAG);
++}
++
++static void nand_davinci_set_eccsize(struct nand_chip *chip)
++{
++ chip->ecc.size = 256;
++
++#ifdef CONFIG_NAND_FLASH_HW_ECC
++ switch (chip->ecc.mode) {
++ case NAND_ECC_HW12_2048:
++ chip->ecc.size = 2048;
++ break;
++
++ case NAND_ECC_HW3_512:
++ case NAND_ECC_HW6_512:
++ case NAND_ECC_HW8_512:
++ chip->ecc.size = 512;
++ break;
++
++ case NAND_ECC_HW3_256:
++ default:
++ /* do nothing */
++ break;
++ }
++#endif
++}
++
++static void nand_davinci_set_eccbytes(struct nand_chip *chip)
++{
++ chip->ecc.bytes = 3;
++
++#ifdef CONFIG_NAND_FLASH_HW_ECC
++ switch (chip->ecc.mode) {
++ case NAND_ECC_HW12_2048:
++ chip->ecc.bytes += 4;
++ case NAND_ECC_HW8_512:
++ chip->ecc.bytes += 2;
++ case NAND_ECC_HW6_512:
++ chip->ecc.bytes += 3;
++ case NAND_ECC_HW3_512:
++ case NAND_ECC_HW3_256:
++ default:
++ /* do nothing */
++ break;
++ }
++#endif
++}
++
++static void __devinit nand_davinci_flash_init(void)
++{
++ u32 regval, tmp;
++
++ /* Check for correct pin mux, reconfigure if necessary */
++ tmp = davinci_readl(DAVINCI_SYSTEM_MODULE_BASE + PINMUX0);
++
++ if ((tmp & 0x20020C1F) != 0x00000C1F) {
++ /* Disable HPI and ATA mux */
++ davinci_mux_peripheral(DAVINCI_MUX_HPIEN, 0);
++ davinci_mux_peripheral(DAVINCI_MUX_ATAEN, 0);
++
++ /* Enable VLYNQ and AEAW */
++ davinci_mux_peripheral(DAVINCI_MUX_AEAW0, 1);
++ davinci_mux_peripheral(DAVINCI_MUX_AEAW1, 1);
++ davinci_mux_peripheral(DAVINCI_MUX_AEAW2, 1);
++ davinci_mux_peripheral(DAVINCI_MUX_AEAW3, 1);
++ davinci_mux_peripheral(DAVINCI_MUX_AEAW4, 1);
++ davinci_mux_peripheral(DAVINCI_MUX_VLSCREN, 1);
++ davinci_mux_peripheral(DAVINCI_MUX_VLYNQEN, 1);
++
++ regval = davinci_readl(DAVINCI_SYSTEM_MODULE_BASE + PINMUX0);
++
++ printk(KERN_WARNING "Warning: MUX config for NAND: Set " \
++ "PINMUX0 reg to 0x%08x, was 0x%08x, should be done " \
++ "by bootloader.\n", regval, tmp);
++ }
++
++ regval = davinci_nand_readl(AWCCR_OFFSET);
++ regval |= 0x10000000;
++ davinci_nand_writel(regval, AWCCR_OFFSET);
++
++ /*------------------------------------------------------------------*
++ * NAND FLASH CHIP TIMEOUT @ 459 MHz *
++ * *
++ * AEMIF.CLK freq = PLL1/6 = 459/6 = 76.5 MHz *
++ * AEMIF.CLK period = 1/76.5 MHz = 13.1 ns *
++ * *
++ *------------------------------------------------------------------*/
++ regval = 0
++ | (0 << 31) /* selectStrobe */
++ | (0 << 30) /* extWait */
++ | (1 << 26) /* writeSetup 10 ns */
++ | (3 << 20) /* writeStrobe 40 ns */
++ | (1 << 17) /* writeHold 10 ns */
++ | (0 << 13) /* readSetup 10 ns */
++ | (3 << 7) /* readStrobe 60 ns */
++ | (0 << 4) /* readHold 10 ns */
++ | (3 << 2) /* turnAround ?? ns */
++ | (0 << 0) /* asyncSize 8-bit bus */
++ ;
++ tmp = davinci_nand_readl(A1CR_OFFSET);
++ if (tmp != regval) {
++ printk(KERN_WARNING "Warning: NAND config: Set A1CR " \
++ "reg to 0x%08x, was 0x%08x, should be done by " \
++ "bootloader.\n", regval, tmp);
++ davinci_nand_writel(regval, A1CR_OFFSET); /* 0x0434018C */
++ }
++
++ davinci_nand_writel(0x00000101, NANDFCR_OFFSET);
++}
++
++/*
++ * Main initialization routine
++ */
++int __devinit nand_davinci_probe(struct platform_device *pdev)
++{
++ struct nand_platform_data *pdata = pdev->dev.platform_data;
++ struct resource *res = pdev->resource;
++ struct nand_chip *chip;
++ struct device *dev = NULL;
++ u32 nand_rev_code;
++#ifdef CONFIG_MTD_CMDLINE_PARTS
++ char *master_name;
++ int mtd_parts_nb = 0;
++ struct mtd_partition *mtd_parts = 0;
++#endif
++
++ nand_clock = clk_get(dev, "AEMIFCLK");
++ if (IS_ERR(nand_clock)) {
++ printk(KERN_ERR "Error %ld getting AEMIFCLK clock?\n",
++ PTR_ERR(nand_clock));
++ return -1;
++ }
++
++ clk_enable(nand_clock);
++
++ /* Allocate memory for MTD device structure and private data */
++ nand_davinci_mtd = kmalloc(sizeof(struct mtd_info) +
++ sizeof(struct nand_chip), GFP_KERNEL);
++
++ if (!nand_davinci_mtd) {
++ printk(KERN_ERR "Unable to allocate davinci NAND MTD device " \
++ "structure.\n");
++ clk_disable(nand_clock);
++ return -ENOMEM;
++ }
++
++ /* Get pointer to private data */
++ chip = (struct nand_chip *) (&nand_davinci_mtd[1]);
++
++ /* Initialize structures */
++ memset((char *)nand_davinci_mtd, 0, sizeof(struct mtd_info));
++ memset((char *)chip, 0, sizeof(struct nand_chip));
++
++ /* Link the private data with the MTD structure */
++ nand_davinci_mtd->priv = chip;
++
++ nand_rev_code = davinci_nand_readl(NRCSR_OFFSET);
++
++ printk("DaVinci NAND Controller rev. %d.%d\n",
++ (nand_rev_code >> 8) & 0xff, nand_rev_code & 0xff);
++
++ nand_vaddr = ioremap(res->start, res->end - res->start);
++ if (nand_vaddr == NULL) {
++ printk(KERN_ERR "DaVinci NAND: ioremap failed.\n");
++ clk_disable(nand_clock);
++ kfree(nand_davinci_mtd);
++ return -ENOMEM;
++ }
++
++ chip->IO_ADDR_R = (void __iomem *)nand_vaddr;
++ chip->IO_ADDR_W = (void __iomem *)nand_vaddr;
++ chip->chip_delay = 0;
++ chip->select_chip = nand_davinci_select_chip;
++ chip->options = 0;
++ chip->ecc.mode = DAVINCI_NAND_ECC_MODE;
++
++ /* Set ECC size and bytes */
++ nand_davinci_set_eccsize(chip);
++ nand_davinci_set_eccbytes(chip);
++
++ /* Set address of hardware control function */
++ chip->cmd_ctrl = nand_davinci_hwcontrol;
++ chip->dev_ready = nand_davinci_dev_ready;
++
++#ifdef CONFIG_NAND_FLASH_HW_ECC
++ chip->ecc.calculate = nand_davinci_calculate_ecc;
++ chip->ecc.correct = nand_davinci_correct_data;
++ chip->ecc.hwctl = nand_davinci_enable_hwecc;
++#endif
++
++ /* Speed up the read buffer */
++ chip->read_buf = nand_davinci_read_buf;
++
++ /* Speed up the creation of the bad block table */
++ chip->scan_bbt = nand_davinci_scan_bbt;
++
++ nand_davinci_flash_init();
++
++ nand_davinci_mtd->owner = THIS_MODULE;
++
++ /* Scan to find existence of the device */
++ if (nand_scan(nand_davinci_mtd, 1)) {
++ printk(KERN_ERR "Chip Select is not set for NAND\n");
++ clk_disable(nand_clock);
++ kfree(nand_davinci_mtd);
++ return -ENXIO;
++ }
++
++ /* Register the partitions */
++ add_mtd_partitions(nand_davinci_mtd, pdata->parts, pdata->nr_parts);
++
++#ifdef CONFIG_MTD_CMDLINE_PARTS
++ /* Set nand_davinci_mtd->name = 0 temporarily */
++ master_name = nand_davinci_mtd->name;
++ nand_davinci_mtd->name = (char *)0;
++
++ /* nand_davinci_mtd->name == 0, means: don't bother checking
++ <mtd-id> */
++ mtd_parts_nb = parse_mtd_partitions(nand_davinci_mtd, part_probes,
++ &mtd_parts, 0);
++
++ /* Restore nand_davinci_mtd->name */
++ nand_davinci_mtd->name = master_name;
++
++ add_mtd_partitions(nand_davinci_mtd, mtd_parts, mtd_parts_nb);
++#endif
++
++ return 0;
++}
++
++/*
++ * Clean up routine
++ */
++static int nand_davinci_remove(struct platform_device *pdev)
++{
++ clk_disable(nand_clock);
++
++ if (nand_vaddr)
++ iounmap(nand_vaddr);
++
++ /* Release resources, unregister device */
++ nand_release(nand_davinci_mtd);
++
++ /* Free the MTD device structure */
++ kfree(nand_davinci_mtd);
++
++ return 0;
++}
++
++
++static struct platform_driver nand_davinci_driver = {
++ .probe = nand_davinci_probe,
++ .remove = nand_davinci_remove,
++ .driver = {
++ .name = DRIVER_NAME,
++ },
++};
++
++static int __init nand_davinci_init(void)
++{
++ return platform_driver_register(&nand_davinci_driver);
++}
++module_init(nand_davinci_init);
++
++#ifdef MODULE
++static void __exit nand_davinci_exit(void)
++{
++ platform_driver_unregister(&nand_davinci_driver);
++}
++module_exit(nand_davinci_exit);
++#endif
++
++MODULE_ALIAS(DRIVER_NAME);
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Texas Instruments");
++MODULE_DESCRIPTION("Board-specific glue layer for NAND flash on davinci" \
++ "board");
+Index: linux-davinci/drivers/mtd/nand/Makefile
+===================================================================
+--- linux-davinci.orig/drivers/mtd/nand/Makefile
++++ linux-davinci/drivers/mtd/nand/Makefile
+@@ -29,5 +29,6 @@ obj-$(CONFIG_MTD_NAND_AT91) += at91_nan
+ obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270_nand.o
+ obj-$(CONFIG_MTD_NAND_BASLER_EXCITE) += excite_nandflash.o
+ obj-$(CONFIG_MTD_NAND_PLATFORM) += plat_nand.o
++obj-$(CONFIG_MTD_NAND_DAVINCI) += davinci_nand.o
+
+ nand-objs := nand_base.o nand_bbt.o
+Index: linux-davinci/drivers/mtd/nand/Kconfig
+===================================================================
+--- linux-davinci.orig/drivers/mtd/nand/Kconfig
++++ linux-davinci/drivers/mtd/nand/Kconfig
+@@ -293,5 +293,17 @@ config MTD_NAND_PLATFORM
+ devices. You will need to provide platform-specific functions
+ via platform_data.
+
++config MTD_NAND_DAVINCI
++ tristate "NAND Flash device on DaVinci SoC"
++ depends on MTD_NAND
++ select MTD_PARTITIONS
++ help
++ Support for NAND flash on Texas Instruments DaVinci SoC.
++
++config NAND_FLASH_HW_ECC
++ bool "Hardware ECC Support on NAND Device for DaVinci"
++ depends on MTD_NAND_DAVINCI
++ help
++ Support for Hardware ECC on NAND device for DaVinci.
+
+ endif # MTD_NAND
+Index: linux-davinci/include/asm-arm/arch-davinci/nand.h
+===================================================================
+--- /dev/null
++++ linux-davinci/include/asm-arm/arch-davinci/nand.h
+@@ -0,0 +1,45 @@
++/*
++ * include/asm-arm/arch-davinci/nand.h
++ *
++ * Copyright (C) 2006 Texas Instruments.
++ *
++ * ported to 2.6.23 (C) 2008 by
++ * Sander Huijsen <Shuijsen@optelecom-nkf.com>
++ * Troy Kisky <troy.kisky@boundarydevices.com>
++ * Dirk Behme <Dirk.Behme@gmail.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 program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ * --------------------------------------------------------------------------
++ *
++ */
++
++#ifndef __ARCH_ARM_DAVINCI_NAND_H
++#define __ARCH_ARM_DAVINCI_NAND_H
++
++#define NRCSR_OFFSET 0x00
++#define AWCCR_OFFSET 0x04
++#define A1CR_OFFSET 0x10
++#define NANDFCR_OFFSET 0x60
++#define NANDFSR_OFFSET 0x64
++#define NANDF1ECC_OFFSET 0x70
++
++#define MASK_ALE 0x0A
++#define MASK_CLE 0x10
++
++#define NAND_BUSY_FLAG 0x01
++
++#endif /* __ARCH_ARM_DAVINCI_NAND_H */
+Index: linux-davinci/arch/arm/mach-davinci/mux.c
+===================================================================
+--- linux-davinci.orig/arch/arm/mach-davinci/mux.c
++++ linux-davinci/arch/arm/mach-davinci/mux.c
+@@ -15,10 +15,6 @@
+
+ #include <asm/arch/mux.h>
+
+-/* System control register offsets */
+-#define PINMUX0 0x00
+-#define PINMUX1 0x04
+-
+ static DEFINE_SPINLOCK(mux_lock);
+
+ void davinci_mux_peripheral(unsigned int mux, unsigned int enable)
+Index: linux-davinci/include/asm-arm/arch-davinci/mux.h
+===================================================================
+--- linux-davinci.orig/include/asm-arm/arch-davinci/mux.h
++++ linux-davinci/include/asm-arm/arch-davinci/mux.h
+@@ -11,6 +11,11 @@
+ #ifndef __ASM_ARCH_MUX_H
+ #define __ASM_ARCH_MUX_H
+
++/* System control register offsets */
++#define PINMUX0 0x00
++#define PINMUX1 0x04
++
++/* System control register bits */
+ #define DAVINCI_MUX_AEAW0 0
+ #define DAVINCI_MUX_AEAW1 1
+ #define DAVINCI_MUX_AEAW2 2
+Index: linux-davinci/include/linux/mtd/nand.h
+===================================================================
+--- linux-davinci.orig/include/linux/mtd/nand.h
++++ linux-davinci/include/linux/mtd/nand.h
+@@ -123,6 +123,13 @@ typedef enum {
+ NAND_ECC_SOFT,
+ NAND_ECC_HW,
+ NAND_ECC_HW_SYNDROME,
++#ifdef CONFIG_NAND_FLASH_HW_ECC
++ NAND_ECC_HW3_256,
++ NAND_ECC_HW3_512,
++ NAND_ECC_HW6_512,
++ NAND_ECC_HW8_512,
++ NAND_ECC_HW12_2048,
++#endif
+ } nand_ecc_modes_t;
+
+ /*
+Index: linux-davinci/drivers/mtd/nand/nand_base.c
+===================================================================
+--- linux-davinci.orig/drivers/mtd/nand/nand_base.c
++++ linux-davinci/drivers/mtd/nand/nand_base.c
+@@ -2456,6 +2456,13 @@ int nand_scan_tail(struct mtd_info *mtd)
+ chip->ecc.write_page_raw = nand_write_page_raw;
+
+ switch (chip->ecc.mode) {
++#ifdef CONFIG_NAND_FLASH_HW_ECC
++ case NAND_ECC_HW12_2048:
++ case NAND_ECC_HW8_512:
++ case NAND_ECC_HW6_512:
++ case NAND_ECC_HW3_512:
++ case NAND_ECC_HW3_256:
++#endif
+ case NAND_ECC_HW:
+ /* Use standard hwecc read page function ? */
+ if (!chip->ecc.read_page)
+Index: linux-davinci/arch/arm/mach-davinci/board-evm.c
+===================================================================
+--- linux-davinci.orig/arch/arm/mach-davinci/board-evm.c
++++ linux-davinci/arch/arm/mach-davinci/board-evm.c
+@@ -14,6 +14,7 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/platform_device.h>
+ #include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/mtd/physmap.h>
+
+@@ -27,6 +28,7 @@
+ #include <asm/mach/flash.h>
+
+ #include <asm/arch/common.h>
++#include <asm/arch/hardware.h>
+ #include <asm/arch/psc.h>
+
+ /* other misc. init functions */
+@@ -38,7 +40,7 @@ void __init davinci_init_common_hw(void)
+ /* NOR Flash base address set to CS0 by default */
+ #define NOR_FLASH_PHYS 0x02000000
+
+-static struct mtd_partition davinci_evm_partitions[] = {
++static struct mtd_partition davinci_evm_norflash_partitions[] = {
+ /* bootloader (U-Boot, etc) in first 4 sectors */
+ {
+ .name = "bootloader",
+@@ -69,30 +71,63 @@ static struct mtd_partition davinci_evm_
+ }
+ };
+
+-static struct physmap_flash_data davinci_evm_flash_data = {
++static struct physmap_flash_data davinci_evm_norflash_data = {
+ .width = 2,
+- .parts = davinci_evm_partitions,
+- .nr_parts = ARRAY_SIZE(davinci_evm_partitions),
++ .parts = davinci_evm_norflash_partitions,
++ .nr_parts = ARRAY_SIZE(davinci_evm_norflash_partitions),
+ };
+
+ /* NOTE: CFI probe will correctly detect flash part as 32M, but EMIF
+ * limits addresses to 16M, so using addresses past 16M will wrap */
+-static struct resource davinci_evm_flash_resource = {
++static struct resource davinci_evm_norflash_resource = {
+ .start = NOR_FLASH_PHYS,
+ .end = NOR_FLASH_PHYS + SZ_16M - 1,
+ .flags = IORESOURCE_MEM,
+ };
+
+-static struct platform_device davinci_evm_flash_device = {
++static struct platform_device davinci_evm_norflash_device = {
+ .name = "physmap-flash",
+ .id = 0,
+ .dev = {
+- .platform_data = &davinci_evm_flash_data,
++ .platform_data = &davinci_evm_norflash_data,
+ },
+ .num_resources = 1,
+- .resource = &davinci_evm_flash_resource,
++ .resource = &davinci_evm_norflash_resource,
+ };
+
++#if defined(CONFIG_MTD_NAND_DAVINCI) || defined(CONFIG_MTD_NAND_DAVINCI_MODULE)
++struct mtd_partition davinci_evm_nandflash_partition[] = {
++ /* 5 MB space at the beginning for bootloader and kernel */
++ {
++ .name = "NAND filesystem",
++ .offset = 5 * SZ_1M,
++ .size = MTDPART_SIZ_FULL,
++ .mask_flags = 0,
++ }
++};
++
++static struct nand_platform_data davinci_evm_nandflash_data = {
++ .parts = davinci_evm_nandflash_partition,
++ .nr_parts = ARRAY_SIZE(davinci_evm_nandflash_partition),
++};
++
++static struct resource davinci_evm_nandflash_resource = {
++ .start = DAVINCI_ASYNC_EMIF_DATA_CE0_BASE,
++ .end = DAVINCI_ASYNC_EMIF_DATA_CE0_BASE + SZ_16K - 1,
++ .flags = IORESOURCE_MEM,
++};
++
++static struct platform_device davinci_evm_nandflash_device = {
++ .name = "davinci_nand",
++ .id = 0,
++ .dev = {
++ .platform_data = &davinci_evm_nandflash_data,
++ },
++ .num_resources = 1,
++ .resource = &davinci_evm_nandflash_resource,
++};
++#endif
++
+ #if defined(CONFIG_FB_DAVINCI) || defined(CONFIG_FB_DAVINCI_MODULE)
+
+ static u64 davinci_fb_dma_mask = DMA_32BIT_MASK;
+@@ -168,7 +203,10 @@ static struct platform_device rtc_dev =
+ };
+
+ static struct platform_device *davinci_evm_devices[] __initdata = {
+- &davinci_evm_flash_device,
++ &davinci_evm_norflash_device,
++#if defined(CONFIG_MTD_NAND_DAVINCI) || defined(CONFIG_MTD_NAND_DAVINCI_MODULE)
++ &davinci_evm_nandflash_device,
++#endif
+ #if defined(CONFIG_FB_DAVINCI) || defined(CONFIG_FB_DAVINCI_MODULE)
+ &davinci_fb_device,
+ #endif
diff --git a/packages/linux/linux-davinci/davinci-sffsdr/defconfig b/packages/linux/linux-davinci/davinci-sffsdr/defconfig
index ac53caffc9..0d5155f32a 100644
--- a/packages/linux/linux-davinci/davinci-sffsdr/defconfig
+++ b/packages/linux/linux-davinci/davinci-sffsdr/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23-davinci1
-# Sat Oct 20 12:59:22 2007
+# Sun Feb 3 08:30:51 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -241,7 +241,8 @@ CONFIG_CMDLINE=""
#
# At least one emulation must be selected
#
-# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
# CONFIG_VFP is not set
@@ -442,7 +443,10 @@ CONFIG_MTD_CFI_UTIL=y
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_PLATRAM is not set
@@ -461,13 +465,15 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+CONFIG_MTD_NAND_VERIFY_WRITE=y
# CONFIG_MTD_NAND_ECC_SMC is not set
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set
-CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_NAND_PLATFORM is not set
+CONFIG_MTD_NAND_DAVINCI=y
+CONFIG_NAND_FLASH_HW_ECC=y
# CONFIG_MTD_ONENAND is not set
#
@@ -592,10 +598,7 @@ CONFIG_INPUT=y
#
# Userland interfaces
#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=m
@@ -605,10 +608,10 @@ CONFIG_INPUT_EVDEV=m
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_XTKBD=y
+# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_GPIO is not set
@@ -623,7 +626,7 @@ CONFIG_KEYBOARD_XTKBD=y
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
-CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set
@@ -820,46 +823,14 @@ CONFIG_DAB=y
#
# CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_CFB_FILLRECT is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_DAVINCI=y
-# CONFIG_FB_VIRTUAL is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
@@ -874,10 +845,7 @@ CONFIG_SOUND=y
#
# Open Sound System
#
-CONFIG_SOUND_PRIME=y
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_DAVINCI is not set
+# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
@@ -1027,20 +995,20 @@ CONFIG_USB_FILE_STORAGE=m
# CONFIG_USB_FILE_STORAGE_TEST is not set
CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
+CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD Card Drivers
#
-CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_BOUNCE=y
#
# MMC/SD Host Controller Drivers
#
-# CONFIG_MMC_DAVINCI is not set
+CONFIG_MMC_DAVINCI=m
CONFIG_RTC_LIB=y
# CONFIG_RTC_CLASS is not set
@@ -1100,9 +1068,9 @@ CONFIG_AUTOFS4_FS=m
#
# DOS/FAT/NT Filesystems
#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set
@@ -1138,7 +1106,7 @@ CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
+# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1167,8 +1135,7 @@ CONFIG_SUNRPC=y
# CONFIG_SUNRPC_BIND34 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT 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
diff --git a/packages/linux/linux-davinci_2.6.x+git-davinci.bb b/packages/linux/linux-davinci_2.6.x+git-davinci.bb
index 9228d1ffda..916b4e252c 100644
--- a/packages/linux/linux-davinci_2.6.x+git-davinci.bb
+++ b/packages/linux/linux-davinci_2.6.x+git-davinci.bb
@@ -7,6 +7,7 @@ COMPATIBLE_MACHINE = "(davinci-dvevm|davinci-sffsdr)"
SRC_URI = "git://source.mvista.com/git/linux-davinci-2.6.git;protocol=git \
file://binutils-buildid-arm.patch;patch=1 \
+ file://davinci-nand.patch;patch=1 \
file://defconfig"
S = "${WORKDIR}/git"
diff --git a/packages/libglade/libglade-2.0.1/.mtn2git_empty b/packages/linux/linux-ezx-2.6.24/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libglade/libglade-2.0.1/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.24/.mtn2git_empty
diff --git a/packages/libglade/libglade-2.4.0/.mtn2git_empty b/packages/linux/linux-ezx-2.6.24/a1200/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libglade/libglade-2.4.0/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.24/a1200/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.24/a1200/defconfig b/packages/linux/linux-ezx-2.6.24/a1200/defconfig
new file mode 100755
index 0000000000..4649d7ba96
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/a1200/defconfig
@@ -0,0 +1,1208 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.1
+# Wed Oct 24 18:03:17 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+CONFIG_PXA_EZX_A1200=y
+# CONFIG_PXA_EZX_E6 is not set
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EOC=y
+# CONFIG_EZX_EMU is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 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=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+# CONFIG_MTD_EZX_A780 is not set
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+CONFIG_MTD_EZX_A1200=y
+# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_HWMON is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_EZX is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/libglade/libglade-2.4.2/.mtn2git_empty b/packages/linux/linux-ezx-2.6.24/a780/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libglade/libglade-2.4.2/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.24/a780/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.24/a780/defconfig b/packages/linux/linux-ezx-2.6.24/a780/defconfig
new file mode 100755
index 0000000000..b10c2e908d
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/a780/defconfig
@@ -0,0 +1,1502 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Sun Jan 27 15:19:17 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+CONFIG_PXA_EZX_A780=y
+# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
+CONFIG_EZX_BP=y
+CONFIG_EZX_PCAP=y
+# CONFIG_EZX_EOC is not set
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+# CONFIG_NO_HZ is not set
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=1 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_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=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=m
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES 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=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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_NET_CLS_ROUTE=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIUART_LL is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
+
+#
+# Wireless
+#
+CONFIG_CFG80211=m
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RCSIMPLE=y
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_A1200 is not set
+# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# 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_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_V4L_USB_DRIVERS is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_USB_DSBR is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_EZX=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_A780=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+# CONFIG_ROOT_NFS is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+# CONFIG_INSTRUMENTATION is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ABLKCIPHER=m
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+# CONFIG_CRYPTO_WP512 is not set
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/libglade/libglade-2.5.1/.mtn2git_empty b/packages/linux/linux-ezx-2.6.24/e680/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libglade/libglade-2.5.1/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.24/e680/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.24/e680/defconfig b/packages/linux/linux-ezx-2.6.24/e680/defconfig
new file mode 100755
index 0000000000..9a30ce673f
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/e680/defconfig
@@ -0,0 +1,1584 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21.4
+# Sun Sep 9 16:51:47 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LSF=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA_EZX=y
+CONFIG_PXA_EZX_E680=y
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
+CONFIG_EZX_BP=y
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+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_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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=m
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+CONFIG_SHAPER=m
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_E680 is not set
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_EZX=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=n
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/libglade/libglade-2.6.2/.mtn2git_empty b/packages/linux/linux-ezx-2.6.24/patches/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libglade/libglade-2.6.2/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.24/patches/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.24/patches/Makefile.OpenEZX b/packages/linux/linux-ezx-2.6.24/patches/Makefile.OpenEZX
new file mode 100644
index 0000000000..e7e9115e3c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/Makefile.OpenEZX
@@ -0,0 +1,77 @@
+# Makefile used to build binary images of OpenEZX kernels
+#
+# If you are currently in the linux kernel toplevel dir,
+# you can call this Makefile with:
+# $ make -f path_to/Makefile.OpenEZX
+#
+# Note that you can set the CROSS_COMPILE and QUILT_PATCHES variable
+# in your environment.
+#
+
+PHONES = a780 e680 a1200 e6 e2
+
+CROSS_COMPILE ?= /home/wyrm/ezx/dev/cross/bin/arm-angstrom-linux-gnueabi-
+QUILT_PATCHES ?= patches
+
+LV ?= ezxdev# replace LOCALVERSION string
+J ?= 2 # simultaneous jobs
+SIG ?= 0 # BOOL sign md5sums file
+
+DATE = $(shell date +%Y%m%d)
+DEPLOY_SERVER ?= people.openezx.org
+DEPLOY_DIR ?= public_html/images/$(DATE)/
+
+all: $(foreach p, $(PHONES), zImage-$(p) modules-$(p).tar.gz)
+
+zImages: $(foreach p, $(PHONES), zImage-$(p))
+
+modules: $(foreach p, $(PHONES), modules-$(p).tar.gz)
+
+config: $(foreach p, $(PHONES), config-$(p))
+
+config-%: $(QUILT_PATCHES)/defconfig-%
+ cp $< .config
+ make ARCH=arm oldconfig
+ cp .config $<
+
+deploy: release
+ ssh $(DEPLOY_SERVER) \
+ mkdir -p $(DEPLOY_DIR)
+ scp ezxrelease-$(DATE).tar $(DEPLOY_SERVER):$(DEPLOY_DIR)
+ ssh $(DEPLOY_SERVER) \
+ cd $(DEPLOY_DIR)\; \
+ tar -xf ezxrelease-$(DATE).tar\; \
+ rm -f ezxrelease-$(DATE).tar
+
+release: $(foreach p, $(PHONES), tag-$(p))
+ cp md5sums.tmp md5sums
+ test "$(SIG)" = "1" && \
+ cat md5sums.tmp | gpg --clearsign > md5sums \
+ ; echo
+ tar -rf ezxrelease.tar md5sums
+ rm -f md5sums.tmp md5sums
+ mv ezxrelease.tar ezxrelease-$(DATE).tar
+
+tag-%: zImage-% modules-%.tar.gz
+ p=$(patsubst tag-%,%,$@) && \
+ tag=$(shell cat include/config/kernel.release)-$(DATE) && \
+ mv zImage-$$p zImage-$$tag-$$p && \
+ mv modules-$$p.tar.gz modules-$$tag-$$p.tar.gz && \
+ tar -rf ezxrelease.tar zImage-$$tag-$$p modules-$$tag-$$p.tar.gz && \
+ md5sum zImage-$$tag-$$p modules-$$tag-$$p.tar.gz >> md5sums.tmp && \
+ rm -f zImage-$$tag-$$p modules-$$tag-$$p.tar.gz
+
+zImage-%: $(QUILT_PATCHES)/defconfig-%
+ cat $< | sed 's/LOCALVERSION=".*"$$/LOCALVERSION="-$(LV)"/' > .config
+ make -j$(J) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zImage
+ mv arch/arm/boot/zImage $@
+
+modules-%.tar.gz: $(QUILT_PATCHES)/defconfig-%
+ cat $< | sed 's/LOCALVERSION=".*"$$/LOCALVERSION="-$(LV)"/' > .config
+ -find . -name "*.ko" -print0 | xargs -r0 rm
+ mkdir -p Makefile.OpenEZX-tmp/$@
+ make -j$(J) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
+ make -j1 ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) \
+ INSTALL_MOD_PATH=Makefile.OpenEZX-tmp/$@ modules_install
+ tar -C Makefile.OpenEZX-tmp/$@ -czf $@ .
+ rm -rf Makefile.OpenEZX-tmp/
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a1200-eoc.patch b/packages/linux/linux-ezx-2.6.24/patches/a1200-eoc.patch
new file mode 100644
index 0000000000..d69c6ec75f
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a1200-eoc.patch
@@ -0,0 +1,20 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:08.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:24.000000000 -0200
+@@ -186,8 +186,15 @@
+ },
+ };
+
++
++struct platform_device a1200_eoc_device = {
++ .name = "ezx-eoc",
++ .id = -1,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
++ &a1200_eoc_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a1200-flip.patch b/packages/linux/linux-ezx-2.6.24/patches/a1200-flip.patch
new file mode 100644
index 0000000000..cc36d36c51
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a1200-flip.patch
@@ -0,0 +1,47 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:42.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:50.000000000 -0200
+@@ -16,6 +16,7 @@
+ #include <linux/mmc/host.h>
+ #include <linux/irq.h>
+ #include <linux/input.h>
++#include <linux/gpio_keys.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -275,11 +276,34 @@
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+ };
++/* Flip */
++#undef GPIO_FLIP_PIN
++#define GPIO_FLIP_PIN 15 /* FIXME */
++static struct gpio_keys_button a1200flip_buttons[] = {
++ [0] = {
++ .code = KEY_SLEEP,
++ .gpio = GPIO_FLIP_PIN,
++ .desc = "A1200 flip",
++ },
++};
++
++static struct gpio_keys_platform_data a1200flip_platform_data = {
++ .buttons = a1200flip_buttons,
++ .nbuttons = 1,
++};
++static struct platform_device a1200flip_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &a1200flip_platform_data,
++ },
++};
+
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &a1200_eoc_device,
+ &pcap_ts_device,
++ &a1200flip_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a1200-kbd.patch b/packages/linux/linux-ezx-2.6.24/patches/a1200-kbd.patch
new file mode 100644
index 0000000000..1e1a68c5b8
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a1200-kbd.patch
@@ -0,0 +1,98 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:24.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:35.000000000 -0200
+@@ -15,6 +15,7 @@
+ #include <linux/fb.h>
+ #include <linux/mmc/host.h>
+ #include <linux/irq.h>
++#include <linux/input.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -23,11 +24,13 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+ #include <asm/arch/mmc.h>
++#include <asm/arch/kbd.h>
+
+ #include "generic.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
++extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
+
+ #ifdef CONFIG_EZX_PCAP
+ extern int ezx_pcap_mmcsd_power(int);
+@@ -192,6 +195,63 @@
+ .id = -1,
+ };
+
++/* Keypad */
++static unsigned char a1200_keycode[] = {
++ /* row 0 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
++ /* row 1 */
++ KEY_RIGHT, KEY_DOWN, KEY_KPENTER, KEY_UP, KEY_LEFT,
++ /* row 2 */
++ KEY_PAGEDOWN, KEY_CAMERA, KEY_RECORD, KEY_HOME, KEY_PAGEUP,
++ /* row 3 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
++ /* row 4 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
++ /* row 5 */
++ KEY_RESERVED, KEY_RESERVED, KEY_MENU, KEY_RESERVED, KEY_RESERVED,
++};
++/*
++static unsigned char a1200_direct_keycode[] = {
++ KEY_CAMERA,
++};
++*/
++
++static int a1200_kbd_init(void)
++{
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN); /* KP_MKIN<3> */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN); /* KP_MKIN<4> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<4> */
++ pxa_gpio_mode(108 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<5> */
++
++ PKWR = 0xEC000;
++ PGSR3 |= 0x1F80;
++ return 0;
++}
++
++static struct pxakbd_platform_data a1200_kbd_platform_data = {
++ .init = &a1200_kbd_init,
++ .scan_interval = HZ/40,
++ .matrix = {
++ .keycode = a1200_keycode,
++ .cols = 6,
++ .rows = 5,
++ },
++/*
++ .direct = {
++ .keycode = a1200_direct_keycode,
++ .num = 1,
++ },
++*/
++};
++
++
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &a1200_eoc_device,
+@@ -201,6 +261,7 @@
+ {
+ set_pxa_fb_info(&a1200_fb_info);
+ pxa_set_mci_info(&a1200_mci_platform_data);
++ pxa_set_kbd_info(&a1200_kbd_platform_data);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+ }
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a1200-mci.patch b/packages/linux/linux-ezx-2.6.24/patches/a1200-mci.patch
new file mode 100644
index 0000000000..caa897eddf
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a1200-mci.patch
@@ -0,0 +1,124 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a1200.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+@@ -13,6 +13,8 @@
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+ #include <linux/fb.h>
++#include <linux/mmc/host.h>
++#include <linux/irq.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -20,12 +22,102 @@
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
++#include <asm/arch/mmc.h>
+
+ #include "generic.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+
++#ifdef CONFIG_EZX_PCAP
++extern int ezx_pcap_mmcsd_power(int);
++extern void ezx_pcap_mmcsd_voltage(u_int32_t);
++#else
++#define ezx_pcap_mmcsd_voltage(x) {}
++#define ezx_pcap_mmcsd_power(x) {}
++#endif
++
++static struct pxamci_platform_data a1200_mci_platform_data;
++
++static u_int8_t mmc_voltage[] = {
++ [ilog2(MMC_VDD_165_195)] = 6,
++ [ilog2(MMC_VDD_20_21)] = 7,
++ [ilog2(MMC_VDD_21_22)] = 8,
++ [ilog2(MMC_VDD_22_23)] = 8,
++ [ilog2(MMC_VDD_23_24)] = 9,
++ [ilog2(MMC_VDD_24_25)] = 9,
++ [ilog2(MMC_VDD_25_26)] = 10,
++ [ilog2(MMC_VDD_26_27)] = 10,
++ [ilog2(MMC_VDD_27_28)] = 11,
++ [ilog2(MMC_VDD_28_29)] = 11,
++ [ilog2(MMC_VDD_29_30)] = 12,
++ [ilog2(MMC_VDD_30_31)] = 12,
++ [ilog2(MMC_VDD_31_32)] = 13,
++ [ilog2(MMC_VDD_32_33)] = 13,
++ [ilog2(MMC_VDD_33_34)] = 14,
++ [ilog2(MMC_VDD_34_35)] = 14,
++ [ilog2(MMC_VDD_35_36)] = 15,
++};
++
++static int a1200_mci_init(struct device *dev,
++ irqreturn_t (*ezx_detect_int)(int, void *),
++ void *data)
++{
++ int err;
++
++ /* Setup GPIO for PXA27x MMC/SD controller */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ ezx_pcap_mmcsd_power(1);
++
++ a1200_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(0x49, ezx_detect_int, IRQF_DISABLED,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
++ "MMC card detect IRQ\n");
++ return -1;
++ }
++
++ set_irq_type(0x0b, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++static void a1200_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ struct pxamci_platform_data* p_d = dev->platform_data;
++
++ if (( 1 << vdd) & p_d->ocr_mask)
++ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
++
++ ezx_pcap_mmcsd_power(1);
++}
++
++static void a1200_mci_exit(struct device *dev, void *data)
++{
++ ezx_pcap_mmcsd_power(0);
++ free_irq(0x49, data);
++}
++
++static struct pxamci_platform_data a1200_mci_platform_data = {
++ .ocr_mask = MMC_VDD_165_195|MMC_VDD_20_21|MMC_VDD_21_22
++ |MMC_VDD_22_23|MMC_VDD_23_24|MMC_VDD_24_25
++ |MMC_VDD_25_26|MMC_VDD_26_27|MMC_VDD_27_28
++ |MMC_VDD_28_29|MMC_VDD_29_30|MMC_VDD_30_31
++ |MMC_VDD_31_32|MMC_VDD_32_33|MMC_VDD_33_34
++ |MMC_VDD_34_35|MMC_VDD_35_36,
++ .init = a1200_mci_init,
++ .setpower = a1200_mci_setpower,
++ .exit = a1200_mci_exit,
++};
++
+ static struct pxafb_mode_info mode_a1200 = {
+ .pixclock = 192308,
+ .xres = 240,
+@@ -101,6 +193,7 @@
+ static void __init a1200_init(void)
+ {
+ set_pxa_fb_info(&a1200_fb_info);
++ pxa_set_mci_info(&a1200_mci_platform_data);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+ }
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a1200-pcap.patch b/packages/linux/linux-ezx-2.6.24/patches/a1200-pcap.patch
new file mode 100644
index 0000000000..c725886630
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a1200-pcap.patch
@@ -0,0 +1,66 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a1200.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -48,7 +49,53 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int a1200_pcap_init(void)
++{
++ /* FIXME */
++ ezx_pcap_write(PCAP_REG_INT_SEL, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_SWCTRL, 0x2ee6); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_VREG1, 0x15778e3); /* wrong */
++ ezx_pcap_write(PCAP_REG_VREG2, 0x810234); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG, 0x1024bec); /* wrong */
++ ezx_pcap_write(PCAP_REG_PWR, 0x94108); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG_MASK, 0x214d48); /* wrong */
++ ezx_pcap_write(PCAP_REG_BUSCTRL, 0x2a0); /* wrong */
++ ezx_pcap_write(PCAP_REG_LOWPWR, 0x1d9610c);
++ ezx_pcap_write(PCAP_REG_PERIPH, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_GP, 0x107); /* probably unnecessary */
++
++ return 0;
++}
++
++static struct pcap_platform_data a1200_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_CS_AH | PCAP_MCI_TF,
++ .clk = 1,
++ .init = a1200_pcap_init,
++};
++
++static struct resource a1200_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a1200_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(a1200_pcap_resources),
++ .resource = a1200_pcap_resources,
++ .dev = {
++ .platform_data = &a1200_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &a1200_pcap_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a1200-ts.patch b/packages/linux/linux-ezx-2.6.24/patches/a1200-ts.patch
new file mode 100644
index 0000000000..66409d12b0
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a1200-ts.patch
@@ -0,0 +1,39 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:35.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a1200.c 2007-11-24 20:12:42.000000000 -0200
+@@ -252,9 +252,34 @@
+ };
+
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE,
++ .end = EZX_IRQ_ADCDONE,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &a1200_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &a1200_eoc_device,
++ &pcap_ts_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-emu.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-emu.patch
new file mode 100644
index 0000000000..ae9237394d
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-emu.patch
@@ -0,0 +1,38 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a780.c 2007-10-23 23:03:48.000000000 +0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c 2007-10-23 23:04:03.000000000 +0200
+@@ -212,8 +212,33 @@
+ },
+ };
+
++/* EMU */
++static struct resource a780_emu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a780_emu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(a780_emu_resources),
++ .resource = a780_emu_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
++ &a780_emu_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-flip.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-flip.patch
new file mode 100644
index 0000000000..44b97880ca
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-flip.patch
@@ -0,0 +1,46 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a780.c 2007-10-23 19:37:58.000000000 +0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c 2007-10-23 19:38:04.000000000 +0200
+@@ -18,6 +18,7 @@
+ #include <linux/irq.h>
+ #include <linux/log2.h>
+ #include <linux/input.h>
++#include <linux/gpio_keys.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -312,10 +313,33 @@
+ .resource = pcap_ts_resources,
+ };
+
++static struct gpio_keys_button a780flip_buttons[] = {
++ [0] = {
++ .code = KEY_SLEEP,
++ .gpio = GPIO_FLIP_PIN,
++ .desc = "A780 flip",
++ },
++};
++
++static struct gpio_keys_platform_data a780flip_platform_data = {
++ .buttons = a780flip_buttons,
++ .nbuttons = 1,
++};
++
++static struct platform_device a780flip_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &a780flip_platform_data,
++ },
++};
++
++
+ static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
+ &pcap_ts_device,
++ &a780flip_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-kbd.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-kbd.patch
new file mode 100644
index 0000000000..fa22c72a6b
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-kbd.patch
@@ -0,0 +1,90 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a780.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+@@ -17,6 +17,7 @@
+ #include <linux/mmc/host.h>
+ #include <linux/irq.h>
+ #include <linux/log2.h>
++#include <linux/input.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -25,11 +26,13 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+ #include <asm/arch/mmc.h>
++#include <asm/arch/kbd.h>
+
+ #include "generic.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
++extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
+
+ #ifdef CONFIG_EZX_PCAP
+ extern int ezx_pcap_mmcsd_power(int);
+@@ -236,6 +239,55 @@
+ .resource = a780_emu_resources,
+ };
+
++static unsigned char a780_keycode[] = {
++ /* row 0 */
++ KEY_PHONE, KEY_MENU, KEY_CANCEL, KEY_PAGEUP, KEY_UP,
++ /* row 1 */
++ KEY_KP1, KEY_KP2, KEY_KP3, KEY_ENTER, KEY_KPENTER, /*center joypad */
++ /* row 2 */
++ KEY_KP4, KEY_KP5, KEY_KP6, KEY_RECORD, KEY_LEFT,
++ /* row 3 */
++ KEY_KP7, KEY_KP8, KEY_KP9, KEY_HOME, KEY_RIGHT,
++ /* row 4 */
++ KEY_KPASTERISK, KEY_KP0, KEY_KPDOT, KEY_PAGEDOWN, KEY_DOWN,
++};
++
++static unsigned char a780_direct_keycode[] = {
++ KEY_CAMERA,
++};
++
++static int a780_kbd_init(void)
++{
++ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, voice_rec */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN); /* KP_MKIN<3> */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN); /* KP_MKIN<4> */
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<4> */
++ PKWR = 0xec400;
++ PGSR3 |= 0xf80;
++ return 0;
++}
++
++static struct pxakbd_platform_data a780_kbd_platform_data = {
++ .init = &a780_kbd_init,
++ .scan_interval = HZ/40,
++ .matrix = {
++ .keycode = a780_keycode,
++ .cols = 5,
++ .rows = 5,
++ },
++ .direct = {
++ .keycode = a780_direct_keycode,
++ .num = 1,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
+@@ -256,6 +308,7 @@
+
+ set_pxa_fb_info(&a780_fb_info);
+ pxa_set_mci_info(&a780_mci_platform_data);
++ pxa_set_kbd_info(&a780_kbd_platform_data);
+
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-leds.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-leds.patch
new file mode 100644
index 0000000000..edcc7136a1
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-leds.patch
@@ -0,0 +1,187 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: linux-2.6.24/drivers/leds/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/leds/Kconfig
++++ linux-2.6.24/drivers/leds/Kconfig
+@@ -123,6 +123,13 @@
+ These triggers allow kernel events to drive the LEDs and can
+ be configured via sysfs. If unsure, say Y.
+
++config LEDS_A780
++ tristate "LED Support for the Motorola A780 GSM Phone"
++ depends on LEDS_CLASS && PXA_EZX_A780
++ help
++ This option enables support for the LEDs on the
++ Motorola A780 GSM Phone.
++
+ config LEDS_TRIGGER_TIMER
+ tristate "LED Timer Trigger"
+ depends on LEDS_TRIGGERS
+Index: linux-2.6.24/drivers/leds/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/leds/Makefile
++++ linux-2.6.24/drivers/leds/Makefile
+@@ -19,6 +19,7 @@
+ obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o
+ obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
+ obj-$(CONFIG_LEDS_CM_X270) += leds-cm-x270.o
++obj-$(CONFIG_LEDS_A780) += leds-a780.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+Index: linux-2.6.24/drivers/leds/leds-a780.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/leds/leds-a780.c
+@@ -0,0 +1,122 @@
++/*
++ * EZX Platform LED Driver for the Motorola A780 GSM Phone
++ *
++ * Copyright 2006 Vanille-Media
++ *
++ * Author: Michael Lauer <mickey@Vanille.de>
++ *
++ * Based on keylight.c by Motorola and leds-corgi.c by Richard Purdie
++ *
++ * 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/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <asm/arch/ezx-pcap.h>
++
++static void a780led_main_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if ( value > 31 ) value = 31;
++ printk( KERN_DEBUG "a780led_main_set: %d\n", value );
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL4, value & 0x10);
++}
++
++static void a780led_aux_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if ( value > 31 ) value = 31;
++ printk( KERN_DEBUG "a780led_aux_set: %d\n", value );
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
++}
++
++static struct led_classdev a780_main_led = {
++ .name = "a780:main",
++ .default_trigger = "none",
++ .brightness_set = a780led_main_set,
++};
++
++static struct led_classdev a780_aux_led = {
++ .name = "a780:aux",
++ .default_trigger = "none",
++ .brightness_set = a780led_aux_set,
++};
++
++#ifdef CONFIG_PM
++static int a780led_suspend(struct platform_device *dev, pm_message_t state)
++{
++ led_classdev_suspend(&a780_main_led);
++ led_classdev_suspend(&a780_aux_led);
++ return 0;
++}
++
++static int a780led_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&a780_main_led);
++ led_classdev_resume(&a780_aux_led);
++ return 0;
++}
++#endif
++
++static int a780led_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = led_classdev_register(&pdev->dev, &a780_main_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &a780_aux_led);
++ if (ret < 0)
++ led_classdev_unregister(&a780_main_led);
++
++ return ret;
++}
++
++static int a780led_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&a780_main_led);
++ led_classdev_unregister(&a780_aux_led);
++ return 0;
++}
++
++static struct platform_driver a780led_driver = {
++ .probe = a780led_probe,
++ .remove = a780led_remove,
++#ifdef CONFIG_PM
++ .suspend = a780led_suspend,
++ .resume = a780led_resume,
++#endif
++ .driver = {
++ .name = "a780-led",
++ },
++};
++
++static int __init a780led_init(void)
++{
++ return platform_driver_register(&a780led_driver);
++}
++
++static void __exit a780led_exit(void)
++{
++ a780led_main_set( &a780_main_led, 0 );
++ a780led_aux_set( &a780_aux_led, 0 );
++ platform_driver_unregister(&a780led_driver);
++}
++
++module_init(a780led_init);
++module_exit(a780led_exit);
++
++MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>");
++MODULE_DESCRIPTION("Motorola A780 LED driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/ezx-a780.c
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-a780.c
+@@ -334,12 +334,20 @@
+ },
+ };
+
++static struct platform_device a780led_device = {
++ .name = "a780-led",
++ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
++};
+
+ static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
+ &pcap_ts_device,
+ &a780flip_device,
++ &a780led_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-mci.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-mci.patch
new file mode 100644
index 0000000000..591db70a26
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-mci.patch
@@ -0,0 +1,125 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a780.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+@@ -14,6 +14,9 @@
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+ #include <linux/fb.h>
++#include <linux/mmc/host.h>
++#include <linux/irq.h>
++#include <linux/log2.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -21,12 +24,102 @@
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
++#include <asm/arch/mmc.h>
+
+ #include "generic.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+
++#ifdef CONFIG_EZX_PCAP
++extern int ezx_pcap_mmcsd_power(int);
++extern void ezx_pcap_mmcsd_voltage(u_int32_t);
++#else
++#define ezx_pcap_mmcsd_voltage(x) {}
++#define ezx_pcap_mmcsd_power(x) {}
++#endif
++
++static struct pxamci_platform_data a780_mci_platform_data;
++
++static u_int8_t mmc_voltage[] = {
++ [ilog2(MMC_VDD_165_195)] = 6,
++ [ilog2(MMC_VDD_20_21)] = 7,
++ [ilog2(MMC_VDD_21_22)] = 8,
++ [ilog2(MMC_VDD_22_23)] = 8,
++ [ilog2(MMC_VDD_23_24)] = 9,
++ [ilog2(MMC_VDD_24_25)] = 9,
++ [ilog2(MMC_VDD_25_26)] = 10,
++ [ilog2(MMC_VDD_26_27)] = 10,
++ [ilog2(MMC_VDD_27_28)] = 11,
++ [ilog2(MMC_VDD_28_29)] = 11,
++ [ilog2(MMC_VDD_29_30)] = 12,
++ [ilog2(MMC_VDD_30_31)] = 12,
++ [ilog2(MMC_VDD_31_32)] = 13,
++ [ilog2(MMC_VDD_32_33)] = 13,
++ [ilog2(MMC_VDD_33_34)] = 14,
++ [ilog2(MMC_VDD_34_35)] = 14,
++ [ilog2(MMC_VDD_35_36)] = 15,
++};
++
++static int a780_mci_init(struct device *dev,
++ irqreturn_t (*ezx_detect_int)(int, void *),
++ void *data)
++{
++ int err;
++
++ /* Setup GPIO for PXA27x MMC/SD controller */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ ezx_pcap_mmcsd_power(1);
++
++ a780_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(0x49, ezx_detect_int, IRQF_DISABLED,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
++ "MMC card detect IRQ\n");
++ return -1;
++ }
++
++ set_irq_type(0x0b, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++static void a780_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ struct pxamci_platform_data* p_d = dev->platform_data;
++
++ if (( 1 << vdd) & p_d->ocr_mask)
++ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
++
++ ezx_pcap_mmcsd_power(1);
++}
++
++static void a780_mci_exit(struct device *dev, void *data)
++{
++ ezx_pcap_mmcsd_power(0);
++ free_irq(0x49, data);
++}
++
++static struct pxamci_platform_data a780_mci_platform_data = {
++ .ocr_mask = MMC_VDD_165_195|MMC_VDD_20_21|MMC_VDD_21_22
++ |MMC_VDD_22_23|MMC_VDD_23_24|MMC_VDD_24_25
++ |MMC_VDD_25_26|MMC_VDD_26_27|MMC_VDD_27_28
++ |MMC_VDD_28_29|MMC_VDD_29_30|MMC_VDD_30_31
++ |MMC_VDD_31_32|MMC_VDD_32_33|MMC_VDD_33_34
++ |MMC_VDD_34_35|MMC_VDD_35_36,
++ .init = a780_mci_init,
++ .setpower = a780_mci_setpower,
++ .exit = a780_mci_exit,
++};
++
+ static struct pxafb_mode_info mode_a780 = {
+ .pixclock = 150000,
+ .xres = 240,
+@@ -137,6 +230,7 @@
+ PSLR = 0x05800f00;
+
+ set_pxa_fb_info(&a780_fb_info);
++ pxa_set_mci_info(&a780_mci_platform_data);
+
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-pcap.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-pcap.patch
new file mode 100644
index 0000000000..5533433dec
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-pcap.patch
@@ -0,0 +1,90 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a780.c 2007-11-24 19:58:16.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c 2007-11-24 20:09:28.000000000 -0200
+@@ -20,6 +20,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -49,7 +50,77 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int a780_pcap_init(void)
++{
++ /* initialize PCAP registers */
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE10, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE11, 0);
++
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE00, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE01, 0);
++
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW10_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW11_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW12_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_LOWPWR, 0);
++
++ /*
++ * when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680
++ */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++// SSP_PCAP_bit_set(PCAP_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to low power mode when AP sleep */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_LOWPWR, 1);
++
++ return 0;
++}
++
++static struct pcap_platform_data a780_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_MCI_TF,
++ .clk = 1,
++ .init = a780_pcap_init,
++};
++
++static struct resource a780_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a780_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(a780_pcap_resources),
++ .resource = a780_pcap_resources,
++ .dev = {
++ .platform_data = &a780_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &a780_pcap_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-ts.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-ts.patch
new file mode 100644
index 0000000000..e1dd6ca5c6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-ts.patch
@@ -0,0 +1,39 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-a780.c 2007-10-23 19:37:43.000000000 +0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-a780.c 2007-10-23 19:37:58.000000000 +0200
+@@ -288,9 +288,34 @@
+ },
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
++ &pcap_ts_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/a780-vibrator.patch b/packages/linux/linux-ezx-2.6.24/patches/a780-vibrator.patch
new file mode 100644
index 0000000000..8e431fbd6c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/a780-vibrator.patch
@@ -0,0 +1,102 @@
+Index: linux-2.6.24/drivers/leds/leds-a780.c
+===================================================================
+--- linux-2.6.24.orig/drivers/leds/leds-a780.c
++++ linux-2.6.24/drivers/leds/leds-a780.c
+@@ -40,6 +40,17 @@
+ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
+ }
+
++static void a780vibrator_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value > 4) value = 4;
++ printk( KERN_DEBUG "a780vibrator_set: %d\n", value );
++ ezx_pcap_vibrator_level(value-1);
++ if (value == 0)
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 0);
++ else
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 1);
++}
++
+ static struct led_classdev a780_main_led = {
+ .name = "a780:main",
+ .default_trigger = "none",
+@@ -52,11 +63,18 @@
+ .brightness_set = a780led_aux_set,
+ };
+
++static struct led_classdev a780_vibrator = {
++ .name = "a780:vibrator",
++ .default_trigger = "none",
++ .brightness_set = a780vibrator_set,
++};
++
+ #ifdef CONFIG_PM
+ static int a780led_suspend(struct platform_device *dev, pm_message_t state)
+ {
+ led_classdev_suspend(&a780_main_led);
+ led_classdev_suspend(&a780_aux_led);
++ led_classdev_suspend(&a780_vibrator);
+ return 0;
+ }
+
+@@ -64,6 +82,7 @@
+ {
+ led_classdev_resume(&a780_main_led);
+ led_classdev_resume(&a780_aux_led);
++ led_classdev_resume(&a780_vibrator);
+ return 0;
+ }
+ #endif
+@@ -77,8 +96,16 @@
+ return ret;
+
+ ret = led_classdev_register(&pdev->dev, &a780_aux_led);
+- if (ret < 0)
++ if (ret < 0) {
++ led_classdev_unregister(&a780_main_led);
++ return ret;
++ }
++
++ ret = led_classdev_register(&pdev->dev, &a780_vibrator);
++ if (ret < 0) {
+ led_classdev_unregister(&a780_main_led);
++ led_classdev_unregister(&a780_aux_led);
++ }
+
+ return ret;
+ }
+@@ -87,6 +114,7 @@
+ {
+ led_classdev_unregister(&a780_main_led);
+ led_classdev_unregister(&a780_aux_led);
++ led_classdev_unregister(&a780_vibrator);
+ return 0;
+ }
+
+@@ -111,6 +139,7 @@
+ {
+ a780led_main_set( &a780_main_led, 0 );
+ a780led_aux_set( &a780_aux_led, 0 );
++ a780vibrator_set( &a780_vibrator, 0 );
+ platform_driver_unregister(&a780led_driver);
+ }
+
+Index: linux-2.6.24/drivers/leds/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/leds/Kconfig
++++ linux-2.6.24/drivers/leds/Kconfig
+@@ -124,11 +124,11 @@
+ be configured via sysfs. If unsure, say Y.
+
+ config LEDS_A780
+- tristate "LED Support for the Motorola A780 GSM Phone"
++ tristate "LED/Vibrator Support for the Motorola A780 GSM Phone"
+ depends on LEDS_CLASS && PXA_EZX_A780
+ help
+- This option enables support for the LEDs on the
+- Motorola A780 GSM Phone.
++ This option enables support for the LEDs and the
++ vibrator on the Motorola A780 GSM Phone.
+
+ config LEDS_E680
+ tristate "LED Support for the Motorola E680(i) GSM Phone"
diff --git a/packages/linux/linux-ezx-2.6.24/patches/asoc-fix-loopback.patch b/packages/linux/linux-ezx-2.6.24/patches/asoc-fix-loopback.patch
new file mode 100644
index 0000000000..feea138984
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/asoc-fix-loopback.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:30:56.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:36:26.000000000 -0300
+@@ -153,7 +153,8 @@
+ static int pxa2xx_pcm_prepare(struct snd_pcm_substream *substream)
+ {
+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
+-
++ /* no dma if on loopback */
++ if (!prtd->params) return 0;
+ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
+ DCSR(prtd->dma_ch) = 0;
+ DCMD(prtd->dma_ch) = 0;
diff --git a/packages/linux/linux-ezx-2.6.24/patches/asoc-pxa-ssp.patch b/packages/linux/linux-ezx-2.6.24/patches/asoc-pxa-ssp.patch
new file mode 100644
index 0000000000..e53b61c352
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/asoc-pxa-ssp.patch
@@ -0,0 +1,755 @@
+Index: linux-2.6.23/sound/soc/pxa/pxa2xx-ssp.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.23/sound/soc/pxa/pxa2xx-ssp.c 2007-10-22 22:27:11.000000000 +0200
+@@ -0,0 +1,671 @@
++/*
++ * pxa2xx-ssp.c -- ALSA Soc Audio Layer
++ *
++ * Copyright 2005 Wolfson Microelectronics PLC.
++ * Author: Liam Girdwood
++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.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.
++ *
++ * Revision history
++ * 12th Aug 2005 Initial version.
++ *
++ * TODO:
++ * o The SSP driver _mostly_ works, however is in need of testing and
++ * someone with time to complete it.
++ * o Test network mode for > 16bit sample size
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/initval.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++
++#include <asm/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/audio.h>
++#include <asm/arch/ssp.h>
++
++#include "pxa2xx-pcm.h"
++#include "pxa2xx-ssp.h"
++
++#define PXA_SSP_DEBUG 0
++
++/*
++ * The following should be defined in pxa-regs.h
++ */
++#define SSCR0_ACS (1 << 30) /* Audio Clock Select */
++#define SSACD_SCDB (1 << 3) /* SSPSYSCLK Divider Bypass (SSCR0[ACS] must be set) */
++#define SSACD_ACPS(x) (x << 4) /* Audio clock PLL select */
++#define SSACD_ACDS(x) (x << 0) /* Audio clock divider select */
++
++/*
++ * SSP audio private data
++ */
++struct ssp_priv {
++ unsigned int sysclk;
++};
++
++static struct ssp_priv ssp_clk[3];
++static struct ssp_dev ssp[3];
++#ifdef CONFIG_PM
++static struct ssp_state ssp_state[3];
++#endif
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_mono_out = {
++ .name = "SSP1 PCM Mono out",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRTXSSDR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_mono_in = {
++ .name = "SSP1 PCM Mono in",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRRXSSDR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_stereo_out = {
++ .name = "SSP1 PCM Stereo out",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRTXSSDR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_stereo_in = {
++ .name = "SSP1 PCM Stereo in",
++ .dev_addr = __PREG(SSDR_P1),
++ .drcmr = &DRCMRRXSSDR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_mono_out = {
++ .name = "SSP2 PCM Mono out",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRTXSS2DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_mono_in = {
++ .name = "SSP2 PCM Mono in",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRRXSS2DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_stereo_out = {
++ .name = "SSP2 PCM Stereo out",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRTXSS2DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_stereo_in = {
++ .name = "SSP2 PCM Stereo in",
++ .dev_addr = __PREG(SSDR_P2),
++ .drcmr = &DRCMRRXSS2DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_mono_out = {
++ .name = "SSP3 PCM Mono out",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRTXSS3DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_mono_in = {
++ .name = "SSP3 PCM Mono in",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRRXSS3DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH2,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_stereo_out = {
++ .name = "SSP3 PCM Stereo out",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRTXSS3DR,
++ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_stereo_in = {
++ .name = "SSP3 PCM Stereo in",
++ .dev_addr = __PREG(SSDR_P3),
++ .drcmr = &DRCMRRXSS3DR,
++ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
++ DCMD_BURST16 | DCMD_WIDTH4,
++};
++
++static struct pxa2xx_pcm_dma_params *ssp_dma_params[3][4] = {
++ {&pxa2xx_ssp1_pcm_mono_out, &pxa2xx_ssp1_pcm_mono_in,
++ &pxa2xx_ssp1_pcm_stereo_out,&pxa2xx_ssp1_pcm_stereo_in,},
++ {&pxa2xx_ssp2_pcm_mono_out, &pxa2xx_ssp2_pcm_mono_in,
++ &pxa2xx_ssp2_pcm_stereo_out, &pxa2xx_ssp2_pcm_stereo_in,},
++ {&pxa2xx_ssp3_pcm_mono_out, &pxa2xx_ssp3_pcm_mono_in,
++ &pxa2xx_ssp3_pcm_stereo_out,&pxa2xx_ssp3_pcm_stereo_in,},
++};
++
++static int pxa2xx_ssp_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret = 0;
++
++ if (!rtd->dai->cpu_dai->active) {
++ ret = ssp_init (&ssp[cpu_dai->id], cpu_dai->id + 1,
++ SSP_NO_IRQ);
++ if (ret < 0)
++ return ret;
++ ssp_disable(&ssp[cpu_dai->id]);
++ }
++ return ret;
++}
++
++static void pxa2xx_ssp_shutdown(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++
++ if (!cpu_dai->active) {
++ ssp_disable(&ssp[cpu_dai->id]);
++ ssp_exit(&ssp[cpu_dai->id]);
++ }
++}
++
++#if defined (CONFIG_PXA27x)
++static int cken[3] = {CKEN_SSP1, CKEN_SSP2, CKEN_SSP3};
++#else
++static int cken[3] = {CKEN_SSP, CKEN_NSSP, CKEN_ASSP};
++#endif
++
++#ifdef CONFIG_PM
++
++static int pxa2xx_ssp_suspend(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if (!dai->active)
++ return 0;
++
++ ssp_save_state(&ssp[dai->id], &ssp_state[dai->id]);
++ pxa_set_cken(cken[dai->id], 0);
++ return 0;
++}
++
++static int pxa2xx_ssp_resume(struct platform_device *pdev,
++ struct snd_soc_cpu_dai *dai)
++{
++ if (!dai->active)
++ return 0;
++
++ pxa_set_cken(cken[dai->id], 1);
++ ssp_restore_state(&ssp[dai->id], &ssp_state[dai->id]);
++ ssp_enable(&ssp[dai->id]);
++
++ return 0;
++}
++
++#else
++#define pxa2xx_ssp_suspend NULL
++#define pxa2xx_ssp_resume NULL
++#endif
++
++/*
++ * Set the SSP ports SYSCLK.
++ */
++static int pxa2xx_ssp_set_dai_sysclk(struct snd_soc_cpu_dai *cpu_dai,
++ int clk_id, unsigned int freq, int dir)
++{
++ int port = cpu_dai->id + 1;
++ u32 sscr0 = SSCR0_P(port) &
++ ~(SSCR0_ECS | SSCR0_NCS | SSCR0_MOD | SSCR0_ACS);
++
++ switch (clk_id) {
++ case PXA2XX_SSP_CLK_PLL:
++ /* Internal PLL is fixed on pxa25x and pxa27x */
++#ifdef CONFIG_PXA27x
++ ssp_clk[cpu_dai->id].sysclk = 13000000;
++#else
++ ssp_clk[cpu_dai->id].sysclk = 1843200;
++#endif
++ break;
++ case PXA2XX_SSP_CLK_EXT:
++ ssp_clk[cpu_dai->id].sysclk = freq;
++ sscr0 |= SSCR0_ECS;
++ break;
++ case PXA2XX_SSP_CLK_NET:
++ ssp_clk[cpu_dai->id].sysclk = freq;
++ sscr0 |= SSCR0_NCS | SSCR0_MOD;
++ break;
++ case PXA2XX_SSP_CLK_AUDIO:
++ ssp_clk[cpu_dai->id].sysclk = 0;
++ SSCR0_P(port) |= SSCR0_SerClkDiv(1);
++ sscr0 |= SSCR0_ACS;
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ /* the SSP CKEN clock must be disabled when changing SSP clock mode */
++ pxa_set_cken(cken[cpu_dai->id], 0);
++ SSCR0_P(port) |= sscr0;
++ pxa_set_cken(cken[cpu_dai->id], 1);
++ return 0;
++}
++
++/*
++ * Set the SSP clock dividers.
++ */
++static int pxa2xx_ssp_set_dai_clkdiv(struct snd_soc_cpu_dai *cpu_dai,
++ int div_id, int div)
++{
++ int port = cpu_dai->id + 1;
++
++ switch (div_id) {
++ case PXA2XX_SSP_AUDIO_DIV_ACDS:
++ SSACD_P(port) &= ~ 0x7;
++ SSACD_P(port) |= SSACD_ACDS(div);
++ break;
++ case PXA2XX_SSP_AUDIO_DIV_SCDB:
++ SSACD_P(port) &= ~0x8;
++ if (div == PXA2XX_SSP_CLK_SCDB_1)
++ SSACD_P(port) |= SSACD_SCDB;
++ break;
++ case PXA2XX_SSP_DIV_SCR:
++ SSCR0_P(port) &= ~SSCR0_SCR;
++ SSCR0_P(port) |= SSCR0_SerClkDiv(div);
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ return 0;
++}
++
++/*
++ * Configure the PLL frequency pxa27x and (afaik - pxa320 only)
++ */
++static int pxa2xx_ssp_set_dai_pll(struct snd_soc_cpu_dai *cpu_dai,
++ int pll_id, unsigned int freq_in, unsigned int freq_out)
++{
++ int port = cpu_dai->id + 1;
++
++ SSACD_P(port) &= ~0x70;
++ switch (freq_out) {
++ case 5622000:
++ break;
++ case 11345000:
++ SSACD_P(port) |= (0x1 << 4);
++ break;
++ case 12235000:
++ SSACD_P(port) |= (0x2 << 4);
++ break;
++ case 14857000:
++ SSACD_P(port) |= (0x3 << 4);
++ break;
++ case 32842000:
++ SSACD_P(port) |= (0x4 << 4);
++ break;
++ case 48000000:
++ SSACD_P(port) |= (0x5 << 4);
++ break;
++ }
++ return 0;
++}
++
++/*
++ * Set the active slots in TDM/Network mode
++ */
++static int pxa2xx_ssp_set_dai_tdm_slot(struct snd_soc_cpu_dai *cpu_dai,
++ unsigned int mask, int slots)
++{
++ int port = cpu_dai->id + 1;
++
++ SSCR0_P(port) &= ~SSCR0_SlotsPerFrm(7);
++
++ /* set number of active slots */
++ SSCR0_P(port) |= SSCR0_SlotsPerFrm(slots);
++
++ /* set active slot mask */
++ SSTSA_P(port) = mask;
++ SSRSA_P(port) = mask;
++ return 0;
++}
++
++/*
++ * Tristate the SSP DAI lines
++ */
++static int pxa2xx_ssp_set_dai_tristate(struct snd_soc_cpu_dai *cpu_dai,
++ int tristate)
++{
++ int port = cpu_dai->id + 1;
++
++ if (tristate)
++ SSCR1_P(port) &= ~SSCR1_TTE;
++ else
++ SSCR1_P(port) |= SSCR1_TTE;
++
++ return 0;
++}
++
++/*
++ * Set up the SSP DAI format.
++ * The SSP Port must be inactive before calling this function as the
++ * physical interface format is changed.
++ */
++static int pxa2xx_ssp_set_dai_fmt(struct snd_soc_cpu_dai *cpu_dai,
++ unsigned int fmt)
++{
++ int port = cpu_dai->id + 1;
++
++ /* reset port settings */
++ SSCR0_P(port) = 0;
++ SSCR1_P(port) = 0;
++ SSPSP_P(port) = 0;
++
++ /* NOTE: I2S emulation is still very much work in progress here */
++
++ /* FIXME: this is what wince uses for msb */
++ if ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_MSB) {
++ SSCR0_P(port) = SSCR0_EDSS | SSCR0_TISSP | SSCR0_DataSize(16);
++
++// SSCR1_P(port) = SSCR1_RxTresh(8) | SSCR1_TxTresh(8); /* doesn't seem to be needed */
++ return 0;
++ }
++
++ /* check for I2S emulation mode - handle it separately */
++ if (((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_I2S) ||
++ ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_MSB)) {
++ /* 8.4.11 */
++
++ /* Only SSCR0[NCS] or SSCR0[ECS] bit fields settings are optional */
++ SSCR0_P(port) = SSCR0_EDSS | SSCR0_PSP | SSCR0_DataSize(16);
++
++ /* SSCR1 = 0x203C3C03 */
++ /* SSCR1[SCLKDIR] and SSCR1[SFRMDIR] must be cleared (master only ???),
++ * all other bit fields settings are optional. */
++ //SSCR1_P(port) &= ~(SSCR1_SCLKDIR | SSCR1_SFRMDIR);
++
++ /* set FIFO thresholds */
++ SSCR1_P(port) = SSCR1_RxTresh(14) | SSCR1_TxTresh(1);
++
++ /* normal: */
++ /* all bit fields must be cleared except: FSRT = 1 and
++ * SFRMWDTH = 16, DMYSTART=0,1) */
++ SSPSP_P(port) = SSPSP_FSRT | SSPSP_SFRMWDTH(16) | SSPSP_DMYSTRT(0);
++ return 0;
++ }
++
++ SSCR0_P(port) |= SSCR0_PSP;
++ SSCR1_P(port) = SSCR1_RxTresh(14) | SSCR1_TxTresh(1) |
++ SSCR1_TRAIL | SSCR1_RWOT;
++
++ switch(fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ SSCR1_P(port) |= (SSCR1_SCLKDIR | SSCR1_SFRMDIR);
++ break;
++ case SND_SOC_DAIFMT_CBM_CFS:
++ SSCR1_P(port) |= SSCR1_SCLKDIR;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFM:
++ SSCR1_P(port) |= SSCR1_SFRMDIR;
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ SSPSP_P(port) |= SSPSP_SFRMP | SSPSP_FSRT;
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_A:
++ SSPSP_P(port) |= SSPSP_DMYSTRT(1);
++ case SND_SOC_DAIFMT_DSP_B:
++ SSPSP_P(port) |= SSPSP_SCMODE(2);
++ break;
++ case SND_SOC_DAIFMT_I2S:
++ case SND_SOC_DAIFMT_MSB:
++ /* handled above */
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
++/*
++ * Set the SSP audio DMA parameters and sample size.
++ * Can be called multiple times by oss emulation.
++ */
++static int pxa2xx_ssp_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int dma = 0, chn = params_channels(params);
++ int port = cpu_dai->id + 1;
++
++ /* select correct DMA params */
++ if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
++ dma = 1; /* capture DMA offset is 1,3 */
++ if (chn == 2)
++ dma += 2; /* stereo DMA offset is 2, mono is 0 */
++ cpu_dai->dma_data = ssp_dma_params[cpu_dai->id][dma];
++
++ /* we can only change the settings if the port is not in use */
++ if (SSCR0_P(port) & SSCR0_SSE)
++ return 0;
++
++ /* clear selected SSP bits */
++ SSCR0_P(port) &= ~(SSCR0_DSS | SSCR0_EDSS);
++
++ /* bit size */
++ switch(params_format(params)) {
++ case SNDRV_PCM_FORMAT_S16_LE:
++ SSCR0_P(port) |= SSCR0_DataSize(16);
++ break;
++ case SNDRV_PCM_FORMAT_S24_LE:
++ SSCR0_P(port) |=(SSCR0_EDSS | SSCR0_DataSize(8));
++ /* we must be in network mode (2 slots) for 24 bit stereo */
++ break;
++ case SNDRV_PCM_FORMAT_S32_LE:
++ SSCR0_P(port) |= (SSCR0_EDSS | SSCR0_DataSize(16));
++ /* we must be in network mode (2 slots) for 32 bit stereo */
++ break;
++ }
++
++#if PXA_SSP_DEBUG
++ printk("SSCR0 %x SSCR1 %x SSTO %x SSPSP %x SSSR %x SSACD %x\n",
++ SSCR0_P(port), SSCR1_P(port),
++ SSTO_P(port), SSPSP_P(port),
++ SSSR_P(port), SSACD_P(port));
++#endif
++ return 0;
++}
++
++static int pxa2xx_ssp_trigger(struct snd_pcm_substream *substream, int cmd)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret = 0;
++ int port = cpu_dai->id + 1;
++
++ switch (cmd) {
++ case SNDRV_PCM_TRIGGER_RESUME:
++ ssp_enable(&ssp[cpu_dai->id]);
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(port) |= SSCR1_TSRE;
++ else
++ SSCR1_P(port) |= SSCR1_RSRE;
++ SSSR_P(port) |= SSSR_P(port);
++ break;
++ case SNDRV_PCM_TRIGGER_START:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(port) |= SSCR1_TSRE;
++ else
++ SSCR1_P(port) |= SSCR1_RSRE;
++ ssp_enable(&ssp[cpu_dai->id]);
++ break;
++ case SNDRV_PCM_TRIGGER_STOP:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(port) &= ~SSCR1_TSRE;
++ else
++ SSCR1_P(port) &= ~SSCR1_RSRE;
++ break;
++ case SNDRV_PCM_TRIGGER_SUSPEND:
++ ssp_disable(&ssp[cpu_dai->id]);
++ break;
++ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ SSCR1_P(port) &= ~SSCR1_TSRE;
++ else
++ SSCR1_P(port) &= ~SSCR1_RSRE;
++ break;
++
++ default:
++ ret = -EINVAL;
++ }
++#if PXA_SSP_DEBUG
++ printk("trig cmd %d\n", cmd);
++ printk("SSCR0 %x SSCR1 %x SSTO %x SSPSP %x SSSR %x\n",
++ SSCR0_P(port), SSCR1_P(port),
++ SSTO_P(port), SSPSP_P(port),
++ SSSR_P(port));
++#endif
++ return ret;
++}
++
++#define PXA2XX_SSP_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
++
++#define PXA2XX_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
++ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
++
++struct snd_soc_cpu_dai pxa_ssp_dai[] = {
++ { .name = "pxa2xx-ssp1",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = pxa2xx_ssp_suspend,
++ .resume = pxa2xx_ssp_resume,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = PXA2XX_SSP_RATES,
++ .formats = PXA2XX_SSP_FORMATS,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = PXA2XX_SSP_RATES,
++ .formats = PXA2XX_SSP_FORMATS,},
++ .ops = {
++ .startup = pxa2xx_ssp_startup,
++ .shutdown = pxa2xx_ssp_shutdown,
++ .trigger = pxa2xx_ssp_trigger,
++ .hw_params = pxa2xx_ssp_hw_params,},
++ .dai_ops = {
++ .set_sysclk = pxa2xx_ssp_set_dai_sysclk,
++ .set_clkdiv = pxa2xx_ssp_set_dai_clkdiv,
++ .set_pll = pxa2xx_ssp_set_dai_pll,
++ .set_fmt = pxa2xx_ssp_set_dai_fmt,
++ .set_tdm_slot = pxa2xx_ssp_set_dai_tdm_slot,
++ .set_tristate = pxa2xx_ssp_set_dai_tristate,
++ },
++ },
++ { .name = "pxa2xx-ssp2",
++ .id = 1,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = pxa2xx_ssp_suspend,
++ .resume = pxa2xx_ssp_resume,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = PXA2XX_SSP_RATES,
++ .formats = PXA2XX_SSP_FORMATS,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = PXA2XX_SSP_RATES,
++ .formats = PXA2XX_SSP_FORMATS,},
++ .ops = {
++ .startup = pxa2xx_ssp_startup,
++ .shutdown = pxa2xx_ssp_shutdown,
++ .trigger = pxa2xx_ssp_trigger,
++ .hw_params = pxa2xx_ssp_hw_params,},
++ .dai_ops = {
++ .set_sysclk = pxa2xx_ssp_set_dai_sysclk,
++ .set_clkdiv = pxa2xx_ssp_set_dai_clkdiv,
++ .set_pll = pxa2xx_ssp_set_dai_pll,
++ .set_fmt = pxa2xx_ssp_set_dai_fmt,
++ .set_tdm_slot = pxa2xx_ssp_set_dai_tdm_slot,
++ .set_tristate = pxa2xx_ssp_set_dai_tristate,
++ },
++ },
++ { .name = "pxa2xx-ssp3",
++ .id = 2,
++ .type = SND_SOC_DAI_PCM,
++ .suspend = pxa2xx_ssp_suspend,
++ .resume = pxa2xx_ssp_resume,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = PXA2XX_SSP_RATES,
++ .formats = PXA2XX_SSP_FORMATS,},
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = PXA2XX_SSP_RATES,
++ .formats = PXA2XX_SSP_FORMATS,},
++ .ops = {
++ .startup = pxa2xx_ssp_startup,
++ .shutdown = pxa2xx_ssp_shutdown,
++ .trigger = pxa2xx_ssp_trigger,
++ .hw_params = pxa2xx_ssp_hw_params,},
++ .dai_ops = {
++ .set_sysclk = pxa2xx_ssp_set_dai_sysclk,
++ .set_clkdiv = pxa2xx_ssp_set_dai_clkdiv,
++ .set_pll = pxa2xx_ssp_set_dai_pll,
++ .set_fmt = pxa2xx_ssp_set_dai_fmt,
++ .set_tdm_slot = pxa2xx_ssp_set_dai_tdm_slot,
++ .set_tristate = pxa2xx_ssp_set_dai_tristate,
++ },
++ },
++};
++EXPORT_SYMBOL_GPL(pxa_ssp_dai);
++
++/* Module information */
++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
++MODULE_DESCRIPTION("pxa2xx SSP/PCM SoC Interface");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.23/sound/soc/pxa/pxa2xx-ssp.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.23/sound/soc/pxa/pxa2xx-ssp.h 2007-10-22 22:27:11.000000000 +0200
+@@ -0,0 +1,42 @@
++/*
++ * linux/sound/arm/pxa2xx-ssp.h
++ *
++ * 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.
++ */
++
++#ifndef _PXA2XX_SSP_H
++#define _PXA2XX_SSP_H
++
++/* pxa2xx DAI SSP ID's */
++#define PXA2XX_DAI_SSP1 0
++#define PXA2XX_DAI_SSP2 1
++#define PXA2XX_DAI_SSP3 2
++
++/* SSP clock sources */
++#define PXA2XX_SSP_CLK_PLL 0
++#define PXA2XX_SSP_CLK_EXT 1
++#define PXA2XX_SSP_CLK_NET 2
++#define PXA2XX_SSP_CLK_AUDIO 3
++
++/* SSP audio dividers */
++#define PXA2XX_SSP_AUDIO_DIV_ACDS 0
++#define PXA2XX_SSP_AUDIO_DIV_SCDB 1
++#define PXA2XX_SSP_DIV_SCR 2
++
++/* SSP ACDS audio dividers values */
++#define PXA2XX_SSP_CLK_AUDIO_DIV_1 0
++#define PXA2XX_SSP_CLK_AUDIO_DIV_2 1
++#define PXA2XX_SSP_CLK_AUDIO_DIV_4 2
++#define PXA2XX_SSP_CLK_AUDIO_DIV_8 3
++#define PXA2XX_SSP_CLK_AUDIO_DIV_16 4
++#define PXA2XX_SSP_CLK_AUDIO_DIV_32 5
++
++/* SSP divider bypass */
++#define PXA2XX_SSP_CLK_SCDB_4 0
++#define PXA2XX_SSP_CLK_SCDB_1 1
++
++extern struct snd_soc_cpu_dai pxa_ssp_dai[3];
++
++#endif
+Index: linux-2.6.23/sound/soc/pxa/Kconfig
+===================================================================
+--- linux-2.6.23.orig/sound/soc/pxa/Kconfig 2007-10-10 09:38:42.000000000 +0200
++++ linux-2.6.23/sound/soc/pxa/Kconfig 2007-10-22 22:27:11.000000000 +0200
+@@ -18,6 +18,10 @@
+ config SND_PXA2XX_SOC_I2S
+ tristate
+
++config SND_PXA2XX_SOC_SSP
++ tristate
++ select PXA_SSP
++
+ config SND_PXA2XX_SOC_CORGI
+ tristate "SoC Audio support for Sharp Zaurus SL-C7x0"
+ depends on SND_PXA2XX_SOC && PXA_SHARP_C7xx
+Index: linux-2.6.23/sound/soc/pxa/Makefile
+===================================================================
+--- linux-2.6.23.orig/sound/soc/pxa/Makefile 2007-10-10 09:38:42.000000000 +0200
++++ linux-2.6.23/sound/soc/pxa/Makefile 2007-10-22 22:27:11.000000000 +0200
+@@ -2,10 +2,12 @@
+ snd-soc-pxa2xx-objs := pxa2xx-pcm.o
+ snd-soc-pxa2xx-ac97-objs := pxa2xx-ac97.o
+ snd-soc-pxa2xx-i2s-objs := pxa2xx-i2s.o
++snd-soc-pxa2xx-ssp-objs := pxa2xx-ssp.o
+
+ obj-$(CONFIG_SND_PXA2XX_SOC) += snd-soc-pxa2xx.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_AC97) += snd-soc-pxa2xx-ac97.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_I2S) += snd-soc-pxa2xx-i2s.o
++obj-$(CONFIG_SND_PXA2XX_SOC_SSP) += snd-soc-pxa2xx-ssp.o
+
+ # PXA Machine Support
+ snd-soc-corgi-objs := corgi.o
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/binutils-buildid-arm.patch b/packages/linux/linux-ezx-2.6.24/patches/binutils-buildid-arm.patch
index 68e35e89e1..68e35e89e1 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/binutils-buildid-arm.patch
+++ b/packages/linux/linux-ezx-2.6.24/patches/binutils-buildid-arm.patch
diff --git a/packages/linux/linux-ezx-2.6.24/patches/defconfig-a1200 b/packages/linux/linux-ezx-2.6.24/patches/defconfig-a1200
new file mode 100644
index 0000000000..b77950a96e
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/defconfig-a1200
@@ -0,0 +1,1205 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Sun Jan 27 16:09:08 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+CONFIG_PXA_EZX_A1200=y
+# CONFIG_PXA_EZX_E6 is not set
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EOC=y
+# CONFIG_EZX_EMU is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIUART_LL is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+# CONFIG_MTD_EZX_A780 is not set
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+CONFIG_MTD_EZX_A1200=y
+# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# 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_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+# CONFIG_BACKLIGHT_EZX is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+# CONFIG_INSTRUMENTATION is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ezx-2.6.24/patches/defconfig-a780 b/packages/linux/linux-ezx-2.6.24/patches/defconfig-a780
new file mode 100644
index 0000000000..b10c2e908d
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/defconfig-a780
@@ -0,0 +1,1502 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Sun Jan 27 15:19:17 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+CONFIG_PXA_EZX_A780=y
+# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
+CONFIG_EZX_BP=y
+CONFIG_EZX_PCAP=y
+# CONFIG_EZX_EOC is not set
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+# CONFIG_NO_HZ is not set
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=1 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_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=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=m
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES 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=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# 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_NET_CLS_ROUTE=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIUART_LL is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
+
+#
+# Wireless
+#
+CONFIG_CFG80211=m
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RCSIMPLE=y
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_A1200 is not set
+# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# 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_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_V4L_USB_DRIVERS is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_USB_DSBR is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_EZX=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_A780=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+# CONFIG_ROOT_NFS is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+# CONFIG_INSTRUMENTATION is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ABLKCIPHER=m
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+# CONFIG_CRYPTO_WP512 is not set
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ezx-2.6.24/patches/defconfig-e2 b/packages/linux/linux-ezx-2.6.24/patches/defconfig-e2
new file mode 100644
index 0000000000..8f870b8ff5
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/defconfig-e2
@@ -0,0 +1,1188 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Sun Jan 27 16:13:35 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+CONFIG_PXA_EZX_A1200=y
+# CONFIG_PXA_EZX_E6 is not set
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EOC=y
+# CONFIG_EZX_EMU is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIUART_LL is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_EZX is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# 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_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+# CONFIG_BACKLIGHT_EZX is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+# CONFIG_INSTRUMENTATION is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ezx-2.6.24/patches/defconfig-e6 b/packages/linux/linux-ezx-2.6.24/patches/defconfig-e6
new file mode 100644
index 0000000000..7e89e529d9
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/defconfig-e6
@@ -0,0 +1,1200 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Sun Jan 27 16:14:27 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+CONFIG_PXA_EZX_E6=y
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EOC=y
+# CONFIG_EZX_EMU is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIUART_LL is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_EZX is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# 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_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+# CONFIG_BACKLIGHT_EZX is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+# CONFIG_INSTRUMENTATION is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ezx-2.6.24/patches/defconfig-e680 b/packages/linux/linux-ezx-2.6.24/patches/defconfig-e680
new file mode 100644
index 0000000000..cb31751393
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/defconfig-e680
@@ -0,0 +1,1211 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Sun Jan 27 16:15:42 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_EZX=y
+CONFIG_PXA_EZX_E680=y
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
+CONFIG_EZX_BP=y
+CONFIG_EZX_PCAP=y
+# CONFIG_EZX_EOC is not set
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIUART_LL is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_A1200 is not set
+# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# 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_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_EZX=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_E680=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+# CONFIG_INSTRUMENTATION is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ezx-2.6.24/patches/dmesg-a780.log b/packages/linux/linux-ezx-2.6.24/patches/dmesg-a780.log
new file mode 100644
index 0000000000..6b15077676
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/dmesg-a780.log
@@ -0,0 +1,299 @@
+<5>Linux version 2.6.21-ezxdev (wyrm@vault) (gcc version 4.1.1) #222 PREEMPT Tue May 8 15:19:34 BRT 2007
+<4>CPU: XScale-PXA270 [69054117] revision 7 (ARMv5TE), cr=0000397f
+<4>Machine: Motorola Ezx Platform
+<4>Memory policy: ECC disabled, Data cache writeback
+<7>On node 0 totalpages: 12288
+<7> DMA zone: 416 pages used for memmap
+<7> DMA zone: 0 pages reserved
+<7> DMA zone: 11872 pages, LIFO batch:1
+<7> Normal zone: 0 pages used for memmap
+<6>Run Mode clock: 195.00MHz (*15)
+<6>Turbo Mode clock: 292.50MHz (*1.5, active)
+<6>Memory clock: 195.00MHz (/2)
+<6>System bus clock: 195.00MHz
+<4>CPU0: D VIVT undefined 5 cache
+<4>CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
+<4>CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
+<4>Built 1 zonelists. Total pages: 11872
+<5>Kernel command line: console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000
+<4>PID hash table entries: 256 (order: 8, 1024 bytes)
+<4>Console: colour dummy device 80x30
+<4>Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
+<4>Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
+<6>Memory: 32MB 16MB = 48MB total
+<5>Memory: 46084KB available (2264K code, 217K data, 84K init)
+<7>Calibrating delay loop... 291.63 BogoMIPS (lpj=1458176)
+<4>Mount-cache hash table entries: 512
+<6>CPU: Testing write buffer coherency: ok
+<6>NET: Registered protocol family 16
+<6>usbcore: registered new interface driver usbfs
+<6>usbcore: registered new interface driver hub
+<6>usbcore: registered new device driver usb
+<6>Time: pxa_timer clocksource has been installed.
+<6>NET: Registered protocol family 2
+<4>IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
+<4>TCP established hash table entries: 2048 (order: 2, 16384 bytes)
+<4>TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
+<6>TCP: Hash tables configured (established 2048 bind 2048)
+<6>TCP reno registered
+<4>bp handshake entered!
+<4>ezx-bp: handshake step 2
+<4>BP rdy irq
+<4>bp handshake entered!
+<5>ezx-bp: handshake passed
+<4>ezx-pcap: ssp driver registered
+<6>io scheduler noop registered
+<6>io scheduler deadline registered (default)
+<4>pxa2xx-fb pxa2xx-fb: machine LCCR0 setting contains illegal bits: 00200878
+<4>pxa2xx-fb pxa2xx-fb: machine LCCR3 setting contains illegal bits: 00300008
+<4>Console: switching to colour frame buffer device 60x53
+<6>usbcore: registered new interface driver usb ipc
+<6>drivers/char/ts0710_mux_usb.c: USB Host(Bulverde) IPC driver registered.
+<6>drivers/char/ts0710_mux_usb.c: 1.0alpha1:USB IPC Driver (TS07.10 lowlevel)
+<6>pxa2xx-uart.0: ttyS0 at MMIO 0x40100000 (irq = 22) is a FFUART
+<6>pxa2xx-uart.1: ttyS1 at MMIO 0x40200000 (irq = 21) is a BTUART
+<6>pxa2xx-uart.2: ttyS2 at MMIO 0x40700000 (irq = 20) is a STUART
+<7>ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
+<6>pxa27x-ohci pxa27x-ohci: PXA27x OHCI
+<6>pxa27x-ohci pxa27x-ohci: new USB bus registered, assigned bus number 1
+<6>pxa27x-ohci pxa27x-ohci: irq 3, io mem 0x4c000000
+<6>usb usb1: configuration #1 chosen from 1 choice
+<6>hub 1-0:1.0: USB hub found
+<6>hub 1-0:1.0: 3 ports detected
+<6>pxa27x_udc: version 08-Feb-2007
+<5>USB cmd disconnect
+<5>USB cmd disconnect
+<4>ether gadget: using random self ethernet address
+<4>ether gadget: using random host ethernet address
+<6>usb0: Ethernet Gadget, version: May Day 2005
+<6>usb0: using pxa27x_udc, OUT Bulk-out-2 IN Bulk-in-1
+<6>usb0: MAC 46:86:e0:79:e7:fb
+<5>USB cmd connect
+<5>USB cmd connect
+<6>input: gpio-keys as /class/input/input0
+<6>input: pxa-keyboard as /class/input/input1
+<6>input: pcap-touchscreen as /class/input/input2
+<6>sa1100-rtc sa1100-rtc: rtc core: registered sa1100-rtc as rtc0
+<6>Registered led device: a780:main
+<6>Registered led device: a780:aux
+<6>Registered led device: a780:vibrator
+<6>TCP cubic registered
+<6>NET: Registered protocol family 1
+<6>NET: Registered protocol family 17
+<6>XScale iWMMXt coprocessor detected.
+<6>sa1100-rtc sa1100-rtc: setting the system clock to 1970-01-01 00:00:16 (16)
+<6>mmcblk0: mmc0:bffc SU02G 1985024KiB
+<6>udc: USB reset
+<6> mmcblk0:<6>usb 1-3: new full speed USB device using pxa27x-ohci and address 2
+<4> p1 p2 p3 < p5 p6 p7 >
+<6>udc: USB reset
+<3>usb 1-3: device descriptor read/64, error -62
+<6>usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet Subset
+<3>usb 1-3: device descriptor read/64, error -62
+<6>usb 1-3: new full speed USB device using pxa27x-ohci and address 3
+<3>usb 1-3: device descriptor read/64, error -62
+<4>IP-Config: Complete:
+<4> device=usb0, addr=169.254.1.11, mask=255.255.255.254, gw=169.254.1.10,
+<4> host=ezx, domain=, nis-domain=(none),
+<4> bootserver=169.254.1.10, rootserver=169.254.1.10, rootpath=
+<6>kjournald starting. Commit interval 5 seconds
+<4>EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
+<6>EXT3 FS on mmcblk0p2, internal journal
+<6>EXT3-fs: recovery complete.
+<6>EXT3-fs: mounted filesystem with ordered data mode.
+<4>VFS: Mounted root (ext3 filesystem).
+<6>Freeing init memory: 84K
+<3>usb 1-3: device descriptor read/64, error -110
+<6>usb 1-3: new full speed USB device using pxa27x-ohci and address 4
+<3>usb 1-3: device descriptor read/8, error -62
+<4>usb 1-3: config 1 has an invalid interface number: 13 but max is 2
+<4>usb 1-3: config 1 has an invalid interface number: 6 but max is 2
+<4>usb 1-3: config 1 has an invalid interface number: 7 but max is 2
+<4>usb 1-3: config 1 has no interface number 0
+<4>usb 1-3: config 1 has no interface number 1
+<4>usb 1-3: config 1 has no interface number 2
+<6>usb 1-3: configuration #1 chosen from 1 choice
+<4>usb_ipc_probe: completed probe!
+<6>drivers/char/ts0710_mux_usb.c: usb_ipc_probe: Only two endpoints supported.
+<4>usb ipc: probe of 1-3:1.6 failed with error -1
+<6>drivers/char/ts0710_mux_usb.c: usb_ipc_probe: Only two endpoints supported.
+<4>usb ipc: probe of 1-3:1.7 failed with error -1
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 11 bytes.
+<4>Reading max 2037 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 11 bytes.
+<4>Reading max 2037 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 11 bytes.
+<4>Reading max 2037 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1984 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1952 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1920 bytes from ts0710_mux_usb inbuf.
+<4>Read 6 bytes.
+<4>Reading max 1914 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1882 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1850 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1818 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1786 bytes from ts0710_mux_usb inbuf.
+<4>Read 6 bytes.
+<4>Reading max 1780 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1748 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1716 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1684 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1652 bytes from ts0710_mux_usb inbuf.
+<4>Read 6 bytes.
+<4>Reading max 1646 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1984 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1952 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1920 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1888 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1856 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1824 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1792 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1760 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1728 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1696 bytes from ts0710_mux_usb inbuf.
+<4>Read 16 bytes.
+<4>Reading max 1680 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1984 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1952 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1920 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1888 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1856 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1824 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1792 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1760 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1728 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1696 bytes from ts0710_mux_usb inbuf.
+<4>Read 13 bytes.
+<4>Reading max 1683 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 14 bytes.
+<4>Reading max 2034 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 2 bytes.
+<4>Reading max 2014 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>nonzero read bulk status received: -104
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e6-eoc.patch b/packages/linux/linux-ezx-2.6.24/patches/e6-eoc.patch
new file mode 100644
index 0000000000..80849bd261
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e6-eoc.patch
@@ -0,0 +1,20 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e6.c 2007-11-24 20:12:15.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c 2007-11-24 20:12:27.000000000 -0200
+@@ -186,8 +186,15 @@
+ },
+ };
+
++
++struct platform_device e6_eoc_device = {
++ .name = "ezx-eoc",
++ .id = -1,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e6_pcap_device,
++ &e6_eoc_device,
+ };
+
+ static void __init e6_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e6-mci.patch b/packages/linux/linux-ezx-2.6.24/patches/e6-mci.patch
new file mode 100644
index 0000000000..62046802d8
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e6-mci.patch
@@ -0,0 +1,124 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e6.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c
+@@ -13,6 +13,8 @@
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+ #include <linux/fb.h>
++#include <linux/mmc/host.h>
++#include <linux/irq.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -20,12 +22,102 @@
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
++#include <asm/arch/mmc.h>
+
+ #include "generic.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+
++#ifdef CONFIG_EZX_PCAP
++extern int ezx_pcap_mmcsd_power(int);
++extern void ezx_pcap_mmcsd_voltage(u_int32_t);
++#else
++#define ezx_pcap_mmcsd_voltage(x) {}
++#define ezx_pcap_mmcsd_power(x) {}
++#endif
++
++static struct pxamci_platform_data e6_mci_platform_data;
++
++static u_int8_t mmc_voltage[] = {
++ [ilog2(MMC_VDD_165_195)] = 6,
++ [ilog2(MMC_VDD_20_21)] = 7,
++ [ilog2(MMC_VDD_21_22)] = 8,
++ [ilog2(MMC_VDD_22_23)] = 8,
++ [ilog2(MMC_VDD_23_24)] = 9,
++ [ilog2(MMC_VDD_24_25)] = 9,
++ [ilog2(MMC_VDD_25_26)] = 10,
++ [ilog2(MMC_VDD_26_27)] = 10,
++ [ilog2(MMC_VDD_27_28)] = 11,
++ [ilog2(MMC_VDD_28_29)] = 11,
++ [ilog2(MMC_VDD_29_30)] = 12,
++ [ilog2(MMC_VDD_30_31)] = 12,
++ [ilog2(MMC_VDD_31_32)] = 13,
++ [ilog2(MMC_VDD_32_33)] = 13,
++ [ilog2(MMC_VDD_33_34)] = 14,
++ [ilog2(MMC_VDD_34_35)] = 14,
++ [ilog2(MMC_VDD_35_36)] = 15,
++};
++
++static int e6_mci_init(struct device *dev,
++ irqreturn_t (*ezx_detect_int)(int, void *),
++ void *data)
++{
++ int err;
++
++ /* Setup GPIO for PXA27x MMC/SD controller */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ ezx_pcap_mmcsd_power(1);
++
++ e6_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(0x49, ezx_detect_int, IRQF_DISABLED,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
++ "MMC card detect IRQ\n");
++ return -1;
++ }
++
++ set_irq_type(0x0b, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++static void e6_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ struct pxamci_platform_data* p_d = dev->platform_data;
++
++ if (( 1 << vdd) & p_d->ocr_mask)
++ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
++
++ ezx_pcap_mmcsd_power(1);
++}
++
++static void e6_mci_exit(struct device *dev, void *data)
++{
++ ezx_pcap_mmcsd_power(0);
++ free_irq(0x49, data);
++}
++
++static struct pxamci_platform_data e6_mci_platform_data = {
++ .ocr_mask = MMC_VDD_165_195|MMC_VDD_20_21|MMC_VDD_21_22
++ |MMC_VDD_22_23|MMC_VDD_23_24|MMC_VDD_24_25
++ |MMC_VDD_25_26|MMC_VDD_26_27|MMC_VDD_27_28
++ |MMC_VDD_28_29|MMC_VDD_29_30|MMC_VDD_30_31
++ |MMC_VDD_31_32|MMC_VDD_32_33|MMC_VDD_33_34
++ |MMC_VDD_34_35|MMC_VDD_35_36,
++ .init = e6_mci_init,
++ .setpower = e6_mci_setpower,
++ .exit = e6_mci_exit,
++};
++
+ static struct pxafb_mode_info mode_e6 = {
+ .pixclock = 192308,
+ .xres = 240,
+@@ -101,6 +193,7 @@
+ static void __init e6_init(void)
+ {
+ set_pxa_fb_info(&e6_fb_info);
++ pxa_set_mci_info(&e6_mci_platform_data);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+ }
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e6-pcap.patch b/packages/linux/linux-ezx-2.6.24/patches/e6-pcap.patch
new file mode 100644
index 0000000000..656f5a33f3
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e6-pcap.patch
@@ -0,0 +1,66 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e6.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -48,7 +49,53 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int e6_pcap_init(void)
++{
++ /* FIXME */
++ ezx_pcap_write(PCAP_REG_INT_SEL, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_SWCTRL, 0x2ee6); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_VREG1, 0x15778e3); /* wrong */
++ ezx_pcap_write(PCAP_REG_VREG2, 0x810234); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG, 0x1024bec); /* wrong */
++ ezx_pcap_write(PCAP_REG_PWR, 0x94108); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG_MASK, 0x214d48); /* wrong */
++ ezx_pcap_write(PCAP_REG_BUSCTRL, 0x2a0); /* wrong */
++ ezx_pcap_write(PCAP_REG_LOWPWR, 0x1d9610c);
++ ezx_pcap_write(PCAP_REG_PERIPH, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_GP, 0x107); /* probably unnecessary */
++
++ return 0;
++}
++
++static struct pcap_platform_data e6_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_CS_AH | PCAP_MCI_SD,
++ .clk = 1,
++ .init = e6_pcap_init,
++};
++
++static struct resource e6_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device e6_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(e6_pcap_resources),
++ .resource = e6_pcap_resources,
++ .dev = {
++ .platform_data = &e6_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &e6_pcap_device,
+ };
+
+ static void __init e6_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e6-ts.patch b/packages/linux/linux-ezx-2.6.24/patches/e6-ts.patch
new file mode 100644
index 0000000000..f79f8663c7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e6-ts.patch
@@ -0,0 +1,39 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e6.c 2007-11-24 20:12:27.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e6.c 2007-11-24 20:12:44.000000000 -0200
+@@ -192,9 +192,34 @@
+ .id = -1,
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE,
++ .end = EZX_IRQ_ADCDONE,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &e6_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e6_pcap_device,
+ &e6_eoc_device,
++ &pcap_ts_device,
+ };
+
+ static void __init e6_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e680-emu.patch b/packages/linux/linux-ezx-2.6.24/patches/e680-emu.patch
new file mode 100644
index 0000000000..6302bba8c7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e680-emu.patch
@@ -0,0 +1,38 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e680.c 2007-10-24 20:01:32.000000000 +0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c 2007-10-24 20:01:37.000000000 +0200
+@@ -212,8 +212,33 @@
+ },
+ };
+
++/* EMU */
++static struct resource e680_emu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device e680_emu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(e680_emu_resources),
++ .resource = e680_emu_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
++ &e680_emu_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e680-kbd.patch b/packages/linux/linux-ezx-2.6.24/patches/e680-kbd.patch
new file mode 100644
index 0000000000..c313ec1452
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e680-kbd.patch
@@ -0,0 +1,93 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e680.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+@@ -15,6 +15,7 @@
+ #include <linux/fb.h>
+ #include <linux/mmc/host.h>
+ #include <linux/irq.h>
++#include <linux/input.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -23,11 +24,13 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+ #include <asm/arch/mmc.h>
++#include <asm/arch/kbd.h>
+
+ #include "generic.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
++extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
+
+ #ifdef CONFIG_EZX_PCAP
+ extern int ezx_pcap_mmcsd_power(int);
+@@ -236,6 +239,58 @@
+ .resource = e680_emu_resources,
+ };
+
++static unsigned char e680_keycode[] = {
++ /* row 0 */
++ KEY_UP, KEY_RIGHT, KEY_RESERVED, KEY_PHONE,
++ /* row 1 */
++ KEY_DOWN, KEY_LEFT, KEY_VOLUMEUP, KEY_VOLUMEDOWN,
++ /* row 2 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_KPENTER,
++};
++
++static unsigned char e680_direct_keycode[] = {
++ KEY_CAMERA,
++ KEY_RESERVED,
++ KEY_RESERVED,
++ KEY_HOME,
++ KEY_POWER,
++ KEY_MENU,
++};
++
++static int e680_kbd_init(void)
++{
++ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, VR Key */
++ pxa_gpio_mode(96 | GPIO_ALT_FN_1_IN); /* KP_DKIN<3>, GAME_A */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_1_IN); /* KP_DKIN<4>, power key */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_1_IN); /* KP_DKIN<5>, GAME_B */
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(GPIO_TC_MM_EN);
++ GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN);
++ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++ PGSR3 |= GPIO_bit(GPIO_TC_MM_EN);
++ return 0;
++}
++
++static struct pxakbd_platform_data e680_kbd_platform_data = {
++ .init = &e680_kbd_init,
++ .scan_interval = HZ/40,
++ .matrix = {
++ .keycode = e680_keycode,
++ .cols = 4,
++ .rows = 3,
++ },
++ .direct = {
++ .keycode = e680_direct_keycode,
++ .num = 6,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
+@@ -256,6 +311,7 @@
+
+ set_pxa_fb_info(&e680_fb_info);
+ pxa_set_mci_info(&e680_mci_platform_data);
++ pxa_set_kbd_info(&e680_kbd_platform_data);
+
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e680-leds.patch b/packages/linux/linux-ezx-2.6.24/patches/e680-leds.patch
new file mode 100644
index 0000000000..9de1f0fa8f
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e680-leds.patch
@@ -0,0 +1,300 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: linux-2.6.24/drivers/leds/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/leds/Kconfig
++++ linux-2.6.24/drivers/leds/Kconfig
+@@ -130,6 +130,13 @@
+ This option enables support for the LEDs on the
+ Motorola A780 GSM Phone.
+
++config LEDS_E680
++ tristate "LED Support for the Motorola E680(i) GSM Phone"
++ depends on LEDS_CLASS && PXA_EZX_E680
++ help
++ This options enables support for the LEDs on the
++ Motorola E680(i) GSM Phone.
++
+ config LEDS_TRIGGER_TIMER
+ tristate "LED Timer Trigger"
+ depends on LEDS_TRIGGERS
+Index: linux-2.6.24/drivers/leds/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/leds/Makefile
++++ linux-2.6.24/drivers/leds/Makefile
+@@ -20,6 +20,7 @@
+ obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
+ obj-$(CONFIG_LEDS_CM_X270) += leds-cm-x270.o
+ obj-$(CONFIG_LEDS_A780) += leds-a780.o
++obj-$(CONFIG_LEDS_E680) += leds-e680.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+Index: linux-2.6.24/drivers/leds/leds-e680.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/leds/leds-e680.c
+@@ -0,0 +1,235 @@
++/*
++ * EZX Platform LED Driver for the Motorola E680(i) GSM Phone
++ *
++ * Copyright 2006 Vanille-Media
++ *
++ * Author: Michael Lauer <mickey@Vanille.de>
++ *
++ * Based on the Motorola 2.4 leds-e680.c and leds-corgi.c by Richard Purdie
++ *
++ * 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/delay.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++
++//FIXME move defines to a common header file
++#define IND_CNTL_R_BUL 46
++#define IND_CNTL_G_BUL 47
++#define SSP_PCAP_LED_MASK 0x000fffe0
++#define SSP_PCAP_LED_SHIFT 5
++#define GPIO_TC_MM_EN 99
++
++extern int ezx_pcap_read(u_int8_t, u_int32_t *);
++extern int ezx_pcap_write(u_int8_t, u_int32_t);
++
++typedef struct {
++ u_int8_t ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 inactive */
++ u_int8_t ind_GPIO_green; /*Indicator Green control GPIO 47: 0 inactive, 1 active */
++ u_int8_t pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/
++ u_int8_t pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/
++ u_int8_t pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/
++ u_int8_t pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/
++ u_int8_t pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/
++ u_int8_t pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/
++// u_int8_t pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/
++} PCAP2_LED_REGISTER_VALUE;
++
++const PCAP2_LED_REGISTER_VALUE led_register_value[]=
++{
++ {0x1,0x0, 0x0,0x0, 0x0,0x0, 0x1,0x0}, /* 0 OFF */
++
++ {0x0,0x0, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 1 RED */
++ {0x1,0x1, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 2 GREEN */
++ {0x0,0x1, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 3 ORANGE */
++ {0x1,0x0, 0x0,0x1, 0x0,0xf, 0x0,0x0}, /* 4 BLUE */
++ {0x0,0x0, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 5 MAGENTA */
++ {0x1,0x1, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 6 CYAN */
++ {0x0,0x1, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 7 WHITE */
++};
++
++static void e680led_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ unsigned int tempValue;
++ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl,
++ ledg_ctrl, ledr_i, ledg_i, skip, t, color;
++ unsigned char t_mask[2] = { 0xc, 0xc };
++
++ skip = 0;
++ if (value & 128) {
++ value &= (~128);
++ skip = 1;
++ }
++
++ /* 7 colors - simple on */
++ if (value <= 7)
++ color = value;
++ /* 4 colors - 11 timed on */
++ else if (value <= 51) {
++ value -= 7;
++ color = ((value-1)%4)+1;
++ t = ((value-1)/4)+1;
++ t_mask[0] = t;
++ t_mask[1] = t;
++ }
++ /* 3 colors - 22 change color */
++ else if (value <= 84) {
++ value -= 51;
++ color = ((value-1)%3)+5;
++ t = ((value-1)/3)+1;
++ t_mask[1] = t;
++ }
++ else if (value <= 117) {
++ value -= 84;
++ color = ((value-1)%3)+5;
++ t = ((value-1)/3)+1;
++ t_mask[0] = t;
++ }
++ /* 3 colors - alternate with blue */
++ else if (value <= 120) {
++ color = value-113;
++ t_mask[0] = 0xa;
++ t_mask[1] = 0xb;
++ }
++ /* invalid value */
++ else
++ color = 1;
++
++ gpio_red = led_register_value[color].ind_GPIO_red;
++ gpio_green = led_register_value[color].ind_GPIO_green;
++ ledr_en = led_register_value[color].pcap_LEDR_en;
++ ledg_en = led_register_value[color].pcap_LEDG_en;
++ ledr_ctrl = led_register_value[color].pcap_LEDR_CTRL & t_mask[0];
++ ledg_ctrl = led_register_value[color].pcap_LEDG_CTRL & t_mask[1];
++ ledr_i = led_register_value[color].pcap_LEDR_I;
++ ledg_i = led_register_value[color].pcap_LEDG_I;
++
++ ezx_pcap_read(PCAP_REG_PERIPH,&tempValue);
++
++ tempValue &= (~SSP_PCAP_LED_MASK);
++
++ pxa_gpio_set_value(IND_CNTL_R_BUL, gpio_red);
++ pxa_gpio_set_value(IND_CNTL_G_BUL, gpio_green);
++
++ /* Write PCAP LED Peripheral Control Register*/
++ tempValue = ((ledr_en | (ledg_en << 1) | (ledr_ctrl << 2) |
++ (ledg_ctrl << 6) | (ledr_i << 10) | (ledg_i << 12) |
++ (skip << 14)) & 0x7fff) << SSP_PCAP_LED_SHIFT;
++
++ ezx_pcap_write(PCAP_REG_PERIPH,tempValue);
++}
++
++static void e680led_keypad_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ /* this is not working yet, as there is something else missing */
++#if 0
++ printk( KERN_DEBUG "e680led_keypad_set: %d\n", value );
++
++ pxa_gpio_mode(GPIO_TC_MM_EN);
++ GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN);
++ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++
++ udelay( 100 );
++
++ if ( value ) {
++ GPCR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++ PGSR3 &= ~GPIO_bit(GPIO_TC_MM_EN);
++ } else {
++ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++ PGSR3 |= GPIO_bit(GPIO_TC_MM_EN);
++ }
++#endif
++}
++
++static struct led_classdev e680_led = {
++ .name = "e680:led",
++ .default_trigger = "none",
++ .brightness_set = e680led_set,
++};
++
++static struct led_classdev e680_keypad = {
++ .name = "e680:keypad",
++ .default_trigger = "none",
++ .brightness_set = e680led_keypad_set,
++};
++
++#ifdef CONFIG_PM
++static int e680led_suspend(struct platform_device *dev, pm_message_t state)
++{
++ led_classdev_suspend(&e680_led);
++ led_classdev_suspend(&e680_keypad);
++ return 0;
++}
++
++static int e680led_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&e680_led);
++ led_classdev_resume(&e680_keypad);
++ return 0;
++}
++#endif
++
++static int e680led_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ /* configure GPIOs as output */
++ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT);
++ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT);
++
++ ret = led_classdev_register(&pdev->dev, &e680_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &e680_keypad);
++ if (ret < 0) {
++ led_classdev_unregister(&e680_led);
++ }
++ return ret;
++}
++
++static int e680led_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&e680_led);
++ led_classdev_unregister(&e680_keypad);
++ return 0;
++}
++
++static struct platform_driver e680led_driver = {
++ .probe = e680led_probe,
++ .remove = e680led_remove,
++#ifdef CONFIG_PM
++ .suspend = e680led_suspend,
++ .resume = e680led_resume,
++#endif
++ .driver = {
++ .name = "e680-led",
++ },
++};
++
++static int __init e680led_init(void)
++{
++ return platform_driver_register(&e680led_driver);
++}
++
++static void __exit e680led_exit(void)
++{
++ platform_driver_unregister(&e680led_driver);
++}
++
++module_init(e680led_init);
++module_exit(e680led_exit);
++
++MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>");
++MODULE_DESCRIPTION("Motorola E680 LED driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/ezx-e680.c
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-e680.c
+@@ -337,11 +337,20 @@
+ },
+ };
+
++static struct platform_device e680led_device = {
++ .name = "e680-led",
++ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
+ &pcap_ts_device,
+ &e680locksw_device,
++ &e680led_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e680-locksw.patch b/packages/linux/linux-ezx-2.6.24/patches/e680-locksw.patch
new file mode 100644
index 0000000000..6bb6687400
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e680-locksw.patch
@@ -0,0 +1,45 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e680.c 2007-10-24 18:58:55.000000000 +0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c 2007-10-24 18:59:23.000000000 +0200
+@@ -16,6 +16,7 @@
+ #include <linux/mmc/host.h>
+ #include <linux/irq.h>
+ #include <linux/input.h>
++#include <linux/gpio_keys.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -315,10 +316,32 @@
+ .resource = pcap_ts_resources,
+ };
+
++static struct gpio_keys_button e680locksw_buttons[] = {
++ [0] = {
++ .code = KEY_SLEEP,
++ .gpio = GPIO_LOCK_SCREEN_PIN,
++ .desc = "E680 lockscreen sw",
++ },
++};
++
++static struct gpio_keys_platform_data e680locksw_platform_data = {
++ .buttons = e680locksw_buttons,
++ .nbuttons = 1,
++};
++
++static struct platform_device e680locksw_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &e680locksw_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
+ &pcap_ts_device,
++ &e680locksw_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e680-mci.patch b/packages/linux/linux-ezx-2.6.24/patches/e680-mci.patch
new file mode 100644
index 0000000000..0cea75d2c6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e680-mci.patch
@@ -0,0 +1,126 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e680.c
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+@@ -13,6 +13,8 @@
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+ #include <linux/fb.h>
++#include <linux/mmc/host.h>
++#include <linux/irq.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -20,12 +22,104 @@
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
++#include <asm/arch/mmc.h>
+
+ #include "generic.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+
++#ifdef CONFIG_EZX_PCAP
++extern int ezx_pcap_mmcsd_power(int);
++extern void ezx_pcap_mmcsd_voltage(u_int32_t);
++#else
++#define ezx_pcap_mmcsd_voltage(x) {}
++#define ezx_pcap_mmcsd_power(x) {}
++#endif
++
++static struct pxamci_platform_data e680_mci_platform_data;
++
++static u_int8_t mmc_voltage[] = {
++ [ilog2(MMC_VDD_165_195)] = 3,
++ [ilog2(MMC_VDD_20_21)] = 3,
++ [ilog2(MMC_VDD_21_22)] = 3,
++ [ilog2(MMC_VDD_22_23)] = 3,
++ [ilog2(MMC_VDD_23_24)] = 3,
++ [ilog2(MMC_VDD_24_25)] = 3,
++ [ilog2(MMC_VDD_25_26)] = 3,
++ [ilog2(MMC_VDD_26_27)] = 3,
++ [ilog2(MMC_VDD_27_28)] = 3,
++ [ilog2(MMC_VDD_28_29)] = 3,
++ [ilog2(MMC_VDD_29_30)] = 3,
++ [ilog2(MMC_VDD_30_31)] = 3,
++ [ilog2(MMC_VDD_31_32)] = 3,
++ [ilog2(MMC_VDD_32_33)] = 3,
++ [ilog2(MMC_VDD_33_34)] = 3,
++ [ilog2(MMC_VDD_34_35)] = 3,
++ [ilog2(MMC_VDD_35_36)] = 3,
++};
++
++static int e680_mci_init(struct device *dev,
++ irqreturn_t (*ezx_detect_int)(int, void *),
++ void *data)
++{
++ int err;
++
++ /* Setup GPIO for PXA27x MMC/SD controller */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ ezx_pcap_mmcsd_power(1);
++
++ e680_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(0x49, ezx_detect_int, IRQF_DISABLED,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
++ "MMC card detect IRQ\n");
++ return -1;
++ }
++
++ set_irq_type(0x0b, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++
++static inline int e680_mci_get_ro(struct device *dev)
++{
++ return (GPLR3 & 0x800);
++}
++
++static void e680_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ struct pxamci_platform_data* p_d = dev->platform_data;
++
++ if (( 1 << vdd) & p_d->ocr_mask)
++ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
++
++ ezx_pcap_mmcsd_power(1);
++}
++
++static void e680_mci_exit(struct device *dev, void *data)
++{
++ ezx_pcap_mmcsd_power(0);
++ free_irq(0x49, data);
++}
++
++static struct pxamci_platform_data e680_mci_platform_data = {
++ .ocr_mask = MMC_VDD_27_28,
++ .init = e680_mci_init,
++ .get_ro = e680_mci_get_ro,
++ .setpower = e680_mci_setpower,
++ .exit = e680_mci_exit,
++};
++
+ static struct pxafb_mode_info mode_e680 = {
+ .pixclock = 150000,
+ .xres = 240,
+@@ -136,6 +230,7 @@
+ PSLR = 0x05800f00;
+
+ set_pxa_fb_info(&e680_fb_info);
++ pxa_set_mci_info(&e680_mci_platform_data);
+
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e680-pcap.patch b/packages/linux/linux-ezx-2.6.24/patches/e680-pcap.patch
new file mode 100644
index 0000000000..a02ccb42c8
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e680-pcap.patch
@@ -0,0 +1,90 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e680.c 2007-11-24 20:09:00.000000000 -0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c 2007-11-24 20:09:46.000000000 -0200
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -48,7 +49,77 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int e680_pcap_init(void)
++{
++ /* initialize PCAP registers */
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE10, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE11, 0);
++
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE00, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE01, 0);
++
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW10_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW11_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW12_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_LOWPWR, 0);
++
++ /*
++ * when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680
++ */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++// SSP_PCAP_bit_set( PCAP_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to low power mode when AP sleep */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_LOWPWR, 1);
++
++ return 0;
++}
++
++static struct pcap_platform_data e680_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_MCI_SD,
++ .clk = 1,
++ .init = e680_pcap_init,
++};
++
++static struct resource e680_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device e680_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(e680_pcap_resources),
++ .resource = e680_pcap_resources,
++ .dev = {
++ .platform_data = &e680_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &e680_pcap_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/e680-ts.patch b/packages/linux/linux-ezx-2.6.24/patches/e680-ts.patch
new file mode 100644
index 0000000000..2350b2de82
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/e680-ts.patch
@@ -0,0 +1,39 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/ezx-e680.c 2007-10-24 20:01:49.000000000 +0200
++++ linux-2.6.23/arch/arm/mach-pxa/ezx-e680.c 2007-10-24 20:01:58.000000000 +0200
+@@ -291,9 +291,34 @@
+ },
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
++ &pcap_ts_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-asoc.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-asoc.patch
new file mode 100644
index 0000000000..4ba0f4cddf
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-asoc.patch
@@ -0,0 +1,1302 @@
+Index: linux-2.6.24/sound/soc/codecs/pcap2.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/sound/soc/codecs/pcap2.c
+@@ -0,0 +1,796 @@
++/*
++ * pcap2.c - PCAP2 ASIC Audio driver
++ *
++ * Copyright (C) 2007 Daniel Ribeiro <wyrm@openezx.org>
++ *
++ * 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/delay.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/ezx.h>
++#include <asm/arch/hardware.h>
++
++#include "pcap2.h"
++
++#define AUDIO_NAME "pcap2-codec"
++#define PCAP2_VERSION "0.1"
++
++extern int ezx_pcap_write(u_int8_t, u_int32_t);
++extern int ezx_pcap_read(u_int8_t, u_int32_t *);
++static struct snd_soc_device *pcap2_codec_socdev;
++
++/*
++ * Debug
++ */
++
++//#define PCAP2_DEBUG
++
++#ifdef PCAP2_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...)
++#endif
++
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++#define dump_registers() pcap2_codec_read(NULL, 13); \
++ pcap2_codec_read(NULL, 12); \
++ pcap2_codec_read(NULL, 11); \
++ pcap2_codec_read(NULL, 26);
++
++
++
++
++/*
++ * ASoC limits register value to 16 bits and pcap uses 32 bit registers
++ * to work around this, we get 16 bits from low, mid or high positions.
++ * ASoC limits register number to 8 bits we use 0x1f for register
++ * number and 0xe0 for register offset. -WM
++ */
++static int pcap2_codec_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ unsigned int tmp;
++
++ ezx_pcap_read((reg & 0x1f), &tmp);
++
++ if (reg & SL) {
++ tmp &= 0xffff0000;
++ tmp |= (value & 0xffff);
++ }
++ else if (reg & SM) {
++ tmp &= 0xff0000ff;
++ tmp |= ((value << 8) & 0x00ffff00);
++ }
++ else if (reg & SH) {
++ tmp &= 0xffff;
++ tmp |= ((value << 16) & 0xffff0000);
++ }
++ else
++ tmp = value;
++
++ dbg("codec_write reg=%x, rval=%08x, fval=%08x", reg, tmp, value);
++ ezx_pcap_write((reg & 0x1f), tmp);
++ return 0;
++
++}
++
++static unsigned int pcap2_codec_read(struct snd_soc_codec *codec, unsigned int reg)
++{
++ unsigned int tmp, ret;
++
++ ezx_pcap_read((reg & 0x1f), &tmp);
++ ret = tmp;
++ if (reg & SL)
++ ret = (tmp & 0xffff);
++ else if (reg & SM)
++ ret = ((tmp >> 8) & 0xffff);
++ else if (reg & SH)
++ ret = ((tmp >> 16) & 0xffff);
++
++ dbg("codec_read reg=%x, rval=%08x, fval=%08x", reg, tmp, ret);
++ return(ret);
++
++}
++
++static const char *pcap2_output_select[] = {"2ch", "2->1ch", "2->1ch -3db", "2->1ch -6db"};
++
++static const struct soc_enum pcap2_enum[] = {
++SOC_ENUM_SINGLE((PCAP2_OUTPUT_AMP|SH), 3, 4, pcap2_output_select),
++};
++
++static const struct snd_kcontrol_new pcap2_input_mixer_controls[] = {
++SOC_DAPM_SINGLE("A3 Switch", (PCAP2_INPUT_AMP|SL), 6, 1, 0),
++SOC_DAPM_SINGLE("A5 Switch", (PCAP2_INPUT_AMP|SL), 8, 1, 0),
++};
++
++static const struct snd_kcontrol_new pcap2_output_mixer_controls[] = {
++SOC_DAPM_SINGLE("A1 Switch", (PCAP2_OUTPUT_AMP|SL), 0, 1, 0),
++SOC_DAPM_SINGLE("A2 Switch", (PCAP2_OUTPUT_AMP|SL), 1, 1, 0),
++SOC_DAPM_SINGLE("AR Switch", (PCAP2_OUTPUT_AMP|SL), 5, 1, 0),
++SOC_DAPM_SINGLE("AL Switch", (PCAP2_OUTPUT_AMP|SL), 6, 1, 0),
++};
++
++/* pcap2 codec non DAPM controls */
++static const struct snd_kcontrol_new pcap2_codec_snd_controls[] = {
++SOC_SINGLE("Output gain", (PCAP2_OUTPUT_AMP|SM), 5, 15, 0),
++SOC_SINGLE("Input gain", (PCAP2_INPUT_AMP|SL), 0, 31, 0),
++};
++
++static const struct snd_kcontrol_new pcap2_codec_dm_mux_control[] = {
++ SOC_DAPM_ENUM("Output Mode", pcap2_enum[0]),
++};
++
++/* add non dapm controls */
++static int pcap2_codec_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(pcap2_codec_snd_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&pcap2_codec_snd_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* pcap2 codec DAPM controls */
++static const struct snd_soc_dapm_widget pcap2_codec_dapm_widgets[] = {
++ SND_SOC_DAPM_DAC("ST_DAC", "ST_DAC playback", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_DAC("CDC_DAC", "CDC_DAC playback", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_ADC("CDC_ADC", "CDC_DAC capture", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_PGA("PGA_ST", (PCAP2_OUTPUT_AMP|SL), 9, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_CDC", (PCAP2_OUTPUT_AMP|SL), 8, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_R", (PCAP2_OUTPUT_AMP|SL), 11, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_L", (PCAP2_OUTPUT_AMP|SL), 12, 0, NULL, 0),
++ SND_SOC_DAPM_MUX("Downmixer", SND_SOC_NOPM, 0, 0, pcap2_codec_dm_mux_control),
++ SND_SOC_DAPM_PGA("PGA_A1CTRL", (PCAP2_OUTPUT_AMP|SH), 1, 1, NULL, 0),
++ SND_SOC_DAPM_MIXER("Output Mixer", SND_SOC_NOPM, 0, 0, &pcap2_output_mixer_controls[0], ARRAY_SIZE(pcap2_output_mixer_controls)),
++ SND_SOC_DAPM_OUTPUT("A1"), /* Earpiece */
++ SND_SOC_DAPM_OUTPUT("A2"), /* LoudSpeaker */
++ SND_SOC_DAPM_OUTPUT("AR"), /* headset right */
++ SND_SOC_DAPM_OUTPUT("AL"), /* headset left */
++
++ SND_SOC_DAPM_MICBIAS("BIAS1", (PCAP2_INPUT_AMP|SL), 10, 0),
++ SND_SOC_DAPM_MICBIAS("BIAS2", (PCAP2_INPUT_AMP|SL), 11, 0),
++ SND_SOC_DAPM_MIXER("Input Mixer", SND_SOC_NOPM, 0, 0, &pcap2_input_mixer_controls[0], ARRAY_SIZE(pcap2_input_mixer_controls)),
++ SND_SOC_DAPM_INPUT("A3"), /* Headset Mic */
++ SND_SOC_DAPM_INPUT("A5"), /* Builtin Mic */
++};
++
++static const char *audio_map[][3] = {
++ { "A1", NULL, "Output Mixer" },
++ { "A2", NULL, "Output Mixer" },
++ { "AR", NULL, "Output Mixer" },
++ { "AL", NULL, "Output Mixer" },
++
++ { "Output Mixer", "A1 Switch", "PGA_A1CTRL" },
++ { "Output Mixer", "A2 Switch", "Downmixer" },
++ { "Output Mixer", "AR Switch", "PGA_R" },
++ { "Output Mixer", "AL Switch", "PGA_L" },
++
++ { "PGA_A1CTRL", NULL, "Downmixer" },
++
++ { "Downmixer", "2->1ch", "PGA_L" },
++ { "Downmixer", "2->1ch", "PGA_R" },
++ { "Downmixer", "2->1ch -3db", "PGA_L" },
++ { "Downmixer", "2->1ch -3db", "PGA_R" },
++ { "Downmixer", "2->1ch -6db", "PGA_L" },
++ { "Downmixer", "2->1ch -6db", "PGA_R" },
++ { "Downmixer", "2ch", "PGA_R" },
++
++ { "PGA_R", NULL, "PGA_ST" },
++ { "PGA_L", NULL, "PGA_ST" },
++ { "PGA_R", NULL, "PGA_CDC" },
++
++ { "PGA_ST", NULL, "ST_DAC" },
++ { "PGA_CDC", NULL, "CDC_DAC" },
++
++ /* input path */
++ { "BIAS1", NULL, "A3" },
++ { "BIAS2", NULL, "A5" },
++
++ { "Input Mixer", "A3 Switch", "BIAS1" },
++ { "Input Mixer", "A5 Switch", "BIAS2" },
++
++ { "PGA_R", NULL, "Input Mixer" },
++
++ { "PGA_CDC", NULL, "PGA_R" },
++ { "CDC_ADC", NULL, "PGA_CDC" },
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int pcap2_codec_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(pcap2_codec_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &pcap2_codec_dapm_widgets[i]);
++ }
++
++ /* set up audio path interconnects */
++ for(i = 0; audio_map[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, audio_map[i][0],
++ audio_map[i][1], audio_map[i][2]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++static int pcap2_codec_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ unsigned int input = pcap2_codec_read(codec, PCAP2_INPUT_AMP);
++
++ input &= ~PCAP2_INPUT_AMP_LOWPWR;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0:
++ case SNDRV_CTL_POWER_D1:
++ case SNDRV_CTL_POWER_D2:
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ dbg("dapm: ON\n");
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ input |= PCAP2_INPUT_AMP_LOWPWR;
++ dbg("dapm: OFF\n");
++ break;
++ }
++ codec->dapm_state = event;
++ pcap2_codec_write(codec, PCAP2_INPUT_AMP, input);
++ return 0;
++}
++
++static int pcap2_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++
++ tmp &= ~PCAP2_ST_DAC_RATE_MASK;
++ switch(params_rate(params)) {
++ case 8000:
++ break;
++ case 11025:
++ tmp |= PCAP2_ST_DAC_RATE_11025;
++ break;
++ case 12000:
++ tmp |= PCAP2_ST_DAC_RATE_12000;
++ break;
++ case 16000:
++ tmp |= PCAP2_ST_DAC_RATE_16000;
++ break;
++ case 22050:
++ tmp |= PCAP2_ST_DAC_RATE_22050;
++ break;
++ case 24000:
++ tmp |= PCAP2_ST_DAC_RATE_24000;
++ break;
++ case 32000:
++ tmp |= PCAP2_ST_DAC_RATE_32000;
++ break;
++ case 44100:
++ tmp |= PCAP2_ST_DAC_RATE_44100;
++ break;
++ case 48000:
++ tmp |= PCAP2_ST_DAC_RATE_48000;
++ break;
++ default:
++ return -EINVAL;
++ }
++ tmp |= PCAP2_ST_DAC_RESET_DF;
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++
++ tmp &= ~PCAP2_CODEC_RATE_MASK;
++ switch(params_rate(params)) {
++ case 8000:
++ break;
++ case 16000:
++ tmp |= PCAP2_CODEC_RATE_16000;
++ break;
++ default:
++ return -EINVAL;
++ }
++ tmp |= PCAP2_CODEC_RESET_DF;
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++
++ return 0;
++}
++
++static int pcap2_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ struct snd_soc_dapm_widget *w;
++ unsigned int tmp;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++ tmp &= ~(PCAP2_ST_DAC_EN | PCAP2_ST_DAC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 0);
++ else
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 0);
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++ if ((!strcmp(w->name, "CDC_DAC") || !strcmp(w->name, "CDC_ADC")) && w->connected)
++ goto in_use;
++ }
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++ tmp &= ~(PCAP2_CODEC_EN | PCAP2_CODEC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++in_use:
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int pcap2_set_dai_sysclk(struct snd_soc_codec_dai *codec_dai,
++ int clk_id, unsigned int freq, int dir)
++{
++ struct snd_soc_codec *codec = codec_dai->codec;
++
++ unsigned int tmp;
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* ST_DAC */
++
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++
++ tmp &= ~PCAP2_ST_DAC_CLKSEL_MASK;
++ switch (clk_id) {
++ case PCAP2_CLK_AP:
++ tmp |= PCAP2_ST_DAC_CLKSEL_AP;
++ break;
++ case PCAP2_CLK_BP:
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ tmp &= ~PCAP2_ST_DAC_CLK_MASK;
++ switch (freq) {
++ case 13000000:
++ break;
++/* case 15M36:
++ tmp |= PCAP2_ST_DAC_CLK_15M36;
++ break;
++ case 16M8:
++ tmp |= PCAP2_ST_DAC_CLK_16M8;
++ break;
++ case 19M44:
++ tmp |= PCAP2_ST_DAC_CLK_19M44;
++ break;
++*/ case 26000000:
++ tmp |= PCAP2_ST_DAC_CLK_26M;
++ break;
++/* case EXT_MCLK:
++ tmp |= PCAP2_ST_DAC_CLK_MCLK;
++ break;
++ case FSYNC:
++ tmp |= PCAP2_ST_DAC_CLK_FSYNC;
++ break;
++ case BITCLK:
++ tmp |= PCAP2_ST_DAC_CLK_BITCLK;
++ break;
++*/ default:
++ return -EINVAL;
++ }
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ /* MONO_DAC */
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++
++ tmp &= ~PCAP2_CODEC_CLKSEL_MASK;
++ switch (clk_id) {
++ case PCAP2_CLK_AP:
++ tmp |= PCAP2_CODEC_CLKSEL_AP;
++ break;
++ case PCAP2_CLK_BP:
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ tmp &= ~PCAP2_CODEC_CLK_MASK;
++ switch (freq) {
++ case 13000000:
++ break;
++/* case 15M36:
++ tmp |= PCAP2_CODEC_CLK_15M36;
++ break;
++ case 16M8:
++ tmp |= PCAP2_CODEC_CLK_16M8;
++ break;
++ case 19M44:
++ tmp |= PCAP2_CODEC_CLK_19M44;
++ break;
++*/ case 26000000:
++ tmp |= PCAP2_CODEC_CLK_26M;
++ break;
++ default:
++ return -EINVAL;
++ }
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ return 0;
++}
++
++static int pcap2_set_dai_fmt(struct snd_soc_codec_dai *codec_dai,
++ unsigned int fmt)
++{
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp = 0;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* ST_DAC */
++
++ /* disable CODEC */
++ pcap2_codec_write(codec, PCAP2_CODEC, 0);
++
++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ tmp |= 0x1;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ tmp |= 0x4000;
++ break;
++/* case SND_SOC_NET:
++ tmp |= 0x2000;
++ break;
++*/ case SND_SOC_DAIFMT_DSP_B:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ break;
++ case SND_SOC_DAIFMT_NB_NF:
++ tmp |= 0x60000;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ tmp |= 0x40000;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ tmp |= 0x20000;
++ break;
++ }
++ /* set dai to AP */
++ tmp |= 0x1000;
++
++ /* set BCLK */
++ tmp |= 0x18000;
++
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ /* MONO_DAC */
++
++ /* disable ST_DAC */
++ pcap2_codec_write(codec, PCAP2_ST_DAC, 0);
++
++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ tmp |= 0x2;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_B:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ break;
++ case SND_SOC_DAIFMT_NB_NF:
++ tmp |= 0x600;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ tmp |= 0x400;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ tmp |= 0x200;
++ break;
++ }
++ if (codec_dai->id == PCAP2_MONO_DAI)
++ /* set dai to AP */
++ tmp |= 0x8000;
++
++ tmp |= 0x5; /* IHF / OHF */
++
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ return 0;
++}
++
++static int pcap2_prepare(struct snd_pcm_substream *substream)
++{
++
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp;
++ /* FIXME enable clock only if codec is master */
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 1);
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 0);
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++ tmp |= (PCAP2_ST_DAC_EN | PCAP2_ST_DAC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 1);
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++ tmp |= (PCAP2_CODEC_EN | PCAP2_CODEC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ snd_soc_dapm_sync_endpoints(codec);
++ mdelay(1);
++#ifdef PCAP2_DEBUG
++ dump_registers();
++#endif
++ return 0;
++}
++
++/*
++ * Define codec DAI.
++ */
++struct snd_soc_codec_dai pcap2_dai[] = {
++{
++ .name = "PCAP2 MONO",
++ .id = 0,
++ .playback = {
++ .stream_name = "CDC_DAC playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = {
++ .stream_name = "CDC_DAC capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++{
++ .name = "PCAP2 STEREO",
++ .id = 1,
++ .playback = {
++ .stream_name = "ST_DAC playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
++ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = { /* FIXME: PCAP support this?? */
++ .stream_name = "ST_DAC capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
++ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++{
++ .name = "PCAP2 BP",
++ .id = 2,
++ .playback = {
++ .stream_name = "BP playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++};
++EXPORT_SYMBOL_GPL(pcap2_dai);
++
++static int pcap2_codec_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ dbg("pcap2_codec_suspend");
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int pcap2_codec_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ dbg("pcap2_codec_resume");
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ pcap2_codec_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the PCAP2 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int pcap2_codec_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ dbg("pcap2_codec_init");
++ codec->name = "PCAP2 Audio";
++ codec->owner = THIS_MODULE;
++ codec->read = pcap2_codec_read;
++ codec->write = pcap2_codec_write;
++ codec->dapm_event = pcap2_codec_dapm_event;
++ codec->dai = pcap2_dai;
++ codec->num_dai = ARRAY_SIZE(pcap2_dai);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ return ret;
++ }
++ /* power on device */
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ /* set the update bits */
++
++ pcap2_codec_add_controls(codec);
++ pcap2_codec_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static int pcap2_codec_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct pcap2_codec_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++ info("PCAP2 Audio Codec %s", PCAP2_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ pcap2_codec_socdev = socdev;
++
++ ret = pcap2_codec_init(socdev);
++ return ret;
++}
++
++/* power down chip and remove */
++static int pcap2_codec_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ if (codec->control_data)
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++
++ kfree(codec);
++
++ return 0;
++}
++
++/* codec device ops */
++struct snd_soc_codec_device soc_codec_dev_pcap2 = {
++ .probe = pcap2_codec_probe,
++ .remove = pcap2_codec_remove,
++ .suspend = pcap2_codec_suspend,
++ .resume = pcap2_codec_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_pcap2);
++
++MODULE_DESCRIPTION("ASoC PCAP2 codec");
++MODULE_AUTHOR("Daniel Ribeiro");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/sound/soc/codecs/pcap2.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/sound/soc/codecs/pcap2.h
+@@ -0,0 +1,81 @@
++/*
++ * 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.
++ */
++
++#ifndef _PCAP2_H
++#define _PCAP2_H
++
++/* 16 bit reads/writes on pcap registers (ugly workaround) */
++#define SL (1 << 5) /* lower 16 bits */
++#define SM (1 << 6) /* mid 16 bits */
++#define SH (1 << 7) /* higher 16 bits */
++
++/* PCAP2 register space */
++#define PCAP2_CODEC 0x0b
++#define PCAP2_OUTPUT_AMP 0x0c
++#define PCAP2_ST_DAC 0x0d
++#define PCAP2_INPUT_AMP 0x1a
++
++#define PCAP2_MONO_DAI 0
++#define PCAP2_STEREO_DAI 1
++#define PCAP2_BP_DAI 2
++
++#define PCAP2_CLK_BP 0
++#define PCAP2_CLK_AP 1
++
++#define PCAP2_CODEC_EN 0x2000
++#define PCAP2_CODEC_CLK_EN 0x1000
++#define PCAP2_CODEC_RESET_DF 0x800
++#define PCAP2_CODEC_RATE_MASK 0x4000
++#define PCAP2_CODEC_RATE_8000 0x0
++#define PCAP2_CODEC_RATE_16000 0x4000
++#define PCAP2_CODEC_CLKSEL_MASK 0x10000
++#define PCAP2_CODEC_CLKSEL_AP 0x10000
++#define PCAP2_CODEC_CLKSEL_BP 0x0
++#define PCAP2_CODEC_CLK_MASK 0x1c0
++#define PCAP2_CODEC_CLK_13M 0x0
++#define PCAP2_CODEC_CLK_15M36 0x40
++#define PCAP2_CODEC_CLK_16M8 0x80
++#define PCAP2_CODEC_CLK_19M44 0xc0
++#define PCAP2_CODEC_CLK_26M 0x100
++
++#define PCAP2_ST_DAC_EN 0x80
++#define PCAP2_ST_DAC_CLK_EN 0x20
++#define PCAP2_ST_DAC_RESET_DF 0x40
++#define PCAP2_ST_DAC_RATE_MASK 0xf00
++#define PCAP2_ST_DAC_RATE_8000 0x0
++#define PCAP2_ST_DAC_RATE_11025 0x100
++#define PCAP2_ST_DAC_RATE_12000 0x200
++#define PCAP2_ST_DAC_RATE_16000 0x300
++#define PCAP2_ST_DAC_RATE_22050 0x400
++#define PCAP2_ST_DAC_RATE_24000 0x500
++#define PCAP2_ST_DAC_RATE_32000 0x600
++#define PCAP2_ST_DAC_RATE_44100 0x700
++#define PCAP2_ST_DAC_RATE_48000 0x800
++#define PCAP2_ST_DAC_CLKSEL_MASK 0x80000
++#define PCAP2_ST_DAC_CLKSEL_AP 0x80000
++#define PCAP2_ST_DAC_CLKSEL_BP 0x0
++#define PCAP2_ST_DAC_CLK_MASK 0x1c
++#define PCAP2_ST_DAC_CLK_13M 0x0
++#define PCAP2_ST_DAC_CLK_15M36 0x4
++#define PCAP2_ST_DAC_CLK_16M8 0x8
++#define PCAP2_ST_DAC_CLK_19M44 0xc
++#define PCAP2_ST_DAC_CLK_26M 0x10
++#define PCAP2_ST_DAC_CLK_MCLK 0x14
++#define PCAP2_ST_DAC_CLK_FSYNC 0x18
++#define PCAP2_ST_DAC_CLK_BITCLK 0x1c
++
++#define PCAP2_INPUT_AMP_LOWPWR 0x80000
++#define PCAP2_INPUT_AMP_V2EN2 0x200000
++
++#define PCAP2_OUTPUT_AMP_PGAR_EN 0x800
++#define PCAP2_OUTPUT_AMP_PGAL_EN 0x1000
++#define PCAP2_OUTPUT_AMP_CDC_SW 0x100
++#define PCAP2_OUTPUT_AMP_ST_DAC_SW 0x200
++
++extern struct snd_soc_codec_dai pcap2_dai[];
++extern struct snd_soc_codec_device soc_codec_dev_pcap2;
++
++#endif
+Index: linux-2.6.24/sound/soc/pxa/Kconfig
+===================================================================
+--- linux-2.6.24.orig/sound/soc/pxa/Kconfig
++++ linux-2.6.24/sound/soc/pxa/Kconfig
+@@ -57,3 +57,12 @@
+ help
+ Say Y if you want to add support for SoC audio on Sharp
+ Zaurus SL-C6000x models (Tosa).
++
++config SND_PXA2XX_SOC_EZX
++ tristate "SoC Audio support for EZX"
++ depends on SND_PXA2XX_SOC && PXA_EZX
++ select SND_PXA2XX_SOC_SSP
++ select SND_SOC_PCAP2
++ help
++ Say Y if you want to add support for SoC audio on
++ Motorola EZX Phones (a780/e680).
+Index: linux-2.6.24/sound/soc/pxa/ezx.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/sound/soc/pxa/ezx.c
+@@ -0,0 +1,349 @@
++/*
++ * ezx.c - Machine specific code for EZX phones
++ *
++ * Copyright (C) 2007 Daniel Ribeiro <wyrm@openezx.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.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/mach-types.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/hardware.h>
++
++#include <asm/arch/ezx-pcap.h>
++
++#include "../codecs/pcap2.h"
++#include "pxa2xx-pcm.h"
++#include "pxa2xx-ssp.h"
++
++#define GPIO_HW_ATTENUATE_A780 96
++
++static struct snd_soc_codec *control_codec;
++
++static void ezx_ext_control(struct snd_soc_codec *codec)
++{
++ if (ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_A1)))
++ snd_soc_dapm_set_endpoint(codec, "Headset", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "Headset", 0);
++ if (ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_MB2)))
++ snd_soc_dapm_set_endpoint(codec, "External Mic", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "External Mic", 0);
++
++ snd_soc_dapm_sync_endpoints(codec);
++}
++
++static irqreturn_t jack_irq(int irq, void *data)
++{
++ ezx_ext_control(control_codec);
++ return IRQ_HANDLED;
++}
++
++
++/*
++ * Alsa operations
++ * Only implement the required operations for your platform.
++ * These operations are specific to the machine only.
++ */
++
++ /*
++ * Called by ALSA when a PCM substream is opened, private data can be allocated.
++ */
++static int ezx_machine_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* check the jack status at stream startup */
++ ezx_ext_control(codec);
++ return 0;
++}
++
++/*
++ * Called by ALSA when the hardware params are set by application. This
++ * function can also be called multiple times and can allocate buffers
++ * (using snd_pcm_lib_* ). It's non-atomic.
++ */
++static int ezx_machine_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret;
++
++ /* set codec DAI configuration */
++ if (codec_dai->id == PCAP2_STEREO_DAI)
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBM_CFM);
++ else
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if(ret < 0)
++ return ret;
++
++ /* Turn on clock output on CLK_PIO */
++ OSCC |= 0x8;
++
++ /* set clock source */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, PCAP2_CLK_AP,
++ 13000000, SND_SOC_CLOCK_IN);
++ if(ret < 0)
++ return ret;
++
++ /* set cpu DAI configuration */
++ ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if (ret < 0)
++ return ret;
++
++ ret = cpu_dai->dai_ops.set_tristate(cpu_dai, 0);
++ if (ret < 0)
++ return ret;
++
++ ret = cpu_dai->dai_ops.set_sysclk(cpu_dai,PXA2XX_SSP_CLK_EXT,
++ 0, SND_SOC_CLOCK_IN);
++ if (ret < 0)
++ return ret;
++
++ return 0;
++}
++
++/*
++ * Free's resources allocated by hw_params, can be called multiple times
++ */
++static int ezx_machine_hw_free(struct snd_pcm_substream *substream)
++{
++ OSCC &= ~0x8; /* turn off clock output on CLK_PIO */
++
++ return 0;
++}
++
++static int ezx_machine_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* override pxa2xx-ssp sample size for stereo/network mode */
++ SSCR0_P(cpu_dai->id+1) &= ~(SSCR0_DSS | SSCR0_EDSS);
++ SSCR0_P(cpu_dai->id+1) |= (SSCR0_EDSS | SSCR0_DataSize(16));
++ }
++ return 0;
++}
++
++/* machine Alsa PCM operations */
++static struct snd_soc_ops ezx_ops = {
++ .startup = ezx_machine_startup,
++ .prepare = ezx_machine_prepare,
++ .hw_free = ezx_machine_hw_free,
++ .hw_params = ezx_machine_hw_params,
++};
++
++static int bp_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++// struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret = 0;
++ /* set codec DAI configuration */
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if(ret < 0)
++ return ret;
++
++ /* set clock source */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, PCAP2_CLK_BP,
++ 13000000, SND_SOC_CLOCK_IN);
++
++ return ret;
++}
++
++
++
++/* machine dapm widgets */
++static const struct snd_soc_dapm_widget ezx_dapm_widgets[] = {
++ SND_SOC_DAPM_HP("Headset", NULL),
++ SND_SOC_DAPM_SPK("Earpiece", NULL),
++ SND_SOC_DAPM_SPK("Loudspeaker", NULL),
++ SND_SOC_DAPM_MIC("Built-in Mic", NULL),
++ SND_SOC_DAPM_MIC("External Mic", NULL),
++};
++
++/* machine audio map (connections to the codec pins) */
++static const char *audio_map[][3] = {
++ { "Headset", NULL, "AR" },
++ { "Headset", NULL, "AL" },
++ { "Earpiece", NULL, "A1" },
++ { "Loudspeaker", NULL, "A2" },
++
++ { "Built-in Mic", NULL, "A5" },
++ { "External Mic", NULL, "A3" },
++
++ {NULL, NULL, NULL},
++};
++
++/*
++ * Initialise the machine audio subsystem.
++ */
++static int ezx_machine_init(struct snd_soc_codec *codec)
++{
++ int i;
++ /* mark unused codec pins as NC */
++// snd_soc_dapm_set_endpoint(codec, "FIXME", 0);
++ control_codec = codec;
++
++ /* Add ezx specific controls */
++// for (i = 0; i < ARRAY_SIZE(ezx_controls); i++) {
++// if ((err = snd_ctl_add(codec->card, snd_soc_cnew(&ezx_controls[i], codec, NULL))) < 0)
++// return err;
++// }
++
++ /* Add ezx specific widgets */
++ for(i = 0; i < ARRAY_SIZE(ezx_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &ezx_dapm_widgets[i]);
++ }
++ /* Set up ezx specific audio path interconnects */
++ for(i = 0; audio_map[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1], audio_map[i][2]);
++ }
++
++ /* synchronise subsystem */
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static struct snd_soc_cpu_dai bp_dai =
++{
++ .name = "Baseband",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++// .startup = bp_startup,
++// .shutdown = bp_shutdown,
++ .hw_params = bp_hw_params,
++// .hw_free = bp_hw_free,
++ },
++};
++
++/* template digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link ezx_dai[] = {
++{
++ .name = "PCAP2 STEREO",
++ .stream_name = "stereo playback",
++ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP3],
++ .codec_dai = &pcap2_dai[PCAP2_STEREO_DAI],
++ .init = ezx_machine_init,
++ .ops = &ezx_ops,
++},
++{
++ .name = "PCAP2 MONO",
++ .stream_name = "mono playback",
++ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP3],
++ .codec_dai = &pcap2_dai[PCAP2_MONO_DAI],
++// .init = ezx_machine_init, /* the stereo call already registered our controls */
++ .ops = &ezx_ops,
++},
++{
++ .name = "PCAP2 BP",
++ .stream_name = "BP Audio",
++ .cpu_dai = &bp_dai,
++ .codec_dai = &pcap2_dai[PCAP2_BP_DAI],
++},
++};
++
++/* template audio machine driver */
++static struct snd_soc_machine snd_soc_machine_ezx = {
++ .name = "Motorola EZX",
++// .probe
++// .remove
++// .suspend_pre
++// .resume_post
++ .dai_link = ezx_dai,
++ .num_links = ARRAY_SIZE(ezx_dai),
++};
++
++/* template audio subsystem */
++static struct snd_soc_device ezx_snd_devdata = {
++ .machine = &snd_soc_machine_ezx,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_pcap2,
++};
++
++static struct platform_device *ezx_snd_device;
++
++static int __init ezx_init(void)
++{
++ int ret;
++ ezx_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!ezx_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(ezx_snd_device, &ezx_snd_devdata);
++ ezx_snd_devdata.dev = &ezx_snd_device->dev;
++ ret = platform_device_add(ezx_snd_device);
++
++ if (ret)
++ platform_device_put(ezx_snd_device);
++ /* configure gpio for ssp3 */
++ pxa_gpio_mode(GPIO83_SFRM3_MD); /* SFRM */
++ pxa_gpio_mode(GPIO81_STXD3_MD); /* TXD */
++ pxa_gpio_mode(GPIO52_SCLK3_MD); /* SCLK */
++ pxa_gpio_mode(GPIO89_SRXD3_MD); /* RXD */
++
++ /* configure gpio for ssp2 */
++ pxa_gpio_mode(37 | GPIO_IN); /* SFRM */
++ pxa_gpio_mode(38 | GPIO_IN); /* TXD */
++ pxa_gpio_mode(22 | GPIO_IN); /* SCLK */
++ pxa_gpio_mode(88 | GPIO_IN); /* RXD */
++
++ pxa_gpio_mode(GPIO_HW_ATTENUATE_A780 | GPIO_OUT);
++ pxa_gpio_set_value(GPIO_HW_ATTENUATE_A780, 1);
++
++ /* request jack irq */
++ request_irq(EZX_IRQ_HEADJACK, &jack_irq, IRQF_DISABLED, "headphone jack", NULL);
++ request_irq(EZX_IRQ_MIC, &jack_irq, IRQF_DISABLED, "mic jack", NULL);
++
++ return ret;
++}
++
++static void __exit ezx_exit(void)
++{
++ free_irq(EZX_IRQ_HEADJACK, NULL);
++ free_irq(EZX_IRQ_MIC, NULL);
++ platform_device_unregister(ezx_snd_device);
++}
++
++module_init(ezx_init);
++module_exit(ezx_exit);
++
+Index: linux-2.6.24/sound/soc/codecs/Makefile
+===================================================================
+--- linux-2.6.24.orig/sound/soc/codecs/Makefile
++++ linux-2.6.24/sound/soc/codecs/Makefile
+@@ -4,6 +4,7 @@
+ snd-soc-wm8753-objs := wm8753.o
+ snd-soc-wm9712-objs := wm9712.o
+ snd-soc-cs4270-objs := cs4270.o
++snd-soc-pcap2-objs := pcap2.o
+
+ obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
+ obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
+@@ -11,3 +12,4 @@
+ obj-$(CONFIG_SND_SOC_WM8753) += snd-soc-wm8753.o
+ obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
+ obj-$(CONFIG_SND_SOC_CS4270) += snd-soc-cs4270.o
++obj-$(CONFIG_SND_SOC_PCAP2) += snd-soc-pcap2.o
+Index: linux-2.6.24/sound/soc/codecs/Kconfig
+===================================================================
+--- linux-2.6.24.orig/sound/soc/codecs/Kconfig
++++ linux-2.6.24/sound/soc/codecs/Kconfig
+@@ -37,3 +37,6 @@
+ bool
+ depends on SND_SOC_CS4270
+
++config SND_SOC_PCAP2
++ tristate
++ depends on SND_SOC && EZX_PCAP
+Index: linux-2.6.24/sound/soc/pxa/Makefile
+===================================================================
+--- linux-2.6.24.orig/sound/soc/pxa/Makefile
++++ linux-2.6.24/sound/soc/pxa/Makefile
+@@ -14,9 +14,10 @@
+ snd-soc-poodle-objs := poodle.o
+ snd-soc-tosa-objs := tosa.o
+ snd-soc-spitz-objs := spitz.o
++snd-soc-ezx-objs := ezx.o
+
+ obj-$(CONFIG_SND_PXA2XX_SOC_CORGI) += snd-soc-corgi.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_POODLE) += snd-soc-poodle.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_TOSA) += snd-soc-tosa.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_SPITZ) += snd-soc-spitz.o
+-
++obj-$(CONFIG_SND_PXA2XX_SOC_EZX) += snd-soc-ezx.o
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-backlight.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-backlight.patch
new file mode 100644
index 0000000000..a2a707014d
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-backlight.patch
@@ -0,0 +1,203 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: linux-2.6.24/drivers/video/backlight/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/video/backlight/Kconfig
++++ linux-2.6.24/drivers/video/backlight/Kconfig
+@@ -90,3 +90,12 @@
+ help
+ If you have a Intel LE80578 (Carillo Ranch) say Y to enable the
+ backlight driver.
++
++config BACKLIGHT_EZX
++ tristate "Motorola EXZ Backlight Driver (A780/E680/E680i)"
++ depends on BACKLIGHT_CLASS_DEVICE && PXA_EZX
++ default y
++ help
++ If you have a Motorola A780 or E680(i), say y to enable the
++ backlight driver.
++
+Index: linux-2.6.24/drivers/video/backlight/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/video/backlight/Makefile
++++ linux-2.6.24/drivers/video/backlight/Makefile
+@@ -9,3 +9,4 @@
+ obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
+ obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o
+ obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o
++obj-$(CONFIG_BACKLIGHT_EZX) += ezx_bl.o
+Index: linux-2.6.24/drivers/video/backlight/ezx_bl.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/video/backlight/ezx_bl.c
+@@ -0,0 +1,142 @@
++/*
++ * Backlight Driver for Motorola A780 and E680(i) GSM Phones.
++ *
++ * Copyright 2006 Vanille Media
++ *
++ * Author: Michael Lauer <mickey@Vanille.de>
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++#include <linux/backlight.h>
++
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++
++#define EZX_MIN_INTENSITY 0
++#define EZX_MAX_INTENSITY 50
++#define EZX_DEFAULT_INTENSITY 30
++
++static struct backlight_device *ezx_backlight_device;
++static int last_intensity;
++static int suspended;
++
++static int ezxbl_send_intensity(struct backlight_device *bd)
++{
++ int intensity = bd->props.brightness;
++
++ if (suspended || bd->props.power != FB_BLANK_UNBLANK ||
++ bd->props.fb_blank != FB_BLANK_UNBLANK)
++ intensity = 0;
++
++ if ( !last_intensity && intensity ) {
++ PWM_CTRL0 = 2; /* pre-scaler */
++ PWM_PWDUTY0 = intensity; /* duty cycle */
++ PWM_PERVAL0 = 49; /* period */
++ pxa_gpio_mode(GPIO16_PWM0_MD); /* set GPIO16 as alternate function + output */
++ pxa_set_cken(CKEN_PWM0, 1); /* clock enable */
++ }
++ else if ( last_intensity && !intensity ) {
++ PWM_PWDUTY0 = 0;
++ GAFR0_U &= 0xFFFFFFFC; /* ??? */
++ pxa_set_cken(CKEN_PWM0, 0); /* clock disable */
++ pxa_gpio_mode(GPIO16_PWM0); /* set GPIO16 as input */
++ } else if ( last_intensity && intensity ) {
++ PWM_PWDUTY0 = intensity; /* duty cycle */
++ }
++ last_intensity = intensity;
++ return 0;
++}
++
++static int ezxbl_get_intensity(struct backlight_device *bd)
++{
++ return last_intensity;
++}
++
++static int ezxbl_set_intensity(struct backlight_device *bd)
++{
++ return ezxbl_send_intensity(ezx_backlight_device);
++}
++
++#ifdef CONFIG_PM
++static int ezxbl_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ suspended = 1;
++ ezxbl_set_intensity(ezx_backlight_device);
++ return 0;
++}
++
++static int ezxbl_resume(struct platform_device *pdev)
++{
++ suspended = 0;
++ ezxbl_set_intensity(ezx_backlight_device);
++ return 0;
++}
++#else
++#define ezxbl_suspend NULL
++#define ezxbl_resume NULL
++#endif
++
++static struct backlight_ops ezxbl_ops = {
++ .get_brightness = ezxbl_get_intensity,
++ .update_status = ezxbl_set_intensity,
++};
++
++static int __init ezxbl_probe(struct platform_device *pdev)
++{
++ ezx_backlight_device = backlight_device_register ("ezx-bl",
++ &pdev->dev, NULL, &ezxbl_ops);
++ if (IS_ERR (ezx_backlight_device))
++ return PTR_ERR (ezx_backlight_device);
++
++ platform_set_drvdata(pdev, ezx_backlight_device);
++
++ ezx_backlight_device->props.power = FB_BLANK_UNBLANK;
++ ezx_backlight_device->props.max_brightness = EZX_MAX_INTENSITY;
++ ezx_backlight_device->props.brightness = EZX_DEFAULT_INTENSITY;
++ ezxbl_set_intensity(ezx_backlight_device);
++ backlight_update_status(ezx_backlight_device);
++
++ return 0;
++}
++
++static int ezxbl_remove(struct platform_device *pdev)
++{
++ backlight_device_unregister(ezx_backlight_device);
++ return 0;
++}
++
++static struct platform_driver ezxbl_driver = {
++ .probe = ezxbl_probe,
++ .remove = ezxbl_remove,
++ .suspend = ezxbl_suspend,
++ .resume = ezxbl_resume,
++ .driver = {
++ .name = "ezx-bl",
++ },
++};
++
++static int __init ezxbl_init(void)
++{
++ return platform_driver_register(&ezxbl_driver);
++}
++
++static void __exit ezxbl_exit(void)
++{
++ platform_driver_unregister(&ezxbl_driver);
++}
++
++module_init(ezxbl_init);
++module_exit(ezxbl_exit);
++
++MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>");
++MODULE_DESCRIPTION("Backlight Driver for Motorola A780|E680(i)");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/ezx.c
++++ linux-2.6.24/arch/arm/mach-pxa/ezx.c
+@@ -66,6 +66,12 @@
+ #endif
+ EXPORT_SYMBOL_GPL(ezx_backlight_power);
+
++/* EZX LCD Backlight */
++static struct platform_device ezxbacklight_device = {
++ .name = "ezx-bl",
++ .id = -1,
++};
++
+ /* OHCI Controller */
+ static int ezx_ohci_init(struct device *dev)
+ {
+@@ -107,6 +113,7 @@
+
+ static struct platform_device *devices[] __initdata = {
+ &ezxbp_device,
++ &ezxbacklight_device,
+ };
+
+ /* PM */
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-bp.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-bp.patch
new file mode 100644
index 0000000000..e45cb4bd22
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-bp.patch
@@ -0,0 +1,351 @@
+This patch adds support for the handshake with the BP (baseband processor)
+of the Motorola EZX smartphones.
+
+Signed-off-by: Daniel Ribeiro <wyrm@openezx.org>
+
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/ezx.c
++++ linux-2.6.24/arch/arm/mach-pxa/ezx.c
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/ohci.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-bp.h>
+
+ #include "generic.h"
+
+@@ -86,8 +87,25 @@
+ .init = ezx_ohci_init,
+ };
+
++/* BP */
++static struct ezxbp_config ezxbp_data = {
++ .gpio_reset = GPIO_BB_RESET,
++ .gpio_wdi = GPIO_BB_WDI,
++ .gpio_wdi2 = GPIO_BB_WDI2,
++ .gpio_rdy = GPIO_BP_RDY,
++ .gpio_mcu_int_sw = GPIO_MCU_INT_SW,
++};
++
++static struct platform_device ezxbp_device = {
++ .name = "ezx-bp",
++ .dev = {
++ .platform_data = &ezxbp_data,
++ },
++ .id = -1,
++};
+
+ static struct platform_device *devices[] __initdata = {
++ &ezxbp_device,
+ };
+
+ static int __init ezx_init(void)
+Index: linux-2.6.24/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.24/arch/arm/mach-pxa/Kconfig
+@@ -133,6 +133,12 @@
+
+ endchoice
+
++config EZX_BP
++ bool "Baseband Processor control for EZX platform"
++ help
++ This enables control code for the BP (baseband processor) found in
++ Motorola's EZX smartphone platform.
++
+ endif
+
+ endmenu
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-bp.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-bp.c
+@@ -0,0 +1,261 @@
++/*
++ * BP handshake code for Motorola EZX phones
++ *
++ * Copyright (c) 2007 Daniel Ribeiro <wyrm@openezx.org>
++ *
++ * Based on Motorola's a780.c Copyright (c) 2003-2005 Motorola
++ *
++ * 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/kernel.h>
++#include <linux/interrupt.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <asm/mach/irq.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#include <asm/arch/ezx.h>
++#include <asm/arch/ezx-bp.h>
++
++/* BP Handshake */
++#define FIRST_STEP 2
++#define LAST_STEP 3
++#define BP_RDY_TIMEOUT 0x000c0000
++
++#if 1
++#define DEBUGP(x, args ...) printk(x, ##args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++extern void usb_send_readurb(void);
++
++static struct ezxbp_config *bp;
++
++/* check power down condition */
++static inline void check_power_off(void)
++{
++ if (pxa_gpio_get_value(bp->gpio_wdi2) == 0) {
++ DEBUGP("BP request poweroff!\n");
++ /*
++ * It is correct to power off here, the following line is
++ * commented out because e680 lowers WDI2 when BP is in
++ * flash mode, otherwise WDI2 is used to detect low
++ * battery. You can safely uncomment this line if you are
++ * using this kernel with BP in normal mode.
++ */
++#if 0 /* some versions of BP firmware doesnt honor this */
++ pm_power_off();
++#endif
++ }
++}
++
++static int step = FIRST_STEP;
++
++inline int bp_handshake_passed(void)
++{
++ return (step > LAST_STEP);
++}
++EXPORT_SYMBOL_GPL(bp_handshake_passed);
++
++static void handshake(void)
++{
++ /* step 1: check MCU_INT_SW or BP_RDY is low (now it is checked in apboot) */
++ DEBUGP("bp handshake entered!\n");
++ if (step == 1) {
++ int timeout = BP_RDY_TIMEOUT;
++
++ /* config MCU_INT_SW, BP_RDY as input */
++ pxa_gpio_mode(bp->gpio_mcu_int_sw | GPIO_IN);
++ pxa_gpio_mode(bp->gpio_rdy | GPIO_IN);
++
++ while (timeout--) {
++ if (pxa_gpio_get_value(bp->gpio_mcu_int_sw) == 0
++ || pxa_gpio_get_value(bp->gpio_rdy) == 0) {
++ step++;
++ break;
++ }
++
++ check_power_off();
++ }
++ DEBUGP("ezx-bp: handshake step 1\n");
++ }
++
++ /* step 2: wait BP_RDY is low */
++ if (step == 2) {
++ if (pxa_gpio_get_value(bp->gpio_rdy) == 0) {
++ /* config MCU_INT_SW as output */
++ pxa_gpio_mode(bp->gpio_mcu_int_sw | GPIO_OUT);
++ pxa_gpio_set_value(bp->gpio_mcu_int_sw, 0);
++
++ step++;
++ DEBUGP("ezx-bp: handshake step 2\n");
++ }
++ }
++
++ /* step 3: wait BP_RDY is high */
++ else if (step == 3) {
++ if (pxa_gpio_get_value(bp->gpio_rdy)) {
++ step++;
++ /* FIXME delay_bklight(); */
++ pxa_gpio_set_value(bp->gpio_mcu_int_sw, 1);
++ printk(KERN_NOTICE "ezx-bp: handshake passed\n");
++ }
++ }
++}
++
++irqreturn_t bp_wdi_handler(int irq, void *dev_id)
++{
++ DEBUGP("BP Lowered WDI line. This is not good :(\n");
++ /*
++ * this means that BP is not responsive.
++ * we could try to reset BP and then handshake again
++ * but i doubt its possible to bring it up again.
++ */
++ return IRQ_HANDLED;
++}
++
++static irqreturn_t bp_rdy_handler(int irq, void *dev_id)
++{
++// struct bp *bp = dev_id;
++ DEBUGP("BP rdy irq\n");
++ if (!bp_handshake_passed()) {
++ handshake();
++ if (bp_handshake_passed()) {
++ /* FIXME: (test) try to not disable irq_wdi2 and drain battery */
++ disable_irq(IRQ_GPIO(bp->gpio_wdi2));
++
++ /* set bp_rdy handle for usb ipc */
++ set_irq_type(IRQ_GPIO(bp->gpio_rdy), IRQT_FALLING);
++ }
++ }
++#ifdef CONFIG_TS0710_MUX_USB
++ else usb_send_readurb();
++#endif
++ return IRQ_HANDLED;
++}
++
++/* BP request for poweroff */
++static irqreturn_t bp_wdi2_handler(int irq, void *dev_id)
++{
++ DEBUGP("BP request poweroff!\n");
++ /* same case as check_power_off() */
++#ifndef CONFIG_PXA_EZX_E680
++ pm_power_off();
++#endif
++ return IRQ_HANDLED;
++}
++
++static int __init ezxbp_probe(struct platform_device *pdev)
++{
++ int ret;
++ bp = pdev->dev.platform_data;
++
++// bp = kzalloc(sizeof(*bp), GFP_KERNEL);
++// if (!bp)
++// return -ENOMEM;
++
++/* bp->irq_rdy = platform_get_irq(dev, 0);
++ if (bp->irq_rdy < 0) {
++ ret = bp->irq_rdy;
++ goto fail;
++ }
++
++ bp->irq_wdi2 = platform_get_irq(dev, 1);
++ if (bp->irq_wdi2 < 0) {
++ ret = bp->irq_wdi2;
++ goto fail;
++ }
++
++ bp->irq_wdi = platform_get_irq(dev, 2);
++ if (bp->irq_wdi < 0) {
++ ret = bp->irq_wdi;
++ goto fail;
++ }
++*/
++
++ set_irq_type(IRQ_GPIO(bp->gpio_wdi), IRQT_FALLING);
++ request_irq(IRQ_GPIO(bp->gpio_wdi), bp_wdi_handler, IRQF_DISABLED,
++ "bp wdi", bp);
++
++ set_irq_type(IRQ_GPIO(bp->gpio_rdy), IRQT_BOTHEDGE);
++ request_irq(IRQ_GPIO(bp->gpio_rdy), bp_rdy_handler, IRQF_DISABLED,
++ "bp rdy", bp);
++
++ set_irq_type(IRQ_GPIO(bp->gpio_wdi2), IRQT_FALLING);
++ request_irq(IRQ_GPIO(bp->gpio_wdi2), bp_wdi2_handler, IRQF_DISABLED,
++ "bp wdi2", bp);
++
++ /* turn on BP */
++ pxa_gpio_mode(bp->gpio_reset|GPIO_OUT);
++ pxa_gpio_set_value(bp->gpio_reset, 1);
++
++ check_power_off();
++ handshake();
++
++ return 0;
++fail:
++ kfree(bp);
++ return ret;
++}
++
++static int ezxbp_remove(struct platform_device *dev)
++{
++// struct bp *bp = platform_get_drvdata(dev);
++
++ free_irq(IRQ_GPIO(bp->gpio_wdi), bp);
++ free_irq(IRQ_GPIO(bp->gpio_wdi2), bp);
++ free_irq(IRQ_GPIO(bp->gpio_rdy), bp);
++ kfree(bp);
++
++ return 0;
++}
++
++static int ezxbp_suspend(struct platform_device *dev, pm_message_t state)
++{
++ DEBUGP("bp suspend!\n");
++/* pxa_gpio_set_value(bp->gpio_mcu_int_sw, 0); */
++ return 0;
++}
++
++static int ezxbp_resume(struct platform_device *dev)
++{
++ DEBUGP("bp resume!\n");
++/* pxa_gpio_set_value(bp->gpio_mcu_int_sw, 1); */
++ return 0;
++}
++static struct platform_driver ezxbp_driver = {
++ .probe = ezxbp_probe,
++ .remove = ezxbp_remove,
++#warning FIXME: missing suspend/resume support
++ .suspend = ezxbp_suspend,
++ .resume = ezxbp_resume,
++ .driver = {
++ .name = "ezx-bp",
++ .owner = THIS_MODULE,
++ },
++};
++
++int __init ezxbp_init(void)
++{
++ return platform_driver_register(&ezxbp_driver);
++}
++
++void ezxbp_fini(void)
++{
++ return platform_driver_unregister(&ezxbp_driver);
++}
++
++module_init(ezxbp_init);
++module_exit(ezxbp_fini);
++
++MODULE_DESCRIPTION("Motorola BP Control driver");
++MODULE_AUTHOR("Daniel Ribeiro <wyrm@openezx.org>");
++MODULE_LICENSE("GPL");
++
+Index: linux-2.6.24/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.24/arch/arm/mach-pxa/Makefile
+@@ -36,6 +36,7 @@
+ obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
+ obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
+ obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
++obj-$(CONFIG_EZX_BP) += ezx-bp.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.24/include/asm-arm/arch-pxa/ezx-bp.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/include/asm-arm/arch-pxa/ezx-bp.h
+@@ -0,0 +1,8 @@
++struct ezxbp_config {
++ /* gpios for handshake */
++ int gpio_reset;
++ int gpio_wdi;
++ int gpio_wdi2;
++ int gpio_rdy;
++ int gpio_mcu_int_sw;
++};
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-core.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-core.patch
new file mode 100644
index 0000000000..6221a88794
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-core.patch
@@ -0,0 +1,1042 @@
+This patch adds the core EZX support for the Motorola E680/A780/A1200/E6
+smartphones.
+
+Signed-off-by: Daniel Ribeiro <wyrm@openezx.org>
+Signed-off-by: Harald Welte <laforge@openezx.org>
+
+Index: linux-2.6.24/arch/arm/boot/compressed/head-xscale.S
+===================================================================
+--- linux-2.6.24.orig/arch/arm/boot/compressed/head-xscale.S
++++ linux-2.6.24/arch/arm/boot/compressed/head-xscale.S
+@@ -44,3 +44,6 @@
+ str r1, [r0, #0x18]
+ #endif
+
++#ifdef CONFIG_ARCH_EZX
++ mov r7, #MACH_TYPE_EZX
++#endif
+Index: linux-2.6.24/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.24/arch/arm/mach-pxa/Kconfig
+@@ -68,6 +68,10 @@
+ select PXA27x
+ select IWMMXT
+
++config PXA_EZX
++ bool "Motorola EZX Platform"
++ select PXA_SSP
++
+ endchoice
+
+ if PXA_SHARPSL
+@@ -102,6 +106,35 @@
+
+ endif
+
++if PXA_EZX
++
++choice
++ prompt "Select target EZX device"
++
++config PXA_EZX_E680
++ bool "Motorola E680 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_A780
++ bool "Motorola A780 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_E2
++ bool "Motorola E2 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_A1200
++ bool "Motorola A1200 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_E6
++ bool "Motorola E6 GSM Phone"
++ select PXA27x
++
++endchoice
++
++endif
++
+ endmenu
+
+ config MACH_POODLE
+@@ -180,4 +213,5 @@
+ tristate
+ help
+ Enable support for PXA2xx SSP ports
++
+ endif
+Index: linux-2.6.24/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.24/arch/arm/mach-pxa/Makefile
+@@ -30,6 +30,12 @@
+ endif
+
+ obj-$(CONFIG_MACH_ARMCORE) += cm-x270.o
++obj-$(CONFIG_PXA_EZX) += ezx.o
++obj-$(CONFIG_PXA_EZX_A780) += ezx-a780.o
++obj-$(CONFIG_PXA_EZX_E680) += ezx-e680.o
++obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
++obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
++obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
+
+ # Support for blinky lights
+ led-y := leds.o
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx.c
+@@ -0,0 +1,118 @@
++/*
++ * ezx.c - Common code for EZX platform.
++ *
++ * Copyright (c) 2005-2007 OpenEZX Team (www.openezx.org)
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++#include <linux/delay.h>
++
++#include <asm/arch/pxafb.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ohci.h>
++#include <asm/arch/ezx.h>
++
++#include "generic.h"
++
++/* EZX PXA Framebuffer */
++void ezx_lcd_power(int on, struct fb_var_screeninfo *var)
++{
++ if (on) {
++ msleep(1);
++ GPSR3 = 0x00100000;
++ msleep(10);
++ GPCR3 = 0x00100000;
++ GPDR3 |= 0x00100000;
++ } else {
++ GPSR3 = 0x00100000;
++ PGSR3 |= 0x00100000;
++ msleep(41);
++ LCCR0 &= ~LCCR0_LDM; /* disable lcd disable done interrupt */
++ LCCR0 |= LCCR0_DIS; /* normal disable lcd */
++ msleep(18);
++ }
++}
++EXPORT_SYMBOL_GPL(ezx_lcd_power);
++
++/* failsafe if we are not using the backlight platform driver */
++#ifndef CONFIG_BACKLIGHT_EZX
++void ezx_backlight_power(int on)
++{
++ if (on) {
++ pxa_gpio_mode(GPIO16_PWM0_MD);
++ pxa_set_cken(CKEN_PWM0, 1);
++ PWM_CTRL0 = 0;
++ PWM_PWDUTY0 = 0x3ff;
++ PWM_PERVAL0 = 0x3ff;
++ } else {
++ PWM_CTRL0 = 0;
++ PWM_PWDUTY0 = 0x0;
++ PWM_PERVAL0 = 0x3FF;
++ pxa_set_cken(CKEN_PWM0, 0);
++ }
++}
++#else
++void ezx_backlight_power(int on) {}
++#endif
++EXPORT_SYMBOL_GPL(ezx_backlight_power);
++
++/* OHCI Controller */
++static int ezx_ohci_init(struct device *dev)
++{
++ /* for A780 support (connected with Neptune) */
++ pxa_gpio_mode(GPIO30_USB_P3_2); /* GPIO30 - USB_P3_2/ICL_TXENB */
++ pxa_gpio_mode(GPIO31_USB_P3_6); /* GPIO31 - USB_P3_6/ICL_VPOUT */
++ pxa_gpio_mode(GPIO90_USB_P3_5); /* GPIO90 - USB_P3_5/ICL_VPIN */
++ pxa_gpio_mode(GPIO91_USB_P3_1); /* GPIO91 - USB_P3_1/ICL_XRXD */
++ pxa_gpio_mode(GPIO56_USB_P3_4); /* GPIO56 - USB_P3_4/ICL_VMOUT */
++ pxa_gpio_mode(GPIO113_USB_P3_3);/* GPIO113 - USB_P3_3/ICL_VMIN */
++ UP3OCR = 0x00000002;
++
++ UHCHR = UHCHR & ~(UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
++
++ return 0;
++}
++
++static struct pxaohci_platform_data ezx_ohci_platform_data = {
++ .port_mode = PMM_NPS_MODE,
++ .init = ezx_ohci_init,
++};
++
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static int __init ezx_init(void)
++{
++ CKEN = (1 << CKEN_OSTIMER) | (1 << CKEN_MEMC);
++
++ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
++ pxa_gpio_mode(GPIO_ICL_FFTXD_MD);
++ pxa_gpio_mode(GPIO_ICL_FFCTS_MD);
++ pxa_gpio_mode(GPIO_ICL_FFRTS_MD);
++
++ pxa_gpio_mode(GPIO42_BTRXD_MD);
++ pxa_gpio_mode(GPIO43_BTTXD_MD);
++ pxa_gpio_mode(GPIO44_BTCTS_MD);
++ pxa_gpio_mode(GPIO45_BTRTS_MD);
++
++ /* Standard UART */
++ pxa_gpio_mode(GPIO46_STRXD_MD);
++ pxa_gpio_mode(GPIO47_STTXD_MD);
++
++ pxa_set_ohci_info(&ezx_ohci_platform_data);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++
++ return 0;
++}
++
++subsys_initcall(ezx_init);
+Index: linux-2.6.24/include/asm-arm/arch-pxa/ezx.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/include/asm-arm/arch-pxa/ezx.h
+@@ -0,0 +1,225 @@
++/*
++ * linux/include/asm-arm/arch-pxa/ezx.h
++ *
++ * Specific macro defines for Motorola Ezx Development Platform
++ *
++ * Author: Zhuang Xiaofan
++ * Created: Nov 25, 2003
++ * Copyright: Motorola 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.
++ */
++
++/* support E680 p3 and ealier PCB */
++/*#define E680_P3_AND_EARLY*/
++
++#define GPIO_is_high(x) (GPLR(x) & GPIO_bit(x))
++#define set_GPIO(x) (GPSR(x) = GPIO_bit(x))
++#define clr_GPIO(x) (GPCR(x) = GPIO_bit(x))
++
++/*
++ * Flags in memory for sleep use
++ */
++#define FLAG_ADDR PHYS_OFFSET
++#define RESUME_ADDR (PHYS_OFFSET + 4)
++#define BPSIG_ADDR (PHYS_OFFSET + 8)
++
++#define USER_OFF_FLAG 0x5a5a5a5a
++#define SLEEP_FLAG 0x6b6b6b6b
++#define OFF_FLAG 0x7c7c7c7c
++#define REFLASH_FLAG 0x0C1D2E3F
++#define PASS_THRU_FLAG 0x12345678
++
++#define WDI_FLAG 0xbb00dead
++#define NO_FLAG 0xaa00dead
++
++/*
++ * GPIO control pin, have to change when hardware lock down
++ */
++
++#ifdef E680_P3_AND_EARLY
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 57 /* BB_RESET */
++#define GPIO_MCU_INT_SW 115 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 23 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
++#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#elif defined(A780_P1_AND_EARLY)
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 82 /* BB_RESET */
++#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
++#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#else
++
++/* shakehand with BP's PIN */
++#define GPIO_BP_RDY 0 /* BP_RDY */
++#define GPIO_BB_WDI 13 /* BB_WDI */
++#define GPIO_BB_WDI2 3 /* BB_WDI2 */
++#define GPIO_BB_RESET 82 /* BB_RESET */
++#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
++#define GPIO_TC_MM_EN 99 /* TC_MM_EN */
++
++/* control PCAP direct PIN */
++#define GPIO_WDI_AP 4 /* WDI_AP */
++#define GPIO_SYS_RESTART 55 /* restart PCAP power */
++/*#define GPIO_AP_STANDBY 28 */ /* make pcap enter standby mode */
++
++/* communicate with PCAP's PIN */
++#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
++#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
++#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
++#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
++#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
++
++/* blue tooth control PIN */
++#define GPIO_BT_WAKEUP 28 /* AP wake up bluetooth module */
++#define GPIO_BT_HOSTWAKE 14 /* AP wake up bluetooth module */
++#define GPIO_BT_RESET 48 /* AP reset bluetooth module */
++
++/* control LCD high - OFF low -- ON */
++#define GPIO_LCD_OFF 116 /* control LCD */
++
++/* FFUART PIN */
++#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
++
++#endif
++/*
++ * ezx platform, wake up source edge detect bit
++ */
++#define PEDR_INT_SEC 1
++
++#define GPIO_FLIP_PIN 12
++/*E680 screen lock button*/
++
++#define GPIO_LOCK_SCREEN_PIN GPIO_FLIP_PIN
++
++/* MMC interface */
++#define GPIO_MMC_DETECT 11
++#define GPIO_MMC_CLK 32
++#define GPIO_MMC_DATA0 92
++#define GPIO_MMC_WP 107
++#define GPIO_MMC_DATA1 109
++#define GPIO_MMC_DATA2 110
++#define GPIO_MMC_DATA3 111
++#define GPIO_MMC_CMD 112
++
++/* interface function */
++#define GPIO_MMC_CLK_MD (GPIO_MMC_CLK | GPIO_ALT_FN_2_OUT)
++#define GPIO_MMC_DATA0_MD (GPIO_MMC_DATA0 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA1_MD (GPIO_MMC_DATA1 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA2_MD (GPIO_MMC_DATA2 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++#define GPIO_MMC_DATA3_MD (GPIO_MMC_DATA3 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++
++#define GPIO_MMC_CMD_MD (GPIO_MMC_CMD | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
++
++/* EMU GPIO 119 ---MUX2 120 --- MUX1 */
++#define GPIO_EMU_MUX1 120
++#define GPIO_EMU_MUX2 119
++#define GPIO_SNP_INT_CTL 86
++#define GPIO_SNP_INT_IN 87
++
++
++/* audio related pins */
++#define AP_13MHZ_OUTPUT_PIN 9
++
++#ifdef CONFIG_ARCH_EZX_E680
++#define GPIO_VA_SEL_BUL 79
++#define GPIO_FLT_SEL_BUL 80 /* out filter select pin */
++#define GPIO_MIDI_RESET 78 /* GPIO used by MIDI chipset */
++#define GPIO_MIDI_CS 33
++#define GPIO_MIDI_IRQ 15
++#define GPIO_MIDI_NPWE 49
++#define GPIO_MIDI_RDY 18
++#endif
++
++#ifdef CONFIG_ARCH_EZX_A780
++#define GPIO_HW_ATTENUATE_A780 96 /* hw noise attenuation be used or bypassed, for receiver or louderspeaker mode */
++#endif
++
++
++/* bp status pin */
++#define GPIO_BP_STATE 41
++
++/* define usb related pin */
++#define GPIO34_TXENB 34
++#define GPIO35_XRXD 35
++#define GPIO36_VMOUT 36
++#define GPIO39_VPOUT 39
++#define GPIO40_VPIN 40
++#define GPIO53_VMIN 53
++
++/* USB client 6 pin defination */
++#define GPIO34_TXENB_MD (GPIO34_TXENB | GPIO_ALT_FN_1_OUT)
++#define GPIO35_XRXD_MD (GPIO35_XRXD | GPIO_ALT_FN_2_IN)
++#define GPIO36_VMOUT_MD (GPIO36_VMOUT | GPIO_ALT_FN_1_OUT)
++#define GPIO39_VPOUT_MD (GPIO39_VPOUT | GPIO_ALT_FN_1_OUT)
++#define GPIO40_VPIN_MD (GPIO40_VPIN | GPIO_ALT_FN_3_IN)
++#define GPIO53_VMIN_MD (GPIO53_VMIN | GPIO_ALT_FN_2_IN)
++
++#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++
+Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h
++++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -859,6 +859,8 @@
+ #define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
+ #define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
+
++#define UP3OCR __REG(0x40600024) /* USB Port 3 Output Control register */
++
+ #define UDCCSN(x) __REG2(0x40600100, (x) << 2)
+ #define UDCCSR0 __REG(0x40600100) /* UDC Control/Status register - Endpoint 0 */
+ #define UDCCSR0_SA (1 << 7) /* Setup Active */
+@@ -1262,6 +1264,7 @@
+ #define GPIO33_nCS_5 33 /* chip select 5 */
+ #define GPIO34_FFRXD 34 /* FFUART receive */
+ #define GPIO34_MMCCS0 34 /* MMC Chip Select 0 */
++#define GPIO34_USB_P2_2 34 /* USB Port2 Pin 2 */
+ #define GPIO35_FFCTS 35 /* FFUART Clear to send */
+ #define GPIO36_FFDCD 36 /* FFUART Data carrier detect */
+ #define GPIO37_FFDSR 37 /* FFUART data set ready */
+@@ -1375,6 +1378,7 @@
+ #define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN)
+ #define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN)
+ #define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN)
++#define GPIO22_SCLK2_MD (22 | GPIO_ALT_FN_3_IN)
+ #define GPIO23_SCLK_MD (23 | GPIO_ALT_FN_2_OUT)
+ #define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT)
+ #define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT)
+@@ -1385,23 +1389,33 @@
+ #define GPIO28_BITCLK_OUT_I2S_MD (28 | GPIO_ALT_FN_1_OUT)
+ #define GPIO29_SDATA_IN_AC97_MD (29 | GPIO_ALT_FN_1_IN)
+ #define GPIO29_SDATA_IN_I2S_MD (29 | GPIO_ALT_FN_2_IN)
++#define GPIO29_SCLK_MD (29 | GPIO_ALT_FN_3_IN)
+ #define GPIO30_SDATA_OUT_AC97_MD (30 | GPIO_ALT_FN_2_OUT)
+ #define GPIO30_SDATA_OUT_I2S_MD (30 | GPIO_ALT_FN_1_OUT)
++#define GPIO30_USB_P3_2 (30 | GPIO_ALT_FN_3_OUT)
+ #define GPIO31_SYNC_I2S_MD (31 | GPIO_ALT_FN_1_OUT)
+ #define GPIO31_SYNC_AC97_MD (31 | GPIO_ALT_FN_2_OUT)
++#define GPIO31_USB_P3_6 (31 | GPIO_ALT_FN_3_OUT)
+ #define GPIO32_SDATA_IN1_AC97_MD (32 | GPIO_ALT_FN_1_IN)
+ #define GPIO32_SYSCLK_I2S_MD (32 | GPIO_ALT_FN_1_OUT)
+ #define GPIO32_MMCCLK_MD ( 32 | GPIO_ALT_FN_2_OUT)
+ #define GPIO33_nCS_5_MD (33 | GPIO_ALT_FN_2_OUT)
+ #define GPIO34_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
+ #define GPIO34_MMCCS0_MD (34 | GPIO_ALT_FN_2_OUT)
++#define GPIO34_USB_P2_2_MD (34 | GPIO_ALT_FN_1_OUT)
+ #define GPIO35_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
++#define GPIO35_USB_P2_1_MD (35 | GPIO_ALT_FN_2_IN)
+ #define GPIO36_FFDCD_MD (36 | GPIO_ALT_FN_1_IN)
++#define GPIO36_USB_P2_4_MD (36 | GPIO_ALT_FN_1_OUT)
+ #define GPIO37_FFDSR_MD (37 | GPIO_ALT_FN_1_IN)
++#define GPIO37_SFRM2_MD (37 | GPIO_ALT_FN_2_IN)
+ #define GPIO38_FFRI_MD (38 | GPIO_ALT_FN_1_IN)
++#define GPIO38_STXD2_MD (38 | GPIO_ALT_FN_2_OUT)
+ #define GPIO39_MMCCS1_MD (39 | GPIO_ALT_FN_1_OUT)
+ #define GPIO39_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
++#define GPIO39_USB_P2_6_MD (39 | GPIO_ALT_FN_1_OUT)
+ #define GPIO40_FFDTR_MD (40 | GPIO_ALT_FN_2_OUT)
++#define GPIO40_USB_P2_5_MD (40 | GPIO_ALT_FN_3_IN)
+ #define GPIO41_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
+ #define GPIO42_BTRXD_MD (42 | GPIO_ALT_FN_1_IN)
+ #define GPIO42_HWRXD_MD (42 | GPIO_ALT_FN_3_IN)
+@@ -1426,13 +1440,17 @@
+ #define GPIO51_HWRTS_MD (51 | GPIO_ALT_FN_1_OUT)
+ #define GPIO51_nPIOW_MD (51 | GPIO_ALT_FN_2_OUT)
+ #define GPIO52_nPCE_1_MD (52 | GPIO_ALT_FN_2_OUT)
++#define GPIO52_SCLK3_MD (52 | GPIO_ALT_FN_2_OUT)
+ #define GPIO53_nPCE_2_MD (53 | GPIO_ALT_FN_2_OUT)
+ #define GPIO53_MMCCLK_MD (53 | GPIO_ALT_FN_1_OUT)
++#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
++#define GPIO53_USB_P2_3_MD (53 | GPIO_ALT_FN_2_IN)
+ #define GPIO54_MMCCLK_MD (54 | GPIO_ALT_FN_1_OUT)
+ #define GPIO54_nPCE_2_MD (54 | GPIO_ALT_FN_2_OUT)
+ #define GPIO54_pSKTSEL_MD (54 | GPIO_ALT_FN_2_OUT)
+ #define GPIO55_nPREG_MD (55 | GPIO_ALT_FN_2_OUT)
+ #define GPIO56_nPWAIT_MD (56 | GPIO_ALT_FN_1_IN)
++#define GPIO56_USB_P3_4 (56 | GPIO_ALT_FN_1_OUT)
+ #define GPIO57_nIOIS16_MD (57 | GPIO_ALT_FN_1_IN)
+ #define GPIO58_LDD_0_MD (58 | GPIO_ALT_FN_2_OUT)
+ #define GPIO59_LDD_1_MD (59 | GPIO_ALT_FN_2_OUT)
+@@ -1468,13 +1486,19 @@
+ #define GPIO80_nCS_4_MD (80 | GPIO_ALT_FN_2_OUT)
+ #define GPIO81_NSSP_CLK_OUT (81 | GPIO_ALT_FN_1_OUT)
+ #define GPIO81_NSSP_CLK_IN (81 | GPIO_ALT_FN_1_IN)
++#define GPIO81_STXD3_MD (81 | GPIO_ALT_FN_1_OUT)
+ #define GPIO82_NSSP_FRM_OUT (82 | GPIO_ALT_FN_1_OUT)
+ #define GPIO82_NSSP_FRM_IN (82 | GPIO_ALT_FN_1_IN)
+ #define GPIO83_NSSP_TX (83 | GPIO_ALT_FN_1_OUT)
+ #define GPIO83_NSSP_RX (83 | GPIO_ALT_FN_2_IN)
++#define GPIO83_SFRM3_MD (83 | GPIO_ALT_FN_1_IN)
+ #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT)
+ #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN)
+ #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT)
++#define GPIO88_SRXD2_MD (88 | GPIO_ALT_FN_2_IN)
++#define GPIO89_SRXD3_MD (89 | GPIO_ALT_FN_1_IN)
++#define GPIO90_USB_P3_5 (90 | GPIO_ALT_FN_2_IN)
++#define GPIO91_USB_P3_1 (91 | GPIO_ALT_FN_2_IN)
+ #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT)
+ #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT)
+ #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT)
+@@ -1486,6 +1510,7 @@
+ #define GPIO112_MMCCMD_MD (112 | GPIO_ALT_FN_1_OUT)
+ #define GPIO113_I2S_SYSCLK_MD (113 | GPIO_ALT_FN_1_OUT)
+ #define GPIO113_AC97_RESET_N_MD (113 | GPIO_ALT_FN_2_OUT)
++#define GPIO113_USB_P3_3 (113 | GPIO_ALT_FN_3_IN)
+ #define GPIO117_I2CSCL_MD (117 | GPIO_ALT_FN_1_IN)
+ #define GPIO118_I2CSDA_MD (118 | GPIO_ALT_FN_1_IN)
+
+@@ -1501,6 +1526,7 @@
+ #define PFER __REG(0x40F00014) /* Power Manager GPIO Falling-Edge Detect Enable Register */
+ #define PEDR __REG(0x40F00018) /* Power Manager GPIO Edge Detect Status Register */
+ #define PCFR __REG(0x40F0001C) /* Power Manager General Configuration Register */
++#define PGSR(x) (__REG(0x40F00020 + ((unsigned long)(x)/32*4)))
+ #define PGSR0 __REG(0x40F00020) /* Power Manager GPIO Sleep State Register for GP[31-0] */
+ #define PGSR1 __REG(0x40F00024) /* Power Manager GPIO Sleep State Register for GP[63-32] */
+ #define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
+Index: linux-2.6.24/arch/arm/boot/compressed/head.S
+===================================================================
+--- linux-2.6.24.orig/arch/arm/boot/compressed/head.S
++++ linux-2.6.24/arch/arm/boot/compressed/head.S
+@@ -117,6 +117,9 @@
+ mov r0, r0
+ .endr
+
++ mov r1, #0x300 @ mach_id 0x363 is official EZX
++ orr r1, r1, #0x63 @ bootloader JUMP doesn't set r1
++
+ b 1f
+ .word 0x016f2818 @ Magic numbers to help the loader
+ .word start @ absolute load/run zImage address
+Index: linux-2.6.24/include/asm-arm/arch-pxa/uncompress.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/uncompress.h
++++ linux-2.6.24/include/asm-arm/arch-pxa/uncompress.h
+@@ -14,14 +14,14 @@
+ #define STUART ((volatile unsigned long *)0x40700000)
+ #define HWUART ((volatile unsigned long *)0x41600000)
+
+-#define UART FFUART
++#define UART STUART
+
+
+ static inline void putc(char c)
+ {
+- while (!(UART[5] & 0x20))
++/* while (!(UART[5] & 0x40))
+ barrier();
+- UART[0] = c;
++ UART[0] = c;*/
+ }
+
+ /*
+Index: linux-2.6.24/arch/arm/mm/init.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mm/init.c
++++ linux-2.6.24/arch/arm/mm/init.c
+@@ -240,6 +240,10 @@
+ */
+ reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
+ boot_pages << PAGE_SHIFT);
++#ifdef CONFIG_PXA_EZX
++ /* reserve the first page memory for exiting sleep and user off */
++ reserve_bootmem_node(pgdat, PHYS_OFFSET, PAGE_SIZE);
++#endif
+
+ #ifdef CONFIG_BLK_DEV_INITRD
+ /*
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-a780.c
+@@ -0,0 +1,88 @@
++/*
++ * ezx-a780.c - Code specific to A780 GSM Phone.
++ *
++ * Copyright (c) 2007 OpenEZX Team (www.openezx.org)
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
++
++#include "generic.h"
++
++extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
++extern void ezx_backlight_power(int);
++
++static struct pxafb_mode_info mode_a780 = {
++ .pixclock = 150000,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info a780_fb_info = {
++ .modes = &mode_a780,
++ .num_modes = 1,
++ .lccr0 = 0x002008F8,
++ .lccr3 = 0x0430FF09,
++ .pxafb_backlight_power = &ezx_backlight_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
++};
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static void __init a780_init(void)
++{
++ /* setup sleep mode values */
++ PWER = 0xc0007803; /* disable usb, GPIO15 NC */
++ PFER = 0x00007803;
++ PRER = 0x00001802;
++ PGSR0 = 0x00000010;
++ PGSR1 = 0x02800000;
++ PGSR2 = 0x00040000;
++ PGSR3 = 0x00000008;
++ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
++ PSLR = 0x05800f00;
++
++ set_pxa_fb_info(&a780_fb_info);
++
++ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
++ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX1);
++ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX2);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: OpenEZX Team (www.openezx.org) */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000100,
++ .map_io = pxa_map_io,
++ .init_irq = pxa27x_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = a780_init,
++MACHINE_END
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-e2.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-e2.c
+@@ -0,0 +1,70 @@
++/*
++ * ezx-e2.c - Code specific to E2 GSM Phone.
++ *
++ * Copyright (c) 2007 OpenEZX Team (www.openezx.org)
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
++
++#include "generic.h"
++
++extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
++extern void ezx_backlight_power(int);
++
++static struct pxafb_mode_info mode_e2 = {
++ .pixclock = 192308,
++ xres = 240,
++ .yres = 320,
++ .bpp = 8,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info e2_fb_info = {
++ .modes = &mode_e2,
++ .num_modes = 1,
++ .lccr0 = 0x022008B8,
++ .lccr3 = 0xC130FF13,
++ .pxafb_backlight_power = &ezx_backlight_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
++};
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static void __init e2_init(void)
++{
++ set_pxa_fb_info(&e2_fb_info);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: OpenEZX Team (www.openezx.org) */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000200,
++ .map_io = pxa_map_io,
++ .init_irq = pxa27x_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = e2_init,
++MACHINE_END
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-e680.c
+@@ -0,0 +1,87 @@
++/*
++ * ezx-e680.c - Code specific to E680 GSM Phone.
++ *
++ * Copyright (c) 2007 OpenEZX Team (www.openezx.org)
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
++
++#include "generic.h"
++
++extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
++extern void ezx_backlight_power(int);
++
++static struct pxafb_mode_info mode_e680 = {
++ .pixclock = 150000,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info e680_fb_info = {
++ .modes = &mode_e680,
++ .num_modes = 1,
++ .lccr0 = 0x002008F8,
++ .lccr3 = 0x0430FF09,
++ .pxafb_backlight_power = &ezx_backlight_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
++};
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static void __init e680_init(void)
++{
++ /* setup sleep mode values */
++ PWER = 0xc000f803; /* disable usb 0xdc00f803; */
++ PFER = 0x0000f803;
++ PRER = 0x00001802;
++ PGSR0 = 0x00000010;
++ PGSR1 = 0x02800000;
++ PGSR2 = 0x00040000;
++ PGSR3 = 0x00000000;
++ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
++ PSLR = 0x05800f00;
++
++ set_pxa_fb_info(&e680_fb_info);
++
++ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
++ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX1);
++ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX2);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: OpenEZX Team (www.openezx.org) */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000100,
++ .map_io = pxa_map_io,
++ .init_irq = pxa27x_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = e680_init,
++MACHINE_END
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-a1200.c
+@@ -0,0 +1,70 @@
++/*
++ * ezx-a1200.c - Code specific to A1200 GSM Phone.
++ *
++ * Copyright (c) 2007 OpenEZX Team (www.openezx.org)
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
++
++#include "generic.h"
++
++extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
++extern void ezx_backlight_power(int);
++
++static struct pxafb_mode_info mode_a1200 = {
++ .pixclock = 192308,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 8,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info a1200_fb_info = {
++ .modes = &mode_a1200,
++ .num_modes = 1,
++ .lccr0 = 0x022008B8,
++ .lccr3 = 0xC130FF13,
++ .pxafb_backlight_power = &ezx_backlight_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
++};
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static void __init a1200_init(void)
++{
++ set_pxa_fb_info(&a1200_fb_info);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: OpenEZX Team (www.openezx.org) */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000200,
++ .map_io = pxa_map_io,
++ .init_irq = pxa27x_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = a1200_init,
++MACHINE_END
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-e6.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-e6.c
+@@ -0,0 +1,70 @@
++/*
++ * ezx-e6.c - Code specific to E6 GSM Phone.
++ *
++ * Copyright (c) 2007 OpenEZX Team (www.openezx.org)
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
++
++#include "generic.h"
++
++extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
++extern void ezx_backlight_power(int);
++
++static struct pxafb_mode_info mode_e6 = {
++ .pixclock = 192308,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 8,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info e6_fb_info = {
++ .modes = &mode_e6,
++ .num_modes = 1,
++ .lccr0 = 0x022008B8,
++ .lccr3 = 0xC130FF13,
++ .pxafb_backlight_power = &ezx_backlight_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
++};
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static void __init e6_init(void)
++{
++ set_pxa_fb_info(&e6_fb_info);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: OpenEZX Team (www.openezx.org) */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000200,
++ .map_io = pxa_map_io,
++ .init_irq = pxa27x_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = e6_init,
++MACHINE_END
+Index: linux-2.6.24/MAINTAINERS
+===================================================================
+--- linux-2.6.24.orig/MAINTAINERS
++++ linux-2.6.24/MAINTAINERS
+@@ -2581,6 +2581,15 @@
+ W: http://popies.net/meye/
+ S: Maintained
+
++MOTOROLA EZX SMARTPHONES (E680, A780, A1200, E2, E6)
++P: Daniel Ribeiro
++M: wyrm@openezx.org
++P: Harald Welte
++M: laforge@openezx.org
++L: openezx-devel@lists.openezx.org
++W: http://www.openezx.org/
++S: Maintained
++
+ MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER
+ P: Pavel Pisa
+ M: ppisa@pikron.com
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-emu.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-emu.patch
new file mode 100644
index 0000000000..f7ae47751b
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-emu.patch
@@ -0,0 +1,269 @@
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-emu.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-emu.c
+@@ -0,0 +1,219 @@
++/*
++ * EMU Driver for Motorola EZX phones
++ *
++ * Copyright (c) 2007 Daniel Ribeiro <wyrm@openezx.org>
++ *
++ * 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/kernel.h>
++#include <linux/interrupt.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/udc.h>
++
++static struct pxa2xx_udc_mach_info ezx_udc_info;
++extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
++extern int ezx_pcap_read_bit(u_int32_t);
++static int emu_irq_usb4v;
++static int emu_irq_usb1v;
++
++
++#if defined CONFIG_EZX_EMU_USB
++#define emu_switch_to_default() emu_switch_to_usb()
++#elif defined CONFIG_EZX_EMU_UART
++#define emu_switch_to_default() emu_switch_to_uart()
++#else
++#define emu_switch_to_default() emu_switch_to_nothing()
++#endif
++
++static void emu_switch_to_usb(void)
++{
++ printk(KERN_NOTICE "EMU: Switching to USB\n");
++ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
++ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
++ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
++ pxa_gpio_mode(GPIO39_USB_P2_6_MD);
++ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
++ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
++ UP2OCR = 0x02000000;
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 1);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_FSENB, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN, 1);
++ clr_GPIO(GPIO_EMU_MUX1);
++ clr_GPIO(GPIO_EMU_MUX2);
++}
++
++static void emu_switch_to_uart(void)
++{
++ printk(KERN_NOTICE "EMU: Switching to UART\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN,0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232_DIR, 1);
++ set_GPIO(GPIO39_FFTXD);
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO39_FFTXD_MD);
++ pxa_gpio_mode(GPIO53_FFRXD_MD);
++ pxa_set_cken(CKEN_FFUART, 1);
++ clr_GPIO(GPIO_EMU_MUX1);
++ clr_GPIO(GPIO_EMU_MUX2);
++
++}
++
++static void emu_switch_to_audio(int stereo)
++{
++ printk(KERN_NOTICE "EMU: Switching to audio(%s)\n", (stereo ? "stereo" : "mono"));
++ clr_GPIO(GPIO39_VPOUT);
++ if (stereo) {
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_IN);
++ clr_GPIO(GPIO39_VPOUT);
++ } else {
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ }
++
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++ set_GPIO(GPIO_EMU_MUX1);
++ if (stereo)
++ set_GPIO(GPIO_EMU_MUX2);
++ else
++ clr_GPIO(GPIO_EMU_MUX2);
++}
++
++static void emu_switch_to_nothing(void)
++{
++ printk(KERN_NOTICE "EMU: Switching to disconnected\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 1);
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++}
++
++
++static irqreturn_t emu_irq(int irq, void *data)
++{
++ switch (irq) {
++ case EZX_IRQ_USB4V:
++ if(ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB4V)))
++ emu_switch_to_default();
++ break;
++ case EZX_IRQ_USB1V:
++ if(!ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB1V)))
++ emu_switch_to_nothing();
++ break;
++ }
++
++ return IRQ_HANDLED;
++}
++
++static int __init ezx_emu_probe(struct platform_device *dev)
++{
++ pxa_gpio_mode(GPIO_SNP_INT_IN | GPIO_IN);
++ pxa_gpio_mode(GPIO_EMU_MUX1 | GPIO_OUT);
++ pxa_gpio_mode(GPIO_EMU_MUX2 | GPIO_OUT);
++
++ emu_irq_usb4v = platform_get_irq(dev, 0);
++ if(emu_irq_usb4v < 0) {
++ printk(KERN_ERR "Unable to get IRQ for USB4V!\n");
++ return emu_irq_usb4v;
++ }
++ emu_irq_usb1v = platform_get_irq(dev, 1);
++ if(emu_irq_usb1v < 0) {
++ printk(KERN_ERR "Unable to get IRQ for USB1V!\n");
++ return emu_irq_usb1v;
++ }
++
++ request_irq(emu_irq_usb4v, &emu_irq, IRQF_DISABLED, "usb 4v", NULL);
++ request_irq(emu_irq_usb1v, &emu_irq, IRQF_DISABLED, "usb 1v", NULL);
++
++ pxa_set_udc_info(&ezx_udc_info);
++
++ if(ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB4V)))
++ emu_switch_to_default();
++ else
++ emu_switch_to_nothing();
++
++ return 0;
++}
++
++static int ezx_emu_remove(struct platform_device *dev)
++{
++ free_irq(emu_irq_usb4v, NULL);
++ free_irq(emu_irq_usb1v, NULL);
++
++ return 0;
++}
++
++/* USB Device Controller */
++static int udc_connected_status;
++static void ezx_udc_command(int cmd)
++{
++ switch (cmd) {
++ case PXA2XX_UDC_CMD_DISCONNECT:
++ printk(KERN_NOTICE "USB cmd disconnect\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,0);
++ udc_connected_status = 0;
++ break;
++ case PXA2XX_UDC_CMD_CONNECT:
++ printk(KERN_NOTICE "USB cmd connect\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,1);
++ udc_connected_status = 1;
++ break;
++ }
++}
++
++static int ezx_udc_is_connected(void)
++{
++ return udc_connected_status;
++}
++
++static struct pxa2xx_udc_mach_info ezx_udc_info __initdata = {
++ .udc_is_connected = ezx_udc_is_connected,
++ .udc_command = ezx_udc_command,
++};
++
++static struct platform_driver ezxemu_driver = {
++ .probe = ezx_emu_probe,
++ .remove = ezx_emu_remove,
++ .driver = {
++ .name = "ezx-emu",
++ .owner = THIS_MODULE,
++ },
++};
++
++int __init ezx_emu_init(void)
++{
++ return platform_driver_register(&ezxemu_driver);
++}
++
++void ezx_emu_fini(void)
++{
++ return platform_driver_unregister(&ezxemu_driver);
++}
++
++module_init(ezx_emu_init);
++module_exit(ezx_emu_fini);
++
++MODULE_DESCRIPTION("Motorola Enchanced Mini Usb driver");
++MODULE_AUTHOR("Daniel Ribeiro <wyrm@openezx.org>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.24/arch/arm/mach-pxa/Kconfig
+@@ -142,6 +142,28 @@
+ config EZX_PCAP
+ bool "PCAP Support"
+
++config EZX_EMU
++ bool "Motorola Enchanced Mini Usb"
++ depends on EZX_PCAP
++
++if EZX_EMU
++
++choice
++ prompt "Select default EMU mode"
++
++config EZX_EMU_USB
++ bool "USB"
++
++config EZX_EMU_UART
++ bool "UART"
++
++config EZX_EMU_NOTHING
++ bool "nothing"
++
++endchoice
++
++endif
++
+ endif
+
+ endmenu
+Index: linux-2.6.24/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.24/arch/arm/mach-pxa/Makefile
+@@ -38,6 +38,7 @@
+ obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
+ obj-$(CONFIG_EZX_BP) += ezx-bp.o
+ obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
++obj-$(CONFIG_EZX_EMU) += ezx-emu.o
+
+ # Support for blinky lights
+ led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-enable-stuart.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-enable-stuart.patch
new file mode 100644
index 0000000000..6f1a2c1ba4
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-enable-stuart.patch
@@ -0,0 +1,99 @@
+Index: linux-2.6.21/arch/arm/boot/compressed/head.S
+===================================================================
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-05-19 11:22:56.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-05-19 11:50:29.000000000 -0300
+@@ -10,6 +10,7 @@
+ */
+ #include <linux/linkage.h>
+
++#define DEBUG
+ /*
+ * Debugging stuff
+ *
+@@ -117,6 +118,8 @@
+ mov r0, r0
+ .endr
+
++ inituart r10, r11
++
+ mov r1, #0x300 @ mach_id 0x363 is official EZX
+ orr r1, r1, #0x63 @ bootloader JUMP doesn't set r1
+
+Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-05-19 11:22:56.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-05-19 11:30:38.000000000 -0300
+@@ -19,9 +19,9 @@
+
+ static inline void putc(char c)
+ {
+-/* while (!(UART[5] & 0x40))
++ while (!(UART[5] & 0x40))
+ barrier();
+- UART[0] = c;*/
++ UART[0] = c;
+ }
+
+ /*
+Index: linux-2.6.21/include/asm-arm/arch-pxa/debug-macro.S
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/debug-macro.S 2007-05-19 11:30:54.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/debug-macro.S 2007-05-19 11:49:35.000000000 -0300
+@@ -14,11 +14,52 @@
+ #include "hardware.h"
+
+ .macro addruart,rx
+- mrc p15, 0, \rx, c1, c0
+- tst \rx, #1 @ MMU enabled?
+- moveq \rx, #0x40000000 @ physical
+- movne \rx, #io_p2v(0x40000000) @ virtual
+- orr \rx, \rx, #0x00100000
++@ mrc p15, 0, \rx, c1, c0
++@ tst \rx, #1 @ MMU enabled?
++ mov \rx, #0x40000000
++@ moveq \rx, #0x40000000 @ physical
++@ movne \rx, #io_p2v(0x40000000) @ virtual
++ orr \rx, \rx, #0x00700000
++ .endm
++
++ .macro inituart,rd,rx
++ ldr \rd, =0x41300004 @ CKEN
++ ldr \rx, [\rd]
++ orr \rx, \rx, #0x20
++ str \rx, [\rd]
++
++ ldr \rd, =0x40E0005C
++ ldr \rx, [\rd]
++ bic \rx, \rx, #0xF0000000 @ clear GPIO46/47 config
++ orr \rx, \rx, #0x60000000 @ set GPIO46: AF2, GPIO47: AF1
++ str \rx, [\rd]
++ ldr \rd, =0x40E00010
++ ldr \rx, [\rd]
++ bic \rx, \rx, #0x0000c000 @ clear GPIO46/47 direction
++ orr \rx, \rx, #0x00008000 @ set GPIO 47 out, 46 in
++ str \rx, [\rd]
++
++ addruart \rd
++ mov \rx, #0x83 @ DLAB = 1
++ strb \rx, [\rd, #0x0c]
++
++ mov \rx, #0x08 @ Divisor 8 => 115200 bps
++ strb \rx, [\rd, #0x00]
++
++ mov \rx, #0x00
++ strb \rx, [\rd, #0x04] @ Divisor high = 0
++
++ mov \rx, #0x03
++ strb \rx, [\rd, #0x0c] @ DLAB = 0, n81
++
++ mov \rx, #0x00
++ strb \rx, [\rd, #0x10] @ MCR = 0
++
++ mov \rx, #0x00
++ strb \rx, [\rd, #0x28] @ disable autobaud
++
++ mov \rx, #0x40
++ strb \rx, [\rd, #0x04] @ IER UUE (UART Enable)
+ .endm
+
+ #define UART_SHIFT 2
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-eoc.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-eoc.patch
new file mode 100644
index 0000000000..b7247b881c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-eoc.patch
@@ -0,0 +1,295 @@
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-eoc.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-eoc.c
+@@ -0,0 +1,261 @@
++/*
++ * EZX EOC Driver for Motorola EZX phones
++ *
++ * Copyright (C) 2007 Alex Zhang <celeber2@gmail.com>
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++#include <asm/arch/udc.h>
++
++#if 1
++#define EOC_DBG printk
++#else
++#define EOC_DBG(x, args...)
++#endif
++
++#define REG_INT_STATUS 32
++#define REG_INT_MASK 33
++#define REG_INT_SENSE 34
++#define REG_POWER_CONTROL_0 35
++#define REG_POWER_CONTROL_1 36
++#define REG_CONN_CONTROL 37
++
++#define EOC_REG_ADDR_SIZE 1
++#define EOC_REG_DATA_SIZE 3
++#define EOC_FUNC_NOTHING 0
++#define EOC_FUNC_USB_NET 1
++
++static const char eoc_i2c_driver_name[] = "ezx-eoc";
++static int eoc_func = EOC_FUNC_USB_NET;
++static struct pxa2xx_udc_mach_info ezx_udc_info;
++
++static int ezx_eoc_attach_adapter(struct i2c_adapter *adapter);
++static int ezx_eoc_detach_client(struct i2c_client *client);
++
++static struct i2c_client *eoc_i2c_client = NULL;
++
++static struct i2c_driver eoc_i2c_driver = {
++ .driver = {
++ .name = (char *)eoc_i2c_driver_name,
++ },
++ .attach_adapter = ezx_eoc_attach_adapter,
++ .detach_client = ezx_eoc_detach_client,
++};
++
++int eoc_reg_read(int reg, unsigned int *reg_value)
++{
++ unsigned char reg_num = reg;
++ unsigned char value[EOC_REG_DATA_SIZE];
++ int retval;
++
++ struct i2c_msg msgs[2] =
++ {
++ { eoc_i2c_client->addr, 0, EOC_REG_ADDR_SIZE, &reg_num },
++ { eoc_i2c_client->addr, I2C_M_RD, EOC_REG_DATA_SIZE, value }
++ };
++
++ /* transfer message to client */
++ retval = i2c_transfer(eoc_i2c_client->adapter, msgs, 2);
++ if (retval < 0)
++ return retval;
++
++ *reg_value = (value[2] << 0);
++ *reg_value |= (value[1] << 8);
++ *reg_value |= (value[0] << 16);
++ return 0;
++}
++
++int eoc_reg_write(int reg, unsigned int reg_value)
++{
++ unsigned char value[EOC_REG_ADDR_SIZE + EOC_REG_DATA_SIZE];
++ int retval;
++
++ /* Copy the data into a buffer into the correct format */
++ value[0] = reg;
++ value[1] = (reg_value >> 16) & 0xFF;
++ value[2] = (reg_value >> 8) & 0xFF;
++ value[3] = (reg_value >> 0) & 0xFF;
++
++ /* Write the data to the EOC */
++ retval = i2c_master_send (eoc_i2c_client, value, EOC_REG_ADDR_SIZE + EOC_REG_DATA_SIZE);
++ if (retval < 0)
++ return retval;
++ return 0;
++}
++
++static void eoc_switch_to_usb(void)
++{
++ EOC_DBG("EOC: Switching to USB\n");
++ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
++ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
++ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
++ pxa_gpio_mode(GPIO39_USB_P2_6_MD);
++ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
++ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
++ UP2OCR = 0x02000000;
++ /* FIXME change eoc bits to USB */
++
++}
++
++static void eoc_switch_to_nothing(void)
++{
++ EOC_DBG("EOC: Switching do disconnected\n");
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++ /* FIXME disconnect mini usb port */
++}
++
++static void eoc_switch_to_default(void)
++{
++ switch (eoc_func) {
++ case EOC_FUNC_USB_NET:
++ eoc_switch_to_usb();
++ break;
++ case EOC_FUNC_NOTHING:
++ eoc_switch_to_nothing();
++ break;
++ }
++}
++
++static int ezx_eoc_attach_adapter(struct i2c_adapter *adapter)
++{
++ int err = 0;
++ EOC_DBG(">>>>attach adapter enter\n");
++
++ if (eoc_i2c_client != NULL) {
++ EOC_DBG(">>>>already loaded!!!\n");
++ return 0;
++ }
++
++ if (!(eoc_i2c_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL)))
++ return -ENOMEM;
++
++ eoc_i2c_client->addr = 0x17;
++ eoc_i2c_client->adapter = adapter;
++ eoc_i2c_client->driver = &eoc_i2c_driver;
++ eoc_i2c_client->flags = 0;
++ strlcpy(eoc_i2c_client->name, eoc_i2c_driver_name, I2C_NAME_SIZE);
++
++ if ((err = i2c_attach_client(eoc_i2c_client))) {
++ kfree(eoc_i2c_client);
++ eoc_i2c_client = NULL;
++ return err;
++ }
++ eoc_reg_write(REG_INT_MASK, 0x0000FEF);
++ eoc_reg_write(REG_POWER_CONTROL_0, 0x0000C00);
++ eoc_reg_write(REG_POWER_CONTROL_1, 0x000000C);
++ eoc_reg_write(REG_CONN_CONTROL,0x0021044);
++
++ eoc_switch_to_default();
++ EOC_DBG(">>>>attach adapter exit\n");
++ return 0;
++
++}
++
++static int ezx_eoc_detach_client(struct i2c_client *client)
++{
++ return i2c_detach_client(client);
++}
++
++static int __init ezx_eoc_probe(struct platform_device *dev)
++{
++ int ret;
++
++ ret = i2c_add_driver(&eoc_i2c_driver);
++ if (ret != 0)
++ return -EINVAL;
++
++ pxa_set_udc_info(&ezx_udc_info);
++
++ return 0;
++}
++
++static int ezx_eoc_remove(struct platform_device *dev)
++{
++ i2c_del_driver(&eoc_i2c_driver);
++ return 0;
++}
++
++static int ezx_eoc_suspend(struct platform_device *dev, pm_message_t state)
++{
++ eoc_switch_to_nothing();
++ return 0;
++}
++
++static int ezx_eoc_resume(struct platform_device *dev)
++{
++ eoc_switch_to_default();
++ return 0;
++}
++
++/* USB Device Controller */
++static int udc_connected_status;
++static void ezx_udc_command(int cmd)
++{
++ switch (cmd) {
++ case PXA2XX_UDC_CMD_DISCONNECT:
++ printk(KERN_NOTICE "USB cmd disconnect\n");
++// ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,0);
++ udc_connected_status = 0;
++ break;
++ case PXA2XX_UDC_CMD_CONNECT:
++ printk(KERN_NOTICE "USB cmd connect\n");
++// ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,1);
++ udc_connected_status = 1;
++ break;
++ }
++}
++
++static int ezx_udc_is_connected(void)
++{
++ return udc_connected_status;
++}
++
++static struct pxa2xx_udc_mach_info ezx_udc_info __initdata = {
++ .udc_is_connected = ezx_udc_is_connected,
++ .udc_command = ezx_udc_command,
++};
++
++static struct platform_driver ezx_eoc_driver = {
++ .probe = ezx_eoc_probe,
++ .remove = ezx_eoc_remove,
++ .suspend = ezx_eoc_suspend,
++ .resume = ezx_eoc_resume,
++ .driver = {
++ .name = "ezx-eoc",
++ .owner = THIS_MODULE,
++ },
++};
++
++int __init ezx_eoc_init(void)
++{
++ return platform_driver_register(&ezx_eoc_driver);
++}
++
++void ezx_eoc_exit(void)
++{
++ return platform_driver_unregister(&ezx_eoc_driver);
++}
++
++MODULE_AUTHOR("Alex Zhang <celeber2@gmail.com>");
++MODULE_DESCRIPTION("EZX EOC I2C driver");
++MODULE_LICENSE("GPL");
++
++module_init(ezx_eoc_init);
++module_exit(ezx_eoc_exit);
+Index: linux-2.6.24/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.24/arch/arm/mach-pxa/Kconfig
+@@ -142,6 +142,12 @@
+ config EZX_PCAP
+ bool "PCAP Support"
+
++config EZX_EOC
++ tristate "EOC i2c driver of Motorola EZX phones"
++ depends on I2C && EXPERIMENTAL
++ help
++ EOC i2c driver of Motorola EZX phones
++
+ config EZX_EMU
+ bool "Motorola Enchanced Mini Usb"
+ depends on EZX_PCAP
+Index: linux-2.6.24/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.24/arch/arm/mach-pxa/Makefile
+@@ -39,6 +39,7 @@
+ obj-$(CONFIG_EZX_BP) += ezx-bp.o
+ obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
+ obj-$(CONFIG_EZX_EMU) += ezx-emu.o
++obj-$(CONFIG_EZX_EOC) += ezx-eoc.o
+
+ # Support for blinky lights
+ led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch
new file mode 100644
index 0000000000..9ed4906d78
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-mtd-map.patch
@@ -0,0 +1,309 @@
+Index: linux-2.6.24/drivers/mtd/maps/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/mtd/maps/Kconfig
++++ linux-2.6.24/drivers/mtd/maps/Kconfig
+@@ -588,6 +588,34 @@
+ Map driver for a NOR flash bank located on the Expansion Bus of the
+ Intel Vermilion Range chipset.
+
++config MTD_EZX
++ tristate "Map driver for Motorola EZX Platform"
++ depends on MTD && PXA_EZX
++
++if MTD_EZX
++
++choice
++ prompt "Select partition mapping for EZX platform"
++
++config MTD_EZX_A780
++ bool "A780/E680 Original Mapping"
++
++config MTD_EZX_A780_ALTERNATE
++ bool "A780/E680 Alternate Mapping for BLOB2"
++
++config MTD_EZX_A1200
++ bool "A1200 Original Mapping"
++
++config MTD_EZX_E2
++ bool "E2 Original Mapping"
++
++config MTD_EZX_E6
++ bool "E6 Original Mapping"
++
++endchoice
++
++endif
++
+ config MTD_PLATRAM
+ tristate "Map driver for platform device RAM (mtd-ram)"
+ select MTD_RAM
+Index: linux-2.6.24/drivers/mtd/maps/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/mtd/maps/Makefile
++++ linux-2.6.24/drivers/mtd/maps/Makefile
+@@ -69,3 +69,4 @@
+ obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
+ obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
+ obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o
++obj-$(CONFIG_MTD_EZX) += ezx-flash.o
+Index: linux-2.6.24/drivers/mtd/maps/ezx-flash.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/mtd/maps/ezx-flash.c
+@@ -0,0 +1,256 @@
++/*
++ * Map driver for the PXA27x
++ *
++ * Author: Harald Welte
++ * Copyright: (C) 2001 MontaVista Software 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.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/dma-mapping.h>
++#include <linux/slab.h>
++
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/cacheflush.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/mainstone.h>
++
++#define WINDOW_ADDR 0x0
++#define WINDOW_SIZE (32*1024*1024)
++#define WINDOW_CACHE_ADDR 0x0
++#define WINDOW_CACHE_SIZE 0x1a00000
++
++static void pxa27x_map_inval_cache(struct map_info *map, unsigned long from,
++ ssize_t len)
++{
++ flush_ioremap_region(map->phys, map->cached, from, len);
++}
++
++
++struct map_info pxa27x_map = {
++ .name = "PXA27x flash",
++ .size = WINDOW_SIZE,
++ .phys = WINDOW_ADDR,
++ .inval_cache = &pxa27x_map_inval_cache,
++};
++
++#if defined CONFIG_MTD_EZX_A780_ALTERNATE
++static struct mtd_partition pxa27x_partitions[] = {
++ {
++ .name = "Bootloader (RO)",
++ .size = 0x00020000,
++ .offset = 0,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Bootloader 2",
++ .size = 0x00020000,
++ .offset = 0x00020000,
++ } , {
++ .name = "Moto Kernel",
++ .size = 0x000e0000, // 896KB
++ .offset = 0x00040000,
++ } , {
++ .name = "rootfs",
++ .size = 0x01760000,
++ .offset = 0x00120000,
++ } , {
++ .name = "OpenEZX Kernel",
++ .size = 0x00180000, // 1.5MB
++ .offset = 0x01880000,
++ } , {
++ .name = "ezxlocal",
++ .size = 0x005a0000,
++ .offset = 0x01a00000,
++ } , {
++ .name = "setup",
++ .size = 0x00020000,
++ .offset = 0x01fa0000,
++ } , {
++ .name = "Logo",
++ .size = 0x00020000,
++ .offset = 0x01fc0000,
++ },
++};
++#elif defined CONFIG_MTD_EZX_A780
++static struct mtd_partition pxa27x_partitions[] = {
++ {
++ .name = "Bootloader",
++ .size = 0x00020000,
++ .offset = 0,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Kernel",
++ .size = 0x000e0000,
++ .offset = 0x00020000,
++ } , {
++ .name = "rootfs",
++ .size = 0x018e0000,
++ .offset = 0x00120000,
++ } , {
++ .name = "VFM_Filesystem",
++ .size = 0x00580000,
++ .offset = 0x01a00000,
++ } , {
++ .name = "setup",
++ .size = 0x00020000,
++ .offset = 0x01fa0000,
++ } , {
++ .name = "Logo",
++ .size = 0x00020000,
++ .offset = 0x01fc0000,
++ },
++};
++#elif defined CONFIG_MTD_EZX_A1200
++static struct mtd_partition pxa27x_partitions[] = {
++ {
++ .name = "Caddo 2",
++ .size = 0x00008000,
++ .offset = 0,
++ }, {
++ .name = "Itunes",
++ .size = 0x00008000,
++ .offset = 0x00008000,
++ }, {
++ .name = "Caddo 1",
++ .size = 0x00008000,
++ .offset = 0x00010000,
++ }, {
++ .name = "Fota rev",
++ .size = 0x00008000,
++ .offset = 0x00018000,
++ }, {
++ .name = "MBM",
++ .size = 0x00040000,
++ .offset = 0x00020000,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Blob",
++ .size = 0x00020000,
++ .offset = 0x00080000,
++ .mask_flags = MTD_WRITEABLE,
++ }, {
++ .name = "Kernel",
++ .size = 0x00100000,
++ .offset = 0x000A0000,
++ } , {
++ .name = "UserFS DB",
++ .size = 0x00600000,
++ .offset = 0x00AA0000,
++ }, {
++ .name = "UserFS",
++ .size = 0x007E0000,
++ .offset = 0x010A0000,
++ }, {
++ .name = "Test cmd",
++ .size = 0x00020000,
++ .offset = 0x018C0000,
++ } , {
++ .name = "Logo",
++ .size = 0x00020000,
++ .offset = 0x018E0000,
++ } , {
++ .name = "Fota",
++ .size = 0x000c0000,
++ .offset = 0x01900000,
++ }, {
++ .name = "Reserve",
++ .size = 0x00020000,
++ .offset = 0x019c0000,
++ }
++};
++#else
++#error "please define partition for this PXA27x implementation"
++#endif
++
++
++static struct mtd_info *mymtd;
++static struct mtd_partition *parsed_parts;
++
++static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
++
++static int __init init_pxa27x(void)
++{
++ struct mtd_partition *parts;
++ int nb_parts = 0;
++ int parsed_nr_parts = 0;
++ char *part_type = "static";
++
++ pxa27x_map.bankwidth = (BOOT_DEF & 1) ? 2 : 4;
++
++ printk("Probing PXA27x flash at physical address 0x%08x (%d-bit bankwidth)\n",
++ WINDOW_ADDR, pxa27x_map.bankwidth * 8);
++ pxa27x_map.virt = ioremap(pxa27x_map.phys, pxa27x_map.size);
++
++ if (!pxa27x_map.virt) {
++ printk("Failed to ioremap\n");
++ return -EIO;
++ }
++
++ mymtd = do_map_probe("cfi_probe", &pxa27x_map);
++ if (!mymtd) {
++ iounmap((void *)pxa27x_map.virt);
++ return -ENXIO;
++ }
++ mymtd->owner = THIS_MODULE;
++
++ simple_map_init(&pxa27x_map);
++
++ if (parsed_nr_parts == 0) {
++ int ret = parse_mtd_partitions(mymtd, probes, &parsed_parts, 0);
++
++ if (ret > 0) {
++ part_type = "RedBoot";
++ parsed_nr_parts = ret;
++ }
++ }
++
++ if (parsed_nr_parts > 0) {
++ parts = parsed_parts;
++ nb_parts = parsed_nr_parts;
++ } else {
++ parts = pxa27x_partitions;
++ nb_parts = ARRAY_SIZE(pxa27x_partitions);
++ }
++
++ if (nb_parts) {
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ add_mtd_partitions(mymtd, parts, nb_parts);
++ } else {
++ add_mtd_device(mymtd);
++ }
++ return 0;
++}
++
++static void __exit cleanup_pxa27x(void)
++{
++ if (mymtd) {
++ del_mtd_partitions(mymtd);
++ map_destroy(mymtd);
++ if (parsed_parts)
++ kfree(parsed_parts);
++ }
++ if (pxa27x_map.virt)
++ iounmap((void *)pxa27x_map.virt);
++ if (pxa27x_map.cached)
++ iounmap((void *)pxa27x_map.cached);
++ return;
++}
++
++module_init(init_pxa27x);
++module_exit(cleanup_pxa27x);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
++MODULE_DESCRIPTION("MTD map driver for Motorola EZX platform");
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-pcap.patch
new file mode 100644
index 0000000000..f38a5e52da
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-pcap.patch
@@ -0,0 +1,852 @@
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx-pcap.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/arch/arm/mach-pxa/ezx-pcap.c
+@@ -0,0 +1,513 @@
++/* Driver for Motorola PCAP2 as present in EZX phones
++ *
++ * This is both a SPI device driver for PCAP itself, as well as
++ * an IRQ demultiplexer for handling PCAP generated events such as
++ * headphone jack sense by downstream drivers.
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ * Copyright (C) 2007 Daniel Ribeiro <wyrm@openezx.org>
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/interrupt.h>
++#include <linux/kernel_stat.h>
++#include <linux/proc_fs.h>
++
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++
++#include <asm/arch/ezx.h>
++#include <asm/arch/ssp.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/irqs.h>
++#include <asm/mach/irq.h>
++
++#if 0
++#define DEBUGP(x, args...) printk(x, ## args)
++#else
++#define DEBUGP(x, args...)
++#endif
++
++static DEFINE_SPINLOCK(ezx_ssp_lock);
++static struct ssp_dev ezx_ssp_dev;
++static struct ssp_state ezx_ssp_state;
++static struct pcap_platform_data *pcap_data;
++static int pcap_irq;
++
++static unsigned long ezx_ssp_pcap_putget(ulong data)
++{
++ unsigned long flag;
++ u32 ret = 0;
++
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ if (pcap_data->cs >= 0) {
++ if (pcap_data->flags & PCAP_CS_AH)
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ else
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++
++ ssp_write_word(&ezx_ssp_dev,data);
++ ssp_read_word(&ezx_ssp_dev, &ret);
++
++ if (pcap_data->cs >= 0) {
++ if(pcap_data->flags & PCAP_CS_AH)
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ else
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
++
++ return ret;
++}
++
++int ezx_pcap_write(u_int8_t reg_num, u_int32_t value)
++{
++ value &= PCAP_REGISTER_VALUE_MASK;
++ value |= PCAP_REGISTER_WRITE_OP_BIT
++ | (reg_num<<PCAP_REGISTER_ADDRESS_SHIFT);
++
++ ezx_ssp_pcap_putget(value);
++
++ DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_write);
++
++int ezx_pcap_read(u_int8_t reg_num, u_int32_t *value)
++{
++ u_int32_t frame = PCAP_REGISTER_READ_OP_BIT
++ | (reg_num<<PCAP_REGISTER_ADDRESS_SHIFT);
++
++ *value = ezx_ssp_pcap_putget(frame);
++
++ DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
++ return 0;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_read);
++
++int ezx_pcap_bit_set(u_int32_t sspPcapBit, u_int8_t to)
++{
++ int ret;
++ u_int32_t tmp;
++ u_int32_t bit = (sspPcapBit & PCAP_REGISTER_VALUE_MASK);
++ u_int8_t reg_num = (sspPcapBit & PCAP_REGISTER_ADDRESS_MASK)
++ >> PCAP_REGISTER_ADDRESS_SHIFT;
++
++ ret = ezx_pcap_read(reg_num, &tmp);
++ if (ret < 0)
++ return ret;
++
++ if (to == 0)
++ tmp &= ~bit;
++ else
++ tmp |= bit;
++
++ return ezx_pcap_write(reg_num, tmp);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_bit_set);
++
++int ezx_pcap_read_bit(u_int32_t bit)
++{
++ int ret;
++ u_int32_t tmp;
++ u_int8_t reg_num = (bit & PCAP_REGISTER_ADDRESS_MASK)
++ >> PCAP_REGISTER_ADDRESS_SHIFT;
++
++ ret = ezx_pcap_read(reg_num, &tmp);
++ if (ret < 0)
++ return ret;
++
++ return tmp & (bit & PCAP_REGISTER_VALUE_MASK);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_read_bit);
++
++/* /proc/pcap support */
++#ifdef CONFIG_PROC_FS
++
++static struct proc_dir_entry *proc_pcap;
++
++char *pcap_registers[] = {
++ "ISR\t", "MSR\t", "PSTAT\t", "INT_SEL\t", "SWCTRL\t", "VREG1\t",
++ "VREG2\t", "VREG\t", "BATT_DAC", "ADC1\t", "ADC2\t", "AUD_CODEC",
++ "RX_AUD_AMPS", "ST_DAC\t", "RTC_TOD\t", "RTC_TODA", "RTC_DAY\t",
++ "RTC_DAYA", "MTRTMR\t", "PWRCTRL\t", "BUSCTRL\t", "PERIPH\t",
++ "AUXVREG_MASK", "VENDOR_REV", "LOWPWR_CTRL", "PERIPH_MASK",
++ "TX_AUD_AMPS", "GP\t",
++ NULL, NULL, NULL, NULL
++};
++
++static int pcap_read_proc(char *page, char **start, off_t off, int count,
++ int *eof, void *data_unused)
++{
++ int len = 0;
++ u_int8_t r;
++ u_int32_t v;
++ off_t begin = 0;
++
++ for(r = 0; r < 32; r++) {
++ if (pcap_registers[r] == NULL)
++ continue;
++ ezx_pcap_read(r, &v);
++ len += sprintf(page+len, "%s\t%08X\n", pcap_registers[r], v);
++ if(len + begin > off + count)
++ goto done;
++ if(len + begin < off) {
++ begin += len;
++ len = 0;
++ }
++ }
++ *eof = 1;
++done:
++ if (off >= len+begin)
++ return 0;
++ *start = page + (off-begin);
++ return ((count < begin+len-off) ? count : begin+len-off);
++}
++#endif
++
++void ezx_pcap_vibrator_level(u_int32_t value)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(PCAP_REG_AUXVREG, &tmp);
++
++ tmp &= ~PCAP_AUXVREG_V_VIB_MASK;
++ tmp |= ((value << PCAP_AUXVREG_V_VIB_SHIFT) & PCAP_AUXVREG_V_VIB_MASK);
++
++ ezx_pcap_write(PCAP_REG_AUXVREG, tmp);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_vibrator_level);
++
++/* MMC/SD specific functions */
++
++void ezx_pcap_mmcsd_voltage(u_int32_t bits)
++{
++ unsigned int tmp;
++ ezx_pcap_read(PCAP_REG_AUXVREG, &tmp);
++ if (pcap_data->flags & PCAP_MCI_SD) {
++ tmp &= ~PCAP_AUXVREG_VAUX2_MASK;
++ tmp |= ((bits << PCAP_AUXVREG_VAUX2_SHIFT) &
++ PCAP_AUXVREG_VAUX2_MASK);
++ }
++ else if (pcap_data->flags & PCAP_MCI_TF) {
++ tmp &= ~PCAP_AUXVREG_VAUX3_MASK;
++ tmp |= ((bits << PCAP_AUXVREG_VAUX3_SHIFT) &
++ PCAP_AUXVREG_VAUX3_MASK);
++ }
++ ezx_pcap_write(PCAP_REG_AUXVREG, tmp);
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_mmcsd_voltage);
++
++int ezx_pcap_mmcsd_power(int on)
++{
++ if (on > 0) on = 1;
++ else on = 0;
++
++ if (pcap_data->flags & PCAP_MCI_SD)
++ return ezx_pcap_bit_set(PCAP_BIT_AUXVREG_VAUX2_EN, on);
++ else if (pcap_data->flags & PCAP_MCI_TF)
++ return ezx_pcap_bit_set(PCAP_BIT_AUXVREG_VAUX3_EN, on);
++ else
++ return -ENODEV;
++}
++EXPORT_SYMBOL_GPL(ezx_pcap_mmcsd_power);
++
++/* IRQ Handling */
++
++/* Array indexed by BIT POSITION of PCAP register, returns IRQ number */
++static unsigned int pcap2irq[] = {
++ [0] = EZX_IRQ_ADCDONE,
++ [1] = EZX_IRQ_TS,
++ [2] = EZX_IRQ_1HZ, /* 1HZ */
++ [3] = EZX_IRQ_WH, /* WH */
++ [4] = EZX_IRQ_WL, /* WL */
++ [5] = EZX_IRQ_TODA, /* TODA */
++ [6] = EZX_IRQ_USB4V,
++ [7] = EZX_IRQ_ONOFF, /* ONOFF */
++ [8] = EZX_IRQ_ONOFF2, /* ONOFF2 */
++ [9] = EZX_IRQ_USB1V,
++ [10] = EZX_IRQ_MOBPORT, /* MOBPORT */
++ [11] = EZX_IRQ_MIC,
++ [12] = EZX_IRQ_HEADJACK,
++ [13] = EZX_IRQ_ST, /* ST */
++ [14] = EZX_IRQ_PC, /* PC */
++ [15] = EZX_IRQ_WARM, /* WARM */
++ [16] = EZX_IRQ_EOL, /* EOL */
++ [17] = EZX_IRQ_CLK, /* CLK */
++ [18] = EZX_IRQ_SYSRST, /* SYSRST */
++ [19] = 0,
++ [20] = EZX_IRQ_ADCDONE2,
++ [21] = EZX_IRQ_SOFTRESET, /* SOFTRESET */
++ [22] = EZX_IRQ_MNEXB, /* MNEXB */
++};
++
++/* Array indexed by IRQ NUMBER, returns PCAP absolute value */
++static unsigned int irq2pcap[] = {
++ [EZX_IRQ_MNEXB] = PCAP_IRQ_MNEXB,
++ [EZX_IRQ_SOFTRESET] = PCAP_IRQ_SOFTRESET,
++ [EZX_IRQ_SYSRST] = PCAP_IRQ_SYSRST,
++ [EZX_IRQ_CLK] = PCAP_IRQ_CLK,
++ [EZX_IRQ_EOL] = PCAP_IRQ_EOL,
++ [EZX_IRQ_WARM] = PCAP_IRQ_WARM,
++ [EZX_IRQ_PC] = PCAP_IRQ_PC,
++ [EZX_IRQ_ST] = PCAP_IRQ_ST,
++ [EZX_IRQ_MOBPORT] = PCAP_IRQ_MOBPORT,
++ [EZX_IRQ_ONOFF2] = PCAP_IRQ_ONOFF2,
++ [EZX_IRQ_ONOFF] = PCAP_IRQ_ONOFF,
++ [EZX_IRQ_TODA] = PCAP_IRQ_TODA,
++ [EZX_IRQ_WL] = PCAP_IRQ_WL,
++ [EZX_IRQ_WH] = PCAP_IRQ_WH,
++ [EZX_IRQ_1HZ] = PCAP_IRQ_1HZ,
++ [EZX_IRQ_USB4V] = PCAP_IRQ_USB4V,
++ [EZX_IRQ_USB1V] = PCAP_IRQ_USB1V,
++ [EZX_IRQ_HEADJACK] = PCAP_IRQ_A1,
++ [EZX_IRQ_MIC] = PCAP_IRQ_MB2,
++ [EZX_IRQ_TS] = PCAP_IRQ_TS,
++ [EZX_IRQ_ADCDONE] = PCAP_IRQ_ADCDONE,
++ [EZX_IRQ_ADCDONE2] = PCAP_IRQ_ADCDONE2,
++};
++
++static void pcap_ack_irq(unsigned int irq)
++{
++ DEBUGP("pcap_ack_irq: %u\n", irq);
++ ezx_pcap_write(PCAP_REG_ISR, irq2pcap[irq]);
++}
++
++static void pcap_mask_irq(unsigned int irq)
++{
++ u_int32_t reg;
++ unsigned long flag;
++
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ DEBUGP("pcap_mask_irq: %u\n", irq);
++ ezx_pcap_read(PCAP_REG_MSR, &reg);
++ reg |= irq2pcap[irq];
++ ezx_pcap_write(PCAP_REG_MSR, reg);
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
++}
++
++static void pcap_unmask_irq(unsigned int irq)
++{
++ u_int32_t tmp;
++ unsigned long flag;
++
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ DEBUGP("pcap_unmask_irq: %u\n", irq);
++ ezx_pcap_read(PCAP_REG_MSR, &tmp);
++ tmp &= ~irq2pcap[irq];
++ ezx_pcap_write(PCAP_REG_MSR, tmp);
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
++}
++
++static struct irq_chip pcap_chip = {
++ .ack = pcap_ack_irq,
++ .mask = pcap_mask_irq,
++ .unmask = pcap_unmask_irq,
++};
++
++/* handler for interrupt received from PCAP via GPIO */
++static void pcap_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
++{
++ const unsigned int cpu = smp_processor_id();
++ int i;
++ u_int32_t isr, msr;
++
++ spin_lock(&desc->lock);
++ desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
++ if (unlikely(desc->status & (IRQ_INPROGRESS | IRQ_DISABLED))) {
++ desc->status |= (IRQ_PENDING | IRQ_MASKED);
++ desc->chip->mask(irq);
++ desc->chip->ack(irq);
++ goto out_unlock;
++ }
++ kstat_cpu(cpu).irqs[irq]++;
++ desc->chip->ack(irq);
++ desc->status |= IRQ_INPROGRESS;
++ do {
++ if (unlikely((desc->status &
++ (IRQ_PENDING | IRQ_MASKED | IRQ_DISABLED)) ==
++ (IRQ_PENDING | IRQ_MASKED))) {
++ desc->chip->unmask(irq);
++ desc->status &= ~IRQ_MASKED;
++ }
++ desc->status &= ~IRQ_PENDING;
++
++ ezx_pcap_read(PCAP_REG_ISR, &isr);
++ ezx_pcap_read(PCAP_REG_MSR, &msr);
++ for (i = ARRAY_SIZE(pcap2irq)-1; i >= 0; i--) {
++ unsigned int pirq = pcap2irq[i];
++ struct irq_desc *subdesc;
++ if (pirq == 0 || !(isr & irq2pcap[pirq]))
++ continue;
++ subdesc = irq_desc + pirq;
++ if (msr & irq2pcap[pirq])
++ continue;
++ DEBUGP("found irq %u\n", pirq);
++ spin_unlock(&desc->lock);
++ desc_handle_irq(pirq, subdesc);
++ spin_lock(&desc->lock);
++ }
++
++ } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
++
++ desc->status &= ~IRQ_INPROGRESS;
++out_unlock:
++ spin_unlock(&desc->lock);
++}
++
++static int ezx_pcap_remove(struct platform_device *pdev)
++{
++ int irq;
++ DEBUGP("exz_pcap_remove entered\n");
++
++ set_irq_chained_handler(pcap_irq, NULL);
++
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(21); irq++) {
++ set_irq_chip(irq, NULL);
++ set_irq_handler(irq, NULL);
++ set_irq_flags(irq, 0);
++ }
++
++ ssp_exit(&ezx_ssp_dev);
++
++ return 0;
++}
++
++static int __init ezx_pcap_probe(struct platform_device *pdev)
++{
++ unsigned int ret, irq;
++ DEBUGP("ezx_pcap_probe entered\n");
++
++ pcap_data = pdev->dev.platform_data;
++
++ /* configure ssp port */
++ pxa_gpio_mode(29|GPIO_ALT_FN_3_OUT);
++ pxa_gpio_mode(GPIO24_SFRM_MD);
++ pxa_gpio_mode(GPIO25_STXD_MD);
++ pxa_gpio_mode(GPIO26_SRXD_MD);
++
++ if (pcap_data->cs >= 0) {
++ if (pcap_data->flags & PCAP_CS_AH)
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT);
++ else
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT
++ | GPIO_DFLT_HIGH);
++ }
++ pcap_irq = platform_get_irq(pdev, 0);
++ if(pcap_irq < 0) {
++ printk(KERN_ERR "Unable to get IRQ for pcap!\n");
++ return pcap_irq;
++ }
++
++ ret = ssp_init(&ezx_ssp_dev, pcap_data->port, 0);
++ if (ret) {
++ printk(KERN_ERR "Unable to register SSP handler!\n");
++ return ret;
++ }
++
++ ssp_disable(&ezx_ssp_dev);
++ ssp_config(&ezx_ssp_dev,
++ (SSCR0_Motorola | SSCR0_DataSize(16) | SSCR0_EDSS),
++ (SSCR1_TxTresh(1) | SSCR1_RxTresh(1)),
++ 0, SSCR0_SerClkDiv(pcap_data->clk));
++ ssp_enable(&ezx_ssp_dev);
++
++ /* mask/ack all PCAP interrupts */
++ ezx_pcap_write(PCAP_REG_MSR, PCAP_MASK_ALL_INTERRUPT);
++ ezx_pcap_write(PCAP_REG_ISR, PCAP_CLEAR_INTERRUPT_REGISTER);
++
++ if (pcap_data->init)
++ pcap_data->init();
++
++ /* set up interrupt demultiplexing code for PCAP2 irqs */
++ set_irq_type(pcap_irq, IRQT_RISING);
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(21); irq++) {
++ set_irq_chip(irq, &pcap_chip);
++ set_irq_handler(irq, handle_level_irq);
++ set_irq_flags(irq, IRQF_VALID);
++ }
++ set_irq_chained_handler(pcap_irq, pcap_irq_demux_handler);
++ set_irq_wake(pcap_irq, 1);
++
++ printk("ezx-pcap: ssp driver registered\n");
++ return ret;
++}
++
++static int ezx_pcap_suspend(struct platform_device *dev, pm_message_t state)
++{
++ DEBUGP("pcap suspend!\n");
++ ssp_flush(&ezx_ssp_dev);
++ ssp_save_state(&ezx_ssp_dev, &ezx_ssp_state);
++ if (pcap_data->cs >= 0)
++ pxa_gpio_mode(pcap_data->cs | GPIO_IN);
++ return 0;
++}
++
++static int ezx_pcap_resume(struct platform_device *dev)
++{
++ DEBUGP("pcap resume!\n");
++
++ if (pcap_data->cs >= 0) {
++ if (pcap_data->flags & PCAP_CS_AH) {
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT);
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++ else {
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT | GPIO_DFLT_HIGH);
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++ }
++ ssp_restore_state(&ezx_ssp_dev,&ezx_ssp_state);
++ ssp_enable(&ezx_ssp_dev);
++
++ ezx_pcap_write(PCAP_REG_ISR, PCAP_CLEAR_INTERRUPT_REGISTER);
++
++ return 0;
++}
++
++static struct platform_driver ezxpcap_driver = {
++ .probe = ezx_pcap_probe,
++ .remove = ezx_pcap_remove,
++ .suspend = ezx_pcap_suspend,
++ .resume = ezx_pcap_resume,
++ .driver = {
++ .name = "ezx-pcap",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ezx_pcap_init(void)
++{
++ DEBUGP("ezx_pcap_init entered\n");
++
++#ifdef CONFIG_PROC_FS
++ if((proc_pcap = create_proc_entry("pcap", 0, NULL)))
++ proc_pcap->read_proc = pcap_read_proc;
++#endif
++
++ return platform_driver_register(&ezxpcap_driver);
++}
++
++static void __exit ezx_pcap_exit(void)
++{
++#ifdef CONFIG_PROC_FS
++ if (proc_pcap)
++ remove_proc_entry("pcap", NULL);
++#endif
++
++ return platform_driver_unregister(&ezxpcap_driver);
++}
++
++module_init(ezx_pcap_init);
++module_exit(ezx_pcap_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte");
++MODULE_DESCRIPTION("SPI Driver for Motorola PCAP2");
++
+Index: linux-2.6.24/include/asm-arm/arch-pxa/ezx-pcap.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/include/asm-arm/arch-pxa/ezx-pcap.h
+@@ -0,0 +1,248 @@
++/*
++ * Copyright 2007 Daniel Ribeiro <wyrm@openezx.org>
++ */
++
++#ifndef EZX_PCAP_H
++#define EZX_PCAP_H
++
++struct pcap_platform_data {
++ int port; /* SSP port */
++ int cs; /* CS gpio */
++ int clk;
++ int flags; /* driver flags */
++ int (*init)(void); /* board specific driver init */
++};
++
++/* driver configuration */
++#define PCAP_CS_AH (1 << 0) /* CS pin is active high */
++#define PCAP_MCI_SD (1 << 1) /* SD card slot */
++#define PCAP_MCI_TF (1 << 2) /* TF card slot */
++
++#define PCAP_REGISTER_WRITE_OP_BIT 0x80000000
++#define PCAP_REGISTER_READ_OP_BIT 0x00000000
++
++#define PCAP_REGISTER_VALUE_MASK 0x01ffffff
++#define PCAP_REGISTER_ADDRESS_MASK 0x7c000000
++#define PCAP_REGISTER_ADDRESS_SHIFT 26
++#define PCAP_REGISTER_NUMBER 32
++#define PCAP_CLEAR_INTERRUPT_REGISTER 0x01ffffff
++#define PCAP_MASK_ALL_INTERRUPT 0x01ffffff
++
++
++#define pbit(reg, bit) ((reg << PCAP_REGISTER_ADDRESS_SHIFT) | bit)
++
++/* registers acessible by both pcap ports */
++#define PCAP_REG_ISR 0x0 /* Interrupt Status */
++#define PCAP_REG_MSR 0x1 /* Interrupt Mask */
++#define PCAP_REG_PSTAT 0x2 /* Processor Status */
++#define PCAP_REG_VREG2 0x6 /* Regulator Bank 2 Control */
++#define PCAP_REG_AUXVREG 0x7 /* Auxiliary Regulator Control */
++#define PCAP_REG_BATT 0x8 /* Battery Control */
++#define PCAP_REG_ADC1 0x9 /* AD Control */
++#define PCAP_REG_ADC2 0xa /* AD Result */
++#define PCAP_REG_CODEC 0xb /* Audio Codec Control */
++#define PCAP_REG_RX_AMPS 0xc /* RX Audio Amplifiers Control */
++#define PCAP_REG_ST_DAC 0xd /* Stereo DAC Control */
++#define PCAP_REG_BUSCTRL 0x14 /* Connectivity Control */
++#define PCAP_REG_PERIPH 0x15 /* Peripheral Control */
++#define PCAP_REG_LOWPWR 0x18 /* Regulator Low Power Control */
++#define PCAP_REG_TX_AMPS 0x1a /* TX Audio Amplifiers Control */
++#define PCAP_REG_GP 0x1b /* General Purpose */
++
++/* registers acessible by pcap port 1 only (a1200, e2 & e6) */
++#define PCAP_REG_INT_SEL 0x3 /* Interrupt Select */
++#define PCAP_REG_SWCTRL 0x4 /* Switching Regulator Control */
++#define PCAP_REG_VREG1 0x5 /* Regulator Bank 1 Control */
++#define PCAP_REG_RTC_TOD 0xe /* RTC Time of Day */
++#define PCAP_REG_RTC_TODA 0xf /* RTC Time of Day Alarm */
++#define PCAP_REG_RTC_DAY 0x10 /* RTC Day */
++#define PCAP_REG_RTC_DAYA 0x11 /* RTC Day Alarm */
++#define PCAP_REG_MTRTMR 0x12 /* AD Monitor Timer */
++#define PCAP_REG_PWR 0x13 /* Power Control */
++#define PCAP_REG_AUXVREG_MASK 0x16 /* Auxiliary Regulator Mask */
++#define PCAP_REG_VENDOR_REV 0x17
++#define PCAP_REG_PERIPH_MASK 0x19 /* Peripheral Mask */
++
++/* interrupts - registers 0, 1, 2, 3 */
++#define PCAP_IRQ_ADCDONE (1 << 0) /* AD Conversion Done Port 1 */
++#define PCAP_IRQ_TS (1 << 1) /* Touch Screen */
++#define PCAP_IRQ_1HZ (1 << 2) /* 1HZ Timer */
++#define PCAP_IRQ_WH (1 << 3)
++#define PCAP_IRQ_WL (1 << 4)
++#define PCAP_IRQ_TODA (1 << 5)
++#define PCAP_IRQ_USB4V (1 << 6)
++#define PCAP_IRQ_ONOFF (1 << 7)
++#define PCAP_IRQ_ONOFF2 (1 << 8)
++#define PCAP_IRQ_USB1V (1 << 9)
++#define PCAP_IRQ_MOBPORT (1 << 10)
++#define PCAP_IRQ_MB2 (1 << 11) /* Mic */
++#define PCAP_IRQ_A1 (1 << 12) /* Audio jack */
++#define PCAP_IRQ_ST (1 << 13)
++#define PCAP_IRQ_PC (1 << 14)
++#define PCAP_IRQ_WARM (1 << 15)
++#define PCAP_IRQ_EOL (1 << 16)
++#define PCAP_IRQ_CLK (1 << 17)
++#define PCAP_IRQ_SYSRST (1 << 18)
++#define PCAP_IRQ_ADCDONE2 (1 << 20) /* AD Conversion Done Port 2 */
++#define PCAP_IRQ_SOFTRESET (1 << 21)
++#define PCAP_IRQ_MNEXB (1 << 22)
++
++#define PCAP_BIT_VREG2_V1_STBY pbit(PCAP_REG_VREG2, (1 << 0))
++#define PCAP_BIT_VREG2_V2_STBY pbit(PCAP_REG_VREG2, (1 << 1))
++#define PCAP_BIT_VREG2_V3_STBY pbit(PCAP_REG_VREG2, (1 << 2))
++#define PCAP_BIT_VREG2_V4_STBY pbit(PCAP_REG_VREG2, (1 << 3))
++#define PCAP_BIT_VREG2_V5_STBY pbit(PCAP_REG_VREG2, (1 << 4))
++#define PCAP_BIT_VREG2_V6_STBY pbit(PCAP_REG_VREG2, (1 << 5))
++#define PCAP_BIT_VREG2_V7_STBY pbit(PCAP_REG_VREG2, (1 << 6))
++#define PCAP_BIT_VREG2_V8_STBY pbit(PCAP_REG_VREG2, (1 << 7))
++#define PCAP_BIT_VREG2_V9_STBY pbit(PCAP_REG_VREG2, (1 << 8))
++#define PCAP_BIT_VREG2_V10_STBY pbit(PCAP_REG_VREG2, (1 << 9))
++#define PCAP_BIT_VREG2_V1_LOWPWR pbit(PCAP_REG_VREG2, (1 << 10))
++#define PCAP_BIT_VREG2_V2_LOWPWR pbit(PCAP_REG_VREG2, (1 << 11))
++#define PCAP_BIT_VREG2_V3_LOWPWR pbit(PCAP_REG_VREG2, (1 << 12))
++#define PCAP_BIT_VREG2_V4_LOWPWR pbit(PCAP_REG_VREG2, (1 << 13))
++#define PCAP_BIT_VREG2_V5_LOWPWR pbit(PCAP_REG_VREG2, (1 << 14))
++#define PCAP_BIT_VREG2_V6_LOWPWR pbit(PCAP_REG_VREG2, (1 << 15))
++#define PCAP_BIT_VREG2_V7_LOWPWR pbit(PCAP_REG_VREG2, (1 << 16))
++#define PCAP_BIT_VREG2_V8_LOWPWR pbit(PCAP_REG_VREG2, (1 << 17))
++#define PCAP_BIT_VREG2_V9_LOWPWR pbit(PCAP_REG_VREG2, (1 << 18))
++#define PCAP_BIT_VREG2_V10_LOWPWR pbit(PCAP_REG_VREG2, (1 << 19))
++
++#define PCAP_BIT_AUXVREG_VAUX1_EN pbit(PCAP_REG_AUXVREG, (1 << 1))
++#define PCAP_AUXVREG_VAUX1_MASK 0x0000000c
++#define PCAP_AUXVREG_VAUX1_SHIFT 2
++#define PCAP_BIT_AUXVREG_VAUX2_EN pbit(PCAP_REG_AUXVREG, (1 << 4))
++#define PCAP_AUXVREG_VAUX2_MASK 0x00000060
++#define PCAP_AUXVREG_VAUX2_SHIFT 5
++#define PCAP_BIT_AUXVREG_VAUX3_EN pbit(PCAP_REG_AUXVREG, (1 << 7))
++#define PCAP_AUXVREG_VAUX3_MASK 0x00000f00
++#define PCAP_AUXVREG_VAUX3_SHIFT 8
++#define PCAP_BIT_AUXVREG_VAUX4_EN pbit(PCAP_REG_AUXVREG, (1 << 12))
++#define PCAP_AUXVREG_VAUX4_MASK 0x00006000
++#define PCAP_AUXVREG_VAUX4_SHIFT 13
++#define PCAP_BIT_AUXVREG_VSIM2_EN pbit(PCAP_REG_AUXVREG, (1 << 16))
++#define PCAP_BIT_AUXVREG_VSIM_EN pbit(PCAP_REG_AUXVREG, (1 << 17))
++#define PCAP_BIT_AUXVREG_VSIM_0 pbit(PCAP_REG_AUXVREG, (1 << 18))
++#define PCAP_BIT_AUXVREG_V_VIB_EN pbit(PCAP_REG_AUXVREG, (1 << 19))
++#define PCAP_AUXVREG_V_VIB_MASK 0x00300000
++#define PCAP_AUXVREG_V_VIB_SHIFT 20
++#define PCAP_BIT_AUXVREG_VAUX1_STBY pbit(PCAP_REG_AUXVREG, (1 << 22))
++#define PCAP_BIT_AUXVREG_VAUX1_LOWPWR pbit(PCAP_REG_AUXVREG, (1 << 23))
++#define PCAP_BIT_AUXVREG_SW3_STBY pbit(PCAP_REG_AUXVREG, (1 << 24))
++
++#define PCAP_BATT_DAC_MASK 0x000000ff
++#define PCAP_BATT_DAC_SHIFT 0
++#define PCAP_BIT_BATT_B_FDBK pbit(PCAP_REG_BATT, (1 << 8))
++#define PCAP_BIT_BATT_EXT_ISENSE pbit(PCAP_REG_BATT, (1 << 9))
++#define PCAP_BATT_V_COIN_MASK 0x00003c00
++#define PCAP_BATT_V_COIN_SHIFT 10
++#define PCAP_BIT_BATT_I_COIN pbit(PCAP_REG_BATT, (1 << 14))
++#define PCAP_BIT_BATT_COIN_CH_EN pbit(PCAP_REG_BATT, (1 << 15))
++#define PCAP_BATT_EOL_SEL_MASK 0x000e0000
++#define PCAP_BATT_EOL_SEL_SHIFT 17
++#define PCAP_BIT_BATT_EOL_CMP_EN pbit(PCAP_REG_BATT, (1 << 20))
++#define PCAP_BIT_BATT_BATT_DET_EN pbit(PCAP_REG_BATT, (1 << 21))
++#define PCAP_BIT_BATT_THERMBIAS_CTRL pbit(PCAP_REG_BATT, (1 << 22))
++
++#define PCAP_BIT_ADC1_ADEN pbit(PCAP_REG_ADC1, (1 << 0))
++#define PCAP_BIT_ADC1_RAND pbit(PCAP_REG_ADC1, (1 << 1))
++#define PCAP_BIT_ADC1_AD_SEL1 pbit(PCAP_REG_ADC1, (1 << 2))
++#define PCAP_BIT_ADC1_AD_SEL2 pbit(PCAP_REG_ADC1, (1 << 3))
++#define PCAP_ADC1_ADA1_MASK 0x00000070
++#define PCAP_ADC1_ADA1_SHIFT 4
++#define PCAP_ADC1_ADA2_MASK 0x00000380
++#define PCAP_ADC1_ADA2_SHIFT 7
++#define PCAP_ADC1_ATO_MASK 0x00003c00
++#define PCAP_ADC1_ATO_SHIFT 10
++#define PCAP_BIT_ADC1_ATOX pbit(PCAP_REG_ADC1, (1 << 14))
++#define PCAP_BIT_ADC1_MTR1 pbit(PCAP_REG_ADC1, (1 << 15))
++#define PCAP_BIT_ADC1_MTR2 pbit(PCAP_REG_ADC1, (1 << 16))
++#define PCAP_ADC1_TS_M_MASK 0x000e0000
++#define PCAP_ADC1_TS_M_SHIFT 17
++#define PCAP_BIT_ADC1_TS_REF_LOWPWR pbit(PCAP_REG_ADC1, (1 << 20))
++#define PCAP_BIT_ADC1_TS_REFENB pbit(PCAP_REG_ADC1, (1 << 21))
++#define PCAP_BIT_ADC1_BATT_I_POLARITY pbit(PCAP_REG_ADC1, (1 << 22))
++#define PCAP_BIT_ADC1_BATT_I_ADC pbit(PCAP_REG_ADC1, (1 << 23))
++
++#define PCAP_ADC2_ADD1_MASK 0x000003ff
++#define PCAP_ADC2_ADD1_SHIFT 0
++#define PCAP_ADC2_ADD2_MASK 0x000ffc00
++#define PCAP_ADC2_ADD2_SHIFT 10
++#define PCAP_BIT_ADC2_ADINC1 pbit(PCAP_REG_ADC2, (1 << 20))
++#define PCAP_BIT_ADC2_ADINC2 pbit(PCAP_REG_ADC2, (1 << 21))
++#define PCAP_BIT_ADC2_ASC pbit(PCAP_REG_ADC2, (1 << 22))
++
++#define PCAP_BIT_BUSCTRL_FSENB 0x50000001
++#define PCAP_BIT_BUSCTRL_USB_SUSPEND 0x50000002
++#define PCAP_BIT_BUSCTRL_USB_PU 0x50000004
++#define PCAP_BIT_BUSCTRL_USB_PD 0x50000008
++#define PCAP_BIT_BUSCTRL_VUSB_EN 0x50000010
++#define PCAP_BIT_BUSCTRL_USB_PS 0x50000020
++#define PCAP_BIT_BUSCTRL_VUSB_MSTR_EN 0x50000040
++#define PCAP_BIT_BUSCTRL_VBUS_PD_ENB 0x50000080
++#define PCAP_BIT_BUSCTRL_CURRLIM 0x50000100
++#define PCAP_BIT_BUSCTRL_RS232ENB 0x50000200
++#define PCAP_BIT_BUSCTRL_RS232_DIR 0x50000400
++#define PCAP_BIT_BUSCTRL_SE0_CONN 0x50000800
++#define PCAP_BIT_BUSCTRL_USB_PDM 0x50001000
++#define PCAP_BIT_BUSCTRL_BUS_PRI_ADJ 0x51000000
++
++#define PCAP_BIT_PERIPH_BL_CTRL0 0x54000001
++#define PCAP_BIT_PERIPH_BL_CTRL1 0x54000002
++#define PCAP_BIT_PERIPH_BL_CTRL2 0x54000004
++#define PCAP_BIT_PERIPH_BL_CTRL3 0x54000008
++#define PCAP_BIT_PERIPH_BL_CTRL4 0x54000010
++#define PCAP_BIT_PERIPH_LEDR_EN 0x54000020
++#define PCAP_BIT_PERIPH_LEDG_EN 0x54000040
++#define PCAP_BIT_PERIPH_LEDR_CTRL0 0x54000080
++#define PCAP_BIT_PERIPH_LEDR_CTRL1 0x54000100
++#define PCAP_BIT_PERIPH_LEDR_CTRL2 0x54000200
++#define PCAP_BIT_PERIPH_LEDR_CTRL3 0x54000400
++#define PCAP_BIT_PERIPH_LEDG_CTRL0 0x54000800
++#define PCAP_BIT_PERIPH_LEDG_CTRL1 0x54001000
++#define PCAP_BIT_PERIPH_LEDG_CTRL2 0x54002000
++#define PCAP_BIT_PERIPH_LEDG_CTRL3 0x54004000
++#define PCAP_BIT_PERIPH_LEDR_I0 0x54008000
++#define PCAP_BIT_PERIPH_LEDR_I1 0x54010000
++#define PCAP_BIT_PERIPH_LEDG_I0 0x54020000
++#define PCAP_BIT_PERIPH_LEDG_I1 0x54040000
++#define PCAP_BIT_PERIPH_SKIP 0x54080000
++#define PCAP_BIT_PERIPH_BL2_CTRL0 0x54100000
++#define PCAP_BIT_PERIPH_BL2_CTRL1 0x54200000
++#define PCAP_BIT_PERIPH_BL2_CTRL2 0x54400000
++#define PCAP_BIT_PERIPH_BL2_CTRL3 0x54800000
++#define PCAP_BIT_PERIPH_BL2_CTRL4 0x55000000
++
++#define PCAP_BIT_LOWPWR_VAUX2_STBY 0x60000001
++#define PCAP_BIT_LOWPWR_VAUX2_LOWPWR 0x60000002
++#define PCAP_BIT_LOWPWR_VAUX3_STBY 0x60000004
++#define PCAP_BIT_LOWPWR_VAUX3_LOWPWR 0x60000008
++#define PCAP_BIT_LOWPWR_VAUX4_STBY 0x60000010
++#define PCAP_BIT_LOWPWR_VAUX4_LOWPWR 0x60000020
++#define PCAP_BIT_LOWPWR_VSIM_LOWPWR 0x60000040
++#define PCAP_BIT_LOWPWR_VSIM2_LOWPWR 0x60000080
++#define PCAP_BIT_LOWPWR_SW1_MODE00 0x60000100
++#define PCAP_BIT_LOWPWR_SW1_MODE01 0x60000200
++#define PCAP_BIT_LOWPWR_SW1_MODE10 0x60000400
++#define PCAP_BIT_LOWPWR_SW1_MODE11 0x60000800
++#define PCAP_BIT_LOWPWR_SW10_DVS 0x60001000
++#define PCAP_BIT_LOWPWR_SW11_DVS 0x60002000
++#define PCAP_BIT_LOWPWR_SW12_DVS 0x60004000
++#define PCAP_BIT_LOWPWR_SW13_DVS 0x60008000
++#define PCAP_BIT_LOWPWR_SW2_MODE00 0x60010000
++#define PCAP_BIT_LOWPWR_SW2_MODE01 0x60020000
++#define PCAP_BIT_LOWPWR_SW2_MODE10 0x60040000
++#define PCAP_BIT_LOWPWR_SW2_MODE11 0x60080000
++#define PCAP_BIT_LOWPWR_SW20_DVS 0x60100000
++#define PCAP_BIT_LOWPWR_SW21_DVS 0x60200000
++#define PCAP_BIT_LOWPWR_SW22_DVS 0x60400000
++#define PCAP_BIT_LOWPWR_SW23_DVS 0x60800000
++#define PCAP_BIT_LOWPWR_VC_STBY 0x61000000
++
++extern int ezx_pcap_write(u_int8_t, u_int32_t);
++extern int ezx_pcap_read(u_int8_t, u_int32_t *);
++extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
++extern int ezx_pcap_bit_get(u_int32_t);
++extern int ezx_pcap_read_bit(u_int32_t);
++extern void ezx_pcap_vibrator_level(u_int32_t);
++#endif
+Index: linux-2.6.24/include/asm-arm/arch-pxa/irqs.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/irqs.h
++++ linux-2.6.24/include/asm-arm/arch-pxa/irqs.h
+@@ -89,7 +89,7 @@
+ * within sensible limits.
+ */
+ #define IRQ_BOARD_START (PXA_GPIO_IRQ_BASE + PXA_GPIO_IRQ_NUM)
+-#define IRQ_BOARD_END (IRQ_BOARD_START + 16)
++#define IRQ_BOARD_END (IRQ_BOARD_START + 22)
+
+ #define IRQ_SA1111_START (IRQ_BOARD_END)
+ #define IRQ_GPAIN0 (IRQ_BOARD_END + 0)
+@@ -180,7 +180,8 @@
+ #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
+ #elif defined(CONFIG_ARCH_LUBBOCK) || \
+ defined(CONFIG_MACH_LOGICPD_PXA270) || \
+- defined(CONFIG_MACH_MAINSTONE)
++ defined(CONFIG_MACH_MAINSTONE) || \
++ defined(CONFIG_PXA_EZX)
+ #define NR_IRQS (IRQ_BOARD_END)
+ #else
+ #define NR_IRQS (IRQ_BOARD_START)
+@@ -227,6 +228,31 @@
+ #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2)
+ #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3)
+
++/* EZX Interrupts (CONFIG_EZX) */
++#define EZX_IRQ(x) (IRQ_BOARD_START + (x))
++#define EZX_IRQ_USB4V EZX_IRQ(0) /* EMU */
++#define EZX_IRQ_USB1V EZX_IRQ(1) /* EMU */
++#define EZX_IRQ_HEADJACK EZX_IRQ(2) /* Audio connector */
++#define EZX_IRQ_MIC EZX_IRQ(3) /* Audio connector */
++#define EZX_IRQ_ADCDONE EZX_IRQ(4)
++#define EZX_IRQ_TS EZX_IRQ(5) /* TS touch */
++#define EZX_IRQ_ADCDONE2 EZX_IRQ(6) /* TS x/y ADC ready */
++#define EZX_IRQ_WH EZX_IRQ(7)
++#define EZX_IRQ_WL EZX_IRQ(8)
++#define EZX_IRQ_ONOFF EZX_IRQ(9)
++#define EZX_IRQ_ONOFF2 EZX_IRQ(10)
++#define EZX_IRQ_MOBPORT EZX_IRQ(11)
++#define EZX_IRQ_TODA EZX_IRQ(12)
++#define EZX_IRQ_1HZ EZX_IRQ(13)
++#define EZX_IRQ_MNEXB EZX_IRQ(14)
++#define EZX_IRQ_ST EZX_IRQ(15)
++#define EZX_IRQ_PC EZX_IRQ(16)
++#define EZX_IRQ_SYSRST EZX_IRQ(17)
++#define EZX_IRQ_SOFTRESET EZX_IRQ(18)
++#define EZX_IRQ_EOL EZX_IRQ(19)
++#define EZX_IRQ_CLK EZX_IRQ(20)
++#define EZX_IRQ_WARM EZX_IRQ(21)
++
+ /* ITE8152 irqs */
+ /* add IT8152 IRQs beyond BOARD_END */
+ #ifdef CONFIG_PCI_HOST_ITE8152
+Index: linux-2.6.24/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.24/arch/arm/mach-pxa/Kconfig
+@@ -139,6 +139,9 @@
+ This enables control code for the BP (baseband processor) found in
+ Motorola's EZX smartphone platform.
+
++config EZX_PCAP
++ bool "PCAP Support"
++
+ endif
+
+ endmenu
+Index: linux-2.6.24/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.24/arch/arm/mach-pxa/Makefile
+@@ -37,6 +37,7 @@
+ obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
+ obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
+ obj-$(CONFIG_EZX_BP) += ezx-bp.o
++obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
+
+ # Support for blinky lights
+ led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-pm.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-pm.patch
new file mode 100644
index 0000000000..cc08fddfc6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-pm.patch
@@ -0,0 +1,108 @@
+Index: linux-2.6.24/arch/arm/mach-pxa/pxa27x.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/pxa27x.c
++++ linux-2.6.24/arch/arm/mach-pxa/pxa27x.c
+@@ -25,6 +25,10 @@
+ #include <asm/arch/pm.h>
+ #include <asm/arch/dma.h>
+
++#ifdef CONFIG_PXA_EZX
++#include <asm/arch/ezx.h>
++#endif
++
+ #include "generic.h"
+ #include "devices.h"
+ #include "clock.h"
+@@ -231,7 +235,12 @@
+ void pxa27x_cpu_pm_restore(unsigned long *sleep_save)
+ {
+ /* ensure not to come back here if it wasn't intended */
++#ifdef CONFIG_PXA_EZX
++ *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = 0;
++ *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = OFF_FLAG;
++#else
+ PSPR = 0;
++#endif
+
+ /* restore registers */
+ RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1);
+@@ -281,7 +290,13 @@
+ break;
+ case PM_SUSPEND_MEM:
+ /* set resume return address */
++#ifdef CONFIG_PXA_EZX
++ /* set EZX flags for blob - WM */
++ *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = virt_to_phys(pxa_cpu_resume);
++ *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = SLEEP_FLAG;
++#else
+ PSPR = virt_to_phys(pxa_cpu_resume);
++#endif
+ pxa27x_cpu_suspend(PWRMODE_SLEEP);
+ break;
+ }
+Index: linux-2.6.24/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/ezx.c
++++ linux-2.6.24/arch/arm/mach-pxa/ezx.c
+@@ -18,6 +18,7 @@
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/ohci.h>
++#include <asm/arch/system.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-bp.h>
+
+@@ -108,8 +109,53 @@
+ &ezxbp_device,
+ };
+
++/* PM */
++extern int bp_handshake_passed(void);
++
++static void ezx_reboot_poweroff(char mode)
++{
++ *(unsigned long *)(phys_to_virt(BPSIG_ADDR)) = NO_FLAG;
++ cpu_proc_fin();
++
++#ifdef CONFIG_EZX_BP
++ if (pxa_gpio_get_value(GPIO_BB_WDI) == 0) {
++ *(unsigned long *)(phys_to_virt(BPSIG_ADDR)) = WDI_FLAG;
++
++ /* reset BP */
++ pxa_gpio_set_value(GPIO_BB_RESET, 0);
++ mdelay(1);
++ pxa_gpio_set_value(GPIO_BB_RESET, 1);
++
++ if (mode == 'z') {
++ arch_reset('h');
++ while (1);
++ }
++ }
++#endif
++ if (mode == 'z')
++ /* Panic! Ask PCAP to turn both processors off */
++ pxa_gpio_set_value(GPIO_WDI_AP, 0);
++ else
++ arm_machine_restart(mode);
++
++ while (1);
++}
++
++static inline void ezx_poweroff(void)
++{
++ ezx_reboot_poweroff('z');
++}
++
++static inline void ezx_restart(char mode)
++{
++ ezx_reboot_poweroff(mode);
++}
++
+ static int __init ezx_init(void)
+ {
++ pm_power_off = ezx_poweroff;
++ arm_pm_restart = ezx_restart;
++
+ CKEN = (1 << CKEN_OSTIMER) | (1 << CKEN_MEMC);
+
+ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
diff --git a/packages/linux/linux-ezx-2.6.24/patches/ezx-serial-bug-workaround.patch b/packages/linux/linux-ezx-2.6.24/patches/ezx-serial-bug-workaround.patch
new file mode 100644
index 0000000000..efff7e06a5
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/ezx-serial-bug-workaround.patch
@@ -0,0 +1,45 @@
+Work around some errata in the pxa serial code (copied from motorolas 2.4.x tree)
+
+Index: linux-2.6.24/drivers/serial/pxa.c
+===================================================================
+--- linux-2.6.24.orig/drivers/serial/pxa.c
++++ linux-2.6.24/drivers/serial/pxa.c
+@@ -29,6 +29,10 @@
+ #define SUPPORT_SYSRQ
+ #endif
+
++#define pxa_buggy_port(x) ({ \
++ int cpu_ver; asm("mrc%? p15, 0, %0, c0, c0" : "=r" (cpu_ver)); \
++ ((x) == PORT_PXA && (cpu_ver & ~1) == 0x69052100); })
++
+ #include <linux/module.h>
+ #include <linux/ioport.h>
+ #include <linux/init.h>
+@@ -196,7 +200,7 @@
+ if (uart_circ_empty(xmit))
+ serial_pxa_stop_tx(&up->port);
+ }
+-
++static inline irqreturn_t serial_pxa_irq(int, void *);
+ static void serial_pxa_start_tx(struct uart_port *port)
+ {
+ struct uart_pxa_port *up = (struct uart_pxa_port *)port;
+@@ -204,6 +208,8 @@
+ if (!(up->ier & UART_IER_THRI)) {
+ up->ier |= UART_IER_THRI;
+ serial_out(up, UART_IER, up->ier);
++ if (pxa_buggy_port(up->port.type))
++ serial_pxa_irq(up->port.irq, NULL);
+ }
+ }
+
+@@ -299,6 +305,9 @@
+
+ mcr |= up->mcr;
+
++ if (pxa_buggy_port(up->port.type) && up->port.irq != 0)
++ mcr ^= UART_MCR_OUT2;
++
+ serial_out(up, UART_MCR, mcr);
+ }
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-fix-init-errorpath.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-fix-init-errorpath.patch
new file mode 100644
index 0000000000..716ef86fd1
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-fix-init-errorpath.patch
@@ -0,0 +1,20 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:10:32.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:42:23.000000000 +0100
+@@ -811,7 +811,6 @@
+ /*init the related mux interface*/
+ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
+ err("usb_ipc_init: Out of memory.");
+- usb_deregister(&usb_ipc_driver);
+ return -ENOMEM;
+ }
+ bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
+@@ -819,7 +818,6 @@
+ if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
+ err("usb_ipc_init: Not enough memory for the input buffer.");
+ kfree(bvd_ipc);
+- usb_deregister(&usb_ipc_driver);
+ return -ENOMEM;
+ }
+ bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-fix-makefile.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-fix-makefile.patch
new file mode 100644
index 0000000000..9e5ae18263
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-fix-makefile.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.23/drivers/char/Makefile
+===================================================================
+--- linux-2.6.23.orig/drivers/char/Makefile 2007-10-22 22:26:50.000000000 +0200
++++ linux-2.6.23/drivers/char/Makefile 2007-10-22 22:26:59.000000000 +0200
+@@ -111,7 +111,8 @@
+ obj-$(CONFIG_JS_RTC) += js-rtc.o
+ js-rtc-y = rtc.o
+
+-obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
++obj-$(CONFIG_TS0710_MUX_USB) += ts0710_mux_usb.o
++obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o
+
+
+ # Files generated that shall be removed upon make clean
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-fix-tty-driver.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-fix-tty-driver.patch
new file mode 100644
index 0000000000..2e1aabd952
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-fix-tty-driver.patch
@@ -0,0 +1,125 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 10:51:31.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 10:53:05.000000000 +0200
+@@ -241,7 +241,8 @@
+ static volatile __u8 mux_recv_info_flags[NR_MUXS];
+ static mux_recv_struct *mux_recv_queue = NULL;
+
+-static struct tty_driver mux_driver;
++// Local for 2.6?
++static struct tty_driver *mux_driver;
+
+ #ifdef USB_FOR_MUX
+ #define COMM_FOR_MUX_DRIVER usb_for_mux_driver
+@@ -3007,6 +3008,7 @@
+ #else
+ mux_tty[line]++;
+ dlci = tty2dlci[line];
++ mux_table[line] = tty;
+
+ /* if( dlci == 1 ) { */
+ /* Open server channel 0 first */
+@@ -3087,6 +3089,7 @@
+ }
+ }
+
++
+ retval = 0;
+ #endif
+ out:
+@@ -3894,43 +3897,50 @@
+ INIT_WORK(&receive_tqueue, receive_worker, NULL);
+ INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
+
+- memset(&mux_driver, 0, sizeof(struct tty_driver));
+- memset(&mux_tty, 0, sizeof(mux_tty));
+- mux_driver.magic = TTY_DRIVER_MAGIC;
+- mux_driver.driver_name = "ts0710mux";
+- mux_driver.name = "ts0710mux";
+- mux_driver.major = TS0710MUX_MAJOR;
+- mux_driver.minor_start = TS0710MUX_MINOR_START;
+- mux_driver.num = NR_MUXS;
+- mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
+- mux_driver.subtype = SERIAL_TYPE_NORMAL;
+- mux_driver.init_termios = tty_std_termios;
+- mux_driver.init_termios.c_iflag = 0;
+- mux_driver.init_termios.c_oflag = 0;
+- mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
+- mux_driver.init_termios.c_lflag = 0;
+- mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
+-
+- mux_driver.ttys = mux_table;
+- mux_driver.termios = mux_termios;
+- mux_driver.termios_locked = mux_termios_locked;
++ mux_driver = alloc_tty_driver(NR_MUXS);
++ if (!mux_driver)
++ return -ENOMEM;
++
++ mux_driver->owner = THIS_MODULE;
++ mux_driver->driver_name = "ts0710mux";
++ mux_driver->name = "mux";
++ mux_driver->devfs_name = "mux";
++ mux_driver->major = TS0710MUX_MAJOR;
++ mux_driver->minor_start = TS0710MUX_MINOR_START;
++ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
++ mux_driver->subtype = SERIAL_TYPE_NORMAL;
++ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++
++ mux_driver->init_termios = tty_std_termios;
++ mux_driver->init_termios.c_iflag = 0;
++ mux_driver->init_termios.c_oflag = 0;
++ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
++ mux_driver->init_termios.c_lflag = 0;
++
++// mux_driver.ttys = mux_table;
++ mux_driver->termios = mux_termios;
++ mux_driver->termios_locked = mux_termios_locked;
+ // mux_driver.driver_state = mux_state;
+- mux_driver.other = NULL;
++ mux_driver->other = NULL;
+
+- mux_driver.open = mux_open;
+- mux_driver.close = mux_close;
+- mux_driver.write = mux_write;
+- mux_driver.write_room = mux_write_room;
+- mux_driver.flush_buffer = mux_flush_buffer;
+- mux_driver.chars_in_buffer = mux_chars_in_buffer;
+- mux_driver.throttle = mux_throttle;
+- mux_driver.unthrottle = mux_unthrottle;
+- mux_driver.ioctl = mux_ioctl;
+- mux_driver.owner = THIS_MODULE;
++ mux_driver->open = mux_open;
++ mux_driver->close = mux_close;
++ mux_driver->write = mux_write;
++ mux_driver->write_room = mux_write_room;
++ mux_driver->flush_buffer = mux_flush_buffer;
++ mux_driver->chars_in_buffer = mux_chars_in_buffer;
++ mux_driver->throttle = mux_throttle;
++ mux_driver->unthrottle = mux_unthrottle;
++ mux_driver->ioctl = mux_ioctl;
+
+- if (tty_register_driver(&mux_driver))
++ // FIXME: No panic() here
++ if (tty_register_driver(mux_driver))
+ panic("Couldn't register mux driver");
+
++ for (j=0; j<NR_MUXS; j++)
++ tty_register_device(mux_driver, j, NULL);
++
++
+ COMM_MUX_DISPATCHER = mux_dispatcher;
+ COMM_MUX_SENDER = mux_sender;
+
+@@ -3964,7 +3974,10 @@
+ mux_recv_info[j] = 0;
+ }
+
+- if (tty_unregister_driver(&mux_driver))
++ for (j=0; j<NR_MUXS; j++)
++ tty_unregister_device(mux_driver, j);
++
++ if (tty_unregister_driver(mux_driver))
+ panic("Couldn't unregister mux driver");
+ }
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-fix.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-fix.patch
new file mode 100644
index 0000000000..b820762f41
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-fix.patch
@@ -0,0 +1,164 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-21 18:07:45.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-21 20:55:13.000000000 +0200
+@@ -626,7 +626,6 @@
+ }
+
+ interface = &intf->cur_altsetting->desc;
+- endpoint = &intf->cur_altsetting->endpoint[0].desc;
+ /* Start checking for two bulk endpoints or ... FIXME: This is a future
+ * enhancement...*/
+ bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
+@@ -638,30 +637,26 @@
+
+ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
+
+- bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
+- (&endpoint[0])->bEndpointAddress);
+- bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
+- (&endpoint[1])->bEndpointAddress);
+-
+ while (ep_cnt < interface->bNumEndpoints) {
+-
+- if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
+- bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
+- (&endpoint[ep_cnt])->bEndpointAddress);
+- have_bulk_in_mux =
+- (&endpoint[ep_cnt])->bEndpointAddress;
+- readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ endpoint = &intf->cur_altsetting->endpoint[ep_cnt].desc;
++ bvd_dbg("usb_ipc_probe: endpoint[%i] is: %x", ep_cnt,
++ endpoint->bEndpointAddress);
++
++ if (!have_bulk_in_mux && IS_EP_BULK_IN(*endpoint)) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is: %x ",
++ endpoint->bEndpointAddress);
++ have_bulk_in_mux = endpoint->bEndpointAddress;
++ readsize = endpoint->wMaxPacketSize;
+ bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
+ ep_cnt++;
+ continue;
+ }
+
+- if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
+- bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
+- (&endpoint[ep_cnt])->bEndpointAddress);
+- have_bulk_out_mux =
+- (&endpoint[ep_cnt])->bEndpointAddress;
+- writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ if (!have_bulk_out_mux && IS_EP_BULK_OUT(*endpoint)) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is: %x ",
++ endpoint->bEndpointAddress);
++ have_bulk_out_mux = endpoint->bEndpointAddress;
++ writesize = endpoint->wMaxPacketSize;
+ bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
+ ep_cnt++;
+ continue;
+@@ -718,21 +713,27 @@
+ bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
+ bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
+
++ bvd_dbg("after assignements");
+ /*Build a write urb*/
++ usb_init_urb(&bvd_ipc->writeurb_mux);
+ usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
+ usb_sndbulkpipe(bvd_ipc->ipc_dev,
+ bvd_ipc->bulk_out_ep_mux),
+ bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
+ bvd_ipc);
+ //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++ bvd_dbg("after write urb");
+
+ /*Build a read urb and send a IN token first time*/
++ usb_init_urb(&bvd_ipc->readurb_mux);
+ usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
+ usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
+ bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
+ //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++ bvd_dbg("after read urb");
+
+- usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ //usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ bvd_dbg("after claim interface");
+ //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
+
+ // a2590c: dsplog is not supported by this driver
+@@ -740,6 +741,8 @@
+ // &ipccfg->interface[2], bvd_ipc);
+ /*send a IN token first time*/
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ bvd_dbg("after assignement");
++
+ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
+ printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
+
+@@ -750,7 +753,7 @@
+ tasklet_schedule(&bvd_ipc->bh);
+ }
+
+- printk("usb_ipc_probe: completed probe!");
++ printk("usb_ipc_probe: completed probe!\n");
+ usb_set_intfdata(intf, &bvd_ipc);
+ return 0;
+ }
+@@ -760,21 +763,23 @@
+ //struct usb_device *usbdev = interface_to_usbdev(intf);
+ struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
+
+- printk("usb_ipc_disconnect:*** \n");
+
++ printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
++
++ //FIXME: Memory leak?
+ if ((UHCRHPS3 & 0x4) == 0)
+- usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
++ // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
+
+- usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
++ //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
+
+ bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
+ kfree(bvd_ipc_disconnect->ibuf);
+ kfree(bvd_ipc_disconnect->obuf);
+
+- usb_driver_release_interface(&usb_ipc_driver,
+- bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
+- usb_driver_release_interface(&usb_ipc_driver,
+- bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
++ //usb_driver_release_interface(&usb_ipc_driver,
++ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
++ //usb_driver_release_interface(&usb_ipc_driver,
++ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
+
+ //a2590c: dsplog interface is not supported by this driver
+ //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
+@@ -803,13 +808,6 @@
+ int result;
+
+ bvd_dbg("init usb_ipc");
+- /* register driver at the USB subsystem */
+- result = usb_register(&usb_ipc_driver);
+- if (result < 0) {
+- err ("usb ipc driver could not be registered");
+- return result;
+- }
+-
+ /*init the related mux interface*/
+ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
+ err("usb_ipc_init: Out of memory.");
+@@ -836,6 +834,14 @@
+ usb_for_mux_driver = &ipcusb_tty_driver;
+ usb_for_mux_tty = &ipcusb_tty;
+
++ /* register driver at the USB subsystem */
++ // this was called before bvd_ipc was allocated
++ result = usb_register(&usb_ipc_driver);
++ if (result < 0) {
++ err ("usb ipc driver could not be registered");
++ return result;
++ }
++
+ /* init timers for ipcusb read process and usb suspend */
+ init_timer(&ipcusb_timer);
+ ipcusb_timer.function = ipcusb_timeout;
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-ifdef-ezx-features.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-ifdef-ezx-features.patch
new file mode 100644
index 0000000000..a3a6a8249a
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-ifdef-ezx-features.patch
@@ -0,0 +1,99 @@
+Index: linux-2.6.21/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.21.orig/drivers/char/ts0710_mux_usb.c 2007-09-28 23:37:33.000000000 +0200
++++ linux-2.6.21/drivers/char/ts0710_mux_usb.c 2007-09-28 23:37:45.000000000 +0200
+@@ -35,10 +35,14 @@
+ #include <linux/list.h>
+ #include <linux/errno.h>
+ #include <asm/uaccess.h>
++
++#ifdef CONFIG_PXA_EZX
+ #include <asm/hardware.h>
+ #include <asm/arch/hardware.h>
+ #include <asm/arch-pxa/pxa-regs.h>
+ #include <asm/arch-pxa/ezx.h>
++#endif
++
+ #include <linux/slab.h>
+ #include <linux/miscdevice.h>
+ #include <linux/init.h>
+@@ -341,8 +345,10 @@
+
+ static void wakeup_timeout(unsigned long data)
+ {
++#ifdef CONFIG_PXA_EZX
+ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
+ bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
++#endif
+ }
+
+ static void suspend_timeout(unsigned long data)
+@@ -353,10 +359,12 @@
+ bvd_dbg("suspend_timeout: add the suspend timer again");
+ } else {
+ unlink_urbs(&bvd_ipc->readurb_mux);
++#ifdef CONFIG_PXA_EZX
+ UHCRHPS3 = 0x4;
+ mdelay(40);
+ bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
+ UHCRHPS3);
++#endif
+ }
+ }
+
+@@ -404,6 +412,7 @@
+ bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
+ bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
+
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0x4) {
+ static int ret;
+ int time = 0;
+@@ -442,6 +451,7 @@
+ "failed! status=%d\n", ret);
+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
+ }
++#endif
+
+ sumbit_times++;
+ bvd_ipc->write_finished_flag = 0;
+@@ -464,12 +474,16 @@
+
+ static void usbipc_bh_bp_func(unsigned long param)
+ {
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0x4) {
+ UHCRHPS3 = 0x8;
++#endif
+ mdelay(40);
++#ifdef CONFIG_PXA_EZX
+ bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
+ "UHCRHPS3=0x%x", UHCRHPS3);
+ }
++#endif
+ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
+ //get_halted_bit();
+
+@@ -735,7 +749,9 @@
+ printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
+
+ //FIXME: Memory leak?
++#ifdef CONFIG_PXA_EZX
+ if ((UHCRHPS3 & 0x4) == 0)
++#endif
+ // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
+
+ //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
+Index: linux-2.6.21/drivers/char/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/char/Kconfig 2007-09-29 10:52:18.000000000 +0200
++++ linux-2.6.21/drivers/char/Kconfig 2007-09-29 10:52:30.000000000 +0200
+@@ -1073,7 +1073,7 @@
+
+ config TS0710_MUX
+ tristate "GSM TS 07.10 Multiplex driver"
+- depends on EZX_BP
++ depends on EZX_BP || X86
+ help
+ This implements the GSM 07.10 multiplex.
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-linux-2.6.21-fix.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-linux-2.6.21-fix.patch
new file mode 100644
index 0000000000..8d5299e3bd
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-linux-2.6.21-fix.patch
@@ -0,0 +1,297 @@
+Index: linux-2.6.21/drivers/char/ts0710.h
+===================================================================
+--- linux-2.6.21.orig/drivers/char/ts0710.h 2007-04-27 20:35:44.000000000 -0300
++++ linux-2.6.21/drivers/char/ts0710.h 2007-04-27 20:36:03.000000000 -0300
+@@ -45,7 +45,6 @@
+ * 11/18/2002 Modified
+ */
+
+-#include <linux/config.h>
+ #include <linux/module.h>
+
+ #include <linux/errno.h>
+@@ -58,7 +57,6 @@
+ #include <linux/major.h>
+ #include <linux/mm.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+Index: linux-2.6.21/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.21.orig/drivers/char/ts0710_mux.c 2007-04-27 20:35:44.000000000 -0300
++++ linux-2.6.21/drivers/char/ts0710_mux.c 2007-04-27 20:36:03.000000000 -0300
+@@ -46,7 +46,6 @@
+ * 11/18/2002 Second version
+ * 04/21/2004 Add GPRS PROC
+ */
+-#include <linux/config.h>
+ #include <linux/module.h>
+ #include <linux/types.h>
+
+@@ -70,15 +69,12 @@
+ #include <linux/mm.h>
+ #include <linux/slab.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
+-//#include <syslog.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+ #include <asm/bitops.h>
+
+ #ifdef USB_FOR_MUX
+-//#include <linux/usb.h>
+ #include "ts0710_mux_usb.h"
+ #endif
+
+@@ -268,8 +264,8 @@
+ static struct work_struct post_recv_tqueue;
+
+ static struct tty_struct *mux_table[NR_MUXS];
+-static struct termios *mux_termios[NR_MUXS];
+-static struct termios *mux_termios_locked[NR_MUXS];
++static struct ktermios *mux_termios[NR_MUXS];
++static struct ktermios *mux_termios_locked[NR_MUXS];
+ static volatile short int mux_tty[NR_MUXS];
+
+ #ifdef min
+@@ -1894,11 +1890,7 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ queue_data = 1;
+ } else {
+- if (test_bit
+- (TTY_DONT_FLIP, &tty->flags)) {
+- queue_data = 1;
+- post_recv = 1;
+- } else if (recv_info->total) {
++ if (recv_info->total) {
+ queue_data = 1;
+ post_recv = 1;
+ } else if (recv_room < uih_len) {
+@@ -3149,10 +3141,10 @@
+
+ /*For BP UART problem End*/
+
+-static void receive_worker(void *private_)
++static void receive_worker(struct work_struct *work)
+ {
+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
+- int i, count, tbuf_free, tbuf_read;
++ int count, tbuf_free, tbuf_read;
+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
+ static unsigned char *tbuf_ptr = &tbuf[0];
+ static unsigned char *start_flag = 0;
+@@ -3168,7 +3160,7 @@
+ __u32 uih_len;
+ /*For BP UART problem End */
+
+- UNUSED_PARAM(private_);
++ UNUSED_PARAM(work);
+
+ if (!tty)
+ return;
+@@ -3440,7 +3432,7 @@
+ clear_bit(RECV_RUNNING, &mux_recv_flags);
+ }
+
+-static void post_recv_worker(void *private_)
++static void post_recv_worker(struct work_struct *work)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ int tty_idx;
+@@ -3453,7 +3445,7 @@
+ mux_recv_packet *recv_packet, *recv_packet2;
+ __u8 j;
+
+- UNUSED_PARAM(private_);
++ UNUSED_PARAM(work);
+
+ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
+ schedule_work(&post_recv_tqueue);
+@@ -3499,10 +3491,6 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+- } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
+- post_recv = 1;
+- add_post_recv_queue(&post_recv_q, recv_info);
+- continue;
+ }
+
+ flow_control = 0;
+@@ -3635,7 +3623,7 @@
+ }
+ }
+
+-static void send_worker(void *private_)
++static void send_worker(struct work_struct *work)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ __u8 j;
+@@ -3644,7 +3632,7 @@
+ struct tty_struct *tty;
+ __u8 dlci;
+
+- UNUSED_PARAM(private_);
++ UNUSED_PARAM(work);
+
+ TS0710_DEBUG("Enter into send_worker");
+
+@@ -3819,7 +3807,8 @@
+ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes =
+ get_count(TS0710MUX_GPRS2_SEND_COUNT_IDX);
+
+- copy_to_user(buf, gprsData, bufLen);
++ if(copy_to_user(buf, gprsData, bufLen))
++ return -EFAULT;
+
+ return bufLen;
+ }
+@@ -3836,7 +3825,8 @@
+
+ memset(gprsData, 0, bufLen);
+
+- copy_from_user(gprsData, buf, bufLen);
++ if(copy_from_user(gprsData, buf, bufLen))
++ return -EFAULT;
+
+ set_count(TS0710MUX_GPRS1_RECV_COUNT_IDX, gprsData[0].recvBytes);
+ set_count(TS0710MUX_GPRS1_SEND_COUNT_IDX, gprsData[0].sentBytes);
+@@ -3893,9 +3883,9 @@
+ }
+ post_recv_count_flag = 0;
+
+- INIT_WORK(&send_tqueue, send_worker, NULL);
+- INIT_WORK(&receive_tqueue, receive_worker, NULL);
+- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++ INIT_WORK(&send_tqueue, send_worker);
++ INIT_WORK(&receive_tqueue, receive_worker);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker);
+
+ mux_driver = alloc_tty_driver(NR_MUXS);
+ if (!mux_driver)
+@@ -3904,12 +3894,11 @@
+ mux_driver->owner = THIS_MODULE;
+ mux_driver->driver_name = "ts0710mux";
+ mux_driver->name = "mux";
+- mux_driver->devfs_name = "mux";
+ mux_driver->major = TS0710MUX_MAJOR;
+ mux_driver->minor_start = TS0710MUX_MINOR_START;
+ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
+ mux_driver->subtype = SERIAL_TYPE_NORMAL;
+- mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
+
+ mux_driver->init_termios = tty_std_termios;
+ mux_driver->init_termios.c_iflag = 0;
+@@ -3917,10 +3906,10 @@
+ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
+ mux_driver->init_termios.c_lflag = 0;
+
+-// mux_driver.ttys = mux_table;
++ //mux_driver.ttys = mux_table;
+ mux_driver->termios = mux_termios;
+ mux_driver->termios_locked = mux_termios_locked;
+-// mux_driver.driver_state = mux_state;
++ //mux_driver.driver_state = mux_state;
+ mux_driver->other = NULL;
+
+ mux_driver->open = mux_open;
+Index: linux-2.6.21/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.21.orig/drivers/char/ts0710_mux_usb.c 2007-04-27 20:35:44.000000000 -0300
++++ linux-2.6.21/drivers/char/ts0710_mux_usb.c 2007-04-27 22:34:31.000000000 -0300
+@@ -188,7 +188,8 @@
+ buf_list_t *inbuf;
+ int count = urb->actual_length;
+
+- inbuf = kmalloc(sizeof(buf_list_t), GFP_KERNEL);
++ // we are called from interrupt context.
++ inbuf = kmalloc(sizeof(buf_list_t), GFP_ATOMIC);
+ if (!inbuf) {
+ printk("append_to_inbuf_list: (%d) out of memory!\n",
+ sizeof(buf_list_t));
+@@ -196,7 +197,7 @@
+ }
+
+ inbuf->size = count;
+- inbuf->body = kmalloc(sizeof(char)*count, GFP_KERNEL);
++ inbuf->body = kmalloc(sizeof(char)*count, GFP_ATOMIC);
+ if (!inbuf->body) {
+ kfree(inbuf);
+ printk("append_to_inbuf_list: (%d) out of memory!\n",
+@@ -222,7 +223,7 @@
+ inbuf = list_entry(ptr, buf_list_t, list);
+ src_count = inbuf->size;
+ if (dst_count >= src_count) {
+- memcpy(buf, inbuf->body, src_count);
++ memcpy((unsigned char *)buf, inbuf->body, src_count);
+ ret = src_count;
+ list_del(ptr);
+ kfree(inbuf->body);
+@@ -282,9 +283,8 @@
+ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
+-static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_read_bulk(struct urb *urb)
+ {
+- buf_list_t *inbuf;
+ int count = urb->actual_length;
+ struct tty_struct *tty = &ipcusb_tty;
+
+@@ -319,7 +319,7 @@
+ bvd_dbg("usb_ipc_read_bulk: completed!!!");
+ }
+
+-static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_write_bulk(struct urb *urb)
+ {
+ callback_times++;
+ bvd_ipc->write_finished_flag = 1;
+@@ -437,7 +437,7 @@
+ /*send IN token*/
+ bvd_ipc->readurb_mux.actual_length = 0;
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
+- if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ if ((ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)))
+ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
+ "failed! status=%d\n", ret);
+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
+@@ -447,7 +447,7 @@
+ bvd_ipc->write_finished_flag = 0;
+ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
+ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
+- if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
++ if ((result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC)))
+ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
+
+ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
+@@ -498,7 +498,7 @@
+ return 0;
+
+ if (*ipcusb_ap_to_bp != NULL)
+- (*ipcusb_ap_to_bp)(buf, count);
++ (*ipcusb_ap_to_bp)((unsigned char *)buf, count);
+
+ bvd_ipc->suspend_flag = 1;
+
+@@ -602,6 +602,7 @@
+ }
+
+ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
++ readsize = writesize = 0;
+
+ while (ep_cnt < interface->bNumEndpoints) {
+ endpoint = &intf->cur_altsetting->endpoint[ep_cnt].desc;
+@@ -792,6 +793,8 @@
+ bvd_ipc->ipc_dev = NULL;
+ bvd_ipc->xmit.head = bvd_ipc->xmit.tail = 0;
+ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++ spin_lock_init(&bvd_ipc->lock);
++ spin_lock_init(&bvd_ipc->in_buf_lock);
+
+ ipcusb_tty_driver.write = usb_ipc_write;
+ ipcusb_tty_driver.chars_in_buffer = usb_ipc_chars_in_buffer;
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-remove-flipbuffers.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-remove-flipbuffers.patch
new file mode 100644
index 0000000000..d4781f9fc7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-remove-flipbuffers.patch
@@ -0,0 +1,269 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:25.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:26.000000000 +0100
+@@ -133,6 +133,7 @@
+
+ struct circ_buf xmit; /* write cric bufffer */
+ struct list_head in_buf_list;
++ spinlock_t in_buf_lock;
+ char bulk_in_ep_mux,
+ bulk_out_ep_mux,
+ bulk_in_ep_dsplog;
+@@ -204,9 +205,39 @@
+ return;
+ }
+ memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
++ spin_lock(&bvd_ipc->in_buf_lock);
+ list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
++ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
++int get_from_inbuf_list(const unsigned char *buf, int dst_count)
++{
++ int ret = 0;
++ spin_lock(&bvd_ipc->in_buf_lock);
++ if (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int src_count;
++ buf_list_t *inbuf;
++ struct list_head *ptr;
++
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry(ptr, buf_list_t, list);
++ src_count = inbuf->size;
++ if (dst_count >= src_count) {
++ memcpy(buf, inbuf->body, src_count);
++ ret = src_count;
++ list_del(ptr);
++ kfree(inbuf->body);
++ kfree(inbuf);
++ } else {
++ bvd_dbg("get_from_inbuf_list: not enough space in destination buffer");
++ }
++ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
++
++ return ret;
++}
++EXPORT_SYMBOL(get_from_inbuf_list);
++
+ static void ipcusb_timeout(unsigned long data)
+ {
+ struct tty_struct *tty = &ipcusb_tty;
+@@ -214,13 +245,14 @@
+
+ bvd_dbg("ipcusb_timeout***");
+
++ spin_lock(&bvd_ipc->in_buf_lock);
+ while (!(list_empty(&bvd_ipc->in_buf_list))) {
+ int count;
+ buf_list_t *inbuf;
+ struct list_head *ptr = NULL;
+
+ ptr = bvd_ipc->in_buf_list.next;
+- inbuf = list_entry (ptr, buf_list_t, list);
++ inbuf = list_entry(ptr, buf_list_t, list);
+ count = inbuf->size;
+ if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
+ list_del(ptr);
+@@ -232,10 +264,12 @@
+ break;
+ }
+ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
+
+ if (usb_mux_dispatcher)
+ usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
+
++ spin_lock(&bvd_ipc->in_buf_lock);
+ if (list_empty(&bvd_ipc->in_buf_list)) {
+ urb->actual_length = 0;
+ urb->dev = bvd_ipc->ipc_dev;
+@@ -246,6 +280,7 @@
+ ipcusb_timer.data = (unsigned long)urb;
+ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+ }
++ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
+ static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
+@@ -266,69 +301,11 @@
+ if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
+ (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
+
+- if (!(list_empty(&bvd_ipc->in_buf_list))) {
+- int need_mux = 0;
+-
+- bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
+- if (count > 0) {
+- bvd_ipc->suspend_flag = 1;
+- append_to_inbuf_list(urb); /* append the current received urb */
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+- }
+-
+- while (!(list_empty(&bvd_ipc->in_buf_list))) {
+- struct list_head* ptr = NULL;
+- ptr = bvd_ipc->in_buf_list.next;
+- inbuf = list_entry(ptr, buf_list_t, list);
+- count = inbuf->size;
+- need_mux = 1;
+-
+- tty_insert_flip_string(tty, inbuf->body, count);
+-
+- list_del(ptr);
+- kfree(inbuf->body);
+- inbuf->body = NULL;
+- kfree(inbuf);
+- }
+-
+- if (usb_mux_dispatcher && need_mux)
+- usb_mux_dispatcher(tty); /* call Liu changhui's func. */
+-
+- if (list_empty(&bvd_ipc->in_buf_list)) {
+- urb->actual_length = 0;
+- urb->dev = bvd_ipc->ipc_dev;
+- if (usb_submit_urb(urb, GFP_ATOMIC))
+- bvd_dbg("usb_ipc_read_bulk: "
+- "failed resubmitting read urb");
+- bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
+- } else {
+- ipcusb_timer.data = (unsigned long)urb;
+- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+- }
+- } else if (count > 0) {
+- bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
++ if (count > 0) {
++ bvd_dbg("usb_ipc_read_bulk: inserting buffer into in_buf_list");
+ bvd_ipc->suspend_flag = 1;
+
+- if (tty_insert_flip_string(tty, urb->transfer_buffer,
+- count) < count) {
+- bvd_ipc->suspend_flag = 1;
+- append_to_inbuf_list(urb);
+- ipcusb_timer.data = (unsigned long)urb;
+- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+- }
++ append_to_inbuf_list(urb);
+
+ if (usb_mux_dispatcher)
+ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
+@@ -337,13 +314,6 @@
+ urb->dev = bvd_ipc->ipc_dev;
+ if (usb_submit_urb(urb, GFP_ATOMIC))
+ bvd_dbg("failed resubmitting read urb");
+-#if 0
+- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
+- {
+- last_jiff = jiffies;
+- queue_apm_event(KRNL_ICL, NULL);
+- }
+-#endif
+ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
+ }
+
+@@ -705,7 +675,8 @@
+ bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
+ bvd_ipc->ipc_dev = usbdev;
+ bvd_ipc->writesize = writesize;
+- INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
++ INIT_LIST_HEAD(&bvd_ipc->in_buf_list);
++ bvd_ipc->in_buf_lock = SPIN_LOCK_UNLOCKED;
+
+ bvd_ipc->bh.func = usbipc_bh_func;
+ bvd_ipc->bh.data = (unsigned long) bvd_ipc;
+Index: linux-2.6.16/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux.c 2007-01-17 00:52:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux.c 2007-01-17 00:52:26.000000000 +0100
+@@ -3149,7 +3149,7 @@
+ static void receive_worker(void *private_)
+ {
+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
+- int i, count;
++ int i, count, tbuf_free, tbuf_read;
+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
+ static unsigned char *tbuf_ptr = &tbuf[0];
+ static unsigned char *start_flag = 0;
+@@ -3167,29 +3167,39 @@
+
+ UNUSED_PARAM(private_);
+
+- if (!tty)
+- return;
++ if (!tty)
++ return;
++
++ while (1) {
++ tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
++ TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
++ tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
++ if (tbuf_read == 0) {
++ break;
++ } else {
++ TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
++ };
++ tbuf_ptr += tbuf_read;
++ };
++
++ count = (tbuf_ptr - tbuf);
++
++ // Should be impossible?
++ //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
++ // TS0710_PRINTK
++ // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
++ // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
++ //}
+
+ #ifdef USB_FOR_MUX
+- TS0710_DEBUG("Receive following bytes from IPC-USB");
++ TS0710_DEBUG("Received following bytes from IPC-USB");
+ #else
+- TS0710_DEBUG("Receive following bytes from UART");
++ TS0710_DEBUG("Received following bytes from UART");
+ #endif
+-
+- TS0710_DEBUGHEX(cp, count);
+-
+- if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
+- TS0710_PRINTK
+- ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
+- count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
+- }
+-
+- count = tty_buffer_request_room(tty, count);
+-
+- for (i = 0; i < count; i++)
+- tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
+-
+- tbuf_ptr += count;
++ TS0710_DEBUGHEX(tbuf, count);
++
++ //gets updated above
++ //tbuf_ptr += count;
+ search = &tbuf[0];
+
+ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.h
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:26.000000000 +0100
+@@ -27,3 +27,6 @@
+ extern struct tty_struct *usb_for_mux_tty;
+ extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
+ extern void (*usb_mux_sender)(void);
++
++extern int get_from_inbuf_list(const unsigned char *buf, int dst_count);
++
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-remove-get_halted_bit.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-remove-get_halted_bit.patch
new file mode 100644
index 0000000000..0ebe27d03b
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-remove-get_halted_bit.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:21.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:31.000000000 +0100
+@@ -461,7 +461,7 @@
+ ipcusb_xmit_data();
+ }
+
+-extern void get_halted_bit(void);
++//extern void get_halted_bit(void);
+
+ static void usbipc_bh_bp_func(unsigned long param)
+ {
+@@ -472,7 +472,7 @@
+ "UHCRHPS3=0x%x", UHCRHPS3);
+ }
+ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
+- get_halted_bit();
++ //get_halted_bit();
+
+ /*send a IN token*/
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux-remove-usbh_finished_resume.patch b/packages/linux/linux-ezx-2.6.24/patches/mux-remove-usbh_finished_resume.patch
new file mode 100644
index 0000000000..c415ded428
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux-remove-usbh_finished_resume.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:23.000000000 +0100
++++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:37.000000000 +0100
+@@ -97,7 +97,6 @@
+ static int sumbit_times = 0;
+ static int callback_times = 0;
+ //static unsigned long last_jiff = 0;
+-extern int usbh_finished_resume;
+ /*end global values defined*/
+
+ MODULE_AUTHOR(DRIVER_AUTHOR);
+@@ -546,9 +545,6 @@
+ void usb_send_readurb(void)
+ {
+ //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
+-
+- if (usbh_finished_resume == 0)
+- return;
+
+ tasklet_schedule(&bvd_ipc->bh_bp);
+ }
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux_cli.patch b/packages/linux/linux-ezx-2.6.24/patches/mux_cli.patch
new file mode 100644
index 0000000000..3e8e3e2604
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux_cli.patch
@@ -0,0 +1,5396 @@
+Index: linux-2.6.24/drivers/char/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/char/Kconfig
++++ linux-2.6.24/drivers/char/Kconfig
+@@ -1040,5 +1040,18 @@
+
+ source "drivers/s390/char/Kconfig"
+
++config TS0710_MUX
++ tristate "GSM TS 07.10 Multiplex driver"
++ depends on EZX_BP
++ help
++ This implements the GSM 07.10 multiplex.
++
++config TS0710_MUX_USB
++ tristate "Motorola USB support for TS 07.10 Multiplex driver"
++ depends on TS0710_MUX
++ help
++ This ads support for TS 07.10 over USB, as found in motorola
++ Smartphones.
++
+ endmenu
+
+Index: linux-2.6.24/drivers/char/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/char/Makefile
++++ linux-2.6.24/drivers/char/Makefile
+@@ -111,6 +111,9 @@
+ obj-$(CONFIG_JS_RTC) += js-rtc.o
+ js-rtc-y = rtc.o
+
++obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
++
++
+ # Files generated that shall be removed upon make clean
+ clean-files := consolemap_deftbl.c defkeymap.c
+
+Index: linux-2.6.24/drivers/char/ts0710.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/char/ts0710.h
+@@ -0,0 +1,368 @@
++/*
++ * File: ts0710.h
++ *
++ * Portions derived from rfcomm.c, original header as follows:
++ *
++ * Copyright (C) 2000, 2001 Axis Communications AB
++ *
++ * Author: Mats Friden <mats.friden@axis.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 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.
++ *
++ * Exceptionally, Axis Communications AB grants discretionary and
++ * conditional permissions for additional use of the text contained
++ * in the company's release of the AXIS OpenBT Stack under the
++ * provisions set forth hereunder.
++ *
++ * Provided that, if you use the AXIS OpenBT Stack with other files,
++ * that do not implement functionality as specified in the Bluetooth
++ * System specification, to produce an executable, this does not by
++ * itself cause the resulting executable to be covered by the GNU
++ * General Public License. Your use of that executable is in no way
++ * restricted on account of using the AXIS OpenBT Stack code with it.
++ *
++ * This exception does not however invalidate any other reasons why
++ * the executable file might be covered by the provisions of the GNU
++ * General Public License.
++ *
++ */
++/*
++ * Copyright (C) 2002 Motorola
++ *
++ * 07/28/2002 Initial version based on rfcomm.c
++ * 11/18/2002 Modified
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++
++#include <linux/errno.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/tty.h>
++#include <linux/tty_flip.h>
++#include <linux/fcntl.h>
++#include <linux/string.h>
++#include <linux/major.h>
++#include <linux/mm.h>
++#include <linux/init.h>
++#include <linux/devfs_fs_kernel.h>
++
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/bitops.h>
++
++#include <asm/byteorder.h>
++#include <asm/types.h>
++
++#define TS0710_MAX_CHN 14
++
++#define SET_PF(ctr) ((ctr) | (1 << 4))
++#define CLR_PF(ctr) ((ctr) & 0xef)
++#define GET_PF(ctr) (((ctr) >> 4) & 0x1)
++
++#define GET_PN_MSG_FRAME_SIZE(pn) ( ((pn)->frame_sizeh << 8) | ((pn)->frame_sizel))
++#define SET_PN_MSG_FRAME_SIZE(pn, size) ({ (pn)->frame_sizel = (size) & 0xff; \
++ (pn)->frame_sizeh = (size) >> 8; })
++
++#define GET_LONG_LENGTH(a) ( ((a).h_len << 7) | ((a).l_len) )
++#define SET_LONG_LENGTH(a, length) ({ (a).ea = 0; \
++ (a).l_len = length & 0x7F; \
++ (a).h_len = (length >> 7) & 0xFF; })
++
++#define SHORT_CRC_CHECK 3
++#define LONG_CRC_CHECK 4
++
++/* FIXME: Should thsi one be define here? */
++#define SHORT_PAYLOAD_SIZE 127
++
++#define EA 1
++#define FCS_SIZE 1
++#define FLAG_SIZE 2
++
++#define TS0710_MAX_HDR_SIZE 5
++#define DEF_TS0710_MTU 256
++
++#define TS0710_BASIC_FLAG 0xF9
++/* the control field */
++#define SABM 0x2f
++#define SABM_SIZE 4
++#define UA 0x63
++#define UA_SIZE 4
++#define DM 0x0f
++#define DISC 0x43
++#define UIH 0xef
++
++/* the type field in a multiplexer command packet */
++#define TEST 0x8
++#define FCON 0x28
++#define FCOFF 0x18
++#define MSC 0x38
++#define RPN 0x24
++#define RLS 0x14
++#define PN 0x20
++#define NSC 0x4
++
++/* V.24 modem control signals */
++#define FC 0x2
++#define RTC 0x4
++#define RTR 0x8
++#define IC 0x40
++#define DV 0x80
++
++#define CTRL_CHAN 0 /* The control channel is defined as DLCI 0 */
++#define MCC_CMD 1 /* Multiplexer command cr */
++#define MCC_RSP 0 /* Multiplexer response cr */
++
++#ifdef __LITTLE_ENDIAN_BITFIELD
++
++typedef struct {
++ __u8 ea:1;
++ __u8 cr:1;
++ __u8 d:1;
++ __u8 server_chn:5;
++} __attribute__ ((packed)) address_field;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 len:7;
++} __attribute__ ((packed)) short_length;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 l_len:7;
++ __u8 h_len;
++} __attribute__ ((packed)) long_length;
++
++typedef struct {
++ address_field addr;
++ __u8 control;
++ short_length length;
++} __attribute__ ((packed)) short_frame_head;
++
++typedef struct {
++ short_frame_head h;
++ __u8 data[0];
++} __attribute__ ((packed)) short_frame;
++
++typedef struct {
++ address_field addr;
++ __u8 control;
++ long_length length;
++ __u8 data[0];
++} __attribute__ ((packed)) long_frame_head;
++
++typedef struct {
++ long_frame_head h;
++ __u8 data[0];
++} __attribute__ ((packed)) long_frame;
++
++/* Typedefinitions for structures used for the multiplexer commands */
++typedef struct {
++ __u8 ea:1;
++ __u8 cr:1;
++ __u8 type:6;
++} __attribute__ ((packed)) mcc_type;
++
++typedef struct {
++ mcc_type type;
++ short_length length;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_short_frame_head;
++
++typedef struct {
++ mcc_short_frame_head h;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_short_frame;
++
++typedef struct {
++ mcc_type type;
++ long_length length;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_long_frame_head;
++
++typedef struct {
++ mcc_long_frame_head h;
++ __u8 value[0];
++} __attribute__ ((packed)) mcc_long_frame;
++
++/* MSC-command */
++typedef struct {
++ __u8 ea:1;
++ __u8 fc:1;
++ __u8 rtc:1;
++ __u8 rtr:1;
++ __u8 reserved:2;
++ __u8 ic:1;
++ __u8 dv:1;
++} __attribute__ ((packed)) v24_sigs;
++
++typedef struct {
++ __u8 ea:1;
++ __u8 b1:1;
++ __u8 b2:1;
++ __u8 b3:1;
++ __u8 len:4;
++} __attribute__ ((packed)) brk_sigs;
++
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ __u8 v24_sigs;
++ //brk_sigs break_signals;
++ __u8 fcs;
++} __attribute__ ((packed)) msc_msg;
++
++#if 0
++/* conflict with termios.h */
++/* RPN command */
++#define B2400 0
++#define B4800 1
++#define B7200 2
++#define B9600 3
++#define B19200 4
++#define B38400 5
++#define B57600 6
++#define B115200 7
++#define D230400 8
++#endif
++
++/*
++typedef struct{
++ __u8 bit_rate:1;
++ __u8 data_bits:1;
++ __u8 stop_bit:1;
++ __u8 parity:1;
++ __u8 parity_type:1;
++ __u8 xon_u8:1;
++ __u8 xoff_u8:1;
++ __u8 res1:1;
++ __u8 xon_input:1;
++ __u8 xon_output:1;
++ __u8 rtr_input:1;
++ __u8 rtr_output:1;
++ __u8 rtc_input:1;
++ __u8 rtc_output:1;
++ __u8 res2:2;
++} __attribute__((packed)) parameter_mask;
++
++typedef struct{
++ __u8 bit_rate;
++ __u8 data_bits:2;
++ __u8 stop_bit:1;
++ __u8 parity:1;
++ __u8 parity_type:2;
++ __u8 res1:2;
++ __u8 xon_input:1;
++ __u8 xon_output:1;
++ __u8 rtr_input:1;
++ __u8 rtr_output:1;
++ __u8 rtc_input:1;
++ __u8 rtc_output:1;
++ __u8 res2:2;
++ __u8 xon_u8;
++ __u8 xoff_u8;
++ parameter_mask pm;
++} __attribute__((packed)) rpn_values;
++
++typedef struct{
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ rpn_values rpn_val;
++ __u8 fcs;
++} __attribute__((packed)) rpn_msg;
++*/
++
++/* RLS-command */
++/*
++typedef struct{
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ address_field dlci;
++ __u8 error:4;
++ __u8 res:4;
++ __u8 fcs;
++} __attribute__((packed)) rls_msg;
++*/
++
++/* PN-command */
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ __u8 dlci:6;
++ __u8 res1:2;
++ __u8 frame_type:4;
++ __u8 credit_flow:4;
++ __u8 prior:6;
++ __u8 res2:2;
++ __u8 ack_timer;
++ __u8 frame_sizel;
++ __u8 frame_sizeh;
++ __u8 max_nbrof_retrans;
++ __u8 credits;
++ __u8 fcs;
++} __attribute__ ((packed)) pn_msg;
++
++/* NSC-command */
++typedef struct {
++ short_frame_head s_head;
++ mcc_short_frame_head mcc_s_head;
++ mcc_type command_type;
++ __u8 fcs;
++} __attribute__ ((packed)) nsc_msg;
++
++#else
++#error Only littel-endianess supported now!
++#endif
++
++enum {
++ REJECTED = 0,
++ DISCONNECTED,
++ CONNECTING,
++ NEGOTIATING,
++ CONNECTED,
++ DISCONNECTING,
++ FLOW_STOPPED
++};
++
++enum ts0710_events {
++ CONNECT_IND,
++ CONNECT_CFM,
++ DISCONN_CFM
++};
++
++typedef struct {
++ volatile __u8 state;
++ volatile __u8 flow_control;
++ volatile __u8 initiated;
++ volatile __u8 initiator;
++ volatile __u16 mtu;
++ wait_queue_head_t open_wait;
++ wait_queue_head_t close_wait;
++} dlci_struct;
++
++/* user space interfaces */
++typedef struct {
++ volatile __u8 initiator;
++ volatile __u8 c_dlci;
++ volatile __u16 mtu;
++ volatile __u8 be_testing;
++ volatile __u32 test_errs;
++ wait_queue_head_t test_wait;
++
++ dlci_struct dlci[TS0710_MAX_CHN];
++} ts0710_con;
+Index: linux-2.6.24/drivers/char/ts0710_mux.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/char/ts0710_mux.c
+@@ -0,0 +1,3966 @@
++/*
++ * File: mux_driver.c
++ *
++ * Portions derived from rfcomm.c, original header as follows:
++ *
++ * Copyright (C) 2000, 2001 Axis Communications AB
++ *
++ * Author: Mats Friden <mats.friden@axis.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 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.
++ *
++ * Exceptionally, Axis Communications AB grants discretionary and
++ * conditional permissions for additional use of the text contained
++ * in the company's release of the AXIS OpenBT Stack under the
++ * provisions set forth hereunder.
++ *
++ * Provided that, if you use the AXIS OpenBT Stack with other files,
++ * that do not implement functionality as specified in the Bluetooth
++ * System specification, to produce an executable, this does not by
++ * itself cause the resulting executable to be covered by the GNU
++ * General Public License. Your use of that executable is in no way
++ * restricted on account of using the AXIS OpenBT Stack code with it.
++ *
++ * This exception does not however invalidate any other reasons why
++ * the executable file might be covered by the provisions of the GNU
++ * General Public License.
++ *
++ */
++/*
++ * Copyright (C) 2002-2004 Motorola
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * 07/28/2002 Initial version
++ * 11/18/2002 Second version
++ * 04/21/2004 Add GPRS PROC
++ */
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/types.h>
++
++#include <linux/kernel.h>
++#include <linux/proc_fs.h>
++
++#define USB_FOR_MUX
++
++#ifndef USB_FOR_MUX
++#include <linux/serial.h>
++#endif
++
++#include <linux/errno.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/tty.h>
++#include <linux/tty_flip.h>
++#include <linux/fcntl.h>
++#include <linux/string.h>
++#include <linux/major.h>
++#include <linux/mm.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/devfs_fs_kernel.h>
++//#include <syslog.h>
++
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/bitops.h>
++
++#ifdef USB_FOR_MUX
++//#include <linux/usb.h>
++#include "ts0710_mux_usb.h"
++#endif
++
++#include "ts0710.h"
++#include "ts0710_mux.h"
++
++#define TS0710MUX_GPRS_SESSION_MAX 2
++#define TS0710MUX_MAJOR 250
++#define TS0710MUX_MINOR_START 0
++#define NR_MUXS 16
++
++ /*#define TS0710MUX_TIME_OUT 30 *//* 300ms */
++#define TS0710MUX_TIME_OUT 250 /* 2500ms, for BP UART hardware flow control AP UART */
++
++#define TS0710MUX_IO_DLCI_FC_ON 0x54F2
++#define TS0710MUX_IO_DLCI_FC_OFF 0x54F3
++#define TS0710MUX_IO_FC_ON 0x54F4
++#define TS0710MUX_IO_FC_OFF 0x54F5
++
++#define TS0710MUX_MAX_BUF_SIZE 2048
++
++#define TS0710MUX_SEND_BUF_OFFSET 10
++#define TS0710MUX_SEND_BUF_SIZE (DEF_TS0710_MTU + TS0710MUX_SEND_BUF_OFFSET + 34)
++#define TS0710MUX_RECV_BUF_SIZE TS0710MUX_SEND_BUF_SIZE
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++#define ACK_SPACE 66 /* 6 * 11(ACK frame size) */
++#else
++#define ACK_SPACE 42 /* 6 * 7(ACK frame size) */
++#endif
++/*For BP UART problem End*/
++
++ /*#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE)*//* For BP UART problem */
++#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + ACK_SPACE) /* For BP UART problem: ACK_SPACE */
++
++#define TS0710MUX_MAX_TOTAL_FRAME_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + FLAG_SIZE)
++#define TS0710MUX_MAX_CHARS_IN_BUF 65535
++#define TS0710MUX_THROTTLE_THRESHOLD DEF_TS0710_MTU
++
++#define TEST_PATTERN_SIZE 250
++
++#define CMDTAG 0x55
++#define DATATAG 0xAA
++
++#define ACK 0x4F /*For BP UART problem */
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++#define FIRST_BP_SEQ_OFFSET 1 /*offset from start flag */
++#define SECOND_BP_SEQ_OFFSET 2 /*offset from start flag */
++#define FIRST_AP_SEQ_OFFSET 3 /*offset from start flag */
++#define SECOND_AP_SEQ_OFFSET 4 /*offset from start flag */
++#define SLIDE_BP_SEQ_OFFSET 5 /*offset from start flag */
++#define SEQ_FIELD_SIZE 5
++#else
++#define SLIDE_BP_SEQ_OFFSET 1 /*offset from start flag */
++#define SEQ_FIELD_SIZE 1
++#endif
++
++#define ADDRESS_FIELD_OFFSET (1 + SEQ_FIELD_SIZE) /*offset from start flag */
++/*For BP UART problem End*/
++
++#ifndef UNUSED_PARAM
++#define UNUSED_PARAM(v) (void)(v)
++#endif
++
++#define TS0710MUX_GPRS1_DLCI 7
++#define TS0710MUX_GPRS2_DLCI 8
++
++#define TS0710MUX_GPRS1_RECV_COUNT_IDX 0
++#define TS0710MUX_GPRS1_SEND_COUNT_IDX 1
++#define TS0710MUX_GPRS2_RECV_COUNT_IDX 2
++#define TS0710MUX_GPRS2_SEND_COUNT_IDX 3
++#define TS0710MUX_COUNT_MAX_IDX 3
++#define TS0710MUX_COUNT_IDX_NUM (TS0710MUX_COUNT_MAX_IDX + 1)
++
++static volatile int mux_data_count[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
++static volatile int mux_data_count2[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
++static struct semaphore mux_data_count_mutex[TS0710MUX_COUNT_IDX_NUM];
++static volatile __u8 post_recv_count_flag = 0;
++
++/*PROC file*/
++struct proc_dir_entry *gprs_proc_file = NULL;
++ssize_t file_proc_read(struct file *file, char *buf, size_t size,
++ loff_t * ppos);
++ssize_t file_proc_write(struct file *file, const char *buf, size_t count,
++ loff_t * ppos);
++struct file_operations file_proc_operations = {
++ read:file_proc_read,
++ write:file_proc_write,
++};
++typedef struct {
++ int recvBytes;
++ int sentBytes;
++} gprs_bytes;
++
++static __u8 tty2dlci[NR_MUXS] =
++ { 1, 2, 3, 4, 5, 6, 7, 8, 6, 7, 8, 9, 10, 11, 12, 13 };
++static __u8 iscmdtty[NR_MUXS] =
++ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
++typedef struct {
++ __u8 cmdtty;
++ __u8 datatty;
++} dlci_tty;
++static dlci_tty dlci2tty[] = { {0, 0}, /* DLCI 0 */
++{0, 0}, /* DLCI 1 */
++{1, 1}, /* DLCI 2 */
++{2, 2}, /* DLCI 3 */
++{3, 3}, /* DLCI 4 */
++{4, 4}, /* DLCI 5 */
++{5, 8}, /* DLCI 6 */
++{6, 9}, /* DLCI 7 */
++{7, 10}, /* DLCI 8 */
++{11, 11}, /* DLCI 9 */
++{12, 12}, /* DLCI 10 */
++{13, 13}, /* DLCI 11 */
++{14, 14}, /* DLCI 12 */
++{15, 15}
++}; /* DLCI 13 */
++
++typedef struct {
++ volatile __u8 buf[TS0710MUX_SEND_BUF_SIZE];
++ volatile __u8 *frame;
++ unsigned long flags;
++ volatile __u16 length;
++ volatile __u8 filled;
++ volatile __u8 dummy; /* Allignment to 4*n bytes */
++} mux_send_struct;
++
++/* Bit number in flags of mux_send_struct */
++#define BUF_BUSY 0
++
++struct mux_recv_packet_tag {
++ __u8 *data;
++ __u32 length;
++ struct mux_recv_packet_tag *next;
++};
++typedef struct mux_recv_packet_tag mux_recv_packet;
++
++struct mux_recv_struct_tag {
++ __u8 data[TS0710MUX_RECV_BUF_SIZE];
++ __u32 length;
++ __u32 total;
++ mux_recv_packet *mux_packet;
++ struct mux_recv_struct_tag *next;
++ int no_tty;
++ volatile __u8 post_unthrottle;
++};
++typedef struct mux_recv_struct_tag mux_recv_struct;
++
++#define RECV_RUNNING 0
++static unsigned long mux_recv_flags = 0;
++
++static mux_send_struct *mux_send_info[NR_MUXS];
++static volatile __u8 mux_send_info_flags[NR_MUXS];
++static volatile __u8 mux_send_info_idx = NR_MUXS;
++
++static mux_recv_struct *mux_recv_info[NR_MUXS];
++static volatile __u8 mux_recv_info_flags[NR_MUXS];
++static mux_recv_struct *mux_recv_queue = NULL;
++
++static struct tty_driver mux_driver;
++
++#ifdef USB_FOR_MUX
++#define COMM_FOR_MUX_DRIVER usb_for_mux_driver
++#define COMM_FOR_MUX_TTY usb_for_mux_tty
++#define COMM_MUX_DISPATCHER usb_mux_dispatcher
++#define COMM_MUX_SENDER usb_mux_sender
++#else
++#define COMM_FOR_MUX_DRIVER serial_for_mux_driver
++#define COMM_FOR_MUX_TTY serial_for_mux_tty
++#define COMM_MUX_DISPATCHER serial_mux_dispatcher
++#define COMM_MUX_SENDER serial_mux_sender
++
++extern struct list_head *tq_serial_for_mux;
++#endif
++
++extern struct tty_driver *COMM_FOR_MUX_DRIVER;
++extern struct tty_struct *COMM_FOR_MUX_TTY;
++extern void (*COMM_MUX_DISPATCHER) (struct tty_struct * tty);
++extern void (*COMM_MUX_SENDER) (void);
++
++static struct work_struct send_tqueue;
++static struct work_struct receive_tqueue;
++static struct work_struct post_recv_tqueue;
++
++static struct tty_struct *mux_table[NR_MUXS];
++static struct termios *mux_termios[NR_MUXS];
++static struct termios *mux_termios_locked[NR_MUXS];
++static volatile short int mux_tty[NR_MUXS];
++
++#ifdef min
++#undef min
++#define min(a,b) ( (a)<(b) ? (a):(b) )
++#endif
++
++static int get_count(__u8 idx);
++static int set_count(__u8 idx, int count);
++static int add_count(__u8 idx, int count);
++
++static int send_ua(ts0710_con * ts0710, __u8 dlci);
++static int send_dm(ts0710_con * ts0710, __u8 dlci);
++static int send_sabm(ts0710_con * ts0710, __u8 dlci);
++static int send_disc(ts0710_con * ts0710, __u8 dlci);
++static void queue_uih(mux_send_struct * send_info, __u16 len,
++ ts0710_con * ts0710, __u8 dlci);
++static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
++ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr);
++static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr);
++static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr);
++
++static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum);
++static __u8 crc_calc(__u8 * data, __u32 length);
++static void create_crctable(__u8 table[]);
++
++static void mux_sched_send(void);
++
++static __u8 crctable[256];
++
++static ts0710_con ts0710_connection;
++/*
++static rpn_values rpn_val;
++*/
++
++static int valid_dlci(__u8 dlci)
++{
++ if ((dlci < TS0710_MAX_CHN) && (dlci > 0))
++ return 1;
++ else
++ return 0;
++}
++
++#ifdef TS0710DEBUG
++
++#ifdef PRINT_OUTPUT_PRINTK
++#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
++#else
++#include "ezxlog.h"
++static __u8 strDebug[256];
++#define TS0710_DEBUG(fmt, arg...) ({ snprintf(strDebug, sizeof(strDebug), "MUX " __FUNCTION__ ": " fmt "\n" , ## arg); \
++ /*printk("%s", strDebug)*/ezxlogk("MX", strDebug, strlen(strDebug)); })
++#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
++
++#else
++#define TS0710_DEBUG(fmt...)
++#endif /* End #ifdef TS0710DEBUG */
++
++#ifdef TS0710LOG
++static unsigned char g_tbuf[TS0710MUX_MAX_BUF_SIZE];
++#ifdef PRINT_OUTPUT_PRINTK
++#define TS0710_LOG(fmt, arg...) printk(fmt, ## arg)
++#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
++#else
++#include "ezxlog.h"
++static __u8 strLog[256];
++#define TS0710_LOG(fmt, arg...) ({ snprintf(strLog, sizeof(strLog), fmt, ## arg); \
++ /*printk("%s", strLog)*/ezxlogk("MX", strLog, strlen(strLog)); })
++#define TS0710_PRINTK(fmt, arg...) ({ printk(fmt, ## arg); \
++ TS0710_LOG(fmt, ## arg); })
++#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
++
++#else
++#define TS0710_LOG(fmt...)
++#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
++#endif /* End #ifdef TS0710LOG */
++
++#ifdef TS0710DEBUG
++static void TS0710_DEBUGHEX(__u8 * buf, int len)
++{
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++
++ int i;
++ int c;
++
++ if (len <= 0) {
++ return;
++ }
++
++ c = 0;
++ for (i = 0; (i < len) && (c < (TS0710MUX_MAX_BUF_SIZE - 3)); i++) {
++ sprintf(&tbuf[c], "%02x ", buf[i]);
++ c += 3;
++ }
++ tbuf[c] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ TS0710_DEBUG("%s", tbuf);
++#else
++ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, c);
++#endif
++}
++static void TS0710_DEBUGSTR(__u8 * buf, int len)
++{
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++
++ if (len <= 0) {
++ return;
++ }
++
++ if (len > (TS0710MUX_MAX_BUF_SIZE - 1)) {
++ len = (TS0710MUX_MAX_BUF_SIZE - 1);
++ }
++
++ memcpy(tbuf, buf, len);
++ tbuf[len] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ /* 0x00 byte in the string pointed by tbuf may truncate the print result */
++ TS0710_DEBUG("%s", tbuf);
++#else
++ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, len);
++#endif
++}
++#else
++#define TS0710_DEBUGHEX(buf, len)
++#define TS0710_DEBUGSTR(buf, len)
++#endif /* End #ifdef TS0710DEBUG */
++
++#ifdef TS0710LOG
++static void TS0710_LOGSTR_FRAME(__u8 send, __u8 * data, int len)
++{
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ __u8 dlci;
++ int pos;
++
++ if (len <= 0) {
++ return;
++ }
++
++ pos = 0;
++ if (send) {
++ pos += sprintf(&g_tbuf[pos], "<");
++ short_pkt = (short_frame *) (data + 1); /*For BP UART problem */
++ } else {
++ /*For BP UART problem */
++ /*pos += sprintf(&g_tbuf[pos], ">"); */
++ pos += sprintf(&g_tbuf[pos], ">%d ", *(data + SLIDE_BP_SEQ_OFFSET)); /*For BP UART problem */
++
++#ifdef TS0710SEQ2
++ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", *(data + FIRST_BP_SEQ_OFFSET), *(data + SECOND_BP_SEQ_OFFSET), *(data + FIRST_AP_SEQ_OFFSET), *(data + SECOND_AP_SEQ_OFFSET)); /*For BP UART problem */
++#endif
++
++ short_pkt = (short_frame *) (data + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ }
++
++ /*For BP UART problem */
++ /*short_pkt = (short_frame *)(data + 1); */
++
++ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
++ switch (CLR_PF(short_pkt->h.control)) {
++ case SABM:
++ pos += sprintf(&g_tbuf[pos], "C SABM %d ::", dlci);
++ break;
++ case UA:
++ pos += sprintf(&g_tbuf[pos], "C UA %d ::", dlci);
++ break;
++ case DM:
++ pos += sprintf(&g_tbuf[pos], "C DM %d ::", dlci);
++ break;
++ case DISC:
++ pos += sprintf(&g_tbuf[pos], "C DISC %d ::", dlci);
++ break;
++
++ /*For BP UART problem Begin */
++ case ACK:
++ pos += sprintf(&g_tbuf[pos], "C ACK %d ", short_pkt->data[0]);
++
++#ifdef TS0710SEQ2
++ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", short_pkt->data[1], short_pkt->data[2], short_pkt->data[3], short_pkt->data[4]); /*For BP UART problem */
++#endif
++
++ pos += sprintf(&g_tbuf[pos], "::");
++ break;
++ /*For BP UART problem End */
++
++ case UIH:
++ if (!dlci) {
++ pos += sprintf(&g_tbuf[pos], "C MCC %d ::", dlci);
++ } else {
++
++ if ((short_pkt->h.length.ea) == 0) {
++ long_pkt = (long_frame *) short_pkt;
++ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
++ uih_data_start = long_pkt->h.data;
++ } else {
++ uih_len = short_pkt->h.length.len;
++ uih_data_start = short_pkt->data;
++ }
++ switch (*uih_data_start) {
++ case CMDTAG:
++ pos +=
++ sprintf(&g_tbuf[pos], "I %d A %d ::", dlci,
++ uih_len);
++ break;
++ case DATATAG:
++ default:
++ pos +=
++ sprintf(&g_tbuf[pos], "I %d D %d ::", dlci,
++ uih_len);
++ break;
++ }
++
++ }
++ break;
++ default:
++ pos += sprintf(&g_tbuf[pos], "N!!! %d ::", dlci);
++ break;
++ }
++
++ if (len > (sizeof(g_tbuf) - pos - 1)) {
++ len = (sizeof(g_tbuf) - pos - 1);
++ }
++
++ memcpy(&g_tbuf[pos], data, len);
++ pos += len;
++ g_tbuf[pos] = 0;
++
++#ifdef PRINT_OUTPUT_PRINTK
++ /* 0x00 byte in the string pointed by g_tbuf may truncate the print result */
++ TS0710_LOG("%s\n", g_tbuf);
++#else
++ /*printk("%s\n", g_tbuf) */ ezxlogk("MX", g_tbuf, pos);
++#endif
++}
++#else
++#define TS0710_LOGSTR_FRAME(send, data, len)
++#endif
++
++#ifdef TS0710SIG
++#define my_for_each_task(p) \
++ for ((p) = current; ((p) = (p)->next_task) != current; )
++
++static void TS0710_SIG2APLOGD(void)
++{
++ struct task_struct *p;
++ static __u8 sig = 0;
++
++ if (sig) {
++ return;
++ }
++
++ read_lock(&tasklist_lock);
++ my_for_each_task(p) {
++ if (strncmp(p->comm, "aplogd", 6) == 0) {
++ sig = 1;
++ if (send_sig(SIGUSR2, p, 1) == 0) {
++ TS0710_PRINTK
++ ("MUX: success to send SIGUSR2 to aplogd!\n");
++ } else {
++ TS0710_PRINTK
++ ("MUX: failure to send SIGUSR2 to aplogd!\n");
++ }
++ break;
++ }
++ }
++ read_unlock(&tasklist_lock);
++
++ if (!sig) {
++ TS0710_PRINTK("MUX: not found aplogd!\n");
++ }
++}
++#else
++#define TS0710_SIG2APLOGD()
++#endif
++
++static int basic_write(ts0710_con * ts0710, __u8 * buf, int len)
++{
++ int res;
++
++ UNUSED_PARAM(ts0710);
++
++ buf[0] = TS0710_BASIC_FLAG;
++ buf[len + 1] = TS0710_BASIC_FLAG;
++
++ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
++ TS0710_PRINTK
++ ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK
++ ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
++ TS0710_SIG2APLOGD();
++#endif
++
++ return -1;
++ }
++
++ TS0710_LOGSTR_FRAME(1, buf, len + 2);
++ TS0710_DEBUGHEX(buf, len + 2);
++
++ res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
++
++ if (res != len + 2) {
++ TS0710_PRINTK("MUX basic_write: Write Error!\n");
++ return -1;
++ }
++
++ return len + 2;
++}
++
++/* Functions for the crc-check and calculation */
++
++#define CRC_VALID 0xcf
++
++static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum)
++{
++ __u8 fcs = 0xff;
++
++ while (length--) {
++ fcs = crctable[fcs ^ *data++];
++ }
++ fcs = crctable[fcs ^ check_sum];
++ TS0710_DEBUG("fcs : %d\n", fcs);
++ if (fcs == (uint) 0xcf) { /*CRC_VALID) */
++ TS0710_DEBUG("crc_check: CRC check OK\n");
++ return 0;
++ } else {
++ TS0710_PRINTK("MUX crc_check: CRC check failed\n");
++ return 1;
++ }
++}
++
++/* Calculates the checksum according to the ts0710 specification */
++
++static __u8 crc_calc(__u8 * data, __u32 length)
++{
++ __u8 fcs = 0xff;
++
++ while (length--) {
++ fcs = crctable[fcs ^ *data++];
++ }
++
++ return 0xff - fcs;
++}
++
++/* Calulates a reversed CRC table for the FCS check */
++
++static void create_crctable(__u8 table[])
++{
++ int i, j;
++
++ __u8 data;
++ __u8 code_word = (__u8) 0xe0;
++ __u8 sr = (__u8) 0;
++
++ for (j = 0; j < 256; j++) {
++ data = (__u8) j;
++
++ for (i = 0; i < 8; i++) {
++ if ((data & 0x1) ^ (sr & 0x1)) {
++ sr >>= 1;
++ sr ^= code_word;
++ } else {
++ sr >>= 1;
++ }
++
++ data >>= 1;
++ sr &= 0xff;
++ }
++
++ table[j] = sr;
++ sr = 0;
++ }
++}
++
++static void ts0710_reset_dlci(__u8 j)
++{
++ if (j >= TS0710_MAX_CHN)
++ return;
++
++ ts0710_connection.dlci[j].state = DISCONNECTED;
++ ts0710_connection.dlci[j].flow_control = 0;
++ ts0710_connection.dlci[j].mtu = DEF_TS0710_MTU;
++ ts0710_connection.dlci[j].initiated = 0;
++ ts0710_connection.dlci[j].initiator = 0;
++ init_waitqueue_head(&ts0710_connection.dlci[j].open_wait);
++ init_waitqueue_head(&ts0710_connection.dlci[j].close_wait);
++}
++
++static void ts0710_reset_con(void)
++{
++ __u8 j;
++
++ ts0710_connection.initiator = 0;
++ ts0710_connection.mtu = DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE;
++ ts0710_connection.be_testing = 0;
++ ts0710_connection.test_errs = 0;
++ init_waitqueue_head(&ts0710_connection.test_wait);
++
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710_reset_dlci(j);
++ }
++}
++
++static void ts0710_init(void)
++{
++ create_crctable(crctable);
++
++ ts0710_reset_con();
++
++ /* Set the values in the rpn octets */
++/*
++ rpn_val.bit_rate = 7;
++ rpn_val.data_bits = 3;
++ rpn_val.stop_bit = 0;
++ rpn_val.parity = 0;
++ rpn_val.parity_type = 0;
++ rpn_val.res1 = 0;
++ rpn_val.xon_input = 0;
++ rpn_val.xon_output = 0;
++ rpn_val.rtr_input = 0;
++ rpn_val.rtr_output = 0;
++ rpn_val.rtc_input = 0;
++ rpn_val.rtc_output = 0;
++ rpn_val.res2 = 0;
++ rpn_val.xon_u8 = 0x11;
++ rpn_val.xoff_u8 = 0x13;
++ memset(&rpn_val.pm, 0 , 2); *//* Set the mask to zero */
++}
++
++static void ts0710_upon_disconnect(void)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 j;
++
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710->dlci[j].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[j].open_wait);
++ wake_up_interruptible(&ts0710->dlci[j].close_wait);
++ }
++ ts0710->be_testing = 0;
++ wake_up_interruptible(&ts0710->test_wait);
++ ts0710_reset_con();
++}
++
++/* Sending packet functions */
++
++/* Creates a UA packet and puts it at the beginning of the pkt pointer */
++
++static int send_ua(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *ua;
++
++ TS0710_DEBUG("send_ua: Creating UA packet to DLCI %d\n", dlci);
++
++ ua = (short_frame *) (buf + 1);
++ ua->h.addr.ea = 1;
++ ua->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
++ ua->h.addr.d = (dlci) & 0x1;
++ ua->h.addr.server_chn = (dlci) >> 0x1;
++ ua->h.control = SET_PF(UA);
++ ua->h.length.ea = 1;
++ ua->h.length.len = 0;
++ ua->data[0] = crc_calc((__u8 *) ua, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++/* Creates a DM packet and puts it at the beginning of the pkt pointer */
++
++static int send_dm(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *dm;
++
++ TS0710_DEBUG("send_dm: Creating DM packet to DLCI %d\n", dlci);
++
++ dm = (short_frame *) (buf + 1);
++ dm->h.addr.ea = 1;
++ dm->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
++ dm->h.addr.d = dlci & 0x1;
++ dm->h.addr.server_chn = dlci >> 0x1;
++ dm->h.control = SET_PF(DM);
++ dm->h.length.ea = 1;
++ dm->h.length.len = 0;
++ dm->data[0] = crc_calc((__u8 *) dm, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static int send_sabm(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *sabm;
++
++ TS0710_DEBUG("send_sabm: Creating SABM packet to DLCI %d\n", dlci);
++
++ sabm = (short_frame *) (buf + 1);
++ sabm->h.addr.ea = 1;
++ sabm->h.addr.cr = ((ts0710->initiator) & 0x1);
++ sabm->h.addr.d = dlci & 0x1;
++ sabm->h.addr.server_chn = dlci >> 0x1;
++ sabm->h.control = SET_PF(SABM);
++ sabm->h.length.ea = 1;
++ sabm->h.length.len = 0;
++ sabm->data[0] = crc_calc((__u8 *) sabm, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static int send_disc(ts0710_con * ts0710, __u8 dlci)
++{
++ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
++ short_frame *disc;
++
++ TS0710_DEBUG("send_disc: Creating DISC packet to DLCI %d\n", dlci);
++
++ disc = (short_frame *) (buf + 1);
++ disc->h.addr.ea = 1;
++ disc->h.addr.cr = ((ts0710->initiator) & 0x1);
++ disc->h.addr.d = dlci & 0x1;
++ disc->h.addr.server_chn = dlci >> 0x1;
++ disc->h.control = SET_PF(DISC);
++ disc->h.length.ea = 1;
++ disc->h.length.len = 0;
++ disc->data[0] = crc_calc((__u8 *) disc, SHORT_CRC_CHECK);
++
++ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
++}
++
++static void queue_uih(mux_send_struct * send_info, __u16 len,
++ ts0710_con * ts0710, __u8 dlci)
++{
++ __u32 size;
++
++ TS0710_DEBUG
++ ("queue_uih: Creating UIH packet with %d bytes data to DLCI %d\n",
++ len, dlci);
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ long_frame *l_pkt;
++
++ size = sizeof(long_frame) + len + FCS_SIZE;
++ l_pkt = (long_frame *) (send_info->frame - sizeof(long_frame));
++ set_uih_hdr((void *)l_pkt, dlci, len, ts0710->initiator);
++ l_pkt->data[len] = crc_calc((__u8 *) l_pkt, LONG_CRC_CHECK);
++ send_info->frame = ((__u8 *) l_pkt) - 1;
++ } else {
++ short_frame *s_pkt;
++
++ size = sizeof(short_frame) + len + FCS_SIZE;
++ s_pkt =
++ (short_frame *) (send_info->frame - sizeof(short_frame));
++ set_uih_hdr((void *)s_pkt, dlci, len, ts0710->initiator);
++ s_pkt->data[len] = crc_calc((__u8 *) s_pkt, SHORT_CRC_CHECK);
++ send_info->frame = ((__u8 *) s_pkt) - 1;
++ }
++ send_info->length = size;
++}
++
++/* Multiplexer command packets functions */
++
++/* Turns on the ts0710 flow control */
++
++static int ts0710_fcon_msg(ts0710_con * ts0710, __u8 cr)
++{
++ __u8 buf[30];
++ mcc_short_frame *mcc_pkt;
++ short_frame *uih_pkt;
++ __u32 size;
++
++ size = sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE;
++ uih_pkt = (short_frame *) (buf + 1);
++ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
++ ts0710->initiator);
++ uih_pkt->data[sizeof(mcc_short_frame)] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = FCON;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/* Turns off the ts0710 flow control */
++
++static int ts0710_fcoff_msg(ts0710_con * ts0710, __u8 cr)
++{
++ __u8 buf[30];
++ mcc_short_frame *mcc_pkt;
++ short_frame *uih_pkt;
++ __u32 size;
++
++ size = (sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE);
++ uih_pkt = (short_frame *) (buf + 1);
++ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
++ ts0710->initiator);
++ uih_pkt->data[sizeof(mcc_short_frame)] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
++
++ mcc_pkt->h.type.ea = 1;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = FCOFF;
++ mcc_pkt->h.length.ea = 1;
++ mcc_pkt->h.length.len = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/*
++static int ts0710_rpn_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 req)
++{
++ char buf[100];
++ rpn_msg* rpn_pkt;
++ __u32 fsize;
++ __u32 psize;
++
++ fsize = sizeof(rpn_msg);
++
++ if (req) {
++ fsize -= sizeof(rpn_values);
++ }
++
++ psize = (fsize - sizeof(short_frame) - FCS_SIZE);
++
++ rpn_pkt = (rpn_msg *) buf;
++
++ set_uih_hdr((short_frame *) rpn_pkt, CTRL_CHAN, psize, ts0710->initiator);
++
++ rpn_pkt->fcs = crc_calc((__u8*) rpn_pkt, SHORT_CRC_CHECK);
++
++ rpn_pkt->mcc_s_head.type.ea = EA;
++ rpn_pkt->mcc_s_head.type.cr = cr;
++ rpn_pkt->mcc_s_head.type.type = RPN;
++ rpn_pkt->mcc_s_head.length.ea = EA;
++
++ rpn_pkt->dlci.ea = EA;
++ rpn_pkt->dlci.cr = 1;
++ rpn_pkt->dlci.d = dlci & 1;
++ rpn_pkt->dlci.server_chn = (dlci >> 1);
++
++ if (req) {
++ rpn_pkt->mcc_s_head.length.len = 1;
++ rpn_pkt->rpn_val.bit_rate = rpn_pkt->fcs;
++ } else {
++ rpn_pkt->mcc_s_head.length.len = 8;
++ memcpy(&(rpn_pkt->rpn_val), &rpn_val, sizeof(rpn_values));
++ }
++ return basic_write(ts0710, buf, fsize);
++}
++*/
++/*
++static int ts0710_rls_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 err_code)
++{
++ char buf[100];
++ rls_msg *rls_pkt;
++ __u32 fsize;
++ __u32 psize;
++
++ fsize = sizeof(rls_msg);
++ psize = fsize - sizeof(short_frame) - FCS_SIZE;
++ rls_pkt = (rls_msg *) buf;
++
++ set_uih_hdr((short_frame *) rls_pkt, CTRL_CHAN, psize, ts0710->initiator);
++ rls_pkt->fcs = crc_calc((__u8*) rls_pkt, SHORT_CRC_CHECK);
++
++ rls_pkt->mcc_s_head.type.ea = EA;
++ rls_pkt->mcc_s_head.type.cr = cr;
++ rls_pkt->mcc_s_head.type.type = RLS;
++ rls_pkt->mcc_s_head.length.ea = EA;
++ rls_pkt->mcc_s_head.length.len = 2;
++
++ rls_pkt->dlci.ea = EA;
++ rls_pkt->dlci.cr = 1;
++ rls_pkt->dlci.d = dlci & 1;
++ rls_pkt->dlci.server_chn = dlci >> 1;
++ rls_pkt->error = err_code;
++ rls_pkt->res = 0;
++
++ return basic_write(ts0710, buf, fsize);
++}
++*/
++
++/* Sends an PN-messages and sets the not negotiable parameters to their
++ default values in ts0710 */
++
++static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
++ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr)
++{
++ __u8 buf[30];
++ pn_msg *pn_pkt;
++ __u32 size;
++ TS0710_DEBUG
++ ("send_pn_msg: DLCI 0x%02x, prior:0x%02x, frame_size:%d, credit_flow:%x, credits:%d, cr:%x\n",
++ dlci, prior, frame_size, credit_flow, credits, cr);
++
++ size = sizeof(pn_msg);
++ pn_pkt = (pn_msg *) (buf + 1);
++
++ set_uih_hdr((void *)pn_pkt, CTRL_CHAN,
++ size - (sizeof(short_frame) + FCS_SIZE), ts0710->initiator);
++ pn_pkt->fcs = crc_calc((__u8 *) pn_pkt, SHORT_CRC_CHECK);
++
++ pn_pkt->mcc_s_head.type.ea = 1;
++ pn_pkt->mcc_s_head.type.cr = cr;
++ pn_pkt->mcc_s_head.type.type = PN;
++ pn_pkt->mcc_s_head.length.ea = 1;
++ pn_pkt->mcc_s_head.length.len = 8;
++
++ pn_pkt->res1 = 0;
++ pn_pkt->res2 = 0;
++ pn_pkt->dlci = dlci;
++ pn_pkt->frame_type = 0;
++ pn_pkt->credit_flow = credit_flow;
++ pn_pkt->prior = prior;
++ pn_pkt->ack_timer = 0;
++ SET_PN_MSG_FRAME_SIZE(pn_pkt, frame_size);
++ pn_pkt->credits = credits;
++ pn_pkt->max_nbrof_retrans = 0;
++
++ return basic_write(ts0710, buf, size);
++}
++
++/* Send a Not supported command - command, which needs 3 bytes */
++
++static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr)
++{
++ __u8 buf[30];
++ nsc_msg *nsc_pkt;
++ __u32 size;
++
++ size = sizeof(nsc_msg);
++ nsc_pkt = (nsc_msg *) (buf + 1);
++
++ set_uih_hdr((void *)nsc_pkt, CTRL_CHAN,
++ sizeof(nsc_msg) - sizeof(short_frame) - FCS_SIZE,
++ ts0710->initiator);
++
++ nsc_pkt->fcs = crc_calc((__u8 *) nsc_pkt, SHORT_CRC_CHECK);
++
++ nsc_pkt->mcc_s_head.type.ea = 1;
++ nsc_pkt->mcc_s_head.type.cr = cr;
++ nsc_pkt->mcc_s_head.type.type = NSC;
++ nsc_pkt->mcc_s_head.length.ea = 1;
++ nsc_pkt->mcc_s_head.length.len = 1;
++
++ nsc_pkt->command_type.ea = 1;
++ nsc_pkt->command_type.cr = cmd.cr;
++ nsc_pkt->command_type.type = cmd.type;
++
++ return basic_write(ts0710, buf, size);
++}
++
++static int ts0710_msc_msg(ts0710_con * ts0710, __u8 value, __u8 cr, __u8 dlci)
++{
++ __u8 buf[30];
++ msc_msg *msc_pkt;
++ __u32 size;
++
++ size = sizeof(msc_msg);
++ msc_pkt = (msc_msg *) (buf + 1);
++
++ set_uih_hdr((void *)msc_pkt, CTRL_CHAN,
++ sizeof(msc_msg) - sizeof(short_frame) - FCS_SIZE,
++ ts0710->initiator);
++
++ msc_pkt->fcs = crc_calc((__u8 *) msc_pkt, SHORT_CRC_CHECK);
++
++ msc_pkt->mcc_s_head.type.ea = 1;
++ msc_pkt->mcc_s_head.type.cr = cr;
++ msc_pkt->mcc_s_head.type.type = MSC;
++ msc_pkt->mcc_s_head.length.ea = 1;
++ msc_pkt->mcc_s_head.length.len = 2;
++
++ msc_pkt->dlci.ea = 1;
++ msc_pkt->dlci.cr = 1;
++ msc_pkt->dlci.d = dlci & 1;
++ msc_pkt->dlci.server_chn = (dlci >> 1) & 0x1f;
++
++ msc_pkt->v24_sigs = value;
++
++ return basic_write(ts0710, buf, size);
++}
++
++static int ts0710_test_msg(ts0710_con * ts0710, __u8 * test_pattern, __u32 len,
++ __u8 cr, __u8 * f_buf /*Frame buf */ )
++{
++ __u32 size;
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ long_frame *uih_pkt;
++ mcc_long_frame *mcc_pkt;
++
++ size =
++ (sizeof(long_frame) + sizeof(mcc_long_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (long_frame *) (f_buf + 1);
++
++ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN, len +
++ sizeof(mcc_long_frame), ts0710->initiator);
++ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
++ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
++ mcc_pkt = (mcc_long_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ /* cr tells whether it is a commmand (1) or a response (0) */
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ SET_LONG_LENGTH(mcc_pkt->h.length, len);
++ memcpy(mcc_pkt->value, test_pattern, len);
++ } else if (len > (SHORT_PAYLOAD_SIZE - sizeof(mcc_short_frame))) {
++ long_frame *uih_pkt;
++ mcc_short_frame *mcc_pkt;
++
++ /* Create long uih packet and short mcc packet */
++ size =
++ (sizeof(long_frame) + sizeof(mcc_short_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (long_frame *) (f_buf + 1);
++
++ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN,
++ len + sizeof(mcc_short_frame), ts0710->initiator);
++ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
++ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = len;
++ memcpy(mcc_pkt->value, test_pattern, len);
++ } else {
++ short_frame *uih_pkt;
++ mcc_short_frame *mcc_pkt;
++
++ size =
++ (sizeof(short_frame) + sizeof(mcc_short_frame) + len +
++ FCS_SIZE);
++ uih_pkt = (short_frame *) (f_buf + 1);
++
++ set_uih_hdr((void *)uih_pkt, CTRL_CHAN, len
++ + sizeof(mcc_short_frame), ts0710->initiator);
++ uih_pkt->data[uih_pkt->h.length.len] =
++ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
++ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
++
++ mcc_pkt->h.type.ea = EA;
++ mcc_pkt->h.type.cr = cr;
++ mcc_pkt->h.type.type = TEST;
++ mcc_pkt->h.length.ea = EA;
++ mcc_pkt->h.length.len = len;
++ memcpy(mcc_pkt->value, test_pattern, len);
++
++ }
++ return basic_write(ts0710, f_buf, size);
++}
++
++static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr)
++{
++ uih_pkt->h.addr.ea = 1;
++ uih_pkt->h.addr.cr = cr;
++ uih_pkt->h.addr.d = dlci & 0x1;
++ uih_pkt->h.addr.server_chn = dlci >> 1;
++ uih_pkt->h.control = CLR_PF(UIH);
++
++ if (len > SHORT_PAYLOAD_SIZE) {
++ SET_LONG_LENGTH(((long_frame *) uih_pkt)->h.length, len);
++ } else {
++ uih_pkt->h.length.ea = 1;
++ uih_pkt->h.length.len = len;
++ }
++}
++
++/* Parses a multiplexer control channel packet */
++
++void process_mcc(__u8 * data, __u32 len, ts0710_con * ts0710, int longpkt)
++{
++ __u8 *tbuf = NULL;
++ mcc_short_frame *mcc_short_pkt;
++ int j;
++
++ if (longpkt) {
++ mcc_short_pkt =
++ (mcc_short_frame *) (((long_frame *) data)->data);
++ } else {
++ mcc_short_pkt =
++ (mcc_short_frame *) (((short_frame *) data)->data);
++ }
++
++ switch (mcc_short_pkt->h.type.type) {
++ case TEST:
++ if (mcc_short_pkt->h.type.cr == MCC_RSP) {
++ TS0710_DEBUG("Received test command response\n");
++
++ if (ts0710->be_testing) {
++ if ((mcc_short_pkt->h.length.ea) == 0) {
++ mcc_long_frame *mcc_long_pkt;
++ mcc_long_pkt =
++ (mcc_long_frame *) mcc_short_pkt;
++ if (GET_LONG_LENGTH
++ (mcc_long_pkt->h.length) !=
++ TEST_PATTERN_SIZE) {
++ ts0710->test_errs =
++ TEST_PATTERN_SIZE;
++ TS0710_DEBUG
++ ("Err: received test pattern is %d bytes long, not expected %d\n",
++ GET_LONG_LENGTH
++ (mcc_long_pkt->h.length),
++ TEST_PATTERN_SIZE);
++ } else {
++ ts0710->test_errs = 0;
++ for (j = 0;
++ j < TEST_PATTERN_SIZE;
++ j++) {
++ if (mcc_long_pkt->
++ value[j] !=
++ (j & 0xFF)) {
++ (ts0710->
++ test_errs)++;
++ }
++ }
++ }
++
++ } else {
++
++#if TEST_PATTERN_SIZE < 128
++ if (mcc_short_pkt->h.length.len !=
++ TEST_PATTERN_SIZE) {
++#endif
++
++ ts0710->test_errs =
++ TEST_PATTERN_SIZE;
++ TS0710_DEBUG
++ ("Err: received test pattern is %d bytes long, not expected %d\n",
++ mcc_short_pkt->h.length.
++ len, TEST_PATTERN_SIZE);
++
++#if TEST_PATTERN_SIZE < 128
++ } else {
++ ts0710->test_errs = 0;
++ for (j = 0;
++ j < TEST_PATTERN_SIZE;
++ j++) {
++ if (mcc_short_pkt->
++ value[j] !=
++ (j & 0xFF)) {
++ (ts0710->
++ test_errs)++;
++ }
++ }
++ }
++#endif
++
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ wake_up_interruptible(&ts0710->test_wait);
++ } else {
++ TS0710_DEBUG
++ ("Err: shouldn't or late to get test cmd response\n");
++ }
++ } else {
++ tbuf = (__u8 *) kmalloc(len + 32, GFP_ATOMIC);
++ if (!tbuf) {
++ break;
++ }
++
++ if ((mcc_short_pkt->h.length.ea) == 0) {
++ mcc_long_frame *mcc_long_pkt;
++ mcc_long_pkt = (mcc_long_frame *) mcc_short_pkt;
++ ts0710_test_msg(ts0710, mcc_long_pkt->value,
++ GET_LONG_LENGTH(mcc_long_pkt->h.
++ length),
++ MCC_RSP, tbuf);
++ } else {
++ ts0710_test_msg(ts0710, mcc_short_pkt->value,
++ mcc_short_pkt->h.length.len,
++ MCC_RSP, tbuf);
++ }
++
++ kfree(tbuf);
++ }
++ break;
++
++ case FCON: /*Flow control on command */
++ TS0710_PRINTK
++ ("MUX Received Flow control(all channels) on command\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ ts0710->dlci[0].state = CONNECTED;
++ ts0710_fcon_msg(ts0710, MCC_RSP);
++ mux_sched_send();
++ }
++ break;
++
++ case FCOFF: /*Flow control off command */
++ TS0710_PRINTK
++ ("MUX Received Flow control(all channels) off command\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ for (j = 0; j < TS0710_MAX_CHN; j++) {
++ ts0710->dlci[j].state = FLOW_STOPPED;
++ }
++ ts0710_fcoff_msg(ts0710, MCC_RSP);
++ }
++ break;
++
++ case MSC: /*Modem status command */
++ {
++ __u8 dlci;
++ __u8 v24_sigs;
++
++ dlci = (mcc_short_pkt->value[0]) >> 2;
++ v24_sigs = mcc_short_pkt->value[1];
++
++ if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ send_dm(ts0710, dlci);
++ break;
++ }
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ TS0710_DEBUG("Received Modem status command\n");
++ if (v24_sigs & 2) {
++ if (ts0710->dlci[dlci].state ==
++ CONNECTED) {
++ TS0710_LOG
++ ("MUX Received Flow off on dlci %d\n",
++ dlci);
++ ts0710->dlci[dlci].state =
++ FLOW_STOPPED;
++ }
++ } else {
++ if (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED) {
++ ts0710->dlci[dlci].state =
++ CONNECTED;
++ TS0710_LOG
++ ("MUX Received Flow on on dlci %d\n",
++ dlci);
++ mux_sched_send();
++ }
++ }
++
++ ts0710_msc_msg(ts0710, v24_sigs, MCC_RSP, dlci);
++/*
++ if (!(ts0710->dlci[dlci].initiated) && !(ts0710->dlci[dlci].initiator)) {
++ ts0710_msc_msg(ts0710, EA | RTR | RTC | DV, MCC_CMD, dlci);
++ ts0710->dlci[dlci].initiated = 1;
++ }
++*/
++ } else {
++ TS0710_DEBUG
++ ("Received Modem status response\n");
++
++ if (v24_sigs & 2) {
++ TS0710_DEBUG("Flow stop accepted\n");
++ }
++ }
++ break;
++ }
++
++ /* case RPN: *//*Remote port negotiation command */
++
++/* {
++ __u8 dlci;
++
++ dlci = (mcc_short_pkt->value[0]) >> 2;
++
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ if (mcc_short_pkt->h.length.len == 1) {
++ TS0710_DEBUG("Received Remote port negotiation command\n");
++ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
++ } else {
++*/
++ /* Accept the other sides settings (accept all for now) */
++/* TS0710_DEBUG("Received Remote port negotiation respons\n");
++ memcpy(&rpn_val, &mcc_short_pkt->value[1], 8);
++ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
++*/
++ /* Zero the parametermask after response */
++/* memset(&rpn_val.pm, 0, 2);
++ }
++ }
++ break;
++ }
++*/
++/*
++ case RLS: *//*Remote line status */
++/* {
++ __u8 dlci;
++ __u8 err_code;
++
++ TS0710_DEBUG("Received Remote line status\n");
++ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
++ dlci = mcc_short_pkt->value[0] >> 2;
++ err_code = mcc_short_pkt->value[1];
++
++ ts0710_rls_msg(ts0710, MCC_RSP, dlci, err_code);
++ }
++ break;
++ }
++*/
++ case PN: /*DLC parameter negotiation */
++ {
++ __u8 dlci;
++ __u16 frame_size;
++ pn_msg *pn_pkt;
++
++ pn_pkt = (pn_msg *) data;
++ dlci = pn_pkt->dlci;
++ frame_size = GET_PN_MSG_FRAME_SIZE(pn_pkt);
++ TS0710_DEBUG
++ ("Received DLC parameter negotiation, PN\n");
++ if (pn_pkt->mcc_s_head.type.cr == MCC_CMD) {
++ TS0710_DEBUG("received PN command with:\n");
++ TS0710_DEBUG("Frame size:%d\n", frame_size);
++
++ frame_size =
++ min(frame_size, ts0710->dlci[dlci].mtu);
++ send_pn_msg(ts0710, pn_pkt->prior, frame_size,
++ 0, 0, dlci, MCC_RSP);
++ ts0710->dlci[dlci].mtu = frame_size;
++ TS0710_DEBUG("process_mcc : mtu set to %d\n",
++ ts0710->dlci[dlci].mtu);
++ } else {
++ TS0710_DEBUG("received PN response with:\n");
++ TS0710_DEBUG("Frame size:%d\n", frame_size);
++
++ frame_size =
++ min(frame_size, ts0710->dlci[dlci].mtu);
++ ts0710->dlci[dlci].mtu = frame_size;
++
++ TS0710_DEBUG
++ ("process_mcc : mtu set on dlci:%d to %d\n",
++ dlci, ts0710->dlci[dlci].mtu);
++
++ if (ts0710->dlci[dlci].state == NEGOTIATING) {
++ ts0710->dlci[dlci].state = CONNECTING;
++ wake_up_interruptible(&ts0710->
++ dlci[dlci].
++ open_wait);
++ }
++ }
++ break;
++ }
++
++ case NSC: /*Non supported command resonse */
++ TS0710_LOG("MUX Received Non supported command response\n");
++ break;
++
++ default: /*Non supported command received */
++ TS0710_LOG("MUX Received a non supported command\n");
++ send_nsc_msg(ts0710, mcc_short_pkt->h.type, MCC_RSP);
++ break;
++ }
++}
++
++static mux_recv_packet *get_mux_recv_packet(__u32 size)
++{
++ mux_recv_packet *recv_packet;
++
++ TS0710_DEBUG("Enter into get_mux_recv_packet");
++
++ recv_packet =
++ (mux_recv_packet *) kmalloc(sizeof(mux_recv_packet), GFP_ATOMIC);
++ if (!recv_packet) {
++ return 0;
++ }
++
++ recv_packet->data = (__u8 *) kmalloc(size, GFP_ATOMIC);
++ if (!(recv_packet->data)) {
++ kfree(recv_packet);
++ return 0;
++ }
++ recv_packet->length = 0;
++ recv_packet->next = 0;
++ return recv_packet;
++}
++
++static void free_mux_recv_packet(mux_recv_packet * recv_packet)
++{
++ TS0710_DEBUG("Enter into free_mux_recv_packet");
++
++ if (!recv_packet) {
++ return;
++ }
++
++ if (recv_packet->data) {
++ kfree(recv_packet->data);
++ }
++ kfree(recv_packet);
++}
++
++static void free_mux_recv_struct(mux_recv_struct * recv_info)
++{
++ mux_recv_packet *recv_packet1, *recv_packet2;
++
++ if (!recv_info) {
++ return;
++ }
++
++ recv_packet1 = recv_info->mux_packet;
++ while (recv_packet1) {
++ recv_packet2 = recv_packet1->next;
++ free_mux_recv_packet(recv_packet1);
++ recv_packet1 = recv_packet2;
++ }
++
++ kfree(recv_info);
++}
++
++static inline void add_post_recv_queue(mux_recv_struct ** head,
++ mux_recv_struct * new_item)
++{
++ new_item->next = *head;
++ *head = new_item;
++}
++
++static void ts0710_flow_on(__u8 dlci, ts0710_con * ts0710)
++{
++ int i;
++ __u8 cmdtty;
++ __u8 datatty;
++ struct tty_struct *tty;
++ mux_recv_struct *recv_info;
++
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (!(ts0710->dlci[dlci].flow_control)) {
++ return;
++ }
++
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++
++ if (cmdtty != datatty) {
++ /* Check AT cmd tty */
++ tty = mux_table[cmdtty];
++ if (mux_tty[cmdtty] && tty) {
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++ }
++ recv_info = mux_recv_info[cmdtty];
++ if (mux_recv_info_flags[cmdtty] && recv_info) {
++ if (recv_info->total) {
++ return;
++ }
++ }
++
++ /* Check data tty */
++ tty = mux_table[datatty];
++ if (mux_tty[datatty] && tty) {
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++ }
++ recv_info = mux_recv_info[datatty];
++ if (mux_recv_info_flags[datatty] && recv_info) {
++ if (recv_info->total) {
++ return;
++ }
++ }
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, dlci) <
++ 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX send Flow on on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 0;
++ break;
++ }
++ }
++}
++
++static void ts0710_flow_off(struct tty_struct *tty, __u8 dlci,
++ ts0710_con * ts0710)
++{
++ int i;
++
++ if (test_and_set_bit(TTY_THROTTLED, &tty->flags)) {
++ return;
++ }
++
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (ts0710->dlci[dlci].flow_control) {
++ return;
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg
++ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX send Flow off on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 1;
++ break;
++ }
++ }
++}
++
++int ts0710_recv_data(ts0710_con * ts0710, char *data, int len)
++{
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ __u8 dlci;
++ __u8 be_connecting;
++#ifdef TS0710DEBUG
++ unsigned long t;
++#endif
++
++ short_pkt = (short_frame *) data;
++
++ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
++ switch (CLR_PF(short_pkt->h.control)) {
++ case SABM:
++ TS0710_DEBUG("SABM-packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++ ts0710->dlci[0].state = CONNECTED;
++
++ TS0710_DEBUG("sending back UA - control channel\n");
++ send_ua(ts0710, dlci);
++ wake_up_interruptible(&ts0710->dlci[0].open_wait);
++
++ } else if (valid_dlci(dlci)) {
++
++ TS0710_DEBUG("Incomming connect on channel %d\n", dlci);
++
++ TS0710_DEBUG("sending UA, dlci %d\n", dlci);
++ send_ua(ts0710, dlci);
++
++ ts0710->dlci[dlci].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++
++ } else {
++ TS0710_DEBUG("invalid dlci %d, sending DM\n", dlci);
++ send_dm(ts0710, dlci);
++ }
++
++ break;
++
++ case UA:
++ TS0710_DEBUG("UA packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[0].
++ open_wait);
++ } else if (ts0710->dlci[0].state == DISCONNECTING) {
++ ts0710_upon_disconnect();
++ } else {
++ TS0710_DEBUG
++ (" Something wrong receiving UA packet\n");
++ }
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming UA on channel %d\n", dlci);
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ ts0710->dlci[dlci].state = CONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ open_wait);
++ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG
++ (" Something wrong receiving UA packet\n");
++ }
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case DM:
++ TS0710_DEBUG("DM packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ be_connecting = 1;
++ } else {
++ be_connecting = 0;
++ }
++ ts0710_upon_disconnect();
++ if (be_connecting) {
++ ts0710->dlci[0].state = REJECTED;
++ }
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming DM on channel %d\n", dlci);
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ ts0710->dlci[dlci].state = REJECTED;
++ } else {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case DISC:
++ TS0710_DEBUG("DISC packet received\n");
++
++/*For BP UART problem
++ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
++ break;
++*/
++
++ if (!dlci) {
++ TS0710_DEBUG("server channel == 0\n");
++
++ send_ua(ts0710, dlci);
++ TS0710_DEBUG("DISC, sending back UA\n");
++
++ ts0710_upon_disconnect();
++ } else if (valid_dlci(dlci)) {
++ TS0710_DEBUG("Incomming DISC on channel %d\n", dlci);
++
++ send_ua(ts0710, dlci);
++ TS0710_DEBUG("DISC, sending back UA\n");
++
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
++ ts0710_reset_dlci(dlci);
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ case UIH:
++ TS0710_DEBUG("UIH packet received\n");
++
++ if ((dlci >= TS0710_MAX_CHN)) {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ send_dm(ts0710, dlci);
++ break;
++ }
++
++ if (GET_PF(short_pkt->h.control)) {
++ TS0710_LOG
++ ("MUX Error %s: UIH packet with P/F set, discard it!\n",
++ __FUNCTION__);
++ break;
++ }
++
++ if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ TS0710_LOG
++ ("MUX Error %s: DLCI %d not connected, discard it!\n",
++ __FUNCTION__, dlci);
++ send_dm(ts0710, dlci);
++ break;
++ }
++
++ if ((short_pkt->h.length.ea) == 0) {
++ TS0710_DEBUG("Long UIH packet received\n");
++ long_pkt = (long_frame *) data;
++ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
++ uih_data_start = long_pkt->h.data;
++ TS0710_DEBUG("long packet length %d\n", uih_len);
++
++/*For BP UART problem
++ if (crc_check(data, LONG_CRC_CHECK, *(uih_data_start + uih_len)))
++ break;
++*/
++ } else {
++ TS0710_DEBUG("Short UIH pkt received\n");
++ uih_len = short_pkt->h.length.len;
++ uih_data_start = short_pkt->data;
++
++/*For BP UART problem
++ if (crc_check(data, SHORT_CRC_CHECK, *(uih_data_start + uih_len)))
++ break;
++*/
++ }
++
++ if (dlci == 0) {
++ TS0710_DEBUG("UIH on serv_channel 0\n");
++ process_mcc(data, len, ts0710,
++ !(short_pkt->h.length.ea));
++ } else if (valid_dlci(dlci)) {
++ /* do tty dispatch */
++ __u8 tag;
++ __u8 tty_idx;
++ struct tty_struct *tty;
++ __u8 queue_data;
++ __u8 post_recv;
++ __u8 flow_control;
++ mux_recv_struct *recv_info;
++ int recv_room;
++ mux_recv_packet *recv_packet, *recv_packet2;
++
++ TS0710_DEBUG("UIH on channel %d\n", dlci);
++
++ if (uih_len > ts0710->dlci[dlci].mtu) {
++ TS0710_PRINTK
++ ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
++ dlci, uih_len, ts0710->dlci[dlci].mtu);
++ break;
++ }
++
++ tag = *uih_data_start;
++ uih_data_start++;
++ uih_len--;
++
++ if (!uih_len) {
++ break;
++ }
++
++ switch (tag) {
++ case CMDTAG:
++ tty_idx = dlci2tty[dlci].cmdtty;
++ TS0710_DEBUG("CMDTAG on DLCI:%d, /dev/mux%d\n",
++ dlci, tty_idx);
++ TS0710_DEBUGSTR(uih_data_start, uih_len);
++ if (!(iscmdtty[tty_idx])) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
++ __FUNCTION__, dlci, tty_idx);
++ }
++ break;
++ case DATATAG:
++ default:
++ tty_idx = dlci2tty[dlci].datatty;
++ TS0710_DEBUG
++ ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
++ dlci, tty_idx);
++ if (iscmdtty[tty_idx]) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
++ __FUNCTION__, dlci, tty_idx);
++ }
++ break;
++ }
++ tty = mux_table[tty_idx];
++ if ((!mux_tty[tty_idx]) || (!tty)) {
++ TS0710_PRINTK
++ ("MUX: No application waiting for, discard it! /dev/mux%d\n",
++ tty_idx);
++ } else { /* Begin processing received data */
++ if ((!mux_recv_info_flags[tty_idx])
++ || (!mux_recv_info[tty_idx])) {
++ TS0710_PRINTK
++ ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
++ tty_idx);
++ break;
++ }
++
++ recv_info = mux_recv_info[tty_idx];
++ if (recv_info->total > 8192) {
++ TS0710_PRINTK
++ ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
++ tty_idx);
++ break;
++ }
++
++ queue_data = 0;
++ post_recv = 0;
++ flow_control = 0;
++ recv_room = 65535;
++ if (tty->receive_room)
++ recv_room = tty->receive_room;
++
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ queue_data = 1;
++ } else {
++ if (test_bit
++ (TTY_DONT_FLIP, &tty->flags)) {
++ queue_data = 1;
++ post_recv = 1;
++ } else if (recv_info->total) {
++ queue_data = 1;
++ post_recv = 1;
++ } else if (recv_room < uih_len) {
++ queue_data = 1;
++ flow_control = 1;
++ }
++
++ if ((recv_room -
++ (uih_len + recv_info->total)) <
++ ts0710->dlci[dlci].mtu) {
++ flow_control = 1;
++ }
++ }
++
++ if (!queue_data) {
++ /* Put received data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put received data into read buffer of /dev/mux%d",
++ tty_idx);
++
++#ifdef TS0710DEBUG
++ t = jiffies;
++#endif
++
++ (tty->ldisc.receive_buf) (tty,
++ uih_data_start,
++ NULL,
++ uih_len);
++
++#ifdef TS0710DEBUG
++ TS0710_DEBUG
++ ("tty->ldisc.receive_buf take ticks: %lu",
++ (jiffies - t));
++#endif
++
++ } else { /* Queue data */
++
++ TS0710_DEBUG
++ ("Put received data into recv queue of /dev/mux%d",
++ tty_idx);
++ if (recv_info->total) {
++ /* recv_info is already linked into mux_recv_queue */
++
++ recv_packet =
++ get_mux_recv_packet
++ (uih_len);
++ if (!recv_packet) {
++ TS0710_PRINTK
++ ("MUX %s: no memory\n",
++ __FUNCTION__);
++ break;
++ }
++
++ memcpy(recv_packet->data,
++ uih_data_start, uih_len);
++ recv_packet->length = uih_len;
++ recv_info->total += uih_len;
++ recv_packet->next = NULL;
++
++ if (!(recv_info->mux_packet)) {
++ recv_info->mux_packet =
++ recv_packet;
++ } else {
++ recv_packet2 =
++ recv_info->
++ mux_packet;
++ while (recv_packet2->
++ next) {
++ recv_packet2 =
++ recv_packet2->
++ next;
++ }
++ recv_packet2->next =
++ recv_packet;
++ } /* End if( !(recv_info->mux_packet) ) */
++ } else { /* recv_info->total == 0 */
++ if (uih_len >
++ TS0710MUX_RECV_BUF_SIZE) {
++ TS0710_PRINTK
++ ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
++ tty_idx, uih_len);
++ uih_len =
++ TS0710MUX_RECV_BUF_SIZE;
++ }
++ memcpy(recv_info->data,
++ uih_data_start, uih_len);
++ recv_info->length = uih_len;
++ recv_info->total = uih_len;
++
++ add_post_recv_queue
++ (&mux_recv_queue,
++ recv_info);
++ } /* End recv_info->total == 0 */
++ } /* End Queue data */
++
++ if (flow_control) {
++ /* Do something for flow control */
++ ts0710_flow_off(tty, dlci, ts0710);
++ }
++
++ if (tty_idx ==
++ dlci2tty[TS0710MUX_GPRS1_DLCI].datatty) {
++ if (add_count
++ (TS0710MUX_GPRS1_RECV_COUNT_IDX,
++ uih_len) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2
++ [TS0710MUX_GPRS1_RECV_COUNT_IDX]
++ += uih_len;
++ }
++ } else if (tty_idx ==
++ dlci2tty[TS0710MUX_GPRS2_DLCI].
++ datatty) {
++ if (add_count
++ (TS0710MUX_GPRS2_RECV_COUNT_IDX,
++ uih_len) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2
++ [TS0710MUX_GPRS2_RECV_COUNT_IDX]
++ += uih_len;
++ }
++ }
++
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++ } /* End processing received data */
++ } else {
++ TS0710_DEBUG("invalid dlci %d\n", dlci);
++ }
++
++ break;
++
++ default:
++ TS0710_DEBUG("illegal packet\n");
++ break;
++ }
++ return 0;
++}
++
++/*
++int ts0710_send_data(ts0710_con *ts0710, __u8 dlci, __u8 *data, __u32 count)
++{
++ __u32 c, total = 0;
++ __u8 tag, first;
++
++ if( ts0710->dlci[0].state == FLOW_STOPPED ){
++ TS0710_DEBUG("Flow stopped on all channels, returning zero\n");
++*/
++/*
++ return -EFLOWSTOPPED;
++ } else if( ts0710->dlci[dlci].state == FLOW_STOPPED ){
++ TS0710_DEBUG("Flow stopped, returning zero\n");
++*/
++/*
++ return -EFLOWSTOPPED;
++ } else if( ts0710->dlci[dlci].state == CONNECTED ){
++
++ TS0710_DEBUG("trying to send %d bytes\n", count);
++ tag = *data;
++ first = 1;
++*/
++ /* The first byte is always a Cmd/Data tag */
++/*
++ while( count > 1 ){
++
++ c = min(count, ts0710->dlci[dlci].mtu);
++ if( queue_uih(data, c, ts0710, dlci) <= 0 ) {
++ break;
++ }
++
++ total += (c - 1);
++ data += (c - 1);
++ *data = tag;
++ count -= (c - 1);
++
++ if( first ) {
++ first = 0;
++ total++;
++ }
++ }
++ TS0710_DEBUG("sent %d bytes\n", total);
++ return total;
++ } else {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ return -EDISCONNECTED;
++ }
++}
++*/
++
++/* Close ts0710 channel */
++static void ts0710_close_channel(__u8 dlci)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int try;
++ unsigned long t;
++
++ TS0710_DEBUG("ts0710_disc_command on channel %d\n", dlci);
++
++ if ((ts0710->dlci[dlci].state == DISCONNECTED)
++ || (ts0710->dlci[dlci].state == REJECTED)) {
++ return;
++ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
++ /* Reentry */
++ return;
++ } else {
++ ts0710->dlci[dlci].state = DISCONNECTING;
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_disc(ts0710, dlci);
++ interruptible_sleep_on_timeout(&ts0710->dlci[dlci].
++ close_wait,
++ TS0710MUX_TIME_OUT);
++ if (ts0710->dlci[dlci].state == DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI %d Send DISC got signal!\n",
++ dlci);
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI %d Send DISC timeout!\n", dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[dlci].state != DISCONNECTED) {
++ if (dlci == 0) { /* Control Channel */
++ ts0710_upon_disconnect();
++ } else { /* Other Channel */
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ wake_up_interruptible(&ts0710->dlci[dlci].
++ close_wait);
++ ts0710_reset_dlci(dlci);
++ }
++ }
++ }
++}
++
++int ts0710_open_channel(__u8 dlci)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int try;
++ int retval;
++ unsigned long t;
++
++ retval = -ENODEV;
++ if (dlci == 0) { // control channel
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state == FLOW_STOPPED)) {
++ return 0;
++ } else if (ts0710->dlci[0].state == CONNECTING) {
++ /* Reentry */
++ TS0710_PRINTK
++ ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
++ current->pid, current->comm);
++ try = 11;
++ while (try--) {
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->dlci[0].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[0].state == REJECTED) {
++ retval = -EREJECTED;
++ break;
++ } else if (ts0710->dlci[0].state ==
++ DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting timeout!\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[0].state == CONNECTING) {
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = DISCONNECTED;
++ }
++ } else if ((ts0710->dlci[0].state != DISCONNECTED)
++ && (ts0710->dlci[0].state != REJECTED)) {
++ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ return retval;
++ } else {
++ ts0710->initiator = 1;
++ ts0710->dlci[0].state = CONNECTING;
++ ts0710->dlci[0].initiator = 1;
++ try = 10;
++ while (try--) {
++ t = jiffies;
++ send_sabm(ts0710, 0);
++ interruptible_sleep_on_timeout(&ts0710->dlci[0].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[0].state == CONNECTED)
++ || (ts0710->dlci[0].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[0].state == REJECTED) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got rejected!\n",
++ dlci);
++ retval = -EREJECTED;
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[0].state == CONNECTING) {
++ ts0710->dlci[0].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[0].open_wait);
++ }
++ } else { // other channel
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return retval;
++ } else if ((ts0710->dlci[dlci].state == CONNECTED)
++ || (ts0710->dlci[dlci].state == FLOW_STOPPED)) {
++ return 0;
++ } else if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ /* Reentry */
++ try = 8;
++ while (try--) {
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci[dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[dlci].state == CONNECTED)
++ || (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[dlci].state == REJECTED) {
++ retval = -EREJECTED;
++ break;
++ } else if (ts0710->dlci[dlci].state ==
++ DISCONNECTED) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Wait for connecting timeout!\n",
++ dlci);
++ continue;
++ } else
++ if ((ts0710->dlci[dlci].state ==
++ NEGOTIATING)
++ || (ts0710->dlci[dlci].state ==
++ CONNECTING)) {
++ continue;
++ }
++ }
++
++ if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
++ && (ts0710->dlci[dlci].state != REJECTED)) {
++ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ return retval;
++ } else {
++ ts0710->dlci[dlci].state = NEGOTIATING;
++ ts0710->dlci[dlci].initiator = 1;
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_pn_msg(ts0710, 7, ts0710->dlci[dlci].mtu,
++ 0, 0, dlci, 1);
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci[dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send pn_msg got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send pn_msg timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++
++ if (ts0710->dlci[dlci].state == CONNECTING) {
++ try = 3;
++ while (try--) {
++ t = jiffies;
++ send_sabm(ts0710, dlci);
++ interruptible_sleep_on_timeout(&ts0710->
++ dlci
++ [dlci].
++ open_wait,
++ TS0710MUX_TIME_OUT);
++ if ((ts0710->dlci[dlci].state ==
++ CONNECTED)
++ || (ts0710->dlci[dlci].state ==
++ FLOW_STOPPED)) {
++ retval = 0;
++ break;
++ } else if (ts0710->dlci[dlci].state ==
++ REJECTED) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got rejected!\n",
++ dlci);
++ retval = -EREJECTED;
++ break;
++ } else if (signal_pending(current)) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM got signal!\n",
++ dlci);
++ retval = -EAGAIN;
++ break;
++ } else if ((jiffies - t) >=
++ TS0710MUX_TIME_OUT) {
++ TS0710_PRINTK
++ ("MUX DLCI:%d Send SABM timeout!\n",
++ dlci);
++ continue;
++ }
++ }
++ }
++
++ if ((ts0710->dlci[dlci].state == NEGOTIATING)
++ || (ts0710->dlci[dlci].state == CONNECTING)) {
++ ts0710->dlci[dlci].state = DISCONNECTED;
++ }
++ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
++ }
++ }
++ return retval;
++}
++
++static int ts0710_exec_test_cmd(void)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 *f_buf; /* Frame buffer */
++ __u8 *d_buf; /* Data buffer */
++ int retval = -EFAULT;
++ int j;
++ unsigned long t;
++
++ if (ts0710->be_testing) {
++ /* Reentry */
++ t = jiffies;
++ interruptible_sleep_on_timeout(&ts0710->test_wait,
++ 3 * TS0710MUX_TIME_OUT);
++ if (ts0710->be_testing == 0) {
++ if (ts0710->test_errs == 0) {
++ retval = 0;
++ } else {
++ retval = -EFAULT;
++ }
++ } else if (signal_pending(current)) {
++ TS0710_DEBUG
++ ("Wait for Test_cmd response got signal!\n");
++ retval = -EAGAIN;
++ } else if ((jiffies - t) >= 3 * TS0710MUX_TIME_OUT) {
++ TS0710_DEBUG("Wait for Test_cmd response timeout!\n");
++ retval = -EFAULT;
++ }
++ } else {
++ ts0710->be_testing = 1; /* Set the flag */
++
++ f_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
++ d_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
++ if ((!f_buf) || (!d_buf)) {
++ if (f_buf) {
++ kfree(f_buf);
++ }
++ if (d_buf) {
++ kfree(d_buf);
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ ts0710->test_errs = TEST_PATTERN_SIZE;
++ wake_up_interruptible(&ts0710->test_wait);
++ return -ENOMEM;
++ }
++
++ for (j = 0; j < TEST_PATTERN_SIZE; j++) {
++ d_buf[j] = j & 0xFF;
++ }
++
++ t = jiffies;
++ ts0710_test_msg(ts0710, d_buf, TEST_PATTERN_SIZE, MCC_CMD,
++ f_buf);
++ interruptible_sleep_on_timeout(&ts0710->test_wait,
++ 2 * TS0710MUX_TIME_OUT);
++ if (ts0710->be_testing == 0) {
++ if (ts0710->test_errs == 0) {
++ retval = 0;
++ } else {
++ retval = -EFAULT;
++ }
++ } else if (signal_pending(current)) {
++ TS0710_DEBUG("Send Test_cmd got signal!\n");
++ retval = -EAGAIN;
++ } else if ((jiffies - t) >= 2 * TS0710MUX_TIME_OUT) {
++ TS0710_DEBUG("Send Test_cmd timeout!\n");
++ ts0710->test_errs = TEST_PATTERN_SIZE;
++ retval = -EFAULT;
++ }
++
++ ts0710->be_testing = 0; /* Clear the flag */
++ wake_up_interruptible(&ts0710->test_wait);
++
++ /* Release buffer */
++ if (f_buf) {
++ kfree(f_buf);
++ }
++ if (d_buf) {
++ kfree(d_buf);
++ }
++ }
++
++ return retval;
++}
++
++static void mux_sched_send(void)
++{
++
++#ifdef USB_FOR_MUX
++ schedule_work(&send_tqueue);
++#else
++ if (!tq_serial_for_mux) {
++ TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
++ __FUNCTION__);
++ return;
++ }
++ schedule_work(&send_tqueue);
++ mark_bh(SERIAL_BH);
++#endif
++
++}
++
++/****************************
++ * TTY driver routines
++*****************************/
++
++static void mux_close(struct tty_struct *tty, struct file *filp)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ __u8 cmdtty;
++ __u8 datatty;
++
++ UNUSED_PARAM(filp);
++
++ if (!tty) {
++ return;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++ if (mux_tty[line] > 0)
++ mux_tty[line]--;
++
++ dlci = tty2dlci[line];
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++ if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
++ if (dlci == 1) {
++ ts0710_close_channel(0);
++ TS0710_PRINTK
++ ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
++ TS0710_SIG2APLOGD();
++ }
++ ts0710_close_channel(dlci);
++ }
++
++ if (mux_tty[line] == 0) {
++ if ((mux_send_info_flags[line])
++ && (mux_send_info[line])
++ /*&& (mux_send_info[line]->filled == 0) */
++ ) {
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++ }
++
++ if ((mux_recv_info_flags[line])
++ && (mux_recv_info[line])
++ && (mux_recv_info[line]->total == 0)) {
++ mux_recv_info_flags[line] = 0;
++ free_mux_recv_struct(mux_recv_info[line]);
++ mux_recv_info[line] = 0;
++ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
++ }
++
++ ts0710_flow_on(dlci, ts0710);
++ schedule_work(&post_recv_tqueue);
++
++ wake_up_interruptible(&tty->read_wait);
++ wake_up_interruptible(&tty->write_wait);
++ tty->packet = 0;
++ }
++}
++
++static void mux_throttle(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ int i;
++ __u8 dlci;
++
++ if (!tty) {
++ return;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
++ line);
++
++ dlci = tty2dlci[line];
++ if ((ts0710->dlci[0].state != CONNECTED)
++ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
++ return;
++ } else if ((ts0710->dlci[dlci].state != CONNECTED)
++ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
++ return;
++ }
++
++ if (ts0710->dlci[dlci].flow_control) {
++ return;
++ }
++
++ for (i = 0; i < 3; i++) {
++ if (ts0710_msc_msg
++ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
++ continue;
++ } else {
++ TS0710_LOG("MUX Send Flow off on dlci %d\n", dlci);
++ ts0710->dlci[dlci].flow_control = 1;
++ break;
++ }
++ }
++}
++
++static void mux_unthrottle(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ mux_recv_struct *recv_info;
++
++ if (!tty) {
++ return;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ if ((!mux_recv_info_flags[line]) || (!mux_recv_info[line])) {
++ return;
++ }
++
++ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
++ line);
++
++ recv_info = mux_recv_info[line];
++ dlci = tty2dlci[line];
++
++ if (recv_info->total) {
++ recv_info->post_unthrottle = 1;
++ schedule_work(&post_recv_tqueue);
++ } else {
++ ts0710_flow_on(dlci, ts0710);
++ }
++}
++
++static int mux_chars_in_buffer(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int retval;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++
++ retval = TS0710MUX_MAX_CHARS_IN_BUF;
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG
++ ("Flow stopped on all channels, returning MAX chars in buffer\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning MAX chars in buffer\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ goto out;
++ }
++
++ if (!(mux_send_info_flags[line])) {
++ goto out;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ goto out;
++ }
++ if (send_info->filled) {
++ goto out;
++ }
++
++ retval = 0;
++
++ out:
++ return retval;
++}
++
++static int mux_chars_in_serial_buffer(struct tty_struct *tty)
++{
++ UNUSED_PARAM(tty);
++
++ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
++ TS0710_PRINTK
++ ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
++ __FUNCTION__);
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK
++ ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
++ __FUNCTION__);
++ TS0710_SIG2APLOGD();
++#endif
++
++ return 0;
++ }
++ return COMM_FOR_MUX_DRIVER->chars_in_buffer(COMM_FOR_MUX_TTY);
++}
++
++static int mux_write(struct tty_struct *tty,
++ const unsigned char *buf, int count)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++ __u8 *d_buf;
++ __u16 c;
++ __u8 post_recv;
++
++ if (count <= 0) {
++ return 0;
++ }
++
++ if (!tty) {
++ return 0;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS))
++ return -ENODEV;
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG
++ ("Flow stopped on all channels, returning zero /dev/mux%d\n",
++ line);
++ return 0;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning zero /dev/mux%d\n", line);
++ return 0;
++ } else if (ts0710->dlci[dlci].state == CONNECTED) {
++
++ if (!(mux_send_info_flags[line])) {
++ TS0710_PRINTK
++ ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
++ line);
++ return -ENODEV;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ TS0710_PRINTK
++ ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
++ line);
++ return -ENODEV;
++ }
++
++ c = min(count, (ts0710->dlci[dlci].mtu - 1));
++ if (c <= 0) {
++ return 0;
++ }
++
++ if (test_and_set_bit(BUF_BUSY, &send_info->flags))
++ return 0;
++
++ if (send_info->filled) {
++ clear_bit(BUF_BUSY, &send_info->flags);
++ return 0;
++ }
++
++ d_buf = ((__u8 *) send_info->buf) + TS0710MUX_SEND_BUF_OFFSET;
++ memcpy(&d_buf[1], buf, c);
++
++ TS0710_DEBUG("Prepare to send %d bytes from /dev/mux%d", c,
++ line);
++ if (iscmdtty[line]) {
++ TS0710_DEBUGSTR(&d_buf[1], c);
++ TS0710_DEBUG("CMDTAG");
++ d_buf[0] = CMDTAG;
++ } else {
++ TS0710_DEBUG("DATATAG");
++ d_buf[0] = DATATAG;
++ }
++
++ TS0710_DEBUGHEX(d_buf, c + 1);
++
++ send_info->frame = d_buf;
++ queue_uih(send_info, c + 1, ts0710, dlci);
++ send_info->filled = 1;
++ clear_bit(BUF_BUSY, &send_info->flags);
++
++ post_recv = 0;
++ if (dlci == TS0710MUX_GPRS1_DLCI) {
++ if (add_count
++ (TS0710MUX_GPRS1_SEND_COUNT_IDX, c) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2[TS0710MUX_GPRS1_SEND_COUNT_IDX]
++ += c;
++ }
++ } else if (dlci == TS0710MUX_GPRS2_DLCI) {
++ if (add_count
++ (TS0710MUX_GPRS2_SEND_COUNT_IDX, c) < 0) {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ mux_data_count2[TS0710MUX_GPRS2_SEND_COUNT_IDX]
++ += c;
++ }
++ }
++
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++
++ if (mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY) == 0) {
++ /* Sending bottom half should be
++ run after return from this function */
++ mux_sched_send();
++ }
++ return c;
++ } else {
++ TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
++ return -EDISCONNECTED;
++ }
++}
++
++static int mux_write_room(struct tty_struct *tty)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int retval;
++ int line;
++ __u8 dlci;
++ mux_send_struct *send_info;
++
++ retval = 0;
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++
++ dlci = tty2dlci[line];
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on all channels, returning ZERO\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped, returning ZERO\n");
++ goto out;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ goto out;
++ }
++
++ if (!(mux_send_info_flags[line])) {
++ goto out;
++ }
++ send_info = mux_send_info[line];
++ if (!send_info) {
++ goto out;
++ }
++ if (send_info->filled) {
++ goto out;
++ }
++
++ retval = ts0710->dlci[dlci].mtu - 1;
++
++ out:
++ return retval;
++}
++
++static int mux_ioctl(struct tty_struct *tty, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int line;
++ __u8 dlci;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(arg);
++
++ if (!tty) {
++ return -EIO;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return -ENODEV;
++ }
++
++ dlci = tty2dlci[line];
++ switch (cmd) {
++ case TS0710MUX_IO_MSC_HANGUP:
++ if (ts0710_msc_msg(ts0710, EA | RTR | DV, MCC_CMD, dlci) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_TEST_CMD:
++ return ts0710_exec_test_cmd();
++/*
++ case TS0710MUX_IO_DLCI_FC_ON:
++ if( line == 0 ) {
++ break;
++ }
++ if( ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_DLCI_FC_OFF:
++ if( line == 0 ) {
++ break;
++ }
++ if( ts0710_msc_msg(ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_FC_ON:
++ if( line != 0 ) {
++ break;
++ }
++ if( ts0710_fcon_msg(ts0710, MCC_CMD) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++
++ case TS0710MUX_IO_FC_OFF:
++ if( line != 0 ) {
++ break;
++ }
++ if( ts0710_fcoff_msg(ts0710, MCC_CMD) < 0) {
++ return -EAGAIN;
++ } else {
++ return 0;
++ }
++*/
++ default:
++ break;
++ }
++ return -ENOIOCTLCMD;
++}
++
++static void mux_flush_buffer(struct tty_struct *tty)
++{
++ int line;
++
++ if (!tty) {
++ return;
++ }
++
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ return;
++ }
++
++ TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
++
++ if ((mux_send_info_flags[line])
++ && (mux_send_info[line])
++ && (mux_send_info[line]->filled)) {
++
++ mux_send_info[line]->filled = 0;
++ }
++
++ wake_up_interruptible(&tty->write_wait);
++#ifdef SERIAL_HAVE_POLL_WAIT
++ wake_up_interruptible(&tty->poll_wait);
++#endif
++ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
++ tty->ldisc.write_wakeup) {
++ (tty->ldisc.write_wakeup) (tty);
++ }
++
++/*
++ if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
++ TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
++
++#ifndef USB_FOR_MUX
++ TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
++ TS0710_SIG2APLOGD();
++#endif
++
++ return;
++ }
++ return COMM_FOR_MUX_DRIVER->flush_buffer(COMM_FOR_MUX_TTY);
++*/
++}
++
++static int mux_open(struct tty_struct *tty, struct file *filp)
++{
++ int retval;
++ int line;
++ __u8 dlci;
++ __u8 cmdtty;
++ __u8 datatty;
++ mux_send_struct *send_info;
++ mux_recv_struct *recv_info;
++
++ UNUSED_PARAM(filp);
++
++ retval = -ENODEV;
++ if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
++
++#ifdef USB_FOR_MUX
++ TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
++#else
++ TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
++#endif
++
++ goto out;
++ }
++
++ if (!tty) {
++ goto out;
++ }
++ line = tty->index;
++ if ((line < 0) || (line >= NR_MUXS)) {
++ goto out;
++ }
++#ifdef TS0710SERVER
++ /* do nothing as a server */
++ mux_tty[line]++;
++ retval = 0;
++#else
++ mux_tty[line]++;
++ dlci = tty2dlci[line];
++
++/* if( dlci == 1 ) { */
++ /* Open server channel 0 first */
++ if ((retval = ts0710_open_channel(0)) != 0) {
++ TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
++ ts0710_init();
++
++ mux_tty[line]--;
++ goto out;
++ }
++/* } */
++
++ /* Allocate memory first. As soon as connection has been established, MUX may receive */
++ if (mux_send_info_flags[line] == 0) {
++ send_info =
++ (mux_send_struct *) kmalloc(sizeof(mux_send_struct),
++ GFP_KERNEL);
++ if (!send_info) {
++ retval = -ENOMEM;
++
++ mux_tty[line]--;
++ goto out;
++ }
++ send_info->length = 0;
++ send_info->flags = 0;
++ send_info->filled = 0;
++ mux_send_info[line] = send_info;
++ mux_send_info_flags[line] = 1;
++ TS0710_DEBUG("Allocate mux_send_info for /dev/mux%d", line);
++ }
++
++ if (mux_recv_info_flags[line] == 0) {
++ recv_info =
++ (mux_recv_struct *) kmalloc(sizeof(mux_recv_struct),
++ GFP_KERNEL);
++ if (!recv_info) {
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++ retval = -ENOMEM;
++
++ mux_tty[line]--;
++ goto out;
++ }
++ recv_info->length = 0;
++ recv_info->total = 0;
++ recv_info->mux_packet = 0;
++ recv_info->next = 0;
++ recv_info->no_tty = line;
++ recv_info->post_unthrottle = 0;
++ mux_recv_info[line] = recv_info;
++ mux_recv_info_flags[line] = 1;
++ TS0710_DEBUG("Allocate mux_recv_info for /dev/mux%d", line);
++ }
++
++ /* Now establish DLCI connection */
++ cmdtty = dlci2tty[dlci].cmdtty;
++ datatty = dlci2tty[dlci].datatty;
++ if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
++ if ((retval = ts0710_open_channel(dlci)) != 0) {
++ TS0710_PRINTK("MUX: Can't connected channel %d!\n",
++ dlci);
++ ts0710_reset_dlci(dlci);
++
++ mux_send_info_flags[line] = 0;
++ kfree(mux_send_info[line]);
++ mux_send_info[line] = 0;
++ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
++
++ mux_recv_info_flags[line] = 0;
++ free_mux_recv_struct(mux_recv_info[line]);
++ mux_recv_info[line] = 0;
++ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
++
++ mux_tty[line]--;
++ goto out;
++ }
++ }
++
++ retval = 0;
++#endif
++ out:
++ return retval;
++}
++
++/* mux dispatcher, call from serial.c receiver_chars() */
++void mux_dispatcher(struct tty_struct *tty)
++{
++ UNUSED_PARAM(tty);
++
++ schedule_work(&receive_tqueue);
++}
++
++/*For BP UART problem Begin*/
++#ifdef TS0710SEQ2
++static int send_ack(ts0710_con * ts0710, __u8 seq_num, __u8 bp_seq1,
++ __u8 bp_seq2)
++#else
++static int send_ack(ts0710_con * ts0710, __u8 seq_num)
++#endif
++{
++ __u8 buf[20];
++ short_frame *ack;
++
++#ifdef TS0710SEQ2
++ static __u16 ack_seq = 0;
++#endif
++
++ ack = (short_frame *) (buf + 1);
++ ack->h.addr.ea = 1;
++ ack->h.addr.cr = ((ts0710->initiator) & 0x1);
++ ack->h.addr.d = 0;
++ ack->h.addr.server_chn = 0;
++ ack->h.control = ACK;
++ ack->h.length.ea = 1;
++
++#ifdef TS0710SEQ2
++ ack->h.length.len = 5;
++ ack->data[0] = seq_num;
++ ack->data[1] = bp_seq1;
++ ack->data[2] = bp_seq2;
++ ack->data[3] = (ack_seq & 0xFF);
++ ack->data[4] = (ack_seq >> 8) & 0xFF;
++ ack_seq++;
++ ack->data[5] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
++#else
++ ack->h.length.len = 1;
++ ack->data[0] = seq_num;
++ ack->data[1] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
++#endif
++
++ return basic_write(ts0710, buf,
++ (sizeof(short_frame) + FCS_SIZE +
++ ack->h.length.len));
++}
++
++/*For BP UART problem End*/
++
++static void receive_worker(void *private_)
++{
++ struct tty_struct *tty = COMM_FOR_MUX_TTY;
++ int i, count;
++ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
++ static unsigned char *tbuf_ptr = &tbuf[0];
++ static unsigned char *start_flag = 0;
++ unsigned char *search, *to, *from;
++ short_frame *short_pkt;
++ long_frame *long_pkt;
++ static int framelen = -1;
++
++ /*For BP UART problem Begin */
++ static __u8 expect_seq = 0;
++ __u32 crc_error;
++ __u8 *uih_data_start;
++ __u32 uih_len;
++ /*For BP UART problem End */
++
++ UNUSED_PARAM(private_);
++
++ if (!tty)
++ return;
++
++#ifdef USB_FOR_MUX
++ TS0710_DEBUG("Receive following bytes from IPC-USB");
++#else
++ TS0710_DEBUG("Receive following bytes from UART");
++#endif
++
++ TS0710_DEBUGHEX(cp, count);
++
++ if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
++ TS0710_PRINTK
++ ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
++ count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
++ }
++
++ count = tty_buffer_request_room(tty, count);
++
++ for (i = 0; i < count; i++)
++ tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
++
++ tbuf_ptr += count;
++ search = &tbuf[0];
++
++ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
++ schedule_work(&receive_tqueue);
++ return;
++ }
++
++ if ((start_flag != 0) && (framelen != -1)) {
++ if ((tbuf_ptr - start_flag) < framelen) {
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++ return;
++ }
++ }
++
++ while (1) {
++ if (start_flag == 0) { /* Frame Start Flag not found */
++ framelen = -1;
++ while (search < tbuf_ptr) {
++ if (*search == TS0710_BASIC_FLAG) {
++ start_flag = search;
++ break;
++ }
++#ifdef TS0710LOG
++ else {
++ TS0710_LOG(">S %02x %c\n", *search,
++ *search);
++ }
++#endif
++
++ search++;
++ }
++
++ if (start_flag == 0) {
++ tbuf_ptr = &tbuf[0];
++ break;
++ }
++ } else { /* Frame Start Flag found */
++ /* 1 start flag + 1 address + 1 control + 1 or 2 length + lengths data + 1 FCS + 1 end flag */
++ /* For BP UART problem 1 start flag + 1 seq_num + 1 address + ...... */
++ /*if( (framelen == -1) && ((tbuf_ptr - start_flag) > TS0710_MAX_HDR_SIZE) ) */
++ if ((framelen == -1) && ((tbuf_ptr - start_flag) > (TS0710_MAX_HDR_SIZE + SEQ_FIELD_SIZE))) { /*For BP UART problem */
++ /*short_pkt = (short_frame *) (start_flag + 1); */
++ short_pkt = (short_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ if (short_pkt->h.length.ea == 1) { /* short frame */
++ /*framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1; */
++ framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1 + SEQ_FIELD_SIZE; /*For BP UART problem */
++ } else { /* long frame */
++ /*long_pkt = (long_frame *) (start_flag + 1); */
++ long_pkt = (long_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
++ /*framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH( long_pkt->h.length ) + 2; */
++ framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH(long_pkt->h.length) + 2 + SEQ_FIELD_SIZE; /*For BP UART problem */
++ }
++
++ /*if( framelen > TS0710MUX_MAX_TOTAL_FRAME_SIZE ) { */
++ if (framelen > (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)) { /*For BP UART problem */
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ (tbuf_ptr -
++ start_flag));
++ TS0710_PRINTK
++ ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
++ /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
++ __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
++ search = start_flag + 1;
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ }
++ }
++
++ if ((framelen != -1)
++ && ((tbuf_ptr - start_flag) >= framelen)) {
++ if (*(start_flag + framelen - 1) == TS0710_BASIC_FLAG) { /* OK, We got one frame */
++
++ /*For BP UART problem Begin */
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++
++ short_pkt =
++ (short_frame *) (start_flag +
++ ADDRESS_FIELD_OFFSET);
++ if ((short_pkt->h.length.ea) == 0) {
++ long_pkt =
++ (long_frame *) (start_flag +
++ ADDRESS_FIELD_OFFSET);
++ uih_len =
++ GET_LONG_LENGTH(long_pkt->h.
++ length);
++ uih_data_start =
++ long_pkt->h.data;
++
++ crc_error =
++ crc_check((__u8
++ *) (start_flag +
++ SLIDE_BP_SEQ_OFFSET),
++ LONG_CRC_CHECK +
++ 1,
++ *(uih_data_start +
++ uih_len));
++ } else {
++ uih_len =
++ short_pkt->h.length.len;
++ uih_data_start =
++ short_pkt->data;
++
++ crc_error =
++ crc_check((__u8
++ *) (start_flag +
++ SLIDE_BP_SEQ_OFFSET),
++ SHORT_CRC_CHECK +
++ 1,
++ *(uih_data_start +
++ uih_len));
++ }
++
++ if (!crc_error) {
++ if (expect_seq ==
++ *(start_flag +
++ SLIDE_BP_SEQ_OFFSET)) {
++ expect_seq++;
++ if (expect_seq >= 4) {
++ expect_seq = 0;
++ }
++#ifdef TS0710SEQ2
++ send_ack
++ (&ts0710_connection,
++ expect_seq,
++ *(start_flag +
++ FIRST_BP_SEQ_OFFSET),
++ *(start_flag +
++ SECOND_BP_SEQ_OFFSET));
++#else
++ send_ack
++ (&ts0710_connection,
++ expect_seq);
++#endif
++
++ ts0710_recv_data
++ (&ts0710_connection,
++ start_flag +
++ ADDRESS_FIELD_OFFSET,
++ framelen - 2 -
++ SEQ_FIELD_SIZE);
++ } else {
++
++#ifdef TS0710DEBUG
++ if (*
++ (start_flag +
++ SLIDE_BP_SEQ_OFFSET)
++ != 0x9F) {
++#endif
++
++ TS0710_LOG
++ ("MUX sequence number %d is not expected %d, discard data!\n",
++ *
++ (start_flag
++ +
++ SLIDE_BP_SEQ_OFFSET),
++ expect_seq);
++
++#ifdef TS0710SEQ2
++ send_ack
++ (&ts0710_connection,
++ expect_seq,
++ *
++ (start_flag
++ +
++ FIRST_BP_SEQ_OFFSET),
++ *
++ (start_flag
++ +
++ SECOND_BP_SEQ_OFFSET));
++#else
++ send_ack
++ (&ts0710_connection,
++ expect_seq);
++#endif
++
++#ifdef TS0710DEBUG
++ } else {
++ *(uih_data_start
++ + uih_len) =
++ 0;
++ TS0710_PRINTK
++ ("MUX bp log: %s\n",
++ uih_data_start);
++ }
++#endif
++
++ }
++ } else { /* crc_error */
++ search = start_flag + 1;
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ } /*End if(!crc_error) */
++
++ /*For BP UART problem End */
++
++/*For BP UART problem
++ TS0710_LOGSTR_FRAME(0, start_flag, framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++ ts0710_recv_data(&ts0710_connection, start_flag + 1, framelen - 2);
++*/
++ search = start_flag + framelen;
++ } else {
++ TS0710_LOGSTR_FRAME(0, start_flag,
++ framelen);
++ TS0710_DEBUGHEX(start_flag, framelen);
++ TS0710_PRINTK
++ ("MUX: Lost synchronization!\n");
++ search = start_flag + 1;
++ }
++
++ start_flag = 0;
++ framelen = -1;
++ continue;
++ }
++
++ if (start_flag != &tbuf[0]) {
++ to = tbuf;
++ from = start_flag;
++ count = tbuf_ptr - start_flag;
++ while (count--) {
++ *to++ = *from++;
++ }
++
++ tbuf_ptr -= (start_flag - tbuf);
++ start_flag = tbuf;
++ }
++ break;
++ } /* End Frame Start Flag found */
++ } /* End while(1) */
++
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++}
++
++static void post_recv_worker(void *private_)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ int tty_idx;
++ struct tty_struct *tty;
++ __u8 post_recv;
++ __u8 flow_control;
++ __u8 dlci;
++ mux_recv_struct *recv_info, *recv_info2, *post_recv_q;
++ int recv_room;
++ mux_recv_packet *recv_packet, *recv_packet2;
++ __u8 j;
++
++ UNUSED_PARAM(private_);
++
++ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
++ schedule_work(&post_recv_tqueue);
++ return;
++ }
++
++ TS0710_DEBUG("Enter into post_recv_worker");
++
++ post_recv = 0;
++ if (!mux_recv_queue) {
++ goto out;
++ }
++
++ post_recv_q = NULL;
++ recv_info2 = mux_recv_queue;
++ while ((recv_info = recv_info2)) {
++ recv_info2 = recv_info->next;
++
++ if (!(recv_info->total)) {
++ TS0710_PRINTK
++ ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
++ __FUNCTION__);
++ continue;
++ }
++
++ tty_idx = recv_info->no_tty;
++ dlci = tty2dlci[tty_idx];
++ tty = mux_table[tty_idx];
++ if ((!mux_tty[tty_idx]) || (!tty)) {
++ TS0710_PRINTK
++ ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
++ tty_idx);
++ mux_recv_info_flags[tty_idx] = 0;
++ free_mux_recv_struct(mux_recv_info[tty_idx]);
++ mux_recv_info[tty_idx] = 0;
++ ts0710_flow_on(dlci, ts0710);
++ continue;
++ }
++
++ TS0710_DEBUG("/dev/mux%d recv_info->total is: %d", tty_idx,
++ recv_info->total);
++
++ if (test_bit(TTY_THROTTLED, &tty->flags)) {
++ add_post_recv_queue(&post_recv_q, recv_info);
++ continue;
++ } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
++ post_recv = 1;
++ add_post_recv_queue(&post_recv_q, recv_info);
++ continue;
++ }
++
++ flow_control = 0;
++ recv_packet2 = recv_info->mux_packet;
++ while (recv_info->total) {
++ recv_room = 65535;
++ if (tty->receive_room)
++ recv_room = tty->receive_room;
++
++ if (recv_info->length) {
++ if (recv_room < recv_info->length) {
++ flow_control = 1;
++ break;
++ }
++
++ /* Put queued data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put queued recv data into read buffer of /dev/mux%d",
++ tty_idx);
++ TS0710_DEBUGHEX(recv_info->data,
++ recv_info->length);
++ (tty->ldisc.receive_buf) (tty, recv_info->data,
++ NULL,
++ recv_info->length);
++ recv_info->total -= recv_info->length;
++ recv_info->length = 0;
++ } else { /* recv_info->length == 0 */
++ if ((recv_packet = recv_packet2)) {
++ recv_packet2 = recv_packet->next;
++
++ if (recv_room < recv_packet->length) {
++ flow_control = 1;
++ recv_info->mux_packet =
++ recv_packet;
++ break;
++ }
++
++ /* Put queued data into read buffer of tty */
++ TS0710_DEBUG
++ ("Put queued recv data into read buffer of /dev/mux%d",
++ tty_idx);
++ TS0710_DEBUGHEX(recv_packet->data,
++ recv_packet->length);
++ (tty->ldisc.receive_buf) (tty,
++ recv_packet->
++ data, NULL,
++ recv_packet->
++ length);
++ recv_info->total -= recv_packet->length;
++ free_mux_recv_packet(recv_packet);
++ } else {
++ TS0710_PRINTK
++ ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
++ __FUNCTION__, recv_info->total);
++ }
++ } /* End recv_info->length == 0 */
++ } /* End while( recv_info->total ) */
++
++ if (!(recv_info->total)) {
++ /* Important clear */
++ recv_info->mux_packet = 0;
++
++ if (recv_info->post_unthrottle) {
++ /* Do something for post_unthrottle */
++ ts0710_flow_on(dlci, ts0710);
++ recv_info->post_unthrottle = 0;
++ }
++ } else {
++ add_post_recv_queue(&post_recv_q, recv_info);
++
++ if (flow_control) {
++ /* Do something for flow control */
++ if (recv_info->post_unthrottle) {
++ set_bit(TTY_THROTTLED, &tty->flags);
++ recv_info->post_unthrottle = 0;
++ } else {
++ ts0710_flow_off(tty, dlci, ts0710);
++ }
++ } /* End if( flow_control ) */
++ }
++ } /* End while( (recv_info = recv_info2) ) */
++
++ mux_recv_queue = post_recv_q;
++
++ out:
++ if (post_recv_count_flag) {
++ post_recv_count_flag = 0;
++ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
++ if (mux_data_count2[j] > 0) {
++ if (add_count(j, mux_data_count2[j]) == 0) {
++ mux_data_count2[j] = 0;
++ } else {
++ post_recv_count_flag = 1;
++ post_recv = 1;
++ }
++ }
++ } /* End for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) */
++ }
++ /* End if( post_recv_count_flag ) */
++ if (post_recv)
++ schedule_work(&post_recv_tqueue);
++ clear_bit(RECV_RUNNING, &mux_recv_flags);
++}
++
++/* mux sender, call from serial.c transmit_chars() */
++void mux_sender(void)
++{
++ mux_send_struct *send_info;
++ int chars;
++ __u8 idx;
++
++ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
++ if (!chars) {
++ /* chars == 0 */
++ TS0710_LOG("<[]\n");
++ mux_sched_send();
++ return;
++ }
++
++ idx = mux_send_info_idx;
++ if ((idx < NR_MUXS) && (mux_send_info_flags[idx])) {
++ send_info = mux_send_info[idx];
++ if ((send_info)
++ && (send_info->filled)
++ && (send_info->length <=
++ (TS0710MUX_SERIAL_BUF_SIZE - chars))) {
++
++ mux_sched_send();
++ }
++ }
++}
++
++static void send_worker(void *private_)
++{
++ ts0710_con *ts0710 = &ts0710_connection;
++ __u8 j;
++ mux_send_struct *send_info;
++ int chars;
++ struct tty_struct *tty;
++ __u8 dlci;
++
++ UNUSED_PARAM(private_);
++
++ TS0710_DEBUG("Enter into send_worker");
++
++ mux_send_info_idx = NR_MUXS;
++
++ if (ts0710->dlci[0].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on all channels\n");
++ return;
++ }
++
++ for (j = 0; j < NR_MUXS; j++) {
++
++ if (!(mux_send_info_flags[j])) {
++ continue;
++ }
++
++ send_info = mux_send_info[j];
++ if (!send_info) {
++ continue;
++ }
++
++ if (!(send_info->filled)) {
++ continue;
++ }
++
++ dlci = tty2dlci[j];
++ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ send_info->filled = 0;
++ continue;
++ }
++
++ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
++ if (send_info->length <= (TS0710MUX_SERIAL_BUF_SIZE - chars)) {
++ TS0710_DEBUG("Send queued UIH for /dev/mux%d", j);
++ basic_write(ts0710, (__u8 *) send_info->frame,
++ send_info->length);
++ send_info->length = 0;
++ send_info->filled = 0;
++ } else {
++ mux_send_info_idx = j;
++ break;
++ }
++ } /* End for() loop */
++
++ /* Queue UIH data to be transmitted */
++ for (j = 0; j < NR_MUXS; j++) {
++
++ if (!(mux_send_info_flags[j])) {
++ continue;
++ }
++
++ send_info = mux_send_info[j];
++ if (!send_info) {
++ continue;
++ }
++
++ if (send_info->filled) {
++ continue;
++ }
++
++ /* Now queue UIH data to send_info->buf */
++
++ if (!mux_tty[j]) {
++ continue;
++ }
++
++ tty = mux_table[j];
++ if (!tty) {
++ continue;
++ }
++
++ dlci = tty2dlci[j];
++ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
++ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
++ dlci);
++ continue;
++ } else if (ts0710->dlci[dlci].state != CONNECTED) {
++ TS0710_DEBUG("DLCI %d not connected\n", dlci);
++ continue;
++ }
++
++ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP))
++ && tty->ldisc.write_wakeup) {
++ (tty->ldisc.write_wakeup) (tty);
++ }
++ wake_up_interruptible(&tty->write_wait);
++
++#ifdef SERIAL_HAVE_POLL_WAIT
++ wake_up_interruptible(&tty->poll_wait);
++#endif
++
++ if (send_info->filled) {
++ if (j < mux_send_info_idx) {
++ mux_send_info_idx = j;
++ }
++ }
++ } /* End for() loop */
++}
++
++static int get_count(__u8 idx)
++{
++ int ret;
++
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++
++ down(&mux_data_count_mutex[idx]);
++ ret = mux_data_count[idx];
++ up(&mux_data_count_mutex[idx]);
++
++ return ret;
++}
++
++static int set_count(__u8 idx, int count)
++{
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++ if (count < 0) {
++ TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
++ return -1;
++ }
++
++ down(&mux_data_count_mutex[idx]);
++ mux_data_count[idx] = count;
++ up(&mux_data_count_mutex[idx]);
++
++ return 0;
++}
++
++static int add_count(__u8 idx, int count)
++{
++ if (idx > TS0710MUX_COUNT_MAX_IDX) {
++ TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
++ return -1;
++ }
++ if (count <= 0) {
++ TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
++ return -1;
++ }
++
++ if (down_trylock(&mux_data_count_mutex[idx]))
++ return -1;
++ mux_data_count[idx] += count;
++ up(&mux_data_count_mutex[idx]);
++
++ return 0;
++}
++
++ssize_t file_proc_read(struct file * file, char *buf, size_t size,
++ loff_t * ppos)
++{
++ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
++ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(size);
++ UNUSED_PARAM(ppos);
++
++ gprsData[0].recvBytes = get_count(TS0710MUX_GPRS1_RECV_COUNT_IDX);
++ gprsData[0].sentBytes = get_count(TS0710MUX_GPRS1_SEND_COUNT_IDX);
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes =
++ get_count(TS0710MUX_GPRS2_RECV_COUNT_IDX);
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes =
++ get_count(TS0710MUX_GPRS2_SEND_COUNT_IDX);
++
++ copy_to_user(buf, gprsData, bufLen);
++
++ return bufLen;
++}
++
++ssize_t file_proc_write(struct file * file, const char *buf, size_t count,
++ loff_t * ppos)
++{
++ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
++ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
++
++ UNUSED_PARAM(file);
++ UNUSED_PARAM(count);
++ UNUSED_PARAM(ppos);
++
++ memset(gprsData, 0, bufLen);
++
++ copy_from_user(gprsData, buf, bufLen);
++
++ set_count(TS0710MUX_GPRS1_RECV_COUNT_IDX, gprsData[0].recvBytes);
++ set_count(TS0710MUX_GPRS1_SEND_COUNT_IDX, gprsData[0].sentBytes);
++ set_count(TS0710MUX_GPRS2_RECV_COUNT_IDX,
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes);
++ set_count(TS0710MUX_GPRS2_SEND_COUNT_IDX,
++ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes);
++
++ return bufLen;
++}
++
++static void gprs_proc_init(void)
++{
++ gprs_proc_file =
++ create_proc_entry("gprsbytes", S_IRUSR | S_IWUSR, NULL);
++ gprs_proc_file->proc_fops = &file_proc_operations;
++}
++
++static void gprs_proc_exit(void)
++{
++ remove_proc_entry("gprsbytes", gprs_proc_file);
++}
++
++static int __init mux_init(void)
++{
++ __u8 j;
++
++ if (COMM_FOR_MUX_DRIVER == NULL) {
++
++#ifdef USB_FOR_MUX
++ panic("please install IPC-USB first\n");
++#else
++ panic("please install ttyS0 first\n");
++#endif
++
++ }
++
++ ts0710_init();
++
++ for (j = 0; j < NR_MUXS; j++) {
++ mux_send_info_flags[j] = 0;
++ mux_send_info[j] = 0;
++ mux_recv_info_flags[j] = 0;
++ mux_recv_info[j] = 0;
++ }
++ mux_send_info_idx = NR_MUXS;
++ mux_recv_queue = NULL;
++ mux_recv_flags = 0;
++
++ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
++ mux_data_count[j] = 0;
++ mux_data_count2[j] = 0;
++ init_MUTEX(&mux_data_count_mutex[j]);
++ }
++ post_recv_count_flag = 0;
++
++ INIT_WORK(&send_tqueue, send_worker, NULL);
++ INIT_WORK(&receive_tqueue, receive_worker, NULL);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++
++ memset(&mux_driver, 0, sizeof(struct tty_driver));
++ memset(&mux_tty, 0, sizeof(mux_tty));
++ mux_driver.magic = TTY_DRIVER_MAGIC;
++ mux_driver.driver_name = "ts0710mux";
++ mux_driver.name = "ts0710mux";
++ mux_driver.major = TS0710MUX_MAJOR;
++ mux_driver.minor_start = TS0710MUX_MINOR_START;
++ mux_driver.num = NR_MUXS;
++ mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
++ mux_driver.subtype = SERIAL_TYPE_NORMAL;
++ mux_driver.init_termios = tty_std_termios;
++ mux_driver.init_termios.c_iflag = 0;
++ mux_driver.init_termios.c_oflag = 0;
++ mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
++ mux_driver.init_termios.c_lflag = 0;
++ mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++
++ mux_driver.ttys = mux_table;
++ mux_driver.termios = mux_termios;
++ mux_driver.termios_locked = mux_termios_locked;
++// mux_driver.driver_state = mux_state;
++ mux_driver.other = NULL;
++
++ mux_driver.open = mux_open;
++ mux_driver.close = mux_close;
++ mux_driver.write = mux_write;
++ mux_driver.write_room = mux_write_room;
++ mux_driver.flush_buffer = mux_flush_buffer;
++ mux_driver.chars_in_buffer = mux_chars_in_buffer;
++ mux_driver.throttle = mux_throttle;
++ mux_driver.unthrottle = mux_unthrottle;
++ mux_driver.ioctl = mux_ioctl;
++ mux_driver.owner = THIS_MODULE;
++
++ if (tty_register_driver(&mux_driver))
++ panic("Couldn't register mux driver");
++
++ COMM_MUX_DISPATCHER = mux_dispatcher;
++ COMM_MUX_SENDER = mux_sender;
++
++ gprs_proc_init();
++
++ return 0;
++}
++
++static void __exit mux_exit(void)
++{
++ __u8 j;
++
++ COMM_MUX_DISPATCHER = NULL;
++ COMM_MUX_SENDER = NULL;
++
++ gprs_proc_exit();
++
++ mux_send_info_idx = NR_MUXS;
++ mux_recv_queue = NULL;
++ for (j = 0; j < NR_MUXS; j++) {
++ if ((mux_send_info_flags[j]) && (mux_send_info[j])) {
++ kfree(mux_send_info[j]);
++ }
++ mux_send_info_flags[j] = 0;
++ mux_send_info[j] = 0;
++
++ if ((mux_recv_info_flags[j]) && (mux_recv_info[j])) {
++ free_mux_recv_struct(mux_recv_info[j]);
++ }
++ mux_recv_info_flags[j] = 0;
++ mux_recv_info[j] = 0;
++ }
++
++ if (tty_unregister_driver(&mux_driver))
++ panic("Couldn't unregister mux driver");
++}
++
++module_init(mux_init);
++module_exit(mux_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_DESCRIPTION("TS 07.10 Multiplexer");
+Index: linux-2.6.24/drivers/char/ts0710_mux.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/char/ts0710_mux.h
+@@ -0,0 +1,103 @@
++/*
++ * mux_macro.h
++ *
++ * Copyright (C) 2002 2005 Motorola
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ *
++ * 11/18/2002 (Motorola) - Initial version
++ *
++ */
++
++/*
++* This header file should be included by both MUX and other applications
++* which access MUX device files. It gives the additional macro definitions
++* shared between MUX and applications.
++*/
++
++/* MUX DLCI(Data Link Connection Identifier) Configuration */
++/*
++* DLCI Service
++* 0 Control Channel
++* 1 Voice Call & Network-related
++* 2 SMS MO
++* 3 SMS MT
++* 4 Phonebook & related
++* 5 MISC
++* 6 CSD/FAX
++* 7 GPRS1
++* 8 GPRS2
++* 9 Logger CMD
++* 10 Logger Data
++* 11 Test CMD
++* 12 AGPS
++* 13 Net Monitor
++*/
++
++/* Mapping between DLCI and MUX device files */
++/*
++* File Name Minor DLCI AT Command/Data
++* /dev/mux0 0 1 AT Command
++* /dev/mux1 1 2 AT Command
++* /dev/mux2 2 3 AT Command
++* /dev/mux3 3 4 AT Command
++* /dev/mux4 4 5 AT Command
++* /dev/mux5 5 6 AT Command
++* /dev/mux6 6 7 AT Command
++* /dev/mux7 7 8 AT Command
++* /dev/mux8 8 6 Data
++* /dev/mux9 9 7 Data
++* /dev/mux10 10 8 Data
++* /dev/mux11 11 9 Data
++* /dev/mux12 12 10 Data
++* /dev/mux13 13 11 Data
++* /dev/mux14 14 12 Data
++* /dev/mux15 15 13 Data
++*/
++
++#define MUX_CMD_FILE_VOICE_CALL "/dev/mux0"
++#define MUX_CMD_FILE_SMS_MO "/dev/mux1"
++#define MUX_CMD_FILE_SMS_MT "/dev/mux2"
++#define MUX_CMD_FILE_PHONEBOOK "/dev/mux3"
++#define MUX_CMD_FILE_MISC "/dev/mux4"
++#define MUX_CMD_FILE_CSD "/dev/mux5"
++#define MUX_CMD_FILE_GPRS1 "/dev/mux6"
++#define MUX_CMD_FILE_GPRS2 "/dev/mux7"
++
++#define MUX_DATA_FILE_CSD "/dev/mux8"
++#define MUX_DATA_FILE_GPRS1 "/dev/mux9"
++#define MUX_DATA_FILE_GPRS2 "/dev/mux10"
++#define MUX_DATA_FILE_LOGGER_CMD "/dev/mux11"
++#define MUX_DATA_FILE_LOGGER_DATA "/dev/mux12"
++#define MUX_DATA_FILE_TEST_CMD "/dev/mux13"
++#define MUX_DATA_FILE_AGPS "/dev/mux14"
++#define MUX_DATA_FILE_NET_MONITOR "/dev/mux15"
++
++#define NUM_MUX_CMD_FILES 8
++#define NUM_MUX_DATA_FILES 8
++#define NUM_MUX_FILES ( NUM_MUX_CMD_FILES + NUM_MUX_DATA_FILES )
++
++/* Special ioctl() upon a MUX device file for hanging up a call */
++#define TS0710MUX_IO_MSC_HANGUP 0x54F0
++
++/* Special ioctl() upon a MUX device file for MUX loopback test */
++#define TS0710MUX_IO_TEST_CMD 0x54F1
++
++/* Special Error code might be return from write() to a MUX device file */
++#define EDISCONNECTED 900 /* Logical data link is disconnected */
++
++/* Special Error code might be return from open() to a MUX device file */
++#define EREJECTED 901 /* Logical data link connection request is rejected */
+Index: linux-2.6.24/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/char/ts0710_mux_usb.c
+@@ -0,0 +1,868 @@
++/*
++ * linux/drivers/usb/ipcusb.c
++ *
++ * Implementation of a ipc driver based Intel's Bulverde USB Host
++ * Controller.
++ *
++ * Copyright (C) 2003-2005 Motorola
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.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.
++ *
++ * 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
++ *
++ * 2003-Nov-03 - (Motorola) created
++ * 2004-Feb-20 - (Motorola) Add Power Manager codes
++ * 2004-Apr-14 - (Motorola) Update Suspend/Resume codes
++ * 2004-May-10 - (Motorola) Add unlink_urbs codes and do some updates of send
++ * out urb sequence
++ * 2006-Jun-22 - (Harald Welte) port to Linux 2.6.x
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/list.h>
++#include <linux/errno.h>
++#include <asm/uaccess.h>
++#include <asm/hardware.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch-pxa/pxa-regs.h>
++#include <asm/arch-pxa/ezx.h>
++#include <linux/slab.h>
++#include <linux/miscdevice.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/tty.h>
++#include <linux/tty_driver.h>
++#include <linux/tty_flip.h>
++#include <linux/circ_buf.h>
++#include <linux/usb.h>
++
++#include "ts0710_mux_usb.h"
++
++/*Macro defined for this driver*/
++#define DRIVER_VERSION "1.0alpha1"
++#define DRIVER_AUTHOR "Motorola / Harald Welte <laforge@openezx.org>"
++#define DRIVER_DESC "USB IPC Driver (TS07.10 lowlevel)"
++#define MOTO_IPC_VID 0x22b8
++#define MOTO_IPC_PID 0x3006
++#define IBUF_SIZE 32 /*urb size*/
++#define IPC_USB_XMIT_SIZE 1024
++#define IPC_URB_SIZE 32
++#define IPC_USB_WRITE_INIT 0
++#define IPC_USB_WRITE_XMIT 1
++#define IPC_USB_PROBE_READY 3
++#define IPC_USB_PROBE_NOT_READY 4
++#define DBG_MAX_BUF_SIZE 1024
++#define ICL_EVENT_INTERVAL (HZ)
++#undef BVD_DEBUG
++
++#define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
++#define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
++#define IS_EP_BULK_OUT(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)
++/*End defined macro*/
++
++/*global values defined*/
++static struct usb_driver usb_ipc_driver;
++static struct timer_list ipcusb_timer;
++static struct timer_list suspend_timer;
++static struct timer_list wakeup_timer;
++static struct tty_struct ipcusb_tty; /* the coresponding tty struct, we just use flip buffer here. */
++static struct tty_driver ipcusb_tty_driver; /* the coresponding tty driver, we just use write and chars in buff here*/
++struct tty_driver *usb_for_mux_driver = NULL;
++struct tty_struct *usb_for_mux_tty = NULL;
++void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
++void (*usb_mux_sender)(void) = NULL;
++void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
++void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
++EXPORT_SYMBOL(usb_for_mux_driver);
++EXPORT_SYMBOL(usb_for_mux_tty);
++EXPORT_SYMBOL(usb_mux_dispatcher);
++EXPORT_SYMBOL(usb_mux_sender);
++EXPORT_SYMBOL(ipcusb_ap_to_bp);
++EXPORT_SYMBOL(ipcusb_bp_to_ap);
++static int sumbit_times = 0;
++static int callback_times = 0;
++//static unsigned long last_jiff = 0;
++extern int usbh_finished_resume;
++/*end global values defined*/
++
++MODULE_AUTHOR(DRIVER_AUTHOR);
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_LICENSE("GPL");
++
++#ifdef BVD_DEBUG
++#define bvd_dbg(format, arg...) printk(__FILE__ ": " format "\n" , ## arg)
++#else
++#define bvd_dbg(format, arg...) do {} while (0)
++#endif
++
++/* USB device context */
++typedef struct {
++ struct list_head list;
++ int size;
++ char *body;
++} buf_list_t;
++
++struct ipc_usb_data {
++ u_int8_t write_finished_flag;
++ u_int8_t write_flag,
++ ipc_flag,
++ suspend_flag;
++ struct usb_device *ipc_dev;
++ struct urb readurb_mux,
++ writeurb_mux,
++ writeurb_dsplog;
++ char *obuf, *ibuf;
++ int writesize; /* max packet size for the
++ output bulk endpoint *
++ transfer buffers */
++
++ struct circ_buf xmit; /* write cric bufffer */
++ struct list_head in_buf_list;
++ char bulk_in_ep_mux,
++ bulk_out_ep_mux,
++ bulk_in_ep_dsplog;
++ unsigned int ifnum;
++
++ struct tasklet_struct bh,
++ bh_bp;
++
++ spinlock_t lock;
++};
++
++struct ipc_usb_data *bvd_ipc;
++
++#ifdef BVD_DEBUG
++static void bvd_dbg_hex(__u8 *buf, int len)
++{
++ static unsigned char tbuf[DBG_MAX_BUF_SIZE];
++ int i, c;
++
++ if (len <= 0)
++ return;
++
++ c = 0;
++ for (i=0; (i < len) && (c < (DBG_MAX_BUF_SIZE - 3)); i++) {
++ sprintf(&tbuf[c], "%02x ",buf[i]);
++ c += 3;
++ }
++ tbuf[c] = 0;
++
++ printk("%s: %s\n", __FUNCTION__, tbuf);
++}
++#else
++#define bvd_dbg_hex(buf, len)
++#endif
++
++static int unlink_urbs(struct urb *urb)
++{
++ unsigned long flags;
++ int retval;
++
++ spin_lock_irqsave(&bvd_ipc->lock, flags);
++
++ retval = usb_unlink_urb(urb);
++ if (retval != -EINPROGRESS && retval != 0)
++ printk("unlink urb err, %d", retval);
++
++ spin_unlock_irqrestore(&bvd_ipc->lock, flags);
++ return retval;
++}
++
++static void append_to_inbuf_list(struct urb *urb)
++{
++ buf_list_t *inbuf;
++ int count = urb->actual_length;
++
++ inbuf = kmalloc(sizeof(buf_list_t), GFP_KERNEL);
++ if (!inbuf) {
++ printk("append_to_inbuf_list: (%d) out of memory!\n",
++ sizeof(buf_list_t));
++ return;
++ }
++
++ inbuf->size = count;
++ inbuf->body = kmalloc(sizeof(char)*count, GFP_KERNEL);
++ if (!inbuf->body) {
++ kfree(inbuf);
++ printk("append_to_inbuf_list: (%d) out of memory!\n",
++ sizeof(char)*count);
++ return;
++ }
++ memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
++ list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
++}
++
++static void ipcusb_timeout(unsigned long data)
++{
++ struct tty_struct *tty = &ipcusb_tty;
++ struct urb *urb = (struct urb *)data;
++
++ bvd_dbg("ipcusb_timeout***");
++
++ while (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int count;
++ buf_list_t *inbuf;
++ struct list_head *ptr = NULL;
++
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry (ptr, buf_list_t, list);
++ count = inbuf->size;
++ if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
++ list_del(ptr);
++ kfree(inbuf->body);
++ inbuf->body = NULL;
++ kfree(inbuf);
++ } else {
++ bvd_dbg("ipcusb_timeout: bvd_ipc->in_buf_list empty!");
++ break;
++ }
++ }
++
++ if (usb_mux_dispatcher)
++ usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
++
++ if (list_empty(&bvd_ipc->in_buf_list)) {
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("ipcusb_timeout: failed resubmitting read urb");
++ bvd_dbg("ipcusb_timeout: resubmited read urb");
++ } else {
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++ }
++}
++
++static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
++{
++ buf_list_t *inbuf;
++ int count = urb->actual_length;
++ struct tty_struct *tty = &ipcusb_tty;
++
++ bvd_dbg("usb_ipc_read_bulk: begining!");
++ if (urb->status)
++ printk("nonzero read bulk status received: %d\n", urb->status);
++
++ bvd_dbg("usb_ipc_read_bulk: urb->actual_length=%d", urb->actual_length);
++ bvd_dbg("usb_ipc_read_bulk: urb->transfer_buffer:");
++
++ bvd_dbg_hex((unsigned char*)urb->transfer_buffer, urb->actual_length);
++
++ if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
++ (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
++
++ if (!(list_empty(&bvd_ipc->in_buf_list))) {
++ int need_mux = 0;
++
++ bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
++ if (count > 0) {
++ bvd_ipc->suspend_flag = 1;
++ append_to_inbuf_list(urb); /* append the current received urb */
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ }
++
++ while (!(list_empty(&bvd_ipc->in_buf_list))) {
++ struct list_head* ptr = NULL;
++ ptr = bvd_ipc->in_buf_list.next;
++ inbuf = list_entry(ptr, buf_list_t, list);
++ count = inbuf->size;
++ need_mux = 1;
++
++ tty_insert_flip_string(tty, inbuf->body, count);
++
++ list_del(ptr);
++ kfree(inbuf->body);
++ inbuf->body = NULL;
++ kfree(inbuf);
++ }
++
++ if (usb_mux_dispatcher && need_mux)
++ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
++
++ if (list_empty(&bvd_ipc->in_buf_list)) {
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("usb_ipc_read_bulk: "
++ "failed resubmitting read urb");
++ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
++ } else {
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++ }
++ } else if (count > 0) {
++ bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
++ bvd_ipc->suspend_flag = 1;
++
++ if (tty_insert_flip_string(tty, urb->transfer_buffer,
++ count) < count) {
++ bvd_ipc->suspend_flag = 1;
++ append_to_inbuf_list(urb);
++ ipcusb_timer.data = (unsigned long)urb;
++ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ }
++
++ if (usb_mux_dispatcher)
++ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
++
++ urb->actual_length = 0;
++ urb->dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(urb, GFP_ATOMIC))
++ bvd_dbg("failed resubmitting read urb");
++#if 0
++ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
++ {
++ last_jiff = jiffies;
++ queue_apm_event(KRNL_ICL, NULL);
++ }
++#endif
++ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
++ }
++
++ bvd_dbg("usb_ipc_read_bulk: completed!!!");
++}
++
++static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
++{
++ callback_times++;
++ bvd_ipc->write_finished_flag = 1;
++
++ bvd_dbg("usb_ipc_write_bulk: begining!");
++ //printk("%s: write_finished_flag=%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
++
++ if (urb->status)
++ printk("nonzero write bulk status received: %d\n", urb->status);
++
++ if (usb_mux_sender)
++ usb_mux_sender(); /**call Liu changhui's func**/
++
++ //printk("usb_ipc_write_bulk: mark ipcusb_softint!\n");
++ tasklet_schedule(&bvd_ipc->bh);
++
++ bvd_dbg("usb_ipc_write_bulk: finished!");
++}
++
++static void wakeup_timeout(unsigned long data)
++{
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
++}
++
++static void suspend_timeout(unsigned long data)
++{
++ if (bvd_ipc->suspend_flag == 1) {
++ bvd_ipc->suspend_flag = 0;
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ bvd_dbg("suspend_timeout: add the suspend timer again");
++ } else {
++ unlink_urbs(&bvd_ipc->readurb_mux);
++ UHCRHPS3 = 0x4;
++ mdelay(40);
++ bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
++ UHCRHPS3);
++ }
++}
++
++static void ipcusb_xmit_data(void)
++{
++ int c, count = IPC_URB_SIZE;
++ int result = 0;
++ int buf_flag = 0;
++ int buf_num = 0;
++
++ //printk("%s: sumbit_times=%d, callback_times=%d\n", __FUNCTION__, sumbit_times, callback_times);
++ if (bvd_ipc->write_finished_flag == 0)
++ return;
++
++ while (1) {
++ c = CIRC_CNT_TO_END(bvd_ipc->xmit.head, bvd_ipc->xmit.tail,
++ IPC_USB_XMIT_SIZE);
++ if (count < c)
++ c = count;
++ if (c <= 0)
++ break;
++
++ memcpy(bvd_ipc->obuf+buf_num,
++ bvd_ipc->xmit.buf + bvd_ipc->xmit.tail, c);
++ buf_flag = 1;
++ bvd_ipc->xmit.tail = ((bvd_ipc->xmit.tail + c)
++ & (IPC_USB_XMIT_SIZE-1));
++ count -= c;
++ buf_num += c;
++ }
++
++ if (buf_num == 0) {
++ bvd_dbg("ipcusb_xmit_data: buf_num=%d, add suspend_timer",
++ buf_num);
++ bvd_ipc->suspend_flag = 0;
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ }
++
++ bvd_dbg("ipcusb_xmit_data: buf_num=%d", buf_num);
++ bvd_dbg("ipcusb_xmit_data: bvd_ipc->obuf: ");
++
++ bvd_dbg_hex((bvd_ipc->obuf)-buf_num, buf_num);
++
++ if (buf_flag) {
++ bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
++ bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
++
++ if ((UHCRHPS3 & 0x4) == 0x4) {
++ static int ret;
++ int time = 0;
++
++ /* if BP sleep, wake up BP first */
++ pxa_gpio_mode(GPIO_IN | 41);
++ if (GPIO_is_high(41)) {
++ if (GPIO_is_high(GPIO_MCU_INT_SW))
++ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ else
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++
++ time = jiffies;
++ while (GPIO_is_high(41) && (jiffies < (time+HZ)));
++
++ if (GPIO_is_high(41)) {
++ printk("%s: Wakeup BP timeout! BP state is %d\n",
++ __FUNCTION__, GPIO_is_high(41));
++ }
++ if (GPIO_is_high(GPIO_MCU_INT_SW))
++ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ else
++ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
++ }
++
++ /* Resume BP */
++ UHCRHPS3 = 0x8;
++ mdelay(40);
++ bvd_dbg("ipcusb_xmit_data: Send RESUME signal! UHCRHPS3=0x%x",
++ UHCRHPS3);
++ /*send IN token*/
++ bvd_ipc->readurb_mux.actual_length = 0;
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
++ "failed! status=%d\n", ret);
++ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
++ }
++
++ sumbit_times++;
++ bvd_ipc->write_finished_flag = 0;
++ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
++ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
++ if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
++ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
++
++ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
++
++ }
++}
++
++static void usbipc_bh_func(unsigned long param)
++{
++ ipcusb_xmit_data();
++}
++
++extern void get_halted_bit(void);
++
++static void usbipc_bh_bp_func(unsigned long param)
++{
++ if ((UHCRHPS3 & 0x4) == 0x4) {
++ UHCRHPS3 = 0x8;
++ mdelay(40);
++ bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
++ "UHCRHPS3=0x%x", UHCRHPS3);
++ }
++ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
++ get_halted_bit();
++
++ /*send a IN token*/
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) {
++ bvd_dbg("ipcusb_softint_send_readurb: "
++ "usb_submit_urb(read mux bulk) failed!");
++ }
++ bvd_dbg("ipcusb_softint_send_readurb: Send a IN token successfully!");
++ bvd_ipc->suspend_flag = 0;
++ bvd_dbg("ipcusb_softint_send_readurb: add suspend_timer");
++ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
++ }
++}
++
++static int usb_ipc_write(struct tty_struct *tty,
++ const unsigned char *buf, int count)
++{
++ int c, ret = 0;
++
++ bvd_dbg("usb_ipc_write: count=%d, buf: ", count);
++ bvd_dbg_hex(buf, count);
++
++ if (count <= 0)
++ return 0;
++
++ if (*ipcusb_ap_to_bp != NULL)
++ (*ipcusb_ap_to_bp)(buf, count);
++
++ bvd_ipc->suspend_flag = 1;
++
++ if ((bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) &&
++ (bvd_ipc->xmit.head == bvd_ipc->xmit.tail)) {
++ bvd_dbg("usb_ipc_write: set write_flag");
++ bvd_ipc->write_flag = IPC_USB_WRITE_XMIT;
++ }
++
++ while (1) {
++ c = CIRC_SPACE_TO_END(bvd_ipc->xmit.head,
++ bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
++ if (count < c)
++ c = count;
++ if (c <= 0)
++ break;
++
++ memcpy(bvd_ipc->xmit.buf + bvd_ipc->xmit.head, buf, c);
++ bvd_ipc->xmit.head = ((bvd_ipc->xmit.head + c)
++ & (IPC_USB_XMIT_SIZE-1));
++ buf += c;
++ count -= c;
++ ret += c;
++ }
++ bvd_dbg("usb_ipc_write: ret=%d, bvd_ipc->xmit.buf: ", ret);
++
++ bvd_dbg_hex(bvd_ipc->xmit.buf, ret);
++
++ if (bvd_ipc->write_flag == IPC_USB_WRITE_XMIT) {
++ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++ bvd_dbg("usb_ipc_write: mark ipcusb_softint");
++ tasklet_schedule(&bvd_ipc->bh);
++ }
++
++ bvd_dbg("usb_ipc_write: ret=%d\n", ret);
++ return ret;
++}
++
++static int usb_ipc_chars_in_buffer(struct tty_struct *tty)
++{
++ return CIRC_CNT(bvd_ipc->xmit.head, bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
++}
++
++void usb_send_readurb(void)
++{
++ //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
++
++ if (usbh_finished_resume == 0)
++ return;
++
++ tasklet_schedule(&bvd_ipc->bh_bp);
++}
++
++static int usb_ipc_probe(struct usb_interface *intf,
++ const struct usb_device_id *id)
++{
++ struct usb_device *usbdev = interface_to_usbdev(intf);
++ struct usb_config_descriptor *ipccfg;
++ struct usb_interface_descriptor *interface;
++ struct usb_endpoint_descriptor *endpoint;
++ int ep_cnt, readsize, writesize;
++ char have_bulk_in_mux, have_bulk_out_mux;
++
++ bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",
++ usbdev->descriptor.idVendor, usbdev->descriptor.idProduct);
++
++ if ((usbdev->descriptor.idVendor != MOTO_IPC_VID) ||
++ (usbdev->descriptor.idProduct != MOTO_IPC_PID))
++ return -ENODEV;
++
++ /* a2590c : dsplog interface is not supported by this driver */
++ if (intf->minor == 2) /* dsplog interface number is 2 */
++ return -1;
++
++ bvd_dbg("usb_ipc_probe: USB dev address:%p", usbdev);
++ bvd_dbg("usb_ipc_probe: ifnum:%u", intf->minor);
++
++ ipccfg = &usbdev->actconfig->desc;
++ bvd_dbg("usb_ipc_prob: config%d", ipccfg->bConfigurationValue);
++ bvd_dbg("usb_ipc_prob: bNumInterfaces = %d", ipccfg->bNumInterfaces);
++
++ /* After this point we can be a little noisy about what we are trying
++ * to configure, hehe. */
++ if (usbdev->descriptor.bNumConfigurations != 1) {
++ info("usb_ipc_probe: Only one device configuration "
++ "is supported.");
++ return -1;
++ }
++
++ if (usbdev->config[0].desc.bNumInterfaces != 3) {
++ info("usb_ipc_probe: Only three device interfaces are "
++ "supported.");
++ return -1;
++ }
++
++ interface = &intf->cur_altsetting->desc;
++ endpoint = &intf->cur_altsetting->endpoint[0].desc;
++ /* Start checking for two bulk endpoints or ... FIXME: This is a future
++ * enhancement...*/
++ bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
++ (int) interface->bNumEndpoints);
++ if (interface->bNumEndpoints != 2) {
++ info("usb_ipc_probe: Only two endpoints supported.");
++ return -1;
++ }
++
++ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
++
++ bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
++ (&endpoint[0])->bEndpointAddress);
++ bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
++ (&endpoint[1])->bEndpointAddress);
++
++ while (ep_cnt < interface->bNumEndpoints) {
++
++ if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
++ (&endpoint[ep_cnt])->bEndpointAddress);
++ have_bulk_in_mux =
++ (&endpoint[ep_cnt])->bEndpointAddress;
++ readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
++ ep_cnt++;
++ continue;
++ }
++
++ if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
++ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
++ (&endpoint[ep_cnt])->bEndpointAddress);
++ have_bulk_out_mux =
++ (&endpoint[ep_cnt])->bEndpointAddress;
++ writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
++ bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
++ ep_cnt++;
++ continue;
++ }
++
++ info("usb_ipc_probe: Undetected endpoint ^_^ ");
++ /* Shouldn't ever get here unless we have something weird */
++ return -1;
++ }
++
++ /* Perform a quick check to make sure that everything worked as it
++ * should have. */
++
++ switch (interface->bNumEndpoints) {
++ case 2:
++ if (!have_bulk_in_mux || !have_bulk_out_mux) {
++ info("usb_ipc_probe: Two bulk endpoints required.");
++ return -1;
++ }
++ break;
++ default:
++ info("usb_ipc_probe: Endpoint determination failed ^_^ ");
++ return -1;
++ }
++
++ /* Ok, now initialize all the relevant values */
++ if (!(bvd_ipc->obuf = (char *)kmalloc(writesize, GFP_KERNEL))) {
++ err("usb_ipc_probe: Not enough memory for the output buffer.");
++ kfree(bvd_ipc);
++ return -1;
++ }
++ bvd_dbg("usb_ipc_probe: obuf address:%p", bvd_ipc->obuf);
++
++ if (!(bvd_ipc->ibuf = (char *)kmalloc(readsize, GFP_KERNEL))) {
++ err("usb_ipc_probe: Not enough memory for the input buffer.");
++ kfree(bvd_ipc->obuf);
++ kfree(bvd_ipc);
++ return -1;
++ }
++ bvd_dbg("usb_ipc_probe: ibuf address:%p", bvd_ipc->ibuf);
++
++ bvd_ipc->ipc_flag = IPC_USB_PROBE_READY;
++ bvd_ipc->write_finished_flag = 1;
++ bvd_ipc->suspend_flag = 1;
++ bvd_ipc->bulk_in_ep_mux= have_bulk_in_mux;
++ bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
++ bvd_ipc->ipc_dev = usbdev;
++ bvd_ipc->writesize = writesize;
++ INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
++
++ bvd_ipc->bh.func = usbipc_bh_func;
++ bvd_ipc->bh.data = (unsigned long) bvd_ipc;
++
++ bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
++ bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
++
++ /*Build a write urb*/
++ usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
++ usb_sndbulkpipe(bvd_ipc->ipc_dev,
++ bvd_ipc->bulk_out_ep_mux),
++ bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
++ bvd_ipc);
++ //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++
++ /*Build a read urb and send a IN token first time*/
++ usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
++ usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
++ bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
++ //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
++
++ usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
++ //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
++
++ // a2590c: dsplog is not supported by this driver
++ // usb_driver_claim_interface(&usb_ipc_driver,
++ // &ipccfg->interface[2], bvd_ipc);
++ /*send a IN token first time*/
++ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
++ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
++
++ bvd_dbg("usb_ipc_prob: Send a IN token successfully!");
++
++ if (bvd_ipc->xmit.head != bvd_ipc->xmit.tail) {
++ printk("usb_ipc_probe: mark ipcusb_softint!\n");
++ tasklet_schedule(&bvd_ipc->bh);
++ }
++
++ printk("usb_ipc_probe: completed probe!");
++ usb_set_intfdata(intf, &bvd_ipc);
++ return 0;
++}
++
++static void usb_ipc_disconnect(struct usb_interface *intf)
++{
++ //struct usb_device *usbdev = interface_to_usbdev(intf);
++ struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
++
++ printk("usb_ipc_disconnect:*** \n");
++
++ if ((UHCRHPS3 & 0x4) == 0)
++ usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
++
++ usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
++
++ bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
++ kfree(bvd_ipc_disconnect->ibuf);
++ kfree(bvd_ipc_disconnect->obuf);
++
++ usb_driver_release_interface(&usb_ipc_driver,
++ bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
++ usb_driver_release_interface(&usb_ipc_driver,
++ bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
++
++ //a2590c: dsplog interface is not supported by this driver
++ //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
++
++ bvd_ipc_disconnect->ipc_dev = NULL;
++
++ usb_set_intfdata(intf, NULL);
++
++ printk("usb_ipc_disconnect completed!\n");
++}
++
++static struct usb_device_id usb_ipc_id_table[] = {
++ { USB_DEVICE(MOTO_IPC_VID, MOTO_IPC_PID) },
++ { } /* Terminating entry */
++};
++
++static struct usb_driver usb_ipc_driver = {
++ .name = "usb ipc",
++ .probe = usb_ipc_probe,
++ .disconnect = usb_ipc_disconnect,
++ .id_table = usb_ipc_id_table,
++};
++
++static int __init usb_ipc_init(void)
++{
++ int result;
++
++ bvd_dbg("init usb_ipc");
++ /* register driver at the USB subsystem */
++ result = usb_register(&usb_ipc_driver);
++ if (result < 0) {
++ err ("usb ipc driver could not be registered");
++ return result;
++ }
++
++ /*init the related mux interface*/
++ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
++ err("usb_ipc_init: Out of memory.");
++ usb_deregister(&usb_ipc_driver);
++ return -ENOMEM;
++ }
++ bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
++
++ if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
++ err("usb_ipc_init: Not enough memory for the input buffer.");
++ kfree(bvd_ipc);
++ usb_deregister(&usb_ipc_driver);
++ return -ENOMEM;
++ }
++ bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
++ bvd_ipc->xmit.buf);
++ bvd_ipc->ipc_dev = NULL;
++ bvd_ipc->xmit.head = bvd_ipc->xmit.tail = 0;
++ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
++
++ ipcusb_tty_driver.write = usb_ipc_write;
++ ipcusb_tty_driver.chars_in_buffer = usb_ipc_chars_in_buffer;
++
++ usb_for_mux_driver = &ipcusb_tty_driver;
++ usb_for_mux_tty = &ipcusb_tty;
++
++ /* init timers for ipcusb read process and usb suspend */
++ init_timer(&ipcusb_timer);
++ ipcusb_timer.function = ipcusb_timeout;
++
++ init_timer(&suspend_timer);
++ suspend_timer.function = suspend_timeout;
++
++ init_timer(&wakeup_timer);
++ wakeup_timer.function = wakeup_timeout;
++
++ info("USB Host(Bulverde) IPC driver registered.");
++ info(DRIVER_VERSION ":" DRIVER_DESC);
++
++ return 0;
++}
++
++static void __exit usb_ipc_exit(void)
++{
++ bvd_dbg("cleanup bvd_ipc");
++
++ kfree(bvd_ipc->xmit.buf);
++ kfree(bvd_ipc);
++ usb_deregister(&usb_ipc_driver);
++
++ info("USB Host(Bulverde) IPC driver deregistered.");
++}
++
++module_init(usb_ipc_init);
++module_exit(usb_ipc_exit);
++EXPORT_SYMBOL(usb_send_readurb);
+Index: linux-2.6.24/drivers/char/ts0710_mux_usb.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/char/ts0710_mux_usb.h
+@@ -0,0 +1,29 @@
++/*
++ * linux/drivers/usb/ipcusb.h
++ *
++ * Implementation of a ipc driver based Intel's Bulverde USB Host
++ * Controller.
++ *
++ * Copyright (C) 2003-2005 Motorola
++ *
++ * 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
++ *
++ * 2003-Nov-18 - (Motorola) created
++ *
++ */
++extern struct tty_driver *usb_for_mux_driver;
++extern struct tty_struct *usb_for_mux_tty;
++extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
++extern void (*usb_mux_sender)(void);
diff --git a/packages/linux/linux-ezx-2.6.24/patches/mux_debug.patch b/packages/linux/linux-ezx-2.6.24/patches/mux_debug.patch
new file mode 100644
index 0000000000..58cb25a0b6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/mux_debug.patch
@@ -0,0 +1,551 @@
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 12:24:18.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 12:26:47.000000000 +0200
+@@ -85,6 +85,9 @@
+ #include "ts0710.h"
+ #include "ts0710_mux.h"
+
++#define TS0710DEBUG
++#define PRINT_OUTPUT_PRINTK
++
+ #define TS0710MUX_GPRS_SESSION_MAX 2
+ #define TS0710MUX_MAJOR 250
+ #define TS0710MUX_MINOR_START 0
+@@ -316,7 +319,7 @@
+ #ifdef TS0710DEBUG
+
+ #ifdef PRINT_OUTPUT_PRINTK
+-#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
++#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX %s: " fmt "\n" , __func__, ## arg)
+ #else
+ #include "ezxlog.h"
+ static __u8 strDebug[256];
+@@ -530,10 +533,10 @@
+ if (strncmp(p->comm, "aplogd", 6) == 0) {
+ sig = 1;
+ if (send_sig(SIGUSR2, p, 1) == 0) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: success to send SIGUSR2 to aplogd!\n");
+ } else {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: failure to send SIGUSR2 to aplogd!\n");
+ }
+ break;
+@@ -542,7 +545,7 @@
+ read_unlock(&tasklist_lock);
+
+ if (!sig) {
+- TS0710_PRINTK("MUX: not found aplogd!\n");
++ TS0710_DEBUG("MUX: not found aplogd!\n");
+ }
+ }
+ #else
+@@ -559,11 +562,11 @@
+ buf[len + 1] = TS0710_BASIC_FLAG;
+
+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
+ TS0710_SIG2APLOGD();
+ #endif
+@@ -577,7 +580,7 @@
+ res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
+
+ if (res != len + 2) {
+- TS0710_PRINTK("MUX basic_write: Write Error!\n");
++ TS0710_DEBUG("MUX basic_write: Write Error!\n");
+ return -1;
+ }
+
+@@ -601,7 +604,7 @@
+ TS0710_DEBUG("crc_check: CRC check OK\n");
+ return 0;
+ } else {
+- TS0710_PRINTK("MUX crc_check: CRC check failed\n");
++ TS0710_DEBUG("MUX crc_check: CRC check failed\n");
+ return 1;
+ }
+ }
+@@ -1266,7 +1269,7 @@
+ break;
+
+ case FCON: /*Flow control on command */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Received Flow control(all channels) on command\n");
+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
+ ts0710->dlci[0].state = CONNECTED;
+@@ -1276,7 +1279,7 @@
+ break;
+
+ case FCOFF: /*Flow control off command */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Received Flow control(all channels) off command\n");
+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
+ for (j = 0; j < TS0710_MAX_CHN; j++) {
+@@ -1823,7 +1826,7 @@
+ TS0710_DEBUG("UIH on channel %d\n", dlci);
+
+ if (uih_len > ts0710->dlci[dlci].mtu) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
+ dlci, uih_len, ts0710->dlci[dlci].mtu);
+ break;
+@@ -1844,7 +1847,7 @@
+ dlci, tty_idx);
+ TS0710_DEBUGSTR(uih_data_start, uih_len);
+ if (!(iscmdtty[tty_idx])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
+ __FUNCTION__, dlci, tty_idx);
+ }
+@@ -1856,7 +1859,7 @@
+ ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
+ dlci, tty_idx);
+ if (iscmdtty[tty_idx]) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
+ __FUNCTION__, dlci, tty_idx);
+ }
+@@ -1864,13 +1867,14 @@
+ }
+ tty = mux_table[tty_idx];
+ if ((!mux_tty[tty_idx]) || (!tty)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: No application waiting for, discard it! /dev/mux%d\n",
+ tty_idx);
++ TS0710_DEBUG("MUX: mux_tty[%d] = %d, tty is at %i", tty_idx, mux_tty[tty_idx], tty);
+ } else { /* Begin processing received data */
+ if ((!mux_recv_info_flags[tty_idx])
+ || (!mux_recv_info[tty_idx])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
+ tty_idx);
+ break;
+@@ -1878,7 +1882,7 @@
+
+ recv_info = mux_recv_info[tty_idx];
+ if (recv_info->total > 8192) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
+ tty_idx);
+ break;
+@@ -1949,7 +1953,7 @@
+ get_mux_recv_packet
+ (uih_len);
+ if (!recv_packet) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: no memory\n",
+ __FUNCTION__);
+ break;
+@@ -1980,7 +1984,7 @@
+ } else { /* recv_info->total == 0 */
+ if (uih_len >
+ TS0710MUX_RECV_BUF_SIZE) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
+ tty_idx, uih_len);
+ uih_len =
+@@ -2120,12 +2124,12 @@
+ if (ts0710->dlci[dlci].state == DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI %d Send DISC got signal!\n",
+ dlci);
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI %d Send DISC timeout!\n", dlci);
+ continue;
+ }
+@@ -2158,7 +2162,7 @@
+ return 0;
+ } else if (ts0710->dlci[0].state == CONNECTING) {
+ /* Reentry */
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
+ current->pid, current->comm);
+ try = 11;
+@@ -2179,13 +2183,13 @@
+ DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting timeout!\n",
+ dlci);
+ continue;
+@@ -2199,7 +2203,7 @@
+ }
+ } else if ((ts0710->dlci[0].state != DISCONNECTED)
+ && (ts0710->dlci[0].state != REJECTED)) {
+- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
+ return retval;
+ } else {
+ ts0710->initiator = 1;
+@@ -2218,19 +2222,19 @@
+ retval = 0;
+ break;
+ } else if (ts0710->dlci[0].state == REJECTED) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got rejected!\n",
+ dlci);
+ retval = -EREJECTED;
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM timeout!\n",
+ dlci);
+ continue;
+@@ -2271,13 +2275,13 @@
+ DISCONNECTED) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Wait for connecting timeout!\n",
+ dlci);
+ continue;
+@@ -2296,7 +2300,7 @@
+ }
+ } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
+ && (ts0710->dlci[dlci].state != REJECTED)) {
+- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
++ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
+ return retval;
+ } else {
+ ts0710->dlci[dlci].state = NEGOTIATING;
+@@ -2313,13 +2317,13 @@
+ if (ts0710->dlci[dlci].state == CONNECTING) {
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send pn_msg got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send pn_msg timeout!\n",
+ dlci);
+ continue;
+@@ -2344,20 +2348,20 @@
+ break;
+ } else if (ts0710->dlci[dlci].state ==
+ REJECTED) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got rejected!\n",
+ dlci);
+ retval = -EREJECTED;
+ break;
+ } else if (signal_pending(current)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM got signal!\n",
+ dlci);
+ retval = -EAGAIN;
+ break;
+ } else if ((jiffies - t) >=
+ TS0710MUX_TIME_OUT) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX DLCI:%d Send SABM timeout!\n",
+ dlci);
+ continue;
+@@ -2468,7 +2472,7 @@
+ schedule_work(&send_tqueue);
+ #else
+ if (!tq_serial_for_mux) {
+- TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
++ TS0710_DEBUG("MUX Error: %s: tq_serial_for_mux == 0\n",
+ __FUNCTION__);
+ return;
+ }
+@@ -2508,7 +2512,7 @@
+ if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
+ if (dlci == 1) {
+ ts0710_close_channel(0);
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
+ TS0710_SIG2APLOGD();
+ }
+@@ -2673,12 +2677,12 @@
+ UNUSED_PARAM(tty);
+
+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
+ __FUNCTION__);
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
+ __FUNCTION__);
+ TS0710_SIG2APLOGD();
+@@ -2724,14 +2728,14 @@
+ } else if (ts0710->dlci[dlci].state == CONNECTED) {
+
+ if (!(mux_send_info_flags[line])) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
+ line);
+ return -ENODEV;
+ }
+ send_info = mux_send_info[line];
+ if (!send_info) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
+ line);
+ return -ENODEV;
+@@ -2800,7 +2804,7 @@
+ }
+ return c;
+ } else {
+- TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
++ TS0710_DEBUG("MUX mux_write: DLCI %d not connected\n", dlci);
+ return -EDISCONNECTED;
+ }
+ }
+@@ -2940,7 +2944,7 @@
+ return;
+ }
+
+- TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
++ TS0710_DEBUG("MUX %s: line is:%d\n", __FUNCTION__, line);
+
+ if ((mux_send_info_flags[line])
+ && (mux_send_info[line])
+@@ -2960,10 +2964,10 @@
+
+ /*
+ if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
+- TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
++ TS0710_DEBUG("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
+
+ #ifndef USB_FOR_MUX
+- TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
++ TS0710_DEBUG("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
+ TS0710_SIG2APLOGD();
+ #endif
+
+@@ -2989,9 +2993,9 @@
+ if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
+
+ #ifdef USB_FOR_MUX
+- TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
++ TS0710_DEBUG("MUX: please install and open IPC-USB first\n");
+ #else
+- TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
++ TS0710_DEBUG("MUX: please install and open ttyS0 first\n");
+ #endif
+
+ goto out;
+@@ -3016,7 +3020,7 @@
+ /* if( dlci == 1 ) { */
+ /* Open server channel 0 first */
+ if ((retval = ts0710_open_channel(0)) != 0) {
+- TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
++ TS0710_DEBUG("MUX: Can't connect server channel 0!\n");
+ ts0710_init();
+
+ mux_tty[line]--;
+@@ -3073,7 +3077,7 @@
+ datatty = dlci2tty[dlci].datatty;
+ if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
+ if ((retval = ts0710_open_channel(dlci)) != 0) {
+- TS0710_PRINTK("MUX: Can't connected channel %d!\n",
++ TS0710_DEBUG("MUX: Can't connected channel %d!\n",
+ dlci);
+ ts0710_reset_dlci(dlci);
+
+@@ -3096,6 +3100,7 @@
+ retval = 0;
+ #endif
+ out:
++ TS0710_DEBUG("returning %d for open of /dev/mux%d (mux_tty[%d] = %d", retval, line, line, mux_tty[line]);
+ return retval;
+ }
+
+@@ -3178,12 +3183,12 @@
+
+ while (1) {
+ tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
+- TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
++ TS0710_DEBUG("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
+ tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
+ if (tbuf_read == 0) {
+ break;
+ } else {
+- TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
++ TS0710_DEBUG("Read %i bytes.\n", tbuf_read);
+ };
+ tbuf_ptr += tbuf_read;
+ };
+@@ -3192,7 +3197,7 @@
+
+ // Should be impossible?
+ //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
+- // TS0710_PRINTK
++ // TS0710_DEBUG
+ // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
+ // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
+ //}
+@@ -3264,7 +3269,7 @@
+ TS0710_LOGSTR_FRAME(0, start_flag,
+ (tbuf_ptr -
+ start_flag));
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
+ /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
+ __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
+@@ -3389,7 +3394,7 @@
+ *(uih_data_start
+ + uih_len) =
+ 0;
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX bp log: %s\n",
+ uih_data_start);
+ }
+@@ -3415,7 +3420,7 @@
+ TS0710_LOGSTR_FRAME(0, start_flag,
+ framelen);
+ TS0710_DEBUGHEX(start_flag, framelen);
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: Lost synchronization!\n");
+ search = start_flag + 1;
+ }
+@@ -3476,7 +3481,7 @@
+ recv_info2 = recv_info->next;
+
+ if (!(recv_info->total)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
+ __FUNCTION__);
+ continue;
+@@ -3486,7 +3491,7 @@
+ dlci = tty2dlci[tty_idx];
+ tty = mux_table[tty_idx];
+ if ((!mux_tty[tty_idx]) || (!tty)) {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
+ tty_idx);
+ mux_recv_info_flags[tty_idx] = 0;
+@@ -3560,7 +3565,7 @@
+ recv_info->total -= recv_packet->length;
+ free_mux_recv_packet(recv_packet);
+ } else {
+- TS0710_PRINTK
++ TS0710_DEBUG
+ ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
+ __FUNCTION__, recv_info->total);
+ }
+@@ -3760,7 +3765,7 @@
+ int ret;
+
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX get_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+
+@@ -3774,11 +3779,11 @@
+ static int set_count(__u8 idx, int count)
+ {
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX set_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+ if (count < 0) {
+- TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
++ TS0710_DEBUG("MUX set_count: invalid count: %d!\n", count);
+ return -1;
+ }
+
+@@ -3792,11 +3797,11 @@
+ static int add_count(__u8 idx, int count)
+ {
+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
+- TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
++ TS0710_DEBUG("MUX add_count: invalid idx: %d!\n", idx);
+ return -1;
+ }
+ if (count <= 0) {
+- TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
++ TS0710_DEBUG("MUX add_count: invalid count: %d!\n", count);
+ return -1;
+ }
+
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
+@@ -72,7 +72,8 @@
+ #define IPC_USB_PROBE_NOT_READY 4
+ #define DBG_MAX_BUF_SIZE 1024
+ #define ICL_EVENT_INTERVAL (HZ)
+-#undef BVD_DEBUG
++
++#define BVD_DEBUG
+
+ #define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
+ #define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pcap-ts.patch b/packages/linux/linux-ezx-2.6.24/patches/pcap-ts.patch
new file mode 100644
index 0000000000..47cc1a36bb
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pcap-ts.patch
@@ -0,0 +1,363 @@
+Index: linux-2.6.24/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/input/touchscreen/Kconfig
++++ linux-2.6.24/drivers/input/touchscreen/Kconfig
+@@ -263,4 +263,13 @@
+ bool "GoTop Super_Q2/GogoPen/PenPower tablet device support" if EMBEDDED
+ depends on TOUCHSCREEN_USB_COMPOSITE
+
++config TOUCHSCREEN_PCAP
++ tristate "Motorola PCAP touchscreen"
++ depends on EZX_PCAP
++ help
++ Say Y here if you have a Motorola EZX telephone and
++ want to support the built-in touchscreen.
++
++ If unsure, say N.
++
+ endif
+Index: linux-2.6.24/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/input/touchscreen/pcap_ts.c
+@@ -0,0 +1,331 @@
++/*
++ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
++ * in the EZX phone platform.
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ * Copyright (C) 2007 Daniel Ribeiro <wyrm@openezx.org>
++ *
++ * Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
++ *
++ * 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.
++ *
++ * TODO:
++ * split this in a hardirq handler and a tasklet/bh
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/fs.h>
++#include <linux/string.h>
++#include <linux/pm.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++
++#if 0
++#define DEBUGP(x, args ...) printk(x, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++#define POSITION_X_MEASUREMENT 0
++#define POSITION_XY_MEASUREMENT 1
++#define PRESSURE_MEASUREMENT 2
++#define PLATE_X_MEASUREMENT 3
++#define PLATE_Y_MEASUREMENT 4
++#define STANDBY_MODE 5
++#define NONTS_MODE 6
++
++struct pcap_ts {
++ int irq_xy;
++ int irq_touch;
++ struct input_dev *input;
++ struct timer_list timer;
++ u_int16_t x, y;
++ u_int16_t pressure;
++ u_int8_t read_state;
++};
++
++#define X_AXIS_MIN 0
++#define X_AXIS_MAX 1023
++
++#define Y_AXIS_MAX X_AXIS_MAX
++#define Y_AXIS_MIN X_AXIS_MIN
++
++#define PRESSURE_MAX X_AXIS_MAX
++#define PRESSURE_MIN X_AXIS_MIN
++
++/* if we try to read faster, pressure reading becomes unreliable */
++#define SAMPLE_INTERVAL (HZ/50)
++
++
++static void pcap_ts_mode(struct pcap_ts *pcap_ts, u_int32_t mode)
++{
++ u_int32_t tmp;
++
++ pcap_ts->read_state = mode;
++ ezx_pcap_read(PCAP_REG_ADC1, &tmp);
++ tmp &= ~PCAP_ADC1_TS_M_MASK;
++ tmp |= ((mode << PCAP_ADC1_TS_M_SHIFT) & PCAP_ADC1_TS_M_MASK);
++ ezx_pcap_write(PCAP_REG_ADC1, tmp);
++}
++
++/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE interrupt
++ * once the result of the conversion is available */
++static void pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(PCAP_REG_ADC1, &tmp);
++ tmp &= ~(PCAP_BIT_ADC1_RAND | PCAP_ADC1_ADA1_MASK |
++ PCAP_ADC1_ADA2_MASK);
++ tmp |= (PCAP_BIT_ADC1_ADEN | PCAP_BIT_ADC1_AD_SEL1 |
++ PCAP_BIT_ADC1_AD_SEL2 | (5 << PCAP_ADC1_ADA1_SHIFT) |
++ (3 << PCAP_ADC1_ADA2_SHIFT));
++ ezx_pcap_write(PCAP_REG_ADC1, tmp);
++ ezx_pcap_bit_set(PCAP_BIT_ADC2_ASC, 1);
++}
++
++/* read the XY result from the ADC of PCAP2 */
++static void pcap_ts_get_xy_value(struct pcap_ts *pcap_ts)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(PCAP_REG_ADC2, &tmp);
++
++ if (pcap_ts->read_state == POSITION_XY_MEASUREMENT) {
++ pcap_ts->x = (tmp & PCAP_ADC2_ADD1_MASK) >>
++ PCAP_ADC2_ADD1_SHIFT;
++ pcap_ts->y = (tmp & PCAP_ADC2_ADD2_MASK) >>
++ PCAP_ADC2_ADD2_SHIFT;
++ } else {
++ pcap_ts->pressure = (tmp & PCAP_ADC2_ADD2_MASK) >>
++ PCAP_ADC2_ADD2_SHIFT;
++ }
++}
++
++/* PCAP2 interrupts us when ADC conversion result is available */
++static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++
++ pcap_ts_get_xy_value(pcap_ts);
++ DEBUGP(KERN_DEBUG "%s X=%4d, Y=%4d Z=%4d ",
++ pcap_ts->read_state == POSITION_XY_MEASUREMENT ? "COORD" :
++ "PRESS", pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
++ switch (pcap_ts->read_state) {
++ case PRESSURE_MEASUREMENT:
++ if (pcap_ts->pressure >= PRESSURE_MAX ||
++ pcap_ts->pressure <= PRESSURE_MIN ) {
++ /* pen has been released (or cant read pressure - WM)*/
++ DEBUGP("UP\n");
++ /* do nothing */
++ } else {
++ /* pen has been touched down */
++ DEBUGP("DOWN\n");
++ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
++ }
++ /* switch state machine into coordinate read mode */
++ pcap_ts_mode(pcap_ts, POSITION_XY_MEASUREMENT);
++ pcap_ts_start_xy_read(pcap_ts);
++ break;
++ case POSITION_XY_MEASUREMENT:
++ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
++ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
++ /* pen has been released */
++ DEBUGP("UP END\n");
++
++ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++
++ /* ask PCAP2 to interrupt us if touch event happens
++ * again */
++ pcap_ts_mode(pcap_ts, STANDBY_MODE);
++ enable_irq(pcap_ts->irq_touch);
++ } else {
++ DEBUGP("DOWN\n");
++ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
++ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++
++ /* switch back to pressure read mode */
++ pcap_ts_mode(pcap_ts, PRESSURE_MEASUREMENT);
++ mod_timer(&pcap_ts->timer, jiffies + SAMPLE_INTERVAL);
++ }
++ input_sync(pcap_ts->input);
++ break;
++ default:
++ DEBUGP("ERROR\n");
++ break;
++ }
++ return IRQ_HANDLED;
++}
++
++/* PCAP2 interrupts us if the pen touches down (interrupts also on pen up - WM)*/
++static irqreturn_t pcap_ts_irq_touch(int irq, void *dev_id)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++ /* mask Touchscreen interrupt bit, prevents further touch events
++ * from being reported to us until we're finished with reading
++ * both pressure and x/y from ADC */
++ disable_irq(pcap_ts->irq_touch);
++
++ DEBUGP("touched!!\n");
++ pcap_ts_mode(pcap_ts, PRESSURE_MEASUREMENT);
++ pcap_ts_start_xy_read(pcap_ts);
++ return IRQ_HANDLED;
++}
++
++static void pcap_ts_timer_fn(unsigned long data)
++{
++ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
++
++ pcap_ts_start_xy_read(pcap_ts);
++}
++
++static int __init ezxts_probe(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts;
++ struct input_dev *input_dev;
++ int err = -ENOMEM;
++
++ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!pcap_ts || !input_dev)
++ goto fail;
++
++ pcap_ts->irq_xy = platform_get_irq(pdev, 0);
++ if (pcap_ts->irq_xy < 0) {
++ err = pcap_ts->irq_xy;
++ goto fail;
++ }
++
++ pcap_ts->irq_touch = platform_get_irq(pdev, 1);
++ if (pcap_ts->irq_touch < 0) {
++ err = pcap_ts->irq_touch;
++ goto fail;
++ }
++
++ ezx_pcap_bit_set(PCAP_BIT_ADC1_TS_REFENB, 0);
++ pcap_ts_mode(pcap_ts, STANDBY_MODE);
++
++ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, IRQF_DISABLED,
++ "pcap-ts X/Y", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab xy irq %d: %d\n",
++ pcap_ts->irq_xy, err);
++ goto fail;
++ }
++
++ err = request_irq(pcap_ts->irq_touch, pcap_ts_irq_touch, IRQF_DISABLED,
++ "pcap-ts touch", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab touch irq %d: %d\n",
++ pcap_ts->irq_touch, err);
++ goto fail_xy;
++ }
++
++ pcap_ts->input = input_dev;
++ init_timer(&pcap_ts->timer);
++ pcap_ts->timer.data = (unsigned long) pcap_ts;
++ pcap_ts->timer.function = &pcap_ts_timer_fn;
++
++ platform_set_drvdata(pdev, pcap_ts);
++
++ input_dev->name = "pcap-touchscreen";
++ input_dev->phys = "ezxts/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0002;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pcap_ts;
++
++ input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
++ input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
++ input_set_abs_params(input_dev, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_PRESSURE, PRESSURE_MIN,
++ PRESSURE_MAX, 0, 0);
++
++ input_register_device(pcap_ts->input);
++
++ return 0;
++
++fail_xy:
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++fail:
++ input_free_device(input_dev);
++ kfree(pcap_ts);
++
++ return err;
++}
++
++static int ezxts_remove(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts = platform_get_drvdata(pdev);
++
++ del_timer_sync(&pcap_ts->timer);
++
++ free_irq(pcap_ts->irq_touch, pcap_ts);
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++
++ input_unregister_device(pcap_ts->input);
++ kfree(pcap_ts);
++
++ return 0;
++}
++
++static int ezxts_suspend(struct platform_device *dev, pm_message_t state)
++{
++ ezx_pcap_bit_set(PCAP_BIT_ADC1_TS_REF_LOWPWR, 1);
++ return 0;
++}
++
++static int ezxts_resume(struct platform_device *dev)
++{
++ ezx_pcap_bit_set(PCAP_BIT_ADC1_TS_REF_LOWPWR, 0);
++ /* just in case we suspend with TSI masked. */
++// ezx_pcap_bit_set(PCAP_BIT_MSR_TSM, 0);
++ return 0;
++}
++
++
++static struct platform_driver ezxts_driver = {
++ .probe = ezxts_probe,
++ .remove = ezxts_remove,
++ .suspend = ezxts_suspend,
++ .resume = ezxts_resume,
++ .driver = {
++ .name = "pcap-ts",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ezxts_init(void)
++{
++ return platform_driver_register(&ezxts_driver);
++}
++
++static void __exit ezxts_exit(void)
++{
++ platform_driver_unregister(&ezxts_driver);
++}
++
++module_init(ezxts_init);
++module_exit(ezxts_exit);
++
++MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/input/touchscreen/Makefile
++++ linux-2.6.24/drivers/input/touchscreen/Makefile
+@@ -19,3 +19,4 @@
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
++obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxa-kbd.patch b/packages/linux/linux-ezx-2.6.24/patches/pxa-kbd.patch
new file mode 100644
index 0000000000..d272a701ba
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxa-kbd.patch
@@ -0,0 +1,547 @@
+Index: linux-2.6.24/arch/arm/mach-pxa/generic.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/generic.c
++++ linux-2.6.24/arch/arm/mach-pxa/generic.c
+@@ -38,6 +38,7 @@
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/irda.h>
+ #include <asm/arch/i2c.h>
++#include <asm/arch/kbd.h>
+
+ #include "devices.h"
+ #include "generic.h"
+@@ -479,3 +480,28 @@
+ .name = "sa1100-rtc",
+ .id = -1,
+ };
++
++static struct resource pxa_kbd_resources[] = {
++ {
++ .start = IRQ_KEYPAD,
++ .end = IRQ_KEYPAD,
++ .flags = IORESOURCE_IRQ,
++ }, {
++ .start = 0x41500000,
++ .end = 0x4150004c,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++struct platform_device pxa_device_kbd = {
++ .name = "pxa-keyboard",
++ .id = -1,
++ .resource = pxa_kbd_resources,
++ .num_resources = ARRAY_SIZE(pxa_kbd_resources),
++};
++
++void __init pxa_set_kbd_info(struct pxakbd_platform_data *info)
++{
++ pxa_device_kbd.dev.platform_data = info;
++}
++
+Index: linux-2.6.24/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/input/keyboard/Kconfig
++++ linux-2.6.24/drivers/input/keyboard/Kconfig
+@@ -293,4 +293,11 @@
+ To compile this driver as a module, choose M here: the
+ module will be called bf54x-keys.
+
++config KEYBOARD_PXA
++ tristate "Intel PXA keyboard support"
++ depends on ARCH_PXA
++ help
++ This add support for a driver of the Intel PXA2xx keyboard
++ controller.
++
+ endif
+Index: linux-2.6.24/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/input/keyboard/Makefile
++++ linux-2.6.24/drivers/input/keyboard/Makefile
+@@ -25,3 +25,4 @@
+ obj-$(CONFIG_KEYBOARD_HP7XX) += jornada720_kbd.o
+ obj-$(CONFIG_KEYBOARD_MAPLE) += maple_keyb.o
+ obj-$(CONFIG_KEYBOARD_BFIN) += bf54x-keys.o
++obj-$(CONFIG_KEYBOARD_PXA) += pxakbd.o
+Index: linux-2.6.24/include/asm-arm/arch-pxa/kbd.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/include/asm-arm/arch-pxa/kbd.h
+@@ -0,0 +1,28 @@
++/*
++ * kbd_pxa.h
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * 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.
++ *
++ */
++#ifndef _KBD_PXA_H_
++#define _KBD_PXA_H_
++
++struct pxakbd_platform_data {
++ int (*init)(void); /* init gpio, etc. */
++ unsigned int scan_interval;
++ struct {
++ unsigned int rows;
++ unsigned int cols;
++ unsigned char *keycode;
++ } matrix;
++ struct {
++ unsigned int num;
++ unsigned char *keycode;
++ } direct;
++};
++
++#endif
+Index: linux-2.6.24/drivers/input/keyboard/pxakbd.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/input/keyboard/pxakbd.c
+@@ -0,0 +1,403 @@
++/*
++ * Driver for Motorola EZX phone "keyboard"
++ *
++ * (C) 2006 by Harald Welte <laforge@openezx.org>
++ *
++ * May, 2007 - Daniel Ribeiro <wyrm@openezx.org>
++ * pm callbacks
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/input.h>
++#include <linux/spinlock.h>
++#include <linux/platform_device.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/kbd.h>
++#include <asm/arch/irqs.h>
++#include <asm/arch/pxa-regs.h>
++
++#if 0
++#define DEBUGP(x, args ...) printk(x, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++/* per-keyboard private data structure */
++struct pxakbd {
++ struct input_dev *input;
++ struct timer_list timer;
++ spinlock_t lock;
++
++ struct resource *res;
++ unsigned int irq;
++ u_int32_t kpc;
++ u_int32_t kpkdi;
++
++ struct pxakbd_platform_data *pd;
++};
++
++static int pxakbd_scan_direct(struct pxakbd *pxakbd)
++{
++ u_int32_t kpdk;
++ unsigned int i;
++ int num_pressed = 0;
++
++ kpdk = KPDK & 0x000000ff;
++ for (i = 0; i < pxakbd->pd->direct.num; i++) {
++ int pressed = 0;
++
++ if (kpdk & (1 << i)) {
++ pressed = 1;
++ num_pressed++;
++ DEBUGP("pxakbd: pressed: direct %u\n", i);
++ }
++ if (pxakbd->pd->direct.keycode[i] != KEY_RESERVED) {
++ DEBUGP( "pxakbd: sending to input layer: keycode = %d, pressed = %d\n", pxakbd->pd->direct.keycode[i], pressed );
++ input_report_key(pxakbd->input, pxakbd->pd->direct.keycode[i],
++ pressed);
++ }
++ }
++ return num_pressed;
++}
++
++/* read the full 8x8 matrix from the PXA27x keypad controller */
++static inline void __read_matrix(u_int8_t *matrix)
++{
++ u_int32_t tmp;
++ u_int8_t row;
++
++ /* Fill the matrix by rows */
++
++ tmp = KPASMKP0;
++ for (row=0; row<8; row++) {
++ /* zero the matrix on the first time, then keep ORing */
++ matrix[row] = ((tmp >> row) & 1);
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 1;
++ }
++
++ tmp = KPASMKP1;
++ for (row=0; row<8; row++) {
++ matrix[row] |= ((tmp >> row) & 1) << 2;
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 3;
++ }
++
++ tmp = KPASMKP2;
++ for (row=0; row<8; row++) {
++ matrix[row] |= ((tmp >> row) & 1) << 4;
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 5;
++ }
++
++ tmp = KPASMKP3;
++ for (row=0; row<8; row++) {
++ matrix[row] |= ((tmp >> row) & 1) << 6;
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 7;
++ }
++}
++
++/* compare current matrix with last, generate 'diff' events */
++static int __cmp_matrix_gen_events(struct pxakbd *pxakbd, u_int8_t *matrix)
++{
++ unsigned int i;
++ int num_pressed = 0;
++
++ /* iterate over the matrix */
++ for (i = 0; i < pxakbd->pd->matrix.rows; i++) {
++ unsigned int j;
++ for (j = 0; j < pxakbd->pd->matrix.cols; j++) {
++ u_int32_t scancode =
++ (i * pxakbd->pd->matrix.cols) + j;
++ int pressed = matrix[i] & (1 << j);
++
++ if (pressed) {
++ DEBUGP("pxakbd: pressed: %u/%u\n", i, j);
++ num_pressed++;
++ }
++
++ input_report_key(pxakbd->input,
++ pxakbd->pd->matrix.keycode[scancode], pressed);
++ }
++ }
++
++ return num_pressed;
++}
++
++/* scan the matrix keypad */
++static int pxakbd_scan_matrix(struct pxakbd *pxakbd)
++{
++ int num_pressed;
++ u_int32_t kpas;
++ u_int8_t matrix[8];
++
++ kpas = KPAS;
++
++ if ((kpas & KPAS_MUKP) == KPAS_MUKP_NONE) {
++ /* no keys pressed */
++ memset(matrix, 0, sizeof(matrix));
++ } else if ((kpas & KPAS_MUKP) == KPAS_MUKP_ONE) {
++ /* one key pressed */
++ u_int8_t row = (kpas & KPAS_RP) >> 4;
++ u_int8_t col = kpas & KPAS_CP;
++
++ if (row == 0x0f || col == 0x0f) {
++ printk(KERN_WARNING "pxakbd: col or row invalid!\n");
++ return -1;
++ }
++
++ /* clear the matrix and set the single pressed key */
++ memset(matrix, 0, sizeof(matrix));
++ matrix[row] |= (1 << col);
++ } else {
++ /* multiple keys pressed */
++ __read_matrix(matrix);
++ }
++
++ num_pressed = __cmp_matrix_gen_events(pxakbd, matrix);
++
++ return num_pressed;
++}
++
++static void pxakbd_timer_callback(unsigned long data)
++{
++ unsigned long flags;
++ struct pxakbd *pxakbd = (struct pxakbd *) data;
++ unsigned int num_pressed;
++
++ spin_lock_irqsave(&pxakbd->lock, flags);
++
++ num_pressed = pxakbd_scan_direct(pxakbd);
++ num_pressed += pxakbd_scan_matrix(pxakbd);
++
++ spin_unlock_irqrestore(&pxakbd->lock, flags);
++
++ /* propagate events up the input stack */
++ input_sync(pxakbd->input);
++}
++
++static irqreturn_t pxakbd_interrupt(int irq, void *dummy)
++{
++ struct pxakbd *pxakbd = dummy;
++ u_int32_t kpc;
++ int handled = 0;
++ int num_pressed = 0;
++
++ /* read and clear interrupt */
++ kpc = KPC;
++
++ if (kpc & KPC_DI) {
++ num_pressed += pxakbd_scan_direct(pxakbd);
++ handled = 1;
++ }
++
++ if (kpc & KPC_MI) {
++ while (KPAS & KPAS_SO) {
++ /* wait for scan to complete beforereading scan regs */
++ cpu_relax();
++ }
++ num_pressed += pxakbd_scan_matrix(pxakbd);
++ handled = 1;
++ }
++
++ /* If any keys are currently pressed, we need to start the timer to detect
++ * key release. */
++ if (num_pressed)
++ mod_timer(&pxakbd->timer, jiffies + pxakbd->pd->scan_interval);
++
++ /* propagate events up the input stack */
++ input_sync(pxakbd->input);
++
++ return IRQ_RETVAL(handled);
++}
++
++static int __init pxakbd_probe(struct platform_device *pdev)
++{
++ struct pxakbd *pxakbd;
++ struct input_dev *input_dev;
++ struct resource *r;
++ int i;
++ int ret = -ENOMEM;
++
++ int rows, cols, n_direct;
++
++ if (!pdev->dev.platform_data) {
++ printk(KERN_ERR "pxakbd: platform data not set\n");
++ ret = -ENODEV;
++ goto out;
++ }
++
++ pxakbd = kzalloc(sizeof(*pxakbd), GFP_KERNEL);
++ if (!pxakbd)
++ goto out;
++
++ input_dev = input_allocate_device();
++ if (!input_dev)
++ goto out_pxa;
++
++ spin_lock_init(&pxakbd->lock);
++ pxakbd->irq = platform_get_irq(pdev, 0);
++ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!r || pxakbd->irq == NO_IRQ) {
++ printk(KERN_ERR "pxakbd: invalid resources\n");
++ ret = -EBUSY;
++ goto out_idev;
++ }
++
++ pxakbd->input = input_dev;
++ init_timer(&pxakbd->timer);
++ pxakbd->timer.function = pxakbd_timer_callback;
++ pxakbd->timer.data = (unsigned long) pxakbd;
++ pxakbd->pd = pdev->dev.platform_data;
++ pxakbd->res = r;
++
++ rows = pxakbd->pd->matrix.rows;
++ cols = pxakbd->pd->matrix.cols;
++ n_direct = pxakbd->pd->direct.num;
++
++ input_dev->name = "pxa-keyboard";
++ input_dev->phys = "pxakbd/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0001;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pxakbd;
++
++ input_dev->evbit[0] = BIT(EV_KEY)|BIT(EV_REP);
++
++ input_dev->keycodesize = sizeof(unsigned char);
++ input_dev->keycodemax = (rows*cols)+n_direct;
++ input_dev->keycode = kmalloc(input_dev->keycodemax*input_dev->keycodesize,
++ GFP_KERNEL);
++ if (!input_dev->keycode){
++ ret = -ENOMEM;
++ goto out_idev;
++ }
++
++ memcpy(input_dev->keycode, pxakbd->pd->matrix.keycode, rows*cols);
++
++ memcpy(input_dev->keycode+(rows*cols),
++ pxakbd->pd->direct.keycode,
++ n_direct);
++
++ for (i = 0; i < rows*cols; i++)
++ set_bit(pxakbd->pd->matrix.keycode[i], input_dev->keybit);
++
++ for (i = 0; i < n_direct; i++)
++ set_bit(pxakbd->pd->direct.keycode[i], input_dev->keybit);
++
++ clear_bit(0, input_dev->keybit);
++
++ if (request_irq(pxakbd->irq, pxakbd_interrupt, 0, "pxakbd", pxakbd)) {
++ printk(KERN_ERR "pxakbd: can't request irq %d\n", pxakbd->irq);
++ ret = -EBUSY;
++ goto out_idev;
++ }
++
++ r = request_mem_region(r->start, 0x4c, "pxakbd");
++ if (!r) {
++ printk(KERN_ERR "pxakbd: can't request memregion\n");
++ ret = -EBUSY;
++ goto out_irq;
++ }
++
++ /* set up gpio */
++ pxakbd->pd->init();
++
++ /* set keypad control register */
++ KPC = (KPC_ASACT | /* automatic scan on activity */
++ KPC_ME | KPC_DE | /* matrix and direct keypad enabled */
++ ((pxakbd->pd->matrix.cols-1)<<23) | /* columns */
++ ((pxakbd->pd->matrix.rows-1)<<26) | /* rows */
++ ((pxakbd->pd->direct.num-1)<<6) | /* direct keys */
++ KPC_MS_ALL); /* scan all columns */
++
++ pxa_set_cken(CKEN_KEYPAD, 1);
++
++ KPC |= (KPC_DIE | KPC_MIE); /* enable matrix and direct keyboard */
++
++ KPKDI = 0x40; /* matrix key debounce interval: 0x40 */
++
++ platform_set_drvdata(pdev, pxakbd);
++
++ return input_register_device(pxakbd->input);
++
++out_drvdata:
++ platform_set_drvdata(pdev, NULL);
++out_mem:
++ release_resource(r);
++out_irq:
++ free_irq(pxakbd->irq, pxakbd);
++out_idev:
++ kfree(input_dev->keycode);
++ input_free_device(input_dev);
++out_pxa:
++ kfree(pxakbd);
++out:
++ return ret;
++}
++
++static int pxakbd_remove(struct platform_device *pdev)
++{
++ struct pxakbd *pxakbd = platform_get_drvdata(pdev);
++
++ kfree(pxakbd->input->keycode);
++ input_unregister_device(pxakbd->input);
++ platform_set_drvdata(pdev, NULL);
++ release_resource(pxakbd->res);
++ free_irq(pxakbd->irq, pxakbd);
++ kfree(pxakbd);
++
++ return 0;
++}
++
++static int pxakbd_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct pxakbd *pxakbd = platform_get_drvdata(pdev);
++
++ pxakbd->kpc = KPC;
++ pxakbd->kpkdi = KPKDI;
++
++ return 0;
++}
++
++static int pxakbd_resume(struct platform_device *pdev)
++{
++ struct pxakbd *pxakbd = platform_get_drvdata(pdev);
++
++ KPC = pxakbd->kpc;
++ KPKDI = pxakbd->kpkdi;
++
++ return 0;
++}
++
++static struct platform_driver pxakbd_driver = {
++ .probe = &pxakbd_probe,
++ .remove = &pxakbd_remove,
++ .suspend = &pxakbd_suspend,
++ .resume = &pxakbd_resume,
++ .driver = {
++ .name = "pxa-keyboard",
++ },
++};
++
++static int __devinit pxakbd_init(void)
++{
++ return platform_driver_register(&pxakbd_driver);
++}
++
++static void __exit pxakbd_exit(void)
++{
++ platform_driver_unregister(&pxakbd_driver);
++}
++
++module_init(pxakbd_init);
++module_exit(pxakbd_exit);
++
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_DESCRIPTION("Driver for Intel PXA27x keypad controller");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h
++++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -2271,6 +2271,11 @@
+ #define KPMK_MKP (0x1 << 31)
+ #define KPAS_SO (0x1 << 31)
+ #define KPASMKPx_SO (0x1 << 31)
++#define KPAS_RP (0x000000f0)
++#define KPAS_CP (0x0000000f)
++#define KPAS_MUKP (0x7c000000)
++#define KPAS_MUKP_ONE (0x04000000)
++#define KPAS_MUKP_NONE (0x00000000)
+
+ /*
+ * UHC: USB Host Controller (OHCI-like) register definitions
+Index: linux-2.6.24/arch/arm/mach-pxa/pxa27x.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/pxa27x.c
++++ linux-2.6.24/arch/arm/mach-pxa/pxa27x.c
+@@ -451,6 +451,7 @@
+ &pxa_device_rtc,
+ &pxa27x_device_i2c_power,
+ &pxa27x_device_ohci,
++ &pxa_device_kbd,
+ };
+
+ static int __init pxa27x_init(void)
+Index: linux-2.6.24/arch/arm/mach-pxa/devices.h
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/devices.h
++++ linux-2.6.24/arch/arm/mach-pxa/devices.h
+@@ -9,6 +9,7 @@
+ extern struct platform_device pxa_device_i2s;
+ extern struct platform_device pxa_device_ficp;
+ extern struct platform_device pxa_device_rtc;
++extern struct platform_device pxa_device_kbd;
+
+ extern struct platform_device pxa27x_device_i2c_power;
+ extern struct platform_device pxa27x_device_ohci;
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-fix-a1200.patch b/packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-fix-a1200.patch
new file mode 100644
index 0000000000..4b9a9abeef
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-fix-a1200.patch
@@ -0,0 +1,45 @@
+This hack hardcodes pxa27x-udc to ether_gadget. This is just a temp workaround.
+Index: linux-2.6.24/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/ether.c
++++ linux-2.6.24/drivers/usb/gadget/ether.c
+@@ -2687,10 +2687,16 @@
+ MODULE_LICENSE ("GPL");
+
+
+-static int __init init (void)
++// Alex add FIXME
++int usb_ether_init (void)
+ {
+ return usb_gadget_register_driver (&eth_driver);
+ }
++
++static int __init init (void)
++{
++// return usb_gadget_register_driver (&eth_driver);
++}
+ module_init (init);
+
+ static void __exit cleanup (void)
+Index: linux-2.6.24/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/pxa27x_udc.c
++++ linux-2.6.24/drivers/usb/gadget/pxa27x_udc.c
+@@ -65,6 +65,8 @@
+ //#include <asm/arch/udc.h>
+ #include <asm/mach/udc_pxa2xx.h>
+
++extern int usb_ether_init(void);
++
+ /*
+ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x
+ * series processors.
+@@ -2277,6 +2279,8 @@
+ udc_init_ep(udc);
+ udc_reinit(udc);
+
++ usb_ether_init(); // Alex add FIXME
++
+ /* irq setup after old hardware state is cleaned up */
+ retval = request_irq(irq, pxa27x_udc_irq, 0, driver_name, udc);
+ if (retval != 0) {
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-support.3.patch b/packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-support.3.patch
new file mode 100644
index 0000000000..5823e8023a
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxa27x-udc-support.3.patch
@@ -0,0 +1,3114 @@
+Index: linux-2.6.24/arch/arm/mach-pxa/generic.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/generic.c
++++ linux-2.6.24/arch/arm/mach-pxa/generic.c
+@@ -290,7 +290,11 @@
+ static u64 udc_dma_mask = ~(u32)0;
+
+ struct platform_device pxa_device_udc = {
++#ifdef CONFIG_PXA27x
++ .name = "pxa27x-udc",
++#else
+ .name = "pxa2xx-udc",
++#endif
+ .id = -1,
+ .resource = pxa2xx_udc_resources,
+ .num_resources = ARRAY_SIZE(pxa2xx_udc_resources),
+Index: linux-2.6.24/drivers/usb/gadget/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/Kconfig
++++ linux-2.6.24/drivers/usb/gadget/Kconfig
+@@ -192,6 +192,24 @@
+ default USB_GADGET
+ select USB_GADGET_SELECTED
+
++config USB_GADGET_PXA27X
++ boolean "PXA 27x"
++ depends on ARCH_PXA && PXA27x
++ help
++ Intel's PXA 27x series XScale processors include an integrated
++ full speed USB 1.1 device controller.
++
++ Say "y" to link the driver statically, or "m" to build a
++ dynamically linked module called "pxa2xx_udc" and force all
++ gadget drivers to also be dynamically linked.
++
++
++config USB_PXA27X
++ tristate
++ depends on USB_GADGET_PXA27X
++ default USB_GADGET
++ select USB_GADGET_SELECTED
++
+ # if there's only one gadget driver, using only two bulk endpoints,
+ # don't waste memory for the other endpoints
+ config USB_PXA2XX_SMALL
+Index: linux-2.6.24/drivers/usb/gadget/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/Makefile
++++ linux-2.6.24/drivers/usb/gadget/Makefile
+@@ -9,6 +9,7 @@
+ obj-$(CONFIG_USB_NET2280) += net2280.o
+ obj-$(CONFIG_USB_AMD5536UDC) += amd5536udc.o
+ obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
++obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o
+ obj-$(CONFIG_USB_GOKU) += goku_udc.o
+ obj-$(CONFIG_USB_OMAP) += omap_udc.o
+ obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
+Index: linux-2.6.24/drivers/usb/gadget/epautoconf.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/epautoconf.c
++++ linux-2.6.24/drivers/usb/gadget/epautoconf.c
+@@ -230,7 +230,8 @@
+ */
+ struct usb_ep * __devinit usb_ep_autoconfig (
+ struct usb_gadget *gadget,
+- struct usb_endpoint_descriptor *desc
++ struct usb_endpoint_descriptor *desc,
++ int config, int interface, int alt
+ )
+ {
+ struct usb_ep *ep;
+@@ -238,6 +239,11 @@
+
+ type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
+
++ /* If have ep_alloc() function use it! */
++ if (gadget->ops->ep_alloc)
++ return gadget->ops->ep_alloc(gadget, desc,
++ config, interface, alt);
++
+ /* First, apply chip-specific "best usage" knowledge.
+ * This might make a good usb_gadget_ops hook ...
+ */
+Index: linux-2.6.24/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/ether.c
++++ linux-2.6.24/drivers/usb/gadget/ether.c
+@@ -235,10 +235,6 @@
+ #define DEV_CONFIG_CDC
+ #endif
+
+-#ifdef CONFIG_USB_GADGET_PXA27X
+-#define DEV_CONFIG_CDC
+-#endif
+-
+ #ifdef CONFIG_USB_GADGET_S3C2410
+ #define DEV_CONFIG_CDC
+ #endif
+@@ -270,6 +266,10 @@
+ #define DEV_CONFIG_SUBSET
+ #endif
+
++#ifdef CONFIG_USB_GADGET_PXA27X
++#define DEV_CONFIG_SUBSET
++#endif
++
+ #ifdef CONFIG_USB_GADGET_SUPERH
+ #define DEV_CONFIG_SUBSET
+ #endif
+@@ -1012,13 +1012,12 @@
+ static int
+ set_ether_config (struct eth_dev *dev, gfp_t gfp_flags)
+ {
+- int result = 0;
+- struct usb_gadget *gadget = dev->gadget;
++ int result = 0;
+
+ #if defined(DEV_CONFIG_CDC) || defined(CONFIG_USB_ETH_RNDIS)
+ /* status endpoint used for RNDIS and (optionally) CDC */
+ if (!subset_active(dev) && dev->status_ep) {
+- dev->status = ep_desc (gadget, &hs_status_desc,
++ dev->status = ep_desc (dev->gadget, &hs_status_desc,
+ &fs_status_desc);
+ dev->status_ep->driver_data = dev;
+
+@@ -1031,10 +1030,10 @@
+ }
+ #endif
+
+- dev->in = ep_desc(gadget, &hs_source_desc, &fs_source_desc);
++ dev->in = ep_desc(dev->gadget, &hs_source_desc, &fs_source_desc);
+ dev->in_ep->driver_data = dev;
+
+- dev->out = ep_desc(gadget, &hs_sink_desc, &fs_sink_desc);
++ dev->out = ep_desc(dev->gadget, &hs_sink_desc, &fs_sink_desc);
+ dev->out_ep->driver_data = dev;
+
+ /* With CDC, the host isn't allowed to use these two data
+@@ -2298,6 +2297,9 @@
+ * non-CDC to be compatible with ARM Linux-2.4 "usb-eth".
+ */
+ cdc = 0;
++ } else if (gadget_is_pxa27x(gadget)) {
++ /* hardware can't write zlps */
++ zlp = 0;
+ }
+
+ gcnum = usb_gadget_controller_number (gadget);
+@@ -2364,7 +2366,22 @@
+
+ /* all we really need is bulk IN/OUT */
+ usb_ep_autoconfig_reset (gadget);
+- in_ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ in_ep = usb_ep_autoconfig (gadget, &fs_source_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_data_intf.bInterfaceNumber,
++ (int)rndis_data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ in_ep = usb_ep_autoconfig (gadget, &fs_source_desc,
++ DEV_CONFIG_VALUE,
++ (int)data_intf.bInterfaceNumber,
++ (int)data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_SUBSET)
++ in_ep = usb_ep_autoconfig (gadget, &fs_source_desc,
++ DEV_CONFIG_VALUE,
++ (int)subset_data_intf.bInterfaceNumber,
++ (int)subset_data_intf.bAlternateSetting);
++#endif /* CONFIG_USB_ETH_RNDIS */
+ if (!in_ep) {
+ autoconf_fail:
+ dev_err (&gadget->dev,
+@@ -2374,7 +2391,23 @@
+ }
+ in_ep->driver_data = in_ep; /* claim */
+
+- out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_data_intf.bInterfaceNumber,
++ (int)rndis_data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc,
++ DEV_CONFIG_VALUE,
++ (int)data_intf.bInterfaceNumber,
++ (int)data_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_SUBSET)
++ out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc,
++ DEV_CONFIG_VALUE,
++ (int)subset_data_intf.bInterfaceNumber,
++ (int)subset_data_intf.bAlternateSetting);
++#endif /* CONFIG_USB_ETH_RNDIS */
++
+ if (!out_ep)
+ goto autoconf_fail;
+ out_ep->driver_data = out_ep; /* claim */
+@@ -2384,7 +2417,18 @@
+ * Since some hosts expect one, try to allocate one anyway.
+ */
+ if (cdc || rndis) {
+- status_ep = usb_ep_autoconfig (gadget, &fs_status_desc);
++#ifdef CONFIG_USB_ETH_RNDIS
++ status_ep = usb_ep_autoconfig (gadget, &fs_status_desc,
++ DEV_RNDIS_CONFIG_VALUE,
++ (int)rndis_control_intf.bInterfaceNumber,
++ (int)rndis_control_intf.bAlternateSetting);
++#elif defined(DEV_CONFIG_CDC)
++ status_ep = usb_ep_autoconfig (gadget, &fs_status_desc,
++ DEV_CONFIG_VALUE,
++ (int)control_intf.bInterfaceNumber,
++ (int)control_intf.bAlternateSetting);
++#endif /* CONFIG_USB_ETH_RNDIS */
++
+ if (status_ep) {
+ status_ep->driver_data = status_ep; /* claim */
+ } else if (rndis) {
+@@ -2392,13 +2436,14 @@
+ "can't run RNDIS on %s\n",
+ gadget->name);
+ return -ENODEV;
++ }
+ #ifdef DEV_CONFIG_CDC
+- /* pxa25x only does CDC subset; often used with RNDIS */
+- } else if (cdc) {
++ /* pxa25x only does CDC subset; often used with RNDIS */
++ else if (cdc) {
+ control_intf.bNumEndpoints = 0;
+ /* FIXME remove endpoint from descriptor list */
+-#endif
+ }
++#endif
+ }
+ #endif
+
+Index: linux-2.6.24/drivers/usb/gadget/file_storage.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/file_storage.c
++++ linux-2.6.24/drivers/usb/gadget/file_storage.c
+@@ -3877,20 +3877,20 @@
+
+ /* Find all the endpoints we will use */
+ usb_ep_autoconfig_reset(gadget);
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_in = ep;
+
+- ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+ fsg->bulk_out = ep;
+
+ if (transport_is_cbi()) {
+- ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc);
++ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ ep->driver_data = fsg; // claim the endpoint
+Index: linux-2.6.24/drivers/usb/gadget/gmidi.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/gmidi.c
++++ linux-2.6.24/drivers/usb/gadget/gmidi.c
+@@ -1188,7 +1188,7 @@
+ * but there may also be important quirks to address.
+ */
+ usb_ep_autoconfig_reset(gadget);
+- in_ep = usb_ep_autoconfig(gadget, &bulk_in_desc);
++ in_ep = usb_ep_autoconfig(gadget, &bulk_in_desc, 0, 0, 0);
+ if (!in_ep) {
+ autoconf_fail:
+ printk(KERN_ERR "%s: can't autoconfigure on %s\n",
+@@ -1198,7 +1198,7 @@
+ EP_IN_NAME = in_ep->name;
+ in_ep->driver_data = in_ep; /* claim */
+
+- out_ep = usb_ep_autoconfig(gadget, &bulk_out_desc);
++ out_ep = usb_ep_autoconfig(gadget, &bulk_out_desc, 0, 0, 0);
+ if (!out_ep) {
+ goto autoconf_fail;
+ }
+Index: linux-2.6.24/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/usb/gadget/pxa27x_udc.c
+@@ -0,0 +1,2410 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.c
++ * Intel PXA2xx and IXP4xx on-chip full speed USB device controllers
++ *
++ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker)
++ * Copyright (C) 2003 Robert Schwebel, Pengutronix
++ * Copyright (C) 2003 Benedikt Spranger, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2003 Joshua Wise
++ * Copyright (C) 2004 Intel Corporation
++ * Copyright (C) 2007 Rodolfo Giometti <giometti@linux.it>
++ *
++ * 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
++ *
++ */
++
++#undef DEBUG
++/* #define VERBOSE DBG_VERBOSE */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/types.h>
++#include <linux/version.h>
++#include <linux/errno.h>
++#include <linux/delay.h>
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/init.h>
++#include <linux/timer.h>
++#include <linux/list.h>
++#include <linux/interrupt.h>
++#include <linux/proc_fs.h>
++#include <linux/mm.h>
++#include <linux/device.h>
++#include <linux/dma-mapping.h>
++#include <linux/platform_device.h>
++
++#include <asm/byteorder.h>
++#include <asm/dma.h>
++#include <asm/gpio.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++#include <asm/unaligned.h>
++#include <asm/hardware.h>
++//#include <asm/arch/pxa-regs.h>
++
++#include <linux/usb/ch9.h>
++#include <linux/usb/gadget.h>
++
++//#include <asm/arch/udc.h>
++#include <asm/mach/udc_pxa2xx.h>
++
++/*
++ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x
++ * series processors.
++ * Such controller drivers work with a gadget driver. The gadget driver
++ * returns descriptors, implements configuration and data protocols used
++ * by the host to interact with this device, and allocates endpoints to
++ * the different protocol interfaces. The controller driver virtualizes
++ * usb hardware so that the gadget drivers will be more portable.
++ *
++ * This UDC hardware wants to implement a bit too much USB protocol, so
++ * it constrains the sorts of USB configuration change events that work.
++ * The errata for these chips are misleading; some "fixed" bugs from
++ * pxa250 a0/a1 b0/b1/b2 sure act like they're still there.
++ */
++
++#define DRIVER_VERSION "28-Jun-2007"
++#define DRIVER_DESC "PXA 27x USB Device Controller driver"
++
++static const char driver_name[] = "pxa27x_udc";
++
++static const char ep0name[] = "ep0";
++
++#undef USE_DMA
++#undef DISABLE_TEST_MODE
++
++#ifdef CONFIG_PROC_FS
++#define UDC_PROC_FILE
++#endif
++
++#include "pxa27x_udc.h"
++
++#ifdef CONFIG_EMBEDDED
++/* few strings, and little code to use them */
++#undef DEBUG
++#undef UDC_PROC_FILE
++#endif
++
++#ifdef USE_DMA
++static int use_dma = 1;
++module_param(use_dma, bool, 0);
++MODULE_PARM_DESC(use_dma, "true to use dma");
++
++static void dma_nodesc_handler(int dmach, void *_ep);
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req);
++
++#define DMASTR " (dma support)"
++
++#else /* !USE_DMA */
++#define DMASTR " (pio only)"
++#endif
++
++#ifdef CONFIG_USB_PXA27X_SMALL
++#define SIZE_STR " (small)"
++#else
++#define SIZE_STR ""
++#endif
++
++#ifdef DISABLE_TEST_MODE
++/* (mode == 0) == no undocumented chip tweaks
++ * (mode & 1) == double buffer bulk IN
++ * (mode & 2) == double buffer bulk OUT
++ * ... so mode = 3 (or 7, 15, etc) does it for both
++ */
++static ushort fifo_mode = 0;
++module_param(fifo_mode, ushort, 0);
++MODULE_PARM_DESC(fifo_mode, "pxa27x udc fifo mode");
++#endif
++
++#define UDCISR0_IR0 0x3
++#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP)
++#define UDCICR_INT_MASK UDCISR_INT_MASK
++
++#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME)
++/* ---------------------------------------------------------------------------
++ * endpoint related parts of the api to the usb controller hardware,
++ * used by gadget driver; and the inner talker-to-hardware core.
++ * ---------------------------------------------------------------------------
++ */
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *ep);
++static void nuke(struct pxa27x_ep *, int status);
++
++/* one GPIO should control a D+ pullup, so host sees this device (or not) */
++static void pullup_off(void)
++{
++ struct pxa2xx_udc_mach_info *mach = the_controller->mach;
++
++ if (mach->gpio_pullup)
++ gpio_set_value(mach->gpio_pullup, 0);
++ else if (mach->udc_command)
++ mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
++}
++
++static void pullup_on(void)
++{
++ struct pxa2xx_udc_mach_info *mach = the_controller->mach;
++
++ if (mach->gpio_pullup)
++ gpio_set_value(mach->gpio_pullup, 1);
++ else if (mach->udc_command)
++ mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
++}
++
++static void pio_irq_enable(int ep_num)
++{
++ if (ep_num < 16)
++ UDCICR0 |= 3 << (ep_num * 2);
++ else {
++ ep_num -= 16;
++ UDCICR1 |= 3 << (ep_num * 2);
++ }
++}
++
++static void pio_irq_disable(int ep_num)
++{
++ ep_num &= 0xf;
++ if (ep_num < 16)
++ UDCICR0 &= ~(3 << (ep_num * 2));
++ else {
++ ep_num -= 16;
++ UDCICR1 &= ~(3 << (ep_num * 2));
++ }
++}
++
++/* The UDCCR reg contains mask and interrupt status bits,
++ * so using '|=' isn't safe as it may ack an interrupt.
++ */
++#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE)
++
++static inline void udc_set_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_clear_mask_UDCCR(int mask)
++{
++ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS);
++}
++
++static inline void udc_ack_int_UDCCR(int mask)
++{
++ /* udccr contains the bits we dont want to change */
++ __u32 udccr = UDCCR & UDCCR_MASK_BITS;
++
++ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS);
++}
++
++/*
++ * endpoint enable/disable
++ *
++ * we need to verify the descriptors used to enable endpoints. since pxa27x
++ * endpoint configurations are fixed, and are pretty much always enabled,
++ * there's not a lot to manage here.
++ *
++ * because pxa27x can't selectively initialize bulk (or interrupt) endpoints,
++ * (resetting endpoint halt and toggle), SET_INTERFACE is unusable except
++ * for a single interface (with only the default altsetting) and for gadget
++ * drivers that don't halt endpoints (not reset by set_interface). that also
++ * means that if you use ISO, you must violate the USB spec rule that all
++ * iso endpoints must be in non-default altsettings.
++ */
++static int pxa27x_ep_enable(struct usb_ep *_ep,
++ const struct usb_endpoint_descriptor *desc)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_udc *dev;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || !desc || _ep->name == ep0name
++ || desc->bDescriptorType != USB_DT_ENDPOINT
++ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) {
++ DMSG("%s, bad ep or descriptor\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ /* xfer types must match, except that interrupt ~= bulk */
++ if (ep->ep_type != USB_ENDPOINT_XFER_BULK
++ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
++ DMSG("%s, %s type mismatch\n", __FUNCTION__, _ep->name);
++ return -EINVAL;
++ }
++
++ /* hardware _could_ do smaller, but driver doesn't */
++ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
++ && le16_to_cpu(desc->wMaxPacketSize)
++ != BULK_FIFO_SIZE)
++ || !desc->wMaxPacketSize) {
++ DMSG("%s, bad %s maxpacket\n", __FUNCTION__, _ep->name);
++ return -ERANGE;
++ }
++
++ dev = ep->dev;
++ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ ep->desc = desc;
++ ep->dma = -1;
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ ep->ep.maxpacket = le16_to_cpu(desc->wMaxPacketSize);
++
++ /* flush fifo (mostly for OUT buffers) */
++ pxa27x_ep_fifo_flush(_ep);
++
++ /* ... reset halt state too, if we could ... */
++
++#ifdef USE_DMA
++ /* for (some) bulk and ISO endpoints, try to get a DMA channel and
++ * bind it to the endpoint. otherwise use PIO.
++ */
++ DMSG("%s: called attributes=%d\n", __FUNCTION__, ep->ep_type);
++ switch (ep->ep_type) {
++ case USB_ENDPOINT_XFER_ISOC:
++ if (le16_to_cpu(desc->wMaxPacketSize) % 32)
++ break;
++ /* fall through */
++ case USB_ENDPOINT_XFER_BULK:
++ if (!use_dma || !ep->reg_drcmr)
++ break;
++ ep->dma = pxa_request_dma((char *)_ep->name,
++ (le16_to_cpu(desc->wMaxPacketSize) > 64)
++ ? DMA_PRIO_MEDIUM /* some iso */
++ : DMA_PRIO_LOW,
++ dma_nodesc_handler, ep);
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma;
++ DMSG("%s using dma%d\n", _ep->name, ep->dma);
++ }
++ default:
++ break;
++ }
++#endif
++ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_disable(struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || !ep->desc) {
++ DMSG("%s, %s not enabled\n", __FUNCTION__,
++ _ep ? ep->ep.name : NULL);
++ return -EINVAL;
++ }
++ nuke(ep, -ESHUTDOWN);
++
++#ifdef USE_DMA
++ if (ep->dma >= 0) {
++ *ep->reg_drcmr = 0;
++ pxa_free_dma(ep->dma);
++ ep->dma = -1;
++ }
++#endif
++
++ /* flush fifo (mostly for IN buffers) */
++ pxa27x_ep_fifo_flush(_ep);
++
++ ep->desc = 0;
++ ep->stopped = 1;
++
++ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers
++ * must still pass correctly initialized endpoints, since other controller
++ * drivers may care about how it's currently set up (dma issues etc).
++ */
++
++/*
++ * pxa27x_ep_alloc_request - allocate a request data structure
++ */
++static struct usb_request *pxa27x_ep_alloc_request(struct usb_ep *_ep,
++ unsigned int gfp_flags)
++{
++ struct pxa27x_request *req;
++
++ req = kmalloc(sizeof *req, gfp_flags);
++ if (!req)
++ return 0;
++
++ memset(req, 0, sizeof *req);
++ INIT_LIST_HEAD(&req->queue);
++ return &req->req;
++}
++
++/*
++ * pxa27x_ep_free_request - deallocate a request data structure
++ */
++static void pxa27x_ep_free_request(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_request *req;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ WARN_ON(!list_empty(&req->queue));
++ kfree(req);
++}
++
++/* PXA cache needs flushing with DMA I/O (it's dma-incoherent), but there's
++ * no device-affinity and the heap works perfectly well for i/o buffers.
++ * It wastes much less memory than dma_alloc_coherent() would, and even
++ * prevents cacheline (32 bytes wide) sharing problems.
++ */
++static void *pxa27x_ep_alloc_buffer(struct usb_ep *_ep, unsigned bytes,
++ dma_addr_t * dma, unsigned int gfp_flags)
++{
++ char *retval;
++
++ retval = kmalloc(bytes, gfp_flags & ~(__GFP_DMA | __GFP_HIGHMEM));
++ if (retval)
++#ifdef USE_DMA
++ *dma = virt_to_bus(retval);
++#else
++ *dma = (dma_addr_t) ~0;
++#endif
++ return retval;
++}
++
++static void
++pxa27x_ep_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma,
++ unsigned bytes)
++{
++ kfree(buf);
++}
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * done - retire a request; caller blocked irqs
++ */
++static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status)
++{
++ list_del_init(&req->queue);
++ if (likely(req->req.status == -EINPROGRESS))
++ req->req.status = status;
++ else
++ status = req->req.status;
++
++ if (status && status != -ESHUTDOWN)
++ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n",
++ ep->ep.name, &req->req, status,
++ req->req.actual, req->req.length);
++
++ /* don't modify queue heads during completion callback */
++ req->req.complete(&ep->ep, &req->req);
++}
++
++static inline void ep0_idle(struct pxa27x_udc *dev)
++{
++ dev->ep0state = EP0_IDLE;
++ LED_EP0_OFF;
++}
++
++static int
++write_packet(volatile u32 * uddr, struct pxa27x_request *req, unsigned max)
++{
++ u32 *buf;
++ int length, count, remain;
++
++ buf = (u32 *) (req->req.buf + req->req.actual);
++ prefetch(buf);
++
++ /* how big will this packet be? */
++ length = min(req->req.length - req->req.actual, max);
++ req->req.actual += length;
++
++ remain = length & 0x3;
++ count = length & ~(0x3);
++
++ while (likely(count)) {
++ *uddr = *buf++;
++ count -= 4;
++ }
++
++ if (remain) {
++ volatile u8 *reg = (u8 *) uddr;
++ char *rd = (u8 *) buf;
++
++ while (remain--) {
++ *reg = *rd++;
++ }
++ }
++
++ return length;
++}
++
++/*
++ * write to an IN endpoint fifo, as many packets as possible.
++ * irqs will use this to write the rest later.
++ * caller guarantees at least one packet buffer is ready (or a zlp).
++ */
++static int write_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned max;
++
++ max = le16_to_cpu(ep->desc->wMaxPacketSize);
++ do {
++ int count;
++ int is_last, is_short;
++
++ count = write_packet(ep->reg_udcdr, req, max);
++
++ /* last packet is usually short (or a zlp) */
++ if (unlikely(count != max))
++ is_last = is_short = 1;
++ else {
++ if (likely(req->req.length != req->req.actual)
++ || req->req.zero)
++ is_last = 0;
++ else
++ is_last = 1;
++ /* interrupt/iso maxpacket may not fill the fifo */
++ is_short = unlikely(max < ep->fifo_size);
++ }
++
++ DMSG("wrote %s count:%d bytes%s%s %d left %p\n",
++ ep->ep.name, count,
++ is_last ? "/L" : "", is_short ? "/S" : "",
++ req->req.length - req->req.actual, &req->req);
++
++ /* let loose that packet. maybe try writing another one,
++ * double buffering might work. TSP, TPC, and TFS
++ * bit values are the same for all normal IN endpoints.
++ */
++ *ep->reg_udccsr = UDCCSR_PC;
++ if (is_short)
++ *ep->reg_udccsr = UDCCSR_SP;
++
++ /* requests complete when all IN data is in the FIFO */
++ if (is_last) {
++ done(ep, req, 0);
++ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) {
++ pio_irq_disable(ep->ep_num);
++#ifdef USE_DMA
++ /* unaligned data and zlps couldn't use dma */
++ if (unlikely(!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request,
++ queue);
++ kick_dma(ep, req);
++ return 0;
++ }
++#endif
++ }
++ return 1;
++ }
++ /* TODO experiment: how robust can fifo mode tweaking be?
++ * double buffering is off in the default fifo mode, which
++ * prevents TFS from being set here.
++ */
++
++ } while (*ep->reg_udccsr & UDCCSR_FS);
++ return 0;
++}
++
++/* caller asserts req->pending (ep0 irq status nyet cleared); starts
++ * ep0 data stage. these chips want very simple state transitions.
++ */
++static inline void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag)
++{
++ UDCCSR0 = flags | UDCCSR0_SA | UDCCSR0_OPC;
++ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP);
++ dev->req_pending = 0;
++ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n",
++ __FUNCTION__, tag, UDCCSR0, flags);
++}
++
++static int write_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ unsigned count;
++ int is_short;
++
++ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE);
++ ep->dev->stats.write.bytes += count;
++
++ /* last packet "must be" short (or a zlp) */
++ is_short = (count != EP0_FIFO_SIZE);
++
++ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count,
++ req->req.length - req->req.actual, &req->req);
++
++ if (unlikely(is_short)) {
++ if (ep->dev->req_pending)
++ ep0start(ep->dev, UDCCSR0_IPR, "short IN");
++ else
++ UDCCSR0 = UDCCSR0_IPR;
++
++ count = req->req.length;
++ done(ep, req, 0);
++ ep0_idle(ep->dev);
++#if 0
++ /* This seems to get rid of lost status irqs in some cases:
++ * host responds quickly, or next request involves config
++ * change automagic, or should have been hidden, or ...
++ *
++ * FIXME get rid of all udelays possible...
++ */
++ if (count >= EP0_FIFO_SIZE) {
++ count = 100;
++ do {
++ if ((UDCCSR0 & UDCCSR0_OPC) != 0) {
++ /* clear OPC, generate ack */
++ UDCCSR0 = UDCCSR0_OPC;
++ break;
++ }
++ count--;
++ udelay(1);
++ } while (count);
++ }
++#endif
++ } else if (ep->dev->req_pending)
++ ep0start(ep->dev, 0, "IN");
++ return is_short;
++}
++
++/*
++ * read_fifo - unload packet(s) from the fifo we use for usb OUT
++ * transfers and put them into the request. caller should have made
++ * sure there's at least one packet ready.
++ *
++ * returns true if the request completed because of short packet or the
++ * request buffer having filled (and maybe overran till end-of-packet).
++ */
++static int read_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ for (;;) {
++ u32 *buf;
++ int bufferspace, count, is_short;
++
++ /* make sure there's a packet in the FIFO. */
++ if (unlikely((*ep->reg_udccsr & UDCCSR_PC) == 0))
++ break;
++ buf = (u32 *) (req->req.buf + req->req.actual);
++ prefetchw(buf);
++ bufferspace = req->req.length - req->req.actual;
++
++ /* read all bytes from this packet */
++ if (likely(*ep->reg_udccsr & UDCCSR_BNE)) {
++ count = 0x3ff & *ep->reg_udcbcr;
++ req->req.actual += min(count, bufferspace);
++ } else /* zlp */
++ count = 0;
++
++ is_short = (count < ep->ep.maxpacket);
++ DMSG("read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n",
++ ep->ep.name, *ep->reg_udccsr, count,
++ is_short ? "/S" : "",
++ &req->req, req->req.actual, req->req.length);
++
++#if 0
++ dump_regs(ep->ep_num );
++#endif
++ count = min(count, bufferspace);
++ while (likely(count > 0)) {
++ *buf++ = *ep->reg_udcdr;
++ count -= 4;
++ }
++ DMSG("Buf:0x%p\n", req->req.buf);
++
++ *ep->reg_udccsr = UDCCSR_PC;
++ /* RPC/RSP/RNE could now reflect the other packet buffer */
++
++ /* completion */
++ if (is_short || req->req.actual == req->req.length) {
++ done(ep, req, 0);
++ if (list_empty(&ep->queue))
++ pio_irq_disable(ep->ep_num);
++ return 1;
++ }
++
++ /* finished that packet. the next one may be waiting... */
++ }
++ return 0;
++}
++
++/*
++ * special ep0 version of the above. no UBCR0 or double buffering; status
++ * handshaking is magic. most device protocols don't need control-OUT.
++ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other
++ * protocols do use them.
++ */
++static int read_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 *buf, word;
++ unsigned bufferspace;
++
++ buf = (u32 *) (req->req.buf + req->req.actual);
++ bufferspace = req->req.length - req->req.actual;
++
++ while (UDCCSR0 & UDCCSR0_RNE) {
++ word = UDCDR0;
++
++ if (unlikely(bufferspace == 0)) {
++ /* this happens when the driver's buffer
++ * is smaller than what the host sent.
++ * discard the extra data.
++ */
++ if (req->req.status != -EOVERFLOW)
++ DMSG("%s overflow\n", ep->ep.name);
++ req->req.status = -EOVERFLOW;
++ } else {
++ *buf++ = word;
++ req->req.actual += 4;
++ bufferspace -= 4;
++ }
++ }
++
++ UDCCSR0 = UDCCSR0_OPC;
++
++ /* completion */
++ if (req->req.actual >= req->req.length)
++ return 1;
++
++ /* finished that packet. the next one may be waiting... */
++ return 0;
++}
++
++#ifdef USE_DMA
++
++#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE)
++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req)
++{
++ u32 dcmd = 0;
++ u32 len = req->req.length;
++ u32 buf = req->req.dma;
++ u32 fifo = io_v2p((u32) ep->reg_udcdr);
++
++ buf += req->req.actual;
++ len -= req->req.actual;
++ ep->dma_con = 0;
++
++ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n",
++ __FUNCTION__, &req->req, req->req.length,
++ req->req.actual, ep->dma);
++
++ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */
++ DCSR(ep->dma) = DCSR_NODESC;
++ if (buf & 0x3)
++ DALGN |= 1 << ep->dma;
++ else
++ DALGN &= ~(1 << ep->dma);
++
++ if (ep->dir_in) {
++ DSADR(ep->dma) = buf;
++ DTADR(ep->dma) = fifo;
++ if (len > MAX_IN_DMA) {
++ len = MAX_IN_DMA;
++ ep->dma_con = 1;
++ } else if (len >= ep->ep.maxpacket) {
++ if ((ep->dma_con = (len % ep->ep.maxpacket) != 0))
++ len = ep->ep.maxpacket;
++ }
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWTRG | DCMD_INCSRCADDR;
++ } else {
++ DSADR(ep->dma) = fifo;
++ DTADR(ep->dma) = buf;
++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
++ | DCMD_FLOWSRC | DCMD_INCTRGADDR;
++ }
++ *ep->reg_udccsr = UDCCSR_DME;
++ DCMD(ep->dma) = dcmd;
++ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN
++ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0);
++ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD;
++ DCSR(ep->dma) |= DCSR_RUN;
++}
++
++static void cancel_dma(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ u32 tmp;
++
++ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue))
++ return;
++
++ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma));
++ DCSR(ep->dma) = 0;
++ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0)
++ cpu_relax();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ tmp = DCMD(ep->dma) & DCMD_LENGTH;
++ req->req.actual = req->req.length - tmp;
++
++ /* the last tx packet may be incomplete, so flush the fifo.
++ * FIXME correct req.actual if we can
++ */
++ *ep->reg_udccsr = UDCCSR_FEF;
++}
++
++static void dma_nodesc_handler(int dmach, void *_ep, struct pt_regs *r)
++{
++ struct pxa27x_ep *ep = _ep;
++ struct pxa27x_request *req, *req_next;
++ u32 dcsr, tmp, completed;
++
++ local_irq_disable();
++
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ DMSG("%s, buf:0x%p\n", __FUNCTION__, req->req.buf);
++
++ ep->dma_irqs++;
++ ep->dev->stats.irqs++;
++ HEX_DISPLAY(ep->dev->stats.irqs);
++
++ completed = 0;
++
++ dcsr = DCSR(dmach);
++ DCSR(ep->dma) &= ~DCSR_RUN;
++
++ if (dcsr & DCSR_BUSERR) {
++ DCSR(dmach) = DCSR_BUSERR;
++ printk(KERN_ERR " Buss Error\n");
++ req->req.status = -EIO;
++ completed = 1;
++ } else if (dcsr & DCSR_ENDINTR) {
++ DCSR(dmach) = DCSR_ENDINTR;
++ if (ep->dir_in) {
++ tmp = req->req.length - req->req.actual;
++ /* Last packet is a short one */
++ if (tmp < ep->ep.maxpacket) {
++ int count = 0;
++
++ *ep->reg_udccsr = UDCCSR_SP |
++ (*ep->reg_udccsr & UDCCSR_MASK);
++ /*Wait for packet out */
++ while ((count++ < 10000) &&
++ !(*ep->reg_udccsr & UDCCSR_FS)) ;
++ if (count >= 10000)
++ DMSG("Failed to send packet\n");
++ else
++ DMSG("%s: short packet sent len:%d,"
++ "length:%d,actual:%d\n",
++ __FUNCTION__, tmp, req->req.length,
++ req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ /* There are still packets to transfer */
++ } else if (ep->dma_con) {
++ DMSG("%s: more packets,length:%d,actual:%d\n",
++ __FUNCTION__, req->req.length,
++ req->req.actual);
++ req->req.actual += ep->ep.maxpacket;
++ completed = 0;
++ } else {
++ DMSG("%s: no more packets,length:%d,"
++ "actual:%d\n", __FUNCTION__,
++ req->req.length, req->req.actual);
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else {
++ req->req.actual = req->req.length;
++ completed = 1;
++ }
++ } else if (dcsr & DCSR_EORINTR) { /* Only happened in OUT DMA */
++ int remain, udccsr;
++
++ DCSR(dmach) = DCSR_EORINTR;
++ remain = DCMD(dmach) & DCMD_LENGTH;
++ req->req.actual = req->req.length - remain;
++
++ udccsr = *ep->reg_udccsr;
++ if (udccsr & UDCCSR_SP) {
++ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK);
++ completed = 1;
++ }
++ DMSG("%s: length:%d actual:%d\n",
++ __FUNCTION__, req->req.length, req->req.actual);
++ } else
++ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n",
++ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach));
++
++ if (likely(completed)) {
++ if (req->queue.next != &ep->queue) {
++ req_next = list_entry(req->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req_next);
++ }
++ done(ep, req, 0);
++ } else {
++ kick_dma(ep, req);
++ }
++
++ local_irq_enable();
++}
++
++#endif
++/*-------------------------------------------------------------------------*/
++
++static int
++pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
++ unsigned int gfp_flags)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ struct pxa27x_udc *dev;
++ unsigned long flags;
++
++ req = container_of(_req, struct pxa27x_request, req);
++ if (unlikely(!_req || !_req->complete || !_req->buf ||
++ !list_empty(&req->queue))) {
++ DMSG("%s, bad params\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (unlikely(!_ep || (!ep->desc && ep->ep.name != ep0name))) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++
++ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num);
++
++ dev = ep->dev;
++ if (unlikely(!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
++ DMSG("%s, bogus device state\n", __FUNCTION__);
++ return -ESHUTDOWN;
++ }
++
++ /* iso is always one packet per request, that's the only way
++ * we can report per-packet status. that also helps with dma.
++ */
++ if (unlikely(ep->ep_type == USB_ENDPOINT_XFER_ISOC
++ && req->req.length > le16_to_cpu
++ (ep->desc->wMaxPacketSize)))
++ return -EMSGSIZE;
++
++#ifdef USE_DMA
++ /* FIXME: caller may already have done the dma mapping */
++ if (ep->dma >= 0) {
++ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length,
++ (ep->
++ dir_in) ? DMA_TO_DEVICE :
++ DMA_FROM_DEVICE);
++ }
++#endif
++
++ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n",
++ _ep->name, _req, _req->length, _req->buf);
++
++ local_irq_save(flags);
++
++ _req->status = -EINPROGRESS;
++ _req->actual = 0;
++
++ /* kickstart this i/o queue? */
++ if (list_empty(&ep->queue) && !ep->stopped) {
++ if (ep->desc == 0 /* ep0 */ ) {
++ unsigned length = _req->length;
++
++ switch (dev->ep0state) {
++ case EP0_IN_DATA_PHASE:
++ dev->stats.write.ops++;
++ if (write_ep0_fifo(ep, req))
++ req = 0;
++ break;
++
++ case EP0_OUT_DATA_PHASE:
++ dev->stats.read.ops++;
++ if (dev->req_pending)
++ ep0start(dev, UDCCSR0_IPR, "OUT");
++ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0
++ && read_ep0_fifo(ep,
++ req))) {
++ ep0_idle(dev);
++ done(ep, req, 0);
++ req = 0;
++ }
++ break;
++ case EP0_NO_ACTION:
++ ep0_idle(dev);
++ req = 0;
++ break;
++ default:
++ DMSG("ep0 i/o, odd state %d\n", dev->ep0state);
++ local_irq_restore(flags);
++ return -EL2HLT;
++ }
++#ifdef USE_DMA
++ /* either start dma or prime pio pump */
++ } else if (ep->dma >= 0) {
++ kick_dma(ep, req);
++#endif
++ /* can the FIFO can satisfy the request immediately? */
++ } else if (ep->dir_in
++ && (*ep->reg_udccsr & UDCCSR_FS) != 0
++ && write_fifo(ep, req)) {
++ req = 0;
++ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0
++ && read_fifo(ep, req)) {
++ req = 0;
++ }
++ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma);
++ if (likely(req && ep->desc) && ep->dma < 0)
++ pio_irq_enable(ep->ep_num);
++ }
++
++ /* pio or dma irq handler advances the queue. */
++ if (likely(req != 0))
++ list_add_tail(&req->queue, &ep->queue);
++ local_irq_restore(flags);
++
++ return 0;
++}
++
++/*
++ * nuke - dequeue ALL requests
++ */
++static void nuke(struct pxa27x_ep *ep, int status)
++{
++ struct pxa27x_request *req;
++
++ /* called with irqs blocked */
++#ifdef USE_DMA
++ if (ep->dma >= 0 && !ep->stopped)
++ cancel_dma(ep);
++#endif
++ while (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++ done(ep, req, status);
++ }
++ if (ep->desc)
++ pio_irq_disable(ep->ep_num);
++}
++
++/* dequeue JUST ONE request */
++static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
++{
++ struct pxa27x_ep *ep;
++ struct pxa27x_request *req;
++ unsigned long flags;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || ep->ep.name == ep0name)
++ return -EINVAL;
++
++ local_irq_save(flags);
++
++ /* make sure it's actually queued on this endpoint */
++ list_for_each_entry(req, &ep->queue, queue) {
++ if (&req->req == _req)
++ break;
++ }
++ if (&req->req != _req) {
++ local_irq_restore(flags);
++ return -EINVAL;
++ }
++#ifdef USE_DMA
++ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) {
++ cancel_dma(ep);
++ done(ep, req, -ECONNRESET);
++ /* restart i/o */
++ if (!list_empty(&ep->queue)) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ kick_dma(ep, req);
++ }
++ } else
++#endif
++ done(ep, req, -ECONNRESET);
++
++ local_irq_restore(flags);
++ return 0;
++}
++
++/*-------------------------------------------------------------------------*/
++
++static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value)
++{
++ struct pxa27x_ep *ep;
++ unsigned long flags;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (unlikely(!_ep || (!ep->desc && ep->ep.name != ep0name))
++ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -EINVAL;
++ }
++ if (value == 0) {
++ /* this path (reset toggle+halt) is needed to implement
++ * SET_INTERFACE on normal hardware. but it can't be
++ * done from software on the PXA UDC, and the hardware
++ * forgets to do it as part of SET_INTERFACE automagic.
++ */
++ DMSG("only host can clear %s halt\n", _ep->name);
++ return -EROFS;
++ }
++
++ local_irq_save(flags);
++
++ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0
++ || !list_empty(&ep->queue))) {
++ local_irq_restore(flags);
++ return -EAGAIN;
++ }
++
++ /* FST bit is the same for control, bulk in, bulk out, interrupt in */
++ *ep->reg_udccsr = UDCCSR_FST | UDCCSR_FEF;
++
++ /* ep0 needs special care */
++ if (!ep->desc) {
++ start_watchdog(ep->dev);
++ ep->dev->req_pending = 0;
++ ep->dev->ep0state = EP0_STALL;
++ LED_EP0_OFF;
++
++ /* and bulk/intr endpoints like dropping stalls too */
++ } else {
++ unsigned i;
++ for (i = 0; i < 1000; i += 20) {
++ if (*ep->reg_udccsr & UDCCSR_SST)
++ break;
++ udelay(20);
++ }
++ }
++ local_irq_restore(flags);
++
++ DBG(DBG_VERBOSE, "%s halt\n", _ep->name);
++ return 0;
++}
++
++static int pxa27x_ep_fifo_status(struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return -ENODEV;
++ }
++ /* pxa can't report unclaimed bytes from IN fifos */
++ if (ep->dir_in)
++ return -EOPNOTSUPP;
++ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN
++ || (*ep->reg_udccsr & UDCCSR_FS) == 0)
++ return 0;
++ else
++ return (*ep->reg_udcbcr & 0xfff) + 1;
++}
++
++static void pxa27x_ep_fifo_flush(struct usb_ep *_ep)
++{
++ struct pxa27x_ep *ep;
++
++ ep = container_of(_ep, struct pxa27x_ep, ep);
++ if (!_ep || ep->ep.name == ep0name || !list_empty(&ep->queue)) {
++ DMSG("%s, bad ep\n", __FUNCTION__);
++ return;
++ }
++
++ /* toggle and halt bits stay unchanged */
++
++ /* for OUT, just read and discard the FIFO contents. */
++ if (!ep->dir_in) {
++ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0)
++ (void)*ep->reg_udcdr;
++ return;
++ }
++
++ /* most IN status is the same, but ISO can't stall */
++ *ep->reg_udccsr = UDCCSR_PC | UDCCSR_FST | UDCCSR_TRN
++ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC)
++ ? 0 : UDCCSR_SST;
++}
++
++static struct usb_ep_ops pxa27x_ep_ops = {
++ .enable = pxa27x_ep_enable,
++ .disable = pxa27x_ep_disable,
++
++ .alloc_request = pxa27x_ep_alloc_request,
++ .free_request = pxa27x_ep_free_request,
++
++#warning "CHECK comments here"
++ /*
++ .alloc_buffer = pxa27x_ep_alloc_buffer,
++ .free_buffer = pxa27x_ep_free_buffer,
++ */
++
++ .queue = pxa27x_ep_queue,
++ .dequeue = pxa27x_ep_dequeue,
++
++ .set_halt = pxa27x_ep_set_halt,
++ .fifo_status = pxa27x_ep_fifo_status,
++ .fifo_flush = pxa27x_ep_fifo_flush,
++};
++
++/* ---------------------------------------------------------------------------
++ * device-scoped parts of the api to the usb controller hardware
++ * ---------------------------------------------------------------------------
++ */
++
++static inline void validate_fifo_size(struct pxa27x_ep *pxa_ep, u8 bmAttributes)
++{
++ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
++ case USB_ENDPOINT_XFER_CONTROL:
++ pxa_ep->fifo_size = EP0_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ pxa_ep->fifo_size = ISO_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_BULK:
++ pxa_ep->fifo_size = BULK_FIFO_SIZE;
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ pxa_ep->fifo_size = INT_FIFO_SIZE;
++ break;
++ default:
++ break;
++ }
++}
++
++#define NAME_SIZE 18
++struct usb_ep *pxa27x_ep_alloc(struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc, int config,
++ int interface, int alt)
++{
++ u32 tmp;
++ unsigned i;
++ char *name;
++ struct usb_ep *ep = NULL;
++ struct pxa27x_ep *pxa_ep = NULL;
++ struct pxa27x_udc *dev = the_controller;
++
++ DMSG("pxa27x_config_ep is called\n");
++ DMSG(" usb endpoint descriptor is:\n"
++ " bLength:%d\n"
++ " bDescriptorType:%x\n"
++ " bEndpointAddress:%x\n"
++ " bmAttributes:%x\n"
++ " wMaxPacketSize:%d\n",
++ desc->bLength,
++ desc->bDescriptorType, desc->bEndpointAddress,
++ desc->bmAttributes, desc->wMaxPacketSize);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (!dev->ep[i].assigned) {
++ pxa_ep = &dev->ep[i];
++ pxa_ep->assigned = 1;
++ pxa_ep->ep_num = i;
++ break;
++ }
++ }
++ if (unlikely(i == UDC_EP_NUM)) {
++ printk(KERN_ERR __FILE__ ": Failed to find a spare endpoint\n");
++ return ep;
++ }
++
++ ep = &pxa_ep->ep;
++
++ pxa_ep->dev = dev;
++ pxa_ep->desc = desc;
++ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0;
++ pxa_ep->dma = -1;
++
++ if (!(desc->bEndpointAddress & 0xF))
++ desc->bEndpointAddress |= i;
++
++ if (!(desc->wMaxPacketSize)) {
++ validate_fifo_size(pxa_ep, desc->bmAttributes);
++ desc->wMaxPacketSize = pxa_ep->fifo_size;
++ } else
++ pxa_ep->fifo_size = desc->wMaxPacketSize;
++
++ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0;
++ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
++ pxa_ep->stopped = 1;
++ pxa_ep->dma_con = 0;
++ pxa_ep->config = config;
++ pxa_ep->interface = interface;
++ pxa_ep->aisn = alt;
++
++ pxa_ep->reg_udccsr = &UDCCSR0 + i;
++ pxa_ep->reg_udcbcr = &UDCBCR0 + i;
++ pxa_ep->reg_udcdr = &UDCDR0 + i;
++ pxa_ep->reg_udccr = &UDCCRA - 1 + i;
++#ifdef USE_DMA
++ pxa_ep->reg_drcmr = &DRCMR24 + i;
++#endif
++
++ DMSG("udccsr=0x%8x, udcbcr=0x%8x, udcdr=0x%8x,"
++ "udccr0=0x%8x\n",
++ (unsigned)pxa_ep->reg_udccsr,
++ (unsigned)pxa_ep->reg_udcbcr,
++ (unsigned)pxa_ep->reg_udcdr, (unsigned)pxa_ep->reg_udccr);
++
++ /* Configure UDCCR */
++ tmp = 0;
++ tmp |= (pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN;
++#if 0
++ tmp |= (pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN;
++ tmp |= (pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN;
++#else
++ tmp |= (0 << UDCCONR_IN_S) & UDCCONR_IN;
++ tmp |= (0 << UDCCONR_AISN_S) & UDCCONR_AISN;
++#endif
++ tmp |= (desc->bEndpointAddress << UDCCONR_EN_S) & UDCCONR_EN;
++ tmp |= (pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET;
++ tmp |= (pxa_ep->dir_in) ? UDCCONR_ED : 0;
++ tmp |= (min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize)
++ << UDCCONR_MPS_S) & UDCCONR_MPS;
++ tmp |= UDCCONR_DE | UDCCONR_EE;
++#if 0
++ tmp |= UDCCONR_EE;
++#endif
++
++ *pxa_ep->reg_udccr = tmp;
++
++#ifdef USE_DMA
++ /* Only BULK use DMA */
++ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)
++ == USB_ENDPOINT_XFER_BULK)
++ *pxa_ep->reg_udccsr = UDCCSR_DME;
++#endif
++
++ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr, *pxa_ep->reg_udccr);
++
++ /* Fill ep name */
++ name = kmalloc(NAME_SIZE, GFP_KERNEL);
++ if (!name) {
++ printk(KERN_ERR "%s: Error\n", __FUNCTION__);
++ return NULL;
++ }
++
++ switch (pxa_ep->ep_type) {
++ case USB_ENDPOINT_XFER_BULK:
++ sprintf(name, "Bulk-%s-%d", (pxa_ep->dir_in ? "in" : "out"), i);
++ break;
++ case USB_ENDPOINT_XFER_INT:
++ sprintf(name, "Interrupt-%s-%d", (pxa_ep->dir_in ?
++ "in" : "out"), i);
++ break;
++ default:
++ sprintf(name, "endpoint-%s-%d", (pxa_ep->dir_in ?
++ "in" : "out"), i);
++ break;
++ }
++ ep->name = name;
++
++ ep->ops = &pxa27x_ep_ops;
++ ep->maxpacket = min((ushort) pxa_ep->fifo_size, desc->wMaxPacketSize);
++
++ list_add_tail(&ep->ep_list, &gadget->ep_list);
++ return ep;
++}
++
++static int pxa27x_udc_get_frame(struct usb_gadget *_gadget)
++{
++ return (UDCFNR & 0x3FF);
++}
++
++static int pxa27x_udc_wakeup(struct usb_gadget *_gadget)
++{
++ /* host may not have enabled remote wakeup */
++ if ((UDCCR & UDCCR_DWRE) == 0)
++ return -EHOSTUNREACH;
++ udc_set_mask_UDCCR(UDCCR_UDR);
++ return 0;
++}
++
++static const struct usb_gadget_ops pxa27x_udc_ops = {
++ .ep_alloc = pxa27x_ep_alloc,
++ .get_frame = pxa27x_udc_get_frame,
++ .wakeup = pxa27x_udc_wakeup,
++ /* current versions must always be self-powered */
++};
++
++/*-------------------------------------------------------------------------*/
++
++#ifdef UDC_PROC_FILE
++
++static const char proc_node_name[] = "driver/udc";
++
++static int
++udc_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *_dev)
++{
++ char *buf = page;
++ struct pxa27x_udc *dev = _dev;
++ char *next = buf;
++ unsigned size = count;
++ unsigned long flags;
++ int i, t;
++ u32 tmp;
++
++ if (off != 0)
++ return 0;
++
++ local_irq_save(flags);
++
++ /* basic device status */
++ t = scnprintf(next, size, DRIVER_DESC "\n"
++ "%s version: %s\nGadget driver: %s\n",
++ driver_name, DRIVER_VERSION SIZE_STR DMASTR,
++ dev->driver ? dev->driver->driver.name : "(none)");
++ size -= t;
++ next += t;
++
++ /* registers for device and ep0 */
++ t = scnprintf(next, size,
++ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n",
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ size -= t;
++ next += t;
++
++ tmp = UDCCR;
++ t = scnprintf(next, size,
++ "udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n",
++ tmp, (tmp & UDCCR_OEN) ? " oen" : "",
++ (tmp & UDCCR_AALTHNP) ? " aalthnp" : "",
++ (tmp & UDCCR_AHNP) ? " rem" : "",
++ (tmp & UDCCR_BHNP) ? " rstir" : "",
++ (tmp & UDCCR_DWRE) ? " dwre" : "",
++ (tmp & UDCCR_SMAC) ? " smac" : "",
++ (tmp & UDCCR_EMCE) ? " emce" : "",
++ (tmp & UDCCR_UDR) ? " udr" : "",
++ (tmp & UDCCR_UDA) ? " uda" : "",
++ (tmp & UDCCR_UDE) ? " ude" : "",
++ (tmp & UDCCR_ACN) >> UDCCR_ACN_S,
++ (tmp & UDCCR_AIN) >> UDCCR_AIN_S,
++ (tmp & UDCCR_AAISN) >> UDCCR_AAISN_S);
++
++ size -= t;
++ next += t;
++
++ tmp = UDCCSR0;
++ t = scnprintf(next, size,
++ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp,
++ (tmp & UDCCSR0_SA) ? " sa" : "",
++ (tmp & UDCCSR0_RNE) ? " rne" : "",
++ (tmp & UDCCSR0_FST) ? " fst" : "",
++ (tmp & UDCCSR0_SST) ? " sst" : "",
++ (tmp & UDCCSR0_DME) ? " dme" : "",
++ (tmp & UDCCSR0_IPR) ? " ipr" : "",
++ (tmp & UDCCSR0_OPC) ? " opc" : "");
++ size -= t;
++ next += t;
++
++ if (!dev->driver)
++ goto done;
++
++ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops,
++ dev->stats.irqs);
++ size -= t;
++ next += t;
++
++ /* dump endpoint queues */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++ struct pxa27x_request *req;
++ int t;
++
++ if (i != 0) {
++ const struct usb_endpoint_descriptor *d;
++
++ d = ep->desc;
++ if (!d)
++ continue;
++ tmp = *dev->ep[i].reg_udccsr;
++ t = scnprintf(next, size,
++ "%s max %d %s udccs %02x udccr:0x%x\n",
++ ep->ep.name,
++ le16_to_cpu(d->wMaxPacketSize),
++ (ep->dma >= 0) ? "dma" : "pio", tmp,
++ *dev->ep[i].reg_udccr);
++ /* TODO translate all five groups of udccs bits! */
++
++ } else /* ep0 should only have one transfer queued */
++ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n",
++ ep->pio_irqs);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++
++ if (list_empty(&ep->queue)) {
++ t = scnprintf(next, size, "\t(nothing queued)\n");
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ continue;
++ }
++ list_for_each_entry(req, &ep->queue, queue) {
++#ifdef USE_DMA
++ if (ep->dma >= 0 && req->queue.prev == &ep->queue)
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d "
++ "buf %p (dma%d dcmd %08x)\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf,
++ ep->dma, DCMD(ep->dma)
++ /* low 13 bits == bytes-to-go */
++ );
++ else
++#endif
++ t = scnprintf(next, size,
++ "\treq %p len %d/%d buf %p\n",
++ &req->req, req->req.actual,
++ req->req.length, req->req.buf);
++ if (t <= 0 || t > size)
++ goto done;
++ size -= t;
++ next += t;
++ }
++ }
++
++ done:
++ local_irq_restore(flags);
++ *eof = 1;
++ return count - size;
++}
++
++#define create_proc_files() \
++ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev)
++#define remove_proc_files() \
++ remove_proc_entry(proc_node_name, NULL)
++
++#else /* !UDC_PROC_FILE */
++#define create_proc_files() do {} while (0)
++#define remove_proc_files() do {} while (0)
++
++#endif /* UDC_PROC_FILE */
++
++/* "function" sysfs attribute */
++static ssize_t
++show_function(struct device *_dev, struct device_attribute *attr, char *buf)
++{
++ struct pxa27x_udc *dev = dev_get_drvdata(_dev);
++
++ if (!dev->driver
++ || !dev->driver->function
++ || strlen(dev->driver->function) > PAGE_SIZE)
++ return 0;
++ return scnprintf(buf, PAGE_SIZE, "%s\n", dev->driver->function);
++}
++
++static DEVICE_ATTR(function, S_IRUGO, show_function, NULL);
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * udc_disable - disable USB device controller
++ */
++static void udc_disable(struct pxa27x_udc *dev)
++{
++ UDCICR0 = 0x00000000;
++ UDCICR1 = 0x00000000;
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Disable clock for USB device */
++ pxa_set_cken(CKEN_USB, 0);
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++
++ pullup_off();
++}
++
++/*
++ * udc_reinit - initialize software state
++ */
++static void udc_reinit(struct pxa27x_udc *dev)
++{
++ u32 i;
++
++ dev->ep0state = EP0_IDLE;
++
++ /* basic endpoint records init */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 0;
++ ep->pio_irqs = ep->dma_irqs = 0;
++ }
++ dev->configuration = 0;
++ dev->interface = 0;
++ dev->alternate = 0;
++ /* the rest was statically initialized, and is read-only */
++}
++
++/* until it's enabled, this UDC should be completely invisible
++ * to any USB host.
++ */
++static void udc_enable(struct pxa27x_udc *dev)
++{
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++
++ /* Enable clock for USB device */
++ pxa_set_cken(CKEN_USB, 1);
++
++ UDCICR0 = UDCICR1 = 0;
++
++ ep0_idle(dev);
++ dev->gadget.speed = USB_SPEED_FULL;
++ dev->stats.irqs = 0;
++
++ udc_set_mask_UDCCR(UDCCR_UDE);
++ udelay(2);
++ if (UDCCR & UDCCR_EMCE) {
++ printk(KERN_ERR
++ ": There are error in configuration, udc disabled\n");
++ }
++
++ /* caller must be able to sleep in order to cope
++ * with startup transients.
++ */
++ msleep(100);
++
++ /* enable suspend/resume and reset irqs */
++ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS;
++
++ /* enable ep0 irqs */
++ UDCICR0 = UDCICR_INT(0, UDCICR_INT_MASK);
++#if 0
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep[i].assigned)
++ pio_irq_enable(i);
++ }
++#endif
++
++ pullup_on();
++}
++
++/* when a driver is successfully registered, it will receive
++ * control requests including set_configuration(), which enables
++ * non-control requests. then usb traffic follows until a
++ * disconnect is reported. then a host may connect again, or
++ * the driver might get unbound.
++ */
++int usb_gadget_register_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++ int retval;
++
++ DMSG("dev=0x%x, driver=0x%x, speed=%d, "
++ "bind=0x%x, unbind=0x%x, disconnect=0x%x, setup=0x%x\n",
++ (unsigned)dev, (unsigned)driver, driver->speed,
++ (unsigned)driver->bind, (unsigned)driver->unbind,
++ (unsigned)driver->disconnect, (unsigned)driver->setup);
++
++ if (!driver || driver->speed != USB_SPEED_FULL
++ || !driver->bind
++ || !driver->unbind || !driver->disconnect || !driver->setup)
++ return -EINVAL;
++ if (!dev)
++ return -ENODEV;
++ if (dev->driver)
++ return -EBUSY;
++
++ /* first hook up the driver ... */
++ dev->driver = driver;
++ dev->gadget.dev.driver = &driver->driver;
++
++ retval = device_add(&dev->gadget.dev);
++ if (retval) {
++ DMSG("unable to add device for %s --> error %d\n",
++ driver->driver.name, retval);
++ goto device_add_error;
++ }
++ retval = driver->bind(&dev->gadget);
++ if (retval) {
++ DMSG("bind to driver %s --> error %d\n",
++ driver->driver.name, retval);
++ goto device_bind_error;
++ }
++ retval = device_create_file(dev->dev, &dev_attr_function);
++ if (retval) {
++ DMSG("unable to create file for %s --> error %d\n",
++ driver->driver.name, retval);
++ goto create_file_error;
++ }
++
++ /* ... then enable host detection and ep0; and we're ready
++ * for set_configuration as well as eventual disconnect.
++ * NOTE: this shouldn't power up until later.
++ */
++ DMSG("registered gadget driver '%s'\n", driver->driver.name);
++ udc_enable(dev);
++ dump_state(dev);
++
++ return 0;
++
++ create_file_error:
++ driver->unbind(&dev->gadget);
++
++ device_bind_error:
++ device_del(&dev->gadget.dev);
++
++ device_add_error:
++ dev->driver = 0;
++ dev->gadget.dev.driver = 0;
++
++ return retval;
++}
++
++EXPORT_SYMBOL(usb_gadget_register_driver);
++
++static void
++stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver)
++{
++ int i;
++
++ DMSG("Trace path 1\n");
++ /* don't disconnect drivers more than once */
++ if (dev->gadget.speed == USB_SPEED_UNKNOWN)
++ driver = 0;
++ dev->gadget.speed = USB_SPEED_UNKNOWN;
++
++ /* prevent new request submissions, kill any outstanding requests */
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->stopped = 1;
++ nuke(ep, -ESHUTDOWN);
++ }
++ del_timer_sync(&dev->timer);
++
++ /* report disconnect; the driver is already quiesced */
++ if (driver)
++ driver->disconnect(&dev->gadget);
++
++ /* re-init driver-visible data structures */
++ udc_reinit(dev);
++}
++
++int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
++{
++ struct pxa27x_udc *dev = the_controller;
++
++ if (!dev)
++ return -ENODEV;
++ if (!driver || driver != dev->driver)
++ return -EINVAL;
++
++ local_irq_disable();
++ udc_disable(dev);
++ stop_activity(dev, driver);
++ local_irq_enable();
++
++ driver->unbind(&dev->gadget);
++ dev->driver = 0;
++
++ device_del(&dev->gadget.dev);
++ device_remove_file(dev->dev, &dev_attr_function);
++
++ DMSG("unregistered gadget driver '%s'\n", driver->driver.name);
++ dump_state(dev);
++ return 0;
++}
++
++EXPORT_SYMBOL(usb_gadget_unregister_driver);
++
++#ifndef enable_disconnect_irq
++#define enable_disconnect_irq() do {} while (0)
++#define disable_disconnect_irq() do {} while (0)
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++static inline void clear_ep_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint
++ * fifos, and pending transactions mustn't be continued in any case.
++ */
++ for (i = 1; i < UDC_EP_NUM; i++)
++ nuke(&dev->ep[i], -ECONNABORTED);
++}
++
++static void udc_watchdog(unsigned long _dev)
++{
++ struct pxa27x_udc *dev = (void *)_dev;
++
++ local_irq_disable();
++ if (dev->ep0state == EP0_STALL
++ && (UDCCSR0 & UDCCSR0_FST) == 0 && (UDCCSR0 & UDCCSR0_SST) == 0) {
++ UDCCSR0 = UDCCSR0_FST | UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0 re-stall\n");
++ start_watchdog(dev);
++ }
++ local_irq_enable();
++}
++
++static void handle_ep0(struct pxa27x_udc *dev)
++{
++ u32 udccsr0 = UDCCSR0;
++ struct pxa27x_ep *ep = &dev->ep[0];
++ struct pxa27x_request *req;
++ union {
++ struct usb_ctrlrequest r;
++ u8 raw[8];
++ u32 word[2];
++ } u;
++
++ if (list_empty(&ep->queue))
++ req = 0;
++ else
++ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
++
++ /* clear stall status */
++ if (udccsr0 & UDCCSR0_SST) {
++ nuke(ep, -EPIPE);
++ UDCCSR0 = UDCCSR0_SST;
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ /* previous request unfinished? non-error iff back-to-back ... */
++ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) {
++ nuke(ep, 0);
++ del_timer(&dev->timer);
++ ep0_idle(dev);
++ }
++
++ switch (dev->ep0state) {
++ case EP0_NO_ACTION:
++ printk(KERN_INFO "%s: Busy\n", __FUNCTION__);
++ /*Fall through */
++ case EP0_IDLE:
++ /* late-breaking status? */
++ udccsr0 = UDCCSR0;
++
++ /* start control request? */
++ if (likely((udccsr0 & (UDCCSR0_OPC | UDCCSR0_SA | UDCCSR0_RNE))
++ == (UDCCSR0_OPC | UDCCSR0_SA | UDCCSR0_RNE))) {
++ int i;
++
++ nuke(ep, -EPROTO);
++ /* read SETUP packet */
++ for (i = 0; i < 2; i++) {
++ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) {
++ bad_setup:
++ DMSG("SETUP %d!\n", i);
++ goto stall;
++ }
++ u.word[i] = UDCDR0;
++ }
++ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0))
++ goto bad_setup;
++
++ le16_to_cpus(&u.r.wValue);
++ le16_to_cpus(&u.r.wIndex);
++ le16_to_cpus(&u.r.wLength);
++
++ LED_EP0_ON;
++
++ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n",
++ u.r.bRequestType, u.r.bRequest,
++ u.r.wValue, u.r.wIndex, u.r.wLength);
++ /* cope with automagic for some standard requests. */
++ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK)
++ == USB_TYPE_STANDARD;
++ dev->req_config = 0;
++ dev->req_pending = 1;
++#if 0
++ switch (u.r.bRequest) {
++ /* hardware was supposed to hide this */
++ case USB_REQ_SET_CONFIGURATION:
++ case USB_REQ_SET_INTERFACE:
++ case USB_REQ_SET_ADDRESS:
++ printk(KERN_ERR "Should not come here\n");
++ break;
++ }
++
++#endif
++ if (u.r.bRequestType & USB_DIR_IN)
++ dev->ep0state = EP0_IN_DATA_PHASE;
++ else
++ dev->ep0state = EP0_OUT_DATA_PHASE;
++ i = dev->driver->setup(&dev->gadget, &u.r);
++
++ if (i < 0) {
++ /* hardware automagic preventing STALL... */
++ if (dev->req_config) {
++ /* hardware sometimes neglects to tell
++ * tell us about config change events,
++ * so later ones may fail...
++ */
++ WARN("config change %02x fail %d?\n",
++ u.r.bRequest, i);
++ return;
++ /* TODO experiment: if has_cfr,
++ * hardware didn't ACK; maybe we
++ * could actually STALL!
++ */
++ }
++ DBG(DBG_VERBOSE, "protocol STALL, "
++ "%02x err %d\n", UDCCSR0, i);
++ stall:
++ /* the watchdog timer helps deal with cases
++ * where udc seems to clear FST wrongly, and
++ * then NAKs instead of STALLing.
++ */
++ ep0start(dev, UDCCSR0_FST | UDCCSR0_FTF,
++ "stall");
++ start_watchdog(dev);
++ dev->ep0state = EP0_STALL;
++ LED_EP0_OFF;
++
++ /* deferred i/o == no response yet */
++ } else if (dev->req_pending) {
++ if (likely(dev->ep0state == EP0_IN_DATA_PHASE
++ || dev->req_std || u.r.wLength))
++ ep0start(dev, 0, "defer");
++ else
++ ep0start(dev, UDCCSR0_IPR, "defer/IPR");
++ }
++
++ /* expect at least one data or status stage irq */
++ return;
++
++ } else {
++ /* some random early IRQ:
++ * - we acked FST
++ * - IPR cleared
++ * - OPC got set, without SA (likely status stage)
++ */
++ UDCCSR0 = udccsr0 & (UDCCSR0_SA | UDCCSR0_OPC);
++ }
++ break;
++ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ UDCCSR0 = UDCCSR0_OPC | UDCCSR0_FTF;
++ DBG(DBG_VERBOSE, "ep0in premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ } else { /* irq was IPR clearing */
++
++ if (req) {
++ /* this IN packet might finish the request */
++ (void)write_ep0_fifo(ep, req);
++ } /* else IN token before response was written */
++ }
++ break;
++ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */
++ if (udccsr0 & UDCCSR0_OPC) {
++ if (req) {
++ /* this OUT packet might finish the request */
++ if (read_ep0_fifo(ep, req))
++ done(ep, req, 0);
++ /* else more OUT packets expected */
++ } /* else OUT token before read was issued */
++ } else { /* irq was IPR clearing */
++
++ DBG(DBG_VERBOSE, "ep0out premature status\n");
++ if (req)
++ done(ep, req, 0);
++ ep0_idle(dev);
++ }
++ break;
++ case EP0_STALL:
++ UDCCSR0 = UDCCSR0_FST;
++ break;
++ }
++ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK);
++}
++
++static void handle_ep(struct pxa27x_ep *ep)
++{
++ struct pxa27x_request *req;
++ int completed;
++ u32 udccsr = 0;
++
++ DMSG("%s is called\n", __FUNCTION__);
++ do {
++ completed = 0;
++ if (likely(!list_empty(&ep->queue))) {
++ req = list_entry(ep->queue.next,
++ struct pxa27x_request, queue);
++ } else
++ req = 0;
++
++#if 0
++ udccsr = *ep->reg_udccsr;
++#endif
++ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__,
++ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr);
++ if (unlikely(ep->dir_in)) {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely(udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ if (req && likely((*ep->reg_udccsr & UDCCSR_FS) != 0))
++ completed = write_fifo(ep, req);
++
++ } else {
++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
++ if (unlikely(udccsr))
++ *ep->reg_udccsr = udccsr;
++
++ /* fifos can hold packets, ready for reading... */
++ if (likely(req)) {
++ completed = read_fifo(ep, req);
++ } else {
++ pio_irq_disable(ep->ep_num);
++ *ep->reg_udccsr = UDCCSR_FEF;
++ DMSG("%s: no req for out data\n", __FUNCTION__);
++ }
++ }
++ ep->pio_irqs++;
++ } while (completed);
++}
++
++static void pxa27x_change_configuration(struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req;
++
++ req.bRequestType = 0;
++ req.bRequest = USB_REQ_SET_CONFIGURATION;
++ req.wValue = dev->configuration;
++ req.wIndex = 0;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++
++}
++
++static void pxa27x_change_interface(struct pxa27x_udc *dev)
++{
++ struct usb_ctrlrequest req;
++
++ req.bRequestType = USB_RECIP_INTERFACE;
++ req.bRequest = USB_REQ_SET_INTERFACE;
++ req.wValue = dev->alternate;
++ req.wIndex = dev->interface;
++ req.wLength = 0;
++
++ dev->ep0state = EP0_NO_ACTION;
++ dev->driver->setup(&dev->gadget, &req);
++}
++
++/*
++ * pxa27x_udc_irq - interrupt handler
++ *
++ * avoid delays in ep0 processing. the control handshaking isn't always
++ * under software control (pxa250c0 and the pxa255 are better), and delays
++ * could cause usb protocol errors.
++ */
++static irqreturn_t pxa27x_udc_irq(int irq, void *_dev)
++{
++ struct pxa27x_udc *dev = _dev;
++ int handled;
++
++ dev->stats.irqs++;
++ HEX_DISPLAY(dev->stats.irqs);
++
++ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, "
++ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR);
++
++ do {
++ u32 udcir = UDCISR1 & 0xF8000000;
++
++ handled = 0;
++
++ /* SUSpend Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRSU)) {
++ UDCISR1 = UDCISR1_IRSU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB suspend\n");
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver && dev->driver->suspend)
++ dev->driver->suspend(&dev->gadget);
++ ep0_idle(dev);
++ }
++
++ /* RESume Interrupt Request */
++ if (unlikely(udcir & UDCISR1_IRRU)) {
++ UDCISR1 = UDCISR1_IRRU;
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB resume\n");
++
++ if (dev->gadget.speed != USB_SPEED_UNKNOWN
++ && dev->driver && dev->driver->resume)
++ dev->driver->resume(&dev->gadget);
++ }
++
++ if (unlikely(udcir & UDCISR1_IRCC)) {
++ unsigned config, interface, alternate;
++
++ handled = 1;
++ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or "
++ "SET_INTERFACE command received\n");
++
++ UDCCR |= UDCCR_SMAC;
++
++ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S;
++
++ if (dev->configuration != config) {
++ dev->configuration = config;
++ pxa27x_change_configuration(dev);
++ }
++
++ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S;
++ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S;
++
++ if ((dev->configuration != interface) ||
++ (dev->alternate != alternate)) {
++ dev->interface = config;
++ dev->alternate = alternate;
++ pxa27x_change_interface(dev);
++ }
++
++ UDCISR1 = UDCISR1_IRCC;
++ DMSG("%s: con:%d,inter:%d,alt:%d\n",
++ __FUNCTION__, config, interface, alternate);
++ }
++
++ /* ReSeT Interrupt Request - USB reset */
++ if (unlikely(udcir & UDCISR1_IRRS)) {
++ UDCISR1 = UDCISR1_IRRS;
++ handled = 1;
++
++ if ((UDCCR & UDCCR_UDA) == 0) {
++ DBG(DBG_VERBOSE, "SB reset start\n");
++
++ /* reset driver and endpoints,
++ * in case that's not yet done
++ */
++ stop_activity(dev, dev->driver);
++
++ }
++ INFO("USB reset\n");
++ dev->gadget.speed = USB_SPEED_FULL;
++ memset(&dev->stats, 0, sizeof dev->stats);
++
++ } else {
++ u32 udcisr0 = UDCISR0;
++ u32 udcisr1 = UDCISR1 & 0xFFFF;
++ int i;
++
++ if (unlikely(!udcisr0 && !udcisr1))
++ continue;
++
++ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,
++ udcisr0);
++
++ /* control traffic */
++ if (udcisr0 & UDCISR0_IR0) {
++ dev->ep[0].pio_irqs++;
++ handle_ep0(dev);
++ handled = 1;
++ }
++
++ udcisr0 >>= 2;
++ /* endpoint data transfers */
++ for (i = 1; udcisr0 != 0 && i < 16; udcisr0 >>= 2, i++) {
++ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr0 & UDC_INT_FIFOERROR)
++ printk(KERN_ERR
++ " Endpoint %d Fifo error\n", i);
++ if (udcisr0 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i]);
++ handled = 1;
++ }
++
++ }
++
++ for (i = 0; udcisr1 != 0 && i < 8; udcisr1 >>= 2, i++) {
++ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK);
++
++ if (udcisr1 & UDC_INT_FIFOERROR) {
++ printk(KERN_ERR
++ " Endpoint %d fifo error\n",
++ (i + 16));
++ }
++
++ if (udcisr1 & UDC_INT_PACKETCMP) {
++ handle_ep(&dev->ep[i + 16]);
++ handled = 1;
++ }
++ }
++ }
++
++ /* we could also ask for 1 msec SOF (SIR) interrupts */
++
++ } while (handled);
++ return IRQ_HANDLED;
++}
++
++static void udc_init_ep(struct pxa27x_udc *dev)
++{
++ int i;
++
++ INIT_LIST_HEAD(&dev->gadget.ep_list);
++ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list);
++
++ for (i = 0; i < UDC_EP_NUM; i++) {
++ struct pxa27x_ep *ep = &dev->ep[i];
++
++ ep->dma = -1;
++ if (i != 0) {
++ memset(ep, 0, sizeof(*ep));
++ }
++ INIT_LIST_HEAD(&ep->queue);
++ }
++}
++
++/*-------------------------------------------------------------------------*/
++
++static void nop_release(struct device *dev)
++{
++ DMSG("%s %s\n", __FUNCTION__, dev->bus_id);
++}
++
++/* this uses load-time allocation and initialization (instead of
++ * doing it at run-time) to save code, eliminate fault paths, and
++ * be more obviously correct.
++ */
++static struct pxa27x_udc memory = {
++ .gadget = {
++ .ops = &pxa27x_udc_ops,
++ .ep0 = &memory.ep[0].ep,
++ .name = driver_name,
++ .dev = {
++ .bus_id = "gadget",
++ .release = nop_release,
++ },
++ },
++
++ /* control endpoint */
++ .ep[0] = {
++ .ep = {
++ .name = ep0name,
++ .ops = &pxa27x_ep_ops,
++ .maxpacket = EP0_FIFO_SIZE,
++ },
++ .dev = &memory,
++ .reg_udccsr = &UDCCSR0,
++ .reg_udcdr = &UDCDR0,
++ }
++};
++
++#define CP15R0_VENDOR_MASK 0xffffe000
++
++#define CP15R0_XSCALE_VALUE 0x69054000 /* intel/arm/xscale */
++
++/*
++ * probe - binds to the platform device
++ */
++static int __init pxa27x_udc_probe(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = &memory;
++ int irq, retval;
++ u32 chiprev;
++
++ /* insist on Intel/ARM/XScale */
++ asm("mrc%? p15, 0, %0, c0, c0":"=r"(chiprev));
++ if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) {
++ printk(KERN_ERR "%s: not XScale!\n", driver_name);
++ return -ENODEV;
++ }
++
++ irq = platform_get_irq(pdev, 0);
++ if (irq < 0)
++ return -ENODEV;
++ pr_debug("%s: IRQ %d\n", driver_name, irq);
++
++ /* other non-static parts of init */
++ udc->dev = dev;
++ udc->mach = dev->platform_data;
++
++ /* Disable irq, erase old events and disable the pull up on the bus */
++ UDCICR0 = 0x00000000;
++ UDCICR1 = 0x00000000;
++ UDCISR0 = 0xffffffff;
++ UDCISR1 = 0xffffffff;
++ if (udc->mach->gpio_pullup) {
++ if ((retval = gpio_request(udc->mach->gpio_pullup,
++ "pca2xx_udc GPIO PULLUP"))) {
++ dev_dbg(&pdev->dev,
++ "can't get pullup gpio %d, err: %d\n",
++ udc->mach->gpio_pullup, retval);
++ if (udc->mach->gpio_vbus)
++ gpio_free(udc->mach->gpio_vbus);
++ return -EBUSY;
++ }
++ gpio_direction_output(udc->mach->gpio_pullup, 0);
++ }
++
++ init_timer(&udc->timer);
++ udc->timer.function = udc_watchdog;
++ udc->timer.data = (unsigned long)udc;
++
++ device_initialize(&udc->gadget.dev);
++ udc->gadget.dev.parent = dev;
++ udc->gadget.dev.dma_mask = dev->dma_mask;
++
++ the_controller = udc;
++ dev_set_drvdata(dev, udc);
++
++ udc_disable(udc);
++ udc_init_ep(udc);
++ udc_reinit(udc);
++
++ /* irq setup after old hardware state is cleaned up */
++ retval = request_irq(irq, pxa27x_udc_irq, 0, driver_name, udc);
++ if (retval != 0) {
++ printk(KERN_ERR "%s: can't get irq %i, err %d\n",
++ driver_name, irq, retval);
++ return -EBUSY;
++ }
++ udc->got_irq = 1;
++
++ create_proc_files();
++
++ return 0;
++}
++
++static void pxa27x_udc_shutdown(struct platform_device *_dev)
++{
++ pullup_off();
++}
++
++static int __exit pxa27x_udc_remove(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = dev->driver_data;
++
++ udc_disable(udc);
++ remove_proc_files();
++ usb_gadget_unregister_driver(udc->driver);
++
++ if (udc->got_irq) {
++ free_irq(platform_get_irq(pdev, 0), udc);
++ udc->got_irq = 0;
++ }
++ if (machine_is_lubbock() && udc->got_disc) {
++ free_irq(LUBBOCK_USB_DISC_IRQ, udc);
++ udc->got_disc = 0;
++ }
++ dev_set_drvdata(dev, 0);
++ the_controller = 0;
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int pxa27x_udc_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = dev->driver_data;
++ int i;
++
++ DMSG("%s will go into SUSPEND_POWER_DOWN\n", __FUNCTION__);
++ udc->udccsr0 = UDCCSR0;
++ for (i = 1; (i < UDC_EP_NUM); i++) {
++ if (udc->ep[i].assigned) {
++ struct pxa27x_ep *ep = &udc->ep[i];
++
++ ep->udccsr_value = *ep->reg_udccsr;
++ ep->udccr_value = *ep->reg_udccr;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++
++ udc_clear_mask_UDCCR(UDCCR_UDE);
++ pxa_set_cken(CKEN_USB, 0);
++
++ return 0;
++}
++
++static int pxa27x_udc_resume(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct pxa27x_udc *udc = dev->driver_data;
++ int i;
++
++ DMSG("%s: udc resume\n", __FUNCTION__);
++
++ UDCCSR0 = udc->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME);
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (udc->ep[i].assigned) {
++ struct pxa27x_ep *ep = &udc->ep[i];
++
++ *ep->reg_udccsr = ep->udccsr_value;
++ *ep->reg_udccr = ep->udccr_value;
++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
++ i, *ep->reg_udccsr, *ep->reg_udccr);
++ }
++ }
++ udc_enable(udc);
++ /* OTGPH bit is set when sleep mode is entered.
++ * it indicates that OTG pad is retaining its state.
++ * Upon exit from sleep mode and before clearing OTGPH,
++ * Software must configure the USB OTG pad, UDC, and UHC
++ * to the state they were in before entering sleep mode.*/
++ PSSR |= PSSR_OTGPH;
++
++ return 0;
++}
++#else
++#define pxa27x_udc_suspend NULL
++#define pxa27x_udc_resume NULL
++#endif
++
++/*-------------------------------------------------------------------------*/
++
++static struct platform_driver pxa27x_udc_driver = {
++ .shutdown = pxa27x_udc_shutdown,
++ .remove = __exit_p(pxa27x_udc_remove),
++ .suspend = pxa27x_udc_suspend,
++ .resume = pxa27x_udc_resume,
++ .driver = {
++ .owner = THIS_MODULE,
++ .name = "pxa27x-udc",
++ },
++};
++
++static int __init udc_init(void)
++{
++ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
++ return platform_driver_probe(&pxa27x_udc_driver, pxa27x_udc_probe);
++}
++
++static void __exit udc_exit(void)
++{
++ platform_driver_unregister(&pxa27x_udc_driver);
++}
++
++module_init(udc_init);
++module_exit(udc_exit);
++
++MODULE_DESCRIPTION(DRIVER_DESC);
++MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell, Rodolfo Giometti");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/drivers/usb/gadget/pxa27x_udc.h
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/usb/gadget/pxa27x_udc.h
+@@ -0,0 +1,304 @@
++/*
++ * linux/drivers/usb/gadget/pxa27x_udc.h
++ * Intel PXA27x on-chip full speed USB device controller
++ *
++ * Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
++ * Copyright (C) 2003 David Brownell
++ * Copyright (C) 2004 Intel Corporation
++ *
++ * 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
++ */
++
++#ifndef __LINUX_USB_GADGET_PXA27X_H
++#define __LINUX_USB_GADGET_PXA27X_H
++
++#include <linux/types.h>
++
++struct pxa27x_udc;
++
++struct pxa27x_ep {
++ struct usb_ep ep;
++ struct pxa27x_udc *dev;
++
++ const struct usb_endpoint_descriptor *desc;
++ struct list_head queue;
++ unsigned long pio_irqs;
++ unsigned long dma_irqs;
++
++ int dma;
++ unsigned fifo_size;
++ unsigned ep_num;
++ unsigned ep_type;
++
++ unsigned stopped : 1;
++ unsigned dma_con : 1;
++ unsigned dir_in : 1;
++ unsigned assigned : 1;
++
++ unsigned config;
++ unsigned interface;
++ unsigned aisn;
++ /* UDCCSR = UDC Control/Status Register for this EP
++ * UBCR = UDC Byte Count Remaining (contents of OUT fifo)
++ * UDCDR = UDC Endpoint Data Register (the fifo)
++ * UDCCR = UDC Endpoint Configuration Registers
++ * DRCM = DMA Request Channel Map
++ */
++ volatile u32 *reg_udccsr;
++ volatile u32 *reg_udcbcr;
++ volatile u32 *reg_udcdr;
++ volatile u32 *reg_udccr;
++#ifdef USE_DMA
++ volatile u32 *reg_drcmr;
++#define drcmr(n) .reg_drcmr = & DRCMR ## n ,
++#else
++#define drcmr(n)
++#endif
++
++#ifdef CONFIG_PM
++ unsigned udccsr_value;
++ unsigned udccr_value;
++#endif
++};
++
++struct pxa27x_request {
++ struct usb_request req;
++ struct list_head queue;
++};
++
++enum ep0_state {
++ EP0_IDLE,
++ EP0_IN_DATA_PHASE,
++ EP0_OUT_DATA_PHASE,
++// EP0_END_XFER,
++ EP0_STALL,
++ EP0_NO_ACTION
++};
++
++#define EP0_FIFO_SIZE ((unsigned)16)
++#define BULK_FIFO_SIZE ((unsigned)64)
++#define ISO_FIFO_SIZE ((unsigned)256)
++#define INT_FIFO_SIZE ((unsigned)8)
++
++struct udc_stats {
++ struct ep0stats {
++ unsigned long ops;
++ unsigned long bytes;
++ } read, write;
++ unsigned long irqs;
++};
++
++#ifdef CONFIG_USB_PXA27X_SMALL
++/* when memory's tight, SMALL config saves code+data. */
++//#undef USE_DMA
++//#define UDC_EP_NUM 3
++#endif
++
++#ifndef UDC_EP_NUM
++#define UDC_EP_NUM 24
++#endif
++
++struct pxa27x_udc {
++ struct usb_gadget gadget;
++ struct usb_gadget_driver *driver;
++
++ enum ep0_state ep0state;
++ struct udc_stats stats;
++ unsigned got_irq : 1,
++ got_disc : 1,
++ has_cfr : 1,
++ req_pending : 1,
++ req_std : 1,
++ req_config : 1;
++
++#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200))
++ struct timer_list timer;
++
++ struct device *dev;
++ struct pxa2xx_udc_mach_info *mach;
++ u64 dma_mask;
++ struct pxa27x_ep ep [UDC_EP_NUM];
++
++ unsigned configuration,
++ interface,
++ alternate;
++#ifdef CONFIG_PM
++ unsigned udccsr0;
++#endif
++};
++
++/*-------------------------------------------------------------------------*/
++#if 0
++#ifdef DEBUG
++#define HEX_DISPLAY(n) do { \
++ if (machine_is_mainstone())\
++ { MST_LEDDAT1 = (n); } \
++ } while(0)
++
++#define HEX_DISPLAY1(n) HEX_DISPLAY(n)
++
++#define HEX_DISPLAY2(n) do { \
++ if (machine_is_mainstone()) \
++ { MST_LEDDAT2 = (n); } \
++ } while(0)
++
++#endif /* DEBUG */
++#endif
++/*-------------------------------------------------------------------------*/
++
++/* LEDs are only for debug */
++#ifndef HEX_DISPLAY
++#define HEX_DISPLAY(n) do {} while(0)
++#endif
++
++#ifndef LED_CONNECTED_ON
++#define LED_CONNECTED_ON do {} while(0)
++#define LED_CONNECTED_OFF do {} while(0)
++#endif
++#ifndef LED_EP0_ON
++#define LED_EP0_ON do {} while (0)
++#define LED_EP0_OFF do {} while (0)
++#endif
++
++static struct pxa27x_udc *the_controller;
++
++/*-------------------------------------------------------------------------*/
++
++/*
++ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be
++ * mostly silent during normal use/testing, with no timing side-effects.
++ */
++#define DBG_NORMAL 1 /* error paths, device state transitions */
++#define DBG_VERBOSE 2 /* add some success path trace info */
++#define DBG_NOISY 3 /* ... even more: request level */
++#define DBG_VERY_NOISY 4 /* ... even more: packet level */
++
++#ifdef DEBUG
++
++static const char *state_name[] = {
++ "EP0_IDLE",
++ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE",
++ "EP0_END_XFER", "EP0_STALL"
++};
++
++#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff)
++
++#ifdef VERBOSE
++# define UDC_DEBUG DBG_VERBOSE
++#else
++# define UDC_DEBUG DBG_NORMAL
++#endif
++
++static void __attribute__ ((__unused__))
++dump_udccr(const char *label)
++{
++ u32 udccr = UDCCR;
++ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n",
++ label, udccr,
++ (udccr & UDCCR_OEN) ? " oen":"",
++ (udccr & UDCCR_AALTHNP) ? " aalthnp":"",
++ (udccr & UDCCR_AHNP) ? " rem" : "",
++ (udccr & UDCCR_BHNP) ? " rstir" : "",
++ (udccr & UDCCR_DWRE) ? " dwre" : "",
++ (udccr & UDCCR_SMAC) ? " smac" : "",
++ (udccr & UDCCR_EMCE) ? " emce" : "",
++ (udccr & UDCCR_UDR) ? " udr" : "",
++ (udccr & UDCCR_UDA) ? " uda" : "",
++ (udccr & UDCCR_UDE) ? " ude" : "",
++ (udccr & UDCCR_ACN) >> UDCCR_ACN_S,
++ (udccr & UDCCR_AIN) >> UDCCR_AIN_S,
++ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S );
++}
++
++static void __attribute__ ((__unused__))
++dump_udccsr0(const char *label)
++{
++ u32 udccsr0 = UDCCSR0;
++
++ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n",
++ label, state_name[the_controller->ep0state], udccsr0,
++ (udccsr0 & UDCCSR0_SA) ? " sa" : "",
++ (udccsr0 & UDCCSR0_RNE) ? " rne" : "",
++ (udccsr0 & UDCCSR0_FST) ? " fst" : "",
++ (udccsr0 & UDCCSR0_SST) ? " sst" : "",
++ (udccsr0 & UDCCSR0_DME) ? " dme" : "",
++ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "",
++ (udccsr0 & UDCCSR0_OPC) ? " opr" : "");
++}
++
++static void __attribute__ ((__unused__))
++dump_state(struct pxa27x_udc *dev)
++{
++ unsigned i;
++
++ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n",
++ state_name[dev->ep0state],
++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
++ dump_udccr("udccr");
++
++ if (!dev->driver) {
++ DMSG("no gadget driver bound\n");
++ return;
++ } else
++ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
++
++
++ dump_udccsr0 ("udccsr0");
++ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
++ dev->stats.write.bytes, dev->stats.write.ops,
++ dev->stats.read.bytes, dev->stats.read.ops);
++
++ for (i = 1; i < UDC_EP_NUM; i++) {
++ if (dev->ep [i].desc == 0)
++ continue;
++ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr);
++ }
++}
++
++#if 0
++static void dump_regs(u8 ep)
++{
++ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n",
++ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep));
++}
++static void dump_req (struct pxa27x_request *req)
++{
++ struct usb_request *r = &req->req;
++
++ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n",
++ __FUNCTION__, (unsigned)r->buf, r->length,
++ r->dma, r->actual);
++}
++#endif
++
++#else
++
++#define DMSG(stuff...) do{}while(0)
++
++#define dump_udccr(x) do{}while(0)
++#define dump_udccsr0(x) do{}while(0)
++#define dump_state(x) do{}while(0)
++
++#define UDC_DEBUG ((unsigned)0)
++
++#endif
++
++#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0)
++
++#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
++#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++
++
++#endif /* __LINUX_USB_GADGET_PXA27X_H */
+Index: linux-2.6.24/drivers/usb/gadget/serial.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/serial.c
++++ linux-2.6.24/drivers/usb/gadget/serial.c
+@@ -1360,20 +1360,20 @@
+
+ usb_ep_autoconfig_reset(gadget);
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+ ep->driver_data = ep; /* claim the endpoint */
+
+ if (use_acm) {
+- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc);
++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc, 0, 0, 0);
+ if (!ep) {
+ printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name);
+ goto autoconf_fail;
+Index: linux-2.6.24/drivers/usb/gadget/zero.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/gadget/zero.c
++++ linux-2.6.24/drivers/usb/gadget/zero.c
+@@ -1112,7 +1112,7 @@
+ * but there may also be important quirks to address.
+ */
+ usb_ep_autoconfig_reset (gadget);
+- ep = usb_ep_autoconfig (gadget, &fs_source_desc);
++ ep = usb_ep_autoconfig (gadget, &fs_source_desc, 0, 0, 0);
+ if (!ep) {
+ autoconf_fail:
+ printk (KERN_ERR "%s: can't autoconfigure on %s\n",
+@@ -1122,7 +1122,7 @@
+ EP_IN_NAME = ep->name;
+ ep->driver_data = ep; /* claim */
+
+- ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
++ ep = usb_ep_autoconfig (gadget, &fs_sink_desc, 0, 0, 0);
+ if (!ep)
+ goto autoconf_fail;
+ EP_OUT_NAME = ep->name;
+Index: linux-2.6.24/include/asm-arm/arch-pxa/udc.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/udc.h
++++ linux-2.6.24/include/asm-arm/arch-pxa/udc.h
+@@ -2,6 +2,7 @@
+ * linux/include/asm-arm/arch-pxa/udc.h
+ *
+ */
++#include <asm/arch/pxa-regs.h>
+ #include <asm/mach/udc_pxa2xx.h>
+
+ extern void pxa_set_udc_info(struct pxa2xx_udc_mach_info *info);
+Index: linux-2.6.24/include/linux/usb/gadget.h
+===================================================================
+--- linux-2.6.24.orig/include/linux/usb/gadget.h
++++ linux-2.6.24/include/linux/usb/gadget.h
+@@ -397,10 +397,28 @@
+
+ struct usb_gadget;
+
++/**
++ * struct usb_endpoint_config - possible configurations of a given endpoint
++ * @config: the configuration number
++ * @interface: the interface number
++ * @altinterface: the altinterface number
++ *
++ * Used as an array to pass information about the possible configurations
++ * of a given endpoint to the bus controller.
++ */
++struct usb_endpoint_config {
++ int config;
++ int interface;
++ int altinterface;
++};
++
+ /* the rest of the api to the controller hardware: device operations,
+ * which don't involve endpoints (or i/o).
+ */
+ struct usb_gadget_ops {
++ struct usb_ep* (*ep_alloc)(struct usb_gadget *gadget,
++ struct usb_endpoint_descriptor *desc,
++ int config, int interface, int alt);
+ int (*get_frame)(struct usb_gadget *);
+ int (*wakeup)(struct usb_gadget *);
+ int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered);
+@@ -857,7 +875,8 @@
+ /* utility wrapping a simple endpoint selection policy */
+
+ extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *,
+- struct usb_endpoint_descriptor *) __devinit;
++ struct usb_endpoint_descriptor *,
++ int, int, int) __devinit;
+
+ extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit;
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxa27x_overlay-r8.patch b/packages/linux/linux-ezx-2.6.24/patches/pxa27x_overlay-r8.patch
new file mode 100644
index 0000000000..17749a98ba
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxa27x_overlay-r8.patch
@@ -0,0 +1,2439 @@
+ drivers/video/Kconfig | 18
+ drivers/video/Makefile | 1
+ drivers/video/pxafb.c | 305 +++++--
+ drivers/video/pxafb.h | 65 +
+ drivers/video/pxafb_overlay.c | 1525 ++++++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-pxa/pxa-regs.h | 111 ++
+ 6 files changed, 1969 insertions(+), 56 deletions(-)
+
+Index: linux-2.6.24/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/video/Kconfig
++++ linux-2.6.24/drivers/video/Kconfig
+@@ -1729,6 +1729,24 @@
+
+ If unsure, say N.
+
++choice
++ prompt "PXA LCD type"
++ depends on FB_PXA
++
++config FB_PXA_LCD_QVGA
++ bool "QVGA(320x240)"
++
++config FB_PXA_LCD_VGA
++ bool "VGA (640x480)"
++
++endchoice
++
++config FB_PXA_OVERLAY
++ tristate "PXA LCD overlay support"
++ depends on FB_PXA
++ ---help---
++ Frame buffer overlay driver for PXA27x
++
+ config FB_PXA_PARAMETERS
+ bool "PXA LCD command line parameters"
+ default n
+Index: linux-2.6.24/drivers/video/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/video/Makefile
++++ linux-2.6.24/drivers/video/Makefile
+@@ -96,6 +96,7 @@
+ obj-$(CONFIG_FB_CIRRUS) += cirrusfb.o
+ obj-$(CONFIG_FB_ASILIANT) += asiliantfb.o
+ obj-$(CONFIG_FB_PXA) += pxafb.o
++obj-$(CONFIG_FB_PXA_OVERLAY) += pxafb_overlay.o
+ obj-$(CONFIG_FB_W100) += w100fb.o
+ obj-$(CONFIG_FB_AU1100) += au1100fb.o
+ obj-$(CONFIG_FB_AU1200) += au1200fb.o
+Index: linux-2.6.24/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.24.orig/drivers/video/pxafb.c
++++ linux-2.6.24/drivers/video/pxafb.c
+@@ -59,17 +59,49 @@
+ #define LCCR0_INVALID_CONFIG_MASK (LCCR0_OUM|LCCR0_BM|LCCR0_QDM|LCCR0_DIS|LCCR0_EFM|LCCR0_IUM|LCCR0_SFM|LCCR0_LDM|LCCR0_ENB)
+ #define LCCR3_INVALID_CONFIG_MASK (LCCR3_HSP|LCCR3_VSP|LCCR3_PCD|LCCR3_BPP)
+
++wait_queue_head_t fcs_wait_eof;
++int fcs_in_eof;
++static DECLARE_MUTEX(fcs_lcd_sem);
++
+ static void (*pxafb_backlight_power)(int);
+ static void (*pxafb_lcd_power)(int, struct fb_var_screeninfo *);
+
+ static int pxafb_activate_var(struct fb_var_screeninfo *var, struct pxafb_info *);
+-static void set_ctrlr_state(struct pxafb_info *fbi, u_int state);
++void pxafb_set_ctrlr_state(struct pxafb_info *fbi, u_int state);
+
+ #ifdef CONFIG_FB_PXA_PARAMETERS
+ #define PXAFB_OPTIONS_SIZE 256
+ static char g_options[PXAFB_OPTIONS_SIZE] __devinitdata = "";
+ #endif
+
++static struct pxafb_rgb def_rgb_8 = {
++ red: { offset: 0, length: 8, },
++ green: { offset: 0, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgb_16 = {
++ red: { offset: 11, length: 5, },
++ green: { offset: 5, length: 6, },
++ blue: { offset: 0, length: 5, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgb_18 = {
++ red: { offset: 12, length: 6, },
++ green: { offset: 6, length: 6, },
++ blue: { offset: 0, length: 6, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgb_24 = {
++ red: { offset: 16, length: 8, },
++ green: { offset: 8, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 0, length: 0, },
++};
++
+ static inline void pxafb_schedule_work(struct pxafb_info *fbi, u_int state)
+ {
+ unsigned long flags;
+@@ -209,6 +241,10 @@
+ case 4: ret = LCCR3_4BPP; break;
+ case 8: ret = LCCR3_8BPP; break;
+ case 16: ret = LCCR3_16BPP; break;
++ case 18: ret = LCCR3_18BPP; break;
++ case 19: ret = LCCR3_19BPP; break;
++ case 24: ret = LCCR3_24BPP; break;
++ case 25: ret = LCCR3_25BPP; break;
+ }
+ return ret;
+ }
+@@ -320,18 +356,34 @@
+ * The pixel packing format is described on page 7-11 of the
+ * PXA2XX Developer's Manual.
+ */
+- if (var->bits_per_pixel == 16) {
+- var->red.offset = 11; var->red.length = 5;
+- var->green.offset = 5; var->green.length = 6;
+- var->blue.offset = 0; var->blue.length = 5;
+- var->transp.offset = var->transp.length = 0;
+- } else {
+- var->red.offset = var->green.offset = var->blue.offset = var->transp.offset = 0;
+- var->red.length = 8;
+- var->green.length = 8;
+- var->blue.length = 8;
+- var->transp.length = 0;
+- }
++ switch (var->bits_per_pixel) {
++ case 16:
++ /* 2 pixels per line */
++ var->red = def_rgb_16.red;
++ var->green = def_rgb_16.green;
++ var->blue = def_rgb_16.blue;
++ var->transp = def_rgb_16.transp;
++ break;
++ case 18:
++ case 19:
++ var->red = def_rgb_18.red;
++ var->green = def_rgb_18.green;
++ var->blue = def_rgb_18.blue;
++ var->transp = def_rgb_18.transp;
++ break;
++ case 24:
++ case 25:
++ var->red = def_rgb_24.red;
++ var->green = def_rgb_24.green;
++ var->blue = def_rgb_24.blue;
++ var->transp = def_rgb_24.transp;
++ break;
++ default:
++ var->red = def_rgb_8.red;
++ var->green = def_rgb_8.green;
++ var->blue = def_rgb_8.blue;
++ var->transp = def_rgb_8.transp;
++ }
+
+ #ifdef CONFIG_CPU_FREQ
+ pr_debug("pxafb: dma period = %d ps, clock = %d kHz\n",
+@@ -345,7 +397,7 @@
+ static inline void pxafb_set_truecolor(u_int is_true_color)
+ {
+ pr_debug("pxafb: true_color = %d\n", is_true_color);
+- // do your machine-specific setup if needed
++ /* do your machine-specific setup if needed */
+ }
+
+ /*
+@@ -360,7 +412,8 @@
+
+ pr_debug("pxafb: set_par\n");
+
+- if (var->bits_per_pixel == 16)
++ if (var->bits_per_pixel == 16 || var->bits_per_pixel == 18 ||var->bits_per_pixel == 19
++ || var->bits_per_pixel == 24 || var->bits_per_pixel == 25)
+ fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR;
+ else if (!fbi->cmap_static)
+ fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;
+@@ -373,12 +426,25 @@
+ fbi->fb.fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR;
+ }
+
+- fbi->fb.fix.line_length = var->xres_virtual *
+- var->bits_per_pixel / 8;
+- if (var->bits_per_pixel == 16)
+- fbi->palette_size = 0;
+- else
+- fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
++ switch (var->bits_per_pixel) {
++ case 16:
++ fbi->fb.fix.line_length = var->xres_virtual * 2;
++ fbi->palette_size = 0;
++ break;
++ case 18:
++ case 19:
++ fbi->fb.fix.line_length = var->xres_virtual * 3;
++ fbi->palette_size = 0;
++ break;
++ case 24:
++ case 25:
++ fbi->fb.fix.line_length = var->xres_virtual * 4;
++ fbi->palette_size = 0;
++ break;
++ default:
++ fbi->fb.fix.line_length = var->xres_virtual * var->bits_per_pixel / 8;
++ fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
++ }
+
+ if ((fbi->lccr4 & LCCR4_PAL_FOR_MASK) == LCCR4_PAL_FOR_0)
+ palette_mem_size = fbi->palette_size * sizeof(u16);
+@@ -395,7 +461,8 @@
+ */
+ pxafb_set_truecolor(fbi->fb.fix.visual == FB_VISUAL_TRUECOLOR);
+
+- if (fbi->fb.var.bits_per_pixel == 16)
++ if (fbi->fb.var.bits_per_pixel == 16 || fbi->fb.var.bits_per_pixel == 18 ||fbi->fb.var.bits_per_pixel == 19
++ || fbi->fb.var.bits_per_pixel == 24 || fbi->fb.var.bits_per_pixel == 25)
+ fb_dealloc_cmap(&fbi->fb.cmap);
+ else
+ fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0);
+@@ -441,7 +508,7 @@
+ * 16 bpp mode does not really use the palette, so this will not
+ * blank the display in all modes.
+ */
+-static int pxafb_blank(int blank, struct fb_info *info)
++int pxafb_blank(int blank, struct fb_info *info)
+ {
+ struct pxafb_info *fbi = (struct pxafb_info *)info;
+ int i;
+@@ -458,19 +525,20 @@
+ for (i = 0; i < fbi->palette_size; i++)
+ pxafb_setpalettereg(i, 0, 0, 0, 0, info);
+
+- pxafb_schedule_work(fbi, C_DISABLE);
+- //TODO if (pxafb_blank_helper) pxafb_blank_helper(blank);
++ pxafb_schedule_work(fbi, C_BLANK);
++ /* TODO if (pxafb_blank_helper) pxafb_blank_helper(blank); */
+ break;
+
+ case FB_BLANK_UNBLANK:
+- //TODO if (pxafb_blank_helper) pxafb_blank_helper(blank);
++ /* TODO if (pxafb_blank_helper) pxafb_blank_helper(blank); */
+ if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR ||
+ fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR)
+ fb_set_cmap(&fbi->fb.cmap, info);
+- pxafb_schedule_work(fbi, C_ENABLE);
++ pxafb_schedule_work(fbi, C_UNBLANK);
+ }
+ return 0;
+ }
++EXPORT_SYMBOL(pxafb_blank);
+
+ static int pxafb_mmap(struct fb_info *info,
+ struct vm_area_struct *vma)
+@@ -606,6 +674,10 @@
+ case 4:
+ case 8:
+ case 16:
++ case 18:
++ case 19:
++ case 24:
++ case 25:
+ break;
+ default:
+ printk(KERN_ERR "%s: invalid bit depth %d\n",
+@@ -637,7 +709,10 @@
+
+ new_regs.lccr0 = fbi->lccr0 |
+ (LCCR0_LDM | LCCR0_SFM | LCCR0_IUM | LCCR0_EFM |
+- LCCR0_QDM | LCCR0_BM | LCCR0_OUM);
++#ifdef CONFIG_PXA27x /* Enable overlay for PXA27x */
++ LCCR0_OUC | LCCR0_CMDIM | LCCR0_RDSTM |
++#endif
++ LCCR0_QDM | LCCR0_BM | LCCR0_OUM);
+
+ new_regs.lccr1 =
+ LCCR1_DisWdth(var->xres) +
+@@ -696,7 +771,7 @@
+
+ fbi->dmadesc_fbhigh_cpu->fsadr = fbi->screen_dma;
+ fbi->dmadesc_fbhigh_cpu->fidr = 0;
+- fbi->dmadesc_fbhigh_cpu->ldcmd = BYTES_PER_PANEL;
++ fbi->dmadesc_fbhigh_cpu->ldcmd = BYTES_PER_PANEL | LDCMD_EOFINT;
+
+ fbi->dmadesc_palette_cpu->fsadr = fbi->palette_dma;
+ fbi->dmadesc_palette_cpu->fidr = 0;
+@@ -708,7 +783,8 @@
+ sizeof(u32);
+ fbi->dmadesc_palette_cpu->ldcmd |= LDCMD_PAL;
+
+- if (var->bits_per_pixel == 16) {
++ if (var->bits_per_pixel == 16 || var->bits_per_pixel == 18 ||var->bits_per_pixel == 19
++ || var->bits_per_pixel == 24 || var->bits_per_pixel == 25) {
+ /* palette shouldn't be loaded in true-color mode */
+ fbi->dmadesc_fbhigh_cpu->fdadr = fbi->dmadesc_fbhigh_dma;
+ fbi->fdadr0 = fbi->dmadesc_fbhigh_dma; /* no pal just fbhigh */
+@@ -763,8 +839,8 @@
+ }
+
+ /*
+- * NOTE! The following functions are purely helpers for set_ctrlr_state.
+- * Do not call them directly; set_ctrlr_state does the correct serialisation
++ * NOTE! The following functions are purely helpers for pxafb_set_ctrlr_state.
++ * Do not call them directly; pxafb_set_ctrlr_state does the correct serialisation
+ * to ensure that things happen in the right way 100% of time time.
+ * -- rmk
+ */
+@@ -786,7 +862,8 @@
+
+ static void pxafb_setup_gpio(struct pxafb_info *fbi)
+ {
+- int gpio, ldd_bits;
++ int gpio;
++ int ldd_bits = 0;
+ unsigned int lccr0 = fbi->lccr0;
+
+ /*
+@@ -796,28 +873,56 @@
+ /* 4 bit interface */
+ if ((lccr0 & LCCR0_CMS) == LCCR0_Mono &&
+ (lccr0 & LCCR0_SDS) == LCCR0_Sngl &&
+- (lccr0 & LCCR0_DPD) == LCCR0_4PixMono)
++ (lccr0 & LCCR0_DPD) == LCCR0_4PixMono) {
+ ldd_bits = 4;
+-
++ }
+ /* 8 bit interface */
+ else if (((lccr0 & LCCR0_CMS) == LCCR0_Mono &&
+ ((lccr0 & LCCR0_SDS) == LCCR0_Dual || (lccr0 & LCCR0_DPD) == LCCR0_8PixMono)) ||
+ ((lccr0 & LCCR0_CMS) == LCCR0_Color &&
+- (lccr0 & LCCR0_PAS) == LCCR0_Pas && (lccr0 & LCCR0_SDS) == LCCR0_Sngl))
++ (lccr0 & LCCR0_PAS) == LCCR0_Pas && (lccr0 & LCCR0_SDS) == LCCR0_Sngl)) {
+ ldd_bits = 8;
+-
++ }
+ /* 16 bit interface */
+- else if ((lccr0 & LCCR0_CMS) == LCCR0_Color &&
+- ((lccr0 & LCCR0_SDS) == LCCR0_Dual || (lccr0 & LCCR0_PAS) == LCCR0_Act))
+- ldd_bits = 16;
++ else if ((lccr0 & LCCR0_CMS) == LCCR0_Color &&
++ ((lccr0 & LCCR0_SDS) == LCCR0_Dual || (lccr0 & LCCR0_PAS) == LCCR0_Act)) {
++ switch (fbi->fb.var.bits_per_pixel) {
++ case 16:
++#ifdef CONFIG_PXA27x
++ /* bits 58-77 */
++ GPDR1 |= (0x3f << 26);
++ GPDR2 |= 0x00003fff;
+
++ GAFR1_U = (GAFR1_U & ~(0xfff << 20)) | (0xaaa << 20);
++ GAFR2_L = (GAFR2_L & 0xf0000000) | 0x0aaaaaaa;
++#endif
++ ldd_bits = 16;
++ break;
++ case 18:
++ case 19:
++ case 24:
++ case 25:
++#ifdef CONFIG_PXA27x
++ /* bits 58-77 and 86, 87 */
++ GPDR1 |= (0x3f << 26);
++ GPDR2 |= 0x00c03fff;
++
++ GAFR1_U = (GAFR1_U & ~(0xfff << 20)) | (0xaaa << 20);
++ GAFR2_L = (GAFR2_L & 0xf0000000) | 0x0aaaaaaa;
++ GAFR2_U = (GAFR2_U & 0xffff0fff) | 0xa000;
++#endif
++ ldd_bits = 25;
++ break;
++ }
++ }
+ else {
+ printk(KERN_ERR "pxafb_setup_gpio: unable to determine bits per pixel\n");
+ return;
+ }
+
+- for (gpio = 58; ldd_bits; gpio++, ldd_bits--)
++ for (gpio = 58; ldd_bits > 0; gpio++, ldd_bits--) {
+ pxa_gpio_mode(gpio | GPIO_ALT_FN_2_OUT);
++ }
+ pxa_gpio_mode(GPIO74_LCD_FCLK_MD);
+ pxa_gpio_mode(GPIO75_LCD_LCLK_MD);
+ pxa_gpio_mode(GPIO76_LCD_PCLK_MD);
+@@ -837,6 +942,7 @@
+ /* enable LCD controller clock */
+ clk_enable(fbi->clk);
+
++ down(&fcs_lcd_sem);
+ /* Sequence from 11.7.10 */
+ LCCR3 = fbi->reg_lccr3;
+ LCCR2 = fbi->reg_lccr2;
+@@ -847,6 +953,8 @@
+ FDADR1 = fbi->fdadr1;
+ LCCR0 |= LCCR0_ENB;
+
++ up(&fcs_lcd_sem);
++
+ pr_debug("FDADR0 0x%08x\n", (unsigned int) FDADR0);
+ pr_debug("FDADR1 0x%08x\n", (unsigned int) FDADR1);
+ pr_debug("LCCR0 0x%08x\n", (unsigned int) LCCR0);
+@@ -862,6 +970,7 @@
+
+ pr_debug("pxafb: disabling LCD controller\n");
+
++ down(&fcs_lcd_sem);
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ add_wait_queue(&fbi->ctrlr_wait, &wait);
+
+@@ -871,6 +980,7 @@
+
+ schedule_timeout(200 * HZ / 1000);
+ remove_wait_queue(&fbi->ctrlr_wait, &wait);
++ up(&fcs_lcd_sem);
+
+ /* disable LCD controller clock */
+ clk_disable(fbi->clk);
+@@ -888,6 +998,11 @@
+ LCCR0 |= LCCR0_LDM;
+ wake_up(&fbi->ctrlr_wait);
+ }
++ if (lcsr & LCSR_EOF && fcs_in_eof) {
++ LCCR0 |= LCCR0_EFM;
++ fcs_in_eof = 0;
++ wake_up(&fcs_wait_eof);
++ }
+
+ LCSR = lcsr;
+ return IRQ_HANDLED;
+@@ -898,7 +1013,7 @@
+ * sleep when disabling the LCD controller, or if we get two contending
+ * processes trying to alter state.
+ */
+-static void set_ctrlr_state(struct pxafb_info *fbi, u_int state)
++void pxafb_set_ctrlr_state(struct pxafb_info *fbi, u_int state)
+ {
+ u_int old_state;
+
+@@ -920,7 +1035,9 @@
+ */
+ if (old_state != C_DISABLE && old_state != C_DISABLE_PM) {
+ fbi->state = state;
+- //TODO __pxafb_lcd_power(fbi, 0);
++ /* TODO __pxafb_lcd_power(fbi, 0); */
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_DISABLE);
+ pxafb_disable_controller(fbi);
+ }
+ break;
+@@ -934,6 +1051,8 @@
+ fbi->state = state;
+ __pxafb_backlight_power(fbi, 0);
+ __pxafb_lcd_power(fbi, 0);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_DISABLE);
+ if (old_state != C_DISABLE_CLKCHANGE)
+ pxafb_disable_controller(fbi);
+ }
+@@ -947,7 +1066,9 @@
+ if (old_state == C_DISABLE_CLKCHANGE) {
+ fbi->state = C_ENABLE;
+ pxafb_enable_controller(fbi);
+- //TODO __pxafb_lcd_power(fbi, 1);
++ /* TODO __pxafb_lcd_power(fbi, 1); */
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_ENABLE);
+ }
+ break;
+
+@@ -959,9 +1080,13 @@
+ */
+ if (old_state == C_ENABLE) {
+ __pxafb_lcd_power(fbi, 0);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_DISABLE);
+ pxafb_disable_controller(fbi);
+ pxafb_setup_gpio(fbi);
+ pxafb_enable_controller(fbi);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_ENABLE);
+ __pxafb_lcd_power(fbi, 1);
+ }
+ break;
+@@ -987,11 +1112,46 @@
+ pxafb_enable_controller(fbi);
+ __pxafb_lcd_power(fbi, 1);
+ __pxafb_backlight_power(fbi, 1);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_ENABLE);
+ }
+ break;
++
++ case C_BLANK:
++ /*
++ * Disable controller, blank overlays if exist.
++ */
++ if ((old_state != C_DISABLE) && (old_state != C_BLANK)) {
++ fbi->state = state;
++ __pxafb_backlight_power(fbi, 0);
++ __pxafb_lcd_power(fbi, 0);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_BLANK);
++ if (old_state != C_DISABLE_CLKCHANGE)
++ pxafb_disable_controller(fbi);
++ }
++ break;
++
++ case C_UNBLANK:
++ /*
++ * Power up the LCD screen, enable controller, and
++ * turn on the backlight, unblank overlays if exist.
++ */
++ if ((old_state != C_ENABLE) && (old_state != C_UNBLANK)) {
++ fbi->state = C_UNBLANK;
++ pxafb_setup_gpio(fbi);
++ pxafb_enable_controller(fbi);
++ __pxafb_lcd_power(fbi, 1);
++ __pxafb_backlight_power(fbi, 1);
++ if(fbi->set_overlay_ctrlr_state)
++ fbi->set_overlay_ctrlr_state(fbi, C_UNBLANK);
++ }
++ break;
++
+ }
+ up(&fbi->ctrlr_sem);
+ }
++EXPORT_SYMBOL(pxafb_set_ctrlr_state);
+
+ /*
+ * Our LCD controller task (which is called when we blank or unblank)
+@@ -1003,7 +1163,7 @@
+ container_of(work, struct pxafb_info, task);
+ u_int state = xchg(&fbi->task_state, -1);
+
+- set_ctrlr_state(fbi, state);
++ pxafb_set_ctrlr_state(fbi, state);
+ }
+
+ #ifdef CONFIG_CPU_FREQ
+@@ -1018,19 +1178,29 @@
+ pxafb_freq_transition(struct notifier_block *nb, unsigned long val, void *data)
+ {
+ struct pxafb_info *fbi = TO_INF(nb, freq_transition);
+- //TODO struct cpufreq_freqs *f = data;
++ /* TODO struct cpufreq_freqs *f = data; */
++ struct cpufreq_freqs *clkinfo;
+ u_int pcd;
++ u_int lccr3;
+
+ switch (val) {
+ case CPUFREQ_PRECHANGE:
+- set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE);
++ pxafb_set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE);
+ break;
+
+ case CPUFREQ_POSTCHANGE:
+- pcd = get_pcd(fbi, fbi->fb.var.pixclock);
++ clkinfo = (struct cpufreq_freqs *)data;
++ /* If leaving a 13kHz state with the LCD sustained */
++ if ((clkinfo->old == 13000))
++ break;
++
++ pcd = get_pcd(fbi->fb.var.pixclock);
++ lccr3 = fbi->reg_lccr3;
+ set_hsync_time(fbi, pcd);
+ fbi->reg_lccr3 = (fbi->reg_lccr3 & ~0xff) | LCCR3_PixClkDiv(pcd);
+- set_ctrlr_state(fbi, C_ENABLE_CLKCHANGE);
++ pxafb_set_ctrlr_state(fbi, C_ENABLE_CLKCHANGE);
++ if (lccr3 != fbi->reg_lccr3 && !((LCCR0 & LCCR0_DIS) || !(LCCR0 & LCCR0_ENB)))
++ LCCR3 = fbi->reg_lccr3;
+ break;
+ }
+ return 0;
+@@ -1049,7 +1219,7 @@
+ printk(KERN_DEBUG "min dma period: %d ps, "
+ "new clock %d kHz\n", pxafb_display_dma_period(var),
+ policy->max);
+- // TODO: fill in min/max values
++ /* TODO: fill in min/max values */
+ break;
+ #if 0
+ case CPUFREQ_NOTIFY:
+@@ -1075,7 +1245,7 @@
+ {
+ struct pxafb_info *fbi = platform_get_drvdata(dev);
+
+- set_ctrlr_state(fbi, C_DISABLE_PM);
++ pxafb_set_ctrlr_state(fbi, C_DISABLE_PM);
+ return 0;
+ }
+
+@@ -1083,7 +1253,11 @@
+ {
+ struct pxafb_info *fbi = platform_get_drvdata(dev);
+
+- set_ctrlr_state(fbi, C_ENABLE_PM);
++ pxafb_set_ctrlr_state(fbi, C_ENABLE_PM);
++//RP#ifdef CONFIG_PXA27x
++//RP LCCR4 |= (1 << 31); /* Disable the PCD Divisor, PCDDIV */
++//RP LCCR4 |= (5 << 17); /* Undocumented feature */
++//RP#endif
+ return 0;
+ }
+ #else
+@@ -1197,11 +1371,21 @@
+ fbi->task_state = (u_char)-1;
+
+ for (i = 0; i < inf->num_modes; i++) {
+- smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8;
++ if (mode[i].bpp <= 16) { /* 8, 16 bpp */
++ smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8;
++ } else if ( mode[i].bpp > 19 ) { /* 24, 25 bpp */
++ smemlen = mode[i].xres * mode[i].yres * 4;
++ } else { /* 18, 19 bpp */
++ /* packed format */
++ smemlen = mode[i].xres * mode[i].yres * 3;
++ }
++
+ if (smemlen > fbi->fb.fix.smem_len)
+ fbi->fb.fix.smem_len = smemlen;
+ }
+
++ fbi->set_overlay_ctrlr_state = NULL;
++
+ init_waitqueue_head(&fbi->ctrlr_wait);
+ INIT_WORK(&fbi->task, pxafb_task);
+ init_MUTEX(&fbi->ctrlr_sem);
+@@ -1268,6 +1452,10 @@
+ case 4:
+ case 8:
+ case 16:
++ case 18:
++ case 19:
++ case 24:
++ case 25:
+ inf->modes[0].bpp = bpp;
+ dev_info(dev, "overriding bit depth: %d\n", bpp);
+ break;
+@@ -1416,7 +1604,7 @@
+ fbi = pxafb_init_fbinfo(&dev->dev);
+ if (!fbi) {
+ dev_err(&dev->dev, "Failed to initialize framebuffer device\n");
+- ret = -ENOMEM; // only reason for pxafb_init_fbinfo to fail is kmalloc
++ ret = -ENOMEM; /* only reason for pxafb_init_fbinfo to fail is kmalloc */
+ goto failed;
+ }
+
+@@ -1451,7 +1639,7 @@
+ }
+
+ #ifdef CONFIG_PM
+- // TODO
++ /* TODO */
+ #endif
+
+ #ifdef CONFIG_CPU_FREQ
+@@ -1464,7 +1652,12 @@
+ /*
+ * Ok, now enable the LCD controller
+ */
+- set_ctrlr_state(fbi, C_ENABLE);
++ pxafb_set_ctrlr_state(fbi, C_ENABLE);
++//#ifdef CONFIG_PXA27x
++// LCCR4 |= (1 << 31); /* Disabel the PCD Divisor, PCDDIV */
++// LCCR4 |= (5 << 17); /* Undocumented feature */
++//#endif
++ init_waitqueue_head(&fcs_wait_eof);
+
+ return 0;
+
+Index: linux-2.6.24/drivers/video/pxafb.h
+===================================================================
+--- linux-2.6.24.orig/drivers/video/pxafb.h
++++ linux-2.6.24/drivers/video/pxafb.h
+@@ -29,6 +29,60 @@
+ unsigned int lccr3;
+ };
+
++struct pxafb_rgb {
++ struct fb_bitfield red;
++ struct fb_bitfield green;
++ struct fb_bitfield blue;
++ struct fb_bitfield transp;
++};
++
++#ifdef CONFIG_PXA27x
++/* PXA Overlay Framebuffer Support */
++struct overlayfb_info
++{
++ struct fb_info fb;
++
++ struct fb_var_screeninfo old_var;
++
++ struct semaphore mutex;
++ unsigned long refcount;
++
++ struct pxafb_info *basefb;
++
++ unsigned long map_cpu;
++ unsigned long screen_cpu;
++ unsigned long palette_cpu;
++ unsigned long map_size;
++ unsigned long palette_size;
++
++ dma_addr_t screen_dma;
++ dma_addr_t map_dma;
++ dma_addr_t palette_dma;
++
++ volatile u_char state;
++
++ /* overlay specific info */
++ unsigned long xpos; /* screen position (x, y)*/
++ unsigned long ypos;
++ unsigned long format;
++
++ /* additional */
++ union {
++ struct pxafb_dma_descriptor *dma0;
++ struct pxafb_dma_descriptor *dma1;
++ struct {
++ struct pxafb_dma_descriptor *dma2;
++ struct pxafb_dma_descriptor *dma3;
++ struct pxafb_dma_descriptor *dma4;
++ };
++ struct {
++ struct pxafb_dma_descriptor *dma5_pal;
++ struct pxafb_dma_descriptor *dma5_frame;
++ };
++ };
++};
++#endif
++
+ /* PXA LCD DMA descriptor */
+ struct pxafb_dma_descriptor {
+ unsigned int fdadr;
+@@ -90,6 +144,14 @@
+ wait_queue_head_t ctrlr_wait;
+ struct work_struct task;
+
++#ifdef CONFIG_PXA27x
++ /* PXA Overlay Framebuffer Support */
++ struct overlayfb_info *overlay1fb;
++ struct overlayfb_info *overlay2fb;
++ struct overlayfb_info *cursorfb;
++#endif
++ void (*set_overlay_ctrlr_state)(struct pxafb_info *, u_int);
++
+ #ifdef CONFIG_CPU_FREQ
+ struct notifier_block freq_transition;
+ struct notifier_block freq_policy;
+@@ -109,6 +171,9 @@
+ #define C_DISABLE_PM (5)
+ #define C_ENABLE_PM (6)
+ #define C_STARTUP (7)
++#define C_BLANK (8)
++#define C_UNBLANK (9)
++
+
+ #define PXA_NAME "PXA"
+
+Index: linux-2.6.24/drivers/video/pxafb_overlay.c
+===================================================================
+--- /dev/null
++++ linux-2.6.24/drivers/video/pxafb_overlay.c
+@@ -0,0 +1,1525 @@
++/*
++ * linux/drivers/video/pxafb_overlay.c
++ *
++ * Copyright (c) 2004, Intel Corporation
++ *
++ * Code Status:
++ * 2004/10/28: <yan.yin@intel.com>
++ * - Ported to 2.6 kernel
++ * - Made overlay driver a loadable module
++ * - Merged overlay optimized patch
++ * 2004/03/10: <stanley.cai@intel.com>
++ * - Fixed Bugs
++ * - Added workaround for overlay1&2
++ * 2003/08/27: <yu.tang@intel.com>
++ * - Added Overlay 1 & Overlay2 & Hardware Cursor support
++ *
++ *
++ * This software program is licensed subject to the GNU Lesser General
++ * Public License (LGPL). Version 2.1, February 1999, available at
++ * http://www.gnu.org/copyleft/lesser.html
++ *
++ * Intel PXA27x LCD Controller Frame Buffer Overlay Driver
++ *
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/kernel.h>
++#include <linux/sched.h>
++#include <linux/errno.h>
++#include <linux/string.h>
++#include <linux/interrupt.h>
++#include <linux/slab.h>
++#include <linux/fb.h>
++#include <linux/delay.h>
++#include <linux/init.h>
++#include <linux/ioport.h>
++#include <linux/cpufreq.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++#include <linux/dma-mapping.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/uaccess.h>
++#include <asm/arch/bitfield.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "pxafb.h"
++
++/* LCD enhancement : Overlay 1 & 2 & Hardware Cursor */
++
++/*
++ * LCD enhancement : Overlay 1
++ *
++ * Features:
++ * - support 16bpp (No palette)
++ */
++/*
++ * debugging?
++ */
++#define DEBUG 0
++
++#ifdef DEBUG
++#define dbg(fmt,arg...) printk(KERN_ALERT "%s(): " fmt "\n", __FUNCTION__, ##arg)
++#else
++#define dbg(fmt,arg...)
++#endif
++
++static int overlay1fb_enable(struct fb_info *info);
++static int overlay2fb_enable(struct fb_info *info);
++static int cursorfb_enable(struct fb_info *info);
++
++static int overlay1fb_disable(struct fb_info *info);
++static int overlay2fb_disable(struct fb_info *info);
++static int cursorfb_disable(struct fb_info *info);
++
++static int overlay1fb_blank(int blank, struct fb_info *info);
++static int overlay2fb_blank(int blank, struct fb_info *info);
++static int cursorfb_blank(int blank, struct fb_info *info);
++
++extern void pxafb_set_ctrlr_state(struct pxafb_info *fbi, u_int state);
++extern int pxafb_blank(int blank, struct fb_info *info);
++
++static struct pxafb_rgb def_rgb_18 = {
++ red: { offset: 12, length: 6, },
++ green: { offset: 6, length: 6, },
++ blue: { offset: 0, length: 6, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgbt_16 = {
++ red: { offset: 10, length: 5, },
++ green: { offset: 5, length: 5, },
++ blue: { offset: 0, length: 5, },
++ transp: { offset: 15, length: 1, },
++};
++
++static struct pxafb_rgb def_rgbt_19 = {
++ red: { offset: 12, length: 6, },
++ green: { offset: 6, length: 6, },
++ blue: { offset: 0, length: 6, },
++ transp: { offset: 18, length: 1, },
++};
++
++static struct pxafb_rgb def_rgbt_24 = {
++ red: { offset: 16, length: 7, },
++ green: { offset: 8, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 0, length: 0, },
++};
++
++static struct pxafb_rgb def_rgbt_25 = {
++ red: { offset: 16, length: 8, },
++ green: { offset: 8, length: 8, },
++ blue: { offset: 0, length: 8, },
++ transp: { offset: 24, length: 1, },
++};
++
++#define CLEAR_LCD_INTR(reg, intr) do { \
++ reg = (intr); \
++}while(0)
++
++#define WAIT_FOR_LCD_INTR(reg,intr,timeout) ({ \
++ int __done =0; \
++ int __t = timeout; \
++ while (__t) { \
++ __done = (reg) & (intr); \
++ if (__done) break; \
++ mdelay(10); \
++ __t--; \
++ } \
++ if (!__t) dbg("wait " #intr " timeount");\
++ __done; \
++})
++
++#define DISABLE_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_ENABLE)) { \
++ overlay1fb_disable((struct fb_info*)fbi->overlay1fb); \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_ENABLE)) { \
++ overlay2fb_disable((struct fb_info*)fbi->overlay2fb); \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_ENABLE)) { \
++ cursorfb_disable((struct fb_info*)fbi->cursorfb); \
++ } \
++}while(0)
++
++#define ENABLE_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_DISABLE)) { \
++ overlay1fb_enable((struct fb_info*)fbi->overlay1fb); \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_DISABLE)) { \
++ overlay2fb_enable((struct fb_info*)fbi->overlay2fb); \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_DISABLE)) { \
++ cursorfb_enable((struct fb_info*)fbi->cursorfb); \
++ } \
++}while(0)
++
++#define BLANK_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_ENABLE)) { \
++ overlay1fb_disable((struct fb_info*)fbi->overlay1fb); \
++ fbi->overlay1fb->state = C_BLANK; \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_ENABLE)) { \
++ overlay2fb_disable((struct fb_info*)fbi->overlay2fb); \
++ fbi->overlay2fb->state = C_BLANK; \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_ENABLE)) { \
++ cursorfb_disable((struct fb_info*)fbi->cursorfb); \
++ fbi->cursorfb->state = C_BLANK; \
++ } \
++}while(0)
++
++#define UNBLANK_OVERLAYS(fbi) do { \
++ if (fbi->overlay1fb && (fbi->overlay1fb->state == C_BLANK)) { \
++ overlay1fb_enable((struct fb_info*)fbi->overlay1fb); \
++ fbi->overlay1fb->state = C_ENABLE; \
++ } \
++ if (fbi->overlay2fb && (fbi->overlay2fb->state == C_BLANK)) { \
++ overlay2fb_enable((struct fb_info*)fbi->overlay2fb); \
++ fbi->overlay2fb->state = C_ENABLE; \
++ } \
++ if (fbi->cursorfb && (fbi->cursorfb->state == C_BLANK)) { \
++ cursorfb_enable((struct fb_info*)fbi->cursorfb); \
++ fbi->cursorfb->state = C_ENABLE; \
++ } \
++}while(0)
++
++static int overlay1fb_open(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int ret = 0;
++
++/* If basefb is disable, enable fb. */
++ if (fbi->basefb && fbi->basefb->state != C_ENABLE)
++ pxafb_blank(VESA_NO_BLANKING, (struct fb_info *)(fbi->basefb));
++
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ ret = -EACCES;
++ else
++ fbi->refcount ++;
++
++ up(&fbi->mutex);
++
++ /* Initialize the variables in overlay1 framebuffer. */
++ fbi->fb.var.xres = fbi->fb.var.yres = 0;
++ fbi->fb.var.bits_per_pixel = 0;
++
++ return ret;
++}
++
++static int overlay1fb_release(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ fbi->refcount --;
++
++ up(&fbi->mutex);
++ /* disable overlay when released */
++ overlay1fb_blank(1, info);
++
++ return 0;
++}
++
++static int overlay1fb_map_video_memory(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++
++ if (fbi->map_cpu)
++ dma_free_writecombine(NULL, fbi->map_size, (void*)fbi->map_cpu, fbi->map_dma);
++ fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
++
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++
++ if (!fbi->map_cpu) return -ENOMEM;
++
++ fbi->screen_cpu = fbi->map_cpu + PAGE_SIZE;
++ fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
++
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++
++ /* setup dma descriptor */
++ fbi->dma1 = (struct pxafb_dma_descriptor*)
++ (fbi->screen_cpu - sizeof(struct pxafb_dma_descriptor));
++
++ fbi->dma1->fdadr = (fbi->screen_dma - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma1->fsadr = fbi->screen_dma;
++ fbi->dma1->fidr = 0;
++ fbi->dma1->ldcmd = fbi->fb.fix.smem_len;
++
++ return 0;
++}
++
++static int overlay1fb_enable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ unsigned long bpp1;
++
++ if (!fbi->map_cpu) return -EINVAL;
++
++ switch (fbi->fb.var.bits_per_pixel) {
++ case 16:
++ bpp1 = 0x4;
++ break;
++ case 18:
++ bpp1 = 0x6;
++ break;
++ case 19:
++ bpp1 = 0x8;
++ break;
++ case 24:
++ bpp1 = 0x9;
++ break;
++ case 25:
++ bpp1 = 0xa;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ /* disable branch/start/end of frame interrupt */
++ LCCR5 |= (LCCR5_IUM1 | LCCR5_BSM1 | LCCR5_EOFM1 | LCCR5_SOFM1);
++
++ if (fbi->state == C_DISABLE || fbi->state == C_BLANK)
++ FDADR1 = (fbi->dma1->fdadr);
++ else
++ FBR1 = fbi->dma1->fdadr | 0x1;
++
++ /* enable overlay 1 window */
++ OVL1C2 = (fbi->ypos << 10) | fbi->xpos;
++ OVL1C1 = OVL1C1_O1EN | (bpp1 << 20) | ((fbi->fb.var.yres-1)<<10) | (fbi->fb.var.xres-1);
++
++ fbi->state = C_ENABLE;
++
++ return 0;
++}
++
++static int overlay1fb_disable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*)info;
++ int done;
++
++ if ((fbi->state == C_DISABLE) || (fbi->state == C_BLANK))
++ return 0;
++
++ fbi->state = C_DISABLE;
++
++ /* clear O1EN */
++ OVL1C1 &= ~OVL1C1_O1EN;
++
++ CLEAR_LCD_INTR(LCSR1, LCSR1_BS1);
++ FBR1 = 0x3;
++ done = WAIT_FOR_LCD_INTR(LCSR1, LCSR1_BS1, 100);
++
++ if (!done) {
++ pr_debug(KERN_INFO "%s: timeout\n", __FUNCTION__);
++ return -1;
++ }
++ return 0;
++}
++
++static int overlay1fb_blank(int blank, struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int err=0;
++
++ switch (blank) {
++ case 0:
++ err = overlay1fb_enable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ case 1:
++ err = overlay1fb_disable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ default:
++ break;
++ }
++
++ return err;
++}
++
++static int overlay1fb_check_var( struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ int xpos, ypos;
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++
++ /* must in base frame */
++ xpos = (var->nonstd & 0x3ff);
++ ypos = ((var->nonstd>>10) & 0x3ff);
++
++ if ( (xpos + var->xres) > fbi->basefb->fb.var.xres )
++ return -EINVAL;
++
++ if ( (ypos + var->yres) > fbi->basefb->fb.var.yres )
++ return -EINVAL;
++
++ switch (var->bits_per_pixel) {
++ case 16:
++ if ( var->xres & 0x1 ) {
++ printk("xres should be a multiple of 2 pixels!\n");
++ return -EINVAL;
++ }
++ break;
++ case 18:
++ case 19:
++ if ( var->xres & 0x7 ) {
++ printk("xres should be a multiple of 8 pixels!\n");
++ return -EINVAL;
++ }
++ break;
++ default:
++ break;
++ }
++
++ fbi->old_var=*var;
++
++ var->activate=FB_ACTIVATE_NOW;
++
++ return 0;
++}
++
++
++static int overlay1fb_set_par(struct fb_info *info)
++{
++ int nbytes=0, err=0, pixels_per_line=0;
++
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++
++ info->flags &= ~FBINFO_MISC_USEREVENT;
++
++ if (fbi->state == C_BLANK)
++ return 0;
++
++ if (fbi->state == C_DISABLE)
++ goto out1;
++
++ /* only xpos & ypos change */
++ if ( (var->xres == fbi->old_var.xres) &&
++ (var->yres == fbi->old_var.yres) &&
++ (var->bits_per_pixel == fbi->old_var.bits_per_pixel) )
++ goto out2;
++
++out1:
++ switch(var->bits_per_pixel) {
++ case 16:
++ /* 2 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x1) & (~0x1);
++ nbytes = 2;
++
++ var->red = def_rgbt_16.red;
++ var->green = def_rgbt_16.green;
++ var->blue = def_rgbt_16.blue;
++ var->transp = def_rgbt_16.transp;
++
++ break;
++ case 18:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgb_18.red;
++ var->green = def_rgb_18.green;
++ var->blue = def_rgb_18.blue;
++ var->transp = def_rgb_18.transp;
++
++ break;
++ case 19:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgbt_19.red;
++ var->green = def_rgbt_19.green;
++ var->blue = def_rgbt_19.blue;
++ var->transp = def_rgbt_19.transp;
++
++ break;
++ case 24:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_24.red;
++ var->green = def_rgbt_24.green;
++ var->blue = def_rgbt_24.blue;
++ var->transp = def_rgbt_24.transp;
++
++ break;
++ case 25:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_25.red;
++ var->green = def_rgbt_25.green;
++ var->blue = def_rgbt_25.blue;
++ var->transp = def_rgbt_25.transp;
++
++ break;
++ }
++
++ fbi->fb.fix.line_length = nbytes * pixels_per_line;
++ fbi->fb.fix.smem_len = fbi->fb.fix.line_length * fbi->fb.var.yres;
++
++ err= overlay1fb_map_video_memory((struct fb_info*)fbi);
++
++ if (err)
++ return err;
++
++out2:
++ fbi->xpos = var->nonstd & 0x3ff;
++ fbi->ypos = (var->nonstd>>10) & 0x3ff;
++
++ overlay1fb_enable(info);
++
++ return 0;
++
++}
++
++static struct fb_ops overlay1fb_ops = {
++ .owner = THIS_MODULE,
++ .fb_open = overlay1fb_open,
++ .fb_release = overlay1fb_release,
++ .fb_check_var = overlay1fb_check_var,
++ .fb_set_par = overlay1fb_set_par,
++ .fb_blank = overlay1fb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++};
++
++ /*
++ * LCD enhancement : Overlay 2
++ *
++ * Features:
++ * - support planar YCbCr420/YCbCr422/YCbCr444;
++ */
++static int overlay2fb_open(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int ret = 0;
++
++ /* if basefb is disable, enable fb. */
++ if (fbi->basefb && fbi->basefb->state != C_ENABLE)
++ pxafb_blank(VESA_NO_BLANKING, (struct fb_info *)(fbi->basefb));
++
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ ret = -EACCES;
++ else
++ fbi->refcount ++;
++
++ up(&fbi->mutex);
++ fbi->fb.var.xres = fbi->fb.var.yres = 0;
++
++ return ret;
++}
++
++static int overlay2fb_release(struct fb_info *info, int user)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++
++ down(&fbi->mutex);
++
++ if (fbi->refcount)
++ fbi->refcount --;
++
++ up(&fbi->mutex);
++
++ /* disable overlay when released */
++ overlay2fb_blank(1, info);
++
++ return 0;
++}
++
++static int overlay2fb_map_YUV_memory( struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ unsigned int ylen, cblen, crlen, aylen, acblen, acrlen;
++ unsigned int yoff, cboff, croff;
++ unsigned int xres,yres;
++ unsigned int nbytes;
++
++ ylen = cblen = crlen = aylen = acblen = acrlen = 0;
++ yoff = cboff = croff = 0;
++
++ if (fbi->map_cpu)
++ dma_free_writecombine(NULL, fbi->map_size, (void*)fbi->map_cpu, fbi->map_dma);
++
++ yres = fbi->fb.var.yres;
++
++ switch(fbi->format) {
++ case 0x4: /* YCbCr 4:2:0 planar */
++ pr_debug("420 planar\n");
++ /* 16 pixels per line */
++ xres = (fbi->fb.var.xres + 0xf) & (~0xf);
++ fbi->fb.fix.line_length = xres;
++
++ nbytes = xres * yres;
++ ylen = nbytes;
++ cblen = crlen = (nbytes/4);
++
++ break;
++ case 0x3: /* YCbCr 4:2:2 planar */
++ /* 8 pixles per line */
++ pr_debug("422 planar\n");
++ xres = (fbi->fb.var.xres + 0x7) & (~0x7);
++ fbi->fb.fix.line_length = xres;
++
++ nbytes = xres * yres;
++ ylen = nbytes;
++ cblen = crlen = (nbytes/2);
++
++ break;
++ case 0x2: /* YCbCr 4:4:4 planar */
++ /* 4 pixels per line */
++ pr_debug("444 planar\n");
++ xres = (fbi->fb.var.xres + 0x3) & (~0x3);
++ fbi->fb.fix.line_length = xres;
++
++ nbytes = xres * yres;
++ ylen = cblen = crlen = nbytes;
++ break;
++ }
++
++ /* 16-bytes alignment for DMA */
++ aylen = (ylen + 0xf) & (~0xf);
++ acblen = (cblen + 0xf) & (~0xf);
++ acrlen = (crlen + 0xf) & (~0xf);
++
++ fbi->fb.fix.smem_len = aylen + acblen + acrlen;
++
++ /* alloc memory */
++
++ fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++
++ if (!fbi->map_cpu) return -ENOMEM;
++
++ fbi->screen_cpu = fbi->map_cpu + PAGE_SIZE;
++ fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
++
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++
++ /* setup dma for Planar format */
++ fbi->dma2 = (struct pxafb_dma_descriptor*)
++ (fbi->screen_cpu - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma3 = fbi->dma2 - 1;
++ fbi->dma4 = fbi->dma3 - 1;
++
++ /* offset */
++ yoff = 0;
++ cboff = aylen;
++ croff = cboff + acblen;
++
++ /* Y vector */
++ fbi->dma2->fdadr = (fbi->screen_dma - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma2->fsadr = fbi->screen_dma + yoff;
++ fbi->dma2->fidr = 0;
++ fbi->dma2->ldcmd = ylen;
++
++ /* Cb vector */
++ fbi->dma3->fdadr = (fbi->dma2->fdadr - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma3->fsadr = (fbi->screen_dma + cboff);
++ fbi->dma3->fidr = 0;
++ fbi->dma3->ldcmd = cblen;
++
++ /* Cr vector */
++
++ fbi->dma4->fdadr = (fbi->dma3->fdadr - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma4->fsadr = (fbi->screen_dma + croff);
++ fbi->dma4->fidr = 0;
++ fbi->dma4->ldcmd = crlen;
++
++ /* adjust for user */
++ fbi->fb.var.red.length = ylen;
++ fbi->fb.var.red.offset = yoff;
++ fbi->fb.var.green.length = cblen;
++ fbi->fb.var.green.offset = cboff;
++ fbi->fb.var.blue.length = crlen;
++ fbi->fb.var.blue.offset = croff;
++
++ return 0;
++};
++
++static int overlay2fb_map_RGB_memory( struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++ int pixels_per_line=0 , nbytes=0;
++
++ if (fbi->map_cpu)
++ dma_free_writecombine(NULL, fbi->map_size, (void*)fbi->map_cpu, fbi->map_dma);
++
++ switch(var->bits_per_pixel) {
++ case 16:
++ /* 2 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x1) & (~0x1);
++ nbytes = 2;
++
++ var->red = def_rgbt_16.red;
++ var->green = def_rgbt_16.green;
++ var->blue = def_rgbt_16.blue;
++ var->transp = def_rgbt_16.transp;
++ break;
++
++ case 18:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgb_18.red;
++ var->green = def_rgb_18.green;
++ var->blue = def_rgb_18.blue;
++ var->transp = def_rgb_18.transp;
++
++ break;
++ case 19:
++ /* 8 pixels per line */
++ pixels_per_line = (fbi->fb.var.xres + 0x7 ) & (~0x7);
++ nbytes = 3;
++
++ var->red = def_rgbt_19.red;
++ var->green = def_rgbt_19.green;
++ var->blue = def_rgbt_19.blue;
++ var->transp = def_rgbt_19.transp;
++
++ break;
++ case 24:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_24.red;
++ var->green = def_rgbt_24.green;
++ var->blue = def_rgbt_24.blue;
++ var->transp = def_rgbt_24.transp;
++
++ break;
++
++ case 25:
++ pixels_per_line = fbi->fb.var.xres;
++ nbytes = 4;
++
++ var->red = def_rgbt_25.red;
++ var->green = def_rgbt_25.green;
++ var->blue = def_rgbt_25.blue;
++ var->transp = def_rgbt_25.transp;
++
++ break;
++ }
++
++ fbi->fb.fix.line_length = nbytes * pixels_per_line;
++ fbi->fb.fix.smem_len = fbi->fb.fix.line_length * fbi->fb.var.yres;
++
++ fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++
++ if (!fbi->map_cpu) return -ENOMEM;
++
++ fbi->screen_cpu = fbi->map_cpu + PAGE_SIZE;
++ fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
++
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++
++ /* setup dma descriptor */
++ fbi->dma2 = (struct pxafb_dma_descriptor*)
++ (fbi->screen_cpu - sizeof(struct pxafb_dma_descriptor));
++
++ fbi->dma2->fdadr = (fbi->screen_dma - sizeof(struct pxafb_dma_descriptor));
++ fbi->dma2->fsadr = fbi->screen_dma;
++ fbi->dma2->fidr = 0;
++ fbi->dma2->ldcmd = fbi->fb.fix.smem_len;
++
++ return 0;
++}
++
++static int overlay2fb_enable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ unsigned long bpp2;
++ unsigned int xres, yres;
++
++ if (!fbi->map_cpu) return -EINVAL;
++
++ switch(fbi->fb.var.bits_per_pixel) {
++ case 16:
++ bpp2 = 0x4;
++ break;
++ case 18:
++ bpp2 = 0x6;
++ break;
++ case 19:
++ bpp2 = 0x8;
++ break;
++ case 24:
++ bpp2 = 0x9;
++ break;
++ case 25:
++ bpp2 = 0xa;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ /* disable branch/start/end of frame interrupt */
++ LCCR5 |= (LCCR5_IUM4 | LCCR5_IUM3 | LCCR5_IUM2 |
++ LCCR5_BSM4 | LCCR5_BSM3 | LCCR5_BSM2 |
++ LCCR5_EOFM4 | LCCR5_EOFM3 | LCCR5_EOFM2 |
++ LCCR5_SOFM4 | LCCR5_SOFM3 | LCCR5_SOFM2);
++
++ if (fbi->format == 0) {
++ /* overlay2 RGB resolution, RGB and YUV have different xres value*/
++ xres = fbi->fb.var.xres;
++ yres = fbi->fb.var.yres;
++
++ OVL2C2 = (fbi->format << 20) | (fbi->ypos << 10) | fbi->xpos;
++ OVL2C1 = OVL2C1_O2EN | (bpp2 << 20) | ((yres-1)<<10) | (xres-1);
++ /* setup RGB DMA */
++ if (fbi->state == C_DISABLE || fbi->state == C_BLANK)
++ FDADR2 = fbi->dma2->fdadr;
++ else
++ FBR2 = fbi->dma2->fdadr | 0x1;
++ } else {
++ /* overlay2 YUV resolution */
++ xres = fbi->fb.fix.line_length;
++ yres = fbi->fb.var.yres;
++
++ OVL2C2 = (fbi->format << 20) | (fbi->ypos << 10) | fbi->xpos;
++ OVL2C1 = OVL2C1_O2EN | (bpp2 << 20) | ((yres-1)<<10) | (xres-1);
++
++ if (fbi->state == C_DISABLE || fbi->state == C_BLANK) {
++ FDADR2 = fbi->dma2->fdadr;
++ FDADR3 = fbi->dma3->fdadr;
++ FDADR4 = fbi->dma4->fdadr;
++ } else {
++ FBR2 = fbi->dma2->fdadr | 0x01;
++ FBR3 = fbi->dma3->fdadr | 0x01;
++ FBR4 = fbi->dma4->fdadr | 0x01;
++ }
++ }
++
++ fbi->state = C_ENABLE;
++ return 0;
++}
++
++static int overlay2fb_disable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*)info;
++ int done;
++
++ if (fbi->state == C_DISABLE)
++ return 0;
++ if (fbi->state == C_BLANK) {
++ fbi->state = C_DISABLE;
++ return 0;
++ }
++
++ fbi->state = C_DISABLE;
++
++ /* clear O2EN */
++ OVL2C1 &= ~OVL2C1_O2EN;
++
++ /* Make overlay2 can't disable/enable
++ * correctly sometimes.
++ */
++ CLEAR_LCD_INTR(LCSR1, LCSR1_BS2);
++
++ if (fbi->format == 0)
++ FBR2 = 0x3;
++ else {
++ FBR2 = 0x3;
++ FBR3 = 0x3;
++ FBR4 = 0x3;
++ }
++
++ done = WAIT_FOR_LCD_INTR(LCSR1, LCSR1_BS2, 100);
++
++ if (!done) {
++ pr_debug(KERN_INFO "%s: timeout\n", __FUNCTION__);
++ return -1;
++ }
++ return 0;
++}
++
++static int overlay2fb_blank(int blank, struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ int err=0;
++
++ switch(blank)
++ {
++ case 0:
++ err = overlay2fb_enable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ case 1:
++ err = overlay2fb_disable(info);
++ if (err) {
++ fbi->state = C_DISABLE;
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++ }
++ break;
++ default:
++ /* reserved */
++ break;
++ }
++
++ return err;
++}
++
++
++static int overlay2fb_check_var( struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ int xpos, ypos, xres, yres;
++ int format;
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++
++ xres=yres=0;
++
++ xpos = (var->nonstd & 0x3ff);
++ ypos = (var->nonstd >> 10) & 0x3ff;
++ format = (var->nonstd >>20) & 0x7;
++
++
++ /* Palnar YCbCr444, YCbCr422, YCbCr420 */
++ if ( (format != 0x4) && (format != 0x3) && (format != 0x2) && (format !=0x0))
++ return -EINVAL;
++
++ /* dummy pixels */
++ switch(format) {
++ case 0x0: /* RGB */
++ xres = var->xres;
++ break;
++ case 0x2: /* 444 */
++ xres = (var->xres + 0x3) & ~(0x3);
++ break;
++ case 0x3: /* 422 */
++ xres = (var->xres + 0x7) & ~(0x7);
++ break;
++ case 0x4: /* 420 */
++ xres = (var->xres + 0xf) & ~(0xf);
++ break;
++ }
++ yres = var->yres;
++
++ if ( (xpos + xres) > fbi->basefb->fb.var.xres )
++ return -EINVAL;
++
++ if ( (ypos + yres) > fbi->basefb->fb.var.yres )
++ return -EINVAL;
++
++ fbi->old_var=*var;
++
++ var->activate=FB_ACTIVATE_NOW;
++
++ return 0;
++
++}
++
++
++/*
++ * overlay2fb_set_var()
++ *
++ * var.nonstd is used as YCbCr format.
++ * var.red/green/blue is used as (Y/Cb/Cr) vector
++ */
++
++static int overlay2fb_set_par(struct fb_info *info)
++{
++ unsigned int xpos, ypos;
++ int format, err;
++
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++
++ info->flags &= ~FBINFO_MISC_USEREVENT;
++
++ if (fbi->state == C_BLANK)
++ return 0;
++
++ if (fbi->state == C_DISABLE)
++ goto out1;
++
++ if ( (var->xres == fbi->old_var.xres) &&
++ (var->yres == fbi->old_var.yres) &&
++ (var->bits_per_pixel == fbi->old_var.bits_per_pixel) &&
++ (((var->nonstd>>20) & 0x7) == fbi->format) )
++ goto out2;
++
++out1:
++ xpos = var->nonstd & 0x3ff;
++ ypos = (var->nonstd>>10) & 0x3ff;
++ format = (var->nonstd>>20) & 0x7;
++
++
++ fbi->format = format;
++ if ( fbi->format==0 )
++ err = overlay2fb_map_RGB_memory(info);
++ else
++ err = overlay2fb_map_YUV_memory(info);
++
++ if (err) return err;
++
++out2:
++ /* position */
++ fbi->xpos = var->nonstd & 0x3ff;
++ fbi->ypos = (var->nonstd>>10) & 0x3ff;
++
++ overlay2fb_enable(info);
++
++ return 0;
++}
++
++static struct fb_ops overlay2fb_ops = {
++ .owner = THIS_MODULE,
++ .fb_open = overlay2fb_open,
++ .fb_release = overlay2fb_release,
++ .fb_check_var = overlay2fb_check_var,
++ .fb_set_par = overlay2fb_set_par,
++ .fb_blank = overlay2fb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++};
++
++/* Hardware cursor */
++
++/* Bulverde Cursor Modes */
++struct cursorfb_mode{
++ int xres;
++ int yres;
++ int bpp;
++};
++
++static struct cursorfb_mode cursorfb_modes[]={
++ { 32, 32, 2},
++ { 32, 32, 2},
++ { 32, 32, 2},
++ { 64, 64, 2},
++ { 64, 64, 2},
++ { 64, 64, 2},
++ {128, 128, 1},
++ {128, 128, 1}
++};
++
++static int cursorfb_enable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++
++ if (!fbi->map_cpu) return -EINVAL;
++
++ CCR &= ~CCR_CEN;
++
++ /* set palette format
++ *
++ * FIXME: if only cursor uses palette
++ */
++ LCCR4 = (LCCR4 & (~(0x3<<15))) | (0x1<<15);
++
++ /* disable branch/start/end of frame interrupt */
++ LCCR5 |= (LCCR5_IUM5 | LCCR5_BSM5 | LCCR5_EOFM5 | LCCR5_SOFM5);
++
++ /* load palette and frame data */
++ if (fbi->state == C_DISABLE) {
++ FDADR5 = fbi->dma5_pal->fdadr;
++ udelay(1);
++ FDADR5 = fbi->dma5_frame->fdadr;
++ udelay(1);
++
++ }
++ else {
++ FBR5 = fbi->dma5_pal->fdadr | 0x1;
++ udelay(1);
++ FBR5 = fbi->dma5_frame->fdadr | 0x1;
++ udelay(1);
++ }
++
++ CCR = CCR_CEN | (fbi->ypos << 15) | (fbi->xpos << 5) | (fbi->format);
++
++ fbi->state = C_ENABLE;
++
++ return 0;
++}
++
++static int cursorfb_disable(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*)info;
++ int done, ret = 0;
++
++ fbi->state = C_DISABLE;
++
++ done = WAIT_FOR_LCD_INTR(LCSR1, LCSR1_BS5, 100);
++ if (!done) ret = -1;
++
++ CCR &= ~CCR_CEN;
++
++ return ret;
++}
++
++static int cursorfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
++ u_int trans, struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info *)info;
++ u_int val, ret = 1;
++ u_int *pal=(u_int*) fbi->palette_cpu;
++
++ /* 25bit with Transparcy for 16bpp format */
++ if (regno < fbi->palette_size) {
++ val = ((trans << 24) & 0x1000000);
++ val |= ((red << 16) & 0x0ff0000);
++ val |= ((green << 8 ) & 0x000ff00);
++ val |= ((blue << 0) & 0x00000ff);
++
++ pal[regno] = val;
++ ret = 0;
++ }
++ return ret;
++}
++
++int cursorfb_blank(int blank, struct fb_info *info)
++{
++ switch(blank)
++ {
++ case 0:
++ cursorfb_enable(info);
++ break;
++ case 1:
++ cursorfb_disable(info);
++ break;
++ default:
++ /* reserved */
++ break;
++ }
++ return 0;
++}
++
++static int cursorfb_check_var( struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ int xpos, ypos, xres, yres;
++ int mode;
++ struct cursorfb_mode *cursor;
++ struct overlayfb_info *fbi=(struct overlayfb_info*)info;
++
++ mode = var->nonstd & 0x7;
++ xpos = (var->nonstd>>5) & 0x3ff;
++ ypos = (var->nonstd>>15) & 0x3ff;
++
++ if (mode>7 || mode <0 )
++ return -EINVAL;
++
++ cursor = cursorfb_modes + mode;
++
++ xres = cursor->xres;
++ yres = cursor->yres;
++
++ if ( (xpos + xres) > fbi->basefb->fb.var.xres )
++ return -EINVAL;
++
++ if ( (ypos + yres) > fbi->basefb->fb.var.yres )
++ return -EINVAL;
++
++ return 0;
++
++}
++
++static int cursorfb_set_par(struct fb_info *info)
++{
++ struct overlayfb_info *fbi = (struct overlayfb_info*) info;
++ struct fb_var_screeninfo *var = &fbi->fb.var;
++ struct cursorfb_mode *cursor;
++ int mode, xpos, ypos;
++ int err;
++
++ info->flags &= ~FBINFO_MISC_USEREVENT;
++
++ mode = var->nonstd & 0x7;
++ xpos = (var->nonstd>>5) & 0x3ff;
++ ypos = (var->nonstd>>15) & 0x3ff;
++
++ if (mode != fbi->format) {
++ cursor = cursorfb_modes + mode;
++
++ /* update "var" info */
++ fbi->fb.var.xres = cursor->xres;
++ fbi->fb.var.yres = cursor->yres;
++ fbi->fb.var.bits_per_pixel = cursor->bpp;
++
++ /* alloc video memory
++ *
++ * 4k is engouh for 128x128x1 cursor,
++ * - 2k for cursor pixels,
++ * - 2k for palette data, plus 2 dma descriptor
++ */
++ if (!fbi->map_cpu) {
++ fbi->map_size = PAGE_SIZE;
++ fbi->map_cpu = (unsigned long)dma_alloc_writecombine(NULL, fbi->map_size,
++ &fbi->map_dma, GFP_KERNEL );
++ if (!fbi->map_cpu) return -ENOMEM;
++ }
++
++ cursor = cursorfb_modes + mode;
++
++ /* update overlay & fix "info" */
++ fbi->screen_cpu = fbi->map_cpu;
++ fbi->palette_cpu = fbi->map_cpu + (PAGE_SIZE/2);
++ fbi->screen_dma = fbi->map_dma;
++ fbi->palette_dma = fbi->map_dma + (PAGE_SIZE/2);
++
++ fbi->format = mode;
++ fbi->palette_size = (1<<cursor->bpp);
++ fbi->fb.fix.smem_start = fbi->screen_dma;
++ fbi->fb.fix.smem_len = cursor->xres * cursor->yres * cursor->bpp / 8;
++ fbi->fb.fix.line_length = cursor->xres * cursor->bpp / 8;
++
++ fbi->dma5_pal = (struct pxafb_dma_descriptor*)(fbi->map_cpu + PAGE_SIZE - 16 );
++ fbi->dma5_pal->fdadr = (fbi->map_dma + PAGE_SIZE - 16);
++ fbi->dma5_pal->fsadr = fbi->palette_dma;
++ fbi->dma5_pal->fidr = 0;
++ fbi->dma5_pal->ldcmd = (fbi->palette_size<<2) | LDCMD_PAL;
++
++ fbi->dma5_frame = (struct pxafb_dma_descriptor*)(fbi->map_cpu + PAGE_SIZE - 32 );
++ fbi->dma5_frame->fdadr = (fbi->map_dma + PAGE_SIZE - 32);
++ fbi->dma5_frame->fsadr = fbi->screen_dma;
++ fbi->dma5_frame->fidr = 0;
++ fbi->dma5_frame->ldcmd = fbi->fb.fix.smem_len;
++
++ /* alloc & set default cmap */
++ err = fb_alloc_cmap(&fbi->fb.cmap, fbi->palette_size, 0);
++ if (err) return err;
++ err = fb_set_cmap(&fbi->fb.cmap, info);
++ if (err) return err;
++ }
++
++ /* update overlay info */
++ if ( (xpos != fbi->xpos) || (ypos != fbi->ypos) ) {
++ fbi->xpos = xpos;
++ fbi->ypos = ypos;
++ }
++
++ cursorfb_enable(info);
++ pxafb_set_ctrlr_state(fbi->basefb, C_REENABLE);
++
++ return 0;
++}
++
++static struct fb_ops cursorfb_ops = {
++ .owner = THIS_MODULE,
++ .fb_check_var = cursorfb_check_var,
++ .fb_set_par = cursorfb_set_par,
++ .fb_blank = cursorfb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++ .fb_setcolreg = cursorfb_setcolreg,
++};
++
++static struct overlayfb_info * __init overlay1fb_init_fbinfo(void)
++{
++ struct overlayfb_info *fbi;
++
++ fbi = kmalloc(sizeof(struct overlayfb_info) + sizeof(u16) * 16, GFP_KERNEL);
++ if (!fbi)
++ return NULL;
++
++ memset(fbi, 0, sizeof(struct overlayfb_info) );
++
++ fbi->refcount = 0;
++ init_MUTEX(&fbi->mutex);
++
++ strcpy(fbi->fb.fix.id, "overlay1");
++
++ fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
++ fbi->fb.fix.type_aux = 0;
++ fbi->fb.fix.xpanstep = 0;
++ fbi->fb.fix.ypanstep = 0;
++ fbi->fb.fix.ywrapstep = 0;
++ fbi->fb.fix.accel = FB_ACCEL_NONE;
++
++ fbi->fb.var.nonstd = 0;
++ fbi->fb.var.activate = FB_ACTIVATE_NOW;
++ fbi->fb.var.height = -1;
++ fbi->fb.var.width = -1;
++ fbi->fb.var.accel_flags = 0;
++ fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
++
++
++ fbi->fb.fbops = &overlay1fb_ops;
++ fbi->fb.flags = FBINFO_FLAG_DEFAULT;
++ fbi->fb.node = -1;
++ fbi->fb.pseudo_palette = NULL;
++
++ fbi->xpos = 0;
++ fbi->ypos = 0;
++ fbi->format = -1;
++ fbi->state = C_DISABLE;
++
++ return fbi;
++}
++
++static struct overlayfb_info * __init overlay2fb_init_fbinfo(void)
++{
++ struct overlayfb_info *fbi;
++
++ fbi = kmalloc(sizeof(struct overlayfb_info) + sizeof(u16) * 16, GFP_KERNEL);
++ if (!fbi)
++ return NULL;
++
++ memset(fbi, 0, sizeof(struct overlayfb_info) );
++
++ fbi->refcount = 0;
++ init_MUTEX(&fbi->mutex);
++
++ strcpy(fbi->fb.fix.id, "overlay2");
++
++ fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
++ fbi->fb.fix.type_aux = 0;
++ fbi->fb.fix.xpanstep = 0;
++ fbi->fb.fix.ypanstep = 0;
++ fbi->fb.fix.ywrapstep = 0;
++ fbi->fb.fix.accel = FB_ACCEL_NONE;
++
++ fbi->fb.var.nonstd = 0;
++ fbi->fb.var.activate = FB_ACTIVATE_NOW;
++ fbi->fb.var.height = -1;
++ fbi->fb.var.width = -1;
++ fbi->fb.var.accel_flags = 0;
++ fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
++
++ fbi->fb.fbops = &overlay2fb_ops;
++ fbi->fb.flags = FBINFO_FLAG_DEFAULT;
++ fbi->fb.node = -1;
++ fbi->fb.pseudo_palette = NULL;
++
++ fbi->xpos = 0;
++ fbi->ypos = 0;
++ fbi->format = -1;
++ fbi->state = C_DISABLE;
++
++ return fbi;
++}
++
++static struct overlayfb_info * __init cursorfb_init_fbinfo(void)
++{
++ struct overlayfb_info *fbi;
++
++ fbi = kmalloc(sizeof(struct overlayfb_info) + sizeof(u16) * 16, GFP_KERNEL);
++ if (!fbi)
++ return NULL;
++
++ memset(fbi, 0, sizeof(struct overlayfb_info) );
++
++ fbi->refcount = 0;
++ init_MUTEX(&fbi->mutex);
++
++ strcpy(fbi->fb.fix.id, "cursor");
++
++ fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
++ fbi->fb.fix.type_aux = 0;
++ fbi->fb.fix.xpanstep = 0;
++ fbi->fb.fix.ypanstep = 0;
++ fbi->fb.fix.ywrapstep = 0;
++ fbi->fb.fix.accel = FB_ACCEL_NONE;
++
++ fbi->fb.var.nonstd = 0;
++ fbi->fb.var.activate = FB_ACTIVATE_NOW;
++ fbi->fb.var.height = -1;
++ fbi->fb.var.width = -1;
++ fbi->fb.var.accel_flags = 0;
++ fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
++
++ fbi->fb.fbops = &cursorfb_ops;
++ fbi->fb.flags = FBINFO_FLAG_DEFAULT;
++ fbi->fb.node = -1;
++ fbi->fb.pseudo_palette = NULL;
++
++
++ fbi->xpos = 0;
++ fbi->ypos = 0;
++ fbi->format = -1;
++ fbi->state = C_DISABLE;
++
++ return fbi;
++}
++
++
++void pxa_set_overlay_ctrlr_state(struct pxafb_info *fbi, u_int state)
++{
++ switch (state) {
++ case C_DISABLE:
++ DISABLE_OVERLAYS(fbi);
++ break;
++ case C_ENABLE:
++ ENABLE_OVERLAYS(fbi);
++ break;
++ case C_BLANK:
++ BLANK_OVERLAYS(fbi);
++ break;
++ case C_UNBLANK:
++ UNBLANK_OVERLAYS(fbi);
++ break;
++ default:
++ break;
++ }
++}
++
++static int is_pxafb_device(struct device * dev, void * data)
++{
++ struct platform_device *pdev = container_of(dev, struct platform_device, dev);
++
++ return (strncmp(pdev->name, "pxa2xx-fb", 9) == 0);
++}
++
++static int __devinit pxafb_overlay_init(void)
++{
++ int ret;
++ struct overlayfb_info *overlay1fb, *overlay2fb, *cursorfb;
++ struct pxafb_info *fbi;
++ struct device *dev;
++
++ ret = -1;
++ overlay1fb = overlay2fb = cursorfb = NULL;
++ fbi = NULL;
++
++ dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device);
++ if (!dev) {
++ printk(KERN_INFO "Base framebuffer not exists, failed to load overlay driver!\n");
++ return ret;
++ }
++
++ fbi = dev_get_drvdata(dev);
++ if (fbi == NULL) {
++ printk(KERN_INFO "Base framebuffer not initialized, failed to load overlay driver!\n");
++ return ret;
++ }
++
++ /* Overlay 1 windows */
++ overlay1fb = overlay1fb_init_fbinfo();
++
++ if (!overlay1fb) {
++ ret = -ENOMEM;
++ printk("overlay1fb_init_fbinfo failed\n");
++ goto failed;
++ }
++
++ ret = register_framebuffer(&overlay1fb->fb);
++ if (ret < 0)
++ goto failed;
++
++ /* Overlay 2 window */
++ overlay2fb = overlay2fb_init_fbinfo();
++
++ if (!overlay2fb) {
++ ret = -ENOMEM;
++ printk("overlay2fb_init_fbinfo failed\n");
++ goto failed;
++ }
++
++ ret = register_framebuffer(&overlay2fb->fb);
++ if (ret < 0) goto failed;
++
++ /* Hardware cursor window */
++ cursorfb = cursorfb_init_fbinfo();
++
++ if (!cursorfb) {
++ ret = -ENOMEM;
++ printk("cursorfb_init_fbinfo failed\n");
++ goto failed;
++ }
++
++ ret = register_framebuffer(&cursorfb->fb);
++ if (ret < 0) goto failed;
++
++
++ /* set refernce to Overlays */
++ fbi->overlay1fb = overlay1fb;
++ fbi->overlay2fb = overlay2fb;
++ fbi->cursorfb = cursorfb;
++ fbi->set_overlay_ctrlr_state=pxa_set_overlay_ctrlr_state;
++
++ /* set refernce to BaseFrame */
++ overlay1fb->basefb = fbi;
++ overlay2fb->basefb = fbi;
++ cursorfb->basefb = fbi;
++
++ printk(KERN_INFO "Load PXA Overlay driver successfully!\n");
++
++ return 0;
++
++failed:
++ if (overlay1fb)
++ kfree(overlay1fb);
++ if (overlay2fb)
++ kfree(overlay2fb);
++ if (cursorfb)
++ kfree(cursorfb);
++ printk(KERN_INFO "Load PXA Overlay driver failed!\n");
++ return ret;
++}
++
++static void __exit pxafb_overlay_exit(void)
++{
++ struct pxafb_info *fbi;
++ struct device *dev;
++
++ dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device);
++ if (!dev)
++ return;
++
++ fbi = dev_get_drvdata(dev);
++ if (!fbi)
++ return;
++
++ if (fbi->overlay1fb) {
++ unregister_framebuffer(&(fbi->overlay1fb->fb));
++ kfree(fbi->overlay1fb);
++ fbi->overlay1fb = NULL;
++ }
++
++ if (fbi->overlay2fb) {
++ unregister_framebuffer(&(fbi->overlay2fb->fb));
++ kfree(fbi->overlay2fb);
++ fbi->overlay2fb = NULL;
++ }
++
++ if (fbi->cursorfb) {
++ unregister_framebuffer(&(fbi->cursorfb->fb));
++ kfree(fbi->cursorfb);
++ fbi->cursorfb = NULL;
++ }
++
++ fbi->set_overlay_ctrlr_state = NULL;
++
++ printk(KERN_INFO "Unload PXA Overlay driver successfully!\n");
++ return;
++}
++
++
++module_init(pxafb_overlay_init);
++module_exit(pxafb_overlay_exit);
++
++MODULE_DESCRIPTION("Loadable framebuffer overlay driver for PXA");
++MODULE_LICENSE("GPL");
++
+Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h
++++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -792,11 +792,18 @@
+ #define UDC_INT_PACKETCMP (0x1)
+
+ #define UDCICR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2))
++/* Older defines, do not use. */
+ #define UDCICR1_IECC (1 << 31) /* IntEn - Configuration Change */
+ #define UDCICR1_IESOF (1 << 30) /* IntEn - Start of Frame */
+ #define UDCICR1_IERU (1 << 29) /* IntEn - Resume */
+ #define UDCICR1_IESU (1 << 28) /* IntEn - Suspend */
+ #define UDCICR1_IERS (1 << 27) /* IntEn - Reset */
++/* New defines. */
++#define UDCISR1_IRCC (1 << 31) /* IntEn - Configuration Change */
++#define UDCISR1_IRSOF (1 << 30) /* IntEn - Start of Frame */
++#define UDCISR1_IRRU (1 << 29) /* IntEn - Resume */
++#define UDCISR1_IRSU (1 << 28) /* IntEn - Suspend */
++#define UDCISR1_IRRS (1 << 27) /* IntEn - Reset */
+
+ #define UDCISR0 __REG(0x4060000C) /* UDC Interrupt Status Register 0 */
+ #define UDCISR1 __REG(0x40600010) /* UDC Interrupt Status Register 1 */
+@@ -1831,6 +1838,8 @@
+ #define DFBR0 __REG(0x44000020) /* DMA Channel 0 Frame Branch Register */
+ #define DFBR1 __REG(0x44000024) /* DMA Channel 1 Frame Branch Register */
+ #define LCSR __REG(0x44000038) /* LCD Controller Status Register */
++#define LCSR0 __REG(0x44000038) /* LCD Controller Status Register */
++#define LCSR1 __REG(0x44000034) /* LCD Controller Status Register */
+ #define LIIDR __REG(0x4400003C) /* LCD Controller Interrupt ID Register */
+ #define TMEDRGBR __REG(0x44000040) /* TMED RGB Seed Register */
+ #define TMEDCR __REG(0x44000044) /* TMED Control Register */
+@@ -1840,6 +1849,10 @@
+ #define LCCR3_4BPP (2 << 24)
+ #define LCCR3_8BPP (3 << 24)
+ #define LCCR3_16BPP (4 << 24)
++#define LCCR3_18BPP (6 << 24)
++#define LCCR3_19BPP (8 << 24)
++#define LCCR3_24BPP (9 << 24)
++#define LCCR3_25BPP (10<< 24)
+
+ #define LCCR3_PDFOR_0 (0 << 30)
+ #define LCCR3_PDFOR_1 (1 << 30)
+@@ -2014,6 +2027,104 @@
+
+ #define LDCMD_PAL (1 << 26) /* instructs DMA to load palette buffer */
+
++/* Overlay1 & Overlay2 & Hardware Cursor */
++#define LCSR1_SOF1 (1 << 0)
++#define LCSR1_SOF2 (1 << 1)
++#define LCSR1_SOF3 (1 << 2)
++#define LCSR1_SOF4 (1 << 3)
++#define LCSR1_SOF5 (1 << 4)
++#define LCSR1_SOF6 (1 << 5)
++
++#define LCSR1_EOF1 (1 << 8)
++#define LCSR1_EOF2 (1 << 9)
++#define LCSR1_EOF3 (1 << 10)
++#define LCSR1_EOF4 (1 << 11)
++#define LCSR1_EOF5 (1 << 12)
++#define LCSR1_EOF6 (1 << 13)
++
++#define LCSR1_BS1 (1 << 16)
++#define LCSR1_BS2 (1 << 17)
++#define LCSR1_BS3 (1 << 18)
++#define LCSR1_BS4 (1 << 19)
++#define LCSR1_BS5 (1 << 20)
++#define LCSR1_BS6 (1 << 21)
++
++#define LCSR1_IU2 (1 << 25)
++#define LCSR1_IU3 (1 << 26)
++#define LCSR1_IU4 (1 << 27)
++#define LCSR1_IU5 (1 << 28)
++#define LCSR1_IU6 (1 << 29)
++
++#define LDCMD_SOFINT (1 << 22)
++#define LDCMD_EOFINT (1 << 21)
++
++
++#define LCCR5_SOFM1 (1<<0) /* Start Of Frame Mask for Overlay 1 (channel 1) */
++#define LCCR5_SOFM2 (1<<1) /* Start Of Frame Mask for Overlay 2 (channel 2) */
++#define LCCR5_SOFM3 (1<<2) /* Start Of Frame Mask for Overlay 2 (channel 3) */
++#define LCCR5_SOFM4 (1<<3) /* Start Of Frame Mask for Overlay 2 (channel 4) */
++#define LCCR5_SOFM5 (1<<4) /* Start Of Frame Mask for cursor (channel 5) */
++#define LCCR5_SOFM6 (1<<5) /* Start Of Frame Mask for command data (channel 6) */
++
++#define LCCR5_EOFM1 (1<<8) /* End Of Frame Mask for Overlay 1 (channel 1) */
++#define LCCR5_EOFM2 (1<<9) /* End Of Frame Mask for Overlay 2 (channel 2) */
++#define LCCR5_EOFM3 (1<<10) /* End Of Frame Mask for Overlay 2 (channel 3) */
++#define LCCR5_EOFM4 (1<<11) /* End Of Frame Mask for Overlay 2 (channel 4) */
++#define LCCR5_EOFM5 (1<<12) /* End Of Frame Mask for cursor (channel 5) */
++#define LCCR5_EOFM6 (1<<13) /* End Of Frame Mask for command data (channel 6) */
++
++#define LCCR5_BSM1 (1<<16) /* Branch mask for Overlay 1 (channel 1) */
++#define LCCR5_BSM2 (1<<17) /* Branch mask for Overlay 2 (channel 2) */
++#define LCCR5_BSM3 (1<<18) /* Branch mask for Overlay 2 (channel 3) */
++#define LCCR5_BSM4 (1<<19) /* Branch mask for Overlay 2 (channel 4) */
++#define LCCR5_BSM5 (1<<20) /* Branch mask for cursor (channel 5) */
++#define LCCR5_BSM6 (1<<21) /* Branch mask for data command (channel 6) */
++
++#define LCCR5_IUM1 (1<<24) /* Input FIFO Underrun Mask for Overlay 1 */
++#define LCCR5_IUM2 (1<<25) /* Input FIFO Underrun Mask for Overlay 2 */
++#define LCCR5_IUM3 (1<<26) /* Input FIFO Underrun Mask for Overlay 2 */
++#define LCCR5_IUM4 (1<<27) /* Input FIFO Underrun Mask for Overlay 2 */
++#define LCCR5_IUM5 (1<<28) /* Input FIFO Underrun Mask for cursor */
++#define LCCR5_IUM6 (1<<29) /* Input FIFO Underrun Mask for data command */
++
++#define OVL1C1_O1EN (1<<31) /* Enable bit for Overlay 1 */
++#define OVL2C1_O2EN (1<<31) /* Enable bit for Overlay 2 */
++#define CCR_CEN (1<<31) /* Enable bit for Cursor */
++
++/* LCD registers */
++#define LCCR4 __REG(0x44000010) /* LCD Controller Control Register 4 */
++#define LCCR5 __REG(0x44000014) /* LCD Controller Control Register 5 */
++#define FBR0 __REG(0x44000020) /* DMA Channel 0 Frame Branch Register */
++#define FBR1 __REG(0x44000024) /* DMA Channel 1 Frame Branch Register */
++#define FBR2 __REG(0x44000028) /* DMA Channel 2 Frame Branch Register */
++#define FBR3 __REG(0x4400002C) /* DMA Channel 3 Frame Branch Register */
++#define FBR4 __REG(0x44000030) /* DMA Channel 4 Frame Branch Register */
++#define FDADR2 __REG(0x44000220) /* DMA Channel 2 Frame Descriptor Address Register */
++#define FSADR2 __REG(0x44000224) /* DMA Channel 2 Frame Source Address Register */
++#define FIDR2 __REG(0x44000228) /* DMA Channel 2 Frame ID Register */
++#define LDCMD2 __REG(0x4400022C) /* DMA Channel 2 Command Register */
++#define FDADR3 __REG(0x44000230) /* DMA Channel 3 Frame Descriptor Address Register */
++#define FSADR3 __REG(0x44000234) /* DMA Channel 3 Frame Source Address Register */
++#define FIDR3 __REG(0x44000238) /* DMA Channel 3 Frame ID Register */
++#define LDCMD3 __REG(0x4400023C) /* DMA Channel 3 Command Register */
++#define FDADR4 __REG(0x44000240) /* DMA Channel 4 Frame Descriptor Address Register */
++#define FSADR4 __REG(0x44000244) /* DMA Channel 4 Frame Source Address Register */
++#define FIDR4 __REG(0x44000248) /* DMA Channel 4 Frame ID Register */
++#define LDCMD4 __REG(0x4400024C) /* DMA Channel 4 Command Register */
++#define FDADR5 __REG(0x44000250) /* DMA Channel 5 Frame Descriptor Address Register */
++#define FSADR5 __REG(0x44000254) /* DMA Channel 5 Frame Source Address Register */
++#define FIDR5 __REG(0x44000258) /* DMA Channel 5 Frame ID Register */
++#define LDCMD5 __REG(0x4400025C) /* DMA Channel 5 Command Register */
++
++#define OVL1C1 __REG(0x44000050) /* Overlay 1 Control Register 1 */
++#define OVL1C2 __REG(0x44000060) /* Overlay 1 Control Register 2 */
++#define OVL2C1 __REG(0x44000070) /* Overlay 2 Control Register 1 */
++#define OVL2C2 __REG(0x44000080) /* Overlay 2 Control Register 2 */
++#define CCR __REG(0x44000090) /* Cursor Control Register */
++
++#define FBR5 __REG(0x44000110) /* DMA Channel 5 Frame Branch Register */
++#define FBR6 __REG(0x44000114) /* DMA Channel 6 Frame Branch Register */
++
+ /*
+ * Memory controller
+ */
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxav4l1-8.patch.eml b/packages/linux/linux-ezx-2.6.24/patches/pxav4l1-8.patch.eml
new file mode 100644
index 0000000000..eabcc41830
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxav4l1-8.patch.eml
@@ -0,0 +1,1204 @@
+Path: news.gmane.org!not-for-mail
+From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+Newsgroups: gmane.comp.video.video4linux
+Subject: [RFC PATCH 1/8] soc_camera V4L2 driver for directly-connected
+ SoC-based cameras
+Date: Wed, 23 Jan 2008 18:41:18 +0100 (CET)
+Lines: 1132
+Approved: news@gmane.org
+Message-ID: <Pine.LNX.4.64.0801231654540.4932@axis700.grange>
+References: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: ger.gmane.org 1201110130 28779 80.91.229.12 (23 Jan 2008 17:42:10 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Wed, 23 Jan 2008 17:42:10 +0000 (UTC)
+To: video4linux-list@redhat.com
+Original-X-From: video4linux-list-bounces@redhat.com Wed Jan 23 18:42:28 2008
+Return-path: <video4linux-list-bounces@redhat.com>
+Envelope-to: rh-video4linux-list@gmane.org
+Original-Received: from hormel.redhat.com ([209.132.177.30])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1JHjbz-0002oq-Us
+ for rh-video4linux-list@gmane.org; Wed, 23 Jan 2008 18:42:09 +0100
+Original-Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110])
+ by hormel.redhat.com (Postfix) with ESMTP
+ id 7B895730A6; Wed, 23 Jan 2008 12:41:41 -0500 (EST)
+Original-Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
+ [172.16.52.254])
+ by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id
+ m0NHfdRS017082 for <video4linux-list@listman.util.phx.redhat.com>;
+ Wed, 23 Jan 2008 12:41:39 -0500
+Original-Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
+ by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m0NHfcrF027810
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:38 -0500
+Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
+ by mx3.redhat.com (8.13.1/8.13.1) with SMTP id m0NHf62e000540
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:06 -0500
+Original-Received: (qmail invoked by alias); 23 Jan 2008 17:40:59 -0000
+Original-Received: from p57BD2F1F.dip0.t-ipconnect.de (EHLO axis700.grange)
+ [87.189.47.31]
+ by mail.gmx.net (mp048) with SMTP; 23 Jan 2008 18:40:59 +0100
+X-Authenticated: #20450766
+X-Provags-ID: V01U2FsdGVkX19NlXt5RoZNpQ4LqFuDqiXHZ3kHYCmxz52UMExHFC
+ yqWM+gBlp24/e9
+Original-Received: from lyakh (helo=localhost)
+ by axis700.grange with local-esmtp (Exim 4.63)
+ (envelope-from <g.liakhovetski@gmx.de>) id 1JHjbC-00029n-Kf
+ for video4linux-list@redhat.com; Wed, 23 Jan 2008 18:41:18 +0100
+X-X-Sender: lyakh@axis700.grange
+In-Reply-To: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+X-Y-GMX-Trusted: 0
+X-RedHat-Spam-Score: 0
+X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
+X-Scanned-By: MIMEDefang 2.58 on 172.16.48.32
+X-loop: video4linux-list@redhat.com
+X-BeenThere: video4linux-list@redhat.com
+X-Mailman-Version: 2.1.5
+Precedence: junk
+List-Id: Linux and Kernel Video <video4linux-list.redhat.com>
+List-Unsubscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=unsubscribe>
+List-Archive: <https://www.redhat.com/mailman/private/video4linux-list>
+List-Post: <mailto:video4linux-list@redhat.com>
+List-Help: <mailto:video4linux-list-request@redhat.com?subject=help>
+List-Subscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=subscribe>
+Original-Sender: video4linux-list-bounces@redhat.com
+Errors-To: video4linux-list-bounces@redhat.com
+Xref: news.gmane.org gmane.comp.video.video4linux:36470
+Archived-At: <http://permalink.gmane.org/gmane.comp.video.video4linux/36470>
+
+This driver provides an interface between platform-specific camera
+busses and camera devices. It should be used if the camera is connected
+not over a "proper" bus like PCI or USB, but over a special bus, like,
+for example, the Quick Capture interface on PXA270 SoCs. Later it should
+also be used for i.MX31 SoCs from Freescale. It can handle multiple
+cameras and / or multiple busses, which can be used, e.g., in
+stereo-vision applications.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+---
+ drivers/media/video/Kconfig | 8 +
+ drivers/media/video/Makefile | 2 +
+ drivers/media/video/soc_camera.c | 928 ++++++++++++++++++++++++++++++++++++++
+ include/media/soc_camera.h | 138 ++++++
+ 4 files changed, 1076 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/media/video/soc_camera.c
+ create mode 100644 include/media/soc_camera.h
+
+diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
+index e204e7b..be54183 100644
+--- a/drivers/media/video/Kconfig
++++ b/drivers/media/video/Kconfig
+@@ -795,4 +795,12 @@ config USB_ZR364XX
+
+ endif # V4L_USB_DRIVERS
+
++config SOC_CAMERA
++ tristate "SoC camera support"
++ depends on VIDEO_V4L2
++ help
++ SoC Camera is a common API to several cameras, not connecting
++ over a bus like PCI or USB. For example some i2c camera hanging
++ directly on the data bus of an SoC.
++
+ endif # VIDEO_CAPTURE_DRIVERS
+diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
+index 10b4d44..97a9135 100644
+--- a/drivers/media/video/Makefile
++++ b/drivers/media/video/Makefile
+@@ -116,4 +116,6 @@ obj-$(CONFIG_USB_QUICKCAM_MESSENGER) += usbvideo/
+
+ obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+
++obj-$(CONFIG_SOC_CAMERA) += soc_camera.o
++
+ EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
+diff --git a/drivers/media/video/soc_camera.c b/drivers/media/video/soc_camera.c
+new file mode 100644
+index 0000000..5ec652e
+--- /dev/null
++++ b/drivers/media/video/soc_camera.c
+@@ -0,0 +1,928 @@
++/*
++ * camera image capture (abstract) bus driver
++ *
++ * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
++ *
++ * This driver provides an interface between platform-specific camera
++ * busses and camera devices. It should be used if the camera is
++ * connected not over a "proper" bus like PCI or USB, but over a
++ * special bus, like, for example, the Quick Capture interface on PXA270
++ * SoCs. Later it should also be used for i.MX31 SoCs from Freescale.
++ * It can handle multiple cameras and / or multiple busses, which can
++ * be used, e.g., in stereo-vision applications.
++ *
++ * 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/init.h>
++#include <linux/device.h>
++#include <linux/list.h>
++#include <linux/err.h>
++#include <linux/mutex.h>
++#include <linux/vmalloc.h>
++
++#include <media/v4l2-common.h>
++#include <media/v4l2-dev.h>
++#include <media/soc_camera.h>
++
++static LIST_HEAD(hosts);
++static LIST_HEAD(devices);
++static DEFINE_MUTEX(list_lock);
++static DEFINE_MUTEX(video_lock);
++
++const static struct soc_camera_data_format*
++format_by_fourcc(struct soc_camera_device *icd, unsigned int fourcc)
++{
++ unsigned int i;
++
++ for (i = 0; i < icd->ops->num_formats; i++)
++ if (icd->ops->formats[i].fourcc == fourcc)
++ return icd->ops->formats + i;
++ return NULL;
++}
++
++static int soc_camera_try_fmt_cap(struct file *file, void *priv,
++ struct v4l2_format *f)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ enum v4l2_field field;
++ const struct soc_camera_data_format *fmt;
++ int ret;
++
++ WARN_ON(priv != file->private_data);
++
++ fmt = format_by_fourcc(icd, f->fmt.pix.pixelformat);
++ if (!fmt) {
++ pr_debug("%s: invalid format 0x%08x\n", __FUNCTION__,
++ f->fmt.pix.pixelformat);
++ return -EINVAL;
++ }
++
++ pr_debug("%s: fmt: 0x%08x\n", __FUNCTION__, fmt->fourcc);
++
++ field = f->fmt.pix.field;
++
++ if (field == V4L2_FIELD_ANY) {
++ field = V4L2_FIELD_NONE;
++ } else if (V4L2_FIELD_NONE != field) {
++ printk("Field type invalid.\n");
++ return -EINVAL;
++ }
++
++ /* limit to host capabilities */
++ ret = ici->try_fmt_cap(ici, f);
++
++ /* limit to sensor capabilities */
++ if (!ret)
++ ret = icd->ops->try_fmt_cap(icd, f);
++
++ /* calculate missing fields */
++ f->fmt.pix.field = field;
++ f->fmt.pix.bytesperline =
++ (f->fmt.pix.width * fmt->depth) >> 3;
++ f->fmt.pix.sizeimage =
++ f->fmt.pix.height * f->fmt.pix.bytesperline;
++
++ return ret;
++}
++
++static int soc_camera_enum_input(struct file *file, void *priv,
++ struct v4l2_input *inp)
++{
++ if (inp->index != 0)
++ return -EINVAL;
++
++ inp->type = V4L2_INPUT_TYPE_CAMERA;
++ inp->std = V4L2_STD_UNKNOWN;
++ strcpy(inp->name, "Camera");
++
++ return 0;
++}
++
++static int soc_camera_g_input(struct file *file, void *priv, unsigned int *i)
++{
++ *i = 0;
++
++ return 0;
++}
++
++static int soc_camera_s_input(struct file *file, void *priv, unsigned int i)
++{
++ if (i > 0)
++ return -EINVAL;
++
++ return 0;
++}
++
++static int soc_camera_s_std(struct file *file, void *priv, v4l2_std_id *a)
++{
++ return 0;
++}
++
++static int soc_camera_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *p)
++{
++ int ret;
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++
++ WARN_ON(priv != file->private_data);
++
++ pr_debug("%s: %d\n", __FUNCTION__, p->memory);
++
++ ret = videobuf_reqbufs(&icf->vb_vidq, p);
++ if (ret < 0)
++ return ret;
++
++ return ici->reqbufs(icf, p);
++
++ return ret;
++}
++
++static int soc_camera_querybuf(struct file *file, void *priv, struct v4l2_buffer *p)
++{
++ struct soc_camera_file *icf = file->private_data;
++
++ WARN_ON(priv != file->private_data);
++
++ return videobuf_querybuf(&icf->vb_vidq, p);
++}
++
++static int soc_camera_qbuf(struct file *file, void *priv, struct v4l2_buffer *p)
++{
++ struct soc_camera_file *icf = file->private_data;
++
++ WARN_ON(priv != file->private_data);
++
++ return videobuf_qbuf(&icf->vb_vidq, p);
++}
++
++static int soc_camera_dqbuf(struct file *file, void *priv, struct v4l2_buffer *p)
++{
++ struct soc_camera_file *icf = file->private_data;
++
++ WARN_ON(priv != file->private_data);
++
++ return videobuf_dqbuf(&icf->vb_vidq, p, file->f_flags & O_NONBLOCK);
++}
++
++static int soc_camera_open(struct inode *inode, struct file *file)
++{
++ struct soc_camera_host *ici;
++ struct soc_camera_device *icd;
++ struct video_device *vdev;
++ struct soc_camera_file *icf;
++ int ret;
++
++ mutex_lock(&video_lock);
++ list_for_each_entry(icd, &devices, list) {
++ if (icd->vdev && icd->vdev->minor == iminor(inode))
++ break;
++ }
++ mutex_unlock(&video_lock);
++
++ if (&icd->list == &devices)
++ return -ENODEV;
++
++ icf = vmalloc(sizeof(*icf));
++ if (!icf)
++ return -ENOMEM;
++
++ icf->icd = icd;
++
++ if (!try_module_get(icd->ops->owner)) {
++ printk(KERN_INFO "Couldn't lock sensor driver.\n");
++ ret = -EINVAL;
++ goto emgd;
++ }
++
++ ici = to_soc_camera_host(icd->dev.parent);
++
++ if (!try_module_get(ici->owner)) {
++ printk(KERN_INFO "Couldn't lock capture bus driver.\n");
++ ret = -EINVAL;
++ goto emgi;
++ }
++
++ vdev = icd->vdev;
++
++ file->private_data = icf;
++ dev_dbg(vdev->dev, "camera device open\n");
++
++ vdev = icd->vdev;
++
++ videobuf_queue_init(&icf->vb_vidq, ici->vbq_ops,
++ icd, NULL,
++ V4L2_BUF_TYPE_VIDEO_CAPTURE,
++ V4L2_FIELD_NONE,
++ ici->msize, icd);
++
++ return 0;
++
++emgi:
++ module_put(icd->ops->owner);
++emgd:
++ vfree(icf);
++ return ret;
++}
++
++static int soc_camera_close(struct inode *inode, struct file *file)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent);
++ struct video_device *vdev = icd->vdev;
++
++ module_put(icd->ops->owner);
++ module_put(ici->owner);
++ vfree(file->private_data);
++
++ dev_dbg(vdev->dev, "camera device close\n");
++
++ return 0;
++}
++
++static int soc_camera_read(struct file *file, char __user *buf,
++ size_t count, loff_t *ppos)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct video_device *vdev = icd->vdev;
++ int err = -EINVAL;
++
++ dev_err(vdev->dev, "camera device read not implemented\n");
++
++ return err;
++}
++
++static int soc_camera_mmap(struct file *file, struct vm_area_struct *vma)
++{
++ struct soc_camera_file *icf = file->private_data;
++ int err;
++
++ pr_debug("mmap called, vma=0x%08lx\n",(unsigned long)vma);
++
++ err = videobuf_mmap_mapper(&icf->vb_vidq, vma);
++
++ pr_debug ("vma start=0x%08lx, size=%ld, ret=%d\n",
++ (unsigned long)vma->vm_start,
++ (unsigned long)vma->vm_end-(unsigned long)vma->vm_start,
++ err);
++
++ return err;
++}
++
++static unsigned int soc_camera_poll(struct file *file, poll_table *pt)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++
++ if (list_empty(&icf->vb_vidq.stream)) {
++ printk("---------- urgs\n");
++ return POLLERR;
++ }
++
++ return ici->poll(file, pt);
++}
++
++
++static struct file_operations soc_camera_fops = {
++ .owner = THIS_MODULE,
++ .open = soc_camera_open,
++ .release = soc_camera_close,
++ .ioctl = video_ioctl2,
++ .read = soc_camera_read,
++ .mmap = soc_camera_mmap,
++ .poll = soc_camera_poll,
++ .llseek = no_llseek,
++};
++
++
++static int soc_camera_s_fmt_cap(struct file *file, void *priv,
++ struct v4l2_format *f)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ int ret;
++ struct v4l2_rect rect;
++ const static struct soc_camera_data_format *data_fmt;
++
++ WARN_ON(priv != file->private_data);
++
++ data_fmt = format_by_fourcc(icd, f->fmt.pix.pixelformat);
++ if (!data_fmt)
++ return -EINVAL;
++
++ /* cached_datawidth may be further adjusted by the ici */
++ icd->cached_datawidth = data_fmt->depth;
++
++ ret = soc_camera_try_fmt_cap(file, icf, f);
++ if (ret < 0)
++ return ret;
++
++ rect.left = icd->x_current;
++ rect.top = icd->y_current;
++ rect.width = f->fmt.pix.width;
++ rect.height = f->fmt.pix.height;
++ ret = ici->set_capture_format(icd, f->fmt.pix.pixelformat, &rect);
++
++ if (!ret) {
++ icd->current_fmt = data_fmt;
++ icd->width = rect.width;
++ icd->height = rect.height;
++ icf->vb_vidq.field = f->fmt.pix.field;
++ if (V4L2_BUF_TYPE_VIDEO_CAPTURE != f->type)
++ printk("Attention! Wrong buf-type %d\n", f->type);
++
++ dev_dbg(&icd->dev, "set width: %d height: %d\n",
++ icd->width, icd->height);
++ }
++
++ return ret;
++}
++
++static int soc_camera_enum_fmt_cap(struct file *file, void *priv,
++ struct v4l2_fmtdesc *f)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ const struct soc_camera_data_format *format;
++
++ WARN_ON(priv != file->private_data);
++
++ if (f->index >= icd->ops->num_formats)
++ return -EINVAL;
++
++ format = &icd->ops->formats[f->index];
++
++ strlcpy(f->description, format->name, sizeof(f->description));
++ f->pixelformat = format->fourcc;
++ return 0;
++}
++
++static int soc_camera_g_fmt_cap(struct file *file, void *priv,
++ struct v4l2_format *f)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++
++ WARN_ON(priv != file->private_data);
++
++ f->fmt.pix.width = icd->width;
++ f->fmt.pix.height = icd->height;
++ f->fmt.pix.field = icf->vb_vidq.field;
++ f->fmt.pix.pixelformat = icd->current_fmt->fourcc;
++ f->fmt.pix.bytesperline =
++ (f->fmt.pix.width * icd->current_fmt->depth) >> 3;
++ f->fmt.pix.sizeimage =
++ f->fmt.pix.height * f->fmt.pix.bytesperline;
++ printk("%s: current_fmt->fourcc: 0x%08x\n",
++ __FUNCTION__, icd->current_fmt->fourcc);
++ return 0;
++}
++
++static int soc_camera_querycap(struct file *file, void *priv,
++ struct v4l2_capability *cap)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++
++ WARN_ON(priv != file->private_data);
++
++ strlcpy(cap->driver, ici->drv_name, sizeof(cap->driver));
++ return ici->querycap(ici, cap);
++}
++
++static int soc_camera_streamon(struct file *file, void *priv, enum v4l2_buf_type i)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++// struct vivi_dev *dev = fh->dev;
++
++ WARN_ON(priv != file->private_data);
++
++ pr_debug("%s\n",__FUNCTION__);
++
++ if (i != V4L2_BUF_TYPE_VIDEO_CAPTURE)
++ return -EINVAL;
++
++// if (!res_get(dev,fh))
++// return -EBUSY;
++// CIFR = CIFR_RESET_F | CIFR_FEN0;
++
++ icd->ops->start_capture(icd);
++
++ /* This calls buf_queue from host driver's videobuf_queue_ops */
++ return videobuf_streamon(&icf->vb_vidq);
++}
++
++static int soc_camera_streamoff(struct file *file, void *priv,
++ enum v4l2_buf_type i)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++// struct vivi_dev *dev = fh->dev;
++
++ WARN_ON(priv != file->private_data);
++
++ pr_debug("%s\n",__FUNCTION__);
++
++ if (i != V4L2_BUF_TYPE_VIDEO_CAPTURE)
++ return -EINVAL;
++
++// CICR0 |= CICR0_DIS;
++// while(CICR0 & CICR0_ENB);
++
++ /* This calls buf_release from host driver's videobuf_queue_ops for all
++ * remaining buffers. When the last buffer is freed, stop capture */
++ videobuf_streamoff(&icf->vb_vidq);
++
++ icd->ops->stop_capture(icd);
++
++// res_free(dev,fh);
++
++ return 0;
++}
++
++static int soc_camera_queryctrl(struct file *file, void *priv,
++ struct v4l2_queryctrl *qc)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ int i;
++
++ WARN_ON(priv != file->private_data);
++
++ for (i = 0; i < icd->ops->num_controls; i++)
++ if (qc->id && qc->id == icd->ops->controls[i].id) {
++ memcpy(qc, &(icd->ops->controls[i]),
++ sizeof(*qc));
++ return 0;
++ }
++
++ return -EINVAL;
++}
++
++static int soc_camera_g_ctrl(struct file *file, void *priv,
++ struct v4l2_control *ctrl)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++
++ WARN_ON(priv != file->private_data);
++
++ switch (ctrl->id) {
++ case V4L2_CID_GAIN:
++ if (icd->gain == (unsigned short)~0)
++ return -EINVAL;
++ ctrl->value = icd->gain;
++ return 0;
++ case V4L2_CID_EXPOSURE:
++ if (icd->exposure == (unsigned short)~0)
++ return -EINVAL;
++ ctrl->value = icd->exposure;
++ return 0;
++ }
++
++ if (icd->ops->get_control)
++ return icd->ops->get_control(icd, ctrl);
++ return -EINVAL;
++}
++
++static int soc_camera_s_ctrl(struct file *file, void *priv,
++ struct v4l2_control *ctrl)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++
++ WARN_ON(priv != file->private_data);
++
++ if (icd->ops->set_control)
++ return icd->ops->set_control(icd, ctrl);
++ return -EINVAL;
++}
++
++static int soc_camera_cropcap(struct file *file, void *fh,
++ struct v4l2_cropcap *a)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++
++ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ a->bounds.left = icd->x_min;
++ a->bounds.top = icd->y_min;
++ a->bounds.width = icd->width_max;
++ a->bounds.height = icd->height_max;
++ a->defrect.left = icd->x_min;
++ a->defrect.top = icd->y_min;
++ a->defrect.width = 640;
++ a->defrect.height = 480;
++ a->pixelaspect.numerator = 1;
++ a->pixelaspect.denominator = 1;
++
++ return 0;
++}
++
++static int soc_camera_g_crop(struct file *file, void *fh,
++ struct v4l2_crop *a)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++
++ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ a->c.left = icd->x_current;
++ a->c.top = icd->y_current;
++ a->c.width = icd->width;
++ a->c.height = icd->height;
++
++ return 0;
++}
++
++static int soc_camera_s_crop(struct file *file, void *fh,
++ struct v4l2_crop *a)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct soc_camera_device *icd = icf->icd;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ int ret;
++
++ if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
++ return -EINVAL;
++
++ ret = ici->set_capture_format(icd, 0, &a->c);
++ if (!ret) {
++ icd->width = a->c.width;
++ icd->height = a->c.height;
++ icd->x_current = a->c.left;
++ icd->y_current = a->c.top;
++ }
++
++ return ret;
++}
++
++static int device_register_link(struct soc_camera_device *icd)
++{
++ int ret = device_register(&icd->dev);
++ if (!ret && icd->control)
++ if (sysfs_create_link(&icd->dev.kobj, &icd->control->kobj, "control"))
++ dev_warn(&icd->dev,
++ "Couldn't create a symlink to the control device\n");
++ return ret;
++}
++
++/* The two functions below return: 0 if no match found or a match found and
++ * device_register() successful, error code otherwise */
++static int scan_add_host(struct soc_camera_host *ici)
++{
++ struct soc_camera_device *icd;
++ int ret = 0;
++
++ mutex_lock(&list_lock);
++
++ list_for_each_entry(icd, &devices, list) {
++ if (icd->iface == ici->nr) {
++ ret = 1;
++ icd->dev.parent = &ici->dev;
++ break;
++ }
++ }
++
++ mutex_unlock(&list_lock);
++
++ if (ret)
++ ret = device_register_link(icd);
++
++ return ret;
++}
++
++static int scan_add_device(struct soc_camera_device *icd)
++{
++ struct soc_camera_host *ici;
++ int ret = 0;
++
++ mutex_lock(&list_lock);
++
++ list_add_tail(&icd->list, &devices);
++
++ /* Watch out for class_for_each_device / class_find_device API by
++ * Dave Young <hidave.darkstar@gmail.com> */
++ list_for_each_entry(ici, &hosts, list) {
++ if (icd->iface == ici->nr) {
++ ret = 1;
++ icd->dev.parent = &ici->dev;
++ break;
++ }
++ }
++
++ mutex_unlock(&list_lock);
++
++ if (ret)
++ ret = device_register_link(icd);
++
++ return ret;
++}
++
++static int soc_camera_probe(struct device *dev)
++{
++ struct soc_camera_device *icd = to_soc_camera_dev(dev);
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ int ret;
++
++ if (!icd->probe)
++ return -ENODEV;
++
++ if (!(ret = ici->add(icd)))
++ ret = icd->probe(icd);
++
++ if (!ret) {
++ const struct v4l2_queryctrl *qctrl =
++ soc_camera_find_qctrl(icd->ops, V4L2_CID_GAIN);
++ icd->gain = qctrl ? qctrl->default_value : (unsigned short)~0;
++ qctrl = soc_camera_find_qctrl(icd->ops, V4L2_CID_EXPOSURE);
++ icd->exposure = qctrl ? qctrl->default_value : (unsigned short)~0;
++
++ }
++
++ return ret;
++}
++
++/* This is called on device_unregister, which only means we have to disconnect
++ * from the host, but not remove ourselves from the device list */
++static int soc_camera_remove(struct device *dev)
++{
++ struct soc_camera_device *icd = to_soc_camera_dev(dev);
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++
++ if (icd->remove)
++ icd->remove(icd);
++
++ ici->remove(icd);
++
++ return 0;
++}
++
++static struct bus_type soc_camera_bus_type = {
++ .name = "soc-camera",
++ .probe = soc_camera_probe,
++ .remove = soc_camera_remove,
++};
++
++static struct device_driver ic_drv = {
++ .name = "camera",
++ .bus = &soc_camera_bus_type,
++ .owner = THIS_MODULE,
++};
++
++/*
++ * Image capture host - this is a host device, not a bus device, so,
++ * no bus reference, no probing.
++ */
++static struct class soc_camera_host_class = {
++ .owner = THIS_MODULE,
++ .name = "camera_host",
++};
++
++static void dummy_release(struct device *dev)
++{
++}
++
++int soc_camera_host_register(struct soc_camera_host *ici, struct module *owner)
++{
++ int ret;
++
++ if (!ici->vbq_ops || !ici->add || !ici->remove || !owner)
++ return -EINVAL;
++
++ /* Number might be equal to the platform device ID,
++ * hopefully, device core will fail nicely if we try
++ * to register a second device with the same bus_id */
++#warning "verify whether device_register will fail, or scan the list yourself for duplicate IDs"
++ sprintf(ici->dev.bus_id, "camera_host%d", ici->nr);
++ ici->dev.class = &soc_camera_host_class;
++
++ mutex_lock(&list_lock);
++ list_add_tail(&ici->list, &hosts);
++ mutex_unlock(&list_lock);
++
++ ici->owner = owner;
++ ici->dev.release = dummy_release;
++
++ ret = device_register(&ici->dev);
++
++ if (ret)
++ goto edevr;
++
++ return scan_add_host(ici);
++
++edevr:
++ mutex_lock(&list_lock);
++ list_del(&ici->list);
++ mutex_unlock(&list_lock);
++
++ return ret;
++}
++EXPORT_SYMBOL(soc_camera_host_register);
++
++/* Unregister all clients! */
++void soc_camera_host_unregister(struct soc_camera_host *ici)
++{
++ struct soc_camera_device *icd;
++
++ mutex_lock(&list_lock);
++
++ list_del(&ici->list);
++
++ list_for_each_entry(icd, &devices, list) {
++ printk("list: %p %p\n", icd->dev.parent, &ici->dev);
++ if (icd->dev.parent == &ici->dev) {
++ device_unregister(&icd->dev);
++ /* Not before device_unregister(), .remove
++ * needs parent to call ici->remove() */
++ icd->dev.parent = NULL;
++ }
++ }
++
++ mutex_unlock(&list_lock);
++
++ device_unregister(&ici->dev);
++}
++EXPORT_SYMBOL(soc_camera_host_unregister);
++
++/* Image capture device */
++int soc_camera_device_register(struct soc_camera_device *icd)
++{
++ struct soc_camera_device *ix;
++ int num = -1, i;
++
++ if (!icd)
++ return -EINVAL;
++
++ for (i = 0; i < 256 && num < 0; i++) {
++ num = i;
++ list_for_each_entry(ix, &devices, list) {
++ if (ix->iface == icd->iface && ix->devnum == i) {
++ num = -1;
++ break;
++ }
++ }
++ }
++
++ if (num < 0)
++ /* ok, we have 256 cameras on this host... man, stay reasonable... */
++ return -ENOMEM;
++
++ icd->devnum = num;
++ icd->dev.bus = &soc_camera_bus_type;
++// icd->dev.driver = &ic_drv;
++ snprintf(icd->dev.bus_id, sizeof(icd->dev.bus_id),
++ "%u-%u", icd->iface, icd->devnum);
++
++ icd->dev.release = dummy_release;
++
++ if (icd->ops->get_datawidth)
++ icd->cached_datawidth = icd->ops->get_datawidth(icd);
++
++ return scan_add_device(icd);
++}
++EXPORT_SYMBOL(soc_camera_device_register);
++
++void soc_camera_device_unregister(struct soc_camera_device *icd)
++{
++ mutex_lock(&list_lock);
++ list_del(&icd->list);
++
++ /* The bus->remove will be eventually called */
++ if (icd->dev.parent)
++ device_unregister(&icd->dev);
++ mutex_unlock(&list_lock);
++}
++EXPORT_SYMBOL(soc_camera_device_unregister);
++
++int soc_camera_video_start(struct soc_camera_device *icd)
++{
++ struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent);
++ int err = -ENOMEM;
++ struct video_device *vdev;
++
++ if (!icd->dev.parent)
++ return -ENODEV;
++
++ if (!(vdev = video_device_alloc()))
++ goto evidallocd;
++ dev_dbg(&ici->dev, "%s: Allocated video_device %p\n", __FUNCTION__, vdev);
++
++ strlcpy(vdev->name, ici->drv_name, sizeof(vdev->name));
++ /* Maybe better &ici->dev */
++ vdev->dev = &icd->dev;
++ vdev->type = VID_TYPE_CAPTURE;
++ vdev->current_norm = V4L2_STD_UNKNOWN;
++ vdev->fops = &soc_camera_fops;
++ vdev->release = video_device_release;
++ vdev->minor = -1;
++ vdev->tvnorms = V4L2_STD_UNKNOWN,
++ vdev->vidioc_querycap = soc_camera_querycap;
++ vdev->vidioc_g_fmt_cap = soc_camera_g_fmt_cap;
++ vdev->vidioc_enum_fmt_cap = soc_camera_enum_fmt_cap;
++ vdev->vidioc_s_fmt_cap = soc_camera_s_fmt_cap;
++ vdev->vidioc_enum_input = soc_camera_enum_input;
++ vdev->vidioc_g_input = soc_camera_g_input;
++ vdev->vidioc_s_input = soc_camera_s_input;
++ vdev->vidioc_s_std = soc_camera_s_std;
++ vdev->vidioc_reqbufs = soc_camera_reqbufs;
++ vdev->vidioc_try_fmt_cap = soc_camera_try_fmt_cap;
++ vdev->vidioc_querybuf = soc_camera_querybuf;
++ vdev->vidioc_qbuf = soc_camera_qbuf;
++ vdev->vidioc_dqbuf = soc_camera_dqbuf;
++ vdev->vidioc_streamon = soc_camera_streamon;
++ vdev->vidioc_streamoff = soc_camera_streamoff;
++ vdev->vidioc_queryctrl = soc_camera_queryctrl;
++ vdev->vidioc_g_ctrl = soc_camera_g_ctrl;
++ vdev->vidioc_s_ctrl = soc_camera_s_ctrl;
++ vdev->vidioc_cropcap = soc_camera_cropcap;
++ vdev->vidioc_g_crop = soc_camera_g_crop;
++ vdev->vidioc_s_crop = soc_camera_s_crop;
++
++ icd->current_fmt = &icd->ops->formats[0];
++
++ err = video_register_device(vdev, VFL_TYPE_GRABBER, vdev->minor);
++ if (err < 0) {
++ dev_err(vdev->dev, "%s: video_register_device failed\n", __FUNCTION__);
++ goto evidregd;
++ }
++ icd->vdev = vdev;
++
++ return 0;
++
++evidregd:
++ video_device_release(vdev);
++evidallocd:
++ return err;
++}
++EXPORT_SYMBOL(soc_camera_video_start);
++
++void soc_camera_video_stop(struct soc_camera_device *icd)
++{
++ struct video_device *vdev = icd->vdev;
++
++ dev_dbg(&icd->dev, "%s\n", __FUNCTION__);
++
++ if (!icd->dev.parent || !vdev)
++ return;
++
++ mutex_lock(&video_lock);
++ video_unregister_device(vdev);
++ icd->vdev = NULL;
++ mutex_unlock(&video_lock);
++}
++EXPORT_SYMBOL(soc_camera_video_stop);
++
++static int __init soc_camera_init(void)
++{
++ int ret = bus_register(&soc_camera_bus_type);
++ if (ret)
++ return ret;
++ ret = driver_register(&ic_drv);
++ if (ret)
++ goto edrvr;
++ ret = class_register(&soc_camera_host_class);
++ if (ret)
++ goto eclr;
++
++ return 0;
++
++eclr:
++ driver_unregister(&ic_drv);
++edrvr:
++ bus_unregister(&soc_camera_bus_type);
++ return ret;
++}
++
++static void __exit soc_camera_exit(void)
++{
++ class_unregister(&soc_camera_host_class);
++ driver_unregister(&ic_drv);
++ bus_unregister(&soc_camera_bus_type);
++}
++
++module_init(soc_camera_init);
++module_exit(soc_camera_exit);
++
++MODULE_DESCRIPTION("Image capture bus driver");
++MODULE_AUTHOR("Guennadi Liakhovetski <kernel@pengutronix.de>");
++MODULE_LICENSE("GPL");
+diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
+new file mode 100644
+index 0000000..f416959
+--- /dev/null
++++ b/include/media/soc_camera.h
+@@ -0,0 +1,138 @@
++/*
++ * camera image capture (abstract) bus driver header
++ *
++ * Copyright (C) 2006, Sascha Hauer, Pengutronix
++ * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
++ *
++ * 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.
++ */
++
++#ifndef SOC_CAMERA_H
++#define SOC_CAMERA_H
++
++#include <media/video-buf.h>
++#include <linux/videodev2.h>
++
++struct soc_camera_device {
++ struct list_head list;
++ struct device dev;
++ struct device *control;
++ unsigned short width; /* Current window */
++ unsigned short height; /* sizes */
++ unsigned short x_min; /* Camera capabilities */
++ unsigned short y_min;
++ unsigned short x_current; /* Current window location */
++ unsigned short y_current;
++ unsigned short width_min;
++ unsigned short width_max;
++ unsigned short height_min;
++ unsigned short height_max;
++ unsigned short y_skip_top; /* Lines to skip at the top */
++ unsigned short gain;
++ unsigned short exposure;
++ unsigned char iface; /* Host number */
++ unsigned char devnum; /* Device number per host */
++ unsigned char cached_datawidth; /* See comment in .c */
++ struct soc_camera_ops *ops;
++ struct video_device *vdev;
++ const struct soc_camera_data_format *current_fmt;
++ int (*probe)(struct soc_camera_device *icd);
++ void (*remove)(struct soc_camera_device *icd);
++ struct module *owner;
++};
++
++struct soc_camera_file {
++ struct soc_camera_device *icd;
++ struct videobuf_queue vb_vidq;
++};
++
++struct soc_camera_host {
++ struct list_head list;
++ struct device dev;
++ unsigned char nr; /* Host number */
++ size_t msize;
++ struct videobuf_queue_ops *vbq_ops;
++ struct module *owner;
++ void *priv;
++ char *drv_name;
++ int (*add)(struct soc_camera_device *);
++ void (*remove)(struct soc_camera_device *);
++ int (*set_capture_format)(struct soc_camera_device *, __u32,
++ struct v4l2_rect *);
++ int (*try_fmt_cap)(struct soc_camera_host *, struct v4l2_format *);
++ int (*reqbufs)(struct soc_camera_file *, struct v4l2_requestbuffers *);
++ int (*querycap)(struct soc_camera_host *, struct v4l2_capability *);
++ unsigned int (*poll)(struct file *, poll_table *);
++};
++
++struct soc_camera_link {
++ int bus_id;
++ struct i2c_client **extender;
++};
++
++static inline struct soc_camera_device *to_soc_camera_dev(struct device *dev)
++{
++ return container_of(dev, struct soc_camera_device, dev);
++}
++
++static inline struct soc_camera_host *to_soc_camera_host(struct device *dev)
++{
++ return container_of(dev, struct soc_camera_host, dev);
++}
++
++extern int soc_camera_host_register(struct soc_camera_host *ici, struct module *owner);
++extern void soc_camera_host_unregister(struct soc_camera_host *ici);
++extern int soc_camera_device_register(struct soc_camera_device *icd);
++extern void soc_camera_device_unregister(struct soc_camera_device *icd);
++
++extern int soc_camera_video_start(struct soc_camera_device *icd);
++extern void soc_camera_video_stop(struct soc_camera_device *icd);
++
++struct soc_camera_data_format {
++ char *name;
++ unsigned int depth;
++ __u32 fourcc;
++ enum v4l2_colorspace colorspace;
++};
++
++struct soc_camera_ops {
++ struct module *owner;
++ int (*init)(struct soc_camera_device *);
++ int (*release)(struct soc_camera_device *);
++ int (*start_capture)(struct soc_camera_device *);
++ int (*stop_capture)(struct soc_camera_device *);
++ int (*set_capture_format)(struct soc_camera_device *, __u32,
++ struct v4l2_rect *, unsigned int);
++ int (*try_fmt_cap)(struct soc_camera_device *, struct v4l2_format *);
++ const struct soc_camera_data_format *formats;
++ int num_formats;
++ int (*get_control)(struct soc_camera_device *, struct v4l2_control *);
++ int (*set_control)(struct soc_camera_device *, struct v4l2_control *);
++ const struct v4l2_queryctrl *controls;
++ int num_controls;
++ unsigned int(*get_datawidth)(struct soc_camera_device *icd);
++};
++
++static inline struct v4l2_queryctrl const *soc_camera_find_qctrl(
++ struct soc_camera_ops *ops, int id)
++{
++ int i;
++
++ for (i = 0; i < ops->num_controls; i++)
++ if (ops->controls[i].id == id)
++ return &ops->controls[i];
++
++ return NULL;
++}
++
++#define IS_MASTER (1<<0)
++#define IS_HSYNC_ACTIVE_HIGH (1<<1)
++#define IS_VSYNC_ACTIVE_HIGH (1<<2)
++#define IS_DATAWIDTH_8 (1<<3)
++#define IS_DATAWIDTH_9 (1<<4)
++#define IS_DATAWIDTH_10 (1<<5)
++#define IS_PCLK_SAMPLE_RISING (1<<6)
++
++#endif
+--
+1.5.3.4
+
+--
+video4linux-list mailing list
+Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
+https://www.redhat.com/mailman/listinfo/video4linux-list
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxav4l2-8.patch.eml b/packages/linux/linux-ezx-2.6.24/patches/pxav4l2-8.patch.eml
new file mode 100644
index 0000000000..a681d2ad2e
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxav4l2-8.patch.eml
@@ -0,0 +1,1330 @@
+Path: news.gmane.org!not-for-mail
+From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+Newsgroups: gmane.comp.video.video4linux
+Subject: [RFC PATCH 2/8] V4L2 soc_camera driver for PXA27x processors
+Date: Wed, 23 Jan 2008 18:41:30 +0100 (CET)
+Lines: 1259
+Approved: news@gmane.org
+Message-ID: <Pine.LNX.4.64.0801231816430.4932@axis700.grange>
+References: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: ger.gmane.org 1201110136 28805 80.91.229.12 (23 Jan 2008 17:42:16 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Wed, 23 Jan 2008 17:42:16 +0000 (UTC)
+To: video4linux-list@redhat.com
+Original-X-From: video4linux-list-bounces@redhat.com Wed Jan 23 18:42:35 2008
+Return-path: <video4linux-list-bounces@redhat.com>
+Envelope-to: rh-video4linux-list@gmane.org
+Original-Received: from hormel.redhat.com ([209.132.177.30])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1JHjc5-0002rt-JS
+ for rh-video4linux-list@gmane.org; Wed, 23 Jan 2008 18:42:14 +0100
+Original-Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110])
+ by hormel.redhat.com (Postfix) with ESMTP
+ id 2A84F730D3; Wed, 23 Jan 2008 12:41:44 -0500 (EST)
+Original-Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
+ [172.16.52.254])
+ by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id
+ m0NHffgW017091 for <video4linux-list@listman.util.phx.redhat.com>;
+ Wed, 23 Jan 2008 12:41:41 -0500
+Original-Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
+ by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m0NHffAN027831
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:41 -0500
+Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
+ by mx3.redhat.com (8.13.1/8.13.1) with SMTP id m0NHfHEp000673
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:18 -0500
+Original-Received: (qmail invoked by alias); 23 Jan 2008 17:41:10 -0000
+Original-Received: from p57BD2F1F.dip0.t-ipconnect.de (EHLO axis700.grange)
+ [87.189.47.31]
+ by mail.gmx.net (mp032) with SMTP; 23 Jan 2008 18:41:10 +0100
+X-Authenticated: #20450766
+X-Provags-ID: V01U2FsdGVkX1+0is8xDaK0Koc8XTQH0vhXxt8dgUbjrW8SVR/i+1
+ dGRci20BqQXyog
+Original-Received: from lyakh (helo=localhost)
+ by axis700.grange with local-esmtp (Exim 4.63)
+ (envelope-from <g.liakhovetski@gmx.de>) id 1JHjbO-00029q-7k
+ for video4linux-list@redhat.com; Wed, 23 Jan 2008 18:41:30 +0100
+X-X-Sender: lyakh@axis700.grange
+In-Reply-To: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+X-Y-GMX-Trusted: 0
+X-RedHat-Spam-Score: 0
+X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
+X-Scanned-By: MIMEDefang 2.58 on 172.16.48.32
+X-loop: video4linux-list@redhat.com
+X-BeenThere: video4linux-list@redhat.com
+X-Mailman-Version: 2.1.5
+Precedence: junk
+List-Id: Linux and Kernel Video <video4linux-list.redhat.com>
+List-Unsubscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=unsubscribe>
+List-Archive: <https://www.redhat.com/mailman/private/video4linux-list>
+List-Post: <mailto:video4linux-list@redhat.com>
+List-Help: <mailto:video4linux-list-request@redhat.com?subject=help>
+List-Subscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=subscribe>
+Original-Sender: video4linux-list-bounces@redhat.com
+Errors-To: video4linux-list-bounces@redhat.com
+Xref: news.gmane.org gmane.comp.video.video4linux:36472
+Archived-At: <http://permalink.gmane.org/gmane.comp.video.video4linux/36472>
+
+This patch adds a driver for the Quick Capture Interface on the PXA270. It
+is based on the original driver from Intel, but has been re-worked
+multiple times since then, this time with the V4L2 API support.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+---
+ drivers/media/video/Kconfig | 8 +
+ drivers/media/video/Makefile | 1 +
+ drivers/media/video/pxa_camera.c | 895 +++++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-pxa/pxa-regs.h | 94 ++++
+ include/asm-arm/arch-pxa/pxa_cif.h | 48 ++
+ 5 files changed, 1046 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/media/video/pxa_camera.c
+ create mode 100644 include/asm-arm/arch-pxa/pxa_cif.h
+
+diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
+index be54183..dc0dfec 100644
+--- a/drivers/media/video/Kconfig
++++ b/drivers/media/video/Kconfig
+@@ -803,4 +803,12 @@ config SOC_CAMERA
+ over a bus like PCI or USB. For example some i2c camera hanging
+ directly on the data bus of an SoC.
+
++config VIDEO_PXA27X
++ tristate "PXA27x Quick Capture Interface driver"
++ depends on VIDEO_DEV && PXA27x
++ select VIDEO_BUF
++ select SOC_CAMERA
++ ---help---
++ This is a v4l2 driver for the PXA27x Quick Capture Interface
++
+ endif # VIDEO_CAPTURE_DRIVERS
+diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
+index 97a9135..81b7cd6 100644
+--- a/drivers/media/video/Makefile
++++ b/drivers/media/video/Makefile
+@@ -116,6 +116,7 @@ obj-$(CONFIG_USB_QUICKCAM_MESSENGER) += usbvideo/
+
+ obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+
++obj-$(CONFIG_VIDEO_PXA27X) += pxa_camera.o
+ obj-$(CONFIG_SOC_CAMERA) += soc_camera.o
+
+ EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
+diff --git a/drivers/media/video/pxa_camera.c b/drivers/media/video/pxa_camera.c
+new file mode 100644
+index 0000000..78927fb
+--- /dev/null
++++ b/drivers/media/video/pxa_camera.c
+@@ -0,0 +1,895 @@
++/*
++ * V4L2 Driver for PXA camera host
++ *
++ * Copyright (C) 2006, Sascha Hauer, Pengutronix
++ * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
++ *
++ * 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 <asm/io.h>
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/delay.h>
++#include <linux/dma-mapping.h>
++#include <linux/errno.h>
++#include <linux/fs.h>
++#include <linux/interrupt.h>
++#include <linux/kernel.h>
++#include <linux/mm.h>
++#include <linux/moduleparam.h>
++#include <linux/time.h>
++#include <linux/version.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++#include <linux/mutex.h>
++
++#include <media/v4l2-common.h>
++#include <media/v4l2-dev.h>
++#include <media/soc_camera.h>
++
++#include <linux/videodev.h>
++#include <linux/video_decoder.h>
++
++#include <asm/dma.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxa_cif.h>
++
++#define PXA_CAM_VERSION_CODE KERNEL_VERSION(0, 0, 5)
++#define PXA_CAM_DRV_NAME "pxa2xx-camera"
++
++#define CICR0_IRQ_MASK (CICR0_TOM | CICR0_RDAVM | CICR0_FEM | CICR0_EOLM | \
++ CICR0_PERRM | CICR0_QDM | CICR0_CDM | CICR0_SOFM | \
++ CICR0_EOFM | CICR0_FOM)
++
++/*
++ * Structures
++ */
++
++/* buffer for one video frame */
++struct pxa_buffer {
++ /* common v4l buffer stuff -- must be first */
++ struct videobuf_buffer vb;
++
++ const struct soc_camera_data_format *fmt;
++
++ /* our descriptor list needed for the PXA DMA engine */
++ dma_addr_t sg_dma;
++ struct pxa_dma_desc *sg_cpu;
++ size_t sg_size;
++ int inwork;
++};
++
++struct pxa_framebuffer_queue {
++ dma_addr_t sg_last_dma;
++ struct pxa_dma_desc *sg_last_cpu;
++};
++
++struct pxa_camera_dev {
++ struct device *dev;
++
++ unsigned int irq;
++ void __iomem *base;
++ unsigned int dma_chan_y;
++
++ enum v4l2_buf_type type;
++
++ struct pxacamera_platform_data *pdata;
++ struct resource *res;
++ unsigned long platform_flags;
++ unsigned long platform_mclk_10khz;
++
++ struct list_head capture;
++
++ spinlock_t lock;
++
++ int dma_running;
++
++ struct pxa_buffer *active;
++};
++
++static const char *pxa_cam_driver_description = "PXA_Camera";
++
++static unsigned int vid_limit = 16; /* Video memory limit, in Mb */
++
++/*
++ * Videobuf operations
++ */
++static int
++pxa_videobuf_setup(struct videobuf_queue *vq, unsigned int *count, unsigned int *size)
++{
++ struct soc_camera_device *icd = vq->priv_data;
++
++ pr_debug("%s: count=%d, size=%d\n", __FUNCTION__, *count, *size);
++
++ *size = icd->width * icd->height * ((icd->current_fmt->depth + 7) >> 3);
++
++ if (0 == *count)
++ *count = 32;
++ while (*size * *count > vid_limit * 1024 * 1024)
++ (*count)--;
++
++ return 0;
++}
++
++static void free_buffer(struct videobuf_queue *vq, struct pxa_buffer *buf)
++{
++ struct soc_camera_device *icd = vq->priv_data;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ struct pxa_camera_dev *pcdev = ici->priv;
++
++ BUG_ON(in_interrupt());
++
++ pr_debug("%s (vb=0x%p) 0x%08lx %d\n",__FUNCTION__, &buf->vb, buf->vb.baddr, buf->vb.bsize);
++
++ /* This waits until this buffer is out of danger, i.e., until it is no longer
++ * in STATE_QUEUED or STATE_ACTIVE */
++ videobuf_waiton(&buf->vb, 0, 0);
++ videobuf_dma_unmap(vq, &buf->vb.dma);
++ videobuf_dma_free(&buf->vb.dma);
++
++ if (buf->sg_cpu)
++ dma_free_coherent(pcdev->dev, buf->sg_size, buf->sg_cpu, buf->sg_dma);
++ buf->sg_cpu = NULL;
++
++ buf->vb.state = STATE_NEEDS_INIT;
++}
++
++static int
++pxa_videobuf_prepare(struct videobuf_queue *vq, struct videobuf_buffer *vb,
++ enum v4l2_field field)
++{
++ struct soc_camera_device *icd = vq->priv_data;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ struct pxa_camera_dev *pcdev = ici->priv;
++ struct pxa_buffer *buf = container_of(vb, struct pxa_buffer, vb);
++// unsigned long flags;
++ int i, ret;
++
++ pr_debug("%s (vb=0x%p) 0x%08lx %d\n",__FUNCTION__, vb, vb->baddr, vb->bsize);
++
++ /* Added list head initialization on alloc */
++ WARN_ON(!list_empty(&vb->queue));
++
++#ifdef DEBUG
++ /* This can be useful if you want to see if we actually fill
++ * the buffer with something */
++ memset((void *)vb->baddr, 0xaa, vb->bsize);
++#endif
++
++ BUG_ON(NULL == icd->current_fmt);
++
++ /* I think, in buf_prepare you only have to protect global data,
++ * the actual buffer is yours */
++// spin_lock_irqsave(&pcdev->lock, flags);
++ buf->inwork = 1;
++
++ if (buf->fmt != icd->current_fmt ||
++ vb->width != icd->width ||
++ vb->height != icd->height ||
++ vb->field != field) {
++ buf->fmt = icd->current_fmt;
++ vb->width = icd->width;
++ vb->height = icd->height;
++ vb->field = field;
++ vb->state = STATE_NEEDS_INIT;
++ }
++
++ vb->size = vb->width * vb->height * ((buf->fmt->depth + 7) >> 3);
++ if (0 != vb->baddr && vb->bsize < vb->size) {
++ ret = -EINVAL;
++ goto out;
++ }
++
++ if (vb->state == STATE_NEEDS_INIT) {
++ unsigned int size = vb->size;
++
++ if (0 != (ret = videobuf_iolock(vq, vb, NULL)))
++ goto fail;
++
++ if (buf->sg_cpu)
++ dma_free_coherent(pcdev->dev, buf->sg_size, buf->sg_cpu, buf->sg_dma);
++
++ buf->sg_size = (vb->dma.sglen + 1) * sizeof(struct pxa_dma_desc);
++ buf->sg_cpu = dma_alloc_coherent(pcdev->dev,
++ buf->sg_size,
++ &buf->sg_dma, GFP_KERNEL);
++ if (!buf->sg_cpu) {
++ ret = -ENOMEM;
++ goto fail;
++ }
++
++ pr_debug("%s nents=%d size: %d sg=0x%p\n", __FUNCTION__, vb->dma.sglen, size, vb->dma.sglist);
++ for (i = 0; i < vb->dma.sglen; i++ ) {
++ struct scatterlist *sg = vb->dma.sglist;
++ unsigned int dma_len = sg_dma_len(&sg[i]), xfer_len;
++
++ BUG_ON(!sg[i].page);
++
++ sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset;
++
++ buf->sg_cpu[i].dsadr = pcdev->res->start + 0x28; /* CIBR0 */
++ buf->sg_cpu[i].dtadr = sg_dma_address(&sg[i]);
++ /* PXA27x Developer's Manual 27.4.4.1: round up to 8 bytes */
++// xfer_len = (min(dma_len, size) + 7) & ~7;
++ xfer_len = min(dma_len, size);
++ if (xfer_len & 7)
++ dev_err(&icd->dev, "Unaligned buffer: dma_len %u, size %u\n",
++ dma_len, size);
++ buf->sg_cpu[i].dcmd = DCMD_FLOWSRC | DCMD_BURST8 | DCMD_INCTRGADDR |
++ xfer_len;
++ size -= dma_len;
++ buf->sg_cpu[i].ddadr = buf->sg_dma + (i + 1) *
++ sizeof(struct pxa_dma_desc);
++ }
++ buf->sg_cpu[vb->dma.sglen - 1].ddadr = DDADR_STOP;
++ buf->sg_cpu[vb->dma.sglen - 1].dcmd |= DCMD_ENDIRQEN;
++
++ vb->state = STATE_PREPARED;
++ }
++
++ buf->inwork = 0;
++// spin_unlock_irqrestore(&pcdev->lock, flags);
++
++ return 0;
++
++fail:
++ free_buffer(vq,buf);
++out:
++ buf->inwork = 0;
++// spin_unlock_irqrestore(&pcdev->lock, flags);
++ return ret;
++}
++
++static void
++pxa_videobuf_queue(struct videobuf_queue *vq, struct videobuf_buffer *vb)
++{
++ struct soc_camera_device *icd = vq->priv_data;
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ struct pxa_camera_dev *pcdev = ici->priv;
++ struct pxa_buffer *buf = container_of(vb,struct pxa_buffer,vb);
++ struct pxa_buffer *active = pcdev->active;
++ int nents = vb->dma.sglen;
++ unsigned long flags;
++
++ pr_debug("%s (vb=0x%p) 0x%08lx %d\n",__FUNCTION__, vb, vb->baddr, vb->bsize);
++ spin_lock_irqsave(&pcdev->lock, flags);
++
++ list_add_tail(&vb->queue, &pcdev->capture);
++
++ vb->state = STATE_ACTIVE;
++
++ if (!pcdev->active) {
++ CIFR |= CIFR_RESET_F;
++ DDADR(pcdev->dma_chan_y) = buf->sg_dma;
++ DCSR(pcdev->dma_chan_y) = DCSR_RUN;
++ pcdev->active = buf;
++ CICR0 |= CICR0_ENB;
++ } else {
++ /* Stop DMA engine */
++ DCSR(pcdev->dma_chan_y) = 0;
++
++ /* Add the descriptors we just initialized to the currently
++ * running chain
++ */
++ pcdev->active->sg_cpu[active->vb.dma.sglen - 1].ddadr = buf->sg_dma;
++
++ /* Setup a dummy descriptor with the DMA engines current
++ * state
++ */
++ buf->sg_cpu[nents].dsadr = pcdev->res->start + 0x28; /* CIBR0 */
++ buf->sg_cpu[nents].dtadr = DTADR(pcdev->dma_chan_y);
++ buf->sg_cpu[nents].dcmd = DCMD(pcdev->dma_chan_y);
++
++ if (DDADR(pcdev->dma_chan_y) == DDADR_STOP) {
++ /* The DMA engine is on the last descriptor, set the
++ * next descriptors address to the descriptors
++ * we just initialized
++ */
++ buf->sg_cpu[nents].ddadr = buf->sg_dma;
++ } else {
++ buf->sg_cpu[nents].ddadr = DDADR(pcdev->dma_chan_y);
++ }
++
++ /* The next descriptor is the dummy descriptor */
++ DDADR(pcdev->dma_chan_y) = buf->sg_dma + nents *
++ sizeof(struct pxa_dma_desc);
++
++ DCSR(pcdev->dma_chan_y) = DCSR_RUN;
++#if 0
++ if(CISR & CISR_IFO_0) {
++ printk("%s: fifo ovl. repeat last\n",__FUNCTION__);
++ DDADR(pcdev->dma_chan_y) = pcdev->active->sg_dma;
++
++ CICR0 &= ~CICR0_ENB;
++ CIFR |= CIFR_RESET_F;
++ DCSR(pcdev->dma_chan_y) = DCSR_RUN;
++ CICR0 |= CICR0_ENB;
++ } else {
++ DCSR(pcdev->dma_chan_y) = DCSR_RUN;
++// printk("no fifo ovl\n");
++ }
++#endif
++ }
++
++ spin_unlock_irqrestore(&pcdev->lock, flags);
++
++}
++
++static void pxa_videobuf_release(struct videobuf_queue *vq, struct videobuf_buffer *vb)
++{
++ struct pxa_buffer *buf = container_of(vb, struct pxa_buffer, vb);
++
++ pr_debug("%s (vb=0x%p) 0x%08lx %d\n",__FUNCTION__,vb, vb->baddr, vb->bsize);
++
++#ifdef DEBUG
++ switch(vb->state) {
++ case STATE_ACTIVE:
++ printk("%s (active)\n",__FUNCTION__);
++ break;
++ case STATE_QUEUED:
++ printk("%s (queued)\n",__FUNCTION__);
++ break;
++ case STATE_PREPARED:
++ printk("%s (prepared)\n",__FUNCTION__);
++ break;
++ default:
++ printk("%s (unknown)\n",__FUNCTION__);
++ break;
++ }
++#endif
++
++ free_buffer(vq, buf);
++}
++
++static int pxa_videobuf_map_sg(void *dev, struct scatterlist *sg, int nents,
++ int direction)
++{
++ pr_debug("%s, number of pages=%d\n", __FUNCTION__,nents);
++ BUG_ON(direction == DMA_NONE);
++
++ dma_map_sg(dev, sg, nents, DMA_FROM_DEVICE);
++
++ return nents;
++}
++
++static int pxa_videobuf_unmap_sg(void *dev, struct scatterlist *sg, int nents,
++ int direction)
++{
++ pr_debug("%s\n", __FUNCTION__);
++ dma_unmap_sg(dev, sg, nents, DMA_FROM_DEVICE);
++ return 0;
++}
++
++static int pxa_videobuf_dma_sync_sg(void *dev, struct scatterlist *sg, int nents,
++ int direction)
++{
++ return 0;
++}
++
++static void pxa_camera_dma_irq_y(int channel, void *data)
++{
++ struct pxa_camera_dev *pcdev = data;
++ struct pxa_buffer *buf;
++ unsigned long flags;
++ unsigned int status;
++ struct videobuf_buffer *vb;
++
++ spin_lock_irqsave(&pcdev->lock, flags);
++
++ status = DCSR(pcdev->dma_chan_y);
++ if (status & DCSR_BUSERR) {
++ printk("%s: Bus Error\n",__FUNCTION__);
++ DCSR(pcdev->dma_chan_y) |= DCSR_BUSERR;
++ goto out;
++ }
++
++ if (!(status & DCSR_ENDINTR)) {
++ printk("%s: unknown dma interrupt source. status: 0x%08x\n",
++ __FUNCTION__, status);
++ goto out;
++ }
++
++ DCSR(pcdev->dma_chan_y) |= DCSR_ENDINTR;
++
++ if (!pcdev->active) {
++ printk("%s: no active buf\n",__FUNCTION__);
++ goto out;
++ }
++
++ vb = &pcdev->active->vb;
++ buf = container_of(vb, struct pxa_buffer, vb);
++ WARN_ON(buf->inwork || list_empty(&vb->queue));
++ pr_debug("%s (vb=0x%p) 0x%08lx %d\n",__FUNCTION__,vb, vb->baddr, vb->bsize);
++
++ /* _init is used to debug races, see comment in pxa_is_reqbufs() */
++ list_del_init(&vb->queue);
++ vb->state = STATE_DONE;
++ do_gettimeofday(&vb->ts);
++ vb->field_count++;
++ wake_up(&vb->done);
++
++ if (list_empty(&pcdev->capture)) {
++ pcdev->active = NULL;
++ DCSR(pcdev->dma_chan_y) = 0;
++ CICR0 &= ~CICR0_ENB;
++ goto out;
++ }
++
++ pcdev->active = list_entry(pcdev->capture.next, struct pxa_buffer, vb.queue);
++
++out:
++ spin_unlock_irqrestore(&pcdev->lock, flags);
++}
++
++static struct videobuf_queue_ops pxa_video_ops = {
++ .buf_setup = pxa_videobuf_setup,
++ .buf_prepare = pxa_videobuf_prepare,
++ .buf_queue = pxa_videobuf_queue,
++ .buf_release = pxa_videobuf_release,
++
++ /* Non-pci handling routines */
++ .vb_map_sg = pxa_videobuf_map_sg,
++ .vb_dma_sync_sg = pxa_videobuf_dma_sync_sg,
++ .vb_unmap_sg = pxa_videobuf_unmap_sg,
++};
++
++static int mclk_get_divisor(unsigned int mclk_10khz)
++{
++ unsigned long div;
++ unsigned long lcdclk;
++
++ lcdclk = get_lcdclk_frequency_10khz();
++
++ /* We verify platform_mclk_10khz != 0, so this is only against future bugs */
++ if (unlikely(!mclk_10khz))
++ return 0;
++
++ div = (lcdclk + 2 * mclk_10khz - 1) / (2 * mclk_10khz) - 1;
++
++ pr_debug("pxa_camera: LCD clock %lukHz, platform target freq %dkHz, divisor %lu\n",
++ lcdclk * 10, mclk_10khz * 10, div);
++
++ return div;
++}
++
++static void pxa_is_activate(struct pxa_camera_dev *pcdev)
++{
++ struct pxacamera_platform_data *pdata = pcdev->pdata;
++
++ printk("Registered platform device at %p data %p\n", pcdev, pdata);
++
++ if (pdata && pdata->init) {
++ dev_dbg(pcdev->dev, "%s: Init gpios\n", __FUNCTION__);
++ pdata->init(pcdev->dev);
++ }
++
++ if (pdata && pdata->power) {
++ dev_dbg(pcdev->dev, "%s: Power on camera\n", __FUNCTION__);
++ pdata->power(pcdev->dev, 1);
++ }
++
++ if (pdata && pdata->reset) {
++ dev_dbg(pcdev->dev, "%s: Releasing camera reset\n", __FUNCTION__);
++ pdata->reset(pcdev->dev, 1);
++ }
++
++ CICR0 = 0x3FF; /* disable all interrupts */
++ pxa_set_cken(CKEN_CAMERA, 1);
++}
++
++static void pxa_is_deactivate(struct pxa_camera_dev *pdev)
++{
++ struct pxacamera_platform_data *board = pdev->pdata;
++
++ pxa_set_cken(CKEN_CAMERA, 0);
++/*
++ dev_dbg(&pdev->dev, "%s: Asserting camera reset\n", __FUNCTION__);
++ if (board && board->reset) {
++ board->reset(&pdev->dev, 0);
++ }
++*/
++ dev_dbg(pdev->dev, "%s: Power off camera\n", __FUNCTION__);
++ if (board && board->power)
++ board->power(pdev->dev, 0);
++}
++
++static irqreturn_t pxa_camera_irq(int irq, void *data)
++{
++// struct pxa_camera_dev *pcdev = (struct pxa_camera_dev *)data;
++// printk("%s: 0x%08x\n",__FUNCTION__,CISR);
++ unsigned int status = CISR;
++// if(status & CISR_SOF) printk("Start of frame\n");
++// if(status & CISR_EOF) printk("End of frame\n");
++// printk("%s 0x%08x\n",__FUNCTION__,status);
++ CISR = status;
++
++ return IRQ_HANDLED;
++}
++
++/* The following two functions absolutely depend on the fact, that
++ * there can be only one camera on PXA quick capture interface */
++static int pxa_is_add_device(struct soc_camera_device *icd)
++{
++ struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent);
++ struct pxa_camera_dev *pcdev = ici->priv;
++
++ dev_info(&icd->dev, "PXA Camera driver loaded for host %d\n",
++ icd->iface);
++
++ pxa_is_activate(pcdev);
++// udelay(200);
++ return icd->ops->init(icd);
++}
++
++static void pxa_is_remove_device(struct soc_camera_device *icd)
++{
++ struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent);
++ struct pxa_camera_dev *pcdev = ici->priv;
++
++ dev_dbg(pcdev->dev, "%s\n", __FUNCTION__);
++
++ /* disable capture, disable interrupts */
++ CICR0 = 0x3ff;
++ /* Stop DMA engine */
++ DCSR(pcdev->dma_chan_y) = 0;
++
++ icd->ops->release(icd);
++
++ pxa_is_deactivate(pcdev);
++}
++
++static int pxa_is_set_capture_format(struct soc_camera_device *icd,
++ __u32 pixfmt, struct v4l2_rect *rect)
++{
++ struct soc_camera_host *ici =
++ to_soc_camera_host(icd->dev.parent);
++ struct pxa_camera_dev *pcdev = ici->priv;
++ unsigned int datawidth = 0, dw, bpp;
++ u32 cicr0, cicr4 = 0;
++ int ret;
++
++ /* If requested data width is supported by the platform, use it */
++ switch (icd->cached_datawidth) {
++ case 10:
++ if (pcdev->platform_flags & PXACIF_DATAWIDTH_10)
++ datawidth = IS_DATAWIDTH_10;
++ break;
++ case 9:
++ if (pcdev->platform_flags & PXACIF_DATAWIDTH_9)
++ datawidth = IS_DATAWIDTH_9;
++ break;
++ case 8:
++ if (pcdev->platform_flags & PXACIF_DATAWIDTH_8)
++ datawidth = IS_DATAWIDTH_8;
++ }
++ if (!datawidth)
++ return -EINVAL;
++
++ ret = icd->ops->set_capture_format(icd, pixfmt, rect,
++ datawidth |
++ (pcdev->platform_flags & PXACIF_MASTER ?
++ IS_MASTER : 0) |
++ (pcdev->platform_flags & PXACIF_HSP ?
++ 0 : IS_HSYNC_ACTIVE_HIGH) |
++ (pcdev->platform_flags & PXACIF_VSP ?
++ 0 : IS_VSYNC_ACTIVE_HIGH) |
++ (pcdev->platform_flags & PXACIF_PCP ?
++ 0 : IS_PCLK_SAMPLE_RISING));
++ if (ret < 0)
++ return ret;
++
++ /* Datawidth is now guaranteed to be equal to one of the three values.
++ * We fix bit-per-pixel equal to data-width... */
++ switch (datawidth) {
++ case IS_DATAWIDTH_10:
++ icd->cached_datawidth = 10;
++ dw = 4;
++ bpp = 0x40;
++ break;
++ case IS_DATAWIDTH_9:
++ icd->cached_datawidth = 9;
++ dw = 3;
++ bpp = 0x20;
++ break;
++ case IS_DATAWIDTH_8:
++ icd->cached_datawidth = 8;
++ dw = 2;
++ bpp = 0;
++ }
++
++ if (pcdev->platform_flags & PXACIF_PCLK_EN)
++ cicr4 |= CICR4_PCLK_EN;
++ if (pcdev->platform_flags & PXACIF_MCLK_EN)
++ cicr4 |= CICR4_MCLK_EN;
++ if (pcdev->platform_flags & PXACIF_PCP)
++ cicr4 |= CICR4_PCP;
++ if (pcdev->platform_flags & PXACIF_HSP)
++ cicr4 |= CICR4_HSP;
++ if (pcdev->platform_flags & PXACIF_VSP)
++ cicr4 |= CICR4_VSP;
++
++ cicr0 = CICR0;
++ if (cicr0 & CICR0_ENB)
++ CICR0 = cicr0 & ~CICR0_ENB;
++ CICR1 = CICR1_PPL_VAL(rect->width - 1) | bpp | dw;
++ CICR2 = 0;
++ CICR3 = CICR3_LPF_VAL(rect->height - 1) |
++ CICR3_BFW_VAL(min((unsigned short)255, icd->y_skip_top));
++ CICR4 = mclk_get_divisor(pcdev->platform_mclk_10khz) | cicr4;
++
++ /* CIF interrupts are not used, only DMA */
++ CICR0 = (pcdev->platform_flags & PXACIF_MASTER ?
++ 0 : (CICR0_SL_CAP_EN | CICR0_SIM_SP)) |
++ CICR0_DMAEN | CICR0_IRQ_MASK | (cicr0 & CICR0_ENB);
++
++ return 0;
++}
++
++static int pxa_is_try_fmt_cap(struct soc_camera_host *ici, struct v4l2_format *f)
++{
++ /* limit to pxa hardware capabilities */
++ if (f->fmt.pix.height < 32)
++ f->fmt.pix.height = 32;
++ if (f->fmt.pix.height > 2048)
++ f->fmt.pix.height = 2048;
++ if (f->fmt.pix.width < 48)
++ f->fmt.pix.width = 48;
++ if (f->fmt.pix.width > 2048)
++ f->fmt.pix.width = 2048;
++ f->fmt.pix.width &= ~0x01;
++
++ return 0;
++}
++
++static int pxa_is_reqbufs(struct soc_camera_file *icf, struct v4l2_requestbuffers *p)
++{
++ int i;
++
++ /* This is for locking debugging only. I removed spinlocks and now I
++ * check whether .prepare is ever called on a linked buffer, or whether
++ * a dma IRQ can occur for an in-work or unlinked buffer. Until now
++ * it hadn't triggered */
++ for (i = 0; i < p->count; i++) {
++ struct pxa_buffer *buf = container_of(icf->vb_vidq.bufs[i],
++ struct pxa_buffer, vb);
++ buf->inwork = 0;
++ INIT_LIST_HEAD(&buf->vb.queue);
++ }
++
++ return 0;
++}
++
++static unsigned int pxa_is_poll(struct file *file, poll_table *pt)
++{
++ struct soc_camera_file *icf = file->private_data;
++ struct pxa_buffer *buf;
++
++ buf = list_entry(icf->vb_vidq.stream.next, struct pxa_buffer, vb.stream);
++
++ poll_wait(file, &buf->vb.done, pt);
++
++ if (buf->vb.state == STATE_DONE ||
++ buf->vb.state == STATE_ERROR)
++ return POLLIN|POLLRDNORM;
++
++ return 0;
++}
++
++static int pxa_is_querycap(struct soc_camera_host *ici,
++ struct v4l2_capability *cap)
++{
++ /* cap->name is set by the firendly caller:-> */
++ strlcpy(cap->card, pxa_cam_driver_description, sizeof(cap->card));
++ cap->version = PXA_CAM_VERSION_CODE;
++ cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
++
++ return 0;
++}
++
++/* Should beallocated dynamically too, but we have only one. */
++static struct soc_camera_host pxa_soc_camera_host = {
++ .drv_name = PXA_CAM_DRV_NAME,
++ .vbq_ops = &pxa_video_ops,
++ .add = pxa_is_add_device,
++ .remove = pxa_is_remove_device,
++ .msize = sizeof(struct pxa_buffer),
++ .set_capture_format = pxa_is_set_capture_format,
++ .try_fmt_cap = pxa_is_try_fmt_cap,
++ .reqbufs = pxa_is_reqbufs,
++ .poll = pxa_is_poll,
++ .querycap = pxa_is_querycap,
++};
++
++static int pxa_camera_probe(struct platform_device *pdev)
++{
++ struct pxa_camera_dev *pcdev;
++ struct resource *res;
++ void __iomem *base;
++ unsigned int irq;
++ int err = 0;
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ irq = platform_get_irq(pdev, 0);
++ if (!res || !irq) {
++ err = -ENODEV;
++ goto exit;
++ }
++
++ pcdev = kzalloc(sizeof(*pcdev), GFP_KERNEL);
++ if (!pcdev) {
++ dev_err(&pdev->dev, "%s: Could not allocate pcdev\n", __FUNCTION__);
++ err = -ENOMEM;
++ goto exit;
++ }
++
++ dev_set_drvdata(&pdev->dev, pcdev);
++ pcdev->res = res;
++
++ pcdev->pdata = pdev->dev.platform_data;
++ pcdev->platform_flags = pcdev->pdata->flags;
++ if (! pcdev->platform_flags & (PXACIF_DATAWIDTH_8 | PXACIF_DATAWIDTH_9 |
++ PXACIF_DATAWIDTH_10)) {
++ /* Platform hasn't set available data widths. This is bad.
++ * Warn and use a default. */
++ dev_warn(&pdev->dev, "WARNING! Platform hasn't set available "
++ "data widths, using default 10 bit\n");
++ pcdev->platform_flags |= PXACIF_DATAWIDTH_10;
++ }
++ pcdev->platform_mclk_10khz = pcdev->pdata->mclk_10khz;
++ if (!pcdev->platform_mclk_10khz) {
++ dev_warn(&pdev->dev,
++ "mclk_10khz == 0! Please, fix your platform data. "
++ "Using default 20MHz\n");
++ pcdev->platform_mclk_10khz = 2000;
++ }
++
++ INIT_LIST_HEAD(&pcdev->capture);
++ spin_lock_init(&pcdev->lock);
++
++ /*
++ * Request the regions.
++ */
++ if (!request_mem_region(res->start, res->end - res->start + 1, PXA_CAM_DRV_NAME)) {
++ err = -EBUSY;
++ goto exit_kfree;
++ }
++
++ base = ioremap(res->start, res->end - res->start + 1);
++ if (!base) {
++ err = -ENOMEM;
++ goto exit_release;
++ }
++ pcdev->irq = irq;
++ pcdev->base = base;
++ pcdev->dev = &pdev->dev;
++
++ /* request dma */
++ pcdev->dma_chan_y = pxa_request_dma("CI_Y", DMA_PRIO_HIGH, pxa_camera_dma_irq_y, pcdev);
++ if (pcdev->dma_chan_y < 0) {
++ printk(KERN_ERR "Can't request DMA for Y\n");
++ err = -ENOMEM;
++ goto exit_iounmap;
++ }
++ pr_debug("got DMA channel %d\n", pcdev->dma_chan_y);
++
++ DRCMR68 = pcdev->dma_chan_y | DRCMR_MAPVLD;
++
++ /* request irq */
++ err = request_irq(pcdev->irq, pxa_camera_irq, 0, PXA_CAM_DRV_NAME, pcdev);
++ if (err) {
++ printk ("Camera interrupt register failed \n");
++ goto exit_free_dma;
++ }
++
++ pxa_soc_camera_host.priv = pcdev;
++ pxa_soc_camera_host.dev.parent = &pdev->dev;
++ pxa_soc_camera_host.nr = pdev->id;
++ err = soc_camera_host_register(&pxa_soc_camera_host, THIS_MODULE);
++ if (err)
++ goto exit_free_irq;
++
++ return 0;
++
++ exit_free_irq:
++ free_irq(pcdev->irq, pcdev);
++ exit_free_dma:
++ pxa_free_dma(pcdev->dma_chan_y);
++ exit_iounmap:
++ iounmap(base);
++ exit_release:
++ release_mem_region(res->start, res->end - res->start + 1);
++ exit_kfree:
++ kfree(pcdev);
++ exit:
++ return err;
++}
++
++static int __devexit pxa_camera_remove(struct platform_device *pdev)
++{
++ struct pxa_camera_dev *pcdev = platform_get_drvdata(pdev);
++ struct resource *res;
++
++ pxa_free_dma(pcdev->dma_chan_y);
++ free_irq(pcdev->irq, pcdev);
++
++ soc_camera_host_unregister(&pxa_soc_camera_host);
++
++ iounmap(pcdev->base);
++
++ res = pcdev->res;
++ release_mem_region(res->start, res->end - res->start + 1);
++
++ kfree(pcdev);
++
++ dev_info(&pdev->dev, "%s: PXA Camera driver unloaded\n", __FUNCTION__);
++
++ return 0;
++}
++
++/*
++ * Suspend the Camera Module.
++ */
++static int pxa_camera_suspend(struct platform_device *pdev, pm_message_t level)
++{
++ struct pxa_camera_dev *pcdev = platform_get_drvdata(pdev);
++
++ dev_info(&pdev->dev, "camera suspend\n");
++ disable_irq(pcdev->irq);
++ return 0;
++}
++
++/*
++ * Resume the Camera Module.
++ */
++static int pxa_camera_resume(struct platform_device *pdev)
++{
++ struct pxa_camera_dev *pcdev = platform_get_drvdata(pdev);
++
++ dev_info(&pdev->dev, "camera resume\n");
++ enable_irq(pcdev->irq);
++
++ /* if (pcdev) { */ /* FIXME: dev in use? */
++/* DRCMR68 = pcdev->dma_chan_y | DRCMR_MAPVLD; */
++/* DRCMR69 = pcdev->dma_chan_cb | DRCMR_MAPVLD; */
++/* DRCMR70 = pcdev->dma_chan_cr | DRCMR_MAPVLD; */
++/* } */
++
++ return 0;
++}
++
++
++static struct platform_driver pxa_camera_driver = {
++ .driver = {
++ .name = PXA_CAM_DRV_NAME,
++ },
++ .probe = pxa_camera_probe,
++ .remove = __exit_p(pxa_camera_remove),
++ .suspend = pxa_camera_suspend,
++ .resume = pxa_camera_resume,
++};
++
++
++static int __devinit pxa_camera_init(void)
++{
++ return platform_driver_register(&pxa_camera_driver);
++}
++
++static void __exit pxa_camera_exit(void)
++{
++ return platform_driver_unregister(&pxa_camera_driver);
++}
++
++module_init(pxa_camera_init);
++module_exit(pxa_camera_exit);
++
++MODULE_DESCRIPTION("PXA27x SoC Camera Host driver");
++MODULE_AUTHOR("Guennadi Liakhovetski <kernel@pengutronix.de>");
++MODULE_LICENSE("GPL");
+diff --git a/include/asm-arm/arch-pxa/pxa-regs.h b/include/asm-arm/arch-pxa/pxa-regs.h
+index e68b593..f587c83 100644
+--- a/include/asm-arm/arch-pxa/pxa-regs.h
++++ b/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -1229,19 +1229,26 @@
+ #define GPIO10_RTCCLK 10 /* real time clock (1 Hz) */
+ #define GPIO11_3_6MHz 11 /* 3.6 MHz oscillator out */
+ #define GPIO12_32KHz 12 /* 32 kHz out */
++#define GPIO12_CIF_DD7 12 /* Capture Interface D7 (PXA27x) */
+ #define GPIO13_MBGNT 13 /* memory controller grant */
+ #define GPIO14_MBREQ 14 /* alternate bus master request */
+ #define GPIO15_nCS_1 15 /* chip select 1 */
+ #define GPIO16_PWM0 16 /* PWM0 output */
+ #define GPIO17_PWM1 17 /* PWM1 output */
++#define GPIO17_CIF_DD6 17 /* Capture Interface D6 (PXA27x) */
+ #define GPIO18_RDY 18 /* Ext. Bus Ready */
+ #define GPIO19_DREQ1 19 /* External DMA Request */
+ #define GPIO20_DREQ0 20 /* External DMA Request */
+ #define GPIO23_SCLK 23 /* SSP clock */
++#define GPIO23_CIF_MCLK 23 /* Capture Interface MCLK (PXA27x) */
+ #define GPIO24_SFRM 24 /* SSP Frame */
++#define GPIO24_CIF_FV 24 /* Capture Interface FV (PXA27x) */
+ #define GPIO25_STXD 25 /* SSP transmit */
++#define GPIO25_CIF_LV 25 /* Capture Interface LV (PXA27x) */
+ #define GPIO26_SRXD 26 /* SSP receive */
++#define GPIO26_CIF_PCLK 26 /* Capture Interface PCLK (PXA27x) */
+ #define GPIO27_SEXTCLK 27 /* SSP ext_clk */
++#define GPIO27_CIF_DD0 27 /* Capture Interface D0 (PXA27x) */
+ #define GPIO28_BITCLK 28 /* AC97/I2S bit_clk */
+ #define GPIO29_SDATA_IN 29 /* AC97 Sdata_in0 / I2S Sdata_in */
+ #define GPIO30_SDATA_OUT 30 /* AC97/I2S Sdata_out */
+@@ -1262,28 +1269,40 @@
+ #define GPIO41_FFRTS 41 /* FFUART request to send */
+ #define GPIO42_BTRXD 42 /* BTUART receive data */
+ #define GPIO42_HWRXD 42 /* HWUART receive data */
++#define GPIO42_CIF_MCLK 42 /* Capture interface MCLK (PXA27x) */
+ #define GPIO43_BTTXD 43 /* BTUART transmit data */
+ #define GPIO43_HWTXD 43 /* HWUART transmit data */
++#define GPIO43_CIF_FV 43 /* Capture interface FV (PXA27x) */
+ #define GPIO44_BTCTS 44 /* BTUART clear to send */
+ #define GPIO44_HWCTS 44 /* HWUART clear to send */
++#define GPIO44_CIF_LV 44 /* Capture interface LV (PXA27x) */
+ #define GPIO45_BTRTS 45 /* BTUART request to send */
+ #define GPIO45_HWRTS 45 /* HWUART request to send */
+ #define GPIO45_AC97_SYSCLK 45 /* AC97 System Clock */
++#define GPIO45_CIF_PCLK 45 /* Capture interface PCLK (PXA27x) */
+ #define GPIO46_ICPRXD 46 /* ICP receive data */
+ #define GPIO46_STRXD 46 /* STD_UART receive data */
+ #define GPIO47_ICPTXD 47 /* ICP transmit data */
+ #define GPIO47_STTXD 47 /* STD_UART transmit data */
++#define GPIO47_CIF_DD0 47 /* Capture interface D0 (PXA27x) */
+ #define GPIO48_nPOE 48 /* Output Enable for Card Space */
++#define GPIO48_CIF_DD5 48 /* Capture interface D5 (PXA27x) */
+ #define GPIO49_nPWE 49 /* Write Enable for Card Space */
+ #define GPIO50_nPIOR 50 /* I/O Read for Card Space */
++#define GPIO50_CIF_DD3 50 /* Capture interface D3 (PXA27x) */
+ #define GPIO51_nPIOW 51 /* I/O Write for Card Space */
++#define GPIO51_CIF_DD2 51 /* Capture interface D2 (PXA27x) */
+ #define GPIO52_nPCE_1 52 /* Card Enable for Card Space */
++#define GPIO52_CIF_DD4 52 /* Capture interface D4 (PXA27x) */
+ #define GPIO53_nPCE_2 53 /* Card Enable for Card Space */
+ #define GPIO53_MMCCLK 53 /* MMC Clock */
++#define GPIO53_CIF_MCLK 53 /* Capture interface MCLK (PXA27x) */
+ #define GPIO54_MMCCLK 54 /* MMC Clock */
+ #define GPIO54_pSKTSEL 54 /* Socket Select for Card Space */
+ #define GPIO54_nPCE_2 54 /* Card Enable for Card Space (PXA27x) */
++#define GPIO54_CIF_PCLK 54 /* Capture interface PCLK (PXA27x) */
+ #define GPIO55_nPREG 55 /* Card Address bit 26 */
++#define GPIO55_CIF_DD1 55 /* Capture interface D1 (PXA27x) */
+ #define GPIO56_nPWAIT 56 /* Wait signal for Card Space */
+ #define GPIO57_nIOIS16 57 /* Bus Width select for I/O Card Space */
+ #define GPIO58_LDD_0 58 /* LCD data pin 0 */
+@@ -1318,11 +1337,28 @@
+ #define GPIO79_nCS_3 79 /* chip select 3 */
+ #define GPIO80_nCS_4 80 /* chip select 4 */
+ #define GPIO81_NSCLK 81 /* NSSP clock */
++#define GPIO81_CIF_DD0 81 /* Capture Interface D0 (PXA27x) */
+ #define GPIO82_NSFRM 82 /* NSSP Frame */
++#define GPIO82_CIF_DD5 82 /* Capture Interface D5 (PXA27x) */
+ #define GPIO83_NSTXD 83 /* NSSP transmit */
++#define GPIO83_CIF_DD4 83 /* Capture Interface D4 (PXA27x) */
+ #define GPIO84_NSRXD 84 /* NSSP receive */
++#define GPIO84_CIF_FV 84 /* Capture Interface FV (PXA27x) */
+ #define GPIO85_nPCE_1 85 /* Card Enable for Card Space (PXA27x) */
++#define GPIO85_CIF_LV 85 /* Capture Interface LV (PXA27x) */
++#define GPIO90_CIF_DD4 90 /* Capture Interface DD4 (PXA27x) */
++#define GPIO91_CIF_DD5 91 /* Capture Interface DD5 (PXA27x) */
+ #define GPIO92_MMCDAT0 92 /* MMC DAT0 (PXA27x) */
++#define GPIO93_CIF_DD6 93 /* Capture interface D6 (PXA27x) */
++#define GPIO94_CIF_DD5 94 /* Capture interface D5 (PXA27x) */
++#define GPIO95_CIF_DD4 95 /* Capture interface D4 (PXA27x) */
++#define GPIO98_CIF_DD0 98 /* Capture interface D0 (PXA27x) */
++#define GPIO103_CIF_DD3 103 /* Capture interface D3 (PXA27x) */
++#define GPIO104_CIF_DD2 104 /* Capture interface D2 (PXA27x) */
++#define GPIO105_CIF_DD1 105 /* Capture interface D1 (PXA27x) */
++#define GPIO106_CIF_DD9 106 /* Capture interface D9 (PXA27x) */
++#define GPIO107_CIF_DD8 107 /* Capture interface D8 (PXA27x) */
++#define GPIO108_CIF_DD7 108 /* Capture interface D7 (PXA27x) */
+ #define GPIO102_nPCE_1 102 /* PCMCIA (PXA27x) */
+ #define GPIO109_MMCDAT1 109 /* MMC DAT1 (PXA27x) */
+ #define GPIO110_MMCDAT2 110 /* MMC DAT2 (PXA27x) */
+@@ -1332,6 +1368,9 @@
+ #define GPIO112_MMCCMD 112 /* MMC CMD (PXA27x) */
+ #define GPIO113_I2S_SYSCLK 113 /* I2S System Clock (PXA27x) */
+ #define GPIO113_AC97_RESET_N 113 /* AC97 NRESET on (PXA27x) */
++#define GPIO114_CIF_DD1 114 /* Capture interface D1 (PXA27x) */
++#define GPIO115_CIF_DD3 115 /* Capture interface D3 (PXA27x) */
++#define GPIO116_CIF_DD2 116 /* Capture interface D2 (PXA27x) */
+
+ /* GPIO alternate function mode & direction */
+
+@@ -1357,19 +1396,26 @@
+ #define GPIO10_RTCCLK_MD (10 | GPIO_ALT_FN_1_OUT)
+ #define GPIO11_3_6MHz_MD (11 | GPIO_ALT_FN_1_OUT)
+ #define GPIO12_32KHz_MD (12 | GPIO_ALT_FN_1_OUT)
++#define GPIO12_CIF_DD7_MD (12 | GPIO_ALT_FN_2_IN)
+ #define GPIO13_MBGNT_MD (13 | GPIO_ALT_FN_2_OUT)
+ #define GPIO14_MBREQ_MD (14 | GPIO_ALT_FN_1_IN)
+ #define GPIO15_nCS_1_MD (15 | GPIO_ALT_FN_2_OUT)
+ #define GPIO16_PWM0_MD (16 | GPIO_ALT_FN_2_OUT)
+ #define GPIO17_PWM1_MD (17 | GPIO_ALT_FN_2_OUT)
++#define GPIO17_CIF_DD6_MD (17 | GPIO_ALT_FN_2_IN)
+ #define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN)
+ #define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN)
+ #define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN)
++#define GPIO23_CIF_MCLK_MD (23 | GPIO_ALT_FN_1_OUT)
+ #define GPIO23_SCLK_MD (23 | GPIO_ALT_FN_2_OUT)
++#define GPIO24_CIF_FV_MD (24 | GPIO_ALT_FN_1_OUT)
+ #define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT)
++#define GPIO25_CIF_LV_MD (25 | GPIO_ALT_FN_1_OUT)
+ #define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT)
+ #define GPIO26_SRXD_MD (26 | GPIO_ALT_FN_1_IN)
++#define GPIO26_CIF_PCLK_MD (26 | GPIO_ALT_FN_2_IN)
+ #define GPIO27_SEXTCLK_MD (27 | GPIO_ALT_FN_1_IN)
++#define GPIO27_CIF_DD0_MD (27 | GPIO_ALT_FN_3_IN)
+ #define GPIO28_BITCLK_AC97_MD (28 | GPIO_ALT_FN_1_IN)
+ #define GPIO28_BITCLK_IN_I2S_MD (28 | GPIO_ALT_FN_2_IN)
+ #define GPIO28_BITCLK_OUT_I2S_MD (28 | GPIO_ALT_FN_1_OUT)
+@@ -1394,34 +1440,46 @@
+ #define GPIO40_FFDTR_MD (40 | GPIO_ALT_FN_2_OUT)
+ #define GPIO41_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
+ #define GPIO42_BTRXD_MD (42 | GPIO_ALT_FN_1_IN)
++#define GPIO42_CIF_MCLK_MD (42 | GPIO_ALT_FN_3_OUT)
+ #define GPIO42_HWRXD_MD (42 | GPIO_ALT_FN_3_IN)
+ #define GPIO43_BTTXD_MD (43 | GPIO_ALT_FN_2_OUT)
++#define GPIO43_CIF_FV_MD (43 | GPIO_ALT_FN_3_OUT)
+ #define GPIO43_HWTXD_MD (43 | GPIO_ALT_FN_3_OUT)
+ #define GPIO44_BTCTS_MD (44 | GPIO_ALT_FN_1_IN)
+ #define GPIO44_HWCTS_MD (44 | GPIO_ALT_FN_3_IN)
++#define GPIO44_CIF_LV_MD (44 | GPIO_ALT_FN_3_OUT)
+ #define GPIO45_BTRTS_MD (45 | GPIO_ALT_FN_2_OUT)
+ #define GPIO45_HWRTS_MD (45 | GPIO_ALT_FN_3_OUT)
+ #define GPIO45_SYSCLK_AC97_MD (45 | GPIO_ALT_FN_1_OUT)
++#define GPIO45_CIF_PCLK_MD (45 | GPIO_ALT_FN_3_IN)
+ #define GPIO46_ICPRXD_MD (46 | GPIO_ALT_FN_1_IN)
+ #define GPIO46_STRXD_MD (46 | GPIO_ALT_FN_2_IN)
+ #define GPIO47_ICPTXD_MD (47 | GPIO_ALT_FN_2_OUT)
+ #define GPIO47_STTXD_MD (47 | GPIO_ALT_FN_1_OUT)
++#define GPIO47_CIF_DD0_MD (47 | GPIO_ALT_FN_1_IN)
+ #define GPIO48_nPOE_MD (48 | GPIO_ALT_FN_2_OUT)
++#define GPIO48_CIF_DD5_MD (48 | GPIO_ALT_FN_1_IN)
+ #define GPIO48_HWTXD_MD (48 | GPIO_ALT_FN_1_OUT)
+ #define GPIO48_nPOE_MD (48 | GPIO_ALT_FN_2_OUT)
+ #define GPIO49_HWRXD_MD (49 | GPIO_ALT_FN_1_IN)
+ #define GPIO49_nPWE_MD (49 | GPIO_ALT_FN_2_OUT)
+ #define GPIO50_nPIOR_MD (50 | GPIO_ALT_FN_2_OUT)
++#define GPIO50_CIF_DD3_MD (50 | GPIO_ALT_FN_1_IN)
+ #define GPIO50_HWCTS_MD (50 | GPIO_ALT_FN_1_IN)
+ #define GPIO51_HWRTS_MD (51 | GPIO_ALT_FN_1_OUT)
+ #define GPIO51_nPIOW_MD (51 | GPIO_ALT_FN_2_OUT)
++#define GPIO51_CIF_DD2_MD (51 | GPIO_ALT_FN_1_IN)
+ #define GPIO52_nPCE_1_MD (52 | GPIO_ALT_FN_2_OUT)
++#define GPIO52_CIF_DD4_MD (52 | GPIO_ALT_FN_1_IN)
+ #define GPIO53_nPCE_2_MD (53 | GPIO_ALT_FN_2_OUT)
+ #define GPIO53_MMCCLK_MD (53 | GPIO_ALT_FN_1_OUT)
++#define GPIO53_CIF_MCLK_MD (53 | GPIO_ALT_FN_2_OUT)
+ #define GPIO54_MMCCLK_MD (54 | GPIO_ALT_FN_1_OUT)
+ #define GPIO54_nPCE_2_MD (54 | GPIO_ALT_FN_2_OUT)
+ #define GPIO54_pSKTSEL_MD (54 | GPIO_ALT_FN_2_OUT)
++#define GPIO54_CIF_PCLK_MD (54 | GPIO_ALT_FN_3_IN)
+ #define GPIO55_nPREG_MD (55 | GPIO_ALT_FN_2_OUT)
++#define GPIO55_CIF_DD1_MD (55 | GPIO_ALT_FN_1_IN)
+ #define GPIO56_nPWAIT_MD (56 | GPIO_ALT_FN_1_IN)
+ #define GPIO57_nIOIS16_MD (57 | GPIO_ALT_FN_1_IN)
+ #define GPIO58_LDD_0_MD (58 | GPIO_ALT_FN_2_OUT)
+@@ -1458,16 +1516,33 @@
+ #define GPIO80_nCS_4_MD (80 | GPIO_ALT_FN_2_OUT)
+ #define GPIO81_NSSP_CLK_OUT (81 | GPIO_ALT_FN_1_OUT)
+ #define GPIO81_NSSP_CLK_IN (81 | GPIO_ALT_FN_1_IN)
++#define GPIO81_CIF_DD0_MD (81 | GPIO_ALT_FN_2_IN)
+ #define GPIO82_NSSP_FRM_OUT (82 | GPIO_ALT_FN_1_OUT)
+ #define GPIO82_NSSP_FRM_IN (82 | GPIO_ALT_FN_1_IN)
++#define GPIO82_CIF_DD5_MD (82 | GPIO_ALT_FN_3_IN)
+ #define GPIO83_NSSP_TX (83 | GPIO_ALT_FN_1_OUT)
+ #define GPIO83_NSSP_RX (83 | GPIO_ALT_FN_2_IN)
++#define GPIO83_CIF_DD4_MD (83 | GPIO_ALT_FN_3_IN)
+ #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT)
+ #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN)
++#define GPIO84_CIF_FV_MD (84 | GPIO_ALT_FN_3_OUT)
+ #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT)
++#define GPIO85_CIF_LV_MD (85 | GPIO_ALT_FN_3_OUT)
++#define GPIO90_CIF_DD4_MD (90 | GPIO_ALT_FN_3_IN)
++#define GPIO91_CIF_DD5_MD (91 | GPIO_ALT_FN_3_IN)
+ #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT)
++#define GPIO93_CIF_DD6_MD (93 | GPIO_ALT_FN_2_IN)
++#define GPIO94_CIF_DD5_MD (94 | GPIO_ALT_FN_2_IN)
++#define GPIO95_CIF_DD4_MD (95 | GPIO_ALT_FN_2_IN)
++#define GPIO98_CIF_DD0_MD (98 | GPIO_ALT_FN_2_IN)
+ #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT)
++#define GPIO103_CIF_DD3_MD (103 | GPIO_ALT_FN_1_IN)
+ #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT)
++#define GPIO104_CIF_DD2_MD (104 | GPIO_ALT_FN_1_IN)
++#define GPIO105_CIF_DD1_MD (105 | GPIO_ALT_FN_1_IN)
++#define GPIO106_CIF_DD9_MD (106 | GPIO_ALT_FN_1_IN)
++#define GPIO107_CIF_DD8_MD (107 | GPIO_ALT_FN_1_IN)
++#define GPIO108_CIF_DD7_MD (108 | GPIO_ALT_FN_1_IN)
+ #define GPIO109_MMCDAT1_MD (109 | GPIO_ALT_FN_1_OUT)
+ #define GPIO110_MMCDAT2_MD (110 | GPIO_ALT_FN_1_OUT)
+ #define GPIO110_MMCCS0_MD (110 | GPIO_ALT_FN_1_OUT)
+@@ -2207,6 +2282,11 @@
+ #define CICR0_ENB (1 << 28) /* Camera interface enable */
+ #define CICR0_DIS (1 << 27) /* Camera interface disable */
+ #define CICR0_SIM (0x7 << 24) /* Sensor interface mode mask */
++#define CICR0_SIM_MP (0 << 24)
++#define CICR0_SIM_SP (1 << 24)
++#define CICR0_SIM_MS (2 << 24)
++#define CICR0_SIM_EP (3 << 24)
++#define CICR0_SIM_ES (4 << 24)
+ #define CICR0_TOM (1 << 9) /* Time-out mask */
+ #define CICR0_RDAVM (1 << 8) /* Receive-data-available mask */
+ #define CICR0_FEM (1 << 7) /* FIFO-empty mask */
+@@ -2257,6 +2337,20 @@
+ #define CICR4_FR_RATE (0x7 << 8) /* Frame rate mask */
+ #define CICR4_DIV (0xff << 0) /* Clock divisor mask */
+
++#define CICR1_DW_VAL(x) ((x) & CICR1_DW) /* Data bus width */
++#define CICR1_PPL_VAL(x) (((x) << 15) & CICR1_PPL) /* Pixels per line */
++
++#define CICR2_BLW_VAL(x) (((x) << 24) & CICR2_BLW) /* Beginning-of-line pixel clock wait count */
++#define CICR2_ELW_VAL(x) (((x) << 16) & CICR2_ELW) /* End-of-line pixel clock wait count */
++#define CICR2_HSW_VAL(x) (((x) << 10) & CICR2_HSW) /* Horizontal sync pulse width */
++#define CICR2_BFPW_VAL(x) (((x) << 3) & CICR2_BFPW) /* Beginning-of-frame pixel clock wait count */
++#define CICR2_FSW_VAL(x) (((x) << 0) & CICR2_FSW) /* Frame stabilization wait count */
++
++#define CICR3_BFW_VAL(x) (((x) << 24) & CICR3_BFW) /* Beginning-of-frame line clock wait count */
++#define CICR3_EFW_VAL(x) (((x) << 16) & CICR3_EFW) /* End-of-frame line clock wait count */
++#define CICR3_VSW_VAL(x) (((x) << 11) & CICR3_VSW) /* Vertical sync pulse width */
++#define CICR3_LPF_VAL(x) (((x) << 0) & CICR3_LPF) /* Lines per frame */
++
+ #define CISR_FTO (1 << 15) /* FIFO time-out */
+ #define CISR_RDAV_2 (1 << 14) /* Channel 2 receive data available */
+ #define CISR_RDAV_1 (1 << 13) /* Channel 1 receive data available */
+diff --git a/include/asm-arm/arch-pxa/pxa_cif.h b/include/asm-arm/arch-pxa/pxa_cif.h
+new file mode 100644
+index 0000000..ca1e5a2
+--- /dev/null
++++ b/include/asm-arm/arch-pxa/pxa_cif.h
+@@ -0,0 +1,48 @@
++/*
++ pxa_camera - PXA camera driver header file
++
++ Copyright (C) 2003, Intel Corporation
++ Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software
++ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++*/
++
++#ifndef __PXA_CIF_H_
++#define __PXA_CIF_H_
++
++#define PXACIF_MASTER 1
++#define PXACIF_DATAWIDTH_4 2
++#define PXACIF_DATAWIDTH_5 4
++#define PXACIF_DATAWIDTH_8 8
++#define PXACIF_DATAWIDTH_9 0x10
++#define PXACIF_DATAWIDTH_10 0x20
++#define PXACIF_PCLK_EN 0x40
++#define PXACIF_MCLK_EN 0x80
++#define PXACIF_PCP 0x100
++#define PXACIF_HSP 0x200
++#define PXACIF_VSP 0x400
++
++struct pxacamera_platform_data {
++ int (*init)(struct device *);
++ int (*power)(struct device *, int on);
++ int (*reset)(struct device *, int set);
++
++ unsigned long flags;
++ unsigned long mclk_10khz;
++};
++
++extern void pxa_set_cif_info(struct pxacamera_platform_data *info);
++
++#endif /* __PXA_CIF_H_ */
+--
+1.5.3.4
+
+--
+video4linux-list mailing list
+Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
+https://www.redhat.com/mailman/listinfo/video4linux-list
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxav4l3-8.patch.eml b/packages/linux/linux-ezx-2.6.24/patches/pxav4l3-8.patch.eml
new file mode 100644
index 0000000000..22abad6b1c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxav4l3-8.patch.eml
@@ -0,0 +1,282 @@
+Path: news.gmane.org!not-for-mail
+From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+Newsgroups: gmane.comp.video.video4linux,gmane.linux.drivers.i2c
+Subject: [RFC PATCH 3/8] Philips PCA9536 4 bit I2C GPIO extender driver
+Date: Wed, 23 Jan 2008 18:41:39 +0100 (CET)
+Lines: 210
+Approved: news@gmane.org
+Message-ID: <Pine.LNX.4.64.0801231820060.4932@axis700.grange>
+References: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: ger.gmane.org 1201110131 28782 80.91.229.12 (23 Jan 2008 17:42:11 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Wed, 23 Jan 2008 17:42:11 +0000 (UTC)
+Cc: i2c@lm-sensors.org
+To: video4linux-list@redhat.com
+Original-X-From: video4linux-list-bounces@redhat.com Wed Jan 23 18:42:30 2008
+Return-path: <video4linux-list-bounces@redhat.com>
+Envelope-to: rh-video4linux-list@gmane.org
+Original-Received: from hormel.redhat.com ([209.132.177.30])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1JHjcK-0002zY-Jd
+ for rh-video4linux-list@gmane.org; Wed, 23 Jan 2008 18:42:29 +0100
+Original-Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110])
+ by hormel.redhat.com (Postfix) with ESMTP
+ id 1D07D72F5C; Wed, 23 Jan 2008 12:42:02 -0500 (EST)
+Original-Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
+ [172.16.52.254])
+ by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id
+ m0NHfx7t017217 for <video4linux-list@listman.util.phx.redhat.com>;
+ Wed, 23 Jan 2008 12:41:59 -0500
+Original-Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
+ by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m0NHfxW4028112
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:59 -0500
+Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
+ by mx3.redhat.com (8.13.1/8.13.1) with SMTP id m0NHfPdF000786
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:25 -0500
+Original-Received: (qmail invoked by alias); 23 Jan 2008 17:41:19 -0000
+Original-Received: from p57BD2F1F.dip0.t-ipconnect.de (EHLO axis700.grange)
+ [87.189.47.31]
+ by mail.gmx.net (mp021) with SMTP; 23 Jan 2008 18:41:19 +0100
+X-Authenticated: #20450766
+X-Provags-ID: V01U2FsdGVkX18gZ14xakQgr3grhg4ys0olRWzKeUW5G+x4WUV9jY
+ iLvi2phxgtwjvM
+Original-Received: from lyakh (helo=localhost)
+ by axis700.grange with local-esmtp (Exim 4.63)
+ (envelope-from <g.liakhovetski@gmx.de>)
+ id 1JHjbX-00029t-5A; Wed, 23 Jan 2008 18:41:39 +0100
+X-X-Sender: lyakh@axis700.grange
+In-Reply-To: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+X-Y-GMX-Trusted: 0
+X-RedHat-Spam-Score: 0
+X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
+X-Scanned-By: MIMEDefang 2.58 on 172.16.48.32
+X-loop: video4linux-list@redhat.com
+X-BeenThere: video4linux-list@redhat.com
+X-Mailman-Version: 2.1.5
+Precedence: junk
+List-Id: Linux and Kernel Video <video4linux-list.redhat.com>
+List-Unsubscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=unsubscribe>
+List-Archive: <https://www.redhat.com/mailman/private/video4linux-list>
+List-Post: <mailto:video4linux-list@redhat.com>
+List-Help: <mailto:video4linux-list-request@redhat.com?subject=help>
+List-Subscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=subscribe>
+Original-Sender: video4linux-list-bounces@redhat.com
+Errors-To: video4linux-list-bounces@redhat.com
+Xref: news.gmane.org gmane.comp.video.video4linux:36471 gmane.linux.drivers.i2c:251
+Archived-At: <http://permalink.gmane.org/gmane.comp.video.video4linux/36471>
+
+This driver will be used by the mt9m001 and the mt9v022 camera drivers,
+that can use a pca9536 to switch between 8 and 10 bit modes.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+---
+ drivers/i2c/chips/Kconfig | 10 +++
+ drivers/i2c/chips/Makefile | 1 +
+ drivers/i2c/chips/pca9536.c | 153 +++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 164 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/i2c/chips/pca9536.c
+
+diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig
+index 2e1c24f..6f492f1 100644
+--- a/drivers/i2c/chips/Kconfig
++++ b/drivers/i2c/chips/Kconfig
+@@ -65,6 +65,16 @@ config SENSORS_PCF8574
+ These devices are hard to detect and rarely found on mainstream
+ hardware. If unsure, say N.
+
++config SENSORS_PCA9536
++ tristate "Philips PCA9536 4-bit I/O port"
++ depends on EXPERIMENTAL
++ help
++ If you say yes here you get support for the Philips PCA9539
++ 4-bit I/O port.
++
++ This driver can also be built as a module. If so, the module
++ will be called pca9536.
++
+ config SENSORS_PCA9539
+ tristate "Philips PCA9539 16-bit I/O port"
+ depends on EXPERIMENTAL
+diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
+index ca924e1..e24c582 100644
+--- a/drivers/i2c/chips/Makefile
++++ b/drivers/i2c/chips/Makefile
+@@ -8,6 +8,7 @@ obj-$(CONFIG_DS1682) += ds1682.o
+ obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o
+ obj-$(CONFIG_SENSORS_MAX6875) += max6875.o
+ obj-$(CONFIG_SENSORS_M41T00) += m41t00.o
++obj-$(CONFIG_SENSORS_PCA9536) += pca9536.o
+ obj-$(CONFIG_SENSORS_PCA9539) += pca9539.o
+ obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o
+ obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
+diff --git a/drivers/i2c/chips/pca9536.c b/drivers/i2c/chips/pca9536.c
+new file mode 100644
+index 0000000..08e5d8b
+--- /dev/null
++++ b/drivers/i2c/chips/pca9536.c
+@@ -0,0 +1,152 @@
++/*
++ * Driver for PCA9536 I/O Expander
++ *
++ * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
++ *
++ * 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/videodev.h>
++#include <linux/slab.h>
++#include <linux/i2c.h>
++#include <linux/hwmon-sysfs.h>
++
++#include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++
++#define PCA9536_INPUT 0
++#define PCA9536_OUTPUT 1
++#define PCA9536_INVERT 2
++#define PCA9536_DIRECTION 3
++
++/* following are the sysfs callback functions */
++static ssize_t pca9536_show(struct device *dev, struct device_attribute *attr,
++ char *buf)
++{
++ struct sensor_device_attribute *psa = to_sensor_dev_attr(attr);
++ struct i2c_client *client = to_i2c_client(dev);
++
++ return sprintf(buf, "%d\n", i2c_smbus_read_byte_data(client,
++ psa->index));
++}
++
++static ssize_t pca9536_store(struct device *dev, struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ struct sensor_device_attribute *psa = to_sensor_dev_attr(attr);
++ struct i2c_client *client = to_i2c_client(dev);
++ unsigned long val = simple_strtoul(buf, NULL, 0);
++
++ if (val > 0xff)
++ return -EINVAL;
++
++ i2c_smbus_write_byte_data(client, psa->index, val);
++ return count;
++}
++
++int pca9536_set_level(struct i2c_client *client, u8 pin, u8 level)
++{
++ s32 data;
++
++ if (pin > 3)
++ return -EINVAL;
++
++ /* Switch to output */
++ data = i2c_smbus_read_byte_data(client, PCA9536_DIRECTION);
++ if (data < 0)
++ return data;
++ data = i2c_smbus_write_byte_data(client, PCA9536_DIRECTION,
++ data & ~(1 << pin));
++ if (data < 0)
++ return data;
++
++ /* Set level */
++ data = i2c_smbus_read_byte_data(client, PCA9536_OUTPUT);
++ if (data < 0)
++ return data;
++ if (level)
++ data |= (1 << pin);
++ else
++ data &= ~(1 << pin);
++ data = i2c_smbus_write_byte_data(client, PCA9536_OUTPUT, data);
++
++ return data;
++}
++EXPORT_SYMBOL(pca9536_set_level);
++
++/* Define the device attributes */
++
++#define PCA9536_ENTRY_RO(name, reg) \
++ static SENSOR_DEVICE_ATTR(name, S_IRUGO, pca9536_show, NULL, reg)
++
++#define PCA9536_ENTRY_RW(name, reg) \
++ static SENSOR_DEVICE_ATTR(name, S_IRUGO | S_IWUSR, pca9536_show, \
++ pca9536_store, reg)
++
++PCA9536_ENTRY_RO(input, PCA9536_INPUT);
++PCA9536_ENTRY_RW(output, PCA9536_OUTPUT);
++PCA9536_ENTRY_RW(invert, PCA9536_INVERT);
++PCA9536_ENTRY_RW(direction, PCA9536_DIRECTION);
++
++static struct attribute *pca9536_attributes[] = {
++ &sensor_dev_attr_input.dev_attr.attr,
++ &sensor_dev_attr_output.dev_attr.attr,
++ &sensor_dev_attr_invert.dev_attr.attr,
++ &sensor_dev_attr_direction.dev_attr.attr,
++ NULL
++};
++
++static struct attribute_group pca9536_defattr_group = {
++ .attrs = pca9536_attributes,
++};
++
++static int pca9536_probe(struct i2c_client *client)
++{
++ struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
++ pr_debug("%s: I2C-Adapter doesn't support I2C_FUNC_SMBUS_BYTE\n", __FUNCTION__);
++ return -EIO;
++ }
++
++ if (client->dev.platform_data)
++ /* This chip is going to be used from the kernel */
++ *(struct i2c_client **)client->dev.platform_data = client;
++
++ /* Register sysfs hooks */
++ return sysfs_create_group(&client->dev.kobj,
++ &pca9536_defattr_group);
++}
++
++static int pca9536_remove(struct i2c_client *client)
++{
++ sysfs_remove_group(&client->dev.kobj, &pca9536_defattr_group);
++ return 0;
++}
++
++static struct i2c_driver pca9536_i2c_driver = {
++ .driver = {
++ .name = "pca9536",
++ },
++ .probe = pca9536_probe,
++ .remove = pca9536_remove,
++};
++
++static int __init pca9536_mod_init(void)
++{
++ return i2c_add_driver(&pca9536_i2c_driver);
++}
++
++static void __exit pca9536_mod_exit(void)
++{
++ i2c_del_driver(&pca9536_i2c_driver);
++}
++
++module_init(pca9536_mod_init);
++module_exit(pca9536_mod_exit);
++
++MODULE_DESCRIPTION("PCA9536 driver");
++MODULE_AUTHOR("Guennadi Liakhovetski <kernel@pengutronix.de>");
++MODULE_LICENSE("GPL");
+--
+1.5.3.4
+
+--
+video4linux-list mailing list
+Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
+https://www.redhat.com/mailman/listinfo/video4linux-list
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxav4l4-8.patch.eml b/packages/linux/linux-ezx-2.6.24/patches/pxav4l4-8.patch.eml
new file mode 100644
index 0000000000..4ac9b73ff3
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxav4l4-8.patch.eml
@@ -0,0 +1,781 @@
+Path: news.gmane.org!not-for-mail
+From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+Newsgroups: gmane.comp.video.video4linux
+Subject: [RFC PATCH 4/8] Add support for the MT9M001 camera
+Date: Wed, 23 Jan 2008 18:41:48 +0100 (CET)
+Lines: 710
+Approved: news@gmane.org
+Message-ID: <Pine.LNX.4.64.0801231825190.4932@axis700.grange>
+References: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: ger.gmane.org 1201110157 28881 80.91.229.12 (23 Jan 2008 17:42:37 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Wed, 23 Jan 2008 17:42:37 +0000 (UTC)
+To: video4linux-list@redhat.com
+Original-X-From: video4linux-list-bounces@redhat.com Wed Jan 23 18:42:56 2008
+Return-path: <video4linux-list-bounces@redhat.com>
+Envelope-to: rh-video4linux-list@gmane.org
+Original-Received: from hormel.redhat.com ([209.132.177.30])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1JHjcT-00035B-5V
+ for rh-video4linux-list@gmane.org; Wed, 23 Jan 2008 18:42:38 +0100
+Original-Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110])
+ by hormel.redhat.com (Postfix) with ESMTP
+ id 9E85472FB4; Wed, 23 Jan 2008 12:42:10 -0500 (EST)
+Original-Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
+ [172.16.52.254])
+ by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id
+ m0NHg8l9017245 for <video4linux-list@listman.util.phx.redhat.com>;
+ Wed, 23 Jan 2008 12:42:08 -0500
+Original-Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
+ by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m0NHg8vG028189
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:42:08 -0500
+Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
+ by mx3.redhat.com (8.13.1/8.13.1) with SMTP id m0NHfZHu001044
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:35 -0500
+Original-Received: (qmail invoked by alias); 23 Jan 2008 17:41:29 -0000
+Original-Received: from p57BD2F1F.dip0.t-ipconnect.de (EHLO axis700.grange)
+ [87.189.47.31]
+ by mail.gmx.net (mp052) with SMTP; 23 Jan 2008 18:41:29 +0100
+X-Authenticated: #20450766
+X-Provags-ID: V01U2FsdGVkX18JzEdNfKMJtAD7BzHkb2TLaDIMUqlssnktvE95Pt
+ 3/al7Wqsw8NYli
+Original-Received: from lyakh (helo=localhost)
+ by axis700.grange with local-esmtp (Exim 4.63)
+ (envelope-from <g.liakhovetski@gmx.de>) id 1JHjbg-00029w-Ku
+ for video4linux-list@redhat.com; Wed, 23 Jan 2008 18:41:48 +0100
+X-X-Sender: lyakh@axis700.grange
+In-Reply-To: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+X-Y-GMX-Trusted: 0
+X-RedHat-Spam-Score: 0
+X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
+X-Scanned-By: MIMEDefang 2.58 on 172.16.48.32
+X-loop: video4linux-list@redhat.com
+X-BeenThere: video4linux-list@redhat.com
+X-Mailman-Version: 2.1.5
+Precedence: junk
+List-Id: Linux and Kernel Video <video4linux-list.redhat.com>
+List-Unsubscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=unsubscribe>
+List-Archive: <https://www.redhat.com/mailman/private/video4linux-list>
+List-Post: <mailto:video4linux-list@redhat.com>
+List-Help: <mailto:video4linux-list-request@redhat.com?subject=help>
+List-Subscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=subscribe>
+Original-Sender: video4linux-list-bounces@redhat.com
+Errors-To: video4linux-list-bounces@redhat.com
+Xref: news.gmane.org gmane.comp.video.video4linux:36473
+Archived-At: <http://permalink.gmane.org/gmane.comp.video.video4linux/36473>
+
+This driver supports Micron MT9M001 monochrome and colour cameras.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+---
+ drivers/media/video/Kconfig | 15 +
+ drivers/media/video/Makefile | 1 +
+ drivers/media/video/mt9m001.c | 649 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 665 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/media/video/mt9m001.c
+
+diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
+index dc0dfec..def5246 100644
+--- a/drivers/media/video/Kconfig
++++ b/drivers/media/video/Kconfig
+@@ -803,6 +803,21 @@ config SOC_CAMERA
+ over a bus like PCI or USB. For example some i2c camera hanging
+ directly on the data bus of an SoC.
+
++config SOC_CAMERA_MT9M001
++ tristate "mt9m001 support"
++ depends on SOC_CAMERA
++ select SENSORS_PCA9536 if MT9M001_PCA9536_SWITCH
++ help
++ This driver supports MT9M001 cameras from Micron, monochrome
++ and colour models.
++
++config MT9M001_PCA9536_SWITCH
++ bool "pca9536 datawidth switch for mt9m001"
++ depends on SOC_CAMERA_MT9M001
++ help
++ Select this if your MT9M001 camera uses a PCA9536 I2C GPIO
++ extender to switch between 8 and 10 bit datawidth modes
++
+ config VIDEO_PXA27X
+ tristate "PXA27x Quick Capture Interface driver"
+ depends on VIDEO_DEV && PXA27x
+diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
+index 81b7cd6..c56bfdb 100644
+--- a/drivers/media/video/Makefile
++++ b/drivers/media/video/Makefile
+@@ -118,5 +118,6 @@ obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+
+ obj-$(CONFIG_VIDEO_PXA27X) += pxa_camera.o
+ obj-$(CONFIG_SOC_CAMERA) += soc_camera.o
++obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o
+
+ EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
+diff --git a/drivers/media/video/mt9m001.c b/drivers/media/video/mt9m001.c
+new file mode 100644
+index 0000000..dc4cc8f
+--- /dev/null
++++ b/drivers/media/video/mt9m001.c
+@@ -0,0 +1,649 @@
++/*
++ * Driver for MT9M001 CMOS Image Sensor from Micron
++ *
++ * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
++ *
++ * 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/videodev.h>
++#include <linux/slab.h>
++#include <linux/i2c.h>
++#include <linux/log2.h>
++
++#include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++#include <media/soc_camera.h>
++
++/* mt9m001 i2c address 0x5d
++ * The platform has to define i2c_board_info
++ * and call i2c_register_board_info() */
++
++/* mt9m001 selected register addresses */
++#define MT9M001_CHIP_VERSION 0x00
++#define MT9M001_ROW_START 0x01
++#define MT9M001_COLUMN_START 0x02
++#define MT9M001_WINDOW_HEIGHT 0x03
++#define MT9M001_WINDOW_WIDTH 0x04
++#define MT9M001_HORIZONTAL_BLANKING 0x05
++#define MT9M001_VERTICAL_BLANKING 0x06
++#define MT9M001_OUTPUT_CONTROL 0x07
++#define MT9M001_SHUTTER_WIDTH 0x09
++#define MT9M001_FRAME_RESTART 0x0b
++#define MT9M001_SHUTTER_DELAY 0x0c
++#define MT9M001_RESET 0x0d
++#define MT9M001_READ_OPTIONS1 0x1e
++#define MT9M001_READ_OPTIONS2 0x20
++#define MT9M001_GLOBAL_GAIN 0x35
++#define MT9M001_CHIP_ENABLE 0xF1
++
++/* must be 32 bit, bitwise coded by reg_to_int and int_to_reg below */
++struct reg_access {
++ u16 value;
++ u8 address;
++ u8 rw;
++} __attribute__ ((packed));
++
++union reg_access_32 {
++ struct reg_access reg;
++ u32 ctrl;
++};
++
++enum reg_rw { REG_READ = 0, REG_WRITE = 1, };
++
++/*
++#define reg_to_int(rw, address, value) ({ \
++ union reg_access_32 u = {.reg = {value, address, rw}}; \
++ u.i32; \
++})
++*/
++
++/* rw has to be numerically most significant, because
++ * maximum, minimum and value are signed */
++#ifdef __LITTLE_ENDIAN
++#define reg_to_int(rw, address, value) (((value) & 0xffff) | (((address) & 0xff) << 16) | (((rw) & 0x7f) << 24))
++#else
++#define reg_to_int(rw, address, value) ((((value) & 0xffff) << 16) | (((address) & 0xff) << 8) | ((rw) & 0x7f))
++#endif
++
++static const struct soc_camera_data_format mt9m001_colour_formats[]= {
++ {
++ .name = "RGB Bayer (sRGB)",
++ .depth = 16,
++ .fourcc = V4L2_PIX_FMT_SBGGR8,
++ .colorspace = V4L2_COLORSPACE_SRGB,
++ }
++};
++
++static const struct soc_camera_data_format mt9m001_monochrome_formats[]= {
++ {
++ .name = "Monochrome 10 bit",
++ .depth = 10,
++ .fourcc = V4L2_PIX_FMT_Y16,
++ }, {
++ .name = "Monochrome 8 bit",
++ .depth = 8,
++ .fourcc = V4L2_PIX_FMT_GREY,
++ },
++};
++
++enum mt9m001_model {
++ MT9M001C12ST,
++ MT9M001C12STM
++};
++
++struct mt9m001 {
++ struct i2c_client *client;
++ struct soc_camera_device icd;
++ enum mt9m001_model model;
++ struct i2c_client *data_switch;
++ unsigned char autoexposure;
++ unsigned char datawidth;
++};
++
++static int reg_read(struct soc_camera_device *icd, const u8 reg)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++ struct i2c_client *client = mt9m001->client;
++ s32 data = i2c_smbus_read_word_data(client, reg);
++ return data < 0 ? data : swab16(data);
++}
++
++static int reg_write(struct soc_camera_device *icd, const u8 reg,
++ const u16 data)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++ return i2c_smbus_write_word_data(mt9m001->client, reg, swab16(data));
++}
++
++static int reg_set(struct soc_camera_device *icd, const u8 reg,
++ const u16 data)
++{
++ int ret;
++
++ if ((ret = reg_read(icd, reg)) < 0)
++ return ret;
++ return reg_write(icd, reg, ret | data);
++}
++
++static int reg_clear(struct soc_camera_device *icd, const u8 reg,
++ const u16 data)
++{
++ int ret;
++
++ if ((ret = reg_read(icd, reg)) < 0)
++ return ret;
++ return reg_write(icd, reg, ret & ~data);
++}
++
++static int mt9m001_init(struct soc_camera_device *icd)
++{
++ int ret;
++
++ /* Disable chip, synchronous option update */
++ dev_dbg(icd->vdev->dev, "%s\n", __FUNCTION__);
++
++ ret = reg_write(icd, MT9M001_RESET, 1);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9M001_RESET, 0);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9M001_OUTPUT_CONTROL, 0);
++
++ return ret >= 0 ? 0 : -EIO;
++}
++
++static int mt9m001_release(struct soc_camera_device *icd)
++{
++ /* Disable the chip */
++ reg_write(icd, MT9M001_OUTPUT_CONTROL, 0);
++ return 0;
++}
++
++static int mt9m001_start_capture(struct soc_camera_device *icd)
++{
++ /* Switch to master "normal" mode */
++ if (reg_write(icd, MT9M001_OUTPUT_CONTROL, 2) < 0)
++ return -EIO;
++ return 0;
++}
++
++static int mt9m001_stop_capture(struct soc_camera_device *icd)
++{
++ /* Stop sensor readout */
++ if (reg_write(icd, MT9M001_OUTPUT_CONTROL, 0) < 0)
++ return -EIO;
++ return 0;
++}
++
++extern int pca9536_set_level(struct i2c_client *client, u8 pin, u8 level);
++
++static int external_bus_switch(struct i2c_client *extender, int go8bit)
++{
++ if (! extender)
++ return -ENODEV;
++
++#ifdef CONFIG_MT9M001_PCA9536_SWITCH
++ return pca9536_set_level(extender, 0, go8bit);
++#else
++ return -ENODEV;
++#endif
++}
++
++static int mt9m001_set_capture_format(struct soc_camera_device *icd, __u32 pixfmt,
++ struct v4l2_rect *rect, unsigned int flags)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++ unsigned int width_flag = flags & (IS_DATAWIDTH_10 | IS_DATAWIDTH_9 |
++ IS_DATAWIDTH_8);
++ int ret;
++ const u16 hblank = 9, vblank = 25;
++
++ /* MT9M001 has all capture_format parameters fixed */
++ if (! (flags & IS_MASTER) ||
++ ! (flags & IS_PCLK_SAMPLE_RISING) ||
++ ! (flags & IS_HSYNC_ACTIVE_HIGH) ||
++ ! (flags & IS_VSYNC_ACTIVE_HIGH)) {
++ return -EINVAL;
++ }
++
++ /* Only one width bit may be set */
++ if (!is_power_of_2(width_flag))
++ return -EINVAL;
++
++ if ((mt9m001->datawidth != 10 && (width_flag == IS_DATAWIDTH_10)) ||
++ (mt9m001->datawidth != 9 && (width_flag == IS_DATAWIDTH_9)) ||
++ (mt9m001->datawidth != 8 && (width_flag == IS_DATAWIDTH_8))) {
++ /* data width switch requested */
++ if (! mt9m001->data_switch)
++ return -EINVAL;
++
++ /* Well, we actually only can do 10 or 8 bits... */
++ if (width_flag == IS_DATAWIDTH_9)
++ return -EINVAL;
++ ret = external_bus_switch(mt9m001->data_switch,
++ width_flag == IS_DATAWIDTH_8);
++ if (ret < 0)
++ return ret;
++
++ mt9m001->datawidth = width_flag == IS_DATAWIDTH_8 ? 8 : 10;
++ }
++
++ /* Blanking and start values - default... */
++ ret = reg_write(icd, MT9M001_HORIZONTAL_BLANKING, hblank);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9M001_VERTICAL_BLANKING, vblank);
++
++ /* The caller provides a supported format, as verified per
++ * call to icd->try_fmt_cap() */
++ if (ret >= 0)
++ ret = reg_write(icd, MT9M001_COLUMN_START, rect->left);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9M001_ROW_START, rect->top);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9M001_WINDOW_WIDTH, rect->width - 1);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9M001_WINDOW_HEIGHT, rect->height + icd->y_skip_top - 1);
++ if (ret >= 0 && mt9m001->autoexposure) {
++ ret = reg_write(icd, MT9M001_SHUTTER_WIDTH, rect->height + icd->y_skip_top + vblank);
++ if (ret >= 0) {
++ const struct v4l2_queryctrl *qctrl =
++ soc_camera_find_qctrl(icd->ops, V4L2_CID_EXPOSURE);
++ icd->exposure = (524 + (rect->height + icd->y_skip_top + vblank - 1) *
++ (qctrl->maximum - qctrl->minimum)) /
++ 1048 + qctrl->minimum;
++ }
++ }
++
++ return ret < 0 ? ret : 0;
++}
++
++static int mt9m001_try_fmt_cap(struct soc_camera_device *icd,
++ struct v4l2_format *f)
++{
++ if (f->fmt.pix.height < 32 + icd->y_skip_top)
++ f->fmt.pix.height = 32 + icd->y_skip_top;
++ if (f->fmt.pix.height > 1024 + icd->y_skip_top)
++ f->fmt.pix.height = 1024 + icd->y_skip_top;
++ if (f->fmt.pix.width < 48)
++ f->fmt.pix.width = 48;
++ if (f->fmt.pix.width > 1280)
++ f->fmt.pix.width = 1280;
++ f->fmt.pix.width &= ~0x01; /* has to be even, unsure why was ~3 */
++
++ return 0;
++}
++
++static unsigned int mt9m001_get_datawidth(struct soc_camera_device *icd)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++ return mt9m001->datawidth;
++}
++
++const struct v4l2_queryctrl mt9m001_controls[] = {
++ {
++ .id = V4L2_CID_VFLIP,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Flip Vertically",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 0,
++ }, {
++ .id = V4L2_CID_GAIN,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Gain",
++ .minimum = 0,
++ .maximum = 127,
++ .step = 1,
++ .default_value = 64,
++ .flags = V4L2_CTRL_FLAG_SLIDER,
++ }, {
++ .id = V4L2_CID_EXPOSURE,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Exposure",
++ .minimum = 1,
++ .maximum = 255,
++ .step = 1,
++ .default_value = 255,
++ .flags = V4L2_CTRL_FLAG_SLIDER,
++ }, {
++ .id = V4L2_CID_AUTOEXPOSURE,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Automatic Exposure",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 1,
++ }, {
++ .id = V4L2_CID_PRIVATE_BASE,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Register access",
++ .minimum = reg_to_int(REG_READ, 0, 0),
++ .maximum = reg_to_int(REG_WRITE, 0xff, (1 << 16) - 1),
++ .step = 1,
++ .default_value = 1,
++ }
++};
++
++static int mt9m001_get_control(struct soc_camera_device *icd, struct v4l2_control *ctrl);
++static int mt9m001_set_control(struct soc_camera_device *icd, struct v4l2_control *ctrl);
++
++static struct soc_camera_ops mt9m001_ops = {
++ .owner = THIS_MODULE,
++ .init = mt9m001_init,
++ .release = mt9m001_release,
++ .start_capture = mt9m001_start_capture,
++ .stop_capture = mt9m001_stop_capture,
++ .set_capture_format = mt9m001_set_capture_format,
++ .try_fmt_cap = mt9m001_try_fmt_cap,
++ .formats = NULL, /* Filled in later depending on the */
++ .num_formats = 0, /* camera type and data widths */
++ .get_datawidth = mt9m001_get_datawidth,
++ .controls = mt9m001_controls,
++ .num_controls = ARRAY_SIZE(mt9m001_controls),
++ .get_control = mt9m001_get_control,
++ .set_control = mt9m001_set_control,
++};
++
++static int mt9m001_get_control(struct soc_camera_device *icd, struct v4l2_control *ctrl)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++ int data;
++
++ switch (ctrl->id) {
++ case V4L2_CID_VFLIP:
++ data = reg_read(icd, MT9M001_READ_OPTIONS2);
++ if (data < 0)
++ return -EIO;
++ ctrl->value = !!(data & 0x8000);
++ break;
++ case V4L2_CID_AUTOEXPOSURE:
++ ctrl->value = mt9m001->autoexposure;
++ break;
++ case V4L2_CID_PRIVATE_BASE:
++ if (1) {
++ union reg_access_32 u;
++
++ u.ctrl = ctrl->value;
++ if (u.reg.rw != REG_READ)
++ return -EINVAL;
++ data = reg_read(icd, u.reg.address);
++ if (data < 0)
++ return -EIO;
++ u.reg.value = data;
++ ctrl->value = u.ctrl;
++ }
++ }
++ return 0;
++}
++
++static int mt9m001_set_control(struct soc_camera_device *icd, struct v4l2_control *ctrl)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++ const struct v4l2_queryctrl *qctrl;
++ int data;
++
++ qctrl = soc_camera_find_qctrl(&mt9m001_ops, ctrl->id);
++
++ if (!qctrl)
++ return -EINVAL;
++
++ switch (ctrl->id) {
++ case V4L2_CID_VFLIP:
++ if (ctrl->value)
++ data = reg_set(icd, MT9M001_READ_OPTIONS2, 0x8000);
++ else
++ data = reg_clear(icd, MT9M001_READ_OPTIONS2, 0x8000);
++ if (data < 0)
++ return -EIO;
++ break;
++ case V4L2_CID_GAIN:
++ if (ctrl->value > qctrl->maximum || ctrl->value < qctrl->minimum)
++ return -EINVAL;
++ /* See Datasheet Table 7, Gain settings. */
++ if (ctrl->value <= qctrl->default_value) {
++ /* Pack it into 0..1 step 0.125, register values 0..8 */
++ unsigned long range = qctrl->default_value - qctrl->minimum;
++ data = ((ctrl->value - qctrl->minimum) * 8 + range / 2) / range;
++
++ printk("Setting gain %d\n", data);
++ data = reg_write(icd, MT9M001_GLOBAL_GAIN, data);
++ if (data < 0)
++ return -EIO;
++ } else {
++ /* Pack it into 1.125..15 variable step, register values 9..67 */
++ /* We assume qctrl->maximum - qctrl->default_value - 1 > 0 */
++ unsigned long range = qctrl->maximum - qctrl->default_value - 1;
++ unsigned long gain = ((ctrl->value - qctrl->default_value - 1) *
++ 111 + range / 2) / range + 9;
++
++ if (gain <= 32)
++ data = gain;
++ else if (gain <= 64)
++ data = ((gain - 32) * 16 + 16) / 32 + 80;
++ else
++ data = ((gain - 64) * 7 + 28) / 56 + 96;
++
++ dev_info(&icd->dev, "Setting gain from %d to %d\n",
++ reg_read(icd, MT9M001_GLOBAL_GAIN), data);
++ data = reg_write(icd, MT9M001_GLOBAL_GAIN, data);
++ if (data < 0)
++ return -EIO;
++ }
++
++ /* Success */
++ icd->gain = ctrl->value;
++ break;
++ case V4L2_CID_EXPOSURE:
++ /* mt9m001 has maximum == default */
++ if (ctrl->value > qctrl->maximum || ctrl->value < qctrl->minimum)
++ return -EINVAL;
++ else {
++ unsigned long range = qctrl->maximum - qctrl->minimum;
++ unsigned long shutter = ((ctrl->value - qctrl->minimum) * 1048 +
++ range / 2) / range + 1;
++
++ dev_info(&icd->dev, "Setting shutter width from %d to %lu\n",
++ reg_read(icd, MT9M001_SHUTTER_WIDTH), shutter);
++ if (reg_write(icd, MT9M001_SHUTTER_WIDTH, shutter) < 0)
++ return -EIO;
++ icd->exposure = ctrl->value;
++ mt9m001->autoexposure = 0;
++ }
++ break;
++ case V4L2_CID_AUTOEXPOSURE:
++ if (ctrl->value) {
++ const u16 vblank = 25;
++ if (reg_write(icd, MT9M001_SHUTTER_WIDTH, icd->height +
++ icd->y_skip_top + vblank) < 0)
++ return -EIO;
++ qctrl = soc_camera_find_qctrl(icd->ops, V4L2_CID_EXPOSURE);
++ icd->exposure = (524 + (icd->height + icd->y_skip_top + vblank - 1) *
++ (qctrl->maximum - qctrl->minimum)) /
++ 1048 + qctrl->minimum;
++ mt9m001->autoexposure = 1;
++ } else
++ mt9m001->autoexposure = 0;
++ break;
++ case V4L2_CID_PRIVATE_BASE:
++ if (1) {
++ union reg_access_32 u;
++
++ u.ctrl = ctrl->value;
++ if (u.reg.rw != REG_WRITE)
++ return -EINVAL;
++ data = reg_write(icd, u.reg.address, u.reg.value);
++ if (data < 0)
++ return -EIO;
++ }
++ }
++ return 0;
++}
++
++/* Interface active, can use i2c. If it fails, it can indeed mean, that
++ * this wasn't our capture interface, so, we wait for the right one */
++static int mt9m001_video_probe(struct soc_camera_device *icd)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++ s32 data;
++ int ret;
++
++ /* We must have a parent by now. And it cannot be a wrong one.
++ * So this entire test is completely redundant. */
++ if (!icd->dev.parent ||
++ to_soc_camera_host(icd->dev.parent)->nr != icd->iface)
++ return -ENODEV;
++
++ /* Enable the chip */
++ data = reg_write(&mt9m001->icd, MT9M001_CHIP_ENABLE, 1);
++ dev_dbg(&icd->dev, "write: %d\n", data);
++
++ /* Read out the chip version register */
++ data = reg_read(icd, MT9M001_CHIP_VERSION);
++
++ /* must be 0x8411 or 0x8421 for colour sensor and 8431 for bw */
++ switch (data) {
++ case 0x8411:
++ case 0x8421:
++ mt9m001->model = MT9M001C12ST;
++ mt9m001_ops.formats = mt9m001_colour_formats;
++ mt9m001_ops.num_formats = ARRAY_SIZE(mt9m001_colour_formats);
++ break;
++ case 0x8431:
++ mt9m001->model = MT9M001C12STM;
++ mt9m001_ops.formats = mt9m001_monochrome_formats;
++ if (mt9m001->client->dev.platform_data)
++ mt9m001_ops.num_formats = ARRAY_SIZE(mt9m001_monochrome_formats);
++ else
++ mt9m001_ops.num_formats = 1;
++ break;
++ default:
++ ret = -ENODEV;
++ dev_err(&icd->dev,
++ "No MT9M001 chip detected, register read %x\n", data);
++ goto ei2c;
++ }
++
++ dev_info(&icd->dev, "Detected a MT9M001 chip ID %x (%s)\n", data,
++ data == 0x8431 ? "C12STM" : "C12ST");
++
++ /* Now that we know the model, we can start video */
++ ret = soc_camera_video_start(icd);
++ if (ret)
++ goto eisis;
++
++ return 0;
++
++eisis:
++ei2c:
++ return ret;
++}
++
++static void mt9m001_video_remove(struct soc_camera_device *icd)
++{
++ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
++
++ dev_dbg(&icd->dev, "Video %x removed: %p, %p\n", mt9m001->client->addr,
++ mt9m001->icd.dev.parent, mt9m001->icd.vdev);
++ soc_camera_video_stop(&mt9m001->icd);
++}
++
++static int mt9m001_probe(struct i2c_client *client)
++{
++ struct mt9m001 *mt9m001;
++ struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
++ int ret;
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WORD_DATA)) {
++ pr_debug("%s: I2C-Adapter doesn't support I2C_FUNC_SMBUS_WORD\n", __FUNCTION__);
++ return -EIO;
++ }
++
++ if (!(mt9m001 = kzalloc(sizeof(struct mt9m001), GFP_KERNEL)))
++ return -ENOMEM;
++
++ mt9m001->client = client;
++ i2c_set_clientdata(client, mt9m001);
++
++ /* Second stage probe - when a capture adapter is there */
++ mt9m001->icd.probe = mt9m001_video_probe;
++ mt9m001->icd.remove = mt9m001_video_remove;
++ mt9m001->icd.ops = &mt9m001_ops;
++ mt9m001->icd.control = &client->dev;
++ mt9m001->icd.x_min = 20;
++ mt9m001->icd.y_min = 12;
++ mt9m001->icd.x_current = 20;
++ mt9m001->icd.y_current = 12;
++ mt9m001->icd.width_min = 48;
++ mt9m001->icd.width_max = 1280;
++ mt9m001->icd.height_min = 32;
++ mt9m001->icd.height_max = 1024;
++ mt9m001->icd.y_skip_top = 1;
++ /* Default datawidth - this is the only width this camera (normally)
++ * supports. It is only with extra logic that it can support
++ * other widths. Therefore it seems to be a sensible default. */
++ mt9m001->datawidth = 10;
++ /* Simulated autoexposure. If enabled, we calculate shutter width
++ * ourselves in the driver based on vertical blanking and frame width */
++ mt9m001->autoexposure = 1;
++
++ if (client->dev.platform_data) {
++ struct soc_camera_link *icl = client->dev.platform_data;
++ /* We have a data bus switch. We call pca9536 functions
++ * explicitly by name so the driver will not be unloaded,
++ * and we'll check mt9m001->data_switch anyway every time
++ * before calling. The only concern is that the driver
++ * doesn't detach itself from the device, but so far it is
++ * not supported by the I2C layer */
++ if (icl->extender)
++ mt9m001->data_switch = *icl->extender;
++ mt9m001->icd.iface = icl->bus_id;
++ }
++
++ ret = soc_camera_device_register(&mt9m001->icd);
++ if (ret)
++ goto eisdr;
++
++ return 0;
++
++eisdr:
++ kfree(mt9m001);
++ return ret;
++}
++
++static int mt9m001_remove(struct i2c_client *client)
++{
++ struct mt9m001 *mt9m001 = i2c_get_clientdata(client);
++
++ soc_camera_device_unregister(&mt9m001->icd);
++ kfree(mt9m001);
++
++ return 0;
++}
++
++static struct i2c_driver mt9m001_i2c_driver = {
++ .driver = {
++ .name = "mt9m001",
++ },
++ .probe = mt9m001_probe,
++ .remove = mt9m001_remove,
++};
++
++static int __init mt9m001_mod_init(void)
++{
++ return i2c_add_driver(&mt9m001_i2c_driver);
++}
++
++static void __exit mt9m001_mod_exit(void)
++{
++ i2c_del_driver(&mt9m001_i2c_driver);
++}
++
++module_init(mt9m001_mod_init);
++module_exit(mt9m001_mod_exit);
++
++MODULE_DESCRIPTION("Micron MT9M001 Camera driver");
++MODULE_AUTHOR("Guennadi Liakhovetski <kernel@pengutronix.de>");
++MODULE_LICENSE("GPL");
+--
+1.5.3.4
+
+--
+video4linux-list mailing list
+Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
+https://www.redhat.com/mailman/listinfo/video4linux-list
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxav4l5-8.patch.eml b/packages/linux/linux-ezx-2.6.24/patches/pxav4l5-8.patch.eml
new file mode 100644
index 0000000000..33fbf12e20
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxav4l5-8.patch.eml
@@ -0,0 +1,882 @@
+Path: news.gmane.org!not-for-mail
+From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+Newsgroups: gmane.comp.video.video4linux
+Subject: [RFC PATCH 5/8] Add support for the MT9V022 camera
+Date: Wed, 23 Jan 2008 18:41:55 +0100 (CET)
+Lines: 811
+Approved: news@gmane.org
+Message-ID: <Pine.LNX.4.64.0801231826270.4932@axis700.grange>
+References: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: ger.gmane.org 1201110170 28931 80.91.229.12 (23 Jan 2008 17:42:50 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Wed, 23 Jan 2008 17:42:50 +0000 (UTC)
+To: video4linux-list@redhat.com
+Original-X-From: video4linux-list-bounces@redhat.com Wed Jan 23 18:43:08 2008
+Return-path: <video4linux-list-bounces@redhat.com>
+Envelope-to: rh-video4linux-list@gmane.org
+Original-Received: from hormel.redhat.com ([209.132.177.30])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1JHjcd-0003BV-40
+ for rh-video4linux-list@gmane.org; Wed, 23 Jan 2008 18:42:47 +0100
+Original-Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110])
+ by hormel.redhat.com (Postfix) with ESMTP
+ id C4D7773103; Wed, 23 Jan 2008 12:42:17 -0500 (EST)
+Original-Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
+ [172.16.52.254])
+ by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id
+ m0NHgEOS017265 for <video4linux-list@listman.util.phx.redhat.com>;
+ Wed, 23 Jan 2008 12:42:14 -0500
+Original-Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
+ by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m0NHgDux028248
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:42:13 -0500
+Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
+ by mx3.redhat.com (8.13.1/8.13.1) with SMTP id m0NHfhB0001132
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:43 -0500
+Original-Received: (qmail invoked by alias); 23 Jan 2008 17:41:36 -0000
+Original-Received: from p57BD2F1F.dip0.t-ipconnect.de (EHLO axis700.grange)
+ [87.189.47.31]
+ by mail.gmx.net (mp007) with SMTP; 23 Jan 2008 18:41:36 +0100
+X-Authenticated: #20450766
+X-Provags-ID: V01U2FsdGVkX195mwEUb8x5N9fm4LtKVLZ+GalahBZqOqI6J/GHUG
+ kn7bBfBiSjX3u4
+Original-Received: from lyakh (helo=localhost)
+ by axis700.grange with local-esmtp (Exim 4.63)
+ (envelope-from <g.liakhovetski@gmx.de>) id 1JHjbn-00029z-Tk
+ for video4linux-list@redhat.com; Wed, 23 Jan 2008 18:41:55 +0100
+X-X-Sender: lyakh@axis700.grange
+In-Reply-To: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+X-Y-GMX-Trusted: 0
+X-RedHat-Spam-Score: 0
+X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
+X-Scanned-By: MIMEDefang 2.58 on 172.16.48.32
+X-loop: video4linux-list@redhat.com
+X-BeenThere: video4linux-list@redhat.com
+X-Mailman-Version: 2.1.5
+Precedence: junk
+List-Id: Linux and Kernel Video <video4linux-list.redhat.com>
+List-Unsubscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=unsubscribe>
+List-Archive: <https://www.redhat.com/mailman/private/video4linux-list>
+List-Post: <mailto:video4linux-list@redhat.com>
+List-Help: <mailto:video4linux-list-request@redhat.com?subject=help>
+List-Subscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=subscribe>
+Original-Sender: video4linux-list-bounces@redhat.com
+Errors-To: video4linux-list-bounces@redhat.com
+Xref: news.gmane.org gmane.comp.video.video4linux:36476
+Archived-At: <http://permalink.gmane.org/gmane.comp.video.video4linux/36476>
+
+This driver supports Micron MT9V022 colour camera.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+---
+ drivers/media/video/Kconfig | 14 +
+ drivers/media/video/Makefile | 1 +
+ drivers/media/video/mt9v022.c | 751 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 766 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/media/video/mt9v022.c
+
+diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
+index def5246..1359f8f 100644
+--- a/drivers/media/video/Kconfig
++++ b/drivers/media/video/Kconfig
+@@ -818,6 +818,20 @@ config MT9M001_PCA9536_SWITCH
+ Select this if your MT9M001 camera uses a PCA9536 I2C GPIO
+ extender to switch between 8 and 10 bit datawidth modes
+
++config SOC_CAMERA_MT9V022
++ tristate "mt9v022 support"
++ depends on SOC_CAMERA
++ select SENSORS_PCA9536 if MT9V022_PCA9536_SWITCH
++ help
++ This driver supports MT9V022 cameras from Micron
++
++config MT9V022_PCA9536_SWITCH
++ bool "pca9536 datawidth switch for mt9v022"
++ depends on SOC_CAMERA_MT9V022
++ help
++ Select this if your MT9V022 camera uses a PCA9536 I2C GPIO
++ extender to switch between 8 and 10 bit datawidth modes
++
+ config VIDEO_PXA27X
+ tristate "PXA27x Quick Capture Interface driver"
+ depends on VIDEO_DEV && PXA27x
+diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
+index c56bfdb..6eaf0ad 100644
+--- a/drivers/media/video/Makefile
++++ b/drivers/media/video/Makefile
+@@ -119,5 +119,6 @@ obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+ obj-$(CONFIG_VIDEO_PXA27X) += pxa_camera.o
+ obj-$(CONFIG_SOC_CAMERA) += soc_camera.o
+ obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o
++obj-$(CONFIG_SOC_CAMERA_MT9V022) += mt9v022.o
+
+ EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
+diff --git a/drivers/media/video/mt9v022.c b/drivers/media/video/mt9v022.c
+new file mode 100644
+index 0000000..d13b965
+--- /dev/null
++++ b/drivers/media/video/mt9v022.c
+@@ -0,0 +1,751 @@
++/*
++ * Driver for MT9V022 CMOS Image Sensor from Micron
++ *
++ * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
++ *
++ * 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/videodev.h>
++#include <linux/slab.h>
++#include <linux/i2c.h>
++#include <linux/delay.h>
++#include <linux/log2.h>
++
++#include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++#include <media/soc_camera.h>
++
++/* mt9v022 i2c address 0x48, 0x4c, 0x58, 0x5c
++ * The platform has to define i2c_board_info
++ * and call i2c_register_board_info() */
++
++static char *sensor_type;
++module_param(sensor_type, charp, S_IRUGO);
++MODULE_PARM_DESC(sensor_type, "Sensor type: \"colour\" or \"monochrome\"\n");
++
++/* mt9v022 selected register addresses */
++#define MT9V022_CHIP_VERSION 0x00
++#define MT9V022_COLUMN_START 0x01
++#define MT9V022_ROW_START 0x02
++#define MT9V022_WINDOW_HEIGHT 0x03
++#define MT9V022_WINDOW_WIDTH 0x04
++#define MT9V022_HORIZONTAL_BLANKING 0x05
++#define MT9V022_VERTICAL_BLANKING 0x06
++#define MT9V022_CHIP_CONTROL 0x07
++#define MT9V022_SHUTTER_WIDTH1 0x08
++#define MT9V022_SHUTTER_WIDTH2 0x09
++#define MT9V022_SHUTTER_WIDTH_CTRL 0x0a
++#define MT9V022_TOTAL_SHUTTER_WIDTH 0x0b
++#define MT9V022_RESET 0x0c
++#define MT9V022_READ_MODE 0x0d
++#define MT9V022_MONITOR_MODE 0x0e
++#define MT9V022_PIXEL_OPERATION_MODE 0x0f
++#define MT9V022_LED_OUT_CONTROL 0x1b
++#define MT9V022_ADC_MODE_CONTROL 0x1c
++#define MT9V022_ANALOG_GAIN 0x34
++#define MT9V022_BLACK_LEVEL_CALIB_CTRL 0x47
++#define MT9V022_PIXCLK_FV_LV 0x74
++#define MT9V022_DIGITAL_TEST_PATTERN 0x7f
++#define MT9V022_AEC_AGC_ENABLE 0xAF
++#define MT9V022_MAX_TOTAL_SHUTTER_WIDTH 0xBD
++
++/* Progressive scan, master, defaults */
++#define MT9V022_CHIP_CONTROL_DEFAULT 0x188
++
++/* must be 32 bit, bitwise coded by reg_to_int and int_to_reg below */
++struct reg_access {
++ u16 value;
++ u8 address;
++ u8 rw;
++} __attribute__ ((packed));
++
++union reg_access_32 {
++ struct reg_access reg;
++ u32 ctrl;
++};
++
++enum reg_rw { REG_READ = 0, REG_WRITE = 1, };
++
++/*
++#define reg_to_int(rw, address, value) ({ \
++ union reg_access_32 u = {.reg = {value, address, rw}}; \
++ u.i32; \
++})
++*/
++
++/* rw has to be numerically most significant, because
++ * maximum, minimum and value are signed */
++#ifdef __LITTLE_ENDIAN
++#define reg_to_int(rw, address, value) (((value) & 0xffff) | (((address) & 0xff) << 16) | (((rw) & 0x7f) << 24))
++#else
++#define reg_to_int(rw, address, value) ((((value) & 0xffff) << 16) | (((address) & 0xff) << 8) | ((rw) & 0x7f))
++#endif
++
++static const struct soc_camera_data_format mt9v022_formats[]= {
++ {
++ .name = "RGB Bayer (sRGB)",
++ .depth = 8,
++ .fourcc = V4L2_PIX_FMT_SBGGR8,
++ .colorspace = V4L2_COLORSPACE_SRGB,
++ }, {
++ .name = "RGB Bayer (sRGB)",
++ .depth = 10,
++ .fourcc = V4L2_PIX_FMT_SBGGR16,
++ .colorspace = V4L2_COLORSPACE_SRGB,
++ }, {
++ .name = "Monochrome 10 bit",
++ .depth = 10,
++ .fourcc = V4L2_PIX_FMT_Y16,
++ }, {
++ .name = "Monochrome 8 bit",
++ .depth = 8,
++ .fourcc = V4L2_PIX_FMT_GREY,
++ },
++};
++
++enum mt9v022_sensor {
++ MT9V022_SENSOR_MONOCHROME,
++ MT9V022_SENSOR_COLOUR,
++};
++
++struct mt9v022 {
++ struct i2c_client *client;
++ struct soc_camera_device icd;
++ enum mt9v022_sensor sensor;
++ struct i2c_client *data_switch;
++ u16 chip_control;
++ unsigned char datawidth;
++};
++
++static int reg_read(struct soc_camera_device *icd, const u8 reg)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ struct i2c_client *client = mt9v022->client;
++ s32 data = i2c_smbus_read_word_data(client, reg);
++ return data < 0 ? data : swab16(data);
++}
++
++static int reg_write(struct soc_camera_device *icd, const u8 reg,
++ const u16 data)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ return i2c_smbus_write_word_data(mt9v022->client, reg, swab16(data));
++}
++
++static int reg_set(struct soc_camera_device *icd, const u8 reg,
++ const u16 data)
++{
++ int ret;
++
++ if ((ret = reg_read(icd, reg)) < 0)
++ return ret;
++ return reg_write(icd, reg, ret | data);
++}
++
++static int reg_clear(struct soc_camera_device *icd, const u8 reg,
++ const u16 data)
++{
++ int ret;
++
++ if ((ret = reg_read(icd, reg)) < 0)
++ return ret;
++ return reg_write(icd, reg, ret & ~data);
++}
++
++static int mt9v022_init(struct soc_camera_device *icd)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ int ret;
++
++ /* Almost the default mode: master, parallel, simultaneous, and an
++ * undocumented bit 0x200, which is present in table 7, but not in 8,
++ * plus snapshot mode to disable scan for now */
++// mt9v022->chip_control |= 0x10;
++ ret = reg_write(icd, MT9V022_CHIP_CONTROL, mt9v022->chip_control);
++ if (ret >= 0)
++ reg_write(icd, MT9V022_READ_MODE, 0x300);
++
++ /* All defaults */
++ if (ret >= 0)
++ ret = reg_set(icd, MT9V022_AEC_AGC_ENABLE, 0x3); /* AEC, AGC on */
++ if (ret >= 0)
++ ret = reg_write(icd, MT9V022_MAX_TOTAL_SHUTTER_WIDTH, 480);
++ if (ret >= 0)
++ ret = reg_clear(icd, MT9V022_BLACK_LEVEL_CALIB_CTRL, 1); /* default - auto */
++ if (ret >= 0)
++ ret = reg_write(icd, MT9V022_DIGITAL_TEST_PATTERN, 0);
++
++ return ret < 0 ? ret :0;
++}
++
++static int mt9v022_release(struct soc_camera_device *icd)
++{
++ /* Nothing? */
++ return 0;
++}
++
++static int mt9v022_start_capture(struct soc_camera_device *icd)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ /* Switch to master "normal" mode */
++ mt9v022->chip_control &= ~0x10;
++ if (reg_write(icd, MT9V022_CHIP_CONTROL,
++ mt9v022->chip_control) < 0)
++ return -EIO;
++ return 0;
++}
++
++static int mt9v022_stop_capture(struct soc_camera_device *icd)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ /* Switch to snapshot mode */
++// mt9v022->chip_control |= 0x10;
++ if (reg_write(icd, MT9V022_CHIP_CONTROL,
++ mt9v022->chip_control) < 0)
++ return -EIO;
++ return 0;
++}
++
++extern int pca9536_set_level(struct i2c_client *client, u8 pin, u8 level);
++
++static int external_bus_switch(struct i2c_client *extender, int go8bit)
++{
++ if (! extender)
++ return -ENODEV;
++
++#ifdef CONFIG_MT9V022_PCA9536_SWITCH
++ return pca9536_set_level(extender, 0, go8bit);
++#else
++ return -ENODEV;
++#endif
++}
++
++static int mt9v022_set_capture_format(struct soc_camera_device *icd, __u32 pixfmt,
++ struct v4l2_rect *rect, unsigned int flags)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ unsigned int width_flag = flags & (IS_DATAWIDTH_10 | IS_DATAWIDTH_9 |
++ IS_DATAWIDTH_8);
++ u16 pixclk = 0;
++ int ret;
++
++ /* Only one width bit may be set */
++ if (!is_power_of_2(width_flag))
++ return -EINVAL;
++
++ /* The caller provides a supported format, as verified per call to
++ * icd->try_fmt_cap(), datawidth is from our supported format list */
++ switch (pixfmt) {
++ case V4L2_PIX_FMT_GREY:
++ case V4L2_PIX_FMT_Y16:
++ if (mt9v022->sensor != MT9V022_SENSOR_MONOCHROME)
++ return -EINVAL;
++ break;
++ case V4L2_PIX_FMT_SBGGR8:
++ case V4L2_PIX_FMT_SBGGR16:
++ if (mt9v022->sensor != MT9V022_SENSOR_COLOUR)
++ return -EINVAL;
++ break;
++ case 0:
++ /* No format change, only geometry */
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ /* Like in example app. Contradicts the datasheet though */
++ ret = reg_read(icd, MT9V022_AEC_AGC_ENABLE);
++ if (ret >= 0) {
++ if (ret & 1) /* Autoexposure */
++ ret = reg_write(icd, MT9V022_MAX_TOTAL_SHUTTER_WIDTH,
++ rect->height + icd->y_skip_top + 43);
++ else
++ ret = reg_write(icd, MT9V022_TOTAL_SHUTTER_WIDTH,
++ rect->height + icd->y_skip_top + 43);
++ }
++ /* Setup frame format: defaults apart from width and height */
++ if (ret >= 0)
++ ret = reg_write(icd, MT9V022_COLUMN_START, rect->left);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9V022_ROW_START, rect->top);
++ if (ret >= 0)
++ /* Default 94, Phytec driver says: "width + horizontal blank >= 660" */
++ ret = reg_write(icd, MT9V022_HORIZONTAL_BLANKING,
++ rect->width > 660 - 43 ? 43 : 660 - rect->width);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9V022_VERTICAL_BLANKING, 45);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9V022_WINDOW_WIDTH, rect->width);
++ if (ret >= 0)
++ ret = reg_write(icd, MT9V022_WINDOW_HEIGHT, rect->height + icd->y_skip_top);
++
++ if (ret < 0)
++ return ret;
++
++ dev_dbg(&icd->dev, "Frame %ux%u pixel\n", rect->width, rect->height);
++
++ if ((mt9v022->datawidth != 10 && (width_flag == IS_DATAWIDTH_10)) ||
++ (mt9v022->datawidth != 9 && (width_flag == IS_DATAWIDTH_9)) ||
++ (mt9v022->datawidth != 8 && (width_flag == IS_DATAWIDTH_8))) {
++ /* data width switch requested */
++ if (! mt9v022->data_switch)
++ return -EINVAL;
++
++ /* Well, we actually only can do 10 or 8 bits... */
++ if (width_flag == IS_DATAWIDTH_9)
++ return -EINVAL;
++
++ ret = external_bus_switch(mt9v022->data_switch,
++ width_flag == IS_DATAWIDTH_8);
++ if (ret < 0)
++ return ret;
++
++ mt9v022->datawidth = width_flag == IS_DATAWIDTH_8 ? 8 : 10;
++ }
++
++ if (flags & IS_PCLK_SAMPLE_RISING)
++ pixclk |= 0x10;
++
++ if (! (flags & IS_HSYNC_ACTIVE_HIGH))
++ pixclk |= 0x1;
++
++ if (! (flags & IS_VSYNC_ACTIVE_HIGH))
++ pixclk |= 0x2;
++
++ if ((ret = reg_write(icd, MT9V022_PIXCLK_FV_LV, pixclk)) < 0)
++ return ret;
++
++ if (! (flags & IS_MASTER))
++ mt9v022->chip_control &= ~0x8;
++
++ if ((ret = reg_write(icd, MT9V022_CHIP_CONTROL, mt9v022->chip_control)) < 0)
++ return ret;
++
++ dev_dbg(&icd->dev, "Calculated pixclk 0x%x, chip control 0x%x\n",
++ pixclk, mt9v022->chip_control);
++
++ return 0;
++}
++
++static int mt9v022_try_fmt_cap(struct soc_camera_device *icd,
++ struct v4l2_format *f)
++{
++ if (f->fmt.pix.height < 32 + icd->y_skip_top)
++ f->fmt.pix.height = 32 + icd->y_skip_top;
++ if (f->fmt.pix.height > 480 + icd->y_skip_top)
++ f->fmt.pix.height = 480 + icd->y_skip_top;
++ if (f->fmt.pix.width < 48)
++ f->fmt.pix.width = 48;
++ if (f->fmt.pix.width > 752)
++ f->fmt.pix.width = 752;
++ f->fmt.pix.width &= ~0x03; /* ? */
++
++ return 0;
++}
++
++static unsigned int mt9v022_get_datawidth(struct soc_camera_device *icd)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ return mt9v022->datawidth;
++}
++
++const struct v4l2_queryctrl mt9v022_controls[] = {
++ {
++ .id = V4L2_CID_VFLIP,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Flip Vertically",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 0,
++ }, {
++ .id = V4L2_CID_HFLIP,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Flip Horizontally",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 0,
++ }, {
++ .id = V4L2_CID_GAIN,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Analog Gain",
++ .minimum = 64,
++ .maximum = 127,
++ .step = 1,
++ .default_value = 64,
++ .flags = V4L2_CTRL_FLAG_SLIDER,
++ }, {
++ .id = V4L2_CID_EXPOSURE,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Exposure",
++ .minimum = 1,
++ .maximum = 255,
++ .step = 1,
++ .default_value = 255,
++ .flags = V4L2_CTRL_FLAG_SLIDER,
++ }, {
++ .id = V4L2_CID_AUTOGAIN,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Automatic Gain",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 1,
++ }, {
++ .id = V4L2_CID_AUTOEXPOSURE,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Automatic Exposure",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 1,
++ }, {
++ .id = V4L2_CID_PRIVATE_BASE,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Register access",
++ .minimum = reg_to_int(REG_READ, 0, 0),
++ .maximum = reg_to_int(REG_WRITE, 0xff, (1 << 16) - 1),
++ .step = 1,
++ .default_value = 1,
++ }
++};
++
++static int mt9v022_get_control(struct soc_camera_device *icd, struct v4l2_control *ctrl);
++static int mt9v022_set_control(struct soc_camera_device *icd, struct v4l2_control *ctrl);
++
++static struct soc_camera_ops mt9v022_ops = {
++ .owner = THIS_MODULE,
++ .init = mt9v022_init,
++ .release = mt9v022_release,
++ .start_capture = mt9v022_start_capture,
++ .stop_capture = mt9v022_stop_capture,
++ .set_capture_format = mt9v022_set_capture_format,
++ .try_fmt_cap = mt9v022_try_fmt_cap,
++ .formats = mt9v022_formats,
++ .num_formats = ARRAY_SIZE(mt9v022_formats),
++ .get_datawidth = mt9v022_get_datawidth,
++ .controls = mt9v022_controls,
++ .num_controls = ARRAY_SIZE(mt9v022_controls),
++ .get_control = mt9v022_get_control,
++ .set_control = mt9v022_set_control,
++};
++
++static int mt9v022_get_control(struct soc_camera_device *icd, struct v4l2_control *ctrl)
++{
++ int data;
++
++ switch (ctrl->id) {
++ case V4L2_CID_VFLIP:
++ data = reg_read(icd, MT9V022_READ_MODE);
++ if (data < 0)
++ return -EIO;
++ ctrl->value = !!(data & 0x10);
++ break;
++ case V4L2_CID_HFLIP:
++ data = reg_read(icd, MT9V022_READ_MODE);
++ if (data < 0)
++ return -EIO;
++ ctrl->value = !!(data & 0x20);
++ break;
++ case V4L2_CID_AUTOEXPOSURE:
++ data = reg_read(icd, MT9V022_AEC_AGC_ENABLE);
++ if (data < 0)
++ return -EIO;
++ ctrl->value = !!(data & 0x1);
++ break;
++ case V4L2_CID_AUTOGAIN:
++ data = reg_read(icd, MT9V022_AEC_AGC_ENABLE);
++ if (data < 0)
++ return -EIO;
++ ctrl->value = !!(data & 0x2);
++ break;
++ case V4L2_CID_PRIVATE_BASE:
++ if (1) {
++ union reg_access_32 u;
++
++ u.ctrl = ctrl->value;
++ if (u.reg.rw != REG_READ)
++ return -EINVAL;
++ data = reg_read(icd, u.reg.address);
++ if (data < 0)
++ return -EIO;
++ u.reg.value = data;
++ ctrl->value = u.ctrl;
++ }
++ }
++ return 0;
++}
++
++static int mt9v022_set_control(struct soc_camera_device *icd, struct v4l2_control *ctrl)
++{
++ int data;
++ const struct v4l2_queryctrl *qctrl;
++
++ qctrl = soc_camera_find_qctrl(&mt9v022_ops, ctrl->id);
++
++ if (!qctrl)
++ return -EINVAL;
++
++ switch (ctrl->id) {
++ case V4L2_CID_VFLIP:
++ if (ctrl->value)
++ data = reg_set(icd, MT9V022_READ_MODE, 0x10);
++ else
++ data = reg_clear(icd, MT9V022_READ_MODE, 0x10);
++ if (data < 0)
++ return -EIO;
++ break;
++ case V4L2_CID_HFLIP:
++ if (ctrl->value)
++ data = reg_set(icd, MT9V022_READ_MODE, 0x20);
++ else
++ data = reg_clear(icd, MT9V022_READ_MODE, 0x20);
++ if (data < 0)
++ return -EIO;
++ break;
++ case V4L2_CID_GAIN:
++ /* mt9v022 has minimum == default */
++ if (ctrl->value > qctrl->maximum || ctrl->value < qctrl->minimum)
++ return -EINVAL;
++ else {
++ unsigned long range = qctrl->maximum - qctrl->minimum;
++ /* Datasheet says 16 to 64. autogain only works properly
++ * after setting gain to maximum 14. Larger values
++ * produce "white fly" noise effect. On the whole,
++ * manually setting analog gain does no good. */
++ unsigned long gain = ((ctrl->value - qctrl->minimum) * 10 +
++ range / 2) / range + 4;
++ if (gain >= 32)
++ gain &= ~1;
++ /* The user wants to set gain manually, hope, she
++ * knows, what she's doing... Switch AGC off. */
++
++ if (reg_clear(icd, MT9V022_AEC_AGC_ENABLE, 0x2) < 0)
++ return -EIO;
++
++ dev_info(&icd->dev, "Setting gain from %d to %lu\n",
++ reg_read(icd, MT9V022_ANALOG_GAIN), gain);
++ if (reg_write(icd, MT9V022_ANALOG_GAIN, gain) < 0)
++ return -EIO;
++ icd->gain = ctrl->value;
++ }
++ break;
++ case V4L2_CID_EXPOSURE:
++ /* mt9v022 has maximum == default */
++ if (ctrl->value > qctrl->maximum || ctrl->value < qctrl->minimum)
++ return -EINVAL;
++ else {
++ unsigned long range = qctrl->maximum - qctrl->minimum;
++ unsigned long shutter = ((ctrl->value - qctrl->minimum) * 479 +
++ range / 2) / range + 1;
++ /* The user wants to set shutter width manually, hope, she
++ * knows, what she's doing... Switch AEC off. */
++
++ if (reg_clear(icd, MT9V022_AEC_AGC_ENABLE, 0x1) < 0)
++ return -EIO;
++
++ dev_info(&icd->dev, "Setting shutter width from %d to %lu\n",
++ reg_read(icd, MT9V022_TOTAL_SHUTTER_WIDTH), shutter);
++ if (reg_write(icd, MT9V022_TOTAL_SHUTTER_WIDTH, shutter) < 0)
++ return -EIO;
++ icd->exposure = ctrl->value;
++ }
++ break;
++ case V4L2_CID_AUTOGAIN:
++ if (ctrl->value)
++ data = reg_set(icd, MT9V022_AEC_AGC_ENABLE, 0x2);
++ else
++ data = reg_clear(icd, MT9V022_AEC_AGC_ENABLE, 0x2);
++ if (data < 0)
++ return -EIO;
++ break;
++ case V4L2_CID_AUTOEXPOSURE:
++ if (ctrl->value)
++ data = reg_set(icd, MT9V022_AEC_AGC_ENABLE, 0x1);
++ else
++ data = reg_clear(icd, MT9V022_AEC_AGC_ENABLE, 0x1);
++ if (data < 0)
++ return -EIO;
++ break;
++ case V4L2_CID_PRIVATE_BASE:
++ if (1) {
++ union reg_access_32 u;
++
++ u.ctrl = ctrl->value;
++ if (u.reg.rw != REG_WRITE)
++ return -EINVAL;
++ data = reg_write(icd, u.reg.address, u.reg.value);
++ if (data < 0)
++ return -EIO;
++ }
++ }
++ return 0;
++}
++
++/* Interface active, can use i2c. If it fails, it can indeed mean, that
++ * this wasn't our capture interface, so, we wait for the right one */
++static int mt9v022_video_probe(struct soc_camera_device *icd)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++ s32 data;
++ int ret;
++
++ if (!icd->dev.parent ||
++ to_soc_camera_host(icd->dev.parent)->nr != icd->iface)
++ return -ENODEV;
++
++ /* Read out the chip version register */
++ data = reg_read(icd, MT9V022_CHIP_VERSION);
++
++ /* must be 0x1311 or 0x1313 */
++ if (data != 0x1311 && data != 0x1313) {
++ ret = -ENODEV;
++ dev_info(&icd->dev, "No MT9V022 detected, ID register 0x%x\n",
++ data);
++ goto ei2c;
++ }
++
++ /* Soft reset */
++ ret = reg_write(icd, MT9V022_RESET, 1);
++ if (ret < 0)
++ goto ei2c;
++ /* 15 clock cycles */
++ udelay(200);
++ if (reg_read(icd, MT9V022_RESET)) {
++ dev_err(&icd->dev, "Resetting MT9V022 failed!\n");
++ goto ei2c;
++ }
++
++ /* Set monochrome or colour sensor type */
++ if (sensor_type && (!strcmp("colour", sensor_type) ||
++ !strcmp("color", sensor_type))) {
++ ret = reg_write(icd, MT9V022_PIXEL_OPERATION_MODE, 4 | 0x11);
++ mt9v022->sensor = MT9V022_SENSOR_COLOUR;
++ } else {
++ ret = reg_write(icd, MT9V022_PIXEL_OPERATION_MODE, 0x11);
++ mt9v022->sensor = MT9V022_SENSOR_MONOCHROME;
++ }
++
++ if (ret >= 0)
++ ret = soc_camera_video_start(icd);
++ if (ret < 0)
++ goto eisis;
++
++ dev_info(&icd->dev, "Detected a MT9V022 chip ID %x, %s sensor\n",
++ data, mt9v022->sensor == MT9V022_SENSOR_MONOCHROME ?
++ "monochrome" : "colour");
++
++ return 0;
++
++eisis:
++ei2c:
++ return ret;
++}
++
++static void mt9v022_video_remove(struct soc_camera_device *icd)
++{
++ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
++
++ dev_dbg(&icd->dev, "Video %x removed: %p, %p\n", mt9v022->client->addr,
++ mt9v022->icd.dev.parent, mt9v022->icd.vdev);
++ soc_camera_video_stop(&mt9v022->icd);
++}
++
++static int mt9v022_probe(struct i2c_client *client)
++{
++ struct mt9v022 *mt9v022;
++ struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
++ int ret;
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WORD_DATA)) {
++ pr_debug("%s: I2C-Adapter doesn't support I2C_FUNC_SMBUS_WORD\n", __FUNCTION__);
++ return -EIO;
++ }
++
++ if (!(mt9v022 = kzalloc(sizeof(struct mt9v022), GFP_KERNEL)))
++ return -ENOMEM;
++
++ mt9v022->chip_control = MT9V022_CHIP_CONTROL_DEFAULT;
++ mt9v022->client = client;
++ i2c_set_clientdata(client, mt9v022);
++
++ mt9v022->icd.probe = mt9v022_video_probe;
++ mt9v022->icd.remove = mt9v022_video_remove;
++ mt9v022->icd.ops = &mt9v022_ops;
++ mt9v022->icd.control = &client->dev;
++ mt9v022->icd.x_min = 1;
++ mt9v022->icd.y_min = 4;
++ mt9v022->icd.x_current = 1;
++ mt9v022->icd.y_current = 4;
++ mt9v022->icd.width_min = 48;
++ mt9v022->icd.width_max = 752;
++ mt9v022->icd.height_min = 32;
++ mt9v022->icd.height_max = 480;
++ mt9v022->icd.y_skip_top = 1;
++ /* Default datawidth - this is the only width this camera (normally)
++ * supports. It is only with extra logic that it can support
++ * other widths. Therefore it seems to be a sensible default. */
++ mt9v022->datawidth = 10;
++
++ if (client->dev.platform_data) {
++ struct soc_camera_link *icl = client->dev.platform_data;
++ /* We have a data bus switch. We call pca9536 functions
++ * explicitly by name so the driver will not be unloaded,
++ * and we'll check mt9v022->data_switch anyway every time
++ * before calling. The only concern is that the driver
++ * doesn't detach itself from the device, but so far it is
++ * not supported by the I2C layer */
++ if (icl->extender)
++ mt9v022->data_switch = *icl->extender;
++ mt9v022->icd.iface = icl->bus_id;
++ }
++
++ ret = soc_camera_device_register(&mt9v022->icd);
++ if (ret)
++ goto eisdr;
++
++ return 0;
++
++eisdr:
++ kfree(mt9v022);
++ return ret;
++}
++
++static int mt9v022_remove(struct i2c_client *client)
++{
++ struct mt9v022 *mt9v022 = i2c_get_clientdata(client);
++
++ soc_camera_device_unregister(&mt9v022->icd);
++ kfree(mt9v022);
++
++ return 0;
++}
++
++static struct i2c_driver mt9v022_i2c_driver = {
++ .driver = {
++ .name = "mt9v022",
++ },
++ .probe = mt9v022_probe,
++ .remove = mt9v022_remove,
++};
++
++static int __init mt9v022_mod_init(void)
++{
++ return i2c_add_driver(&mt9v022_i2c_driver);
++}
++
++static void __exit mt9v022_mod_exit(void)
++{
++ i2c_del_driver(&mt9v022_i2c_driver);
++}
++
++module_init(mt9v022_mod_init);
++module_exit(mt9v022_mod_exit);
++
++MODULE_DESCRIPTION("Micron MT9V022 Camera driver");
++MODULE_AUTHOR("Guennadi Liakhovetski <kernel@pengutronix.de>");
++MODULE_LICENSE("GPL");
+--
+1.5.3.4
+
+--
+video4linux-list mailing list
+Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
+https://www.redhat.com/mailman/listinfo/video4linux-list
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxav4l6-8.patch.eml b/packages/linux/linux-ezx-2.6.24/patches/pxav4l6-8.patch.eml
new file mode 100644
index 0000000000..bc771f238b
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxav4l6-8.patch.eml
@@ -0,0 +1,100 @@
+Path: news.gmane.org!not-for-mail
+From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+Newsgroups: gmane.comp.video.video4linux
+Subject: [RFC PATCH 6/8] Add V4L2_CID_AUTOEXPOSURE control
+Date: Wed, 23 Jan 2008 18:42:01 +0100 (CET)
+Lines: 29
+Approved: news@gmane.org
+Message-ID: <Pine.LNX.4.64.0801231827200.4932@axis700.grange>
+References: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: ger.gmane.org 1201110161 28894 80.91.229.12 (23 Jan 2008 17:42:41 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Wed, 23 Jan 2008 17:42:41 +0000 (UTC)
+To: video4linux-list@redhat.com
+Original-X-From: video4linux-list-bounces@redhat.com Wed Jan 23 18:43:01 2008
+Return-path: <video4linux-list-bounces@redhat.com>
+Envelope-to: rh-video4linux-list@gmane.org
+Original-Received: from hormel.redhat.com ([209.132.177.30])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1JHjcY-000394-S3
+ for rh-video4linux-list@gmane.org; Wed, 23 Jan 2008 18:42:43 +0100
+Original-Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110])
+ by hormel.redhat.com (Postfix) with ESMTP
+ id 3B00D730EB; Wed, 23 Jan 2008 12:42:16 -0500 (EST)
+Original-Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
+ [172.16.52.254])
+ by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id
+ m0NHgEoZ017266 for <video4linux-list@listman.util.phx.redhat.com>;
+ Wed, 23 Jan 2008 12:42:14 -0500
+Original-Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
+ by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m0NHgDXf028250
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:42:13 -0500
+Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
+ by mx3.redhat.com (8.13.1/8.13.1) with SMTP id m0NHfl3q001210
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:48 -0500
+Original-Received: (qmail invoked by alias); 23 Jan 2008 17:41:42 -0000
+Original-Received: from p57BD2F1F.dip0.t-ipconnect.de (EHLO axis700.grange)
+ [87.189.47.31]
+ by mail.gmx.net (mp003) with SMTP; 23 Jan 2008 18:41:42 +0100
+X-Authenticated: #20450766
+X-Provags-ID: V01U2FsdGVkX19s1mA+rThsOt7hg+tJ7j4mHAPKhlRXDzhjWNVMNr
+ iM1Yi7GSzlRBY8
+Original-Received: from lyakh (helo=localhost)
+ by axis700.grange with local-esmtp (Exim 4.63)
+ (envelope-from <g.liakhovetski@gmx.de>) id 1JHjbt-0002A2-Vj
+ for video4linux-list@redhat.com; Wed, 23 Jan 2008 18:42:01 +0100
+X-X-Sender: lyakh@axis700.grange
+In-Reply-To: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+X-Y-GMX-Trusted: 0
+X-RedHat-Spam-Score: 0
+X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
+X-Scanned-By: MIMEDefang 2.58 on 172.16.48.32
+X-loop: video4linux-list@redhat.com
+X-BeenThere: video4linux-list@redhat.com
+X-Mailman-Version: 2.1.5
+Precedence: junk
+List-Id: Linux and Kernel Video <video4linux-list.redhat.com>
+List-Unsubscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=unsubscribe>
+List-Archive: <https://www.redhat.com/mailman/private/video4linux-list>
+List-Post: <mailto:video4linux-list@redhat.com>
+List-Help: <mailto:video4linux-list-request@redhat.com?subject=help>
+List-Subscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=subscribe>
+Original-Sender: video4linux-list-bounces@redhat.com
+Errors-To: video4linux-list-bounces@redhat.com
+Xref: news.gmane.org gmane.comp.video.video4linux:36474
+Archived-At: <http://permalink.gmane.org/gmane.comp.video.video4linux/36474>
+
+The MT9V022 camera has hardware AEC support, that can be switched on and
+off in software. MT9M001 emulates Autoexposure control in software. Add a
+V4L2 control, similar to already present Autogain.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+---
+ include/linux/videodev2.h | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
+index ae9b24c..05b8c22 100644
+--- a/include/linux/videodev2.h
++++ b/include/linux/videodev2.h
+@@ -946,6 +946,7 @@ struct v4l2_querymenu
+ #define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
+ #define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
+ #define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */
++#define V4L2_CID_AUTOEXPOSURE (V4L2_CID_BASE+25)
+
+ /* MPEG-class control IDs defined by V4L2 */
+ #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
+--
+1.5.3.4
+
+--
+video4linux-list mailing list
+Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
+https://www.redhat.com/mailman/listinfo/video4linux-list
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/pxav4l7-8.patch.eml b/packages/linux/linux-ezx-2.6.24/patches/pxav4l7-8.patch.eml
new file mode 100644
index 0000000000..31d42cfbee
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/pxav4l7-8.patch.eml
@@ -0,0 +1,113 @@
+Path: news.gmane.org!not-for-mail
+From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
+Newsgroups: gmane.comp.video.video4linux
+Subject: [RFC PATCH 7/8] Add two new fourcc codes for 16bpp formats
+Date: Wed, 23 Jan 2008 18:42:09 +0100 (CET)
+Lines: 42
+Approved: news@gmane.org
+Message-ID: <Pine.LNX.4.64.0801231830490.4932@axis700.grange>
+References: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: ger.gmane.org 1201110167 28919 80.91.229.12 (23 Jan 2008 17:42:47 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Wed, 23 Jan 2008 17:42:47 +0000 (UTC)
+To: video4linux-list@redhat.com
+Original-X-From: video4linux-list-bounces@redhat.com Wed Jan 23 18:43:06 2008
+Return-path: <video4linux-list-bounces@redhat.com>
+Envelope-to: rh-video4linux-list@gmane.org
+Original-Received: from hormel.redhat.com ([209.132.177.30])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1JHjci-0003Dp-8K
+ for rh-video4linux-list@gmane.org; Wed, 23 Jan 2008 18:42:52 +0100
+Original-Received: from listman.util.phx.redhat.com (listman.util.phx.redhat.com [10.8.4.110])
+ by hormel.redhat.com (Postfix) with ESMTP
+ id 6BF2372FF8; Wed, 23 Jan 2008 12:42:25 -0500 (EST)
+Original-Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
+ [172.16.52.254])
+ by listman.util.phx.redhat.com (8.13.1/8.13.1) with ESMTP id
+ m0NHgO9P017291 for <video4linux-list@listman.util.phx.redhat.com>;
+ Wed, 23 Jan 2008 12:42:24 -0500
+Original-Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
+ by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m0NHgNmZ028352
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:42:23 -0500
+Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
+ by mx3.redhat.com (8.13.1/8.13.1) with SMTP id m0NHfucU001324
+ for <video4linux-list@redhat.com>; Wed, 23 Jan 2008 12:41:56 -0500
+Original-Received: (qmail invoked by alias); 23 Jan 2008 17:41:50 -0000
+Original-Received: from p57BD2F1F.dip0.t-ipconnect.de (EHLO axis700.grange)
+ [87.189.47.31]
+ by mail.gmx.net (mp009) with SMTP; 23 Jan 2008 18:41:50 +0100
+X-Authenticated: #20450766
+X-Provags-ID: V01U2FsdGVkX19aKoUhVR5aPjFgx0HR7/IruYd7urwvhZz+IuYK4j
+ /KvctzVVJXbtdS
+Original-Received: from lyakh (helo=localhost)
+ by axis700.grange with local-esmtp (Exim 4.63)
+ (envelope-from <g.liakhovetski@gmx.de>) id 1JHjc1-0002A6-Re
+ for video4linux-list@redhat.com; Wed, 23 Jan 2008 18:42:09 +0100
+X-X-Sender: lyakh@axis700.grange
+In-Reply-To: <Pine.LNX.4.64.0801231646090.4932@axis700.grange>
+X-Y-GMX-Trusted: 0
+X-RedHat-Spam-Score: 0
+X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
+X-Scanned-By: MIMEDefang 2.58 on 172.16.48.32
+X-loop: video4linux-list@redhat.com
+X-BeenThere: video4linux-list@redhat.com
+X-Mailman-Version: 2.1.5
+Precedence: junk
+List-Id: Linux and Kernel Video <video4linux-list.redhat.com>
+List-Unsubscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=unsubscribe>
+List-Archive: <https://www.redhat.com/mailman/private/video4linux-list>
+List-Post: <mailto:video4linux-list@redhat.com>
+List-Help: <mailto:video4linux-list-request@redhat.com?subject=help>
+List-Subscribe: <https://www.redhat.com/mailman/listinfo/video4linux-list>,
+ <mailto:video4linux-list-request@redhat.com?subject=subscribe>
+Original-Sender: video4linux-list-bounces@redhat.com
+Errors-To: video4linux-list-bounces@redhat.com
+Xref: news.gmane.org gmane.comp.video.video4linux:36475
+Archived-At: <http://permalink.gmane.org/gmane.comp.video.video4linux/36475>
+
+This adds two new fourcc codes (as per info at fourcc.org)
+for 16bpp mono and 16bpp Bayer formats.
+
+Signed-off-by: Steven Whitehouse <steve@chygwyn.com>
+---
+This is a resend of the patch earlier sent by Steven Whitehouse. For some
+reason, I didn't see the patch in both his emails sent to the list, only
+in copies I got directly by cc. So, strictly speaking this patch doesn't
+belong to this series, but I need these 2 codes, and I'm giving the full
+credit to the original author:-)
+
+ include/linux/videodev2.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
+index 05b8c22..b2c47c4 100644
+--- a/include/linux/videodev2.h
++++ b/include/linux/videodev2.h
+@@ -280,6 +280,7 @@ struct v4l2_pix_format
+ #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B','G','R','4') /* 32 BGR-8-8-8-8 */
+ #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R','G','B','4') /* 32 RGB-8-8-8-8 */
+ #define V4L2_PIX_FMT_GREY v4l2_fourcc('G','R','E','Y') /* 8 Greyscale */
++#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y','1','6',' ') /* 16 Greyscale */
+ #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y','V','U','9') /* 9 YVU 4:1:0 */
+ #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y','V','1','2') /* 12 YVU 4:2:0 */
+ #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y','U','Y','V') /* 16 YUV 4:2:2 */
+@@ -302,6 +303,7 @@ struct v4l2_pix_format
+
+ /* see http://www.siliconimaging.com/RGB%20Bayer.htm */
+ #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') /* 8 BGBG.. GRGR.. */
++#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B','Y','R','2') /* 16 BGBG.. GRGR.. */
+
+ /* compressed formats */
+ #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */
+--
+1.5.3.4
+
+--
+video4linux-list mailing list
+Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
+https://www.redhat.com/mailman/listinfo/video4linux-list
+
diff --git a/packages/linux/linux-ezx-2.6.24/patches/series b/packages/linux/linux-ezx-2.6.24/patches/series
new file mode 100644
index 0000000000..5fb6a2bc23
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/patches/series
@@ -0,0 +1,105 @@
+binutils-buildid-arm.patch
+pxa27x_overlay-r8.patch
+
+ezx-core.patch
+# ezx-core TODO: should be ezx-common
+# look at the pxa-regs.h diff and put each definition on the proper patch
+# register a machine type for each phone model
+
+# enable this patch ONLY if you have STUART connected and dont forget
+# to change your cmdline if you want console on STUART.
+#ezx-enable-stuart.patch
+
+ezx-bp.patch
+# ezx-bp TODO:
+# try to run this as a module - this may solve timing issues for opentapi.
+# suspend/resume (not sure if it can be handled here)
+# implement 2nd gen handshake support
+# move platform device to ezx-phone.c
+
+ezx-pm.patch
+
+ezx-pcap.patch
+# ezx-pcap TODO:
+# move vibrator level function to the vibrator driver
+
+a780-pcap.patch
+e680-pcap.patch
+a1200-pcap.patch
+e6-pcap.patch
+
+a780-mci.patch
+e680-mci.patch
+a1200-mci.patch
+e6-mci.patch
+
+pxa27x-udc-support.3.patch
+
+ezx-emu.patch
+# ezx-emu TODO:
+# userspace interface for controling emu
+# read adc to find which accessory is plugged
+a780-emu.patch
+e680-emu.patch
+
+pxa27x-udc-fix-a1200.patch #(see ezx-a1200.c)
+ezx-eoc.patch
+a1200-eoc.patch
+e6-eoc.patch
+
+ezx-mtd-map.patch
+
+ezx-serial-bug-workaround.patch
+
+pxa-kbd.patch
+a780-kbd.patch
+e680-kbd.patch
+a1200-kbd.patch
+
+pcap-ts.patch
+a780-ts.patch
+e680-ts.patch
+a1200-ts.patch
+e6-ts.patch
+
+ezx-backlight.patch
+
+a780-flip.patch
+e680-locksw.patch
+a1200-flip.patch
+
+a780-leds.patch
+e680-leds.patch
+
+a780-vibrator.patch
+
+# mux_cli patches
+mux_cli.patch
+mux-fix.patch
+mux-fix-init-errorpath.patch
+mux-remove-flipbuffers.patch
+mux-remove-get_halted_bit.patch
+mux-remove-usbh_finished_resume.patch
+mux-fix-makefile.patch
+mux-fix-tty-driver.patch
+mux-linux-2.6.21-fix.patch
+#mux-ifdef-ezx-features.patch
+#mux_debug.patch
+
+asoc-pxa-ssp.patch
+asoc-fix-loopback.patch
+ezx-asoc.patch
+
+# mux_cli TODO:
+# merge patches
+# try to understand the code and cleanup (painful)
+
+# Global TODO:
+# compile everything as module and test for insmod/rmmod
+# can NOT run as module (yet)
+# pxa-ohci, ts0710_mux, ts0710_mux_usb, ezx-bp
+
+# the folowing break too much stuff on other phones.
+
+# incomplete
+
diff --git a/packages/libmutil/.mtn2git_empty b/packages/linux/linux-ezx-2.6.24/rokre2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libmutil/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.24/rokre2/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.24/rokre2/defconfig b/packages/linux/linux-ezx-2.6.24/rokre2/defconfig
new file mode 100755
index 0000000000..206ae45fc7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/rokre2/defconfig
@@ -0,0 +1,1189 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.1
+# Wed Oct 24 18:05:01 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+CONFIG_PXA_EZX_A1200=y
+# CONFIG_PXA_EZX_E6 is not set
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EOC=y
+# CONFIG_EZX_EMU is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 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=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_EZX is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_HWMON is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_EZX is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/libopieobex/files/.mtn2git_empty b/packages/linux/linux-ezx-2.6.24/rokre6/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libopieobex/files/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.24/rokre6/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.24/rokre6/defconfig b/packages/linux/linux-ezx-2.6.24/rokre6/defconfig
new file mode 100755
index 0000000000..733566adc6
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/rokre6/defconfig
@@ -0,0 +1,1203 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.1
+# Wed Oct 24 18:07:51 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+CONFIG_PXA_EZX_E6=y
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EOC=y
+# CONFIG_EZX_EMU is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL 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_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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 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=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_EZX is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# 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=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_PXA27x is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_HWMON is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_EZX is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ezx-2.6.24/update_patches.sh b/packages/linux/linux-ezx-2.6.24/update_patches.sh
new file mode 100644
index 0000000000..9a8d36e461
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.24/update_patches.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -e
+
+# Helper script to update patches and speedup filling the SRC_URI section of our .bb
+# Run it while in packages/linux/linux-ezx-2.6.x/
+
+[ -d patches ] && mtn drop -R patches
+rm -rf patches
+
+svn --quiet co http://svn.openezx.org/branches/kernel-2.6.24.x-patches patches
+find patches -type f -print0
+mtn add patches patches/*
+
+cat patches/series | grep ^[0-9A-Za-z] | sed -e 's/.*/\tfile:\/\/patches\/\0;patch=1 \\/'
+ls -1 patches/defconfig-* | sed -e 's/.*/\tfile:\/\/\0 \\/'
+
diff --git a/packages/linux/linux-ezx_2.6.24.bb b/packages/linux/linux-ezx_2.6.24.bb
new file mode 100644
index 0000000000..093ee1e94a
--- /dev/null
+++ b/packages/linux/linux-ezx_2.6.24.bb
@@ -0,0 +1,111 @@
+DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and E680"
+AUTHOR = "The OpenEZX Team <openezx-devel@lists.openezx.org>"
+HOMEPAGE = "http://www.openezx.org"
+EZX = "ezxdev"
+PR = "${EZX}-r0"
+
+# unstable branch, use 2.6.21 if you want something working
+DEFAULT_PREFERENCE = "-99"
+DEFAULT_PREFERENCE_a780 = "99"
+
+
+# last sync: svn revision XXX
+
+require linux.inc
+
+RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
+
+SRC_URI = " \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://logo_linux_clut224.ppm \
+ \
+ file://patches/binutils-buildid-arm.patch;patch=1 \
+ file://patches/pxa27x_overlay-r8.patch;patch=1 \
+ file://patches/ezx-core.patch;patch=1 \
+ file://patches/ezx-bp.patch;patch=1 \
+ file://patches/ezx-pm.patch;patch=1 \
+ file://patches/ezx-pcap.patch;patch=1 \
+ file://patches/a780-pcap.patch;patch=1 \
+ file://patches/e680-pcap.patch;patch=1 \
+ file://patches/a1200-pcap.patch;patch=1 \
+ file://patches/e6-pcap.patch;patch=1 \
+ file://patches/a780-mci.patch;patch=1 \
+ file://patches/e680-mci.patch;patch=1 \
+ file://patches/a1200-mci.patch;patch=1 \
+ file://patches/e6-mci.patch;patch=1 \
+ file://patches/pxa27x-udc-support.3.patch;patch=1 \
+ file://patches/ezx-emu.patch;patch=1 \
+ file://patches/a780-emu.patch;patch=1 \
+ file://patches/e680-emu.patch;patch=1 \
+ file://patches/pxa27x-udc-fix-a1200.patch;patch=1 \
+ file://patches/ezx-eoc.patch;patch=1 \
+ file://patches/a1200-eoc.patch;patch=1 \
+ file://patches/e6-eoc.patch;patch=1 \
+ file://patches/ezx-mtd-map.patch;patch=1 \
+ file://patches/ezx-serial-bug-workaround.patch;patch=1 \
+ file://patches/pxa-kbd.patch;patch=1 \
+ file://patches/a780-kbd.patch;patch=1 \
+ file://patches/e680-kbd.patch;patch=1 \
+ file://patches/a1200-kbd.patch;patch=1 \
+ file://patches/pcap-ts.patch;patch=1 \
+ file://patches/a780-ts.patch;patch=1 \
+ file://patches/e680-ts.patch;patch=1 \
+ file://patches/a1200-ts.patch;patch=1 \
+ file://patches/e6-ts.patch;patch=1 \
+ file://patches/ezx-backlight.patch;patch=1 \
+ file://patches/a780-flip.patch;patch=1 \
+ file://patches/e680-locksw.patch;patch=1 \
+ file://patches/a1200-flip.patch;patch=1 \
+ file://patches/a780-leds.patch;patch=1 \
+ file://patches/e680-leds.patch;patch=1 \
+ file://patches/a780-vibrator.patch;patch=1 \
+ file://patches/mux_cli.patch;patch=1 \
+ file://patches/mux-fix.patch;patch=1 \
+ file://patches/mux-fix-init-errorpath.patch;patch=1 \
+ file://patches/mux-remove-flipbuffers.patch;patch=1 \
+ file://patches/mux-remove-get_halted_bit.patch;patch=1 \
+ file://patches/mux-remove-usbh_finished_resume.patch;patch=1 \
+ file://patches/mux-fix-makefile.patch;patch=1 \
+ file://patches/mux-fix-tty-driver.patch;patch=1 \
+ file://patches/mux-linux-2.6.21-fix.patch;patch=1 \
+ file://patches/asoc-pxa-ssp.patch;patch=1 \
+ file://patches/asoc-fix-loopback.patch;patch=1 \
+ file://patches/ezx-asoc.patch;patch=1 \
+ file://defconfig \
+ "
+
+S = "${WORKDIR}/linux-${PV}"
+
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+# But we can flash it from userspace (flash_unlock /dev/mtdX && flash_eraseall /dev/mtdX && flashcp /boot/zImage /dev/mtdX)
+# so lets make a package of it. What about a postinst that flashes the new kernel?
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = '(a780|e680|a1200|rorkre2|rokre6)'
+
+# For now the code for serial console is disabled in compress.c
+#CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 "
+CMDLINE_CON = "console=tty1 "
+
+CMDLINE_ROOT = "root=/dev/mmcblk0p2 rootfstype=ext2 rootwait=1"
+CMDLINE_NFSROOT = "root=/dev/nfs rootfstype=nfs nfsroot=192.168.0.200:/export/ezx-image rootdelay=1 "
+# Uncomment to enable dyntick
+#CMDLINE_OTHER = "dyntick=enable"
+CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_IP = "ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0"
+CMDLINE_MEM = "mem=32M@0xA0000000 mem=16M@0xAC000000"
+CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} ${CMDLINE_MEM}"
+# Uncomment to use root-over-nfs-over-usb
+#CMDLINE_NFSROOT_USB = "${CMDLINE_CON} ${CMDLINE_NFSROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} ${CMDLINE_MEM}"
+
+# 1024x1024 once was the maximum kernel size for boot-over-usb -- is it still?
+#KERNEL_IMAGE_MAXSIZE = "1294336"
+
+###############################################################
+# module configs specific to this kernel
+#
+#module_autoload_pxaficp_ir = "pxaficp_ir"
+#module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig
index 68e39e7019..0b4d4b28b8 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:31 2007
+# Fri Feb 15 01:08:05 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -258,6 +258,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -270,7 +271,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -534,8 +535,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -621,7 +622,7 @@ CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1104,13 +1105,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1133,7 +1136,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1168,8 +1171,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1242,14 +1251,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig
index 3c1cfbad8f..16b6596d2c 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:31 2007
+# Fri Feb 15 01:08:05 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -264,6 +264,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -276,7 +277,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -527,8 +528,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -620,7 +622,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1214,13 +1216,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1243,7 +1247,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1289,8 +1293,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1363,14 +1373,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig
index 8e845fb396..f89fe4ffad 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:32 2007
+# Fri Feb 15 01:08:05 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -258,6 +258,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -270,7 +271,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -518,8 +519,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -597,7 +598,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1089,13 +1090,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1118,7 +1121,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1153,8 +1156,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1227,14 +1236,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig
index 49a907e5fe..3fabe34070 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:32 2007
+# Fri Feb 15 01:08:06 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -95,14 +95,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -265,6 +265,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# Floating point emulation
@@ -507,8 +508,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -593,7 +594,7 @@ CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1079,13 +1080,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1108,7 +1111,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1143,8 +1146,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1217,14 +1226,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig
index dd20e0baff..6e73e44faf 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:32 2007
+# Fri Feb 15 01:08:06 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -256,6 +256,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -268,7 +269,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -516,8 +517,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -595,7 +596,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1159,13 +1160,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1188,7 +1191,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1223,8 +1226,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1297,14 +1306,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
index 532752a44f..7c8e756060 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:33 2007
+# Fri Feb 15 01:08:07 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -264,6 +264,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -276,7 +277,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -604,8 +605,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -690,7 +692,7 @@ CONFIG_MTD_NAND_HAMCOP=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
@@ -834,14 +836,14 @@ CONFIG_NET_WIRELESS=y
# PCMCIA network device support
#
CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-# CONFIG_PCMCIA_PCNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
#
# Wan interfaces
@@ -1549,13 +1551,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1578,7 +1582,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1624,8 +1628,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1698,14 +1708,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig
index 2a29e61877..3b566efffc 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:33 2007
+# Fri Feb 15 01:08:07 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -236,6 +236,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -248,7 +249,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -498,8 +499,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -576,7 +578,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1066,13 +1068,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1095,7 +1099,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1141,8 +1145,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1215,14 +1225,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig
index 2132550832..e8dcf46931 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:34 2007
+# Fri Feb 15 01:08:07 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -234,6 +234,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -246,7 +247,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -496,8 +497,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -574,7 +576,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1064,13 +1066,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1093,7 +1097,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1139,8 +1143,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1213,14 +1223,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig
index 53bbe32ec0..b05e1f6c74 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:34 2007
+# Fri Feb 15 01:08:08 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -257,6 +257,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -269,7 +270,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -534,8 +535,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -612,7 +614,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1183,13 +1185,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1212,7 +1216,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1258,8 +1262,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1332,14 +1342,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig
index d3b7c58d08..5d7a7cde32 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:34 2007
+# Fri Feb 15 01:08:08 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -270,6 +270,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -282,7 +283,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -602,8 +603,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -690,7 +692,7 @@ CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1308,13 +1310,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1337,7 +1341,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1383,8 +1387,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1457,14 +1467,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig
index b72cc16514..3780728e66 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:35 2007
+# Fri Feb 15 01:08:09 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -164,6 +164,7 @@ CONFIG_ARCH_H5400=y
CONFIG_IPAQ_H5400_BT=m
CONFIG_IPAQ_H5400_LCD=y
CONFIG_IPAQ_H5400_BL=y
+CONFIG_IPAQ_H5400_WIFI=m
# CONFIG_MACH_HIMALAYA is not set
# CONFIG_MACH_HTCUNIVERSAL is not set
# CONFIG_MACH_HTCALPINE is not set
@@ -257,6 +258,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -269,7 +271,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -524,7 +526,10 @@ CONFIG_IRTTY_SIR=m
#
# FIR device drivers
#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
@@ -538,9 +543,21 @@ CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
-# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+# CONFIG_IEEE80211_CRYPT_WEP is not set
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -577,8 +594,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -673,7 +691,8 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -746,7 +765,16 @@ CONFIG_TUN=m
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ACX is not set
#
# Wan interfaces
@@ -933,6 +961,7 @@ CONFIG_W1=y
#
# 1-wire Bus Masters
#
+# CONFIG_W1_MASTER_DS2490 is not set
# CONFIG_W1_MASTER_DS2482 is not set
CONFIG_W1_MASTER_DS1WM=y
@@ -1037,6 +1066,7 @@ CONFIG_LEDS_TRIGGER_SHARED=y
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
#
# Graphics support
@@ -1125,11 +1155,15 @@ CONFIG_SND_VERBOSE_PROCFS=y
#
# ALSA ARM devices
#
-# CONFIG_SND_H5XXX_AK4535 is not set
# CONFIG_SND_PXA2XX_AC97 is not set
# CONFIG_SND_RECON is not set
#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
# SoC audio support
#
CONFIG_SND_SOC=m
@@ -1194,13 +1228,121 @@ CONFIG_HID=m
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+
+#
+# USB DSL modem support
+#
+
+#
# USB Gadget Support
#
CONFIG_USB_GADGET=y
@@ -1301,13 +1443,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1330,7 +1474,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1376,8 +1520,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1450,14 +1600,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1513,7 +1663,7 @@ CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
+CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
@@ -1521,7 +1671,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig
index 457ed57863..3f2bfd45a9 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:36 2007
+# Fri Feb 15 01:08:10 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -256,6 +256,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -268,7 +269,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -532,8 +533,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -611,7 +612,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1099,13 +1100,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1128,7 +1131,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1163,8 +1166,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1237,14 +1246,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig
index 24a0ba0bb3..a748acdcda 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:37 2007
+# Fri Feb 15 01:08:10 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -256,6 +256,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -268,7 +269,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -538,8 +539,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -617,7 +618,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1190,13 +1191,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1219,7 +1222,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1254,8 +1257,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1328,14 +1337,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig
index bc71c235e3..3544a52c42 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:37 2007
+# Fri Feb 15 01:08:11 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -260,6 +260,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -272,7 +273,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -536,8 +537,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -615,7 +616,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1106,13 +1107,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1135,7 +1138,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1170,8 +1173,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1244,14 +1253,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig
index 41012c93a0..4db13f11e9 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:37 2007
+# Fri Feb 15 01:08:11 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -277,6 +277,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -289,7 +290,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -566,8 +567,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -654,7 +656,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1329,13 +1331,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1358,7 +1362,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1404,8 +1408,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1478,14 +1488,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig
index 51cf1468da..2035e2de39 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:38 2007
+# Fri Feb 15 01:08:12 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -258,6 +258,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -270,7 +271,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -534,8 +535,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -613,7 +614,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1102,13 +1103,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1131,7 +1134,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1166,8 +1169,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1240,14 +1249,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig
index 9aea8e2d09..7e2204f7d9 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:38 2007
+# Fri Feb 15 01:08:12 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -260,6 +260,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -272,7 +273,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -542,8 +543,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -629,7 +630,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1206,13 +1207,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1235,7 +1238,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1281,8 +1284,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1355,14 +1364,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig
index 538258dca9..d967d9252e 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:39 2007
+# Fri Feb 15 01:08:13 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -267,6 +267,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -279,7 +280,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -549,8 +550,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -628,7 +629,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1223,13 +1224,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1252,7 +1255,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1287,8 +1290,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1361,14 +1370,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig
index c4f636f1ba..1744bbf8d6 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:39 2007
+# Fri Feb 15 01:08:13 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -233,6 +233,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -245,7 +246,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -492,8 +493,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -579,7 +580,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1065,13 +1066,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1094,7 +1097,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1140,8 +1143,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1214,14 +1223,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig
index d8a7c87f24..5998f99db6 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:35 2007
+# Fri Feb 15 01:08:09 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -272,6 +272,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -284,7 +285,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -612,8 +613,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -705,7 +707,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
@@ -853,14 +855,14 @@ CONFIG_NET_WIRELESS=y
# PCMCIA network device support
#
CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-# CONFIG_PCMCIA_PCNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
#
# Wan interfaces
@@ -1566,13 +1568,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1595,7 +1599,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1641,8 +1645,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1715,14 +1725,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/linux-2.6.git-9d20fdd58e74d4d26dc5216efaaa0f800c23dd3a.patch b/packages/linux/linux-handhelds-2.6-2.6.21/linux-2.6.git-9d20fdd58e74d4d26dc5216efaaa0f800c23dd3a.patch
new file mode 100644
index 0000000000..f3c27d33a8
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/linux-2.6.git-9d20fdd58e74d4d26dc5216efaaa0f800c23dd3a.patch
@@ -0,0 +1,144 @@
+From: Bill Gatliff <bgat@billgatliff.com>
+Date: Thu, 31 May 2007 21:02:22 +0000 (+0100)
+Subject: [ARM] 4423/1: add ATAGS support
+X-Git-Tag: v2.6.23-rc1~1101^2^7~5
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=9d20fdd58e74d4d26dc5216efaaa0f800c23dd3a
+
+[ARM] 4423/1: add ATAGS support
+
+Examines the ATAGS pointer (r2) at boot, and interprets
+a nonzero value as a reference to an ATAGS structure. A
+suitable ATAGS structure replaces the kernel's command line.
+
+Signed-off-by: Bill Gatliff <bgat@billgatliff.com>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+---
+
+diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
+index a52da0d..024a9cf 100644
+--- a/arch/arm/kernel/head-common.S
++++ b/arch/arm/kernel/head-common.S
+@@ -20,7 +20,8 @@ __switch_data:
+ .long _end @ r7
+ .long processor_id @ r4
+ .long __machine_arch_type @ r5
+- .long cr_alignment @ r6
++ .long __atags_pointer @ r6
++ .long cr_alignment @ r7
+ .long init_thread_union + THREAD_START_SP @ sp
+
+ /*
+@@ -29,6 +30,7 @@ __switch_data:
+ *
+ * r0 = cp#15 control register
+ * r1 = machine ID
++ * r2 = atags pointer
+ * r9 = processor ID
+ */
+ .type __mmap_switched, %function
+@@ -47,11 +49,12 @@ __mmap_switched:
+ strcc fp, [r6],#4
+ bcc 1b
+
+- ldmia r3, {r4, r5, r6, sp}
++ ldmia r3, {r4, r5, r6, r7, sp}
+ str r9, [r4] @ Save processor ID
+ str r1, [r5] @ Save machine type
++ str r2, [r6] @ Save atags pointer
+ bic r4, r0, #CR_A @ Clear 'A' bit
+- stmia r6, {r0, r4} @ Save control register values
++ stmia r7, {r0, r4} @ Save control register values
+ b start_kernel
+
+ /*
+@@ -215,3 +218,34 @@ ENTRY(lookup_machine_type)
+ bl __lookup_machine_type
+ mov r0, r5
+ ldmfd sp!, {r4 - r6, pc}
++
++/* Determine validity of the r2 atags pointer. The heuristic requires
++ * that the pointer be aligned, in the first 16k of physical RAM and
++ * that the ATAG_CORE marker is first and present. Future revisions
++ * of this function may be more lenient with the physical address and
++ * may also be able to move the ATAGS block if necessary.
++ *
++ * r8 = machinfo
++ *
++ * Returns:
++ * r2 either valid atags pointer, or zero
++ * r5, r6 corrupted
++ */
++
++ .type __vet_atags, %function
++__vet_atags:
++ tst r2, #0x3 @ aligned?
++ bne 1f
++
++ ldr r5, [r2, #0] @ is first tag ATAG_CORE?
++ subs r5, r5, #ATAG_CORE_SIZE
++ bne 1f
++ ldr r5, [r2, #4]
++ ldr r6, =ATAG_CORE
++ cmp r5, r6
++ bne 1f
++
++ mov pc, lr @ atag pointer is ok
++
++1: mov r2, #0
++ mov pc, lr
+diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
+index 41f98b4..7898cbc 100644
+--- a/arch/arm/kernel/head.S
++++ b/arch/arm/kernel/head.S
+@@ -29,6 +29,10 @@
+ #define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)
+ #define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET)
+
++#define ATAG_CORE 0x54410001
++#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
++
++
+ /*
+ * swapper_pg_dir is the virtual address of the initial page table.
+ * We place the page tables 16K below KERNEL_RAM_VADDR. Therefore, we must
+@@ -61,7 +65,7 @@
+ *
+ * This is normally called from the decompressor code. The requirements
+ * are: MMU = off, D-cache = off, I-cache = dont care, r0 = 0,
+- * r1 = machine nr.
++ * r1 = machine nr, r2 = atags pointer.
+ *
+ * This code is mostly position independent, so if you link the kernel at
+ * 0xc0008000, you call this at __pa(0xc0008000).
+@@ -85,6 +89,7 @@ ENTRY(stext)
+ bl __lookup_machine_type @ r5=machinfo
+ movs r8, r5 @ invalid machine (r5=0)?
+ beq __error_a @ yes, error 'a'
++ bl __vet_atags
+ bl __create_page_tables
+
+ /*
+diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
+index 650eac1..5be2e98 100644
+--- a/arch/arm/kernel/setup.c
++++ b/arch/arm/kernel/setup.c
+@@ -63,6 +63,8 @@ unsigned int processor_id;
+ unsigned int __machine_arch_type;
+ EXPORT_SYMBOL(__machine_arch_type);
+
++unsigned int __atags_pointer __initdata;
++
+ unsigned int system_rev;
+ EXPORT_SYMBOL(system_rev);
+
+@@ -780,7 +782,9 @@ void __init setup_arch(char **cmdline_p)
+ if (mdesc->soft_reboot)
+ reboot_setup("s");
+
+- if (mdesc->boot_params)
++ if (__atags_pointer)
++ tags = phys_to_virt(__atags_pointer);
++ else if (mdesc->boot_params)
+ tags = phys_to_virt(mdesc->boot_params);
+
+ /*
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig
index 065435406d..d71eb62ae0 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:39 2007
+# Fri Feb 15 01:08:13 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -254,6 +254,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -266,7 +267,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -530,8 +531,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -609,7 +610,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1102,13 +1103,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1131,7 +1134,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1166,8 +1169,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1240,14 +1249,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig
index e3712ec2e5..290f2b14a9 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:36 2007
+# Fri Feb 15 01:08:10 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -96,14 +96,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -261,6 +261,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -273,7 +274,7 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
@@ -601,9 +602,9 @@ CONFIG_MTD_BLOCK=m
#
# RAM/ROM/Flash chip drivers
#
-CONFIG_MTD_CFI=m
+CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=m
+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
@@ -615,10 +616,10 @@ 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=m
+CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -629,7 +630,7 @@ CONFIG_MTD_CFI_UTIL=m
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x8000000
CONFIG_MTD_PHYSMAP_LEN=0
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
@@ -681,7 +682,7 @@ CONFIG_MTDRAM_ERASE_SIZE=256
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
@@ -1420,13 +1421,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1449,7 +1452,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1461,7 +1464,7 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_SUMMARY is not set
@@ -1495,8 +1498,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1569,14 +1578,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1657,8 +1666,8 @@ CONFIG_CRC_CCITT=y
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig
index 5c59ed5282..044b7f005c 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:40 2007
+# Fri Feb 15 01:08:14 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -95,14 +95,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -267,6 +267,7 @@ CONFIG_CMDLINE="keepinitrd"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
# CONFIG_TXTOFFSET_DELTA is not set
+CONFIG_ATAGS_PROC=y
#
# Floating point emulation
@@ -525,8 +526,8 @@ CONFIG_MTD_DEBUG_VERBOSE=0
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
@@ -611,7 +612,7 @@ CONFIG_MTD_NAND_S3C2410=m
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1136,13 +1137,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1165,7 +1168,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1200,8 +1203,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1274,14 +1283,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig
index 76a2c5fc0d..7bae57d01f 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Wed Dec 26 16:55:40 2007
+# Fri Feb 15 01:08:14 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -95,14 +95,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
#
# System Type
@@ -274,6 +274,7 @@ CONFIG_CMDLINE="keepinitrd"
CONFIG_KEXEC=y
CONFIG_TXTOFFSET_DELTA=y
CONFIG_TXTOFFSET_DELTA_VALUE=0x00090000
+CONFIG_ATAGS_PROC=y
#
# Floating point emulation
@@ -541,8 +542,9 @@ CONFIG_MTD_PARTITIONS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -627,7 +629,7 @@ CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -1259,13 +1261,15 @@ CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
@@ -1288,7 +1292,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
#
# Miscellaneous filesystems
@@ -1323,8 +1327,14 @@ CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# 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_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1397,14 +1407,14 @@ CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
diff --git a/packages/linux/linux-handhelds-2.6.inc b/packages/linux/linux-handhelds-2.6.inc
index 0db5e93974..a0aec9cb36 100644
--- a/packages/linux/linux-handhelds-2.6.inc
+++ b/packages/linux/linux-handhelds-2.6.inc
@@ -88,16 +88,28 @@ set cmdline "root=/dev/mmcblk0p2 rootdelay=10 console=ttyS0,115200n8 console=tty
## Choice 2 - Boot from CF card, setup like above
#set cmdline "root=/dev/hda2 rootdelay=10 console=ttyS0,115200n8 console=tty0"
-## Choice 3 - Boot rootfs image as initramfs (works only for smaller images)
+## Choice 3 - Boot kernel with builtin interactive bootloader (initramfs-bootmenu-image)
+# rootdelay is a wait before scanning for the available partitions
+# if root= is also specified, interactive selection will be skipped and
+# direct boot will happen.
+#set cmdline "rootdelay=3 console=ttyS0,115200n8 console=tty0"
+
+## Choice 4 - Boot rootfs image as initramfs (works only for smaller images)
# have a cpio.gz file below together with zImage, no EXT2 partition required
#set initrd "<image>.rootfs.cpio.gz"
#set cmdline "rdinit=/sbin/init console=ttyS0,115200n8 console=tty0"
-## Choice 4 - Boot via NFS over USB networking (must be kernel-builtin)
+## Choice 5 - Boot via NFS over USB networking (must be kernel-builtin
+# or initramfs-*-image works too)
# 192.168.x.x - Server address (the other side)
# 192.168.y.y - Handheld's address
#set cmdline "root=/dev/nfs nfsroot=192.168.x.x:<nfs_path> ip=192.168.y.y:192.168.x.x:192.168.x.x:255.255.255.0:pda:usb0 console=ttyS0,115200n8 console=tty0"
+## Choice 6 - Boot from MTD partition, for devices with lots of flash
+# to have both WinCE and Linux there. Note the value of root param,
+# that's how it should be, not "/dev/mtdblockN".
+#set cmdline "root=mtdN console=ttyS0,115200n8 console=tty0"
+
bootlinux
EOF
}
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb
index f15b71c325..8e3ab4d06d 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb
@@ -1,7 +1,7 @@
SECTION = "kernel"
DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
LICENSE = "GPL"
-PR = "r6"
+PR = "r13"
DEFAULT_PREFERENCE = "-1"
@@ -10,6 +10,8 @@ DEFAULT_PREFERENCE = "-1"
FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21"
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
+ file://linux-2.6.git-9d20fdd58e74d4d26dc5216efaaa0f800c23dd3a.patch;patch=1 \
+ http://www.rpsys.net/openzaurus/patches/archive/export_atags-r0a.patch;patch=1 \
file://defconfig"
require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.23.14 b/packages/linux/linux-ixp4xx/defconfig-2.6.23.14
index efbd55195d..f4b897fc57 100644
--- a/packages/linux/linux-ixp4xx/defconfig-2.6.23.14
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.23.14
@@ -1650,19 +1650,19 @@ CONFIG_RTC_DRV_PCF8563=y
#
# File systems
#
-CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
+CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=m
+CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.24 b/packages/linux/linux-ixp4xx/defconfig-2.6.24
new file mode 100644
index 0000000000..9f13364281
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.24
@@ -0,0 +1,1941 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.8
+# Wed Nov 21 22:15:10 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+# CONFIG_MACH_GATEWAY7001 is not set
+# CONFIG_MACH_WG302V2 is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+# CONFIG_MACH_KIXRP435 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_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=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+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_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_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=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC 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=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# 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
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_ETH=y
+# CONFIG_AX88796 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_SC92031 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_ISDN=m
+# CONFIG_ISDN_I4L is not set
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+# CONFIG_CAPI_AVM is not set
+# CONFIG_CAPI_EICON is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_POWERMATE is not set
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+# CONFIG_I2C_IXP4XX is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+# CONFIG_W1_MASTER_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_W1_SLAVE_DS2760 is not set
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_IXP4XX is not set
+CONFIG_LEDS_FSG=y
+CONFIG_LEDS_GPIO=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR_I2C=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_DPCM is not set
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BIND34=y
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.24 b/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.24
new file mode 100644
index 0000000000..061c0c0724
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.24
@@ -0,0 +1,1942 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.8
+# Wed Nov 21 22:15:10 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+# CONFIG_MACH_GATEWAY7001 is not set
+# CONFIG_MACH_WG302V2 is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+# CONFIG_MACH_KIXRP435 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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_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=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_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=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC 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=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# 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
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_ETH=y
+# CONFIG_AX88796 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_SC92031 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_ISDN=m
+# CONFIG_ISDN_I4L is not set
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+# CONFIG_CAPI_AVM is not set
+# CONFIG_CAPI_EICON is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_POWERMATE is not set
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+# CONFIG_I2C_IXP4XX is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+# CONFIG_W1_MASTER_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_W1_SLAVE_DS2760 is not set
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_IXP4XX is not set
+CONFIG_LEDS_FSG=y
+CONFIG_LEDS_GPIO=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR_I2C=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_DPCM is not set
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BIND34=y
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ixp4xx_2.6.24.bb b/packages/linux/linux-ixp4xx_2.6.24.bb
new file mode 100644
index 0000000000..9a5967afa2
--- /dev/null
+++ b/packages/linux/linux-ixp4xx_2.6.24.bb
@@ -0,0 +1,45 @@
+# Keep this until the dsmg600 via-velocity BE patch is forward-ported
+DEFAULT_PREFERENCE = "-1"
+
+require linux.inc
+require linux-ixp4xx.inc
+
+VANILLA_VERSION = "2.6.24"
+KERNEL_RELEASE = "2.6.24"
+
+# If you use a rc, you will need to use this:
+#PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}+svnr${SRCREV}"
+
+PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r1"
+
+# ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${KERNEL_RELEASE}.bz2;patch=1 \
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+ svn://svn.nslu2-linux.org/svnroot/kernel/trunk/patches;module=${VANILLA_VERSION};proto=http \
+ file://defconfig-${KERNEL_RELEASE}"
+
+S = "${WORKDIR}/linux-${VANILLA_VERSION}"
+
+# Apply the patches from the nslu2-linux project (after the patches in SRC_URI)
+do_postpatch() {
+ # Move away OE patches which have been already applied.
+ [ -e patches ] && mv ${S}/patches ${S}/patches.oe
+ [ -e .pc ] && mv .pc .pc.oe
+
+ # Move the NSLU2 patches in place for quilt and apply them.
+ mv ${WORKDIR}/${VANILLA_VERSION} ${S}/patches && cd ${S} && quilt push -av
+
+ # Store the NSLU2 patches
+ mv ${S}/patches ${S}/patches.ixp4xx
+ mv .pc .pc.ixp4xx
+
+ # And move back the OE patches
+ [ -e patches.oe ] && mv ${S}/patches.oe ${S}/patches
+ [ -e .pc.oe ] && mv .pc.oe .pc
+
+ # Copy the defconfig into ${WORKDIR}
+ mv ${WORKDIR}/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
+}
+
+addtask postpatch after do_patch before do_configure
diff --git a/packages/libpcap/libpcap-0.9.6/.mtn2git_empty b/packages/linux/linux-nokia800-2.6.21-osso71/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libpcap/libpcap-0.9.6/.mtn2git_empty
+++ b/packages/linux/linux-nokia800-2.6.21-osso71/.mtn2git_empty
diff --git a/packages/libvncserver/.mtn2git_empty b/packages/linux/linux-nokia800-2.6.21-osso71/nokia800/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libvncserver/.mtn2git_empty
+++ b/packages/linux/linux-nokia800-2.6.21-osso71/nokia800/.mtn2git_empty
diff --git a/packages/linux/linux-nokia800-2.6.21-osso71/nokia800/defconfig b/packages/linux/linux-nokia800-2.6.21-osso71/nokia800/defconfig
new file mode 100644
index 0000000000..b1af97af35
--- /dev/null
+++ b/packages/linux/linux-nokia800-2.6.21-osso71/nokia800/defconfig
@@ -0,0 +1,1585 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-omap1
+# Wed Feb 6 17:40:31 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+CONFIG_ARCH_OMAP=y
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+# CONFIG_ARCH_OMAP1 is not set
+CONFIG_ARCH_OMAP2=y
+
+#
+# OMAP Feature Selections
+#
+CONFIG_MACH_OMAP2420_DVFS=y
+CONFIG_ARCH_OMAP2420_DEBUG=y
+CONFIG_ARCH_OMAP2420_OBSERVABILITY=m
+CONFIG_ARCH_OMAP2420_PEEK_N_POKE=m
+CONFIG_ARCH_OMAP2420_SNAPSHOT=m
+CONFIG_ARCH_OMAP2420_DMA_DRAIN=y
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_BOOT_TAG=y
+CONFIG_OMAP_BOOT_REASON=y
+CONFIG_OMAP_COMPONENT_VERSION=y
+CONFIG_OMAP_GPIO_SWITCH=y
+# CONFIG_OMAP_MUX is not set
+CONFIG_OMAP_STI=y
+CONFIG_OMAP_STI_CONSOLE=y
+# CONFIG_OMAP_MCBSP is not set
+CONFIG_OMAP_MMU_FWK=y
+CONFIG_OMAP_MBOX_FWK=y
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
+CONFIG_OMAP_DM_TIMER=y
+# CONFIG_OMAP_LL_DEBUG_UART1 is not set
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+CONFIG_OMAP_LL_DEBUG_UART3=y
+CONFIG_OMAP_DSP=y
+# CONFIG_OMAP_DSP_MBCMD_VERBOSE is not set
+CONFIG_OMAP_DSP_TASK_MULTIOPEN=y
+CONFIG_OMAP_DSP_FBEXPORT=y
+CONFIG_OMAP_DSP_PAUSING=y
+# CONFIG_MACH_OMAP_GENERIC is not set
+
+#
+# OMAP Core Type
+#
+CONFIG_ARCH_OMAP24XX=y
+CONFIG_ARCH_OMAP2420=y
+# CONFIG_ARCH_OMAP2430 is not set
+
+#
+# OMAP Board Type
+#
+CONFIG_MACH_NOKIA_N800=y
+CONFIG_MACH_NOKIA_RX44=y
+CONFIG_MACH_OMAP2_TUSB6010=y
+# CONFIG_MACH_OMAP_H4 is not set
+# CONFIG_MACH_OMAP_APOLLON is not set
+# CONFIG_MACH_OMAP_2430SDP is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_V6=y
+# CONFIG_CPU_32v6K is not set
+CONFIG_CPU_32v6=y
+CONFIG_CPU_ABRT_EV6=y
+CONFIG_CPU_CACHE_V6=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V6=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=128
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_LEDS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x10C08000
+CONFIG_ZBOOT_ROM_BSS=0x10200000
+# CONFIG_ZBOOT_ROM is not set
+CONFIG_CMDLINE="root=1f03 rootfstype=jffs2 ro console=tty0"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_NULL=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_NULL=y
+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_VFP=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+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_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# 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_IP_MROUTE 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_BEET=y
+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
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETLABEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=y
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+CONFIG_NETFILTER_XTABLES=y
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=y
+# CONFIG_IP_NF_MATCH_IPRANGE is not set
+# CONFIG_IP_NF_MATCH_TOS is not set
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_MATCH_OWNER is not set
+# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
+CONFIG_IP_NF_FILTER=y
+# CONFIG_IP_NF_TARGET_REJECT is not set
+# CONFIG_IP_NF_TARGET_LOG is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_IP_NF_TARGET_IDLETIMER=y
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIBRF6150 is not set
+CONFIG_BT_HCIH4P=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+CONFIG_MTD_ONENAND=y
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_GENERIC is not set
+CONFIG_MTD_ONENAND_OMAP2=y
+CONFIG_MTD_ONENAND_OTP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=y
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=y
+CONFIG_PPP_SYNC_TTY=y
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=y
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=y
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_OMAP is not set
+# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_KEYBOARD_TSC2301=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_TOUCHSCREEN_TSC2005=y
+CONFIG_TOUCHSCREEN_TSC2301=y
+# CONFIG_TOUCHSCREEN_TSC2046 is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_ISP1301_OMAP is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_TLV320AIC23 is not set
+CONFIG_SENSORS_TSL2563=y
+# CONFIG_GPIOEXPANDER_OMAP is not set
+CONFIG_LM8323=y
+CONFIG_LP5521=y
+CONFIG_MENELAUS=y
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_OMAP24XX=y
+CONFIG_SPI_OMAP_PAUSING=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_TSC2005 is not set
+# CONFIG_SPI_TSC2101 is not set
+# CONFIG_SPI_TSC2102 is not set
+CONFIG_SPI_TSC2301=y
+CONFIG_SPI_TSC2301_AUDIO=y
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+CONFIG_SENSORS_TMP105=y
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_OMAP_DEBUG is not set
+# CONFIG_LEDS_OMAP is not set
+CONFIG_LEDS_OMAP_PWM=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=y
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_OMAP_CAMERA=y
+# CONFIG_VIDEO_CAMERA_SENSOR_OV9640 is not set
+CONFIG_VIDEO_CAMERA_SENSOR_TCM825X=y
+
+#
+# Radio Adapters
+#
+CONFIG_RADIO_TEA5761=y
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+CONFIG_VIDEO_BUF=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_OMAP=y
+CONFIG_FB_OMAP_LCDC_EXTERNAL=y
+# CONFIG_FB_OMAP_LCDC_HWA742 is not set
+CONFIG_FB_OMAP_LCDC_BLIZZARD=y
+# CONFIG_FB_OMAP_MANUAL_UPDATE is not set
+CONFIG_FB_OMAP_LCD_MIPID=y
+CONFIG_FB_OMAP_BOOTLOADER_INIT=y
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=4
+CONFIG_FB_OMAP_PAUSING=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_OMAP_AIC23 is not set
+CONFIG_SND_AIC33=y
+# CONFIG_SND_OMAP_TSC2101 is not set
+# CONFIG_SND_SX1 is not set
+# CONFIG_SND_OMAP_TSC2102 is not set
+CONFIG_SND_OMAP24XX_EAC=y
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+CONFIG_USB_DEBUG=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_SUSPEND=y
+CONFIG_USB_OTG=y
+CONFIG_USB_OTG_WHITELIST=y
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_TUSB6010=y
+CONFIG_USB_TUSB6010_TEST=y
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MUSB_PERIPHERAL is not set
+CONFIG_USB_MUSB_OTG=y
+CONFIG_USB_GADGET_MUSB_HDRC=y
+CONFIG_USB_MUSB_HDRC_HCD=y
+CONFIG_USB_MUSB_HSET=y
+# CONFIG_MUSB_PIO_ONLY is not set
+# CONFIG_USB_INVENTRA_DMA is not set
+# CONFIG_USB_TI_CPPI_DMA is not set
+CONFIG_USB_TUSB_OMAP_DMA=y
+CONFIG_USB_MUSB_LOGLEVEL=1
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+CONFIG_USB_LIBUSUAL=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+CONFIG_USB_RTL8150=y
+# CONFIG_USB_USBNET_MII is not set
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=y
+CONFIG_USB_NET_PLUSB=y
+# CONFIG_USB_NET_MCS7830 is not set
+CONFIG_USB_NET_RNDIS_HOST=y
+CONFIG_USB_NET_CDC_SUBSET=y
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+CONFIG_USB_NET_ZAURUS=y
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+CONFIG_USB_TEST=y
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+CONFIG_USB_FILE_STORAGE_TEST=y
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_PAUSING=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# CBUS support
+#
+CONFIG_CBUS=y
+CONFIG_CBUS_TAHVO=y
+CONFIG_CBUS_TAHVO_USER=y
+# CONFIG_CBUS_TAHVO_USB is not set
+CONFIG_CBUS_RETU=y
+CONFIG_CBUS_RETU_USER=y
+CONFIG_CBUS_RETU_POWERBUTTON=y
+CONFIG_CBUS_RETU_RTC=y
+CONFIG_CBUS_RETU_WDT=y
+CONFIG_CBUS_RETU_HEADSET=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+CONFIG_SECURITY=y
+# CONFIG_SECURITY_NETWORK is not set
+# CONFIG_SECURITY_CAPABILITIES is not set
+# CONFIG_SECURITY_ROOTPLUG is not set
+CONFIG_SECURITY_LOWMEM=y
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-nokia800_2.6.21-osso71.bb b/packages/linux/linux-nokia800_2.6.21-osso71.bb
new file mode 100644
index 0000000000..34cc82a842
--- /dev/null
+++ b/packages/linux/linux-nokia800_2.6.21-osso71.bb
@@ -0,0 +1,16 @@
+require linux-nokia800.inc
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_nokia800 = "1"
+
+SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2 \
+ http://repository.maemo.org/pool/os2008/free/source/k/kernel-source-rx-34/kernel-source-rx-34_2.6.21.0-osso71.diff.gz;patch=1 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-2.6.21"
+
+do_stage_append () {
+ mkdir -p ${STAGING_KERNEL_DIR}/drivers/media/video/omap/
+ cp -f drivers/media/video/omap/tcm825x.h ${STAGING_KERNEL_DIR}/drivers/media/video/omap/
+}
diff --git a/packages/linux/linux-openmoko-devel/defconfig-2.6.23.1 b/packages/linux/linux-openmoko-devel/defconfig-2.6.23.1
deleted file mode 100644
index 2419f90981..0000000000
--- a/packages/linux/linux-openmoko-devel/defconfig-2.6.23.1
+++ /dev/null
@@ -1,1806 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23-rc9
-# Tue Oct 9 15:27:11 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_TIME is not set
-# CONFIG_GENERIC_CLOCKEVENTS is not set
-CONFIG_MMU=y
-CONFIG_NO_IOPORT=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION="-moko11"
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=m
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=m
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-CONFIG_ARCH_S3C2410=y
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_PLAT_S3C24XX=y
-CONFIG_CPU_S3C244X=y
-CONFIG_S3C2410_DMA=y
-# CONFIG_S3C2410_DMA_DEBUG is not set
-CONFIG_MACH_SMDK=y
-CONFIG_PLAT_S3C=y
-CONFIG_CPU_LLSERIAL_S3C2410=y
-CONFIG_CPU_LLSERIAL_S3C2440=y
-
-#
-# Boot options
-#
-# CONFIG_S3C_BOOT_WATCHDOG is not set
-# CONFIG_S3C_BOOT_ERROR_RESET is not set
-
-#
-# Power management
-#
-CONFIG_S3C2410_PM_DEBUG=y
-# CONFIG_S3C2410_PM_CHECK is not set
-CONFIG_S3C_LOWLEVEL_UART_PORT=0
-
-#
-# S3C2400 Machines
-#
-CONFIG_CPU_S3C2410=y
-CONFIG_CPU_S3C2410_DMA=y
-CONFIG_S3C2410_PM=y
-CONFIG_S3C2410_GPIO=y
-CONFIG_S3C2410_CLOCK=y
-
-#
-# S3C2410 Machines
-#
-# CONFIG_ARCH_SMDK2410 is not set
-# CONFIG_ARCH_H1940 is not set
-# CONFIG_MACH_N30 is not set
-# CONFIG_ARCH_BAST is not set
-# CONFIG_MACH_OTOM is not set
-# CONFIG_MACH_AML_M5900 is not set
-# CONFIG_MACH_VR1000 is not set
-CONFIG_MACH_QT2410=y
-CONFIG_MACH_NEO1973_GTA01=y
-
-#
-# S3C2412 Machines
-#
-# CONFIG_MACH_SMDK2413 is not set
-# CONFIG_MACH_SMDK2412 is not set
-# CONFIG_MACH_VSTMS is not set
-CONFIG_CPU_S3C2440=y
-CONFIG_S3C2440_DMA=y
-
-#
-# S3C2440 Machines
-#
-# CONFIG_MACH_ANUBIS is not set
-# CONFIG_MACH_OSIRIS is not set
-# CONFIG_MACH_RX3715 is not set
-CONFIG_ARCH_S3C2440=y
-# CONFIG_MACH_NEXCODER_2440 is not set
-CONFIG_SMDK2440_CPU2440=y
-CONFIG_MACH_HXD8=y
-CONFIG_MACH_NEO1973_GTA02=y
-CONFIG_CPU_S3C2442=y
-
-#
-# S3C2442 Machines
-#
-# CONFIG_SMDK2440_CPU2442 is not set
-
-#
-# S3C2443 Machines
-#
-# CONFIG_MACH_SMDK2443 is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_ARM920T=y
-CONFIG_CPU_32v4T=y
-CONFIG_CPU_ABRT_EV4T=y
-CONFIG_CPU_CACHE_V4WT=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=200
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="unused -- bootloader passes ATAG list"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_VERBOSE is not set
-CONFIG_DISABLE_CONSOLE_SUSPEND=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-CONFIG_XFRM_MIGRATE=y
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_ROUTE_MULTIPATH is not set
-# CONFIG_IP_ROUTE_VERBOSE is not set
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-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=y
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-# CONFIG_NF_CT_PROTO_UDPLITE is not set
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-# CONFIG_NF_NAT_AMANDA is not set
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-# CONFIG_IP6_NF_RAW is not set
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=y
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-CONFIG_LLC=y
-# 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
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RR=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-# CONFIG_NET_CLS_POLICE is not set
-# CONFIG_NET_CLS_IND is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-# CONFIG_BT_HCIUART is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_FIB_RULES=y
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 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=y
-CONFIG_FW_LOADER=m
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=m
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_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
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-# 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_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-CONFIG_MTD_NAND_IDS=y
-CONFIG_MTD_NAND_S3C2410=y
-CONFIG_MTD_NAND_S3C2410_BBT=y
-# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
-CONFIG_MTD_NAND_S3C2410_HWECC=y
-CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ONENAND 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=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_UB=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-# CONFIG_DM_DELAY is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-CONFIG_NET_PCI=y
-CONFIG_CS89x0=m
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_EVBUG=m
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_GTA01=y
-CONFIG_KEYBOARD_QT2410=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-CONFIG_TOUCHSCREEN_S3C2410=y
-# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_NR_TTY_DEVICES=4
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_S3C2410=y
-CONFIG_SERIAL_S3C2410_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_S3C2410_WATCHDOG=m
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TS0710_MUX is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-CONFIG_I2C_S3C2410=y
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-CONFIG_SENSORS_PCF50606=y
-CONFIG_SENSORS_PCF50633=y
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-CONFIG_SENSORS_TSL256X=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_S3C24XX=y
-CONFIG_SPI_S3C24XX_GPIO=y
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-CONFIG_SPI_SLAVE_JBT6K74=y
-# CONFIG_W1 is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ABITUGURU3 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_S3C24XX=y
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GTA01=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_S3C2410=y
-# CONFIG_FB_S3C2410_DEBUG is not set
-CONFIG_GLAMO=y
-CONFIG_FB_GLAMO=y
-CONFIG_GLAMO_SPI_GPIO=y
-CONFIG_FB_GLAMO_SPI=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-CONFIG_FONT_6x11=y
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_LOGO_OPENMOKO_CLUT224 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=y
-CONFIG_SND_S3C24XX_SOC=y
-CONFIG_SND_S3C24XX_SOC_I2S=y
-CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
-
-#
-# SoC Audio support for SuperH
-#
-CONFIG_SND_SOC_WM8753=y
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_KARMA=y
-CONFIG_USB_LIBUSUAL=y
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_AIRPRIME=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-CONFIG_USB_BERRY_CHARGE=m
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-CONFIG_USB_GADGET_S3C2410=y
-CONFIG_USB_S3C2410=y
-# CONFIG_USB_S3C2410_DEBUG is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_S3C=y
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_DEBUG=y
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_S3C=m
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-CONFIG_CONFIGFS_FS=m
-
-#
-# Miscellaneous filesystems
-#
-# 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_YAFFS_FS=y
-CONFIG_YAFFS_YAFFS1=y
-# CONFIG_YAFFS_9BYTE_TAGS is not set
-# CONFIG_YAFFS_DOES_ECC is not set
-CONFIG_YAFFS_YAFFS2=y
-CONFIG_YAFFS_AUTO_YAFFS2=y
-# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
-CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
-# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
-# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
-CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=m
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=m
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=m
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_DEBUG_S3C_PORT=y
-CONFIG_DEBUG_S3C_UART=2
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_LRW=m
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc6 b/packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc6
deleted file mode 100644
index 9dac6e8e8e..0000000000
--- a/packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc6
+++ /dev/null
@@ -1,1814 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc6
-# Sat Dec 29 04:40:52 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_TIME is not set
-# CONFIG_GENERIC_CLOCKEVENTS is not set
-CONFIG_MMU=y
-CONFIG_NO_IOPORT=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION="-moko11"
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=m
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=m
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-CONFIG_ARCH_S3C2410=y
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_PLAT_S3C24XX=y
-CONFIG_CPU_S3C244X=y
-CONFIG_S3C2410_DMA=y
-# CONFIG_S3C2410_DMA_DEBUG is not set
-CONFIG_MACH_SMDK=y
-CONFIG_MACH_NEO1973=y
-CONFIG_PLAT_S3C=y
-CONFIG_CPU_LLSERIAL_S3C2410=y
-CONFIG_CPU_LLSERIAL_S3C2440=y
-
-#
-# Boot options
-#
-# CONFIG_S3C_BOOT_WATCHDOG is not set
-# CONFIG_S3C_BOOT_ERROR_RESET is not set
-
-#
-# Power management
-#
-CONFIG_S3C2410_PM_DEBUG=y
-# CONFIG_S3C2410_PM_CHECK is not set
-CONFIG_S3C_LOWLEVEL_UART_PORT=0
-
-#
-# S3C2400 Machines
-#
-CONFIG_CPU_S3C2410=y
-CONFIG_CPU_S3C2410_DMA=y
-CONFIG_S3C2410_PM=y
-CONFIG_S3C2410_GPIO=y
-CONFIG_S3C2410_CLOCK=y
-CONFIG_S3C2410_PWM=y
-
-#
-# S3C2410 Machines
-#
-# CONFIG_ARCH_SMDK2410 is not set
-# CONFIG_ARCH_H1940 is not set
-# CONFIG_MACH_N30 is not set
-# CONFIG_ARCH_BAST is not set
-# CONFIG_MACH_OTOM is not set
-# CONFIG_MACH_AML_M5900 is not set
-# CONFIG_MACH_VR1000 is not set
-CONFIG_MACH_QT2410=y
-CONFIG_MACH_NEO1973_GTA01=y
-
-#
-# S3C2412 Machines
-#
-# CONFIG_MACH_SMDK2413 is not set
-# CONFIG_MACH_SMDK2412 is not set
-# CONFIG_MACH_VSTMS is not set
-CONFIG_CPU_S3C2440=y
-CONFIG_S3C2440_DMA=y
-
-#
-# S3C2440 Machines
-#
-# CONFIG_MACH_ANUBIS is not set
-# CONFIG_MACH_OSIRIS is not set
-# CONFIG_MACH_RX3715 is not set
-CONFIG_ARCH_S3C2440=y
-# CONFIG_MACH_NEXCODER_2440 is not set
-CONFIG_SMDK2440_CPU2440=y
-CONFIG_MACH_HXD8=y
-CONFIG_MACH_NEO1973_GTA02=y
-# CONFIG_NEO1973_GTA02_2440 is not set
-CONFIG_CPU_S3C2442=y
-
-#
-# S3C2442 Machines
-#
-# CONFIG_SMDK2440_CPU2442 is not set
-
-#
-# S3C2443 Machines
-#
-# CONFIG_MACH_SMDK2443 is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_ARM920T=y
-CONFIG_CPU_32v4T=y
-CONFIG_CPU_ABRT_EV4T=y
-CONFIG_CPU_CACHE_V4WT=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=200
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="unused -- bootloader passes ATAG list debug "
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_VERBOSE is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-CONFIG_XFRM_MIGRATE=y
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_ROUTE_MULTIPATH is not set
-# CONFIG_IP_ROUTE_VERBOSE is not set
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# 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=y
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-# CONFIG_NF_CT_PROTO_UDPLITE is not set
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-# CONFIG_NF_NAT_AMANDA is not set
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-# CONFIG_IP6_NF_RAW is not set
-
-#
-# Bridge: Netfilter Configuration
-#
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=y
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-CONFIG_LLC=y
-# 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=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RR=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-# CONFIG_NET_CLS_POLICE is not set
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-# CONFIG_BT_HCIBTSDIO is not set
-# CONFIG_BT_HCIUART is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_FIB_RULES=y
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=m
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_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 is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-# 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_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# 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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-CONFIG_MTD_NAND_IDS=y
-CONFIG_MTD_NAND_S3C2410=y
-# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
-CONFIG_MTD_NAND_S3C2410_HWECC=y
-CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND 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=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_UB=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 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_NET_PCI=y
-# CONFIG_B44 is not set
-CONFIG_CS89x0=m
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_EVBUG=m
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_NEO1973=y
-CONFIG_KEYBOARD_QT2410=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-CONFIG_TOUCHSCREEN_S3C2410=y
-# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_NR_TTY_DEVICES=4
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_S3C2410=y
-CONFIG_SERIAL_S3C2410_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-CONFIG_I2C_S3C2410=y
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-CONFIG_SENSORS_PCF50606=y
-CONFIG_SENSORS_PCF50633=y
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-CONFIG_SENSORS_TSL256X=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_S3C24XX=y
-CONFIG_SPI_S3C24XX_GPIO=y
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_S3C2410_WATCHDOG=m
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-CONFIG_MFD_GLAMO=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_UVESA is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_S3C2410=y
-# CONFIG_FB_S3C2410_DEBUG is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_LTV350QV is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_GTA01=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-CONFIG_DISPLAY_JBT6K74=y
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-CONFIG_FONT_6x11=y
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_LOGO_OPENMOKO_CLUT224 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# SPI devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=y
-CONFIG_SND_S3C24XX_SOC=y
-CONFIG_SND_S3C24XX_SOC_I2S=y
-CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
-# CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753 is not set
-
-#
-# SoC Audio support for SuperH
-#
-CONFIG_SND_SOC_WM8753=y
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-# CONFIG_USB_STORAGE_ISD200 is not set
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_STORAGE_KARMA=y
-CONFIG_USB_LIBUSUAL=y
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_AIRPRIME=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-CONFIG_USB_BERRY_CHARGE=m
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-CONFIG_USB_GADGET_S3C2410=y
-CONFIG_USB_S3C2410=y
-# CONFIG_USB_S3C2410_DEBUG is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-# CONFIG_MMC_SPI is not set
-CONFIG_MMC_S3C=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_S3C24XX=y
-# CONFIG_LEDS_GPIO is not set
-# CONFIG_LEDS_NEO1973_VIBRATOR is not set
-# CONFIG_LEDS_NEO1973_GTA02 is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_DEBUG=y
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_S3C=m
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=m
-
-#
-# Miscellaneous filesystems
-#
-# 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_YAFFS_FS=y
-CONFIG_YAFFS_YAFFS1=y
-# CONFIG_YAFFS_9BYTE_TAGS is not set
-# CONFIG_YAFFS_DOES_ECC is not set
-CONFIG_YAFFS_YAFFS2=y
-CONFIG_YAFFS_AUTO_YAFFS2=y
-# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
-CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
-# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
-# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
-CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# 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 is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=m
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=m
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=m
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=m
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=m
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-# CONFIG_PROFILING is not set
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_DEBUG_S3C_PORT=y
-CONFIG_DEBUG_S3C_UART=2
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_LRW=m
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-openmoko-devel/fix-EVIOCGRAB-semantics-2.6.22.5.patch b/packages/linux/linux-openmoko-devel/fix-EVIOCGRAB-semantics-2.6.22.5.patch
deleted file mode 100644
index cc74c0e289..0000000000
--- a/packages/linux/linux-openmoko-devel/fix-EVIOCGRAB-semantics-2.6.22.5.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-Index: linux-2.6.22.5/drivers/input/evdev.c
-===================================================================
---- linux-2.6.22.5.orig/drivers/input/evdev.c
-+++ linux-2.6.22.5/drivers/input/evdev.c
-@@ -28,7 +28,7 @@ struct evdev {
- char name[16];
- struct input_handle handle;
- wait_queue_head_t wait;
-- struct evdev_client *grab;
-+ int grab;
- struct list_head client_list;
- };
-
-@@ -36,6 +36,7 @@ struct evdev_client {
- struct input_event buffer[EVDEV_BUFFER_SIZE];
- int head;
- int tail;
-+ int grab;
- struct fasync_struct *fasync;
- struct evdev *evdev;
- struct list_head node;
-@@ -48,8 +49,7 @@ static void evdev_event(struct input_han
- struct evdev *evdev = handle->private;
- struct evdev_client *client;
-
-- if (evdev->grab) {
-- client = evdev->grab;
-+ list_for_each_entry(client, &evdev->client_list, node) {
-
- do_gettimeofday(&client->buffer[client->head].time);
- client->buffer[client->head].type = type;
-@@ -58,17 +58,7 @@ static void evdev_event(struct input_han
- client->head = (client->head + 1) & (EVDEV_BUFFER_SIZE - 1);
-
- kill_fasync(&client->fasync, SIGIO, POLL_IN);
-- } else
-- list_for_each_entry(client, &evdev->client_list, node) {
--
-- do_gettimeofday(&client->buffer[client->head].time);
-- client->buffer[client->head].type = type;
-- client->buffer[client->head].code = code;
-- client->buffer[client->head].value = value;
-- client->head = (client->head + 1) & (EVDEV_BUFFER_SIZE - 1);
--
-- kill_fasync(&client->fasync, SIGIO, POLL_IN);
-- }
-+ }
-
- wake_up_interruptible(&evdev->wait);
- }
-@@ -105,9 +95,10 @@ static int evdev_release(struct inode *i
- struct evdev_client *client = file->private_data;
- struct evdev *evdev = client->evdev;
-
-- if (evdev->grab == client) {
-- input_release_device(&evdev->handle);
-- evdev->grab = NULL;
-+ if (client->grab) {
-+ if(!--evdev->grab && evdev->exist)
-+ input_release_device(&evdev->handle);
-+ client->grab = 0;
- }
-
- evdev_fasync(-1, file, 0);
-@@ -488,17 +479,19 @@ static long evdev_ioctl_handler(struct f
-
- case EVIOCGRAB:
- if (p) {
-- if (evdev->grab)
-- return -EBUSY;
-- if (input_grab_device(&evdev->handle))
-+ if (client->grab)
- return -EBUSY;
-- evdev->grab = client;
-+ if (!evdev->grab++)
-+ if (input_grab_device(&evdev->handle))
-+ return -EBUSY;
-+ client->grab = 0;
- return 0;
- } else {
-- if (evdev->grab != client)
-+ if (!client->grab)
- return -EINVAL;
-- input_release_device(&evdev->handle);
-- evdev->grab = NULL;
-+ if (!--evdev->grab)
-+ input_release_device(&evdev->handle);
-+ client->grab = 0;
- return 0;
- }
-
diff --git a/packages/linux/linux-openmoko-devel/fix-gta01-flowcontrol2-2.6.23.patch b/packages/linux/linux-openmoko-devel/fix-gta01-flowcontrol2-2.6.23.patch
deleted file mode 100644
index deb31dacd9..0000000000
--- a/packages/linux/linux-openmoko-devel/fix-gta01-flowcontrol2-2.6.23.patch
+++ /dev/null
@@ -1,193 +0,0 @@
---- linux-2.6.23/arch/arm/common/gta01_pm_gsm.c.orig 2007-10-30 23:29:53.000000000 -0500
-+++ linux-2.6.23/arch/arm/common/gta01_pm_gsm.c 2007-10-30 23:35:44.000000000 -0500
-@@ -23,6 +23,9 @@
- #include <asm/arch/gta01.h>
- #include <asm/arch/gta02.h>
-
-+#include <linux/serial_core.h>
-+void s3c24xx_set_flow_control(struct uart_port *port, int fc_on);
-+
- struct gta01pm_priv {
- int gpio_ngsm_en;
- struct console *con;
-@@ -49,6 +52,23 @@
- static ssize_t gsm_read(struct device *dev, struct device_attribute *attr,
- char *buf)
- {
-+ struct uart_driver *udrive = NULL;
-+ struct uart_state *ustate = NULL;
-+ struct uart_port *uport = NULL;
-+
-+ if (gta01_gsm.con) {
-+ udrive = gta01_gsm.con->data;
-+ if (udrive) {
-+ ustate = udrive->state;
-+ if (ustate) {
-+ uport = ustate->port;
-+ }
-+ }
-+ }
-+ printk("gsm: gsm_read of \"%s\"\n", attr->attr.name);
-+ printk("gsm: con=%p udrive=%p ustate=%p uport=%p\n",
-+ gta01_gsm.con, udrive, ustate, uport);
-+
- if (!strcmp(attr->attr.name, "power_on")) {
- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_ON))
- goto out_1;
-@@ -58,6 +78,24 @@
- } else if (!strcmp(attr->attr.name, "download")) {
- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_DNLOAD))
- goto out_1;
-+ } else if (!strcmp(attr->attr.name, "flowcontrol")) {
-+ if (uport) {
-+ if (uport->unused[2] & 0x2) {
-+ if (uport->unused[2] & 0x1) {
-+ printk("gsm: flow control allowed and on\n");
-+ goto out_1;
-+ } else {
-+ printk("gsm: flow control allowed and not on\n");
-+ }
-+ } else {
-+ if (uport->unused[2] & 0x1)
-+ printk("gsm: flow control not allowed, "
-+ "but is pending\n");
-+ else
-+ printk("gsm: flow control not allowed, "
-+ "not pending\n");
-+ }
-+ }
- }
-
- return strlcpy(buf, "0\n", 3);
-@@ -68,10 +106,26 @@
- static ssize_t gsm_write(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
- {
-+ struct uart_driver *udrive = NULL;
-+ struct uart_state *ustate = NULL;
-+ struct uart_port *uport = NULL;
-+ static int was_on = 0;
- unsigned long on = simple_strtoul(buf, NULL, 10);
-
-+ if (gta01_gsm.con) {
-+ udrive = gta01_gsm.con->data;
-+ if (udrive) {
-+ ustate = udrive->state;
-+ if (ustate) {
-+ uport = ustate->port;
-+ }
-+ }
-+ }
-+ printk("gsm: con=%p udrive=%p ustate=%p uport=%p\n",
-+ gta01_gsm.con, udrive, ustate, uport);
-+
- if (!strcmp(attr->attr.name, "power_on")) {
-- if (on) {
-+ if (on && !was_on) {
- if (gta01_gsm.con) {
- dev_info(dev, "powering up GSM, thus "
- "disconnecting serial console\n");
-@@ -83,7 +137,24 @@
- s3c2410_gpio_setpin(gta01_gsm.gpio_ngsm_en, 0);
-
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_ON, 1);
-- } else {
-+
-+ if (uport) {
-+ /* set any pending flow-control mode */
-+ uport->unused[2] |= 0x2;
-+ s3c24xx_set_flow_control(uport,
-+ (uport->unused[2] & 0x1));
-+ dev_info(dev, "flow control allowed\n");
-+ }
-+
-+ was_on = 1;
-+
-+ } else if (!on && was_on) {
-+ if (uport) {
-+ uport->unused[2] &= ~0x2;
-+ s3c24xx_set_flow_control(uport, 0);
-+ dev_info(dev, "flow control not allowed\n");
-+ }
-+
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_ON, 0);
-
- if (gta01_gsm.gpio_ngsm_en)
-@@ -95,6 +166,8 @@
- dev_info(dev, "powered down GSM, thus enabling "
- "serial console\n");
- }
-+
-+ was_on = 0;
- }
- } else if (!strcmp(attr->attr.name, "reset")) {
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_RST, on);
-@@ -105,6 +178,7 @@
- return count;
- }
-
-+static DEVICE_ATTR(flowcontrol, 0644, gsm_read, gsm_write);
- static DEVICE_ATTR(power_on, 0644, gsm_read, gsm_write);
- static DEVICE_ATTR(reset, 0644, gsm_read, gsm_write);
- static DEVICE_ATTR(download, 0644, gsm_read, gsm_write);
-@@ -136,6 +210,7 @@
- #endif
-
- static struct attribute *gta01_gsm_sysfs_entries[] = {
-+ &dev_attr_flowcontrol.attr,
- &dev_attr_power_on.attr,
- &dev_attr_reset.attr,
- NULL,
---- linux-2.6.23/drivers/serial/s3c2410.c.orig 2007-10-30 23:31:59.000000000 -0500
-+++ linux-2.6.23/drivers/serial/s3c2410.c 2007-10-30 23:35:44.000000000 -0500
-@@ -80,6 +80,8 @@
-
- #include <asm/plat-s3c/regs-serial.h>
- #include <asm/arch/regs-gpio.h>
-+#include <asm/mach-types.h>
-+#include <asm/arch/gta01.h>
-
- /* structures */
-
-@@ -729,6 +731,17 @@
- return best->quot;
- }
-
-+/* This routine is called whenever the gta01 modem/console switches */
-+void s3c24xx_set_flow_control(struct uart_port *port, int fc_on)
-+{
-+ unsigned int umcon;
-+ if (machine_is_neo1973_gta01() && port) {
-+ umcon = (fc_on) ? S3C2410_UMCOM_AFC : 0;
-+ wr_regl(port, S3C2410_UMCON, umcon);
-+ }
-+}
-+EXPORT_SYMBOL(s3c24xx_set_flow_control);
-+
- static void s3c24xx_serial_set_termios(struct uart_port *port,
- struct ktermios *termios,
- struct ktermios *old)
-@@ -803,6 +816,23 @@
-
- umcon = (termios->c_cflag & CRTSCTS) ? S3C2410_UMCOM_AFC : 0;
-
-+ /*
-+ * Custom handling of flow control on hwport 0 for the GTA01:
-+ * Save the desired state for flow control, but if the port
-+ * is being used as a console, then do not actually enable
-+ * flow control unless the flag permiting us to do so is set.
-+ */
-+ if (machine_is_neo1973_gta01() && (cfg->hwport == 0)) {
-+ if (umcon)
-+ port->unused[2] |= 0x1;
-+ else
-+ port->unused[2] &= ~0x1;
-+ if (port->cons && (port->cons->index >= 0)) {
-+ if (!(port->unused[2] & 0x2))
-+ umcon = 0;
-+ }
-+ }
-+
- if (termios->c_cflag & PARENB) {
- if (termios->c_cflag & PARODD)
- ulcon |= S3C2410_LCON_PODD;
diff --git a/packages/linux/linux-openmoko-devel/hack-gta02-cpu.patch b/packages/linux/linux-openmoko-devel/hack-gta02-cpu.patch
deleted file mode 100644
index ef4e939640..0000000000
--- a/packages/linux/linux-openmoko-devel/hack-gta02-cpu.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Index: linux-2.6.22/arch/arm/mach-s3c2440/Kconfig
-===================================================================
---- linux-2.6.22.orig/arch/arm/mach-s3c2440/Kconfig
-+++ linux-2.6.22/arch/arm/mach-s3c2440/Kconfig
-@@ -69,14 +69,14 @@
-
- config MACH_HXD8
- bool "FIC HXD8"
-- select CPU_S3C2440
-+ select CPU_S3C2442
- select SENSORS_PCF50606
- help
- Say Y here if you are using the FIC Neo1973 GSM Phone
-
- config MACH_NEO1973_GTA02
- bool "FIC Neo1973 GSM Phone (GTA02 Hardware)"
-- select CPU_S3C2440
-+ select CPU_S3C2442
- select SENSORS_PCF50633
- help
- Say Y here if you are using the FIC Neo1973 GSM Phone
diff --git a/packages/linux/linux-openmoko-devel/logo_linux_clut224.ppm b/packages/linux/linux-openmoko-devel/logo_linux_clut224.ppm
deleted file mode 100644
index c3e8dec6f8..0000000000
--- a/packages/linux/linux-openmoko-devel/logo_linux_clut224.ppm
+++ /dev/null
@@ -1,31723 +0,0 @@
-P3
-480 520
-255
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 2 2 2 2 2 2
-2 2 2 3 3 2 3 3 2 3 3 2 3 3 2 3 3 2 3 3 2 3 3 2
-3 3 2 3 3 2 3 3 2 3 3 2 3 3 2 2 2 2 2 2 2 1 1 0
-1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-2 2 2 3 3 2 5 3 1 5 3 1 5 3 1 5 3 1 5 4 2 5 4 2
-5 4 2 7 6 2 7 6 2 7 6 2 7 6 2 7 6 2 7 6 2 7 6 2
-7 6 2 7 6 2 7 6 2 7 6 2 5 4 2 5 4 2 5 4 2 5 3 1
-5 3 1 5 3 1 5 3 1 3 3 2 3 3 2 2 2 2 1 1 0 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 5 3 1
-5 4 2 7 6 2 7 6 2 9 8 4 9 8 4 9 8 4 9 8 4 9 8 4
-9 8 4 9 8 4 9 8 4 9 8 4 14 10 4 9 8 4 14 10 4 9 8 4
-14 10 4 9 8 4 14 10 4 9 8 4 9 8 4 9 8 4 9 8 4 9 8 4
-9 8 4 9 8 4 7 6 2 7 6 2 7 6 2 5 4 2 5 3 1 5 3 1
-3 3 2 3 3 2 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 5 3 1 7 6 2 9 8 4
-9 8 4 9 8 4 14 10 4 15 13 5 15 13 5 15 13 5 15 13 5 15 13 5
-19 15 5 19 15 5 19 15 5 19 15 5 19 15 5 19 15 5 19 15 5 19 15 5
-19 15 5 19 15 5 19 15 5 19 15 5 19 15 5 15 13 5 18 12 3 15 13 5
-15 13 5 15 13 5 14 10 4 14 10 4 9 8 4 9 8 4 9 8 4 9 8 4
-7 6 2 7 6 2 5 4 2 5 3 1 3 3 2 3 3 2 1 1 0 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 2 2 2 5 3 1 7 6 2 9 8 4 9 8 4 14 10 4
-18 12 3 15 13 5 19 15 5 19 15 5 19 15 5 22 19 6 22 19 6 24 19 6
-24 19 6 24 19 6 24 19 6 24 19 6 24 19 6 24 19 6 24 19 6 24 19 6
-24 19 6 24 19 6 24 19 6 24 19 6 24 19 6 24 19 6 24 19 6 22 19 6
-22 19 6 19 15 5 19 15 5 19 15 5 19 15 5 15 13 5 15 13 5 14 10 4
-14 10 4 14 10 4 9 8 4 9 8 4 7 6 2 7 6 2 5 3 1 5 3 1
-3 3 2 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 3 3 2 5 3 1 7 6 2 9 8 4 14 10 4 15 13 5 19 15 5
-22 19 6 22 19 6 24 19 6 24 19 6 30 25 8 30 25 8 30 25 8 30 25 8
-30 25 8 30 25 8 30 25 8 30 25 8 30 25 8 37 28 9 30 25 8 37 28 9
-30 25 8 30 25 8 30 25 8 30 25 8 30 25 8 30 25 8 30 25 8 30 25 8
-28 21 6 28 21 6 24 19 6 24 19 6 24 19 6 24 19 6 22 19 6 19 15 5
-19 15 5 15 13 5 15 13 5 15 13 5 14 10 4 9 8 4 9 8 4 9 8 4
-7 6 2 5 4 2 5 3 1 3 3 2 1 1 0 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-3 3 2 5 4 2 9 8 4 14 10 4 15 13 5 19 15 5 22 19 6 24 19 6
-24 19 6 30 25 8 30 25 8 30 25 8 37 32 10 30 25 8 37 32 10 37 32 10
-37 32 10 39 33 11 39 33 11 39 33 11 39 33 11 39 33 11 39 33 11 39 33 11
-39 33 11 39 33 11 39 33 11 39 33 11 37 32 10 37 32 10 37 32 10 37 32 10
-37 32 10 37 32 10 30 25 8 37 32 10 30 25 8 30 25 8 30 25 8 28 21 6
-24 19 6 24 19 6 22 19 6 19 15 5 19 15 5 19 15 5 15 13 5 14 10 4
-14 10 4 9 8 4 9 8 4 7 6 2 5 3 1 5 3 1 2 2 2 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2
-5 4 2 9 8 4 14 10 4 15 13 5 19 15 5 24 19 6 28 21 6 30 25 8
-37 28 9 37 32 10 37 32 10 39 33 11 41 34 11 41 34 11 44 38 13 41 34 11
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 39 33 11 41 34 11
-39 33 11 39 33 11 39 33 11 37 32 10 37 32 10 37 32 10 37 32 10 30 25 8
-37 32 10 30 25 8 30 25 8 28 21 6 24 19 6 24 19 6 22 19 6 19 15 5
-19 15 5 15 13 5 15 13 5 14 10 4 9 8 4 7 6 2 5 4 2 5 3 1
-3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 5 4 2
-9 8 4 14 10 4 19 15 5 22 19 6 24 19 6 30 25 8 30 25 8 37 32 10
-37 32 10 41 34 11 44 38 13 44 38 13 44 38 13 51 43 14 44 38 13 51 43 14
-44 38 13 51 43 14 51 43 14 51 43 14 51 43 14 51 43 14 51 43 14 51 43 14
-51 43 14 51 43 14 51 43 14 51 43 14 51 43 14 51 43 14 44 38 13 51 43 14
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 41 34 11 41 34 11 39 33 11
-37 32 10 37 32 10 37 32 10 37 32 10 30 25 8 30 25 8 30 25 8 24 19 6
-24 19 6 22 19 6 19 15 5 19 15 5 15 13 5 14 10 4 9 8 4 9 8 4
-7 6 2 5 3 1 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 5 4 2 9 8 4
-15 13 5 19 15 5 22 19 6 24 19 6 30 25 8 37 32 10 39 33 11 44 38 13
-44 38 13 44 38 13 51 43 14 53 46 15 53 46 15 53 46 15 53 46 15 54 47 16
-54 47 16 54 47 16 54 47 16 54 47 16 54 47 16 54 47 16 54 47 16 54 47 16
-54 47 16 54 47 16 54 47 16 54 47 16 53 46 15 53 46 15 54 47 16 53 46 15
-53 46 15 53 46 15 51 43 14 51 43 14 51 43 14 44 38 13 51 43 14 44 38 13
-44 38 13 44 38 13 39 33 11 39 33 11 39 33 11 37 32 10 37 32 10 30 25 8
-30 25 8 30 25 8 24 19 6 22 19 6 22 19 6 19 15 5 15 13 5 15 13 5
-14 10 4 9 8 4 7 6 2 5 3 1 3 3 2 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 5 4 2 9 8 4 14 10 4
-19 15 5 22 19 6 30 25 8 30 25 8 37 32 10 37 32 10 44 38 13 44 38 13
-51 43 14 54 47 16 54 47 16 54 47 16 54 47 16 54 47 16 54 47 16 56 49 15
-56 49 15 56 49 15 57 50 16 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17
-57 50 17 57 50 17 56 49 15 57 50 17 56 49 15 57 50 16 56 49 15 56 49 15
-54 47 16 54 47 16 54 47 16 54 47 16 54 47 16 54 47 16 51 43 14 53 46 15
-51 43 14 44 38 13 51 43 14 44 38 13 44 38 13 41 34 11 39 33 11 39 33 11
-37 32 10 37 32 10 30 25 8 30 25 8 28 21 6 24 19 6 22 19 6 19 15 5
-15 13 5 15 13 5 14 10 4 9 8 4 7 6 2 5 3 1 3 3 2 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 2 2 2 5 3 1 9 8 4 14 10 4 15 13 5
-22 19 6 28 21 6 30 25 8 37 32 10 39 33 11 44 38 13 51 43 14 51 43 14
-54 47 16 54 47 16 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17
-57 50 17 57 50 17 57 50 17 57 50 17 56 49 15 57 50 17 54 47 16 54 47 16
-54 47 16 54 47 16 53 46 15 51 43 14 51 43 14 51 43 14 44 38 13 44 38 13
-41 34 11 39 33 11 39 33 11 37 32 10 30 25 8 30 25 8 30 25 8 24 19 6
-24 19 6 22 19 6 15 13 5 15 13 5 14 10 4 9 8 4 7 6 2 5 3 1
-3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 5 3 1 7 6 2 14 10 4 15 13 5 22 19 6
-28 21 6 30 25 8 37 32 10 39 33 11 44 38 13 51 43 14 54 47 16 62 54 22
-83 78 45 83 78 45 87 85 74 109 103 77 110 107 92 161 154 100 157 154 144 157 154 144
-202 194 153 202 194 153 201 199 182 202 194 153 202 194 153 228 223 180 228 223 180 228 223 180
-227 220 173 226 217 157 202 194 153 204 179 101 202 194 153 161 154 100 161 154 100 145 122 90
-109 103 77 108 92 44 73 60 27 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17
-57 50 16 57 50 16 54 47 16 54 47 16 54 47 16 53 46 15 51 43 14 51 43 14
-51 43 14 44 38 13 44 38 13 41 34 11 39 33 11 37 32 10 37 32 10 30 25 8
-30 25 8 24 19 6 24 19 6 19 15 5 15 13 5 15 13 5 14 10 4 9 8 4
-7 6 2 5 3 1 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 3 3 2 7 6 2 9 8 4 15 13 5 19 15 5 24 19 6
-30 25 8 37 32 10 51 48 25 83 78 45 89 88 84 110 107 92 130 128 124 130 128 124
-130 128 124 130 128 124 161 154 100 157 154 144 157 154 144 130 128 124 145 122 90 130 128 124
-145 122 90 130 128 124 145 122 90 130 128 124 130 128 124 145 122 90 130 128 124 161 154 100
-157 154 144 157 154 144 202 194 153 167 167 167 226 217 157 228 223 180 227 220 173 226 218 164
-227 219 152 227 219 152 227 219 152 226 213 140 204 179 101 161 154 100 109 103 77 86 69 23
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 16 54 47 16 54 47 16 54 47 16
-53 46 15 51 43 14 51 43 14 44 38 13 44 38 13 44 38 13 39 33 11 39 33 11
-37 32 10 30 25 8 30 25 8 24 19 6 24 19 6 22 19 6 15 13 5 15 13 5
-9 8 4 9 8 4 5 4 2 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 2 2 2 5 3 1 9 8 4 15 13 5 19 15 5 39 33 11 60 59 56
-109 103 77 110 108 101 130 128 124 130 128 124 130 128 124 130 128 124 145 122 90 130 128 124
-161 154 100 130 128 124 157 154 144 202 194 153 202 194 153 157 154 144 157 154 144 145 122 90
-130 128 124 113 113 113 130 128 124 145 122 90 113 113 113 145 122 90 113 113 113 113 113 113
-145 122 90 110 107 92 110 108 101 145 122 90 110 107 92 110 108 101 161 154 100 157 154 144
-202 194 153 226 218 164 228 223 180 227 220 173 226 218 164 225 216 150 227 218 146 225 216 150
-226 213 140 161 154 100 109 103 77 73 60 27 57 50 17 57 50 17 57 50 17 57 50 16
-54 47 16 54 47 16 53 46 15 53 46 15 51 43 14 51 43 14 44 38 13 44 38 13
-41 34 11 39 33 11 37 32 10 30 25 8 30 25 8 24 19 6 22 19 6 19 15 5
-15 13 5 14 10 4 9 8 4 7 6 2 5 3 1 3 3 2 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 3 3 2 7 6 2 20 19 13 61 61 59 93 93 92 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 145 122 90 130 128 124 161 154 100 130 128 124 130 128 124
-157 154 144 227 220 173 230 225 190 228 223 180 228 223 180 230 225 190 228 223 180 227 220 173
-157 154 144 145 122 90 113 113 113 145 122 90 113 113 113 145 122 90 113 113 113 145 122 90
-110 108 101 145 122 90 113 113 113 110 107 92 145 122 90 110 108 101 110 107 92 110 107 92
-110 107 92 110 107 92 110 108 101 161 154 100 202 194 153 201 199 182 227 220 173 226 218 164
-226 218 150 227 218 147 227 218 146 227 218 146 204 179 101 145 122 90 83 78 45 56 49 15
-57 50 17 57 50 17 57 50 16 54 47 16 54 47 16 53 46 15 51 43 14 51 43 14
-44 38 13 44 38 13 41 34 11 39 33 11 37 32 10 30 25 8 30 25 8 24 19 6
-22 19 6 19 15 5 15 13 5 14 10 4 9 8 4 5 4 2 3 3 2 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-5 5 4 46 45 43 93 93 92 113 113 113 130 128 124 113 113 113 130 128 124 113 113 113
-145 122 90 130 128 124 145 122 90 130 128 124 130 128 124 130 128 124 130 128 124 202 194 153
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190
-230 225 190 130 128 124 145 122 90 113 113 113 145 122 90 113 113 113 145 122 90 113 113 113
-145 122 90 110 108 101 110 107 92 145 122 90 110 108 101 110 107 92 145 122 90 110 107 92
-145 122 90 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 145 122 90 202 194 153
-227 220 173 227 220 173 226 218 164 227 219 152 227 219 152 226 218 150 226 218 150 204 179 101
-145 122 90 73 60 27 57 50 17 57 50 17 57 50 16 54 47 16 54 47 16 53 46 15
-51 43 14 51 43 14 44 38 13 44 38 13 39 33 11 37 32 10 37 32 10 30 25 8
-30 25 8 24 19 6 19 15 5 15 13 5 15 13 5 9 8 4 7 6 2 5 3 1
-2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 66 66 65
-110 108 101 113 113 113 113 113 113 113 113 113 113 113 113 145 122 90 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 161 154 100 130 128 124 145 122 90 202 194 153 228 223 180
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190
-227 220 173 113 113 113 145 122 90 113 113 113 110 107 92 130 128 124 110 107 92 110 107 92
-110 107 92 110 107 92 145 122 90 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92
-110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 109 103 77
-109 103 77 161 154 100 202 194 153 228 223 180 226 218 164 227 219 152 226 218 150 226 218 150
-227 218 146 227 217 143 161 154 100 108 92 44 57 50 17 57 50 17 57 50 17 57 50 16
-54 47 16 53 46 15 51 43 14 51 43 14 44 38 13 44 38 13 39 33 11 37 32 10
-30 25 8 30 25 8 24 19 6 22 19 6 19 15 5 15 13 5 14 10 4 9 8 4
-5 4 2 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 24 24 23 72 72 72 113 113 113 113 113 113
-113 113 113 113 113 113 113 113 113 113 113 113 130 128 124 113 113 113 130 128 124 113 113 113
-145 122 90 130 128 124 145 122 90 130 128 124 145 122 90 157 154 144 230 225 190 230 225 190
-230 225 190 230 227 197 230 225 190 230 225 190 230 225 190 230 225 190 230 227 197 228 223 180
-202 194 153 110 107 92 130 128 124 110 107 92 145 122 90 110 107 92 110 107 92 145 122 90
-110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92
-109 103 77 110 107 92 145 122 90 109 103 77 110 107 92 109 103 77 109 103 77 110 107 92
-109 103 77 93 93 92 109 103 77 145 122 90 157 154 144 226 218 164 227 220 173 227 219 152
-226 218 150 227 218 146 227 219 152 227 219 152 204 179 101 109 103 77 57 50 17 57 50 17
-57 50 17 57 50 16 54 47 16 53 46 15 51 43 14 44 38 13 44 38 13 41 34 11
-39 33 11 37 32 10 30 25 8 30 25 8 24 19 6 19 15 5 15 13 5 14 10 4
-9 8 4 7 6 2 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 25 25 25 89 88 84 113 113 113 113 113 113 113 113 113 113 113 113
-113 113 113 113 113 113 113 113 113 145 122 90 113 113 113 113 113 113 145 122 90 130 128 124
-130 128 124 145 122 90 130 128 124 130 128 124 130 128 124 228 223 180 230 225 190 230 225 190
-230 225 190 230 225 190 230 227 197 230 225 190 230 227 197 230 225 190 230 225 190 230 227 197
-157 154 144 110 107 92 145 122 90 110 107 92 113 113 113 110 107 92 110 107 92 110 107 92
-110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 109 103 77 110 107 92
-110 107 92 109 103 77 109 103 77 110 107 92 109 103 77 109 103 77 110 107 92 109 103 77
-109 103 77 109 103 77 109 103 77 109 103 77 109 103 77 109 103 77 161 154 100 227 220 173
-227 220 173 227 219 152 227 219 152 226 218 150 227 219 152 227 218 146 226 214 125 109 103 77
-62 54 22 57 50 16 57 50 17 56 49 15 54 47 16 54 47 16 51 43 14 44 38 13
-44 38 13 39 33 11 37 32 10 30 25 8 30 25 8 24 19 6 22 19 6 19 15 5
-14 10 4 9 8 4 7 6 2 5 3 1 2 2 2 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-17 17 17 72 72 72 113 113 113 113 113 113 113 113 113 113 113 113 110 108 101 113 113 113
-110 108 101 113 113 113 113 113 113 113 113 113 145 122 90 113 113 113 130 128 124 113 113 113
-145 122 90 113 113 113 130 128 124 110 107 92 202 194 153 230 225 190 230 225 190 230 227 197
-230 227 197 230 225 190 230 227 197 230 225 190 230 227 197 230 225 190 230 227 197 228 223 180
-130 128 124 145 122 90 110 107 92 110 107 92 145 122 90 110 107 92 110 107 92 110 107 92
-110 107 92 110 107 92 109 103 77 110 107 92 109 103 77 109 103 77 109 103 77 109 103 77
-109 103 77 109 103 77 109 103 77 109 103 77 109 103 77 109 103 77 109 103 77 109 103 77
-109 103 77 109 103 77 109 103 77 87 85 74 109 103 77 109 103 77 109 103 77 93 93 92
-161 154 100 226 218 164 226 218 164 227 219 152 227 219 152 226 218 150 227 218 147 227 217 143
-226 214 125 109 103 77 57 50 17 57 50 17 57 50 16 56 49 15 53 46 15 51 43 14
-51 43 14 44 38 13 44 38 13 39 33 11 37 32 10 30 25 8 28 21 6 24 19 6
-19 15 5 15 13 5 9 8 4 9 8 4 5 3 1 2 2 2 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 62 62 62
-113 113 113 113 113 113 113 113 113 110 108 101 113 113 113 110 108 101 113 113 113 110 108 101
-113 113 113 113 113 113 110 108 101 113 113 113 113 113 113 130 128 124 145 122 90 113 113 113
-130 128 124 145 122 90 130 128 124 161 154 100 227 221 188 227 221 188 230 227 197 230 225 190
-230 227 197 230 227 197 230 225 190 230 227 197 230 225 190 230 227 197 230 225 190 230 225 190
-110 107 92 110 107 92 110 107 92 145 122 90 110 107 92 110 107 92 110 107 92 109 103 77
-109 103 77 109 103 77 93 93 92 109 103 77 89 88 84 93 93 92 89 88 84 109 103 77
-89 88 84 89 88 84 109 103 77 89 88 84 109 103 77 89 88 84 109 103 77 89 88 84
-109 103 77 87 85 74 109 103 77 109 103 77 87 85 74 109 103 77 87 85 74 109 103 77
-87 85 74 109 103 77 157 154 144 226 217 157 226 218 164 227 219 152 226 218 150 226 218 150
-226 215 145 227 217 143 204 179 101 108 92 44 51 48 25 57 50 16 57 50 16 54 47 16
-53 46 15 51 43 14 44 38 13 44 38 13 39 33 11 37 32 10 30 25 8 30 25 8
-24 19 6 22 19 6 15 13 5 14 10 4 7 6 2 5 4 2 3 3 2 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 37 37 93 93 92 113 113 113
-110 108 101 113 113 113 110 108 101 113 113 113 110 108 101 110 108 101 110 108 101 110 108 101
-110 108 101 110 107 92 130 128 124 110 107 92 130 128 124 110 107 92 113 113 113 145 122 90
-130 128 124 145 122 90 130 128 124 157 154 144 230 227 197 230 227 197 230 227 197 230 227 197
-230 225 190 230 226 196 230 227 197 230 225 190 230 227 197 230 225 190 230 227 197 227 220 173
-110 107 92 145 122 90 110 107 92 110 107 92 110 107 92 109 103 77 110 107 92 109 103 77
-93 93 92 93 93 92 89 88 84 87 85 74 89 88 84 87 85 74 87 85 74 87 85 74
-109 103 77 87 85 74 87 85 74 87 85 74 87 85 74 87 85 74 87 85 74 87 85 74
-109 103 77 87 85 74 109 103 77 87 85 74 109 103 77 87 85 74 109 103 77 108 92 44
-109 103 77 87 85 74 108 92 44 109 103 77 202 194 153 227 220 173 226 217 157 226 218 150
-226 218 150 227 219 152 227 219 152 227 219 152 161 154 100 73 60 27 57 50 17 57 50 17
-54 47 16 53 46 15 51 43 14 51 43 14 44 38 13 41 34 11 37 32 10 37 32 10
-30 25 8 24 19 6 22 19 6 15 13 5 14 10 4 9 8 4 5 4 2 3 3 2
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 9 9 9 72 72 72 113 113 113 113 113 113 113 113 113
-110 108 101 113 113 113 110 108 101 110 108 101 110 108 101 110 108 101 110 108 101 110 108 101
-113 113 113 110 108 101 110 108 101 113 113 113 145 122 90 113 113 113 130 128 124 110 107 92
-130 128 124 110 107 92 145 122 90 228 223 180 230 227 197 230 227 197 230 225 190 230 227 197
-230 226 196 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 202 194 153
-110 108 101 110 107 92 110 107 92 110 107 92 110 107 92 109 103 77 109 103 77 89 88 84
-87 85 74 87 85 74 87 85 74 87 85 74 87 85 74 87 85 74 87 85 74 87 85 74
-87 85 74 87 85 74 87 85 74 87 85 74 87 85 74 109 103 77 87 85 74 87 85 74
-83 78 45 83 78 45 83 78 45 83 78 45 83 78 45 83 78 45 87 85 74 83 78 45
-87 85 74 83 78 45 109 103 77 87 85 74 83 78 45 145 122 90 226 217 157 226 218 164
-227 219 152 227 219 152 227 218 147 227 218 146 227 218 147 227 217 143 145 122 90 53 46 15
-57 50 16 57 50 16 54 47 16 53 46 15 51 43 14 44 38 13 41 34 11 37 32 10
-37 32 10 30 25 8 28 21 6 22 19 6 19 15 5 14 10 4 9 8 4 7 6 2
-5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 33 33 33 110 108 101 113 113 113 113 113 113 110 108 101 110 108 101
-110 108 101 113 113 113 93 93 92 113 113 113 93 93 92 113 113 113 93 93 92 110 108 101
-110 108 101 110 108 101 113 113 113 110 107 92 113 113 113 113 113 113 145 122 90 110 108 101
-161 154 100 110 107 92 157 154 144 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 226 196 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 202 194 153
-110 107 92 110 107 92 110 107 92 110 107 92 109 103 77 109 103 77 89 88 84 89 88 84
-89 88 84 87 85 74 87 85 74 87 85 74 87 85 74 72 72 72 87 85 74 72 72 72
-72 72 72 65 65 61 58 56 49 51 48 25 51 48 25 39 33 11 39 33 11 37 32 10
-41 34 11 37 34 22 44 40 24 44 38 13 51 48 25 53 46 15 53 46 15 56 49 15
-57 50 16 57 50 16 56 49 15 57 50 16 73 60 27 56 54 38 83 78 45 161 154 100
-226 218 164 227 219 152 227 219 152 227 219 152 227 218 146 227 217 143 226 213 140 204 179 101
-83 78 45 57 50 17 57 50 17 54 47 16 53 46 15 51 43 14 44 38 13 44 38 13
-37 32 10 37 32 10 30 25 8 28 21 6 22 19 6 19 15 5 15 13 5 9 8 4
-7 6 2 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-3 3 3 62 62 62 113 113 113 110 108 101 110 108 101 110 108 101 110 108 101 113 113 113
-93 93 92 113 113 113 110 108 101 93 93 92 113 113 113 93 93 92 113 113 113 110 108 101
-110 108 101 110 108 101 110 108 101 145 122 90 113 113 113 145 122 90 113 113 113 145 122 90
-113 113 113 113 113 113 202 194 153 227 221 188 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 197 230 227 197 230 227 197 230 226 196 230 227 197 230 227 197 157 154 144
-110 107 92 145 122 90 109 103 77 109 103 77 110 107 92 89 88 84 109 103 77 87 85 74
-87 85 74 87 85 74 72 72 72 72 72 72 65 65 61 46 45 43 37 34 22 20 19 13
-15 13 5 15 13 5 19 15 5 19 15 5 22 19 6 22 19 6 22 19 6 30 25 8
-30 25 8 37 32 10 37 32 10 37 32 10 41 34 11 44 38 13 44 38 13 51 43 14
-53 46 15 56 49 15 56 49 15 57 50 16 57 50 16 57 50 16 57 50 17 62 54 22
-109 103 77 226 213 140 227 219 152 227 219 152 226 218 150 226 218 150 226 218 150 225 216 150
-226 216 132 109 103 77 56 49 15 57 50 16 56 49 15 54 47 16 53 46 15 44 38 13
-44 38 13 39 33 11 37 32 10 30 25 8 30 25 8 22 19 6 19 15 5 15 13 5
-9 8 4 7 6 2 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 11 11
-89 88 84 113 113 113 110 108 101 113 113 113 113 113 113 93 93 92 113 113 113 93 93 92
-113 113 113 93 93 92 113 113 113 93 93 92 110 108 101 93 93 92 110 108 101 93 93 92
-110 108 101 110 108 101 110 108 101 113 113 113 110 107 92 113 113 113 145 122 90 113 113 113
-145 122 90 110 107 92 228 223 180 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 225 190 157 154 144
-110 107 92 109 103 77 110 107 92 109 103 77 109 103 77 89 88 84 87 85 74 87 85 74
-72 72 72 58 56 49 29 28 26 10 10 9 4 4 2 4 4 2 4 4 2 7 6 2
-9 8 4 9 8 4 9 8 4 15 13 5 15 13 5 17 15 7 22 19 6 22 19 6
-22 19 6 30 25 8 28 25 13 37 32 10 37 32 10 37 32 10 44 38 13 44 38 13
-44 38 13 51 43 14 53 46 15 56 49 15 57 50 16 57 50 17 57 50 17 57 50 16
-57 50 16 56 54 38 204 179 101 227 219 152 227 219 152 226 218 150 227 218 146 226 215 145
-227 218 146 227 217 136 161 154 100 62 54 22 57 50 17 57 50 16 54 47 16 53 46 15
-51 43 14 44 38 13 41 34 11 37 32 10 30 25 8 30 25 8 24 19 6 19 15 5
-15 13 5 9 8 4 7 6 2 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 27 27 110 108 101
-110 108 101 110 108 101 110 108 101 93 93 92 113 113 113 110 108 101 113 113 113 93 93 92
-113 113 113 93 93 92 93 93 92 113 113 113 93 93 92 93 93 92 110 108 101 110 108 101
-110 108 101 110 108 101 110 107 92 110 108 101 110 107 92 130 128 124 110 107 92 130 128 124
-110 107 92 161 154 100 230 227 201 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 161 154 100
-110 107 92 110 107 92 109 103 77 109 103 77 89 88 84 87 85 74 83 78 45 35 35 35
-22 19 6 9 8 4 6 6 4 4 4 2 3 3 2 3 3 2 3 3 2 3 3 2
-4 4 2 4 4 2 7 6 2 7 6 2 9 8 4 9 8 4 15 13 5 15 13 5
-19 15 5 22 19 6 22 19 6 28 21 6 30 25 8 37 32 10 37 32 10 39 33 11
-44 38 13 44 38 13 44 38 13 53 46 15 54 47 16 57 50 16 57 50 17 57 50 17
-57 50 17 62 54 22 62 54 22 161 154 100 226 217 157 227 219 152 226 218 150 226 218 150
-227 218 147 227 218 146 227 218 146 204 179 101 83 78 45 57 50 17 57 50 16 54 47 16
-53 46 15 51 43 14 44 38 13 41 34 11 37 32 10 37 28 9 30 25 8 24 19 6
-19 15 5 15 13 5 9 8 4 7 6 2 5 3 1 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 40 40 40 110 108 101 110 108 101
-110 108 101 110 108 101 113 113 113 93 93 92 113 113 113 93 93 92 93 93 92 110 108 101
-93 93 92 113 113 113 93 93 92 93 93 92 93 93 92 110 108 101 93 93 92 93 93 92
-110 108 101 110 107 92 110 107 92 113 113 113 110 107 92 145 122 90 110 107 92 145 122 90
-110 108 101 157 154 144 230 227 198 230 227 197 230 227 198 230 227 197 230 227 198 230 227 198
-230 227 197 230 227 198 230 227 198 230 227 198 230 227 198 230 227 198 231 228 208 161 154 100
-110 107 92 109 103 77 109 103 77 87 85 74 56 54 38 37 32 10 22 19 6 22 19 6
-15 13 5 9 8 4 4 4 2 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 0 3 3 2 3 2 0 7 6 2 7 6 2 9 8 4 9 8 4
-14 10 4 15 13 5 17 15 7 22 19 6 24 19 6 22 19 6 28 25 13 37 32 10
-37 32 10 44 38 13 44 38 13 44 38 13 51 43 14 53 46 15 56 49 15 57 50 16
-57 50 17 57 50 17 56 49 15 57 50 16 109 103 77 225 216 150 227 219 152 227 219 152
-226 218 150 227 218 147 227 218 147 227 219 152 226 213 140 108 92 44 57 50 17 57 50 17
-54 47 16 53 46 15 51 43 14 44 38 13 44 38 13 37 32 10 30 25 8 30 25 8
-24 19 6 19 15 5 15 13 5 9 8 4 7 6 2 3 3 2 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 51 51 50 110 108 101 113 113 113 93 93 92
-113 113 113 93 93 92 113 113 113 93 93 92 113 113 113 93 93 92 113 113 113 93 93 92
-93 93 92 93 93 92 93 93 92 113 113 113 93 93 92 93 93 92 93 93 92 110 108 101
-110 108 101 110 107 92 110 108 101 110 107 92 110 107 92 113 113 113 110 107 92 145 122 90
-110 107 92 202 194 153 230 227 199 230 227 198 230 227 198 230 227 198 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 130 128 124
-109 103 77 87 85 74 62 54 22 56 49 15 44 38 13 37 32 10 28 25 13 22 19 6
-15 13 5 9 8 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 5 3 1 7 6 2
-7 6 2 9 8 4 15 13 5 15 13 5 19 15 5 22 19 6 24 19 6 30 25 8
-28 25 13 37 32 10 37 32 10 44 38 13 44 38 13 44 38 13 53 46 15 54 47 16
-57 50 16 57 50 17 57 50 17 57 50 17 57 50 16 108 92 44 225 216 150 226 218 150
-227 219 152 226 218 150 227 218 147 227 218 146 227 218 146 227 217 143 145 122 90 53 46 15
-57 50 16 54 47 16 54 47 16 51 43 14 44 38 13 44 38 13 37 32 10 37 28 9
-30 25 8 24 19 6 19 15 5 15 13 5 9 8 4 5 4 2 3 3 2 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 62 62 62 113 113 113 110 108 101 110 108 101 113 113 113
-93 93 92 113 113 113 93 93 92 113 113 113 93 93 92 93 93 92 93 93 92 93 93 92
-113 113 113 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-110 107 92 110 107 92 110 107 92 110 107 92 145 122 90 110 107 92 145 122 90 110 108 101
-110 107 92 227 221 188 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 197 110 107 92
-62 54 22 57 50 16 56 49 15 44 38 13 37 32 10 37 32 10 30 25 8 22 19 6
-15 13 5 9 8 4 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 2 2
-4 4 2 5 4 2 7 6 2 9 8 4 15 13 5 15 13 5 22 19 6 22 19 6
-22 19 6 30 25 8 30 25 8 37 32 10 39 33 11 44 38 13 44 38 13 53 46 15
-53 46 15 56 49 15 57 50 17 57 50 17 57 50 17 56 49 15 83 78 45 202 194 153
-227 219 152 227 219 152 227 219 152 227 218 147 227 218 146 227 217 143 226 214 125 161 154 100
-57 50 17 57 50 17 54 47 16 53 46 15 53 46 15 44 38 13 41 34 11 37 32 10
-30 25 8 30 25 8 24 19 6 19 15 5 15 13 5 9 8 4 5 4 2 2 2 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 65 65 65 110 108 101 110 108 101 93 93 92 113 113 113 93 93 92
-113 113 113 93 93 92 93 93 92 93 93 92 110 108 101 93 93 92 113 113 113 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 110 108 101 93 93 92
-110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92
-130 128 124 230 227 197 230 227 197 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 197 230 225 190 83 78 45
-62 54 22 57 50 16 53 46 15 44 38 13 44 38 13 37 32 10 22 19 6 22 19 6
-15 13 5 6 6 4 4 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 2 2 2 5 3 1 5 4 2 9 8 4 9 8 4 15 13 5 17 15 7
-22 19 6 22 19 6 28 25 13 30 25 8 37 32 10 37 32 10 44 38 13 44 38 13
-51 43 14 53 46 15 54 47 16 57 50 16 57 50 17 57 50 17 56 49 15 86 69 23
-202 194 153 227 218 146 227 219 152 227 219 152 227 218 147 227 218 146 226 215 145 227 217 136
-161 154 100 62 54 22 57 50 16 56 49 15 53 46 15 51 43 14 44 38 13 44 38 13
-37 32 10 30 25 8 30 25 8 22 19 6 19 15 5 14 10 4 9 8 4 5 3 1
-2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 65 65 65 113 113 113 93 93 92 113 113 113 93 93 92 113 113 113 93 93 92
-93 93 92 93 93 92 113 113 113 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 110 107 92 110 107 92 110 107 92 110 107 92 145 122 90 110 107 92 110 107 92
-161 154 100 230 227 197 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 203
-230 227 199 230 227 201 230 227 201 230 227 197 230 225 190 230 225 190 230 225 190 83 78 45
-57 50 16 56 49 15 53 46 15 44 38 13 37 32 10 37 32 10 30 25 8 17 15 7
-15 13 5 9 8 4 4 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 2 2 2 3 2 0 7 6 2 10 7 2 9 8 4
-15 13 5 19 15 5 22 19 6 22 19 6 28 25 13 37 32 10 37 32 10 44 38 13
-44 38 13 51 43 14 53 46 15 54 47 16 57 50 16 57 50 17 57 50 17 56 49 15
-81 65 20 202 194 153 227 219 152 227 219 152 226 218 150 227 218 147 227 218 146 227 218 146
-227 217 136 161 154 100 62 54 22 57 50 17 54 47 16 54 47 16 51 43 14 44 38 13
-39 33 11 37 32 10 30 25 8 28 21 6 22 19 6 15 13 5 14 10 4 7 6 2
-5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-62 62 62 110 108 101 93 93 92 110 108 101 93 93 92 110 108 101 93 93 92 93 93 92
-113 113 113 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 89 88 84 93 93 92 93 93 92 93 93 92
-110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92
-157 154 144 230 227 198 230 227 201 230 227 199 230 227 203 230 227 201 230 227 201 230 227 201
-230 227 201 230 227 199 230 226 196 230 225 190 230 225 190 230 225 190 230 225 190 83 78 45
-62 54 22 56 49 15 53 46 15 44 38 13 44 38 13 28 25 13 28 25 13 22 19 6
-15 13 5 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 2 2 2
-2 2 2 3 3 2 3 3 2 3 3 2 3 3 2 5 3 1 5 4 2 7 6 2
-9 8 4 15 13 5 19 15 5 22 19 6 24 19 6 30 25 8 30 25 8 37 32 10
-37 32 10 44 38 13 44 38 13 53 46 15 54 47 16 57 50 16 57 50 17 57 50 17
-57 50 16 73 60 27 202 194 153 227 218 146 227 219 152 226 218 150 227 218 147 227 218 146
-227 218 146 227 217 143 204 179 101 51 48 25 57 50 16 57 50 16 53 46 15 51 43 14
-44 38 13 39 33 11 37 32 10 30 25 8 24 19 6 22 19 6 15 13 5 9 8 4
-7 6 2 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 52 52
-110 108 101 93 93 92 113 113 113 93 93 92 113 113 113 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 89 88 84 89 88 84 89 88 84 89 88 84 93 93 92 93 93 92
-109 103 77 93 93 92 109 103 77 110 107 92 110 107 92 110 107 92 110 107 92 110 107 92
-202 194 153 230 227 201 230 227 201 230 227 201 230 227 203 230 227 203 230 227 203 230 227 203
-230 227 197 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 227 197 83 78 45
-57 50 16 56 49 15 51 48 25 44 38 13 37 32 10 37 32 10 30 25 8 15 13 5
-15 13 5 7 6 2 4 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 0 1 1 0 2 2 2 3 3 2 5 3 1 5 3 1 5 4 2
-5 4 2 5 4 2 5 4 2 5 4 2 5 4 2 7 6 2 7 6 2 9 8 4
-10 7 2 14 10 4 15 13 5 19 15 5 22 19 6 24 19 6 30 25 8 30 25 8
-37 32 10 44 38 13 44 38 13 51 43 14 53 46 15 56 49 15 57 50 16 57 50 17
-57 50 16 57 50 16 73 60 27 226 213 140 227 219 152 227 219 152 226 218 150 227 218 147
-227 218 146 227 217 143 227 217 143 161 154 100 57 50 17 57 50 17 56 49 15 53 46 15
-51 43 14 44 38 13 39 33 11 37 32 10 30 25 8 24 19 6 19 15 5 15 13 5
-9 8 4 5 4 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43 43 43 110 108 101
-93 93 92 110 108 101 93 93 92 93 93 92 93 93 92 93 93 92 113 113 113 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 89 88 84
-89 88 84 89 88 84 89 88 84 89 88 84 89 88 84 89 88 84 89 88 84 93 93 92
-109 103 77 93 93 92 110 107 92 110 107 92 109 103 77 145 122 90 110 107 92 110 107 92
-202 194 153 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 199 230 226 196
-230 225 190 230 225 190 230 225 190 230 225 190 230 227 197 230 225 190 230 227 197 83 78 45
-62 54 22 56 49 15 53 46 15 44 38 13 37 32 10 37 32 10 22 19 6 22 19 6
-15 13 5 7 6 2 4 4 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-2 2 2 3 3 2 5 3 1 5 4 2 7 6 2 9 8 4 9 8 4 12 7 2
-14 10 4 14 10 4 14 10 4 14 10 4 14 10 4 14 10 4 14 10 4 14 10 4
-9 8 4 14 10 4 15 13 5 15 13 5 19 15 5 22 19 6 30 25 8 30 25 8
-37 32 10 37 32 10 44 38 13 44 38 13 51 43 14 53 46 15 57 50 16 57 50 17
-62 54 22 57 50 16 57 50 16 83 78 45 226 215 145 227 219 152 227 219 152 226 218 150
-227 218 147 227 218 146 227 218 146 227 217 143 161 154 100 57 50 16 57 50 17 54 47 16
-53 46 15 51 43 14 44 38 13 37 32 10 37 32 10 30 25 8 24 19 6 19 15 5
-15 13 5 9 8 4 5 3 1 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 29 29 110 108 101 93 93 92
-110 108 101 93 93 92 93 93 92 113 113 113 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 89 88 84 89 88 84
-89 88 84 89 88 84 72 72 72 89 88 84 89 88 84 89 88 84 89 88 84 89 88 84
-93 93 92 110 107 92 109 103 77 109 103 77 110 107 92 110 107 92 109 103 77 110 107 92
-227 221 188 230 227 203 230 227 203 230 227 203 230 227 203 230 227 198 230 225 190 230 225 190
-230 226 196 230 225 190 230 227 197 230 227 197 230 225 190 230 227 197 230 227 197 83 78 45
-57 50 16 53 46 15 53 46 15 44 38 13 37 32 10 37 32 10 30 25 8 19 15 5
-14 10 4 9 8 4 5 3 1 0 0 0 0 0 0 0 0 0 2 2 2 3 3 2
-5 3 1 7 6 2 9 8 4 14 10 4 14 10 4 15 13 5 19 15 5 19 15 5
-19 15 5 19 15 5 19 15 5 22 19 6 19 15 5 19 15 5 19 15 5 19 15 5
-19 15 5 18 12 3 19 15 5 19 15 5 19 15 5 24 19 6 22 19 6 28 21 6
-30 25 8 37 28 9 39 33 11 44 38 13 51 43 14 51 43 14 56 49 15 57 50 16
-62 49 15 62 54 22 62 54 22 62 54 22 108 92 44 225 216 150 227 219 152 227 219 152
-226 218 150 227 218 146 227 218 146 227 217 143 227 217 136 145 122 90 57 50 17 57 50 17
-54 47 16 53 46 15 44 38 13 44 38 13 39 33 11 30 25 8 30 25 8 22 19 6
-19 15 5 14 10 4 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 93 93 92 93 93 92 110 108 101
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 93 93 92 89 88 84 89 88 84 89 88 84 89 88 84 72 72 72
-93 93 92 72 72 72 93 93 92 72 72 72 89 88 84 89 88 84 89 88 84 109 103 77
-89 88 84 109 103 77 109 103 77 110 107 92 109 103 77 110 107 92 109 103 77 110 107 92
-230 227 197 230 227 201 230 227 203 230 227 203 230 227 197 230 227 197 230 225 190 230 227 197
-230 226 196 230 226 196 230 226 196 230 226 196 230 227 197 230 227 197 230 227 197 83 78 45
-62 54 22 56 49 15 53 46 15 44 38 13 44 38 13 28 25 13 30 25 8 17 15 7
-15 13 5 7 6 2 3 3 2 1 1 0 1 1 0 5 3 1 7 4 1 10 7 2
-14 10 4 14 10 4 15 13 5 19 15 5 22 19 6 24 19 6 24 19 6 28 21 6
-28 21 6 30 25 8 30 25 8 28 21 6 30 25 8 28 21 6 28 21 6 24 19 6
-24 19 6 24 19 6 22 19 6 24 16 6 24 19 6 24 16 6 24 19 6 28 21 6
-30 25 8 30 25 8 37 32 10 41 34 11 44 38 13 51 43 14 51 43 14 57 50 16
-57 50 16 69 51 16 62 49 15 62 54 22 62 54 22 109 103 77 227 219 152 227 219 152
-227 219 152 227 218 147 227 218 146 227 218 146 227 217 143 227 217 136 109 103 77 62 49 15
-57 50 16 54 47 16 51 43 14 44 38 13 44 38 13 37 32 10 30 25 8 28 21 6
-22 19 6 15 13 5 9 8 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 2 2 2 89 88 84 110 108 101 93 93 92 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 89 88 84 89 88 84 89 88 84 93 93 92 72 72 72 89 88 84 93 93 92
-72 72 72 89 88 84 72 72 72 89 88 84 87 85 74 89 88 84 87 85 74 89 88 84
-89 88 84 93 93 92 109 103 77 109 103 77 109 103 77 109 103 77 110 107 92 110 107 92
-230 227 203 230 227 203 230 227 201 230 227 197 230 227 197 230 225 190 230 226 196 230 226 196
-230 226 196 230 226 196 230 227 197 230 227 197 230 227 197 230 227 197 230 225 190 109 103 77
-57 50 17 54 47 16 53 46 15 44 38 13 37 32 10 37 32 10 22 19 6 22 19 6
-15 13 5 9 8 4 5 3 1 5 3 1 5 3 1 10 7 2 14 10 4 15 13 5
-19 15 5 22 19 6 24 19 6 28 21 6 30 25 8 30 25 8 37 28 9 37 28 9
-37 28 9 37 28 9 37 28 9 37 28 9 37 28 9 37 28 9 30 25 8 37 28 9
-30 25 8 30 25 8 28 21 6 24 19 6 24 19 6 24 19 6 24 19 6 28 21 6
-28 21 6 30 25 8 37 28 9 38 30 10 41 34 11 44 38 13 51 43 14 56 49 15
-57 50 16 62 49 15 62 54 22 62 49 15 69 51 16 75 57 18 161 154 100 227 219 152
-227 219 152 227 219 152 227 218 147 227 218 146 227 218 146 227 217 136 226 216 132 108 92 44
-57 50 17 57 50 16 54 47 16 51 43 14 44 38 13 39 33 11 37 32 10 30 25 8
-24 19 6 19 15 5 15 13 5 9 8 4 5 4 2 2 2 2 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 61 61 59 93 93 92 93 93 92 93 93 92 110 108 101
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 89 88 84 89 88 84
-89 88 84 89 88 84 89 88 84 72 72 72 93 93 92 89 88 84 72 72 72 89 88 84
-72 72 72 89 88 84 72 72 72 89 88 84 72 72 72 89 88 84 87 85 74 89 88 84
-109 103 77 89 88 84 109 103 77 109 103 77 109 103 77 110 107 92 109 103 77 145 122 90
-231 228 208 230 227 199 230 227 197 230 227 197 230 225 190 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 108 92 44
-51 48 25 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 28 25 13 22 19 6
-15 13 5 10 7 2 10 7 2 10 7 2 12 7 2 15 13 5 19 15 5 24 19 6
-24 19 6 30 25 8 30 25 8 37 28 9 38 30 10 39 33 11 41 34 11 41 34 11
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 41 34 11 41 34 11
-38 30 10 38 30 10 37 28 9 30 25 8 37 22 6 28 21 6 28 21 6 28 21 6
-30 25 8 30 25 8 30 25 8 37 28 9 41 34 11 44 38 13 50 39 13 51 43 14
-56 47 15 62 54 22 69 51 16 62 54 22 69 51 16 62 54 22 75 57 18 202 194 153
-226 215 145 227 219 152 227 219 152 227 218 146 227 218 146 227 218 146 227 217 143 226 214 125
-73 60 27 62 54 22 57 50 16 56 49 15 51 43 14 44 38 13 39 33 11 37 32 10
-30 25 8 22 19 6 19 15 5 14 10 4 9 8 4 5 3 1 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 38 38 38 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 89 88 84 89 88 84 89 88 84
-93 93 92 72 72 72 89 88 84 93 93 92 72 72 72 89 88 84 72 72 72 89 88 84
-72 72 72 89 88 84 72 72 72 72 72 72 72 72 72 87 85 74 87 85 74 87 85 74
-87 85 74 109 103 77 89 88 84 109 103 77 109 103 77 109 103 77 109 103 77 130 128 124
-230 227 198 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 197 230 227 197 230 227 198 230 227 199 230 227 199 230 227 199 109 103 77
-57 50 16 54 47 16 53 46 15 44 38 13 37 32 10 37 32 10 30 25 8 22 19 6
-19 15 5 15 13 5 14 10 4 15 13 5 19 15 5 22 19 6 24 19 6 30 25 8
-30 25 8 37 28 9 39 33 11 41 34 11 44 38 13 44 38 13 50 39 13 51 43 14
-51 43 14 51 43 14 51 43 14 51 43 14 50 39 13 51 43 14 51 43 14 50 39 13
-50 39 13 44 38 13 41 34 11 44 30 9 38 30 10 37 22 6 30 25 8 37 22 6
-30 25 8 37 22 6 30 25 8 37 28 9 38 30 10 44 30 9 44 38 13 51 43 14
-53 46 15 62 49 15 57 50 16 75 57 18 62 54 22 69 51 16 62 54 22 86 69 23
-226 213 140 227 219 152 227 219 152 227 219 152 227 218 146 227 218 146 227 217 143 226 215 145
-204 179 101 62 54 22 62 54 22 57 50 16 54 47 16 51 43 14 44 38 13 37 32 10
-37 28 9 28 21 6 22 19 6 15 13 5 9 8 4 7 6 2 3 3 2 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 11 11 11 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 93 93 92 89 88 84 89 88 84 89 88 84 89 88 84 72 72 72 93 93 92
-72 72 72 93 93 92 72 72 72 89 88 84 72 72 72 89 88 84 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 89 88 84 72 72 72 89 88 84 87 85 74 87 85 74
-89 88 84 109 103 77 89 88 84 109 103 77 109 103 77 109 103 77 109 103 77 145 122 90
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 198 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 109 103 77
-57 50 17 57 50 16 53 46 15 51 43 14 44 38 13 37 32 10 28 25 13 24 19 6
-22 19 6 19 15 5 19 15 5 19 15 5 24 19 6 28 21 6 30 25 8 37 28 9
-41 34 11 44 38 13 44 38 13 50 39 13 51 43 14 56 47 15 56 47 15 56 47 15
-62 49 15 62 49 15 62 49 15 62 49 15 62 49 15 62 49 15 56 47 15 56 47 15
-51 43 14 50 39 13 50 39 13 50 39 13 41 34 11 44 30 9 37 28 9 37 28 9
-37 22 6 30 25 8 37 22 6 37 28 9 37 28 9 38 30 10 44 30 9 50 39 13
-50 39 13 56 47 15 62 49 15 62 54 22 75 57 18 75 57 18 62 54 22 62 54 22
-109 103 77 227 219 152 227 219 152 227 219 152 227 218 147 227 218 146 227 218 146 227 217 143
-227 217 136 161 154 100 62 49 15 62 49 15 57 50 17 54 47 16 51 43 14 44 38 13
-37 32 10 30 25 8 24 19 6 19 15 5 15 13 5 9 8 4 5 3 1 2 2 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 72 72 72 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92
-93 93 92 89 88 84 89 88 84 93 93 92 72 72 72 93 93 92 72 72 72 93 93 92
-72 72 72 93 93 92 72 72 72 89 88 84 72 72 72 72 72 72 89 88 84 72 72 72
-89 88 84 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 87 85 74 87 85 74
-87 85 74 109 103 77 87 85 74 109 103 77 89 88 84 109 103 77 83 78 45 145 122 90
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 198 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 201 230 227 201 230 227 201 230 227 203 230 227 199 110 107 92
-57 50 17 57 50 16 53 46 15 51 43 14 44 38 13 37 32 10 37 28 9 30 25 8
-28 21 6 24 19 6 24 19 6 24 19 6 30 25 8 37 28 9 44 30 9 41 34 11
-50 39 13 50 39 13 53 46 15 56 47 15 62 49 15 62 49 15 62 49 15 69 51 16
-62 54 22 69 51 16 69 51 16 69 51 16 69 51 16 69 51 16 62 49 15 69 51 16
-62 49 15 62 49 15 56 47 15 60 41 12 50 39 13 50 39 13 41 34 11 44 30 9
-37 28 9 37 28 9 37 22 6 37 22 6 37 28 9 44 30 9 44 30 9 50 39 13
-50 39 13 56 47 15 62 49 15 62 49 15 69 51 16 62 54 22 75 57 18 75 57 18
-81 65 20 161 154 100 227 219 152 227 219 152 227 219 152 227 218 147 227 218 146 227 218 146
-227 217 136 226 216 132 108 92 44 62 54 22 69 51 16 57 50 17 53 46 15 51 43 14
-44 38 13 37 32 10 30 25 8 24 19 6 15 13 5 14 10 4 7 6 2 5 3 1
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-40 40 40 93 93 92 93 93 92 93 93 92 93 93 92 93 93 92 89 88 84 89 88 84
-89 88 84 72 72 72 93 93 92 72 72 72 93 93 92 72 72 72 93 93 92 72 72 72
-89 88 84 72 72 72 72 72 72 89 88 84 72 72 72 72 72 72 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 72 72 72 87 85 74 72 72 72 87 85 74 87 85 74
-87 85 74 87 85 74 109 103 77 109 103 77 109 103 77 73 60 27 51 48 25 130 128 124
-230 227 197 230 227 197 230 227 197 230 227 198 230 227 199 230 227 199 230 227 199 230 227 201
-230 227 201 230 227 201 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 145 122 90
-62 54 22 57 50 16 56 49 15 51 43 14 44 38 13 44 38 13 37 28 9 30 25 8
-30 25 8 30 25 8 30 25 8 37 22 6 37 28 9 41 34 11 44 38 13 50 39 13
-51 43 14 56 47 15 62 49 15 62 49 15 69 51 16 69 51 16 75 57 18 75 57 18
-75 57 18 75 57 18 75 57 18 73 60 27 75 57 18 75 57 18 75 57 18 69 51 16
-69 51 16 69 51 16 62 49 15 62 49 15 56 47 15 51 43 14 50 39 13 50 39 13
-44 30 9 44 30 9 37 28 9 37 28 9 37 28 9 44 30 9 38 30 10 44 30 9
-50 39 13 51 43 14 62 49 15 62 49 15 69 51 16 75 57 18 75 57 18 75 57 18
-75 57 18 86 69 23 225 216 150 227 219 152 227 219 152 226 218 150 227 218 146 227 218 146
-227 217 143 227 217 143 226 214 125 73 60 27 62 54 22 69 51 16 57 50 17 51 43 14
-50 39 13 44 38 13 37 28 9 24 19 6 22 19 6 15 13 5 9 8 4 5 4 2
-2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 10 10
-89 88 84 93 93 92 93 93 92 93 93 92 89 88 84 89 88 84 89 88 84 89 88 84
-89 88 84 93 93 92 72 72 72 93 93 92 72 72 72 89 88 84 72 72 72 89 88 84
-72 72 72 93 93 92 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 87 85 74 87 85 74
-87 85 74 87 85 74 87 85 74 87 85 74 56 54 38 57 50 16 56 49 15 161 154 100
-230 227 197 230 227 197 230 227 199 230 227 199 230 227 199 230 227 201 230 227 201 230 227 203
-230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 197 130 128 124
-62 54 22 57 50 17 56 49 15 53 46 15 51 43 14 41 34 11 39 33 11 38 30 10
-37 28 9 37 28 9 37 28 9 38 30 10 41 34 11 50 39 13 50 39 13 56 47 15
-62 49 15 62 49 15 69 51 16 75 57 18 73 60 27 75 57 18 75 57 18 62 54 22
-75 57 18 73 60 27 75 57 18 75 57 18 75 57 18 75 57 18 73 60 27 75 57 18
-75 57 18 75 57 18 75 57 18 69 51 16 62 49 15 62 49 15 60 41 12 50 39 13
-50 39 13 44 30 9 44 30 9 44 30 9 37 28 9 44 30 9 44 30 9 44 30 9
-50 39 13 50 39 13 56 47 15 62 49 15 57 50 16 75 57 18 62 54 22 75 57 18
-75 57 18 81 65 20 109 103 77 227 219 152 227 219 152 227 219 152 227 218 147 227 218 146
-227 217 143 227 217 143 226 216 132 161 154 100 69 51 16 62 54 22 62 49 15 57 50 16
-51 43 14 50 39 13 41 34 11 30 25 8 24 19 6 19 15 5 14 10 4 9 8 4
-5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 58 58
-93 93 92 89 88 84 89 88 84 89 88 84 89 88 84 89 88 84 72 72 72 93 93 92
-72 72 72 89 88 84 89 88 84 72 72 72 89 88 84 72 72 72 89 88 84 72 72 72
-72 72 72 72 72 72 72 72 72 89 88 84 72 72 72 72 72 72 72 72 72 72 72 72
-72 72 72 72 72 72 66 66 66 72 72 72 72 72 72 72 72 72 72 72 72 87 85 74
-87 85 74 108 92 44 109 103 77 73 60 27 57 50 16 57 50 16 57 50 16 157 154 144
-230 225 190 230 227 199 230 227 199 230 227 201 230 227 201 230 227 203 230 227 203 230 227 203
-230 227 203 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205 230 227 203 161 154 100
-62 54 22 57 50 16 57 50 16 56 49 15 51 43 14 44 38 13 44 38 13 41 34 11
-41 34 11 41 34 11 41 34 11 41 34 11 50 39 13 51 43 14 56 47 15 62 49 15
-69 51 16 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18 83 78 45 145 122 90
-157 154 144 202 194 153 202 194 153 202 194 153 202 194 153 161 154 100 109 103 77 81 65 20
-75 57 18 81 65 20 75 57 18 75 57 18 69 51 16 69 51 16 62 49 15 60 41 12
-50 39 13 50 39 13 44 30 9 44 30 9 37 28 9 44 30 9 37 28 9 44 30 9
-44 30 9 50 39 13 60 41 12 56 47 15 69 51 16 69 51 16 75 57 18 75 57 18
-75 57 18 75 57 18 75 57 18 204 179 101 226 218 164 227 219 152 226 218 150 227 218 147
-227 218 146 227 217 143 227 217 136 227 217 136 108 92 44 75 57 18 62 54 22 69 51 16
-56 47 15 51 43 14 44 38 13 37 32 10 28 21 6 22 19 6 15 13 5 9 8 4
-5 4 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 93 93 92
-89 88 84 89 88 84 89 88 84 93 93 92 72 72 72 89 88 84 93 93 92 72 72 72
-89 88 84 72 72 72 89 88 84 72 72 72 72 72 72 89 88 84 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72
-66 66 66 66 66 66 66 66 66 65 65 61 72 72 72 66 66 65 87 85 74 83 78 45
-87 85 74 87 85 74 56 54 38 56 49 15 57 50 16 57 50 16 56 49 15 157 154 144
-230 227 199 230 227 201 230 227 201 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203
-230 227 203 231 227 205 231 227 205 231 227 205 231 228 208 231 228 208 231 227 205 157 154 144
-69 51 16 62 54 22 62 49 15 56 47 15 51 43 14 50 39 13 50 39 13 50 39 13
-44 38 13 50 39 13 50 39 13 50 39 13 51 43 14 56 47 15 69 51 16 62 54 22
-75 57 18 75 57 18 75 57 18 75 57 18 83 78 45 157 154 144 230 225 190 230 227 197
-230 227 197 230 227 199 230 227 203 230 227 203 230 227 199 230 227 197 230 227 197 201 199 182
-145 122 90 81 65 20 75 57 18 81 65 20 75 57 18 75 57 18 69 51 16 62 49 15
-60 41 12 60 41 12 50 39 13 51 31 9 44 30 9 44 30 9 44 30 9 44 30 9
-44 30 9 50 39 13 51 43 14 60 41 12 62 49 15 69 51 16 62 54 22 75 57 18
-73 60 27 81 65 20 73 60 27 83 78 45 225 216 150 227 219 152 227 219 152 227 218 147
-227 218 146 227 218 146 227 217 143 226 213 140 226 212 108 73 60 27 75 57 18 69 51 16
-62 49 15 56 47 15 51 43 14 41 34 11 30 25 8 24 19 6 19 15 5 15 13 5
-9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 72 72 89 88 84
-89 88 84 89 88 84 89 88 84 72 72 72 93 93 92 72 72 72 89 88 84 72 72 72
-89 88 84 72 72 72 72 72 72 89 88 84 72 72 72 72 72 72 72 72 72 89 88 84
-72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 65 65 65 66 66 65 65 65 61 72 72 72 83 78 45 72 72 72
-87 85 74 83 78 45 51 43 14 54 47 16 57 50 16 57 50 16 57 50 16 157 154 144
-230 227 197 230 227 199 230 227 203 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205
-231 227 205 231 228 208 231 227 205 231 227 205 231 228 208 231 228 208 231 228 208 157 154 144
-81 65 20 62 54 22 62 49 15 62 49 15 56 47 15 51 43 14 51 43 14 50 39 13
-50 39 13 50 39 13 50 39 13 60 41 12 56 47 15 62 49 15 69 51 16 75 57 18
-75 57 18 73 60 27 75 57 18 145 122 90 230 225 190 230 227 197 230 227 199 230 227 203
-230 227 199 230 227 201 230 227 199 230 227 199 230 227 198 230 227 197 230 227 197 230 227 197
-230 227 197 202 194 153 108 92 44 75 57 18 81 65 20 75 57 18 75 57 18 75 57 18
-69 51 16 60 41 12 60 41 12 51 31 9 44 30 9 44 30 9 44 30 9 44 30 9
-44 30 9 51 31 9 50 39 13 60 41 12 62 49 15 69 51 16 75 57 18 75 57 18
-75 57 18 75 57 18 81 65 20 81 65 20 161 154 100 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 143 226 213 140 145 122 90 75 57 18 62 54 22
-62 54 22 62 49 15 53 46 15 50 39 13 37 32 10 28 21 6 22 19 6 15 13 5
-9 8 4 7 6 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 26 26 89 88 84 89 88 84
-89 88 84 93 93 92 72 72 72 89 88 84 89 88 84 72 72 72 89 88 84 72 72 72
-72 72 72 89 88 84 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 72 72 72 66 66 66 66 66 66 66 66 66 65 65 65
-65 65 65 62 62 62 65 65 65 65 65 61 65 65 61 65 65 61 72 72 72 87 85 74
-60 59 56 44 38 13 44 38 13 54 47 16 57 50 16 56 49 15 56 49 15 202 194 153
-230 227 199 230 227 203 230 227 203 230 227 203 231 228 208 230 227 203 231 228 208 231 227 205
-231 227 205 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 202 194 153
-69 51 16 69 51 16 62 54 22 62 49 15 62 49 15 62 49 15 56 47 15 60 41 12
-56 47 15 60 41 12 56 47 15 62 49 15 62 49 15 69 51 16 75 57 18 75 57 18
-81 65 20 73 60 27 161 154 100 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203
-230 227 203 230 227 201 230 227 201 230 227 199 230 227 199 230 227 199 230 227 197 230 227 197
-230 227 197 230 227 197 201 199 182 108 92 44 81 65 20 81 65 20 83 60 18 75 57 18
-69 51 16 62 49 15 60 41 12 51 43 14 51 31 9 51 31 9 44 30 9 44 30 9
-44 30 9 51 31 9 51 31 9 60 41 12 62 49 15 62 49 15 62 49 15 75 57 18
-75 57 18 81 65 20 75 57 18 81 65 20 86 69 23 225 216 150 227 219 152 227 219 152
-226 218 150 227 218 146 227 218 146 227 217 143 227 217 136 226 216 132 86 69 23 75 57 18
-75 57 18 62 49 15 62 49 15 51 43 14 44 38 13 30 25 8 24 19 6 19 15 5
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 66 66 89 88 84 89 88 84
-72 72 72 89 88 84 72 72 72 89 88 84 72 72 72 89 88 84 72 72 72 72 72 72
-89 88 84 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72
-72 72 72 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 62 62 62
-62 62 62 62 62 62 62 62 62 62 62 62 65 65 61 65 65 61 83 78 45 65 65 61
-41 34 11 44 38 13 51 43 14 54 47 16 57 50 16 57 50 16 56 49 15 157 154 144
-230 227 199 231 228 208 230 227 203 231 228 208 230 227 203 231 228 208 231 228 208 231 228 208
-231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 209 201 199 182
-62 54 22 75 57 18 69 51 16 62 54 22 62 49 15 62 49 15 62 49 15 62 49 15
-62 49 15 62 49 15 62 49 15 69 51 16 69 51 16 75 57 18 81 65 20 75 57 18
-81 65 20 145 122 90 231 229 213 224 222 210 231 228 208 230 227 203 231 227 205 230 227 203
-230 227 203 230 227 203 230 227 203 230 227 201 230 227 199 230 227 199 230 227 199 230 227 198
-230 227 197 230 227 197 230 227 197 227 221 188 108 92 44 83 60 18 83 60 18 83 60 18
-75 57 18 69 51 16 69 51 16 60 41 12 60 41 12 51 31 9 51 31 9 44 30 9
-44 30 9 51 31 9 50 39 13 60 41 12 60 41 12 62 49 15 69 51 16 69 51 16
-75 57 18 81 65 20 81 65 20 81 65 20 81 65 20 145 122 90 227 219 152 227 219 152
-226 218 150 227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 161 154 100 81 65 20
-75 57 18 62 54 22 62 49 15 56 47 15 51 43 14 37 28 9 30 25 8 22 19 6
-15 13 5 9 8 4 5 4 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 49 49 49 72 72 72 89 88 84
-72 72 72 89 88 84 72 72 72 89 88 84 72 72 72 72 72 72 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72
-66 66 66 66 66 66 66 66 66 65 65 65 65 65 65 62 62 62 62 62 62 62 62 62
-62 62 62 58 58 58 58 58 58 61 61 59 65 65 61 65 65 61 66 66 65 44 38 13
-37 32 10 44 38 13 51 43 14 53 46 15 57 50 16 57 50 17 56 49 15 202 194 153
-231 228 208 230 227 203 231 227 205 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208
-231 228 208 231 228 208 231 228 209 231 228 209 231 228 209 231 228 208 224 222 210 227 221 188
-75 57 18 62 54 22 75 57 18 69 51 16 69 51 16 62 49 15 69 51 16 62 49 15
-69 51 16 69 51 16 69 51 16 69 51 16 75 57 18 75 57 18 81 65 20 73 60 27
-108 92 44 231 228 208 231 228 208 231 228 208 231 227 205 231 228 208 231 227 205 231 227 205
-230 227 203 230 227 203 230 227 203 230 227 203 230 227 201 230 227 201 230 227 199 230 227 199
-230 227 198 230 227 197 230 226 196 230 226 196 202 194 153 86 69 23 86 69 23 81 65 20
-83 60 18 75 57 18 69 51 16 62 49 15 60 41 12 50 39 13 51 31 9 51 31 9
-51 31 9 51 31 9 51 31 9 51 31 9 60 41 12 62 49 15 69 51 16 69 51 16
-75 57 18 75 57 18 83 60 18 81 65 20 86 69 23 86 69 23 225 216 150 227 219 152
-227 219 152 226 218 150 227 218 146 227 218 146 227 217 143 227 217 136 226 216 132 108 92 44
-75 57 18 75 57 18 69 51 16 62 49 15 56 47 15 39 33 11 30 25 8 24 19 6
-19 15 5 14 10 4 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 7 7 7
-31 31 31 58 58 58 72 72 72 72 72 72 89 88 84 72 72 72 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 66 66 66 65 65 65
-66 66 66 66 66 66 65 65 65 62 62 62 62 62 62 62 62 62 62 62 62 58 58 58
-58 58 58 58 58 58 58 58 58 60 59 56 65 65 61 65 65 61 44 40 24 30 25 8
-37 32 10 44 38 13 44 38 13 54 47 16 57 50 16 57 50 17 56 49 15 167 167 167
-230 227 197 231 228 208 231 227 205 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208
-231 228 209 231 228 209 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 224 222 210
-75 57 18 75 57 18 75 57 18 62 54 22 75 57 18 69 51 16 69 51 16 75 57 18
-69 51 16 75 57 18 69 51 16 75 57 18 81 65 20 81 65 20 81 65 20 81 65 20
-201 199 182 230 227 203 231 228 208 231 228 208 231 228 208 231 228 208 231 227 205 231 227 205
-230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 201 230 227 201 230 227 199
-230 227 199 230 227 198 230 227 197 230 227 197 230 226 196 145 122 90 86 69 23 86 69 23
-83 60 18 75 57 18 76 52 15 76 52 15 60 41 12 60 41 12 51 31 9 51 31 9
-44 30 9 51 31 9 51 31 9 51 31 9 60 41 12 60 41 12 69 51 16 69 51 16
-75 57 18 75 57 18 81 65 20 83 60 18 81 65 20 81 65 20 161 154 100 227 219 152
-227 219 152 226 218 150 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 161 154 100
-81 65 20 75 57 18 62 54 22 69 51 16 56 47 15 50 39 13 37 28 9 30 25 8
-22 19 6 15 13 5 9 8 4 5 4 2 2 2 2 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 3 3 3
-4 4 4 5 5 5 9 9 9 30 30 30 53 53 53 72 72 72 72 72 72 72 72 72
-72 72 72 72 72 72 72 72 72 72 72 72 66 66 66 65 65 65 66 66 66 65 65 65
-65 65 65 62 62 62 62 62 62 62 62 62 62 62 62 58 58 58 58 58 58 58 58 58
-58 58 58 55 55 54 55 55 54 60 59 56 60 59 56 46 45 43 24 19 6 30 25 8
-37 32 10 44 38 13 51 43 14 54 47 16 57 50 16 57 50 16 51 43 14 202 194 153
-230 227 203 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 209 231 228 209
-231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 229 213
-86 69 23 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18 69 51 16
-75 57 18 75 57 18 75 57 18 75 57 18 83 60 18 81 65 20 83 60 18 109 103 77
-231 227 205 231 228 209 231 228 209 231 228 208 231 228 208 231 227 205 231 228 208 231 228 208
-231 228 208 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 201 230 227 201
-230 227 199 230 227 199 230 227 198 230 227 197 230 227 197 201 199 182 86 69 23 95 66 20
-86 69 23 83 60 18 75 57 18 69 51 16 69 51 16 60 41 12 60 41 12 51 31 9
-44 30 9 51 31 9 51 31 9 51 31 9 60 41 12 60 41 12 69 51 16 69 51 16
-75 57 18 75 57 18 83 60 18 81 65 20 83 60 18 86 69 23 86 69 23 225 216 150
-227 219 152 227 219 152 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 226 216 132
-108 92 44 81 65 20 75 57 18 69 51 16 62 49 15 51 43 14 37 32 10 30 25 8
-24 19 6 19 15 5 14 10 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 2 2 2 3 3 3 4 4 4 5 5 5 9 9 9 37 37 37 62 62 62
-72 72 72 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 62 62 62
-62 62 62 62 62 62 62 62 62 58 58 58 58 58 58 58 58 58 53 53 53 53 53 53
-55 55 54 53 53 53 55 55 54 55 55 54 55 53 48 24 19 6 24 19 6 30 25 8
-37 32 10 44 38 13 44 38 13 54 47 16 57 50 16 57 50 17 57 50 16 167 167 167
-230 227 197 231 228 208 231 228 208 231 228 208 231 228 208 231 228 209 231 228 211 231 228 211
-231 228 211 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213
-83 78 45 81 65 20 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18
-75 57 18 75 57 18 81 65 20 81 65 20 81 65 20 83 60 18 81 65 20 157 154 144
-231 228 208 231 228 211 231 228 211 231 228 209 231 228 209 231 228 208 231 228 208 231 227 205
-231 228 208 231 227 205 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 201
-230 227 201 230 227 199 230 227 199 230 227 198 230 227 197 230 227 197 136 99 45 86 69 23
-86 69 23 83 60 18 83 60 18 76 52 15 69 51 16 69 39 11 60 41 12 51 31 9
-51 31 9 51 31 9 51 31 9 51 31 9 60 33 9 60 41 12 69 39 11 69 51 16
-76 52 15 83 60 18 83 60 18 81 65 20 86 69 23 83 60 18 86 69 23 161 154 100
-226 217 157 227 219 152 227 219 152 227 218 147 227 218 146 227 217 143 227 217 136 227 217 136
-161 154 100 81 65 20 75 57 18 75 57 18 69 51 16 62 49 15 39 33 11 37 28 9
-24 19 6 22 19 6 15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-1 1 1 1 1 1 2 2 2 3 3 3 3 3 3 4 4 4 5 5 5 6 6 6
-17 17 17 45 45 45 65 65 65 65 65 65 65 65 65 62 62 62 62 62 62 62 62 62
-62 62 62 58 58 58 58 58 58 58 58 58 58 58 58 53 53 53 58 58 58 53 53 53
-53 53 53 53 53 53 53 53 53 58 56 49 22 22 22 19 15 5 24 19 6 30 25 8
-37 32 10 44 38 13 51 43 14 54 47 16 57 50 16 57 50 16 69 51 16 157 154 144
-231 228 208 231 228 208 231 228 209 231 228 209 231 228 211 231 228 211 231 228 211 231 228 211
-231 228 211 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213
-109 103 77 81 65 20 75 57 18 81 65 20 75 57 18 81 65 20 75 57 18 81 65 20
-81 65 20 81 65 20 81 65 20 83 60 18 81 65 20 81 65 20 95 66 20 230 226 196
-231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 209 231 228 208 231 228 208
-231 228 208 231 228 208 231 227 205 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203
-230 227 201 230 227 201 230 227 199 230 227 199 230 227 197 231 228 208 161 154 100 86 69 23
-95 66 20 95 66 20 83 60 18 76 52 15 76 52 15 69 51 16 60 41 12 60 33 9
-51 31 9 51 31 9 51 31 9 51 31 9 60 41 12 60 41 12 69 39 11 69 51 16
-76 52 15 75 57 18 83 60 18 83 60 18 86 69 23 86 69 23 86 69 23 136 99 45
-227 219 152 227 219 152 227 219 152 227 218 147 227 218 146 227 218 146 227 217 143 227 217 136
-226 216 132 108 92 44 81 65 20 75 57 18 75 57 18 62 49 15 44 38 13 37 32 10
-30 25 8 24 19 6 15 13 5 14 10 4 7 6 2 3 3 2 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
-3 3 3 4 4 4 8 8 8 35 35 35 58 58 58 62 62 62 62 62 62 58 58 58
-58 58 58 58 58 58 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53
-52 52 52 49 49 49 51 51 50 34 34 34 12 7 2 15 13 5 24 19 6 30 25 8
-37 32 10 44 38 13 44 38 13 54 47 16 57 50 16 57 50 17 62 54 22 157 154 144
-231 228 208 231 228 208 231 228 209 231 228 211 231 228 211 231 228 211 231 228 211 231 229 213
-231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 216 231 229 216
-145 122 90 75 57 18 81 65 20 75 57 18 81 65 20 81 65 20 81 65 20 81 65 20
-83 60 18 83 60 18 81 65 20 81 65 20 86 69 23 86 69 23 83 78 45 231 228 209
-231 229 213 231 229 213 231 228 211 231 228 211 231 228 211 231 228 211 231 228 209 231 228 209
-231 228 208 231 228 208 231 228 208 231 227 205 231 227 205 231 227 205 230 227 203 230 227 203
-230 227 203 230 227 201 230 227 199 230 227 199 230 227 198 230 227 197 202 194 153 95 66 20
-95 66 20 86 69 23 83 60 18 83 60 18 76 52 15 69 39 11 69 39 11 60 41 12
-60 33 9 51 31 9 51 31 9 51 31 9 60 33 9 60 41 12 60 41 12 69 51 16
-76 52 15 75 57 18 83 60 18 83 60 18 95 66 20 86 69 23 86 69 23 81 65 20
-202 194 153 227 218 146 227 219 152 226 218 150 227 218 146 227 218 146 227 217 143 227 217 136
-227 217 136 161 154 100 83 60 18 75 57 18 75 57 18 69 51 16 53 46 15 39 33 11
-30 25 8 24 19 6 19 15 5 15 13 5 7 6 2 5 3 1 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
-2 2 2 3 3 3 3 3 3 4 4 4 6 6 6 27 27 27 53 53 53 58 58 58
-53 53 53 58 58 58 53 53 53 58 58 58 53 53 53 53 53 53 52 52 52 49 49 49
-49 49 49 48 48 48 46 46 46 9 8 4 9 8 4 19 15 5 24 19 6 28 25 13
-37 32 10 44 38 13 51 43 14 56 49 15 57 50 16 57 50 16 56 49 15 202 194 153
-231 228 208 231 228 209 231 228 211 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213
-231 229 213 231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 228 208
-130 128 124 81 65 20 81 65 20 81 65 20 81 65 20 81 65 20 83 60 18 81 65 20
-83 60 18 86 69 23 83 60 18 86 69 23 95 66 20 86 69 23 136 99 45 231 229 213
-231 229 213 231 229 213 231 229 213 231 228 211 231 228 211 231 228 211 231 228 211 231 228 209
-231 228 209 231 228 208 231 228 208 231 228 208 231 227 205 231 227 205 231 227 205 230 227 203
-230 227 203 230 227 203 230 227 201 230 227 199 230 227 199 230 227 203 202 194 153 95 66 20
-95 66 20 95 66 20 95 66 20 83 60 18 76 52 15 76 52 15 69 39 11 60 41 12
-60 33 9 51 31 9 51 31 9 51 31 9 60 33 9 60 41 12 69 39 11 69 51 16
-76 52 15 76 52 15 83 60 18 83 60 18 86 69 23 86 69 23 95 66 20 95 66 20
-145 122 90 226 217 157 227 219 152 226 218 150 227 218 147 227 218 146 227 217 143 227 217 136
-226 216 132 226 214 125 86 69 23 81 65 20 75 57 18 75 57 18 62 49 15 39 33 11
-37 32 10 30 25 8 22 19 6 15 13 5 9 8 4 5 4 2 2 2 2 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 4 4 4 26 26 26
-52 52 52 53 53 53 53 53 53 52 52 52 52 52 52 49 49 49 49 49 49 49 49 49
-48 48 48 46 46 46 24 24 23 5 4 2 9 8 4 15 13 5 24 19 6 30 25 8
-37 32 10 41 34 11 51 43 14 56 49 15 57 50 17 62 54 22 62 49 15 157 154 144
-230 227 198 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213
-231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218
-157 154 144 83 60 18 81 65 20 83 60 18 81 65 20 83 60 18 81 65 20 86 69 23
-86 69 23 86 69 23 86 69 23 95 66 20 86 69 23 86 69 23 109 103 77 231 228 211
-231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 228 211 231 228 211 231 228 211
-231 228 211 231 228 209 231 228 208 231 228 208 231 228 208 231 227 205 231 227 205 231 227 205
-230 227 203 230 227 203 230 227 203 230 227 201 230 227 199 230 227 199 201 199 182 103 69 20
-95 66 20 95 66 20 86 69 23 83 60 18 84 52 15 76 52 15 69 39 11 69 39 11
-60 33 9 60 33 9 51 31 9 51 31 9 60 33 9 60 33 9 60 41 12 69 39 11
-76 52 15 76 52 15 83 60 18 83 60 18 95 66 20 95 66 20 86 69 23 95 66 20
-110 76 23 226 218 150 227 219 152 227 219 152 227 218 147 227 218 146 227 217 143 227 217 143
-227 217 136 226 216 132 144 131 48 81 65 20 81 65 20 75 57 18 69 51 16 44 38 13
-37 32 10 30 25 8 24 19 6 19 15 5 14 10 4 7 6 2 3 3 2 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 3 3 3
-4 4 4 27 27 27 49 49 49 49 49 49 49 49 49 48 48 48 48 48 48 46 46 46
-45 45 45 38 38 38 3 3 2 5 4 2 9 8 4 19 15 5 22 19 6 30 25 8
-37 32 10 44 38 13 51 43 14 56 49 15 62 54 22 69 51 16 62 54 22 161 154 100
-231 228 211 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213 231 229 213 231 229 216
-231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 224 222 210
-202 194 153 81 65 20 83 60 18 81 65 20 81 65 20 86 69 23 86 69 23 95 66 20
-83 60 18 86 69 23 95 66 20 86 69 23 95 66 20 95 66 20 108 92 44 231 229 213
-231 229 216 231 229 216 231 229 213 231 229 213 231 229 213 231 229 213 231 228 211 231 228 211
-231 228 211 231 228 211 231 228 209 231 228 208 231 228 208 231 228 208 231 227 205 231 227 205
-230 227 203 230 227 203 230 227 203 230 227 201 230 227 201 230 227 198 202 194 153 95 66 20
-110 76 23 95 66 20 95 66 20 83 60 18 84 52 15 76 52 15 69 51 16 69 39 11
-60 33 9 60 33 9 60 33 9 51 31 9 60 33 9 60 33 9 69 39 11 69 39 11
-76 52 15 76 52 15 83 60 18 83 60 18 81 65 20 95 66 20 86 69 23 86 69 23
-86 69 23 204 179 101 226 217 157 227 219 152 226 218 150 227 218 146 227 218 146 227 217 143
-227 217 136 226 215 145 204 179 101 83 60 18 81 65 20 83 60 18 75 57 18 51 43 14
-37 32 10 37 28 9 24 19 6 19 15 5 14 10 4 9 8 4 5 3 1 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
-1 1 1 2 2 2 6 6 6 35 35 35 48 48 48 46 46 46 45 45 45 45 45 45
-44 44 44 13 13 13 2 2 2 5 4 2 9 8 4 15 13 5 24 19 6 30 25 8
-37 32 10 44 38 13 51 43 14 57 50 16 57 50 16 69 51 16 62 54 22 161 154 100
-230 228 217 231 229 213 231 229 213 231 229 213 231 229 213 231 229 216 231 229 216 231 229 216
-231 229 216 231 229 216 231 229 216 231 229 216 231 230 218 231 229 216 231 229 216 231 229 216
-202 194 153 75 57 18 86 69 23 86 69 23 95 66 20 86 69 23 95 66 20 86 69 23
-86 69 23 95 66 20 86 69 23 95 66 20 86 69 23 95 66 20 95 66 20 224 222 210
-231 229 216 231 229 216 231 229 216 231 229 213 231 229 213 231 229 213 231 229 213 231 228 211
-231 228 211 231 228 211 231 228 211 231 228 209 231 228 208 231 228 208 231 228 208 231 227 205
-231 227 205 230 227 203 230 227 203 230 227 203 230 227 201 230 227 199 157 154 144 110 76 23
-103 69 20 95 66 20 95 66 20 95 66 20 83 60 18 76 52 15 79 41 11 69 39 11
-60 41 12 60 33 9 60 33 9 51 31 9 60 33 9 60 33 9 69 39 11 62 49 15
-69 51 16 76 52 15 84 52 15 83 60 18 95 66 20 95 66 20 95 66 20 95 66 20
-86 69 23 145 122 90 227 219 152 227 219 152 226 218 150 227 218 147 227 218 146 227 217 143
-227 217 143 227 217 136 226 216 132 108 92 44 83 60 18 81 65 20 75 57 18 56 47 15
-41 34 11 37 32 10 30 25 8 22 19 6 15 13 5 9 8 4 5 4 2 2 2 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 1 1 1 1 1 1 14 14 14 39 39 39 44 44 44 43 43 43
-34 34 34 0 0 0 2 2 2 5 3 1 9 8 4 15 13 5 22 19 6 30 25 8
-37 32 10 44 38 13 53 46 15 57 50 16 62 49 15 62 54 22 69 51 16 130 128 124
-230 228 217 231 229 213 231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 216 231 229 216 231 230 218 231 229 216 231 230 218 231 230 218 231 230 218 231 230 218
-205 205 205 86 69 23 83 60 18 86 69 23 81 65 20 95 66 20 86 69 23 86 69 23
-95 66 20 95 66 20 86 69 23 95 66 20 95 66 20 95 66 20 95 66 20 202 194 153
-231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 213 231 229 213 231 229 213
-231 228 211 231 228 211 231 228 211 231 228 209 231 228 209 231 228 208 231 228 208 231 228 208
-231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 197 145 122 90 110 76 23
-110 76 23 103 69 20 95 66 20 91 54 15 83 60 18 76 52 15 76 52 15 69 39 11
-69 39 11 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 69 39 11
-79 41 11 76 52 15 84 52 15 83 60 18 95 66 20 86 69 23 95 66 20 95 66 20
-86 69 23 110 76 23 227 219 152 227 219 152 227 219 152 227 218 147 227 218 146 227 217 143
-227 217 143 227 217 136 226 214 125 161 154 100 81 65 20 81 65 20 83 60 18 62 49 15
-41 34 11 37 32 10 30 25 8 24 19 6 15 13 5 14 10 4 7 6 2 3 3 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 21 21 21 40 40 40
-13 13 13 0 0 0 1 1 0 5 3 1 9 8 4 15 13 5 24 19 6 30 25 8
-37 32 10 44 38 13 54 47 16 57 50 17 62 54 22 69 51 16 75 57 18 145 122 90
-231 229 213 231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 216 231 229 216 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218
-231 229 216 86 69 23 95 66 20 86 69 23 95 66 20 86 69 23 95 66 20 95 66 20
-86 69 23 95 66 20 95 66 20 95 66 20 95 66 20 103 69 20 86 69 23 161 154 100
-230 228 217 230 228 217 231 229 216 231 229 216 231 229 216 231 229 216 231 229 213 231 229 213
-231 229 213 231 228 211 231 228 211 231 228 211 231 228 209 231 228 208 231 228 208 231 228 208
-231 227 205 231 227 205 231 227 205 230 227 203 230 227 203 230 225 190 108 92 44 103 69 20
-103 69 20 86 69 23 95 66 20 95 66 20 83 60 18 84 52 15 76 52 15 69 39 11
-69 39 11 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 69 39 11
-69 51 16 76 52 15 84 52 15 83 60 18 83 60 18 95 66 20 95 66 20 103 69 20
-95 66 20 86 69 23 202 194 153 226 215 145 227 219 152 226 218 150 227 218 146 227 218 146
-227 217 143 227 217 136 226 216 132 204 179 101 86 69 23 83 60 18 81 65 20 69 51 16
-44 38 13 39 33 11 30 25 8 24 19 6 19 15 5 15 13 5 7 6 2 5 3 1
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 5
-0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 19 15 5 24 19 6 30 25 8
-41 34 11 50 39 13 53 46 15 62 49 15 69 51 16 62 54 22 75 57 18 110 107 92
-231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218
-231 229 216 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218
-230 228 217 108 92 44 86 69 23 86 69 23 86 69 23 95 66 20 86 69 23 95 66 20
-95 66 20 86 69 23 95 66 20 86 69 23 110 76 23 86 69 23 103 69 20 103 69 20
-224 222 210 231 230 218 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 213
-231 229 213 231 229 213 231 228 211 231 228 211 231 228 211 231 228 209 231 228 208 231 228 208
-231 228 208 231 227 205 231 227 205 231 227 205 230 227 197 157 154 144 110 76 23 110 76 23
-110 76 23 103 69 20 103 69 20 83 60 18 91 54 15 84 52 15 76 52 15 79 41 11
-69 39 11 69 39 11 60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 69 39 11
-79 41 11 76 52 15 84 52 15 83 60 18 95 66 20 95 66 20 103 69 20 86 69 23
-103 69 20 110 76 23 145 122 90 227 219 152 227 219 152 226 218 150 227 218 147 227 218 146
-227 217 143 227 217 136 227 217 136 226 214 125 108 92 44 86 69 23 81 65 20 75 57 18
-44 38 13 39 33 11 37 32 10 30 25 8 22 19 6 15 13 5 9 8 4 5 3 1
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 19 15 5 24 19 6 37 28 9
-41 34 11 50 39 13 53 46 15 62 49 15 62 54 22 75 57 18 75 57 18 109 103 77
-231 228 209 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218
-231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 201 199 182
-167 167 167 110 76 23 95 66 20 95 66 20 95 66 20 86 69 23 95 66 20 86 69 23
-95 66 20 95 66 20 95 66 20 103 69 20 86 69 23 110 76 23 103 69 20 103 69 20
-161 154 100 230 228 217 230 228 217 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 213 231 229 213 231 229 213 231 228 211 231 228 211 231 228 211 231 228 209 231 228 208
-231 228 208 231 228 208 231 227 205 231 227 205 230 226 196 124 87 31 110 76 23 110 76 23
-103 69 20 103 69 20 95 66 20 95 66 20 91 54 15 76 52 15 79 41 11 69 39 11
-69 39 11 69 39 11 60 33 9 69 39 11 60 33 9 69 39 11 69 39 11 69 39 11
-76 52 15 76 52 15 84 52 15 83 60 18 95 66 20 95 66 20 95 66 20 110 76 23
-95 66 20 103 69 20 144 131 48 226 217 157 227 219 152 227 219 152 227 218 147 227 218 146
-227 217 143 227 217 143 227 217 136 226 216 132 144 131 48 95 66 20 86 69 23 83 60 18
-51 43 14 44 38 13 37 32 10 30 25 8 22 19 6 19 15 5 9 8 4 5 4 2
-2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 7 4 1 9 8 4 19 15 5 24 19 6 30 25 8
-39 33 11 50 39 13 56 47 15 62 54 22 62 49 15 75 57 18 73 60 27 108 92 44
-231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218 231 230 218
-231 230 218 231 230 218 201 199 182 167 167 167 145 122 90 109 103 77 86 69 23 95 66 20
-95 66 20 86 69 23 86 69 23 86 69 23 95 66 20 95 66 20 83 60 18 95 66 20
-86 69 23 95 66 20 86 69 23 95 66 20 103 69 20 103 69 20 83 78 45 103 69 20
-95 66 20 202 194 153 231 229 216 231 230 218 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 213 231 229 213 231 229 213 231 228 211 231 228 211 231 228 211 231 228 209 231 228 208
-231 228 208 231 228 208 231 227 205 231 227 205 145 122 90 110 76 23 110 76 23 110 76 23
-110 76 23 103 69 20 95 66 20 83 60 18 91 54 15 84 52 15 76 52 15 79 41 11
-69 39 11 69 39 11 60 33 9 69 39 11 60 33 9 69 39 11 69 39 11 79 41 11
-76 52 15 84 52 15 83 60 18 91 54 15 95 66 20 95 66 20 103 69 20 86 69 23
-103 69 20 103 69 20 95 66 20 225 216 150 227 219 152 227 219 152 227 218 147 227 218 146
-227 217 143 227 217 143 227 217 136 227 217 136 204 179 101 86 69 23 95 66 20 81 65 20
-53 46 15 44 38 13 37 32 10 30 25 8 24 19 6 19 15 5 14 10 4 7 6 2
-3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 3 2 0 7 4 1 14 10 4 19 15 5 28 21 6 37 28 9
-41 34 11 50 39 13 56 47 15 62 49 15 75 57 18 62 54 22 75 57 18 83 78 45
-231 230 218 231 229 216 231 230 218 231 229 216 231 230 218 224 222 210 167 167 167 161 154 100
-109 103 77 95 66 20 86 69 23 95 66 20 86 69 23 95 66 20 95 66 20 86 69 23
-95 66 20 95 66 20 95 66 20 95 66 20 81 65 20 95 66 20 83 60 18 95 66 20
-95 66 20 95 66 20 95 66 20 95 66 20 103 69 20 103 69 20 110 76 23 110 76 23
-110 76 23 108 92 44 201 199 182 230 228 217 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 216 231 229 213 231 229 213 231 229 213 231 228 211 231 228 211 231 228 211 231 228 209
-231 228 208 231 228 208 231 228 208 161 154 100 124 87 31 110 76 23 110 76 23 110 76 23
-103 69 20 95 66 20 95 66 20 91 54 15 91 54 15 84 52 15 79 41 11 79 41 11
-69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11 76 52 15
-84 52 15 91 54 15 83 60 18 95 66 20 95 66 20 103 69 20 103 69 20 110 76 23
-110 76 23 86 69 23 110 76 23 204 179 101 226 218 164 227 219 152 226 218 150 227 218 146
-227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 103 69 20 86 69 23 86 69 23
-62 49 15 44 38 13 37 32 10 37 28 9 28 21 6 19 15 5 15 13 5 9 8 4
-5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 0 0 3 1 0 7 4 1 14 10 4 19 15 5 24 19 6 37 28 9
-41 34 11 50 39 13 56 47 15 62 49 15 62 54 22 75 57 18 81 65 20 86 69 23
-231 229 216 201 199 182 157 154 144 145 122 90 108 92 44 83 60 18 83 60 18 83 60 18
-83 60 18 86 69 23 86 69 23 95 66 20 86 69 23 95 66 20 86 69 23 95 66 20
-86 69 23 95 66 20 86 69 23 83 60 18 95 66 20 83 60 18 83 60 18 95 66 20
-83 60 18 83 60 18 95 66 20 86 69 23 103 69 20 86 69 23 103 69 20 103 69 20
-110 76 23 103 69 20 108 92 44 202 194 153 231 230 218 231 230 218 231 229 216 231 229 216
-231 229 216 231 229 216 231 229 213 231 229 213 231 229 213 231 228 211 231 228 211 231 228 209
-231 228 208 230 227 203 161 154 100 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-103 69 20 103 69 20 95 66 20 95 66 20 91 54 15 84 52 15 76 52 15 79 41 11
-79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 76 52 15 84 52 15
-84 52 15 91 54 15 95 66 20 95 66 20 103 69 20 86 69 23 110 76 23 86 69 23
-103 69 20 110 76 23 110 76 23 161 154 100 226 217 157 227 219 152 226 218 150 227 218 147
-227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 144 105 46 86 69 23 95 66 20
-62 49 15 44 38 13 39 33 11 37 32 10 30 25 8 22 19 6 15 13 5 9 8 4
-5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 0 0 3 1 0 4 2 0 8 5 1 14 10 4 19 15 5 28 21 6 30 25 8
-44 30 9 50 39 13 56 47 15 62 49 15 75 57 18 75 57 18 75 57 18 73 60 27
-86 69 23 81 65 20 81 65 20 75 57 18 81 65 20 81 65 20 86 69 23 86 69 23
-86 69 23 95 66 20 86 69 23 86 69 23 86 69 23 95 66 20 86 69 23 95 66 20
-95 66 20 86 69 23 83 60 18 91 54 15 83 60 18 83 60 18 91 54 15 83 60 18
-83 60 18 95 66 20 95 66 20 95 66 20 95 66 20 103 69 20 110 76 23 110 76 23
-110 76 23 110 76 23 110 76 23 110 76 23 161 154 100 224 222 210 230 228 217 230 228 217
-231 229 216 231 229 216 231 229 213 231 229 213 231 229 213 231 228 211 231 228 211 231 228 211
-202 194 153 144 105 46 110 76 23 124 87 31 110 76 23 110 76 23 110 76 23 103 69 20
-103 69 20 103 69 20 91 54 15 91 54 15 91 54 15 84 52 15 84 52 15 79 41 11
-76 52 15 79 41 11 79 41 11 79 41 11 84 52 15 84 52 15 84 52 15 84 52 15
-91 54 15 95 66 20 95 66 20 95 66 20 103 69 20 103 69 20 110 76 23 110 76 23
-110 76 23 86 69 23 110 76 23 145 122 90 227 218 147 227 219 152 226 218 150 227 218 147
-227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 161 154 100 95 66 20 95 66 20
-62 54 22 51 43 14 44 38 13 37 32 10 30 25 8 22 19 6 15 13 5 9 8 4
-5 4 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-3 1 0 4 2 0 5 3 1 10 7 2 14 10 4 19 15 5 28 21 6 37 28 9
-41 34 11 50 39 13 56 47 15 62 49 15 62 54 22 75 57 18 75 57 18 81 65 20
-81 65 20 81 65 20 81 65 20 81 65 20 83 60 18 81 65 20 83 60 18 86 69 23
-83 60 18 81 65 20 95 66 20 83 60 18 95 66 20 83 60 18 95 66 20 83 60 18
-86 69 23 91 54 15 83 60 18 83 60 18 84 52 15 83 60 18 84 52 15 83 60 18
-91 54 15 83 60 18 91 54 15 83 60 18 95 66 20 95 66 20 95 66 20 103 69 20
-110 76 23 110 76 23 110 76 23 110 76 23 103 69 20 124 87 31 161 154 100 202 194 153
-230 228 217 231 229 216 231 229 216 231 229 213 231 229 216 201 199 182 202 194 153 145 122 90
-110 76 23 124 87 31 110 76 23 124 87 31 110 76 23 110 76 23 110 76 23 103 69 20
-103 69 20 103 69 20 95 66 20 95 66 20 91 54 15 91 54 15 84 52 15 84 52 15
-84 52 15 84 52 15 84 52 15 84 52 15 84 52 15 91 54 15 91 54 15 91 54 15
-95 66 20 95 66 20 95 66 20 103 69 20 103 69 20 103 69 20 110 76 23 110 76 23
-110 76 23 110 76 23 103 69 20 136 99 45 226 217 157 227 219 152 227 219 152 227 218 147
-227 218 146 227 217 143 227 217 136 227 217 136 226 214 125 204 179 101 95 66 20 95 66 20
-75 57 18 51 43 14 44 38 13 37 32 10 30 25 8 24 19 6 19 15 5 14 10 4
-7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0
-3 2 0 5 3 1 7 4 1 10 7 2 14 10 4 19 15 5 24 19 6 30 25 8
-44 30 9 51 31 9 51 43 14 62 49 15 69 51 16 75 57 18 75 57 18 75 57 18
-81 65 20 83 60 18 83 60 18 83 60 18 81 65 20 83 60 18 81 65 20 83 60 18
-83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18
-83 60 18 83 60 18 91 54 15 84 52 15 76 52 15 76 52 15 84 52 15 84 52 15
-84 52 15 84 52 15 84 52 15 83 60 18 95 66 20 95 66 20 103 69 20 110 76 23
-103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 144 105 46 144 105 46 145 122 90 136 99 45 127 82 26 110 76 23 110 76 23
-127 82 26 110 76 23 124 87 31 110 76 23 110 76 23 110 76 23 110 76 23 112 69 20
-103 69 20 103 69 20 106 56 16 91 54 15 91 54 15 91 54 15 91 54 15 91 54 15
-91 54 15 91 54 15 91 54 15 91 54 15 95 66 20 91 54 15 95 66 20 95 66 20
-95 66 20 103 69 20 103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 110 76 23 110 76 23 227 219 152 227 219 152 227 219 152 227 218 147
-227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 86 69 23 103 69 20
-75 57 18 51 43 14 44 38 13 37 32 10 30 25 8 28 21 6 17 15 7 14 10 4
-7 6 2 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 2 0
-5 3 1 7 4 1 8 5 1 12 7 2 14 10 4 19 15 5 28 21 6 30 25 8
-38 30 10 44 38 13 50 39 13 62 49 15 62 49 15 62 54 22 75 57 18 75 57 18
-75 57 18 75 57 18 81 65 20 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18
-83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 84 52 15 83 60 18
-84 52 15 84 52 15 76 52 15 76 52 15 76 52 15 76 52 15 76 52 15 79 41 11
-76 52 15 84 52 15 84 52 15 91 54 15 91 54 15 95 66 20 95 66 20 95 66 20
-110 76 23 110 76 23 110 76 23 110 76 23 124 87 31 110 76 23 124 87 31 110 76 23
-124 87 31 124 87 31 110 76 23 110 76 23 110 76 23 124 87 31 110 76 23 124 87 31
-110 76 23 124 87 31 110 76 23 127 82 26 110 76 23 110 76 23 110 76 23 110 76 23
-103 69 20 103 69 20 103 69 20 103 69 20 106 56 16 95 66 20 91 54 15 91 54 15
-91 54 15 91 54 15 95 66 20 103 69 20 95 66 20 103 69 20 103 69 20 103 69 20
-103 69 20 112 69 20 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 110 76 23 103 69 20 226 213 140 227 219 152 227 219 152 226 218 150
-227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 136 99 45 86 69 23
-81 65 20 53 46 15 44 38 13 39 33 11 37 32 10 28 21 6 19 15 5 15 13 5
-7 6 2 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 1 0 4 2 0
-7 4 1 8 5 1 9 5 1 10 7 2 18 12 3 19 15 5 24 16 6 37 22 6
-37 28 9 44 30 9 50 39 13 56 47 15 62 49 15 69 51 16 69 51 16 75 57 18
-75 57 18 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18
-76 52 15 75 57 18 84 52 15 76 52 15 84 52 15 76 52 15 76 52 15 76 52 15
-76 52 15 76 52 15 76 52 15 76 52 15 79 41 11 79 41 11 69 39 11 76 52 15
-79 41 11 76 52 15 84 52 15 84 52 15 91 54 15 95 66 20 95 66 20 103 69 20
-103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 124 87 31 110 76 23 124 87 31
-110 76 23 124 87 31 110 76 23 124 87 31 127 82 26 110 76 23 127 82 26 127 82 26
-110 76 23 124 87 31 110 76 23 127 82 26 110 76 23 110 76 23 110 76 23 112 69 20
-112 69 20 103 69 20 103 69 20 103 69 20 103 69 20 106 56 16 95 66 20 103 69 20
-103 69 20 103 69 20 103 69 20 103 69 20 112 69 20 103 69 20 112 69 20 110 76 23
-110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 136 99 45 202 194 153 225 216 150 226 217 157 227 219 152 226 218 150
-227 218 146 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 144 131 48 103 69 20
-81 65 20 51 43 14 44 38 13 44 38 13 37 32 10 28 21 6 22 19 6 15 13 5
-9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 4 2 0 5 3 1
-7 4 1 9 5 1 10 7 2 14 7 2 14 7 2 25 13 4 25 13 4 28 21 6
-37 22 6 44 30 9 51 31 9 50 39 13 60 41 12 62 49 15 62 49 15 69 51 16
-69 51 16 69 51 16 76 52 15 69 51 16 76 52 15 76 52 15 76 52 15 76 52 15
-76 52 15 76 52 15 76 52 15 76 52 15 76 52 15 76 52 15 76 52 15 76 52 15
-79 41 11 76 52 15 79 41 11 79 41 11 76 52 15 69 39 11 69 39 11 69 39 11
-79 41 11 79 41 11 79 41 11 84 52 15 91 54 15 91 54 15 91 54 15 95 66 20
-103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-127 82 26 110 76 23 124 87 31 110 76 23 127 82 26 124 87 31 110 76 23 124 87 31
-124 87 31 110 76 23 127 82 26 110 76 23 127 82 26 110 76 23 127 82 26 110 76 23
-110 76 23 112 69 20 112 69 20 112 69 20 103 69 20 103 69 20 112 69 20 103 69 20
-112 69 20 112 69 20 112 69 20 112 69 20 112 69 20 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 110 76 23 124 87 31 110 76 23 124 87 31 110 76 23 108 92 44
-136 99 45 202 194 153 226 218 164 226 218 150 226 217 157 227 219 152 227 219 152 226 218 150
-227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 161 154 100 103 69 20
-81 65 20 54 47 16 51 43 14 39 33 11 37 32 10 30 25 8 22 19 6 15 13 5
-9 8 4 5 4 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 3 2 0 5 3 1 7 4 1
-9 5 1 10 7 2 14 7 2 14 7 2 14 7 2 18 12 3 25 13 4 28 21 6
-37 22 6 37 28 9 44 30 9 50 39 13 50 39 13 60 41 12 60 41 12 62 49 15
-62 49 15 69 51 16 69 51 16 69 51 16 69 51 16 69 51 16 69 51 16 69 39 11
-69 51 16 69 39 11 69 51 16 69 39 11 69 51 16 69 39 11 79 41 11 69 39 11
-69 51 16 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 69 39 11 69 39 11
-69 39 11 79 41 11 76 52 15 84 52 15 84 52 15 91 54 15 95 66 20 106 56 16
-95 66 20 103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 127 82 26
-110 76 23 127 82 26 110 76 23 124 87 31 127 82 26 124 87 31 127 82 26 127 82 26
-127 82 26 127 82 26 124 87 31 110 76 23 127 82 26 110 76 23 110 76 23 110 76 23
-112 69 20 110 76 23 112 69 20 112 69 20 112 69 20 112 69 20 112 69 20 112 69 20
-110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 127 82 26 110 76 23 127 82 26
-127 82 26 127 82 26 110 76 23 124 87 31 110 76 23 110 76 23 144 131 48 202 194 153
-227 219 152 226 217 157 226 217 157 226 218 164 226 217 157 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 214 125 204 179 101 95 66 20
-86 69 23 54 47 16 51 43 14 41 34 11 37 32 10 30 25 8 24 19 6 19 15 5
-9 8 4 5 4 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 0 0 3 1 0 5 3 1 7 4 1 8 5 1
-10 7 2 12 7 2 14 7 2 14 7 2 18 9 0 18 12 3 25 13 4 24 16 6
-37 22 6 37 22 6 44 30 9 44 30 9 51 31 9 50 39 13 60 41 12 60 41 12
-60 41 12 60 41 12 60 41 12 62 49 15 69 39 11 69 39 11 69 39 11 69 51 16
-69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11
-69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11
-69 39 11 79 41 11 79 41 11 79 41 11 84 52 15 91 54 15 91 54 15 91 54 15
-95 66 20 106 56 16 103 69 20 103 69 20 112 69 20 112 69 20 110 76 23 110 76 23
-110 76 23 110 76 23 127 82 26 127 82 26 127 82 26 110 76 23 124 87 31 127 82 26
-124 87 31 110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26
-127 82 26 128 71 21 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-127 82 26 110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 124 87 31 110 76 23
-124 87 31 110 76 23 127 82 26 124 87 31 161 154 100 225 216 150 227 220 173 226 218 164
-226 218 164 226 218 164 226 218 164 226 218 164 227 219 152 226 217 157 227 219 152 226 218 150
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 204 179 101 103 69 20
-86 69 23 54 47 16 51 43 14 44 38 13 37 32 10 30 25 8 24 19 6 15 13 5
-14 10 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 2 1 0 4 2 0 5 3 1 8 5 1 9 5 1
-10 7 2 14 7 2 14 7 2 16 8 0 18 12 3 18 12 3 25 13 4 24 16 6
-28 21 6 37 22 6 37 28 9 44 30 9 51 31 9 51 31 9 51 31 9 60 41 12
-60 41 12 60 41 12 60 41 12 60 41 12 60 41 12 60 41 12 60 41 12 60 41 12
-60 41 12 69 39 11 60 41 12 69 39 11 69 39 11 60 41 12 69 39 11 69 39 11
-69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11
-79 41 11 69 39 11 79 41 11 84 52 15 79 41 11 91 54 15 91 54 15 91 54 15
-106 56 16 95 66 20 106 56 16 103 69 20 103 69 20 112 69 20 112 69 20 110 76 23
-127 82 26 110 76 23 127 82 26 110 76 23 124 87 31 127 82 26 127 82 26 127 82 26
-127 82 26 124 87 31 127 82 26 124 87 31 110 76 23 127 82 26 127 82 26 110 76 23
-127 82 26 110 76 23 127 82 26 110 76 23 127 82 26 127 82 26 127 82 26 127 82 26
-127 82 26 127 82 26 127 82 26 124 87 31 127 82 26 124 87 31 127 82 26 127 82 26
-124 87 31 144 131 48 204 179 101 227 220 173 227 220 173 227 220 173 227 220 173 227 220 173
-226 218 164 227 220 173 226 218 164 227 219 152 226 218 164 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 110 76 23
-86 69 23 54 47 16 51 43 14 44 38 13 37 32 10 37 32 10 24 19 6 19 15 5
-14 10 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 2 1 0 3 2 0 5 3 1 7 4 1 9 5 1 10 7 2
-14 7 2 14 7 2 14 7 2 18 12 3 20 10 0 18 12 3 25 13 4 25 13 4
-25 13 4 37 22 6 37 22 6 37 22 6 44 30 9 51 31 9 51 31 9 51 31 9
-51 31 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9
-60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 60 33 9 69 39 11
-60 33 9 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 69 39 11
-79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 84 52 15 91 54 15 91 54 15
-91 54 15 91 54 15 95 66 20 106 56 16 103 69 20 112 69 20 112 69 20 112 69 20
-127 82 26 110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 124 87 31 127 82 26
-124 87 31 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26
-127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26
-127 82 26 124 87 31 127 82 26 124 87 31 127 82 26 127 82 26 144 105 46 161 154 100
-202 194 153 227 221 188 227 221 188 228 223 180 227 220 173 227 220 173 227 220 173 226 218 164
-227 220 173 226 218 164 226 218 164 226 218 164 227 219 152 226 217 157 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 143 226 216 132 226 216 132 226 214 125 124 87 31
-86 69 23 54 47 16 53 46 15 44 38 13 39 33 11 30 25 8 24 19 6 19 15 5
-14 10 4 7 6 2 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 0 0 3 1 0 4 2 0 7 4 1 8 5 1 10 7 2 12 7 2
-14 7 2 14 7 2 18 9 0 18 12 3 18 12 3 25 13 4 25 13 4 25 13 4
-28 21 6 37 22 6 37 22 6 37 22 6 37 22 6 44 30 9 44 30 9 51 31 9
-51 31 9 51 31 9 51 31 9 51 31 9 60 33 9 51 31 9 60 33 9 60 33 9
-60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 60 33 9 69 39 11 60 33 9
-69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11 69 39 11 79 41 11
-79 41 11 79 41 11 79 41 11 79 41 11 84 52 15 79 41 11 91 54 15 91 54 15
-91 54 15 91 54 15 106 56 16 106 56 16 95 66 20 106 56 16 110 76 23 112 69 20
-110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 124 87 31 127 82 26 127 82 26
-134 89 29 127 82 26 134 89 29 127 82 26 124 87 31 127 82 26 127 82 26 127 82 26
-127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 124 87 31 134 89 29 124 87 31
-134 89 29 127 82 26 134 89 29 136 99 45 161 154 100 202 194 153 228 223 180 228 223 180
-230 225 190 228 223 180 228 223 180 228 223 180 227 220 173 227 220 173 227 220 173 227 220 173
-226 218 164 226 218 164 226 218 164 227 219 152 226 218 164 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 226 214 125 226 214 125 136 99 45
-86 69 23 54 47 16 51 43 14 44 38 13 39 33 11 37 32 10 28 21 6 19 15 5
-15 13 5 9 8 4 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 2 1 0 4 2 0 5 3 1 7 4 1 9 5 1 10 7 2 14 7 2
-14 7 2 14 7 2 18 12 3 25 13 4 18 12 3 25 13 4 25 13 4 25 13 4
-25 13 4 25 13 4 37 22 6 37 22 6 37 22 6 37 22 6 44 30 9 44 30 9
-51 31 9 51 31 9 51 31 9 51 31 9 51 31 9 51 31 9 60 33 9 51 31 9
-60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 69 39 11
-69 39 11 69 39 11 79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 79 41 11
-79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 91 54 15 79 41 11 91 54 15
-91 54 15 106 56 16 91 54 15 95 66 20 106 56 16 112 69 20 112 69 20 110 76 23
-128 71 21 110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 127 82 26 134 89 29
-124 87 31 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 161 154 100 202 194 153 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 227 220 173 228 223 180 227 220 173 227 220 173
-226 218 164 227 220 173 226 218 164 226 218 164 226 218 164 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 144 105 46
-86 69 23 54 47 16 53 46 15 44 38 13 41 34 11 30 25 8 30 25 8 19 15 5
-15 13 5 7 6 2 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 0 0 3 2 0 5 3 1 7 4 1 9 5 1 10 7 2 14 7 2 14 7 2
-14 7 2 18 9 0 18 12 3 20 10 0 25 13 4 25 13 4 25 13 4 37 22 6
-25 13 4 37 22 6 37 22 6 37 22 6 37 22 6 37 22 6 51 31 9 37 22 6
-51 31 9 44 30 9 51 31 9 51 31 9 51 31 9 60 33 9 60 33 9 60 33 9
-60 33 9 60 33 9 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11
-79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 84 52 15 79 41 11 84 52 15
-79 41 11 91 54 15 84 52 15 91 54 15 79 41 11 91 54 15 79 41 11 91 54 15
-91 54 15 91 54 15 91 54 15 106 56 16 106 56 16 103 69 20 112 69 20 112 69 20
-110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 127 82 26
-134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 144 105 46 161 154 100 202 194 153
-230 225 190 230 225 190 228 223 180 230 225 190 230 225 190 228 223 180 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 227 220 173 228 223 180 227 220 173 227 220 173 226 218 164
-227 220 173 227 219 152 227 220 173 227 219 152 227 219 152 226 218 164 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 144 131 48
-86 69 23 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 28 21 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 2 2 3 3 2
-5 3 1 5 3 1 5 3 1 5 3 1 5 3 1 5 3 1 3 3 2 3 3 2
-1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-2 1 0 4 2 0 5 3 1 8 5 1 9 5 1 12 7 2 14 7 2 16 8 0
-14 10 4 20 10 0 18 12 3 25 13 4 25 13 4 25 13 4 25 13 4 25 13 4
-37 22 6 25 13 4 37 22 6 37 22 6 37 22 6 51 31 9 37 22 6 51 31 9
-37 22 6 51 31 9 51 31 9 51 31 9 60 33 9 60 33 9 60 33 9 60 33 9
-69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11 79 41 11 79 41 11
-79 41 11 84 52 15 84 52 15 84 52 15 91 54 15 84 52 15 91 54 15 91 54 15
-91 54 15 91 54 15 91 54 15 79 41 11 91 54 15 79 41 11 91 54 15 91 54 15
-91 54 15 91 54 15 91 54 15 106 56 16 106 56 16 112 69 20 112 69 20 110 76 23
-128 71 21 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 140 85 24 145 122 90 161 154 100 226 218 164 230 225 190 230 227 197 230 227 197
-230 226 196 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190
-228 223 180 228 223 180 228 223 180 228 223 180 227 220 173 227 220 173 227 220 173 227 220 173
-227 220 173 226 218 164 227 220 173 227 219 152 226 218 164 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 214 125 227 217 136 144 131 48
-81 65 20 54 47 16 53 46 15 44 38 13 39 33 11 37 32 10 28 21 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 5 3 1 5 4 2
-7 6 2 9 8 4 9 8 4 9 8 4 9 8 4 9 8 4 7 6 2 7 6 2
-5 4 2 5 3 1 5 3 1 3 3 2 3 3 2 2 2 2 2 2 2 1 1 0
-1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 2 1 0
-4 2 0 5 3 1 8 5 1 10 7 2 12 7 2 14 7 2 14 7 2 18 9 0
-18 12 3 25 13 4 25 13 4 24 16 6 25 13 4 37 22 6 37 22 6 37 22 6
-37 22 6 37 22 6 37 22 6 37 22 6 51 31 9 37 22 6 60 33 9 51 31 9
-60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 69 39 11
-69 39 11 69 39 11 79 41 11 79 41 11 76 52 15 76 52 15 84 52 15 84 52 15
-91 54 15 91 54 15 91 54 15 91 54 15 91 54 15 91 54 15 91 54 15 91 54 15
-91 54 15 91 54 15 91 54 15 91 54 15 106 56 16 91 54 15 79 41 11 106 56 16
-79 41 11 106 56 16 106 56 16 91 54 15 106 56 16 112 69 20 112 69 20 128 71 21
-110 76 23 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 140 85 24 134 89 29 134 89 29 134 89 29 144 105 46 161 154 100
-202 194 153 227 220 173 230 227 197 230 227 199 230 227 201 230 227 197 230 227 197 230 226 196
-230 226 196 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 227 220 173 227 220 173 227 219 152
-228 223 180 227 219 152 227 220 173 227 219 152 226 218 164 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 185 141 49
-73 60 27 57 50 17 53 46 15 44 38 13 44 38 13 37 32 10 24 19 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 2 2 2 5 3 1 7 6 2 9 8 4 9 8 4
-9 8 4 14 10 4 14 10 4 14 10 4 14 10 4 14 10 4 14 10 4 9 8 4
-9 8 4 9 8 4 9 8 4 7 6 2 7 6 2 5 4 2 5 4 2 5 3 1
-5 3 1 5 3 1 5 3 1 5 3 1 5 3 1 5 3 1 5 3 1 5 3 1
-7 4 1 10 7 2 12 7 2 14 7 2 14 10 4 18 12 3 18 12 3 25 13 4
-25 13 4 24 16 6 25 13 4 28 21 6 37 22 6 28 21 6 37 22 6 37 22 6
-37 22 6 51 31 9 37 22 6 51 31 9 51 31 9 51 31 9 60 33 9 51 31 9
-60 33 9 60 33 9 60 33 9 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11
-76 52 15 76 52 15 76 52 15 84 52 15 84 52 15 84 52 15 91 54 15 91 54 15
-91 54 15 91 54 15 95 66 20 91 54 15 95 66 20 106 56 16 95 66 20 106 56 16
-91 54 15 106 56 16 91 54 15 106 56 16 91 54 15 91 54 15 106 56 16 79 41 11
-106 56 16 91 54 15 106 56 16 106 56 16 106 56 16 112 69 20 112 69 20 128 71 21
-127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29 140 85 24
-134 89 29 134 89 29 162 99 29 145 122 90 204 179 101 226 218 164 230 227 197 230 226 196
-230 226 196 230 227 201 230 227 201 230 227 199 230 227 198 230 227 197 230 227 197 230 226 196
-230 227 197 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 227 220 173 227 220 173 228 223 180 228 223 180
-227 219 152 227 220 173 226 218 164 226 218 164 227 219 152 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 214 125 226 214 125 161 154 100
-73 60 27 54 47 16 53 46 15 51 43 14 39 33 11 37 32 10 30 25 8 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 3 3 2 5 3 1 7 6 2 9 8 4 14 10 4 15 13 5
-19 15 5 19 15 5 19 15 5 19 15 5 19 15 5 19 15 5 19 15 5 19 15 5
-15 13 5 15 13 5 15 13 5 14 10 4 14 10 4 9 8 4 9 8 4 9 8 4
-9 8 4 9 8 4 9 8 4 9 8 4 7 6 2 9 8 4 9 8 4 9 8 4
-14 10 4 14 10 4 18 12 3 19 15 5 19 15 5 24 16 6 24 16 6 24 16 6
-28 21 6 28 21 6 37 22 6 37 22 6 37 22 6 37 22 6 44 30 9 44 30 9
-51 31 9 51 31 9 51 31 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9
-69 39 11 69 39 11 69 39 11 69 39 11 76 52 15 76 52 15 76 52 15 76 52 15
-84 52 15 84 52 15 91 54 15 91 54 15 91 54 15 95 66 20 95 66 20 95 66 20
-95 66 20 103 69 20 106 56 16 103 69 20 103 69 20 103 69 20 106 56 16 103 69 20
-106 56 16 106 56 16 106 56 16 91 54 15 106 56 16 106 56 16 91 54 15 106 56 16
-106 56 16 106 56 16 106 56 16 106 56 16 112 69 20 112 69 20 112 69 20 128 71 21
-127 82 26 127 82 26 140 85 24 134 89 29 140 85 24 134 89 29 162 99 29 144 131 48
-204 179 101 202 194 153 231 228 208 230 227 203 231 229 213 231 228 209 231 228 208 230 227 203
-230 227 203 230 227 203 230 227 201 230 227 199 230 227 198 230 227 197 230 227 197 230 226 196
-230 225 190 230 226 196 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 228 223 180
-230 225 190 228 223 180 228 223 180 227 220 173 228 223 180 227 220 173 227 219 152 228 223 180
-227 220 173 227 219 152 227 220 173 227 219 152 226 218 164 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 185 141 49
-69 51 16 57 50 16 53 46 15 44 38 13 44 38 13 37 32 10 28 21 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 2 2 2 5 3 1 9 8 4 9 8 4 15 13 5 19 15 5 19 15 5
-22 19 6 24 19 6 24 19 6 28 21 6 24 19 6 28 21 6 24 19 6 24 19 6
-24 19 6 22 19 6 19 15 5 19 15 5 19 15 5 19 15 5 15 13 5 15 13 5
-15 13 5 15 13 5 15 13 5 15 13 5 15 13 5 15 13 5 14 10 4 19 15 5
-19 15 5 19 15 5 24 19 6 24 16 6 28 21 6 28 21 6 30 25 8 37 22 6
-37 22 6 37 28 9 37 28 9 44 30 9 44 30 9 51 31 9 51 31 9 51 31 9
-51 31 9 51 31 9 60 33 9 60 33 9 60 41 12 60 41 12 69 39 11 69 51 16
-69 39 11 69 51 16 76 52 15 76 52 15 76 52 15 84 52 15 84 52 15 91 54 15
-83 60 18 91 54 15 91 54 15 95 66 20 95 66 20 95 66 20 103 69 20 103 69 20
-112 69 20 103 69 20 103 69 20 112 69 20 112 69 20 112 69 20 103 69 20 112 69 20
-112 69 20 103 69 20 106 56 16 106 56 16 91 54 15 106 56 16 106 56 16 106 56 16
-91 54 15 106 56 16 106 56 16 106 56 16 112 69 20 112 69 20 128 71 21 127 82 26
-127 82 26 140 85 24 134 89 29 134 89 29 140 85 24 144 131 48 230 227 203 231 230 218
-231 230 218 231 229 213 231 228 208 231 228 208 231 228 208 231 228 208 231 227 205 230 227 203
-230 227 203 230 227 203 230 227 201 230 227 199 230 227 198 230 227 197 230 226 196 230 226 196
-230 226 196 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 227 220 173 228 223 180 228 223 180 228 223 180
-227 219 152 227 220 173 226 218 164 227 219 152 204 179 101 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 214 125 226 216 132 185 141 49
-62 54 22 54 47 16 53 46 15 51 43 14 39 33 11 37 32 10 30 25 8 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 5 3 1 7 6 2 9 8 4 15 13 5 19 15 5 24 19 6 24 19 6
-30 25 8 30 25 8 30 25 8 37 32 10 30 25 8 37 32 10 30 25 8 30 25 8
-30 25 8 28 21 6 28 21 6 24 19 6 24 19 6 24 19 6 24 19 6 24 19 6
-22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 24 19 6
-28 21 6 28 21 6 30 25 8 30 25 8 37 22 6 37 28 9 37 28 9 44 30 9
-44 30 9 44 30 9 44 30 9 51 31 9 50 39 13 51 31 9 50 39 13 60 41 12
-60 41 12 60 41 12 62 49 15 69 39 11 69 51 16 69 39 11 76 52 15 76 52 15
-76 52 15 84 52 15 84 52 15 83 60 18 83 60 18 91 54 15 83 60 18 95 66 20
-95 66 20 95 66 20 95 66 20 103 69 20 103 69 20 103 69 20 103 69 20 112 69 20
-110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 112 69 20 110 76 23
-112 69 20 112 69 20 112 69 20 112 69 20 106 56 16 106 56 16 106 56 16 106 56 16
-106 56 16 106 56 16 106 56 16 106 56 16 112 69 20 128 71 21 128 71 21 127 82 26
-127 82 26 140 85 24 134 89 29 162 99 29 134 89 29 140 85 24 230 227 197 231 229 213
-231 229 213 231 228 208 231 229 213 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203
-230 227 203 230 227 203 230 227 201 230 227 199 230 227 198 230 227 197 230 227 197 230 226 196
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 227 220 173 227 220 173 227 220 173 227 219 152 228 223 180
-227 219 152 228 223 180 226 214 125 144 105 46 161 154 100 227 219 152 227 219 152 227 219 152
-227 218 146 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 161 154 100
-56 49 15 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 24 19 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-3 3 2 7 6 2 9 8 4 15 13 5 19 15 5 24 19 6 30 25 8 30 25 8
-37 32 10 37 32 10 39 33 11 37 32 10 39 33 11 37 32 10 37 32 10 37 32 10
-37 32 10 37 32 10 30 25 8 37 32 10 30 25 8 30 25 8 30 25 8 30 25 8
-30 25 8 30 25 8 28 21 6 28 21 6 28 21 6 30 25 8 30 25 8 37 28 9
-30 25 8 37 28 9 38 30 10 38 30 10 44 30 9 41 34 11 44 30 9 41 34 11
-50 39 13 50 39 13 60 41 12 50 39 13 60 41 12 60 41 12 60 41 12 60 41 12
-69 51 16 69 51 16 69 51 16 76 52 15 76 52 15 75 57 18 76 52 15 84 52 15
-84 52 15 83 60 18 83 60 18 91 54 15 95 66 20 95 66 20 95 66 20 95 66 20
-95 66 20 103 69 20 103 69 20 110 76 23 103 69 20 110 76 23 110 76 23 110 76 23
-110 76 23 127 82 26 110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 127 82 26
-110 76 23 112 69 20 112 69 20 112 69 20 112 69 20 106 56 16 106 56 16 106 56 16
-106 56 16 106 56 16 106 56 16 112 69 20 128 71 21 112 69 20 128 71 21 127 82 26
-140 85 24 134 89 29 134 89 29 134 89 29 162 99 29 134 89 29 227 220 173 231 229 213
-231 229 213 231 228 209 231 228 208 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203
-230 227 203 230 227 203 230 227 199 230 227 199 230 227 198 230 227 197 230 226 196 230 226 196
-230 226 196 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 227 220 173 228 223 180 228 223 180 227 220 173
-227 219 152 161 154 100 124 87 31 140 85 24 161 154 100 227 219 152 227 219 152 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 214 125 226 214 125 144 131 48
-56 49 15 54 47 16 53 46 15 51 43 14 39 33 11 37 32 10 30 25 8 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2
-5 3 1 9 8 4 15 13 5 19 15 5 24 19 6 30 25 8 30 25 8 37 32 10
-39 33 11 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13
-41 34 11 41 34 11 41 34 11 37 32 10 39 33 11 37 32 10 37 32 10 37 32 10
-30 25 8 37 32 10 37 32 10 37 32 10 37 32 10 37 32 10 37 32 10 37 32 10
-41 34 11 41 34 11 44 38 13 44 38 13 50 39 13 50 39 13 50 39 13 60 41 12
-53 46 15 60 41 12 60 41 12 62 49 15 62 49 15 69 51 16 69 51 16 69 51 16
-76 52 15 76 52 15 76 52 15 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18
-95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 103 69 20 103 69 20 103 69 20
-110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 127 82 26
-110 76 23 127 82 26 127 82 26 124 87 31 127 82 26 124 87 31 127 82 26 110 76 23
-127 82 26 128 71 21 110 76 23 112 69 20 112 69 20 106 56 16 106 56 16 106 56 16
-106 56 16 106 56 16 106 56 16 112 69 20 128 71 21 112 69 20 127 82 26 140 85 24
-140 85 24 140 85 24 162 99 29 134 89 29 134 89 29 162 99 29 202 194 153 224 222 210
-231 228 208 231 229 213 231 228 208 231 228 208 231 228 208 231 228 208 231 227 205 230 227 203
-230 227 203 230 227 201 230 227 199 230 227 199 230 227 197 230 227 197 230 226 196 230 226 196
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 228 223 180
-228 223 180 228 223 180 228 223 180 227 220 173 227 220 173 227 220 173 227 219 152 226 214 125
-144 105 46 140 85 24 140 85 24 134 89 29 161 154 100 227 217 143 227 219 152 227 218 147
-227 218 146 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 144 131 48
-62 54 22 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 24 19 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2
-7 6 2 9 8 4 19 15 5 22 19 6 28 21 6 37 28 9 37 32 10 44 38 13
-44 38 13 51 43 14 51 43 14 53 46 15 53 46 15 51 43 14 51 43 14 51 43 14
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 41 34 11
-44 38 13 41 34 11 39 33 11 39 33 11 39 33 11 44 38 13 44 38 13 44 38 13
-50 39 13 50 39 13 51 43 14 50 39 13 53 46 15 60 41 12 56 47 15 62 49 15
-62 49 15 62 49 15 69 51 16 69 51 16 69 51 16 69 51 16 75 57 18 75 57 18
-75 57 18 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 95 66 20 95 66 20
-95 66 20 95 66 20 103 69 20 95 66 20 103 69 20 110 76 23 103 69 20 110 76 23
-110 76 23 110 76 23 110 76 23 110 76 23 127 82 26 110 76 23 124 87 31 127 82 26
-124 87 31 110 76 23 124 87 31 127 82 26 127 82 26 124 87 31 127 82 26 127 82 26
-127 82 26 127 82 26 128 71 21 112 69 20 128 71 21 112 69 20 112 69 20 106 56 16
-106 56 16 106 56 16 128 71 21 106 56 16 128 71 21 128 71 21 128 71 21 127 82 26
-134 89 29 134 89 29 134 89 29 162 99 29 134 89 29 162 99 29 161 154 100 231 228 209
-231 228 211 231 228 208 231 228 208 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203
-230 227 203 230 227 201 230 227 199 230 227 199 230 227 197 230 227 197 230 227 197 230 225 190
-230 226 196 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 228 223 180 230 225 190
-228 223 180 228 223 180 227 220 173 228 223 180 228 223 180 226 213 140 144 131 48 134 89 29
-134 89 29 134 89 29 134 89 29 140 85 24 204 179 101 227 219 152 227 219 152 227 218 147
-227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 214 125 226 214 125 144 131 48
-57 50 17 56 49 15 54 47 16 44 38 13 37 32 10 37 32 10 30 25 8 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1
-9 8 4 15 13 5 19 15 5 24 19 6 30 25 8 37 32 10 41 34 11 44 38 13
-53 46 15 54 47 16 56 49 15 54 47 16 54 47 16 54 47 16 54 47 16 53 46 15
-54 47 16 53 46 15 53 46 15 51 43 14 51 43 14 44 38 13 51 43 14 44 38 13
-51 43 14 44 38 13 51 43 14 44 38 13 51 43 14 51 43 14 51 43 14 53 46 15
-53 46 15 56 47 15 56 47 15 62 49 15 62 49 15 62 49 15 62 49 15 69 51 16
-69 51 16 69 51 16 75 57 18 75 57 18 75 57 18 83 60 18 83 60 18 83 60 18
-83 60 18 81 65 20 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20
-95 66 20 103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 110 76 23 124 87 31 110 76 23 124 87 31 110 76 23 127 82 26
-127 82 26 136 99 45 145 122 90 161 154 100 202 194 153 145 122 90 134 89 29 134 89 29
-127 82 26 127 82 26 127 82 26 128 71 21 112 69 20 112 69 20 128 71 21 112 69 20
-106 56 16 112 69 20 106 56 16 128 71 21 112 69 20 128 71 21 127 82 26 140 85 24
-140 85 24 140 85 24 162 99 29 134 89 29 162 99 29 144 105 46 161 154 100 231 227 205
-231 228 209 231 228 209 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203 230 227 203
-230 227 203 230 227 201 230 227 199 230 227 198 230 227 197 230 227 197 230 226 196 230 226 196
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 228 223 180
-228 223 180 228 223 180 228 223 180 227 217 143 185 141 49 136 99 45 151 86 24 134 89 29
-134 89 29 134 89 29 134 89 29 134 89 29 202 194 153 227 218 146 227 219 152 227 218 147
-227 218 147 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 226 214 125 136 99 45
-57 50 17 54 47 16 53 46 15 44 38 13 44 38 13 37 32 10 24 19 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2
-14 10 4 19 15 5 24 19 6 30 25 8 37 32 10 39 33 11 44 38 13 51 43 14
-54 47 16 56 49 15 57 50 17 57 50 17 57 50 17 57 50 17 57 50 16 57 50 16
-56 49 15 54 47 16 54 47 16 54 47 16 53 46 15 54 47 16 53 46 15 53 46 15
-53 46 15 53 46 15 51 43 14 53 46 15 54 47 16 54 47 16 56 49 15 56 47 15
-57 50 17 62 49 15 62 49 15 62 49 15 69 51 16 69 51 16 75 57 18 75 57 18
-75 57 18 75 57 18 75 57 18 75 57 18 83 60 18 83 60 18 81 65 20 81 65 20
-95 66 20 86 69 23 95 66 20 86 69 23 95 66 20 95 66 20 103 69 20 103 69 20
-103 69 20 110 76 23 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 124 87 31 144 105 46 161 154 100 161 154 100 202 194 153 201 199 182
-230 228 217 235 234 229 231 230 218 235 234 229 230 228 217 202 194 153 134 89 29 134 89 29
-127 82 26 127 82 26 127 82 26 127 82 26 128 71 21 112 69 20 128 71 21 106 56 16
-128 71 21 106 56 16 128 71 21 112 69 20 128 71 21 128 71 21 128 71 21 140 85 24
-140 85 24 140 85 24 134 89 29 144 105 46 162 99 29 134 89 29 186 112 35 231 228 209
-231 228 211 231 228 209 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203 230 227 203
-230 227 203 230 227 201 230 227 199 230 227 198 230 227 197 230 226 196 230 226 196 230 226 196
-230 225 190 230 225 190 230 225 190 228 223 180 230 225 190 230 225 190 228 223 180 228 223 180
-228 223 180 226 218 164 185 141 49 144 105 46 134 89 29 134 89 29 134 89 29 162 99 29
-134 89 29 134 89 29 134 89 29 134 89 29 226 213 140 227 219 152 227 219 152 227 218 147
-227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 216 132 226 212 108 108 92 44
-57 50 17 56 49 15 53 46 15 44 38 13 37 32 10 37 32 10 28 21 6 22 19 6
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 9 8 4
-14 10 4 19 15 5 24 19 6 30 25 8 39 33 11 44 38 13 51 43 14 53 46 15
-57 50 17 57 50 17 57 50 17 161 154 100 109 103 77 81 65 20 57 50 17 57 50 17
-57 50 17 57 50 17 57 50 17 56 49 15 57 50 17 56 49 15 54 47 16 54 47 16
-54 47 16 56 49 15 56 49 15 57 50 17 56 49 15 57 50 17 62 49 15 62 54 22
-69 51 16 69 51 16 69 51 16 75 57 18 75 57 18 75 57 18 75 57 18 75 57 18
-75 57 18 81 65 20 81 65 20 81 65 20 81 65 20 86 69 23 86 69 23 95 66 20
-86 69 23 95 66 20 95 66 20 95 66 20 103 69 20 103 69 20 86 69 23 110 76 23
-110 76 23 86 69 23 110 76 23 108 92 44 145 122 90 145 122 90 157 154 144 202 194 153
-201 199 182 224 222 210 231 230 218 235 234 229 235 234 229 235 234 229 230 228 217 235 234 229
-231 230 218 235 234 229 231 230 218 235 234 229 230 228 217 201 199 182 134 89 29 134 89 29
-134 89 29 127 82 26 127 82 26 128 71 21 127 82 26 128 71 21 112 69 20 128 71 21
-106 56 16 128 71 21 106 56 16 128 71 21 128 71 21 128 71 21 140 85 24 140 85 24
-134 89 29 162 99 29 140 85 24 162 99 29 162 99 29 162 99 29 144 105 46 230 227 203
-231 228 209 231 228 208 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203 230 227 203
-230 227 201 230 227 199 230 227 199 230 227 197 230 227 197 230 227 197 230 226 196 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 228 223 180 225 216 150
-161 154 100 151 86 24 136 99 45 151 86 24 162 99 29 134 89 29 144 105 46 134 89 29
-134 89 29 134 89 29 134 89 29 144 105 46 227 218 147 227 219 152 227 219 152 227 218 147
-227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 226 214 125 81 65 20
-57 50 17 54 47 16 53 46 15 44 38 13 41 34 11 37 32 10 24 19 6 19 15 5
-15 13 5 7 6 2 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 4 2 9 8 4
-15 13 5 22 19 6 30 25 8 37 32 10 39 33 11 44 38 13 51 43 14 54 47 16
-57 50 17 56 49 15 83 78 45 227 219 152 227 219 152 226 218 150 202 194 153 145 122 90
-109 103 77 83 78 45 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17
-57 50 17 57 50 17 57 50 17 57 50 16 62 54 22 69 51 16 62 54 22 69 51 16
-62 54 22 75 57 18 62 54 22 75 57 18 73 60 27 75 57 18 81 65 20 75 57 18
-81 65 20 81 65 20 83 60 18 83 60 18 86 69 23 86 69 23 95 66 20 86 69 23
-95 66 20 86 69 23 136 99 45 109 103 77 161 154 100 145 122 90 202 194 153 167 167 167
-201 199 182 227 221 188 231 230 218 231 230 218 231 230 218 231 230 218 231 229 213 230 228 217
-231 230 218 230 228 217 235 234 229 230 228 217 230 228 217 230 228 217 235 234 229 231 230 218
-235 234 229 231 230 218 235 234 229 231 230 218 235 234 229 231 230 218 134 89 29 134 89 29
-134 89 29 134 89 29 127 82 26 127 82 26 128 71 21 128 71 21 128 71 21 128 71 21
-106 56 16 128 71 21 106 56 16 128 71 21 128 71 21 128 71 21 127 82 26 140 85 24
-140 85 24 134 89 29 162 99 29 134 89 29 162 99 29 134 89 29 162 99 29 227 220 173
-231 228 209 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203
-230 227 201 230 227 199 230 227 198 230 227 197 230 227 197 230 226 196 230 225 190 230 226 196
-230 225 190 230 225 190 230 225 190 230 225 190 228 223 180 202 194 153 185 141 49 151 86 24
-151 86 24 140 85 24 162 99 29 134 89 29 162 99 29 134 89 29 151 86 24 134 89 29
-162 99 29 134 89 29 162 99 29 144 131 48 227 219 152 227 219 152 227 219 152 227 218 147
-227 218 146 227 217 143 227 217 136 226 216 132 226 216 132 226 214 125 226 212 108 62 54 22
-57 50 17 54 47 16 53 46 15 44 38 13 39 33 11 30 25 8 28 21 6 19 15 5
-14 10 4 7 6 2 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 7 6 2 14 10 4
-19 15 5 24 19 6 30 25 8 37 32 10 44 38 13 44 38 13 54 47 16 54 47 16
-57 50 17 57 50 17 145 122 90 227 218 147 227 219 152 226 217 157 226 218 150 227 219 152
-226 218 164 226 217 157 226 218 164 202 194 153 161 154 100 161 154 100 161 154 100 110 107 92
-145 122 90 110 107 92 108 92 44 83 78 45 108 92 44 83 78 45 108 92 44 108 92 44
-108 92 44 108 92 44 108 92 44 108 92 44 108 92 44 110 107 92 145 122 90 145 122 90
-145 122 90 161 154 100 157 154 144 157 154 144 204 179 101 201 199 182 201 199 182 227 221 188
-231 228 211 231 229 213 231 229 213 231 228 211 231 228 211 231 229 213 224 222 210 231 227 205
-231 229 213 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218
-231 230 218 231 230 218 231 230 218 235 234 229 230 228 217 235 234 229 230 228 217 235 234 229
-230 228 217 235 234 229 230 228 217 235 234 229 231 230 218 235 234 229 144 131 48 134 89 29
-134 89 29 140 85 24 134 89 29 127 82 26 127 82 26 128 71 21 112 69 20 128 71 21
-128 71 21 106 56 16 128 71 21 128 71 21 128 71 21 128 71 21 140 85 24 140 85 24
-140 85 24 162 99 29 134 89 29 162 99 29 144 131 48 162 99 29 162 99 29 202 194 153
-224 222 210 231 228 208 231 228 208 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203
-230 227 201 230 227 199 230 227 198 230 227 197 230 227 197 230 226 196 230 226 196 230 225 190
-230 225 190 230 225 190 227 220 173 204 179 101 144 105 46 162 99 29 136 99 45 162 99 29
-144 105 46 162 99 29 134 89 29 162 99 29 134 89 29 162 99 29 134 89 29 162 99 29
-134 89 29 134 89 29 134 89 29 161 154 100 227 219 152 227 219 152 227 219 152 227 218 146
-227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 212 108 54 47 16
-57 50 17 54 47 16 51 43 14 44 38 13 39 33 11 30 25 8 28 21 6 17 15 7
-14 10 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 14 10 4
-17 15 7 28 21 6 30 25 8 37 32 10 44 38 13 51 43 14 54 47 16 57 50 16
-57 50 17 57 50 16 161 154 100 227 219 152 227 219 152 227 219 152 226 218 164 226 218 164
-226 218 164 226 218 164 226 218 164 227 220 173 230 225 190 228 223 180 228 223 180 228 223 180
-228 223 180 228 223 180 228 223 180 230 225 190 230 225 190 230 226 196 227 221 188 230 226 196
-230 227 197 230 227 199 230 227 203 230 227 203 230 227 201 230 227 197 230 227 199 230 227 199
-230 227 203 230 227 201 230 227 197 231 227 205 224 222 210 224 222 210 230 227 203 231 227 205
-231 228 208 231 228 209 231 228 211 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213
-231 229 216 231 229 216 231 229 216 231 230 218 231 229 216 231 230 218 231 230 218 231 230 218
-231 230 218 231 230 218 231 230 218 231 230 218 230 228 217 230 228 217 235 234 229 230 228 217
-231 230 218 231 230 218 230 228 217 235 234 229 231 230 218 235 234 229 161 154 100 134 89 29
-134 89 29 134 89 29 140 85 24 140 85 24 140 85 24 127 82 26 128 71 21 128 71 21
-128 71 21 128 71 21 128 71 21 128 71 21 128 71 21 128 71 21 140 85 24 140 85 24
-151 86 24 134 89 29 162 99 29 162 99 29 162 99 29 162 99 29 144 105 46 204 179 101
-231 228 208 231 228 208 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 201
-230 227 199 230 227 199 230 227 197 230 227 197 230 227 197 230 225 190 230 226 196 230 225 190
-202 194 153 161 154 100 162 99 29 144 105 46 162 99 29 162 99 29 151 86 24 162 99 29
-162 99 29 134 89 29 162 99 29 144 105 46 134 89 29 162 99 29 144 105 46 134 89 29
-162 99 29 134 89 29 162 99 29 204 179 101 227 219 152 227 219 152 227 218 147 227 218 146
-227 217 143 227 217 143 227 217 136 226 216 132 226 216 132 226 212 108 204 179 101 56 49 15
-57 50 16 54 47 16 51 43 14 44 38 13 39 33 11 30 25 8 24 19 6 19 15 5
-14 10 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 3 1 9 8 4 15 13 5
-22 19 6 28 21 6 37 32 10 39 33 11 44 38 13 53 46 15 56 49 15 57 50 17
-57 50 17 57 50 17 204 179 101 226 217 157 227 219 152 226 217 157 227 219 152 226 218 164
-226 218 164 226 218 164 227 220 173 226 218 164 227 220 173 227 220 173 228 223 180 227 220 173
-228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180 230 225 190 227 221 188
-230 225 190 227 221 188 230 227 197 230 226 196 230 227 197 230 227 197 230 227 197 230 227 199
-230 227 199 230 227 201 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205 231 228 208
-231 228 208 231 228 208 231 228 209 231 228 211 231 228 211 231 228 211 231 229 213 231 229 213
-231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218 231 230 218
-231 230 218 231 230 218 235 234 229 230 228 217 235 234 229 230 228 217 230 228 217 231 230 218
-235 234 229 230 228 217 235 234 229 230 228 217 231 230 218 235 234 229 202 194 153 140 85 24
-134 89 29 140 85 24 134 89 29 127 82 26 140 85 24 128 71 21 128 71 21 128 71 21
-128 71 21 128 71 21 106 56 16 128 71 21 128 71 21 128 71 21 140 85 24 140 85 24
-151 86 24 162 99 29 140 85 24 162 99 29 162 99 29 162 99 29 162 99 29 161 154 100
-231 229 216 231 228 208 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 201
-230 227 199 230 227 198 230 227 197 230 227 197 230 226 196 227 220 173 204 179 101 185 141 49
-162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 144 105 46 162 99 29 134 89 29
-162 99 29 162 99 29 134 89 29 162 99 29 162 99 29 134 89 29 162 99 29 134 89 29
-162 99 29 134 89 29 134 89 29 226 215 145 227 219 152 227 219 152 227 218 147 227 218 146
-227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 226 214 125 144 131 48 62 54 22
-54 47 16 54 47 16 51 43 14 44 38 13 37 32 10 30 25 8 24 19 6 17 15 7
-9 8 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 5 4 2 9 8 4 15 13 5
-22 19 6 28 25 13 37 32 10 44 38 13 44 38 13 53 46 15 57 50 16 57 50 17
-57 50 16 51 48 25 161 154 100 227 219 152 227 219 152 227 219 152 226 218 164 227 219 152
-226 218 164 226 218 164 226 218 164 227 220 173 227 220 173 227 220 173 227 220 173 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 230 225 190 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 227 197 230 227 197 230 227 197 230 227 198
-230 227 199 230 227 201 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205 231 228 208
-231 228 208 231 228 208 231 228 209 231 228 211 231 228 211 231 228 211 231 229 213 231 229 213
-231 229 213 231 229 216 231 229 216 231 229 216 231 230 218 231 229 216 231 229 216 231 230 218
-231 230 218 231 230 218 231 230 218 230 228 217 230 228 217 231 230 218 230 228 217 235 234 229
-231 230 218 230 228 217 230 228 217 235 234 229 230 228 217 230 228 217 205 205 205 151 86 24
-134 89 29 134 89 29 140 85 24 140 85 24 140 85 24 127 82 26 140 85 24 128 71 21
-128 71 21 128 71 21 128 71 21 128 71 21 128 71 21 140 85 24 140 85 24 140 85 24
-151 86 24 134 89 29 162 99 29 162 99 29 162 99 29 162 99 29 144 105 46 185 141 49
-231 228 208 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 201 230 227 199
-230 227 199 230 226 196 227 221 188 202 194 153 185 141 49 162 99 29 162 99 29 144 105 46
-162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 144 105 46
-162 99 29 134 89 29 162 99 29 162 99 29 134 89 29 162 99 29 134 89 29 162 99 29
-134 89 29 162 99 29 144 105 46 227 219 152 227 219 152 227 219 152 227 218 147 227 218 146
-227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 214 125 144 131 48 57 50 17
-57 50 16 53 46 15 44 38 13 44 38 13 37 32 10 30 25 8 24 19 6 15 13 5
-9 8 4 5 4 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 9 8 4 15 13 5
-24 19 6 30 25 8 37 32 10 39 33 11 51 43 14 54 47 16 57 50 17 57 50 17
-73 60 27 57 50 16 109 103 77 227 218 146 227 219 152 227 219 152 226 218 164 226 218 164
-226 218 164 227 220 173 226 218 164 227 220 173 227 220 173 227 220 173 228 223 180 227 220 173
-228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180 230 225 190 228 223 180
-230 225 190 230 225 190 230 227 197 230 226 196 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 199 230 227 199 230 227 201 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205
-231 228 208 231 228 208 231 228 208 231 228 209 231 228 211 231 228 211 231 228 211 231 229 213
-231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218 231 229 216
-231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 230 228 217
-231 230 218 235 234 229 230 228 217 230 228 217 231 230 218 231 230 218 231 229 216 144 105 46
-151 86 24 134 89 29 134 89 29 140 85 24 140 85 24 140 85 24 128 71 21 128 71 21
-128 71 21 128 71 21 128 71 21 128 71 21 128 71 21 140 85 24 140 85 24 140 85 24
-151 86 24 162 99 29 162 99 29 162 99 29 144 131 48 162 99 29 175 102 28 185 141 49
-230 228 217 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 201 227 221 188
-202 194 153 185 141 49 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29
-162 99 29 162 99 29 144 105 46 162 99 29 162 99 29 134 89 29 162 99 29 162 99 29
-134 89 29 162 99 29 144 105 46 162 99 29 162 99 29 144 131 48 140 85 24 162 99 29
-134 89 29 162 99 29 185 141 49 226 218 164 227 219 152 227 219 152 227 218 146 227 218 146
-227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 212 108 108 92 44 51 48 25
-56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 30 25 8 22 19 6 15 13 5
-9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 9 8 4 19 15 5
-22 19 6 30 25 8 37 32 10 44 38 13 51 43 14 54 47 16 57 50 17 57 50 17
-73 60 27 86 69 23 62 54 22 226 213 140 227 219 152 227 219 152 227 219 152 227 219 152
-226 218 164 227 219 152 227 220 173 226 218 164 226 218 164 227 220 173 227 220 173 227 220 173
-228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 227 197 230 227 197 230 227 197
-230 227 198 230 227 199 230 227 199 230 227 201 230 227 203 230 227 203 231 227 205 231 227 205
-231 227 205 231 228 208 231 228 208 231 228 208 231 228 209 231 228 211 231 228 211 231 228 211
-231 229 213 231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 216 231 229 216 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218
-231 230 218 230 228 217 231 230 218 231 230 218 231 230 218 231 230 218 231 229 213 145 122 90
-162 99 29 134 89 29 162 99 29 134 89 29 140 85 24 140 85 24 140 85 24 128 71 21
-140 85 24 128 71 21 128 71 21 128 71 21 140 85 24 128 71 21 140 85 24 151 86 24
-151 86 24 140 85 24 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29
-230 227 203 231 227 205 231 227 205 231 227 205 227 220 173 202 194 153 161 154 100 162 99 29
-162 99 29 186 112 35 162 99 29 162 99 29 186 112 35 162 99 29 162 99 29 162 99 29
-162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 134 89 29 162 99 29
-162 99 29 162 99 29 162 99 29 134 89 29 162 99 29 140 85 24 162 99 29 144 105 46
-162 99 29 136 99 45 204 179 101 227 219 152 227 219 152 226 218 150 227 218 146 227 217 143
-227 217 143 227 217 136 226 216 132 226 216 132 226 214 125 226 212 108 62 54 22 57 50 16
-54 47 16 53 46 15 44 38 13 39 33 11 30 25 8 28 21 6 19 15 5 15 13 5
-9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 9 8 4 19 15 5
-22 19 6 30 25 8 37 32 10 41 34 11 51 43 14 54 47 16 57 50 17 57 50 17
-57 50 17 108 92 44 51 48 25 108 92 44 227 219 152 227 219 152 226 218 164 227 219 152
-226 218 164 227 220 173 227 219 152 228 223 180 227 220 173 227 220 173 227 220 173 228 223 180
-227 220 173 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180 230 225 190
-230 225 190 230 225 190 230 225 190 230 227 197 230 225 190 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 199 230 227 199 230 227 201 230 227 203 230 227 203 230 227 203 231 227 205
-231 227 205 231 228 208 231 228 208 231 228 208 231 228 209 231 228 209 231 228 211 231 228 211
-231 228 211 231 229 213 231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 216 231 230 218 231 229 216 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218
-231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 204 179 101
-134 89 29 134 89 29 134 89 29 140 85 24 134 89 29 140 85 24 140 85 24 140 85 24
-128 71 21 128 71 21 128 71 21 128 71 21 128 71 21 151 86 24 140 85 24 151 86 24
-151 86 24 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 175 102 28 162 99 29
-227 221 188 201 199 182 204 179 101 185 141 49 162 99 29 175 102 28 175 102 28 175 102 28
-175 102 28 144 105 46 186 112 35 162 99 29 144 131 48 175 102 28 162 99 29 162 99 29
-162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 134 89 29
-162 99 29 134 89 29 162 99 29 162 99 29 134 89 29 162 99 29 162 99 29 134 89 29
-162 99 29 144 105 46 227 217 143 226 217 157 227 219 152 227 218 147 227 218 146 227 217 143
-227 217 143 227 217 136 226 216 132 226 214 125 226 214 125 204 179 101 57 50 17 57 50 17
-56 49 15 53 46 15 44 38 13 39 33 11 37 32 10 24 19 6 19 15 5 15 13 5
-9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 9 8 4 15 13 5
-22 19 6 30 25 8 37 32 10 39 33 11 51 43 14 53 46 15 57 50 16 57 50 16
-57 50 16 109 103 77 57 50 17 57 50 17 145 122 90 227 219 152 227 219 152 226 218 164
-227 219 152 227 219 152 227 220 173 227 219 152 228 223 180 227 219 152 227 220 173 227 220 173
-228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180 230 225 190
-228 223 180 230 225 190 230 225 190 230 225 190 230 225 190 230 226 196 230 226 196 230 227 197
-230 227 197 230 227 198 230 227 199 230 227 199 230 227 201 230 227 203 230 227 203 230 227 203
-231 227 205 231 227 205 231 228 208 231 228 208 231 228 208 231 228 209 231 228 211 231 228 211
-231 228 211 231 228 211 231 229 213 231 229 213 231 229 213 231 229 213 231 229 216 231 229 216
-231 229 216 231 229 216 231 229 216 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218
-231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 229 216 201 199 182
-134 89 29 162 99 29 134 89 29 162 99 29 140 85 24 140 85 24 140 85 24 140 85 24
-151 86 24 128 71 21 151 86 24 128 71 21 151 86 24 128 71 21 151 86 24 140 85 24
-162 99 29 140 85 24 162 99 29 162 99 29 175 102 28 144 131 48 186 112 35 144 105 46
-186 112 35 175 102 28 162 99 29 186 112 35 162 99 29 186 112 35 162 99 29 186 112 35
-162 99 29 186 112 35 162 99 29 175 102 28 175 102 28 162 99 29 162 99 29 162 99 29
-162 99 29 162 99 29 162 99 29 134 89 29 162 99 29 134 89 29 162 99 29 162 99 29
-162 99 29 162 99 29 134 89 29 162 99 29 162 99 29 140 85 24 144 131 48 162 99 29
-162 99 29 144 131 48 227 219 152 227 219 152 227 219 152 227 218 147 227 218 146 227 217 143
-227 217 136 227 217 136 226 216 132 226 214 125 226 212 108 161 154 100 57 50 17 57 50 16
-54 47 16 51 43 14 44 38 13 37 32 10 30 25 8 24 19 6 19 15 5 14 10 4
-7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 4 2 9 8 4 15 13 5
-22 19 6 30 25 8 37 32 10 44 38 13 44 38 13 54 47 16 57 50 16 57 50 17
-57 50 16 109 103 77 81 65 20 57 50 16 57 50 16 109 103 77 227 219 152 227 219 152
-226 218 164 227 220 173 227 219 152 228 223 180 227 219 152 228 223 180 228 223 180 227 220 173
-227 220 173 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180
-230 225 190 230 225 190 230 225 190 230 225 190 230 226 196 230 225 190 230 226 196 230 226 196
-230 227 197 230 227 197 230 227 198 230 227 199 230 227 201 230 227 203 230 227 203 230 227 203
-231 227 205 231 227 205 231 227 205 231 228 208 231 228 208 231 228 208 231 228 209 231 228 211
-231 228 211 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213 231 229 213 231 229 216
-231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218 230 228 217 231 230 218
-231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 230 218 231 229 216 230 227 203
-162 99 29 134 89 29 162 99 29 134 89 29 140 85 24 151 86 24 140 85 24 140 85 24
-128 71 21 151 86 24 128 71 21 128 71 21 151 86 24 128 71 21 151 86 24 151 86 24
-151 86 24 162 99 29 162 99 29 162 99 29 162 99 29 175 102 28 162 99 29 186 112 35
-162 99 29 186 112 35 162 99 29 186 112 35 144 105 46 186 112 35 162 99 29 186 112 35
-144 131 48 175 102 28 162 99 29 175 102 28 162 99 29 175 102 28 162 99 29 162 99 29
-162 99 29 162 99 29 162 99 29 162 99 29 151 86 24 162 99 29 151 86 24 162 99 29
-134 89 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 134 89 29
-162 99 29 204 179 101 227 219 152 227 219 152 226 218 150 227 218 146 227 218 146 227 217 143
-227 217 136 227 217 136 226 214 125 226 214 125 226 212 108 136 99 45 56 49 15 57 50 16
-53 46 15 44 38 13 44 38 13 37 32 10 30 25 8 24 19 6 17 15 7 9 8 4
-7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 15 13 5
-19 15 5 30 25 8 30 25 8 44 38 13 44 38 13 53 46 15 57 50 16 57 50 16
-57 50 16 86 69 23 109 103 77 57 50 16 57 50 16 62 54 22 86 69 23 202 194 153
-227 219 152 227 219 152 227 219 152 228 223 180 227 219 152 228 223 180 227 219 152 227 220 173
-228 223 180 227 220 173 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 226 196 230 226 196
-230 227 197 230 227 197 230 227 198 230 227 199 230 227 199 230 227 201 230 227 203 230 227 203
-230 227 203 231 227 205 231 227 205 231 227 205 231 228 208 231 228 208 231 228 208 231 228 209
-231 228 211 231 228 211 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213 231 229 213
-231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 230 228 217 231 230 218 231 230 218
-144 131 48 162 99 29 134 89 29 162 99 29 162 99 29 140 85 24 151 86 24 140 85 24
-140 85 24 151 86 24 128 71 21 151 86 24 128 71 21 140 85 24 151 86 24 151 86 24
-151 86 24 151 86 24 162 99 29 162 99 29 162 99 29 175 102 28 175 102 28 144 131 48
-186 112 35 175 102 28 144 131 48 162 99 29 175 102 28 175 102 28 175 102 28 162 99 29
-175 102 28 175 102 28 162 99 29 175 102 28 162 99 29 162 99 29 162 99 29 162 99 29
-162 99 29 162 99 29 162 99 29 151 86 24 162 99 29 151 86 24 162 99 29 140 85 24
-162 99 29 162 99 29 162 99 29 162 99 29 140 85 24 144 131 48 162 99 29 162 99 29
-162 99 29 226 215 145 227 219 152 227 219 152 227 218 147 227 218 146 227 217 143 227 217 143
-227 217 136 226 216 132 226 214 125 226 214 125 226 212 108 86 69 23 57 50 16 56 49 15
-54 47 16 44 38 13 41 34 11 37 32 10 30 25 8 22 19 6 15 13 5 9 8 4
-5 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 15 13 5
-19 15 5 28 21 6 37 32 10 37 32 10 44 38 13 53 46 15 54 47 16 57 50 17
-57 50 16 57 50 16 161 154 100 57 50 16 57 50 16 57 50 16 62 54 22 57 50 16
-109 103 77 226 216 132 226 218 164 226 218 164 227 220 173 227 219 152 228 223 180 228 223 180
-227 219 152 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190
-228 223 180 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 226 196 230 225 190
-230 226 196 230 227 197 230 227 197 230 227 198 230 227 199 230 227 199 230 227 201 230 227 203
-230 227 203 230 227 203 231 227 205 231 227 205 231 227 205 231 228 208 231 228 208 231 228 208
-231 228 209 231 228 209 231 228 211 231 228 211 231 228 211 231 228 211 231 229 213 231 229 213
-231 229 213 231 229 213 231 229 213 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216
-231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 230 218
-161 154 100 162 99 29 144 105 46 140 85 24 134 89 29 162 99 29 140 85 24 140 85 24
-151 86 24 128 71 21 151 86 24 128 71 21 151 86 24 128 71 21 151 86 24 151 86 24
-151 86 24 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 175 102 28 175 102 28
-175 102 28 175 102 28 186 112 35 186 112 35 162 99 29 186 112 35 144 131 48 175 102 28
-175 102 28 162 99 29 175 102 28 162 99 29 175 102 28 162 99 29 162 99 29 162 99 29
-162 99 29 151 86 24 151 86 24 151 86 24 162 99 29 151 86 24 162 99 29 162 99 29
-162 99 29 134 89 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 134 89 29
-185 141 49 226 218 164 227 219 152 226 218 150 227 218 147 227 218 146 227 217 143 227 217 143
-227 217 136 226 216 132 226 214 125 226 212 108 204 179 101 57 50 17 57 50 17 56 49 15
-53 46 15 44 38 13 41 34 11 37 32 10 22 19 6 22 19 6 15 13 5 10 7 2
-5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 14 10 4
-19 15 5 24 19 6 30 25 8 39 33 11 44 38 13 44 38 13 56 49 15 57 50 16
-57 50 16 56 49 15 161 154 100 83 78 45 57 50 16 57 50 16 57 50 16 57 50 16
-56 49 15 56 49 15 87 85 74 204 179 101 227 219 152 228 223 180 227 219 152 227 220 173
-228 223 180 227 220 173 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180
-228 223 180 230 225 190 228 223 180 230 225 190 230 225 190 230 225 190 230 225 190 230 226 196
-230 226 196 230 227 197 230 227 197 230 227 197 230 227 198 230 227 199 230 227 199 230 227 201
-230 227 203 230 227 203 230 227 203 231 227 205 231 227 205 231 227 205 231 228 208 231 228 208
-231 228 208 231 228 209 231 228 209 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211
-231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 216
-231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216 231 229 216
-202 194 153 134 89 29 162 99 29 162 99 29 162 99 29 151 86 24 151 86 24 151 86 24
-140 85 24 151 86 24 151 86 24 151 86 24 128 71 21 151 86 24 151 86 24 151 86 24
-151 86 24 151 86 24 162 99 29 162 99 29 162 99 29 186 112 35 162 99 29 175 102 28
-162 99 29 186 112 35 162 99 29 175 102 28 162 99 29 175 102 28 175 102 28 175 102 28
-175 102 28 162 99 29 175 102 28 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29
-151 86 24 164 89 24 151 86 24 162 99 29 151 86 24 151 86 24 162 99 29 140 85 24
-162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 144 131 48
-204 179 101 227 219 152 227 219 152 226 218 150 227 218 146 227 218 146 227 217 143 227 217 136
-226 216 132 226 216 132 226 214 125 226 214 125 144 131 48 57 50 17 57 50 16 54 47 16
-51 43 14 44 38 13 39 33 11 30 25 8 24 19 6 19 15 5 14 10 4 7 6 2
-5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 9 8 4
-19 15 5 24 19 6 30 25 8 37 32 10 44 38 13 51 43 14 54 47 16 57 50 16
-57 50 16 57 50 16 108 92 44 144 131 48 62 54 22 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 57 50 16 62 54 22 109 103 77 204 179 101 226 218 164
-227 220 173 227 220 173 227 220 173 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190
-230 225 190 228 223 180 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 226 196
-230 225 190 230 226 196 230 227 197 230 227 197 230 227 197 230 227 199 230 227 199 230 227 201
-230 227 201 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205 231 227 205 231 228 208
-231 228 208 231 228 208 231 228 208 231 228 209 231 228 209 231 228 211 231 228 211 231 228 211
-231 228 211 231 228 211 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213
-231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213
-227 221 188 162 99 29 144 105 46 134 89 29 162 99 29 134 89 29 162 99 29 140 85 24
-151 86 24 140 85 24 128 71 21 151 86 24 151 86 24 151 86 24 128 71 21 164 89 24
-151 86 24 164 89 24 151 86 24 162 99 29 162 99 29 162 99 29 175 102 28 162 99 29
-186 112 35 162 99 29 175 102 28 175 102 28 175 102 28 175 102 28 162 99 29 175 102 28
-162 99 29 175 102 28 162 99 29 162 99 29 162 99 29 162 99 29 164 89 24 164 89 24
-164 89 24 151 86 24 164 89 24 151 86 24 164 89 24 151 86 24 162 99 29 151 86 24
-162 99 29 162 99 29 162 99 29 162 99 29 144 131 48 162 99 29 162 99 29 162 99 29
-227 219 152 226 217 157 227 219 152 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136
-226 216 132 226 214 125 226 214 125 226 212 108 108 92 44 62 54 22 57 50 16 54 47 16
-44 38 13 44 38 13 37 32 10 30 25 8 24 19 6 19 15 5 14 10 4 5 4 2
-3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 4 2 9 8 4
-15 13 5 22 19 6 30 25 8 37 32 10 39 33 11 44 38 13 53 46 15 57 50 16
-57 50 16 57 50 16 62 54 22 202 194 153 62 54 22 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 57 50 16 62 54 22 57 50 16 57 50 16 57 50 16
-83 78 45 145 122 90 161 154 100 202 194 153 228 223 180 228 223 180 228 223 180 228 223 180
-228 223 180 230 225 190 230 225 190 228 223 180 230 225 190 230 225 190 230 225 190 230 225 190
-230 226 196 230 226 196 230 226 196 230 227 197 230 227 197 230 227 198 230 227 199 230 227 199
-230 227 201 230 227 201 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205 231 227 205
-231 228 208 231 228 208 231 228 208 231 228 208 231 228 209 231 228 209 231 228 211 231 228 211
-231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 229 213 231 229 213 231 229 213
-231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 229 213 231 228 211
-231 228 211 144 131 48 162 99 29 162 99 29 162 99 29 162 99 29 151 86 24 151 86 24
-151 86 24 151 86 24 151 86 24 151 86 24 128 71 21 151 86 24 151 86 24 151 86 24
-151 86 24 151 86 24 164 89 24 162 99 29 175 102 28 162 99 29 162 99 29 175 102 28
-162 99 29 175 102 28 162 99 29 175 102 28 162 99 29 175 102 28 175 102 28 162 99 29
-175 102 28 162 99 29 175 102 28 162 99 29 174 92 24 164 89 24 164 89 24 164 89 24
-164 89 24 164 89 24 151 86 24 164 89 24 151 86 24 162 99 29 151 86 24 162 99 29
-162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 204 179 101
-227 219 152 227 219 152 226 218 150 227 218 146 227 218 146 227 217 143 227 217 136 227 217 136
-226 216 132 226 214 125 226 212 108 226 212 108 62 54 22 57 50 17 57 50 16 54 47 16
-44 38 13 39 33 11 37 32 10 30 25 8 22 19 6 15 13 5 9 8 4 5 4 2
-2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 9 8 4
-15 13 5 19 15 5 28 21 6 30 25 8 39 33 11 44 38 13 53 46 15 53 46 15
-57 50 17 57 50 16 57 50 16 161 154 100 108 92 44 62 54 22 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 17 57 50 16
-62 54 22 75 57 18 75 57 18 75 57 18 75 57 18 108 92 44 109 103 77 145 122 90
-161 154 100 202 194 153 202 194 153 226 218 164 227 221 188 230 225 190 230 225 190 230 225 190
-230 225 190 230 226 196 230 225 190 230 226 196 230 227 197 230 227 197 230 227 198 230 227 199
-230 227 199 230 227 201 230 227 201 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205
-231 227 205 231 228 208 231 228 208 231 228 208 227 221 188 201 199 182 201 199 182 227 220 173
-231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211
-231 228 211 231 229 213 231 228 211 231 229 213 231 229 213 231 229 213 231 228 211 231 229 213
-231 228 211 161 154 100 162 99 29 134 89 29 162 99 29 134 89 29 162 99 29 151 86 24
-151 86 24 151 86 24 151 86 24 151 86 24 151 86 24 151 86 24 151 86 24 151 86 24
-164 89 24 164 89 24 164 89 24 164 89 24 162 99 29 162 99 29 175 102 28 162 99 29
-175 102 28 175 102 28 175 102 28 175 102 28 175 102 28 162 99 29 175 102 28 162 99 29
-174 92 24 174 92 24 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24
-151 86 24 164 89 24 151 86 24 164 89 24 164 89 24 164 89 24 162 99 29 162 99 29
-162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29 144 131 48 226 214 125
-226 217 157 227 219 152 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136
-226 216 132 226 214 125 226 212 108 161 154 100 56 49 15 57 50 16 56 49 15 53 46 15
-44 38 13 37 32 10 37 32 10 22 19 6 22 19 6 14 10 4 9 8 4 5 3 1
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2
-14 10 4 15 13 5 30 25 8 30 25 8 37 32 10 44 38 13 51 43 14 54 47 16
-57 50 16 57 50 16 62 54 22 108 92 44 204 179 101 62 54 22 57 50 17 57 50 17
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 16 57 50 16 62 54 22
-62 49 15 57 50 16 57 50 16 57 50 16 75 57 18 62 54 22 81 65 20 81 65 20
-81 65 20 75 57 18 75 57 18 75 57 18 81 65 20 95 66 20 109 103 77 108 92 44
-108 92 44 145 122 90 145 122 90 145 122 90 145 122 90 161 154 100 145 122 90 145 122 90
-161 154 100 145 122 90 161 154 100 145 122 90 161 154 100 145 122 90 136 99 45 145 122 90
-144 105 46 136 99 45 127 82 26 110 76 23 127 82 26 127 82 26 127 82 26 161 154 100
-231 228 209 231 228 209 231 228 209 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211
-231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211
-231 227 205 202 194 153 162 99 29 162 99 29 162 99 29 162 99 29 151 86 24 162 99 29
-151 86 24 151 86 24 164 89 24 128 71 21 164 89 24 128 71 21 151 86 24 151 86 24
-151 86 24 151 86 24 164 89 24 164 89 24 164 89 24 162 99 29 162 99 29 175 102 28
-162 99 29 175 102 28 162 99 29 175 102 28 162 99 29 175 102 28 175 102 28 174 92 24
-174 92 24 162 99 29 174 92 24 174 92 24 164 89 24 164 89 24 164 89 24 164 89 24
-164 89 24 164 89 24 164 89 24 164 89 24 164 89 24 162 99 29 162 99 29 162 99 29
-162 99 29 162 99 29 175 102 28 144 131 48 162 99 29 162 99 29 185 141 49 226 217 157
-227 219 152 226 218 150 227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132
-226 214 125 226 214 125 226 212 108 108 92 44 56 49 15 56 49 15 53 46 15 51 43 14
-44 38 13 37 32 10 30 25 8 24 19 6 19 15 5 14 10 4 7 6 2 3 3 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 4 2
-9 8 4 15 13 5 22 19 6 30 25 8 37 32 10 44 38 13 44 38 13 53 46 15
-56 49 15 57 50 17 57 50 17 62 54 22 226 213 140 108 92 44 51 48 25 57 50 16
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 62 54 22 57 50 16
-62 54 22 75 57 18 62 54 22 75 57 18 62 54 22 75 57 18 75 57 18 62 54 22
-75 57 18 81 65 20 75 57 18 81 65 20 81 65 20 81 65 20 86 69 23 95 66 20
-86 69 23 86 69 23 95 66 20 86 69 23 103 69 20 95 66 20 103 69 20 110 76 23
-103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 124 87 31 110 76 23 124 87 31 127 82 26 127 82 26 127 82 26 136 99 45
-231 228 209 231 228 208 231 228 208 231 228 209 231 228 209 231 228 209 231 228 209 231 228 211
-231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211 231 228 211
-231 228 211 227 221 188 162 99 29 162 99 29 144 105 46 162 99 29 162 99 29 151 86 24
-162 99 29 151 86 24 151 86 24 151 86 24 151 86 24 164 89 24 151 86 24 151 86 24
-164 89 24 151 86 24 164 89 24 164 89 24 164 89 24 174 92 24 174 92 24 174 92 24
-175 102 28 175 102 28 175 102 28 174 92 24 175 102 28 174 92 24 174 92 24 174 92 24
-164 89 24 174 92 24 174 92 24 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24
-164 89 24 164 89 24 164 89 24 164 89 24 162 99 29 162 99 29 162 99 29 175 102 28
-162 99 29 175 102 28 162 99 29 175 102 28 175 102 28 144 131 48 226 213 140 225 216 150
-227 219 152 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 214 125
-226 214 125 226 212 108 204 179 101 57 50 16 56 49 15 56 49 15 53 46 15 44 38 13
-44 38 13 37 32 10 30 25 8 22 19 6 15 13 5 9 8 4 5 4 2 2 2 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1
-9 8 4 15 13 5 22 19 6 22 19 6 37 32 10 37 32 10 44 38 13 53 46 15
-54 47 16 57 50 17 57 50 16 51 48 25 145 122 90 204 179 101 57 50 16 57 50 17
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 62 49 15 62 54 22 69 51 16 62 54 22 75 57 18 81 65 20
-75 57 18 75 57 18 81 65 20 81 65 20 81 65 20 83 60 18 81 65 20 86 69 23
-95 66 20 86 69 23 95 66 20 86 69 23 103 69 20 86 69 23 110 76 23 86 69 23
-103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 124 87 31 110 76 23 124 87 31 110 76 23 124 87 31 127 82 26 134 89 29
-201 199 182 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 209
-231 228 209 231 228 209 231 228 209 231 228 209 231 228 209 231 228 209 231 228 209 231 228 209
-231 228 209 231 227 205 144 131 48 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29
-151 86 24 151 86 24 151 86 24 164 89 24 151 86 24 151 86 24 151 86 24 151 86 24
-151 86 24 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24 174 92 24
-164 89 24 174 92 24 164 89 24 174 92 24 174 92 24 174 92 24 164 89 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 164 89 24 174 92 24 164 89 24 164 89 24
-164 89 24 164 89 24 164 89 24 174 92 24 162 99 29 175 102 28 162 99 29 175 102 28
-162 99 29 175 102 28 175 102 28 144 131 48 175 102 28 185 141 49 225 216 150 227 219 152
-226 218 150 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125
-226 214 125 226 212 108 144 131 48 57 50 16 57 50 16 54 47 16 53 46 15 44 38 13
-37 32 10 37 32 10 24 19 6 22 19 6 15 13 5 9 8 4 5 3 1 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1
-7 6 2 14 10 4 19 15 5 24 19 6 30 25 8 37 32 10 44 38 13 44 38 13
-56 49 15 57 50 16 57 50 16 57 50 16 83 78 45 227 217 143 108 92 44 62 54 22
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 17 57 50 16 57 50 16 57 50 16
-62 54 22 57 50 16 62 49 15 62 49 15 62 49 15 75 57 18 57 50 16 75 57 18
-75 57 18 75 57 18 75 57 18 81 65 20 83 60 18 81 65 20 81 65 20 86 69 23
-86 69 23 86 69 23 95 66 20 95 66 20 95 66 20 103 69 20 86 69 23 110 76 23
-103 69 20 110 76 23 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-124 87 31 110 76 23 124 87 31 110 76 23 124 87 31 127 82 26 124 87 31 127 82 26
-204 179 101 224 222 210 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208
-231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208
-231 228 208 231 227 205 161 154 100 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29
-162 99 29 151 86 24 164 89 24 151 86 24 151 86 24 164 89 24 151 86 24 164 89 24
-151 86 24 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24 174 92 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24
-174 92 24 164 89 24 174 92 24 174 92 24 174 92 24 174 92 24 164 89 24 174 92 24
-174 92 24 174 92 24 162 99 29 175 102 28 175 102 28 162 99 29 175 102 28 175 102 28
-175 102 28 144 131 48 175 102 28 175 102 28 175 102 28 226 215 145 226 217 157 227 219 152
-227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125
-226 212 108 226 212 108 81 65 20 57 50 17 57 50 16 54 47 16 44 38 13 44 38 13
-37 32 10 30 25 8 22 19 6 19 15 5 15 13 5 7 6 2 3 3 2 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2
-7 6 2 9 8 4 19 15 5 22 19 6 28 25 13 37 32 10 44 38 13 44 38 13
-53 46 15 57 50 16 57 50 16 57 50 16 57 50 16 161 154 100 202 194 153 57 50 17
-57 50 17 57 50 17 57 50 17 57 50 17 57 50 16 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 62 49 15 62 49 15
-62 54 22 69 51 16 75 57 18 75 57 18 75 57 18 83 60 18 83 60 18 83 60 18
-83 60 18 83 60 18 86 69 23 95 66 20 86 69 23 86 69 23 103 69 20 86 69 23
-103 69 20 86 69 23 103 69 20 103 69 20 103 69 20 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 110 76 23 127 82 26 124 87 31 127 82 26 127 82 26 127 82 26
-145 122 90 231 227 205 231 227 205 231 227 205 231 227 205 231 228 208 231 227 205 231 228 208
-231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208 231 228 208
-231 228 208 231 227 205 202 194 153 162 99 29 162 99 29 162 99 29 162 99 29 162 99 29
-162 99 29 164 89 24 164 89 24 151 86 24 164 89 24 151 86 24 151 86 24 164 89 24
-151 86 24 164 89 24 164 89 24 164 89 24 164 89 24 174 92 24 164 89 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 164 89 24 174 92 24 174 92 24 174 92 24
-174 92 24 174 92 24 174 92 24 162 99 29 175 102 28 175 102 28 175 102 28 162 99 29
-186 112 35 175 102 28 175 102 28 186 112 35 161 154 100 227 219 152 227 219 152 226 218 150
-227 218 147 227 218 146 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 214 125
-226 212 108 161 154 100 57 50 17 57 50 17 56 49 15 53 46 15 44 38 13 39 33 11
-37 32 10 30 25 8 22 19 6 15 13 5 9 8 4 5 4 2 2 2 2 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-5 3 1 9 8 4 15 13 5 22 19 6 24 19 6 30 25 8 37 32 10 44 38 13
-51 43 14 54 47 16 57 50 16 57 50 16 57 50 16 108 92 44 227 217 136 109 103 77
-57 50 16 57 50 16 57 50 17 57 50 16 57 50 16 57 50 16 57 50 16 56 49 15
-56 49 15 56 49 15 56 49 15 56 49 15 56 49 15 56 47 15 56 49 15 62 49 15
-62 49 15 69 51 16 62 49 15 69 51 16 75 57 18 75 57 18 75 57 18 83 60 18
-83 60 18 83 60 18 83 60 18 83 60 18 95 66 20 95 66 20 95 66 20 95 66 20
-95 66 20 103 69 20 86 69 23 103 69 20 103 69 20 103 69 20 110 76 23 110 76 23
-110 76 23 110 76 23 127 82 26 110 76 23 124 87 31 127 82 26 124 87 31 127 82 26
-134 89 29 227 221 188 230 227 203 231 227 205 231 227 205 231 227 205 231 227 205 231 227 205
-231 227 205 231 227 205 231 227 205 231 227 205 231 227 205 231 227 205 231 227 205 231 227 205
-231 227 205 231 227 205 227 221 188 162 99 29 162 99 29 144 131 48 162 99 29 162 99 29
-151 86 24 162 99 29 151 86 24 164 89 24 151 86 24 164 89 24 164 89 24 151 86 24
-164 89 24 164 89 24 164 89 24 164 89 24 164 89 24 174 92 24 174 92 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24
-175 102 28 162 99 29 175 102 28 175 102 28 175 102 28 175 102 28 186 112 35 175 102 28
-144 131 48 186 112 35 175 102 28 186 112 35 226 216 132 227 219 152 227 219 152 227 218 147
-227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 212 108
-226 212 108 108 92 44 56 49 15 57 50 16 56 49 15 51 43 14 44 38 13 37 32 10
-37 32 10 22 19 6 22 19 6 15 13 5 9 8 4 5 3 1 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-3 3 2 7 6 2 14 10 4 19 15 5 24 19 6 30 25 8 37 32 10 44 38 13
-44 38 13 53 46 15 57 50 16 57 50 17 57 50 16 51 48 25 204 179 101 226 214 125
-73 60 27 57 50 17 57 50 17 57 50 16 57 50 16 56 49 15 56 49 15 56 49 15
-56 49 15 53 46 15 60 41 12 51 43 14 50 39 13 60 41 12 50 39 13 51 43 14
-56 47 15 60 41 12 62 49 15 62 49 15 69 51 16 69 51 16 69 51 16 76 52 15
-75 57 18 76 52 15 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18
-86 69 23 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 103 69 20 103 69 20
-110 76 23 110 76 23 110 76 23 110 76 23 127 82 26 127 82 26 127 82 26 127 82 26
-127 82 26 202 194 153 230 227 203 230 227 203 230 227 203 230 227 203 231 227 205 231 227 205
-231 227 205 231 227 205 231 227 205 231 227 205 231 227 205 231 227 205 231 227 205 231 227 205
-231 227 205 231 227 205 224 222 210 185 141 49 162 99 29 162 99 29 162 99 29 162 99 29
-162 99 29 162 99 29 164 89 24 164 89 24 164 89 24 151 86 24 164 89 24 164 89 24
-164 89 24 164 89 24 164 89 24 164 89 24 174 92 24 174 92 24 174 92 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24 189 101 28 174 92 24
-174 92 24 174 92 24 189 101 28 174 92 24 174 92 24 174 92 24 174 92 24 175 102 28
-175 102 28 175 102 28 175 102 28 175 102 28 175 102 28 186 112 35 175 102 28 186 112 35
-175 102 28 186 112 35 162 99 29 204 179 101 227 219 152 227 219 152 226 218 150 227 218 146
-227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 214 125 226 214 125 226 212 108
-204 179 101 56 49 15 56 49 15 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10
-30 25 8 24 19 6 15 13 5 14 10 4 7 6 2 3 3 2 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-2 2 2 5 4 2 9 8 4 15 13 5 22 19 6 30 25 8 37 32 10 37 32 10
-44 38 13 53 46 15 54 47 16 57 50 17 57 50 17 57 50 17 109 103 77 227 217 136
-161 154 100 57 50 16 57 50 17 57 50 16 56 49 15 56 49 15 54 47 16 54 47 16
-53 46 15 51 43 14 51 43 14 51 43 14 50 39 13 50 39 13 50 39 13 50 39 13
-50 39 13 50 39 13 60 41 12 60 41 12 60 41 12 62 49 15 69 51 16 69 51 16
-69 51 16 76 52 15 76 52 15 76 52 15 76 52 15 84 52 15 84 52 15 83 60 18
-91 54 15 83 60 18 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 103 69 20
-103 69 20 110 76 23 110 76 23 127 82 26 110 76 23 124 87 31 127 82 26 124 87 31
-134 89 29 144 131 48 231 227 205 231 227 205 230 227 203 230 227 203 230 227 203 230 227 203
-230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203
-230 227 203 230 227 203 230 227 203 204 179 101 144 105 46 162 99 29 162 99 29 162 99 29
-162 99 29 162 99 29 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24
-164 89 24 164 89 24 164 89 24 174 92 24 164 89 24 174 92 24 174 92 24 174 92 24
-174 92 24 174 92 24 189 101 28 174 92 24 174 92 24 189 101 28 174 92 24 189 101 28
-189 101 28 174 92 24 174 92 24 189 101 28 174 92 24 189 101 28 175 102 28 175 102 28
-175 102 28 175 102 28 175 102 28 186 112 35 175 102 28 186 112 35 144 131 48 186 112 35
-186 112 35 175 102 28 185 141 49 226 218 150 227 219 152 226 218 150 227 218 147 227 218 146
-227 217 143 227 217 143 227 217 136 226 216 132 226 216 132 226 214 125 226 212 108 226 212 108
-108 92 44 56 49 15 57 50 16 56 49 15 51 43 14 44 38 13 37 32 10 37 32 10
-22 19 6 22 19 6 15 13 5 9 8 4 5 4 2 2 2 2 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 5 3 1 9 8 4 14 10 4 22 19 6 22 19 6 28 25 13 37 32 10
-44 38 13 44 38 13 54 47 16 57 50 16 57 50 17 57 50 16 62 54 22 204 179 101
-227 217 136 83 78 45 57 50 17 57 50 16 56 49 15 56 49 15 54 47 16 56 47 15
-53 46 15 51 43 14 51 43 14 50 39 13 50 39 13 44 38 13 44 30 9 44 30 9
-51 31 9 51 31 9 51 31 9 60 41 12 50 39 13 60 41 12 60 41 12 60 41 12
-69 39 11 69 51 16 69 39 11 69 51 16 76 52 15 76 52 15 76 52 15 84 52 15
-84 52 15 84 52 15 84 52 15 84 52 15 91 54 15 91 54 15 95 66 20 95 66 20
-103 69 20 112 69 20 110 76 23 110 76 23 110 76 23 127 82 26 127 82 26 127 82 26
-134 89 29 136 99 45 227 221 188 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203
-230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203
-230 227 203 230 227 203 231 228 208 202 194 153 162 99 29 162 99 29 175 102 28 162 99 29
-162 99 29 162 99 29 162 99 29 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24
-164 89 24 164 89 24 164 89 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24
-174 92 24 189 101 28 174 92 24 189 101 28 189 101 28 174 92 24 189 101 28 189 101 28
-174 92 24 189 101 28 189 101 28 174 92 24 189 101 28 174 92 24 189 101 28 189 101 28
-189 101 28 186 112 35 186 112 35 175 102 28 186 112 35 175 102 28 186 112 35 175 102 28
-186 112 35 162 99 29 226 214 125 227 219 152 226 218 150 227 218 147 227 218 146 227 218 146
-227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 214 125 226 212 108 204 179 101
-57 50 16 57 50 16 56 49 15 54 47 16 44 38 13 44 38 13 37 32 10 30 25 8
-24 19 6 19 15 5 14 10 4 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 3 3 2 7 6 2 9 8 4 15 13 5 22 19 6 30 25 8 37 32 10
-39 33 11 44 38 13 53 46 15 54 47 16 57 50 17 57 50 17 57 50 17 109 103 77
-227 218 146 204 179 101 73 60 27 57 50 17 56 49 15 56 49 15 54 47 16 53 46 15
-51 43 14 51 43 14 50 39 13 50 39 13 44 38 13 44 30 9 44 30 9 44 30 9
-38 30 10 44 30 9 44 30 9 51 31 9 51 31 9 51 31 9 60 33 9 60 41 12
-60 41 12 60 41 12 69 39 11 69 39 11 69 39 11 69 51 16 79 41 11 76 52 15
-76 52 15 76 52 15 84 52 15 84 52 15 84 52 15 91 54 15 91 54 15 95 66 20
-106 56 16 103 69 20 112 69 20 110 76 23 127 82 26 127 82 26 124 87 31 127 82 26
-134 89 29 127 82 26 202 194 153 227 221 188 230 227 203 230 227 201 230 227 201 230 227 201
-230 227 201 230 227 201 230 227 203 230 227 203 230 227 203 230 227 203 230 227 203 230 227 201
-230 227 201 230 227 201 230 227 201 230 227 199 175 102 28 162 99 29 144 131 48 175 102 28
-175 102 28 162 99 29 162 99 29 164 89 24 164 89 24 164 89 24 164 89 24 164 89 24
-164 89 24 164 89 24 174 92 24 164 89 24 174 92 24 174 92 24 174 92 24 189 101 28
-174 92 24 189 101 28 174 92 24 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 175 102 28 175 102 28
-189 101 28 175 102 28 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35
-144 131 48 204 179 101 226 215 145 225 216 150 226 218 150 227 218 147 227 218 146 227 217 143
-227 217 143 227 217 136 227 217 136 226 214 125 226 214 125 226 212 108 226 212 108 108 92 44
-56 49 15 57 50 16 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 28 25 13
-22 19 6 17 15 7 9 8 4 7 4 1 2 2 2 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 0 5 3 1 9 8 4 15 13 5 22 19 6 22 19 6 30 25 8
-37 32 10 44 38 13 44 38 13 56 49 15 57 50 16 57 50 17 57 50 16 62 54 22
-204 179 101 227 217 143 161 154 100 57 50 17 56 49 15 56 49 15 54 47 16 56 47 15
-53 46 15 51 43 14 50 39 13 50 39 13 41 34 11 44 30 9 38 30 10 44 30 9
-37 28 9 37 22 6 37 28 9 44 30 9 44 30 9 51 31 9 51 31 9 51 31 9
-60 33 9 60 33 9 60 33 9 60 41 12 60 41 12 69 39 11 69 39 11 69 39 11
-69 39 11 79 41 11 79 41 11 79 41 11 84 52 15 84 52 15 91 54 15 91 54 15
-95 66 20 103 69 20 103 69 20 110 76 23 110 76 23 110 76 23 127 82 26 127 82 26
-134 89 29 140 85 24 145 122 90 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 199 230 227 199 230 227 201 230 227 199 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 199 230 227 197 161 154 100 175 102 28 175 102 28 175 102 28
-162 99 29 162 99 29 175 102 28 162 99 29 164 89 24 164 89 24 164 89 24 164 89 24
-164 89 24 164 89 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24
-189 101 28 174 92 24 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28
-174 92 24 189 101 28 189 101 28 189 101 28 175 102 28 189 101 28 189 101 28 186 112 35
-186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 175 102 28
-185 141 49 226 213 140 226 218 150 227 219 152 227 218 147 227 218 146 227 217 143 227 217 143
-227 217 136 227 217 136 226 216 132 226 214 125 226 212 108 226 212 108 204 179 101 57 50 16
-57 50 16 57 50 16 56 49 15 44 38 13 44 38 13 37 32 10 30 25 8 24 19 6
-19 15 5 15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 3 3 2 7 6 2 14 10 4 17 15 7 22 19 6 30 25 8
-37 32 10 44 38 13 44 38 13 53 46 15 56 49 15 57 50 17 57 50 17 57 50 17
-108 92 44 227 218 146 227 217 136 108 92 44 51 48 25 57 50 16 57 50 16 56 47 15
-51 43 14 51 43 14 50 39 13 44 38 13 51 31 9 41 34 11 44 30 9 37 28 9
-37 22 6 37 28 9 37 22 6 37 22 6 44 30 9 44 30 9 44 30 9 51 31 9
-51 31 9 51 31 9 60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 69 39 11
-69 39 11 69 39 11 69 39 11 76 52 15 79 41 11 79 41 11 84 52 15 91 54 15
-91 54 15 106 56 16 103 69 20 112 69 20 110 76 23 127 82 26 127 82 26 124 87 31
-134 89 29 134 89 29 134 89 29 228 223 180 230 227 198 230 227 198 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199 230 227 199
-230 227 199 230 227 199 230 227 199 230 227 197 204 179 101 175 102 28 162 99 29 162 99 29
-175 102 28 175 102 28 162 99 29 162 99 29 174 92 24 164 89 24 164 89 24 174 92 24
-164 89 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24
-189 101 28 189 101 28 174 92 24 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 186 112 35 186 112 35 189 101 28
-186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 185 141 49 175 102 28 185 141 49
-226 212 108 226 217 157 225 216 150 227 218 147 227 218 146 227 218 146 227 217 143 227 217 143
-227 217 136 226 216 132 226 214 125 226 214 125 226 212 108 226 212 108 86 69 23 57 50 16
-57 50 16 56 49 15 53 46 15 44 38 13 39 33 11 37 32 10 30 25 8 22 19 6
-17 15 7 10 7 2 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 15 13 5 22 19 6 22 19 6
-30 25 8 37 32 10 44 38 13 44 38 13 53 46 15 57 50 16 57 50 16 51 48 25
-57 50 17 161 154 100 226 215 145 226 213 140 86 69 23 57 50 17 57 50 17 57 50 16
-56 47 15 51 43 14 51 43 14 50 39 13 44 38 13 41 34 11 44 30 9 44 30 9
-37 28 9 37 22 6 37 22 6 37 22 6 37 22 6 37 22 6 44 30 9 37 22 6
-51 31 9 51 31 9 51 31 9 51 31 9 60 33 9 60 33 9 60 33 9 60 33 9
-69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11 84 52 15
-91 54 15 91 54 15 103 69 20 112 69 20 110 76 23 110 76 23 127 82 26 127 82 26
-134 89 29 134 89 29 134 89 29 204 179 101 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 198 230 227 198 230 227 198 230 227 198 230 227 198 230 227 198 230 227 198
-230 227 197 230 227 197 230 227 197 230 227 199 227 221 188 175 102 28 144 131 48 186 112 35
-162 99 29 175 102 28 162 99 29 175 102 28 174 92 24 164 89 24 174 92 24 164 89 24
-174 92 24 164 89 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28
-174 92 24 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28
-189 101 28 189 101 28 189 101 28 189 101 28 186 112 35 189 101 28 186 112 35 186 112 35
-186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 175 102 28 204 179 101
-225 216 150 225 216 150 226 218 150 227 218 146 227 218 146 227 217 143 227 217 143 227 217 136
-226 216 132 226 216 132 226 214 125 226 214 125 226 212 108 185 141 49 57 50 16 57 50 16
-57 50 16 54 47 16 44 38 13 44 38 13 37 32 10 30 25 8 22 19 6 19 15 5
-15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 14 10 4 17 15 7 22 19 6
-30 25 8 37 32 10 39 33 11 44 38 13 53 46 15 54 47 16 57 50 16 57 50 16
-57 50 16 83 78 45 226 214 125 226 215 145 204 179 101 56 54 38 62 49 15 62 54 22
-57 50 16 56 47 15 56 47 15 50 39 13 50 39 13 51 31 9 41 34 11 44 30 9
-37 28 9 37 22 6 37 22 6 37 22 6 37 22 6 37 22 6 37 22 6 51 31 9
-37 22 6 51 31 9 51 31 9 51 31 9 51 31 9 60 33 9 60 33 9 60 33 9
-60 33 9 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11 84 52 15
-91 54 15 91 54 15 106 56 16 103 69 20 112 69 20 127 82 26 127 82 26 127 82 26
-134 89 29 134 89 29 134 89 29 145 122 90 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 185 141 49 162 99 29 175 102 28
-162 99 29 175 102 28 162 99 29 175 102 28 162 99 29 174 92 24 164 89 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24 189 101 28
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28
-189 101 28 189 101 28 186 112 35 189 101 28 186 112 35 186 112 35 186 112 35 186 112 35
-186 112 35 186 112 35 186 112 35 185 141 49 186 112 35 186 112 35 185 141 49 227 219 152
-227 219 152 227 219 152 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136
-226 216 132 226 214 125 226 214 125 226 212 108 226 212 108 73 60 27 57 50 16 57 50 16
-57 50 16 53 46 15 44 38 13 39 33 11 37 32 10 30 25 8 22 19 6 17 15 7
-14 10 4 7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 15 13 5 22 19 6
-30 25 8 30 25 8 37 32 10 44 38 13 44 38 13 53 46 15 57 50 16 57 50 16
-57 50 16 56 49 15 109 103 77 226 215 145 226 215 145 161 154 100 62 49 15 62 54 22
-62 49 15 62 49 15 56 47 15 56 47 15 51 43 14 50 39 13 50 39 13 51 31 9
-44 30 9 44 30 9 44 30 9 44 30 9 37 22 6 37 22 6 37 22 6 37 22 6
-37 22 6 51 31 9 37 22 6 51 31 9 51 31 9 60 33 9 60 33 9 60 33 9
-60 33 9 60 33 9 60 33 9 69 39 11 79 41 11 69 39 11 79 41 11 79 41 11
-91 54 15 91 54 15 91 54 15 103 69 20 112 69 20 110 76 23 110 76 23 127 82 26
-127 82 26 134 89 29 134 89 29 134 89 29 227 220 173 230 226 196 230 226 196 230 226 196
-230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197 230 227 197
-230 227 197 230 226 196 230 226 196 230 225 190 224 222 210 204 179 101 162 99 29 186 112 35
-144 131 48 175 102 28 162 99 29 175 102 28 162 99 29 174 92 24 174 92 24 174 92 24
-164 89 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28
-189 101 28 189 101 28 189 101 28 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35
-186 112 35 185 141 49 186 112 35 186 112 35 186 112 35 185 141 49 227 218 147 227 219 152
-226 218 150 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 216 132
-226 214 125 226 214 125 226 212 108 226 212 108 144 131 48 57 50 16 57 50 16 57 50 16
-54 47 16 44 38 13 44 38 13 37 32 10 30 25 8 22 19 6 19 15 5 15 13 5
-9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 6 2 9 8 4 17 15 7
-22 19 6 30 25 8 37 32 10 37 32 10 44 38 13 53 46 15 53 46 15 57 50 16
-57 50 16 57 50 16 57 50 16 204 179 101 227 217 143 226 213 140 109 103 77 69 51 16
-69 51 16 62 54 22 62 49 15 62 49 15 56 47 15 60 41 12 50 39 13 50 39 13
-50 39 13 51 31 9 44 30 9 44 30 9 37 22 6 51 31 9 37 22 6 51 31 9
-37 22 6 51 31 9 51 31 9 51 31 9 51 31 9 60 33 9 51 31 9 60 33 9
-60 33 9 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11
-84 52 15 91 54 15 106 56 16 103 69 20 112 69 20 110 76 23 127 82 26 127 82 26
-127 82 26 134 89 29 134 89 29 134 89 29 161 154 100 230 227 198 230 226 196 230 226 196
-230 226 196 230 226 196 230 226 196 230 226 196 230 226 196 230 226 196 230 226 196 230 226 196
-230 226 196 230 226 196 230 226 196 230 226 196 230 225 190 202 194 153 175 102 28 175 102 28
-175 102 28 175 102 28 175 102 28 162 99 29 175 102 28 162 99 29 174 92 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24 189 101 28
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28
-186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35
-186 112 35 186 112 35 186 112 35 186 112 35 185 141 49 226 214 125 227 219 152 227 219 152
-227 218 147 227 218 146 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 214 125
-226 214 125 226 212 108 226 212 108 204 179 101 44 38 13 56 49 15 57 50 16 56 49 15
-51 43 14 44 38 13 39 33 11 37 32 10 30 25 8 22 19 6 17 15 7 14 10 4
-7 6 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 9 8 4 15 13 5
-17 15 7 22 19 6 28 25 13 37 32 10 44 38 13 44 38 13 53 46 15 57 50 16
-57 50 17 57 50 16 53 46 15 83 78 45 226 216 132 227 217 136 227 218 146 108 92 44
-62 49 15 62 54 22 62 49 15 62 49 15 62 49 15 56 47 15 56 47 15 60 41 12
-50 39 13 51 31 9 51 31 9 51 31 9 60 33 9 37 22 6 51 31 9 37 22 6
-60 33 9 37 22 6 51 31 9 37 22 6 51 31 9 60 33 9 60 33 9 60 33 9
-60 33 9 60 33 9 60 33 9 69 39 11 69 39 11 79 41 11 79 41 11 79 41 11
-79 41 11 91 54 15 91 54 15 106 56 16 112 69 20 112 69 20 110 76 23 127 82 26
-134 89 29 134 89 29 134 89 29 151 86 24 144 105 46 230 225 190 230 226 196 230 225 190
-230 226 196 230 225 190 230 225 190 230 226 196 230 225 190 230 225 190 230 226 196 230 225 190
-230 225 190 230 226 196 230 225 190 230 225 190 230 225 190 230 226 196 185 141 49 144 131 48
-186 112 35 162 99 29 175 102 28 175 102 28 175 102 28 175 102 28 174 92 24 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 186 112 35
-186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 186 112 35 185 141 49
-186 112 35 186 112 35 185 141 49 186 112 35 226 212 108 227 219 152 227 219 152 227 218 147
-227 218 146 227 218 146 227 217 143 227 217 143 227 217 136 226 216 132 226 216 132 226 216 132
-226 212 108 226 212 108 226 212 108 81 65 20 56 49 15 57 50 16 54 47 16 53 46 15
-44 38 13 44 38 13 37 32 10 30 25 8 22 19 6 19 15 5 15 13 5 9 8 4
-5 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 7 4 1 9 8 4
-19 15 5 22 19 6 30 25 8 30 25 8 37 32 10 44 38 13 44 38 13 54 47 16
-56 49 15 57 50 17 57 50 16 56 49 15 144 131 48 225 216 150 227 217 143 227 217 143
-108 92 44 62 54 22 75 57 18 62 54 22 69 51 16 62 49 15 62 49 15 56 47 15
-60 41 12 51 43 14 50 39 13 51 31 9 51 31 9 51 31 9 51 31 9 51 31 9
-37 22 6 60 33 9 37 22 6 60 33 9 60 33 9 51 31 9 60 33 9 60 33 9
-60 33 9 69 39 11 69 39 11 60 33 9 79 41 11 69 39 11 79 41 11 79 41 11
-84 52 15 91 54 15 91 54 15 95 66 20 103 69 20 112 69 20 110 76 23 127 82 26
-127 82 26 134 89 29 134 89 29 134 89 29 134 89 29 202 194 153 230 225 190 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 161 154 100 189 101 28
-162 99 29 186 112 35 162 99 29 175 102 28 162 99 29 175 102 28 162 99 29 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24 189 101 28
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 185 141 49 189 101 28
-185 141 49 189 101 28 185 141 49 189 101 28 185 141 49 189 101 28 185 141 49 189 101 28
-185 141 49 186 112 35 186 112 35 226 212 108 225 216 150 225 216 150 226 218 150 227 218 146
-227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 214 125
-226 212 108 226 212 108 144 131 48 53 46 15 57 50 16 57 50 16 53 46 15 44 38 13
-44 38 13 37 32 10 30 25 8 28 25 13 22 19 6 17 15 7 10 7 2 7 6 2
-3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 2 0 9 8 4
-14 10 4 17 15 7 22 19 6 30 25 8 37 32 10 39 33 11 44 38 13 51 43 14
-56 49 15 57 50 16 57 50 16 51 48 25 62 54 22 161 154 100 227 217 136 227 217 143
-226 216 132 83 78 45 62 54 22 69 51 16 69 51 16 69 51 16 62 49 15 62 49 15
-62 49 15 60 41 12 60 41 12 60 41 12 60 33 9 51 31 9 60 33 9 51 31 9
-60 33 9 37 22 6 60 33 9 51 31 9 51 31 9 51 31 9 60 33 9 60 33 9
-60 33 9 60 33 9 60 33 9 69 39 11 69 39 11 69 39 11 79 41 11 79 41 11
-79 41 11 91 54 15 91 54 15 106 56 16 106 56 16 112 69 20 128 71 21 110 76 23
-127 82 26 134 89 29 134 89 29 134 89 29 151 86 24 161 154 100 230 225 190 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 226 213 140 175 102 28
-175 102 28 144 131 48 186 112 35 175 102 28 175 102 28 175 102 28 175 102 28 174 92 24
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28
-189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 189 101 28 186 112 35
-189 101 28 186 112 35 186 112 35 189 101 28 185 141 49 189 101 28 185 141 49 186 112 35
-186 112 35 186 112 35 204 179 101 227 218 147 227 219 152 227 218 147 227 218 146 227 218 146
-227 217 143 227 217 143 227 217 136 227 217 136 226 216 132 226 214 125 226 214 125 226 212 108
-226 212 108 185 141 49 56 49 15 56 49 15 57 50 16 54 47 16 53 46 15 44 38 13
-39 33 11 37 32 10 30 25 8 22 19 6 19 15 5 15 13 5 9 8 4 5 3 1
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 3 1
-9 8 4 15 13 5 22 19 6 22 19 6 30 25 8 37 32 10 44 38 13 44 38 13
-53 46 15 54 47 16 57 50 17 57 50 17 57 50 17 86 69 23 226 214 125 226 213 140
-227 217 143 226 214 125 83 78 45 75 57 18 62 54 22 75 57 18 69 51 16 69 51 16
-62 49 15 62 49 15 62 49 15 60 41 12 60 41 12 60 41 12 60 33 9 60 33 9
-60 33 9 60 33 9 51 31 9 51 31 9 60 33 9 60 33 9 60 33 9 60 33 9
-60 33 9 69 39 11 69 39 11 69 39 11 69 39 11 79 41 11 69 39 11 79 41 11
-79 41 11 84 52 15 91 54 15 91 54 15 103 69 20 112 69 20 110 76 23 127 82 26
-127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 151 86 24 226 218 164 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190 230 225 190
-230 225 190 230 225 190 230 225 190 230 225 190 227 221 188 230 225 190 227 221 188 186 112 35
-162 99 29 175 102 28 175 102 28 162 99 29 175 102 28 162 99 29 175 102 28 175 102 28
-174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 189 101 28 174 92 24
-189 101 28 189 101 28 189 101 28 189 101 28 186 112 35 185 141 49 189 101 28 185 141 49
-189 101 28 185 141 49 189 101 28 185 141 49 189 101 28 185 141 49 189 101 28 185 141 49
-189 101 28 226 212 108 227 217 136 227 219 152 227 218 147 227 218 147 227 218 146 227 217 143
-227 217 143 227 217 136 227 217 136 226 216 132 226 216 132 226 214 125 226 212 108 226 212 108
-226 212 108 62 54 22 62 54 22 57 50 16 56 49 15 53 46 15 44 38 13 44 38 13
-37 32 10 28 25 13 22 19 6 22 19 6 15 13 5 9 8 4 4 4 2 2 2 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 4 4 2
-7 6 2 9 8 4 17 15 7 22 19 6 28 25 13 37 32 10 37 32 10 44 38 13
-44 38 13 53 46 15 57 50 16 57 50 17 57 50 17 57 50 17 83 78 45 226 216 132
-226 213 140 226 213 140 226 214 125 108 92 44 75 57 18 75 57 18 75 57 18 75 57 18
-69 51 16 69 51 16 69 51 16 62 49 15 62 49 15 60 41 12 60 41 12 60 33 9
-60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 51 31 9 60 33 9 60 33 9
-60 33 9 60 33 9 60 33 9 60 33 9 69 39 11 69 39 11 79 41 11 79 41 11
-79 41 11 79 41 11 91 54 15 91 54 15 106 56 16 103 69 20 112 69 20 110 76 23
-127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 151 86 24 161 154 100 230 225 190
-230 225 190 230 225 190 228 223 180 230 225 190 230 225 190 228 223 180 230 225 190 230 225 190
-228 223 180 230 225 190 230 225 190 228 223 180 230 225 190 228 223 180 227 221 188 204 179 101
-186 112 35 175 102 28 144 131 48 186 112 35 175 102 28 175 102 28 175 102 28 162 99 29
-175 102 28 174 92 24 174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 189 101 28
-189 101 28 189 101 28 189 101 28 186 112 35 189 101 28 189 101 28 189 101 28 189 101 28
-185 141 49 189 101 28 185 141 49 189 101 28 185 141 49 189 101 28 185 141 49 189 101 28
-226 212 108 227 217 143 227 218 147 227 218 147 227 218 147 227 218 146 227 217 143 227 217 143
-227 217 136 227 217 136 226 216 132 226 216 132 226 214 125 226 212 108 226 212 108 226 212 108
-86 69 23 57 50 16 57 50 16 56 49 15 54 47 16 44 38 13 44 38 13 37 32 10
-37 32 10 30 25 8 22 19 6 19 15 5 14 10 4 7 6 2 3 3 2 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-5 4 2 9 8 4 15 13 5 19 15 5 22 19 6 30 25 8 37 32 10 37 32 10
-44 38 13 53 46 15 53 46 15 57 50 16 57 50 17 57 50 17 62 54 22 109 103 77
-226 216 132 226 213 140 226 215 145 226 213 140 108 92 44 62 54 22 75 57 18 75 57 18
-75 57 18 69 51 16 69 51 16 69 51 16 69 51 16 69 51 16 62 49 15 60 41 12
-69 39 11 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9 60 33 9
-60 33 9 69 39 11 69 39 11 79 41 11 69 39 11 79 41 11 69 39 11 79 41 11
-79 41 11 91 54 15 91 54 15 91 54 15 106 56 16 103 69 20 112 69 20 112 69 20
-127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29 144 105 46 228 223 180
-228 223 180 230 225 190 230 225 190 228 223 180 230 225 190 230 225 190 228 223 180 230 225 190
-230 225 190 228 223 180 230 225 190 228 223 180 230 225 190 228 223 180 227 221 188 202 194 153
-162 99 29 175 102 28 186 112 35 162 99 29 175 102 28 175 102 28 175 102 28 175 102 28
-174 92 24 174 92 24 174 92 24 174 92 24 189 101 28 174 92 24 189 101 28 189 101 28
-189 101 28 189 101 28 189 101 28 186 112 35 186 112 35 185 141 49 189 101 28 185 141 49
-189 101 28 185 141 49 189 101 28 185 141 49 186 112 35 185 141 49 189 101 28 226 212 108
-227 217 136 227 218 146 227 218 147 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136
-227 217 136 227 217 136 226 214 125 226 214 125 226 214 125 226 212 108 226 212 108 144 131 48
-56 49 15 57 50 16 57 50 16 56 49 15 51 43 14 44 38 13 39 33 11 37 32 10
-28 25 13 22 19 6 22 19 6 15 13 5 7 6 2 5 4 2 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-3 2 0 7 6 2 9 8 4 15 13 5 22 19 6 22 19 6 28 25 13 37 32 10
-44 38 13 44 38 13 53 46 15 56 49 15 57 50 16 57 50 16 62 49 15 69 51 16
-161 154 100 227 217 136 226 213 140 226 215 145 227 218 146 108 92 44 73 60 27 75 57 18
-75 57 18 75 57 18 75 57 18 75 57 18 69 51 16 69 51 16 69 51 16 69 51 16
-69 51 16 69 39 11 69 39 11 69 39 11 60 33 9 69 39 11 60 33 9 69 39 11
-60 33 9 69 39 11 60 33 9 60 33 9 69 39 11 69 39 11 79 41 11 79 41 11
-79 41 11 79 41 11 84 52 15 91 54 15 106 56 16 106 56 16 112 69 20 112 69 20
-110 76 23 127 82 26 134 89 29 134 89 29 134 89 29 140 85 24 136 99 45 204 179 101
-230 225 190 228 223 180 228 223 180 230 225 190 228 223 180 228 223 180 230 225 190 228 223 180
-228 223 180 228 223 180 230 225 190 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180
-185 141 49 186 112 35 162 99 29 186 112 35 175 102 28 175 102 28 175 102 28 162 99 29
-175 102 28 175 102 28 175 102 28 174 92 24 174 92 24 174 92 24 189 101 28 189 101 28
-189 101 28 189 101 28 186 112 35 186 112 35 189 101 28 189 101 28 185 141 49 189 101 28
-185 141 49 189 101 28 185 141 49 189 101 28 185 141 49 189 101 28 226 212 108 227 218 146
-227 218 147 227 218 147 227 218 146 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136
-226 216 132 226 216 132 226 216 132 226 212 108 226 212 108 226 212 108 144 131 48 56 49 15
-57 50 16 57 50 16 54 47 16 53 46 15 44 38 13 44 38 13 37 32 10 30 25 8
-22 19 6 19 15 5 15 13 5 9 8 4 7 6 2 3 3 2 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 5 3 1 7 6 2 14 10 4 15 13 5 22 19 6 30 25 8 30 25 8
-37 32 10 44 38 13 44 38 13 53 46 15 54 47 16 57 50 16 62 54 22 57 50 16
-75 57 18 204 179 101 226 216 132 227 217 143 227 217 143 227 217 143 144 131 48 73 60 27
-75 57 18 81 65 20 75 57 18 75 57 18 75 57 18 76 52 15 76 52 15 69 51 16
-69 51 16 69 51 16 69 51 16 69 39 11 69 39 11 69 39 11 69 39 11 69 39 11
-79 41 11 69 39 11 79 41 11 69 39 11 69 39 11 79 41 11 69 39 11 79 41 11
-79 41 11 79 41 11 91 54 15 91 54 15 91 54 15 103 69 20 103 69 20 112 69 20
-127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29 144 131 48
-230 225 190 228 223 180 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180 228 223 180
-230 225 190 228 223 180 228 223 180 228 223 180 230 225 190 228 223 180 228 223 180 228 223 180
-204 179 101 162 99 29 162 99 29 186 112 35 144 131 48 175 102 28 175 102 28 175 102 28
-175 102 28 175 102 28 175 102 28 175 102 28 175 102 28 189 101 28 175 102 28 189 101 28
-186 112 35 186 112 35 189 101 28 185 141 49 189 101 28 185 141 49 189 101 28 185 141 49
-189 101 28 185 141 49 189 101 28 185 141 49 185 141 49 226 212 108 227 217 143 227 218 147
-227 218 147 227 218 147 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 227 217 136
-226 216 132 226 214 125 226 214 125 226 212 108 226 212 108 185 141 49 73 60 27 57 50 16
-57 50 17 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 30 25 8 30 25 8
-22 19 6 17 15 7 14 10 4 7 6 2 3 3 2 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 2 2 2 5 4 2 7 6 2 15 13 5 17 15 7 22 19 6 30 25 8
-37 32 10 37 32 10 44 38 13 51 43 14 54 47 16 57 50 16 62 49 15 57 50 16
-62 54 22 51 48 25 204 179 101 227 217 136 227 217 136 227 217 143 225 216 150 161 154 100
-86 69 23 75 57 18 81 65 20 83 60 18 83 60 18 75 57 18 75 57 18 75 57 18
-76 52 15 76 52 15 76 52 15 69 51 16 76 52 15 79 41 11 69 39 11 79 41 11
-69 39 11 69 39 11 69 39 11 79 41 11 79 41 11 69 39 11 79 41 11 79 41 11
-79 41 11 79 41 11 79 41 11 91 54 15 91 54 15 106 56 16 106 56 16 112 69 20
-112 69 20 110 76 23 127 82 26 134 89 29 134 89 29 162 99 29 134 89 29 151 86 24
-202 194 153 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180
-202 194 153 175 102 28 144 131 48 175 102 28 175 102 28 175 102 28 175 102 28 175 102 28
-175 102 28 175 102 28 175 102 28 175 102 28 175 102 28 175 102 28 189 101 28 186 112 35
-189 101 28 186 112 35 186 112 35 189 101 28 186 112 35 186 112 35 189 101 28 185 141 49
-189 101 28 185 141 49 186 112 35 185 141 49 226 214 125 227 218 146 227 219 152 227 218 147
-227 218 146 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 216 132 226 216 132
-226 214 125 226 212 108 226 212 108 226 212 108 204 179 101 73 60 27 57 50 17 57 50 17
-56 49 15 54 47 16 44 38 13 44 38 13 37 32 10 37 32 10 30 25 8 22 19 6
-17 15 7 15 13 5 9 8 4 5 3 1 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 3 3 2 5 4 2 9 8 4 15 13 5 22 19 6 22 19 6
-30 25 8 37 32 10 37 32 10 44 38 13 51 43 14 56 49 15 57 50 16 62 54 22
-69 51 16 62 54 22 73 60 27 204 179 101 227 218 146 227 217 136 227 217 143 227 217 143
-204 179 101 83 78 45 81 65 20 81 65 20 83 60 18 83 60 18 83 60 18 83 60 18
-83 60 18 76 52 15 83 60 18 76 52 15 76 52 15 76 52 15 76 52 15 79 41 11
-79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 79 41 11 79 41 11
-79 41 11 79 41 11 91 54 15 79 41 11 91 54 15 106 56 16 103 69 20 112 69 20
-112 69 20 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 162 99 29
-144 131 48 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180
-228 223 180 185 141 49 175 102 28 175 102 28 175 102 28 175 102 28 175 102 28 175 102 28
-175 102 28 175 102 28 175 102 28 175 102 28 175 102 28 189 101 28 186 112 35 189 101 28
-186 112 35 186 112 35 186 112 35 185 141 49 189 101 28 185 141 49 186 112 35 186 112 35
-185 141 49 189 101 28 226 212 108 226 212 108 227 219 152 227 218 147 227 218 147 227 218 146
-227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 226 216 132 226 216 132 226 214 125
-226 214 125 226 212 108 226 212 108 204 179 101 81 65 20 56 49 15 57 50 16 57 50 16
-54 47 16 51 43 14 44 38 13 39 33 11 37 32 10 28 25 13 22 19 6 22 19 6
-15 13 5 9 8 4 4 4 2 3 3 2 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 3 3 2 7 6 2 14 10 4 15 13 5 22 19 6
-24 19 6 28 25 13 37 32 10 39 33 11 44 38 13 53 46 15 57 50 16 57 50 16
-62 54 22 62 54 22 62 54 22 83 78 45 204 179 101 227 217 136 227 217 136 227 217 143
-226 218 150 226 213 140 136 99 45 83 60 18 81 65 20 81 65 20 81 65 20 81 65 20
-83 60 18 83 60 18 83 60 18 83 60 18 84 52 15 84 52 15 84 52 15 76 52 15
-76 52 15 76 52 15 76 52 15 79 41 11 76 52 15 79 41 11 79 41 11 84 52 15
-84 52 15 91 54 15 79 41 11 91 54 15 91 54 15 91 54 15 106 56 16 103 69 20
-112 69 20 128 71 21 110 76 23 134 89 29 134 89 29 134 89 29 134 89 29 134 89 29
-151 86 24 202 194 153 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 228 223 180
-228 223 180 228 223 180 228 223 180 228 223 180 228 223 180 227 220 173 228 223 180 227 220 173
-228 223 180 204 179 101 175 102 28 186 112 35 144 131 48 186 112 35 162 99 29 186 112 35
-175 102 28 175 102 28 175 102 28 175 102 28 186 112 35 175 102 28 186 112 35 186 112 35
-186 112 35 186 112 35 186 112 35 186 112 35 189 101 28 185 141 49 189 101 28 185 141 49
-189 101 28 226 212 108 227 217 136 227 219 152 227 218 147 227 218 147 227 218 146 227 218 146
-227 217 143 227 217 143 227 217 136 227 217 136 226 216 132 226 216 132 226 214 125 226 212 108
-226 212 108 226 212 108 204 179 101 81 65 20 56 49 15 56 49 15 57 50 16 54 47 16
-51 43 14 44 38 13 44 38 13 37 32 10 30 25 8 22 19 6 22 19 6 15 13 5
-9 8 4 7 4 1 3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 7 6 2 14 10 4 17 15 7
-22 19 6 30 25 8 30 25 8 37 32 10 44 38 13 44 38 13 54 47 16 57 50 16
-62 49 15 69 51 16 62 54 22 75 57 18 83 78 45 226 212 108 226 213 140 227 217 136
-227 217 143 226 215 145 226 218 150 161 154 100 86 69 23 86 69 23 83 60 18 86 69 23
-83 60 18 86 69 23 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18 83 60 18
-91 54 15 84 52 15 84 52 15 84 52 15 84 52 15 84 52 15 91 54 15 84 52 15
-84 52 15 79 41 11 91 54 15 91 54 15 91 54 15 106 56 16 106 56 16 103 69 20
-112 69 20 110 76 23 127 82 26 127 82 26 140 85 24 134 89 29 134 89 29 162 99 29
-134 89 29 185 141 49 227 220 173 228 223 180 227 220 173 227 220 173 228 223 180 227 220 173
-227 220 173 228 223 180 227 220 173 227 220 173 227 220 173 227 220 173 227 220 173 228 223 180
-227 220 173 226 218 164 186 112 35 162 99 29 175 102 28 175 102 28 186 112 35 162 99 29
-186 112 35 175 102 28 186 112 35 175 102 28 186 112 35 175 102 28 186 112 35 186 112 35
-186 112 35 186 112 35 186 112 35 185 141 49 186 112 35 186 112 35 186 112 35 185 141 49
-226 212 108 227 218 146 227 218 147 227 218 147 227 218 146 227 218 146 227 217 143 227 217 143
-227 217 136 227 217 136 227 217 136 227 217 136 226 214 125 226 214 125 226 214 125 226 212 108
-226 212 108 204 179 101 81 65 20 56 49 15 56 49 15 56 49 15 56 49 15 53 46 15
-44 38 13 44 38 13 37 32 10 28 25 13 30 25 8 22 19 6 17 15 7 14 10 4
-7 6 2 4 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 4 2 6 6 4 14 10 4
-17 15 7 22 19 6 28 25 13 30 25 8 37 32 10 44 38 13 51 43 14 56 49 15
-57 50 16 69 51 16 62 54 22 75 57 18 62 54 22 73 60 27 204 179 101 227 217 136
-227 217 136 227 217 136 227 217 143 227 217 136 202 194 153 136 99 45 86 69 23 95 66 20
-86 69 23 95 66 20 86 69 23 95 66 20 95 66 20 83 60 18 95 66 20 91 54 15
-83 60 18 83 60 18 83 60 18 91 54 15 91 54 15 91 54 15 91 54 15 91 54 15
-91 54 15 106 56 16 91 54 15 91 54 15 91 54 15 106 56 16 103 69 20 112 69 20
-112 69 20 112 69 20 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 140 85 24 202 194 153 227 220 173 228 223 180 227 220 173 227 220 173 227 220 173
-228 223 180 227 220 173 227 220 173 228 223 180 227 220 173 228 223 180 227 220 173 227 220 173
-227 220 173 230 225 190 185 141 49 144 131 48 186 112 35 175 102 28 144 131 48 186 112 35
-162 99 29 186 112 35 175 102 28 186 112 35 175 102 28 186 112 35 186 112 35 186 112 35
-186 112 35 185 141 49 186 112 35 186 112 35 186 112 35 186 112 35 226 212 108 227 218 146
-227 219 152 227 218 147 227 218 147 227 218 146 227 218 146 227 217 143 227 217 143 227 217 143
-227 217 136 227 217 136 226 216 132 226 214 125 226 214 125 226 212 108 226 212 108 226 212 108
-204 179 101 81 65 20 57 50 16 57 50 16 56 49 15 56 49 15 53 46 15 44 38 13
-44 38 13 37 32 10 30 25 8 30 25 8 22 19 6 17 15 7 14 10 4 9 8 4
-5 3 1 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 3 1 9 8 4
-15 13 5 19 15 5 22 19 6 30 25 8 37 32 10 37 32 10 44 38 13 51 43 14
-56 49 15 57 50 16 62 54 22 69 51 16 75 57 18 73 60 27 81 65 20 204 179 101
-227 217 136 227 217 136 227 217 136 227 217 143 227 217 136 227 218 146 161 154 100 110 76 23
-86 69 23 95 66 20 86 69 23 95 66 20 86 69 23 95 66 20 95 66 20 95 66 20
-95 66 20 95 66 20 95 66 20 91 54 15 95 66 20 91 54 15 95 66 20 91 54 15
-91 54 15 91 54 15 95 66 20 106 56 16 95 66 20 106 56 16 103 69 20 112 69 20
-112 69 20 127 82 26 110 76 23 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29
-162 99 29 134 89 29 144 131 48 227 220 173 227 220 173 227 220 173 227 220 173 227 220 173
-227 220 173 227 220 173 227 220 173 226 218 164 227 220 173 227 220 173 226 218 164 227 220 173
-226 218 164 227 220 173 226 213 140 175 102 28 162 99 29 186 112 35 175 102 28 175 102 28
-186 112 35 144 131 48 175 102 28 186 112 35 175 102 28 186 112 35 186 112 35 186 112 35
-186 112 35 186 112 35 186 112 35 185 141 49 185 141 49 226 214 125 227 217 136 227 218 146
-227 218 147 227 218 146 227 218 146 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136
-227 217 136 226 216 132 226 214 125 226 214 125 226 214 125 226 212 108 226 212 108 185 141 49
-81 65 20 57 50 16 57 50 16 57 50 16 56 49 15 53 46 15 44 38 13 44 38 13
-37 32 10 28 25 13 30 25 8 22 19 6 17 15 7 15 13 5 9 8 4 4 4 2
-3 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 5 3 1
-9 8 4 15 13 5 22 19 6 22 19 6 24 19 6 37 32 10 41 34 11 44 38 13
-53 46 15 57 50 16 57 50 16 75 57 18 62 54 22 75 57 18 62 54 22 81 65 20
-161 154 100 227 217 136 227 217 136 227 217 136 227 217 143 227 217 143 227 218 146 226 216 132
-145 122 90 86 69 23 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20
-95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20 95 66 20
-103 69 20 95 66 20 106 56 16 95 66 20 106 56 16 103 69 20 112 69 20 112 69 20
-112 69 20 110 76 23 127 82 26 127 82 26 140 85 24 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 162 99 29 204 179 101 226 218 164 227 220 173 227 220 173 227 220 173
-226 218 164 227 220 173 226 218 164 227 220 173 227 220 173 226 218 164 227 220 173 226 218 164
-227 220 173 226 218 164 227 220 173 185 141 49 175 102 28 175 102 28 144 131 48 186 112 35
-175 102 28 175 102 28 186 112 35 175 102 28 185 141 49 175 102 28 186 112 35 186 112 35
-186 112 35 189 101 28 185 141 49 226 212 108 227 218 146 227 218 146 227 219 152 227 218 146
-227 218 146 227 218 146 227 217 143 227 217 143 227 217 143 227 217 136 227 217 136 227 217 136
-226 214 125 226 214 125 226 214 125 226 212 108 226 212 108 226 212 108 185 141 49 81 65 20
-57 50 16 57 50 16 56 49 15 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10
-37 32 10 30 25 8 22 19 6 22 19 6 15 13 5 9 8 4 7 4 1 3 3 2
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2
-7 6 2 9 8 4 15 13 5 22 19 6 24 19 6 30 25 8 37 32 10 39 33 11
-51 43 14 53 46 15 57 50 16 62 49 15 62 54 22 75 57 18 75 57 18 73 60 27
-81 65 20 161 154 100 226 214 125 227 217 136 227 217 136 227 217 143 227 217 143 227 217 143
-227 217 143 226 214 125 145 122 90 86 69 23 95 66 20 95 66 20 95 66 20 103 69 20
-95 66 20 103 69 20 95 66 20 103 69 20 103 69 20 95 66 20 103 69 20 95 66 20
-103 69 20 103 69 20 103 69 20 103 69 20 103 69 20 103 69 20 112 69 20 112 69 20
-110 76 23 127 82 26 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29
-162 99 29 134 89 29 162 99 29 144 105 46 226 218 164 227 220 173 227 219 152 227 220 173
-226 218 164 227 220 173 227 219 152 228 223 180 227 219 152 227 220 173 226 218 164 226 218 164
-227 220 173 226 218 164 226 218 164 204 179 101 162 99 29 186 112 35 162 99 29 175 102 28
-144 131 48 186 112 35 175 102 28 175 102 28 175 102 28 186 112 35 185 141 49 175 102 28
-185 141 49 204 179 101 226 216 132 227 217 136 227 218 146 227 218 146 227 218 146 227 218 146
-227 218 146 227 217 143 227 217 143 227 217 136 227 217 136 227 217 136 227 217 136 226 214 125
-226 214 125 226 214 125 226 212 108 226 212 108 226 212 108 144 131 48 62 54 22 62 54 22
-57 50 16 57 50 16 56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 37 32 10
-28 25 13 22 19 6 22 19 6 15 13 5 9 8 4 7 6 2 4 4 2 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-5 3 1 7 6 2 10 7 2 15 13 5 22 19 6 22 19 6 30 25 8 37 32 10
-41 34 11 50 39 13 56 49 15 57 50 16 69 51 16 62 54 22 75 57 18 75 57 18
-75 57 18 75 57 18 136 99 45 226 214 125 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 143 226 213 140 226 218 150 204 179 101 144 131 48 110 76 23 86 69 23 103 69 20
-103 69 20 103 69 20 103 69 20 103 69 20 103 69 20 103 69 20 103 69 20 103 69 20
-103 69 20 103 69 20 103 69 20 103 69 20 103 69 20 112 69 20 112 69 20 110 76 23
-128 71 21 110 76 23 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 140 85 24 204 179 101 227 220 173 226 218 164 228 223 180
-227 219 152 228 223 180 227 219 152 227 220 173 226 218 164 227 220 173 227 219 152 227 220 173
-227 219 152 226 218 164 226 218 164 227 220 173 186 112 35 144 131 48 186 112 35 175 102 28
-186 112 35 175 102 28 144 131 48 175 102 28 185 141 49 175 102 28 186 112 35 204 179 101
-227 217 136 227 217 136 227 218 146 227 218 147 227 218 146 227 218 146 227 218 146 227 217 143
-227 217 143 227 217 143 227 217 136 227 217 136 227 217 136 227 217 136 226 214 125 226 214 125
-226 212 108 226 212 108 226 212 108 226 212 108 144 131 48 62 54 22 57 50 16 57 50 16
-57 50 16 56 49 15 56 49 15 44 38 13 44 38 13 37 32 10 28 25 13 30 25 8
-22 19 6 22 19 6 15 13 5 9 8 4 7 6 2 5 3 1 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 5 3 1 7 6 2 9 8 4 15 13 5 19 15 5 24 19 6 30 25 8
-37 32 10 44 38 13 50 39 13 56 49 15 57 50 16 62 54 22 75 57 18 75 57 18
-75 57 18 81 65 20 73 60 27 108 92 44 204 179 101 226 216 132 227 217 136 227 217 136
-227 217 136 227 217 143 227 217 143 226 218 150 226 217 157 202 194 153 144 131 48 110 76 23
-86 69 23 110 76 23 110 76 23 103 69 20 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 112 69 20 110 76 23 110 76 23 112 69 20 110 76 23 110 76 23
-127 82 26 127 82 26 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29
-134 89 29 162 99 29 134 89 29 162 99 29 134 89 29 226 213 140 226 218 164 227 219 152
-227 220 173 227 219 152 227 220 173 227 219 152 227 220 173 227 219 152 227 220 173 227 219 152
-227 220 173 227 219 152 226 218 164 227 219 152 204 179 101 162 99 29 175 102 28 162 99 29
-186 112 35 175 102 28 186 112 35 175 102 28 185 141 49 204 179 101 227 217 136 227 218 146
-227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 217 143 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 226 214 125 226 214 125 226 214 125 226 212 108
-226 212 108 226 212 108 204 179 101 95 66 20 56 49 15 56 49 15 57 50 16 57 50 16
-56 49 15 53 46 15 44 38 13 44 38 13 37 32 10 37 32 10 30 25 8 22 19 6
-22 19 6 15 13 5 9 8 4 7 6 2 4 4 2 1 1 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 0 5 3 1 7 6 2 9 8 4 15 13 5 22 19 6 22 19 6
-30 25 8 37 28 9 44 38 13 51 43 14 56 49 15 62 49 15 62 54 22 62 54 22
-75 57 18 75 57 18 75 57 18 81 65 20 86 69 23 161 154 100 226 216 132 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 143 227 217 136 227 217 136 225 216 150 226 213 140
-161 154 100 108 92 44 86 69 23 110 76 23 110 76 23 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 110 76 23 110 76 23 110 76 23 127 82 26 110 76 23 127 82 26
-110 76 23 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 185 141 49 227 219 152 227 220 173
-227 219 152 227 220 173 227 219 152 227 220 173 227 219 152 227 219 152 226 218 164 227 219 152
-227 219 152 226 218 164 227 219 152 226 217 157 225 216 150 185 141 49 175 102 28 144 131 48
-162 99 29 185 141 49 185 141 49 204 179 101 226 218 150 227 218 146 227 218 146 227 218 146
-227 218 146 227 218 146 227 218 146 227 218 146 227 217 143 227 217 143 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 136 226 214 125 226 214 125 226 212 108 226 212 108 226 212 108
-226 212 108 185 141 49 81 65 20 56 49 15 56 49 15 56 49 15 56 49 15 53 46 15
-53 46 15 44 38 13 44 38 13 37 32 10 37 32 10 30 25 8 22 19 6 22 19 6
-15 13 5 9 8 4 7 6 2 4 4 2 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 5 3 1 7 6 2 9 8 4 15 13 5 22 19 6
-24 19 6 30 25 8 30 25 8 44 38 13 51 43 14 56 49 15 62 49 15 69 51 16
-75 57 18 75 57 18 81 65 20 75 57 18 81 65 20 81 65 20 144 131 48 226 214 125
-226 214 125 227 217 136 227 217 136 227 217 136 227 217 143 227 217 143 227 217 143 226 213 140
-227 217 143 227 217 143 204 179 101 145 122 90 108 92 44 110 76 23 110 76 23 110 76 23
-110 76 23 110 76 23 127 82 26 110 76 23 110 76 23 127 82 26 110 76 23 127 82 26
-127 82 26 127 82 26 127 82 26 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 162 99 29 134 89 29 144 105 46 140 85 24 134 89 29 204 179 101 227 219 152
-227 219 152 227 219 152 227 219 152 227 219 152 227 220 173 227 219 152 227 219 152 227 219 152
-226 218 164 227 219 152 227 219 152 226 218 164 227 219 152 204 179 101 162 99 29 185 141 49
-204 179 101 225 216 150 227 219 152 227 219 152 227 219 152 227 218 146 227 218 146 227 218 146
-227 218 146 227 218 146 227 217 143 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 226 214 125 226 214 125 226 212 108 226 214 125 226 212 108 226 212 108 226 212 108
-134 89 29 57 50 16 56 49 15 56 49 15 56 49 15 56 49 15 53 46 15 53 46 15
-44 38 13 37 32 10 37 32 10 28 25 13 30 25 8 22 19 6 22 19 6 15 13 5
-9 8 4 7 6 2 4 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 7 6 2 10 7 2 15 13 5
-19 15 5 22 19 6 30 25 8 37 28 9 39 33 11 50 39 13 56 49 15 62 54 22
-62 54 22 75 57 18 75 57 18 75 57 18 81 65 20 81 65 20 83 60 18 95 66 20
-161 154 100 226 216 132 226 216 132 226 216 132 227 217 136 227 217 136 227 217 136 227 217 143
-227 217 143 227 218 146 227 218 146 227 217 143 226 213 140 204 179 101 145 122 90 124 87 31
-110 76 23 110 76 23 110 76 23 110 76 23 124 87 31 110 76 23 127 82 26 124 87 31
-110 76 23 127 82 26 124 87 31 127 82 26 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 134 89 29 162 99 29 134 89 29 134 89 29 226 214 125
-226 218 164 227 219 152 227 220 173 227 219 152 227 219 152 227 219 152 227 220 173 227 219 152
-227 219 152 227 219 152 227 219 152 227 219 152 227 219 152 226 218 150 226 215 145 227 219 152
-227 219 152 227 218 147 227 219 152 227 218 147 227 218 146 227 218 146 227 218 146 227 218 146
-227 217 143 227 217 143 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 226 214 125
-226 214 125 226 214 125 226 212 108 226 212 108 226 212 108 226 212 108 185 141 49 81 65 20
-57 50 16 57 50 16 57 50 16 56 49 15 56 49 15 53 46 15 44 38 13 44 38 13
-37 32 10 37 32 10 37 32 10 28 25 13 22 19 6 22 19 6 15 13 5 14 10 4
-7 6 2 4 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 7 6 2 9 8 4
-15 13 5 19 15 5 22 19 6 28 21 6 30 25 8 37 32 10 44 38 13 56 47 15
-62 49 15 69 51 16 75 57 18 75 57 18 81 65 20 81 65 20 81 65 20 81 65 20
-95 66 20 136 99 45 204 179 101 227 217 136 226 216 132 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 143 227 217 143 227 217 143 227 217 143 227 218 146 227 218 146 227 218 146
-226 214 125 161 154 100 144 131 48 136 99 45 110 76 23 124 87 31 110 76 23 124 87 31
-127 82 26 124 87 31 127 82 26 124 87 31 134 89 29 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 162 99 29 134 89 29 134 89 29 162 99 29 144 105 46
-227 218 146 227 219 152 227 219 152 227 219 152 227 219 152 227 219 152 227 219 152 227 219 152
-227 219 152 227 219 152 227 219 152 227 219 152 227 219 152 226 218 150 227 218 147 227 218 147
-227 218 147 227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 226 214 125 226 214 125 226 214 125
-226 212 108 226 214 125 226 212 108 226 212 108 226 212 108 124 87 31 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 56 49 15 53 46 15 44 38 13 44 38 13 44 38 13
-37 32 10 28 25 13 30 25 8 22 19 6 22 19 6 15 13 5 9 8 4 7 6 2
-4 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 7 6 2
-9 8 4 15 13 5 19 15 5 22 19 6 28 21 6 30 25 8 37 28 9 39 33 11
-51 43 14 62 49 15 62 54 22 75 57 18 75 57 18 81 65 20 83 60 18 81 65 20
-81 65 20 86 69 23 103 69 20 161 154 100 226 214 125 226 216 132 226 216 132 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 143 227 217 143 227 217 143 227 217 143
-226 215 145 227 218 147 227 219 152 226 215 145 226 216 132 204 179 101 161 154 100 144 131 48
-144 131 48 134 89 29 127 82 26 124 87 31 127 82 26 134 89 29 134 89 29 134 89 29
-134 89 29 134 89 29 134 89 29 134 89 29 134 89 29 162 99 29 134 89 29 136 99 45
-185 141 49 227 219 152 227 219 152 227 219 152 227 219 152 227 219 152 227 219 152 227 219 152
-227 219 152 227 219 152 227 219 152 227 218 146 227 218 146 227 218 146 227 218 146 227 218 146
-227 218 146 227 218 146 227 217 143 227 217 143 227 217 143 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 136 226 214 125 226 214 125 226 214 125 226 214 125 226 212 108
-226 212 108 226 212 108 226 212 108 144 131 48 69 51 16 57 50 16 57 50 16 57 50 16
-57 50 16 56 49 15 53 46 15 51 43 14 44 38 13 44 38 13 37 32 10 37 32 10
-30 25 8 22 19 6 22 19 6 17 15 7 15 13 5 9 8 4 7 6 2 4 4 2
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 5 3 1
-7 6 2 9 8 4 15 13 5 19 15 5 22 19 6 24 19 6 30 25 8 37 32 10
-37 32 10 44 38 13 56 47 15 69 51 16 75 57 18 75 57 18 81 65 20 81 65 20
-81 65 20 86 69 23 86 69 23 95 66 20 110 76 23 161 154 100 226 212 108 226 216 132
-226 216 132 226 216 132 227 217 136 227 217 136 227 217 136 227 217 136 227 217 143 227 217 143
-227 217 143 227 217 143 227 217 143 227 217 143 226 215 145 227 218 146 227 218 146 227 218 146
-227 218 146 227 217 136 227 217 136 226 212 108 204 179 101 204 179 101 204 179 101 204 179 101
-204 179 101 204 179 101 204 179 101 204 179 101 204 179 101 204 179 101 226 214 125 204 179 101
-226 218 164 227 219 152 227 219 152 227 218 146 227 219 152 227 218 146 227 219 152 227 218 146
-227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 217 143 227 217 143 227 217 143
-227 217 143 227 217 143 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 226 216 132
-226 216 132 226 214 125 226 214 125 226 214 125 226 212 108 226 212 108 226 212 108 226 212 108
-226 212 108 185 141 49 86 69 23 62 49 15 57 50 16 57 50 16 57 50 16 57 50 16
-56 49 15 53 46 15 44 38 13 44 38 13 44 38 13 37 32 10 37 32 10 28 25 13
-22 19 6 22 19 6 17 15 7 15 13 5 9 8 4 7 6 2 3 3 2 1 1 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-3 3 2 5 4 2 9 8 4 14 10 4 15 13 5 22 19 6 24 19 6 30 25 8
-30 25 8 37 28 9 39 33 11 44 38 13 56 47 15 69 51 16 75 57 18 83 60 18
-83 60 18 86 69 23 81 65 20 86 69 23 86 69 23 95 66 20 124 87 31 161 154 100
-226 214 125 226 214 125 226 216 132 226 216 132 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 143 227 217 143 227 217 143 227 217 143 227 217 143 227 218 146
-227 218 146 227 218 146 227 218 146 226 218 150 226 218 150 226 218 150 227 217 136 227 217 136
-226 216 132 226 216 132 227 217 136 226 216 132 226 215 145 226 215 145 225 216 150 227 219 152
-227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 218 146
-227 218 146 227 218 146 227 217 143 227 217 143 227 217 143 227 217 143 227 217 143 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 226 216 132 226 216 132 226 216 132 226 214 125
-226 214 125 226 214 125 226 214 125 226 212 108 226 212 108 226 212 108 226 212 108 185 141 49
-110 76 23 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 56 49 15 54 47 16
-53 46 15 44 38 13 44 38 13 37 32 10 37 32 10 30 25 8 28 25 13 22 19 6
-22 19 6 17 15 7 15 13 5 9 8 4 4 4 2 3 3 2 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 3 3 2 5 4 2 9 8 4 14 10 4 15 13 5 19 15 5 22 19 6
-28 21 6 30 25 8 37 32 10 37 32 10 41 34 11 44 38 13 56 49 15 75 57 18
-83 60 18 83 60 18 86 69 23 95 66 20 86 69 23 95 66 20 86 69 23 110 76 23
-124 87 31 161 154 100 226 214 125 226 214 125 226 214 125 226 216 132 226 216 132 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 143 227 217 136 227 217 143
-227 217 143 227 217 143 227 217 143 227 218 146 227 218 146 227 218 146 227 218 146 225 216 150
-225 216 150 225 216 150 225 216 150 225 216 150 227 218 146 226 215 145 227 218 146 227 217 143
-227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 218 146 227 217 136 227 218 146
-227 217 136 227 217 143 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 226 216 132 226 216 132 226 216 132 226 214 125 226 214 125 226 214 125 226 214 125
-226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 185 141 49 108 92 44 56 49 15
-57 50 16 57 50 16 57 50 16 57 50 16 56 49 15 56 49 15 53 46 15 44 38 13
-44 38 13 44 38 13 37 32 10 37 32 10 28 25 13 30 25 8 22 19 6 17 15 7
-15 13 5 15 13 5 7 6 2 4 4 2 4 4 2 1 1 0 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 2 2 2 5 3 1 7 6 2 9 8 4 14 10 4 19 15 5
-22 19 6 24 19 6 30 25 8 37 28 9 37 32 10 39 33 11 44 38 13 44 38 13
-56 49 15 69 51 16 83 60 18 86 69 23 86 69 23 95 66 20 86 69 23 86 69 23
-103 69 20 103 69 20 127 82 26 161 154 100 226 212 108 226 214 125 226 214 125 226 214 125
-226 214 125 226 216 132 226 216 132 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 143
-227 217 136 227 217 136 227 217 136 227 217 143 227 217 136 227 217 143 227 217 136 227 217 143
-227 217 143 227 217 136 227 217 143 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 226 216 132 226 216 132
-226 216 132 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 212 108 226 212 108
-226 212 108 226 212 108 226 212 108 144 131 48 81 65 20 56 49 15 56 49 15 57 50 16
-57 50 16 57 50 16 57 50 16 56 49 15 53 46 15 53 46 15 44 38 13 44 38 13
-37 32 10 37 32 10 37 32 10 30 25 8 22 19 6 22 19 6 17 15 7 15 13 5
-9 8 4 7 6 2 4 4 2 3 2 0 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 0 5 3 1 7 6 2 9 8 4 14 10 4
-15 13 5 22 19 6 22 19 6 30 25 8 30 25 8 37 32 10 37 32 10 41 34 11
-44 38 13 44 38 13 51 43 14 62 49 15 75 57 18 86 69 23 95 66 20 95 66 20
-86 69 23 103 69 20 86 69 23 103 69 20 103 69 20 144 131 48 204 179 101 226 214 125
-226 214 125 226 214 125 226 214 125 226 216 132 226 214 125 226 216 132 226 216 132 226 216 132
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136 227 217 136
-227 217 136 227 217 136 226 216 132 226 216 132 226 216 132 226 214 125 226 214 125 226 214 125
-226 214 125 226 214 125 226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 226 212 108
-185 141 49 108 92 44 62 49 15 56 49 15 57 50 16 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 53 46 15 51 43 14 44 38 13 44 38 13 44 38 13 37 32 10
-37 32 10 28 25 13 28 25 13 22 19 6 22 19 6 15 13 5 15 13 5 9 8 4
-7 6 2 4 4 2 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 5 4 2 9 8 4
-9 8 4 15 13 5 19 15 5 22 19 6 24 19 6 30 25 8 30 25 8 37 32 10
-37 32 10 44 38 13 44 38 13 51 43 14 53 46 15 53 46 15 75 57 18 81 65 20
-103 69 20 86 69 23 103 69 20 103 69 20 103 69 20 103 69 20 95 66 20 124 87 31
-144 131 48 204 179 101 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125
-226 214 125 226 216 132 226 216 132 226 216 132 226 216 132 226 216 132 226 216 132 226 216 132
-226 216 132 226 216 132 227 217 136 226 216 132 227 217 136 226 216 132 227 217 136 227 217 136
-226 216 132 227 217 136 226 216 132 227 217 136 226 216 132 226 216 132 226 216 132 226 216 132
-226 216 132 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 212 108 226 214 125
-226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 185 141 49 144 131 48 81 65 20
-57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 54 47 16
-53 46 15 53 46 15 44 38 13 44 38 13 44 38 13 37 32 10 37 32 10 28 25 13
-30 25 8 22 19 6 22 19 6 17 15 7 15 13 5 15 13 5 7 6 2 4 4 2
-3 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 3 1
-7 6 2 9 8 4 14 10 4 15 13 5 19 15 5 24 19 6 28 21 6 30 25 8
-30 25 8 37 32 10 37 32 10 44 38 13 44 38 13 44 38 13 51 43 14 53 46 15
-56 49 15 62 54 22 81 65 20 86 69 23 103 69 20 103 69 20 110 76 23 103 69 20
-110 76 23 110 76 23 124 87 31 144 131 48 204 179 101 226 212 108 226 212 108 226 214 125
-226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 216 132 226 214 125
-226 216 132 226 214 125 226 216 132 226 216 132 226 216 132 226 216 132 226 214 125 226 214 125
-226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125 226 214 125
-226 214 125 226 212 108 226 214 125 226 212 108 226 212 108 226 212 108 226 212 108 226 212 108
-226 212 108 204 179 101 185 141 49 108 92 44 81 65 20 57 50 17 51 48 25 56 49 15
-57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 56 49 15 53 46 15 51 43 14
-44 38 13 44 38 13 44 38 13 37 32 10 37 32 10 30 25 8 28 25 13 30 25 8
-22 19 6 22 19 6 15 13 5 15 13 5 9 8 4 7 6 2 4 4 2 3 3 2
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-3 3 2 5 4 2 9 8 4 9 8 4 15 13 5 15 13 5 22 19 6 22 19 6
-30 25 8 30 25 8 30 25 8 37 32 10 37 32 10 44 38 13 44 38 13 44 38 13
-51 43 14 53 46 15 54 47 16 57 50 16 57 50 16 62 54 22 81 65 20 86 69 23
-86 69 23 110 76 23 110 76 23 110 76 23 103 69 20 110 76 23 136 99 45 144 131 48
-204 179 101 204 179 101 226 212 108 226 212 108 226 214 125 226 212 108 226 214 125 226 214 125
-226 212 108 226 214 125 226 214 125 226 212 108 226 214 125 226 212 108 226 214 125 226 214 125
-226 214 125 226 214 125 226 214 125 226 212 108 226 214 125 226 212 108 226 212 108 226 212 108
-226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 204 179 101 144 131 48 144 131 48
-86 69 23 57 50 16 57 50 16 62 54 22 57 50 16 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 56 49 15 56 49 15 53 46 15 51 43 14 44 38 13 44 38 13
-44 38 13 37 32 10 37 32 10 37 32 10 28 25 13 30 25 8 22 19 6 22 19 6
-15 13 5 15 13 5 9 8 4 7 6 2 4 4 2 3 3 2 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 2 2 2 5 3 1 7 6 2 9 8 4 14 10 4 15 13 5 19 15 5
-22 19 6 24 19 6 30 25 8 30 25 8 37 32 10 37 32 10 37 32 10 44 38 13
-44 38 13 44 38 13 51 43 14 51 43 14 53 46 15 54 47 16 54 47 16 57 50 16
-57 50 16 57 50 17 62 54 22 75 57 18 81 65 20 86 69 23 95 66 20 110 76 23
-103 69 20 124 87 31 124 87 31 144 105 46 144 131 48 185 141 49 161 154 100 204 179 101
-204 179 101 226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 226 212 108
-226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 226 212 108 204 179 101 204 179 101
-144 131 48 144 131 48 136 99 45 86 69 23 57 50 16 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 56 49 15
-56 49 15 53 46 15 53 46 15 44 38 13 44 38 13 44 38 13 44 38 13 37 32 10
-37 32 10 37 32 10 28 25 13 22 19 6 22 19 6 22 19 6 17 15 7 15 13 5
-15 13 5 9 8 4 7 6 2 4 4 2 3 3 2 1 1 0 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 0 3 3 2 5 3 1 7 6 2 9 8 4 14 10 4
-15 13 5 17 15 7 22 19 6 24 19 6 24 19 6 30 25 8 37 32 10 37 32 10
-37 32 10 39 33 11 44 38 13 44 38 13 44 38 13 51 43 14 53 46 15 53 46 15
-54 47 16 56 49 15 57 50 16 57 50 16 57 50 17 57 50 16 57 50 16 57 50 16
-56 49 15 56 49 15 56 49 15 57 50 16 62 54 22 75 57 18 81 65 20 81 65 20
-81 65 20 57 50 16 57 50 16 81 65 20 83 78 45 83 78 45 83 78 45 108 92 44
-86 69 23 108 92 44 86 69 23 75 57 18 57 50 16 57 50 16 56 49 15 57 50 16
-62 54 22 62 54 22 57 50 17 57 50 16 62 54 22 57 50 16 57 50 17 57 50 17
-57 50 17 57 50 16 57 50 16 57 50 16 57 50 16 54 47 16 53 46 15 51 43 14
-53 46 15 44 38 13 44 38 13 44 38 13 39 33 11 37 32 10 37 32 10 37 32 10
-30 25 8 28 25 13 22 19 6 22 19 6 22 19 6 15 13 5 15 13 5 9 8 4
-7 6 2 4 4 2 4 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 5 3 1 5 4 2 9 8 4
-9 8 4 14 10 4 15 13 5 19 15 5 22 19 6 22 19 6 24 19 6 30 25 8
-37 32 10 37 32 10 37 32 10 39 33 11 44 38 13 44 38 13 44 38 13 44 38 13
-51 43 14 53 46 15 53 46 15 53 46 15 54 47 16 56 49 15 56 49 15 57 50 16
-57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 56 49 15 56 49 15
-56 49 15 56 49 15 57 50 16 57 50 16 57 50 16 57 50 16 56 49 15 56 49 15
-57 50 16 56 49 15 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 57 50 17 57 50 16 57 50 16 57 50 16 57 50 16
-56 49 15 56 49 15 54 47 16 53 46 15 53 46 15 44 38 13 44 38 13 44 38 13
-44 38 13 44 38 13 37 32 10 37 32 10 37 32 10 28 25 13 28 25 13 22 19 6
-22 19 6 22 19 6 22 19 6 15 13 5 15 13 5 9 8 4 9 8 4 4 4 2
-4 4 2 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 2 2 5 3 1
-5 4 2 9 8 4 9 8 4 14 10 4 15 13 5 19 15 5 22 19 6 22 19 6
-22 19 6 30 25 8 30 25 8 37 32 10 37 32 10 37 32 10 37 32 10 44 38 13
-44 38 13 44 38 13 44 38 13 51 43 14 51 43 14 51 43 14 53 46 15 53 46 15
-54 47 16 56 49 15 54 47 16 57 50 16 56 49 15 57 50 16 56 49 15 56 49 15
-57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 17 57 50 17 57 50 16 57 50 16 57 50 16 57 50 16
-57 50 16 57 50 16 57 50 16 56 49 15 57 50 16 57 50 16 53 46 15 53 46 15
-53 46 15 53 46 15 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 37 32 10
-37 32 10 37 32 10 37 32 10 28 25 13 30 25 8 30 25 8 22 19 6 22 19 6
-22 19 6 15 13 5 15 13 5 9 8 4 7 6 2 7 6 2 5 3 1 2 1 0
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
-2 2 2 5 3 1 5 4 2 9 8 4 9 8 4 14 10 4 15 13 5 17 15 7
-19 15 5 22 19 6 22 19 6 30 25 8 30 25 8 30 25 8 37 32 10 37 32 10
-37 32 10 39 33 11 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 51 43 14
-51 43 14 51 43 14 53 46 15 53 46 15 53 46 15 53 46 15 53 46 15 56 49 15
-56 49 15 56 49 15 57 50 16 57 50 16 56 49 15 56 49 15 56 49 15 56 49 15
-56 49 15 57 50 16 57 50 16 57 50 16 57 50 16 57 50 16 56 49 15 56 49 15
-53 46 15 54 47 16 53 46 15 53 46 15 44 38 13 53 46 15 44 38 13 44 38 13
-44 38 13 44 38 13 44 38 13 44 38 13 37 32 10 37 32 10 37 32 10 37 32 10
-28 25 13 28 25 13 22 19 6 30 25 8 22 19 6 17 15 7 17 15 7 15 13 5
-15 13 5 9 8 4 9 8 4 7 6 2 4 4 2 2 2 2 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 0 2 2 2 5 3 1 5 3 1 9 8 4 9 8 4 14 10 4
-15 13 5 17 15 7 17 15 7 22 19 6 22 19 6 22 19 6 28 25 13 30 25 8
-30 25 8 30 25 8 37 32 10 37 32 10 37 32 10 37 32 10 44 38 13 44 38 13
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 53 46 15 44 38 13 51 43 14
-51 43 14 53 46 15 51 43 14 53 46 15 53 46 15 53 46 15 53 46 15 53 46 15
-53 46 15 53 46 15 51 43 14 53 46 15 51 43 14 51 43 14 53 46 15 44 38 13
-51 43 14 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13
-37 32 10 37 32 10 37 32 10 37 32 10 37 32 10 28 25 13 30 25 8 28 25 13
-22 19 6 22 19 6 22 19 6 17 15 7 15 13 5 15 13 5 15 13 5 9 8 4
-7 6 2 4 4 2 3 3 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 0 2 2 2 4 2 0 5 4 2 7 6 2
-9 8 4 10 7 2 15 13 5 15 13 5 15 13 5 19 15 5 22 19 6 22 19 6
-24 19 6 30 25 8 30 25 8 30 25 8 30 25 8 37 32 10 37 32 10 37 32 10
-37 32 10 37 32 10 39 33 11 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13
-44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13 44 38 13
-44 38 13 44 38 13 39 33 11 39 33 11 37 32 10 37 32 10 37 32 10 37 32 10
-37 32 10 28 25 13 28 25 13 30 25 8 22 19 6 30 25 8 22 19 6 22 19 6
-22 19 6 17 15 7 15 13 5 15 13 5 9 8 4 9 8 4 7 6 2 4 4 2
-4 4 2 3 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 3 2 3 3 2
-5 3 1 7 6 2 7 6 2 9 8 4 14 10 4 15 13 5 15 13 5 17 15 7
-19 15 5 19 15 5 22 19 6 22 19 6 24 19 6 28 25 13 22 19 6 30 25 8
-28 25 13 37 32 10 28 25 13 37 32 10 28 25 13 37 32 10 37 32 10 37 32 10
-37 32 10 37 32 10 37 32 10 37 32 10 39 33 11 37 32 10 44 38 13 39 33 11
-39 33 11 39 33 11 37 32 10 37 32 10 37 32 10 37 32 10 37 32 10 37 32 10
-37 32 10 28 25 13 37 32 10 37 32 10 37 32 10 30 25 8 28 25 13 22 19 6
-30 25 8 22 19 6 22 19 6 22 19 6 22 19 6 17 15 7 17 15 7 15 13 5
-9 8 4 15 13 5 9 8 4 7 6 2 7 6 2 4 4 2 3 3 2 3 2 0
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 0 2 2 2 5 3 1 5 3 1 5 4 2 7 6 2 9 8 4 10 7 2
-15 13 5 15 13 5 15 13 5 19 15 5 19 15 5 22 19 6 22 19 6 22 19 6
-24 19 6 22 19 6 30 25 8 30 25 8 30 25 8 28 25 13 28 25 13 30 25 8
-37 32 10 28 25 13 37 32 10 30 25 8 37 32 10 37 32 10 28 25 13 37 32 10
-37 32 10 28 25 13 37 32 10 30 25 8 37 32 10 28 25 13 30 25 8 28 25 13
-30 25 8 30 25 8 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6
-22 19 6 17 15 7 17 15 7 15 13 5 15 13 5 9 8 4 9 8 4 9 8 4
-9 8 4 7 6 2 4 4 2 4 4 2 1 1 0 1 1 0 1 1 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 2 2 2 2 2 2 4 4 2 5 4 2 7 6 2 7 6 2
-9 8 4 9 8 4 9 8 4 15 13 5 15 13 5 15 13 5 17 15 7 17 15 7
-22 19 6 22 19 6 22 19 6 17 15 7 22 19 6 22 19 6 22 19 6 22 19 6
-22 19 6 22 19 6 22 19 6 30 25 8 22 19 6 28 25 13 30 25 8 22 19 6
-28 25 13 30 25 8 22 19 6 28 25 13 22 19 6 30 25 8 22 19 6 30 25 8
-22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 17 15 7
-15 13 5 15 13 5 15 13 5 15 13 5 9 8 4 9 8 4 7 6 2 7 6 2
-4 4 2 4 4 2 1 1 0 3 3 2 1 1 1 1 1 1 1 1 1 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
-2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 4 4 2 4 4 2 6 6 4
-6 6 4 9 8 4 9 8 4 9 8 4 9 8 4 11 10 8 14 10 4 15 13 5
-11 10 8 15 13 5 15 13 5 17 15 7 15 13 5 17 15 7 22 19 6 17 15 7
-22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 22 19 6
-22 19 6 22 19 6 22 19 6 22 19 6 22 19 6 20 19 13 22 19 6 17 15 7
-22 19 6 17 15 7 22 19 6 17 15 7 17 15 7 14 12 8 11 10 8 15 13 5
-10 10 9 9 8 4 9 8 4 6 6 4 9 8 4 6 6 4 6 6 4 5 5 4
-4 4 2 4 4 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3
-3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 5 5 4 6 6 4 7 7 6 7 7 6 9 8 4 9 8 4 7 7 6
-9 8 4 9 9 7 9 9 7 9 9 7 15 13 5 15 13 5 14 12 8 17 15 7
-14 12 8 17 15 7 14 12 8 17 15 7 17 15 7 17 15 7 17 15 7 17 15 7
-17 15 7 20 19 13 17 15 7 17 15 7 17 15 7 17 15 7 17 15 7 14 12 8
-17 15 7 14 12 8 14 12 8 10 10 9 9 9 7 9 9 7 9 9 7 9 8 4
-9 8 4 8 8 7 6 6 4 7 7 6 5 5 4 5 5 4 4 4 4 5 5 4
-4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1
-2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2
-2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 6 6 4 6 6 4 7 7 6
-8 8 7 9 8 4 9 8 4 9 8 4 9 9 7 7 7 6 9 9 7 9 9 7
-9 9 7 11 10 8 9 9 7 14 12 8 10 10 9 14 12 8 14 12 8 14 12 8
-14 12 8 10 10 9 14 12 8 14 12 8 14 12 8 11 11 11 11 10 8 14 12 8
-10 10 9 10 10 9 9 9 7 9 9 7 11 10 8 9 9 7 8 8 7 7 7 6
-7 7 6 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4
-4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5
-5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 3 3 3
-3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5
-5 5 5 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7
-7 7 7 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 6 7 7 6 7 7 6 8 8 7 8 8 7 9 9 7 9 9 7
-9 9 7 9 9 7 9 9 7 11 10 8 11 10 8 10 10 9 10 10 9 10 10 9
-10 10 9 14 12 8 11 11 11 11 11 11 10 10 9 14 12 8 10 10 9 11 11 11
-10 10 9 10 10 9 9 9 7 10 10 9 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7
-7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5
-4 4 4 4 4 4 3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2
-2 2 2 3 3 3 3 3 3 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6
-7 7 7 7 7 7 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9
-9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 9 10 10 9 10 10 9
-10 10 9 10 10 10 10 10 10 10 10 9 11 11 11 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9
-9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 7 7 7 7 7 7 6 6 6
-6 6 6 5 5 5 5 5 5 4 4 4 3 3 3 3 3 3 2 2 2 2 2 2
-1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 3 3 3
-3 3 3 4 4 4 5 5 5 5 5 5 6 6 6 7 7 7 7 7 7 8 8 8
-9 9 9 9 9 9 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11
-11 11 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11
-11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 12 12 12 12 12 12
-12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11
-11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-11 11 11 11 11 11 11 11 11 10 10 10 10 10 10 9 9 9 9 9 9 8 8 8
-7 7 7 7 7 7 6 6 6 5 5 5 5 5 5 4 4 4 3 3 3 3 3 3
-2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 3 3 3 3 3 3 4 4 4
-4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 9 9 9 10 10 10
-11 11 11 11 11 11 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 14 14 14
-14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13
-13 13 13 13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15
-14 14 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13
-14 14 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 14 14 14
-13 13 13 13 13 13 13 13 13 12 12 12 12 12 12 11 11 11 11 11 11 10 10 10
-9 9 9 8 8 8 8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 4 4 4
-3 3 3 3 3 3 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 2 2 2 3 3 3 3 3 3 4 4 4 5 5 5
-6 6 6 7 7 7 8 8 8 9 9 9 9 9 9 10 10 10 11 11 11 12 12 12
-13 13 13 13 13 13 14 14 14 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16
-16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 16
-16 16 16 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 16 16 16 16 16 16 16 16 16 16 16 16 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16
-16 16 16 16 16 16 15 15 15 15 15 15 14 14 14 13 13 13 13 13 13 12 12 12
-11 11 11 10 10 10 9 9 9 9 9 9 8 8 8 7 7 7 6 6 6 5 5 5
-4 4 4 3 3 3 3 3 3 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 2 2 2 3 3 3 4 4 4 4 4 4 5 5 5 6 6 6
-7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14
-15 15 15 16 16 16 16 16 16 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20
-20 20 20 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 17 17 17 17 17 17 16 16 16 16 16 16 15 15 15 14 14 14
-13 13 13 12 12 12 11 11 11 10 10 10 9 9 9 8 8 8 7 7 7 6 6 6
-5 5 5 4 4 4 4 4 4 3 3 3 2 2 2 1 1 1 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8
-9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16
-17 17 17 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21
-21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-22 22 22 22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 22 22 22 22 22 22 22 22 22
-21 21 21 21 21 21 21 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21
-21 21 21 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 17 17 17 16 16 16
-15 15 15 14 14 14 13 13 13 12 12 12 11 11 11 10 10 10 9 9 9 8 8 8
-7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
-2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9
-10 10 10 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16 17 17 17 19 19 19
-19 19 19 20 20 20 21 21 21 21 21 21 22 22 22 23 23 23 23 23 23 24 24 23
-24 24 23 24 24 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-25 25 25 25 25 25 25 25 25 25 25 25 24 24 23 24 24 23 24 24 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-24 24 23 24 24 23 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 24 24 23 24 24 23 24 24 23
-23 23 23 23 23 23 22 22 22 21 21 21 21 21 21 20 20 20 19 19 19 19 19 19
-17 17 17 16 16 16 15 15 15 14 14 14 13 13 13 12 12 12 10 10 10 9 9 9
-8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 10 10 10 11 11 11
-12 12 12 13 13 13 15 15 15 16 16 16 17 17 17 19 19 19 19 19 19 20 20 20
-21 21 21 22 22 22 23 23 23 24 24 23 25 25 25 25 25 25 26 26 26 26 26 26
-26 26 26 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 27 27 27 27 27 27
-27 27 27 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26
-26 26 26 25 25 25 25 25 25 24 24 23 23 23 23 22 22 22 21 21 21 20 20 20
-19 19 19 19 19 19 17 17 17 16 16 16 15 15 15 13 13 13 12 12 12 11 11 11
-10 10 10 8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3
-4 4 4 5 5 5 6 6 6 7 7 7 9 9 9 10 10 10 11 11 11 13 13 13
-14 14 14 15 15 15 16 16 16 19 19 19 19 19 19 20 20 20 21 21 21 22 22 22
-24 24 23 25 25 25 25 25 25 26 26 26 27 27 27 29 29 29 29 29 29 29 29 29
-29 29 29 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 30 30 30 30 30 30
-30 30 30 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 30 30 30 30 30 30 30 30 30 30 30 30 29 29 29 29 29 29
-29 29 29 29 29 29 27 27 27 26 26 26 25 25 25 25 25 25 24 24 23 22 22 22
-21 21 21 20 20 20 19 19 19 19 19 19 16 16 16 15 15 15 14 14 14 13 13 13
-11 11 11 10 10 10 9 9 9 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3
-2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 3 3 3 3 3 3
-4 4 4 6 6 6 7 7 7 8 8 8 10 10 10 11 11 11 13 13 13 14 14 14
-16 16 16 17 17 17 19 19 19 20 20 20 21 21 21 22 22 22 24 24 23 25 25 25
-26 26 26 27 27 27 29 29 29 29 29 29 30 30 30 30 30 30 31 31 31 31 31 31
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 33 33 33 33 33 33 33 33 33
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 31 31 31
-31 31 31 30 30 30 30 30 30 29 29 29 29 29 29 27 27 27 26 26 26 25 25 25
-24 24 23 22 22 22 21 21 21 20 20 20 19 19 19 17 17 17 16 16 16 14 14 14
-13 13 13 11 11 11 10 10 10 8 8 8 7 7 7 6 6 6 4 4 4 3 3 3
-3 3 3 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4
-5 5 5 7 7 7 8 8 8 10 10 10 11 11 11 13 13 13 14 14 14 16 16 16
-17 17 17 19 19 19 20 20 20 21 21 21 23 23 23 25 25 25 26 26 26 27 27 27
-29 29 29 29 29 29 30 30 30 31 31 31 32 32 32 33 33 33 34 34 34 34 34 34
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 36 36 36
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 36 36 36 36 36 36 36 36 36 36 36 36 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 36 36 36 36 36 36 36 36 36 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
-36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 36 36 36 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 36 36 36 36 36 36 36 36 36 36 36 36 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-36 36 36 36 36 36 36 36 36 36 36 36 35 35 35 35 35 35 35 35 35 34 34 34
-34 34 34 33 33 33 32 32 32 31 31 31 30 30 30 29 29 29 29 29 29 27 27 27
-26 26 26 25 25 25 23 23 23 21 21 21 20 20 20 19 19 19 17 17 17 16 16 16
-14 14 14 13 13 13 11 11 11 10 10 10 8 8 8 7 7 7 5 5 5 4 4 4
-3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
-6 6 6 8 8 8 9 9 9 11 11 11 13 13 13 14 14 14 16 16 16 17 17 17
-19 19 19 20 20 20 22 22 22 24 24 23 25 25 25 26 26 26 29 29 29 29 29 29
-31 31 31 32 32 32 33 33 33 34 34 34 35 35 35 35 35 35 36 36 36 37 37 37
-37 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 38 38 38
-38 38 38 38 38 38 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 37 37 37 37 37 37 37 37 37 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 40 40 40 40 40 40 40 40 40 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 38 38 38 38 38 38 37 37 37 37 37 37
-36 36 36 35 35 35 35 35 35 34 34 34 33 33 33 32 32 32 31 31 31 29 29 29
-29 29 29 26 26 26 25 25 25 24 24 23 22 22 22 20 20 20 19 19 19 17 17 17
-16 16 16 14 14 14 13 13 13 11 11 11 9 9 9 8 8 8 6 6 6 5 5 5
-4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 3 3 3 3 3 3 5 5 5 6 6 6
-7 7 7 9 9 9 11 11 11 12 12 12 14 14 14 16 16 16 17 17 17 19 19 19
-21 21 21 22 22 22 24 24 23 26 26 26 27 27 27 29 29 29 30 30 30 32 32 32
-33 33 33 34 34 34 35 35 35 37 37 37 37 37 37 38 38 38 39 39 39 40 40 40
-40 40 40 40 40 40 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 40 40 40 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 41 41 41
-41 41 41 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 40 40 40 40 40 40 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 41 41 41 41 41 41 41 41 41
-40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 41 41 41 41 41 41 40 40 40 40 40 40 40 40 40
-39 39 39 38 38 38 37 37 37 37 37 37 35 35 35 34 34 34 33 33 33 32 32 32
-30 30 30 29 29 29 27 27 27 26 26 26 24 24 23 22 22 22 21 21 21 19 19 19
-17 17 17 16 16 16 14 14 14 12 12 12 11 11 11 9 9 9 7 7 7 6 6 6
-5 5 5 3 3 3 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 7 7 7
-8 8 8 10 10 10 12 12 12 13 13 13 16 16 16 17 17 17 19 19 19 20 20 20
-22 22 22 24 24 23 26 26 26 27 27 27 29 29 29 31 31 31 32 32 32 34 34 34
-35 35 35 37 37 37 38 38 38 39 39 39 40 40 40 41 41 41 42 42 42 42 42 42
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 44 44 44 44 44 44 44 44 44
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 45 45 45 45 45 45 45 45 45
-45 45 45 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 44 44 44 44 44 44 44 44 44 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 44 44 44 44 44 44 44 44 44 43 43 43 43 43 43 42 42 42
-42 42 42 41 41 41 40 40 40 39 39 39 38 38 38 37 37 37 35 35 35 34 34 34
-32 32 32 31 31 31 29 29 29 27 27 27 26 26 26 24 24 23 22 22 22 20 20 20
-19 19 19 17 17 17 16 16 16 13 13 13 12 12 12 10 10 10 8 8 8 7 7 7
-5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 3 3 3 3 3 3 5 5 5 6 6 6 8 8 8
-9 9 9 11 11 11 13 13 13 15 15 15 17 17 17 19 19 19 20 20 20 22 22 22
-24 24 23 26 26 26 29 29 29 30 30 30 31 31 31 33 33 33 35 35 35 36 36 36
-38 38 38 39 39 39 40 40 40 42 42 42 43 43 43 43 43 43 44 44 44 45 45 45
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 46 46 46
-46 46 46 46 46 46 46 46 46 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 48 48 48 48 48 48 48 48 48
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 46 46 46 46 46 46 46 46 46 45 45 45
-44 44 44 43 43 43 43 43 43 42 42 42 40 40 40 39 39 39 38 38 38 36 36 36
-35 35 35 33 33 33 31 31 31 30 30 30 29 29 29 26 26 26 24 24 23 22 22 22
-20 20 20 19 19 19 17 17 17 15 15 15 13 13 13 11 11 11 9 9 9 8 8 8
-6 6 6 5 5 5 3 3 3 3 3 3 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 7 7 7 9 9 9
-10 10 10 12 12 12 14 14 14 16 16 16 19 19 19 20 20 20 22 22 22 24 24 23
-26 26 26 27 27 27 30 30 30 31 31 31 33 33 33 35 35 35 37 37 37 38 38 38
-40 40 40 42 42 42 43 43 43 44 44 44 45 45 45 46 46 46 48 48 48 48 48 48
-48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 51 51 50 51 51 50
-51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50
-51 51 50 51 51 50 51 51 50 51 51 50 49 49 49 51 51 50 49 49 49 49 49 49
-49 49 49 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 48 48 48 51 51 50 49 49 49 51 51 50
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 48 48 48 51 51 50 49 49 49 51 51 50
-51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50
-49 49 49 51 51 50 49 49 49 49 49 49 49 49 49 49 49 49 48 48 48 48 48 48
-48 48 48 46 46 46 45 45 45 44 44 44 43 43 43 42 42 42 40 40 40 38 38 38
-37 37 37 35 35 35 33 33 33 31 31 31 30 30 30 27 27 27 26 26 26 24 24 23
-22 22 22 20 20 20 19 19 19 16 16 16 14 14 14 12 12 12 10 10 10 9 9 9
-7 7 7 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 2 2 2 3 3 3 5 5 5 6 6 6 8 8 8 10 10 10
-11 11 11 13 13 13 15 15 15 17 17 17 19 19 19 21 21 21 23 23 23 25 25 25
-27 27 27 29 29 29 31 31 31 33 33 33 35 35 35 37 37 37 39 39 39 41 41 41
-42 42 42 44 44 44 45 45 45 48 48 48 48 48 48 72 72 72 130 128 124 157 154 144
-167 167 167 205 205 205 205 205 205 224 222 210 205 205 205 224 222 210 205 205 205 201 199 182
-167 167 167 130 128 124 113 113 113 66 66 66 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 51 50 51 51 50 51 51 50
-52 52 52 52 52 52 93 93 92 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 89 88 84 48 48 48 51 51 50 49 49 49 51 51 50 49 49 49 51 51 50
-49 49 49 51 51 50 49 49 49 51 51 50 49 49 49 51 51 50 49 49 49 51 51 50
-49 49 49 51 51 50 51 51 50 51 51 50 51 51 50 72 72 72 110 108 101 130 128 124
-157 154 144 167 167 167 167 167 167 167 167 167 167 167 167 167 167 167 130 128 124 130 128 124
-89 88 84 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 58 58 58 113 113 113
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 113 113 113 89 88 84
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 58 58 58 110 108 101 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 110 108 101 66 66 66 51 51 50 51 51 50
-51 51 50 51 51 50 49 49 49 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50
-51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50 51 51 50
-89 88 84 130 128 124 157 154 144 167 167 167 205 205 205 224 222 210 205 205 205 224 222 210
-205 205 205 224 222 210 167 167 167 167 167 167 130 128 124 110 108 101 53 53 53 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52
-51 51 50 51 51 50 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-89 88 84 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 72 72 72 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 72 72 72 53 53 53 53 53 53 53 53 53
-53 53 53 53 53 53 53 53 53 53 53 53 65 65 65 113 113 113 130 128 124 167 167 167
-201 199 182 205 205 205 224 222 210 205 205 205 224 222 210 205 205 205 205 205 205 167 167 167
-157 154 144 130 128 124 72 72 72 48 48 48 45 45 45 44 44 44 42 42 42 41 41 41
-39 39 39 37 37 37 35 35 35 33 33 33 31 31 31 29 29 29 27 27 27 25 25 25
-23 23 23 21 21 21 19 19 19 17 17 17 15 15 15 13 13 13 11 11 11 10 10 10
-8 8 8 6 6 6 5 5 5 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 3 3 3 4 4 4 5 5 5 7 7 7 9 9 9 10 10 10
-12 12 12 14 14 14 16 16 16 19 19 19 20 20 20 23 23 23 25 25 25 27 27 27
-29 29 29 31 31 31 33 33 33 35 35 35 37 37 37 39 39 39 41 41 41 43 43 43
-45 45 45 46 46 46 58 58 58 157 154 144 230 228 217 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 130 128 124 55 55 54 55 55 54
-55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-93 93 92 230 228 217 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 167 167 167 89 88 84 53 53 53 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 53 53 53
-53 53 53 52 52 52 93 93 92 167 167 167 235 234 229 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 205 205 205 113 113 113 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 55 55 54 55 55 54 53 53 53 130 128 124 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-235 234 229 167 167 167 89 88 84 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 55 55 54 52 52 52 130 128 124 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 157 154 144
-62 62 62 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53
-53 53 53 53 53 53 53 53 53 52 52 52 52 52 52 89 88 84 167 167 167 235 234 229
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182
-93 93 92 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 53 53 53 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 53 53 53 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 55 55 54 62 62 62 205 205 205 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 53 53 53 130 128 124 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 230 228 217 157 154 144 58 58 58 45 45 45 43 43 43
-41 41 41 39 39 39 37 37 37 35 35 35 33 33 33 31 31 31 29 29 29 27 27 27
-25 25 25 23 23 23 20 20 20 19 19 19 16 16 16 14 14 14 12 12 12 10 10 10
-9 9 9 7 7 7 5 5 5 4 4 4 3 3 3 1 1 1 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 2 2 2 3 3 3 4 4 4 6 6 6 8 8 8 9 9 9 11 11 11
-13 13 13 16 16 16 17 17 17 20 20 20 21 21 21 24 24 23 26 26 26 29 29 29
-30 30 30 32 32 32 35 35 35 37 37 37 39 39 39 41 41 41 43 43 43 45 45 45
-48 48 48 113 113 113 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210 89 88 84
-55 55 54 55 55 54 58 58 58 55 55 54 55 55 54 55 55 54 58 58 58 72 72 72
-235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 62 62 62 55 55 54
-55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-66 66 66 201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 255 255 255 205 205 205 89 88 84 55 55 54 55 55 54
-55 55 54 55 55 54 55 55 54 55 55 54 93 93 92 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 130 128 124 58 58 58 58 58 58 55 55 54 55 55 54
-55 55 54 55 55 54 58 58 58 93 93 92 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-235 234 229 93 93 92 58 58 58 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 55 55 54 58 58 58 167 167 167 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 201 199 182 65 65 65 58 58 58 58 58 58 58 58 58 55 55 54 55 55 54
-58 58 58 55 55 54 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 53 53 53 58 58 58 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 62 62 62 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 167 167 167 62 62 62 58 58 58 58 58 58 58 58 58 58 58 58
-89 88 84 224 222 210 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 113 113 113 48 48 48
-43 43 43 41 41 41 39 39 39 37 37 37 35 35 35 32 32 32 30 30 30 29 29 29
-26 26 26 24 24 23 21 21 21 20 20 20 17 17 17 16 16 16 13 13 13 11 11 11
-9 9 9 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 2 2 2 3 3 3 5 5 5 6 6 6 8 8 8 10 10 10 12 12 12
-14 14 14 16 16 16 19 19 19 20 20 20 23 23 23 25 25 25 27 27 27 30 30 30
-32 32 32 34 34 34 36 36 36 39 39 39 41 41 41 43 43 43 45 45 45 48 48 48
-157 154 144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-93 93 92 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 55 55 54 157 154 144
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 72 72 72
-58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 72 72 72
-230 228 217 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 93 93 92 58 58 58
-58 58 58 58 58 58 58 58 58 55 55 54 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 53 53 53 201 199 182 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 89 88 84 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 61 61 59 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 72 72 72 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 53 53 53 201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 201 199 182 62 62 62 58 58 58 58 58 58 58 58 58 62 62 62 93 93 92
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144
-45 45 45 43 43 43 41 41 41 39 39 39 36 36 36 34 34 34 32 32 32 30 30 30
-27 27 27 25 25 25 23 23 23 20 20 20 19 19 19 16 16 16 14 14 14 12 12 12
-10 10 10 8 8 8 6 6 6 5 5 5 3 3 3 2 2 2 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 3 3 3 4 4 4 5 5 5 7 7 7 9 9 9 11 11 11 13 13 13
-15 15 15 17 17 17 19 19 19 21 21 21 24 24 23 26 26 26 29 29 29 31 31 31
-33 33 33 35 35 35 38 38 38 40 40 40 43 43 43 45 45 45 48 48 48 130 128 124
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 87 85 74 58 58 58 62 62 62 61 61 59 61 61 59 62 62 62 201 199 182
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182
-58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 62 62 62 230 228 217
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 72 72 72
-62 62 62 61 61 59 62 62 62 58 58 58 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 110 108 101 58 58 58 62 62 62
-61 61 59 62 62 62 62 62 62 230 228 217 246 246 246 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 205 205 205 65 65 65 62 62 62 62 62 62 61 61 59
-61 61 59 58 58 58 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 58 58 58 58 58 58 62 62 62 61 61 59 61 61 59 62 62 62 61 61 59
-62 62 62 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-205 205 205 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 89 88 84 246 246 246
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-113 113 113 46 46 46 43 43 43 40 40 40 38 38 38 35 35 35 33 33 33 31 31 31
-29 29 29 26 26 26 24 24 23 21 21 21 19 19 19 17 17 17 15 15 15 13 13 13
-11 11 11 9 9 9 7 7 7 5 5 5 4 4 4 3 3 3 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 3 3 3 4 4 4 6 6 6 8 8 8 9 9 9 11 11 11 13 13 13
-16 16 16 19 19 19 20 20 20 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32
-35 35 35 37 37 37 39 39 39 42 42 42 44 44 44 45 45 45 65 65 65 235 234 229
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229
-167 167 167 157 154 144 93 93 92 110 108 101 93 93 92 110 108 101 113 113 113 130 128 124
-201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 205 205 205 62 62 62 62 62 62 62 62 62 62 62 62 58 58 58 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 157 154 144
-130 128 124 157 154 144 130 128 124 157 154 144 130 128 124 157 154 144 167 167 167 230 228 217
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 58 58 58 61 61 59 58 58 58 61 61 59 58 58 58 167 167 167 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 205 205 205
-157 154 144 130 128 124 157 154 144 130 128 124 157 154 144 167 167 167 205 205 205 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167
-62 62 62 62 62 62 62 62 62 58 58 58 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 130 128 124 157 154 144 130 128 124 157 154 144
-130 128 124 157 154 144 130 128 124 167 167 167 201 199 182 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 62 62 62 62 62 62
-62 62 62 62 62 62 58 58 58 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 157 154 144 157 154 144 130 128 124 157 154 144 130 128 124 157 154 144
-130 128 124 157 154 144 130 128 124 157 154 144 205 205 205 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 157 154 144 130 128 124 157 154 144 130 128 124 157 154 144
-130 128 124 157 154 144 201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 113 113 113 62 62 62 61 61 59 61 61 59 62 62 62
-61 61 59 113 113 113 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 224 222 210 167 167 167 130 128 124 93 93 92 110 108 101 93 93 92
-110 108 101 113 113 113 157 154 144 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 62 62 62 62 62 62 62 62 62
-62 62 62 62 62 62 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-157 154 144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210
-66 66 66 65 65 65 62 62 62 62 62 62 62 62 62 58 58 58 205 205 205 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182
-157 154 144 113 113 113 93 93 92 110 108 101 93 93 92 110 108 101 130 128 124 167 167 167
-235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 62 62 62 44 44 44 42 42 42 39 39 39 37 37 37 35 35 35 32 32 32
-30 30 30 27 27 27 25 25 25 22 22 22 20 20 20 19 19 19 16 16 16 13 13 13
-11 11 11 9 9 9 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 3 3 3 5 5 5 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14
-16 16 16 19 19 19 21 21 21 23 23 23 26 26 26 29 29 29 31 31 31 33 33 33
-35 35 35 38 38 38 40 40 40 43 43 43 45 45 45 48 48 48 157 154 144 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 72 72 72
-62 62 62 62 62 62 62 62 62 66 66 66 65 65 65 65 65 65 62 62 62 66 66 66
-66 66 66 89 88 84 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 93 93 92 65 65 65 62 62 62 62 62 62 62 62 62 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 66 66 66 66 66 66
-66 66 66 65 65 65 66 66 66 65 65 65 66 66 66 65 65 65 66 66 66 66 66 66
-130 128 124 235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-235 234 229 65 65 65 62 62 62 62 62 62 62 62 62 72 72 72 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 72 72 72 58 58 58
-65 65 65 66 66 66 66 66 66 65 65 65 62 62 62 65 65 65 66 66 66 110 108 101
-224 222 210 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-72 72 72 62 62 62 62 62 62 62 62 62 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65
-66 66 66 66 66 66 66 66 66 65 65 65 62 62 62 72 72 72 167 167 167 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 65 65 65
-62 62 62 62 62 62 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 167 167 167 62 62 62 65 65 65 66 66 66 65 65 65 66 66 66 65 65 65
-66 66 66 65 65 65 66 66 66 65 65 65 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 224 222 210 65 65 65 65 65 65 65 65 65 66 66 66 65 65 65
-65 65 65 65 65 65 62 62 62 72 72 72 205 205 205 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 201 199 182 58 58 58 62 62 62 62 62 62 62 62 62
-62 62 62 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-235 234 229 130 128 124 62 62 62 62 62 62 65 65 65 66 66 66 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 110 108 101 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 66 66 66 65 65 65 65 65 65
-65 65 65 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 65 65 65 130 128 124
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210 72 72 72
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 93 93 92 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 72 72 72 66 66 66
-62 62 62 62 62 62 66 66 66 65 65 65 66 66 66 65 65 65 66 66 66 66 66 66
-72 72 72 157 154 144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 45 45 45 43 43 43 40 40 40 38 38 38 35 35 35 33 33 33
-31 31 31 29 29 29 26 26 26 23 23 23 21 21 21 19 19 19 16 16 16 14 14 14
-12 12 12 10 10 10 8 8 8 6 6 6 5 5 5 3 3 3 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 3 3 3 5 5 5 7 7 7 9 9 9 10 10 10 13 13 13 15 15 15
-17 17 17 19 19 19 21 21 21 24 24 23 26 26 26 29 29 29 32 32 32 34 34 34
-37 37 37 39 39 39 42 42 42 44 44 44 48 48 48 53 53 53 235 234 229 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 66 66 66 66 66 66
-66 66 66 65 65 65 66 66 66 201 199 182 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 201 199 182 65 65 65 65 65 65 65 65 65 58 58 58 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 65 65 65
-62 62 62 89 88 84 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 113 113 113 62 62 62 62 62 62 62 62 62 130 128 124 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 65 65 65 62 62 62
-72 72 72 230 228 217 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-113 113 113 65 65 65 65 65 65 58 58 58 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 201 199 182
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 65 65 65
-65 65 65 65 65 65 62 62 62 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 65 65 65 66 66 66 72 72 72 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 235 234 229 62 62 62 65 65 65 62 62 62 62 62 62
-93 93 92 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-93 93 92 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 66 66 66 72 72 72 235 234 229 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 65 65 65 65 65 65
-65 65 65 62 62 62 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-157 154 144 65 65 65 65 65 65 66 66 66 65 65 65 62 62 62 130 128 124 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 89 88 84 66 66 66
-66 66 66 65 65 65 65 65 65 65 65 65 72 72 72 167 167 167 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 65 65 65 66 66 66 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 66 66 66 65 65 65
-65 65 65 72 72 72 130 128 124 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 235 234 229 49 49 49 44 44 44 42 42 42 39 39 39 37 37 37 34 34 34
-32 32 32 29 29 29 26 26 26 24 24 23 21 21 21 19 19 19 17 17 17 15 15 15
-13 13 13 10 10 10 9 9 9 7 7 7 5 5 5 3 3 3 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 4 4 4 5 5 5 7 7 7 9 9 9 11 11 11 13 13 13 16 16 16
-17 17 17 20 20 20 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32 35 35 35
-38 38 38 40 40 40 43 43 43 45 45 45 48 48 48 93 93 92 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 65 65 65 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 65 65 65 65 65 65 72 72 72 246 246 246 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 62 62 62 65 65 65 65 65 65 65 65 65 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 130 128 124 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 167 167 167 66 66 66 65 65 65 65 65 65 167 167 167 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 89 88 84 62 62 62 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 130 128 124 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-167 167 167 65 65 65 65 65 65 65 65 65 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 93 93 92
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 66 66 66
-66 66 66 65 65 65 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 224 222 210 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 72 72 72 62 62 62 65 65 65 65 65 65
-157 154 144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144
-62 62 62 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 66 66 66 113 113 113 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 65 65 65 66 66 66
-66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 58 58 58 66 66 66 65 65 65 65 65 65 113 113 113 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 93 93 92 65 65 65 65 65 65
-66 66 66 66 66 66 65 65 65 66 66 66 66 66 66 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 72 72 72 65 65 65 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 65 65 65 66 66 66 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 93 93 92 46 46 46 43 43 43 40 40 40 38 38 38 35 35 35
-32 32 32 30 30 30 27 27 27 25 25 25 22 22 22 20 20 20 17 17 17 15 15 15
-13 13 13 11 11 11 9 9 9 7 7 7 5 5 5 4 4 4 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-3 3 3 4 4 4 5 5 5 7 7 7 9 9 9 11 11 11 13 13 13 16 16 16
-19 19 19 20 20 20 23 23 23 25 25 25 29 29 29 31 31 31 33 33 33 36 36 36
-39 39 39 41 41 41 44 44 44 46 46 46 49 49 49 157 154 144 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 113 113 113 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 72 72 72 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 205 205 205 65 65 65 65 65 65 72 72 72 205 205 205 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 205 205 205 65 65 65 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-65 65 65 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-167 167 167 65 65 65 65 65 65 62 62 62 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 72 72 72
-235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 66 66 66
-66 66 66 65 65 65 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 130 128 124 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 65 65 65 65 65 65 66 66 66
-205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 72 72 72
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 66 66 66 66 66 66
-66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-157 154 144 66 66 66 66 66 66 66 66 66 93 93 92 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 93 93 92 65 65 65 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 93 93 92 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 65 65 65 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 93 93 92 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 157 154 144 46 46 46 44 44 44 41 41 41 38 38 38 36 36 36
-33 33 33 31 31 31 29 29 29 25 25 25 23 23 23 20 20 20 19 19 19 16 16 16
-13 13 13 11 11 11 9 9 9 7 7 7 5 5 5 4 4 4 3 3 3 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14 16 16 16
-19 19 19 21 21 21 23 23 23 26 26 26 29 29 29 31 31 31 34 34 34 37 37 37
-39 39 39 42 42 42 45 45 45 48 48 48 49 49 49 201 199 182 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 72 72 72 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 110 108 101 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 130 128 124 66 66 66 66 66 66 66 66 66 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 235 234 229 66 66 66 66 66 66 66 66 66 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 72 72 72 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-205 205 205 65 65 65 66 66 66 65 65 65 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 62 62 62
-66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 66 66 66
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 72 72 72
-65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 167 167 167
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 89 88 84 65 65 65
-66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 58 58 58 66 66 66 89 88 84 235 234 229 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 110 108 101 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 130 128 124 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 130 128 124 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 201 199 182 42 42 42 45 45 45 42 42 42 39 39 39 37 37 37
-34 34 34 31 31 31 29 29 29 26 26 26 23 23 23 21 21 21 19 19 19 16 16 16
-14 14 14 12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14 16 16 16
-19 19 19 21 21 21 24 24 23 26 26 26 29 29 29 32 32 32 35 35 35 37 37 37
-40 40 40 43 43 43 45 45 45 48 48 48 52 52 52 205 205 205 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 224 222 210 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 72 72 72 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 65 65 65 201 199 182 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 72 72 72 66 66 66 65 65 65 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 89 88 84 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-205 205 205 66 66 66 65 65 65 72 72 72 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 205 205 205 66 66 66
-66 66 66 66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 72 72 72
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 113 113 113 66 66 66
-66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-157 154 144 66 66 66 66 66 66 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 113 113 113 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 89 88 84 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 62 62 62 205 205 205 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 48 48 48 45 45 45 43 43 43 40 40 40 37 37 37
-34 34 34 32 32 32 29 29 29 26 26 26 24 24 23 21 21 21 19 19 19 16 16 16
-14 14 14 12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14 17 17 17
-19 19 19 21 21 21 24 24 23 27 27 27 29 29 29 32 32 32 35 35 35 38 38 38
-40 40 40 43 43 43 46 46 46 48 48 48 52 52 52 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 72 72 72 65 65 65
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 72 72 72 66 66 66 66 66 66 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 235 234 229 224 222 210 224 222 210 224 222 210 224 222 210
-224 222 210 224 222 210 224 222 210 224 222 210 224 222 210 224 222 210 224 222 210 224 222 210
-224 222 210 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-205 205 205 62 62 62 66 66 66 65 65 65 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 62 62 62
-66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 110 108 101 66 66 66 66 66 66 93 93 92
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 66 66 66
-66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 58 58 58 113 113 113 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 130 128 124 72 72 72 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 52 52 52 45 45 45 43 43 43 40 40 40 38 38 38
-35 35 35 32 32 32 29 29 29 27 27 27 24 24 23 21 21 21 19 19 19 17 17 17
-14 14 14 12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 15 15 15 17 17 17
-19 19 19 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32 35 35 35 38 38 38
-41 41 41 43 43 43 46 46 46 49 49 49 53 53 53 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 201 199 182 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 157 154 144 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 89 88 84 72 72 72 72 72 72 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-255 255 255 246 246 246 255 255 255 246 246 246 255 255 255 246 246 246 255 255 255 246 246 246
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-167 167 167 65 65 65 66 66 66 62 62 62 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 62 62 62
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 66 66 66
-66 66 66 66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 110 108 101
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 93 93 92
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 66 66 66
-66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-224 222 210 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 49 49 49 46 46 46 43 43 43 41 41 41 38 38 38
-35 35 35 32 32 32 30 30 30 27 27 27 25 25 25 22 22 22 19 19 19 17 17 17
-15 15 15 12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 13 13 13 15 15 15 17 17 17
-20 20 20 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32 35 35 35 38 38 38
-41 41 41 43 43 43 46 46 46 49 49 49 53 53 53 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 72 72 72 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 89 88 84 65 65 65 72 72 72 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 66 66 66 66 66 66 65 65 65 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 66 66 66
-66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 72 72 72 66 66 66 113 113 113
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 72 72 72
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 89 88 84
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 72 72 72
-65 65 65 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 66 66 66 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-205 205 205 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 205 205 205 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 49 49 49 46 46 46 43 43 43 41 41 41 38 38 38
-35 35 35 32 32 32 30 30 30 27 27 27 25 25 25 22 22 22 19 19 19 17 17 17
-15 15 15 13 13 13 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 13 13 13 15 15 15 17 17 17
-20 20 20 22 22 22 25 25 25 27 27 27 30 30 30 33 33 33 35 35 35 38 38 38
-41 41 41 44 44 44 46 46 46 49 49 49 52 52 52 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 201 199 182 66 66 66 66 66 66 66 66 66 201 199 182
-255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 65 65 65 157 154 144 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 72 72 72 72 72 72 72 72 72 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205
-66 66 66 66 66 66 66 66 66 62 62 62 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 62 62 62
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 66 66 66
-66 66 66 66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 110 108 101 65 65 65 65 65 65 113 113 113
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 93 93 92
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 66 66 66
-66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-157 154 144 65 65 65 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 87 85 74 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 62 62 62 205 205 205 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 49 49 49 46 46 46 43 43 43 41 41 41 38 38 38
-35 35 35 32 32 32 30 30 30 27 27 27 25 25 25 22 22 22 20 20 20 17 17 17
-15 15 15 13 13 13 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 13 13 13 15 15 15 17 17 17
-20 20 20 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32 35 35 35 38 38 38
-41 41 41 43 43 43 46 46 46 49 49 49 52 52 52 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 201 199 182 65 65 65 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 66 66 66 66 66 66 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 72 72 72 72 72 72 72 72 72 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182 72 72 72
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 201 199 182 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 62 62 62
-66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 72 72 72 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 110 108 101
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 72 72 72
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 93 93 92
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 72 72 72
-65 65 65 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 62 62 62 113 113 113 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 48 48 48 46 46 46 43 43 43 41 41 41 38 38 38
-35 35 35 32 32 32 30 30 30 27 27 27 25 25 25 22 22 22 19 19 19 17 17 17
-15 15 15 13 13 13 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 15 15 15 17 17 17
-19 19 19 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32 35 35 35 38 38 38
-41 41 41 43 43 43 46 46 46 49 49 49 55 55 54 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 246 246 246 201 199 182 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 72 72 72 66 66 66 66 66 66 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 65 65 65 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 62 62 62 66 66 66
-66 66 66 66 66 66 65 65 65 72 72 72 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 62 62 62
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 205 205 205 66 66 66
-66 66 66 66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 93 93 92
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 66 66 66
-66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-157 154 144 66 66 66 66 66 66 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 49 49 49 46 46 46 43 43 43 40 40 40 38 38 38
-35 35 35 32 32 32 30 30 30 27 27 27 25 25 25 22 22 22 19 19 19 17 17 17
-15 15 15 12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14 17 17 17
-19 19 19 21 21 21 24 24 23 27 27 27 29 29 29 32 32 32 35 35 35 38 38 38
-40 40 40 43 43 43 46 46 46 48 48 48 52 52 52 224 222 210 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 224 222 210 65 65 65 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 89 88 84 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 201 199 182 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 235 234 229 66 66 66 66 66 66 66 66 66 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65
-167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 62 62 62
-66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 110 108 101 66 66 66 66 66 66 72 72 72
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 130 128 124
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 110 108 101 66 66 66
-66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 58 58 58 66 66 66 93 93 92 235 234 229 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 89 88 84 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 224 222 210 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 48 48 48 46 46 46 43 43 43 40 40 40 37 37 37
-35 35 35 32 32 32 29 29 29 27 27 27 24 24 23 21 21 21 19 19 19 17 17 17
-14 14 14 12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14 16 16 16
-19 19 19 21 21 21 24 24 23 26 26 26 29 29 29 32 32 32 35 35 35 37 37 37
-40 40 40 43 43 43 45 45 45 48 48 48 48 48 48 201 199 182 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 72 72 72 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 130 128 124 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 130 128 124 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 65 65 65 230 228 217 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 224 222 210 66 66 66 66 66 66 65 65 65 235 234 229 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 201 199 182 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 62 62 62 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 205 205 205 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 72 72 72
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 205 205 205 66 66 66
-66 66 66 66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 72 72 72
-235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 72 72 72 167 167 167
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 72 72 72 66 66 66
-66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-157 154 144 66 66 66 66 66 66 66 66 66 93 93 92 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 65 65 65 72 72 72 130 128 124 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 130 128 124 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 72 72 72 246 246 246 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 167 167 167 48 48 48 45 45 45 43 43 43 40 40 40 37 37 37
-34 34 34 32 32 32 29 29 29 26 26 26 24 24 23 21 21 21 19 19 19 16 16 16
-14 14 14 12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-3 3 3 4 4 4 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14 16 16 16
-19 19 19 21 21 21 23 23 23 26 26 26 29 29 29 31 31 31 34 34 34 37 37 37
-39 39 39 42 42 42 45 45 45 48 48 48 49 49 49 157 154 144 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 89 88 84 66 66 66 66 66 66 66 66 66 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 72 72 72 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 201 199 182 66 66 66 66 66 66 66 66 66 224 222 210 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 224 222 210 65 65 65 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 65 65 65
-201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 62 62 62
-66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 72 72 72 65 65 65 66 66 66
-205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 89 88 84
-65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 235 234 229
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 66 66 66 66 66 66
-66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 58 58 58 66 66 66 66 66 66 66 66 66 110 108 101 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 157 154 144 62 62 62 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 93 93 92 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 201 199 182 65 65 65 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 130 128 124 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 157 154 144 45 45 45 45 45 45 42 42 42 39 39 39 36 36 36
-34 34 34 31 31 31 29 29 29 26 26 26 23 23 23 21 21 21 19 19 19 16 16 16
-14 14 14 11 11 11 9 9 9 8 8 8 6 6 6 4 4 4 3 3 3 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-3 3 3 4 4 4 5 5 5 7 7 7 9 9 9 11 11 11 13 13 13 16 16 16
-19 19 19 20 20 20 23 23 23 25 25 25 29 29 29 31 31 31 33 33 33 36 36 36
-38 38 38 41 41 41 44 44 44 46 46 46 52 52 52 93 93 92 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 224 222 210 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 93 93 92 246 246 246 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 66 66 66 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 65 65 65 65 65 65 72 72 72 167 167 167 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 89 88 84 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 65 65 65 72 72 72 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 205 205 205 66 66 66 66 66 66 66 66 66 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 66 66 66 66 66 66 66 66 66 62 62 62
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 66 66 66
-66 66 66 66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 65 65 65 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 66 66 66
-157 154 144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 72 72 72 130 128 124 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66
-66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246
-157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 246 246 246
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 93 93 92 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 224 222 210 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 89 88 84 46 46 46 43 43 43 41 41 41 38 38 38 36 36 36
-33 33 33 30 30 30 29 29 29 25 25 25 23 23 23 20 20 20 19 19 19 16 16 16
-13 13 13 11 11 11 9 9 9 7 7 7 5 5 5 4 4 4 3 3 3 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-3 3 3 4 4 4 5 5 5 7 7 7 9 9 9 11 11 11 13 13 13 15 15 15
-17 17 17 20 20 20 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32 35 35 35
-38 38 38 40 40 40 43 43 43 45 45 45 48 48 48 53 53 53 235 234 229 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 72 72 72 230 228 217 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66 65 65 65 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 113 113 113 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 93 93 92 66 66 66 65 65 65 65 65 65 157 154 144 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 61 61 59 65 65 65 65 65 65 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
-201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 66 66 66
-66 66 66 66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 65 65 65 66 66 66 66 66 66 66 66 66 65 65 65
-65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 110 108 101 65 65 65 66 66 66 66 66 66
-93 93 92 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-113 113 113 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 65 65 65 65 65 65 110 108 101 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 65 65 65 66 66 66
-66 66 66 66 66 66 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 72 72 72 65 65 65 66 66 66 66 66 66 66 66 66 66 66 66 130 128 124
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 167 167 167 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 224 222 210 72 72 72 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 65 65 65 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 230 228 217 45 45 45 44 44 44 43 43 43 40 40 40 38 38 38 35 35 35
-32 32 32 30 30 30 27 27 27 25 25 25 22 22 22 20 20 20 17 17 17 15 15 15
-13 13 13 11 11 11 9 9 9 7 7 7 5 5 5 4 4 4 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 3 3 3 5 5 5 7 7 7 9 9 9 10 10 10 13 13 13 15 15 15
-17 17 17 19 19 19 21 21 21 24 24 23 26 26 26 29 29 29 31 31 31 34 34 34
-37 37 37 39 39 39 42 42 42 44 44 44 48 48 48 49 49 49 157 154 144 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 87 85 74
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
-65 65 65 113 113 113 235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 93 93 92 66 66 66 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 65 65 65 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-157 154 144 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-205 205 205 65 65 65 65 65 65 62 62 62 58 58 58 89 88 84 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 72 72 72 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-66 66 66 66 66 66 66 66 66 62 62 62 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 58 58 58
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 66 66 66
-66 66 66 66 66 66 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 167 167 167 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66
-65 65 65 65 65 65 66 66 66 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 224 222 210 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 62 62 62 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 65 65 65 66 66 66 66 66 66
-66 66 66 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 72 72 72 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 66 66 66 130 128 124 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 65 65 65 65 65 65 65 65 65
-65 65 65 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 65 65 65 62 62 62 65 65 65 65 65 65 65 65 65 62 62 62 65 65 65
-130 128 124 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-113 113 113 66 66 66 66 66 66 65 65 65 66 66 66 110 108 101 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210 110 108 101 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 66 66 66 65 65 65 65 65 65
-87 85 74 205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 130 128 124 48 48 48 44 44 44 42 42 42 39 39 39 37 37 37 34 34 34
-31 31 31 29 29 29 26 26 26 24 24 23 21 21 21 19 19 19 17 17 17 15 15 15
-13 13 13 10 10 10 8 8 8 6 6 6 5 5 5 3 3 3 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 3 3 3 5 5 5 6 6 6 8 8 8 10 10 10 12 12 12 14 14 14
-16 16 16 19 19 19 21 21 21 23 23 23 26 26 26 29 29 29 31 31 31 33 33 33
-35 35 35 38 38 38 40 40 40 43 43 43 45 45 45 48 48 48 62 62 62 235 234 229
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 246 246 246
-201 199 182 157 154 144 113 113 113 110 108 101 93 93 92 110 108 101 130 128 124 157 154 144
-205 205 205 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 201 199 182 62 62 62 66 66 66 66 66 66 66 66 66 66 66 66 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 167 167 167 201 199 182
-167 167 167 167 167 167 201 199 182 167 167 167 201 199 182 167 167 167 205 205 205 246 246 246
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 201 199 182 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182
-167 167 167 201 199 182 167 167 167 167 167 167 201 199 182 167 167 167 167 167 167 201 199 182
-167 167 167 167 167 167 201 199 182 167 167 167 167 167 167 201 199 182 167 167 167 167 167 167
-62 62 62 65 65 65 65 65 65 62 62 62 201 199 182 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 201 199 182 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 61 61 59
-65 65 65 65 65 65 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 62 62 62 65 65 65 65 65 65 62 62 62 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 224 222 210 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 110 108 101 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 66 66 66 65 65 65 65 65 65
-62 62 62 110 108 101 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 167 167 167 157 154 144 110 108 101 93 93 92 110 108 101
-110 108 101 130 128 124 167 167 167 235 234 229 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 130 128 124 62 62 62 62 62 62 65 65 65
-65 65 65 65 65 65 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 66 66 66 65 65 65 62 62 62 62 62 62 62 62 62 65 65 65 62 62 62
-65 65 65 130 128 124 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 113 113 113 65 65 65 65 65 65 62 62 62 65 65 65 201 199 182 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205
-167 167 167 130 128 124 93 93 92 110 108 101 110 108 101 113 113 113 157 154 144 201 199 182
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-235 234 229 58 58 58 46 46 46 43 43 43 40 40 40 38 38 38 35 35 35 33 33 33
-30 30 30 29 29 29 25 25 25 23 23 23 21 21 21 19 19 19 16 16 16 14 14 14
-12 12 12 10 10 10 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 3 3 3 4 4 4 6 6 6 8 8 8 9 9 9 11 11 11 13 13 13
-16 16 16 19 19 19 20 20 20 22 22 22 25 25 25 27 27 27 30 30 30 32 32 32
-34 34 34 37 37 37 39 39 39 42 42 42 44 44 44 46 46 46 46 46 46 113 113 113
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-235 234 229 72 72 72 65 65 65 65 65 65 66 66 66 66 66 66 62 62 62 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167
-58 58 58 58 58 58 62 62 62 62 62 62 62 62 62 58 58 58 93 93 92 246 246 246
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210
-65 65 65 62 62 62 62 62 62 58 58 58 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 65 65 65
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 62 62 62
-62 62 62 62 62 62 62 62 62 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 62 62 62 62 62 62 62 62 62 65 65 65 62 62 62 62 62 62
-62 62 62 62 62 62 62 62 62 72 72 72 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 230 228 217 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 113 113 113 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 62 62 62 62 62 62 62 62 62
-62 62 62 58 58 58 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 205 205 205 62 62 62 62 62 62 62 62 62 62 62 62
-62 62 62 61 61 59 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-65 65 65 65 65 65 157 154 144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 246 246 246 110 108 101 62 62 62 62 62 62 65 65 65 72 72 72 235 234 229
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-110 108 101 46 46 46 44 44 44 42 42 42 39 39 39 37 37 37 34 34 34 32 32 32
-29 29 29 27 27 27 25 25 25 22 22 22 20 20 20 19 19 19 16 16 16 13 13 13
-11 11 11 9 9 9 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 3 3 3 4 4 4 5 5 5 7 7 7 9 9 9 11 11 11 13 13 13
-15 15 15 17 17 17 19 19 19 21 21 21 24 24 23 26 26 26 29 29 29 31 31 31
-33 33 33 35 35 35 38 38 38 40 40 40 42 42 42 45 45 45 46 46 46 48 48 48
-130 128 124 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229
-93 93 92 66 66 66 66 66 66 65 65 65 65 65 65 65 65 65 66 66 66 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 65 65 65
-62 62 62 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 130 128 124
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210
-62 62 62 62 62 62 62 62 62 62 62 62 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 55 55 54 62 62 62 61 61 59 61 61 59 58 58 58
-61 61 59 58 58 58 61 61 59 61 61 59 62 62 62 62 62 62 58 58 58 62 62 62
-201 199 182 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62
-62 62 62 62 62 62 62 62 62 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-62 62 62 62 62 62 62 62 62 61 61 59 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 224 222 210 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62
-62 62 62 62 62 62 62 62 62 62 62 62 61 61 59 110 108 101 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 62 62 62 61 61 59 61 61 59
-61 61 59 62 62 62 58 58 58 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 72 72 72 58 58 58 62 62 62 61 61 59 61 61 59
-61 61 59 58 58 58 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 62 62 62 62 62 62 58 58 58 62 62 62 61 61 59 61 61 59 61 61 59
-58 58 58 62 62 62 58 58 58 167 167 167 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 93 93 92 62 62 62 62 62 62 62 62 62 93 93 92
-235 234 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 130 128 124
-46 46 46 44 44 44 43 43 43 40 40 40 38 38 38 35 35 35 33 33 33 31 31 31
-29 29 29 26 26 26 24 24 23 21 21 21 19 19 19 17 17 17 15 15 15 13 13 13
-11 11 11 9 9 9 7 7 7 5 5 5 4 4 4 3 3 3 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 2 2 2 3 3 3 5 5 5 6 6 6 8 8 8 10 10 10 12 12 12
-14 14 14 16 16 16 19 19 19 20 20 20 23 23 23 25 25 25 27 27 27 29 29 29
-32 32 32 34 34 34 36 36 36 38 38 38 40 40 40 43 43 43 45 45 45 48 48 48
-52 52 52 93 93 92 230 228 217 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 89 88 84
-65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 201 199 182
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 167 167 167 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 55 55 54
-130 128 124 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210
-62 62 62 58 58 58 58 58 58 62 62 62 201 199 182 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 201 199 182 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 62 62 62
-167 167 167 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 58 58 58
-58 58 58 58 58 58 58 58 58 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 62 62 62 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 230 228 217 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 110 108 101 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 61 61 59 66 66 66 130 128 124 246 246 246 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-246 246 246 167 167 167 62 62 62 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-157 154 144 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 55 55 54 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 235 234 229 89 88 84 58 58 58 62 62 62 62 62 62
-72 72 72 201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 230 228 217 93 93 92 48 48 48
-45 45 45 43 43 43 40 40 40 38 38 38 36 36 36 34 34 34 32 32 32 29 29 29
-27 27 27 25 25 25 23 23 23 20 20 20 19 19 19 16 16 16 14 14 14 12 12 12
-10 10 10 8 8 8 6 6 6 5 5 5 3 3 3 2 2 2 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 2 2 2 3 3 3 4 4 4 6 6 6 8 8 8 9 9 9 11 11 11
-13 13 13 15 15 15 17 17 17 20 20 20 21 21 21 24 24 23 26 26 26 29 29 29
-30 30 30 32 32 32 35 35 35 37 37 37 39 39 39 41 41 41 43 43 43 45 45 45
-48 48 48 49 49 49 52 52 52 130 128 124 205 205 205 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 246 246 246 167 167 167 110 108 101 58 58 58 58 58 58
-62 62 62 62 62 62 62 62 62 65 65 65 65 65 65 65 65 65 65 65 65 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 235 234 229 167 167 167 89 88 84 52 52 52 53 53 53 55 55 54
-55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-53 53 53 72 72 72 167 167 167 235 234 229 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 222 210
-58 58 58 58 58 58 58 58 58 58 58 58 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 205 205 205 52 52 52 55 55 54 58 58 58 55 55 54 58 58 58
-55 55 54 58 58 58 55 55 54 55 55 54 58 58 58 55 55 54 58 58 58 58 58 58
-201 199 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 58 58 58
-58 58 58 58 58 58 58 58 58 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 157 154 144 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 55 55 54 58 58 58 167 167 167 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 224 222 210 53 53 53 58 58 58 58 58 58 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 58 58 58 55 55 54 110 108 101 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 93 93 92 55 55 54 58 58 58 55 55 54
-58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 72 72 72 157 154 144 224 222 210
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 167 167 167
-72 72 72 58 58 58 58 58 58 58 58 58 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-130 128 124 58 58 58 58 58 58 55 55 54 58 58 58 55 55 54 58 58 58 55 55 54
-55 55 54 55 55 54 58 58 58 55 55 54 58 58 58 167 167 167 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 235 234 229 72 72 72 58 58 58 58 58 58
-58 58 58 58 58 58 93 93 92 201 199 182 235 234 229 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-255 255 255 255 255 255 255 255 255 205 205 205 113 113 113 52 52 52 48 48 48 45 45 45
-43 43 43 41 41 41 39 39 39 37 37 37 35 35 35 32 32 32 30 30 30 29 29 29
-26 26 26 24 24 23 21 21 21 19 19 19 17 17 17 15 15 15 13 13 13 11 11 11
-9 9 9 8 8 8 6 6 6 4 4 4 3 3 3 2 2 2 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 3 3 3 4 4 4 5 5 5 7 7 7 9 9 9 10 10 10
-12 12 12 14 14 14 16 16 16 19 19 19 20 20 20 22 22 22 25 25 25 27 27 27
-29 29 29 31 31 31 33 33 33 35 35 35 37 37 37 39 39 39 41 41 41 43 43 43
-44 44 44 46 46 46 46 46 46 46 46 46 48 48 48 53 53 53 110 108 101 130 128 124
-167 167 167 167 167 167 167 167 167 205 205 205 224 222 210 205 205 205 167 167 167 167 167 167
-157 154 144 130 128 124 93 93 92 58 58 58 65 65 65 58 58 58 62 62 62 62 62 62
-62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 65 65 65 58 58 58 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 205 205 205 157 154 144 130 128 124
-157 154 144 130 128 124 157 154 144 130 128 124 130 128 124 157 154 144 130 128 124 130 128 124
-110 108 101 72 72 72 55 55 54 53 53 53 53 53 53 55 55 54 53 53 53 53 53 53
-53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53
-53 53 53 53 53 53 53 53 53 53 53 53 89 88 84 113 113 113 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 113 113 113
-58 58 58 53 53 53 53 53 53 58 58 58 113 113 113 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 113 113 113 53 53 53 55 55 54 53 53 53 55 55 54 55 55 54
-55 55 54 53 53 53 55 55 54 55 55 54 53 53 53 53 53 53 53 53 53 49 49 49
-113 113 113 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 113 113 113 53 53 53
-55 55 54 53 53 53 58 58 58 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-130 128 124 93 93 92 53 53 53 53 53 53 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 55 55 54 53 53 53 113 113 113 130 128 124 130 128 124 130 128 124
-130 128 124 130 128 124 113 113 113 53 53 53 53 53 53 53 53 53 55 55 54 55 55 54
-55 55 54 55 55 54 53 53 53 55 55 54 53 53 53 72 72 72 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 66 66 66 55 55 54 53 53 53 55 55 54
-55 55 54 53 53 53 53 53 53 55 55 54 55 55 54 55 55 54 53 53 53 52 52 52
-72 72 72 113 113 113 130 128 124 167 167 167 167 167 167 201 199 182 224 222 210 205 205 205
-205 205 205 167 167 167 167 167 167 130 128 124 113 113 113 72 72 72 53 53 53 53 53 53
-55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54 55 55 54
-55 55 54 55 55 54 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 130 128 124
-89 88 84 53 53 53 53 53 53 55 55 54 53 53 53 55 55 54 53 53 53 55 55 54
-55 55 54 55 55 54 53 53 53 55 55 54 55 55 54 62 62 62 130 128 124 130 128 124
-130 128 124 130 128 124 130 128 124 130 128 124 130 128 124 113 113 113 55 55 54 58 58 58
-53 53 53 58 58 58 58 58 58 53 53 53 55 55 54 93 93 92 130 128 124 157 154 144
-167 167 167 167 167 167 205 205 205 224 222 210 224 222 210 167 167 167 167 167 167 167 167 167
-130 128 124 93 93 92 55 55 54 48 48 48 48 48 48 46 46 46 44 44 44 43 43 43
-41 41 41 39 39 39 37 37 37 35 35 35 33 33 33 31 31 31 29 29 29 26 26 26
-25 25 25 22 22 22 20 20 20 19 19 19 16 16 16 14 14 14 12 12 12 10 10 10
-9 9 9 7 7 7 5 5 5 4 4 4 3 3 3 1 1 1 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 2 2 2 3 3 3 5 5 5 6 6 6 8 8 8 10 10 10
-11 11 11 13 13 13 15 15 15 17 17 17 19 19 19 21 21 21 23 23 23 25 25 25
-27 27 27 29 29 29 31 31 31 33 33 33 35 35 35 37 37 37 39 39 39 40 40 40
-42 42 42 43 43 43 45 45 45 46 46 46 48 48 48 48 48 48 48 48 48 52 52 52
-49 49 49 55 55 54 58 58 58 58 58 58 53 53 53 55 55 54 58 58 58 58 58 58
-53 53 53 58 58 58 55 55 54 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 65 65 65 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 62 62 62 65 65 65
-62 62 62 62 62 62 58 58 58 62 62 62 62 62 62 53 53 53 58 58 58 58 58 58
-55 55 54 55 55 54 53 53 53 53 53 53 52 52 52 52 52 52 52 52 52 51 51 50
-51 51 50 49 49 49 51 51 50 49 49 49 51 51 50 51 51 50 51 51 50 51 51 50
-49 49 49 51 51 50 51 51 50 49 49 49 49 49 49 52 52 52 55 55 54 58 58 58
-58 58 58 58 58 58 58 58 58 58 58 58 62 62 62 58 58 58 58 58 58 62 62 62
-58 58 58 58 58 58 62 62 62 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
-53 53 53 53 53 53 53 53 53 52 52 52 53 53 53 58 58 58 58 58 58 55 55 54
-55 55 54 53 53 53 49 49 49 52 52 52 51 51 50 52 52 52 51 51 50 51 51 50
-51 51 50 52 52 52 51 51 50 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52
-49 49 49 53 53 53 58 58 58 58 58 58 58 58 58 53 53 53 53 53 53 52 52 52
-53 53 53 52 52 52 52 52 52 53 53 53 58 58 58 58 58 58 58 58 58 58 58 58
-53 53 53 53 53 53 52 52 52 53 53 53 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 55 55 54 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 53 53 53 53 53 53 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 53 53 53 53 53 53 53 53 53 58 58 58
-58 58 58 55 55 54 58 58 58 53 53 53 53 53 53 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 53 53 53 52 52 52 52 52 52
-52 52 52 52 52 52 53 53 53 55 55 54 53 53 53 52 52 52 52 52 52 53 53 53
-53 53 53 55 55 54 58 58 58 58 58 58 55 55 54 55 55 54 53 53 53 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 53 53 53 58 58 58 53 53 53 58 58 58 53 53 53
-52 52 52 52 52 52 52 52 52 51 51 50 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 53 53 53 58 58 58
-55 55 54 58 58 58 58 58 58 58 58 58 53 53 53 53 53 53 53 53 53 53 53 53
-53 53 53 52 52 52 52 52 52 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53
-58 58 58 55 55 54 53 53 53 52 52 52 52 52 52 53 53 53 53 53 53 49 49 49
-51 51 50 51 51 50 48 48 48 46 46 46 45 45 45 43 43 43 42 42 42 40 40 40
-39 39 39 37 37 37 35 35 35 33 33 33 31 31 31 29 29 29 27 27 27 25 25 25
-23 23 23 21 21 21 19 19 19 17 17 17 15 15 15 13 13 13 11 11 11 9 9 9
-8 8 8 6 6 6 5 5 5 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 7 7 7 9 9 9
-10 10 10 12 12 12 14 14 14 16 16 16 19 19 19 20 20 20 21 21 21 24 24 23
-25 25 25 27 27 27 29 29 29 31 31 31 33 33 33 35 35 35 37 37 37 38 38 38
-40 40 40 41 41 41 43 43 43 44 44 44 45 45 45 46 46 46 46 46 46 48 48 48
-48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 52 52 52 52 52 52 52 52 52
-53 53 53 53 53 53 55 55 54 55 55 54 55 55 54 55 55 54 58 58 58 58 58 58
-58 58 58 58 58 58 61 61 59 62 62 62 62 62 62 62 62 62 58 58 58 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 246 246 246 201 199 182 62 62 62 58 58 58
-62 62 62 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 55 55 54 53 53 53
-53 53 53 52 52 52 52 52 52 51 51 50 51 51 50 49 49 49 49 49 49 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 49 49 49 48 48 48 49 49 49 48 48 48 48 48 48
-49 49 49 49 49 49 49 49 49 52 52 52 49 49 49 49 49 49 52 52 52 49 49 49
-49 49 49 52 52 52 49 49 49 49 49 49 52 52 52 52 52 52 49 49 49 52 52 52
-49 49 49 52 52 52 49 49 49 49 49 49 49 49 49 48 48 48 49 49 49 49 49 49
-48 48 48 49 49 49 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-49 49 49 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49
-49 49 49 49 49 49 49 49 49 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 51 51 50 49 49 49
-49 49 49 52 52 52 49 49 49 52 52 52 49 49 49 52 52 52 49 49 49 52 52 52
-49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 48 48 48 46 46 46
-48 48 48 46 46 46 45 45 45 44 44 44 43 43 43 41 41 41 40 40 40 38 38 38
-37 37 37 35 35 35 33 33 33 31 31 31 29 29 29 27 27 27 25 25 25 24 24 23
-21 21 21 20 20 20 19 19 19 16 16 16 14 14 14 12 12 12 10 10 10 9 9 9
-7 7 7 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 3 3 3 3 3 3 5 5 5 6 6 6 8 8 8
-9 9 9 11 11 11 13 13 13 15 15 15 16 16 16 19 19 19 20 20 20 22 22 22
-24 24 23 26 26 26 27 27 27 29 29 29 31 31 31 33 33 33 35 35 35 36 36 36
-37 37 37 39 39 39 40 40 40 41 41 41 43 43 43 43 43 43 44 44 44 45 45 45
-45 45 45 46 46 46 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49
-52 52 52 52 52 52 53 53 53 53 53 53 55 55 54 55 55 54 55 55 54 55 55 54
-58 58 58 58 58 58 58 58 58 58 58 58 61 61 59 62 62 62 62 62 62 205 205 205
-246 246 246 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 58 58 58 58 58 58
-58 58 58 58 58 58 58 58 58 55 55 54 53 53 53 53 53 53 52 52 52 53 53 53
-49 49 49 49 49 49 49 49 49 48 48 48 48 48 48 48 48 48 46 46 46 46 46 46
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 46 46 46 46 46 46 46 46 46
-46 46 46 48 48 48 46 46 46 48 48 48 48 48 48 48 48 48 46 46 46 49 49 49
-49 49 49 48 48 48 49 49 49 49 49 49 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 46 46 46 48 48 48 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-48 48 48 48 48 48 46 46 46 48 48 48 46 46 46 48 48 48 46 46 46 48 48 48
-48 48 48 48 48 48 46 46 46 48 48 48 46 46 46 48 48 48 46 46 46 48 48 48
-48 48 48 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 48 48 48 46 46 46 48 48 48
-48 48 48 48 48 48 48 48 48 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 46 46 46 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 46 46 46 46 46 46 46 46 46
-46 46 46 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 46 46 46 46 46 46
-46 46 46 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46
-46 46 46 46 46 46 46 46 46 46 46 46 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 46 46 46 46 46 46 46 46 46 45 45 45 45 45 45
-44 44 44 43 43 43 43 43 43 41 41 41 40 40 40 39 39 39 37 37 37 36 36 36
-34 34 34 33 33 33 31 31 31 29 29 29 27 27 27 26 26 26 24 24 23 22 22 22
-20 20 20 19 19 19 16 16 16 15 15 15 13 13 13 11 11 11 9 9 9 8 8 8
-6 6 6 5 5 5 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 7 7 7
-8 8 8 10 10 10 12 12 12 13 13 13 15 15 15 17 17 17 19 19 19 20 20 20
-22 22 22 24 24 23 26 26 26 27 27 27 29 29 29 31 31 31 32 32 32 34 34 34
-35 35 35 37 37 37 38 38 38 39 39 39 40 40 40 41 41 41 42 42 42 42 42 42
-43 43 43 43 43 43 44 44 44 45 45 45 45 45 45 46 46 46 48 48 48 48 48 48
-48 48 48 49 49 49 51 51 50 51 51 50 52 52 52 53 53 53 53 53 53 55 55 54
-55 55 54 55 55 54 58 58 58 58 58 58 58 58 58 58 58 58 55 55 54 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 58 58 58 58 58 58
-58 58 58 58 58 58 55 55 54 53 53 53 53 53 53 52 52 52 49 49 49 49 49 49
-48 48 48 48 48 48 48 48 48 46 46 46 45 45 45 45 45 45 44 44 44 43 43 43
-43 43 43 43 43 43 43 43 43 42 42 42 42 42 42 42 42 42 42 42 42 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44
-43 43 43 44 44 44 44 44 44 44 44 44 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 44 44 44 44 44 44 43 43 43 43 43 43 43 43 43 43 43 43
-44 44 44 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44 43 43 43 43 43 43
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-43 43 43 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 43 43 43 44 44 44 44 44 44 44 44 44 43 43 43 43 43 43 43 43 43
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
-43 43 43 43 43 43 43 43 43 43 43 43 44 44 44 44 44 44 45 45 45 45 45 45
-45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
-45 45 45 45 45 45 44 44 44 44 44 44 43 43 43 44 44 44 43 43 43 42 42 42
-42 42 42 41 41 41 40 40 40 39 39 39 38 38 38 36 36 36 35 35 35 34 34 34
-32 32 32 31 31 31 29 29 29 27 27 27 26 26 26 24 24 23 22 22 22 20 20 20
-19 19 19 17 17 17 15 15 15 13 13 13 12 12 12 10 10 10 8 8 8 7 7 7
-5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 5 5 5 6 6 6
-7 7 7 9 9 9 10 10 10 12 12 12 14 14 14 16 16 16 17 17 17 19 19 19
-20 20 20 22 22 22 24 24 23 25 25 25 27 27 27 29 29 29 30 30 30 31 31 31
-33 33 33 34 34 34 35 35 35 36 36 36 37 37 37 38 38 38 39 39 39 39 39 39
-40 40 40 41 41 41 42 42 42 42 42 42 43 43 43 44 44 44 45 45 45 45 45 45
-46 46 46 48 48 48 48 48 48 49 49 49 49 49 49 51 51 50 52 52 52 52 52 52
-53 53 53 55 55 54 55 55 54 55 55 54 55 55 54 58 58 58 58 58 58 201 199 182
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 58 58 58 58 58 58
-53 53 53 53 53 53 53 53 53 53 53 53 52 52 52 49 49 49 48 48 48 48 48 48
-46 46 46 45 45 45 44 44 44 43 43 43 43 43 43 42 42 42 42 42 42 41 41 41
-41 41 41 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-41 41 41 41 41 41 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 43 43 43 43 43 43 43 43 43 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 41 41 41 41 41 41 41 41 41 42 42 42 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 42 42 42
-42 42 42 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 40 40 40
-40 40 40 40 40 40 40 40 40 40 40 40 41 41 41 41 41 41 41 41 41 41 41 41
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 41 41 41 41 41 41 41 41 41 41 41 41
-40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
-40 40 40 40 40 40 40 40 40 40 40 40 41 41 41 41 41 41 41 41 41 41 41 41
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 40 40 40 40 40 40 40 40 40
-41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 41 41 41 41 41 41 40 40 40 40 40 40 39 39 39
-39 39 39 38 38 38 37 37 37 36 36 36 35 35 35 34 34 34 33 33 33 31 31 31
-30 30 30 29 29 29 27 27 27 25 25 25 24 24 23 22 22 22 20 20 20 19 19 19
-17 17 17 16 16 16 14 14 14 12 12 12 10 10 10 9 9 9 7 7 7 6 6 6
-4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
-6 6 6 8 8 8 9 9 9 11 11 11 13 13 13 14 14 14 16 16 16 17 17 17
-19 19 19 20 20 20 22 22 22 23 23 23 25 25 25 26 26 26 29 29 29 29 29 29
-30 30 30 32 32 32 33 33 33 34 34 34 35 35 35 35 35 35 36 36 36 37 37 37
-37 37 37 38 38 38 39 39 39 40 40 40 40 40 40 41 41 41 42 42 42 43 43 43
-44 44 44 45 45 45 46 46 46 46 46 46 48 48 48 48 48 48 49 49 49 51 51 50
-51 51 50 52 52 52 53 53 53 53 53 53 55 55 54 55 55 54 52 52 52 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 53 53 53 53 53 53
-53 53 53 53 53 53 49 49 49 49 49 49 48 48 48 48 48 48 46 46 46 45 45 45
-44 44 44 43 43 43 42 42 42 41 41 41 40 40 40 40 40 40 39 39 39 39 39 39
-38 38 38 38 38 38 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 38 38 38 38 38 38
-38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39
-39 39 39 39 39 39 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 38 38 38 38 38 38 38 38 38
-38 38 38 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
-38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 40 40 40 40 40 40 40 40 40 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 38 38 38 38 38 38 38 38 38 37 37 37 37 37 37
-36 36 36 35 35 35 35 35 35 34 34 34 33 33 33 32 32 32 30 30 30 29 29 29
-29 29 29 26 26 26 25 25 25 23 23 23 22 22 22 20 20 20 19 19 19 17 17 17
-16 16 16 14 14 14 12 12 12 11 11 11 9 9 9 8 8 8 6 6 6 5 5 5
-4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4
-5 5 5 7 7 7 8 8 8 10 10 10 11 11 11 13 13 13 14 14 14 16 16 16
-17 17 17 19 19 19 20 20 20 21 21 21 23 23 23 24 24 23 25 25 25 27 27 27
-29 29 29 29 29 29 30 30 30 31 31 31 32 32 32 33 33 33 33 33 33 34 34 34
-35 35 35 35 35 35 36 36 36 37 37 37 38 38 38 39 39 39 40 40 40 40 40 40
-42 42 42 42 42 42 43 43 43 44 44 44 45 45 45 46 46 46 48 48 48 48 48 48
-48 48 48 49 49 49 51 51 50 51 51 50 52 52 52 52 52 52 53 53 53 201 199 182
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 201 199 182 53 53 53 53 53 53
-52 52 52 49 49 49 48 48 48 48 48 48 45 45 45 45 45 45 43 43 43 43 43 43
-42 42 42 40 40 40 40 40 40 39 39 39 38 38 38 37 37 37 37 37 37 36 36 36
-35 35 35 35 35 35 35 35 35 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 36 36 36 36 36 36 36 36 36 37 37 37 37 37 37 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-37 37 37 36 36 36 36 36 36 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
-36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
-36 36 36 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 36 36 36 36 36 36
-36 36 36 36 36 36 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
-36 36 36 36 36 36 36 36 36 36 36 36 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
-36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 34 34 34 34 34 34 34 34 34 34 34 34 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 36 36 36 36 36 36 37 37 37
-37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37
-36 36 36 36 36 36 36 36 36 35 35 35 35 35 35 35 35 35 35 35 35 34 34 34
-33 33 33 33 33 33 32 32 32 31 31 31 30 30 30 29 29 29 29 29 29 27 27 27
-25 25 25 24 24 23 23 23 23 21 21 21 20 20 20 19 19 19 17 17 17 16 16 16
-14 14 14 13 13 13 11 11 11 10 10 10 8 8 8 7 7 7 5 5 5 4 4 4
-3 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 3 3 3 3 3 3
-4 4 4 6 6 6 7 7 7 8 8 8 10 10 10 11 11 11 13 13 13 14 14 14
-16 16 16 17 17 17 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 25 25 25
-26 26 26 27 27 27 29 29 29 29 29 29 29 29 29 30 30 30 31 31 31 31 31 31
-32 32 32 33 33 33 33 33 33 35 35 35 35 35 35 36 36 36 37 37 37 38 38 38
-39 39 39 40 40 40 41 41 41 42 42 42 43 43 43 43 43 43 44 44 44 45 45 45
-46 46 46 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 45 45 45 205 205 205
-255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 167 167 167 49 49 49 49 49 49
-48 48 48 48 48 48 46 46 46 45 45 45 43 43 43 42 42 42 41 41 41 40 40 40
-39 39 39 38 38 38 37 37 37 36 36 36 35 35 35 35 35 35 34 34 34 33 33 33
-33 33 33 32 32 32 32 32 32 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 33 33 33 33 33 33 33 33 33 33 33 33 34 34 34 34 34 34 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 32 32 32
-32 32 32 32 32 32 32 32 32 31 31 31 31 31 31 31 31 31 31 31 31 32 32 32
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 33 33 33 33 33 33
-32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
-32 32 32 32 32 32 32 32 32 33 33 33 33 33 33 33 33 33 33 33 33 34 34 34
-34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
-34 34 34 33 33 33 33 33 33 33 33 33 32 32 32 32 32 32 32 32 32 31 31 31
-31 31 31 30 30 30 29 29 29 29 29 29 29 29 29 27 27 27 26 26 26 25 25 25
-23 23 23 22 22 22 21 21 21 20 20 20 19 19 19 17 17 17 16 16 16 14 14 14
-13 13 13 11 11 11 10 10 10 8 8 8 7 7 7 6 6 6 4 4 4 3 3 3
-2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3
-4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 10 10 10 11 11 11 12 12 12
-14 14 14 15 15 15 16 16 16 19 19 19 19 19 19 20 20 20 21 21 21 22 22 22
-23 23 23 25 25 25 25 25 25 26 26 26 27 27 27 27 27 27 29 29 29 29 29 29
-29 29 29 30 30 30 31 31 31 32 32 32 33 33 33 34 34 34 35 35 35 35 35 35
-36 36 36 37 37 37 38 38 38 39 39 39 40 40 40 41 41 41 42 42 42 43 43 43
-43 43 43 44 44 44 45 45 45 46 46 46 46 46 46 48 48 48 46 46 46 130 128 124
-167 167 167 167 167 167 167 167 167 167 167 167 167 167 167 130 128 124 53 53 53 46 46 46
-45 45 45 44 44 44 43 43 43 42 42 42 41 41 41 40 40 40 39 39 39 38 38 38
-37 37 37 35 35 35 35 35 35 34 34 34 33 33 33 32 32 32 31 31 31 31 31 31
-30 30 30 30 30 30 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-30 30 30 30 30 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-29 29 29 29 29 29 29 29 29 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
-30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 30 30 30 30 30 30 30 30 30 30 30 30 29 29 29 29 29 29
-29 29 29 27 27 27 27 27 27 26 26 26 25 25 25 25 25 25 23 23 23 22 22 22
-21 21 21 20 20 20 19 19 19 17 17 17 16 16 16 15 15 15 13 13 13 12 12 12
-11 11 11 10 10 10 8 8 8 7 7 7 6 6 6 5 5 5 3 3 3 3 3 3
-2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2
-3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 10 10 10 11 11 11
-12 12 12 13 13 13 15 15 15 16 16 16 17 17 17 19 19 19 19 19 19 20 20 20
-21 21 21 22 22 22 23 23 23 24 24 23 25 25 25 25 25 25 25 25 25 26 26 26
-26 26 26 27 27 27 29 29 29 29 29 29 30 30 30 31 31 31 32 32 32 33 33 33
-34 34 34 35 35 35 36 36 36 37 37 37 37 37 37 38 38 38 39 39 39 40 40 40
-41 41 41 42 42 42 42 42 42 43 43 43 44 44 44 44 44 44 45 45 45 46 46 46
-46 46 46 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 45 45 45 43 43 43
-43 43 43 42 42 42 41 41 41 39 39 39 38 38 38 37 37 37 36 36 36 35 35 35
-34 34 34 33 33 33 32 32 32 31 31 31 30 30 30 30 30 30 29 29 29 29 29 29
-27 27 27 27 27 27 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 27 27 27
-27 27 27 27 27 27 27 27 27 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
-27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 27 27 27 27 27 27 27 27 27 26 26 26 26 26 26
-25 25 25 25 25 25 25 25 25 24 24 23 23 23 23 22 22 22 21 21 21 20 20 20
-19 19 19 19 19 19 17 17 17 16 16 16 15 15 15 13 13 13 12 12 12 11 11 11
-9 9 9 8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9
-10 10 10 11 11 11 13 13 13 14 14 14 15 15 15 16 16 16 17 17 17 19 19 19
-19 19 19 20 20 20 20 20 20 21 21 21 22 22 22 22 22 22 23 23 23 23 23 23
-24 24 23 25 25 25 26 26 26 26 26 26 27 27 27 29 29 29 29 29 29 30 30 30
-31 31 31 32 32 32 33 33 33 34 34 34 35 35 35 36 36 36 37 37 37 37 37 37
-38 38 38 39 39 39 40 40 40 40 40 40 41 41 41 42 42 42 42 42 42 42 42 42
-42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 41 41 41 41 41 41
-40 40 40 39 39 39 38 38 38 37 37 37 36 36 36 35 35 35 33 33 33 32 32 32
-31 31 31 30 30 30 30 30 30 29 29 29 29 29 29 27 27 27 26 26 26 25 25 25
-25 25 25 24 24 23 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 24 24 23 24 24 23
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 24 24 23 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 24 24 23
-24 24 23 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23
-24 24 23 24 24 23 24 24 23 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
-25 25 25 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 25 25 25 25 25 25
-25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 24 24 23 24 24 23 23 23 23
-23 23 23 22 22 22 22 22 22 21 21 21 20 20 20 20 20 20 19 19 19 19 19 19
-17 17 17 16 16 16 15 15 15 14 14 14 13 13 13 11 11 11 10 10 10 9 9 9
-8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 5 5 5 6 6 6 8 8 8
-9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16
-17 17 17 17 17 17 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 21 21 21
-21 21 21 22 22 22 23 23 23 24 24 23 25 25 25 26 26 26 27 27 27 29 29 29
-29 29 29 30 30 30 30 30 30 31 31 31 32 32 32 33 33 33 34 34 34 35 35 35
-35 35 35 36 36 36 37 37 37 38 38 38 38 38 38 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 38 38 38
-37 37 37 37 37 37 35 35 35 35 35 35 33 33 33 32 32 32 31 31 31 30 30 30
-29 29 29 29 29 29 27 27 27 26 26 26 25 25 25 24 24 23 23 23 23 23 23 23
-22 22 22 21 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21
-21 21 21 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 23 23 23 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 21 21 21 21 21 21
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
-22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 21 21 21
-21 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
-21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 23 23 23 23 23 23
-23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
-23 23 23 22 22 22 22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21
-20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 17 17 17 17 17 17 16 16 16
-15 15 15 14 14 14 13 13 13 12 12 12 11 11 11 10 10 10 9 9 9 8 8 8
-6 6 6 5 5 5 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 2 2 2 3 3 3 3 3 3 4 4 4 5 5 5 6 6 6
-7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14
-15 15 15 15 15 15 16 16 16 16 16 16 17 17 17 19 19 19 19 19 19 19 19 19
-19 19 19 20 20 20 20 20 20 21 21 21 22 22 22 23 23 23 24 24 23 25 25 25
-26 26 26 27 27 27 29 29 29 29 29 29 30 30 30 30 30 30 31 31 31 32 32 32
-33 33 33 34 34 34 34 34 34 35 35 35 35 35 35 36 36 36 36 36 36 36 36 36
-36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 35 35 35
-35 35 35 34 34 34 33 33 33 32 32 32 31 31 31 30 30 30 29 29 29 27 27 27
-26 26 26 25 25 25 24 24 23 23 23 23 23 23 23 21 21 21 21 21 21 20 20 20
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20
-20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19
-19 19 19 19 19 19 17 17 17 16 16 16 16 16 16 15 15 15 15 15 15 14 14 14
-13 13 13 12 12 12 11 11 11 10 10 10 9 9 9 8 8 8 7 7 7 6 6 6
-5 5 5 4 4 4 3 3 3 3 3 3 2 2 2 1 1 1 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 2 2 2 3 3 3 3 3 3 4 4 4 5 5 5
-6 6 6 7 7 7 8 8 8 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12
-13 13 13 13 13 13 14 14 14 14 14 14 15 15 15 16 16 16 16 16 16 16 16 16
-16 16 16 17 17 17 19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 22 22 22
-23 23 23 24 24 23 25 25 25 26 26 26 27 27 27 29 29 29 29 29 29 29 29 29
-30 30 30 31 31 31 32 32 32 32 32 32 33 33 33 33 33 33 33 33 33 33 33 33
-33 33 33 33 33 33 33 33 33 34 34 34 34 34 34 33 33 33 33 33 33 33 33 33
-32 32 32 31 31 31 30 30 30 29 29 29 29 29 29 27 27 27 26 26 26 25 25 25
-24 24 23 23 23 23 21 21 21 21 21 21 20 20 20 19 19 19 19 19 19 17 17 17
-17 17 17 16 16 16 16 16 16 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 15 15 15 15 15 15 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
-19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 17 17 17
-17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 16
-16 16 16 16 16 16 15 15 15 14 14 14 14 14 14 13 13 13 13 13 13 12 12 12
-11 11 11 10 10 10 9 9 9 8 8 8 8 8 8 7 7 7 6 6 6 5 5 5
-4 4 4 3 3 3 3 3 3 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 2 2 2 3 3 3 4 4 4
-4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 8 8 8 9 9 9 10 10 10
-10 10 10 11 11 11 11 11 11 12 12 12 13 13 13 13 13 13 13 13 13 14 14 14
-14 14 14 15 15 15 16 16 16 16 16 16 17 17 17 19 19 19 19 19 19 20 20 20
-21 21 21 21 21 21 23 23 23 23 23 23 24 24 23 25 25 25 26 26 26 27 27 27
-27 27 27 29 29 29 29 29 29 30 30 30 30 30 30 31 31 31 31 31 31 31 31 31
-31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 30 30 30
-29 29 29 29 29 29 29 29 29 27 27 27 26 26 26 25 25 25 24 24 23 22 22 22
-21 21 21 20 20 20 19 19 19 19 19 19 17 17 17 16 16 16 16 16 16 15 15 15
-14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14
-14 14 14 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
-14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
-15 15 15 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 14 14 14 14 14 14
-13 13 13 13 13 13 13 13 13 12 12 12 11 11 11 11 11 11 10 10 10 10 10 10
-9 9 9 8 8 8 8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 4 4 4
-3 3 3 2 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 3 3 3
-3 3 3 4 4 4 4 4 4 5 5 5 6 6 6 6 6 6 7 7 7 8 8 8
-9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11
-12 12 12 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16 16 16 16 17 17 17
-19 19 19 19 19 19 20 20 20 21 21 21 21 21 21 22 22 22 23 23 23 24 24 23
-25 25 25 25 25 25 26 26 26 27 27 27 27 27 27 29 29 29 29 29 29 29 29 29
-29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 27 27 27
-27 27 27 26 26 26 25 25 25 25 25 25 23 23 23 22 22 22 21 21 21 20 20 20
-19 19 19 19 19 19 17 17 17 16 16 16 15 15 15 14 14 14 13 13 13 12 12 12
-11 11 11 11 11 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 12 12 12
-12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 10 10 10 10 10 10 10 10 10 10 10 10
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
-11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13
-13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
-13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11
-11 11 11 11 11 11 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 8 8 8
-7 7 7 6 6 6 6 6 6 5 5 5 4 4 4 4 4 4 3 3 3 3 3 3
-2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2
-2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6
-7 7 7 7 7 7 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9
-10 10 10 10 10 10 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15
-16 16 16 16 16 16 17 17 17 19 19 19 19 19 19 20 20 20 21 21 21 21 21 21
-22 22 22 23 23 23 24 24 23 25 25 25 25 25 25 25 25 25 26 26 26 26 26 26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 25 25 25 25 25 25
-25 25 25 24 24 23 23 23 23 22 22 22 21 21 21 20 20 20 19 19 19 19 19 19
-16 16 16 16 16 16 14 14 14 13 13 13 12 12 12 11 11 11 10 10 10 10 10 10
-9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 9
-9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
-9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 9
-9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 7 7 7 7 7 7 6 6 6
-5 5 5 5 5 5 4 4 4 4 4 4 3 3 3 3 3 3 2 2 2 2 2 2
-1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5
-5 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7
-8 8 8 8 8 8 8 8 8 9 9 9 10 10 10 10 10 10 11 11 11 12 12 12
-13 13 13 14 14 14 15 15 15 16 16 16 17 17 17 17 17 17 19 19 19 19 19 19
-20 20 20 20 20 20 21 21 21 22 22 22 22 22 22 23 23 23 23 23 23 24 24 23
-24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 24 24 23 23 23 23 23 23 23
-22 22 22 21 21 21 20 20 20 20 20 20 19 19 19 17 17 17 16 16 16 16 16 16
-14 14 14 13 13 13 12 12 12 11 11 11 10 10 10 9 9 9 8 8 8 7 7 7
-6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7
-7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
-7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7
-7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
-7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5
-4 4 4 4 4 4 3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10
-11 11 11 11 11 11 13 13 13 13 13 13 14 14 14 15 15 15 16 16 16 16 16 16
-17 17 17 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21
-22 22 22 22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 20 20 20
-20 20 20 19 19 19 19 19 19 17 17 17 16 16 16 15 15 15 14 14 14 13 13 13
-12 12 12 11 11 11 10 10 10 9 9 9 8 8 8 6 6 6 5 5 5 5 5 5
-4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4
-4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
-6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 3 3 3
-3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
-2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8
-8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 13 13 13 14 14 14
-15 15 15 16 16 16 16 16 16 17 17 17 19 19 19 19 19 19 19 19 19 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19
-17 17 17 16 16 16 16 16 16 15 15 15 14 14 14 13 13 13 12 12 12 11 11 11
-10 10 10 9 9 9 8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3
-2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
-4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2
-2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
-1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 5 5 5 5 5 5
-6 6 6 7 7 7 8 8 8 9 9 9 9 9 9 10 10 10 11 11 11 12 12 12
-13 13 13 13 13 13 14 14 14 15 15 15 16 16 16 16 16 16 17 17 17 17 17 17
-19 19 19 19 19 19 19 19 19 19 19 19 17 17 17 17 17 17 16 16 16 16 16 16
-15 15 15 14 14 14 13 13 13 13 13 13 12 12 12 11 11 11 10 10 10 9 9 9
-8 8 8 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1
-1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
-4 4 4 5 5 5 6 6 6 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10
-11 11 11 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 15 15 15 16 16 16
-16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 15 15 15 15 15 15 14 14 14
-13 13 13 13 13 13 12 12 12 11 11 11 10 10 10 9 9 9 8 8 8 7 7 7
-6 6 6 5 5 5 4 4 4 3 3 3 3 3 3 2 2 2 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2
-3 3 3 3 3 3 4 4 4 5 5 5 5 5 5 6 6 6 7 7 7 8 8 8
-9 9 9 10 10 10 11 11 11 11 11 11 12 12 12 13 13 13 13 13 13 13 13 13
-14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 12 12 12
-11 11 11 11 11 11 10 10 10 9 9 9 8 8 8 7 7 7 6 6 6 5 5 5
-5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 5 5 5 6 6 6 7 7 7
-8 8 8 8 8 8 9 9 9 10 10 10 10 10 10 11 11 11 11 11 11 12 12 12
-12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 10 10 10
-10 10 10 9 9 9 8 8 8 8 8 8 7 7 7 6 6 6 5 5 5 4 4 4
-4 4 4 3 3 3 2 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 2 2 2 3 3 3 3 3 3 4 4 4 5 5 5 5 5 5
-6 6 6 7 7 7 8 8 8 8 8 8 9 9 9 9 9 9 10 10 10 10 10 10
-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9
-8 8 8 8 8 8 7 7 7 6 6 6 5 5 5 5 5 5 4 4 4 3 3 3
-3 3 3 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 1 1 1 1 1 1 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4
-5 5 5 5 5 5 6 6 6 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8
-8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
-6 6 6 6 6 6 5 5 5 5 5 5 4 4 4 4 4 4 3 3 3 3 3 3
-2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
-4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6
-6 6 6 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
-5 5 5 5 5 5 4 4 4 4 4 4 3 3 3 3 3 3 2 2 2 2 2 2
-1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
-3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5
-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4
-4 4 4 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1
-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
-2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
-4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3
-3 3 3 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2
-3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 21 21
-44 40 24 36 36 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
-
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1 0
-
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0 5 2 0
-
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0 7 3 0
-
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0
-
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0 11 5 0
-
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0 12 6 0
-
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0 14 7 0
-
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0 16 8 0
-
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0 18 9 0
-
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0 20 10 0
-
diff --git a/packages/linux/linux-openmoko-devel/printascii-2.6.23.patch b/packages/linux/linux-openmoko-devel/printascii-2.6.23.patch
deleted file mode 100644
index 4818ac6bfc..0000000000
--- a/packages/linux/linux-openmoko-devel/printascii-2.6.23.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Index: linux-2.6.22/kernel/printk.c
-===================================================================
---- linux-2.6.22.orig/kernel/printk.c
-+++ linux-2.6.22/kernel/printk.c
-@@ -519,6 +519,8 @@
- /* cpu currently holding logbuf_lock */
- static volatile unsigned int printk_cpu = UINT_MAX;
-
-+extern void printascii(const char *);
-+
- asmlinkage int vprintk(const char *fmt, va_list args)
- {
- unsigned long flags;
-@@ -541,6 +543,7 @@
-
- /* Emit the output into the temporary buffer */
- printed_len = vscnprintf(printk_buf, sizeof(printk_buf), fmt, args);
-+ printascii(printk_buf);
-
- /*
- * Copy the output into log_buf. If the caller didn't provide
diff --git a/packages/linux/linux-openmoko-devel/printascii.patch b/packages/linux/linux-openmoko-devel/printascii.patch
deleted file mode 100644
index 13a014db39..0000000000
--- a/packages/linux/linux-openmoko-devel/printascii.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: linux-2.6.22.5/kernel/printk.c
-===================================================================
---- linux-2.6.22.5.orig/kernel/printk.c
-+++ linux-2.6.22.5/kernel/printk.c
-@@ -535,6 +535,7 @@ asmlinkage int vprintk(const char *fmt,
-
- /* Emit the output into the temporary buffer */
- printed_len = vscnprintf(printk_buf, sizeof(printk_buf), fmt, args);
-+ printascii(printk_buf);
-
- /*
- * Copy the output into log_buf. If the caller didn't provide
diff --git a/packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch b/packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch
deleted file mode 100644
index f4457a8715..0000000000
--- a/packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch
+++ /dev/null
@@ -1,4395 +0,0 @@
-Index: linux-2.6.22/fs/Kconfig
-===================================================================
---- linux-2.6.22.orig/fs/Kconfig
-+++ linux-2.6.22/fs/Kconfig
-@@ -1368,6 +1368,71 @@
-
- If unsure, say N.
-
-+config SQUASHFS
-+ tristate "SquashFS 3.2 - Squashed file system support"
-+ select ZLIB_INFLATE
-+ help
-+ Saying Y here includes support for SquashFS 3.2 (a Compressed Read-Only File
-+ System). Squashfs is a highly compressed read-only filesystem for Linux.
-+ It uses zlib compression to compress both files, inodes and directories.
-+ Inodes in the system are very small and all blocks are packed to minimise
-+ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
-+ SquashFS 3.1 supports 64 bit filesystems and files (larger than 4GB), full
-+ uid/gid information, hard links and timestamps.
-+
-+ Squashfs is intended for general read-only filesystem use, for archival
-+ use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+ systems where low overhead is needed. Further information and filesystem tools
-+ are available from http://squashfs.sourceforge.net.
-+
-+ If you want to compile this as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want),
-+ say M here and read <file:Documentation/modules.txt>. The module
-+ will be called squashfs. Note that the root file system (the one
-+ containing the directory /) cannot be compiled as a module.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_EMBEDDED
-+
-+ bool "Additional options for memory-constrained systems"
-+ depends on SQUASHFS
-+ default n
-+ help
-+ Saying Y here allows you to specify cache sizes and how Squashfs
-+ allocates memory. This is only intended for memory constrained
-+ systems.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_FRAGMENT_CACHE_SIZE
-+ int "Number of fragments cached" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default "3"
-+ help
-+ By default SquashFS caches the last 3 fragments read from
-+ the filesystem. Increasing this amount may mean SquashFS
-+ has to re-read fragments less often from disk, at the expense
-+ of extra system memory. Decreasing this amount will mean
-+ SquashFS uses less memory at the expense of extra reads from disk.
-+
-+ Note there must be at least one cached fragment. Anything
-+ much more than three will probably not make much difference.
-+
-+config SQUASHFS_VMALLOC
-+ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default n
-+ help
-+ By default SquashFS uses kmalloc to obtain fragment cache memory.
-+ Kmalloc memory is the standard kernel allocator, but it can fail
-+ on memory constrained systems. Because of the way Vmalloc works,
-+ Vmalloc can succeed when kmalloc fails. Specifying this option
-+ will make SquashFS always use Vmalloc to allocate the
-+ fragment cache memory.
-+
-+ If unsure, say N.
-+
- config VXFS_FS
- tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
- depends on BLOCK
-Index: linux-2.6.22/fs/Makefile
-===================================================================
---- linux-2.6.22.orig/fs/Makefile
-+++ linux-2.6.22/fs/Makefile
-@@ -72,6 +72,7 @@
- obj-$(CONFIG_JBD2) += jbd2/
- obj-$(CONFIG_EXT2_FS) += ext2/
- obj-$(CONFIG_CRAMFS) += cramfs/
-+obj-$(CONFIG_SQUASHFS) += squashfs/
- obj-$(CONFIG_RAMFS) += ramfs/
- obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
- obj-$(CONFIG_CODA_FS) += coda/
-Index: linux-2.6.22/fs/squashfs/inode.c
-===================================================================
---- /dev/null
-+++ linux-2.6.22/fs/squashfs/inode.c
-@@ -0,0 +1,2328 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * inode.c
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/zlib.h>
-+#include <linux/fs.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/vmalloc.h>
-+#include <linux/smp_lock.h>
-+#include <linux/exportfs.h>
-+
-+#include "squashfs.h"
-+
-+static void vfs_read_inode(struct inode *i);
-+static struct dentry *squashfs_get_parent(struct dentry *child);
-+static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode);
-+static int squashfs_statfs(struct dentry *, struct kstatfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
-+static int squashfs_readdir(struct file *, void *, filldir_t);
-+static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
-+ struct nameidata *);
-+static int squashfs_remount(struct super_block *s, int *flags, char *data);
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_get_sb(struct file_system_type *,int, const char *, void *,
-+ struct vfsmount *);
-+static struct inode *squashfs_alloc_inode(struct super_block *sb);
-+static void squashfs_destroy_inode(struct inode *inode);
-+static int init_inodecache(void);
-+static void destroy_inodecache(void);
-+
-+static struct file_system_type squashfs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "squashfs",
-+ .get_sb = squashfs_get_sb,
-+ .kill_sb = kill_block_super,
-+ .fs_flags = FS_REQUIRES_DEV
-+};
-+
-+static const unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static struct super_operations squashfs_super_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+ .remount_fs = squashfs_remount
-+};
-+
-+static struct super_operations squashfs_export_super_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+ .read_inode = vfs_read_inode
-+};
-+
-+static struct export_operations squashfs_export_ops = {
-+ .get_parent = squashfs_get_parent
-+};
-+
-+SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN const struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN const struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static const struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
-+ .lookup = squashfs_lookup
-+};
-+
-+
-+static struct buffer_head *get_block_length(struct super_block *s,
-+ int *cur_index, int *offset, int *c_byte)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned short temp;
-+ struct buffer_head *bh;
-+
-+ if (!(bh = sb_bread(s, *cur_index)))
-+ goto out;
-+
-+ if (msblk->devblksize - *offset == 1) {
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ else
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ bh->b_data);
-+ else
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ bh->b_data);
-+ *c_byte = temp;
-+ *offset = 1;
-+ } else {
-+ if (msblk->swap) {
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ } else {
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ }
-+ *c_byte = temp;
-+ *offset += 2;
-+ }
-+
-+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
-+ if (*offset == msblk->devblksize) {
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ *offset = 0;
-+ }
-+ if (*((unsigned char *) (bh->b_data + *offset)) !=
-+ SQUASHFS_MARKER_BYTE) {
-+ ERROR("Metadata block marker corrupt @ %x\n",
-+ *cur_index);
-+ brelse(bh);
-+ goto out;
-+ }
-+ (*offset)++;
-+ }
-+ return bh;
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index, int srclength)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+ msblk->devblksize_log2) + 2];
-+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
-+ unsigned int cur_index = index >> msblk->devblksize_log2;
-+ int bytes, avail_bytes, b = 0, k = 0;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte, srclength);
-+
-+ if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used)
-+ goto read_failure;
-+
-+ if (!(bh[0] = sb_getblk(s, cur_index)))
-+ goto block_release;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b, bh);
-+ } else {
-+ if (index < 0 || (index + 2) > sblk->bytes_used)
-+ goto read_failure;
-+
-+ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ if (c_byte > srclength || (index + c_byte) > sblk->bytes_used)
-+ goto read_failure;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b - 1, bh + 1);
-+ }
-+
-+ if (compressed) {
-+ int zlib_err = 0;
-+
-+ /*
-+ * uncompress block
-+ */
-+
-+ mutex_lock(&msblk->read_data_mutex);
-+
-+ msblk->stream.next_out = buffer;
-+ msblk->stream.avail_out = srclength;
-+
-+ for (bytes = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ wait_on_buffer(bh[k]);
-+ if (!buffer_uptodate(bh[k]))
-+ goto release_mutex;
-+
-+ msblk->stream.next_in = bh[k]->b_data + offset;
-+ msblk->stream.avail_in = avail_bytes;
-+
-+ if (k == 0) {
-+ zlib_err = zlib_inflateInit(&msblk->stream);
-+ if (zlib_err != Z_OK) {
-+ ERROR("zlib_inflateInit returned unexpected result 0x%x, srclength %d\n",
-+ zlib_err, srclength);
-+ goto release_mutex;
-+ }
-+
-+ if (avail_bytes == 0) {
-+ offset = 0;
-+ brelse(bh[k]);
-+ continue;
-+ }
-+ }
-+
-+ zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH);
-+ if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) {
-+ ERROR("zlib_inflate returned unexpected result 0x%x, srclength %d, avail_in %d, avail_out %d\n",
-+ zlib_err, srclength, msblk->stream.avail_in, msblk->stream.avail_out);
-+ goto release_mutex;
-+ }
-+
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ if (zlib_err != Z_STREAM_END)
-+ goto release_mutex;
-+
-+ zlib_err = zlib_inflateEnd(&msblk->stream);
-+ if (zlib_err != Z_OK) {
-+ ERROR("zlib_inflateEnd returned unexpected result 0x%x, srclength %d\n",
-+ zlib_err, srclength);
-+ goto release_mutex;
-+ }
-+ bytes = msblk->stream.total_out;
-+ mutex_unlock(&msblk->read_data_mutex);
-+ } else {
-+ int i;
-+
-+ for(i = 0; i < b; i++) {
-+ wait_on_buffer(bh[i]);
-+ if(!buffer_uptodate(bh[i]))
-+ goto block_release;
-+ }
-+
-+ for (bytes = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+release_mutex:
-+ mutex_unlock(&msblk->read_data_mutex);
-+
-+block_release:
-+ for (; k < b; k++)
-+ brelse(bh[k]);
-+
-+read_failure:
-+ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ int n, i, bytes, return_length = length;
-+ long long next_index;
-+
-+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
-+
-+ while ( 1 ) {
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (msblk->block_cache[i].block == block)
-+ break;
-+
-+ mutex_lock(&msblk->block_cache_mutex);
-+
-+ if (i == SQUASHFS_CACHED_BLKS) {
-+ /* read inode header block */
-+ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
-+ n ; n --, i = (i + 1) %
-+ SQUASHFS_CACHED_BLKS)
-+ if (msblk->block_cache[i].block !=
-+ SQUASHFS_USED_BLK)
-+ break;
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->waitq, &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->waitq, &wait);
-+ continue;
-+ }
-+ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
-+
-+ if (msblk->block_cache[i].block ==
-+ SQUASHFS_INVALID_BLK) {
-+ if (!(msblk->block_cache[i].data =
-+ kmalloc(SQUASHFS_METADATA_SIZE,
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate cache"
-+ "block\n");
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ mutex_unlock(&msblk->block_cache_mutex);
-+
-+ msblk->block_cache[i].length = squashfs_read_data(s,
-+ msblk->block_cache[i].data, block, 0, &next_index, SQUASHFS_METADATA_SIZE);
-+ if (msblk->block_cache[i].length == 0) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ mutex_lock(&msblk->block_cache_mutex);
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+ kfree(msblk->block_cache[i].data);
-+ wake_up(&msblk->waitq);
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+
-+ mutex_lock(&msblk->block_cache_mutex);
-+ wake_up(&msblk->waitq);
-+ msblk->block_cache[i].block = block;
-+ msblk->block_cache[i].next_index = next_index;
-+ TRACE("Read cache block [%llx:%x]\n", block, offset);
-+ }
-+
-+ if (msblk->block_cache[i].block != block) {
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ bytes = msblk->block_cache[i].length - offset;
-+
-+ if (bytes < 1) {
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto out;
-+ } else if (bytes >= length) {
-+ if (buffer)
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, length);
-+ if (msblk->block_cache[i].length - offset == length) {
-+ *next_block = msblk->block_cache[i].next_index;
-+ *next_offset = 0;
-+ } else {
-+ *next_block = block;
-+ *next_offset = offset + length;
-+ }
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto finish;
-+ } else {
-+ if (buffer) {
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, bytes);
-+ buffer += bytes;
-+ }
-+ block = msblk->block_cache[i].next_index;
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ length -= bytes;
-+ offset = 0;
-+ }
-+ }
-+
-+finish:
-+ return return_length;
-+out:
-+ return 0;
-+}
-+
-+
-+static int get_fragment_location(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
-+ struct squashfs_fragment_entry fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment)
-+{
-+ mutex_lock(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ mutex_unlock(&msblk->fragment_mutex);
-+}
-+
-+
-+SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length)
-+{
-+ int i, n;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ while ( 1 ) {
-+ mutex_lock(&msblk->fragment_mutex);
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
-+ msblk->fragment[i].block != start_block; i++);
-+
-+ if (i == SQUASHFS_CACHED_FRAGMENTS) {
-+ for (i = msblk->next_fragment, n =
-+ SQUASHFS_CACHED_FRAGMENTS; n &&
-+ msblk->fragment[i].locked; n--, i = (i + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS);
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ mutex_unlock(&msblk->fragment_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ continue;
-+ }
-+ msblk->next_fragment = (msblk->next_fragment + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS;
-+
-+ if (msblk->fragment[i].data == NULL)
-+ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
-+ (SQUASHFS_FILE_MAX_SIZE))) {
-+ ERROR("Failed to allocate fragment "
-+ "cache block\n");
-+ mutex_unlock(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ mutex_unlock(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL, sblk->block_size))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ smp_mb();
-+ goto out;
-+ }
-+
-+ mutex_lock(&msblk->fragment_mutex);
-+ msblk->fragment[i].block = start_block;
-+ TRACE("New fragment %d, start block %lld, locked %d\n",
-+ i, msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ mutex_unlock(&msblk->fragment_mutex);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ mutex_unlock(&msblk->fragment_mutex);
-+ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
-+ msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ return &msblk->fragment[i];
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime.tv_sec = inodeb->mtime;
-+ i->i_atime.tv_sec = inodeb->mtime;
-+ i->i_ctime.tv_sec = inodeb->mtime;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+}
-+
-+
-+static squashfs_inode_t squashfs_inode_lookup(struct super_block *s, int ino)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start = msblk->inode_lookup_table[SQUASHFS_LOOKUP_BLOCK(ino - 1)];
-+ int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino - 1);
-+ squashfs_inode_t inode;
-+
-+ TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino);
-+
-+ if (msblk->swap) {
-+ squashfs_inode_t sinode;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sinode, start, offset,
-+ sizeof(sinode), &start, &offset))
-+ goto out;
-+ SQUASHFS_SWAP_INODE_T((&inode), &sinode);
-+ } else if (!squashfs_get_cached_block(s, (char *) &inode, start, offset,
-+ sizeof(inode), &start, &offset))
-+ goto out;
-+
-+ TRACE("squashfs_inode_lookup, inode = 0x%llx\n", inode);
-+
-+ return inode;
-+
-+out:
-+ return SQUASHFS_INVALID_BLK;
-+}
-+
-+
-+static void vfs_read_inode(struct inode *i)
-+{
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ squashfs_inode_t inode = squashfs_inode_lookup(i->i_sb, i->i_ino);
-+
-+ TRACE("Entered vfs_read_inode\n");
-+
-+ if(inode != SQUASHFS_INVALID_BLK)
-+ (msblk->read_inode)(i, inode);
-+}
-+
-+
-+static struct dentry *squashfs_get_parent(struct dentry *child)
-+{
-+ struct inode *i = child->d_inode;
-+ struct inode *parent = iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode);
-+ struct dentry *rv;
-+
-+ TRACE("Entered squashfs_get_parent\n");
-+
-+ if(parent == NULL) {
-+ rv = ERR_PTR(-EACCES);
-+ goto out;
-+ }
-+
-+ rv = d_alloc_anon(parent);
-+ if(rv == NULL)
-+ rv = ERR_PTR(-ENOMEM);
-+
-+out:
-+ return rv;
-+}
-+
-+
-+SQSH_EXTERN struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct inode *i = iget_locked(s, inode_number);
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if(i && (i->i_state & I_NEW)) {
-+ (msblk->read_inode)(i, inode);
-+ unlock_new_inode(i);
-+ }
-+
-+ return i;
-+}
-+
-+
-+static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode)
-+{
-+ struct super_block *s = i->i_sb;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header id, sid;
-+ struct squashfs_base_inode_header *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_read_inode\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ squashfs_new_inode(msblk, i, inodeb);
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_reg_inode_header *inodep = &id.reg;
-+ struct squashfs_reg_inode_header *sinodep = &sid.reg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ i->i_nlink = 1;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_LREG_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_lreg_inode_header *inodep = &id.lreg;
-+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header *inodep = &id.dir;
-+ struct squashfs_dir_inode_header *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header *inodep = &id.dev;
-+ struct squashfs_dev_inode_header *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ struct squashfs_ipc_inode_header *inodep = &id.ipc;
-+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ return 1;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ make_bad_inode(i);
-+ return 0;
-+}
-+
-+
-+static int read_inode_lookup_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int length = SQUASHFS_LOOKUP_BLOCK_BYTES(sblk->inodes);
-+
-+ TRACE("In read_inode_lookup_table, length %d\n", length);
-+
-+ /* Allocate inode lookup table */
-+ if (!(msblk->inode_lookup_table = kmalloc(length, GFP_KERNEL))) {
-+ ERROR("Failed to allocate inode lookup table\n");
-+ return 0;
-+ }
-+
-+ if (!squashfs_read_data(s, (char *) msblk->inode_lookup_table,
-+ sblk->lookup_table_start, length |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
-+ ERROR("unable to read inode lookup table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long block;
-+
-+ for (i = 0; i < SQUASHFS_LOOKUP_BLOCKS(sblk->inodes); i++) {
-+ SQUASHFS_SWAP_LOOKUP_BLOCKS((&block),
-+ &msblk->inode_lookup_table[i], 1);
-+ msblk->inode_lookup_table[i] = block;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int length = SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments);
-+
-+ if(length == 0)
-+ return 1;
-+
-+ /* Allocate fragment index table */
-+ if (!(msblk->fragment_index = kmalloc(length, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (!squashfs_read_data(s, (char *) msblk->fragment_index,
-+ sblk->fragment_table_start, length |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments); i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
-+ &msblk->fragment_index[i], 1);
-+ msblk->fragment_index[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->read_inode = squashfs_read_inode;
-+ msblk->read_blocklist = read_blocklist;
-+ msblk->read_fragment_index_table = read_fragment_index_table;
-+
-+ if (sblk->s_major == 1) {
-+ if (!squashfs_1_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 1.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if (sblk->s_major == 2) {
-+ if (!squashfs_2_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 2.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
-+ SQUASHFS_MINOR) {
-+ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
-+ "filesystem\n", sblk->s_major, sblk->s_minor);
-+ SERROR("Please update your kernel\n");
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int squashfs_fill_super(struct super_block *s, void *data, int silent)
-+{
-+ struct squashfs_sb_info *msblk;
-+ struct squashfs_super_block *sblk;
-+ int i;
-+ char b[BDEVNAME_SIZE];
-+ struct inode *root;
-+
-+ TRACE("Entered squashfs_read_superblock\n");
-+
-+ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate superblock\n");
-+ goto failure;
-+ }
-+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
-+ msblk = s->s_fs_info;
-+ if (!(msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ goto failure;
-+ }
-+ sblk = &msblk->sblk;
-+
-+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+
-+ mutex_init(&msblk->read_data_mutex);
-+ mutex_init(&msblk->read_page_mutex);
-+ mutex_init(&msblk->block_cache_mutex);
-+ mutex_init(&msblk->fragment_mutex);
-+ mutex_init(&msblk->meta_index_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ sblk->bytes_used = sizeof(struct squashfs_super_block);
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, sizeof(struct squashfs_super_block))) {
-+ SERROR("unable to read superblock\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Check it is a SQUASHFS superblock */
-+ msblk->swap = 0;
-+ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
-+ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
-+ struct squashfs_super_block ssblk;
-+
-+ WARNING("Mounting a different endian SQUASHFS "
-+ "filesystem on %s\n", bdevname(s->s_bdev, b));
-+
-+ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
-+ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
-+ msblk->swap = 1;
-+ } else {
-+ SERROR("Can't find a SQUASHFS superblock on %s\n",
-+ bdevname(s->s_bdev, b));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ /* Check the filesystem does not extend beyond the end of the
-+ block device */
-+ if(sblk->bytes_used < 0 || sblk->bytes_used > i_size_read(s->s_bdev->bd_inode))
-+ goto failed_mount;
-+
-+ /* Check the root inode for sanity */
-+ if (SQUASHFS_INODE_OFFSET(sblk->root_inode) > SQUASHFS_METADATA_SIZE)
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
-+ TRACE("Inodes are %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_INODES
-+ (sblk->flags) ? "un" : "");
-+ TRACE("Data is %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
-+ ? "un" : "");
-+ TRACE("Check data is %s present in the filesystem\n",
-+ SQUASHFS_CHECK_DATA(sblk->flags) ?
-+ "" : "not");
-+ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
-+ TRACE("Block size %d\n", sblk->block_size);
-+ TRACE("Number of inodes %d\n", sblk->inodes);
-+ if (sblk->s_major > 1)
-+ TRACE("Number of fragments %d\n", sblk->fragments);
-+ TRACE("Number of uids %d\n", sblk->no_uids);
-+ TRACE("Number of gids %d\n", sblk->no_guids);
-+ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
-+ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
-+ if (sblk->s_major > 1)
-+ TRACE("sblk->fragment_table_start %llx\n",
-+ sblk->fragment_table_start);
-+ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
-+
-+ s->s_flags |= MS_RDONLY;
-+ s->s_op = &squashfs_super_ops;
-+
-+ /* Init inode_table block pointer array */
-+ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
-+ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+
-+ msblk->next_cache = 0;
-+
-+ /* Allocate read_page block */
-+ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_page block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate uid and gid tables */
-+ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ goto failed_mount;
-+ }
-+ msblk->guid = msblk->uid + sblk->no_uids;
-+
-+ if (msblk->swap) {
-+ unsigned int suid[sblk->no_uids + sblk->no_guids];
-+
-+ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
-+ sblk->no_guids), (sizeof(unsigned int) * 8));
-+ } else
-+ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+
-+ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
-+ goto allocate_root;
-+
-+ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
-+ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
-+ msblk->fragment[i].locked = 0;
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].data = NULL;
-+ }
-+
-+ msblk->next_fragment = 0;
-+
-+ /* Allocate and read fragment index table */
-+ if (msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+ if(sblk->s_major < 3 || sblk->lookup_table_start == SQUASHFS_INVALID_BLK)
-+ goto allocate_root;
-+
-+ /* Allocate and read inode lookup table */
-+ if (read_inode_lookup_table(s) == 0)
-+ goto failed_mount;
-+
-+ s->s_op = &squashfs_export_super_ops;
-+ s->s_export_op = &squashfs_export_ops;
-+
-+allocate_root:
-+ root = new_inode(s);
-+ if ((msblk->read_inode)(root, sblk->root_inode) == 0)
-+ goto failed_mount;
-+ insert_inode_hash(root);
-+
-+ if ((s->s_root = d_alloc_root(root)) == NULL) {
-+ ERROR("Root inode create failed\n");
-+ iput(root);
-+ goto failed_mount;
-+ }
-+
-+ TRACE("Leaving squashfs_read_super\n");
-+ return 0;
-+
-+failed_mount:
-+ kfree(msblk->inode_lookup_table);
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ vfree(msblk->stream.workspace);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ return -EINVAL;
-+
-+failure:
-+ return -ENOMEM;
-+}
-+
-+
-+static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
-+{
-+ struct squashfs_sb_info *msblk = dentry->d_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ TRACE("Entered squashfs_statfs\n");
-+
-+ buf->f_type = SQUASHFS_MAGIC;
-+ buf->f_bsize = sblk->block_size;
-+ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
-+ buf->f_bfree = buf->f_bavail = 0;
-+ buf->f_files = sblk->inodes;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = SQUASHFS_NAME_LEN;
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_symlink_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
-+ long long block = SQUASHFS_I(inode)->start_block;
-+ int offset = SQUASHFS_I(inode)->offset;
-+ void *pageaddr = kmap(page);
-+
-+ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
-+ "%llx, offset %x\n", page->index,
-+ SQUASHFS_I(inode)->start_block,
-+ SQUASHFS_I(inode)->offset);
-+
-+ for (length = 0; length < index; length += bytes) {
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
-+ block, offset, PAGE_CACHE_SIZE, &block,
-+ &offset))) {
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
-+ offset);
-+ goto skip_read;
-+ }
-+ }
-+
-+ if (length != index) {
-+ ERROR("(squashfs_symlink_readpage) length != index\n");
-+ bytes = 0;
-+ goto skip_read;
-+ }
-+
-+ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
-+ i_size_read(inode) - length;
-+
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
-+ offset, bytes, &block, &offset)))
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap(page);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
-+{
-+ struct meta_index *meta = NULL;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ int i;
-+
-+ mutex_lock(&msblk->meta_index_mutex);
-+
-+ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
-+
-+ if(msblk->meta_index == NULL)
-+ goto not_allocated;
-+
-+ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
-+ if (msblk->meta_index[i].inode_number == inode->i_ino &&
-+ msblk->meta_index[i].offset >= offset &&
-+ msblk->meta_index[i].offset <= index &&
-+ msblk->meta_index[i].locked == 0) {
-+ TRACE("locate_meta_index: entry %d, offset %d\n", i,
-+ msblk->meta_index[i].offset);
-+ meta = &msblk->meta_index[i];
-+ offset = meta->offset;
-+ }
-+
-+ if (meta)
-+ meta->locked = 1;
-+
-+not_allocated:
-+ mutex_unlock(&msblk->meta_index_mutex);
-+
-+ return meta;
-+}
-+
-+
-+struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ mutex_lock(&msblk->meta_index_mutex);
-+
-+ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
-+
-+ if(msblk->meta_index == NULL) {
-+ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
-+ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
-+ ERROR("Failed to allocate meta_index\n");
-+ goto failed;
-+ }
-+ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
-+ msblk->meta_index[i].inode_number = 0;
-+ msblk->meta_index[i].locked = 0;
-+ }
-+ msblk->next_meta_index = 0;
-+ }
-+
-+ for(i = SQUASHFS_META_NUMBER; i &&
-+ msblk->meta_index[msblk->next_meta_index].locked; i --)
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ if(i == 0) {
-+ TRACE("empty_meta_index: failed!\n");
-+ goto failed;
-+ }
-+
-+ TRACE("empty_meta_index: returned meta entry %d, %p\n",
-+ msblk->next_meta_index,
-+ &msblk->meta_index[msblk->next_meta_index]);
-+
-+ meta = &msblk->meta_index[msblk->next_meta_index];
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ meta->inode_number = inode->i_ino;
-+ meta->offset = offset;
-+ meta->skip = skip;
-+ meta->entries = 0;
-+ meta->locked = 1;
-+
-+failed:
-+ mutex_unlock(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+ smp_mb();
-+}
-+
-+
-+static int read_block_index(struct super_block *s, int blocks, char *block_list,
-+ long long *start_block, int *offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned int *block_listp;
-+ int block = 0;
-+
-+ if (msblk->swap) {
-+ char sblock_list[blocks << 2];
-+
-+ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
-+ ((unsigned int *)sblock_list), blocks);
-+ } else
-+ if (!squashfs_get_cached_block(s, block_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+
-+ for (block_listp = (unsigned int *) block_list; blocks;
-+ block_listp++, blocks --)
-+ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
-+
-+ return block;
-+
-+failure:
-+ return -1;
-+}
-+
-+
-+#define SIZE 256
-+
-+static inline int calculate_skip(int blocks) {
-+ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
-+ return skip >= 7 ? 7 : skip + 1;
-+}
-+
-+
-+static int get_meta_index(struct inode *inode, int index,
-+ long long *index_block, int *index_offset,
-+ long long *data_block, char *block_list)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
-+ int offset = 0;
-+ struct meta_index *meta;
-+ struct meta_entry *meta_entry;
-+ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
-+ int cur_offset = SQUASHFS_I(inode)->offset;
-+ long long cur_data_block = SQUASHFS_I(inode)->start_block;
-+ int i;
-+
-+ index /= SQUASHFS_META_INDEXES * skip;
-+
-+ while ( offset < index ) {
-+ meta = locate_meta_index(inode, index, offset + 1);
-+
-+ if (meta == NULL) {
-+ if ((meta = empty_meta_index(inode, offset + 1,
-+ skip)) == NULL)
-+ goto all_done;
-+ } else {
-+ if(meta->entries == 0)
-+ goto failed;
-+ offset = index < meta->offset + meta->entries ? index :
-+ meta->offset + meta->entries - 1;
-+ meta_entry = &meta->meta_entry[offset - meta->offset];
-+ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
-+ cur_offset = meta_entry->offset;
-+ cur_data_block = meta_entry->data_block;
-+ TRACE("get_meta_index: offset %d, meta->offset %d, "
-+ "meta->entries %d\n", offset, meta->offset,
-+ meta->entries);
-+ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
-+ " data_block 0x%llx\n", cur_index_block,
-+ cur_offset, cur_data_block);
-+ }
-+
-+ for (i = meta->offset + meta->entries; i <= index &&
-+ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
-+ int blocks = skip * SQUASHFS_META_INDEXES;
-+
-+ while (blocks) {
-+ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
-+ blocks;
-+ int res = read_block_index(inode->i_sb, block,
-+ block_list, &cur_index_block,
-+ &cur_offset);
-+
-+ if (res == -1)
-+ goto failed;
-+
-+ cur_data_block += res;
-+ blocks -= block;
-+ }
-+
-+ meta_entry = &meta->meta_entry[i - meta->offset];
-+ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
-+ meta_entry->offset = cur_offset;
-+ meta_entry->data_block = cur_data_block;
-+ meta->entries ++;
-+ offset ++;
-+ }
-+
-+ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
-+ meta->offset, meta->entries);
-+
-+ release_meta_index(inode, meta);
-+ }
-+
-+all_done:
-+ *index_block = cur_index_block;
-+ *index_offset = cur_offset;
-+ *data_block = cur_data_block;
-+
-+ return offset * SQUASHFS_META_INDEXES * skip;
-+
-+failed:
-+ release_meta_index(inode, meta);
-+ return -1;
-+}
-+
-+
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize)
-+{
-+ long long block_ptr;
-+ int offset;
-+ long long block;
-+ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
-+ block_list);
-+
-+ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
-+ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
-+ block);
-+
-+ if(res == -1)
-+ goto failure;
-+
-+ index -= res;
-+
-+ while ( index ) {
-+ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
-+ int res = read_block_index(inode->i_sb, blocks, block_list,
-+ &block_ptr, &offset);
-+ if (res == -1)
-+ goto failure;
-+ block += res;
-+ index -= blocks;
-+ }
-+
-+ if (read_block_index(inode->i_sb, 1, block_list,
-+ &block_ptr, &offset) == -1)
-+ goto failure;
-+ *bsize = *((unsigned int *) block_list);
-+
-+ return block;
-+
-+failure:
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char *block_list;
-+ long long block;
-+ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
-+ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
-+ void *pageaddr;
-+ struct squashfs_fragment_cache *fragment = NULL;
-+ char *data_ptr = msblk->read_page;
-+
-+ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
-+ int start_index = page->index & ~mask;
-+ int end_index = start_index | mask;
-+
-+ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block_list\n");
-+ goto skip_read;
-+ }
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT))
-+ goto skip_read;
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ if ((block = (msblk->read_blocklist)(inode, index, 1,
-+ block_list, NULL, &bsize)) == 0)
-+ goto skip_read;
-+
-+ mutex_lock(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL, sblk->block_size))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ mutex_unlock(&msblk->read_page_mutex);
-+ goto skip_read;
-+ }
-+ } else {
-+ if ((fragment = get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)->u.s1.fragment_size))
-+ == NULL) {
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ (int) SQUASHFS_I(inode)->
-+ u.s1.fragment_size);
-+ goto skip_read;
-+ }
-+ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
-+ (i_size_read(inode) & (sblk->block_size
-+ - 1));
-+ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
-+ data_ptr = fragment->data;
-+ }
-+
-+ for (i = start_index; i <= end_index && byte_offset < bytes;
-+ i++, byte_offset += PAGE_CACHE_SIZE) {
-+ struct page *push_page;
-+ int avail = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
-+ PAGE_CACHE_SIZE : bytes - byte_offset;
-+
-+ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
-+ bytes, i, byte_offset, avail);
-+
-+ push_page = (i == page->index) ? page :
-+ grab_cache_page_nowait(page->mapping, i);
-+
-+ if (!push_page)
-+ continue;
-+
-+ if (PageUptodate(push_page))
-+ goto skip_page;
-+
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset, avail);
-+ memset(pageaddr + avail, 0, PAGE_CACHE_SIZE - avail);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+skip_page:
-+ unlock_page(push_page);
-+ if(i != page->index)
-+ page_cache_release(push_page);
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log))
-+ mutex_unlock(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ kfree(block_list);
-+ return 0;
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ kfree(block_list);
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage4K(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char *block_list;
-+ long long block;
-+ unsigned int bsize, bytes = 0;
-+ void *pageaddr;
-+
-+ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT)) {
-+ block_list = NULL;
-+ goto skip_read;
-+ }
-+
-+ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block_list\n");
-+ goto skip_read;
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || page->index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ block = (msblk->read_blocklist)(inode, page->index, 1,
-+ block_list, NULL, &bsize);
-+ if(block == 0)
-+ goto skip_read;
-+
-+ mutex_lock(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL, sblk->block_size);
-+ if (bytes) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ mutex_unlock(&msblk->read_page_mutex);
-+ } else {
-+ struct squashfs_fragment_cache *fragment =
-+ get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ release_cached_fragment(msblk, fragment);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block, (int)
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ }
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ kfree(block_list);
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ f_pos =- 3;
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length + 3;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index *index;
-+ char *str;
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) +
-+ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_index\n");
-+ goto failure;
-+ }
-+
-+ index = (struct squashfs_dir_index *) (str + SQUASHFS_NAME_LEN + 1);
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ kfree(str);
-+failure:
-+ return length + 3;
-+}
-+
-+
-+static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ struct squashfs_dir_entry *dire;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto finish;
-+ }
-+
-+ while(file->f_pos < 3) {
-+ char *name;
-+ int size, i_ino;
-+
-+ if(file->f_pos == 0) {
-+ name = ".";
-+ size = 1;
-+ i_ino = i->i_ino;
-+ } else {
-+ name = "..";
-+ size = 2;
-+ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
-+ }
-+ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
-+ (unsigned int) dirent, name, size, (int)
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]);
-+
-+ if (filldir(dirent, name, size,
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]) < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos += size;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ }
-+ }
-+
-+finish:
-+ kfree(dire);
-+ return 0;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ kfree(dire);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ struct squashfs_dir_entry *dire;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto exit_lookup;
-+ }
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_lookup;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (name[0] < dire->name[0])
-+ goto exit_lookup;
-+
-+ if ((len == dire->size + 1) && !strncmp(name, dire->name, len)) {
-+ squashfs_inode_t ino = SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number);
-+
-+ inode = squashfs_iget(i->i_sb, ino, dirh.inode_number + dire->inode_number);
-+
-+ goto exit_lookup;
-+ }
-+ }
-+ }
-+
-+exit_lookup:
-+ kfree(dire);
-+ if (inode)
-+ return d_splice_alias(inode, dentry);
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_lookup;
-+}
-+
-+
-+static int squashfs_remount(struct super_block *s, int *flags, char *data)
-+{
-+ *flags |= MS_RDONLY;
-+ return 0;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ if (s->s_fs_info) {
-+ struct squashfs_sb_info *sbi = s->s_fs_info;
-+ if (sbi->block_cache)
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (sbi->block_cache[i].block !=
-+ SQUASHFS_INVALID_BLK)
-+ kfree(sbi->block_cache[i].data);
-+ if (sbi->fragment)
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
-+ SQUASHFS_FREE(sbi->fragment[i].data);
-+ kfree(sbi->fragment);
-+ kfree(sbi->block_cache);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ kfree(sbi->meta_index);
-+ vfree(sbi->stream.workspace);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ }
-+}
-+
-+
-+static int squashfs_get_sb(struct file_system_type *fs_type, int flags,
-+ const char *dev_name, void *data,
-+ struct vfsmount *mnt)
-+{
-+ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super,
-+ mnt);
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+ int err = init_inodecache();
-+ if (err)
-+ goto out;
-+
-+ printk(KERN_INFO "squashfs: version 3.2-r2 (2007/01/15) "
-+ "Phillip Lougher\n");
-+
-+ if ((err = register_filesystem(&squashfs_fs_type)))
-+ destroy_inodecache();
-+
-+out:
-+ return err;
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ unregister_filesystem(&squashfs_fs_type);
-+ destroy_inodecache();
-+}
-+
-+
-+static struct kmem_cache * squashfs_inode_cachep;
-+
-+
-+static struct inode *squashfs_alloc_inode(struct super_block *sb)
-+{
-+ struct squashfs_inode_info *ei;
-+ ei = kmem_cache_alloc(squashfs_inode_cachep, GFP_KERNEL);
-+ if (!ei)
-+ return NULL;
-+ return &ei->vfs_inode;
-+}
-+
-+
-+static void squashfs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
-+}
-+
-+
-+static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flags)
-+{
-+ struct squashfs_inode_info *ei = foo;
-+
-+ inode_init_once(&ei->vfs_inode);
-+}
-+
-+
-+static int __init init_inodecache(void)
-+{
-+ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
-+ sizeof(struct squashfs_inode_info),
-+ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-+ init_once);
-+ if (squashfs_inode_cachep == NULL)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+
-+static void destroy_inodecache(void)
-+{
-+ kmem_cache_destroy(squashfs_inode_cachep);
-+}
-+
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs 3.2-r2, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6.22/fs/squashfs/Makefile
-===================================================================
---- /dev/null
-+++ linux-2.6.22/fs/squashfs/Makefile
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+obj-$(CONFIG_SQUASHFS) += squashfs.o
-+squashfs-y += inode.o
-+squashfs-y += squashfs2_0.o
-Index: linux-2.6.22/fs/squashfs/squashfs2_0.c
-===================================================================
---- /dev/null
-+++ linux-2.6.22/fs/squashfs/squashfs2_0.c
-@@ -0,0 +1,742 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs2_0.c
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/zlib.h>
-+#include <linux/fs.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+
-+#include "squashfs.h"
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
-+static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
-+ struct nameidata *);
-+
-+static struct file_operations squashfs_dir_ops_2 = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir_2
-+};
-+
-+static struct inode_operations squashfs_dir_inode_ops_2 = {
-+ .lookup = squashfs_lookup_2
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static int read_fragment_index_table_2(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index_2,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments))) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ unsigned int fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
-+ &msblk->fragment_index_2[i], 1);
-+ msblk->fragment_index_2[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
-+ struct squashfs_fragment_entry_2 fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry_2 sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ i->i_ino = ino;
-+ i->i_mtime.tv_sec = sblk->mkfs_time;
-+ i->i_atime.tv_sec = sblk->mkfs_time;
-+ i->i_ctime.tv_sec = sblk->mkfs_time;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_nlink = 1;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+}
-+
-+
-+static int squashfs_read_inode_2(struct inode *i, squashfs_inode_t inode)
-+{
-+ struct super_block *s = i->i_sb;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ unsigned int ino = i->i_ino;
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header_2 id, sid;
-+ struct squashfs_base_inode_header_2 *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ squashfs_new_inode(msblk, i, inodeb, ino);
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
-+ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
-+ long long frag_blk;
-+ unsigned int frag_size = 0;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location_2(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %x, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
-+ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header_2 *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header_2 *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
-+ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ return 1;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 *index;
-+ char *str;
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) +
-+ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_index\n");
-+ goto failure;
-+ }
-+
-+ index = (struct squashfs_dir_index_2 *) (str + SQUASHFS_NAME_LEN + 1);
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index_2),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ kfree(str);
-+failure:
-+ return length;
-+}
-+
-+
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ struct squashfs_dir_entry_2 *dire;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto finish;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos, SQUASHFS_MK_VFS_INODE(
-+ dirh.start_block, dire->offset),
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ }
-+ }
-+
-+finish:
-+ kfree(dire);
-+ return 0;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ kfree(dire);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ struct squashfs_dir_entry_2 *dire;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto exit_loop;
-+ }
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (sorted && name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+ unsigned int inode_number = SQUASHFS_MK_VFS_INODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %lld\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = squashfs_iget(i->i_sb, ino, inode_number);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ kfree(dire);
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->read_inode = squashfs_read_inode_2;
-+ msblk->read_fragment_index_table = read_fragment_index_table_2;
-+
-+ sblk->bytes_used = sblk->bytes_used_2;
-+ sblk->uid_start = sblk->uid_start_2;
-+ sblk->guid_start = sblk->guid_start_2;
-+ sblk->inode_table_start = sblk->inode_table_start_2;
-+ sblk->directory_table_start = sblk->directory_table_start_2;
-+ sblk->fragment_table_start = sblk->fragment_table_start_2;
-+
-+ return 1;
-+}
-Index: linux-2.6.22/fs/squashfs/squashfs.h
-===================================================================
---- /dev/null
-+++ linux-2.6.22/fs/squashfs/squashfs.h
-@@ -0,0 +1,87 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs.h
-+ */
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#endif
-+
-+#ifdef SQUASHFS_TRACE
-+#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
-+#else
-+#define TRACE(s, args...) {}
-+#endif
-+
-+#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
-+
-+#define SERROR(s, args...) do { \
-+ if (!silent) \
-+ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
-+ } while(0)
-+
-+#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
-+
-+static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
-+{
-+ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
-+}
-+
-+#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
-+#define SQSH_EXTERN
-+extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index, int srclength);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset);
-+extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment);
-+extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length);
-+extern struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number);
-+extern const struct address_space_operations squashfs_symlink_aops;
-+extern const struct address_space_operations squashfs_aops;
-+extern const struct address_space_operations squashfs_aops_4K;
-+extern struct inode_operations squashfs_dir_inode_ops;
-+#else
-+#define SQSH_EXTERN static
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-Index: linux-2.6.22/include/linux/squashfs_fs.h
-===================================================================
---- /dev/null
-+++ linux-2.6.22/include/linux/squashfs_fs.h
-@@ -0,0 +1,934 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs.h
-+ */
-+
-+#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a) vmalloc(a)
-+#define SQUASHFS_FREE(a) vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a) kfree(a)
-+#endif
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_MAJOR 3
-+#define SQUASHFS_MINOR 0
-+#define SQUASHFS_MAGIC 0x73717368
-+#define SQUASHFS_MAGIC_SWAP 0x68737173
-+#define SQUASHFS_START 0
-+
-+/* size of metadata (inode and directory) blocks */
-+#define SQUASHFS_METADATA_SIZE 8192
-+#define SQUASHFS_METADATA_LOG 13
-+
-+/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE 65536
-+#define SQUASHFS_FILE_LOG 16
-+
-+#define SQUASHFS_FILE_MAX_SIZE 65536
-+
-+/* Max number of uids and gids */
-+#define SQUASHFS_UIDS 256
-+#define SQUASHFS_GUIDS 255
-+
-+/* Max length of filename (not 255) */
-+#define SQUASHFS_NAME_LEN 256
-+
-+#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
-+#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
-+#define SQUASHFS_INVALID_BLK ((long long) -1)
-+#define SQUASHFS_USED_BLK ((long long) -2)
-+
-+/* Filesystem flags */
-+#define SQUASHFS_NOI 0
-+#define SQUASHFS_NOD 1
-+#define SQUASHFS_CHECK 2
-+#define SQUASHFS_NOF 3
-+#define SQUASHFS_NO_FRAG 4
-+#define SQUASHFS_ALWAYS_FRAG 5
-+#define SQUASHFS_DUPLICATE 6
-+#define SQUASHFS_EXPORT 7
-+
-+#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
-+
-+#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOI)
-+
-+#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOD)
-+
-+#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOF)
-+
-+#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NO_FRAG)
-+
-+#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_ALWAYS_FRAG)
-+
-+#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_DUPLICATE)
-+
-+#define SQUASHFS_EXPORTABLE(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_EXPORT)
-+
-+#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking, exortable) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6) | (exportable << 7))
-+
-+/* Max number of types and file types */
-+#define SQUASHFS_DIR_TYPE 1
-+#define SQUASHFS_FILE_TYPE 2
-+#define SQUASHFS_SYMLINK_TYPE 3
-+#define SQUASHFS_BLKDEV_TYPE 4
-+#define SQUASHFS_CHRDEV_TYPE 5
-+#define SQUASHFS_FIFO_TYPE 6
-+#define SQUASHFS_SOCKET_TYPE 7
-+#define SQUASHFS_LDIR_TYPE 8
-+#define SQUASHFS_LREG_TYPE 9
-+
-+/* 1.0 filesystem type definitions */
-+#define SQUASHFS_TYPES 5
-+#define SQUASHFS_IPC_TYPE 0
-+
-+/* Flag whether block is compressed or uncompressed, bit is set if block is
-+ * uncompressed */
-+#define SQUASHFS_COMPRESSED_BIT (1 << 15)
-+
-+#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
-+ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
-+
-+#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
-+
-+#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
-+
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
-+
-+#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
-+
-+/*
-+ * Inode number ops. Inodes consist of a compressed block number, and an
-+ * uncompressed offset within that block
-+ */
-+#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
-+
-+#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
-+
-+#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
-+ << 16) + (B)))
-+
-+/* Compute 32 bit VFS inode number from squashfs inode number */
-+#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
-+ ((b) >> 2) + 1))
-+/* XXX */
-+
-+/* Translate between VFS mode and squashfs mode */
-+#define SQUASHFS_MODE(a) ((a) & 0xfff)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES(A) ((A) * sizeof(struct squashfs_fragment_entry))
-+
-+#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
-+ sizeof(long long))
-+
-+/* inode lookup table defines */
-+#define SQUASHFS_LOOKUP_BYTES(A) ((A) * sizeof(squashfs_inode_t))
-+
-+#define SQUASHFS_LOOKUP_BLOCK(A) (SQUASHFS_LOOKUP_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_LOOKUP_BLOCK_OFFSET(A) (SQUASHFS_LOOKUP_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_LOOKUP_BLOCKS(A) ((SQUASHFS_LOOKUP_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_LOOKUP_BLOCK_BYTES(A) (SQUASHFS_LOOKUP_BLOCKS(A) *\
-+ sizeof(long long))
-+
-+/* cached data constants for filesystem */
-+#define SQUASHFS_CACHED_BLKS 8
-+
-+#define SQUASHFS_MAX_FILE_SIZE_LOG 64
-+
-+#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
-+ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
-+
-+#define SQUASHFS_MARKER_BYTE 0xff
-+
-+/* meta index cache */
-+#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
-+#define SQUASHFS_META_ENTRIES 31
-+#define SQUASHFS_META_NUMBER 8
-+#define SQUASHFS_SLOTS 4
-+
-+struct meta_entry {
-+ long long data_block;
-+ unsigned int index_block;
-+ unsigned short offset;
-+ unsigned short pad;
-+};
-+
-+struct meta_index {
-+ unsigned int inode_number;
-+ unsigned int offset;
-+ unsigned short entries;
-+ unsigned short skip;
-+ unsigned short locked;
-+ unsigned short pad;
-+ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
-+};
-+
-+
-+/*
-+ * definitions for structures on disk
-+ */
-+
-+typedef long long squashfs_block_t;
-+typedef long long squashfs_inode_t;
-+
-+struct squashfs_super_block {
-+ unsigned int s_magic;
-+ unsigned int inodes;
-+ unsigned int bytes_used_2;
-+ unsigned int uid_start_2;
-+ unsigned int guid_start_2;
-+ unsigned int inode_table_start_2;
-+ unsigned int directory_table_start_2;
-+ unsigned int s_major:16;
-+ unsigned int s_minor:16;
-+ unsigned int block_size_1:16;
-+ unsigned int block_log:16;
-+ unsigned int flags:8;
-+ unsigned int no_uids:8;
-+ unsigned int no_guids:8;
-+ unsigned int mkfs_time /* time of filesystem creation */;
-+ squashfs_inode_t root_inode;
-+ unsigned int block_size;
-+ unsigned int fragments;
-+ unsigned int fragment_table_start_2;
-+ long long bytes_used;
-+ long long uid_start;
-+ long long guid_start;
-+ long long inode_table_start;
-+ long long directory_table_start;
-+ long long fragment_table_start;
-+ long long lookup_table_start;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_index {
-+ unsigned int index;
-+ unsigned int start_block;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_BASE_INODE_HEADER \
-+ unsigned int inode_type:4; \
-+ unsigned int mode:12; \
-+ unsigned int uid:8; \
-+ unsigned int guid:8; \
-+ unsigned int mtime; \
-+ unsigned int inode_number;
-+
-+struct squashfs_base_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_lreg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ long long file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int parent_inode;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int i_count:16;
-+ unsigned int parent_inode;
-+ struct squashfs_dir_index index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header {
-+ struct squashfs_base_inode_header base;
-+ struct squashfs_dev_inode_header dev;
-+ struct squashfs_symlink_inode_header symlink;
-+ struct squashfs_reg_inode_header reg;
-+ struct squashfs_lreg_inode_header lreg;
-+ struct squashfs_dir_inode_header dir;
-+ struct squashfs_ldir_inode_header ldir;
-+ struct squashfs_ipc_inode_header ipc;
-+};
-+
-+struct squashfs_dir_entry {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ int inode_number:16;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_header {
-+ unsigned int count:8;
-+ unsigned int start_block;
-+ unsigned int inode_number;
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry {
-+ long long start_block;
-+ unsigned int size;
-+ unsigned int pending;
-+} __attribute__ ((packed));
-+
-+extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
-+extern int squashfs_uncompress_init(void);
-+extern int squashfs_uncompress_exit(void);
-+
-+/*
-+ * macros to convert each packed bitfield structure from little endian to big
-+ * endian and vice versa. These are needed when creating or using a filesystem
-+ * on a machine with different byte ordering to the target architecture.
-+ *
-+ */
-+
-+#define SQUASHFS_SWAP_START \
-+ int bits;\
-+ int b_pos;\
-+ unsigned long long val;\
-+ unsigned char *s;\
-+ unsigned char *d;
-+
-+#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
-+ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
-+ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
-+ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
-+ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
-+ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
-+ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
-+ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
-+ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
-+ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
-+ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
-+ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
-+ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
-+ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
-+ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
-+ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
-+ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
-+ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
-+ SQUASHFS_SWAP((s)->lookup_table_start, d, 888, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header))\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dev_inode_header)); \
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_reg_inode_header));\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_lreg_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
-+ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_INODE_T(s, d) SQUASHFS_SWAP_LONG_LONGS(s, d, 1)
-+
-+#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 2);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 16)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_INTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 4);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 32)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 64)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * bits / 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ bits)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+#define SQUASHFS_SWAP_LOOKUP_BLOCKS(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+
-+struct squashfs_base_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int type:4;
-+ unsigned int offset:4;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
-+ SQUASHFS_SWAP((s)->guid, d, 20, 4);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header_1));\
-+ SQUASHFS_SWAP((s)->type, d, 24, 4);\
-+ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_1));\
-+ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_1));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_1));\
-+ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_1));\
-+ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+
-+struct squashfs_dir_index_2 {
-+ unsigned int index:27;
-+ unsigned int start_block:29;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_base_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+ unsigned int i_count:16;
-+ struct squashfs_dir_index_2 index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header_2 {
-+ struct squashfs_base_inode_header_2 base;
-+ struct squashfs_dev_inode_header_2 dev;
-+ struct squashfs_symlink_inode_header_2 symlink;
-+ struct squashfs_reg_inode_header_2 reg;
-+ struct squashfs_dir_inode_header_2 dir;
-+ struct squashfs_ldir_inode_header_2 ldir;
-+ struct squashfs_ipc_inode_header_2 ipc;
-+};
-+
-+struct squashfs_dir_header_2 {
-+ unsigned int count:8;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_entry_2 {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry_2 {
-+ unsigned int start_block;
-+ unsigned int size;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_2)); \
-+ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_2));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_2));\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
-+ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 27);\
-+ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
-+ SQUASHFS_SWAP((s)->size, d, 56, 8);\
-+}
-+#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 32, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
-+
-+#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
-+ sizeof(int))
-+
-+#endif
-+
-+#ifdef __KERNEL__
-+
-+/*
-+ * macros used to swap each structure entry, taking into account
-+ * bitfields and different bitfield placing conventions on differing
-+ * architectures
-+ */
-+
-+#include <asm/byteorder.h>
-+
-+#ifdef __BIG_ENDIAN
-+ /* convert from little endian to big endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, b_pos)
-+#else
-+ /* convert from big endian to little endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, 64 - tbits - b_pos)
-+#endif
-+
-+#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
-+ b_pos = pos % 8;\
-+ val = 0;\
-+ s = (unsigned char *)p + (pos / 8);\
-+ d = ((unsigned char *) &val) + 7;\
-+ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
-+ *d-- = *s++;\
-+ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
-+}
-+
-+#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
-+
-+#endif
-+#endif
-Index: linux-2.6.22/include/linux/squashfs_fs_i.h
-===================================================================
---- /dev/null
-+++ linux-2.6.22/include/linux/squashfs_fs_i.h
-@@ -0,0 +1,45 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_i.h
-+ */
-+
-+struct squashfs_inode_info {
-+ long long start_block;
-+ unsigned int offset;
-+ union {
-+ struct {
-+ long long fragment_start_block;
-+ unsigned int fragment_size;
-+ unsigned int fragment_offset;
-+ long long block_list_start;
-+ } s1;
-+ struct {
-+ long long directory_index_start;
-+ unsigned int directory_index_offset;
-+ unsigned int directory_index_count;
-+ unsigned int parent_inode;
-+ } s2;
-+ } u;
-+ struct inode vfs_inode;
-+};
-+#endif
-Index: linux-2.6.22/include/linux/squashfs_fs_sb.h
-===================================================================
---- /dev/null
-+++ linux-2.6.22/include/linux/squashfs_fs_sb.h
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_sb.h
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+
-+struct squashfs_cache {
-+ long long block;
-+ int length;
-+ long long next_index;
-+ char *data;
-+};
-+
-+struct squashfs_fragment_cache {
-+ long long block;
-+ int length;
-+ unsigned int locked;
-+ char *data;
-+};
-+
-+struct squashfs_sb_info {
-+ struct squashfs_super_block sblk;
-+ int devblksize;
-+ int devblksize_log2;
-+ int swap;
-+ struct squashfs_cache *block_cache;
-+ struct squashfs_fragment_cache *fragment;
-+ int next_cache;
-+ int next_fragment;
-+ int next_meta_index;
-+ unsigned int *uid;
-+ unsigned int *guid;
-+ long long *fragment_index;
-+ unsigned int *fragment_index_2;
-+ char *read_page;
-+ struct mutex read_data_mutex;
-+ struct mutex read_page_mutex;
-+ struct mutex block_cache_mutex;
-+ struct mutex fragment_mutex;
-+ struct mutex meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ z_stream stream;
-+ long long *inode_lookup_table;
-+ int (*read_inode)(struct inode *i, squashfs_inode_t \
-+ inode);
-+ long long (*read_blocklist)(struct inode *inode, int \
-+ index, int readahead_blks, char *block_list, \
-+ unsigned short **block_p, unsigned int *bsize);
-+ int (*read_fragment_index_table)(struct super_block *s);
-+};
-+#endif
-Index: linux-2.6.22/init/do_mounts_rd.c
-===================================================================
---- linux-2.6.22.orig/init/do_mounts_rd.c
-+++ linux-2.6.22/init/do_mounts_rd.c
-@@ -5,6 +5,7 @@
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
- #include <linux/cramfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/initrd.h>
- #include <linux/string.h>
-
-@@ -39,6 +40,7 @@
- * numbers could not be found.
- *
- * We currently check for the following magic numbers:
-+ * squashfs
- * minix
- * ext2
- * romfs
-@@ -53,6 +55,7 @@
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
- struct cramfs_super *cramfsb;
-+ struct squashfs_super_block *squashfsb;
- int nblocks = -1;
- unsigned char *buf;
-
-@@ -64,6 +67,7 @@
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- memset(buf, 0xe5, size);
-
- /*
-@@ -101,6 +105,18 @@
- goto done;
- }
-
-+ /* squashfs is at block zero too */
-+ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
-+ printk(KERN_NOTICE
-+ "RAMDISK: squashfs filesystem found at block %d\n",
-+ start_block);
-+ if (squashfsb->s_major < 3)
-+ nblocks = (squashfsb->bytes_used_2+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ else
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
diff --git a/packages/linux/linux-openmoko-devel/squashfs.patch b/packages/linux/linux-openmoko-devel/squashfs.patch
deleted file mode 100644
index 51efd6b3c9..0000000000
--- a/packages/linux/linux-openmoko-devel/squashfs.patch
+++ /dev/null
@@ -1,4386 +0,0 @@
-diff -x .gitignore -Nurp linux-2.6.20/fs/Kconfig linux-2.6.20-squashfs3.2-r2/fs/Kconfig
---- linux-2.6.20/fs/Kconfig 2006-12-25 01:13:12.000000000 +0000
-+++ linux-2.6.20-squashfs3.2-r2/fs/Kconfig 2007-01-16 02:06:03.000000000 +0000
-@@ -1404,6 +1404,71 @@ config CRAMFS
-
- If unsure, say N.
-
-+config SQUASHFS
-+ tristate "SquashFS 3.2 - Squashed file system support"
-+ select ZLIB_INFLATE
-+ help
-+ Saying Y here includes support for SquashFS 3.2 (a Compressed Read-Only File
-+ System). Squashfs is a highly compressed read-only filesystem for Linux.
-+ It uses zlib compression to compress both files, inodes and directories.
-+ Inodes in the system are very small and all blocks are packed to minimise
-+ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
-+ SquashFS 3.1 supports 64 bit filesystems and files (larger than 4GB), full
-+ uid/gid information, hard links and timestamps.
-+
-+ Squashfs is intended for general read-only filesystem use, for archival
-+ use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+ systems where low overhead is needed. Further information and filesystem tools
-+ are available from http://squashfs.sourceforge.net.
-+
-+ If you want to compile this as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want),
-+ say M here and read <file:Documentation/modules.txt>. The module
-+ will be called squashfs. Note that the root file system (the one
-+ containing the directory /) cannot be compiled as a module.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_EMBEDDED
-+
-+ bool "Additional options for memory-constrained systems"
-+ depends on SQUASHFS
-+ default n
-+ help
-+ Saying Y here allows you to specify cache sizes and how Squashfs
-+ allocates memory. This is only intended for memory constrained
-+ systems.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_FRAGMENT_CACHE_SIZE
-+ int "Number of fragments cached" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default "3"
-+ help
-+ By default SquashFS caches the last 3 fragments read from
-+ the filesystem. Increasing this amount may mean SquashFS
-+ has to re-read fragments less often from disk, at the expense
-+ of extra system memory. Decreasing this amount will mean
-+ SquashFS uses less memory at the expense of extra reads from disk.
-+
-+ Note there must be at least one cached fragment. Anything
-+ much more than three will probably not make much difference.
-+
-+config SQUASHFS_VMALLOC
-+ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default n
-+ help
-+ By default SquashFS uses kmalloc to obtain fragment cache memory.
-+ Kmalloc memory is the standard kernel allocator, but it can fail
-+ on memory constrained systems. Because of the way Vmalloc works,
-+ Vmalloc can succeed when kmalloc fails. Specifying this option
-+ will make SquashFS always use Vmalloc to allocate the
-+ fragment cache memory.
-+
-+ If unsure, say N.
-+
- config VXFS_FS
- tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
- depends on BLOCK
-diff -x .gitignore -Nurp linux-2.6.20/fs/Makefile linux-2.6.20-squashfs3.2-r2/fs/Makefile
---- linux-2.6.20/fs/Makefile 2006-12-25 01:13:12.000000000 +0000
-+++ linux-2.6.20-squashfs3.2-r2/fs/Makefile 2007-01-16 02:06:03.000000000 +0000
-@@ -68,6 +68,7 @@ obj-$(CONFIG_JBD) += jbd/
- obj-$(CONFIG_JBD2) += jbd2/
- obj-$(CONFIG_EXT2_FS) += ext2/
- obj-$(CONFIG_CRAMFS) += cramfs/
-+obj-$(CONFIG_SQUASHFS) += squashfs/
- obj-$(CONFIG_RAMFS) += ramfs/
- obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
- obj-$(CONFIG_CODA_FS) += coda/
-diff -x .gitignore -Nurp linux-2.6.20/fs/squashfs/inode.c linux-2.6.20-squashfs3.2-r2/fs/squashfs/inode.c
---- linux-2.6.20/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/fs/squashfs/inode.c 2007-01-16 02:28:36.000000000 +0000
-@@ -0,0 +1,2329 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * inode.c
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/zlib.h>
-+#include <linux/fs.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/vmalloc.h>
-+#include <linux/smp_lock.h>
-+
-+#include "squashfs.h"
-+
-+static void vfs_read_inode(struct inode *i);
-+static struct dentry *squashfs_get_parent(struct dentry *child);
-+static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode);
-+static int squashfs_statfs(struct dentry *, struct kstatfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
-+static int squashfs_readdir(struct file *, void *, filldir_t);
-+static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
-+ struct nameidata *);
-+static int squashfs_remount(struct super_block *s, int *flags, char *data);
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_get_sb(struct file_system_type *,int, const char *, void *,
-+ struct vfsmount *);
-+static struct inode *squashfs_alloc_inode(struct super_block *sb);
-+static void squashfs_destroy_inode(struct inode *inode);
-+static int init_inodecache(void);
-+static void destroy_inodecache(void);
-+
-+static struct file_system_type squashfs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "squashfs",
-+ .get_sb = squashfs_get_sb,
-+ .kill_sb = kill_block_super,
-+ .fs_flags = FS_REQUIRES_DEV
-+};
-+
-+static const unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static struct super_operations squashfs_super_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+ .remount_fs = squashfs_remount
-+};
-+
-+static struct super_operations squashfs_export_super_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+ .read_inode = vfs_read_inode
-+};
-+
-+static struct export_operations squashfs_export_ops = {
-+ .get_parent = squashfs_get_parent
-+};
-+
-+SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN const struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN const struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static const struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
-+ .lookup = squashfs_lookup
-+};
-+
-+
-+static struct buffer_head *get_block_length(struct super_block *s,
-+ int *cur_index, int *offset, int *c_byte)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned short temp;
-+ struct buffer_head *bh;
-+
-+ if (!(bh = sb_bread(s, *cur_index)))
-+ goto out;
-+
-+ if (msblk->devblksize - *offset == 1) {
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ else
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ bh->b_data);
-+ else
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ bh->b_data);
-+ *c_byte = temp;
-+ *offset = 1;
-+ } else {
-+ if (msblk->swap) {
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ } else {
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ }
-+ *c_byte = temp;
-+ *offset += 2;
-+ }
-+
-+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
-+ if (*offset == msblk->devblksize) {
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ *offset = 0;
-+ }
-+ if (*((unsigned char *) (bh->b_data + *offset)) !=
-+ SQUASHFS_MARKER_BYTE) {
-+ ERROR("Metadata block marker corrupt @ %x\n",
-+ *cur_index);
-+ brelse(bh);
-+ goto out;
-+ }
-+ (*offset)++;
-+ }
-+ return bh;
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index, int srclength)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+ msblk->devblksize_log2) + 2];
-+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
-+ unsigned int cur_index = index >> msblk->devblksize_log2;
-+ int bytes, avail_bytes, b = 0, k = 0;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte, srclength);
-+
-+ if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used)
-+ goto read_failure;
-+
-+ if (!(bh[0] = sb_getblk(s, cur_index)))
-+ goto block_release;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b, bh);
-+ } else {
-+ if (index < 0 || (index + 2) > sblk->bytes_used)
-+ goto read_failure;
-+
-+ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ if (c_byte > srclength || (index + c_byte) > sblk->bytes_used)
-+ goto read_failure;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b - 1, bh + 1);
-+ }
-+
-+ if (compressed) {
-+ int zlib_err = 0;
-+
-+ /*
-+ * uncompress block
-+ */
-+
-+ mutex_lock(&msblk->read_data_mutex);
-+
-+ msblk->stream.next_out = buffer;
-+ msblk->stream.avail_out = srclength;
-+
-+ for (bytes = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ wait_on_buffer(bh[k]);
-+ if (!buffer_uptodate(bh[k]))
-+ goto release_mutex;
-+
-+ msblk->stream.next_in = bh[k]->b_data + offset;
-+ msblk->stream.avail_in = avail_bytes;
-+
-+ if (k == 0) {
-+ zlib_err = zlib_inflateInit(&msblk->stream);
-+ if (zlib_err != Z_OK) {
-+ ERROR("zlib_inflateInit returned unexpected result 0x%x, srclength %d\n",
-+ zlib_err, srclength);
-+ goto release_mutex;
-+ }
-+
-+ if (avail_bytes == 0) {
-+ offset = 0;
-+ brelse(bh[k]);
-+ continue;
-+ }
-+ }
-+
-+ zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH);
-+ if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) {
-+ ERROR("zlib_inflate returned unexpected result 0x%x, srclength %d, avail_in %d, avail_out %d\n",
-+ zlib_err, srclength, msblk->stream.avail_in, msblk->stream.avail_out);
-+ goto release_mutex;
-+ }
-+
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ if (zlib_err != Z_STREAM_END)
-+ goto release_mutex;
-+
-+ zlib_err = zlib_inflateEnd(&msblk->stream);
-+ if (zlib_err != Z_OK) {
-+ ERROR("zlib_inflateEnd returned unexpected result 0x%x, srclength %d\n",
-+ zlib_err, srclength);
-+ goto release_mutex;
-+ }
-+ bytes = msblk->stream.total_out;
-+ mutex_unlock(&msblk->read_data_mutex);
-+ } else {
-+ int i;
-+
-+ for(i = 0; i < b; i++) {
-+ wait_on_buffer(bh[i]);
-+ if(!buffer_uptodate(bh[i]))
-+ goto block_release;
-+ }
-+
-+ for (bytes = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+release_mutex:
-+ mutex_unlock(&msblk->read_data_mutex);
-+
-+block_release:
-+ for (; k < b; k++)
-+ brelse(bh[k]);
-+
-+read_failure:
-+ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ int n, i, bytes, return_length = length;
-+ long long next_index;
-+
-+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
-+
-+ while ( 1 ) {
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (msblk->block_cache[i].block == block)
-+ break;
-+
-+ mutex_lock(&msblk->block_cache_mutex);
-+
-+ if (i == SQUASHFS_CACHED_BLKS) {
-+ /* read inode header block */
-+ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
-+ n ; n --, i = (i + 1) %
-+ SQUASHFS_CACHED_BLKS)
-+ if (msblk->block_cache[i].block !=
-+ SQUASHFS_USED_BLK)
-+ break;
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->waitq, &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->waitq, &wait);
-+ continue;
-+ }
-+ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
-+
-+ if (msblk->block_cache[i].block ==
-+ SQUASHFS_INVALID_BLK) {
-+ if (!(msblk->block_cache[i].data =
-+ kmalloc(SQUASHFS_METADATA_SIZE,
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate cache"
-+ "block\n");
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ mutex_unlock(&msblk->block_cache_mutex);
-+
-+ msblk->block_cache[i].length = squashfs_read_data(s,
-+ msblk->block_cache[i].data, block, 0, &next_index, SQUASHFS_METADATA_SIZE);
-+ if (msblk->block_cache[i].length == 0) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ mutex_lock(&msblk->block_cache_mutex);
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+ kfree(msblk->block_cache[i].data);
-+ wake_up(&msblk->waitq);
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+
-+ mutex_lock(&msblk->block_cache_mutex);
-+ wake_up(&msblk->waitq);
-+ msblk->block_cache[i].block = block;
-+ msblk->block_cache[i].next_index = next_index;
-+ TRACE("Read cache block [%llx:%x]\n", block, offset);
-+ }
-+
-+ if (msblk->block_cache[i].block != block) {
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ bytes = msblk->block_cache[i].length - offset;
-+
-+ if (bytes < 1) {
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto out;
-+ } else if (bytes >= length) {
-+ if (buffer)
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, length);
-+ if (msblk->block_cache[i].length - offset == length) {
-+ *next_block = msblk->block_cache[i].next_index;
-+ *next_offset = 0;
-+ } else {
-+ *next_block = block;
-+ *next_offset = offset + length;
-+ }
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ goto finish;
-+ } else {
-+ if (buffer) {
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, bytes);
-+ buffer += bytes;
-+ }
-+ block = msblk->block_cache[i].next_index;
-+ mutex_unlock(&msblk->block_cache_mutex);
-+ length -= bytes;
-+ offset = 0;
-+ }
-+ }
-+
-+finish:
-+ return return_length;
-+out:
-+ return 0;
-+}
-+
-+
-+static int get_fragment_location(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
-+ struct squashfs_fragment_entry fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment)
-+{
-+ mutex_lock(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ mutex_unlock(&msblk->fragment_mutex);
-+}
-+
-+
-+SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length)
-+{
-+ int i, n;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ while ( 1 ) {
-+ mutex_lock(&msblk->fragment_mutex);
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
-+ msblk->fragment[i].block != start_block; i++);
-+
-+ if (i == SQUASHFS_CACHED_FRAGMENTS) {
-+ for (i = msblk->next_fragment, n =
-+ SQUASHFS_CACHED_FRAGMENTS; n &&
-+ msblk->fragment[i].locked; n--, i = (i + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS);
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ mutex_unlock(&msblk->fragment_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ continue;
-+ }
-+ msblk->next_fragment = (msblk->next_fragment + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS;
-+
-+ if (msblk->fragment[i].data == NULL)
-+ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
-+ (SQUASHFS_FILE_MAX_SIZE))) {
-+ ERROR("Failed to allocate fragment "
-+ "cache block\n");
-+ mutex_unlock(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ mutex_unlock(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL, sblk->block_size))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ smp_mb();
-+ goto out;
-+ }
-+
-+ mutex_lock(&msblk->fragment_mutex);
-+ msblk->fragment[i].block = start_block;
-+ TRACE("New fragment %d, start block %lld, locked %d\n",
-+ i, msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ mutex_unlock(&msblk->fragment_mutex);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ mutex_unlock(&msblk->fragment_mutex);
-+ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
-+ msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ return &msblk->fragment[i];
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime.tv_sec = inodeb->mtime;
-+ i->i_atime.tv_sec = inodeb->mtime;
-+ i->i_ctime.tv_sec = inodeb->mtime;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+}
-+
-+
-+static squashfs_inode_t squashfs_inode_lookup(struct super_block *s, int ino)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start = msblk->inode_lookup_table[SQUASHFS_LOOKUP_BLOCK(ino - 1)];
-+ int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino - 1);
-+ squashfs_inode_t inode;
-+
-+ TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino);
-+
-+ if (msblk->swap) {
-+ squashfs_inode_t sinode;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sinode, start, offset,
-+ sizeof(sinode), &start, &offset))
-+ goto out;
-+ SQUASHFS_SWAP_INODE_T((&inode), &sinode);
-+ } else if (!squashfs_get_cached_block(s, (char *) &inode, start, offset,
-+ sizeof(inode), &start, &offset))
-+ goto out;
-+
-+ TRACE("squashfs_inode_lookup, inode = 0x%llx\n", inode);
-+
-+ return inode;
-+
-+out:
-+ return SQUASHFS_INVALID_BLK;
-+}
-+
-+
-+static void vfs_read_inode(struct inode *i)
-+{
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ squashfs_inode_t inode = squashfs_inode_lookup(i->i_sb, i->i_ino);
-+
-+ TRACE("Entered vfs_read_inode\n");
-+
-+ if(inode != SQUASHFS_INVALID_BLK)
-+ (msblk->read_inode)(i, inode);
-+}
-+
-+
-+static struct dentry *squashfs_get_parent(struct dentry *child)
-+{
-+ struct inode *i = child->d_inode;
-+ struct inode *parent = iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode);
-+ struct dentry *rv;
-+
-+ TRACE("Entered squashfs_get_parent\n");
-+
-+ if(parent == NULL) {
-+ rv = ERR_PTR(-EACCES);
-+ goto out;
-+ }
-+
-+ rv = d_alloc_anon(parent);
-+ if(rv == NULL)
-+ rv = ERR_PTR(-ENOMEM);
-+
-+out:
-+ return rv;
-+}
-+
-+
-+SQSH_EXTERN struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct inode *i = iget_locked(s, inode_number);
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if(i && (i->i_state & I_NEW)) {
-+ (msblk->read_inode)(i, inode);
-+ unlock_new_inode(i);
-+ }
-+
-+ return i;
-+}
-+
-+
-+static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode)
-+{
-+ struct super_block *s = i->i_sb;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header id, sid;
-+ struct squashfs_base_inode_header *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_read_inode\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ squashfs_new_inode(msblk, i, inodeb);
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_reg_inode_header *inodep = &id.reg;
-+ struct squashfs_reg_inode_header *sinodep = &sid.reg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ i->i_nlink = 1;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_LREG_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_lreg_inode_header *inodep = &id.lreg;
-+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header *inodep = &id.dir;
-+ struct squashfs_dir_inode_header *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header *inodep = &id.dev;
-+ struct squashfs_dev_inode_header *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ struct squashfs_ipc_inode_header *inodep = &id.ipc;
-+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ return 1;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ make_bad_inode(i);
-+ return 0;
-+}
-+
-+
-+static int read_inode_lookup_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int length = SQUASHFS_LOOKUP_BLOCK_BYTES(sblk->inodes);
-+
-+ TRACE("In read_inode_lookup_table, length %d\n", length);
-+
-+ /* Allocate inode lookup table */
-+ if (!(msblk->inode_lookup_table = kmalloc(length, GFP_KERNEL))) {
-+ ERROR("Failed to allocate inode lookup table\n");
-+ return 0;
-+ }
-+
-+ if (!squashfs_read_data(s, (char *) msblk->inode_lookup_table,
-+ sblk->lookup_table_start, length |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
-+ ERROR("unable to read inode lookup table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long block;
-+
-+ for (i = 0; i < SQUASHFS_LOOKUP_BLOCKS(sblk->inodes); i++) {
-+ SQUASHFS_SWAP_LOOKUP_BLOCKS((&block),
-+ &msblk->inode_lookup_table[i], 1);
-+ msblk->inode_lookup_table[i] = block;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int length = SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments);
-+
-+ if(length == 0)
-+ return 1;
-+
-+ /* Allocate fragment index table */
-+ if (!(msblk->fragment_index = kmalloc(length, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (!squashfs_read_data(s, (char *) msblk->fragment_index,
-+ sblk->fragment_table_start, length |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments); i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
-+ &msblk->fragment_index[i], 1);
-+ msblk->fragment_index[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->read_inode = squashfs_read_inode;
-+ msblk->read_blocklist = read_blocklist;
-+ msblk->read_fragment_index_table = read_fragment_index_table;
-+
-+ if (sblk->s_major == 1) {
-+ if (!squashfs_1_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 1.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if (sblk->s_major == 2) {
-+ if (!squashfs_2_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 2.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
-+ SQUASHFS_MINOR) {
-+ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
-+ "filesystem\n", sblk->s_major, sblk->s_minor);
-+ SERROR("Please update your kernel\n");
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int squashfs_fill_super(struct super_block *s, void *data, int silent)
-+{
-+ struct squashfs_sb_info *msblk;
-+ struct squashfs_super_block *sblk;
-+ int i;
-+ char b[BDEVNAME_SIZE];
-+ struct inode *root;
-+
-+ TRACE("Entered squashfs_read_superblock\n");
-+
-+ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate superblock\n");
-+ goto failure;
-+ }
-+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
-+ msblk = s->s_fs_info;
-+ if (!(msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ goto failure;
-+ }
-+ sblk = &msblk->sblk;
-+
-+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+
-+ mutex_init(&msblk->read_data_mutex);
-+ mutex_init(&msblk->read_page_mutex);
-+ mutex_init(&msblk->block_cache_mutex);
-+ mutex_init(&msblk->fragment_mutex);
-+ mutex_init(&msblk->meta_index_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ sblk->bytes_used = sizeof(struct squashfs_super_block);
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, sizeof(struct squashfs_super_block))) {
-+ SERROR("unable to read superblock\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Check it is a SQUASHFS superblock */
-+ msblk->swap = 0;
-+ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
-+ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
-+ struct squashfs_super_block ssblk;
-+
-+ WARNING("Mounting a different endian SQUASHFS "
-+ "filesystem on %s\n", bdevname(s->s_bdev, b));
-+
-+ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
-+ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
-+ msblk->swap = 1;
-+ } else {
-+ SERROR("Can't find a SQUASHFS superblock on %s\n",
-+ bdevname(s->s_bdev, b));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ /* Check the filesystem does not extend beyond the end of the
-+ block device */
-+ if(sblk->bytes_used < 0 || sblk->bytes_used > i_size_read(s->s_bdev->bd_inode))
-+ goto failed_mount;
-+
-+ /* Check the root inode for sanity */
-+ if (SQUASHFS_INODE_OFFSET(sblk->root_inode) > SQUASHFS_METADATA_SIZE)
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
-+ TRACE("Inodes are %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_INODES
-+ (sblk->flags) ? "un" : "");
-+ TRACE("Data is %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
-+ ? "un" : "");
-+ TRACE("Check data is %s present in the filesystem\n",
-+ SQUASHFS_CHECK_DATA(sblk->flags) ?
-+ "" : "not");
-+ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
-+ TRACE("Block size %d\n", sblk->block_size);
-+ TRACE("Number of inodes %d\n", sblk->inodes);
-+ if (sblk->s_major > 1)
-+ TRACE("Number of fragments %d\n", sblk->fragments);
-+ TRACE("Number of uids %d\n", sblk->no_uids);
-+ TRACE("Number of gids %d\n", sblk->no_guids);
-+ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
-+ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
-+ if (sblk->s_major > 1)
-+ TRACE("sblk->fragment_table_start %llx\n",
-+ sblk->fragment_table_start);
-+ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
-+
-+ s->s_flags |= MS_RDONLY;
-+ s->s_op = &squashfs_super_ops;
-+
-+ /* Init inode_table block pointer array */
-+ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
-+ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+
-+ msblk->next_cache = 0;
-+
-+ /* Allocate read_page block */
-+ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_page block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate uid and gid tables */
-+ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ goto failed_mount;
-+ }
-+ msblk->guid = msblk->uid + sblk->no_uids;
-+
-+ if (msblk->swap) {
-+ unsigned int suid[sblk->no_uids + sblk->no_guids];
-+
-+ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
-+ sblk->no_guids), (sizeof(unsigned int) * 8));
-+ } else
-+ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+
-+ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
-+ goto allocate_root;
-+
-+ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
-+ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
-+ msblk->fragment[i].locked = 0;
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].data = NULL;
-+ }
-+
-+ msblk->next_fragment = 0;
-+
-+ /* Allocate and read fragment index table */
-+ if (msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+ if(sblk->s_major < 3 || sblk->lookup_table_start == SQUASHFS_INVALID_BLK)
-+ goto allocate_root;
-+
-+ /* Allocate and read inode lookup table */
-+ if (read_inode_lookup_table(s) == 0)
-+ goto failed_mount;
-+
-+ s->s_op = &squashfs_export_super_ops;
-+ s->s_export_op = &squashfs_export_ops;
-+
-+allocate_root:
-+ root = new_inode(s);
-+ if ((msblk->read_inode)(root, sblk->root_inode) == 0)
-+ goto failed_mount;
-+ insert_inode_hash(root);
-+
-+ if ((s->s_root = d_alloc_root(root)) == NULL) {
-+ ERROR("Root inode create failed\n");
-+ iput(root);
-+ goto failed_mount;
-+ }
-+
-+ TRACE("Leaving squashfs_read_super\n");
-+ return 0;
-+
-+failed_mount:
-+ kfree(msblk->inode_lookup_table);
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ vfree(msblk->stream.workspace);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ return -EINVAL;
-+
-+failure:
-+ return -ENOMEM;
-+}
-+
-+
-+static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
-+{
-+ struct squashfs_sb_info *msblk = dentry->d_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ TRACE("Entered squashfs_statfs\n");
-+
-+ buf->f_type = SQUASHFS_MAGIC;
-+ buf->f_bsize = sblk->block_size;
-+ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
-+ buf->f_bfree = buf->f_bavail = 0;
-+ buf->f_files = sblk->inodes;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = SQUASHFS_NAME_LEN;
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_symlink_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
-+ long long block = SQUASHFS_I(inode)->start_block;
-+ int offset = SQUASHFS_I(inode)->offset;
-+ void *pageaddr = kmap(page);
-+
-+ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
-+ "%llx, offset %x\n", page->index,
-+ SQUASHFS_I(inode)->start_block,
-+ SQUASHFS_I(inode)->offset);
-+
-+ for (length = 0; length < index; length += bytes) {
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
-+ block, offset, PAGE_CACHE_SIZE, &block,
-+ &offset))) {
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
-+ offset);
-+ goto skip_read;
-+ }
-+ }
-+
-+ if (length != index) {
-+ ERROR("(squashfs_symlink_readpage) length != index\n");
-+ bytes = 0;
-+ goto skip_read;
-+ }
-+
-+ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
-+ i_size_read(inode) - length;
-+
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
-+ offset, bytes, &block, &offset)))
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap(page);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
-+{
-+ struct meta_index *meta = NULL;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ int i;
-+
-+ mutex_lock(&msblk->meta_index_mutex);
-+
-+ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
-+
-+ if(msblk->meta_index == NULL)
-+ goto not_allocated;
-+
-+ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
-+ if (msblk->meta_index[i].inode_number == inode->i_ino &&
-+ msblk->meta_index[i].offset >= offset &&
-+ msblk->meta_index[i].offset <= index &&
-+ msblk->meta_index[i].locked == 0) {
-+ TRACE("locate_meta_index: entry %d, offset %d\n", i,
-+ msblk->meta_index[i].offset);
-+ meta = &msblk->meta_index[i];
-+ offset = meta->offset;
-+ }
-+
-+ if (meta)
-+ meta->locked = 1;
-+
-+not_allocated:
-+ mutex_unlock(&msblk->meta_index_mutex);
-+
-+ return meta;
-+}
-+
-+
-+struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ mutex_lock(&msblk->meta_index_mutex);
-+
-+ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
-+
-+ if(msblk->meta_index == NULL) {
-+ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
-+ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
-+ ERROR("Failed to allocate meta_index\n");
-+ goto failed;
-+ }
-+ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
-+ msblk->meta_index[i].inode_number = 0;
-+ msblk->meta_index[i].locked = 0;
-+ }
-+ msblk->next_meta_index = 0;
-+ }
-+
-+ for(i = SQUASHFS_META_NUMBER; i &&
-+ msblk->meta_index[msblk->next_meta_index].locked; i --)
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ if(i == 0) {
-+ TRACE("empty_meta_index: failed!\n");
-+ goto failed;
-+ }
-+
-+ TRACE("empty_meta_index: returned meta entry %d, %p\n",
-+ msblk->next_meta_index,
-+ &msblk->meta_index[msblk->next_meta_index]);
-+
-+ meta = &msblk->meta_index[msblk->next_meta_index];
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ meta->inode_number = inode->i_ino;
-+ meta->offset = offset;
-+ meta->skip = skip;
-+ meta->entries = 0;
-+ meta->locked = 1;
-+
-+failed:
-+ mutex_unlock(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+ smp_mb();
-+}
-+
-+
-+static int read_block_index(struct super_block *s, int blocks, char *block_list,
-+ long long *start_block, int *offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned int *block_listp;
-+ int block = 0;
-+
-+ if (msblk->swap) {
-+ char sblock_list[blocks << 2];
-+
-+ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
-+ ((unsigned int *)sblock_list), blocks);
-+ } else
-+ if (!squashfs_get_cached_block(s, block_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+
-+ for (block_listp = (unsigned int *) block_list; blocks;
-+ block_listp++, blocks --)
-+ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
-+
-+ return block;
-+
-+failure:
-+ return -1;
-+}
-+
-+
-+#define SIZE 256
-+
-+static inline int calculate_skip(int blocks) {
-+ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
-+ return skip >= 7 ? 7 : skip + 1;
-+}
-+
-+
-+static int get_meta_index(struct inode *inode, int index,
-+ long long *index_block, int *index_offset,
-+ long long *data_block, char *block_list)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
-+ int offset = 0;
-+ struct meta_index *meta;
-+ struct meta_entry *meta_entry;
-+ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
-+ int cur_offset = SQUASHFS_I(inode)->offset;
-+ long long cur_data_block = SQUASHFS_I(inode)->start_block;
-+ int i;
-+
-+ index /= SQUASHFS_META_INDEXES * skip;
-+
-+ while ( offset < index ) {
-+ meta = locate_meta_index(inode, index, offset + 1);
-+
-+ if (meta == NULL) {
-+ if ((meta = empty_meta_index(inode, offset + 1,
-+ skip)) == NULL)
-+ goto all_done;
-+ } else {
-+ if(meta->entries == 0)
-+ goto failed;
-+ offset = index < meta->offset + meta->entries ? index :
-+ meta->offset + meta->entries - 1;
-+ meta_entry = &meta->meta_entry[offset - meta->offset];
-+ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
-+ cur_offset = meta_entry->offset;
-+ cur_data_block = meta_entry->data_block;
-+ TRACE("get_meta_index: offset %d, meta->offset %d, "
-+ "meta->entries %d\n", offset, meta->offset,
-+ meta->entries);
-+ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
-+ " data_block 0x%llx\n", cur_index_block,
-+ cur_offset, cur_data_block);
-+ }
-+
-+ for (i = meta->offset + meta->entries; i <= index &&
-+ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
-+ int blocks = skip * SQUASHFS_META_INDEXES;
-+
-+ while (blocks) {
-+ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
-+ blocks;
-+ int res = read_block_index(inode->i_sb, block,
-+ block_list, &cur_index_block,
-+ &cur_offset);
-+
-+ if (res == -1)
-+ goto failed;
-+
-+ cur_data_block += res;
-+ blocks -= block;
-+ }
-+
-+ meta_entry = &meta->meta_entry[i - meta->offset];
-+ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
-+ meta_entry->offset = cur_offset;
-+ meta_entry->data_block = cur_data_block;
-+ meta->entries ++;
-+ offset ++;
-+ }
-+
-+ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
-+ meta->offset, meta->entries);
-+
-+ release_meta_index(inode, meta);
-+ }
-+
-+all_done:
-+ *index_block = cur_index_block;
-+ *index_offset = cur_offset;
-+ *data_block = cur_data_block;
-+
-+ return offset * SQUASHFS_META_INDEXES * skip;
-+
-+failed:
-+ release_meta_index(inode, meta);
-+ return -1;
-+}
-+
-+
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize)
-+{
-+ long long block_ptr;
-+ int offset;
-+ long long block;
-+ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
-+ block_list);
-+
-+ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
-+ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
-+ block);
-+
-+ if(res == -1)
-+ goto failure;
-+
-+ index -= res;
-+
-+ while ( index ) {
-+ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
-+ int res = read_block_index(inode->i_sb, blocks, block_list,
-+ &block_ptr, &offset);
-+ if (res == -1)
-+ goto failure;
-+ block += res;
-+ index -= blocks;
-+ }
-+
-+ if (read_block_index(inode->i_sb, 1, block_list,
-+ &block_ptr, &offset) == -1)
-+ goto failure;
-+ *bsize = *((unsigned int *) block_list);
-+
-+ return block;
-+
-+failure:
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char *block_list;
-+ long long block;
-+ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
-+ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
-+ void *pageaddr;
-+ struct squashfs_fragment_cache *fragment = NULL;
-+ char *data_ptr = msblk->read_page;
-+
-+ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
-+ int start_index = page->index & ~mask;
-+ int end_index = start_index | mask;
-+
-+ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block_list\n");
-+ goto skip_read;
-+ }
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT))
-+ goto skip_read;
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ if ((block = (msblk->read_blocklist)(inode, index, 1,
-+ block_list, NULL, &bsize)) == 0)
-+ goto skip_read;
-+
-+ mutex_lock(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL, sblk->block_size))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ mutex_unlock(&msblk->read_page_mutex);
-+ goto skip_read;
-+ }
-+ } else {
-+ if ((fragment = get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)->u.s1.fragment_size))
-+ == NULL) {
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ (int) SQUASHFS_I(inode)->
-+ u.s1.fragment_size);
-+ goto skip_read;
-+ }
-+ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
-+ (i_size_read(inode) & (sblk->block_size
-+ - 1));
-+ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
-+ data_ptr = fragment->data;
-+ }
-+
-+ for (i = start_index; i <= end_index && byte_offset < bytes;
-+ i++, byte_offset += PAGE_CACHE_SIZE) {
-+ struct page *push_page;
-+ int avail = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
-+ PAGE_CACHE_SIZE : bytes - byte_offset;
-+
-+ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
-+ bytes, i, byte_offset, avail);
-+
-+ push_page = (i == page->index) ? page :
-+ grab_cache_page_nowait(page->mapping, i);
-+
-+ if (!push_page)
-+ continue;
-+
-+ if (PageUptodate(push_page))
-+ goto skip_page;
-+
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset, avail);
-+ memset(pageaddr + avail, 0, PAGE_CACHE_SIZE - avail);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+skip_page:
-+ unlock_page(push_page);
-+ if(i != page->index)
-+ page_cache_release(push_page);
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log))
-+ mutex_unlock(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ kfree(block_list);
-+ return 0;
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ kfree(block_list);
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage4K(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char *block_list;
-+ long long block;
-+ unsigned int bsize, bytes = 0;
-+ void *pageaddr;
-+
-+ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT)) {
-+ block_list = NULL;
-+ goto skip_read;
-+ }
-+
-+ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block_list\n");
-+ goto skip_read;
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || page->index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ block = (msblk->read_blocklist)(inode, page->index, 1,
-+ block_list, NULL, &bsize);
-+ if(block == 0)
-+ goto skip_read;
-+
-+ mutex_lock(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL, sblk->block_size);
-+ if (bytes) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ mutex_unlock(&msblk->read_page_mutex);
-+ } else {
-+ struct squashfs_fragment_cache *fragment =
-+ get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ release_cached_fragment(msblk, fragment);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block, (int)
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ }
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ kfree(block_list);
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ f_pos =- 3;
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length + 3;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index *index;
-+ char *str;
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) +
-+ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_index\n");
-+ goto failure;
-+ }
-+
-+ index = (struct squashfs_dir_index *) (str + SQUASHFS_NAME_LEN + 1);
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ kfree(str);
-+failure:
-+ return length + 3;
-+}
-+
-+
-+static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ struct squashfs_dir_entry *dire;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto finish;
-+ }
-+
-+ while(file->f_pos < 3) {
-+ char *name;
-+ int size, i_ino;
-+
-+ if(file->f_pos == 0) {
-+ name = ".";
-+ size = 1;
-+ i_ino = i->i_ino;
-+ } else {
-+ name = "..";
-+ size = 2;
-+ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
-+ }
-+ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
-+ (unsigned int) dirent, name, size, (int)
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]);
-+
-+ if (filldir(dirent, name, size,
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]) < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos += size;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ }
-+ }
-+
-+finish:
-+ kfree(dire);
-+ return 0;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ kfree(dire);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ struct squashfs_dir_entry *dire;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto exit_lookup;
-+ }
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_lookup;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (name[0] < dire->name[0])
-+ goto exit_lookup;
-+
-+ if ((len == dire->size + 1) && !strncmp(name, dire->name, len)) {
-+ squashfs_inode_t ino = SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number);
-+
-+ inode = squashfs_iget(i->i_sb, ino, dirh.inode_number + dire->inode_number);
-+
-+ goto exit_lookup;
-+ }
-+ }
-+ }
-+
-+exit_lookup:
-+ kfree(dire);
-+ if (inode)
-+ return d_splice_alias(inode, dentry);
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_lookup;
-+}
-+
-+
-+static int squashfs_remount(struct super_block *s, int *flags, char *data)
-+{
-+ *flags |= MS_RDONLY;
-+ return 0;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ if (s->s_fs_info) {
-+ struct squashfs_sb_info *sbi = s->s_fs_info;
-+ if (sbi->block_cache)
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (sbi->block_cache[i].block !=
-+ SQUASHFS_INVALID_BLK)
-+ kfree(sbi->block_cache[i].data);
-+ if (sbi->fragment)
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
-+ SQUASHFS_FREE(sbi->fragment[i].data);
-+ kfree(sbi->fragment);
-+ kfree(sbi->block_cache);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ kfree(sbi->meta_index);
-+ vfree(sbi->stream.workspace);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ }
-+}
-+
-+
-+static int squashfs_get_sb(struct file_system_type *fs_type, int flags,
-+ const char *dev_name, void *data,
-+ struct vfsmount *mnt)
-+{
-+ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super,
-+ mnt);
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+ int err = init_inodecache();
-+ if (err)
-+ goto out;
-+
-+ printk(KERN_INFO "squashfs: version 3.2-r2 (2007/01/15) "
-+ "Phillip Lougher\n");
-+
-+ if ((err = register_filesystem(&squashfs_fs_type)))
-+ destroy_inodecache();
-+
-+out:
-+ return err;
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ unregister_filesystem(&squashfs_fs_type);
-+ destroy_inodecache();
-+}
-+
-+
-+static struct kmem_cache * squashfs_inode_cachep;
-+
-+
-+static struct inode *squashfs_alloc_inode(struct super_block *sb)
-+{
-+ struct squashfs_inode_info *ei;
-+ ei = kmem_cache_alloc(squashfs_inode_cachep, GFP_KERNEL);
-+ if (!ei)
-+ return NULL;
-+ return &ei->vfs_inode;
-+}
-+
-+
-+static void squashfs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
-+}
-+
-+
-+static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flags)
-+{
-+ struct squashfs_inode_info *ei = foo;
-+
-+
-+
-+ inode_init_once(&ei->vfs_inode);
-+}
-+
-+
-+static int __init init_inodecache(void)
-+{
-+ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
-+ sizeof(struct squashfs_inode_info),
-+ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-+ init_once, NULL);
-+ if (squashfs_inode_cachep == NULL)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+
-+static void destroy_inodecache(void)
-+{
-+ kmem_cache_destroy(squashfs_inode_cachep);
-+}
-+
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs 3.2-r2, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-+MODULE_LICENSE("GPL");
-diff -x .gitignore -Nurp linux-2.6.20/fs/squashfs/Makefile linux-2.6.20-squashfs3.2-r2/fs/squashfs/Makefile
---- linux-2.6.20/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/fs/squashfs/Makefile 2007-01-12 00:06:09.000000000 +0000
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+obj-$(CONFIG_SQUASHFS) += squashfs.o
-+squashfs-y += inode.o
-+squashfs-y += squashfs2_0.o
-diff -x .gitignore -Nurp linux-2.6.20/fs/squashfs/squashfs2_0.c linux-2.6.20-squashfs3.2-r2/fs/squashfs/squashfs2_0.c
---- linux-2.6.20/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/fs/squashfs/squashfs2_0.c 2007-01-12 02:27:20.000000000 +0000
-@@ -0,0 +1,742 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs2_0.c
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/zlib.h>
-+#include <linux/fs.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+
-+#include "squashfs.h"
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
-+static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
-+ struct nameidata *);
-+
-+static struct file_operations squashfs_dir_ops_2 = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir_2
-+};
-+
-+static struct inode_operations squashfs_dir_inode_ops_2 = {
-+ .lookup = squashfs_lookup_2
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static int read_fragment_index_table_2(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index_2,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments))) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ unsigned int fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
-+ &msblk->fragment_index_2[i], 1);
-+ msblk->fragment_index_2[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
-+ struct squashfs_fragment_entry_2 fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry_2 sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ i->i_ino = ino;
-+ i->i_mtime.tv_sec = sblk->mkfs_time;
-+ i->i_atime.tv_sec = sblk->mkfs_time;
-+ i->i_ctime.tv_sec = sblk->mkfs_time;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_nlink = 1;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+}
-+
-+
-+static int squashfs_read_inode_2(struct inode *i, squashfs_inode_t inode)
-+{
-+ struct super_block *s = i->i_sb;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ unsigned int ino = i->i_ino;
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header_2 id, sid;
-+ struct squashfs_base_inode_header_2 *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ squashfs_new_inode(msblk, i, inodeb, ino);
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
-+ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
-+ long long frag_blk;
-+ unsigned int frag_size = 0;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location_2(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %x, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
-+ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header_2 *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header_2 *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
-+ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ return 1;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 *index;
-+ char *str;
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) +
-+ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_index\n");
-+ goto failure;
-+ }
-+
-+ index = (struct squashfs_dir_index_2 *) (str + SQUASHFS_NAME_LEN + 1);
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index_2),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ kfree(str);
-+failure:
-+ return length;
-+}
-+
-+
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ struct squashfs_dir_entry_2 *dire;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto finish;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos, SQUASHFS_MK_VFS_INODE(
-+ dirh.start_block, dire->offset),
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ }
-+ }
-+
-+finish:
-+ kfree(dire);
-+ return 0;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ kfree(dire);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ struct squashfs_dir_entry_2 *dire;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) +
-+ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) {
-+ ERROR("Failed to allocate squashfs_dir_entry\n");
-+ goto exit_loop;
-+ }
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (sorted && name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+ unsigned int inode_number = SQUASHFS_MK_VFS_INODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %lld\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = squashfs_iget(i->i_sb, ino, inode_number);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ kfree(dire);
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->read_inode = squashfs_read_inode_2;
-+ msblk->read_fragment_index_table = read_fragment_index_table_2;
-+
-+ sblk->bytes_used = sblk->bytes_used_2;
-+ sblk->uid_start = sblk->uid_start_2;
-+ sblk->guid_start = sblk->guid_start_2;
-+ sblk->inode_table_start = sblk->inode_table_start_2;
-+ sblk->directory_table_start = sblk->directory_table_start_2;
-+ sblk->fragment_table_start = sblk->fragment_table_start_2;
-+
-+ return 1;
-+}
-diff -x .gitignore -Nurp linux-2.6.20/fs/squashfs/squashfs.h linux-2.6.20-squashfs3.2-r2/fs/squashfs/squashfs.h
---- linux-2.6.20/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/fs/squashfs/squashfs.h 2007-01-12 01:42:11.000000000 +0000
-@@ -0,0 +1,87 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs.h
-+ */
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#endif
-+
-+#ifdef SQUASHFS_TRACE
-+#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
-+#else
-+#define TRACE(s, args...) {}
-+#endif
-+
-+#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
-+
-+#define SERROR(s, args...) do { \
-+ if (!silent) \
-+ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
-+ } while(0)
-+
-+#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
-+
-+static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
-+{
-+ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
-+}
-+
-+#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
-+#define SQSH_EXTERN
-+extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index, int srclength);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset);
-+extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment);
-+extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length);
-+extern struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number);
-+extern const struct address_space_operations squashfs_symlink_aops;
-+extern const struct address_space_operations squashfs_aops;
-+extern const struct address_space_operations squashfs_aops_4K;
-+extern struct inode_operations squashfs_dir_inode_ops;
-+#else
-+#define SQSH_EXTERN static
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-diff -x .gitignore -Nurp linux-2.6.20/include/linux/squashfs_fs.h linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs.h
---- linux-2.6.20/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs.h 2007-01-12 00:06:09.000000000 +0000
-@@ -0,0 +1,934 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs.h
-+ */
-+
-+#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a) vmalloc(a)
-+#define SQUASHFS_FREE(a) vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a) kfree(a)
-+#endif
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_MAJOR 3
-+#define SQUASHFS_MINOR 0
-+#define SQUASHFS_MAGIC 0x73717368
-+#define SQUASHFS_MAGIC_SWAP 0x68737173
-+#define SQUASHFS_START 0
-+
-+/* size of metadata (inode and directory) blocks */
-+#define SQUASHFS_METADATA_SIZE 8192
-+#define SQUASHFS_METADATA_LOG 13
-+
-+/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE 65536
-+#define SQUASHFS_FILE_LOG 16
-+
-+#define SQUASHFS_FILE_MAX_SIZE 65536
-+
-+/* Max number of uids and gids */
-+#define SQUASHFS_UIDS 256
-+#define SQUASHFS_GUIDS 255
-+
-+/* Max length of filename (not 255) */
-+#define SQUASHFS_NAME_LEN 256
-+
-+#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
-+#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
-+#define SQUASHFS_INVALID_BLK ((long long) -1)
-+#define SQUASHFS_USED_BLK ((long long) -2)
-+
-+/* Filesystem flags */
-+#define SQUASHFS_NOI 0
-+#define SQUASHFS_NOD 1
-+#define SQUASHFS_CHECK 2
-+#define SQUASHFS_NOF 3
-+#define SQUASHFS_NO_FRAG 4
-+#define SQUASHFS_ALWAYS_FRAG 5
-+#define SQUASHFS_DUPLICATE 6
-+#define SQUASHFS_EXPORT 7
-+
-+#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
-+
-+#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOI)
-+
-+#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOD)
-+
-+#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOF)
-+
-+#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NO_FRAG)
-+
-+#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_ALWAYS_FRAG)
-+
-+#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_DUPLICATE)
-+
-+#define SQUASHFS_EXPORTABLE(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_EXPORT)
-+
-+#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking, exortable) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6) | (exportable << 7))
-+
-+/* Max number of types and file types */
-+#define SQUASHFS_DIR_TYPE 1
-+#define SQUASHFS_FILE_TYPE 2
-+#define SQUASHFS_SYMLINK_TYPE 3
-+#define SQUASHFS_BLKDEV_TYPE 4
-+#define SQUASHFS_CHRDEV_TYPE 5
-+#define SQUASHFS_FIFO_TYPE 6
-+#define SQUASHFS_SOCKET_TYPE 7
-+#define SQUASHFS_LDIR_TYPE 8
-+#define SQUASHFS_LREG_TYPE 9
-+
-+/* 1.0 filesystem type definitions */
-+#define SQUASHFS_TYPES 5
-+#define SQUASHFS_IPC_TYPE 0
-+
-+/* Flag whether block is compressed or uncompressed, bit is set if block is
-+ * uncompressed */
-+#define SQUASHFS_COMPRESSED_BIT (1 << 15)
-+
-+#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
-+ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
-+
-+#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
-+
-+#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
-+
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
-+
-+#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
-+
-+/*
-+ * Inode number ops. Inodes consist of a compressed block number, and an
-+ * uncompressed offset within that block
-+ */
-+#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
-+
-+#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
-+
-+#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
-+ << 16) + (B)))
-+
-+/* Compute 32 bit VFS inode number from squashfs inode number */
-+#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
-+ ((b) >> 2) + 1))
-+/* XXX */
-+
-+/* Translate between VFS mode and squashfs mode */
-+#define SQUASHFS_MODE(a) ((a) & 0xfff)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES(A) ((A) * sizeof(struct squashfs_fragment_entry))
-+
-+#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
-+ sizeof(long long))
-+
-+/* inode lookup table defines */
-+#define SQUASHFS_LOOKUP_BYTES(A) ((A) * sizeof(squashfs_inode_t))
-+
-+#define SQUASHFS_LOOKUP_BLOCK(A) (SQUASHFS_LOOKUP_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_LOOKUP_BLOCK_OFFSET(A) (SQUASHFS_LOOKUP_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_LOOKUP_BLOCKS(A) ((SQUASHFS_LOOKUP_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_LOOKUP_BLOCK_BYTES(A) (SQUASHFS_LOOKUP_BLOCKS(A) *\
-+ sizeof(long long))
-+
-+/* cached data constants for filesystem */
-+#define SQUASHFS_CACHED_BLKS 8
-+
-+#define SQUASHFS_MAX_FILE_SIZE_LOG 64
-+
-+#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
-+ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
-+
-+#define SQUASHFS_MARKER_BYTE 0xff
-+
-+/* meta index cache */
-+#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
-+#define SQUASHFS_META_ENTRIES 31
-+#define SQUASHFS_META_NUMBER 8
-+#define SQUASHFS_SLOTS 4
-+
-+struct meta_entry {
-+ long long data_block;
-+ unsigned int index_block;
-+ unsigned short offset;
-+ unsigned short pad;
-+};
-+
-+struct meta_index {
-+ unsigned int inode_number;
-+ unsigned int offset;
-+ unsigned short entries;
-+ unsigned short skip;
-+ unsigned short locked;
-+ unsigned short pad;
-+ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
-+};
-+
-+
-+/*
-+ * definitions for structures on disk
-+ */
-+
-+typedef long long squashfs_block_t;
-+typedef long long squashfs_inode_t;
-+
-+struct squashfs_super_block {
-+ unsigned int s_magic;
-+ unsigned int inodes;
-+ unsigned int bytes_used_2;
-+ unsigned int uid_start_2;
-+ unsigned int guid_start_2;
-+ unsigned int inode_table_start_2;
-+ unsigned int directory_table_start_2;
-+ unsigned int s_major:16;
-+ unsigned int s_minor:16;
-+ unsigned int block_size_1:16;
-+ unsigned int block_log:16;
-+ unsigned int flags:8;
-+ unsigned int no_uids:8;
-+ unsigned int no_guids:8;
-+ unsigned int mkfs_time /* time of filesystem creation */;
-+ squashfs_inode_t root_inode;
-+ unsigned int block_size;
-+ unsigned int fragments;
-+ unsigned int fragment_table_start_2;
-+ long long bytes_used;
-+ long long uid_start;
-+ long long guid_start;
-+ long long inode_table_start;
-+ long long directory_table_start;
-+ long long fragment_table_start;
-+ long long lookup_table_start;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_index {
-+ unsigned int index;
-+ unsigned int start_block;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_BASE_INODE_HEADER \
-+ unsigned int inode_type:4; \
-+ unsigned int mode:12; \
-+ unsigned int uid:8; \
-+ unsigned int guid:8; \
-+ unsigned int mtime; \
-+ unsigned int inode_number;
-+
-+struct squashfs_base_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_lreg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ long long file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int parent_inode;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int i_count:16;
-+ unsigned int parent_inode;
-+ struct squashfs_dir_index index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header {
-+ struct squashfs_base_inode_header base;
-+ struct squashfs_dev_inode_header dev;
-+ struct squashfs_symlink_inode_header symlink;
-+ struct squashfs_reg_inode_header reg;
-+ struct squashfs_lreg_inode_header lreg;
-+ struct squashfs_dir_inode_header dir;
-+ struct squashfs_ldir_inode_header ldir;
-+ struct squashfs_ipc_inode_header ipc;
-+};
-+
-+struct squashfs_dir_entry {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ int inode_number:16;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_header {
-+ unsigned int count:8;
-+ unsigned int start_block;
-+ unsigned int inode_number;
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry {
-+ long long start_block;
-+ unsigned int size;
-+ unsigned int pending;
-+} __attribute__ ((packed));
-+
-+extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
-+extern int squashfs_uncompress_init(void);
-+extern int squashfs_uncompress_exit(void);
-+
-+/*
-+ * macros to convert each packed bitfield structure from little endian to big
-+ * endian and vice versa. These are needed when creating or using a filesystem
-+ * on a machine with different byte ordering to the target architecture.
-+ *
-+ */
-+
-+#define SQUASHFS_SWAP_START \
-+ int bits;\
-+ int b_pos;\
-+ unsigned long long val;\
-+ unsigned char *s;\
-+ unsigned char *d;
-+
-+#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
-+ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
-+ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
-+ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
-+ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
-+ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
-+ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
-+ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
-+ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
-+ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
-+ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
-+ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
-+ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
-+ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
-+ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
-+ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
-+ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
-+ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
-+ SQUASHFS_SWAP((s)->lookup_table_start, d, 888, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header))\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dev_inode_header)); \
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_reg_inode_header));\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_lreg_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
-+ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_INODE_T(s, d) SQUASHFS_SWAP_LONG_LONGS(s, d, 1)
-+
-+#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 2);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 16)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_INTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 4);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 32)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 64)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * bits / 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ bits)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+#define SQUASHFS_SWAP_LOOKUP_BLOCKS(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+
-+struct squashfs_base_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int type:4;
-+ unsigned int offset:4;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
-+ SQUASHFS_SWAP((s)->guid, d, 20, 4);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header_1));\
-+ SQUASHFS_SWAP((s)->type, d, 24, 4);\
-+ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_1));\
-+ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_1));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_1));\
-+ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_1));\
-+ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+
-+struct squashfs_dir_index_2 {
-+ unsigned int index:27;
-+ unsigned int start_block:29;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_base_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+ unsigned int i_count:16;
-+ struct squashfs_dir_index_2 index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header_2 {
-+ struct squashfs_base_inode_header_2 base;
-+ struct squashfs_dev_inode_header_2 dev;
-+ struct squashfs_symlink_inode_header_2 symlink;
-+ struct squashfs_reg_inode_header_2 reg;
-+ struct squashfs_dir_inode_header_2 dir;
-+ struct squashfs_ldir_inode_header_2 ldir;
-+ struct squashfs_ipc_inode_header_2 ipc;
-+};
-+
-+struct squashfs_dir_header_2 {
-+ unsigned int count:8;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_entry_2 {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry_2 {
-+ unsigned int start_block;
-+ unsigned int size;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_2)); \
-+ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_2));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_2));\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
-+ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 27);\
-+ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
-+ SQUASHFS_SWAP((s)->size, d, 56, 8);\
-+}
-+#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 32, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
-+
-+#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
-+ sizeof(int))
-+
-+#endif
-+
-+#ifdef __KERNEL__
-+
-+/*
-+ * macros used to swap each structure entry, taking into account
-+ * bitfields and different bitfield placing conventions on differing
-+ * architectures
-+ */
-+
-+#include <asm/byteorder.h>
-+
-+#ifdef __BIG_ENDIAN
-+ /* convert from little endian to big endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, b_pos)
-+#else
-+ /* convert from big endian to little endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, 64 - tbits - b_pos)
-+#endif
-+
-+#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
-+ b_pos = pos % 8;\
-+ val = 0;\
-+ s = (unsigned char *)p + (pos / 8);\
-+ d = ((unsigned char *) &val) + 7;\
-+ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
-+ *d-- = *s++;\
-+ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
-+}
-+
-+#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
-+
-+#endif
-+#endif
-diff -x .gitignore -Nurp linux-2.6.20/include/linux/squashfs_fs_i.h linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_i.h
---- linux-2.6.20/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_i.h 2007-01-12 00:06:09.000000000 +0000
-@@ -0,0 +1,45 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_i.h
-+ */
-+
-+struct squashfs_inode_info {
-+ long long start_block;
-+ unsigned int offset;
-+ union {
-+ struct {
-+ long long fragment_start_block;
-+ unsigned int fragment_size;
-+ unsigned int fragment_offset;
-+ long long block_list_start;
-+ } s1;
-+ struct {
-+ long long directory_index_start;
-+ unsigned int directory_index_offset;
-+ unsigned int directory_index_count;
-+ unsigned int parent_inode;
-+ } s2;
-+ } u;
-+ struct inode vfs_inode;
-+};
-+#endif
-diff -x .gitignore -Nurp linux-2.6.20/include/linux/squashfs_fs_sb.h linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_sb.h
---- linux-2.6.20/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_sb.h 2007-01-12 01:23:47.000000000 +0000
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * 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,
-+ * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_sb.h
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+
-+struct squashfs_cache {
-+ long long block;
-+ int length;
-+ long long next_index;
-+ char *data;
-+};
-+
-+struct squashfs_fragment_cache {
-+ long long block;
-+ int length;
-+ unsigned int locked;
-+ char *data;
-+};
-+
-+struct squashfs_sb_info {
-+ struct squashfs_super_block sblk;
-+ int devblksize;
-+ int devblksize_log2;
-+ int swap;
-+ struct squashfs_cache *block_cache;
-+ struct squashfs_fragment_cache *fragment;
-+ int next_cache;
-+ int next_fragment;
-+ int next_meta_index;
-+ unsigned int *uid;
-+ unsigned int *guid;
-+ long long *fragment_index;
-+ unsigned int *fragment_index_2;
-+ char *read_page;
-+ struct mutex read_data_mutex;
-+ struct mutex read_page_mutex;
-+ struct mutex block_cache_mutex;
-+ struct mutex fragment_mutex;
-+ struct mutex meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ z_stream stream;
-+ long long *inode_lookup_table;
-+ int (*read_inode)(struct inode *i, squashfs_inode_t \
-+ inode);
-+ long long (*read_blocklist)(struct inode *inode, int \
-+ index, int readahead_blks, char *block_list, \
-+ unsigned short **block_p, unsigned int *bsize);
-+ int (*read_fragment_index_table)(struct super_block *s);
-+};
-+#endif
-diff -x .gitignore -Nurp linux-2.6.20/init/do_mounts_rd.c linux-2.6.20-squashfs3.2-r2/init/do_mounts_rd.c
---- linux-2.6.20/init/do_mounts_rd.c 2006-11-29 21:57:37.000000000 +0000
-+++ linux-2.6.20-squashfs3.2-r2/init/do_mounts_rd.c 2007-01-16 02:06:03.000000000 +0000
-@@ -5,6 +5,7 @@
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
- #include <linux/cramfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/initrd.h>
- #include <linux/string.h>
-
-@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
- * numbers could not be found.
- *
- * We currently check for the following magic numbers:
-+ * squashfs
- * minix
- * ext2
- * romfs
-@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
- struct cramfs_super *cramfsb;
-+ struct squashfs_super_block *squashfsb;
- int nblocks = -1;
- unsigned char *buf;
-
-@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- memset(buf, 0xe5, size);
-
- /*
-@@ -101,6 +105,18 @@ identify_ramdisk_image(int fd, int start
- goto done;
- }
-
-+ /* squashfs is at block zero too */
-+ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
-+ printk(KERN_NOTICE
-+ "RAMDISK: squashfs filesystem found at block %d\n",
-+ start_block);
-+ if (squashfsb->s_major < 3)
-+ nblocks = (squashfsb->bytes_used_2+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ else
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
diff --git a/packages/linux/linux-openmoko_2.6.24.bb b/packages/linux/linux-openmoko_2.6.24.bb
new file mode 100644
index 0000000000..b316f4ae4e
--- /dev/null
+++ b/packages/linux/linux-openmoko_2.6.24.bb
@@ -0,0 +1,61 @@
+require linux.inc
+require linux-openmoko.inc
+
+DESCRIPTION = "Linux 2.6.x (development) kernel for FIC SmartPhones shipping w/ OpenMoko"
+VANILLA_VERSION = "2.6.24"
+KERNEL_RELEASE = "2.6.24"
+
+# need to synchronize with LOCALVERSION, if set
+KERNEL_VERSION = "${KERNEL_RELEASE}"
+
+PV = "${VANILLA_VERSION}+svnr${SRCREV}"
+PR = "r3"
+
+KERNEL_IMAGETYPE = "uImage"
+UBOOT_ENTRYPOINT = "30008000"
+
+##############################################################
+# source and patches
+#
+SRCREV_FORMAT = "patches-rconfig"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+ svn://svn.openmoko.org/branches/src/target/kernel/2.6.24.x;module=patches;proto=http;name=patches \
+ svn://svn.openmoko.org/branches/src/target/kernel/2.6.24.x;module=config;proto=http;name=config "
+
+S = "${WORKDIR}/linux-${VANILLA_VERSION}"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = 'fic-gta01|fic-gta02'
+
+CMDLINE = "unused -- bootloader passes ATAG list"
+
+###############################################################
+# module configs specific to this kernel
+#
+
+# usb
+module_autoload_ohci-hcd = "ohci-hcd"
+module_autoload_hci_usb = "hci_usb"
+module_autoload_g_ether = "g_ether"
+# audio
+module_autoload_snd-soc-neo1973-wm8753 = "snd-soc-neo1973-wm8753"
+module_autoload_snd-soc-neo1973-gta02-wm8753 = "snd-soc-neo1973-gta02-wm8753"
+module_autoload_snd-pcm-oss = "snd-pcm-oss"
+module_autoload_snd-mixer-oss = "snd-mixer-oss"
+# sd/mmc
+module_autoload_s3cmci = "s3cmci"
+
+do_prepatch() {
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.openmoko
+ mv .pc .pc.old
+ mv ${WORKDIR}/config/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
+}
+
+addtask prepatch after do_unpack before do_patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-akita b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-akita
deleted file mode 100644
index 381fafbb25..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-akita
+++ /dev/null
@@ -1,1740 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:29:33 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx/PXA3xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_EM_X270 is not set
-# CONFIG_MACH_ZYLONITE is not set
-# CONFIG_MACH_ARMCORE is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=m
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE 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=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_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 is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND 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=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X 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_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_ATMEL is not set
-CONFIG_AIRO_CS=m
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_KEYBOARD_PXA27x is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_AC97_CODEC is not set
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=m
-CONFIG_SND_PXA2XX_SOC=m
-CONFIG_SND_PXA2XX_SOC_I2S=m
-CONFIG_SND_PXA2XX_SOC_SPITZ=m
-
-#
-# SoC Audio support for SuperH
-#
-CONFIG_SND_SOC_WM8750=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-# CONFIG_AC97_BUS is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_PXA=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-bootcdx86 b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-bootcdx86
deleted file mode 100644
index 0d7c289f37..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-bootcdx86
+++ /dev/null
@@ -1,1994 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:34:58 2008
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_QUICKLIST=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_TREE=y
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=15
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-CONFIG_M686=y
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_GENERIC_CPU is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_GOOD_APIC=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_HPET_TIMER=y
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_X86_PAE is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=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_SPARSEMEM_STATIC=y
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_NR_QUICK=1
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-CONFIG_KEXEC=y
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_SMP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_HIBERNATION_SMP_POSSIBLE=y
-# CONFIG_HIBERNATION is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-# CONFIG_ACPI_VIDEO is not set
-CONFIG_ACPI_FAN=y
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-# CONFIG_ACPI_SBS is not set
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCIEAER=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_K8_NB=y
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-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_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=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-# CONFIG_VIA_FIR is not set
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_AX88796 is not set
-# CONFIG_PARPORT_1284 is not set
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_ASUS_LAPTOP is not set
-# CONFIG_FUJITSU_LAPTOP is not set
-# CONFIG_MSI_LAPTOP is not set
-# CONFIG_SONY_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_IDEACPI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT8213 is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_TC86C001 is not set
-# CONFIG_IDE_ARM is not set
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_NET_SB1000 is not set
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_EL1 is not set
-# CONFIG_EL2 is not set
-# CONFIG_ELPLUS is not set
-# CONFIG_EL16 is not set
-# CONFIG_EL3 is not set
-# CONFIG_3C515 is not set
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-# CONFIG_NET_VENDOR_RACAL is not set
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-CONFIG_TULIP_MWI=y
-CONFIG_TULIP_MMIO=y
-CONFIG_TULIP_NAPI=y
-CONFIG_TULIP_NAPI_HW_MITIGATION=y
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_AT1700=m
-CONFIG_DEPCA=m
-CONFIG_HP100=m
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 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_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_PCNET32_NAPI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_AMD8111E_NAPI=y
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_ADAPTEC_STARFIRE_NAPI=y
-CONFIG_AC3200=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_CS89x0=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=y
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_VIA_RHINE_NAPI=y
-CONFIG_SC92031=m
-# CONFIG_NET_POCKET is not set
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000_NAPI=y
-# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
-# CONFIG_E1000E is not set
-# CONFIG_IP1000 is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGBE is not set
-# CONFIG_IXGB is not set
-CONFIG_S2IO=m
-# CONFIG_S2IO_NAPI is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_NIU is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_TEHUTI is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_PLX_HERMES is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_NORTEL_HERMES is not set
-# CONFIG_PCI_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_HOSTAP_PLX is not set
-# CONFIG_HOSTAP_PCI is not set
-# CONFIG_BCM43XX is not set
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER 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=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TABLET=y
-# CONFIG_TABLET_USB_ACECAD is not set
-# CONFIG_TABLET_USB_AIPTEK is not set
-# CONFIG_TABLET_USB_GTCO is not set
-# CONFIG_TABLET_USB_KBTAB is not set
-CONFIG_TABLET_USB_WACOM=y
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_PCSPKR is not set
-# CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SSB=m
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_STRADIS is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-CONFIG_DRM=m
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=m
-CONFIG_FB_CFB_COPYAREA=m
-CONFIG_FB_CFB_IMAGEBLIT=m
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
-# CONFIG_FB_VESA is not set
-# CONFIG_FB_EFI is not set
-# CONFIG_FB_HECUBA is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_LE80578 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CORGI=m
-# CONFIG_BACKLIGHT_PROGEAR is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_VIDEO_SELECT=y
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_MTS64 is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_PORTMAN2X4 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_SC6000 is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AC97_POWER_SAVE is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-# CONFIG_RTC_CLASS is not set
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_KVM is not set
-# CONFIG_LGUEST is not set
-
-#
-# Userspace I/O
-#
-# CONFIG_UIO is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# 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 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_KPROBES is not set
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_SAMPLES is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_AES_586 is not set
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-c7x0 b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-c7x0
deleted file mode 100644
index a77f3f519e..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-c7x0
+++ /dev/null
@@ -1,1746 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:27:11 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx/PXA3xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_EM_X270 is not set
-# CONFIG_MACH_ZYLONITE is not set
-# CONFIG_MACH_ARMCORE is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_MACH_POODLE is not set
-CONFIG_MACH_CORGI=y
-CONFIG_MACH_SHEPHERD=y
-CONFIG_MACH_HUSKY=y
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-CONFIG_PXA_SHARP_C7xx=y
-CONFIG_PXA_SSP=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-# CONFIG_IWMMXT is not set
-CONFIG_XSCALE_PMU=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=m
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE 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=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_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 is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND 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=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X 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_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_ATMEL is not set
-CONFIG_AIRO_CS=m
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_KEYBOARD_CORGI=y
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_MBX is not set
-CONFIG_FB_W100=y
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_AC97_CODEC is not set
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=m
-CONFIG_SND_PXA2XX_SOC=m
-CONFIG_SND_PXA2XX_SOC_I2S=m
-CONFIG_SND_PXA2XX_SOC_CORGI=m
-
-#
-# SoC Audio support for SuperH
-#
-CONFIG_SND_SOC_WM8731=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-# CONFIG_AC97_BUS is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_PXA=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_CORGI=y
-# CONFIG_LEDS_TOSA is not set
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-collie b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-collie
deleted file mode 100644
index 07258b44ed..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-collie
+++ /dev/null
@@ -1,1436 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Mon Jan 21 21:35:18 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_TIME is not set
-# CONFIG_GENERIC_CLOCKEVENTS is not set
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-# CONFIG_ELF_CORE is not set
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_COLLIE=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_SA1100=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4=y
-CONFIG_CPU_CACHE_V4WB=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WB=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-CONFIG_ISA=y
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=m
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_NODES_SHIFT=2
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttySA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=m
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE 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=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-CONFIG_SA1100_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-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 is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_SHARP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SA1100=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# 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
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-# CONFIG_PNP is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_MISC_DEVICES is not set
-CONFIG_IDE=m
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA 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_NET_PCI is not set
-# CONFIG_B44 is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NETDEV_10000=y
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-CONFIG_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=m
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=m
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=m
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-CONFIG_MCP=y
-CONFIG_MCP_SA11X0=y
-CONFIG_MCP_UCB1200=y
-CONFIG_MCP_UCB1200_TS=m
-# CONFIG_MCP_COLLIE_TS is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_SA1100=y
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-# CONFIG_LCD_LTV350QV is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-# CONFIG_LOGO is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# SPI devices
-#
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-# CONFIG_USB_SUPPORT is not set
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_SPI=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=m
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=m
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=m
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-CONFIG_FS_MBCACHE=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-# CONFIG_PROFILING is not set
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-# CONFIG_CRYPTO_CAMELLIA is not set
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-htcuniversal b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-htcuniversal
deleted file mode 100644
index 4be1331776..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-htcuniversal
+++ /dev/null
@@ -1,1307 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 21:46:02 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=16
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-# CONFIG_UID16 is not set
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_DMABOUNCE=y
-
-#
-# Intel PXA2xx/PXA3xx Implementations
-#
-CONFIG_ARCH_LUBBOCK=y
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_EM_X270 is not set
-# CONFIG_MACH_ZYLONITE is not set
-# CONFIG_MACH_ARMCORE is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-CONFIG_SA1111=y
-CONFIG_FORCE_MAX_ZONEORDER=9
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_SUSPEND_UP_POSSIBLE=y
-# CONFIG_SUSPEND is not set
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE 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 is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-# CONFIG_INET_LRO is not set
-# CONFIG_INET_DIAG is not set
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-# 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=y
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=y
-# CONFIG_IRNET is not set
-CONFIG_IRCOMM=y
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=y
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-CONFIG_PXA_FICP=y
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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=y
-CONFIG_MTD_DEBUG_VERBOSE=0
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-# CONFIG_MTD_CHAR is not set
-# CONFIG_MTD_BLKDEVS is not set
-# CONFIG_MTD_BLOCK is not set
-# CONFIG_MTD_BLOCK_RO is not set
-# 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 is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-# 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_SHARP_SL is not set
-# 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=m
-CONFIG_MTDRAM_TOTAL_SIZE=4096
-CONFIG_MTDRAM_ERASE_SIZE=128
-# 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
-
-#
-# 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 is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
-# 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_NET_ETHERNET is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-CONFIG_ACX=m
-CONFIG_ACX_MEM=y
-# CONFIG_ACX_CS is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_KEYBOARD_GPIO=y
-CONFIG_KEYBOARD_ASIC3=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=32
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=m
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_PXA=m
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-CONFIG_W1=y
-
-#
-# 1-wire Bus Masters
-#
-# CONFIG_W1_MASTER_DS2482 is not set
-CONFIG_W1_MASTER_DS1WM=y
-
-#
-# 1-wire Slaves
-#
-# CONFIG_W1_SLAVE_THERM is not set
-# CONFIG_W1_SLAVE_SMEM is not set
-# CONFIG_W1_SLAVE_DS2433 is not set
-CONFIG_W1_SLAVE_DS2760=y
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PDA_POWER=y
-CONFIG_APM_POWER=y
-CONFIG_BATTERY_DS2760=y
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-CONFIG_HTC_ASIC3=y
-CONFIG_HTC_ASIC3_DS1WM=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-# CONFIG_FB_PXA_OVERLAY is not set
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-# CONFIG_MMC_PXA is not set
-CONFIG_MMC_ASIC3=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_GPIO is not set
-CONFIG_LEDS_ASIC3=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_DEBUG=y
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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 is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# 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 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 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=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-CONFIG_NLS_CODEPAGE_1250=y
-CONFIG_NLS_CODEPAGE_1251=y
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-# CONFIG_PROFILING is not set
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-CONFIG_PRINTK_TIME=y
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-CONFIG_DEBUG_VM=y
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=y
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-# CONFIG_CRYPTO_CBC is not set
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_LZO is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-hx2000 b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-hx2000
deleted file mode 100644
index f9317ba2a2..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-hx2000
+++ /dev/null
@@ -1,1733 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:10:53 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx/PXA3xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-# CONFIG_MACH_TRIZEPS4 is not set
-CONFIG_MACH_HX2750=y
-# CONFIG_MACH_EM_X270 is not set
-# CONFIG_MACH_ZYLONITE is not set
-# CONFIG_MACH_ARMCORE is not set
-CONFIG_PXA27x=y
-CONFIG_PXA_SSP=y
-CONFIG_PXA_KEYS=y
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-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_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=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_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=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_XIP is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PXA2XX is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SHARP_SL is not set
-# 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
-
-#
-# 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=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X 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_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_ATMEL is not set
-CONFIG_AIRO_CS=m
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_KEYBOARD_PXA27x=m
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_TOUCHSCREEN_TSC2101=y
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-CONFIG_MFD_TSC2101=y
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=m
-CONFIG_SND_PXA2XX_SOC=m
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=y
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_PXA=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-poodle b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-poodle
deleted file mode 100644
index 6953b2af5b..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-poodle
+++ /dev/null
@@ -1,1756 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 22:47:47 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx/PXA3xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_EM_X270 is not set
-# CONFIG_MACH_ZYLONITE is not set
-# CONFIG_MACH_ARMCORE is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_MACH_HTCUNIVERSAL is not set
-CONFIG_MACH_POODLE=y
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-CONFIG_PXA_SSP=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-# CONFIG_IWMMXT is not set
-CONFIG_XSCALE_PMU=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE 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=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_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 is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=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=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND 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=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X 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_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_ATMEL is not set
-CONFIG_AIRO_CS=m
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_AC97_CODEC is not set
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=m
-CONFIG_SND_PXA2XX_SOC=m
-CONFIG_SND_PXA2XX_SOC_I2S=m
-CONFIG_SND_PXA2XX_SOC_POODLE=m
-
-#
-# SoC Audio support for SuperH
-#
-CONFIG_SND_SOC_WM8731=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-# CONFIG_AC97_BUS is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_PXA=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=y
-# CONFIG_LEDS_TOSA is not set
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemuarm b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemuarm
deleted file mode 100644
index bf96d2aff7..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemuarm
+++ /dev/null
@@ -1,1582 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 22:28:17 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-# CONFIG_GENERIC_GPIO is not set
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-CONFIG_ARCH_VERSATILE=y
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Versatile platform type
-#
-CONFIG_ARCH_VERSATILE_PB=y
-# CONFIG_MACH_VERSATILE_AB is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_ARM926T=y
-# CONFIG_CPU_V6 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5TJ=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_ARM_VIC=y
-CONFIG_ICST307=y
-
-#
-# Bus support
-#
-CONFIG_ARM_AMBA=y
-CONFIG_PCI=y
-CONFIG_PCI_SYSCALL=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_DEBUG is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_LEDS=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyAMA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_VFP=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-# CONFIG_APM_EMULATION is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-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_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=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_VLSI_FIR is not set
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_AFS_PARTS=y
-
-#
-# 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=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_GEOMETRY 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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# 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_ARM_INTEGRATOR is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# 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=m
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-CONFIG_MTD_NAND_IDS=m
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_CAFE is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=51200
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-CONFIG_SCSI_SYM53C8XX_2=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_AX88796 is not set
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 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_NET_PCI is not set
-# CONFIG_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_HERMES=m
-# CONFIG_PLX_HERMES is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_NORTEL_HERMES is not set
-# CONFIG_PCI_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_HOSTAP_PLX is not set
-# CONFIG_HOSTAP_PCI is not set
-# CONFIG_BCM43XX is not set
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TABLET=y
-# CONFIG_TABLET_USB_ACECAD is not set
-# CONFIG_TABLET_USB_AIPTEK is not set
-# CONFIG_TABLET_USB_GTCO is not set
-# CONFIG_TABLET_USB_KBTAB is not set
-CONFIG_TABLET_USB_WACOM=y
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_STRADIS is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-# CONFIG_DRM is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_ARMCLCD=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CORGI=m
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_RTC_DRV_PL031 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# 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 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemux86 b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemux86
deleted file mode 100644
index 39e236ae8b..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-qemux86
+++ /dev/null
@@ -1,1993 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:20:37 2008
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_QUICKLIST=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_TREE=y
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=15
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-CONFIG_M686=y
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_GENERIC_CPU is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_GOOD_APIC=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-# CONFIG_HPET_TIMER is not set
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_X86_PAE is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=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_SPARSEMEM_STATIC=y
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_NR_QUICK=1
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-CONFIG_KEXEC=y
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_SMP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_HIBERNATION_SMP_POSSIBLE=y
-# CONFIG_HIBERNATION is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-# CONFIG_ACPI_VIDEO is not set
-CONFIG_ACPI_FAN=y
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-# CONFIG_ACPI_SBS is not set
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCIEPORTBUS is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-# CONFIG_PCI_MSI is not set
-CONFIG_PCI_LEGACY=y
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_K8_NB=y
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-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_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=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-# CONFIG_VIA_FIR is not set
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_AX88796 is not set
-# CONFIG_PARPORT_1284 is not set
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_ASUS_LAPTOP is not set
-# CONFIG_FUJITSU_LAPTOP is not set
-# CONFIG_MSI_LAPTOP is not set
-# CONFIG_SONY_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_IDEACPI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT8213 is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_TC86C001 is not set
-# CONFIG_IDE_ARM is not set
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_NET_SB1000 is not set
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_EL1 is not set
-# CONFIG_EL2 is not set
-# CONFIG_ELPLUS is not set
-# CONFIG_EL16 is not set
-# CONFIG_EL3 is not set
-# CONFIG_3C515 is not set
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-# CONFIG_NET_VENDOR_RACAL is not set
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-CONFIG_TULIP_MWI=y
-CONFIG_TULIP_MMIO=y
-CONFIG_TULIP_NAPI=y
-CONFIG_TULIP_NAPI_HW_MITIGATION=y
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_AT1700=m
-CONFIG_DEPCA=m
-CONFIG_HP100=m
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 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_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_PCNET32_NAPI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_AMD8111E_NAPI=y
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_ADAPTEC_STARFIRE_NAPI=y
-CONFIG_AC3200=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_CS89x0=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=y
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=y
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_VIA_RHINE_NAPI=y
-CONFIG_SC92031=m
-# CONFIG_NET_POCKET is not set
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000_NAPI=y
-# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
-# CONFIG_E1000E is not set
-# CONFIG_IP1000 is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGBE is not set
-# CONFIG_IXGB is not set
-CONFIG_S2IO=m
-# CONFIG_S2IO_NAPI is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_NIU is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_TEHUTI is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_PLX_HERMES is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_NORTEL_HERMES is not set
-# CONFIG_PCI_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_HOSTAP_PLX is not set
-# CONFIG_HOSTAP_PCI is not set
-# CONFIG_BCM43XX is not set
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER 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=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TABLET=y
-# CONFIG_TABLET_USB_ACECAD is not set
-# CONFIG_TABLET_USB_AIPTEK is not set
-# CONFIG_TABLET_USB_GTCO is not set
-# CONFIG_TABLET_USB_KBTAB is not set
-CONFIG_TABLET_USB_WACOM=y
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_PCSPKR is not set
-# CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SSB=m
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_STRADIS is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-CONFIG_DRM=m
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=m
-CONFIG_FB_CFB_COPYAREA=m
-CONFIG_FB_CFB_IMAGEBLIT=m
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
-# CONFIG_FB_VESA is not set
-# CONFIG_FB_EFI is not set
-# CONFIG_FB_HECUBA is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_LE80578 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CORGI=m
-# CONFIG_BACKLIGHT_PROGEAR is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_VIDEO_SELECT=y
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_MTS64 is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_PORTMAN2X4 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_SC6000 is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AC97_POWER_SAVE is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-# CONFIG_RTC_CLASS is not set
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_KVM is not set
-# CONFIG_LGUEST is not set
-
-#
-# Userspace I/O
-#
-# CONFIG_UIO is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# 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 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_KPROBES is not set
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_SAMPLES is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_AES_586 is not set
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-spitz b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-spitz
deleted file mode 100644
index cc9f6e6988..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-spitz
+++ /dev/null
@@ -1,1740 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:32:23 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx/PXA3xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_EM_X270 is not set
-# CONFIG_MACH_ZYLONITE is not set
-# CONFIG_MACH_ARMCORE is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE 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=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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=m
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# 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 is not set
-# CONFIG_MTD_JEDECPROBE 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_RAM is not set
-CONFIG_MTD_ROM=m
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=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=m
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=m
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=m
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND 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=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X 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_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_ATMEL is not set
-CONFIG_AIRO_CS=m
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_KEYBOARD_PXA27x is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_AC97_CODEC is not set
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=m
-CONFIG_SND_PXA2XX_SOC=m
-CONFIG_SND_PXA2XX_SOC_I2S=m
-CONFIG_SND_PXA2XX_SOC_SPITZ=m
-
-#
-# SoC Audio support for SuperH
-#
-CONFIG_SND_SOC_WM8750=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-# CONFIG_AC97_BUS is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_PXA=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-zylonite b/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-zylonite
deleted file mode 100644
index c813b1a0f5..0000000000
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/defconfig-zylonite
+++ /dev/null
@@ -1,1740 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:42:35 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx/PXA3xx Implementations
-#
-
-#
-# Supported PXA3xx Processor Variants
-#
-CONFIG_CPU_PXA300=y
-CONFIG_CPU_PXA310=y
-CONFIG_CPU_PXA320=y
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_MACH_EM_X270 is not set
-CONFIG_MACH_ZYLONITE=y
-# CONFIG_MACH_ARMCORE is not set
-CONFIG_PXA3xx=y
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSC3=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-CONFIG_IO_36=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=m
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-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_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,38400 root=/dev/mtdblock2 rootfstype=jffs2 mem=64M dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE 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=y
-# CONFIG_IP_PNP_DHCP is not set
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# 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=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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_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
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-# CONFIG_BT_HCIBTSDIO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# 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 is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_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=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-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_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_XIP is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SHARP_SL is not set
-# 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=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND 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=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_AX88796 is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X 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_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_HERMES=m
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_ATMEL is not set
-CONFIG_AIRO_CS=m
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-CONFIG_USB_NET_CDC_SUBSET=m
-# CONFIG_USB_ALI_M5632 is not set
-# CONFIG_USB_AN2720 is not set
-# CONFIG_USB_BELKIN is not set
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_KC2190 is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_NET_PCMCIA is not set
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER 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
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_LCD_QVGA is not set
-CONFIG_FB_PXA_LCD_VGA=y
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CORGI=m
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=m
-CONFIG_SND_PXA2XX_SOC=m
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_M66592=y
-CONFIG_USB_M66592=y
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_ETH is not set
-# CONFIG_USB_GADGETFS is not set
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_PXA=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_GPIO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# 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_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# 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=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL 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=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-qemux86 b/packages/linux/linux-rp-2.6.23/defconfig-qemux86
index 5bc9a9ec26..c5e91d989f 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-qemux86
+++ b/packages/linux/linux-rp-2.6.23/defconfig-qemux86
@@ -350,40 +350,68 @@ CONFIG_NETFILTER=y
#
# Core Netfilter Configuration
#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
#
# IP: Netfilter Configuration
#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_IPRANGE=m
@@ -398,10 +426,26 @@ CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
@@ -425,6 +469,7 @@ CONFIG_IP_NF_ARP_MANGLE=m
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -439,7 +484,7 @@ CONFIG_IP_NF_ARP_MANGLE=m
# Wireless
#
# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
+CONFIG_WIRELESS_EXT=y
# CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set
@@ -1693,6 +1738,10 @@ CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_AUDIT_GENERIC=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-spitz b/packages/linux/linux-rp-2.6.23/defconfig-spitz
index a18218f2d1..a4e849cba2 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-spitz
+++ b/packages/linux/linux-rp-2.6.23/defconfig-spitz
@@ -579,7 +579,7 @@ CONFIG_MTD_ROM=m
#
CONFIG_MTD_COMPLEX_MAPPINGS=y
# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=y
+CONFIG_MTD_SHARP_SL=m
# CONFIG_MTD_PLATRAM is not set
#
@@ -821,6 +821,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_CORGI is not set
CONFIG_KEYBOARD_SPITZ=y
+CONFIG_SHARPSL_RC=m
# CONFIG_KEYBOARD_PXA27x is not set
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_INPUT_MOUSE is not set
diff --git a/packages/linux/linux-rp-2.6.23/mtd-module.patch b/packages/linux/linux-rp-2.6.23/mtd-module.patch
new file mode 100644
index 0000000000..4aa2f22aee
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/mtd-module.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.23/drivers/mtd/maps/Kconfig
+===================================================================
+--- linux-2.6.23/drivers/mtd/maps/Kconfig
++++ linux-2.6.23/drivers/mtd/maps/Kconfig
+@@ -600,7 +600,7 @@
+ default "4"
+
+ config MTD_SHARP_SL
+- bool "ROM mapped on Sharp SL Series"
++ tristate "ROM mapped on Sharp SL Series"
+ depends on ARCH_PXA
+ help
+ This enables access to the flash chip on the Sharp SL Series of PDAs.
diff --git a/packages/linux/linux-rp-2.6.23/sharpsl-rc-r1.patch b/packages/linux/linux-rp-2.6.23/sharpsl-rc-r1.patch
new file mode 100644
index 0000000000..08f1f2e721
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/sharpsl-rc-r1.patch
@@ -0,0 +1,519 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/spitz.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/spitz.c
++++ linux-2.6.23/arch/arm/mach-pxa/spitz.c
+@@ -245,6 +245,13 @@ static struct platform_device spitzkbd_d
+ .id = -1,
+ };
+
++/*
++ * Spitz Remote Control Device
++ */
++static struct platform_device sharpsl_rc_device = {
++ .name = "sharpsl-remote-control",
++ .id = -1,
++};
+
+ /*
+ * Spitz LEDs
+@@ -477,6 +484,7 @@ static struct platform_device *devices[]
+ &spitzscoop_device,
+ &spitzssp_device,
+ &spitzkbd_device,
++ &sharpsl_rc_device,
+ &spitzts_device,
+ &spitzbl_device,
+ &spitzled_device,
+Index: linux-2.6.23/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.23.orig/drivers/input/keyboard/Kconfig
++++ linux-2.6.23/drivers/input/keyboard/Kconfig
+@@ -154,6 +154,17 @@ config KEYBOARD_SPITZ
+ To compile this driver as a module, choose M here: the
+ module will be called spitzkbd.
+
++config SHARPSL_RC
++ tristate "Sharp SL-Cxx00 Remote Control"
++ depends on PXA_SHARPSL
++ default y
++ help
++ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
++ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
++
++ To compile this driver as a module, choose M here: the
++ module will be called sharpsl_rc.
++
+ config KEYBOARD_AMIGA
+ tristate "Amiga keyboard"
+ depends on AMIGA
+Index: linux-2.6.23/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.23.orig/drivers/input/keyboard/Makefile
++++ linux-2.6.23/drivers/input/keyboard/Makefile
+@@ -15,6 +15,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton
+ obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
+ obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
+ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
++obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
+ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
+ obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
+Index: linux-2.6.23/drivers/input/keyboard/sharpsl_rc.c
+===================================================================
+--- /dev/null
++++ linux-2.6.23/drivers/input/keyboard/sharpsl_rc.c
+@@ -0,0 +1,291 @@
++/*
++ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
++ *
++ * Copyright (c) 2004-2005 Richard Purdie
++ *
++ * Based on corgikbd.c and Sharp's RC driver
++ *
++ * 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.
++ *
++ */
++
++#define DEBUG 1
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/init.h>
++#include <linux/input.h>
++#include <linux/interrupt.h>
++#include <linux/jiffies.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++
++#ifdef CONFIG_MACH_SPITZ
++#include <asm/arch/spitz.h>
++#endif
++#ifdef CONFIG_MACH_CORGI
++#include <asm/arch/corgi.h>
++#endif
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/hardware/scoop.h>
++#include <asm/arch/sharpsl.h>
++#include <asm/hardware/sharpsl_pm.h>
++
++#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
++
++struct remote_control_key {
++ unsigned char min;
++ unsigned char max;
++ unsigned char key;
++};
++
++#ifdef CONFIG_MACH_SPITZ
++#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
++#define REMOTE_SCOOP_DEVICE spitzscoop2_device
++#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
++#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
++static struct remote_control_key remote_keys[] = {
++ { 25, 35, KEY_STOPCD},
++ { 55, 65, KEY_PLAYPAUSE},
++ { 85, 95, KEY_NEXTSONG},
++ { 115, 125, KEY_VOLUMEUP},
++ { 145, 155, KEY_PREVIOUSSONG},
++ { 180, 190, KEY_MUTE},
++ { 215, 225, KEY_VOLUMEDOWN},
++};
++#endif
++#ifdef CONFIG_MACH_CORGI
++#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
++#define REMOTE_SCOOP_DEVICE corgiscoop_device
++#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
++#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
++static struct remote_control_key remote_keys[] = {
++ //These need to be fixed for the CE-RH1's values
++ { 25, 35, KEY_STOPCD},
++ { 55, 65, KEY_PLAYPAUSE},
++ { 85, 95, KEY_NEXTSONG},
++ { 115, 125, KEY_VOLUMEUP},
++ { 145, 155, KEY_PREVIOUSSONG},
++ { 180, 190, KEY_MUTE},
++ { 215, 225, KEY_VOLUMEDOWN},
++};
++#endif
++
++#define RELEASE_HI 230
++#define MAX_EARPHONE 6
++#define RC_POLL_MS 10
++#define RC_FINISH_MS 500
++#define WAIT_STATE 3
++#define NOISE_THRESHOLD 100
++
++struct sharpsl_rc {
++ struct input_dev *input;
++ struct device *dev;
++
++ spinlock_t lock;
++ struct timer_list rctimer;
++ struct timer_list rctimer_finish;
++
++ unsigned int handling_press;
++ unsigned int noise;
++ unsigned int state;
++ unsigned int last_key;
++};
++
++static int get_remocon_raw(void)
++{
++ int i, val;
++
++ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
++ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
++ if (val >= remote_keys[i].min
++ && val <= remote_keys[i].max) {
++ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
++ return remote_keys[i].key;
++ }
++ }
++ return 0;
++}
++
++static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct sharpsl_rc *data = dev_id;
++ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
++ if (!data->handling_press) {
++ DPRINTK("handling interrupt");
++ data->handling_press = 1;
++ data->noise = 0;
++ data->state = 0;
++ data->last_key = 0;
++
++ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
++
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ }
++ return IRQ_HANDLED;
++}
++
++static void sharpsl_rc_timer_callback(unsigned long dataPtr)
++{
++ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
++ int timer = 1;
++ int key = get_remocon_raw();
++ DPRINTK("timer callback, key: %d", key);
++
++ //wait for value to stabilize
++ if (data->state < WAIT_STATE) {
++ if (data->last_key != key) {
++ ++data->noise;
++ if (data->noise > NOISE_THRESHOLD) {
++ DPRINTK("too much noise, bailing");
++ timer = 0;
++ }
++ data->state = 0;
++ } else {
++ ++data->state;
++ }
++ data->last_key = key;
++
++ //stable value, send event
++ } else if (data->state == WAIT_STATE) {
++ data->noise = 0;
++ //non-key returned, skip the rest of the states and bail now
++ if (data->last_key == 0) {
++ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
++ timer = 0;
++ //send button press
++ } else {
++ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
++ input_report_key(data->input, data->last_key, 1);
++ }
++ ++data->state;
++
++ //wait until key is released
++ } else if (data->state < WAIT_STATE * 2) {
++ if (key == data->last_key
++ && data->noise < NOISE_THRESHOLD) {
++ data->state = WAIT_STATE + 1;
++ ++data->noise;
++ } else {
++ ++data->state;
++ }
++ //key is released, send event
++ } else {
++ //send button release
++ DPRINTK("release key %d", data->last_key);
++ input_report_key(data->input, data->last_key, 0);
++ timer = 0;
++ }
++ if (timer) {
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ } else {
++ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
++ data->handling_press = 0;
++ }
++}
++
++static int __init sharpsl_rc_probe(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc;
++ struct input_dev *input_dev;
++ int i, ret;
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
++
++ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!sharpsl_rc || !input_dev) {
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(pdev, sharpsl_rc);
++
++ sharpsl_rc->dev = &pdev->dev;
++ sharpsl_rc->input = input_dev;
++ spin_lock_init(&sharpsl_rc->lock);
++
++ /* Init Remote Control Timer */
++ init_timer(&sharpsl_rc->rctimer);
++ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
++ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
++
++ input_dev->name = "Sharp Remote Control CE-RHX";
++ input_dev->phys = "sharpsl_rc/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = sharpsl_rc;
++
++ input_dev->evbit[0] = BIT(EV_KEY);
++
++ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
++ set_bit(remote_keys[i].key, input_dev->keybit);
++
++ input_register_device(sharpsl_rc->input);
++
++ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
++ ret = request_irq(REMOTE_IRQ_INT,
++ sharpsl_rc_interrupt,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
++ "sharpsl_rc",
++ sharpsl_rc);
++ if (ret < 0) {
++ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return ret;
++ }
++
++ return 0;
++}
++
++static int sharpsl_rc_remove(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
++
++ free_irq(REMOTE_IRQ_INT, sharpsl_rc);
++ del_timer_sync(&sharpsl_rc->rctimer);
++ input_unregister_device(sharpsl_rc->input);
++ kfree(sharpsl_rc);
++
++ return 0;
++}
++
++static struct platform_driver sharpsl_rc_driver = {
++ .probe = sharpsl_rc_probe,
++ .remove = sharpsl_rc_remove,
++ .suspend = NULL,
++ .resume = NULL,
++ .driver = {
++ .name = "sharpsl-remote-control",
++ },
++};
++
++static int __devinit sharpsl_rc_init(void)
++{
++ printk("sharpsl_rc_init\n");
++ return platform_driver_register(&sharpsl_rc_driver);
++}
++
++static void __exit sharpsl_rc_exit(void)
++{
++ printk("sharpsl_rc_exit\n");
++ platform_driver_unregister(&sharpsl_rc_driver);
++}
++
++module_init(sharpsl_rc_init);
++module_exit(sharpsl_rc_exit);
++
++MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
++MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
++MODULE_DESCRIPTION("SharpSL Remote Control Driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.23/drivers/input/keyboard/spitzkbd.c
+===================================================================
+--- linux-2.6.23.orig/drivers/input/keyboard/spitzkbd.c
++++ linux-2.6.23/drivers/input/keyboard/spitzkbd.c
+@@ -19,6 +19,7 @@
+ #include <linux/jiffies.h>
+ #include <linux/module.h>
+ #include <linux/slab.h>
++#include <linux/kmod.h>
+
+ #include <asm/arch/spitz.h>
+ #include <asm/arch/hardware.h>
+@@ -279,13 +280,21 @@ static irqreturn_t spitzkbd_hinge_isr(in
+ static int sharpsl_hinge_state;
+ static int hinge_count;
+
++void spitzkbd_handle_sharpsl_rc(void *arg) {
++ request_module("sharpsl_rc");
++}
++
++DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
++
+ static void spitzkbd_hinge_timer(unsigned long data)
+ {
+ struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
+ unsigned long state;
+ unsigned long flags;
++ unsigned int headphone, remote;
+
+ state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
++ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
+ state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
+ if (state != sharpsl_hinge_state) {
+ hinge_count = 0;
+@@ -299,9 +308,18 @@ static void spitzkbd_hinge_timer(unsigne
+
+ input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
+ input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
+- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
++
++ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
++ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
++
++ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
++ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
+ input_sync(spitzkbd_data->input);
+
++ if (remote) {
++ schedule_work(&spitzkbd_work);
++ }
++
+ spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
+ } else {
+ mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+@@ -393,6 +411,7 @@ static int __init spitzkbd_probe(struct
+ set_bit(SW_LID, input_dev->swbit);
+ set_bit(SW_TABLET_MODE, input_dev->swbit);
+ set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
++ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
+
+ err = input_register_device(input_dev);
+ if (err)
+@@ -430,9 +449,12 @@ static int __init spitzkbd_probe(struct
+ request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd SWB", spitzkbd);
+- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd HP", spitzkbd);
++ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
++ "Spitzkbd HP Type", spitzkbd);
+
+ return 0;
+
+@@ -453,6 +475,7 @@ static int spitzkbd_remove(struct platfo
+ free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
++ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
+
+ del_timer_sync(&spitzkbd->htimer);
+Index: linux-2.6.23/arch/arm/mach-pxa/sharpsl.h
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/sharpsl.h
++++ linux-2.6.23/arch/arm/mach-pxa/sharpsl.h
+@@ -50,15 +50,10 @@ void spitz_wait_hsync(void);
+
+ #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
+
+-/* MAX1111 Channel Definitions */
+-#define MAX1111_BATT_VOLT 4u
+-#define MAX1111_BATT_TEMP 2u
+-#define MAX1111_ACIN_VOLT 6u
+-
+ extern struct battery_thresh spitz_battery_levels_acin[];
+ extern struct battery_thresh spitz_battery_levels_noac[];
+ void sharpsl_pm_pxa_init(void);
+ void sharpsl_pm_pxa_remove(void);
+-int sharpsl_pm_pxa_read_max1111(int channel);
++
+
+
+Index: linux-2.6.23/arch/arm/mach-pxa/sharpsl_pm.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/sharpsl_pm.c
++++ linux-2.6.23/arch/arm/mach-pxa/sharpsl_pm.c
+@@ -135,6 +135,8 @@ int sharpsl_pm_pxa_read_max1111(int chan
+ | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
+ }
+
++EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
++
+ void sharpsl_pm_pxa_init(void)
+ {
+ pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
+Index: linux-2.6.23/include/asm-arm/hardware/sharpsl_pm.h
+===================================================================
+--- linux-2.6.23.orig/include/asm-arm/hardware/sharpsl_pm.h
++++ linux-2.6.23/include/asm-arm/hardware/sharpsl_pm.h
+@@ -104,3 +104,10 @@ irqreturn_t sharpsl_ac_isr(int irq, void
+ irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
+ irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
+
++/* MAX1111 Channel Definitions */
++#define MAX1111_REMCOM 0u
++#define MAX1111_BATT_VOLT 4u
++#define MAX1111_BATT_TEMP 2u
++#define MAX1111_ACIN_VOLT 6u
++
++int sharpsl_pm_pxa_read_max1111(int channel);
+Index: linux-2.6.23/include/linux/input.h
+===================================================================
+--- linux-2.6.23.orig/include/linux/input.h
++++ linux-2.6.23/include/linux/input.h
+@@ -621,6 +621,7 @@ struct input_absinfo {
+ #define SW_TABLET_MODE 0x01 /* set = tablet mode */
+ #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
+ #define SW_RADIO 0x03 /* set = radio enabled */
++#define SW_REMOTE_INSERT 0x04 /* set = remote */
+ #define SW_MAX 0x0f
+
+ /*
+Index: linux-2.6.23/arch/arm/mach-pxa/spitz_pm.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/spitz_pm.c
++++ linux-2.6.23/arch/arm/mach-pxa/spitz_pm.c
+@@ -162,6 +162,13 @@ static int spitz_should_wakeup(unsigned
+ if (resume_on_alarm && (PEDR & PWER_RTC))
+ is_resume |= PWER_RTC;
+
++ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT));
++
++ //remote/headphone interrupt, wakeup
++ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
++ is_resume |= PWER_RTC;
++ }
++
+ dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
+ return is_resume;
+ }
diff --git a/packages/linux/linux-rp-2.6.23/wm8750-treble.patch b/packages/linux/linux-rp-2.6.23/wm8750-treble.patch
new file mode 100644
index 0000000000..07a8d8e141
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/wm8750-treble.patch
@@ -0,0 +1,11 @@
+--- linux-2.6.23/sound/soc/codecs/wm8750.c 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/sound/soc/codecs/wm8750.c 2007-11-02 16:47:35.000000000 +0100
+@@ -189,7 +189,7 @@
+ SOC_ENUM("Bass Filter", wm8750_enum[1]),
+ SOC_SINGLE("Bass Volume", WM8750_BASS, 0, 15, 1),
+
+-SOC_SINGLE("Treble Volume", WM8750_TREBLE, 0, 15, 0),
++SOC_SINGLE("Treble Volume", WM8750_TREBLE, 0, 15, 1),
+ SOC_ENUM("Treble Cut-off", wm8750_enum[2]),
+
+ SOC_SINGLE("3D Switch", WM8750_3D, 0, 1, 0),
diff --git a/packages/libxml/files/.mtn2git_empty b/packages/linux/linux-rp-2.6.24/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxml/files/.mtn2git_empty
+++ b/packages/linux/linux-rp-2.6.24/.mtn2git_empty
diff --git a/packages/linux/linux-rp-2.6.24/binutils-buildid-arm.patch b/packages/linux/linux-rp-2.6.24/binutils-buildid-arm.patch
new file mode 100644
index 0000000000..68e35e89e1
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/binutils-buildid-arm.patch
@@ -0,0 +1,16 @@
+---
+ arch/arm/kernel/vmlinux.lds.S | 1 +
+ 1 file changed, 1 insertion(+)
+
+Index: linux-2.6.22/arch/arm/kernel/vmlinux.lds.S
+===================================================================
+--- linux-2.6.22.orig/arch/arm/kernel/vmlinux.lds.S 2007-09-11 18:32:29.000000000 +0200
++++ linux-2.6.22/arch/arm/kernel/vmlinux.lds.S 2007-09-11 18:33:42.000000000 +0200
+@@ -94,6 +94,7 @@
+ TEXT_TEXT
+ SCHED_TEXT
+ LOCK_TEXT
++ *(.note.*)
+ #ifdef CONFIG_MMU
+ *(.fixup)
+ #endif
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/connectplus-prevent-oops-HACK.patch b/packages/linux/linux-rp-2.6.24/connectplus-prevent-oops-HACK.patch
index b5439c62e7..b5439c62e7 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/connectplus-prevent-oops-HACK.patch
+++ b/packages/linux/linux-rp-2.6.24/connectplus-prevent-oops-HACK.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/connectplus-remove-ide-HACK.patch b/packages/linux/linux-rp-2.6.24/connectplus-remove-ide-HACK.patch
index 4414b21191..4414b21191 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/connectplus-remove-ide-HACK.patch
+++ b/packages/linux/linux-rp-2.6.24/connectplus-remove-ide-HACK.patch
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-akita b/packages/linux/linux-rp-2.6.24/defconfig-akita
new file mode 100644
index 0000000000..5e4560c39d
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-akita
@@ -0,0 +1,1740 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 18:29:33 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+# CONFIG_PXA_SHARPSL_25x is not set
+CONFIG_PXA_SHARPSL_27x=y
+# CONFIG_MACH_HX2750 is not set
+CONFIG_MACH_AKITA=y
+CONFIG_MACH_SPITZ=y
+CONFIG_MACH_BORZOI=y
+CONFIG_PXA27x=y
+CONFIG_PXA_SHARP_Cxx00=y
+CONFIG_PXA_SSP=y
+# CONFIG_PXA_KEYS is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE 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=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_SHARP_SL=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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND 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=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X 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_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_ATMEL is not set
+CONFIG_AIRO_CS=m
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_CORGI is not set
+CONFIG_KEYBOARD_SPITZ=y
+# CONFIG_KEYBOARD_PXA27x is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_W100 is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_AC97_CODEC is not set
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+CONFIG_SND_PXA2XX_SOC_SPITZ=m
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_WM8750=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+# CONFIG_AC97_BUS is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_SPITZ=y
+# CONFIG_LEDS_TOSA is not set
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-bootcdx86 b/packages/linux/linux-rp-2.6.24/defconfig-bootcdx86
new file mode 100644
index 0000000000..fda13665cd
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-bootcdx86
@@ -0,0 +1,1994 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 18:34:58 2008
+#
+# CONFIG_64BIT is not set
+CONFIG_X86_32=y
+# CONFIG_X86_64 is not set
+CONFIG_X86=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_QUICKLIST=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+# CONFIG_GENERIC_TIME_VSYSCALL is not set
+CONFIG_ARCH_SUPPORTS_OPROFILE=y
+# CONFIG_ZONE_DMA32 is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+# CONFIG_AUDIT_ARCH is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_X86_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=15
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_X86_VSMP is not set
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+# CONFIG_PARAVIRT_GUEST is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+CONFIG_M686=y
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_GENERIC_CPU is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_X86_XADD=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_GOOD_APIC=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=4
+CONFIG_HPET_TIMER=y
+CONFIG_NR_CPUS=8
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_NONFATAL=y
+CONFIG_X86_MCE_P4THERMAL=y
+CONFIG_VM86=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_X86_REBOOTFIXUPS is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_3G_OPT is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_2G_OPT is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_X86_PAE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=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_SPARSEMEM_STATIC=y
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_NR_QUICK=1
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+CONFIG_IRQBALANCE=y
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_KEXEC=y
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+CONFIG_HOTPLUG_CPU=y
+CONFIG_COMPAT_VDSO=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_SMP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_HIBERNATION_SMP_POSSIBLE=y
+# CONFIG_HIBERNATION is not set
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+# CONFIG_ACPI_PROCFS is not set
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+# CONFIG_ACPI_VIDEO is not set
+CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=y
+# CONFIG_ACPI_SBS is not set
+# CONFIG_APM is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPU_IDLE is not set
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_LEGACY=y
+CONFIG_HT_IRQ=y
+CONFIG_ISA_DMA_API=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+CONFIG_K8_NB=y
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+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_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=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+# CONFIG_ALI_FIR is not set
+# CONFIG_VLSI_FIR is not set
+# CONFIG_VIA_FIR is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+# CONFIG_MTD is not set
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_IBM_ASM is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ASUS_LAPTOP is not set
+# CONFIG_FUJITSU_LAPTOP is not set
+# CONFIG_MSI_LAPTOP is not set
+# CONFIG_SONY_LAPTOP is not set
+# CONFIG_THINKPAD_ACPI is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_IDEACPI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+CONFIG_BLK_DEV_CMD640=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+
+#
+# PCI IDE chipsets support
+#
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_IDEPCI_PCIBUS_ORDER=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+CONFIG_BLK_DEV_PIIX=y
+# CONFIG_BLK_DEV_IT8213 is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_TC86C001 is not set
+# CONFIG_IDE_ARM is not set
+
+#
+# Other IDE chipsets support
+#
+
+#
+# Note: most of these also require special kernel boot parameters
+#
+# CONFIG_BLK_DEV_4DRIVES is not set
+# CONFIG_BLK_DEV_ALI14XX is not set
+# CONFIG_BLK_DEV_DTC2278 is not set
+# CONFIG_BLK_DEV_HT6560B is not set
+# CONFIG_BLK_DEV_QD65XX is not set
+# CONFIG_BLK_DEV_UMC8672 is not set
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+CONFIG_SCSI_DPT_I2O=m
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_NET_SB1000 is not set
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_EL1 is not set
+# CONFIG_EL2 is not set
+# CONFIG_ELPLUS is not set
+# CONFIG_EL16 is not set
+# CONFIG_EL3 is not set
+# CONFIG_3C515 is not set
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
+# CONFIG_NET_VENDOR_RACAL is not set
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+CONFIG_TULIP=m
+CONFIG_TULIP_MWI=y
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_AT1700=m
+CONFIG_DEPCA=m
+CONFIG_HP100=m
+CONFIG_NET_ISA=y
+# CONFIG_E2100 is not set
+# CONFIG_EWRK3 is not set
+# CONFIG_EEXPRESS is not set
+# CONFIG_EEXPRESS_PRO is not set
+# CONFIG_HPLAN_PLUS is not set
+# CONFIG_HPLAN is not set
+# CONFIG_LP486E is not set
+# CONFIG_ETH16I is not set
+CONFIG_NE2000=y
+# CONFIG_ZNET is not set
+# CONFIG_SEEQ8005 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_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_PCNET32_NAPI=y
+CONFIG_AMD8111_ETH=m
+CONFIG_AMD8111E_NAPI=y
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_ADAPTEC_STARFIRE_NAPI=y
+CONFIG_AC3200=m
+CONFIG_APRICOT=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+CONFIG_FORCEDETH_NAPI=y
+CONFIG_CS89x0=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=y
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+CONFIG_8139TOO_PIO=y
+CONFIG_8139TOO_TUNE_TWISTER=y
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+CONFIG_SUNDANCE_MMIO=y
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_RHINE_NAPI=y
+CONFIG_SC92031=m
+# CONFIG_NET_POCKET is not set
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+CONFIG_ACENIC_OMIT_TIGON_I=y
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000_NAPI=y
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+# CONFIG_E1000E is not set
+# CONFIG_IP1000 is not set
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+CONFIG_R8169_NAPI=y
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+CONFIG_SKY2=m
+CONFIG_SK98LIN=m
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
+CONFIG_ATL1=m
+CONFIG_NETDEV_10000=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_IXGBE is not set
+# CONFIG_IXGB is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_NIU is not set
+# CONFIG_MLX4_CORE is not set
+# CONFIG_TEHUTI is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_LIBERTAS is not set
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+# CONFIG_PLX_HERMES is not set
+# CONFIG_TMD_HERMES is not set
+# CONFIG_NORTEL_HERMES is not set
+# CONFIG_PCI_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+# CONFIG_HOSTAP_PLX is not set
+# CONFIG_HOSTAP_PCI is not set
+# CONFIG_BCM43XX is not set
+# CONFIG_ZD1211RW is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER 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=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TABLET=y
+# CONFIG_TABLET_USB_ACECAD is not set
+# CONFIG_TABLET_USB_AIPTEK is not set
+# CONFIG_TABLET_USB_GTCO is not set
+# CONFIG_TABLET_USB_KBTAB is not set
+CONFIG_TABLET_USB_WACOM=y
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_PCSPKR is not set
+# CONFIG_INPUT_WISTRON_BTNS is not set
+# CONFIG_INPUT_ATLAS_BTNS is not set
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_GPIO is not set
+# CONFIG_NSC_GPIO is not set
+# CONFIG_CS5535_GPIO is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+# CONFIG_HANGCHECK_TIMER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+CONFIG_DEVPORT=y
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+CONFIG_SSB=m
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+# CONFIG_SSB_SILENT is not set
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_STRADIS is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_AGP=m
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_VIA=m
+CONFIG_AGP_EFFICEON=m
+CONFIG_DRM=m
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_I810 is not set
+# CONFIG_DRM_I830 is not set
+# CONFIG_DRM_I915 is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=m
+CONFIG_FB_CFB_COPYAREA=m
+CONFIG_FB_CFB_IMAGEBLIT=m
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+CONFIG_FB_UVESA=m
+# CONFIG_FB_VESA is not set
+# CONFIG_FB_EFI is not set
+# CONFIG_FB_HECUBA is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_LE80578 is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_CYBLA is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CORGI=m
+# CONFIG_BACKLIGHT_PROGEAR is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+# CONFIG_SND_PORTMAN2X4 is not set
+
+#
+# ISA devices
+#
+# CONFIG_SND_ADLIB is not set
+# CONFIG_SND_AD1816A is not set
+# CONFIG_SND_AD1848 is not set
+# CONFIG_SND_ALS100 is not set
+# CONFIG_SND_AZT2320 is not set
+# CONFIG_SND_CMI8330 is not set
+# CONFIG_SND_CS4231 is not set
+# CONFIG_SND_CS4232 is not set
+# CONFIG_SND_CS4236 is not set
+# CONFIG_SND_DT019X is not set
+# CONFIG_SND_ES968 is not set
+# CONFIG_SND_ES1688 is not set
+# CONFIG_SND_ES18XX is not set
+# CONFIG_SND_SC6000 is not set
+# CONFIG_SND_GUSCLASSIC is not set
+# CONFIG_SND_GUSEXTREME is not set
+# CONFIG_SND_GUSMAX is not set
+# CONFIG_SND_INTERWAVE is not set
+# CONFIG_SND_INTERWAVE_STB is not set
+# CONFIG_SND_OPL3SA2 is not set
+# CONFIG_SND_OPTI92X_AD1848 is not set
+# CONFIG_SND_OPTI92X_CS4231 is not set
+# CONFIG_SND_OPTI93X is not set
+# CONFIG_SND_MIRO is not set
+# CONFIG_SND_SB8 is not set
+# CONFIG_SND_SB16 is not set
+# CONFIG_SND_SBAWE is not set
+# CONFIG_SND_SGALAXY is not set
+# CONFIG_SND_SSCAPE is not set
+# CONFIG_SND_WAVEFRONT is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CS5530 is not set
+# CONFIG_SND_CS5535AUDIO is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+CONFIG_SND_INTEL8X0=y
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=y
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_SL811_HCD=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+CONFIG_VIRTUALIZATION=y
+# CONFIG_KVM is not set
+# CONFIG_LGUEST is not set
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+CONFIG_DMIID=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_KPROBES is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_EARLY_PRINTK=y
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+# CONFIG_CRYPTO_TWOFISH_586 is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_AES_586 is not set
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-c7x0 b/packages/linux/linux-rp-2.6.24/defconfig-c7x0
new file mode 100644
index 0000000000..a47e843a2e
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-c7x0
@@ -0,0 +1,1746 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 18:27:11 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_SHARPSL_25x=y
+# CONFIG_PXA_SHARPSL_27x is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_MACH_POODLE is not set
+CONFIG_MACH_CORGI=y
+CONFIG_MACH_SHEPHERD=y
+CONFIG_MACH_HUSKY=y
+# CONFIG_MACH_TOSA is not set
+CONFIG_PXA25x=y
+CONFIG_PXA_SHARP_C7xx=y
+CONFIG_PXA_SSP=y
+# CONFIG_PXA_KEYS is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+CONFIG_CPU_FREQ_PXA25x=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE 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=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_SHARP_SL=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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND 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=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X 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_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_ATMEL is not set
+CONFIG_AIRO_CS=m
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_CORGI=y
+# CONFIG_KEYBOARD_SPITZ is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
+CONFIG_FB_W100=y
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_AC97_CODEC is not set
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+CONFIG_SND_PXA2XX_SOC_CORGI=m
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_WM8731=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+# CONFIG_AC97_BUS is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_CORGI=y
+# CONFIG_LEDS_TOSA is not set
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-collie b/packages/linux/linux-rp-2.6.24/defconfig-collie
new file mode 100644
index 0000000000..e1b80f94ab
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-collie
@@ -0,0 +1,1370 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24
+# Sun Jan 27 14:12:17 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+# CONFIG_GENERIC_CLOCKEVENTS is not set
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+CONFIG_SA1100_COLLIE=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_SA1100=m
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttySA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=64M fbcon=rotate:1 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE 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=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# 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=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_SA1100_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_SHARP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+# CONFIG_PNP is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MISC_DEVICES is not set
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_IDE_ARM is not set
+
+#
+# Other IDE chipsets support
+#
+
+#
+# Note: most of these also require special kernel boot parameters
+#
+# CONFIG_BLK_DEV_4DRIVES is not set
+# CONFIG_BLK_DEV_ALI14XX is not set
+# CONFIG_BLK_DEV_DTC2278 is not set
+# CONFIG_BLK_DEV_HT6560B is not set
+# CONFIG_BLK_DEV_QD65XX is not set
+# CONFIG_BLK_DEV_UMC8672 is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_AX88796 is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA 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_NET_PCI is not set
+# CONFIG_B44 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=m
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_LOCOMO=m
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_LOCOMO is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_MCP=y
+CONFIG_MCP_SA11X0=y
+CONFIG_MCP_UCB1200=y
+CONFIG_MCP_UCB1200_TS=m
+# CONFIG_MCP_COLLIE_TS is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_CPIA is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_SA1100=y
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_LTV350QV is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LOCOMO=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# SPI devices
+#
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_USB_SUPPORT is not set
+CONFIG_MMC=m
+CONFIG_MMC_DEBUG=y
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_SPI=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+CONFIG_LEDS_LOCOMO=m
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+# CONFIG_CRYPTO_LZO is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-htcuniversal b/packages/linux/linux-rp-2.6.24/defconfig-htcuniversal
new file mode 100644
index 0000000000..f121ddea90
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-htcuniversal
@@ -0,0 +1,1307 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 21:46:02 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=16
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_DMABOUNCE=y
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+CONFIG_ARCH_LUBBOCK=y
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA25x=y
+# CONFIG_PXA_KEYS is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+CONFIG_SA1111=y
+CONFIG_FORCE_MAX_ZONEORDER=9
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+CONFIG_CPU_FREQ_PXA25x=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+# 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=y
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=y
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_PXA_FICP=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+# 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_SHARP_SL is not set
+# 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=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+# 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
+
+#
+# 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 is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE 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_NETDEVICES_MULTIQUEUE is not set
+# 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_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+CONFIG_ACX=m
+CONFIG_ACX_MEM=y
+# CONFIG_ACX_CS is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_POWER is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_ASIC3=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=32
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+CONFIG_W1=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2482 is not set
+CONFIG_W1_MASTER_DS1WM=y
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+CONFIG_W1_SLAVE_DS2760=y
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=y
+CONFIG_APM_POWER=y
+CONFIG_BATTERY_DS2760=y
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_HTC_ASIC3=y
+CONFIG_HTC_ASIC3_DS1WM=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+# CONFIG_FB_PXA_OVERLAY is not set
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_PXA is not set
+CONFIG_MMC_ASIC3=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+CONFIG_LEDS_ASIC3=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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 is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 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=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_CBC is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-hx2000 b/packages/linux/linux-rp-2.6.24/defconfig-hx2000
new file mode 100644
index 0000000000..41eee3854a
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-hx2000
@@ -0,0 +1,1733 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 18:10:53 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_MACH_HX2750=y
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+CONFIG_PXA_KEYS=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+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_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=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# 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
+
+#
+# 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=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X 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_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_ATMEL is not set
+CONFIG_AIRO_CS=m
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+# CONFIG_ZD1211RW is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_PXA27x=m
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_TSC2101=y
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_MFD_TSC2101=y
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-poodle b/packages/linux/linux-rp-2.6.24/defconfig-poodle
new file mode 100644
index 0000000000..841bcf285e
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-poodle
@@ -0,0 +1,1752 @@
+
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Fri Jan 25 22:13:14 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA_SHARPSL_25x=y
+# CONFIG_PXA_SHARPSL_27x is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+CONFIG_MACH_POODLE=y
+# CONFIG_MACH_CORGI is not set
+# CONFIG_MACH_SHEPHERD is not set
+# CONFIG_MACH_HUSKY is not set
+# CONFIG_MACH_TOSA is not set
+CONFIG_PXA25x=y
+CONFIG_PXA_SSP=y
+# CONFIG_PXA_KEYS is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+CONFIG_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+CONFIG_CPU_FREQ_PXA25x=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE 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=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_SHARP_SL=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=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND 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=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_IDE=m
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X 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_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_ATMEL is not set
+CONFIG_AIRO_CS=m
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+# CONFIG_ZD1211RW is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_LOCOMO=y
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_CORGI is not set
+# CONFIG_KEYBOARD_SPITZ is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+# CONFIG_FB_PXA_OVERLAY is not set
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_W100 is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LOCOMO=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+CONFIG_SND_PXA2XX_SOC_POODLE=m
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_WM8731=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_LOCOMO=y
+# CONFIG_LEDS_TOSA is not set
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-qemuarm b/packages/linux/linux-rp-2.6.24/defconfig-qemuarm
new file mode 100644
index 0000000000..d2b8265214
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-qemuarm
@@ -0,0 +1,1582 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 22:28:17 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_GPIO is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+CONFIG_ARCH_VERSATILE=y
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Versatile platform type
+#
+CONFIG_ARCH_VERSATILE_PB=y
+# CONFIG_MACH_VERSATILE_AB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+# CONFIG_CPU_V6 is not set
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_ARM_VIC=y
+CONFIG_ICST307=y
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+CONFIG_PCI=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_LEDS=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyAMA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_VFP=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+# CONFIG_APM_EMULATION is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+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_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=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_VLSI_FIR is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_AFS_PARTS=y
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY 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_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# 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_ARM_INTEGRATOR is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# 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=m
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=m
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=51200
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+CONFIG_SCSI_SYM53C8XX_2=y
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 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_NET_PCI is not set
+# CONFIG_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+# CONFIG_PLX_HERMES is not set
+# CONFIG_TMD_HERMES is not set
+# CONFIG_NORTEL_HERMES is not set
+# CONFIG_PCI_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+# CONFIG_HOSTAP_PLX is not set
+# CONFIG_HOSTAP_PCI is not set
+# CONFIG_BCM43XX is not set
+# CONFIG_ZD1211RW is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TABLET=y
+# CONFIG_TABLET_USB_ACECAD is not set
+# CONFIG_TABLET_USB_AIPTEK is not set
+# CONFIG_TABLET_USB_GTCO is not set
+# CONFIG_TABLET_USB_KBTAB is not set
+CONFIG_TABLET_USB_WACOM=y
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_AMBAKMI=y
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_STRADIS is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+CONFIG_FB_ARMCLCD=y
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CORGI=m
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+CONFIG_USB_SL811_HCD=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_RTC_DRV_PL031 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-qemux86 b/packages/linux/linux-rp-2.6.24/defconfig-qemux86
new file mode 100644
index 0000000000..c143746db8
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-qemux86
@@ -0,0 +1,2039 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 18:20:37 2008
+#
+# CONFIG_64BIT is not set
+CONFIG_X86_32=y
+# CONFIG_X86_64 is not set
+CONFIG_X86=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_QUICKLIST=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+# CONFIG_GENERIC_TIME_VSYSCALL is not set
+CONFIG_ARCH_SUPPORTS_OPROFILE=y
+# CONFIG_ZONE_DMA32 is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+# CONFIG_AUDIT_ARCH is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_X86_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=15
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_X86_VSMP is not set
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+# CONFIG_PARAVIRT_GUEST is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+CONFIG_M686=y
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_GENERIC_CPU is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_X86_XADD=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_GOOD_APIC=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=4
+# CONFIG_HPET_TIMER is not set
+CONFIG_NR_CPUS=8
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_NONFATAL=y
+CONFIG_X86_MCE_P4THERMAL=y
+CONFIG_VM86=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_X86_REBOOTFIXUPS is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_3G_OPT is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_2G_OPT is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_X86_PAE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=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_SPARSEMEM_STATIC=y
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_NR_QUICK=1
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+CONFIG_IRQBALANCE=y
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_KEXEC=y
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+CONFIG_HOTPLUG_CPU=y
+CONFIG_COMPAT_VDSO=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_SMP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_HIBERNATION_SMP_POSSIBLE=y
+# CONFIG_HIBERNATION is not set
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+# CONFIG_ACPI_PROCFS is not set
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+# CONFIG_ACPI_VIDEO is not set
+CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=y
+# CONFIG_ACPI_SBS is not set
+# CONFIG_APM is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPU_IDLE is not set
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+# CONFIG_PCI_MSI is not set
+CONFIG_PCI_LEGACY=y
+CONFIG_HT_IRQ=y
+CONFIG_ISA_DMA_API=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+CONFIG_K8_NB=y
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+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_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=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_GRE=m
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+# CONFIG_NF_CONNTRACK_H323 is not set
+CONFIG_NF_CONNTRACK_IRC=m
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+CONFIG_NF_CONNTRACK_PPTP=m
+# CONFIG_NF_CONNTRACK_SANE is not set
+# CONFIG_NF_CONNTRACK_SIP is not set
+CONFIG_NF_CONNTRACK_TFTP=m
+# CONFIG_NF_CT_NETLINK is not set
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+# CONFIG_IP_NF_TARGET_SAME is not set
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+# CONFIG_NF_NAT_H323 is not set
+# CONFIG_NF_NAT_SIP is not set
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_NF_CONNTRACK_IPV6 is not set
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+# CONFIG_ALI_FIR is not set
+# CONFIG_VLSI_FIR is not set
+# CONFIG_VIA_FIR is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+# CONFIG_MTD is not set
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_IBM_ASM is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ASUS_LAPTOP is not set
+# CONFIG_FUJITSU_LAPTOP is not set
+# CONFIG_MSI_LAPTOP is not set
+# CONFIG_SONY_LAPTOP is not set
+# CONFIG_THINKPAD_ACPI is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_IDEACPI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+CONFIG_BLK_DEV_CMD640=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+
+#
+# PCI IDE chipsets support
+#
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_IDEPCI_PCIBUS_ORDER=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+CONFIG_BLK_DEV_PIIX=y
+# CONFIG_BLK_DEV_IT8213 is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_TC86C001 is not set
+# CONFIG_IDE_ARM is not set
+
+#
+# Other IDE chipsets support
+#
+
+#
+# Note: most of these also require special kernel boot parameters
+#
+# CONFIG_BLK_DEV_4DRIVES is not set
+# CONFIG_BLK_DEV_ALI14XX is not set
+# CONFIG_BLK_DEV_DTC2278 is not set
+# CONFIG_BLK_DEV_HT6560B is not set
+# CONFIG_BLK_DEV_QD65XX is not set
+# CONFIG_BLK_DEV_UMC8672 is not set
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+CONFIG_SCSI_DPT_I2O=m
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_NET_SB1000 is not set
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_EL1 is not set
+# CONFIG_EL2 is not set
+# CONFIG_ELPLUS is not set
+# CONFIG_EL16 is not set
+# CONFIG_EL3 is not set
+# CONFIG_3C515 is not set
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
+# CONFIG_NET_VENDOR_RACAL is not set
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+CONFIG_TULIP=m
+CONFIG_TULIP_MWI=y
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_AT1700=m
+CONFIG_DEPCA=m
+CONFIG_HP100=m
+CONFIG_NET_ISA=y
+# CONFIG_E2100 is not set
+# CONFIG_EWRK3 is not set
+# CONFIG_EEXPRESS is not set
+# CONFIG_EEXPRESS_PRO is not set
+# CONFIG_HPLAN_PLUS is not set
+# CONFIG_HPLAN is not set
+# CONFIG_LP486E is not set
+# CONFIG_ETH16I is not set
+CONFIG_NE2000=y
+# CONFIG_ZNET is not set
+# CONFIG_SEEQ8005 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_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_PCNET32_NAPI=y
+CONFIG_AMD8111_ETH=m
+CONFIG_AMD8111E_NAPI=y
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_ADAPTEC_STARFIRE_NAPI=y
+CONFIG_AC3200=m
+CONFIG_APRICOT=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+CONFIG_FORCEDETH_NAPI=y
+CONFIG_CS89x0=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=y
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+CONFIG_SUNDANCE_MMIO=y
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_RHINE_NAPI=y
+CONFIG_SC92031=m
+# CONFIG_NET_POCKET is not set
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+CONFIG_ACENIC_OMIT_TIGON_I=y
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000_NAPI=y
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+# CONFIG_E1000E is not set
+# CONFIG_IP1000 is not set
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+CONFIG_R8169_NAPI=y
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+CONFIG_SKY2=m
+CONFIG_SK98LIN=m
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
+CONFIG_ATL1=m
+CONFIG_NETDEV_10000=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_IXGBE is not set
+# CONFIG_IXGB is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_NIU is not set
+# CONFIG_MLX4_CORE is not set
+# CONFIG_TEHUTI is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_LIBERTAS is not set
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+# CONFIG_PLX_HERMES is not set
+# CONFIG_TMD_HERMES is not set
+# CONFIG_NORTEL_HERMES is not set
+# CONFIG_PCI_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+# CONFIG_HOSTAP_PLX is not set
+# CONFIG_HOSTAP_PCI is not set
+# CONFIG_BCM43XX is not set
+# CONFIG_ZD1211RW is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER 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=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TABLET=y
+# CONFIG_TABLET_USB_ACECAD is not set
+# CONFIG_TABLET_USB_AIPTEK is not set
+# CONFIG_TABLET_USB_GTCO is not set
+# CONFIG_TABLET_USB_KBTAB is not set
+CONFIG_TABLET_USB_WACOM=y
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_PCSPKR is not set
+# CONFIG_INPUT_WISTRON_BTNS is not set
+# CONFIG_INPUT_ATLAS_BTNS is not set
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_GPIO is not set
+# CONFIG_NSC_GPIO is not set
+# CONFIG_CS5535_GPIO is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+# CONFIG_HANGCHECK_TIMER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+CONFIG_DEVPORT=y
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+CONFIG_SSB=m
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+# CONFIG_SSB_SILENT is not set
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_STRADIS is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_AGP=m
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_VIA=m
+CONFIG_AGP_EFFICEON=m
+CONFIG_DRM=m
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_I810 is not set
+# CONFIG_DRM_I830 is not set
+# CONFIG_DRM_I915 is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=m
+CONFIG_FB_CFB_COPYAREA=m
+CONFIG_FB_CFB_IMAGEBLIT=m
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+CONFIG_FB_UVESA=m
+# CONFIG_FB_VESA is not set
+# CONFIG_FB_EFI is not set
+# CONFIG_FB_HECUBA is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_LE80578 is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_CYBLA is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CORGI=m
+# CONFIG_BACKLIGHT_PROGEAR is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+# CONFIG_SND_PORTMAN2X4 is not set
+
+#
+# ISA devices
+#
+# CONFIG_SND_ADLIB is not set
+# CONFIG_SND_AD1816A is not set
+# CONFIG_SND_AD1848 is not set
+# CONFIG_SND_ALS100 is not set
+# CONFIG_SND_AZT2320 is not set
+# CONFIG_SND_CMI8330 is not set
+# CONFIG_SND_CS4231 is not set
+# CONFIG_SND_CS4232 is not set
+# CONFIG_SND_CS4236 is not set
+# CONFIG_SND_DT019X is not set
+# CONFIG_SND_ES968 is not set
+# CONFIG_SND_ES1688 is not set
+# CONFIG_SND_ES18XX is not set
+# CONFIG_SND_SC6000 is not set
+# CONFIG_SND_GUSCLASSIC is not set
+# CONFIG_SND_GUSEXTREME is not set
+# CONFIG_SND_GUSMAX is not set
+# CONFIG_SND_INTERWAVE is not set
+# CONFIG_SND_INTERWAVE_STB is not set
+# CONFIG_SND_OPL3SA2 is not set
+# CONFIG_SND_OPTI92X_AD1848 is not set
+# CONFIG_SND_OPTI92X_CS4231 is not set
+# CONFIG_SND_OPTI93X is not set
+# CONFIG_SND_MIRO is not set
+# CONFIG_SND_SB8 is not set
+# CONFIG_SND_SB16 is not set
+# CONFIG_SND_SBAWE is not set
+# CONFIG_SND_SGALAXY is not set
+# CONFIG_SND_SSCAPE is not set
+# CONFIG_SND_WAVEFRONT is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CS5530 is not set
+# CONFIG_SND_CS5535AUDIO is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+CONFIG_SND_INTEL8X0=y
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=y
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_SL811_HCD=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+CONFIG_VIRTUALIZATION=y
+# CONFIG_KVM is not set
+# CONFIG_LGUEST is not set
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+CONFIG_DMIID=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_KPROBES is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_EARLY_PRINTK=y
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+# CONFIG_CRYPTO_TWOFISH_586 is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_AES_586 is not set
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-spitz b/packages/linux/linux-rp-2.6.24/defconfig-spitz
new file mode 100644
index 0000000000..0322da0ec1
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-spitz
@@ -0,0 +1,1741 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 18:32:23 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
+# CONFIG_PXA_SHARPSL_25x is not set
+CONFIG_PXA_SHARPSL_27x=y
+# CONFIG_MACH_HX2750 is not set
+CONFIG_MACH_AKITA=y
+CONFIG_MACH_SPITZ=y
+CONFIG_MACH_BORZOI=y
+CONFIG_PXA27x=y
+CONFIG_PXA_SHARP_Cxx00=y
+CONFIG_PXA_SSP=y
+# CONFIG_PXA_KEYS is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw fbcon=rotate:1 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE 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=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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=m
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# 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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+CONFIG_MTD_ROM=m
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_SHARP_SL=m
+# 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=m
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=m
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=m
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND 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=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X 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_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_ATMEL is not set
+CONFIG_AIRO_CS=m
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_CORGI is not set
+CONFIG_KEYBOARD_SPITZ=y
+CONFIG_SHARPSL_RC=m
+# CONFIG_KEYBOARD_PXA27x is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_W100 is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_AC97_CODEC is not set
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+CONFIG_SND_PXA2XX_SOC_SPITZ=m
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_WM8750=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+# CONFIG_AC97_BUS is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_SPITZ=y
+# CONFIG_LEDS_TOSA is not set
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.24/defconfig-zylonite b/packages/linux/linux-rp-2.6.24/defconfig-zylonite
new file mode 100644
index 0000000000..0cf0b23db5
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/defconfig-zylonite
@@ -0,0 +1,1740 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc8
+# Sun Jan 20 18:42:35 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+
+#
+# Supported PXA3xx Processor Variants
+#
+CONFIG_CPU_PXA300=y
+CONFIG_CPU_PXA310=y
+CONFIG_CPU_PXA320=y
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_MACH_EM_X270 is not set
+CONFIG_MACH_ZYLONITE=y
+# CONFIG_MACH_ARMCORE is not set
+CONFIG_PXA3xx=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSC3=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_IO_36=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,38400 root=/dev/mtdblock2 rootfstype=jffs2 mem=64M dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE 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=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_IPTABLES 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_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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+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_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# 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=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND 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=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X 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_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_ATMEL is not set
+CONFIG_AIRO_CS=m
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_CS=m
+# CONFIG_ZD1211RW is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+CONFIG_USB_NET_CDC_SUBSET=m
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+# CONFIG_USB_BELKIN is not set
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+# CONFIG_USB_NET_ZAURUS is not set
+# CONFIG_NET_PCMCIA is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER 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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_DEFERRED_IO is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_LCD_QVGA is not set
+CONFIG_FB_PXA_LCD_VGA=y
+CONFIG_FB_PXA_OVERLAY=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CORGI=m
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGET is not set
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_M66592=y
+CONFIG_USB_M66592=y
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_PXA=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SA1100=y
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/hostap-monitor-mode.patch b/packages/linux/linux-rp-2.6.24/hostap-monitor-mode.patch
index 641fd19e50..641fd19e50 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/hostap-monitor-mode.patch
+++ b/packages/linux/linux-rp-2.6.24/hostap-monitor-mode.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni-acx.patch b/packages/linux/linux-rp-2.6.24/htcuni-acx.patch
index 1ccebddc8d..1ccebddc8d 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni-acx.patch
+++ b/packages/linux/linux-rp-2.6.24/htcuni-acx.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni.patch b/packages/linux/linux-rp-2.6.24/htcuni.patch
index f462650566..f462650566 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/htcuni.patch
+++ b/packages/linux/linux-rp-2.6.24/htcuni.patch
diff --git a/packages/linux/linux-rp-2.6.24/mtd-module.patch b/packages/linux/linux-rp-2.6.24/mtd-module.patch
new file mode 100644
index 0000000000..4aa2f22aee
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/mtd-module.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.23/drivers/mtd/maps/Kconfig
+===================================================================
+--- linux-2.6.23/drivers/mtd/maps/Kconfig
++++ linux-2.6.23/drivers/mtd/maps/Kconfig
+@@ -600,7 +600,7 @@
+ default "4"
+
+ config MTD_SHARP_SL
+- bool "ROM mapped on Sharp SL Series"
++ tristate "ROM mapped on Sharp SL Series"
+ depends on ARCH_PXA
+ help
+ This enables access to the flash chip on the Sharp SL Series of PDAs.
diff --git a/packages/linux/linux-rp-2.6.24/poodle_ts.patch b/packages/linux/linux-rp-2.6.24/poodle_ts.patch
new file mode 100644
index 0000000000..b10ee2eab8
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/poodle_ts.patch
@@ -0,0 +1,22 @@
+Index: linux-2.6.23/arch/arm/mach-pxa/poodle.c
+===================================================================
+--- linux-2.6.23.orig/arch/arm/mach-pxa/poodle.c 2008-01-25 12:10:10.000000000 -0800
++++ linux-2.6.23/arch/arm/mach-pxa/poodle.c 2008-01-25 12:11:58.000000000 -0800
+@@ -166,7 +166,7 @@
+ },
+ };
+
+-static unsigned long poodle_get_hsync_len(void)
++static unsigned long poodle_get_hsync_invperiod(void)
+ {
+ return 0;
+ }
+@@ -176,7 +176,7 @@
+ }
+
+ static struct corgits_machinfo poodle_ts_machinfo = {
+- .get_hsync_len = poodle_get_hsync_len,
++ .get_hsync_invperiod = poodle_get_hsync_invperiod,
+ .put_hsync = poodle_null_hsync,
+ .wait_hsync = poodle_null_hsync,
+ };
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.24/pxa-serial-hack.patch
index bf20f46a05..bf20f46a05 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa-serial-hack.patch
+++ b/packages/linux/linux-rp-2.6.24/pxa-serial-hack.patch
diff --git a/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch b/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch
new file mode 100644
index 0000000000..6447a0b104
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch
@@ -0,0 +1,41 @@
+List: linux-arm-kernel
+Subject: [PATCH] Fix PXA27x resume
+From: Russell King - ARM Linux <linux@arm.linux.org.uk>
+Date: 2008-01-21 13:53:31
+Message-ID: 20080121135331.GC30149@flint.arm.linux.org.uk
+[Download message RAW]
+
+When PXA27x wakes up, tick_resume_oneshot() tries to set a timer
+interrupt to occur immediately. Since PXA27x requires at least
+MIN_OSCR_DELTA, this causes us to flag an error.
+
+tick_program_event() then increments the next event time by
+min_delta_ns. However, by the time we get back to programming
+the next event, the OSCR has incremented such that we fail again.
+We repeatedly retry, but the OSCR is too fast for us - we never
+catch up, so we never break out of the loop - resulting in us
+never apparantly resuming.
+
+Fix this by doubling min_delta_ns.
+
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+
+diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
+index ac0bbad..7b7c017 100644
+--- a/arch/arm/mach-pxa/time.c
++++ b/arch/arm/mach-pxa/time.c
+@@ -169,7 +169,7 @@ static void __init pxa_timer_init(void)
+ ckevt_pxa_osmr0.max_delta_ns =
+ clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0);
+ ckevt_pxa_osmr0.min_delta_ns =
+- clockevent_delta2ns(MIN_OSCR_DELTA, &ckevt_pxa_osmr0) + 1;
++ clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1;
+
+ cksrc_pxa_oscr0.mult =
+ clocksource_hz2mult(clock_tick_rate, cksrc_pxa_oscr0.shift);
+
+-------------------------------------------------------------------
+List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
+FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
+Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
+
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa_fb_overlay.patch b/packages/linux/linux-rp-2.6.24/pxa_fb_overlay.patch
index 49c59b3275..49c59b3275 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/pxa_fb_overlay.patch
+++ b/packages/linux/linux-rp-2.6.24/pxa_fb_overlay.patch
diff --git a/packages/linux/linux-rp-2.6.24/pxafb.patch b/packages/linux/linux-rp-2.6.24/pxafb.patch
new file mode 100644
index 0000000000..7fe693cd91
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/pxafb.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.23/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.23.orig/drivers/video/pxafb.c 2008-01-25 16:25:21.000000000 -0800
++++ linux-2.6.23/drivers/video/pxafb.c 2008-01-25 16:32:14.000000000 -0800
+@@ -1194,7 +1194,7 @@
+ if ((clkinfo->old == 13000))
+ break;
+
+- pcd = get_pcd(fbi->fb.var.pixclock);
++ pcd = get_pcd(fbi,fbi->fb.var.pixclock);
+ lccr3 = fbi->reg_lccr3;
+ set_hsync_time(fbi, pcd);
+ fbi->reg_lccr3 = (fbi->reg_lccr3 & ~0xff) | LCCR3_PixClkDiv(pcd);
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-rp-2.6.24/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
index b513ba1466..b513ba1466 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
+++ b/packages/linux/linux-rp-2.6.24/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
diff --git a/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch b/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch
new file mode 100644
index 0000000000..453010a197
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/sharpsl-rc-r1.patch
@@ -0,0 +1,519 @@
+Index: linux-2.6.24/arch/arm/mach-pxa/spitz.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz.c 2008-01-27 02:10:17.000000000 +0000
++++ linux-2.6.24/arch/arm/mach-pxa/spitz.c 2008-01-27 02:10:52.000000000 +0000
+@@ -259,6 +259,13 @@
+ .id = -1,
+ };
+
++/*
++ * Spitz Remote Control Device
++ */
++static struct platform_device sharpsl_rc_device = {
++ .name = "sharpsl-remote-control",
++ .id = -1,
++};
+
+ /*
+ * Spitz LEDs
+@@ -548,6 +555,7 @@
+ &spitzscoop_device,
+ &spitzssp_device,
+ &spitzkbd_device,
++ &sharpsl_rc_device,
+ &spitzts_device,
+ &spitzbl_device,
+ &spitzled_device,
+Index: linux-2.6.24/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.24.orig/drivers/input/keyboard/Kconfig 2008-01-27 02:10:20.000000000 +0000
++++ linux-2.6.24/drivers/input/keyboard/Kconfig 2008-01-27 02:10:52.000000000 +0000
+@@ -154,6 +154,17 @@
+ To compile this driver as a module, choose M here: the
+ module will be called spitzkbd.
+
++config SHARPSL_RC
++ tristate "Sharp SL-Cxx00 Remote Control"
++ depends on PXA_SHARPSL
++ default y
++ help
++ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
++ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
++
++ To compile this driver as a module, choose M here: the
++ module will be called sharpsl_rc.
++
+ config KEYBOARD_AMIGA
+ tristate "Amiga keyboard"
+ depends on AMIGA
+Index: linux-2.6.24/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.24.orig/drivers/input/keyboard/Makefile 2008-01-27 02:10:20.000000000 +0000
++++ linux-2.6.24/drivers/input/keyboard/Makefile 2008-01-27 02:11:43.000000000 +0000
+@@ -15,6 +15,7 @@
+ obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
+ obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
+ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
++obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
+ obj-$(CONFIG_KEYBOARD_ASIC3) += asic3_keys.o
+ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
+ obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
+Index: linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.24/drivers/input/keyboard/sharpsl_rc.c 2008-01-27 02:10:52.000000000 +0000
+@@ -0,0 +1,291 @@
++/*
++ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
++ *
++ * Copyright (c) 2004-2005 Richard Purdie
++ *
++ * Based on corgikbd.c and Sharp's RC driver
++ *
++ * 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.
++ *
++ */
++
++#define DEBUG 1
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/init.h>
++#include <linux/input.h>
++#include <linux/interrupt.h>
++#include <linux/jiffies.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++
++#ifdef CONFIG_MACH_SPITZ
++#include <asm/arch/spitz.h>
++#endif
++#ifdef CONFIG_MACH_CORGI
++#include <asm/arch/corgi.h>
++#endif
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/hardware/scoop.h>
++#include <asm/arch/sharpsl.h>
++#include <asm/hardware/sharpsl_pm.h>
++
++#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
++
++struct remote_control_key {
++ unsigned char min;
++ unsigned char max;
++ unsigned char key;
++};
++
++#ifdef CONFIG_MACH_SPITZ
++#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
++#define REMOTE_SCOOP_DEVICE spitzscoop2_device
++#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
++#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
++static struct remote_control_key remote_keys[] = {
++ { 25, 35, KEY_STOPCD},
++ { 55, 65, KEY_PLAYPAUSE},
++ { 85, 95, KEY_NEXTSONG},
++ { 115, 125, KEY_VOLUMEUP},
++ { 145, 155, KEY_PREVIOUSSONG},
++ { 180, 190, KEY_MUTE},
++ { 215, 225, KEY_VOLUMEDOWN},
++};
++#endif
++#ifdef CONFIG_MACH_CORGI
++#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
++#define REMOTE_SCOOP_DEVICE corgiscoop_device
++#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
++#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
++static struct remote_control_key remote_keys[] = {
++ //These need to be fixed for the CE-RH1's values
++ { 25, 35, KEY_STOPCD},
++ { 55, 65, KEY_PLAYPAUSE},
++ { 85, 95, KEY_NEXTSONG},
++ { 115, 125, KEY_VOLUMEUP},
++ { 145, 155, KEY_PREVIOUSSONG},
++ { 180, 190, KEY_MUTE},
++ { 215, 225, KEY_VOLUMEDOWN},
++};
++#endif
++
++#define RELEASE_HI 230
++#define MAX_EARPHONE 6
++#define RC_POLL_MS 10
++#define RC_FINISH_MS 500
++#define WAIT_STATE 3
++#define NOISE_THRESHOLD 100
++
++struct sharpsl_rc {
++ struct input_dev *input;
++ struct device *dev;
++
++ spinlock_t lock;
++ struct timer_list rctimer;
++ struct timer_list rctimer_finish;
++
++ unsigned int handling_press;
++ unsigned int noise;
++ unsigned int state;
++ unsigned int last_key;
++};
++
++static int get_remocon_raw(void)
++{
++ int i, val;
++
++ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
++ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
++ if (val >= remote_keys[i].min
++ && val <= remote_keys[i].max) {
++ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
++ return remote_keys[i].key;
++ }
++ }
++ return 0;
++}
++
++static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct sharpsl_rc *data = dev_id;
++ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
++ if (!data->handling_press) {
++ DPRINTK("handling interrupt");
++ data->handling_press = 1;
++ data->noise = 0;
++ data->state = 0;
++ data->last_key = 0;
++
++ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
++
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ }
++ return IRQ_HANDLED;
++}
++
++static void sharpsl_rc_timer_callback(unsigned long dataPtr)
++{
++ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
++ int timer = 1;
++ int key = get_remocon_raw();
++ DPRINTK("timer callback, key: %d", key);
++
++ //wait for value to stabilize
++ if (data->state < WAIT_STATE) {
++ if (data->last_key != key) {
++ ++data->noise;
++ if (data->noise > NOISE_THRESHOLD) {
++ DPRINTK("too much noise, bailing");
++ timer = 0;
++ }
++ data->state = 0;
++ } else {
++ ++data->state;
++ }
++ data->last_key = key;
++
++ //stable value, send event
++ } else if (data->state == WAIT_STATE) {
++ data->noise = 0;
++ //non-key returned, skip the rest of the states and bail now
++ if (data->last_key == 0) {
++ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
++ timer = 0;
++ //send button press
++ } else {
++ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
++ input_report_key(data->input, data->last_key, 1);
++ }
++ ++data->state;
++
++ //wait until key is released
++ } else if (data->state < WAIT_STATE * 2) {
++ if (key == data->last_key
++ && data->noise < NOISE_THRESHOLD) {
++ data->state = WAIT_STATE + 1;
++ ++data->noise;
++ } else {
++ ++data->state;
++ }
++ //key is released, send event
++ } else {
++ //send button release
++ DPRINTK("release key %d", data->last_key);
++ input_report_key(data->input, data->last_key, 0);
++ timer = 0;
++ }
++ if (timer) {
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ } else {
++ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
++ data->handling_press = 0;
++ }
++}
++
++static int __init sharpsl_rc_probe(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc;
++ struct input_dev *input_dev;
++ int i, ret;
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
++
++ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!sharpsl_rc || !input_dev) {
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(pdev, sharpsl_rc);
++
++ sharpsl_rc->dev = &pdev->dev;
++ sharpsl_rc->input = input_dev;
++ spin_lock_init(&sharpsl_rc->lock);
++
++ /* Init Remote Control Timer */
++ init_timer(&sharpsl_rc->rctimer);
++ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
++ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
++
++ input_dev->name = "Sharp Remote Control CE-RHX";
++ input_dev->phys = "sharpsl_rc/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = sharpsl_rc;
++
++ input_dev->evbit[0] = BIT(EV_KEY);
++
++ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
++ set_bit(remote_keys[i].key, input_dev->keybit);
++
++ input_register_device(sharpsl_rc->input);
++
++ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
++ ret = request_irq(REMOTE_IRQ_INT,
++ sharpsl_rc_interrupt,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
++ "sharpsl_rc",
++ sharpsl_rc);
++ if (ret < 0) {
++ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return ret;
++ }
++
++ return 0;
++}
++
++static int sharpsl_rc_remove(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
++
++ free_irq(REMOTE_IRQ_INT, sharpsl_rc);
++ del_timer_sync(&sharpsl_rc->rctimer);
++ input_unregister_device(sharpsl_rc->input);
++ kfree(sharpsl_rc);
++
++ return 0;
++}
++
++static struct platform_driver sharpsl_rc_driver = {
++ .probe = sharpsl_rc_probe,
++ .remove = sharpsl_rc_remove,
++ .suspend = NULL,
++ .resume = NULL,
++ .driver = {
++ .name = "sharpsl-remote-control",
++ },
++};
++
++static int __devinit sharpsl_rc_init(void)
++{
++ printk("sharpsl_rc_init\n");
++ return platform_driver_register(&sharpsl_rc_driver);
++}
++
++static void __exit sharpsl_rc_exit(void)
++{
++ printk("sharpsl_rc_exit\n");
++ platform_driver_unregister(&sharpsl_rc_driver);
++}
++
++module_init(sharpsl_rc_init);
++module_exit(sharpsl_rc_exit);
++
++MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
++MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
++MODULE_DESCRIPTION("SharpSL Remote Control Driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.24/drivers/input/keyboard/spitzkbd.c
+===================================================================
+--- linux-2.6.24.orig/drivers/input/keyboard/spitzkbd.c 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/drivers/input/keyboard/spitzkbd.c 2008-01-27 02:10:52.000000000 +0000
+@@ -19,6 +19,7 @@
+ #include <linux/jiffies.h>
+ #include <linux/module.h>
+ #include <linux/slab.h>
++#include <linux/kmod.h>
+
+ #include <asm/arch/spitz.h>
+ #include <asm/arch/hardware.h>
+@@ -279,13 +280,21 @@
+ static int sharpsl_hinge_state;
+ static int hinge_count;
+
++void spitzkbd_handle_sharpsl_rc(void *arg) {
++ request_module("sharpsl_rc");
++}
++
++DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
++
+ static void spitzkbd_hinge_timer(unsigned long data)
+ {
+ struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
+ unsigned long state;
+ unsigned long flags;
++ unsigned int headphone, remote;
+
+ state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
++ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
+ state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
+ if (state != sharpsl_hinge_state) {
+ hinge_count = 0;
+@@ -299,9 +308,18 @@
+
+ input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
+ input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
+- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
++
++ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
++ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
++
++ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
++ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
+ input_sync(spitzkbd_data->input);
+
++ if (remote) {
++ schedule_work(&spitzkbd_work);
++ }
++
+ spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
+ } else {
+ mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+@@ -395,6 +413,7 @@
+ set_bit(SW_LID, input_dev->swbit);
+ set_bit(SW_TABLET_MODE, input_dev->swbit);
+ set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
++ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
+
+ err = input_register_device(input_dev);
+ if (err)
+@@ -432,9 +451,12 @@
+ request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd SWB", spitzkbd);
+- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd HP", spitzkbd);
++ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
++ "Spitzkbd HP Type", spitzkbd);
+
+ return 0;
+
+@@ -455,6 +477,7 @@
+ free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
++ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
+
+ del_timer_sync(&spitzkbd->htimer);
+Index: linux-2.6.24/arch/arm/mach-pxa/sharpsl.h
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/sharpsl.h 2008-01-27 02:10:15.000000000 +0000
++++ linux-2.6.24/arch/arm/mach-pxa/sharpsl.h 2008-01-27 02:10:52.000000000 +0000
+@@ -37,15 +37,10 @@
+ */
+ #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
+
+-/* MAX1111 Channel Definitions */
+-#define MAX1111_BATT_VOLT 4u
+-#define MAX1111_BATT_TEMP 2u
+-#define MAX1111_ACIN_VOLT 6u
+-
+ extern struct battery_thresh spitz_battery_levels_acin[];
+ extern struct battery_thresh spitz_battery_levels_noac[];
+ void sharpsl_pm_pxa_init(void);
+ void sharpsl_pm_pxa_remove(void);
+-int sharpsl_pm_pxa_read_max1111(int channel);
++
+
+
+Index: linux-2.6.24/arch/arm/mach-pxa/sharpsl_pm.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/sharpsl_pm.c 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/arch/arm/mach-pxa/sharpsl_pm.c 2008-01-27 02:10:52.000000000 +0000
+@@ -135,6 +135,8 @@
+ | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
+ }
+
++EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
++
+ void sharpsl_pm_pxa_init(void)
+ {
+ pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
+Index: linux-2.6.24/include/asm-arm/hardware/sharpsl_pm.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/hardware/sharpsl_pm.h 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/include/asm-arm/hardware/sharpsl_pm.h 2008-01-27 02:10:52.000000000 +0000
+@@ -104,3 +104,10 @@
+ irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
+ irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
+
++/* MAX1111 Channel Definitions */
++#define MAX1111_REMCOM 0u
++#define MAX1111_BATT_VOLT 4u
++#define MAX1111_BATT_TEMP 2u
++#define MAX1111_ACIN_VOLT 6u
++
++int sharpsl_pm_pxa_read_max1111(int channel);
+Index: linux-2.6.24/include/linux/input.h
+===================================================================
+--- linux-2.6.24.orig/include/linux/input.h 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/include/linux/input.h 2008-01-27 02:10:52.000000000 +0000
+@@ -636,6 +636,7 @@
+ #define SW_TABLET_MODE 0x01 /* set = tablet mode */
+ #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
+ #define SW_RADIO 0x03 /* set = radio enabled */
++#define SW_REMOTE_INSERT 0x04 /* set = remote */
+ #define SW_MAX 0x0f
+ #define SW_CNT (SW_MAX+1)
+
+Index: linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz_pm.c 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c 2008-01-27 02:10:52.000000000 +0000
+@@ -162,6 +162,13 @@
+ if (resume_on_alarm && (PEDR & PWER_RTC))
+ is_resume |= PWER_RTC;
+
++ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT));
++
++ //remote/headphone interrupt, wakeup
++ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
++ is_resume |= PWER_RTC;
++ }
++
+ dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
+ return is_resume;
+ }
diff --git a/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch b/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch
new file mode 100644
index 0000000000..df6d5f66c2
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/spitz_h_rewrite.patch
@@ -0,0 +1,497 @@
+http://www.uwsg.indiana.edu/hypermail/linux/kernel/0802.1/3541.html
+
+Here is a rewrite of spitz.h, which includes comments documenting
+function of particular GPIO pins.
+
+spitz_h_rewrite.patch provides:
+- no changes in compiled code
+- partial spitz.h rewrite:
+ * organized by function
+ * describes complete GPIO pinout
+ * comments added
+ * removed defines cloning pxa-regs.h
+- prefer generic pxa-regs.h GPIO if available
+- use GPIO names instead of numbers
+
+Thanks to Trisoft for providing needed information.
+
+Index: linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c
+===================================================================
+--- linux-2.6.24.orig/arch/arm/mach-pxa/spitz_pm.c 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/arch/arm/mach-pxa/spitz_pm.c 2008-02-13 13:49:22.000000000 +0000
+@@ -110,9 +110,9 @@
+ pxa_gpio_mode(GPIO18_RDY|GPIO_OUT | GPIO_DFLT_HIGH);
+
+ PRER = GPIO_bit(SPITZ_GPIO_KEY_INT);
+- PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
+- PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET) | PWER_RTC;
+- PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
++ PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST);
++ PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST) | PWER_RTC;
++ PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(GPIO1_RST);
+ PKSR = 0xffffffff; // clear
+
+ /* nRESET_OUT Disable */
+@@ -128,7 +128,7 @@
+ static void spitz_postsuspend(void)
+ {
+ pxa_gpio_mode(GPIO18_RDY_MD);
+- pxa_gpio_mode(10 | GPIO_IN);
++ pxa_gpio_mode(SPITZ_GPIO_NC_10 | GPIO_IN);
+ }
+
+ static int spitz_should_wakeup(unsigned int resume_on_alarm)
+Index: linux-2.6.24/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.24.orig/drivers/video/pxafb.c 2008-02-13 13:49:04.000000000 +0000
++++ linux-2.6.24/drivers/video/pxafb.c 2008-02-13 13:49:57.000000000 +0000
+@@ -920,7 +920,7 @@
+ return;
+ }
+
+- for (gpio = 58; ldd_bits > 0; gpio++, ldd_bits--) {
++ for (gpio = GPIO58_LDD_0; ldd_bits > 0; gpio++, ldd_bits--) {
+ pxa_gpio_mode(gpio | GPIO_ALT_FN_2_OUT);
+ }
+ pxa_gpio_mode(GPIO74_LCD_FCLK_MD);
+Index: linux-2.6.24/include/asm-arm/arch-pxa/akita.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/akita.h 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/include/asm-arm/arch-pxa/akita.h 2008-02-13 13:49:22.000000000 +0000
+@@ -12,11 +12,11 @@
+ /* Akita IO Expander GPIOs */
+
+ #define AKITA_IOEXP_RESERVED_7 (1 << 7)
+-#define AKITA_IOEXP_IR_ON (1 << 6)
+-#define AKITA_IOEXP_AKIN_PULLUP (1 << 5)
+-#define AKITA_IOEXP_BACKLIGHT_CONT (1 << 4)
+-#define AKITA_IOEXP_BACKLIGHT_ON (1 << 3)
+-#define AKITA_IOEXP_MIC_BIAS (1 << 2)
++#define AKITA_IOEXP_IR_ON (1 << 6) /* IrDA On */
++#define AKITA_IOEXP_AKIN_PULLUP (1 << 5) /* Pull-Up for Remote */
++#define AKITA_IOEXP_BACKLIGHT_CONT (1 << 4) /* Backlight Control */
++#define AKITA_IOEXP_BACKLIGHT_ON (1 << 3) /* Backlight On */
++#define AKITA_IOEXP_MIC_BIAS (1 << 2) /* Mic Bias On */
+ #define AKITA_IOEXP_RESERVED_1 (1 << 1)
+ #define AKITA_IOEXP_RESERVED_0 (1 << 0)
+
+Index: linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/pxa-regs.h 2008-02-13 13:49:07.000000000 +0000
++++ linux-2.6.24/include/asm-arm/arch-pxa/pxa-regs.h 2008-02-13 13:49:22.000000000 +0000
+@@ -1334,6 +1334,7 @@
+ #define GPIO85_nPCE_1 85 /* Card Enable for Card Space (PXA27x) */
+ #define GPIO92_MMCDAT0 92 /* MMC DAT0 (PXA27x) */
+ #define GPIO102_nPCE_1 102 /* PCMCIA (PXA27x) */
++#define GPIO104_pSKTSEL 104 /* PCMCIA Socket Select (PXA27x) */
+ #define GPIO109_MMCDAT1 109 /* MMC DAT1 (PXA27x) */
+ #define GPIO110_MMCDAT2 110 /* MMC DAT2 (PXA27x) */
+ #define GPIO110_MMCCS0 110 /* MMC Chip Select 0 (PXA27x) */
+Index: linux-2.6.24/include/asm-arm/arch-pxa/spitz.h
+===================================================================
+--- linux-2.6.24.orig/include/asm-arm/arch-pxa/spitz.h 2008-02-13 13:49:01.000000000 +0000
++++ linux-2.6.24/include/asm-arm/arch-pxa/spitz.h 2008-02-13 13:49:22.000000000 +0000
+@@ -1,8 +1,9 @@
+ /*
+- * Hardware specific definitions for SL-Cx000 series of PDAs
++ * Hardware specific definitions for SL-Cxx00 series of PDAs
+ *
+ * Copyright (c) 2005 Alexander Wykes
+ * Copyright (c) 2005 Richard Purdie
++ * Copyright (c) 2008 Stanislav Brabec
+ *
+ * Based on Sharp's 2.4 kernel patches
+ *
+@@ -13,140 +14,257 @@
+ */
+ #ifndef __ASM_ARCH_SPITZ_H
+ #define __ASM_ARCH_SPITZ_H 1
+-#endif
+
+-#include <linux/fb.h>
++#include <asm-arm/arch-pxa/irqs.h>
++#include <linux/platform_device.h>
+
+ /* Spitz/Akita GPIOs */
+
+-#define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */
+-#define SPITZ_GPIO_RESET (1)
+-#define SPITZ_GPIO_nSD_DETECT (9)
+-#define SPITZ_GPIO_TP_INT (11) /* Touch Panel interrupt */
+-#define SPITZ_GPIO_AK_INT (13) /* Remote Control */
+-#define SPITZ_GPIO_ADS7846_CS (14)
+-#define SPITZ_GPIO_SYNC (16)
+-#define SPITZ_GPIO_MAX1111_CS (20)
+-#define SPITZ_GPIO_FATAL_BAT (21)
+-#define SPITZ_GPIO_HSYNC (22)
+-#define SPITZ_GPIO_nSD_CLK (32)
+-#define SPITZ_GPIO_USB_DEVICE (35)
+-#define SPITZ_GPIO_USB_HOST (37)
+-#define SPITZ_GPIO_USB_CONNECT (41)
+-#define SPITZ_GPIO_LCDCON_CS (53)
+-#define SPITZ_GPIO_nPCE (54)
+-#define SPITZ_GPIO_nSD_WP (81)
+-#define SPITZ_GPIO_ON_RESET (89)
+-#define SPITZ_GPIO_BAT_COVER (90)
+-#define SPITZ_GPIO_CF_CD (94)
+-#define SPITZ_GPIO_ON_KEY (95)
+-#define SPITZ_GPIO_SWA (97)
+-#define SPITZ_GPIO_SWB (96)
+-#define SPITZ_GPIO_CHRG_FULL (101)
+-#define SPITZ_GPIO_CO (101)
+-#define SPITZ_GPIO_CF_IRQ (105)
+-#define SPITZ_GPIO_AC_IN (115)
+-#define SPITZ_GPIO_HP_IN (116)
++/* This list refers to all GPIO pins either in defines or in comments.
++ *
++ * GPIO pins not listed:
++ * GPIO2 SYS_EN: System Power Enable
++ * GPIO5-GPIO8 PWR_CAP0-PWR_CAP3: sleep DC-DC converter power capacitors
++ * GPIO40 not connected
++ */
+
+-/* Spitz Only GPIOs */
+
+-#define SPITZ_GPIO_CF2_IRQ (106) /* CF slot1 Ready */
+-#define SPITZ_GPIO_CF2_CD (93)
++/* Spitz/Akita System GPIO */
++
++#define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */
++#define SPITZ_GPIO_SYNC (16) /* IOPORT Wake Up (input) */
++#define SPITZ_GPIO_NAND_CS (79) /* NAND Flash Chip Select */
++#define SPITZ_GPIO_NC_10 (10) /* Not Connected (but used in kernel) */
++/* This GPIO pin is connected:
++ * GPIO1_RST
++ */
+
+
++/* Compact Flash Interface */
++
++/* Spitz/Akita Compact Flash Interface */
++#define SPITZ_GPIO_CF_CD (94) /* CF IRQ */
++#define SPITZ_GPIO_CF_IRQ (105) /* CF Ready */
++/* These GPIO pins are connected:
++ * GPIO48_nPOE
++ * GPIO49_nPWE
++ * GPIO50_nPIOR
++ * GPIO51_nPIOW
++ * GPIO54_nPCE_2
++ * GPIO55_nPREG
++ * GPIO56_nPWAIT
++ * GPIO57_nIOIS16
++ * GPIO80_nCS_4
++ * GPIO85_nPCE_1
++ * GPIO104_pSKTSEL
++ */
++
++/* Spitz only Compact Flash Interface */
++#define SPITZ_GPIO_CF2_CD (93) /* CF slot1 IRQ */
++#define SPITZ_GPIO_CF2_IRQ (106) /* CF slot1 Ready */
++/* This GPIO pin is connected:
++ * GPIO78_nCS_2
++ */
++
++
++/* Spitz/Akita Battery, Power and Service Connector */
++
++#define SPITZ_GPIO_FATAL_BAT (21) /* Fatal Battery */
++#define SPITZ_GPIO_BAT_COVER (90) /* Battery Cover switch */
++#define SPITZ_GPIO_BAT_COVER2 (15) /* Battery Cover switch, parallel pin */
++#define SPITZ_GPIO_CHRG_FULL (101) /* Battery Full */
++#define SPITZ_GPIO_AC_IN (115) /* External Power Supply is active */
++#define SPITZ_GPIO_ON_RESET (89) /* Software Reset */
++#define SPITZ_GPIO_SERVICE0 (83) /* Service Connector */
++#define SPITZ_GPIO_SERVICE1 (84) /* Service Connector */
++/* This GPIO pin is connected:
++ * GPIO18_RDY
++ */
++
++
++/* Spitz/Akita Display Controller */
++
++#define SPITZ_GPIO_HSYNC (22) /* Line Sync Feedback */
++/* These GPIO pins are connected:
++ * GPIO58_LDD_0-GPIO58_LDD_15
++ * GPIO74_LCD_FCLK
++ * GPIO75_LCD_LCLK
++ * GPIO76_LCD_PCLK
++ * GPIO77_LCD_ACBIAS
++ */
++
++
++/* Spitz/Akita SSP/SPI Bus and Devices */
++
++#define SPITZ_GPIO_SSP_CLK (19) /* SSP bus Clock */
++#define SPITZ_GPIO_SSP_RXD (86) /* SSP bus RxD */
++#define SPITZ_GPIO_SSP_TXD (87) /* SSP bus TxD */
++#define SPITZ_GPIO_TP_INT (11) /* Touch Panel IRQ */
++#define SPITZ_GPIO_ADS7846_CS (14) /* Touch Panel Controller Chip Select */
++#define SPITZ_GPIO_MAX1111_CS (20) /* Multi Channel ADC Chip Select */
++#define SPITZ_GPIO_LCDCON_CS (53) /* LCD Controller Chip Select */
++
++
++/* Spitz/Akita Supplementary USB OTG Pins */
++
++#define SPITZ_GPIO_USB_DEVICE (35) /* USB Client power is present */
++#define SPITZ_GPIO_USB_HOST (37) /* USB OTG 5V Host power supply control */
++#define SPITZ_GPIO_USB_CONNECT (41) /* USB Host Cable is connected */
++
++
++/* Spitz/Akita Audio */
++
++#define SPITZ_GPIO_HP_IN (116) /* CPU Headphone detect */
++#define SPITZ_GPIO_AK_INT (13) /* Remote Control detect */
++/* These GPIO AC97 pins are connected:
++ * GPIO28_BITCLK
++ * GPIO29_SDATA_IN
++ * GPIO30_SDATA_OUT
++ * GPIO31_SYNC
++ * GPIO113_AC97_RESET_N
++ */
++
++
++/* Spitz/Akita SD Slot */
++
++#define SPITZ_GPIO_nSD_DETECT (9) /* SD Card Presence */
++#define SPITZ_GPIO_nSD_WP (81) /* SD Write Protection */
++/* These GPIO pins are connected:
++ * GPIO32_MMCCLK
++ * GPIO92_MMCDAT0
++ * GPIO109_MMCDAT1
++ * GPIO110_MMCDAT2
++ * GPIO111_MMCDAT3
++ * GPIO112_MMCCMD
++ */
++
++/* Spitz/Akita I2C bus */
++#define SPITZ_GPIO_SCL (117) /* I2C SCL */
++#define SPITZ_GPIO_SDA (118) /* I2C SDA */
++#define SPITZ_GPIO_PWR_SCL (3) /* I2C SCL power */
++#define SPITZ_GPIO_PWR_SDA (4) /* I2C SDA power */
++
++/* audio codec pins */
++
++
++/* Spitz/Akita UART ports */
++
++/* Fully Featured UART - connected to IOPORT connector */
++#define SPITZ_GPIO_FFRXD (102) /* IOPORT has nRXD inverted levels */
++#define SPITZ_GPIO_FFTXD (99) /* IOPORT has nTXD inverted levels */
++#define SPITZ_GPIO_FFRTS (98)
++#define SPITZ_GPIO_FFCTS (100)
++#define SPITZ_GPIO_FFDTR (82)
++#define SPITZ_GPIO_FFDSR (33)
++
++/* These UART GPIO pins are connected to Bluetooth
++ * (only on Akita version with Bluetooth)
++ * GPIO42_BTRXD
++ * GPIO43_BTTXD
++ * GPIO44_BTCTS
++ * GPIO45_BTRTS
++ */
++
++/* These UART GPIO pins are connected to IrDA:
++ * GPIO46_STRXD
++ * GPIO47_STTXD
++ */
++
+ /* Spitz/Akita Keyboard Definitions */
+
+-#define SPITZ_KEY_STROBE_NUM (11)
+-#define SPITZ_KEY_SENSE_NUM (7)
+-#define SPITZ_GPIO_G0_STROBE_BIT 0x0f800000
+-#define SPITZ_GPIO_G1_STROBE_BIT 0x00100000
+-#define SPITZ_GPIO_G2_STROBE_BIT 0x01000000
+-#define SPITZ_GPIO_G3_STROBE_BIT 0x00041880
+-#define SPITZ_GPIO_G0_SENSE_BIT 0x00021000
+-#define SPITZ_GPIO_G1_SENSE_BIT 0x000000d4
+-#define SPITZ_GPIO_G2_SENSE_BIT 0x08000000
+-#define SPITZ_GPIO_G3_SENSE_BIT 0x00000000
+-
+-#define SPITZ_GPIO_KEY_STROBE0 88
+-#define SPITZ_GPIO_KEY_STROBE1 23
+-#define SPITZ_GPIO_KEY_STROBE2 24
+-#define SPITZ_GPIO_KEY_STROBE3 25
+-#define SPITZ_GPIO_KEY_STROBE4 26
+-#define SPITZ_GPIO_KEY_STROBE5 27
+-#define SPITZ_GPIO_KEY_STROBE6 52
+-#define SPITZ_GPIO_KEY_STROBE7 103
+-#define SPITZ_GPIO_KEY_STROBE8 107
+-#define SPITZ_GPIO_KEY_STROBE9 108
+-#define SPITZ_GPIO_KEY_STROBE10 114
+-
+-#define SPITZ_GPIO_KEY_SENSE0 12
+-#define SPITZ_GPIO_KEY_SENSE1 17
+-#define SPITZ_GPIO_KEY_SENSE2 91
+-#define SPITZ_GPIO_KEY_SENSE3 34
+-#define SPITZ_GPIO_KEY_SENSE4 36
+-#define SPITZ_GPIO_KEY_SENSE5 38
+-#define SPITZ_GPIO_KEY_SENSE6 39
++#define SPITZ_KEY_STROBE_NUM (11)
++#define SPITZ_KEY_SENSE_NUM (7)
++#define SPITZ_GPIO_G0_STROBE_BIT 0x0f800000
++#define SPITZ_GPIO_G1_STROBE_BIT 0x00100000
++#define SPITZ_GPIO_G2_STROBE_BIT 0x01000000
++#define SPITZ_GPIO_G3_STROBE_BIT 0x00041880
++#define SPITZ_GPIO_G0_SENSE_BIT 0x00021000
++#define SPITZ_GPIO_G1_SENSE_BIT 0x000000d4
++#define SPITZ_GPIO_G2_SENSE_BIT 0x08000000
++#define SPITZ_GPIO_G3_SENSE_BIT 0x00000000
++#define SPITZ_GPIO_KEY_STROBE0 (88)
++#define SPITZ_GPIO_KEY_STROBE1 (23)
++#define SPITZ_GPIO_KEY_STROBE2 (24)
++#define SPITZ_GPIO_KEY_STROBE3 (25)
++#define SPITZ_GPIO_KEY_STROBE4 (26)
++#define SPITZ_GPIO_KEY_STROBE5 (27)
++#define SPITZ_GPIO_KEY_STROBE6 (52)
++#define SPITZ_GPIO_KEY_STROBE7 (103)
++#define SPITZ_GPIO_KEY_STROBE8 (107)
++#define SPITZ_GPIO_KEY_STROBE9 (108)
++#define SPITZ_GPIO_KEY_STROBE10 (114)
++#define SPITZ_GPIO_KEY_SENSE0 (12)
++#define SPITZ_GPIO_KEY_SENSE1 (17)
++#define SPITZ_GPIO_KEY_SENSE2 (91)
++#define SPITZ_GPIO_KEY_SENSE3 (34)
++#define SPITZ_GPIO_KEY_SENSE4 (36)
++#define SPITZ_GPIO_KEY_SENSE5 (38)
++#define SPITZ_GPIO_KEY_SENSE6 (39)
++
++#define SPITZ_GPIO_SWA (97) /* Keyboard Interrupt A */
++#define SPITZ_GPIO_SWB (96) /* Keyboard Interrupt B */
++#define SPITZ_GPIO_ON_KEY (95) /* Power On Key */
+
+
+-/* Spitz Scoop Device (No. 1) GPIOs */
++/* Spitz/Akita Scoop Device (No. 1) GPIOs */
+ /* Suspend States in comments */
+-#define SPITZ_SCP_LED_GREEN SCOOP_GPCR_PA11 /* Keep */
+-#define SPITZ_SCP_JK_B SCOOP_GPCR_PA12 /* Keep */
+-#define SPITZ_SCP_CHRG_ON SCOOP_GPCR_PA13 /* Keep */
+-#define SPITZ_SCP_MUTE_L SCOOP_GPCR_PA14 /* Low */
+-#define SPITZ_SCP_MUTE_R SCOOP_GPCR_PA15 /* Low */
+-#define SPITZ_SCP_CF_POWER SCOOP_GPCR_PA16 /* Keep */
+-#define SPITZ_SCP_LED_ORANGE SCOOP_GPCR_PA17 /* Keep */
+-#define SPITZ_SCP_JK_A SCOOP_GPCR_PA18 /* Low */
+-#define SPITZ_SCP_ADC_TEMP_ON SCOOP_GPCR_PA19 /* Low */
++#define SPITZ_SCP_LED_GREEN SCOOP_GPCR_PA11 /* Green LED, Keep */
++#define SPITZ_SCP_JK_B SCOOP_GPCR_PA12 /* Fast Charge On, Keep */
++#define SPITZ_SCP_CHRG_ON SCOOP_GPCR_PA13 /* Charge On, Keep */
++#define SPITZ_SCP_MUTE_L SCOOP_GPCR_PA14 /* Extra Mute Left, Low */
++#define SPITZ_SCP_MUTE_R SCOOP_GPCR_PA15 /* Extra Mute Right, Low */
++#define SPITZ_SCP_CF_POWER SCOOP_GPCR_PA16 /* CF+SD Power Circuit, Keep */
++#define SPITZ_SCP_LED_ORANGE SCOOP_GPCR_PA17 /* Orange LED, Keep */
++#define SPITZ_SCP_JK_A SCOOP_GPCR_PA18 /* Dummy Load, Low */
++#define SPITZ_SCP_ADC_TEMP_ON SCOOP_GPCR_PA19 /* Battery Sensor On, Low */
+
+ #define SPITZ_SCP_IO_DIR (SPITZ_SCP_LED_GREEN | SPITZ_SCP_JK_B | SPITZ_SCP_CHRG_ON | \
+- SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_LED_ORANGE | \
+- SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
++ SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_LED_ORANGE | \
++ SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
+ #define SPITZ_SCP_IO_OUT (SPITZ_SCP_CHRG_ON | SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R)
+ #define SPITZ_SCP_SUS_CLR (SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
+ #define SPITZ_SCP_SUS_SET 0
+
+ /* Spitz Scoop Device (No. 2) GPIOs */
+-/* Suspend States in comments */
+-#define SPITZ_SCP2_IR_ON SCOOP_GPCR_PA11 /* High */
+-#define SPITZ_SCP2_AKIN_PULLUP SCOOP_GPCR_PA12 /* Keep */
+-#define SPITZ_SCP2_RESERVED_1 SCOOP_GPCR_PA13 /* High */
+-#define SPITZ_SCP2_RESERVED_2 SCOOP_GPCR_PA14 /* Low */
+-#define SPITZ_SCP2_RESERVED_3 SCOOP_GPCR_PA15 /* Low */
+-#define SPITZ_SCP2_RESERVED_4 SCOOP_GPCR_PA16 /* Low */
+-#define SPITZ_SCP2_BACKLIGHT_CONT SCOOP_GPCR_PA17 /* Low */
+-#define SPITZ_SCP2_BACKLIGHT_ON SCOOP_GPCR_PA18 /* Low */
+-#define SPITZ_SCP2_MIC_BIAS SCOOP_GPCR_PA19 /* Low */
++/* Suspend States in comments
++ * Spitz only, Akita uses corresponding AKITA_IOEXP_ */
++#define SPITZ_SCP2_IR_ON SCOOP_GPCR_PA11 /* IrDA On, High */
++#define SPITZ_SCP2_AKIN_PULLUP SCOOP_GPCR_PA12 /* Pull-Up for Remote, Keep */
++#define SPITZ_SCP2_RESERVED_1 SCOOP_GPCR_PA13 /* High */
++#define SPITZ_SCP2_RESERVED_2 SCOOP_GPCR_PA14 /* Low */
++#define SPITZ_SCP2_RESERVED_3 SCOOP_GPCR_PA15 /* Low */
++#define SPITZ_SCP2_RESERVED_4 SCOOP_GPCR_PA16 /* Low */
++#define SPITZ_SCP2_BACKLIGHT_CONT SCOOP_GPCR_PA17 /* Backlight Control, Low */
++#define SPITZ_SCP2_BACKLIGHT_ON SCOOP_GPCR_PA18 /* Backlight On, Low */
++#define SPITZ_SCP2_MIC_BIAS SCOOP_GPCR_PA19 /* Mic Bias On, Low */
+
+ #define SPITZ_SCP2_IO_DIR (SPITZ_SCP2_IR_ON | SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1 | \
+- SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
+- SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
++ SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
++ SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
+
+ #define SPITZ_SCP2_IO_OUT (SPITZ_SCP2_IR_ON | SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1)
+ #define SPITZ_SCP2_SUS_CLR (SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
+- SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
++ SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
+ #define SPITZ_SCP2_SUS_SET (SPITZ_SCP2_IR_ON | SPITZ_SCP2_RESERVED_1)
+
+
+-/* Spitz IRQ Definitions */
++/* Spitz/Akita IRQ Definitions */
+
+-#define SPITZ_IRQ_GPIO_KEY_INT IRQ_GPIO(SPITZ_GPIO_KEY_INT)
+-#define SPITZ_IRQ_GPIO_AC_IN IRQ_GPIO(SPITZ_GPIO_AC_IN)
+-#define SPITZ_IRQ_GPIO_AK_INT IRQ_GPIO(SPITZ_GPIO_AK_INT)
+-#define SPITZ_IRQ_GPIO_HP_IN IRQ_GPIO(SPITZ_GPIO_HP_IN)
+-#define SPITZ_IRQ_GPIO_TP_INT IRQ_GPIO(SPITZ_GPIO_TP_INT)
+-#define SPITZ_IRQ_GPIO_SYNC IRQ_GPIO(SPITZ_GPIO_SYNC)
+-#define SPITZ_IRQ_GPIO_ON_KEY IRQ_GPIO(SPITZ_GPIO_ON_KEY)
+-#define SPITZ_IRQ_GPIO_SWA IRQ_GPIO(SPITZ_GPIO_SWA)
+-#define SPITZ_IRQ_GPIO_SWB IRQ_GPIO(SPITZ_GPIO_SWB)
++#define SPITZ_IRQ_GPIO_KEY_INT IRQ_GPIO(SPITZ_GPIO_KEY_INT)
++#define SPITZ_IRQ_GPIO_AC_IN IRQ_GPIO(SPITZ_GPIO_AC_IN)
++#define SPITZ_IRQ_GPIO_AK_INT IRQ_GPIO(SPITZ_GPIO_AK_INT)
++#define SPITZ_IRQ_GPIO_HP_IN IRQ_GPIO(SPITZ_GPIO_HP_IN)
++#define SPITZ_IRQ_GPIO_TP_INT IRQ_GPIO(SPITZ_GPIO_TP_INT)
++#define SPITZ_IRQ_GPIO_SYNC IRQ_GPIO(SPITZ_GPIO_SYNC)
++#define SPITZ_IRQ_GPIO_ON_KEY IRQ_GPIO(SPITZ_GPIO_ON_KEY)
++#define SPITZ_IRQ_GPIO_SWA IRQ_GPIO(SPITZ_GPIO_SWA)
++#define SPITZ_IRQ_GPIO_SWB IRQ_GPIO(SPITZ_GPIO_SWB)
+ #define SPITZ_IRQ_GPIO_BAT_COVER IRQ_GPIO(SPITZ_GPIO_BAT_COVER)
+ #define SPITZ_IRQ_GPIO_FATAL_BAT IRQ_GPIO(SPITZ_GPIO_FATAL_BAT)
+-#define SPITZ_IRQ_GPIO_CO IRQ_GPIO(SPITZ_GPIO_CO)
+-#define SPITZ_IRQ_GPIO_CF_IRQ IRQ_GPIO(SPITZ_GPIO_CF_IRQ)
+-#define SPITZ_IRQ_GPIO_CF_CD IRQ_GPIO(SPITZ_GPIO_CF_CD)
+-#define SPITZ_IRQ_GPIO_CF2_IRQ IRQ_GPIO(SPITZ_GPIO_CF2_IRQ)
+-#define SPITZ_IRQ_GPIO_nSD_INT IRQ_GPIO(SPITZ_GPIO_nSD_INT)
++#define SPITZ_IRQ_GPIO_CF_IRQ IRQ_GPIO(SPITZ_GPIO_CF_IRQ)
++#define SPITZ_IRQ_GPIO_CF_CD IRQ_GPIO(SPITZ_GPIO_CF_CD)
++#define SPITZ_IRQ_GPIO_CF2_IRQ IRQ_GPIO(SPITZ_GPIO_CF2_IRQ)
++#define SPITZ_IRQ_GPIO_nSD_INT IRQ_GPIO(SPITZ_GPIO_nSD_INT)
+ #define SPITZ_IRQ_GPIO_nSD_DETECT IRQ_GPIO(SPITZ_GPIO_nSD_DETECT)
+
+ /*
+@@ -156,3 +274,5 @@
+ extern struct platform_device spitzscoop2_device;
+ extern struct platform_device spitzssp_device;
+ extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
++
++#endif
+Index: linux-2.6.24/sound/arm/pxa2xx-ac97.c
+===================================================================
+--- linux-2.6.24.orig/sound/arm/pxa2xx-ac97.c 2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6.24/sound/arm/pxa2xx-ac97.c 2008-02-13 13:49:22.000000000 +0000
+@@ -133,10 +133,10 @@
+ #ifdef CONFIG_PXA27x
+ /* warm reset broken on Bulverde,
+ so manually keep AC97 reset high */
+- pxa_gpio_mode(113 | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(GPIO113_AC97_RESET_N | GPIO_OUT | GPIO_DFLT_HIGH);
+ udelay(10);
+ GCR |= GCR_WARM_RST;
+- pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
++ pxa_gpio_mode(GPIO113_AC97_RESET_N_MD);
+ udelay(500);
+ #else
+ GCR |= GCR_WARM_RST|GCR_PRIRDY_IEN|GCR_SECRDY_IEN;
+@@ -335,7 +335,7 @@
+ pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD);
+ #ifdef CONFIG_PXA27x
+ /* Use GPIO 113 as AC97 Reset on Bulverde */
+- pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
++ pxa_gpio_mode(GPIO113_AC97_RESET_N_MD);
+ #endif
+ pxa_set_cken(CKEN_AC97, 1);
+
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/squashfs3.3.patch b/packages/linux/linux-rp-2.6.24/squashfs3.3.patch
index cb9a5c49e4..cb9a5c49e4 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/squashfs3.3.patch
+++ b/packages/linux/linux-rp-2.6.24/squashfs3.3.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/versatile-armv6.patch b/packages/linux/linux-rp-2.6.24/versatile-armv6.patch
index e2d0060ac3..e2d0060ac3 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/versatile-armv6.patch
+++ b/packages/linux/linux-rp-2.6.24/versatile-armv6.patch
diff --git a/packages/linux/linux-rp-2.6.24/wm8750-treble.patch b/packages/linux/linux-rp-2.6.24/wm8750-treble.patch
new file mode 100644
index 0000000000..07a8d8e141
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.24/wm8750-treble.patch
@@ -0,0 +1,11 @@
+--- linux-2.6.23/sound/soc/codecs/wm8750.c 2007-10-09 22:31:38.000000000 +0200
++++ linux-2.6.23/sound/soc/codecs/wm8750.c 2007-11-02 16:47:35.000000000 +0100
+@@ -189,7 +189,7 @@
+ SOC_ENUM("Bass Filter", wm8750_enum[1]),
+ SOC_SINGLE("Bass Volume", WM8750_BASS, 0, 15, 1),
+
+-SOC_SINGLE("Treble Volume", WM8750_TREBLE, 0, 15, 0),
++SOC_SINGLE("Treble Volume", WM8750_TREBLE, 0, 15, 1),
+ SOC_ENUM("Treble Cut-off", wm8750_enum[2]),
+
+ SOC_SINGLE("3D Switch", WM8750_3D, 0, 1, 0),
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/zylonite-boot.patch b/packages/linux/linux-rp-2.6.24/zylonite-boot.patch
index f41928eca5..f41928eca5 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/zylonite-boot.patch
+++ b/packages/linux/linux-rp-2.6.24/zylonite-boot.patch
diff --git a/packages/linux/linux-rp.inc b/packages/linux/linux-rp.inc
index 4137b991d1..e823839afd 100644
--- a/packages/linux/linux-rp.inc
+++ b/packages/linux/linux-rp.inc
@@ -56,9 +56,15 @@ module_autoload_snd-soc-corgi_c7x0 = "snd-soc-corgi"
module_autoload_snd-soc-spitz_akita = "snd-soc-spitz"
module_autoload_snd-soc-spitz_spitz = "snd-soc-spitz"
module_autoload_snd-soc-poodle_poodle = "snd-soc-poodle"
+
module_autoload_locomo-spi_collie = "locomo-spi"
module_autoload_mmc_block_collie = "mmc_block"
-module_autoload_locomo-kbd_collie = "locomo-kbd"
+module_autoload_locomokbd_collie = "locomokbd"
+module_autoload_sa1100-cs_collie = "sa1100_cs"
+module_autoload_collie-ts_collie = "collie-ts"
+module_autoload_leds-locomo_collie = "leds-locomo"
+module_autoload_unix_collie = "unix"
+
do_configure() {
rm -f ${S}/.config
diff --git a/packages/linux/linux-rp_2.6.23+2.6.24-rc8.bb b/packages/linux/linux-rp_2.6.23+2.6.24-rc8.bb
deleted file mode 100644
index ec06f202f3..0000000000
--- a/packages/linux/linux-rp_2.6.23+2.6.24-rc8.bb
+++ /dev/null
@@ -1,146 +0,0 @@
-require linux-rp.inc
-
-PR = "r2"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_collie = "1"
-
-# Handy URLs
-# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
-# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
-# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
-# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
-# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
-# ${KERNELORG_MIRROR}pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
-# ${KERNELORG_MIRROR}pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1
-
-# Patches submitted upstream are towards top of this list
-# Hacks should clearly named and at the bottom
-SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
- ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.24-rc8.bz2;patch=1 \
- ${RPSRC}/export_atags-r2.patch;patch=1;status=pending \
- ${RPSRC}/lzo_crypto-r2.patch;patch=1;status=pending \
- ${RPSRC}/corgi_rearrange_lcd-r0.patch;patch=1;status=pending \
- ${RPSRC}/lzo_jffs2_sysfs-r1.patch;patch=1 \
- ${RPSRC}/hx2750_base-r33.patch;patch=1 \
- ${RPSRC}/hx2750_bl-r9.patch;patch=1 \
- ${RPSRC}/hx2750_pcmcia-r3.patch;patch=1 \
- ${RPSRC}/pxa_keys-r8.patch;patch=1 \
- ${RPSRC}/tsc2101-r18.patch;patch=1 \
- ${RPSRC}/hx2750_test1-r8.patch;patch=1 \
- ${RPSRC}/input_power-r10.patch;patch=1 \
- ${RPSRC}/pxa25x_cpufreq-r2.patch;patch=1 \
- ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
- ${RPSRC}/pm_changes-r1.patch;patch=1 \
- ${RPSRC}/usb_add_epalloc-r4.patch;patch=1 \
- ${RPSRC}/usb_pxa27x_udc-r8.patch;patch=1 \
- ${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
- ${RPSRC}/pxa27x_overlay-r8.patch;patch=1 \
- ${RPSRC}/w100_extaccel-r2.patch;patch=1 \
- ${RPSRC}/w100_extmem-r1.patch;patch=1 \
- ${RPSRC}/poodle_pm-r5.patch;patch=1 \
- ${RPSRC}/poodle_lcd_hack-r0.patch;patch=1 \
- ${RPSRC}/poodle_asoc_fix-r1.patch;patch=1 \
- file://squashfs3.3.patch;patch=1;status=external \
- ${RPSRC}/logo_oh-r1.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
- file://hostap-monitor-mode.patch;patch=1;status=unmergable \
- file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1;status=unmergable \
- ${RPSRC}/mmcsd_large_cards-r1.patch;patch=1;status=hack \
- ${RPSRC}/mmcsd_no_scr_check-r2.patch;patch=1;status=hack \
- ${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
- ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1;status=hack \
- file://pxa-serial-hack.patch;patch=1;status=hack \
- file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
- file://connectplus-prevent-oops-HACK.patch;patch=1;status=hack \
- file://htcuni.patch;patch=1 \
- file://binutils-buildid-arm.patch;patch=1 \
- file://versatile-armv6.patch;patch=1 \
- file://defconfig-c7x0 \
- file://defconfig-hx2000 \
- file://defconfig-collie \
- file://defconfig-poodle \
- file://defconfig-akita \
- file://defconfig-spitz \
- file://defconfig-qemuarm \
- file://defconfig-qemux86 \
- file://defconfig-bootcdx86 \
- file://defconfig-htcuniversal \
- file://defconfig-zylonite"
-# Tosa disabled until the patchset is updated
-# file://defconfig-tosa
-
-# FIXMEs before made default
-# ${RPSRC}/mmcsd_no_scr_check-r1.patch;patch=1;status=hack
-
-
-# Add this to enable pm debug code (useful with a serial lead)
-# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
-
-# Disabled until I find the reason this gives issues with cdc_subset
-# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
-
-# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
-# (Pavel Machek's git tree has updated versions of this?)
-# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
-
-# These patches are extracted from Pavel Machek's git tree
-# (diff against vanilla kernel)
-SRC_URI_append_collie = "\
- ${TKSRC}/mtd-sharp-flash-hack-r3.patch;patch=1 \
- ${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
- ${TKSRC}/locomo-r0.patch;patch=1 \
-# ${TKSRC}/locomo_spi-4.patch;patch=1 \
- ${TKSRC}/collie-kexec.patch;patch=1 \
- ${TKSRC}/sharpsl_pm-3.patch;patch=1 \
- ${TKSRC}/collie_pm-2.patch;patch=1 \
- ${TKSRC}/locomokeyb_suspendkey-2.patch;patch=1 \
- ${TKSRC}/ucb1x00_suspend.patch;patch=1 \
- ${TKSRC}/collie-ts.patch;patch=1 \
- ${TKSRC}/pcmcia_suspend.patch;patch=1 \
-"
-
-SRC_URI_append_poodle = "\
- ${RPSRC}/poodle_serial_vcc-r0.patch;patch=1 \
-"
-
-SRC_URI_append_tosa = "\
- ${CHSRC}/tmio-core-r4.patch;patch=1 \
- file://tmio-tc6393-r8.patch;patch=1 \
- file://tmio-nand-r8.patch;patch=1 \
- ${CHSRC}/tmio-fb-r6.patch;patch=1 \
- file://tmio-fb-r6-fix-r0.patch;patch=1 \
- file://tosa-keyboard-r19.patch;patch=1 \
- ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
- file://tosa-pxaac97-r6-fix-r0.patch;patch=1 \
- ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
- file://tosa-power-r18.patch;patch=1 \
- file://tosa-power-r18-fix-r0.patch;patch=1 \
- file://tosa-tmio-lcd-r10.patch;patch=1 \
- file://tosa-tmio-lcd-r10-fix-r0.patch;patch=1 \
- file://tosa-bluetooth-r8.patch;patch=1 \
- file://wm97xx-lg13-r0.patch;patch=1 \
- file://wm97xx-lg13-r0-fix-r0.patch;patch=1 \
- file://wm9712-suspend-cold-res-r2.patch;patch=1 \
- file://sharpsl-pm-postresume-r1.patch;patch=1 \
- file://wm9712-reset-loop-r2.patch;patch=1 \
- file://tosa-lcdnoise-r1.patch;patch=1 \
- file://tosa-lcdnoise-r1-fix-r0.patch;patch=1 \
- file://arm-dma-coherent.patch;patch=1 \
- file://usb-ohci-hooks-r3.patch;patch=1 \
- file://tmio-ohci-r9.patch;patch=1 \
- file://pxa2xx_udc_support_inverse_vbus.patch;patch=1 \
- file://tosa_udc_use_gpio_vbus.patch;patch=1 \
- "
-# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
-
-SRC_URI_append_htcuniversal ="\
- file://htcuni-acx.patch;patch=1;status=external \
- "
-
-SRC_URI_append_zylonite ="\
- file://pxa_fb_overlay.patch;patch=1 \
- file://zylonite-boot.patch;patch=1 \
- "
-
-S = "${WORKDIR}/linux-2.6.23"
diff --git a/packages/linux/linux-rp_2.6.23.bb b/packages/linux/linux-rp_2.6.23.bb
index f0501f87f4..f4967e16ae 100644
--- a/packages/linux/linux-rp_2.6.23.bb
+++ b/packages/linux/linux-rp_2.6.23.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r24"
+PR = "r27"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
@@ -130,6 +130,18 @@ SRC_URI_append_tosa = "\
"
# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
+SRC_URI_append_akita = "\
+ file://sharpsl-rc-r1.patch;patch=1;status=external \
+ file://wm8750-treble.patch;patch=1;status=external \
+ file://mtd-module.patch;patch=1 \
+ "
+
+SRC_URI_append_spitz = "\
+ file://sharpsl-rc-r1.patch;patch=1;status=external \
+ file://wm8750-treble.patch;patch=1;status=external \
+ file://mtd-module.patch;patch=1 \
+ "
+
SRC_URI_append_htcuniversal ="\
file://htcuni-acx.patch;patch=1;status=external \
"
diff --git a/packages/linux/linux-rp_2.6.24.bb b/packages/linux/linux-rp_2.6.24.bb
new file mode 100644
index 0000000000..b3e04980de
--- /dev/null
+++ b/packages/linux/linux-rp_2.6.24.bb
@@ -0,0 +1,163 @@
+require linux-rp.inc
+
+PR = "r5"
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_collie = "1"
+DEFAULT_PREFERENCE_qemux86 = "1"
+
+# Handy URLs
+# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
+# ${KERNELORG_MIRROR}pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
+# ${KERNELORG_MIRROR}pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1
+
+# Patches submitted upstream are towards top of this list
+# Hacks should clearly named and at the bottom
+SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 \
+ ${RPSRC}/export_atags-r2.patch;patch=1;status=pending \
+ ${RPSRC}/lzo_crypto-r2.patch;patch=1;status=pending \
+ ${RPSRC}/corgi_rearrange_lcd-r0.patch;patch=1;status=pending \
+ ${RPSRC}/allow_disable_deferrred-r0.patch;patch=1 \
+ ${RPSRC}/lzo_jffs2_sysfs-r1.patch;patch=1 \
+ ${RPSRC}/hx2750_base-r33.patch;patch=1 \
+ ${RPSRC}/hx2750_bl-r9.patch;patch=1 \
+ ${RPSRC}/hx2750_pcmcia-r3.patch;patch=1 \
+ ${RPSRC}/pxa_keys-r8.patch;patch=1 \
+ ${RPSRC}/tsc2101-r18.patch;patch=1 \
+ ${RPSRC}/hx2750_test1-r8.patch;patch=1 \
+ ${RPSRC}/input_power-r10.patch;patch=1 \
+ ${RPSRC}/pxa25x_cpufreq-r2.patch;patch=1 \
+ ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
+ ${RPSRC}/pm_changes-r1.patch;patch=1 \
+ ${RPSRC}/usb_add_epalloc-r4.patch;patch=1 \
+ ${RPSRC}/usb_pxa27x_udc-r8.patch;patch=1 \
+ ${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
+ ${RPSRC}/pxa27x_overlay-r8.patch;patch=1 \
+ ${RPSRC}/w100_extaccel-r2.patch;patch=1 \
+ ${RPSRC}/w100_extmem-r1.patch;patch=1 \
+ ${RPSRC}/poodle_pm-r5.patch;patch=1 \
+ ${RPSRC}/poodle_lcd_hack-r0.patch;patch=1 \
+ ${RPSRC}/poodle_asoc_fix-r1.patch;patch=1 \
+ file://pxa27x-resume.patch;patch=1;status=external \
+ file://squashfs3.3.patch;patch=1;status=external \
+ ${RPSRC}/logo_oh-r1.patch.bz2;patch=1;status=unmergable \
+ ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
+ file://hostap-monitor-mode.patch;patch=1;status=unmergable \
+ file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1;status=unmergable \
+ ${RPSRC}/mmcsd_large_cards-r1.patch;patch=1;status=hack \
+ ${RPSRC}/mmcsd_no_scr_check-r2.patch;patch=1;status=hack \
+ ${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
+ ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1;status=hack \
+ file://pxa-serial-hack.patch;patch=1;status=hack \
+ file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
+ file://connectplus-prevent-oops-HACK.patch;patch=1;status=hack \
+ file://htcuni.patch;patch=1 \
+ file://binutils-buildid-arm.patch;patch=1 \
+ file://versatile-armv6.patch;patch=1 \
+ file://defconfig-c7x0 \
+ file://defconfig-hx2000 \
+ file://defconfig-collie \
+ file://defconfig-poodle \
+ file://defconfig-akita \
+ file://defconfig-spitz \
+ file://defconfig-qemuarm \
+ file://defconfig-qemux86 \
+ file://defconfig-bootcdx86 \
+ file://defconfig-htcuniversal \
+ file://defconfig-zylonite"
+# Tosa disabled until the patchset is updated
+# file://defconfig-tosa
+
+# FIXMEs before made default
+# ${RPSRC}/mmcsd_no_scr_check-r1.patch;patch=1;status=hack
+
+
+# Add this to enable pm debug code (useful with a serial lead)
+# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
+
+# Disabled until I find the reason this gives issues with cdc_subset
+# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
+
+# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
+# (Pavel Machek's git tree has updated versions of this?)
+# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
+
+# These patches are extracted from Pavel Machek's git tree
+# (diff against vanilla kernel)
+SRC_URI_append_collie = "\
+ ${TKSRC}/mtd-sharp-flash-hack-r3.patch;patch=1 \
+ ${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
+ ${TKSRC}/locomo-r0.patch;patch=1 \
+# ${TKSRC}/locomo_spi-4.patch;patch=1 \
+ ${TKSRC}/collie-kexec.patch;patch=1 \
+ ${TKSRC}/sharpsl_pm-3.patch;patch=1 \
+ ${TKSRC}/collie_pm-2.patch;patch=1 \
+ ${TKSRC}/locomokeyb_suspendkey-2.patch;patch=1 \
+ ${TKSRC}/ucb1x00_suspend.patch;patch=1 \
+ ${TKSRC}/collie-ts.patch;patch=1 \
+ ${TKSRC}/pcmcia_suspend.patch;patch=1 \
+"
+
+SRC_URI_append_poodle = "\
+ ${RPSRC}/poodle_serial_vcc-r0.patch;patch=1 \
+ file://poodle_ts.patch;patch=1 \
+ file://pxafb.patch;patch=1 \
+"
+
+SRC_URI_append_tosa = "\
+ ${CHSRC}/tmio-core-r4.patch;patch=1 \
+ file://tmio-tc6393-r8.patch;patch=1 \
+ file://tmio-nand-r8.patch;patch=1 \
+ ${CHSRC}/tmio-fb-r6.patch;patch=1 \
+ file://tmio-fb-r6-fix-r0.patch;patch=1 \
+ file://tosa-keyboard-r19.patch;patch=1 \
+ ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
+ file://tosa-pxaac97-r6-fix-r0.patch;patch=1 \
+ ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
+ file://tosa-power-r18.patch;patch=1 \
+ file://tosa-power-r18-fix-r0.patch;patch=1 \
+ file://tosa-tmio-lcd-r10.patch;patch=1 \
+ file://tosa-tmio-lcd-r10-fix-r0.patch;patch=1 \
+ file://tosa-bluetooth-r8.patch;patch=1 \
+ file://wm97xx-lg13-r0.patch;patch=1 \
+ file://wm97xx-lg13-r0-fix-r0.patch;patch=1 \
+ file://wm9712-suspend-cold-res-r2.patch;patch=1 \
+ file://sharpsl-pm-postresume-r1.patch;patch=1 \
+ file://wm9712-reset-loop-r2.patch;patch=1 \
+ file://tosa-lcdnoise-r1.patch;patch=1 \
+ file://tosa-lcdnoise-r1-fix-r0.patch;patch=1 \
+ file://arm-dma-coherent.patch;patch=1 \
+ file://usb-ohci-hooks-r3.patch;patch=1 \
+ file://tmio-ohci-r9.patch;patch=1 \
+ file://pxa2xx_udc_support_inverse_vbus.patch;patch=1 \
+ file://tosa_udc_use_gpio_vbus.patch;patch=1 \
+ "
+# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
+
+SRC_URI_append_akita = "\
+ file://mtd-module.patch;patch=1;status=external \
+ file://wm8750-treble.patch;patch=1;status=external \
+ file://sharpsl-rc-r1.patch;patch=1 \
+ "
+
+SRC_URI_append_spitz = "\
+ file://mtd-module.patch;patch=1;status=external \
+ file://wm8750-treble.patch;patch=1;status=external \
+ file://spitz_h_rewrite.patch;patch=1;status=external \
+ file://sharpsl-rc-r1.patch;patch=1 \
+ "
+
+SRC_URI_append_htcuniversal ="\
+ file://htcuni-acx.patch;patch=1;status=external \
+ "
+
+SRC_URI_append_zylonite ="\
+ file://pxa_fb_overlay.patch;patch=1 \
+ file://zylonite-boot.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/linux-2.6.24"
diff --git a/packages/linux/ixp4xx-kernel/.mtn2git_empty b/packages/linux/linux-rt-2.6.24/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/ixp4xx-kernel/.mtn2git_empty
+++ b/packages/linux/linux-rt-2.6.24/.mtn2git_empty
diff --git a/packages/linux/ixp4xx-kernel/2.6.18/.mtn2git_empty b/packages/linux/linux-rt-2.6.24/mpc8313e-rdb/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/ixp4xx-kernel/2.6.18/.mtn2git_empty
+++ b/packages/linux/linux-rt-2.6.24/mpc8313e-rdb/.mtn2git_empty
diff --git a/packages/linux/linux-rt-2.6.24/mpc8313e-rdb/defconfig b/packages/linux/linux-rt-2.6.24/mpc8313e-rdb/defconfig
new file mode 100644
index 0000000000..23787a16b4
--- /dev/null
+++ b/packages/linux/linux-rt-2.6.24/mpc8313e-rdb/defconfig
@@ -0,0 +1,1734 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rt1
+# Fri Feb 15 20:51:04 2008
+#
+# CONFIG_PPC64 is not set
+
+#
+# Processor support
+#
+CONFIG_6xx=y
+# CONFIG_PPC_85xx is not set
+# CONFIG_PPC_8xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_E200 is not set
+CONFIG_83xx=y
+CONFIG_PPC_FPU=y
+CONFIG_PPC_STD_MMU=y
+CONFIG_PPC_STD_MMU_32=y
+# CONFIG_PPC_MM_SLICES is not set
+# CONFIG_SMP is not set
+CONFIG_PPC32=y
+CONFIG_WORD_SIZE=32
+CONFIG_PPC_MERGE=y
+CONFIG_MMU=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_IRQ_PER_CPU=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
+CONFIG_PPC=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_PPC_OF=y
+CONFIG_OF=y
+CONFIG_PPC_UDBG_16550=y
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFAULT_UIMAGE=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_DCR_MMIO is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_FAIR_GROUP_SCHED is not set
+# CONFIG_FAIR_USER_SCHED is not set
+# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+# CONFIG_RADIX_TREE_CONCURRENT is not set
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+# CONFIG_EPOLL is not set
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+# CONFIG_SHMEM is not set
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+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"
+
+#
+# Platform support
+#
+# CONFIG_PPC_MULTIPLATFORM is not set
+# CONFIG_PPC_82xx is not set
+CONFIG_PPC_83xx=y
+# CONFIG_PPC_86xx is not set
+# CONFIG_PPC_MPC52xx is not set
+# CONFIG_PPC_MPC5200 is not set
+# CONFIG_PPC_CELL is not set
+# CONFIG_PPC_CELL_NATIVE is not set
+# CONFIG_PQ2ADS is not set
+CONFIG_MPC8313_RDB=y
+# CONFIG_MPC832x_MDS is not set
+# CONFIG_MPC832x_RDB is not set
+# CONFIG_MPC834x_MDS is not set
+# CONFIG_MPC834x_ITX is not set
+# CONFIG_MPC836x_MDS is not set
+CONFIG_PPC_MPC831x=y
+# CONFIG_MPIC is not set
+# CONFIG_MPIC_WEIRD is not set
+# CONFIG_PPC_I8259 is not set
+# CONFIG_PPC_RTAS is not set
+# CONFIG_MMIO_NVRAM is not set
+# CONFIG_PPC_MPC106 is not set
+# CONFIG_PPC_970_NAP is not set
+# CONFIG_PPC_INDIRECT_IO is not set
+# CONFIG_GENERIC_IOMAP is not set
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPM2 is not set
+# CONFIG_FSL_ULI1575 is not set
+
+#
+# Kernel options
+#
+# CONFIG_HIGHMEM is not set
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT_DESKTOP is not set
+CONFIG_PREEMPT_RT=y
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_SOFTIRQS=y
+CONFIG_PREEMPT_HARDIRQS=y
+CONFIG_PREEMPT_BKL=y
+# CONFIG_CLASSIC_RCU is not set
+CONFIG_PREEMPT_RCU=y
+CONFIG_PREEMPT_RCU_BOOST=y
+CONFIG_RCU_TRACE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ASM_SEMAPHORES=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_POPULATES_NODE_MAP=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_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_CMDLINE_BOOL is not set
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_HIBERNATION_UP_POSSIBLE=y
+# CONFIG_SECCOMP is not set
+CONFIG_WANT_DEVICE_TREE=y
+CONFIG_DEVICE_TREE=""
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_FSL_SOC=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+# CONFIG_PCI_MSI is not set
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Advanced setup
+#
+CONFIG_ADVANCED_OPTIONS=y
+CONFIG_HIGHMEM_START=0xfe000000
+# CONFIG_LOWMEM_SIZE_BOOL is not set
+CONFIG_LOWMEM_SIZE=0x30000000
+# CONFIG_KERNEL_START_BOOL is not set
+CONFIG_KERNEL_START=0xc0000000
+# CONFIG_TASK_SIZE_BOOL is not set
+CONFIG_TASK_SIZE=0xc0000000
+# CONFIG_BOOT_LOAD_BOOL is not set
+CONFIG_BOOT_LOAD=0x00800000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+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_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# 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_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES 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=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+# 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=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RR=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+# CONFIG_NET_ACT_NAT is not set
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+# CONFIG_NET_CLS_POLICE is not set
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
+
+#
+# Wireless
+#
+CONFIG_CFG80211=y
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RCSIMPLE=y
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# 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 is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# 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_CFI_NOSWAP is not set
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# 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=y
+CONFIG_MTD_PHYSMAP_START=0xfe000000
+CONFIG_MTD_PHYSMAP_LEN=0x0800000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PHYSMAP_OF is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+CONFIG_OF_DEVICE=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=32768
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+CONFIG_EEPROM_93CX6=m
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+# CONFIG_SCSI_LOWLEVEL is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_IFB is not set
+# 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_ARCNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+CONFIG_CICADA_PHY=y
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 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_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_EEPRO100 is not set
+CONFIG_E100=y
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_SC92031 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_E1000E is not set
+# CONFIG_IP1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+CONFIG_GIANFAR=y
+CONFIG_GFAR_NAPI=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+CONFIG_NETDEV_10000=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_IXGBE is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_NIU is not set
+# CONFIG_MLX4_CORE is not set
+# CONFIG_TEHUTI is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_SDIO is not set
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_RTL8187=m
+# CONFIG_ADM8211 is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_IWLWIFI is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_BCM43XX=m
+CONFIG_BCM43XX_DEBUG=y
+CONFIG_BCM43XX_DMA=y
+CONFIG_BCM43XX_PIO=y
+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
+# CONFIG_BCM43XX_DMA_MODE is not set
+# CONFIG_BCM43XX_PIO_MODE is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+# CONFIG_RT2X00 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOL2TP=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER 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=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_OF_PLATFORM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_RMEM=m
+CONFIG_ALLOC_RTSJ_MEM=m
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+CONFIG_I2C_MPC=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_M41T00 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_MPC83xx=y
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_AT25=m
+CONFIG_SPI_SPIDEV=m
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_W1=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+# CONFIG_W1_SLAVE_DS2760 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM75=m
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_83xx_WDT=y
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_EHCI_FSL=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PPC_OF=y
+CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
+# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
+CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=y
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# Userspace I/O
+#
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+
+#
+# File systems
+#
+# CONFIG_EXT2_FS is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# 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_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=1
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# 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 is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL 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=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+CONFIG_NLS_CODEPAGE_932=y
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+CONFIG_NLS_ISO8859_8=y
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+# CONFIG_UCC_SLOW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_INSTRUMENTATION=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+CONFIG_PROFILE_NMI=y
+CONFIG_MARKERS=y
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT 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_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_EVENT_TRACE is not set
+# CONFIG_FUNCTION_TRACE is not set
+# CONFIG_WAKEUP_TIMING is not set
+# CONFIG_CRITICAL_PREEMPT_TIMING is not set
+# CONFIG_CRITICAL_IRQSOFF_TIMING is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_HAVE_MCOUNT=y
+# CONFIG_SAMPLES is not set
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUGGER is not set
+# CONFIG_VIRQ_DEBUG is not set
+# CONFIG_BDI_SWITCH is not set
+CONFIG_PPC_EARLY_DEBUG=y
+# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
+# CONFIG_PPC_EARLY_DEBUG_G5 is not set
+# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set
+# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
+# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
+# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
+# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
+# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
+# CONFIG_PPC_EARLY_DEBUG_44x is not set
+# CONFIG_PPC_EARLY_DEBUG_CPM is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ABLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_XTS is not set
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_PPC_CLOCK is not set
diff --git a/packages/linux/linux-rt-2.6.24/powerpc-clockres.patch b/packages/linux/linux-rt-2.6.24/powerpc-clockres.patch
new file mode 100644
index 0000000000..a0cf05b44e
--- /dev/null
+++ b/packages/linux/linux-rt-2.6.24/powerpc-clockres.patch
@@ -0,0 +1,47 @@
+Index: linux-2.6.24/arch/powerpc/kernel/asm-offsets.c
+===================================================================
+--- linux-2.6.24.orig/arch/powerpc/kernel/asm-offsets.c 2008-02-16 13:54:09.000000000 +0100
++++ linux-2.6.24/arch/powerpc/kernel/asm-offsets.c 2008-02-16 13:54:30.000000000 +0100
+@@ -312,7 +312,7 @@
+ DEFINE(CLOCK_REALTIME, CLOCK_REALTIME);
+ DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
+ DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
+- DEFINE(CLOCK_REALTIME_RES, TICK_NSEC);
++ DEFINE(CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);
+
+ #ifdef CONFIG_BUG
+ DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
+Index: linux-2.6.24/include/linux/hrtimer.h
+===================================================================
+--- linux-2.6.24.orig/include/linux/hrtimer.h 2008-02-16 13:54:09.000000000 +0100
++++ linux-2.6.24/include/linux/hrtimer.h 2008-02-16 13:54:33.000000000 +0100
+@@ -223,11 +223,13 @@
+ * idea of the (in)accuracy of timers. Timer values are rounded up to
+ * this resolution values.
+ */
+-# define KTIME_HIGH_RES (ktime_t) { .tv64 = 1 }
++# define HIGH_RES_NSEC 1
++# define KTIME_HIGH_RES (ktime_t) { .tv64 = HIGH_RES_NSEC }
++# define MONOTONIC_RES_NSEC HIGH_RES_NSEC
+ # define KTIME_MONOTONIC_RES KTIME_HIGH_RES
+
+ #else
+-
++# define MONOTONIC_RES_NSEC LOW_RES_NSEC
+ # define KTIME_MONOTONIC_RES KTIME_LOW_RES
+
+ /*
+Index: linux-2.6.24/include/linux/ktime.h
+===================================================================
+--- linux-2.6.24.orig/include/linux/ktime.h 2008-02-16 13:54:09.000000000 +0100
++++ linux-2.6.24/include/linux/ktime.h 2008-02-16 13:54:36.000000000 +0100
+@@ -316,7 +316,8 @@
+ * idea of the (in)accuracy of timers. Timer values are rounded up to
+ * this resolution values.
+ */
+-#define KTIME_LOW_RES (ktime_t){ .tv64 = TICK_NSEC }
++#define LOW_RES_NSEC TICK_NSEC
++#define KTIME_LOW_RES (ktime_t){ .tv64 = LOW_RES_NSEC }
+
+ /* Get the monotonic time in timespec format: */
+ extern void ktime_get_ts(struct timespec *ts);
diff --git a/packages/linux/linux-rt_2.6.24.bb b/packages/linux/linux-rt_2.6.24.bb
new file mode 100644
index 0000000000..b9f374099e
--- /dev/null
+++ b/packages/linux/linux-rt_2.6.24.bb
@@ -0,0 +1,38 @@
+require linux.inc
+
+# Mark archs/machines that this kernel supports
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
+
+DEPENDS_append_mpc8313e-rdb = " dtc-native"
+
+PR = "r2"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/projects/rt/patch-2.6.24-rt1.bz2;patch=1 \
+ http://kamikaze.waninkoko.info/patches/2.6.24/kamikaze1/broken-out/squashfs-lzma-2.6.24.patch;patch=1 \
+ file://powerpc-clockres.patch;patch=1 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-2.6.24"
+
+#SRC_URI_append_mpc8313e-rdb = "\
+# file://mpc8313e-rdb-leds.patch;patch=1"
+# file://mpc831x-nand.patch;patch=1 \
+# file://mpc8313e-rdb-rtc.patch;patch=1 "
+
+DEVICETREE_mpc8313e-rdb = "arch/${ARCH}/boot/dts/mpc8313erdb.dts"
+DEVICETREE_FLAGS_mpc8313e-rdb = "-R 8 -S 0x3000"
+
+do_devicetree_image() {
+ if test -n "${DEVICETREE}" ; then
+ dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb ${DEVICETREE}
+
+ cd ${DEPLOY_DIR_IMAGE}
+ rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ fi
+}
+
+addtask devicetree_image after do_deploy before do_package
+
diff --git a/packages/linux/linux.inc b/packages/linux/linux.inc
index 0bfcff9771..835437415f 100644
--- a/packages/linux/linux.inc
+++ b/packages/linux/linux.inc
@@ -70,7 +70,8 @@ do_configure_prepend() {
-e '/CONFIG_CPU_BIG_ENDIAN/d' \
-e '/CONFIG_LOGO=/d' \
-e '/CONFIG_LOGO_LINUX_CLUT224=/d' \
- < '${WORKDIR}/defconfig' >>'${S}/.config'
+ -e '/CONFIG_LOCALVERSION/d' \
+ < '${WORKDIR}/defconfig' >>'${S}/.config'
#
# root-over-nfs-over-usb-eth support. Limited, but should cover some cases.
@@ -99,19 +100,30 @@ do_configure_prepend() {
yes '' | oe_runmake oldconfig
}
+do_configure_append_avr32() {
+ sed -i -e s:-mno-pic::g arch/avr32/Makefile
+}
+
+
UBOOT_ENTRYPOINT ?= "20008000"
+UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}"
do_compile_append() {
if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
+ if test "x${ARCH}" = "xpowerpc" ; then
+ UBOOT_ARCH=ppc
+ else
+ UBOOT_ARCH=$ARCH
+ fi
if test -e arch/${ARCH}/boot/compressed/vmlinux ; then
${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
- uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin arch/${ARCH}/boot/uImage
+ uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C none -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin arch/${ARCH}/boot/uImage
rm -f linux.bin
else
${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
rm -f linux.bin.gz
gzip -9 linux.bin
- uboot-mkimage -A ${ARCH} -O linux -T kernel -C gzip -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz arch/${ARCH}/boot/uImage
+ uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C gzip -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz arch/${ARCH}/boot/uImage
rm -f linux.bin.gz
fi
fi
diff --git a/packages/linux/ixp4xx-kernel/2.6.19/.mtn2git_empty b/packages/linux/linux/atngw100/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/ixp4xx-kernel/2.6.19/.mtn2git_empty
+++ b/packages/linux/linux/atngw100/.mtn2git_empty
diff --git a/packages/linux/linux/atngw100/defconfig b/packages/linux/linux/atngw100/defconfig
new file mode 100644
index 0000000000..290dce50c5
--- /dev/null
+++ b/packages/linux/linux/atngw100/defconfig
@@ -0,0 +1,849 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Sat Jun 2 10:40:44 2007
+#
+CONFIG_AVR32=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_TIME=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+# CONFIG_TASK_XACCT is not set
+# CONFIG_UTS_NS is not set
+CONFIG_AUDIT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
+# System Type and features
+#
+CONFIG_SUBARCH_AVR32B=y
+CONFIG_MMU=y
+CONFIG_PERFORMANCE_COUNTERS=y
+CONFIG_PLATFORM_AT32AP=y
+CONFIG_CPU_AT32AP7000=y
+CONFIG_BOARD_ATSTK1002=y
+CONFIG_BOARD_ATSTK1000=y
+CONFIG_LOADER_U_BOOT=y
+CONFIG_LOAD_ADDRESS=0x10000000
+CONFIG_ENTRY_ADDRESS=0x90000000
+CONFIG_PHYS_OFFSET=0x10000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
+# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
+# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
+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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+# CONFIG_OWNERSHIP_TRACE is not set
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_CMDLINE=""
+
+#
+# Bus options
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET 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_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# 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
+
+#
+# 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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_MACB=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# 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_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Auxiliary Display support
+#
+
+#
+# Virtualization
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_MINIX_FS=m
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY 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_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# 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=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# 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_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_KPROBES is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux_2.6.18.bb b/packages/linux/linux_2.6.18.bb
new file mode 100644
index 0000000000..91a89c31f1
--- /dev/null
+++ b/packages/linux/linux_2.6.18.bb
@@ -0,0 +1,108 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+require linux.inc
+
+DEFAULT_PREFERENCE_avr32 = "1"
+
+PR = "r0"
+
+PARALLEL_MAKE=""
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://defconfig \
+ "
+
+SRC_URI_append_avr32 = " \
+ file://atmel-version.patch;patch=1 \
+ file://add-flush_buffer-operation-to-uart_ops.patch;patch=1 \
+ file://kbuild-add-unifdef.patch;patch=1 \
+ file://kbuild-replace-use-of-strlcpy-with-a-dedicated-implmentation-in-unifdef.patch;patch=1 \
+ file://kbuild-use-in-kernel-unifdef.patch;patch=1 \
+ file://spi-set-kset-of-master-class-dev-explicitly.patch;patch=1 \
+ file://spi-fix-spi-busnum-to-master-buffer-and-bus_num-0.patch;patch=1 \
+ file://usb-ethernet-align-all-descriptors-on-a-word-boundary.patch;patch=1 \
+ file://usb-ethernet-define-cdc-capability-for-husb2.patch;patch=1 \
+ file://usb-file-storage-align-all-descriptors-on-a-word-boundary.patch;patch=1 \
+ file://usb-serial-align-all-descriptors-on-a-word-boundary.patch;patch=1 \
+ file://usb-zero-align-all-descriptors-on-a-word-boundary.patch;patch=1 \
+ file://dont-include-map-h-from-physmap-h.patch;patch=1 \
+ file://mtd-unlock-nor-flash-automatically-where-necessary.patch;patch=1 \
+ file://avr32-arch.patch;patch=1 \
+ file://avr32-dont-include-asm-delay-h.patch;patch=1 \
+ file://avr32-unistd-h-move-ifdef-kernel.patch;patch=1 \
+ file://avr32-checkstack.patch;patch=1 \
+ file://avr32-oprofile.patch;patch=1 \
+ file://avr32-drop-GFP_COMP-for-DMA-memory-allocations.patch;patch=1 \
+ file://avr32-move-ethernet-tag-parsing-to-board-specific-code.patch;patch=1 \
+ file://avr32-dma-controller-framework.patch;patch=1 \
+ file://avr32-arch-neutral-gpio-api.patch;patch=1 \
+ file://add-mach-specific-kconfig.patch;patch=1 \
+ file://avr32-gpio-dev.patch;patch=1 \
+ file://atmel-usart3-driver.patch;patch=1 \
+ file://atmel-macb-ethernet-driver.patch;patch=1 \
+ file://at32ap7000-dmac-driver.patch;patch=1 \
+ file://atmel-mmc-host-driver.patch;patch=1 \
+ file://atmel-spi-master-driver.patch;patch=1 \
+ file://atmel-twi-driver.patch;patch=1 \
+ file://atmel-lcdc-framebuffer-driver.patch;patch=1 \
+ file://lcdc-wait-for-vsync.patch;patch=1 \
+ file://ltv350qv-lcd-driver.patch;patch=1 \
+ file://atmel-husb2-udc-driver.patch;patch=1 \
+ file://avr32-sound.patch;patch=1 \
+ file://atmel-ac97c-alsa-driver.patch;patch=1 \
+ file://at73c213-alsa-driver.patch;patch=1 \
+ file://at32-dac-oss-driver.patch;patch=1 \
+ file://renumber-usart-devices.patch;patch=1 \
+ file://rename-ttyUS-to-ttyS-or-ttyAT.patch;patch=1 \
+ file://at32-dac-oss-driver-clk-fix.patch;patch=1 \
+ file://add-all-parameters-to-smc-driver.patch;patch=1 \
+ file://at32ap7000-platform_device-definitions.patch;patch=1 \
+ file://atstk1000-instantiate-devices.patch;patch=1 \
+ file://add-hmatrix-support.patch;patch=1 \
+ file://add-ide-header.patch;patch=1 \
+ file://avr32-network-gateway-support.patch;patch=1 \
+ file://ngw-fix-usart-initialization.patch;patch=1 \
+ file://avr32-little-endian-read-write-bwl.patch;patch=1 \
+ file://gpio-dev-robustness.patch;patch=1 \
+ file://add-intc_pending_irq-to-intc.patch;patch=1 \
+ file://update-atstk1002_defconfig.patch;patch=1 \
+ file://fix-usart3-rx-BUG.patch;patch=1 \
+ file://fix-lcd-display-off-by-two-problem.patch;patch=1 \
+ file://fix-alpha-color-bitfield.patch;patch=1 \
+ file://jffs2_can_mark_obsolete-should-return-0-for-dataflash.patch;patch=1 \
+ file://mtd-fix-atmel-pri-for-cmdset-0001-and-cmdset-0002.patch;patch=1 \
+ file://fix-gpio-prototypes.patch;patch=1 \
+ file://pio-deglitch.patch;patch=1 \
+ file://pio-interrupt-controller.patch;patch=1 \
+ file://gpio-dev-blocking-read.patch;patch=1 \
+ file://add-default-atngw-defconfig.patch;patch=1 \
+ file://gpio-define-pio-none.patch;patch=1 \
+ file://mmc-add-platform-data.patch;patch=1 \
+ file://ngw100-change-spi-clock-on-dataflash.patch;patch=1 \
+ file://atstk1000-add-platform-data-for-mmc.patch;patch=1 \
+ file://avr32-increment-pointer-when-parsing-for-fbmem_start.patch;patch=1 \
+ file://lcdc-do-not-clear-mem-if-fbmem_start-is-set.patch;patch=1 \
+ file://avr32-fix-oprofile-interrupts.patch;patch=1 \
+ file://avr32-time-add-shared-interrupts.patch;patch=1 \
+ file://usart-make-rx-timeout-baudrate-independent.patch;patch=1 \
+ file://spi-reduce-dlybs-and-dlybct.patch;patch=1 \
+ file://dmac-stopping-idle-channel-is-not-fatal.patch;patch=1 \
+ file://mmc-core-dma-fix.patch;patch=1 \
+ file://atstk1000-board-fix-fbmem-setup.patch;patch=1 \
+ file://lcdc-fix-possible-null-pointer-and-match-guard-time-to-uboot.patch;patch=1 \
+ file://ltv350qv-add-initial_power_state-param.patch;patch=1 \
+ file://atmel-mci-debugfs.patch;patch=1 \
+ file://dmac-add-explicit-blockcount-to-dma_request_sg.patch;patch=1 \
+ file://atmel-mci-init-nr_blocks-in-dma-request.patch;patch=1 \
+ file://mmc-add-bit-manipulating-macros.patch;patch=1 \
+ file://mmc-add-detect-card-and-wp-support.patch;patch=1 \
+ file://atmel_spi-handle-rx-overrun.patch;patch=1 \
+ file://atmel_spi-send-zeroes-when-tx_buf-is-not-set.patch;patch=1 \
+ file://husb2_udc-test-mode.patch;patch=1 \
+ file://0001-AVR32-Fix-compile-error-with-gcc-4.1.patch;patch=1 \
+"
+
+
+S = "${WORKDIR}/linux-${PV}"
+
diff --git a/packages/linux/linux_2.6.22.bb b/packages/linux/linux_2.6.22.bb
index 03d945adbf..bb8749f0d6 100644
--- a/packages/linux/linux_2.6.22.bb
+++ b/packages/linux/linux_2.6.22.bb
@@ -5,7 +5,7 @@ DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_cm-x270 = "-1"
DEFAULT_PREFERENCE_bd-neon = "0"
-PR = "r4"
+PR = "r5"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2 \
file://defconfig \
diff --git a/packages/linux/linux_2.6.23.bb b/packages/linux/linux_2.6.23.bb
index c143e1dbf9..ffc1820229 100644
--- a/packages/linux/linux_2.6.23.bb
+++ b/packages/linux/linux_2.6.23.bb
@@ -5,11 +5,12 @@ DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_cm-x270 = "1"
DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
+DEFAULT_PREFERENCE_avr32 = "1"
DEPENDS_append_mpc8313e-rdb = " dtc-native"
DEPENDS_append_mpc8323e-rdb = " dtc-native"
-PR = "r10"
+PR = "r12"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
file://binutils-buildid-arm.patch;patch=1 \
@@ -26,6 +27,12 @@ SRC_URI += "http://people.redhat.com/mingo/cfs-scheduler/sched-cfs-v2.6.23.12-v2
# Add support for squashfs-lzma (a highly compressed read-only filesystem)
SRC_URI += "http://kamikaze.waninkoko.info/patches/2.6.23/klight1/broken-out/squashfs-lzma-2.6.23.patch;patch=1"
+# The Atmel patch doesn't apply against 2.6.23.12 :(
+SRC_URI_avr32 = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
+ file://defconfig \
+ http://avr32linux.org/twiki/pub/Main/LinuxPatches/linux-2.6.23.atmel.3.patch.bz2;patch=1 \
+ "
+
SRC_URI_append_cm-x270 = "\
file://0001-cm-x270-base2.patch;patch=1 \
file://0002-cm-x270-match-type.patch;patch=1 \
@@ -48,6 +55,7 @@ CMDLINE_cm-x270 = "console=${CMX270_CONSOLE_SERIAL_PORT},38400 monitor=8 bpp=16
DEVICETREE_mpc8313e-rdb = "arch/${ARCH}/boot/dts/mpc8313erdb.dts"
DEVICETREE_mpc8323e-rdb = "arch/${ARCH}/boot/dts/mpc832x_rdb.dts"
+DEVICETREE_FLAGS_mpc8313e-rdb = "-R 8 -S 0x3000"
FILES_kernel-image_cm-x270 = ""
@@ -88,7 +96,7 @@ python do_compulab_image() {
do_devicetree_image() {
if test -n "${DEVICETREE}" ; then
- dtc -I dts -O dtb -o ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb ${DEVICETREE}
+ dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb ${DEVICETREE}
cd ${DEPLOY_DIR_IMAGE}
rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
diff --git a/packages/linux/linux_2.6.24.bb b/packages/linux/linux_2.6.24.bb
new file mode 100644
index 0000000000..04470bdf03
--- /dev/null
+++ b/packages/linux/linux_2.6.24.bb
@@ -0,0 +1,49 @@
+require linux.inc
+
+# Mark archs/machines that this kernel supports
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_gesbc-9302 = "1"
+DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
+
+DEPENDS_append_mpc8313e-rdb = " dtc-native"
+
+PR = "r6"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 \
+ http://kamikaze.waninkoko.info/patches/2.6.24/kamikaze1/broken-out/squashfs-lzma-2.6.24.patch;patch=1 \
+ file://powerpc-clockres.patch;patch=1 \
+ file://defconfig"
+
+# Real-time preemption. This is experimental and requires a different defconfig.
+#SRC_URI += " http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.24-rt1.bz2;patch=1"
+
+SRC_URI_append_gesbc-9302 = " \
+ file://0001-gesbc-nand.patch;patch=1 \
+ file://0002-gesbc-eth-platform.patch;patch=1 \
+ file://0005-ep93xx-reboot.patch;patch=1 \
+ "
+
+SRC_URI_append_mpc8313e-rdb = "\
+ file://mpc831x-nand.patch;patch=1 \
+ file://mpc8313e-rdb-leds.patch;patch=1 \
+ file://mpc8313e-rdb-rtc.patch;patch=1"
+
+CMDLINE_gesbc-9302 = "console=ttyAM0 root=mtd5 rootfstype=jffs2 mtdparts=GESBC-NAND:64m(app),-(data)"
+
+FILES_kernel-image_gesbc-9302 = ""
+
+DEVICETREE_mpc8313e-rdb = "arch/${ARCH}/boot/dts/mpc8313erdb.dts"
+DEVICETREE_FLAGS_mpc8313e-rdb = "-R 8 -S 0x3000"
+
+do_devicetree_image() {
+ if test -n "${DEVICETREE}" ; then
+ dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb ${DEVICETREE}
+
+ cd ${DEPLOY_DIR_IMAGE}
+ rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ fi
+}
+
+addtask devicetree_image after do_deploy before do_package
+
diff --git a/packages/lm_sensors/lmsensors-apps_2.10.1.bb b/packages/lm_sensors/lmsensors-apps_2.10.1.bb
index 91d7371ca1..9d5a8af9fb 100644
--- a/packages/lm_sensors/lmsensors-apps_2.10.1.bb
+++ b/packages/lm_sensors/lmsensors-apps_2.10.1.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Hardware health monitoring applications"
-HOMEPAGE = "http://secure.netroedge.com/~lm78/"
+HOMEPAGE = "http://www.lm-sensors.org/"
DEPENDS = "sysfsutils virtual/libiconv"
LICENSE = "GPL"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-${PV}.tar.gz \
file://prefix-fix.patch;patch=1 \
@@ -13,7 +13,7 @@ SRC_URI_append_uclibc = "file://iconv.patch;patch=1"
S = "${WORKDIR}/lm_sensors-${PV}"
do_compile() {
- oe_runmake LINUX=${STAGING_KERNEL_DIR} EXLDFLAGS="${LDFLAGS}" user PROG_EXTRA=sensors
+ oe_runmake user LINUX=${STAGING_KERNEL_DIR} EXLDFLAGS="${LDFLAGS}" PROG_EXTRA=sensors MACHINE=${TARGET_ARCH}
}
do_install() {
@@ -40,9 +40,9 @@ PACKAGES =+ "libsensors libsensors-dev libsensors-dbg libsensors-doc"
PACKAGES =+ "lmsensors-sensors lmsensors-sensors-dbg lmsensors-sensors-doc"
FILES_lmsensors-sensors = "${bindir}/sensors ${sysconfdir}"
-FILES_lmsensors-sensors-dbg = "${bindir}/.debug/sensors"
+FILES_lmsensors-sensors-dbg += "${bindir}/.debug/sensors"
FILES_lmsensors-sensors-doc = "${mandir}/man1 ${mandir}/man5"
FILES_libsensors = "${libdir}/libsensors.so.*"
-FILES_libsensors-dbg = "${libdir}/.debug"
+FILES_libsensors-dbg += "${libdir}/.debug"
FILES_libsensors-dev = "${libdir}/libsensors.so ${libdir}/libsensors.a ${includedir}"
FILES_libsensors-doc = "${mandir}/man3"
diff --git a/packages/linux/ixp4xx-kernel/2.6.20/.mtn2git_empty b/packages/logic-analyzer/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/ixp4xx-kernel/2.6.20/.mtn2git_empty
+++ b/packages/logic-analyzer/.mtn2git_empty
diff --git a/packages/linux/ixp4xx-kernel/2.6.21/.mtn2git_empty b/packages/logic-analyzer/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/ixp4xx-kernel/2.6.21/.mtn2git_empty
+++ b/packages/logic-analyzer/files/.mtn2git_empty
diff --git a/packages/logic-analyzer/files/client-makefile.patch b/packages/logic-analyzer/files/client-makefile.patch
new file mode 100644
index 0000000000..7b0b4b88ce
--- /dev/null
+++ b/packages/logic-analyzer/files/client-makefile.patch
@@ -0,0 +1,426 @@
+Index: LogicAnalyzer/client/Makefile
+===================================================================
+--- LogicAnalyzer.orig/client/Makefile 2008-02-09 02:27:13.000000000 +0100
++++ LogicAnalyzer/client/Makefile 2008-02-09 02:28:34.000000000 +0100
+@@ -1,8 +1,412 @@
+-all:
+- jar cfm analyzer.jar \
+- Manifest.txt \
+- org/sump/analyzer/*.class \
+- org/sump/analyzer/tools/*.class \
+- org/sump/analyzer/icons/*.png \
+- org/sump/util/*.class \
+-
+\ No newline at end of file
++#
++# Makefile created at Fri Feb 8 23:36:42 2008, by mmake
++#
++
++# Programs (with common options):
++SHELL = /bin/sh
++CP = cp
++RM = rm -f
++MV = mv -f
++SED = sed
++ETAGS = etags
++XARGS = xargs
++CAT = cat
++FIND = find
++CPP = cpp -C -P
++
++INSTALL = install
++INSTALL_PROG = $(INSTALL) -m $(MODE_PROGS)
++INSTALL_FILE = $(INSTALL) -m $(MODE_FILES)
++INSTALL_DIR = $(INSTALL) -m $(MODE_DIRS) -d
++
++# Install modes
++MODE_PROGS = 555
++MODE_FILES = 444
++MODE_DIRS = 2755
++
++# Build programs
++JAVAC = ecj
++JAVADOC = javadoc
++JAR = fastjar
++
++# Build flags
++JAVAC_FLAGS =
++JAVADOC_FLAGS = -version -author
++JAR_FLAGS = cvf0
++JIKES_DEP_FLAG = +M
++
++# ------------------------------------------------------------------- #
++
++# Prefix for every install directory
++PREFIX =
++
++# Where to start installing the class files. Set this to an empty value
++# if you dont want to install classes
++CLASS_DIR = $(PREFIX)classes
++
++# The directory to install the jar file in. Set this to an empty value
++# if you dont want to install a jar file
++JAR_DIR = $(PREFIX)lib
++
++# The directory to install the app bundle in. Set this to an empty value
++# if you dont want to install an app bundle
++BUNDLE_DIR = $(PREFIX)lib
++
++
++# The directory to install html files generated by javadoc
++DOC_DIR = $(PREFIX)doc/api-docs
++
++# The directory to install script files in
++SCRIPT_DIR = $(PREFIX)bin
++
++# ------------------------------------------------------------------- #
++
++# The name of the jar file to install
++JAR_FILE = analyzer.jar
++
++#
++# The VERSION variable below should be set to a value
++# that will be tested in the .xjava code and Info.plist.
++#
++VERSION = CHANGE_ME
++
++# ------------------------------------------------------------------- #
++
++# The name of the OS X Application Bundle to install
++BUNDLE_FILE =
++
++# Folder containing App Bundle resources (Info.plist, *.icns, etc.)
++BUNDLE_RESOURCE_DIR = misc/macosx
++
++# Items to copy to the Resources folder of the bundle
++BUNDLE_RESOURCES = $(addsuffix .icns, $(basename $(APP_FILE)) Document)
++
++# Location of JavaApplicatonStub
++JAVA_STUB = /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub
++
++# ------------------------------------------------------------------- #
++
++# Resource files:
++# Extend the list to install other files of your choice
++RESOURCE_SRC := *.properties *.gif *.au
++
++# Objects that should go into the jar file. (find syntax)
++JAR_OBJS := \( -name '*.class' -o -name '*.gif' -o -name "*.au" \
++ -o -name '*.properties' \
++ -o -name '*.png' \)
++
++# Include the separate variables file if it exists
++MAKEFILE_VARS = makefile.vars
++VARS = $(wildcard $(MAKEFILE_VARS))
++ifneq ($(VARS),)
++ include $(MAKEFILE_VARS)
++endif
++
++
++# Packages we should compile
++PACKAGES = \
++ org.sump.analyzer.tools \
++ org.sump.util \
++ org.sump.analyzer
++
++
++# All packages that can be recursively compiled.
++ALL_PACKAGES = \
++ org \
++ org.sump \
++ $(PACKAGES)
++
++
++# Packages to generate docs for.
++JAVADOC_PACKAGES = $(PACKAGES)
++
++
++# Resource packages
++RESOURCES = \
++ doc.resources
++
++
++# Directories with shell scripts
++SCRIPTS =
++
++# ------------------------------------------------------------------- #
++
++# A marker variable for the top level directory
++TOPLEVEL := .
++
++# Subdirectories with java files:
++JAVA_DIRS := $(subst .,/,$(PACKAGES)) $(TOPLEVEL)
++
++# Subdirectories with only resource files:
++RESOURCE_DIRS := $(subst .,/,$(RESOURCES))
++
++# All the .xjava source files:
++XJAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.xjava))
++
++# All the xjava files to build
++XJAVA_OBJS := $(XJAVA_SRC:.xjava=.java)
++
++# Directory coresponding to a package
++PACKAGE_DIR = $(subst .,/,$(1))
++
++# All the (x)java files in a package
++PACKAGE_SRC = $(shell $(FIND) $(PACKAGE_DIR) \( -name '*.java' -or -name '*.xjava' \) )
++
++# All the classes to build in a package
++PACKAGE_OBJS = $(patsubst %.java,%.class,$(PACKAGE_SRC: %.xjava=%.java))
++
++# All the .java source files:
++JAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.java))
++JAVA_SRC := $(XJAVA_OBJS) $(JAVA_SRC)
++
++# Dependency files:
++DEPEND_OBJS := $(JAVA_SRC:.java=.u)
++
++# The intermediate java files and main classes we should build:
++JAVA_OBJS := $(XJAVA_OBJS) $(JAVA_SRC:.java=.class)
++
++# Search for resource files in both JAVA_DIRS and RESOURCE_DIRS
++RESOURCE_OBJS := $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
++ $(wildcard $(foreach file, $(RESOURCE_SRC), \
++ $(dir)/$(file))))
++
++# All the shell scripts source
++SCRIPT_SRCS := $(foreach dir, $(SCRIPTS), $(wildcard $(dir)/*.sh))
++# All shell scripts we should install
++SCRIPT_OBJS := $(SCRIPT_SRCS:.sh=)
++
++# All the files to install into CLASS_DIR
++INSTALL_OBJS := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.class))
++# Escape inner class delimiter $
++INSTALL_OBJS := $(subst $$,\$$,$(INSTALL_OBJS))
++# Add the resource files to be installed as well
++INSTALL_OBJS := $(INSTALL_OBJS) $(RESOURCE_OBJS)
++
++
++# ------------------------------------------------------------------- #
++
++
++define check-exit
++|| exit 1
++
++endef
++
++
++# -----------
++# Build Rules
++# -----------
++
++%.java: %.xjava
++ $(CPP) -D$(VERSION) $< $@
++
++%.class: %.java
++ $(JAVAC) $(JAVAC_FLAGS) $<
++
++%.jar: $(JAVA_OBJS) $(RESOURCE_OBJS)
++ $(FIND) $(TOPLEVEL) $(JAR_OBJS) -print | $(XARGS) \
++ $(JAR) $(JAR_FLAGS) $(JAR_FILE)
++
++%.u: %.java
++ $(JAVAC) $(JIKES_DEP_FLAG) $<
++
++
++# -------
++# Targets
++# -------
++
++.PHONY: all jar install uninstall doc clean depend tags bundle \
++ help $(ALL_PACKAGES)
++
++all:: $(JAVA_OBJS)
++
++help:
++ @echo "Usage: make {all|jar|srcjar|bundle|install|uninstall|doc|clean|depend|tags|PACKAGE_NAME}"
++ @echo " all: build all classes"
++ @echo " jar: build jar file"
++ @echo " srcjar: build source jar file"
++ @echo " bundle: build OS X app bundle"
++ @echo " install: install classes into $(CLASS_DIR)"
++ @echo " jar into $(JAR_DIR)"
++ @echo " bundle into $(BUNDLE_DIR)"
++ @echo " javadocs into $(DOC_DIR)"
++ @echo " scripts into $(SCRIPT_DIR)"
++ @echo " uninstall: remove installed files"
++ @echo " doc: generate api docs from javadoc comments"
++ @echo " clean: remove classes and temporary files"
++ @echo " depend: build class dependency info using jikes"
++ @echo " tags: build emacs tags file"
++ @echo " PACKAGE_NAME: builds all classes in this package and any subpackages."
++
++# Jar target
++ifneq ($(strip $(JAR_FILE)),)
++jar: $(JAR_FILE)
++ifneq ($(strip $(JAR_DIR)),)
++install:: $(JAR_FILE)
++ @echo "===> [Installing jar file, $(JAR_FILE) in $(JAR_DIR)] "
++ $(INSTALL_DIR) $(JAR_DIR) $(check-exit)
++ $(INSTALL_FILE) $(JAR_FILE) $(JAR_DIR) $(check-exit)
++uninstall::
++ @echo "===> [Removing jar file, $(JAR_FILE) from $(JAR_DIR)] "
++ $(RM) $(JAR_DIR)/$(JAR_FILE) $(check-exit)
++else
++install::
++ @echo "No jar install dir defined"
++endif
++clean::
++ $(RM) $(JAR_FILE)
++else
++jar:
++ @echo "No jar file defined"
++endif
++
++SRC_JAR_FILE := $(basename $(JAR_FILE))-src$(suffix $JAR_FILE)
++
++# Source jar target
++srcjar : $(SRC_JAR_FILE)
++$(SRC_JAR_FILE): $(JAVA_SRC) $(RESOURCE_OBJS)
++ $(FIND) $(TOPLEVEL) $(JAR_OBJS: .class=.java) -print | $(XARGS) \
++ $(JAR) $(JAR_FLAGS) $@
++
++# Bundle target
++ifneq ($(strip $(BUNDLE_FILE)),)
++bundle: $(BUNDLE_FILE)
++$(BUNDLE_FILE) : $(JAR_FILE)
++ $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/Resources/Java $(check-exit)
++ $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/MacOS $(check-exit)
++ $(INSTALL_PROG) $(JAVA_STUB) $(BUNDLE_FILE)/Contents/MacOS/ \
++ $(check-exit)
++ ( $(CAT) $(BUNDLE_RESOURCE_DIR)/Info.plist | $(SED) -e \
++ s/VERSION/$(VERSION)/ >98762infoplist876 ) $(check-exit)
++ $(INSTALL_FILE) 98762infoplist876 \
++ $(BUNDLE_FILE)/Contents/Info.plist $(check-exit)
++ $(RM) 98762infoplist876 $(check-exit)
++ $(INSTALL_FILE) $(JAR_FILE) $(BUNDLE_FILE)/Contents/Resources/Java
++ checkexit="";for f in $(BUNDLE_RESOURCES); do \
++ $(INSTALL_FILE) $(BUNDLE_RESOURCE_DIR)$$f $(BUNDLE_FILE)/Contents/Resources/ \
++ || checkexit=$?; \
++ done; test -z $$checkexit
++
++ifneq ($(strip $(BUNDLE_DIR)),)
++# This is probably bad, but I don't know how else to do it
++install:: $(BUNDLE_FILE)
++ @echo "===> [Installing app bundle, $(BUNDLE_FILE) in $(BUNDLE_DIR)] "
++ $(INSTALL_DIR) $(BUNDLE_DIR) $(check-exit)
++ $(CP) -R $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
++ $(INSTALL_FILE) $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
++uninstall::
++ @echo "===> [Removing bundle file, $(BUNDLE_FILE) from $(BUNDLE_DIR)] "
++ $(RM) -r $(BUNDLE_DIR)/$(BUNDLE_FILE) $(check-exit)
++else
++install::
++ @echo "No bundle install dir defined"
++endif
++clean::
++ $(RM) -r $(BUNDLE_FILE)
++else
++bundle:
++ @echo "No bundle file defined"
++endif
++
++
++# Install target for Classes and Resources
++ifneq ($(strip $(CLASS_DIR)),)
++install:: $(JAVA_OBJS)
++ @echo "===> [Installing classes in $(CLASS_DIR)] "
++ $(INSTALL_DIR) $(CLASS_DIR) $(check-exit)
++ $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
++ $(INSTALL_DIR) $(CLASS_DIR)/$(dir) $(check-exit))
++ $(foreach file, $(INSTALL_OBJS), \
++ $(INSTALL_FILE) $(file) $(CLASS_DIR)/$(file) \
++ $(check-exit))
++uninstall::
++ @echo "===> [Removing class-files from $(CLASS_DIR)] "
++ $(foreach file, $(INSTALL_OBJS), \
++ $(RM) $(CLASS_DIR)/$(file) \
++ $(check-exit))
++else
++# Print a warning here if you like. (No class install dir defined)
++endif
++
++
++
++# Depend target
++ifeq ($(findstring jikes,$(JAVAC)),jikes)
++depend: $(XJAVA_OBJS) $(DEPEND_OBJS)
++ ( $(CAT) $(DEPEND_OBJS) | $(SED) -e '/\.class$$/d' \
++ -e '/.*$$.*/d' > $(MAKEFILE_DEPEND); $(RM) $(DEPEND_OBJS); )
++else
++depend:
++ @echo "mmake needs the jikes compiler to build class dependencies"
++endif
++
++
++
++# Doc target
++ifneq ($(strip $(JAVADOC_PACKAGES)),)
++doc: $(JAVA_SRC)
++ @echo "===> [Installing java documentation in $(DOC_DIR)] "
++ $(INSTALL_DIR) $(DOC_DIR) $(check-exit)
++ $(JAVADOC) $(JAVADOC_FLAGS) -d $(DOC_DIR) $(JAVADOC_PACKAGES)
++else
++doc:
++ @echo "You must put your source files in a package to run make doc"
++endif
++
++
++
++# Script target
++ifneq ($(strip $(SCRIPT_OBJS)),)
++all:: $(SCRIPT_OBJS)
++ifneq ($(strip $(SCRIPT_DIR)),)
++install:: $(SCRIPT_OBJS)
++ @echo "===> [Installing shell-scripts in $(SCRIPT_DIR)] "
++ $(INSTALL_DIR) $(SCRIPT_DIR) $(check-exit)
++ $(foreach file, $(SCRIPT_OBJS), \
++ $(INSTALL_PROG) $(file) $(SCRIPT_DIR) $(check-exit))
++uninstall::
++ @echo "===> [Removing shell-scripts from $(SCRIPT_DIR)] "
++ $(foreach file, $(SCRIPT_OBJS), \
++ $(RM) $(SCRIPT_DIR)/$(file) $(check-exit))
++else
++# Print a warning here if you like. (No script install dir defined)
++endif
++clean::
++ rm -f $(SCRIPT_OBJS)
++endif
++
++
++
++# Tag target
++tags:
++ @echo "Tagging"
++ $(ETAGS) $(filter-out $(XJAVA_OBJS), $(JAVA_SRC)) $(XJAVA_SRC)
++
++
++
++# Various cleanup routines
++clean::
++ $(FIND) . \( -name '*~' -o -name '*.class' \) -print | \
++ $(XARGS) $(RM)
++ $(FIND) . -name '*.u' -print | $(XARGS) $(RM)
++
++ifneq ($(strip $(XJAVA_SRC)),)
++clean::
++ $(RM) $(XJAVA_OBJS)
++endif
++
++# ----------------------------------------
++# Include the dependency graph if it exist
++# ----------------------------------------
++MAKEFILE_DEPEND = makefile.dep
++DEPEND = $(wildcard $(MAKEFILE_DEPEND))
++ifneq ($(DEPEND),)
++ include $(MAKEFILE_DEPEND)
++endif
++
++#package targets
++org : $(call PACKAGE_OBJS,org)
++org.sump : $(call PACKAGE_OBJS,org.sump)
++org.sump.analyzer.tools : $(call PACKAGE_OBJS,org.sump.analyzer.tools)
++org.sump.util : $(call PACKAGE_OBJS,org.sump.util)
++org.sump.analyzer : $(call PACKAGE_OBJS,org.sump.analyzer)
++
diff --git a/packages/logic-analyzer/files/cp-run-fix.patch b/packages/logic-analyzer/files/cp-run-fix.patch
new file mode 100644
index 0000000000..401f3bb6e0
--- /dev/null
+++ b/packages/logic-analyzer/files/cp-run-fix.patch
@@ -0,0 +1,26 @@
+Index: LogicAnalyzer/client/org/sump/analyzer/Loader.java
+===================================================================
+--- LogicAnalyzer.orig/client/org/sump/analyzer/Loader.java 2008-02-08 23:34:14.000000000 +0100
++++ LogicAnalyzer/client/org/sump/analyzer/Loader.java 2008-02-08 23:46:40.000000000 +0100
+@@ -90,12 +90,19 @@
+ }
+ }
+
+- try {
+- SwingUtilities.invokeAndWait(w);
++// try {
++
++ /* Constructing and running the GUI from withing the Swing thread
++ is right and nice but does not work in Classpath (yet):
++ */
++// SwingUtilities.invokeAndWait(w);
++ w.run();
++/*
+ } catch (Exception e) {
+ System.out.println("Error while invoking application: " + e.getMessage() + "\n");
+ e.printStackTrace();
+ System.exit(-1);
+ }
++*/
+ }
+ }
diff --git a/packages/logic-analyzer/files/scrolling-capture-dialog.patch b/packages/logic-analyzer/files/scrolling-capture-dialog.patch
new file mode 100644
index 0000000000..91e9ce0766
--- /dev/null
+++ b/packages/logic-analyzer/files/scrolling-capture-dialog.patch
@@ -0,0 +1,21 @@
+Index: LogicAnalyzer/client/org/sump/analyzer/DeviceController.java
+===================================================================
+--- LogicAnalyzer.orig/client/org/sump/analyzer/DeviceController.java 2008-02-11 23:34:01.000000000 +0100
++++ LogicAnalyzer/client/org/sump/analyzer/DeviceController.java 2008-02-11 23:35:17.000000000 +0100
+@@ -43,6 +43,7 @@
+ import javax.swing.JProgressBar;
+ import javax.swing.JTabbedPane;
+ import javax.swing.JTextField;
++import javax.swing.JScrollPane;
+ import javax.swing.Timer;
+
+ import org.sump.util.Properties;
+@@ -312,7 +313,7 @@
+ // if no valid dialog exists, create one
+ if (dialog == null) {
+ dialog = new JDialog(frame, "Capture", true);
+- dialog.getContentPane().add(this);
++ dialog.getContentPane().add(new JScrollPane(this));
+ dialog.setResizable(false);
+ dialog.setSize(this.getPreferredSize());
+ // dialog.pack();
diff --git a/packages/logic-analyzer/logic-analyzer_0.8.bb b/packages/logic-analyzer/logic-analyzer_0.8.bb
new file mode 100644
index 0000000000..73e8f8ba84
--- /dev/null
+++ b/packages/logic-analyzer/logic-analyzer_0.8.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "A Java-based logical analyzer for home use."
+LICENSE = "GPL"
+HOMEPAGE = "http://sump.org/projects/analyzer/"
+
+PR = "r2"
+
+inherit java
+
+DEPENDS = "rxtx"
+RDEPENDS = "java2-runtime classpath-awt librxtx-java"
+
+SRC_URI = "\
+ http://sump.org/projects/analyzer/downloads/la-src-${PV}.tar.bz2 \
+ file://cp-run-fix.patch;patch=1 \
+ file://client-makefile.patch;patch=1 \
+ file://scrolling-capture-dialog.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/LogicAnalyzer"
+
+do_compile() {
+
+ oe_runmake -C client all jar \
+ JAR=gjar \
+ JAVAH="gjavah -classpath \$(CLASSPATH) -d \$(DEST) -jni" \
+ JAVAINCLUDEDIR=${STAGING_INCDIR}/classpath \
+ JAVAC="javac -d \$(TOP)/ -O -source 1.3 -target 1.3" \
+ JAVAC_FLAGS="-sourcepath . -bootclasspath ${STAGING_DATADIR_NATIVE}/classpath/glibj.zip -classpath ${STAGING_DATADIR}/java/RXTXcomm.jar"
+
+ oe_java_simple_wrapper org.sump.analyzer.Loader analyzer.jar RXTXcomm.jar
+}
+
+do_install() {
+ oe_jarinstall client/analyzer.jar
+
+ install -d ${D}${bindir}
+ install -m 0555 ${PN} ${D}${bindir}
+}
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${datadir_java}/analyzer.jar ${bindir}/${PN}"
+
+PACKAGE_ARCH = "all"
diff --git a/packages/lua/lua.inc b/packages/lua/lua.inc
index b713825f00..994295b729 100644
--- a/packages/lua/lua.inc
+++ b/packages/lua/lua.inc
@@ -6,9 +6,7 @@ HOMEPAGE = "http://www.lua.org/"
PACKAGES = "liblua-dbg liblualib-dbg ${PN}-dbg \
liblua-dev liblua liblualib-dev liblualib ${PN}-doc ${PN}"
-FILES_${PN}-dbg = "${bindir}/.debug"
-FILES_liblua-dbg = "${libdir}/.debug/liblua.so.*"
-FILES_liblualib-dbg = "${libdir}/.debug/liblualib.so.*"
+FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/.debug/liblua.so.* ${libdir}/.debug/liblualib.so.*"
FILES_${PN} = "${bindir}"
FILES_${PN}-doc = "${mandir}"
diff --git a/packages/madwifi/files/30-define-ioreadwrite32be-for-little-endian-too.patch b/packages/madwifi/files/30-define-ioreadwrite32be-for-little-endian-too.patch
new file mode 100644
index 0000000000..3752a554cd
--- /dev/null
+++ b/packages/madwifi/files/30-define-ioreadwrite32be-for-little-endian-too.patch
@@ -0,0 +1,13 @@
+Reported as http://madwifi.org/ticket/1783 ...
+
+--- madwifi-ng-r3314-20080131/ath_hal/ah_os.h~ 2007-11-23 20:08:18.000000000 +1030
++++ madwifi-ng-r3314-20080131/ath_hal/ah_os.h 2008-02-11 23:12:11.000000000 +1030
+@@ -168,7 +168,7 @@
+ * for the second time, so the native implementations should be preferred.
+ */
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)) && \
+- !defined(CONFIG_GENERIC_IOMAP) && (AH_BYTE_ORDER == AH_BIG_ENDIAN) && \
++ !defined(CONFIG_GENERIC_IOMAP) && \
+ !defined(__mips__) && !defined(__hppa__) && !defined(__powerpc__)
+ # ifndef iowrite32be
+ # define iowrite32be(_val, _addr) iowrite32(swab32((_val)), (_addr))
diff --git a/packages/madwifi/madwifi-modules_0.9.3.bb b/packages/madwifi/madwifi-modules_0.9.3.bb
index 523b01c9e0..25c5aae1d3 100644
--- a/packages/madwifi/madwifi-modules_0.9.3.bb
+++ b/packages/madwifi/madwifi-modules_0.9.3.bb
@@ -52,6 +52,6 @@ else
fi
}
-PACKAGES = "madwifi-tools ${PN}"
+PACKAGES = "${PN}-dbg madwifi-tools ${PN}"
FILES_${PN} = "/lib/modules/"
FILES_madwifi-tools = "/usr/sbin/"
diff --git a/packages/madwifi/madwifi-modules_cvs-bsd.bb b/packages/madwifi/madwifi-modules_cvs-bsd.bb
index 033fe7edd4..d570816fc1 100644
--- a/packages/madwifi/madwifi-modules_cvs-bsd.bb
+++ b/packages/madwifi/madwifi-modules_cvs-bsd.bb
@@ -47,6 +47,6 @@ else
fi
}
-PACKAGES = "madwifi-tools ${PN}"
+PACKAGES = "${PN}-dbg madwifi-tools ${PN}"
FILES_${PN} = "/lib/modules/"
FILES_madwifi-tools = "/usr/"
diff --git a/packages/madwifi/madwifi-modules_cvs.bb b/packages/madwifi/madwifi-modules_cvs.bb
index 6df39671db..c5cf6cf806 100644
--- a/packages/madwifi/madwifi-modules_cvs.bb
+++ b/packages/madwifi/madwifi-modules_cvs.bb
@@ -50,6 +50,6 @@ else
fi
}
-PACKAGES = "madwifi-tools ${PN}"
+PACKAGES = "${PN}-dbg madwifi-tools ${PN}"
FILES_${PN} = "/lib/modules/"
FILES_madwifi-tools = "/usr/"
diff --git a/packages/madwifi/madwifi-ng_r.inc b/packages/madwifi/madwifi-ng_r.inc
index 73c585b0d8..22cf332420 100644
--- a/packages/madwifi/madwifi-ng_r.inc
+++ b/packages/madwifi/madwifi-ng_r.inc
@@ -55,6 +55,6 @@ else
fi
}
-PACKAGES = "${PN}-modules ${PN}-tools"
+PACKAGES = "${PN}-dbg ${PN}-modules ${PN}-tools"
FILES_${PN}-modules = "/lib/modules/"
FILES_${PN}-tools = "/usr/"
diff --git a/packages/madwifi/madwifi-ng_r2702-20070903.bb b/packages/madwifi/madwifi-ng_r2702-20070903.bb
index 43a491bd1f..627d4f52b5 100644
--- a/packages/madwifi/madwifi-ng_r2702-20070903.bb
+++ b/packages/madwifi/madwifi-ng_r2702-20070903.bb
@@ -2,8 +2,6 @@
# Don't use this unless you know what you're doing -- this version does
# *NOT* build on BE kernels.
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_alix = "1"
# Disable stripping of kernel modules, since this action strips too
# much out, and the resulting module won't load.
diff --git a/packages/madwifi/madwifi-ng_r2826-20071105.bb b/packages/madwifi/madwifi-ng_r2826-20071105.bb
index 5a8bb116a3..5301e3bd42 100644
--- a/packages/madwifi/madwifi-ng_r2826-20071105.bb
+++ b/packages/madwifi/madwifi-ng_r2826-20071105.bb
@@ -1,6 +1,7 @@
# Bitbake recipe for the madwifi-ng driver
DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_alix = "1"
DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
# Disable stripping of kernel modules, since this action strips too
diff --git a/packages/madwifi/madwifi-ng_r3314-20080131.bb b/packages/madwifi/madwifi-ng_r3314-20080131.bb
new file mode 100644
index 0000000000..d47a0959a8
--- /dev/null
+++ b/packages/madwifi/madwifi-ng_r3314-20080131.bb
@@ -0,0 +1,17 @@
+# Bitbake recipe for the madwifi-ng driver
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_ixp4xx = "1"
+
+# Disable stripping of kernel modules, since this action strips too
+# much out, and the resulting module won't load.
+INHIBIT_PACKAGE_STRIP = "1"
+
+require madwifi-ng_r.inc
+
+SRC_URI += " \
+ file://30-define-ioreadwrite32be-for-little-endian-too.patch;patch=1 \
+ "
+
+# PR set after the include, to override what's set in the included file.
+PR = "r6"
diff --git a/packages/maemo4/hildon-1/buttonbox.patch b/packages/maemo4/hildon-1/buttonbox.patch
deleted file mode 100644
index cfea60d000..0000000000
--- a/packages/maemo4/hildon-1/buttonbox.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/hildon-code-dialog.c 2007-08-07 11:46:03.000000000 +0200
-+++ hildon-1/src/hildon-code-dialog.c 2007-08-07 11:46:16.468400000 +0200
-@@ -277,7 +277,7 @@
- gtk_container_add (GTK_CONTAINER (priv->buttons[3][2]), image1);
- dialog_action_area1 = GTK_DIALOG (dialog)->action_area;
- gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1),
-- GTK_BUTTONBOX_CENTER);
-+ GTK_BUTTONBOX_DEFAULT);
-
- okButton = gtk_dialog_add_button (GTK_DIALOG (dialog) ,DEVICELOCK_OK,
- GTK_RESPONSE_OK);
diff --git a/packages/maemo4/hildon-1_svn.bb b/packages/maemo4/hildon-1_svn.bb
deleted file mode 100644
index 27b0443d79..0000000000
--- a/packages/maemo4/hildon-1_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "Hildon widget library"
-LICENSE = "LGPL"
-
-DEPENDS = "gconf-dbus esound gtk+"
-
-PV = "1.0.17+svnr${SRCREV}"
-
-SRC_URI = "svn://stage.maemo.org/svn/maemo/projects/haf/trunk;module=hildon-1;proto=https \
- file://buttonbox.patch;patch=1;maxrev=14173 "
-S = "${WORKDIR}/hildon-1"
-
-inherit autotools pkgconfig lib_package
-
-EXTRA_OECONF = "--with-maemo-gtk=no"
-
-
-do_stage() {
- autotools_stage_all
-}
-
diff --git a/packages/maemo4/hildon-base-lib_0.11.1.bb b/packages/maemo4/hildon-base-lib_0.11.1.bb
deleted file mode 100644
index ce3f667a00..0000000000
--- a/packages/maemo4/hildon-base-lib_0.11.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-LICENSE = "LGPL"
-
-DEPENDS = "gtk+ virtual/libx11"
-
-SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-1.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/maemo4/hildon-lgpl_0.12.1.bb b/packages/maemo4/hildon-lgpl_0.12.1.bb
deleted file mode 100644
index 02bbad9dd2..0000000000
--- a/packages/maemo4/hildon-lgpl_0.12.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-LICENSE = "LGPL"
-
-SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-4.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
- autotools_stage_all
-}
-
diff --git a/packages/maemo4/hildon-libs_0.15.1.bb b/packages/maemo4/hildon-libs_0.15.1.bb
deleted file mode 100644
index 4c88d322ff..0000000000
--- a/packages/maemo4/hildon-libs_0.15.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia hildon librares"
-
-DEPENDS = "gtk-doc-native libosso libmatchbox"
-
-PR = "r0"
-
-SRC_URI = "http://launchpadlibrarian.net/7598381/hildon-libs_0.15.1-1ubuntu2.tar.gz"
-
-inherit autotools pkgconfig lib_package
-
-S = "${WORKDIR}/${PN}"
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.ac
- touch gtk-doc.make
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
-FILES_${PN} += "${libdir}/hildon-widgets/*"
-
diff --git a/packages/maemo4/hildon-thumbnail.inc b/packages/maemo4/hildon-thumbnail.inc
new file mode 100644
index 0000000000..46468e1ca1
--- /dev/null
+++ b/packages/maemo4/hildon-thumbnail.inc
@@ -0,0 +1,19 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia hildon thumbnail library"
+
+DEPENDS = "libhildonmime"
+
+inherit autotools pkgconfig lib_package
+
+do_configure_prepend() {
+ # remove Werror from OSSO_CFLAGS
+ sed -i s:-Werror::g configure.ac
+
+ touch gtk-doc.make
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo4/hildon-thumbnail_0.11.bb b/packages/maemo4/hildon-thumbnail_0.11.bb
deleted file mode 100644
index 54646e7630..0000000000
--- a/packages/maemo4/hildon-thumbnail_0.11.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia hildon thumbnail library"
-
-DEPENDS = "libhildonmime hildon-libs osso-thumbnail"
-
-PR = "r0"
-
-SRC_URI = "http://repository.maemo.org/pool/sardine/main/source/h/${PN}/${PN}_${PV}.tar.gz \
- "
-
-inherit autotools pkgconfig lib_package
-
-S = "${WORKDIR}/${PV}"
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.ac
- touch gtk-doc.make
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/maemo4/hildon-thumbnail_0.14.bb b/packages/maemo4/hildon-thumbnail_0.14.bb
new file mode 100644
index 0000000000..4098e465b1
--- /dev/null
+++ b/packages/maemo4/hildon-thumbnail_0.14.bb
@@ -0,0 +1,10 @@
+require hildon-thumbnail.inc
+
+DEPENDS = "libhildon libosso osso-gnome-vfs2"
+
+PR = "r0"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo4.0/free/source/h/${PN}/${PN}_${PV}.tar.gz \
+ "
+
+
diff --git a/packages/maemo4/libconic/dbus-api-update.patch b/packages/maemo4/libconic/dbus-api-update.patch
deleted file mode 100644
index 3542cecae8..0000000000
--- a/packages/maemo4/libconic/dbus-api-update.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- /tmp/conicconnection.c 2007-11-12 12:45:37.000000000 +0100
-+++ libconic-0.13/conic/conicconnection.c 2007-11-12 12:46:04.663234000 +0100
-@@ -473,7 +473,7 @@
- ICD_DBUS_PATH,
- &icd_vtable,
- NULL)) {
-- dbus_connection_disconnect(dbus_connection);
-+ dbus_connection_close(dbus_connection);
- dbus_connection_unref(dbus_connection);
- dbus_connection = NULL;
- }
---- /tmp/Makefile.am 2007-11-12 12:47:22.000000000 +0100
-+++ libconic-0.13/Makefile.am 2007-11-12 12:47:29.773234000 +0100
-@@ -1,4 +1,4 @@
--SUBDIRS = conic tests
-+SUBDIRS = conic
-
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = conic.pc
diff --git a/packages/maemo4/libconic_0.13.bb b/packages/maemo4/libconic_0.13.bb
index 511abb70cc..5f57cf77b1 100644
--- a/packages/maemo4/libconic_0.13.bb
+++ b/packages/maemo4/libconic_0.13.bb
@@ -1,13 +1,15 @@
DESCRIPTION = "Internet connection library"
LICENSE = "LGPL"
-DEPENDS = "dbus-glib gconf"
+DEPENDS = "dbus gconf osso-ic-oss"
+
+PR = "r1"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo4.0/free/source/libc/${PN}/${PN}_${PV}-0.8.tar.gz"
-SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}.tar.gz \
- file://dbus-api-update.patch;patch=1"
inherit autotools pkgconfig
do_stage() {
- autotools_stage_all
+ autotools_stage_all
}
diff --git a/packages/maemo4/libgpsbt_0.1.bb b/packages/maemo4/libgpsbt_0.1.bb
index 59d0db9fbc..beca783a0b 100644
--- a/packages/maemo4/libgpsbt_0.1.bb
+++ b/packages/maemo4/libgpsbt_0.1.bb
@@ -1,7 +1,9 @@
LICENSE = "nokia"
-DEPENDS = "libgpsmgr dbus-glib"
+DEPENDS = "libgpsmgr dbus"
+# This is proprietary software in Chinook, so we have to stay with the last released
+# free version.
SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-18.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/maemo4/libgpsmgr_0.1.bb b/packages/maemo4/libgpsmgr_0.1.bb
index f0fc14bae9..bcbb4cefcb 100644
--- a/packages/maemo4/libgpsmgr_0.1.bb
+++ b/packages/maemo4/libgpsmgr_0.1.bb
@@ -1,11 +1,13 @@
LICENSE = "nokia"
+# This is proprietary software in Chinook, so we have to stay with the last released
+# free version.
SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-10.tar.gz"
inherit autotools pkgconfig
do_stage() {
- autotools_stage_all
+ autotools_stage_all
}
diff --git a/packages/maemo4/libhildon.inc b/packages/maemo4/libhildon.inc
new file mode 100644
index 0000000000..bab16cf062
--- /dev/null
+++ b/packages/maemo4/libhildon.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Hildon widget library"
+LICENSE = "LGPL"
+
+DEPENDS = "gconf-dbus esound gtk+"
+
+inherit autotools pkgconfig lib_package
+
+EXTRA_OECONF = "--with-maemo-gtk=no"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/linux/ixp4xx-kernel/2.6.22/.mtn2git_empty b/packages/maemo4/libhildon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/ixp4xx-kernel/2.6.22/.mtn2git_empty
+++ b/packages/maemo4/libhildon/.mtn2git_empty
diff --git a/packages/maemo4/libhildon/libhildon-buildfix.patch b/packages/maemo4/libhildon/libhildon-buildfix.patch
new file mode 100644
index 0000000000..b9a669c76a
--- /dev/null
+++ b/packages/maemo4/libhildon/libhildon-buildfix.patch
@@ -0,0 +1,16 @@
+Index: libhildon-1.99.0/src/hildon-code-dialog.c
+===================================================================
+--- libhildon-1.99.0.orig/src/hildon-code-dialog.c 2007-10-10 15:03:09.000000000 +0200
++++ libhildon-1.99.0/src/hildon-code-dialog.c 2008-02-13 13:54:47.000000000 +0100
+@@ -302,7 +302,11 @@
+ gtk_container_add (GTK_CONTAINER (priv->buttons[3][2]), image1);
+ dialog_action_area1 = GTK_DIALOG (dialog)->action_area;
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1),
++#if defined (MAEMO_GTK)
+ GTK_BUTTONBOX_CENTER);
++#else
++ GTK_BUTTONBOX_DEFAULT_STYLE);
++#endif
+
+ okButton = gtk_dialog_add_button (GTK_DIALOG (dialog) ,DEVICELOCK_OK,
+ GTK_RESPONSE_OK);
diff --git a/packages/maemo4/libhildon_1.99.0.bb b/packages/maemo4/libhildon_1.99.0.bb
new file mode 100644
index 0000000000..4757d140b2
--- /dev/null
+++ b/packages/maemo4/libhildon_1.99.0.bb
@@ -0,0 +1,11 @@
+require libhildon.inc
+
+DEPENDS += "libpng libxt libxi"
+
+SRC_URI = "\
+ http://repository.maemo.org/pool/maemo4.0/free/source/libh/${PN}/${PN}_${PV}-1.tar.gz \
+ file://libhildon-buildfix.patch;patch=1 \
+ "
+
+
+
diff --git a/packages/maemo4/libhildonfm.inc b/packages/maemo4/libhildonfm.inc
new file mode 100644
index 0000000000..b6c20a4499
--- /dev/null
+++ b/packages/maemo4/libhildonfm.inc
@@ -0,0 +1,22 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia hildon filemanager library"
+
+DEPENDS = "gtk+ libxi libxt libpng gconf dbus libosso libhildon hildon-thumbnail libhildonmime osso-gwconnect mce-dev"
+
+inherit autotools pkgconfig lib_package
+
+do_configure_prepend() {
+ # remove Werror from OSSO_CFLAGS
+ sed -i s:-Werror::g configure.ac
+
+ touch gtk-doc.make
+}
+
+PARALLEL_MAKE = ""
+
+do_stage() {
+ autotools_stage_all
+ ln -sf ${STAGING_INCDIR}/hildon-fm-2/hildon/* ${STAGING_INCDIR}/hildon-widgets/
+}
+
+
diff --git a/packages/maemo4/libhildonfm/hildonfm-ifdef-maemogtk.diff b/packages/maemo4/libhildonfm/hildonfm-ifdef-maemogtk.diff
deleted file mode 100644
index 8d91e1dd65..0000000000
--- a/packages/maemo4/libhildonfm/hildonfm-ifdef-maemogtk.diff
+++ /dev/null
@@ -1,132 +0,0 @@
---- /tmp/hildon-file-selection.c 2007-10-02 10:08:17.000000000 +0200
-+++ 1_1.9.41/hildon-fm/hildon-file-selection.c 2007-10-02 11:26:58.292045000 +0200
-@@ -2036,6 +2036,7 @@
- g_object_set(cell, "text", buffer, "sensitive", sensitive, NULL);
- }
-
-+#ifdef USE_MAEMO_GTK
- static void hildon_file_selection_navigation_pane_context(GtkWidget *
- widget,
- gpointer data)
-@@ -2052,6 +2053,7 @@
- ULOG_DEBUG(__FUNCTION__);
- g_signal_emit(data, signal_content_pane_context_menu, 0);
- }
-+#endif /* USE_MAEMO_GTK */
-
- static gboolean hildon_file_selection_on_content_pane_key(GtkWidget *
- widget,
-@@ -2200,6 +2202,7 @@
- }
- }
-
-+#ifdef USE_MAEMO_GTK
- static gboolean
- tap_and_hold_query (gpointer self, guint signal_id)
- {
-@@ -2225,6 +2228,8 @@
- return tap_and_hold_query (self, signal_navigation_pane_context_menu);
- }
-
-+#endif /* USE_MAEMO_GTK */
-+
- static void hildon_file_selection_create_thumbnail_view(HildonFileSelection
- * self)
- {
-@@ -2277,7 +2282,7 @@
- g_signal_connect_object(tree, "key-press-event",
- G_CALLBACK(hildon_file_selection_on_content_pane_key),
- self, 0);
--
-+#ifdef USE_MAEMO_GTK
- gtk_widget_tap_and_hold_setup(GTK_WIDGET(tree), NULL, NULL,
- GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
- g_signal_connect_object (tree, "tap-and-hold-query",
-@@ -2286,6 +2291,7 @@
- g_signal_connect_object(tree, "tap-and-hold",
- G_CALLBACK
- (hildon_file_selection_content_pane_context), self, 0);
-+#endif /* USE_MAEMO_GTK */
-
- g_signal_connect_object(tree, "notify::has-focus",
- G_CALLBACK(content_pane_focus), self, 0);
-@@ -2397,7 +2403,7 @@
- (selection, "changed",
- G_CALLBACK (hildon_file_selection_content_pane_selection_changed),
- self, 0);
--
-+#ifdef USE_MAEMO_GTK
- gtk_widget_tap_and_hold_setup(GTK_WIDGET(tree), NULL, NULL,
- GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
- g_signal_connect_object (tree, "tap-and-hold-query",
-@@ -2406,7 +2412,7 @@
- g_signal_connect_object(tree, "tap-and-hold",
- G_CALLBACK
- (hildon_file_selection_content_pane_context), self, 0);
--
-+#endif /* USE_MAEMO_GTK */
- g_signal_connect_object(tree, "key-press-event",
- G_CALLBACK(hildon_file_selection_on_content_pane_key),
- self, 0);
-@@ -2492,7 +2498,7 @@
- g_signal_connect_object(selection, "changed",
- G_CALLBACK(hildon_file_selection_selection_changed),
- self, 0);
--
-+#ifdef USE_MAEMO_GTK
- gtk_widget_tap_and_hold_setup(GTK_WIDGET(self->priv->dir_tree), NULL,
- NULL, GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
- g_signal_connect_object (self->priv->dir_tree, "tap-and-hold-query",
-@@ -2502,7 +2508,7 @@
- G_CALLBACK
- (hildon_file_selection_navigation_pane_context),
- self, 0);
--
-+#endif /* USE_MAEMO_GTK */
- g_signal_connect_object(self->priv->dir_tree, "key-press-event",
- G_CALLBACK
- (hildon_file_selection_on_navigation_pane_key), self, 0);
---- /tmp/hildon-file-chooser-dialog.c 2007-10-02 10:14:05.000000000 +0200
-+++ 1_1.9.41/hildon-fm/hildon-file-chooser-dialog.c 2007-10-02 11:33:43.132045000 +0200
-@@ -191,7 +191,7 @@
-
- return (first_digit << 4) | second_digit;
- }
--
-+#ifdef USE_MAEMO_GTK
- static void chooser_entry_invalid_input_cb (GtkEntry *entry,
- GtkInvalidInputType inv_type,
- gpointer user_data)
-@@ -202,7 +202,7 @@
- HCS("ckdg_ib_maximum_characters_reached"));
- }
- }
--
-+#endif /* USE_MAEMO_GTK */
- static gchar *
- g_unescape_uri_string (const char *escaped,
- int len,
-@@ -1837,8 +1837,9 @@
- G_PARAM_READWRITE);
- g_object_class_install_property(gobject_class, PROP_SELECTION_MODE, pspec);
-
--
-+#ifdef USE_MAEMO_GTK
- hildon_gtk_file_chooser_install_properties(gobject_class);
-+#endif
- }
-
- static void hildon_file_chooser_dialog_sort_changed(GtkWidget * item,
-@@ -1975,10 +1976,10 @@
- g_signal_connect( priv->entry_name, "changed",
- G_CALLBACK( hildon_file_chooser_entry_changed ),
- self );
--
-+#ifdef USE_MAEMO_GTK
- g_signal_connect(priv->entry_name, "invalid-input",
- G_CALLBACK(chooser_entry_invalid_input_cb), self);
--
-+#endif /* USE_MAEMO_GTK */
- priv->hbox_location = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT);
- priv->hbox_items = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT);
- priv->image_location = gtk_image_new();
diff --git a/packages/maemo4/libhildonfm/libhildonfm-gtkmaemo-ifdef.patch b/packages/maemo4/libhildonfm/libhildonfm-gtkmaemo-ifdef.patch
new file mode 100644
index 0000000000..6af13d24bf
--- /dev/null
+++ b/packages/maemo4/libhildonfm/libhildonfm-gtkmaemo-ifdef.patch
@@ -0,0 +1,133 @@
+Index: libhildonfm-1.9.46/hildon-fm/hildon-file-chooser-dialog.c
+===================================================================
+--- libhildonfm-1.9.46.orig/hildon-fm/hildon-file-chooser-dialog.c 2007-10-16 10:11:59.000000000 +0200
++++ libhildonfm-1.9.46/hildon-fm/hildon-file-chooser-dialog.c 2008-02-14 08:24:41.000000000 +0100
+@@ -192,6 +192,7 @@
+ return (first_digit << 4) | second_digit;
+ }
+
++#ifdef USE_MAEMO_GTK
+ static void chooser_entry_invalid_input_cb (GtkEntry *entry,
+ GtkInvalidInputType inv_type,
+ gpointer user_data)
+@@ -202,6 +203,7 @@
+ HCS("ckdg_ib_maximum_characters_reached"));
+ }
+ }
++#endif
+
+ static gchar *
+ g_unescape_uri_string (const char *escaped,
+@@ -1838,7 +1840,9 @@
+ g_object_class_install_property(gobject_class, PROP_SELECTION_MODE, pspec);
+
+
++#ifdef USE_MAEMO_GTK
+ hildon_gtk_file_chooser_install_properties(gobject_class);
++#endif
+ }
+
+ static void hildon_file_chooser_dialog_sort_changed(GtkWidget * item,
+@@ -1975,10 +1979,10 @@
+ g_signal_connect( priv->entry_name, "changed",
+ G_CALLBACK( hildon_file_chooser_entry_changed ),
+ self );
+-
++#ifdef USE_MAEMO_GTK
+ g_signal_connect(priv->entry_name, "invalid-input",
+ G_CALLBACK(chooser_entry_invalid_input_cb), self);
+-
++#endif
+ priv->hbox_location = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT);
+ priv->hbox_items = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT);
+ priv->image_location = gtk_image_new();
+Index: libhildonfm-1.9.46/hildon-fm/hildon-file-selection.c
+===================================================================
+--- libhildonfm-1.9.46.orig/hildon-fm/hildon-file-selection.c 2007-10-16 10:11:59.000000000 +0200
++++ libhildonfm-1.9.46/hildon-fm/hildon-file-selection.c 2008-02-14 08:21:31.000000000 +0100
+@@ -2036,6 +2036,7 @@
+ g_object_set(cell, "text", buffer, "sensitive", sensitive, NULL);
+ }
+
++#ifdef USE_MAEMO_GTK
+ static void hildon_file_selection_navigation_pane_context(GtkWidget *
+ widget,
+ gpointer data)
+@@ -2052,6 +2053,7 @@
+ ULOG_DEBUG(__FUNCTION__);
+ g_signal_emit(data, signal_content_pane_context_menu, 0);
+ }
++#endif
+
+ static gboolean hildon_file_selection_on_content_pane_key(GtkWidget *
+ widget,
+@@ -2200,6 +2202,7 @@
+ }
+ }
+
++#ifdef USE_MAEMO_GTK
+ static gboolean
+ tap_and_hold_query (gpointer self, guint signal_id)
+ {
+@@ -2224,6 +2227,7 @@
+ {
+ return tap_and_hold_query (self, signal_navigation_pane_context_menu);
+ }
++#endif
+
+ static void hildon_file_selection_create_thumbnail_view(HildonFileSelection
+ * self)
+@@ -2277,7 +2281,7 @@
+ g_signal_connect_object(tree, "key-press-event",
+ G_CALLBACK(hildon_file_selection_on_content_pane_key),
+ self, 0);
+-
++#ifdef USE_MAEMO_GTK
+ gtk_widget_tap_and_hold_setup(GTK_WIDGET(tree), NULL, NULL,
+ GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+ g_signal_connect_object (tree, "tap-and-hold-query",
+@@ -2286,7 +2290,7 @@
+ g_signal_connect_object(tree, "tap-and-hold",
+ G_CALLBACK
+ (hildon_file_selection_content_pane_context), self, 0);
+-
++#endif
+ g_signal_connect_object(tree, "notify::has-focus",
+ G_CALLBACK(content_pane_focus), self, 0);
+ }
+@@ -2397,7 +2401,7 @@
+ (selection, "changed",
+ G_CALLBACK (hildon_file_selection_content_pane_selection_changed),
+ self, 0);
+-
++#ifdef USE_MAEMO_GTK
+ gtk_widget_tap_and_hold_setup(GTK_WIDGET(tree), NULL, NULL,
+ GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+ g_signal_connect_object (tree, "tap-and-hold-query",
+@@ -2406,7 +2410,7 @@
+ g_signal_connect_object(tree, "tap-and-hold",
+ G_CALLBACK
+ (hildon_file_selection_content_pane_context), self, 0);
+-
++#endif
+ g_signal_connect_object(tree, "key-press-event",
+ G_CALLBACK(hildon_file_selection_on_content_pane_key),
+ self, 0);
+@@ -2492,7 +2496,7 @@
+ g_signal_connect_object(selection, "changed",
+ G_CALLBACK(hildon_file_selection_selection_changed),
+ self, 0);
+-
++#ifdef USE_MAEMO_GTK
+ gtk_widget_tap_and_hold_setup(GTK_WIDGET(self->priv->dir_tree), NULL,
+ NULL, GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+ g_signal_connect_object (self->priv->dir_tree, "tap-and-hold-query",
+@@ -2502,7 +2506,7 @@
+ G_CALLBACK
+ (hildon_file_selection_navigation_pane_context),
+ self, 0);
+-
++#endif
+ g_signal_connect_object(self->priv->dir_tree, "key-press-event",
+ G_CALLBACK
+ (hildon_file_selection_on_navigation_pane_key), self, 0);
diff --git a/packages/maemo4/libhildonfm_1.9.41.bb b/packages/maemo4/libhildonfm_1.9.41.bb
deleted file mode 100644
index 777b2a456b..0000000000
--- a/packages/maemo4/libhildonfm_1.9.41.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia hildon filemanager library"
-
-DEPENDS = "hildon-thumbnail mce-dev libhildonmime osso-gwconnect hildon-libs osso-thumbnail"
-
-PR = "r1"
-
-SRC_URI = "http://repository.maemo.org/pool/sardine/main/source/libh/libhildonfm/libhildonfm_${PV}.tar.gz \
- file://hildonfm-ifdef-maemogtk.diff;patch=1 \
- "
-
-inherit autotools pkgconfig lib_package
-
-S = "${WORKDIR}/1_${PV}"
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.ac
- touch gtk-doc.make
-}
-
-
-PARALLEL_MAKE = ""
-
-do_stage() {
- autotools_stage_all
- ln -sf ${STAGING_INCDIR}/hildon-fm-2/hildon/* ${STAGING_INCDIR}/hildon-widgets/
-}
-
-
diff --git a/packages/maemo4/libhildonfm_1.9.46.bb b/packages/maemo4/libhildonfm_1.9.46.bb
new file mode 100644
index 0000000000..67816fb496
--- /dev/null
+++ b/packages/maemo4/libhildonfm_1.9.46.bb
@@ -0,0 +1,9 @@
+require libhildonfm.inc
+
+PR = "r1"
+
+SRC_URI = "\
+ http://repository.maemo.org/pool/maemo4.0/free/source/libh/${PN}/${PN}_${PV}.tar.gz \
+ file://libhildonfm-gtkmaemo-ifdef.patch;patch=1 \
+ "
+
diff --git a/packages/maemo4/libhildonhelp.inc b/packages/maemo4/libhildonhelp.inc
new file mode 100644
index 0000000000..6ce0f0ac6f
--- /dev/null
+++ b/packages/maemo4/libhildonhelp.inc
@@ -0,0 +1,17 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia hildon help library"
+
+DEPENDS = "gtk+ intltool-native libxml2 gtkhtml-3.8 libosso libhildon"
+
+inherit autotools pkgconfig lib_package
+
+do_configure_prepend() {
+ # remove Werror from OSSO_CFLAGS
+ sed -i s:-Werror::g configure.ac
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo4/libhildonhelp_1.9.1.bb b/packages/maemo4/libhildonhelp_1.9.1.bb
deleted file mode 100644
index 43d4c15d2e..0000000000
--- a/packages/maemo4/libhildonhelp_1.9.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia hildon help library"
-
-DEPENDS = "libart-lgpl libpng jpeg libxml2 gtkhtml-3.8 libosso"
-
-PR = "r0"
-
-SRC_URI = "http://repository.maemo.org/pool/sardine-experimental/main.disabled/source/libh/libhildonhelp/libhildonhelp_${PV}-1.tar.gz"
-
-inherit autotools pkgconfig lib_package
-
-S = "${WORKDIR}/${PV}-1"
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.ac
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/maemo4/libhildonhelp_1.9.6.bb b/packages/maemo4/libhildonhelp_1.9.6.bb
new file mode 100644
index 0000000000..6b6e23d951
--- /dev/null
+++ b/packages/maemo4/libhildonhelp_1.9.6.bb
@@ -0,0 +1,6 @@
+require libhildonhelp.inc
+
+PR = "r0"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo4.0/free/source/libh/${PN}/${PN}_${PV}-1.tar.gz"
+
diff --git a/packages/maemo4/libhildonmime.inc b/packages/maemo4/libhildonmime.inc
new file mode 100644
index 0000000000..12c74a334b
--- /dev/null
+++ b/packages/maemo4/libhildonmime.inc
@@ -0,0 +1,17 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia hildon mime library"
+
+DEPENDS = "libosso gnome-vfs"
+
+inherit autotools pkgconfig lib_package
+
+do_configure_prepend() {
+ # remove Werror from OSSO_CFLAGS
+ sed -i s:-Werror::g configure.in
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo4/libhildonmime_1.10.0.bb b/packages/maemo4/libhildonmime_1.10.0.bb
new file mode 100644
index 0000000000..2198f6b2ee
--- /dev/null
+++ b/packages/maemo4/libhildonmime_1.10.0.bb
@@ -0,0 +1,9 @@
+require libhildonmime.inc
+
+DEPENDS += "osso-gnome-vfs2"
+
+PR = "r0"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo4.0/free/source/libh/${PN}/${PN}_${PV}-1.tar.gz"
+
+EXTRA_OECONF += "--with-compile-warnings=no"
diff --git a/packages/maemo4/libhildonmime_1.9.5.bb b/packages/maemo4/libhildonmime_1.9.5.bb
index 1e0285b1fb..1a06284314 100644
--- a/packages/maemo4/libhildonmime_1.9.5.bb
+++ b/packages/maemo4/libhildonmime_1.9.5.bb
@@ -1,23 +1,6 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia hildon mime library"
-
-DEPENDS = "libosso gnome-vfs"
+require libhildonmime.inc
PR = "r0"
SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/universe/libh/libhildonmime/libhildonmime_${PV}-1ubuntu1.tar.gz"
-inherit autotools pkgconfig lib_package
-
-S = "${WORKDIR}/${PN}"
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.in
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/maemo4/libosso-gsf_1.11.10.4.bb b/packages/maemo4/libosso-gsf_1.11.10.4.bb
index 8888ac7780..6adbc0f6e3 100644
--- a/packages/maemo4/libosso-gsf_1.11.10.4.bb
+++ b/packages/maemo4/libosso-gsf_1.11.10.4.bb
@@ -1,12 +1,13 @@
LICENSE = "GPL"
+PR = "r1"
+
DEPENDS = "glib-2.0 zlib"
-SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-1.tar.gz"
+SRC_URI = "http://repository.maemo.org/pool/maemo4.0/free/source/libo/${PN}_${PV}-1.tar.gz"
inherit autotools pkgconfig
-
do_configure() {
gnu-configize
libtoolize --force
@@ -14,7 +15,7 @@ do_configure() {
}
do_stage() {
- autotools_stage_all
+ autotools_stage_all
}
diff --git a/packages/maemo4/libosso.inc b/packages/maemo4/libosso.inc
new file mode 100644
index 0000000000..7af653ed44
--- /dev/null
+++ b/packages/maemo4/libosso.inc
@@ -0,0 +1,19 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia OSSO IPC library"
+
+DEPENDS = "dbus-glib glib-2.0 mce-dev"
+
+inherit autotools pkgconfig lib_package
+
+do_configure_prepend() {
+ # Remove Werror from OSSO_CFLAGS since the source
+ # contains many implicit (const void *) to (void *)
+ # conversions.
+ sed -i s:-Werror::g configure.ac
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/linux/ixp4xx-kernel/2.6.23/.mtn2git_empty b/packages/maemo4/libosso/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/ixp4xx-kernel/2.6.23/.mtn2git_empty
+++ b/packages/maemo4/libosso/.mtn2git_empty
diff --git a/packages/maemo4/libosso/libosso-buildfix.patch b/packages/maemo4/libosso/libosso-buildfix.patch
new file mode 100644
index 0000000000..adb0ca6b5f
--- /dev/null
+++ b/packages/maemo4/libosso/libosso-buildfix.patch
@@ -0,0 +1,64 @@
+Index: libosso-2.13/src/osso-hw.c
+===================================================================
+--- libosso-2.13.orig/src/osso-hw.c 2008-02-13 12:55:17.000000000 +0100
++++ libosso-2.13/src/osso-hw.c 2008-02-13 13:02:55.000000000 +0100
+@@ -23,6 +23,9 @@
+ * 02110-1301 USA
+ */
+
++#define _GNU_SOURCE
++#include <string.h>
++
+ #include "osso-internal.h"
+ #include "osso-hw.h"
+ #include "osso-mem.h"
+@@ -635,7 +638,7 @@
+ (*cb)((muali_context_t*)osso, &info, data->user_data);
+
+ if (info.args != NULL) {
+- free(info.args);
++ free((void *) info.args);
+ info.args = NULL;
+ }
+ }
+@@ -762,7 +765,7 @@
+ (*cb)((muali_context_t*)osso, &info, data->user_data);
+
+ if (info.args != NULL) {
+- free(info.args);
++ free((void *) info.args);
+ info.args = NULL;
+ }
+ }
+Index: libosso-2.13/src/osso-rpc.c
+===================================================================
+--- libosso-2.13.orig/src/osso-rpc.c 2008-02-13 13:03:13.000000000 +0100
++++ libosso-2.13/src/osso-rpc.c 2008-02-13 13:06:05.000000000 +0100
+@@ -997,7 +997,8 @@
+ int *serial)
+ {
+ int i;
+- char buf[20], *p;
++ char buf[20];
++ const char *p;
+
+ /* get bus type */
+ for (i = 0, p = id; *p != ','; ++p, ++i) {
+@@ -1101,7 +1102,7 @@
+ (*cb)((muali_context_t*)osso, &info, cb_data->user_data);
+
+ if (info.args != NULL) {
+- free(info.args);
++ free((void *) info.args);
+ info.args = NULL;
+ }
+ }
+@@ -1410,7 +1411,7 @@
+ cb_data->message_id = (long)msg_serial;
+
+ cb_data->user_cb = reply_handler;
+- cb_data->user_data = user_data;
++ cb_data->user_data = (void *) user_data;
+ cb_data->match_rule = NULL;
+ cb_data->event_type = 0;
+ cb_data->bus_type = bus_type;
diff --git a/packages/maemo4/libosso_1.20.bb b/packages/maemo4/libosso_1.20.bb
deleted file mode 100644
index d5489c7e95..0000000000
--- a/packages/maemo4/libosso_1.20.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia osso library"
-
-DEPENDS = "hildon-1 dbus-glib glib-2.0 outo"
-
-PR = "r1"
-
-SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-1.tar.gz"
-
-inherit autotools pkgconfig lib_package
-
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.ac
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/maemo4/libosso_2.13.bb b/packages/maemo4/libosso_2.13.bb
new file mode 100644
index 0000000000..1920e29d3a
--- /dev/null
+++ b/packages/maemo4/libosso_2.13.bb
@@ -0,0 +1,16 @@
+require libosso.inc
+
+PR = "r0"
+
+SRC_URI = "\
+ http://repository.maemo.org/pool/maemo4.0/free/source/libo/${PN}/${PN}_${PV}-1.1fix.tar.gz \
+ file://libosso-buildfix.patch;patch=1 \
+ "
+
+PACKAGES += "${PN}-outo ${PN}-outo-dev ${PN}-outo-dbg ${PN}-outo-bin-dbg ${PN}-outo-bin"
+
+FILES_${PN}-outo = "${libdir}/outo/lib*.so"
+FILES_${PN}-outo-dev = "${libdir}/outo/*.la ${libdir}/outo/*.a"
+FILES_${PN}-outo-dbg = "${libdir}/outo/.debug/lib*.so
+FILES_${PN}-outo-bin-dbg = "${libdir}/outo/.debug/*bin"
+FILES_${PN}-outo-bin = "${libdir}/outo/*bin ${libdir}/outo/mimedummy.doc"
diff --git a/packages/maemo4/mce-dev.inc b/packages/maemo4/mce-dev.inc
new file mode 100644
index 0000000000..55db0d69da
--- /dev/null
+++ b/packages/maemo4/mce-dev.inc
@@ -0,0 +1,22 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia MCE headers"
+
+inherit pkgconfig
+
+do_compile() {
+ # Nothing to compile in this recipe. These are just headers.
+ :
+}
+
+do_install() {
+ install -d ${D}${prefix}/include
+ install -d ${D}${libdir}/pkgconfig
+
+ cp -pPr include/* ${D}${prefix}/include
+ cp *.pc ${D}${libdir}/pkgconfig/
+}
+
+do_stage() {
+ cp -pPr include/* ${STAGING_INCDIR}/
+}
+
diff --git a/packages/maemo4/mce-dev_1.5.6.bb b/packages/maemo4/mce-dev_1.5.6.bb
deleted file mode 100644
index 6168cbe31e..0000000000
--- a/packages/maemo4/mce-dev_1.5.6.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia MCE headers"
-
-PR = "r0"
-
-SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/universe/m/mce-dev/mce-dev_${PV}.tar.gz"
-
-inherit pkgconfig
-
-do_compile() {
- :
-}
-
-
-do_install() {
- install -d ${D}${prefix}/include
- install -d ${D}${libdir}/pkgconfig
- cp -pPr include/* ${D}${prefix}/include
- cp *.pc ${D}${libdir}/pkgconfig/
-}
-
-do_stage() {
- cp -pPr include/* ${STAGING_INCDIR}/
-}
-
-
diff --git a/packages/maemo4/mce-dev_1.6.3.bb b/packages/maemo4/mce-dev_1.6.3.bb
new file mode 100644
index 0000000000..66e238c109
--- /dev/null
+++ b/packages/maemo4/mce-dev_1.6.3.bb
@@ -0,0 +1,7 @@
+require mce-dev.inc
+
+PR = "r0"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo4.0/free/source/m/mce-dev/mce-dev_${PV}.tar.gz"
+
+
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/ghi270/.mtn2git_empty b/packages/maemo4/osso-gnome-vfs2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/ghi270/.mtn2git_empty
+++ b/packages/maemo4/osso-gnome-vfs2/.mtn2git_empty
diff --git a/packages/maemo4/osso-gnome-vfs2/gnome-vfs-no-kerberos.patch b/packages/maemo4/osso-gnome-vfs2/gnome-vfs-no-kerberos.patch
new file mode 100644
index 0000000000..e25ecdd66f
--- /dev/null
+++ b/packages/maemo4/osso-gnome-vfs2/gnome-vfs-no-kerberos.patch
@@ -0,0 +1,51 @@
+removes kerberos completely to avoid conflicts with installed kerberos
+--- configure.in.orig 2007-01-05 19:42:26.418541610 +0200
++++ configure.in 2007-01-05 19:42:56.604261797 +0200
+@@ -436,47 +436,6 @@
+ ])
+ AM_CONDITIONAL(HAVE_CDDA, test $have_cdda = yes)
+ AC_SUBST(CDDA_LIBS)
+-
+-dnl GSSAPI
+-dnl Check for Kerberos installation
+-have_gssapi=no
+-AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin)
+-
+-if test "x$KRB5_CONFIG" != "xnone"; then
+- GSSAPI_LIBS="`${KRB5_CONFIG} --libs gssapi`"
+- GSSAPI_CFLAGS="`${KRB5_CONFIG} --cflags gssapi`"
+-
+- saved_CPPFLAGS="$CPPFLAGS"
+- saved_LIBS="$LIBS"
+- LIBS="$LIBS $GSSAPI_LIBS"
+- CPPFLAGS="$CPPFLAGS $GSSAPI_CFLAGS"
+- # MIT and Heimdal put gssapi.h in different places
+- AC_CHECK_HEADERS(gssapi/gssapi.h gssapi.h, [
+- AC_CHECK_FUNCS(gss_init_sec_context, [
+- AC_MSG_NOTICE([GSSAPI authentication support enabled])
+- AC_DEFINE(HAVE_GSSAPI, 1, [Define if GSSAPI support is enabled])
+- AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
+- have_gssapi=yes
+-
+- # MIT Kerberos lacks GSS_C_NT_HOSTBASED_SERVICE
+- AC_CHECK_DECL([GSS_C_NT_HOSTBASED_SERVICE],,
+- [AC_DEFINE([GSS_C_NT_HOSTBASED_SERVICE], gss_nt_service_name,
+- [Define if GSS_C_NT_HOSTBASED_SERVICE is not defined otherwise])
+- ], [
+- #ifdef HAVE_GSSAPI_GSSAPI_H
+- #include <gssapi/gssapi.h>
+- #else
+- #include <gssapi.h>
+- #endif
+- ])
+- ])
+- break
+- ])
+- LIBS="$saved_LIBS"
+- CPPFLAGS="$saved_CPPFLAGS"
+-fi
+-AC_SUBST(GSSAPI_LIBS)
+-AC_SUBST(GSSAPI_CFLAGS)
+
+ dnl ******************************
+ dnl http-method (neon checks)
diff --git a/packages/maemo4/osso-gnome-vfs2_2.16.3.bb b/packages/maemo4/osso-gnome-vfs2_2.16.3.bb
new file mode 100644
index 0000000000..45a373fd11
--- /dev/null
+++ b/packages/maemo4/osso-gnome-vfs2_2.16.3.bb
@@ -0,0 +1,48 @@
+LICENSE = "GPL"
+DEPENDS = "libxml2 gconf gnutls avahi dbus bzip2 gnome-mime-data zlib"
+RRECOMMENDS = "gnome-vfs-plugin-file gnome-mime-data shared-mime-info"
+
+DESCRIPTION = "gnomevfs - osso variant"
+
+PR = "r0"
+
+inherit gnome
+
+SRC_URI = "\
+ http://repository.maemo.org/pool/maemo4.0/free/source/o/${PN}/${PN}_${PV}-1osso31.tar.gz \
+ file://gnome-vfs-no-kerberos.patch;patch=1;pnum=0 \
+ "
+
+
+EXTRA_OECONF = " \
+ --disable-openssl \
+ --enable-gnutls \
+ --enable-avahi \
+ --with-samba-includes=${STAGING_INCDIR} \
+ --enable-more-warnings=no \
+ "
+
+do_configure_prepend() {
+ # remove Werror from VFS_CFLAGS
+ sed -i s:-Werror::g configure.in
+
+ touch gtk-doc.make
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES_DYNAMIC = "osso-gnome-vfs-plugin-*"
+
+python populate_packages_prepend () {
+ print bb.data.getVar('FILES_osso-gnome-vfs', d, 1)
+
+ plugindir = bb.data.expand('${libdir}/gnome-vfs-2.0/modules/', d)
+ do_split_packages(d, plugindir, '^lib(.*)\.so$', 'osso-gnome-vfs-plugin-%s', 'OSSO GNOME VFS plugin for %s')
+}
+
+FILES_${PN} += "${datadir}/dbus-1"
+FILES_${PN}-dbg += " ${libdir}/gnome-vfs-2.0/modules/.debug/lib*.so"
+FILES_${PN}-dev += " ${libdir}/gnome-vfs-2.0/include ${libdir}/gnome-vfs-2.0/modules/lib*.a ${libdir}/gnome-vfs-2.0/modules/lib*.la"
+FILES_${PN}-doc += " ${datadir}/gtk-doc"
diff --git a/packages/maemo4/osso-gwconnect.inc b/packages/maemo4/osso-gwconnect.inc
new file mode 100644
index 0000000000..8781b1eb25
--- /dev/null
+++ b/packages/maemo4/osso-gwconnect.inc
@@ -0,0 +1,17 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia osso connection library"
+
+DEPENDS = "libosso"
+
+inherit autotools pkgconfig
+
+do_configure_prepend() {
+ # remove Werror from OSSO_CFLAGS
+ sed -i s:-Werror::g configure.ac
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo4/osso-gwconnect_1.0.12.bb b/packages/maemo4/osso-gwconnect_1.0.12.bb
new file mode 100644
index 0000000000..1a499687f8
--- /dev/null
+++ b/packages/maemo4/osso-gwconnect_1.0.12.bb
@@ -0,0 +1,8 @@
+require osso-gwconnect.inc
+
+DEPENDS += "libhildon bluez-libs"
+
+PR = "r0"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo4.0/free/source/o/${PN}/${PN}_${PV}.tar.gz"
+
diff --git a/packages/maemo4/osso-gwconnect_1.0.8.bb b/packages/maemo4/osso-gwconnect_1.0.8.bb
deleted file mode 100644
index 66b47ebac2..0000000000
--- a/packages/maemo4/osso-gwconnect_1.0.8.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia osso connection library"
-
-DEPENDS = "hildon-1 libosso"
-
-PR = "r1"
-
-SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.ac
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/maemo4/osso-ic-oss_1.0.4.bb b/packages/maemo4/osso-ic-oss_1.0.4.bb
index 4f9b742fb7..04ec84e4e2 100644
--- a/packages/maemo4/osso-ic-oss_1.0.4.bb
+++ b/packages/maemo4/osso-ic-oss_1.0.4.bb
@@ -1,16 +1,16 @@
LICENSE = "LGPL"
DESCRIPTION = "Nokia osso-ic library"
-DEPENDS = "dbus-glib glib-2.0 outo libosso"
+DEPENDS = "dbus-glib glib-2.0 libosso"
-PR = "r0"
+PR = "r1"
+# No sources for that Maemo revision any more.
SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}.tar.gz \
file://dbus-api-update.patch;patch=1 "
inherit autotools pkgconfig lib_package
-
do_configure_prepend() {
# remove Werror from OSSO_CFLAGS
sed -i s:-Werror::g configure.ac
diff --git a/packages/maemo4/osso-thumbnail_0.7.bb b/packages/maemo4/osso-thumbnail_0.7.bb
deleted file mode 100644
index d99ee786b5..0000000000
--- a/packages/maemo4/osso-thumbnail_0.7.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-LICENSE = "LGPL"
-DESCRIPTION = "Nokia osso thumbnail library"
-
-DEPENDS = "gnome-vfs gconf-dbus hildon-1 libosso"
-
-PR = "r0"
-
-SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-1.tar.gz"
-
-inherit autotools pkgconfig lib_package
-
-
-do_configure_prepend() {
- # remove Werror from OSSO_CFLAGS
- sed -i s:-Werror::g configure.ac
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/maemo4/outo_0.1.1.bb b/packages/maemo4/outo_0.1.1.bb
deleted file mode 100644
index 7fe0343691..0000000000
--- a/packages/maemo4/outo_0.1.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Outo Unit Tester by Otso"
-LICENSE = "LGPL"
-
-SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/o/outo/outo_${PV}.orig.tar.gz \
- http://repository.maemo.org/pool/maemo/ossw/source/o/outo/outo_0.1.1-2.diff.gz;patch=1;pnum=1"
-S = "${WORKDIR}/outo-0.1.1-20030806.orig"
-
-inherit pkgconfig autotools
-
-
-do_stage() {
- install -d ${STAGING_INCDIR}
- install -m 644 include/outo.h ${STAGING_INCDIR}
-}
diff --git a/packages/man-pages/man-pages_2.41.bb b/packages/man-pages/man-pages_2.41.bb
index b05c591d56..d12d9ff4f5 100644
--- a/packages/man-pages/man-pages_2.41.bb
+++ b/packages/man-pages/man-pages_2.41.bb
@@ -12,5 +12,4 @@ do_install () {
oe_runmake 'prefix=${D}' install
}
-PACKAGES = "${PN}"
FILES_${PN} = "*"
diff --git a/packages/matchbox-common/matchbox_0.9.1.bb b/packages/matchbox-common/matchbox_0.9.1.bb
index cda90dfb50..0821b03bcc 100644
--- a/packages/matchbox-common/matchbox_0.9.1.bb
+++ b/packages/matchbox-common/matchbox_0.9.1.bb
@@ -2,7 +2,6 @@ DESCRIPTION = "Metapackage for Matchbox suite"
LICENSE = "GPL"
RDEPENDS = "matchbox-common matchbox-wm matchbox-panel matchbox-desktop"
SECTION = "x11/wm"
-PACKAGES = "${PN}"
PR = "r1"
ALLOW_EMPTY = "1"
diff --git a/packages/matchbox-themes-extra/matchbox-themes-extra_0.3.bb b/packages/matchbox-themes-extra/matchbox-themes-extra_0.3.bb
index c695388780..592ffa50a2 100644
--- a/packages/matchbox-themes-extra/matchbox-themes-extra_0.3.bb
+++ b/packages/matchbox-themes-extra/matchbox-themes-extra_0.3.bb
@@ -12,7 +12,7 @@ PACKAGE_ARCH = "all"
inherit autotools pkgconfig
# split into several packages plus one meta package
-PACKAGES = "${PN} ${PN}-industrial ${PN}-expose ${PN}-mbcrystal"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-industrial ${PN}-expose ${PN}-mbcrystal"
ALLOW_EMPTY_${PN} = "1"
FILES_${PN} = ""
diff --git a/packages/meta/package-index.bb b/packages/meta/package-index.bb
index 3d7d5f2839..f52fb6c72b 100644
--- a/packages/meta/package-index.bb
+++ b/packages/meta/package-index.bb
@@ -1,5 +1,6 @@
DESCRIPTION = "Rebuild the package index"
LICENSE = "MIT"
+DEPENDS = "ipkg-utils-native"
INHIBIT_DEFAULT_DEPS = "1"
ALLOW_EMPTY = "1"
diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb
index 667b2b2e69..b5d05c9203 100644
--- a/packages/meta/slugos-packages.bb
+++ b/packages/meta/slugos-packages.bb
@@ -5,10 +5,10 @@
DESCRIPTION = "Packages that are compatible with the SlugOS firmware"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r44"
+PR = "r47"
CONFLICTS = "db3"
-COMPATIBLE_MACHINE = "nslu2"
+COMPATIBLE_MACHINE = "nslu2|ixp4xx"
EXCLUDE_FROM_WORLD = "1"
INHIBIT_DEFAULT_DEPS = "1"
ALLOW_EMPTY = "1"
@@ -76,7 +76,6 @@ SLUGOS_PACKAGES = "\
dnsmasq \
e2fsprogs \
e2fsprogs-libs \
- eciadsl \
expat \
ez-ipupdate \
fconfig \
@@ -95,13 +94,14 @@ SLUGOS_PACKAGES = "\
glib-2.0 \
gnu-config \
gphoto2 \
+ gpsd \
grep \
groff \
- gspcav1 \
gtk-doc \
gzip \
hdparm \
ifupdown \
+ inetutils \
iperf \
ipkg-utils \
iptables \
@@ -109,6 +109,7 @@ SLUGOS_PACKAGES = "\
irssi \
joe \
jpeg \
+ kexec-tools \
lcdproc \
less \
libao \
@@ -128,6 +129,7 @@ SLUGOS_PACKAGES = "\
libusb \
libvorbis \
libxml2 \
+ lighttpd \
linphone \
litestream \
logrotate \
@@ -193,6 +195,7 @@ SLUGOS_PACKAGES = "\
reiserfsprogs reiser4progs \
rng-tools \
rsync \
+ rtorrent \
samba \
sane-backends \
screen \
@@ -202,9 +205,11 @@ SLUGOS_PACKAGES = "\
sipsak \
slugimage \
smartmontools \
+ sqlite \
ssmtp \
strace \
streamripper \
+ stunnel \
sudo \
sysfsutils \
tar \
@@ -244,7 +249,9 @@ SLUGOS_PACKAGES = "\
SLUGOS_BROKEN_PACKAGES = "\
bwmon \
dsniff \
+ eciadsl \
fetchmail \
+ gspcav1 \
lirc-modules lirc \
madfu \
openldap \
diff --git a/packages/midpath/midpath-alsa_0.1.bb b/packages/midpath/midpath-alsa_0.1.bb
index 6d580405b6..1ccace8500 100644
--- a/packages/midpath/midpath-alsa_0.1.bb
+++ b/packages/midpath/midpath-alsa_0.1.bb
@@ -30,7 +30,6 @@ do_stage() {
:
}
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/libmidpathalsa.so \
${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
diff --git a/packages/midpath/midpath-cldc-native_0.1.bb b/packages/midpath/midpath-cldc-native_0.1.bb
index 30f67854d4..4e54497bde 100644
--- a/packages/midpath/midpath-cldc-native_0.1.bb
+++ b/packages/midpath/midpath-cldc-native_0.1.bb
@@ -4,7 +4,7 @@ inherit native
require midpath-cldc_${PV}.bb
-PACKAGES = " "
+PACKAGES = "${PN}-dbg "
do_install() {
:
diff --git a/packages/midpath/midpath-cldc-sdl_0.1.bb b/packages/midpath/midpath-cldc-sdl_0.1.bb
index 65850e2f4c..6d777f6e8c 100644
--- a/packages/midpath/midpath-cldc-sdl_0.1.bb
+++ b/packages/midpath/midpath-cldc-sdl_0.1.bb
@@ -32,7 +32,6 @@ do_stage() {
install -m 0644 ${S}/external/sdljava-cldc/sdljava-cldc.jar ${STAGING_DATADIR}/java
}
-PACKAGES = "${PN}"
FILES_${PN} = "${datadir}/java/sdljava-cldc.jar \
${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
diff --git a/packages/midpath/midpath-cldc-x11_0.1.bb b/packages/midpath/midpath-cldc-x11_0.1.bb
index 7c92621c36..7aa8e9c6d9 100644
--- a/packages/midpath/midpath-cldc-x11_0.1.bb
+++ b/packages/midpath/midpath-cldc-x11_0.1.bb
@@ -31,7 +31,6 @@ do_stage() {
install -m 0644 ${S}/external/escher-cldc/core/escher-x11-cldc.jar ${STAGING_DATADIR}/java
}
-PACKAGES = "${PN}"
FILES_${PN} = "${datadir}/java/escher-x11-cldc.jar \
${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
diff --git a/packages/midpath/midpath-cldc_0.1.bb b/packages/midpath/midpath-cldc_0.1.bb
index 7aeefa5264..e18d42781d 100644
--- a/packages/midpath/midpath-cldc_0.1.bb
+++ b/packages/midpath/midpath-cldc_0.1.bb
@@ -30,6 +30,5 @@ do_stage() {
install -m 0644 dist/midpath-cldc1.1.jar ${STAGING_DATADIR}/midpath-cldc
}
-PACKAGES = "${PN}"
FILES_${PN} = "${datadir}/midpath-cldc/midpath-cldc1.1.jar"
diff --git a/packages/midpath/midpath-gtk_0.1.bb b/packages/midpath/midpath-gtk_0.1.bb
index 7bf5570ef2..42f6325efa 100644
--- a/packages/midpath/midpath-gtk_0.1.bb
+++ b/packages/midpath/midpath-gtk_0.1.bb
@@ -32,7 +32,6 @@ do_stage() {
:
}
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/libmidpathgtk.so \
${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
diff --git a/packages/midpath/midpath-pulseaudio_0.1.bb b/packages/midpath/midpath-pulseaudio_0.1.bb
index 6344e018a0..1a8c44d38c 100644
--- a/packages/midpath/midpath-pulseaudio_0.1.bb
+++ b/packages/midpath/midpath-pulseaudio_0.1.bb
@@ -30,7 +30,6 @@ do_stage() {
:
}
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/libmidpathpulse.so \
${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
diff --git a/packages/midpath/midpath-qt3x11_0.1.bb b/packages/midpath/midpath-qt3x11_0.1.bb
index 1d24012810..7ad9af9991 100644
--- a/packages/midpath/midpath-qt3x11_0.1.bb
+++ b/packages/midpath/midpath-qt3x11_0.1.bb
@@ -37,7 +37,6 @@ do_stage() {
:
}
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/libmidpathqt.so \
${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
diff --git a/packages/midpath/midpath-qte_0.1.bb b/packages/midpath/midpath-qte_0.1.bb
index 39b9264930..4b7144722f 100644
--- a/packages/midpath/midpath-qte_0.1.bb
+++ b/packages/midpath/midpath-qte_0.1.bb
@@ -35,7 +35,6 @@ do_stage() {
:
}
-PACKAGES = "${PN}"
FILES_${PN} = "${libdir}/libmidpathqt.so \
${datadir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \
diff --git a/packages/midpath/midpath-test_0.1.bb b/packages/midpath/midpath-test_0.1.bb
index 14bfdc97f0..3d06e80797 100644
--- a/packages/midpath/midpath-test_0.1.bb
+++ b/packages/midpath/midpath-test_0.1.bb
@@ -37,7 +37,6 @@ do_stage() {
:
}
-PACKAGES = "${PN}"
FILES_${PN} = "${datadir}/java/midpath-tests.jar \
# ${bindir}/graphical_launcher-j2se.sh \
diff --git a/packages/midpath/midpath_0.1.bb b/packages/midpath/midpath_0.1.bb
index 3501144701..e787b053be 100644
--- a/packages/midpath/midpath_0.1.bb
+++ b/packages/midpath/midpath_0.1.bb
@@ -48,7 +48,6 @@ do_stage() {
install -m 0644 dist/midpath.jar ${STAGING_DATADIR}/java
}
-PACKAGES = "${PN}"
FILES_${PN} = "${datadir}/java/midpath.jar \
${datadir}/java/resources-embedded/com/sun/midp/configuration/ \
diff --git a/packages/mime-support/mime-support_3.28.bb b/packages/mime-support/mime-support_3.28.bb
index 7febf2c1e0..f5ebfb650d 100644
--- a/packages/mime-support/mime-support_3.28.bb
+++ b/packages/mime-support/mime-support_3.28.bb
@@ -10,7 +10,7 @@ PR = "r2"
SRC_URI = "${DEBIAN_MIRROR}/main/m/mime-support/mime-support_${PV}-1.tar.gz"
S = "${WORKDIR}/${PN}"
-PACKAGES = "${PN} ${PN}-doc"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc"
FILES_${PN} += " ${libdir}/mime"
docdir_append = "/${PN}"
diff --git a/packages/misc-binary-only/prism-firmware.bb b/packages/misc-binary-only/prism-firmware.bb
index 903c55e15e..3e2cf4531c 100644
--- a/packages/misc-binary-only/prism-firmware.bb
+++ b/packages/misc-binary-only/prism-firmware.bb
@@ -28,5 +28,4 @@ do_install() {
install -m 0644 ${WORKDIR}/hostap.rules ${D}${sysconfdir}/udev/rules.d/
}
-PACKAGES = "${PN}"
FILES_${PN} += "${base_libdir}"
diff --git a/packages/moc/moc_2.4.0.bb b/packages/moc/moc_2.4.0.bb
deleted file mode 100644
index 4c77655fc7..0000000000
--- a/packages/moc/moc_2.4.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "MOC is a ncurses based music player"
-SECTION = "console/multimedia"
-DEPENDS = "ncurses"
-LICENSE = "GPL"
-AUTHOR = "Damian Pietras <daper@daper.net>"
-HOMEPAGE = "http://moc.daper.net/"
-
-SRC_URI = "ftp://ftp.daper.net/pub/soft/moc/stable/${PN}-${PV}.tar.bz2"
-
-inherit autotools
-
-FILES_${PN} = "${bindir}/moc"
diff --git a/packages/moc/moc_2.4.3.bb b/packages/moc/moc_2.4.3.bb
new file mode 100644
index 0000000000..5d63df0fea
--- /dev/null
+++ b/packages/moc/moc_2.4.3.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "MOC is a ncurses based music player"
+AUTHOR = "Damian Pietras <daper@daper.net>"
+HOMEPAGE = "http://moc.daper.net/"
+SECTION = "console/multimedia"
+LICENSE = "GPL"
+DEPENDS = "ncurses flac"
+
+SRC_URI = "ftp://ftp.daper.net/pub/soft/moc/stable/${PN}-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = "--without-flac"
+
+FILES_${PN}-dbg += "${libdir}/moc/decoder_plugins/.debug"
diff --git a/packages/modphp/modphp5.inc b/packages/modphp/modphp5.inc
index 202cacc75b..e8701b0b99 100644
--- a/packages/modphp/modphp5.inc
+++ b/packages/modphp/modphp5.inc
@@ -11,7 +11,7 @@ S = "${WORKDIR}/php-${PV}"
inherit autotools
FILES_${PN} = "${libdir}/apache2 /etc"
-FILES_${PN}-dbg = "${libdir}/apache2/modules/.debug"
+FILES_${PN}-dbg += "${libdir}/apache2/modules/.debug"
CFLAGS += " -g -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
EXTRA_OECONF = "--with-apxs2=${STAGING_BINDIR_NATIVE}/apxs \
diff --git a/packages/modutils/modutils_2.4.27.bb b/packages/modutils/modutils_2.4.27.bb
index c02dc1d5c3..9cedecaa9a 100644
--- a/packages/modutils/modutils_2.4.27.bb
+++ b/packages/modutils/modutils_2.4.27.bb
@@ -82,7 +82,7 @@ pkg_prerm_modutils-modinfo() {
update-alternatives --remove modinfo /sbin/modinfo.24
}
-PACKAGES = "modutils-depmod modutils-modinfo modutils-doc modutils"
+PACKAGES = "${PN}-dbg modutils-depmod modutils-modinfo modutils-doc modutils"
FILES_modutils-depmod = "sbin/depmod.24"
FILES_modutils-modinfo = "sbin/modinfo.24"
diff --git a/packages/mono-xsp/mono-xsp_1.2.5.bb b/packages/mono-xsp/mono-xsp_1.2.5.bb
index bc3386d5bd..0b54ee332a 100644
--- a/packages/mono-xsp/mono-xsp_1.2.5.bb
+++ b/packages/mono-xsp/mono-xsp_1.2.5.bb
@@ -19,7 +19,7 @@ SRC_URI = "http://go-mono.com/sources/xsp/xsp-${PV}.tar.bz2"
S = "${WORKDIR}/xsp-${PV}"
-PACKAGES = "\
+PACKAGES = "${PN}-dbg \
libmono-webserver1.0-cil \
libmono-webserver2.0-cil \
mono-xsp \
@@ -31,21 +31,21 @@ PACKAGES = "\
mono-xsp-dev \
"
-FILES_libmono-webserver1.0-cil-dbg = " \
+FILES_libmono-webserver1.0-cil-dbg += " \
/usr/lib/mono/gac/Mono.WebServer/0.1.*/*.mdb \
"
FILES_libmono-webserver1.0-cil = " \
/usr/lib/mono/gac/Mono.WebServer/0.1.*/ \
/usr/lib/mono/1.0/Mono.WebServer.dll \
"
-FILES_libmono-webserver2.0-cil-dbg = " \
+FILES_libmono-webserver2.0-cil-dbg += " \
/usr/lib/mono/gac/Mono.WebServer2/0.2.*/*.mdb \
"
FILES_libmono-webserver2.0-cil = " \
/usr/lib/mono/gac/Mono.WebServer2/0.2.*/ \
/usr/lib/mono/2.0/Mono.WebServer2.dll \
"
-FILES_${PN}-dbg = " \
+FILES_${PN}-dbg += " \
/usr/lib/mono/gac/xsp/1.2.*/*.mdb \
"
FILES_${PN} = " \
@@ -59,7 +59,7 @@ FILES_${PN} = " \
/usr/lib/xsp/1.0/dbsessmgr.exe.config \
/usr/lib/xsp/1.0/dbsessmgr.exe \
"
-FILES_mono-xsp2-dbg = " \
+FILES_mono-xsp2-dbg += " \
/usr/lib/mono/gac/xsp2/1.2.*/*.dbg \
"
FILES_mono-xsp2 = " \
@@ -73,7 +73,7 @@ FILES_mono-xsp2 = " \
/usr/lib/xsp/2.0/dbsessmgr2.exe.config \
/usr/lib/xsp/2.0/dbsessmgr2.exe \
"
-FILES_mono-mod-mono-server-dbg = "\
+FILES_mono-mod-mono-server-dbg += "\
/usr/lib/mono/gac/mod-mono-server/1.2.*/*.mdb \
"
FILES_mono-mod-mono-server = "\
@@ -81,7 +81,7 @@ FILES_mono-mod-mono-server = "\
/usr/lib/mono/1.0/mod-mono-server.exe \
/usr/bin/mod-mono-server \
"
-FILES_mono-mod-mono-server2-dbg = "\
+FILES_mono-mod-mono-server2-dbg += "\
/usr/lib/mono/gac/mod-mono-server2/1.2.*/*.mdb \
"
FILES_mono-mod-mono-server2 = "\
diff --git a/packages/mono/mono_1.2.5.1-files.inc b/packages/mono/mono_1.2.5.1-files.inc
index 3dc580750f..1d7b74e345 100644
--- a/packages/mono/mono_1.2.5.1-files.inc
+++ b/packages/mono/mono_1.2.5.1-files.inc
@@ -1,21 +1,21 @@
# This is a generated file, please do not edit directly
# Use collect-files.py instead. -- Henryk <henryk@openmoko.org>
-FILES_mono-jit-dbg = "/usr/bin/mono*.mdb \
+FILES_mono-jit-dbg += "/usr/bin/mono*.mdb \
/usr/bin/mono*/*.mdb"
FILES_mono-jit = "/usr/bin/mono"
-FILES_mono-gac-dbg = "/usr/bin/gacutil*.mdb \
+FILES_mono-gac-dbg += "/usr/bin/gacutil*.mdb \
/usr/bin/gacutil*/*.mdb \
/usr/lib/mono/1.0/gacutil.exe*.mdb \
/usr/lib/mono/1.0/gacutil.exe*/*.mdb"
FILES_mono-gac = "/usr/bin/gacutil \
/usr/lib/mono/1.0/gacutil.exe"
-FILES_mono-mjs-dbg = "/usr/bin/mjs*.mdb \
+FILES_mono-mjs-dbg += "/usr/bin/mjs*.mdb \
/usr/bin/mjs*/*.mdb \
/usr/lib/mono/1.0/mjs.exe*.mdb \
/usr/lib/mono/1.0/mjs.exe*/*.mdb"
FILES_mono-mjs = "/usr/bin/mjs \
/usr/lib/mono/1.0/mjs.exe*"
-FILES_mono-gmcs-dbg = "/usr/bin/gmcs*.mdb \
+FILES_mono-gmcs-dbg += "/usr/bin/gmcs*.mdb \
/usr/bin/gmcs*/*.mdb \
/usr/bin/wsdl2*.mdb \
/usr/bin/wsdl2*/*.mdb \
@@ -77,7 +77,7 @@ FILES_mono-gmcs = "/usr/bin/gmcs \
/usr/lib/mono/2.0/Microsoft.Common.tasks \
/usr/lib/mono/2.0/Microsoft.Common.targets \
/usr/lib/mono/2.0/Microsoft.VisualBasic.targets"
-FILES_mono-utils-dbg = "/usr/bin/pedump*.mdb \
+FILES_mono-utils-dbg += "/usr/bin/pedump*.mdb \
/usr/bin/pedump*/*.mdb \
/usr/bin/monodis*.mdb \
/usr/bin/monodis*/*.mdb \
@@ -92,7 +92,7 @@ FILES_mono-utils = "/usr/bin/pedump \
/usr/bin/monograph \
/usr/bin/mono-find-provides \
/usr/bin/mono-find-requires"
-FILES_libmono-peapi1.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/1.0.*/*.mdb \
+FILES_libmono-peapi1.0-cil-dbg += "/usr/lib/mono/gac/PEAPI/1.0.*/*.mdb \
/usr/lib/mono/gac/PEAPI/1.0.*/*/*.mdb \
/usr/lib/mono/gac/PEAPI/1.0.*/.debug/ \
/usr/lib/mono/gac/PEAPI/1.0.*/../.debug/ \
@@ -100,7 +100,7 @@ FILES_libmono-peapi1.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/1.0.*/*.mdb \
/usr/lib/mono/1.0/PEAPI.dll*/*.mdb"
FILES_libmono-peapi1.0-cil = "/usr/lib/mono/gac/PEAPI/1.0.*/ \
/usr/lib/mono/1.0/PEAPI.dll"
-FILES_libmono-cairo1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/1.0.*/*.mdb \
+FILES_libmono-cairo1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Cairo/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Cairo/1.0.*/../.debug/ \
@@ -111,7 +111,7 @@ FILES_libmono-cairo1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/1.0.*/*.mdb \
FILES_libmono-cairo1.0-cil = "/usr/lib/mono/gac/Mono.Cairo/1.0.*/ \
/usr/lib/mono/1.0/Mono.Cairo.dll \
/usr/lib/pkgconfig/mono-cairo.pc"
-FILES_libmono-system-web2.0-cil-dbg = "/usr/lib/mono/gac/System.Web/2.0.*/*.mdb \
+FILES_libmono-system-web2.0-cil-dbg += "/usr/lib/mono/gac/System.Web/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Web/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Web/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Web/2.0.*/../.debug/ \
@@ -127,7 +127,7 @@ FILES_libmono-system-web2.0-cil = "/usr/lib/mono/gac/System.Web/2.0.*/ \
/usr/lib/mono/gac/System.Web.Services/2.0.*/ \
/usr/lib/mono/2.0/System.Web.dll \
/usr/lib/mono/2.0/System.Web.Services.dll"
-FILES_libmono-accessibility2.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/2.0.*/*.mdb \
+FILES_libmono-accessibility2.0-cil-dbg += "/usr/lib/mono/gac/Accessibility/2.0.*/*.mdb \
/usr/lib/mono/gac/Accessibility/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Accessibility/2.0.*/.debug/ \
/usr/lib/mono/gac/Accessibility/2.0.*/../.debug/ \
@@ -135,7 +135,7 @@ FILES_libmono-accessibility2.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/2.0.*/
/usr/lib/mono/2.0/Accessibility.dll*/*.mdb"
FILES_libmono-accessibility2.0-cil = "/usr/lib/mono/gac/Accessibility/2.0.*/ \
/usr/lib/mono/2.0/Accessibility.dll"
-FILES_libmono-microsoft7.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.JScript/7.0.*/*.mdb \
+FILES_libmono-microsoft7.0-cil-dbg += "/usr/lib/mono/gac/Microsoft.JScript/7.0.*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/7.0.*/*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/7.0.*/.debug/ \
/usr/lib/mono/gac/Microsoft.JScript/7.0.*/../.debug/ \
@@ -159,7 +159,7 @@ FILES_libmono-microsoft7.0-cil = "/usr/lib/mono/gac/Microsoft.JScript/7.0.*/ \
/usr/lib/mono/1.0/Microsoft.JScript.dll \
/usr/lib/mono/1.0/Microsoft.VisualC.dll \
/usr/lib/mono/1.0/Microsoft.Vsa.dll"
-FILES_libmono-winforms2.0-cil-dbg = "/usr/lib/mono/gac/System.Windows.Forms/2.0.*/*.mdb \
+FILES_libmono-winforms2.0-cil-dbg += "/usr/lib/mono/gac/System.Windows.Forms/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Windows.Forms/2.0.*/../.debug/ \
@@ -183,7 +183,7 @@ FILES_libmono-winforms2.0-cil = "/usr/lib/mono/gac/System.Windows.Forms/2.0.*/ \
/usr/lib/mono/2.0/System.Windows.Forms.dll \
/usr/lib/mono/2.0/System.Drawing.Design.dll \
/usr/lib/mono/2.0/System.Design.dll"
-FILES_libmono-ldap1.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*.mdb \
+FILES_libmono-ldap1.0-cil-dbg += "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/.debug/ \
/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/../.debug/ \
@@ -191,7 +191,7 @@ FILES_libmono-ldap1.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*
/usr/lib/mono/1.0/Novell.Directory.Ldap.dll*/*.mdb"
FILES_libmono-ldap1.0-cil = "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/ \
/usr/lib/mono/1.0/Novell.Directory.Ldap.dll"
-FILES_libmono-sharpzip2.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/*.mdb \
+FILES_libmono-sharpzip2.84-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/../.debug/ \
@@ -199,7 +199,7 @@ FILES_libmono-sharpzip2.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/
/usr/lib/mono/2.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip2.84-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/ \
/usr/lib/mono/2.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-system-data2.0-cil-dbg = "/usr/lib/mono/gac/System.Data/2.0.*/*.mdb \
+FILES_libmono-system-data2.0-cil-dbg += "/usr/lib/mono/gac/System.Data/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Data/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Data/2.0.*/../.debug/ \
@@ -207,7 +207,7 @@ FILES_libmono-system-data2.0-cil-dbg = "/usr/lib/mono/gac/System.Data/2.0.*/*.md
/usr/lib/mono/2.0/System.Data.dll*/*.mdb"
FILES_libmono-system-data2.0-cil = "/usr/lib/mono/gac/System.Data/2.0.*/ \
/usr/lib/mono/2.0/System.Data.dll"
-FILES_libmono-corlib2.0-cil-dbg = "/usr/lib/mono/gac/I18N*/2.0.*/*.mdb \
+FILES_libmono-corlib2.0-cil-dbg += "/usr/lib/mono/gac/I18N*/2.0.*/*.mdb \
/usr/lib/mono/gac/I18N*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/I18N*/2.0.*/.debug/ \
/usr/lib/mono/gac/I18N*/2.0.*/../.debug/ \
@@ -218,7 +218,7 @@ FILES_libmono-corlib2.0-cil-dbg = "/usr/lib/mono/gac/I18N*/2.0.*/*.mdb \
FILES_libmono-corlib2.0-cil = "/usr/lib/mono/gac/I18N*/2.0.*/ \
/usr/lib/mono/2.0/I18N*.dll \
/usr/lib/mono/2.0/mscorlib.dll*"
-FILES_libmono-winforms1.0-cil-dbg = "/usr/lib/mono/gac/System.Windows.Forms/1.0.*/*.mdb \
+FILES_libmono-winforms1.0-cil-dbg += "/usr/lib/mono/gac/System.Windows.Forms/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Windows.Forms/1.0.*/../.debug/ \
@@ -242,7 +242,7 @@ FILES_libmono-winforms1.0-cil = "/usr/lib/mono/gac/System.Windows.Forms/1.0.*/ \
/usr/lib/mono/1.0/System.Windows.Forms.dll \
/usr/lib/mono/1.0/System.Drawing.Design.dll \
/usr/lib/mono/1.0/System.Design.dll"
-FILES_libmono-microsoft8.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.JScript/8.0.*/*.mdb \
+FILES_libmono-microsoft8.0-cil-dbg += "/usr/lib/mono/gac/Microsoft.JScript/8.0.*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/8.0.*/*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/8.0.*/.debug/ \
/usr/lib/mono/gac/Microsoft.JScript/8.0.*/../.debug/ \
@@ -266,7 +266,7 @@ FILES_libmono-microsoft8.0-cil = "/usr/lib/mono/gac/Microsoft.JScript/8.0.*/ \
/usr/lib/mono/2.0/Microsoft.JScript.dll \
/usr/lib/mono/2.0/Microsoft.VisualC.dll \
/usr/lib/mono/2.0/Microsoft.Vsa.dll"
-FILES_libmono-corlib1.0-cil-dbg = "/usr/lib/mono/gac/I18N*/1.0.*/*.mdb \
+FILES_libmono-corlib1.0-cil-dbg += "/usr/lib/mono/gac/I18N*/1.0.*/*.mdb \
/usr/lib/mono/gac/I18N*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/I18N*/1.0.*/.debug/ \
/usr/lib/mono/gac/I18N*/1.0.*/../.debug/ \
@@ -277,7 +277,7 @@ FILES_libmono-corlib1.0-cil-dbg = "/usr/lib/mono/gac/I18N*/1.0.*/*.mdb \
FILES_libmono-corlib1.0-cil = "/usr/lib/mono/gac/I18N*/1.0.*/ \
/usr/lib/mono/1.0/I18N*.dll \
/usr/lib/mono/1.0/mscorlib.dll*"
-FILES_libmono-system-web1.0-cil-dbg = "/usr/lib/mono/gac/System.Web/1.0.*/*.mdb \
+FILES_libmono-system-web1.0-cil-dbg += "/usr/lib/mono/gac/System.Web/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Web/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Web/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Web/1.0.*/../.debug/ \
@@ -293,7 +293,7 @@ FILES_libmono-system-web1.0-cil = "/usr/lib/mono/gac/System.Web/1.0.*/ \
/usr/lib/mono/gac/System.Web.Services/1.0.*/ \
/usr/lib/mono/1.0/System.Web.dll \
/usr/lib/mono/1.0/System.Web.Services.dll"
-FILES_libmono-system-runtime2.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/2.0.*/*.mdb \
+FILES_libmono-system-runtime2.0-cil-dbg += "/usr/lib/mono/gac/System.Runtime.*/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Runtime.*/2.0.*/../.debug/ \
@@ -301,7 +301,7 @@ FILES_libmono-system-runtime2.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/2.
/usr/lib/mono/2.0/System.Runtime.*.dll*/*.mdb"
FILES_libmono-system-runtime2.0-cil = "/usr/lib/mono/gac/System.Runtime.*/2.0.*/ \
/usr/lib/mono/2.0/System.Runtime.*.dll"
-FILES_libmono-cscompmgd8.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/8.0.*/*.mdb \
+FILES_libmono-cscompmgd8.0-cil-dbg += "/usr/lib/mono/gac/cscompmgd/8.0.*/*.mdb \
/usr/lib/mono/gac/cscompmgd/8.0.*/*/*.mdb \
/usr/lib/mono/gac/cscompmgd/8.0.*/.debug/ \
/usr/lib/mono/gac/cscompmgd/8.0.*/../.debug/ \
@@ -309,7 +309,7 @@ FILES_libmono-cscompmgd8.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/8.0.*/*.mdb \
/usr/lib/mono/2.0/cscompmgd.dll*/*.mdb"
FILES_libmono-cscompmgd8.0-cil = "/usr/lib/mono/gac/cscompmgd/8.0.*/ \
/usr/lib/mono/2.0/cscompmgd.dll"
-FILES_libmono-cscompmgd7.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/7.0.*/*.mdb \
+FILES_libmono-cscompmgd7.0-cil-dbg += "/usr/lib/mono/gac/cscompmgd/7.0.*/*.mdb \
/usr/lib/mono/gac/cscompmgd/7.0.*/*/*.mdb \
/usr/lib/mono/gac/cscompmgd/7.0.*/.debug/ \
/usr/lib/mono/gac/cscompmgd/7.0.*/../.debug/ \
@@ -317,7 +317,7 @@ FILES_libmono-cscompmgd7.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/7.0.*/*.mdb \
/usr/lib/mono/1.0/cscompmgd.dll*/*.mdb"
FILES_libmono-cscompmgd7.0-cil = "/usr/lib/mono/gac/cscompmgd/7.0.*/ \
/usr/lib/mono/1.0/cscompmgd.dll"
-FILES_libmono-firebirdsql1.7-cil-dbg = "/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/*.mdb \
+FILES_libmono-firebirdsql1.7-cil-dbg += "/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/*.mdb \
/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/*/*.mdb \
/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/.debug/ \
/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/../.debug/ \
@@ -325,10 +325,10 @@ FILES_libmono-firebirdsql1.7-cil-dbg = "/usr/lib/mono/gac/FirebirdSql.Data.Fireb
/usr/lib/mono/1.0/FirebirdSql.Data.Firebird.dll*/*.mdb"
FILES_libmono-firebirdsql1.7-cil = "/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/ \
/usr/lib/mono/1.0/FirebirdSql.Data.Firebird.dll"
-FILES_mono-jay-dbg = "/usr/bin/jay*.mdb \
+FILES_mono-jay-dbg += "/usr/bin/jay*.mdb \
/usr/bin/jay*/*.mdb"
FILES_mono-jay = "/usr/bin/jay"
-FILES_libmono-data-tds1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*.mdb \
+FILES_libmono-data-tds1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/../.debug/ \
@@ -336,7 +336,7 @@ FILES_libmono-data-tds1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*.mdb
/usr/lib/mono/1.0/Mono.Data.Tds.dll*/*.mdb"
FILES_libmono-data-tds1.0-cil = "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/ \
/usr/lib/mono/1.0/Mono.Data.Tds.dll"
-FILES_libmono-sqlite1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/*.mdb \
+FILES_libmono-sqlite1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/../.debug/ \
@@ -352,7 +352,7 @@ FILES_libmono-sqlite1.0-cil = "/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/ \
/usr/lib/mono/gac/Mono.Data.SqliteClient/1.0.*/ \
/usr/lib/mono/1.0/Mono.Data.Sqlite.dll \
/usr/lib/mono/1.0/Mono.Data.SqliteClient.dll"
-FILES_libmono-relaxng1.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/*.mdb \
+FILES_libmono-relaxng1.0-cil-dbg += "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/.debug/ \
/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/../.debug/ \
@@ -360,7 +360,7 @@ FILES_libmono-relaxng1.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/
/usr/lib/mono/1.0/Commons.Xml.Relaxng.dll*/*.mdb"
FILES_libmono-relaxng1.0-cil = "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/ \
/usr/lib/mono/1.0/Commons.Xml.Relaxng.dll"
-FILES_libmono-dev-dbg = "/usr/lib/libmono*.a*.mdb \
+FILES_libmono-dev-dbg += "/usr/lib/libmono*.a*.mdb \
/usr/lib/libmono*.a*/*.mdb \
/usr/lib/libMono*.a*.mdb \
/usr/lib/libMono*.a*/*.mdb \
@@ -383,7 +383,7 @@ FILES_libmono-dev = "/usr/lib/libmono*.a \
/usr/lib/pkgconfig/mono.pc \
/usr/lib/pkgconfig/dotnet.pc \
/usr/include/"
-FILES_libmono-accessibility1.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/1.0.*/*.mdb \
+FILES_libmono-accessibility1.0-cil-dbg += "/usr/lib/mono/gac/Accessibility/1.0.*/*.mdb \
/usr/lib/mono/gac/Accessibility/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Accessibility/1.0.*/.debug/ \
/usr/lib/mono/gac/Accessibility/1.0.*/../.debug/ \
@@ -391,13 +391,13 @@ FILES_libmono-accessibility1.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/1.0.*/
/usr/lib/mono/1.0/Accessibility.dll*/*.mdb"
FILES_libmono-accessibility1.0-cil = "/usr/lib/mono/gac/Accessibility/1.0.*/ \
/usr/lib/mono/1.0/Accessibility.dll"
-FILES_mono-common-dbg = "/etc/mono*.mdb \
+FILES_mono-common-dbg += "/etc/mono*.mdb \
/etc/mono*/*.mdb \
/usr/share/mono-1.0/mono/cil/cil-opcodes.xml*.mdb \
/usr/share/mono-1.0/mono/cil/cil-opcodes.xml*/*.mdb"
FILES_mono-common = "/etc/mono \
/usr/share/mono-1.0/mono/cil/cil-opcodes.xml"
-FILES_libmono-oracle1.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/*.mdb \
+FILES_libmono-oracle1.0-cil-dbg += "/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/../.debug/ \
@@ -405,7 +405,7 @@ FILES_libmono-oracle1.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/1.
/usr/lib/mono/1.0/System.Data.OracleClient.dll*/*.mdb"
FILES_libmono-oracle1.0-cil = "/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/ \
/usr/lib/mono/1.0/System.Data.OracleClient.dll"
-FILES_libmono-system-data1.0-cil-dbg = "/usr/lib/mono/gac/System.Data/1.0.*/*.mdb \
+FILES_libmono-system-data1.0-cil-dbg += "/usr/lib/mono/gac/System.Data/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Data/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Data/1.0.*/../.debug/ \
@@ -413,7 +413,7 @@ FILES_libmono-system-data1.0-cil-dbg = "/usr/lib/mono/gac/System.Data/1.0.*/*.md
/usr/lib/mono/1.0/System.Data.dll*/*.mdb"
FILES_libmono-system-data1.0-cil = "/usr/lib/mono/gac/System.Data/1.0.*/ \
/usr/lib/mono/1.0/System.Data.dll"
-FILES_libmono-bytefx0.7.6.2-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*.mdb \
+FILES_libmono-bytefx0.7.6.2-cil-dbg += "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/.debug/ \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/../.debug/ \
@@ -421,7 +421,7 @@ FILES_libmono-bytefx0.7.6.2-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*.
/usr/lib/mono/2.0/ByteFX.Data.dll*/*.mdb"
FILES_libmono-bytefx0.7.6.2-cil = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/ \
/usr/lib/mono/2.0/ByteFX.Data.dll"
-FILES_libmono0-dbg = "/usr/lib/libmono*.so.*.mdb \
+FILES_libmono0-dbg += "/usr/lib/libmono*.so.*.mdb \
/usr/lib/libmono*.so.*/*.mdb \
/usr/lib/libMonoPosixHelper.so*.mdb \
/usr/lib/libMonoPosixHelper.so*/*.mdb \
@@ -430,7 +430,7 @@ FILES_libmono0-dbg = "/usr/lib/libmono*.so.*.mdb \
FILES_libmono0 = "/usr/lib/libmono*.so.* \
/usr/lib/libMonoPosixHelper.so \
/usr/lib/libMonoSupportW.so"
-FILES_libmono-sharpzip0.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/*.mdb \
+FILES_libmono-sharpzip0.6-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/../.debug/ \
@@ -438,7 +438,7 @@ FILES_libmono-sharpzip0.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0
/usr/lib/mono/compat-1.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip0.6-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/ \
/usr/lib/mono/compat-1.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-data-tds2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*.mdb \
+FILES_libmono-data-tds2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/../.debug/ \
@@ -446,7 +446,7 @@ FILES_libmono-data-tds2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*.mdb
/usr/lib/mono/2.0/Mono.Data.Tds.dll*/*.mdb"
FILES_libmono-data-tds2.0-cil = "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/ \
/usr/lib/mono/2.0/Mono.Data.Tds.dll"
-FILES_libmono-system-messaging1.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/1.0.*/*.mdb \
+FILES_libmono-system-messaging1.0-cil-dbg += "/usr/lib/mono/gac/System.Messaging/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Messaging/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Messaging/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Messaging/1.0.*/../.debug/ \
@@ -454,7 +454,7 @@ FILES_libmono-system-messaging1.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/
/usr/lib/mono/1.0/System.Messaging.dll*/*.mdb"
FILES_libmono-system-messaging1.0-cil = "/usr/lib/mono/gac/System.Messaging/1.0.*/ \
/usr/lib/mono/1.0/System.Messaging.dll"
-FILES_libmono-npgsql1.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/1.0.*/*.mdb \
+FILES_libmono-npgsql1.0-cil-dbg += "/usr/lib/mono/gac/Npgsql/1.0.*/*.mdb \
/usr/lib/mono/gac/Npgsql/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Npgsql/1.0.*/.debug/ \
/usr/lib/mono/gac/Npgsql/1.0.*/../.debug/ \
@@ -462,7 +462,7 @@ FILES_libmono-npgsql1.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/1.0.*/*.mdb \
/usr/lib/mono/1.0/Npgsql.dll*/*.mdb"
FILES_libmono-npgsql1.0-cil = "/usr/lib/mono/gac/Npgsql/1.0.*/ \
/usr/lib/mono/1.0/Npgsql.dll"
-FILES_libmono-security2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/2.0.*/*.mdb \
+FILES_libmono-security2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Security/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Security/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Security/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Security/2.0.*/../.debug/ \
@@ -470,7 +470,7 @@ FILES_libmono-security2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/2.0.*/*.mdb
/usr/lib/mono/2.0/Mono.Security.dll*/*.mdb"
FILES_libmono-security2.0-cil = "/usr/lib/mono/gac/Mono.Security/2.0.*/ \
/usr/lib/mono/2.0/Mono.Security.dll"
-FILES_libmono-security1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/1.0.*/*.mdb \
+FILES_libmono-security1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Security/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Security/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Security/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Security/1.0.*/../.debug/ \
@@ -478,7 +478,7 @@ FILES_libmono-security1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/1.0.*/*.mdb
/usr/lib/mono/1.0/Mono.Security.dll*/*.mdb"
FILES_libmono-security1.0-cil = "/usr/lib/mono/gac/Mono.Security/1.0.*/ \
/usr/lib/mono/1.0/Mono.Security.dll"
-FILES_libmono-bytefx0.7.6.1-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*.mdb \
+FILES_libmono-bytefx0.7.6.1-cil-dbg += "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/.debug/ \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/../.debug/ \
@@ -486,7 +486,7 @@ FILES_libmono-bytefx0.7.6.1-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*.
/usr/lib/mono/1.0/ByteFX.Data.dll*/*.mdb"
FILES_libmono-bytefx0.7.6.1-cil = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/ \
/usr/lib/mono/1.0/ByteFX.Data.dll"
-FILES_libmono-microsoft-build2.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/*.mdb \
+FILES_libmono-microsoft-build2.0-cil-dbg += "/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/*.mdb \
/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/.debug/ \
/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/../.debug/ \
@@ -494,7 +494,7 @@ FILES_libmono-microsoft-build2.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.Build.*/
/usr/lib/mono/2.0/Microsoft.Build.*.dll*/*.mdb"
FILES_libmono-microsoft-build2.0-cil = "/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/ \
/usr/lib/mono/2.0/Microsoft.Build.*.dll"
-FILES_libmono-system-ldap1.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServices/1.0.*/*.mdb \
+FILES_libmono-system-ldap1.0-cil-dbg += "/usr/lib/mono/gac/System.DirectoryServices/1.0.*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/1.0.*/.debug/ \
/usr/lib/mono/gac/System.DirectoryServices/1.0.*/../.debug/ \
@@ -502,7 +502,7 @@ FILES_libmono-system-ldap1.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServic
/usr/lib/mono/1.0/System.DirectoryServices.dll*/*.mdb"
FILES_libmono-system-ldap1.0-cil = "/usr/lib/mono/gac/System.DirectoryServices/1.0.*/ \
/usr/lib/mono/1.0/System.DirectoryServices.dll"
-FILES_libmono-relaxng2.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/*.mdb \
+FILES_libmono-relaxng2.0-cil-dbg += "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/.debug/ \
/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/../.debug/ \
@@ -510,7 +510,7 @@ FILES_libmono-relaxng2.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/
/usr/lib/mono/2.0/Commons.Xml.Relaxng.dll*/*.mdb"
FILES_libmono-relaxng2.0-cil = "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/ \
/usr/lib/mono/2.0/Commons.Xml.Relaxng.dll"
-FILES_libmono-system-ldap2.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServices/2.0.*/*.mdb \
+FILES_libmono-system-ldap2.0-cil-dbg += "/usr/lib/mono/gac/System.DirectoryServices/2.0.*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/2.0.*/.debug/ \
/usr/lib/mono/gac/System.DirectoryServices/2.0.*/../.debug/ \
@@ -518,7 +518,7 @@ FILES_libmono-system-ldap2.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServic
/usr/lib/mono/2.0/System.DirectoryServices.dll*/*.mdb"
FILES_libmono-system-ldap2.0-cil = "/usr/lib/mono/gac/System.DirectoryServices/2.0.*/ \
/usr/lib/mono/2.0/System.DirectoryServices.dll"
-FILES_libmono-system-messaging2.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/2.0.*/*.mdb \
+FILES_libmono-system-messaging2.0-cil-dbg += "/usr/lib/mono/gac/System.Messaging/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Messaging/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Messaging/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Messaging/2.0.*/../.debug/ \
@@ -526,7 +526,7 @@ FILES_libmono-system-messaging2.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/
/usr/lib/mono/2.0/System.Messaging.dll*/*.mdb"
FILES_libmono-system-messaging2.0-cil = "/usr/lib/mono/gac/System.Messaging/2.0.*/ \
/usr/lib/mono/2.0/System.Messaging.dll"
-FILES_libmono-sharpzip0.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/*.mdb \
+FILES_libmono-sharpzip0.84-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/../.debug/ \
@@ -534,7 +534,7 @@ FILES_libmono-sharpzip0.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/
/usr/lib/mono/1.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip0.84-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/ \
/usr/lib/mono/1.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-sqlite2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/*.mdb \
+FILES_libmono-sqlite2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/../.debug/ \
@@ -550,7 +550,7 @@ FILES_libmono-sqlite2.0-cil = "/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/ \
/usr/lib/mono/gac/Mono.Data.SqliteClient/2.0.*/ \
/usr/lib/mono/2.0/Mono.Data.Sqlite.dll \
/usr/lib/mono/2.0/Mono.Data.SqliteClient.dll"
-FILES_libmono-ldap2.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*.mdb \
+FILES_libmono-ldap2.0-cil-dbg += "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/.debug/ \
/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/../.debug/ \
@@ -558,7 +558,7 @@ FILES_libmono-ldap2.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*
/usr/lib/mono/2.0/Novell.Directory.Ldap.dll*/*.mdb"
FILES_libmono-ldap2.0-cil = "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/ \
/usr/lib/mono/2.0/Novell.Directory.Ldap.dll"
-FILES_libmono-npgsql2.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/2.0.*/*.mdb \
+FILES_libmono-npgsql2.0-cil-dbg += "/usr/lib/mono/gac/Npgsql/2.0.*/*.mdb \
/usr/lib/mono/gac/Npgsql/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Npgsql/2.0.*/.debug/ \
/usr/lib/mono/gac/Npgsql/2.0.*/../.debug/ \
@@ -566,7 +566,7 @@ FILES_libmono-npgsql2.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/2.0.*/*.mdb \
/usr/lib/mono/2.0/Npgsql.dll*/*.mdb"
FILES_libmono-npgsql2.0-cil = "/usr/lib/mono/gac/Npgsql/2.0.*/ \
/usr/lib/mono/2.0/Npgsql.dll"
-FILES_libmono-system-runtime1.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/1.0.*/*.mdb \
+FILES_libmono-system-runtime1.0-cil-dbg += "/usr/lib/mono/gac/System.Runtime.*/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Runtime.*/1.0.*/../.debug/ \
@@ -574,7 +574,7 @@ FILES_libmono-system-runtime1.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/1.
/usr/lib/mono/1.0/System.Runtime.*.dll*/*.mdb"
FILES_libmono-system-runtime1.0-cil = "/usr/lib/mono/gac/System.Runtime.*/1.0.*/ \
/usr/lib/mono/1.0/System.Runtime.*.dll"
-FILES_libmono-oracle2.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/*.mdb \
+FILES_libmono-oracle2.0-cil-dbg += "/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/../.debug/ \
@@ -582,7 +582,7 @@ FILES_libmono-oracle2.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/2.
/usr/lib/mono/2.0/System.Data.OracleClient.dll*/*.mdb"
FILES_libmono-oracle2.0-cil = "/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/ \
/usr/lib/mono/2.0/System.Data.OracleClient.dll"
-FILES_libmono-c5-1.0-cil-dbg = "/usr/lib/mono/gac/Mono.C5/1.0.*/*.mdb \
+FILES_libmono-c5-1.0-cil-dbg += "/usr/lib/mono/gac/Mono.C5/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.C5/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.C5/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.C5/1.0.*/../.debug/ \
@@ -590,7 +590,7 @@ FILES_libmono-c5-1.0-cil-dbg = "/usr/lib/mono/gac/Mono.C5/1.0.*/*.mdb \
/usr/lib/mono/2.0/Mono.C5.dll*/*.mdb"
FILES_libmono-c5-1.0-cil = "/usr/lib/mono/gac/Mono.C5/1.0.*/ \
/usr/lib/mono/2.0/Mono.C5.dll"
-FILES_libmono-sharpzip2.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/*.mdb \
+FILES_libmono-sharpzip2.6-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/../.debug/ \
@@ -598,7 +598,7 @@ FILES_libmono-sharpzip2.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2
/usr/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip2.6-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/ \
/usr/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-cairo2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/2.0.*/*.mdb \
+FILES_libmono-cairo2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Cairo/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Cairo/2.0.*/../.debug/ \
@@ -606,7 +606,7 @@ FILES_libmono-cairo2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/2.0.*/*.mdb \
/usr/lib/mono/2.0/Mono.Cairo.dll*/*.mdb"
FILES_libmono-cairo2.0-cil = "/usr/lib/mono/gac/Mono.Cairo/2.0.*/ \
/usr/lib/mono/2.0/Mono.Cairo.dll"
-FILES_libmono-peapi2.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/2.0.*/*.mdb \
+FILES_libmono-peapi2.0-cil-dbg += "/usr/lib/mono/gac/PEAPI/2.0.*/*.mdb \
/usr/lib/mono/gac/PEAPI/2.0.*/*/*.mdb \
/usr/lib/mono/gac/PEAPI/2.0.*/.debug/ \
/usr/lib/mono/gac/PEAPI/2.0.*/../.debug/ \
@@ -614,7 +614,7 @@ FILES_libmono-peapi2.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/2.0.*/*.mdb \
/usr/lib/mono/2.0/PEAPI.dll*/*.mdb"
FILES_libmono-peapi2.0-cil = "/usr/lib/mono/gac/PEAPI/2.0.*/ \
/usr/lib/mono/2.0/PEAPI.dll"
-FILES_mono-mcs-dbg = "/usr/bin/*.mdb \
+FILES_mono-mcs-dbg += "/usr/bin/*.mdb \
/usr/bin/*/*.mdb \
/usr/bin/.debug/ \
/usr/bin/../.debug/ \
@@ -622,7 +622,7 @@ FILES_mono-mcs-dbg = "/usr/bin/*.mdb \
/usr/lib/mono/1.0/*.exe*/*.mdb"
FILES_mono-mcs = "/usr/bin/ \
/usr/lib/mono/1.0/*.exe*"
-FILES_libmono-system1.0-cil-dbg = "/usr/lib/mono/gac/System*/1.0.*/*.mdb \
+FILES_libmono-system1.0-cil-dbg += "/usr/lib/mono/gac/System*/1.0.*/*.mdb \
/usr/lib/mono/gac/System*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System*/1.0.*/.debug/ \
/usr/lib/mono/gac/System*/1.0.*/../.debug/ \
@@ -638,7 +638,7 @@ FILES_libmono-system1.0-cil = "/usr/lib/mono/gac/System*/1.0.*/ \
/usr/lib/mono/gac/CustomMarshalers/1.0.*/ \
/usr/lib/mono/1.0/System*.dll \
/usr/lib/mono/1.0/CustomMarshalers.dll*"
-FILES_libmono-system2.0-cil-dbg = "/usr/lib/mono/gac/System*/2.0.*/*.mdb \
+FILES_libmono-system2.0-cil-dbg += "/usr/lib/mono/gac/System*/2.0.*/*.mdb \
/usr/lib/mono/gac/System*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System*/2.0.*/.debug/ \
/usr/lib/mono/gac/System*/2.0.*/../.debug/ \
@@ -654,7 +654,7 @@ FILES_libmono-system2.0-cil = "/usr/lib/mono/gac/System*/2.0.*/ \
/usr/lib/mono/gac/CustomMarshalers/2.0.*/ \
/usr/lib/mono/2.0/System*.dll \
/usr/lib/mono/2.0/CustomMarshalers.dll*"
-FILES_libmono1.0-cil-dbg = "/usr/lib/mono/gac/Mono.*/1.0.*/*.mdb \
+FILES_libmono1.0-cil-dbg += "/usr/lib/mono/gac/Mono.*/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.*/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.*/1.0.*/../.debug/ \
@@ -673,7 +673,7 @@ FILES_libmono1.0-cil = "/usr/lib/mono/gac/Mono.*/1.0.*/ \
/usr/lib/mono/gac/mono-service/1.0.*/ \
/usr/lib/mono/1.0/Mono.*.dll \
/usr/lib/mono/1.0/OpenSystem.C.dll"
-FILES_libmono2.0-cil-dbg = "/usr/lib/mono/gac/Mono.*/2.0.*/*.mdb \
+FILES_libmono2.0-cil-dbg += "/usr/lib/mono/gac/Mono.*/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.*/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.*/2.0.*/../.debug/ \
@@ -817,22 +817,22 @@ PACKAGES = "mono-jit-dbg \
libmono2.0-cil"
# This is a generated file, please do not edit directly
# Use collect-files.py instead. -- Henryk <henryk@openmoko.org>
-FILES_mono-jit-dbg = "/usr/bin/mono*.mdb \
+FILES_mono-jit-dbg += "/usr/bin/mono*.mdb \
/usr/bin/mono*/*.mdb"
FILES_mono-jit = "/usr/bin/mono"
-FILES_mono-gac-dbg = "/usr/bin/gacutil*.mdb \
+FILES_mono-gac-dbg += "/usr/bin/gacutil*.mdb \
/usr/bin/gacutil*/*.mdb \
/usr/lib/mono/1.0/gacutil.exe*.mdb \
/usr/lib/mono/1.0/gacutil.exe*/*.mdb"
FILES_mono-gac = "/usr/bin/gacutil \
/usr/lib/mono/1.0/gacutil.exe"
-FILES_mono-mjs-dbg = "/usr/bin/mjs*.mdb \
+FILES_mono-mjs-dbg += "/usr/bin/mjs*.mdb \
/usr/bin/mjs*/*.mdb \
/usr/lib/mono/1.0/mjs.exe*.mdb \
/usr/lib/mono/1.0/mjs.exe*/*.mdb"
FILES_mono-mjs = "/usr/bin/mjs \
/usr/lib/mono/1.0/mjs.exe*"
-FILES_mono-gmcs-dbg = "/usr/bin/gmcs*.mdb \
+FILES_mono-gmcs-dbg += "/usr/bin/gmcs*.mdb \
/usr/bin/gmcs*/*.mdb \
/usr/bin/wsdl2*.mdb \
/usr/bin/wsdl2*/*.mdb \
@@ -894,7 +894,7 @@ FILES_mono-gmcs = "/usr/bin/gmcs \
/usr/lib/mono/2.0/Microsoft.Common.tasks \
/usr/lib/mono/2.0/Microsoft.Common.targets \
/usr/lib/mono/2.0/Microsoft.VisualBasic.targets"
-FILES_mono-utils-dbg = "/usr/bin/pedump*.mdb \
+FILES_mono-utils-dbg += "/usr/bin/pedump*.mdb \
/usr/bin/pedump*/*.mdb \
/usr/bin/monodis*.mdb \
/usr/bin/monodis*/*.mdb \
@@ -909,7 +909,7 @@ FILES_mono-utils = "/usr/bin/pedump \
/usr/bin/monograph \
/usr/bin/mono-find-provides \
/usr/bin/mono-find-requires"
-FILES_libmono-peapi1.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/1.0.*/*.mdb \
+FILES_libmono-peapi1.0-cil-dbg += "/usr/lib/mono/gac/PEAPI/1.0.*/*.mdb \
/usr/lib/mono/gac/PEAPI/1.0.*/*/*.mdb \
/usr/lib/mono/gac/PEAPI/1.0.*/.debug/ \
/usr/lib/mono/gac/PEAPI/1.0.*/../.debug/ \
@@ -917,7 +917,7 @@ FILES_libmono-peapi1.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/1.0.*/*.mdb \
/usr/lib/mono/1.0/PEAPI.dll*/*.mdb"
FILES_libmono-peapi1.0-cil = "/usr/lib/mono/gac/PEAPI/1.0.*/ \
/usr/lib/mono/1.0/PEAPI.dll"
-FILES_libmono-cairo1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/1.0.*/*.mdb \
+FILES_libmono-cairo1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Cairo/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Cairo/1.0.*/../.debug/ \
@@ -928,7 +928,7 @@ FILES_libmono-cairo1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/1.0.*/*.mdb \
FILES_libmono-cairo1.0-cil = "/usr/lib/mono/gac/Mono.Cairo/1.0.*/ \
/usr/lib/mono/1.0/Mono.Cairo.dll \
/usr/lib/pkgconfig/mono-cairo.pc"
-FILES_libmono-system-web2.0-cil-dbg = "/usr/lib/mono/gac/System.Web/2.0.*/*.mdb \
+FILES_libmono-system-web2.0-cil-dbg += "/usr/lib/mono/gac/System.Web/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Web/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Web/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Web/2.0.*/../.debug/ \
@@ -944,7 +944,7 @@ FILES_libmono-system-web2.0-cil = "/usr/lib/mono/gac/System.Web/2.0.*/ \
/usr/lib/mono/gac/System.Web.Services/2.0.*/ \
/usr/lib/mono/2.0/System.Web.dll \
/usr/lib/mono/2.0/System.Web.Services.dll"
-FILES_libmono-accessibility2.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/2.0.*/*.mdb \
+FILES_libmono-accessibility2.0-cil-dbg += "/usr/lib/mono/gac/Accessibility/2.0.*/*.mdb \
/usr/lib/mono/gac/Accessibility/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Accessibility/2.0.*/.debug/ \
/usr/lib/mono/gac/Accessibility/2.0.*/../.debug/ \
@@ -952,7 +952,7 @@ FILES_libmono-accessibility2.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/2.0.*/
/usr/lib/mono/2.0/Accessibility.dll*/*.mdb"
FILES_libmono-accessibility2.0-cil = "/usr/lib/mono/gac/Accessibility/2.0.*/ \
/usr/lib/mono/2.0/Accessibility.dll"
-FILES_libmono-microsoft7.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.JScript/7.0.*/*.mdb \
+FILES_libmono-microsoft7.0-cil-dbg += "/usr/lib/mono/gac/Microsoft.JScript/7.0.*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/7.0.*/*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/7.0.*/.debug/ \
/usr/lib/mono/gac/Microsoft.JScript/7.0.*/../.debug/ \
@@ -976,7 +976,7 @@ FILES_libmono-microsoft7.0-cil = "/usr/lib/mono/gac/Microsoft.JScript/7.0.*/ \
/usr/lib/mono/1.0/Microsoft.JScript.dll \
/usr/lib/mono/1.0/Microsoft.VisualC.dll \
/usr/lib/mono/1.0/Microsoft.Vsa.dll"
-FILES_libmono-winforms2.0-cil-dbg = "/usr/lib/mono/gac/System.Windows.Forms/2.0.*/*.mdb \
+FILES_libmono-winforms2.0-cil-dbg += "/usr/lib/mono/gac/System.Windows.Forms/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Windows.Forms/2.0.*/../.debug/ \
@@ -1000,7 +1000,7 @@ FILES_libmono-winforms2.0-cil = "/usr/lib/mono/gac/System.Windows.Forms/2.0.*/ \
/usr/lib/mono/2.0/System.Windows.Forms.dll \
/usr/lib/mono/2.0/System.Drawing.Design.dll \
/usr/lib/mono/2.0/System.Design.dll"
-FILES_libmono-ldap1.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*.mdb \
+FILES_libmono-ldap1.0-cil-dbg += "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/.debug/ \
/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/../.debug/ \
@@ -1008,7 +1008,7 @@ FILES_libmono-ldap1.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/*
/usr/lib/mono/1.0/Novell.Directory.Ldap.dll*/*.mdb"
FILES_libmono-ldap1.0-cil = "/usr/lib/mono/gac/Novell.Directory.Ldap/1.0.*/ \
/usr/lib/mono/1.0/Novell.Directory.Ldap.dll"
-FILES_libmono-sharpzip2.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/*.mdb \
+FILES_libmono-sharpzip2.84-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/../.debug/ \
@@ -1016,7 +1016,7 @@ FILES_libmono-sharpzip2.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/
/usr/lib/mono/2.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip2.84-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.84.*/ \
/usr/lib/mono/2.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-system-data2.0-cil-dbg = "/usr/lib/mono/gac/System.Data/2.0.*/*.mdb \
+FILES_libmono-system-data2.0-cil-dbg += "/usr/lib/mono/gac/System.Data/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Data/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Data/2.0.*/../.debug/ \
@@ -1024,7 +1024,7 @@ FILES_libmono-system-data2.0-cil-dbg = "/usr/lib/mono/gac/System.Data/2.0.*/*.md
/usr/lib/mono/2.0/System.Data.dll*/*.mdb"
FILES_libmono-system-data2.0-cil = "/usr/lib/mono/gac/System.Data/2.0.*/ \
/usr/lib/mono/2.0/System.Data.dll"
-FILES_libmono-corlib2.0-cil-dbg = "/usr/lib/mono/gac/I18N*/2.0.*/*.mdb \
+FILES_libmono-corlib2.0-cil-dbg += "/usr/lib/mono/gac/I18N*/2.0.*/*.mdb \
/usr/lib/mono/gac/I18N*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/I18N*/2.0.*/.debug/ \
/usr/lib/mono/gac/I18N*/2.0.*/../.debug/ \
@@ -1035,7 +1035,7 @@ FILES_libmono-corlib2.0-cil-dbg = "/usr/lib/mono/gac/I18N*/2.0.*/*.mdb \
FILES_libmono-corlib2.0-cil = "/usr/lib/mono/gac/I18N*/2.0.*/ \
/usr/lib/mono/2.0/I18N*.dll \
/usr/lib/mono/2.0/mscorlib.dll*"
-FILES_libmono-winforms1.0-cil-dbg = "/usr/lib/mono/gac/System.Windows.Forms/1.0.*/*.mdb \
+FILES_libmono-winforms1.0-cil-dbg += "/usr/lib/mono/gac/System.Windows.Forms/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Windows.Forms/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Windows.Forms/1.0.*/../.debug/ \
@@ -1059,7 +1059,7 @@ FILES_libmono-winforms1.0-cil = "/usr/lib/mono/gac/System.Windows.Forms/1.0.*/ \
/usr/lib/mono/1.0/System.Windows.Forms.dll \
/usr/lib/mono/1.0/System.Drawing.Design.dll \
/usr/lib/mono/1.0/System.Design.dll"
-FILES_libmono-microsoft8.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.JScript/8.0.*/*.mdb \
+FILES_libmono-microsoft8.0-cil-dbg += "/usr/lib/mono/gac/Microsoft.JScript/8.0.*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/8.0.*/*/*.mdb \
/usr/lib/mono/gac/Microsoft.JScript/8.0.*/.debug/ \
/usr/lib/mono/gac/Microsoft.JScript/8.0.*/../.debug/ \
@@ -1083,7 +1083,7 @@ FILES_libmono-microsoft8.0-cil = "/usr/lib/mono/gac/Microsoft.JScript/8.0.*/ \
/usr/lib/mono/2.0/Microsoft.JScript.dll \
/usr/lib/mono/2.0/Microsoft.VisualC.dll \
/usr/lib/mono/2.0/Microsoft.Vsa.dll"
-FILES_libmono-corlib1.0-cil-dbg = "/usr/lib/mono/gac/I18N*/1.0.*/*.mdb \
+FILES_libmono-corlib1.0-cil-dbg += "/usr/lib/mono/gac/I18N*/1.0.*/*.mdb \
/usr/lib/mono/gac/I18N*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/I18N*/1.0.*/.debug/ \
/usr/lib/mono/gac/I18N*/1.0.*/../.debug/ \
@@ -1094,7 +1094,7 @@ FILES_libmono-corlib1.0-cil-dbg = "/usr/lib/mono/gac/I18N*/1.0.*/*.mdb \
FILES_libmono-corlib1.0-cil = "/usr/lib/mono/gac/I18N*/1.0.*/ \
/usr/lib/mono/1.0/I18N*.dll \
/usr/lib/mono/1.0/mscorlib.dll*"
-FILES_libmono-system-web1.0-cil-dbg = "/usr/lib/mono/gac/System.Web/1.0.*/*.mdb \
+FILES_libmono-system-web1.0-cil-dbg += "/usr/lib/mono/gac/System.Web/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Web/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Web/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Web/1.0.*/../.debug/ \
@@ -1110,7 +1110,7 @@ FILES_libmono-system-web1.0-cil = "/usr/lib/mono/gac/System.Web/1.0.*/ \
/usr/lib/mono/gac/System.Web.Services/1.0.*/ \
/usr/lib/mono/1.0/System.Web.dll \
/usr/lib/mono/1.0/System.Web.Services.dll"
-FILES_libmono-system-runtime2.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/2.0.*/*.mdb \
+FILES_libmono-system-runtime2.0-cil-dbg += "/usr/lib/mono/gac/System.Runtime.*/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Runtime.*/2.0.*/../.debug/ \
@@ -1118,7 +1118,7 @@ FILES_libmono-system-runtime2.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/2.
/usr/lib/mono/2.0/System.Runtime.*.dll*/*.mdb"
FILES_libmono-system-runtime2.0-cil = "/usr/lib/mono/gac/System.Runtime.*/2.0.*/ \
/usr/lib/mono/2.0/System.Runtime.*.dll"
-FILES_libmono-cscompmgd8.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/8.0.*/*.mdb \
+FILES_libmono-cscompmgd8.0-cil-dbg += "/usr/lib/mono/gac/cscompmgd/8.0.*/*.mdb \
/usr/lib/mono/gac/cscompmgd/8.0.*/*/*.mdb \
/usr/lib/mono/gac/cscompmgd/8.0.*/.debug/ \
/usr/lib/mono/gac/cscompmgd/8.0.*/../.debug/ \
@@ -1126,7 +1126,7 @@ FILES_libmono-cscompmgd8.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/8.0.*/*.mdb \
/usr/lib/mono/2.0/cscompmgd.dll*/*.mdb"
FILES_libmono-cscompmgd8.0-cil = "/usr/lib/mono/gac/cscompmgd/8.0.*/ \
/usr/lib/mono/2.0/cscompmgd.dll"
-FILES_libmono-cscompmgd7.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/7.0.*/*.mdb \
+FILES_libmono-cscompmgd7.0-cil-dbg += "/usr/lib/mono/gac/cscompmgd/7.0.*/*.mdb \
/usr/lib/mono/gac/cscompmgd/7.0.*/*/*.mdb \
/usr/lib/mono/gac/cscompmgd/7.0.*/.debug/ \
/usr/lib/mono/gac/cscompmgd/7.0.*/../.debug/ \
@@ -1134,7 +1134,7 @@ FILES_libmono-cscompmgd7.0-cil-dbg = "/usr/lib/mono/gac/cscompmgd/7.0.*/*.mdb \
/usr/lib/mono/1.0/cscompmgd.dll*/*.mdb"
FILES_libmono-cscompmgd7.0-cil = "/usr/lib/mono/gac/cscompmgd/7.0.*/ \
/usr/lib/mono/1.0/cscompmgd.dll"
-FILES_libmono-firebirdsql1.7-cil-dbg = "/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/*.mdb \
+FILES_libmono-firebirdsql1.7-cil-dbg += "/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/*.mdb \
/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/*/*.mdb \
/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/.debug/ \
/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/../.debug/ \
@@ -1142,10 +1142,10 @@ FILES_libmono-firebirdsql1.7-cil-dbg = "/usr/lib/mono/gac/FirebirdSql.Data.Fireb
/usr/lib/mono/1.0/FirebirdSql.Data.Firebird.dll*/*.mdb"
FILES_libmono-firebirdsql1.7-cil = "/usr/lib/mono/gac/FirebirdSql.Data.Firebird/1.7.*/ \
/usr/lib/mono/1.0/FirebirdSql.Data.Firebird.dll"
-FILES_mono-jay-dbg = "/usr/bin/jay*.mdb \
+FILES_mono-jay-dbg += "/usr/bin/jay*.mdb \
/usr/bin/jay*/*.mdb"
FILES_mono-jay = "/usr/bin/jay"
-FILES_libmono-data-tds1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*.mdb \
+FILES_libmono-data-tds1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/../.debug/ \
@@ -1153,7 +1153,7 @@ FILES_libmono-data-tds1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/*.mdb
/usr/lib/mono/1.0/Mono.Data.Tds.dll*/*.mdb"
FILES_libmono-data-tds1.0-cil = "/usr/lib/mono/gac/Mono.Data.Tds/1.0.*/ \
/usr/lib/mono/1.0/Mono.Data.Tds.dll"
-FILES_libmono-sqlite1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/*.mdb \
+FILES_libmono-sqlite1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/../.debug/ \
@@ -1169,7 +1169,7 @@ FILES_libmono-sqlite1.0-cil = "/usr/lib/mono/gac/Mono.Data.Sqlite/1.0.*/ \
/usr/lib/mono/gac/Mono.Data.SqliteClient/1.0.*/ \
/usr/lib/mono/1.0/Mono.Data.Sqlite.dll \
/usr/lib/mono/1.0/Mono.Data.SqliteClient.dll"
-FILES_libmono-relaxng1.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/*.mdb \
+FILES_libmono-relaxng1.0-cil-dbg += "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/.debug/ \
/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/../.debug/ \
@@ -1177,7 +1177,7 @@ FILES_libmono-relaxng1.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/
/usr/lib/mono/1.0/Commons.Xml.Relaxng.dll*/*.mdb"
FILES_libmono-relaxng1.0-cil = "/usr/lib/mono/gac/Commons.Xml.Relaxng/1.0.*/ \
/usr/lib/mono/1.0/Commons.Xml.Relaxng.dll"
-FILES_libmono-dev-dbg = "/usr/lib/libmono*.a*.mdb \
+FILES_libmono-dev-dbg += "/usr/lib/libmono*.a*.mdb \
/usr/lib/libmono*.a*/*.mdb \
/usr/lib/libMono*.a*.mdb \
/usr/lib/libMono*.a*/*.mdb \
@@ -1200,7 +1200,7 @@ FILES_libmono-dev = "/usr/lib/libmono*.a \
/usr/lib/pkgconfig/mono.pc \
/usr/lib/pkgconfig/dotnet.pc \
/usr/include/"
-FILES_libmono-accessibility1.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/1.0.*/*.mdb \
+FILES_libmono-accessibility1.0-cil-dbg += "/usr/lib/mono/gac/Accessibility/1.0.*/*.mdb \
/usr/lib/mono/gac/Accessibility/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Accessibility/1.0.*/.debug/ \
/usr/lib/mono/gac/Accessibility/1.0.*/../.debug/ \
@@ -1208,13 +1208,13 @@ FILES_libmono-accessibility1.0-cil-dbg = "/usr/lib/mono/gac/Accessibility/1.0.*/
/usr/lib/mono/1.0/Accessibility.dll*/*.mdb"
FILES_libmono-accessibility1.0-cil = "/usr/lib/mono/gac/Accessibility/1.0.*/ \
/usr/lib/mono/1.0/Accessibility.dll"
-FILES_mono-common-dbg = "/etc/mono*.mdb \
+FILES_mono-common-dbg += "/etc/mono*.mdb \
/etc/mono*/*.mdb \
/usr/share/mono-1.0/mono/cil/cil-opcodes.xml*.mdb \
/usr/share/mono-1.0/mono/cil/cil-opcodes.xml*/*.mdb"
FILES_mono-common = "/etc/mono \
/usr/share/mono-1.0/mono/cil/cil-opcodes.xml"
-FILES_libmono-oracle1.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/*.mdb \
+FILES_libmono-oracle1.0-cil-dbg += "/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/../.debug/ \
@@ -1222,7 +1222,7 @@ FILES_libmono-oracle1.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/1.
/usr/lib/mono/1.0/System.Data.OracleClient.dll*/*.mdb"
FILES_libmono-oracle1.0-cil = "/usr/lib/mono/gac/System.Data.OracleClient/1.0.*/ \
/usr/lib/mono/1.0/System.Data.OracleClient.dll"
-FILES_libmono-system-data1.0-cil-dbg = "/usr/lib/mono/gac/System.Data/1.0.*/*.mdb \
+FILES_libmono-system-data1.0-cil-dbg += "/usr/lib/mono/gac/System.Data/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Data/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Data/1.0.*/../.debug/ \
@@ -1230,7 +1230,7 @@ FILES_libmono-system-data1.0-cil-dbg = "/usr/lib/mono/gac/System.Data/1.0.*/*.md
/usr/lib/mono/1.0/System.Data.dll*/*.mdb"
FILES_libmono-system-data1.0-cil = "/usr/lib/mono/gac/System.Data/1.0.*/ \
/usr/lib/mono/1.0/System.Data.dll"
-FILES_libmono-bytefx0.7.6.2-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*.mdb \
+FILES_libmono-bytefx0.7.6.2-cil-dbg += "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/.debug/ \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/../.debug/ \
@@ -1238,7 +1238,7 @@ FILES_libmono-bytefx0.7.6.2-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/*.
/usr/lib/mono/2.0/ByteFX.Data.dll*/*.mdb"
FILES_libmono-bytefx0.7.6.2-cil = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.2*/ \
/usr/lib/mono/2.0/ByteFX.Data.dll"
-FILES_libmono0-dbg = "/usr/lib/libmono*.so.*.mdb \
+FILES_libmono0-dbg += "/usr/lib/libmono*.so.*.mdb \
/usr/lib/libmono*.so.*/*.mdb \
/usr/lib/libMonoPosixHelper.so*.mdb \
/usr/lib/libMonoPosixHelper.so*/*.mdb \
@@ -1247,7 +1247,7 @@ FILES_libmono0-dbg = "/usr/lib/libmono*.so.*.mdb \
FILES_libmono0 = "/usr/lib/libmono*.so.* \
/usr/lib/libMonoPosixHelper.so \
/usr/lib/libMonoSupportW.so"
-FILES_libmono-sharpzip0.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/*.mdb \
+FILES_libmono-sharpzip0.6-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/../.debug/ \
@@ -1255,7 +1255,7 @@ FILES_libmono-sharpzip0.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0
/usr/lib/mono/compat-1.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip0.6-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.6.*/ \
/usr/lib/mono/compat-1.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-data-tds2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*.mdb \
+FILES_libmono-data-tds2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/../.debug/ \
@@ -1263,7 +1263,7 @@ FILES_libmono-data-tds2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/*.mdb
/usr/lib/mono/2.0/Mono.Data.Tds.dll*/*.mdb"
FILES_libmono-data-tds2.0-cil = "/usr/lib/mono/gac/Mono.Data.Tds/2.0.*/ \
/usr/lib/mono/2.0/Mono.Data.Tds.dll"
-FILES_libmono-system-messaging1.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/1.0.*/*.mdb \
+FILES_libmono-system-messaging1.0-cil-dbg += "/usr/lib/mono/gac/System.Messaging/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Messaging/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Messaging/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Messaging/1.0.*/../.debug/ \
@@ -1271,7 +1271,7 @@ FILES_libmono-system-messaging1.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/
/usr/lib/mono/1.0/System.Messaging.dll*/*.mdb"
FILES_libmono-system-messaging1.0-cil = "/usr/lib/mono/gac/System.Messaging/1.0.*/ \
/usr/lib/mono/1.0/System.Messaging.dll"
-FILES_libmono-npgsql1.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/1.0.*/*.mdb \
+FILES_libmono-npgsql1.0-cil-dbg += "/usr/lib/mono/gac/Npgsql/1.0.*/*.mdb \
/usr/lib/mono/gac/Npgsql/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Npgsql/1.0.*/.debug/ \
/usr/lib/mono/gac/Npgsql/1.0.*/../.debug/ \
@@ -1279,7 +1279,7 @@ FILES_libmono-npgsql1.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/1.0.*/*.mdb \
/usr/lib/mono/1.0/Npgsql.dll*/*.mdb"
FILES_libmono-npgsql1.0-cil = "/usr/lib/mono/gac/Npgsql/1.0.*/ \
/usr/lib/mono/1.0/Npgsql.dll"
-FILES_libmono-security2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/2.0.*/*.mdb \
+FILES_libmono-security2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Security/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Security/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Security/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Security/2.0.*/../.debug/ \
@@ -1287,7 +1287,7 @@ FILES_libmono-security2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/2.0.*/*.mdb
/usr/lib/mono/2.0/Mono.Security.dll*/*.mdb"
FILES_libmono-security2.0-cil = "/usr/lib/mono/gac/Mono.Security/2.0.*/ \
/usr/lib/mono/2.0/Mono.Security.dll"
-FILES_libmono-security1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/1.0.*/*.mdb \
+FILES_libmono-security1.0-cil-dbg += "/usr/lib/mono/gac/Mono.Security/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Security/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Security/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Security/1.0.*/../.debug/ \
@@ -1295,7 +1295,7 @@ FILES_libmono-security1.0-cil-dbg = "/usr/lib/mono/gac/Mono.Security/1.0.*/*.mdb
/usr/lib/mono/1.0/Mono.Security.dll*/*.mdb"
FILES_libmono-security1.0-cil = "/usr/lib/mono/gac/Mono.Security/1.0.*/ \
/usr/lib/mono/1.0/Mono.Security.dll"
-FILES_libmono-bytefx0.7.6.1-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*.mdb \
+FILES_libmono-bytefx0.7.6.1-cil-dbg += "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*/*.mdb \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/.debug/ \
/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/../.debug/ \
@@ -1303,7 +1303,7 @@ FILES_libmono-bytefx0.7.6.1-cil-dbg = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/*.
/usr/lib/mono/1.0/ByteFX.Data.dll*/*.mdb"
FILES_libmono-bytefx0.7.6.1-cil = "/usr/lib/mono/gac/ByteFX.Data/0.7.6.1*/ \
/usr/lib/mono/1.0/ByteFX.Data.dll"
-FILES_libmono-microsoft-build2.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/*.mdb \
+FILES_libmono-microsoft-build2.0-cil-dbg += "/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/*.mdb \
/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/.debug/ \
/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/../.debug/ \
@@ -1311,7 +1311,7 @@ FILES_libmono-microsoft-build2.0-cil-dbg = "/usr/lib/mono/gac/Microsoft.Build.*/
/usr/lib/mono/2.0/Microsoft.Build.*.dll*/*.mdb"
FILES_libmono-microsoft-build2.0-cil = "/usr/lib/mono/gac/Microsoft.Build.*/2.0.*/ \
/usr/lib/mono/2.0/Microsoft.Build.*.dll"
-FILES_libmono-system-ldap1.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServices/1.0.*/*.mdb \
+FILES_libmono-system-ldap1.0-cil-dbg += "/usr/lib/mono/gac/System.DirectoryServices/1.0.*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/1.0.*/.debug/ \
/usr/lib/mono/gac/System.DirectoryServices/1.0.*/../.debug/ \
@@ -1319,7 +1319,7 @@ FILES_libmono-system-ldap1.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServic
/usr/lib/mono/1.0/System.DirectoryServices.dll*/*.mdb"
FILES_libmono-system-ldap1.0-cil = "/usr/lib/mono/gac/System.DirectoryServices/1.0.*/ \
/usr/lib/mono/1.0/System.DirectoryServices.dll"
-FILES_libmono-relaxng2.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/*.mdb \
+FILES_libmono-relaxng2.0-cil-dbg += "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/.debug/ \
/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/../.debug/ \
@@ -1327,7 +1327,7 @@ FILES_libmono-relaxng2.0-cil-dbg = "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/
/usr/lib/mono/2.0/Commons.Xml.Relaxng.dll*/*.mdb"
FILES_libmono-relaxng2.0-cil = "/usr/lib/mono/gac/Commons.Xml.Relaxng/2.0.*/ \
/usr/lib/mono/2.0/Commons.Xml.Relaxng.dll"
-FILES_libmono-system-ldap2.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServices/2.0.*/*.mdb \
+FILES_libmono-system-ldap2.0-cil-dbg += "/usr/lib/mono/gac/System.DirectoryServices/2.0.*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.DirectoryServices/2.0.*/.debug/ \
/usr/lib/mono/gac/System.DirectoryServices/2.0.*/../.debug/ \
@@ -1335,7 +1335,7 @@ FILES_libmono-system-ldap2.0-cil-dbg = "/usr/lib/mono/gac/System.DirectoryServic
/usr/lib/mono/2.0/System.DirectoryServices.dll*/*.mdb"
FILES_libmono-system-ldap2.0-cil = "/usr/lib/mono/gac/System.DirectoryServices/2.0.*/ \
/usr/lib/mono/2.0/System.DirectoryServices.dll"
-FILES_libmono-system-messaging2.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/2.0.*/*.mdb \
+FILES_libmono-system-messaging2.0-cil-dbg += "/usr/lib/mono/gac/System.Messaging/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Messaging/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Messaging/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Messaging/2.0.*/../.debug/ \
@@ -1343,7 +1343,7 @@ FILES_libmono-system-messaging2.0-cil-dbg = "/usr/lib/mono/gac/System.Messaging/
/usr/lib/mono/2.0/System.Messaging.dll*/*.mdb"
FILES_libmono-system-messaging2.0-cil = "/usr/lib/mono/gac/System.Messaging/2.0.*/ \
/usr/lib/mono/2.0/System.Messaging.dll"
-FILES_libmono-sharpzip0.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/*.mdb \
+FILES_libmono-sharpzip0.84-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/../.debug/ \
@@ -1351,7 +1351,7 @@ FILES_libmono-sharpzip0.84-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/
/usr/lib/mono/1.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip0.84-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/0.84.*/ \
/usr/lib/mono/1.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-sqlite2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/*.mdb \
+FILES_libmono-sqlite2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/../.debug/ \
@@ -1367,7 +1367,7 @@ FILES_libmono-sqlite2.0-cil = "/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.*/ \
/usr/lib/mono/gac/Mono.Data.SqliteClient/2.0.*/ \
/usr/lib/mono/2.0/Mono.Data.Sqlite.dll \
/usr/lib/mono/2.0/Mono.Data.SqliteClient.dll"
-FILES_libmono-ldap2.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*.mdb \
+FILES_libmono-ldap2.0-cil-dbg += "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/.debug/ \
/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/../.debug/ \
@@ -1375,7 +1375,7 @@ FILES_libmono-ldap2.0-cil-dbg = "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/*
/usr/lib/mono/2.0/Novell.Directory.Ldap.dll*/*.mdb"
FILES_libmono-ldap2.0-cil = "/usr/lib/mono/gac/Novell.Directory.Ldap/2.0.*/ \
/usr/lib/mono/2.0/Novell.Directory.Ldap.dll"
-FILES_libmono-npgsql2.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/2.0.*/*.mdb \
+FILES_libmono-npgsql2.0-cil-dbg += "/usr/lib/mono/gac/Npgsql/2.0.*/*.mdb \
/usr/lib/mono/gac/Npgsql/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Npgsql/2.0.*/.debug/ \
/usr/lib/mono/gac/Npgsql/2.0.*/../.debug/ \
@@ -1383,7 +1383,7 @@ FILES_libmono-npgsql2.0-cil-dbg = "/usr/lib/mono/gac/Npgsql/2.0.*/*.mdb \
/usr/lib/mono/2.0/Npgsql.dll*/*.mdb"
FILES_libmono-npgsql2.0-cil = "/usr/lib/mono/gac/Npgsql/2.0.*/ \
/usr/lib/mono/2.0/Npgsql.dll"
-FILES_libmono-system-runtime1.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/1.0.*/*.mdb \
+FILES_libmono-system-runtime1.0-cil-dbg += "/usr/lib/mono/gac/System.Runtime.*/1.0.*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Runtime.*/1.0.*/.debug/ \
/usr/lib/mono/gac/System.Runtime.*/1.0.*/../.debug/ \
@@ -1391,7 +1391,7 @@ FILES_libmono-system-runtime1.0-cil-dbg = "/usr/lib/mono/gac/System.Runtime.*/1.
/usr/lib/mono/1.0/System.Runtime.*.dll*/*.mdb"
FILES_libmono-system-runtime1.0-cil = "/usr/lib/mono/gac/System.Runtime.*/1.0.*/ \
/usr/lib/mono/1.0/System.Runtime.*.dll"
-FILES_libmono-oracle2.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/*.mdb \
+FILES_libmono-oracle2.0-cil-dbg += "/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/.debug/ \
/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/../.debug/ \
@@ -1399,7 +1399,7 @@ FILES_libmono-oracle2.0-cil-dbg = "/usr/lib/mono/gac/System.Data.OracleClient/2.
/usr/lib/mono/2.0/System.Data.OracleClient.dll*/*.mdb"
FILES_libmono-oracle2.0-cil = "/usr/lib/mono/gac/System.Data.OracleClient/2.0.*/ \
/usr/lib/mono/2.0/System.Data.OracleClient.dll"
-FILES_libmono-c5-1.0-cil-dbg = "/usr/lib/mono/gac/Mono.C5/1.0.*/*.mdb \
+FILES_libmono-c5-1.0-cil-dbg += "/usr/lib/mono/gac/Mono.C5/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.C5/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.C5/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.C5/1.0.*/../.debug/ \
@@ -1407,7 +1407,7 @@ FILES_libmono-c5-1.0-cil-dbg = "/usr/lib/mono/gac/Mono.C5/1.0.*/*.mdb \
/usr/lib/mono/2.0/Mono.C5.dll*/*.mdb"
FILES_libmono-c5-1.0-cil = "/usr/lib/mono/gac/Mono.C5/1.0.*/ \
/usr/lib/mono/2.0/Mono.C5.dll"
-FILES_libmono-sharpzip2.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/*.mdb \
+FILES_libmono-sharpzip2.6-cil-dbg += "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/*/*.mdb \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/.debug/ \
/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/../.debug/ \
@@ -1415,7 +1415,7 @@ FILES_libmono-sharpzip2.6-cil-dbg = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2
/usr/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll*/*.mdb"
FILES_libmono-sharpzip2.6-cil = "/usr/lib/mono/gac/ICSharpCode.SharpZipLib/2.6.*/ \
/usr/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll"
-FILES_libmono-cairo2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/2.0.*/*.mdb \
+FILES_libmono-cairo2.0-cil-dbg += "/usr/lib/mono/gac/Mono.Cairo/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.Cairo/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.Cairo/2.0.*/../.debug/ \
@@ -1423,7 +1423,7 @@ FILES_libmono-cairo2.0-cil-dbg = "/usr/lib/mono/gac/Mono.Cairo/2.0.*/*.mdb \
/usr/lib/mono/2.0/Mono.Cairo.dll*/*.mdb"
FILES_libmono-cairo2.0-cil = "/usr/lib/mono/gac/Mono.Cairo/2.0.*/ \
/usr/lib/mono/2.0/Mono.Cairo.dll"
-FILES_libmono-peapi2.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/2.0.*/*.mdb \
+FILES_libmono-peapi2.0-cil-dbg += "/usr/lib/mono/gac/PEAPI/2.0.*/*.mdb \
/usr/lib/mono/gac/PEAPI/2.0.*/*/*.mdb \
/usr/lib/mono/gac/PEAPI/2.0.*/.debug/ \
/usr/lib/mono/gac/PEAPI/2.0.*/../.debug/ \
@@ -1431,7 +1431,7 @@ FILES_libmono-peapi2.0-cil-dbg = "/usr/lib/mono/gac/PEAPI/2.0.*/*.mdb \
/usr/lib/mono/2.0/PEAPI.dll*/*.mdb"
FILES_libmono-peapi2.0-cil = "/usr/lib/mono/gac/PEAPI/2.0.*/ \
/usr/lib/mono/2.0/PEAPI.dll"
-FILES_mono-mcs-dbg = "/usr/bin/*.mdb \
+FILES_mono-mcs-dbg += "/usr/bin/*.mdb \
/usr/bin/*/*.mdb \
/usr/bin/.debug/ \
/usr/bin/../.debug/ \
@@ -1439,7 +1439,7 @@ FILES_mono-mcs-dbg = "/usr/bin/*.mdb \
/usr/lib/mono/1.0/*.exe*/*.mdb"
FILES_mono-mcs = "/usr/bin/ \
/usr/lib/mono/1.0/*.exe*"
-FILES_libmono-system1.0-cil-dbg = "/usr/lib/mono/gac/System*/1.0.*/*.mdb \
+FILES_libmono-system1.0-cil-dbg += "/usr/lib/mono/gac/System*/1.0.*/*.mdb \
/usr/lib/mono/gac/System*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/System*/1.0.*/.debug/ \
/usr/lib/mono/gac/System*/1.0.*/../.debug/ \
@@ -1455,7 +1455,7 @@ FILES_libmono-system1.0-cil = "/usr/lib/mono/gac/System*/1.0.*/ \
/usr/lib/mono/gac/CustomMarshalers/1.0.*/ \
/usr/lib/mono/1.0/System*.dll \
/usr/lib/mono/1.0/CustomMarshalers.dll*"
-FILES_libmono-system2.0-cil-dbg = "/usr/lib/mono/gac/System*/2.0.*/*.mdb \
+FILES_libmono-system2.0-cil-dbg += "/usr/lib/mono/gac/System*/2.0.*/*.mdb \
/usr/lib/mono/gac/System*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/System*/2.0.*/.debug/ \
/usr/lib/mono/gac/System*/2.0.*/../.debug/ \
@@ -1471,7 +1471,7 @@ FILES_libmono-system2.0-cil = "/usr/lib/mono/gac/System*/2.0.*/ \
/usr/lib/mono/gac/CustomMarshalers/2.0.*/ \
/usr/lib/mono/2.0/System*.dll \
/usr/lib/mono/2.0/CustomMarshalers.dll*"
-FILES_libmono1.0-cil-dbg = "/usr/lib/mono/gac/Mono.*/1.0.*/*.mdb \
+FILES_libmono1.0-cil-dbg += "/usr/lib/mono/gac/Mono.*/1.0.*/*.mdb \
/usr/lib/mono/gac/Mono.*/1.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.*/1.0.*/.debug/ \
/usr/lib/mono/gac/Mono.*/1.0.*/../.debug/ \
@@ -1490,7 +1490,7 @@ FILES_libmono1.0-cil = "/usr/lib/mono/gac/Mono.*/1.0.*/ \
/usr/lib/mono/gac/mono-service/1.0.*/ \
/usr/lib/mono/1.0/Mono.*.dll \
/usr/lib/mono/1.0/OpenSystem.C.dll"
-FILES_libmono2.0-cil-dbg = "/usr/lib/mono/gac/Mono.*/2.0.*/*.mdb \
+FILES_libmono2.0-cil-dbg += "/usr/lib/mono/gac/Mono.*/2.0.*/*.mdb \
/usr/lib/mono/gac/Mono.*/2.0.*/*/*.mdb \
/usr/lib/mono/gac/Mono.*/2.0.*/.debug/ \
/usr/lib/mono/gac/Mono.*/2.0.*/../.debug/ \
diff --git a/packages/monotone/monotone-6_0.26.bb b/packages/monotone/monotone-6_0.26.bb
index 2cb59c608f..afbe65fada 100644
--- a/packages/monotone/monotone-6_0.26.bb
+++ b/packages/monotone/monotone-6_0.26.bb
@@ -37,7 +37,7 @@ do_install_append() {
cp -pPR tests ${D}${tsd}/tests
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-testsuite"
tsd = "/home/monotone/${PN}"
FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
diff --git a/packages/monotone/monotone-6_0.27.bb b/packages/monotone/monotone-6_0.27.bb
index 2cb59c608f..afbe65fada 100644
--- a/packages/monotone/monotone-6_0.27.bb
+++ b/packages/monotone/monotone-6_0.27.bb
@@ -37,7 +37,7 @@ do_install_append() {
cp -pPR tests ${D}${tsd}/tests
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-testsuite"
tsd = "/home/monotone/${PN}"
FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
diff --git a/packages/monotone/monotone-6_0.31.bb b/packages/monotone/monotone-6_0.31.bb
index 103c10d2e4..5be156f2be 100644
--- a/packages/monotone/monotone-6_0.31.bb
+++ b/packages/monotone/monotone-6_0.31.bb
@@ -41,7 +41,7 @@ do_install_append() {
cp -pPR tests ${D}${tsd}/tests
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-testsuite"
tsd = "/home/monotone/${PN}"
FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
diff --git a/packages/monotone/monotone-6_0.33.bb b/packages/monotone/monotone-6_0.33.bb
index 64b1d1699e..e58477ddd1 100644
--- a/packages/monotone/monotone-6_0.33.bb
+++ b/packages/monotone/monotone-6_0.33.bb
@@ -45,7 +45,7 @@ do_install_append() {
rm ${D}/home/monotone/monotone-6/tests/diff_a_binary_file/binary
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-testsuite"
tsd = "/home/monotone/${PN}"
FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
diff --git a/packages/monotone/monotone-6_0.34.bb b/packages/monotone/monotone-6_0.34.bb
index 0442e0232e..6a5dcb5d9c 100644
--- a/packages/monotone/monotone-6_0.34.bb
+++ b/packages/monotone/monotone-6_0.34.bb
@@ -45,7 +45,7 @@ do_install_append() {
rm ${D}/home/monotone/monotone-6/tests/diff_a_binary_file/binary
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-testsuite"
tsd = "/home/monotone/${PN}"
FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
diff --git a/packages/monotone/monotone-6_0.37.bb b/packages/monotone/monotone-6_0.37.bb
index 571f5b17f5..7d65982e3d 100644
--- a/packages/monotone/monotone-6_0.37.bb
+++ b/packages/monotone/monotone-6_0.37.bb
@@ -45,7 +45,7 @@ do_install_append() {
rm ${D}/home/monotone/monotone-6/tests/diff_a_binary_file/binary
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-testsuite"
tsd = "/home/monotone/${PN}"
FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
diff --git a/packages/monotone/monotone.inc b/packages/monotone/monotone.inc
index 0bade3a11c..319309f070 100644
--- a/packages/monotone/monotone.inc
+++ b/packages/monotone/monotone.inc
@@ -36,7 +36,7 @@ do_install_append() {
mv ${D}${bindir}/monotone ${D}${bindir}/${PN}
}
-PACKAGES = "${PN} ${PN}-doc ${PN}-testsuite"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-testsuite"
tsd = "/home/monotone/${PN}"
FILES_${PN}-testsuite = "${tsd}/testsuite ${tsd}/tests"
RDEPENDS_${PN}-testsuite += "bash sed grep cvs patch perl perl-modules"
diff --git a/packages/motion/motion_3.2.6.bb b/packages/motion/motion_3.2.6.bb
deleted file mode 100644
index 2d12802cbc..0000000000
--- a/packages/motion/motion_3.2.6.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "Motion - a motion detection program"
-HOMEPAGE = "http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome"
-PRIORITY = "optional"
-PR = "r0"
-LICENSE = "GPL"
-DEPENDS = "jpeg"
-PRIORITY = "optional"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/motion/motion-3.2.6.tar.gz"
-
-inherit autotools
-
diff --git a/packages/motion/motion_3.2.9.bb b/packages/motion/motion_3.2.9.bb
new file mode 100644
index 0000000000..1010e7f046
--- /dev/null
+++ b/packages/motion/motion_3.2.9.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Motion - a motion detection program"
+HOMEPAGE = "http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome"
+AUTHOR = "Kenneth Lavrsen motion-user@lists.sourceforge.net"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "jpeg ffmpeg mysql postgresql"
+
+RSUGGESTS = "mysql-client postgresql-client"
+
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.gz"
+
+inherit autotools
+
+EXTRA_OECONF = " --with-ffmpeg=${STAGING_LIBDIR} \
+ --with-mysql-lib=${STAGING_LIBDIR} \
+ --with-mysql-include=${STAGING_INCDIR}/mysql \
+ --with-pgsql=${STAGING_DIR} "
diff --git a/packages/mozilla/firefox.inc b/packages/mozilla/firefox.inc
index bd0322334d..f5e020dc68 100644
--- a/packages/mozilla/firefox.inc
+++ b/packages/mozilla/firefox.inc
@@ -1,4 +1,5 @@
SRC_URI += "file://mozilla-firefox.png file://mozilla-firefox.desktop"
+
PACKAGES =+ "firefox-inspector"
FILES_firefox-inspector = " ${libdir}/firefox-${PV}/chrome/inspector* \
@@ -27,3 +28,11 @@ pkg_postinst_firefox() {
# work around requirement for root access on first startup
chmod -R a+w ${libdir}/firefox*
}
+
+do_stage() {
+ autotools_stage_all
+
+
+
+}
+
diff --git a/packages/mozilla/firefox_1.0.7.bb b/packages/mozilla/firefox_1.0.7.bb
index dd4d734f89..b82dbda91e 100644
--- a/packages/mozilla/firefox_1.0.7.bb
+++ b/packages/mozilla/firefox_1.0.7.bb
@@ -1,4 +1,5 @@
-PR = "r0"
+PR = "r2"
+
SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/firefox-${PV}-source.tar.bz2 \
file://xptcstubs.patch;patch=1 \
file://no-xmb.patch;patch=1 \
@@ -8,11 +9,10 @@ SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/
file://firefox-1.0-gcc4-compile.patch;patch=1;pnum=0 \
file://xptcinvoke-arm.patch;patch=1 \
file://mozilla-eabi.patch;patch=1"
-
S = "${WORKDIR}/mozilla"
-inherit mozilla
-
+inherit autotools mozilla
+
require firefox.inc
EXTRA_OECONF += " --with-gssapi=${STAGINGLIBDIR}/../"
@@ -20,4 +20,3 @@ EXTRA_OECONF += " --with-gssapi=${STAGINGLIBDIR}/../"
do_compile_prepend() {
cp ${WORKDIR}/jsautocfg.h ${S}/js/src/
}
-
diff --git a/packages/mozilla/firefox_2.0.0.3.bb b/packages/mozilla/firefox_2.0.0.3.bb
index e1fb5a996d..72c42bc074 100644
--- a/packages/mozilla/firefox_2.0.0.3.bb
+++ b/packages/mozilla/firefox_2.0.0.3.bb
@@ -6,38 +6,36 @@ SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/
file://no-xmb.patch;patch=1 \
file://jsautocfg.h \
file://extensions-hack.patch;patch=1 \
- file://security-cross.patch;patch=1 \
- file://jsautocfg-dontoverwrite.patch;patch=1 \
- file://xptcinvoke-arm.patch;patch=1 \
- file://eabi-fix.patch;patch=1 \
- file://eabi-fix2.patch;patch=1 \
- file://eabi-fix3.patch;patch=1 \
- file://linkage-problem.patch;patch=1 \
- "
+ file://security-cross.patch;patch=1 \
+ file://jsautocfg-dontoverwrite.patch;patch=1 \
+ file://xptcinvoke-arm.patch;patch=1 \
+ file://eabi-fix.patch;patch=1 \
+ file://eabi-fix2.patch;patch=1 \
+ file://eabi-fix3.patch;patch=1 \
+ file://linkage-problem.patch;patch=1 \
+"
S = "${WORKDIR}/mozilla"
DEFAULT_PREFERENCE = "-1"
inherit mozilla
-
require firefox.inc
do_compile_prepend() {
cp ${WORKDIR}/jsautocfg.h ${S}/js/src/
-
sed -i "s|CPU_ARCH =|CPU_ARCH = ${TARGET_ARCH}|" security/coreconf/Linux.mk
}
do_stage() {
-
- install -d ${STAGING_INCDIR}/${P}
+ install -d ${STAGING_INCDIR}/firefox-${PV}
cd dist/sdk/include
+ rm -rf obsolete
headers=`find . -name "*.h"`
for f in $headers
do
- install -D -m 0644 $f ${STAGING_INCDIR}/${P}/$f
+ install -D -m 0644 $f ${STAGING_INCDIR}/firefox-${PV}/
done
# removes 2 lines that call absent headers
- sed -e '178,179d' ${STAGING_INCDIR}/${P}/nsIServiceManager.h
+ sed -e '178,179d' ${STAGING_INCDIR}/firefox-${PV}/nsIServiceManager.h
}
diff --git a/packages/mplayer/files/mplayer-1.0rc1-atmel.2.patch b/packages/mplayer/files/mplayer-1.0rc1-atmel.2.patch
new file mode 100644
index 0000000000..800f43e8eb
--- /dev/null
+++ b/packages/mplayer/files/mplayer-1.0rc1-atmel.2.patch
@@ -0,0 +1,6444 @@
+ cfg-common.h | 4 +
+ cfg-mencoder.h | 4 +
+ cfg-mplayer.h | 4 +
+ configure | 13 +-
+ libaf/af_format.c | 7 +
+ libavcodec/Makefile | 7 +
+ libavcodec/avr32/dsputil_avr32.c | 2678 ++++++++++++++++++++++++++++++++++++++
+ libavcodec/avr32/fdct.S | 541 ++++++++
+ libavcodec/avr32/h264idct.S | 451 +++++++
+ libavcodec/avr32/idct.S | 829 ++++++++++++
+ libavcodec/avr32/mc.S | 434 ++++++
+ libavcodec/avr32/pico.h | 260 ++++
+ libavcodec/bitstream.h | 77 +-
+ libavcodec/dsputil.c | 3 +
+ libavcodec/h264.c | 15 +
+ libavutil/common.h | 16 +
+ libavutil/internal.h | 9 +
+ libfaad2/common.h | 2 +-
+ libmpcodecs/ad_libmad.c | 5 +
+ libswscale/pico-avr32.h | 137 ++
+ libswscale/swscale_internal.h | 2 +-
+ libswscale/yuv2rgb.c | 14 +
+ libswscale/yuv2rgb_avr32.c | 416 ++++++
+ libvo/vo_fbdev2.c | 101 ++-
+ version.sh | 2 +-
+ 25 files changed, 6011 insertions(+), 20 deletions(-)
+ create mode 100644 libavcodec/avr32/dsputil_avr32.c
+ create mode 100644 libavcodec/avr32/fdct.S
+ create mode 100644 libavcodec/avr32/h264idct.S
+ create mode 100644 libavcodec/avr32/idct.S
+ create mode 100644 libavcodec/avr32/mc.S
+ create mode 100644 libavcodec/avr32/pico.h
+ create mode 100644 libswscale/pico-avr32.h
+ create mode 100644 libswscale/yuv2rgb_avr32.c
+
+diff --git a/cfg-common.h b/cfg-common.h
+index 780df38..7d878a8 100644
+--- a/cfg-common.h
++++ b/cfg-common.h
+@@ -235,6 +235,10 @@
+ {"tsprobe", &ts_probe, CONF_TYPE_POSITION, 0, 0, TS_MAX_PROBE_SIZE, NULL},
+ {"tskeepbroken", &ts_keep_broken, CONF_TYPE_FLAG, 0, 0, 1, NULL},
+
++#ifdef ARCH_AVR32
++ {"use-pico", &avr32_use_pico, CONF_TYPE_FLAG, 0, 0, 1, NULL},
++ {"nouse-pico", &avr32_use_pico, CONF_TYPE_FLAG, 0, 1, 0, NULL},
++#endif
+ // draw by slices or whole frame (useful with libmpeg2/libavcodec)
+ {"slices", &vd_use_slices, CONF_TYPE_FLAG, 0, 0, 1, NULL},
+ {"noslices", &vd_use_slices, CONF_TYPE_FLAG, 0, 1, 0, NULL},
+diff --git a/cfg-mencoder.h b/cfg-mencoder.h
+index 411b748..addf791 100644
+--- a/cfg-mencoder.h
++++ b/cfg-mencoder.h
+@@ -5,6 +5,10 @@
+
+ #include "cfg-common.h"
+
++#ifdef ARCH_AVR32
++extern int avr32_use_pico;
++#endif
++
+ #ifdef USE_FAKE_MONO
+ extern int fakemono; // defined in dec_audio.c
+ #endif
+diff --git a/cfg-mplayer.h b/cfg-mplayer.h
+index 62b6eac..31499c2 100644
+--- a/cfg-mplayer.h
++++ b/cfg-mplayer.h
+@@ -4,6 +4,10 @@
+
+ #include "cfg-common.h"
+
++#ifdef ARCH_AVR32
++extern int avr32_use_pico;
++#endif
++
+ extern int noconsolecontrols;
+
+ #if defined(HAVE_FBDEV)||defined(HAVE_VESA)
+diff --git a/configure b/configure
+index 29002c8..56c6fe4 100755
+--- a/configure
++++ b/configure
+@@ -1203,6 +1203,15 @@ EOF
+ _optimizing="$proc"
+ ;;
+
++ avr32)
++ _def_arch='#define ARCH_AVR32'
++ _target_arch='TARGET_ARCH_AVR32 = yes'
++ iproc='avr32'
++ proc=''
++ _march=''
++ _mcpu=''
++ _optimizing=''
++ ;;
+ arm|armv4l|armv5tel)
+ _def_arch='#define ARCH_ARMV4L 1'
+ _target_arch='TARGET_ARCH_ARMV4L = yes'
+@@ -1533,7 +1542,7 @@ echores $_named_asm_args
+ # Checking for CFLAGS
+ _stripbinaries=yes
+ if test "$_profile" != "" || test "$_debug" != "" ; then
+- CFLAGS="-W -Wall -O2 $_march $_mcpu $_debug $_profile"
++ CFLAGS="-W -Wall -O4 $_march $_mcpu $_debug $_profile"
+ if test "$_cc_major" -ge "3" ; then
+ CFLAGS=`echo "$CFLAGS" | sed -e 's/\(-Wall\)/\1 -Wno-unused-parameter/'`
+ fi
+@@ -3794,7 +3803,7 @@ fi
+
+
+ echocheck "X11 headers presence"
+- for I in `echo $_inc_extra | sed s/-I//g` /usr/X11/include /usr/X11R6/include /usr/include/X11R6 /usr/include /usr/openwin/include ; do
++ for I in `echo $_inc_extra | sed s/-I//g`; do
+ if test -f "$I/X11/Xlib.h" ; then
+ _inc_x11="-I$I"
+ _x11_headers="yes"
+diff --git a/libaf/af_format.c b/libaf/af_format.c
+index e5b7cc9..5d7ea6d 100644
+--- a/libaf/af_format.c
++++ b/libaf/af_format.c
+@@ -20,7 +20,14 @@
+ // Integer to float conversion through lrintf()
+ #ifdef HAVE_LRINTF
+ #include <math.h>
++
++#ifdef ARCH_AVR32
++#define lrintf(x) rint(x)
++#define llrint(x) (long long)rint(x)
++#else
+ long int lrintf(float);
++#endif
++
+ #else
+ #define lrintf(x) ((int)(x))
+ #endif
+diff --git a/libavcodec/Makefile b/libavcodec/Makefile
+index 17b6c45..8e1dc96 100644
+--- a/libavcodec/Makefile
++++ b/libavcodec/Makefile
+@@ -360,6 +360,12 @@ OBJS-$(TARGET_ARCH_SPARC) += sparc/dsputil_vis.o \
+
+ sparc/dsputil_vis.o: CFLAGS += -mcpu=ultrasparc -mtune=ultrasparc
+
++# avr32 specific stuff
++ifeq ($(TARGET_ARCH_AVR32),yes)
++ASM_OBJS += avr32/idct.o avr32/fdct.o avr32/mc.o avr32/h264idct.o
++OBJS += avr32/dsputil_avr32.o
++endif
++
+ # sun mediaLib specific stuff
+ OBJS-$(HAVE_MLIB) += mlib/dsputil_mlib.o \
+
+@@ -419,6 +425,7 @@ tests: apiexample $(TESTS)
+ clean::
+ rm -f \
+ i386/*.o i386/*~ \
++ avr32/*.o avr32/*~ \
+ armv4l/*.o armv4l/*~ \
+ mlib/*.o mlib/*~ \
+ alpha/*.o alpha/*~ \
+diff --git a/libavcodec/avr32/dsputil_avr32.c b/libavcodec/avr32/dsputil_avr32.c
+new file mode 100644
+index 0000000..200284d
+--- /dev/null
++++ b/libavcodec/avr32/dsputil_avr32.c
+@@ -0,0 +1,2678 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++
++#include "../dsputil.h"
++#include "pico.h"
++
++int avr32_use_pico = 1;
++
++//#define CHECK_DSP_FUNCS_AGAINST_C
++
++#ifdef CHECK_DSP_FUNCS_AGAINST_C
++#define DSP_FUNC_NAME(name) test_ ## name
++#else
++#define DSP_FUNC_NAME(name) name
++#endif
++
++union doubleword {
++ int64_t doubleword;
++ struct {
++ int32_t top;
++ int32_t bottom;
++ } words;
++};
++
++#undef LD16
++#undef LD32
++#undef LD64
++
++#define LD16(a) (*((uint16_t*)(a)))
++#define LD32(a) (*((uint32_t*)(a)))
++#define LD64(a) (*((uint64_t*)(a)))
++#define LD64_UNALIGNED(a) \
++ ({ union doubleword __tmp__; \
++ __tmp__.words.top = LD32(a); \
++ __tmp__.words.bottom = LD32(a + 4); \
++ __tmp__.doubleword; })
++
++#undef ST32
++#undef ST16
++
++#define ST16(a, b) *((uint16_t*)(a)) = (b)
++#define ST32(a, b) *((uint32_t*)(a)) = (b)
++
++#undef rnd_avg32
++#define rnd_avg32(a, b) \
++ ({ uint32_t __tmp__;\
++ asm("pavg.ub\t%0, %1, %2" : "=r"(__tmp__) : "r"(a), "r"(b));\
++ __tmp__;})
++
++void idct_avr32(DCTELEM *data);
++void fdct_avr32(DCTELEM *data);
++
++void idct_put_avr32(uint8_t *dest, int line_size, DCTELEM *data);
++void idct_add_avr32(uint8_t *dest, int line_size, DCTELEM *data);
++
++void h264_idct_add_avr32(uint8_t *dest, DCTELEM *data, int stride);
++void h264_idct8_add_avr32(uint8_t *dest, DCTELEM *data, int stride);
++
++#define extern_dspfunc(PFX, NUM) \
++ void PFX ## _pixels ## NUM ## _avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
++ void PFX ## _pixels ## NUM ## _h_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
++ void PFX ## _pixels ## NUM ## _v_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
++ void PFX ## _pixels ## NUM ## _hv_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h )
++
++extern_dspfunc(put, 8);
++extern_dspfunc(put_no_rnd, 8);
++extern_dspfunc(avg, 8);
++extern_dspfunc(avg_no_rnd, 8);
++#undef extern_dspfunc
++
++#ifdef CHECK_DSP_FUNCS_AGAINST_C
++#define extern_dspfunc(PFX, NUM) \
++ void PFX ## _pixels ## NUM ## _c(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
++ void PFX ## _pixels ## NUM ## _x2_c(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
++ void PFX ## _pixels ## NUM ## _y2_c(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
++ void PFX ## _pixels ## NUM ## _xy2_c(uint8_t *dst, const uint8_t *pixels, int line_size, int h )
++
++extern_dspfunc(put, 4);
++extern_dspfunc(put_no_rnd, 4);
++extern_dspfunc(put, 8);
++extern_dspfunc(put_no_rnd, 8);
++extern_dspfunc(put, 16);
++extern_dspfunc(put_no_rnd, 16);
++extern_dspfunc(avg, 8);
++extern_dspfunc(avg_no_rnd, 8);
++extern_dspfunc(avg, 16);
++extern_dspfunc(avg_no_rnd, 16);
++
++
++#undef extern_dspfunc
++#define extern_dspfunc(PFX, NUM) \
++void PFX ## NUM ## _mc00_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc10_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc20_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc30_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc01_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc11_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc21_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc31_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc02_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc12_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc22_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc32_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc03_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc13_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc23_c(uint8_t *dst, uint8_t *src, int stride); \
++void PFX ## NUM ## _mc33_c(uint8_t *dst, uint8_t *src, int stride); \
++
++extern_dspfunc(put_h264_qpel, 16);
++extern_dspfunc(put_h264_qpel, 8);
++extern_dspfunc(put_h264_qpel, 4);
++extern_dspfunc(avg_h264_qpel, 16);
++extern_dspfunc(avg_h264_qpel, 8);
++extern_dspfunc(avg_h264_qpel, 4);
++
++#undef extern_dspfunc
++
++void put_h264_chroma_mc2_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
++void put_h264_chroma_mc4_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
++void put_h264_chroma_mc8_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
++
++void avg_h264_chroma_mc2_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
++void avg_h264_chroma_mc4_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
++void avg_h264_chroma_mc8_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
++
++
++void dump_block8(uint8_t *block, int line_size, int h);
++void dump_block4(uint8_t *block, int line_size, int h);
++void dump_block(uint8_t *block, int line_size, int h, int w);
++
++void check_block8(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct,
++ int h, char *name, int max_dev);
++void check_block4(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct,
++ int h, char *name, int max_dev);
++void check_block(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct,
++ int h, int width, char *name, int max_dev);
++
++#define PIXOP2( OPNAME, OP ) \
++void OPNAME ## _pixels4_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ OP(*((uint32_t*)(block )), LD32(pixels ));\
++ pixels+=line_size;\
++ block +=line_size;\
++ }\
++}\
++void OPNAME ## _pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
++ int src_stride1, int src_stride2, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ uint32_t a,b;\
++ a= LD32(&src1[i*src_stride1 ]);\
++ b= LD32(&src2[i*src_stride2 ]);\
++ OP(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));\
++ a= LD32(&src1[i*src_stride1+4]);\
++ b= LD32(&src2[i*src_stride2+4]);\
++ OP(*((uint32_t*)&dst[i*dst_stride+4]), rnd_avg32(a, b));\
++ }\
++}\
++\
++void OPNAME ## _pixels4_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
++ int src_stride1, int src_stride2, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ uint32_t a,b;\
++ a= LD32(&src1[i*src_stride1 ]);\
++ b= LD32(&src2[i*src_stride2 ]);\
++ OP(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));\
++ }\
++}\
++\
++void OPNAME ## _pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
++ int src_stride1, int src_stride2, int h){\
++ OPNAME ## _pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h);\
++ OPNAME ## _pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);\
++}\
++
++#else
++#define PIXOP2( OPNAME, OP ) \
++static void OPNAME ## _pixels4_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ OP(*((uint32_t*)(block )), LD32(pixels ));\
++ pixels+=line_size;\
++ block +=line_size;\
++ }\
++}\
++static void OPNAME ## _pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ OP(*((uint32_t*)(block )), LD32(pixels ));\
++ OP(*((uint32_t*)(block+4)), LD32(pixels+4));\
++ pixels+=line_size;\
++ block +=line_size;\
++ }\
++}\
++static void OPNAME ## _pixels16_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ OP(*((uint32_t*)(block )), LD32(pixels ));\
++ OP(*((uint32_t*)(block+4)), LD32(pixels+4));\
++ OP(*((uint32_t*)(block+8)), LD32(pixels+8));\
++ OP(*((uint32_t*)(block+12)), LD32(pixels+12));\
++ pixels+=line_size;\
++ block +=line_size;\
++ }\
++}\
++static void OPNAME ## _pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
++ int src_stride1, int src_stride2, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ uint32_t a,b;\
++ a= LD32(&src1[i*src_stride1 ]);\
++ b= LD32(&src2[i*src_stride2 ]);\
++ OP(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));\
++ a= LD32(&src1[i*src_stride1+4]);\
++ b= LD32(&src2[i*src_stride2+4]);\
++ OP(*((uint32_t*)&dst[i*dst_stride+4]), rnd_avg32(a, b));\
++ }\
++}\
++\
++static void OPNAME ## _pixels4_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
++ int src_stride1, int src_stride2, int h){\
++ int i;\
++ for(i=0; i<h; i++){\
++ uint32_t a,b;\
++ a= LD32(&src1[i*src_stride1 ]);\
++ b= LD32(&src2[i*src_stride2 ]);\
++ OP(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));\
++ }\
++}\
++\
++static void OPNAME ## _pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
++ int src_stride1, int src_stride2, int h){\
++ OPNAME ## _pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h);\
++ OPNAME ## _pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);\
++}\
++
++#endif
++
++#define op_avg(a, b) a = rnd_avg32(a, b)
++#define op_put(a, b) a = b
++
++PIXOP2(avg, op_avg)
++PIXOP2(put, op_put)
++#undef op_avg
++#undef op_put
++
++
++
++static inline void copy_block4(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h)
++{
++ int i;
++ for(i=0; i<h; i++)
++ {
++ ST32(dst , LD32(src ));
++ dst+=dstStride;
++ src+=srcStride;
++ }
++}
++
++static void clear_blocks_avr32(DCTELEM *blocks)
++{
++ int n = 12;
++ uint64_t tmp1, tmp2;
++ blocks += 6*64;
++ asm volatile ( "mov\t%1, 0\n"
++ "mov\t%m1, 0\n"
++ "mov\t%2, 0\n"
++ "mov\t%m2, 0\n"
++ "0:\n"
++ "stm\t--%3, %1, %m1, %2, %m2\n"
++ "stm\t--%3, %1, %m1, %2, %m2\n"
++ "stm\t--%3, %1, %m1, %2, %m2\n"
++ "stm\t--%3, %1, %m1, %2, %m2\n"
++ "sub\t%0, 1\n"
++ "brne\t0b\n"
++ : "+r"(n), "=&r"(tmp1), "=&r"(tmp2),
++ "+r"(blocks));
++}
++
++
++static inline void copy_block8(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h)
++{
++ int i;
++ for(i=0; i<h; i++)
++ {
++ ST32(dst , LD32(src ));
++ ST32(dst+4 , LD32(src+4 ));
++ dst+=dstStride;
++ src+=srcStride;
++ }
++}
++
++static inline void copy_block16(uint8_t *dst, uint8_t *src, int dstStride, int srcStride, int h)
++{
++ int i;
++ for(i=0; i<h; i++)
++ {
++ ST32(dst , LD32(src ));
++ ST32(dst+4 , LD32(src+4 ));
++ ST32(dst+8 , LD32(src+8 ));
++ ST32(dst+12, LD32(src+12));
++ dst+=dstStride;
++ src+=srcStride;
++ }
++}
++
++
++static void put_h264_chroma_mc2_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
++ const int A=(8-x)*(8-y);
++ const int B=( x)*(8-y);
++ const int C=(8-x)*( y);
++ const int D=( x)*( y);
++ int i;
++
++ PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF0_B, 32);
++ PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF1_B, 0);
++ PICO_PUT_W(PICO_COEFF2_A, 0);
++ PICO_PUT_W(PICO_COEFF2_B, 0);
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(6)
++ | PICO_OFFSET_FRAC_BITS(6));
++
++ for(i=0; i<h; i++)
++ {
++
++ int src0 = LD32(src);
++ int src1 = LD32(src + stride);
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 0, 4, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 1, 5, 0);
++ src += stride;
++ ST16(dst,(short)PICO_GET_W(PICO_OUTPIX0));
++ dst += stride;
++ }
++}
++
++
++static void put_h264_chroma_mc4_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
++ const int A=(8-x)*(8-y);\
++ const int B=( x)*(8-y);
++ const int C=(8-x)*( y);
++ const int D=( x)*( y);
++ int i;
++
++ PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF0_B, 32);
++ PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF1_B, 0);
++ PICO_PUT_W(PICO_COEFF2_A, 0);
++ PICO_PUT_W(PICO_COEFF2_B, 0);
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(6)
++ | PICO_OFFSET_FRAC_BITS(6));
++
++ for(i=0; i<h; i++)
++ {
++ /*
++ OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
++ OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
++ OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
++ OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
++ dst+= stride;
++ src+= stride;
++ */
++
++ int src0 = LD32(src);
++ int src1 = (((int)src[4] << 24) | (int)src[stride]);
++ int src2 = LD32(src + stride + 1);
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
++ src += stride;
++ ST32(dst, PICO_GET_W(PICO_OUTPIX0));
++
++ dst += stride;
++ }
++}
++
++static void put_h264_chroma_mc8_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
++ const int A=(8-x)*(8-y);
++ const int B=( x)*(8-y);
++ const int C=(8-x)*( y);
++ const int D=( x)*( y);
++ int i;
++
++ PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF0_B, 32);
++ PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF1_B, 0);
++ PICO_PUT_W(PICO_COEFF2_A, 0);
++ PICO_PUT_W(PICO_COEFF2_B, 0);
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(6)
++ | PICO_OFFSET_FRAC_BITS(6));
++
++ for(i=0; i<h; i++)
++ {
++ /*
++ OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
++ OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
++ OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
++ OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
++ OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));
++ OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));
++ OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));
++ OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));
++ dst+= stride;
++ src+= stride;
++ */
++ int src0 = LD32(src);
++ int src1 = (((int)src[4] << 24) | (int)src[stride]);
++ int src2 = LD32(src + stride + 1);
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
++ ST32(dst, PICO_GET_W(PICO_OUTPIX0));
++
++ src0 = LD32(src + 4);
++ src1 = (src[8] << 24) | src[stride + 4];
++ src2 = LD32(src + stride + 5);
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
++ src += stride;
++ ST32(dst + 4, PICO_GET_W(PICO_OUTPIX0));
++
++ dst += stride;
++ }
++}
++
++
++static void avg_h264_chroma_mc2_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
++ const int A=(8-x)*(8-y);
++ const int B=( x)*(8-y);
++ const int C=(8-x)*( y);
++ const int D=( x)*( y);
++ int i;
++
++ PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF0_B, 32);
++ PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF1_B, 0);
++ PICO_PUT_W(PICO_COEFF2_A, 0);
++ PICO_PUT_W(PICO_COEFF2_B, 0);
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(6)
++ | PICO_OFFSET_FRAC_BITS(6));
++
++ for(i=0; i<h; i++)
++ {
++ int src0 = LD32(src);
++ int src1 = LD32(src + stride);
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 0, 4, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 1, 5, 0);
++ src += stride;
++ ST16(dst, rnd_avg32(LD16(dst), PICO_GET_W(PICO_OUTPIX0)));
++ dst += stride;
++ }
++}
++
++
++static void avg_h264_chroma_mc4_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
++ const int A=(8-x)*(8-y);\
++ const int B=( x)*(8-y);
++ const int C=(8-x)*( y);
++ const int D=( x)*( y);
++ int i;
++
++ PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF0_B, 32);
++ PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF1_B, 0);
++ PICO_PUT_W(PICO_COEFF2_A, 0);
++ PICO_PUT_W(PICO_COEFF2_B, 0);
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(6)
++ | PICO_OFFSET_FRAC_BITS(6));
++
++ for(i=0; i<h; i++)
++ {
++ /*
++ OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
++ OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
++ OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
++ OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
++ dst+= stride;
++ src+= stride;
++ */
++
++ int src0 = *((int *)src);
++ int src1 = (int)((src[4] << 24) | src[stride]);
++ int src2 = *((int *)(src + stride + 1));
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
++ src += stride;
++ ST32(dst, rnd_avg32(LD32(dst), PICO_GET_W(PICO_OUTPIX0)));
++ dst += stride;
++ }
++}
++
++static void avg_h264_chroma_mc8_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
++ const int A=(8-x)*(8-y);
++ const int B=( x)*(8-y);
++ const int C=(8-x)*( y);
++ const int D=( x)*( y);
++ int i;
++
++ PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF0_B, 32);
++ PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
++ PICO_PUT_W(PICO_COEFF1_B, 0);
++ PICO_PUT_W(PICO_COEFF2_A, 0);
++ PICO_PUT_W(PICO_COEFF2_B, 0);
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(6)
++ | PICO_OFFSET_FRAC_BITS(6));
++
++ for(i=0; i<h; i++)
++ {
++ /*
++ OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
++ OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
++ OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
++ OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
++ OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));
++ OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));
++ OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));
++ OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));
++ dst+= stride;
++ src+= stride;
++ */
++ int src0 = *((int *)src);
++ int src1 = (volatile int)((src[4] << 24) | src[stride]);
++ int src2 = *((int *)(src + stride + 1));
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
++ ST32(dst, rnd_avg32(LD32(dst), PICO_GET_W(PICO_OUTPIX0)));
++
++ src0 = *((int *)(src + 4));
++ src1 = (int)((src[8] << 24) | src[stride + 4]);
++ src2 = *((int *)(src + stride + 5));
++
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
++ src += stride;
++ ST32(dst + 4, rnd_avg32(LD32(dst + 4), PICO_GET_W(PICO_OUTPIX0)));
++ dst += stride;
++ }
++}
++
++static struct pico_config_t h264_qpel4_h_lowpass_config = {
++ .input_mode = PICO_HOR_FILTER_MODE,
++ .output_mode = PICO_PLANAR_MODE,
++ .coeff_frac_bits = 5,
++ .offset_frac_bits = 5,
++ .coeff0_0 = 1,
++ .coeff0_1 = -5,
++ .coeff0_2 = 20,
++ .coeff0_3 = 16,
++ .coeff1_0 = 20,
++ .coeff1_1 = -5,
++ .coeff1_2 = 1,
++ .coeff1_3 = 0,
++ .coeff2_0 = 0,
++ .coeff2_1 = 0,
++ .coeff2_2 = 0,
++ .coeff2_3 = 0
++};
++
++
++
++static void put_h264_qpel4_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ const int h=4;
++ int i;
++
++ set_pico_config(&h264_qpel4_h_lowpass_config);
++
++ for(i=0; i<h; i++){
++
++ /*
++ OP(dst[0], (src[0]+src[1])*20 - (src[-1]+src[2])*5 + (src[-2]+src[3]));\
++ OP(dst[1], (src[1]+src[2])*20 - (src[0 ]+src[3])*5 + (src[-1]+src[4]));\
++ OP(dst[2], (src[2]+src[3])*20 - (src[1 ]+src[4])*5 + (src[0 ]+src[5]));\
++ OP(dst[3], (src[3]+src[4])*20 - (src[2 ]+src[5])*5 + (src[1 ]+src[6]));\
++ dst+=dstStride;\
++ src+=srcStride;\ */
++ PICO_MVRC_W(PICO_INPIX0, LD32(src - 2));
++ PICO_MVRC_D(PICO_INPIX2, LD64_UNALIGNED(src + 2));
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
++ src += srcStride;
++ ST32(dst, PICO_GET_W(PICO_OUTPIX0));
++ dst += dstStride;
++ }
++}
++
++static void avg_h264_qpel4_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ const int h=4;
++ int i;
++
++ set_pico_config(&h264_qpel4_h_lowpass_config);
++
++ for(i=0; i<h; i++){
++
++ /*
++ OP(dst[0], (src[0]+src[1])*20 - (src[-1]+src[2])*5 + (src[-2]+src[3]));\
++ OP(dst[1], (src[1]+src[2])*20 - (src[0 ]+src[3])*5 + (src[-1]+src[4]));\
++ OP(dst[2], (src[2]+src[3])*20 - (src[1 ]+src[4])*5 + (src[0 ]+src[5]));\
++ OP(dst[3], (src[3]+src[4])*20 - (src[2 ]+src[5])*5 + (src[1 ]+src[6]));\
++ dst+=dstStride;\
++ src+=srcStride;\ */
++
++ PICO_MVRC_W(PICO_INPIX0, LD32(src - 2));
++ PICO_MVRC_D(PICO_INPIX2, LD64_UNALIGNED(src + 2));
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
++ src += srcStride;
++ ST32(dst, rnd_avg32(LD32(dst), PICO_GET_W(PICO_OUTPIX0)));
++ dst += dstStride;
++ }
++}
++
++static struct pico_config_t h264_qpel4_v_lowpass_config1 = {
++ .input_mode = PICO_VERT_FILTER_MODE,
++ .output_mode = PICO_PACKED_MODE,
++ .coeff_frac_bits = 5,
++ .offset_frac_bits = 5,
++ .coeff0_0 = 1,
++ .coeff0_1 = -5,
++ .coeff0_2 = 20,
++ .coeff0_3 = 16,
++ .coeff1_0 = 1,
++ .coeff1_1 = -5,
++ .coeff1_2 = 20,
++ .coeff1_3 = 16,
++ .coeff2_0 = 1,
++ .coeff2_1 = -5,
++ .coeff2_2 = 20,
++ .coeff2_3 = 16
++};
++
++
++
++static struct pico_config_t h264_qpel4_v_lowpass_config2 = {
++ .input_mode = PICO_VERT_FILTER_MODE,
++ .output_mode = PICO_PLANAR_MODE,
++ .coeff_frac_bits = 5,
++ .offset_frac_bits = 5,
++ .coeff0_0 = 1,
++ .coeff0_1 = -5,
++ .coeff0_2 = 20,
++ .coeff0_3 = 16,
++ .coeff1_0 = 20,
++ .coeff1_1 = -5,
++ .coeff1_2 = 1,
++ .coeff1_3 = 0,
++ .coeff2_0 = 0,
++ .coeff2_1 = 0,
++ .coeff2_2 = 0,
++ .coeff2_3 = 0
++};
++
++static void put_h264_qpel4_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++
++ /*
++ const int w=4;
++ uint8_t *cm = cropTbl + MAX_NEG_CROP;
++ int i;
++ for(i=0; i<w; i++)
++ {
++ const int srcB= src[-2*srcStride];\
++ const int srcA= src[-1*srcStride];\
++ const int src0= src[0 *srcStride];\
++ const int src1= src[1 *srcStride];\
++ const int src2= src[2 *srcStride];\
++ const int src3= src[3 *srcStride];\
++ const int src4= src[4 *srcStride];\
++ const int src5= src[5 *srcStride];\
++ const int src6= src[6 *srcStride];\
++ OP(dst[0*dstStride], (src0+src1)*20 - (srcA+src2)*5 + (srcB+src3));\
++ OP(dst[1*dstStride], (src1+src2)*20 - (src0+src3)*5 + (srcA+src4));\
++ OP(dst[2*dstStride], (src2+src3)*20 - (src1+src4)*5 + (src0+src5));\
++ OP(dst[3*dstStride], (src3+src4)*20 - (src2+src5)*5 + (src1+src6));\
++ dst++;\
++ src++;\
++ */
++
++ set_pico_config(&h264_qpel4_v_lowpass_config1);
++
++ {
++ int srcB= LD32(src - 2*srcStride);
++ int srcA= LD32(src - 1*srcStride);
++ int src0= LD32(src + 0 *srcStride);
++ int src1= LD32(src + 1 *srcStride);
++ int src2= LD32(src + 2 *srcStride);
++ int src3= LD32(src + 3 *srcStride);
++ int src4= LD32(src + 4 *srcStride);
++ int src5= LD32(src + 5 *srcStride);
++ int src6= LD32(src + 6 *srcStride);
++
++ /* First compute the leftmost three colums */
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(dst, PICO_GET_W(PICO_OUTPIX0));
++ dst += dstStride;
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_MVRC_W(PICO_INPIX1, src3);
++ PICO_MVRC_W(PICO_INPIX0, src4);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(dst, PICO_GET_W(PICO_OUTPIX0));
++ dst += dstStride;
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_MVRC_W(PICO_INPIX1, src4);
++ PICO_MVRC_W(PICO_INPIX0, src5);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(dst, PICO_GET_W(PICO_OUTPIX0));
++ dst += dstStride;
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src4);
++ PICO_MVRC_W(PICO_INPIX1, src5);
++ PICO_MVRC_W(PICO_INPIX0, src6);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(dst, PICO_GET_W(PICO_OUTPIX0));
++ /* Now compute the last column */
++
++ union wordbytes {
++ int word;
++ struct {
++ unsigned int t:8;
++ unsigned int u:8;
++ unsigned int l:8;
++ unsigned int b:8;
++ } bytes; } tmp1, tmp2, tmp3;
++
++
++ tmp1.bytes.t = srcB;
++ tmp1.bytes.u = src1;
++ tmp1.bytes.l = src4;
++
++ tmp2.bytes.t = srcA;
++ tmp2.bytes.u = src2;
++ tmp2.bytes.l = src5;
++
++ tmp3.bytes.t = src0;
++ tmp3.bytes.u = src3;
++ tmp3.bytes.l = src6;
++
++ PICO_MVRC_W(PICO_INPIX0, tmp1.word);
++ PICO_MVRC_W(PICO_INPIX1, tmp2.word);
++ PICO_MVRC_W(PICO_INPIX2, tmp3.word);
++ set_pico_config(&h264_qpel4_v_lowpass_config2);
++
++
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
++
++ PICO_MVCR_W(tmp1.word, PICO_OUTPIX0);
++ dst[3] = (char)(tmp1.bytes.b);
++ dst[3 - dstStride] = (char)(tmp1.bytes.l);
++ dst[3 - 2*dstStride] = (char)(tmp1.bytes.u);
++ dst[3 - 3*dstStride] = (char)(tmp1.bytes.t);
++
++ }
++ /*}
++
++
++ }*/
++}
++
++static void avg_h264_qpel4_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++
++ /*
++ const int w=4;
++ uint8_t *cm = cropTbl + MAX_NEG_CROP;
++ int i;
++ for(i=0; i<w; i++)
++ {
++ const int srcB= src[-2*srcStride];\
++ const int srcA= src[-1*srcStride];\
++ const int src0= src[0 *srcStride];\
++ const int src1= src[1 *srcStride];\
++ const int src2= src[2 *srcStride];\
++ const int src3= src[3 *srcStride];\
++ const int src4= src[4 *srcStride];\
++ const int src5= src[5 *srcStride];\
++ const int src6= src[6 *srcStride];\
++ OP(dst[0*dstStride], (src0+src1)*20 - (srcA+src2)*5 + (srcB+src3));\
++ OP(dst[1*dstStride], (src1+src2)*20 - (src0+src3)*5 + (srcA+src4));\
++ OP(dst[2*dstStride], (src2+src3)*20 - (src1+src4)*5 + (src0+src5));\
++ OP(dst[3*dstStride], (src3+src4)*20 - (src2+src5)*5 + (src1+src6));\
++ dst++;\
++ src++;\
++ */
++ uint8_t tmp_block[4*4];
++
++ set_pico_config(&h264_qpel4_v_lowpass_config1);
++
++ {
++ int srcB= LD32(src - 2*srcStride);
++ int srcA= LD32(src - 1*srcStride);
++ int src0= LD32(src + 0 *srcStride);
++ int src1= LD32(src + 1 *srcStride);
++ int src2= LD32(src + 2 *srcStride);
++ int src3= LD32(src + 3 *srcStride);
++ int src4= LD32(src + 4 *srcStride);
++ int src5= LD32(src + 5 *srcStride);
++ int src6= LD32(src + 6 *srcStride);
++
++ /* First compute the leftmost three colums */
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(tmp_block, PICO_GET_W(PICO_OUTPIX0));
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_MVRC_W(PICO_INPIX1, src3);
++ PICO_MVRC_W(PICO_INPIX0, src4);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(tmp_block + 4, PICO_GET_W(PICO_OUTPIX0));
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_MVRC_W(PICO_INPIX1, src4);
++ PICO_MVRC_W(PICO_INPIX0, src5);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(tmp_block + 8, PICO_GET_W(PICO_OUTPIX0));
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(0, 0, 0, 3, 6);
++ PICO_MVRC_W(PICO_INPIX2, src4);
++ PICO_MVRC_W(PICO_INPIX1, src5);
++ PICO_MVRC_W(PICO_INPIX0, src6);
++ PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
++ ST32(tmp_block + 12, PICO_GET_W(PICO_OUTPIX0));
++ /* Now compute the last column */
++
++ union wordbytes {
++ int word;
++ struct {
++ unsigned int t:8;
++ unsigned int u:8;
++ unsigned int l:8;
++ unsigned int b:8;
++ } bytes; } tmp1, tmp2, tmp3;
++
++
++ tmp1.bytes.t = srcB;
++ tmp1.bytes.u = src1;
++ tmp1.bytes.l = src4;
++
++ tmp2.bytes.t = srcA;
++ tmp2.bytes.u = src2;
++ tmp2.bytes.l = src5;
++
++ tmp3.bytes.t = src0;
++ tmp3.bytes.u = src3;
++ tmp3.bytes.l = src6;
++
++ PICO_MVRC_W(PICO_INPIX0, tmp1.word);
++ PICO_MVRC_W(PICO_INPIX1, tmp2.word);
++ PICO_MVRC_W(PICO_INPIX2, tmp3.word);
++ set_pico_config(&h264_qpel4_v_lowpass_config2);
++
++
++ PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
++ PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
++ PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
++ PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
++
++ PICO_MVCR_W(tmp1.word, PICO_OUTPIX0);
++ tmp_block[3 + 3*4] = (char)(tmp1.bytes.b);
++ tmp_block[3 + 2*4] = (char)(tmp1.bytes.l);
++ tmp_block[3 + 1*4] = (char)(tmp1.bytes.u);
++ tmp_block[3] = (char)(tmp1.bytes.t);
++
++ /* Compute the average */
++ srcB= LD32(dst);
++ srcA= LD32(dst + dstStride);
++ src0= LD32(dst + dstStride*2);
++ src1= LD32(dst + dstStride*3);
++
++ src2= LD32(tmp_block);
++ src3= LD32(tmp_block + 4);
++ src4= LD32(tmp_block + 8);
++ src5= LD32(tmp_block + 12);
++
++ ST32(dst, rnd_avg32(srcB, src2));
++ ST32(dst + dstStride, rnd_avg32(srcA, src3));
++ ST32(dst + 2*dstStride, rnd_avg32(src0, src4));
++ ST32(dst + 3*dstStride, rnd_avg32(src1, src5));
++ }
++}
++
++static struct pico_config_t h264_qpel4_hv_lowpass_config = {
++ .input_mode = PICO_HOR_FILTER_MODE,
++ .output_mode = PICO_PACKED_MODE,
++ .coeff_frac_bits = 10,
++ .offset_frac_bits = 10,
++ .coeff0_0 = 1,
++ .coeff0_1 = -5,
++ .coeff0_2 = 20,
++ .coeff0_3 = 512,
++ .coeff1_0 = -5,
++ .coeff1_1 = 25,
++ .coeff1_2 = -100,
++ .coeff1_3 = 0,
++ .coeff2_0 = 20,
++ .coeff2_1 = -100,
++ .coeff2_2 = 400,
++ .coeff2_3 = 0
++};
++
++static void put_h264_qpel4_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++
++ int32_t tmp_block[48];
++ int32_t *tmp = tmp_block;
++ int i;
++
++ set_pico_config(&h264_qpel4_hv_lowpass_config);
++
++ src -= 2;
++ for ( i = 0; i < 2; i++ ){
++ int srcB= LD32(src - 2*srcStride);
++ int srcA= LD32(src - 1*srcStride);
++ int src0= LD32(src + 0 *srcStride);
++ int src1= LD32(src + 1 *srcStride);
++ int src2= LD32(src + 2 *srcStride);
++ int src3= LD32(src + 3 *srcStride);
++ int src4= LD32(src + 4 *srcStride);
++ int src5= LD32(src + 5 *srcStride);
++ int src6= LD32(src + 6 *srcStride);
++
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(0, 0, 0, 4, 8);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_OP(0, 0, 4, 8, 0);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_MVRC_W(PICO_INPIX1, src3);
++ PICO_MVRC_W(PICO_INPIX0, src4);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_MVRC_W(PICO_INPIX0, src2);
++ PICO_OP(0, 0, 4, 8, 0);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_MVRC_W(PICO_INPIX1, src4);
++ PICO_MVRC_W(PICO_INPIX0, src5);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(0, 0, 4, 8, 0);
++ PICO_MVRC_W(PICO_INPIX2, src4);
++ PICO_MVRC_W(PICO_INPIX1, src5);
++ PICO_MVRC_W(PICO_INPIX0, src6);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++ src += 2;
++ }
++
++ src -= 1;
++ tmp -= 48;
++
++
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_VERT_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(10)
++ | PICO_OFFSET_FRAC_BITS(10));
++
++ for ( i = 0; i < 2; i++ ){
++ int srcB= LD32(src - 2*srcStride);
++ int srcA= LD32(src - 1*srcStride);
++ int src0= LD32(src + 0 *srcStride);
++ int src1= LD32(src + 1 *srcStride);
++ int src2= LD32(src + 2 *srcStride);
++ int src3= LD32(src + 3 *srcStride);
++ int src4= LD32(src + 4 *srcStride);
++ int src5= LD32(src + 5 *srcStride);
++ int src6= LD32(src + 6 *srcStride);
++
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 0, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 1, 9, 6, 3);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_MVRC_W(PICO_INPIX1, src3);
++ PICO_MVRC_W(PICO_INPIX0, src4);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 2, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 3, 9, 6, 3);
++
++ ST16(dst + 0*dstStride, (short)(PICO_GET_W(PICO_OUTPIX0) >> 16));
++ ST16(dst + 1*dstStride, (short)PICO_GET_W(PICO_OUTPIX0));
++
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_MVRC_W(PICO_INPIX1, src4);
++ PICO_MVRC_W(PICO_INPIX0, src5);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 0, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 1, 9, 6, 3);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src4);
++ PICO_MVRC_W(PICO_INPIX1, src5);
++ PICO_MVRC_W(PICO_INPIX0, src6);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 2, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 3, 9, 6, 3);
++
++ ST16(dst + 2*dstStride, (short)(PICO_GET_W(PICO_OUTPIX0) >> 16));
++ ST16(dst + 3*dstStride, (short)PICO_GET_W(PICO_OUTPIX0));
++
++ dst += 2;
++ src += 2;
++ }
++}
++
++
++
++
++static void avg_h264_qpel4_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++
++ int32_t tmp_block[48];
++ int32_t *tmp = tmp_block;
++ int i;
++
++ set_pico_config(&h264_qpel4_hv_lowpass_config);
++
++ src -= 2;
++ for ( i = 0; i < 2; i++ ){
++ int srcB= LD32(src - 2*srcStride);
++ int srcA= LD32(src - 1*srcStride);
++ int src0= LD32(src + 0 *srcStride);
++ int src1= LD32(src + 1 *srcStride);
++ int src2= LD32(src + 2 *srcStride);
++ int src3= LD32(src + 3 *srcStride);
++ int src4= LD32(src + 4 *srcStride);
++ int src5= LD32(src + 5 *srcStride);
++ int src6= LD32(src + 6 *srcStride);
++
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(0, 0, 0, 4, 8);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_OP(0, 0, 4, 8, 0);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_MVRC_W(PICO_INPIX1, src3);
++ PICO_MVRC_W(PICO_INPIX0, src4);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_MVRC_W(PICO_INPIX0, src2);
++ PICO_OP(0, 0, 4, 8, 0);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_MVRC_W(PICO_INPIX1, src4);
++ PICO_MVRC_W(PICO_INPIX0, src5);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(0, 0, 4, 8, 0);
++ PICO_MVRC_W(PICO_INPIX2, src4);
++ PICO_MVRC_W(PICO_INPIX1, src5);
++ PICO_MVRC_W(PICO_INPIX0, src6);
++ PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++
++ PICO_OP(0, 0, 1, 5, 9);
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
++ PICO_STCM_W(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ tmp += 3;
++ src += 2;
++ }
++
++ src -= 1;
++ tmp -= 48;
++
++
++ PICO_PUT_W(PICO_CONFIG,
++ PICO_OUTPUT_MODE(PICO_PLANAR_MODE)
++ | PICO_INPUT_MODE(PICO_VERT_FILTER_MODE)
++ | PICO_COEFF_FRAC_BITS(10)
++ | PICO_OFFSET_FRAC_BITS(10));
++
++ for ( i = 0; i < 2; i++ ){
++ int srcB= LD32(src - 2*srcStride);
++ int srcA= LD32(src - 1*srcStride);
++ int src0= LD32(src + 0 *srcStride);
++ int src1= LD32(src + 1 *srcStride);
++ int src2= LD32(src + 2 *srcStride);
++ int src3= LD32(src + 3 *srcStride);
++ int src4= LD32(src + 4 *srcStride);
++ int src5= LD32(src + 5 *srcStride);
++ int src6= LD32(src + 6 *srcStride);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX0, src3);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 0, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, srcB);
++ PICO_MVRC_W(PICO_INPIX1, srcA);
++ PICO_MVRC_W(PICO_INPIX2, src0);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 1, 9, 6, 3);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_MVRC_W(PICO_INPIX1, src3);
++ PICO_MVRC_W(PICO_INPIX0, src4);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 2, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, srcA);
++ PICO_MVRC_W(PICO_INPIX1, src0);
++ PICO_MVRC_W(PICO_INPIX2, src1);
++ PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 3, 9, 6, 3);
++
++ ST16(dst + 0*dstStride, rnd_avg32(LD16(dst + 0*dstStride), PICO_GET_W(PICO_OUTPIX0) >> 16));
++ ST16(dst + 1*dstStride, rnd_avg32(LD16(dst + 1*dstStride), PICO_GET_W(PICO_OUTPIX0)));
++
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_MVRC_W(PICO_INPIX1, src4);
++ PICO_MVRC_W(PICO_INPIX0, src5);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 0, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, src0);
++ PICO_MVRC_W(PICO_INPIX1, src1);
++ PICO_MVRC_W(PICO_INPIX2, src2);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 1, 9, 6, 3);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
++ PICO_MVRC_W(PICO_INPIX2, src4);
++ PICO_MVRC_W(PICO_INPIX1, src5);
++ PICO_MVRC_W(PICO_INPIX0, src6);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 2, 6, 3, 0);
++
++ PICO_LDCM_W_INC(tmp,
++ PICO_REGVECT_VMU0_OUT,
++ PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT);
++ PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
++ PICO_MVRC_W(PICO_INPIX0, src1);
++ PICO_MVRC_W(PICO_INPIX1, src2);
++ PICO_MVRC_W(PICO_INPIX2, src3);
++ PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 3, 9, 6, 3);
++
++ ST16(dst + 2*dstStride, rnd_avg32(LD16(dst + 2*dstStride), PICO_GET_W(PICO_OUTPIX0) >> 16));
++ ST16(dst + 3*dstStride, rnd_avg32(LD16(dst + 3*dstStride), PICO_GET_W(PICO_OUTPIX0)));
++
++ dst += 2;
++ src += 2;
++ }
++}
++
++
++static void put_h264_qpel8_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ put_h264_qpel4_v_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++ src += 4*srcStride;
++ dst += 4*dstStride;
++ put_h264_qpel4_v_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++}
++
++static void avg_h264_qpel8_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ avg_h264_qpel4_v_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++ src += 4*srcStride;
++ dst += 4*dstStride;
++ avg_h264_qpel4_v_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++}
++
++static void put_h264_qpel8_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ put_h264_qpel4_h_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++ src += 4*srcStride;
++ dst += 4*dstStride;
++ put_h264_qpel4_h_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++}
++
++static void avg_h264_qpel8_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ avg_h264_qpel4_h_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++ src += 4*srcStride;
++ dst += 4*dstStride;
++ avg_h264_qpel4_h_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++}
++
++static void put_h264_qpel8_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ put_h264_qpel4_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++ src += 4*srcStride;
++ dst += 4*dstStride;
++ put_h264_qpel4_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++}
++
++static void avg_h264_qpel8_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ avg_h264_qpel4_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++ src += 4*srcStride;
++ dst += 4*dstStride;
++ avg_h264_qpel4_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
++}
++
++static void put_h264_qpel16_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ put_h264_qpel8_v_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++ src += 8*srcStride;
++ dst += 8*dstStride;
++ put_h264_qpel8_v_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++}
++
++static void avg_h264_qpel16_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ avg_h264_qpel8_v_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++ src += 8*srcStride;
++ dst += 8*dstStride;
++ avg_h264_qpel8_v_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++}
++
++static void put_h264_qpel16_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ put_h264_qpel8_h_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++ src += 8*srcStride;
++ dst += 8*dstStride;
++ put_h264_qpel8_h_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++}
++
++static void avg_h264_qpel16_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ avg_h264_qpel8_h_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++ src += 8*srcStride;
++ dst += 8*dstStride;
++ avg_h264_qpel8_h_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++}
++
++static void put_h264_qpel16_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ put_h264_qpel8_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++ src += 8*srcStride;
++ dst += 8*dstStride;
++ put_h264_qpel8_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ put_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++}
++
++static void avg_h264_qpel16_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
++ avg_h264_qpel8_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++ src += 8*srcStride;
++ dst += 8*dstStride;
++ avg_h264_qpel8_hv_lowpass_pico(dst , src , dstStride, srcStride);
++ avg_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
++}
++
++
++#define H264_MC(OPNAME, SIZE) \
++static void OPNAME ## h264_qpel ## SIZE ## _mc00_pico (uint8_t *dst, uint8_t *src, int stride){\
++ OPNAME ## pixels ## SIZE ## _c(dst, src, stride, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc10_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t half[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(half, src, SIZE, stride);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, src, half, stride, stride, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc20_pico(uint8_t *dst, uint8_t *src, int stride){\
++ OPNAME ## h264_qpel ## SIZE ## _h_lowpass_pico(dst, src, stride, stride);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc30_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t half[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(half, src, SIZE, stride);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, src+1, half, stride, stride, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc01_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t half[SIZE*SIZE];\
++ copy_block ## SIZE (full, src - stride*2, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(half, full_mid, SIZE, SIZE);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, full_mid, half, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc02_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ copy_block ## SIZE (full, src - stride*2, SIZE, stride, SIZE + 5);\
++ OPNAME ## h264_qpel ## SIZE ## _v_lowpass_pico(dst, full_mid, stride, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc03_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t half[SIZE*SIZE];\
++ copy_block ## SIZE (full, src - stride*2, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(half, full_mid, SIZE, SIZE);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, full_mid+SIZE, half, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc11_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t halfH[SIZE*SIZE];\
++ uint8_t halfV[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src, SIZE, stride);\
++ copy_block ## SIZE (full, src - stride*2, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc31_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t halfH[SIZE*SIZE];\
++ uint8_t halfV[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src, SIZE, stride);\
++ copy_block ## SIZE (full, src - stride*2 + 1, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc13_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t halfH[SIZE*SIZE];\
++ uint8_t halfV[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src + stride, SIZE, stride);\
++ copy_block ## SIZE (full, src - stride*2, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc33_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t halfH[SIZE*SIZE];\
++ uint8_t halfV[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src + stride, SIZE, stride);\
++ copy_block ## SIZE (full, src - stride*2 + 1, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc22_pico(uint8_t *dst, uint8_t *src, int stride){\
++ OPNAME ## h264_qpel ## SIZE ## _hv_lowpass_pico(dst, src, stride, stride);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc21_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t halfH[SIZE*SIZE];\
++ uint8_t halfHV[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src, SIZE, stride);\
++ put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfHV, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc23_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t halfH[SIZE*SIZE];\
++ uint8_t halfHV[SIZE*SIZE];\
++ put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src + stride, SIZE, stride);\
++ put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfHV, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc12_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t halfV[SIZE*SIZE];\
++ uint8_t halfHV[SIZE*SIZE];\
++ copy_block ## SIZE (full, src - stride*2, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
++ put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfV, halfHV, stride, SIZE, SIZE, SIZE);\
++}\
++\
++static void OPNAME ## h264_qpel ## SIZE ## _mc32_pico(uint8_t *dst, uint8_t *src, int stride){\
++ uint8_t full[SIZE*(SIZE+5)];\
++ uint8_t * const full_mid= full + SIZE*2;\
++ uint8_t halfV[SIZE*SIZE];\
++ uint8_t halfHV[SIZE*SIZE];\
++ copy_block ## SIZE (full, src - stride*2 + 1, SIZE, stride, SIZE + 5);\
++ put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
++ put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
++ OPNAME ## pixels ## SIZE ## _l2(dst, halfV, halfHV, stride, SIZE, SIZE, SIZE);\
++}\
++
++H264_MC(put_, 4)
++H264_MC(put_, 8)
++H264_MC(put_, 16)
++H264_MC(avg_, 4)
++H264_MC(avg_, 8)
++H264_MC(avg_, 16)
++
++
++
++#define dspfunc16(PFX) \
++ void PFX ## _pixels16_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
++ PFX ## _pixels8_avr32(dst, pixels, line_size, h);\
++ PFX ## _pixels8_avr32(dst + 8, pixels + 8, line_size, h);\
++ }\
++ void PFX ## _pixels16_h_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
++ PFX ## _pixels8_h_avr32(dst, pixels, line_size, h);\
++ PFX ## _pixels8_h_avr32(dst + 8, pixels + 8, line_size, h);\
++ }\
++ void PFX ## _pixels16_v_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
++ PFX ## _pixels8_v_avr32(dst, pixels, line_size, h);\
++ PFX ## _pixels8_v_avr32(dst + 8, pixels + 8, line_size, h);\
++ }\
++ void PFX ## _pixels16_hv_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
++ PFX ## _pixels8_hv_avr32(dst, pixels, line_size, h);\
++ PFX ## _pixels8_hv_avr32(dst + 8, pixels + 8, line_size, h);\
++ }\
++
++
++dspfunc16(put)
++dspfunc16(put_no_rnd)
++dspfunc16(avg)
++dspfunc16(avg_no_rnd)
++#undef dspfunc16
++
++static int pix_sum_avr32(uint8_t * pix, int line_size)
++{
++ int s, i;
++
++ s = 0;
++ for (i = 0; i < 16; i++) {
++ int tmp1,tmp2,tmp3,tmp4,tmp5;
++ __asm__ volatile ( "ld.w\t%0, %6[0]\n\t"
++ "ld.w\t%1, %6[4]\n\t"
++ "ld.w\t%2, %6[8]\n\t"
++ "ld.w\t%3, %6[12]\n\t"
++ "punpckub.h\t%4, %0:t\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ "punpckub.h\t%4, %0:b\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ "punpckub.h\t%4, %1:t\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ "punpckub.h\t%4, %1:b\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ "punpckub.h\t%4, %2:t\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ "punpckub.h\t%4, %2:b\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ "punpckub.h\t%4, %3:t\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ "punpckub.h\t%4, %3:b\n\t"
++ "padd.h\t%5, %5, %4\n\t"
++ : "=&r"(tmp1),"=&r"(tmp2),"=&r"(tmp3),"=&r"(tmp4),"=&r"(tmp5),"=&r"(s)
++ : "r"(pix));
++ pix += line_size;
++ }
++ __asm__ volatile ( "addhh.w\t%0, %0:t, %0:b" : "=&r" (s) );
++
++ return s;
++}
++
++
++//#define op_scale1(x) block[x] = clip_uint8( (block[x]*weight + offset) >> log2_denom )
++//#define op_scale2(x) dst[x] = clip_uint8( (src[x]*weights + dst[x]*weightd + offset) >> (log2_denom+1))
++//#define H264_WEIGHT(W,H) \
++//static void weight_h264_pixels ## W ## x ## H ## _c(uint8_t *block, int stride, int log2_denom, int weight, int offset){ \
++// int attribute_unused x, y; \
++// offset <<= log2_denom; \
++// if(log2_denom) offset += 1<<(log2_denom-1); \
++// for(y=0; y<H; y++, block += stride){ \
++// uint32_t tmp0, tmp1;
++// if(W==2) { \
++// asm volatile ( "ld.ub\t%[tmp0], %[block][0]\n" \
++// "ld.ub\t%[tmp1], %[block][1]\n" \
++// "mulhh.w\t%[tmp0], %[tmp0]:b, %[weight]:b\n" \
++// "mulhh.w\t%[tmp1], %[tmp1]:b, %[weight]:b\n" \
++// "asr\t%[tmp0], %[log2_denom]\n" \
++// "asr\t%[tmp1], %[log2_denom]\n" \
++// "satu\t%[tmp0] >> 0, 8\n" \
++// "satu\t%[tmp1] >> 0, 8\n" \
++// "st.b\t%[block][0], %[tmp0]\n" \
++// "st.b\t%[block][1], %[tmp1]\n" \
++// : [tmp0] "=&r"(tmp0), [tmp1] "=&r"(tmp1) \
++// : [block] "r"(block), [weight]"r"(weight), [log2_denom]"r"(log2denom) ); \
++// } else if ( W==4 ) { \
++// asm volatile ( "ld.w\t%[tmp0], %[block][0]\n" \
++// "punpckub.h\t%[tmp1], %[tmp0]:t\n" \
++// "punpckub.h\t%[tmp0], %[tmp0]:b\n" \
++// "mulhh.w\t%[tmp2], %[tmp1]:t, %[weight]:b\n" \
++// "mulhh.w\t%[tmp1], %[tmp1]:b, %[weight]:b\n" \
++// "asr\t%[tmp0], %[log2_denom]\n" \
++// "asr\t%[tmp1], %[log2_denom]\n" \
++// "satu\t%[tmp0] >> 0, 8\n" \
++// "satu\t%[tmp1] >> 0, 8\n" \
++// "st.b\t%[block][0], %[tmp0]\n" \
++// "st.b\t%[block][1], %[tmp1]\n" \
++// : [tmp0] "=&r"(tmp0), [tmp1] "=&r"(tmp1) \
++// : [block] "r"(block), [weight]"r"(weight), [log2_denom]"r"(log2denom) ); \
++//
++//
++//
++// if(W==4) continue; \
++// op_scale1(4); \
++// op_scale1(5); \
++// op_scale1(6); \
++// op_scale1(7); \
++// if(W==8) continue; \
++// op_scale1(8); \
++// op_scale1(9); \
++// op_scale1(10); \
++// op_scale1(11); \
++// op_scale1(12); \
++// op_scale1(13); \
++// op_scale1(14); \
++// op_scale1(15); \
++// } \
++//} \
++//static void biweight_h264_pixels ## W ## x ## H ## _c(uint8_t *dst, uint8_t *src, int stride, int log2_denom, int weightd, int weights, int offsetd, int offsets){ \
++// int attribute_unused x, y; \
++// int offset = (offsets + offsetd + 1) >> 1; \
++// offset = ((offset << 1) + 1) << log2_denom; \
++// for(y=0; y<H; y++, dst += stride, src += stride){ \
++// op_scale2(0); \
++// op_scale2(1); \
++// if(W==2) continue; \
++// op_scale2(2); \
++// op_scale2(3); \
++// if(W==4) continue; \
++// op_scale2(4); \
++// op_scale2(5); \
++// op_scale2(6); \
++// op_scale2(7); \
++// if(W==8) continue; \
++// op_scale2(8); \
++// op_scale2(9); \
++// op_scale2(10); \
++// op_scale2(11); \
++// op_scale2(12); \
++// op_scale2(13); \
++// op_scale2(14); \
++// op_scale2(15); \
++// } \
++//}
++
++
++
++/* Returns zero in each byte where the absolute difference between <a> and <b>
++ is not less than <compare> */
++#define PABS_DIFF_LESS_THAN( a, b, compare) \
++ ({ uint32_t __tmp__, __tmp2__, __mask__; \
++ asm ( \
++ /* Check ABS( a - b ) < compare */ \
++ "psubs.ub\t%[tmp], %[opa], %[opb]\n" \
++ "psubs.ub\t%[tmp2], %[opb], %[opa]\n" \
++ "or\t%[tmp], %[tmp2]\n" /* ABS ( a - b ) */ \
++ /* This produces 0 for all bytes where the comparison is not true */ \
++ "psubs.ub\t%[mask], %[cmp], %[tmp]\n" \
++ : [tmp] "=&r"(__tmp__), [tmp2] "=&r"(__tmp2__), [mask] "=&r"(__mask__) \
++ : [opa] "r"(a), [opb] "r"(b), [cmp] "r"(compare) ); \
++ __mask__; })
++
++/*
++ Set all bytes containing zero in <value> to 255 and the rest to zero.
++
++ Add with saturation 254 to all bytes making all bytes different from
++ zero become 255. Then add one without saturation to make all bytes
++ originally containing zero 255 and the rest 0. */
++#define SET_ALL_BITS_IN_ZERO_BYTES(value) \
++ ({ uint32_t __tmp__; \
++ asm ( \
++ "padds.ub\t%[tmp], %[val], %[max_minus_one]\n" \
++ "padd.b\t%[tmp], %[tmp], %[all_ones]\n" \
++ : [tmp] "=r"(__tmp__) \
++ : [val] "r"(value), [max_minus_one] "r"(0xFEFEFEFE), [all_ones] "r"(0x01010101) ); \
++ __tmp__; })
++
++#define PACKW_SH(upper, lower) \
++ ({ uint32_t __tmp__; \
++ asm ( \
++ "packw.sh\t%[tmp], %[u], %[l]\n" \
++ : [tmp] "=r"(__tmp__) \
++ : [u] "r"(upper), [l] "r"(lower) ); \
++ __tmp__; })
++
++#define PACKSH_UB(upper, lower) \
++ ({ uint32_t __tmp__; \
++ asm ( \
++ "packsh.sb\t%[tmp], %[u], %[l]\n" \
++ : [tmp] "=r"(__tmp__) \
++ : [u] "r"(upper), [l] "r"(lower) ); \
++ __tmp__; })
++
++static void h264_v_loop_filter_luma_avr32(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
++{
++ int i;
++
++ if ( alpha == 0 )
++ return;
++
++ alpha = PACKW_SH(alpha, alpha);
++ alpha = PACKSH_UB(alpha, alpha);
++ beta = PACKW_SH(beta, beta);
++ beta = PACKSH_UB(beta, beta);
++
++ for( i = 0; i < 4; i++ ) {
++ uint32_t p0, p1, p2, q0, q1, q2;
++ uint32_t mask, mask2;
++ uint32_t tmp, tmp2, tmp3, tmp4;
++
++ if( tc0[i] < 0 ) {
++ pix += 4;
++ continue;
++ }
++
++/* for( d = 0; d < 4; d++ ) {
++ const int p0 = pix[-1*stride];
++ const int p1 = pix[-2*stride];
++ const int p2 = pix[-3*stride];
++ const int q0 = pix[0];
++ const int q1 = pix[1*stride];
++ const int q2 = pix[2*stride];
++
++ if( ABS( p0 - q0 ) < alpha &&
++ ABS( p1 - p0 ) < beta &&
++ ABS( q1 - q0 ) < beta ) { */
++
++ p0 = LD32(pix - stride);
++ p1 = LD32(pix - 2*stride);
++ q0 = LD32(pix);
++ q1 = LD32(pix + stride);
++
++ /* Check which of the columns should be filtered, if any. */
++ mask = PABS_DIFF_LESS_THAN(p0, q0, alpha);
++ mask |= PABS_DIFF_LESS_THAN(p1, p0, beta);
++ mask |= PABS_DIFF_LESS_THAN(q1, q0, beta);
++
++ if ( !mask )
++ continue;
++
++ mask = SET_ALL_BITS_IN_ZERO_BYTES(mask);
++
++
++ int tc = PACKW_SH(tc0[i], tc0[i]);
++ int tc0_p = tc;
++ int tc0_m = PACKW_SH(-tc0[i], -tc0[i]);
++
++ /*
++ int i_delta;
++ if( ABS( p2 - p0 ) < beta ) {
++ pix[-2*stride] = p1 + clip( (( p2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - p1, -tc0[i], tc0[i] );
++ tc++;
++ }*/
++
++ p2 = LD32(pix - 3*stride);
++ mask2 = PABS_DIFF_LESS_THAN(p2, p0, beta) & ~mask;
++
++ if ( mask2 ){
++ mask2 = SET_ALL_BITS_IN_ZERO_BYTES(mask2);
++ asm ("pavg.ub\t%[tmp], %[p0], %[q0]\n"
++ "paddh.ub\t%[tmp], %[tmp], %[p2]\n"
++ "punpckub.h\t%[tmp2], %[tmp]:t\n"
++ "punpckub.h\t%[tmp], %[tmp]:b\n"
++ "punpckub.h\t%[tmp3], %[p1]:t\n"
++ "punpckub.h\t%[tmp4], %[p1]:b\n"
++ "psub.h\t%[tmp2], %[tmp2], %[tmp3]\n"
++ "psub.h\t%[tmp], %[tmp], %[tmp4]\n"
++ "pmin.sh\t%[tmp2], %[tmp2], %[tc0_p]\n"
++ "pmin.sh\t%[tmp], %[tmp], %[tc0_p]\n"
++ "pmax.sh\t%[tmp2], %[tmp2], %[tc0_m]\n"
++ "pmax.sh\t%[tmp], %[tmp], %[tc0_m]\n"
++ "padd.h\t%[tmp2], %[tmp2], %[tmp3]\n"
++ "padd.h\t%[tmp], %[tmp], %[tmp4]\n"
++ "packsh.ub\t%[tmp], %[tmp2], %[tmp]\n"
++ "andn\t%[tmp], %[mask2]\n"
++ "and\t%[tmp2], %[q1], %[mask2]\n"
++ "or\t%[tmp], %[tmp2]\n"
++ : [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2), [tmp3]"=&r"(tmp3),
++ [tmp4]"=&r"(tmp4)
++ : [q0]"r"(q0), [p2]"r"(p2), [p1]"r"(p1), [p0]"r"(p0), [q1]"r"(q1), [tc0_p]"r"(tc0_p),
++ [tc0_m]"r"(tc0_m), [mask2]"r"(mask2));
++ ST32(pix - 2*stride, tmp);
++ tc += 0x00010001;
++ }
++
++
++ q2 = LD32(pix + 2*stride);
++
++ /*
++ if( ABS( q2 - q0 ) < beta ) {
++ pix[ stride] = q1 + clip( (( q2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - q1, -tc0[i], tc0[i] );
++ tc++;
++ }
++ */
++ mask2 = PABS_DIFF_LESS_THAN(q2, q0, beta) & ~mask;
++
++ if ( mask2 ){
++ mask2 = SET_ALL_BITS_IN_ZERO_BYTES(mask2);
++ asm ("pavg.ub\t%[tmp], %[p0], %[q0]\n"
++ "paddh.ub\t%[tmp], %[tmp], %[q2]\n"
++ "punpckub.h\t%[tmp2], %[tmp]:t\n"
++ "punpckub.h\t%[tmp], %[tmp]:b\n"
++ "punpckub.h\t%[tmp3], %[q1]:t\n"
++ "punpckub.h\t%[tmp4], %[q1]:b\n"
++ "psub.h\t%[tmp2], %[tmp2], %[tmp3]\n"
++ "psub.h\t%[tmp], %[tmp], %[tmp4]\n"
++ "pmin.sh\t%[tmp2], %[tmp2], %[tc0_p]\n"
++ "pmin.sh\t%[tmp], %[tmp], %[tc0_p]\n"
++ "pmax.sh\t%[tmp2], %[tmp2], %[tc0_m]\n"
++ "pmax.sh\t%[tmp], %[tmp], %[tc0_m]\n"
++ "padd.h\t%[tmp2], %[tmp2], %[tmp3]\n"
++ "padd.h\t%[tmp], %[tmp], %[tmp4]\n"
++ "packsh.ub\t%[tmp], %[tmp2], %[tmp]\n"
++ "andn\t%[tmp], %[mask2]\n"
++ "and\t%[tmp2], %[q1], %[mask2]\n"
++ "or\t%[tmp], %[tmp2]\n"
++ : [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2), [tmp3]"=&r"(tmp3),
++ [tmp4]"=&r"(tmp4)
++ : [q0]"r"(q0), [q2]"r"(q2), [q1]"r"(q1), [p0]"r"(p0), [tc0_p]"r"(tc0_p),
++ [tc0_m]"r"(tc0_m), [mask2]"r"(mask2));
++ ST32(pix + stride, tmp);
++ tc += 0x00010001;
++ }
++
++ uint32_t old_p0 = p0;
++ uint32_t old_q0 = q0;
++
++ /* i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc );
++ pix[-stride] = clip_uint8( p0 + i_delta );
++ pix[0] = clip_uint8( q0 - i_delta ); */
++
++ asm (
++ /* Check if the two upper pixels should be filtered */
++ "lsr\t%[tmp], %[inv_mask], 16\n"
++ "breq\t0f\n"
++
++ "punpckub.h\t%[tmp], %[p1]:t\n"
++ "punpckub.h\t%[tmp2], %[q1]:t\n"
++
++ /* p1 - q1 */
++ "psub.h\t%[tmp], %[tmp], %[tmp2]\n"
++
++ "punpckub.h\t%[tmp3], %[q0]:t\n"
++ "punpckub.h\t%[tmp4], %[p0]:t\n"
++
++ /* q0 - p0 */
++ "psub.h\t%[tmp2], %[tmp3], %[tmp4]\n"
++
++ /* (q0 - p0) << 2 */
++ "plsl.h\t%[tmp2], %[tmp2], 2\n"
++
++ /* ((q0 - p0) << 2) + (p1 - q1) */
++ "padd.h\t%[tmp2], %[tmp2], %[tmp]\n"
++
++ "mov\t%[tmp], 0x00040004\n"
++ /* ((q0 - p0) << 2) + (p1 - q1) + 4*/
++ "padd.h\t%[tmp2], %[tmp2], %[tmp]\n"
++
++ /* (((q0 - p0) << 2) + (p1 - q1) + 4) >> 3*/
++ "pasr.h\t%[tmp2], %[tmp2], 3\n"
++
++ "mov\t%[tmp], 0\n"
++ "psub.h\t%[tmp], %[tmp], %[tc]\n"
++
++ /* i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc ); */
++ "pmin.sh\t%[tmp2], %[tmp2], %[tc]\n"
++ "pmax.sh\t%[tmp2], %[tmp2], %[tmp]\n"
++
++
++ /* pix[-stride] = clip_uint8( p0 + i_delta ); */
++ "padd.h\t%[tmp4], %[tmp4], %[tmp2]\n"
++
++
++ /* pix[0] = clip_uint8( q0 - i_delta ); */
++ "psub.h\t%[tmp3], %[tmp3], %[tmp2]\n"
++
++ /* Check if the two lower pixels should be filtered */
++ "lsl\t%[tmp2], %[inv_mask], 16\n"
++ "breq\t1f\n"
++
++ "0:\n"
++ "punpckub.h\t%[p1], %[p1]:b\n"
++ "punpckub.h\t%[q1], %[q1]:b\n"
++
++ /* p1 - q1 */
++ "psub.h\t%[p1], %[p1], %[q1]\n"
++
++ "punpckub.h\t%[q0], %[q0]:b\n"
++ "punpckub.h\t%[p0], %[p0]:b\n"
++
++ /* q0 - p0 */
++ "psub.h\t%[tmp2], %[q0], %[p0]\n"
++
++ /* (q0 - p0) << 2 */
++ "plsl.h\t%[tmp2], %[tmp2], 2\n"
++
++ /* ((q0 - p0) << 2) + (p1 - q1) */
++ "padd.h\t%[tmp2], %[tmp2], %[p1]\n"
++
++ "mov\t%[q1], 0x00040004\n"
++ /* ((q0 - p0) << 2) + (p1 - q1) + 4*/
++ "padd.h\t%[tmp2], %[tmp2], %[q1]\n"
++
++ /* (((q0 - p0) << 2) + (p1 - q1) + 4) >> 3*/
++ "pasr.h\t%[tmp2], %[tmp2], 3\n"
++
++ /* i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc ); */
++ "pmin.sh\t%[tmp2], %[tmp2], %[tc]\n"
++ "pmax.sh\t%[tmp2], %[tmp2], %[tmp]\n"
++
++ /* pix[-stride] = clip_uint8( p0 + i_delta ); */
++ "padd.h\t%[p0], %[p0], %[tmp2]\n"
++
++ /* pix[0] = clip_uint8( q0 - i_delta ); */
++ "psub.h\t%[q0], %[q0], %[tmp2]\n"
++
++ "1:\n"
++ "packsh.ub\t%[p0], %[tmp4], %[p0]\n"
++ "packsh.ub\t%[q0], %[tmp3], %[tmp4]\n"
++
++ : [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2), [tmp3]"=&r"(tmp3),
++ [tmp4]"=&r"(tmp4), [q0]"=&r"(q0), [q1]"=&r"(q1), [p0]"=&r"(p0), [p1]"=&r"(p1)
++ : [tc]"r"(tc), [inv_mask]"r"(~mask));
++
++ ST32(pix - stride, (mask & old_p0) | (p0 & ~mask));
++ ST32(pix, (mask & old_q0) | (q0 & ~mask));
++
++ }
++ pix += 1;
++}
++
++
++
++
++#ifdef CHECK_DSP_FUNCS_AGAINST_C
++
++void dump_block8(uint8_t *block, int line_size, int h){
++ int i, j;
++
++ for ( i = 0; i < h ; i++ ){
++ av_log(NULL, AV_LOG_ERROR, "\t");
++ for ( j = 0; j < 8 ; j++ ){
++ av_log(NULL, AV_LOG_ERROR, "%d ", block[j + i*line_size]);
++ }
++ av_log(NULL, AV_LOG_ERROR, "\n");
++ }
++}
++
++void dump_block4(uint8_t *block, int line_size, int h){
++ int i, j;
++
++ for ( i = 0; i < h ; i++ ){
++ av_log(NULL, AV_LOG_ERROR, "\t");
++ for ( j = 0; j < 4 ; j++ ){
++ av_log(NULL, AV_LOG_ERROR, "%d ", block[j + i*line_size]);
++ }
++ av_log(NULL, AV_LOG_ERROR, "\n");
++ }
++}
++
++void dump_block(uint8_t *block, int line_size, int h, int w){
++ int i, j;
++
++ for ( i = 0; i < h ; i++ ){
++ av_log(NULL, AV_LOG_ERROR, "\t");
++ for ( j = 0; j < w ; j++ ){
++ av_log(NULL, AV_LOG_ERROR, "%d ", block[j + i*line_size]);
++ }
++ av_log(NULL, AV_LOG_ERROR, "\n");
++ }
++}
++
++void check_block8(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct,
++ int h, char *name, int max_dev){
++ int i,j;
++ for ( i = 0; i < 8 ; i++ ){
++ for ( j = 0; j < h ; j++ ){
++ int diff = test[i + line_size_test*j] - correct[i + line_size_correct*j];
++ diff = diff < 0 ? -diff : diff;
++ if ( diff > max_dev ){
++ av_log(NULL, AV_LOG_ERROR, "Error pixel x=%i, y=%i differs. Is 0x%x should be 0x%x\n",
++ i, j, test[i + line_size_test*j], correct[i + j*line_size_correct]);
++ av_log(NULL, AV_LOG_ERROR, "Error resulting block from %s is:\n", name);
++ dump_block8(test, line_size_test, h);
++ av_log(NULL, AV_LOG_ERROR, "But should be equal to:\n");
++ dump_block8(correct, line_size_correct, h);
++ exit(1);
++ }
++ }
++ }
++}
++
++void check_block4(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct,
++ int h, char *name, int max_dev){
++ int i,j;
++ for ( i = 0; i < 4 ; i++ ){
++ for ( j = 0; j < h ; j++ ){
++ int diff = test[i + line_size_test*j] - correct[i + line_size_correct*j];
++ diff = diff < 0 ? -diff : diff;
++ if ( diff > max_dev ){
++ av_log(NULL, AV_LOG_ERROR, "Error pixel x=%i, y=%i differs. Is 0x%x should be 0x%x\n",
++ i, j, test[i + line_size_test*j], correct[i + j*line_size_correct]);
++ av_log(NULL, AV_LOG_ERROR, "Error resulting block from %s is:\n", name);
++ dump_block8(test, line_size_test, h);
++ av_log(NULL, AV_LOG_ERROR, "But should be equal to:\n");
++ dump_block4(correct, line_size_correct, h);
++ exit(1);
++ }
++ }
++ }
++}
++
++void check_block(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct,
++ int h, int width, char *name, int max_dev){
++ int i,j;
++ for ( i = 0; i < width ; i++ ){
++ for ( j = 0; j < h ; j++ ){
++ int diff = test[i + line_size_test*j] - correct[i + line_size_correct*j];
++ diff = diff < 0 ? -diff : diff;
++ if ( diff > max_dev ){
++ av_log(NULL, AV_LOG_ERROR, "Error pixel x=%i, y=%i differs. Is 0x%x should be 0x%x\n",
++ i, j, test[i + line_size_test*j], correct[i + j*line_size_correct]);
++ av_log(NULL, AV_LOG_ERROR, "Error resulting block from %s is:\n", name);
++ dump_block(test, line_size_test, h, width);
++ av_log(NULL, AV_LOG_ERROR, "But should be equal to:\n");
++ dump_block(correct, line_size_correct, h, width);
++ exit(1);
++ }
++ }
++ }
++}
++
++void dump_dct_block(DCTELEM *block){
++ int i, j;
++
++ for ( i = 0; i < 8 ; i++ ){
++ av_log(NULL, AV_LOG_ERROR, "\t");
++ for ( j = 0; j < 8 ; j++ ){
++ av_log(NULL, AV_LOG_ERROR, "0x%x ", block[j + i*8]);
++ }
++ av_log(NULL, AV_LOG_ERROR, "\n");
++ }
++}
++
++void test_idct_avr32(DCTELEM *block){
++ DCTELEM testBlock[64];
++ int i, j;
++
++ /* Copy transposed block to testBlock */
++ for ( i = 0; i < 8 ; i++ ){
++ for ( j = 0; j < 8 ; j++ ){
++ testBlock[i + 8*j] = block[j + i*8];
++ }
++ }
++
++ idct_avr32(block);
++ simple_idct(&testBlock);
++
++ for ( i = 0; i < 64 ; i++ ){
++ if ( block[i] != testBlock[i] ){
++ av_log(NULL, AV_LOG_ERROR, "Error resulting block from idct is:\n");
++ dump_dct_block(block);
++ av_log(NULL, AV_LOG_ERROR, "But should be equal to the transposed of:\n");
++ dump_dct_block(testBlock);
++ exit(1);
++ }
++ }
++}
++
++void test_idct_put_avr32(uint8_t *dest, int line_size, DCTELEM *block){
++ uint8_t testBlock[64];
++ DCTELEM blockCopy[64];
++ int i, j;
++
++ /* Copy transposed block to blockCopy */
++ for ( i = 0; i < 8 ; i++ ){
++ for ( j = 0; j < 8 ; j++ ){
++ blockCopy[i + 8*j] = block[j + i*8];
++ }
++ }
++
++ idct_put_avr32(dest, line_size, block);
++ simple_idct_put(&testBlock, 8, blockCopy);
++
++ check_block8(dest, testBlock, line_size, 8, 8, "idct_put", 1);
++}
++
++
++void test_idct_add_avr32(uint8_t *dest, int line_size, DCTELEM *block){
++ uint8_t testBlock[64];
++ DCTELEM blockCopy[64];
++ int i, j;
++
++ /* Copy dest to testBlock */
++ for ( i = 0; i < 8 ; i++ ){
++ for ( j = 0; j < 8 ; j++ ){
++ testBlock[i + 8*j] = dest[i + j*line_size];
++ }
++ }
++
++ /* Copy transposed block to blockCopy */
++ for ( i = 0; i < 8 ; i++ ){
++ for ( j = 0; j < 8 ; j++ ){
++ blockCopy[i + 8*j] = block[j + i*8];
++ }
++ }
++
++ idct_add_avr32(dest, line_size, block);
++ simple_idct_add(&testBlock, 8, blockCopy);
++
++ check_block8(dest, testBlock, line_size, 8, 8, "idct_add", 1);
++}
++
++void test_h264_idct_add_avr32(uint8_t *dest, DCTELEM *block, int stride){
++ uint8_t testBlock[16];
++ DCTELEM blockCopy[16];
++ int i, j;
++
++ /* Copy dest to testBlock */
++ for ( i = 0; i < 4 ; i++ ){
++ for ( j = 0; j < 4 ; j++ ){
++ testBlock[i + 4*j] = dest[i + j*stride];
++ }
++ }
++
++ /* Copy transposed block to blockCopy */
++ for ( i = 0; i < 16 ; i++ ){
++ blockCopy[i] = block[i];
++ }
++
++ ff_h264_idct_add_c(dest, block, stride);
++
++ h264_idct_add_avr32(testBlock, blockCopy, 4);
++
++ check_block(dest, testBlock, stride, 4, 4, 4, "h264_idct_add", 0);
++}
++
++void test_h264_idct8_add_avr32(uint8_t *dest, DCTELEM *block, int stride){
++ uint8_t testBlock[8*8];
++ DCTELEM blockCopy[8*8];
++ int i, j;
++
++ /* Copy dest to testBlock */
++ for ( i = 0; i < 8 ; i++ ){
++ for ( j = 0; j < 8 ; j++ ){
++ testBlock[i + 8*j] = dest[i + j*stride];
++ }
++ }
++
++ /* Copy source block to blockCopy */
++ for ( i = 0; i < 8*8 ; i++ ){
++ blockCopy[i] = block[i];
++ }
++
++ ff_h264_idct8_add_c(dest, block, stride);
++ h264_idct8_add_avr32(testBlock, blockCopy, 8);
++
++ check_block(dest, testBlock, stride, 8, 8, 8, "h264_idct8_add", 0);
++}
++
++void test_put_pixels_funcs8(op_pixels_func test, op_pixels_func correct, uint8_t *block,
++ const uint8_t *pixels, int line_size, int h, char *name, int in_h_size, int in_v_size){
++ uint8_t *testBlock, *testBlock2;
++ int i, j;
++ int input_v_size = h + in_v_size;
++ int input_h_size = 8 + in_h_size;
++
++ testBlock = alloca(input_h_size*input_v_size);
++ testBlock2 = alloca(input_h_size*input_v_size);
++
++ for ( i = 0; i < input_h_size ; i++ ){
++ for ( j = 0; j < input_v_size ; j++ ){
++ testBlock[i + input_h_size*j] = pixels[i + j*line_size];
++ }
++ }
++
++ test(block, pixels, line_size, h);
++ correct(testBlock2, testBlock, input_h_size, h);
++
++ check_block8(block, testBlock2, line_size, input_h_size, h, name, 0);
++
++}
++
++void test_h264_chroma_mc_funcs(h264_chroma_mc_func test, h264_chroma_mc_func correct, uint8_t *dst,
++ uint8_t *src, int stride, int h, int w, int x, int y, char *name){
++ uint8_t *testBlock, *testBlock2;
++ int i, j;
++ int input_v_size = h + 1;
++ int input_h_size = ((w + 1) + 3) & ~3;
++
++ testBlock = alloca(input_h_size*input_v_size);
++ testBlock2 = alloca(input_h_size*input_v_size);
++
++ for ( i = 0; i < w + 1 ; i++ ){
++ for ( j = 0; j < h + 1 ; j++ ){
++ testBlock[i + input_h_size*j] = src[i + j*stride];
++ }
++ }
++
++ for ( i = 0; i < w ; i++ ){
++ for ( j = 0; j < h ; j++ ){
++ testBlock2[i + input_h_size*j] = dst[i + j*stride];
++ }
++ }
++
++ test(dst, src, stride, h, x, y);
++ correct(testBlock2, testBlock, input_h_size, h, x, y);
++
++ check_block(dst, testBlock2, stride, input_h_size, h, w, name, 0);
++
++}
++
++void test_qpel_mc_funcs(qpel_mc_func test, qpel_mc_func correct, uint8_t *dst,
++ uint8_t *src, int stride, int size, char *name){
++ uint8_t *testBlock, *testBlock2;
++ int i, j;
++ int test_stride = size + 8;
++
++ testBlock = alloca(test_stride*(size+8)) + 4 + test_stride*4;
++ testBlock2 = alloca(test_stride*size);
++
++ for ( i = -4; i < size+4 ; i++ ){
++ for ( j = -4; j < size+4 ; j++ ){
++ testBlock[i + test_stride*j] = src[i + j*stride];
++ }
++ }
++
++ for ( i = 0; i < size ; i++ ){
++ for ( j = 0; j < size ; j++ ){
++ testBlock2[i + test_stride*j] = dst[i + j*stride];
++ }
++ }
++
++ correct(dst, src, stride);
++ test(testBlock2, testBlock, test_stride);
++
++ check_block(testBlock2, dst, test_stride, stride, size, size, name, 0);
++
++}
++
++
++#define test_pixels_funcs(PFX, NUM ) \
++void test_ ## PFX ## _pixels ## NUM ## _avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
++ test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _avr32, PFX ## _pixels ## NUM ## _c, \
++ block, pixels, line_size, h, "test_" #PFX "_pixels", 0, 0); } \
++void test_ ## PFX ## _pixels ## NUM ## _h_avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
++ test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _h_avr32, PFX ## _pixels ## NUM ## _x2_c, \
++ block, pixels, line_size, h, "test_" #PFX "_pixels_h", 1, 0); } \
++void test_ ## PFX ## _pixels ## NUM ## _v_avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
++ test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _v_avr32, PFX ## _pixels ## NUM ## _y2_c, \
++ block, pixels, line_size, h, "test_" #PFX "_pixels_v", 0, 1); } \
++void test_ ## PFX ## _pixels ## NUM ## _hv_avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
++ test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _hv_avr32, PFX ## _pixels ## NUM ## _xy2_c, \
++ block, pixels, line_size, h, "test_" #PFX "_pixels_hv", 1, 1); }
++
++test_pixels_funcs(put, 8);
++test_pixels_funcs(put_no_rnd, 8);
++test_pixels_funcs(put, 16);
++test_pixels_funcs(put_no_rnd, 16);
++
++test_pixels_funcs(avg, 8);
++test_pixels_funcs(avg_no_rnd, 8);
++test_pixels_funcs(avg, 16);
++test_pixels_funcs(avg_no_rnd, 16);
++
++#define test_h264_chroma_mc_funcs(PFX, NUM ) \
++void test_ ## PFX ## _h264_chroma_mc ## NUM ## _pico( uint8_t *dst, uint8_t *src, int stride, int h, int x, int y){ \
++ test_h264_chroma_mc_funcs(PFX ## _h264_chroma_mc ## NUM ## _pico, PFX ## _h264_chroma_mc ## NUM ## _c, \
++ dst, src, stride, h, NUM, x, y, "test_" #PFX "_h264_chroma_mc" #NUM "_pico"); } \
++
++test_h264_chroma_mc_funcs(put, 2);
++test_h264_chroma_mc_funcs(put, 4);
++test_h264_chroma_mc_funcs(put, 8);
++test_h264_chroma_mc_funcs(avg, 2);
++test_h264_chroma_mc_funcs(avg, 4);
++test_h264_chroma_mc_funcs(avg, 8);
++
++#define test_qpel_mc_funcs_type(PFX, NUM, TYPE ) \
++void test_ ## PFX ## NUM ## _ ## TYPE ## _pico( uint8_t *dst, uint8_t *src, int stride){ \
++ test_qpel_mc_funcs(PFX ## NUM ## _ ## TYPE ## _pico, PFX ## NUM ## _ ## TYPE ## _c, \
++ dst, src, stride, NUM, "test_" #PFX #NUM "_" #TYPE "_pico"); }
++
++#define test_qpel_mc_funcs(PFX, NUM) \
++ test_qpel_mc_funcs_type(PFX, NUM, mc00);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc10);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc20);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc30);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc01);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc11);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc21);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc31);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc02);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc12);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc22);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc32);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc03);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc13);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc23);\
++ test_qpel_mc_funcs_type(PFX, NUM, mc33)
++
++test_qpel_mc_funcs(put_h264_qpel, 4);
++test_qpel_mc_funcs(put_h264_qpel, 8);
++test_qpel_mc_funcs(put_h264_qpel, 16);
++test_qpel_mc_funcs(avg_h264_qpel, 4);
++test_qpel_mc_funcs(avg_h264_qpel, 8);
++test_qpel_mc_funcs(avg_h264_qpel, 16);
++
++
++#define dspfunc(PFX, IDX, NUM) \
++ c->PFX ## _pixels_tab[IDX][ 0] = DSP_FUNC_NAME( PFX ## NUM ## _mc00_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 1] = DSP_FUNC_NAME( PFX ## NUM ## _mc10_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 2] = DSP_FUNC_NAME( PFX ## NUM ## _mc20_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 3] = DSP_FUNC_NAME( PFX ## NUM ## _mc30_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 4] = DSP_FUNC_NAME( PFX ## NUM ## _mc01_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 5] = DSP_FUNC_NAME( PFX ## NUM ## _mc11_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 6] = DSP_FUNC_NAME( PFX ## NUM ## _mc21_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 7] = DSP_FUNC_NAME( PFX ## NUM ## _mc31_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 8] = DSP_FUNC_NAME( PFX ## NUM ## _mc02_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 9] = DSP_FUNC_NAME( PFX ## NUM ## _mc12_pico ); \
++ c->PFX ## _pixels_tab[IDX][10] = DSP_FUNC_NAME( PFX ## NUM ## _mc22_pico ); \
++ c->PFX ## _pixels_tab[IDX][11] = DSP_FUNC_NAME( PFX ## NUM ## _mc32_pico ); \
++ c->PFX ## _pixels_tab[IDX][12] = DSP_FUNC_NAME( PFX ## NUM ## _mc03_pico ); \
++ c->PFX ## _pixels_tab[IDX][13] = DSP_FUNC_NAME( PFX ## NUM ## _mc13_pico ); \
++ c->PFX ## _pixels_tab[IDX][14] = DSP_FUNC_NAME( PFX ## NUM ## _mc23_pico ); \
++ c->PFX ## _pixels_tab[IDX][15] = DSP_FUNC_NAME( PFX ## NUM ## _mc33_pico )
++
++#endif
++
++void dsputil_init_avr32(DSPContext* c, AVCodecContext *avctx)
++{
++
++ /* H264 */
++
++ if ( 0 /*avr32_use_pico*/ ){
++ c->put_h264_chroma_pixels_tab[0]= DSP_FUNC_NAME(put_h264_chroma_mc8_pico);
++ c->put_h264_chroma_pixels_tab[1]= DSP_FUNC_NAME(put_h264_chroma_mc4_pico);
++ c->put_h264_chroma_pixels_tab[2]= DSP_FUNC_NAME(put_h264_chroma_mc2_pico);
++
++ c->avg_h264_chroma_pixels_tab[0]= DSP_FUNC_NAME(avg_h264_chroma_mc8_pico);
++ c->avg_h264_chroma_pixels_tab[1]= DSP_FUNC_NAME(avg_h264_chroma_mc4_pico);
++ c->avg_h264_chroma_pixels_tab[2]= DSP_FUNC_NAME(avg_h264_chroma_mc2_pico);
++ }
++
++#define dspfunc(PFX, IDX, NUM) \
++ c->PFX ## _pixels_tab[IDX][ 0] = DSP_FUNC_NAME( PFX ## NUM ## _mc00_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 1] = DSP_FUNC_NAME( PFX ## NUM ## _mc10_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 2] = DSP_FUNC_NAME( PFX ## NUM ## _mc20_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 3] = DSP_FUNC_NAME( PFX ## NUM ## _mc30_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 4] = DSP_FUNC_NAME( PFX ## NUM ## _mc01_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 5] = DSP_FUNC_NAME( PFX ## NUM ## _mc11_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 6] = DSP_FUNC_NAME( PFX ## NUM ## _mc21_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 7] = DSP_FUNC_NAME( PFX ## NUM ## _mc31_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 8] = DSP_FUNC_NAME( PFX ## NUM ## _mc02_pico ); \
++ c->PFX ## _pixels_tab[IDX][ 9] = DSP_FUNC_NAME( PFX ## NUM ## _mc12_pico ); \
++ c->PFX ## _pixels_tab[IDX][10] = DSP_FUNC_NAME( PFX ## NUM ## _mc22_pico ); \
++ c->PFX ## _pixels_tab[IDX][11] = DSP_FUNC_NAME( PFX ## NUM ## _mc32_pico ); \
++ c->PFX ## _pixels_tab[IDX][12] = DSP_FUNC_NAME( PFX ## NUM ## _mc03_pico ); \
++ c->PFX ## _pixels_tab[IDX][13] = DSP_FUNC_NAME( PFX ## NUM ## _mc13_pico ); \
++ c->PFX ## _pixels_tab[IDX][14] = DSP_FUNC_NAME( PFX ## NUM ## _mc23_pico ); \
++ c->PFX ## _pixels_tab[IDX][15] = DSP_FUNC_NAME( PFX ## NUM ## _mc33_pico )
++
++ if ( avr32_use_pico ){
++ dspfunc(put_h264_qpel, 0, 16);
++ dspfunc(put_h264_qpel, 1, 8);
++ dspfunc(put_h264_qpel, 2, 4);
++ dspfunc(avg_h264_qpel, 0, 16);
++ dspfunc(avg_h264_qpel, 1, 8);
++ dspfunc(avg_h264_qpel, 2, 4);
++ }
++
++ c->idct_put= DSP_FUNC_NAME(idct_put_avr32);
++ c->idct_add= DSP_FUNC_NAME(idct_add_avr32);
++ c->idct = DSP_FUNC_NAME(idct_avr32);
++ c->h264_idct_add = DSP_FUNC_NAME(h264_idct_add_avr32);
++ c->h264_idct8_add = DSP_FUNC_NAME(h264_idct8_add_avr32);
++
++ /*c->h264_v_loop_filter_luma= h264_v_loop_filter_luma_avr32;*/
++
++ c->idct_permutation_type= FF_TRANSPOSE_IDCT_PERM;
++
++ c->fdct = fdct_avr32;
++
++ c->clear_blocks = clear_blocks_avr32;
++
++#undef dspfunc
++#define dspfunc(PFX, IDX, NUM) \
++ c->PFX ## _pixels_tab[IDX][0] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _avr32 ); \
++ c->PFX ## _pixels_tab[IDX][1] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _h_avr32); \
++ c->PFX ## _pixels_tab[IDX][2] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _v_avr32); \
++ c->PFX ## _pixels_tab[IDX][3] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _hv_avr32)
++
++ dspfunc(put, 0, 16);
++ dspfunc(put_no_rnd, 0, 16);
++ dspfunc(put, 1, 8);
++ dspfunc(put_no_rnd, 1, 8);
++
++ dspfunc(avg, 1, 8);
++ dspfunc(avg_no_rnd, 1, 8);
++ dspfunc(avg, 0, 16);
++ dspfunc(avg_no_rnd, 0, 16);
++#undef dspfunc
++
++}
++
++
++
++#if 0
++int main(int argc, char *argv[]){
++
++
++}
++#endif
++
+diff --git a/libavcodec/avr32/fdct.S b/libavcodec/avr32/fdct.S
+new file mode 100644
+index 0000000..be45b86
+--- /dev/null
++++ b/libavcodec/avr32/fdct.S
+@@ -0,0 +1,541 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++
++//**********************************************************
++//* 2-D fDCT, Based on: *
++//* C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical *
++//* Fast 1-D DCT Algorithms with 11 Multiplications", *
++//* Proc. Int'l. Conf. on Acoustics, Speech, and Signal *
++//* Processing 1989 (ICASSP '89), pp. 988-991. *
++//* *
++//* Fixed point implementation optimized for the AVR-II *
++//* instruction set. If a table is used for the *
++//* coeffisients we can load two and two of them from *
++//* This will give a reduction of
++//* *
++//* *
++//**********************************************************
++
++
++/* This routine is a slow-but-accurate integer implementation of the
++ * forward DCT (Discrete Cosine Transform). Taken from the IJG software
++ *
++ * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
++ * on each column. Direct algorithms are also available, but they are
++ * much more complex and seem not to be any faster when reduced to code.
++ *
++ * This implementation is based on an algorithm described in
++ * C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
++ * Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
++ * Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
++ * The primary algorithm described there uses 11 multiplies and 29 adds.
++ * We use their alternate method with 12 multiplies and 32 adds.
++ * The advantage of this method is that no data path contains more than one
++ * multiplication; this allows a very simple and accurate implementation in
++ * scaled fixed-point arithmetic, with a minimal number of shifts.
++ *
++ * The poop on this scaling stuff is as follows:
++ *
++ * Each 1-D DCT step produces outputs which are a factor of sqrt(N)
++ * larger than the true DCT outputs. The final outputs are therefore
++ * a factor of N larger than desired; since N=8 this can be cured by
++ * a simple right shift at the end of the algorithm. The advantage of
++ * this arrangement is that we save two multiplications per 1-D DCT,
++ * because the y0 and y4 outputs need not be divided by sqrt(N).
++ * In the IJG code, this factor of 8 is removed by the quantization step
++ * (in jcdctmgr.c), here it is removed.
++ *
++ * We have to do addition and subtraction of the integer inputs, which
++ * is no problem, and multiplication by fractional constants, which is
++ * a problem to do in integer arithmetic. We multiply all the constants
++ * by CONST_SCALE and convert them to integer constants (thus retaining
++ * CONST_BITS bits of precision in the constants). After doing a
++ * multiplication we have to divide the product by CONST_SCALE, with proper
++ * rounding, to produce the correct output. This division can be done
++ * cheaply as a right shift of CONST_BITS bits. We postpone shifting
++ * as long as possible so that partial sums can be added together with
++ * full fractional precision.
++ *
++ * The outputs of the first pass are scaled up by PASS1_BITS bits so that
++ * they are represented to better-than-integral precision. These outputs
++ * require 8 + PASS1_BITS + 3 bits; this fits in a 16-bit word
++ * with the recommended scaling. (For 12-bit sample data, the intermediate
++ * array is INT32 anyway.)
++ *
++ * To avoid overflow of the 32-bit intermediate results in pass 2, we must
++ * have 8 + CONST_BITS + PASS1_BITS <= 26. Error analysis
++ * shows that the values given below are the most effective.
++ *
++ * We can gain a little more speed, with a further compromise in accuracy,
++ * by omitting the addition in a descaling shift. This yields an incorrectly
++ * rounded result half the time...
++ */
++
++ .global fdct_avr32
++
++
++
++#define CONST_BITS 13
++#define PASS1_BITS 2
++
++#define FIX_0_298631336 2446 /* FIX(0.298631336) */
++#define FIX_0_390180644 3196 /* FIX(0.390180644) */
++#define FIX_0_541196100 4433 /* FIX(0.541196100) */
++#define FIX_0_765366865 6270 /* FIX(0.765366865) */
++#define FIX_0_899976223 7373 /* FIX(0.899976223) */
++#define FIX_1_175875602 9633 /* FIX(1.175875602) */
++#define FIX_1_501321110 12299 /* FIX(1.501321110) */
++#define FIX_1_847759065 15137 /* FIX(1.847759065) */
++#define FIX_1_961570560 16069 /* FIX(1.961570560) */
++#define FIX_2_053119869 16819 /* FIX(2.053119869) */
++#define FIX_2_562915447 20995 /* FIX(2.562915447) */
++#define FIX_3_072711026 25172 /* FIX(3.072711026) */
++
++
++/*
++ * Perform an integer forward DCT on one block of samples.
++ */
++
++//void
++//fdct_int32(short *const block)
++//{
++// int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
++// int tmp10, tmp11, tmp12, tmp13;
++// int z1, z2, z3, z4, z5;
++// short *blkptr;
++// int *dataptr;
++// int data[64];
++// int i;
++//
++// /* Pass 1: process rows. */
++// /* Note results are scaled up by sqrt(8) compared to a true DCT; */
++// /* furthermore, we scale the results by 2**PASS1_BITS. */
++//
++// dataptr = data;
++// blkptr = block;
++
++ .text
++fdct_avr32:
++ pushm r0-r3, r4-r7, lr
++#define loop_ctr r0
++#define blkptr r12
++#define x0 r1
++#define x1 r2
++#define x2 r3
++#define x3 r4
++#define x4 r5
++#define x5 r6
++#define x6 r7
++#define x7 r8
++#define tmp0 r5
++#define tmp7 r2
++#define tmp1 r3
++#define tmp6 r4
++#define tmp2 r9
++#define tmp5 r8
++#define tmp3 r7
++#define tmp4 r6
++
++
++ mov loop_ctr, 8
++// for (i = 0; i < 8; i++) {
++ROW_LOOP:
++
++ ldm blkptr, r1, r2, r3, r4
++
++// tmp2 = blkptr[2] + blkptr[5];
++// tmp3 = blkptr[3] + blkptr[4];
++ paddx.h r5, r3, r2
++// tmp5 = blkptr[2] - blkptr[5];
++// tmp4 = blkptr[3] - blkptr[4];
++ psubx.h r6, r3, r2
++// tmp0 = blkptr[0] + blkptr[7];
++// tmp1 = blkptr[1] + blkptr[6];
++ paddx.h r2, r4, r1
++// tmp7 = blkptr[0] - blkptr[7];
++// tmp6 = blkptr[1] - blkptr[6];
++ psubx.h r3, r4, r1
++
++// /* Even part per LL&M figure 1 --- note that published figure is faulty;
++// * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
++// */
++
++#define tmp10 r1
++#define tmp13 r5
++#define tmp11 r7
++#define tmp12 r3
++#define z1 r9
++
++// tmp10 = tmp0 + tmp3;
++// tmp13 = tmp0 - tmp3;
++ paddsub.h r1, r2:t, r5:b
++// tmp11 = tmp1 + tmp2;
++// tmp12 = tmp1 - tmp2;
++ paddsub.h r4, r2:b, r5:t
++
++
++// dataptr[0] = (tmp10 + tmp11) << PASS1_BITS;
++// dataptr[4] = (tmp10 - tmp11) << PASS1_BITS;
++ paddsub.h r7, r1:t, r4:t
++ ld.w r10, pc[const_table - .]
++ plsl.h r7, r7, PASS1_BITS
++
++// z1 = (tmp12 + tmp13) * FIX_0_541196100;
++ addhh.w r8, r4:b, r1:b
++ mulhh.w r8, r8:b, r10:t
++
++// dataptr[2] =
++// DESCALE(z1 + tmp13 * FIX_0_765366865, CONST_BITS - PASS1_BITS);
++// dataptr[6] =
++// DESCALE(z1 + tmp12 * (-FIX_1_847759065), CONST_BITS - PASS1_BITS);
++ mulhh.w r9, r1:b, r10:b
++ ld.w r10, pc[const_table - . + 4]
++ add r1, r8, r9
++ satrnds r1 >> (CONST_BITS - PASS1_BITS), 31
++
++ mulhh.w r9, r4:b, r10:t
++ add r4, r8, r9
++ satrnds r4 >> (CONST_BITS - PASS1_BITS), 31
++
++
++// /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
++// * cK represents cos(K*pi/16).
++// * i0..i3 in the paper are tmp4..tmp7 here.
++// */
++
++#define z2 r5
++#define z3 r6
++#define z4 r7
++#define z5 r8
++
++// z4 = tmp5 + tmp7;
++// z3 = tmp4 + tmp6;
++ padd.h r2, r6, r3
++// z2 = tmp5 + tmp6;
++// z1 = tmp4 + tmp7;
++ paddx.h r5, r6, r3
++
++ lddpc r9, pc[const_table - . + 8]
++// z5 = (z3 + z4) * FIX_1_175875602; /* sqrt(2) * c3 */
++ addhh.w r8, r2:t, r2:b
++ mulhh.w r8, r8:b, r10:b
++ lddpc r10, pc[const_table - . + 12]
++
++
++// tmp4 *= FIX_0_298631336; /* sqrt(2) * (-c1+c3+c5-c7) */
++ mulhh.w r11, r6:b, r9:t
++
++// tmp5 *= FIX_2_053119869; /* sqrt(2) * ( c1+c3-c5+c7) */
++ mulhh.w r6, r6:t, r9:b
++
++// tmp6 *= FIX_3_072711026; /* sqrt(2) * ( c1+c3+c5-c7) */
++ lddpc r9, pc[const_table - . + 20]
++ mulhh.w lr, r3:b, r10:t
++
++// tmp7 *= FIX_1_501321110; /* sqrt(2) * ( c1+c3-c5-c7) */
++ mulhh.w r3, r3:t, r10:b
++
++// z3 *= -FIX_1_961570560; /* sqrt(2) * (-c3-c5) */
++ mulhh.w r10, r2:b, r9:t
++
++// z4 *= -FIX_0_390180644; /* sqrt(2) * (c5-c3) */
++ mulhh.w r2, r2:t, r9:b
++ lddpc r9, pc[const_table - . + 16]
++// z3 += z5;
++// z4 += z5;
++ add r10, r8
++ add r2, r8
++
++// z1 *= -FIX_0_899976223; /* sqrt(2) * (c7-c3) */
++ mulhh.w r8, r5:b, r9:t
++
++// z2 *= -FIX_2_562915447; /* sqrt(2) * (-c1-c3) */
++ mulhh.w r5, r5:t, r9:b
++
++// dataptr[7] = DESCALE(tmp4 + z1 + z3, CONST_BITS - PASS1_BITS);
++ add r11, r8
++ add r11, r10
++ satrnds r11 >> (CONST_BITS - PASS1_BITS), 31
++
++// dataptr[5] = DESCALE(tmp5 + z2 + z4, CONST_BITS - PASS1_BITS);
++ add r6, r5
++
++ sthh.w blkptr[6*2], r4:b, r11:b
++ add r6, r2
++ satrnds r6 >> (CONST_BITS - PASS1_BITS), 31
++
++// dataptr[3] = DESCALE(tmp6 + z2 + z3, CONST_BITS - PASS1_BITS);
++ add lr, r5
++ sthh.w blkptr[4*2], r7:b, r6:b
++ add lr, r10
++ satrnds lr >> (CONST_BITS - PASS1_BITS), 31
++
++// dataptr[1] = DESCALE(tmp7 + z1 + z4, CONST_BITS - PASS1_BITS);
++ add r3, r8
++ sthh.w blkptr[2*2], r1:b, lr:b
++ add r3, r2
++ satrnds r3 >> (CONST_BITS - PASS1_BITS), 31
++
++
++
++// dataptr += 8; /* advance pointer to next row */
++// blkptr += 8;
++ sthh.w blkptr[0], r7:t, r3:b
++ sub blkptr, -16
++ sub loop_ctr, 1
++ brne ROW_LOOP
++
++// }
++
++ /* Pass 2: process columns.
++ * We remove the PASS1_BITS scaling, but leave the results scaled up
++ * by an overall factor of 8.
++ */
++
++// dataptr = data;
++ sub blkptr, 128
++
++ mov loop_ctr, 4
++// for (i = 0; i < 8; i++) {
++COLOUMN_LOOP:
++ ld.w r1, blkptr[0]
++ ld.w r2, blkptr[1*8*2]
++ ld.w r3, blkptr[2*8*2]
++ ld.w r4, blkptr[3*8*2]
++ ld.w r5, blkptr[4*8*2]
++ ld.w r6, blkptr[5*8*2]
++ ld.w r7, blkptr[6*8*2]
++ ld.w r8, blkptr[7*8*2]
++
++// tmp0 = blkptr[0] + blkptr[7*8];
++ padds.sh r9, r1, r8
++// tmp7 = blkptr[0] - blkptr[7*8];
++ psubs.sh r1, r1, r8
++// tmp1 = blkptr[1*8] + blkptr[6*8];
++ padds.sh r8, r2, r7
++// tmp6 = blkptr[1*8] - blkptr[6*8];
++ psubs.sh r2, r2, r7
++// tmp2 = blkptr[2*8] + blkptr[5*8];
++ padds.sh r7, r3, r6
++// tmp5 = blkptr[2*8] - blkptr[5*8];
++ psubs.sh r3, r3, r6
++// tmp3 = blkptr[3*8] + blkptr[4*8];
++ padds.sh r6, r4, r5
++// tmp4 = blkptr[3*8] - blkptr[4*8];
++ psubs.sh r4, r4, r5
++
++// /* even part per ll&m figure 1 --- note that published figure is faulty;
++// * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
++// */
++//
++// tmp10 = tmp0 + tmp3;
++ padds.sh r5, r9, r6
++// tmp13 = tmp0 - tmp3;
++ psubs.sh r9, r9, r6
++// tmp11 = tmp1 + tmp2;
++ padds.sh r6, r8, r7
++// tmp12 = tmp1 - tmp2;
++ psubs.sh r8, r8, r7
++
++// dataptr[0] = DESCALE(tmp10 + tmp11, PASS1_BITS);
++// dataptr[32] = DESCALE(tmp10 - tmp11, PASS1_BITS);
++//Might get an overflow here
++ padds.sh r7, r5, r6
++ psubs.sh r5, r5, r6
++
++ //Rounding
++ mov lr, (1 << (PASS1_BITS + 2))
++ orh lr, hi(1 << (16 + PASS1_BITS + 2))
++ padds.sh r7, r7, lr
++ padds.sh r5, r5, lr
++
++ pasr.h r7, r7, PASS1_BITS + 3
++ pasr.h r5, r5, PASS1_BITS + 3
++ st.w r12[0], r7
++ st.w r12[4*8*2], r5
++
++ lddpc r10, const_table2
++
++
++// z1 = (tmp12 + tmp13) * FIX_0_541196100;
++ padds.sh r5, r8, r9
++ mulhh.w r6, r5:t, r10:t
++ mulhh.w r7, r5:b, r10:t
++
++// dataptr[16] =
++// DESCALE(z1 + tmp13 * FIX_0_765366865, CONST_BITS + PASS1_BITS);
++ lddpc r11, const_table2 + 4
++ mulhh.w lr, r9:t, r10:b
++ mulhh.w r9, r9:b, r10:b
++ add lr, r6
++ add r9, r7
++ satrnds lr >> (CONST_BITS + PASS1_BITS + 3), 31
++ satrnds r9 >> (CONST_BITS + PASS1_BITS + 3), 31
++ sthh.w r12[2*8*2], lr:b, r9:b
++
++// dataptr[48] =
++// DESCALE(z1 + tmp12 * (-FIX_1_847759065), CONST_BITS + PASS1_BITS);
++ mulhh.w lr, r8:t, r11:t
++ mulhh.w r8, r8:b, r11:t
++ add lr, r6
++ add r8, r7
++ satrnds lr >> (CONST_BITS + PASS1_BITS + 3), 31
++ satrnds r8 >> (CONST_BITS + PASS1_BITS + 3), 31
++ sthh.w r12[6*8*2], lr:b, r8:b
++
++// /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
++// * cK represents cos(K*pi/16).
++// * i0..i3 in the paper are tmp4..tmp7 here.
++// */
++//
++// z2 = tmp5 + tmp6;
++// z3 = tmp4 + tmp6;
++// z4 = tmp5 + tmp7;
++ padds.sh r5, r3, r2
++ padds.sh r6, r4, r2
++ padds.sh r7, r3, r1
++
++// z5 = (z3 + z4) * FIX_1_175875602; /* sqrt(2) * c3 */
++ padds.sh r8, r6, r7
++ mulhh.w r9, r8:t, r11:b
++ mulhh.w r8, r8:b, r11:b
++
++// z3 *= -FIX_1_961570560; /* sqrt(2) * (-c3-c5) */
++// z3 += z5;
++ lddpc r11, const_table2 + 8
++ mulhh.w r10, r6:t, r11:t
++ mulhh.w r6, r6:b, r11:t
++ add r10, r9
++ add r6, r8
++
++// z4 *= -FIX_0_390180644; /* sqrt(2) * (c5-c3) */
++// z4 += z5;
++ mulhh.w lr, r7:t, r11:b
++ mulhh.w r7, r7:b, r11:b
++ lddpc r11, const_table2 + 12
++ st.w --sp,r0
++ add lr, r9
++ add r7, r8
++
++// tmp6 *= FIX_3_072711026; /* sqrt(2) * ( c1+c3+c5-c7) */
++ mulhh.w r0, r2:t, r11:t
++ machh.w r0, r5:t, r11:b
++ mulhh.w r2, r2:b, r11:t
++ machh.w r2, r5:b, r11:b
++
++// z2 *= -FIX_2_562915447; /* sqrt(2) * (-c1-c3) */
++// dataptr[24] = DESCALE(tmp6 + z2 + z3, CONST_BITS + PASS1_BITS);
++ add r0, r10
++ lddpc r11, const_table2 + 16
++ add r2, r6
++ satrnds r0 >> (CONST_BITS + PASS1_BITS + 3), 31
++ satrnds r2 >> (CONST_BITS + PASS1_BITS + 3), 31
++ sthh.w r12[3*8*2], r0:b, r2:b
++// tmp5 *= FIX_2_053119869; /* sqrt(2) * ( c1+c3-c5+c7) */
++ mulhh.w r0, r3:t, r11:t
++ machh.w r0, r5:t, r11:b
++ mulhh.w r2, r3:b, r11:t
++ machh.w r2, r5:b, r11:b
++ add r0, lr
++ lddpc r11, const_table2 + 20
++ add r2, r7
++
++// dataptr[40] = DESCALE(tmp5 + z2 + z4, CONST_BITS + PASS1_BITS);
++ satrnds r0 >> (CONST_BITS + PASS1_BITS + 3), 31
++ satrnds r2 >> (CONST_BITS + PASS1_BITS + 3), 31
++ sthh.w r12[5*8*2], r0:b, r2:b
++
++
++// z1 = tmp4 + tmp7;
++ padds.sh r2, r4, r1
++
++// tmp4 *= FIX_0_298631336; /* sqrt(2) * (-c1+c3+c5-c7) */
++ mulhh.w r3, r4:t, r11:t
++ machh.w r3, r2:t, r11:b
++ mulhh.w r4, r4:b, r11:t
++ machh.w r4, r2:b, r11:b
++ add r3, r10
++ lddpc r11, const_table2 + 24
++ add r4, r6
++
++// z1 *= -FIX_0_899976223; /* sqrt(2) * (c7-c3) */
++// dataptr[56] = DESCALE(tmp4 + z1 + z3, CONST_BITS + PASS1_BITS);
++ satrnds r3 >> (CONST_BITS + PASS1_BITS + 3), 31
++ satrnds r4 >> (CONST_BITS + PASS1_BITS + 3), 31
++ sthh.w r12[7*8*2], r3:b, r4:b
++
++
++// tmp7 *= FIX_1_501321110; /* sqrt(2) * ( c1+c3-c5-c7) */
++ mulhh.w r3, r1:t, r11:t
++ machh.w r3, r2:t, r11:b
++ mulhh.w r4, r1:b, r11:t
++ machh.w r4, r2:b, r11:b
++ add r3, lr
++ add r4, r7
++
++// dataptr[8] = DESCALE(tmp7 + z1 + z4, CONST_BITS + PASS1_BITS);
++ satrnds r3 >> (CONST_BITS + PASS1_BITS + 3), 31
++ satrnds r4 >> (CONST_BITS + PASS1_BITS + 3), 31
++ sthh.w r12[1*8*2], r3:b, r4:b
++ ld.w r0, sp++
++
++// dataptr++; /* advance pointer to next column */
++ sub blkptr, -4
++ sub loop_ctr, 1
++ brne COLOUMN_LOOP
++
++// }
++
++ popm r0-r3, r4-r7, pc
++
++// /* descale */
++// for (i = 0; i < 64; i++)
++// block[i] = (short int) DESCALE(data[i], 3);
++
++
++//}
++
++
++ .align 2
++const_table: .short FIX_0_541196100, FIX_0_765366865, -FIX_1_847759065, FIX_1_175875602
++ .short FIX_0_298631336, FIX_2_053119869, FIX_3_072711026, FIX_1_501321110
++ .short -FIX_0_899976223,-FIX_2_562915447, -FIX_1_961570560, -FIX_0_390180644
++
++const_table2: .short FIX_0_541196100, FIX_0_765366865, -FIX_1_847759065, FIX_1_175875602
++ .short -FIX_1_961570560, -FIX_0_390180644, FIX_3_072711026, -FIX_2_562915447
++ .short FIX_2_053119869, -FIX_2_562915447, FIX_0_298631336, -FIX_0_899976223
++ .short FIX_1_501321110, -FIX_0_899976223
++
++
++
++
+diff --git a/libavcodec/avr32/h264idct.S b/libavcodec/avr32/h264idct.S
+new file mode 100644
+index 0000000..4b23e2d
+--- /dev/null
++++ b/libavcodec/avr32/h264idct.S
+@@ -0,0 +1,451 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++
++ .global h264_idct_add_avr32
++
++ /* Macro for performing the 1-D transform on one row line.
++
++ The register 'w01' should contain the first two pixels,
++ and the register 'w23' should contain the last two pixels
++ in the line. The resulting line is placed in p01 and p23
++ so that { w01, w23 } = { x0, x1, x3, x2 }.
++ 'tmp' and 'tmp2' should be scratchpad registers. */
++ .macro transform_row w01, w23, tmp, tmp2
++ add \tmp, \w23, \w01 << 1 /* tmp = { xxxx, 2*w1 + w3 } */
++ sub \tmp2, \w01, \w23 << 1 /* tmp2 = { xxxx, w1 - 2*w3 } */
++ bfins \tmp2, \tmp, 16, 16 /* tmp2 = { 2*w1 + w3, w1 - 2*w3 } */
++ pasr.h \tmp2, \tmp2, 1 /* tmp2 = { w1 + w3/2, w1/2 - w3 } */
++ paddsub.h \tmp, \w01:t, \w23:t /* tmp = { w0 + w2, w0 - w2 } */
++ padd.h \w01, \tmp, \tmp2 /* w01 = { w0 + w2 + w1 + w3/2, w0 - w2 + w1/2 - w3 } */
++ psub.h \w23, \tmp, \tmp2 /* w23 = { w0 + w2 - w1 - w3/2, w0 - w2 - w1/2 + w3 } */
++ .endm
++
++ /* Macro for performing the 1-D transform on two columns.
++
++ The registers w0, w1, w2, w3 should each contain two
++ packed samples from the two colomns to transform.
++ tmp and tmp2 are scratchpad registers.
++
++ The resulting transformed columns are placed in the
++ same positions as the input columns.
++ */
++ .macro transform_2columns w0, w1, w2, w3, tmp, tmp2
++ padd.h \tmp, \w0, \w2 /* tmp = z0 = w0 + w2 */
++ psub.h \w0, \w0, \w2 /* w0 = z1 = w0 - w2 */
++ pasr.h \w2, \w1, 1 /* w2 = w1/2 */
++ pasr.h \tmp2, \w3, 1 /* tmp2 = w3/2 */
++ psub.h \w3, \w2, \w3 /* w3 = z2 = w1/2 - w3 */
++ padd.h \tmp2, \w1, \tmp2/* tmp2 = z3 = w1 + w3/2 */
++ padd.h \w1, \w0, \w3 /* w1 = x1 = z1 + z2 */
++ psub.h \w2, \w0, \w3 /* w2 = x2 = z1 - z2 */
++ padd.h \w0, \tmp, \tmp2/* w0 = x0 = z0 + z3 */
++ psub.h \w3, \tmp, \tmp2/* w3 = x3 = z0 - z3 */
++ /* Scale down result. */
++ pasr.h \w0, \w0, 6
++ pasr.h \w1, \w1, 6
++ pasr.h \w2, \w2, 6
++ pasr.h \w3, \w3, 6
++ .endm
++
++/*void h264_idct_add_avr32(uint8_t *dst, DCTELEM *block, int stride)*/
++
++h264_idct_add_avr32:
++
++ stm --sp,r0-r3,r4-r7, lr
++
++ /* Setup rounding factor. */
++ mov r0, (1 << 5)
++ lsl r0, 16
++
++ /* Load block */
++ ldm r11,r2-r9
++ /* r9 = { w00, w01 },
++ r8 = { w02, w03 },
++ r7 = { w10, w11 },
++ r6 = { w12, w13 },
++ r5 = { w20, w21 },
++ r4 = { w22, w23 },
++ r3 = { w30, w31 },
++ r2 = { w32, w33 } */
++
++
++ /* Add the rounding factor to w00. */
++ add r9, r0
++
++ /* Transform rows */
++ transform_row r9, r8, r0, r1
++ transform_row r7, r6, r0, r1
++ transform_row r5, r4, r0, r1
++ transform_row r3, r2, r0, r1
++
++ /* Transform columns */
++ transform_2columns r9, r7, r5, r3, r0, r1
++ transform_2columns r8, r6, r4, r2, r0, r1
++
++ /* Load predicted pixels.*/
++ ld.w lr, r12[0]
++ ld.w r11, r12[r10]
++
++ /* Unpack to halwords. */
++ punpckub.h r0, lr:t
++ punpckub.h r1, lr:b
++
++ /* Add with transformed row. */
++ padd.h r0, r0, r9
++ paddx.h r1, r1, r8
++ /* Pack and saturate back to 8-bit pixels. */
++ packsh.ub r0, r0, r1
++
++ /* Unpack to halwords. */
++ punpckub.h lr, r11:t
++ punpckub.h r11, r11:b
++
++ /* Add with transformed row. */
++ padd.h lr, lr, r7
++ paddx.h r11, r11, r6
++ /* Pack and saturate back to 8-bit pixels. */
++ packsh.ub r1, lr, r11
++
++ /* Store back to frame. */
++ st.w r12[0], r0
++ st.w r12[r10], r1
++
++ add r12, r12, r10 << 1
++
++ /* Load predicted pixels.*/
++ ld.w lr, r12[0]
++ ld.w r11, r12[r10]
++
++ /* Unpack to halwords. */
++ punpckub.h r0, lr:t
++ punpckub.h r1, lr:b
++
++ /* Add with transformed row. */
++ padd.h r0, r0, r5
++ paddx.h r1, r1, r4
++ /* Pack and saturate back to 8-bit pixels. */
++ packsh.ub r0, r0, r1
++
++ /* Unpack to halwords. */
++ punpckub.h lr, r11:t
++ punpckub.h r11, r11:b
++
++ /* Add with transformed row. */
++ padd.h lr, lr, r3
++ paddx.h r11, r11, r2
++ /* Pack and saturate back to 8-bit pixels. */
++ packsh.ub r1, lr, r11
++
++ /* Store back to frame. */
++ st.w r12[0], r0
++ st.w r12[r10], r1
++
++ ldm sp++,r0-r3,r4-r7, pc
++
++
++ .global h264_idct8_add_avr32
++//void ff_h264_idct8_add_c(uint8_t *dst, DCTELEM *block, int stride){
++
++h264_idct8_add_avr32:
++ stm --sp,r0-r3,r4-r7, lr
++
++ /* Push dst and stride on stack */
++ stm --sp,r10,r12
++
++// int i;
++// DCTELEM (*src)[8] = (DCTELEM(*)[8])block;
++// uint8_t *cm = cropTbl + MAX_NEG_CROP;
++
++// block[0] += 32;
++
++
++// for( i = 0; i < 8; i++ )
++// {
++ mov lr, 4
++0:
++ ld.w r7, r11[0*(8*2)]
++ ld.w r6, r11[1*(8*2)]
++ ld.w r5, r11[2*(8*2)]
++ ld.w r4, r11[3*(8*2)]
++ ld.w r3, r11[4*(8*2)]
++ ld.w r2, r11[5*(8*2)]
++ ld.w r1, r11[6*(8*2)]
++ ld.w r0, r11[7*(8*2)]
++
++/*
++
++ const int a0 = src[0][i] + src[4][i];
++ const int a2 = src[0][i] - src[4][i];
++ const int a4 = (src[2][i]>>1) - src[6][i];
++ const int a6 = (src[6][i]>>1) + src[2][i];
++*/
++ padd.h r8, r7, r3 /* r8 = a0 */
++ psub.h r7, r7, r3 /* r7 = a2 */
++ pasr.h r3, r5, 1 /* r3 = src[2][i] >> 1 */
++ pasr.h r9, r1, 1 /* r9 = src[6][i] >> 1 */
++ psub.h r3, r3, r1 /* r3 = a4 */
++ padd.h r9, r9, r5 /* r9 = a6 */
++
++/*
++ const int b0 = a0 + a6;
++ const int b2 = a2 + a4;
++ const int b4 = a2 - a4;
++ const int b6 = a0 - a6;
++*/
++ padd.h r1, r8, r9 /* r1 = b0 */
++ psub.h r8, r8, r9 /* r8 = b6 */
++ padd.h r5, r7, r3 /* r5 = b2 */
++ psub.h r7, r7, r3 /* r7 = b4 */
++
++/*
++ const int a1 = -src[3][i] + src[5][i] - src[7][i] - (src[7][i]>>1);
++ const int a3 = src[1][i] + src[7][i] - src[3][i] - (src[3][i]>>1);
++ const int a5 = -src[1][i] + src[7][i] + src[5][i] + (src[5][i]>>1);
++ const int a7 = src[3][i] + src[5][i] + src[1][i] + (src[1][i]>>1);
++*/
++ pasr.h r3, r0, 1
++ padd.h r3, r3, r0
++ psub.h r3, r2, r3
++ psub.h r3, r3, r4 /* r3 = a1 */
++
++ pasr.h r9, r4, 1
++ padd.h r9, r9, r4
++ psub.h r9, r0, r9
++ padd.h r9, r6, r9 /* r9 = a3 */
++
++ pasr.h r10, r2, 1
++ padd.h r10, r10, r2
++ padd.h r10, r10, r0
++ psub.h r10, r10, r6 /* r10 = a5 */
++
++ pasr.h r0, r6, 1
++ padd.h r0, r0, r6
++ padd.h r0, r0, r2
++ padd.h r0, r0, r4 /* r0 = a7 */
++/*
++ const int b1 = (a7>>2) + a1;
++ const int b3 = a3 + (a5>>2);
++ const int b5 = (a3>>2) - a5;
++ const int b7 = a7 - (a1>>2);
++*/
++ pasr.h r2, r0, 2
++ padd.h r2, r2, r3 /* r2 = b1 */
++ pasr.h r3, r3, 2
++ psub.h r3, r0, r3 /* r3 = b7 */
++
++ pasr.h r0, r10, 2
++ padd.h r0, r0, r9 /* r0 = b3 */
++ pasr.h r9, r9, 2
++ psub.h r9, r9, r10 /* r9 = b5 */
++
++
++/*
++ src[0][i] = b0 + b7;
++ src[7][i] = b0 - b7;
++ src[1][i] = b2 + b5;
++ src[6][i] = b2 - b5;
++ src[2][i] = b4 + b3;
++ src[5][i] = b4 - b3;
++ src[3][i] = b6 + b1;
++ src[4][i] = b6 - b1; */
++
++ padd.h r4, r1, r3
++ psub.h r1, r1, r3
++ st.w r11[0*(8*2)], r4
++ st.w r11[7*(8*2)], r1
++
++ padd.h r3, r5, r9
++ psub.h r5, r5, r9
++ st.w r11[1*(8*2)], r3
++ st.w r11[6*(8*2)], r5
++
++ padd.h r9, r7, r0
++ psub.h r7, r7, r0
++ st.w r11[2*(8*2)], r9
++ st.w r11[5*(8*2)], r7
++
++ padd.h r0, r8, r2
++ psub.h r8, r8, r2
++ st.w r11[3*(8*2)], r0
++ st.w r11[4*(8*2)], r8
++
++ sub r11, -4
++ sub lr, 1
++ brne 0b
++
++// }
++
++ lddsp r12, sp[0] /* r12 = dst */
++ sub r11, 4*4
++ ldm r11++, r4-r7
++ mov lr, 8
++ /* Push dst and stride on stack */
++
++1:
++// for( i = 0; i < 8; i++ )
++// {
++
++ /* r7 = {src[i][0], src[i][1]}
++ r6 = {src[i][2], src[i][3]}
++ r5 = {src[i][4], src[i][5]}
++ r4 = {src[i][6], src[i][7]} */
++
++/*
++ const int a0 = src[i][0] + src[i][4];
++ const int a2 = src[i][0] - src[i][4];
++ const int a4 = (src[i][2]>>1) - src[i][6];
++ const int a6 = (src[i][6]>>1) + src[i][2];
++*/
++ pasr.h r8, r6, 1
++ pasr.h r9, r4, 1
++ addhh.w r0, r7:t, r5:t /* r0 = a0 */
++ subhh.w r1, r7:t, r5:t /* r1 = a2 */
++ subhh.w r2, r8:t, r4:t /* r2 = a4 */
++ addhh.w r3, r9:t, r6:t /* r3 = a6 */
++
++/*
++ const int b0 = a0 + a6;
++ const int b2 = a2 + a4;
++ const int b4 = a2 - a4;
++ const int b6 = a0 - a6;
++*/
++ add r10, r0, r3 /* r10 = b0 */
++ sub r0, r3 /* r0 = b6 */
++ add r3, r1, r2 /* r3 = b2 */
++ sub r1, r2 /* r1 = b4 */
++/*
++
++
++ const int a7 = src[i][5] + src[i][3] + src[i][1] + (src[i][1]>>1);
++ const int a1 = src[i][5] - src[i][3] - src[i][7] - (src[i][7]>>1);
++ const int a3 = src[i][7] + src[i][1] - src[i][3] - (src[i][3]>>1);
++ const int a5 = src[i][7] - src[i][1] + src[i][5] + (src[i][5]>>1); */
++ addhh.w r8, r8:b, r6:b
++ addhh.w r2, r4:b, r7:b
++ sub r2, r8 /* r2 = a3 */
++
++ addhh.w r9, r9:b, r4:b
++ subhh.w r8, r5:b, r6:b
++ sub r8, r9 /* r8 = a1 */
++
++ pasr.h r9, r7, 1
++ addhh.w r9, r9:b, r7:b
++ addhh.w r6, r5:b, r6:b
++ add r6, r9 /* r6 = a7 */
++
++ pasr.h r9, r5, 1
++ addhh.w r9, r9:b, r5:b
++ subhh.w r5, r4:b, r7:b
++ add r5, r9 /* r5 = a5 */
++
++/* const int b1 = (a7>>2) + a1;
++ const int b3 = (a5>>2) + a3;
++ const int b5 = (a3>>2) - a5;
++ const int b7 = -(a1>>2) + a7 ; */
++ asr r4, r6, 2
++ add r4, r8 /* r4 = b1 */
++ asr r8, 2
++ rsub r8, r6 /* r8 = b7 */
++
++ asr r6, r5, 2
++ add r6, r2 /* r6 = b3 */
++ asr r2, 2
++ sub r2, r5 /* r2 = b5 */
++
++/*
++ dst[i*stride + 0] = cm[ dst[i*stride + 0] + ((b0 + b7) >> 6) ];
++ dst[i*stride + 1] = cm[ dst[i*stride + 1] + ((b2 + b5) >> 6) ];
++ dst[i*stride + 2] = cm[ dst[i*stride + 2] + ((b4 + b3) >> 6) ];
++ dst[i*stride + 3] = cm[ dst[i*stride + 3] + ((b6 + b1) >> 6) ];
++ dst[i*stride + 4] = cm[ dst[i*stride + 4] + ((b6 - b1) >> 6) ];
++ dst[i*stride + 5] = cm[ dst[i*stride + 5] + ((b4 - b3) >> 6) ];
++ dst[i*stride + 6] = cm[ dst[i*stride + 6] + ((b2 - b5) >> 6) ];
++ dst[i*stride + 7] = cm[ dst[i*stride + 7] + ((b0 - b7) >> 6) ];
++*/
++ add r5, r10, r8
++ satrnds r5 >> 6, 0 /* r5 = (b0 + b7) >> 6 */
++ sub r10, r8
++ satrnds r10 >> 6, 0 /* r10 = (b0 - b7) >> 6 */
++ add r8, r3, r2
++ satrnds r8 >> 6, 0 /* r8 = (b2 + b5) >> 6 */
++ sub r3, r2
++ satrnds r3 >> 6, 0 /* r3 = (b2 - b5) >> 6 */
++
++ add r2, r1, r6
++ satrnds r2 >> 6, 0 /* r2 = (b4 + b3) >> 6 */
++ sub r1, r6
++ satrnds r1 >> 6, 0 /* r1 = (b4 - b3) >> 6 */
++
++ add r6, r0, r4
++ satrnds r6 >> 6, 0 /* r6 = (b6 + b1) >> 6 */
++ sub r0, r4
++ satrnds r0 >> 6, 0 /* r0 = (b6 - b1) >> 6 */
++
++ ld.w r4, r12[0]
++
++ packw.sh r8, r5, r8
++ packw.sh r7, r2, r6
++ ld.w r9, r12[4]
++ packw.sh r6, r0, r1
++ packw.sh r5, r3, r10
++
++ punpckub.h r10, r4:t
++ punpckub.h r4, r4:b
++ punpckub.h r3, r9:t
++ punpckub.h r9, r9:b
++
++ padd.h r8, r8, r10
++ padd.h r7, r7, r4
++ padd.h r6, r6, r3
++ padd.h r5, r5, r9
++
++ lddsp r10, sp[4] /* r10 = stride */
++ packsh.ub r0, r8, r7
++ packsh.ub r1, r6, r5
++
++ st.w r12[0], r0
++ st.w r12[4], r1
++
++ ldm r11++, r4-r7
++ add r12, r10 /* dst += stride */
++
++ sub lr, 1
++ brne 1b
++
++ sub sp, -8
++ ldm sp++,r0-r3,r4-r7, pc
++
++
++
++// }
++//}
+diff --git a/libavcodec/avr32/idct.S b/libavcodec/avr32/idct.S
+new file mode 100644
+index 0000000..e7551ec
+--- /dev/null
++++ b/libavcodec/avr32/idct.S
+@@ -0,0 +1,829 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++
++ .global idct_add_avr32
++ .global idct_put_avr32
++ .global idct_avr32
++
++
++#define CONST_BITS 13
++#define PASS1_BITS 2
++
++#define ONE ((INT32) 1)
++
++#define CONST_SCALE (ONE << CONST_BITS)
++
++#define LINE_SIZE 32
++
++#define FIX_0_298631336 (2446) /* FIX(0.298631336) */
++#define FIX_0_390180644 (3196) /* FIX(0.390180644) */
++#define FIX_0_541196100 (4433) /* FIX(0.541196100) */
++#define FIX_0_765366865 (6270) /* FIX(0.765366865) */
++#define FIX_0_899976223 (7373) /* FIX(0.899976223) */
++#define FIX_1_175875602 (9633) /* FIX(1.175875602) */
++#define FIX_1_501321110 (12299)/* FIX(1.501321110) */
++#define FIX_1_847759065 (15137)/* FIX(1.847759065) */
++#define FIX_1_961570560 (16069)/* FIX(1.961570560) */
++#define FIX_2_053119869 (16819)/* FIX(2.053119869) */
++#define FIX_2_562915447 (20995)/* FIX(2.562915447) */
++#define FIX_3_072711026 (25172)/* FIX(3.072711026) */
++
++
++#define loop_cnt r11
++
++ .text
++
++idct_add_avr32:
++ pushm r0-r3, r4-r7, lr //Free up registers to use for local variables
++
++ // Give room for some variables on the stack
++ sub sp, 8
++ stdsp SP[0], r12 // rfp
++ stdsp SP[4], r11 // iinc
++
++ mov loop_cnt, 8 //Initialize loop counter
++
++FOR_ROW:
++
++ ldm r10, r0, r1, r2, r3 //Load 8 DCT-coeffisients from the current row in the DCT-block
++ mov r6, 0
++#ifdef USE_PREFETCH
++ pref r10[LINE_SIZE] //Prefetch next line
++#endif
++ or r4, r2, r3 << 16
++ or r4, r1 //Check if all DCT-coeffisients except the DC is zero
++ or r4, r0
++ brne AC_ROW //If there are non-zero AC coeffisients perform row-transform
++
++ paddsub.h r5, r3:t, r6:b //Extract the DC-coeff from r5
++ plsl.h r5, r5, PASS1_BITS
++ mov r4, r5
++ st.d r10++, r4
++ st.d r10++, r4
++
++ sub loop_cnt, 1 //Decrement loop counter
++ brne FOR_ROW //Perform loop one more time if loop_cnt is not zero
++
++ bral COLOUMN_TRANSFORM //Perform coloumn transform after row transform is computed
++
++
++AC_ROW:
++
++
++ ld.w r12, pc[coef_table - .]
++ ld.w r9, pc[coef_table - . + 4]
++
++ padd.h r4, r2, r0 // r4:t = dataptr[2] + dataptr[6],r4:b = dataptr[3] + dataptr[7]
++ mulhh.w r5, r4:t, r12:t
++ mulhh.w r6, r0:t, r12:b
++ ld.w r12, pc[coef_table - . + 8]
++ mulhh.w r7, r2:t, r9:t
++ add r6, r5 // tmp2
++ satrnds r6 >> (CONST_BITS - PASS1_BITS), 31
++ add r7, r5 // tmp3
++ satrnds r7 >> (CONST_BITS - PASS1_BITS), 31
++
++ paddsub.h r5, r3:t, r1:t
++ plsl.h r5, r5, PASS1_BITS // r5:t = tmp0, r5:b = tmp1
++
++ paddsub.h r7, r5:t, r7:b // r7:t = tmp10, r7:b = tmp13
++ paddsub.h r6, r5:b, r6:b // r6:t = tmp11, r6:b = tmp12
++
++
++ addhh.w lr, r3:b, r1:b // lr = z4
++ addhh.w r5, r4:b, lr:b
++ mulhh.w r5, r5:b, r9:b // r5 = z5
++
++ ld.w r9, pc[coef_table - . + 12]
++ mulhh.w r4, r4:b, r12:t // r4 = z3
++ mulhh.w lr, lr:b, r12:b // lr = z4
++
++ add r4, r5
++ add lr, r5
++
++ addhh.w r5, r2:b, r1:b // r5 = z2
++ addhh.w r8, r3:b, r0:b // r8 = z1
++
++
++ mulhh.w r0, r0:b, r9:t // r0 = tmp0
++ ld.w r12, pc[coef_table - . + 16]
++ mulhh.w r1, r1:b, r9:b // r1 = tmp1
++ ld.w r9, pc[coef_table - . + 20]
++ mulhh.w r2, r2:b, r12:t // r2 = tmp2
++ mulhh.w r3, r3:b, r12:b // r3 = tmp3
++ mulhh.w r8, r8:b, r9:t // r8 = z1
++ mulhh.w r5, r5:b, r9:b // r5 = z2
++
++
++ add r0, r8
++ add r0, r4
++ add r1, r5
++ add r1, lr
++ add r2, r5
++ add r2, r4
++ add r3, r8
++ add r3, lr
++
++ satrnds r0 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r1 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r2 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r3 >> (CONST_BITS - PASS1_BITS), 31
++
++ paddsub.h r5, r6:t, r2:b // r5:t = dataptr[1], r5:b = dataptr[6]
++ paddsub.h r4, r7:t, r3:b // r4:t = dataptr[0], r4:b = dataptr[7]
++ paddsub.h r3, r6:b, r1:b // r3:t = dataptr[2], r3:b = dataptr[5]
++ paddsub.h r2, r7:b, r0:b // r2:t = dataptr[3], r2:b = dataptr[4]
++
++ sthh.w r10[0], r4:t, r5:t
++ sthh.w r10[4], r3:t, r2:t
++ sthh.w r10[8], r2:b, r3:b
++ sthh.w r10[12], r5:b, r4:b
++
++
++
++ sub r10, -16
++ sub loop_cnt, 1
++ brne FOR_ROW, e
++
++COLOUMN_TRANSFORM:
++
++ sub r10, 128 //Set pointer to start of DCT block
++
++
++ mov loop_cnt, 8
++FOR_COLOUMN:
++ ldins.h r3:t,r10[0] // r3:t = dataptr[0]
++ ldins.h r1:t,r10[1*8*2]// r1:t = dataptr[1]
++ ldins.h r2:t,r10[2*8*2]// r2:t = dataptr[2]
++ ldins.h r0:t,r10[5*8*2]// r0:t = dataptr[5]
++ ldins.h r3:b,r10[4*8*2]// r3:b = dataptr[4]
++ ldins.h r1:b,r10[3*8*2]// r1:b = dataptr[3]
++ ldins.h r2:b,r10[6*8*2]// r2:b = dataptr[6]
++ ldins.h r0:b,r10[7*8*2]// r0:b = dataptr[7]
++
++ or r4, r1, r3 << 16
++ or r4, r2
++ or r4, r0
++ brne AC_COLOUMN //If there are non-zero AC coeffisients perform row-transform
++
++ lddsp r12, SP[0] // rfp
++ lddsp r9, SP[4] // iinc
++ satrnds r3 >> ( PASS1_BITS + 3 + 16 ), 9
++ ld.d r0, r12[0]
++ sub r10, -2 // Increment the dataptr
++ bfins r3, r3, 16, 16
++ punpckub.h r2, r1:t
++ padd.h r2, r2, r3
++ punpckub.h r1, r1:b
++ padd.h r1, r1, r3
++ packsh.ub r1, r2, r1
++ punpckub.h r2, r0:t
++ padd.h r2, r2, r3
++ punpckub.h r0, r0:b
++ padd.h r0, r0, r3
++ packsh.ub r0, r2, r0
++ st.d r12[0], r0
++ add r12, r9 // increment rfp
++ stdsp SP[0], r12
++
++ sub loop_cnt, 1//Decrement loop counter
++ brne FOR_COLOUMN//Perform loop one more time if loop_cnt is not zero
++
++ sub sp, -8
++ popm r0-r3, r4-r7, pc//Pop back registers and PC
++
++AC_COLOUMN:
++
++ ld.w r12, pc[coef_table - .]
++ ld.w r9, pc[coef_table - . + 4]
++
++ addhh.w r4, r2:t, r2:b
++ mulhh.w r4, r4:b, r12:t // r4 = z1
++ mulhh.w r5, r2:b, r12:b
++ ld.w r12, pc[coef_table - . + 8]
++ mulhh.w r6, r2:t, r9:t
++ add r5, r4 // r5 = tmp2
++ add r6, r4 // r6 = tmp3
++
++ addhh.w r7, r3:t, r3:b
++ subhh.w r8, r3:t, r3:b
++
++ lsl r7, CONST_BITS
++ lsl r8, CONST_BITS
++
++ add r2, r7, r6 // r2 = tmp10
++ sub r3, r7, r6 // r3 = tmp13
++ add r4, r8, r5 // r4 = tmp11
++ sub r5, r8, r5 // r5 = tmp12
++
++ padd.h r6, r0, r1 // r6:t = z4, r6:b = z3
++ addhh.w r7, r6:t, r6:b
++ mulhh.w r7, r7:b, r9:b // r7 = z5
++
++ ld.w r9, pc[coef_table - . + 12]
++ mulhh.w r8, r6:b, r12:t // r8 = z3
++ mulhh.w r6, r6:t, r12:b // r6 = z4
++
++ add r8, r7
++ add r6, r7
++
++ paddx.h r7, r0, r1 // r7:t = z2, r7:b = z1
++
++ mulhh.w r12, r0:b, r9:t // r12 = tmp0
++ mulhh.w r0, r0:t, r9:b // r0 = tmp1
++ ld.w r9, pc[coef_table - . + 16]
++ add r12, r8
++ add r0, r6
++
++ ld.w lr, pc[coef_table - . + 20]
++ machh.w r8, r1:b, r9:t // r8 = tmp2
++ machh.w r6, r1:t, r9:b // r6 = tmp3
++ mulhh.w r9, r7:b, lr:t // r9 = z1
++ mulhh.w r7, r7:t, lr:b // r7 = z2
++
++
++ add r12, r9
++ add r0, r7
++ add r8, r7
++ add r6, r9
++
++ add r1, r2, r6 // r1 = dataptr[DCTSIZE*0]
++ sub r2, r2, r6 // r2 = dataptr[DCTSIZE*7]
++ add r6, r4, r8 // r6 = dataptr[DCTSIZE*1]
++ sub r4, r4, r8 // r4 = dataptr[DCTSIZE*6]
++ add r8, r5, r0 // r8 = dataptr[DCTSIZE*2]
++ sub r5, r5, r0 // r5 = dataptr[DCTSIZE*5]
++ add r0, r3, r12 // r0 = dataptr[DCTSIZE*3]
++ sub r3, r3, r12 // r3 = dataptr[DCTSIZE*4]
++
++ satrnds r1 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r2 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r6 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r4 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r8 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r5 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r0 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r3 >> (CONST_BITS+PASS1_BITS+3), 9
++
++ packw.sh r1, r1, r6
++ packw.sh r8, r8, r0
++ packw.sh r3, r3, r5
++ packw.sh r4, r4, r2
++
++ lddsp r12, SP[0] // rfp
++ lddsp r9, SP[4] // iinc
++ ld.d r6, r12[0]
++ sub r10, -2 // Increment the dataptr
++ punpckub.h r0, r7:t
++ padd.h r1, r1, r0
++ punpckub.h r0, r7:b
++ padd.h r8, r8, r0
++ packsh.ub r7, r1, r8
++ punpckub.h r0, r6:t
++ padd.h r3, r3, r0
++ punpckub.h r0, r6:b
++ padd.h r4, r4, r0
++ packsh.ub r6, r3, r4
++ st.d r12[0], r6
++ add r12, r9 // increment rfp
++ stdsp SP[0], r12
++
++ sub loop_cnt, 1 //Decrement loop counter
++ brne FOR_COLOUMN //Perform loop one more time if loop_cnt is not zero
++
++ sub sp, -8
++ popm r0-r3, r4-r7, pc //Pop back registers and PC
++
++
++
++//Coeffisient Table:
++ .align 2
++coef_table:
++ .short FIX_0_541196100, -FIX_1_847759065, FIX_0_765366865, FIX_1_175875602
++ .short - FIX_1_961570560, - FIX_0_390180644, FIX_0_298631336, FIX_2_053119869
++ .short FIX_3_072711026, FIX_1_501321110, - FIX_0_899976223, - FIX_2_562915447
++
++
++idct_put_avr32:
++ pushm r0-r3, r4-r7, lr //Free up registers to use for local variables
++
++ //; Give room for some variables on the stack
++ sub sp, 8
++ stdsp SP[0], r12 // rfp
++ stdsp SP[4], r11 // iinc
++
++ mov loop_cnt, 8 //Initialize loop counter
++
++0:
++
++ ldm r10, r0, r1, r2, r3 //Load 8 DCT-coeffisients from the current row in the DCT-block
++ mov r6, 0
++#ifdef USE_PREFETCH
++ pref r10[LINE_SIZE] //Prefetch next line
++#endif
++ or r4, r2, r3 << 16
++ or r4, r1 //Check if all DCT-coeffisients except the DC is zero
++ or r4, r0
++ brne 1f //If there are non-zero AC coeffisients perform row-transform
++
++ paddsub.h r5, r3:t, r6:b //Extract the DC-coeff from r5
++ plsl.h r5, r5, PASS1_BITS
++ mov r4, r5
++ st.d r10++, r4
++ st.d r10++, r4
++
++ sub loop_cnt, 1 //Decrement loop counter
++ brne 0b //Perform loop one more time if loop_cnt is not zero
++
++ bral 2f //Perform coloumn transform after row transform is computed
++
++1:
++
++ ld.w r12, pc[coef_table_copy - .]
++ ld.w r9, pc[coef_table_copy - . + 4]
++
++ padd.h r4, r2, r0 // r4:t = dataptr[2] + dataptr[6],r4:b = dataptr[3] + dataptr[7]
++ mulhh.w r5, r4:t, r12:t
++ mulhh.w r6, r0:t, r12:b
++ ld.w r12, pc[coef_table_copy - . + 8]
++ mulhh.w r7, r2:t, r9:t
++ add r6, r5 // tmp2
++ satrnds r6 >> (CONST_BITS - PASS1_BITS), 31
++ add r7, r5 // tmp3
++ satrnds r7 >> (CONST_BITS - PASS1_BITS), 31
++
++ paddsub.h r5, r3:t, r1:t
++ plsl.h r5, r5, PASS1_BITS // r5:t = tmp0, r5:b = tmp1
++
++ paddsub.h r7, r5:t, r7:b // r7:t = tmp10, r7:b = tmp13
++ paddsub.h r6, r5:b, r6:b // r6:t = tmp11, r6:b = tmp12
++
++
++
++ addhh.w lr, r3:b, r1:b // lr = z4
++ addhh.w r5, r4:b, lr:b
++ mulhh.w r5, r5:b, r9:b // r5 = z5
++
++ ld.w r9, pc[coef_table_copy - . + 12]
++ mulhh.w r4, r4:b, r12:t // r4 = z3
++ mulhh.w lr, lr:b, r12:b // lr = z4
++
++ add r4, r5
++ add lr, r5
++
++ addhh.w r5, r2:b, r1:b // r5 = z2
++ addhh.w r8, r3:b, r0:b // r8 = z1
++
++
++ mulhh.w r0, r0:b, r9:t // r0 = tmp0
++ ld.w r12, pc[coef_table_copy - . + 16]
++ mulhh.w r1, r1:b, r9:b // r1 = tmp1
++ ld.w r9, pc[coef_table_copy - . + 20]
++ mulhh.w r2, r2:b, r12:t // r2 = tmp2
++ mulhh.w r3, r3:b, r12:b // r3 = tmp3
++ mulhh.w r8, r8:b, r9:t // r8 = z1
++ mulhh.w r5, r5:b, r9:b // r5 = z2
++
++
++ add r0, r8
++ add r0, r4
++ add r1, r5
++ add r1, lr
++ add r2, r5
++ add r2, r4
++ add r3, r8
++ add r3, lr
++
++ satrnds r0 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r1 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r2 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r3 >> (CONST_BITS - PASS1_BITS), 31
++
++ paddsub.h r5, r6:t, r2:b // r5:t = dataptr[1], r5:b = dataptr[6]
++ paddsub.h r4, r7:t, r3:b // r4:t = dataptr[0], r4:b = dataptr[7]
++ paddsub.h r3, r6:b, r1:b // r3:t = dataptr[2], r3:b = dataptr[5]
++ paddsub.h r2, r7:b, r0:b // r2:t = dataptr[3], r2:b = dataptr[4]
++
++ sthh.w r10[0], r4:t, r5:t
++ sthh.w r10[4], r3:t, r2:t
++ sthh.w r10[8], r2:b, r3:b
++ sthh.w r10[12], r5:b, r4:b
++
++
++
++ sub r10, -16
++ sub loop_cnt, 1
++ brne 0b
++
++2:
++
++ sub r10, 128 //Set pointer to start of DCT block
++
++ mov loop_cnt, 8
++
++0:
++ ldins.h r3:t,r10[0] // r3:t = dataptr[0]
++ ldins.h r1:t,r10[1*8*2]// r1:t = dataptr[1]
++ ldins.h r2:t,r10[2*8*2]// r2:t = dataptr[2]
++ ldins.h r0:t,r10[5*8*2]// r0:t = dataptr[5]
++ ldins.h r3:b,r10[4*8*2]// r3:b = dataptr[4]
++ ldins.h r1:b,r10[3*8*2]// r1:b = dataptr[3]
++ ldins.h r2:b,r10[6*8*2]// r2:b = dataptr[6]
++ ldins.h r0:b,r10[7*8*2]// r0:b = dataptr[7]
++
++ or r4, r1, r3 << 16
++ or r4, r2
++ or r4, r0
++ brne 1f //If there are non-zero AC coeffisients perform row-transform
++
++ lddsp r12, SP[0] // rfp
++ lddsp r9, SP[4] // iinc
++ satrnds r3 >> ( PASS1_BITS + 3 + 16 ), 31
++ packw.sh r3, r3, r3
++ packsh.ub r3, r3, r3
++ mov r2, r3
++ st.d r12[0], r2
++ add r12, r9 // increment rfp
++ sub r10, -2 // Increment the dataptr
++ stdsp SP[0], r12
++
++ sub loop_cnt, 1//Decrement loop counter
++ brne 0b //Perform loop one more time if loop_cnt is not zero
++
++ sub sp, -8
++ popm r0-r3, r4-r7, pc//Pop back registers and PC
++
++1:
++
++ ld.w r12, pc[coef_table_copy - .]
++ ld.w r9, pc[coef_table_copy - . + 4]
++
++ addhh.w r4, r2:t, r2:b
++ mulhh.w r4, r4:b, r12:t // r4 = z1
++ mulhh.w r5, r2:b, r12:b
++ ld.w r12, pc[coef_table_copy - . + 8]
++ mulhh.w r6, r2:t, r9:t
++ add r5, r4 // r5 = tmp2
++ add r6, r4 // r6 = tmp3
++
++ addhh.w r7, r3:t, r3:b
++ subhh.w r8, r3:t, r3:b
++
++ lsl r7, CONST_BITS
++ lsl r8, CONST_BITS
++
++ add r2, r7, r6 // r2 = tmp10
++ sub r3, r7, r6 // r3 = tmp13
++ add r4, r8, r5 // r4 = tmp11
++ sub r5, r8, r5 // r5 = tmp12
++
++
++ padd.h r6, r0, r1 // r6:t = z4, r6:b = z3
++ addhh.w r7, r6:t, r6:b
++ mulhh.w r7, r7:b, r9:b // r7 = z5
++
++ ld.w r9, pc[coef_table_copy - . + 12]
++ mulhh.w r8, r6:b, r12:t // r8 = z3
++ mulhh.w r6, r6:t, r12:b // r6 = z4
++
++ add r8, r7
++ add r6, r7
++
++ paddx.h r7, r0, r1 // r7:t = z2, r7:b = z1
++
++ mulhh.w r12, r0:b, r9:t // r12 = tmp0
++ mulhh.w r0, r0:t, r9:b // r0 = tmp1
++ ld.w r9, pc[coef_table_copy - . + 16]
++ add r12, r8
++ add r0, r6
++
++ ld.w lr, pc[coef_table_copy - . + 20]
++ machh.w r8, r1:b, r9:t // r8 = tmp2
++ machh.w r6, r1:t, r9:b // r6 = tmp3
++ mulhh.w r9, r7:b, lr:t // r9 = z1
++ mulhh.w r7, r7:t, lr:b // r7 = z2
++
++
++ add r12, r9
++ add r0, r7
++ add r8, r7
++ add r6, r9
++
++ add r1, r2, r6 // r1 = dataptr[DCTSIZE*0]
++ sub r2, r2, r6 // r2 = dataptr[DCTSIZE*7]
++ add r6, r4, r8 // r6 = dataptr[DCTSIZE*1]
++ sub r4, r4, r8 // r4 = dataptr[DCTSIZE*6]
++ add r8, r5, r0 // r8 = dataptr[DCTSIZE*2]
++ sub r5, r5, r0 // r5 = dataptr[DCTSIZE*5]
++ add r0, r3, r12 // r0 = dataptr[DCTSIZE*3]
++ sub r3, r3, r12 // r3 = dataptr[DCTSIZE*4]
++
++ satrnds r1 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r2 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r6 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r4 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r8 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r5 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r0 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r3 >> (CONST_BITS+PASS1_BITS+3), 9
++
++ packw.sh r1, r1, r6
++ packw.sh r8, r8, r0
++ packw.sh r3, r3, r5
++ packw.sh r4, r4, r2
++
++ packsh.ub r1, r1, r8
++ packsh.ub r0, r3, r4
++ lddsp r12, SP[0] // rfp
++ lddsp r9, SP[4] // iinc
++ st.d r12[0], r0
++ sub r10, -2 // Increment the dataptr
++ add r12, r9 // increment rfp
++ stdsp SP[0], r12
++
++ sub loop_cnt, 1 //Decrement loop counter
++ brne 0b //Perform loop one more time if loop_cnt is not zero
++
++ sub sp, -8
++ popm r0-r3, r4-r7, pc //Pop back registers and PC
++
++
++
++ .align 2
++coef_table_copy:
++ .short FIX_0_541196100, -FIX_1_847759065, FIX_0_765366865, FIX_1_175875602
++ .short - FIX_1_961570560, - FIX_0_390180644, FIX_0_298631336, FIX_2_053119869
++ .short FIX_3_072711026, FIX_1_501321110, - FIX_0_899976223, - FIX_2_562915447
++
++
++idct_avr32:
++ pushm r0-r3, r4-r7, lr //Free up registers to use for local variables
++
++ //; Give room for a temporary block on the stack
++ sub sp, 8*8*2
++
++ mov loop_cnt, 8 //Initialize loop counter
++
++0:
++
++ ldm r12++, r0, r1, r2, r3 //Load 8 DCT-coeffisients from the current row in the DCT-block
++ mov r6, 0
++#ifdef USE_PREFETCH
++ pref r12[LINE_SIZE] //Prefetch next line
++#endif
++ or r4, r2, r3 << 16
++ or r4, r1 //Check if all DCT-coeffisients except the DC is zero
++ or r4, r0
++ brne 1f //If there are non-zero AC coeffisients perform row-transform
++
++ paddsub.h r5, r3:t, r6:b //Extract the DC-coeff from r5
++ plsl.h r5, r5, PASS1_BITS
++ mov r4, r5
++ st.d sp++, r4
++ st.d sp++, r4
++
++ sub loop_cnt, 1 //Decrement loop counter
++ brne 0b //Perform loop one more time if loop_cnt is not zero
++
++ bral 2f //Perform coloumn transform after row transform is computed
++
++1:
++
++ ld.w r10, pc[coef_table_idct - .]
++ ld.w r9, pc[coef_table_idct - . + 4]
++
++ padd.h r4, r2, r0 // r4:t = dataptr[2] + dataptr[6],r4:b = dataptr[3] + dataptr[7]
++ mulhh.w r5, r4:t, r10:t
++ mulhh.w r6, r0:t, r10:b
++ ld.w r10, pc[coef_table_idct - . + 8]
++ mulhh.w r7, r2:t, r9:t
++ add r6, r5 // tmp2
++ satrnds r6 >> (CONST_BITS - PASS1_BITS), 31
++ add r7, r5 // tmp3
++ satrnds r7 >> (CONST_BITS - PASS1_BITS), 31
++
++ paddsub.h r5, r3:t, r1:t
++ plsl.h r5, r5, PASS1_BITS // r5:t = tmp0, r5:b = tmp1
++
++ paddsub.h r7, r5:t, r7:b // r7:t = tmp10, r7:b = tmp13
++ paddsub.h r6, r5:b, r6:b // r6:t = tmp11, r6:b = tmp12
++
++
++
++ addhh.w lr, r3:b, r1:b // lr = z4
++ addhh.w r5, r4:b, lr:b
++ mulhh.w r5, r5:b, r9:b // r5 = z5
++
++ ld.w r9, pc[coef_table_idct - . + 12]
++ mulhh.w r4, r4:b, r10:t // r4 = z3
++ mulhh.w lr, lr:b, r10:b // lr = z4
++
++ add r4, r5
++ add lr, r5
++
++ addhh.w r5, r2:b, r1:b // r5 = z2
++ addhh.w r8, r3:b, r0:b // r8 = z1
++
++
++ mulhh.w r0, r0:b, r9:t // r0 = tmp0
++ ld.w r10, pc[coef_table_idct - . + 16]
++ mulhh.w r1, r1:b, r9:b // r1 = tmp1
++ ld.w r9, pc[coef_table_idct - . + 20]
++ mulhh.w r2, r2:b, r10:t // r2 = tmp2
++ mulhh.w r3, r3:b, r10:b // r3 = tmp3
++ mulhh.w r8, r8:b, r9:t // r8 = z1
++ mulhh.w r5, r5:b, r9:b // r5 = z2
++
++
++ add r0, r8
++ add r0, r4
++ add r1, r5
++ add r1, lr
++ add r2, r5
++ add r2, r4
++ add r3, r8
++ add r3, lr
++
++ satrnds r0 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r1 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r2 >> (CONST_BITS - PASS1_BITS), 31
++ satrnds r3 >> (CONST_BITS - PASS1_BITS), 31
++
++ paddsub.h r5, r6:t, r2:b // r5:t = dataptr[1], r5:b = dataptr[6]
++ paddsub.h r4, r7:t, r3:b // r4:t = dataptr[0], r4:b = dataptr[7]
++ paddsub.h r3, r6:b, r1:b // r3:t = dataptr[2], r3:b = dataptr[5]
++ paddsub.h r2, r7:b, r0:b // r2:t = dataptr[3], r2:b = dataptr[4]
++
++ sthh.w sp[0], r4:t, r5:t
++ sthh.w sp[4], r3:t, r2:t
++ sthh.w sp[8], r2:b, r3:b
++ sthh.w sp[12], r5:b, r4:b
++
++
++
++ sub sp, -16
++ sub loop_cnt, 1
++ brne 0b
++
++2:
++
++ sub sp, 8*8*2 //Set pointer to start of DCT block
++ sub r12, 8*8*2 //Set pointer to start of DCT block
++
++ mov loop_cnt, 8
++
++0:
++ ldins.h r3:t,sp[0] // r3:t = dataptr[0]
++ ldins.h r1:t,sp[1*8*2]// r1:t = dataptr[1]
++ ldins.h r2:t,sp[2*8*2]// r2:t = dataptr[2]
++ ldins.h r0:t,sp[5*8*2]// r0:t = dataptr[5]
++ ldins.h r3:b,sp[4*8*2]// r3:b = dataptr[4]
++ ldins.h r1:b,sp[3*8*2]// r1:b = dataptr[3]
++ ldins.h r2:b,sp[6*8*2]// r2:b = dataptr[6]
++ ldins.h r0:b,sp[7*8*2]// r0:b = dataptr[7]
++
++ or r4, r1, r3 << 16
++ or r4, r2
++ or r4, r0
++ brne 1f //If there are non-zero AC coeffisients perform row-transform
++
++ satrnds r3 >> ( PASS1_BITS + 3 + 16 ), 31
++ packw.sh r3, r3, r3
++ mov r2, r3
++ st.d r12++, r2
++ st.d r12++, r2
++ sub sp, -2 // Increment the dataptr
++
++ sub loop_cnt, 1//Decrement loop counter
++ brne 0b //Perform loop one more time if loop_cnt is not zero
++
++ sub sp, -(8*8*2 - 8)
++ popm r0-r3, r4-r7, pc//Pop back registers and PC
++
++1:
++
++ ld.w r10, pc[coef_table_idct - .]
++ ld.w r9, pc[coef_table_idct - . + 4]
++
++ addhh.w r4, r2:t, r2:b
++ mulhh.w r4, r4:b, r10:t // r4 = z1
++ mulhh.w r5, r2:b, r10:b
++ ld.w r10, pc[coef_table_idct - . + 8]
++ mulhh.w r6, r2:t, r9:t
++ add r5, r4 // r5 = tmp2
++ add r6, r4 // r6 = tmp3
++
++ addhh.w r7, r3:t, r3:b
++ subhh.w r8, r3:t, r3:b
++
++ lsl r7, CONST_BITS
++ lsl r8, CONST_BITS
++
++ add r2, r7, r6 // r2 = tmp10
++ sub r3, r7, r6 // r3 = tmp13
++ add r4, r8, r5 // r4 = tmp11
++ sub r5, r8, r5 // r5 = tmp12
++
++
++ padd.h r6, r0, r1 // r6:t = z4, r6:b = z3
++ addhh.w r7, r6:t, r6:b
++ mulhh.w r7, r7:b, r9:b // r7 = z5
++
++ ld.w r9, pc[coef_table_idct - . + 12]
++ mulhh.w r8, r6:b, r10:t // r8 = z3
++ mulhh.w r6, r6:t, r10:b // r6 = z4
++
++ add r8, r7
++ add r6, r7
++
++ paddx.h r7, r0, r1 // r7:t = z2, r7:b = z1
++
++ mulhh.w r10, r0:b, r9:t // r10 = tmp0
++ mulhh.w r0, r0:t, r9:b // r0 = tmp1
++ ld.w r9, pc[coef_table_idct - . + 16]
++ add r10, r8
++ add r0, r6
++
++ ld.w lr, pc[coef_table_idct - . + 20]
++ machh.w r8, r1:b, r9:t // r8 = tmp2
++ machh.w r6, r1:t, r9:b // r6 = tmp3
++ mulhh.w r9, r7:b, lr:t // r9 = z1
++ mulhh.w r7, r7:t, lr:b // r7 = z2
++
++
++ add r10, r9
++ add r0, r7
++ add r8, r7
++ add r6, r9
++
++ add r1, r2, r6 // r1 = dataptr[DCTSIZE*0]
++ sub r2, r2, r6 // r2 = dataptr[DCTSIZE*7]
++ add r6, r4, r8 // r6 = dataptr[DCTSIZE*1]
++ sub r4, r4, r8 // r4 = dataptr[DCTSIZE*6]
++ add r8, r5, r0 // r8 = dataptr[DCTSIZE*2]
++ sub r5, r5, r0 // r5 = dataptr[DCTSIZE*5]
++ add r0, r3, r10 // r0 = dataptr[DCTSIZE*3]
++ sub r3, r3, r10 // r3 = dataptr[DCTSIZE*4]
++
++ satrnds r1 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r2 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r6 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r4 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r8 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r5 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r0 >> (CONST_BITS+PASS1_BITS+3), 9
++ satrnds r3 >> (CONST_BITS+PASS1_BITS+3), 9
++
++ packw.sh r7, r1, r6
++ packw.sh r6, r8, r0
++ packw.sh r5, r3, r5
++ packw.sh r4, r4, r2
++
++ stm r12, r4-r7
++ sub sp, -2 // Increment the dataptr
++ sub r12, -16
++
++ sub loop_cnt, 1 //Decrement loop counter
++ brne 0b //Perform loop one more time if loop_cnt is not zero
++
++ sub sp, -(8*8*2 - 8)
++ popm r0-r3, r4-r7, pc //Pop back registers and PC
++
++
++
++ .align 2
++coef_table_idct:
++ .short FIX_0_541196100, -FIX_1_847759065, FIX_0_765366865, FIX_1_175875602
++ .short - FIX_1_961570560, - FIX_0_390180644, FIX_0_298631336, FIX_2_053119869
++ .short FIX_3_072711026, FIX_1_501321110, - FIX_0_899976223, - FIX_2_562915447
++
+diff --git a/libavcodec/avr32/mc.S b/libavcodec/avr32/mc.S
+new file mode 100644
+index 0000000..07a002d
+--- /dev/null
++++ b/libavcodec/avr32/mc.S
+@@ -0,0 +1,434 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++
++
++ /* Macro for masking the lowest bit of each byte in a
++ packed word */
++ .macro packedmask1 reg, round
++ .if \round
++ and \reg, \reg, r8 >> 1
++ .else
++ and \reg, r8
++ .endif
++ .endm
++
++ /* Macro for 8 pixel wide horizontal and vertical interpolation functions */
++ .macro pixels8_hv round, put
++
++
++ pushm r0-r7, lr
++
++ /* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
++
++ /* Rounding immediate */
++ .if \round
++ mov r8, lo(0x02020202)
++ orh r8, hi(0x02020202)
++ .else
++ mov r8, lo(0x01010101)
++ orh r8, hi(0x01010101)
++ .endif
++ mov r7, 2
++
++ /* Pixel naming convention :
++
++ |-----------------------------------------------------|
++ | s00 | s01 | s02 | s03 | s04 | s05 | s06 | s07 | s08 |
++ |----d00---d01---d02---d03---d04---d05---d06---d07----|
++ | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 |
++ |-----------------------------------------------------|
++ */
++1:
++ ld.w r0, r11[0] // r0 = { s00, s01, s02, s03 }
++ ld.w r1, r11[1] // r1 = { s01, s02, s03, s04 }
++ mov lr, r9
++ eor r2, r0, r1
++ packedmask1 r2, \round
++ add r2, r8
++
++ paddh.ub r0, r0, r1 // r0 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
++
++ add r11, r10 // pixels += line_size
++ ld.w r1, r11[0] // r1 = { s10, s11, s12, s13 }
++ ld.w r3, r11[1] // r3 = { s11, s12, s13, s14 }
++0:
++ eor r5, r1, r3
++ packedmask1 r5, \round
++ add r2, r5
++
++ paddh.ub r1, r1, r3 // r1 = {(s10+s11)/2,(s11+s12)/2,(s12+s13)/2,(s13+s14)/2}
++ eor r6, r0, r1
++ packedmask1 r6, \round
++ add r2, r2, r6 << 1
++
++ ld.w r3, r11[r10] // r3 = { s00, s01, s02, s03 }
++ add r11, r10 // pixels += line_size
++ ld.w r4, r11[1] // r4 = { s01, s02, s03, s04 }
++
++ paddh.ub r0, r0, r1
++ plsr.b r2, r2, 2
++ padd.b r0, r0, r2 // r0 = { d00, d01, d02, d03 }
++
++ /* Next row */
++ .if \put
++ eor r2, r3, r4
++ packedmask1 r2, \round
++ add r2, r8
++ .else
++ ld.w r6, r12[0]
++ eor r2, r3, r4
++ packedmask1 r2, \round
++ add r2, r8
++ pavg.ub r0, r0, r6
++ .endif
++ st.w r12[0], r0 // Put data into the block
++
++ add r5, r2
++ paddh.ub r0, r3, r4 // r0 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
++
++ eor r6, r0, r1
++ packedmask1 r6, \round
++ add r5, r5, r6 << 1
++
++ .if \put
++ paddh.ub r1, r0, r1
++ plsr.b r5, r5, 2
++ padd.b r1, r1, r5 // r1 = { d10, d11, d12, d13 }
++ .else
++ ld.w r3, r12[r10]
++ paddh.ub r1, r0, r1
++ plsr.b r5, r5, 2
++ padd.b r1, r1, r5 // r1 = { d10, d11, d12, d13 }
++ pavg.ub r1, r1, r3
++ .endif
++
++ st.w r12[r10], r1 // Put data into the block
++
++
++ ld.w r1, r11[r10] // r1 = { s10, s11, s12, s13 }
++ add r11, r10 // pixels += line_size
++ ld.w r3, r11[1] // r3 = { s11, s12, s13, s14 }
++ add r12, r12, r10 << 1 // block += 2*line_size
++ sub lr, 2
++ brne 0b
++
++ mul r0, r10, r9 // r0 = line_size * h
++ rsub r0, r0, 4 // r0 = 4 - (line_size * h)
++ add r11, r0
++ sub r11, r10 // pixels += 4 - (line_size * (h+1))
++ add r12, r0 // pixels += 4 - (line_size * (h))
++ sub r7, 1
++ brne 1b
++
++ popm r0-r7, pc
++ .endm
++
++
++ /* Macro for 8 pixel wide vertical interpolation functions */
++
++ .macro pixels8_v round, put
++ pushm r4-r7,lr
++ /* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
++
++ /*
++ Pixel Naming Convention :
++ |-----------------------------------------------|
++ | s00 | s01 | s02 | s03 | s04 | s05 | s06 | s07 |
++ |-d00---d01---d02---d03---d04---d05---d06---d07-|
++ | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 |
++ |-----------------------------------------------|
++ */
++ ld.w r8, r11[r10] // r8 = { s10, s11, s12, s13 }
++ ld.w lr, r11++ // lr = { s00, s01, s02, s03 }, src += 4
++ ld.w r7, r11[0] // r7 = { s04, s05, s06, s07 }
++ ld.w r6, r11[r10] // r6 = { s14, s15, s16, s17 }
++ sub r10, 4 // stride -= 4
++ add r11, r11, r10 << 1 // src += 2*stride
++ sub r11, -4 // src += 4
++
++0:
++ .if \round
++ pavg.ub r5, r8, lr // r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
++ pavg.ub r4, r6, r7 // r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
++ .else
++ paddh.ub r5, r8, lr // r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
++ paddh.ub r4, r6, r7 // r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
++ .endif
++
++ .if \put
++ st.w r12++, r5 // *dst++ = { d00, d01, d02, d03 }
++ ld.w lr, r11++ // lr = { s10, s11, s12, s13 }, src += 4
++ st.w r12[0], r4 // *dst = { d04, d05, d06, d07 }
++ ld.w r7, r11[0] // r7 = { s14, s15, s16, s17 }
++ .else
++ ld.w lr, r12[0]
++ ld.w r7, r12[4]
++ pavg.ub r5, r5, lr
++ pavg.ub r4, r4, r7
++ st.w r12++, r5 // *dst++ = { d00, d01, d02, d03 }
++ ld.w lr, r11++ // lr = { s10, s11, s12, s13 }, src += 4
++ st.w r12[0], r4 // *dst = { d04, d05, d06, d07 }
++ ld.w r7, r11[0] // r7 = { s14, s15, s16, s17 }
++ .endif
++ add r11, r10 // src += stride
++#ifdef USE_PREFETCH
++ pref r11[0]
++#endif
++ add r12, r10 // dst += stride
++
++ .if \round
++ pavg.ub r5, r8, lr // r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
++ pavg.ub r4, r6, r7 // r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
++ .else
++ paddh.ub r5, r8, lr // r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
++ paddh.ub r4, r6, r7 // r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
++ .endif
++ .if \put
++ st.w r12++, r5 // *dst++ = { d00, d01, d02, d03 }
++ ld.w r8, r11++ // r8 = { s10, s11, s12, s13 }, src += 4
++ st.w r12[0], r4 // *dst = { d04, d05, d06, d07 }
++ ld.w r6, r11[0] // r6 = { s14, s15, s16, s17 }
++ .else
++ ld.w r8, r12[0]
++ ld.w r6, r12[4]
++ pavg.ub r5, r5, r8
++ pavg.ub r4, r4, r6
++ st.w r12++, r5 // *dst++ = { d00, d01, d02, d03 }
++ ld.w r8, r11++ // r8 = { s10, s11, s12, s13 }, src += 4
++ st.w r12[0], r4 // *dst = { d04, d05, d06, d07 }
++ ld.w r6, r11[0] // r6 = { s14, s15, s16, s17 }
++ .endif
++
++ add r11, r10 // src += stride
++#ifdef USE_PREFETCH
++ pref r11[0]
++#endif
++ add r12, r10 // dst += stride
++ sub r9, 2
++ brne 0b
++
++ popm r4-r7,pc
++ .endm
++
++ /* Macro for 8 pixel wide horizontal interpolation functions */
++
++ .macro pixels8_h round, put
++ pushm r4-r7, lr
++
++ /* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
++ /*
++ Pixel Naming Convention:
++ |--------------------------------------------------------------------|
++ | s00 d00 s01 d01 s02 d02 s03 d03 s04 d04 s05 d05 s06 d06 s07 d07 s08|
++ |------|-------|-------|-------|-------|-------|-------|-------|-----|
++ | s10 d10 s11 d11 s12 d12 s13 d13 s14 d14 s15 d15 s16 d16 s17 d17 s18|
++ |--------------------------------------------------------------------|
++ */
++
++ ld.w lr, r11[0] // lr = { s00, s01, s02, s03 }
++ ld.w r8, r11[1] // r8 = { s01, s02, s03, s04 }
++ ld.w r7, r11[4] // r7 = { s04, s05, s06, s07 }
++ ld.w r6, r11[5] // r6 = { s05, s06, s07, s08 }
++ add r11, r10 // src += stride
++
++0:
++ .if \round
++ pavg.ub lr, r8, lr // lr = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
++ pavg.ub r7, r6, r7 // r7 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
++ .else
++ paddh.ub lr, r8, lr // lr = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
++ paddh.ub r7, r6, r7 // r7 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
++ .endif
++ .if \put
++ ld.w r5, r11[0] // r5 = { s00, s01, s02, s03 }
++ ld.w r4, r11[1] // r4 = { s01, s02, s03, s04 }
++ .else
++ ld.w r8, r12[0]
++ ld.w r6, r12[4]
++ ld.w r5, r11[0] // r5 = { s00, s01, s02, s03 }
++ ld.w r4, r11[1] // r4 = { s01, s02, s03, s04 }
++ pavg.ub lr, lr, r8
++ pavg.ub r7, r7, r6
++ .endif
++ st.w r12[0], lr // dst = { d00, d01, d02, d03 }
++ st.w r12[4], r7 // dst = { d04, d05, d06, d07 }
++ ld.w r8, r11[4] // r8 = { s04, s05, s06, s07 }
++ ld.w r6, r11[5] // r6 = { s05, s06, s07, s08 }
++ add r11, r10 // src += stride
++#ifdef USE_PREFETCH
++ pref r11[0]
++#endif
++ add r12, r10 // dst += stride
++
++ .if \round
++ pavg.ub r5, r4, r5 // r5 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
++ pavg.ub r4, r6, r8 // r4 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
++ .else
++ paddh.ub r5, r4, r5 // r5 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
++ paddh.ub r4, r6, r8 // r4 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
++ .endif
++ .if \put
++ ld.w lr, r11[0] // lr = { s00, s01, s02, s03 }
++ ld.w r8, r11[1] // r8 = { s01, s02, s03, s04 }
++ .else
++ ld.w r7, r12[0]
++ ld.w r6, r12[4]
++ ld.w lr, r11[0] // lr = { s00, s01, s02, s03 }
++ ld.w r8, r11[1] // r8 = { s01, s02, s03, s04 }
++ pavg.ub r5, r5, r7
++ pavg.ub r4, r4, r6
++ .endif
++ st.w r12[0], r5 // dst = { d00, d01, d02, d03 }
++ st.w r12[4], r4 // dst = { d04, d05, d06, d07 }
++ ld.w r7, r11[4] // r7 = { s04, s05, s06, s07 }
++ ld.w r6, r11[5] // r6 = { s05, s06, s07, s08 }
++ add r11, r10 // src += stride
++#ifdef USE_PREFETCH
++ pref r11[0]
++#endif
++ add r12, r10 // dst += stride
++ sub r9, 2
++ brne 0b
++
++ popm r4-r7, pc
++ .endm
++
++ /* Macro for 8 pixel wide copy functions */
++ .macro pixels8 put
++ stm --sp, r3-r7,lr
++ /* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
++ mov lr, r9
++ sub r3, r10, 2 // stride2 = stride - 2
++0:
++ .if \put
++ ld.w r9, r11[r10] // r9 = { s10, s11, s12, s13 }
++ ld.w r7, r11++ // r7 = { s00, s01, s02, s03 }, src += 4
++ ld.w r6, r11[0] // r6 = { s04, s05, s06, s07 }
++ ld.w r8, r11[r10] // r8 = { s14, s15, s16, s17 }
++ .else
++ ld.w r9, r11[r10] // r9 = { s10, s11, s12, s13 }
++ ld.d r4, r12[0]
++ ld.w r7, r11++ // r7 = { s00, s01, s02, s03 }, src += 4
++ ld.w r6, r11[0] // r6 = { s04, s05, s06, s07 }
++ ld.w r8, r11[r10] // r8 = { s14, s15, s16, s17 }
++ pavg.ub r6, r6, r4
++ pavg.ub r7, r7, r5
++ ld.d r4, r12[r10]
++ .endif
++ st.d r12, r6 // *dst = { s00, s01, s02, s03, s04, s05, s06, s07 }
++ add r11, r11, r3 << 1 // src += stride2 * 2
++ .ifeq \put
++ pavg.ub r8, r8, r4
++ pavg.ub r9, r9, r5
++ .endif
++ st.d r12[r10 << 0], r8 // *(dst + stride) = { s10, s11, s12, s13, s14, s15, s16, s17 }
++ add r12, r12, r10 << 1 // dst += 2*stride
++ sub lr, 2
++ brne 0b
++ ldm sp++, r3-r7,pc
++
++ .endm
++
++ .global put_no_rnd_pixels8_hv_avr32
++ .text
++put_no_rnd_pixels8_hv_avr32:
++ pixels8_hv 0, 1
++
++ .global put_pixels8_hv_avr32
++ .text
++put_pixels8_hv_avr32:
++ pixels8_hv 1, 1
++
++ .global avg_no_rnd_pixels8_hv_avr32
++ .text
++avg_no_rnd_pixels8_hv_avr32:
++ pixels8_hv 0, 0
++
++ .global avg_pixels8_hv_avr32
++ .text
++avg_pixels8_hv_avr32:
++ pixels8_hv 1, 0
++
++ .global put_no_rnd_pixels8_v_avr32
++ .text
++put_no_rnd_pixels8_v_avr32:
++ pixels8_v 0, 1
++
++ .global put_pixels8_v_avr32
++ .text
++put_pixels8_v_avr32:
++ pixels8_v 1, 1
++
++ .global avg_no_rnd_pixels8_v_avr32
++ .text
++avg_no_rnd_pixels8_v_avr32:
++ pixels8_v 0, 0
++
++ .global avg_pixels8_v_avr32
++ .text
++avg_pixels8_v_avr32:
++ pixels8_v 1, 0
++
++ .global put_no_rnd_pixels8_h_avr32
++ .text
++put_no_rnd_pixels8_h_avr32:
++ pixels8_h 0, 1
++
++ .global put_pixels8_h_avr32
++ .text
++put_pixels8_h_avr32:
++ pixels8_h 1, 1
++
++ .global avg_no_rnd_pixels8_h_avr32
++ .text
++avg_no_rnd_pixels8_h_avr32:
++ pixels8_h 0, 0
++
++ .global avg_pixels8_h_avr32
++ .text
++avg_pixels8_h_avr32:
++ pixels8_h 1, 0
++
++ .global put_pixels8_avr32
++ .global put_no_rnd_pixels8_avr32
++ .text
++put_pixels8_avr32:
++put_no_rnd_pixels8_avr32:
++ pixels8 1
++
++ .global avg_no_rnd_pixels8_avr32
++ .global avg_pixels8_avr32
++ .text
++avg_pixels8_avr32:
++avg_no_rnd_pixels8_avr32:
++ pixels8 0
+diff --git a/libavcodec/avr32/pico.h b/libavcodec/avr32/pico.h
+new file mode 100644
+index 0000000..32201ba
+--- /dev/null
++++ b/libavcodec/avr32/pico.h
+@@ -0,0 +1,260 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++#ifndef __PICO_H__
++#define __PICO_H__
++
++
++
++/* Coprocessor Number */
++#define PICO_CPNO 1
++
++/* Pixel Coprocessor Register file */
++#define PICO_REGVECT_INPIX2 cr0
++#define PICO_REGVECT_INPIX1 cr1
++#define PICO_REGVECT_INPIX0 cr2
++#define PICO_REGVECT_OUTPIX2 cr3
++#define PICO_REGVECT_OUTPIX1 cr4
++#define PICO_REGVECT_OUTPIX0 cr5
++#define PICO_REGVECT_COEFF0_A cr6
++#define PICO_REGVECT_COEFF0_B cr7
++#define PICO_REGVECT_COEFF1_A cr8
++#define PICO_REGVECT_COEFF1_B cr9
++#define PICO_REGVECT_COEFF2_A cr10
++#define PICO_REGVECT_COEFF2_B cr11
++#define PICO_REGVECT_VMU0_OUT cr12
++#define PICO_REGVECT_VMU1_OUT cr13
++#define PICO_REGVECT_VMU2_OUT cr14
++#define PICO_REGVECT_CONFIG cr15
++
++#define PICO_INPIX2 0
++#define PICO_INPIX1 1
++#define PICO_INPIX0 2
++#define PICO_OUTPIX2 3
++#define PICO_OUTPIX1 4
++#define PICO_OUTPIX0 5
++#define PICO_COEFF0_A 6
++#define PICO_COEFF0_B 7
++#define PICO_COEFF1_A 8
++#define PICO_COEFF1_B 9
++#define PICO_COEFF2_A 10
++#define PICO_COEFF2_B 11
++#define PICO_VMU0_OUT 12
++#define PICO_VMU1_OUT 13
++#define PICO_VMU2_OUT 14
++#define PICO_CONFIG 15
++
++/* Config Register */
++#define PICO_COEFF_FRAC_BITS_OFFSET 0
++#define PICO_COEFF_FRAC_BITS_SIZE 4
++#define PICO_OFFSET_FRAC_BITS_OFFSET 4
++#define PICO_OFFSET_FRAC_BITS_SIZE 4
++#define PICO_INPUT_MODE_OFFSET 8
++#define PICO_INPUT_MODE_SIZE 2
++#define PICO_OUTPUT_MODE_OFFSET 10
++#define PICO_OUTPUT_MODE_SIZE 1
++
++struct pico_config_t {
++ unsigned int : 32 - PICO_OUTPUT_MODE_OFFSET - PICO_OUTPUT_MODE_SIZE;
++ unsigned int output_mode : PICO_OUTPUT_MODE_SIZE;
++ unsigned int input_mode : PICO_INPUT_MODE_SIZE;
++ unsigned int offset_frac_bits : PICO_OFFSET_FRAC_BITS_SIZE;
++ unsigned int coeff_frac_bits : PICO_COEFF_FRAC_BITS_SIZE;
++ int vmu2_out;
++ int vmu1_out;
++ int vmu0_out;
++ short coeff2_2;
++ short coeff2_3;
++ short coeff2_0;
++ short coeff2_1;
++ short coeff1_2;
++ short coeff1_3;
++ short coeff1_0;
++ short coeff1_1;
++ short coeff0_2;
++ short coeff0_3;
++ short coeff0_0;
++ short coeff0_1;
++};
++
++
++#define PICO_COEFF_FRAC_BITS(x) (x << PICO_COEFF_FRAC_BITS_OFFSET)
++#define PICO_OFFSET_FRAC_BITS(x) (x << PICO_OFFSET_FRAC_BITS_OFFSET)
++#define PICO_INPUT_MODE(x) (x << PICO_INPUT_MODE_OFFSET)
++#define PICO_OUTPUT_MODE(x) (x << PICO_OUTPUT_MODE_OFFSET)
++
++#define GET_PICO_COEFF_FRAC_BITS(x) ((x >> PICO_COEFF_FRAC_BITS_OFFSET)&((1 << PICO_COEFF_FRAC_BITS_SIZE)-1))
++#define GET_PICO_OFFSET_FRAC_BITS(x) ((x >> PICO_OFFSET_FRAC_BITS_OFFSET)&((1 << PICO_OFFSET_FRAC_BITS_SIZE)-1))
++#define GET_PICO_INPUT_MODE(x) ((x >> PICO_INPUT_MODE_OFFSET)&((1 << PICO_INPUT_MODE_SIZE)-1))
++#define GET_PICO_OUTPUT_MODE(x) ((x >> PICO_OUTPUT_MODE_OFFSET)&((1 << PICO_OUTPUT_MODE_SIZE)-1))
++
++enum pico_input_mode { PICO_TRANSFORMATION_MODE,
++ PICO_HOR_FILTER_MODE,
++ PICO_VERT_FILTER_MODE };
++
++enum pico_output_mode { PICO_PACKED_MODE,
++ PICO_PLANAR_MODE };
++
++/* Bits in coefficients */
++#define PICO_COEFF_BITS 12
++
++/* Operation bits */
++#define PICO_MATRIX (0)
++#define PICO_USE_ACC (1 << 2)
++#define PICO_SINGLE_VECTOR (1 << 3)
++
++
++#define __str(x...) #x
++#define __xstr(x...) __str(x)
++
++#define PICO_PUT_W(pico_reg, x) \
++ __builtin_mvrc_w(PICO_CPNO, pico_reg, x);
++#define PICO_GET_W(pico_reg) \
++ __builtin_mvcr_w(PICO_CPNO, pico_reg)
++
++#define PICO_MVCR_W(x, pico_reg) \
++ asm ("mvcr.w\tcp" __xstr(PICO_CPNO) ", %0, cr" __xstr(pico_reg) : "=r"(x));
++
++#define PICO_MVRC_W(pico_reg, x) \
++ asm ("mvrc.w\tcp" __xstr(PICO_CPNO) ", cr" __xstr(pico_reg) ", %0" :: "r"(x));
++
++#define PICO_PUT_D(pico_reg, x) \
++ __builtin_mvrc_d(PICO_CPNO, pico_reg, x);
++#define PICO_GET_D(pico_reg) \
++ __builtin_mvcr_d(PICO_CPNO, pico_reg)
++
++#define PICO_MVCR_D(x, pico_reg) \
++ asm volatile ("mvcr.d\tcp" __xstr(PICO_CPNO) ", %0, cr" __xstr(pico_reg) : "=r"(x));
++#define PICO_MVRC_D(pico_reg, x) \
++ asm volatile ("mvrc.d\tcp" __xstr(PICO_CPNO) ", cr" __xstr(pico_reg) ", %0" :: "r"(x));
++
++#define PICO_STCM_W(ptr, pico_regs...) \
++ asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++#define PICO_STCM_D(ptr, pico_regs...) \
++ asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++
++#define PICO_STCM_W_DEC(ptr, pico_regs...) \
++ asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs) : "+r"(ptr));
++#define PICO_STCM_D_DEC(ptr, pico_regs...) \
++ asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs) : "+r"(ptr));
++
++#define PICO_LDCM_W(ptr, pico_regs...) \
++ asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++#define PICO_LDCM_D(ptr, pico_regs...) \
++ asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++
++#define PICO_LDCM_W_INC(ptr, pico_regs...) \
++ asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs) : "+r"(ptr));
++#define PICO_LDCM_D_INC(ptr, pico_regs...) \
++ asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs) : "+r"(ptr));
++
++#define PICO_OP(op, dst_addr, addr0, addr1, addr2) \
++ __builtin_cop(PICO_CPNO, addr0, addr1, addr2, op | dst_addr);
++
++static inline void set_pico_config(struct pico_config_t *config){
++ PICO_LDCM_D(config,
++ PICO_REGVECT_COEFF0_A, PICO_REGVECT_COEFF0_B,
++ PICO_REGVECT_COEFF1_A, PICO_REGVECT_COEFF1_B,
++ PICO_REGVECT_COEFF2_A, PICO_REGVECT_COEFF2_B,
++ PICO_REGVECT_VMU0_OUT, PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT, PICO_REGVECT_CONFIG);
++}
++
++static inline void get_pico_config(struct pico_config_t *config){
++ PICO_STCM_D(config,
++ PICO_REGVECT_COEFF0_A, PICO_REGVECT_COEFF0_B,
++ PICO_REGVECT_COEFF1_A, PICO_REGVECT_COEFF1_B,
++ PICO_REGVECT_COEFF2_A, PICO_REGVECT_COEFF2_B,
++ PICO_REGVECT_VMU0_OUT, PICO_REGVECT_VMU1_OUT,
++ PICO_REGVECT_VMU2_OUT, PICO_REGVECT_CONFIG);
++}
++
++static inline void dump_pico_config(){
++ struct pico_config_t pico_config;
++ char *input_mode, *output_mode;
++ get_pico_config(&pico_config);
++
++
++ av_log(NULL, AV_LOG_INFO, "Dumping pico configuration:\n\n");
++ av_log(NULL, AV_LOG_INFO, "\tcoeff_frac_bits = %d\n", pico_config.coeff_frac_bits);
++ av_log(NULL, AV_LOG_INFO, "\toffset_frac_bits = %d\n", pico_config.offset_frac_bits);
++
++ switch ( pico_config.input_mode ){
++ case PICO_TRANSFORMATION_MODE:
++ input_mode = "Transformation Mode";
++ break;
++ case PICO_HOR_FILTER_MODE:
++ input_mode = "Horisontal Filter Mode";
++ break;
++ case PICO_VERT_FILTER_MODE:
++ input_mode = "Vertical Filter Mode";
++ break;
++ default:
++ input_mode = "Unknown Mode!!";
++ break;
++ }
++ av_log(NULL, AV_LOG_INFO, "\tinput_mode = %s\n", input_mode);
++
++ switch ( pico_config.output_mode ){
++ case PICO_PLANAR_MODE:
++ output_mode = "Planar Mode";
++ break;
++ case PICO_PACKED_MODE:
++ output_mode = "Packed Mode";
++ break;
++ default:
++ output_mode = "Unknown Mode!!";
++ break;
++ }
++
++ av_log(NULL, AV_LOG_INFO, "\toutput_mode = %s\n", output_mode);
++
++ av_log(NULL, AV_LOG_INFO, "\tCoeff0_0 = %f\n", (float)pico_config.coeff0_0/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff0_1 = %f\n", (float)pico_config.coeff0_1/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff0_2 = %f\n", (float)pico_config.coeff0_2/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff0_3 = %f\n", (float)pico_config.coeff0_3/(float)(1 << pico_config.offset_frac_bits));
++
++ av_log(NULL, AV_LOG_INFO, "\tCoeff1_0 = %f\n", (float)pico_config.coeff1_0/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff1_1 = %f\n", (float)pico_config.coeff1_1/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff1_2 = %f\n", (float)pico_config.coeff1_2/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff1_3 = %f\n", (float)pico_config.coeff1_3/(float)(1 << pico_config.offset_frac_bits));
++
++ av_log(NULL, AV_LOG_INFO, "\tCoeff2_0 = %f\n", (float)pico_config.coeff2_0/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff2_1 = %f\n", (float)pico_config.coeff2_1/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff2_2 = %f\n", (float)pico_config.coeff2_2/(float)(1 << pico_config.coeff_frac_bits));
++ av_log(NULL, AV_LOG_INFO, "\tCoeff2_3 = %f\n", (float)pico_config.coeff2_3/(float)(1 << pico_config.offset_frac_bits));
++}
++
++
++
++#endif
++
+diff --git a/libavcodec/bitstream.h b/libavcodec/bitstream.h
+index 26b4f8d..1f8fabf 100644
+--- a/libavcodec/bitstream.h
++++ b/libavcodec/bitstream.h
+@@ -171,7 +171,7 @@ typedef struct RL_VLC_ELEM {
+ #endif
+
+ /* used to avoid missaligned exceptions on some archs (alpha, ...) */
+-#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if defined(ARCH_X86) || defined(ARCH_X86_64) || defined(ARCH_AVR32)
+ # define unaligned16(a) (*(const uint16_t*)(a))
+ # define unaligned32(a) (*(const uint32_t*)(a))
+ # define unaligned64(a) (*(const uint64_t*)(a))
+@@ -813,6 +813,44 @@ void free_vlc(VLC *vlc);
+ * if the vlc code is invalid and max_depth>1 than the number of bits removed
+ * is undefined
+ */
++
++#if defined(ARCH_AVR32)
++#define GET_VLC(code, name, gb, table, bits, max_depth)\
++{\
++ int n, index, nb_bits;\
++ union { VLC_TYPE vlc[2];\
++ uint32_t u32; } table_elem;\
++\
++ index= SHOW_UBITS(name, gb, bits);\
++ table_elem.u32 = unaligned32(&table[index]); \
++ code = table_elem.vlc[0];\
++ n = table_elem.vlc[1];\
++\
++ if(max_depth > 1 && n < 0 ){\
++ LAST_SKIP_BITS(name, gb, bits)\
++ UPDATE_CACHE(name, gb)\
++\
++ nb_bits = -n;\
++\
++ index= SHOW_UBITS(name, gb, nb_bits) + code;\
++ table_elem.u32 = unaligned32(&table[index]); \
++ code = table_elem.vlc[0];\
++ n = table_elem.vlc[1];\
++ if(max_depth > 2 && n < 0){\
++ LAST_SKIP_BITS(name, gb, nb_bits)\
++ UPDATE_CACHE(name, gb)\
++\
++ nb_bits = -n;\
++\
++ index= SHOW_UBITS(name, gb, nb_bits) + code;\
++ code = table[index][0];\
++ n = table[index][1];\
++ }\
++ }\
++ SKIP_BITS(name, gb, n)\
++}
++
++#else
+ #define GET_VLC(code, name, gb, table, bits, max_depth)\
+ {\
+ int n, index, nb_bits;\
+@@ -821,7 +859,7 @@ void free_vlc(VLC *vlc);
+ code = table[index][0];\
+ n = table[index][1];\
+ \
+- if(max_depth > 1 && n < 0){\
++ if(max_depth > 1 && n < 0 ){\
+ LAST_SKIP_BITS(name, gb, bits)\
+ UPDATE_CACHE(name, gb)\
+ \
+@@ -843,7 +881,38 @@ void free_vlc(VLC *vlc);
+ }\
+ SKIP_BITS(name, gb, n)\
+ }
++#endif
+
++#if defined(ARCH_AVR32)
++#define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\
++{\
++ int n, index, nb_bits;\
++ union { RL_VLC_ELEM vlc;\
++ uint32_t u32; } table_elem;\
++\
++ index= SHOW_UBITS(name, gb, bits);\
++ table_elem.u32 = unaligned32(&table[index]); \
++ level = table_elem.vlc.level;\
++ n = table_elem.vlc.len;\
++\
++ if(max_depth > 1 && n < 0 ){\
++ SKIP_BITS(name, gb, bits)\
++ if(need_update){\
++ UPDATE_CACHE(name, gb)\
++ }\
++\
++ nb_bits = -n;\
++\
++ index= SHOW_UBITS(name, gb, nb_bits) + level;\
++ table_elem.u32 = unaligned32(&table[index]); \
++ level = table_elem.vlc.level;\
++ n = table_elem.vlc.len;\
++ }\
++ run= table_elem.vlc.run;\
++ SKIP_BITS(name, gb, n)\
++}
++
++#else
+ #define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\
+ {\
+ int n, index, nb_bits;\
+@@ -852,7 +921,7 @@ void free_vlc(VLC *vlc);
+ level = table[index].level;\
+ n = table[index].len;\
+ \
+- if(max_depth > 1 && n < 0){\
++ if(max_depth > 1 && n < 0 ){\
+ SKIP_BITS(name, gb, bits)\
+ if(need_update){\
+ UPDATE_CACHE(name, gb)\
+@@ -867,7 +936,7 @@ void free_vlc(VLC *vlc);
+ run= table[index].run;\
+ SKIP_BITS(name, gb, n)\
+ }
+-
++#endif
+
+ /**
+ * parses a vlc code, faster then get_vlc()
+diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c
+index 56c42b9..8fc10c6 100644
+--- a/libavcodec/dsputil.c
++++ b/libavcodec/dsputil.c
+@@ -4197,6 +4197,9 @@ void dsputil_init(DSPContext* c, AVCodecContext *avctx)
+ #ifdef ARCH_BFIN
+ dsputil_init_bfin(c,avctx);
+ #endif
++#ifdef ARCH_AVR32
++ dsputil_init_avr32(c,avctx);
++#endif
+
+ for(i=0; i<64; i++){
+ if(!c->put_2tap_qpel_pixels_tab[0][i])
+diff --git a/libavcodec/h264.c b/libavcodec/h264.c
+index 865e80a..8f7c3f1 100644
+--- a/libavcodec/h264.c
++++ b/libavcodec/h264.c
+@@ -3258,7 +3258,12 @@ static void free_tables(H264Context *h){
+
+ static void init_dequant8_coeff_table(H264Context *h){
+ int i,q,x;
++#ifdef ARCH_AVR32
++ const int transpose = 0;
++#else
+ const int transpose = (h->s.dsp.h264_idct8_add != ff_h264_idct8_add_c); //FIXME ugly
++#endif
++
+ h->dequant8_coeff[0] = h->dequant8_buffer[0];
+ h->dequant8_coeff[1] = h->dequant8_buffer[1];
+
+@@ -3281,7 +3286,13 @@ static void init_dequant8_coeff_table(H264Context *h){
+
+ static void init_dequant4_coeff_table(H264Context *h){
+ int i,j,q,x;
++ // Yes this is ugly as hell....
++#ifdef ARCH_AVR32
++ const int transpose = 0;
++#else
+ const int transpose = (h->s.dsp.h264_idct_add != ff_h264_idct_add_c); //FIXME ugly
++#endif
++
+ for(i=0; i<6; i++ ){
+ h->dequant4_coeff[i] = h->dequant4_buffer[i];
+ for(j=0; j<i; j++){
+@@ -4663,7 +4674,11 @@ static int decode_slice_header(H264Context *h){
+ if (MPV_common_init(s) < 0)
+ return -1;
+
++#ifdef ARCH_AVR32
++ if ( 1 ){
++#else
+ if(s->dsp.h264_idct_add == ff_h264_idct_add_c){ //FIXME little ugly
++#endif
+ memcpy(h->zigzag_scan, zigzag_scan, 16*sizeof(uint8_t));
+ memcpy(h-> field_scan, field_scan, 16*sizeof(uint8_t));
+ }else{
+diff --git a/libavutil/common.h b/libavutil/common.h
+index 3ae5971..7e52b90 100644
+--- a/libavutil/common.h
++++ b/libavutil/common.h
+@@ -283,23 +283,39 @@ static inline int mid_pred(int a, int b, int c)
+ * @param amax maximum value of the clip range
+ * @return cliped value
+ */
++#if defined(ARCH_AVR32)
++#define clip(a, amin, amax) \
++ ({ int __tmp__; \
++ asm ("min\t%0, %1, %2\n" \
++ "max\t%0, %0, %3\n" \
++ : "=&r"(__tmp__) : "r"(a), "r"(amax), "r"(amin)); \
++ __tmp__; })
++#else
+ static inline int clip(int a, int amin, int amax)
+ {
+ if (a < amin) return amin;
+ else if (a > amax) return amax;
+ else return a;
+ }
++#endif
+
+ /**
+ * clip a signed integer value into the 0-255 range
+ * @param a value to clip
+ * @return cliped value
+ */
++#if defined(ARCH_AVR32)
++#define clip_uint8(a) \
++ ({ int __tmp__ = a; \
++ asm ("satu\t%0 >> 0, 8" : "+r"(__tmp__)); \
++ __tmp__; })
++#else
+ static inline uint8_t clip_uint8(int a)
+ {
+ if (a&(~255)) return (-a)>>31;
+ else return a;
+ }
++#endif
+
+ /* math */
+ int64_t ff_gcd(int64_t a, int64_t b);
+diff --git a/libavutil/internal.h b/libavutil/internal.h
+index 285d304..a8b0718 100644
+--- a/libavutil/internal.h
++++ b/libavutil/internal.h
+@@ -210,6 +210,15 @@ if((y)<(x)){\
+ }\
+ }
+
++/* XXX: Hack for uclibc which declares lrintf but does not implement it... */
++#ifdef ARCH_AVR32
++#undef HAVE_LRINTF
++#define HAVE_LRINTF 1
++#define lrintf(x) rint(x)
++#define llrint(x) (long long)rint(x)
++#endif
++
++
+ #ifndef HAVE_LRINTF
+ /* XXX: add ISOC specific test to avoid specific BSD testing. */
+ /* better than nothing implementation. */
+diff --git a/libfaad2/common.h b/libfaad2/common.h
+index f809042..6c5fb21 100644
+--- a/libfaad2/common.h
++++ b/libfaad2/common.h
+@@ -67,7 +67,7 @@ extern "C" {
+ /* Use if target platform has address generators with autoincrement */
+ //#define PREFER_POINTERS
+
+-#if defined(_WIN32_WCE) || defined(__arm__)
++#if defined(_WIN32_WCE) || defined(__arm__) || defined(__avr32__)
+ #define FIXED_POINT
+ #endif
+
+diff --git a/libmpcodecs/ad_libmad.c b/libmpcodecs/ad_libmad.c
+index 076359a..51b77fe 100644
+--- a/libmpcodecs/ad_libmad.c
++++ b/libmpcodecs/ad_libmad.c
+@@ -86,6 +86,11 @@ static int init(sh_audio_t *sh){
+ sh->channels=(this->frame.header.mode == MAD_MODE_SINGLE_CHANNEL) ? 1 : 2;
+ sh->samplerate=this->frame.header.samplerate;
+ sh->i_bps=this->frame.header.bitrate/8;
++#ifdef WORDS_BIGENDIAN
++ sh->sample_format = AF_FORMAT_S16_BE;
++#else
++ sh->sample_format = AF_FORMAT_S16_LE;
++#endif
+ sh->samplesize=2;
+
+ return 1;
+diff --git a/libswscale/pico-avr32.h b/libswscale/pico-avr32.h
+new file mode 100644
+index 0000000..7ac6200
+--- /dev/null
++++ b/libswscale/pico-avr32.h
+@@ -0,0 +1,137 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++#ifndef __PICO_H__
++#define __PICO_H__
++
++/* Coprocessor Number */
++#define PICO_CPNO 1
++
++/* Pixel Coprocessor Register file */
++#define PICO_REGVECT_INPIX2 cr0
++#define PICO_REGVECT_INPIX1 cr1
++#define PICO_REGVECT_INPIX0 cr2
++#define PICO_REGVECT_OUTPIX2 cr3
++#define PICO_REGVECT_OUTPIX1 cr4
++#define PICO_REGVECT_OUTPIX0 cr5
++#define PICO_REGVECT_COEFF0_A cr6
++#define PICO_REGVECT_COEFF0_B cr7
++#define PICO_REGVECT_COEFF1_A cr8
++#define PICO_REGVECT_COEFF1_B cr9
++#define PICO_REGVECT_COEFF2_A cr10
++#define PICO_REGVECT_COEFF2_B cr11
++#define PICO_REGVECT_VMU0_OUT cr12
++#define PICO_REGVECT_VMU1_OUT cr13
++#define PICO_REGVECT_VMU2_OUT cr14
++#define PICO_REGVECT_CONFIG cr15
++
++#define PICO_INPIX2 0
++#define PICO_INPIX1 1
++#define PICO_INPIX0 2
++#define PICO_OUTPIX2 3
++#define PICO_OUTPIX1 4
++#define PICO_OUTPIX0 5
++#define PICO_COEFF0_A 6
++#define PICO_COEFF0_B 7
++#define PICO_COEFF1_A 8
++#define PICO_COEFF1_B 9
++#define PICO_COEFF2_A 10
++#define PICO_COEFF2_B 11
++#define PICO_VMU0_OUT 12
++#define PICO_VMU1_OUT 13
++#define PICO_VMU2_OUT 14
++#define PICO_CONFIG 15
++
++/* Config Register */
++#define PICO_COEFF_FRAC_BITS 0
++#define PICO_COEFF_FRAC_BITS_WIDTH 4
++#define PICO_OFFSET_FRAC_BITS 4
++#define PICO_OFFSET_FRAC_BITS_WIDTH 4
++#define PICO_INPUT_MODE 8
++#define PICO_INPUT_MODE_WIDTH 2
++#define PICO_OUTPUT_MODE 10
++
++#define PICO_TRANSFORMATION_MODE 0
++#define PICO_HOR_FILTER_MODE 1
++#define PICO_VERT_FILTER_MODE 2
++
++#define PICO_PLANAR_MODE 1
++#define PICO_PACKED_MODE 0
++
++/* Bits in coefficients */
++#define PICO_COEFF_BITS 12
++
++/* Operation bits */
++#define PICO_USE_ACC (1 << 2)
++#define PICO_SINGLE_VECTOR (1 << 3)
++
++
++#define __str(x...) #x
++#define __xstr(x...) __str(x)
++
++#define PICO_PUT_W(pico_reg, x) \
++ __builtin_mvrc_w(PICO_CPNO, pico_reg, x);
++#define PICO_GET_W(pico_reg) \
++ __builtin_mvcr_w(PICO_CPNO, pico_reg)
++
++#define PICO_PUT_D(pico_reg, x) \
++ __builtin_mvrc_d(PICO_CPNO, pico_reg, x);
++#define PICO_GET_D(pico_reg) \
++ __builtin_mvcr_d(PICO_CPNO, pico_reg)
++
++
++#define PICO_STCM_W(ptr, pico_regs...) \
++ asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++#define PICO_STCM_D(ptr, pico_regs...) \
++ asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++
++#define PICO_STCM_W_DEC(ptr, pico_regs...) \
++ asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs) : "+r"(ptr));
++#define PICO_STCM_D_DEC(ptr, pico_regs...) \
++ asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs) : "+r"(ptr));
++
++#define PICO_LDCM_W(ptr, pico_regs...) \
++ asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++#define PICO_LDCM_D(ptr, pico_regs...) \
++ asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs) :: "r"(ptr));
++
++#define PICO_LDCM_W_INC(ptr, pico_regs...) \
++ asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs) : "+r"(ptr));
++#define PICO_LDCM_D_INC(ptr, pico_regs...) \
++ asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs) : "+r"(ptr));
++
++#define PICO_OP(op, dst_addr, addr0, addr1, addr2) \
++ __builtin_cop(PICO_CPNO, addr0, addr1, addr2, op | dst_addr);
++
++
++#endif
++
+diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h
+index ecd28f5..3221d0c 100644
+--- a/libswscale/swscale_internal.h
++++ b/libswscale/swscale_internal.h
+@@ -173,7 +173,7 @@ typedef struct SwsContext{
+ SwsFunc yuv2rgb_get_func_ptr (SwsContext *c);
+ int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation);
+
+-char *sws_format_name(int format);
++char *sws_format_name(enum PixelFormat format);
+
+ //FIXME replace this with something faster
+ #define isPlanarYUV(x) ((x)==PIX_FMT_YUV410P || (x)==PIX_FMT_YUV420P \
+diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c
+index 71759bc..fa83985 100644
+--- a/libswscale/yuv2rgb.c
++++ b/libswscale/yuv2rgb.c
+@@ -44,6 +44,10 @@
+ #include "yuv2rgb_mlib.c"
+ #endif
+
++#ifdef ARCH_AVR32
++#include "yuv2rgb_avr32.c"
++#endif
++
+ #define DITHER1XBPP // only for mmx
+
+ const uint8_t __attribute__((aligned(8))) dither_2x2_4[2][8]={
+@@ -601,6 +605,12 @@ SwsFunc yuv2rgb_get_func_ptr (SwsContext *c)
+ if(t) return t;
+ }
+ #endif
++#ifdef ARCH_AVR32
++ {
++ SwsFunc t= yuv2rgb_init_avr32(c);
++ if(t) return t;
++ }
++#endif
+ #ifdef HAVE_ALTIVEC
+ if (c->flags & SWS_CPU_CAPS_ALTIVEC)
+ {
+@@ -678,6 +688,10 @@ int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange,
+ //printf("%lld %lld %lld %lld %lld\n", cy, crv, cbu, cgu, cgv);
+ oy -= 256*brightness;
+
++#ifdef ARCH_AVR32
++ yuv2rgb_c_init_tables_avr32 (c, inv_table, fullRange, brightness, contrast, saturation);
++#endif
++
+ for (i = 0; i < 1024; i++) {
+ int j;
+
+diff --git a/libswscale/yuv2rgb_avr32.c b/libswscale/yuv2rgb_avr32.c
+new file mode 100644
+index 0000000..4a8341e
+--- /dev/null
++++ b/libswscale/yuv2rgb_avr32.c
+@@ -0,0 +1,416 @@
++/*
++ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above
++ * copyright notice, this list of conditions and the following
++ * disclaimer in the documentation and/or other materials provided
++ * with the distribution.
++ *
++ * 3. The name of ATMEL may not be used to endorse or promote products
++ * derived from this software without specific prior written
++ * permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
++ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ * DAMAGE.
++ */
++#include "pico-avr32.h"
++
++
++#define RGB(uv_part) \
++ __asm__ volatile ( \
++ "ld.w\t%0, %3[%7:" uv_part " << 2]\n\t" /* tmp = c->table_gV[V] */ \
++ "ld.w\t%1, %4[%8:" uv_part " << 2]\n\t" /* g = c->table_gU[U] */ \
++ "ld.w\t%2, %5[%8:" uv_part " << 2]\n\t" /* b = c->table_bU[U] */ \
++ "add\t%1, %0\n\t" /* g += tmp */\
++ "ld.w\t%0, %6[%7:" uv_part " << 2]" /* r = c->table_rV[V] */ \
++ : "=&r" (r), "=&r" (g), "=&r" (b) \
++ : "r" (&c->table_gV[0]), "r" (&c->table_gU[0]),"r" (&c->table_bU[0]), \
++ "r" (&c->table_rV[0]), "r" (V), "r" (U));
++
++
++#undef YUV2RGB1
++#define YUV2RGB1(dst, src, y, idx) \
++ { int tmp2; __asm__ volatile ( \
++ "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 0], %1\n\t" /* dst_1[2] = tmp; */ \
++ "st.b\t%7[6*%8 + 1], %2\n\t" /* dst_1[1] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "st.b\t%7[6*%8 + 2], %1\n\t" /* dst_1[0] = tmp; */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 3], %1\n\t" /* dst_1[5] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 4], %2\n\t" /* dst_1[4] = tmp; */ \
++ "st.b\t%7[6*%8 + 5], %1" /* dst_1[3] = tmp; */ \
++ : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
++ : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
++
++#undef YUV2RGB2
++#define YUV2RGB2(dst, src, y, idx) \
++ { int tmp2; __asm__ volatile ( \
++ "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 0], %1\n\t" /* dst_1[2] = tmp; */ \
++ "st.b\t%7[6*%8 + 1], %2\n\t" /* dst_1[1] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "st.b\t%7[6*%8 + 2], %1\n\t" /* dst_1[0] = tmp; */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 3], %1\n\t" /* dst_1[5] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 4], %2\n\t" /* dst_1[4] = tmp; */ \
++ "st.b\t%7[6*%8 + 5], %1" /* dst_1[3] = tmp; */ \
++ : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
++ : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
++
++
++#undef YUV2BGR1
++#define YUV2BGR1(dst, src, y, idx) \
++ { int tmp2; __asm__ volatile ( \
++ "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 2], %1\n\t" /* dst_1[2] = tmp; */ \
++ "st.b\t%7[6*%8 + 1], %2\n\t" /* dst_1[1] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "st.b\t%7[6*%8 + 0], %1\n\t" /* dst_1[0] = tmp; */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 5], %1\n\t" /* dst_1[5] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 4], %2\n\t" /* dst_1[4] = tmp; */ \
++ "st.b\t%7[6*%8 + 3], %1" /* dst_1[3] = tmp; */ \
++ : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
++ : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
++
++#undef YUV2BGR2
++#define YUV2BGR2(dst, src, y, idx) \
++ { int tmp2; __asm__ volatile ( \
++ "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 2], %1\n\t" /* dst_1[2] = tmp; */ \
++ "st.b\t%7[6*%8 + 1], %2\n\t" /* dst_1[1] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
++ "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
++ "st.b\t%7[6*%8 + 0], %1\n\t" /* dst_1[0] = tmp; */ \
++ "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
++ "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 5], %1\n\t" /* dst_1[5] = tmp; */ \
++ "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
++ "st.b\t%7[6*%8 + 4], %2\n\t" /* dst_1[4] = tmp; */ \
++ "st.b\t%7[6*%8 + 3], %1" /* dst_1[3] = tmp; */ \
++ : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
++ : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
++
++
++
++int yuv2bgr24_avr32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
++ int srcSliceH, uint8_t* dst[], int dstStride[]){
++ int y;
++
++ if(c->srcFormat == PIX_FMT_YUV422P){
++ srcStride[1] *= 2;
++ srcStride[2] *= 2;
++ }
++
++
++ for(y=0; y<srcSliceH; y+=2){
++ uint8_t *dst_1= (uint8_t*)(dst[0] + (y+srcSliceY )*dstStride[0]);
++ uint8_t *dst_2= (uint8_t*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);
++ uint32_t *r, *g, *b;
++ uint8_t *py_1= src[0] + y*srcStride[0];
++ uint8_t *py_2= py_1 + srcStride[0];
++ uint8_t *pu= src[1] + (y>>1)*srcStride[1];
++ uint8_t *pv= src[2] + (y>>1)*srcStride[2];
++ unsigned int h_size= c->dstW>>3;
++ while (h_size--) {
++ uint32_t U, V, Y1, Y2, tmp;
++ U = ((uint32_t*)pu)[0];
++ V = ((uint32_t*)pv)[0];
++
++ RGB("t")
++ YUV2BGR1(dst_1, py_1, Y1, 0)
++ YUV2BGR1(dst_2, py_2, Y2, 0)
++
++ RGB("u")
++ YUV2BGR2(dst_1, py_1, Y1, 1)
++ YUV2BGR2(dst_2, py_2, Y2, 1)
++
++ RGB("l")
++ YUV2BGR1(dst_1, py_1, Y1, 2)
++ YUV2BGR1(dst_2, py_2, Y2, 2)
++
++ RGB("b")
++ YUV2BGR2(dst_1, py_1, Y1, 3)
++ YUV2BGR2(dst_2, py_2, Y2, 3)
++
++
++
++ pu += 4;
++ pv += 4;
++ py_1 += 8;
++ py_2 += 8;
++ dst_1 += 24;
++ dst_2 += 24;
++ }
++ }
++ return srcSliceH;
++}
++
++
++
++static int yuv2rgb24_avr32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
++ int srcSliceH, uint8_t* dst[], int dstStride[]){
++ int y;
++
++ if(c->srcFormat == PIX_FMT_YUV422P){
++ srcStride[1] *= 2;
++ srcStride[2] *= 2;
++ }
++ for(y=0; y<srcSliceH; y+=2){
++ uint8_t *dst_1= (uint8_t*)(dst[0] + (y+srcSliceY )*dstStride[0]);
++ uint8_t *dst_2= (uint8_t*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);
++ uint8_t *r, *g, *b;
++ uint8_t *py_1= src[0] + y*srcStride[0];
++ uint8_t *py_2= py_1 + srcStride[0];
++ uint8_t *pu= src[1] + (y>>1)*srcStride[1];
++ uint8_t *pv= src[2] + (y>>1)*srcStride[2];
++ unsigned int h_size= c->dstW>>3;
++ while (h_size--) {
++ uint32_t U, V, Y1, Y2, tmp;
++ U = ((uint32_t*)pu)[0];
++ V = ((uint32_t*)pv)[0];
++
++ RGB("t")
++ YUV2RGB1(dst_1, py_1, Y1, 0)
++ YUV2RGB1(dst_2, py_2, Y2, 0)
++
++ RGB("u")
++ YUV2RGB2(dst_1, py_1, Y1, 1)
++ YUV2RGB2(dst_2, py_2, Y2, 1)
++
++ RGB("l")
++ YUV2RGB1(dst_1, py_1, Y1, 2)
++ YUV2RGB1(dst_2, py_2, Y2, 2)
++
++ RGB("b")
++ YUV2RGB2(dst_1, py_1, Y1, 3)
++ YUV2RGB2(dst_2, py_2, Y2, 3)
++
++ pu += 4;
++ pv += 4;
++ py_1 += 8;
++ py_2 += 8;
++ dst_1 += 24;
++ dst_2 += 24;
++ }
++ }
++ return srcSliceH;
++}
++
++#define SCALE(x, bits) (((x) + ( 1 << (bits - 1))) >> bits)
++#define COEFF_FRAC_BITS 9
++#define OFFSET_FRAC_BITS 2
++
++/* Coefficients used in the pico */
++static struct {
++ short coeff2_2;
++ short coeff2_3;
++ short coeff2_0;
++ short coeff2_1;
++ short coeff1_2;
++ short coeff1_3;
++ short coeff1_0;
++ short coeff1_1;
++ short coeff0_2;
++ short coeff0_3;
++ short coeff0_0;
++ short coeff0_1;
++} pico_coeff;
++
++
++static int yuv2bgr24_avr32_pico(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
++ int srcSliceH, uint8_t* dst[], int dstStride[]){
++ int y;
++ static int first_time = 1;
++
++ /* Initialize pico */
++ PICO_LDCM_D(&pico_coeff,
++ PICO_REGVECT_COEFF0_A, PICO_REGVECT_COEFF0_B,
++ PICO_REGVECT_COEFF1_A, PICO_REGVECT_COEFF1_B,
++ PICO_REGVECT_COEFF2_A, PICO_REGVECT_COEFF2_B);
++
++ PICO_PUT_W(PICO_CONFIG,
++ (PICO_PACKED_MODE << PICO_OUTPUT_MODE
++ | PICO_TRANSFORMATION_MODE << PICO_INPUT_MODE
++ | OFFSET_FRAC_BITS << PICO_OFFSET_FRAC_BITS
++ | COEFF_FRAC_BITS << PICO_COEFF_FRAC_BITS));
++
++
++ if(c->srcFormat == PIX_FMT_YUV422P){
++ srcStride[1] *= 2;
++ srcStride[2] *= 2;
++ }
++
++ for(y=0; y<srcSliceH; y+=2){
++ uint8_t *dst_1= (uint8_t*)(dst[0] + (y+srcSliceY )*dstStride[0]);
++ uint8_t *dst_2= (uint8_t*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);
++ uint8_t *r, *g, *b;
++ uint8_t *py_1= src[0] + y*srcStride[0];
++ uint8_t *py_2= py_1 + srcStride[0];
++ uint8_t *pu= src[1] + (y>>1)*srcStride[1];
++ uint8_t *pv= src[2] + (y>>1)*srcStride[2];
++ unsigned int h_size= c->dstW>>3;
++ int *py_1_int = (int *)py_1;
++ int *py_2_int = (int *)py_2;
++ int *pu_int = (int *)pu;
++ int *pv_int = (int *)pv;
++ while (h_size--) {
++ PICO_PUT_W(PICO_INPIX0, *py_1_int++);
++ PICO_PUT_W(PICO_INPIX1, *pu_int++);
++ PICO_PUT_W(PICO_INPIX2, *pv_int++);
++ PICO_OP(0, 0, 0, 4, 8);
++ PICO_OP(0, 1, 1, 4, 8);
++ PICO_OP(0, 2, 2, 5, 9);
++ PICO_OP(0, 3, 3, 5, 9);
++ PICO_PUT_W(PICO_INPIX0, *py_1_int++);
++ PICO_STCM_W(dst_1, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
++ PICO_OP(0, 0, 0, 6, 10);
++ PICO_OP(0, 1, 1, 6, 10);
++ PICO_OP(0, 2, 2, 7, 11);
++ PICO_OP(0, 3, 3, 7, 11);
++ PICO_PUT_W(PICO_INPIX0, *py_2_int++);
++ PICO_STCM_W(dst_1 + 12, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
++
++ PICO_OP(0, 0, 0, 4, 8);
++ PICO_OP(0, 1, 1, 4, 8);
++ PICO_OP(0, 2, 2, 5, 9);
++ PICO_OP(0, 3, 3, 5, 9);
++ PICO_PUT_W(PICO_INPIX0, *py_2_int++);
++ PICO_STCM_W(dst_2, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
++ PICO_OP(0, 0, 0, 6, 10);
++ PICO_OP(0, 1, 1, 6, 10);
++ PICO_OP(0, 2, 2, 7, 11);
++ PICO_OP(0, 3, 3, 7, 11);
++ PICO_STCM_W(dst_2 + 12, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
++
++ dst_1 += 24;
++ dst_2 += 24;
++ }
++ }
++ return srcSliceH;
++}
++
++extern int avr32_use_pico;
++
++SwsFunc yuv2rgb_init_avr32 (SwsContext *c){
++ switch(c->dstFormat){
++ case PIX_FMT_BGR24:
++ {
++ if ( avr32_use_pico ){
++ MSG_ERR("AVR32 BGR24: Using PICO for color space conversion\n");
++ return yuv2bgr24_avr32_pico;
++ } else {
++ MSG_ERR("AVR32 BGR24: Using optimized color space conversion\n");
++ return yuv2bgr24_avr32;
++ }
++ }
++ break;
++ case PIX_FMT_RGB24:
++ {
++ if ( avr32_use_pico ){
++ MSG_ERR("AVR32 RGB24: Using PICO for color space conversion\n");
++ return yuv2bgr24_avr32_pico;
++ } else {
++ MSG_ERR("AVR32 RGB24: Using optimized color space conversion\n");
++ return yuv2rgb24_avr32;
++ }
++ }
++ }
++ return NULL;
++}
++
++
++int yuv2rgb_c_init_tables_avr32 (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation){
++ const int isRgb = (c->dstFormat == PIX_FMT_RGB24);
++
++ int64_t crv = inv_table[0];
++ int64_t cbu = inv_table[1];
++ int64_t cgu = -inv_table[2];
++ int64_t cgv = -inv_table[3];
++ int64_t cy = 1<<16;
++ int64_t oy = 0;
++
++ if(!fullRange){
++ cy= (cy*255) / 219;
++ oy= 16<<16;
++ }
++
++ cy = (cy *contrast )>>16;
++ crv= (crv*contrast * saturation)>>32;
++ cbu= (cbu*contrast * saturation)>>32;
++ cgu= (cgu*contrast * saturation)>>32;
++ cgv= (cgv*contrast * saturation)>>32;
++
++ oy -= 256*brightness;
++
++ pico_coeff.coeff1_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* G <- Y */
++ pico_coeff.coeff1_1 = SCALE(cgu, 16 - COEFF_FRAC_BITS); /* G <- U */
++ pico_coeff.coeff1_2 = SCALE(cgv, 16 - COEFF_FRAC_BITS); /* G <- V */
++ pico_coeff.coeff1_3 = (SCALE(-128*cgu - 128*cgv - 16*cy, 16 - OFFSET_FRAC_BITS)
++ + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* G offset */
++
++ if ( isRgb ){
++ pico_coeff.coeff0_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* R <- Y */
++ pico_coeff.coeff0_1 = 0; /* R <- U */
++ pico_coeff.coeff0_2 = SCALE(crv, 16 - COEFF_FRAC_BITS); /* R <- V */
++ pico_coeff.coeff0_3 = (SCALE(-128*crv - 16*cy, 16 - OFFSET_FRAC_BITS)
++ + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* R offset */
++
++ pico_coeff.coeff2_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* B <- Y */
++ pico_coeff.coeff2_1 = SCALE(cbu, 16 - COEFF_FRAC_BITS); /* B <- U */
++ pico_coeff.coeff2_2 = 0; /* B <- V */
++ pico_coeff.coeff2_3 = (SCALE(-128*cbu - 16*cy, 16 - OFFSET_FRAC_BITS)
++ + /*0.5*/(1 << (OFFSET_FRAC_BITS-1)));/* B offset */
++ } else {
++ pico_coeff.coeff2_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* R <- Y */
++ pico_coeff.coeff2_1 = 0; /* R <- U */
++ pico_coeff.coeff2_2 = SCALE(crv, 16 - COEFF_FRAC_BITS); /* R <- V */
++ pico_coeff.coeff2_3 = (SCALE(-128*crv - 16*cy, 16 - OFFSET_FRAC_BITS)
++ + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* R offset */
++
++ pico_coeff.coeff0_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* B <- Y */
++ pico_coeff.coeff0_1 = SCALE(cbu, 16 - COEFF_FRAC_BITS); /* B <- U */
++ pico_coeff.coeff0_2 = 0; /* B <- V */
++ pico_coeff.coeff0_3 = (SCALE(-128*cbu - 16*cy, 16 - OFFSET_FRAC_BITS)
++ + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* B offset */
++ }
++
++}
++
++
++#undef RGB
+diff --git a/libvo/vo_fbdev2.c b/libvo/vo_fbdev2.c
+index 053c193..7017770 100644
+--- a/libvo/vo_fbdev2.c
++++ b/libvo/vo_fbdev2.c
+@@ -22,6 +22,9 @@
+ #include "sub.h"
+ #include "mp_msg.h"
+
++/* Draw directly to framebuffer */
++#define USE_CONVERT2FB
++
+ static vo_info_t info = {
+ "Framebuffer Device",
+ "fbdev2",
+@@ -178,6 +181,15 @@ static int fb_preinit(int reset)
+ }
+ fb_orig_vinfo = fb_vinfo;
+
++ /* Reset panning offset */
++ fb_vinfo.yoffset = 0;
++ if (ioctl(fb_dev_fd, FBIOPAN_DISPLAY, &fb_vinfo)) {
++ mp_msg(MSGT_VO, MSGL_ERR,
++ "[fbdev2] FBIOPAN_DISPLAY failed: %s\n",
++ strerror(errno));
++ return 0;
++ }
++
+ fb_bpp = fb_vinfo.bits_per_pixel;
+
+ /* 16 and 15 bpp is reported as 16 bpp */
+@@ -289,6 +301,10 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width,
+ mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't malloc next_frame: %s\n", strerror(errno));
+ return 1;
+ }
++#else
++ if ((fb_line_len * fb_vinfo.yres) <= (fb_finfo.smem_len / 2)
++ && fb_vinfo.yoffset == 0)
++ center += fb_line_len * fb_vinfo.yres;
+ #endif
+ if (fs) memset(frame_buffer, '\0', fb_line_len * fb_vinfo.yres);
+
+@@ -299,14 +315,22 @@ static int query_format(uint32_t format)
+ {
+ // open the device, etc.
+ if (fb_preinit(0)) return 0;
+- if ((format & IMGFMT_BGR_MASK) == IMGFMT_BGR) {
++ if ((format & IMGFMT_RGB_MASK) == IMGFMT_RGB) {
+ int fb_target_bpp = format & 0xff;
+ set_bpp(&fb_vinfo, fb_target_bpp);
+ fb_vinfo.xres_virtual = fb_vinfo.xres;
+- fb_vinfo.yres_virtual = fb_vinfo.yres;
++ fb_vinfo.yres_virtual = fb_vinfo.yres * 2;
+ if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_vinfo)) {
+- mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't put VSCREENINFO: %s\n", strerror(errno));
+- return 0;
++ mp_msg(MSGT_VO, MSGL_WARN,
++ "[fbdev2] Can't double virtual y resolution: %s\n",
++ strerror(errno));
++ fb_vinfo.yres_virtual = fb_vinfo.yres;
++ if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_vinfo)) {
++ mp_msg(MSGT_VO, MSGL_ERR,
++ "[fbdev2] Can't put VSCREENINFO: %s\n",
++ strerror(errno));
++ return -1;
++ }
+ }
+ fb_pixel_size = fb_vinfo.bits_per_pixel / 8;
+ fb_bpp = fb_vinfo.red.length + fb_vinfo.green.length +
+@@ -367,16 +391,67 @@ static void check_events(void)
+
+ static void flip_page(void)
+ {
+-#ifndef USE_CONVERT2FB
+ int i, out_offset = 0, in_offset = 0;
+
+- for (i = 0; i < in_height; i++) {
+- memcpy(center + out_offset, next_frame + in_offset,
+- in_width * fb_pixel_size);
+- out_offset += fb_line_len;
+- in_offset += in_width * fb_pixel_size;
+- }
++#ifndef USE_CONVERT2FB
++ if (1) {
++#else
++ if (fb_vinfo.yres_virtual == fb_vinfo.yres) {
+ #endif
++ for (i = 0; i < in_height; i++) {
++ memcpy(center + out_offset, next_frame + in_offset,
++ in_width * fb_pixel_size);
++ out_offset += fb_line_len;
++ in_offset += in_width * fb_pixel_size;
++ }
++ } else {
++ if (fb_vinfo.yoffset == 0) {
++ fb_vinfo.yoffset += fb_vinfo.yres;
++ center -= fb_line_len * fb_vinfo.yres;
++ } else {
++ fb_vinfo.yoffset = 0;
++ center += fb_line_len * fb_vinfo.yres;
++ }
++
++ if (ioctl(fb_dev_fd, FBIOPAN_DISPLAY, &fb_vinfo)) {
++ mp_msg(MSGT_VO, MSGL_ERR,
++ "[fbdev2] Can't FBIOPAN_DISPLAY: %s\n",
++ strerror(errno));
++ }
++ }
++}
++
++static uint32_t get_image(mp_image_t *mpi)
++{
++ if(mpi->flags&MP_IMGFLAG_READABLE)
++ return VO_FALSE; // slow video ram
++ if(mpi->type==MP_IMGTYPE_STATIC)
++ return VO_FALSE; // it is not static
++
++ if (mpi->flags & (MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_ACCEPT_WIDTH)) {
++ // we're lucky or codec accepts stride => ok, let's go!
++
++ //YUY2 and RGB formats
++ mpi->planes[0] = center;
++ mpi->width = in_width;
++ mpi->stride[0] = fb_line_len;
++
++ // center image
++
++ mpi->flags |= MP_IMGFLAG_DIRECT;
++
++ return VO_TRUE;
++ }
++
++ return VO_FALSE;
++}
++
++static uint32_t put_image(mp_image_t *mpi)
++{
++ // already out?
++ if ((mpi->flags & (MP_IMGFLAG_DIRECT | MP_IMGFLAG_DRAW_CALLBACK)))
++ return VO_TRUE;
++ return VO_FALSE;
+ }
+
+ static void uninit(void)
+@@ -403,6 +478,10 @@ static int control(uint32_t request, void *data, ...)
+ switch (request) {
+ case VOCTRL_QUERY_FORMAT:
+ return query_format(*((uint32_t*)data));
++ case VOCTRL_GET_IMAGE:
++ return get_image(data);
++ case VOCTRL_DRAW_IMAGE:
++ return put_image(data);
+ }
+ return VO_NOTIMPL;
+ }
+diff --git a/version.sh b/version.sh
+index 44b5c5d..cf22a68 100755
+--- a/version.sh
++++ b/version.sh
+@@ -1,2 +1,2 @@
+ #!/bin/sh
+-echo "#define VERSION \"1.0rc1-$1\"" > version.h
++echo "#define VERSION \"1.0rc1.atmel.2-$1\"" > version.h
diff --git a/packages/mplayer/mplayer_0.0+1.0rc1.bb b/packages/mplayer/mplayer_0.0+1.0rc1.bb
index 6d9cd754d5..c0062bddd9 100644
--- a/packages/mplayer/mplayer_0.0+1.0rc1.bb
+++ b/packages/mplayer/mplayer_0.0+1.0rc1.bb
@@ -22,7 +22,11 @@ SRC_URI = "http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc1.tar.bz2 \
file://imageon-video_out.patch;patch=1 \
file://powerpc-is-ppc.diff;patch=1 \
file://pxa_configure.patch;patch=1 \
- file://pxa-video_out.patch;patch=1 "
+ file://pxa-video_out.patch;patch=1 \
+ "
+
+SRC_URI_append_avr32 = " file://mplayer-1.0rc1-atmel.2.patch;patch=1 \
+ "
# This is required for the collie machine only as all stacks in that
# machine seem to be set to executable by the toolchain. If someone
@@ -34,7 +38,7 @@ PACKAGE_ARCH_mencoder_collie = "collie"
RCONFLICTS_${PN} = "mplayer-atty"
RREPLACES_${PN} = "mplayer-atty"
-PR = "r14"
+PR = "r15"
PARALLEL_MAKE = ""
diff --git a/packages/mtpaint/mtpaint_3.02.bb b/packages/mtpaint/mtpaint_3.02.bb
index 5add7e437f..fea8299534 100644
--- a/packages/mtpaint/mtpaint_3.02.bb
+++ b/packages/mtpaint/mtpaint_3.02.bb
@@ -2,11 +2,12 @@ DESCRIPTION = "mtPaint is a simple painting program"
SECTION = "x11/graphics"
DEPENDS = "gtk+ jpeg"
HOMEPAGE = "http://mtpaint.sf.net"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/mtpaint/mtpaint-3.02.tar.bz2"
do_configure() {
- ./configure gtk2
+ /bin/bash ./configure gtk2
cat > _conf.txt <<EOF
CC = ${CC}
MT_VERSION=mtPaint 3.02
diff --git a/packages/musicbrainz/libmusicbrainz_2.1.4.bb b/packages/musicbrainz/libmusicbrainz_2.1.4.bb
deleted file mode 100644
index 7ab0997218..0000000000
--- a/packages/musicbrainz/libmusicbrainz_2.1.4.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "The MusicBrainz client is a library which can be built into other programs. \
-It allows you to access the data held on the MusicBrainz server."
-HOMEPAGE = "http://musicbrainz.org"
-LICENSE = "LGPL"
-DEPENDS = "expat"
-
-SRC_URI = "http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/mysql/mysql_4.1.18.bb b/packages/mysql/mysql_4.1.18.bb
index b509b81311..cd32f929e3 100644
--- a/packages/mysql/mysql_4.1.18.bb
+++ b/packages/mysql/mysql_4.1.18.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "The MySQL Open Source Database System"
-SECTION = "libs"
HOMEPAGE = "http://www.mysql.com/"
-DEPENDS += "ncurses mysql-native"
+SECTION = "libs"
LICENSE = "GPL"
-PR="r2"
+DEPENDS += "ncurses mysql-native"
+PR = "r3"
SRC_URI = "http://downloads.mysql.com/archives/mysql-4.1/mysql-${PV}.tar.gz \
file://autofoo.patch;patch=1 \
@@ -63,7 +63,7 @@ pkg_postrm_mysql-server () {
grep mysql /etc/passwd && deluser mysql
}
-PACKAGES = "${PN} libmysqlclient libmysqlclient-dev mysql-client mysql-server"
+PACKAGES = "${PN}-dbg ${PN} libmysqlclient libmysqlclient-dev mysql-client mysql-server ${PN}-leftovers"
FILES_${PN} = " "
RDEPENDS_${PN} = "mysql-client mysql-server"
@@ -138,3 +138,6 @@ ${datadir}/mysql/ \
${localstatedir}/mysql/ \
${sysconfdir}/init.d \
${sysconfdir}/my.cnf"
+
+DESCRIPTION_${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}"
+FILES_${PN}-leftovers = "/"
diff --git a/packages/navit/files/navit.desktop b/packages/navit/files/navit.desktop
index 52aae31fce..4d7fda0e35 100644
--- a/packages/navit/files/navit.desktop
+++ b/packages/navit/files/navit.desktop
@@ -1,12 +1,10 @@
[Desktop Entry]
-Encoding=UTF-8
Name=Navit
Comment=GPS Navigation
Exec=navit
Icon=openmoko-terminal
Terminal=false
Type=Application
-Categories=GTK;Application;Utilities;
+Categories=GTK;
MimeType=text/x-vcard;
-SingleInstance=true
StartupNotify=true
diff --git a/packages/navit/navit.inc b/packages/navit/navit.inc
index 06e3a72664..23e3f9b23d 100644
--- a/packages/navit/navit.inc
+++ b/packages/navit/navit.inc
@@ -1,5 +1,6 @@
DESCRIPTION = "Navit is a car navigation system with routing engine."
LICENSE = "GPL"
+SECTION = "x11/applications"
DEPENDS = "glib-2.0 gtk+"
RRECOMMENDS = "gpsd speechd flite"
@@ -10,7 +11,7 @@ EXTRA_OECONF = "--disable-binding-python --disable-gui-sdl --disable-samplemap -
PACKAGES = "${PN}-dbg ${PN}-dev ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
-FILES_${PN}-dev += "${libdir}/${PN}/*/*.so"
+FILES_${PN}-dev += "${libdir}/${PN}/*/*.so ${libdir}/${PN}/*/*.la"
SRC_URI_append = " \
file://navit.xml-so.patch;patch=1 \
@@ -19,9 +20,9 @@ SRC_URI_append = " \
"
do_install_append() {
- install -d ${D}/usr/share/applications/
- install -m 0644 ${WORKDIR}/navit.desktop ${D}/usr/share/applications/
+ install -d ${D}${datadir}/applications/
+ install -m 0644 ${WORKDIR}/navit.desktop ${D}${datadir}/applications/
- mv ${D}/usr/bin/navit ${D}/usr/bin/navit.real
- install -m 0755 ${WORKDIR}/navit.launcher ${D}/usr/bin/navit
+ mv ${D}${bindir}/navit ${D}${bindir}/navit.real
+ install -m 0755 ${WORKDIR}/navit.launcher ${D}${bindir}/navit
}
diff --git a/packages/navit/navit_0.0.3.bb b/packages/navit/navit_0.0.3.bb
deleted file mode 100644
index a926528faf..0000000000
--- a/packages/navit/navit_0.0.3.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require navit.inc
-
-PR = "r4"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz"
diff --git a/packages/navit/navit_0.0.4.bb b/packages/navit/navit_0.0.4.bb
new file mode 100644
index 0000000000..f1dfb1ceb4
--- /dev/null
+++ b/packages/navit/navit_0.0.4.bb
@@ -0,0 +1,5 @@
+require navit.inc
+
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz"
diff --git a/packages/navit/navit_cvs.bb b/packages/navit/navit_cvs.bb
index 014e7d3a53..5739063f7b 100644
--- a/packages/navit/navit_cvs.bb
+++ b/packages/navit/navit_cvs.bb
@@ -1,7 +1,9 @@
require navit.inc
-PV = "0.0.3+cvs${SRCDATE}"
-PR = "r4"
+PV = "0.1.0+cvs${SRCDATE}"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
S = "${WORKDIR}/navit"
diff --git a/packages/nbd/nbd_2.8.7.bb b/packages/nbd/nbd_2.8.7.bb
index 2241fea71e..b209156fa7 100644
--- a/packages/nbd/nbd_2.8.7.bb
+++ b/packages/nbd/nbd_2.8.7.bb
@@ -15,7 +15,7 @@ PACKAGES += "nbd-client-doc nbd-server-doc"
FILES_nbd-client = "/usr/sbin/nbd-client"
FILES_nbd-server = "/usr/bin/nbd-server"
-FILES_nbd-client-dbg = "/usr/sbin/.debug/nbd-client"
-FILES_nbd-server-dbg = "/usr/bin/.debug/nbd-server"
+FILES_nbd-client-dbg += "/usr/sbin/.debug/nbd-client"
+FILES_nbd-server-dbg += "/usr/bin/.debug/nbd-server"
FILES_nbd-client-doc = "/usr/share/man/man8/*"
FILES_nbd-server-doc = "/usr/share/man/man1/*"
diff --git a/packages/netbase/netbase/slugos/if-pre-up.d/test-nfsroot b/packages/netbase/netbase/slugos/if-pre-up.d/test-nfsroot
new file mode 100644
index 0000000000..bbfd7d9bb3
--- /dev/null
+++ b/packages/netbase/netbase/slugos/if-pre-up.d/test-nfsroot
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+if [ X"$IFACE" == "Xeth0" ] ; then
+ nfsroot=`grep ' / nfs ' /proc/mounts`
+ if [ -n "$nfsroot" ]; then
+ echo "WARNING: Refusing to ifup eth0 when booted to a nfs-mounted rootfs."
+ exit 1
+ fi
+fi
+exit 0
diff --git a/packages/netbase/netbase_4.21.bb b/packages/netbase/netbase_4.21.bb
index 1f2837a8c1..73e765376c 100644
--- a/packages/netbase/netbase_4.21.bb
+++ b/packages/netbase/netbase_4.21.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "This package provides the necessary \
infrastructure for basic TCP/IP based networking."
SECTION = "base"
LICENSE = "GPL"
-PR = "r26"
+PR = "r27"
inherit update-rc.d
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/.mtn2git_empty b/packages/netsurf/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc8/.mtn2git_empty
+++ b/packages/netsurf/.mtn2git_empty
diff --git a/packages/llvm/files/.mtn2git_empty b/packages/netsurf/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/llvm/files/.mtn2git_empty
+++ b/packages/netsurf/files/.mtn2git_empty
diff --git a/packages/netsurf/files/netsurf.desktop b/packages/netsurf/files/netsurf.desktop
new file mode 100644
index 0000000000..4188d3019d
--- /dev/null
+++ b/packages/netsurf/files/netsurf.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+Name=NetSurf
+Comment=NetSurf Web Browser
+GenericName=Web Browser
+Icon=netsurf
+Exec=netsurf
+Terminal=false
+StartupNotify=false
+Categories=Network;WebBrowser;
diff --git a/packages/netsurf/netsurf_svn.bb b/packages/netsurf/netsurf_svn.bb
new file mode 100644
index 0000000000..4766a20297
--- /dev/null
+++ b/packages/netsurf/netsurf_svn.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "Lightweight web browser capable of handling many of the \
+web standards in use today."
+HOMEPAGE = "http://www.netsurf-browser.org/"
+SECTION = "x11/network"
+LICENSE = "GPLv2"
+PV = "1.1+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.netsurf-browser.org/trunk;module=netsurf \
+ file://netsurf.desktop"
+S = "${WORKDIR}/netsurf"
+
+DEPENDS = "gtk+ (>=2.8) lemon-native re2c-native libxml2 librsvg jpeg \
+ libmng curl openssl libglade (>=2.0)"
+
+do_compile() {
+ make -f Makefile.unix
+}
+
+do_install() {
+ install -d ${D}/${bindir}
+ install -d ${D}/${libdir}/netsurf
+ install -d ${D}/${datadir}/netsurf
+ install -d ${D}/${datadir}/applications
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0755 nsgtk ${D}/${libdir}/netsurf
+ install -m 0644 gtk/res/*.css ${D}/${datadir}/netsurf
+ install -m 0644 gtk/res/ca-bundle.txt ${D}/${datadir}/netsurf
+ install -m 0644 gtk/res/netsurf.glade ${D}/${datadir}/netsurf
+ install -m 0644 gtk/res/netsurf-logo.png ${D}/${datadir}/netsurf
+ install -m 0644 gtk/res/netsurf.xpm ${D}/${datadir}/netsurf
+ install -m 0644 gtk/res/throbber.gif ${D}/${datadir}/netsurf
+ install -m 0644 gtk/res/messages ${D}/${datadir}/netsurf
+ install -m 0644 gtk/res/netsurf.xpm ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/netsurf.desktop ${D}/${datadir}/applications
+ cat >${D}/${bindir}/netsurf <<EOF
+#!/bin/sh
+NETSURFRES=${datadir}/netsurf
+export NETSURFRES
+exec ${libdir}/netsurf/nsgtk "\$@"
+EOF
+ chmod 0755 ${D}/${bindir}/netsurf
+}
diff --git a/packages/nonworking/efl/edb-utils_1.0.5.007.bb b/packages/nonworking/efl/edb-utils_1.0.5.007.bb
index 8d47e068a7..11fae0f565 100644
--- a/packages/nonworking/efl/edb-utils_1.0.5.007.bb
+++ b/packages/nonworking/efl/edb-utils_1.0.5.007.bb
@@ -8,7 +8,7 @@ inherit efl
EXTRA_OECONF += "--disable-gtk"
-PACKAGES = "edb-utils"
+PACKAGES = "${PN}-dbg edb-utils"
FILES_${PN} = "${bindir}/edb_ed ${bindir}/edb_vt_ed ${bindir}/edb_gtk_ed"
RDEPENDS_${PN} += "ncurses"
diff --git a/packages/nonworking/efl/edje-utils_0.5.0.038.bb b/packages/nonworking/efl/edje-utils_0.5.0.038.bb
index f8eb917e4d..966abe7654 100644
--- a/packages/nonworking/efl/edje-utils_0.5.0.038.bb
+++ b/packages/nonworking/efl/edje-utils_0.5.0.038.bb
@@ -5,7 +5,7 @@ PR = "r6"
inherit efl
-PACKAGES = "edje-utils"
+PACKAGES = "${PN}-dbg edje-utils"
FILES_${PN} = "${bindir}/edje ${bindir}/edje_* ${datadir}/edje/data/template ${datadir}/edje/include"
RDEPENDS_${PN} += "embryo-utils cpp cpp-symlinks gcc gcc-symlinks"
diff --git a/packages/nonworking/efl/embryo-utils_0.9.1.038.bb b/packages/nonworking/efl/embryo-utils_0.9.1.038.bb
index d507c53cce..78cc70394c 100644
--- a/packages/nonworking/efl/embryo-utils_0.9.1.038.bb
+++ b/packages/nonworking/efl/embryo-utils_0.9.1.038.bb
@@ -11,7 +11,7 @@ inherit efl
SRC_URI = "${E_URI}/embryo-${PV}.tar.gz"
S = "${WORKDIR}/embryo-${PV}"
-PACKAGES = "embryo-utils"
+PACKAGES = "${PN}-dbg embryo-utils"
FILES_${PN} = "${bindir}/embryo ${bindir}/embryo_* ${datadir}/embryo/include"
libraries = ""
diff --git a/packages/nonworking/libmikey/libmikey0_0.3.2.bb b/packages/nonworking/libmikey/libmikey0_0.3.2.bb
index 214faef40f..21210937a6 100644
--- a/packages/nonworking/libmikey/libmikey0_0.3.2.bb
+++ b/packages/nonworking/libmikey/libmikey0_0.3.2.bb
@@ -11,7 +11,6 @@ SRC_URI = "http://www.minisip.org/snapshots/libmikey-${PV}.tar.gz"
S="${WORKDIR}/libmikey-${PV}"
-PACKAGES = "${PN}"
FILES_${PN} = " ${libdir}/libmikey.so.0 ${libdir}/libmikey.so.0.0.0 "
diff --git a/packages/nonworking/libmnetutil/libmnetutil0_0.2.2.bb b/packages/nonworking/libmnetutil/libmnetutil0_0.2.2.bb
index a7866b35ec..d41a86b4e2 100644
--- a/packages/nonworking/libmnetutil/libmnetutil0_0.2.2.bb
+++ b/packages/nonworking/libmnetutil/libmnetutil0_0.2.2.bb
@@ -11,7 +11,6 @@ SRC_URI = "http://www.minisip.org/snapshots/libmnetutil-${PV}.tar.gz"
S="${WORKDIR}/libmnetutil-${PV}"
-PACKAGES = "${PN}"
FILES_${PN} = " ${libdir}/libmnetutil.so.0 ${libdir}/libmnetutil.so.0.0.0 "
diff --git a/packages/nonworking/libmsip/libmsip0_0.2.2.bb b/packages/nonworking/libmsip/libmsip0_0.2.2.bb
index 8d8bb905db..161e270f7d 100644
--- a/packages/nonworking/libmsip/libmsip0_0.2.2.bb
+++ b/packages/nonworking/libmsip/libmsip0_0.2.2.bb
@@ -11,7 +11,6 @@ SRC_URI = "http://www.minisip.org/snapshots/libmsip-${PV}.tar.gz"
S="${WORKDIR}/libmsip-${PV}"
-PACKAGES = "${PN}"
FILES_${PN} = " ${libdir}/libmsip.so.0 ${libdir}/libmsip.so.0.0.0 "
diff --git a/packages/notification-daemon/notification-daemon_0.3.6.bb b/packages/notification-daemon/notification-daemon_0.3.6.bb
index ee0f597550..5a76d10b31 100644
--- a/packages/notification-daemon/notification-daemon_0.3.6.bb
+++ b/packages/notification-daemon/notification-daemon_0.3.6.bb
@@ -12,7 +12,6 @@ EXTRA_OECONF = "--disable-binreloc"
inherit autotools pkgconfig
-PACKAGES = "${PN}"
FILES_${PN} = "\
${libexecdir}/notification-daemon \
${datadir}/dbus-1/services \
diff --git a/packages/notification-daemon/notification-daemon_0.3.7.bb b/packages/notification-daemon/notification-daemon_0.3.7.bb
index 43721f5e28..d86c2f48e8 100644
--- a/packages/notification-daemon/notification-daemon_0.3.7.bb
+++ b/packages/notification-daemon/notification-daemon_0.3.7.bb
@@ -10,7 +10,6 @@ EXTRA_OECONF = "--disable-binreloc"
inherit autotools pkgconfig
-PACKAGES = "${PN}"
FILES_${PN} = "\
${libexecdir}/notification-daemon \
${datadir}/dbus-1/services/ \
diff --git a/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb
index 86b0a575eb..da5bdebfcd 100644
--- a/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb
+++ b/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb
@@ -13,7 +13,6 @@ do_install () {
( cd ${S} ; tar cvf - . ) | ( cd ${D} ; tar xvf - )
}
-PACKAGES = "${PN}"
FILES_${PN} = "/lib"
COMPATIBLE_MACHINE = "nslu2"
diff --git a/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb
index b098ba73ff..ec7689488a 100644
--- a/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb
+++ b/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb
@@ -10,7 +10,6 @@ do_install () {
( cd ${S} ; tar cvf - . ) | ( cd ${D} ; tar xvf - )
}
-PACKAGES = "${PN}"
FILES_${PN} = "/"
COMPATIBLE_MACHINE = "nslu2"
diff --git a/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb
index 44ef8aa1c9..4da6b6981a 100644
--- a/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb
+++ b/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb
@@ -19,7 +19,6 @@ do_install () {
( cd ${S} ; tar cvf - . ) | ( cd ${D} ; tar xvf - )
}
-PACKAGES = "${PN}"
FILES_${PN} = "/etc/samba/codepages"
COMPATIBLE_MACHINE = "nslu2"
diff --git a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
index 8b9ccaa8ba..0eebf7d04f 100644
--- a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
+++ b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
@@ -177,6 +177,5 @@ do_install () {
( cd ${S} ; tar -c -v -f - --exclude '.pc' . ) | ( cd ${D} ; tar xvf - )
}
-PACKAGES = "${PN}"
FILES_${PN} = "/"
RDEPENDS_${PN} = "nslu2-linksys-libs"
diff --git a/packages/obsolete/classpath/classpath-minimal_0.95.bb b/packages/obsolete/classpath/classpath-minimal_0.95.bb
index cb38710ac1..1fe65edc08 100644
--- a/packages/obsolete/classpath/classpath-minimal_0.95.bb
+++ b/packages/obsolete/classpath/classpath-minimal_0.95.bb
@@ -37,4 +37,4 @@ do_stage() {
install -m 0644 lib/glibj.zip ${STAGING_DATADIR}/java/classpath-minimal/
}
-PACKAGES = " "
+PACKAGES = "${PN}-dbg "
diff --git a/packages/maemo4/hildon-1/.mtn2git_empty b/packages/obsolete/compositeext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo4/hildon-1/.mtn2git_empty
+++ b/packages/obsolete/compositeext/.mtn2git_empty
diff --git a/packages/compositeext/compositeext_2.0.bb b/packages/obsolete/compositeext/compositeext_2.0.bb
index b9b634d391..b9b634d391 100644
--- a/packages/compositeext/compositeext_2.0.bb
+++ b/packages/obsolete/compositeext/compositeext_2.0.bb
diff --git a/packages/compositeext/compositeext_cvs.bb b/packages/obsolete/compositeext/compositeext_cvs.bb
index 8f0f4f9f46..8f0f4f9f46 100644
--- a/packages/compositeext/compositeext_cvs.bb
+++ b/packages/obsolete/compositeext/compositeext_cvs.bb
diff --git a/packages/maemo4/libconic/.mtn2git_empty b/packages/obsolete/damageext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/maemo4/libconic/.mtn2git_empty
+++ b/packages/obsolete/damageext/.mtn2git_empty
diff --git a/packages/nonworking/redboot-utils/.mtn2git_empty b/packages/obsolete/damageext/damageext-1.0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/nonworking/redboot-utils/.mtn2git_empty
+++ b/packages/obsolete/damageext/damageext-1.0/.mtn2git_empty
diff --git a/packages/damageext/damageext-1.0/autofoo.patch b/packages/obsolete/damageext/damageext-1.0/autofoo.patch
index e36fb1d74b..e36fb1d74b 100644
--- a/packages/damageext/damageext-1.0/autofoo.patch
+++ b/packages/obsolete/damageext/damageext-1.0/autofoo.patch
diff --git a/packages/damageext/damageext_1.0.bb b/packages/obsolete/damageext/damageext_1.0.bb
index 3b431a8688..3b431a8688 100644
--- a/packages/damageext/damageext_1.0.bb
+++ b/packages/obsolete/damageext/damageext_1.0.bb
diff --git a/packages/damageext/damageext_cvs.bb b/packages/obsolete/damageext/damageext_cvs.bb
index e9ffa7d2b1..e9ffa7d2b1 100644
--- a/packages/damageext/damageext_cvs.bb
+++ b/packages/obsolete/damageext/damageext_cvs.bb
diff --git a/packages/openmoko-panel-plugins/files/.mtn2git_empty b/packages/obsolete/damageext/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/openmoko-panel-plugins/files/.mtn2git_empty
+++ b/packages/obsolete/damageext/files/.mtn2git_empty
diff --git a/packages/damageext/files/autofoo.patch b/packages/obsolete/damageext/files/autofoo.patch
index 48c05cd836..48c05cd836 100644
--- a/packages/damageext/files/autofoo.patch
+++ b/packages/obsolete/damageext/files/autofoo.patch
diff --git a/packages/opie-bluetoothapplet/files/.mtn2git_empty b/packages/obsolete/fixesext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-bluetoothapplet/files/.mtn2git_empty
+++ b/packages/obsolete/fixesext/.mtn2git_empty
diff --git a/packages/fixesext/fixesext_2.0.1.bb b/packages/obsolete/fixesext/fixesext_2.0.1.bb
index feb53d60eb..feb53d60eb 100644
--- a/packages/fixesext/fixesext_2.0.1.bb
+++ b/packages/obsolete/fixesext/fixesext_2.0.1.bb
diff --git a/packages/fixesext/fixesext_cvs.bb b/packages/obsolete/fixesext/fixesext_cvs.bb
index 4ddbc96c64..4ddbc96c64 100644
--- a/packages/fixesext/fixesext_cvs.bb
+++ b/packages/obsolete/fixesext/fixesext_cvs.bb
diff --git a/packages/opie-irc/files/.mtn2git_empty b/packages/obsolete/gaim/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/opie-irc/files/.mtn2git_empty
+++ b/packages/obsolete/gaim/.mtn2git_empty
diff --git a/packages/panoramixext/.mtn2git_empty b/packages/obsolete/gaim/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/panoramixext/.mtn2git_empty
+++ b/packages/obsolete/gaim/files/.mtn2git_empty
diff --git a/packages/gaim/files/01-optional-icons-in-dialogs.patch b/packages/obsolete/gaim/files/01-optional-icons-in-dialogs.patch
index 260dcf364f..260dcf364f 100644
--- a/packages/gaim/files/01-optional-icons-in-dialogs.patch
+++ b/packages/obsolete/gaim/files/01-optional-icons-in-dialogs.patch
diff --git a/packages/gaim/files/02-request-field-dialogs.patch b/packages/obsolete/gaim/files/02-request-field-dialogs.patch
index 50529ca53e..50529ca53e 100644
--- a/packages/gaim/files/02-request-field-dialogs.patch
+++ b/packages/obsolete/gaim/files/02-request-field-dialogs.patch
diff --git a/packages/gaim/files/03-blist-dialogs.patch b/packages/obsolete/gaim/files/03-blist-dialogs.patch
index 62d4710d46..62d4710d46 100644
--- a/packages/gaim/files/03-blist-dialogs.patch
+++ b/packages/obsolete/gaim/files/03-blist-dialogs.patch
diff --git a/packages/gaim/files/04-saved-status-dialogs.patch b/packages/obsolete/gaim/files/04-saved-status-dialogs.patch
index 2cdf70c5c1..2cdf70c5c1 100644
--- a/packages/gaim/files/04-saved-status-dialogs.patch
+++ b/packages/obsolete/gaim/files/04-saved-status-dialogs.patch
diff --git a/packages/gaim/files/05-statusbox-icon-size.patch b/packages/obsolete/gaim/files/05-statusbox-icon-size.patch
index e18f3b2bcb..e18f3b2bcb 100644
--- a/packages/gaim/files/05-statusbox-icon-size.patch
+++ b/packages/obsolete/gaim/files/05-statusbox-icon-size.patch
diff --git a/packages/gaim/files/06-account-dialogs.patch b/packages/obsolete/gaim/files/06-account-dialogs.patch
index 9d2cb9acb0..9d2cb9acb0 100644
--- a/packages/gaim/files/06-account-dialogs.patch
+++ b/packages/obsolete/gaim/files/06-account-dialogs.patch
diff --git a/packages/gaim/files/07-roomlist-dialog.patch b/packages/obsolete/gaim/files/07-roomlist-dialog.patch
index 2806c78fd4..2806c78fd4 100644
--- a/packages/gaim/files/07-roomlist-dialog.patch
+++ b/packages/obsolete/gaim/files/07-roomlist-dialog.patch
diff --git a/packages/gaim/files/08-prefs-dialog.patch b/packages/obsolete/gaim/files/08-prefs-dialog.patch
index a8fcb89311..a8fcb89311 100644
--- a/packages/gaim/files/08-prefs-dialog.patch
+++ b/packages/obsolete/gaim/files/08-prefs-dialog.patch
diff --git a/packages/gaim/files/09-filetransfer-dialog.patch b/packages/obsolete/gaim/files/09-filetransfer-dialog.patch
index c4fa3a0a6d..c4fa3a0a6d 100644
--- a/packages/gaim/files/09-filetransfer-dialog.patch
+++ b/packages/obsolete/gaim/files/09-filetransfer-dialog.patch
diff --git a/packages/gaim/files/10-pda-default-settings.patch b/packages/obsolete/gaim/files/10-pda-default-settings.patch
index 953dc11612..953dc11612 100644
--- a/packages/gaim/files/10-pda-default-settings.patch
+++ b/packages/obsolete/gaim/files/10-pda-default-settings.patch
diff --git a/packages/gaim/files/define-pda-mode.patch b/packages/obsolete/gaim/files/define-pda-mode.patch
index f1a368bc73..f1a368bc73 100644
--- a/packages/gaim/files/define-pda-mode.patch
+++ b/packages/obsolete/gaim/files/define-pda-mode.patch
diff --git a/packages/gaim/files/desktop-name-2.0.0.patch b/packages/obsolete/gaim/files/desktop-name-2.0.0.patch
index c921619721..c921619721 100644
--- a/packages/gaim/files/desktop-name-2.0.0.patch
+++ b/packages/obsolete/gaim/files/desktop-name-2.0.0.patch
diff --git a/packages/gaim/files/desktop-name.patch b/packages/obsolete/gaim/files/desktop-name.patch
index 6095a77e47..6095a77e47 100644
--- a/packages/gaim/files/desktop-name.patch
+++ b/packages/obsolete/gaim/files/desktop-name.patch
diff --git a/packages/gaim/files/desktop-name_1.4.0.patch b/packages/obsolete/gaim/files/desktop-name_1.4.0.patch
index 3cfaa5771e..3cfaa5771e 100644
--- a/packages/gaim/files/desktop-name_1.4.0.patch
+++ b/packages/obsolete/gaim/files/desktop-name_1.4.0.patch
diff --git a/packages/gaim/files/desktop-name_1.5.0.patch b/packages/obsolete/gaim/files/desktop-name_1.5.0.patch
index 3cfaa5771e..3cfaa5771e 100644
--- a/packages/gaim/files/desktop-name_1.5.0.patch
+++ b/packages/obsolete/gaim/files/desktop-name_1.5.0.patch
diff --git a/packages/gaim/files/docklet-icon-size.patch b/packages/obsolete/gaim/files/docklet-icon-size.patch
index 6b8047a30c..6b8047a30c 100644
--- a/packages/gaim/files/docklet-icon-size.patch
+++ b/packages/obsolete/gaim/files/docklet-icon-size.patch
diff --git a/packages/gaim/files/gaim-OE-branding.patch b/packages/obsolete/gaim/files/gaim-OE-branding.patch
index d090899cac..d090899cac 100644
--- a/packages/gaim/files/gaim-OE-branding.patch
+++ b/packages/obsolete/gaim/files/gaim-OE-branding.patch
diff --git a/packages/gaim/files/gevolution-eds-dbus.patch b/packages/obsolete/gaim/files/gevolution-eds-dbus.patch
index 0b7479d4f7..0b7479d4f7 100644
--- a/packages/gaim/files/gevolution-eds-dbus.patch
+++ b/packages/obsolete/gaim/files/gevolution-eds-dbus.patch
diff --git a/packages/gaim/files/gtk-deprecated-2.0.0.patch b/packages/obsolete/gaim/files/gtk-deprecated-2.0.0.patch
index 04bb9244f0..04bb9244f0 100644
--- a/packages/gaim/files/gtk-deprecated-2.0.0.patch
+++ b/packages/obsolete/gaim/files/gtk-deprecated-2.0.0.patch
diff --git a/packages/gaim/files/no-superimposed-version-on-logo.patch b/packages/obsolete/gaim/files/no-superimposed-version-on-logo.patch
index 86809dfe98..86809dfe98 100644
--- a/packages/gaim/files/no-superimposed-version-on-logo.patch
+++ b/packages/obsolete/gaim/files/no-superimposed-version-on-logo.patch
diff --git a/packages/gaim/files/series b/packages/obsolete/gaim/files/series
index c7a16f71c1..c7a16f71c1 100644
--- a/packages/gaim/files/series
+++ b/packages/obsolete/gaim/files/series
diff --git a/packages/gaim/gaim.inc b/packages/obsolete/gaim/gaim.inc
index d2fb38881a..d2fb38881a 100644
--- a/packages/gaim/gaim.inc
+++ b/packages/obsolete/gaim/gaim.inc
diff --git a/packages/gaim/gaim_1.0.3.bb b/packages/obsolete/gaim/gaim_1.0.3.bb
index f833ddde28..f833ddde28 100644
--- a/packages/gaim/gaim_1.0.3.bb
+++ b/packages/obsolete/gaim/gaim_1.0.3.bb
diff --git a/packages/gaim/gaim_1.1.0.bb b/packages/obsolete/gaim/gaim_1.1.0.bb
index f833ddde28..f833ddde28 100644
--- a/packages/gaim/gaim_1.1.0.bb
+++ b/packages/obsolete/gaim/gaim_1.1.0.bb
diff --git a/packages/gaim/gaim_1.1.1.bb b/packages/obsolete/gaim/gaim_1.1.1.bb
index f833ddde28..f833ddde28 100644
--- a/packages/gaim/gaim_1.1.1.bb
+++ b/packages/obsolete/gaim/gaim_1.1.1.bb
diff --git a/packages/gaim/gaim_1.1.2.bb b/packages/obsolete/gaim/gaim_1.1.2.bb
index 3bf9aeb3a7..3bf9aeb3a7 100644
--- a/packages/gaim/gaim_1.1.2.bb
+++ b/packages/obsolete/gaim/gaim_1.1.2.bb
diff --git a/packages/gaim/gaim_1.4.0.bb b/packages/obsolete/gaim/gaim_1.4.0.bb
index 1585229b14..1585229b14 100644
--- a/packages/gaim/gaim_1.4.0.bb
+++ b/packages/obsolete/gaim/gaim_1.4.0.bb
diff --git a/packages/gaim/gaim_1.5.0.bb b/packages/obsolete/gaim/gaim_1.5.0.bb
index 3bf9aeb3a7..3bf9aeb3a7 100644
--- a/packages/gaim/gaim_1.5.0.bb
+++ b/packages/obsolete/gaim/gaim_1.5.0.bb
diff --git a/packages/gaim/gaim_2.0.0-cvs-mco1.bb b/packages/obsolete/gaim/gaim_2.0.0-cvs-mco1.bb
index bf8591920c..bf8591920c 100644
--- a/packages/gaim/gaim_2.0.0-cvs-mco1.bb
+++ b/packages/obsolete/gaim/gaim_2.0.0-cvs-mco1.bb
diff --git a/packages/python/python-dbus/.mtn2git_empty b/packages/obsolete/panoramixext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/python/python-dbus/.mtn2git_empty
+++ b/packages/obsolete/panoramixext/.mtn2git_empty
diff --git a/packages/panoramixext/panoramixext_1.1.bb b/packages/obsolete/panoramixext/panoramixext_1.1.bb
index 2da504779f..2da504779f 100644
--- a/packages/panoramixext/panoramixext_1.1.bb
+++ b/packages/obsolete/panoramixext/panoramixext_1.1.bb
diff --git a/packages/panoramixext/panoramixext_cvs.bb b/packages/obsolete/panoramixext/panoramixext_cvs.bb
index 08cc0cc51e..08cc0cc51e 100644
--- a/packages/panoramixext/panoramixext_cvs.bb
+++ b/packages/obsolete/panoramixext/panoramixext_cvs.bb
diff --git a/packages/python/python-formencode/.mtn2git_empty b/packages/obsolete/resourceext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/python/python-formencode/.mtn2git_empty
+++ b/packages/obsolete/resourceext/.mtn2git_empty
diff --git a/packages/resourceext/resourceext_1.0.bb b/packages/obsolete/resourceext/resourceext_1.0.bb
index 55780b1d22..55780b1d22 100644
--- a/packages/resourceext/resourceext_1.0.bb
+++ b/packages/obsolete/resourceext/resourceext_1.0.bb
diff --git a/packages/resourceext/resourceext_cvs.bb b/packages/obsolete/resourceext/resourceext_cvs.bb
index b0fe23392e..b0fe23392e 100644
--- a/packages/resourceext/resourceext_cvs.bb
+++ b/packages/obsolete/resourceext/resourceext_cvs.bb
diff --git a/packages/obsolete/tasks/task-bootstrap-unionroot.bb b/packages/obsolete/tasks/task-bootstrap-unionroot.bb
index e737e31608..a4340eb4e8 100644
--- a/packages/obsolete/tasks/task-bootstrap-unionroot.bb
+++ b/packages/obsolete/tasks/task-bootstrap-unionroot.bb
@@ -9,7 +9,6 @@ DEFAULT_PREFERENCE = "-1"
PACKAGE_ARCH = "${MACHINE_ARCH}"
ALLOW_EMPTY = "1"
-PACKAGES = "${PN}"
MODUTILS ?= "24 26"
diff --git a/packages/obsolete/tasks/task-bootstrap.bb b/packages/obsolete/tasks/task-bootstrap.bb
index d84f331102..ebe78058b2 100644
--- a/packages/obsolete/tasks/task-bootstrap.bb
+++ b/packages/obsolete/tasks/task-bootstrap.bb
@@ -6,7 +6,6 @@ PR = "r25"
PACKAGE_ARCH = "${MACHINE_ARCH}"
ALLOW_EMPTY = "1"
-PACKAGES = "${PN}"
MODUTILS ?= "24 26"
diff --git a/packages/qemu/files/.mtn2git_empty b/packages/obsolete/xxf86dgaext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qemu/files/.mtn2git_empty
+++ b/packages/obsolete/xxf86dgaext/.mtn2git_empty
diff --git a/packages/xxf86dgaext/xxf86dgaext_cvs.bb b/packages/obsolete/xxf86dgaext/xxf86dgaext_cvs.bb
index 30788049c7..30788049c7 100644
--- a/packages/xxf86dgaext/xxf86dgaext_cvs.bb
+++ b/packages/obsolete/xxf86dgaext/xxf86dgaext_cvs.bb
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/.mtn2git_empty b/packages/obsolete/xxf86vmext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qemu/qemu-0.9.0+cvs20070701/.mtn2git_empty
+++ b/packages/obsolete/xxf86vmext/.mtn2git_empty
diff --git a/packages/xxf86vmext/xxf86vmext_cvs.bb b/packages/obsolete/xxf86vmext/xxf86vmext_cvs.bb
index 06145e2905..06145e2905 100644
--- a/packages/xxf86vmext/xxf86vmext_cvs.bb
+++ b/packages/obsolete/xxf86vmext/xxf86vmext_cvs.bb
diff --git a/packages/openchrome/openchrome_svn.bb b/packages/openchrome/openchrome_svn.bb
index d4e2da5ebe..c1e9829a35 100644
--- a/packages/openchrome/openchrome_svn.bb
+++ b/packages/openchrome/openchrome_svn.bb
@@ -9,8 +9,8 @@ FILES_libviaXvMC = "${libdir}/libviaXvMC.so.*"
FILES_libviaXvMCPro = "${libdir}/libviaXvMCPro.so.*"
FILES_libviaXvMC-dev = "${libdir}/libviaXvMC.so ${libdir}/libviaXvMC.la"
FILES_libviaXvMCPro-dev = "${libdir}/libviaXvMCPro.so ${libdir}/libviaXvMCPro.la"
-FILES_libviaXvMC-dbg = "${libdir}/.debug/libviaXvMC.so.*"
-FILES_libviaXvMCPro-dbg = "${libdir}/.debug/libviaXvMCPro.so.*"
+FILES_libviaXvMC-dbg += "${libdir}/.debug/libviaXvMC.so.*"
+FILES_libviaXvMCPro-dbg += "${libdir}/.debug/libviaXvMCPro.so.*"
DEPENDS = "xserver-xorg libxvmc"
diff --git a/packages/openmoko-base/openmoko-libs_svn.bb b/packages/openmoko-base/openmoko-libs_svn.bb
index d3dbeb0e1f..20b05efb0b 100644
--- a/packages/openmoko-base/openmoko-libs_svn.bb
+++ b/packages/openmoko-base/openmoko-libs_svn.bb
@@ -20,17 +20,17 @@ PACKAGES =+ "\
FILES_libmokojournal = "${libdir}/libmokojournal.so.*"
FILES_libmokojournal-dev = "${libdir}/libmokojournal.so ${libdir}/libmokojournal.*a ${includedir}/${PN}/libmokojournal"
-FILES_libmokojournal-dbg = "${libdir}/.debug/libmokojournal.so.*"
+FILES_libmokojournal-dbg += "${libdir}/.debug/libmokojournal.so.*"
FILES_libmokogsmd = "${libdir}/libmokogsmd.so.*"
FILES_libmokogsmd-dev = "${libdir}/libmokogsmd.so ${libdir}/libmokogsmd.*a ${includedir}/${PN}/libmokogsmd"
-FILES_libmokogsmd-dbg = "${libdir}/.debug/libmokogsmd.so.*"
+FILES_libmokogsmd-dbg += "${libdir}/.debug/libmokogsmd.so.*"
FILES_libmokocore = "${libdir}/libmokocore.so.*"
FILES_libmokocore-dev = "${libdir}/libmokocore.so ${libdir}/libmokocore.*a ${includedir}/${PN}/libmokocore"
-FILES_libmokocore-dbg = "${libdir}/.debug/libmokocore.so.*"
+FILES_libmokocore-dbg += "${libdir}/.debug/libmokocore.so.*"
FILES_libmokoui = "${libdir}/libmokoui.so.*"
FILES_libmokoui-dev = "${libdir}/libmokoui.so ${libdir}/libmokoui.*a ${includedir}/${PN}/libmokoui"
-FILES_libmokoui-dbg = "${libdir}/.debug/libmokoui.so.*"
+FILES_libmokoui-dbg += "${libdir}/.debug/libmokoui.so.*"
diff --git a/packages/openmoko2/libjana_svn.bb b/packages/openmoko2/libjana_svn.bb
index 5b40bd4846..48779e50fe 100644
--- a/packages/openmoko2/libjana_svn.bb
+++ b/packages/openmoko2/libjana_svn.bb
@@ -25,7 +25,7 @@ PACKAGES =+ "libjana-ecal libjana-ecal-dbg \
LEAD_SONAME = "libjana.so"
FILES_libjana-ecal = "${libdir}/libjana-ecal.so.*"
-FILES_libjana-ecal-dbg = "${libdir}/.debug/libjana-ecal*"
+FILES_libjana-ecal-dbg += "${libdir}/.debug/libjana-ecal*"
FILES_libjana-gtk = "${libdir}/libjana-gtk.so.* ${datadir}/jana/landwater.vmf"
-FILES_libjana-gtk-dbg = "${libdir}/.debug/libjana-gtk.so.*"
+FILES_libjana-gtk-dbg += "${libdir}/.debug/libjana-gtk.so.*"
FILES_libjana-bin_append = " ${datadir}/jana/flag-uk.png "
diff --git a/packages/openmoko2/moko-gtk-engine_svn.bb b/packages/openmoko2/moko-gtk-engine_svn.bb
index 060bceaf8c..027b3cb22b 100644
--- a/packages/openmoko2/moko-gtk-engine_svn.bb
+++ b/packages/openmoko2/moko-gtk-engine_svn.bb
@@ -8,7 +8,7 @@ inherit openmoko2
PACKAGES += "moko-gtk-theme"
FILES_${PN} = "${libdir}/gtk-2.0/*/engines/*.so "
FILES_${PN}-dev = "${libdir}/gtk-2.0/*/engines/*"
-FILES_${PN}-dbg = "${libdir}/gtk-2.0/*/engines/.debug"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/engines/.debug"
FILES_moko-gtk-theme = "${datadir}/themes"
RDEPENDS_${PN} = "moko-gtk-theme"
diff --git a/packages/openmoko2/openmoko-sound-system2/session b/packages/openmoko2/openmoko-sound-system2/session
index ed2346d55f..7ba07e9784 100644
--- a/packages/openmoko2/openmoko-sound-system2/session
+++ b/packages/openmoko2/openmoko-sound-system2/session
@@ -1,7 +1,7 @@
#!/usr/bin/pulseaudio -nF
# Create autoload entries for the device drivers
-add-autoload-sink output module-alsa-sink fragment_size=2048 sink_name=output
+add-autoload-sink output module-alsa-sink sink_name=output
add-autoload-source input module-alsa-source source_name=input
# Load several protocols
diff --git a/packages/openmoko2/openmoko-sound-system2_0.1.0.bb b/packages/openmoko2/openmoko-sound-system2_0.1.0.bb
index 29d0cba1fe..ac281dad76 100644
--- a/packages/openmoko2/openmoko-sound-system2_0.1.0.bb
+++ b/packages/openmoko2/openmoko-sound-system2_0.1.0.bb
@@ -13,7 +13,7 @@ RDEPENDS = "\
"
RREPLACES = "openmoko-sound-system"
RPROVIDES = "openmoko-sound-system"
-PR = "r4"
+PR = "r5"
inherit openmoko-base update-rc.d
diff --git a/packages/openprotium-init/openprotium-init_0.10.bb b/packages/openprotium-init/openprotium-init_0.10.bb
index f8facbb36f..7443fc9fd7 100644
--- a/packages/openprotium-init/openprotium-init_0.10.bb
+++ b/packages/openprotium-init/openprotium-init_0.10.bb
@@ -143,7 +143,6 @@ pkg_postrm_openprotium-init() {
done
}
-PACKAGES = "${PN}"
FILES_${PN} = "/"
# It is bad to overwrite /linuxrc as it puts the system back to
diff --git a/packages/openssl/openssl-0.9.7g/avr32.patch b/packages/openssl/openssl-0.9.7g/avr32.patch
new file mode 100644
index 0000000000..b6ac81b717
--- /dev/null
+++ b/packages/openssl/openssl-0.9.7g/avr32.patch
@@ -0,0 +1,10 @@
+--- Configure~ 2008-01-23 17:44:04.000000000 +0100
++++ Configure 2008-01-23 17:44:04.000000000 +0100
+@@ -442,6 +442,7 @@
+ "linux-mips", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:asm/linux_ppc32.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ # -bpowerpc64-linux is transient option, -m64 should be the one to use...
++"linux-avr32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).",
+ "linux-ppc64", "gcc:-bpowerpc64-linux -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:asm/linux_ppc64.o:::::::::dlfcn:linux-shared:-fPIC:-bpowerpc64-linux:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::",
+ "linux-s390", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
diff --git a/packages/openssl/openssl_0.9.7g.bb b/packages/openssl/openssl_0.9.7g.bb
index c128275867..3a420001c9 100644
--- a/packages/openssl/openssl_0.9.7g.bb
+++ b/packages/openssl/openssl_0.9.7g.bb
@@ -2,10 +2,11 @@ inherit pkgconfig
require openssl.inc
-PR = "r5"
+PR = "r6"
SRC_URI += "file://debian.patch;patch=1 \
file://armeb.patch;patch=1;pnum=0 \
file://gnueabi-arm.patch;patch=1 \
file://gnueabi-armeb.patch;patch=1 \
- file://uclibcgnueabi.patch;patch=1"
+ file://uclibcgnueabi.patch;patch=1 \
+ file://avr32.patch;patch=1;pnum=0"
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/.mtn2git_empty b/packages/openttd/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/.mtn2git_empty
+++ b/packages/openttd/files/.mtn2git_empty
diff --git a/packages/openttd/files/openttd_0.6.0-buildfix.patch b/packages/openttd/files/openttd_0.6.0-buildfix.patch
new file mode 100644
index 0000000000..d815cfc9c6
--- /dev/null
+++ b/packages/openttd/files/openttd_0.6.0-buildfix.patch
@@ -0,0 +1,25 @@
+Index: openttd-0.6.0-beta4/config.lib
+===================================================================
+--- openttd-0.6.0-beta4.orig/config.lib 2008-02-20 20:24:58.000000000 +0100
++++ openttd-0.6.0-beta4/config.lib 2008-02-20 20:26:55.000000000 +0100
+@@ -1255,7 +1255,7 @@
+ if [ -z "$6" ]; then
+ compiler="$3"
+ else
+- compiler="$3-$6"
++ compiler="$4"
+ fi
+ machine=`eval $compiler $9 2>/dev/null`
+ ret=$?
+@@ -1271,11 +1271,6 @@
+ exit 1
+ fi
+
+- if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then
+- log 1 "checking $1... expected $3, found $machine"
+- log 1 "the compiler suggests it doesn't build code for the machine you specified"
+- exit 1
+- fi
+ elif [ -n "$4" ]; then
+ # Check for manual compiler
+ machine=`$4 $9 2>/dev/null`
diff --git a/packages/openttd/openttd.inc b/packages/openttd/openttd.inc
new file mode 100644
index 0000000000..4c4c009296
--- /dev/null
+++ b/packages/openttd/openttd.inc
@@ -0,0 +1,46 @@
+# Note: OpenTTD's build system changed considerably in 0.6.x
+# This include file is written towards the newer versions.
+
+DESCRIPTION = "Open source clone of the Microprose game 'Transport Tycoon Deluxe' - SDL edition."
+HOMEPAGE = "http://openttd.sf.net"
+LICENSE = "GPLv2"
+
+DEPENDS = "libsdl-net libpng zlib freetype fontconfig"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/openttd/openttd-${PV}-source.tar.bz2"
+
+APPIMAGE = "media/openttd.48.png"
+
+inherit siteinfo sdl
+
+do_configure() {
+ # The way the OTTD configure system handles the application's directories
+ # isn't the way autotools does it. Mainly prefix is always prepended even if
+ # absolute binary-dir and data-dir is given. Sigh ...
+
+ # Disabling MIDI feature for now.
+ ./configure \
+ --build=${BUILD_SYS} \
+ --host=${TARGET_SYS} \
+ --windres=${MACHINE_DISPLAY_WIDTH_PIXELS}x${MACHINE_DISPLAY_HEIGHT_PIXELS} \
+ --os=UNIX \
+ --endian=${SITEINFO_ENDIANESS} \
+ --prefix-dir=${prefix} \
+ --binary-dir=bin \
+ --with-midi=/bin/true \
+ --with-zlib \
+ --with-png \
+ --with-freetype \
+ --cc-build=gcc \
+ --cc-host=${TARGET_SYS}-gcc \
+ --cxx-build=g++ \
+ --cxx-host=${TARGET_SYS}-g++ \
+ --strip=${TARGET_SYS}-strip \
+ --install-dir=${D}
+}
+
+do_install() {
+ oe_runmake install
+}
+
+FILES_${PN} += "${datadir}/*"
diff --git a/packages/openttd/openttd_0.4.0.1.bb b/packages/openttd/openttd_0.4.0.1.bb
index eb5f2e27e9..9dab970849 100644
--- a/packages/openttd/openttd_0.4.0.1.bb
+++ b/packages/openttd/openttd_0.4.0.1.bb
@@ -1,11 +1,6 @@
-DESCRIPTION = "Open source clone of the Microprose game 'Transport Tycoon Deluxe' - SDL edition."
-HOMEPAGE = "http://openttd.sf.net"
-LICENSE = "GPLv2"
-PR = "r1"
+require openttd.inc
-SRC_URI = "${SOURCEFORGE_MIRROR}/openttd/openttd-${PV}-source.tar.gz"
-
-APPIMAGE = "media/openttd.48.png"
+PR = "r2"
EXTRA_OEMAKE = "WITH_ZLIB=1 \
WITH_PNG=1 \
@@ -22,7 +17,9 @@ EXTRA_OEMAKE = "WITH_ZLIB=1 \
CC_HOST=gcc \
CC_TARGET=${TARGET_SYS}-gcc"
-inherit sdl
+do_configure() {
+ :
+}
do_install() {
oe_runmake install DESTDIR="${D}"
@@ -34,4 +31,3 @@ do_install() {
install -m 0644 ${S}/data/*.grf ${D}${datadir}/games/openttd/data/
}
-FILES_${PN} += "${datadir}/*"
diff --git a/packages/openttd/openttd_0.6.0-beta4.bb b/packages/openttd/openttd_0.6.0-beta4.bb
new file mode 100644
index 0000000000..b984d45dbf
--- /dev/null
+++ b/packages/openttd/openttd_0.6.0-beta4.bb
@@ -0,0 +1,8 @@
+require openttd.inc
+
+PR = "r0"
+
+SRC_URI += "file://openttd_0.6.0-buildfix.patch;patch=1"
+
+
+
diff --git a/packages/opie-i18n/opie-i18n.inc b/packages/opie-i18n/opie-i18n.inc
index da5b5866ad..8a1eaba5b3 100644
--- a/packages/opie-i18n/opie-i18n.inc
+++ b/packages/opie-i18n/opie-i18n.inc
@@ -35,7 +35,7 @@ do_install() {
done
}
-PACKAGES = "opie-i18n-cz opie-i18n-da opie-i18n-de opie-i18n-dk opie-i18n-en opie-i18n-es \
+PACKAGES = "${PN}-dbg opie-i18n-cz opie-i18n-da opie-i18n-de opie-i18n-dk opie-i18n-en opie-i18n-es \
opie-i18n-fr opie-i18n-hu opie-i18n-it opie-i18n-ja opie-i18n-ko opie-i18n-lv opie-i18n-mk \
opie-i18n-nl opie-i18n-no opie-i18n-pl opie-i18n-pt opie-i18n-pt-br opie-i18n-ru opie-i18n-sl \
opie-i18n-xx opie-i18n-zh-cn opie-i18n-zh-tw \
diff --git a/packages/opie-irc/files/utf8-topic.patch b/packages/opie-irc/files/utf8-topic.patch
deleted file mode 100644
index d8d9a52ca9..0000000000
--- a/packages/opie-irc/files/utf8-topic.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/ircmessageparser.cpp b/ircmessageparser.cpp
-index c449a65..ae47f69 100644
---- a/ircmessageparser.cpp
-+++ b/ircmessageparser.cpp
-@@ -667,11 +667,11 @@ void IRCMessageParser::parseNumericalNoSuchNick(IRCMessage *) {
- void IRCMessageParser::parseNumericalTopic(IRCMessage *message) {
- IRCChannel *channel = m_session->getChannel(message->param(1).lower());
- if (channel) {
-- IRCOutput output(OUTPUT_TOPIC, tr("Topic for channel " + channel->channelname() + " is \"" + message->param(2) + "\""));
-+ IRCOutput output(OUTPUT_TOPIC, tr("Topic for channel ") + channel->channelname() + tr(" is \"") + message->param(2) + "\"");
- output.addParam(channel);
- emit outputReady(output);
- } else {
-- IRCOutput output(OUTPUT_TOPIC, tr("Topic for channel " + message->param(1) + " is \"" + message->param(2) + "\""));
-+ IRCOutput output(OUTPUT_TOPIC, tr("Topic for channel ") + message->param(1) + tr(" is \"") + message->param(2) + "\"");
- output.addParam(0);
- emit outputReady(output);
- }
diff --git a/packages/opie-irc/files/utf8.patch b/packages/opie-irc/files/utf8.patch
deleted file mode 100644
index cc562838a2..0000000000
--- a/packages/opie-irc/files/utf8.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/ircconnection.cpp b/ircconnection.cpp
-index 88e63f7..fb7e168 100644
---- a/ircconnection.cpp
-+++ b/ircconnection.cpp
-@@ -29,7 +29,8 @@ void IRCConnection::sendLine(QString line) {
- while((line.right(1) == "\n") || (line.right(1) == "\r"))
- line = line.left(line.length() - 1);
- line.append("\r\n");
-- m_socket->writeBlock(line, line.length());
-+ QCString uline = line.utf8();
-+ m_socket->writeBlock(uline, uline.length());
- }
-
- void IRCConnection::sendCTCPReply(const QString &nickname, const QString &type, const QString &args) {
-@@ -77,7 +78,7 @@ void IRCConnection::login() {
- /* Called when data arrives on the socket */
- void IRCConnection::dataReady() {
- while(m_socket->canReadLine()) {
-- IRCMessage message(m_socket->readLine());
-+ IRCMessage message(QString::fromUtf8(m_socket->readLine()));
- if (!m_loggedIn && message.isNumerical() && message.commandNumber() == 1) {
- /* Now autojoin all channels specified inside the server profile */
- QStringList channels = QStringList::split(QChar(','), m_server->channels());
diff --git a/packages/opie-irc/opie-irc_1.2.3.bb b/packages/opie-irc/opie-irc_1.2.3.bb
index 2f333d6a41..1166c07eef 100644
--- a/packages/opie-irc/opie-irc_1.2.3.bb
+++ b/packages/opie-irc/opie-irc_1.2.3.bb
@@ -1,10 +1,8 @@
require ${PN}.inc
-PR = "r0"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/net/opieirc \
${HANDHELDS_CVS};tag=${TAG};module=opie/help \
${HANDHELDS_CVS};tag=${TAG};module=opie/apps \
- ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \
- file://utf8.patch;patch=1 \
- file://utf8-topic.patch;patch=1 "
+ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics"
diff --git a/packages/opie-irc/opie-irc_cvs.bb b/packages/opie-irc/opie-irc_cvs.bb
index 63e70179a4..ecf7f645a5 100644
--- a/packages/opie-irc/opie-irc_cvs.bb
+++ b/packages/opie-irc/opie-irc_cvs.bb
@@ -1,11 +1,9 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
-PR = "r2"
+PR = "r3"
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/net/opieirc \
${HANDHELDS_CVS};module=opie/help \
${HANDHELDS_CVS};module=opie/apps \
- ${HANDHELDS_CVS};module=opie/pics \
- file://utf8.patch;patch=1 \
- file://utf8-topic.patch;patch=1 "
+ ${HANDHELDS_CVS};module=opie/pics"
diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb b/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb
index 0ceaac41e4..7739f3bb15 100644
--- a/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb
+++ b/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "The classic Opie media player (core+plugins)."
LICENSE = "GPL"
ALLOW_EMPTY = "1"
-PACKAGES = "${PN}"
PACKAGE_ARCH = "all"
RDEPENDS = "opie-mediaplayer1-core"
RRECOMMENDS = "opie-mediaplayer1-libmadplugin opie-mediaplayer1-libwavplugin \
diff --git a/packages/opie-taskbar/opie-taskbar-images.inc b/packages/opie-taskbar/opie-taskbar-images.inc
index 2eac502751..7ec97bc56c 100644
--- a/packages/opie-taskbar/opie-taskbar-images.inc
+++ b/packages/opie-taskbar/opie-taskbar-images.inc
@@ -7,6 +7,8 @@ APPNAME = "qpe"
S = "${WORKDIR}/pics"
+inherit opie
+
# Wallpaper and welcome splash
PIXMAP_SIZE = ""
PIXMAP_SIZE_c7x0 = "-640x480"
@@ -18,7 +20,9 @@ PIXMAP_SIZE_asus730 = "-480x640"
PIXMAP_SIZE_htcuniversal= "-480x640"
PIXMAP_SIZE_hx4700 = "-480x640"
-PACKAGES = "${PN}-320x480 ${PN}-480x320 ${PN}-480x640 ${PN}-640x480 ${PN}-800x600 ${PN}-600x800 ${PN}-320x240 ${PN}-240x320 ${PN}-320x320"
+do_configure() {
+ :
+}
do_install() {
install -d ${D}${palmtopdir}/pics/launcher
@@ -54,3 +58,4 @@ python do_package_prepend () {
}
PACKAGE_ARCH = "all"
+PACKAGES = "${PN}-dbg ${PN}-320x480 ${PN}-480x320 ${PN}-480x640 ${PN}-640x480 ${PN}-800x600 ${PN}-600x800 ${PN}-320x240 ${PN}-240x320 ${PN}-320x320"
diff --git a/packages/opie-ttf-support/files/02qtttffont-update b/packages/opie-ttf-support/files/02qtttffont-update
new file mode 100644
index 0000000000..8f8058faea
--- /dev/null
+++ b/packages/opie-ttf-support/files/02qtttffont-update
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Author: Rolf Leggewie
+
+mkdir -p @@PALMTOPDIR@@/lib/fonts
+
+@@SBINDIR@@/update-qtttffontdir @@DATADIR@@/fonts/truetype > @@PALMTOPDIR@@/lib/fonts/fontdir
diff --git a/packages/opie-ttf-support/opie-ttf-support_1.1.bb b/packages/opie-ttf-support/opie-ttf-support_1.1.bb
index 74de9116b7..18ce7ac0c9 100644
--- a/packages/opie-ttf-support/opie-ttf-support_1.1.bb
+++ b/packages/opie-ttf-support/opie-ttf-support_1.1.bb
@@ -1,23 +1,26 @@
DESCRIPTION = "Meta-package for Opie TTF support"
-DEPENDS = "freetype"
SECTION = "opie/fonts"
-PR = "r2"
+DEPENDS = "freetype"
+PR = "r5"
-SRC_URI = "file://update-qtttffontdir.c"
+SRC_URI = "file://update-qtttffontdir.c \
+ file://02qtttffont-update"
S = "${WORKDIR}"
do_compile() {
- ${CC} ${CFLAGS} ${LDFLAGS} -I${STAGING_INCDIR}/freetype2 -lfreetype -o update-qtttffontdir update-qtttffontdir.c
+ ${CC} ${CFLAGS} ${LDFLAGS} -I${STAGING_INCDIR}/freetype2 -lfreetype -o update-qtttffontdir update-qtttffontdir.c
}
do_install() {
- install -d ${D}${sbindir}
- install -m 0755 update-qtttffontdir ${D}${sbindir}
+ install -d ${D}${sbindir}
+ install -d ${D}${sysconfdir}/update-fonts-common.d/
+ install -m 0755 update-qtttffontdir ${D}${sbindir}
+ install -m 0755 02qtttffont-update ${D}${sysconfdir}/update-fonts-common.d/
+ sed -i 's!@@SBINDIR@@!${sbindir}!g' ${D}${sysconfdir}/update-fonts-common.d/02qtttffont-update
+ sed -i 's!@@PALMTOPDIR@@!${palmtopdir}!g' ${D}${sysconfdir}/update-fonts-common.d/02qtttffont-update
+ sed -i 's!@@DATADIR@@!${datadir}!g' ${D}${sysconfdir}/update-fonts-common.d/02qtttffont-update
}
pkg_postinst() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-mkdir -p ${palmtopdir}/lib/fonts/
-${sbindir}/update-qtttffontdir ${datadir}/fonts/truetype >${palmtopdir}/lib/fonts/fontdir
+ ${sysconfdir}/update-fonts-common.d/02qtttffont-update
}
diff --git a/packages/qte-fonts-common/.mtn2git_empty b/packages/opkg/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qte-fonts-common/.mtn2git_empty
+++ b/packages/opkg/.mtn2git_empty
diff --git a/packages/opkg/opkg-ipkg-compat.bb b/packages/opkg/opkg-ipkg-compat.bb
new file mode 100644
index 0000000000..58c81451ae
--- /dev/null
+++ b/packages/opkg/opkg-ipkg-compat.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Files to make opkg and ipkg coexist"
+RDEPENDS = "opkg ipkg ipkg-collateral"
+
+PR = "r0"
+PACKAGE_ARCH = "all"
+
+do_compile() {
+ :
+}
+
+
+do_install () {
+ install -d ${D}${sysconfdir}
+ install -d ${D}/var/lib/ipkg
+ ln -sf ${sysconfdir}/ipkg.conf ${D}${sysconfdir}/opkg.conf
+ ln -sf ${sysconfdir}/ipkg/ ${D}${sysconfdir}/opkg
+ ln -sf /var/lib/ipkg ${D}/var/lib/ipkg
+}
+
diff --git a/packages/opkg/opkg-native_svn.bb b/packages/opkg/opkg-native_svn.bb
new file mode 100644
index 0000000000..2215a5798c
--- /dev/null
+++ b/packages/opkg/opkg-native_svn.bb
@@ -0,0 +1,8 @@
+require opkg_svn.bb
+
+target_libdir := "${libdir}"
+
+inherit native
+
+EXTRA_OECONF += "--with-opkglibdir=${target_libdir}/opkg -disable-gpg"
+
diff --git a/packages/opkg/opkg_svn.bb b/packages/opkg/opkg_svn.bb
new file mode 100644
index 0000000000..51c83f8968
--- /dev/null
+++ b/packages/opkg/opkg_svn.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Open Package Manager"
+DESCRIPTION_libipkg = "Open Package Manager Library"
+SECTION = "base"
+LICENSE = "GPL"
+DEPENDS = "curl gpgme"
+PV = "0.0+svnr${SRCREV}"
+SRC_URI = "svn://svn.openmoko.org/trunk/src/target/;module=opkg;proto=http"
+
+S = "${WORKDIR}/opkg"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ oe_libinstall -so libopkg ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/libopkg/
+ for f in *.h
+ do
+ install -m 0644 $f ${STAGING_INCDIR}/libopkg/
+ done
+}
+
+PACKAGES =+ "libopkg-dev libopkg"
+
+FILES_libopkg-dev = "${libdir}/*.a ${libdir}/*.la ${libdir}/*.so"
+FILES_libopkg = "${libdir}/*.so.*"
+
diff --git a/packages/orinoco/orinoco-modules.inc b/packages/orinoco/orinoco-modules.inc
index dcf87ffcfb..d0d0055645 100644
--- a/packages/orinoco/orinoco-modules.inc
+++ b/packages/orinoco/orinoco-modules.inc
@@ -14,7 +14,7 @@ S = "${WORKDIR}/orinoco-${PV}"
inherit module
-PACKAGES = "orinoco-modules-cs orinoco-modules-pci orinoco-modules-usb orinoco-modules-nortel orinoco-modules"
+PACKAGES = "${PN}-dbg orinoco-modules-cs orinoco-modules-pci orinoco-modules-usb orinoco-modules-nortel orinoco-modules"
FILES_orinoco-modules-pci = "/lib/modules/${KERNEL_VERSION}/net/orinoco_p*${KERNEL_OBJECT_SUFFIX}"
FILES_orinoco-modules-usb = "/lib/modules/${KERNEL_VERSION}/net/*_usb${KERNEL_OBJECT_SUFFIX}"
FILES_orinoco-modules-nortel = "/lib/modules/${KERNEL_VERSION}/net/orinoco_tmd${KERNEL_OBJECT_SUFFIX} \
diff --git a/packages/php/php-native_4.4.4.bb b/packages/php/php-native_4.4.4.bb
index c90aa83c01..84d1c667b5 100644
--- a/packages/php/php-native_4.4.4.bb
+++ b/packages/php/php-native_4.4.4.bb
@@ -3,3 +3,6 @@ require php_${PV}.bb
inherit native
FILESPATH = "${FILE_DIRNAME}/php-${PV}:${FILE_DIRNAME}/php:${FILE_DIRNAME}/files"
DEPENDS = "zlib-native"
+PR = "r2"
+
+S = "${WORKDIR}/php-${PV}"
diff --git a/packages/php/php-native_5.2.0.bb b/packages/php/php-native_5.2.0.bb
index 7f5bc9fd94..b04103c90b 100644
--- a/packages/php/php-native_5.2.0.bb
+++ b/packages/php/php-native_5.2.0.bb
@@ -6,4 +6,6 @@ export LD_LIBRARY_PATH = "${STAGING_LIBDIR}"
FILESPATH = "${FILE_DIRNAME}/php-${PV}:${FILE_DIRNAME}/php:${FILE_DIRNAME}/files"
DEPENDS = "zlib-native libxml2-native"
+PR = "r2"
+S = "${WORKDIR}/php-${PV}"
diff --git a/packages/php/php.inc b/packages/php/php.inc
index 6e2c26585a..321034bee7 100644
--- a/packages/php/php.inc
+++ b/packages/php/php.inc
@@ -1,10 +1,12 @@
-SECTION = "console/network"
DESCRIPTION = "A server-side, HTML-embedded scripting language. This package provides the CGI."
+HOMEPAGE = "http://www.php.net"
+SECTION = "console/network"
LICENSE = "PHP"
-SRC_URI = "http://de3.php.net/distributions/php-${PV}.tar.bz2 \
- file://${FILESDIR}/autotools.patch;patch=1 \
- file://${FILESDIR}/pear.patch;patch=1"
-S = "${WORKDIR}/php-${PV}"
+DEPENDS = "zlib libxml2 mysql virtual/libiconv php-native"
+
+SRC_URI = "http://us2.php.net/distributions/php-${PV}.tar.bz2\
+ file://autotools.patch;patch=1 \
+ file://acinclude-xml2-config.patch;patch=1"
inherit autotools
diff --git a/packages/php/php_4.4.4.bb b/packages/php/php_4.4.4.bb
index c15a9ee486..3000ad1fb6 100644
--- a/packages/php/php_4.4.4.bb
+++ b/packages/php/php_4.4.4.bb
@@ -1 +1,8 @@
require php.inc
+
+PR = "r1"
+
+SRC_URI = "http://museum.php.net/php4/php-${PV}.tar.bz2 \
+ file://${FILESDIR}/autotools.patch;patch=1 \
+ file://${FILESDIR}/pear.patch;patch=1"
+
diff --git a/packages/php/php_5.1.4.bb b/packages/php/php_5.1.4.bb
index a9ea9d2ed6..47475daca9 100644
--- a/packages/php/php_5.1.4.bb
+++ b/packages/php/php_5.1.4.bb
@@ -1,21 +1,12 @@
-SECTION = "console/network"
-DESCRIPTION = "A server-side, HTML-embedded scripting language. This package provides the CGI."
-LICENSE = "PHP"
-DEPENDS = "zlib libxml2 mysql virtual/libiconv"
+require php.inc
-SRC_URI = "http://us2.php.net/distributions/php-${PV}.tar.bz2\
- file://autotools.patch;patch=1 \
- file://acinclude-xml2-config.patch;patch=1"
-
-S = "${WORKDIR}/php-${PV}"
-PR = "r2"
+PR = "r3"
inherit autotools
export THREADS="pthread"
export LIBS=" -lpthread "
-CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
EXTRA_OECONF = "--without-iconv \
--enable-discard-path \
--enable-sockets \
@@ -28,13 +19,7 @@ EXTRA_OECONF += " --without-pear --with-libxml-dir=${STAGING_BINDIR} "
#EXTRA_OECONF += " --with-pear-php-cli=${STAGING_BINDIR_NATIVE}/php"
#DEPENDS += " php-native"
-acpaths = ""
-
do_configure_append() {
find ${S} -type f | xargs sed -i 's:/usr/lib:${STAGING_LIBDIR}:'
find ${S} -type f | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
}
-
-do_install () {
- oe_runmake 'INSTALL_ROOT=${D}' install
-}
diff --git a/packages/php/php_5.2.0.bb b/packages/php/php_5.2.0.bb
index e1ce34b8e6..4ed88cf411 100644
--- a/packages/php/php_5.2.0.bb
+++ b/packages/php/php_5.2.0.bb
@@ -1,22 +1,12 @@
-SECTION = "console/network"
-DESCRIPTION = "A server-side, HTML-embedded scripting language. This package provides the CGI."
-LICENSE = "PHP"
-DEPENDS = "zlib libxml2 mysql virtual/libiconv php-native"
+require php.inc
-SRC_URI = "http://us2.php.net/distributions/php-${PV}.tar.bz2\
- file://autotools.patch;patch=1 \
- file://acinclude-xml2-config.patch;patch=1 \
- file://pear-makefile.patch;patch=1 \
- "
-S = "${WORKDIR}/php-${PV}"
-PR = "r1"
+PR = "r2"
-inherit autotools
+SRC_URI += "file://pear-makefile.patch;patch=1 "
export THREADS="pthread"
export LIBS=" -lpthread "
-CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
EXTRA_OECONF = " --without-iconv \
--enable-discard-path \
--enable-sockets \
@@ -29,28 +19,16 @@ EXTRA_OECONF = " --without-iconv \
--with-mysqli="${STAGING_BINDIR_NATIVE}/mysql_config" \
"
-
-
-
-# Uncomment the following two lines, and comment the above to enable PEAR
EXTRA_OECONF += " --with-pear-php-cli=${STAGING_BINDIR} --with-libxml-dir=${STAGING_BINDIR}"
export LD_LIBRARY_PATH = "${STAGING_LIBDIR}"
export PHP_NATIVE_DIR="${STAGING_BINDIR_NATIVE}"
export PHP_PEAR_PHP_BIN="/usr/bin/php"
-acpaths = ""
-
do_configure_append() {
find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
}
-do_install () {
- oe_runmake 'INSTALL_ROOT=${D}' install
-}
-
-
-
PACKAGES = "${PN}-dbg \
${PN}-cli \
${PN}-pear \
@@ -59,7 +37,7 @@ PACKAGES = "${PN}-dbg \
"
-FILES_${PN}-dbg ="/usr/bin/.debug"
+FILES_${PN}-dbg =+"/usr/bin/.debug"
FILES_${PN}-cli ="/usr/bin/php"
@@ -76,17 +54,12 @@ FILES_${PN}-pear ="/usr/bin/pear* /usr/bin/pecl \
/usr/lib/php/.depdb /usr/lib/php/.depdblock /usr/lib/php/.filemap \
/usr/lib/php/.lock"
-
FILES_${PN}-dev ="/usr/include/php /usr/include/build \
/usr/bin/phpize /usr/bin/php-config"
FILES_${PN} ="/usr/lib/php"
FILES_${PN} +="/usr/bin"
-
-
RDEPENDS_${PN}-pear =${PN}
RDEPENDS_${PN}-cli =${PN}
RDEPENDS_${PN}-dev =${PN}
-
-
diff --git a/packages/qte-fonts-common/qte-fonts-common/.mtn2git_empty b/packages/pidgin/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qte-fonts-common/qte-fonts-common/.mtn2git_empty
+++ b/packages/pidgin/.mtn2git_empty
diff --git a/packages/pidgin/pidgin.inc b/packages/pidgin/pidgin.inc
new file mode 100644
index 0000000000..a2ef61a508
--- /dev/null
+++ b/packages/pidgin/pidgin.inc
@@ -0,0 +1,85 @@
+SECTION = "x11/network"
+DESCRIPTION = "multi-protocol instant messaging client"
+LICENSE = "GPL"
+
+DEPENDS = "avahi gtk+ ncurses gnutls virtual/libintl gstreamer dbus"
+RRECOMMENDS_${PN} = "libpurple-plugin-ssl-gnutls libpurple-protocol-irc libpurple-protocol-xmpp"
+
+EXTRA_OECONF = " \
+ --disable-audio \
+ --disable-perl \
+ --disable-tcl \
+ --disable-deprecated \
+ --disable-gevolution \
+ --x-includes=${STAGING_INCDIR} \
+ --x-libraries=${STAGING_LIBDIR} \
+ --enable-gnutls=yes \
+ --with-ncurses-headers=${STAGING_INCDIR} \
+ --with-gnutls-includes=${STAGING_INCDIR} \
+ --with-gnutls-libs=${STAGING_LIBDIR} \
+ "
+
+OE_LT_RPATH_ALLOW=":${libdir}/purple-2:"
+OE_LT_RPATH_ALLOW[export]="1"
+
+PACKAGES =+ "libpurple libpurple-dev libpurple-dbg libpurple-liboscar libpurple-libjabber libpurple-logreader finch finch-dev finch-dbg"
+
+
+LEAD_SONAME = "libpurple.so.0"
+FILES_libpurple = "${libdir}/libpurple*.so.* /usr/bin/purple-* /etc/gconf/schemas/purple*"
+FILES_libpurple-dev = "${libdir}/libpurple* \
+ ${libdir}/purple-2/*.la "
+FILES_libpurple-dbg += "${libdir}/.debug/libpurple* \
+ ${libdir}/purple-2/.debug"
+FILES_libpurple-liboscar = "${libdir}/purple-2/liboscar.so.*"
+FILES_libpurple-libjabber = "${libdir}/purple-2/libjabber.so.*"
+FILES_libpurple-logreader = "${libdir}/purple-2/log_reader.so"
+FILES_finch = "${bindir}/finch /usr/lib/libgnt.so.*"
+FILES_finch-dev = "${libdir}/finch/*.la"
+FILES_finch-dbg = "${bindir}/.debug/finch \
+ ${libdir}/finch/.debug"
+
+FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
+ ${sysconfdir} ${sharedstatedir} ${localstatedir} \
+ /bin /sbin /lib/*.so* ${datadir}/${PN} ${libdir}/${PN}/*.so \
+ ${datadir}/pixmaps ${datadir}/applications \
+ ${datadir}/idl ${datadir}/omf ${datadir}/sounds \
+ ${libdir}/bonobo/servers ${datadir}/icons"
+FILES_${PN}-dev += "${libdir}/pidgin/*.la"
+
+inherit autotools gettext pkgconfig gconf
+
+PACKAGES_DYNAMIC = "libpurple-protocol-* libpurple-plugin-* pidgin-plugin-* finch-plugin-*"
+
+python populate_packages_prepend () {
+ root = bb.data.expand('${libdir}/pidgin', d)
+ purple = bb.data.expand('${libdir}/purple-2', d)
+ finch = bb.data.expand('${libdir}/finch', d)
+
+ do_split_packages(d, root, '^([^l][^i][^b].*)\.so$',
+ output_pattern='pidgin-plugin-%s',
+ description='Pidgin plugin %s',
+ prepend=True, extra_depends='')
+
+ do_split_packages(d, purple, '^lib(.*)\.so$',
+ output_pattern='libpurple-protocol-%s',
+ description='Libpurple protocol plugin for %s',
+ prepend=True, extra_depends='')
+
+ do_split_packages(d, purple, '^(ssl-.*)\.so$',
+ output_pattern='libpurple-plugin-%s',
+ description='libpurple plugin %s',
+ prepend=True, extra_depends='libpurple-plugin-ssl')
+
+ do_split_packages(d, purple, '^([^l][^i][^b].*)\.so$',
+ output_pattern='libpurple-plugin-%s',
+ description='libpurple plugin %s',
+ prepend=True, extra_depends='')
+
+ do_split_packages(d, finch, '^([^l][^i][^b].*)\.so$',
+ output_pattern='finch-plugin-%s',
+ description='Finch plugin %s',
+ prepend=True, extra_depends='')
+
+
+}
diff --git a/packages/randrext/.mtn2git_empty b/packages/pidgin/pidgin/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/randrext/.mtn2git_empty
+++ b/packages/pidgin/pidgin/.mtn2git_empty
diff --git a/packages/gaim/pidgin/gconf-no-errors.patch b/packages/pidgin/pidgin/gconf-no-errors.patch
index 9a95175ac9..9a95175ac9 100644
--- a/packages/gaim/pidgin/gconf-no-errors.patch
+++ b/packages/pidgin/pidgin/gconf-no-errors.patch
diff --git a/packages/gaim/pidgin/pidgin.desktop-set-icon.patch b/packages/pidgin/pidgin/pidgin.desktop-set-icon.patch
index 05f76895ba..05f76895ba 100644
--- a/packages/gaim/pidgin/pidgin.desktop-set-icon.patch
+++ b/packages/pidgin/pidgin/pidgin.desktop-set-icon.patch
diff --git a/packages/gaim/files/purple-OE-branding.patch b/packages/pidgin/pidgin/purple-OE-branding.patch
index 99c61375ce..99c61375ce 100644
--- a/packages/gaim/files/purple-OE-branding.patch
+++ b/packages/pidgin/pidgin/purple-OE-branding.patch
diff --git a/packages/gaim/pidgin/sanitize-configure.ac.patch b/packages/pidgin/pidgin/sanitize-configure.ac.patch
index a77d64f40b..a77d64f40b 100644
--- a/packages/gaim/pidgin/sanitize-configure.ac.patch
+++ b/packages/pidgin/pidgin/sanitize-configure.ac.patch
diff --git a/packages/gaim/pidgin_2.0.2.bb b/packages/pidgin/pidgin_2.0.2.bb
index 2cc02c5072..2cc02c5072 100644
--- a/packages/gaim/pidgin_2.0.2.bb
+++ b/packages/pidgin/pidgin_2.0.2.bb
diff --git a/packages/gaim/pidgin_2.1.1.bb b/packages/pidgin/pidgin_2.1.1.bb
index 5531880669..5531880669 100644
--- a/packages/gaim/pidgin_2.1.1.bb
+++ b/packages/pidgin/pidgin_2.1.1.bb
diff --git a/packages/gaim/pidgin_2.2.1.bb b/packages/pidgin/pidgin_2.2.1.bb
index 5531880669..5531880669 100644
--- a/packages/gaim/pidgin_2.2.1.bb
+++ b/packages/pidgin/pidgin_2.2.1.bb
diff --git a/packages/pine/pine_4.64.bb b/packages/pine/pine_4.64.bb
index 22a5cae098..990e282c3c 100644
--- a/packages/pine/pine_4.64.bb
+++ b/packages/pine/pine_4.64.bb
@@ -53,6 +53,6 @@ do_install() {
done
}
-PACKAGES = "pico pine"
+PACKAGES = "${PN}-dbg pico pine"
FILES_pico = "${bindir}/pico ${bindir}/pilot"
diff --git a/packages/poppler/poppler_0.5.4.bb b/packages/poppler/poppler_0.5.4.bb
deleted file mode 100644
index 754eccf435..0000000000
--- a/packages/poppler/poppler_0.5.4.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require poppler.inc
-PR = "r3"
diff --git a/packages/poppler/poppler_0.6.2.bb b/packages/poppler/poppler_0.6.4.bb
index 3c1ec00183..3c1ec00183 100644
--- a/packages/poppler/poppler_0.6.2.bb
+++ b/packages/poppler/poppler_0.6.4.bb
diff --git a/packages/poppler/poppler_0.6.bb b/packages/poppler/poppler_0.6.bb
deleted file mode 100644
index 3c1ec00183..0000000000
--- a/packages/poppler/poppler_0.6.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require poppler.inc
-
-PR = "r0"
-
-EXTRA_OECONF_append = " --disable-abiword-output "
-
diff --git a/packages/portaudio/portaudio_0.0.19.bb b/packages/portaudio/portaudio_0.0.19.bb
index e5bb5e850f..748519f5b1 100644
--- a/packages/portaudio/portaudio_0.0.19.bb
+++ b/packages/portaudio/portaudio_0.0.19.bb
@@ -82,6 +82,6 @@ do_install() {
install -m 0755 bin/* ${D}${bindir}/
}
-PACKAGES = "libportaudio0 portaudio-dev portaudio-examples"
+PACKAGES = "${PN}-dbg libportaudio0 portaudio-dev portaudio-examples"
FILES_libportaudio0 = "${libdir}"
FILES_portaudio-examples = "${bindir}"
diff --git a/packages/postgresql/postgresql.inc b/packages/postgresql/postgresql.inc
new file mode 100644
index 0000000000..9f1335b2bd
--- /dev/null
+++ b/packages/postgresql/postgresql.inc
@@ -0,0 +1,71 @@
+DESCRIPTION = "PostgreSQL is a powerful, open source relational database system."
+HOMEPAGE = "http://www.postgresql.com"
+LICENSE = "BSD"
+DEPENDS = "zlib readline"
+
+#WARNING: this recipe assumes you have the timezone compiler present in /usr/sbin/zic
+
+SRC_URI = "ftp://ftp-archives.postgresql.org/pub/source/v${PV}/${P}.tar.bz2"
+
+LEAD_SONAME = "libpq.so"
+
+inherit autotools pkgconfig
+
+do_compile_append() {
+ cp /usr/sbin/zic ${S}/src/timezone/
+}
+
+do_stage() {
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/pgsql
+ oe_libinstall -a -so -C src/interfaces/libpq libpq ${STAGING_LIBDIR}/pgsql
+
+ oe_libinstall -a -so -C src/interfaces/ecpg/ecpglib libecpg ${STAGING_LIBDIR}
+ oe_libinstall -a -so -C src/interfaces/ecpg/compatlib libecpg_compat ${STAGING_LIBDIR}
+ oe_libinstall -a -so -C src/interfaces/ecpg/pgtypeslib libpgtypes ${STAGING_LIBDIR}
+}
+
+PACKAGES =+ "${PN}-client ${PN}-server-dev ${PN}-timezone \
+ libecpg-compat-dbg libecpg-compat \
+ libecpg-dbg libecpg libecpg-dev \
+ libpq-dbg libpq libpq-dev \
+ libpgtypes-dbg libpgtypes "
+
+FILES_${PN}-client = "${bindir}/clusterdb \
+ ${bindir}/createdb \
+ ${bindir}/createlang \
+ ${bindir}/createuser \
+ ${bindir}/dropdb \
+ ${bindir}/droplang \
+ ${bindir}/dropuser \
+ ${bindir}/pg_dump \
+ ${bindir}/pg_dumpall \
+ ${bindir}/pg_restore \
+ ${bindir}/psql \
+ ${bindir}/reindexdb \
+ ${bindir}/vacuumdb \
+ ${bindir}/vacuumlo \
+ ${datadir}/${PN}/psqlrc.sample"
+
+FILES_${PN}-doc += "${prefix}/doc/"
+FILES_${PN}-timezone = "${datadir}/${PN}/timezone"
+FILES_${PN}-server-dev = "${includedir}/${PN}/server"
+
+FILES_libecpg = "${libdir}/libecpg*.so.*"
+FILES_libecpg-dbg = "${libdir}/.debug/libecpg*"
+FILES_libecpg-dev = "${libdir}/libecpg*.a ${libdir}/libecpg*.so \
+ ${libdir}/libpgtypes*.a ${libdir}/libpgtypes*.so \
+ ${includedir}/ecpg*.h ${includedir}/${PN}/ecpg*.h \
+ ${includedir}/pgtypes*.h ${includedir}/${PN}/informix \
+ ${includedir}/sql3types.h ${includedir}/sqlca.h"
+
+FILES_libpq = "${libdir}/libpq*.so.*"
+FILES_libpq-dbg = "${libdir}/.debug/libpq*"
+FILES_libpq-dev = "${libdir}/libpq*.a ${libdir}/libpq*.so ${libdir}/libpgport.a \
+ ${includedir}"
+
+FILES_libecpg-compat = "${libdir}/libecpg_compat*.so.*"
+FILES_libecpg-compat-dbg = "${libdir}/.debug/libecpg_compat*"
+FILES_libpgtypes = "${libdir}/libpgtypes*.so.*"
+FILES_libpgtypes-dbg = "${libdir}/.debug/libpgtypes*"
diff --git a/packages/postgresql/postgresql_8.1.4.bb b/packages/postgresql/postgresql_8.1.4.bb
index 083fed5a21..eb03642085 100644
--- a/packages/postgresql/postgresql_8.1.4.bb
+++ b/packages/postgresql/postgresql_8.1.4.bb
@@ -1,20 +1,3 @@
-DESCRIPTION = "PostgreSQL is a powerful, open source relational database system."
-HOMEPAGE = "http://www.postgresql.com"
-LICENSE = "BSD"
-DEPENDS = "zlib readline"
-
-#WARNING: this recipe assumes you have the timezone compiler present in /usr/sbin/zic
-
-SRC_URI = "ftp://ftp-archives.postgresql.org/pub/source/v${PV}/${P}.tar.bz2"
-
-
-inherit autotools pkgconfig
-
-FILES_${PN}-doc += "${prefix}/doc/"
-
-do_compile_append() {
-cp /usr/sbin/zic ${S}/src/timezone/
-}
-
-
+require postgresql.inc
+PR = "r2"
diff --git a/packages/postgresql/postgresql_8.1.8.bb b/packages/postgresql/postgresql_8.1.8.bb
index be44052437..eb03642085 100644
--- a/packages/postgresql/postgresql_8.1.8.bb
+++ b/packages/postgresql/postgresql_8.1.8.bb
@@ -1,20 +1,3 @@
-DESCRIPTION = "PostgreSQL is a powerful, open source relational database system."
-HOMEPAGE = "http://www.postgresql.com"
-LICENSE = "BSD"
-DEPENDS = "zlib readline"
-
-#WARNING: this recipe assumes you have the timezone compiler present in /usr/sbin/zic
-
-SRC_URI = "ftp://ftp.us.postgresql.org/pub/mirrors/postgresql/source/v${PV}/${P}.tar.bz2"
-
-
-inherit autotools pkgconfig
-
-FILES_${PN}-doc += "${prefix}/doc/"
-
-do_compile_append() {
-cp /usr/sbin/zic ${S}/src/timezone/
-}
-
-
+require postgresql.inc
+PR = "r2"
diff --git a/packages/postgresql/postgresql_8.2.4.bb b/packages/postgresql/postgresql_8.2.4.bb
index 3f65a4fd0d..6e778e5b49 100644
--- a/packages/postgresql/postgresql_8.2.4.bb
+++ b/packages/postgresql/postgresql_8.2.4.bb
@@ -1,20 +1,7 @@
-DESCRIPTION = "PostgreSQL is a powerful, open source relational database system."
-HOMEPAGE = "http://www.postgresql.com"
-LICENSE = "BSD"
-DEPENDS = "zlib readline"
-
-#WARNING: this recipe assumes you have the timezone compiler present in /usr/sbin/zic
-
-SRC_URI = "ftp://ftp.us.postgresql.org/pub/mirrors/postgresql/source/v${PV}/${P}.tar.bz2 \
- file://no-ecpg-test.patch;patch=1"
-
-
-inherit autotools pkgconfig
-
-FILES_${PN}-doc += "${prefix}/doc/"
-
-do_compile_append() {
-cp /usr/sbin/zic ${S}/src/timezone/
-}
+require postgresql.inc
+PR = "r2"
DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://ftp.de.postgresql.org/mirror/postgresql/source/v${PV}/${P}.tar.bz2 \
+ file://no-ecpg-test.patch;patch=1"
diff --git a/packages/prismstumbler/prismstumbler_0.7.2.bb b/packages/prismstumbler/prismstumbler_0.7.2.bb
index 4cb390ce33..cda97bc832 100644
--- a/packages/prismstumbler/prismstumbler_0.7.2.bb
+++ b/packages/prismstumbler/prismstumbler_0.7.2.bb
@@ -1,7 +1,7 @@
SECTION = "x11/network"
PR = "r1"
-PACKAGES = "prismstumbler prismstumbler-frontend"
+PACKAGES = "${PN}-dbg prismstumbler prismstumbler-frontend"
DESCRIPTION = "Prismstumbler wireless LAN scanner"
LICENSE = "GPL"
DEPENDS = "libpcap gtk+ wireless-tools sqlite"
diff --git a/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb b/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
index 86b4df46bf..22309f9203 100644
--- a/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
+++ b/packages/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
@@ -1,7 +1,7 @@
SECTION = "x11/network"
PR = "r3"
-PACKAGES = "prismstumbler prismstumbler-frontend prismstumbler-doc"
+PACKAGES = "${PN}-dbg prismstumbler prismstumbler-frontend prismstumbler-doc"
DESCRIPTION = "Prismstumbler wireless LAN scanner"
DESCRIPTION_prismstumbler-frontend = "Prismstumbler wireless LAN scanner GTK frontend"
LICENSE = "GPL"
@@ -20,12 +20,12 @@ inherit autotools pkgconfig
EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
--x-libraries=${STAGING_LIBDIR} \
- --with-libgps=${STAGING_DIR}/${HOST_SYS} \
- --with-libpcap=${STAGING_DIR}/${HOST_SYS} \
+ --with-libgps=${STAGING_EXECPREFIXDIR} \
+ --with-libpcap=${STAGING_EXECPREFIXDIR} \
--with-sqlite-includes=${STAGING_INCDIR} \
--with-sqlite-libs=${STAGING_LIBDIR} \
--without-athena --enable-dbus \
- --with-libiw=${STAGING_DIR}/${HOST_SYS}"
+ --with-libiw=${STAGING_EXECPREFIXDIR}"
CFLAGS =+ "-I${S}/include"
LDFLAGS += "-lz"
diff --git a/packages/prismstumbler/prismstumbler_0.7.3.bb b/packages/prismstumbler/prismstumbler_0.7.3.bb
index eaebe2087f..5bddcf31b6 100644
--- a/packages/prismstumbler/prismstumbler_0.7.3.bb
+++ b/packages/prismstumbler/prismstumbler_0.7.3.bb
@@ -1,7 +1,7 @@
SECTION = "x11/network"
PR = "r5"
-PACKAGES = "prismstumbler prismstumbler-frontend prismstumbler-doc"
+PACKAGES = "${PN}-dbg prismstumbler prismstumbler-frontend prismstumbler-doc"
DESCRIPTION = "Prismstumbler wireless LAN scanner"
LICENSE = "GPL"
DEPENDS = "libpcap gtk+ wireless-tools sqlite zlib libxpm"
@@ -17,7 +17,7 @@ inherit autotools pkgconfig
EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
--x-libraries=${STAGING_LIBDIR} \
- --with-libpcap=${STAGING_DIR}/${HOST_SYS} \
+ --with-libpcap=${STAGING_EXECPREFIXDIR} \
--with-sqlite-includes=${STAGING_INCDIR} \
--with-sqlite-libs=${STAGING_LIBDIR} \
--without-athena \
diff --git a/packages/psmisc/psmisc.inc b/packages/psmisc/psmisc.inc
index 0d8faf1ed6..c67705e67b 100644
--- a/packages/psmisc/psmisc.inc
+++ b/packages/psmisc/psmisc.inc
@@ -12,7 +12,7 @@ inherit autotools gettext
ALLOW_EMPTY = "1"
-PACKAGES = "${PN} fuser fuser-doc \
+PACKAGES = "${PN}-dbg ${PN} fuser fuser-doc \
killall killall-doc \
pstree pstree-doc"
diff --git a/packages/psmisc/psmisc_20.2.bb b/packages/psmisc/psmisc_20.2.bb
index a6140e7414..68f11dce13 100644
--- a/packages/psmisc/psmisc_20.2.bb
+++ b/packages/psmisc/psmisc_20.2.bb
@@ -13,7 +13,7 @@ inherit autotools gettext
ALLOW_EMPTY = "1"
-PACKAGES = "${PN} fuser fuser-doc \
+PACKAGES = "${PN}-dbg ${PN} fuser fuser-doc \
killall killall-doc \
pstree pstree-doc"
diff --git a/packages/psplash/files/logo-math.patch b/packages/psplash/files/logo-math.patch
index 87574b1855..21467af0ec 100644
--- a/packages/psplash/files/logo-math.patch
+++ b/packages/psplash/files/logo-math.patch
@@ -1,3 +1,5 @@
+upstream: http://bugzilla.openedhand.com/show_bug.cgi?id=801
+comment:
Do better math when showing logo vs progressbar.
--- psplash/psplash.c.org 2007-09-22 20:33:36.000000000 +0300
diff --git a/packages/psplash/psplash_svn.bb b/packages/psplash/psplash_svn.bb
index 17b459a15f..7e19ce3cbb 100644
--- a/packages/psplash/psplash_svn.bb
+++ b/packages/psplash/psplash_svn.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://projects.o-hand.com/psplash"
SECTION = "base"
LICENSE = "GPL"
PV = "0.0+svnr${SRCREV}"
-PR = "r12"
+PR = "r13"
RDEPENDS = "initscripts"
# You can create your own pslash-hand-img.h by doing
@@ -36,6 +36,6 @@ do_install_prepend() {
}
INITSCRIPT_NAME = "psplash"
-INITSCRIPT_PARAMS = "start 0 S . stop 20 0 1 6 ."
+INITSCRIPT_PARAMS = "start 01 S . stop 20 0 1 6 ."
FILES_${PN} += "/mnt/.psplash"
diff --git a/packages/pulseaudio/files/disable-using-glibc-tls.patch b/packages/pulseaudio/files/disable-using-glibc-tls.patch
index 9646e2c2d0..31d147be7d 100644
--- a/packages/pulseaudio/files/disable-using-glibc-tls.patch
+++ b/packages/pulseaudio/files/disable-using-glibc-tls.patch
@@ -1,8 +1,8 @@
-Index: pulseaudio-0.9.7/configure.ac
+Index: pulseaudio-0.9.9/configure.ac
===================================================================
---- pulseaudio-0.9.7.orig/configure.ac
-+++ pulseaudio-0.9.7/configure.ac
-@@ -124,8 +124,8 @@
+--- pulseaudio-0.9.9.orig/configure.ac 2008-01-24 01:06:06.000000000 +0000
++++ pulseaudio-0.9.9/configure.ac 2008-02-05 17:45:59.000000000 +0000
+@@ -139,8 +139,8 @@
ret=$?
rm -f conftest.o conftest
if test $ret -eq 0 ; then
@@ -13,3 +13,13 @@ Index: pulseaudio-0.9.7/configure.ac
else
AC_MSG_RESULT([no])
fi
+@@ -325,8 +325,7 @@
+ rm -f conftest.o conftest
+
+ if test $ret -eq 0 ; then
+- AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])
+- AC_MSG_RESULT([yes])
++ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([no])
+ fi
diff --git a/packages/pulseaudio/pulse.inc b/packages/pulseaudio/pulse.inc
index b6b622d9c6..4b13980cc4 100644
--- a/packages/pulseaudio/pulse.inc
+++ b/packages/pulseaudio/pulse.inc
@@ -20,8 +20,8 @@ EXTRA_OECONF = "\
--with-glib \
--with-alsa \
--with-oss \
- --with-hal \
- "
+ --with-hal \
+"
PARALLEL_MAKE = ""
@@ -83,7 +83,8 @@ pkg_postinst_${PN}-server() {
grep -q pulse: /etc/group || addgroup pulse
grep -q pulse: /etc/passwd || \
adduser --disabled-password --home=/var/run/pulse --system \
- --ingroup pulse --no-create-home -g "Pulse audio daemon" pulse
+ --ingroup pulse --no-create-home -g "Pulse audio daemon" pulse
+ addgroup pulse audio
/etc/init.d/populate-volatile.sh update
}
diff --git a/packages/pulseaudio/pulseaudio_0.9.6.bb b/packages/pulseaudio/pulseaudio_0.9.6.bb
index aa07afe6fe..56b717aac7 100644
--- a/packages/pulseaudio/pulseaudio_0.9.6.bb
+++ b/packages/pulseaudio/pulseaudio_0.9.6.bb
@@ -1,4 +1,4 @@
require pulse.inc
-PR = "r6"
+PR = "r7"
diff --git a/packages/pulseaudio/pulseaudio_0.9.8.bb b/packages/pulseaudio/pulseaudio_0.9.8.bb
deleted file mode 100644
index 93c8ffb849..0000000000
--- a/packages/pulseaudio/pulseaudio_0.9.8.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require pulse.inc
-
-DEPENDS += "dbus"
-
-# this is not correct (see below)
-SRC_URI += "\
- file://disable-using-glibc-tls.patch;patch=1 \
- file://fix-dbus-without-hal.patch;patch=1 \
-"
-
-PR = "r0"
-
-# problems w/ pulseaudio 0.9.8 atm:
-# 1.) needs libltdl >= 1.5.24 (yes, any older version will NOT work at runtime)
-# 2.) doesn't build w/ glibc TLS support (hence patched out)
-DEFAULT_PREFERENCE = "-1"
-
diff --git a/packages/pulseaudio/pulseaudio_0.9.9.bb b/packages/pulseaudio/pulseaudio_0.9.9.bb
new file mode 100644
index 0000000000..7e63b61eb3
--- /dev/null
+++ b/packages/pulseaudio/pulseaudio_0.9.9.bb
@@ -0,0 +1,16 @@
+require pulse.inc
+
+DEPENDS += "dbus"
+
+# this is not correct (see below)
+SRC_URI += "\
+ file://disable-using-glibc-tls.patch;patch=1 \
+ file://fix-dbus-without-hal.patch;patch=1 \
+"
+
+PR = "r3"
+
+# problems w/ pulseaudio 0.9.9 atm:
+# 1.) needs libltdl >= 1.5.24 (yes, any older version will NOT work at runtime)
+# 2.) doesn't build w/ glibc TLS support (hence patched out)
+# 3.) fails with hierarchical pthread stuff w/ gst-pulse (hence patched out)
diff --git a/packages/python/python-2.5.1/sitecustomize.py b/packages/python/python-2.5.1/sitecustomize.py
index b5e78d3200..4c0ba3f0da 100644
--- a/packages/python/python-2.5.1/sitecustomize.py
+++ b/packages/python/python-2.5.1/sitecustomize.py
@@ -7,11 +7,11 @@
# * load command line history on startup
# * save command line history on exit
-HISTORY_FILENAME = "/tmp/python-history-file.txt"
+import os
def __exithandler():
try:
- readline.write_history_file( HISTORY_FILENAME )
+ readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
except IOError:
pass
@@ -22,7 +22,7 @@ def __registerExitHandler():
def __enableReadlineSupport():
readline.parse_and_bind("tab: complete")
try:
- readline.read_history_file( "/tmp/python-history-file.txt" )
+ readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
except IOError:
pass
diff --git a/packages/python/python-dbus/allow-older-autotools.patch b/packages/python/python-dbus/allow-older-autotools.patch
deleted file mode 100644
index 7595f70e5d..0000000000
--- a/packages/python/python-dbus/allow-older-autotools.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# so it looks like dbus-python really doesn't make use of any 2.59c features
-# Signed-Off: mickey@openmoko.org
-#
-Index: dbus-python-0.81.1/configure.ac
-===================================================================
---- dbus-python-0.81.1.orig/configure.ac 2007-06-04 13:17:10.000000000 +0000
-+++ dbus-python-0.81.1/configure.ac 2007-06-11 06:57:20.000000000 +0000
-@@ -1,5 +1,5 @@
- -*- mode: m4 -*-
--AC_PREREQ(2.59c)
-+AC_PREREQ(2.59)
-
- dnl If not 1, append datestamp to the version number
- m4_define(dbus_python_released, 1)
-Index: dbus-python-0.81.1/Makefile.am
-===================================================================
---- dbus-python-0.81.1.orig/Makefile.am 2007-05-09 09:44:40.000000000 +0000
-+++ dbus-python-0.81.1/Makefile.am 2007-06-11 06:59:23.000000000 +0000
-@@ -38,6 +38,7 @@
-
- TXT_RSTDOCS = doc/tutorial.txt doc/API_CHANGES.txt doc/HACKING.txt
- RSTDOCS = README NEWS TODO
-+docdir=foo
- dist_doc_DATA = $(TXT_RSTDOCS) $(RSTDOCS)
-
- maintainer-update-website: _maintainer-update-apidocs \
diff --git a/packages/python/python-dbus/python-path.patch b/packages/python/python-dbus/python-path.patch
deleted file mode 100644
index 6bdbd19d03..0000000000
--- a/packages/python/python-dbus/python-path.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- dbus-python-0.81.1/m4.orig/am-check-python-headers.m4
-+++ dbus-python-0.81.1/m4/am-check-python-headers.m4
-@@ -7214,12 +7214,18 @@
- [AC_REQUIRE([AM_PATH_PYTHON])
- AC_MSG_CHECKING(for headers required to compile python extensions)
- dnl deduce PYTHON_INCLUDES
-+AC_ARG_WITH(python-includes,
-+ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
-+if test x$py_exec_prefix != x; then
-+PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-+else
- py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
- py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
- PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
- if test "$py_prefix" != "$py_exec_prefix"; then
- PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
- fi
-+fi
- AC_SUBST(PYTHON_INCLUDES)
- dnl check if the headers exist:
- save_CPPFLAGS="$CPPFLAGS"
diff --git a/packages/python/python-dbus_0.81.1.bb b/packages/python/python-dbus_0.81.1.bb
deleted file mode 100644
index ad3b1c177b..0000000000
--- a/packages/python/python-dbus_0.81.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Python bindings for DBus, a socket-based message bus system for interprocess communication"
-SECTION = "devel/python"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-LICENSE = "GPL"
-DEPENDS = "expat glib-2.0 virtual/libintl python-pyrex-native python"
-RDEPENDS = "dbus python-threading python-io python-stringold python-logging"
-PR = "ml1"
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \
- file://allow-older-autotools.patch;patch=1 \
- file://python-path.patch;patch=1"
-
-S = "${WORKDIR}/dbus-python-${PV}"
-
-inherit distutils-base autotools
-
-EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
-
diff --git a/packages/python/python-dbus_0.82.4.bb b/packages/python/python-dbus_0.82.4.bb
new file mode 100644
index 0000000000..c17f1c766b
--- /dev/null
+++ b/packages/python/python-dbus_0.82.4.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Python bindings for DBus, a socket-based message bus system for interprocess communication"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+LICENSE = "MIT"
+DEPENDS = "expat dbus dbus-glib virtual/libintl python-pyrex-native"
+RDEPENDS = "python-threading python-io python-stringold python-logging"
+PR = "ml1"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz"
+S = "${WORKDIR}/dbus-python-${PV}"
+
+inherit distutils-base autotools
+
+export BUILD_SYS := "${BUILD_SYS}"
+export HOST_SYS := "${HOST_SYS}"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/python/python-ecore_cvs.bb b/packages/python/python-ecore_cvs.bb
index 0ec598f5a0..73c4b7ea00 100644
--- a/packages/python/python-ecore_cvs.bb
+++ b/packages/python/python-ecore_cvs.bb
@@ -1,6 +1,7 @@
require python-efl.inc
-DEPENDS += "ecore"
-PR = "r5"
+DEPENDS += "python-evas ecore"
+PV = "0.2.1+cvs${SRCDATE}"
+PR = "r0"
do_stage() {
distutils_stage_all
diff --git a/packages/python/python-edbus_cvs.bb b/packages/python/python-edbus_cvs.bb
index 7a4d53762f..dc4b09cee8 100644
--- a/packages/python/python-edbus_cvs.bb
+++ b/packages/python/python-edbus_cvs.bb
@@ -1,7 +1,6 @@
require python-efl.inc
-# broken until someone adds dbus 1.1.x
-DEPENDS += "edbus dbus-1.1"
-
+DEPENDS += "edbus python-dbus"
+PV = "0.1.1+cvs${SRCDATE}"
PR = "r0"
SRC_URI = "${E_CVS};module=e17/proto/python-efl/python-e_dbus"
diff --git a/packages/python/python-edje_cvs.bb b/packages/python/python-edje_cvs.bb
index 1205e7ec84..3ee4b1decd 100644
--- a/packages/python/python-edje_cvs.bb
+++ b/packages/python/python-edje_cvs.bb
@@ -1,4 +1,5 @@
require python-efl.inc
DEPENDS += "edje python-evas"
-PR = "r5"
+PV = "0.2.1+cvs${SRCDATE}"
+PR = "r0"
diff --git a/packages/python/python-efl-examples.bb b/packages/python/python-efl-examples.bb
deleted file mode 100644
index 0a4e32097f..0000000000
--- a/packages/python/python-efl-examples.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-DESCRIPTION = "Python Examples for the Enlightenment Foundation Libraries"
-LICENSE = "MIT"
-SECTION = "devel/python"
-RDEPENDS = "\
- python-efl python-ecore-examples python-emotion-examples python-edje-examples python-epsilon-examples \
- python-math python-textutils \
-"
-PR = "ml2"
-
-ALLOW_EMPTY = "1"
diff --git a/packages/python/python-efl.bb b/packages/python/python-efl.bb
deleted file mode 100644
index ec5e9cd7e2..0000000000
--- a/packages/python/python-efl.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-DESCRIPTION = "Python Bindings to the Enlightenment Foundation Libraries"
-LICENSE = "MIT"
-SECTION = "devel/python"
-RDEPENDS = "python-evas python-ecore python-emotion python-edje python-epsilon"
-PR = "ml1"
-
-ALLOW_EMPTY = "1"
diff --git a/packages/python/python-efl.inc b/packages/python/python-efl.inc
index e6cc62df5e..1cbec65fa5 100644
--- a/packages/python/python-efl.inc
+++ b/packages/python/python-efl.inc
@@ -6,7 +6,6 @@ HOMEPAGE = "http://www.enlightenment.org"
# does not compile unless pyrex has been built
DEPENDS = "python-cython-native python-pyrex-native python-numeric"
RDEPENDS += "python-lang"
-PV = "0.1.1+cvs${SRCDATE}"
inherit setuptools
diff --git a/packages/python/python-emotion_cvs.bb b/packages/python/python-emotion_cvs.bb
index d3f5109d86..cc79ad51e6 100644
--- a/packages/python/python-emotion_cvs.bb
+++ b/packages/python/python-emotion_cvs.bb
@@ -1,3 +1,4 @@
require python-efl.inc
DEPENDS += "emotion python-evas"
-PR = "r4"
+PV = "0.2.1+cvs${SRCDATE}"
+PR = "r0"
diff --git a/packages/python/python-epsilon_cvs.bb b/packages/python/python-epsilon_cvs.bb
index 204dd95610..f979159b49 100644
--- a/packages/python/python-epsilon_cvs.bb
+++ b/packages/python/python-epsilon_cvs.bb
@@ -1,3 +1,4 @@
require python-efl.inc
DEPENDS += "epsilon python-ecore"
-PR = "r4"
+PV = "0.2.1+cvs${SRCDATE}"
+PR = "r0"
diff --git a/packages/python/python-evas_cvs.bb b/packages/python/python-evas_cvs.bb
index e0de4569bd..92f4466a24 100644
--- a/packages/python/python-evas_cvs.bb
+++ b/packages/python/python-evas_cvs.bb
@@ -1,6 +1,7 @@
require python-efl.inc
DEPENDS += "evas"
-PR = "r4"
+PV = "0.2.1+cvs${SRCDATE}"
+PR = "r0"
do_stage() {
distutils_stage_all
diff --git a/packages/python/python-gst/python-path.patch b/packages/python/python-gst/python-path.patch
index 465d5b180a..6cbad8cc5f 100644
--- a/packages/python/python-gst/python-path.patch
+++ b/packages/python/python-gst/python-path.patch
@@ -1,24 +1,33 @@
-Index: gst-python-0.10.7/acinclude.m4
+Index: gst-python-0.10.10/acinclude.m4
===================================================================
---- gst-python-0.10.7.orig/acinclude.m4 2007-03-02 14:10:28.652128590 +0100
-+++ gst-python-0.10.7/acinclude.m4 2007-03-02 14:41:00.106728708 +0100
-@@ -43,12 +43,19 @@
+--- gst-python-0.10.10.orig/acinclude.m4
++++ gst-python-0.10.10/acinclude.m4
+@@ -43,16 +43,20 @@ AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
[AC_REQUIRE([AM_PATH_PYTHON])
AC_MSG_CHECKING(for headers required to compile python extensions)
dnl deduce PYTHON_INCLUDES
+-py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+-py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+-if $PYTHON-config --help 2>/dev/null; then
+- PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null`
+
+AC_ARG_WITH(python-includes,
-+ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
++ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
+if test x$py_exec_prefix != x; then
-+PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-+else
- py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
- py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
- PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
- if test "$py_prefix" != "$py_exec_prefix"; then
- PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
++ PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+ else
+- PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+- if test "$py_prefix" != "$py_exec_prefix"; then
+- PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+- fi
++ py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
++ py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
++ PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
++if test "$py_prefix" != "$py_exec_prefix"; then
++ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
++ fi
fi
-+fi
++
AC_SUBST(PYTHON_INCLUDES)
dnl check if the headers exist:
save_CPPFLAGS="$CPPFLAGS"
diff --git a/packages/python/python-gst_0.10.10.bb b/packages/python/python-gst_0.10.10.bb
new file mode 100644
index 0000000000..cc1a19574e
--- /dev/null
+++ b/packages/python/python-gst_0.10.10.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Python Gstreamer bindings"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "gstreamer gst-plugins-base python-pygobject"
+PR = "ml0"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \
+ file://python-path.patch;patch=1"
+S = "${WORKDIR}/gst-python-${PV}"
+
+inherit autotools distutils-base pkgconfig
+
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
+do_configure_prepend() {
+ install -d ${S}/m4
+ install -m 0644 ${S}/common/m4/*.m4 ${S}/m4/
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN} += "${datadir}/gst-python"
+FILES_${PN}-dev += "${datadir}/gst-python/0.10/defs"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/gst-0.10/gst/.debug/"
diff --git a/packages/python/python-gst_0.10.8.bb b/packages/python/python-gst_0.10.8.bb
deleted file mode 100644
index 224d24b59a..0000000000
--- a/packages/python/python-gst_0.10.8.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "Python Gstreamer bindings"
-SECTION = "devel/python"
-LICENSE = "LGPL"
-DEPENDS = "gstreamer gst-plugins-base python-pygobject"
-PR = "ml1"
-
-SRC_URI = "http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \
- file://python-path.patch;patch=1"
-S = "${WORKDIR}/gst-python-${PV}"
-
-inherit autotools distutils-base pkgconfig
-
-EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
-
-do_configure_prepend() {
- install -d ${S}/m4
- install -m 0644 ${S}/common/m4/*.m4 ${S}/m4/
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-FILES_${PN} += "${datadir}/gst-python"
-FILES_${PN}-dev += "${datadir}/gst-python/0.10/defs"
-FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/gst-0.10/gst/.debug/"
diff --git a/packages/python/python-lightmediascanner_svn.bb b/packages/python/python-lightmediascanner_svn.bb
new file mode 100644
index 0000000000..27d0bb62f1
--- /dev/null
+++ b/packages/python/python-lightmediascanner_svn.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python bindings to the Lightweight media scanner"
+SECTION = "devel/python"
+HOMEPAGE = "http://lms.garage.maemo.org/"
+AUTHOR = "Gustavo Barbieri"
+LICENSE = "LGPL"
+DEPENDS = "lightmediascanner"
+PV = "0.1.0+svn${SRCREV}"
+
+SRC_URI = "svn://garage.maemo.org/svn/lms/;module=python-lightmediascanner;proto=https"
+S = "${WORKDIR}/python-lightmediascanner"
+
+inherit distutils
diff --git a/packages/python/python-pyqt_4.3.3.bb b/packages/python/python-pyqt_4.3.3.bb
index 2fd6fcc38b..9dd2040a5b 100644
--- a/packages/python/python-pyqt_4.3.3.bb
+++ b/packages/python/python-pyqt_4.3.3.bb
@@ -4,6 +4,7 @@ AUTHOR = "Phil Thomson @ riverbank.co.uk"
SECTION = "devel/python"
PRIORITY = "optional"
LICENSE = "GPL"
+DEPENDS = "sip-native python-sip"
RDEPENDS = "python-core"
SRCNAME = "pyqt"
PR = "ml1"
diff --git a/packages/python/python-sqlalchemy_0.4.2p3.bb b/packages/python/python-sqlalchemy_0.4.2p3.bb
new file mode 100644
index 0000000000..2a797eb439
--- /dev/null
+++ b/packages/python/python-sqlalchemy_0.4.2p3.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL"
+HOMEPAGE = "http://www.sqlalchemy.org/"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+SRCNAME = "SQLAlchemy"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sqlalchemy/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/packages/python/python_2.5.1.bb b/packages/python/python_2.5.1.bb
index b274b0d7f9..ecfedf15fe 100644
--- a/packages/python/python_2.5.1.bb
+++ b/packages/python/python_2.5.1.bb
@@ -7,7 +7,7 @@ DEPENDS = "python-native readline zlib gdbm openssl sqlite3 tcl tk"
DEPENDS_sharprom = "python-native readline zlib gdbm openssl"
# NOTE: Keep the digit in sync with BASEREV in contrib/generate-manifest-2.5.py
-PR = "ml7"
+PR = "ml10"
PYTHON_MAJMIN = "2.5"
diff --git a/packages/recordext/.mtn2git_empty b/packages/qclockchange/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/recordext/.mtn2git_empty
+++ b/packages/qclockchange/files/.mtn2git_empty
diff --git a/packages/qclockchange/files/qclockchange.desktop b/packages/qclockchange/files/qclockchange.desktop
new file mode 100644
index 0000000000..9463623883
--- /dev/null
+++ b/packages/qclockchange/files/qclockchange.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Comment= Changes the CPU frequency
+Exec=qclockchange
+Icon=qclockchange
+Type=Application
+Name=Qclockchange
diff --git a/packages/qclockchange/files/qclockchange.png b/packages/qclockchange/files/qclockchange.png
new file mode 100644
index 0000000000..861fe2eecc
--- /dev/null
+++ b/packages/qclockchange/files/qclockchange.png
Binary files differ
diff --git a/packages/qclockchange/qclockchange_0.1a.bb b/packages/qclockchange/qclockchange_0.1a.bb
deleted file mode 100644
index 0061c830c9..0000000000
--- a/packages/qclockchange/qclockchange_0.1a.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "Program that allows you to set the CCCR registers on PXA Zauruses."
-SECTION = "opie/settings"
-PRIORITY = "optional"
-LICENSE = "GPL"
-AUTHOR = "piro <piro400@occn.zaq.ne.jp>"
-HOMEPAGE = "http://www.piro.hopto.org/~piro/pukiwiki/pukiwiki.php?%5B%5B%A5%AB%A1%BC%A5%CD%A5%EB%A5%D1%A5%C3%A5%C1%A4%F2%A4%DE%A4%C8%A4%E1%A4%EB%5D%5D"
-APPTYPE="binary"
-PR = "r1"
-
-SRC_URI = "http://www.piro.hopto.org/~piro/zaurus/qclockchange-${PV}.tar.gz"
-
-inherit palmtop
-
-do_install() {
- install -d ${D}${palmtopdir}/bin/ \
- ${D}${palmtopdir}/pics \
- ${D}${palmtopdir}/apps/Settings
-
- install -m 0755 qclockchange ${D}${palmtopdir}/bin/qclockchange
- install -m 0644 ipkg/opt/QtPalmtop/pics/qclockchange.png ${D}${palmtopdir}/pics/qclockchange.png
- install -m 0644 ipkg/opt/QtPalmtop/apps/Settings/qclockchange.desktop ${D}${palmtopdir}/apps/Settings/qclockchange.desktop
-}
diff --git a/packages/qclockchange/qclockchange_0.1b.bb b/packages/qclockchange/qclockchange_0.1b.bb
new file mode 100644
index 0000000000..7980618f97
--- /dev/null
+++ b/packages/qclockchange/qclockchange_0.1b.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Program that allows you to set the CCCR registers on PXA Zauruses."
+SECTION = "opie/settings"
+PRIORITY = "optional"
+LICENSE = "GPL"
+AUTHOR = "piro <piro400@occn.zaq.ne.jp>"
+HOMEPAGE = "http://piro.sytes.net/~piro/zaurus/"
+APPTYPE="binary"
+PR = "r0"
+
+SRC_URI = "http://piro.sytes.net/~piro/zaurus/etc/qclockchange-${PV}.tar.gz \
+ file://qclockchange.png \
+ file://qclockchange.desktop "
+
+inherit palmtop
+
+do_install() {
+ install -d ${D}${palmtopdir}/bin/ \
+ ${D}${palmtopdir}/pics \
+ ${D}${palmtopdir}/apps/Settings
+
+ install -m 0755 bin/qclockchange ${D}${palmtopdir}/bin/qclockchange
+ install -m 0644 ${WORKDIR}/qclockchange.png ${D}${palmtopdir}/pics/qclockchange.png
+ install -m 0644 ${WORKDIR}/qclockchange.desktop ${D}${palmtopdir}/apps/Settings/qclockchange.desktop
+}
diff --git a/packages/renderext/.mtn2git_empty b/packages/qemu/qemu-0.9.0+cvs20070613/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/renderext/.mtn2git_empty
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/.mtn2git_empty
diff --git a/packages/qemu/files/02_snapshot_use_tmpdir.patch b/packages/qemu/qemu-0.9.0+cvs20070613/02_snapshot_use_tmpdir.patch
index bd955b6db3..bd955b6db3 100644
--- a/packages/qemu/files/02_snapshot_use_tmpdir.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/02_snapshot_use_tmpdir.patch
diff --git a/packages/qemu/files/03_machines_list_no_error.patch b/packages/qemu/qemu-0.9.0+cvs20070613/03_machines_list_no_error.patch
index 73f31550fe..73f31550fe 100644
--- a/packages/qemu/files/03_machines_list_no_error.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/03_machines_list_no_error.patch
diff --git a/packages/qemu/files/04_do_not_print_rtc_freq_if_ok.patch b/packages/qemu/qemu-0.9.0+cvs20070613/04_do_not_print_rtc_freq_if_ok.patch
index 1575cbce63..1575cbce63 100644
--- a/packages/qemu/files/04_do_not_print_rtc_freq_if_ok.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/04_do_not_print_rtc_freq_if_ok.patch
diff --git a/packages/qemu/files/05_non-fatal_if_linux_hd_missing.patch b/packages/qemu/qemu-0.9.0+cvs20070613/05_non-fatal_if_linux_hd_missing.patch
index b7c4732f24..b7c4732f24 100644
--- a/packages/qemu/files/05_non-fatal_if_linux_hd_missing.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/05_non-fatal_if_linux_hd_missing.patch
diff --git a/packages/qemu/files/06_exit_segfault.patch b/packages/qemu/qemu-0.9.0+cvs20070613/06_exit_segfault.patch
index 447c3550b8..447c3550b8 100644
--- a/packages/qemu/files/06_exit_segfault.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/06_exit_segfault.patch
diff --git a/packages/qemu/files/10_signal_jobs.patch b/packages/qemu/qemu-0.9.0+cvs20070613/10_signal_jobs.patch
index 794a538676..794a538676 100644
--- a/packages/qemu/files/10_signal_jobs.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/10_signal_jobs.patch
diff --git a/packages/qemu/files/11_signal_sigaction.patch b/packages/qemu/qemu-0.9.0+cvs20070613/11_signal_sigaction.patch
index 5446efc562..5446efc562 100644
--- a/packages/qemu/files/11_signal_sigaction.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/11_signal_sigaction.patch
diff --git a/packages/qemu/files/12_signal_powerpc_support.patch b/packages/qemu/qemu-0.9.0+cvs20070613/12_signal_powerpc_support.patch
index d8d4198784..d8d4198784 100644
--- a/packages/qemu/files/12_signal_powerpc_support.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/12_signal_powerpc_support.patch
diff --git a/packages/qemu/files/22_net_tuntap_stall.patch b/packages/qemu/qemu-0.9.0+cvs20070613/22_net_tuntap_stall.patch
index e9b31dfe40..e9b31dfe40 100644
--- a/packages/qemu/files/22_net_tuntap_stall.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/22_net_tuntap_stall.patch
diff --git a/packages/qemu/files/30_syscall_ipc.patch b/packages/qemu/qemu-0.9.0+cvs20070613/30_syscall_ipc.patch
index 3dc58102ad..3dc58102ad 100644
--- a/packages/qemu/files/30_syscall_ipc.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/30_syscall_ipc.patch
diff --git a/packages/qemu/files/31_syscalls.patch b/packages/qemu/qemu-0.9.0+cvs20070613/31_syscalls.patch
index 3878079f19..3878079f19 100644
--- a/packages/qemu/files/31_syscalls.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/31_syscalls.patch
diff --git a/packages/qemu/files/32_syscall_sysctl.patch b/packages/qemu/qemu-0.9.0+cvs20070613/32_syscall_sysctl.patch
index d175cf96ba..d175cf96ba 100644
--- a/packages/qemu/files/32_syscall_sysctl.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/32_syscall_sysctl.patch
diff --git a/packages/qemu/files/33_syscall_ppc_clone.patch b/packages/qemu/qemu-0.9.0+cvs20070613/33_syscall_ppc_clone.patch
index a71f8b1944..a71f8b1944 100644
--- a/packages/qemu/files/33_syscall_ppc_clone.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/33_syscall_ppc_clone.patch
diff --git a/packages/qemu/files/39_syscall_fadvise64.patch b/packages/qemu/qemu-0.9.0+cvs20070613/39_syscall_fadvise64.patch
index 0a7f4c48dd..0a7f4c48dd 100644
--- a/packages/qemu/files/39_syscall_fadvise64.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/39_syscall_fadvise64.patch
diff --git a/packages/qemu/files/41_arm_fpa_sigfpe.patch b/packages/qemu/qemu-0.9.0+cvs20070613/41_arm_fpa_sigfpe.patch
index d579dbc66e..d579dbc66e 100644
--- a/packages/qemu/files/41_arm_fpa_sigfpe.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/41_arm_fpa_sigfpe.patch
diff --git a/packages/qemu/files/52_ne2000_return.patch b/packages/qemu/qemu-0.9.0+cvs20070613/52_ne2000_return.patch
index f0316c8042..f0316c8042 100644
--- a/packages/qemu/files/52_ne2000_return.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/52_ne2000_return.patch
diff --git a/packages/qemu/files/61_safe_64bit_int.patch b/packages/qemu/qemu-0.9.0+cvs20070613/61_safe_64bit_int.patch
index 553e57623e..553e57623e 100644
--- a/packages/qemu/files/61_safe_64bit_int.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/61_safe_64bit_int.patch
diff --git a/packages/qemu/files/63_sparc_build.patch b/packages/qemu/qemu-0.9.0+cvs20070613/63_sparc_build.patch
index 32a6bc0ee0..32a6bc0ee0 100644
--- a/packages/qemu/files/63_sparc_build.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/63_sparc_build.patch
diff --git a/packages/qemu/files/64_ppc_asm_constraints.patch b/packages/qemu/qemu-0.9.0+cvs20070613/64_ppc_asm_constraints.patch
index e4858b79d7..e4858b79d7 100644
--- a/packages/qemu/files/64_ppc_asm_constraints.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/64_ppc_asm_constraints.patch
diff --git a/packages/qemu/files/65_kfreebsd.patch b/packages/qemu/qemu-0.9.0+cvs20070613/65_kfreebsd.patch
index ea060811a1..ea060811a1 100644
--- a/packages/qemu/files/65_kfreebsd.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/65_kfreebsd.patch
diff --git a/packages/qemu/files/66_tls_ld.patch b/packages/qemu/qemu-0.9.0+cvs20070613/66_tls_ld.patch
index 54e02eff8b..54e02eff8b 100644
--- a/packages/qemu/files/66_tls_ld.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/66_tls_ld.patch
diff --git a/packages/qemu/files/91-oh-sdl-cursor.patch b/packages/qemu/qemu-0.9.0+cvs20070613/91-oh-sdl-cursor.patch
index 5280a5bd4a..5280a5bd4a 100644
--- a/packages/qemu/files/91-oh-sdl-cursor.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/91-oh-sdl-cursor.patch
diff --git a/packages/qemu/files/93-oh-pl110-rgb.patch b/packages/qemu/qemu-0.9.0+cvs20070613/93-oh-pl110-rgb.patch
index 4911ac131f..4911ac131f 100644
--- a/packages/qemu/files/93-oh-pl110-rgb.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/93-oh-pl110-rgb.patch
diff --git a/packages/qemu/files/arm_nptl.patch b/packages/qemu/qemu-0.9.0+cvs20070613/arm_nptl.patch
index f9b10aebc5..f9b10aebc5 100644
--- a/packages/qemu/files/arm_nptl.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/arm_nptl.patch
diff --git a/packages/qemu/files/compiler.patch b/packages/qemu/qemu-0.9.0+cvs20070613/compiler.patch
index dad18b3a61..dad18b3a61 100644
--- a/packages/qemu/files/compiler.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/compiler.patch
diff --git a/packages/qemu/files/configure.patch b/packages/qemu/qemu-0.9.0+cvs20070613/configure.patch
index ea83f8cd6d..ea83f8cd6d 100644
--- a/packages/qemu/files/configure.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/configure.patch
diff --git a/packages/qemu/files/fix_segfault.patch b/packages/qemu/qemu-0.9.0+cvs20070613/fix_segfault.patch
index 976c75cd60..976c75cd60 100644
--- a/packages/qemu/files/fix_segfault.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/fix_segfault.patch
diff --git a/packages/qemu/files/makefile.patch b/packages/qemu/qemu-0.9.0+cvs20070613/makefile.patch
index 75b5ac9c71..75b5ac9c71 100644
--- a/packages/qemu/files/makefile.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/makefile.patch
diff --git a/packages/qemu/files/no-strip.patch b/packages/qemu/qemu-0.9.0+cvs20070613/no-strip.patch
index 59ed8771fe..59ed8771fe 100644
--- a/packages/qemu/files/no-strip.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/no-strip.patch
diff --git a/packages/qemu/files/pl110_rgb-r0.patch b/packages/qemu/qemu-0.9.0+cvs20070613/pl110_rgb-r0.patch
index 09e5898d3a..09e5898d3a 100644
--- a/packages/qemu/files/pl110_rgb-r0.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/pl110_rgb-r0.patch
diff --git a/packages/qemu/files/qemu-0.9.0-nptl-update.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl-update.patch
index 869acba2cf..869acba2cf 100644
--- a/packages/qemu/files/qemu-0.9.0-nptl-update.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl-update.patch
diff --git a/packages/qemu/files/qemu-0.9.0-nptl.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl.patch
index fc7b0cfa4b..fc7b0cfa4b 100644
--- a/packages/qemu/files/qemu-0.9.0-nptl.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl.patch
diff --git a/packages/qemu/files/qemu-amd64-32b-mapping-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-amd64-32b-mapping-0.9.0.patch
index d9303e3464..d9303e3464 100644
--- a/packages/qemu/files/qemu-amd64-32b-mapping-0.9.0.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-amd64-32b-mapping-0.9.0.patch
diff --git a/packages/qemu/files/qemu-pci-irq-sharing.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-pci-irq-sharing.patch
index c47e89895f..c47e89895f 100644
--- a/packages/qemu/files/qemu-pci-irq-sharing.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-pci-irq-sharing.patch
diff --git a/packages/qemu/files/qemu-sdl-cursor.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-sdl-cursor.patch
index bd6a51a1f5..bd6a51a1f5 100644
--- a/packages/qemu/files/qemu-sdl-cursor.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-sdl-cursor.patch
diff --git a/packages/qemu/files/qemu-usb-wacom-0.8.2.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-0.8.2.patch
index 33a6db3f18..33a6db3f18 100644
--- a/packages/qemu/files/qemu-usb-wacom-0.8.2.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-0.8.2.patch
diff --git a/packages/qemu/files/qemu-usb-wacom-buttons.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-buttons.patch
index ee24c15780..ee24c15780 100644
--- a/packages/qemu/files/qemu-usb-wacom-buttons.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-buttons.patch
diff --git a/packages/qemu/files/qemu-usb-wacom-pressure.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-pressure.patch
index 668d50d5f2..668d50d5f2 100644
--- a/packages/qemu/files/qemu-usb-wacom-pressure.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-pressure.patch
diff --git a/packages/qemu/files/workaround_bad_futex_headers.patch b/packages/qemu/qemu-0.9.0+cvs20070613/workaround_bad_futex_headers.patch
index cc122ebdba..cc122ebdba 100644
--- a/packages/qemu/files/workaround_bad_futex_headers.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/workaround_bad_futex_headers.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/arm_nptl-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/arm_nptl-0.9.0.patch
deleted file mode 100644
index fe1f0945b6..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/arm_nptl-0.9.0.patch
+++ /dev/null
@@ -1,853 +0,0 @@
-diff -Naru qemu-snapshot-2007-06-24_05.orig/configure qemu-snapshot-2007-06-24_05/configure
---- qemu-snapshot-2007-06-24_05.orig/configure 2007-06-24 16:31:54.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/configure 2007-06-24 16:33:58.000000000 +0200
-@@ -101,6 +101,7 @@
- darwin_user="no"
- build_docs="no"
- uname_release=""
-+nptl="yes"
-
- # OS specific
- targetos=`uname -s`
-@@ -287,6 +288,8 @@
- *) echo "undefined SPARC architecture. Exiting";exit 1;;
- esac
- ;;
-+ --disable-nptl) nptl="no"
-+ ;;
- esac
- done
-
-@@ -530,6 +533,23 @@
- }
- EOF
-
-+# check NPTL support
-+cat > $TMPC <<EOF
-+#include <sched.h>
-+void foo()
-+{
-+#ifndef CLONE_SETTLS
-+#error bork
-+#endif
-+}
-+EOF
-+
-+if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
-+ :
-+else
-+ nptl="no"
-+fi
-+
- ##########################################
- # SDL probe
-
-@@ -681,6 +701,7 @@
- echo "Target Sparc Arch $sparc_cpu"
- fi
- echo "kqemu support $kqemu"
-+echo "NPTL support $nptl"
- echo "Documentation $build_docs"
- [ ! -z "$uname_release" ] && \
- echo "uname -r $uname_release"
-@@ -1063,6 +1084,14 @@
- echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
- fi
- fi
-+else
-+ if test "$nptl" = "yes" ; then
-+ case "$target_cpu" in
-+ arm | armeb)
-+ echo "#define USE_NPTL 1" >> $config_h
-+ ;;
-+ esac
-+ fi
- fi
-
- if test "$cocoa" = "yes" ; then
-diff -Naru qemu-snapshot-2007-06-24_05.orig/exec-all.h qemu-snapshot-2007-06-24_05/exec-all.h
---- qemu-snapshot-2007-06-24_05.orig/exec-all.h 2007-05-23 21:58:10.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/exec-all.h 2007-06-24 16:33:58.000000000 +0200
-@@ -360,170 +360,7 @@
- extern CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4];
- extern void *io_mem_opaque[IO_MEM_NB_ENTRIES];
-
--#if defined(__powerpc__)
--static inline int testandset (int *p)
--{
-- int ret;
-- __asm__ __volatile__ (
-- "0: lwarx %0,0,%1\n"
-- " xor. %0,%3,%0\n"
-- " bne 1f\n"
-- " stwcx. %2,0,%1\n"
-- " bne- 0b\n"
-- "1: "
-- : "=&r" (ret)
-- : "r" (p), "r" (1), "r" (0)
-- : "cr0", "memory");
-- return ret;
--}
--#elif defined(__i386__)
--static inline int testandset (int *p)
--{
-- long int readval = 0;
--
-- __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
-- : "+m" (*p), "+a" (readval)
-- : "r" (1)
-- : "cc");
-- return readval;
--}
--#elif defined(__x86_64__)
--static inline int testandset (int *p)
--{
-- long int readval = 0;
--
-- __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
-- : "+m" (*p), "+a" (readval)
-- : "r" (1)
-- : "cc");
-- return readval;
--}
--#elif defined(__s390__)
--static inline int testandset (int *p)
--{
-- int ret;
--
-- __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n"
-- " jl 0b"
-- : "=&d" (ret)
-- : "r" (1), "a" (p), "0" (*p)
-- : "cc", "memory" );
-- return ret;
--}
--#elif defined(__alpha__)
--static inline int testandset (int *p)
--{
-- int ret;
-- unsigned long one;
--
-- __asm__ __volatile__ ("0: mov 1,%2\n"
-- " ldl_l %0,%1\n"
-- " stl_c %2,%1\n"
-- " beq %2,1f\n"
-- ".subsection 2\n"
-- "1: br 0b\n"
-- ".previous"
-- : "=r" (ret), "=m" (*p), "=r" (one)
-- : "m" (*p));
-- return ret;
--}
--#elif defined(__sparc__)
--static inline int testandset (int *p)
--{
-- int ret;
--
-- __asm__ __volatile__("ldstub [%1], %0"
-- : "=r" (ret)
-- : "r" (p)
-- : "memory");
--
-- return (ret ? 1 : 0);
--}
--#elif defined(__arm__)
--static inline int testandset (int *spinlock)
--{
-- register unsigned int ret;
-- __asm__ __volatile__("swp %0, %1, [%2]"
-- : "=r"(ret)
-- : "0"(1), "r"(spinlock));
--
-- return ret;
--}
--#elif defined(__mc68000)
--static inline int testandset (int *p)
--{
-- char ret;
-- __asm__ __volatile__("tas %1; sne %0"
-- : "=r" (ret)
-- : "m" (p)
-- : "cc","memory");
-- return ret;
--}
--#elif defined(__ia64)
--
--#include <ia64intrin.h>
--
--static inline int testandset (int *p)
--{
-- return __sync_lock_test_and_set (p, 1);
--}
--#elif defined(__mips__)
--static inline int testandset (int *p)
--{
-- int ret;
--
-- __asm__ __volatile__ (
-- " .set push \n"
-- " .set noat \n"
-- " .set mips2 \n"
-- "1: li $1, 1 \n"
-- " ll %0, %1 \n"
-- " sc $1, %1 \n"
-- " beqz $1, 1b \n"
-- " .set pop "
-- : "=r" (ret), "+R" (*p)
-- :
-- : "memory");
--
-- return ret;
--}
--#else
--#error unimplemented CPU support
--#endif
--
--typedef int spinlock_t;
--
--#define SPIN_LOCK_UNLOCKED 0
--
--#if defined(CONFIG_USER_ONLY)
--static inline void spin_lock(spinlock_t *lock)
--{
-- while (testandset(lock));
--}
--
--static inline void spin_unlock(spinlock_t *lock)
--{
-- *lock = 0;
--}
--
--static inline int spin_trylock(spinlock_t *lock)
--{
-- return !testandset(lock);
--}
--#else
--static inline void spin_lock(spinlock_t *lock)
--{
--}
--
--static inline void spin_unlock(spinlock_t *lock)
--{
--}
--
--static inline int spin_trylock(spinlock_t *lock)
--{
-- return 1;
--}
--#endif
-+#include "qemu_spinlock.h"
-
- extern spinlock_t tb_lock;
-
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/arm/syscall.h qemu-snapshot-2007-06-24_05/linux-user/arm/syscall.h
---- qemu-snapshot-2007-06-24_05.orig/linux-user/arm/syscall.h 2005-04-27 22:11:21.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/arm/syscall.h 2007-06-24 16:33:58.000000000 +0200
-@@ -28,7 +28,9 @@
- #define ARM_SYSCALL_BASE 0x900000
- #define ARM_THUMB_SYSCALL 0
-
--#define ARM_NR_cacheflush (ARM_SYSCALL_BASE + 0xf0000 + 2)
-+#define ARM_NR_BASE 0xf0000
-+#define ARM_NR_cacheflush (ARM_NR_BASE + 2)
-+#define ARM_NR_set_tls (ARM_NR_BASE + 5)
-
- #define ARM_NR_semihosting 0x123456
- #define ARM_NR_thumb_semihosting 0xAB
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007-06-24_05/linux-user/main.c
---- qemu-snapshot-2007-06-24_05.orig/linux-user/main.c 2007-06-22 00:55:02.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/main.c 2007-06-24 16:33:58.000000000 +0200
-@@ -325,6 +325,50 @@
- }
- }
-
-+/* Handle a jump to the kernel code page. */
-+static int
-+do_kernel_trap(CPUARMState *env)
-+{
-+ uint32_t addr;
-+ uint32_t *ptr;
-+ uint32_t cpsr;
-+
-+ switch (env->regs[15]) {
-+ case 0xffff0fc0: /* __kernel_cmpxchg */
-+ /* XXX: This only works between threads, not between processes.
-+ Use native atomic operations. */
-+ /* ??? This probably breaks horribly if the access segfaults. */
-+ cpu_lock();
-+ ptr = (uint32_t *)env->regs[2];
-+ cpsr = cpsr_read(env);
-+ if (*ptr == env->regs[0]) {
-+ *ptr = env->regs[1];
-+ env->regs[0] = 0;
-+ cpsr |= CPSR_C;
-+ } else {
-+ env->regs[0] = -1;
-+ cpsr &= ~CPSR_C;
-+ }
-+ cpsr_write(env, cpsr, CPSR_C);
-+ cpu_unlock();
-+ break;
-+ case 0xffff0fe0: /* __kernel_get_tls */
-+ env->regs[0] = env->cp15.c13_tls;
-+ break;
-+ default:
-+ return 1;
-+ }
-+ /* Jump back to the caller. */
-+ addr = env->regs[14];
-+ if (addr & 1) {
-+ env->thumb = 1;
-+ addr &= ~1;
-+ }
-+ env->regs[15] = addr;
-+
-+ return 0;
-+}
-+
- void cpu_loop(CPUARMState *env)
- {
- int trapnr;
-@@ -381,10 +425,8 @@
- }
- }
-
-- if (n == ARM_NR_cacheflush) {
-- arm_cache_flush(env->regs[0], env->regs[1]);
-- } else if (n == ARM_NR_semihosting
-- || n == ARM_NR_thumb_semihosting) {
-+ if (n == ARM_NR_semihosting
-+ || n == ARM_NR_thumb_semihosting) {
- env->regs[0] = do_arm_semihosting (env);
- } else if (n == 0 || n >= ARM_SYSCALL_BASE
- || (env->thumb && n == ARM_THUMB_SYSCALL)) {
-@@ -395,14 +437,34 @@
- n -= ARM_SYSCALL_BASE;
- env->eabi = 0;
- }
-- env->regs[0] = do_syscall(env,
-- n,
-- env->regs[0],
-- env->regs[1],
-- env->regs[2],
-- env->regs[3],
-- env->regs[4],
-- env->regs[5]);
-+ if ( n > ARM_NR_BASE) {
-+ switch (n)
-+ {
-+ case ARM_NR_cacheflush:
-+ arm_cache_flush(env->regs[0], env->regs[1]);
-+ break;
-+#ifdef USE_NPTL
-+ case ARM_NR_set_tls:
-+ cpu_set_tls(env, env->regs[0]);
-+ env->regs[0] = 0;
-+ break;
-+#endif
-+ default:
-+ printf ("Error: Bad syscall: %x\n", n);
-+ goto error;
-+ }
-+ }
-+ else
-+ {
-+ env->regs[0] = do_syscall(env,
-+ n,
-+ env->regs[0],
-+ env->regs[1],
-+ env->regs[2],
-+ env->regs[3],
-+ env->regs[4],
-+ env->regs[5]);
-+ }
- } else {
- goto error;
- }
-@@ -441,6 +503,10 @@
- }
- }
- break;
-+ case EXCP_KERNEL_TRAP:
-+ if (do_kernel_trap(env))
-+ goto error;
-+ break;
- default:
- error:
- fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
-@@ -2074,6 +2140,10 @@
- ts->heap_base = info->brk;
- /* This will be filled in on the first SYS_HEAPINFO call. */
- ts->heap_limit = 0;
-+ /* Register the magic kernel code page. The cpu will generate a
-+ special exception when it tries to execute code here. We can't
-+ put real code here because it may be in use by the host kernel. */
-+ page_set_flags(0xffff0000, 0xffff0fff, 0);
- #endif
-
- if (gdbstub_port) {
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/qemu.h qemu-snapshot-2007-06-24_05/linux-user/qemu.h
---- qemu-snapshot-2007-06-24_05.orig/linux-user/qemu.h 2007-05-26 17:09:38.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/qemu.h 2007-06-24 16:33:58.000000000 +0200
-@@ -81,6 +81,9 @@
- uint32_t heap_limit;
- #endif
- int used; /* non zero if used */
-+#ifdef USE_NPTL
-+ uint32_t *child_tidptr;
-+#endif
- struct image_info *info;
- uint8_t stack[0];
- } __attribute__((aligned(16))) TaskState;
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2007-06-24_05/linux-user/syscall.c
---- qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c 2007-06-21 23:57:11.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/syscall.c 2007-06-24 16:33:58.000000000 +0200
-@@ -70,9 +70,18 @@
- #include <linux/kd.h>
-
- #include "qemu.h"
-+#include "qemu_spinlock.h"
-
- //#define DEBUG
-
-+#ifdef USE_NPTL
-+#define CLONE_NPTL_FLAGS2 (CLONE_SETTLS | \
-+ CLONE_PARENT_SETTID | CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID)
-+#else
-+/* XXX: Hardcode the above values. */
-+#define CLONE_NPTL_FLAGS2 0
-+#endif
-+
- #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \
- || defined(TARGET_M68K) || defined(TARGET_SH4)
- /* 16 bit uid wrappers emulation */
-@@ -2121,20 +2130,38 @@
- thread/process */
- #define NEW_STACK_SIZE 8192
-
-+#ifdef USE_NPTL
-+static spinlock_t nptl_lock = SPIN_LOCK_UNLOCKED;
-+#endif
-+
- static int clone_func(void *arg)
- {
- CPUState *env = arg;
-+#ifdef HAVE_NPTL
-+ /* Wait until the parent has finshed initializing the tls state. */
-+ while (!spin_trylock(&nptl_lock))
-+ usleep(1);
-+ spin_unlock(&nptl_lock);
-+#endif
- cpu_loop(env);
- /* never exits */
- return 0;
- }
-
--int do_fork(CPUState *env, unsigned int flags, unsigned long newsp)
-+int do_fork(CPUState *env, unsigned int flags, unsigned long newsp,
-+ uint32_t *parent_tidptr, void *newtls,
-+ uint32_t *child_tidptr)
- {
- int ret;
- TaskState *ts;
- uint8_t *new_stack;
- CPUState *new_env;
-+#ifdef USE_NPTL
-+ unsigned int nptl_flags;
-+
-+ if (flags & CLONE_PARENT_SETTID)
-+ *parent_tidptr = gettid();
-+#endif
-
- if (flags & CLONE_VM) {
- ts = malloc(sizeof(TaskState) + NEW_STACK_SIZE);
-@@ -2201,16 +2228,60 @@
- #error unsupported target CPU
- #endif
- new_env->opaque = ts;
-+#ifdef USE_NPTL
-+ nptl_flags = flags;
-+ flags &= ~CLONE_NPTL_FLAGS2;
-+ if (nptl_flags & CLONE_CHILD_CLEARTID) {
-+ ts->child_tidptr = child_tidptr;
-+ }
-+ if (nptl_flags & CLONE_SETTLS)
-+ cpu_set_tls (new_env, newtls);
-+ /* Grab the global cpu lock so that the thread setup appears
-+ atomic. */
-+ if (nptl_flags & CLONE_CHILD_SETTID)
-+ spin_lock(&nptl_lock);
-+#else
-+ if (flags & CLONE_NPTL_FLAGS2)
-+ return -EINVAL;
-+#endif
-+
- #ifdef __ia64__
- ret = __clone2(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env);
- #else
- ret = clone(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env);
- #endif
-+#ifdef USE_NPTL
-+ if (ret != -1) {
-+ if (nptl_flags & CLONE_CHILD_SETTID)
-+ *child_tidptr = ret;
-+ }
-+ /* Allow the child to continue. */
-+ if (nptl_flags & CLONE_CHILD_SETTID)
-+ spin_unlock(&nptl_lock);
-+#endif
- } else {
-- /* if no CLONE_VM, we consider it is a fork */
-- if ((flags & ~CSIGNAL) != 0)
-- return -EINVAL;
-- ret = fork();
-+ /* if no CLONE_VM, we consider it is a fork */
-+ if ((flags & ~(CSIGNAL | CLONE_NPTL_FLAGS2)) != 0)
-+ return -EINVAL;
-+ ret = fork();
-+#ifdef USE_NPTL
-+ /* There is a race condition here. The parent process could
-+ theoretically read the TID in the child process before the child
-+ tid is set. This would require using either ptrace
-+ (not implemented) or having *_tidptr to point at a shared memory
-+ mapping. We can't repeat the spinlock hack used above because
-+ the child process gets its own copy of the lock. */
-+ if (ret == 0) {
-+ /* Child Process. */
-+ if (flags & CLONE_CHILD_SETTID)
-+ *child_tidptr = gettid();
-+ ts = (TaskState *)env->opaque;
-+ if (flags & CLONE_CHILD_CLEARTID)
-+ ts->child_tidptr = child_tidptr;
-+ if (flags & CLONE_SETTLS)
-+ cpu_set_tls (env, newtls);
-+ }
-+#endif
- }
- return ret;
- }
-@@ -2487,7 +2558,7 @@
- ret = do_brk(arg1);
- break;
- case TARGET_NR_fork:
-- ret = get_errno(do_fork(cpu_env, SIGCHLD, 0));
-+ ret = get_errno(do_fork(cpu_env, SIGCHLD, 0, NULL, NULL, NULL));
- break;
- #ifdef TARGET_NR_waitpid
- case TARGET_NR_waitpid:
-@@ -3651,7 +3722,8 @@
- ret = get_errno(fsync(arg1));
- break;
- case TARGET_NR_clone:
-- ret = get_errno(do_fork(cpu_env, arg1, arg2));
-+ ret = get_errno(do_fork(cpu_env, arg1, arg2, (uint32_t *)arg3,
-+ (void *)arg4, (uint32_t *)arg5));
- break;
- #ifdef __NR_exit_group
- /* new thread calls */
-@@ -4039,7 +4111,8 @@
- #endif
- #ifdef TARGET_NR_vfork
- case TARGET_NR_vfork:
-- ret = get_errno(do_fork(cpu_env, CLONE_VFORK | CLONE_VM | SIGCHLD, 0));
-+ ret = get_errno(do_fork(cpu_env, CLONE_VFORK | CLONE_VM | SIGCHLD, 0,
-+ NULL, NULL, NULL));
- break;
- #endif
- #ifdef TARGET_NR_ugetrlimit
-@@ -4632,4 +4705,3 @@
- #endif
- return ret;
- }
--
-diff -Naru qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h qemu-snapshot-2007-06-24_05/qemu_spinlock.h
---- qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h 1970-01-01 01:00:00.000000000 +0100
-+++ qemu-snapshot-2007-06-24_05/qemu_spinlock.h 2007-06-24 16:33:58.000000000 +0200
-@@ -0,0 +1,182 @@
-+/*
-+ * internal execution defines for qemu
-+ *
-+ * Copyright (c) 2003 Fabrice Bellard
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this library; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+#ifndef _QEMU_SPINLOCK_H
-+#define _QEMU_SPINLOCK_H
-+
-+#ifdef __powerpc__
-+static inline int testandset (int *p)
-+{
-+ int ret;
-+ __asm__ __volatile__ (
-+ "0: lwarx %0,0,%1\n"
-+ " xor. %0,%3,%0\n"
-+ " bne 1f\n"
-+ " stwcx. %2,0,%1\n"
-+ " bne- 0b\n"
-+ "1: "
-+ : "=&r" (ret)
-+ : "r" (p), "r" (1), "r" (0)
-+ : "cr0", "memory");
-+ return ret;
-+}
-+#endif
-+
-+#ifdef __i386__
-+static inline int testandset (int *p)
-+{
-+ long int readval = 0;
-+
-+ __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
-+ : "+m" (*p), "+a" (readval)
-+ : "r" (1)
-+ : "cc");
-+ return readval;
-+}
-+#endif
-+
-+#ifdef __x86_64__
-+static inline int testandset (int *p)
-+{
-+ long int readval = 0;
-+
-+ __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
-+ : "+m" (*p), "+a" (readval)
-+ : "r" (1)
-+ : "cc");
-+ return readval;
-+}
-+#endif
-+
-+#ifdef __s390__
-+static inline int testandset (int *p)
-+{
-+ int ret;
-+
-+ __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n"
-+ " jl 0b"
-+ : "=&d" (ret)
-+ : "r" (1), "a" (p), "0" (*p)
-+ : "cc", "memory" );
-+ return ret;
-+}
-+#endif
-+
-+#ifdef __alpha__
-+static inline int testandset (int *p)
-+{
-+ int ret;
-+ unsigned long one;
-+
-+ __asm__ __volatile__ ("0: mov 1,%2\n"
-+ " ldl_l %0,%1\n"
-+ " stl_c %2,%1\n"
-+ " beq %2,1f\n"
-+ ".subsection 2\n"
-+ "1: br 0b\n"
-+ ".previous"
-+ : "=r" (ret), "=m" (*p), "=r" (one)
-+ : "m" (*p));
-+ return ret;
-+}
-+#endif
-+
-+#ifdef __sparc__
-+static inline int testandset (int *p)
-+{
-+ int ret;
-+
-+ __asm__ __volatile__("ldstub [%1], %0"
-+ : "=r" (ret)
-+ : "r" (p)
-+ : "memory");
-+
-+ return (ret ? 1 : 0);
-+}
-+#endif
-+
-+#ifdef __arm__
-+static inline int testandset (int *spinlock)
-+{
-+ register unsigned int ret;
-+ __asm__ __volatile__("swp %0, %1, [%2]"
-+ : "=r"(ret)
-+ : "0"(1), "r"(spinlock));
-+
-+ return ret;
-+}
-+#endif
-+
-+#ifdef __mc68000
-+static inline int testandset (int *p)
-+{
-+ char ret;
-+ __asm__ __volatile__("tas %1; sne %0"
-+ : "=r" (ret)
-+ : "m" (p)
-+ : "cc","memory");
-+ return ret;
-+}
-+#endif
-+
-+#ifdef __ia64
-+#include <ia64intrin.h>
-+
-+static inline int testandset (int *p)
-+{
-+ return __sync_lock_test_and_set (p, 1);
-+}
-+#endif
-+
-+typedef int spinlock_t;
-+
-+#define SPIN_LOCK_UNLOCKED 0
-+
-+#if defined(CONFIG_USER_ONLY)
-+static inline void spin_lock(spinlock_t *lock)
-+{
-+ while (testandset(lock));
-+}
-+
-+static inline void spin_unlock(spinlock_t *lock)
-+{
-+ *lock = 0;
-+}
-+
-+static inline int spin_trylock(spinlock_t *lock)
-+{
-+ return !testandset(lock);
-+}
-+#else
-+static inline void spin_lock(spinlock_t *lock)
-+{
-+}
-+
-+static inline void spin_unlock(spinlock_t *lock)
-+{
-+}
-+
-+static inline int spin_trylock(spinlock_t *lock)
-+{
-+ return 1;
-+}
-+#endif
-+
-+#endif /* ! _QEMU_SPINLOCK_H */
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/cpu.h qemu-snapshot-2007-06-24_05/target-arm/cpu.h
---- qemu-snapshot-2007-06-24_05.orig/target-arm/cpu.h 2007-06-03 23:02:37.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/cpu.h 2007-06-24 16:33:58.000000000 +0200
-@@ -37,6 +37,9 @@
- #define EXCP_IRQ 5
- #define EXCP_FIQ 6
- #define EXCP_BKPT 7
-+#define EXCP_KERNEL_TRAP 8 /* Jumped to kernel code page. */
-+
-+
-
- typedef void ARMWriteCPFunc(void *opaque, int cp_info,
- int srcreg, int operand, uint32_t value);
-@@ -97,6 +100,7 @@
- uint32_t c9_data;
- uint32_t c13_fcse; /* FCSE PID. */
- uint32_t c13_context; /* Context ID. */
-+ uint32_t c13_tls; /* Paul Brook told me to just add this ;) */
- uint32_t c15_cpar; /* XScale Coprocessor Access Register */
- } cp15;
-
-@@ -169,6 +173,15 @@
- int cpu_arm_signal_handler(int host_signum, void *pinfo,
- void *puc);
-
-+void cpu_lock(void);
-+void cpu_unlock(void);
-+#if defined(USE_NPTL)
-+static inline void cpu_set_tls(CPUARMState *env, void *newtls)
-+{
-+ env->cp15.c13_tls = (uint32_t)newtls;
-+}
-+#endif
-+
- #define CPSR_M (0x1f)
- #define CPSR_T (1 << 5)
- #define CPSR_F (1 << 6)
-@@ -180,7 +193,11 @@
- #define CPSR_J (1 << 24)
- #define CPSR_IT_0_1 (3 << 25)
- #define CPSR_Q (1 << 27)
--#define CPSR_NZCV (0xf << 28)
-+#define CPSR_V (1 << 28)
-+#define CPSR_C (1 << 29)
-+#define CPSR_Z (1 << 30)
-+#define CPSR_N (1 << 31)
-+#define CPSR_NZCV (CPSR_N | CPSR_Z | CPSR_C | CPSR_V)
-
- #define CACHED_CPSR_BITS (CPSR_T | CPSR_Q | CPSR_NZCV)
- /* Return the current CPSR value. */
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/exec.h qemu-snapshot-2007-06-24_05/target-arm/exec.h
---- qemu-snapshot-2007-06-24_05.orig/target-arm/exec.h 2007-06-03 19:44:36.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/exec.h 2007-06-24 16:33:58.000000000 +0200
-@@ -68,8 +68,6 @@
-
- /* In op_helper.c */
-
--void cpu_lock(void);
--void cpu_unlock(void);
- void helper_set_cp(CPUState *, uint32_t, uint32_t);
- uint32_t helper_get_cp(CPUState *, uint32_t);
- void helper_set_cp15(CPUState *, uint32_t, uint32_t);
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/op.c qemu-snapshot-2007-06-24_05/target-arm/op.c
---- qemu-snapshot-2007-06-24_05.orig/target-arm/op.c 2007-05-21 19:48:01.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/op.c 2007-06-24 16:33:58.000000000 +0200
-@@ -891,6 +891,12 @@
- cpu_loop_exit();
- }
-
-+void OPPROTO op_kernel_trap(void)
-+{
-+ env->exception_index = EXCP_KERNEL_TRAP;
-+ cpu_loop_exit();
-+}
-+
- /* VFP support. We follow the convention used for VFP instrunctions:
- Single precition routines have a "s" suffix, double precision a
- "d" suffix. */
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/translate.c qemu-snapshot-2007-06-24_05/target-arm/translate.c
---- qemu-snapshot-2007-06-24_05.orig/target-arm/translate.c 2007-06-11 20:59:35.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/translate.c 2007-06-24 16:33:58.000000000 +0200
-@@ -3513,6 +3513,7 @@
- s->is_jmp = DISAS_JUMP;
- }
-
-+
- /* generate intermediate code in gen_opc_buf and gen_opparam_buf for
- basic block 'tb'. If search_pc is TRUE, also generate PC
- information for each intermediate instruction. */
-@@ -3548,6 +3549,15 @@
- nb_gen_labels = 0;
- lj = -1;
- do {
-+#ifdef CONFIG_USER_ONLY
-+ /* Intercept jump to the magic kernel page. */
-+ if (dc->pc > 0xffff0000) {
-+ gen_op_kernel_trap();
-+ dc->is_jmp = DISAS_UPDATE;
-+ break;
-+ }
-+#endif
-+
- if (env->nb_breakpoints > 0) {
- for(j = 0; j < env->nb_breakpoints; j++) {
- if (env->breakpoints[j] == dc->pc) {
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch
deleted file mode 100644
index d92f6a8264..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naru qemu-snapshot-2007-06-24_05.orig/configure qemu-snapshot-2007-06-24_05/configure
---- qemu-snapshot-2007-06-24_05.orig/configure 2007-06-23 18:03:35.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/configure 2007-06-24 16:30:32.000000000 +0200
-@@ -711,7 +711,7 @@
- echo "CC=$cc" >> $config_mak
- echo "HOST_CC=$host_cc" >> $config_mak
- echo "AR=$ar" >> $config_mak
--echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
-+echo "STRIP=$strip" >> $config_mak
- echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
- echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
- echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch
deleted file mode 100644
index 3ad4115e73..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -Naru qemu-neo1973.orig/hw/pl110.c qemu-neo1973/hw/pl110.c
---- qemu-neo1973.orig/hw/pl110.c 2007-06-24 13:56:37.000000000 +0200
-+++ qemu-neo1973/hw/pl110.c 2007-06-24 14:12:09.000000000 +0200
-@@ -10,6 +10,7 @@
- #include "vl.h"
-
- #define PL110_CR_EN 0x001
-+#define PL110_CR_BGR 0x100
- #define PL110_CR_BEBO 0x200
- #define PL110_CR_BEPO 0x400
- #define PL110_CR_PWR 0x800
-@@ -114,6 +115,7 @@
- int first, last = 0;
- int dirty, new_dirty;
- int i;
-+ int bpp_offset;
-
- if (!pl110_enabled(s))
- return;
-@@ -145,12 +147,17 @@
- fprintf(stderr, "pl110: Bad color depth\n");
- exit(1);
- }
-+ if (s->cr & PL110_CR_BGR)
-+ bpp_offset = 0;
-+ else
-+ bpp_offset = 18;
-+
- if (s->cr & PL110_CR_BEBO)
-- fn = fntable[s->bpp + 6];
-+ fn = fntable[s->bpp + 6 + bpp_offset];
- else if (s->cr & PL110_CR_BEPO)
-- fn = fntable[s->bpp + 12];
-+ fn = fntable[s->bpp + 12 + bpp_offset];
- else
-- fn = fntable[s->bpp];
-+ fn = fntable[s->bpp + bpp_offset];
-
- src_width = s->cols;
- switch (s->bpp) {
-diff -Naru qemu-neo1973.orig/hw/pl110_template.h qemu-neo1973/hw/pl110_template.h
---- qemu-neo1973.orig/hw/pl110_template.h 2007-06-24 13:56:37.000000000 +0200
-+++ qemu-neo1973/hw/pl110_template.h 2007-06-24 14:12:09.000000000 +0200
-@@ -24,6 +24,16 @@
- #error unknown bit depth
- #endif
-
-+#undef RGB
-+#define BORDER bgr
-+#define ORDER 0
-+#include "pl110_template.h"
-+#define ORDER 1
-+#include "pl110_template.h"
-+#define ORDER 2
-+#include "pl110_template.h"
-+#define RGB
-+#define BORDER rgb
- #define ORDER 0
- #include "pl110_template.h"
- #define ORDER 1
-@@ -33,26 +43,47 @@
-
- static drawfn glue(pl110_draw_fn_,BITS)[18] =
- {
-- glue(pl110_draw_line1_lblp,BITS),
-- glue(pl110_draw_line2_lblp,BITS),
-- glue(pl110_draw_line4_lblp,BITS),
-- glue(pl110_draw_line8_lblp,BITS),
-- glue(pl110_draw_line16_lblp,BITS),
-- glue(pl110_draw_line32_lblp,BITS),
--
-- glue(pl110_draw_line1_bbbp,BITS),
-- glue(pl110_draw_line2_bbbp,BITS),
-- glue(pl110_draw_line4_bbbp,BITS),
-- glue(pl110_draw_line8_bbbp,BITS),
-- glue(pl110_draw_line16_bbbp,BITS),
-- glue(pl110_draw_line32_bbbp,BITS),
--
-- glue(pl110_draw_line1_lbbp,BITS),
-- glue(pl110_draw_line2_lbbp,BITS),
-- glue(pl110_draw_line4_lbbp,BITS),
-- glue(pl110_draw_line8_lbbp,BITS),
-- glue(pl110_draw_line16_lbbp,BITS),
-- glue(pl110_draw_line32_lbbp,BITS)
-+ glue(pl110_draw_line1_lblp_bgr,BITS),
-+ glue(pl110_draw_line2_lblp_bgr,BITS),
-+ glue(pl110_draw_line4_lblp_bgr,BITS),
-+ glue(pl110_draw_line8_lblp_bgr,BITS),
-+ glue(pl110_draw_line16_lblp_bgr,BITS),
-+ glue(pl110_draw_line32_lblp_bgr,BITS),
-+
-+ glue(pl110_draw_line1_bbbp_bgr,BITS),
-+ glue(pl110_draw_line2_bbbp_bgr,BITS),
-+ glue(pl110_draw_line4_bbbp_bgr,BITS),
-+ glue(pl110_draw_line8_bbbp_bgr,BITS),
-+ glue(pl110_draw_line16_bbbp_bgr,BITS),
-+ glue(pl110_draw_line32_bbbp_bgr,BITS),
-+
-+ glue(pl110_draw_line1_lbbp_bgr,BITS),
-+ glue(pl110_draw_line2_lbbp_bgr,BITS),
-+ glue(pl110_draw_line4_lbbp_bgr,BITS),
-+ glue(pl110_draw_line8_lbbp_bgr,BITS),
-+ glue(pl110_draw_line16_lbbp_bgr,BITS),
-+ glue(pl110_draw_line32_lbbp_bgr,BITS),
-+
-+ glue(pl110_draw_line1_lblp_rgb,BITS),
-+ glue(pl110_draw_line2_lblp_rgb,BITS),
-+ glue(pl110_draw_line4_lblp_rgb,BITS),
-+ glue(pl110_draw_line8_lblp_rgb,BITS),
-+ glue(pl110_draw_line16_lblp_rgb,BITS),
-+ glue(pl110_draw_line32_lblp_rgb,BITS),
-+
-+ glue(pl110_draw_line1_bbbp_rgb,BITS),
-+ glue(pl110_draw_line2_bbbp_rgb,BITS),
-+ glue(pl110_draw_line4_bbbp_rgb,BITS),
-+ glue(pl110_draw_line8_bbbp_rgb,BITS),
-+ glue(pl110_draw_line16_bbbp_rgb,BITS),
-+ glue(pl110_draw_line32_bbbp_rgb,BITS),
-+
-+ glue(pl110_draw_line1_lbbp_rgb,BITS),
-+ glue(pl110_draw_line2_lbbp_rgb,BITS),
-+ glue(pl110_draw_line4_lbbp_rgb,BITS),
-+ glue(pl110_draw_line8_lbbp_rgb,BITS),
-+ glue(pl110_draw_line16_lbbp_rgb,BITS),
-+ glue(pl110_draw_line32_lbbp_rgb,BITS),
- };
-
- #undef BITS
-@@ -61,18 +92,18 @@
- #else
-
- #if ORDER == 0
--#define NAME glue(lblp, BITS)
-+#define NAME glue(glue(lblp_, BORDER), BITS)
- #ifdef WORDS_BIGENDIAN
- #define SWAP_WORDS 1
- #endif
- #elif ORDER == 1
--#define NAME glue(bbbp, BITS)
-+#define NAME glue(glue(bbbp_, BORDER), BITS)
- #ifndef WORDS_BIGENDIAN
- #define SWAP_WORDS 1
- #endif
- #else
- #define SWAP_PIXELS 1
--#define NAME glue(lbbp, BITS)
-+#define NAME glue(glue(lbbp_, BORDER), BITS)
- #ifdef WORDS_BIGENDIAN
- #define SWAP_WORDS 1
- #endif
-@@ -195,27 +226,34 @@
- #ifdef SWAP_WORDS
- data = bswap32(data);
- #endif
-+#ifdef RGB
-+#define LSB r
-+#define MSB b
-+#else
-+#define LSB b
-+#define MSB r
-+#endif
- #if 0
-- r = data & 0x1f;
-+ LSB = data & 0x1f;
- data >>= 5;
- g = data & 0x3f;
- data >>= 6;
-- b = data & 0x1f;
-+ MSB = data & 0x1f;
- data >>= 5;
- #else
-- r = (data & 0x1f) << 3;
-+ LSB = (data & 0x1f) << 3;
- data >>= 5;
- g = (data & 0x3f) << 2;
- data >>= 6;
-- b = (data & 0x1f) << 3;
-+ MSB = (data & 0x1f) << 3;
- data >>= 5;
- #endif
- COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
-- r = (data & 0x1f) << 3;
-+ LSB = (data & 0x1f) << 3;
- data >>= 5;
- g = (data & 0x3f) << 2;
- data >>= 6;
-- b = (data & 0x1f) << 3;
-+ MSB = (data & 0x1f) << 3;
- data >>= 5;
- COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
- width -= 2;
-@@ -229,14 +267,21 @@
- unsigned int r, g, b;
- while (width > 0) {
- data = *(uint32_t *)src;
-+#ifdef RGB
-+#define LSB r
-+#define MSB b
-+#else
-+#define LSB b
-+#define MSB r
-+#endif
- #ifdef SWAP_WORDS
-- r = data & 0xff;
-+ LSB = data & 0xff;
- g = (data >> 8) & 0xff;
-- b = (data >> 16) & 0xff;
-+ MSB = (data >> 16) & 0xff;
- #else
-- r = (data >> 24) & 0xff;
-+ LSB = (data >> 24) & 0xff;
- g = (data >> 16) & 0xff;
-- b = (data >> 8) & 0xff;
-+ MSB = (data >> 8) & 0xff;
- #endif
- COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
- width--;
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch b/packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch
deleted file mode 100644
index 189cd09b67..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch
+++ /dev/null
@@ -1,881 +0,0 @@
-diff -Naru qemu-neo1973.orig/dyngen.c qemu-neo1973/dyngen.c
---- qemu-neo1973.orig/dyngen.c 2007-06-24 13:56:38.000000000 +0200
-+++ qemu-neo1973/dyngen.c 2007-06-24 14:33:11.000000000 +0200
-@@ -32,6 +32,8 @@
-
- #include "config-host.h"
-
-+//#define DEBUG_OP
-+
- /* NOTE: we test CONFIG_WIN32 instead of _WIN32 to enabled cross
- compilation */
- #if defined(CONFIG_WIN32)
-@@ -1429,6 +1431,644 @@
- #endif
-
-
-+#if defined(HOST_I386) || defined(HOST_X86_64)
-+
-+/* This byte is the first byte of an instruction. */
-+#define FLAG_INSN (1 << 0)
-+/* This byte has been processed as part of an instruction. */
-+#define FLAG_SCANNED (1 << 1)
-+/* This instruction is a return instruction. Gcc cometimes generates prefix
-+ bytes, so may be more than one byte long. */
-+#define FLAG_RET (1 << 2)
-+/* This is either the target of a jump, or the preceeding instruction uses
-+ a pc-relative offset. */
-+#define FLAG_TARGET (1 << 3)
-+/* This is a magic instruction that needs fixing up. */
-+#define FLAG_EXIT (1 << 4)
-+#define MAX_EXITS 5
-+
-+static void
-+bad_opcode(const char *name, uint32_t op)
-+{
-+ error("Unsupported opcode %0*x in %s", (op > 0xff) ? 4 : 2, op, name);
-+}
-+
-+/* Mark len bytes as scanned, Returns insn_size + len. Reports an error
-+ if these bytes have already been scanned. */
-+static int
-+eat_bytes(const char *name, char *flags, int insn, int insn_size, int len)
-+{
-+ while (len > 0) {
-+ /* This should never occur in sane code. */
-+ if (flags[insn + insn_size] & FLAG_SCANNED)
-+ error ("Overlapping instructions in %s", name);
-+ flags[insn + insn_size] |= FLAG_SCANNED;
-+ insn_size++;
-+ len--;
-+ }
-+ return insn_size;
-+}
-+
-+static void
-+trace_i386_insn (const char *name, uint8_t *start_p, char *flags, int insn,
-+ int len)
-+{
-+ uint8_t *ptr;
-+ uint8_t op;
-+ int modrm;
-+ int is_prefix;
-+ int op_size;
-+ int addr_size;
-+ int insn_size;
-+ int is_ret;
-+ int is_condjmp;
-+ int is_jmp;
-+ int is_exit;
-+ int is_pcrel;
-+ int immed;
-+ int seen_rexw;
-+ int32_t disp;
-+
-+ ptr = start_p + insn;
-+ /* nonzero if this insn has a ModR/M byte. */
-+ modrm = 1;
-+ /* The size of the immediate value in this instruction. */
-+ immed = 0;
-+ /* The operand size. */
-+ op_size = 4;
-+ /* The address size */
-+ addr_size = 4;
-+ /* The total length of this instruction. */
-+ insn_size = 0;
-+ is_prefix = 1;
-+ is_ret = 0;
-+ is_condjmp = 0;
-+ is_jmp = 0;
-+ is_exit = 0;
-+ seen_rexw = 0;
-+ is_pcrel = 0;
-+
-+ while (is_prefix) {
-+ op = ptr[insn_size];
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ is_prefix = 0;
-+ switch (op >> 4) {
-+ case 0:
-+ case 1:
-+ case 2:
-+ case 3:
-+ if (op == 0x0f) {
-+ /* two-byte opcode. */
-+ op = ptr[insn_size];
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ switch (op >> 4) {
-+ case 0:
-+ if ((op & 0xf) > 3)
-+ modrm = 0;
-+ break;
-+ case 1: /* vector move or prefetch */
-+ case 2: /* various moves and vector compares. */
-+ case 4: /* cmov */
-+ case 5: /* vector instructions */
-+ case 6:
-+ case 13:
-+ case 14:
-+ case 15:
-+ break;
-+ case 7: /* mmx */
-+ if (op & 0x77) /* emms */
-+ modrm = 0;
-+ break;
-+ case 3: /* wrmsr, rdtsc, rdmsr, rdpmc, sysenter, sysexit */
-+ modrm = 0;
-+ break;
-+ case 8: /* long conditional jump */
-+ is_condjmp = 1;
-+ immed = op_size;
-+ modrm = 0;
-+ break;
-+ case 9: /* setcc */
-+ break;
-+ case 10:
-+ switch (op & 0x7) {
-+ case 0: /* push fs/gs */
-+ case 1: /* pop fs/gs */
-+ case 2: /* cpuid/rsm */
-+ modrm = 0;
-+ break;
-+ case 4: /* shld/shrd immediate */
-+ immed = 1;
-+ break;
-+ default: /* Normal instructions with a ModR/M byte. */
-+ break;
-+ }
-+ break;
-+ case 11:
-+ switch (op & 0xf) {
-+ case 10: /* bt, bts, btr, btc */
-+ immed = 1;
-+ break;
-+ default:
-+ /* cmpxchg, lss, btr, lfs, lgs, movzx, btc, bsf, bsr
-+ undefined, and movsx */
-+ break;
-+ }
-+ break;
-+ case 12:
-+ if (op & 8) {
-+ /* bswap */
-+ modrm = 0;
-+ } else {
-+ switch (op & 0x7) {
-+ case 2:
-+ case 4:
-+ case 5:
-+ case 6:
-+ immed = 1;
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+ break;
-+ }
-+ } else if ((op & 0x07) <= 0x3) {
-+ /* General arithmentic ax. */
-+ } else if ((op & 0x07) <= 0x5) {
-+ /* General arithmetic ax, immediate. */
-+ if (op & 0x01)
-+ immed = op_size;
-+ else
-+ immed = 1;
-+ modrm = 0;
-+ } else if ((op & 0x23) == 0x22) {
-+ /* Segment prefix. */
-+ is_prefix = 1;
-+ } else {
-+ /* Segment register push/pop or DAA/AAA/DAS/AAS. */
-+ modrm = 0;
-+ }
-+ break;
-+
-+#if defined(HOST_X86_64)
-+ case 4: /* rex prefix. */
-+ is_prefix = 1;
-+ /* The address/operand size is actually 64-bit, but the immediate
-+ values in the instruction are still 32-bit. */
-+ op_size = 4;
-+ addr_size = 4;
-+ if (op & 8)
-+ seen_rexw = 1;
-+ break;
-+#else
-+ case 4: /* inc/dec register. */
-+#endif
-+ case 5: /* push/pop general register. */
-+ modrm = 0;
-+ break;
-+
-+ case 6:
-+ switch (op & 0x0f) {
-+ case 0: /* pusha */
-+ case 1: /* popa */
-+ modrm = 0;
-+ break;
-+ case 2: /* bound */
-+ case 3: /* arpl */
-+ break;
-+ case 4: /* FS */
-+ case 5: /* GS */
-+ is_prefix = 1;
-+ break;
-+ case 6: /* opcode size prefix. */
-+ op_size = 2;
-+ is_prefix = 1;
-+ break;
-+ case 7: /* Address size prefix. */
-+ addr_size = 2;
-+ is_prefix = 1;
-+ break;
-+ case 8: /* push immediate */
-+ immed = op_size;
-+ modrm = 0;
-+ break;
-+ case 10: /* push 8-bit immediate */
-+ immed = 1;
-+ modrm = 0;
-+ break;
-+ case 9: /* imul immediate */
-+ immed = op_size;
-+ break;
-+ case 11: /* imul 8-bit immediate */
-+ immed = 1;
-+ break;
-+ case 12: /* insb */
-+ case 13: /* insw */
-+ case 14: /* outsb */
-+ case 15: /* outsw */
-+ modrm = 0;
-+ break;
-+ }
-+ break;
-+
-+ case 7: /* Short conditional jump. */
-+ is_condjmp = 1;
-+ immed = 1;
-+ modrm = 0;
-+ break;
-+
-+ case 8:
-+ if ((op & 0xf) <= 3) {
-+ /* arithmetic immediate. */
-+ if ((op & 3) == 1)
-+ immed = op_size;
-+ else
-+ immed = 1;
-+ }
-+ /* else test, xchg, mov, lea or pop general. */
-+ break;
-+
-+ case 9:
-+ /* Various single-byte opcodes with no modrm byte. */
-+ modrm = 0;
-+ if (op == 10) {
-+ /* Call */
-+ immed = 4;
-+ }
-+ break;
-+
-+ case 10:
-+ switch ((op & 0xe) >> 1) {
-+ case 0: /* mov absoliute immediate. */
-+ case 1:
-+ if (seen_rexw)
-+ immed = 8;
-+ else
-+ immed = addr_size;
-+ break;
-+ case 4: /* test immediate. */
-+ if (op & 1)
-+ immed = op_size;
-+ else
-+ immed = 1;
-+ break;
-+ default: /* Various string ops. */
-+ break;
-+ }
-+ modrm = 0;
-+ break;
-+
-+ case 11: /* move immediate to register */
-+ if (op & 8) {
-+ if (seen_rexw)
-+ immed = 8;
-+ else
-+ immed = op_size;
-+ } else {
-+ immed = 1;
-+ }
-+ modrm = 0;
-+ break;
-+
-+ case 12:
-+ switch (op & 0xf) {
-+ case 0: /* shift immediate */
-+ case 1:
-+ immed = 1;
-+ break;
-+ case 2: /* ret immediate */
-+ immed = 2;
-+ modrm = 0;
-+ bad_opcode(name, op);
-+ break;
-+ case 3: /* ret */
-+ modrm = 0;
-+ is_ret = 1;
-+ case 4: /* les */
-+ case 5: /* lds */
-+ break;
-+ case 6: /* mov immediate byte */
-+ immed = 1;
-+ break;
-+ case 7: /* mov immediate */
-+ immed = op_size;
-+ break;
-+ case 8: /* enter */
-+ /* TODO: Is this right? */
-+ immed = 3;
-+ modrm = 0;
-+ break;
-+ case 10: /* retf immediate */
-+ immed = 2;
-+ modrm = 0;
-+ bad_opcode(name, op);
-+ break;
-+ case 13: /* int */
-+ immed = 1;
-+ modrm = 0;
-+ break;
-+ case 11: /* retf */
-+ case 15: /* iret */
-+ modrm = 0;
-+ bad_opcode(name, op);
-+ break;
-+ default: /* leave, int3 or into */
-+ modrm = 0;
-+ break;
-+ }
-+ break;
-+
-+ case 13:
-+ if ((op & 0xf) >= 8) {
-+ /* Coprocessor escape. For our purposes this is just a normal
-+ instruction with a ModR/M byte. */
-+ } else if ((op & 0xf) >= 4) {
-+ /* AAM, AAD or XLAT */
-+ modrm = 0;
-+ }
-+ /* else shift instruction */
-+ break;
-+
-+ case 14:
-+ switch ((op & 0xc) >> 2) {
-+ case 0: /* loop or jcxz */
-+ is_condjmp = 1;
-+ immed = 1;
-+ break;
-+ case 1: /* in/out immed */
-+ immed = 1;
-+ break;
-+ case 2: /* call or jmp */
-+ switch (op & 3) {
-+ case 0: /* call */
-+ immed = op_size;
-+ break;
-+ case 1: /* long jump */
-+ immed = 4;
-+ is_jmp = 1;
-+ break;
-+ case 2: /* far jmp */
-+ bad_opcode(name, op);
-+ break;
-+ case 3: /* short jmp */
-+ immed = 1;
-+ is_jmp = 1;
-+ break;
-+ }
-+ break;
-+ case 3: /* in/out register */
-+ break;
-+ }
-+ modrm = 0;
-+ break;
-+
-+ case 15:
-+ switch ((op & 0xe) >> 1) {
-+ case 0:
-+ case 1:
-+ is_prefix = 1;
-+ break;
-+ case 2:
-+ case 4:
-+ case 5:
-+ case 6:
-+ modrm = 0;
-+ /* Some privileged insns are used as markers. */
-+ switch (op) {
-+ case 0xf4: /* hlt: Exit translation block. */
-+ is_exit = 1;
-+ break;
-+ case 0xfa: /* cli: Jump to label. */
-+ is_exit = 1;
-+ immed = 4;
-+ break;
-+ case 0xfb: /* sti: TB patch jump. */
-+ /* Mark the insn for patching, but continue sscanning. */
-+ flags[insn] |= FLAG_EXIT;
-+ immed = 4;
-+ break;
-+ }
-+ break;
-+ case 3: /* unary grp3 */
-+ if ((ptr[insn_size] & 0x38) == 0) {
-+ if (op == 0xf7)
-+ immed = op_size;
-+ else
-+ immed = 1; /* test immediate */
-+ }
-+ break;
-+ case 7: /* inc/dec grp4/5 */
-+ /* TODO: This includes indirect jumps. We should fail if we
-+ encounter one of these. */
-+ break;
-+ }
-+ break;
-+ }
-+ }
-+
-+ if (modrm) {
-+ if (addr_size != 4)
-+ error("16-bit addressing mode used in %s", name);
-+
-+ disp = 0;
-+ modrm = ptr[insn_size];
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ modrm &= 0xc7;
-+ switch ((modrm & 0xc0) >> 6) {
-+ case 0:
-+ if (modrm == 5)
-+ disp = 4;
-+ break;
-+ case 1:
-+ disp = 1;
-+ break;
-+ case 2:
-+ disp = 4;
-+ break;
-+ }
-+ if ((modrm & 0xc0) != 0xc0 && (modrm & 0x7) == 4) {
-+ /* SIB byte */
-+ if (modrm == 4 && (ptr[insn_size] & 0x7) == 5) {
-+ disp = 4;
-+ is_pcrel = 1;
-+ }
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ }
-+ insn_size = eat_bytes(name, flags, insn, insn_size, disp);
-+ }
-+ insn_size = eat_bytes(name, flags, insn, insn_size, immed);
-+ if (is_condjmp || is_jmp) {
-+ if (immed == 1) {
-+ disp = (int8_t)*(ptr + insn_size - 1);
-+ } else {
-+ disp = (((int32_t)*(ptr + insn_size - 1)) << 24)
-+ | (((int32_t)*(ptr + insn_size - 2)) << 16)
-+ | (((int32_t)*(ptr + insn_size - 3)) << 8)
-+ | *(ptr + insn_size - 4);
-+ }
-+ disp += insn_size;
-+ /* Jumps to external symbols point to the address of the offset
-+ before relocation. */
-+ /* ??? These are probably a tailcall. We could fix them up by
-+ replacing them with jmp to EOB + call, but it's easier to just
-+ prevent the compiler generating them. */
-+ if (disp == 1)
-+ error("Unconditional jump (sibcall?) in %s", name);
-+ disp += insn;
-+ if (disp < 0 || disp > len)
-+ error("Jump outside instruction in %s", name);
-+
-+ if ((flags[disp] & (FLAG_INSN | FLAG_SCANNED)) == FLAG_SCANNED)
-+ error("Overlapping instructions in %s", name);
-+
-+ flags[disp] |= (FLAG_INSN | FLAG_TARGET);
-+ is_pcrel = 1;
-+ }
-+ if (is_pcrel) {
-+ /* Mark the following insn as a jump target. This will stop
-+ this instruction being moved. */
-+ flags[insn + insn_size] |= FLAG_TARGET;
-+ }
-+ if (is_ret)
-+ flags[insn] |= FLAG_RET;
-+
-+ if (is_exit)
-+ flags[insn] |= FLAG_EXIT;
-+
-+ if (!(is_jmp || is_ret || is_exit))
-+ flags[insn + insn_size] |= FLAG_INSN;
-+}
-+
-+/* Scan a function body. Returns the position of the return sequence.
-+ Sets *patch_bytes to the number of bytes that need to be copied from that
-+ location. If no patching is required (ie. the return is the last insn)
-+ *patch_bytes will be set to -1. *plen is the number of code bytes to copy.
-+ */
-+static int trace_i386_op(const char * name, uint8_t *start_p, int *plen,
-+ int *patch_bytes, int *exit_addrs)
-+{
-+ char *flags;
-+ int more;
-+ int insn;
-+ int retpos;
-+ int bytes;
-+ int num_exits;
-+ int len;
-+ int last_insn;
-+
-+ len = *plen;
-+ flags = malloc(len + 1);
-+ memset(flags, 0, len + 1);
-+ flags[0] |= FLAG_INSN;
-+ more = 1;
-+ while (more) {
-+ more = 0;
-+ for (insn = 0; insn < len; insn++) {
-+ if ((flags[insn] & (FLAG_INSN | FLAG_SCANNED)) == FLAG_INSN) {
-+ trace_i386_insn(name, start_p, flags, insn, len);
-+ more = 1;
-+ }
-+ }
-+ }
-+
-+ /* Strip any unused code at the end of the function. */
-+ while (len > 0 && flags[len - 1] == 0)
-+ len--;
-+
-+ retpos = -1;
-+ num_exits = 0;
-+ last_insn = 0;
-+ for (insn = 0; insn < len; insn++) {
-+ if (flags[insn] & FLAG_RET) {
-+ /* ??? In theory it should be possible to handle multiple return
-+ points. In practice it's not worth the effort. */
-+ if (retpos != -1)
-+ error("Multiple return instructions in %s", name);
-+ retpos = insn;
-+ }
-+ if (flags[insn] & FLAG_EXIT) {
-+ if (num_exits == MAX_EXITS)
-+ error("Too many block exits in %s", name);
-+ exit_addrs[num_exits] = insn;
-+ num_exits++;
-+ }
-+ if (flags[insn] & FLAG_INSN)
-+ last_insn = insn;
-+ }
-+
-+ exit_addrs[num_exits] = -1;
-+ if (retpos == -1) {
-+ if (num_exits == 0) {
-+ error ("No return instruction found in %s", name);
-+ } else {
-+ retpos = len;
-+ last_insn = len;
-+ }
-+ }
-+
-+ /* If the return instruction is the last instruction we can just
-+ remove it. */
-+ if (retpos == last_insn)
-+ *patch_bytes = -1;
-+ else
-+ *patch_bytes = 0;
-+
-+ /* Back up over any nop instructions. */
-+ while (retpos > 0
-+ && (flags[retpos] & FLAG_TARGET) == 0
-+ && (flags[retpos - 1] & FLAG_INSN) != 0
-+ && start_p[retpos - 1] == 0x90) {
-+ retpos--;
-+ }
-+
-+ if (*patch_bytes == -1) {
-+ *plen = retpos;
-+ free (flags);
-+ return retpos;
-+ }
-+ *plen = len;
-+
-+ /* The ret is in the middle of the function. Find four more bytes that
-+ so the ret can be replaced by a jmp. */
-+ /* ??? Use a short jump where possible. */
-+ bytes = 4;
-+ insn = retpos + 1;
-+ /* We can clobber everything up to the next jump target. */
-+ while (insn < len && bytes > 0 && (flags[insn] & FLAG_TARGET) == 0) {
-+ insn++;
-+ bytes--;
-+ }
-+ if (bytes > 0) {
-+ /* ???: Strip out nop blocks. */
-+ /* We can't do the replacement without clobbering anything important.
-+ Copy preceeding instructions(s) to give us some space. */
-+ while (retpos > 0) {
-+ /* If this byte is the target of a jmp we can't move it. */
-+ if (flags[retpos] & FLAG_TARGET)
-+ break;
-+
-+ (*patch_bytes)++;
-+ bytes--;
-+ retpos--;
-+
-+ /* Break out of the loop if we have enough space and this is either
-+ the first byte of an instruction or a pad byte. */
-+ if ((flags[retpos] & (FLAG_INSN | FLAG_SCANNED)) != FLAG_SCANNED
-+ && bytes <= 0) {
-+ break;
-+ }
-+ }
-+ }
-+
-+ if (bytes > 0)
-+ error("Unable to replace ret with jmp in %s\n", name);
-+
-+ free(flags);
-+ return retpos;
-+}
-+
-+#endif
-+
- #define MAX_ARGS 3
-
- /* generate op code */
-@@ -1442,6 +2082,11 @@
- uint8_t args_present[MAX_ARGS];
- const char *sym_name, *p;
- EXE_RELOC *rel;
-+#if defined(HOST_I386) || defined(HOST_X86_64)
-+ int patch_bytes;
-+ int retpos;
-+ int exit_addrs[MAX_EXITS];
-+#endif
-
- /* Compute exact size excluding prologue and epilogue instructions.
- * Increment start_offset to skip epilogue instructions, then compute
-@@ -1452,33 +2097,12 @@
- p_end = p_start + size;
- start_offset = offset;
- #if defined(HOST_I386) || defined(HOST_X86_64)
--#ifdef CONFIG_FORMAT_COFF
-- {
-- uint8_t *p;
-- p = p_end - 1;
-- if (p == p_start)
-- error("empty code for %s", name);
-- while (*p != 0xc3) {
-- p--;
-- if (p <= p_start)
-- error("ret or jmp expected at the end of %s", name);
-- }
-- copy_size = p - p_start;
-- }
--#else
- {
- int len;
- len = p_end - p_start;
-- if (len == 0)
-- error("empty code for %s", name);
-- if (p_end[-1] == 0xc3) {
-- len--;
-- } else {
-- error("ret or jmp expected at the end of %s", name);
-- }
-+ retpos = trace_i386_op(name, p_start, &len, &patch_bytes, exit_addrs);
- copy_size = len;
- }
--#endif
- #elif defined(HOST_PPC)
- {
- uint8_t *p;
-@@ -1710,6 +2334,13 @@
- }
-
- if (gen_switch == 2) {
-+#if defined(HOST_I386) || defined(HOST_X86_64)
-+ if (patch_bytes != -1)
-+ copy_size += patch_bytes;
-+#ifdef DEBUG_OP
-+ copy_size += 2;
-+#endif
-+#endif
- fprintf(outfile, "DEF(%s, %d, %d)\n", name + 3, nb_args, copy_size);
- } else if (gen_switch == 1) {
-
-@@ -1915,7 +2546,43 @@
- #error unsupport object format
- #endif
- }
-+ }
-+ /* Replace the marker instructions with the actual opcodes. */
-+ for (i = 0; exit_addrs[i] != -1; i++) {
-+ int op;
-+ switch (p_start[exit_addrs[i]])
-+ {
-+ case 0xf4: op = 0xc3; break; /* hlt -> ret */
-+ case 0xfa: op = 0xe9; break; /* cli -> jmp */
-+ case 0xfb: op = 0xe9; break; /* sti -> jmp */
-+ default: error("Internal error");
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ exit_addrs[i], op);
- }
-+ /* Fix up the return instruction. */
-+ if (patch_bytes != -1) {
-+ if (patch_bytes) {
-+ fprintf(outfile, " memcpy(gen_code_ptr + %d,"
-+ "gen_code_ptr + %d, %d);\n",
-+ copy_size, retpos, patch_bytes);
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0xe9;\n",
-+ retpos);
-+ fprintf(outfile,
-+ " *(uint32_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ retpos + 1, copy_size - (retpos + 5));
-+
-+ copy_size += patch_bytes;
-+ }
-+#ifdef DEBUG_OP
-+ fprintf(outfile,
-+ " *(uint16_t *)(gen_code_ptr + %d) = 0x9090;\n",
-+ copy_size);
-+ copy_size += 2;
-+#endif
- }
- #elif defined(HOST_X86_64)
- {
-@@ -1949,6 +2616,42 @@
- }
- }
- }
-+ /* Replace the marker instructions with the actual opcodes. */
-+ for (i = 0; exit_addrs[i] != -1; i++) {
-+ int op;
-+ switch (p_start[exit_addrs[i]])
-+ {
-+ case 0xf4: op = 0xc3; break; /* hlt -> ret */
-+ case 0xfa: op = 0xe9; break; /* cli -> jmp */
-+ case 0xfb: op = 0xe9; break; /* sti -> jmp */
-+ default: error("Internal error");
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ exit_addrs[i], op);
-+ }
-+ /* Fix up the return instruction. */
-+ if (patch_bytes != -1) {
-+ if (patch_bytes) {
-+ fprintf(outfile, " memcpy(gen_code_ptr + %d,"
-+ "gen_code_ptr + %d, %d);\n",
-+ copy_size, retpos, patch_bytes);
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0xe9;\n",
-+ retpos);
-+ fprintf(outfile,
-+ " *(uint32_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ retpos + 1, copy_size - (retpos + 5));
-+
-+ copy_size += patch_bytes;
-+ }
-+#ifdef DEBUG_OP
-+ fprintf(outfile,
-+ " *(uint16_t *)(gen_code_ptr + %d) = 0x9090;\n",
-+ copy_size);
-+ copy_size += 2;
-+#endif
- }
- #elif defined(HOST_PPC)
- {
-diff -Naru qemu-neo1973.orig/dyngen-exec.h qemu-neo1973/dyngen-exec.h
---- qemu-neo1973.orig/dyngen-exec.h 2007-06-24 13:56:38.000000000 +0200
-+++ qemu-neo1973/dyngen-exec.h 2007-06-24 14:35:52.000000000 +0200
-@@ -194,7 +194,12 @@
- #endif
-
- /* force GCC to generate only one epilog at the end of the function */
-+#if defined(__i386__) || defined(__x86_64__)
-+/* Also add 4 bytes of padding so that we can replace the ret with a jmp. */
-+#define FORCE_RET() asm volatile ("nop;nop;nop;nop");
-+#else
- #define FORCE_RET() __asm__ __volatile__("" : : : "memory");
-+#endif
-
- #ifndef OPPROTO
- #define OPPROTO
-@@ -244,11 +249,18 @@
- #endif
-
- #if defined(__i386__)
--#define EXIT_TB() asm volatile ("ret")
--#define GOTO_LABEL_PARAM(n) asm volatile ("jmp " ASM_NAME(__op_gen_label) #n)
-+/* Dyngen will replace hlt instructions with a ret instruction. Inserting a
-+ ret directly would confuse dyngen. */
-+#define EXIT_TB() asm volatile ("hlt")
-+/* Dyngen will replace cli with 0x9e (jmp).
-+ We generate the offset manually. */
-+#define GOTO_LABEL_PARAM(n) \
-+ asm volatile ("cli;.long " ASM_NAME(__op_gen_label) #n " - 1f;1:")
- #elif defined(__x86_64__)
--#define EXIT_TB() asm volatile ("ret")
--#define GOTO_LABEL_PARAM(n) asm volatile ("jmp " ASM_NAME(__op_gen_label) #n)
-+/* The same as i386. */
-+#define EXIT_TB() asm volatile ("hlt")
-+#define GOTO_LABEL_PARAM(n) \
-+ asm volatile ("cli;.long " ASM_NAME(__op_gen_label) #n " - 1f;1:")
- #elif defined(__powerpc__)
- #define EXIT_TB() asm volatile ("blr")
- #define GOTO_LABEL_PARAM(n) asm volatile ("b " ASM_NAME(__op_gen_label) #n)
-diff -Naru qemu-neo1973.orig/exec-all.h qemu-neo1973/exec-all.h
---- qemu-neo1973.orig/exec-all.h 2007-06-24 14:31:58.000000000 +0200
-+++ qemu-neo1973/exec-all.h 2007-06-24 14:33:11.000000000 +0200
-@@ -329,14 +329,15 @@
-
- #elif defined(__i386__) && defined(USE_DIRECT_JUMP)
-
--/* we patch the jump instruction directly */
-+/* we patch the jump instruction directly. Use sti in place of the actual
-+ jmp instruction so that dyngen can patch in the correct result. */
- #define GOTO_TB(opname, tbparam, n)\
- do {\
- asm volatile (".section .data\n"\
- ASM_OP_LABEL_NAME(n, opname) ":\n"\
- ".long 1f\n"\
- ASM_PREVIOUS_SECTION \
-- "jmp " ASM_NAME(__op_jmp) #n "\n"\
-+ "sti;.long " ASM_NAME(__op_jmp) #n " - 1f\n"\
- "1:\n");\
- } while (0)
-
-diff -Naru qemu-neo1973.orig/target-ppc/exec.h qemu-neo1973/target-ppc/exec.h
---- qemu-neo1973.orig/target-ppc/exec.h 2007-06-24 13:56:32.000000000 +0200
-+++ qemu-neo1973/target-ppc/exec.h 2007-06-24 14:33:11.000000000 +0200
-@@ -66,11 +66,7 @@
- #define FT1 (env->ft1)
- #define FT2 (env->ft2)
-
--#if defined (DEBUG_OP)
--# define RETURN() __asm__ __volatile__("nop" : : : "memory");
--#else
--# define RETURN() __asm__ __volatile__("" : : : "memory");
--#endif
-+#define RETURN() FORCE_RET()
-
- static inline target_ulong rotl8 (target_ulong i, int n)
- {
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch
deleted file mode 100644
index 8f5e9d8b4b..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naru qemu-snapshot-2007-07-01_05.orig/linux-user/mmap.c qemu-snapshot-2007-07-01_05/linux-user/mmap.c
---- qemu-snapshot-2007-07-01_05.orig/linux-user/mmap.c 2007-06-03 17:31:32.000000000 +0200
-+++ qemu-snapshot-2007-07-01_05/linux-user/mmap.c 2007-07-02 14:00:30.000000000 +0200
-@@ -234,7 +234,7 @@
- host_offset = offset & qemu_host_page_mask;
- host_len = len + offset - host_offset;
- host_start = (long)mmap(real_start ? g2h(real_start) : NULL,
-- host_len, prot, flags, fd, host_offset);
-+ host_len, prot, (flags | MAP_32BIT), fd, host_offset);
- if (host_start == -1)
- return host_start;
- /* update start so that it points to the file position at 'offset' */
-@@ -388,7 +388,7 @@
- int prot;
-
- /* XXX: use 5 args syscall */
-- new_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags);
-+ new_addr = (long)mremap(g2h(old_addr), old_size, new_size, (flags | MAP_32BIT));
- if (new_addr == -1)
- return new_addr;
- new_addr = h2g(new_addr);
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch
deleted file mode 100644
index 08d5513f36..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naru qemu-snapshot-2007-06-24_05.orig/sdl.c qemu-snapshot-2007-06-24_05/sdl.c
---- qemu-snapshot-2007-06-24_05.orig/sdl.c 2007-06-21 23:08:02.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/sdl.c 2007-06-24 16:33:20.000000000 +0200
-@@ -245,7 +245,7 @@
-
- if (kbd_mouse_is_absolute()) {
- SDL_ShowCursor(1);
-- SDL_SetCursor(sdl_cursor_hidden);
-+ /* SDL_SetCursor(sdl_cursor_hidden); */
- } else {
- SDL_ShowCursor(0);
- }
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch b/packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch
deleted file mode 100644
index bdb0d2e232..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-#DPATCHLEVEL=0
----
-# dyngen-exec.h | 4 ++--
-# 1 file changed, 2 insertions(+), 2 deletions(-)
-#
-Index: dyngen-exec.h
-===================================================================
---- dyngen-exec.h.orig 2007-12-03 15:40:26.000000000 +0000
-+++ dyngen-exec.h 2007-12-03 16:03:29.000000000 +0000
-@@ -38,7 +38,7 @@ typedef unsigned int uint32_t;
- // Linux/Sparc64 defines uint64_t
- #if !(defined (__sparc_v9__) && defined(__linux__))
- /* XXX may be done for all 64 bits targets ? */
--#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__)
-+#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
- typedef unsigned long uint64_t;
- #else
- typedef unsigned long long uint64_t;
-@@ -55,7 +55,7 @@ typedef signed short int16_t;
- typedef signed int int32_t;
- // Linux/Sparc64 defines int64_t
- #if !(defined (__sparc_v9__) && defined(__linux__))
--#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__)
-+#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
- typedef signed long int64_t;
- #else
- typedef signed long long int64_t;
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch b/packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch
deleted file mode 100644
index fe90f36182..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- a/Makefile.org 2007-11-18 23:33:07.000000000 +0200
-+++ a/Makefile 2008-01-01 19:09:25.000000000 +0200
-@@ -165,7 +165,7 @@
- install: all $(if $(BUILD_DOCS),install-doc)
- mkdir -p "$(DESTDIR)$(bindir)"
- ifneq ($(TOOLS),)
-- $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
-+ $(INSTALL) -m 755 $(TOOLS) "$(DESTDIR)$(bindir)"
- endif
- mkdir -p "$(DESTDIR)$(datadir)"
- for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
---- a/Makefile.target.org 2007-11-19 00:34:46.000000000 +0200
-+++ a/Makefile.target 2008-01-01 19:10:02.000000000 +0200
-@@ -629,7 +629,7 @@
-
- install: all
- ifneq ($(PROGS),)
-- $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
-+ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"
- endif
-
- ifneq ($(wildcard .depend),)
diff --git a/packages/resourceext/.mtn2git_empty b/packages/qemu/qemu-0.9.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/resourceext/.mtn2git_empty
+++ b/packages/qemu/qemu-0.9.1/.mtn2git_empty
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/02_snapshot_use_tmpdir.patch b/packages/qemu/qemu-0.9.1/02_snapshot_use_tmpdir.patch
index 40264ed443..40264ed443 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/02_snapshot_use_tmpdir.patch
+++ b/packages/qemu/qemu-0.9.1/02_snapshot_use_tmpdir.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/04_do_not_print_rtc_freq_if_ok.patch b/packages/qemu/qemu-0.9.1/04_do_not_print_rtc_freq_if_ok.patch
index 31c9da491d..31c9da491d 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/04_do_not_print_rtc_freq_if_ok.patch
+++ b/packages/qemu/qemu-0.9.1/04_do_not_print_rtc_freq_if_ok.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/05_non-fatal_if_linux_hd_missing.patch b/packages/qemu/qemu-0.9.1/05_non-fatal_if_linux_hd_missing.patch
index fdd922605e..fdd922605e 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/05_non-fatal_if_linux_hd_missing.patch
+++ b/packages/qemu/qemu-0.9.1/05_non-fatal_if_linux_hd_missing.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/06_exit_segfault.patch b/packages/qemu/qemu-0.9.1/06_exit_segfault.patch
index 06123d0626..06123d0626 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/06_exit_segfault.patch
+++ b/packages/qemu/qemu-0.9.1/06_exit_segfault.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/10_signal_jobs.patch b/packages/qemu/qemu-0.9.1/10_signal_jobs.patch
index 34282adc9d..34282adc9d 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/10_signal_jobs.patch
+++ b/packages/qemu/qemu-0.9.1/10_signal_jobs.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/11_signal_sigaction.patch b/packages/qemu/qemu-0.9.1/11_signal_sigaction.patch
index 33c5e8b12d..33c5e8b12d 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/11_signal_sigaction.patch
+++ b/packages/qemu/qemu-0.9.1/11_signal_sigaction.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/22_net_tuntap_stall.patch b/packages/qemu/qemu-0.9.1/22_net_tuntap_stall.patch
index 6017df0f6d..6017df0f6d 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/22_net_tuntap_stall.patch
+++ b/packages/qemu/qemu-0.9.1/22_net_tuntap_stall.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/31_syscalls.patch b/packages/qemu/qemu-0.9.1/31_syscalls.patch
index 95a7332ee8..95a7332ee8 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/31_syscalls.patch
+++ b/packages/qemu/qemu-0.9.1/31_syscalls.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/32_syscall_sysctl.patch b/packages/qemu/qemu-0.9.1/32_syscall_sysctl.patch
index 5e8dd75b0e..5e8dd75b0e 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/32_syscall_sysctl.patch
+++ b/packages/qemu/qemu-0.9.1/32_syscall_sysctl.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/33_syscall_ppc_clone.patch b/packages/qemu/qemu-0.9.1/33_syscall_ppc_clone.patch
index 3f733b6ab8..3f733b6ab8 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/33_syscall_ppc_clone.patch
+++ b/packages/qemu/qemu-0.9.1/33_syscall_ppc_clone.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/39_syscall_fadvise64.patch b/packages/qemu/qemu-0.9.1/39_syscall_fadvise64.patch
index 54ee3e0948..54ee3e0948 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/39_syscall_fadvise64.patch
+++ b/packages/qemu/qemu-0.9.1/39_syscall_fadvise64.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/41_arm_fpa_sigfpe.patch b/packages/qemu/qemu-0.9.1/41_arm_fpa_sigfpe.patch
index cea3afc7ff..cea3afc7ff 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/41_arm_fpa_sigfpe.patch
+++ b/packages/qemu/qemu-0.9.1/41_arm_fpa_sigfpe.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/52_ne2000_return.patch b/packages/qemu/qemu-0.9.1/52_ne2000_return.patch
index e4ea33f2c6..e4ea33f2c6 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/52_ne2000_return.patch
+++ b/packages/qemu/qemu-0.9.1/52_ne2000_return.patch
diff --git a/packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch b/packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch
new file mode 100644
index 0000000000..9b1ace81a5
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch
@@ -0,0 +1,27 @@
+#DPATCHLEVEL=0
+---
+# dyngen-exec.h | 4 ++--
+# 1 file changed, 2 insertions(+), 2 deletions(-)
+#
+Index: dyngen-exec.h
+===================================================================
+--- dyngen-exec.h.orig 2007-12-31 13:06:21.000000000 +0000
++++ dyngen-exec.h 2007-12-31 13:08:54.000000000 +0000
+@@ -38,7 +38,7 @@
+ // Linux/Sparc64 defines uint64_t
+ #if !(defined (__sparc_v9__) && defined(__linux__))
+ /* XXX may be done for all 64 bits targets ? */
+-#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__)
++#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
+ typedef unsigned long uint64_t;
+ #else
+ typedef unsigned long long uint64_t;
+@@ -55,7 +55,7 @@
+ typedef signed int int32_t;
+ // Linux/Sparc64 defines int64_t
+ #if !(defined (__sparc_v9__) && defined(__linux__))
+-#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__)
++#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
+ typedef signed long int64_t;
+ #else
+ typedef signed long long int64_t;
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/63_sparc_build.patch b/packages/qemu/qemu-0.9.1/63_sparc_build.patch
index 37b38f641b..37b38f641b 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/63_sparc_build.patch
+++ b/packages/qemu/qemu-0.9.1/63_sparc_build.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/64_ppc_asm_constraints.patch b/packages/qemu/qemu-0.9.1/64_ppc_asm_constraints.patch
index e4858b79d7..e4858b79d7 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/64_ppc_asm_constraints.patch
+++ b/packages/qemu/qemu-0.9.1/64_ppc_asm_constraints.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/65_kfreebsd.patch b/packages/qemu/qemu-0.9.1/65_kfreebsd.patch
index dfece800ac..dfece800ac 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/65_kfreebsd.patch
+++ b/packages/qemu/qemu-0.9.1/65_kfreebsd.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/66_tls_ld.patch b/packages/qemu/qemu-0.9.1/66_tls_ld.patch
index 54e02eff8b..54e02eff8b 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/66_tls_ld.patch
+++ b/packages/qemu/qemu-0.9.1/66_tls_ld.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/91-oh-sdl-cursor.patch b/packages/qemu/qemu-0.9.1/91-oh-sdl-cursor.patch
index 0d60c1c306..0d60c1c306 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/91-oh-sdl-cursor.patch
+++ b/packages/qemu/qemu-0.9.1/91-oh-sdl-cursor.patch
diff --git a/packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch b/packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch
new file mode 100644
index 0000000000..3ec304a38c
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch
@@ -0,0 +1,28 @@
+Index: qemu-0.9.1/configure
+===================================================================
+--- qemu-0.9.1.orig/configure 2008-01-24 15:33:13.000000000 +0000
++++ qemu-0.9.1/configure 2008-01-24 15:45:50.000000000 +0000
+@@ -209,15 +209,17 @@
+
+ # find source path
+ source_path=`dirname "$0"`
++source_path_used="no"
++workdir=`pwd`
++workdir=`readlink -f $workdir`
+ if [ -z "$source_path" ]; then
+- source_path=`pwd`
++ source_path=$workdir
+ else
+ source_path=`cd "$source_path"; pwd`
+-fi
+-if test "$source_path" = `pwd` ; then
+- source_path_used="no"
+-else
+- source_path_used="yes"
++ source_path=`readlink -f $source_path`
++ if test "$source_path" != "$workdir" ; then
++ source_path_used="yes"
++ fi
+ fi
+
+ werror="no"
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/disable-error-in-configure.patch b/packages/qemu/qemu-0.9.1/disable-error-in-configure.patch
index 017f9f6355..017f9f6355 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/disable-error-in-configure.patch
+++ b/packages/qemu/qemu-0.9.1/disable-error-in-configure.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/fix_segfault.patch b/packages/qemu/qemu-0.9.1/fix_segfault.patch
index 443c330650..443c330650 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/fix_segfault.patch
+++ b/packages/qemu/qemu-0.9.1/fix_segfault.patch
diff --git a/packages/qemu/qemu-0.9.1/no-strip.patch b/packages/qemu/qemu-0.9.1/no-strip.patch
new file mode 100644
index 0000000000..fc69b37e16
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/no-strip.patch
@@ -0,0 +1,22 @@
+--- qemu.orig/Makefile 2008-01-29 23:16:27.000000000 -0800
++++ qemu-0.9.1/Makefile 2008-01-29 23:16:38.000000000 -0800
+@@ -174,7 +174,7 @@
+ install: all $(if $(BUILD_DOCS),install-doc)
+ mkdir -p "$(DESTDIR)$(bindir)"
+ ifneq ($(TOOLS),)
+- $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
++ $(INSTALL) -m 755 $(TOOLS) "$(DESTDIR)$(bindir)"
+ endif
+ mkdir -p "$(DESTDIR)$(datadir)"
+ for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
+--- qemu.orig/Makefile.target 2008-01-29 23:16:27.000000000 -0800
++++ qemu-0.9.1/Makefile.target 2008-01-29 23:17:33.000000000 -0800
+@@ -632,7 +632,7 @@
+
+ install: all
+ ifneq ($(PROGS),)
+- $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
++ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"
+ endif
+
+ ifneq ($(wildcard .depend),)
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl-update.patch b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl-update.patch
index ebc996e873..ebc996e873 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl-update.patch
+++ b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl-update.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl.patch b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl.patch
index 10e3cc04a5..10e3cc04a5 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl.patch
+++ b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-amd64-32b-mapping-0.9.0.patch b/packages/qemu/qemu-0.9.1/qemu-amd64-32b-mapping-0.9.0.patch
index c7f36d8110..c7f36d8110 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-amd64-32b-mapping-0.9.0.patch
+++ b/packages/qemu/qemu-0.9.1/qemu-amd64-32b-mapping-0.9.0.patch
diff --git a/packages/qemu/qemu-0.9.1/series b/packages/qemu/qemu-0.9.1/series
new file mode 100644
index 0000000000..e6ffdcc6bd
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/series
@@ -0,0 +1,25 @@
+02_snapshot_use_tmpdir.patch -p0
+04_do_not_print_rtc_freq_if_ok.patch -p1
+05_non-fatal_if_linux_hd_missing.patch -p1
+06_exit_segfault.patch -p0
+10_signal_jobs.patch -p0
+11_signal_sigaction.patch -p0
+22_net_tuntap_stall.patch -p0
+31_syscalls.patch -p0
+32_syscall_sysctl.patch -p0
+33_syscall_ppc_clone.patch -p0
+39_syscall_fadvise64.patch -p0
+41_arm_fpa_sigfpe.patch -p0
+52_ne2000_return.patch -p1
+61_safe_64bit_int.patch -p0
+63_sparc_build.patch -p0
+64_ppc_asm_constraints.patch -p1
+65_kfreebsd.patch -p0
+66_tls_ld.patch -p0
+91-oh-sdl-cursor.patch -p0
+qemu-0.9.0-nptl.patch -p1
+qemu-0.9.0-nptl-update.patch -p1
+qemu-amd64-32b-mapping-0.9.0.patch -p1
+workaround_bad_futex_headers.patch -p1
+fix_segfault.patch -p1
+disable-error-in-configure.patch -p1
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/workaround_bad_futex_headers.patch b/packages/qemu/qemu-0.9.1/workaround_bad_futex_headers.patch
index cc122ebdba..cc122ebdba 100644
--- a/packages/qemu/qemu-0.9.0+cvs20071121/workaround_bad_futex_headers.patch
+++ b/packages/qemu/qemu-0.9.1/workaround_bad_futex_headers.patch
diff --git a/packages/qemu/qemu-0.9.1/writev_fix.patch b/packages/qemu/qemu-0.9.1/writev_fix.patch
new file mode 100644
index 0000000000..e0ed4af972
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/writev_fix.patch
@@ -0,0 +1,17 @@
+---
+ linux-user/syscall.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: qemu-0.9.1/linux-user/syscall.c
+===================================================================
+--- qemu-0.9.1.orig/linux-user/syscall.c 2008-02-03 00:00:00.000000000 +0000
++++ qemu-0.9.1/linux-user/syscall.c 2008-02-03 00:00:38.000000000 +0000
+@@ -1048,7 +1048,7 @@ static abi_long lock_iovec(int type, str
+ base = tswapl(target_vec[i].iov_base);
+ vec[i].iov_len = tswapl(target_vec[i].iov_len);
+ vec[i].iov_base = lock_user(type, base, vec[i].iov_len, copy);
+- if (!vec[i].iov_base)
++ if (!vec[i].iov_base && vec[i].iov_len)
+ goto fail;
+ }
+ unlock_user (target_vec, target_addr, 0);
diff --git a/packages/qemu/qemu-native.inc b/packages/qemu/qemu-native.inc
index a20f5056b5..3e6433cc5e 100644
--- a/packages/qemu/qemu-native.inc
+++ b/packages/qemu/qemu-native.inc
@@ -1,8 +1,6 @@
-FILESPATH =. "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/qemu-${PV}:"
-DEPENDS = "libsdl-native zlib-native"
+inherit native
+
+DEPENDS = "libsdl-native zlib-native gcc3-native"
require qemu-gcc3-check.inc
-do_stage() {
- find . -name "qemu-*" -type f -perm -755 -exec install -m 0755 {} ${STAGING_BINDIR} \;
-}
diff --git a/packages/qemu/qemu-native_0.9.0+cvs.bb b/packages/qemu/qemu-native_0.9.0+cvs.bb
deleted file mode 100644
index 65a7908a5c..0000000000
--- a/packages/qemu/qemu-native_0.9.0+cvs.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require qemu_0.9.0+cvs.bb
-inherit native
-require qemu-native.inc
diff --git a/packages/qemu/qemu-native_0.9.1.bb b/packages/qemu/qemu-native_0.9.1.bb
new file mode 100644
index 0000000000..16984a3f6a
--- /dev/null
+++ b/packages/qemu/qemu-native_0.9.1.bb
@@ -0,0 +1,2 @@
+require qemu_${PV}.bb
+require qemu-native.inc
diff --git a/packages/qemu/qemu-native_20070613.bb b/packages/qemu/qemu-native_20070613.bb
index d440d560e8..dc9852bd8c 100644
--- a/packages/qemu/qemu-native_20070613.bb
+++ b/packages/qemu/qemu-native_20070613.bb
@@ -1,7 +1,4 @@
require qemu_${PV}.bb
-inherit native
-DEPENDS = "zlib-native"
-prefix = "${STAGING_DIR_NATIVE}/${layout_prefix}"
+require qemu-native.inc
-require qemu-gcc3-check.inc
diff --git a/packages/qemu/qemu-native_20071121.bb b/packages/qemu/qemu-native_20071121.bb
deleted file mode 100644
index a813528d87..0000000000
--- a/packages/qemu/qemu-native_20071121.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-SRCDATE_qemu-native = "20071121"
-require qemu_${PV}.bb
-inherit native
-PR = "r1"
-DEPENDS = "zlib-native"
-prefix = "${STAGING_DIR_NATIVE}/${layout_prefix}"
-
-require qemu-gcc3-check.inc
diff --git a/packages/qemu/qemu-native_cvs.bb b/packages/qemu/qemu-native_cvs.bb
index 639f9a6a7c..c9db5e35b9 100644
--- a/packages/qemu/qemu-native_cvs.bb
+++ b/packages/qemu/qemu-native_cvs.bb
@@ -1,3 +1,2 @@
require qemu_cvs.bb
-inherit native
require qemu-native.inc
diff --git a/packages/qemu/qemu_0.9.0+cvs.bb b/packages/qemu/qemu_0.9.0+cvs.bb
deleted file mode 100644
index 8a89b805a2..0000000000
--- a/packages/qemu/qemu_0.9.0+cvs.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "Qemu is an open source processor emulator."
-HOMEPAGE = "http://fabrice.bellard.free.fr/qemu/"
-SECTION = "devel"
-LICENSE = "GPL"
-SRCDATE="20070701"
-PV = "0.9.0+cvs${SRCDATE}"
-PR = "r1"
-
-SRC_URI = "cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu;date=${SRCDATE} \
- file://configure-0.9.0.patch;patch=1 \
- file://qemu-sdl-cursor-0.9.0.patch;patch=1 \
- file://arm_nptl-0.9.0.patch;patch=1 \
- file://pl110_rgb-r0-0.9.0.patch;patch=1 \
- file://qemu-0.9.0-gcc4.patch;patch=1 \
- file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1"
-S = "${WORKDIR}/qemu"
-
-EXTRA_OECONF="--disable-gcc-check"
-
-inherit autotools
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/packages/qemu/qemu_0.9.1.bb b/packages/qemu/qemu_0.9.1.bb
new file mode 100644
index 0000000000..164296b0d4
--- /dev/null
+++ b/packages/qemu/qemu_0.9.1.bb
@@ -0,0 +1,49 @@
+LICENSE = "GPL"
+DEPENDS = "zlib"
+PR = "r7"
+
+FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
+FILESDIR = "${WORKDIR}"
+
+SRC_URI = "\
+ http://fabrice.bellard.free.fr/qemu/qemu-0.9.1.tar.gz \
+ file://02_snapshot_use_tmpdir.patch;patch=1;pnum=0 \
+ file://04_do_not_print_rtc_freq_if_ok.patch;patch=1;pnum=1 \
+ file://05_non-fatal_if_linux_hd_missing.patch;patch=1;pnum=1 \
+ file://06_exit_segfault.patch;patch=1;pnum=0 \
+ file://10_signal_jobs.patch;patch=1;pnum=0 \
+ file://11_signal_sigaction.patch;patch=1;pnum=0 \
+ file://22_net_tuntap_stall.patch;patch=1;pnum=0 \
+ file://31_syscalls.patch;patch=1;pnum=0 \
+ file://32_syscall_sysctl.patch;patch=1;pnum=0 \
+ file://33_syscall_ppc_clone.patch;patch=1;pnum=0 \
+ file://39_syscall_fadvise64.patch;patch=1;pnum=0 \
+ file://41_arm_fpa_sigfpe.patch;patch=1;pnum=0 \
+ file://52_ne2000_return.patch;patch=1;pnum=1 \
+ file://61_safe_64bit_int.patch;patch=1;pnum=0 \
+ file://63_sparc_build.patch;patch=1;pnum=0 \
+ file://64_ppc_asm_constraints.patch;patch=1;pnum=1 \
+ file://65_kfreebsd.patch;patch=1;pnum=0 \
+ file://66_tls_ld.patch;patch=1;pnum=0 \
+ file://91-oh-sdl-cursor.patch;patch=1;pnum=0 \
+ file://qemu-0.9.0-nptl.patch;patch=1 \
+ file://qemu-0.9.0-nptl-update.patch;patch=1 \
+ file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1 \
+ file://workaround_bad_futex_headers.patch;patch=1 \
+ file://fix_segfault.patch;patch=1 \
+ file://writev_fix.patch;patch=1 \
+ file://configure_symlinkpath_fix.patch;patch=1 \
+ file://disable-error-in-configure.patch;patch=1 \
+ file://no-strip.patch;patch=1"
+
+S = "${WORKDIR}/qemu-${PV}"
+
+#EXTRA_OECONF += "--disable-sdl"
+#EXTRA_OECONF += "--target-list=arm-linux-user,arm-softmmu"
+EXTRA_OECONF += "--disable-gfx-check"
+
+inherit autotools
+
+do_configure() {
+ oe_runconf
+}
diff --git a/packages/qemu/qemu_20070613.bb b/packages/qemu/qemu_20070613.bb
index 6584bcc3ed..533848963b 100644
--- a/packages/qemu/qemu_20070613.bb
+++ b/packages/qemu/qemu_20070613.bb
@@ -4,6 +4,7 @@ SRCDATE = "20070613"
PV = "0.9.0+cvs${SRCDATE}"
PR = "r5"
+FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
FILESDIR = "${WORKDIR}"
SRC_URI = "\
@@ -37,15 +38,6 @@ SRC_URI = "\
file://fix_segfault.patch;patch=1 \
file://no-strip.patch;patch=1"
-# svn://svn.o-hand.com/repos/misc/trunk/qemu-packaging/qemu;module=debian;proto=http;srcdate=20070119 \
-# file://debian/patches/21_net_soopts.patch;patch=1;pnum=0 \
-# file://debian/patches/35_syscall_sockaddr.patch;patch=1;pnum=0 \
-# file://debian/patches/43_arm_cpustate.patch;patch=1;pnum=0 \
-# file://debian/patches/62_linux_boot_nasm.patch;patch=1;pnum=0 \
-# file://debian/patches/67_ppc_ftbfs.patch;patch=1;pnum=0 \
-# file://debian/patches/80_ui_curses.patch;patch=1;pnum=0 \
-# file://debian/patches/96-x.patch;patch=1"
-
S = "${WORKDIR}/qemu"
#EXTRA_OECONF = "--disable-sdl"
diff --git a/packages/qemu/qemu_20071121.bb b/packages/qemu/qemu_20071121.bb
deleted file mode 100644
index 2b6f289974..0000000000
--- a/packages/qemu/qemu_20071121.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-LICENSE = "GPL"
-DEPENDS = "zlib"
-SRCDATE = "20071121"
-PV = "0.9.0+cvs${SRCDATE}"
-PR = "r1"
-
-DEFAULT_PREFERENCE = "-1"
-
-FILESPATH = "${FILE_DIRNAME}/qemu-${PV}:${FILE_DIRNAME}/files"
-FILESDIR = "${WORKDIR}"
-
-SRC_URI = "\
- cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
- file://02_snapshot_use_tmpdir.patch;patch=1;pnum=0 \
- file://04_do_not_print_rtc_freq_if_ok.patch;patch=1;pnum=1 \
- file://05_non-fatal_if_linux_hd_missing.patch;patch=1;pnum=1 \
- file://06_exit_segfault.patch;patch=1;pnum=0 \
- file://10_signal_jobs.patch;patch=1;pnum=0 \
- file://11_signal_sigaction.patch;patch=1;pnum=0 \
- file://22_net_tuntap_stall.patch;patch=1;pnum=0 \
- file://31_syscalls.patch;patch=1;pnum=0 \
- file://32_syscall_sysctl.patch;patch=1;pnum=0 \
- file://33_syscall_ppc_clone.patch;patch=1;pnum=0 \
- file://39_syscall_fadvise64.patch;patch=1;pnum=0 \
- file://41_arm_fpa_sigfpe.patch;patch=1;pnum=0 \
- file://52_ne2000_return.patch;patch=1;pnum=1 \
- file://61_safe_64bit_int.patch;patch=1;pnum=0 \
- file://63_sparc_build.patch;patch=1;pnum=0 \
- file://64_ppc_asm_constraints.patch;patch=1;pnum=1 \
- file://65_kfreebsd.patch;patch=1;pnum=0 \
- file://66_tls_ld.patch;patch=1;pnum=0 \
- file://91-oh-sdl-cursor.patch;patch=1;pnum=0 \
- file://qemu-0.9.0-nptl.patch;patch=1 \
- file://qemu-0.9.0-nptl-update.patch;patch=1 \
- file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1 \
- file://workaround_bad_futex_headers.patch;patch=1 \
- file://fix_segfault.patch;patch=1 \
- file://disable-error-in-configure.patch;patch=1 \
- file://no-strip.patch;patch=1"
-
-# svn://svn.o-hand.com/repos/misc/trunk/qemu-packaging/qemu;module=debian;proto=http;srcdate=20070119 \
-# file://debian/patches/21_net_soopts.patch;patch=1;pnum=0 \
-# file://debian/patches/35_syscall_sockaddr.patch;patch=1;pnum=0 \
-# file://debian/patches/43_arm_cpustate.patch;patch=1;pnum=0 \
-# file://debian/patches/62_linux_boot_nasm.patch;patch=1;pnum=0 \
-# file://debian/patches/67_ppc_ftbfs.patch;patch=1;pnum=0 \
-# file://debian/patches/80_ui_curses.patch;patch=1;pnum=0 \
-# file://debian/patches/96-x.patch;patch=1"
-
-S = "${WORKDIR}/qemu"
-
-#EXTRA_OECONF += "--disable-sdl"
-#EXTRA_OECONF += "--target-list=arm-linux-user"
-EXTRA_OECONF += "--disable-gfx-check"
-
-inherit autotools
-
-do_configure() {
- oe_runconf
-}
diff --git a/packages/qemu/qemu_cvs.bb b/packages/qemu/qemu_cvs.bb
index d76bfa2834..137262ca2d 100644
--- a/packages/qemu/qemu_cvs.bb
+++ b/packages/qemu/qemu_cvs.bb
@@ -1,26 +1,55 @@
-DESCRIPTION = "Qemu is an open source processor emulator."
-HOMEPAGE = "http://fabrice.bellard.free.fr/qemu/"
-SECTION = "devel"
LICENSE = "GPL"
-PV = "0.8.2+cvs${SRCDATE}"
-PR = "r2"
+DEPENDS = "zlib"
+PV = "0.9.0+cvs${SRCDATE}"
+PR = "r4"
+
+DEFAULT_PREFERENCE = "-1"
+FILESDIR = "${WORKDIR}"
+
+SRC_URI = "\
+ cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
+ file://02_snapshot_use_tmpdir.patch;patch=1;pnum=0 \
+ file://03_machines_list_no_error.patch;patch=1;pnum=0 \
+ file://04_do_not_print_rtc_freq_if_ok.patch;patch=1;pnum=1 \
+ file://05_non-fatal_if_linux_hd_missing.patch;patch=1;pnum=1 \
+ file://06_exit_segfault.patch;patch=1;pnum=0 \
+ file://10_signal_jobs.patch;patch=1;pnum=0 \
+ file://11_signal_sigaction.patch;patch=1;pnum=0 \
+ file://12_signal_powerpc_support.patch;patch=1;pnum=1 \
+ file://22_net_tuntap_stall.patch;patch=1;pnum=0 \
+ file://31_syscalls.patch;patch=1;pnum=0 \
+ file://32_syscall_sysctl.patch;patch=1;pnum=0 \
+ file://33_syscall_ppc_clone.patch;patch=1;pnum=0 \
+ file://39_syscall_fadvise64.patch;patch=1;pnum=0 \
+ file://41_arm_fpa_sigfpe.patch;patch=1;pnum=0 \
+ file://52_ne2000_return.patch;patch=1;pnum=1 \
+ file://61_safe_64bit_int.patch;patch=1;pnum=0 \
+ file://63_sparc_build.patch;patch=1;pnum=0 \
+ file://64_ppc_asm_constraints.patch;patch=1;pnum=1 \
+ file://65_kfreebsd.patch;patch=1;pnum=0 \
+ file://66_tls_ld.patch;patch=1;pnum=0 \
+ file://91-oh-sdl-cursor.patch;patch=1;pnum=0 \
+ file://93-oh-pl110-rgb.patch;patch=1;pnum=0 \
+ file://qemu-0.9.0-nptl.patch;patch=1 \
+ file://qemu-0.9.0-nptl-update.patch;patch=1 \
+ file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1 \
+ file://workaround_bad_futex_headers.patch;patch=1 \
+ file://fix_segfault.patch;patch=1"
+
+# svn://svn.o-hand.com/repos/misc/trunk/qemu-packaging/qemu;module=debian;proto=http;srcdate=20070119 \
+# file://debian/patches/21_net_soopts.patch;patch=1;pnum=0 \
+# file://debian/patches/35_syscall_sockaddr.patch;patch=1;pnum=0 \
+# file://debian/patches/43_arm_cpustate.patch;patch=1;pnum=0 \
+# file://debian/patches/62_linux_boot_nasm.patch;patch=1;pnum=0 \
+# file://debian/patches/67_ppc_ftbfs.patch;patch=1;pnum=0 \
+# file://debian/patches/80_ui_curses.patch;patch=1;pnum=0 \
+# file://debian/patches/96-x.patch;patch=1"
-SRC_URI = "cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
- file://configure.patch;patch=1 \
- file://makefile.patch;patch=1 \
- file://qemu-sdl-cursor.patch;patch=1 \
- file://arm_nptl.patch;patch=1 \
- file://pl110_rgb-r0.patch;patch=1 \
- file://qemu-pci-irq-sharing.patch;patch=1 \
- file://compiler.patch;patch=1 \
- file://qemu-usb-wacom-0.8.2.patch;patch=1 \
- file://qemu-usb-wacom-pressure.patch;patch=1 \
- file://qemu-usb-wacom-buttons.patch;patch=1 \
- http://www.busybox.net/downloads/qemu/qemu-gcc-4-all.patch;patch=1"
S = "${WORKDIR}/qemu"
-EXTRA_OECONF="--disable-gcc-check"
+#EXTRA_OECONF += "--disable-sdl"
+#EXTRA_OECONF += "--target-list=arm-linux-user"
+EXTRA_OECONF += "--disable-gfx-check"
inherit autotools
-DEFAULT_PREFERENCE = "-1"
diff --git a/packages/qpf-fonts/qpf-arabic_1.0.bb b/packages/qpf-fonts/qpf-arabic_1.0.bb
index 1d73f880c8..d2ef3af639 100644
--- a/packages/qpf-fonts/qpf-arabic_1.0.bb
+++ b/packages/qpf-fonts/qpf-arabic_1.0.bb
@@ -1,18 +1,9 @@
+require qpf.inc
+
DESCRIPTION = "Arabic fonts from Arabeyes.org"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "GPL"
HOMEPAGE = "http://www.arabeyes.org"
-PR = "r0"
+LICENSE = "GPL"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/arabeyes/arabic-fonts-${PV}.tar.gz"
S = "${WORKDIR}"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb b/packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb
index 10d2d4acdd..8aaae9143e 100644
--- a/packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb
+++ b/packages/qpf-fonts/qpf-bitstream-vera-sans-mono_1.10.bb
@@ -1,8 +1,8 @@
+require qpf.inc
+
DESCRIPTION = "Bitstream Vera Monospaced Font, QPF for Qt/Embedded"
-SECTION = "opie/fonts"
LICENSE = "Bitstream Vera"
-PACKAGE_ARCH = "all"
-PR = "r3"
+PR = "r4"
PROVIDES += "qpf-bitstream-vera-sans-mono-small"
PROVIDES += "qpf-bitstream-vera-sans-mono-larger"
@@ -12,28 +12,9 @@ PROVIDES += "qpf-bitstream-vera-sans-mono-huge"
SRC_URI = "http://openzaurus.org/mirror/fonts-bitstream-vera-sans-mono.tar.gz"
S = "${WORKDIR}/verasansmono"
-FILES_${PN} += "/opt"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
-
- cd ${WORKDIR}
- files=`find . -name "*.qpf"`
- for i in $files; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/
- done
-}
-
-pkg_postinst () {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-
+FILES_${PN} += "${palmtopdir}"
-PACKAGES = "\
+PACKAGES = "${PN}-dbg \
qpf-bitstream-vera-sans-mono-small \
qpf-bitstream-vera-sans-mono-large \
qpf-bitstream-vera-sans-mono-larger \
diff --git a/packages/qpf-fonts/qpf-bitstream-vera_1.10.bb b/packages/qpf-fonts/qpf-bitstream-vera_1.10.bb
index 86f2ef9446..b23653e0d6 100644
--- a/packages/qpf-fonts/qpf-bitstream-vera_1.10.bb
+++ b/packages/qpf-fonts/qpf-bitstream-vera_1.10.bb
@@ -1,32 +1,15 @@
+require qpf.inc
+
DESCRIPTION = "The Bitstream Vera fonts - QPF Edition"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
LICENSE = "Bitstream Vera"
-PACKAGE_ARCH = "all"
-PR = "r2"
+PR = "r3"
PROVIDES = "qpf-bitstream-vera-small qpf-bitstream-vera-large"
SRC_URI = "http://openzaurus.org/mirror/vera-qpf_1.10-3.tar.gz"
S = "${WORKDIR}/vera-qpf"
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-pkg_postinst () {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-
-
-PACKAGES = "qpf-bitstream-vera-small qpf-bitstream-vera-large"
+PACKAGES = "${PN}-dbg qpf-bitstream-vera-small qpf-bitstream-vera-large"
FILES_qpf-bitstream-vera-small = "${palmqtdir}/lib/fonts/vera_80_50* \
${palmqtdir}/lib/fonts/vera_80_50i* ${palmqtdir}/lib/fonts/vera_80_75* ${palmqtdir}/lib/fonts/vera_80_75i* \
diff --git a/packages/qpf-fonts/qpf-font-common_1.0.bb b/packages/qpf-fonts/qpf-font-common_1.0.bb
index 41bdad0a4a..ba4f0867ad 100644
--- a/packages/qpf-fonts/qpf-font-common_1.0.bb
+++ b/packages/qpf-fonts/qpf-font-common_1.0.bb
@@ -1,8 +1,6 @@
-DESCRIPTION = "Qt/Embedded Fonts Common Files"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
+DESCRIPTION = "Common files for Qt/Embedded fonts"
LICENSE = "GPL QPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "file://update-qtfontdir"
S = "${WORKDIR}/qt-${PV}"
@@ -12,3 +10,5 @@ do_install() {
install -m 0755 ${WORKDIR}/update-qtfontdir ${D}${sbindir}/
sed -i -e 's,@palmtopdir@,${palmtopdir},g' ${D}${sbindir}/update-qtfontdir
}
+
+PACKAGE_ARCH = "all"
diff --git a/packages/qpf-fonts/qpf-freemono_1.0.bb b/packages/qpf-fonts/qpf-freemono_1.0.bb
index d10fda6117..a4c73f2b7f 100644
--- a/packages/qpf-fonts/qpf-freemono_1.0.bb
+++ b/packages/qpf-fonts/qpf-freemono_1.0.bb
@@ -1,19 +1,10 @@
+require qpf.inc
+
DESCRIPTION = "FreeMono font - QPF Edition"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "GPL"
HOMEPAGE = "http://savannah.nongnu.org/projects/freefont/"
-PACKAGE_ARCH = "all"
+LICENSE = "GPL"
+PR = "r1"
SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${PN}"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf-freeserif_1.0.bb b/packages/qpf-fonts/qpf-freeserif_1.0.bb
index 116c48d5d1..a45abbdcd3 100644
--- a/packages/qpf-fonts/qpf-freeserif_1.0.bb
+++ b/packages/qpf-fonts/qpf-freeserif_1.0.bb
@@ -1,20 +1,10 @@
+require qpf.inc
+
DESCRIPTION = "FreeSerif font - QPF Edition"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "GPL"
HOMEPAGE = "http://savannah.nongnu.org/projects/freefont/"
-PACKAGE_ARCH = "all"
-PR = "r2"
+LICENSE = "GPL"
+PR = "r3"
SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${PN}"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf-helvetica_1.0.bb b/packages/qpf-fonts/qpf-helvetica_1.0.bb
index 9607030393..1d2c672bcb 100644
--- a/packages/qpf-fonts/qpf-helvetica_1.0.bb
+++ b/packages/qpf-fonts/qpf-helvetica_1.0.bb
@@ -1,18 +1,9 @@
+require qpf.inc
+
DESCRIPTION = "Helvetica fonts - QPF Edition"
-LICENSE = "GPL QPL"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
HOMEPAGE = "http://www.pobox.sk/~mico/zaurus.html"
-PR = "r1"
+LICENSE = "GPL QPL"
+PR = "r2"
SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-helvetica.tar.bz2"
S = "${WORKDIR}/helvetica"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for font in *.qpf; do
- install -m 644 $font ${D}${palmqtdir}/lib/fonts/
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb b/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb
index f4c50faf71..6f9db1202c 100644
--- a/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb
+++ b/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb
@@ -1,20 +1,10 @@
+require qpf.inc
+
DESCRIPTION = "Hunky Sans font - QPF Edition"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "LGPL"
HOMEPAGE = "http://www.yoper.com/ariszlo/hunky.html http://sourceforge.net/projects/hunkyfonts"
-PACKAGE_ARCH = "all"
-PR = "r5"
+LICENSE = "LGPL"
+PR = "r6"
SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}-r4.tar.bz2"
S = "${WORKDIR}/${PN}"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb b/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb
index 8c1d8d02bc..f06599f9eb 100644
--- a/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb
+++ b/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb
@@ -1,20 +1,10 @@
+require qpf.inc
+
DESCRIPTION = "Hunky Serif font - QPF Edition"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "LGPL"
HOMEPAGE = "http://www.yoper.com/ariszlo/hunky.html http://sourceforge.net/projects/hunkyfonts"
-PACKAGE_ARCH = "all"
-PR = "r5"
+LICENSE = "LGPL"
+PR = "r6"
SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}-r4.tar.bz2"
S = "${WORKDIR}/${PN}"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf-qte_2.3.10.bb b/packages/qpf-fonts/qpf-qte_2.3.10.bb
index 4d7d739f79..a1a589f003 100644
--- a/packages/qpf-fonts/qpf-qte_2.3.10.bb
+++ b/packages/qpf-fonts/qpf-qte_2.3.10.bb
@@ -1,9 +1,9 @@
-DESCRIPTION = "Qt/Embedded Fonts Version ${PV}"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "GPL QPL"
+require qpf.inc
+
+DESCRIPTION = "Qt/Embedded fonts version ${PV}"
HOMEPAGE = "http://www.trolltech.com"
-PR = "r1"
+LICENSE = "GPL QPL"
+PR = "r2"
PROVIDES = "qte-font-helvetica-100 qte-font-helvetica-120"
PROVIDES += "qte-font-fixed-70 qte-font-fixed-120"
@@ -26,8 +26,6 @@ RPROVIDES_qte-font-japanese += "virtual/japanese-font"
SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz"
S = "${WORKDIR}/qt-${PV}"
-inherit qpf
-
QPF_PKGPATTERN = "qte-font-%s"
QPF_DESCRIPTION = "Qt/E font %s"
diff --git a/packages/qpf-fonts/qpf-qte_3.3.5.bb b/packages/qpf-fonts/qpf-qte_3.3.5.bb
new file mode 100644
index 0000000000..6ac091f29d
--- /dev/null
+++ b/packages/qpf-fonts/qpf-qte_3.3.5.bb
@@ -0,0 +1,57 @@
+require qpf.inc
+
+DESCRIPTION = "Qt/Embedded fonts version ${PV}"
+HOMEPAGE = "http://www.trolltech.com"
+LICENSE = "GPL QPL"
+PR = "r6"
+
+SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-free-${PV}.tar.bz2"
+S = "${WORKDIR}/qt-embedded-free-${PV}"
+
+do_compile() {
+ :
+}
+
+do_install() {
+ mkdir -p ${D}${sbindir}
+ mkdir -p ${D}${palmtopdir}/lib/fonts
+ cp -pPR lib/fonts/* ${D}${palmtopdir}/lib/fonts
+ # Delete all other font formats, Qt/E would have a dead slow
+ # application start time if it had to use any other font format
+ # as *.qpf ...
+ find ${D}${palmtopdir}/lib/fonts \
+ -name "*.bdf" \
+ -o -name "*.ttf" \
+ -o -name "*.pfa" \
+ -o -name "*.pfb" | xargs rm
+}
+
+PACKAGES = "qte-font-fixed"
+PROVIDES += "qte-font-fixed"
+FILES_qte-font-fixed = "${palmtopdir}/lib/fonts/fixed*"
+
+PACKAGES += "qte-font-helvetica-small"
+PROVIDES += "qte-font-helvetica-small"
+FILES_qte-font-helvetica-small = "${palmtopdir}/lib/fonts/helvetica_80*.qpf \
+ ${palmtopdir}/lib/fonts/helvetica_100*.qpf ${palmtopdir}/lib/fonts/helvetica_120*.qpf"
+
+PACKAGES += "qte-font-helvetica-large"
+PROVIDES += "qte-font-helvetica-large"
+FILES_qte-font-helvetica-large = "${palmtopdir}/lib/fonts/helvetica_140*.qpf \
+ ${palmtopdir}/lib/fonts/helvetica_180*.qpf ${palmtopdir}/lib/fonts/helvetica_240*.qpf"
+
+PACKAGES += "qte-font-smoothtimes"
+PROVIDES += "qte-font-smoothtimes"
+FILES_qte-font-smoothtimes = "${palmtopdir}/lib/fonts/smoothtimes*"
+
+PACKAGES += "qte-font-smallsmooth"
+PROVIDES += "qte-font-smallsmooth"
+FILES_qte-font-smallsmooth = "${palmtopdir}/lib/fonts/smallsmooth*"
+
+PACKAGES += "qte-font-unicode"
+PROVIDES += "qte-font-unicode"
+FILES_qte-font-unicode = "${palmtopdir}/lib/fonts/unifont*.qpf"
+
+PACKAGES += "qte-font-micro"
+PROVIDES += "qte-font-micro"
+FILES_qte-font-micro = "${palmtopdir}/lib/fonts/micro*.qpf"
diff --git a/packages/qpf-fonts/qpf-terminus.bb b/packages/qpf-fonts/qpf-terminus.bb
new file mode 100644
index 0000000000..7e8bbfe393
--- /dev/null
+++ b/packages/qpf-fonts/qpf-terminus.bb
@@ -0,0 +1,10 @@
+require qpf.inc
+
+DESCRIPTION = "Qt/Embedded terminus font"
+HOMEPAGE = "http://www.is-vn.bg/hamster/jimmy-en.html"
+LICENSE = "GPL"
+PR = "r3"
+
+#SRC_URI = "http://www.mn-solutions.de/downloads/mnci/terminus-fonts.tar.bz2" -> 404 error
+SRC_URI = "http://openzaurus.linuxtogo.org/download/3.5.4/sources/terminus-fonts.tar.bz2"
+S = "${WORKDIR}/terminus-fonts"
diff --git a/packages/qpf-fonts/qpf-unifont_1.0.bb b/packages/qpf-fonts/qpf-unifont_1.0.bb
index ec3a9de4ca..e91e762845 100644
--- a/packages/qpf-fonts/qpf-unifont_1.0.bb
+++ b/packages/qpf-fonts/qpf-unifont_1.0.bb
@@ -1,19 +1,9 @@
+require qpf.inc
+
DESCRIPTION = "Unicode fonts - QPF Edition"
LICENSE = "GPL QPL"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
RPROVIDES = "virtual/japanese-font"
-PACKAGE_ARCH = "all"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.openzaurus.org/mirror/qpf-unifont.tar.bz2"
S = "${WORKDIR}"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf-unismall_1.0.0.bb b/packages/qpf-fonts/qpf-unismall_1.0.0.bb
index 7dd724d306..6298e2dfc4 100644
--- a/packages/qpf-fonts/qpf-unismall_1.0.0.bb
+++ b/packages/qpf-fonts/qpf-unismall_1.0.0.bb
@@ -1,26 +1,11 @@
+require qpf.inc
+
DESCRIPTION = "Lightweight Japanese font in 10 point suitable for 320x240 display"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "GPL"
HOMEPAGE = "http://sourceforge.jp/projects/zaurus-ja/"
+LICENSE = "GPL"
RPROVIDES = "virtual/japanese-font"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://osdn.dl.sourceforge.jp/zaurus-ja/773/unismall-${PV}.tar.gz"
S = "${WORKDIR}"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- cd unismall*
- for i in *_100_*.qpf; do
- ln -sf $i $(echo $i | sed 's/_100_/_160_/')
- done
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
-
-PACKAGE_ARCH = "all"
diff --git a/packages/qpf-fonts/qpf-utopia_1.0.bb b/packages/qpf-fonts/qpf-utopia_1.0.bb
index 87cb4d758b..eaee2d07a4 100644
--- a/packages/qpf-fonts/qpf-utopia_1.0.bb
+++ b/packages/qpf-fonts/qpf-utopia_1.0.bb
@@ -1,19 +1,9 @@
+require qpf.inc
+
DESCRIPTION = "Utopia fonts - QPF Edition"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "GPL QPL"
HOMEPAGE = "http://www.pobox.sk/~mico/zaurus.html"
-PACKAGE_ARCH = "all"
-PR = "r1"
+LICENSE = "GPL QPL"
+PR = "r2"
SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-utopia.tar.bz2"
S = "${WORKDIR}/utopia"
-
-do_install () {
- install -d ${D}${palmqtdir}/lib/fonts/
- for i in *.qpf; do
- install -m 644 $i ${D}${palmqtdir}/lib/fonts/${i}
- done
-}
-
-inherit qpf
diff --git a/packages/qpf-fonts/qpf.inc b/packages/qpf-fonts/qpf.inc
new file mode 100644
index 0000000000..97e66587d2
--- /dev/null
+++ b/packages/qpf-fonts/qpf.inc
@@ -0,0 +1,32 @@
+RDEPENDS = "font-update-common qpf-font-common"
+
+do_configure() {
+ :
+}
+
+do_compile() {
+ :
+}
+
+pkg_postinst_fonts() {
+ update-fonts
+}
+
+pkg_postrm_fonts() {
+ update-fonts
+}
+
+python populate_packages_prepend() {
+ postinst = bb.data.getVar('pkg_postinst_fonts', d, 1)
+ postrm = bb.data.getVar('pkg_postrm_fonts', d, 1)
+ fontdir = bb.data.getVar('palmtopdir', d, 1) + '/lib/fonts'
+ pkgregex = "^([a-z-]*_[0-9]*).*.qpf$"
+ pkgpattern = bb.data.getVar('QPF_PKGPATTERN', d, 1) or 'qpf-%s'
+ pkgdescription = bb.data.getVar('QPF_DESCRIPTION', d, 1) or 'QPF font %s'
+
+ do_split_packages(d, root=fontdir, file_regex=pkgregex, output_pattern=pkgpattern,
+ description=pkgdescription, postinst=postinst, postrm=postrm, recursive=True, hook=None,
+ extra_depends='qpf-font-common')
+}
+
+PACKAGE_ARCH = "all"
diff --git a/packages/qpf-fonts/terminus.bb b/packages/qpf-fonts/terminus.bb
deleted file mode 100644
index 6d2e4ab85f..0000000000
--- a/packages/qpf-fonts/terminus.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Qt/Embedded terminus font"
-HOMEPAGE = "http://www.is-vn.bg/hamster/jimmy-en.html"
-SECTION = "opie/fonts"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PACKAGE_ARCH = "all"
-PR = "r2"
-
-#SRC_URI = "http://www.mn-solutions.de/downloads/mnci/terminus-fonts.tar.bz2" -> 404 error
-SRC_URI = "http://openzaurus.linuxtogo.org/download/3.5.4/sources/terminus-fonts.tar.bz2"
-S = "${WORKDIR}/terminus-fonts"
-
-do_install() {
- mkdir -p ${D}${palmqtdir}/lib/fonts
- cp *.qpf ${D}${palmqtdir}/lib/fonts
-}
-
-inherit qpf
diff --git a/packages/qte-fonts-common/qte-fonts-common/update-qtfontdir b/packages/qte-fonts-common/qte-fonts-common/update-qtfontdir
deleted file mode 100755
index 857dc6c0d5..0000000000
--- a/packages/qte-fonts-common/qte-fonts-common/update-qtfontdir
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/sh
-
-usage()
-{
- echo "usage: $0 [font directory, defaults to \$QTDIR/lib/fonts]"
- exit 1
-}
-
-setVar()
-{
- eval "$1='$2'"
-}
-
-getVar()
-{
- eval "echo \$$1"
-}
-
-handleQPF()
-{
- base=`basename $1`
- family=`echo $base|cut -d_ -f1`
- pt=`echo $base|cut -d_ -f2`
- weight=`echo $base|cut -d_ -f3|sed -e 's,i$,,'`
- if (echo $base|cut -d_ -f3|grep -q 'i$'); then
- italic="y"
- else
- italic="n"
- fi
- echo "$family $base.qpf QPF $italic $weight $pt u"
-}
-
-if [ "$1" = "-f" ]; then
- FORCE=1
- shift
-else
- FORCE=0
-fi
-
-if [ -z "$1" ]; then
- if [ -n "$QTDIR" ]; then
- fontdir=$QTDIR/lib/fonts
- else
- fontdir=/opt/QtPalmtop/lib/fonts
- fi
-else
- fontdir=$1
-fi
-
-if ! [ -d $fontdir ]; then
- echo Error: $fontdir not a directory
- exit 1
-fi
-
-if [ -e $fontdir/fontdir ]; then
- if find $fontdir -newer $fontdir/fontdir | grep -q "\(qpf\|ttf\)"; then
- #echo "fontdir needs updating..."
- :
- elif [ "$FORCE" = "0" ]; then
- #echo "fontdir already up to date - exiting"
- exit 0
- fi
- cat $fontdir/fontdir | grep -v '\.qpf' > $fontdir/fontdir.new
-fi
-
-(
- for file in `ls $fontdir/*.qpf 2>/dev/null |sed -e's,\.qpf$,,; s,_t[^_]*$,,;'|sort -u`; do
- handleQPF $file
- done
-) >> $fontdir/fontdir.new
-
-mv $fontdir/fontdir.new $fontdir/fontdir
-
-exit 0
diff --git a/packages/qte-fonts-common/qte-fonts-common_3.3.5.bb b/packages/qte-fonts-common/qte-fonts-common_3.3.5.bb
deleted file mode 100644
index 479ed55bb8..0000000000
--- a/packages/qte-fonts-common/qte-fonts-common_3.3.5.bb
+++ /dev/null
@@ -1,228 +0,0 @@
-DESCRIPTION= "Tools to update the Qt fontdir"
-SECTION = "opie/base"
-LICENSE = "GPL QPL"
-PACKAGE_ARCH = "all"
-HOMEPAGE = "http://www.trolltech.com"
-PR = "r3"
-
-SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-free-${PV}.tar.bz2"
-SRC_URI += "file://update-qtfontdir"
-S = "${WORKDIR}/qt-embedded-free-${PV}"
-
-do_compile() {
- :
-}
-
-do_install() {
- mkdir -p ${D}${sbindir}
- install -m 755 ${WORKDIR}/update-qtfontdir ${D}${sbindir}
- mkdir -p ${D}${palmtopdir}/lib/fonts
- cp -pPR lib/fonts/* ${D}${palmtopdir}/lib/fonts
- # Delete all other font formats, Qt/E would have a dead slow
- # application start time if it had to use any other font format
- # as *.qpf ...
- find ${D}${palmtopdir}/lib/fonts \
- -name "*.bdf" \
- -o -name "*.ttf" \
- -o -name "*.pfa" \
- -o -name "*.pfb" | xargs rm
-}
-
-PACKAGES = "qte-fonts-common"
-FILES_${PN} = "${sbindir}"
-
-
-PACKAGES += "qte-font-fixed"
-PROVIDES += "qte-font-fixed"
-FILES_qte-font-fixed = "${palmtopdir}/lib/fonts/fixed*"
-RDEPENDS_qte-font-fixed = "qte-fonts-common"
-pkg_postinst_qte-font-fixed() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-pkg_postrm_qte-font-fixed() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-PACKAGES += "qte-font-helvetica-small"
-PROVIDES += "qte-font-helvetica-small"
-FILES_qte-font-helvetica-small = "${palmtopdir}/lib/fonts/helvetica_80*.qpf \
- ${palmtopdir}/lib/fonts/helvetica_100*.qpf ${palmtopdir}/lib/fonts/helvetica_120*.qpf"
-RDEPENDS_qte-font-helvetica-small = "qte-fonts-common"
-pkg_postinst_qte-font-helvetica-small() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-pkg_postrm_qte-font-helvetica-small() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-PACKAGES += "qte-font-helvetica-large"
-PROVIDES += "qte-font-helvetica-large"
-FILES_qte-font-helvetica-large = "${palmtopdir}/lib/fonts/helvetica_140*.qpf \
- ${palmtopdir}/lib/fonts/helvetica_180*.qpf ${palmtopdir}/lib/fonts/helvetica_240*.qpf"
-RDEPENDS_qte-font-helvetica-large = "qte-fonts-common"
-pkg_postinst_qte-font-helvetica-large() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-pkg_postrm_qte-font-helvetica-large() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-PACKAGES += "qte-font-smoothtimes"
-PROVIDES += "qte-font-smoothtimes"
-FILES_qte-font-smoothtimes = "${palmtopdir}/lib/fonts/smoothtimes*"
-RDEPENDS_qte-font-smoothtimes = "qte-fonts-common"
-pkg_postinst_qte-font-smoothtimes() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-pkg_postrm_qte-font-smoothtimes() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-PACKAGES += "qte-font-smallsmooth"
-PROVIDES += "qte-font-smallsmooth"
-FILES_qte-font-smallsmooth = "${palmtopdir}/lib/fonts/smallsmooth*"
-RDEPENDS_qte-smallsmooth = "qte-fonts-common"
-pkg_postinst_qte-font-smallsmooth() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-pkg_postrm_qte-font-smallsmooth() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-PACKAGES += "qte-font-unicode"
-PROVIDES += "qte-font-unicode"
-FILES_qte-font-unicode = "${palmtopdir}/lib/fonts/unifont*.qpf"
-RDEPENDS_qte-font-unicode = "qte-fonts-common"
-pkg_postinst_qte-font-unicode() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-pkg_postrm_qte-font-unicode() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-PACKAGES += "qte-font-micro"
-PROVIDES += "qte-font-micro"
-FILES_qte-font-micro = "${palmtopdir}/lib/fonts/micro*.qpf"
-#RDEPENDS_qte-font-micro = "qte-fonts-common"
-pkg_postinst_qte-font-micro() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir
-}
-pkg_postrm_qte-font-micro() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi
-set -e
-. /etc/profile
-${sbindir}/update-qtfontdir -f
-}
-
-# Not in the QtE/3 tar file:
-#PACKAGES += "qte-font-lcd"
-#PROVIDES += "qte-font-lcd"
-#RDEPENDS_qte-font-lcd = "qte-fonts-common"
-#FILES_qte-font-lcd = "${palmtopdir}/lib/fonts/lcd*"
-#pkg_postinst_qte-font-lcd () {
-##!/bin/sh
-#if [ -n "$D" ]; then exit 1; fi
-#set -e
-#. /etc/profile
-#${sbindir}/update-qtfontdir
-#}
-#pkg_postrm_qte-font-lcd() {
-##!/bin/sh
-#if [ -n "$D" ]; then exit 1; fi
-#set -e
-#. /etc/profile
-#${sbindir}/update-qtfontdir -f
-#}
-
-# Not in the QtE/3 tar file:
-#PACKAGES += "qte-font-japanese"
-#PROVIDES += "qte-font-japanese"
-#FILES_qte-font-japanese = "${palmtopdir}/lib/fonts/japanese*"
-#RDEPENDS_qte-font-japanese = "qte-fonts-common"
-#pkg_postinst_qte-font-japanese() {
-##!/bin/sh
-#if [ -n "$D" ]; then exit 1; fi
-#set -e
-#. /etc/profile
-#${sbindir}/update-qtfontdir
-#}
-#pkg_postrm_qte-font-japanese() {
-##!/bin/sh
-#if [ -n "$D" ]; then exit 1; fi
-#set -e
-#. /etc/profile
-#${sbindir}/update-qtfontdir -f
-#}
-
-# Not in the QtE/3 tar file:
-#PACKAGES += "qte-font-courier"
-#PROVIDES += "qte-font-courier"
-#FILES_qte-font-courier = "${palmtopdir}/lib/fonts/cour*"
-#RDEPENDS_qte-font-courier = "qte-fonts-common"
-#pkg_postinst_qte-font-courier() {
-##!/bin/sh
-#if [ -n "$D" ]; then exit 1; fi
-#set -e
-#. /etc/profile
-#${sbindir}/update-qtfontdir
-#}
-#pkg_postrm_qte-font-courier() {
-##!/bin/sh
-#if [ -n "$D" ]; then exit 1; fi
-#set -e
-#. /etc/profile
-#${sbindir}/update-qtfontdir -f
-#}
diff --git a/packages/qte/qte-common_2.3.10.inc b/packages/qte/qte-common_2.3.10.inc
index 6517eb058d..5f9c01ba80 100644
--- a/packages/qte/qte-common_2.3.10.inc
+++ b/packages/qte/qte-common_2.3.10.inc
@@ -152,4 +152,4 @@ do_install() {
FILES_${PN} = "${libdir}/lib${PN}.so.*"
FILES_${PN}-dev = "${includedir}/* ${libdir}/lib${PN}.so"
-FILES_${PN}-dbg = "${libdir}/.debug/"
+FILES_${PN}-dbg += "${libdir}/.debug/"
diff --git a/packages/randrext/randrext_1.0.bb b/packages/randrext/randrext_1.0.bb
deleted file mode 100644
index 3fe6a442ac..0000000000
--- a/packages/randrext/randrext_1.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SECTION = "libs"
-LICENSE= "BSD-X"
-DESCRIPTION = "X Resize and Rotate extension headers"
-
-SRC_URI = "${XLIBS_MIRROR}/randrext-${PV}.tar.bz2"
-
-inherit autotools pkgconfig
-
-do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
- bindir=${STAGING_BINDIR} \
- includedir=${STAGING_INCDIR} \
- libdir=${STAGING_LIBDIR} \
- datadir=${STAGING_DATADIR}
-}
diff --git a/packages/randrext/randrext_cvs.bb b/packages/randrext/randrext_cvs.bb
deleted file mode 100644
index 29cff38373..0000000000
--- a/packages/randrext/randrext_cvs.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-PV = "0.0+cvs${SRCDATE}"
-LICENSE= "BSD-X"
-SECTION = "libs"
-DESCRIPTION = "X Resize and Rotate extension headers"
-
-SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Randr"
-S = "${WORKDIR}/Randr"
-
-inherit autotools pkgconfig
-
-do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
- bindir=${STAGING_BINDIR} \
- includedir=${STAGING_INCDIR} \
- libdir=${STAGING_LIBDIR} \
- datadir=${STAGING_DATADIR}
-}
diff --git a/packages/rdesktop/rdesktop_1.3.1.bb b/packages/rdesktop/rdesktop_1.3.1.bb
index 12ff1c5bcd..f54c675314 100644
--- a/packages/rdesktop/rdesktop_1.3.1.bb
+++ b/packages/rdesktop/rdesktop_1.3.1.bb
@@ -22,8 +22,8 @@ do_configure() {
--bindir=${bindir} \
--mandir=${mandir} \
--sharedir=${datadir} \
- --with-x=${STAGING_DIR}/${HOST_SYS} \
- --with-openssl=${STAGING_DIR}/${HOST_SYS} \
+ --with-x=${STAGING_EXECPREFIXDIR} \
+ --with-openssl=${STAGING_EXECPREFIXDIR} \
--with-oss \
--without-debug
}
diff --git a/packages/rdesktop/rdesktop_1.4.1.bb b/packages/rdesktop/rdesktop_1.4.1.bb
index 7581647a57..da1794b190 100644
--- a/packages/rdesktop/rdesktop_1.4.1.bb
+++ b/packages/rdesktop/rdesktop_1.4.1.bb
@@ -11,4 +11,4 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/rdesktop/rdesktop-${PV}.tar.gz \
inherit autotools
-EXTRA_OECONF = "--with-openssl=${STAGING_LIBDIR}/.. "
+EXTRA_OECONF = "--with-openssl=${STAGING_EXECPREFIXDIR} "
diff --git a/packages/rdesktop/rdesktop_1.5.0.bb b/packages/rdesktop/rdesktop_1.5.0.bb
index de270e1025..12385c127f 100644
--- a/packages/rdesktop/rdesktop_1.5.0.bb
+++ b/packages/rdesktop/rdesktop_1.5.0.bb
@@ -10,4 +10,4 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/rdesktop/rdesktop-${PV}.tar.gz"
inherit autotools
-EXTRA_OECONF = "--with-openssl=${STAGING_LIBDIR}/.. "
+EXTRA_OECONF = "--with-openssl=${STAGING_EXECPREFIXDIR} "
diff --git a/packages/s3c2410-utils/.mtn2git_empty b/packages/re2c/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/s3c2410-utils/.mtn2git_empty
+++ b/packages/re2c/.mtn2git_empty
diff --git a/packages/re2c/re2c-native_0.13.1.bb b/packages/re2c/re2c-native_0.13.1.bb
new file mode 100644
index 0000000000..fb7e3df626
--- /dev/null
+++ b/packages/re2c/re2c-native_0.13.1.bb
@@ -0,0 +1,5 @@
+require re2c.inc
+
+PR = "r0"
+
+inherit native
diff --git a/packages/re2c/re2c.inc b/packages/re2c/re2c.inc
new file mode 100644
index 0000000000..730059e526
--- /dev/null
+++ b/packages/re2c/re2c.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Tool for writing very fast and very flexible scanners"
+HOMEPAGE = "http://re2c.sourceforge.net/"
+AUTHOR = "Marcus Börger helly@users.sourceforge.net"
+SECTION = "devel"
+PRIORITY = "optional"
+LICENSE = "PD"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/re2c/re2c-${PV}.tar.gz"
+
+S = "${WORKDIR}/re2c-${PV}"
+
+inherit autotools
diff --git a/packages/re2c/re2c_0.13.1.bb b/packages/re2c/re2c_0.13.1.bb
new file mode 100644
index 0000000000..5846dc4bf1
--- /dev/null
+++ b/packages/re2c/re2c_0.13.1.bb
@@ -0,0 +1,3 @@
+require re2c.inc
+
+PR = "r0"
diff --git a/packages/recordext/recordext_cvs.bb b/packages/recordext/recordext_cvs.bb
deleted file mode 100644
index eeaae24762..0000000000
--- a/packages/recordext/recordext_cvs.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-PV = "0.0+cvs${SRCDATE}"
-LICENSE = "BSD-X"
-SECTION = "libs"
-DESCRIPTION = "XRecord extension protocol bits"
-
-SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=RecordExt"
-S = "${WORKDIR}/RecordExt"
-
-inherit autotools pkgconfig
-
-do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
- bindir=${STAGING_BINDIR} \
- includedir=${STAGING_INCDIR} \
- libdir=${STAGING_LIBDIR} \
- datadir=${STAGING_DATADIR}
-}
diff --git a/packages/renderext/renderext_0.8.bb b/packages/renderext/renderext_0.8.bb
deleted file mode 100644
index a12f7c0da5..0000000000
--- a/packages/renderext/renderext_0.8.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SECTION = "libs"
-LICENSE = "MIT-X"
-DESCRIPTION = "X Render extension headers"
-
-SRC_URI = "${XLIBS_MIRROR}/renderext-${PV}.tar.bz2"
-
-inherit autotools pkgconfig
-
-do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
- bindir=${STAGING_BINDIR} \
- includedir=${STAGING_INCDIR} \
- libdir=${STAGING_LIBDIR} \
- datadir=${STAGING_DATADIR}
-}
diff --git a/packages/renderext/renderext_cvs.bb b/packages/renderext/renderext_cvs.bb
deleted file mode 100644
index 08053d95b9..0000000000
--- a/packages/renderext/renderext_cvs.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-PV = "0.0+cvs${SRCDATE}"
-LICENSE = "MIT-X"
-SECTION = "libs"
-DESCRIPTION = "X Render extension headers"
-DEFAULT_PREFERENCE = "1"
-
-SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Render"
-S = "${WORKDIR}/Render"
-
-inherit autotools pkgconfig
-
-do_stage() {
- oe_runmake install prefix=${STAGING_DIR} \
- bindir=${STAGING_BINDIR} \
- includedir=${STAGING_INCDIR} \
- libdir=${STAGING_LIBDIR} \
- datadir=${STAGING_DATADIR}
-}
diff --git a/packages/tslib/tslib-1.0/bd-neon/.mtn2git_empty b/packages/rxtx/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/tslib/tslib-1.0/bd-neon/.mtn2git_empty
+++ b/packages/rxtx/.mtn2git_empty
diff --git a/packages/tslib/tslib-1.0/fic-gta01/.mtn2git_empty b/packages/rxtx/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/tslib/tslib-1.0/fic-gta01/.mtn2git_empty
+++ b/packages/rxtx/files/.mtn2git_empty
diff --git a/packages/rxtx/files/rxtx-fixes-from-debian.patch b/packages/rxtx/files/rxtx-fixes-from-debian.patch
new file mode 100644
index 0000000000..0e35eb7603
--- /dev/null
+++ b/packages/rxtx/files/rxtx-fixes-from-debian.patch
@@ -0,0 +1,235 @@
+Index: rxtx-2.1-7r2/configure
+===================================================================
+--- rxtx-2.1-7r2.orig/configure 2008-02-09 02:08:40.000000000 +0100
++++ rxtx-2.1-7r2/configure 2008-02-09 02:09:02.000000000 +0100
+@@ -21501,7 +21501,7 @@
+ case $JAVA_VENDOR in
+ Tran*)
+ find_java_native_include jni.h
+- JAVAH="\$(JPATH)/bin/kaffeh -classpath \$(CLASSPATH) -d \$(DEST) -jni"
++ JAVAH="\$(JPATH)/bin/kaffeh -classpath \$(JPATH)/jre/lib/rt.jar:\$(CLASSPATH) -d \$(DEST) -jni"
+ JAVAC="\$(JPATH)/bin/javac -classpath \$(CLASSPATH) -d \$(TOP)/ -O -source 1.3 -target 1.3"
+ JAR="\$(JPATH)/bin/jar"
+ JAVADOC="\$(JPATH)/bin/javadoc -classpath \$(CLASSPATH)"
+@@ -21513,7 +21513,7 @@
+ ;;
+ *)
+ find_java_native_include jni_md.h
+- JAVAH="\$(JPATH)/bin/javah -classpath \$(CLASSPATH) -d \$(DEST) -jni"
++ JAVAH="\$(JPATH)/bin/javah -classpath \$(JPATH)/jre/lib/rt.jar:\$(CLASSPATH) -d \$(DEST) -jni"
+ JAVAC="\$(JPATH)/bin/javac -classpath \$(CLASSPATH) -d \$(TOP)/ -O -source 1.3 -target 1.3"
+ JAR="\$(JPATH)/bin/jar"
+ JAVADOC="\$(JPATH)/bin/javadoc"
+@@ -21541,7 +21541,7 @@
+ CFLAGS=$CFLAGS" -D__need_timespec"
+ case $JAVA_VERSION in
+
+- 1.2*|1.3*|1.4*|1.5*)
++ 1.2*|1.3*|1.4*|1.5*|1.6*)
+ #fix_parameters $JPATH/jre/lib/javax.comm.properties
+ CLASSPATH=".:\$(TOP):\$(TOP)/src:"`find $JPATH/ -name RXTXcomm.jar |head -n1`
+ JHOME=$JPATH"/jre/lib/ext"
+@@ -21611,7 +21611,7 @@
+ TARGETLIB="\$(target_triplet)/librxtxSerial.la \
+ \$(target_triplet)/librxtxParallel.la"
+ case $JAVA_VERSION in
+- 1.2*|1.3*|1.4*|1.5*)
++ 1.2*|1.3*|1.4*|1.5*|1.6*)
+ #fix_parameters $JPATH/jre/lib/javax.comm.properties
+ CLASSPATH=".:\$(TOP):\$(TOP)/src:"`find $JPATH/ -name RXTXcomm.jar |head -n1`
+ RXTX_PATH="\$(JPATH)/jre/lib/\$(OS_ARCH)"
+@@ -21747,7 +21747,7 @@
+
+ WIN32)
+ case $JAVA_VERSION in
+- 1.2*|1.3*|1.4*|1.5*)
++ 1.2*|1.3*|1.4*|1.5*|1.6*)
+ CLASSPATH=".:\$(TOP):\$(TOP)/src:`find $JPATH/ -name RXTXcomm.jar |head -n1`:$CLASSPATH"
+ JHOME=$JPATH"/jre/lib/ext"
+ ;;
+@@ -21799,7 +21799,7 @@
+ CLASSPATH=".:\$(TOP):\$(TOP)/src:\$(JPATH)/lib/classes.zip:\$(JPATH)/lib/RXTXcomm.jar:$CLASSPATH"
+
+ case $JAVA_VERSION in
+- 1.2*|1.3*|1.4*|1.5*)
++ 1.2*|1.3*|1.4*|1.5*|1.6*)
+ RXTX_PATH="\$(JPATH)/jre/lib/\$(OS_ARCH)"
+ ;;
+ 1.1*)
+Index: rxtx-2.1-7r2/src/I2CImp.c
+===================================================================
+--- rxtx-2.1-7r2.orig/src/I2CImp.c 2004-10-17 16:23:02.000000000 +0200
++++ rxtx-2.1-7r2/src/I2CImp.c 2008-02-09 02:09:02.000000000 +0100
+@@ -22,8 +22,8 @@
+ #include "config.h"
+ #include "gnu_io_I2C.h"
+ #endif /* dima */
+-#include <time.h>
+ #include <unistd.h>
++#include <time.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+@@ -88,6 +88,7 @@
+ #endif /* !__FreeBSD__ */
+ #if defined(__linux__)
+ /* Lets let people who upgraded kernels know they may have problems */
++ /*
+ if (uname (&name) == -1)
+ {
+ fprintf(stderr,"RXTX WARNING: cannot get system name\n");
+@@ -98,6 +99,7 @@
+ fprintf(stderr, "\n\n\nRXTX WARNING: This library was compiled to run with OS release %s and you are currently running OS release %s. In some cases this can be a problem. Try recompiling RXTX if you notice strange behavior. If you just compiled RXTX make sure /usr/include/linux is a symbolic link to the include files that came with the kernel source and not an older copy.\n\n\npress enter to continue\n",UTS_RELEASE,name.release);
+ getchar();
+ }
++ */
+ #endif /* __linux__ */
+ #endif /* WIN32 */
+ }
+Index: rxtx-2.1-7r2/Makefile.in
+===================================================================
+--- rxtx-2.1-7r2.orig/Makefile.in 2008-02-09 02:08:40.000000000 +0100
++++ rxtx-2.1-7r2/Makefile.in 2008-02-09 02:09:02.000000000 +0100
+@@ -556,6 +556,7 @@
+ $(CLASSES): $(javafiles) $(TOP)/Makefile
+ $(JAVAH_FIX)
+ $(JAVAC) $(javafiles)
++ mkdir $(DEST)
+ $(JAVAH) `(for i in $(javahfiles);do \
+ if grep > /dev/null native.*\( $(SPATH)/$$i.java; then \
+ echo $(CLASSDIR).$$i; \
+@@ -572,7 +573,7 @@
+ echo $$i; \
+ fi; \
+ done` $(RXTX_PATH)
+- $(INSTALL_PROGRAM) $(JARTARGET) $(JHOME)/
++ $(INSTALL_DATA) $(JARTARGET) $(JHOME)/
+
+ clean-generic:
+ rm -rf $(DEST) $(TOP)/$(CLASSTOP)
+Index: rxtx-2.1-7r2/src/ParallelImp.c
+===================================================================
+--- rxtx-2.1-7r2.orig/src/ParallelImp.c 2005-06-10 21:50:31.000000000 +0200
++++ rxtx-2.1-7r2/src/ParallelImp.c 2008-02-09 02:09:02.000000000 +0100
+@@ -38,8 +38,8 @@
+ /*#include <typedefs_md.h>*/
+ #include "gnu_io_LPRPort.h"
+ #endif /* dima */
+-#include <time.h>
+ #include <unistd.h>
++#include <time.h>
+ #include <stdio.h>
+ #include <string.h>
+ #ifndef WIN32
+Index: rxtx-2.1-7r2/src/RawImp.c
+===================================================================
+--- rxtx-2.1-7r2.orig/src/RawImp.c 2008-02-09 02:08:40.000000000 +0100
++++ rxtx-2.1-7r2/src/RawImp.c 2008-02-09 02:09:02.000000000 +0100
+@@ -31,8 +31,8 @@
+ #include "config.h"
+ #include "gnu_io_Raw.h"
+ #endif /* dima */
+-#include <time.h>
+ #include <unistd.h>
++#include <time.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+@@ -232,6 +232,7 @@
+ #endif /* !__FreeBSD__ */
+ #if defined(__linux__)
+ /* Lets let people who upgraded kernels know they may have problems */
++ /*
+ if (uname (&name) == -1)
+ {
+ fprintf(stderr,"RXTX WARNING: cannot get system name\n");
+@@ -242,6 +243,7 @@
+ fprintf(stderr, "\n\n\nRXTX WARNING: This library was compiled to run with OS release %s and you are currently running OS release %s. In some cases this can be a problem. Try recompiling RXTX if you notice strange behavior. If you just compiled RXTX make sure /usr/include/linux is a symbolic link to the include files that came with the kernel source and not an older copy.\n\n\npress enter to continue\n",UTS_RELEASE,name.release);
+ getchar();
+ }
++ */
+ #endif /* __linux__ */
+ #endif /* WIN32 */
+ }
+Index: rxtx-2.1-7r2/src/RS485Imp.c
+===================================================================
+--- rxtx-2.1-7r2.orig/src/RS485Imp.c 2004-10-16 18:20:35.000000000 +0200
++++ rxtx-2.1-7r2/src/RS485Imp.c 2008-02-09 02:09:02.000000000 +0100
+@@ -22,8 +22,8 @@
+ #include "config.h"
+ #include "gnu_io_RS485.h"
+ #endif /* dima */
+-#include <time.h>
+ #include <unistd.h>
++#include <time.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+@@ -88,6 +88,7 @@
+ #endif /* !__FreeBSD__ */
+ #if defined(__linux__)
+ /* Lets let people who upgraded kernels know they may have problems */
++ /*
+ if (uname (&name) == -1)
+ {
+ fprintf(stderr,"RXTX WARNING: cannot get system name\n");
+@@ -98,6 +99,7 @@
+ fprintf(stderr, "\n\n\nRXTX WARNING: This library was compiled to run with OS release %s and you are currently running OS release %s. In some cases this can be a problem. Try recompiling RXTX if you notice strange behavior. If you just compiled RXTX make sure /usr/include/linux is a symbolic link to the include files that came with the kernel source and not an older copy.\n\n\npress enter to continue\n",UTS_RELEASE,name.release);
+ getchar();
+ }
++ */
+ #endif /* __linux__ */
+ #endif /* WIN32 */
+ }
+Index: rxtx-2.1-7r2/src/SerialImp.c
+===================================================================
+--- rxtx-2.1-7r2.orig/src/SerialImp.c 2008-02-09 02:08:40.000000000 +0100
++++ rxtx-2.1-7r2/src/SerialImp.c 2008-02-09 02:09:02.000000000 +0100
+@@ -27,10 +27,10 @@
+ #ifdef __LCC__ /* windows lcc compiler for fd_set. probably wrong */
+ # include<winsock.h>
+ #endif /* __LCC__ */
+-#include <time.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
++#include <time.h>
+ #include <errno.h>
+ #include <limits.h>
+ #include <sys/stat.h>
+@@ -281,6 +281,7 @@
+ #endif /* DEBUG_TIMING */
+ #if defined(DEBUG) && defined(__linux__)
+ /* Lets let people who upgraded kernels know they may have problems */
++ /*
+ if (uname (&name) == -1)
+ {
+ report( "RXTX WARNING: cannot get system name\n" );
+@@ -294,6 +295,7 @@
+ report( message );
+ getchar();
+ }
++ */
+ LEAVE( "RXTXPort:Initialize" );
+ #endif /* DEBUG && __linux__ */
+ }
+Index: rxtx-2.1-7r2/src/SerialImp.cpp
+===================================================================
+--- rxtx-2.1-7r2.orig/src/SerialImp.cpp 2004-10-12 10:59:27.000000000 +0200
++++ rxtx-2.1-7r2/src/SerialImp.cpp 2008-02-09 02:09:02.000000000 +0100
+@@ -103,6 +103,7 @@
+ #endif /* !__FreeBSD__ */
+ #ifdef DEBUG
+ /* Lets let people who upgraded kernels know they may have problems */
++ /*
+ if (uname (&name) == -1)
+ {
+ report("RXTX WARNING: cannot get system name\n");
+@@ -114,6 +115,7 @@
+ name.release);
+ getchar();
+ }
++ */
+ #endif /* DEBUG */
+ #endif /* __BEOS__ */
+ #endif /* WIN32 */
diff --git a/packages/rxtx/rxtx_2.1-7r2.bb b/packages/rxtx/rxtx_2.1-7r2.bb
new file mode 100644
index 0000000000..0630d498d6
--- /dev/null
+++ b/packages/rxtx/rxtx_2.1-7r2.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "RXTX provides serial and parallel communication for Java applications"
+LICENSE = "LGPL"
+SECTION = "libs"
+HOMEPAGE = "http://rxtx.org"
+
+PR = "r1"
+
+DEPENDS = "classpath classpath-native virtual/javac-native"
+
+inherit autotools java-library
+
+SRC_URI = "\
+ http://rxtx.qbang.org/pub/rxtx/${PN}-${PV}.zip \
+ file://rxtx-fixes-from-debian.patch;patch=1 \
+ "
+
+do_compile() {
+ # Whatever configure detected it is completely unusable. So we override heavily.
+ oe_runmake \
+ JAVAH="gjavah -classpath \$(CLASSPATH) -d \$(DEST) -jni" \
+ JAR=gjar \
+ JAVAC="javac -classpath \$(CLASSPATH) -d \$(TOP)/ -O -source 1.3 -target 1.3" \
+ JAVAINCLUDEDIR=${STAGING_INCDIR}/classpath
+}
+
+do_install() {
+ install -d ${D}/${libdir_jni}
+ install -d ${D}/${datadir_java}
+
+ oe_runmake install \
+ RXTX_PATH=${D}/${libdir_jni} \
+ JHOME=${D}/${datadir_java}
+}
+
+do_stage() {
+ oe_jarinstall -s RXTXcomm.jar
+}
+
+PACKAGES = "${JPN} lib${PN}-jni lib${PN}-dev lib${PN}-jni-dbg"
+
+FILES_lib${PN}-jni = "${libdir_jni}/lib*.so"
+FILES_lib${PN}-dev = "${libdir_jni}/lib*.la"
+FILES_lib${PN}-jni-dbg = "${libdir_jni}/.debug/lib*.so"
diff --git a/packages/udev/udev-115/.mtn2git_empty b/packages/s3c24xx-utils/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/udev/udev-115/.mtn2git_empty
+++ b/packages/s3c24xx-utils/.mtn2git_empty
diff --git a/packages/s3c2410-utils/s3c2410-boot-usb-native_svn.bb b/packages/s3c24xx-utils/s3c2410-boot-usb-native_svn.bb
index c7b89647f5..c7b89647f5 100644
--- a/packages/s3c2410-utils/s3c2410-boot-usb-native_svn.bb
+++ b/packages/s3c24xx-utils/s3c2410-boot-usb-native_svn.bb
diff --git a/packages/s3c24xx-utils/s3c24xx-gpio_svn.bb b/packages/s3c24xx-utils/s3c24xx-gpio_svn.bb
new file mode 100644
index 0000000000..085339a9c1
--- /dev/null
+++ b/packages/s3c24xx-utils/s3c24xx-gpio_svn.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "A user-space tool to show and modify the state of GPIOs on the S3c24xx platform"
+SECTION = "console/utils"
+LICENSE = "GPL"
+PV = "1.0+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gpio;proto=http"
+S = "${WORKDIR}/gpio"
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -static -o ${PN} gpio.c
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 0755 ${PN} ${D}${sbindir}
+}
diff --git a/packages/s3c2410-utils/sjf2410-linux-native_svn.bb b/packages/s3c24xx-utils/sjf2410-linux-native_svn.bb
index 60cce4a3e2..60cce4a3e2 100644
--- a/packages/s3c2410-utils/sjf2410-linux-native_svn.bb
+++ b/packages/s3c24xx-utils/sjf2410-linux-native_svn.bb
diff --git a/packages/sablevm/sablevm_1.1.9.bb b/packages/sablevm/sablevm_1.1.9.bb
index cbecd1d25a..7c5198c0e6 100644
--- a/packages/sablevm/sablevm_1.1.9.bb
+++ b/packages/sablevm/sablevm_1.1.9.bb
@@ -22,7 +22,7 @@ ALTERNATIVE_NAME = "java"
ALTERNATIVE_PATH = "${bindir}/java-sablevm"
ALTERNATIVE_PRIORITY = "350"
-PACKAGES = "${PN} ${PN}-doc lib${PN} lib${PN}-dev"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc lib${PN} lib${PN}-dev"
FILES_${PN} = "${bindir} \
${libdir}/${PN}/bin"
diff --git a/packages/sablevm/sablevm_1.11.3.bb b/packages/sablevm/sablevm_1.11.3.bb
index 35dce88d9c..154745dfeb 100644
--- a/packages/sablevm/sablevm_1.11.3.bb
+++ b/packages/sablevm/sablevm_1.11.3.bb
@@ -21,7 +21,7 @@ ALTERNATIVE_NAME = "java"
ALTERNATIVE_PATH = "${bindir}/java-sablevm"
ALTERNATIVE_PRIORITY = "350"
-PACKAGES = "${PN} ${PN}-doc lib${PN} lib${PN}-dev"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc lib${PN} lib${PN}-dev"
FILES_${PN} = "${bindir} \
${libdir}/${PN}/bin"
diff --git a/packages/sablevm/sablevm_1.12.bb b/packages/sablevm/sablevm_1.12.bb
index 1c62842efb..541694e2e7 100644
--- a/packages/sablevm/sablevm_1.12.bb
+++ b/packages/sablevm/sablevm_1.12.bb
@@ -22,7 +22,7 @@ ALTERNATIVE_NAME = "java"
ALTERNATIVE_PATH = "${bindir}/java-sablevm"
ALTERNATIVE_PRIORITY = "350"
-PACKAGES = "${PN} ${PN}-doc lib${PN} lib${PN}-dev"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc lib${PN} lib${PN}-dev"
FILES_${PN} = "${bindir} \
${libdir}/${PN}/bin"
diff --git a/packages/schedstat-utils/schedstat-utils.bb b/packages/schedstat-utils/schedstat-utils.bb
index c9ff8ab918..051135a9fb 100644
--- a/packages/schedstat-utils/schedstat-utils.bb
+++ b/packages/schedstat-utils/schedstat-utils.bb
@@ -15,7 +15,7 @@ do_install () {
install -m 0755 stats-10.pl ${D}${sbindir}/
}
-PACKAGES = "schedstat-utils \
+PACKAGES = "${PN}-dbg schedstat-utils \
schedstat-utils-latency \
schedstat-utils-perl"
RDEPENDS_${PN} = "schedstat-utils-latency schedstat-utils-perl"
diff --git a/packages/sgmlspl/sgmlspl-native_1.03ii.bb b/packages/sgmlspl/sgmlspl-native_1.03ii.bb
index 3f5f7b6ae7..2f9edf11de 100644
--- a/packages/sgmlspl/sgmlspl-native_1.03ii.bb
+++ b/packages/sgmlspl/sgmlspl-native_1.03ii.bb
@@ -18,4 +18,4 @@ do_stage() {
oe_runmake install_vendor
}
-PACKAGES = " "
+PACKAGES = "${PN}-dbg "
diff --git a/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb b/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb
index 270cd0fbf8..051279e33f 100644
--- a/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb
+++ b/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb
@@ -1,6 +1,8 @@
DESCRIPTION = "Precompiled SharpROM toolchain glue package"
LICENSE = "GPL"
SECTION = "base"
+# see bug 2199 for the reason the following line is in here
+DEPENDS = "virtual/linux-libc-headers"
PROVIDES_sharprom-compatible = "\
virtual/arm-linux-gcc-2.95 \
virtual/arm-linux-libc-for-gcc \
diff --git a/packages/slugos-init/files/boot/kexec b/packages/slugos-init/files/boot/kexec
index 7c02a14f04..8973d20bfe 100644
--- a/packages/slugos-init/files/boot/kexec
+++ b/packages/slugos-init/files/boot/kexec
@@ -91,6 +91,7 @@ if [ -n "$1" -a -n "$2" ] ; then
t=`basename "$kpath"`
kexec_image="/mnt/$t"
fi
+ umount /sys
fi
;;
@@ -98,11 +99,13 @@ if [ -n "$1" -a -n "$2" ] ; then
if /boot/network ; then
echo "Loading kexec kernel using nfs \"$kpath\"..."
echo "mounting nfs partition..."
+ loadnfsmods
if mount -o ro,nolock -t nfs `dirname "$kpath"` /mnt ; then
need_umount=1
t=`basename "$kpath"`
kexec_image="/mnt/$t"
fi
+ umount /sys
fi
;;
@@ -140,6 +143,7 @@ if [ -n "$1" -a -n "$2" ] ; then
echo "Loading kexec kernel using tftp \"$kpath\"..."
tftp -g -l "$kexec_image" -r "${kpath#*:}" "${kpath%%:*}"
fi
+ umount /sys
fi
;;
diff --git a/packages/slugos-init/files/boot/network b/packages/slugos-init/files/boot/network
index 9aa295e43d..8124f19ab2 100644
--- a/packages/slugos-init/files/boot/network
+++ b/packages/slugos-init/files/boot/network
@@ -8,6 +8,11 @@
# function!
. /etc/default/functions
#
+# /proc is needed for the module loading, and /sys is
+# necessary to load firmware (if required).
+mount -t proc proc /proc
+mount -t sysfs sysfs /sys
+#
# We may need to load the network driver modules here
. /etc/default/modulefunctions
loadnetmods
@@ -17,5 +22,22 @@ loadnetmods
# file. Config the loopback and network interfaces.
ifconfig lo 127.0.0.1 up
iface="$(config iface)"
-test -n "$iface" && ifup "$iface"
+test -z "$iface" && exit 1
+#
+# Fire up a process in the background to load the firmware if necessary
+sysf="/sys/class/firmware/firmware-$iface"
+(
+ # Wait for the firware to be requested, if required
+ [ -f $sysf/loading ] || sleep 1
+ [ -f $sysf/loading ] || sleep 1
+ if [ -f $sysf/loading ] ; then
+ echo "1" >$sysf/loading
+ cat /lib/firmware/NPE-B >$sysf/data
+ echo "0" >$sysf/loading
+ fi
+) &
+# Trigger the firmware load proactively
+ifconfig "$iface" up
+#
+ifup "$iface"
# exit code is true only if the interface config has succeeded
diff --git a/packages/slugos-init/files/boot/nfs b/packages/slugos-init/files/boot/nfs
index 856f4e56b9..e0f05754c5 100644
--- a/packages/slugos-init/files/boot/nfs
+++ b/packages/slugos-init/files/boot/nfs
@@ -7,10 +7,15 @@
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
#
. /etc/default/functions
+. /etc/default/modulefunctions
+#
leds boot system
#
if /boot/network
then
+ # load the nfs kernel module
+ loadnfsmods
+
# network is up and running, the NFS mount will
# now succeed (possibly), use /boot/disk
exec /boot/disk "$@"
diff --git a/packages/slugos-init/files/leds b/packages/slugos-init/files/leds
index 8043dae682..1beb013c5f 100644
--- a/packages/slugos-init/files/leds
+++ b/packages/slugos-init/files/leds
@@ -12,17 +12,9 @@ leds) ;;
esac
#
-# led_set led-dir off|on|slow|fast|panic|blink|flash|user|*
+# led_set led-dir off|on|slow|fast|panic|blink|flash|*
# set the given LED (expressed as a directory) to the
-# given status. USER_LED may be set to indicate how to
-# handle the 'user' setting.
-led_user_default(){
- case "$(machine)" in
- nslu2) echo -n "cpu-idle";;
- nas100d) echo -n "on";;
- *) echo -n "cpu";;
- esac
-}
+# given status.
#
led_set(){
local setting
@@ -31,15 +23,6 @@ led_set(){
then
setting="$2"
case "$setting" in
- user) if test -n "$USER_LED"
- then
- setting="$USER_LED"
- else
- setting="$(led_user_default)"
- fi;;
- esac
-
- case "$setting" in
off|on) echo -n none
case "$setting" in
@@ -66,11 +49,6 @@ led_set(){
panic) echo -n 3000;;
esac >"$1/delay_off";;
- cpu-idle) echo -n cpu
- # these settings work well on NSLU2
- echo -n on >"$1/idle"
- echo -n flash >"$1/active";;
-
*) echo -n "$setting";;
esac >"$1/trigger"
else
@@ -129,6 +107,28 @@ sysled_ready(){
led_set "$1/ready" "$ready"
}
#
+# the cases for one blue flashing LED (just power)
+sysled_power(){
+ local power
+ # expect dir [boot](system|user) [error|panic]
+ case "$3" in
+ error) power=off;;
+ panic) power=off;;
+ *) case "$2" in
+ bootsystem) power=off;; # blinking
+ system) power=off;; # blinking
+ bootuser) power=on;;
+ user) power=on;;
+ bootsingleuser) power=off;; # blinking
+ singleuser) power=off;; # blinking
+ bootshutdown) power=off;; # blinking
+ shutdown) power=off;; # blinking
+ esac;;
+ esac
+
+ led_set "$1/power" "$power"
+}
+#
sysled(){
local mp st boot isst
mp=/sys
@@ -153,7 +153,7 @@ sysled(){
mp=/mnt
fi
#
- # check for the 'ready' LED - otherwise do nothing
+ # check for the 'ready' LED - otherwise check for a 'power' LED
if test -d "$mp/class/leds/ready"
then
if test -d "$mp/class/leds/status"
@@ -162,6 +162,11 @@ sysled(){
else
sysled_ready "$mp/class/leds" $boot"$@"
fi
+ else
+ if test -d "$mp/class/leds/power"
+ then
+ sysled_power "$mp/class/leds" $boot"$@"
+ fi
fi
#
# clean up
@@ -200,11 +205,8 @@ leds_help(){
echo " the new state. 'error' or 'panic' means a (potentially)" >&2
echo " recoverable error or an unrecoverable error ('panic') has" >&2
echo " occured." >&2
- echo " <led> off|on|slow|fast|panic|blink|flash|user|cpu|cpu-idle" >&2
- echo " set the named led to the given display, an arbitrary led" >&2
- echo " trigger may be given. 'user' will use the default specified" >&2
- echo " in USER_LED from /etc/default/rcS, if not specified a cpu" >&2
- echo " activity setting appropriate to the machine is selected" >&2
+ echo " <led> off|on|slow|fast|panic|blink|flash" >&2
+ echo " set the named led to the given display." >&2
echo " beep {args}" >&2
echo " if possible cause the machine to emit a beep" >&2
}
diff --git a/packages/slugos-init/files/modulefunctions b/packages/slugos-init/files/modulefunctions
index a497f71f6c..82fd7681af 100644
--- a/packages/slugos-init/files/modulefunctions
+++ b/packages/slugos-init/files/modulefunctions
@@ -1,5 +1,6 @@
#!/bin/sh
# . this file to load the functions for automatically loading modules
+# NB: /proc must be mounted for correct evaluation of "$(machine)".
. /etc/default/functions
@@ -34,6 +35,10 @@ loadnetmods(){
esac
}
+loadnfsmods(){
+ modprobe nfs
+}
+
loadmiscmods(){
true
}
diff --git a/packages/slugos-init/slugos-init_0.10.bb b/packages/slugos-init/slugos-init_0.10.bb
index 247578bab3..2523e2e703 100644
--- a/packages/slugos-init/slugos-init_0.10.bb
+++ b/packages/slugos-init/slugos-init_0.10.bb
@@ -142,7 +142,6 @@ pkg_postrm_slugos-init() {
done
}
-PACKAGES = "${PN}"
FILES_${PN} = "/"
# It is bad to overwrite /linuxrc as it puts the system back to
diff --git a/packages/slugos-init/slugos-init_4.8.bb b/packages/slugos-init/slugos-init_4.8.bb
index 49c3e1fee6..4babf89d61 100644
--- a/packages/slugos-init/slugos-init_4.8.bb
+++ b/packages/slugos-init/slugos-init_4.8.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
LICENSE = "GPL"
DEPENDS = "base-files devio"
RDEPENDS = "busybox devio"
-PR = "r0"
+PR = "r2"
SRC_URI = "file://boot/flash \
file://boot/disk \
@@ -141,7 +141,6 @@ pkg_postrm_slugos-init() {
done
}
-PACKAGES = "${PN}"
FILES_${PN} = "/"
# It is bad to overwrite /linuxrc as it puts the system back to
diff --git a/packages/speex/speex_1.0.4.bb b/packages/speex/speex_1.0.4.bb
index e96c249f81..e1af8d18da 100644
--- a/packages/speex/speex_1.0.4.bb
+++ b/packages/speex/speex_1.0.4.bb
@@ -22,5 +22,6 @@ do_stage() {
install -m 0644 include/speex/speex_callbacks.h ${STAGING_INCDIR}/speex
install -m 0644 include/speex/speex_header.h ${STAGING_INCDIR}/speex
install -m 0644 include/speex/speex_stereo.h ${STAGING_INCDIR}/speex
+ install -m 0644 speex.m4 ${STAGING_DATADIR}/aclocal/
}
diff --git a/packages/speex/speex_1.1.12+1.2beta1.bb b/packages/speex/speex_1.1.12+1.2beta1.bb
index 01bd93909e..51ad2f506e 100644
--- a/packages/speex/speex_1.1.12+1.2beta1.bb
+++ b/packages/speex/speex_1.1.12+1.2beta1.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "BSD"
HOMEPAGE = "http://www.speex.org"
DEPENDS = "libogg"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://downloads.us.xiph.org/releases/speex/speex-1.2beta1.tar.gz"
S = "${WORKDIR}/${PN}-1.2beta1"
@@ -27,8 +27,6 @@ EXTRA_OECONF_append_dht-walnut = " --enable-fixed-point "
do_configure_append() {
sed -i s/"^OGG_CFLAGS.*$"/"OGG_CFLAGS = "/g Makefile */Makefile */*/Makefile
sed -i s/"^OGG_LIBS.*$"/"OGG_LIBS = -logg"/g Makefile */Makefile */*/Makefile
- perl -pi -e 's:^includedir.*$:includedir = ${STAGING_INCDIR}:g' Makefile */Makefile */*/Makefile
- perl -pi -e 's:^oldincludedir.*$:includedir = ${STAGING_INCDIR}:g' Makefile */Makefile */*/Makefile
perl -pi -e 's:\s*-I/usr/include$::g' Makefile */Makefile */*/Makefile
}
@@ -36,4 +34,5 @@ do_stage() {
oe_libinstall -C libspeex -so libspeex ${STAGING_LIBDIR}
install -d ${STAGING_INCDIR}/speex
install -m 0644 include/speex/*.h ${STAGING_INCDIR}/speex
+ install -m 0644 speex.m4 ${STAGING_DATADIR}/aclocal/
}
diff --git a/packages/speex/speex_1.1.12.bb b/packages/speex/speex_1.1.12.bb
index c34d459a26..7417ce4504 100644
--- a/packages/speex/speex_1.1.12.bb
+++ b/packages/speex/speex_1.1.12.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "BSD"
HOMEPAGE = "http://www.speex.org"
DEPENDS = "libogg"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://downloads.us.xiph.org/releases/speex/speex-${PV}.tar.gz"
@@ -25,8 +25,6 @@ EXTRA_OECONF_append_arm = " --enable-fixed-point "
do_configure_append() {
sed -i s/"^OGG_CFLAGS.*$"/"OGG_CFLAGS = "/g Makefile */Makefile */*/Makefile
sed -i s/"^OGG_LIBS.*$"/"OGG_LIBS = -logg"/g Makefile */Makefile */*/Makefile
- perl -pi -e 's:^includedir.*$:includedir = ${STAGING_INCDIR}:g' Makefile */Makefile */*/Makefile
- perl -pi -e 's:^oldincludedir.*$:includedir = ${STAGING_INCDIR}:g' Makefile */Makefile */*/Makefile
perl -pi -e 's:\s*-I/usr/include$::g' Makefile */Makefile */*/Makefile
}
@@ -34,4 +32,5 @@ do_stage() {
oe_libinstall -C libspeex -so libspeex ${STAGING_LIBDIR}
install -d ${STAGING_INCDIR}/speex
install -m 0644 include/speex/*.h ${STAGING_INCDIR}/speex
+ install -m 0644 speex.m4 ${STAGING_DATADIR}/aclocal/
}
diff --git a/packages/speex/speex_1.1.7.bb b/packages/speex/speex_1.1.7.bb
index 7ce34a80eb..ef818794de 100644
--- a/packages/speex/speex_1.1.7.bb
+++ b/packages/speex/speex_1.1.7.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "BSD"
HOMEPAGE = "http://www.speex.org"
DEPENDS = "libogg"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.speex.org/download/speex-${PV}.tar.gz"
@@ -21,8 +21,6 @@ EXTRA_OECONF_append_openmn = " --enable-arm5e-asm --enable-fixed-point"
do_configure_append() {
sed -i s/"^OGG_CFLAGS.*$"/"OGG_CFLAGS = "/g Makefile */Makefile */*/Makefile
sed -i s/"^OGG_LIBS.*$"/"OGG_LIBS = -logg"/g Makefile */Makefile */*/Makefile
- perl -pi -e 's:^includedir.*$:includedir = ${STAGING_INCDIR}:g' Makefile */Makefile */*/Makefile
- perl -pi -e 's:^oldincludedir.*$:includedir = ${STAGING_INCDIR}:g' Makefile */Makefile */*/Makefile
perl -pi -e 's:\s*-I/usr/include$::g' Makefile */Makefile */*/Makefile
}
@@ -34,4 +32,5 @@ do_stage() {
install -m 0644 include/speex/speex_callbacks.h ${STAGING_INCDIR}/speex
install -m 0644 include/speex/speex_header.h ${STAGING_INCDIR}/speex
install -m 0644 include/speex/speex_stereo.h ${STAGING_INCDIR}/speex
+ install -m 0644 speex.m4 ${STAGING_DATADIR}/aclocal/
}
diff --git a/packages/sphyrna/sphyrna_svn.bb b/packages/sphyrna/sphyrna_svn.bb
index d2e90cf8f2..2e7fd432e9 100644
--- a/packages/sphyrna/sphyrna_svn.bb
+++ b/packages/sphyrna/sphyrna_svn.bb
@@ -11,7 +11,7 @@ S = "${WORKDIR}/${PN}"
inherit autotools
-PACKAGES = "sphyrna-console sphyrna-python"
+PACKAGES = "${PN}-dbg sphyrna-console sphyrna-python"
FILES_sphyrna-console = "${bindir}/hhconsole"
FILES_sphyrna-python = "${bindir}/decode.py ${libdir}/python2.4/site-packages/sphyrna/*"
diff --git a/packages/sqlite/sqlite3-3.2.2/libtool.patch b/packages/sqlite/sqlite3-3.2.2/libtool.patch
deleted file mode 100644
index ccf9993ed2..0000000000
--- a/packages/sqlite/sqlite3-3.2.2/libtool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: sqlite-3.2.1/Makefile.in
-===================================================================
---- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
-+++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
-@@ -15,7 +15,10 @@
- # The toplevel directory of the source tree. This is the directory
- # that contains this "Makefile.in" and the "configure.in" script.
- #
--TOP = @srcdir@
-+TOP = $(srcdir)
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+top_builddir = .
-
- # C Compiler and options for use in building executables that
- # will run on the platform that is doing the build.
-@@ -96,7 +99,7 @@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
- INSTALL = @INSTALL@
--LIBTOOL = ./libtool
-+LIBTOOL = @LIBTOOL@
- ALLOWRELEASE = @ALLOWRELEASE@
-
- # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3-3.2.5/libtool.patch b/packages/sqlite/sqlite3-3.2.5/libtool.patch
deleted file mode 100644
index ccf9993ed2..0000000000
--- a/packages/sqlite/sqlite3-3.2.5/libtool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: sqlite-3.2.1/Makefile.in
-===================================================================
---- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
-+++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
-@@ -15,7 +15,10 @@
- # The toplevel directory of the source tree. This is the directory
- # that contains this "Makefile.in" and the "configure.in" script.
- #
--TOP = @srcdir@
-+TOP = $(srcdir)
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+top_builddir = .
-
- # C Compiler and options for use in building executables that
- # will run on the platform that is doing the build.
-@@ -96,7 +99,7 @@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
- INSTALL = @INSTALL@
--LIBTOOL = ./libtool
-+LIBTOOL = @LIBTOOL@
- ALLOWRELEASE = @ALLOWRELEASE@
-
- # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3-3.2.7/libtool.patch b/packages/sqlite/sqlite3-3.2.7/libtool.patch
deleted file mode 100644
index ccf9993ed2..0000000000
--- a/packages/sqlite/sqlite3-3.2.7/libtool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: sqlite-3.2.1/Makefile.in
-===================================================================
---- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
-+++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
-@@ -15,7 +15,10 @@
- # The toplevel directory of the source tree. This is the directory
- # that contains this "Makefile.in" and the "configure.in" script.
- #
--TOP = @srcdir@
-+TOP = $(srcdir)
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+top_builddir = .
-
- # C Compiler and options for use in building executables that
- # will run on the platform that is doing the build.
-@@ -96,7 +99,7 @@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
- INSTALL = @INSTALL@
--LIBTOOL = ./libtool
-+LIBTOOL = @LIBTOOL@
- ALLOWRELEASE = @ALLOWRELEASE@
-
- # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3-3.3.12/cross-compile.patch b/packages/sqlite/sqlite3-3.3.12/cross-compile.patch
deleted file mode 100644
index 31d4f0d162..0000000000
--- a/packages/sqlite/sqlite3-3.3.12/cross-compile.patch
+++ /dev/null
@@ -1,92 +0,0 @@
---- sqlite-3.3.7/configure.ac.orig 2006-08-21 00:20:50.000000000 +0200
-+++ sqlite-3.3.7/configure.ac 2006-08-21 00:22:35.000000000 +0200
-@@ -187,10 +187,11 @@
- default_build_cflags="-g"
- if test "$config_BUILD_CC" = ""; then
- AC_PROG_CC
-- if test "$cross_compiling" = "yes"; then
-- AC_MSG_ERROR([unable to find a compiler for building build tools])
-- fi
-- BUILD_CC=$CC
-+# if test "$cross_compiling" = "yes"; then
-+# AC_MSG_ERROR([unable to find a compiler for building build tools])
-+# fi
-+# BUILD_CC=$CC
-+BUILD_CC=gcc
- default_build_cflags=$CFLAGS
- else
- BUILD_CC=$config_BUILD_CC
-@@ -238,6 +239,12 @@
- TARGET_LINK=$config_TARGET_LINK
- fi
- AC_MSG_RESULT($TARGET_LINK)
-+if test "$config_TARGET_LFLAGS" != ""; then
-+ TARGET_LFLAGS=$config_TARGET_LFLAGS
-+ else
-+ TARGET_LFLAGS=$BUILD_LFLAGS
-+ fi
-+AC_MSG_RESULT($TARGET_LFLAGS)
- AC_MSG_CHECKING([switches on the target compiler])
- if test "$config_TARGET_TFLAGS" != ""; then
- TARGET_TFLAGS=$config_TARGET_TFLAGS
-@@ -592,15 +599,7 @@
- # Figure out what C libraries are required to compile programs
- # that use "readline()" library.
- #
--if test "$config_TARGET_READLINE_LIBS" != ""; then
-- TARGET_READLINE_LIBS="$config_TARGET_READLINE_LIBS"
--else
-- CC=$TARGET_CC
-- LIBS=""
-- AC_SEARCH_LIBS(tgetent, [readline ncurses curses termcap])
-- AC_CHECK_LIB([readline], [readline])
-- TARGET_READLINE_LIBS="$LIBS"
--fi
-+TARGET_READLINE_LIBS="-lreadline"
- AC_SUBST(TARGET_READLINE_LIBS)
-
- ##########
-@@ -615,41 +614,8 @@
- ##########
- # Figure out where to get the READLINE header files.
- #
--AC_MSG_CHECKING([readline header files])
--found=no
--if test "$config_TARGET_READLINE_INC" != ""; then
-- TARGET_READLINE_INC=$config_TARGET_READLINE_INC
-- found=yes
--fi
--if test "$found" = "yes"; then
-- AC_MSG_RESULT($TARGET_READLINE_INC)
--else
-- AC_MSG_RESULT(not specified: still searching...)
-- AC_CHECK_HEADER(readline.h, [found=yes])
--fi
--if test "$found" = "no"; then
-- for dir in /usr /usr/local /usr/local/readline /usr/contrib /mingw; do
-- AC_CHECK_FILE($dir/include/readline.h, found=yes)
-- if test "$found" = "yes"; then
-- TARGET_READLINE_INC="-I$dir/include"
-- break
-- fi
-- AC_CHECK_FILE($dir/include/readline/readline.h, found=yes)
-- if test "$found" = "yes"; then
-- TARGET_READLINE_INC="-I$dir/include/readline"
-- break
-- fi
-- done
--fi
--if test "$found" = "yes"; then
-- if test "$TARGET_READLINE_LIBS" = ""; then
-- TARGET_HAVE_READLINE=0
-- else
-- TARGET_HAVE_READLINE=1
-- fi
--else
-- TARGET_HAVE_READLINE=0
--fi
-+TARGET_READLINE_INC=""
-+TARGET_HAVE_READLINE=1
- AC_SUBST(TARGET_READLINE_INC)
- AC_SUBST(TARGET_HAVE_READLINE)
-
diff --git a/packages/sqlite/sqlite3-3.3.12/libtool.patch b/packages/sqlite/sqlite3-3.3.12/libtool.patch
deleted file mode 100644
index ccf9993ed2..0000000000
--- a/packages/sqlite/sqlite3-3.3.12/libtool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: sqlite-3.2.1/Makefile.in
-===================================================================
---- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
-+++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
-@@ -15,7 +15,10 @@
- # The toplevel directory of the source tree. This is the directory
- # that contains this "Makefile.in" and the "configure.in" script.
- #
--TOP = @srcdir@
-+TOP = $(srcdir)
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+top_builddir = .
-
- # C Compiler and options for use in building executables that
- # will run on the platform that is doing the build.
-@@ -96,7 +99,7 @@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
- INSTALL = @INSTALL@
--LIBTOOL = ./libtool
-+LIBTOOL = @LIBTOOL@
- ALLOWRELEASE = @ALLOWRELEASE@
-
- # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3-3.3.13/cross-compile.patch b/packages/sqlite/sqlite3-3.3.13/cross-compile.patch
deleted file mode 100644
index 31d4f0d162..0000000000
--- a/packages/sqlite/sqlite3-3.3.13/cross-compile.patch
+++ /dev/null
@@ -1,92 +0,0 @@
---- sqlite-3.3.7/configure.ac.orig 2006-08-21 00:20:50.000000000 +0200
-+++ sqlite-3.3.7/configure.ac 2006-08-21 00:22:35.000000000 +0200
-@@ -187,10 +187,11 @@
- default_build_cflags="-g"
- if test "$config_BUILD_CC" = ""; then
- AC_PROG_CC
-- if test "$cross_compiling" = "yes"; then
-- AC_MSG_ERROR([unable to find a compiler for building build tools])
-- fi
-- BUILD_CC=$CC
-+# if test "$cross_compiling" = "yes"; then
-+# AC_MSG_ERROR([unable to find a compiler for building build tools])
-+# fi
-+# BUILD_CC=$CC
-+BUILD_CC=gcc
- default_build_cflags=$CFLAGS
- else
- BUILD_CC=$config_BUILD_CC
-@@ -238,6 +239,12 @@
- TARGET_LINK=$config_TARGET_LINK
- fi
- AC_MSG_RESULT($TARGET_LINK)
-+if test "$config_TARGET_LFLAGS" != ""; then
-+ TARGET_LFLAGS=$config_TARGET_LFLAGS
-+ else
-+ TARGET_LFLAGS=$BUILD_LFLAGS
-+ fi
-+AC_MSG_RESULT($TARGET_LFLAGS)
- AC_MSG_CHECKING([switches on the target compiler])
- if test "$config_TARGET_TFLAGS" != ""; then
- TARGET_TFLAGS=$config_TARGET_TFLAGS
-@@ -592,15 +599,7 @@
- # Figure out what C libraries are required to compile programs
- # that use "readline()" library.
- #
--if test "$config_TARGET_READLINE_LIBS" != ""; then
-- TARGET_READLINE_LIBS="$config_TARGET_READLINE_LIBS"
--else
-- CC=$TARGET_CC
-- LIBS=""
-- AC_SEARCH_LIBS(tgetent, [readline ncurses curses termcap])
-- AC_CHECK_LIB([readline], [readline])
-- TARGET_READLINE_LIBS="$LIBS"
--fi
-+TARGET_READLINE_LIBS="-lreadline"
- AC_SUBST(TARGET_READLINE_LIBS)
-
- ##########
-@@ -615,41 +614,8 @@
- ##########
- # Figure out where to get the READLINE header files.
- #
--AC_MSG_CHECKING([readline header files])
--found=no
--if test "$config_TARGET_READLINE_INC" != ""; then
-- TARGET_READLINE_INC=$config_TARGET_READLINE_INC
-- found=yes
--fi
--if test "$found" = "yes"; then
-- AC_MSG_RESULT($TARGET_READLINE_INC)
--else
-- AC_MSG_RESULT(not specified: still searching...)
-- AC_CHECK_HEADER(readline.h, [found=yes])
--fi
--if test "$found" = "no"; then
-- for dir in /usr /usr/local /usr/local/readline /usr/contrib /mingw; do
-- AC_CHECK_FILE($dir/include/readline.h, found=yes)
-- if test "$found" = "yes"; then
-- TARGET_READLINE_INC="-I$dir/include"
-- break
-- fi
-- AC_CHECK_FILE($dir/include/readline/readline.h, found=yes)
-- if test "$found" = "yes"; then
-- TARGET_READLINE_INC="-I$dir/include/readline"
-- break
-- fi
-- done
--fi
--if test "$found" = "yes"; then
-- if test "$TARGET_READLINE_LIBS" = ""; then
-- TARGET_HAVE_READLINE=0
-- else
-- TARGET_HAVE_READLINE=1
-- fi
--else
-- TARGET_HAVE_READLINE=0
--fi
-+TARGET_READLINE_INC=""
-+TARGET_HAVE_READLINE=1
- AC_SUBST(TARGET_READLINE_INC)
- AC_SUBST(TARGET_HAVE_READLINE)
-
diff --git a/packages/sqlite/sqlite3-3.3.13/libtool.patch b/packages/sqlite/sqlite3-3.3.13/libtool.patch
deleted file mode 100644
index ccf9993ed2..0000000000
--- a/packages/sqlite/sqlite3-3.3.13/libtool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: sqlite-3.2.1/Makefile.in
-===================================================================
---- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
-+++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
-@@ -15,7 +15,10 @@
- # The toplevel directory of the source tree. This is the directory
- # that contains this "Makefile.in" and the "configure.in" script.
- #
--TOP = @srcdir@
-+TOP = $(srcdir)
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+top_builddir = .
-
- # C Compiler and options for use in building executables that
- # will run on the platform that is doing the build.
-@@ -96,7 +99,7 @@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
- INSTALL = @INSTALL@
--LIBTOOL = ./libtool
-+LIBTOOL = @LIBTOOL@
- ALLOWRELEASE = @ALLOWRELEASE@
-
- # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3-3.3.17/libtool.patch b/packages/sqlite/sqlite3-3.3.17/libtool.patch
deleted file mode 100644
index ccf9993ed2..0000000000
--- a/packages/sqlite/sqlite3-3.3.17/libtool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: sqlite-3.2.1/Makefile.in
-===================================================================
---- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
-+++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
-@@ -15,7 +15,10 @@
- # The toplevel directory of the source tree. This is the directory
- # that contains this "Makefile.in" and the "configure.in" script.
- #
--TOP = @srcdir@
-+TOP = $(srcdir)
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+top_builddir = .
-
- # C Compiler and options for use in building executables that
- # will run on the platform that is doing the build.
-@@ -96,7 +99,7 @@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
- INSTALL = @INSTALL@
--LIBTOOL = ./libtool
-+LIBTOOL = @LIBTOOL@
- ALLOWRELEASE = @ALLOWRELEASE@
-
- # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3-3.4.1/libtool.patch b/packages/sqlite/sqlite3-3.4.1/libtool.patch
deleted file mode 100644
index ccf9993ed2..0000000000
--- a/packages/sqlite/sqlite3-3.4.1/libtool.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: sqlite-3.2.1/Makefile.in
-===================================================================
---- sqlite-3.2.1.orig/Makefile.in 2005-03-23 17:09:39.000000000 +0100
-+++ sqlite-3.2.1/Makefile.in 2005-04-25 23:11:20.000000000 +0200
-@@ -15,7 +15,10 @@
- # The toplevel directory of the source tree. This is the directory
- # that contains this "Makefile.in" and the "configure.in" script.
- #
--TOP = @srcdir@
-+TOP = $(srcdir)
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+top_builddir = .
-
- # C Compiler and options for use in building executables that
- # will run on the platform that is doing the build.
-@@ -96,7 +99,7 @@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
- INSTALL = @INSTALL@
--LIBTOOL = ./libtool
-+LIBTOOL = @LIBTOOL@
- ALLOWRELEASE = @ALLOWRELEASE@
-
- # libtool compile/link/install
diff --git a/packages/sqlite/sqlite3_3.5.2.bb b/packages/sqlite/sqlite3_3.5.6.bb
index 53fd96c705..53fd96c705 100644
--- a/packages/sqlite/sqlite3_3.5.2.bb
+++ b/packages/sqlite/sqlite3_3.5.6.bb
diff --git a/packages/subversion/subversion_1.3.1.bb b/packages/subversion/subversion_1.3.1.bb
index 1e40cd7a55..79e5e67d7b 100644
--- a/packages/subversion/subversion_1.3.1.bb
+++ b/packages/subversion/subversion_1.3.1.bb
@@ -9,7 +9,7 @@ SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
file://disable-revision-install.patch;patch=1 \
file://apr-regex.patch;patch=1"
-EXTRA_OECONF = "--with-neon=${STAGING_DIR_NATIVE}${layout_exec_prefix} \
+EXTRA_OECONF = "--with-neon=${STAGING_EXECPREFIXDIR} \
--without-berkeley-db --without-apxs --without-apache \
--without-swig --with-apr=${STAGING_BINDIR_CROSS} \
--with-apr-util=${STAGING_BINDIR_CROSS}"
diff --git a/packages/subversion/subversion_1.4.0.bb b/packages/subversion/subversion_1.4.0.bb
index 59f42b8c66..305b13c6a4 100644
--- a/packages/subversion/subversion_1.4.0.bb
+++ b/packages/subversion/subversion_1.4.0.bb
@@ -10,7 +10,7 @@ SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
file://disable-revision-install.patch;patch=1 \
file://neon-detection.patch;patch=1"
-EXTRA_OECONF = "--with-neon=${STAGING_DIR}/${TARGET_SYS} \
+EXTRA_OECONF = "--with-neon=${STAGING_EXECPREFIXDIR} \
--without-berkeley-db --without-apxs --without-apache \
--without-swig --with-apr=${STAGING_BINDIR_CROSS} \
--with-apr-util=${STAGING_BINDIR_CROSS}"
diff --git a/packages/subversion/subversion_1.4.3.bb b/packages/subversion/subversion_1.4.3.bb
index 9674329f6c..4871674cc8 100644
--- a/packages/subversion/subversion_1.4.3.bb
+++ b/packages/subversion/subversion_1.4.3.bb
@@ -11,7 +11,7 @@ SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
file://disable-revision-install.patch;patch=1 \
file://neon-detection.patch;patch=1"
-EXTRA_OECONF = "--with-neon=${STAGING_DIR}/${TARGET_SYS} \
+EXTRA_OECONF = "--with-neon=${STAGING_EXECPREFIXDIR} \
--without-berkeley-db --without-apxs --without-apache \
--without-swig --with-apr=${STAGING_BINDIR_CROSS} \
--with-apr-util=${STAGING_BINDIR_CROSS}"
diff --git a/packages/subversion/subversion_1.4.5.bb b/packages/subversion/subversion_1.4.5.bb
index 1daf45bd0c..5c15d67daf 100644
--- a/packages/subversion/subversion_1.4.5.bb
+++ b/packages/subversion/subversion_1.4.5.bb
@@ -11,7 +11,7 @@ SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
file://disable-revision-install.patch;patch=1 \
file://neon-detection.patch;patch=1"
-EXTRA_OECONF = "--with-neon=${STAGING_DIR}/${TARGET_SYS} \
+EXTRA_OECONF = "--with-neon=${STAGING_EXECPREFIXDIR} \
--without-berkeley-db --without-apxs --without-apache \
--without-swig --with-apr=${STAGING_BINDIR_CROSS} \
--with-apr-util=${STAGING_BINDIR_CROSS}"
diff --git a/packages/swt/files/swt-hildon.patch b/packages/swt/files/swt-hildon.patch
index 728dd3070c..5f095e08fc 100644
--- a/packages/swt/files/swt-hildon.patch
+++ b/packages/swt/files/swt-hildon.patch
@@ -1,15 +1,15 @@
-Index: swt-hildon/swt-source/make_linux.mak
+Index: swt/swt-source/make_linux.mak
===================================================================
---- swt-hildon.orig/swt-source/make_linux.mak 2008-01-08 09:35:29.000000000 +0100
-+++ swt-hildon/swt-source/make_linux.mak 2008-01-08 11:35:01.000000000 +0100
+--- swt.orig/swt-source/make_linux.mak 2007-06-20 12:01:22.000000000 +0200
++++ swt/swt-source/make_linux.mak 2008-02-14 11:32:49.000000000 +0100
@@ -45,8 +45,8 @@
CAIROLIBS = `pkg-config --libs-only-L cairo` -lcairo
# Do not use pkg-config to get libs because it includes unnecessary dependencies (i.e. pangoxft-1.0)
-GTKCFLAGS = `pkg-config --cflags gtk+-2.0`
-GTKLIBS = `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
-+GTKCFLAGS = `pkg-config --cflags gtk+-2.0 hildon-1`
-+GTKLIBS = -lhildon-1 `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
++GTKCFLAGS = `pkg-config --cflags gtk+-2.0 hildon-1 hildon-fm-2`
++GTKLIBS = -lhildon-1 -lhildonfm `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
CDE_LIBS = -L$(CDE_HOME)/lib -R$(CDE_HOME)/lib -lXt -lX11 -lDtSvc
@@ -31,10 +31,10 @@ Index: swt-hildon/swt-source/make_linux.mak
-fPIC \
${SWT_PTR_CFLAGS}
LIBS = -shared -fPIC
-Index: swt-hildon/swt-source/os.c
+Index: swt/swt-source/os.c
===================================================================
---- swt-hildon.orig/swt-source/os.c 2008-01-08 09:35:29.000000000 +0100
-+++ swt-hildon/swt-source/os.c 2008-01-08 09:37:00.000000000 +0100
+--- swt.orig/swt-source/os.c 2007-10-30 16:24:28.000000000 +0100
++++ swt/swt-source/os.c 2008-02-14 09:32:49.000000000 +0100
@@ -17,6 +17,9 @@
#include "os_structs.h"
#include "os_stats.h"
@@ -80,7 +80,7 @@ Index: swt-hildon/swt-source/os.c
OS_NATIVE_EXIT(env, that, _1gtk_1menu_1bar_1new_FUNC);
return rc;
}
-@@ -15464,8 +15479,22 @@
+@@ -15464,8 +15479,23 @@
(JNIEnv *env, jclass that, jint arg0)
{
jint rc = 0;
@@ -95,6 +95,7 @@ Index: swt-hildon/swt-source/os.c
+ p = hildon_program_get_instance();
+ w = hildon_window_new();
+ hildon_program_add_window(p, HILDON_WINDOW(w));
++/* gtk_window_fullscreen(GTK_WINDOW(w));*/
+/*
+ }
+ else
@@ -104,10 +105,10 @@ Index: swt-hildon/swt-source/os.c
OS_NATIVE_EXIT(env, that, _1gtk_1window_1new_FUNC);
return rc;
}
-Index: swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java
+Index: swt/swt-source/org/eclipse/swt/widgets/Menu.java
===================================================================
---- swt-hildon.orig/swt-source/org/eclipse/swt/widgets/Menu.java 2008-01-08 09:34:55.000000000 +0100
-+++ swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java 2008-01-08 09:36:01.000000000 +0100
+--- swt.orig/swt-source/org/eclipse/swt/widgets/Menu.java 2007-05-31 18:03:50.000000000 +0200
++++ swt/swt-source/org/eclipse/swt/widgets/Menu.java 2008-02-14 09:05:04.000000000 +0100
@@ -259,9 +259,17 @@
if ((style & SWT.BAR) != 0) {
handle = OS.gtk_menu_bar_new ();
@@ -126,3 +127,137 @@ Index: swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java
} else {
handle = OS.gtk_menu_new ();
if (handle == 0) error (SWT.ERROR_NO_HANDLES);
+Index: swt/swt-source/org/eclipse/swt/internal/gtk/OS.java
+===================================================================
+--- swt.orig/swt-source/org/eclipse/swt/internal/gtk/OS.java 2007-10-30 16:06:36.000000000 +0100
++++ swt/swt-source/org/eclipse/swt/internal/gtk/OS.java 2008-02-14 09:05:04.000000000 +0100
+@@ -471,6 +471,11 @@
+ public static final byte[] window_state_event = ascii("window-state-event");
+
+ /** Properties */
++ /* Maemo hildon specific - border added due to toolbar */
++ public static final byte[] toolbar_borders = ascii("toolbar-borders");
++ /* Maemo hildon specific - border added due to skin graphics area */
++ public static final byte[] borders = ascii("borders");
++
+ public static final byte[] active = ascii("active");
+ public static final byte[] background_gdk = ascii("background-gdk");
+ public static final byte[] button_relief = ascii("button-relief");
+Index: swt/swt-source/org/eclipse/swt/widgets/Shell.java
+===================================================================
+--- swt.orig/swt-source/org/eclipse/swt/widgets/Shell.java 2007-11-01 11:31:12.000000000 +0100
++++ swt/swt-source/org/eclipse/swt/widgets/Shell.java 2008-02-14 10:51:37.000000000 +0100
+@@ -1028,6 +1028,14 @@
+ int /*long*/ gtk_size_allocate (int /*long*/ widget, int /*long*/ allocation) {
+ int width = OS.GTK_WIDGET_WIDTH (shellHandle);
+ int height = OS.GTK_WIDGET_HEIGHT (shellHandle);
++
++ if (!fullScreen)
++ {
++ GtkBorder b = getMaemoBorder(false);
++ width -= (b.left + b.right);
++ height -= (b.top + b.bottom);
++ }
++
+ if (!resized || oldWidth != width || oldHeight != height) {
+ oldWidth = width;
+ oldHeight = height;
+@@ -1384,14 +1392,53 @@
+ if ((state & FOREIGN_HANDLE) != 0) return;
+ Monitor monitor = getMonitor ();
+ Rectangle rect = monitor.getClientArea ();
++/*
+ int width = rect.width * 5 / 8;
+ int height = rect.height * 5 / 8;
++*/
++
++ int width = rect.width;
++ int height = rect.height;
++
++ // Instead of some arbitrary defaults we can use the complete "application
++ // area" on the maemo platform.
++ if (!fullScreen)
++ {
++ GtkBorder b = getMaemoBorder(false);
++ width -= (b.left + b.right);
++ height -= (b.top + b.bottom);
++ }
++
+ if ((style & SWT.RESIZE) != 0) {
+ OS.gtk_window_resize (shellHandle, width, height);
+ }
+ resizeBounds (width, height, false);
+ }
+
++/**
++ * Retrieves the "borders" or "toolbar-borders" property
++ * from the Shell.
++ *
++ * That is neccessary to calculate correct Shell sizes on
++ * the Maemo platform.
++ *
++ */
++private GtkBorder getMaemoBorder(boolean wantToolbarBorder)
++{
++ GtkBorder b = new GtkBorder();
++
++ int /*long*/ [] result = new int /*long*/[1];
++ OS.gtk_widget_style_get(shellHandle,
++ (wantToolbarBorder ? OS.toolbar_borders
++ : OS.borders),
++ result, 0);
++
++ if (result[0] != 0)
++ OS.memmove(b, result[0], GtkBorder.sizeof);
++
++ return b;
++}
++
+ public void setMaximized (boolean maximized) {
+ checkWidget();
+ super.setMaximized (maximized);
+Index: swt/swt-source/os_custom.c
+===================================================================
+--- swt.orig/swt-source/os_custom.c 2007-05-31 18:04:22.000000000 +0200
++++ swt/swt-source/os_custom.c 2008-02-14 13:55:49.000000000 +0100
+@@ -13,6 +13,8 @@
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
++#include <hildon/hildon-file-chooser-dialog.h>
++
+ #include "swt.h"
+ #include "os_structs.h"
+ #include "os_stats.h"
+@@ -41,11 +43,22 @@
+ {
+ jbyte *lparg0=NULL;
+ SWT_PTR rc = 0;
++ GtkWidget *widget = NULL;
+ OS_NATIVE_ENTER(env, that, _1gtk_1file_1chooser_1dialog_1new_FUNC);
+ if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
+ /*
+ rc = (SWT_PTR)gtk_file_chooser_dialog_new(lparg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ */
++ /* Remaining arguments are thrown away as they cannot be used for the
++ * HildonFileChooserDialog anyways.
++ */
++ widget = (SWT_PTR) hildon_file_chooser_dialog_new(arg1, (GtkFileChooserAction) arg2);
++ gtk_window_set_title(GTK_WINDOW(widget), (const gchar *) lparg0);
++
++ rc = (SWT_PTR) widget;
++#if 0
++// The code is not supposed to run on AMD64.
++
+ {
+ static int initialized = 0;
+ static void *handle = NULL;
+@@ -70,6 +83,8 @@
+ rc = (SWT_PTR)(*fptr)(lparg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ }
+ }
++#endif
++
+ fail:
+ if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+ OS_NATIVE_EXIT(env, that, _1gtk_1file_1chooser_1dialog_1new_FUNC);
diff --git a/packages/swt/swt-gtk.inc b/packages/swt/swt-gtk.inc
index 4522e57503..9c978950c8 100644
--- a/packages/swt/swt-gtk.inc
+++ b/packages/swt/swt-gtk.inc
@@ -3,7 +3,7 @@ LICENSE = "CPL MPL LGPL"
inherit java-library
-DEPENDS = "cairo gtk+ atk libxtst classpath"
+DEPENDS = "classpath-native cairo gtk+ atk libxtst"
S = "${WORKDIR}/swt-source"
@@ -36,7 +36,6 @@ do_install() {
oe_jarinstall swt.jar
oe_jarinstall swt-gtk-${PV}.jar swt-gtk.jar
- install -d ${D}${libdir_jni}
oe_libinstall -so libswt-atk-gtk-${SWTVERSION} ${D}/${libdir_jni}
oe_libinstall -so libswt-cairo-gtk-${SWTVERSION} ${D}/${libdir_jni}
oe_libinstall -so libswt-pi-gtk-${SWTVERSION} ${D}/${libdir_jni}
diff --git a/packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb b/packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb
index 628dcdd810..d3dfe4d216 100644
--- a/packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb
+++ b/packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb
@@ -1,7 +1,7 @@
require swt3.4-gtk_${PV}.bb
-PR = "r1"
+PR = "r2"
-DEPENDS += "hildon-1"
+DEPENDS += "libhildon libhildonfm"
SRC_URI += "file://swt-hildon.patch;patch=1;pnum=2"
diff --git a/packages/swt/swt3.4-gtk-hildon_3.3+3.4M5.bb b/packages/swt/swt3.4-gtk-hildon_3.3+3.4M5.bb
new file mode 100644
index 0000000000..17d85b46f3
--- /dev/null
+++ b/packages/swt/swt3.4-gtk-hildon_3.3+3.4M5.bb
@@ -0,0 +1,7 @@
+require swt3.4-gtk_${PV}.bb
+
+PR = "r0"
+
+DEPENDS += "libhildon libhildonfm"
+
+SRC_URI += "file://swt-hildon.patch;patch=1;pnum=2"
diff --git a/packages/swt/swt3.4-gtk_3.3+3.4M5.bb b/packages/swt/swt3.4-gtk_3.3+3.4M5.bb
new file mode 100644
index 0000000000..4035d083f7
--- /dev/null
+++ b/packages/swt/swt3.4-gtk_3.3+3.4M5.bb
@@ -0,0 +1,12 @@
+require swt-gtk.inc
+
+SRC_URI = "http://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/eclipse/downloads/drops/S-3.4M5-200802071530/swt-3.4M5-gtk-linux-x86.zip \
+ file://Makefile"
+
+# A number which is used by SWT to mark the shared libraries.
+SWTVERSION = "3428"
+SWT_API_VERSION = "3.4"
+
+PROVIDES = "swt3.4-gtk"
+
+RCONFLICTS = "libswt3.3-gtk-java"
diff --git a/packages/sylpheed/claws-mail_3.0.2.bb b/packages/sylpheed/claws-mail_3.3.0.bb
index 29e7a5bc63..29e7a5bc63 100644
--- a/packages/sylpheed/claws-mail_3.0.2.bb
+++ b/packages/sylpheed/claws-mail_3.3.0.bb
diff --git a/packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.15.2.bb b/packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.17.1.bb
index 5ca95d9dfb..5ca95d9dfb 100644
--- a/packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.15.2.bb
+++ b/packages/sylpheed/claws-plugin-gtkhtml2-viewer_0.17.1.bb
diff --git a/packages/sylpheed/claws-plugin-mailmbox_1.14.bb b/packages/sylpheed/claws-plugin-mailmbox_1.14.bb
index 03e939ead3..cfa26a464e 100644
--- a/packages/sylpheed/claws-plugin-mailmbox_1.14.bb
+++ b/packages/sylpheed/claws-plugin-mailmbox_1.14.bb
@@ -17,4 +17,4 @@ do_configure() {
}
FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
-FILES_${PN}-dbg = "${libdir}/claws-mail/plugins/.debug"
+FILES_${PN}-dbg += "${libdir}/claws-mail/plugins/.debug"
diff --git a/packages/sylpheed/claws-plugin-rssyl_0.15.bb b/packages/sylpheed/claws-plugin-rssyl_0.15.bb
deleted file mode 100644
index 29fc245ac4..0000000000
--- a/packages/sylpheed/claws-plugin-rssyl_0.15.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent plugins"
-DEPENDS = "claws-mail libxml2 curl glib-2.0 gtk+"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "http://www.claws-mail.org/downloads/plugins/rssyl-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-S = "${WORKDIR}/rssyl-${PV}"
-
-do_configure() {
- gnu-configize
- libtoolize --force
- oe_runconf
-}
-
-FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
-
diff --git a/packages/sylpheed/claws-plugin-rssyl_0.10.bb b/packages/sylpheed/claws-plugin-rssyl_0.18.bb
index 29fc245ac4..29fc245ac4 100644
--- a/packages/sylpheed/claws-plugin-rssyl_0.10.bb
+++ b/packages/sylpheed/claws-plugin-rssyl_0.18.bb
diff --git a/packages/sysfsutils/sysfsutils_2.0.0.bb b/packages/sysfsutils/sysfsutils_2.0.0.bb
index 2fbb0865c9..f59dfa0feb 100644
--- a/packages/sysfsutils/sysfsutils_2.0.0.bb
+++ b/packages/sysfsutils/sysfsutils_2.0.0.bb
@@ -20,5 +20,5 @@ do_stage () {
PACKAGES_prepend = "libsysfs libsysfs-dbg libsysfs-dev "
FILES_libsysfs = "${libdir}/*.so.*"
FILES_libsysfs-dev = "${libdir}/* ${includedir}"
-FILES_libsysfs-dbg = "${libdir}/.debug"
-FILES_${PN}-dbg = "${bindir}/.debug"
+FILES_libsysfs-dbg += "${libdir}/.debug"
+FILES_${PN}-dbg += "${bindir}/.debug"
diff --git a/packages/wxbase/.mtn2git_empty b/packages/taglib/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/wxbase/.mtn2git_empty
+++ b/packages/taglib/files/.mtn2git_empty
diff --git a/packages/taglib/files/taglib_1.4-8.diff.gz b/packages/taglib/files/taglib_1.4-8.diff.gz
new file mode 100644
index 0000000000..f128f4d3de
--- /dev/null
+++ b/packages/taglib/files/taglib_1.4-8.diff.gz
Binary files differ
diff --git a/packages/taglib/taglib_1.4.bb b/packages/taglib/taglib_1.4.bb
index 43fb2a2bfa..e50eeb6490 100644
--- a/packages/taglib/taglib_1.4.bb
+++ b/packages/taglib/taglib_1.4.bb
@@ -1,41 +1,24 @@
DESCRIPTION = "TagLib is a library for reading and editing the meta-data of several popular audio formats"
-SECTION = "libs"
+SECTION = "libs/multimedia"
HOMEPAGE = "http://developer.kde.org/~wheeler/taglib.html"
LICENSE = "LGPL"
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://developer.kde.org/~wheeler/files/src/taglib-${PV}.tar.gz"
+SRC_URI = "http://developer.kde.org/~wheeler/files/src/taglib-${PV}.tar.gz \
+ file://taglib_1.4-8.diff.gz;patch=1"
S = "${WORKDIR}/taglib-${PV}"
-inherit autotools qmake_base pkgconfig binconfig
+inherit autotools pkgconfig binconfig
-export OE_QMAKE_LINK="${CXX}"
-
-do_configure() {
- # calling oe_runconf to generate pkgconfig and binconfig files
- oe_runconf
- cd ${S}/taglib && rm -f Makefile* && qmake -project -o tag.pro -t lib && \
- qmake -spec ${QMAKESPEC} -after CONFIG=console INCLUDEPATH+=${S}
-}
-
-do_compile() {
- oe_runmake -C taglib
+do_postpatch() {
+ rm -rf patches && rm -rf .pc && mv -f debian/patches patches && quilt push -av
}
+addtask postpatch after do_patch before do_configure
-do_stage_append() {
- install -d ${STAGING_INCDIR}/taglib
- for i in `find taglib -name "*.h"`
- do
- install $i ${STAGING_INCDIR}/taglib/
- done
- for i in `find taglib -name "*.tcc"`
- do
- install $i ${STAGING_INCDIR}/taglib/
- done
- oe_libinstall -so -C taglib libtag ${STAGING_LIBDIR}
+do_stage() {
+ autotools_stage_all
}
-do_install() {
- install -d ${D}${libdir}
- oe_libinstall -so -C taglib libtag ${D}${libdir}
-}
+PACKAGES =+ "${PN}-c"
+FILES_${PN}-dbg += "${bindir}/taglib-config"
+FILES_${PN}-c = "${libdir}/libtag_c.so.*"
diff --git a/packages/taglib/taglibc_1.4.bb b/packages/taglib/taglibc_1.4.bb
deleted file mode 100644
index 1a3a702bb9..0000000000
--- a/packages/taglib/taglibc_1.4.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "TagLib is a library for reading and editing the meta-data \
-of several popular audio formats. Currently it supports both ID3v1 and ID3v2 \
-for MP3 files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC files"
-SECTION = "libs"
-HOMEPAGE = "http://developer.kde.org/~wheeler/taglib.html"
-DEPENDS = "taglib"
-LICENSE = "LGPL"
-
-SRC_URI = "http://developer.kde.org/~wheeler/files/src/taglib-${PV}.tar.gz"
-S = "${WORKDIR}/taglib-${PV}"
-
-inherit autotools qmake_base pkgconfig binconfig
-
-do_configure() {
- echo running oe_runconf to get pkgconfig and binconfig files created
- oe_runconf
- cd ${S}/bindings/c && rm -f Makefile* && qmake -project -o tag_c.pro -t lib && \
- qmake -spec ${QMAKESPEC} -after CONFIG=console INCLUDEPATH+=${STAGING_INCDIR}/taglib LIBS+=-ltag
-}
-
-do_compile() {
- oe_runmake -C bindings/c
-}
-
-do_stage_append() {
- install -d ${STAGING_INCDIR}/taglib
- install -m 0644 bindings/c/tag_c.h ${STAGING_INCDIR}
- oe_libinstall -so -C bindings/c libtag_c ${STAGING_LIBDIR}
-}
-
-do_install() {
- oe_libinstall -so -C bindings/c libtag_c ${D}${libdir}
-}
diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb
index 8f2f7935eb..77aa07de00 100644
--- a/packages/tasks/task-base.bb
+++ b/packages/tasks/task-base.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Merge machine and distro options to create a basic machine task/package"
-PR = "r57"
+PR = "r62"
inherit task
@@ -168,7 +168,8 @@ RRECOMMENDS_task-base-kernel26 = "\
kernel-module-rtc-dev \
kernel-module-rtc-proc \
kernel-module-rtc-sysfs \
- kernel-module-rtc-sa1100"
+ kernel-module-rtc-sa1100 \
+ kernel-module-unix"
RDEPENDS_task-base-keyboard = "\
keymaps"
@@ -344,6 +345,8 @@ RRECOMMENDS_task-base-wifi = "\
kernel-module-ieee80211-crypt-wep \
kernel-module-ecb \
kernel-module-arc4 \
+ kernel-module-crypto_algapi \
+ kernel-module-cryptomgr \
kernel-module-michael-mic \
kernel-module-aes"
diff --git a/packages/tasks/task-devimage.bb b/packages/tasks/task-devimage.bb
index 9da765ee94..f2d25e32ac 100644
--- a/packages/tasks/task-devimage.bb
+++ b/packages/tasks/task-devimage.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Image for development testing"
-PR = "r2"
+PR = "r4"
LICENSE = "MIT"
inherit task
@@ -19,8 +19,10 @@ RDEPENDS = "\
"
RRECOMMENDS = "\
+ kernel-image \
kernel-module-msdos \
kernel-module-vfat \
kernel-modules \
${DEVIMAGE_EXTRA_RRECOMMENDS} \
"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/tasks/task-java-gtk.bb b/packages/tasks/task-java-gtk.bb
new file mode 100644
index 0000000000..b4f75920f3
--- /dev/null
+++ b/packages/tasks/task-java-gtk.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Task package for Java GTK applications"
+PR = "r0"
+LICENSE = "MIT"
+
+inherit task
+
+RDEPENDS_${PN} = "\
+ classpath-awt \
+ librxtx-java \
+ librxtx-jni \
+ libswt3.4-gtk-java \
+ logic-analyzer \
+ "
diff --git a/packages/tasks/task-java.bb b/packages/tasks/task-java.bb
new file mode 100644
index 0000000000..be94662d40
--- /dev/null
+++ b/packages/tasks/task-java.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Base task package for Java"
+PR = "r2"
+LICENSE = "MIT"
+
+inherit task
+
+RDEPENDS_${PN} = "\
+ cacao \
+ classpath-awt \
+ java2-runtime \
+ librxtx-java \
+ "
diff --git a/packages/tasks/task-openmoko-python-devel.bb b/packages/tasks/task-openmoko-python-devel.bb
index 37d64847f6..a5baed0024 100644
--- a/packages/tasks/task-openmoko-python-devel.bb
+++ b/packages/tasks/task-openmoko-python-devel.bb
@@ -1,11 +1,12 @@
DESCRIPTION = "OpenMoko: Python Development Tools"
SECTION = "openmoko/devel"
LICENSE = "MIT"
-PR = "r1"
+PR = "r3"
inherit task
RDEPENDS_task-openmoko-python-devel = "\
- python-efl \
+ task-python-efl \
python-pygtk \
+ python-lightmediascanner \
"
diff --git a/packages/tasks/task-opie-all.bb b/packages/tasks/task-opie-all.bb
index 4666b4ab8d..5487985fd4 100644
--- a/packages/tasks/task-opie-all.bb
+++ b/packages/tasks/task-opie-all.bb
@@ -50,8 +50,7 @@ RDEPENDS_task-opie-settings = "opie-appearance opie-aqpkg opie-backup opie-butto
opie-formatter opie-language opie-launcher-settings \
opie-light-and-power opie-mediummount opie-networksettings \
opie-packagemanager opie-security opie-sshkeys opie-sysinfo \
- opie-systemtime opie-usermanager opie-icon-reload \
- opie-vmemo-settings"
+ opie-systemtime opie-icon-reload opie-vmemo-settings"
RDEPENDS_task-opie-pim = "task-opie-base-pim task-opie-todayplugins task-opie-datebookplugins \
opie-mail opie-pimconverter"
diff --git a/packages/tasks/task-python-efl-examples.bb b/packages/tasks/task-python-efl-examples.bb
new file mode 100644
index 0000000000..e78a4cabae
--- /dev/null
+++ b/packages/tasks/task-python-efl-examples.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Python Examples for the Enlightenment Foundation Libraries"
+LICENSE = "MIT"
+SECTION = "devel/python"
+RDEPENDS = "\
+ task-python-efl \
+ python-ecore-examples \
+ python-emotion-examples \
+ python-edje-examples \
+ python-epsilon-examples \
+ python-math python-textutils \
+"
+PR = "ml3"
+
+ALLOW_EMPTY = "1"
diff --git a/packages/tasks/task-python-efl.bb b/packages/tasks/task-python-efl.bb
new file mode 100644
index 0000000000..1c7f23a1eb
--- /dev/null
+++ b/packages/tasks/task-python-efl.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "Python Bindings to the Enlightenment Foundation Libraries"
+LICENSE = "MIT"
+SECTION = "devel/python"
+RDEPENDS = "python-evas python-ecore python-emotion python-edje python-epsilon python-edbus"
+PR = "ml2"
+
+ALLOW_EMPTY = "1"
diff --git a/packages/tasks/task-python-everything.bb b/packages/tasks/task-python-everything.bb
index 61daa7e089..18455f5b96 100644
--- a/packages/tasks/task-python-everything.bb
+++ b/packages/tasks/task-python-everything.bb
@@ -1,7 +1,7 @@
DESCRIPTION= "Everything Python"
HOMEPAGE = "http://www.vanille.de/projects/python.spy"
LICENSE = "MIT"
-PR = "ml24"
+PR = "ml26"
RDEPENDS = "\
python-ao \
@@ -30,6 +30,7 @@ RDEPENDS = "\
python-itools \
python-logilab-common \
python-libgmail \
+ python-lightmediascanner \
python-lxml \
python-mad \
python-numarray \
@@ -74,6 +75,7 @@ RDEPENDS = "\
python-soappy \
python-spydi \
python-spyro \
+ python-sqlalchemy \
python-sqlobject \
python-sword \
python-tlslite \
diff --git a/packages/tasks/task-qpe.bb b/packages/tasks/task-qpe.bb
index 347a4525b8..c13b5d48ef 100644
--- a/packages/tasks/task-qpe.bb
+++ b/packages/tasks/task-qpe.bb
@@ -136,7 +136,7 @@ RDEPENDS_task-qpe-fonts = "\
qpf-helvetica \
qpf-unifont \
qpf-utopia \
- terminus"
+ qpf-terminus"
RDEPENDS_task-qpe-settings += "\
qclockchange"
diff --git a/packages/tasks/task-slugos.bb b/packages/tasks/task-slugos.bb
index 4b8fde02c0..01cdaa21b4 100644
--- a/packages/tasks/task-slugos.bb
+++ b/packages/tasks/task-slugos.bb
@@ -6,7 +6,7 @@
DESCRIPTION = "Task packages for the SlugOS distribution"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r15"
+PR = "r17"
PACKAGE_ARCH = "${MACHINE_ARCH}"
ALLOW_EMPTY = "1"
@@ -67,6 +67,7 @@ kernel-module-ext3 \
kernel-module-vfat \
kernel-module-nls-cp437 \
kernel-module-nls-utf8 \
+kernel-module-nfs \
"
# Add daemon required for HW RNG support
@@ -84,8 +85,10 @@ kernel-module-uhci-hcd \
"
# Add modules required for IDE support
-# SLUGOS_STANDARD_RRECOMMENDS += "\
-# "
+SLUGOS_STANDARD_RRECOMMENDS += "\
+kernel-module-libata \
+kernel-module-pata-artop \
+"
# Add modules required for Network support
SLUGOS_STANDARD_RRECOMMENDS += "\
@@ -100,12 +103,9 @@ kernel-module-via-velocity \
#
# portmap \
# kexec-tools \
-# kernel-module-nfs \
# kernel-module-isofs \
# kernel-module-udf \
# kernel-module-loop \
-# kernel-module-libata \
-# kernel-module-pata-artop \
# kernel-module-netconsole \
# wpa-supplicant \
# zd1211-firmware kernel-module-zd1211rw \
diff --git a/packages/tcltk/tcl_8.4.11.bb b/packages/tcltk/tcl_8.4.11.bb
index 963bc30fc8..4bf3efd786 100644
--- a/packages/tcltk/tcl_8.4.11.bb
+++ b/packages/tcltk/tcl_8.4.11.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Tool Command Language"
LICENSE = "tcl"
SECTION = "devel/tcltk"
HOMEPAGE = "http://tcl.sourceforge.net"
-PR = "r5"
+PR = "r6"
SRC_URI = "${SOURCEFORGE_MIRROR}/tcl/tcl${PV}-src.tar.gz \
file://tcl-add-soname.patch;patch=1 \
@@ -27,6 +27,7 @@ do_stage() {
oe_libinstall -a libtclstub8.4 ${STAGING_LIBDIR}
oe_libinstall -so libtcl8.4 ${STAGING_LIBDIR}
sed -i "s+${WORKDIR}+${STAGING_INCDIR}+g" tclConfig.sh
+ sed -i "s,-L${libdir},," tclConfig.sh
install -d ${STAGING_BINDIR_CROSS}/
install -m 0755 tclConfig.sh ${STAGING_BINDIR_CROSS}
cd ..
diff --git a/packages/tcp-wrappers/tcp-wrappers_7.6.bb b/packages/tcp-wrappers/tcp-wrappers_7.6.bb
index dff7671583..047adc23a6 100644
--- a/packages/tcp-wrappers/tcp-wrappers_7.6.bb
+++ b/packages/tcp-wrappers/tcp-wrappers_7.6.bb
@@ -6,7 +6,7 @@ SECTION = "console/network"
PR="r1"
-PACKAGES = "libwrap libwrap-doc libwrap-dev tcp-wrappers tcp-wrappers-doc"
+PACKAGES = "${PN}-dbg libwrap libwrap-doc libwrap-dev tcp-wrappers tcp-wrappers-doc"
FILES_libwrap = "${libdir}/lib*.so.*"
FILES_libwrap-doc = "${mandir}/man3 ${mandir}/man5"
FILES_libwrap-dev = "${libdir}/lib*.so ${includedir}"
diff --git a/packages/telepathy/telepathy-mission-control_4.21.bb b/packages/telepathy/telepathy-mission-control_4.21.bb
index e604d8cea7..6d43b805bd 100644
--- a/packages/telepathy/telepathy-mission-control_4.21.bb
+++ b/packages/telepathy/telepathy-mission-control_4.21.bb
@@ -33,9 +33,9 @@ FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
-FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
-FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
-FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
+FILES_libmissioncontrol-dbg += "${libdir}/.debug/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config-dbg += "${libdir}/.debug/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server-dbg += "${libdir}/.debug/libmissioncontrol-server.so.*"
do_stage() {
autotools_stage_all
diff --git a/packages/telepathy/telepathy-mission-control_4.22.bb b/packages/telepathy/telepathy-mission-control_4.22.bb
index 2215d0a515..a0afbb068f 100644
--- a/packages/telepathy/telepathy-mission-control_4.22.bb
+++ b/packages/telepathy/telepathy-mission-control_4.22.bb
@@ -33,9 +33,9 @@ FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
-FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
-FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
-FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
+FILES_libmissioncontrol-dbg += "${libdir}/.debug/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config-dbg += "${libdir}/.debug/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server-dbg += "${libdir}/.debug/libmissioncontrol-server.so.*"
do_stage() {
autotools_stage_all
diff --git a/packages/telepathy/telepathy-mission-control_4.45.bb b/packages/telepathy/telepathy-mission-control_4.45.bb
index 2215d0a515..a0afbb068f 100644
--- a/packages/telepathy/telepathy-mission-control_4.45.bb
+++ b/packages/telepathy/telepathy-mission-control_4.45.bb
@@ -33,9 +33,9 @@ FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
-FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
-FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
-FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
+FILES_libmissioncontrol-dbg += "${libdir}/.debug/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config-dbg += "${libdir}/.debug/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server-dbg += "${libdir}/.debug/libmissioncontrol-server.so.*"
do_stage() {
autotools_stage_all
diff --git a/packages/termcap/termcap_11.0.1.bb b/packages/termcap/termcap_11.0.1.bb
index 81953021e0..ebb3791430 100644
--- a/packages/termcap/termcap_11.0.1.bb
+++ b/packages/termcap/termcap_11.0.1.bb
@@ -11,6 +11,6 @@ do_install() {
install -m 0644 termtypes.tc ${D}${sysconfdir}/termcap
}
-PACKAGES = "termcap"
+PACKAGES = "${PN}-dbg termcap"
FILES_termcap = "${sysconfdir}"
diff --git a/packages/tetex/tetex-texmf_3.0.bb b/packages/tetex/tetex-texmf_3.0.bb
index 7405713d22..80d6f779d8 100644
--- a/packages/tetex/tetex-texmf_3.0.bb
+++ b/packages/tetex/tetex-texmf_3.0.bb
@@ -38,7 +38,7 @@ RRECOMMENDS_${PN} = " \
tetex-texmf-texdoctk \
tetex-texmf-web2c "
-PACKAGES = "tetex-texmf \
+PACKAGES = "${PN}-dbg tetex-texmf \
tetex-texmf-bibtex \
tetex-texmf-context \
tetex-texmf-texdoc \
diff --git a/packages/tmake/tmake_1.11.bb b/packages/tmake/tmake_1.11.bb
index a0f7222904..9d1ecd1a2a 100644
--- a/packages/tmake/tmake_1.11.bb
+++ b/packages/tmake/tmake_1.11.bb
@@ -23,6 +23,6 @@ do_install() {
cp -R lib/* ${D}${datadir}/tmake/
}
-PACKAGES = "tmake"
+PACKAGES = "${PN}-dbg tmake"
FILES = ""
FILES_tmake="${bindir} ${datadir}/tmake"
diff --git a/packages/tn5250/tn5250_0.16.5.bb b/packages/tn5250/tn5250_0.16.5.bb
index 26c9100f74..258064f90b 100644
--- a/packages/tn5250/tn5250_0.16.5.bb
+++ b/packages/tn5250/tn5250_0.16.5.bb
@@ -11,7 +11,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/tn5250/tn5250-${PV}.tar.gz \
inherit autotools
-PACKAGES = "lib5250-0 tn5250-dev tn5250-doc tn5250"
+PACKAGES = "${PN}-dbg lib5250-0 tn5250-dev tn5250-doc tn5250"
FILES_${PN} = "${bindir}/tn5250"
FILES_lib5250-0 = "${libdir}/lib*.so.*"
AUTO_LIBNAME_PKGS = "lib5250"
diff --git a/packages/tslib/tslib-1.0/ts.conf b/packages/tslib/tslib-1.0/ts.conf
deleted file mode 100644
index 1abde2fc7f..0000000000
--- a/packages/tslib/tslib-1.0/ts.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-# Uncomment if you wish to use the linux input layer event interface
-module_raw input grab_events=0
-
-# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
-# module_raw collie
-
-# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
-# module_raw corgi
-
-# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
-# module_raw ucb1x00
-
-# Uncomment if you're using an HP iPaq h3600 or similar
-# module_raw h3600
-
-# Uncomment if you're using a Hitachi Webpad
-# module_raw mk712
-
-# Uncomment if you're using an IBM Arctic II
-# module_raw arctic2
-
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/packages/x11vnc/.mtn2git_empty b/packages/tslib/tslib/bd-neon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/x11vnc/.mtn2git_empty
+++ b/packages/tslib/tslib/bd-neon/.mtn2git_empty
diff --git a/packages/tslib/tslib-1.0/bd-neon/ts.conf b/packages/tslib/tslib/bd-neon/ts.conf
index 15fe294ce6..15fe294ce6 100644
--- a/packages/tslib/tslib-1.0/bd-neon/ts.conf
+++ b/packages/tslib/tslib/bd-neon/ts.conf
diff --git a/packages/tslib/tslib-1.0/bd-neon/tslib.sh b/packages/tslib/tslib/bd-neon/tslib.sh
index b5f1c906f3..b5f1c906f3 100644
--- a/packages/tslib/tslib-1.0/bd-neon/tslib.sh
+++ b/packages/tslib/tslib/bd-neon/tslib.sh
diff --git a/packages/xorg-lib/diet-x11/.mtn2git_empty b/packages/tslib/tslib/fic-gta01/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/diet-x11/.mtn2git_empty
+++ b/packages/tslib/tslib/fic-gta01/.mtn2git_empty
diff --git a/packages/tslib/tslib-1.0/fic-gta01/ts.conf b/packages/tslib/tslib/fic-gta01/ts.conf
index 82f712ef41..82f712ef41 100644
--- a/packages/tslib/tslib-1.0/fic-gta01/ts.conf
+++ b/packages/tslib/tslib/fic-gta01/ts.conf
diff --git a/packages/tslib/tslib/ts.conf b/packages/tslib/tslib/ts.conf
index 1b0da937e8..1abde2fc7f 100644
--- a/packages/tslib/tslib/ts.conf
+++ b/packages/tslib/tslib/ts.conf
@@ -1,5 +1,5 @@
# Uncomment if you wish to use the linux input layer event interface
-module_raw input
+module_raw input grab_events=0
# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
# module_raw collie
diff --git a/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch b/packages/tslib/tslib/tslib-input_raw-grab_events.patch
index 4bd0a05531..4bd0a05531 100644
--- a/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch
+++ b/packages/tslib/tslib/tslib-input_raw-grab_events.patch
diff --git a/packages/ttf-fonts/ttf-bitstream-vera_1.10.bb b/packages/ttf-fonts/ttf-bitstream-vera_1.10.bb
index 871bc1d37c..6ddfa7aac0 100644
--- a/packages/ttf-fonts/ttf-bitstream-vera_1.10.bb
+++ b/packages/ttf-fonts/ttf-bitstream-vera_1.10.bb
@@ -1,10 +1,8 @@
+require ttf.inc
+
DESCRIPTION = "The Bitstream Vera fonts - TTF Edition"
-SECTION = "x11/fonts"
-PRIORITY = "optional"
LICENSE = "Bitstream Vera"
-PACKAGE_ARCH = "all"
-PR = "r3"
-RDEPENDS = "fontconfig-utils"
+PR = "r4"
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-${PV}.tar.bz2"
@@ -25,10 +23,4 @@ do_install () {
done
}
-pkg_postinst () {
-#!/bin/sh
-fc-cache
-}
-
-
FILES_${PN} = "/etc ${datadir}/fonts"
diff --git a/packages/ttf-fonts/ttf-dejavu_2.18.bb b/packages/ttf-fonts/ttf-dejavu_2.18.bb
deleted file mode 100644
index 17339e8d8e..0000000000
--- a/packages/ttf-fonts/ttf-dejavu_2.18.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "DejaVu font - TTF Edition"
-LICENSE = "Bitstream Vera"
-HOMEPAGE = "http://dejavu.sourceforge.net/wiki/index.php/Main_Page"
-RDEPENDS = "ttf-dejavu-common"
-RDEPENDS_ttf-dejavu-common = ""
-PR = "r1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-ttf-${PV}.tar.bz2 \
- file://30-dejavu-aliases.conf"
-
-require ttf.inc
-
-S = "${WORKDIR}/dejavu-ttf-${PV}"
-
-do_install_append () {
- install -d ${D}${sysconfdir}/fonts/conf.d/
- install -m 0644 ${WORKDIR}/30-dejavu-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
-}
-
-PACKAGES = "ttf-dejavu-sans ttf-dejavu-sans-mono ttf-dejavu-sans-condensed \
- ttf-dejavu-serif ttf-dejavu-serif-condensed ttf-dejavu-common"
-
-FILES_ttf-dejavu-sans = "${datadir}/fonts/truetype/DejaVuSans.ttf ${datadir}/fonts/truetype/DejaVuSans-*.ttf"
-FILES_ttf-dejavu-sans-mono = "${datadir}/fonts/truetype/DejaVuSansMono*.ttf"
-FILES_ttf-dejavu-sans-condensed = "${datadir}/fonts/truetype/DejaVuSansCondensed*.ttf"
-FILES_ttf-dejavu-serif = "${datadir}/fonts/truetype/DejaVuSerif.ttf ${datadir}/fonts/truetype/DejaVuSerif-*.ttf"
-FILES_ttf-dejavu-serif-condensed = "${datadir}/fonts/truetype/DejaVuSerifCondensed*.ttf"
-FILES_ttf-dejavu-common = "${sysconfdir}"
diff --git a/packages/ttf-fonts/ttf-dejavu_2.23.bb b/packages/ttf-fonts/ttf-dejavu_2.23.bb
new file mode 100644
index 0000000000..fe291163fc
--- /dev/null
+++ b/packages/ttf-fonts/ttf-dejavu_2.23.bb
@@ -0,0 +1,28 @@
+require ttf.inc
+
+DESCRIPTION = "DejaVu font - TTF Edition"
+HOMEPAGE = "http://dejavu.sourceforge.net/wiki/"
+LICENSE = "Bitstream Vera"
+RDEPENDS = "ttf-dejavu-common"
+RDEPENDS_ttf-dejavu-common = ""
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-fonts-ttf-${PV}.tar.bz2 \
+ file://30-dejavu-aliases.conf"
+
+S = "${WORKDIR}/dejavu-fonts-ttf-${PV}/ttf"
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/fonts/conf.d/
+ install -m 0644 ${WORKDIR}/30-dejavu-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
+}
+
+PACKAGES = "${PN}-dbg ttf-dejavu-sans ttf-dejavu-sans-mono ttf-dejavu-sans-condensed \
+ ttf-dejavu-serif ttf-dejavu-serif-condensed ttf-dejavu-common"
+RRECOMMENDS_${PN}-dbg = ""
+
+FILES_ttf-dejavu-sans = "${datadir}/fonts/truetype/DejaVuSans.ttf ${datadir}/fonts/truetype/DejaVuSans-*.ttf"
+FILES_ttf-dejavu-sans-mono = "${datadir}/fonts/truetype/DejaVuSansMono*.ttf"
+FILES_ttf-dejavu-sans-condensed = "${datadir}/fonts/truetype/DejaVuSansCondensed*.ttf"
+FILES_ttf-dejavu-serif = "${datadir}/fonts/truetype/DejaVuSerif.ttf ${datadir}/fonts/truetype/DejaVuSerif-*.ttf"
+FILES_ttf-dejavu-serif-condensed = "${datadir}/fonts/truetype/DejaVuSerifCondensed*.ttf"
+FILES_ttf-dejavu-common = "${sysconfdir}"
diff --git a/packages/ttf-fonts/ttf-gentium_1.02.bb b/packages/ttf-fonts/ttf-gentium_1.02.bb
index 5bedf5aafc..bf2a416e08 100644
--- a/packages/ttf-fonts/ttf-gentium_1.02.bb
+++ b/packages/ttf-fonts/ttf-gentium_1.02.bb
@@ -1,13 +1,14 @@
+require ttf.inc
+
DESCRIPTION = "Gentium fonts - TTF Version"
-LICENSE = "SIL Open Font License"
HOMEPAGE = "http://scripts.sil.org/gentium"
+LICENSE = "SIL Open Font License"
LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL"
+PR = "r1"
SRC_URI = "${DEBIAN_MIRROR}/main/t/ttf-gentium/ttf-gentium_${PV}.orig.tar.gz \
file://OFL.gz"
-require ttf.inc
-
S = "${WORKDIR}/ttf-sil-gentium-${PV}"
do_install_append() {
@@ -20,8 +21,7 @@ do_install_append() {
}
-
-PACKAGES = "${PN} ${PN}-alt"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-alt"
FILES_ttf-gentium-alt = "${datadir}/fonts/truetype/GenAI*.ttf \
${datadir}/fonts/truetype/GenAR*.ttf \
diff --git a/packages/ttf-fonts/ttf-hunkyfonts_0.3.0.bb b/packages/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
index f81097c22f..a3126c00d3 100644
--- a/packages/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
+++ b/packages/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
@@ -1,15 +1,15 @@
+require ttf.inc
+
DESCRIPTION = "Hunky fonts - TTF Version"
-LICENSE = "LGPL"
HOMEPAGE = "http://sourceforge.net/projects/hunkyfonts"
-PR = "r0"
+LICENSE = "LGPL"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/hunkyfonts/hunkyfonts-${PV}.tar.bz2"
S = "${WORKDIR}/hunkyfonts-${PV}/TTF/"
-require ttf.inc
-
-PACKAGES = "ttf-hunky-sans ttf-hunky-serif"
-
+PACKAGES = "${PN}-dbg ttf-hunky-sans ttf-hunky-serif"
+RRECOMMENDS_${PN}-dbg = ""
FILES_ttf-hunky-sans = "${datadir}/fonts/truetype/HunkySans*.ttf"
FILES_ttf-hunky-serif = "${datadir}/fonts/truetype/HunkySerif*.ttf"
diff --git a/packages/ttf-fonts/ttf-liberation_0.2.bb b/packages/ttf-fonts/ttf-liberation_0.2.bb
index 94b4012d3e..048d43c1c8 100644
--- a/packages/ttf-fonts/ttf-liberation_0.2.bb
+++ b/packages/ttf-fonts/ttf-liberation_0.2.bb
@@ -1,13 +1,16 @@
+require ttf.inc
+
DESCRIPTION = "Liberation fonts - TTF Version"
-LICENSE = "Liberation"
HOMEPAGE = "https://www.redhat.com/promo/fonts/"
-
-require ttf.inc
+LICENSE = "Liberation"
+PR = "r1"
SRC_URI = "http://www.redhat.com/f/fonts/liberation-fonts-ttf-3.tar.gz"
S = "${WORKDIR}/liberation-fonts-${PV}"
-PACKAGES = "ttf-liberation-mono ttf-liberation-sans ttf-liberation-serif"
+PACKAGES = "${PN}-dbg ttf-liberation-mono ttf-liberation-sans ttf-liberation-serif"
+RRECOMMENDS_${PN}-dbg = ""
+
FILES_ttf-liberation-mono = "${datadir}/fonts/truetype/*Mono*"
FILES_ttf-liberation-sans = "${datadir}/fonts/truetype/*Sans*"
FILES_ttf-liberation-serif = "${datadir}/fonts/truetype/*Serif*"
diff --git a/packages/ttf-fonts/ttf-sazanami_20040629.bb b/packages/ttf-fonts/ttf-sazanami_20040629.bb
index a51036155d..8cf46ae82d 100644
--- a/packages/ttf-fonts/ttf-sazanami_20040629.bb
+++ b/packages/ttf-fonts/ttf-sazanami_20040629.bb
@@ -8,12 +8,13 @@ HOMEPAGE = "http://sourceforge.jp/projects/efont/"
LICENSE = "${PN}"
SRC_DISTRIBUTE_LICENSES += "${PN}"
RPROVIDES = "virtual/japanese-font"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://download.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2"
S = "${WORKDIR}/sazanami-20040629"
-PACKAGES = "ttf-sazanami-gothic ttf-sazanami-mincho"
+PACKAGES = "${PN}-dbg ttf-sazanami-gothic ttf-sazanami-mincho"
+RRECOMMENDS_${PN}-dbg = ""
FILES_ttf-sazanami-gothic = "${datadir}/fonts/truetype/sazanami-gothic.ttf \
${datadir}/doc/ttf-sazanami-gothic/README"
FILES_ttf-sazanami-mincho = "${datadir}/fonts/truetype/sazanami-mincho.ttf \
diff --git a/packages/ttf-fonts/ttf.inc b/packages/ttf-fonts/ttf.inc
index e0d1dd6a54..00363c565f 100644
--- a/packages/ttf-fonts/ttf.inc
+++ b/packages/ttf-fonts/ttf.inc
@@ -1,18 +1,18 @@
SECTION = "fonts"
PRIORITY = "optional"
-PACKAGE_ARCH = "all"
-#DEPENDS = "fontconfig opie-ttf-support"
-#RSUGGESTS = "fontconfig-utils opie-ttf-support"
-
-# I dont want TTF fonts to depend on fontconfig on device
-# as those fonts are used not only in X11 enviroment
+RRECOMMENDS += "font-update-common"
do_install() {
install -d ${D}${datadir}/fonts/truetype/
install -m 0644 ${S}/*.ttf ${D}${datadir}/fonts/truetype/
}
-#pkg_postinst () {
-##!/bin/sh
-#fc-cache
-#}
+pkg_postinst_append() {
+ update-fonts
+}
+
+pkg_postrm_append() {
+ update-fonts
+}
+
+PACKAGE_ARCH = "all"
diff --git a/packages/twisted/twisted_2.5.0.bb b/packages/twisted/twisted_2.5.0.bb
index c7620e4b84..774deb9c22 100644
--- a/packages/twisted/twisted_2.5.0.bb
+++ b/packages/twisted/twisted_2.5.0.bb
@@ -175,6 +175,6 @@ ${libdir}/python2.4/site-packages/twisted/plugins/twisted_words.py \
${libdir}/python2.4/site-packages/twisted/words\
"
-FILES_python-twisted-runner-dbg = " \
+FILES_python-twisted-runner-dbg += " \
${libdir}/python2.4/site-packages/twisted/runner/.debug"
diff --git a/packages/tzdata/tzdata_2007k.bb b/packages/tzdata/tzdata_2007k.bb
index d873bfd0d6..2fbe9ac884 100644
--- a/packages/tzdata/tzdata_2007k.bb
+++ b/packages/tzdata/tzdata_2007k.bb
@@ -42,7 +42,7 @@ do_install () {
# Packages primarily organized by directory with a major city
# in most time zones in the base package
-PACKAGES = "tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
+PACKAGES = "${PN}-dbg tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific"
diff --git a/packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch b/packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch
index ed959d43d8..3809a75f51 100644
--- a/packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch
+++ b/packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch
@@ -19060,55 +19060,6 @@ diff -u -r --new-file u-boot-1.1.2/patches/arm_flags.patch u-boot-1.1.2-neon/pat
++ -msoft-float
+
+ PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4 -mtune=strongarm1100
-diff -u -r --new-file u-boot-1.1.2/patches/series u-boot-1.1.2-neon/patches/series
---- u-boot-1.1.2/patches/series 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.1.2-neon/patches/series 2007-08-11 21:01:36.000000000 +0200
-@@ -0,0 +1,2 @@
-+arm_flags.patch -p1
-+u-boot-2006-06-03.patch.gz -p1
-Binary files u-boot-1.1.2/patches/u-boot-2006-06-03.patch.gz and u-boot-1.1.2-neon/patches/u-boot-2006-06-03.patch.gz differ
-diff -u -r --new-file u-boot-1.1.2/.pc/applied-patches u-boot-1.1.2-neon/.pc/applied-patches
---- u-boot-1.1.2/.pc/applied-patches 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.1.2-neon/.pc/applied-patches 2007-08-11 21:01:36.000000000 +0200
-@@ -0,0 +1 @@
-+arm_flags.patch
-diff -u -r --new-file u-boot-1.1.2/.pc/arm_flags.patch/cpu/pxa/config.mk u-boot-1.1.2-neon/.pc/arm_flags.patch/cpu/pxa/config.mk
---- u-boot-1.1.2/.pc/arm_flags.patch/cpu/pxa/config.mk 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.1.2-neon/.pc/arm_flags.patch/cpu/pxa/config.mk 2003-05-23 14:36:21.000000000 +0200
-@@ -0,0 +1,28 @@
-+#
-+# (C) Copyright 2002
-+# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+# Marius Groeger <mgroeger@sysgo.de>
-+#
-+# See file CREDITS for list of people who contributed to this
-+# project.
-+#
-+# 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
-+#
-+
-+PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
-+ -mshort-load-bytes -msoft-float
-+
-+PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4 -mtune=strongarm1100
-diff -u -r --new-file u-boot-1.1.2/.pc/.version u-boot-1.1.2-neon/.pc/.version
---- u-boot-1.1.2/.pc/.version 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.1.2-neon/.pc/.version 2007-08-11 21:01:36.000000000 +0200
-@@ -0,0 +1 @@
-+2
diff -u -r --new-file u-boot-1.1.2/README u-boot-1.1.2-neon/README
--- u-boot-1.1.2/README 2004-12-16 22:44:03.000000000 +0100
+++ u-boot-1.1.2-neon/README 2007-08-11 21:07:19.000000000 +0200
diff --git a/packages/xorg-lib/files/.mtn2git_empty b/packages/u-boot/u-boot-1.3.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/files/.mtn2git_empty
+++ b/packages/u-boot/u-boot-1.3.1/.mtn2git_empty
diff --git a/packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-autoboot.patch b/packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-autoboot.patch
new file mode 100644
index 0000000000..ffca5a35c7
--- /dev/null
+++ b/packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-autoboot.patch
@@ -0,0 +1,12 @@
+diff -urN u-boot-1.3.1.orig/include/configs/MPC8313ERDB.h u-boot-1.3.1/include/configs/MPC8313ERDB.h
+--- u-boot-1.3.1.orig/include/configs/MPC8313ERDB.h 2007-12-06 10:21:19.000000000 +0100
++++ u-boot-1.3.1/include/configs/MPC8313ERDB.h 2008-01-31 17:38:10.000000000 +0100
+@@ -522,7 +522,7 @@
+ #define CONFIG_FDTFILE mpc8313erdb.dtb
+
+ #define CONFIG_LOADADDR 200000 /* default location for tftp and bootm */
+-#define CONFIG_BOOTDELAY -1 /* -1 disables auto-boot */
++#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
+ #define CONFIG_BAUDRATE 115200
+
+ #define XMK_STR(x) #x
diff --git a/packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-nand.patch b/packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-nand.patch
new file mode 100644
index 0000000000..e653b75fb9
--- /dev/null
+++ b/packages/u-boot/u-boot-1.3.1/mpc8313e-rdb-nand.patch
@@ -0,0 +1,895 @@
+diff -urN u-boot-1.3.1.orig/board/freescale/mpc8313erdb/Makefile u-boot-1.3.1/board/freescale/mpc8313erdb/Makefile
+--- u-boot-1.3.1.orig/board/freescale/mpc8313erdb/Makefile 2007-12-06 10:21:19.000000000 +0100
++++ u-boot-1.3.1/board/freescale/mpc8313erdb/Makefile 2008-01-31 17:35:43.000000000 +0100
+@@ -25,7 +25,7 @@
+
+ LIB = $(obj)lib$(BOARD).a
+
+-COBJS := $(BOARD).o sdram.o
++COBJS := $(BOARD).o sdram.o nand.o
+
+ SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS := $(addprefix $(obj),$(COBJS))
+diff -urN u-boot-1.3.1.orig/board/freescale/mpc8313erdb/nand.c u-boot-1.3.1/board/freescale/mpc8313erdb/nand.c
+--- u-boot-1.3.1.orig/board/freescale/mpc8313erdb/nand.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.3.1/board/freescale/mpc8313erdb/nand.c 2008-01-31 17:35:26.000000000 +0100
+@@ -0,0 +1,868 @@
++/*
++ * Copyright (C) Freescale Semiconductor, Inc. 2006.
++ *
++ * Initialized by Nick.Spence@freescale.com
++ * Wilson.Lo@freescale.com
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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
++ */
++
++#include <common.h>
++
++#if defined(CONFIG_CMD_NAND)
++#if defined(CFG_NAND_LEGACY)
++ #error "U-Boot legacy NAND commands not supported."
++#else
++
++#include <malloc.h>
++#include <asm/errno.h>
++#include <nand.h>
++
++#undef CFG_FCM_DEBUG
++#define CFG_FCM_DEBUG_LVL 1
++#ifdef CFG_FCM_DEBUG
++#define FCM_DEBUG(n, args...) \
++ do { \
++ if (n <= (CFG_FCM_DEBUG_LVL + 0)) \
++ printf(args); \
++ } while(0)
++#else /* CONFIG_FCM_DEBUG */
++#define FCM_DEBUG(n, args...) do { } while(0)
++#endif
++
++#define MIN(x, y) ((x < y) ? x : y)
++
++#define ERR_BYTE 0xFF /* Value returned for read bytes when read failed */
++
++#define FCM_TIMEOUT_USECS 100000 /* Maximum number of uSecs to wait for FCM */
++
++/* Private structure holding NAND Flash device specific information */
++struct fcm_nand {
++ int bank; /* Chip select bank number */
++ unsigned int base; /* Chip select base address */
++ int pgs; /* NAND page size */
++ int oobbuf; /* Pointer to OOB block */
++ unsigned int page; /* Last page written to / read from */
++ unsigned int fmr; /* FCM Flash Mode Register value */
++ unsigned int mdr; /* UPM/FCM Data Register value */
++ unsigned int use_mdr; /* Non zero if the MDR is to be set */
++ u_char *addr; /* Address of assigned FCM buffer */
++ unsigned int read_bytes; /* Number of bytes read during command */
++ unsigned int index; /* Pointer to next byte to 'read' */
++ unsigned int req_bytes; /* Number of bytes read if command ok */
++ unsigned int req_index; /* New read index if command ok */
++ unsigned int status; /* status read from LTESR after last op*/
++};
++
++
++/* These map to the positions used by the FCM hardware ECC generator */
++
++/* Small Page FLASH with FMR[ECCM] = 0 */
++static struct nand_oobinfo fcm_oob_sp_eccm0 = { /* TODO */
++ .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 3,
++ .eccpos = {6, 7, 8},
++ .oobfree = { {0, 5}, {9, 7} }
++};
++
++/* Small Page FLASH with FMR[ECCM] = 1 */
++static struct nand_oobinfo fcm_oob_sp_eccm1 = { /* TODO */
++ .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 3,
++ .eccpos = {8, 9, 10},
++ .oobfree = { {0, 5}, {6, 2}, {11, 5} }
++};
++
++/* Large Page FLASH with FMR[ECCM] = 0 */
++static struct nand_oobinfo fcm_oob_lp_eccm0 = {
++ .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 12,
++ .eccpos = {6, 7, 8, 22, 23, 24, 38, 39, 40, 54, 55, 56},
++ .oobfree = { {1, 5}, {9, 13}, {25, 13}, {41, 13}, {57, 7} }
++};
++
++/* Large Page FLASH with FMR[ECCM] = 1 */
++static struct nand_oobinfo fcm_oob_lp_eccm1 = {
++ .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
++ .eccbytes = 12,
++ .eccpos = {8, 9, 10, 24, 25, 26, 40, 41, 42, 56, 57, 58},
++ .oobfree = { {1, 7}, {11, 13}, {27, 13}, {43, 13}, {59, 5} }
++};
++
++/*
++ * execute FCM command and wait for it to complete
++ */
++static int fcm_run_command(struct mtd_info *mtd)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++ long long end_tick;
++
++ /* Setup the FMR[OP] to execute without write protection */
++ lbc->fmr = fcm->fmr | 3;
++ if (fcm->use_mdr)
++ lbc->mdr = fcm->mdr;
++
++ FCM_DEBUG(5,"fcm_run_command: fmr= %08X fir= %08X fcr= %08X\n",
++ lbc->fmr, lbc->fir, lbc->fcr);
++ FCM_DEBUG(5,"fcm_run_command: fbar=%08X fpar=%08X fbcr=%08X bank=%d\n",
++ lbc->fbar, lbc->fpar, lbc->fbcr, fcm->bank);
++
++ /* clear event registers */
++ lbc->lteatr = 0;
++ lbc->ltesr |= (LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ /* execute special operation */
++ lbc->lsor = fcm->bank;
++
++ /* wait for FCM complete flag or timeout */
++ fcm->status = 0;
++ end_tick = usec2ticks(FCM_TIMEOUT_USECS) + get_ticks();
++
++ while (end_tick > get_ticks()) {
++ if (lbc->ltesr & LTESR_CC) {
++ fcm->status = lbc->ltesr &
++ (LTESR_FCT | LTESR_PAR | LTESR_CC);
++ break;
++ }
++ }
++
++ /* store mdr value in case it was needed */
++ if (fcm->use_mdr)
++ fcm->mdr = lbc->mdr;
++
++ fcm->use_mdr = 0;
++
++ FCM_DEBUG(5,"fcm_run_command: stat=%08X mdr= %08X fmr= %08X\n",
++ fcm->status, fcm->mdr, lbc->fmr);
++
++ /* if the operation completed ok then set the read buffer pointers */
++ if (fcm->status == LTESR_CC) {
++ fcm->read_bytes = fcm->req_bytes;
++ fcm->index = fcm->req_index;
++ return 0;
++ }
++
++ return -1;
++}
++
++/*
++ * Set up the FCM hardware block and page address fields, and the fcm
++ * structure addr field to point to the correct FCM buffer in memory
++ */
++static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++ int buf_num;
++
++ fcm->page = page_addr;
++
++ lbc->fbar = page_addr >> (this->phys_erase_shift - this->page_shift);
++ if (fcm->pgs) {
++ lbc->fpar = ((page_addr << FPAR_LP_PI_SHIFT) & FPAR_LP_PI) |
++ ( oob ? FPAR_LP_MS : 0) |
++ column;
++ buf_num = (page_addr & 1) << 2;
++ } else {
++ lbc->fpar = ((page_addr << FPAR_SP_PI_SHIFT) & FPAR_SP_PI) |
++ ( oob ? FPAR_SP_MS : 0) |
++ column;
++ buf_num = page_addr & 7;
++ }
++ fcm->addr = (unsigned char*)(fcm->base + (buf_num * 1024));
++
++ /* for OOB data point to the second half of the buffer */
++ if (oob) {
++ fcm->addr += (fcm->pgs ? 2048 : 512);
++ }
++}
++
++/* not required for FCM */
++static void fcm_hwcontrol(struct mtd_info *mtdinfo, int cmd)
++{
++ return;
++}
++
++
++/*
++ * FCM does not support 16 bit data busses
++ */
++static u16 fcm_read_word(struct mtd_info *mtd)
++{
++ printf("fcm_read_word: UNIMPLEMENTED.\n");
++ return 0;
++}
++static void fcm_write_word(struct mtd_info *mtd, u16 word)
++{
++ printf("fcm_write_word: UNIMPLEMENTED.\n");
++}
++
++/*
++ * Write buf to the FCM Controller Data Buffer
++ */
++static void fcm_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++
++ FCM_DEBUG(3,"fcm_write_buf: writing %d bytes starting with 0x%x"
++ " at %d.\n", len, *((unsigned long*) buf), fcm->index);
++
++ /* If armed catch the address of the OOB buffer so that it can be */
++ /* updated with the real signature after the program comletes */
++ if (!fcm->oobbuf)
++ fcm->oobbuf = (int) buf;
++
++ /* copy the data into the FCM hardware buffer and update the index */
++ memcpy(&(fcm->addr[fcm->index]), buf, len);
++ fcm->index += len;
++ return;
++}
++
++
++/*
++ * FCM does not support individual writes. Instead these are either commands
++ * or data being written, both of which are handled through the cmdfunc
++ * handler.
++ */
++static void fcm_write_byte(struct mtd_info *mtd, u_char byte)
++{
++ printf("fcm_write_byte: UNIMPLEMENTED.\n");
++}
++
++/*
++ * read a byte from either the FCM hardware buffer if it has any data left
++ * otherwise issue a command to read a single byte.
++ */
++static u_char fcm_read_byte(struct mtd_info *mtd)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++ unsigned char byte;
++
++ /* If there are still bytes in the FCM then use the next byte */
++ if(fcm->index < fcm->read_bytes) {
++ byte = fcm->addr[(fcm->index)++];
++ FCM_DEBUG(4,"fcm_read_byte: byte %u (%02X): %d of %d.\n",
++ byte, byte, fcm->index-1, fcm->read_bytes);
++ } else {
++ /* otherwise issue a command to read 1 byte */
++ lbc->fir = (FIR_OP_RSW << FIR_OP0_SHIFT);
++ fcm->use_mdr = 1;
++ fcm->read_bytes = 0;
++ fcm->index = 0;
++ fcm->req_bytes = 0;
++ fcm->req_index = 0;
++ byte = fcm_run_command(mtd) ? ERR_BYTE : fcm->mdr & 0xff;
++ FCM_DEBUG(4,"fcm_read_byte: byte %u (%02X) from bus.\n",
++ byte, byte);
++ }
++
++ return byte;
++}
++
++
++/*
++ * Read from the FCM Controller Data Buffer
++ */
++static void fcm_read_buf(struct mtd_info *mtd, u_char* buf, int len)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++ int i;
++ int rest;
++
++ FCM_DEBUG(3,"fcm_read_buf: reading %d bytes.\n", len);
++
++ /* If last read failed then return error bytes */
++ if (fcm->status != LTESR_CC) {
++ /* just keep copying bytes so that the oob works */
++ memcpy(buf, &(fcm->addr[(fcm->index)]), len);
++ fcm->index += len;
++ }
++ else
++ {
++ /* see how much is still in the FCM buffer */
++ i = min(len, (fcm->read_bytes - fcm->index));
++ rest = i - len;
++ len = i;
++
++ memcpy(buf, &(fcm->addr[(fcm->index)]), len);
++ fcm->index += len;
++
++ /* If more data is needed then issue another block read */
++ if (rest) {
++ FCM_DEBUG(3,"fcm_read_buf: getting %d more bytes.\n",
++ rest);
++ buf += len;
++ lbc->fir = (FIR_OP_RBW << FIR_OP0_SHIFT);
++ set_addr(mtd, 0, 0, 0);
++ lbc->fbcr = rest;
++ fcm->req_bytes = lbc->fbcr;
++ fcm->req_index = 0;
++ fcm->use_mdr = 0;
++ if (!fcm_run_command(mtd))
++ fcm_read_buf(mtd, buf, rest);
++ else
++ memcpy(buf, fcm->addr, rest);
++ }
++ }
++ return;
++}
++
++
++/*
++ * Verify buffer against the FCM Controller Data Buffer
++ */
++static int fcm_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++ int i;
++ int rest;
++
++ FCM_DEBUG(3,"fcm_verify_buf: checking %d bytes starting with 0x%02x.\n",
++ len, *((unsigned long*) buf));
++ /* If last read failed then return error bytes */
++ if (fcm->status != LTESR_CC) {
++ return EFAULT;
++ }
++
++ /* see how much is still in the FCM buffer */
++ i = min(len, (fcm->read_bytes - fcm->index));
++ rest = i - len;
++ len = i;
++
++ if (memcmp(buf, &(fcm->addr[(fcm->index)]), len)) {
++ return EFAULT;
++ }
++
++ fcm->index += len;
++ if (rest) {
++ FCM_DEBUG(3,"fcm_verify_buf: getting %d more bytes.\n", rest);
++ buf += len;
++ lbc->fir = (FIR_OP_RBW << FIR_OP0_SHIFT);
++ set_addr(mtd, 0, 0, 0);
++ lbc->fbcr = rest;
++ fcm->req_bytes = lbc->fbcr;
++ fcm->req_index = 0;
++ fcm->use_mdr = 0;
++ if (fcm_run_command(mtd))
++ return EFAULT;
++ return fcm_verify_buf(mtd, buf, rest);
++
++ }
++ return 0;
++}
++
++/* this function is called after Program and Erase Operations to
++ * check for success or failure */
++static int fcm_wait(struct mtd_info *mtd, struct nand_chip *this, int state)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ struct fcm_nand *fcm = this->priv;
++
++ if (fcm->status != LTESR_CC) {
++ return(0x1); /* Status Read error */
++ }
++
++ /* Use READ_STATUS command, but wait for the device to be ready */
++ fcm->use_mdr = 0;
++ fcm->req_index = 0;
++ fcm->read_bytes = 0;
++ fcm->index = 0;
++ fcm->oobbuf = -1;
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_RBW << FIR_OP1_SHIFT);
++ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
++ set_addr(mtd, 0, 0, 0);
++ lbc->fbcr = 1;
++ fcm->req_bytes = lbc->fbcr;
++ fcm_run_command(mtd);
++ if (fcm->status != LTESR_CC) {
++ return(0x1); /* Status Read error */
++ }
++ return this->read_byte(mtd);
++}
++
++
++/* cmdfunc send commands to the FCM */
++static void fcm_cmdfunc(struct mtd_info *mtd, unsigned command,
++ int column, int page_addr)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++
++ fcm->use_mdr = 0;
++ fcm->req_index = 0;
++
++ /* clear the read buffer */
++ fcm->read_bytes = 0;
++ if (command != NAND_CMD_PAGEPROG) {
++ fcm->index = 0;
++ fcm->oobbuf = -1;
++ }
++
++ switch (command) {
++ /* READ0 and READ1 read the entire buffer to use hardware ECC */
++ case NAND_CMD_READ1:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_READ1, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ fcm->req_index = column + 256;
++ goto read0;
++ case NAND_CMD_READ0:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_READ0, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ fcm->req_index = column;
++read0:
++ if (fcm->pgs) {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
++ (FIR_OP_RBW << FIR_OP4_SHIFT);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_RBW << FIR_OP3_SHIFT);
++ }
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
++ lbc->fbcr = 0; /* read entire page to enable ECC */
++ set_addr(mtd, 0, page_addr, 0);
++ fcm->req_bytes = mtd->oobblock + mtd->oobsize;
++ goto write_cmd2;
++ /* READOOB read only the OOB becasue no ECC is performed */
++ case NAND_CMD_READOOB:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_READOOB, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ if (fcm->pgs) {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
++ (FIR_OP_RBW << FIR_OP4_SHIFT);
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_RBW << FIR_OP3_SHIFT);
++ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT);
++ }
++ lbc->fbcr = mtd->oobsize - column;
++ set_addr(mtd, column, page_addr, 1);
++ goto write_cmd1;
++ /* READID must read all 5 possible bytes while CEB is active */
++ case NAND_CMD_READID:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_READID.\n");
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_UA << FIR_OP1_SHIFT) |
++ (FIR_OP_RBW << FIR_OP2_SHIFT);
++ lbc->fcr = (NAND_CMD_READID << FCR_CMD0_SHIFT);
++ lbc->fbcr = 5; /* 5 bytes for manuf, device and exts */
++ fcm->use_mdr = 1;
++ fcm->mdr = 0;
++ goto write_cmd0;
++ /* ERASE1 stores the block and page address */
++ case NAND_CMD_ERASE1:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_ERASE1, page_addr:"
++ " 0x%x.\n", page_addr);
++ set_addr(mtd, 0, page_addr, 0);
++ goto end;
++ /* ERASE2 uses the block and page address from ERASE1 */
++ case NAND_CMD_ERASE2:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_ERASE2.\n");
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_PA << FIR_OP1_SHIFT) |
++ (FIR_OP_CM1 << FIR_OP2_SHIFT);
++ lbc->fcr = (NAND_CMD_ERASE1 << FCR_CMD0_SHIFT) |
++ (NAND_CMD_ERASE2 << FCR_CMD1_SHIFT);
++ lbc->fbcr = 0;
++ goto write_cmd1;
++ /* SEQIN sets up the addr buffer and all registers except the length */
++ case NAND_CMD_SEQIN:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_SEQIN/PAGE_PROG, page_addr:"
++ " 0x%x, column: 0x%x.\n", page_addr, column);
++ if (column == 0) {
++ lbc->fbcr = 0; /* write entire page to enable ECC */
++ } else {
++ lbc->fbcr = 1; /* mark as partial page so no HW ECC */
++ }
++ if (fcm->pgs) {
++ /* always use READ0 for large page devices */
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CA << FIR_OP1_SHIFT) |
++ (FIR_OP_PA << FIR_OP2_SHIFT) |
++ (FIR_OP_WB << FIR_OP3_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP4_SHIFT);
++ lbc->fcr = (NAND_CMD_SEQIN << FCR_CMD0_SHIFT) |
++ (NAND_CMD_PAGEPROG << FCR_CMD1_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ } else {
++ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
++ (FIR_OP_CM2 << FIR_OP1_SHIFT) |
++ (FIR_OP_CA << FIR_OP2_SHIFT) |
++ (FIR_OP_PA << FIR_OP3_SHIFT) |
++ (FIR_OP_WB << FIR_OP4_SHIFT) |
++ (FIR_OP_CW1 << FIR_OP5_SHIFT);
++ if (column >= mtd->oobblock) {
++ /* OOB area --> READOOB */
++ column -= mtd->oobblock;
++ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 1);
++ } else if (column < 256) {
++ /* First 256 bytes --> READ0 */
++ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ } else {
++ /* Second 256 bytes --> READ1 */
++ column -= 256;
++ lbc->fcr = (NAND_CMD_READ1 << FCR_CMD0_SHIFT)
++ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
++ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
++ set_addr(mtd, column, page_addr, 0);
++ }
++ }
++ goto end;
++ /* PAGEPROG reuses all of the setup from SEQIN and adds the length */
++ case NAND_CMD_PAGEPROG:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_PAGEPROG"
++ " writing %d bytes.\n",fcm->index);
++ /* if the write did not start at 0 or is not a full page */
++ /* then set the exact length, otherwise use a full page */
++ /* write so the HW generates the ECC. */
++ if (lbc->fbcr ||
++ (fcm->index != (mtd->oobblock + mtd->oobsize)))
++ lbc->fbcr = fcm->index;
++ fcm->req_bytes = 0;
++ goto write_cmd2;
++ /* CMD_STATUS must read the status byte while CEB is active */
++ /* Note - it does not wait for the ready line */
++ case NAND_CMD_STATUS:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_STATUS.\n");
++ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT) |
++ (FIR_OP_RBW << FIR_OP1_SHIFT);
++ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
++ lbc->fbcr = 1;
++ goto write_cmd0;
++ /* RESET without waiting for the ready line */
++ case NAND_CMD_RESET:
++ FCM_DEBUG(2,"fcm_cmdfunc: NAND_CMD_RESET.\n");
++ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT);
++ lbc->fcr = (NAND_CMD_RESET << FCR_CMD0_SHIFT);
++ lbc->fbcr = 0;
++ goto write_cmd0;
++ default:
++ printk("fcm_cmdfunc: error, unsupported command.\n");
++ goto end;
++ }
++
++ /* Short cuts fall through to save code */
++ write_cmd0:
++ set_addr(mtd, 0, 0, 0);
++ write_cmd1:
++ fcm->req_bytes = lbc->fbcr;
++ write_cmd2:
++ fcm_run_command(mtd);
++
++#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
++ /* if we wrote a page then read back the oob to get the ECC */
++ if ((command == NAND_CMD_PAGEPROG) &&
++ (this->eccmode > NAND_ECC_SOFT) &&
++ (lbc->fbcr == 0) &&
++ (fcm->oobbuf != 0) &&
++ (fcm->oobbuf != -1)) {
++ int i;
++ uint *oob_config;
++ unsigned char *oob_buf;
++
++ i = fcm->page;
++ oob_buf = (unsigned char*) fcm->oobbuf;
++ oob_config = this->autooob->eccpos;
++
++ /* wait for the write to complete and check it passed */
++ if (!(this->waitfunc(mtd, this, FL_WRITING) & 0x01)) {
++ /* read back the OOB */
++ fcm_cmdfunc(mtd, NAND_CMD_READOOB, 0, i);
++ /* if it succeeded then copy the ECC bytes */
++ if (fcm->status == LTESR_CC) {
++ for (i = 0; i < this->eccbytes; i++) {
++ oob_buf[oob_config[i]] =
++ fcm->addr[oob_config[i]];
++ }
++ }
++ }
++ }
++#endif
++
++ end:
++ return;
++}
++
++/*
++ * fcm_enable_hwecc - start ECC generation
++ */
++static void fcm_enable_hwecc(struct mtd_info *mtd, int mode)
++{
++ return;
++}
++
++/*
++ * fcm_calculate_ecc - Calculate the ECC bytes
++ * This is done by hardware during the write process, so we use this
++ * to arm the oob buf capture on the next write_buf() call. The ECC bytes
++ * only need to be captured if CONFIG_MTD_NAND_VERIFY_WRITE is defined which
++ * reads back the pages and checks they match the data and oob buffers.
++ */
++static int fcm_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code)
++{
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++
++#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
++ /* arm capture of oob buf ptr on next write_buf */
++ fcm->oobbuf = 0;
++#endif
++ return 0;
++}
++
++/*
++ * fcm_correct_data - Detect and correct bit error(s)
++ * The detection and correction is done automatically by the hardware,
++ * if the complete page was read. If the status code is okay then there
++ * was no error, otherwise we return an error code indicating an uncorrectable
++ * error.
++ */
++static int fcm_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc)
++{
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++
++ /* No errors */
++ if (fcm->status == LTESR_CC)
++ return 0;
++
++ return -1; /* uncorrectable error */
++}
++
++
++
++/*
++ * Dummy scan_bbt to complete setup of the FMR based on NAND size
++ */
++static int fcm_scan_bbt (struct mtd_info *mtd)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ register struct nand_chip *this = mtd->priv;
++ struct fcm_nand *fcm = this->priv;
++ unsigned int i;
++ unsigned int al;
++
++ if (!fcm) {
++ printk (KERN_ERR "fcm_scan_bbt():" \
++ " Failed to allocate chip specific data structure\n");
++ return -1;
++ }
++
++ /* calculate FMR Address Length field */
++ al = 0;
++ for (i = this->pagemask >> 16; i ; i >>= 8) {
++ al++;
++ }
++
++ /* add to ECCM mode set in fcm_init */
++ fcm->fmr |= 12 << FMR_CWTO_SHIFT | /* Timeout > 12 mSecs */
++ al << FMR_AL_SHIFT;
++
++ FCM_DEBUG(1,"fcm_init: nand->options = %08X\n", this->options);
++ FCM_DEBUG(1,"fcm_init: nand->numchips = %10d\n", this->numchips);
++ FCM_DEBUG(1,"fcm_init: nand->chipsize = %10d\n", this->chipsize);
++ FCM_DEBUG(1,"fcm_init: nand->pagemask = %10X\n", this->pagemask);
++ FCM_DEBUG(1,"fcm_init: nand->eccmode = %10d\n", this->eccmode );
++ FCM_DEBUG(1,"fcm_init: nand->eccsize = %10d\n", this->eccsize );
++ FCM_DEBUG(1,"fcm_init: nand->eccbytes = %10d\n", this->eccbytes);
++ FCM_DEBUG(1,"fcm_init: nand->eccsteps = %10d\n", this->eccsteps);
++ FCM_DEBUG(1,"fcm_init: nand->chip_delay = %8d\n", this->chip_delay);
++ FCM_DEBUG(1,"fcm_init: nand->badblockpos = %7d\n", this->badblockpos);
++ FCM_DEBUG(1,"fcm_init: nand->chip_shift = %8d\n", this->chip_shift);
++ FCM_DEBUG(1,"fcm_init: nand->page_shift = %8d\n", this->page_shift);
++ FCM_DEBUG(1,"fcm_init: nand->phys_erase_shift = %2d\n",
++ this->phys_erase_shift);
++ FCM_DEBUG(1,"fcm_init: mtd->flags = %08X\n", mtd->flags);
++ FCM_DEBUG(1,"fcm_init: mtd->size = %10d\n", mtd->size);
++ FCM_DEBUG(1,"fcm_init: mtd->erasesize = %10d\n", mtd->erasesize);
++ FCM_DEBUG(1,"fcm_init: mtd->oobblock = %10d\n", mtd->oobblock);
++ FCM_DEBUG(1,"fcm_init: mtd->oobsize = %10d\n", mtd->oobsize);
++ FCM_DEBUG(1,"fcm_init: mtd->oobavail = %10d\n", mtd->oobavail);
++ FCM_DEBUG(1,"fcm_init: mtd->ecctype = %10d\n", mtd->ecctype);
++ FCM_DEBUG(1,"fcm_init: mtd->eccsize = %10d\n", mtd->eccsize);
++
++ /* adjust Option Register and ECC to match Flash page size */
++ if (mtd->oobblock == 512)
++ lbc->bank[fcm->bank].or &= ~(OR_FCM_PGS);
++ else if (mtd->oobblock == 2048) {
++ lbc->bank[fcm->bank].or |= OR_FCM_PGS;
++ /* adjust ecc setup if needed */
++ if ( (lbc->bank[fcm->bank].br & BR_DECC) == BR_DECC_CHK_GEN) {
++ mtd->eccsize = 2048;
++ mtd->oobavail -= 9;
++ this->eccmode = NAND_ECC_HW12_2048;
++ this->eccsize = 2048;
++ this->eccbytes += 9;
++ this->eccsteps = 1;
++ this->autooob = (fcm->fmr & FMR_ECCM) ?
++ &fcm_oob_lp_eccm1 : &fcm_oob_lp_eccm0;
++ memcpy(&mtd->oobinfo, this->autooob,
++ sizeof(mtd->oobinfo));
++ }
++ }
++ else {
++ printf("fcm_init: page size %d is not supported\n",
++ mtd->oobblock);
++ return -1;
++ }
++ fcm->pgs = (lbc->bank[fcm->bank].or>>OR_FCM_PGS_SHIFT) & 1;
++
++ if (al > 2) {
++ printf("fcm_init: %d address bytes is not supported\n", al+2);
++ return -1;
++ }
++
++ /* restore default scan_bbt function and call it */
++ this->scan_bbt = nand_default_bbt;
++ return nand_default_bbt(mtd);
++}
++
++/*
++ * Board-specific NAND initialization. The following members of the
++ * argument are board-specific (per include/linux/mtd/nand_new.h):
++ * - IO_ADDR_R?: address to read the 8 I/O lines of the flash device
++ * - IO_ADDR_W?: address to write the 8 I/O lines of the flash device
++ * - hwcontrol: hardwarespecific function for accesing control-lines
++ * - dev_ready: hardwarespecific function for accesing device ready/busy line
++ * - enable_hwecc: function to enable (reset) hardware ecc generator. Must
++ * only be provided if a hardware ECC is available
++ * - eccmode: mode of ecc, see defines
++ * - chip_delay: chip dependent delay for transfering data from array to
++ * read regs (tR)
++ * - options: various chip options. They can partly be set to inform
++ * nand_scan about special functionality. See the defines for further
++ * explanation
++ * Members with a "?" were not set in the merged testing-NAND branch,
++ * so they are not set here either.
++ */
++int board_nand_init(struct nand_chip *nand)
++{
++ volatile immap_t *im = (immap_t *) CFG_IMMR;
++ volatile lbus83xx_t *lbc= &im->lbus;
++ struct fcm_nand *fcm;
++ unsigned int bank;
++
++ /* Enable FCM detection of timeouts, ECC errors and completion */
++ lbc->ltedr &= ~(LTESR_FCT | LTESR_PAR | LTESR_CC);
++
++ fcm = kmalloc (sizeof(struct fcm_nand), GFP_KERNEL);
++ if (!fcm) {
++ printk (KERN_ERR "board_nand_init():" \
++ " Cannot allocate read buffer data structure\n");
++ return;
++ }
++
++ /* Find which chip select bank is being used for this device */
++ for (bank=0; bank<8; bank++) {
++ if ( (lbc->bank[bank].br & BR_V) &&
++ ( (lbc->bank[bank].br & BR_MSEL) == BR_MS_FCM ) &&
++ ( (lbc->bank[bank].br & BR_BA) ==
++ (lbc->bank[bank].or & OR_FCM_AM &
++ (unsigned int)(nand->IO_ADDR_R) ) ) ) {
++ fcm->bank = bank;
++// TODO fcm->fmr = FMR_ECCM; /* rest filled in later */
++ fcm->fmr = 0; /* rest filled in later */
++ fcm->read_bytes = 0;
++ fcm->index = 0;
++ fcm->pgs = (lbc->bank[bank].or>>OR_FCM_PGS_SHIFT) & 1;
++ fcm->base = lbc->bank[bank].br & BR_BA;
++ fcm->addr = (unsigned char*) (fcm->base);
++ nand->priv = fcm;
++ fcm->oobbuf = -1;
++ break;
++ }
++ }
++
++ if (!nand->priv) {
++ printk (KERN_ERR "board_nand_init():" \
++ " Could not find matching Chip Select\n");
++ return -1;
++ }
++
++ /* set up nand options */
++ nand->options = 0;
++ /* set up function call table */
++ nand->hwcontrol = fcm_hwcontrol;
++ nand->waitfunc = fcm_wait;
++ nand->read_byte = fcm_read_byte;
++ nand->write_byte = fcm_write_byte;
++ nand->read_word = fcm_read_word;
++ nand->write_word = fcm_write_word;
++ nand->read_buf = fcm_read_buf;
++ nand->verify_buf = fcm_verify_buf;
++ nand->write_buf = fcm_write_buf;
++ nand->cmdfunc = fcm_cmdfunc;
++ nand->scan_bbt = fcm_scan_bbt;
++
++ /* If CS Base Register selects full hardware ECC then use it */
++ if ( ( (lbc->bank[bank].br & BR_DECC) >> BR_DECC_SHIFT) == 2) {
++ /* put in small page settings and adjust later if needed */
++ nand->eccmode = NAND_ECC_HW3_512;
++ nand->autooob = (fcm->fmr & FMR_ECCM) ?
++ &fcm_oob_sp_eccm1 : &fcm_oob_sp_eccm0;
++ nand->calculate_ecc = fcm_calculate_ecc;
++ nand->correct_data = fcm_correct_data;
++ nand->enable_hwecc = fcm_enable_hwecc;
++ } else {
++ /* otherwise fall back to default software ECC */
++ nand->eccmode = NAND_ECC_SOFT;
++ }
++ return 0;
++}
++
++#endif
++#endif
+diff -urN u-boot-1.3.1.orig/include/configs/MPC8313ERDB.h u-boot-1.3.1/include/configs/MPC8313ERDB.h
+--- u-boot-1.3.1.orig/include/configs/MPC8313ERDB.h 2007-12-06 10:21:19.000000000 +0100
++++ u-boot-1.3.1/include/configs/MPC8313ERDB.h 2008-01-31 17:36:18.000000000 +0100
+@@ -360,6 +360,7 @@
+ #define CONFIG_CMD_MII
+ #define CONFIG_CMD_DATE
+ #define CONFIG_CMD_PCI
++#define CONFIG_CMD_NAND
+
+ #if defined(CFG_RAMBOOT)
+ #undef CONFIG_CMD_ENV
diff --git a/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb b/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb
index b3e420fd06..020fd421c6 100644
--- a/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb
+++ b/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb
@@ -5,11 +5,11 @@ SECTION = "bootloader"
PRIORITY = "optional"
UBOOT_UPSTREAM_REV = "10bbb38a402a2faf18858c451bcdc63d45888e6e"
-UBOOT_OPENMOKO_REV = "4047"
+UBOOT_OPENMOKO_REV = "4118"
UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 gta02v2 gta02v3 gta02v4 gta02v5"
LOCALVERSION = "+git${UBOOT_UPSTREAM_REV}+svn${UBOOT_OPENMOKO_REV}"
PV = "1.3.1${LOCALVERSION}"
-PR = "r2"
+PR = "r3"
PROVIDES = "virtual/bootloader"
S = "${WORKDIR}/git"
diff --git a/packages/u-boot/u-boot-openmoko_svn.bb b/packages/u-boot/u-boot-openmoko_svn.bb
index 3ec97f2a77..ca21f54f8a 100644
--- a/packages/u-boot/u-boot-openmoko_svn.bb
+++ b/packages/u-boot/u-boot-openmoko_svn.bb
@@ -14,8 +14,11 @@ UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 gta02v1 gta02v2 gta02v3 gta02v4"
DEFAULT_PREFERENCE = "-1"
+BLESSED_GIT_REV = "928d1d77f8623c120d8763e20e1ca58df9c5c4c6"
+
SRC_URI = "\
- git://www.denx.de/git/u-boot.git/;protocol=git;name=upstream;tag=3afac79ec27b91df185f090b31dad9620779f440 \
+
+git://www.denx.de/git/u-boot.git/;protocol=git;name=upstream;tag=${BLESSED_GIT_REV} \
svn://svn.openmoko.org/trunk/src/target/u-boot;module=patches;proto=http;name=patches \
file://uboot-eabi-fix-HACK.patch;patch=1;maxrev=3773 \
file://uboot-20070311-tools_makefile_ln_sf.patch;patch=1 \
diff --git a/packages/u-boot/u-boot_1.1.2.bb b/packages/u-boot/u-boot_1.1.2.bb
index 82b169ccc4..8287d35a1d 100644
--- a/packages/u-boot/u-boot_1.1.2.bb
+++ b/packages/u-boot/u-boot_1.1.2.bb
@@ -1,8 +1,11 @@
-PR = "r2"
+PR = "r3"
require u-boot.inc
SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 \
file://arm_flags.patch;patch=1 "
+# Override whole URI fr Neon since Neon patch is incompatible with arm_flags patch.
+SRC_URI_bd-neon = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 \
+ file://u-boot-1.1.2-neon.patch;patch=1"
SRC_URI_append_vibren = "ftp://bec-systems.com/pub/pxa255_idp/u-boot/uboot_pxa255-idp_2005-03-23.patch;patch=1"
SRC_URI_append_mnci = "file://mnci.patch;patch=1 \
file://mnci-jffs2.patch;patch=1 \
@@ -10,7 +13,7 @@ SRC_URI_append_mnci = "file://mnci.patch;patch=1 \
file://command-names.patch;patch=1"
SRC_URI_append_magicbox = "file://u-boot-emetec.patch;patch=1 "
-SRC_URI_append_bd-neon = "file://u-boot-1.1.2-neon.patch;patch=1"
+
# TODO: SRC_URI_append_rt3000
@@ -32,6 +35,11 @@ do_compile () {
RDEPENDS_append_mnci = " hwctrl"
FILES_${PN}_mnci = "/tmp/${UBOOT_IMAGE}"
+
+do_configure_prepend_bd-neon () {
+ chmod +x ${S}/Configure
+}
+
do_install_openmn() {
install -d ${D}/tmp
install ${S}/u-boot.bin ${D}/tmp/${UBOOT_IMAGE}
diff --git a/packages/u-boot/u-boot_1.3.1.bb b/packages/u-boot/u-boot_1.3.1.bb
new file mode 100644
index 0000000000..60074d3ed9
--- /dev/null
+++ b/packages/u-boot/u-boot_1.3.1.bb
@@ -0,0 +1,9 @@
+require u-boot.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 \
+ file://mpc8313e-rdb-autoboot.patch;patch=1 \
+ file://mpc8313e-rdb-nand.patch;patch=1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/uclibc/elf2flt_svn.bb b/packages/uclibc/elf2flt_svn.bb
index 0fac49d468..3af893a7a8 100644
--- a/packages/uclibc/elf2flt_svn.bb
+++ b/packages/uclibc/elf2flt_svn.bb
@@ -9,7 +9,7 @@ SRC_URI = "svn://sources.blackfin.uclinux.org/toolchain/trunk;module=${PN}"
S = "${WORKDIR}/${PN}"
-EXTRA_OECONF = " --with-libbfd=${STAGING_DIR}/${TARGET_SYS}/lib/libbfd.a \
- --with-libiberty=${STAGING_DIR}/${TARGET_SYS}/lib/libiberty.a \
- --with-bfd-include-dir=${STAGING_DIR}/${TARGET_SYS}/include \
+EXTRA_OECONF = " --with-libbfd=${STAGING_LIBDIR}/libbfd.a \
+ --with-libiberty=${STAGING_LIBDIR}/libiberty.a \
+ --with-bfd-include-dir=${STAGING_INCDIR} \
"
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/avr32-arch-2.patch b/packages/uclibc/uclibc-0.9.28/avr32/avr32-arch-2.patch
new file mode 100644
index 0000000000..0e8c2a1c02
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/avr32-arch-2.patch
@@ -0,0 +1,2135 @@
+Subject: [PATCH] AVR32 Architecture support
+
+Add support for the AVR32 architecture in the core libc and build system.
+This also adds AVR32-ELF definitions to elf.h
+
+---
+
+ Rules.mak | 4
+ extra/Configs/Config.avr32 | 38 +++++
+ extra/Configs/Config.in | 7 +
+ include/elf.h | 51 +++++++
+ libc/sysdeps/linux/avr32/Makefile | 93 +++++++++++++
+ libc/sysdeps/linux/avr32/__longjmp.S | 17 ++
+ libc/sysdeps/linux/avr32/_mmap.c | 33 ++++
+ libc/sysdeps/linux/avr32/bits/atomicity.h | 86 ++++++++++++
+ libc/sysdeps/linux/avr32/bits/byteswap.h | 80 +++++++++++
+ libc/sysdeps/linux/avr32/bits/endian.h | 7 +
+ libc/sysdeps/linux/avr32/bits/fcntl.h | 167 +++++++++++++++++++++++++
+ libc/sysdeps/linux/avr32/bits/kernel_stat.h | 63 +++++++++
+ libc/sysdeps/linux/avr32/bits/kernel_types.h | 56 ++++++++
+ libc/sysdeps/linux/avr32/bits/machine-gmon.h | 69 ++++++++++
+ libc/sysdeps/linux/avr32/bits/mman.h | 95 ++++++++++++++
+ libc/sysdeps/linux/avr32/bits/profil-counter.h | 26 +++
+ libc/sysdeps/linux/avr32/bits/setjmp.h | 21 +++
+ libc/sysdeps/linux/avr32/bits/syscalls.h | 143 +++++++++++++++++++++
+ libc/sysdeps/linux/avr32/bits/wordsize.h | 1
+ libc/sysdeps/linux/avr32/brk.c | 23 +++
+ libc/sysdeps/linux/avr32/bsd-_setjmp.S | 12 +
+ libc/sysdeps/linux/avr32/bsd-setjmp.S | 12 +
+ libc/sysdeps/linux/avr32/clone.c | 37 +++++
+ libc/sysdeps/linux/avr32/crt1.S | 93 +++++++++++++
+ libc/sysdeps/linux/avr32/crti.S | 17 ++
+ libc/sysdeps/linux/avr32/crtn.S | 14 ++
+ libc/sysdeps/linux/avr32/mmap.c | 31 ++++
+ libc/sysdeps/linux/avr32/setjmp.S | 43 ++++++
+ libc/sysdeps/linux/avr32/sigaction.c | 49 +++++++
+ libc/sysdeps/linux/avr32/sigrestorer.S | 11 +
+ libc/sysdeps/linux/avr32/sys/elf.h | 26 +++
+ libc/sysdeps/linux/avr32/sys/io.h | 48 +++++++
+ libc/sysdeps/linux/avr32/sys/procfs.h | 123 ++++++++++++++++++
+ libc/sysdeps/linux/avr32/sys/ucontext.h | 94 ++++++++++++++
+ libc/sysdeps/linux/avr32/sys/user.h | 46 ++++++
+ libc/sysdeps/linux/avr32/syscall.S | 81 ++++++++++++
+ libc/sysdeps/linux/avr32/vfork.S | 55 ++++++++
+ 37 files changed, 1872 insertions(+)
+
+Index: uClibc-0.9.28/extra/Configs/Config.avr32
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/extra/Configs/Config.avr32 2006-05-05 09:27:17.000000000 +0200
+@@ -0,0 +1,38 @@
++#
++# For a description of the syntax of this configuration file,
++# see extra/config/Kconfig-language.txt
++#
++
++config HAVE_ELF
++ bool
++ default y
++
++config TARGET_ARCH
++ default "avr32"
++
++config ARCH_CFLAGS
++ string
++
++config ARCH_LDFLAGS
++ string
++
++config LIBGCC_CFLAGS
++ string
++
++config ARCH_SUPPORTS_BIG_ENDIAN
++ bool
++ default y
++
++config UCLIBC_COMPLETELY_PIC
++ select FORCE_SHAREABLE_TEXT_SEGMENTS
++ bool
++ default y
++
++choice
++ prompt "Target CPU Type"
++ default CONFIG_AP7000
++
++config CONFIG_AP7000
++ bool "AP7000"
++
++endchoice
+Index: uClibc-0.9.28/extra/Configs/Config.in
+===================================================================
+--- uClibc-0.9.28.orig/extra/Configs/Config.in 2006-04-19 12:47:48.000000000 +0200
++++ uClibc-0.9.28/extra/Configs/Config.in 2006-04-19 12:48:33.000000000 +0200
+@@ -16,6 +16,9 @@ config TARGET_alpha
+ config TARGET_arm
+ bool "arm"
+
++config TARGET_avr32
++ bool "avr32"
++
+ config TARGET_bfin
+ bool "bfin"
+
+@@ -83,6 +86,10 @@ if TARGET_arm
+ source "extra/Configs/Config.arm"
+ endif
+
++if TARGET_avr32
++source "extra/Configs/Config.avr32"
++endif
++
+ if TARGET_bfin
+ source "extra/Configs/Config.bfin"
+ endif
+Index: uClibc-0.9.28/include/elf.h
+===================================================================
+--- uClibc-0.9.28.orig/include/elf.h 2006-04-19 12:47:48.000000000 +0200
++++ uClibc-0.9.28/include/elf.h 2006-05-05 09:28:38.000000000 +0200
+@@ -261,6 +261,8 @@ typedef struct
+ #define EM_NIOS32 0xfebb /* Altera Nios 32 */
+ #define EM_ALTERA_NIOS2 0x9ee5 /* Altera Nios II */
+
++#define EM_AVR32 0x18ad
++
+ /* V850 backend magic number. Written in the absense of an ABI. */
+ #define EM_CYGNUS_V850 0x9080
+
+@@ -2687,6 +2689,55 @@ typedef Elf32_Addr Elf32_Conflict;
+ /* Keep this the last entry. */
+ #define R_V850_NUM 25
+
++/* Atmel AVR32 relocations. */
++#define R_AVR32_NONE 0
++#define R_AVR32_32 1
++#define R_AVR32_16 2
++#define R_AVR32_8 3
++#define R_AVR32_32_PCREL 4
++#define R_AVR32_16_PCREL 5
++#define R_AVR32_8_PCREL 6
++#define R_AVR32_DIFF32 7
++#define R_AVR32_DIFF16 8
++#define R_AVR32_DIFF8 9
++#define R_AVR32_GOT32 10
++#define R_AVR32_GOT16 11
++#define R_AVR32_GOT8 12
++#define R_AVR32_21S 13
++#define R_AVR32_16U 14
++#define R_AVR32_16S 15
++#define R_AVR32_8S 16
++#define R_AVR32_8S_EXT 17
++#define R_AVR32_22H_PCREL 18
++#define R_AVR32_18W_PCREL 19
++#define R_AVR32_16B_PCREL 20
++#define R_AVR32_16N_PCREL 21
++#define R_AVR32_14UW_PCREL 22
++#define R_AVR32_11H_PCREL 23
++#define R_AVR32_10UW_PCREL 24
++#define R_AVR32_9H_PCREL 25
++#define R_AVR32_9UW_PCREL 26
++#define R_AVR32_HI16 27
++#define R_AVR32_LO16 28
++#define R_AVR32_GOTPC 29
++#define R_AVR32_GOTCALL 30
++#define R_AVR32_LDA_GOT 31
++#define R_AVR32_GOT21S 32
++#define R_AVR32_GOT18SW 33
++#define R_AVR32_GOT16S 34
++#define R_AVR32_GOT7UW 35
++#define R_AVR32_32_CPENT 36
++#define R_AVR32_CPCALL 37
++#define R_AVR32_16_CP 38
++#define R_AVR32_9W_CP 39
++#define R_AVR32_RELATIVE 40
++#define R_AVR32_GLOB_DAT 41
++#define R_AVR32_JMP_SLOT 42
++#define R_AVR32_ALIGN 43
++#define R_AVR32_NUM 44
++
++/* AVR32 dynamic tags */
++#define DT_AVR32_GOTSZ 0x70000001 /* Total size of GOT in bytes */
+
+ #define R_H8_NONE 0
+ #define R_H8_DIR32 1
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/Makefile 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,93 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++TOPDIR=../../../../
++include $(TOPDIR)Rules.mak
++ASFLAGS=$(CFLAGS)
++
++CRT_SRC = crt1.S
++CRT_OBJ = crt1.o
++SCRT_OBJ = $(patsubst %,S%, $(CRT_OBJ))
++CTOR_TARGETS=$(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o
++
++SSRC=__longjmp.S setjmp.S bsd-setjmp.S vfork.S \
++ bsd-_setjmp.S sigrestorer.S syscall.S
++SOBJS=$(patsubst %.S,%.o, $(SSRC))
++
++CSRC=clone.c brk.c sigaction.c mmap.c
++COBJS=$(patsubst %.c,%.o, $(CSRC))
++
++OBJS=$(SOBJS) $(COBJS)
++
++OBJ_LIST=../../../obj.sysdeps.$(TARGET_ARCH)
++
++all: $(OBJ_LIST)
++
++$(OBJ_LIST): $(OBJS) $(CRT_OBJ) $(SCRT_OBJ) $(CTOR_TARGETS)
++ echo $(patsubst %, sysdeps/linux/$(TARGET_ARCH)/%, $(OBJS)) > $(OBJ_LIST)
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp $(CRT_OBJ) $(SCRT_OBJ) $(TOPDIR)lib/
++
++$(CRT_OBJ): $(CRT_SRC)
++ $(CC) $(ASFLAGS) -DL_$* $< -c -o $*.o
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(SCRT_OBJ): $(CRT_SRC)
++ $(CC) $(ASFLAGS) $(PIEFLAG) -DL_$* $< -c -o $*.o
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(SOBJS): %.o : %.S
++ $(CC) $(ASFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(COBJS): %.o : %.c
++ $(CC) $(CFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y)
++crti.o: crti.S
++ $(CC) $(ASFLAGS) -c crti.S -o crti.o
++
++$(TOPDIR)lib/crti.o: crti.o
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp crti.o $(TOPDIR)lib/
++
++crtn.o: crtn.S
++ $(CC) $(ASFLAGS) -c crtn.S -o crtn.o
++
++$(TOPDIR)lib/crtn.o: crtn.o
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp crtn.o $(TOPDIR)lib/
++else
++$(TOPDIR)lib/crti.o:
++ $(INSTALL) -d $(TOPDIR)lib/
++ $(AR) $(ARFLAGS) $(TOPDIR)lib/crti.o
++$(TOPDIR)lib/crtn.o:
++ $(INSTALL) -d $(TOPDIR)lib/
++ $(AR) $(ARFLAGS) $(TOPDIR)lib/crtn.o
++endif
++
++
++headers:
++# $(LN) -fs ../libc/sysdeps/linux/avr32/fpu_control.h $(TOPDIR)/include/
++
++clean:
++ $(RM) *.[oa] *~ core
++ $(RM) bits/sysnum.h
++ $(RM) gmon-start.S
++
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/__longjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/__longjmp.S 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,17 @@
++/* longjmp for AVR32
++ *
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ .global __longjmp
++ .type __longjmp,"function"
++ .align 1
++__longjmp:
++ ldm r12++, r0,r1,r2,r3,r4,r5,r6,r7,r8,sp,lr
++ mov r12, r11 /* get the return value right */
++ mustr r8 /* restore status register (lower half) */
++ cp r12, 0 /* can't return zero */
++ frs
++ moveq r12, 1
++ mov pc,lr
++ .size __longjmp, . - __longjmp
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/_mmap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/_mmap.c 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,33 @@
++/* Copyright (C) 2005 Atmel Norway
++
++ This program is free software; you can redistribute it and/or modify it under
++ the terms of the GNU Library General Public License as published by the Free
++ Software Foundation; either version 2 of the License, or (at your option) any
++ later version.
++
++ 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 Library General Public License for more
++ details.
++
++ You should have received a copy of the GNU Library 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
++
++ Derived in part from the Linux-8086 C library, the GNU C Library, and several
++ other sundry sources. Files within this library are copyright by their
++ respective copyright holders.
++ */
++
++#include <errno.h>
++#include <sys/mman.h>
++#include <sys/syscall.h>
++
++#define __NR_mmap2 __NR_mmap
++
++static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, pgoff);
++
++__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
++{
++ return mmap2(addr, len, prot, flags, fd, offset >> 12);
++}
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/atomicity.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/atomicity.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,86 @@
++/* Low-level functions for atomic operations. AVR32 version.
++ Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _ATOMICITY_H
++#define _ATOMICITY_H 1
++
++#include <inttypes.h>
++
++static inline int
++__attribute__((unused))
++exchange_and_add (volatile uint32_t *mem, int val)
++{
++ int tmp, result;
++
++ __asm__ __volatile__(
++ "/* Inline exchange and add */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " add %1, %0, %4\n"
++ " stcond %2, %1\n"
++ " brne 1b"
++ : "=&r"(result), "=&r"(tmp), "=m"(*mem)
++ : "m"(*mem), "r"(val)
++ : "cc", "memory");
++
++ return result;
++}
++
++static inline void
++__attribute__((unused))
++atomic_add (volatile uin32_t *mem, int val)
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline atomic add */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " add %0, %3\n"
++ " stcond %2, %0\n"
++ " brne 1b"
++ : "=&r"(result), "=m"(*mem)
++ : "m"(*mem), "r"(val)
++ : "cc", "memory");
++}
++
++static inline int
++__attribute__((unused))
++compare_and_swap(volatile long int *p, long int oldval, long int newval)
++{
++ long int result, tmp;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %1, %3\n"
++ " cp.w %1, %5\n"
++ " sreq %0\n"
++ " brne 2f\n"
++ " stcond %2, %4\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=&r"(tmp), "=m"(*p)
++ : "m"(*p), "r"(newval), "r"(oldval)
++ : "cc", "memory");
++
++ return result;
++}
++
++#endif /* atomicity.h */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/byteswap.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/byteswap.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,80 @@
++/* Macros to swap the order of bytes in integer values.
++ Copyright (C) 2005 Atmel Norway.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
++# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
++#endif
++
++#ifndef _BITS_BYTESWAP_H
++#define _BITS_BYTESWAP_H 1
++
++/* Swap bytes in 16 bit value. */
++#if defined __GNUC__
++# define __bswap_16(x) (__extension__ __builtin_bswap_16(x))
++#else
++/* This is better than nothing. */
++static __inline unsigned short int
++__bswap_16 (unsigned short int __bsx)
++{
++ return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8));
++}
++#endif
++
++/* Swap bytes in 32 bit value. */
++#if defined __GNUC__
++# define __bswap_32(x) (__extension__ __builtin_bswap_32(x))
++#else
++static __inline unsigned int
++__bswap_32 (unsigned int __bsx)
++{
++ return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) |
++ (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24));
++}
++#endif
++
++#if defined __GNUC__
++/* Swap bytes in 64 bit value. */
++# define __bswap_constant_64(x) \
++ ((((x) & 0xff00000000000000ull) >> 56) \
++ | (((x) & 0x00ff000000000000ull) >> 40) \
++ | (((x) & 0x0000ff0000000000ull) >> 24) \
++ | (((x) & 0x000000ff00000000ull) >> 8) \
++ | (((x) & 0x00000000ff000000ull) << 8) \
++ | (((x) & 0x0000000000ff0000ull) << 24) \
++ | (((x) & 0x000000000000ff00ull) << 40) \
++ | (((x) & 0x00000000000000ffull) << 56))
++
++# define __bswap_64(x) \
++ (__extension__ \
++ ({ \
++ union { \
++ __extension__ unsigned long long int __ll; \
++ unsigned int __l[2]; \
++ } __w, __r; \
++ if (__builtin_constant_p(x)) \
++ __r.__ll = __bswap_constant_64(x); \
++ else { \
++ __w.__ll = (x); \
++ __r.__l[0] = __bswap_32(__w.__l[1]); \
++ __r.__l[1] = __bswap_32(__w.__l[0]); \
++ } \
++ __r.__ll; \
++ }))
++#endif
++
++#endif /* _BITS_BYTESWAP_H */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/endian.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/endian.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,7 @@
++/* AVR32 is big-endian */
++
++#ifndef _ENDIAN_H
++# error "Never use <bits/endian.h> directly; include <endian.h> instead."
++#endif
++
++#define __BYTE_ORDER __BIG_ENDIAN
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/fcntl.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/fcntl.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,167 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ *
++ * This file is part of the Linux kernel
++ */
++#ifndef _FCNTL_H
++# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
++#endif
++
++#include <sys/types.h>
++
++/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
++ located on an ext2 file system */
++#define O_ACCMODE 0003
++#define O_RDONLY 00
++#define O_WRONLY 01
++#define O_RDWR 02
++#define O_CREAT 0100 /* not fcntl */
++#define O_EXCL 0200 /* not fcntl */
++#define O_NOCTTY 0400 /* not fcntl */
++#define O_TRUNC 01000 /* not fcntl */
++#define O_APPEND 02000
++#define O_NONBLOCK 04000
++#define O_NDELAY O_NONBLOCK
++#define O_SYNC 010000
++#define O_ASYNC 020000
++
++#ifdef __USE_GNU
++# define O_DIRECTORY 040000 /* must be a directory */
++# define O_NOFOLLOW 0100000 /* don't follow links */
++# define O_DIRECT 0200000 /* direct disk access */
++#endif
++
++#ifdef __USE_LARGEFILE64
++# define O_LARGEFILE 0400000
++#endif
++
++/* For now Linux has synchronisity options for data and read operations.
++ We define the symbols here but let them do the same as O_SYNC since
++ this is a superset. */
++#if defined __USE_POSIX199309 || defined __USE_UNIX98
++# define O_DSYNC O_SYNC /* Synchronize data. */
++# define O_RSYNC O_SYNC /* Synchronize read operations. */
++#endif
++
++#define F_DUPFD 0 /* dup */
++#define F_GETFD 1 /* get close_on_exec */
++#define F_SETFD 2 /* set/clear close_on_exec */
++#define F_GETFL 3 /* get file->f_flags */
++#define F_SETFL 4 /* set file->f_flags */
++
++#ifndef __USE_FILE_OFFSET64
++# define F_GETLK 5
++# define F_SETLK 6
++# define F_SETLKW 7
++#else
++# define F_GETLK F_GETLK64
++# define F_SETLK F_SETLK64
++# define F_SETLKW F_SETLKW64
++#endif
++#define F_GETLK64 12 /* using 'struct flock64' */
++#define F_SETLK64 13
++#define F_SETLKW64 14
++
++#if defined __USE_BSD || defined __USE_XOPEN2K
++# define F_SETOWN 8 /* for sockets. */
++# define F_GETOWN 9 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETSIG 10 /* for sockets. */
++# define F_GETSIG 11 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETLEASE 1024 /* Set a lease. */
++# define F_GETLEASE 1025 /* Enquire what lease is active. */
++# define F_NOTIFY 1026 /* Request notfications on a directory. */
++#endif
++
++/* for F_[GET|SET]FL */
++#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
++
++/* for posix fcntl() and lockf() */
++#define F_RDLCK 0
++#define F_WRLCK 1
++#define F_UNLCK 2
++
++/* for old implementation of bsd flock () */
++#define F_EXLCK 4 /* or 3 */
++#define F_SHLCK 8 /* or 4 */
++
++/* for leases */
++#define F_INPROGRESS 16
++
++#ifdef __USE_BSD
++/* operations for bsd flock(), also used by the kernel implementation */
++# define LOCK_SH 1 /* shared lock */
++# define LOCK_EX 2 /* exclusive lock */
++# define LOCK_NB 4 /* or'd with one of the above to prevent
++ blocking */
++# define LOCK_UN 8 /* remove lock */
++#endif
++
++#ifdef __USE_GNU
++# define LOCK_MAND 32 /* This is a mandatory flock */
++# define LOCK_READ 64 /* ... Which allows concurrent
++ read operations */
++# define LOCK_WRITE 128 /* ... Which allows concurrent
++ write operations */
++# define LOCK_RW 192 /* ... Which allows concurrent
++ read & write ops */
++#endif
++
++#ifdef __USE_GNU
++/* Types of directory notifications that may be requested with F_NOTIFY. */
++# define DN_ACCESS 0x00000001 /* File accessed. */
++# define DN_MODIFY 0x00000002 /* File modified. */
++# define DN_CREATE 0x00000004 /* File created. */
++# define DN_DELETE 0x00000008 /* File removed. */
++# define DN_RENAME 0x00000010 /* File renamed. */
++# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
++# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
++#endif
++
++struct flock {
++ short l_type;
++ short l_whence;
++#ifndef __USE_FILE_OFFSET64
++ __off_t l_start;
++ __off_t l_len;
++#else
++ __off64_t l_start;
++ __off64_t l_len;
++#endif
++ __pid_t l_pid;
++};
++
++#ifdef __USE_LARGEFILE64
++struct flock64 {
++ short l_type;
++ short l_whence;
++ __off64_t l_start;
++ __off64_t l_len;
++ __pid_t l_pid;
++};
++#endif
++
++/* Define some more compatibility macros to be backward compatible with
++ * BSD systems which did not managed to hide these kernel macros. */
++#ifdef __USE_BSD
++# define FAPPEND O_APPEND
++# define FFSYNC O_FSYNC
++# define FASYNC O_ASYNC
++# define FNONBLOCK O_NONBLOCK
++# define FNDELAY O_NDELAY
++#endif /* Use BSD. */
++
++/* Advise to `posix_fadvise'. */
++#ifdef __USE_XOPEN2K
++# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
++#endif
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_stat.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_stat.h 2006-05-05 09:28:32.000000000 +0200
+@@ -0,0 +1,63 @@
++#ifndef _BITS_STAT_STRUCT_H
++#define _BITS_STAT_STRUCT_H
++
++/*
++ * This file provides struct stat, taken from kernel 2.6.4
++ * (include/asm-avr32/stat.h revision 1.1).
++ */
++
++struct kernel_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;
++};
++
++#define STAT_HAVE_NSEC 1
++
++struct kernel_stat64 {
++ unsigned long long st_dev;
++
++ unsigned long long st_ino;
++ unsigned int st_mode;
++ unsigned int st_nlink;
++
++ unsigned long st_uid;
++ unsigned long st_gid;
++
++ unsigned long long st_rdev;
++
++ long long st_size;
++ unsigned long __pad1;
++ unsigned long st_blksize;
++
++ unsigned long 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 __unused1;
++ unsigned long __unused2;
++};
++
++#endif /* _BITS_STAT_STRUCT_H */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_types.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_types.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,56 @@
++/* Note that we use the exact same include guard #define names
++ * as asm/posix_types.h. This will avoid gratuitous conflicts
++ * with the posix_types.h kernel header, and will ensure that
++ * our private content, and not the kernel header, will win.
++ * -Erik
++ */
++#ifndef __ASM_AVR32_POSIX_TYPES_H
++#define __ASM_AVR32_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_dev_t;
++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 int __kernel_uid_t;
++typedef unsigned int __kernel_gid_t;
++typedef unsigned long __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 {
++#if defined(__USE_ALL)
++ int val[2];
++#else
++ int __val[2];
++#endif
++} __kernel_fsid_t;
++
++#endif /* __ASM_AVR32_POSIX_TYPES_H */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/machine-gmon.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/machine-gmon.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,69 @@
++/* Machine-dependent definitions for profiling support. AVR32 version.
++ Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define mcount_internal __mcount_internal
++
++#define _MCOUNT_DECL(frompc, selfpc) \
++static void __attribute((used)) mcount_internal(unsigned long frompc, unsigned long selfpc)
++
++/*
++ * This mcount implementation expects to get called after the prologue
++ * has been run. It also expects that r7 contains a valid frame
++ * pointer.
++ *
++ * When profiling, the compiler should generate something like this at
++ * each function entry:
++ *
++ * pushm r0-r7,lr // lr mandatory, others optional
++ * mov r7, sp
++ * // rest of prologue goes here
++ * mcall pc[.LC1 - .]
++ * // rest of function goes here
++ * .LC1:
++ * .long mcount
++ *
++ * or for PIC:
++ *
++ * pushm r0-r7,lr
++ * mov r7, sp
++ * // rest of prologue goes here
++ * lddpc r0, .LC1
++ * .L1: rsub r0, pc
++ * mcall r0[mcount@GOT]
++ * // rest of function goes here
++ * .LC1:
++ * .long .L1 - _GLOBAL_OFFSET_TABLE_
++ *
++ * This way, when mcount() is called, r7 points to the calling
++ * function's return address. It is guaranteed that calling mcount
++ * will clobber no registers except LR, which is unavoidable.
++ */
++#define MCOUNT asm( \
++ " .align 4\n" \
++ " .global _mcount\n" \
++ " .type _mcount,@function\n" \
++ "_mcount:\n" \
++ " pushm r8-r12,lr\n" \
++ " mov r11, lr\n" \
++ " ld.w r12, r7[0]\n" \
++ " rcall __mcount_internal\n" \
++ " popm r8-r12,pc\n" \
++ " .size _mcount, . - _mcount\n" \
++ " .weak mcount\n" \
++ " mcount = _mcount");
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/mman.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/mman.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,95 @@
++/* Definitions for POSIX memory map interface. Linux/AVR32 version.
++ Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_MMAN_H
++# error "Never include this file directly. Use <sys/mman.h> instead"
++#endif
++
++/* The following definitions basically come from the kernel headers.
++ But the kernel header is not namespace clean. */
++
++
++/* Protections are chosen from these bits, OR'd together. The
++ implementation does not necessarily support PROT_EXEC or PROT_WRITE
++ without PROT_READ. The only guarantees are that no writing will be
++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
++
++#define PROT_READ 0x1 /* Page can be read. */
++#define PROT_WRITE 0x2 /* Page can be written. */
++#define PROT_EXEC 0x4 /* Page can be executed. */
++#define PROT_NONE 0x0 /* Page can not be accessed. */
++
++/* Sharing types (must choose one and only one of these). */
++#define MAP_SHARED 0x01 /* Share changes. */
++#define MAP_PRIVATE 0x02 /* Changes are private. */
++#ifdef __USE_MISC
++# define MAP_TYPE 0x0f /* Mask for type of mapping. */
++#endif
++
++/* Other flags. */
++#define MAP_FIXED 0x10 /* Interpret addr exactly. */
++#ifdef __USE_MISC
++# define MAP_FILE 0
++# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
++# define MAP_ANON MAP_ANONYMOUS
++#endif
++
++/* These are Linux-specific. */
++#ifdef __USE_MISC
++# 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 /* Lock the mapping. */
++# 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 */
++#endif
++
++/* Flags to `msync'. */
++#define MS_ASYNC 1 /* Sync memory asynchronously. */
++#define MS_SYNC 4 /* Synchronous memory sync. */
++#define MS_INVALIDATE 2 /* Invalidate the caches. */
++
++/* Flags for `mlockall'. */
++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */
++#define MCL_FUTURE 2 /* Lock all additions to address
++ space. */
++
++/* Flags for `mremap'. */
++#ifdef __USE_GNU
++# define MREMAP_MAYMOVE 1
++#endif
++
++/* Advise to `madvise'. */
++#ifdef __USE_BSD
++# define MADV_NORMAL 0 /* No further special treatment. */
++# define MADV_RANDOM 1 /* Expect random page references. */
++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define MADV_WILLNEED 3 /* Will need these pages. */
++# define MADV_DONTNEED 4 /* Don't need these pages. */
++#endif
++
++/* The POSIX people had to invent similar names for the same things. */
++#ifdef __USE_XOPEN2K
++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
++#endif
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/profil-counter.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/profil-counter.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,26 @@
++/* Low-level statistical profiling support function. Linux/AVR32 version.
++ Copyright (C) 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <signal.h>
++
++void
++profil_counter(int signo, siginfo_t *si, struct sigcontext *sc)
++{
++ profil_count((void *)sc->pc);
++}
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/setjmp.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/setjmp.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,21 @@
++/*
++ * Copyright (C) 2004-2005 Atmel Norway
++ */
++#ifndef _SETJMP_H
++# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
++#endif
++
++#ifndef _ASM
++/*
++ * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
++ * not saved.
++ */
++typedef int __jmp_buf[11];
++#endif
++
++#define __JMP_BUF_SP 4
++
++/* Test if longjmp to JMPBUF would unwind the frame containing a local
++ variable at ADDRESS. */
++#define _JMPBUF_UNWINDS(jmpbuf, address) \
++ ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/syscalls.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/syscalls.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,143 @@
++#ifndef _SYSCALL_H
++# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
++#endif
++
++/*
++ * This includes the `__NR_<name>' syscall numbers taken from the
++ * Linux kernel header files. It also defines the traditional
++ * `SYS_<name>' macros for older programs.
++ */
++#include <bits/sysnum.h>
++
++#ifndef __set_errno
++# define __set_errno(val) (*__errno_location()) = (val)
++#endif
++#ifndef SYS_ify
++# define SYS_ify(syscall_name) (__NR_##syscall_name)
++#endif
++
++#ifndef __ASSEMBLER__
++
++#undef _syscall0
++#define _syscall0(type,name) \
++ type name(void) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 0)); \
++ }
++
++#undef _syscall1
++#define _syscall1(type,name,type1,arg1) \
++ type name(type1 arg1) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 1, arg1)); \
++ }
++
++#undef _syscall2
++#define _syscall2(type,name,type1,arg1,type2,arg2) \
++ type name(type1 arg1, type2 arg2) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 2, arg1, arg2)); \
++ }
++
++#undef _syscall3
++#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
++ type name(type1 arg1, type2 arg2, type3 arg3) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 3, arg1, \
++ arg2, arg3)); \
++ }
++
++#undef _syscall4
++#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 4, arg1, arg2, \
++ arg3, arg4)); \
++ }
++
++#undef _syscall5
++#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 5, arg1, arg2, \
++ arg3, arg4, arg5)); \
++ }
++
++#undef _syscall6
++#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5,type6,arg6) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5, type6 arg6) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 6, arg1, arg2, arg3, \
++ arg4, arg5, arg6)); \
++ }
++
++#undef unlikely
++#define unlikely(x) __builtin_expect((x), 0)
++
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ ({ \
++ unsigned _sys_result = INTERNAL_SYSCALL(name, , nr, args); \
++ if (unlikely(INTERNAL_SYSCALL_ERROR_P(_sys_result, ))) { \
++ __set_errno(INTERNAL_SYSCALL_ERRNO(_sys_result, )); \
++ _sys_result = (unsigned int) -1; \
++ } \
++ (int) _sys_result; \
++ })
++
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) do { } while(0)
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) \
++ ({ \
++ register int _a1 asm ("r12"); \
++ register int _scno asm("r8") = SYS_ify(name); \
++ LOAD_ARGS_##nr (args); \
++ asm volatile ("scall /* syscall " #name " */" \
++ : "=r" (_a1) \
++ : "r"(_scno) ASM_ARGS_##nr \
++ : "lr", "cc", "memory"); \
++ _a1; \
++ })
++
++#undef INTERNAL_SYSCALL_ERROR_P
++#define INTERNAL_SYSCALL_ERROR_P(val, err) \
++ ((unsigned int)(val) >= 0xfffff001U)
++
++#undef INTERNAL_SYSCALL_ERRNO
++#define INTERNAL_SYSCALL_ERRNO(val, errr) (-(val))
++
++#define LOAD_ARGS_0() do { } while(0)
++#define ASM_ARGS_0
++#define LOAD_ARGS_1(a1) \
++ _a1 = (int) (a1); \
++ LOAD_ARGS_0()
++#define ASM_ARGS_1 ASM_ARGS_0, "r"(_a1)
++#define LOAD_ARGS_2(a1, a2) \
++ register int _a2 asm("r11") = (int)(a2); \
++ LOAD_ARGS_1(a1)
++#define ASM_ARGS_2 ASM_ARGS_1, "r"(_a2)
++#define LOAD_ARGS_3(a1, a2, a3) \
++ register int _a3 asm("r10") = (int)(a3); \
++ LOAD_ARGS_2(a1, a2)
++#define ASM_ARGS_3 ASM_ARGS_2, "r"(_a3)
++#define LOAD_ARGS_4(a1, a2, a3, a4) \
++ register int _a4 asm("r9") = (int)(a4); \
++ LOAD_ARGS_3(a1, a2, a3)
++#define ASM_ARGS_4 ASM_ARGS_3, "r"(_a4)
++#define LOAD_ARGS_5(a1, a2, a3, a4, a5) \
++ register int _a5 asm("r5") = (int)(a5); \
++ LOAD_ARGS_4(a1, a2, a3, a4)
++#define ASM_ARGS_5 ASM_ARGS_4, "r"(_a5)
++#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6) \
++ register int _a6 asm("r3") = (int)(a6); \
++ LOAD_ARGS_5(a1, a2, a3, a4, a5)
++#define ASM_ARGS_6 ASM_ARGS_5, "r"(_a6)
++
++#endif /* __ASSEMBLER__ */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/wordsize.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/wordsize.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1 @@
++#define __WORDSIZE 32
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/brk.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/brk.c 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,23 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <sys/syscall.h>
++
++void *__curbrk = 0;
++
++int brk (void *addr)
++{
++ void *newbrk;
++
++ newbrk = INLINE_SYSCALL(brk, 1, addr);
++
++ __curbrk = newbrk;
++
++ if (newbrk < addr) {
++ __set_errno (ENOMEM);
++ return -1;
++ }
++
++ return 0;
++}
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-_setjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-_setjmp.S 2006-05-05 09:26:42.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 0) */
++ .global _setjmp
++ .type _setjmp,"function"
++ .align 1
++_setjmp:
++ mov r11, 0
++ bral __sigsetjmp_internal
++ .size _setjmp, . - _setjmp
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-setjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-setjmp.S 2006-05-05 09:26:42.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 1) */
++ .global setjmp
++ .type setjmp,"function"
++ .align 1
++setjmp:
++ mov r11, 1
++ bral __sigsetjmp_internal
++ .size setjmp, . - setjmp
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/clone.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/clone.c 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,37 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++
++/*
++ * I don't know if we can be absolutely certain that the fn and arg
++ * parameters are preserved when returning as the child. If the
++ * compiler stores them in registers (r0-r7), they should be.
++ */
++int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg)
++{
++ register int (*_fn)(void *arg) = fn;
++ register void *_arg = arg;
++ int err;
++
++ /* Sanity check the arguments */
++ err = -EINVAL;
++ if (!fn)
++ goto syscall_error;
++ if (!child_stack)
++ goto syscall_error;
++
++ err = INLINE_SYSCALL(clone, 2, flags, child_stack);
++ if (err < 0)
++ goto syscall_error;
++ else if (err != 0)
++ return err;
++
++ _exit(_fn(_arg));
++
++syscall_error:
++ __set_errno (-err);
++ return -1;
++}
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/crt1.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/crt1.S 2006-05-05 09:28:23.000000000 +0200
+@@ -0,0 +1,93 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ *
++ * When we enter _start, the stack looks like this:
++ * argc argument counter
++ * argv[0] pointer to program name
++ * argv[1..argc-1] pointers to program args
++ * NULL
++ * env[0..N] pointers to environment variables
++ * NULL
++ *
++ * r12 contains a function pointer to be registered with `atexit'.
++ * This is how the dynamic linker arranges to have DT_FINI functions
++ * called for shared libraries that have been loaded before this
++ * code runs.
++ *
++ * We're going to call the following function:
++ * __uClibc_main(int (*main)(int, char **, char **), int argc,
++ * char **argv, void (*app_init)(void), void (*app_fini)(void),
++ * void (*rtld_fini)(void), void *stack_end)
++ *
++ * So we need to set up things as follows:
++ * r12 = address of main
++ * r11 = argc
++ * r10 = &argv[0]
++ * r9 = address of _init
++ * r8 = address of _fini
++ * sp[0] = whatever we got passed in r12
++ */
++
++#include <features.h>
++
++ .text
++ .global _start
++ .type _start, @function
++_start:
++ /* Clear the frame pointer and link register since this is the outermost frame. */
++ mov r7, 0
++ mov lr, 0
++
++ ld.w r11, sp++ /* argc */
++ mov r10, sp /* &argv[0] */
++
++ st.w --sp, r10 /* stack_end */
++ st.w --sp, r12 /* rtld_fini */
++
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++.L_RGOT:
++ rsub r6, pc
++ lda.w r9, _init
++ lda.w r8, _fini
++ lda.w r12, main
++
++ /* Ok, now run uClibc's main() -- should not return */
++ call __uClibc_main
++
++ .align 2
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++ lddpc r9, __init_addr /* app_init */
++ lddpc r8, __fini_addr /* app_fini */
++ lddpc r12, __main_addr /* main */
++
++ /* Ok, now run uClibc's main() -- should not return */
++ lddpc pc, ___uClibc_main_addr
++
++ .align 2
++__init_addr:
++ .long _init
++__fini_addr:
++ .long _fini
++__main_addr:
++ .long main
++___uClibc_main_addr:
++ .long __uClibc_main
++#endif
++ .size _start, . - _start
++
++ /*
++ * The LSB says we need this.
++ */
++ .section ".note.ABI-tag", "a"
++ .align 4
++ .long 2f - 1f /* namesz */
++ .long 4f - 3f /* descsz */
++ .long 1 /* type */
++1: .asciz "GNU" /* name */
++2: .align 4
++3: .long 0 /* Linux executable */
++ .long 2,6,0 /* Earliest compatible kernel */
++4: .align 4
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/crti.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/crti.S 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,17 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++_init:
++ /* Use a four-byte instruction to avoid NOPs */
++ stm --sp, r0-r7,lr
++ .align 2
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++_fini:
++ stm --sp, r0-r7,lr
++ .align 2
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/crtn.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/crtn.S 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,14 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++ ldm sp++, r0-r7,pc
++ .size _init, . - _init
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++ ldm sp++, r0-r7,pc
++ .size _fini, . - _fini
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/mmap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/mmap.c 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,31 @@
++/* Copyright (C) 2005 Atmel Norway
++
++ This program is free software; you can redistribute it and/or modify it under
++ the terms of the GNU Library General Public License as published by the Free
++ Software Foundation; either version 2 of the License, or (at your option) any
++ later version.
++
++ 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 Library General Public License for more
++ details.
++
++ You should have received a copy of the GNU Library 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
++
++ Derived in part from the Linux-8086 C library, the GNU C Library, and several
++ other sundry sources. Files within this library are copyright by their
++ respective copyright holders.
++ */
++
++#include <errno.h>
++#include <sys/mman.h>
++#include <sys/syscall.h>
++
++static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, pgoff);
++
++__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
++{
++ return mmap2(addr, len, prot, flags, fd, offset >> 12);
++}
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/setjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/setjmp.S 2006-05-05 09:28:28.000000000 +0200
+@@ -0,0 +1,43 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#define _SETJMP_H
++#define _ASM
++#include <bits/setjmp.h>
++
++ .text
++
++ .global __sigsetjmp
++ .type __sigsetjmp,"function"
++
++ /* Create a global, hidden symbol for use by setjmp() and _setjmp().
++ If it's not hidden, the linker will complain about a relative
++ jump to a dynamic symbol when building a shared library.
++
++ Also, if a user overrides the __sigsetjmp function, he might not
++ expect the setjmp() and _setjmp() function to effectively be
++ overridden as well. */
++ .global __sigsetjmp_internal
++ .hidden __sigsetjmp_internal
++ .type __sigsetjmp_internal,"function"
++ .align 1
++__sigsetjmp:
++__sigsetjmp_internal:
++ mustr r8
++ stm r12, r0,r1,r2,r3,r4,r5,r6,r7,r8,sp,lr
++
++ /* Make a tail call to __sigjmp_save; it takes the same args. */
++#ifdef __PIC__
++ mov r9, r6
++ lddpc r6, .LG
++.L1: rsub r6, pc
++ ld.w r8, r6[__sigjmp_save@got]
++ mov r6, r9
++ mov pc, r8
++
++ .align 2
++.LG: .long .L1 - _GLOBAL_OFFSET_TABLE_
++#else
++ rjmp __sigjmp_save
++#endif
++ .size __sigsetjmp, . - __sigsetjmp
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/sigaction.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/sigaction.c 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,49 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <signal.h>
++#include <string.h>
++#include <sys/syscall.h>
++#include <bits/kernel_sigaction.h>
++
++#define SA_RESTORER 0x04000000
++extern void __default_rt_sa_restorer(void);
++
++/*
++ * If act is not NULL, change the action for sig to *act.
++ * If oact is not NULL, put the old action for sig in *oact.
++ */
++int __libc_sigaction(int signum, const struct sigaction *act,
++ struct sigaction *oldact)
++{
++ struct kernel_sigaction kact, koact;
++ int result;
++
++ if (act) {
++ kact.k_sa_handler = act->sa_handler;
++ memcpy(&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
++ kact.sa_flags = act->sa_flags;
++ if (kact.sa_flags & (SA_RESTORER | SA_ONSTACK))
++ kact.sa_restorer = act->sa_restorer;
++ else
++ kact.sa_restorer = __default_rt_sa_restorer;
++ kact.sa_flags |= SA_RESTORER;
++ }
++
++ result = __syscall_rt_sigaction(signum, act ? __ptrvalue(&kact) : NULL,
++ oldact ? __ptrvalue(&koact) : NULL,
++ _NSIG / 8);
++
++ if (oldact && result >= 0) {
++ oldact->sa_handler = koact.k_sa_handler;
++ memcpy(&oldact->sa_mask, &koact.sa_mask,
++ sizeof(oldact->sa_mask));
++ oldact->sa_flags = koact.sa_flags;
++ oldact->sa_restorer = koact.sa_restorer;
++ }
++
++ return result;
++}
++
++weak_alias(__libc_sigaction, sigaction)
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/sigrestorer.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/sigrestorer.S 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,11 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <sys/syscall.h>
++
++ .global __default_rt_sa_restorer
++ .type __default_rt_sa_restorer,"function"
++ .align 1
++__default_rt_sa_restorer:
++ mov r8, __NR_rt_sigreturn
++ scall
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/elf.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/elf.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,26 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_ELF_H
++#define _SYS_ELF_H 1
++
++#warning "This header is obsolete; use <sys/procfs.h> instead."
++
++#include <sys/procfs.h>
++
++#endif /* sys/elf.h */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/io.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/io.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,48 @@
++/* Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_IO_H
++
++#define _SYS_IO_H 1
++#include <features.h>
++
++__BEGIN_DECLS
++
++/* If TURN_ON is TRUE, request for permission to do direct i/o on the
++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
++ permission off for that range. This call requires root privileges. */
++extern int ioperm (unsigned long int __from, unsigned long int __num,
++ int __turn_on) __THROW;
++
++/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
++ permission to access any I/O port is granted. This call requires
++ root privileges. */
++extern int iopl (int __level) __THROW;
++
++/* The functions that actually perform reads and writes. */
++extern unsigned char inb (unsigned long int port) __THROW;
++extern unsigned short int inw (unsigned long int port) __THROW;
++extern unsigned long int inl (unsigned long int port) __THROW;
++
++extern void outb (unsigned char value, unsigned long int port) __THROW;
++extern void outw (unsigned short value, unsigned long int port) __THROW;
++extern void outl (unsigned long value, unsigned long int port) __THROW;
++
++__END_DECLS
++
++#endif /* _SYS_IO_H */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/procfs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/procfs.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,123 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_PROCFS_H
++#define _SYS_PROCFS_H 1
++
++/* This is somewhat modelled after the file of the same name on SVR4
++ systems. It provides a definition of the core file format for ELF
++ used on Linux. It doesn't have anything to do with the /proc file
++ system, even though Linux has one.
++
++ Anyway, the whole purpose of this file is for GDB and GDB only.
++ Don't read too much into it. Don't use it for anything other than
++ GDB unless you know what you are doing. */
++
++#include <features.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/user.h>
++
++__BEGIN_DECLS
++
++/* Type for a general-purpose register. */
++typedef unsigned long elf_greg_t;
++
++/* And the whole bunch of them. We could have used `struct
++ user_regs' directly in the typedef, but tradition says that
++ the register set is an array, which does have some peculiar
++ semantics, so leave it that way. */
++#define ELF_NGREG (sizeof (struct user_regs) / sizeof(elf_greg_t))
++typedef elf_greg_t elf_gregset_t[ELF_NGREG];
++
++/* Register set for the floating-point registers. */
++typedef struct user_fpregs elf_fpregset_t;
++
++/* Signal info. */
++struct elf_siginfo
++ {
++ int si_signo; /* Signal number. */
++ int si_code; /* Extra code. */
++ int si_errno; /* Errno. */
++ };
++
++/* Definitions to generate Intel SVR4-like core files. These mostly
++ have the same names as the SVR4 types with "elf_" tacked on the
++ front to prevent clashes with Linux definitions, and the typedef
++ forms have been avoided. This is mostly like the SVR4 structure,
++ but more Linuxy, with things that Linux does not support and which
++ GDB doesn't really use excluded. */
++
++struct elf_prstatus
++ {
++ struct elf_siginfo pr_info; /* Info associated with signal. */
++ short int pr_cursig; /* Current signal. */
++ unsigned long int pr_sigpend; /* Set of pending signals. */
++ unsigned long int pr_sighold; /* Set of held signals. */
++ __pid_t pr_pid;
++ __pid_t pr_ppid;
++ __pid_t pr_pgrp;
++ __pid_t pr_sid;
++ struct timeval pr_utime; /* User time. */
++ struct timeval pr_stime; /* System time. */
++ struct timeval pr_cutime; /* Cumulative user time. */
++ struct timeval pr_cstime; /* Cumulative system time. */
++ elf_gregset_t pr_reg; /* GP registers. */
++ int pr_fpvalid; /* True if math copro being used. */
++ };
++
++
++#define ELF_PRARGSZ (80) /* Number of chars for args. */
++
++struct elf_prpsinfo
++ {
++ char pr_state; /* Numeric process state. */
++ char pr_sname; /* Char for pr_state. */
++ char pr_zomb; /* Zombie. */
++ char pr_nice; /* Nice val. */
++ unsigned long int pr_flag; /* Flags. */
++ unsigned short int pr_uid;
++ unsigned short int pr_gid;
++ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
++ /* Lots missing */
++ char pr_fname[16]; /* Filename of executable. */
++ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
++ };
++
++/* The rest of this file provides the types for emulation of the
++ Solaris <proc_service.h> interfaces that should be implemented by
++ users of libthread_db. */
++
++/* Addresses. */
++typedef void *psaddr_t;
++
++/* Register sets. Linux has different names. */
++typedef elf_gregset_t prgregset_t;
++typedef elf_fpregset_t prfpregset_t;
++
++/* We don't have any differences between processes and threads,
++ therefore have only one PID type. */
++typedef __pid_t lwpid_t;
++
++/* Process status and info. In the end we do provide typedefs for them. */
++typedef struct elf_prstatus prstatus_t;
++typedef struct elf_prpsinfo prpsinfo_t;
++
++__END_DECLS
++
++#endif /* sys/procfs.h */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/ucontext.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/ucontext.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,94 @@
++/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* Linux/AVR32 ABI compliant context switching support. */
++
++#ifndef _SYS_UCONTEXT_H
++#define _SYS_UCONTEXT_H 1
++
++#include <features.h>
++#include <signal.h>
++#include <sys/procfs.h>
++#include <bits/sigcontext.h>
++
++typedef int greg_t;
++
++/* Number of general registers. */
++#define NGREG 16
++
++/* Container for all general registers. */
++typedef elf_gregset_t gregset_t;
++
++/* Number of each register is the `gregset_t' array. */
++enum
++{
++ R0 = 0,
++#define R0 R0
++ R1 = 1,
++#define R1 R1
++ R2 = 2,
++#define R2 R2
++ R3 = 3,
++#define R3 R3
++ R4 = 4,
++#define R4 R4
++ R5 = 5,
++#define R5 R5
++ R6 = 6,
++#define R6 R6
++ R7 = 7,
++#define R7 R7
++ R8 = 8,
++#define R8 R8
++ R9 = 9,
++#define R9 R9
++ R10 = 10,
++#define R10 R10
++ R11 = 11,
++#define R11 R11
++ R12 = 12,
++#define R12 R12
++ R13 = 13,
++#define R13 R13
++ R14 = 14,
++#define R14 R14
++ R15 = 15
++#define R15 R15
++};
++
++/* Structure to describe FPU registers. */
++typedef elf_fpregset_t fpregset_t;
++
++/* Context to describe whole processor state. */
++typedef struct
++ {
++ gregset_t gregs;
++ fpregset_t fpregs;
++ } mcontext_t;
++
++/* Userlevel context. */
++typedef 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 */
++} ucontext_t;
++
++#endif /* sys/ucontext.h */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/user.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/user.h 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,46 @@
++#ifndef _SYS_USER_H
++#define _SYS_USER_H
++
++struct user_fpregs
++{
++
++};
++
++struct user_regs
++{
++ unsigned long sr;
++ unsigned long pc;
++ unsigned long lr;
++ unsigned long sp;
++ unsigned long r12;
++ unsigned long r11;
++ unsigned long r10;
++ unsigned long r9;
++ unsigned long r8;
++ unsigned long r7;
++ unsigned long r6;
++ unsigned long r5;
++ unsigned long r4;
++ unsigned long r3;
++ unsigned long r2;
++ unsigned long r1;
++ unsigned long r0;
++ unsigned long r12_orig;
++};
++
++struct user
++{
++ struct user_regs regs; /* general registers */
++ size_t u_tsize; /* text size (pages) */
++ size_t u_dsize; /* data size (pages) */
++ size_t u_ssize; /* stack size (pages) */
++ unsigned long start_code; /* text starting address */
++ unsigned long start_data; /* data starting address */
++ unsigned long start_stack; /* stack starting address */
++ long int signal; /* signal causing core dump */
++ struct user_regs * u_ar0; /* help gdb find registers */
++ unsigned long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#endif /* _SYS_USER_H */
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/syscall.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/syscall.S 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,81 @@
++/*
++ * syscall for AVR32/uClibc
++ *
++ * Copyright (C) 2004 Atmel Norway
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU Library General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ * 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 Library General Public License
++ * for more details.
++ *
++ * You should have received a copy of the GNU Library 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
++ */
++#include <features.h>
++
++ .text
++
++ /*
++ * long int syscall(long int sysno, ...)
++ */
++ .global syscall
++ .type syscall, @function
++ .align 2
++syscall:
++ stm --sp, r3,r5,lr
++ sub lr, sp, -12
++ mov r8, r12
++ ldm lr, r3,r5,r9-r12
++ scall
++ cp.w r12, -4095
++ brlo .Ldone
++
++#ifdef __PIC__
++ lddpc r5, .Lgot
++.Lgotcalc:
++ rsub r5, pc
++# ifdef __UCLIBC_HAS_THREADS__
++ mov r3, r12
++ mcall r5[__errno_location@got]
++ st.w r12[0], r3
++# else
++ ld.w r3, r5[errno@got]
++ st.w r3[0], r12
++# endif
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++ mov r3, r12
++ mcall .Lerrno_location
++ st.w r12[0], r3
++# else
++ lddpc r3, .Lerrno
++ st.w r3[0], r12
++# endif
++#endif
++ mov r12, -1
++
++.Ldone:
++ ldm sp++, r3,r5,pc
++
++ .align 2
++#ifdef __PIC__
++.Lgot:
++ .long .Lgotcalc - _GLOBAL_OFFSET_TABLE_
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++.Lerrno_location:
++ .long __errno_location
++# else
++.Lerrno:
++ .long errno
++# endif
++#endif
++
++
++ .size syscall, . - syscall
+Index: uClibc-0.9.28/libc/sysdeps/linux/avr32/vfork.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libc/sysdeps/linux/avr32/vfork.S 2006-04-19 12:48:33.000000000 +0200
+@@ -0,0 +1,55 @@
++ /*
++ * vfork for uClibc
++ *
++ * Copyright (C) 2005 Atmel Norway
++ */
++
++ /*
++ * Clone the process without copying the address space. The
++ * calling process is suspended until the child either exits
++ * or calls execve.
++ *
++ * This all means that we cannot rely on the stack to store
++ * away registers, since they will be overwritten by the child
++ * as soon as it makes another function call (e.g. execve()).
++ * Fortunately, the Linux kernel preserves LR across system calls.
++ */
++#include <features.h>
++#include <sys/syscall.h>
++
++ .global __vfork
++ .type __vfork,@function
++ .align 1
++__vfork:
++ mov r8, __NR_vfork
++ scall
++ cp.w r12, -4096
++ retls r12
++
++ /* vfork failed, so we may use the stack freely */
++ pushm r4-r7,lr
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++ rsub r4, r12, 0
++.L_RGOT:
++ rsub r6, pc
++ mcall r6[__errno_location@got]
++#else
++ rsub r4, r12, 0
++ mcall .L__errno_location
++#endif
++ st.w r12[0], r4
++ popm r4-r7,pc,r12=-1
++
++ .align 2
++#ifdef __PIC__
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++.L__errno_location:
++ .long __errno_location
++#endif
++ .size __vfork, . - __vfork
++
++ .weak vfork
++ vfork = __vfork
+Index: uClibc-0.9.28/Rules.mak
+===================================================================
+--- uClibc-0.9.28.orig/Rules.mak 2006-05-05 09:26:01.000000000 +0200
++++ uClibc-0.9.28/Rules.mak 2006-05-05 09:27:17.000000000 +0200
+@@ -231,6 +231,10 @@ ifeq ($(strip $(TARGET_ARCH)),frv)
+ UCLIBC_LDSO=ld.so.1
+ endif
+
++ifeq ($(strip $(TARGET_ARCH)),avr32)
++ CPU_CFLAGS-$(CONFIG_AP7000) += -mcpu=ap7000
++endif
++
+ # Keep the check_gcc from being needlessly executed
+ ifndef PIEFLAG
+ ifneq ($(UCLIBC_BUILD_PIE),y)
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/avr32-linkrelax-option.patch b/packages/uclibc/uclibc-0.9.28/avr32/avr32-linkrelax-option.patch
new file mode 100644
index 0000000000..991e3442c7
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/avr32-linkrelax-option.patch
@@ -0,0 +1,40 @@
+From nobody Mon Sep 17 00:00:00 2001
+Subject: [PATCH] Make linkrelax configurable
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: 1133951618 +0100
+
+Add a linkrelax option to the configure system which will give
+appropriate options to the compiler, assembler and linker to enable
+link-time optimizations.
+
+---
+
+ Rules.mak | 2 ++
+ extra/Configs/Config.avr32 | 4 ++++
+ 2 files changed, 6 insertions(+)
+
+Index: uClibc-0.9.28/Rules.mak
+===================================================================
+--- uClibc-0.9.28.orig/Rules.mak 2006-02-08 17:58:53.000000000 +0100
++++ uClibc-0.9.28/Rules.mak 2006-02-08 17:59:07.000000000 +0100
+@@ -233,6 +233,8 @@ endif
+
+ ifeq ($(strip $(TARGET_ARCH)),avr32)
+ CPU_CFLAGS-$(CONFIG_AP7000) += -mcpu=ap7000
++ CPU_CFLAGS-$(LINKRELAX) += -masm-addr-pseudos -Wa,--pic,--linkrelax
++ CPU_LDFLAGS-$(LINKRELAX) += --relax
+ endif
+
+ # Keep the check_gcc from being needlessly executed
+Index: uClibc-0.9.28/extra/Configs/Config.avr32
+===================================================================
+--- uClibc-0.9.28.orig/extra/Configs/Config.avr32 2006-02-08 17:58:53.000000000 +0100
++++ uClibc-0.9.28/extra/Configs/Config.avr32 2006-02-08 17:59:07.000000000 +0100
+@@ -36,3 +36,7 @@ config CONFIG_AP7000
+ bool "AP7000"
+
+ endchoice
++
++config LINKRELAX
++ bool "Enable linker optimizations"
++ default n
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/avr32-string-ops.patch b/packages/uclibc/uclibc-0.9.28/avr32/avr32-string-ops.patch
new file mode 100644
index 0000000000..8518ccf664
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/avr32-string-ops.patch
@@ -0,0 +1,1139 @@
+Subject: [PATCH] AVR32-optimized string operations
+
+Add hand-optimized AVR32-specific string operations. Some of them
+need a bit more testing, though.
+
+---
+
+ libc/string/avr32/Makefile | 40 +++++++++++
+ libc/string/avr32/bcopy.S | 15 ++++
+ libc/string/avr32/bzero.S | 12 +++
+ libc/string/avr32/memchr.S | 62 +++++++++++++++++
+ libc/string/avr32/memcmp.S | 50 +++++++++++++
+ libc/string/avr32/memcpy.S | 110 ++++++++++++++++++++++++++++++
+ libc/string/avr32/memmove.S | 114 +++++++++++++++++++++++++++++++
+ libc/string/avr32/memset.S | 60 ++++++++++++++++
+ libc/string/avr32/strcat.S | 95 ++++++++++++++++++++++++++
+ libc/string/avr32/strcmp.S | 80 ++++++++++++++++++++++
+ libc/string/avr32/strcpy.S | 63 +++++++++++++++++
+ libc/string/avr32/stringtest.c | 144 ++++++++++++++++++++++++++++++++++++++++
+ libc/string/avr32/strlen.S | 52 ++++++++++++++
+ libc/string/avr32/strncpy.S | 77 +++++++++++++++++++++
+ libc/string/avr32/test_memcpy.c | 66 ++++++++++++++++++
+ 15 files changed, 1040 insertions(+)
+
+Index: uClibc-0.9.28-avr32/libc/string/avr32/bcopy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/bcopy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,15 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++ .text
++ .global bcopy
++ .type bcopy, @function
++ .align 1
++bcopy:
++ /* Swap the first two arguments */
++ eor r11, r12
++ eor r12, r11
++ eor r11, r12
++ rjmp __memmove
++ .size bcopy, . - bcopy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/bzero.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/bzero.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++ .text
++ .global bzero
++ .type bzero, @function
++ .align 1
++bzero:
++ mov r10, r11
++ mov r11, 0
++ rjmp __memset
+Index: uClibc-0.9.28-avr32/libc/string/avr32/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/Makefile 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,40 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++TOPDIR=../../../
++include $(TOPDIR)Rules.mak
++
++SSRC := bcopy.S bzero.S memcmp.S memcpy.S memmove.S
++SSRC += memset.S strcmp.S strlen.S
++# memchr.S, strcat.S, strcpy.S, strncpy.S is broken
++SOBJS := $(patsubst %.S,%.o, $(SSRC))
++OBJS := $(SOBJS)
++
++OBJ_LIST:= ../../obj.string.$(TARGET_ARCH)
++
++all: $(OBJ_LIST)
++
++$(OBJ_LIST): $(OBJS)
++ echo $(addprefix string/$(TARGET_ARCH)/, $(OBJS)) > $@
++
++$(SOBJS): %.o: %.S
++ $(CC) $(ASFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $@
++
++clean:
++ $(RM) *.[oa] *~ core
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memchr.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memchr.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define str r12
++#define chr r11
++#define len r10
++
++ .text
++ .global memchr
++ .type memchr, @function
++memchr:
++ or chr, chr, chr << 8
++ or chr, chr, chr << 16
++
++ mov r9, str
++ andl r9, 3, COH
++ brne .Lunaligned_str
++
++1: sub len, 4
++ brlt 2f
++ ld.w r8, str++
++ psub.b r9, r8, r11
++ tnbz r9
++ brne 1b
++
++ sub str, 4
++ bfextu r9, r8, 24, 8
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ bfextu r9, r8, 16, 8
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ bfextu r9, r8, 8, 8
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ retal str
++
++2: sub len, -4
++ reteq 0
++
++3: ld.ub r8, str++
++ cp.w r8, 0
++ reteq str
++ sub len, 1
++ brne 3b
++
++ retal 0
++
++.Lunaligned_str:
++1: sub len, 1
++ retlt 0
++ ld.ub r8, str++
++ cp.b r8, r11
++ reteq str
++ sub r9, 1
++ brge 1b
++
++ rjmp .Laligned_search
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memcmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memcmp.S 2006-10-20 10:42:09.000000000 +0200
+@@ -0,0 +1,50 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global memcmp
++ .type memcmp, @function
++ .align 1
++memcmp:
++ sub len, 4
++ brlt .Lless_than_4
++
++1: ld.w r8, s1++
++ ld.w r9, s2++
++ cp.w r8, r9
++ brne .Lfound_word
++ sub len, 4
++ brge 1b
++
++.Lless_than_4:
++ sub len, -4
++ reteq 0
++
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ retne r8
++ sub len, 1
++ brgt 1b
++
++ retal 0
++
++.Lfound_word:
++ psub.b r9, r8, r9
++ bfextu r8, r9, 24, 8
++ retne r8
++ bfextu r8, r9, 16, 8
++ retne r8
++ bfextu r8, r9, 8, 8
++ retne r8
++ retal r9
++
++ .size memcmp, . - memcmp
++
++ .weak bcmp
++ bcmp = memcmp
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memcpy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memcpy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,110 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++/* Don't use r12 as dst since we must return it unmodified */
++#define dst r9
++#define src r11
++#define len r10
++
++ .text
++ .global memcpy
++ .type memcpy, @function
++
++ .global __memcpy
++ .hidden __memcpy
++ .type __memcpy, @function
++memcpy:
++__memcpy:
++ pref src[0]
++ mov dst, r12
++
++ /* If we have less than 32 bytes, don't do anything fancy */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, src++
++ st.b dst++, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, dst
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ ldm src, r0-r7
++ sub src, -32
++ stm dst, r0-r7
++ sub dst, -32
++ sub len, 32
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ ldm src, r0-r3
++ sub src, -16
++ sub len, 16
++ stm dst, r0-r3
++ sub dst, -16
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++ neg len
++ add pc, pc, len << 2
++ .rept 15
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ rsub r8, r8, 32
++ sub len, r8
++1: ld.ub r0, src++
++ st.b dst++, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[0]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, src++
++ st.w dst++, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++ .size memcpy, . - memcpy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memmove.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memmove.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,114 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define dst r12
++#define src r11
++#define len r10
++
++ .text
++ .global memmove
++ .type memmove, @function
++
++ .global __memmove
++ .hidden __memmove
++ .type __memmove, @function
++memmove:
++__memmove:
++ cp.w src, dst
++ brge __memcpy
++
++ add dst, len
++ add src, len
++ pref src[-1]
++
++ /*
++ * The rest is basically the same as in memcpy.S except that
++ * the direction is reversed.
++ */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, --src
++ st.b --dst, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, r12
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ sub src, 32
++ ldm src, r0-r7
++ sub dst, 32
++ sub len, 32
++ stm dst, r0-r7
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ sub src, 16
++ ldm src, r0-r3
++ sub dst, 16
++ sub len, 16
++ stm dst, r0-r3
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++ sub len, -16
++ breq 2f
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub len, 1
++ brne 1b
++
++2: popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ sub len, r8
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[-4]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, --src
++ st.w --dst, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, --src
++ st.b --dst, r0
++ .endr
++
++ popm r0-r7, pc
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memset.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memset.S 2006-10-20 10:42:15.000000000 +0200
+@@ -0,0 +1,60 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s r12
++#define c r11
++#define n r10
++
++ .text
++ .global memset
++ .type memset, @function
++
++ .global __memset
++ .hidden __memset
++ .type __memset, @function
++
++ .align 1
++memset:
++__memset:
++ cp.w n, 32
++ mov r9, s
++ brge .Llarge_memset
++
++ sub n, 1
++ retlt s
++1: st.b s++, c
++ sub n, 1
++ brge 1b
++
++ retal r9
++
++.Llarge_memset:
++ mov r8, r11
++ mov r11, 3
++ bfins r8, r8, 8, 8
++ bfins r8, r8, 16, 16
++ tst s, r11
++ breq 2f
++
++1: st.b s++, r8
++ sub n, 1
++ tst s, r11
++ brne 1b
++
++2: mov r11, r9
++ mov r9, r8
++ sub n, 8
++
++3: st.d s++, r8
++ sub n, 8
++ brge 3b
++
++ /* If we are done, n == -8 and we'll skip all st.b insns below */
++ neg n
++ lsl n, 1
++ add pc, n
++ .rept 7
++ st.b s++, r8
++ .endr
++ retal r11
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strcat.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strcat.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,95 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define s1 r9
++#define s2 r11
++
++ .text
++ .global strcat
++ .type strcat, @function
++ .align 1
++strcat:
++ mov s1, r12
++
++ /* Make sure s1 is word-aligned */
++ mov r10, s1
++ andl r10, 3, COH
++ breq 2f
++
++ add pc, pc, r10 << 3
++ sub r0, r0, 0 /* 4-byte nop */
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 2f
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 3f
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 4f
++
++ /* Find the end of the first string */
++5: ld.w r8, s1++
++ tnbz r8
++ brne 5b
++
++ sub s1, 4
++
++ bfextu r10, r8, 24, 8
++ cp.w r10, 0
++ breq 1f
++ sub s1, -1
++ bfextu r10, r8, 16, 8
++ cp.w r10, 0
++ breq 2f
++ sub s1, -1
++ bfextu r10, r8, 8, 8
++ cp.w r10, 0
++ breq 3f
++ sub s1, -1
++ rjmp 4f
++
++ /* Now, append s2 */
++1: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++2: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++3: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++4: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++
++ /* Copy one word at a time */
++ ld.w r8, s2++
++ tnbz r8
++ breq 2f
++1: st.w r8, s2++
++ ld.w r8, s2++
++ tnbz r8
++ brne 1b
++
++ /* Copy the remaining bytes */
++ bfextu r10, r8, 24, 8
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 16, 8
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 8, 8
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ st.b s1++, r8
++ retal r12
++ .size strcat, . - strcat
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strcmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strcmp.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,80 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global strcmp
++ .type strcmp, @function
++ .align 1
++strcmp:
++ mov r8, 3
++ tst s1, r8
++ brne .Lunaligned_s1
++ tst s2, r8
++ brne .Lunaligned_s2
++
++1: ld.w r8, s1++
++ ld.w r9, s2++
++ cp.w r8, r9
++ brne 2f
++ tnbz r8
++ brne 1b
++ retal 0
++
++2: bfextu r12, r8, 24, 8
++ bfextu r11, r9, 24, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 16, 8
++ bfextu r11, r9, 16, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 8, 8
++ bfextu r11, r9, 8, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 0, 8
++ bfextu r11, r9, 0, 8
++ sub r12, r11
++ retal r12
++
++.Lunaligned_s1:
++3: tst s1, r8
++ breq 4f
++ ld.ub r10, s1++
++ ld.ub r9, s2++
++ sub r10, r9
++ retne r10
++ cp.w r9, 0
++ brne 3b
++ retal r10
++
++4: tst s2, r8
++ breq 1b
++
++.Lunaligned_s2:
++ /*
++ * s1 and s2 can't both be aligned, and unaligned word loads
++ * can trigger spurious exceptions if we cross a page boundary.
++ * Do it the slow way...
++ */
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ retne r8
++ cp.w r9, 0
++ brne 1b
++ retal 0
++
++ .weak strcoll
++ strcoll = strcmp
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strcpy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strcpy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,63 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ *
++ * To reduce the size, this one might simply call strncpy with len = -1.
++ */
++
++#define dst r9
++#define src r11
++
++ .text
++ .global strcpy
++ .type strcpy, @function
++strcpy:
++ mov dst, r12
++
++ pref src[0]
++
++ /*
++ * Check alignment. If src is aligned but dst isn't, we can't
++ * do much about it...
++ */
++ mov r8, src
++ andl r8, 3 COH
++ brne .Lunaligned_src
++
++.Laligned_copy:
++1: ld.w r8, src++
++ tnbz r8
++ breq 2f
++ st.w dst++, r8
++ rjmp 1b
++
++2: /*
++ * Ok, r8 now contains the terminating '\0'. Copy the
++ * remaining bytes individually.
++ */
++ bfextu r10, r8, 24, 8
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 16, 8
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 8, 8
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ st.b dst++, r8
++ retal r12
++
++.Lunaligned_src:
++ /* Copy bytes until we're aligned */
++ rsub r8, r8, 4
++ add pc, pc, r8 << 3
++ nop
++ nop
++ ld.ub r10, src++
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++
++ rjmp .Laligned_copy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/stringtest.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/stringtest.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,144 @@
++
++#include <stdio.h>
++#include <string.h>
++#include <time.h>
++#include <sys/mman.h>
++
++#define BUF_SIZE (8 * 1024)
++
++static char *buf1;
++static char *buf1_ref;
++static char *buf2;
++
++extern void *optimized_memcpy(void *dest, void *src, size_t len);
++extern void *optimized_memmove(void *dest, void *src, size_t len);
++extern char *optimized_strcpy(char *dest, char *src);
++extern char *optimized_strncpy(char *dest, char *src, size_t len);
++
++void dump_mismatch(char *buf, char *ref, size_t len)
++{
++ int i, j;
++
++ for (i = 0; i < len; i += 16) {
++ if (memcmp(buf + i, ref + i, 16) == 0)
++ continue;
++
++ printf("%4x buf:", i);
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", buf[j]);
++ printf("\n ref:");
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", ref[j]);
++ printf("\n");
++ }
++}
++
++static void test_memcpy(int src_offset, int dst_offset, int len)
++{
++ clock_t start, old, new;
++ int i;
++
++ memset(buf1, 0x55, BUF_SIZE);
++ memset(buf1_ref, 0x55, BUF_SIZE);
++ memset(buf2, 0xaa, BUF_SIZE);
++
++ printf("Testing memcpy with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ start = clock();
++ for (i = 0; i < 8192; i++)
++ optimized_memcpy(buf1 + dst_offset, buf2 + src_offset, len);
++ new = clock() - start;
++ start = clock();
++ for ( i = 0; i < 8192; i++)
++ memcpy(buf1_ref + dst_offset, buf2 + src_offset, len);
++ old = clock() - start;
++
++ if (memcmp(buf1, buf1_ref, BUF_SIZE) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, BUF_SIZE);
++ }
++ printf("CPU time used: %d vs. %d\n", new, old);
++}
++
++static void test_memmove(int src_offset, int dst_offset, int len)
++{
++ clock_t start, old, new;
++
++ memset(buf1, 0x55, BUF_SIZE);
++ memset(buf1_ref, 0x55, BUF_SIZE);
++ memset(buf2, 0xaa, BUF_SIZE);
++
++ printf("Testing memmove with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ start = clock();
++ optimized_memmove(buf1 + dst_offset, buf2 + src_offset, len);
++ new = clock() - start;
++ start = clock();
++ memmove(buf1_ref + dst_offset, buf2 + src_offset, len);
++ old = clock() - start;
++
++ if (memcmp(buf1, buf1_ref, BUF_SIZE) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, BUF_SIZE);
++ }
++ printf("CPU time used: %d vs. %d\n", new, old);
++}
++
++int main(int argc, char *argv[])
++{
++ buf2 = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf2 == MAP_FAILED) {
++ perror("Failed to allocate memory for buf2");
++ return 1;
++ }
++ buf1 = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf1 == MAP_FAILED) {
++ perror("Failed to allocate memory for buf1");
++ return 1;
++ }
++ buf1_ref = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf1_ref == MAP_FAILED) {
++ perror("Failed to allocate memory for buf1_ref");
++ return 1;
++ }
++ printf("\n === MEMCPY ===\n\n");
++
++ test_memcpy(0, 0, BUF_SIZE - 32);
++ test_memcpy(0, 0, 1);
++ test_memcpy(0, 0, 31);
++ test_memcpy(0, 0, 32);
++ test_memcpy(0, 0, 127);
++ test_memcpy(0, 0, 128);
++ test_memcpy(4, 4, BUF_SIZE - 32 - 4);
++ test_memcpy(1, 1, BUF_SIZE - 32 - 1);
++ test_memcpy(1, 1, 126);
++ test_memcpy(0, 3, 128);
++ test_memcpy(1, 4, 128);
++ test_memcpy(0, 0, 0);
++
++ printf("\n === MEMMOVE ===\n\n");
++
++ test_memmove(0, 0, BUF_SIZE - 32);
++ test_memmove(0, 0, 1);
++ test_memmove(0, 0, 31);
++ test_memmove(0, 0, 32);
++ test_memmove(0, 0, BUF_SIZE - 33);
++ test_memmove(0, 0, 128);
++ test_memmove(4, 4, BUF_SIZE - 32 - 4);
++ test_memmove(1, 1, BUF_SIZE - 32 - 1);
++ test_memmove(1, 1, BUF_SIZE - 130);
++ test_memmove(0, 3, BUF_SIZE - 128);
++ test_memmove(1, 4, BUF_SIZE - 128);
++ test_memmove(0, 0, 0);
++
++ return 0;
++}
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strlen.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strlen.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define str r12
++
++ .text
++ .global strlen
++ .type strlen, @function
++strlen:
++ mov r11, r12
++
++ mov r9, str
++ andl r9, 3, COH
++ brne .Lunaligned_str
++
++1: ld.w r8, str++
++ tnbz r8
++ brne 1b
++
++ sub r12, r11
++ bfextu r9, r8, 24, 8
++ cp.w r9, 0
++ subeq r12, 4
++ reteq r12
++ bfextu r9, r8, 16, 8
++ cp.w r9, 0
++ subeq r12, 3
++ reteq r12
++ bfextu r9, r8, 8, 8
++ cp.w r9, 0
++ subeq r12, 2
++ reteq r12
++ sub r12, 1
++ retal r12
++
++.Lunaligned_str:
++ add pc, pc, r9 << 3
++ sub r0, r0, 0 /* 4-byte nop */
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ brne 1b
++
++1: sub r12, 1
++ sub r12, r11
++ retal r12
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strncpy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strncpy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,77 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define dst r9
++#define src r11
++
++ .text
++ .global strcpy
++ .type strncpy, @function
++strncpy:
++ mov dst, r12
++
++ pref src[0]
++ mov dst, r12
++
++ /*
++ * Check alignment. If src is aligned but dst isn't, we can't
++ * do much about it...
++ */
++ mov r8, src
++ andl r8, 3 COH
++ brne .Lunaligned_src
++
++.Laligned_copy:
++ sub r10, 4
++ brlt 3f
++1: ld.w r8, src++
++ tnbz r8
++ breq 2f
++ st.w dst++, r8
++ sub r10, 4
++ brne 1b
++
++3: sub r10, -4
++ reteq r12
++
++ /* This is safe as long as src is word-aligned and r10 > 0 */
++ ld.w r8, src++
++
++2: /*
++ * Ok, r8 now contains the terminating '\0'. Copy the
++ * remaining bytes individually.
++ */
++ bfextu r11, r8, 24, 8
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ bfextu r11, r8, 16, 8
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ bfextu r11, r8, 8, 8
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ st.b dst++, r8
++ retal r12
++
++.Lunaligned_src:
++ /* Copy bytes until we're aligned */
++ min r8, r8, r10
++ sub r10, r8
++ sub r8, 1
++ retlt r12
++1: ld.ub r10, src++
++ st.b dst++, r10
++ sub r8, 1
++ brge 1b
++
++ rjmp .Laligned_copy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/test_memcpy.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/test_memcpy.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,66 @@
++
++#include <stdio.h>
++#include <string.h>
++
++#define BUF_SIZE 32768
++
++static char buf1[BUF_SIZE] __attribute__((aligned(32)));
++static char buf1_ref[BUF_SIZE] __attribute__((aligned(32)));
++static char buf2[BUF_SIZE] __attribute__((aligned(32)));
++
++extern void *new_memcpy(void *dest, void *src, size_t len);
++
++void dump_mismatch(char *buf, char *ref, size_t len)
++{
++ int i, j;
++
++ for (i = 0; i < len; i += 16) {
++ if (memcmp(buf + i, ref + i, 16) == 0)
++ continue;
++
++ printf("% 4x buf:", i);
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", buf[j]);
++ printf("\n ref:");
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", ref[j]);
++ printf("\n");
++ }
++}
++
++void test(int src_offset, int dst_offset, int len)
++{
++ memset(buf1, 0x55, sizeof(buf1));
++ memset(buf1_ref, 0x55, sizeof(buf1_ref));
++ memset(buf2, 0xaa, sizeof(buf2));
++
++ printf("Testing with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ new_memcpy(buf1 + dst_offset, buf2 + src_offset, len);
++ memcpy(buf1_ref + dst_offset, buf2 + src_offset, len);
++
++ if (memcmp(buf1, buf1_ref, sizeof(buf1)) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, sizeof(buf1));
++ }
++}
++
++int main(int argc, char *argv[])
++{
++ test(0, 0, BUF_SIZE);
++ test(0, 0, 1);
++ test(0, 0, 31);
++ test(0, 0, 32);
++ test(0, 0, 127);
++ test(0, 0, 128);
++ test(4, 4, BUF_SIZE - 4);
++ test(1, 1, BUF_SIZE - 1);
++ test(1, 1, 126);
++ test(0, 3, 128);
++ test(1, 4, 128);
++
++ return 0;
++}
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/fix-__libc_fcntl64-varargs-prototype.patch b/packages/uclibc/uclibc-0.9.28/avr32/fix-__libc_fcntl64-varargs-prototype.patch
new file mode 100644
index 0000000000..3319f98de9
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/fix-__libc_fcntl64-varargs-prototype.patch
@@ -0,0 +1,24 @@
+Subject: [PATCH] Fix __libc_fcntl64 prototype in __syscall_fcntl.c
+
+__libc_fcntl64 is a varargs function and should be declared as such.
+Otherwise, the gcc compiler for AVR32, and perhaps other architectures,
+will use the wrong calling convention.
+
+---
+
+ libc/sysdeps/linux/common/__syscall_fcntl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: uClibc-0.9.28/libc/sysdeps/linux/common/__syscall_fcntl.c
+===================================================================
+--- uClibc-0.9.28.orig/libc/sysdeps/linux/common/__syscall_fcntl.c 2006-02-07 16:48:32.000000000 +0100
++++ uClibc-0.9.28/libc/sysdeps/linux/common/__syscall_fcntl.c 2006-02-07 17:19:09.000000000 +0100
+@@ -12,7 +12,7 @@
+ #include <fcntl.h>
+
+ #if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
+-extern int __libc_fcntl64(int fd, int cmd, long arg);
++extern int __libc_fcntl64(int fd, int cmd, ...);
+ #endif
+
+ #define __NR___syscall_fcntl __NR_fcntl
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/fix-broken-__libc_open-declaration.patch b/packages/uclibc/uclibc-0.9.28/avr32/fix-broken-__libc_open-declaration.patch
new file mode 100644
index 0000000000..aafdc8cd7f
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/fix-broken-__libc_open-declaration.patch
@@ -0,0 +1,30 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
+Date: Fri Apr 7 17:10:32 2006 +0200
+Subject: [PATCH] Fix broken __libc_open declaration in open64.c
+
+__libc_open is a vararg function and should therefore be declared as
+such. Fixes bug #4190.
+
+---
+
+ libc/sysdeps/linux/common/open64.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+70f2c81903327a8a346e370830932b80045ab04e
+diff --git a/libc/sysdeps/linux/common/open64.c b/libc/sysdeps/linux/common/open64.c
+index 543aa13..d9a27a7 100644
+--- a/libc/sysdeps/linux/common/open64.c
++++ b/libc/sysdeps/linux/common/open64.c
+@@ -26,7 +26,7 @@
+ #endif
+
+ #ifdef __UCLIBC_HAS_LFS__
+-extern int __libc_open (__const char *file, int oflag, mode_t mode);
++extern int __libc_open (__const char *file, int oflag, ...);
+
+ /* Open FILE with access OFLAG. If OFLAG includes O_CREAT,
+ a third argument is the file protection. */
+--
+1.2.4
+
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/fix-getrusage-argument-type.patch b/packages/uclibc/uclibc-0.9.28/avr32/fix-getrusage-argument-type.patch
new file mode 100644
index 0000000000..d68576b9bd
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/fix-getrusage-argument-type.patch
@@ -0,0 +1,19 @@
+Subject: [PATCH] Fix getrusage argument type
+
+The first argument to getrusage is of type __rusage_who_t, not int.
+This patch fixes that.
+---
+
+ libc/sysdeps/linux/common/getrusage.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: uClibc-0.9.28/libc/sysdeps/linux/common/getrusage.c
+===================================================================
+--- uClibc-0.9.28.orig/libc/sysdeps/linux/common/getrusage.c 2006-02-07 17:18:22.000000000 +0100
++++ uClibc-0.9.28/libc/sysdeps/linux/common/getrusage.c 2006-02-07 17:18:31.000000000 +0100
+@@ -10,4 +10,4 @@
+ #include "syscalls.h"
+ #include <unistd.h>
+ #include <wait.h>
+-_syscall2(int, getrusage, int, who, struct rusage *, usage);
++_syscall2(int, getrusage, __rusage_who_t, who, struct rusage *, usage);
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/ldd-avr32-support.patch b/packages/uclibc/uclibc-0.9.28/avr32/ldd-avr32-support.patch
new file mode 100644
index 0000000000..dd61f174a7
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/ldd-avr32-support.patch
@@ -0,0 +1,25 @@
+Subject: [PATCH] ldd: AVR32 support
+
+Add AVR32-specific definitions to ldd.
+
+---
+
+ utils/ldd.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+Index: uClibc-0.9.28/utils/ldd.c
+===================================================================
+--- uClibc-0.9.28.orig/utils/ldd.c 2006-02-07 16:48:02.000000000 +0100
++++ uClibc-0.9.28/utils/ldd.c 2006-02-07 17:13:00.000000000 +0100
+@@ -56,6 +56,11 @@
+ #define ELFCLASSM ELFCLASS32
+ #endif
+
++#if defined(__avr32__)
++#define MATCH_MACHINE(x) (x == EM_AVR32)
++#define ELFCLASSM ELFCLASS32
++#endif
++
+ #if defined(__s390__)
+ #define MATCH_MACHINE(x) (x == EM_S390)
+ #define ELFCLASSM ELFCLASS32
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-_dl_memcpy.patch b/packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-_dl_memcpy.patch
new file mode 100644
index 0000000000..cf0e677ffe
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-_dl_memcpy.patch
@@ -0,0 +1,24 @@
+Subject: [PATCH] ldso: Always inline _dl_memcpy()
+
+On some gcc versions, inline is merely a hint. AVR32 depends on this
+function actually getting inlined, so we need to use __always_inline
+instead of just inline.
+
+---
+
+ ldso/include/dl-string.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: uClibc-0.9.28/ldso/include/dl-string.h
+===================================================================
+--- uClibc-0.9.28.orig/ldso/include/dl-string.h 2006-02-07 17:01:28.000000000 +0100
++++ uClibc-0.9.28/ldso/include/dl-string.h 2006-02-07 17:03:02.000000000 +0100
+@@ -134,7 +134,7 @@ static inline char * _dl_strstr(const ch
+ } while (1);
+ }
+
+-static inline void * _dl_memcpy(void * dst, const void * src, size_t len)
++static __always_inline void * _dl_memcpy(void * dst, const void * src, size_t len)
+ {
+ register char *a = dst-1;
+ register const char *b = src-1;
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-syscalls.patch b/packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-syscalls.patch
new file mode 100644
index 0000000000..e6f5c42585
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/ldso-always-inline-syscalls.patch
@@ -0,0 +1,107 @@
+Subject: [PATCH] ldso: Always inline system calls
+
+Some versions of gcc consider inline merely a hint. AVR32 depends on
+the system calls actually being inlined, so we need to use
+__always_inline instead of just inline.
+
+---
+
+ ldso/include/dl-syscall.h | 38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+Index: uClibc-0.9.28/ldso/include/dl-syscall.h
+===================================================================
+--- uClibc-0.9.28.orig/ldso/include/dl-syscall.h 2006-02-07 17:07:06.000000000 +0100
++++ uClibc-0.9.28/ldso/include/dl-syscall.h 2006-02-07 17:08:47.000000000 +0100
+@@ -60,59 +60,59 @@
+ dynamic linking at all, so we cannot return any error codes.
+ We just punt if there is an error. */
+ #define __NR__dl_exit __NR_exit
+-static inline _syscall1(void, _dl_exit, int, status);
++static __always_inline _syscall1(void, _dl_exit, int, status);
+
+ #define __NR__dl_close __NR_close
+-static inline _syscall1(int, _dl_close, int, fd);
++static __always_inline _syscall1(int, _dl_close, int, fd);
+
+ #define __NR__dl_open __NR_open
+-static inline _syscall3(int, _dl_open, const char *, fn, int, flags, __kernel_mode_t, mode);
++static __always_inline _syscall3(int, _dl_open, const char *, fn, int, flags, __kernel_mode_t, mode);
+
+ #define __NR__dl_write __NR_write
+-static inline _syscall3(unsigned long, _dl_write, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_write, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_read __NR_read
+-static inline _syscall3(unsigned long, _dl_read, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_read, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_mprotect __NR_mprotect
+-static inline _syscall3(int, _dl_mprotect, const void *, addr, unsigned long, len, int, prot);
++static __always_inline _syscall3(int, _dl_mprotect, const void *, addr, unsigned long, len, int, prot);
+
+ #define __NR__dl_stat __NR_stat
+-static inline _syscall2(int, _dl_stat, const char *, file_name, struct stat *, buf);
++static __always_inline _syscall2(int, _dl_stat, const char *, file_name, struct stat *, buf);
+
+ #define __NR__dl_munmap __NR_munmap
+-static inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
++static __always_inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
+
+ #define __NR__dl_getuid __NR_getuid
+-static inline _syscall0(uid_t, _dl_getuid);
++static __always_inline _syscall0(uid_t, _dl_getuid);
+
+ #define __NR__dl_geteuid __NR_geteuid
+-static inline _syscall0(uid_t, _dl_geteuid);
++static __always_inline _syscall0(uid_t, _dl_geteuid);
+
+ #define __NR__dl_getgid __NR_getgid
+-static inline _syscall0(gid_t, _dl_getgid);
++static __always_inline _syscall0(gid_t, _dl_getgid);
+
+ #define __NR__dl_getegid __NR_getegid
+-static inline _syscall0(gid_t, _dl_getegid);
++static __always_inline _syscall0(gid_t, _dl_getegid);
+
+ #define __NR__dl_getpid __NR_getpid
+-static inline _syscall0(gid_t, _dl_getpid);
++static __always_inline _syscall0(gid_t, _dl_getpid);
+
+ #define __NR__dl_readlink __NR_readlink
+-static inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
++static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
+
+ #ifdef __NR_mmap
+ #ifdef MMAP_HAS_6_ARGS
+ #define __NR__dl_mmap __NR_mmap
+-static inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
++static __always_inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
+ int, prot, int, flags, int, fd, off_t, offset);
+ #else
+ #define __NR__dl_mmap_real __NR_mmap
+-static inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
++static __always_inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
+
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ unsigned long buffer[6];
+@@ -128,12 +128,12 @@ static inline void * _dl_mmap(void * add
+ #endif
+ #elif defined __NR_mmap2
+ #define __NR___syscall_mmap2 __NR_mmap2
+-static inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
++static __always_inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
+ size_t, len, int, prot, int, flags, int, fd, off_t, offset);
+ /*always 12, even on architectures where PAGE_SHIFT != 12 */
+ #define MMAP2_PAGE_SHIFT 12
+ #define MAP_FAILED ((void *) -1)
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-2.patch b/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-2.patch
new file mode 100644
index 0000000000..ddeb84d069
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-2.patch
@@ -0,0 +1,526 @@
+Subject: [PATCH] ldso: AVR32 support
+
+This implements the AVR32-specific parts of the dynamic linker.
+
+---
+
+ ldso/ldso/avr32/dl-debug.h | 45 +++++++++
+ ldso/ldso/avr32/dl-startup.h | 110 ++++++++++++++++++++++++
+ ldso/ldso/avr32/dl-syscalls.h | 5 +
+ ldso/ldso/avr32/dl-sysdep.h | 103 ++++++++++++++++++++++
+ ldso/ldso/avr32/elfinterp.c | 191 ++++++++++++++++++++++++++++++++++++++++++
+ ldso/ldso/avr32/resolve.S | 28 ++++++
+ 6 files changed, 482 insertions(+)
+
+Index: uClibc-0.9.28/ldso/ldso/avr32/dl-debug.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/ldso/ldso/avr32/dl-debug.h 2006-05-05 09:30:43.000000000 +0200
+@@ -0,0 +1,45 @@
++/*
++ * AVR32 ELF shared libary loader support
++ *
++ * Copyright (C) 2005 Atmel Norway
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++static const char *_dl_reltypes_tab[] = {
++ "R_AVR32_NONE",
++ "R_AVR32_32", "R_AVR32_16", "R_AVR32_8",
++ "R_AVR32_32_PCREL", "R_AVR32_16_PCREL", "R_AVR32_8_PCREL",
++ "R_AVR32_DIFF32", "R_AVR32_DIFF16", "R_AVR32_DIFF8",
++ "R_AVR32_GOT32", "R_AVR32_GOT16", "R_AVR32_GOT8",
++ "R_AVR32_21S", "R_AVR32_16U", "R_AVR32_16S", "R_AVR32_8S", "R_AVR32_8S_EXT",
++ "R_AVR32_22H_PCREL", "R_AVR32_18W_PCREL", "R_AVR32_16B_PCREL",
++ "R_AVR32_16N_PCREL", "R_AVR32_14UW_PCREL", "R_AVR32_11H_PCREL",
++ "R_AVR32_10UW_PCREL", "R_AVR32_9H_PCREL", "R_AVR32_9UW_PCREL",
++ "R_AVR32_HI16", "R_AVR32_LO16",
++ "R_AVR32_GOTPC", "R_AVR32_GOTCALL", "R_AVR32_LDA_GOT",
++ "R_AVR32_GOT21S", "R_AVR32_GOT18SW", "R_AVR32_GOT16S", "R_AVR32_GOT7UW",
++ "R_AVR32_32_CPENT", "R_AVR32_CPCALL", "R_AVR32_16_CP", "R_AVR32_9W_CP",
++ "R_AVR32_RELATIVE", "R_AVR32_GLOB_DAT", "R_AVR32_JMP_SLOT",
++ "R_AVR32_ALIGN",
++};
+Index: uClibc-0.9.28/ldso/ldso/avr32/dl-startup.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/ldso/ldso/avr32/dl-startup.h 2006-05-05 09:29:45.000000000 +0200
+@@ -0,0 +1,110 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * Architecture specific code used by dl-startup.c
++ * Copyright (C) 2005 Atmel Norway
++ */
++
++/* This is the library loader's main entry point. Let _dl_boot2 do its
++ * initializations and jump to the application's entry point
++ * afterwards. */
++asm( " .text\n"
++ " .global _start\n"
++ " .type _start,@function\n"
++ "_start:\n"
++ /* All arguments are on the stack initially */
++ " mov r12, sp\n"
++ " rcall _dl_start\n"
++ /* Returns user entry point in r12. Save it. */
++ " mov r0, r12\n"
++ /* We're PIC, so get the Global Offset Table */
++ " lddpc r6, .L_GOT\n"
++ ".L_RGOT:\n"
++ " rsub r6, pc\n"
++ /* Adjust argc and argv according to _dl_skip_args */
++ " ld.w r1, r6[_dl_skip_args@got]\n"
++ " ld.w r1, r1[0]\n"
++ " ld.w r2, sp++\n"
++ " sub r2, r1\n"
++ " add sp, sp, r1 << 2\n"
++ " st.w --sp, r2\n"
++ /* Load the finalizer function */
++ " ld.w r12, r6[_dl_fini@got]\n"
++ /* Jump to the user's entry point */
++ " mov pc, r0\n\n"
++
++ " .align 2\n"
++ ".L_GOT:"
++ " .long .L_RGOT - _GLOBAL_OFFSET_TABLE_\n"
++ " .size _start, . - _start\n"
++ " .previous\n");
++
++/* Get a pointer to the argv array. On many platforms this can be just
++ * the address if the first argument, on other platforms we need to
++ * do something a little more subtle here. */
++#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long *)ARGS + 1)
++
++
++/* We can't call functions before the GOT has been initialized */
++#define NO_FUNCS_BEFORE_BOOTSTRAP
++
++/*
++ * Relocate the GOT during dynamic loader bootstrap. This will add
++ * the load address to all entries in the GOT, which is necessary
++ * because the linker doesn't generate R_AVR32_RELATIVE relocs for the
++ * GOT.
++ */
++static __always_inline
++void PERFORM_BOOTSTRAP_GOT(struct elf_resolve *tpnt)
++{
++ Elf32_Addr i, nr_got;
++ register Elf32_Addr *__r6 __asm__("r6");
++ Elf32_Addr *got = __r6;
++
++ nr_got = tpnt->dynamic_info[DT_AVR32_GOTSZ_IDX] / sizeof(*got);
++ for (i = 2; i < nr_got; i++)
++ got[i] += tpnt->loadaddr;
++}
++
++#define PERFORM_BOOTSTRAP_GOT(tpnt) PERFORM_BOOTSTRAP_GOT(tpnt)
++
++/* Handle relocation of the symbols in the dynamic loader. */
++static __always_inline
++void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
++ unsigned long symbol_addr,
++ unsigned long load_addr, Elf32_Sym *symtab)
++{
++ switch(ELF32_R_TYPE(rpnt->r_info)) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr;
++ break;
++ case R_AVR32_RELATIVE:
++ SEND_STDERR_DEBUG("Applying RELATIVE relocation: ");
++ SEND_ADDRESS_STDERR_DEBUG(load_addr, 0);
++ SEND_STDERR_DEBUG(" + ");
++ SEND_ADDRESS_STDERR_DEBUG(rpnt->r_addend, 1);
++ *reloc_addr = load_addr + rpnt->r_addend;
++ break;
++ default:
++ SEND_STDERR("BOOTSTRAP_RELOC: unhandled reloc_type ");
++ SEND_NUMBER_STDERR(ELF32_R_TYPE(rpnt->r_info), 1);
++ SEND_STDERR("REL, SYMBOL, LOAD: ");
++ SEND_ADDRESS_STDERR(reloc_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(symbol_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(load_addr, 1);
++ _dl_exit(1);
++ }
++}
++
++/* Transfer control to the user's application, once the dynamic loader
++ * is done. This routine has to exit the current function, then call
++ * the _dl_elf_main function.
++ *
++ * Since our _dl_boot will simply call whatever is returned by
++ * _dl_boot2, we can just return the address we're supposed to
++ * call. */
++#define START() return _dl_elf_main;
+Index: uClibc-0.9.28/ldso/ldso/avr32/dl-syscalls.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/ldso/ldso/avr32/dl-syscalls.h 2006-05-05 09:29:25.000000000 +0200
+@@ -0,0 +1,5 @@
++/* We can't use the real errno in ldso, since it has not yet
++ * been dynamicly linked in yet. */
++extern int _dl_errno;
++#define __set_errno(X) {(_dl_errno) = (X);}
++#include "sys/syscall.h"
+Index: uClibc-0.9.28/ldso/ldso/avr32/dl-sysdep.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/ldso/ldso/avr32/dl-sysdep.h 2006-05-05 09:30:43.000000000 +0200
+@@ -0,0 +1,103 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * Various assembly language/system dependent hacks that are required
++ * so that we can minimize the amount of platform specific code.
++ * Copyright (C) 2004-2005 Atmel Norway
++ */
++
++/* Define this if the system uses RELOCA. */
++#define ELF_USES_RELOCA
++
++#include <elf.h>
++
++#define ARCH_NUM 1
++#define DT_AVR32_GOTSZ_IDX (DT_NUM + OS_NUM)
++
++#define ARCH_DYNAMIC_INFO(dpnt, dynamic, debug_addr) \
++ do { \
++ if (dpnt->d_tag == DT_AVR32_GOTSZ) \
++ dynamic[DT_AVR32_GOTSZ_IDX] = dpnt->d_un.d_val; \
++ } while (0)
++
++/* Initialization sequence for the application/library GOT. */
++#define INIT_GOT(GOT_BASE,MODULE) \
++ do { \
++ unsigned long i, nr_got; \
++ \
++ GOT_BASE[0] = (unsigned long) _dl_linux_resolve; \
++ GOT_BASE[1] = (unsigned long) MODULE; \
++ \
++ /* Add load address displacement to all GOT entries */ \
++ nr_got = MODULE->dynamic_info[DT_AVR32_GOTSZ_IDX] / 4; \
++ for (i = 2; i < nr_got; i++) \
++ GOT_BASE[i] += (unsigned long)MODULE->loadaddr; \
++ } while (0)
++
++#define do_rem(result, n, base) ((result) = (n) % (base))
++
++/* Here we define the magic numbers that this dynamic loader should accept */
++#define MAGIC1 EM_AVR32
++#undef MAGIC2
++
++/* Used for error messages */
++#define ELF_TARGET "AVR32"
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got);
++
++/* 4096 bytes alignment */
++#define PAGE_ALIGN 0xfffff000
++#define ADDR_ALIGN 0xfff
++#define OFFS_ALIGN 0x7ffff000
++
++#define elf_machine_type_class(type) \
++ ((type == R_AVR32_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
++
++/* AVR32 doesn't need any COPY relocs */
++#define DL_NO_COPY_RELOCS
++
++/* Return the link-time address of _DYNAMIC. Conveniently, this is the
++ first element of the GOT. This must be inlined in a function which
++ uses global data. */
++static inline Elf32_Addr
++elf_machine_dynamic (void)
++{
++ register Elf32_Addr *got asm ("r6");
++ return *got;
++}
++
++/* Return the run-time load address of the shared object. */
++static inline Elf32_Addr
++elf_machine_load_address (void)
++{
++ extern void __dl_start asm("_dl_start");
++ Elf32_Addr got_addr = (Elf32_Addr) &__dl_start;
++ Elf32_Addr pcrel_addr;
++
++ asm (" lddpc %0, 2f\n"
++ "1: add %0, pc\n"
++ " rjmp 3f\n"
++ " .align 2\n"
++ "2: .long _dl_start - 1b\n"
++ "3:\n"
++ : "=r"(pcrel_addr) : : "cc");
++
++ return pcrel_addr - got_addr;
++}
++
++/*
++ * Perform any RELATIVE relocations specified by DT_RELCOUNT.
++ * Currently, we don't use that tag, but we might in the future as
++ * this would reduce the startup time somewhat (although probably not by much).
++ */
++static inline void
++elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
++ Elf32_Word relative_count)
++{
++ Elf32_Rela *rpnt = (void *)rel_addr;
++
++ do {
++ Elf32_Addr *reloc_addr;
++ reloc_addr = (void *)(load_off + (rpnt++)->r_offset);
++ *reloc_addr = load_off + rpnt->r_addend;
++ } while (--relative_count);
++}
+Index: uClibc-0.9.28/ldso/ldso/avr32/elfinterp.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/ldso/ldso/avr32/elfinterp.c 2006-05-05 09:30:43.000000000 +0200
+@@ -0,0 +1,191 @@
++/*
++ * AVR32 ELF shared library loader suppport
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got)
++{
++ struct elf_resolve *tpnt = (struct elf_resolve *)got[1];
++ Elf32_Sym *sym;
++ unsigned long local_gotno;
++ unsigned long gotsym;
++ unsigned long new_addr;
++ char *strtab, *symname;
++ unsigned long *entry;
++ unsigned long sym_index = got_offset / 4;
++
++#if 0
++ local_gotno = tpnt->dynamic_info[DT_AVR32_LOCAL_GOTNO];
++ gotsym = tpnt->dynamic_info[DT_AVR32_GOTSYM];
++
++ sym = ((Elf32_Sym *)(tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr))
++ + sym_index;
++ strtab = (char *)(tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
++ symname = strtab + sym->st_name;
++
++#if 0
++ new_addr = (unsigned long) _dl_find_hash(strtab + sym->st_name,
++ tpnt->symbol_scope, tpnt,
++ resolver);
++#endif
++
++ entry = (unsigned long *)(got + local_gotno + sym_index - gotsym);
++ *entry = new_addr;
++#endif
++
++ return new_addr;
++}
++
++static int
++_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ unsigned long rel_addr, unsigned long rel_size,
++ int (*reloc_func)(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab))
++{
++ Elf32_Sym *symtab;
++ Elf32_Rela *rpnt;
++ char *strtab;
++ int i;
++
++ rpnt = (Elf32_Rela *)rel_addr;
++ rel_size /= sizeof(Elf32_Rela);
++ symtab = (Elf32_Sym *)tpnt->dynamic_info[DT_SYMTAB];
++ strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
++
++ for (i = 0; i < rel_size; i++, rpnt++) {
++ int symtab_index, res;
++
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++
++ debug_sym(symtab, strtab, symtab_index);
++ debug_reloc(symtab, strtab, rpnt);
++
++ res = reloc_func(tpnt, scope, rpnt, symtab, strtab);
++
++ if (res == 0)
++ continue;
++
++ _dl_dprintf(2, "\n%s: ", _dl_progname);
++
++ if (symtab_index)
++ _dl_dprintf(2, "symbol '%s': ",
++ strtab + symtab[symtab_index].st_name);
++
++ if (res < 0) {
++ int reloc_type = ELF32_R_TYPE(rpnt->r_info);
++#if defined(__SUPPORT_LD_DEBUG__)
++ _dl_dprintf(2, "can't handle reloc type %s\n",
++ _dl_reltypes(reloc_type));
++#else
++ _dl_dprintf(2, "can't handle reloc type %x\n",
++ reloc_type);
++#endif
++ _dl_exit(-res);
++ } else {
++ _dl_dprintf(2, "can't resolve symbol\n");
++ return res;
++ }
++ }
++
++ return 0;
++}
++
++static int _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab)
++{
++ int reloc_type;
++ int symtab_index;
++ char *symname;
++ unsigned long *reloc_addr;
++ unsigned long symbol_addr;
++#if defined(__SUPPORT_LD_DEBUG__)
++ unsigned long old_val;
++#endif
++
++ reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
++ reloc_type = ELF32_R_TYPE(rpnt->r_info);
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++ symbol_addr = 0;
++ symname = strtab + symtab[symtab_index].st_name;
++
++ if (symtab_index) {
++ symbol_addr = (unsigned long)
++ _dl_find_hash(strtab + symtab[symtab_index].st_name,
++ tpnt->symbol_scope, tpnt,
++ elf_machine_type_class(reloc_type));
++
++ /* Allow undefined references to weak symbols */
++ if (!symbol_addr &&
++ ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
++ _dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
++ _dl_progname, symname);
++ return 0;
++ }
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ old_val = *reloc_addr;
++#endif
++ switch (reloc_type) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr + rpnt->r_addend;
++ break;
++ case R_AVR32_RELATIVE:
++ *reloc_addr = (unsigned long)tpnt->loadaddr
++ + rpnt->r_addend;
++ break;
++ default:
++ return -1;
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ if (_dl_debug_reloc && _dl_debug_detail)
++ _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
++ old_val, *reloc_addr);
++#endif
++
++ return 0;
++}
++
++void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ /* TODO: Might want to support this in order to get faster
++ * startup times... */
++}
++
++int _dl_parse_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size,
++ _dl_do_reloc);
++}
+Index: uClibc-0.9.28/ldso/ldso/avr32/resolve.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/ldso/ldso/avr32/resolve.S 2006-05-05 09:29:25.000000000 +0200
+@@ -0,0 +1,28 @@
++/*
++ * Linux dynamic resolving code for AVR32. Fixes up the GOT entry as
++ * indicated in register r12 and jumps to the resolved address.
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ *
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define ip r5
++
++ .text
++ .global _dl_linux_resolve
++ .type _dl_linux_resolve,@function
++_dl_linux_resolve:
++ /* The PLT code pushed r8 for us. It contains the address of this
++ function's GOT entry, that is entry 0. ip contains the address
++ of the GOT entry of the function we wanted to call. */
++ stm --sp, r9-r12, lr
++ mov r11, r8
++ sub r12, ip, r8
++ rcall _dl_linux_resolver
++ mov ip, r12
++ popm r8-r12,lr
++ mov pc, ip
++ .size _dl_linux_resolve, . - _dl_linux_resolve
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-needs-CONSTANT_STRING_GOT_FIXUP.patch b/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-needs-CONSTANT_STRING_GOT_FIXUP.patch
new file mode 100644
index 0000000000..222749f3c2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-needs-CONSTANT_STRING_GOT_FIXUP.patch
@@ -0,0 +1,23 @@
+Subject: [PATCH] ldso: AVR32 needs CONSTANT_STRING_GOT_FIXUP
+
+Add AVR32 to the list of architectures needing CONSTANT_STRING_GOT_FIXUP.
+
+---
+
+ ldso/include/dl-string.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: uClibc-0.9.28/ldso/include/dl-string.h
+===================================================================
+--- uClibc-0.9.28.orig/ldso/include/dl-string.h 2006-02-07 16:58:58.000000000 +0100
++++ uClibc-0.9.28/ldso/include/dl-string.h 2006-02-07 16:59:28.000000000 +0100
+@@ -271,7 +271,8 @@ static __always_inline char * _dl_simple
+ /* On some arches constant strings are referenced through the GOT.
+ * This requires that load_addr must already be defined... */
+ #if defined(mc68000) || defined(__arm__) || defined(__mips__) \
+- || defined(__sh__) || defined(__powerpc__)
++ || defined(__sh__) || defined(__powerpc__) \
++ || defined(__avr32__)
+ # define CONSTANT_STRING_GOT_FIXUP(X) \
+ if ((X) < (const char *) load_addr) (X) += load_addr
+ # define NO_EARLY_SEND_STDERR
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-startup-hack.patch b/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-startup-hack.patch
new file mode 100644
index 0000000000..0cdc2ccb32
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/ldso-avr32-startup-hack.patch
@@ -0,0 +1,40 @@
+Subject: [PATCH] ldso: AVR32 startup hack
+
+AVR32 needs to do both PERFORM_BOOTSTRAP_GOT and a full relocation of
+the GOT. I don't quite remember why, but I think it's because some GOT
+entries just need the load address added to them, while the rest need
+the full relocation code.
+
+This patch should be revisited to figure out whether we're processing
+relocations against undefined symbols and whether that's something we
+should be doing...
+
+---
+
+ ldso/ldso/dl-startup.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+Index: uClibc-0.9.28/ldso/ldso/dl-startup.c
+===================================================================
+--- uClibc-0.9.28.orig/ldso/ldso/dl-startup.c 2006-02-07 16:49:27.000000000 +0100
++++ uClibc-0.9.28/ldso/ldso/dl-startup.c 2006-02-07 17:12:09.000000000 +0100
+@@ -217,7 +217,9 @@ static void * __attribute_used__ _dl_sta
+ /* some arches (like MIPS) we have to tweak the GOT before relocations */
+ PERFORM_BOOTSTRAP_GOT(tpnt);
+
+-#else
++#endif
++
++#if !defined(PERFORM_BOOTSTRAP_GOT) || defined(__avr32__)
+
+ /* OK, now do the relocations. We do not do a lazy binding here, so
+ that once we are done, we have considerably more flexibility. */
+@@ -259,7 +261,7 @@ static void * __attribute_used__ _dl_sta
+ rel_addr += relative_count * sizeof(ELF_RELOC);;
+ }
+
+- rpnt = (ELF_RELOC *) (rel_addr + load_addr);
++ rpnt = (ELF_RELOC *) (rel_addr /* + load_addr */);
+ for (i = 0; i < rel_size; i += sizeof(ELF_RELOC), rpnt++) {
+ reloc_addr = (unsigned long *) (load_addr + (unsigned long) rpnt->r_offset);
+ symtab_index = ELF_R_SYM(rpnt->r_info);
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/ldso-define-MAP_FAILED.patch b/packages/uclibc/uclibc-0.9.28/avr32/ldso-define-MAP_FAILED.patch
new file mode 100644
index 0000000000..d2838ef197
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/ldso-define-MAP_FAILED.patch
@@ -0,0 +1,23 @@
+Subject: [PATCH] ldso: Define MAP_FAILED for _dl_mmap()
+
+When using mmap2() to emulate mmap(), _dl_mmap() uses MAP_FAILED to
+indicate failure. MAP_FAILED is not defined anywhere, so this patch
+defines it.
+
+---
+
+ ldso/include/dl-syscall.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+Index: uClibc-0.9.28/ldso/include/dl-syscall.h
+===================================================================
+--- uClibc-0.9.28.orig/ldso/include/dl-syscall.h 2006-02-07 16:49:27.000000000 +0100
++++ uClibc-0.9.28/ldso/include/dl-syscall.h 2006-02-07 17:07:06.000000000 +0100
+@@ -132,6 +132,7 @@ static inline _syscall6(__ptr_t, __sysca
+ size_t, len, int, prot, int, flags, int, fd, off_t, offset);
+ /*always 12, even on architectures where PAGE_SHIFT != 12 */
+ #define MMAP2_PAGE_SHIFT 12
++#define MAP_FAILED ((void *) -1)
+ static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/let-optimized-stringops-override-default-ones.patch b/packages/uclibc/uclibc-0.9.28/avr32/let-optimized-stringops-override-default-ones.patch
new file mode 100644
index 0000000000..a383a6e62d
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/let-optimized-stringops-override-default-ones.patch
@@ -0,0 +1,28 @@
+From 7b2f125425cf777e7937b533217588e27952b87d Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Mon, 7 Aug 2006 11:12:50 +0200
+Subject: [PATCH] Let optimized stringops override default ones
+
+The default, slow stringops must be archived _before_ the optimized
+stringops if there is to be any point doing the optimizations in the
+first place.
+---
+ libc/Makefile | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/libc/Makefile b/libc/Makefile
+index 31e4bab..687eac5 100644
+--- a/libc/Makefile
++++ b/libc/Makefile
+@@ -59,7 +59,7 @@ # will evaluate to no files :(.
+ $(AR) dN 2 $(LIBNAME) $$objs && \
+ $(AR) dN 2 $(LIBNAME) $$objs
+ @for objfile in obj.signal \
+- obj.string.generic obj.string.$(TARGET_ARCH) obj.string \
++ obj.string obj.string.generic obj.string.$(TARGET_ARCH) \
+ obj.sysdeps.common obj.sysdeps.$(TARGET_ARCH) ; do \
+ if [ -e $$objfile ] ; then \
+ if [ "$(MAKE_IS_SILENT)" = "n" ] ; then \
+--
+1.4.1.1
+
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/libpthread-avr32.patch b/packages/uclibc/uclibc-0.9.28/avr32/libpthread-avr32.patch
new file mode 100644
index 0000000000..5277677ee5
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/libpthread-avr32.patch
@@ -0,0 +1,105 @@
+Subject: [PATCH] libpthread: AVR32 support
+
+Implement pt-machine.h for AVR32.
+---
+
+ libpthread/linuxthreads/sysdeps/avr32/pt-machine.h | 92 +++++++++++++++++++++
+ 1 file changed, 92 insertions(+)
+
+Index: uClibc-0.9.28/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h 2006-02-07 17:14:47.000000000 +0100
+@@ -0,0 +1,92 @@
++/* Machine-dependent pthreads configuration and inline functions.
++
++ Copyright (C) 2005 Atmel Norway
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++#ifndef _PT_MACHINE_H
++#define _PT_MACHINE_H 1
++
++#include <features.h>
++
++static inline int
++_test_and_set (int *p, int v) __THROW
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline test and set */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " tst %0, %3\n"
++ " breq 2f\n"
++ " stcond %1, %3\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=m"(*p)
++ : "m"(*p), "r"(v)
++ : "memory", "cc");
++
++ return result;
++}
++
++#ifndef PT_EI
++# define PT_EI extern inline
++#endif
++
++extern long int testandset (int *spinlock);
++extern int __compare_and_swap (long int *p, long int oldval, long int newval);
++
++/* Spinlock implementation; required. */
++PT_EI long int
++testandset (int *spinlock)
++{
++ return _test_and_set(spinlock, 1);
++}
++
++
++/* Get some notion of the current stack. Need not be exactly the top
++ of the stack, just something somewhere in the current frame. */
++#define CURRENT_STACK_FRAME stack_pointer
++register char * stack_pointer __asm__ ("sp");
++
++/* Compare-and-swap for semaphores. */
++
++#define HAS_COMPARE_AND_SWAP
++PT_EI int
++__compare_and_swap(long int *p, long int oldval, long int newval)
++{
++ long int result, tmp;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %1, %3\n"
++ " cp.w %1, %5\n"
++ " sreq %0\n"
++ " brne 2f\n"
++ " stcond %2, %4\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=&r"(tmp), "=m"(*p)
++ : "m"(*p), "r"(newval), "r"(oldval)
++ : "cc", "memory");
++
++ return result;
++}
++
++#endif /* pt-machine.h */
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/no-create_module-on-avr32.patch b/packages/uclibc/uclibc-0.9.28/avr32/no-create_module-on-avr32.patch
new file mode 100644
index 0000000000..9bfdc53cfc
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/no-create_module-on-avr32.patch
@@ -0,0 +1,27 @@
+Subject: [PATCH] Don't include create_module() for AVR32
+
+The create_module() system call is obsolete in Linux 2.6, so the
+AVR32 kernel doesn't even have it.
+
+Come to think about it, this should be completely unnecessary as the
+create_module function is only a stub when __NR_create_module is
+undefined.
+---
+
+ libc/sysdeps/linux/common/create_module.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: uClibc-0.9.28/libc/sysdeps/linux/common/create_module.c
+===================================================================
+--- uClibc-0.9.28.orig/libc/sysdeps/linux/common/create_module.c 2006-02-07 16:48:38.000000000 +0100
++++ uClibc-0.9.28/libc/sysdeps/linux/common/create_module.c 2006-02-07 17:17:14.000000000 +0100
+@@ -61,7 +61,8 @@ unsigned long create_module(const char *
+ {
+ return __create_module(name, size, 0, 0);
+ }
+-#else
++/* create_module is obsolete in Linux 2.6, so AVR32 doesn't have it */
++#elif !defined(__avr32__)
+ /* Sparc, MIPS, etc don't mistake return values for errors. */
+ _syscall2(unsigned long, create_module, const char *, name, size_t, size);
+ #endif
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/remove-bogus-version-hack-and-just-use-asm-generic-if-it-exists.patch b/packages/uclibc/uclibc-0.9.28/avr32/remove-bogus-version-hack-and-just-use-asm-generic-if-it-exists.patch
new file mode 100644
index 0000000000..9f27f68f0a
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/remove-bogus-version-hack-and-just-use-asm-generic-if-it-exists.patch
@@ -0,0 +1,48 @@
+--- a/extra/scripts/fix_includes.sh 2005-08-18 00:49:41.000000000 +0200
++++ b/extra/scripts/fix_includes.sh 2006-09-27 13:23:12.000000000 +0200
+@@ -78,36 +78,6 @@ if [ ! -d "$KERNEL_SOURCE" ]; then
+ exit 1;
+ fi;
+
+-if [ -f "$KERNEL_SOURCE/Makefile" ] ; then
+-# set current VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION
+-eval `sed -n -e 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' -e 's/^\([A-Z]*\) = \(-[-a-z0-9]*\)$/\1=\2/p' $KERNEL_SOURCE/Makefile`
+-else
+-ver=`grep UTS_RELEASE $KERNEL_SOURCE/include/linux/version.h | cut -d '"' -f 2`
+-VERSION=`echo "$ver" | cut -d '.' -f 1`
+-PATCHLEVEL=`echo "$ver" | cut -d '.' -f 2`
+-if echo "$ver" | grep -q '-' ; then
+-SUBLEVEL=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.//" | cut -d '-' -f 1`
+-EXTRAVERSION=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.${SUBLEVEL}-//"`
+-else
+-SUBLEVEL=`echo "$ver" | cut -d '.' -f 3`
+-#EXTRAVERSION=
+-fi
+-fi
+-if [ -z "$VERSION" -o -z "$PATCHLEVEL" -o -z "$SUBLEVEL" ]
+-then
+- echo "Unable to determine version for kernel headers"
+- echo -e "\tprovided in directory $KERNEL_SOURCE"
+- exit 1
+-fi
+-
+-if [ "$MAKE_IS_SILENT" != "y" ]; then
+-echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION}"
+-echo -e "\n"
+-echo "Using kernel headers from $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION} for architecture '$TARGET_ARCH'"
+-echo -e "\tprovided in directory $KERNEL_SOURCE"
+-echo -e "\n"
+-fi
+-
+ # Create a symlink to include/asm
+
+ rm -f include/asm*
+@@ -172,7 +142,7 @@ fi;
+
+
+ # Annoyingly, 2.6.x kernel headers also need an include/asm-generic/ directory
+-if [ $VERSION -eq 2 ] && [ $PATCHLEVEL -ge 6 ] ; then
++if [ -d $KERNEL_SOURCE/include/asm-generic ] ; then
+ ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic
+ fi;
+
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/sync-fcntl-h-with-linux-kernel.patch b/packages/uclibc/uclibc-0.9.28/avr32/sync-fcntl-h-with-linux-kernel.patch
new file mode 100644
index 0000000000..ae6de2b102
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/sync-fcntl-h-with-linux-kernel.patch
@@ -0,0 +1,54 @@
+---
+ libc/sysdeps/linux/avr32/bits/fcntl.h | 33 +++++++++++++++++----------------
+ 1 file changed, 17 insertions(+), 16 deletions(-)
+
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/fcntl.h
+===================================================================
+--- uClibc-0.9.28-avr32.orig/libc/sysdeps/linux/avr32/bits/fcntl.h 2006-11-23 17:38:30.000000000 +0100
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/fcntl.h 2006-11-23 17:52:15.000000000 +0100
+@@ -11,28 +11,29 @@
+
+ /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+-#define O_ACCMODE 0003
+-#define O_RDONLY 00
+-#define O_WRONLY 01
+-#define O_RDWR 02
+-#define O_CREAT 0100 /* not fcntl */
+-#define O_EXCL 0200 /* not fcntl */
+-#define O_NOCTTY 0400 /* not fcntl */
+-#define O_TRUNC 01000 /* not fcntl */
+-#define O_APPEND 02000
+-#define O_NONBLOCK 04000
++#define O_ACCMODE 00000003
++#define O_RDONLY 00000000
++#define O_WRONLY 00000001
++#define O_RDWR 00000002
++#define O_CREAT 00000100 /* not fcntl */
++#define O_EXCL 00000200 /* not fcntl */
++#define O_NOCTTY 00000400 /* not fcntl */
++#define O_TRUNC 00001000 /* not fcntl */
++#define O_APPEND 00002000
++#define O_NONBLOCK 00004000
+ #define O_NDELAY O_NONBLOCK
+-#define O_SYNC 010000
+-#define O_ASYNC 020000
++#define O_SYNC 00010000
++#define O_ASYNC 00020000
+
+ #ifdef __USE_GNU
+-# define O_DIRECTORY 040000 /* must be a directory */
+-# define O_NOFOLLOW 0100000 /* don't follow links */
+-# define O_DIRECT 0200000 /* direct disk access */
++# define O_DIRECT 00040000 /* must be a directory */
++# define O_DIRECTORY 00200000 /* direct disk access */
++# define O_NOFOLLOW 00400000 /* don't follow links */
++# define O_NOATIME 01000000 /* don't set atime */
+ #endif
+
+ #ifdef __USE_LARGEFILE64
+-# define O_LARGEFILE 0400000
++# define O_LARGEFILE 00100000
+ #endif
+
+ /* For now Linux has synchronisity options for data and read operations.
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20060621.patch b/packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20060621.patch
new file mode 100644
index 0000000000..430b54c1c1
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20060621.patch
@@ -0,0 +1,4322 @@
+diff -Nur uClibc-0.9.28/extra/Configs/Config.avr32 uClibc-0.9.28-avr32-20060621/extra/Configs/Config.avr32
+--- uClibc-0.9.28/extra/Configs/Config.avr32 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/extra/Configs/Config.avr32 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,38 @@
++#
++# For a description of the syntax of this configuration file,
++# see extra/config/Kconfig-language.txt
++#
++
++config HAVE_ELF
++ bool
++ default y
++
++config TARGET_ARCH
++ default "avr32"
++
++config ARCH_CFLAGS
++ string
++
++config ARCH_LDFLAGS
++ string
++
++config LIBGCC_CFLAGS
++ string
++
++config ARCH_SUPPORTS_BIG_ENDIAN
++ bool
++ default y
++
++config UCLIBC_COMPLETELY_PIC
++ select FORCE_SHAREABLE_TEXT_SEGMENTS
++ bool
++ default y
++
++choice
++ prompt "Target CPU Type"
++ default CONFIG_AP7000
++
++config CONFIG_AP7000
++ bool "AP7000"
++
++endchoice
+diff -Nur uClibc-0.9.28/extra/Configs/Config.in uClibc-0.9.28-avr32-20060621/extra/Configs/Config.in
+--- uClibc-0.9.28/extra/Configs/Config.in 2005-08-18 00:49:41.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/extra/Configs/Config.in 2006-06-21 11:35:56.000000000 +0200
+@@ -16,6 +16,9 @@
+ config TARGET_arm
+ bool "arm"
+
++config TARGET_avr32
++ bool "avr32"
++
+ config TARGET_bfin
+ bool "bfin"
+
+@@ -83,6 +86,10 @@
+ source "extra/Configs/Config.arm"
+ endif
+
++if TARGET_avr32
++source "extra/Configs/Config.avr32"
++endif
++
+ if TARGET_bfin
+ source "extra/Configs/Config.bfin"
+ endif
+diff -Nur uClibc-0.9.28/include/elf.h uClibc-0.9.28-avr32-20060621/include/elf.h
+--- uClibc-0.9.28/include/elf.h 2005-08-18 00:49:41.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/include/elf.h 2006-06-21 11:35:56.000000000 +0200
+@@ -261,6 +261,8 @@
+ #define EM_NIOS32 0xfebb /* Altera Nios 32 */
+ #define EM_ALTERA_NIOS2 0x9ee5 /* Altera Nios II */
+
++#define EM_AVR32 0x18ad
++
+ /* V850 backend magic number. Written in the absense of an ABI. */
+ #define EM_CYGNUS_V850 0x9080
+
+@@ -2687,6 +2689,55 @@
+ /* Keep this the last entry. */
+ #define R_V850_NUM 25
+
++/* Atmel AVR32 relocations. */
++#define R_AVR32_NONE 0
++#define R_AVR32_32 1
++#define R_AVR32_16 2
++#define R_AVR32_8 3
++#define R_AVR32_32_PCREL 4
++#define R_AVR32_16_PCREL 5
++#define R_AVR32_8_PCREL 6
++#define R_AVR32_DIFF32 7
++#define R_AVR32_DIFF16 8
++#define R_AVR32_DIFF8 9
++#define R_AVR32_GOT32 10
++#define R_AVR32_GOT16 11
++#define R_AVR32_GOT8 12
++#define R_AVR32_21S 13
++#define R_AVR32_16U 14
++#define R_AVR32_16S 15
++#define R_AVR32_8S 16
++#define R_AVR32_8S_EXT 17
++#define R_AVR32_22H_PCREL 18
++#define R_AVR32_18W_PCREL 19
++#define R_AVR32_16B_PCREL 20
++#define R_AVR32_16N_PCREL 21
++#define R_AVR32_14UW_PCREL 22
++#define R_AVR32_11H_PCREL 23
++#define R_AVR32_10UW_PCREL 24
++#define R_AVR32_9H_PCREL 25
++#define R_AVR32_9UW_PCREL 26
++#define R_AVR32_HI16 27
++#define R_AVR32_LO16 28
++#define R_AVR32_GOTPC 29
++#define R_AVR32_GOTCALL 30
++#define R_AVR32_LDA_GOT 31
++#define R_AVR32_GOT21S 32
++#define R_AVR32_GOT18SW 33
++#define R_AVR32_GOT16S 34
++#define R_AVR32_GOT7UW 35
++#define R_AVR32_32_CPENT 36
++#define R_AVR32_CPCALL 37
++#define R_AVR32_16_CP 38
++#define R_AVR32_9W_CP 39
++#define R_AVR32_RELATIVE 40
++#define R_AVR32_GLOB_DAT 41
++#define R_AVR32_JMP_SLOT 42
++#define R_AVR32_ALIGN 43
++#define R_AVR32_NUM 44
++
++/* AVR32 dynamic tags */
++#define DT_AVR32_GOTSZ 0x70000001 /* Total size of GOT in bytes */
+
+ #define R_H8_NONE 0
+ #define R_H8_DIR32 1
+diff -Nur uClibc-0.9.28/ldso/include/dl-string.h uClibc-0.9.28-avr32-20060621/ldso/include/dl-string.h
+--- uClibc-0.9.28/ldso/include/dl-string.h 2005-08-18 00:49:41.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/ldso/include/dl-string.h 2006-06-21 11:35:57.000000000 +0200
+@@ -134,7 +134,7 @@
+ } while (1);
+ }
+
+-static inline void * _dl_memcpy(void * dst, const void * src, size_t len)
++static __always_inline void * _dl_memcpy(void * dst, const void * src, size_t len)
+ {
+ register char *a = dst-1;
+ register const char *b = src-1;
+@@ -271,7 +271,8 @@
+ /* On some arches constant strings are referenced through the GOT.
+ * This requires that load_addr must already be defined... */
+ #if defined(mc68000) || defined(__arm__) || defined(__mips__) \
+- || defined(__sh__) || defined(__powerpc__)
++ || defined(__sh__) || defined(__powerpc__) \
++ || defined(__avr32__)
+ # define CONSTANT_STRING_GOT_FIXUP(X) \
+ if ((X) < (const char *) load_addr) (X) += load_addr
+ # define NO_EARLY_SEND_STDERR
+diff -Nur uClibc-0.9.28/ldso/include/dl-syscall.h uClibc-0.9.28-avr32-20060621/ldso/include/dl-syscall.h
+--- uClibc-0.9.28/ldso/include/dl-syscall.h 2005-08-18 00:49:41.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/ldso/include/dl-syscall.h 2006-06-21 11:35:57.000000000 +0200
+@@ -60,59 +60,59 @@
+ dynamic linking at all, so we cannot return any error codes.
+ We just punt if there is an error. */
+ #define __NR__dl_exit __NR_exit
+-static inline _syscall1(void, _dl_exit, int, status);
++static __always_inline _syscall1(void, _dl_exit, int, status);
+
+ #define __NR__dl_close __NR_close
+-static inline _syscall1(int, _dl_close, int, fd);
++static __always_inline _syscall1(int, _dl_close, int, fd);
+
+ #define __NR__dl_open __NR_open
+-static inline _syscall3(int, _dl_open, const char *, fn, int, flags, __kernel_mode_t, mode);
++static __always_inline _syscall3(int, _dl_open, const char *, fn, int, flags, __kernel_mode_t, mode);
+
+ #define __NR__dl_write __NR_write
+-static inline _syscall3(unsigned long, _dl_write, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_write, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_read __NR_read
+-static inline _syscall3(unsigned long, _dl_read, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_read, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_mprotect __NR_mprotect
+-static inline _syscall3(int, _dl_mprotect, const void *, addr, unsigned long, len, int, prot);
++static __always_inline _syscall3(int, _dl_mprotect, const void *, addr, unsigned long, len, int, prot);
+
+ #define __NR__dl_stat __NR_stat
+-static inline _syscall2(int, _dl_stat, const char *, file_name, struct stat *, buf);
++static __always_inline _syscall2(int, _dl_stat, const char *, file_name, struct stat *, buf);
+
+ #define __NR__dl_munmap __NR_munmap
+-static inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
++static __always_inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
+
+ #define __NR__dl_getuid __NR_getuid
+-static inline _syscall0(uid_t, _dl_getuid);
++static __always_inline _syscall0(uid_t, _dl_getuid);
+
+ #define __NR__dl_geteuid __NR_geteuid
+-static inline _syscall0(uid_t, _dl_geteuid);
++static __always_inline _syscall0(uid_t, _dl_geteuid);
+
+ #define __NR__dl_getgid __NR_getgid
+-static inline _syscall0(gid_t, _dl_getgid);
++static __always_inline _syscall0(gid_t, _dl_getgid);
+
+ #define __NR__dl_getegid __NR_getegid
+-static inline _syscall0(gid_t, _dl_getegid);
++static __always_inline _syscall0(gid_t, _dl_getegid);
+
+ #define __NR__dl_getpid __NR_getpid
+-static inline _syscall0(gid_t, _dl_getpid);
++static __always_inline _syscall0(gid_t, _dl_getpid);
+
+ #define __NR__dl_readlink __NR_readlink
+-static inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
++static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
+
+ #ifdef __NR_mmap
+ #ifdef MMAP_HAS_6_ARGS
+ #define __NR__dl_mmap __NR_mmap
+-static inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
++static __always_inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
+ int, prot, int, flags, int, fd, off_t, offset);
+ #else
+ #define __NR__dl_mmap_real __NR_mmap
+-static inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
++static __always_inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
+
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ unsigned long buffer[6];
+@@ -128,11 +128,12 @@
+ #endif
+ #elif defined __NR_mmap2
+ #define __NR___syscall_mmap2 __NR_mmap2
+-static inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
++static __always_inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
+ size_t, len, int, prot, int, flags, int, fd, off_t, offset);
+ /*always 12, even on architectures where PAGE_SHIFT != 12 */
+ #define MMAP2_PAGE_SHIFT 12
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++#define MAP_FAILED ((void *) -1)
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
+diff -Nur uClibc-0.9.28/ldso/ldso/avr32/dl-debug.h uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-debug.h
+--- uClibc-0.9.28/ldso/ldso/avr32/dl-debug.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-debug.h 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,45 @@
++/*
++ * AVR32 ELF shared libary loader support
++ *
++ * Copyright (C) 2005 Atmel Norway
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++static const char *_dl_reltypes_tab[] = {
++ "R_AVR32_NONE",
++ "R_AVR32_32", "R_AVR32_16", "R_AVR32_8",
++ "R_AVR32_32_PCREL", "R_AVR32_16_PCREL", "R_AVR32_8_PCREL",
++ "R_AVR32_DIFF32", "R_AVR32_DIFF16", "R_AVR32_DIFF8",
++ "R_AVR32_GOT32", "R_AVR32_GOT16", "R_AVR32_GOT8",
++ "R_AVR32_21S", "R_AVR32_16U", "R_AVR32_16S", "R_AVR32_8S", "R_AVR32_8S_EXT",
++ "R_AVR32_22H_PCREL", "R_AVR32_18W_PCREL", "R_AVR32_16B_PCREL",
++ "R_AVR32_16N_PCREL", "R_AVR32_14UW_PCREL", "R_AVR32_11H_PCREL",
++ "R_AVR32_10UW_PCREL", "R_AVR32_9H_PCREL", "R_AVR32_9UW_PCREL",
++ "R_AVR32_HI16", "R_AVR32_LO16",
++ "R_AVR32_GOTPC", "R_AVR32_GOTCALL", "R_AVR32_LDA_GOT",
++ "R_AVR32_GOT21S", "R_AVR32_GOT18SW", "R_AVR32_GOT16S", "R_AVR32_GOT7UW",
++ "R_AVR32_32_CPENT", "R_AVR32_CPCALL", "R_AVR32_16_CP", "R_AVR32_9W_CP",
++ "R_AVR32_RELATIVE", "R_AVR32_GLOB_DAT", "R_AVR32_JMP_SLOT",
++ "R_AVR32_ALIGN",
++};
+diff -Nur uClibc-0.9.28/ldso/ldso/avr32/dl-startup.h uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-startup.h
+--- uClibc-0.9.28/ldso/ldso/avr32/dl-startup.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-startup.h 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,110 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * Architecture specific code used by dl-startup.c
++ * Copyright (C) 2005 Atmel Norway
++ */
++
++/* This is the library loader's main entry point. Let _dl_boot2 do its
++ * initializations and jump to the application's entry point
++ * afterwards. */
++asm( " .text\n"
++ " .global _start\n"
++ " .type _start,@function\n"
++ "_start:\n"
++ /* All arguments are on the stack initially */
++ " mov r12, sp\n"
++ " rcall _dl_start\n"
++ /* Returns user entry point in r12. Save it. */
++ " mov r0, r12\n"
++ /* We're PIC, so get the Global Offset Table */
++ " lddpc r6, .L_GOT\n"
++ ".L_RGOT:\n"
++ " rsub r6, pc\n"
++ /* Adjust argc and argv according to _dl_skip_args */
++ " ld.w r1, r6[_dl_skip_args@got]\n"
++ " ld.w r1, r1[0]\n"
++ " ld.w r2, sp++\n"
++ " sub r2, r1\n"
++ " add sp, sp, r1 << 2\n"
++ " st.w --sp, r2\n"
++ /* Load the finalizer function */
++ " ld.w r12, r6[_dl_fini@got]\n"
++ /* Jump to the user's entry point */
++ " mov pc, r0\n\n"
++
++ " .align 2\n"
++ ".L_GOT:"
++ " .long .L_RGOT - _GLOBAL_OFFSET_TABLE_\n"
++ " .size _start, . - _start\n"
++ " .previous\n");
++
++/* Get a pointer to the argv array. On many platforms this can be just
++ * the address if the first argument, on other platforms we need to
++ * do something a little more subtle here. */
++#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long *)ARGS + 1)
++
++
++/* We can't call functions before the GOT has been initialized */
++#define NO_FUNCS_BEFORE_BOOTSTRAP
++
++/*
++ * Relocate the GOT during dynamic loader bootstrap. This will add
++ * the load address to all entries in the GOT, which is necessary
++ * because the linker doesn't generate R_AVR32_RELATIVE relocs for the
++ * GOT.
++ */
++static __always_inline
++void PERFORM_BOOTSTRAP_GOT(struct elf_resolve *tpnt)
++{
++ Elf32_Addr i, nr_got;
++ register Elf32_Addr *__r6 __asm__("r6");
++ Elf32_Addr *got = __r6;
++
++ nr_got = tpnt->dynamic_info[DT_AVR32_GOTSZ_IDX] / sizeof(*got);
++ for (i = 2; i < nr_got; i++)
++ got[i] += tpnt->loadaddr;
++}
++
++#define PERFORM_BOOTSTRAP_GOT(tpnt) PERFORM_BOOTSTRAP_GOT(tpnt)
++
++/* Handle relocation of the symbols in the dynamic loader. */
++static __always_inline
++void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
++ unsigned long symbol_addr,
++ unsigned long load_addr, Elf32_Sym *symtab)
++{
++ switch(ELF32_R_TYPE(rpnt->r_info)) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr;
++ break;
++ case R_AVR32_RELATIVE:
++ SEND_STDERR_DEBUG("Applying RELATIVE relocation: ");
++ SEND_ADDRESS_STDERR_DEBUG(load_addr, 0);
++ SEND_STDERR_DEBUG(" + ");
++ SEND_ADDRESS_STDERR_DEBUG(rpnt->r_addend, 1);
++ *reloc_addr = load_addr + rpnt->r_addend;
++ break;
++ default:
++ SEND_STDERR("BOOTSTRAP_RELOC: unhandled reloc_type ");
++ SEND_NUMBER_STDERR(ELF32_R_TYPE(rpnt->r_info), 1);
++ SEND_STDERR("REL, SYMBOL, LOAD: ");
++ SEND_ADDRESS_STDERR(reloc_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(symbol_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(load_addr, 1);
++ _dl_exit(1);
++ }
++}
++
++/* Transfer control to the user's application, once the dynamic loader
++ * is done. This routine has to exit the current function, then call
++ * the _dl_elf_main function.
++ *
++ * Since our _dl_boot will simply call whatever is returned by
++ * _dl_boot2, we can just return the address we're supposed to
++ * call. */
++#define START() return _dl_elf_main;
+diff -Nur uClibc-0.9.28/ldso/ldso/avr32/dl-syscalls.h uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-syscalls.h
+--- uClibc-0.9.28/ldso/ldso/avr32/dl-syscalls.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-syscalls.h 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,5 @@
++/* We can't use the real errno in ldso, since it has not yet
++ * been dynamicly linked in yet. */
++extern int _dl_errno;
++#define __set_errno(X) {(_dl_errno) = (X);}
++#include "sys/syscall.h"
+diff -Nur uClibc-0.9.28/ldso/ldso/avr32/dl-sysdep.h uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-sysdep.h
+--- uClibc-0.9.28/ldso/ldso/avr32/dl-sysdep.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/dl-sysdep.h 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,103 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * Various assembly language/system dependent hacks that are required
++ * so that we can minimize the amount of platform specific code.
++ * Copyright (C) 2004-2005 Atmel Norway
++ */
++
++/* Define this if the system uses RELOCA. */
++#define ELF_USES_RELOCA
++
++#include <elf.h>
++
++#define ARCH_NUM 1
++#define DT_AVR32_GOTSZ_IDX (DT_NUM + OS_NUM)
++
++#define ARCH_DYNAMIC_INFO(dpnt, dynamic, debug_addr) \
++ do { \
++ if (dpnt->d_tag == DT_AVR32_GOTSZ) \
++ dynamic[DT_AVR32_GOTSZ_IDX] = dpnt->d_un.d_val; \
++ } while (0)
++
++/* Initialization sequence for the application/library GOT. */
++#define INIT_GOT(GOT_BASE,MODULE) \
++ do { \
++ unsigned long i, nr_got; \
++ \
++ GOT_BASE[0] = (unsigned long) _dl_linux_resolve; \
++ GOT_BASE[1] = (unsigned long) MODULE; \
++ \
++ /* Add load address displacement to all GOT entries */ \
++ nr_got = MODULE->dynamic_info[DT_AVR32_GOTSZ_IDX] / 4; \
++ for (i = 2; i < nr_got; i++) \
++ GOT_BASE[i] += (unsigned long)MODULE->loadaddr; \
++ } while (0)
++
++#define do_rem(result, n, base) ((result) = (n) % (base))
++
++/* Here we define the magic numbers that this dynamic loader should accept */
++#define MAGIC1 EM_AVR32
++#undef MAGIC2
++
++/* Used for error messages */
++#define ELF_TARGET "AVR32"
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got);
++
++/* 4096 bytes alignment */
++#define PAGE_ALIGN 0xfffff000
++#define ADDR_ALIGN 0xfff
++#define OFFS_ALIGN 0x7ffff000
++
++#define elf_machine_type_class(type) \
++ ((type == R_AVR32_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
++
++/* AVR32 doesn't need any COPY relocs */
++#define DL_NO_COPY_RELOCS
++
++/* Return the link-time address of _DYNAMIC. Conveniently, this is the
++ first element of the GOT. This must be inlined in a function which
++ uses global data. */
++static inline Elf32_Addr
++elf_machine_dynamic (void)
++{
++ register Elf32_Addr *got asm ("r6");
++ return *got;
++}
++
++/* Return the run-time load address of the shared object. */
++static inline Elf32_Addr
++elf_machine_load_address (void)
++{
++ extern void __dl_start asm("_dl_start");
++ Elf32_Addr got_addr = (Elf32_Addr) &__dl_start;
++ Elf32_Addr pcrel_addr;
++
++ asm (" lddpc %0, 2f\n"
++ "1: add %0, pc\n"
++ " rjmp 3f\n"
++ " .align 2\n"
++ "2: .long _dl_start - 1b\n"
++ "3:\n"
++ : "=r"(pcrel_addr) : : "cc");
++
++ return pcrel_addr - got_addr;
++}
++
++/*
++ * Perform any RELATIVE relocations specified by DT_RELCOUNT.
++ * Currently, we don't use that tag, but we might in the future as
++ * this would reduce the startup time somewhat (although probably not by much).
++ */
++static inline void
++elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
++ Elf32_Word relative_count)
++{
++ Elf32_Rela *rpnt = (void *)rel_addr;
++
++ do {
++ Elf32_Addr *reloc_addr;
++ reloc_addr = (void *)(load_off + (rpnt++)->r_offset);
++ *reloc_addr = load_off + rpnt->r_addend;
++ } while (--relative_count);
++}
+diff -Nur uClibc-0.9.28/ldso/ldso/avr32/elfinterp.c uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/elfinterp.c
+--- uClibc-0.9.28/ldso/ldso/avr32/elfinterp.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/elfinterp.c 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,191 @@
++/*
++ * AVR32 ELF shared library loader suppport
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got)
++{
++ struct elf_resolve *tpnt = (struct elf_resolve *)got[1];
++ Elf32_Sym *sym;
++ unsigned long local_gotno;
++ unsigned long gotsym;
++ unsigned long new_addr;
++ char *strtab, *symname;
++ unsigned long *entry;
++ unsigned long sym_index = got_offset / 4;
++
++#if 0
++ local_gotno = tpnt->dynamic_info[DT_AVR32_LOCAL_GOTNO];
++ gotsym = tpnt->dynamic_info[DT_AVR32_GOTSYM];
++
++ sym = ((Elf32_Sym *)(tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr))
++ + sym_index;
++ strtab = (char *)(tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
++ symname = strtab + sym->st_name;
++
++#if 0
++ new_addr = (unsigned long) _dl_find_hash(strtab + sym->st_name,
++ tpnt->symbol_scope, tpnt,
++ resolver);
++#endif
++
++ entry = (unsigned long *)(got + local_gotno + sym_index - gotsym);
++ *entry = new_addr;
++#endif
++
++ return new_addr;
++}
++
++static int
++_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ unsigned long rel_addr, unsigned long rel_size,
++ int (*reloc_func)(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab))
++{
++ Elf32_Sym *symtab;
++ Elf32_Rela *rpnt;
++ char *strtab;
++ int i;
++
++ rpnt = (Elf32_Rela *)rel_addr;
++ rel_size /= sizeof(Elf32_Rela);
++ symtab = (Elf32_Sym *)tpnt->dynamic_info[DT_SYMTAB];
++ strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
++
++ for (i = 0; i < rel_size; i++, rpnt++) {
++ int symtab_index, res;
++
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++
++ debug_sym(symtab, strtab, symtab_index);
++ debug_reloc(symtab, strtab, rpnt);
++
++ res = reloc_func(tpnt, scope, rpnt, symtab, strtab);
++
++ if (res == 0)
++ continue;
++
++ _dl_dprintf(2, "\n%s: ", _dl_progname);
++
++ if (symtab_index)
++ _dl_dprintf(2, "symbol '%s': ",
++ strtab + symtab[symtab_index].st_name);
++
++ if (res < 0) {
++ int reloc_type = ELF32_R_TYPE(rpnt->r_info);
++#if defined(__SUPPORT_LD_DEBUG__)
++ _dl_dprintf(2, "can't handle reloc type %s\n",
++ _dl_reltypes(reloc_type));
++#else
++ _dl_dprintf(2, "can't handle reloc type %x\n",
++ reloc_type);
++#endif
++ _dl_exit(-res);
++ } else {
++ _dl_dprintf(2, "can't resolve symbol\n");
++ return res;
++ }
++ }
++
++ return 0;
++}
++
++static int _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab)
++{
++ int reloc_type;
++ int symtab_index;
++ char *symname;
++ unsigned long *reloc_addr;
++ unsigned long symbol_addr;
++#if defined(__SUPPORT_LD_DEBUG__)
++ unsigned long old_val;
++#endif
++
++ reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
++ reloc_type = ELF32_R_TYPE(rpnt->r_info);
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++ symbol_addr = 0;
++ symname = strtab + symtab[symtab_index].st_name;
++
++ if (symtab_index) {
++ symbol_addr = (unsigned long)
++ _dl_find_hash(strtab + symtab[symtab_index].st_name,
++ tpnt->symbol_scope, tpnt,
++ elf_machine_type_class(reloc_type));
++
++ /* Allow undefined references to weak symbols */
++ if (!symbol_addr &&
++ ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
++ _dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
++ _dl_progname, symname);
++ return 0;
++ }
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ old_val = *reloc_addr;
++#endif
++ switch (reloc_type) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr + rpnt->r_addend;
++ break;
++ case R_AVR32_RELATIVE:
++ *reloc_addr = (unsigned long)tpnt->loadaddr
++ + rpnt->r_addend;
++ break;
++ default:
++ return -1;
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ if (_dl_debug_reloc && _dl_debug_detail)
++ _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
++ old_val, *reloc_addr);
++#endif
++
++ return 0;
++}
++
++void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ /* TODO: Might want to support this in order to get faster
++ * startup times... */
++}
++
++int _dl_parse_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size,
++ _dl_do_reloc);
++}
+diff -Nur uClibc-0.9.28/ldso/ldso/avr32/resolve.S uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/resolve.S
+--- uClibc-0.9.28/ldso/ldso/avr32/resolve.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/ldso/ldso/avr32/resolve.S 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,28 @@
++/*
++ * Linux dynamic resolving code for AVR32. Fixes up the GOT entry as
++ * indicated in register r12 and jumps to the resolved address.
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ *
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define ip r5
++
++ .text
++ .global _dl_linux_resolve
++ .type _dl_linux_resolve,@function
++_dl_linux_resolve:
++ /* The PLT code pushed r8 for us. It contains the address of this
++ function's GOT entry, that is entry 0. ip contains the address
++ of the GOT entry of the function we wanted to call. */
++ stm --sp, r9-r12, lr
++ mov r11, r8
++ sub r12, ip, r8
++ rcall _dl_linux_resolver
++ mov ip, r12
++ popm r8-r12,lr
++ mov pc, ip
++ .size _dl_linux_resolve, . - _dl_linux_resolve
+diff -Nur uClibc-0.9.28/ldso/ldso/dl-startup.c uClibc-0.9.28-avr32-20060621/ldso/ldso/dl-startup.c
+--- uClibc-0.9.28/ldso/ldso/dl-startup.c 2005-08-18 00:49:41.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/ldso/ldso/dl-startup.c 2006-06-21 11:35:57.000000000 +0200
+@@ -217,7 +217,9 @@
+ /* some arches (like MIPS) we have to tweak the GOT before relocations */
+ PERFORM_BOOTSTRAP_GOT(tpnt);
+
+-#else
++#endif
++
++#if !defined(PERFORM_BOOTSTRAP_GOT) || defined(__avr32__)
+
+ /* OK, now do the relocations. We do not do a lazy binding here, so
+ that once we are done, we have considerably more flexibility. */
+@@ -259,7 +261,7 @@
+ rel_addr += relative_count * sizeof(ELF_RELOC);;
+ }
+
+- rpnt = (ELF_RELOC *) (rel_addr + load_addr);
++ rpnt = (ELF_RELOC *) (rel_addr /* + load_addr */);
+ for (i = 0; i < rel_size; i += sizeof(ELF_RELOC), rpnt++) {
+ reloc_addr = (unsigned long *) (load_addr + (unsigned long) rpnt->r_offset);
+ symtab_index = ELF_R_SYM(rpnt->r_info);
+diff -Nur uClibc-0.9.28/libc/string/avr32/bcopy.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/bcopy.S
+--- uClibc-0.9.28/libc/string/avr32/bcopy.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/bcopy.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,15 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++ .text
++ .global bcopy
++ .type bcopy, @function
++ .align 1
++bcopy:
++ /* Swap the first two arguments */
++ eor r11, r12
++ eor r12, r11
++ eor r11, r12
++ rjmp memmove
++ .size bcopy, . - bcopy
+diff -Nur uClibc-0.9.28/libc/string/avr32/bzero.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/bzero.S
+--- uClibc-0.9.28/libc/string/avr32/bzero.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/bzero.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++ .text
++ .global bzero
++ .type bzero, @function
++ .align 1
++bzero:
++ mov r10, r11
++ mov r11, 0
++ rjmp memset
+diff -Nur uClibc-0.9.28/libc/string/avr32/Makefile uClibc-0.9.28-avr32-20060621/libc/string/avr32/Makefile
+--- uClibc-0.9.28/libc/string/avr32/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/Makefile 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,45 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++TOPDIR=../../../
++include $(TOPDIR)Rules.mak
++
++SSRC := bcopy.S bzero.S memcmp.S memcpy.S memmove.S
++SSRC += memset.S strcmp.S strlen.S
++# memchr.S, strcat.S, strcpy.S, strncpy.S is broken
++SOBJS := $(addprefix __avr32_,$(addsuffix .o,$(basename $(SSRC))))
++
++all: $(SOBJS) $(LIBC)
++
++$(LIBC): ar-target
++
++ar-target: $(SOBJS)
++ $(AR) $(ARFLAGS) $(LIBC) $(SOBJS)
++
++$(SOBJS): __avr32_%.o: %.S
++ $(CC) $(ASFLAGS) -D$*=__avr32_$* -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $@
++
++clean:
++ $(RM) *.[oa] *~ core
++
++stringtest.o: stringtest.c
++ $(CC) $(CFLAGS) -c $< -o $@
++
++stringtest: stringtest.o $(SOBJS)
++ $(CC) -static -o $@ $^
+diff -Nur uClibc-0.9.28/libc/string/avr32/memchr.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/memchr.S
+--- uClibc-0.9.28/libc/string/avr32/memchr.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/memchr.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define str r12
++#define chr r11
++#define len r10
++
++ .text
++ .global memchr
++ .type memchr, @function
++memchr:
++ insert.b chr:l, chr
++ insert.h chr:t, chr
++
++ mov r9, str
++ andl r9, 3, COH
++ brne .Lunaligned_str
++
++1: sub len, 4
++ brlt 2f
++ ld.w r8, str++
++ psub.b r9, r8, r11
++ tnbz r9
++ brne 1b
++
++ sub str, 4
++ extract.b r9, r8:t
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ extract.b r9, r8:u
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ extract.b r9, r8:l
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ retal str
++
++2: sub len, -4
++ reteq 0
++
++3: ld.ub r8, str++
++ cp.w r8, 0
++ reteq str
++ sub len, 1
++ brne 3b
++
++ retal 0
++
++.Lunaligned_str:
++1: sub len, 1
++ retlt 0
++ ld.ub r8, str++
++ cp.b r8, r11
++ reteq str
++ sub r9, 1
++ brge 1b
++
++ rjmp .Laligned_search
+diff -Nur uClibc-0.9.28/libc/string/avr32/memcmp.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/memcmp.S
+--- uClibc-0.9.28/libc/string/avr32/memcmp.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/memcmp.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,26 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global memcmp
++ .type memcmp, @function
++ .align 1
++memcmp:
++ cp.w len, 1
++ retlt 0
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ subfne len, 1
++ brne 1b
++
++ retal r8
++ .size memcmp, . - memcmp
++
++ .weak bcmp
++ bcmp = memcmp
+diff -Nur uClibc-0.9.28/libc/string/avr32/memcpy.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/memcpy.S
+--- uClibc-0.9.28/libc/string/avr32/memcpy.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/memcpy.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,106 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++/* Don't use r12 as dst since we must return it unmodified */
++#define dst r9
++#define src r11
++#define len r10
++
++ .text
++ .global memcpy
++ .type memcpy, @function
++memcpy:
++ pref src[0]
++ mov dst, r12
++
++ /* If we have less than 32 bytes, don't do anything fancy */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, src++
++ st.b dst++, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, dst
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ pref src[32]
++ ldm src, r0-r7
++ sub src, -32
++ stm dst, r0-r7
++ sub dst, -32
++ sub len, 32
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ ldm src, r0-r3
++ sub src, -16
++ sub len, 16
++ stm dst, r0-r3
++ sub dst, -16
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++ neg len
++ add pc, pc, len << 2
++ .rept 15
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ rsub r8, r8, 32
++ sub len, r8
++1: ld.ub r0, src++
++ st.b dst++, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[0]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, src++
++ st.w dst++, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++ .size memcpy, . - memcpy
+diff -Nur uClibc-0.9.28/libc/string/avr32/memmove.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/memmove.S
+--- uClibc-0.9.28/libc/string/avr32/memmove.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/memmove.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,124 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define dst r12
++#define src r11
++#define len r10
++
++ .text
++ .global memmove
++ .type memmove, @function
++memmove:
++ cp.w src, dst
++#ifdef memmove
++ brge optimized_memcpy
++#else
++ brge memcpy
++#endif
++
++ add dst, len
++ add src, len
++ pref src[-1]
++
++ /*
++ * The rest is basically the same as in memcpy.S except that
++ * the direction is reversed.
++ */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, --src
++ st.b --dst, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, r12
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ pref src[-36]
++ sub src, 32
++ ldm src, r0-r7
++ sub dst, 32
++ sub len, 32
++ stm dst, r0-r7
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ sub src, 16
++ ldm src, r0-r3
++ sub dst, 16
++ sub len, 16
++ stm dst, r0-r3
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++#if 1
++ sub len, -16
++ breq 2f
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub len, 1
++ brne 1b
++#else
++ neg len
++ add pc, pc, len << 2
++ .rept 15
++ ld.ub r0, --src
++ st.b --dst, r0
++ .endr
++#endif
++
++2: popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ rsub r8, r8, 32
++ sub len, r8
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[-4]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, --src
++ st.w --dst, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, --src
++ st.b --dst, r0
++ .endr
++
++ popm r0-r7, pc
+diff -Nur uClibc-0.9.28/libc/string/avr32/memset.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/memset.S
+--- uClibc-0.9.28/libc/string/avr32/memset.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/memset.S 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,54 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s r12
++#define c r11
++#define n r10
++
++ .text
++ .global memset
++ .type memset, @function
++ .align 1
++memset:
++ cp.w n, 32
++ mov r9, s
++ brge .Llarge_memset
++
++ sub n, 1
++ retlt s
++1: st.b s++, c
++ sub n, 1
++ brge 1b
++
++ retal r9
++
++.Llarge_memset:
++ mov r8, r11
++ mov r11, 3
++ insert.b r8:l, r8
++ tst s, r11
++ insert.h r8:t, r8
++ breq 2f
++
++1: st.b s++, r8
++ sub n, 1
++ tst s, r11
++ brne 1b
++
++2: mov r11, r9
++ mov r9, r8
++ sub n, 8
++
++3: st.d s++, r8
++ sub n, 8
++ brge 3b
++
++ /* If we are done, n == -8 and we'll skip all st.b insns below */
++ neg n
++ lsl n, 1
++ add pc, n
++ .rept 7
++ st.b s++, r8
++ .endr
++ retal r11
+diff -Nur uClibc-0.9.28/libc/string/avr32/strcat.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/strcat.S
+--- uClibc-0.9.28/libc/string/avr32/strcat.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/strcat.S 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,96 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define s1 r9
++#define s2 r11
++
++ .text
++ .global strcat
++ .type strcat, @function
++ .align 1
++strcat:
++ mov s1, r12
++
++ /* Make sure s1 is word-aligned */
++ mov r10, s1
++ andl r10, 3, COH
++ breq 2f
++
++ add pc, pc, r10 << 3
++ sub r0, r0, 0 /* 4-byte nop */
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 2f
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 3f
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 4f
++
++ /* Find the end of the first string */
++5: ld.w r8, s1++
++ tnbz r8
++ brne 5b
++
++ sub s1, 4
++
++ extract.b r10, r8:t
++ cp.w r10, 0
++ breq 1f
++ sub s1, -1
++ extract.b r10, r8:u
++ cp.w r10, 0
++ breq 2f
++ sub s1, -1
++ extract.b r10, r8:l
++ cp.w r10, 0
++ breq 3f
++ sub s1, -1
++ rjmp 4f
++
++ /* Now, append s2 */
++1: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++2: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++3: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++4: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++
++ /* Copy one word at a time */
++ ld.w r8, s2++
++ tnbz r8
++ breq 2f
++1: st.w r8, s2++
++ ld.w r8, s2++
++ tnbz r8
++ brne 1b
++
++ /* Copy the remaining bytes */
++ extract.b r10, r8:t
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ extract.b r10, r8:u
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ extract.b r10, r8:l
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ extract.b r10, r8:b
++ st.b s1++, r10
++ retal r12
++ .size strcat, . - strcat
+diff -Nur uClibc-0.9.28/libc/string/avr32/strcmp.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/strcmp.S
+--- uClibc-0.9.28/libc/string/avr32/strcmp.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/strcmp.S 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,77 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global strcmp
++ .type strcmp, @function
++ .align 1
++strcmp:
++ mov r8, 3
++ tst s1, r8
++ brne .Lunaligned_s1
++ tst s2, r8
++ brne .Lunaligned_s2
++
++1: ld.w r8, s1++
++ ld.w r9, s2++
++ cp.w r8, r9
++ brne 2f
++ tnbz r8
++ brne 1b
++ retal 0
++
++2: extract.b r12, r8:t
++ extract.b r11, r9:t
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ extract.b r12, r8:u
++ extract.b r11, r9:u
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ extract.b r12, r8:l
++ extract.b r11, r9:l
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ extract.b r12, r8:b
++ extract.b r11, r9:b
++ sub r12, r11
++ retal r12
++
++.Lunaligned_s1:
++3: tst s1, r8
++ breq 4f
++ ld.ub r10, s1++
++ ld.ub r9, s2++
++ sub r10, r9
++ retne r10
++ cp.w r9, 0
++ brne 3b
++ retal r10
++
++4: tst s2, r8
++ breq 1b
++
++.Lunaligned_s2:
++ /*
++ * s1 and s2 can't both be aligned, and unaligned word loads
++ * can trigger spurious exceptions if we cross a page boundary.
++ * Do it the slow way...
++ */
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ retne r8
++ cp.w r9, 0
++ brne 1b
++ retal 0
+diff -Nur uClibc-0.9.28/libc/string/avr32/strcpy.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/strcpy.S
+--- uClibc-0.9.28/libc/string/avr32/strcpy.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/strcpy.S 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,64 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ *
++ * To reduce the size, this one might simply call strncpy with len = -1.
++ */
++
++#define dst r9
++#define src r11
++
++ .text
++ .global strcpy
++ .type strcpy, @function
++strcpy:
++ mov dst, r12
++
++ pref src[0]
++
++ /*
++ * Check alignment. If src is aligned but dst isn't, we can't
++ * do much about it...
++ */
++ mov r8, src
++ andl r8, 3 COH
++ brne .Lunaligned_src
++
++.Laligned_copy:
++1: ld.w r8, src++
++ tnbz r8
++ breq 2f
++ st.w dst++, r8
++ rjmp 1b
++
++2: /*
++ * Ok, r8 now contains the terminating '\0'. Copy the
++ * remaining bytes individually.
++ */
++ extract.b r10, r8:t
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ extract.b r10, r8:u
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ extract.b r10, r8:l
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ extract.b r10, r8:b
++ st.b dst++, r10
++ retal r12
++
++.Lunaligned_src:
++ /* Copy bytes until we're aligned */
++ rsub r8, r8, 4
++ add pc, pc, r8 << 3
++ nop
++ nop
++ ld.ub r10, src++
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++
++ rjmp .Laligned_copy
+diff -Nur uClibc-0.9.28/libc/string/avr32/stringtest.c uClibc-0.9.28-avr32-20060621/libc/string/avr32/stringtest.c
+--- uClibc-0.9.28/libc/string/avr32/stringtest.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/stringtest.c 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,144 @@
++
++#include <stdio.h>
++#include <string.h>
++#include <time.h>
++#include <sys/mman.h>
++
++#define BUF_SIZE (8 * 1024)
++
++static char *buf1;
++static char *buf1_ref;
++static char *buf2;
++
++extern void *optimized_memcpy(void *dest, void *src, size_t len);
++extern void *optimized_memmove(void *dest, void *src, size_t len);
++extern char *optimized_strcpy(char *dest, char *src);
++extern char *optimized_strncpy(char *dest, char *src, size_t len);
++
++void dump_mismatch(char *buf, char *ref, size_t len)
++{
++ int i, j;
++
++ for (i = 0; i < len; i += 16) {
++ if (memcmp(buf + i, ref + i, 16) == 0)
++ continue;
++
++ printf("%4x buf:", i);
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", buf[j]);
++ printf("\n ref:");
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", ref[j]);
++ printf("\n");
++ }
++}
++
++static void test_memcpy(int src_offset, int dst_offset, int len)
++{
++ clock_t start, old, new;
++ int i;
++
++ memset(buf1, 0x55, BUF_SIZE);
++ memset(buf1_ref, 0x55, BUF_SIZE);
++ memset(buf2, 0xaa, BUF_SIZE);
++
++ printf("Testing memcpy with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ start = clock();
++ for (i = 0; i < 8192; i++)
++ optimized_memcpy(buf1 + dst_offset, buf2 + src_offset, len);
++ new = clock() - start;
++ start = clock();
++ for ( i = 0; i < 8192; i++)
++ memcpy(buf1_ref + dst_offset, buf2 + src_offset, len);
++ old = clock() - start;
++
++ if (memcmp(buf1, buf1_ref, BUF_SIZE) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, BUF_SIZE);
++ }
++ printf("CPU time used: %d vs. %d\n", new, old);
++}
++
++static void test_memmove(int src_offset, int dst_offset, int len)
++{
++ clock_t start, old, new;
++
++ memset(buf1, 0x55, BUF_SIZE);
++ memset(buf1_ref, 0x55, BUF_SIZE);
++ memset(buf2, 0xaa, BUF_SIZE);
++
++ printf("Testing memmove with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ start = clock();
++ optimized_memmove(buf1 + dst_offset, buf2 + src_offset, len);
++ new = clock() - start;
++ start = clock();
++ memmove(buf1_ref + dst_offset, buf2 + src_offset, len);
++ old = clock() - start;
++
++ if (memcmp(buf1, buf1_ref, BUF_SIZE) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, BUF_SIZE);
++ }
++ printf("CPU time used: %d vs. %d\n", new, old);
++}
++
++int main(int argc, char *argv[])
++{
++ buf2 = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf2 == MAP_FAILED) {
++ perror("Failed to allocate memory for buf2");
++ return 1;
++ }
++ buf1 = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf1 == MAP_FAILED) {
++ perror("Failed to allocate memory for buf1");
++ return 1;
++ }
++ buf1_ref = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf1_ref == MAP_FAILED) {
++ perror("Failed to allocate memory for buf1_ref");
++ return 1;
++ }
++ printf("\n === MEMCPY ===\n\n");
++
++ test_memcpy(0, 0, BUF_SIZE - 32);
++ test_memcpy(0, 0, 1);
++ test_memcpy(0, 0, 31);
++ test_memcpy(0, 0, 32);
++ test_memcpy(0, 0, 127);
++ test_memcpy(0, 0, 128);
++ test_memcpy(4, 4, BUF_SIZE - 32 - 4);
++ test_memcpy(1, 1, BUF_SIZE - 32 - 1);
++ test_memcpy(1, 1, 126);
++ test_memcpy(0, 3, 128);
++ test_memcpy(1, 4, 128);
++ test_memcpy(0, 0, 0);
++
++ printf("\n === MEMMOVE ===\n\n");
++
++ test_memmove(0, 0, BUF_SIZE - 32);
++ test_memmove(0, 0, 1);
++ test_memmove(0, 0, 31);
++ test_memmove(0, 0, 32);
++ test_memmove(0, 0, BUF_SIZE - 33);
++ test_memmove(0, 0, 128);
++ test_memmove(4, 4, BUF_SIZE - 32 - 4);
++ test_memmove(1, 1, BUF_SIZE - 32 - 1);
++ test_memmove(1, 1, BUF_SIZE - 130);
++ test_memmove(0, 3, BUF_SIZE - 128);
++ test_memmove(1, 4, BUF_SIZE - 128);
++ test_memmove(0, 0, 0);
++
++ return 0;
++}
+diff -Nur uClibc-0.9.28/libc/string/avr32/strlen.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/strlen.S
+--- uClibc-0.9.28/libc/string/avr32/strlen.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/strlen.S 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define str r12
++
++ .text
++ .global strlen
++ .type strlen, @function
++strlen:
++ mov r11, r12
++
++ mov r9, str
++ andl r9, 3, COH
++ brne .Lunaligned_str
++
++1: ld.w r8, str++
++ tnbz r8
++ brne 1b
++
++ sub r12, r11
++ extract.b r9, r8:t
++ cp.w r9, 0
++ subeq r12, 4
++ reteq r12
++ extract.b r9, r8:u
++ cp.w r9, 0
++ subeq r12, 3
++ reteq r12
++ extract.b r9, r8:l
++ cp.w r9, 0
++ subeq r12, 2
++ reteq r12
++ sub r12, 1
++ retal r12
++
++.Lunaligned_str:
++ add pc, pc, r9 << 3
++ sub r0, r0, 0 /* 4-byte nop */
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ brne 1b
++
++1: sub r12, 1
++ sub r12, r11
++ retal r12
+diff -Nur uClibc-0.9.28/libc/string/avr32/strncpy.S uClibc-0.9.28-avr32-20060621/libc/string/avr32/strncpy.S
+--- uClibc-0.9.28/libc/string/avr32/strncpy.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/strncpy.S 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,78 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define dst r9
++#define src r11
++
++ .text
++ .global strcpy
++ .type strncpy, @function
++strncpy:
++ mov dst, r12
++
++ pref src[0]
++ mov dst, r12
++
++ /*
++ * Check alignment. If src is aligned but dst isn't, we can't
++ * do much about it...
++ */
++ mov r8, src
++ andl r8, 3 COH
++ brne .Lunaligned_src
++
++.Laligned_copy:
++ sub r10, 4
++ brlt 3f
++1: ld.w r8, src++
++ tnbz r8
++ breq 2f
++ st.w dst++, r8
++ sub r10, 4
++ brne 1b
++
++3: sub r10, -4
++ reteq r12
++
++ /* This is safe as long as src is word-aligned and r10 > 0 */
++ ld.w r8, src++
++
++2: /*
++ * Ok, r8 now contains the terminating '\0'. Copy the
++ * remaining bytes individually.
++ */
++ extract.b r11, r8:t
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ extract.b r11, r8:u
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ extract.b r11, r8:l
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ extract.b r10, r8:b
++ st.b dst++, r10
++ retal r12
++
++.Lunaligned_src:
++ /* Copy bytes until we're aligned */
++ min r8, r8, r10
++ sub r10, r8
++ sub r8, 1
++ retlt r12
++1: ld.ub r10, src++
++ st.b dst++, r10
++ sub r8, 1
++ brge 1b
++
++ rjmp .Laligned_copy
+diff -Nur uClibc-0.9.28/libc/string/avr32/test_memcpy.c uClibc-0.9.28-avr32-20060621/libc/string/avr32/test_memcpy.c
+--- uClibc-0.9.28/libc/string/avr32/test_memcpy.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/string/avr32/test_memcpy.c 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,66 @@
++
++#include <stdio.h>
++#include <string.h>
++
++#define BUF_SIZE 32768
++
++static char buf1[BUF_SIZE] __attribute__((aligned(32)));
++static char buf1_ref[BUF_SIZE] __attribute__((aligned(32)));
++static char buf2[BUF_SIZE] __attribute__((aligned(32)));
++
++extern void *new_memcpy(void *dest, void *src, size_t len);
++
++void dump_mismatch(char *buf, char *ref, size_t len)
++{
++ int i, j;
++
++ for (i = 0; i < len; i += 16) {
++ if (memcmp(buf + i, ref + i, 16) == 0)
++ continue;
++
++ printf("% 4x buf:", i);
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", buf[j]);
++ printf("\n ref:");
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", ref[j]);
++ printf("\n");
++ }
++}
++
++void test(int src_offset, int dst_offset, int len)
++{
++ memset(buf1, 0x55, sizeof(buf1));
++ memset(buf1_ref, 0x55, sizeof(buf1_ref));
++ memset(buf2, 0xaa, sizeof(buf2));
++
++ printf("Testing with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ new_memcpy(buf1 + dst_offset, buf2 + src_offset, len);
++ memcpy(buf1_ref + dst_offset, buf2 + src_offset, len);
++
++ if (memcmp(buf1, buf1_ref, sizeof(buf1)) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, sizeof(buf1));
++ }
++}
++
++int main(int argc, char *argv[])
++{
++ test(0, 0, BUF_SIZE);
++ test(0, 0, 1);
++ test(0, 0, 31);
++ test(0, 0, 32);
++ test(0, 0, 127);
++ test(0, 0, 128);
++ test(4, 4, BUF_SIZE - 4);
++ test(1, 1, BUF_SIZE - 1);
++ test(1, 1, 126);
++ test(0, 3, 128);
++ test(1, 4, 128);
++
++ return 0;
++}
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/atomicity.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/atomicity.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/atomicity.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/atomicity.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,86 @@
++/* Low-level functions for atomic operations. AVR32 version.
++ Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _ATOMICITY_H
++#define _ATOMICITY_H 1
++
++#include <inttypes.h>
++
++static inline int
++__attribute__((unused))
++exchange_and_add (volatile uint32_t *mem, int val)
++{
++ int tmp, result;
++
++ __asm__ __volatile__(
++ "/* Inline exchange and add */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " add %1, %0, %4\n"
++ " stcond %2, %1\n"
++ " brne 1b"
++ : "=&r"(result), "=&r"(tmp), "=m"(*mem)
++ : "m"(*mem), "r"(val)
++ : "cc", "memory");
++
++ return result;
++}
++
++static inline void
++__attribute__((unused))
++atomic_add (volatile uin32_t *mem, int val)
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline atomic add */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " add %0, %3\n"
++ " stcond %2, %0\n"
++ " brne 1b"
++ : "=&r"(result), "=m"(*mem)
++ : "m"(*mem), "r"(val)
++ : "cc", "memory");
++}
++
++static inline int
++__attribute__((unused))
++compare_and_swap(volatile long int *p, long int oldval, long int newval)
++{
++ long int result, tmp;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %1, %3\n"
++ " cp.w %1, %5\n"
++ " sreq %0\n"
++ " brne 2f\n"
++ " stcond %2, %4\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=&r"(tmp), "=m"(*p)
++ : "m"(*p), "r"(newval), "r"(oldval)
++ : "cc", "memory");
++
++ return result;
++}
++
++#endif /* atomicity.h */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/byteswap.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/byteswap.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/byteswap.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/byteswap.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,80 @@
++/* Macros to swap the order of bytes in integer values.
++ Copyright (C) 2005 Atmel Norway.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
++# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
++#endif
++
++#ifndef _BITS_BYTESWAP_H
++#define _BITS_BYTESWAP_H 1
++
++/* Swap bytes in 16 bit value. */
++#if defined __GNUC__
++# define __bswap_16(x) (__extension__ __builtin_bswap_16(x))
++#else
++/* This is better than nothing. */
++static __inline unsigned short int
++__bswap_16 (unsigned short int __bsx)
++{
++ return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8));
++}
++#endif
++
++/* Swap bytes in 32 bit value. */
++#if defined __GNUC__
++# define __bswap_32(x) (__extension__ __builtin_bswap_32(x))
++#else
++static __inline unsigned int
++__bswap_32 (unsigned int __bsx)
++{
++ return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) |
++ (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24));
++}
++#endif
++
++#if defined __GNUC__
++/* Swap bytes in 64 bit value. */
++# define __bswap_constant_64(x) \
++ ((((x) & 0xff00000000000000ull) >> 56) \
++ | (((x) & 0x00ff000000000000ull) >> 40) \
++ | (((x) & 0x0000ff0000000000ull) >> 24) \
++ | (((x) & 0x000000ff00000000ull) >> 8) \
++ | (((x) & 0x00000000ff000000ull) << 8) \
++ | (((x) & 0x0000000000ff0000ull) << 24) \
++ | (((x) & 0x000000000000ff00ull) << 40) \
++ | (((x) & 0x00000000000000ffull) << 56))
++
++# define __bswap_64(x) \
++ (__extension__ \
++ ({ \
++ union { \
++ __extension__ unsigned long long int __ll; \
++ unsigned int __l[2]; \
++ } __w, __r; \
++ if (__builtin_constant_p(x)) \
++ __r.__ll = __bswap_constant_64(x); \
++ else { \
++ __w.__ll = (x); \
++ __r.__l[0] = __bswap_32(__w.__l[1]); \
++ __r.__l[1] = __bswap_32(__w.__l[0]); \
++ } \
++ __r.__ll; \
++ }))
++#endif
++
++#endif /* _BITS_BYTESWAP_H */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/endian.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/endian.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/endian.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/endian.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,7 @@
++/* AVR32 is big-endian */
++
++#ifndef _ENDIAN_H
++# error "Never use <bits/endian.h> directly; include <endian.h> instead."
++#endif
++
++#define __BYTE_ORDER __BIG_ENDIAN
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/fcntl.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/fcntl.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/fcntl.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,167 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ *
++ * This file is part of the Linux kernel
++ */
++#ifndef _FCNTL_H
++# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
++#endif
++
++#include <sys/types.h>
++
++/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
++ located on an ext2 file system */
++#define O_ACCMODE 0003
++#define O_RDONLY 00
++#define O_WRONLY 01
++#define O_RDWR 02
++#define O_CREAT 0100 /* not fcntl */
++#define O_EXCL 0200 /* not fcntl */
++#define O_NOCTTY 0400 /* not fcntl */
++#define O_TRUNC 01000 /* not fcntl */
++#define O_APPEND 02000
++#define O_NONBLOCK 04000
++#define O_NDELAY O_NONBLOCK
++#define O_SYNC 010000
++#define O_ASYNC 020000
++
++#ifdef __USE_GNU
++# define O_DIRECTORY 040000 /* must be a directory */
++# define O_NOFOLLOW 0100000 /* don't follow links */
++# define O_DIRECT 0200000 /* direct disk access */
++#endif
++
++#ifdef __USE_LARGEFILE64
++# define O_LARGEFILE 0400000
++#endif
++
++/* For now Linux has synchronisity options for data and read operations.
++ We define the symbols here but let them do the same as O_SYNC since
++ this is a superset. */
++#if defined __USE_POSIX199309 || defined __USE_UNIX98
++# define O_DSYNC O_SYNC /* Synchronize data. */
++# define O_RSYNC O_SYNC /* Synchronize read operations. */
++#endif
++
++#define F_DUPFD 0 /* dup */
++#define F_GETFD 1 /* get close_on_exec */
++#define F_SETFD 2 /* set/clear close_on_exec */
++#define F_GETFL 3 /* get file->f_flags */
++#define F_SETFL 4 /* set file->f_flags */
++
++#ifndef __USE_FILE_OFFSET64
++# define F_GETLK 5
++# define F_SETLK 6
++# define F_SETLKW 7
++#else
++# define F_GETLK F_GETLK64
++# define F_SETLK F_SETLK64
++# define F_SETLKW F_SETLKW64
++#endif
++#define F_GETLK64 12 /* using 'struct flock64' */
++#define F_SETLK64 13
++#define F_SETLKW64 14
++
++#if defined __USE_BSD || defined __USE_XOPEN2K
++# define F_SETOWN 8 /* for sockets. */
++# define F_GETOWN 9 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETSIG 10 /* for sockets. */
++# define F_GETSIG 11 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETLEASE 1024 /* Set a lease. */
++# define F_GETLEASE 1025 /* Enquire what lease is active. */
++# define F_NOTIFY 1026 /* Request notfications on a directory. */
++#endif
++
++/* for F_[GET|SET]FL */
++#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
++
++/* for posix fcntl() and lockf() */
++#define F_RDLCK 0
++#define F_WRLCK 1
++#define F_UNLCK 2
++
++/* for old implementation of bsd flock () */
++#define F_EXLCK 4 /* or 3 */
++#define F_SHLCK 8 /* or 4 */
++
++/* for leases */
++#define F_INPROGRESS 16
++
++#ifdef __USE_BSD
++/* operations for bsd flock(), also used by the kernel implementation */
++# define LOCK_SH 1 /* shared lock */
++# define LOCK_EX 2 /* exclusive lock */
++# define LOCK_NB 4 /* or'd with one of the above to prevent
++ blocking */
++# define LOCK_UN 8 /* remove lock */
++#endif
++
++#ifdef __USE_GNU
++# define LOCK_MAND 32 /* This is a mandatory flock */
++# define LOCK_READ 64 /* ... Which allows concurrent
++ read operations */
++# define LOCK_WRITE 128 /* ... Which allows concurrent
++ write operations */
++# define LOCK_RW 192 /* ... Which allows concurrent
++ read & write ops */
++#endif
++
++#ifdef __USE_GNU
++/* Types of directory notifications that may be requested with F_NOTIFY. */
++# define DN_ACCESS 0x00000001 /* File accessed. */
++# define DN_MODIFY 0x00000002 /* File modified. */
++# define DN_CREATE 0x00000004 /* File created. */
++# define DN_DELETE 0x00000008 /* File removed. */
++# define DN_RENAME 0x00000010 /* File renamed. */
++# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
++# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
++#endif
++
++struct flock {
++ short l_type;
++ short l_whence;
++#ifndef __USE_FILE_OFFSET64
++ __off_t l_start;
++ __off_t l_len;
++#else
++ __off64_t l_start;
++ __off64_t l_len;
++#endif
++ __pid_t l_pid;
++};
++
++#ifdef __USE_LARGEFILE64
++struct flock64 {
++ short l_type;
++ short l_whence;
++ __off64_t l_start;
++ __off64_t l_len;
++ __pid_t l_pid;
++};
++#endif
++
++/* Define some more compatibility macros to be backward compatible with
++ * BSD systems which did not managed to hide these kernel macros. */
++#ifdef __USE_BSD
++# define FAPPEND O_APPEND
++# define FFSYNC O_FSYNC
++# define FASYNC O_ASYNC
++# define FNONBLOCK O_NONBLOCK
++# define FNDELAY O_NDELAY
++#endif /* Use BSD. */
++
++/* Advise to `posix_fadvise'. */
++#ifdef __USE_XOPEN2K
++# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
++#endif
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_stat.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/kernel_stat.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_stat.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/kernel_stat.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,63 @@
++#ifndef _BITS_STAT_STRUCT_H
++#define _BITS_STAT_STRUCT_H
++
++/*
++ * This file provides struct stat, taken from kernel 2.6.4
++ * (include/asm-avr32/stat.h revision 1.1).
++ */
++
++struct kernel_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;
++};
++
++#define STAT_HAVE_NSEC 1
++
++struct kernel_stat64 {
++ unsigned long long st_dev;
++
++ unsigned long long st_ino;
++ unsigned int st_mode;
++ unsigned int st_nlink;
++
++ unsigned long st_uid;
++ unsigned long st_gid;
++
++ unsigned long long st_rdev;
++
++ long long st_size;
++ unsigned long __pad1;
++ unsigned long st_blksize;
++
++ unsigned long 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 __unused1;
++ unsigned long __unused2;
++};
++
++#endif /* _BITS_STAT_STRUCT_H */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_types.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/kernel_types.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/kernel_types.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/kernel_types.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,56 @@
++/* Note that we use the exact same include guard #define names
++ * as asm/posix_types.h. This will avoid gratuitous conflicts
++ * with the posix_types.h kernel header, and will ensure that
++ * our private content, and not the kernel header, will win.
++ * -Erik
++ */
++#ifndef __ASM_AVR32_POSIX_TYPES_H
++#define __ASM_AVR32_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_dev_t;
++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 int __kernel_uid_t;
++typedef unsigned int __kernel_gid_t;
++typedef unsigned long __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 {
++#if defined(__USE_ALL)
++ int val[2];
++#else
++ int __val[2];
++#endif
++} __kernel_fsid_t;
++
++#endif /* __ASM_AVR32_POSIX_TYPES_H */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/machine-gmon.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/machine-gmon.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/machine-gmon.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/machine-gmon.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,69 @@
++/* Machine-dependent definitions for profiling support. AVR32 version.
++ Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define mcount_internal __mcount_internal
++
++#define _MCOUNT_DECL(frompc, selfpc) \
++static void __attribute((used)) mcount_internal(unsigned long frompc, unsigned long selfpc)
++
++/*
++ * This mcount implementation expects to get called after the prologue
++ * has been run. It also expects that r7 contains a valid frame
++ * pointer.
++ *
++ * When profiling, the compiler should generate something like this at
++ * each function entry:
++ *
++ * pushm r0-r7,lr // lr mandatory, others optional
++ * mov r7, sp
++ * // rest of prologue goes here
++ * mcall pc[.LC1 - .]
++ * // rest of function goes here
++ * .LC1:
++ * .long mcount
++ *
++ * or for PIC:
++ *
++ * pushm r0-r7,lr
++ * mov r7, sp
++ * // rest of prologue goes here
++ * lddpc r0, .LC1
++ * .L1: rsub r0, pc
++ * mcall r0[mcount@GOT]
++ * // rest of function goes here
++ * .LC1:
++ * .long .L1 - _GLOBAL_OFFSET_TABLE_
++ *
++ * This way, when mcount() is called, r7 points to the calling
++ * function's return address. It is guaranteed that calling mcount
++ * will clobber no registers except LR, which is unavoidable.
++ */
++#define MCOUNT asm( \
++ " .align 4\n" \
++ " .global _mcount\n" \
++ " .type _mcount,@function\n" \
++ "_mcount:\n" \
++ " pushm r8-r12,lr\n" \
++ " mov r11, lr\n" \
++ " ld.w r12, r7[0]\n" \
++ " rcall __mcount_internal\n" \
++ " popm r8-r12,pc\n" \
++ " .size _mcount, . - _mcount\n" \
++ " .weak mcount\n" \
++ " mcount = _mcount");
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/mman.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/mman.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/mman.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/mman.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,95 @@
++/* Definitions for POSIX memory map interface. Linux/AVR32 version.
++ Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_MMAN_H
++# error "Never include this file directly. Use <sys/mman.h> instead"
++#endif
++
++/* The following definitions basically come from the kernel headers.
++ But the kernel header is not namespace clean. */
++
++
++/* Protections are chosen from these bits, OR'd together. The
++ implementation does not necessarily support PROT_EXEC or PROT_WRITE
++ without PROT_READ. The only guarantees are that no writing will be
++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
++
++#define PROT_READ 0x1 /* Page can be read. */
++#define PROT_WRITE 0x2 /* Page can be written. */
++#define PROT_EXEC 0x4 /* Page can be executed. */
++#define PROT_NONE 0x0 /* Page can not be accessed. */
++
++/* Sharing types (must choose one and only one of these). */
++#define MAP_SHARED 0x01 /* Share changes. */
++#define MAP_PRIVATE 0x02 /* Changes are private. */
++#ifdef __USE_MISC
++# define MAP_TYPE 0x0f /* Mask for type of mapping. */
++#endif
++
++/* Other flags. */
++#define MAP_FIXED 0x10 /* Interpret addr exactly. */
++#ifdef __USE_MISC
++# define MAP_FILE 0
++# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
++# define MAP_ANON MAP_ANONYMOUS
++#endif
++
++/* These are Linux-specific. */
++#ifdef __USE_MISC
++# 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 /* Lock the mapping. */
++# 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 */
++#endif
++
++/* Flags to `msync'. */
++#define MS_ASYNC 1 /* Sync memory asynchronously. */
++#define MS_SYNC 4 /* Synchronous memory sync. */
++#define MS_INVALIDATE 2 /* Invalidate the caches. */
++
++/* Flags for `mlockall'. */
++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */
++#define MCL_FUTURE 2 /* Lock all additions to address
++ space. */
++
++/* Flags for `mremap'. */
++#ifdef __USE_GNU
++# define MREMAP_MAYMOVE 1
++#endif
++
++/* Advise to `madvise'. */
++#ifdef __USE_BSD
++# define MADV_NORMAL 0 /* No further special treatment. */
++# define MADV_RANDOM 1 /* Expect random page references. */
++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define MADV_WILLNEED 3 /* Will need these pages. */
++# define MADV_DONTNEED 4 /* Don't need these pages. */
++#endif
++
++/* The POSIX people had to invent similar names for the same things. */
++#ifdef __USE_XOPEN2K
++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
++#endif
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/profil-counter.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/profil-counter.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/profil-counter.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/profil-counter.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,26 @@
++/* Low-level statistical profiling support function. Linux/AVR32 version.
++ Copyright (C) 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <signal.h>
++
++void
++profil_counter(int signo, siginfo_t *si, struct sigcontext *sc)
++{
++ profil_count((void *)sc->pc);
++}
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/setjmp.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/setjmp.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/setjmp.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,21 @@
++/*
++ * Copyright (C) 2004-2005 Atmel Norway
++ */
++#ifndef _SETJMP_H
++# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
++#endif
++
++#ifndef _ASM
++/*
++ * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
++ * not saved.
++ */
++typedef int __jmp_buf[11];
++#endif
++
++#define __JMP_BUF_SP 4
++
++/* Test if longjmp to JMPBUF would unwind the frame containing a local
++ variable at ADDRESS. */
++#define _JMPBUF_UNWINDS(jmpbuf, address) \
++ ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/syscalls.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/syscalls.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/syscalls.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/syscalls.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,143 @@
++#ifndef _SYSCALL_H
++# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
++#endif
++
++/*
++ * This includes the `__NR_<name>' syscall numbers taken from the
++ * Linux kernel header files. It also defines the traditional
++ * `SYS_<name>' macros for older programs.
++ */
++#include <bits/sysnum.h>
++
++#ifndef __set_errno
++# define __set_errno(val) (*__errno_location()) = (val)
++#endif
++#ifndef SYS_ify
++# define SYS_ify(syscall_name) (__NR_##syscall_name)
++#endif
++
++#ifndef __ASSEMBLER__
++
++#undef _syscall0
++#define _syscall0(type,name) \
++ type name(void) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 0)); \
++ }
++
++#undef _syscall1
++#define _syscall1(type,name,type1,arg1) \
++ type name(type1 arg1) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 1, arg1)); \
++ }
++
++#undef _syscall2
++#define _syscall2(type,name,type1,arg1,type2,arg2) \
++ type name(type1 arg1, type2 arg2) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 2, arg1, arg2)); \
++ }
++
++#undef _syscall3
++#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
++ type name(type1 arg1, type2 arg2, type3 arg3) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 3, arg1, \
++ arg2, arg3)); \
++ }
++
++#undef _syscall4
++#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 4, arg1, arg2, \
++ arg3, arg4)); \
++ }
++
++#undef _syscall5
++#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 5, arg1, arg2, \
++ arg3, arg4, arg5)); \
++ }
++
++#undef _syscall6
++#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5,type6,arg6) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5, type6 arg6) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 6, arg1, arg2, arg3, \
++ arg4, arg5, arg6)); \
++ }
++
++#undef unlikely
++#define unlikely(x) __builtin_expect((x), 0)
++
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ ({ \
++ unsigned _sys_result = INTERNAL_SYSCALL(name, , nr, args); \
++ if (unlikely(INTERNAL_SYSCALL_ERROR_P(_sys_result, ))) { \
++ __set_errno(INTERNAL_SYSCALL_ERRNO(_sys_result, )); \
++ _sys_result = (unsigned int) -1; \
++ } \
++ (int) _sys_result; \
++ })
++
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) do { } while(0)
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) \
++ ({ \
++ register int _a1 asm ("r12"); \
++ register int _scno asm("r8") = SYS_ify(name); \
++ LOAD_ARGS_##nr (args); \
++ asm volatile ("scall /* syscall " #name " */" \
++ : "=r" (_a1) \
++ : "r"(_scno) ASM_ARGS_##nr \
++ : "lr", "cc", "memory"); \
++ _a1; \
++ })
++
++#undef INTERNAL_SYSCALL_ERROR_P
++#define INTERNAL_SYSCALL_ERROR_P(val, err) \
++ ((unsigned int)(val) >= 0xfffff001U)
++
++#undef INTERNAL_SYSCALL_ERRNO
++#define INTERNAL_SYSCALL_ERRNO(val, errr) (-(val))
++
++#define LOAD_ARGS_0() do { } while(0)
++#define ASM_ARGS_0
++#define LOAD_ARGS_1(a1) \
++ _a1 = (int) (a1); \
++ LOAD_ARGS_0()
++#define ASM_ARGS_1 ASM_ARGS_0, "r"(_a1)
++#define LOAD_ARGS_2(a1, a2) \
++ register int _a2 asm("r11") = (int)(a2); \
++ LOAD_ARGS_1(a1)
++#define ASM_ARGS_2 ASM_ARGS_1, "r"(_a2)
++#define LOAD_ARGS_3(a1, a2, a3) \
++ register int _a3 asm("r10") = (int)(a3); \
++ LOAD_ARGS_2(a1, a2)
++#define ASM_ARGS_3 ASM_ARGS_2, "r"(_a3)
++#define LOAD_ARGS_4(a1, a2, a3, a4) \
++ register int _a4 asm("r9") = (int)(a4); \
++ LOAD_ARGS_3(a1, a2, a3)
++#define ASM_ARGS_4 ASM_ARGS_3, "r"(_a4)
++#define LOAD_ARGS_5(a1, a2, a3, a4, a5) \
++ register int _a5 asm("r5") = (int)(a5); \
++ LOAD_ARGS_4(a1, a2, a3, a4)
++#define ASM_ARGS_5 ASM_ARGS_4, "r"(_a5)
++#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6) \
++ register int _a6 asm("r3") = (int)(a6); \
++ LOAD_ARGS_5(a1, a2, a3, a4, a5)
++#define ASM_ARGS_6 ASM_ARGS_5, "r"(_a6)
++
++#endif /* __ASSEMBLER__ */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/wordsize.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/wordsize.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bits/wordsize.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bits/wordsize.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1 @@
++#define __WORDSIZE 32
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/brk.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/brk.c
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/brk.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/brk.c 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,23 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <sys/syscall.h>
++
++void *__curbrk = 0;
++
++int brk (void *addr)
++{
++ void *newbrk;
++
++ newbrk = INLINE_SYSCALL(brk, 1, addr);
++
++ __curbrk = newbrk;
++
++ if (newbrk < addr) {
++ __set_errno (ENOMEM);
++ return -1;
++ }
++
++ return 0;
++}
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-_setjmp.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bsd-_setjmp.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-_setjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bsd-_setjmp.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 0) */
++ .global _setjmp
++ .type _setjmp,"function"
++ .align 1
++_setjmp:
++ mov r11, 0
++ bral __sigsetjmp_internal
++ .size _setjmp, . - _setjmp
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-setjmp.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bsd-setjmp.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/bsd-setjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/bsd-setjmp.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 1) */
++ .global setjmp
++ .type setjmp,"function"
++ .align 1
++setjmp:
++ mov r11, 1
++ bral __sigsetjmp_internal
++ .size setjmp, . - setjmp
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/clone.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/clone.c
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/clone.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/clone.c 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,37 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++
++/*
++ * I don't know if we can be absolutely certain that the fn and arg
++ * parameters are preserved when returning as the child. If the
++ * compiler stores them in registers (r0-r7), they should be.
++ */
++int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg)
++{
++ register int (*_fn)(void *arg) = fn;
++ register void *_arg = arg;
++ int err;
++
++ /* Sanity check the arguments */
++ err = -EINVAL;
++ if (!fn)
++ goto syscall_error;
++ if (!child_stack)
++ goto syscall_error;
++
++ err = INLINE_SYSCALL(clone, 2, flags, child_stack);
++ if (err < 0)
++ goto syscall_error;
++ else if (err != 0)
++ return err;
++
++ _exit(_fn(_arg));
++
++syscall_error:
++ __set_errno (-err);
++ return -1;
++}
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/crt1.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/crt1.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/crt1.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/crt1.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,93 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ *
++ * When we enter _start, the stack looks like this:
++ * argc argument counter
++ * argv[0] pointer to program name
++ * argv[1..argc-1] pointers to program args
++ * NULL
++ * env[0..N] pointers to environment variables
++ * NULL
++ *
++ * r12 contains a function pointer to be registered with `atexit'.
++ * This is how the dynamic linker arranges to have DT_FINI functions
++ * called for shared libraries that have been loaded before this
++ * code runs.
++ *
++ * We're going to call the following function:
++ * __uClibc_main(int (*main)(int, char **, char **), int argc,
++ * char **argv, void (*app_init)(void), void (*app_fini)(void),
++ * void (*rtld_fini)(void), void *stack_end)
++ *
++ * So we need to set up things as follows:
++ * r12 = address of main
++ * r11 = argc
++ * r10 = &argv[0]
++ * r9 = address of _init
++ * r8 = address of _fini
++ * sp[0] = whatever we got passed in r12
++ */
++
++#include <features.h>
++
++ .text
++ .global _start
++ .type _start, @function
++_start:
++ /* Clear the frame pointer and link register since this is the outermost frame. */
++ mov r7, 0
++ mov lr, 0
++
++ ld.w r11, sp++ /* argc */
++ mov r10, sp /* &argv[0] */
++
++ st.w --sp, r10 /* stack_end */
++ st.w --sp, r12 /* rtld_fini */
++
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++.L_RGOT:
++ rsub r6, pc
++ lda.w r9, _init
++ lda.w r8, _fini
++ lda.w r12, main
++
++ /* Ok, now run uClibc's main() -- should not return */
++ call __uClibc_main
++
++ .align 2
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++ lddpc r9, __init_addr /* app_init */
++ lddpc r8, __fini_addr /* app_fini */
++ lddpc r12, __main_addr /* main */
++
++ /* Ok, now run uClibc's main() -- should not return */
++ lddpc pc, ___uClibc_main_addr
++
++ .align 2
++__init_addr:
++ .long _init
++__fini_addr:
++ .long _fini
++__main_addr:
++ .long main
++___uClibc_main_addr:
++ .long __uClibc_main
++#endif
++ .size _start, . - _start
++
++ /*
++ * The LSB says we need this.
++ */
++ .section ".note.ABI-tag", "a"
++ .align 4
++ .long 2f - 1f /* namesz */
++ .long 4f - 3f /* descsz */
++ .long 1 /* type */
++1: .asciz "GNU" /* name */
++2: .align 4
++3: .long 0 /* Linux executable */
++ .long 2,6,0 /* Earliest compatible kernel */
++4: .align 4
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/crti.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/crti.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/crti.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/crti.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,17 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++_init:
++ /* Use a four-byte instruction to avoid NOPs */
++ stm --sp, r0-r7,lr
++ .align 2
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++_fini:
++ stm --sp, r0-r7,lr
++ .align 2
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/crtn.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/crtn.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/crtn.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/crtn.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,14 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++ ldm sp++, r0-r7,pc
++ .size _init, . - _init
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++ ldm sp++, r0-r7,pc
++ .size _fini, . - _fini
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/__longjmp.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/__longjmp.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/__longjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/__longjmp.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,17 @@
++/* longjmp for AVR32
++ *
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ .global __longjmp
++ .type __longjmp,"function"
++ .align 1
++__longjmp:
++ ldm r12++, r0,r1,r2,r3,r4,r5,r6,r7,r8,sp,lr
++ mov r12, r11 /* get the return value right */
++ mustr r8 /* restore status register (lower half) */
++ cp r12, 0 /* can't return zero */
++ frs
++ moveq r12, 1
++ mov pc,lr
++ .size __longjmp, . - __longjmp
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/Makefile uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/Makefile
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/Makefile 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,93 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++TOPDIR=../../../../
++include $(TOPDIR)Rules.mak
++ASFLAGS=$(CFLAGS)
++
++CRT_SRC = crt1.S
++CRT_OBJ = crt1.o
++SCRT_OBJ = $(patsubst %,S%, $(CRT_OBJ))
++CTOR_TARGETS=$(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o
++
++SSRC=__longjmp.S setjmp.S bsd-setjmp.S vfork.S \
++ bsd-_setjmp.S sigrestorer.S syscall.S
++SOBJS=$(patsubst %.S,%.o, $(SSRC))
++
++CSRC=clone.c brk.c sigaction.c mmap.c
++COBJS=$(patsubst %.c,%.o, $(CSRC))
++
++OBJS=$(SOBJS) $(COBJS)
++
++OBJ_LIST=../../../obj.sysdeps.$(TARGET_ARCH)
++
++all: $(OBJ_LIST)
++
++$(OBJ_LIST): $(OBJS) $(CRT_OBJ) $(SCRT_OBJ) $(CTOR_TARGETS)
++ echo $(patsubst %, sysdeps/linux/$(TARGET_ARCH)/%, $(OBJS)) > $(OBJ_LIST)
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp $(CRT_OBJ) $(SCRT_OBJ) $(TOPDIR)lib/
++
++$(CRT_OBJ): $(CRT_SRC)
++ $(CC) $(ASFLAGS) -DL_$* $< -c -o $*.o
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(SCRT_OBJ): $(CRT_SRC)
++ $(CC) $(ASFLAGS) $(PIEFLAG) -DL_$* $< -c -o $*.o
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(SOBJS): %.o : %.S
++ $(CC) $(ASFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(COBJS): %.o : %.c
++ $(CC) $(CFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y)
++crti.o: crti.S
++ $(CC) $(ASFLAGS) -c crti.S -o crti.o
++
++$(TOPDIR)lib/crti.o: crti.o
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp crti.o $(TOPDIR)lib/
++
++crtn.o: crtn.S
++ $(CC) $(ASFLAGS) -c crtn.S -o crtn.o
++
++$(TOPDIR)lib/crtn.o: crtn.o
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp crtn.o $(TOPDIR)lib/
++else
++$(TOPDIR)lib/crti.o:
++ $(INSTALL) -d $(TOPDIR)lib/
++ $(AR) $(ARFLAGS) $(TOPDIR)lib/crti.o
++$(TOPDIR)lib/crtn.o:
++ $(INSTALL) -d $(TOPDIR)lib/
++ $(AR) $(ARFLAGS) $(TOPDIR)lib/crtn.o
++endif
++
++
++headers:
++# $(LN) -fs ../libc/sysdeps/linux/avr32/fpu_control.h $(TOPDIR)/include/
++
++clean:
++ $(RM) *.[oa] *~ core
++ $(RM) bits/sysnum.h
++ $(RM) gmon-start.S
++
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/_mmap.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/_mmap.c
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/_mmap.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/_mmap.c 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,33 @@
++/* Copyright (C) 2005 Atmel Norway
++
++ This program is free software; you can redistribute it and/or modify it under
++ the terms of the GNU Library General Public License as published by the Free
++ Software Foundation; either version 2 of the License, or (at your option) any
++ later version.
++
++ 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 Library General Public License for more
++ details.
++
++ You should have received a copy of the GNU Library 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
++
++ Derived in part from the Linux-8086 C library, the GNU C Library, and several
++ other sundry sources. Files within this library are copyright by their
++ respective copyright holders.
++ */
++
++#include <errno.h>
++#include <sys/mman.h>
++#include <sys/syscall.h>
++
++#define __NR_mmap2 __NR_mmap
++
++static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, pgoff);
++
++__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
++{
++ return mmap2(addr, len, prot, flags, fd, offset >> 12);
++}
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/mmap.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/mmap.c
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/mmap.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/mmap.c 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,31 @@
++/* Copyright (C) 2005 Atmel Norway
++
++ This program is free software; you can redistribute it and/or modify it under
++ the terms of the GNU Library General Public License as published by the Free
++ Software Foundation; either version 2 of the License, or (at your option) any
++ later version.
++
++ 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 Library General Public License for more
++ details.
++
++ You should have received a copy of the GNU Library 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
++
++ Derived in part from the Linux-8086 C library, the GNU C Library, and several
++ other sundry sources. Files within this library are copyright by their
++ respective copyright holders.
++ */
++
++#include <errno.h>
++#include <sys/mman.h>
++#include <sys/syscall.h>
++
++static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, pgoff);
++
++__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
++{
++ return mmap2(addr, len, prot, flags, fd, offset >> 12);
++}
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/setjmp.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/setjmp.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/setjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/setjmp.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,43 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#define _SETJMP_H
++#define _ASM
++#include <bits/setjmp.h>
++
++ .text
++
++ .global __sigsetjmp
++ .type __sigsetjmp,"function"
++
++ /* Create a global, hidden symbol for use by setjmp() and _setjmp().
++ If it's not hidden, the linker will complain about a relative
++ jump to a dynamic symbol when building a shared library.
++
++ Also, if a user overrides the __sigsetjmp function, he might not
++ expect the setjmp() and _setjmp() function to effectively be
++ overridden as well. */
++ .global __sigsetjmp_internal
++ .hidden __sigsetjmp_internal
++ .type __sigsetjmp_internal,"function"
++ .align 1
++__sigsetjmp:
++__sigsetjmp_internal:
++ mustr r8
++ stm r12, r0,r1,r2,r3,r4,r5,r6,r7,r8,sp,lr
++
++ /* Make a tail call to __sigjmp_save; it takes the same args. */
++#ifdef __PIC__
++ mov r9, r6
++ lddpc r6, .LG
++.L1: rsub r6, pc
++ ld.w r8, r6[__sigjmp_save@got]
++ mov r6, r9
++ mov pc, r8
++
++ .align 2
++.LG: .long .L1 - _GLOBAL_OFFSET_TABLE_
++#else
++ rjmp __sigjmp_save
++#endif
++ .size __sigsetjmp, . - __sigsetjmp
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/sigaction.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sigaction.c
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/sigaction.c 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sigaction.c 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,49 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <signal.h>
++#include <string.h>
++#include <sys/syscall.h>
++#include <bits/kernel_sigaction.h>
++
++#define SA_RESTORER 0x04000000
++extern void __default_rt_sa_restorer(void);
++
++/*
++ * If act is not NULL, change the action for sig to *act.
++ * If oact is not NULL, put the old action for sig in *oact.
++ */
++int __libc_sigaction(int signum, const struct sigaction *act,
++ struct sigaction *oldact)
++{
++ struct kernel_sigaction kact, koact;
++ int result;
++
++ if (act) {
++ kact.k_sa_handler = act->sa_handler;
++ memcpy(&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
++ kact.sa_flags = act->sa_flags;
++ if (kact.sa_flags & (SA_RESTORER | SA_ONSTACK))
++ kact.sa_restorer = act->sa_restorer;
++ else
++ kact.sa_restorer = __default_rt_sa_restorer;
++ kact.sa_flags |= SA_RESTORER;
++ }
++
++ result = __syscall_rt_sigaction(signum, act ? __ptrvalue(&kact) : NULL,
++ oldact ? __ptrvalue(&koact) : NULL,
++ _NSIG / 8);
++
++ if (oldact && result >= 0) {
++ oldact->sa_handler = koact.k_sa_handler;
++ memcpy(&oldact->sa_mask, &koact.sa_mask,
++ sizeof(oldact->sa_mask));
++ oldact->sa_flags = koact.sa_flags;
++ oldact->sa_restorer = koact.sa_restorer;
++ }
++
++ return result;
++}
++
++weak_alias(__libc_sigaction, sigaction)
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/sigrestorer.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sigrestorer.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/sigrestorer.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sigrestorer.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,11 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <sys/syscall.h>
++
++ .global __default_rt_sa_restorer
++ .type __default_rt_sa_restorer,"function"
++ .align 1
++__default_rt_sa_restorer:
++ mov r8, __NR_rt_sigreturn
++ scall
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/elf.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/elf.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/elf.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/elf.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,26 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_ELF_H
++#define _SYS_ELF_H 1
++
++#warning "This header is obsolete; use <sys/procfs.h> instead."
++
++#include <sys/procfs.h>
++
++#endif /* sys/elf.h */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/io.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/io.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/io.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/io.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,48 @@
++/* Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_IO_H
++
++#define _SYS_IO_H 1
++#include <features.h>
++
++__BEGIN_DECLS
++
++/* If TURN_ON is TRUE, request for permission to do direct i/o on the
++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
++ permission off for that range. This call requires root privileges. */
++extern int ioperm (unsigned long int __from, unsigned long int __num,
++ int __turn_on) __THROW;
++
++/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
++ permission to access any I/O port is granted. This call requires
++ root privileges. */
++extern int iopl (int __level) __THROW;
++
++/* The functions that actually perform reads and writes. */
++extern unsigned char inb (unsigned long int port) __THROW;
++extern unsigned short int inw (unsigned long int port) __THROW;
++extern unsigned long int inl (unsigned long int port) __THROW;
++
++extern void outb (unsigned char value, unsigned long int port) __THROW;
++extern void outw (unsigned short value, unsigned long int port) __THROW;
++extern void outl (unsigned long value, unsigned long int port) __THROW;
++
++__END_DECLS
++
++#endif /* _SYS_IO_H */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/procfs.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/procfs.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/procfs.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/procfs.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,123 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_PROCFS_H
++#define _SYS_PROCFS_H 1
++
++/* This is somewhat modelled after the file of the same name on SVR4
++ systems. It provides a definition of the core file format for ELF
++ used on Linux. It doesn't have anything to do with the /proc file
++ system, even though Linux has one.
++
++ Anyway, the whole purpose of this file is for GDB and GDB only.
++ Don't read too much into it. Don't use it for anything other than
++ GDB unless you know what you are doing. */
++
++#include <features.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/user.h>
++
++__BEGIN_DECLS
++
++/* Type for a general-purpose register. */
++typedef unsigned long elf_greg_t;
++
++/* And the whole bunch of them. We could have used `struct
++ user_regs' directly in the typedef, but tradition says that
++ the register set is an array, which does have some peculiar
++ semantics, so leave it that way. */
++#define ELF_NGREG (sizeof (struct user_regs) / sizeof(elf_greg_t))
++typedef elf_greg_t elf_gregset_t[ELF_NGREG];
++
++/* Register set for the floating-point registers. */
++typedef struct user_fpregs elf_fpregset_t;
++
++/* Signal info. */
++struct elf_siginfo
++ {
++ int si_signo; /* Signal number. */
++ int si_code; /* Extra code. */
++ int si_errno; /* Errno. */
++ };
++
++/* Definitions to generate Intel SVR4-like core files. These mostly
++ have the same names as the SVR4 types with "elf_" tacked on the
++ front to prevent clashes with Linux definitions, and the typedef
++ forms have been avoided. This is mostly like the SVR4 structure,
++ but more Linuxy, with things that Linux does not support and which
++ GDB doesn't really use excluded. */
++
++struct elf_prstatus
++ {
++ struct elf_siginfo pr_info; /* Info associated with signal. */
++ short int pr_cursig; /* Current signal. */
++ unsigned long int pr_sigpend; /* Set of pending signals. */
++ unsigned long int pr_sighold; /* Set of held signals. */
++ __pid_t pr_pid;
++ __pid_t pr_ppid;
++ __pid_t pr_pgrp;
++ __pid_t pr_sid;
++ struct timeval pr_utime; /* User time. */
++ struct timeval pr_stime; /* System time. */
++ struct timeval pr_cutime; /* Cumulative user time. */
++ struct timeval pr_cstime; /* Cumulative system time. */
++ elf_gregset_t pr_reg; /* GP registers. */
++ int pr_fpvalid; /* True if math copro being used. */
++ };
++
++
++#define ELF_PRARGSZ (80) /* Number of chars for args. */
++
++struct elf_prpsinfo
++ {
++ char pr_state; /* Numeric process state. */
++ char pr_sname; /* Char for pr_state. */
++ char pr_zomb; /* Zombie. */
++ char pr_nice; /* Nice val. */
++ unsigned long int pr_flag; /* Flags. */
++ unsigned short int pr_uid;
++ unsigned short int pr_gid;
++ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
++ /* Lots missing */
++ char pr_fname[16]; /* Filename of executable. */
++ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
++ };
++
++/* The rest of this file provides the types for emulation of the
++ Solaris <proc_service.h> interfaces that should be implemented by
++ users of libthread_db. */
++
++/* Addresses. */
++typedef void *psaddr_t;
++
++/* Register sets. Linux has different names. */
++typedef elf_gregset_t prgregset_t;
++typedef elf_fpregset_t prfpregset_t;
++
++/* We don't have any differences between processes and threads,
++ therefore have only one PID type. */
++typedef __pid_t lwpid_t;
++
++/* Process status and info. In the end we do provide typedefs for them. */
++typedef struct elf_prstatus prstatus_t;
++typedef struct elf_prpsinfo prpsinfo_t;
++
++__END_DECLS
++
++#endif /* sys/procfs.h */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/ucontext.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/ucontext.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/ucontext.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/ucontext.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,94 @@
++/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* Linux/AVR32 ABI compliant context switching support. */
++
++#ifndef _SYS_UCONTEXT_H
++#define _SYS_UCONTEXT_H 1
++
++#include <features.h>
++#include <signal.h>
++#include <sys/procfs.h>
++#include <bits/sigcontext.h>
++
++typedef int greg_t;
++
++/* Number of general registers. */
++#define NGREG 16
++
++/* Container for all general registers. */
++typedef elf_gregset_t gregset_t;
++
++/* Number of each register is the `gregset_t' array. */
++enum
++{
++ R0 = 0,
++#define R0 R0
++ R1 = 1,
++#define R1 R1
++ R2 = 2,
++#define R2 R2
++ R3 = 3,
++#define R3 R3
++ R4 = 4,
++#define R4 R4
++ R5 = 5,
++#define R5 R5
++ R6 = 6,
++#define R6 R6
++ R7 = 7,
++#define R7 R7
++ R8 = 8,
++#define R8 R8
++ R9 = 9,
++#define R9 R9
++ R10 = 10,
++#define R10 R10
++ R11 = 11,
++#define R11 R11
++ R12 = 12,
++#define R12 R12
++ R13 = 13,
++#define R13 R13
++ R14 = 14,
++#define R14 R14
++ R15 = 15
++#define R15 R15
++};
++
++/* Structure to describe FPU registers. */
++typedef elf_fpregset_t fpregset_t;
++
++/* Context to describe whole processor state. */
++typedef struct
++ {
++ gregset_t gregs;
++ fpregset_t fpregs;
++ } mcontext_t;
++
++/* Userlevel context. */
++typedef 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 */
++} ucontext_t;
++
++#endif /* sys/ucontext.h */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/user.h uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/user.h
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/sys/user.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/sys/user.h 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,46 @@
++#ifndef _SYS_USER_H
++#define _SYS_USER_H
++
++struct user_fpregs
++{
++
++};
++
++struct user_regs
++{
++ unsigned long sr;
++ unsigned long pc;
++ unsigned long lr;
++ unsigned long sp;
++ unsigned long r12;
++ unsigned long r11;
++ unsigned long r10;
++ unsigned long r9;
++ unsigned long r8;
++ unsigned long r7;
++ unsigned long r6;
++ unsigned long r5;
++ unsigned long r4;
++ unsigned long r3;
++ unsigned long r2;
++ unsigned long r1;
++ unsigned long r0;
++ unsigned long r12_orig;
++};
++
++struct user
++{
++ struct user_regs regs; /* general registers */
++ size_t u_tsize; /* text size (pages) */
++ size_t u_dsize; /* data size (pages) */
++ size_t u_ssize; /* stack size (pages) */
++ unsigned long start_code; /* text starting address */
++ unsigned long start_data; /* data starting address */
++ unsigned long start_stack; /* stack starting address */
++ long int signal; /* signal causing core dump */
++ struct user_regs * u_ar0; /* help gdb find registers */
++ unsigned long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#endif /* _SYS_USER_H */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/syscall.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/syscall.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/syscall.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/syscall.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,81 @@
++/*
++ * syscall for AVR32/uClibc
++ *
++ * Copyright (C) 2004 Atmel Norway
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU Library General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ * 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 Library General Public License
++ * for more details.
++ *
++ * You should have received a copy of the GNU Library 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
++ */
++#include <features.h>
++
++ .text
++
++ /*
++ * long int syscall(long int sysno, ...)
++ */
++ .global syscall
++ .type syscall, @function
++ .align 2
++syscall:
++ stm --sp, r3,r5,lr
++ sub lr, sp, -12
++ mov r8, r12
++ ldm lr, r3,r5,r9-r12
++ scall
++ cp.w r12, -4095
++ brlo .Ldone
++
++#ifdef __PIC__
++ lddpc r5, .Lgot
++.Lgotcalc:
++ rsub r5, pc
++# ifdef __UCLIBC_HAS_THREADS__
++ mov r3, r12
++ mcall r5[__errno_location@got]
++ st.w r12[0], r3
++# else
++ ld.w r3, r5[errno@got]
++ st.w r3[0], r12
++# endif
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++ mov r3, r12
++ mcall .Lerrno_location
++ st.w r12[0], r3
++# else
++ lddpc r3, .Lerrno
++ st.w r3[0], r12
++# endif
++#endif
++ mov r12, -1
++
++.Ldone:
++ ldm sp++, r3,r5,pc
++
++ .align 2
++#ifdef __PIC__
++.Lgot:
++ .long .Lgotcalc - _GLOBAL_OFFSET_TABLE_
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++.Lerrno_location:
++ .long __errno_location
++# else
++.Lerrno:
++ .long errno
++# endif
++#endif
++
++
++ .size syscall, . - syscall
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/avr32/vfork.S uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/vfork.S
+--- uClibc-0.9.28/libc/sysdeps/linux/avr32/vfork.S 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/avr32/vfork.S 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,55 @@
++ /*
++ * vfork for uClibc
++ *
++ * Copyright (C) 2005 Atmel Norway
++ */
++
++ /*
++ * Clone the process without copying the address space. The
++ * calling process is suspended until the child either exits
++ * or calls execve.
++ *
++ * This all means that we cannot rely on the stack to store
++ * away registers, since they will be overwritten by the child
++ * as soon as it makes another function call (e.g. execve()).
++ * Fortunately, the Linux kernel preserves LR across system calls.
++ */
++#include <features.h>
++#include <sys/syscall.h>
++
++ .global __vfork
++ .type __vfork,@function
++ .align 1
++__vfork:
++ mov r8, __NR_vfork
++ scall
++ cp.w r12, -4096
++ retls r12
++
++ /* vfork failed, so we may use the stack freely */
++ pushm r4-r7,lr
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++ rsub r4, r12, 0
++.L_RGOT:
++ rsub r6, pc
++ mcall r6[__errno_location@got]
++#else
++ rsub r4, r12, 0
++ mcall .L__errno_location
++#endif
++ st.w r12[0], r4
++ popm r4-r7,pc,r12=-1
++
++ .align 2
++#ifdef __PIC__
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++.L__errno_location:
++ .long __errno_location
++#endif
++ .size __vfork, . - __vfork
++
++ .weak vfork
++ vfork = __vfork
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/common/create_module.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/create_module.c
+--- uClibc-0.9.28/libc/sysdeps/linux/common/create_module.c 2005-08-18 00:49:42.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/create_module.c 2006-06-21 11:35:57.000000000 +0200
+@@ -61,7 +61,8 @@
+ {
+ return __create_module(name, size, 0, 0);
+ }
+-#else
++/* create_module is obsolete in Linux 2.6, so AVR32 doesn't have it */
++#elif !defined(__avr32__)
+ /* Sparc, MIPS, etc don't mistake return values for errors. */
+ _syscall2(unsigned long, create_module, const char *, name, size_t, size);
+ #endif
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/common/getrusage.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/getrusage.c
+--- uClibc-0.9.28/libc/sysdeps/linux/common/getrusage.c 2005-08-18 00:49:42.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/getrusage.c 2006-06-21 11:35:56.000000000 +0200
+@@ -10,4 +10,4 @@
+ #include "syscalls.h"
+ #include <unistd.h>
+ #include <wait.h>
+-_syscall2(int, getrusage, int, who, struct rusage *, usage);
++_syscall2(int, getrusage, __rusage_who_t, who, struct rusage *, usage);
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/common/open64.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/open64.c
+--- uClibc-0.9.28/libc/sysdeps/linux/common/open64.c 2005-08-18 00:49:42.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/open64.c 2006-06-21 11:35:56.000000000 +0200
+@@ -26,7 +26,7 @@
+ #endif
+
+ #ifdef __UCLIBC_HAS_LFS__
+-extern int __libc_open (__const char *file, int oflag, mode_t mode);
++extern int __libc_open (__const char *file, int oflag, ...);
+
+ /* Open FILE with access OFLAG. If OFLAG includes O_CREAT,
+ a third argument is the file protection. */
+diff -Nur uClibc-0.9.28/libc/sysdeps/linux/common/__syscall_fcntl.c uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/__syscall_fcntl.c
+--- uClibc-0.9.28/libc/sysdeps/linux/common/__syscall_fcntl.c 2005-08-18 00:49:42.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/libc/sysdeps/linux/common/__syscall_fcntl.c 2006-06-21 11:35:56.000000000 +0200
+@@ -12,7 +12,7 @@
+ #include <fcntl.h>
+
+ #if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
+-extern int __libc_fcntl64(int fd, int cmd, long arg);
++extern int __libc_fcntl64(int fd, int cmd, ...);
+ #endif
+
+ #define __NR___syscall_fcntl __NR_fcntl
+diff -Nur uClibc-0.9.28/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h uClibc-0.9.28-avr32-20060621/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h
+--- uClibc-0.9.28/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h 2006-06-21 11:35:57.000000000 +0200
+@@ -0,0 +1,92 @@
++/* Machine-dependent pthreads configuration and inline functions.
++
++ Copyright (C) 2005 Atmel Norway
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++#ifndef _PT_MACHINE_H
++#define _PT_MACHINE_H 1
++
++#include <features.h>
++
++static inline int
++_test_and_set (int *p, int v) __THROW
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline test and set */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " tst %0, %3\n"
++ " breq 2f\n"
++ " stcond %1, %3\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=m"(*p)
++ : "m"(*p), "r"(v)
++ : "memory", "cc");
++
++ return result;
++}
++
++#ifndef PT_EI
++# define PT_EI extern inline
++#endif
++
++extern long int testandset (int *spinlock);
++extern int __compare_and_swap (long int *p, long int oldval, long int newval);
++
++/* Spinlock implementation; required. */
++PT_EI long int
++testandset (int *spinlock)
++{
++ return _test_and_set(spinlock, 1);
++}
++
++
++/* Get some notion of the current stack. Need not be exactly the top
++ of the stack, just something somewhere in the current frame. */
++#define CURRENT_STACK_FRAME stack_pointer
++register char * stack_pointer __asm__ ("sp");
++
++/* Compare-and-swap for semaphores. */
++
++#define HAS_COMPARE_AND_SWAP
++PT_EI int
++__compare_and_swap(long int *p, long int oldval, long int newval)
++{
++ long int result, tmp;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %1, %3\n"
++ " cp.w %1, %5\n"
++ " sreq %0\n"
++ " brne 2f\n"
++ " stcond %2, %4\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=&r"(tmp), "=m"(*p)
++ : "m"(*p), "r"(newval), "r"(oldval)
++ : "cc", "memory");
++
++ return result;
++}
++
++#endif /* pt-machine.h */
+diff -Nur uClibc-0.9.28/Makefile uClibc-0.9.28-avr32-20060621/Makefile
+--- uClibc-0.9.28/Makefile 2005-08-18 00:49:49.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/Makefile 2006-06-21 11:35:57.000000000 +0200
+@@ -163,7 +163,7 @@
+ else \
+ extra_exclude="" ; \
+ fi ; \
+- tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \
++ tar -chf - --exclude .svn --exclude CVS $$extra_exclude include \
+ | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX)
+ ifneq ($(strip $(UCLIBC_HAS_FLOATS)),y)
+ # Remove floating point related headers since float support is disabled.
+diff -Nur uClibc-0.9.28/Rules.mak uClibc-0.9.28-avr32-20060621/Rules.mak
+--- uClibc-0.9.28/Rules.mak 2005-08-18 00:49:49.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/Rules.mak 2006-06-21 11:35:57.000000000 +0200
+@@ -231,6 +231,10 @@
+ UCLIBC_LDSO=ld.so.1
+ endif
+
++ifeq ($(strip $(TARGET_ARCH)),avr32)
++ CPU_CFLAGS-$(CONFIG_AP7000) += -mcpu=ap7000
++endif
++
+ # Keep the check_gcc from being needlessly executed
+ ifndef PIEFLAG
+ ifneq ($(UCLIBC_BUILD_PIE),y)
+@@ -266,7 +270,11 @@
+ # If -msoft-float isn't supported, we want an error anyway.
+ # Hmm... might need to revisit this for arm since it has 2 different
+ # soft float encodings.
++ifeq ($(strip $(TARGET_ARCH)),avr32)
++# GCC on avr32 doesn't support -msoft-float, it's the default.
++else
+ CPU_CFLAGS += -msoft-float
++endif
+ ifeq ($(strip $(TARGET_ARCH)),arm)
+ # No longer needed with current toolchains, but leave it here for now.
+ # If anyone is actually still using gcc 2.95 (say), they can uncomment it.
+diff -Nur uClibc-0.9.28/Rules.mak.orig uClibc-0.9.28-avr32-20060621/Rules.mak.orig
+--- uClibc-0.9.28/Rules.mak.orig 1970-01-01 01:00:00.000000000 +0100
++++ uClibc-0.9.28-avr32-20060621/Rules.mak.orig 2006-06-21 11:35:56.000000000 +0200
+@@ -0,0 +1,358 @@
++# Rules.make for uClibc
++#
++# Copyright (C) 2000 by Lineo, inc.
++# Copyright (C) 2000-2002 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++
++#-----------------------------------------------------------
++# This file contains rules which are shared between multiple
++# Makefiles. All normal configuration options live in the
++# file named ".config". Don't mess with this file unless
++# you know what you are doing.
++
++
++#-----------------------------------------------------------
++# If you are running a cross compiler, you will want to set
++# 'CROSS' to something more interesting ... Target
++# architecture is determined by asking the CC compiler what
++# arch it compiles things for, so unless your compiler is
++# broken, you should not need to specify TARGET_ARCH.
++#
++# Most people will set this stuff on the command line, i.e.
++# make CROSS=arm-linux-
++# will build uClibc for 'arm'.
++
++ifndef CROSS
++CROSS=
++endif
++CC = $(CROSS)gcc
++AR = $(CROSS)ar
++LD = $(CROSS)ld
++NM = $(CROSS)nm
++RANLIB = $(CROSS)ranlib
++STRIPTOOL = $(CROSS)strip
++
++INSTALL = install
++LN = ln
++RM = rm -f
++
++# Select the compiler needed to build binaries for your development system
++HOSTCC = gcc
++HOSTCFLAGS = -O2 -Wall
++
++
++#---------------------------------------------------------
++# Nothing beyond this point should ever be touched by mere
++# mortals. Unless you hang out with the gods, you should
++# probably leave all this stuff alone.
++MAJOR_VERSION := 0
++MINOR_VERSION := 9
++SUBLEVEL := 28
++VERSION := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
++# Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc.
++LC_ALL := C
++export MAJOR_VERSION MINOR_VERSION SUBLEVEL VERSION LC_ALL
++
++SHARED_FULLNAME:=libuClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
++SHARED_MAJORNAME:=libc.so.$(MAJOR_VERSION)
++UCLIBC_LDSO:=ld-uClibc.so.$(MAJOR_VERSION)
++LIBNAME:=libc.a
++LIBC:=$(TOPDIR)libc/$(LIBNAME)
++
++# Make sure DESTDIR and PREFIX can be used to install
++# PREFIX is a uClibcism while DESTDIR is a common GNUism
++ifndef PREFIX
++PREFIX = $(DESTDIR)
++endif
++
++# Pull in the user's uClibc configuration
++ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
++-include $(TOPDIR).config
++endif
++
++ifndef CROSS
++CROSS=$(subst ",, $(strip $(CROSS_COMPILER_PREFIX)))
++endif
++
++# A nifty macro to make testing gcc features easier
++check_gcc=$(shell \
++ if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
++ then echo "$(1)"; else echo "$(2)"; fi)
++check_as=$(shell \
++ if $(CC) -Wa,$(1) -Wa,-Z -c -o /dev/null -xassembler /dev/null > /dev/null 2>&1; \
++ then echo "-Wa,$(1)"; fi)
++
++# Setup some shortcuts so that silent mode is silent like it should be
++ifeq ($(subst s,,$(MAKEFLAGS)),$(MAKEFLAGS))
++export MAKE_IS_SILENT=n
++SECHO=@echo
++SHELL_SET_X=set -x
++else
++export MAKE_IS_SILENT=y
++SECHO=-@false
++SHELL_SET_X=set +x
++endif
++
++# Make certain these contain a final "/", but no "//"s.
++TARGET_ARCH:=$(shell grep -s ^TARGET_ARCH $(TOPDIR)/.config | sed -e 's/^TARGET_ARCH=//' -e 's/"//g')
++RUNTIME_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(subst ",, $(strip $(RUNTIME_PREFIX))))))
++DEVEL_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(subst ",, $(strip $(DEVEL_PREFIX))))))
++export RUNTIME_PREFIX DEVEL_PREFIX
++
++ARFLAGS:=cr
++
++OPTIMIZATION:=
++PICFLAG:=-fPIC
++PIEFLAG_NAME:=-fPIE
++
++# Some nice CPU specific optimizations
++ifeq ($(strip $(TARGET_ARCH)),i386)
++ OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,)
++ OPTIMIZATION+=$(call check_gcc,-falign-jumps=0 -falign-loops=0,-malign-jumps=0 -malign-loops=0)
++ CPU_CFLAGS-$(CONFIG_386)+=-march=i386
++ CPU_CFLAGS-$(CONFIG_486)+=-march=i486
++ CPU_CFLAGS-$(CONFIG_ELAN)+=-march=i486
++ CPU_CFLAGS-$(CONFIG_586)+=-march=i586
++ CPU_CFLAGS-$(CONFIG_586MMX)+=$(call check_gcc,-march=pentium-mmx,-march=i586)
++ CPU_CFLAGS-$(CONFIG_686)+=-march=i686
++ CPU_CFLAGS-$(CONFIG_PENTIUMII)+=$(call check_gcc,-march=pentium2,-march=i686)
++ CPU_CFLAGS-$(CONFIG_PENTIUMIII)+=$(call check_gcc,-march=pentium3,-march=i686)
++ CPU_CFLAGS-$(CONFIG_PENTIUM4)+=$(call check_gcc,-march=pentium4,-march=i686)
++ CPU_CFLAGS-$(CONFIG_K6)+=$(call check_gcc,-march=k6,-march=i586)
++ CPU_CFLAGS-$(CONFIG_K7)+=$(call check_gcc,-march=athlon,-malign-functions=4 -march=i686)
++ CPU_CFLAGS-$(CONFIG_CRUSOE)+=-march=i686 -malign-functions=0 -malign-jumps=0 -malign-loops=0
++ CPU_CFLAGS-$(CONFIG_WINCHIPC6)+=$(call check_gcc,-march=winchip-c6,-march=i586)
++ CPU_CFLAGS-$(CONFIG_WINCHIP2)+=$(call check_gcc,-march=winchip2,-march=i586)
++ CPU_CFLAGS-$(CONFIG_CYRIXIII)+=$(call check_gcc,-march=c3,-march=i486) -malign-functions=0 -malign-jumps=0 -malign-loops=0
++ CPU_CFLAGS-$(CONFIG_NEHEMIAH)+=$(call check_gcc,-march=c3-2,-march=i686)
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),arm)
++ OPTIMIZATION+=-fstrict-aliasing
++ CPU_LDFLAGS-$(ARCH_LITTLE_ENDIAN)+=-EL
++ CPU_LDFLAGS-$(ARCH_BIG_ENDIAN)+=-EB
++ CPU_CFLAGS-$(ARCH_LITTLE_ENDIAN)+=-mlittle-endian
++ CPU_CFLAGS-$(ARCH_BIG_ENDIAN)+=-mbig-endian
++ CPU_CFLAGS-$(CONFIG_GENERIC_ARM)+=
++ CPU_CFLAGS-$(CONFIG_ARM610)+=-mtune=arm610 -march=armv3
++ CPU_CFLAGS-$(CONFIG_ARM710)+=-mtune=arm710 -march=armv3
++ CPU_CFLAGS-$(CONFIG_ARM720T)+=-mtune=arm7tdmi -march=armv4
++ CPU_CFLAGS-$(CONFIG_ARM920T)+=-mtune=arm9tdmi -march=armv4
++ CPU_CFLAGS-$(CONFIG_ARM922T)+=-mtune=arm9tdmi -march=armv4
++ CPU_CFLAGS-$(CONFIG_ARM926T)+=-mtune=arm9tdmi -march=armv5
++ CPU_CFLAGS-$(CONFIG_ARM1136JF_S)+=-mtune=arm1136jf-s -march=armv6
++ CPU_CFLAGS-$(CONFIG_ARM_SA110)+=-mtune=strongarm110 -march=armv4
++ CPU_CFLAGS-$(CONFIG_ARM_SA1100)+=-mtune=strongarm1100 -march=armv4
++ CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=$(call check_gcc,-mtune=xscale,-mtune=strongarm110)
++ CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=-march=armv4 -Wa,-mcpu=xscale
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),mips)
++ CPU_CFLAGS-$(CONFIG_MIPS_ISA_1)+=-mips1
++ CPU_CFLAGS-$(CONFIG_MIPS_ISA_2)+=-mips2 -mtune=mips2
++ CPU_CFLAGS-$(CONFIG_MIPS_ISA_3)+=-mips3 -mtune=mips3
++ CPU_CFLAGS-$(CONFIG_MIPS_ISA_4)+=-mips4 -mtune=mips4
++ CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32)+=-mips32 -mtune=mips32
++ CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64)+=-mips64 -mtune=mips32
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),sh)
++ OPTIMIZATION+=-fstrict-aliasing
++ OPTIMIZATION+= $(call check_gcc,-mprefergot,)
++ CPU_LDFLAGS-$(ARCH_LITTLE_ENDIAN)+=-EL
++ CPU_LDFLAGS-$(ARCH_BIG_ENDIAN)+=-EB
++ CPU_CFLAGS-$(ARCH_LITTLE_ENDIAN)+=-ml
++ CPU_CFLAGS-$(ARCH_BIG_ENDIAN)+=-mb
++ CPU_CFLAGS-$(CONFIG_SH2)+=-m2
++ CPU_CFLAGS-$(CONFIG_SH3)+=-m3
++ifeq ($(strip $(UCLIBC_HAS_FLOATS)),y)
++ CPU_CFLAGS-$(CONFIG_SH2A)+=-m2a
++ CPU_CFLAGS-$(CONFIG_SH4)+=-m4
++else
++ CPU_CFLAGS-$(CONFIG_SH2A)+=-m2a-nofpu
++ CPU_CFLAGS-$(CONFIG_SH4)+=-m4-nofpu
++endif
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),sh64)
++ OPTIMIZATION+=-fstrict-aliasing
++ CPU_LDFLAGS-$(ARCH_LITTLE_ENDIAN):=-EL
++ CPU_LDFLAGS-$(ARCH_BIG_ENDIAN):=-EB
++ CPU_CFLAGS-$(ARCH_LITTLE_ENDIAN):=-ml
++ CPU_CFLAGS-$(ARCH_BIG_ENDIAN):=-mb
++ CPU_CFLAGS-$(CONFIG_SH5)+=-m5-32media
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),h8300)
++ CPU_LDFLAGS-$(CONFIG_H8300H)+= -ms8300h
++ CPU_LDFLAGS-$(CONFIG_H8S) += -ms8300s
++ CPU_CFLAGS-$(CONFIG_H8300H) += -mh -mint32 -fsigned-char
++ CPU_CFLAGS-$(CONFIG_H8S) += -ms -mint32 -fsigned-char
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),cris)
++ CPU_LDFLAGS-$(CONFIG_CRIS)+=-mcrislinux
++ CPU_CFLAGS-$(CONFIG_CRIS)+=-mlinux
++ PICFLAG:=-fpic
++ PIEFLAG_NAME:=-fpie
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),powerpc)
++# PowerPC can hold 8192 entries in its GOT with -fpic which is more than
++# enough. Therefore use -fpic which will reduce code size and generates
++# faster code.
++ PICFLAG:=-fpic
++ PIEFLAG_NAME:=-fpie
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),frv)
++ CPU_LDFLAGS-$(CONFIG_FRV)+=-melf32frvfd
++ CPU_CFLAGS-$(CONFIG_FRV)+=-mfdpic
++ # Using -pie causes the program to have an interpreter, which is
++ # forbidden, so we must make do with -shared. Unfortunately,
++ # -shared by itself would get us global function descriptors
++ # and calls through PLTs, dynamic resolution of symbols, etc,
++ # which would break as well, but -Bsymbolic comes to the rescue.
++ export LDPIEFLAG:=-shared -Bsymbolic
++ UCLIBC_LDSO=ld.so.1
++endif
++
++ifeq ($(strip $(TARGET_ARCH)),avr32)
++ CPU_CFLAGS-$(CONFIG_AP7000) += -mcpu=ap7000
++endif
++
++# Keep the check_gcc from being needlessly executed
++ifndef PIEFLAG
++ifneq ($(UCLIBC_BUILD_PIE),y)
++export PIEFLAG:=
++else
++export PIEFLAG:=$(call check_gcc,$(PIEFLAG_NAME),$(PICFLAG))
++endif
++endif
++# We need to keep track of both the CC PIE flag (above) as
++# well as the LD PIE flag (below) because we can't rely on
++# gcc passing -pie if we used -fPIE
++ifndef LDPIEFLAG
++ifneq ($(UCLIBC_BUILD_PIE),y)
++export LDPIEFLAG:=
++else
++export LDPIEFLAG:=$(shell $(LD) --help | grep -q pie && echo "-Wl,-pie")
++endif
++endif
++
++# Use '-Os' optimization if available, else use -O2, allow Config to override
++OPTIMIZATION+=$(call check_gcc,-Os,-O2)
++# Use the gcc 3.4 -funit-at-a-time optimization when available
++OPTIMIZATION+=$(call check_gcc,-funit-at-a-time,)
++
++# Add a bunch of extra pedantic annoyingly strict checks
++XWARNINGS=$(subst ",, $(strip $(WARNINGS))) -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing
++XARCH_CFLAGS=$(subst ",, $(strip $(ARCH_CFLAGS)))
++CPU_CFLAGS=$(subst ",, $(strip $(CPU_CFLAGS-y)))
++
++LDADD_LIBFLOAT=
++ifeq ($(strip $(UCLIBC_HAS_SOFT_FLOAT)),y)
++# Add -msoft-float to the CPU_FLAGS since ldso and libdl ignore CFLAGS.
++# If -msoft-float isn't supported, we want an error anyway.
++# Hmm... might need to revisit this for arm since it has 2 different
++# soft float encodings.
++ CPU_CFLAGS += -msoft-float
++ifeq ($(strip $(TARGET_ARCH)),arm)
++# No longer needed with current toolchains, but leave it here for now.
++# If anyone is actually still using gcc 2.95 (say), they can uncomment it.
++# LDADD_LIBFLOAT=-lfloat
++endif
++endif
++
++SSP_DISABLE_FLAGS:=$(call check_gcc,-fno-stack-protector,)
++ifeq ($(UCLIBC_BUILD_SSP),y)
++SSP_CFLAGS:=$(call check_gcc,-fno-stack-protector-all,)
++SSP_CFLAGS+=$(call check_gcc,-fstack-protector,)
++SSP_ALL_CFLAGS:=$(call check_gcc,-fstack-protector-all,)
++else
++SSP_CFLAGS:=$(SSP_DISABLE_FLAGS)
++endif
++
++# Some nice CFLAGS to work with
++CFLAGS:=$(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
++ -fno-builtin -nostdinc -D_LIBC -I$(TOPDIR)include -I.
++LDFLAGS_NOSTRIP:=$(CPU_LDFLAGS-y) -shared --warn-common --warn-once -z combreloc -z defs
++
++ifeq ($(DODEBUG),y)
++ #CFLAGS += -g3
++ CFLAGS += -O0 -g3
++ LDFLAGS := $(LDFLAGS_NOSTRIP)
++ STRIPTOOL:= true -Since_we_are_debugging
++else
++ CFLAGS += $(OPTIMIZATION) $(XARCH_CFLAGS)
++ LDFLAGS := $(LDFLAGS_NOSTRIP) -s
++endif
++
++ifeq ($(UCLIBC_BUILD_RELRO),y)
++LDFLAGS+=-z relro
++endif
++
++ifeq ($(UCLIBC_BUILD_NOW),y)
++LDFLAGS+=-z now
++endif
++
++# Sigh, some stupid versions of gcc can't seem to cope with '-iwithprefix include'
++#CFLAGS+=-iwithprefix include
++CFLAGS+=-isystem $(shell $(CC) -print-file-name=include)
++
++ifneq ($(DOASSERTS),y)
++ CFLAGS += -DNDEBUG
++endif
++
++CFLAGS_NOPIC:=$(CFLAGS)
++ifeq ($(DOPIC),y)
++ CFLAGS += $(PICFLAG)
++endif
++
++ifeq ($(DL_FINI_CRT_COMPAT),y)
++CFLAGS += -D_DL_FINI_CRT_COMPAT
++endif
++
++# Keep the check_as from being needlessly executed
++ASFLAGS = $(CFLAGS)
++ifndef ASFLAGS_NOEXEC
++ifeq ($(UCLIBC_BUILD_NOEXECSTACK),y)
++export ASFLAGS_NOEXEC := $(call check_as,--noexecstack)
++else
++export ASFLAGS_NOEXEC :=
++endif
++endif
++ASFLAGS += $(ASFLAGS_NOEXEC)
++
++LIBGCC_CFLAGS ?= $(CFLAGS) $(CPU_CFLAGS-y)
++LIBGCC:=$(shell $(CC) $(LIBGCC_CFLAGS) -print-libgcc-file-name)
++LIBGCC_DIR:=$(dir $(LIBGCC))
++
++########################################
++#
++# uClinux shared lib support
++#
++
++ifeq ($(CONFIG_BINFMT_SHARED_FLAT),y)
++ # For the shared version of this, we specify no stack and its library ID
++ FLTFLAGS += -s 0
++ LIBID=1
++ export LIBID FLTFLAGS
++ SHARED_TARGET = lib/libc
++endif
++
++TARGET_ARCH:=$(strip $(subst ",, $(strip $(TARGET_ARCH))))
+diff -Nur uClibc-0.9.28/utils/ldd.c uClibc-0.9.28-avr32-20060621/utils/ldd.c
+--- uClibc-0.9.28/utils/ldd.c 2005-08-18 00:49:41.000000000 +0200
++++ uClibc-0.9.28-avr32-20060621/utils/ldd.c 2006-06-21 11:35:57.000000000 +0200
+@@ -56,6 +56,11 @@
+ #define ELFCLASSM ELFCLASS32
+ #endif
+
++#if defined(__avr32__)
++#define MATCH_MACHINE(x) (x == EM_AVR32)
++#define ELFCLASSM ELFCLASS32
++#endif
++
+ #if defined(__s390__)
+ #define MATCH_MACHINE(x) (x == EM_S390)
+ #define ELFCLASSM ELFCLASS32
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20061019.patch b/packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20061019.patch
new file mode 100644
index 0000000000..6608b4df94
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/uClibc-0.9.28-avr32-20061019.patch
@@ -0,0 +1,4080 @@
+Index: uClibc-0.9.28-avr32/Makefile
+===================================================================
+--- uClibc-0.9.28-avr32.orig/Makefile 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/Makefile 2006-10-19 15:05:52.000000000 +0200
+@@ -163,7 +163,7 @@ install_dev:
+ else \
+ extra_exclude="" ; \
+ fi ; \
+- tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \
++ tar -chf - --exclude .svn --exclude CVS $$extra_exclude include \
+ | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX)
+ ifneq ($(strip $(UCLIBC_HAS_FLOATS)),y)
+ # Remove floating point related headers since float support is disabled.
+Index: uClibc-0.9.28-avr32/extra/scripts/fix_includes.sh
+===================================================================
+--- uClibc-0.9.28-avr32.orig/extra/scripts/fix_includes.sh 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/extra/scripts/fix_includes.sh 2006-10-19 15:05:52.000000000 +0200
+@@ -78,36 +78,6 @@ if [ ! -d "$KERNEL_SOURCE" ]; then
+ exit 1;
+ fi;
+
+-if [ -f "$KERNEL_SOURCE/Makefile" ] ; then
+-# set current VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION
+-eval `sed -n -e 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' -e 's/^\([A-Z]*\) = \(-[-a-z0-9]*\)$/\1=\2/p' $KERNEL_SOURCE/Makefile`
+-else
+-ver=`grep UTS_RELEASE $KERNEL_SOURCE/include/linux/version.h | cut -d '"' -f 2`
+-VERSION=`echo "$ver" | cut -d '.' -f 1`
+-PATCHLEVEL=`echo "$ver" | cut -d '.' -f 2`
+-if echo "$ver" | grep -q '-' ; then
+-SUBLEVEL=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.//" | cut -d '-' -f 1`
+-EXTRAVERSION=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.${SUBLEVEL}-//"`
+-else
+-SUBLEVEL=`echo "$ver" | cut -d '.' -f 3`
+-#EXTRAVERSION=
+-fi
+-fi
+-if [ -z "$VERSION" -o -z "$PATCHLEVEL" -o -z "$SUBLEVEL" ]
+-then
+- echo "Unable to determine version for kernel headers"
+- echo -e "\tprovided in directory $KERNEL_SOURCE"
+- exit 1
+-fi
+-
+-if [ "$MAKE_IS_SILENT" != "y" ]; then
+-echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION}"
+-echo -e "\n"
+-echo "Using kernel headers from $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION} for architecture '$TARGET_ARCH'"
+-echo -e "\tprovided in directory $KERNEL_SOURCE"
+-echo -e "\n"
+-fi
+-
+ # Create a symlink to include/asm
+
+ rm -f include/asm*
+@@ -172,7 +142,7 @@ fi;
+
+
+ # Annoyingly, 2.6.x kernel headers also need an include/asm-generic/ directory
+-if [ $VERSION -eq 2 ] && [ $PATCHLEVEL -ge 6 ] ; then
++if [ -d $KERNEL_SOURCE/include/asm-generic ] ; then
+ ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic
+ fi;
+
+Index: uClibc-0.9.28-avr32/libc/Makefile
+===================================================================
+--- uClibc-0.9.28-avr32.orig/libc/Makefile 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/libc/Makefile 2006-10-19 15:05:52.000000000 +0200
+@@ -59,7 +59,7 @@ $(LIBNAME) shared_$(LIBNAME) ar-target:
+ $(AR) dN 2 $(LIBNAME) $$objs && \
+ $(AR) dN 2 $(LIBNAME) $$objs
+ @for objfile in obj.signal \
+- obj.string.generic obj.string.$(TARGET_ARCH) obj.string \
++ obj.string obj.string.generic obj.string.$(TARGET_ARCH) \
+ obj.sysdeps.common obj.sysdeps.$(TARGET_ARCH) ; do \
+ if [ -e $$objfile ] ; then \
+ if [ "$(MAKE_IS_SILENT)" = "n" ] ; then \
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/common/getrusage.c
+===================================================================
+--- uClibc-0.9.28-avr32.orig/libc/sysdeps/linux/common/getrusage.c 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/common/getrusage.c 2006-10-19 15:05:52.000000000 +0200
+@@ -10,4 +10,4 @@
+ #include "syscalls.h"
+ #include <unistd.h>
+ #include <wait.h>
+-_syscall2(int, getrusage, int, who, struct rusage *, usage);
++_syscall2(int, getrusage, __rusage_who_t, who, struct rusage *, usage);
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/common/__syscall_fcntl.c
+===================================================================
+--- uClibc-0.9.28-avr32.orig/libc/sysdeps/linux/common/__syscall_fcntl.c 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/common/__syscall_fcntl.c 2006-10-19 15:05:52.000000000 +0200
+@@ -12,7 +12,7 @@
+ #include <fcntl.h>
+
+ #if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
+-extern int __libc_fcntl64(int fd, int cmd, long arg);
++extern int __libc_fcntl64(int fd, int cmd, ...);
+ #endif
+
+ #define __NR___syscall_fcntl __NR_fcntl
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/common/open64.c
+===================================================================
+--- uClibc-0.9.28-avr32.orig/libc/sysdeps/linux/common/open64.c 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/common/open64.c 2006-10-19 15:05:52.000000000 +0200
+@@ -26,7 +26,7 @@
+ #endif
+
+ #ifdef __UCLIBC_HAS_LFS__
+-extern int __libc_open (__const char *file, int oflag, mode_t mode);
++extern int __libc_open (__const char *file, int oflag, ...);
+
+ /* Open FILE with access OFLAG. If OFLAG includes O_CREAT,
+ a third argument is the file protection. */
+Index: uClibc-0.9.28-avr32/extra/Configs/Config.avr32
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/extra/Configs/Config.avr32 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,42 @@
++#
++# For a description of the syntax of this configuration file,
++# see extra/config/Kconfig-language.txt
++#
++
++config HAVE_ELF
++ bool
++ default y
++
++config TARGET_ARCH
++ default "avr32"
++
++config ARCH_CFLAGS
++ string
++
++config ARCH_LDFLAGS
++ string
++
++config LIBGCC_CFLAGS
++ string
++
++config ARCH_SUPPORTS_BIG_ENDIAN
++ bool
++ default y
++
++config UCLIBC_COMPLETELY_PIC
++ select FORCE_SHAREABLE_TEXT_SEGMENTS
++ bool
++ default y
++
++choice
++ prompt "Target CPU Type"
++ default CONFIG_AP7000
++
++config CONFIG_AP7000
++ bool "AP7000"
++
++endchoice
++
++config LINKRELAX
++ bool "Enable linker optimizations"
++ default n
+Index: uClibc-0.9.28-avr32/extra/Configs/Config.in
+===================================================================
+--- uClibc-0.9.28-avr32.orig/extra/Configs/Config.in 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/extra/Configs/Config.in 2006-10-19 15:05:52.000000000 +0200
+@@ -16,6 +16,9 @@ config TARGET_alpha
+ config TARGET_arm
+ bool "arm"
+
++config TARGET_avr32
++ bool "avr32"
++
+ config TARGET_bfin
+ bool "bfin"
+
+@@ -83,6 +86,10 @@ if TARGET_arm
+ source "extra/Configs/Config.arm"
+ endif
+
++if TARGET_avr32
++source "extra/Configs/Config.avr32"
++endif
++
+ if TARGET_bfin
+ source "extra/Configs/Config.bfin"
+ endif
+Index: uClibc-0.9.28-avr32/include/elf.h
+===================================================================
+--- uClibc-0.9.28-avr32.orig/include/elf.h 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/include/elf.h 2006-10-19 15:05:52.000000000 +0200
+@@ -261,6 +261,8 @@ typedef struct
+ #define EM_NIOS32 0xfebb /* Altera Nios 32 */
+ #define EM_ALTERA_NIOS2 0x9ee5 /* Altera Nios II */
+
++#define EM_AVR32 0x18ad
++
+ /* V850 backend magic number. Written in the absense of an ABI. */
+ #define EM_CYGNUS_V850 0x9080
+
+@@ -2687,6 +2689,55 @@ typedef Elf32_Addr Elf32_Conflict;
+ /* Keep this the last entry. */
+ #define R_V850_NUM 25
+
++/* Atmel AVR32 relocations. */
++#define R_AVR32_NONE 0
++#define R_AVR32_32 1
++#define R_AVR32_16 2
++#define R_AVR32_8 3
++#define R_AVR32_32_PCREL 4
++#define R_AVR32_16_PCREL 5
++#define R_AVR32_8_PCREL 6
++#define R_AVR32_DIFF32 7
++#define R_AVR32_DIFF16 8
++#define R_AVR32_DIFF8 9
++#define R_AVR32_GOT32 10
++#define R_AVR32_GOT16 11
++#define R_AVR32_GOT8 12
++#define R_AVR32_21S 13
++#define R_AVR32_16U 14
++#define R_AVR32_16S 15
++#define R_AVR32_8S 16
++#define R_AVR32_8S_EXT 17
++#define R_AVR32_22H_PCREL 18
++#define R_AVR32_18W_PCREL 19
++#define R_AVR32_16B_PCREL 20
++#define R_AVR32_16N_PCREL 21
++#define R_AVR32_14UW_PCREL 22
++#define R_AVR32_11H_PCREL 23
++#define R_AVR32_10UW_PCREL 24
++#define R_AVR32_9H_PCREL 25
++#define R_AVR32_9UW_PCREL 26
++#define R_AVR32_HI16 27
++#define R_AVR32_LO16 28
++#define R_AVR32_GOTPC 29
++#define R_AVR32_GOTCALL 30
++#define R_AVR32_LDA_GOT 31
++#define R_AVR32_GOT21S 32
++#define R_AVR32_GOT18SW 33
++#define R_AVR32_GOT16S 34
++#define R_AVR32_GOT7UW 35
++#define R_AVR32_32_CPENT 36
++#define R_AVR32_CPCALL 37
++#define R_AVR32_16_CP 38
++#define R_AVR32_9W_CP 39
++#define R_AVR32_RELATIVE 40
++#define R_AVR32_GLOB_DAT 41
++#define R_AVR32_JMP_SLOT 42
++#define R_AVR32_ALIGN 43
++#define R_AVR32_NUM 44
++
++/* AVR32 dynamic tags */
++#define DT_AVR32_GOTSZ 0x70000001 /* Total size of GOT in bytes */
+
+ #define R_H8_NONE 0
+ #define R_H8_DIR32 1
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/Makefile 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,93 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++TOPDIR=../../../../
++include $(TOPDIR)Rules.mak
++ASFLAGS=$(CFLAGS)
++
++CRT_SRC = crt1.S
++CRT_OBJ = crt1.o
++SCRT_OBJ = $(patsubst %,S%, $(CRT_OBJ))
++CTOR_TARGETS=$(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o
++
++SSRC=__longjmp.S setjmp.S bsd-setjmp.S vfork.S \
++ bsd-_setjmp.S sigrestorer.S syscall.S
++SOBJS=$(patsubst %.S,%.o, $(SSRC))
++
++CSRC=clone.c brk.c sigaction.c mmap.c
++COBJS=$(patsubst %.c,%.o, $(CSRC))
++
++OBJS=$(SOBJS) $(COBJS)
++
++OBJ_LIST=../../../obj.sysdeps.$(TARGET_ARCH)
++
++all: $(OBJ_LIST)
++
++$(OBJ_LIST): $(OBJS) $(CRT_OBJ) $(SCRT_OBJ) $(CTOR_TARGETS)
++ echo $(patsubst %, sysdeps/linux/$(TARGET_ARCH)/%, $(OBJS)) > $(OBJ_LIST)
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp $(CRT_OBJ) $(SCRT_OBJ) $(TOPDIR)lib/
++
++$(CRT_OBJ): $(CRT_SRC)
++ $(CC) $(ASFLAGS) -DL_$* $< -c -o $*.o
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(SCRT_OBJ): $(CRT_SRC)
++ $(CC) $(ASFLAGS) $(PIEFLAG) -DL_$* $< -c -o $*.o
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(SOBJS): %.o : %.S
++ $(CC) $(ASFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++$(COBJS): %.o : %.c
++ $(CC) $(CFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $*.o
++
++ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y)
++crti.o: crti.S
++ $(CC) $(ASFLAGS) -c crti.S -o crti.o
++
++$(TOPDIR)lib/crti.o: crti.o
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp crti.o $(TOPDIR)lib/
++
++crtn.o: crtn.S
++ $(CC) $(ASFLAGS) -c crtn.S -o crtn.o
++
++$(TOPDIR)lib/crtn.o: crtn.o
++ $(INSTALL) -d $(TOPDIR)lib/
++ cp crtn.o $(TOPDIR)lib/
++else
++$(TOPDIR)lib/crti.o:
++ $(INSTALL) -d $(TOPDIR)lib/
++ $(AR) $(ARFLAGS) $(TOPDIR)lib/crti.o
++$(TOPDIR)lib/crtn.o:
++ $(INSTALL) -d $(TOPDIR)lib/
++ $(AR) $(ARFLAGS) $(TOPDIR)lib/crtn.o
++endif
++
++
++headers:
++# $(LN) -fs ../libc/sysdeps/linux/avr32/fpu_control.h $(TOPDIR)/include/
++
++clean:
++ $(RM) *.[oa] *~ core
++ $(RM) bits/sysnum.h
++ $(RM) gmon-start.S
++
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/__longjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/__longjmp.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,17 @@
++/* longjmp for AVR32
++ *
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ .global __longjmp
++ .type __longjmp,"function"
++ .align 1
++__longjmp:
++ ldm r12++, r0,r1,r2,r3,r4,r5,r6,r7,r8,sp,lr
++ mov r12, r11 /* get the return value right */
++ mustr r8 /* restore status register (lower half) */
++ cp r12, 0 /* can't return zero */
++ frs
++ moveq r12, 1
++ mov pc,lr
++ .size __longjmp, . - __longjmp
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/_mmap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/_mmap.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,33 @@
++/* Copyright (C) 2005 Atmel Norway
++
++ This program is free software; you can redistribute it and/or modify it under
++ the terms of the GNU Library General Public License as published by the Free
++ Software Foundation; either version 2 of the License, or (at your option) any
++ later version.
++
++ 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 Library General Public License for more
++ details.
++
++ You should have received a copy of the GNU Library 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
++
++ Derived in part from the Linux-8086 C library, the GNU C Library, and several
++ other sundry sources. Files within this library are copyright by their
++ respective copyright holders.
++ */
++
++#include <errno.h>
++#include <sys/mman.h>
++#include <sys/syscall.h>
++
++#define __NR_mmap2 __NR_mmap
++
++static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, pgoff);
++
++__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
++{
++ return mmap2(addr, len, prot, flags, fd, offset >> 12);
++}
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/atomicity.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/atomicity.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,86 @@
++/* Low-level functions for atomic operations. AVR32 version.
++ Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _ATOMICITY_H
++#define _ATOMICITY_H 1
++
++#include <inttypes.h>
++
++static inline int
++__attribute__((unused))
++exchange_and_add (volatile uint32_t *mem, int val)
++{
++ int tmp, result;
++
++ __asm__ __volatile__(
++ "/* Inline exchange and add */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %3\n"
++ " add %1, %0, %4\n"
++ " stcond %2, %1\n"
++ " brne 1b"
++ : "=&r"(result), "=&r"(tmp), "=m"(*mem)
++ : "m"(*mem), "r"(val)
++ : "cc", "memory");
++
++ return result;
++}
++
++static inline void
++__attribute__((unused))
++atomic_add (volatile uin32_t *mem, int val)
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline atomic add */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " add %0, %3\n"
++ " stcond %2, %0\n"
++ " brne 1b"
++ : "=&r"(result), "=m"(*mem)
++ : "m"(*mem), "r"(val)
++ : "cc", "memory");
++}
++
++static inline int
++__attribute__((unused))
++compare_and_swap(volatile long int *p, long int oldval, long int newval)
++{
++ long int result, tmp;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %1, %3\n"
++ " cp.w %1, %5\n"
++ " sreq %0\n"
++ " brne 2f\n"
++ " stcond %2, %4\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=&r"(tmp), "=m"(*p)
++ : "m"(*p), "r"(newval), "r"(oldval)
++ : "cc", "memory");
++
++ return result;
++}
++
++#endif /* atomicity.h */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/byteswap.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/byteswap.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,80 @@
++/* Macros to swap the order of bytes in integer values.
++ Copyright (C) 2005 Atmel Norway.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
++# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
++#endif
++
++#ifndef _BITS_BYTESWAP_H
++#define _BITS_BYTESWAP_H 1
++
++/* Swap bytes in 16 bit value. */
++#if defined __GNUC__
++# define __bswap_16(x) (__extension__ __builtin_bswap_16(x))
++#else
++/* This is better than nothing. */
++static __inline unsigned short int
++__bswap_16 (unsigned short int __bsx)
++{
++ return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8));
++}
++#endif
++
++/* Swap bytes in 32 bit value. */
++#if defined __GNUC__
++# define __bswap_32(x) (__extension__ __builtin_bswap_32(x))
++#else
++static __inline unsigned int
++__bswap_32 (unsigned int __bsx)
++{
++ return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) |
++ (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24));
++}
++#endif
++
++#if defined __GNUC__
++/* Swap bytes in 64 bit value. */
++# define __bswap_constant_64(x) \
++ ((((x) & 0xff00000000000000ull) >> 56) \
++ | (((x) & 0x00ff000000000000ull) >> 40) \
++ | (((x) & 0x0000ff0000000000ull) >> 24) \
++ | (((x) & 0x000000ff00000000ull) >> 8) \
++ | (((x) & 0x00000000ff000000ull) << 8) \
++ | (((x) & 0x0000000000ff0000ull) << 24) \
++ | (((x) & 0x000000000000ff00ull) << 40) \
++ | (((x) & 0x00000000000000ffull) << 56))
++
++# define __bswap_64(x) \
++ (__extension__ \
++ ({ \
++ union { \
++ __extension__ unsigned long long int __ll; \
++ unsigned int __l[2]; \
++ } __w, __r; \
++ if (__builtin_constant_p(x)) \
++ __r.__ll = __bswap_constant_64(x); \
++ else { \
++ __w.__ll = (x); \
++ __r.__l[0] = __bswap_32(__w.__l[1]); \
++ __r.__l[1] = __bswap_32(__w.__l[0]); \
++ } \
++ __r.__ll; \
++ }))
++#endif
++
++#endif /* _BITS_BYTESWAP_H */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/endian.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/endian.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,7 @@
++/* AVR32 is big-endian */
++
++#ifndef _ENDIAN_H
++# error "Never use <bits/endian.h> directly; include <endian.h> instead."
++#endif
++
++#define __BYTE_ORDER __BIG_ENDIAN
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/fcntl.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/fcntl.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,167 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ *
++ * This file is part of the Linux kernel
++ */
++#ifndef _FCNTL_H
++# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
++#endif
++
++#include <sys/types.h>
++
++/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
++ located on an ext2 file system */
++#define O_ACCMODE 0003
++#define O_RDONLY 00
++#define O_WRONLY 01
++#define O_RDWR 02
++#define O_CREAT 0100 /* not fcntl */
++#define O_EXCL 0200 /* not fcntl */
++#define O_NOCTTY 0400 /* not fcntl */
++#define O_TRUNC 01000 /* not fcntl */
++#define O_APPEND 02000
++#define O_NONBLOCK 04000
++#define O_NDELAY O_NONBLOCK
++#define O_SYNC 010000
++#define O_ASYNC 020000
++
++#ifdef __USE_GNU
++# define O_DIRECTORY 040000 /* must be a directory */
++# define O_NOFOLLOW 0100000 /* don't follow links */
++# define O_DIRECT 0200000 /* direct disk access */
++#endif
++
++#ifdef __USE_LARGEFILE64
++# define O_LARGEFILE 0400000
++#endif
++
++/* For now Linux has synchronisity options for data and read operations.
++ We define the symbols here but let them do the same as O_SYNC since
++ this is a superset. */
++#if defined __USE_POSIX199309 || defined __USE_UNIX98
++# define O_DSYNC O_SYNC /* Synchronize data. */
++# define O_RSYNC O_SYNC /* Synchronize read operations. */
++#endif
++
++#define F_DUPFD 0 /* dup */
++#define F_GETFD 1 /* get close_on_exec */
++#define F_SETFD 2 /* set/clear close_on_exec */
++#define F_GETFL 3 /* get file->f_flags */
++#define F_SETFL 4 /* set file->f_flags */
++
++#ifndef __USE_FILE_OFFSET64
++# define F_GETLK 5
++# define F_SETLK 6
++# define F_SETLKW 7
++#else
++# define F_GETLK F_GETLK64
++# define F_SETLK F_SETLK64
++# define F_SETLKW F_SETLKW64
++#endif
++#define F_GETLK64 12 /* using 'struct flock64' */
++#define F_SETLK64 13
++#define F_SETLKW64 14
++
++#if defined __USE_BSD || defined __USE_XOPEN2K
++# define F_SETOWN 8 /* for sockets. */
++# define F_GETOWN 9 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETSIG 10 /* for sockets. */
++# define F_GETSIG 11 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETLEASE 1024 /* Set a lease. */
++# define F_GETLEASE 1025 /* Enquire what lease is active. */
++# define F_NOTIFY 1026 /* Request notfications on a directory. */
++#endif
++
++/* for F_[GET|SET]FL */
++#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
++
++/* for posix fcntl() and lockf() */
++#define F_RDLCK 0
++#define F_WRLCK 1
++#define F_UNLCK 2
++
++/* for old implementation of bsd flock () */
++#define F_EXLCK 4 /* or 3 */
++#define F_SHLCK 8 /* or 4 */
++
++/* for leases */
++#define F_INPROGRESS 16
++
++#ifdef __USE_BSD
++/* operations for bsd flock(), also used by the kernel implementation */
++# define LOCK_SH 1 /* shared lock */
++# define LOCK_EX 2 /* exclusive lock */
++# define LOCK_NB 4 /* or'd with one of the above to prevent
++ blocking */
++# define LOCK_UN 8 /* remove lock */
++#endif
++
++#ifdef __USE_GNU
++# define LOCK_MAND 32 /* This is a mandatory flock */
++# define LOCK_READ 64 /* ... Which allows concurrent
++ read operations */
++# define LOCK_WRITE 128 /* ... Which allows concurrent
++ write operations */
++# define LOCK_RW 192 /* ... Which allows concurrent
++ read & write ops */
++#endif
++
++#ifdef __USE_GNU
++/* Types of directory notifications that may be requested with F_NOTIFY. */
++# define DN_ACCESS 0x00000001 /* File accessed. */
++# define DN_MODIFY 0x00000002 /* File modified. */
++# define DN_CREATE 0x00000004 /* File created. */
++# define DN_DELETE 0x00000008 /* File removed. */
++# define DN_RENAME 0x00000010 /* File renamed. */
++# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
++# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
++#endif
++
++struct flock {
++ short l_type;
++ short l_whence;
++#ifndef __USE_FILE_OFFSET64
++ __off_t l_start;
++ __off_t l_len;
++#else
++ __off64_t l_start;
++ __off64_t l_len;
++#endif
++ __pid_t l_pid;
++};
++
++#ifdef __USE_LARGEFILE64
++struct flock64 {
++ short l_type;
++ short l_whence;
++ __off64_t l_start;
++ __off64_t l_len;
++ __pid_t l_pid;
++};
++#endif
++
++/* Define some more compatibility macros to be backward compatible with
++ * BSD systems which did not managed to hide these kernel macros. */
++#ifdef __USE_BSD
++# define FAPPEND O_APPEND
++# define FFSYNC O_FSYNC
++# define FASYNC O_ASYNC
++# define FNONBLOCK O_NONBLOCK
++# define FNDELAY O_NDELAY
++#endif /* Use BSD. */
++
++/* Advise to `posix_fadvise'. */
++#ifdef __USE_XOPEN2K
++# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
++#endif
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/kernel_stat.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/kernel_stat.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,63 @@
++#ifndef _BITS_STAT_STRUCT_H
++#define _BITS_STAT_STRUCT_H
++
++/*
++ * This file provides struct stat, taken from kernel 2.6.4
++ * (include/asm-avr32/stat.h revision 1.1).
++ */
++
++struct kernel_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;
++};
++
++#define STAT_HAVE_NSEC 1
++
++struct kernel_stat64 {
++ unsigned long long st_dev;
++
++ unsigned long long st_ino;
++ unsigned int st_mode;
++ unsigned int st_nlink;
++
++ unsigned long st_uid;
++ unsigned long st_gid;
++
++ unsigned long long st_rdev;
++
++ long long st_size;
++ unsigned long __pad1;
++ unsigned long st_blksize;
++
++ unsigned long 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 __unused1;
++ unsigned long __unused2;
++};
++
++#endif /* _BITS_STAT_STRUCT_H */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/kernel_types.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/kernel_types.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,56 @@
++/* Note that we use the exact same include guard #define names
++ * as asm/posix_types.h. This will avoid gratuitous conflicts
++ * with the posix_types.h kernel header, and will ensure that
++ * our private content, and not the kernel header, will win.
++ * -Erik
++ */
++#ifndef __ASM_AVR32_POSIX_TYPES_H
++#define __ASM_AVR32_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_dev_t;
++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 int __kernel_uid_t;
++typedef unsigned int __kernel_gid_t;
++typedef unsigned long __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 {
++#if defined(__USE_ALL)
++ int val[2];
++#else
++ int __val[2];
++#endif
++} __kernel_fsid_t;
++
++#endif /* __ASM_AVR32_POSIX_TYPES_H */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/machine-gmon.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/machine-gmon.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,69 @@
++/* Machine-dependent definitions for profiling support. AVR32 version.
++ Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define mcount_internal __mcount_internal
++
++#define _MCOUNT_DECL(frompc, selfpc) \
++static void __attribute((used)) mcount_internal(unsigned long frompc, unsigned long selfpc)
++
++/*
++ * This mcount implementation expects to get called after the prologue
++ * has been run. It also expects that r7 contains a valid frame
++ * pointer.
++ *
++ * When profiling, the compiler should generate something like this at
++ * each function entry:
++ *
++ * pushm r0-r7,lr // lr mandatory, others optional
++ * mov r7, sp
++ * // rest of prologue goes here
++ * mcall pc[.LC1 - .]
++ * // rest of function goes here
++ * .LC1:
++ * .long mcount
++ *
++ * or for PIC:
++ *
++ * pushm r0-r7,lr
++ * mov r7, sp
++ * // rest of prologue goes here
++ * lddpc r0, .LC1
++ * .L1: rsub r0, pc
++ * mcall r0[mcount@GOT]
++ * // rest of function goes here
++ * .LC1:
++ * .long .L1 - _GLOBAL_OFFSET_TABLE_
++ *
++ * This way, when mcount() is called, r7 points to the calling
++ * function's return address. It is guaranteed that calling mcount
++ * will clobber no registers except LR, which is unavoidable.
++ */
++#define MCOUNT asm( \
++ " .align 4\n" \
++ " .global _mcount\n" \
++ " .type _mcount,@function\n" \
++ "_mcount:\n" \
++ " pushm r8-r12,lr\n" \
++ " mov r11, lr\n" \
++ " ld.w r12, r7[0]\n" \
++ " rcall __mcount_internal\n" \
++ " popm r8-r12,pc\n" \
++ " .size _mcount, . - _mcount\n" \
++ " .weak mcount\n" \
++ " mcount = _mcount");
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/mman.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/mman.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,95 @@
++/* Definitions for POSIX memory map interface. Linux/AVR32 version.
++ Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_MMAN_H
++# error "Never include this file directly. Use <sys/mman.h> instead"
++#endif
++
++/* The following definitions basically come from the kernel headers.
++ But the kernel header is not namespace clean. */
++
++
++/* Protections are chosen from these bits, OR'd together. The
++ implementation does not necessarily support PROT_EXEC or PROT_WRITE
++ without PROT_READ. The only guarantees are that no writing will be
++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
++
++#define PROT_READ 0x1 /* Page can be read. */
++#define PROT_WRITE 0x2 /* Page can be written. */
++#define PROT_EXEC 0x4 /* Page can be executed. */
++#define PROT_NONE 0x0 /* Page can not be accessed. */
++
++/* Sharing types (must choose one and only one of these). */
++#define MAP_SHARED 0x01 /* Share changes. */
++#define MAP_PRIVATE 0x02 /* Changes are private. */
++#ifdef __USE_MISC
++# define MAP_TYPE 0x0f /* Mask for type of mapping. */
++#endif
++
++/* Other flags. */
++#define MAP_FIXED 0x10 /* Interpret addr exactly. */
++#ifdef __USE_MISC
++# define MAP_FILE 0
++# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
++# define MAP_ANON MAP_ANONYMOUS
++#endif
++
++/* These are Linux-specific. */
++#ifdef __USE_MISC
++# 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 /* Lock the mapping. */
++# 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 */
++#endif
++
++/* Flags to `msync'. */
++#define MS_ASYNC 1 /* Sync memory asynchronously. */
++#define MS_SYNC 4 /* Synchronous memory sync. */
++#define MS_INVALIDATE 2 /* Invalidate the caches. */
++
++/* Flags for `mlockall'. */
++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */
++#define MCL_FUTURE 2 /* Lock all additions to address
++ space. */
++
++/* Flags for `mremap'. */
++#ifdef __USE_GNU
++# define MREMAP_MAYMOVE 1
++#endif
++
++/* Advise to `madvise'. */
++#ifdef __USE_BSD
++# define MADV_NORMAL 0 /* No further special treatment. */
++# define MADV_RANDOM 1 /* Expect random page references. */
++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define MADV_WILLNEED 3 /* Will need these pages. */
++# define MADV_DONTNEED 4 /* Don't need these pages. */
++#endif
++
++/* The POSIX people had to invent similar names for the same things. */
++#ifdef __USE_XOPEN2K
++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
++#endif
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/profil-counter.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/profil-counter.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,26 @@
++/* Low-level statistical profiling support function. Linux/AVR32 version.
++ Copyright (C) 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <signal.h>
++
++void
++profil_counter(int signo, siginfo_t *si, struct sigcontext *sc)
++{
++ profil_count((void *)sc->pc);
++}
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/setjmp.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/setjmp.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,21 @@
++/*
++ * Copyright (C) 2004-2005 Atmel Norway
++ */
++#ifndef _SETJMP_H
++# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
++#endif
++
++#ifndef _ASM
++/*
++ * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
++ * not saved.
++ */
++typedef int __jmp_buf[11];
++#endif
++
++#define __JMP_BUF_SP 4
++
++/* Test if longjmp to JMPBUF would unwind the frame containing a local
++ variable at ADDRESS. */
++#define _JMPBUF_UNWINDS(jmpbuf, address) \
++ ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/syscalls.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/syscalls.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,143 @@
++#ifndef _SYSCALL_H
++# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
++#endif
++
++/*
++ * This includes the `__NR_<name>' syscall numbers taken from the
++ * Linux kernel header files. It also defines the traditional
++ * `SYS_<name>' macros for older programs.
++ */
++#include <bits/sysnum.h>
++
++#ifndef __set_errno
++# define __set_errno(val) (*__errno_location()) = (val)
++#endif
++#ifndef SYS_ify
++# define SYS_ify(syscall_name) (__NR_##syscall_name)
++#endif
++
++#ifndef __ASSEMBLER__
++
++#undef _syscall0
++#define _syscall0(type,name) \
++ type name(void) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 0)); \
++ }
++
++#undef _syscall1
++#define _syscall1(type,name,type1,arg1) \
++ type name(type1 arg1) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 1, arg1)); \
++ }
++
++#undef _syscall2
++#define _syscall2(type,name,type1,arg1,type2,arg2) \
++ type name(type1 arg1, type2 arg2) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 2, arg1, arg2)); \
++ }
++
++#undef _syscall3
++#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
++ type name(type1 arg1, type2 arg2, type3 arg3) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 3, arg1, \
++ arg2, arg3)); \
++ }
++
++#undef _syscall4
++#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 4, arg1, arg2, \
++ arg3, arg4)); \
++ }
++
++#undef _syscall5
++#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 5, arg1, arg2, \
++ arg3, arg4, arg5)); \
++ }
++
++#undef _syscall6
++#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5,type6,arg6) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5, type6 arg6) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 6, arg1, arg2, arg3, \
++ arg4, arg5, arg6)); \
++ }
++
++#undef unlikely
++#define unlikely(x) __builtin_expect((x), 0)
++
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ ({ \
++ unsigned _sys_result = INTERNAL_SYSCALL(name, , nr, args); \
++ if (unlikely(INTERNAL_SYSCALL_ERROR_P(_sys_result, ))) { \
++ __set_errno(INTERNAL_SYSCALL_ERRNO(_sys_result, )); \
++ _sys_result = (unsigned int) -1; \
++ } \
++ (int) _sys_result; \
++ })
++
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) do { } while(0)
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) \
++ ({ \
++ register int _a1 asm ("r12"); \
++ register int _scno asm("r8") = SYS_ify(name); \
++ LOAD_ARGS_##nr (args); \
++ asm volatile ("scall /* syscall " #name " */" \
++ : "=r" (_a1) \
++ : "r"(_scno) ASM_ARGS_##nr \
++ : "lr", "cc", "memory"); \
++ _a1; \
++ })
++
++#undef INTERNAL_SYSCALL_ERROR_P
++#define INTERNAL_SYSCALL_ERROR_P(val, err) \
++ ((unsigned int)(val) >= 0xfffff001U)
++
++#undef INTERNAL_SYSCALL_ERRNO
++#define INTERNAL_SYSCALL_ERRNO(val, errr) (-(val))
++
++#define LOAD_ARGS_0() do { } while(0)
++#define ASM_ARGS_0
++#define LOAD_ARGS_1(a1) \
++ _a1 = (int) (a1); \
++ LOAD_ARGS_0()
++#define ASM_ARGS_1 ASM_ARGS_0, "r"(_a1)
++#define LOAD_ARGS_2(a1, a2) \
++ register int _a2 asm("r11") = (int)(a2); \
++ LOAD_ARGS_1(a1)
++#define ASM_ARGS_2 ASM_ARGS_1, "r"(_a2)
++#define LOAD_ARGS_3(a1, a2, a3) \
++ register int _a3 asm("r10") = (int)(a3); \
++ LOAD_ARGS_2(a1, a2)
++#define ASM_ARGS_3 ASM_ARGS_2, "r"(_a3)
++#define LOAD_ARGS_4(a1, a2, a3, a4) \
++ register int _a4 asm("r9") = (int)(a4); \
++ LOAD_ARGS_3(a1, a2, a3)
++#define ASM_ARGS_4 ASM_ARGS_3, "r"(_a4)
++#define LOAD_ARGS_5(a1, a2, a3, a4, a5) \
++ register int _a5 asm("r5") = (int)(a5); \
++ LOAD_ARGS_4(a1, a2, a3, a4)
++#define ASM_ARGS_5 ASM_ARGS_4, "r"(_a5)
++#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6) \
++ register int _a6 asm("r3") = (int)(a6); \
++ LOAD_ARGS_5(a1, a2, a3, a4, a5)
++#define ASM_ARGS_6 ASM_ARGS_5, "r"(_a6)
++
++#endif /* __ASSEMBLER__ */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/wordsize.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/wordsize.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1 @@
++#define __WORDSIZE 32
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/brk.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/brk.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,23 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <sys/syscall.h>
++
++void *__curbrk = 0;
++
++int brk (void *addr)
++{
++ void *newbrk;
++
++ newbrk = INLINE_SYSCALL(brk, 1, addr);
++
++ __curbrk = newbrk;
++
++ if (newbrk < addr) {
++ __set_errno (ENOMEM);
++ return -1;
++ }
++
++ return 0;
++}
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bsd-_setjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bsd-_setjmp.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 0) */
++ .global _setjmp
++ .type _setjmp,"function"
++ .align 1
++_setjmp:
++ mov r11, 0
++ bral __sigsetjmp_internal
++ .size _setjmp, . - _setjmp
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bsd-setjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bsd-setjmp.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 1) */
++ .global setjmp
++ .type setjmp,"function"
++ .align 1
++setjmp:
++ mov r11, 1
++ bral __sigsetjmp_internal
++ .size setjmp, . - setjmp
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/clone.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/clone.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,37 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++
++/*
++ * I don't know if we can be absolutely certain that the fn and arg
++ * parameters are preserved when returning as the child. If the
++ * compiler stores them in registers (r0-r7), they should be.
++ */
++int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg)
++{
++ register int (*_fn)(void *arg) = fn;
++ register void *_arg = arg;
++ int err;
++
++ /* Sanity check the arguments */
++ err = -EINVAL;
++ if (!fn)
++ goto syscall_error;
++ if (!child_stack)
++ goto syscall_error;
++
++ err = INLINE_SYSCALL(clone, 2, flags, child_stack);
++ if (err < 0)
++ goto syscall_error;
++ else if (err != 0)
++ return err;
++
++ _exit(_fn(_arg));
++
++syscall_error:
++ __set_errno (-err);
++ return -1;
++}
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/crt1.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/crt1.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,93 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ *
++ * When we enter _start, the stack looks like this:
++ * argc argument counter
++ * argv[0] pointer to program name
++ * argv[1..argc-1] pointers to program args
++ * NULL
++ * env[0..N] pointers to environment variables
++ * NULL
++ *
++ * r12 contains a function pointer to be registered with `atexit'.
++ * This is how the dynamic linker arranges to have DT_FINI functions
++ * called for shared libraries that have been loaded before this
++ * code runs.
++ *
++ * We're going to call the following function:
++ * __uClibc_main(int (*main)(int, char **, char **), int argc,
++ * char **argv, void (*app_init)(void), void (*app_fini)(void),
++ * void (*rtld_fini)(void), void *stack_end)
++ *
++ * So we need to set up things as follows:
++ * r12 = address of main
++ * r11 = argc
++ * r10 = &argv[0]
++ * r9 = address of _init
++ * r8 = address of _fini
++ * sp[0] = whatever we got passed in r12
++ */
++
++#include <features.h>
++
++ .text
++ .global _start
++ .type _start, @function
++_start:
++ /* Clear the frame pointer and link register since this is the outermost frame. */
++ mov r7, 0
++ mov lr, 0
++
++ ld.w r11, sp++ /* argc */
++ mov r10, sp /* &argv[0] */
++
++ st.w --sp, r10 /* stack_end */
++ st.w --sp, r12 /* rtld_fini */
++
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++.L_RGOT:
++ rsub r6, pc
++ lda.w r9, _init
++ lda.w r8, _fini
++ lda.w r12, main
++
++ /* Ok, now run uClibc's main() -- should not return */
++ call __uClibc_main
++
++ .align 2
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++ lddpc r9, __init_addr /* app_init */
++ lddpc r8, __fini_addr /* app_fini */
++ lddpc r12, __main_addr /* main */
++
++ /* Ok, now run uClibc's main() -- should not return */
++ lddpc pc, ___uClibc_main_addr
++
++ .align 2
++__init_addr:
++ .long _init
++__fini_addr:
++ .long _fini
++__main_addr:
++ .long main
++___uClibc_main_addr:
++ .long __uClibc_main
++#endif
++ .size _start, . - _start
++
++ /*
++ * The LSB says we need this.
++ */
++ .section ".note.ABI-tag", "a"
++ .align 4
++ .long 2f - 1f /* namesz */
++ .long 4f - 3f /* descsz */
++ .long 1 /* type */
++1: .asciz "GNU" /* name */
++2: .align 4
++3: .long 0 /* Linux executable */
++ .long 2,6,0 /* Earliest compatible kernel */
++4: .align 4
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/crti.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/crti.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,17 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++_init:
++ /* Use a four-byte instruction to avoid NOPs */
++ stm --sp, r0-r7,lr
++ .align 2
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++_fini:
++ stm --sp, r0-r7,lr
++ .align 2
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/crtn.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/crtn.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,14 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++ ldm sp++, r0-r7,pc
++ .size _init, . - _init
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++ ldm sp++, r0-r7,pc
++ .size _fini, . - _fini
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/mmap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/mmap.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,31 @@
++/* Copyright (C) 2005 Atmel Norway
++
++ This program is free software; you can redistribute it and/or modify it under
++ the terms of the GNU Library General Public License as published by the Free
++ Software Foundation; either version 2 of the License, or (at your option) any
++ later version.
++
++ 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 Library General Public License for more
++ details.
++
++ You should have received a copy of the GNU Library 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
++
++ Derived in part from the Linux-8086 C library, the GNU C Library, and several
++ other sundry sources. Files within this library are copyright by their
++ respective copyright holders.
++ */
++
++#include <errno.h>
++#include <sys/mman.h>
++#include <sys/syscall.h>
++
++static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, pgoff);
++
++__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
++{
++ return mmap2(addr, len, prot, flags, fd, offset >> 12);
++}
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/setjmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/setjmp.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,43 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#define _SETJMP_H
++#define _ASM
++#include <bits/setjmp.h>
++
++ .text
++
++ .global __sigsetjmp
++ .type __sigsetjmp,"function"
++
++ /* Create a global, hidden symbol for use by setjmp() and _setjmp().
++ If it's not hidden, the linker will complain about a relative
++ jump to a dynamic symbol when building a shared library.
++
++ Also, if a user overrides the __sigsetjmp function, he might not
++ expect the setjmp() and _setjmp() function to effectively be
++ overridden as well. */
++ .global __sigsetjmp_internal
++ .hidden __sigsetjmp_internal
++ .type __sigsetjmp_internal,"function"
++ .align 1
++__sigsetjmp:
++__sigsetjmp_internal:
++ mustr r8
++ stm r12, r0,r1,r2,r3,r4,r5,r6,r7,r8,sp,lr
++
++ /* Make a tail call to __sigjmp_save; it takes the same args. */
++#ifdef __PIC__
++ mov r9, r6
++ lddpc r6, .LG
++.L1: rsub r6, pc
++ ld.w r8, r6[__sigjmp_save@got]
++ mov r6, r9
++ mov pc, r8
++
++ .align 2
++.LG: .long .L1 - _GLOBAL_OFFSET_TABLE_
++#else
++ rjmp __sigjmp_save
++#endif
++ .size __sigsetjmp, . - __sigsetjmp
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sigaction.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sigaction.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,49 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <errno.h>
++#include <signal.h>
++#include <string.h>
++#include <sys/syscall.h>
++#include <bits/kernel_sigaction.h>
++
++#define SA_RESTORER 0x04000000
++extern void __default_rt_sa_restorer(void);
++
++/*
++ * If act is not NULL, change the action for sig to *act.
++ * If oact is not NULL, put the old action for sig in *oact.
++ */
++int __libc_sigaction(int signum, const struct sigaction *act,
++ struct sigaction *oldact)
++{
++ struct kernel_sigaction kact, koact;
++ int result;
++
++ if (act) {
++ kact.k_sa_handler = act->sa_handler;
++ memcpy(&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
++ kact.sa_flags = act->sa_flags;
++ if (kact.sa_flags & (SA_RESTORER | SA_ONSTACK))
++ kact.sa_restorer = act->sa_restorer;
++ else
++ kact.sa_restorer = __default_rt_sa_restorer;
++ kact.sa_flags |= SA_RESTORER;
++ }
++
++ result = __syscall_rt_sigaction(signum, act ? __ptrvalue(&kact) : NULL,
++ oldact ? __ptrvalue(&koact) : NULL,
++ _NSIG / 8);
++
++ if (oldact && result >= 0) {
++ oldact->sa_handler = koact.k_sa_handler;
++ memcpy(&oldact->sa_mask, &koact.sa_mask,
++ sizeof(oldact->sa_mask));
++ oldact->sa_flags = koact.sa_flags;
++ oldact->sa_restorer = koact.sa_restorer;
++ }
++
++ return result;
++}
++
++weak_alias(__libc_sigaction, sigaction)
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sigrestorer.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sigrestorer.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,11 @@
++/*
++ * Copyright (C) 2004 Atmel Norway AS
++ */
++#include <sys/syscall.h>
++
++ .global __default_rt_sa_restorer
++ .type __default_rt_sa_restorer,"function"
++ .align 1
++__default_rt_sa_restorer:
++ mov r8, __NR_rt_sigreturn
++ scall
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/elf.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/elf.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,26 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_ELF_H
++#define _SYS_ELF_H 1
++
++#warning "This header is obsolete; use <sys/procfs.h> instead."
++
++#include <sys/procfs.h>
++
++#endif /* sys/elf.h */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/io.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/io.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,48 @@
++/* Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_IO_H
++
++#define _SYS_IO_H 1
++#include <features.h>
++
++__BEGIN_DECLS
++
++/* If TURN_ON is TRUE, request for permission to do direct i/o on the
++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
++ permission off for that range. This call requires root privileges. */
++extern int ioperm (unsigned long int __from, unsigned long int __num,
++ int __turn_on) __THROW;
++
++/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
++ permission to access any I/O port is granted. This call requires
++ root privileges. */
++extern int iopl (int __level) __THROW;
++
++/* The functions that actually perform reads and writes. */
++extern unsigned char inb (unsigned long int port) __THROW;
++extern unsigned short int inw (unsigned long int port) __THROW;
++extern unsigned long int inl (unsigned long int port) __THROW;
++
++extern void outb (unsigned char value, unsigned long int port) __THROW;
++extern void outw (unsigned short value, unsigned long int port) __THROW;
++extern void outl (unsigned long value, unsigned long int port) __THROW;
++
++__END_DECLS
++
++#endif /* _SYS_IO_H */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/procfs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/procfs.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,123 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_PROCFS_H
++#define _SYS_PROCFS_H 1
++
++/* This is somewhat modelled after the file of the same name on SVR4
++ systems. It provides a definition of the core file format for ELF
++ used on Linux. It doesn't have anything to do with the /proc file
++ system, even though Linux has one.
++
++ Anyway, the whole purpose of this file is for GDB and GDB only.
++ Don't read too much into it. Don't use it for anything other than
++ GDB unless you know what you are doing. */
++
++#include <features.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/user.h>
++
++__BEGIN_DECLS
++
++/* Type for a general-purpose register. */
++typedef unsigned long elf_greg_t;
++
++/* And the whole bunch of them. We could have used `struct
++ user_regs' directly in the typedef, but tradition says that
++ the register set is an array, which does have some peculiar
++ semantics, so leave it that way. */
++#define ELF_NGREG (sizeof (struct user_regs) / sizeof(elf_greg_t))
++typedef elf_greg_t elf_gregset_t[ELF_NGREG];
++
++/* Register set for the floating-point registers. */
++typedef struct user_fpregs elf_fpregset_t;
++
++/* Signal info. */
++struct elf_siginfo
++ {
++ int si_signo; /* Signal number. */
++ int si_code; /* Extra code. */
++ int si_errno; /* Errno. */
++ };
++
++/* Definitions to generate Intel SVR4-like core files. These mostly
++ have the same names as the SVR4 types with "elf_" tacked on the
++ front to prevent clashes with Linux definitions, and the typedef
++ forms have been avoided. This is mostly like the SVR4 structure,
++ but more Linuxy, with things that Linux does not support and which
++ GDB doesn't really use excluded. */
++
++struct elf_prstatus
++ {
++ struct elf_siginfo pr_info; /* Info associated with signal. */
++ short int pr_cursig; /* Current signal. */
++ unsigned long int pr_sigpend; /* Set of pending signals. */
++ unsigned long int pr_sighold; /* Set of held signals. */
++ __pid_t pr_pid;
++ __pid_t pr_ppid;
++ __pid_t pr_pgrp;
++ __pid_t pr_sid;
++ struct timeval pr_utime; /* User time. */
++ struct timeval pr_stime; /* System time. */
++ struct timeval pr_cutime; /* Cumulative user time. */
++ struct timeval pr_cstime; /* Cumulative system time. */
++ elf_gregset_t pr_reg; /* GP registers. */
++ int pr_fpvalid; /* True if math copro being used. */
++ };
++
++
++#define ELF_PRARGSZ (80) /* Number of chars for args. */
++
++struct elf_prpsinfo
++ {
++ char pr_state; /* Numeric process state. */
++ char pr_sname; /* Char for pr_state. */
++ char pr_zomb; /* Zombie. */
++ char pr_nice; /* Nice val. */
++ unsigned long int pr_flag; /* Flags. */
++ unsigned short int pr_uid;
++ unsigned short int pr_gid;
++ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
++ /* Lots missing */
++ char pr_fname[16]; /* Filename of executable. */
++ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
++ };
++
++/* The rest of this file provides the types for emulation of the
++ Solaris <proc_service.h> interfaces that should be implemented by
++ users of libthread_db. */
++
++/* Addresses. */
++typedef void *psaddr_t;
++
++/* Register sets. Linux has different names. */
++typedef elf_gregset_t prgregset_t;
++typedef elf_fpregset_t prfpregset_t;
++
++/* We don't have any differences between processes and threads,
++ therefore have only one PID type. */
++typedef __pid_t lwpid_t;
++
++/* Process status and info. In the end we do provide typedefs for them. */
++typedef struct elf_prstatus prstatus_t;
++typedef struct elf_prpsinfo prpsinfo_t;
++
++__END_DECLS
++
++#endif /* sys/procfs.h */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/ucontext.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/ucontext.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,94 @@
++/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* Linux/AVR32 ABI compliant context switching support. */
++
++#ifndef _SYS_UCONTEXT_H
++#define _SYS_UCONTEXT_H 1
++
++#include <features.h>
++#include <signal.h>
++#include <sys/procfs.h>
++#include <bits/sigcontext.h>
++
++typedef int greg_t;
++
++/* Number of general registers. */
++#define NGREG 16
++
++/* Container for all general registers. */
++typedef elf_gregset_t gregset_t;
++
++/* Number of each register is the `gregset_t' array. */
++enum
++{
++ R0 = 0,
++#define R0 R0
++ R1 = 1,
++#define R1 R1
++ R2 = 2,
++#define R2 R2
++ R3 = 3,
++#define R3 R3
++ R4 = 4,
++#define R4 R4
++ R5 = 5,
++#define R5 R5
++ R6 = 6,
++#define R6 R6
++ R7 = 7,
++#define R7 R7
++ R8 = 8,
++#define R8 R8
++ R9 = 9,
++#define R9 R9
++ R10 = 10,
++#define R10 R10
++ R11 = 11,
++#define R11 R11
++ R12 = 12,
++#define R12 R12
++ R13 = 13,
++#define R13 R13
++ R14 = 14,
++#define R14 R14
++ R15 = 15
++#define R15 R15
++};
++
++/* Structure to describe FPU registers. */
++typedef elf_fpregset_t fpregset_t;
++
++/* Context to describe whole processor state. */
++typedef struct
++ {
++ gregset_t gregs;
++ fpregset_t fpregs;
++ } mcontext_t;
++
++/* Userlevel context. */
++typedef 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 */
++} ucontext_t;
++
++#endif /* sys/ucontext.h */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/user.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/sys/user.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,46 @@
++#ifndef _SYS_USER_H
++#define _SYS_USER_H
++
++struct user_fpregs
++{
++
++};
++
++struct user_regs
++{
++ unsigned long sr;
++ unsigned long pc;
++ unsigned long lr;
++ unsigned long sp;
++ unsigned long r12;
++ unsigned long r11;
++ unsigned long r10;
++ unsigned long r9;
++ unsigned long r8;
++ unsigned long r7;
++ unsigned long r6;
++ unsigned long r5;
++ unsigned long r4;
++ unsigned long r3;
++ unsigned long r2;
++ unsigned long r1;
++ unsigned long r0;
++ unsigned long r12_orig;
++};
++
++struct user
++{
++ struct user_regs regs; /* general registers */
++ size_t u_tsize; /* text size (pages) */
++ size_t u_dsize; /* data size (pages) */
++ size_t u_ssize; /* stack size (pages) */
++ unsigned long start_code; /* text starting address */
++ unsigned long start_data; /* data starting address */
++ unsigned long start_stack; /* stack starting address */
++ long int signal; /* signal causing core dump */
++ struct user_regs * u_ar0; /* help gdb find registers */
++ unsigned long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#endif /* _SYS_USER_H */
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/syscall.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/syscall.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,81 @@
++/*
++ * syscall for AVR32/uClibc
++ *
++ * Copyright (C) 2004 Atmel Norway
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU Library General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ * 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 Library General Public License
++ * for more details.
++ *
++ * You should have received a copy of the GNU Library 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
++ */
++#include <features.h>
++
++ .text
++
++ /*
++ * long int syscall(long int sysno, ...)
++ */
++ .global syscall
++ .type syscall, @function
++ .align 2
++syscall:
++ stm --sp, r3,r5,lr
++ sub lr, sp, -12
++ mov r8, r12
++ ldm lr, r3,r5,r9-r12
++ scall
++ cp.w r12, -4095
++ brlo .Ldone
++
++#ifdef __PIC__
++ lddpc r5, .Lgot
++.Lgotcalc:
++ rsub r5, pc
++# ifdef __UCLIBC_HAS_THREADS__
++ mov r3, r12
++ mcall r5[__errno_location@got]
++ st.w r12[0], r3
++# else
++ ld.w r3, r5[errno@got]
++ st.w r3[0], r12
++# endif
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++ mov r3, r12
++ mcall .Lerrno_location
++ st.w r12[0], r3
++# else
++ lddpc r3, .Lerrno
++ st.w r3[0], r12
++# endif
++#endif
++ mov r12, -1
++
++.Ldone:
++ ldm sp++, r3,r5,pc
++
++ .align 2
++#ifdef __PIC__
++.Lgot:
++ .long .Lgotcalc - _GLOBAL_OFFSET_TABLE_
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++.Lerrno_location:
++ .long __errno_location
++# else
++.Lerrno:
++ .long errno
++# endif
++#endif
++
++
++ .size syscall, . - syscall
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/vfork.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/vfork.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,55 @@
++ /*
++ * vfork for uClibc
++ *
++ * Copyright (C) 2005 Atmel Norway
++ */
++
++ /*
++ * Clone the process without copying the address space. The
++ * calling process is suspended until the child either exits
++ * or calls execve.
++ *
++ * This all means that we cannot rely on the stack to store
++ * away registers, since they will be overwritten by the child
++ * as soon as it makes another function call (e.g. execve()).
++ * Fortunately, the Linux kernel preserves LR across system calls.
++ */
++#include <features.h>
++#include <sys/syscall.h>
++
++ .global __vfork
++ .type __vfork,@function
++ .align 1
++__vfork:
++ mov r8, __NR_vfork
++ scall
++ cp.w r12, -4096
++ retls r12
++
++ /* vfork failed, so we may use the stack freely */
++ pushm r4-r7,lr
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++ rsub r4, r12, 0
++.L_RGOT:
++ rsub r6, pc
++ mcall r6[__errno_location@got]
++#else
++ rsub r4, r12, 0
++ mcall .L__errno_location
++#endif
++ st.w r12[0], r4
++ popm r4-r7,pc,r12=-1
++
++ .align 2
++#ifdef __PIC__
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++.L__errno_location:
++ .long __errno_location
++#endif
++ .size __vfork, . - __vfork
++
++ .weak vfork
++ vfork = __vfork
+Index: uClibc-0.9.28-avr32/Rules.mak
+===================================================================
+--- uClibc-0.9.28-avr32.orig/Rules.mak 2006-10-19 15:05:49.000000000 +0200
++++ uClibc-0.9.28-avr32/Rules.mak 2006-10-19 15:05:52.000000000 +0200
+@@ -231,6 +231,12 @@ ifeq ($(strip $(TARGET_ARCH)),frv)
+ UCLIBC_LDSO=ld.so.1
+ endif
+
++ifeq ($(strip $(TARGET_ARCH)),avr32)
++ CPU_CFLAGS-$(CONFIG_AP7000) += -mcpu=ap7000
++ CPU_CFLAGS-$(LINKRELAX) += -masm-addr-pseudos -Wa,--pic,--linkrelax
++ CPU_LDFLAGS-$(LINKRELAX) += --relax
++endif
++
+ # Keep the check_gcc from being needlessly executed
+ ifndef PIEFLAG
+ ifneq ($(UCLIBC_BUILD_PIE),y)
+Index: uClibc-0.9.28-avr32/libc/string/avr32/bcopy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/bcopy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,15 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++ .text
++ .global bcopy
++ .type bcopy, @function
++ .align 1
++bcopy:
++ /* Swap the first two arguments */
++ eor r11, r12
++ eor r12, r11
++ eor r11, r12
++ rjmp __memmove
++ .size bcopy, . - bcopy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/bzero.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/bzero.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,12 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++ .text
++ .global bzero
++ .type bzero, @function
++ .align 1
++bzero:
++ mov r10, r11
++ mov r11, 0
++ rjmp __memset
+Index: uClibc-0.9.28-avr32/libc/string/avr32/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/Makefile 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,40 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++TOPDIR=../../../
++include $(TOPDIR)Rules.mak
++
++SSRC := bcopy.S bzero.S memcmp.S memcpy.S memmove.S
++SSRC += memset.S strcmp.S strlen.S
++# memchr.S, strcat.S, strcpy.S, strncpy.S is broken
++SOBJS := $(patsubst %.S,%.o, $(SSRC))
++OBJS := $(SOBJS)
++
++OBJ_LIST:= ../../obj.string.$(TARGET_ARCH)
++
++all: $(OBJ_LIST)
++
++$(OBJ_LIST): $(OBJS)
++ echo $(addprefix string/$(TARGET_ARCH)/, $(OBJS)) > $@
++
++$(SOBJS): %.o: %.S
++ $(CC) $(ASFLAGS) -c $< -o $@
++ $(STRIPTOOL) -x -R .note -R .comment $@
++
++clean:
++ $(RM) *.[oa] *~ core
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memchr.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memchr.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define str r12
++#define chr r11
++#define len r10
++
++ .text
++ .global memchr
++ .type memchr, @function
++memchr:
++ or chr, chr, chr << 8
++ or chr, chr, chr << 16
++
++ mov r9, str
++ andl r9, 3, COH
++ brne .Lunaligned_str
++
++1: sub len, 4
++ brlt 2f
++ ld.w r8, str++
++ psub.b r9, r8, r11
++ tnbz r9
++ brne 1b
++
++ sub str, 4
++ bfextu r9, r8, 24, 8
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ bfextu r9, r8, 16, 8
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ bfextu r9, r8, 8, 8
++ cp.b r9, r11
++ reteq str
++ sub str, -1
++ retal str
++
++2: sub len, -4
++ reteq 0
++
++3: ld.ub r8, str++
++ cp.w r8, 0
++ reteq str
++ sub len, 1
++ brne 3b
++
++ retal 0
++
++.Lunaligned_str:
++1: sub len, 1
++ retlt 0
++ ld.ub r8, str++
++ cp.b r8, r11
++ reteq str
++ sub r9, 1
++ brge 1b
++
++ rjmp .Laligned_search
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memcmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memcmp.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,26 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global memcmp
++ .type memcmp, @function
++ .align 1
++memcmp:
++ cp.w len, 1
++ retlt 0
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ subfne len, 1
++ brne 1b
++
++ retal r8
++ .size memcmp, . - memcmp
++
++ .weak bcmp
++ bcmp = memcmp
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memcpy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memcpy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,110 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++/* Don't use r12 as dst since we must return it unmodified */
++#define dst r9
++#define src r11
++#define len r10
++
++ .text
++ .global memcpy
++ .type memcpy, @function
++
++ .global __memcpy
++ .hidden __memcpy
++ .type __memcpy, @function
++memcpy:
++__memcpy:
++ pref src[0]
++ mov dst, r12
++
++ /* If we have less than 32 bytes, don't do anything fancy */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, src++
++ st.b dst++, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, dst
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ ldm src, r0-r7
++ sub src, -32
++ stm dst, r0-r7
++ sub dst, -32
++ sub len, 32
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ ldm src, r0-r3
++ sub src, -16
++ sub len, 16
++ stm dst, r0-r3
++ sub dst, -16
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++ neg len
++ add pc, pc, len << 2
++ .rept 15
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ rsub r8, r8, 32
++ sub len, r8
++1: ld.ub r0, src++
++ st.b dst++, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[0]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, src++
++ st.w dst++, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++ .size memcpy, . - memcpy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memmove.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memmove.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,114 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define dst r12
++#define src r11
++#define len r10
++
++ .text
++ .global memmove
++ .type memmove, @function
++
++ .global __memmove
++ .hidden __memmove
++ .type __memmove, @function
++memmove:
++__memmove:
++ cp.w src, dst
++ brge __memcpy
++
++ add dst, len
++ add src, len
++ pref src[-1]
++
++ /*
++ * The rest is basically the same as in memcpy.S except that
++ * the direction is reversed.
++ */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, --src
++ st.b --dst, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, r12
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ sub src, 32
++ ldm src, r0-r7
++ sub dst, 32
++ sub len, 32
++ stm dst, r0-r7
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ sub src, 16
++ ldm src, r0-r3
++ sub dst, 16
++ sub len, 16
++ stm dst, r0-r3
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++ sub len, -16
++ breq 2f
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub len, 1
++ brne 1b
++
++2: popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ sub len, r8
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[-4]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, --src
++ st.w --dst, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, --src
++ st.b --dst, r0
++ .endr
++
++ popm r0-r7, pc
+Index: uClibc-0.9.28-avr32/libc/string/avr32/memset.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/memset.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,60 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s r12
++#define c r11
++#define n r10
++
++ .text
++ .global memset
++ .type memset, @function
++
++ .global __memset
++ .hidden __memset
++ .type __memset, @function
++
++ .align 1
++memset:
++__memset:
++ cp.w n, 32
++ mov r9, s
++ brge .Llarge_memset
++
++ sub n, 1
++ retlt s
++1: st.b s++, c
++ sub n, 1
++ brge 1b
++
++ retal r9
++
++.Llarge_memset:
++ mov r8, r11
++ mov r11, 3
++ or r8, r8, r8 << 8
++ or r8, r8, r8 << 16
++ tst s, r11
++ breq 2f
++
++1: st.b s++, r8
++ sub n, 1
++ tst s, r11
++ brne 1b
++
++2: mov r11, r9
++ mov r9, r8
++ sub n, 8
++
++3: st.d s++, r8
++ sub n, 8
++ brge 3b
++
++ /* If we are done, n == -8 and we'll skip all st.b insns below */
++ neg n
++ lsl n, 1
++ add pc, n
++ .rept 7
++ st.b s++, r8
++ .endr
++ retal r11
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strcat.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strcat.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,95 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define s1 r9
++#define s2 r11
++
++ .text
++ .global strcat
++ .type strcat, @function
++ .align 1
++strcat:
++ mov s1, r12
++
++ /* Make sure s1 is word-aligned */
++ mov r10, s1
++ andl r10, 3, COH
++ breq 2f
++
++ add pc, pc, r10 << 3
++ sub r0, r0, 0 /* 4-byte nop */
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 2f
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 3f
++ ld.ub r8, s1++
++ sub r8, r8, 0
++ breq 4f
++
++ /* Find the end of the first string */
++5: ld.w r8, s1++
++ tnbz r8
++ brne 5b
++
++ sub s1, 4
++
++ bfextu r10, r8, 24, 8
++ cp.w r10, 0
++ breq 1f
++ sub s1, -1
++ bfextu r10, r8, 16, 8
++ cp.w r10, 0
++ breq 2f
++ sub s1, -1
++ bfextu r10, r8, 8, 8
++ cp.w r10, 0
++ breq 3f
++ sub s1, -1
++ rjmp 4f
++
++ /* Now, append s2 */
++1: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++2: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++3: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++4: ld.ub r8, s2++
++ st.b s1++, r8
++ cp.w r8, 0
++ reteq r12
++
++ /* Copy one word at a time */
++ ld.w r8, s2++
++ tnbz r8
++ breq 2f
++1: st.w r8, s2++
++ ld.w r8, s2++
++ tnbz r8
++ brne 1b
++
++ /* Copy the remaining bytes */
++ bfextu r10, r8, 24, 8
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 16, 8
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 8, 8
++ st.b s1++, r10
++ cp.w r10, 0
++ reteq r12
++ st.b s1++, r8
++ retal r12
++ .size strcat, . - strcat
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strcmp.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strcmp.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,80 @@
++/*
++ * Copyright (C) 2004 Atmel Norway.
++ */
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global strcmp
++ .type strcmp, @function
++ .align 1
++strcmp:
++ mov r8, 3
++ tst s1, r8
++ brne .Lunaligned_s1
++ tst s2, r8
++ brne .Lunaligned_s2
++
++1: ld.w r8, s1++
++ ld.w r9, s2++
++ cp.w r8, r9
++ brne 2f
++ tnbz r8
++ brne 1b
++ retal 0
++
++2: bfextu r12, r8, 24, 8
++ bfextu r11, r9, 24, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 16, 8
++ bfextu r11, r9, 16, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 8, 8
++ bfextu r11, r9, 8, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 0, 8
++ bfextu r11, r9, 0, 8
++ sub r12, r11
++ retal r12
++
++.Lunaligned_s1:
++3: tst s1, r8
++ breq 4f
++ ld.ub r10, s1++
++ ld.ub r9, s2++
++ sub r10, r9
++ retne r10
++ cp.w r9, 0
++ brne 3b
++ retal r10
++
++4: tst s2, r8
++ breq 1b
++
++.Lunaligned_s2:
++ /*
++ * s1 and s2 can't both be aligned, and unaligned word loads
++ * can trigger spurious exceptions if we cross a page boundary.
++ * Do it the slow way...
++ */
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ retne r8
++ cp.w r9, 0
++ brne 1b
++ retal 0
++
++ .weak strcoll
++ strcoll = strcmp
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strcpy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strcpy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,63 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ *
++ * To reduce the size, this one might simply call strncpy with len = -1.
++ */
++
++#define dst r9
++#define src r11
++
++ .text
++ .global strcpy
++ .type strcpy, @function
++strcpy:
++ mov dst, r12
++
++ pref src[0]
++
++ /*
++ * Check alignment. If src is aligned but dst isn't, we can't
++ * do much about it...
++ */
++ mov r8, src
++ andl r8, 3 COH
++ brne .Lunaligned_src
++
++.Laligned_copy:
++1: ld.w r8, src++
++ tnbz r8
++ breq 2f
++ st.w dst++, r8
++ rjmp 1b
++
++2: /*
++ * Ok, r8 now contains the terminating '\0'. Copy the
++ * remaining bytes individually.
++ */
++ bfextu r10, r8, 24, 8
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 16, 8
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ bfextu r10, r8, 8, 8
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++ st.b dst++, r8
++ retal r12
++
++.Lunaligned_src:
++ /* Copy bytes until we're aligned */
++ rsub r8, r8, 4
++ add pc, pc, r8 << 3
++ nop
++ nop
++ ld.ub r10, src++
++ st.b dst++, r10
++ cp.w r10, 0
++ reteq r12
++
++ rjmp .Laligned_copy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/stringtest.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/stringtest.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,144 @@
++
++#include <stdio.h>
++#include <string.h>
++#include <time.h>
++#include <sys/mman.h>
++
++#define BUF_SIZE (8 * 1024)
++
++static char *buf1;
++static char *buf1_ref;
++static char *buf2;
++
++extern void *optimized_memcpy(void *dest, void *src, size_t len);
++extern void *optimized_memmove(void *dest, void *src, size_t len);
++extern char *optimized_strcpy(char *dest, char *src);
++extern char *optimized_strncpy(char *dest, char *src, size_t len);
++
++void dump_mismatch(char *buf, char *ref, size_t len)
++{
++ int i, j;
++
++ for (i = 0; i < len; i += 16) {
++ if (memcmp(buf + i, ref + i, 16) == 0)
++ continue;
++
++ printf("%4x buf:", i);
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", buf[j]);
++ printf("\n ref:");
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", ref[j]);
++ printf("\n");
++ }
++}
++
++static void test_memcpy(int src_offset, int dst_offset, int len)
++{
++ clock_t start, old, new;
++ int i;
++
++ memset(buf1, 0x55, BUF_SIZE);
++ memset(buf1_ref, 0x55, BUF_SIZE);
++ memset(buf2, 0xaa, BUF_SIZE);
++
++ printf("Testing memcpy with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ start = clock();
++ for (i = 0; i < 8192; i++)
++ optimized_memcpy(buf1 + dst_offset, buf2 + src_offset, len);
++ new = clock() - start;
++ start = clock();
++ for ( i = 0; i < 8192; i++)
++ memcpy(buf1_ref + dst_offset, buf2 + src_offset, len);
++ old = clock() - start;
++
++ if (memcmp(buf1, buf1_ref, BUF_SIZE) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, BUF_SIZE);
++ }
++ printf("CPU time used: %d vs. %d\n", new, old);
++}
++
++static void test_memmove(int src_offset, int dst_offset, int len)
++{
++ clock_t start, old, new;
++
++ memset(buf1, 0x55, BUF_SIZE);
++ memset(buf1_ref, 0x55, BUF_SIZE);
++ memset(buf2, 0xaa, BUF_SIZE);
++
++ printf("Testing memmove with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ start = clock();
++ optimized_memmove(buf1 + dst_offset, buf2 + src_offset, len);
++ new = clock() - start;
++ start = clock();
++ memmove(buf1_ref + dst_offset, buf2 + src_offset, len);
++ old = clock() - start;
++
++ if (memcmp(buf1, buf1_ref, BUF_SIZE) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, BUF_SIZE);
++ }
++ printf("CPU time used: %d vs. %d\n", new, old);
++}
++
++int main(int argc, char *argv[])
++{
++ buf2 = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf2 == MAP_FAILED) {
++ perror("Failed to allocate memory for buf2");
++ return 1;
++ }
++ buf1 = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf1 == MAP_FAILED) {
++ perror("Failed to allocate memory for buf1");
++ return 1;
++ }
++ buf1_ref = mmap(NULL, BUF_SIZE, PROT_READ | PROT_WRITE,
++ MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
++ if (buf1_ref == MAP_FAILED) {
++ perror("Failed to allocate memory for buf1_ref");
++ return 1;
++ }
++ printf("\n === MEMCPY ===\n\n");
++
++ test_memcpy(0, 0, BUF_SIZE - 32);
++ test_memcpy(0, 0, 1);
++ test_memcpy(0, 0, 31);
++ test_memcpy(0, 0, 32);
++ test_memcpy(0, 0, 127);
++ test_memcpy(0, 0, 128);
++ test_memcpy(4, 4, BUF_SIZE - 32 - 4);
++ test_memcpy(1, 1, BUF_SIZE - 32 - 1);
++ test_memcpy(1, 1, 126);
++ test_memcpy(0, 3, 128);
++ test_memcpy(1, 4, 128);
++ test_memcpy(0, 0, 0);
++
++ printf("\n === MEMMOVE ===\n\n");
++
++ test_memmove(0, 0, BUF_SIZE - 32);
++ test_memmove(0, 0, 1);
++ test_memmove(0, 0, 31);
++ test_memmove(0, 0, 32);
++ test_memmove(0, 0, BUF_SIZE - 33);
++ test_memmove(0, 0, 128);
++ test_memmove(4, 4, BUF_SIZE - 32 - 4);
++ test_memmove(1, 1, BUF_SIZE - 32 - 1);
++ test_memmove(1, 1, BUF_SIZE - 130);
++ test_memmove(0, 3, BUF_SIZE - 128);
++ test_memmove(1, 4, BUF_SIZE - 128);
++ test_memmove(0, 0, 0);
++
++ return 0;
++}
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strlen.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strlen.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define str r12
++
++ .text
++ .global strlen
++ .type strlen, @function
++strlen:
++ mov r11, r12
++
++ mov r9, str
++ andl r9, 3, COH
++ brne .Lunaligned_str
++
++1: ld.w r8, str++
++ tnbz r8
++ brne 1b
++
++ sub r12, r11
++ bfextu r9, r8, 24, 8
++ cp.w r9, 0
++ subeq r12, 4
++ reteq r12
++ bfextu r9, r8, 16, 8
++ cp.w r9, 0
++ subeq r12, 3
++ reteq r12
++ bfextu r9, r8, 8, 8
++ cp.w r9, 0
++ subeq r12, 2
++ reteq r12
++ sub r12, 1
++ retal r12
++
++.Lunaligned_str:
++ add pc, pc, r9 << 3
++ sub r0, r0, 0 /* 4-byte nop */
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ brne 1b
++
++1: sub r12, 1
++ sub r12, r11
++ retal r12
+Index: uClibc-0.9.28-avr32/libc/string/avr32/strncpy.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/strncpy.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,77 @@
++/*
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define dst r9
++#define src r11
++
++ .text
++ .global strcpy
++ .type strncpy, @function
++strncpy:
++ mov dst, r12
++
++ pref src[0]
++ mov dst, r12
++
++ /*
++ * Check alignment. If src is aligned but dst isn't, we can't
++ * do much about it...
++ */
++ mov r8, src
++ andl r8, 3 COH
++ brne .Lunaligned_src
++
++.Laligned_copy:
++ sub r10, 4
++ brlt 3f
++1: ld.w r8, src++
++ tnbz r8
++ breq 2f
++ st.w dst++, r8
++ sub r10, 4
++ brne 1b
++
++3: sub r10, -4
++ reteq r12
++
++ /* This is safe as long as src is word-aligned and r10 > 0 */
++ ld.w r8, src++
++
++2: /*
++ * Ok, r8 now contains the terminating '\0'. Copy the
++ * remaining bytes individually.
++ */
++ bfextu r11, r8, 24, 8
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ bfextu r11, r8, 16, 8
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ bfextu r11, r8, 8, 8
++ st.b dst++, r11
++ cp.w r11, 0
++ reteq r12
++ sub r10, 1
++ reteq r12
++ st.b dst++, r8
++ retal r12
++
++.Lunaligned_src:
++ /* Copy bytes until we're aligned */
++ min r8, r8, r10
++ sub r10, r8
++ sub r8, 1
++ retlt r12
++1: ld.ub r10, src++
++ st.b dst++, r10
++ sub r8, 1
++ brge 1b
++
++ rjmp .Laligned_copy
+Index: uClibc-0.9.28-avr32/libc/string/avr32/test_memcpy.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libc/string/avr32/test_memcpy.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,66 @@
++
++#include <stdio.h>
++#include <string.h>
++
++#define BUF_SIZE 32768
++
++static char buf1[BUF_SIZE] __attribute__((aligned(32)));
++static char buf1_ref[BUF_SIZE] __attribute__((aligned(32)));
++static char buf2[BUF_SIZE] __attribute__((aligned(32)));
++
++extern void *new_memcpy(void *dest, void *src, size_t len);
++
++void dump_mismatch(char *buf, char *ref, size_t len)
++{
++ int i, j;
++
++ for (i = 0; i < len; i += 16) {
++ if (memcmp(buf + i, ref + i, 16) == 0)
++ continue;
++
++ printf("% 4x buf:", i);
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", buf[j]);
++ printf("\n ref:");
++ for (j = i; j < (i + 16); j++)
++ printf(" %02x", ref[j]);
++ printf("\n");
++ }
++}
++
++void test(int src_offset, int dst_offset, int len)
++{
++ memset(buf1, 0x55, sizeof(buf1));
++ memset(buf1_ref, 0x55, sizeof(buf1_ref));
++ memset(buf2, 0xaa, sizeof(buf2));
++
++ printf("Testing with offsets %d => %d and len %d...",
++ src_offset, dst_offset, len);
++
++ new_memcpy(buf1 + dst_offset, buf2 + src_offset, len);
++ memcpy(buf1_ref + dst_offset, buf2 + src_offset, len);
++
++ if (memcmp(buf1, buf1_ref, sizeof(buf1)) == 0)
++ printf("OK\n");
++ else {
++ printf("FAILED\n");
++ dump_mismatch(buf1, buf1_ref, sizeof(buf1));
++ }
++}
++
++int main(int argc, char *argv[])
++{
++ test(0, 0, BUF_SIZE);
++ test(0, 0, 1);
++ test(0, 0, 31);
++ test(0, 0, 32);
++ test(0, 0, 127);
++ test(0, 0, 128);
++ test(4, 4, BUF_SIZE - 4);
++ test(1, 1, BUF_SIZE - 1);
++ test(1, 1, 126);
++ test(0, 3, 128);
++ test(1, 4, 128);
++
++ return 0;
++}
+Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/common/create_module.c
+===================================================================
+--- uClibc-0.9.28-avr32.orig/libc/sysdeps/linux/common/create_module.c 2006-10-19 15:05:48.000000000 +0200
++++ uClibc-0.9.28-avr32/libc/sysdeps/linux/common/create_module.c 2006-10-19 15:05:52.000000000 +0200
+@@ -61,7 +61,8 @@ unsigned long create_module(const char *
+ {
+ return __create_module(name, size, 0, 0);
+ }
+-#else
++/* create_module is obsolete in Linux 2.6, so AVR32 doesn't have it */
++#elif !defined(__avr32__)
+ /* Sparc, MIPS, etc don't mistake return values for errors. */
+ _syscall2(unsigned long, create_module, const char *, name, size_t, size);
+ #endif
+Index: uClibc-0.9.28-avr32/ldso/include/dl-string.h
+===================================================================
+--- uClibc-0.9.28-avr32.orig/ldso/include/dl-string.h 2006-10-19 15:05:48.000000000 +0200
++++ uClibc-0.9.28-avr32/ldso/include/dl-string.h 2006-10-19 15:05:52.000000000 +0200
+@@ -134,7 +134,7 @@ static inline char * _dl_strstr(const ch
+ } while (1);
+ }
+
+-static inline void * _dl_memcpy(void * dst, const void * src, size_t len)
++static __always_inline void * _dl_memcpy(void * dst, const void * src, size_t len)
+ {
+ register char *a = dst-1;
+ register const char *b = src-1;
+@@ -271,7 +271,8 @@ static __always_inline char * _dl_simple
+ /* On some arches constant strings are referenced through the GOT.
+ * This requires that load_addr must already be defined... */
+ #if defined(mc68000) || defined(__arm__) || defined(__mips__) \
+- || defined(__sh__) || defined(__powerpc__)
++ || defined(__sh__) || defined(__powerpc__) \
++ || defined(__avr32__)
+ # define CONSTANT_STRING_GOT_FIXUP(X) \
+ if ((X) < (const char *) load_addr) (X) += load_addr
+ # define NO_EARLY_SEND_STDERR
+Index: uClibc-0.9.28-avr32/ldso/include/dl-syscall.h
+===================================================================
+--- uClibc-0.9.28-avr32.orig/ldso/include/dl-syscall.h 2006-10-19 15:05:48.000000000 +0200
++++ uClibc-0.9.28-avr32/ldso/include/dl-syscall.h 2006-10-19 15:05:52.000000000 +0200
+@@ -60,59 +60,59 @@
+ dynamic linking at all, so we cannot return any error codes.
+ We just punt if there is an error. */
+ #define __NR__dl_exit __NR_exit
+-static inline _syscall1(void, _dl_exit, int, status);
++static __always_inline _syscall1(void, _dl_exit, int, status);
+
+ #define __NR__dl_close __NR_close
+-static inline _syscall1(int, _dl_close, int, fd);
++static __always_inline _syscall1(int, _dl_close, int, fd);
+
+ #define __NR__dl_open __NR_open
+-static inline _syscall3(int, _dl_open, const char *, fn, int, flags, __kernel_mode_t, mode);
++static __always_inline _syscall3(int, _dl_open, const char *, fn, int, flags, __kernel_mode_t, mode);
+
+ #define __NR__dl_write __NR_write
+-static inline _syscall3(unsigned long, _dl_write, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_write, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_read __NR_read
+-static inline _syscall3(unsigned long, _dl_read, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_read, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_mprotect __NR_mprotect
+-static inline _syscall3(int, _dl_mprotect, const void *, addr, unsigned long, len, int, prot);
++static __always_inline _syscall3(int, _dl_mprotect, const void *, addr, unsigned long, len, int, prot);
+
+ #define __NR__dl_stat __NR_stat
+-static inline _syscall2(int, _dl_stat, const char *, file_name, struct stat *, buf);
++static __always_inline _syscall2(int, _dl_stat, const char *, file_name, struct stat *, buf);
+
+ #define __NR__dl_munmap __NR_munmap
+-static inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
++static __always_inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
+
+ #define __NR__dl_getuid __NR_getuid
+-static inline _syscall0(uid_t, _dl_getuid);
++static __always_inline _syscall0(uid_t, _dl_getuid);
+
+ #define __NR__dl_geteuid __NR_geteuid
+-static inline _syscall0(uid_t, _dl_geteuid);
++static __always_inline _syscall0(uid_t, _dl_geteuid);
+
+ #define __NR__dl_getgid __NR_getgid
+-static inline _syscall0(gid_t, _dl_getgid);
++static __always_inline _syscall0(gid_t, _dl_getgid);
+
+ #define __NR__dl_getegid __NR_getegid
+-static inline _syscall0(gid_t, _dl_getegid);
++static __always_inline _syscall0(gid_t, _dl_getegid);
+
+ #define __NR__dl_getpid __NR_getpid
+-static inline _syscall0(gid_t, _dl_getpid);
++static __always_inline _syscall0(gid_t, _dl_getpid);
+
+ #define __NR__dl_readlink __NR_readlink
+-static inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
++static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
+
+ #ifdef __NR_mmap
+ #ifdef MMAP_HAS_6_ARGS
+ #define __NR__dl_mmap __NR_mmap
+-static inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
++static __always_inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
+ int, prot, int, flags, int, fd, off_t, offset);
+ #else
+ #define __NR__dl_mmap_real __NR_mmap
+-static inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
++static __always_inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
+
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ unsigned long buffer[6];
+@@ -128,11 +128,12 @@ static inline void * _dl_mmap(void * add
+ #endif
+ #elif defined __NR_mmap2
+ #define __NR___syscall_mmap2 __NR_mmap2
+-static inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
++static __always_inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
+ size_t, len, int, prot, int, flags, int, fd, off_t, offset);
+ /*always 12, even on architectures where PAGE_SHIFT != 12 */
+ #define MMAP2_PAGE_SHIFT 12
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++#define MAP_FAILED ((void *) -1)
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
+Index: uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-debug.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-debug.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,45 @@
++/*
++ * AVR32 ELF shared libary loader support
++ *
++ * Copyright (C) 2005 Atmel Norway
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++static const char *_dl_reltypes_tab[] = {
++ "R_AVR32_NONE",
++ "R_AVR32_32", "R_AVR32_16", "R_AVR32_8",
++ "R_AVR32_32_PCREL", "R_AVR32_16_PCREL", "R_AVR32_8_PCREL",
++ "R_AVR32_DIFF32", "R_AVR32_DIFF16", "R_AVR32_DIFF8",
++ "R_AVR32_GOT32", "R_AVR32_GOT16", "R_AVR32_GOT8",
++ "R_AVR32_21S", "R_AVR32_16U", "R_AVR32_16S", "R_AVR32_8S", "R_AVR32_8S_EXT",
++ "R_AVR32_22H_PCREL", "R_AVR32_18W_PCREL", "R_AVR32_16B_PCREL",
++ "R_AVR32_16N_PCREL", "R_AVR32_14UW_PCREL", "R_AVR32_11H_PCREL",
++ "R_AVR32_10UW_PCREL", "R_AVR32_9H_PCREL", "R_AVR32_9UW_PCREL",
++ "R_AVR32_HI16", "R_AVR32_LO16",
++ "R_AVR32_GOTPC", "R_AVR32_GOTCALL", "R_AVR32_LDA_GOT",
++ "R_AVR32_GOT21S", "R_AVR32_GOT18SW", "R_AVR32_GOT16S", "R_AVR32_GOT7UW",
++ "R_AVR32_32_CPENT", "R_AVR32_CPCALL", "R_AVR32_16_CP", "R_AVR32_9W_CP",
++ "R_AVR32_RELATIVE", "R_AVR32_GLOB_DAT", "R_AVR32_JMP_SLOT",
++ "R_AVR32_ALIGN",
++};
+Index: uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-startup.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-startup.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,110 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * Architecture specific code used by dl-startup.c
++ * Copyright (C) 2005 Atmel Norway
++ */
++
++/* This is the library loader's main entry point. Let _dl_boot2 do its
++ * initializations and jump to the application's entry point
++ * afterwards. */
++asm( " .text\n"
++ " .global _start\n"
++ " .type _start,@function\n"
++ "_start:\n"
++ /* All arguments are on the stack initially */
++ " mov r12, sp\n"
++ " rcall _dl_start\n"
++ /* Returns user entry point in r12. Save it. */
++ " mov r0, r12\n"
++ /* We're PIC, so get the Global Offset Table */
++ " lddpc r6, .L_GOT\n"
++ ".L_RGOT:\n"
++ " rsub r6, pc\n"
++ /* Adjust argc and argv according to _dl_skip_args */
++ " ld.w r1, r6[_dl_skip_args@got]\n"
++ " ld.w r1, r1[0]\n"
++ " ld.w r2, sp++\n"
++ " sub r2, r1\n"
++ " add sp, sp, r1 << 2\n"
++ " st.w --sp, r2\n"
++ /* Load the finalizer function */
++ " ld.w r12, r6[_dl_fini@got]\n"
++ /* Jump to the user's entry point */
++ " mov pc, r0\n\n"
++
++ " .align 2\n"
++ ".L_GOT:"
++ " .long .L_RGOT - _GLOBAL_OFFSET_TABLE_\n"
++ " .size _start, . - _start\n"
++ " .previous\n");
++
++/* Get a pointer to the argv array. On many platforms this can be just
++ * the address if the first argument, on other platforms we need to
++ * do something a little more subtle here. */
++#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long *)ARGS + 1)
++
++
++/* We can't call functions before the GOT has been initialized */
++#define NO_FUNCS_BEFORE_BOOTSTRAP
++
++/*
++ * Relocate the GOT during dynamic loader bootstrap. This will add
++ * the load address to all entries in the GOT, which is necessary
++ * because the linker doesn't generate R_AVR32_RELATIVE relocs for the
++ * GOT.
++ */
++static __always_inline
++void PERFORM_BOOTSTRAP_GOT(struct elf_resolve *tpnt)
++{
++ Elf32_Addr i, nr_got;
++ register Elf32_Addr *__r6 __asm__("r6");
++ Elf32_Addr *got = __r6;
++
++ nr_got = tpnt->dynamic_info[DT_AVR32_GOTSZ_IDX] / sizeof(*got);
++ for (i = 2; i < nr_got; i++)
++ got[i] += tpnt->loadaddr;
++}
++
++#define PERFORM_BOOTSTRAP_GOT(tpnt) PERFORM_BOOTSTRAP_GOT(tpnt)
++
++/* Handle relocation of the symbols in the dynamic loader. */
++static __always_inline
++void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
++ unsigned long symbol_addr,
++ unsigned long load_addr, Elf32_Sym *symtab)
++{
++ switch(ELF32_R_TYPE(rpnt->r_info)) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr;
++ break;
++ case R_AVR32_RELATIVE:
++ SEND_STDERR_DEBUG("Applying RELATIVE relocation: ");
++ SEND_ADDRESS_STDERR_DEBUG(load_addr, 0);
++ SEND_STDERR_DEBUG(" + ");
++ SEND_ADDRESS_STDERR_DEBUG(rpnt->r_addend, 1);
++ *reloc_addr = load_addr + rpnt->r_addend;
++ break;
++ default:
++ SEND_STDERR("BOOTSTRAP_RELOC: unhandled reloc_type ");
++ SEND_NUMBER_STDERR(ELF32_R_TYPE(rpnt->r_info), 1);
++ SEND_STDERR("REL, SYMBOL, LOAD: ");
++ SEND_ADDRESS_STDERR(reloc_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(symbol_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(load_addr, 1);
++ _dl_exit(1);
++ }
++}
++
++/* Transfer control to the user's application, once the dynamic loader
++ * is done. This routine has to exit the current function, then call
++ * the _dl_elf_main function.
++ *
++ * Since our _dl_boot will simply call whatever is returned by
++ * _dl_boot2, we can just return the address we're supposed to
++ * call. */
++#define START() return _dl_elf_main;
+Index: uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-syscalls.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-syscalls.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,5 @@
++/* We can't use the real errno in ldso, since it has not yet
++ * been dynamicly linked in yet. */
++extern int _dl_errno;
++#define __set_errno(X) {(_dl_errno) = (X);}
++#include "sys/syscall.h"
+Index: uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-sysdep.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/ldso/ldso/avr32/dl-sysdep.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,103 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * Various assembly language/system dependent hacks that are required
++ * so that we can minimize the amount of platform specific code.
++ * Copyright (C) 2004-2005 Atmel Norway
++ */
++
++/* Define this if the system uses RELOCA. */
++#define ELF_USES_RELOCA
++
++#include <elf.h>
++
++#define ARCH_NUM 1
++#define DT_AVR32_GOTSZ_IDX (DT_NUM + OS_NUM)
++
++#define ARCH_DYNAMIC_INFO(dpnt, dynamic, debug_addr) \
++ do { \
++ if (dpnt->d_tag == DT_AVR32_GOTSZ) \
++ dynamic[DT_AVR32_GOTSZ_IDX] = dpnt->d_un.d_val; \
++ } while (0)
++
++/* Initialization sequence for the application/library GOT. */
++#define INIT_GOT(GOT_BASE,MODULE) \
++ do { \
++ unsigned long i, nr_got; \
++ \
++ GOT_BASE[0] = (unsigned long) _dl_linux_resolve; \
++ GOT_BASE[1] = (unsigned long) MODULE; \
++ \
++ /* Add load address displacement to all GOT entries */ \
++ nr_got = MODULE->dynamic_info[DT_AVR32_GOTSZ_IDX] / 4; \
++ for (i = 2; i < nr_got; i++) \
++ GOT_BASE[i] += (unsigned long)MODULE->loadaddr; \
++ } while (0)
++
++#define do_rem(result, n, base) ((result) = (n) % (base))
++
++/* Here we define the magic numbers that this dynamic loader should accept */
++#define MAGIC1 EM_AVR32
++#undef MAGIC2
++
++/* Used for error messages */
++#define ELF_TARGET "AVR32"
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got);
++
++/* 4096 bytes alignment */
++#define PAGE_ALIGN 0xfffff000
++#define ADDR_ALIGN 0xfff
++#define OFFS_ALIGN 0x7ffff000
++
++#define elf_machine_type_class(type) \
++ ((type == R_AVR32_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
++
++/* AVR32 doesn't need any COPY relocs */
++#define DL_NO_COPY_RELOCS
++
++/* Return the link-time address of _DYNAMIC. Conveniently, this is the
++ first element of the GOT. This must be inlined in a function which
++ uses global data. */
++static inline Elf32_Addr
++elf_machine_dynamic (void)
++{
++ register Elf32_Addr *got asm ("r6");
++ return *got;
++}
++
++/* Return the run-time load address of the shared object. */
++static inline Elf32_Addr
++elf_machine_load_address (void)
++{
++ extern void __dl_start asm("_dl_start");
++ Elf32_Addr got_addr = (Elf32_Addr) &__dl_start;
++ Elf32_Addr pcrel_addr;
++
++ asm (" lddpc %0, 2f\n"
++ "1: add %0, pc\n"
++ " rjmp 3f\n"
++ " .align 2\n"
++ "2: .long _dl_start - 1b\n"
++ "3:\n"
++ : "=r"(pcrel_addr) : : "cc");
++
++ return pcrel_addr - got_addr;
++}
++
++/*
++ * Perform any RELATIVE relocations specified by DT_RELCOUNT.
++ * Currently, we don't use that tag, but we might in the future as
++ * this would reduce the startup time somewhat (although probably not by much).
++ */
++static inline void
++elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
++ Elf32_Word relative_count)
++{
++ Elf32_Rela *rpnt = (void *)rel_addr;
++
++ do {
++ Elf32_Addr *reloc_addr;
++ reloc_addr = (void *)(load_off + (rpnt++)->r_offset);
++ *reloc_addr = load_off + rpnt->r_addend;
++ } while (--relative_count);
++}
+Index: uClibc-0.9.28-avr32/ldso/ldso/avr32/elfinterp.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/ldso/ldso/avr32/elfinterp.c 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,191 @@
++/*
++ * AVR32 ELF shared library loader suppport
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got)
++{
++ struct elf_resolve *tpnt = (struct elf_resolve *)got[1];
++ Elf32_Sym *sym;
++ unsigned long local_gotno;
++ unsigned long gotsym;
++ unsigned long new_addr;
++ char *strtab, *symname;
++ unsigned long *entry;
++ unsigned long sym_index = got_offset / 4;
++
++#if 0
++ local_gotno = tpnt->dynamic_info[DT_AVR32_LOCAL_GOTNO];
++ gotsym = tpnt->dynamic_info[DT_AVR32_GOTSYM];
++
++ sym = ((Elf32_Sym *)(tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr))
++ + sym_index;
++ strtab = (char *)(tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
++ symname = strtab + sym->st_name;
++
++#if 0
++ new_addr = (unsigned long) _dl_find_hash(strtab + sym->st_name,
++ tpnt->symbol_scope, tpnt,
++ resolver);
++#endif
++
++ entry = (unsigned long *)(got + local_gotno + sym_index - gotsym);
++ *entry = new_addr;
++#endif
++
++ return new_addr;
++}
++
++static int
++_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ unsigned long rel_addr, unsigned long rel_size,
++ int (*reloc_func)(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab))
++{
++ Elf32_Sym *symtab;
++ Elf32_Rela *rpnt;
++ char *strtab;
++ int i;
++
++ rpnt = (Elf32_Rela *)rel_addr;
++ rel_size /= sizeof(Elf32_Rela);
++ symtab = (Elf32_Sym *)tpnt->dynamic_info[DT_SYMTAB];
++ strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
++
++ for (i = 0; i < rel_size; i++, rpnt++) {
++ int symtab_index, res;
++
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++
++ debug_sym(symtab, strtab, symtab_index);
++ debug_reloc(symtab, strtab, rpnt);
++
++ res = reloc_func(tpnt, scope, rpnt, symtab, strtab);
++
++ if (res == 0)
++ continue;
++
++ _dl_dprintf(2, "\n%s: ", _dl_progname);
++
++ if (symtab_index)
++ _dl_dprintf(2, "symbol '%s': ",
++ strtab + symtab[symtab_index].st_name);
++
++ if (res < 0) {
++ int reloc_type = ELF32_R_TYPE(rpnt->r_info);
++#if defined(__SUPPORT_LD_DEBUG__)
++ _dl_dprintf(2, "can't handle reloc type %s\n",
++ _dl_reltypes(reloc_type));
++#else
++ _dl_dprintf(2, "can't handle reloc type %x\n",
++ reloc_type);
++#endif
++ _dl_exit(-res);
++ } else {
++ _dl_dprintf(2, "can't resolve symbol\n");
++ return res;
++ }
++ }
++
++ return 0;
++}
++
++static int _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab)
++{
++ int reloc_type;
++ int symtab_index;
++ char *symname;
++ unsigned long *reloc_addr;
++ unsigned long symbol_addr;
++#if defined(__SUPPORT_LD_DEBUG__)
++ unsigned long old_val;
++#endif
++
++ reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
++ reloc_type = ELF32_R_TYPE(rpnt->r_info);
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++ symbol_addr = 0;
++ symname = strtab + symtab[symtab_index].st_name;
++
++ if (symtab_index) {
++ symbol_addr = (unsigned long)
++ _dl_find_hash(strtab + symtab[symtab_index].st_name,
++ tpnt->symbol_scope, tpnt,
++ elf_machine_type_class(reloc_type));
++
++ /* Allow undefined references to weak symbols */
++ if (!symbol_addr &&
++ ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
++ _dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
++ _dl_progname, symname);
++ return 0;
++ }
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ old_val = *reloc_addr;
++#endif
++ switch (reloc_type) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr + rpnt->r_addend;
++ break;
++ case R_AVR32_RELATIVE:
++ *reloc_addr = (unsigned long)tpnt->loadaddr
++ + rpnt->r_addend;
++ break;
++ default:
++ return -1;
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ if (_dl_debug_reloc && _dl_debug_detail)
++ _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
++ old_val, *reloc_addr);
++#endif
++
++ return 0;
++}
++
++void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ /* TODO: Might want to support this in order to get faster
++ * startup times... */
++}
++
++int _dl_parse_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size,
++ _dl_do_reloc);
++}
+Index: uClibc-0.9.28-avr32/ldso/ldso/avr32/resolve.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/ldso/ldso/avr32/resolve.S 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,28 @@
++/*
++ * Linux dynamic resolving code for AVR32. Fixes up the GOT entry as
++ * indicated in register r12 and jumps to the resolved address.
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ *
++ * Copyright (C) 2004 Atmel Norway
++ */
++
++#define ip r5
++
++ .text
++ .global _dl_linux_resolve
++ .type _dl_linux_resolve,@function
++_dl_linux_resolve:
++ /* The PLT code pushed r8 for us. It contains the address of this
++ function's GOT entry, that is entry 0. ip contains the address
++ of the GOT entry of the function we wanted to call. */
++ stm --sp, r9-r12, lr
++ mov r11, r8
++ sub r12, ip, r8
++ rcall _dl_linux_resolver
++ mov ip, r12
++ popm r8-r12,lr
++ mov pc, ip
++ .size _dl_linux_resolve, . - _dl_linux_resolve
+Index: uClibc-0.9.28-avr32/ldso/ldso/dl-startup.c
+===================================================================
+--- uClibc-0.9.28-avr32.orig/ldso/ldso/dl-startup.c 2006-10-19 15:05:48.000000000 +0200
++++ uClibc-0.9.28-avr32/ldso/ldso/dl-startup.c 2006-10-19 15:05:52.000000000 +0200
+@@ -217,7 +217,9 @@ static void * __attribute_used__ _dl_sta
+ /* some arches (like MIPS) we have to tweak the GOT before relocations */
+ PERFORM_BOOTSTRAP_GOT(tpnt);
+
+-#else
++#endif
++
++#if !defined(PERFORM_BOOTSTRAP_GOT) || defined(__avr32__)
+
+ /* OK, now do the relocations. We do not do a lazy binding here, so
+ that once we are done, we have considerably more flexibility. */
+@@ -259,7 +261,7 @@ static void * __attribute_used__ _dl_sta
+ rel_addr += relative_count * sizeof(ELF_RELOC);;
+ }
+
+- rpnt = (ELF_RELOC *) (rel_addr + load_addr);
++ rpnt = (ELF_RELOC *) (rel_addr /* + load_addr */);
+ for (i = 0; i < rel_size; i += sizeof(ELF_RELOC), rpnt++) {
+ reloc_addr = (unsigned long *) (load_addr + (unsigned long) rpnt->r_offset);
+ symtab_index = ELF_R_SYM(rpnt->r_info);
+Index: uClibc-0.9.28-avr32/utils/ldd.c
+===================================================================
+--- uClibc-0.9.28-avr32.orig/utils/ldd.c 2006-10-19 15:05:48.000000000 +0200
++++ uClibc-0.9.28-avr32/utils/ldd.c 2006-10-19 15:05:52.000000000 +0200
+@@ -56,6 +56,11 @@
+ #define ELFCLASSM ELFCLASS32
+ #endif
+
++#if defined(__avr32__)
++#define MATCH_MACHINE(x) (x == EM_AVR32)
++#define ELFCLASSM ELFCLASS32
++#endif
++
+ #if defined(__s390__)
+ #define MATCH_MACHINE(x) (x == EM_S390)
+ #define ELFCLASSM ELFCLASS32
+Index: uClibc-0.9.28-avr32/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.28-avr32/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h 2006-10-19 15:05:52.000000000 +0200
+@@ -0,0 +1,92 @@
++/* Machine-dependent pthreads configuration and inline functions.
++
++ Copyright (C) 2005 Atmel Norway
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++#ifndef _PT_MACHINE_H
++#define _PT_MACHINE_H 1
++
++#include <features.h>
++
++static inline int
++_test_and_set (int *p, int v) __THROW
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline test and set */\n"
++ "1: ssrf 5\n"
++ " ld.w %0, %2\n"
++ " tst %0, %3\n"
++ " breq 2f\n"
++ " stcond %1, %3\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=m"(*p)
++ : "m"(*p), "r"(v)
++ : "memory", "cc");
++
++ return result;
++}
++
++#ifndef PT_EI
++# define PT_EI extern inline
++#endif
++
++extern long int testandset (int *spinlock);
++extern int __compare_and_swap (long int *p, long int oldval, long int newval);
++
++/* Spinlock implementation; required. */
++PT_EI long int
++testandset (int *spinlock)
++{
++ return _test_and_set(spinlock, 1);
++}
++
++
++/* Get some notion of the current stack. Need not be exactly the top
++ of the stack, just something somewhere in the current frame. */
++#define CURRENT_STACK_FRAME stack_pointer
++register char * stack_pointer __asm__ ("sp");
++
++/* Compare-and-swap for semaphores. */
++
++#define HAS_COMPARE_AND_SWAP
++PT_EI int
++__compare_and_swap(long int *p, long int oldval, long int newval)
++{
++ long int result, tmp;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %1, %3\n"
++ " cp.w %1, %5\n"
++ " sreq %0\n"
++ " brne 2f\n"
++ " stcond %2, %4\n"
++ " brne 1b\n"
++ "2:"
++ : "=&r"(result), "=&r"(tmp), "=m"(*p)
++ : "m"(*p), "r"(newval), "r"(oldval)
++ : "cc", "memory");
++
++ return result;
++}
++
++#endif /* pt-machine.h */
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/uClibc.config b/packages/uclibc/uclibc-0.9.28/avr32/uClibc.config
index c59defd311..478c713cb8 100644
--- a/packages/uclibc/uclibc-0.9.28/avr32/uClibc.config
+++ b/packages/uclibc/uclibc-0.9.28/avr32/uClibc.config
@@ -32,23 +32,6 @@ ARCH_SUPPORTS_BIG_ENDIAN=y
UCLIBC_COMPLETELY_PIC=y
CONFIG_AP7000=y
LINKRELAX=y
-# CONFIG_GENERIC_386 is not set
-# CONFIG_386 is not set
-# CONFIG_486 is not set
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_PENTIUMII is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_ELAN is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_WINCHIPC6 is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_CYRIXIII is not set
-# CONFIG_NEHEMIAH is not set
# ARCH_LITTLE_ENDIAN is not set
ARCH_BIG_ENDIAN=y
# ARCH_HAS_NO_MMU is not set
@@ -57,7 +40,7 @@ UCLIBC_HAS_FLOATS=y
# HAS_FPU is not set
UCLIBC_HAS_SOFT_FLOAT=y
DO_C99_MATH=y
-KERNEL_SOURCE="/usr/src/linux"
+KERNEL_SOURCE="/media/hda4/OE/build/tmp-new/angstrom/cross/avr32-angstrom-linux-uclibc"
C_SYMBOL_PREFIX=""
HAVE_DOT_CONFIG=y
@@ -86,7 +69,7 @@ UCLIBC_STATIC_LDCONFIG=y
# MALLOC is not set
# MALLOC_SIMPLE is not set
MALLOC_STANDARD=y
-# MALLOC_GLIBC_COMPAT is not set
+MALLOC_GLIBC_COMPAT=y
UCLIBC_DYNAMIC_ATEXIT=y
HAS_SHADOW=y
UNIX98PTY_ONLY=y
@@ -102,6 +85,7 @@ UCLIBC_TZ_FILE_PATH="/etc/TZ"
#
UCLIBC_HAS_IPV6=y
UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
#
# String and Stdio Support
@@ -113,11 +97,10 @@ UCLIBC_HAS_CTYPE_SIGNED=y
UCLIBC_HAS_CTYPE_UNSAFE=y
# UCLIBC_HAS_CTYPE_CHECKED is not set
# UCLIBC_HAS_CTYPE_ENFORCED is not set
-# UCLIBC_HAS_WCHAR is not set
+UCLIBC_HAS_WCHAR=y
# UCLIBC_HAS_LOCALE is not set
# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set
# UCLIBC_HAS_GLIBC_CUSTOM_PRINTF is not set
-# USE_OLD_VFPRINTF is not set
UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set
# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
@@ -155,9 +138,9 @@ UCLIBC_HAS_GLOB=y
#
# Library Installation Options
#
-SHARED_LIB_LOADER_PREFIX="$(DEVEL_PREFIX)/lib"
-RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/"
-DEVEL_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
#
# uClibc security related options
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-kernheaders.spec b/packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-kernheaders.spec
new file mode 100644
index 0000000000..7d5541cf5a
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-kernheaders.spec
@@ -0,0 +1,41 @@
+Name: uclibc-avr32-kernheaders
+Version: 2.6
+Release: 9
+License: GPL
+Group: Development/System
+Summary: AVR32 header files from the Linux kernel for use by uClibc
+BuildRoot: %{_tmppath}/uclibc-kernheaders-root
+Source: linux-2.6.16.tar.bz2
+Source1: linux-dot-config
+Patch0: linux-2.6.16.11.patch
+Patch1: linux-2.6.16.11-avr32-20060626.patch
+
+%description
+uclibc-avr32-kernheaders contain C header files from the Linux kernel
+which are necessary for building the uClibc library. These header
+files are also necessary for developing programs which use the standard
+C libraries.
+
+If you are developing programs which wil use the standard C libraries,
+you should install uclibc-avr32-kernheaders.
+
+%prep
+%setup -q -n linux-2.6.16
+%patch0 -p1
+%patch1 -p1
+cp %{SOURCE1} .config
+
+%build
+make prepare-all ARCH=avr32 CROSS_COMPILE=avr32-linux-
+
+%install
+mkdir -p %{buildroot}/usr/avr32-linux/include
+cp -a include/{linux,asm,asm-avr32,asm-generic} %{buildroot}/usr/avr32-linux/include
+
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root)
+/usr/avr32-linux/include
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-no-msoft-float.patch b/packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-no-msoft-float.patch
new file mode 100644
index 0000000000..0813c456b7
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/uclibc-avr32-no-msoft-float.patch
@@ -0,0 +1,14 @@
+--- uClibc-0.9.28/Rules.mak.orig 2006-03-30 10:23:05.000000000 +0200
++++ uClibc-0.9.28/Rules.mak 2006-03-30 10:23:07.000000000 +0200
+@@ -272,7 +272,11 @@
+ # If -msoft-float isn't supported, we want an error anyway.
+ # Hmm... might need to revisit this for arm since it has 2 different
+ # soft float encodings.
++ifeq ($(strip $(TARGET_ARCH)),avr32)
++# GCC on avr32 doesn't support -msoft-float, it's the default.
++else
+ CPU_CFLAGS += -msoft-float
++endif
+ ifeq ($(strip $(TARGET_ARCH)),arm)
+ # No longer needed with current toolchains, but leave it here for now.
+ # If anyone is actually still using gcc 2.95 (say), they can uncomment it.
diff --git a/packages/uclibc/uclibc-0.9.28/avr32/uclibc-makefile.patch b/packages/uclibc/uclibc-0.9.28/avr32/uclibc-makefile.patch
new file mode 100644
index 0000000000..97ed73471f
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.28/avr32/uclibc-makefile.patch
@@ -0,0 +1,16 @@
+Index: uclibc/Makefile
+===================================================================
+RCS file: /disk1/ic_group/design/I9980/REPOSITORY/I7413/source/uclibc/Makefile,v
+retrieving revision 1.1.1.3
+diff -u -r1.1.1.3 Makefile
+--- uclibc/Makefile 31 Aug 2005 13:08:25 -0000 1.1.1.3
++++ uclibc/Makefile 7 Dec 2005 06:38:39 -0000
+@@ -163,7 +163,7 @@
+ else \
+ extra_exclude="" ; \
+ fi ; \
+- tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \
++ tar -chf - --exclude .svn --exclude CVS $$extra_exclude include \
+ | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX)
+ ifneq ($(strip $(UCLIBC_HAS_FLOATS)),y)
+ # Remove floating point related headers since float support is disabled.
diff --git a/packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine b/packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine
index cef409289c..0c565238e5 100644
--- a/packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine
+++ b/packages/uclibc/uclibc-0.9.29/bfin/uClibc.machine
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Fri Aug 10 19:05:32 2007
+# Sat Oct 20 20:22:28 2007
#
# TARGET_alpha is not set
# TARGET_arm is not set
@@ -33,11 +33,10 @@ TARGET_ARCH="bfin"
FORCE_OPTIONS_FOR_ARCH=y
TARGET_SUBARCH=""
# UCLIBC_FORMAT_ELF is not set
-# UCLIBC_FORMAT_FDPIC_ELF is not set
+UCLIBC_FORMAT_FDPIC_ELF=y
# UCLIBC_FORMAT_FLAT is not set
# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
-UCLIBC_FORMAT_SHARED_FLAT=y
-UCLIBC_SHARED_FLAT_ID=1
+# UCLIBC_FORMAT_SHARED_FLAT is not set
ARCH_LITTLE_ENDIAN=y
#
@@ -50,8 +49,8 @@ ARCH_HAS_NO_MMU=y
#
UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
-DO_C99_MATH=y
-KERNEL_HEADERS="/media/hda4/OE/build/tmp-new/angstrom/cross/bfin-angstrom-uclinux-uclibc/include"
+# DO_C99_MATH is not set
+KERNEL_HEADERS="/usr/include"
# UCLIBC_UCLINUX_BROKEN_MUNMAP is not set
EXCLUDE_BRK=y
HAVE_DOT_CONFIG=y
@@ -60,12 +59,22 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
# HAVE_NO_PIC is not set
-# DOPIC is not set
-HAVE_NO_SHARED=y
-ARCH_HAS_NO_LDSO=y
+DOPIC=y
+# HAVE_NO_SHARED is not set
+# ARCH_HAS_NO_LDSO is not set
+HAVE_SHARED=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+UCLIBC_STATIC_LDCONFIG=y
+LDSO_RUNPATH=y
UCLIBC_CTOR_DTOR=y
# HAS_NO_THREADS is not set
-# UCLIBC_HAS_THREADS is not set
+UCLIBC_HAS_THREADS=y
+# PTHREADS_DEBUG_SUPPORT is not set
+LINUXTHREADS_OLD=y
UCLIBC_HAS_LFS=y
MALLOC=y
# MALLOC_SIMPLE is not set
@@ -73,24 +82,24 @@ MALLOC=y
# MALLOC_GLIBC_COMPAT is not set
UCLIBC_DYNAMIC_ATEXIT=y
# COMPAT_ATEXIT is not set
-UCLIBC_SUSV3_LEGACY=y
-UCLIBC_SUSV3_LEGACY_MACROS=y
-# UCLIBC_HAS_SHADOW is not set
+# UCLIBC_SUSV3_LEGACY is not set
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_HAS_SHADOW=y
# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
UCLIBC_HAS___PROGNAME=y
UNIX98PTY_ONLY=y
ASSUME_DEVPTS=y
UCLIBC_HAS_TM_EXTENSIONS=y
-# UCLIBC_HAS_TZ_CACHING is not set
-# UCLIBC_HAS_TZ_FILE is not set
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
#
# Networking Support
#
# UCLIBC_HAS_IPV6 is not set
-UCLIBC_HAS_RPC=y
-UCLIBC_HAS_FULL_RPC=y
-UCLIBC_HAS_REENTRANT_RPC=y
+# UCLIBC_HAS_RPC is not set
# UCLIBC_USE_NETLINK is not set
#
@@ -103,18 +112,19 @@ UCLIBC_HAS_CTYPE_SIGNED=y
UCLIBC_HAS_CTYPE_UNSAFE=y
# UCLIBC_HAS_CTYPE_CHECKED is not set
# UCLIBC_HAS_CTYPE_ENFORCED is not set
-UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_WCHAR is not set
# UCLIBC_HAS_LOCALE is not set
# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set
# UCLIBC_HAS_GLIBC_CUSTOM_PRINTF is not set
+# USE_OLD_VFPRINTF is not set
UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set
# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
-UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
@@ -149,8 +159,9 @@ UCLIBC_HAS_GLOB=y
#
# Library Installation Options
#
-RUNTIME_PREFIX="/"
-DEVEL_PREFIX="//usr"
+SHARED_LIB_LOADER_PREFIX="$(RUNTIME_PREFIX)lib"
+RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/"
+DEVEL_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
MULTILIB=""
#
@@ -159,16 +170,21 @@ MULTILIB=""
# UCLIBC_HAS_ARC4RANDOM is not set
# HAVE_NO_SSP is not set
# UCLIBC_HAS_SSP is not set
-# UCLIBC_BUILD_NOEXECSTACK is not set
+UCLIBC_BUILD_RELRO=y
+# UCLIBC_BUILD_NOW is not set
+UCLIBC_BUILD_NOEXECSTACK=y
#
# uClibc development/debugging options
#
-CROSS_COMPILER_PREFIX="bfin-elf-"
+CROSS_COMPILER_PREFIX=""
UCLIBC_EXTRA_CFLAGS=""
# DODEBUG is not set
-# DOSTRIP is not set
+# DODEBUG_PT is not set
+DOSTRIP=y
# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
# UCLIBC_MALLOC_DEBUGGING is not set
WARNINGS="-Wall"
# EXTRA_WARNINGS is not set
diff --git a/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-002-atmel.1.patch b/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-002-atmel.1.patch
new file mode 100644
index 0000000000..d275ac2302
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-002-atmel.1.patch
@@ -0,0 +1,3546 @@
+diff --git a/Rules.mak b/Rules.mak
+index d054bbb..55381cf 100644
+--- a/Rules.mak
++++ b/Rules.mak
+@@ -313,6 +313,12 @@ ifeq ($(TARGET_ARCH),frv)
+ UCLIBC_LDSO=ld.so.1
+ endif
+
++ifeq ($(strip $(TARGET_ARCH)),avr32)
++ CPU_CFLAGS-$(CONFIG_AVR32_AP7) += -march=ap
++ CPU_CFLAGS-$(CONFIG_LINKRELAX) += -mrelax
++ CPU_LDFLAGS-$(CONFIG_LINKRELAX) += --relax
++endif
++
+ # Keep the check_gcc from being needlessly executed
+ ifndef PIEFLAG
+ ifneq ($(UCLIBC_BUILD_PIE),y)
+diff --git a/extra/Configs/Config.avr32 b/extra/Configs/Config.avr32
+new file mode 100644
+index 0000000..8d70e6e
+--- /dev/null
++++ b/extra/Configs/Config.avr32
+@@ -0,0 +1,31 @@
++#
++# For a description of the syntax of this configuration file,
++# see extra/config/Kconfig-language.txt
++#
++
++config TARGET_ARCH
++ string
++ default "avr32"
++
++config FORCE_OPTIONS_FOR_ARCH
++ bool
++ default y
++ select ARCH_BIG_ENDIAN
++ select FORCE_SHAREABLE_TEXT_SEGMENTS
++
++config ARCH_CFLAGS
++ string
++
++choice
++ prompt "Target CPU Type"
++ default CONFIG_AVR32_AP7
++
++config CONFIG_AVR32_AP7
++ bool "AVR32 AP7"
++ select ARCH_HAS_MMU
++
++endchoice
++
++config LINKRELAX
++ bool "Enable linker optimizations"
++ default y
+diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
+index 8eab394..10c9f7b 100644
+--- a/extra/Configs/Config.in
++++ b/extra/Configs/Config.in
+@@ -16,6 +16,9 @@ config TARGET_alpha
+ config TARGET_arm
+ bool "arm"
+
++config TARGET_avr32
++ bool "avr32"
++
+ config TARGET_bfin
+ bool "bfin"
+
+@@ -92,6 +95,10 @@ if TARGET_arm
+ source "extra/Configs/Config.arm"
+ endif
+
++if TARGET_avr32
++source "extra/Configs/Config.avr32"
++endif
++
+ if TARGET_bfin
+ source "extra/Configs/Config.bfin"
+ endif
+diff --git a/extra/Configs/defconfigs/avr32 b/extra/Configs/defconfigs/avr32
+new file mode 100644
+index 0000000..0b890a2
+--- /dev/null
++++ b/extra/Configs/defconfigs/avr32
+@@ -0,0 +1 @@
++TARGET_avr32=y
+diff --git a/include/elf.h b/include/elf.h
+index 19805d7..ab90160 100644
+--- a/include/elf.h
++++ b/include/elf.h
+@@ -354,6 +354,8 @@ typedef struct
+ /* NIOS magic number - no EABI available. */
+ #define EM_NIOS32 0xFEBB
+
++#define EM_AVR32 0x18ad
++
+ /* V850 backend magic number. Written in the absense of an ABI. */
+ #define EM_CYGNUS_V850 0x9080
+
+@@ -2828,6 +2830,55 @@ typedef Elf32_Addr Elf32_Conflict;
+ /* Keep this the last entry. */
+ #define R_V850_NUM 25
+
++/* Atmel AVR32 relocations. */
++#define R_AVR32_NONE 0
++#define R_AVR32_32 1
++#define R_AVR32_16 2
++#define R_AVR32_8 3
++#define R_AVR32_32_PCREL 4
++#define R_AVR32_16_PCREL 5
++#define R_AVR32_8_PCREL 6
++#define R_AVR32_DIFF32 7
++#define R_AVR32_DIFF16 8
++#define R_AVR32_DIFF8 9
++#define R_AVR32_GOT32 10
++#define R_AVR32_GOT16 11
++#define R_AVR32_GOT8 12
++#define R_AVR32_21S 13
++#define R_AVR32_16U 14
++#define R_AVR32_16S 15
++#define R_AVR32_8S 16
++#define R_AVR32_8S_EXT 17
++#define R_AVR32_22H_PCREL 18
++#define R_AVR32_18W_PCREL 19
++#define R_AVR32_16B_PCREL 20
++#define R_AVR32_16N_PCREL 21
++#define R_AVR32_14UW_PCREL 22
++#define R_AVR32_11H_PCREL 23
++#define R_AVR32_10UW_PCREL 24
++#define R_AVR32_9H_PCREL 25
++#define R_AVR32_9UW_PCREL 26
++#define R_AVR32_HI16 27
++#define R_AVR32_LO16 28
++#define R_AVR32_GOTPC 29
++#define R_AVR32_GOTCALL 30
++#define R_AVR32_LDA_GOT 31
++#define R_AVR32_GOT21S 32
++#define R_AVR32_GOT18SW 33
++#define R_AVR32_GOT16S 34
++#define R_AVR32_GOT7UW 35
++#define R_AVR32_32_CPENT 36
++#define R_AVR32_CPCALL 37
++#define R_AVR32_16_CP 38
++#define R_AVR32_9W_CP 39
++#define R_AVR32_RELATIVE 40
++#define R_AVR32_GLOB_DAT 41
++#define R_AVR32_JMP_SLOT 42
++#define R_AVR32_ALIGN 43
++#define R_AVR32_NUM 44
++
++/* AVR32 dynamic tags */
++#define DT_AVR32_GOTSZ 0x70000001 /* Total size of GOT in bytes */
+
+ /* Renesas H8/300 Relocations */
+ #define R_H8_NONE 0
+diff --git a/ldso/include/dl-string.h b/ldso/include/dl-string.h
+index 32c5bf8..eb43bd9 100644
+--- a/ldso/include/dl-string.h
++++ b/ldso/include/dl-string.h
+@@ -285,7 +285,8 @@ static __always_inline char * _dl_simple_ltoahex(char * local, unsigned long i)
+ /* On some arches constant strings are referenced through the GOT.
+ * This requires that load_addr must already be defined... */
+ #if defined(mc68000) || defined(__arm__) || defined(__thumb__) || \
+- defined(__mips__) || defined(__sh__) || defined(__powerpc__)
++ defined(__mips__) || defined(__sh__) || defined(__powerpc__) || \
++ defined(__avr32__)
+ # define CONSTANT_STRING_GOT_FIXUP(X) \
+ if ((X) < (const char *) load_addr) (X) += load_addr
+ # define NO_EARLY_SEND_STDERR
+diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h
+index b42416a..4404219 100644
+--- a/ldso/include/dl-syscall.h
++++ b/ldso/include/dl-syscall.h
+@@ -55,69 +55,69 @@
+ dynamic linking at all, so we cannot return any error codes.
+ We just punt if there is an error. */
+ #define __NR__dl_exit __NR_exit
+-static inline _syscall1(void, _dl_exit, int, status);
++static __always_inline _syscall1(void, _dl_exit, int, status);
+
+ #define __NR__dl_close __NR_close
+-static inline _syscall1(int, _dl_close, int, fd);
++static __always_inline _syscall1(int, _dl_close, int, fd);
+
+ #define __NR__dl_open __NR_open
+-static inline _syscall3(int, _dl_open, const char *, fn, int, flags,
++static __always_inline _syscall3(int, _dl_open, const char *, fn, int, flags,
+ __kernel_mode_t, mode);
+
+ #define __NR__dl_write __NR_write
+-static inline _syscall3(unsigned long, _dl_write, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_write, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_read __NR_read
+-static inline _syscall3(unsigned long, _dl_read, int, fd,
++static __always_inline _syscall3(unsigned long, _dl_read, int, fd,
+ const void *, buf, unsigned long, count);
+
+ #define __NR__dl_mprotect __NR_mprotect
+-static inline _syscall3(int, _dl_mprotect, const void *, addr,
++static __always_inline _syscall3(int, _dl_mprotect, const void *, addr,
+ unsigned long, len, int, prot);
+
+ #define __NR__dl_stat __NR_stat
+-static inline _syscall2(int, _dl_stat, const char *, file_name,
++static __always_inline _syscall2(int, _dl_stat, const char *, file_name,
+ struct stat *, buf);
+
+ #define __NR__dl_fstat __NR_fstat
+-static inline _syscall2(int, _dl_fstat, int, fd, struct stat *, buf);
++static __always_inline _syscall2(int, _dl_fstat, int, fd, struct stat *, buf);
+
+ #define __NR__dl_munmap __NR_munmap
+-static inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
++static __always_inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
+
+ #ifdef __NR_getxuid
+ # define __NR_getuid __NR_getxuid
+ #endif
+ #define __NR__dl_getuid __NR_getuid
+-static inline _syscall0(uid_t, _dl_getuid);
++static __always_inline _syscall0(uid_t, _dl_getuid);
+
+ #ifndef __NR_geteuid
+ # define __NR_geteuid __NR_getuid
+ #endif
+ #define __NR__dl_geteuid __NR_geteuid
+-static inline _syscall0(uid_t, _dl_geteuid);
++static __always_inline _syscall0(uid_t, _dl_geteuid);
+
+ #ifdef __NR_getxgid
+ # define __NR_getgid __NR_getxgid
+ #endif
+ #define __NR__dl_getgid __NR_getgid
+-static inline _syscall0(gid_t, _dl_getgid);
++static __always_inline _syscall0(gid_t, _dl_getgid);
+
+ #ifndef __NR_getegid
+ # define __NR_getegid __NR_getgid
+ #endif
+ #define __NR__dl_getegid __NR_getegid
+-static inline _syscall0(gid_t, _dl_getegid);
++static __always_inline _syscall0(gid_t, _dl_getegid);
+
+ #ifdef __NR_getxpid
+ # define __NR_getpid __NR_getxpid
+ #endif
+ #define __NR__dl_getpid __NR_getpid
+-static inline _syscall0(gid_t, _dl_getpid);
++static __always_inline _syscall0(gid_t, _dl_getpid);
+
+ #define __NR__dl_readlink __NR_readlink
+-static inline _syscall3(int, _dl_readlink, const char *, path, char *, buf,
++static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf,
+ size_t, bufsiz);
+
+ #ifdef __UCLIBC_HAS_SSP__
+@@ -146,14 +146,14 @@ static inline _syscall2(int, _dl_gettimeofday, struct timeval *, tv,
+ #if defined(__UCLIBC_MMAP_HAS_6_ARGS__) && defined(__NR_mmap)
+
+ # define __NR__dl_mmap __NR_mmap
+-static inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
++static __always_inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
+ int, prot, int, flags, int, fd, off_t, offset);
+
+ /* then try mmap2() */
+ #elif defined(__NR_mmap2)
+
+ # define __NR___syscall_mmap2 __NR_mmap2
+-static inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr, size_t, len,
++static __always_inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr, size_t, len,
+ int, prot, int, flags, int, fd, off_t, offset);
+
+ /* Some architectures always use 12 as page shift for mmap2() eventhough the
+@@ -164,7 +164,7 @@ static inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr, size_t, len,
+ # define MMAP2_PAGE_SHIFT 12
+ #endif
+
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
+@@ -177,8 +177,8 @@ static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ #elif defined(__NR_mmap)
+
+ # define __NR__dl_mmap_real __NR_mmap
+-static inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
+-static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
++static __always_inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
++static __always_inline void * _dl_mmap(void * addr, unsigned long size, int prot,
+ int flags, int fd, unsigned long offset)
+ {
+ unsigned long buffer[6];
+diff --git a/ldso/ldso/avr32/dl-debug.h b/ldso/ldso/avr32/dl-debug.h
+new file mode 100644
+index 0000000..fe35539
+--- /dev/null
++++ b/ldso/ldso/avr32/dl-debug.h
+@@ -0,0 +1,45 @@
++/*
++ * AVR32 ELF shared libary loader support
++ *
++ * Copyright (C) 2005-2007 Atmel Corporation
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++static const char *_dl_reltypes_tab[] = {
++ "R_AVR32_NONE",
++ "R_AVR32_32", "R_AVR32_16", "R_AVR32_8",
++ "R_AVR32_32_PCREL", "R_AVR32_16_PCREL", "R_AVR32_8_PCREL",
++ "R_AVR32_DIFF32", "R_AVR32_DIFF16", "R_AVR32_DIFF8",
++ "R_AVR32_GOT32", "R_AVR32_GOT16", "R_AVR32_GOT8",
++ "R_AVR32_21S", "R_AVR32_16U", "R_AVR32_16S", "R_AVR32_8S", "R_AVR32_8S_EXT",
++ "R_AVR32_22H_PCREL", "R_AVR32_18W_PCREL", "R_AVR32_16B_PCREL",
++ "R_AVR32_16N_PCREL", "R_AVR32_14UW_PCREL", "R_AVR32_11H_PCREL",
++ "R_AVR32_10UW_PCREL", "R_AVR32_9H_PCREL", "R_AVR32_9UW_PCREL",
++ "R_AVR32_HI16", "R_AVR32_LO16",
++ "R_AVR32_GOTPC", "R_AVR32_GOTCALL", "R_AVR32_LDA_GOT",
++ "R_AVR32_GOT21S", "R_AVR32_GOT18SW", "R_AVR32_GOT16S", "R_AVR32_GOT7UW",
++ "R_AVR32_32_CPENT", "R_AVR32_CPCALL", "R_AVR32_16_CP", "R_AVR32_9W_CP",
++ "R_AVR32_RELATIVE", "R_AVR32_GLOB_DAT", "R_AVR32_JMP_SLOT",
++ "R_AVR32_ALIGN",
++};
+diff --git a/ldso/ldso/avr32/dl-startup.h b/ldso/ldso/avr32/dl-startup.h
+new file mode 100644
+index 0000000..3b9a641
+--- /dev/null
++++ b/ldso/ldso/avr32/dl-startup.h
+@@ -0,0 +1,112 @@
++/*
++ * Architecture specific code used by dl-startup.c
++ *
++ * Copyright (C) 2005-2007 Atmel Corporation
++ *
++ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
++ */
++
++/* This is the library loader's main entry point. Let _dl_boot2 do its
++ * initializations and jump to the application's entry point
++ * afterwards. */
++asm( " .text\n"
++ " .global _start\n"
++ " .type _start,@function\n"
++ "_start:\n"
++ /* All arguments are on the stack initially */
++ " mov r12, sp\n"
++ " rcall _dl_start\n"
++ /* Returns user entry point in r12. Save it. */
++ " mov r0, r12\n"
++ /* We're PIC, so get the Global Offset Table */
++ " lddpc r6, .L_GOT\n"
++ ".L_RGOT:\n"
++ " rsub r6, pc\n"
++ /* Adjust argc and argv according to _dl_skip_args */
++ " ld.w r1, r6[_dl_skip_args@got]\n"
++ " ld.w r1, r1[0]\n"
++ " ld.w r2, sp++\n"
++ " sub r2, r1\n"
++ " add sp, sp, r1 << 2\n"
++ " st.w --sp, r2\n"
++ /* Load the finalizer function */
++ " ld.w r12, r6[_dl_fini@got]\n"
++ /* Jump to the user's entry point */
++ " mov pc, r0\n\n"
++
++ " .align 2\n"
++ ".L_GOT:"
++ " .long .L_RGOT - _GLOBAL_OFFSET_TABLE_\n"
++ " .size _start, . - _start\n"
++ " .previous\n");
++
++/* Get a pointer to the argv array. On many platforms this can be just
++ * the address if the first argument, on other platforms we need to
++ * do something a little more subtle here. */
++#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long *)ARGS + 1)
++
++
++/* We can't call functions before the GOT has been initialized */
++#define NO_FUNCS_BEFORE_BOOTSTRAP
++
++/*
++ * Relocate the GOT during dynamic loader bootstrap. This will add
++ * the load address to all entries in the GOT, which is necessary
++ * because the linker doesn't generate R_AVR32_RELATIVE relocs for the
++ * GOT.
++ */
++static __always_inline
++void PERFORM_BOOTSTRAP_GOT(struct elf_resolve *tpnt)
++{
++ Elf32_Addr i, nr_got;
++ register Elf32_Addr *__r6 __asm__("r6");
++ Elf32_Addr *got = __r6;
++
++ nr_got = tpnt->dynamic_info[DT_AVR32_GOTSZ_IDX] / sizeof(*got);
++ for (i = 2; i < nr_got; i++)
++ got[i] += tpnt->loadaddr;
++}
++
++#define PERFORM_BOOTSTRAP_GOT(tpnt) PERFORM_BOOTSTRAP_GOT(tpnt)
++
++/* Handle relocation of the symbols in the dynamic loader. */
++static __always_inline
++void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
++ unsigned long symbol_addr,
++ unsigned long load_addr, Elf32_Sym *symtab)
++{
++ switch(ELF32_R_TYPE(rpnt->r_info)) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr;
++ break;
++ case R_AVR32_RELATIVE:
++ SEND_STDERR_DEBUG("Applying RELATIVE relocation: ");
++ SEND_ADDRESS_STDERR_DEBUG(load_addr, 0);
++ SEND_STDERR_DEBUG(" + ");
++ SEND_ADDRESS_STDERR_DEBUG(rpnt->r_addend, 1);
++ *reloc_addr = load_addr + rpnt->r_addend;
++ break;
++ default:
++ SEND_STDERR("BOOTSTRAP_RELOC: unhandled reloc_type ");
++ SEND_NUMBER_STDERR(ELF32_R_TYPE(rpnt->r_info), 1);
++ SEND_STDERR("REL, SYMBOL, LOAD: ");
++ SEND_ADDRESS_STDERR(reloc_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(symbol_addr, 0);
++ SEND_STDERR(", ");
++ SEND_ADDRESS_STDERR(load_addr, 1);
++ _dl_exit(1);
++ }
++}
++
++/* Transfer control to the user's application, once the dynamic loader
++ * is done. This routine has to exit the current function, then call
++ * the _dl_elf_main function.
++ *
++ * Since our _dl_boot will simply call whatever is returned by
++ * _dl_boot2, we can just return the address we're supposed to
++ * call. */
++#define START() return _dl_elf_main;
+diff --git a/ldso/ldso/avr32/dl-syscalls.h b/ldso/ldso/avr32/dl-syscalls.h
+new file mode 100644
+index 0000000..996bb87
+--- /dev/null
++++ b/ldso/ldso/avr32/dl-syscalls.h
+@@ -0,0 +1,6 @@
++/* We can't use the real errno in ldso, since it has not yet
++ * been dynamicly linked in yet. */
++#include "sys/syscall.h"
++extern int _dl_errno;
++#undef __set_errno
++#define __set_errno(X) {(_dl_errno) = (X);}
+diff --git a/ldso/ldso/avr32/dl-sysdep.h b/ldso/ldso/avr32/dl-sysdep.h
+new file mode 100644
+index 0000000..1a30172
+--- /dev/null
++++ b/ldso/ldso/avr32/dl-sysdep.h
+@@ -0,0 +1,105 @@
++/*
++ * Various assembly language/system dependent hacks that are required
++ * so that we can minimize the amount of platform specific code.
++ *
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
++ */
++
++/* Define this if the system uses RELOCA. */
++#define ELF_USES_RELOCA
++
++#include <elf.h>
++
++#define ARCH_NUM 1
++#define DT_AVR32_GOTSZ_IDX (DT_NUM + OS_NUM)
++
++#define ARCH_DYNAMIC_INFO(dpnt, dynamic, debug_addr) \
++ do { \
++ if (dpnt->d_tag == DT_AVR32_GOTSZ) \
++ dynamic[DT_AVR32_GOTSZ_IDX] = dpnt->d_un.d_val; \
++ } while (0)
++
++/* Initialization sequence for the application/library GOT. */
++#define INIT_GOT(GOT_BASE,MODULE) \
++ do { \
++ unsigned long i, nr_got; \
++ \
++ GOT_BASE[0] = (unsigned long) _dl_linux_resolve; \
++ GOT_BASE[1] = (unsigned long) MODULE; \
++ \
++ /* Add load address displacement to all GOT entries */ \
++ nr_got = MODULE->dynamic_info[DT_AVR32_GOTSZ_IDX] / 4; \
++ for (i = 2; i < nr_got; i++) \
++ GOT_BASE[i] += (unsigned long)MODULE->loadaddr; \
++ } while (0)
++
++#define do_rem(result, n, base) ((result) = (n) % (base))
++
++/* Here we define the magic numbers that this dynamic loader should accept */
++#define MAGIC1 EM_AVR32
++#undef MAGIC2
++
++/* Used for error messages */
++#define ELF_TARGET "AVR32"
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got);
++
++/* 4096 bytes alignment */
++#define PAGE_ALIGN 0xfffff000
++#define ADDR_ALIGN 0xfff
++#define OFFS_ALIGN 0x7ffff000
++
++#define elf_machine_type_class(type) \
++ ((type == R_AVR32_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
++
++/* AVR32 doesn't need any COPY relocs */
++#define DL_NO_COPY_RELOCS
++
++/* Return the link-time address of _DYNAMIC. Conveniently, this is the
++ first element of the GOT. This must be inlined in a function which
++ uses global data. */
++static inline Elf32_Addr
++elf_machine_dynamic (void)
++{
++ register Elf32_Addr *got asm ("r6");
++ return *got;
++}
++
++/* Return the run-time load address of the shared object. */
++static inline Elf32_Addr
++elf_machine_load_address (void)
++{
++ extern void __dl_start asm("_dl_start");
++ Elf32_Addr got_addr = (Elf32_Addr) &__dl_start;
++ Elf32_Addr pcrel_addr;
++
++ asm (" lddpc %0, 2f\n"
++ "1: add %0, pc\n"
++ " rjmp 3f\n"
++ " .align 2\n"
++ "2: .long _dl_start - 1b\n"
++ "3:\n"
++ : "=r"(pcrel_addr) : : "cc");
++
++ return pcrel_addr - got_addr;
++}
++
++/*
++ * Perform any RELATIVE relocations specified by DT_RELCOUNT.
++ * Currently, we don't use that tag, but we might in the future as
++ * this would reduce the startup time somewhat (although probably not by much).
++ */
++static inline void
++elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
++ Elf32_Word relative_count)
++{
++ Elf32_Rela *rpnt = (void *)rel_addr;
++
++ do {
++ Elf32_Addr *reloc_addr;
++ reloc_addr = (void *)(load_off + (rpnt++)->r_offset);
++ *reloc_addr = load_off + rpnt->r_addend;
++ } while (--relative_count);
++}
+diff --git a/ldso/ldso/avr32/elfinterp.c b/ldso/ldso/avr32/elfinterp.c
+new file mode 100644
+index 0000000..196292b
+--- /dev/null
++++ b/ldso/ldso/avr32/elfinterp.c
+@@ -0,0 +1,191 @@
++/*
++ * AVR32 ELF shared library loader suppport
++ *
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. The name of the above contributors may not be
++ * used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got)
++{
++ struct elf_resolve *tpnt = (struct elf_resolve *)got[1];
++ Elf32_Sym *sym;
++ unsigned long local_gotno;
++ unsigned long gotsym;
++ unsigned long new_addr;
++ char *strtab, *symname;
++ unsigned long *entry;
++ unsigned long sym_index = got_offset / 4;
++
++#if 0
++ local_gotno = tpnt->dynamic_info[DT_AVR32_LOCAL_GOTNO];
++ gotsym = tpnt->dynamic_info[DT_AVR32_GOTSYM];
++
++ sym = ((Elf32_Sym *)(tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr))
++ + sym_index;
++ strtab = (char *)(tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
++ symname = strtab + sym->st_name;
++
++#if 0
++ new_addr = (unsigned long) _dl_find_hash(strtab + sym->st_name,
++ tpnt->symbol_scope, tpnt,
++ resolver);
++#endif
++
++ entry = (unsigned long *)(got + local_gotno + sym_index - gotsym);
++ *entry = new_addr;
++#endif
++
++ return new_addr;
++}
++
++static int
++_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ unsigned long rel_addr, unsigned long rel_size,
++ int (*reloc_func)(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab))
++{
++ Elf32_Sym *symtab;
++ Elf32_Rela *rpnt;
++ char *strtab;
++ int i;
++
++ rpnt = (Elf32_Rela *)rel_addr;
++ rel_size /= sizeof(Elf32_Rela);
++ symtab = (Elf32_Sym *)tpnt->dynamic_info[DT_SYMTAB];
++ strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
++
++ for (i = 0; i < rel_size; i++, rpnt++) {
++ int symtab_index, res;
++
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++
++ debug_sym(symtab, strtab, symtab_index);
++ debug_reloc(symtab, strtab, rpnt);
++
++ res = reloc_func(tpnt, scope, rpnt, symtab, strtab);
++
++ if (res == 0)
++ continue;
++
++ _dl_dprintf(2, "\n%s: ", _dl_progname);
++
++ if (symtab_index)
++ _dl_dprintf(2, "symbol '%s': ",
++ strtab + symtab[symtab_index].st_name);
++
++ if (res < 0) {
++ int reloc_type = ELF32_R_TYPE(rpnt->r_info);
++#if defined(__SUPPORT_LD_DEBUG__)
++ _dl_dprintf(2, "can't handle reloc type %s\n",
++ _dl_reltypes(reloc_type));
++#else
++ _dl_dprintf(2, "can't handle reloc type %x\n",
++ reloc_type);
++#endif
++ _dl_exit(-res);
++ } else {
++ _dl_dprintf(2, "can't resolve symbol\n");
++ return res;
++ }
++ }
++
++ return 0;
++}
++
++static int _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
++ Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab)
++{
++ int reloc_type;
++ int symtab_index;
++ char *symname;
++ unsigned long *reloc_addr;
++ unsigned long symbol_addr;
++#if defined(__SUPPORT_LD_DEBUG__)
++ unsigned long old_val;
++#endif
++
++ reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
++ reloc_type = ELF32_R_TYPE(rpnt->r_info);
++ symtab_index = ELF32_R_SYM(rpnt->r_info);
++ symbol_addr = 0;
++ symname = strtab + symtab[symtab_index].st_name;
++
++ if (symtab_index) {
++ symbol_addr = (unsigned long)
++ _dl_find_hash(strtab + symtab[symtab_index].st_name,
++ tpnt->symbol_scope, tpnt,
++ elf_machine_type_class(reloc_type));
++
++ /* Allow undefined references to weak symbols */
++ if (!symbol_addr &&
++ ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
++ _dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
++ _dl_progname, symname);
++ return 0;
++ }
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ old_val = *reloc_addr;
++#endif
++ switch (reloc_type) {
++ case R_AVR32_NONE:
++ break;
++ case R_AVR32_GLOB_DAT:
++ case R_AVR32_JMP_SLOT:
++ *reloc_addr = symbol_addr + rpnt->r_addend;
++ break;
++ case R_AVR32_RELATIVE:
++ *reloc_addr = (unsigned long)tpnt->loadaddr
++ + rpnt->r_addend;
++ break;
++ default:
++ return -1;
++ }
++
++#if defined(__SUPPORT_LD_DEBUG__)
++ if (_dl_debug_reloc && _dl_debug_detail)
++ _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
++ old_val, *reloc_addr);
++#endif
++
++ return 0;
++}
++
++void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ /* TODO: Might want to support this in order to get faster
++ * startup times... */
++}
++
++int _dl_parse_relocation_information(struct dyn_elf *rpnt,
++ unsigned long rel_addr,
++ unsigned long rel_size)
++{
++ return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size,
++ _dl_do_reloc);
++}
+diff --git a/ldso/ldso/avr32/resolve.S b/ldso/ldso/avr32/resolve.S
+new file mode 100644
+index 0000000..e3cb7f4
+--- /dev/null
++++ b/ldso/ldso/avr32/resolve.S
+@@ -0,0 +1,28 @@
++/*
++ * Linux dynamic resolving code for AVR32. Fixes up the GOT entry as
++ * indicated in register r12 and jumps to the resolved address.
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ *
++ * Copyright (C) 2004-2007 Atmel Corporation
++ */
++
++#define ip r5
++
++ .text
++ .global _dl_linux_resolve
++ .type _dl_linux_resolve,@function
++_dl_linux_resolve:
++ /* The PLT code pushed r8 for us. It contains the address of this
++ function's GOT entry, that is entry 0. ip contains the address
++ of the GOT entry of the function we wanted to call. */
++ stm --sp, r9-r12, lr
++ mov r11, r8
++ sub r12, ip, r8
++ rcall _dl_linux_resolver
++ mov ip, r12
++ popm r8-r12,lr
++ mov pc, ip
++ .size _dl_linux_resolve, . - _dl_linux_resolve
+diff --git a/ldso/ldso/dl-startup.c b/ldso/ldso/dl-startup.c
+index 5cf1d04..d4294ec 100644
+--- a/ldso/ldso/dl-startup.c
++++ b/ldso/ldso/dl-startup.c
+@@ -217,7 +217,9 @@ DL_START(unsigned long args)
+ /* some arches (like MIPS) we have to tweak the GOT before relocations */
+ PERFORM_BOOTSTRAP_GOT(tpnt);
+
+-#else
++#endif
++
++#if !defined(PERFORM_BOOTSTRAP_GOT) || defined(__avr32__)
+
+ /* OK, now do the relocations. We do not do a lazy binding here, so
+ that once we are done, we have considerably more flexibility. */
+diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
+index f4e6cac..9cdc3fe 100644
+--- a/libc/inet/resolv.c
++++ b/libc/inet/resolv.c
+@@ -1643,7 +1643,7 @@ int attribute_hidden __read_etc_hosts_r(FILE * fp, const char * name, int type,
+ *result=result_buf;
+ ret=NETDB_SUCCESS;
+ #ifdef __UCLIBC_HAS_IPV6__
+- } else if (type == AF_INET6 && inet_pton(AF_INET6, alias[0], in6) > 0) {
++ } else if (type == AF_INET6 && inet_pton(AF_INET6, alias[0], in6) > 0) {
+ DPRINTF("Found INET6\n");
+ addr_list6[0] = in6;
+ addr_list6[1] = 0;
+@@ -1658,8 +1658,8 @@ int attribute_hidden __read_etc_hosts_r(FILE * fp, const char * name, int type,
+ } else {
+ DPRINTF("Error\n");
+ ret=TRY_AGAIN;
+- break; /* bad ip address */
+- }
++ continue; /* bad ip address, keep searching */
++ }
+
+ if (action!=GETHOSTENT) {
+ fclose(fp);
+diff --git a/libc/string/avr32/Makefile b/libc/string/avr32/Makefile
+new file mode 100644
+index 0000000..e19e9d9
+--- /dev/null
++++ b/libc/string/avr32/Makefile
+@@ -0,0 +1,26 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++top_srcdir := ../../../
++top_builddir := ../../../
++
++all: objs
++
++include $(top_builddir)Rules.mak
++include ../Makefile.in
++include $(top_srcdir)Makerules
+diff --git a/libc/string/avr32/bcopy.S b/libc/string/avr32/bcopy.S
+new file mode 100644
+index 0000000..87c1e04
+--- /dev/null
++++ b/libc/string/avr32/bcopy.S
+@@ -0,0 +1,26 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#include <features.h>
++
++#ifdef __UCLIBC_SUSV3_LEGACY__
++
++ .text
++ .global bcopy
++ .type bcopy, @function
++ .align 1
++bcopy:
++ /* Swap the first two arguments */
++ eor r11, r12
++ eor r12, r11
++ eor r11, r12
++ rjmp __GI_memmove
++
++ .size bcopy, . - bcopy
++
++#endif /* __UCLIBC_SUSV3_LEGACY__ */
+diff --git a/libc/string/avr32/bzero.S b/libc/string/avr32/bzero.S
+new file mode 100644
+index 0000000..c999e65
+--- /dev/null
++++ b/libc/string/avr32/bzero.S
+@@ -0,0 +1,22 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#ifdef __UCLIBC_SUSV3_LEGACY__
++
++ .text
++ .global bzero
++ .type bzero, @function
++ .align 1
++bzero:
++ mov r10, r11
++ mov r11, 0
++ rjmp __memset
++
++ .size bzero, . - bzero
++
++#endif /* __UCLIBC_SUSV3_LEGACY__ */
+diff --git a/libc/string/avr32/memcmp.S b/libc/string/avr32/memcmp.S
+new file mode 100644
+index 0000000..ae6cc91
+--- /dev/null
++++ b/libc/string/avr32/memcmp.S
+@@ -0,0 +1,61 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#include <features.h>
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global memcmp
++ .type memcmp, @function
++ .align 1
++memcmp:
++ sub len, 4
++ brlt .Lless_than_4
++
++1: ld.w r8, s1++
++ ld.w r9, s2++
++ cp.w r8, r9
++ brne .Lfound_word
++ sub len, 4
++ brge 1b
++
++.Lless_than_4:
++ sub len, -4
++ reteq 0
++
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ retne r8
++ sub len, 1
++ brgt 1b
++
++ retal 0
++
++.Lfound_word:
++ mov len, 4
++
++2: bfextu r11, r9, 24, 8
++ bfextu r12, r8, 24, 8
++ sub r12, r11
++ retne r12
++ lsl r8, 8
++ lsl r9, 8
++ sub len, 1
++ brne 2b
++ retal r12
++
++ .size memcmp, . - memcmp
++
++libc_hidden_def(memcmp)
++#ifdef __UCLIBC_SUSV3_LEGACY__
++strong_alias(memcmp,bcmp)
++#endif
+diff --git a/libc/string/avr32/memcpy.S b/libc/string/avr32/memcpy.S
+new file mode 100644
+index 0000000..bf091ab
+--- /dev/null
++++ b/libc/string/avr32/memcpy.S
+@@ -0,0 +1,111 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++/* Don't use r12 as dst since we must return it unmodified */
++#define dst r9
++#define src r11
++#define len r10
++
++ .text
++ .global memcpy
++ .type memcpy, @function
++memcpy:
++ pref src[0]
++ mov dst, r12
++
++ /* If we have less than 32 bytes, don't do anything fancy */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, src++
++ st.b dst++, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, dst
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ ldm src, r0-r7
++ sub src, -32
++ stm dst, r0-r7
++ sub dst, -32
++ sub len, 32
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ ldm src, r0-r3
++ sub src, -16
++ sub len, 16
++ stm dst, r0-r3
++ sub dst, -16
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++ neg len
++ add pc, pc, len << 2
++ .rept 15
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ rsub r8, r8, 32
++ sub len, r8
++1: ld.ub r0, src++
++ st.b dst++, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[0]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, src++
++ st.w dst++, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, src++
++ st.b dst++, r0
++ .endr
++
++ popm r0-r7, pc
++ .size memcpy, . - memcpy
++
++libc_hidden_def(memcpy)
+diff --git a/libc/string/avr32/memmove.S b/libc/string/avr32/memmove.S
+new file mode 100644
+index 0000000..98287c5
+--- /dev/null
++++ b/libc/string/avr32/memmove.S
+@@ -0,0 +1,116 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#define dst r12
++#define src r11
++#define len r10
++
++ .text
++ .global memmove
++ .type memmove, @function
++memmove:
++ cp.w src, dst
++ brge __GI_memcpy
++
++ add dst, len
++ add src, len
++ pref src[-1]
++
++ /*
++ * The rest is basically the same as in memcpy.S except that
++ * the direction is reversed.
++ */
++ cp.w len, 32
++ brge .Lmore_than_31
++
++ sub len, 1
++ retlt r12
++1: ld.ub r8, --src
++ st.b --dst, r8
++ sub len, 1
++ brge 1b
++ retal r12
++
++.Lmore_than_31:
++ pushm r0-r7, lr
++
++ /* Check alignment */
++ mov r8, src
++ andl r8, 31, COH
++ brne .Lunaligned_src
++ mov r8, r12
++ andl r8, 3, COH
++ brne .Lunaligned_dst
++
++.Laligned_copy:
++ sub len, 32
++ brlt .Lless_than_32
++
++1: /* Copy 32 bytes at a time */
++ sub src, 32
++ ldm src, r0-r7
++ sub dst, 32
++ sub len, 32
++ stm dst, r0-r7
++ brge 1b
++
++.Lless_than_32:
++ /* Copy 16 more bytes if possible */
++ sub len, -16
++ brlt .Lless_than_16
++ sub src, 16
++ ldm src, r0-r3
++ sub dst, 16
++ sub len, 16
++ stm dst, r0-r3
++
++.Lless_than_16:
++ /* Do the remaining as byte copies */
++ sub len, -16
++ breq 2f
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub len, 1
++ brne 1b
++
++2: popm r0-r7, pc
++
++.Lunaligned_src:
++ /* Make src cacheline-aligned. r8 = (src & 31) */
++ sub len, r8
++1: ld.ub r0, --src
++ st.b --dst, r0
++ sub r8, 1
++ brne 1b
++
++ /* If dst is word-aligned, we're ready to go */
++ pref src[-4]
++ mov r8, 3
++ tst dst, r8
++ breq .Laligned_copy
++
++.Lunaligned_dst:
++ /* src is aligned, but dst is not. Expect bad performance */
++ sub len, 4
++ brlt 2f
++1: ld.w r0, --src
++ st.w --dst, r0
++ sub len, 4
++ brge 1b
++
++2: neg len
++ add pc, pc, len << 2
++ .rept 3
++ ld.ub r0, --src
++ st.b --dst, r0
++ .endr
++
++ popm r0-r7, pc
++ .size memmove, . - memmove
++
++libc_hidden_def(memmove)
+diff --git a/libc/string/avr32/memset.S b/libc/string/avr32/memset.S
+new file mode 100644
+index 0000000..33cfaed
+--- /dev/null
++++ b/libc/string/avr32/memset.S
+@@ -0,0 +1,70 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#include <features.h>
++
++#define s r12
++#define c r11
++#define n r10
++
++ .text
++ .global memset
++ .type memset, @function
++
++ .global __memset
++ .hidden __memset
++ .type __memset, @function
++
++ .align 1
++memset:
++__memset:
++ cp.w n, 32
++ mov r9, s
++ brge .Llarge_memset
++
++ sub n, 1
++ retlt s
++1: st.b s++, c
++ sub n, 1
++ brge 1b
++
++ retal r9
++
++.Llarge_memset:
++ mov r8, r11
++ mov r11, 3
++ bfins r8, r8, 8, 8
++ bfins r8, r8, 16, 16
++ tst s, r11
++ breq 2f
++
++1: st.b s++, r8
++ sub n, 1
++ tst s, r11
++ brne 1b
++
++2: mov r11, r9
++ mov r9, r8
++ sub n, 8
++
++3: st.d s++, r8
++ sub n, 8
++ brge 3b
++
++ /* If we are done, n == -8 and we'll skip all st.b insns below */
++ neg n
++ lsl n, 1
++ add pc, n
++ .rept 7
++ st.b s++, r8
++ .endr
++ retal r11
++
++ .size memset, . - memset
++
++libc_hidden_def(memset)
+diff --git a/libc/string/avr32/strcmp.S b/libc/string/avr32/strcmp.S
+new file mode 100644
+index 0000000..f73bd43
+--- /dev/null
++++ b/libc/string/avr32/strcmp.S
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#include <features.h>
++
++#define s1 r12
++#define s2 r11
++#define len r10
++
++ .text
++ .global strcmp
++ .type strcmp, @function
++ .align 1
++strcmp:
++ mov r8, 3
++ tst s1, r8
++ brne .Lunaligned_s1
++ tst s2, r8
++ brne .Lunaligned_s2
++
++1: ld.w r8, s1++
++ ld.w r9, s2++
++ cp.w r8, r9
++ brne 2f
++ tnbz r8
++ brne 1b
++ retal 0
++
++2: bfextu r12, r8, 24, 8
++ bfextu r11, r9, 24, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 16, 8
++ bfextu r11, r9, 16, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 8, 8
++ bfextu r11, r9, 8, 8
++ sub r12, r11
++ retne r12
++ cp.w r11, 0
++ reteq 0
++ bfextu r12, r8, 0, 8
++ bfextu r11, r9, 0, 8
++ sub r12, r11
++ retal r12
++
++.Lunaligned_s1:
++3: tst s1, r8
++ breq 4f
++ ld.ub r10, s1++
++ ld.ub r9, s2++
++ sub r10, r9
++ retne r10
++ cp.w r9, 0
++ brne 3b
++ retal r10
++
++4: tst s2, r8
++ breq 1b
++
++.Lunaligned_s2:
++ /*
++ * s1 and s2 can't both be aligned, and unaligned word loads
++ * can trigger spurious exceptions if we cross a page boundary.
++ * Do it the slow way...
++ */
++1: ld.ub r8, s1++
++ ld.ub r9, s2++
++ sub r8, r9
++ retne r8
++ cp.w r9, 0
++ brne 1b
++ retal 0
++
++ .size strcmp, . - strcmp
++
++libc_hidden_def(strcmp)
++#ifndef __UCLIBC_HAS_LOCALE__
++strong_alias(strcmp, strcoll)
++libc_hidden_def(strcoll)
++#endif
+diff --git a/libc/string/avr32/strlen.S b/libc/string/avr32/strlen.S
+new file mode 100644
+index 0000000..5223e53
+--- /dev/null
++++ b/libc/string/avr32/strlen.S
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#include <features.h>
++
++#define str r12
++
++ .text
++ .global strlen
++ .type strlen, @function
++strlen:
++ mov r11, r12
++
++ mov r9, str
++ andl r9, 3, COH
++ brne .Lunaligned_str
++
++1: ld.w r8, str++
++ tnbz r8
++ brne 1b
++
++ sub r12, r11
++ bfextu r9, r8, 24, 8
++ cp.w r9, 0
++ subeq r12, 4
++ reteq r12
++ bfextu r9, r8, 16, 8
++ cp.w r9, 0
++ subeq r12, 3
++ reteq r12
++ bfextu r9, r8, 8, 8
++ cp.w r9, 0
++ subeq r12, 2
++ reteq r12
++ sub r12, 1
++ retal r12
++
++.Lunaligned_str:
++ add pc, pc, r9 << 3
++ sub r0, r0, 0 /* 4-byte nop */
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ breq 1f
++ ld.ub r8, str++
++ sub r8, r8, 0
++ brne 1b
++
++1: sub r12, 1
++ sub r12, r11
++ retal r12
++
++ .size strlen, . - strlen
++
++libc_hidden_def(strlen)
+diff --git a/libc/sysdeps/linux/avr32/Makefile b/libc/sysdeps/linux/avr32/Makefile
+new file mode 100644
+index 0000000..338abc0
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/Makefile
+@@ -0,0 +1,25 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU Library General Public License as published by the Free
++# Software Foundation; either version 2 of the License, or (at your option) any
++# later version.
++#
++# 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 Library General Public License for more
++# details.
++#
++# You should have received a copy of the GNU Library 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
++
++top_srcdir=../../../../
++top_builddir=../../../../
++all: objs
++
++include $(top_builddir)Rules.mak
++include Makefile.arch
++include $(top_srcdir)Makerules
+diff --git a/libc/sysdeps/linux/avr32/Makefile.arch b/libc/sysdeps/linux/avr32/Makefile.arch
+new file mode 100644
+index 0000000..44fc01e
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/Makefile.arch
+@@ -0,0 +1,13 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
++#
++# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
++#
++
++CSRC := brk.c clone.c mmap.c sigaction.c
++
++SSRC := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
++ sigrestorer.S syscall.S vfork.S
++
++include $(top_srcdir)/libc/sysdeps/linux/Makefile.commonarch
+diff --git a/libc/sysdeps/linux/avr32/__longjmp.S b/libc/sysdeps/linux/avr32/__longjmp.S
+new file mode 100644
+index 0000000..6154bb2
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/__longjmp.S
+@@ -0,0 +1,21 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++ .global __longjmp
++ .type __longjmp,"function"
++ .align 1
++__longjmp:
++ ldm r12++, r0-r8,sp,lr
++ mustr r8 /* restore status register (lower half) */
++ cp r11, 0 /* can't return zero */
++ frs
++ moveq r11, 1
++ retal r11
++ .size __longjmp, . - __longjmp
++
++libc_hidden_def(__longjmp)
+diff --git a/libc/sysdeps/linux/avr32/bits/atomic.h b/libc/sysdeps/linux/avr32/bits/atomic.h
+new file mode 100644
+index 0000000..e6be41f
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/atomic.h
+@@ -0,0 +1,120 @@
++/*
++ * Copyright (C) 2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#ifndef _AVR32_BITS_ATOMIC_H
++#define _AVR32_BITS_ATOMIC_H 1
++
++#include <inttypes.h>
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ (abort(), 0)
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ (abort(), 0)
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ ({ \
++ __typeof__(*(mem)) __prev; \
++ __asm__ __volatile__( \
++ "/* __arch_compare_and_exchange_val_32_acq */\n" \
++ "1: ssrf 5\n" \
++ " ld.w %[result], %[m]\n" \
++ " cp.w %[result], %[old]\n" \
++ " brne 2f\n" \
++ " stcond %[m], %[new]\n" \
++ " brne 1b\n" \
++ "2:" \
++ : [result] "=&r"(__result), [m] "=m"(*(mem)) \
++ : "m"(*(mem)), [old] "ir"(oldval), \
++ [new] "r"(newval) \
++ : "memory", "cc"); \
++ __prev; \
++ })
++
++#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ (abort(), 0)
++
++#define __arch_exchange_32_acq(mem, newval) \
++ ({ \
++ __typeof__(*(mem)) __oldval; \
++ __asm__ __volatile__( \
++ "/*__arch_exchange_32_acq */\n" \
++ " xchg %[old], %[m], %[new]" \
++ : [old] "=&r"(__oldval) \
++ : [m] "r"(mem), [new] "r"(newval) \
++ : "memory"); \
++ __oldval; \
++ })
++
++#define __arch_atomic_exchange_and_add_32(mem, value) \
++ ({ \
++ __typeof__(*(mem)) __oldval, __tmp; \
++ __asm__ __volatile__( \
++ "/* __arch_atomic_exchange_and_add_32 */\n" \
++ "1: ssrf 5\n" \
++ " ld.w %[old], %[m]\n" \
++ " add %[tmp], %[old], %[val]\n" \
++ " stcond %[m], %[tmp]\n" \
++ " brne 1b" \
++ : [old] "=&r"(__oldval), [tmp] "=&r"(__tmp), \
++ [m] "=m"(*(mem)) \
++ : "m"(*(mem)), [val] "r"(value) \
++ : "memory", "cc"); \
++ __oldval; \
++ })
++
++#define __arch_atomic_decrement_if_positive_32(mem) \
++ ({ \
++ __typeof__(*(mem)) __oldval, __tmp; \
++ __asm__ __volatile__( \
++ "/* __arch_atomic_decrement_if_positive_32 */\n" \
++ "1: ssrf 5\n" \
++ " ld.w %[old], %[m]\n" \
++ " sub %[tmp], %[old], 1\n" \
++ " brlt 2f\n" \
++ " stcond %[m], %[tmp]\n" \
++ " brne 1b" \
++ "2:" \
++ : [old] "=&r"(__oldval), [tmp] "=&r"(__tmp), \
++ [m] "=m"(*(mem)) \
++ : "m"(*(mem)) \
++ : "memory", "cc"); \
++ __oldval; \
++ })
++
++#define atomic_exchange_acq(mem, newval) \
++ ({ \
++ if (sizeof(*(mem)) != 4) \
++ abort(); \
++ __arch_exchange_32_acq(mem, newval); \
++ })
++
++#define atomic_exchange_and_add(mem, newval) \
++ ({ \
++ if (sizeof(*(mem)) != 4) \
++ abort(); \
++ __arch_atomic_exchange_and_add_32(mem, newval); \
++ })
++
++#define atomic_decrement_if_positive(mem) \
++ ({ \
++ if (sizeof(*(mem)) != 4) \
++ abort(); \
++ __arch_atomic_decrement_if_positive_32(mem); \
++ })
++
++#endif /* _AVR32_BITS_ATOMIC_H */
+diff --git a/libc/sysdeps/linux/avr32/bits/byteswap.h b/libc/sysdeps/linux/avr32/bits/byteswap.h
+new file mode 100644
+index 0000000..1c030b9
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/byteswap.h
+@@ -0,0 +1,70 @@
++/*
++ * Copyright (C) 2005 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
++# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
++#endif
++
++#ifndef _BITS_BYTESWAP_H
++#define _BITS_BYTESWAP_H 1
++
++/* Swap bytes in 16 bit value. */
++#if defined __GNUC__
++# define __bswap_16(x) (__extension__ __builtin_bswap_16(x))
++#else
++/* This is better than nothing. */
++static __inline unsigned short int
++__bswap_16 (unsigned short int __bsx)
++{
++ return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8));
++}
++#endif
++
++/* Swap bytes in 32 bit value. */
++#if defined __GNUC__
++# define __bswap_32(x) (__extension__ __builtin_bswap_32(x))
++#else
++static __inline unsigned int
++__bswap_32 (unsigned int __bsx)
++{
++ return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) |
++ (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24));
++}
++#endif
++
++#if defined __GNUC__
++/* Swap bytes in 64 bit value. */
++# define __bswap_constant_64(x) \
++ ((((x) & 0xff00000000000000ull) >> 56) \
++ | (((x) & 0x00ff000000000000ull) >> 40) \
++ | (((x) & 0x0000ff0000000000ull) >> 24) \
++ | (((x) & 0x000000ff00000000ull) >> 8) \
++ | (((x) & 0x00000000ff000000ull) << 8) \
++ | (((x) & 0x0000000000ff0000ull) << 24) \
++ | (((x) & 0x000000000000ff00ull) << 40) \
++ | (((x) & 0x00000000000000ffull) << 56))
++
++# define __bswap_64(x) \
++ (__extension__ \
++ ({ \
++ union { \
++ __extension__ unsigned long long int __ll; \
++ unsigned int __l[2]; \
++ } __w, __r; \
++ if (__builtin_constant_p(x)) \
++ __r.__ll = __bswap_constant_64(x); \
++ else { \
++ __w.__ll = (x); \
++ __r.__l[0] = __bswap_32(__w.__l[1]); \
++ __r.__l[1] = __bswap_32(__w.__l[0]); \
++ } \
++ __r.__ll; \
++ }))
++#endif
++
++#endif /* _BITS_BYTESWAP_H */
+diff --git a/libc/sysdeps/linux/avr32/bits/endian.h b/libc/sysdeps/linux/avr32/bits/endian.h
+new file mode 100644
+index 0000000..7bb6358
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/endian.h
+@@ -0,0 +1,7 @@
++/* AVR32 is big-endian */
++
++#ifndef _ENDIAN_H
++# error "Never use <bits/endian.h> directly; include <endian.h> instead."
++#endif
++
++#define __BYTE_ORDER __BIG_ENDIAN
+diff --git a/libc/sysdeps/linux/avr32/bits/fcntl.h b/libc/sysdeps/linux/avr32/bits/fcntl.h
+new file mode 100644
+index 0000000..1abff17
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/fcntl.h
+@@ -0,0 +1,165 @@
++#ifndef _FCNTL_H
++# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
++#endif
++
++#include <sys/types.h>
++
++/*
++ * open/fcntl - O_SYNC is only implemented on blocks devices and on files
++ * located on an ext2 file system
++ */
++#define O_ACCMODE 00000003
++#define O_RDONLY 00000000
++#define O_WRONLY 00000001
++#define O_RDWR 00000002
++#define O_CREAT 00000100 /* not fcntl */
++#define O_EXCL 00000200 /* not fcntl */
++#define O_NOCTTY 00000400 /* not fcntl */
++#define O_TRUNC 00001000 /* not fcntl */
++#define O_APPEND 00002000
++#define O_NONBLOCK 00004000
++#define O_NDELAY O_NONBLOCK
++#define O_SYNC 00010000
++#define O_ASYNC 00020000
++
++#ifdef __USE_GNU
++# define O_DIRECT 00040000 /* must be a directory */
++# define O_DIRECTORY 00200000 /* direct disk access */
++# define O_NOFOLLOW 00400000 /* don't follow links */
++# define O_NOATIME 01000000 /* don't set atime */
++#endif
++
++#ifdef __USE_LARGEFILE64
++# define O_LARGEFILE 00100000
++#endif
++
++/* For now Linux has synchronisity options for data and read operations.
++ We define the symbols here but let them do the same as O_SYNC since
++ this is a superset. */
++#if defined __USE_POSIX199309 || defined __USE_UNIX98
++# define O_DSYNC O_SYNC /* Synchronize data. */
++# define O_RSYNC O_SYNC /* Synchronize read operations. */
++#endif
++
++#define F_DUPFD 0 /* dup */
++#define F_GETFD 1 /* get close_on_exec */
++#define F_SETFD 2 /* set/clear close_on_exec */
++#define F_GETFL 3 /* get file->f_flags */
++#define F_SETFL 4 /* set file->f_flags */
++
++#ifndef __USE_FILE_OFFSET64
++# define F_GETLK 5
++# define F_SETLK 6
++# define F_SETLKW 7
++#else
++# define F_GETLK F_GETLK64
++# define F_SETLK F_SETLK64
++# define F_SETLKW F_SETLKW64
++#endif
++#define F_GETLK64 12 /* using 'struct flock64' */
++#define F_SETLK64 13
++#define F_SETLKW64 14
++
++#if defined __USE_BSD || defined __USE_XOPEN2K
++# define F_SETOWN 8 /* for sockets. */
++# define F_GETOWN 9 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETSIG 10 /* for sockets. */
++# define F_GETSIG 11 /* for sockets. */
++#endif
++
++#ifdef __USE_GNU
++# define F_SETLEASE 1024 /* Set a lease. */
++# define F_GETLEASE 1025 /* Enquire what lease is active. */
++# define F_NOTIFY 1026 /* Request notfications on a directory. */
++#endif
++
++/* for F_[GET|SET]FL */
++#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
++
++/* for posix fcntl() and lockf() */
++#define F_RDLCK 0
++#define F_WRLCK 1
++#define F_UNLCK 2
++
++/* for old implementation of bsd flock () */
++#define F_EXLCK 4 /* or 3 */
++#define F_SHLCK 8 /* or 4 */
++
++/* for leases */
++#define F_INPROGRESS 16
++
++#ifdef __USE_BSD
++/* operations for bsd flock(), also used by the kernel implementation */
++# define LOCK_SH 1 /* shared lock */
++# define LOCK_EX 2 /* exclusive lock */
++# define LOCK_NB 4 /* or'd with one of the above to prevent
++ blocking */
++# define LOCK_UN 8 /* remove lock */
++#endif
++
++#ifdef __USE_GNU
++# define LOCK_MAND 32 /* This is a mandatory flock */
++# define LOCK_READ 64 /* ... Which allows concurrent
++ read operations */
++# define LOCK_WRITE 128 /* ... Which allows concurrent
++ write operations */
++# define LOCK_RW 192 /* ... Which allows concurrent
++ read & write ops */
++#endif
++
++#ifdef __USE_GNU
++/* Types of directory notifications that may be requested with F_NOTIFY. */
++# define DN_ACCESS 0x00000001 /* File accessed. */
++# define DN_MODIFY 0x00000002 /* File modified. */
++# define DN_CREATE 0x00000004 /* File created. */
++# define DN_DELETE 0x00000008 /* File removed. */
++# define DN_RENAME 0x00000010 /* File renamed. */
++# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
++# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
++#endif
++
++struct flock {
++ short l_type;
++ short l_whence;
++#ifndef __USE_FILE_OFFSET64
++ __off_t l_start;
++ __off_t l_len;
++#else
++ __off64_t l_start;
++ __off64_t l_len;
++#endif
++ __pid_t l_pid;
++};
++
++#ifdef __USE_LARGEFILE64
++struct flock64 {
++ short l_type;
++ short l_whence;
++ __off64_t l_start;
++ __off64_t l_len;
++ __pid_t l_pid;
++};
++#endif
++
++/* Define some more compatibility macros to be backward compatible with
++ * BSD systems which did not managed to hide these kernel macros. */
++#ifdef __USE_BSD
++# define FAPPEND O_APPEND
++# define FFSYNC O_FSYNC
++# define FASYNC O_ASYNC
++# define FNONBLOCK O_NONBLOCK
++# define FNDELAY O_NDELAY
++#endif /* Use BSD. */
++
++/* Advise to `posix_fadvise'. */
++#ifdef __USE_XOPEN2K
++# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
++#endif
+diff --git a/libc/sysdeps/linux/avr32/bits/kernel_stat.h b/libc/sysdeps/linux/avr32/bits/kernel_stat.h
+new file mode 100644
+index 0000000..f97d23b
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/kernel_stat.h
+@@ -0,0 +1,67 @@
++#ifndef _BITS_STAT_STRUCT_H
++#define _BITS_STAT_STRUCT_H
++
++#ifndef _LIBC
++#error bits/kernel_stat.h is for internal uClibc use only!
++#endif
++
++/*
++ * This file provides struct stat, taken from kernel 2.6.4. Verified
++ * to match kernel 2.6.22.
++ */
++
++struct kernel_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;
++};
++
++#define STAT_HAVE_NSEC 1
++
++struct kernel_stat64 {
++ unsigned long long st_dev;
++
++ unsigned long long st_ino;
++ unsigned int st_mode;
++ unsigned int st_nlink;
++
++ unsigned long st_uid;
++ unsigned long st_gid;
++
++ unsigned long long st_rdev;
++
++ long long st_size;
++ unsigned long __pad1;
++ unsigned long st_blksize;
++
++ unsigned long 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 __unused1;
++ unsigned long __unused2;
++};
++
++#endif /* _BITS_STAT_STRUCT_H */
+diff --git a/libc/sysdeps/linux/avr32/bits/kernel_types.h b/libc/sysdeps/linux/avr32/bits/kernel_types.h
+new file mode 100644
+index 0000000..f7d8b52
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/kernel_types.h
+@@ -0,0 +1,55 @@
++/* Note that we use the exact same include guard #define names
++ * as asm/posix_types.h. This will avoid gratuitous conflicts
++ * with the posix_types.h kernel header, and will ensure that
++ * our private content, and not the kernel header, will win.
++ * -Erik
++ */
++#ifndef __ASM_AVR32_POSIX_TYPES_H
++#define __ASM_AVR32_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_dev_t;
++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 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 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(__USE_ALL)
++ int val[2];
++#else
++ int __val[2];
++#endif
++} __kernel_fsid_t;
++
++#endif /* __ASM_AVR32_POSIX_TYPES_H */
+diff --git a/libc/sysdeps/linux/avr32/bits/mman.h b/libc/sysdeps/linux/avr32/bits/mman.h
+new file mode 100644
+index 0000000..5f6e3c3
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/mman.h
+@@ -0,0 +1,103 @@
++/* Definitions for POSIX memory map interface. Linux/AVR32 version.
++ Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_MMAN_H
++# error "Never include this file directly. Use <sys/mman.h> instead"
++#endif
++
++/* The following definitions basically come from the kernel headers.
++ But the kernel header is not namespace clean. */
++
++
++/* Protections are chosen from these bits, OR'd together. The
++ implementation does not necessarily support PROT_EXEC or PROT_WRITE
++ without PROT_READ. The only guarantees are that no writing will be
++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
++
++#define PROT_READ 0x1 /* Page can be read. */
++#define PROT_WRITE 0x2 /* Page can be written. */
++#define PROT_EXEC 0x4 /* Page can be executed. */
++#define PROT_NONE 0x0 /* Page can not be accessed. */
++#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of
++ growsdown vma (mprotect only). */
++#define PROT_GROWSUP 0x02000000 /* Extend change to start of
++ growsup vma (mprotect only). */
++
++/* Sharing types (must choose one and only one of these). */
++#define MAP_SHARED 0x01 /* Share changes. */
++#define MAP_PRIVATE 0x02 /* Changes are private. */
++#ifdef __USE_MISC
++# define MAP_TYPE 0x0f /* Mask for type of mapping. */
++#endif
++
++/* Other flags. */
++#define MAP_FIXED 0x10 /* Interpret addr exactly. */
++#ifdef __USE_MISC
++# define MAP_FILE 0
++# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
++# define MAP_ANON MAP_ANONYMOUS
++#endif
++
++/* These are Linux-specific. */
++#ifdef __USE_MISC
++# 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 /* Lock the mapping. */
++# 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 */
++#endif
++
++/* Flags to `msync'. */
++#define MS_ASYNC 1 /* Sync memory asynchronously. */
++#define MS_SYNC 4 /* Synchronous memory sync. */
++#define MS_INVALIDATE 2 /* Invalidate the caches. */
++
++/* Flags for `mlockall'. */
++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */
++#define MCL_FUTURE 2 /* Lock all additions to address
++ space. */
++
++/* Flags for `mremap'. */
++#ifdef __USE_GNU
++# define MREMAP_MAYMOVE 1
++# define MREMAP_FIXED 2
++#endif
++
++/* Advise to `madvise'. */
++#ifdef __USE_BSD
++# define MADV_NORMAL 0 /* No further special treatment. */
++# define MADV_RANDOM 1 /* Expect random page references. */
++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define MADV_WILLNEED 3 /* Will need these pages. */
++# define MADV_DONTNEED 4 /* Don't need these pages. */
++# define MADV_REMOVE 9 /* Remove these pages and resources. */
++# define MADV_DONTFORK 10 /* Do not inherit across fork. */
++# define MADV_DOFORK 11 /* Do inherit across fork. */
++#endif
++
++/* The POSIX people had to invent similar names for the same things. */
++#ifdef __USE_XOPEN2K
++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
++#endif
+diff --git a/libc/sysdeps/linux/avr32/bits/setjmp.h b/libc/sysdeps/linux/avr32/bits/setjmp.h
+new file mode 100644
+index 0000000..78348a3
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/setjmp.h
+@@ -0,0 +1,30 @@
++/*
++ * Copyright (C) 2004-2005 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
++
++#if !defined _SETJMP_H && !defined _PTHREAD_H
++# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
++#endif
++
++#ifndef _ASM
++/*
++ * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
++ * not saved.
++ */
++typedef int __jmp_buf[11];
++#endif
++
++#define __JMP_BUF_SP 4
++
++/* Test if longjmp to JMPBUF would unwind the frame containing a local
++ variable at ADDRESS. */
++#define _JMPBUF_UNWINDS(jmpbuf, address) \
++ ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
++
++#endif /* _BITS_SETJMP_H */
+diff --git a/libc/sysdeps/linux/avr32/bits/stackinfo.h b/libc/sysdeps/linux/avr32/bits/stackinfo.h
+new file mode 100644
+index 0000000..29b8452
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/stackinfo.h
+@@ -0,0 +1,28 @@
++/* Copyright (C) 1999 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* This file contains a bit of information about the stack allocation
++ of the processor. */
++
++#ifndef _STACKINFO_H
++#define _STACKINFO_H 1
++
++/* On AVR32 the stack grows down. */
++#define _STACK_GROWS_DOWN 1
++
++#endif /* stackinfo.h */
+diff --git a/libc/sysdeps/linux/avr32/bits/syscalls.h b/libc/sysdeps/linux/avr32/bits/syscalls.h
+new file mode 100644
+index 0000000..22ac059
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/syscalls.h
+@@ -0,0 +1,143 @@
++#ifndef _BITS_SYSCALLS_H
++#define _BITS_SYSCALLS_H
++#ifndef _SYSCALL_H
++# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
++#endif
++
++/*
++ * This includes the `__NR_<name>' syscall numbers taken from the
++ * Linux kernel header files. It also defines the traditional
++ * `SYS_<name>' macros for older programs.
++ */
++#include <bits/sysnum.h>
++
++#ifndef __ASSEMBLER__
++
++#include <errno.h>
++
++#define SYS_ify(syscall_name) (__NR_##syscall_name)
++
++#undef _syscall0
++#define _syscall0(type,name) \
++ type name(void) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 0)); \
++ }
++
++#undef _syscall1
++#define _syscall1(type,name,type1,arg1) \
++ type name(type1 arg1) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 1, arg1)); \
++ }
++
++#undef _syscall2
++#define _syscall2(type,name,type1,arg1,type2,arg2) \
++ type name(type1 arg1, type2 arg2) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 2, arg1, arg2)); \
++ }
++
++#undef _syscall3
++#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
++ type name(type1 arg1, type2 arg2, type3 arg3) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 3, arg1, \
++ arg2, arg3)); \
++ }
++
++#undef _syscall4
++#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 4, arg1, arg2, \
++ arg3, arg4)); \
++ }
++
++#undef _syscall5
++#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 5, arg1, arg2, \
++ arg3, arg4, arg5)); \
++ }
++
++#undef _syscall6
++#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3, \
++ type4,arg4,type5,arg5,type6,arg6) \
++ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
++ type5 arg5, type6 arg6) \
++ { \
++ return (type)(INLINE_SYSCALL(name, 6, arg1, arg2, arg3, \
++ arg4, arg5, arg6)); \
++ }
++
++#undef unlikely
++#define unlikely(x) __builtin_expect((x), 0)
++
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ ({ \
++ unsigned _sys_result = INTERNAL_SYSCALL(name, , nr, args); \
++ if (unlikely(INTERNAL_SYSCALL_ERROR_P(_sys_result, ))) { \
++ __set_errno(INTERNAL_SYSCALL_ERRNO(_sys_result, )); \
++ _sys_result = (unsigned int) -1; \
++ } \
++ (int) _sys_result; \
++ })
++
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) do { } while(0)
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) \
++ ({ \
++ register int _a1 asm ("r12"); \
++ register int _scno asm("r8") = SYS_ify(name); \
++ LOAD_ARGS_##nr (args); \
++ asm volatile ("scall /* syscall " #name " */" \
++ : "=r" (_a1) \
++ : "r"(_scno) ASM_ARGS_##nr \
++ : "cc", "memory"); \
++ _a1; \
++ })
++
++#undef INTERNAL_SYSCALL_ERROR_P
++#define INTERNAL_SYSCALL_ERROR_P(val, err) \
++ ((unsigned int)(val) >= 0xfffff001U)
++
++#undef INTERNAL_SYSCALL_ERRNO
++#define INTERNAL_SYSCALL_ERRNO(val, errr) (-(val))
++
++#define LOAD_ARGS_0() do { } while(0)
++#define ASM_ARGS_0
++#define LOAD_ARGS_1(a1) \
++ _a1 = (int) (a1); \
++ LOAD_ARGS_0()
++#define ASM_ARGS_1 ASM_ARGS_0, "r"(_a1)
++#define LOAD_ARGS_2(a1, a2) \
++ register int _a2 asm("r11") = (int)(a2); \
++ LOAD_ARGS_1(a1)
++#define ASM_ARGS_2 ASM_ARGS_1, "r"(_a2)
++#define LOAD_ARGS_3(a1, a2, a3) \
++ register int _a3 asm("r10") = (int)(a3); \
++ LOAD_ARGS_2(a1, a2)
++#define ASM_ARGS_3 ASM_ARGS_2, "r"(_a3)
++#define LOAD_ARGS_4(a1, a2, a3, a4) \
++ register int _a4 asm("r9") = (int)(a4); \
++ LOAD_ARGS_3(a1, a2, a3)
++#define ASM_ARGS_4 ASM_ARGS_3, "r"(_a4)
++#define LOAD_ARGS_5(a1, a2, a3, a4, a5) \
++ register int _a5 asm("r5") = (int)(a5); \
++ LOAD_ARGS_4(a1, a2, a3, a4)
++#define ASM_ARGS_5 ASM_ARGS_4, "r"(_a5)
++#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6) \
++ register int _a6 asm("r3") = (int)(a6); \
++ LOAD_ARGS_5(a1, a2, a3, a4, a5)
++#define ASM_ARGS_6 ASM_ARGS_5, "r"(_a6)
++
++#endif /* __ASSEMBLER__ */
++#endif /* _BITS_SYSCALLS_H */
+diff --git a/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h b/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
+new file mode 100644
+index 0000000..e95e8a5
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
+@@ -0,0 +1,45 @@
++/*
++ * Track misc arch-specific features that aren't config options
++ */
++
++#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
++#define _BITS_UCLIBC_ARCH_FEATURES_H
++
++/* instruction used when calling abort() to kill yourself */
++/* trigger illegal instruction exception, same as BUG in Linux */
++#define __UCLIBC_ABORT_INSTRUCTION__ ".short 0x5df0"
++
++/* can your target use syscall6() for mmap ? */
++#define __UCLIBC_MMAP_HAS_6_ARGS__
++
++/* does your target use syscall4() for truncate64 ? (32bit arches only) */
++#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
++
++/* does your target have a broken create_module() ? */
++#undef __UCLIBC_BROKEN_CREATE_MODULE__
++
++/* does your target have to worry about older [gs]etrlimit() ? */
++#undef __UCLIBC_HANDLE_OLDER_RLIMIT__
++
++/* does your target prefix all symbols with an _ ? */
++#define __UCLIBC_NO_UNDERSCORES__
++
++/* does your target have an asm .set ? */
++#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
++
++/* define if target doesn't like .global */
++#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
++
++/* define if target supports .weak */
++#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
++
++/* define if target supports .weakext */
++#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
++
++/* needed probably only for ppc64 */
++#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
++
++/* define if target supports IEEE signed zero floats */
++#define __UCLIBC_HAVE_SIGNED_ZERO__
++
++#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
+diff --git a/libc/sysdeps/linux/avr32/bits/wordsize.h b/libc/sysdeps/linux/avr32/bits/wordsize.h
+new file mode 100644
+index 0000000..1b5842a
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bits/wordsize.h
+@@ -0,0 +1 @@
++#define __WORDSIZE 32
+diff --git a/libc/sysdeps/linux/avr32/brk.c b/libc/sysdeps/linux/avr32/brk.c
+new file mode 100644
+index 0000000..a54b49a
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/brk.c
+@@ -0,0 +1,31 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#include <errno.h>
++#include <unistd.h>
++#include <sys/syscall.h>
++
++libc_hidden_proto(brk)
++
++void *__curbrk attribute_hidden = 0;
++
++int brk (void *addr)
++{
++ void *newbrk;
++
++ newbrk = (void *)INLINE_SYSCALL(brk, 1, addr);
++
++ __curbrk = newbrk;
++
++ if (newbrk < addr) {
++ __set_errno (ENOMEM);
++ return -1;
++ }
++
++ return 0;
++}
++libc_hidden_def(brk)
+diff --git a/libc/sysdeps/linux/avr32/bsd-_setjmp.S b/libc/sysdeps/linux/avr32/bsd-_setjmp.S
+new file mode 100644
+index 0000000..be66a10
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bsd-_setjmp.S
+@@ -0,0 +1,16 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 0) */
++ .global _setjmp
++ .type _setjmp,"function"
++ .align 1
++_setjmp:
++ mov r11, 0
++ bral __GI___sigsetjmp
++ .size _setjmp, . - _setjmp
+diff --git a/libc/sysdeps/linux/avr32/bsd-setjmp.S b/libc/sysdeps/linux/avr32/bsd-setjmp.S
+new file mode 100644
+index 0000000..4635eeb
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/bsd-setjmp.S
+@@ -0,0 +1,16 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++ /* This just does a tail-call to __sigsetjmp(env, 1) */
++ .global setjmp
++ .type setjmp,"function"
++ .align 1
++setjmp:
++ mov r11, 1
++ bral __GI___sigsetjmp
++ .size setjmp, . - setjmp
+diff --git a/libc/sysdeps/linux/avr32/clone.c b/libc/sysdeps/linux/avr32/clone.c
+new file mode 100644
+index 0000000..e43b0f3
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/clone.c
+@@ -0,0 +1,41 @@
++/*
++ * Copyright (C) 2004 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#include <errno.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++
++/*
++ * I don't know if we can be absolutely certain that the fn and arg
++ * parameters are preserved when returning as the child. If the
++ * compiler stores them in registers (r0-r7), they should be.
++ */
++int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg)
++{
++ register int (*_fn)(void *arg) = fn;
++ register void *_arg = arg;
++ int err;
++
++ /* Sanity check the arguments */
++ err = -EINVAL;
++ if (!fn)
++ goto syscall_error;
++ if (!child_stack)
++ goto syscall_error;
++
++ err = INLINE_SYSCALL(clone, 2, flags, child_stack);
++ if (err < 0)
++ goto syscall_error;
++ else if (err != 0)
++ return err;
++
++ _exit(_fn(_arg));
++
++syscall_error:
++ __set_errno (-err);
++ return -1;
++}
+diff --git a/libc/sysdeps/linux/avr32/crt1.S b/libc/sysdeps/linux/avr32/crt1.S
+new file mode 100644
+index 0000000..ca1fa7a
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/crt1.S
+@@ -0,0 +1,97 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ *
++ * When we enter _start, the stack looks like this:
++ * argc argument counter
++ * argv[0] pointer to program name
++ * argv[1..argc-1] pointers to program args
++ * NULL
++ * env[0..N] pointers to environment variables
++ * NULL
++ *
++ * r12 contains a function pointer to be registered with `atexit'.
++ * This is how the dynamic linker arranges to have DT_FINI functions
++ * called for shared libraries that have been loaded before this
++ * code runs.
++ *
++ * We're going to call the following function:
++ * __uClibc_main(int (*main)(int, char **, char **), int argc,
++ * char **argv, void (*app_init)(void), void (*app_fini)(void),
++ * void (*rtld_fini)(void), void *stack_end)
++ *
++ * So we need to set up things as follows:
++ * r12 = address of main
++ * r11 = argc
++ * r10 = &argv[0]
++ * r9 = address of _init
++ * r8 = address of _fini
++ * sp[0] = whatever we got passed in r12
++ */
++
++#include <features.h>
++
++ .text
++ .global _start
++ .type _start, @function
++_start:
++ /* Clear the frame pointer and link register since this is the outermost frame. */
++ mov r7, 0
++ mov lr, 0
++
++ ld.w r11, sp++ /* argc */
++ mov r10, sp /* &argv[0] */
++
++ st.w --sp, r10 /* stack_end */
++ st.w --sp, r12 /* rtld_fini */
++
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++.L_RGOT:
++ rsub r6, pc
++ lda.w r9, _init
++ lda.w r8, _fini
++ lda.w r12, main
++
++ /* Ok, now run uClibc's main() -- should not return */
++ call __uClibc_main
++
++ .align 2
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++ lddpc r9, __init_addr /* app_init */
++ lddpc r8, __fini_addr /* app_fini */
++ lddpc r12, __main_addr /* main */
++
++ /* Ok, now run uClibc's main() -- should not return */
++ lddpc pc, ___uClibc_main_addr
++
++ .align 2
++__init_addr:
++ .long _init
++__fini_addr:
++ .long _fini
++__main_addr:
++ .long main
++___uClibc_main_addr:
++ .long __uClibc_main
++#endif
++ .size _start, . - _start
++
++ /*
++ * The LSB says we need this.
++ */
++ .section ".note.ABI-tag", "a"
++ .align 4
++ .long 2f - 1f /* namesz */
++ .long 4f - 3f /* descsz */
++ .long 1 /* type */
++1: .asciz "GNU" /* name */
++2: .align 4
++3: .long 0 /* Linux executable */
++ .long 2,6,0 /* Earliest compatible kernel */
++4: .align 4
+diff --git a/libc/sysdeps/linux/avr32/crti.S b/libc/sysdeps/linux/avr32/crti.S
+new file mode 100644
+index 0000000..660f47c
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/crti.S
+@@ -0,0 +1,26 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++_init:
++ stm --sp, r6, lr
++ lddpc r6, 2f
++1: rsub r6, pc
++ rjmp 3f
++ .align 2
++2: .long 1b - _GLOBAL_OFFSET_TABLE_
++3:
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++_fini:
++ stm --sp, r6, lr
++ lddpc r6, 2f
++1: rsub r6, pc
++ rjmp 3f
++ .align 2
++2: .long 1b - _GLOBAL_OFFSET_TABLE_
++3:
+diff --git a/libc/sysdeps/linux/avr32/crtn.S b/libc/sysdeps/linux/avr32/crtn.S
+new file mode 100644
+index 0000000..f7d1040
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/crtn.S
+@@ -0,0 +1,14 @@
++
++ .section .init
++ .align 2
++ .global _init
++ .type _init, @function
++ ldm sp++, r6, pc
++ .size _init, . - _init
++
++ .section .fini
++ .align 2
++ .global _fini
++ .type _fini, @function
++ ldm sp++, r6, pc
++ .size _fini, . - _fini
+diff --git a/libc/sysdeps/linux/avr32/mmap.c b/libc/sysdeps/linux/avr32/mmap.c
+new file mode 100644
+index 0000000..2ee025a
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/mmap.c
+@@ -0,0 +1,33 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++#include <errno.h>
++#include <unistd.h>
++#include <sys/mman.h>
++#include <sys/syscall.h>
++
++libc_hidden_proto(mmap)
++
++static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot,
++ int, flags, int, fd, __off_t, pgoff);
++
++__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
++{
++ unsigned long page_size = sysconf(_SC_PAGESIZE);
++ unsigned long pgoff;
++
++ if (offset & (page_size - 1)) {
++ __set_errno(EINVAL);
++ return MAP_FAILED;
++ }
++
++ pgoff = (unsigned long)offset >> (31 - __builtin_clz(page_size));
++
++ return mmap2(addr, len, prot, flags, fd, pgoff);
++}
++libc_hidden_def(mmap)
+diff --git a/libc/sysdeps/linux/avr32/setjmp.S b/libc/sysdeps/linux/avr32/setjmp.S
+new file mode 100644
+index 0000000..7d0354b
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/setjmp.S
+@@ -0,0 +1,29 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#define _SETJMP_H
++#define _ASM
++#include <bits/setjmp.h>
++
++ .text
++
++ .global __sigsetjmp
++ .type __sigsetjmp,"function"
++
++ .align 1
++__sigsetjmp:
++ mustr r8
++ stm r12, r0,r1,r2,r3,r4,r5,r6,r7,r8,sp,lr
++
++ /*
++ * Make a tail call to __sigjmp_save; it takes the same args
++ * and is hidden so we don't need to mess around with the GOT.
++ */
++ rjmp __sigjmp_save
++ .size __sigsetjmp, . - __sigsetjmp
++
++libc_hidden_def(__sigsetjmp)
+diff --git a/libc/sysdeps/linux/avr32/sigaction.c b/libc/sysdeps/linux/avr32/sigaction.c
+new file mode 100644
+index 0000000..a97ff3d
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/sigaction.c
+@@ -0,0 +1,59 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#include <errno.h>
++#include <signal.h>
++#include <string.h>
++#include <sys/syscall.h>
++#include <bits/kernel_sigaction.h>
++
++#define SA_RESTORER 0x04000000
++extern void __default_rt_sa_restorer(void);
++
++libc_hidden_proto(memcpy)
++
++/*
++ * If act is not NULL, change the action for sig to *act.
++ * If oact is not NULL, put the old action for sig in *oact.
++ */
++int __libc_sigaction(int signum, const struct sigaction *act,
++ struct sigaction *oldact)
++{
++ struct kernel_sigaction kact, koact;
++ int result;
++
++ if (act) {
++ kact.k_sa_handler = act->sa_handler;
++ memcpy(&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
++ kact.sa_flags = act->sa_flags;
++ if (kact.sa_flags & (SA_RESTORER | SA_ONSTACK))
++ kact.sa_restorer = act->sa_restorer;
++ else
++ kact.sa_restorer = __default_rt_sa_restorer;
++ kact.sa_flags |= SA_RESTORER;
++ }
++
++ result = __syscall_rt_sigaction(signum, act ? __ptrvalue(&kact) : NULL,
++ oldact ? __ptrvalue(&koact) : NULL,
++ _NSIG / 8);
++
++ if (oldact && result >= 0) {
++ oldact->sa_handler = koact.k_sa_handler;
++ memcpy(&oldact->sa_mask, &koact.sa_mask,
++ sizeof(oldact->sa_mask));
++ oldact->sa_flags = koact.sa_flags;
++ oldact->sa_restorer = koact.sa_restorer;
++ }
++
++ return result;
++}
++
++#ifndef LIBC_SIGACTION
++libc_hidden_proto(sigaction)
++weak_alias(__libc_sigaction, sigaction)
++libc_hidden_weak(sigaction)
++#endif
+diff --git a/libc/sysdeps/linux/avr32/sigrestorer.S b/libc/sysdeps/linux/avr32/sigrestorer.S
+new file mode 100644
+index 0000000..df6a1ba
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/sigrestorer.S
+@@ -0,0 +1,15 @@
++/*
++ * Copyright (C) 2004 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#include <sys/syscall.h>
++
++ .global __default_rt_sa_restorer
++ .type __default_rt_sa_restorer,"function"
++ .align 1
++__default_rt_sa_restorer:
++ mov r8, __NR_rt_sigreturn
++ scall
+diff --git a/libc/sysdeps/linux/avr32/sys/elf.h b/libc/sysdeps/linux/avr32/sys/elf.h
+new file mode 100644
+index 0000000..faa7310
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/sys/elf.h
+@@ -0,0 +1,26 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_ELF_H
++#define _SYS_ELF_H 1
++
++#warning "This header is obsolete; use <sys/procfs.h> instead."
++
++#include <sys/procfs.h>
++
++#endif /* sys/elf.h */
+diff --git a/libc/sysdeps/linux/avr32/sys/procfs.h b/libc/sysdeps/linux/avr32/sys/procfs.h
+new file mode 100644
+index 0000000..3b37363
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/sys/procfs.h
+@@ -0,0 +1,123 @@
++/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_PROCFS_H
++#define _SYS_PROCFS_H 1
++
++/* This is somewhat modelled after the file of the same name on SVR4
++ systems. It provides a definition of the core file format for ELF
++ used on Linux. It doesn't have anything to do with the /proc file
++ system, even though Linux has one.
++
++ Anyway, the whole purpose of this file is for GDB and GDB only.
++ Don't read too much into it. Don't use it for anything other than
++ GDB unless you know what you are doing. */
++
++#include <features.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/user.h>
++
++__BEGIN_DECLS
++
++/* Type for a general-purpose register. */
++typedef unsigned long elf_greg_t;
++
++/* And the whole bunch of them. We could have used `struct
++ user_regs' directly in the typedef, but tradition says that
++ the register set is an array, which does have some peculiar
++ semantics, so leave it that way. */
++#define ELF_NGREG (sizeof (struct user_regs) / sizeof(elf_greg_t))
++typedef elf_greg_t elf_gregset_t[ELF_NGREG];
++
++/* Register set for the floating-point registers. */
++typedef struct user_fpregs elf_fpregset_t;
++
++/* Signal info. */
++struct elf_siginfo
++ {
++ int si_signo; /* Signal number. */
++ int si_code; /* Extra code. */
++ int si_errno; /* Errno. */
++ };
++
++/* Definitions to generate Intel SVR4-like core files. These mostly
++ have the same names as the SVR4 types with "elf_" tacked on the
++ front to prevent clashes with Linux definitions, and the typedef
++ forms have been avoided. This is mostly like the SVR4 structure,
++ but more Linuxy, with things that Linux does not support and which
++ GDB doesn't really use excluded. */
++
++struct elf_prstatus
++ {
++ struct elf_siginfo pr_info; /* Info associated with signal. */
++ short int pr_cursig; /* Current signal. */
++ unsigned long int pr_sigpend; /* Set of pending signals. */
++ unsigned long int pr_sighold; /* Set of held signals. */
++ __pid_t pr_pid;
++ __pid_t pr_ppid;
++ __pid_t pr_pgrp;
++ __pid_t pr_sid;
++ struct timeval pr_utime; /* User time. */
++ struct timeval pr_stime; /* System time. */
++ struct timeval pr_cutime; /* Cumulative user time. */
++ struct timeval pr_cstime; /* Cumulative system time. */
++ elf_gregset_t pr_reg; /* GP registers. */
++ int pr_fpvalid; /* True if math copro being used. */
++ };
++
++
++#define ELF_PRARGSZ (80) /* Number of chars for args. */
++
++struct elf_prpsinfo
++ {
++ char pr_state; /* Numeric process state. */
++ char pr_sname; /* Char for pr_state. */
++ char pr_zomb; /* Zombie. */
++ char pr_nice; /* Nice val. */
++ unsigned long int pr_flag; /* Flags. */
++ unsigned short int pr_uid;
++ unsigned short int pr_gid;
++ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
++ /* Lots missing */
++ char pr_fname[16]; /* Filename of executable. */
++ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
++ };
++
++/* The rest of this file provides the types for emulation of the
++ Solaris <proc_service.h> interfaces that should be implemented by
++ users of libthread_db. */
++
++/* Addresses. */
++typedef void *psaddr_t;
++
++/* Register sets. Linux has different names. */
++typedef elf_gregset_t prgregset_t;
++typedef elf_fpregset_t prfpregset_t;
++
++/* We don't have any differences between processes and threads,
++ therefore have only one PID type. */
++typedef __pid_t lwpid_t;
++
++/* Process status and info. In the end we do provide typedefs for them. */
++typedef struct elf_prstatus prstatus_t;
++typedef struct elf_prpsinfo prpsinfo_t;
++
++__END_DECLS
++
++#endif /* sys/procfs.h */
+diff --git a/libc/sysdeps/linux/avr32/sys/ucontext.h b/libc/sysdeps/linux/avr32/sys/ucontext.h
+new file mode 100644
+index 0000000..82c7fe2
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/sys/ucontext.h
+@@ -0,0 +1,90 @@
++/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* Linux/AVR32 ABI compliant context switching support. */
++
++#ifndef _SYS_UCONTEXT_H
++#define _SYS_UCONTEXT_H 1
++
++#include <features.h>
++#include <signal.h>
++#include <sys/procfs.h>
++#include <bits/sigcontext.h>
++
++typedef int greg_t;
++
++/* Number of general registers. */
++#define NGREG 16
++
++/* Container for all general registers. */
++typedef elf_gregset_t gregset_t;
++
++/* Number of each register is the `gregset_t' array. */
++enum
++{
++ R0 = 0,
++#define R0 R0
++ R1 = 1,
++#define R1 R1
++ R2 = 2,
++#define R2 R2
++ R3 = 3,
++#define R3 R3
++ R4 = 4,
++#define R4 R4
++ R5 = 5,
++#define R5 R5
++ R6 = 6,
++#define R6 R6
++ R7 = 7,
++#define R7 R7
++ R8 = 8,
++#define R8 R8
++ R9 = 9,
++#define R9 R9
++ R10 = 10,
++#define R10 R10
++ R11 = 11,
++#define R11 R11
++ R12 = 12,
++#define R12 R12
++ R13 = 13,
++#define R13 R13
++ R14 = 14,
++#define R14 R14
++ R15 = 15
++#define R15 R15
++};
++
++/* Structure to describe FPU registers. */
++typedef elf_fpregset_t fpregset_t;
++
++/* Context to describe whole processor state. */
++typedef struct sigcontext mcontext_t;
++
++/* Userlevel context. */
++typedef struct ucontext
++{
++ unsigned long uc_flags;
++ struct ucontext *uc_link;
++ stack_t uc_stack;
++ mcontext_t uc_mcontext;
++ sigset_t uc_sigmask; /* mask last for extensibility */
++} ucontext_t;
++
++#endif /* sys/ucontext.h */
+diff --git a/libc/sysdeps/linux/avr32/sys/user.h b/libc/sysdeps/linux/avr32/sys/user.h
+new file mode 100644
+index 0000000..c0b3d38
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/sys/user.h
+@@ -0,0 +1,46 @@
++#ifndef _SYS_USER_H
++#define _SYS_USER_H
++
++struct user_fpregs
++{
++
++};
++
++struct user_regs
++{
++ unsigned long sr;
++ unsigned long pc;
++ unsigned long lr;
++ unsigned long sp;
++ unsigned long r12;
++ unsigned long r11;
++ unsigned long r10;
++ unsigned long r9;
++ unsigned long r8;
++ unsigned long r7;
++ unsigned long r6;
++ unsigned long r5;
++ unsigned long r4;
++ unsigned long r3;
++ unsigned long r2;
++ unsigned long r1;
++ unsigned long r0;
++ unsigned long r12_orig;
++};
++
++struct user
++{
++ struct user_regs regs; /* general registers */
++ size_t u_tsize; /* text size (pages) */
++ size_t u_dsize; /* data size (pages) */
++ size_t u_ssize; /* stack size (pages) */
++ unsigned long start_code; /* text starting address */
++ unsigned long start_data; /* data starting address */
++ unsigned long start_stack; /* stack starting address */
++ long int signal; /* signal causing core dump */
++ struct user_regs * u_ar0; /* help gdb find registers */
++ unsigned long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#endif /* _SYS_USER_H */
+diff --git a/libc/sysdeps/linux/avr32/syscall.S b/libc/sysdeps/linux/avr32/syscall.S
+new file mode 100644
+index 0000000..55c1b1f
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/syscall.S
+@@ -0,0 +1,71 @@
++/*
++ * Copyright (C) 2004-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#include <features.h>
++
++ .text
++
++ /*
++ * long int syscall(long int sysno, ...)
++ */
++ .global syscall
++ .type syscall, @function
++ .align 2
++syscall:
++ stm --sp, r3,r5,r6,lr
++ sub lr, sp, -16
++ mov r8, r12
++ ldm lr, r3,r5,r9-r12
++ scall
++ cp.w r12, -4095
++ brlo .Ldone
++
++#ifdef __PIC__
++ lddpc r6, .Lgot
++.Lgotcalc:
++ rsub r6, pc
++# ifdef __UCLIBC_HAS_THREADS__
++ rsub r3, r12, 0
++ mcall r6[__errno_location@got]
++ st.w r12[0], r3
++# else
++ ld.w r3, r6[errno@got]
++ neg r12
++ st.w r3[0], r12
++# endif
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++ rsub r3, r12, 0
++ mcall .Lerrno_location
++ st.w r12[0], r3
++# else
++ lddpc r3, .Lerrno
++ neg r12
++ st.w r3[0], r12
++# endif
++#endif
++ mov r12, -1
++
++.Ldone:
++ ldm sp++, r3,r5,r6,pc
++
++ .align 2
++#ifdef __PIC__
++.Lgot:
++ .long .Lgotcalc - _GLOBAL_OFFSET_TABLE_
++#else
++# ifdef __UCLIBC_HAS_THREADS__
++.Lerrno_location:
++ .long __errno_location
++# else
++.Lerrno:
++ .long errno
++# endif
++#endif
++
++
++ .size syscall, . - syscall
+diff --git a/libc/sysdeps/linux/avr32/vfork.S b/libc/sysdeps/linux/avr32/vfork.S
+new file mode 100644
+index 0000000..03ca99f
+--- /dev/null
++++ b/libc/sysdeps/linux/avr32/vfork.S
+@@ -0,0 +1,58 @@
++/*
++ * Copyright (C) 2005 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++
++/*
++ * Clone the process without copying the address space. The
++ * calling process is suspended until the child either exits
++ * or calls execve.
++ *
++ * This all means that we cannot rely on the stack to store
++ * away registers, since they will be overwritten by the child
++ * as soon as it makes another function call (e.g. execve()).
++ * Fortunately, the Linux kernel preserves LR across system calls.
++ */
++
++#include <features.h>
++#include <sys/syscall.h>
++
++ .global __vfork
++ .type __vfork,@function
++ .align 1
++__vfork:
++ mov r8, __NR_vfork
++ scall
++ cp.w r12, -4096
++ retls r12
++
++ /* vfork failed, so we may use the stack freely */
++ pushm r4-r7,lr
++#ifdef __PIC__
++ lddpc r6, .L_GOT
++ rsub r4, r12, 0
++.L_RGOT:
++ rsub r6, pc
++ mcall r6[__errno_location@got]
++#else
++ rsub r4, r12, 0
++ mcall .L__errno_location
++#endif
++ st.w r12[0], r4
++ popm r4-r7,pc,r12=-1
++
++ .align 2
++#ifdef __PIC__
++.L_GOT:
++ .long .L_RGOT - _GLOBAL_OFFSET_TABLE_
++#else
++.L__errno_location:
++ .long __errno_location
++#endif
++ .size __vfork, . - __vfork
++
++weak_alias(__vfork,vfork)
++libc_hidden_weak(vfork)
+diff --git a/libpthread/linuxthreads.old/sysdeps/avr32/pt-machine.h b/libpthread/linuxthreads.old/sysdeps/avr32/pt-machine.h
+new file mode 100644
+index 0000000..eccf329
+--- /dev/null
++++ b/libpthread/linuxthreads.old/sysdeps/avr32/pt-machine.h
+@@ -0,0 +1,73 @@
++/* Machine-dependent pthreads configuration and inline functions.
++ *
++ * Copyright (C) 2005-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#ifndef _PT_MACHINE_H
++#define _PT_MACHINE_H 1
++
++#include <features.h>
++
++static inline int
++_test_and_set (int *p, int v)
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline test and set */\n"
++ " xchg %[old], %[mem], %[new]"
++ : [old] "=&r"(result)
++ : [mem] "r"(p), [new] "r"(v)
++ : "memory");
++
++ return result;
++}
++
++#ifndef PT_EI
++# define PT_EI extern inline
++#endif
++
++extern long int testandset (int *spinlock);
++extern int __compare_and_swap (long int *p, long int oldval, long int newval);
++
++/* Spinlock implementation; required. */
++PT_EI long int
++testandset (int *spinlock)
++{
++ return _test_and_set(spinlock, 1);
++}
++
++
++/* Get some notion of the current stack. Need not be exactly the top
++ of the stack, just something somewhere in the current frame. */
++#define CURRENT_STACK_FRAME stack_pointer
++register char * stack_pointer __asm__ ("sp");
++
++/* Compare-and-swap for semaphores. */
++
++#define HAS_COMPARE_AND_SWAP
++PT_EI int
++__compare_and_swap(long int *p, long int oldval, long int newval)
++{
++ long int result;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %[result], %[mem]\n"
++ " eor %[result], %[old]\n"
++ " brne 2f\n"
++ " stcond %[mem], %[new]\n"
++ " brne 1b\n"
++ "2:"
++ : [result] "=&r"(result), [mem] "=m"(*p)
++ : "m"(*p), [new] "r"(newval), [old] "r"(oldval)
++ : "cc", "memory");
++
++ return result == 0;
++}
++
++#endif /* pt-machine.h */
+diff --git a/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h b/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h
+new file mode 100644
+index 0000000..fe12bf8
+--- /dev/null
++++ b/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h
+@@ -0,0 +1,73 @@
++/* Machine-dependent pthreads configuration and inline functions.
++ *
++ * Copyright (C) 2005-2007 Atmel Corporation
++ *
++ * This file is subject to the terms and conditions of the GNU Lesser General
++ * Public License. See the file "COPYING.LIB" in the main directory of this
++ * archive for more details.
++ */
++#ifndef _PT_MACHINE_H
++#define _PT_MACHINE_H 1
++
++#include <features.h>
++
++static inline int
++_test_and_set (int *p, int v) __THROW
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline test and set */\n"
++ " xchg %[old], %[mem], %[new]"
++ : [old] "=&r"(result)
++ : [mem] "r"(p), [new] "r"(v)
++ : "memory");
++
++ return result;
++}
++
++#ifndef PT_EI
++# define PT_EI extern inline
++#endif
++
++extern long int testandset (int *spinlock);
++extern int __compare_and_swap (long int *p, long int oldval, long int newval);
++
++/* Spinlock implementation; required. */
++PT_EI long int
++testandset (int *spinlock)
++{
++ return _test_and_set(spinlock, 1);
++}
++
++
++/* Get some notion of the current stack. Need not be exactly the top
++ of the stack, just something somewhere in the current frame. */
++#define CURRENT_STACK_FRAME stack_pointer
++register char * stack_pointer __asm__ ("sp");
++
++/* Compare-and-swap for semaphores. */
++
++#define HAS_COMPARE_AND_SWAP
++PT_EI int
++__compare_and_swap(long int *p, long int oldval, long int newval)
++{
++ int result;
++
++ __asm__ __volatile__(
++ "/* Inline compare and swap */\n"
++ "1: ssrf 5\n"
++ " ld.w %[result], %[mem]\n"
++ " eor %[result], %[old]\n"
++ " brne 2f\n"
++ " stcond %[mem], %[new]\n"
++ " brne 1b\n"
++ "2:"
++ : [result] "=&r"(result), [mem] "=m"(*p)
++ : "m"(*p), [new] "r"(newval), [old] "r"(oldval)
++ : "cc", "memory");
++
++ return result == 0;
++}
++
++#endif /* pt-machine.h */
+diff --git a/utils/ldd.c b/utils/ldd.c
+index 75ad628..e34acd9 100644
+--- a/utils/ldd.c
++++ b/utils/ldd.c
+@@ -44,6 +44,11 @@
+ #define ELFCLASSM ELFCLASS32
+ #endif
+
++#if defined(__avr32__)
++#define MATCH_MACHINE(x) (x == EM_AVR32)
++#define ELFCLASSM ELFCLASS32
++#endif
++
+ #if defined(__s390__)
+ #define MATCH_MACHINE(x) (x == EM_S390)
+ #define ELFCLASSM ELFCLASS32
diff --git a/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-avr32-fix-sa_onstack.patch b/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-avr32-fix-sa_onstack.patch
new file mode 100644
index 0000000000..722decdbd7
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-avr32-fix-sa_onstack.patch
@@ -0,0 +1,31 @@
+From 974a769cc135bcfb1ea751db34a84ed6b5ceb509 Mon Sep 17 00:00:00 2001
+From: Haavard Skinnemoen <hskinnemoen@atmel.com>
+Date: Fri, 7 Dec 2007 14:02:19 +0100
+Subject: [PATCH] AVR32: Fix sa_restorer when SA_ONSTACK is set
+
+I don't remember exactly why we decided to pick the caller's value of
+sa_restorer when SA_ONSTACK is set, but it seems to break LTP's
+sigaltstack testcase. Some users have reported problems with
+sigaltstack as well; hopefully this will fix it.
+
+Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
+---
+ libc/sysdeps/linux/avr32/sigaction.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/libc/sysdeps/linux/avr32/sigaction.c b/libc/sysdeps/linux/avr32/sigaction.c
+index a97ff3d..6dcca91 100644
+--- a/libc/sysdeps/linux/avr32/sigaction.c
++++ b/libc/sysdeps/linux/avr32/sigaction.c
+@@ -30,7 +30,7 @@ int __libc_sigaction(int signum, const struct sigaction *act,
+ kact.k_sa_handler = act->sa_handler;
+ memcpy(&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
+ kact.sa_flags = act->sa_flags;
+- if (kact.sa_flags & (SA_RESTORER | SA_ONSTACK))
++ if (kact.sa_flags & SA_RESTORER)
+ kact.sa_restorer = act->sa_restorer;
+ else
+ kact.sa_restorer = __default_rt_sa_restorer;
+--
+1.5.3.4
+
diff --git a/packages/uclibc/uclibc.inc b/packages/uclibc/uclibc.inc
index 7fb8e5cf28..e57ef174a9 100644
--- a/packages/uclibc/uclibc.inc
+++ b/packages/uclibc/uclibc.inc
@@ -141,7 +141,7 @@ do_configure() {
echo "# CONFIG_ARM_EABI is not set" >> ${S}/.config
fi
- oe_runmake oldconfig
+ yes '' | oe_runmake oldconfig
}
do_stage() {
@@ -151,7 +151,6 @@ do_stage() {
RUNTIME_PREFIX=${UCLIBC_PREFIX}/ \
install_dev install_runtime
- oe_runmake utils
oe_runmake PREFIX= DEVEL_PREFIX=${UCLIBC_PREFIX}/ \
RUNTIME_PREFIX=${UCLIBC_PREFIX}/ \
install_utils
@@ -189,8 +188,14 @@ do_stage() {
}
do_install() {
+ # Install into the cross dir (this MUST be done first because we
+ # will install crt1.o in the install_dev stage and gcc needs it)
+ oe_runmake PREFIX= DEVEL_PREFIX=${UCLIBC_PREFIX}/ \
+ RUNTIME_PREFIX=${UCLIBC_PREFIX}/ \
+ install_dev install_runtime
+
oe_runmake PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
- install_dev install_runtime install_utils
+ install_dev install_runtime
# We don't really need this in ${includedir}
rm -f ${D}${prefix}/include/.cvsignore
@@ -216,5 +221,9 @@ do_install() {
mv ${D}/usr/bin/* ${D}${bindir}/
rmdir ${D}/usr/bin
fi
+
+ oe_runmake utils
+ oe_runmake PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
+ install_utils
}
diff --git a/packages/uclibc/uclibc_0.9.28.bb b/packages/uclibc/uclibc_0.9.28.bb
index 2c557ec606..d5d1bae4be 100644
--- a/packages/uclibc/uclibc_0.9.28.bb
+++ b/packages/uclibc/uclibc_0.9.28.bb
@@ -1,5 +1,5 @@
DEFAULT_PREFERENCE = "1"
-PR = "r9"
+PR = "r10"
require uclibc.inc
@@ -47,6 +47,30 @@ SRC_URI += " ${THUMB_INTERWORK_RESOLVE_PATCH}"
DEFAULT_PREFERENCE_avr32 = "6000"
-SRC_URI_append_avr32 = " http://avr32linux.org/twiki/pub/Main/MicroClibcPatches/uClibc-0.9.28-avr1.patch.bz2;patch=1 "
-
+SRC_URI_append_avr32 = " \
+ file://uclibc-makefile.patch;patch=1 \
+ file://remove-bogus-version-hack-and-just-use-asm-generic-if-it-exists.patch;patch=1 \
+ file://let-optimized-stringops-override-default-ones.patch;patch=1 \
+ file://fix-getrusage-argument-type.patch;patch=1 \
+ file://fix-__libc_fcntl64-varargs-prototype.patch;patch=1 \
+ file://fix-broken-__libc_open-declaration.patch;patch=1 \
+ file://avr32-arch-2.patch;patch=1 \
+ file://avr32-linkrelax-option.patch;patch=1 \
+ file://avr32-string-ops.patch;patch=1 \
+ file://no-create_module-on-avr32.patch;patch=1 \
+ file://ldso-always-inline-_dl_memcpy.patch;patch=1 \
+ file://ldso-define-MAP_FAILED.patch;patch=1 \
+ file://ldso-always-inline-syscalls.patch;patch=1 \
+ file://ldso-avr32-2.patch;patch=1 \
+ file://ldso-avr32-needs-CONSTANT_STRING_GOT_FIXUP.patch;patch=1 \
+ file://ldso-avr32-startup-hack.patch;patch=1 \
+ file://ldd-avr32-support.patch;patch=1 \
+ file://libpthread-avr32.patch;patch=1 \
+ file://sync-fcntl-h-with-linux-kernel.patch;patch=1 \
+ "
+
+
+#file://uClibc-0.9.28-avr32-20060621.patch;patch=1 \
+#file://uClibc-0.9.28-avr32-20061019.patch;patch=1 \
+#file://uclibc-avr32-no-msoft-float.patch;patch=1 \
diff --git a/packages/uclibc/uclibc_0.9.29.bb b/packages/uclibc/uclibc_0.9.29.bb
index 9ec20d61de..484477c084 100644
--- a/packages/uclibc/uclibc_0.9.29.bb
+++ b/packages/uclibc/uclibc_0.9.29.bb
@@ -7,7 +7,7 @@
# on whether the base patches apply to the selected (SRCDATE) svn release.
#
UCLIBC_BASE ?= "0.9.29"
-PR = "r8"
+PR = "r9"
require uclibc.inc
@@ -17,6 +17,8 @@ SRC_URI += "file://uClibc.machine file://uClibc.distro \
file://errno_values.h.patch;patch=1 \
file://termios.h.patch;patch=1 \
file://uClibc-0.9.29-001-fix-mmap.patch;patch=1 \
+ file://uClibc-0.9.29-002-atmel.1.patch;patch=1 \
+ file://uClibc-0.9.29-avr32-fix-sa_onstack.patch;patch=1 \
file://uClibc-0.9.29-conditional-sched_affinity.patch;patch=1 \
file://uClibc-0.9.29-fix-gethostent_r-failure-retval.patch;patch=1 \
file://uClibc-0.9.29-fix-internal_function-definition.patch;patch=1 \
diff --git a/packages/udev/files/network.sh b/packages/udev/files/network.sh
index 5016328df4..182c26d86a 100644
--- a/packages/udev/files/network.sh
+++ b/packages/udev/files/network.sh
@@ -1,5 +1,8 @@
#!/bin/sh
+# udevd does clearenv(). Export shell PATH to children.
+export PATH
+
# Do not run when pcmcia-cs is installed
test -x /sbin/cardctl && exit 0
diff --git a/packages/udev/files/slugos/mount.sh b/packages/udev/files/slugos/mount.sh
new file mode 100644
index 0000000000..11714c1390
--- /dev/null
+++ b/packages/udev/files/slugos/mount.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+#
+# Called from udev
+# Attemp to mount any added block devices
+# and remove any removed devices
+#
+
+MOUNT="/bin/mount"
+PMOUNT="/usr/bin/pmount"
+UMOUNT="/bin/umount"
+name="`basename "$DEVNAME"`"
+
+for line in `cat /etc/udev/mount.blacklist | grep -v ^#`
+do
+ if ( echo "$DEVNAME" | grep -q "$line" )
+ then
+ logger "udev/mount.sh" "[$DEVNAME] is blacklisted, ignoring"
+ exit 0
+ fi
+done
+
+automount() {
+ ! test -d "/media/$name" && mkdir -p "/media/$name"
+
+ if ! $MOUNT -t auto -o sync $DEVNAME "/media/$name"
+ then
+ #logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!"
+ rm_dir "/media/$name"
+ else
+ logger "mount.sh/automount" "Auto-mount of [/media/$name] successful"
+ touch "/tmp/.automount-$name"
+ fi
+}
+
+rm_dir() {
+ # We do not want to rm -r populated directories
+ if test "`find "$1" | wc -l | tr -d " "`" -lt 2 -a -d "$1"
+ then
+ ! test -z "$1" && rm -r "$1"
+ else
+ logger "mount.sh/automount" "Not removing non-empty directory [$1]"
+ fi
+}
+
+if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then
+ # SlugOS: we pivot to the rootfs based on UUID, not on fstab -- so the fstab may not
+ # be correct at this point in the boot. So we must not let udev mount devices based
+ # soley on the fstab, lest we mount overtop the real rootfs. For now we just comment
+ # out the logic below and let the automount logic (far below) deal with all udev mount
+ # operations.
+ #if [ -x "$PMOUNT" ]; then
+ # $PMOUNT $DEVNAME 2> /dev/null
+ #elif [ -x $MOUNT ]; then
+ # $MOUNT $DEVNAME 2> /dev/null
+ #fi
+
+ # If the device isn't mounted at this point, it isn't configured in fstab
+ # 20061107: Small correction: The rootfs partition may be called just "rootfs" and not by
+ # its true device name so this would break. If the rootfs is mounted on two places
+ # during boot, it confuses the heck out of fsck. So Im auto-adding the root-partition
+ # to /etc/udev/mount.blacklist via postinst
+
+ cat /proc/mounts | awk '{print $1}' | grep -q "^$DEVNAME$" || automount
+
+fi
+
+
+
+if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
+ for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " `
+ do
+ $UMOUNT $mnt
+ done
+
+ # Remove empty directories from auto-mounter
+ test -e "/tmp/.automount-$name" && rm_dir "/media/$name"
+fi
diff --git a/packages/udev/udev-115/noasmlinkage.patch b/packages/udev/udev-115/noasmlinkage.patch
deleted file mode 100644
index 5824d29590..0000000000
--- a/packages/udev/udev-115/noasmlinkage.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
----
- udevd.c | 2 +-
- udevstart.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-Index: udev-115/udevd.c
-===================================================================
---- udev-115.orig/udevd.c 2007-08-24 01:29:54.000000000 +0200
-+++ udev-115/udevd.c 2007-09-20 17:04:51.000000000 +0200
-@@ -767,7 +767,7 @@
- return msg;
- }
-
--static void asmlinkage sig_handler(int signum)
-+static void sig_handler(int signum)
- {
- switch (signum) {
- case SIGINT:
-Index: udev-115/udevstart.c
-===================================================================
---- udev-115.orig/udevstart.c 2007-08-24 01:29:54.000000000 +0200
-+++ udev-115/udevstart.c 2007-09-20 17:04:51.000000000 +0200
-@@ -304,7 +304,7 @@
- }
- }
-
--static void asmlinkage sig_handler(int signum)
-+static void sig_handler(int signum)
- {
- switch (signum) {
- case SIGALRM:
diff --git a/packages/xorg-lib/libice/.mtn2git_empty b/packages/udev/udev-118/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libice/.mtn2git_empty
+++ b/packages/udev/udev-118/.mtn2git_empty
diff --git a/packages/udev/udev-115/flags.patch b/packages/udev/udev-118/flags.patch
index 13f20eb6a8..13f20eb6a8 100644
--- a/packages/udev/udev-115/flags.patch
+++ b/packages/udev/udev-118/flags.patch
diff --git a/packages/udev/udev-115/init b/packages/udev/udev-118/init
index 73c655a0ee..73c655a0ee 100644
--- a/packages/udev/udev-115/init
+++ b/packages/udev/udev-118/init
diff --git a/packages/udev/udev-115/local.rules b/packages/udev/udev-118/local.rules
index 5b926018f5..5b926018f5 100644
--- a/packages/udev/udev-115/local.rules
+++ b/packages/udev/udev-118/local.rules
diff --git a/packages/udev/udev-115/permissions.rules b/packages/udev/udev-118/permissions.rules
index 99e03b1036..99e03b1036 100644
--- a/packages/udev/udev-115/permissions.rules
+++ b/packages/udev/udev-118/permissions.rules
diff --git a/packages/udev/udev-115/udev.rules b/packages/udev/udev-118/udev.rules
index 72be706e84..72be706e84 100644
--- a/packages/udev/udev-115/udev.rules
+++ b/packages/udev/udev-118/udev.rules
diff --git a/packages/udev/udev-115/udevtrigger_add_devname_filtering.patch b/packages/udev/udev-118/udevtrigger_add_devname_filtering.patch
index 87cafcaa9d..87cafcaa9d 100644
--- a/packages/udev/udev-115/udevtrigger_add_devname_filtering.patch
+++ b/packages/udev/udev-118/udevtrigger_add_devname_filtering.patch
diff --git a/packages/udev/udev-115/vol_id_ld.patch b/packages/udev/udev-118/vol_id_ld.patch
index 11126eef8d..11126eef8d 100644
--- a/packages/udev/udev-115/vol_id_ld.patch
+++ b/packages/udev/udev-118/vol_id_ld.patch
diff --git a/packages/udev/udev_100.bb b/packages/udev/udev_100.bb
index ac981bbe9c..c8840e1a8f 100644
--- a/packages/udev/udev_100.bb
+++ b/packages/udev/udev_100.bb
@@ -9,12 +9,13 @@ used to detect the type of a file system and read its metadata."
DESCRIPTION_libvolume-id-dev = "libvolume_id development headers, \
needed to link programs with libvolume_id."
-PR = "r10"
+PR = "r11"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
file://noasmlinkage.patch;patch=1 \
file://flags.patch;patch=1 \
file://mount.blacklist \
+ file://mount.sh \
"
require udev.inc
diff --git a/packages/udev/udev_115.bb b/packages/udev/udev_115.bb
deleted file mode 100644
index 9dd0bf2c8f..0000000000
--- a/packages/udev/udev_115.bb
+++ /dev/null
@@ -1,68 +0,0 @@
-DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
-/dev/, handles hotplug events and loads drivers at boot time. It replaces \
-the hotplug package and requires a kernel not older than 2.6.12."
-RPROVIDES_${PN} = "hotplug"
-
-PR = "r0"
-
-DEFAULT_PREFERENCE = "-115"
-
-SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
- file://noasmlinkage.patch;patch=1 \
- file://flags.patch;patch=1 \
- file://vol_id_ld.patch;patch=1 \
- file://udevtrigger_add_devname_filtering.patch;patch=1 \
- file://mount.blacklist \
- "
-
-require udev.inc
-
-INITSCRIPT_PARAMS = "start 03 S ."
-
-FILES_${PN} += "${base_libdir}/udev/*"
-FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
-UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
-EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
-
-do_install () {
- install -d ${D}${usrsbindir} \
- ${D}${sysconfdir} \
- ${D}${sbindir}
- oe_runmake 'DESTDIR=${D}' INSTALL=install install
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
-
- install -d ${D}${sysconfdir}/udev/rules.d/
-
- install -m 0644 ${WORKDIR}/mount.blacklist ${D}${sysconfdir}/udev/
- install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
- install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
- install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
- install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
- if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
- install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
- fi
-
- install -d ${D}${sysconfdir}/udev/scripts/
-
- install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
- install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
-
- install -d ${D}${base_libdir}/udev/
-}
-
-pkg_postinst_append() {
-
- # Add the root partition to mount.blacklist to avoid a bug in the auto-mounter,
- # causing confusion with fsck on boot
-
- while read dev mp fs junk
- do
- if test "$mp" = "/"
- then
- root_partition="$dev"
- echo "$root_partition" >> ${sysconfdir}/udev/mount.blacklist
- fi
- done < ${sysconfdir}/fstab
-}
-
diff --git a/packages/udev/udev_118.bb b/packages/udev/udev_118.bb
new file mode 100644
index 0000000000..a4c12877f5
--- /dev/null
+++ b/packages/udev/udev_118.bb
@@ -0,0 +1,72 @@
+DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
+/dev/, handles hotplug events and loads drivers at boot time. It replaces \
+the hotplug package and requires a kernel not older than 2.6.12."
+RPROVIDES_${PN} = "hotplug"
+
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-115"
+
+SRC_URI = "\
+ http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
+ file://flags.patch;patch=1 \
+ file://vol_id_ld.patch;patch=1 \
+ file://udevtrigger_add_devname_filtering.patch;patch=1 \
+ file://mount.blacklist \
+"
+
+require udev.inc
+
+INITSCRIPT_PARAMS = "start 03 S ."
+
+FILES_${PN} += "${base_libdir}/udev/*"
+FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
+UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
+EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
+
+do_compile_prepend() {
+ sed -i s,asmlinkage,, *.c
+}
+
+do_install () {
+ install -d ${D}${usrsbindir} \
+ ${D}${sysconfdir} \
+ ${D}${sbindir}
+ oe_runmake 'DESTDIR=${D}' INSTALL=install install
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
+
+ install -d ${D}${sysconfdir}/udev/rules.d/
+
+ install -m 0644 ${WORKDIR}/mount.blacklist ${D}${sysconfdir}/udev/
+ install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
+ install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
+ install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
+ install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
+ if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
+ install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
+ fi
+
+ install -d ${D}${sysconfdir}/udev/scripts/
+
+ install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
+ install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
+
+ install -d ${D}${base_libdir}/udev/
+}
+
+pkg_postinst_append() {
+
+ # Add the root partition to mount.blacklist to avoid a bug in the auto-mounter,
+ # causing confusion with fsck on boot
+
+ while read dev mp fs junk
+ do
+ if test "$mp" = "/"
+ then
+ root_partition="$dev"
+ echo "$root_partition" >> ${sysconfdir}/udev/mount.blacklist
+ fi
+ done < ${sysconfdir}/fstab
+}
+
diff --git a/packages/udhcp/udhcp_0.9.8.bb b/packages/udhcp/udhcp_0.9.8.bb
index 0974739514..d100be74da 100644
--- a/packages/udhcp/udhcp_0.9.8.bb
+++ b/packages/udhcp/udhcp_0.9.8.bb
@@ -19,7 +19,7 @@ EXTRA_OEMAKE = "'CC=${CC}' 'LD=${CCLD}' \
'usrbindir=${bindir}' \
'datadir=${datadir}'"
-PACKAGES = "udhcpc udhcpc-doc udhcpd udhcpd-doc"
+PACKAGES = "${PN}-dbg udhcpc udhcpc-doc udhcpd udhcpd-doc"
FILES_udhcpc = "/sbin/udhcpc ${datadir}/udhcpc"
FILES_udhcpc-doc = "${mandir}/man8/udhcpc.8"
FILES_udhcpd = "${sbindir}/udhcpd \
diff --git a/packages/unionfs/unionfs-modules_1.0.11.bb b/packages/unionfs/unionfs-modules_1.0.11.bb
index a6920de009..c9ca1d130d 100644
--- a/packages/unionfs/unionfs-modules_1.0.11.bb
+++ b/packages/unionfs/unionfs-modules_1.0.11.bb
@@ -1,2 +1,4 @@
require unionfs-modules.inc
require unionfs.inc
+
+SRC_URI += "file://make.patch;patch=1"
diff --git a/packages/unionfs/unionfs.inc b/packages/unionfs/unionfs.inc
index 4035937740..e336fd3e07 100644
--- a/packages/unionfs/unionfs.inc
+++ b/packages/unionfs/unionfs.inc
@@ -4,8 +4,7 @@ physical content separate."
HOMEPAGE = "http://www.fsl.cs.sunysb.edu/project-unionfs.html"
LICENSE = "GPL"
-SRC_URI = "ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/unionfs-1.x/unionfs-${PV}.tar.gz \
- file://make.patch;patch=1"
+SRC_URI = "ftp://ftp.fsl.cs.sunysb.edu/pub/unionfs/OLD/unionfs-1.x/unionfs-${PV}.tar.gz"
S = "${WORKDIR}/unionfs-${PV}"
FILESPATH = "${FILE_DIRNAME}/unionfs-${PV}:${FILE_DIRNAME}/unionfs:${FILE_DIRNAME}/files:${FILE_DIRNAME}"
diff --git a/packages/upnp/libupnp_1.4.2.bb b/packages/upnp/libupnp_1.4.2.bb
new file mode 100644
index 0000000000..a7a01597ac
--- /dev/null
+++ b/packages/upnp/libupnp_1.4.2.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "The portable SDK for UPnP* Devices (libupnp) provides developers with an API and open source code for building control points, devices, and bridges that are compliant with Version 1.0 of the Universal Plug and Play Device Architecture Specification."
+HOMEPAGE = "http://pupnp.sourceforge.net/"
+LICENSE = "BSD"
+
+LEAD_SONAME = "libupnp"
+SRC_URI = "${SOURCEFORGE_MIRROR}/pupnp/${P}.tar.bz2"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/upslug/upslug2.inc b/packages/upslug/upslug2.inc
index 9bee027034..1450cf26a0 100644
--- a/packages/upslug/upslug2.inc
+++ b/packages/upslug/upslug2.inc
@@ -27,5 +27,4 @@ inherit autotools
S = "${WORKDIR}/upslug2-${PV}"
-PACKAGES = "${PN}"
EXTRA_OECONF += "${LIBPCAP_OECONF}"
diff --git a/packages/ushare/ushare_1.1a.bb b/packages/ushare/ushare_1.1a.bb
new file mode 100644
index 0000000000..b198d89c95
--- /dev/null
+++ b/packages/ushare/ushare_1.1a.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "ushare is a UPnP media server"
+LICENSE = "GPL"
+HOMEPAGE = "http://ushare.geexbox.org/"
+DEPENDS = "libupnp virtual/libiconv virtual/libintl"
+SRC_URI = "http://ushare.geexbox.org/releases/ushare-${PV}.tar.bz2"
+S = "${WORKDIR}/ushare-${PV}"
+
+inherit autotools gettext
+
+# the configure script is hand-crafted, it rejects some of the usual
+# configure arguments
+do_configure () {
+ ${S}/configure \
+ --prefix=${prefix} \
+ --bindir=${bindir} \
+ --localedir=${datadir}/locale \
+ --sysconfdir=${sysconfdir} \
+ --cross-compile
+}
+
diff --git a/packages/usrp/usrp_0.12.bb b/packages/usrp/usrp_0.12.bb
index b47ea9b62e..7112fc621a 100644
--- a/packages/usrp/usrp_0.12.bb
+++ b/packages/usrp/usrp_0.12.bb
@@ -37,5 +37,5 @@ do_stage () {
}
PACKAGES += "python-pyusrp-dbg python-pyusrp"
-FILES_python-pyusrp-dbg = "${libdir}/python*/site-packages/.debug"
+FILES_python-pyusrp-dbg += "${libdir}/python*/site-packages/.debug"
FILES_python-pyusrp = "${libdir}/python*"
diff --git a/packages/util-linux/files/fdiskbsdlabel-avr32.patch b/packages/util-linux/files/fdiskbsdlabel-avr32.patch
new file mode 100644
index 0000000000..4a7d8f4dc8
--- /dev/null
+++ b/packages/util-linux/files/fdiskbsdlabel-avr32.patch
@@ -0,0 +1,11 @@
+--- /tmp/fdiskbsdlabel.h 2007-09-14 08:52:56.188364759 +0200
++++ util-linux-2.12r/fdisk/fdiskbsdlabel.h 2007-09-14 08:53:31.279986639 +0200
+@@ -43,7 +43,7 @@
+
+ #define BSD_LINUX_BOOTDIR "/usr/ucb/mdec"
+
+-#if defined (i386) || defined (__sparc__) || defined (__arm__) || defined (__mips__) || defined (__s390__) || defined (__sh__) || defined(__x86_64__)
++#if defined (i386) || defined (__sparc__) || defined (__arm__) || defined (__mips__) || defined (__s390__) || defined (__sh__) || defined(__x86_64__) || defined(__avr32__)
+ #define BSD_LABELSECTOR 1
+ #define BSD_LABELOFFSET 0
+ #elif defined (__alpha__) || defined (__powerpc__) || defined (__ia64__) || defined (__hppa__)
diff --git a/packages/util-linux/util-linux_2.12r.bb b/packages/util-linux/util-linux_2.12r.bb
index 9d4b59c855..7f8c3dd9f8 100644
--- a/packages/util-linux/util-linux_2.12r.bb
+++ b/packages/util-linux/util-linux_2.12r.bb
@@ -3,5 +3,6 @@ require util-linux.inc
SRC_URI += "file://util-linux_2.12r-12.diff.gz;patch=1"
SRC_URI += "file://glibc-fix.patch;patch=1"
SRC_URI += "file://glibc-umount2.patch;patch=1"
+SRC_URI += "file://fdiskbsdlabel-avr32.patch;patch=1"
-PR = "r12"
+PR = "r13"
diff --git a/packages/vim/gvim_7.0.bb b/packages/vim/gvim_7.0.bb
index 3547c89d47..78a0c54f9d 100644
--- a/packages/vim/gvim_7.0.bb
+++ b/packages/vim/gvim_7.0.bb
@@ -2,7 +2,7 @@ VIMVER = "70"
require vim.inc
-DEPENDS += "gtk+"
+DEPENDS += "gtk+ xt"
PR = "r1"
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/vim-7.0', '${FILE_DIRNAME}/vim', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
diff --git a/packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb b/packages/vnc/fbvncserver-kmodule_0.9.4.bb
index 4abdb6c7b0..4abdb6c7b0 100644
--- a/packages/fbvncserver/fbvncserver-kmodule_0.9.4.bb
+++ b/packages/vnc/fbvncserver-kmodule_0.9.4.bb
diff --git a/packages/vnc/fbvncserver2_cvs.bb b/packages/vnc/fbvncserver2_cvs.bb
new file mode 100644
index 0000000000..29ce53274b
--- /dev/null
+++ b/packages/vnc/fbvncserver2_cvs.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "A Framebuffer VNC Server for PDA"
+AUTHOR = "Patrik Gfeller <gfellerpatrik@gmx.net>"
+HOMEPAGE = "http://fbvncserver.sourceforge.net/"
+SECTION = "console/utils"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+DEPENDS = "libvncserver jpeg zlib gmp tslib"
+RRECOMMENDS = "kernel-modules-uinput kernel-module-keybdev"
+RCONFLICTS = "fbvncserver, fbvncserver-kmodule"
+PV = "0.0.0+cvs${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "cvs://anonymous@fbvncserver.cvs.sourceforge.net/cvsroot/fbvncserver;method=pserver;module=ipkg"
+S = "${WORKDIR}/ipkg/src/"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-debug"
+
+FILES_${PN} += "${datadir}"
+
diff --git a/packages/vnc/fbvncserver_0.9.4.bb b/packages/vnc/fbvncserver_0.9.4.bb
new file mode 100644
index 0000000000..4e6ee15a86
--- /dev/null
+++ b/packages/vnc/fbvncserver_0.9.4.bb
@@ -0,0 +1,51 @@
+DESCRIPTION = "Framebuffer VNC server"
+SECTION = "console/utils"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "libvncserver jpeg zlib"
+RDEPENDS = "fbvncserver-kmodule libvncserver-storepasswd libvncserver-javaapplet"
+PR = "r3"
+
+SRC_URI = "http://sdgsystems.com/download/fbvncserver-${PV}.tar.gz \
+ file://libvncs0.6.patch;patch=1 \
+ file://paths.patch;patch=1 \
+ file://kernelinclude.patch;patch=1 \
+ file://buildfix.patch;patch=1 \
+ file://ipaq.patch;patch=1 \
+ file://init"
+
+S = "${WORKDIR}/fbvncserver-${PV}"
+
+export INCLUDES = "-I${STAGING_INCDIR}"
+export LIBS = "-L${STAGING_LIBDIR} -lpthread"
+export VNCSERVER_DIR = "${STAGING_LIBDIR}"
+export ZAURUS_ZLIB_LIBS = "${STAGING_LIBDIR}"
+export ZAURUS_JPEG_LIBS = "${STAGING_LIBDIR}"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "fbvncinput"
+INITSCRIPT_PARAMS = "defaults 97"
+
+FBVNCSERVER_SYSTEM = "zaurus"
+FBVNCSERVER_SYSTEM_h3600 = "ipaq"
+FBVNCSERVER_SYSTEM_h3900 = "ipaq"
+
+do_compile () {
+ oe_runmake ${FBVNCSERVER_SYSTEM}_fbvncserver ${FBVNCSERVER_SYSTEM}_tssimd
+}
+
+do_install () {
+ install -d ${D}${bindir}
+ install -m 0755 ${FBVNCSERVER_SYSTEM}_fbvncserver ${D}${bindir}/fbvncserver
+ install -m 0755 ${FBVNCSERVER_SYSTEM}_tssimd ${D}${bindir}/tssimd
+
+ install -d ${D}${datadir}/fbvncserver
+ install -m 0644 ${FBVNCSERVER_SYSTEM}_panel.jpg ${D}${datadir}/fbvncserver/
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/fbvncinput
+}
+
+FILES_${PN} += " /usr/share/fbvncserver/*.jpg"
+
diff --git a/packages/xorg-lib/libsm/.mtn2git_empty b/packages/vnc/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libsm/.mtn2git_empty
+++ b/packages/vnc/files/.mtn2git_empty
diff --git a/packages/fbvncserver/files/buildfix.patch b/packages/vnc/files/buildfix.patch
index 302dbd9e8e..302dbd9e8e 100644
--- a/packages/fbvncserver/files/buildfix.patch
+++ b/packages/vnc/files/buildfix.patch
diff --git a/packages/fbvncserver/files/init b/packages/vnc/files/init
index b01a1ebd79..b01a1ebd79 100644
--- a/packages/fbvncserver/files/init
+++ b/packages/vnc/files/init
diff --git a/packages/fbvncserver/files/ipaq.patch b/packages/vnc/files/ipaq.patch
index e8070c0f25..e8070c0f25 100644
--- a/packages/fbvncserver/files/ipaq.patch
+++ b/packages/vnc/files/ipaq.patch
diff --git a/packages/fbvncserver/files/kernelinclude.patch b/packages/vnc/files/kernelinclude.patch
index b17d4e09c2..b17d4e09c2 100644
--- a/packages/fbvncserver/files/kernelinclude.patch
+++ b/packages/vnc/files/kernelinclude.patch
diff --git a/packages/fbvncserver/files/libvncs0.6.patch b/packages/vnc/files/libvncs0.6.patch
index 0975c376bd..0975c376bd 100644
--- a/packages/fbvncserver/files/libvncs0.6.patch
+++ b/packages/vnc/files/libvncs0.6.patch
diff --git a/packages/fbvncserver/files/paths.patch b/packages/vnc/files/paths.patch
index 7c122efc67..7c122efc67 100644
--- a/packages/fbvncserver/files/paths.patch
+++ b/packages/vnc/files/paths.patch
diff --git a/packages/xorg-lib/libxau/.mtn2git_empty b/packages/vnc/libvncserver/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxau/.mtn2git_empty
+++ b/packages/vnc/libvncserver/.mtn2git_empty
diff --git a/packages/vnc/libvncserver/configure_ac.patch b/packages/vnc/libvncserver/configure_ac.patch
new file mode 100644
index 0000000000..07c067ce7f
--- /dev/null
+++ b/packages/vnc/libvncserver/configure_ac.patch
@@ -0,0 +1,15 @@
+--- LibVNCServer-0.9.1-org/configure.ac 2007-06-02 21:36:29.000000000 +0200
++++ LibVNCServer-0.9.1-org-org/configure.ac 2007-05-27 17:14:22.000000000 +0200
+@@ -676,9 +676,9 @@
+ libvncserver-config
+ LibVNCServer.spec])
+ # x11vnc only:
+-if test "$build_x11vnc" = "yes"; then
+- AC_CONFIG_FILES([x11vnc/Makefile x11vnc/misc/Makefile])
+-fi
++# if test "$build_x11vnc" = "yes"; then
++# AC_CONFIG_FILES([x11vnc/Makefile x11vnc/misc/Makefile])
++# fi
+
+ AC_CONFIG_COMMANDS([chmod-libvncserver-config],[chmod a+x libvncserver-config])
+ AC_OUTPUT
diff --git a/packages/vnc/libvncserver_0.9.1.bb b/packages/vnc/libvncserver_0.9.1.bb
new file mode 100644
index 0000000000..c079fdeb15
--- /dev/null
+++ b/packages/vnc/libvncserver_0.9.1.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "library for easy implementation of a RDP/VNC server"
+AUTHOR = "Johannes Schindelin <dscho@users.sourceforge.net"
+HOMEPAGE = "http://sourceforge.net/projects/libvncserver/"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+DEPENDS = "zlib jpeg"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/LibVNCServer-${PV}.tar.gz \
+ file://configure_ac.patch"
+S = "${WORKDIR}/LibVNCServer-${PV}"
+
+# => create libvncserver only
+EXTRA_OEMAKE_append=" SUBDIRS='libvncserver' "
+
+inherit autotools
+do_stage() {
+ autotools_stage_all
+}
+
+
+
diff --git a/packages/vnc/libvncserver_0.9.bb b/packages/vnc/libvncserver_0.9.bb
new file mode 100644
index 0000000000..7aca752c0b
--- /dev/null
+++ b/packages/vnc/libvncserver_0.9.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "A library to support implementations of RDP/VNC servers"
+AUTHOR = "Johannes Schindelin <dscho@users.sourceforge.net>"
+HOMEPAGE = "http://sourceforge.net/projects/libvncserver"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+DEPENDS = "virtual/libsdl virtual/libx11 zlib jpeg libxext"
+PROVIDES = "x11vnc"
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/LibVNCServer-${PV}.tar.gz"
+S = "${WORKDIR}/LibVNCServer-${PV}"
+
+inherit autotools
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install_append() {
+ install -d ${D}${bindir}
+ install -m 0755 examples/storepasswd ${D}${bindir}
+ install -d ${D}${datadir}/fbvncserver/classes
+ install -m 0644 classes/index.vnc ${D}${datadir}/fbvncserver/classes/
+ install -m 0644 classes/VncViewer.jar ${D}${datadir}/fbvncserver/classes/
+}
+
+PACKAGES =+ "x11vnc libvncserver-storepasswd libvncserver-javaapplet"
+FILES_x11vnc = "${bindir}/x11vnc ${bindir}/LinuxVNC"
+FILES_libvncserver-storepasswd = "${bindir}/storepasswd"
+FILES_libvncserver-javaapplet = "${datadir}/fbvncserver/classes/index.vnc \
+ ${datadir}/fbvncserver/classes/VncViewer.jar"
diff --git a/packages/x11vnc/x11vnc_0.9.3.bb b/packages/vnc/x11vnc_0.9.3.bb
index 04ac87b444..04ac87b444 100644
--- a/packages/x11vnc/x11vnc_0.9.3.bb
+++ b/packages/vnc/x11vnc_0.9.3.bb
diff --git a/packages/xorg-lib/libxaw/.mtn2git_empty b/packages/vorbis-tools/vorbis-tools-1.1.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxaw/.mtn2git_empty
+++ b/packages/vorbis-tools/vorbis-tools-1.1.1/.mtn2git_empty
diff --git a/packages/vorbis-tools/vorbis-tools-1.1.1/remove-deprecated-curl-option.patch b/packages/vorbis-tools/vorbis-tools-1.1.1/remove-deprecated-curl-option.patch
new file mode 100644
index 0000000000..5c52ef1b0d
--- /dev/null
+++ b/packages/vorbis-tools/vorbis-tools-1.1.1/remove-deprecated-curl-option.patch
@@ -0,0 +1,12 @@
+diff -urN vorbis-tools-1.1.1.orig/ogg123/http_transport.c vorbis-tools-1.1.1/ogg123/http_transport.c
+--- vorbis-tools-1.1.1.orig/ogg123/http_transport.c 2005-06-13 15:11:44.000000000 +0200
++++ vorbis-tools-1.1.1/ogg123/http_transport.c 2007-12-19 10:40:19.000000000 +0100
+@@ -116,7 +116,7 @@
+ if (inputOpts.ProxyTunnel)
+ curl_easy_setopt (handle, CURLOPT_HTTPPROXYTUNNEL, inputOpts.ProxyTunnel);
+ */
+- curl_easy_setopt(handle, CURLOPT_MUTE, 1);
++ /* curl_easy_setopt(handle, CURLOPT_MUTE, 1); */
+ curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, private->error);
+ curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
+ curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, private);
diff --git a/packages/vorbis-tools/vorbis-tools_1.1.1.bb b/packages/vorbis-tools/vorbis-tools_1.1.1.bb
new file mode 100644
index 0000000000..01fc248dd1
--- /dev/null
+++ b/packages/vorbis-tools/vorbis-tools_1.1.1.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "vorbis-tools contains oggenc (an encoder), ogg123 (a playback tool), \
+ogginfo (displays ogg information), vcut (ogg file splitter), and \
+vorbiscomment (ogg comment editor)."
+LICENSE = "GPL"
+DEPENDS = "libogg libvorbis libao curl"
+SECTION = "console/multimedia"
+
+SRC_URI = "http://downloads.xiph.org/releases/vorbis/vorbis-tools-${PV}.tar.gz \
+ file://remove-deprecated-curl-option.patch;patch=1"
+
+inherit autotools
+
+EXTRA_OECONF = "--without-flac --without-speex \
+ --with-ogg-libraries=${STAGING_LIBDIR}/ \
+ --with-ogg-includes=${STAGING_INCDIR}/ \
+ --with-vorbis-libraries=${STAGING_LIBDIR}/ \
+ --with-vorbis-includes=${STAGING_INCDIR}/ \
+ --with-ao-libraries=${STAGING_LIBDIR}/ \
+ --with-ao-includes=${STAGING_INCDIR}/ \
+ --with-curl-libraries=${STAGING_LIBDIR}/ \
+ --with-curl-includes=${STAGING_INCDIR}/"
diff --git a/packages/webkit/webkit-gtk_svn.bb b/packages/webkit/webkit-gtk_svn.bb
index 2e47d38dbd..6a99a96001 100644
--- a/packages/webkit/webkit-gtk_svn.bb
+++ b/packages/webkit/webkit-gtk_svn.bb
@@ -8,7 +8,7 @@ WEBKIT_PORT = "gtk-port"
WEBKIT_EXTRA_OPTIONS = "CONFIG-=qt"
FILES_webkit-gtklauncher = "${bindir}/GtkLauncher"
-FILES_webkit-gtklauncher-dbg = "${bindir}/.debug/GtkLauncher"
+FILES_webkit-gtklauncher-dbg += "${bindir}/.debug/GtkLauncher"
require webkit.inc
diff --git a/packages/webkit/webkit-qt.inc b/packages/webkit/webkit-qt.inc
index 1dbf71c010..5522a7cf53 100644
--- a/packages/webkit/webkit-qt.inc
+++ b/packages/webkit/webkit-qt.inc
@@ -2,7 +2,7 @@ WEBKIT_PORT = "qt"
WEBKIT_EXTRA_OPTIONS = ""
FILES_${PN}launcher = "${bindir}/QtLauncher"
-FILES_${PN}launcher-dbg = "${bindir}/.debug/*"
+FILES_${PN}launcher-dbg += "${bindir}/.debug/*"
RDEPENDS += "openssl"
diff --git a/packages/wifistix/wifistix-modules_5.0.16.p0.bb b/packages/wifistix/wifistix-modules_5.0.16.p0.bb
index 787c631d16..0eb6877558 100644
--- a/packages/wifistix/wifistix-modules_5.0.16.p0.bb
+++ b/packages/wifistix/wifistix-modules_5.0.16.p0.bb
@@ -47,7 +47,6 @@ do_install() {
install -m 0644 ${WORKDIR}/mcf25 ${D}${sysconfdir}/modutils/mcf25
}
-PACKAGES = "${PN}"
FILES_${PN} = "${base_libdir}/modules/"
FILES_${PN} += "${sysconfdir}/modprobe.d/"
FILES_${PN} += "${sysconfdir}/modutils/"
diff --git a/packages/wireshark/tshark_0.99.4.bb b/packages/wireshark/tshark_0.99.4.bb
new file mode 100644
index 0000000000..7338efdda7
--- /dev/null
+++ b/packages/wireshark/tshark_0.99.4.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "tshark is the text based verion of wireshark - a popular network protocol analyzer"
+HOMEPAGE = "http://www.ethereal.com"
+SECTION = "network"
+LICENSE = "GPL"
+DEPENDS = "perl-native gnutls libpcap pcre expat"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/wireshark/wireshark-${PV}.tar.bz2 \
+ file://use-our-lemon.patch;patch=1 \
+ file://no-host-includes.patch;patch=1"
+
+S=${WORKDIR}/wireshark-${PV}
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-wireshark"
+
+do_compile_prepend() {
+ ${BUILD_CC} ${BUILD_CFLAGS} -o rdps rdps.c
+ oe_runmake -C tools/lemon CC="${BUILD_CC} ${BUILD_CFLAGS}" LDFLAGS="${BUILD_LDFLAGS}"
+}
+
diff --git a/packages/wlan-ng/wlan-ng-modules.inc b/packages/wlan-ng/wlan-ng-modules.inc
index 9a0797fb00..4cf0733e7a 100644
--- a/packages/wlan-ng/wlan-ng-modules.inc
+++ b/packages/wlan-ng/wlan-ng-modules.inc
@@ -57,7 +57,7 @@ do_install() {
rm -f ${KERNEL_SOURCE}/../../config.mk
}
-PACKAGES = "wlan-ng-modules-usb wlan-ng-modules-cs wlan-ng-modules-pci wlan-ng-modules-p80211"
+PACKAGES = "${PN}-dbg wlan-ng-modules-usb wlan-ng-modules-cs wlan-ng-modules-pci wlan-ng-modules-p80211"
FILES_wlan-ng-modules-p80211 = "/lib/modules/${KERNEL_VERSION}/wlan-ng/p80211${KERNEL_OBJECT_SUFFIX}"
FILES_wlan-ng-modules-usb = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_usb${KERNEL_OBJECT_SUFFIX}"
FILES_wlan-ng-modules-cs = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_cs${KERNEL_OBJECT_SUFFIX}"
diff --git a/packages/wlan-ng/wlan-ng-modules_0.2.1-pre26.bb b/packages/wlan-ng/wlan-ng-modules_0.2.1-pre26.bb
index 60b29999ef..d9597febe4 100644
--- a/packages/wlan-ng/wlan-ng-modules_0.2.1-pre26.bb
+++ b/packages/wlan-ng/wlan-ng-modules_0.2.1-pre26.bb
@@ -6,7 +6,7 @@ RRECOMMENDS = "wlan-ng-utils"
LICENSE = "GPL"
PR = "r2"
-SRC_URI = "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2 \
+SRC_URI = "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/older/linux-wlan-ng-${PV}.tar.bz2 \
file://no-compat.patch;patch=1 \
file://only-the-modules.patch;patch=1 \
file://config.in"
diff --git a/packages/wrt/wrt-utils.bb b/packages/wrt/wrt-utils.bb
index 42a7460412..7e02f6830c 100644
--- a/packages/wrt/wrt-utils.bb
+++ b/packages/wrt/wrt-utils.bb
@@ -43,7 +43,7 @@ do_install() {
install -m 644 wlcompat.o ${D}/lib/modules/${KERNEL_VERSION}/
}
-PACKAGES = "wrt-libs wrt-utils kernel-module-wlcompat"
+PACKAGES = "${PN}-dbg wrt-libs wrt-utils kernel-module-wlcompat"
FILES_wrt-libs = "/usr/lib"
FILES_wrt-utils = "/usr/sbin /sbin"
FILES_kernel-module-wlcompat = "/lib/modules/"
diff --git a/packages/wxbase/wxbase_2.6.2.bb b/packages/wxwidgets/wxbase_2.6.2.bb
index 07d9199ae1..07d9199ae1 100644
--- a/packages/wxbase/wxbase_2.6.2.bb
+++ b/packages/wxwidgets/wxbase_2.6.2.bb
diff --git a/packages/wxbase/wxbase_2.7+cvs.bb b/packages/wxwidgets/wxbase_2.7+cvs.bb
index 772ea4e27f..772ea4e27f 100644
--- a/packages/wxbase/wxbase_2.7+cvs.bb
+++ b/packages/wxwidgets/wxbase_2.7+cvs.bb
diff --git a/packages/xorg-lib/libxcalibrate/.mtn2git_empty b/packages/xapian/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxcalibrate/.mtn2git_empty
+++ b/packages/xapian/.mtn2git_empty
diff --git a/packages/xapian/xapian-core_1.0.5.bb b/packages/xapian/xapian-core_1.0.5.bb
new file mode 100644
index 0000000000..2af709324f
--- /dev/null
+++ b/packages/xapian/xapian-core_1.0.5.bb
@@ -0,0 +1,16 @@
+DESCRPITION = "Open Source Search Engine Library"
+HOMEPAGE = "http://xapian.org"
+SECTION = "devel/libs"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "zlib"
+PR = "r0"
+
+SRC_URI = "http://www.oligarchy.co.uk/xapian/1.0.5/xapian-core-${PV}.tar.gz"
+
+inherit autotools
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/xapian/xapian-quickstartindex_1.0.bb b/packages/xapian/xapian-quickstartindex_1.0.bb
new file mode 100644
index 0000000000..6deff9191e
--- /dev/null
+++ b/packages/xapian/xapian-quickstartindex_1.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Simplest possible indexer (from older release of xapian)"
+HOMEPAGE = "http://users.softlab.ece.ntua.gr/~ttsiod/buildWikipediaOffline.html"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "xapian-core"
+PR = "r0"
+
+SRC_URI = "http://users.softlab.ece.ntua.gr/~ttsiod/quickstartindex.cc"
+S = "${WORKDIR}"
+
+do_compile() {
+ ${CXX} ${CXXLAGS} ${LDFLAGS} -lxapian -o quickstartindex quickstartindex.cc
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/quickstartindex ${D}${bindir}/
+}
diff --git a/packages/xcb/libxcb_0.9.bb b/packages/xcb/libxcb_0.9.bb
index 161e83ad11..40eb256714 100644
--- a/packages/xcb/libxcb_0.9.bb
+++ b/packages/xcb/libxcb_0.9.bb
@@ -10,7 +10,7 @@ DEPENDS = "xcb-proto xproto libxau"
SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-0.9.tar.bz2"
-PACKAGES = "libxcb libxcb-dev libxcbcomposite libxcbcomposite-dev \
+PACKAGES = "${PN}-dbg libxcb libxcb-dev libxcbcomposite libxcbcomposite-dev \
libxcbdamage libxcbdamage-dev libxcbdpms libxcbdpms-dev \
libxcbglx libxcbglx-dev libxcbrandr libxcbrandr-dev \
libxcbrecord libxcbrecord-dev libxcbrender libxcbrender-dev \
diff --git a/packages/xorg-lib/libxcomposite-1.0.1/.mtn2git_empty b/packages/xmlpull/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxcomposite-1.0.1/.mtn2git_empty
+++ b/packages/xmlpull/.mtn2git_empty
diff --git a/packages/xorg-lib/libxcursor-1.1.2/.mtn2git_empty b/packages/xmlpull/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxcursor-1.1.2/.mtn2git_empty
+++ b/packages/xmlpull/files/.mtn2git_empty
diff --git a/packages/xmlpull/files/makefile.patch b/packages/xmlpull/files/makefile.patch
new file mode 100644
index 0000000000..6b0af10d8c
--- /dev/null
+++ b/packages/xmlpull/files/makefile.patch
@@ -0,0 +1,411 @@
+Index: xmlpull_1_1_3_4c/src/java/api/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xmlpull_1_1_3_4c/src/java/api/Makefile 2007-11-30 03:49:02.000000000 +0100
+@@ -0,0 +1,406 @@
++#
++# Makefile created at Fri Nov 30 03:45:26 2007, by mmake
++#
++
++# Programs (with common options):
++SHELL = /bin/sh
++CP = cp
++RM = rm -f
++MV = mv -f
++SED = sed
++ETAGS = etags
++XARGS = xargs
++CAT = cat
++FIND = find
++CPP = cpp -C -P
++
++INSTALL = install
++INSTALL_PROG = $(INSTALL) -m $(MODE_PROGS)
++INSTALL_FILE = $(INSTALL) -m $(MODE_FILES)
++INSTALL_DIR = $(INSTALL) -m $(MODE_DIRS) -d
++
++# Install modes
++MODE_PROGS = 555
++MODE_FILES = 444
++MODE_DIRS = 2755
++
++# Build programs
++JAVAC = javac
++JAVADOC = gjavadoc
++JAR = fastjar
++
++# Build flags
++JAVAC_FLAGS = -source 1.3 -target 1.1
++JAVADOC_FLAGS = -version -author
++JAR_FLAGS = cvf
++JIKES_DEP_FLAG = +M
++
++# ------------------------------------------------------------------- #
++
++# Prefix for every install directory
++PREFIX =
++
++# Where to start installing the class files. Set this to an empty value
++# if you dont want to install classes
++CLASS_DIR = $(PREFIX)classes
++
++# The directory to install the jar file in. Set this to an empty value
++# if you dont want to install a jar file
++JAR_DIR = $(PREFIX)lib
++
++# The directory to install the app bundle in. Set this to an empty value
++# if you dont want to install an app bundle
++BUNDLE_DIR = $(PREFIX)lib
++
++
++# The directory to install html files generated by javadoc
++DOC_DIR = $(PREFIX)doc/api-docs
++
++# The directory to install script files in
++SCRIPT_DIR = $(PREFIX)bin
++
++# ------------------------------------------------------------------- #
++
++# The name of the jar file to install
++JAR_FILE = xmlpull-1.1.3.4c.jar
++
++#
++# The VERSION variable below should be set to a value
++# that will be tested in the .xjava code and Info.plist.
++#
++VERSION = CHANGE_ME
++
++# ------------------------------------------------------------------- #
++
++# The name of the OS X Application Bundle to install
++BUNDLE_FILE =
++
++# Folder containing App Bundle resources (Info.plist, *.icns, etc.)
++BUNDLE_RESOURCE_DIR = misc/macosx
++
++# Items to copy to the Resources folder of the bundle
++BUNDLE_RESOURCES = $(addsuffix .icns, $(basename $(APP_FILE)) Document)
++
++# Location of JavaApplicatonStub
++JAVA_STUB = /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub
++
++# ------------------------------------------------------------------- #
++
++# Resource files:
++# Extend the list to install other files of your choice
++RESOURCE_SRC := *.properties *.gif *.au
++
++# Objects that should go into the jar file. (find syntax)
++JAR_OBJS := \( -name '*.class' -o -name '*.gif' -o -name "*.au" \
++ -o -name '*.properties' \)
++
++# Include the separate variables file if it exists
++MAKEFILE_VARS = makefile.vars
++VARS = $(wildcard $(MAKEFILE_VARS))
++ifneq ($(VARS),)
++ include $(MAKEFILE_VARS)
++endif
++
++
++# Packages we should compile
++PACKAGES = \
++ org.xmlpull.v1
++
++
++# All packages that can be recursively compiled.
++ALL_PACKAGES = \
++ org \
++ org.xmlpull \
++ $(PACKAGES)
++
++
++# Packages to generate docs for.
++JAVADOC_PACKAGES = $(PACKAGES)
++
++
++# Resource packages
++RESOURCES =
++
++
++# Directories with shell scripts
++SCRIPTS =
++
++# ------------------------------------------------------------------- #
++
++# A marker variable for the top level directory
++TOPLEVEL := .
++
++# Subdirectories with java files:
++JAVA_DIRS := $(subst .,/,$(PACKAGES)) $(TOPLEVEL)
++
++# Subdirectories with only resource files:
++RESOURCE_DIRS := $(subst .,/,$(RESOURCES))
++
++# All the .xjava source files:
++XJAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.xjava))
++
++# All the xjava files to build
++XJAVA_OBJS := $(XJAVA_SRC:.xjava=.java)
++
++# Directory coresponding to a package
++PACKAGE_DIR = $(subst .,/,$(1))
++
++# All the (x)java files in a package
++PACKAGE_SRC = $(shell $(FIND) $(PACKAGE_DIR) \( -name '*.java' -or -name '*.xjava' \) )
++
++# All the classes to build in a package
++PACKAGE_OBJS = $(patsubst %.java,%.class,$(PACKAGE_SRC: %.xjava=%.java))
++
++# All the .java source files:
++JAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.java))
++JAVA_SRC := $(XJAVA_OBJS) $(JAVA_SRC)
++
++# Dependency files:
++DEPEND_OBJS := $(JAVA_SRC:.java=.u)
++
++# The intermediate java files and main classes we should build:
++JAVA_OBJS := $(XJAVA_OBJS) $(JAVA_SRC:.java=.class)
++
++# Search for resource files in both JAVA_DIRS and RESOURCE_DIRS
++RESOURCE_OBJS := $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
++ $(wildcard $(foreach file, $(RESOURCE_SRC), \
++ $(dir)/$(file))))
++
++# All the shell scripts source
++SCRIPT_SRCS := $(foreach dir, $(SCRIPTS), $(wildcard $(dir)/*.sh))
++# All shell scripts we should install
++SCRIPT_OBJS := $(SCRIPT_SRCS:.sh=)
++
++# All the files to install into CLASS_DIR
++INSTALL_OBJS := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.class))
++# Escape inner class delimiter $
++INSTALL_OBJS := $(subst $$,\$$,$(INSTALL_OBJS))
++# Add the resource files to be installed as well
++INSTALL_OBJS := $(INSTALL_OBJS) $(RESOURCE_OBJS)
++
++
++# ------------------------------------------------------------------- #
++
++
++define check-exit
++|| exit 1
++
++endef
++
++
++# -----------
++# Build Rules
++# -----------
++
++%.java: %.xjava
++ $(CPP) -D$(VERSION) $< $@
++
++%.class: %.java
++ $(JAVAC) $(JAVAC_FLAGS) $<
++
++%.jar: $(JAVA_OBJS) $(RESOURCE_OBJS)
++ $(FIND) $(TOPLEVEL) $(JAR_OBJS) -print | $(XARGS) \
++ $(JAR) $(JAR_FLAGS) $(JAR_FILE)
++
++%.u: %.java
++ $(JAVAC) $(JIKES_DEP_FLAG) $<
++
++
++# -------
++# Targets
++# -------
++
++.PHONY: all jar install uninstall doc clean depend tags bundle \
++ help $(ALL_PACKAGES)
++
++all:: $(JAVA_OBJS)
++
++help:
++ @echo "Usage: make {all|jar|srcjar|bundle|install|uninstall|doc|clean|depend|tags|PACKAGE_NAME}"
++ @echo " all: build all classes"
++ @echo " jar: build jar file"
++ @echo " srcjar: build source jar file"
++ @echo " bundle: build OS X app bundle"
++ @echo " install: install classes into $(CLASS_DIR)"
++ @echo " jar into $(JAR_DIR)"
++ @echo " bundle into $(BUNDLE_DIR)"
++ @echo " javadocs into $(DOC_DIR)"
++ @echo " scripts into $(SCRIPT_DIR)"
++ @echo " uninstall: remove installed files"
++ @echo " doc: generate api docs from javadoc comments"
++ @echo " clean: remove classes and temporary files"
++ @echo " depend: build class dependency info using jikes"
++ @echo " tags: build emacs tags file"
++ @echo " PACKAGE_NAME: builds all classes in this package and any subpackages."
++
++# Jar target
++ifneq ($(strip $(JAR_FILE)),)
++jar: $(JAR_FILE)
++ifneq ($(strip $(JAR_DIR)),)
++install:: $(JAR_FILE)
++ @echo "===> [Installing jar file, $(JAR_FILE) in $(JAR_DIR)] "
++ $(INSTALL_DIR) $(JAR_DIR) $(check-exit)
++ $(INSTALL_FILE) $(JAR_FILE) $(JAR_DIR) $(check-exit)
++uninstall::
++ @echo "===> [Removing jar file, $(JAR_FILE) from $(JAR_DIR)] "
++ $(RM) $(JAR_DIR)/$(JAR_FILE) $(check-exit)
++else
++install::
++ @echo "No jar install dir defined"
++endif
++clean::
++ $(RM) $(JAR_FILE)
++else
++jar:
++ @echo "No jar file defined"
++endif
++
++SRC_JAR_FILE := $(basename $(JAR_FILE))-src$(suffix $JAR_FILE)
++
++# Source jar target
++srcjar : $(SRC_JAR_FILE)
++$(SRC_JAR_FILE): $(JAVA_SRC) $(RESOURCE_OBJS)
++ $(FIND) $(TOPLEVEL) $(JAR_OBJS: .class=.java) -print | $(XARGS) \
++ $(JAR) $(JAR_FLAGS) $@
++
++# Bundle target
++ifneq ($(strip $(BUNDLE_FILE)),)
++bundle: $(BUNDLE_FILE)
++$(BUNDLE_FILE) : $(JAR_FILE)
++ $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/Resources/Java $(check-exit)
++ $(INSTALL_DIR) $(BUNDLE_FILE)/Contents/MacOS $(check-exit)
++ $(INSTALL_PROG) $(JAVA_STUB) $(BUNDLE_FILE)/Contents/MacOS/ \
++ $(check-exit)
++ ( $(CAT) $(BUNDLE_RESOURCE_DIR)/Info.plist | $(SED) -e \
++ s/VERSION/$(VERSION)/ >98762infoplist876 ) $(check-exit)
++ $(INSTALL_FILE) 98762infoplist876 \
++ $(BUNDLE_FILE)/Contents/Info.plist $(check-exit)
++ $(RM) 98762infoplist876 $(check-exit)
++ $(INSTALL_FILE) $(JAR_FILE) $(BUNDLE_FILE)/Contents/Resources/Java
++ checkexit="";for f in $(BUNDLE_RESOURCES); do \
++ $(INSTALL_FILE) $(BUNDLE_RESOURCE_DIR)$$f $(BUNDLE_FILE)/Contents/Resources/ \
++ || checkexit=$?; \
++ done; test -z $$checkexit
++
++ifneq ($(strip $(BUNDLE_DIR)),)
++# This is probably bad, but I don't know how else to do it
++install:: $(BUNDLE_FILE)
++ @echo "===> [Installing app bundle, $(BUNDLE_FILE) in $(BUNDLE_DIR)] "
++ $(INSTALL_DIR) $(BUNDLE_DIR) $(check-exit)
++ $(CP) -R $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
++ $(INSTALL_FILE) $(BUNDLE_FILE) $(BUNDLE_DIR) $(check-exit)
++uninstall::
++ @echo "===> [Removing bundle file, $(BUNDLE_FILE) from $(BUNDLE_DIR)] "
++ $(RM) -r $(BUNDLE_DIR)/$(BUNDLE_FILE) $(check-exit)
++else
++install::
++ @echo "No bundle install dir defined"
++endif
++clean::
++ $(RM) -r $(BUNDLE_FILE)
++else
++bundle:
++ @echo "No bundle file defined"
++endif
++
++
++# Install target for Classes and Resources
++ifneq ($(strip $(CLASS_DIR)),)
++install:: $(JAVA_OBJS)
++ @echo "===> [Installing classes in $(CLASS_DIR)] "
++ $(INSTALL_DIR) $(CLASS_DIR) $(check-exit)
++ $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \
++ $(INSTALL_DIR) $(CLASS_DIR)/$(dir) $(check-exit))
++ $(foreach file, $(INSTALL_OBJS), \
++ $(INSTALL_FILE) $(file) $(CLASS_DIR)/$(file) \
++ $(check-exit))
++uninstall::
++ @echo "===> [Removing class-files from $(CLASS_DIR)] "
++ $(foreach file, $(INSTALL_OBJS), \
++ $(RM) $(CLASS_DIR)/$(file) \
++ $(check-exit))
++else
++# Print a warning here if you like. (No class install dir defined)
++endif
++
++
++
++# Depend target
++ifeq ($(findstring jikes,$(JAVAC)),jikes)
++depend: $(XJAVA_OBJS) $(DEPEND_OBJS)
++ ( $(CAT) $(DEPEND_OBJS) | $(SED) -e '/\.class$$/d' \
++ -e '/.*$$.*/d' > $(MAKEFILE_DEPEND); $(RM) $(DEPEND_OBJS); )
++else
++depend:
++ @echo "mmake needs the jikes compiler to build class dependencies"
++endif
++
++
++
++# Doc target
++ifneq ($(strip $(JAVADOC_PACKAGES)),)
++doc: $(JAVA_SRC)
++ @echo "===> [Installing java documentation in $(DOC_DIR)] "
++ $(INSTALL_DIR) $(DOC_DIR) $(check-exit)
++ $(JAVADOC) $(JAVADOC_FLAGS) -d $(DOC_DIR) $(JAVADOC_PACKAGES)
++else
++doc:
++ @echo "You must put your source files in a package to run make doc"
++endif
++
++
++
++# Script target
++ifneq ($(strip $(SCRIPT_OBJS)),)
++all:: $(SCRIPT_OBJS)
++ifneq ($(strip $(SCRIPT_DIR)),)
++install:: $(SCRIPT_OBJS)
++ @echo "===> [Installing shell-scripts in $(SCRIPT_DIR)] "
++ $(INSTALL_DIR) $(SCRIPT_DIR) $(check-exit)
++ $(foreach file, $(SCRIPT_OBJS), \
++ $(INSTALL_PROG) $(file) $(SCRIPT_DIR) $(check-exit))
++uninstall::
++ @echo "===> [Removing shell-scripts from $(SCRIPT_DIR)] "
++ $(foreach file, $(SCRIPT_OBJS), \
++ $(RM) $(SCRIPT_DIR)/$(file) $(check-exit))
++else
++# Print a warning here if you like. (No script install dir defined)
++endif
++clean::
++ rm -f $(SCRIPT_OBJS)
++endif
++
++
++
++# Tag target
++tags:
++ @echo "Tagging"
++ $(ETAGS) $(filter-out $(XJAVA_OBJS), $(JAVA_SRC)) $(XJAVA_SRC)
++
++
++
++# Various cleanup routines
++clean::
++ $(FIND) . \( -name '*~' -o -name '*.class' \) -print | \
++ $(XARGS) $(RM)
++ $(FIND) . -name '*.u' -print | $(XARGS) $(RM)
++
++ifneq ($(strip $(XJAVA_SRC)),)
++clean::
++ $(RM) $(XJAVA_OBJS)
++endif
++
++# ----------------------------------------
++# Include the dependency graph if it exist
++# ----------------------------------------
++MAKEFILE_DEPEND = makefile.dep
++DEPEND = $(wildcard $(MAKEFILE_DEPEND))
++ifneq ($(DEPEND),)
++ include $(MAKEFILE_DEPEND)
++endif
++
++#package targets
++org : $(call PACKAGE_OBJS,org)
++org.xmlpull : $(call PACKAGE_OBJS,org.xmlpull)
++org.xmlpull.v1 : $(call PACKAGE_OBJS,org.xmlpull.v1)
++
diff --git a/packages/xmlpull/xmlpull_1.1.3.4c.bb b/packages/xmlpull/xmlpull_1.1.3.4c.bb
new file mode 100644
index 0000000000..1ba09f79b6
--- /dev/null
+++ b/packages/xmlpull/xmlpull_1.1.3.4c.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "XML pull parser API"
+HOMEPAGE = "http://www.xmlpull.org"
+PRIORITY = "optional"
+SECTION = "libs"
+LICENSE = "public domain"
+PR = "r1"
+
+inherit java-library
+
+S = "${WORKDIR}/${PN}_1_1_3_4c"
+
+JAR = "${PN}-${PV}.jar"
+
+SRC_URI = "\
+ http://xmlpull.org/v1/download/xmlpull_1_1_3_4c_src.tgz \
+ file://makefile.patch;patch=1 \
+ "
+
+do_compile() {
+ oe_runmake -C src/java/api \
+ JAVAC_FLAGS="-sourcepath ." \
+ JAR="oefatal \"No jar invocation expected here.\"" \
+
+ oe_runmake -C src/java/api \
+ JAVAC="oefatal \"No Java compilation expected here.\"" \
+ jar
+}
+
+do_stage() {
+ oe_jarinstall -s ${S}/src/java/api/${JAR} ${PN}.jar
+}
+
+do_install() {
+ oe_jarinstall src/java/api/${JAR} ${PN}.jar
+}
diff --git a/packages/xmms-embedded/xmms-embedded_20040327.bb b/packages/xmms-embedded/xmms-embedded_20040327.bb
index c525f6299c..4d5ea6a12b 100644
--- a/packages/xmms-embedded/xmms-embedded_20040327.bb
+++ b/packages/xmms-embedded/xmms-embedded_20040327.bb
@@ -31,7 +31,7 @@ do_configure_prepend() {
}
do_compile() {
- oe_runmake "STAGING_DIR=${STAGING_DIR}/${HOST_SYS}"
+ oe_runmake "STAGING_DIR=${STAGING_EXECPREFIXDIR}"
}
do_install() {
diff --git a/packages/xmms/xmms-mad_0.10.bb b/packages/xmms/xmms-mad_0.10.bb
index f54dc16720..8c600f24b8 100644
--- a/packages/xmms/xmms-mad_0.10.bb
+++ b/packages/xmms/xmms-mad_0.10.bb
@@ -10,5 +10,5 @@ inherit autotools
export XMMS_CONFIG = "${STAGING_BINDIR_CROSS}/xmms-config"
FILES_${PN} = "${libdir}/xmms/Input/libxmmsmad.so"
-FILES_${PN}-dbg = "${libdir}/xmms/Input/.debug/libxmmsmad.so"
+FILES_${PN}-dbg += "${libdir}/xmms/Input/.debug/libxmmsmad.so"
diff --git a/packages/xmms/xmms-tremor_1.0.bb b/packages/xmms/xmms-tremor_1.0.bb
index 727ead1f80..21e2e8dc9b 100644
--- a/packages/xmms/xmms-tremor_1.0.bb
+++ b/packages/xmms/xmms-tremor_1.0.bb
@@ -7,5 +7,5 @@ SRC_URI = "http://mirror1.pdaxrom.org/source/src/xmms-tremor-1.0.tar.bz2"
inherit autotools
FILES_${PN} = "${libdir}/xmms/Input/libxmmstremor.so"
-FILES_${PN}-dbg = "${libdir}/xmms/Input/.debug/libxmmstremor.so"
+FILES_${PN}-dbg += "${libdir}/xmms/Input/.debug/libxmmstremor.so"
diff --git a/packages/xorg-app/bdftopcf-native_1.0.0.bb b/packages/xorg-app/bdftopcf-native_1.0.0.bb
new file mode 100644
index 0000000000..41049946e5
--- /dev/null
+++ b/packages/xorg-app/bdftopcf-native_1.0.0.bb
@@ -0,0 +1,8 @@
+inherit native
+require xorg-app-common.inc
+PE = "1"
+
+XORG_PN = "bdftopcf"
+
+DEPENDS = "libxfont-native"
+
diff --git a/packages/xorg-app/beforelight_1.0.3.bb b/packages/xorg-app/beforelight_1.0.3.bb
new file mode 100644
index 0000000000..c4833b03fd
--- /dev/null
+++ b/packages/xorg-app/beforelight_1.0.3.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "a sample implementation of a screen saver for X"
+DEPENDS += " virtual/libx11 libxscrnsaver libxt libxaw libxt"
+PE = "1"
diff --git a/packages/xorg-app/bitmap_1.0.2.bb b/packages/xorg-app/bitmap_1.0.2.bb
new file mode 100644
index 0000000000..63c5de6cf1
--- /dev/null
+++ b/packages/xorg-app/bitmap_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxmu xbitmaps libxt"
+
diff --git a/packages/xorg-app/bitmap_1.0.3.bb b/packages/xorg-app/bitmap_1.0.3.bb
new file mode 100644
index 0000000000..561489f188
--- /dev/null
+++ b/packages/xorg-app/bitmap_1.0.3.bb
@@ -0,0 +1,3 @@
+require xorg-app-common.inc
+DEPENDS += " virtual/libx11 libxmu xbitmaps libxt"
+PE = "1"
diff --git a/packages/xorg-app/fslsfonts_1.0.1.bb b/packages/xorg-app/fslsfonts_1.0.1.bb
new file mode 100644
index 0000000000..9ba7ad6030
--- /dev/null
+++ b/packages/xorg-app/fslsfonts_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libfs"
+
diff --git a/packages/xorg-app/fstobdf_1.0.2.bb b/packages/xorg-app/fstobdf_1.0.2.bb
new file mode 100644
index 0000000000..9ba7ad6030
--- /dev/null
+++ b/packages/xorg-app/fstobdf_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libfs"
+
diff --git a/packages/xorg-app/lbxproxy_1.0.1.bb b/packages/xorg-app/lbxproxy_1.0.1.bb
new file mode 100644
index 0000000000..1303947c27
--- /dev/null
+++ b/packages/xorg-app/lbxproxy_1.0.1.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "Applications that would like to take advantage of the Low Bandwidth \
+extension to X (LBX) must make their connections to an lbxproxy."
+
+DEPENDS += " xtrans libxext liblbxutil virtual/libx11 libice xproxymngproto bigreqsproto zlib"
diff --git a/packages/xorg-app/listres_1.0.1.bb b/packages/xorg-app/listres_1.0.1.bb
new file mode 100644
index 0000000000..97fab10f3d
--- /dev/null
+++ b/packages/xorg-app/listres_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw virtual/libx11 libxt libxmu"
+
diff --git a/packages/xorg-app/luit_1.0.3.bb b/packages/xorg-app/luit_1.0.3.bb
new file mode 100644
index 0000000000..01645af9e0
--- /dev/null
+++ b/packages/xorg-app/luit_1.0.3.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+DESCRIPTION = "a filter for locale and ISO 2022 support on Unicode terminals"
+DEPENDS += " zlib zlib virtual/libx11 libfontenc"
+PE = "1"
diff --git a/packages/xorg-lib/libxcursor/.mtn2git_empty b/packages/xorg-app/mkbold-mkitalic-native/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxcursor/.mtn2git_empty
+++ b/packages/xorg-app/mkbold-mkitalic-native/.mtn2git_empty
diff --git a/packages/xorg-app/mkbold-mkitalic-native/makebifonts b/packages/xorg-app/mkbold-mkitalic-native/makebifonts
new file mode 100644
index 0000000000..dc098955a2
--- /dev/null
+++ b/packages/xorg-app/mkbold-mkitalic-native/makebifonts
@@ -0,0 +1,5 @@
+#!/bin/sh
+cat $1.bdf | bdftopcf | gzip -c -3 > $2/$3.pcf.gz
+cat $1.bdf | mkbold | bdftopcf | gzip -c -3 > $2/$3_b.pcf.gz
+cat $1.bdf | mkitalic | bdftopcf | gzip -c -3 > $2/$3_i.pcf.gz
+cat $1.bdf | mkbolditalic | bdftopcf | gzip -c -3 > $2/$3_bi.pcf.gz
diff --git a/packages/xorg-app/mkbold-mkitalic-native_0.11.bb b/packages/xorg-app/mkbold-mkitalic-native_0.11.bb
new file mode 100644
index 0000000000..24ff14e01a
--- /dev/null
+++ b/packages/xorg-app/mkbold-mkitalic-native_0.11.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "mkbold-mkitalic : make bold and italic fonts from normal fonts"
+HOMEPAGE = "http://hp.vector.co.jp/authors/VA013651/freeSoftware/mkbold-mkitalic.html"
+PRIORITY = "optional"
+LICENSE = "MIT/X"
+PR = "r2"
+
+SRC_URI = "http://hp.vector.co.jp/authors/VA013651/lib/mkbold-mkitalic-${PV}.tar.bz2 \
+ file://makebifonts"
+
+S = "${WORKDIR}/mkbold-mkitalic-${PV}"
+
+inherit native
+
+do_stage() {
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m 755 mkbold ${STAGING_BINDIR_NATIVE}/
+ install -m 755 mkitalic ${STAGING_BINDIR_NATIVE}/
+ install -m 755 mkbolditalic ${STAGING_BINDIR_NATIVE}/
+ install -m 755 ${WORKDIR}/makebifonts ${STAGING_BINDIR_NATIVE}/
+}
+
diff --git a/packages/xorg-app/mkcfm_1.0.1.bb b/packages/xorg-app/mkcfm_1.0.1.bb
new file mode 100644
index 0000000000..b177c9023f
--- /dev/null
+++ b/packages/xorg-app/mkcfm_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxfont libfs libfontenc"
+
diff --git a/packages/xorg-app/oclock_1.0.1.bb b/packages/xorg-app/oclock_1.0.1.bb
new file mode 100644
index 0000000000..b2abeadfb0
--- /dev/null
+++ b/packages/xorg-app/oclock_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxmu libxext libxt"
+
diff --git a/packages/xorg-app/proxymngr_1.0.1.bb b/packages/xorg-app/proxymngr_1.0.1.bb
new file mode 100644
index 0000000000..1ee3505645
--- /dev/null
+++ b/packages/xorg-app/proxymngr_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libice libxt virtual/libx11 xproxymngproto"
+
diff --git a/packages/xorg-app/rgb_1.0.1.bb b/packages/xorg-app/rgb_1.0.1.bb
new file mode 100644
index 0000000000..5598b6c041
--- /dev/null
+++ b/packages/xorg-app/rgb_1.0.1.bb
@@ -0,0 +1,8 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " xproto util-macros"
+
+FILES_${PN} += "${datadir}/X11"
+
+
diff --git a/packages/xorg-app/rstart_1.0.2.bb b/packages/xorg-app/rstart_1.0.2.bb
new file mode 100644
index 0000000000..aafaddcf4b
--- /dev/null
+++ b/packages/xorg-app/rstart_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11"
+
diff --git a/packages/xorg-app/scripts_1.0.1.bb b/packages/xorg-app/scripts_1.0.1.bb
new file mode 100644
index 0000000000..4a06dc621c
--- /dev/null
+++ b/packages/xorg-app/scripts_1.0.1.bb
@@ -0,0 +1,6 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11"
+
+
diff --git a/packages/xorg-app/showfont_1.0.1.bb b/packages/xorg-app/showfont_1.0.1.bb
new file mode 100644
index 0000000000..28c0f81c91
--- /dev/null
+++ b/packages/xorg-app/showfont_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libfs"
+
diff --git a/packages/xorg-app/smproxy_1.0.2.bb b/packages/xorg-app/smproxy_1.0.2.bb
new file mode 100644
index 0000000000..64b4ec320d
--- /dev/null
+++ b/packages/xorg-app/smproxy_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxt libxmu"
+
diff --git a/packages/xorg-app/viewres_1.0.1.bb b/packages/xorg-app/viewres_1.0.1.bb
new file mode 100644
index 0000000000..f884467096
--- /dev/null
+++ b/packages/xorg-app/viewres_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxt"
+
diff --git a/packages/xorg-app/xbiff_1.0.1.bb b/packages/xorg-app/xbiff_1.0.1.bb
new file mode 100644
index 0000000000..e3264d7684
--- /dev/null
+++ b/packages/xorg-app/xbiff_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw xbitmaps libxext"
+
diff --git a/packages/xorg-app/xcalc_1.0.1.bb b/packages/xorg-app/xcalc_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xcalc_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xcalc_1.0.2.bb b/packages/xorg-app/xcalc_1.0.2.bb
new file mode 100644
index 0000000000..54b7549f5c
--- /dev/null
+++ b/packages/xorg-app/xcalc_1.0.2.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+DESCRIPTION = "scientific calculator for X"
+DEPENDS += " libxaw libxt"
+PE = "1"
diff --git a/packages/xorg-app/xclipboard_1.0.1.bb b/packages/xorg-app/xclipboard_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xclipboard_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xclock_1.0.2.bb b/packages/xorg-app/xclock_1.0.2.bb
new file mode 100644
index 0000000000..e88196a445
--- /dev/null
+++ b/packages/xorg-app/xclock_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxaw libxrender libxft libxkbfile libxt"
+
diff --git a/packages/xorg-app/xclock_1.0.3.bb b/packages/xorg-app/xclock_1.0.3.bb
new file mode 100644
index 0000000000..0e73c6408f
--- /dev/null
+++ b/packages/xorg-app/xclock_1.0.3.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+DESCRIPTION = "analog / digital clock for X"
+DEPENDS += " virtual/libx11 libxaw libxrender libxft libxkbfile libxt"
+PE = "1"
diff --git a/packages/xorg-app/xcmsdb_1.0.1.bb b/packages/xorg-app/xcmsdb_1.0.1.bb
new file mode 100644
index 0000000000..aafaddcf4b
--- /dev/null
+++ b/packages/xorg-app/xcmsdb_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11"
+
diff --git a/packages/xorg-app/xconsole_1.0.2.bb b/packages/xorg-app/xconsole_1.0.2.bb
new file mode 100644
index 0000000000..f884467096
--- /dev/null
+++ b/packages/xorg-app/xconsole_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxt"
+
diff --git a/packages/xorg-app/xconsole_1.0.3.bb b/packages/xorg-app/xconsole_1.0.3.bb
new file mode 100644
index 0000000000..ce53df9689
--- /dev/null
+++ b/packages/xorg-app/xconsole_1.0.3.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+DESCRIPTION = "monitor system console messages with X"
+DEPENDS += " libxt"
+PE = "1"
diff --git a/packages/xorg-app/xcursorgen_1.0.1.bb b/packages/xorg-app/xcursorgen_1.0.1.bb
new file mode 100644
index 0000000000..64b26483e0
--- /dev/null
+++ b/packages/xorg-app/xcursorgen_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxcursor libpng"
+
diff --git a/packages/xorg-app/xcursorgen_1.0.2.bb b/packages/xorg-app/xcursorgen_1.0.2.bb
new file mode 100644
index 0000000000..98e619e99a
--- /dev/null
+++ b/packages/xorg-app/xcursorgen_1.0.2.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+DESCRIPTION = "create an X cursor file from a collection of PNG images"
+DEPENDS += " virtual/libx11 libxcursor libpng"
+PE = "1"
diff --git a/packages/xorg-app/xditview_1.0.1.bb b/packages/xorg-app/xditview_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xditview_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xdriinfo_1.0.1.bb b/packages/xorg-app/xdriinfo_1.0.1.bb
new file mode 100644
index 0000000000..42541cd22d
--- /dev/null
+++ b/packages/xorg-app/xdriinfo_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 glproto mesa"
+
diff --git a/packages/xorg-app/xdriinfo_1.0.2.bb b/packages/xorg-app/xdriinfo_1.0.2.bb
new file mode 100644
index 0000000000..3d1c9e9613
--- /dev/null
+++ b/packages/xorg-app/xdriinfo_1.0.2.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+DESCRIPTION = "query configuration information of DRI drivers"
+DEPENDS += " virtual/libx11 glproto mesa"
+PE = "1"
diff --git a/packages/xorg-app/xedit_1.0.2.bb b/packages/xorg-app/xedit_1.0.2.bb
new file mode 100644
index 0000000000..e98f981c95
--- /dev/null
+++ b/packages/xorg-app/xedit_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxprintutil libxp libxt"
+
diff --git a/packages/xorg-app/xeyes_1.0.1.bb b/packages/xorg-app/xeyes_1.0.1.bb
new file mode 100644
index 0000000000..07ce0724fa
--- /dev/null
+++ b/packages/xorg-app/xeyes_1.0.1.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxau libxt libxext libxmu"
diff --git a/packages/xorg-app/xfd_1.0.1.bb b/packages/xorg-app/xfd_1.0.1.bb
new file mode 100644
index 0000000000..6d05f0e1dd
--- /dev/null
+++ b/packages/xorg-app/xfd_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw freetype fontconfig libxft libxt"
+
diff --git a/packages/xorg-app/xfindproxy_1.0.1.bb b/packages/xorg-app/xfindproxy_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xfindproxy_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xfs_1.0.5.bb b/packages/xorg-app/xfs_1.0.5.bb
new file mode 100644
index 0000000000..8cef4bda9a
--- /dev/null
+++ b/packages/xorg-app/xfs_1.0.5.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "X fontserver"
+DEPENDS += " libfs libxfont xtrans"
+PE = "1"
diff --git a/packages/xorg-app/xfsinfo_1.0.1.bb b/packages/xorg-app/xfsinfo_1.0.1.bb
new file mode 100644
index 0000000000..9ba7ad6030
--- /dev/null
+++ b/packages/xorg-app/xfsinfo_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libfs"
+
diff --git a/packages/xorg-app/xfwp_1.0.1.bb b/packages/xorg-app/xfwp_1.0.1.bb
new file mode 100644
index 0000000000..0ee67e5376
--- /dev/null
+++ b/packages/xorg-app/xfwp_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libice xproxymngproto"
+
diff --git a/packages/xorg-app/xgamma_1.0.1.bb b/packages/xorg-app/xgamma_1.0.1.bb
new file mode 100644
index 0000000000..f8a6f6ca2b
--- /dev/null
+++ b/packages/xorg-app/xgamma_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxxf86vm"
+
diff --git a/packages/xorg-app/xgamma_1.0.2.bb b/packages/xorg-app/xgamma_1.0.2.bb
new file mode 100644
index 0000000000..e5d479aa81
--- /dev/null
+++ b/packages/xorg-app/xgamma_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "Alter a monitor's gamma correction through the X server"
+DEPENDS += " virtual/libx11 libxxf86vm"
+PE = "1"
diff --git a/packages/xorg-app/xgc_1.0.1.bb b/packages/xorg-app/xgc_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xgc_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xinit_1.0.7.bb b/packages/xorg-app/xinit_1.0.7.bb
new file mode 100644
index 0000000000..ce82fb05d4
--- /dev/null
+++ b/packages/xorg-app/xinit_1.0.7.bb
@@ -0,0 +1,6 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "X Window System initializer"
+PE = "1"
+
+FILES_${PN} += "${libdir}X11/xinit"
diff --git a/packages/xorg-app/xkbevd_1.0.2.bb b/packages/xorg-app/xkbevd_1.0.2.bb
new file mode 100644
index 0000000000..27bbe169ef
--- /dev/null
+++ b/packages/xorg-app/xkbevd_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxkbfile virtual/libx11"
+
diff --git a/packages/xorg-app/xkbprint_1.0.1.bb b/packages/xorg-app/xkbprint_1.0.1.bb
new file mode 100644
index 0000000000..27bbe169ef
--- /dev/null
+++ b/packages/xorg-app/xkbprint_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxkbfile virtual/libx11"
+
diff --git a/packages/xorg-app/xkill_1.0.1.bb b/packages/xorg-app/xkill_1.0.1.bb
new file mode 100644
index 0000000000..e539dad1a2
--- /dev/null
+++ b/packages/xorg-app/xkill_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxmu"
+
diff --git a/packages/xorg-app/xload_1.0.1.bb b/packages/xorg-app/xload_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xload_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xload_1.0.2.bb b/packages/xorg-app/xload_1.0.2.bb
new file mode 100644
index 0000000000..66f64eb462
--- /dev/null
+++ b/packages/xorg-app/xload_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "system load average display for X"
+DEPENDS += " libxaw libxt"
+PE = "1"
diff --git a/packages/xorg-app/xlogo_1.0.1.bb b/packages/xorg-app/xlogo_1.0.1.bb
new file mode 100644
index 0000000000..6090eba216
--- /dev/null
+++ b/packages/xorg-app/xlogo_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxprintutil libxp libxrender libxft libxext libxt"
+
diff --git a/packages/xorg-app/xlsatoms_1.0.1.bb b/packages/xorg-app/xlsatoms_1.0.1.bb
new file mode 100644
index 0000000000..e539dad1a2
--- /dev/null
+++ b/packages/xorg-app/xlsatoms_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxmu"
+
diff --git a/packages/xorg-app/xlsclients_1.0.1.bb b/packages/xorg-app/xlsclients_1.0.1.bb
new file mode 100644
index 0000000000..e539dad1a2
--- /dev/null
+++ b/packages/xorg-app/xlsclients_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxmu"
+
diff --git a/packages/xorg-app/xlsfonts_1.0.2.bb b/packages/xorg-app/xlsfonts_1.0.2.bb
new file mode 100644
index 0000000000..31cd482b61
--- /dev/null
+++ b/packages/xorg-app/xlsfonts_1.0.2.bb
@@ -0,0 +1,4 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "server font list displayer for X"
+DEPENDS += " virtual/libx11"
diff --git a/packages/xorg-app/xmag_1.0.1.bb b/packages/xorg-app/xmag_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xmag_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xmag_1.0.2.bb b/packages/xorg-app/xmag_1.0.2.bb
new file mode 100644
index 0000000000..4c1359427f
--- /dev/null
+++ b/packages/xorg-app/xmag_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "magnify parts of the screen"
+DEPENDS += " libxaw libxt"
+PE = "1"
diff --git a/packages/xorg-app/xman_1.0.2.bb b/packages/xorg-app/xman_1.0.2.bb
new file mode 100644
index 0000000000..da18943dc2
--- /dev/null
+++ b/packages/xorg-app/xman_1.0.2.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxprintutil libxp libxt"
+RDEPENDS = " man"
+
+FILES_${PN} += " /usr/share/X11/xman.help"
diff --git a/packages/xorg-app/xman_1.0.3.bb b/packages/xorg-app/xman_1.0.3.bb
new file mode 100644
index 0000000000..e4e6bff80f
--- /dev/null
+++ b/packages/xorg-app/xman_1.0.3.bb
@@ -0,0 +1,8 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "manual page browser for X"
+DEPENDS += " libxaw libxprintutil libxp libxt"
+RDEPENDS = " man"
+PE = "1"
+
+FILES_${PN} += " /usr/share/X11/xman.help"
diff --git a/packages/xorg-app/xmessage_1.0.1.bb b/packages/xorg-app/xmessage_1.0.1.bb
new file mode 100644
index 0000000000..91a36c7cf5
--- /dev/null
+++ b/packages/xorg-app/xmessage_1.0.1.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "xmessage displays a message or query in a window."
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xmessage_1.0.2.bb b/packages/xorg-app/xmessage_1.0.2.bb
new file mode 100644
index 0000000000..80e30dd819
--- /dev/null
+++ b/packages/xorg-app/xmessage_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "xmessage displays a message or query in a window."
+DEPENDS += " libxaw libxt"
+PE = "1"
diff --git a/packages/xorg-app/xmh_1.0.1.bb b/packages/xorg-app/xmh_1.0.1.bb
new file mode 100644
index 0000000000..2bdb000c5d
--- /dev/null
+++ b/packages/xorg-app/xmh_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xmore_1.0.1.bb b/packages/xorg-app/xmore_1.0.1.bb
new file mode 100644
index 0000000000..fcee260794
--- /dev/null
+++ b/packages/xorg-app/xmore_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxprintutil libxp libxt"
+
diff --git a/packages/xorg-app/xphelloworld_1.0.1.bb b/packages/xorg-app/xphelloworld_1.0.1.bb
new file mode 100644
index 0000000000..5226befdaa
--- /dev/null
+++ b/packages/xorg-app/xphelloworld_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxprintapputil libxaw libxprintutil libxt libxp"
+
diff --git a/packages/xorg-app/xplsprinters_1.0.1.bb b/packages/xorg-app/xplsprinters_1.0.1.bb
new file mode 100644
index 0000000000..c4a35b0e0a
--- /dev/null
+++ b/packages/xorg-app/xplsprinters_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxp libxprintutil virtual/libx11"
+
diff --git a/packages/xorg-app/xpr_1.0.1.bb b/packages/xorg-app/xpr_1.0.1.bb
new file mode 100644
index 0000000000..7b712390c6
--- /dev/null
+++ b/packages/xorg-app/xpr_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxmu virtual/libx11"
+
diff --git a/packages/xorg-app/xpr_1.0.2.bb b/packages/xorg-app/xpr_1.0.2.bb
new file mode 100644
index 0000000000..96b340c8c7
--- /dev/null
+++ b/packages/xorg-app/xpr_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "print an X window dump"
+DEPENDS += " libxmu virtual/libx11"
+PE = "1"
diff --git a/packages/xorg-app/xprehashprinterlist_1.0.1.bb b/packages/xorg-app/xprehashprinterlist_1.0.1.bb
new file mode 100644
index 0000000000..c2aa370998
--- /dev/null
+++ b/packages/xorg-app/xprehashprinterlist_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxp virtual/libx11"
+
diff --git a/packages/xorg-app/xrefresh_1.0.2.bb b/packages/xorg-app/xrefresh_1.0.2.bb
new file mode 100644
index 0000000000..aafaddcf4b
--- /dev/null
+++ b/packages/xorg-app/xrefresh_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11"
+
diff --git a/packages/xorg-app/xrx_1.0.1.bb b/packages/xorg-app/xrx_1.0.1.bb
new file mode 100644
index 0000000000..cf18e2e140
--- /dev/null
+++ b/packages/xorg-app/xrx_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw virtual/libx11 libxt libxext xtrans xproxymngproto libxau"
+
diff --git a/packages/xorg-app/xsetmode_1.0.0.bb b/packages/xorg-app/xsetmode_1.0.0.bb
new file mode 100644
index 0000000000..3c40475e91
--- /dev/null
+++ b/packages/xorg-app/xsetmode_1.0.0.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxi virtual/libx11"
+
diff --git a/packages/xorg-app/xsetpointer_1.0.0.bb b/packages/xorg-app/xsetpointer_1.0.0.bb
new file mode 100644
index 0000000000..3c40475e91
--- /dev/null
+++ b/packages/xorg-app/xsetpointer_1.0.0.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxi virtual/libx11"
+
diff --git a/packages/xorg-app/xsetpointer_1.0.1.bb b/packages/xorg-app/xsetpointer_1.0.1.bb
new file mode 100644
index 0000000000..4db725532a
--- /dev/null
+++ b/packages/xorg-app/xsetpointer_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "set an X Input device as the main pointer"
+DEPENDS += " libxi virtual/libx11"
+PE = "1"
diff --git a/packages/xorg-app/xsm_1.0.1.bb b/packages/xorg-app/xsm_1.0.1.bb
new file mode 100644
index 0000000000..8ed08c598a
--- /dev/null
+++ b/packages/xorg-app/xsm_1.0.1.bb
@@ -0,0 +1,7 @@
+require xorg-app-common.inc
+PE = "1"
+
+DESCRIPTION = "X Session Manager"
+
+DEPENDS += " libxaw libxt"
+
diff --git a/packages/xorg-app/xstdcmap_1.0.1.bb b/packages/xorg-app/xstdcmap_1.0.1.bb
new file mode 100644
index 0000000000..7b712390c6
--- /dev/null
+++ b/packages/xorg-app/xstdcmap_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxmu virtual/libx11"
+
diff --git a/packages/xorg-app/xtrap_1.0.2.bb b/packages/xorg-app/xtrap_1.0.2.bb
new file mode 100644
index 0000000000..18638ee1d2
--- /dev/null
+++ b/packages/xorg-app/xtrap_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11 libxtrap"
+
diff --git a/packages/xorg-app/xvidtune_1.0.1.bb b/packages/xorg-app/xvidtune_1.0.1.bb
new file mode 100644
index 0000000000..3ed47c024f
--- /dev/null
+++ b/packages/xorg-app/xvidtune_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxaw libxxf86vm libxt"
+
diff --git a/packages/xorg-app/xwd_1.0.1.bb b/packages/xorg-app/xwd_1.0.1.bb
new file mode 100644
index 0000000000..7b712390c6
--- /dev/null
+++ b/packages/xorg-app/xwd_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxmu virtual/libx11"
+
diff --git a/packages/xorg-app/xwininfo_1.0.2.bb b/packages/xorg-app/xwininfo_1.0.2.bb
new file mode 100644
index 0000000000..069dd30aa8
--- /dev/null
+++ b/packages/xorg-app/xwininfo_1.0.2.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " libxmu libxext virtual/libx11"
+
diff --git a/packages/xorg-app/xwininfo_1.0.3.bb b/packages/xorg-app/xwininfo_1.0.3.bb
new file mode 100644
index 0000000000..5d97083b02
--- /dev/null
+++ b/packages/xorg-app/xwininfo_1.0.3.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+
+DESCRIPTION = "window information utility for X"
+DEPENDS += " libxmu libxext virtual/libx11"
+PE = "1"
diff --git a/packages/xorg-app/xwud_1.0.1.bb b/packages/xorg-app/xwud_1.0.1.bb
new file mode 100644
index 0000000000..aafaddcf4b
--- /dev/null
+++ b/packages/xorg-app/xwud_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-app-common.inc
+PE = "1"
+
+DEPENDS += " virtual/libx11"
+
diff --git a/packages/xorg-data/xcursor-themes_1.0.1.bb b/packages/xorg-data/xcursor-themes_1.0.1.bb
new file mode 100644
index 0000000000..8cf822e56f
--- /dev/null
+++ b/packages/xorg-data/xcursor-themes_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-data-common.inc
+PE = "1"
+
+DEPENDS += " libxcursor"
+
diff --git a/packages/xorg-data/xkbdata_1.0.1.bb b/packages/xorg-data/xkbdata_1.0.1.bb
new file mode 100644
index 0000000000..9ab3729bc5
--- /dev/null
+++ b/packages/xorg-data/xkbdata_1.0.1.bb
@@ -0,0 +1,7 @@
+require xorg-data-common.inc
+PE = "1"
+
+RDEPENDS = "xkbcomp"
+
+FILES_${PN} += " /usr/share/X11/xkb"
+
diff --git a/packages/xorg-doc/xorg-doc-common.inc b/packages/xorg-doc/xorg-doc-common.inc
index 4c3d6e8987..75ac0f1205 100644
--- a/packages/xorg-doc/xorg-doc-common.inc
+++ b/packages/xorg-doc/xorg-doc-common.inc
@@ -3,10 +3,9 @@ HOMEPAGE = "http://www.x.org"
SECTION = "x11/docs"
LICENSE = "MIT-X"
-#DEPENDS = ""
XORG_PN = "${PN}"
-XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
-SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/doc/${XORG_PN}-${PV}.tar.bz2"
+SRC_URI = "${XORG_MIRROR}/individual/data/${XORG_PN}-${PV}.tar.bz2"
+
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools pkgconfig
diff --git a/packages/xorg-doc/xorg-docs_1.0.1.bb b/packages/xorg-doc/xorg-docs_1.0.1.bb
new file mode 100644
index 0000000000..df775f85b0
--- /dev/null
+++ b/packages/xorg-doc/xorg-docs_1.0.1.bb
@@ -0,0 +1,11 @@
+require xorg-doc-common.inc
+
+DESCRIPTION = "The documentation in this package is from xc/doc in the monolithic \
+source tree."
+
+DEPENDS += " intltool"
+
+PE = "1"
+
+FILES_${PN} += " /usr/share/X11/doc"
+
diff --git a/packages/xorg-doc/xorg-docs_1.2.bb b/packages/xorg-doc/xorg-docs_1.2.bb
new file mode 100644
index 0000000000..df775f85b0
--- /dev/null
+++ b/packages/xorg-doc/xorg-docs_1.2.bb
@@ -0,0 +1,11 @@
+require xorg-doc-common.inc
+
+DESCRIPTION = "The documentation in this package is from xc/doc in the monolithic \
+source tree."
+
+DEPENDS += " intltool"
+
+PE = "1"
+
+FILES_${PN} += " /usr/share/X11/doc"
+
diff --git a/packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb b/packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb
index 18a3ef964a..053ca2eaaa 100644
--- a/packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb
+++ b/packages/xorg-doc/xorg-sgml-doctools_1.1.1.bb
@@ -1,8 +1,4 @@
require xorg-doc-common.inc
PE = "1"
-#DESCRIPTION = ""
-
-#DEPENDS += " "
-
FILES_${PN} += " /usr/share/X11/sgml"
diff --git a/packages/xorg-doc/xorg-sgml-doctools_1.2.bb b/packages/xorg-doc/xorg-sgml-doctools_1.2.bb
index 18a3ef964a..053ca2eaaa 100644
--- a/packages/xorg-doc/xorg-sgml-doctools_1.2.bb
+++ b/packages/xorg-doc/xorg-sgml-doctools_1.2.bb
@@ -1,8 +1,4 @@
require xorg-doc-common.inc
PE = "1"
-#DESCRIPTION = ""
-
-#DEPENDS += " "
-
FILES_${PN} += " /usr/share/X11/sgml"
diff --git a/packages/xorg-driver/xf86-input-acecad_1.1.0.bb b/packages/xorg-driver/xf86-input-acecad_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-acecad_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-acecad_1.2.1.bb b/packages/xorg-driver/xf86-input-acecad_1.2.1.bb
new file mode 100644
index 0000000000..c993bc7718
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-acecad_1.2.1.bb
@@ -0,0 +1,5 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- AceCad input driver"
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-acecad_1.2.2.bb b/packages/xorg-driver/xf86-input-acecad_1.2.2.bb
new file mode 100644
index 0000000000..c993bc7718
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-acecad_1.2.2.bb
@@ -0,0 +1,5 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- AceCad input driver"
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-aiptek_1.0.1.bb b/packages/xorg-driver/xf86-input-aiptek_1.0.1.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-aiptek_1.0.1.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-calcomp_1.1.0.bb b/packages/xorg-driver/xf86-input-calcomp_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-calcomp_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-calcomp_1.1.1.bb b/packages/xorg-driver/xf86-input-calcomp_1.1.1.bb
new file mode 100644
index 0000000000..a309230801
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-calcomp_1.1.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- Calcomp input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-citron_2.2.0.bb b/packages/xorg-driver/xf86-input-citron_2.2.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-citron_2.2.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-citron_2.2.1.bb b/packages/xorg-driver/xf86-input-citron_2.2.1.bb
new file mode 100644
index 0000000000..4c449b12d7
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-citron_2.2.1.bb
@@ -0,0 +1,5 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X Server -- Citron input driver"
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-digitaledge_1.1.0.bb b/packages/xorg-driver/xf86-input-digitaledge_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-digitaledge_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-dmc_1.1.0.bb b/packages/xorg-driver/xf86-input-dmc_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-dmc_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-dmc_1.1.1.bb b/packages/xorg-driver/xf86-input-dmc_1.1.1.bb
new file mode 100644
index 0000000000..fea3ce83aa
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-dmc_1.1.1.bb
@@ -0,0 +1,5 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- DMC input driver"
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-dynapro_1.1.0.bb b/packages/xorg-driver/xf86-input-dynapro_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-dynapro_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-dynapro_1.1.1.bb b/packages/xorg-driver/xf86-input-dynapro_1.1.1.bb
new file mode 100644
index 0000000000..0033ffe7fa
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-dynapro_1.1.1.bb
@@ -0,0 +1,5 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- Dynapro input driver"
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-elo2300_1.1.0.bb b/packages/xorg-driver/xf86-input-elo2300_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-elo2300_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-elo2300_1.1.1.bb b/packages/xorg-driver/xf86-input-elo2300_1.1.1.bb
new file mode 100644
index 0000000000..7841287fb0
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-elo2300_1.1.1.bb
@@ -0,0 +1,5 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- ELO2300 input driver"
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-elographics_1.1.0.bb b/packages/xorg-driver/xf86-input-elographics_1.1.0.bb
new file mode 100644
index 0000000000..cb49a58d4c
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-elographics_1.1.0.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- ELOGraphics input driver"
+PE = "2"
diff --git a/packages/xorg-driver/xf86-input-elographics_X11R7.0-1.0.0.5.bb b/packages/xorg-driver/xf86-input-elographics_X11R7.0-1.0.0.5.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-elographics_X11R7.0-1.0.0.5.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-evdev_1.2.0.bb b/packages/xorg-driver/xf86-input-evdev_1.2.0.bb
new file mode 100644
index 0000000000..792909621a
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-evdev_1.2.0.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- evdev input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-fpit_1.1.0.bb b/packages/xorg-driver/xf86-input-fpit_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-fpit_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-hyperpen_1.1.0.bb b/packages/xorg-driver/xf86-input-hyperpen_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-hyperpen_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-jamstudio_1.1.0.bb b/packages/xorg-driver/xf86-input-jamstudio_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-jamstudio_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-joystick_1.1.0.bb b/packages/xorg-driver/xf86-input-joystick_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-joystick_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-joystick_1.3.1.bb b/packages/xorg-driver/xf86-input-joystick_1.3.1.bb
new file mode 100644
index 0000000000..a53297fd8a
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-joystick_1.3.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- joystick input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-magellan_1.1.0.bb b/packages/xorg-driver/xf86-input-magellan_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-magellan_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-magellan_1.1.1.bb b/packages/xorg-driver/xf86-input-magellan_1.1.1.bb
new file mode 100644
index 0000000000..2bbf253d53
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-magellan_1.1.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- Magellan input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-magictouch_1.0.0.5.bb b/packages/xorg-driver/xf86-input-magictouch_1.0.0.5.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-magictouch_1.0.0.5.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-microtouch_1.1.0.bb b/packages/xorg-driver/xf86-input-microtouch_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-microtouch_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-microtouch_1.1.1.bb b/packages/xorg-driver/xf86-input-microtouch_1.1.1.bb
new file mode 100644
index 0000000000..9a90a80b9f
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-microtouch_1.1.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- MicroTouch input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-mouse_1.2.3.bb b/packages/xorg-driver/xf86-input-mouse_1.2.3.bb
new file mode 100644
index 0000000000..e6325675f8
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-mouse_1.2.3.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- mouse input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-mutouch_1.1.0.bb b/packages/xorg-driver/xf86-input-mutouch_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-mutouch_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-palmax_1.1.0.bb b/packages/xorg-driver/xf86-input-palmax_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-palmax_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-penmount_1.2.1.bb b/packages/xorg-driver/xf86-input-penmount_1.2.1.bb
new file mode 100644
index 0000000000..1ed62d4cad
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-penmount_1.2.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- Penmount input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-spaceorb_1.1.0.bb b/packages/xorg-driver/xf86-input-spaceorb_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-spaceorb_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-spaceorb_1.1.1.bb b/packages/xorg-driver/xf86-input-spaceorb_1.1.1.bb
new file mode 100644
index 0000000000..cf099b8193
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-spaceorb_1.1.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- SpaceOrb input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-summa_1.1.0.bb b/packages/xorg-driver/xf86-input-summa_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-summa_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-tek4957_1.1.0.bb b/packages/xorg-driver/xf86-input-tek4957_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-tek4957_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-ur98_1.1.0.bb b/packages/xorg-driver/xf86-input-ur98_1.1.0.bb
new file mode 100644
index 0000000000..34a497438b
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-ur98_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-input.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-vmmouse_12.4.0.bb b/packages/xorg-driver/xf86-input-vmmouse_12.4.0.bb
new file mode 100644
index 0000000000..292d2804a8
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-vmmouse_12.4.0.bb
@@ -0,0 +1,7 @@
+require xorg-driver-input.inc
+PE = "1"
+
+DESCRIPTION = "The VMMouse driver enables support for the special VMMouse protocol \
+that is provided by VMware virtual machines to give absolute pointer \
+positioning. "
+
diff --git a/packages/xorg-driver/xf86-input-vmmouse_12.4.3.bb b/packages/xorg-driver/xf86-input-vmmouse_12.4.3.bb
new file mode 100644
index 0000000000..7af9f7ddc9
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-vmmouse_12.4.3.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- VMMouse input driver to use with VMWare"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-input-void_1.1.0.bb b/packages/xorg-driver/xf86-input-void_1.1.0.bb
new file mode 100644
index 0000000000..311caf6553
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-void_1.1.0.bb
@@ -0,0 +1,3 @@
+require xorg-driver-input.inc
+PE = "1"
+
diff --git a/packages/xorg-driver/xf86-input-void_1.1.1.bb b/packages/xorg-driver/xf86-input-void_1.1.1.bb
new file mode 100644
index 0000000000..2fa7021d95
--- /dev/null
+++ b/packages/xorg-driver/xf86-input-void_1.1.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-input.inc
+
+DESCRIPTION = "X.Org X server -- void input driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-apm_1.1.1.bb b/packages/xorg-driver/xf86-video-apm_1.1.1.bb
new file mode 100644
index 0000000000..5f0ed183e6
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-apm_1.1.1.bb
@@ -0,0 +1,7 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DESCRIPTION = "This is the Alliance Promotion driver for XFree86 4.0+"
+
+DEPENDS += " xf86rushproto"
+
diff --git a/packages/xorg-driver/xf86-video-ark_0.6.0.bb b/packages/xorg-driver/xf86-video-ark_0.6.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-ark_0.6.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-ast_0.81.0.bb b/packages/xorg-driver/xf86-video-ast_0.81.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-ast_0.81.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-ati_6.7.197.bb b/packages/xorg-driver/xf86-video-ati_6.7.197.bb
new file mode 100644
index 0000000000..4aae05a747
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-ati_6.7.197.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.Org X server -- ATI display driver"
+DEPENDS += " xineramaproto xf86miscproto drm xf86driproto"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-chips_1.1.1.bb b/packages/xorg-driver/xf86-video-chips_1.1.1.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-chips_1.1.1.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-cirrus_1.1.0.bb b/packages/xorg-driver/xf86-video-cirrus_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-cirrus_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-cyrix_1.1.0.bb b/packages/xorg-driver/xf86-video-cyrix_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-cyrix_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-dummy_0.2.0.bb b/packages/xorg-driver/xf86-video-dummy_0.2.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-dummy_0.2.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-glint_1.1.1.bb b/packages/xorg-driver/xf86-video-glint_1.1.1.bb
new file mode 100644
index 0000000000..4b57f17b9e
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-glint_1.1.1.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+#DESCRIPTION = ""
+
+DEPENDS += " xf86dgaproto drm xf86driproto"
diff --git a/packages/xorg-driver/xf86-video-i128_1.1.0.5.bb b/packages/xorg-driver/xf86-video-i128_1.1.0.5.bb
new file mode 100644
index 0000000000..acfc042123
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-i128_1.1.0.5.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "Number Nine I128 for X11"
+
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-i128_1.2.1.bb b/packages/xorg-driver/xf86-video-i128_1.2.1.bb
new file mode 100644
index 0000000000..78d5eda810
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-i128_1.2.1.bb
@@ -0,0 +1,4 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.Org X server -- i128 display driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-i740_1.1.0.bb b/packages/xorg-driver/xf86-video-i740_1.1.0.bb
new file mode 100644
index 0000000000..4aca68edf6
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-i740_1.1.0.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "I740 for X11"
+
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-i810_1.7.4.bb b/packages/xorg-driver/xf86-video-i810_1.7.4.bb
new file mode 100644
index 0000000000..eed1fcb600
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-i810_1.7.4.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.Org X server -- Intel i8xx, i9xx display driver"
+DEPENDS += " virtual/libx11 libxvmc drm xf86driproto"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-imstt_1.1.0.bb b/packages/xorg-driver/xf86-video-imstt_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-imstt_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-mga_1.4.1.bb b/packages/xorg-driver/xf86-video-mga_1.4.1.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-mga_1.4.1.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-mga_1.9.99.bb b/packages/xorg-driver/xf86-video-mga_1.9.99.bb
new file mode 100644
index 0000000000..0ed0d28dfd
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-mga_1.9.99.bb
@@ -0,0 +1,4 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.Org X server -- MGA display driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-neomagic_1.1.1.bb b/packages/xorg-driver/xf86-video-neomagic_1.1.1.bb
new file mode 100644
index 0000000000..b519e60e58
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-neomagic_1.1.1.bb
@@ -0,0 +1,8 @@
+require xorg-driver-video.inc
+
+PE = "1"
+
+DESCRIPTION = "X11 driver for NeoMagic 2200, 2160, 2097, 2093, 2090, 2070"
+
+DEPENDS += " xf86dgaproto"
+
diff --git a/packages/xorg-driver/xf86-video-nsc_2.8.3.bb b/packages/xorg-driver/xf86-video-nsc_2.8.3.bb
new file mode 100644
index 0000000000..96486d2e72
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-nsc_2.8.3.bb
@@ -0,0 +1,9 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.Org X server -- NSC display driver"
+DEPENDS += " xf86dgaproto"
+PE = "1"
+
+# This driver is broken because it's seldom updated. It compiles
+# but fails to communicate with the card without this deprecated define.
+EXTRA_OEMAKE += "CFLAGS+=-DXFree86Server"
diff --git a/packages/xorg-driver/xf86-video-nv_2.1.7.bb b/packages/xorg-driver/xf86-video-nv_2.1.7.bb
new file mode 100644
index 0000000000..0d4ee2ed19
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-nv_2.1.7.bb
@@ -0,0 +1,4 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.Org X server -- NV display driver"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-s3virge_1.9.1.bb b/packages/xorg-driver/xf86-video-s3virge_1.9.1.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-s3virge_1.9.1.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-sis_0.9.4.bb b/packages/xorg-driver/xf86-video-sis_0.9.4.bb
new file mode 100644
index 0000000000..dd6e106e0d
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-sis_0.9.4.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.Org X server -- SiS display driver"
+DEPENDS += " xineramaproto xf86miscproto xf86dgaproto drm xf86driproto"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-sisusb_0.8.1.bb b/packages/xorg-driver/xf86-video-sisusb_0.8.1.bb
new file mode 100644
index 0000000000..07af9eebcb
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-sisusb_0.8.1.bb
@@ -0,0 +1,6 @@
+require xorg-driver-video.inc
+
+PE = "1"
+
+DEPENDS += " xineramaproto xf86miscproto"
+
diff --git a/packages/xorg-driver/xf86-video-sunbw2_1.1.0.bb b/packages/xorg-driver/xf86-video-sunbw2_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-sunbw2_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-suncg14_1.1.0.bb b/packages/xorg-driver/xf86-video-suncg14_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-suncg14_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-suncg3_1.1.0.bb b/packages/xorg-driver/xf86-video-suncg3_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-suncg3_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-suncg6_1.1.0.bb b/packages/xorg-driver/xf86-video-suncg6_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-suncg6_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-sunffb_1.1.0.bb b/packages/xorg-driver/xf86-video-sunffb_1.1.0.bb
new file mode 100644
index 0000000000..0251123fc8
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-sunffb_1.1.0.bb
@@ -0,0 +1,4 @@
+require xorg-driver-video.inc
+PE = "1"
+
+DEPENDS += " drm xf86driproto"
diff --git a/packages/xorg-driver/xf86-video-sunleo_1.1.0.bb b/packages/xorg-driver/xf86-video-sunleo_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-sunleo_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-suntcx_1.1.0.bb b/packages/xorg-driver/xf86-video-suntcx_1.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-suntcx_1.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-tga_1.1.0.bb b/packages/xorg-driver/xf86-video-tga_1.1.0.bb
new file mode 100644
index 0000000000..d3cf65f034
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-tga_1.1.0.bb
@@ -0,0 +1,8 @@
+require xorg-driver-video.inc
+
+PE = "1"
+
+DESCRIPTION = "DEC 21030 X11 driver"
+
+DEPENDS += " xf86dgaproto"
+
diff --git a/packages/xorg-driver/xf86-video-trident_1.2.4.bb b/packages/xorg-driver/xf86-video-trident_1.2.4.bb
new file mode 100644
index 0000000000..fe37be5d0b
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-trident_1.2.4.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+DESCRIPTION = "X.org X server -- Trident display driver"
+DEPENDS += " xf86dgaproto"
+PE = "1"
diff --git a/packages/xorg-driver/xf86-video-v4l_0.1.1.bb b/packages/xorg-driver/xf86-video-v4l_0.1.1.bb
new file mode 100644
index 0000000000..9ebb9ad1f6
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-v4l_0.1.1.bb
@@ -0,0 +1,5 @@
+require xorg-driver-video.inc
+
+PE = "1"
+
+DESCRIPTION = "Video 4 Linux adaptor driver for X11"
diff --git a/packages/xorg-driver/xf86-video-vga_4.1.0.bb b/packages/xorg-driver/xf86-video-vga_4.1.0.bb
new file mode 100644
index 0000000000..c2b6b7608a
--- /dev/null
+++ b/packages/xorg-driver/xf86-video-vga_4.1.0.bb
@@ -0,0 +1,2 @@
+require xorg-driver-video.inc
+PE = "1"
diff --git a/packages/xorg-driver/xorg-driver-common.inc b/packages/xorg-driver/xorg-driver-common.inc
index 3b3c205e9e..a75e409c8c 100644
--- a/packages/xorg-driver/xorg-driver-common.inc
+++ b/packages/xorg-driver/xorg-driver-common.inc
@@ -7,8 +7,7 @@ PR = "r2"
DEPENDS = "randrproto xorg-server xproto"
XORG_PN = "${PN}"
-XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
-SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/driver/${XORG_PN}-${PV}.tar.bz2"
+SRC_URI = "${XORG_MIRROR}/individual/driver/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
diff --git a/packages/xorg-font/font-adobe-100dpi_1.0.0.bb b/packages/xorg-font/font-adobe-100dpi_1.0.0.bb
new file mode 100644
index 0000000000..e1bdcb5e7a
--- /dev/null
+++ b/packages/xorg-font/font-adobe-100dpi_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+PE = "1"
+
diff --git a/packages/xorg-font/font-adobe-75dpi_1.0.0.bb b/packages/xorg-font/font-adobe-75dpi_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-adobe-75dpi_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-adobe-utopia-100dpi_1.0.1.bb b/packages/xorg-font/font-adobe-utopia-100dpi_1.0.1.bb
new file mode 100644
index 0000000000..0799b8a97e
--- /dev/null
+++ b/packages/xorg-font/font-adobe-utopia-100dpi_1.0.1.bb
@@ -0,0 +1,5 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "Adobe typeface software"
+
+PE = "1"
diff --git a/packages/xorg-font/font-adobe-utopia-75dpi_1.0.1.bb b/packages/xorg-font/font-adobe-utopia-75dpi_1.0.1.bb
new file mode 100644
index 0000000000..6e20eb97d8
--- /dev/null
+++ b/packages/xorg-font/font-adobe-utopia-75dpi_1.0.1.bb
@@ -0,0 +1,6 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "Adobe typeface software"
+
+PE = "1"
+
diff --git a/packages/xorg-font/font-adobe-utopia-type1_1.0.1.bb b/packages/xorg-font/font-adobe-utopia-type1_1.0.1.bb
new file mode 100644
index 0000000000..6e20eb97d8
--- /dev/null
+++ b/packages/xorg-font/font-adobe-utopia-type1_1.0.1.bb
@@ -0,0 +1,6 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "Adobe typeface software"
+
+PE = "1"
+
diff --git a/packages/xorg-font/font-alias_1.0.1.bb b/packages/xorg-font/font-alias_1.0.1.bb
new file mode 100644
index 0000000000..90eec26a57
--- /dev/null
+++ b/packages/xorg-font/font-alias_1.0.1.bb
@@ -0,0 +1,8 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "X font aliases."
+
+DEPENDS = "virtual/xserver font-util"
+RDEPENDS = "encodings font-util"
+
+PE = "1" \ No newline at end of file
diff --git a/packages/xorg-font/font-arabic-misc_1.0.0.bb b/packages/xorg-font/font-arabic-misc_1.0.0.bb
new file mode 100644
index 0000000000..6171333d6a
--- /dev/null
+++ b/packages/xorg-font/font-arabic-misc_1.0.0.bb
@@ -0,0 +1,7 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "100dpi, 24 point (approximately) font to minimally support (almost) all \
+of the Arabic characters available in Unicode."
+
+PE = "1"
+
diff --git a/packages/xorg-font/font-bh-100dpi_1.0.0.bb b/packages/xorg-font/font-bh-100dpi_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-bh-100dpi_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-bh-75dpi_1.0.0.bb b/packages/xorg-font/font-bh-75dpi_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-bh-75dpi_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.0.bb b/packages/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-bh-lucidatypewriter-75dpi_1.0.0.bb b/packages/xorg-font/font-bh-lucidatypewriter-75dpi_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-bh-lucidatypewriter-75dpi_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-bh-ttf_1.0.0.bb b/packages/xorg-font/font-bh-ttf_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-bh-ttf_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-bh-type1_1.0.0.bb b/packages/xorg-font/font-bh-type1_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-bh-type1_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-bitstream-100dpi_1.0.0.bb b/packages/xorg-font/font-bitstream-100dpi_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-bitstream-100dpi_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-bitstream-75dpi_1.0.0.bb b/packages/xorg-font/font-bitstream-75dpi_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-bitstream-75dpi_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-bitstream-speedo_1.0.0.bb b/packages/xorg-font/font-bitstream-speedo_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-bitstream-speedo_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-bitstream-type1_1.0.0.bb b/packages/xorg-font/font-bitstream-type1_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-bitstream-type1_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-cronyx-cyrillic_1.0.0.bb b/packages/xorg-font/font-cronyx-cyrillic_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-cronyx-cyrillic_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-cursor-misc_1.0.0.bb b/packages/xorg-font/font-cursor-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-cursor-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-daewoo-misc_1.0.0.bb b/packages/xorg-font/font-daewoo-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-daewoo-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-dec-misc_1.0.0.bb b/packages/xorg-font/font-dec-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-dec-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-ibm-type1_1.0.0.bb b/packages/xorg-font/font-ibm-type1_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-ibm-type1_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-isas-misc_1.0.0.bb b/packages/xorg-font/font-isas-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-isas-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-jis-misc_1.0.0.bb b/packages/xorg-font/font-jis-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-jis-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-micro-misc_1.0.0.bb b/packages/xorg-font/font-micro-misc_1.0.0.bb
new file mode 100644
index 0000000000..383d16c799
--- /dev/null
+++ b/packages/xorg-font/font-micro-misc_1.0.0.bb
@@ -0,0 +1,4 @@
+require xorg-font-common.inc
+PE = "1"
+
+EXTRA_OECONF = "--disable-iso8859-2 --disable-iso8859-3 --disable-iso8859-4 --disable-iso8859-5 --disable-iso8859-6 --disable-iso8859-7 --disable-iso8859-8 --disable-iso8859-9 --disable-iso8859-10 --disable-iso8859-11 --disable-iso8859-12 --disable-iso8859-13 --disable-iso8859-14 --disable-iso8859-15 --disable-iso8859-16 --disable-jisx0201 --disable-koi8-r"
diff --git a/packages/xorg-font/font-misc-cyrillic_1.0.0.bb b/packages/xorg-font/font-misc-cyrillic_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-misc-cyrillic_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-misc-ethiopic_1.0.0.bb b/packages/xorg-font/font-misc-ethiopic_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-misc-ethiopic_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-misc-meltho_1.0.0.bb b/packages/xorg-font/font-misc-meltho_1.0.0.bb
new file mode 100644
index 0000000000..719a443b51
--- /dev/null
+++ b/packages/xorg-font/font-misc-meltho_1.0.0.bb
@@ -0,0 +1,5 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "These fonts are designed for the display of Syriac text."
+PE = "1"
+
diff --git a/packages/xorg-font/font-mutt-misc_1.0.0.bb b/packages/xorg-font/font-mutt-misc_1.0.0.bb
new file mode 100644
index 0000000000..a5ded3d3cc
--- /dev/null
+++ b/packages/xorg-font/font-mutt-misc_1.0.0.bb
@@ -0,0 +1,7 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "Provides a 12pt, 100dpi proportional font with many of \
+the glyphs needed for Unicode text."
+
+PE = "1"
+
diff --git a/packages/xorg-font/font-schumacher-misc_1.0.0.bb b/packages/xorg-font/font-schumacher-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-schumacher-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-screen-cyrillic_1.0.0.bb b/packages/xorg-font/font-screen-cyrillic_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-screen-cyrillic_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-sony-misc_1.0.0.bb b/packages/xorg-font/font-sony-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-sony-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-sun-misc_1.0.0.bb b/packages/xorg-font/font-sun-misc_1.0.0.bb
new file mode 100644
index 0000000000..60ef06fba0
--- /dev/null
+++ b/packages/xorg-font/font-sun-misc_1.0.0.bb
@@ -0,0 +1,2 @@
+require xorg-font-common.inc
+PE = "1"
diff --git a/packages/xorg-font/font-util-native_1.0.1.bb b/packages/xorg-font/font-util-native_1.0.1.bb
new file mode 100644
index 0000000000..32ea62c3d5
--- /dev/null
+++ b/packages/xorg-font/font-util-native_1.0.1.bb
@@ -0,0 +1,8 @@
+inherit native
+require xorg-font-common.inc
+
+XORG_PN = "font-util"
+
+DEPENDS = "bdftopcf-native"
+
+PE = "1"
diff --git a/packages/xorg-font/font-util_1.0.1.bb b/packages/xorg-font/font-util_1.0.1.bb
new file mode 100644
index 0000000000..915c40cd5c
--- /dev/null
+++ b/packages/xorg-font/font-util_1.0.1.bb
@@ -0,0 +1,9 @@
+require xorg-font-common.inc
+
+DESCRIPTION = "X font utils."
+
+DEPENDS = "encodings"
+RDEPENDS = "mkfontdir mkfontscale encodings"
+
+PR = "r1"
+PE = "1"
diff --git a/packages/xorg-font/font-winitzki-cyrillic_1.0.0.bb b/packages/xorg-font/font-winitzki-cyrillic_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-winitzki-cyrillic_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/font-xfree86-type1_1.0.0.bb b/packages/xorg-font/font-xfree86-type1_1.0.0.bb
new file mode 100644
index 0000000000..f8fe553c62
--- /dev/null
+++ b/packages/xorg-font/font-xfree86-type1_1.0.0.bb
@@ -0,0 +1,3 @@
+require xorg-font-common.inc
+
+PE = "1"
diff --git a/packages/xorg-font/xfonts-xorg_6.8.bb b/packages/xorg-font/xfonts-xorg_6.8.bb
index f6710dcd5b..f8a6a76964 100644
--- a/packages/xorg-font/xfonts-xorg_6.8.bb
+++ b/packages/xorg-font/xfonts-xorg_6.8.bb
@@ -7,7 +7,7 @@ SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc;tag=XORG-6_8_0;method=pserver \
file://lexer.patch;patch=1"
-PACKAGES = "${PN}-75dpi ${PN}-100dpi ${PN}-type1 ${PN}-cyrillic ${PN}-ttf ${PN}"
+PACKAGES = "${PN}-dbg ${PN}-75dpi ${PN}-100dpi ${PN}-type1 ${PN}-cyrillic ${PN}-ttf ${PN}"
FILES_${PN}-75dpi = "${libdir}/X11/fonts/75dpi"
FILES_${PN}-100dpi = "${libdir}/X11/fonts/100dpi"
FILES_${PN}-type1 = "${libdir}/X11/fonts/Type1"
diff --git a/packages/xorg-font/xorg-font-common.inc b/packages/xorg-font/xorg-font-common.inc
index 148437a3e3..c2977c8db9 100644
--- a/packages/xorg-font/xorg-font-common.inc
+++ b/packages/xorg-font/xorg-font-common.inc
@@ -6,8 +6,7 @@ DEPENDS = " encodings font-alias font-util-native mkfontdir-native mkfontscale-n
RDEPENDS = "encodings font-util font-alias"
XORG_PN = "${PN}"
-XORG_RELEASE = "${@["individual",bb.data.getVar('PV', d, 1)[0:7]+"/src"][bb.data.getVar('PV', d, 1)[0:4] == "X11R"]}"
-SRC_URI = "${XORG_MIRROR}/${XORG_RELEASE}/font/${XORG_PN}-${PV}.tar.bz2"
+SRC_URI = "${XORG_MIRROR}/individual/font/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools pkgconfig
diff --git a/packages/xorg-lib/diet-x11/autofoo.patch b/packages/xorg-lib/diet-x11/autofoo.patch
deleted file mode 100644
index 8bdba09768..0000000000
--- a/packages/xorg-lib/diet-x11/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libX11-6.2.1/configure.ac~autofoo
-+++ libX11-6.2.1/configure.ac
-@@ -7,12 +7,12 @@
- [jg@freedesktop.org],
- libX11)
- AC_CONFIG_SRCDIR([Makefile.am])
--AM_INIT_AUTOMAKE([dist-bzip2])
-+AC_CONFIG_AUX_DIR(.)
-
-+AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([src/config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/diet-x11/makekeys.diff b/packages/xorg-lib/diet-x11/makekeys.diff
deleted file mode 100644
index cea08725ec..0000000000
--- a/packages/xorg-lib/diet-x11/makekeys.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nru libX11-X11R7.1-1.0.1.org/src/util/makekeys.c libX11-X11R7.1-1.0.1/src/util/makekeys.c
---- libX11-X11R7.1-1.0.1.org/src/util/makekeys.c 2007-03-08 14:34:34.000000000 +0100
-+++ libX11-X11R7.1-1.0.1/src/util/makekeys.c 2007-03-08 14:34:58.000000000 +0100
-@@ -49,7 +49,7 @@
- KeySym val;
- } info[KTNUM];
-
--#define MIN_REHASH 10
-+#define MIN_REHASH 15
- #define MATCHES 10
-
- char tab[KTNUM];
diff --git a/packages/xorg-lib/diet-x11_1.1.1.bb b/packages/xorg-lib/diet-x11_1.1.1.bb
index 8dc3174a16..4219b0c997 100644
--- a/packages/xorg-lib/diet-x11_1.1.1.bb
+++ b/packages/xorg-lib/diet-x11_1.1.1.bb
@@ -4,6 +4,8 @@ require libx11_${PV}.bb
EXTRA_OECONF += "--disable-udc --enable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
file://fix-utf8-wrong-define.patch;patch=1 \
diff --git a/packages/xorg-lib/diet-x11_1.1.2.bb b/packages/xorg-lib/diet-x11_1.1.2.bb
index f032987b88..2dbd458ec7 100644
--- a/packages/xorg-lib/diet-x11_1.1.2.bb
+++ b/packages/xorg-lib/diet-x11_1.1.2.bb
@@ -4,5 +4,7 @@ SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
file://fix-utf8-wrong-define.patch;patch=1"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
EXTRA_OECONF += "--disable-udc --disable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
diff --git a/packages/xorg-lib/diet-x11_1.1.3.bb b/packages/xorg-lib/diet-x11_1.1.3.bb
index f032987b88..2dbd458ec7 100644
--- a/packages/xorg-lib/diet-x11_1.1.3.bb
+++ b/packages/xorg-lib/diet-x11_1.1.3.bb
@@ -4,5 +4,7 @@ SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
file://fix-utf8-wrong-define.patch;patch=1"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11"
+
EXTRA_OECONF += "--disable-udc --disable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
diff --git a/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch b/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch
deleted file mode 100644
index f43d38065e..0000000000
--- a/packages/xorg-lib/files/errordb-keysymdb-path-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- X11/src/ErrDes.c.orig 2005-09-03 16:15:48 +0200
-+++ X11/src/ErrDes.c 2005-09-03 16:16:03 +0200
-@@ -56,7 +56,7 @@
- #include <stdio.h>
-
- #ifndef ERRORDB
--#define ERRORDB "/usr/lib/X11/XErrorDB"
-+#define ERRORDB "/usr/share/X11/XErrorDB"
- #endif
-
- /*
---- X11/src/StrKeysym.c.orig 2005-09-03 16:41:18 +0200
-+++ X11/src/StrKeysym.c 2005-09-03 16:41:33 +0200
-@@ -36,7 +36,7 @@
- #include "Key.h"
-
- #ifndef KEYSYMDB
--#define KEYSYMDB "/usr/lib/X11/XKeysymDB"
-+#define KEYSYMDB "/usr/share/X11/XKeysymDB"
- #endif
-
- static Bool initialized;
diff --git a/packages/xorg-lib/files/fix-utf8-wrong-define.patch b/packages/xorg-lib/files/fix-utf8-wrong-define.patch
deleted file mode 100644
index dca88fba92..0000000000
--- a/packages/xorg-lib/files/fix-utf8-wrong-define.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libX11-6.2.1/include/X11/Xlib.h~fix-utf8-wrong-define
-+++ libX11-6.2.1/include/X11/Xlib.h
-@@ -100,7 +100,7 @@
-
- /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
- November 2000. Its presence is indicated through the following macro. */
--#define X_HAVE_UTF8_STRING 1
-+#undef X_HAVE_UTF8_STRING
-
- typedef char *XPointer;
-
diff --git a/packages/xorg-lib/libice/autofoo.patch b/packages/xorg-lib/libice/autofoo.patch
deleted file mode 100644
index 8ab0585fb8..0000000000
--- a/packages/xorg-lib/libice/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libICE-6.3.3/configure.ac~autofoo 2004-05-11 01:50:07.000000000 -0400
-+++ libICE-6.3.3/configure.ac 2005-01-18 02:30:07.463895544 -0500
-@@ -8,12 +8,12 @@
- libICE)
-
- AC_CONFIG_SRCDIR([Makefile.am])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch b/packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch
deleted file mode 100644
index afa34712e2..0000000000
--- a/packages/xorg-lib/liblbxutil/mkg3states-1.0.0.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -ruN liblbxutil-X11R7.0-1.0.0_orig/configure.ac liblbxutil-X11R7.0-1.0.0/configure.ac
---- liblbxutil-X11R7.0-1.0.0_orig/configure.ac 2005-12-15 00:24:36.000000000 +0000
-+++ liblbxutil-X11R7.0-1.0.0/configure.ac 2006-08-21 18:32:04.000000000 +0000
-@@ -60,4 +60,5 @@
-
- AC_OUTPUT([Makefile
- src/Makefile
-+ src/image/Makefile
- lbxutil.pc])
-diff -ruN liblbxutil-X11R7.0-1.0.0_orig/src/Makefile.am liblbxutil-X11R7.0-1.0.0/src/Makefile.am
---- liblbxutil-X11R7.0-1.0.0_orig/src/Makefile.am 2005-10-16 02:07:10.000000000 +0000
-+++ liblbxutil-X11R7.0-1.0.0/src/Makefile.am 2006-08-21 18:32:04.000000000 +0000
-@@ -1,9 +1,6 @@
- lib_LTLIBRARIES = liblbxutil.la
-
--noinst_PROGRAMS = mkg3states
--
--mkg3states_SOURCES = \
-- $(srcdir)/image/mkg3states.c
-+SUBDIRS = image
-
- liblbxutil_la_SOURCES = \
- $(srcdir)/lbx_zlib/reqstats.h \
-@@ -28,9 +25,8 @@
-
- $(srcdir)/image/dfaxg42d.c: g3states.h
-
--g3states.h: mkg3states
-- -rm -f g3states.h
-- ./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
-+g3states.h: image/mkg3states
-+ ./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
-
- liblbxutil_la_LDFLAGS = -version-number 1:0:0
-
-diff -ruN liblbxutil-X11R7.0-1.0.0_orig/src/image/Makefile.am liblbxutil-X11R7.0-1.0.0/src/image/Makefile.am
---- liblbxutil-X11R7.0-1.0.0_orig/src/image/Makefile.am 1970-01-01 00:00:00.000000000 +0000
-+++ liblbxutil-X11R7.0-1.0.0/src/image/Makefile.am 2006-08-21 18:32:04.000000000 +0000
-@@ -0,0 +1,15 @@
-+# evil hack
-+CFLAGS=$(CFLAGS_FOR_BUILD)
-+CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
-+LDFLAGS=$(LDFLAGS_FOR_BUILD)
-+
-+CC=$(CC_FOR_BUILD)
-+LIBTOOL = @LIBTOOL@ --tag=CC
-+
-+noinst_PROGRAMS = mkg3states
-+
-+mkg3states_SOURCES = \
-+ mkg3states.c
-+
-+mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD)
-+mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD)
diff --git a/packages/xorg-lib/libsm/autofoo.patch b/packages/xorg-lib/libsm/autofoo.patch
deleted file mode 100644
index 8cb204a66e..0000000000
--- a/packages/xorg-lib/libsm/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libSM-6.0.3/configure.ac~autofoo 2004-05-11 01:51:21.000000000 -0400
-+++ libSM-6.0.3/configure.ac 2005-01-18 12:15:50.405356376 -0500
-@@ -8,12 +8,12 @@
- libSM)
-
- AC_CONFIG_SRCDIR([Makefile.am])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/diet-x11/X18NCMSstubs.diff b/packages/xorg-lib/libx11/X18NCMSstubs.diff
index 54b1727a95..54b1727a95 100644
--- a/packages/xorg-lib/diet-x11/X18NCMSstubs.diff
+++ b/packages/xorg-lib/libx11/X18NCMSstubs.diff
diff --git a/packages/xorg-lib/libx11/autofoo.patch b/packages/xorg-lib/libx11/autofoo.patch
deleted file mode 100644
index 8bdba09768..0000000000
--- a/packages/xorg-lib/libx11/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libX11-6.2.1/configure.ac~autofoo
-+++ libX11-6.2.1/configure.ac
-@@ -7,12 +7,12 @@
- [jg@freedesktop.org],
- libX11)
- AC_CONFIG_SRCDIR([Makefile.am])
--AM_INIT_AUTOMAKE([dist-bzip2])
-+AC_CONFIG_AUX_DIR(.)
-
-+AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([src/config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/diet-x11/fix-disable-xlocale.diff b/packages/xorg-lib/libx11/fix-disable-xlocale.diff
index 9dbf6dac68..9dbf6dac68 100644
--- a/packages/xorg-lib/diet-x11/fix-disable-xlocale.diff
+++ b/packages/xorg-lib/libx11/fix-disable-xlocale.diff
diff --git a/packages/xorg-lib/diet-x11/fix-utf8-wrong-define.patch b/packages/xorg-lib/libx11/fix-utf8-wrong-define.patch
index a098db1941..a098db1941 100644
--- a/packages/xorg-lib/diet-x11/fix-utf8-wrong-define.patch
+++ b/packages/xorg-lib/libx11/fix-utf8-wrong-define.patch
diff --git a/packages/xorg-lib/files/ruutf8.patch b/packages/xorg-lib/libx11/ruutf8.patch
index 0822b30cb8..0822b30cb8 100644
--- a/packages/xorg-lib/files/ruutf8.patch
+++ b/packages/xorg-lib/libx11/ruutf8.patch
diff --git a/packages/xorg-lib/diet-x11/xchar2b.patch b/packages/xorg-lib/libx11/xchar2b.patch
index 31da58fa5c..31da58fa5c 100644
--- a/packages/xorg-lib/diet-x11/xchar2b.patch
+++ b/packages/xorg-lib/libx11/xchar2b.patch
diff --git a/packages/xorg-lib/diet-x11/xim.patch b/packages/xorg-lib/libx11/xim.patch
index 0eab197a80..0eab197a80 100644
--- a/packages/xorg-lib/diet-x11/xim.patch
+++ b/packages/xorg-lib/libx11/xim.patch
diff --git a/packages/xorg-lib/libx11_1.1.1.bb b/packages/xorg-lib/libx11_1.1.1.bb
index 7ac5b58345..5b1e304d51 100644
--- a/packages/xorg-lib/libx11_1.1.1.bb
+++ b/packages/xorg-lib/libx11_1.1.1.bb
@@ -1,23 +1,18 @@
require xorg-lib-common.inc
PE = "1"
-PR = "r4"
+PR = "r5"
DESCRIPTION = "Base X libs."
-
DEPENDS += " bigreqsproto xproto xextproto xtrans libxau xcmiscproto \
- libxcb libxdmcp xf86bigfontproto kbproto inputproto"
+ libxdmcp xf86bigfontproto kbproto inputproto"
PROVIDES = "virtual/libx11"
XORG_PN = "libX11"
-PACKAGES =+ "libx11-xcb"
+EXTRA_OECONF += "--without-xcb"
SRC_URI += " file://ruutf8.patch;patch=1"
-FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${libdir}/X11/Xcms.txt"
-FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale"
-FILES_${PN}-xcb = "${libdir}/libX11-xcb.so.*"
-
do_compile() {
(
unset CC LD CXX CCLD CFLAGS CPPFLAGS LDFLAGS CXXFLAGS
@@ -27,3 +22,5 @@ do_compile() {
oe_runmake
}
+FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${libdir}/X11/Xcms.txt"
+FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale"
diff --git a/packages/xorg-lib/libxau/autofoo.patch b/packages/xorg-lib/libxau/autofoo.patch
deleted file mode 100644
index 1e42eb974d..0000000000
--- a/packages/xorg-lib/libxau/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libXau-0.1.1/configure.ac~autofoo
-+++ libXau-0.1.1/configure.ac
-@@ -25,11 +25,10 @@
-
- AC_PREREQ([2.57])
- AC_INIT(libXau, [0.1.1], [keithp@keithp.com],libXau)
--AM_INIT_AUTOMAKE([dist-bzip2])
--AM_MAINTAINER_MODE
--
- AM_CONFIG_HEADER(config.h)
- AC_CONFIG_AUX_DIR(.)
-+AM_INIT_AUTOMAKE([dist-bzip2])
-+AM_MAINTAINER_MODE
-
- AC_PROG_CC
- AC_PROG_INSTALL
diff --git a/packages/xorg-lib/libxaw/auxdir.patch b/packages/xorg-lib/libxaw/auxdir.patch
deleted file mode 100644
index 4226ab6a4d..0000000000
--- a/packages/xorg-lib/libxaw/auxdir.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- /tmp/configure.ac 2005-06-17 21:26:17.519157272 +0200
-+++ libXaw-7.0.2/configure.ac 2005-06-17 21:26:34.832525240 +0200
-@@ -10,7 +10,6 @@
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxcalibrate/coords.patch b/packages/xorg-lib/libxcalibrate/coords.patch
deleted file mode 100644
index 19cf1639f6..0000000000
--- a/packages/xorg-lib/libxcalibrate/coords.patch
+++ /dev/null
@@ -1,50 +0,0 @@
----
- xcalibrate.c | 26 ++++++++++++++++++++++++++
- xcalibrate.h | 2 ++
- 2 files changed, 28 insertions(+)
-
-Index: XCalibrate/xcalibrate.c
-===================================================================
---- XCalibrate.orig/xcalibrate.c 2007-06-30 14:12:22.000000000 +0100
-+++ XCalibrate/xcalibrate.c 2007-06-30 14:18:10.000000000 +0100
-@@ -227,3 +227,29 @@ XCalibrateSetRawMode (Display *dpy, Bool
- SyncHandle ();
- return 0;
- }
-+
-+Status
-+XCalibrateScreenToCoord (Display *dpy, int *x, int *y)
-+{
-+ XExtDisplayInfo *info = XCalibrateFindDisplay (dpy);
-+ xXCalibrateScreenToCoordReq *req;
-+ xXCalibrateScreenToCoordReply rep;
-+ LockDisplay (dpy);
-+ GetReq (XCalibrateScreenToCoord, req);
-+ req->reqType = info->codes->major_opcode;
-+ req->xCalibrateReqType = X_XCalibrateScreenToCoord;
-+ req->x = *x;
-+ req->y = *y;
-+ if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
-+ {
-+ UnlockDisplay (dpy);
-+ SyncHandle ();
-+ return 1;
-+ }
-+ *x = rep.x;
-+ *y = rep.y;
-+ UnlockDisplay (dpy);
-+ SyncHandle ();
-+ return 0;
-+}
-+
-Index: XCalibrate/xcalibrate.h
-===================================================================
---- XCalibrate.orig/xcalibrate.h 2007-06-30 14:16:16.000000000 +0100
-+++ XCalibrate/xcalibrate.h 2007-06-30 14:16:38.000000000 +0100
-@@ -43,4 +43,6 @@ Status XCalibrateQueryVersion (Display *
-
- Status XCalibrateSetRawMode (Display *dpy, Bool enable);
-
-+Status XCalibrateScreenToCoord (Display *dpy, int *x, int *y);
-+
- #endif
diff --git a/packages/xorg-lib/libxcalibrate_git.bb b/packages/xorg-lib/libxcalibrate_git.bb
index 99f11e40fd..24b4a1f067 100644
--- a/packages/xorg-lib/libxcalibrate_git.bb
+++ b/packages/xorg-lib/libxcalibrate_git.bb
@@ -3,11 +3,9 @@ require xorg-lib-common.inc
DESCRIPTION = " Touchscreen calibration client library"
LICENSE = "BSD-X"
DEPENDS = "virtual/libx11 calibrateproto libxext"
-PV = "0.0+git${SRCDATE}"
-PR = "r2"
+PV = "0.0+git${SRCREV}"
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libXCalibrate;protocol=git;tag=4be232e30cd33a44a1ce6d3ec429ee6101540c62 \
- file://coords.patch;patch=1"
+SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libXCalibrate;protocol=git"
S = "${WORKDIR}/git"
diff --git a/packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch b/packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch
deleted file mode 100644
index 072cf25214..0000000000
--- a/packages/xorg-lib/libxcomposite-1.0.1/autofoo.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: libXcomposite-1.0.1/configure.ac
-===================================================================
---- libXcomposite-1.0.1.orig/configure.ac 2004-01-15 03:59:12.000000000 -0500
-+++ libXcomposite-1.0.1/configure.ac 2005-01-18 17:05:25.573929256 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXcomposite, 1.0.1, [keithp@keithp.com], libXcomposite)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxcursor-1.1.2/autofoo.patch b/packages/xorg-lib/libxcursor-1.1.2/autofoo.patch
deleted file mode 100644
index 99cd45a7ea..0000000000
--- a/packages/xorg-lib/libxcursor-1.1.2/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXcursor-1.1.2/configure.ac~autofoo 2004-01-16 23:38:26.000000000 -0500
-+++ libXcursor-1.1.2/configure.ac 2005-01-18 13:40:06.539707120 -0500
-@@ -31,11 +31,11 @@
- dnl not possible to extract the version number here from Xcursor.h
- dnl
- AC_INIT([libXcursor],1.1.2,[keithp@keithp.com],[libXcursor])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AC_CONFIG_SRCDIR([Makefile.am])
- AM_MAINTAINER_MODE
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- dnl libtool versioning
-
diff --git a/packages/xorg-lib/libxcursor/autofoo.patch b/packages/xorg-lib/libxcursor/autofoo.patch
deleted file mode 100644
index 7aa573ce13..0000000000
--- a/packages/xorg-lib/libxcursor/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
-Index: Xcursor/configure.ac
-===================================================================
---- Xcursor.orig/configure.ac 2004-04-12 10:11:12.000000000 -0400
-+++ Xcursor/configure.ac 2005-01-18 16:04:36.860617992 -0500
-@@ -31,11 +31,11 @@
- dnl not possible to extract the version number here from Xcursor.h
- dnl
- AC_INIT([libXcursor],1.1.3,[keithp@keithp.com],[libXcursor])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AC_CONFIG_SRCDIR([Makefile.am])
- AM_MAINTAINER_MODE
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- dnl libtool versioning
-
diff --git a/packages/xorg-lib/libxdamage-1.0.1/autofoo.patch b/packages/xorg-lib/libxdamage-1.0.1/autofoo.patch
deleted file mode 100644
index 1e3ec45d4a..0000000000
--- a/packages/xorg-lib/libxdamage-1.0.1/autofoo.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: libXdamage-1.0.1/configure.ac
-===================================================================
---- libXdamage-1.0.1.orig/configure.ac 2004-01-15 03:54:55.000000000 -0500
-+++ libXdamage-1.0.1/configure.ac 2005-01-18 19:07:16.951430928 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXdamage, 1.0.1, [keithp@keithp.com], libXdamage)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxdamage/m4.patch b/packages/xorg-lib/libxdamage/m4.patch
deleted file mode 100644
index 393f3d13d2..0000000000
--- a/packages/xorg-lib/libxdamage/m4.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- /dev/null
-+++ Xdamage/m4/pkg.m4
-@@ -0,0 +1,57 @@
-+
-+dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
-+dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
-+dnl also defines GSTUFF_PKG_ERRORS on error
-+AC_DEFUN(PKG_CHECK_MODULES, [
-+ succeeded=no
-+
-+ if test -z "$PKG_CONFIG"; then
-+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-+ fi
-+
-+ if test "$PKG_CONFIG" = "no" ; then
-+ echo "*** The pkg-config script could not be found. Make sure it is"
-+ echo "*** in your path, or set the PKG_CONFIG environment variable"
-+ echo "*** to the full path to pkg-config."
-+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
-+ else
-+ PKG_CONFIG_MIN_VERSION=0.9.0
-+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
-+ AC_MSG_CHECKING(for $2)
-+
-+ if $PKG_CONFIG --exists "$2" ; then
-+ AC_MSG_RESULT(yes)
-+ succeeded=yes
-+
-+ AC_MSG_CHECKING($1_CFLAGS)
-+ $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
-+ AC_MSG_RESULT($$1_CFLAGS)
-+
-+ AC_MSG_CHECKING($1_LIBS)
-+ $1_LIBS=`$PKG_CONFIG --libs "$2"`
-+ AC_MSG_RESULT($$1_LIBS)
-+ else
-+ $1_CFLAGS=""
-+ $1_LIBS=""
-+ ## If we have a custom action on failure, don't print errors, but
-+ ## do set a variable so people can do so.
-+ $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
-+ ifelse([$4], ,echo $$1_PKG_ERRORS,)
-+ fi
-+
-+ AC_SUBST($1_CFLAGS)
-+ AC_SUBST($1_LIBS)
-+ else
-+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
-+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
-+ fi
-+ fi
-+
-+ if test $succeeded = yes; then
-+ ifelse([$3], , :, [$3])
-+ else
-+ ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
-+ fi
-+])
-+
-+
diff --git a/packages/xorg-lib/libxdmcp/.mtn2git_empty b/packages/xorg-lib/libxdmcp/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxdmcp/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxdmcp/autofoo.patch b/packages/xorg-lib/libxdmcp/autofoo.patch
deleted file mode 100644
index ff1a76ad04..0000000000
--- a/packages/xorg-lib/libxdmcp/autofoo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libXdmcp-0.1.3/configure.ac~autofoo
-+++ libXdmcp-0.1.3/configure.ac
-@@ -25,12 +25,11 @@
-
- AC_PREREQ([2.57])
- AC_INIT(libXdmcp, [0.1.3], [keithp@keithp.com],libXdmcp)
-+AC_CONFIG_AUX_DIR(.)
-+AC_CONFIG_HEADERS([include/X11/Xdmcpconf.h])
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
--
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
--AC_CONFIG_HEADERS([include/X11/Xdmcpconf.h])
-
- AC_PROG_CC
- AC_PROG_INSTALL
diff --git a/packages/xorg-lib/libxext/.mtn2git_empty b/packages/xorg-lib/libxext/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxext/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxext/autofoo.patch b/packages/xorg-lib/libxext/autofoo.patch
deleted file mode 100644
index c006884526..0000000000
--- a/packages/xorg-lib/libxext/autofoo.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- Xext/configure.ac~autofoo
-+++ Xext/configure.ac
-@@ -8,9 +8,8 @@
- libXext)
-
- AC_CONFIG_SRCDIR([Makefile.am])
--AM_INIT_AUTOMAKE([dist-bzip2])
--
- AC_CONFIG_AUX_DIR(.)
-+AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
diff --git a/packages/xorg-lib/libxfixes/.mtn2git_empty b/packages/xorg-lib/libxfixes/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxfixes/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxfixes/autofoo.patch b/packages/xorg-lib/libxfixes/autofoo.patch
deleted file mode 100644
index 26803cf7f3..0000000000
--- a/packages/xorg-lib/libxfixes/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXfixes-2.0.1/configure.ac~autofoo 2004-01-15 03:40:23.000000000 -0500
-+++ libXfixes-2.0.1/configure.ac 2005-01-18 13:35:33.461221360 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXfixes, 2.0.1, [keithp@keithp.com], libXfixes)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxfont/autofoo.patch b/packages/xorg-lib/libxfont/autofoo.patch
deleted file mode 100644
index 4998625c24..0000000000
--- a/packages/xorg-lib/libxfont/autofoo.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXfont-1.4.2/configure.ac~autofoo 2004-05-06 20:19:03.000000000 -0400
-+++ libXfont-1.4.2/configure.ac 2005-01-16 12:14:14.042598720 -0500
-@@ -35,9 +35,9 @@
- dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
- dnl not possible to extract the version number here from Xfont.h
- dnl
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
- AC_CONFIG_HEADERS([include/X11/fonts/fontconf.h])
-
- # Check for progs
diff --git a/packages/xorg-lib/libxfont/scalable.patch b/packages/xorg-lib/libxfont/scalable.patch
deleted file mode 100644
index 7f97b9a8f6..0000000000
--- a/packages/xorg-lib/libxfont/scalable.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Index: fontfile/fontdir.c
-===================================================================
-RCS file: /cvs/xlibs/Xfont/fontfile/fontdir.c,v
-retrieving revision 3.22
-diff -u -r3.22 fontdir.c
---- xfont/fontfile/fontdir.c 7 Jul 2003 16:40:11 -0000 3.22
-+++ xfont/fontfile/fontdir.c 30 Dec 2004 20:37:12 -0000
-@@ -699,6 +699,11 @@
- */
- if (isscale)
- {
-+ /* If the fontname says it is scalable, make sure that the
-+ * renderer supports OpenScalable and GetInfoScalable.
-+ */
-+ if (renderer->OpenScalable && renderer->GetInfoScalable)
-+ {
- if (vals.values_supplied & SIZE_SPECIFY_MASK)
- {
- bzero((char *)&zeroVals, sizeof(zeroVals));
-@@ -798,6 +803,7 @@
- bitmap->name.name);
- }
- }
-+ }
- }
- return TRUE;
- }
diff --git a/packages/xorg-lib/libxft/.mtn2git_empty b/packages/xorg-lib/libxft/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxft/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxft/autofoo.patch b/packages/xorg-lib/libxft/autofoo.patch
deleted file mode 100644
index 54120aa612..0000000000
--- a/packages/xorg-lib/libxft/autofoo.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXft-2.1.6/configure.ac~autofoo 2004-03-22 10:02:59.000000000 -0500
-+++ libXft-2.1.6/configure.ac 2005-01-17 02:08:10.165951760 -0500
-@@ -33,12 +33,12 @@
- dnl Please bump the minor library number at each release as well.
- dnl
- AC_INIT(libXft, 2.1.6, [keithp@keithp.com], libXft)
-+AC_CONFIG_AUX_DIR(.)
-
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # checks for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxi/.mtn2git_empty b/packages/xorg-lib/libxi/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxi/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxi/autofoo.patch b/packages/xorg-lib/libxi/autofoo.patch
deleted file mode 100644
index f1bce9ed7a..0000000000
--- a/packages/xorg-lib/libxi/autofoo.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: libXi-6.0.1/configure.ac
-===================================================================
---- libXi-6.0.1.orig/configure.ac 2003-11-01 04:11:49.000000000 -0500
-+++ libXi-6.0.1/configure.ac 2005-01-20 11:34:06.878357352 -0500
-@@ -8,7 +8,6 @@
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/libxmu_1.0.4.bb b/packages/xorg-lib/libxmu_1.0.4.bb
new file mode 100644
index 0000000000..396e2a2d4b
--- /dev/null
+++ b/packages/xorg-lib/libxmu_1.0.4.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+
+DESCRIPTION = "X11 miscellaneous utility library"
+DEPENDS += "libxt libxext"
+PROVIDES = "xmu"
+PE = "1"
+
+XORG_PN = "libXmu"
+
+LEAD_SONAME = "libXmu"
+
+PACKAGES =+ "libxmuu libxmuu-dev"
+
+FILES_libxmuu = "${libdir}/libXmuu.so.*"
+FILES_libxmuu-dev = "${libdir}/libXmuu.so"
diff --git a/packages/xorg-lib/libxpm/.mtn2git_empty b/packages/xorg-lib/libxpm/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxpm/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxpm/autofoo.patch b/packages/xorg-lib/libxpm/autofoo.patch
deleted file mode 100644
index 6b2174bf02..0000000000
--- a/packages/xorg-lib/libxpm/autofoo.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Index: libXpm-3.5.1/configure.ac
-===================================================================
---- libXpm-3.5.1.orig/configure.ac 2004-05-11 02:00:35.000000000 -0400
-+++ libXpm-3.5.1/configure.ac 2005-01-19 18:35:57.187402008 -0500
-@@ -1,12 +1,12 @@
- AC_PREREQ(2.57)
- AC_INIT([libXpm], 3.5.1, [daniel@freedesktop.org], libXpm)
- AC_CONFIG_SRCDIR([Makefile.am])
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
-
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER([lib/config.h])
--AC_CONFIG_AUX_DIR(.)
-
- # Checks for programs.
- AC_PROG_LIBTOOL
diff --git a/packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty b/packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxrandr-1.0.2/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxrandr-1.0.2/autofoo.patch b/packages/xorg-lib/libxrandr-1.0.2/autofoo.patch
deleted file mode 100644
index 21f6e7fd78..0000000000
--- a/packages/xorg-lib/libxrandr-1.0.2/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXrandr-1.0.2/configure.ac~autofoo 2004-01-15 03:23:00.000000000 -0500
-+++ libXrandr-1.0.2/configure.ac 2005-01-16 11:18:35.924069872 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xrandr version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXrandr, 1.0.2, [keithp@keithp.com], libXrandr)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxrandr/.mtn2git_empty b/packages/xorg-lib/libxrandr/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxrandr/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxrandr/autofoo.patch b/packages/xorg-lib/libxrandr/autofoo.patch
deleted file mode 100644
index 7b1db760f2..0000000000
--- a/packages/xorg-lib/libxrandr/autofoo.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- Xrandr/configure.ac~autofoo.patch 2004-07-01 15:01:55.000000000 -0400
-+++ Xrandr/configure.ac 2005-01-16 11:22:09.169651616 -0500
-@@ -33,11 +33,11 @@
- dnl protocol, so Xrandr version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXrandr, 1.0.2, [keithp@keithp.com], libXrandr)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
---- Xrandr/ChangeLog~autofoo.patch 2004-09-19 04:53:38.000000000 -0400
-+++ Xrandr/ChangeLog 2005-01-16 11:52:29.694889712 -0500
-@@ -1,3 +1,7 @@
-+2005-01-16 Chris Larson <kergoth@handhelds.org>
-+
-+ * configure.ac: Fix to work with automake 1.9.x.
-+
- 2004-09-19 Carlos Romero <kidcrash@freedesktop.org>
-
- * Makefile.am:
diff --git a/packages/xorg-lib/libxrender/.mtn2git_empty b/packages/xorg-lib/libxrender/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxrender/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxrender/autofoo.patch b/packages/xorg-lib/libxrender/autofoo.patch
deleted file mode 100644
index eb21c766f8..0000000000
--- a/packages/xorg-lib/libxrender/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libXrender-0.8.4/configure.ac~autofoo
-+++ libXrender-0.8.4/configure.ac
-@@ -33,11 +33,10 @@
- dnl protocol, so Xrender version l.n.m corresponds to protocol version l.n
- dnl
- AC_INIT(libXrender, 0.8.4, [keithp@keithp.com], libXrender)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
--
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-lib/libxt/.mtn2git_empty b/packages/xorg-lib/libxt/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-lib/libxt/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-lib/libxt/autofoo.patch b/packages/xorg-lib/libxt/autofoo.patch
deleted file mode 100644
index ff6dfdbbcc..0000000000
--- a/packages/xorg-lib/libxt/autofoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libXt-0.1.5/configure.ac~autofoo 2004-05-06 20:19:04.000000000 -0400
-+++ libXt-0.1.5/configure.ac 2005-01-18 13:10:13.683262728 -0500
-@@ -28,11 +28,11 @@
- dnl
- dnl
- AC_INIT(libXt, 0.1.5, [keithp@keithp.com], libXt)
-+AC_CONFIG_AUX_DIR(.)
- AM_INIT_AUTOMAKE([dist-bzip2])
- AM_MAINTAINER_MODE
-
- AM_CONFIG_HEADER(config.h)
--AC_CONFIG_AUX_DIR(.)
-
- # Check for progs
- AC_PROG_CC
diff --git a/packages/xorg-proto/calibrateproto/.mtn2git_empty b/packages/xorg-proto/calibrateproto/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xorg-proto/calibrateproto/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xorg-proto/calibrateproto/coords.patch b/packages/xorg-proto/calibrateproto/coords.patch
deleted file mode 100644
index 8f44b029c5..0000000000
--- a/packages/xorg-proto/calibrateproto/coords.patch
+++ /dev/null
@@ -1,56 +0,0 @@
----
- xcalibrateproto.h | 25 +++++++++++++++++++++++++
- xcalibratewire.h | 3 ++-
- 2 files changed, 27 insertions(+), 1 deletion(-)
-
-Index: XCalibrateExt/xcalibrateproto.h
-===================================================================
---- XCalibrateExt.orig/xcalibrateproto.h 2004-06-02 20:18:47.000000000 +0100
-+++ XCalibrateExt/xcalibrateproto.h 2007-06-30 14:17:29.000000000 +0100
-@@ -78,6 +78,31 @@ typedef struct {
-
- #define sz_xXCalibrateRawModeReply 32
-
-+typedef struct {
-+ CARD8 reqType;
-+ CARD8 xCalibrateReqType;
-+ CARD16 length B16;
-+ CARD32 x B32;
-+ CARD32 y B32;
-+} xXCalibrateScreenToCoordReq;
-+
-+#define sz_xXCalibrateScreenToCoordReq 12
-+
-+typedef struct {
-+ BYTE type; /* X_Reply */
-+ BYTE pad1;
-+ CARD16 sequenceNumber B16;
-+ CARD32 x;
-+ CARD32 y;
-+ CARD32 pad2 B32;
-+ CARD32 pad3 B32;
-+ CARD32 pad4 B32;
-+ CARD32 pad5 B32;
-+ CARD32 pad6 B32;
-+} xXCalibrateScreenToCoordReply;
-+
-+#define sz_xXCalibrateScreenToCoordReply 32
-+
- /* Events */
-
- typedef struct {
-Index: XCalibrateExt/xcalibratewire.h
-===================================================================
---- XCalibrateExt.orig/xcalibratewire.h 2004-06-02 20:18:47.000000000 +0100
-+++ XCalibrateExt/xcalibratewire.h 2007-06-30 14:17:29.000000000 +0100
-@@ -31,8 +31,9 @@
-
- #define X_XCalibrateQueryVersion 0
- #define X_XCalibrateRawMode 1
-+#define X_XCalibrateScreenToCoord 2
-
--#define XCalibrateNumberRequests (X_XCalibrateSetRawMode + 1)
-+#define XCalibrateNumberRequests (X_XCalibrateScreenToCoord + 1)
-
- #define X_XCalibrateRawTouchscreen 0
-
diff --git a/packages/xorg-proto/calibrateproto_git.bb b/packages/xorg-proto/calibrateproto_git.bb
index 60308601b9..02d20b5038 100644
--- a/packages/xorg-proto/calibrateproto_git.bb
+++ b/packages/xorg-proto/calibrateproto_git.bb
@@ -2,10 +2,8 @@ require xorg-proto-common.inc
DESCRIPTION = "Touchscreen calibration protocol"
-PV = "0.0+git${SRCDATE}"
+PV = "0.0+git${SRCREV}"
PR = "r1"
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/calibrateproto;protocol=git;tag=a1d5ef0c73fbef3e758c51b57ac69ba9567bae04 \
- file://coords.patch;patch=1"
-
+SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/calibrateproto;protocol=git"
S = "${WORKDIR}/git"
diff --git a/packages/xorg-proto/glproto_1.4.9.bb b/packages/xorg-proto/glproto_1.4.9.bb
new file mode 100644
index 0000000000..037b4205ca
--- /dev/null
+++ b/packages/xorg-proto/glproto_1.4.9.bb
@@ -0,0 +1,3 @@
+require xorg-proto-common.inc
+DESCRIPTION = "X11 OpenGL extension wire protocol"
+PE = "1"
diff --git a/packages/xorg-proto/xproto-native_7.0.11.bb b/packages/xorg-proto/xproto-native_7.0.11.bb
new file mode 100644
index 0000000000..baae28ec32
--- /dev/null
+++ b/packages/xorg-proto/xproto-native_7.0.11.bb
@@ -0,0 +1,5 @@
+require xproto_${PV}.bb
+
+XORG_PN = "xproto"
+
+inherit native
diff --git a/packages/xorg-proto/xproto_7.0.11.bb b/packages/xorg-proto/xproto_7.0.11.bb
new file mode 100644
index 0000000000..ee8af276de
--- /dev/null
+++ b/packages/xorg-proto/xproto_7.0.11.bb
@@ -0,0 +1,3 @@
+require xorg-proto-common.inc
+DESCRIPTION = "X11 core wire protocol and auxiliary headers"
+PE = "1"
diff --git a/packages/xorg-lib/libxdamage-1.0.1/.mtn2git_empty b/packages/xorg-xserver/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxdamage-1.0.1/.mtn2git_empty
+++ b/packages/xorg-xserver/files/.mtn2git_empty
diff --git a/packages/xorg-xserver/files/fix-picturestr-include-order.patch b/packages/xorg-xserver/files/fix-picturestr-include-order.patch
new file mode 100644
index 0000000000..3da235e1e1
--- /dev/null
+++ b/packages/xorg-xserver/files/fix-picturestr-include-order.patch
@@ -0,0 +1,15 @@
+# Reverse include order in render/picturestr.h to be able to compile against renderproto >= 0.9.3
+Index: xorg-server-1.2.0/render/picturestr.h
+===================================================================
+--- xorg-server-1.2.0.orig/render/picturestr.h 2008-02-09 22:54:46.000000000 +0100
++++ xorg-server-1.2.0/render/picturestr.h 2008-02-09 22:54:50.000000000 +0100
+@@ -26,8 +26,8 @@
+ #ifndef _PICTURESTR_H_
+ #define _PICTURESTR_H_
+
+-#include "glyphstr.h"
+ #include "scrnintstr.h"
++#include "glyphstr.h"
+ #include "resource.h"
+
+ typedef struct _DirectFormat {
diff --git a/packages/xorg-xserver/files/xorg-avr32-support.diff b/packages/xorg-xserver/files/xorg-avr32-support.diff
new file mode 100644
index 0000000000..dd7d379010
--- /dev/null
+++ b/packages/xorg-xserver/files/xorg-avr32-support.diff
@@ -0,0 +1,19 @@
+--- /tmp/servermd.h 2007-09-30 17:27:22.310911628 +0200
++++ xorg-server-1.4/include/servermd.h 2007-09-30 17:28:25.297799199 +0200
+@@ -130,6 +130,16 @@
+
+ #endif /* vax */
+
++#ifdef __avr32__
++
++#define IMAGE_BYTE_ORDER MSBFirst
++#define BITMAP_BIT_ORDER MSBFirst
++#define GLYPHPADBYTES 4
++#define GETLEFTBITS_ALIGNMENT 1
++#define AVOID_MEMORY_READ
++
++#endif /* __avr32__ */
++
+ #ifdef __arm32__
+
+ #define IMAGE_BYTE_ORDER LSBFirst
diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc
index 2e8535ef30..819be742d4 100644
--- a/packages/xorg-xserver/xorg-xserver-common.inc
+++ b/packages/xorg-xserver/xorg-xserver-common.inc
@@ -13,7 +13,7 @@ resourceproto xineramaproto xtrans evieext libxkbfile libxfont libxau \
libfontenc libxdmcp libxxf86vm libxaw libxmu libxt libxpm libxext libx11 \
libxkbui libxxf86misc libxi libdmx libxtst libxres mesa"
-REPENDS="rgb"
+RDEPENDS_${PN} = "rgb"
XORG_PN = "xorg-server"
SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2 \
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/linux-keyboard-mediumraw.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/linux-keyboard-mediumraw.patch
new file mode 100644
index 0000000000..997028ad8d
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/linux-keyboard-mediumraw.patch
@@ -0,0 +1,83 @@
+Index: xorg-server-1.3.0.0/hw/kdrive/linux/keyboard.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/linux/keyboard.c 2006-11-16 18:01:23.000000000 +0000
++++ xorg-server-1.3.0.0/hw/kdrive/linux/keyboard.c 2007-08-12 12:14:29.000000000 +0000
+@@ -384,14 +384,35 @@
+ LinuxKeyboardRead (int fd, void *closure)
+ {
+ unsigned char buf[256], *b;
+- int n;
++ int n, mediumraw_data, mediumraw_event;
++ static enum { LOWKEY, BYTE1, BYTE2 } mediumraw_state = LOWKEY;
+
+ while ((n = read (fd, buf, sizeof (buf))) > 0)
+ {
+ b = buf;
+ while (n--)
+ {
+- KdEnqueueKeyboardEvent (b[0] & 0x7f, b[0] & 0x80);
++ switch (mediumraw_state)
++ {
++ case LOWKEY:
++ if ( (b[0] & 0x7f) == 0)
++ {
++ mediumraw_state = BYTE1;
++ mediumraw_event = b[0] & 0x80;
++ }
++ else
++ KdEnqueueKeyboardEvent (b[0] & 0x7f, b[0] & 0x80);
++ break;
++ case BYTE1:
++ mediumraw_data = (b[0] & 0x7f) << 7;
++ mediumraw_state = BYTE2;
++ break;
++ case BYTE2:
++ /* FIXME: KdEnqueueKeyboardEvent should accept word size */
++ KdEnqueueKeyboardEvent ( mediumraw_data | (b[0] & 0x7f), mediumraw_event);
++ mediumraw_state = LOWKEY;
++ break;
++ }
+ b++;
+ }
+ }
+Index: xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_kbd.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/xfree86/os-support/linux/lnx_kbd.c 2006-11-16 18:01:25.000000000 +0000
++++ xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_kbd.c 2007-08-12 12:14:29.000000000 +0000
+@@ -430,12 +430,32 @@
+ {
+ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+ unsigned char rBuf[64];
+- int nBytes, i;
++ int nBytes, i, mediumraw_data, mediumraw_event;
++ static enum { LOWKEY, BYTE1, BYTE2 } mediumraw_state = LOWKEY;
+ if ((nBytes = read( pInfo->fd, (char *)rBuf, sizeof(rBuf))) > 0) {
+- for (i = 0; i < nBytes; i++)
+- pKbd->PostEvent(pInfo, rBuf[i] & 0x7f,
+- rBuf[i] & 0x80 ? FALSE : TRUE);
++ for (i = 0; i < nBytes; i++) {
++ switch (mediumraw_state) {
++ case LOWKEY:
++ if ( (rBuf[i] & 0x7f) == 0) {
++ mediumraw_state = BYTE1;
++ mediumraw_event = rBuf[i] & 0x80;
++ }
++ else
++ pKbd->PostEvent(pInfo, rBuf[i] & 0x7f,
++ rBuf[i] & 0x80 ? FALSE : TRUE);
++ break;
++ case BYTE1:
++ mediumraw_data = (rBuf[i] & 0x7f) << 7;
++ mediumraw_state = BYTE2;
++ break;
++ case BYTE2:
++ pKbd->PostEvent(pInfo, mediumraw_data | (rBuf[i] & 0x7f),
++ mediumraw_event ? FALSE : TRUE);
++ mediumraw_state = LOWKEY;
++ break;
++ }
+ }
++ }
+ }
+
+ static Bool
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/keyboard-resume-workaround.patch b/packages/xorg-xserver/xserver-kdrive-1.4/keyboard-resume-workaround.patch
new file mode 100644
index 0000000000..4964ff5479
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/keyboard-resume-workaround.patch
@@ -0,0 +1,16 @@
+Index: xorg-server-1.4/hw/kdrive/linux/keyboard.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/linux/keyboard.c 2007-09-29 18:31:15.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/linux/keyboard.c 2007-09-29 18:33:02.000000000 +0200
+@@ -743,11 +743,6 @@
+ cfsetispeed(&nTty, 9600);
+ cfsetospeed(&nTty, 9600);
+ tcsetattr(fd, TCSANOW, &nTty);
+- /*
+- * Flush any pending keystrokes
+- */
+- while ((n = read (fd, buf, sizeof (buf))) > 0)
+- ;
+ KdRegisterFd (fd, LinuxKeyboardRead, ki);
+ return Success;
+ }
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/linux-keyboard-mediumraw.patch b/packages/xorg-xserver/xserver-kdrive-1.4/linux-keyboard-mediumraw.patch
new file mode 100644
index 0000000000..36d2f8eae8
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/linux-keyboard-mediumraw.patch
@@ -0,0 +1,44 @@
+Index: git/hw/kdrive/linux/keyboard.c
+===================================================================
+--- git.orig/hw/kdrive/linux/keyboard.c 2007-11-14 21:30:45.000000000 +0000
++++ git/hw/kdrive/linux/keyboard.c 2007-11-15 12:00:11.000000000 +0000
+@@ -42,6 +42,8 @@
+ #include <sys/ioctl.h>
+
+ extern int LinuxConsoleFd;
++static unsigned char mediumraw_data, mediumraw_up;
++static enum { DEFAULT, EXTBYTE1, EXTBYTE2 } mediumraw_state = DEFAULT;
+
+ static const KeySym linux_to_x[256] = {
+ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
+@@ -701,7 +703,29 @@
+ else
+ #endif
+ scancode = b[0] & 0x7f;
+- KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80);
++ /* This is extended medium raw mode interpreter
++ see linux/drivers/keyboard.c (kbd->kbdmode == VC_MEDIUMRAW) */
++ switch (mediumraw_state)
++ {
++ case DEFAULT:
++ if (scancode == 0)
++ {
++ mediumraw_state = EXTBYTE1;
++ mediumraw_up = b[0] & 0x80;
++ }
++ else
++ KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80);
++ break;
++ case EXTBYTE1:
++ mediumraw_data = scancode;
++ mediumraw_state = EXTBYTE2;
++ break;
++ case EXTBYTE2:
++ /* Note: Only codes < 256 will pass correctly through KdEnqueueKeyboardEvent() */
++ KdEnqueueKeyboardEvent (closure, (int)mediumraw_data << 7 | scancode, mediumraw_up);
++ mediumraw_state = DEFAULT;
++ break;
++ }
+ b++;
+ }
+ }
diff --git a/packages/xorg-xserver/xserver-kdrive-imageon_1.2.0.bb b/packages/xorg-xserver/xserver-kdrive-imageon_1.2.0.bb
index 26f8666076..54fe19d990 100644
--- a/packages/xorg-xserver/xserver-kdrive-imageon_1.2.0.bb
+++ b/packages/xorg-xserver/xserver-kdrive-imageon_1.2.0.bb
@@ -7,9 +7,9 @@ DEPENDS += "libxkbfile libxcalibrate"
PROVIDES = "virtual/xserver"
PE = "1"
-PR = "r3"
+PR = "r4"
-FILESPATH = "${FILE_DIRNAME}/xserver-kdrive-1.2.0:${FILE_DIRNAME}/xserver-kdrive"
+FILESPATH = "${FILE_DIRNAME}/xserver-kdrive-${PV}:${FILE_DIRNAME}/xserver-kdrive:${FILE_DIRNAME}/files"
SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
${KDRIVE_COMMON_PATCHES} \
file://kdrive-evdev.patch;patch=1 \
@@ -21,6 +21,7 @@ SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
file://kdrive-imageon.patch;patch=1 \
file://xcalibrate_coords.patch;patch=1 \
file://enable-builtin-fonts.patch;patch=1 \
+ file://fix-picturestr-include-order.patch;patch=1 \
"
S = "${WORKDIR}/xorg-server-${PV}"
diff --git a/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb b/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb
index 372971e2ed..9a8db266b6 100644
--- a/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb
+++ b/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb
@@ -7,6 +7,7 @@ SECTION = "x11/base"
DESCRIPTION = "X server from freedesktop.org"
DESCRIPTION_xserver-kdrive-xomap = "X server for the OMAP in the Nokia 800"
+PR = "r1"
PE = "1"
COMPATIBLE_MACHINE = "nokia(800|770)"
@@ -23,6 +24,7 @@ SRC_URI = "http://repository.maemo.org/pool/maemo3.1/free/source/xorg-server_1.1
file://fixups.patch;patch=1 \
file://button_only.patch;patch=1 \
file://calibrateext.patch;patch=1 \
+ file://fix-picturestr-include-order.patch;patch=1 \
file://xcalibrate_coords.patch;patch=1"
# file://kdrive-evdev.patch;patch=1 \
# file://kdrive-use-evdev.patch;patch=1 \
diff --git a/packages/xorg-xserver/xserver-kdrive_1.4.bb b/packages/xorg-xserver/xserver-kdrive_1.4.bb
index 50b103495b..c87090197c 100644
--- a/packages/xorg-xserver/xserver-kdrive_1.4.bb
+++ b/packages/xorg-xserver/xserver-kdrive_1.4.bb
@@ -3,7 +3,7 @@ require xserver-kdrive-common.inc
DEPENDS += "hal libxkbfile libxcalibrate pixman"
PE = "1"
-PR = "r1"
+PR = "r3"
SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
${KDRIVE_COMMON_PATCHES} \
@@ -16,10 +16,13 @@ SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
file://w100-autofoo.patch;patch=1 \
file://w100-fix-offscreen-bmp.patch;patch=1 \
file://w100-new-input-world-order.patch;patch=1 \
+ file://linux-keyboard-mediumraw.patch;patch=1 \
file://xcalibrate-new-input-world-order.patch;patch=1 \
file://tslib-default-device.patch;patch=1 \
file://fbdev-evdev.patch;patch=1 \
- "
+ file://keyboard-resume-workaround.patch;patch=1 \
+ file://xorg-avr32-support.diff;patch=1 \
+ "
S = "${WORKDIR}/xorg-server-${PV}"
diff --git a/packages/xserver-common/files/ghi270/.mtn2git_empty b/packages/xserver-common/files/ghi270/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xserver-common/files/ghi270/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xserver-common/files/ti-osk.patch b/packages/xserver-common/files/ti-osk.patch
new file mode 100644
index 0000000000..69d93350fc
--- /dev/null
+++ b/packages/xserver-common/files/ti-osk.patch
@@ -0,0 +1,12 @@
+diff -Naur xserver-common-1.18-orig/X11/Xserver xserver-common-1.18/X11/Xserver
+--- xserver-common-1.18-orig/X11/Xserver 2007-08-24 06:15:25.000000000 -0500
++++ xserver-common-1.18/X11/Xserver 2008-01-12 19:59:59.000000000 -0600
+@@ -76,6 +76,8 @@
+ ARGS="$ARGS -dpi 100 -rgba rgb" ;;
+ "Generic OMAP1510/1610/1710")
+ ARGS="$ARGS -dpi 220 -mouse /dev/input/event0" ;;
++ "TI-OSK")
++ ARGS="$ARGS -dpi 100 -mouse tslib" ;;
+ "Cellon C8000 Board")
+ ARGS="$ARGS -dpi 100 -screen 240x320,10,1" ;;
+ "HTC Universal")
diff --git a/packages/xserver-common/xserver-common_1.18.bb b/packages/xserver-common/xserver-common_1.18.bb
index bf7b049939..6e3e2dd1ed 100644
--- a/packages/xserver-common/xserver-common_1.18.bb
+++ b/packages/xserver-common/xserver-common_1.18.bb
@@ -9,7 +9,7 @@ PACKAGE_ARCH = "all"
# we are using a gpe-style Makefile
inherit gpe
-SRC_URI_append = " file://unbreak-simpad.patch;patch=1 file://setDPI.sh "
+SRC_URI_append = " file://ti-osk.patch;patch=1 file://unbreak-simpad.patch;patch=1 file://setDPI.sh "
do_install_append() {
install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
diff --git a/packages/xserver-common/xserver-common_1.21.bb b/packages/xserver-common/xserver-common_1.21.bb
new file mode 100644
index 0000000000..a30a37c893
--- /dev/null
+++ b/packages/xserver-common/xserver-common_1.21.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Common X11 scripts and support files"
+LICENSE = "GPL"
+SECTION = "x11"
+RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
+PR = "r0"
+
+PACKAGE_ARCH = "all"
+
+# we are using a gpe-style Makefile
+inherit gpe
+
+SRC_URI_append = " file://setDPI.sh "
+
+do_install_append() {
+ install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
+}
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty b/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xserver-kdrive-common/xserver-kdrive-common/etc/X11/Xsession.d/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xxf86dgaext/.mtn2git_empty b/packages/xxf86dgaext/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xxf86dgaext/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xxf86vmext/.mtn2git_empty b/packages/xxf86vmext/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xxf86vmext/.mtn2git_empty
+++ /dev/null
diff --git a/packages/zaurusd/files/01-check-toggle-landscape b/packages/zaurusd/files/01-check-toggle-landscape
new file mode 100644
index 0000000000..13ae9a4e68
--- /dev/null
+++ b/packages/zaurusd/files/01-check-toggle-landscape
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Try to determine and ignore false rotation signals caused by
+# headphones removal or remote removal remembering the old state.
+# OE#3390
+if test "`cat /var/run/last-screen-rotation`" = landscape ; then
+ exit
+fi
+echo landscape > /var/run/last-screen-rotation
diff --git a/packages/zaurusd/files/01-check-toggle-portait b/packages/zaurusd/files/01-check-toggle-portait
new file mode 100644
index 0000000000..4c3b7f1291
--- /dev/null
+++ b/packages/zaurusd/files/01-check-toggle-portait
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Try to determine and ignore false rotation signals caused by
+# headphones removal or remote removal remembering the old state.
+# OE#3390
+if test "`cat /var/run/last-screen-rotation`" = portait ; then
+ exit
+fi
+echo portait > /var/run/last-screen-rotation
diff --git a/packages/zaurusd/files/alsa-cxx00-default.state.patch b/packages/zaurusd/files/alsa-cxx00-default.state.patch
index c3e234b534..b10e6c85dd 100644
--- a/packages/zaurusd/files/alsa-cxx00-default.state.patch
+++ b/packages/zaurusd/files/alsa-cxx00-default.state.patch
@@ -1,64 +1,194 @@
---- zaurusd/config/alsa/cxx00-default.state.orig 2006-06-28 08:45:07.000000000 +0000
-+++ zaurusd/config/alsa/cxx00-default.state 2007-05-21 21:40:50.000000000 +0000
-@@ -32,7 +32,7 @@
+http://bugs.openembedded.org/show_bug.cgi?id=2617
+- Fixes default ALSA state for SL-Cxx00.
+ * Treble level reflects kernel fix alsa-wm8750-treble.patch (>2.6.24).
+ * Increased Mic Levels and Boost.
+ * Enabled Capture Switch.
+ * Improved Headphones / Speaker volume balance.
+ * 3D Mode changed to "Playback" (still Off by default).
+ * Disabled all bypasses.
+ * All Mono signals decreased to 0 (not connected).
+ * Line Mux changed to differential, keeping PGA unused.
+ * Using Digital mono for recording (jack supports ony mono).
+ * Enabled Automatic Level Control, optimized for voice recording.
+ * Enabled Zero Cross volume changes.
+- Do not alter incorrect mixer levels by zaurus-mixer-callback.
+
+Index: zaurusd/config/alsa/cxx00-default.state
+===================================================================
+--- zaurusd.orig/config/alsa/cxx00-default.state 2006-06-28 08:45:07.000000000 +0000
++++ zaurusd/config/alsa/cxx00-default.state 2007-11-27 23:06:43.000000000 +0000
+@@ -6,8 +6,8 @@
+ comment.range '0 - 63'
+ iface MIXER
+ name 'Capture Volume'
+- value.0 23
+- value.1 23
++ value.0 48
++ value.1 48
+ }
+ control.2 {
+ comment.access 'read write'
+@@ -15,8 +15,8 @@
+ comment.count 2
+ iface MIXER
+ name 'Capture ZC Switch'
+- value.0 false
+- value.1 false
++ value.0 true
++ value.1 true
+ }
+ control.3 {
+ comment.access 'read write'
+@@ -24,26 +24,26 @@
+ comment.count 2
+ iface MIXER
+ name 'Capture Switch'
+- value.0 false
+- value.1 false
++ value.0 true
++ value.1 true
+ }
+ control.4 {
+ comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
- name 'Out1 Playback ZC Switch'
+- value.0 false
+- value.1 false
+ name 'Headphone Playback ZC Switch'
- value.0 false
- value.1 false
++ value.0 true
++ value.1 true
}
-@@ -41,7 +41,7 @@
+ control.5 {
+ comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
- name 'Out2 Playback ZC Switch'
+- value.0 false
+- value.1 false
+ name 'Speaker Playback ZC Switch'
- value.0 false
- value.1 false
++ value.0 true
++ value.1 true
+ }
+ control.6 {
+ comment.access 'read write'
+@@ -92,8 +92,8 @@
+ comment.range '0 - 255'
+ iface MIXER
+ name 'PCM Volume'
+- value.0 255
+- value.1 255
++ value.0 220
++ value.1 220
}
-@@ -218,7 +218,7 @@
- comment.item.3 Stereo
+ control.11 {
+ comment.access 'read write'
+@@ -131,7 +131,7 @@
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Treble Volume'
+- value 15
++ value 0
+ }
+ control.15 {
+ comment.access 'read write'
+@@ -188,7 +188,7 @@
+ comment.item.1 Playback
iface MIXER
- name 'ALC Capture Function'
-- value Left
-+ value Off
+ name '3D Mode'
+- value Capture
++ value Playback
}
- control.24 {
+ control.21 {
comment.access 'read write'
-@@ -321,8 +321,8 @@
+@@ -226,7 +226,7 @@
+ comment.count 1
+ iface MIXER
+ name 'ALC Capture ZC Switch'
+- value false
++ value true
+ }
+ control.25 {
+ comment.access 'read write'
+@@ -235,7 +235,7 @@
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Hold Time'
+- value 0
++ value 9
+ }
+ control.26 {
+ comment.access 'read write'
+@@ -244,7 +244,7 @@
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Decay Time'
+- value 3
++ value 9
+ }
+ control.27 {
+ comment.access 'read write'
+@@ -253,7 +253,7 @@
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Capture Attack Time'
+- value 2
++ value 3
+ }
+ control.28 {
+ comment.access 'read write'
+@@ -306,7 +306,7 @@
+ comment.count 1
+ iface MIXER
+ name 'ZC Timeout Switch'
+- value false
++ value true
+ }
+ control.34 {
+ comment.access 'read write'
+@@ -321,7 +321,7 @@
comment.type BOOLEAN
comment.count 1
iface MIXER
- name 'Right Out2 Playback Invert Switch'
-- value true
+ name 'Right Speaker Playback Invert Switch'
-+ value false
+ value true
}
control.36 {
- comment.access 'read write'
@@ -331,8 +331,8 @@
comment.range '0 - 3'
iface MIXER
name 'Mic Boost'
- value.0 2
- value.1 2
++ value.0 3
++ value.1 3
+ }
+ control.37 {
+ comment.access 'read write'
+@@ -341,8 +341,8 @@
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Bypass Left Playback Volume'
+- value.0 2
+- value.1 2
+ value.0 0
+ value.1 0
}
- control.37 {
+ control.38 {
comment.access 'read write'
-@@ -351,8 +351,8 @@
+@@ -361,8 +361,8 @@
comment.range '0 - 7'
iface MIXER
- name 'Bypass Right Playback Volume'
-- value.0 0
-- value.1 0
-+ value.0 2
-+ value.1 2
+ name 'Bypass Mono Playback Volume'
+- value.0 2
+- value.1 2
++ value.0 0
++ value.1 0
}
- control.39 {
+ control.40 {
comment.access 'read write'
@@ -378,9 +378,9 @@
comment.count 2
@@ -68,8 +198,8 @@
- value.0 120
- value.1 120
+ name 'Headphone Playback Volume'
-+ value.0 121
-+ value.1 121
++ value.0 105
++ value.1 105
}
control.42 {
comment.access 'read write'
@@ -81,17 +211,26 @@
- value.0 119
- value.1 119
+ name 'Speaker Playback Volume'
-+ value.0 121
-+ value.1 121
++ value.0 127
++ value.1 127
}
control.43 {
comment.access 'read write'
+@@ -399,7 +399,7 @@
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Mono Playback Volume'
+- value 121
++ value 0
+ }
+ control.44 {
+ comment.access 'read write'
@@ -411,7 +411,7 @@
comment.item.3 'Digital Mono'
iface MIXER
name 'Right ADC Mux'
- value 'Mono (Left)'
-+ value Stereo
++ value 'Digital Mono'
}
control.45 {
comment.access 'read write'
@@ -100,55 +239,19 @@
iface MIXER
name 'Left ADC Mux'
- value 'Mono (Left)'
-+ value Stereo
++ value 'Digital Mono'
}
control.46 {
comment.access 'read write'
-@@ -458,7 +458,7 @@
- comment.item.4 Differential
- iface MIXER
- name 'Right Line Mux'
-- value Differential
-+ value 'Line 1'
- }
- control.49 {
- comment.access 'read write'
@@ -471,7 +471,7 @@
comment.item.4 Differential
iface MIXER
name 'Left Line Mux'
- value PGA
-+ value 'Line 1'
++ value Differential
}
control.50 {
comment.access 'read write'
-@@ -483,7 +483,7 @@
- comment.item.3 Differential
- iface MIXER
- name 'Right PGA Mux'
-- value Differential
-+ value 'Line 1'
- }
- control.51 {
- comment.access 'read write'
-@@ -495,7 +495,7 @@
- comment.item.3 Differential
- iface MIXER
- name 'Left PGA Mux'
-- value Differential
-+ value 'Line 1'
- }
- control.52 {
- comment.access 'read write'
-@@ -535,7 +535,7 @@
- comment.count 1
- iface MIXER
- name 'Right Mixer Left Playback Switc'
-- value false
-+ value true
- }
- control.57 {
- comment.access 'read write'
@@ -610,9 +610,8 @@
comment.access 'read write'
comment.type ENUMERATED
@@ -161,3 +264,38 @@
iface MIXER
name 'Speaker Function'
value On
+Index: zaurusd/scripts/zaurus-mixer-callback.in
+===================================================================
+--- zaurusd.orig/scripts/zaurus-mixer-callback.in 2007-11-27 23:32:45.000000000 +0000
++++ zaurusd/scripts/zaurus-mixer-callback.in 2007-11-27 23:36:54.000000000 +0000
+@@ -16,8 +16,6 @@
+ JACK="$1"
+ SPK="$2"
+ LEFT="true"
+-RLPLAYBACK="false"
+-RLBYPASS="false"
+
+ case $SPK in
+ "On")
+@@ -37,8 +35,6 @@
+ ;;
+ "Headset" | "Mic" | "Line")
+ LEFT="false"
+- RLPLAYBACK="true"
+- RLBYPASS="true"
+ SPK="Off"
+ ;;
+ *)
+@@ -58,12 +54,6 @@
+ }; /Speaker Function/ {
+ N
+ s:\(Speaker Function.*\n.*value \).*$:\1$SPK:
+-}; /Right Mixer Left Playback/ {
+-N
+-s:\(Right Mixer Left Playback.*\n.*value \).*$:\1$RLPLAYBACK:
+-}; /Right Mixer Left Bypass/ {
+-N
+-s:\(Right Mixer Left Bypass.*\n.*value \).*$:\1$RLBYPASS:
+ }; /Left Mixer Playback/ {
+ N
+ s:\(Left Mixer Playback.*\n.*value \).*$:\1$LEFT:
diff --git a/packages/zaurusd/files/zaurus-hinge.in b/packages/zaurusd/files/zaurus-hinge.in
index f719ba3c76..9670e8803e 100644
--- a/packages/zaurusd/files/zaurus-hinge.in
+++ b/packages/zaurusd/files/zaurus-hinge.in
@@ -19,9 +19,12 @@ if [ -z "$1" ]; then
exit 1
fi
-panel_user="`ps aux|grep matchbox-panel|grep -v grep | awk '{print $2}'`"
-
+panel_user="`ps aux|grep matchbox-panel|grep -v grep | awk '{print $1}'`"
+# touch ~/.norot can disable rotation.
+if test -f /home/$panel_user/.norot ; then
+ exit
+fi
STATE=$1
diff --git a/packages/zaurusd/files/zaurusd-mixer-callback.patch b/packages/zaurusd/files/zaurusd-mixer-callback.patch
deleted file mode 100644
index 7c9455d042..0000000000
--- a/packages/zaurusd/files/zaurusd-mixer-callback.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- zaurusd/scripts/zaurus-mixer-callback.in.orig 2007-06-05 03:15:30.000000000 +0000
-+++ zaurusd/scripts/zaurus-mixer-callback.in 2007-06-05 03:14:53.000000000 +0000
-@@ -16,7 +16,7 @@
- JACK="$1"
- SPK="$2"
- LEFT="true"
--RLPLAYBACK="false"
-+RLPLAYBACK="true"
- RLBYPASS="false"
-
- case $SPK in
diff --git a/packages/zaurusd/zaurusd_svn.bb b/packages/zaurusd/zaurusd_svn.bb
index 3ea0d2b22f..be9379eced 100644
--- a/packages/zaurusd/zaurusd_svn.bb
+++ b/packages/zaurusd/zaurusd_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "GPL"
DEPENDS = "tslib"
RDEPENDS = "procps"
PV = "0.0+svn${SRCDATE}"
-PR = "r16"
+PR = "r17"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \
file://zaurus-hinge.in \
@@ -14,10 +14,11 @@ SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \
file://disable-alsa-handling.patch;patch=1 \
file://zaurus-hinge.matchbox-portrait \
file://zaurus-hinge.matchbox-landscape \
- file://zaurusd-mixer-callback.patch;patch=1 \
file://tslib-1.diff;patch=1 \
file://zaurus-hinge.bl-on \
- file://zaurus-hinge.bl-off"
+ file://zaurus-hinge.bl-off \
+ file://01-check-toggle-landscape \
+ file://01-check-toggle-portait"
S = "${WORKDIR}/${PN}"
@@ -39,6 +40,9 @@ do_install_append() {
install -m 0755 "${WORKDIR}/zaurus-hinge.bl-on" "${D}/etc/zaurusd/hinge-portrait.d/00-backlight-on"
install -m 0755 "${WORKDIR}/zaurus-hinge.bl-off" "${D}/etc/zaurusd/hinge-close.d/00-backlight-off"
+ install -m 0755 "${WORKDIR}/01-check-toggle-landscape" "${D}/etc/zaurusd/hinge-landscape.d/01-check-toggle"
+ install -m 0755 "${WORKDIR}/01-check-toggle-portait" "${D}/etc/zaurusd/hinge-portrait.d/01-check-toggle"
+
install -m 0755 "${WORKDIR}/zaurus-hinge.matchbox-landscape" "${D}/etc/zaurusd/hinge-landscape.d/20-matchbox-landscape"
install -m 0755 "${WORKDIR}/zaurus-hinge.matchbox-portrait" "${D}/etc/zaurusd/hinge-portrait.d/20-matchbox-portrait"
}
diff --git a/packages/zbedic/libbedic_1.0.bb b/packages/zbedic/libbedic_1.1.bb
index 4ffb13cee0..4ffb13cee0 100644
--- a/packages/zbedic/libbedic_1.0.bb
+++ b/packages/zbedic/libbedic_1.1.bb
diff --git a/packages/zbedic/zbedic_1.0.bb b/packages/zbedic/zbedic_1.2.bb
index afdfdd5350..afdfdd5350 100644
--- a/packages/zbedic/zbedic_1.0.bb
+++ b/packages/zbedic/zbedic_1.2.bb
diff --git a/packages/zten/files/zten.patch b/packages/zten/files/zten.patch
index 22ba56951a..3fff27a23d 100644
--- a/packages/zten/files/zten.patch
+++ b/packages/zten/files/zten.patch
@@ -1,3 +1,5 @@
+upstream: no upstream bug tracker. Laibsch contacted author by mail on 2008-02-17.
+
--- zten/zten.pro.orig 2003-02-16 16:45:44.000000000 +0100
+++ zten/zten.pro 2006-04-23 18:50:19.000000000 +0200
@@ -1,11 +1,9 @@
diff --git a/packages/zten/zten_1.6.2.bb b/packages/zten/zten_1.6.2.bb
index b5a4c6eac1..33feae0911 100644
--- a/packages/zten/zten_1.6.2.bb
+++ b/packages/zten/zten_1.6.2.bb
@@ -1,4 +1,5 @@
DESCRIPTION = "EB*/EPWING dictionary browser for Linux Zaurus"
+AUTHOR = "Yuuichi Teranishi <teranisi@gohome.org>"
HOMEPAGE = "http://www.gohome.org/zten"
SECTION = "opie/applications"
PRIORITY = "optional"
diff --git a/packages/xorg-lib/libxdamage/.mtn2git_empty b/packages/zziplib/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xorg-lib/libxdamage/.mtn2git_empty
+++ b/packages/zziplib/files/.mtn2git_empty
diff --git a/packages/zziplib/files/zip_c.patch b/packages/zziplib/files/zip_c.patch
new file mode 100644
index 0000000000..fb23ce650e
--- /dev/null
+++ b/packages/zziplib/files/zip_c.patch
@@ -0,0 +1,15 @@
+From zziplib Debian source package
+--- a/zzip/zip.c 2007-03-19 02:27:49.000000000 +1100
++++ b/zzip/zip.c 2007-11-07 17:40:52.985849197 +1100
+@@ -402,7 +402,10 @@
+ uint16_t u_extras, u_comment, u_namlen;
+
+ if (fd_map)
+- { d = (void*)(fd_map+zz_fd_gap+zz_offset); } /* fd_map+fd_gap==u_rootseek */
++ {
++ d = &dirent;
++ memcpy(d, fd_map+zz_fd_gap+zz_offset, sizeof(*d)); /* fd_map+fd_gap==u_rootseek */
++ }
+ else
+ {
+ if (io->fd.seeks(fd, zz_rootseek+zz_offset, SEEK_SET) < 0)
diff --git a/packages/zziplib/files/zziplib-0.10-disable-test.patch b/packages/zziplib/files/zziplib-0.10-disable-test.patch
new file mode 100644
index 0000000000..143045dac6
--- /dev/null
+++ b/packages/zziplib/files/zziplib-0.10-disable-test.patch
@@ -0,0 +1,13 @@
+Index: zziplib-0.10.82/bins/zziptest.c
+===================================================================
+--- zziplib-0.10.82.orig/bins/zziptest.c 2008-02-20 12:10:35.000000000 +0100
++++ zziplib-0.10.82/bins/zziptest.c 2008-02-20 12:10:44.000000000 +0100
+@@ -52,7 +52,7 @@
+ }
+ } printf("OK.\n");
+
+-#if 1
++#if 0
+ printf("{check...\n");
+ { struct zzip_dir_hdr * hdr = dir->hdr0;
+
diff --git a/packages/zziplib/files/zziplib-autoconf.patch b/packages/zziplib/files/zziplib-autoconf.patch
new file mode 100644
index 0000000000..6fc666f8f2
--- /dev/null
+++ b/packages/zziplib/files/zziplib-autoconf.patch
@@ -0,0 +1,509 @@
+Reworks zziplib's configure and top-level makefile considerably to make
+this package compile in a cross-compilation environment. This has not
+and will not be sent upstream because the author most likely wants it that
+way (lots of MSVC crap).
+
+Index: zziplib-0.13.49/Makefile.am
+===================================================================
+--- zziplib-0.13.49.orig/Makefile.am 2008-02-19 22:54:19.000000000 +0100
++++ zziplib-0.13.49/Makefile.am 2008-02-19 23:37:40.000000000 +0100
+@@ -1,126 +1,10 @@
+-AUTOMAKE_OPTIONS = 1.4 foreign dist-bzip2
+ ACLOCAL_AMFLAGS = -I m4
+-WANT_AUTOMAKE = 1.7
+-WANT_AUTOCONF = 2.57
++WANT_AUTOMAKE = 1.96
++WANT_AUTOCONF = 2.61
+
+ DIST_SUBDIRS = zzip zzipwrap bins test docs SDL
+ SUBDIRS = zzip zzipwrap bins test docs @SDL@
+
+-# see Makefile.mk for the "make rpm" target
+-rpm2: dist-bzip2 $(PACKAGE).spec
+- rpmbuild -ta $(PACKAGE)-$(VERSION).tar.bz2
+-
+-indent-check:
+- (cd zzip && $(MAKE) `basename $@`)
+-
+-doc docs docu clean-doc clean-docs clean-docu zzip.html zzip.xml zzip.pdf \
+-man mans manpages htmpages unpack clean-unpack changes.htm pdfs \
+-omf install-omf install-doc install-docs install-sf install-man3 install-mans :
+- (cd docs && $(MAKE) `basename $@`)
+-
+-sdl testsdl test-sdl install-sdl :
+- (cd SDL && $(MAKE) `basename $@`)
+-
+-check-test0 check-test1 check-zzdir check-zzcat \
+-check-zzxor check-zzxordir check-zzxorcat \
+-check-sfx check-readme : \
+- (cd test && $(MAKE) `basename $@`)
+-
+-MSVC8 = msvc8/README.TXT msvc8/zip.exe msvc8/test1.zip msvc8/test.zip \
+-msvc8/zzdir.vcproj msvc8/zzipself.vcproj msvc8/zzip.vcproj \
+-msvc8/zziplib.sln msvc8/zzipsetstub.sln msvc8/zzobfuscated.sln \
+-msvc8/zziplib.vcproj msvc8/zzipsetstub.vcproj msvc8/zzobfuscated.vcproj \
+-msvc8/zzcat.sln msvc8/zzipself.bat msvc8/zzip.sln \
+-msvc8/zzcat.vcproj msvc8/zzipself.sln msvc8/zziptest.sln \
+-msvc8/zzdir.sln msvc8/zzipself.txt msvc8/zziptest.vcproj \
+- msvc8/zzipfseeko.vcproj msvc8/zzipmmapped.vcproj
+-
+-MSVC7 = msvc7/pkzip.exe msvc7/test1.zip msvc7/test.zip \
+-msvc7/zzdir.vcproj msvc7/zzipself.vcproj msvc7/zzip.vcproj \
+-msvc7/zziplib.sln msvc7/zzipsetstub.sln msvc7/zzobfuscated.sln \
+-msvc7/zziplib.vcproj msvc7/zzipsetstub.vcproj msvc7/zzobfuscated.vcproj \
+-msvc7/zzcat.sln msvc7/zzipself.bat msvc7/zzip.sln \
+-msvc7/zzcat.vcproj msvc7/zzipself.sln msvc7/zziptest.sln \
+-msvc7/zzdir.sln msvc7/zzipself.txt msvc7/zziptest.vcproj
+-
+-MSVC6 = \
+-msvc6/zzcat.dsp msvc6/zziplib.dsp msvc6/zzipwrap.dsp \
+-msvc6/zzdir.dsp msvc6/zziplib.dsw msvc6/zzobfuscated.dsp \
+-msvc6/zziptest.dsp msvc6/zzip.dsp
+-
+ EXTRA_DIST = zziplib.spec zzipback.sed Makefile.mk \
+- $(MSVC8) $(MSVC7) $(MSVC6) $(am__aclocal_m4_deps)
+-
+-PHONY = auto boottrap rpm doc docs man manpages htmpages sdl testsdl \
+- comp compats msvc6 msvc7
+-# ------------------------------------------------------------------------
+-
+-test-comp:
+- test ! -d testing || rm -r testing
+- mkdir testing
+- (cd testing && tar xzvf ../$(PACKAGE)-$(VERSION).tar.gz)
+- (cd "testing/$(PACKAGE)-$(VERSION)/zziplib" && sh configure)
+- $(MAKE) -C "testing/$(PACKAGE)-$(VERSION)/zziplib"
+- $(MAKE) -C "testing/$(PACKAGE)-$(VERSION)/zziplib" check
+-
+-clean-comp:
+- test ! -d testing || rm -r testing
+-
+-msvc :
+- mkdir bin
+- mkdir lib
+- mkdir include
+- mkdir include/zzip
+- cp $(srcdir)/msvc6/Release/*.exe bin/
+- cp $(srcdir)/msvc6/Release/*.dll bin/
+- cp $(srcdir)/msvc6/Release/*.lib lib/
+- cp $(srcdir)/zzip/*.h include/zzip/
+- zip -9r $(srcdir)/$(PACKAGE)-$(VERSION)-msvc6-bin.zip bin/
+- zip -9r $(srcdir)/$(PACKAGE)-$(VERSION)-msvc6-lib.zip lib/ include/
+- rm -r bin lib include
+-
+-# ------------------------------------------------------------------ zzip64
+-_FILE_OFFSET64 = -D_ZZIP_LARGEFILE -D_FILE_OFFSET_BITS=64
+-_RELEASEINFO64 = "RELEASE_INFO=-release 0-64"
++ $(am__aclocal_m4_deps)
+
+-zzip64-setup: zzip64-setup.tmp
+-zzip64-setup.tmp : zzip/Makefile zzip/_config.h zzip/.deps/* zzip/zziplib.pc
+- - mkdir zzip64
+- cp -a zzip/Makefile zzip/_config.h zzip/.deps/ zzip/zziplib.pc zzip64/
+- date > zzip64.dir
+-zzip64-build: zzip64-build.tmp
+-zzip64-build.tmp : zzip64-setup.tmp $(top_srcdir)/zzip/*
+- cd zzip64 && $(MAKE) "AM_CFLAGS=$(_FILE_OFFSET64)" $(_RELEASEINFO64)
+-zzip64-install: zzip64-install.tmp
+-zzip64-install.tmp : zzip64-build.tmp
+- cd zzip64 && $(MAKE) install $(_RELEASEINFO64)
+- cd $(DESTDIR)$(libdir) && mv libzzip.so libzzip64.so
+- cd $(DESTDIR)$(libdir) && mv libzzip.a libzzip64.a
+- cd $(DESTDIR)$(libdir) && \
+- sed -e 's/zzip.so/zzip64.so/' \
+- -e 's/zzip.a/zzip64.a/' libzzip.la > libzzip64.la
+- cd $(DESTDIR)$(libdir)/pkgconfig && \
+- sed -e 's/largefile=/largefile= %_FILE_OFFSET64/' \
+- -e 's/-lzzip/-lzzip64/' \
+- -e 's/zziplib/zziplib64/' zziplib.pc > zziplib64.pc
+-zzip32-postinstall:
+- cd $(DESTDIR)$(libdir) && mv libzzip.so libzzip32.so
+- cd $(DESTDIR)$(libdir) && mv libzzip.a libzzip32.a
+- cd $(DESTDIR)$(libdir) && ln -s libzzip32.so libzzip.so
+- cd $(DESTDIR)$(libdir) && ln -s libzzip32.a libzzip.a
+- cd $(DESTDIR)$(libdir) && \
+- sed -e 's/zzip.so/zzip32.so/' \
+- -e 's/zzip.a/zzip32.a/' libzzip.la > libzzip32.la
+- cd $(DESTDIR)$(libdir)/pkgconfig && \
+- sed -e 's/-lzzip/-lzzip32/' \
+- -e 's/zziplib/zziplib32/' zziplib.pc > zziplib32.pc
+-zzip-postinstall:
+- : "the 12.8x and 11.8x and 10.8x packages are all the same actually"
+- cd $(DESTDIR)$(libdir) || exit 1 \
+- ; for i in libzzip*.so.1? ; do : \
+- ; v10=`echo $i | sed -e "s/.so.../.so.10/"` \
+- ; v11=`echo $i | sed -e "s/.so.../.so.11/"` \
+- ; v12=`echo $i | sed -e "s/.so.../.so.12/"` \
+- ; test ! -e $v10 && test -e $v12 && ln -s $v12 $v10 \
+- ; test ! -e $v12 && test -e $v10 && ln -s $v10 $v12 \
+- ; ln -s $v10 $v11 || true; done
+Index: zziplib-0.13.49/configure.ac
+===================================================================
+--- zziplib-0.13.49.orig/configure.ac 2008-02-15 21:56:37.000000000 +0100
++++ zziplib-0.13.49/configure.ac 2008-02-19 23:43:05.000000000 +0100
+@@ -1,12 +1,12 @@
+-AC_INIT(zziplib.spec)
+-AC_PREREQ(2.49)
+-AC_COPYRIGHT([Guido Draheim <guido@gmx.de> for ZZipLib.SF.net])
++AC_PREREQ(2.61)
++AC_INIT([zziplib], [0.13.49], [Guido Draheim <guido@gmx.de>])
++AC_CANONICAL_TARGET
++AM_INIT_AUTOMAKE([foreign 1.9 dist-bzip2])
++
++AC_CONFIG_SRCDIR([zzip/zip.c])
+ AC_REVISION($Revision: 1.9 $)
+-AC_CONFIG_AUX_DIR(uses)
++
+ # =======================================================================
+-AC_CANONICAL_SYSTEM
+-dnl AM_ENABLE_MULTILIB([Makefile],[$host])
+-AX_ENABLE_BUILDDIR_UNAME
+ AC_SET_DEFAULT_PATHS_SYSTEM
+ # -----------------------------------------------------------------------
+ AC_ARG_ENABLE(thread-safe,AC_HELP_STRING(
+@@ -61,8 +61,6 @@
+ AC_SUBST(ZLIB_INCL)
+ AC_SUBST(ZLIB_LDIR)
+ # -----------------------------------------------------------------------
+-AX_SPEC_DEFAULTS
+-AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
+ dnl test ".$CFLAGS" = "." && CFLAGS=""
+ AC_PROG_CC
+ dnl test ".$CFLAGS" = "." && test "$GCC" = "yes" && CFLAGS="-O3"
+@@ -77,7 +75,7 @@
+ sed -f $srcdir/zzip/_msvc.sed $srcdir/config.h.in >zzip/_msvc.in
+ AC_CONFIG_HEADERS([config.h])
+ AX_PREFIX_CONFIG_H([zzip/_config.h],[zzip],[config.h])
+-AX_PREFIX_CONFIG_H([zzip/_msvc.h],[zzip],[zzip/_msvc.in])
++#AX_PREFIX_CONFIG_H([zzip/_msvc.h],[zzip],[zzip/_msvc.in])
+ AM_MAINTAINER_MODE
+
+ AX_CREATE_PKGCONFIG_INFO(dnl
+Index: zziplib-0.13.49/install-sh
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ zziplib-0.13.49/install-sh 2008-02-19 23:43:36.000000000 +0100
+@@ -0,0 +1,323 @@
++#!/bin/sh
++# install - install a program, script, or datafile
++
++scriptversion=2005-05-14.22
++
++# This originates from X11R5 (mit/util/scripts/install.sh), which was
++# later released in X11R6 (xc/config/util/install.sh) with the
++# following copyright and license.
++#
++# Copyright (C) 1994 X Consortium
++#
++# Permission is hereby granted, free of charge, to any person obtaining a copy
++# of this software and associated documentation files (the "Software"), to
++# deal in the Software without restriction, including without limitation the
++# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
++# sell copies of the Software, and to permit persons to whom the Software is
++# furnished to do so, subject to the following conditions:
++#
++# The above copyright notice and this permission notice shall be included in
++# all copies or substantial portions of the Software.
++#
++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
++# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
++# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++#
++# Except as contained in this notice, the name of the X Consortium shall not
++# be used in advertising or otherwise to promote the sale, use or other deal-
++# ings in this Software without prior written authorization from the X Consor-
++# tium.
++#
++#
++# FSF changes to this file are in the public domain.
++#
++# Calling this script install-sh is preferred over install.sh, to prevent
++# `make' implicit rules from creating a file called install from it
++# when there is no Makefile.
++#
++# This script is compatible with the BSD install script, but was written
++# from scratch. It can only install one file at a time, a restriction
++# shared with many OS's install programs.
++
++# set DOITPROG to echo to test this script
++
++# Don't use :- since 4.3BSD and earlier shells don't like it.
++doit="${DOITPROG-}"
++
++# put in absolute paths if you don't have them in your path; or use env. vars.
++
++mvprog="${MVPROG-mv}"
++cpprog="${CPPROG-cp}"
++chmodprog="${CHMODPROG-chmod}"
++chownprog="${CHOWNPROG-chown}"
++chgrpprog="${CHGRPPROG-chgrp}"
++stripprog="${STRIPPROG-strip}"
++rmprog="${RMPROG-rm}"
++mkdirprog="${MKDIRPROG-mkdir}"
++
++chmodcmd="$chmodprog 0755"
++chowncmd=
++chgrpcmd=
++stripcmd=
++rmcmd="$rmprog -f"
++mvcmd="$mvprog"
++src=
++dst=
++dir_arg=
++dstarg=
++no_target_directory=
++
++usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
++ or: $0 [OPTION]... SRCFILES... DIRECTORY
++ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
++ or: $0 [OPTION]... -d DIRECTORIES...
++
++In the 1st form, copy SRCFILE to DSTFILE.
++In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
++In the 4th, create DIRECTORIES.
++
++Options:
++-c (ignored)
++-d create directories instead of installing files.
++-g GROUP $chgrpprog installed files to GROUP.
++-m MODE $chmodprog installed files to MODE.
++-o USER $chownprog installed files to USER.
++-s $stripprog installed files.
++-t DIRECTORY install into DIRECTORY.
++-T report an error if DSTFILE is a directory.
++--help display this help and exit.
++--version display version info and exit.
++
++Environment variables override the default commands:
++ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
++"
++
++while test -n "$1"; do
++ case $1 in
++ -c) shift
++ continue;;
++
++ -d) dir_arg=true
++ shift
++ continue;;
++
++ -g) chgrpcmd="$chgrpprog $2"
++ shift
++ shift
++ continue;;
++
++ --help) echo "$usage"; exit $?;;
++
++ -m) chmodcmd="$chmodprog $2"
++ shift
++ shift
++ continue;;
++
++ -o) chowncmd="$chownprog $2"
++ shift
++ shift
++ continue;;
++
++ -s) stripcmd=$stripprog
++ shift
++ continue;;
++
++ -t) dstarg=$2
++ shift
++ shift
++ continue;;
++
++ -T) no_target_directory=true
++ shift
++ continue;;
++
++ --version) echo "$0 $scriptversion"; exit $?;;
++
++ *) # When -d is used, all remaining arguments are directories to create.
++ # When -t is used, the destination is already specified.
++ test -n "$dir_arg$dstarg" && break
++ # Otherwise, the last argument is the destination. Remove it from $@.
++ for arg
++ do
++ if test -n "$dstarg"; then
++ # $@ is not empty: it contains at least $arg.
++ set fnord "$@" "$dstarg"
++ shift # fnord
++ fi
++ shift # arg
++ dstarg=$arg
++ done
++ break;;
++ esac
++done
++
++if test -z "$1"; then
++ if test -z "$dir_arg"; then
++ echo "$0: no input file specified." >&2
++ exit 1
++ fi
++ # It's OK to call `install-sh -d' without argument.
++ # This can happen when creating conditional directories.
++ exit 0
++fi
++
++for src
++do
++ # Protect names starting with `-'.
++ case $src in
++ -*) src=./$src ;;
++ esac
++
++ if test -n "$dir_arg"; then
++ dst=$src
++ src=
++
++ if test -d "$dst"; then
++ mkdircmd=:
++ chmodcmd=
++ else
++ mkdircmd=$mkdirprog
++ fi
++ else
++ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
++ # might cause directories to be created, which would be especially bad
++ # if $src (and thus $dsttmp) contains '*'.
++ if test ! -f "$src" && test ! -d "$src"; then
++ echo "$0: $src does not exist." >&2
++ exit 1
++ fi
++
++ if test -z "$dstarg"; then
++ echo "$0: no destination specified." >&2
++ exit 1
++ fi
++
++ dst=$dstarg
++ # Protect names starting with `-'.
++ case $dst in
++ -*) dst=./$dst ;;
++ esac
++
++ # If destination is a directory, append the input filename; won't work
++ # if double slashes aren't ignored.
++ if test -d "$dst"; then
++ if test -n "$no_target_directory"; then
++ echo "$0: $dstarg: Is a directory" >&2
++ exit 1
++ fi
++ dst=$dst/`basename "$src"`
++ fi
++ fi
++
++ # This sed command emulates the dirname command.
++ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
++
++ # Make sure that the destination directory exists.
++
++ # Skip lots of stat calls in the usual case.
++ if test ! -d "$dstdir"; then
++ defaultIFS='
++ '
++ IFS="${IFS-$defaultIFS}"
++
++ oIFS=$IFS
++ # Some sh's can't handle IFS=/ for some reason.
++ IFS='%'
++ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
++ shift
++ IFS=$oIFS
++
++ pathcomp=
++
++ while test $# -ne 0 ; do
++ pathcomp=$pathcomp$1
++ shift
++ if test ! -d "$pathcomp"; then
++ $mkdirprog "$pathcomp"
++ # mkdir can fail with a `File exist' error in case several
++ # install-sh are creating the directory concurrently. This
++ # is OK.
++ test -d "$pathcomp" || exit
++ fi
++ pathcomp=$pathcomp/
++ done
++ fi
++
++ if test -n "$dir_arg"; then
++ $doit $mkdircmd "$dst" \
++ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
++ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
++ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
++
++ else
++ dstfile=`basename "$dst"`
++
++ # Make a couple of temp file names in the proper directory.
++ dsttmp=$dstdir/_inst.$$_
++ rmtmp=$dstdir/_rm.$$_
++
++ # Trap to clean up those temp files at exit.
++ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
++ trap '(exit $?); exit' 1 2 13 15
++
++ # Copy the file name to the temp name.
++ $doit $cpprog "$src" "$dsttmp" &&
++
++ # and set any options; do chmod last to preserve setuid bits.
++ #
++ # If any of these fail, we abort the whole thing. If we want to
++ # ignore errors from any of these, just make sure not to ignore
++ # errors from the above "$doit $cpprog $src $dsttmp" command.
++ #
++ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
++ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
++ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
++
++ # Now rename the file to the real destination.
++ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
++ || {
++ # The rename failed, perhaps because mv can't rename something else
++ # to itself, or perhaps because mv is so ancient that it does not
++ # support -f.
++
++ # Now remove or move aside any old file at destination location.
++ # We try this two ways since rm can't unlink itself on some
++ # systems and the destination file might be busy for other
++ # reasons. In this case, the final cleanup might fail but the new
++ # file should still install successfully.
++ {
++ if test -f "$dstdir/$dstfile"; then
++ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
++ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
++ || {
++ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
++ (exit 1); exit 1
++ }
++ else
++ :
++ fi
++ } &&
++
++ # Now rename the file to the real destination.
++ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
++ }
++ }
++ fi || { (exit 1); exit 1; }
++done
++
++# The final little trick to "correctly" pass the exit status to the exit trap.
++{
++ (exit 0); exit 0
++}
++
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "scriptversion="
++# time-stamp-format: "%:y-%02m-%02d.%02H"
++# time-stamp-end: "$"
++# End:
diff --git a/packages/zziplib/zziplib-native_0.12.83.bb b/packages/zziplib/zziplib-native_0.12.83.bb
new file mode 100644
index 0000000000..eb954f12c1
--- /dev/null
+++ b/packages/zziplib/zziplib-native_0.12.83.bb
@@ -0,0 +1,9 @@
+require zziplib_${PV}.bb
+
+DEPENDS = "zlib-native"
+
+inherit native
+
+S = "${WORKDIR}/zziplib-${PV}"
+
+PACKAGES = ""
diff --git a/packages/zziplib/zziplib-native_0.13.49.bb b/packages/zziplib/zziplib-native_0.13.49.bb
new file mode 100644
index 0000000000..eb954f12c1
--- /dev/null
+++ b/packages/zziplib/zziplib-native_0.13.49.bb
@@ -0,0 +1,9 @@
+require zziplib_${PV}.bb
+
+DEPENDS = "zlib-native"
+
+inherit native
+
+S = "${WORKDIR}/zziplib-${PV}"
+
+PACKAGES = ""
diff --git a/packages/zziplib/zziplib.inc b/packages/zziplib/zziplib.inc
new file mode 100644
index 0000000000..602eae6315
--- /dev/null
+++ b/packages/zziplib/zziplib.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "Support library for dealing with zip files"
+SECTION = "libs"
+PRIORITY = "optional"
+
+DEPENDS = "zlib python-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/zziplib/zziplib-${PV}.tar.bz2"
+LICENSE = "LGPL MPL"
+
+inherit autotools pkgconfig
+
+do_configure_append() {
+ # Fix some brokenness in the generated makefile.
+ sed -i \
+ -e "s|tail -1|tail -n 1|" \
+ -e "s|dist dist-all dist-all:|dist dist-all:|" \
+ Makefile
+
+ mkdir ${S}/build
+}
diff --git a/packages/zziplib/zziplib_0.10.82.bb b/packages/zziplib/zziplib_0.10.82.bb
index 4fb129592e..7e2130368d 100644
--- a/packages/zziplib/zziplib_0.10.82.bb
+++ b/packages/zziplib/zziplib_0.10.82.bb
@@ -1,21 +1,5 @@
-DESCRIPTION = "Support library for dealing with zip files"
-SECTION = "libs"
-PRIORITY = "optional"
+require zziplib.inc
-SRC_URI = "${SOURCEFORGE_MIRROR}/zziplib/zziplib-${PV}.tar.bz2"
-LICENSE = "LGPL MPL"
-inherit autotools pkgconfig
+SRC_URI += "file://zziplib-0.10-disable-test.patch;patch=1"
-do_stage() {
- oe_libinstall -a -so -C zzip libzzip ${STAGING_LIBDIR}
- oe_libinstall -a -so -C zzipwrap libzzipwrap ${STAGING_LIBDIR}
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 ${S}/bins/zziplib.m4 ${STAGING_DATADIR}/aclocal/
- for h in zzip.h zzipformat.h zzipwrap.h zziplib.h zzip-io.h; do
- install -m 0644 ${S}/zziplib/$h ${STAGING_INCDIR}/
- done
- install -d ${STAGING_INCDIR}/zzip
- for h in lib.h format.h _msvc.h conf.h file.h stdint.h zzip.h _config.h plugin.h; do
- install -m 0644 ${S}/zzip/$h ${STAGING_INCDIR}/zzip/
- done
-}
+PR = "r1"
diff --git a/packages/zziplib/zziplib_0.12.83.bb b/packages/zziplib/zziplib_0.12.83.bb
new file mode 100644
index 0000000000..c9078ac6b6
--- /dev/null
+++ b/packages/zziplib/zziplib_0.12.83.bb
@@ -0,0 +1,4 @@
+require zziplib.inc
+
+SRC_URI += "file://zziplib-buildfix.patch;patch=1"
+
diff --git a/packages/zziplib/zziplib_0.13.49.bb b/packages/zziplib/zziplib_0.13.49.bb
new file mode 100644
index 0000000000..3a6c148dc5
--- /dev/null
+++ b/packages/zziplib/zziplib_0.13.49.bb
@@ -0,0 +1,12 @@
+require zziplib.inc
+
+SRC_URI += "\
+ file://zip_c.patch;patch=1 \
+ file://zziplib-autoconf.patch;patch=1 \
+ "
+
+#EXTRA_OECONF = "--srcdir=${S} --enable-builddir=${S}/build"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/site/avr32-common b/site/avr32-common
index 5bce901caa..b5b176cad7 100644
--- a/site/avr32-common
+++ b/site/avr32-common
@@ -1,3 +1,25 @@
glib_cv_stack_grows=${glib_cv_stack_grows=no}
ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
glib_cv_uscore=${glib_cv_uscore=no}
+ac_cv_func_setpgrp_void=${ac_cv_func_setpgrp_void=yes}
+
+#dbus-glib
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# set MALLOC_GLIBC_COMPAT=y in your uclibc .config for this
+ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
+
+#gstreamer
+as_cv_unaligned_access=${as_cv_unaligned_access=no}
+
+#readline
+bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
+
+#libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+#startup notification
+ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
+ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
+lf_cv_sane_realloc=yes
+